Implementing ROL

This commit is contained in:
Anonymus Raccoon
2020-05-13 14:58:37 +02:00
parent 475986580d
commit deab98dac0
3 changed files with 103 additions and 5 deletions
+53
View File
@@ -190,4 +190,57 @@ Test(LSR, accumulator)
cr_assert_eq(snes.cpu->_registers.p.z, false, "The zero flag should not be set.");
cr_assert_eq(snes.cpu->_registers.p.c, true, "The carry flag should be set.");
cr_assert_eq(snes.cpu->_registers.p.n, false, "The negative flag should not be set.");
}
Test(ROL, emulationTest)
{
Init()
snes.wram->_data[0] = 0b10110011;
snes.cpu->_registers.p.m = true;
snes.cpu->ROL(0x0, ComSquare::CPU::AddressingMode::Absolute);
cr_assert_eq(snes.wram->_data[0], 0b01100110, "The data in ram should be 0b01100110 but it was %x", snes.wram->_data[0]);
cr_assert_eq(snes.cpu->_registers.p.z, false, "The zero flag should not be set.");
cr_assert_eq(snes.cpu->_registers.p.c, true, "The carry flag should be set.");
cr_assert_eq(snes.cpu->_registers.p.n, false, "The negative flag should not be set.");
}
Test(ROL, emulationTestWithCarry)
{
Init()
snes.wram->_data[0] = 0b10110011;
snes.cpu->_registers.p.m = true;
snes.cpu->_registers.p.c = true;
snes.cpu->ROL(0x0, ComSquare::CPU::AddressingMode::Absolute);
cr_assert_eq(snes.wram->_data[0], 0b01100111, "The data in ram should be 0b01100111 but it was %x", snes.wram->_data[0]);
cr_assert_eq(snes.cpu->_registers.p.z, false, "The zero flag should not be set.");
cr_assert_eq(snes.cpu->_registers.p.c, true, "The carry flag should be set.");
cr_assert_eq(snes.cpu->_registers.p.n, false, "The negative flag should not be set.");
}
Test(ROL, nativeTest)
{
Init()
snes.wram->_data[0] = 0b10110011;
snes.wram->_data[1] = 0b10000011;
snes.cpu->_registers.p.m = false;
snes.cpu->_registers.p.c = true;
snes.cpu->ROL(0x0, ComSquare::CPU::AddressingMode::Absolute);
cr_assert_eq(snes.wram->_data[0], 0b01100111, "The data in ram should be 0b01100111 but it was %x", snes.wram->_data[0]);
cr_assert_eq(snes.wram->_data[1], 0b00000111, "The data in ram should be 0b00000111 but it was %x", snes.wram->_data[1]);
cr_assert_eq(snes.cpu->_registers.p.z, false, "The zero flag should not be set.");
cr_assert_eq(snes.cpu->_registers.p.c, true, "The carry flag should be set.");
cr_assert_eq(snes.cpu->_registers.p.n, false, "The negative flag should not be set.");
}
Test(ROL, accumulator)
{
Init()
snes.cpu->_registers.a = 0b10110011;
snes.cpu->_registers.p.m = true;
snes.cpu->_registers.p.c = true;
snes.cpu->ROL(0x0, ComSquare::CPU::AddressingMode::Implied);
cr_assert_eq(snes.cpu->_registers.al, 0b01100111, "The accumulator should be 0b01100111 but it was %x", snes.cpu->_registers.al);
cr_assert_eq(snes.cpu->_registers.p.z, false, "The zero flag should not be set.");
cr_assert_eq(snes.cpu->_registers.p.c, true, "The carry flag should be set.");
cr_assert_eq(snes.cpu->_registers.p.n, false, "The negative flag should not be set.");
}