chore(cpu): rename discriminants of ImeState enum

This commit is contained in:
Rekai Nyangadzayi Musuka 2021-08-14 16:42:15 -05:00
parent 53dfaf0de2
commit 8c9567b610
2 changed files with 7 additions and 14 deletions

View File

@ -118,7 +118,7 @@ impl Cpu {
let opcode = self.fetch();
let instr = self.decode(opcode);
let elapsed = self.execute(instr);
self.check_ime();
self.handle_ei();
elapsed
}
};
@ -159,18 +159,11 @@ impl Cpu {
&mut self.bus.joypad
}
fn check_ime(&mut self) {
fn handle_ei(&mut self) {
match self.ime {
ImeState::Pending => {
// This is within the context of the EI instruction, we need to not update EI until the end of the
// next executed Instruction
self.ime = ImeState::PendingEnd;
}
ImeState::PendingEnd => {
// The Instruction after EI has now been executed, so we want to enable the IME flag here
self.ime = ImeState::Enabled;
}
ImeState::Disabled | ImeState::Enabled => {} // Do Nothing
ImeState::EiExecuted => self.ime = ImeState::Pending,
ImeState::Pending => self.ime = ImeState::Enabled,
ImeState::Disabled | ImeState::Enabled => {}
}
}
@ -514,8 +507,8 @@ pub(crate) enum HaltState {
#[derive(Debug, Clone, Copy)]
pub(crate) enum ImeState {
Disabled,
EiExecuted,
Pending,
PendingEnd,
Enabled,
}

View File

@ -971,7 +971,7 @@ impl Instruction {
}
Instruction::EI => {
// EI | Enable IME after the next instruction
cpu.set_ime(ImeState::Pending);
cpu.set_ime(ImeState::EiExecuted);
Cycle::new(4)
}
Instruction::CALL(cond) => {