From 52d63a7ae70f8052b38bca80284714cedeb97a75 Mon Sep 17 00:00:00 2001 From: Franco Colmenarez Date: Wed, 29 Jun 2022 19:33:25 -0500 Subject: [PATCH] index register select flag --- snes-core/src/cpu.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/snes-core/src/cpu.rs b/snes-core/src/cpu.rs index 75616eb..771cab0 100644 --- a/snes-core/src/cpu.rs +++ b/snes-core/src/cpu.rs @@ -65,6 +65,15 @@ impl Registers { self.p = self.p | ((val as u8) << 3); } + pub fn get_index_register_select_flag(&self) -> bool { + ((self.p & 0b0001_0000) >> 4) == 1 + } + + pub fn set_index_register_select_flag(&mut self, val: bool) { + self.p = self.p & 0b1110_1111; + self.p = self.p | ((val as u8) << 4); + } + pub fn get_break_instruction_flag(&self) -> bool { ((self.p & 0b0001_0000) >> 4) == 1 } @@ -283,6 +292,13 @@ mod cpu_registers_tests { assert!(!registers.get_memory_select_flag()); assert_eq!(registers.p, 0b0000_0000); + registers.set_index_register_select_flag(true); + assert!(registers.get_index_register_select_flag()); + assert_eq!(registers.p, 0b0001_0000); + registers.set_index_register_select_flag(false); + assert!(!registers.get_index_register_select_flag()); + assert_eq!(registers.p, 0b0000_0000); + registers.set_break_instruction_flag(true); assert!(registers.get_break_instruction_flag()); assert_eq!(registers.p, 0b0001_0000);