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