chore: rewrite info log message

This commit is contained in:
Rekai Nyangadzayi Musuka 2022-06-18 18:46:40 -03:00
parent 47adc0c5ae
commit 5bbbdc3469
1 changed files with 6 additions and 16 deletions

View File

@ -333,7 +333,8 @@ pub const Apu = struct {
const final_right = (tmp_right << 5) | (tmp_right >> 6); const final_right = (tmp_right << 5) | (tmp_right >> 6);
if (self.sampling_cycle != self.bias.sampling_cycle.read()) { if (self.sampling_cycle != self.bias.sampling_cycle.read()) {
log.info("Sampling Cycle changed from {} to {}", .{ self.sampling_cycle, self.bias.sampling_cycle.read() }); const new_sample_rate = Self.sampleRate(self.bias.sampling_cycle.read());
log.info("Sample Rate changed from {}Hz to {}Hz", .{ Self.sampleRate(self.sampling_cycle), new_sample_rate });
// Sample Rate Changed, Create a new Resampler since i can't figure out how to change // Sample Rate Changed, Create a new Resampler since i can't figure out how to change
// the parameters of the old one // the parameters of the old one
@ -341,7 +342,7 @@ pub const Apu = struct {
defer SDL.SDL_FreeAudioStream(old); defer SDL.SDL_FreeAudioStream(old);
self.sampling_cycle = self.bias.sampling_cycle.read(); self.sampling_cycle = self.bias.sampling_cycle.read();
self.stream = SDL.SDL_NewAudioStream(SDL.AUDIO_U16, 2, @intCast(c_int, self.sampleRate()), SDL.AUDIO_U16, 2, host_sample_rate) orelse unreachable; self.stream = SDL.SDL_NewAudioStream(SDL.AUDIO_U16, 2, @intCast(c_int, new_sample_rate), SDL.AUDIO_U16, 2, host_sample_rate) orelse unreachable;
} }
_ = SDL.SDL_AudioStreamPut(self.stream, &[2]u16{ final_left, final_right }, 2 * @sizeOf(u16)); _ = SDL.SDL_AudioStreamPut(self.stream, &[2]u16{ final_left, final_right }, 2 * @sizeOf(u16));
@ -349,11 +350,11 @@ pub const Apu = struct {
} }
fn sampleTicks(self: *const Self) u64 { fn sampleTicks(self: *const Self) u64 {
return (1 << 24) / self.sampleRate(); return (1 << 24) / Self.sampleRate(self.bias.sampling_cycle.read());
} }
fn sampleRate(self: *const Self) u64 { fn sampleRate(cycle: u2) u64 {
return @as(u64, 1) << (15 + @as(u6, self.bias.sampling_cycle.read())); return @as(u64, 1) << (15 + @as(u6, cycle));
} }
pub fn tickFrameSequencer(self: *Self, late: u64) void { pub fn tickFrameSequencer(self: *Self, late: u64) void {
@ -399,17 +400,6 @@ pub const Apu = struct {
if (self.chB.len() <= 15) cpu.bus.dma[2].requestSoundDma(0x0400_00A4); if (self.chB.len() <= 15) cpu.bus.dma[2].requestSoundDma(0x0400_00A4);
} }
} }
fn highPass(self: *Self, sample: f32, enabled: bool) f32 {
return if (enabled) blk: {
const out = sample - self.capacitor;
const charge_factor =
std.math.pow(f32, 0.999958, @intToFloat(f32, (1 << 22) / self.sampleRate()));
self.capacitor = sample - out * charge_factor;
break :blk out;
} else 0.0;
}
}; };
const ToneSweep = struct { const ToneSweep = struct {