Small performance improvements
This commit is contained in:
parent
fa2fa9e5f5
commit
2f03b015f1
@ -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,
|
||||
|
||||
@ -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(),
|
||||
|
||||
@ -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 _));
|
||||
|
||||
@ -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) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user