mirror of
https://github.com/FranLMSP/snes.git
synced 2026-10-03 16:05:18 -04:00
set_low_a function
This commit is contained in:
@@ -38,7 +38,7 @@ impl CPU {
|
|||||||
true => alu::adc8bcd(target as u8, value, carry_flag),
|
true => alu::adc8bcd(target as u8, value, carry_flag),
|
||||||
false => alu::adc8bin(target as u8, value, carry_flag),
|
false => alu::adc8bin(target as u8, value, carry_flag),
|
||||||
};
|
};
|
||||||
self.registers.a = (self.registers.a & 0xFF00) | (result as u16);
|
self.registers.set_low_a(result as u8);
|
||||||
self.registers.set_carry_flag(is_carry);
|
self.registers.set_carry_flag(is_carry);
|
||||||
self.registers.set_negative_flag(is_negative);
|
self.registers.set_negative_flag(is_negative);
|
||||||
self.registers.set_zero_flag(is_zero);
|
self.registers.set_zero_flag(is_zero);
|
||||||
@@ -71,7 +71,7 @@ impl CPU {
|
|||||||
true => alu::sbc8bcd(target as u8, value, carry_flag),
|
true => alu::sbc8bcd(target as u8, value, carry_flag),
|
||||||
false => alu::sbc8bin(target as u8, value, carry_flag),
|
false => alu::sbc8bin(target as u8, value, carry_flag),
|
||||||
};
|
};
|
||||||
self.registers.a = (self.registers.a & 0xFF00) | (result as u16);
|
self.registers.set_low_a(result as u8);
|
||||||
self.registers.set_carry_flag(is_carry);
|
self.registers.set_carry_flag(is_carry);
|
||||||
self.registers.set_negative_flag(is_negative);
|
self.registers.set_negative_flag(is_negative);
|
||||||
self.registers.set_zero_flag(is_zero);
|
self.registers.set_zero_flag(is_zero);
|
||||||
|
|||||||
@@ -27,6 +27,10 @@ impl Registers {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn set_low_a(&mut self, val: u8) {
|
||||||
|
self.a = (self.a & 0xFF00) | (val as u16);
|
||||||
|
}
|
||||||
|
|
||||||
pub fn get_carry_flag(&self) -> bool {
|
pub fn get_carry_flag(&self) -> bool {
|
||||||
(self.p & 0b0000_0001) == 1
|
(self.p & 0b0000_0001) == 1
|
||||||
}
|
}
|
||||||
@@ -117,6 +121,14 @@ impl Registers {
|
|||||||
mod registers_tests {
|
mod registers_tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_set_low_a() {
|
||||||
|
let mut registers = Registers::new();
|
||||||
|
registers.a = 0xA1A1;
|
||||||
|
registers.set_low_a(0xFF);
|
||||||
|
assert_eq!(registers.a, 0xA1FF);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_get_pc_address() {
|
fn test_get_pc_address() {
|
||||||
let mut registers = Registers::new();
|
let mut registers = Registers::new();
|
||||||
|
|||||||
Reference in New Issue
Block a user