Small performance improvements

This commit is contained in:
Kevin Hamacher 2020-02-16 20:53:25 +01:00
parent fa2fa9e5f5
commit 2f03b015f1
4 changed files with 23 additions and 26 deletions

View File

@ -459,9 +459,6 @@ impl Display {
// We need to draw this. // We need to draw this.
let wide_mode = self.control & CTRL_BG_SPRITE_SIZE > 0; let wide_mode = self.control & CTRL_BG_SPRITE_SIZE > 0;
if wide_mode {
// panic!("TODO");
}
let limit = match wide_mode { let limit = match wide_mode {
true => 16, true => 16,
false => 8, false => 8,

View File

@ -371,27 +371,28 @@ impl SoundManager {
let mut counter = 0; let mut counter = 0;
while !*do_exit.lock().unwrap() { while !*do_exit.lock().unwrap() {
let (s1, s2) = { for _ in 0..100 {
let mut c_obj = obj.lock().unwrap(); let (s1, s2) = {
let mut c_obj = obj.lock().unwrap();
// Check for 512 Hz timer // Check for 512 Hz timer
if counter >= (OUTPUT_SAMPLE_RATE / 512) { if counter >= (OUTPUT_SAMPLE_RATE / 512) {
c_obj.clock(); c_obj.clock();
counter = 0; counter = 0;
} else { } else {
counter += 1; counter += 1;
} }
// Sample clock // Sample clock
c_obj.sample_clock(); c_obj.sample_clock();
// Get sample // Get sample
c_obj.sample() c_obj.sample()
}; };
let samps = [[s1, s2]]; let samps = [[s1, s2]];
//let samps = [[0f32, 0f32]]; playback.write(&samps[..]);
// No sleep needed, it seems like the playback.write is blocking }
playback.write(&samps[..]); std::thread::sleep(std::time::Duration::from_millis(1));
} }
}) })
.unwrap(), .unwrap(),

View File

@ -59,17 +59,17 @@ impl SquareWaveGenerator {
// 0: Addition (frequency increases) // 0: Addition (frequency increases)
// 1: Subtraction (frequency decreases) // 1: Subtraction (frequency decreases)
//Bit 2-0 - Number of sweep shift (n: 0-7) //Bit 2-0 - Number of sweep shift (n: 0-7)
self.sweep_change_period = (reg >> 4) & 7; self.sweep_change_period = (reg >> 4) & 0b0111;
self.sweep_dec = reg & (1 << 3) > 0; self.sweep_dec = reg & (1 << 3) > 0;
self.sweep_change = reg & 7; self.sweep_change = reg & 0b111;
self.sweep_clock = 0; self.sweep_clock = 0;
} }
pub fn sweep_clock(&mut self) { pub fn sweep_clock(&mut self) {
// This should be sampled at 128Hz // This should be sampled at 128Hz
if self.sweep_change_period > 0 if self.sweep_change_period > 0 // enabled
&& self.sweep_clock >= self.sweep_change_period && self.sweep_clock >= self.sweep_change_period
&& self.sweep_change > 0 // sweep time hit
{ {
self.sweep_clock = 0; self.sweep_clock = 0;
let change = self.frequency / (2f32.powi(self.sweep_change as _)); let change = self.frequency / (2f32.powi(self.sweep_change as _));

View File

@ -41,7 +41,6 @@ impl WaveGenerator {
fn update_frequency(&mut self) { fn update_frequency(&mut self) {
self.frequency = ((2048 - self.gb_reg_freq) * 2) as _; self.frequency = ((2048 - self.gb_reg_freq) * 2) as _;
self.time = 0f32; self.time = 0f32;
println!("Freq = {}", self.frequency);
} }
pub fn set_lower_freq(&mut self, freq: u8) { pub fn set_lower_freq(&mut self, freq: u8) {