1use crate::sm83::Sm83; 2 3impl Sm83 { 4 // SCF: Set carry flag 5 pub(super) fn scf(&mut self) { 6 self.registers.f.subtract = false; 7 self.registers.f.half_carry = false; 8 self.registers.f.carry = true; 9 } 10 11 // CCF: Complement carry flag 12 pub(super) fn ccf(&mut self) { 13 self.registers.f.subtract = false; 14 self.registers.f.half_carry = false; 15 self.registers.f.carry = !self.registers.f.carry; 16 } 17 18 // EI: Enable interrupts 19 pub(super) fn ei(&mut self) { 20 // EI has a 1-instruction delay before it takes effect, and if the next instruction is DI 21 // then it effectively cancels the EI. 22 self.state.pending_ime_set = true; 23 } 24 25 // DI: Disable interrupts 26 pub(super) fn di(&mut self) { 27 self.registers.ime = false; 28 self.state.pending_ime_set = false; 29 } 30}