Compare commits

...

2 Commits

Author SHA1 Message Date
Rekai Nyangadzayi Musuka 01064bab69 chore(cpu): comment out blargg-specific code
continuous-integration/drone/push Build is passing Details
2021-08-22 01:49:01 -05:00
Rekai Nyangadzayi Musuka 634bc2d2c0 fix(apu): remove redundant code 2021-08-22 01:48:34 -05:00
2 changed files with 19 additions and 34 deletions

View File

@ -146,11 +146,11 @@ impl Cpu {
self.handle_ei(); self.handle_ei();
// For use in Blargg's Test ROMs // For use in Blargg's Test ROMs
if self.read_byte(0xFF02) == 0x81 { // if self.read_byte(0xFF02) == 0x81 {
let c = self.read_byte(0xFF01) as char; // let c = self.read_byte(0xFF01) as char;
self.write_byte(0xFF02, 0x00); // self.write_byte(0xFF02, 0x00);
eprint!("{}", c); // eprint!("{}", c);
} // }
elapsed elapsed
} }

View File

@ -22,29 +22,16 @@ impl Timer {
use TimerSpeed::*; use TimerSpeed::*;
match self.state { match self.state {
TIMAOverflow(_) | AbortedTIMAOverflow(_) => self.state = self.state.next(), TIMAOverflow(_) | AbortedTIMAOverflow(_) => self.next(),
LoadTMA => { LoadTMA => {
self.counter = self.modulo; self.counter = self.modulo;
self.interrupt = true; self.interrupt = true;
self.state.next(); self.next();
} }
Normal => {} Normal => {}
} }
if let TIMAOverflow(step) | AbortedTIMAOverflow(step) = self.state {
if step < 3 {
self.state = self.state.next();
} else {
if self.state == TIMAOverflow(step) {
self.counter = self.modulo;
self.interrupt = true;
}
self.state = Normal;
}
}
self.divider = self.divider.wrapping_add(1); self.divider = self.divider.wrapping_add(1);
// Get Bit Position // Get Bit Position
@ -103,6 +90,18 @@ impl Timer {
self.state = State::TIMAOverflow(0); self.state = State::TIMAOverflow(0);
} }
} }
fn next(&mut self) {
use State::*;
self.state = match self.state {
Normal | LoadTMA => Normal,
AbortedTIMAOverflow(4) => Normal,
TIMAOverflow(4) => LoadTMA,
AbortedTIMAOverflow(step) => AbortedTIMAOverflow(step + 1),
TIMAOverflow(step) => TIMAOverflow(step + 1),
}
}
} }
impl Default for Timer { impl Default for Timer {
@ -184,17 +183,3 @@ enum State {
Normal, Normal,
LoadTMA, LoadTMA,
} }
impl State {
fn next(&self) -> Self {
use State::*;
match self {
Normal | LoadTMA => Normal,
TIMAOverflow(3) => LoadTMA,
AbortedTIMAOverflow(3) => Normal,
TIMAOverflow(step) => TIMAOverflow(step + 1),
AbortedTIMAOverflow(step) => AbortedTIMAOverflow(step + 1),
}
}
}