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.
let wide_mode = self.control & CTRL_BG_SPRITE_SIZE > 0;
if wide_mode {
// panic!("TODO");
}
let limit = match wide_mode {
true => 16,
false => 8,

View File

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

View File

@ -59,17 +59,17 @@ impl SquareWaveGenerator {
// 0: Addition (frequency increases)
// 1: Subtraction (frequency decreases)
//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_change = reg & 7;
self.sweep_change = reg & 0b111;
self.sweep_clock = 0;
}
pub fn sweep_clock(&mut self) {
// 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_change > 0
// sweep time hit
{
self.sweep_clock = 0;
let change = self.frequency / (2f32.powi(self.sweep_change as _));

View File

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