unit test compiling and passing

This commit is contained in:
Clément Le Bihan
2020-03-26 13:39:53 +01:00
parent df187e5e6a
commit a02c201628
3 changed files with 203 additions and 188 deletions
+82 -82
View File
@@ -15,91 +15,91 @@ Test(PPU_write, inidisp_data_full_ones)
{
Init()
snes._bus->write(0x2100, 0b11111111);
cr_assert_eq(snes.ppu->_inidisp.fblank, true);
cr_assert_eq(snes.ppu->_inidisp.brightness, 0xF);
cr_assert_eq(snes.ppu->_registers._inidisp.fblank, true);
cr_assert_eq(snes.ppu->_registers._inidisp.brightness, 0xF);
}
Test(PPU_write, inidisp_data_full_zeros)
{
Init()
snes._bus->write(0x2100, 0b00000000);
cr_assert_eq(snes.ppu->_inidisp.fblank, false);
cr_assert_eq(snes.ppu->_inidisp.brightness, 0x0);
cr_assert_eq(snes.ppu->_registers._inidisp.fblank, false);
cr_assert_eq(snes.ppu->_registers._inidisp.brightness, 0x0);
}
Test(PPU_write, inidisp_data_fBlank_on_brghtness_off)
{
Init()
snes._bus->write(0x2100, 0b10000000);
cr_assert_eq(snes.ppu->_inidisp.fblank, true);
cr_assert_eq(snes.ppu->_inidisp.brightness, 0x0);
cr_assert_eq(snes.ppu->_registers._inidisp.fblank, true);
cr_assert_eq(snes.ppu->_registers._inidisp.brightness, 0x0);
}
Test(PPU_write, inidisp_data_fBlank_off_brghtness_max)
{
Init()
snes._bus->write(0x2100, 0b00001111);
cr_assert_eq(snes.ppu->_inidisp.fblank, false);
cr_assert_eq(snes.ppu->_inidisp.brightness, 0xF);
cr_assert_eq(snes.ppu->_registers._inidisp.fblank, false);
cr_assert_eq(snes.ppu->_registers._inidisp.brightness, 0xF);
}
Test(PPU_write, inidisp_data_fBlank_off_brghtness_half)
{
Init()
snes._bus->write(0x2100, 0b00000101);
cr_assert_eq(snes.ppu->_inidisp.fblank, false);
cr_assert_eq(snes.ppu->_inidisp.brightness, 0x5);
cr_assert_eq(snes.ppu->_registers._inidisp.fblank, false);
cr_assert_eq(snes.ppu->_registers._inidisp.brightness, 0x5);
}
Test(PPU_write, obsel_111_object_size_and_all_null)
{
Init()
snes._bus->write(0x2101, 0b11100000);
cr_assert_eq(snes.ppu->_obsel.objectSize, 0b111);
cr_assert_eq(snes.ppu->_obsel.nameSelect, 0b00);
cr_assert_eq(snes.ppu->_obsel.nameBaseSelect, 0b000);
cr_assert_eq(snes.ppu->_registers._obsel.objectSize, 0b111);
cr_assert_eq(snes.ppu->_registers._obsel.nameSelect, 0b00);
cr_assert_eq(snes.ppu->_registers._obsel.nameBaseSelect, 0b000);
}
Test(PPU_write, obsel_data_full)
{
Init()
snes._bus->write(0x2101, 0b11111111);
cr_assert_eq(snes.ppu->_obsel.objectSize, 0b111);
cr_assert_eq(snes.ppu->_obsel.nameSelect, 0b11);
cr_assert_eq(snes.ppu->_obsel.nameBaseSelect, 0b111);
cr_assert_eq(snes.ppu->_registers._obsel.objectSize, 0b111);
cr_assert_eq(snes.ppu->_registers._obsel.nameSelect, 0b11);
cr_assert_eq(snes.ppu->_registers._obsel.nameBaseSelect, 0b111);
}
Test(PPU_write, obsel_data_full_nameselect)
{
Init()
snes._bus->write(0x2101, 0b00011000);
cr_assert_eq(snes.ppu->_obsel.objectSize, 0b000);
cr_assert_eq(snes.ppu->_obsel.nameSelect, 0b11);
cr_assert_eq(snes.ppu->_obsel.nameBaseSelect, 0b000);
cr_assert_eq(snes.ppu->_registers._obsel.objectSize, 0b000);
cr_assert_eq(snes.ppu->_registers._obsel.nameSelect, 0b11);
cr_assert_eq(snes.ppu->_registers._obsel.nameBaseSelect, 0b000);
}
Test(PPU_write, obsel_data_full_baseselect)
{
Init()
snes._bus->write(0x2101, 0b00000111);
cr_assert_eq(snes.ppu->_obsel.objectSize, 0b000);
cr_assert_eq(snes.ppu->_obsel.nameSelect, 0b00);
cr_assert_eq(snes.ppu->_obsel.nameBaseSelect, 0b111);
cr_assert_eq(snes.ppu->_registers._obsel.objectSize, 0b000);
cr_assert_eq(snes.ppu->_registers._obsel.nameSelect, 0b00);
cr_assert_eq(snes.ppu->_registers._obsel.nameBaseSelect, 0b111);
}
Test(PPU_write, oamaddl_data_full)
{
Init()
snes._bus->write(0x2102, 0b11111111);
cr_assert_eq(snes.ppu->_oamadd.oamAddress, 0b011111111);
cr_assert_eq(snes.ppu->_registers._oamadd.oamAddress, 0b011111111);
}
Test(PPU_write, oamaddh_data_full)
{
Init()
snes._bus->write(0x2103, 0b11111111);
cr_assert_eq(snes.ppu->_oamadd.objPriorityActivationBit, true);
cr_assert_eq(snes.ppu->_oamadd.oamAddress, 0b100000000);
cr_assert_eq(snes.ppu->_registers._oamadd.objPriorityActivationBit, true);
cr_assert_eq(snes.ppu->_registers._oamadd.oamAddress, 0b100000000);
}
Test(PPU_write, oamaddlh_data_full)
@@ -107,8 +107,8 @@ Test(PPU_write, oamaddlh_data_full)
Init()
snes._bus->write(0x2102, 0b11111111);
snes._bus->write(0x2103, 0b11111111);
cr_assert_eq(snes.ppu->_oamadd.objPriorityActivationBit, true);
cr_assert_eq(snes.ppu->_oamadd.oamAddress, 0b111111111);
cr_assert_eq(snes.ppu->_registers._oamadd.objPriorityActivationBit, true);
cr_assert_eq(snes.ppu->_registers._oamadd.oamAddress, 0b111111111);
}
Test(PPU_write, oamaddlh_data_full_priorityBit_off)
@@ -116,8 +116,8 @@ Test(PPU_write, oamaddlh_data_full_priorityBit_off)
Init()
snes._bus->write(0x2102, 0b11111111);
snes._bus->write(0x2103, 0b01111111);
cr_assert_eq(snes.ppu->_oamadd.objPriorityActivationBit, false);
cr_assert_eq(snes.ppu->_oamadd.oamAddress, 0b111111111);
cr_assert_eq(snes.ppu->_registers._oamadd.objPriorityActivationBit, false);
cr_assert_eq(snes.ppu->_registers._oamadd.oamAddress, 0b111111111);
}
Test(PPU_write, oamaddlh_oamAdress_11_priorityBit_on)
@@ -125,141 +125,141 @@ Test(PPU_write, oamaddlh_oamAdress_11_priorityBit_on)
Init()
snes._bus->write(0x2102, 0b00001011);
snes._bus->write(0x2103, 0b10011100);
cr_assert_eq(snes.ppu->_oamadd.objPriorityActivationBit, true);
cr_assert_eq(snes.ppu->_oamadd.oamAddress, 11);
cr_assert_eq(snes.ppu->_registers._oamadd.objPriorityActivationBit, true);
cr_assert_eq(snes.ppu->_registers._oamadd.oamAddress, 11);
}
Test(PPU_write, bgmode_data_full)
{
Init()
snes._bus->write(0x2105, 0b11111111);
cr_assert_eq(snes.ppu->_bgmode.bgMode, 7);
cr_assert_eq(snes.ppu->_bgmode.characterSizeBg1, true);
cr_assert_eq(snes.ppu->_bgmode.characterSizeBg2, true);
cr_assert_eq(snes.ppu->_bgmode.characterSizeBg3, true);
cr_assert_eq(snes.ppu->_bgmode.characterSizeBg4, true);
cr_assert_eq(snes.ppu->_bgmode.mode1Bg3PriorityBit, true);
cr_assert_eq(snes.ppu->_registers._bgmode.bgMode, 7);
cr_assert_eq(snes.ppu->_registers._bgmode.characterSizeBg1, true);
cr_assert_eq(snes.ppu->_registers._bgmode.characterSizeBg2, true);
cr_assert_eq(snes.ppu->_registers._bgmode.characterSizeBg3, true);
cr_assert_eq(snes.ppu->_registers._bgmode.characterSizeBg4, true);
cr_assert_eq(snes.ppu->_registers._bgmode.mode1Bg3PriorityBit, true);
}
Test(PPU_write, bgmode_bgmode_5_and_bg24_on)
{
Init()
snes._bus->write(0x2105, 0b10100101);
cr_assert_eq(snes.ppu->_bgmode.bgMode, 5);
cr_assert_eq(snes.ppu->_bgmode.characterSizeBg1, false);
cr_assert_eq(snes.ppu->_bgmode.characterSizeBg2, true);
cr_assert_eq(snes.ppu->_bgmode.characterSizeBg3, false);
cr_assert_eq(snes.ppu->_bgmode.characterSizeBg4, true);
cr_assert_eq(snes.ppu->_bgmode.mode1Bg3PriorityBit, false);
cr_assert_eq(snes.ppu->_registers._bgmode.bgMode, 5);
cr_assert_eq(snes.ppu->_registers._bgmode.characterSizeBg1, false);
cr_assert_eq(snes.ppu->_registers._bgmode.characterSizeBg2, true);
cr_assert_eq(snes.ppu->_registers._bgmode.characterSizeBg3, false);
cr_assert_eq(snes.ppu->_registers._bgmode.characterSizeBg4, true);
cr_assert_eq(snes.ppu->_registers._bgmode.mode1Bg3PriorityBit, false);
}
Test(PPU_write, mosaic_data_full)
{
Init()
snes._bus->write(0x2106, 0b11111111);
cr_assert_eq(snes.ppu->_mosaic.affectBg1, true);
cr_assert_eq(snes.ppu->_mosaic.affectBg2, true);
cr_assert_eq(snes.ppu->_mosaic.affectBg3, true);
cr_assert_eq(snes.ppu->_mosaic.affectBg4, true);
cr_assert_eq(snes.ppu->_mosaic.pixelSize, 0xF);
cr_assert_eq(snes.ppu->_registers._mosaic.affectBg1, true);
cr_assert_eq(snes.ppu->_registers._mosaic.affectBg2, true);
cr_assert_eq(snes.ppu->_registers._mosaic.affectBg3, true);
cr_assert_eq(snes.ppu->_registers._mosaic.affectBg4, true);
cr_assert_eq(snes.ppu->_registers._mosaic.pixelSize, 0xF);
}
Test(PPU_write, mosaic_affectbg23_w_1x1_size)
{
Init()
snes._bus->write(0x2106, 0b00000110);
cr_assert_eq(snes.ppu->_mosaic.affectBg1, false);
cr_assert_eq(snes.ppu->_mosaic.affectBg2, true);
cr_assert_eq(snes.ppu->_mosaic.affectBg3, true);
cr_assert_eq(snes.ppu->_mosaic.affectBg4, false);
cr_assert_eq(snes.ppu->_mosaic.pixelSize, 0x0);
cr_assert_eq(snes.ppu->_registers._mosaic.affectBg1, false);
cr_assert_eq(snes.ppu->_registers._mosaic.affectBg2, true);
cr_assert_eq(snes.ppu->_registers._mosaic.affectBg3, true);
cr_assert_eq(snes.ppu->_registers._mosaic.affectBg4, false);
cr_assert_eq(snes.ppu->_registers._mosaic.pixelSize, 0x0);
}
Test(PPU_write, mosaic_affectbg14_w_2x2_size)
{
Init()
snes._bus->write(0x2106, 0b00101001);
cr_assert_eq(snes.ppu->_mosaic.affectBg1, true);
cr_assert_eq(snes.ppu->_mosaic.affectBg2, false);
cr_assert_eq(snes.ppu->_mosaic.affectBg3, false);
cr_assert_eq(snes.ppu->_mosaic.affectBg4, true);
cr_assert_eq(snes.ppu->_mosaic.pixelSize, 0x2);
cr_assert_eq(snes.ppu->_registers._mosaic.affectBg1, true);
cr_assert_eq(snes.ppu->_registers._mosaic.affectBg2, false);
cr_assert_eq(snes.ppu->_registers._mosaic.affectBg3, false);
cr_assert_eq(snes.ppu->_registers._mosaic.affectBg4, true);
cr_assert_eq(snes.ppu->_registers._mosaic.pixelSize, 0x2);
}
Test(PPU_write, bg1sc_data_full)
{
Init()
snes._bus->write(0x2107, 0b11111111);
cr_assert_eq(snes.ppu->_bgsc[0].tilemapAddress, 0b111111);
cr_assert_eq(snes.ppu->_bgsc[0].tilemapHorizontalMirroring, true);
cr_assert_eq(snes.ppu->_bgsc[0].tilemapVerticalMirroring, true);
cr_assert_eq(snes.ppu->_registers._bgsc[0].tilemapAddress, 0b111111);
cr_assert_eq(snes.ppu->_registers._bgsc[0].tilemapHorizontalMirroring, true);
cr_assert_eq(snes.ppu->_registers._bgsc[0].tilemapVerticalMirroring, true);
}
Test(PPU_write, bg2sc_data_full)
{
Init()
snes._bus->write(0x2108, 0b11111111);
cr_assert_eq(snes.ppu->_bgsc[1].tilemapAddress, 0b111111);
cr_assert_eq(snes.ppu->_bgsc[1].tilemapHorizontalMirroring, true);
cr_assert_eq(snes.ppu->_bgsc[1].tilemapVerticalMirroring, true);
cr_assert_eq(snes.ppu->_registers._bgsc[1].tilemapAddress, 0b111111);
cr_assert_eq(snes.ppu->_registers._bgsc[1].tilemapHorizontalMirroring, true);
cr_assert_eq(snes.ppu->_registers._bgsc[1].tilemapVerticalMirroring, true);
}
Test(PPU_write, bg3sc_data_full)
{
Init()
snes._bus->write(0x2109, 0b11111111);
cr_assert_eq(snes.ppu->_bgsc[2].tilemapAddress, 0b111111);
cr_assert_eq(snes.ppu->_bgsc[2].tilemapHorizontalMirroring, true);
cr_assert_eq(snes.ppu->_bgsc[2].tilemapVerticalMirroring, true);
cr_assert_eq(snes.ppu->_registers._bgsc[2].tilemapAddress, 0b111111);
cr_assert_eq(snes.ppu->_registers._bgsc[2].tilemapHorizontalMirroring, true);
cr_assert_eq(snes.ppu->_registers._bgsc[2].tilemapVerticalMirroring, true);
}
Test(PPU_write, bg4sc_data_full)
{
Init()
snes._bus->write(0x210A, 0b11111111);
cr_assert_eq(snes.ppu->_bgsc[3].tilemapAddress, 0b111111);
cr_assert_eq(snes.ppu->_bgsc[3].tilemapHorizontalMirroring, true);
cr_assert_eq(snes.ppu->_bgsc[3].tilemapVerticalMirroring, true);
cr_assert_eq(snes.ppu->_registers._bgsc[3].tilemapAddress, 0b111111);
cr_assert_eq(snes.ppu->_registers._bgsc[3].tilemapHorizontalMirroring, true);
cr_assert_eq(snes.ppu->_registers._bgsc[3].tilemapVerticalMirroring, true);
}
Test(PPU_write, bg4sc_data_null)
{
Init()
snes._bus->write(0x210A, 0b00000000);
cr_assert_eq(snes.ppu->_bgsc[3].tilemapAddress, 0);
cr_assert_eq(snes.ppu->_bgsc[3].tilemapHorizontalMirroring, false);
cr_assert_eq(snes.ppu->_bgsc[3].tilemapVerticalMirroring, false);
cr_assert_eq(snes.ppu->_registers._bgsc[3].tilemapAddress, 0);
cr_assert_eq(snes.ppu->_registers._bgsc[3].tilemapHorizontalMirroring, false);
cr_assert_eq(snes.ppu->_registers._bgsc[3].tilemapVerticalMirroring, false);
}
Test(PPU_write, bg4sc_horizontal_off_vertical_on_random_tilemapAdress)
{
Init()
snes._bus->write(0x210A, 0b11000110);
cr_assert_eq(snes.ppu->_bgsc[3].tilemapAddress, 0b110001);
cr_assert_eq(snes.ppu->_bgsc[3].tilemapHorizontalMirroring, false);
cr_assert_eq(snes.ppu->_bgsc[3].tilemapVerticalMirroring, true);
cr_assert_eq(snes.ppu->_registers._bgsc[3].tilemapAddress, 0b110001);
cr_assert_eq(snes.ppu->_registers._bgsc[3].tilemapHorizontalMirroring, false);
cr_assert_eq(snes.ppu->_registers._bgsc[3].tilemapVerticalMirroring, true);
}
Test(PPU_write, bg12nba_data_full)
{
Init()
snes._bus->write(0x210B, 0b11111111);
cr_assert_eq(snes.ppu->_bgnba[0].baseAddressBg1a3, 0b1111);
cr_assert_eq(snes.ppu->_bgnba[0].baseAddressBg2a4, 0b1111);
cr_assert_eq(snes.ppu->_registers._bgnba[0].baseAddressBg1a3, 0b1111);
cr_assert_eq(snes.ppu->_registers._bgnba[0].baseAddressBg2a4, 0b1111);
}
Test(PPU_write, bg34nba_data_full)
{
Init()
snes._bus->write(0x210C, 0b11111111);
cr_assert_eq(snes.ppu->_bgnba[1].baseAddressBg1a3, 0b1111);
cr_assert_eq(snes.ppu->_bgnba[1].baseAddressBg2a4, 0b1111);
cr_assert_eq(snes.ppu->_registers._bgnba[1].baseAddressBg1a3, 0b1111);
cr_assert_eq(snes.ppu->_registers._bgnba[1].baseAddressBg2a4, 0b1111);
}
Test(PPU_write, bg12nba_data_random_data)
{
Init()
snes._bus->write(0x210B, 0b10101010);
cr_assert_eq(snes.ppu->_bgnba[0].baseAddressBg1a3, 0b1010);
cr_assert_eq(snes.ppu->_bgnba[0].baseAddressBg2a4, 0b1010);
cr_assert_eq(snes.ppu->_registers._bgnba[0].baseAddressBg1a3, 0b1010);
cr_assert_eq(snes.ppu->_registers._bgnba[0].baseAddressBg2a4, 0b1010);
}
+119 -104
View File
@@ -15,36 +15,36 @@ Test(PPU_write_2, vmain_data_full)
{
Init()
snes._bus->write(0x2115, 0b11111111);
cr_assert_eq(snes.ppu->_vmain.incrementMode, true);
cr_assert_eq(snes.ppu->_vmain.addressRemapping, 0b11);
cr_assert_eq(snes.ppu->_vmain.incrementAmount, 0b11);
cr_assert_eq(snes.ppu->_registers._vmain.incrementMode, true);
cr_assert_eq(snes.ppu->_registers._vmain.addressRemapping, 0b11);
cr_assert_eq(snes.ppu->_registers._vmain.incrementAmount, 0b11);
}
Test(PPU_write_2, vmain_incrementmode_off_false_else_full)
{
Init()
snes._bus->write(0x2115, 0b01111111);
cr_assert_eq(snes.ppu->_vmain.incrementMode, false);
cr_assert_eq(snes.ppu->_vmain.addressRemapping, 0b11);
cr_assert_eq(snes.ppu->_vmain.incrementAmount, 0b11);
cr_assert_eq(snes.ppu->_registers._vmain.incrementMode, false);
cr_assert_eq(snes.ppu->_registers._vmain.addressRemapping, 0b11);
cr_assert_eq(snes.ppu->_registers._vmain.incrementAmount, 0b11);
}
Test(PPU_write_2, vmain_addressremaping_null_else_full)
{
Init()
snes._bus->write(0x2115, 0b11110011);
cr_assert_eq(snes.ppu->_vmain.incrementMode, true);
cr_assert_eq(snes.ppu->_vmain.addressRemapping, 0b00);
cr_assert_eq(snes.ppu->_vmain.incrementAmount, 0b11);
cr_assert_eq(snes.ppu->_registers._vmain.incrementMode, true);
cr_assert_eq(snes.ppu->_registers._vmain.addressRemapping, 0b00);
cr_assert_eq(snes.ppu->_registers._vmain.incrementAmount, 0b11);
}
Test(PPU_write_2, vmain_incrementamount_null_else_full)
{
Init()
snes._bus->write(0x2115, 0b11111100);
cr_assert_eq(snes.ppu->_vmain.incrementMode, true);
cr_assert_eq(snes.ppu->_vmain.addressRemapping, 0b11);
cr_assert_eq(snes.ppu->_vmain.incrementAmount, 0b00);
cr_assert_eq(snes.ppu->_registers._vmain.incrementMode, true);
cr_assert_eq(snes.ppu->_registers._vmain.addressRemapping, 0b11);
cr_assert_eq(snes.ppu->_registers._vmain.incrementAmount, 0b00);
}
Test(PPU_write_2, vmadd_full_data)
@@ -52,7 +52,7 @@ Test(PPU_write_2, vmadd_full_data)
Init()
snes._bus->write(0x2116, 0b11111111);
snes._bus->write(0x2117, 0b11111111);
cr_assert_eq(snes.ppu->_vmadd.vmadd, 0b1111111111111111);
cr_assert_eq(snes.ppu->_registers._vmadd.vmadd, 0b1111111111111111);
}
Test(PPU_write_2, vmadd_full_high_byte_null)
@@ -60,7 +60,7 @@ Test(PPU_write_2, vmadd_full_high_byte_null)
Init()
snes._bus->write(0x2116, 0b11111111);
snes._bus->write(0x2117, 0b00000000);
cr_assert_eq(snes.ppu->_vmadd.vmadd, 0b0000000011111111);
cr_assert_eq(snes.ppu->_registers._vmadd.vmadd, 0b0000000011111111);
}
Test(PPU_write_2, vmdata_full_data)
@@ -68,7 +68,7 @@ Test(PPU_write_2, vmdata_full_data)
Init()
snes._bus->write(0x2118, 0b11111111);
snes._bus->write(0x2119, 0b11111111);
cr_assert_eq(snes.ppu->_vmdata.vmdata, 0b1111111111111111);
cr_assert_eq(snes.ppu->_registers._vmdata.vmdata, 0b1111111111111111);
}
Test(PPU_write_2, vmdata_full_high_byte_null)
@@ -76,15 +76,15 @@ Test(PPU_write_2, vmdata_full_high_byte_null)
Init()
snes._bus->write(0x2118, 0b11111111);
snes._bus->write(0x2119, 0b00000000);
cr_assert_eq(snes.ppu->_vmdata.vmdata, 0b0000000011111111);
cr_assert_eq(snes.ppu->_registers._vmdata.vmdata, 0b0000000011111111);
}
Test(PPU_write_2, cgadd_full_high_byte_null)
{
Init()
snes._bus->write(0x2121, 0b11111111);
cr_assert_eq(snes.ppu->_cgadd, 0b11111111);
cr_assert_eq(snes.ppu->_isLowByte, true);
cr_assert_eq(snes.ppu->_registers._cgadd, 0b11111111);
cr_assert_eq(snes.ppu->_registers._isLowByte, true);
}
Test(PPU_write_2, cgdata_data_full)
@@ -92,181 +92,196 @@ Test(PPU_write_2, cgdata_data_full)
Init()
snes._bus->write(0x2121, 0x0);
snes._bus->write(0x2122, 0b11111111);
cr_assert_eq(snes.ppu->_cgdata.cgdatal, 0b11111111);
cr_assert_eq(snes.ppu->_isLowByte, false);
int address = snes.ppu->_cgadd;
cr_assert_eq(snes.ppu->_registers._cgdata.cgdatal, 0b11111111);
cr_assert_eq(snes.ppu->_registers._isLowByte, false);
int address = snes.ppu->_registers._cgadd;
snes._bus->write(0x2122, 0b11111000);
cr_assert_eq(snes.ppu->_cgdata.cgdatah, 0b11111000);
cr_assert_eq(snes.ppu->_isLowByte, true);
cr_assert_eq(snes.ppu->_cgadd, address + 1);
cr_assert_eq(snes.ppu->_registers._cgdata.cgdatah, 0b11111000);
cr_assert_eq(snes.ppu->_registers._isLowByte, true);
cr_assert_eq(snes.ppu->_registers._cgadd, address + 1);
}
Test(PPU_write_2, m7sel_data_full)
{
Init()
snes._bus->write(0x211A, 0b11111111);
cr_assert_eq(snes.ppu->_m7sel.playingFieldSize, true);
cr_assert_eq(snes.ppu->_m7sel.emptySpaceFill, true);
cr_assert_eq(snes.ppu->_m7sel.horizontalMirroring, true);
cr_assert_eq(snes.ppu->_m7sel.verticalMirroring, true);
cr_assert_eq(snes.ppu->_registers._m7sel.playingFieldSize, true);
cr_assert_eq(snes.ppu->_registers._m7sel.emptySpaceFill, true);
cr_assert_eq(snes.ppu->_registers._m7sel.horizontalMirroring, true);
cr_assert_eq(snes.ppu->_registers._m7sel.verticalMirroring, true);
}
Test(PPU_write_2, m7sel_data_actual)
{
Init()
snes._bus->write(0x211A, 0b01111101);
cr_assert_eq(snes.ppu->_m7sel.playingFieldSize, false);
cr_assert_eq(snes.ppu->_m7sel.emptySpaceFill, true);
cr_assert_eq(snes.ppu->_m7sel.horizontalMirroring, true);
cr_assert_eq(snes.ppu->_m7sel.verticalMirroring, false);
cr_assert_eq(snes.ppu->_registers._m7sel.playingFieldSize, false);
cr_assert_eq(snes.ppu->_registers._m7sel.emptySpaceFill, true);
cr_assert_eq(snes.ppu->_registers._m7sel.horizontalMirroring, true);
cr_assert_eq(snes.ppu->_registers._m7sel.verticalMirroring, false);
}
Test(PPU_write_2, w12sel_data_full)
{
Init()
snes._bus->write(0x2123, 0b11111111);
cr_assert_eq(snes.ppu->_wsel[0].window1InversionForBg1Bg2Obj, true);
cr_assert_eq(snes.ppu->_wsel[0].enableWindow1ForBg1Bg2Obj, true);
cr_assert_eq(snes.ppu->_wsel[0].window2InversionForBg1Bg3Obj, true);
cr_assert_eq(snes.ppu->_wsel[0].enableWindow2ForBg1Bg3Obj, true);
cr_assert_eq(snes.ppu->_wsel[0].window1InversionForBg2Bg4Color, true);
cr_assert_eq(snes.ppu->_wsel[0].enableWindow1ForBg2Bg4Color, true);
cr_assert_eq(snes.ppu->_wsel[0].window2InversionForBg2Bg4Color, true);
cr_assert_eq(snes.ppu->_wsel[0].enableWindow2ForBg2Bg4Color, true);
cr_assert_eq(snes.ppu->_registers._wsel[0].window1InversionForBg1Bg2Obj, true);
cr_assert_eq(snes.ppu->_registers._wsel[0].enableWindow1ForBg1Bg2Obj, true);
cr_assert_eq(snes.ppu->_registers._wsel[0].window2InversionForBg1Bg3Obj, true);
cr_assert_eq(snes.ppu->_registers._wsel[0].enableWindow2ForBg1Bg3Obj, true);
cr_assert_eq(snes.ppu->_registers._wsel[0].window1InversionForBg2Bg4Color, true);
cr_assert_eq(snes.ppu->_registers._wsel[0].enableWindow1ForBg2Bg4Color, true);
cr_assert_eq(snes.ppu->_registers._wsel[0].window2InversionForBg2Bg4Color, true);
cr_assert_eq(snes.ppu->_registers._wsel[0].enableWindow2ForBg2Bg4Color, true);
}
Test(PPU_write_2, w34sel_data_full)
{
Init()
snes._bus->write(0x2124, 0b10101010);
cr_assert_eq(snes.ppu->_wsel[1].window1InversionForBg1Bg2Obj, true);
cr_assert_eq(snes.ppu->_wsel[1].enableWindow1ForBg1Bg2Obj, false);
cr_assert_eq(snes.ppu->_wsel[1].window2InversionForBg1Bg3Obj, true);
cr_assert_eq(snes.ppu->_wsel[1].enableWindow2ForBg1Bg3Obj, false);
cr_assert_eq(snes.ppu->_wsel[1].window1InversionForBg2Bg4Color, true);
cr_assert_eq(snes.ppu->_wsel[1].enableWindow1ForBg2Bg4Color, false);
cr_assert_eq(snes.ppu->_wsel[1].window2InversionForBg2Bg4Color, true);
cr_assert_eq(snes.ppu->_wsel[1].enableWindow2ForBg2Bg4Color, false);
cr_assert_eq(snes.ppu->_registers._wsel[1].window1InversionForBg1Bg2Obj, true);
cr_assert_eq(snes.ppu->_registers._wsel[1].enableWindow1ForBg1Bg2Obj, false);
cr_assert_eq(snes.ppu->_registers._wsel[1].window2InversionForBg1Bg3Obj, true);
cr_assert_eq(snes.ppu->_registers._wsel[1].enableWindow2ForBg1Bg3Obj, false);
cr_assert_eq(snes.ppu->_registers._wsel[1].window1InversionForBg2Bg4Color, true);
cr_assert_eq(snes.ppu->_registers._wsel[1].enableWindow1ForBg2Bg4Color, false);
cr_assert_eq(snes.ppu->_registers._wsel[1].window2InversionForBg2Bg4Color, true);
cr_assert_eq(snes.ppu->_registers._wsel[1].enableWindow2ForBg2Bg4Color, false);
}
Test(PPU_write_2, wobjsel_data_full)
{
Init()
snes._bus->write(0x2125, 0b10110001);
cr_assert_eq(snes.ppu->_wsel[2].window1InversionForBg1Bg2Obj, true);
cr_assert_eq(snes.ppu->_wsel[2].enableWindow1ForBg1Bg2Obj, false);
cr_assert_eq(snes.ppu->_wsel[2].window2InversionForBg1Bg3Obj, true);
cr_assert_eq(snes.ppu->_wsel[2].enableWindow2ForBg1Bg3Obj, true);
cr_assert_eq(snes.ppu->_wsel[2].window1InversionForBg2Bg4Color, false);
cr_assert_eq(snes.ppu->_wsel[2].enableWindow1ForBg2Bg4Color, false);
cr_assert_eq(snes.ppu->_wsel[2].window2InversionForBg2Bg4Color, false);
cr_assert_eq(snes.ppu->_wsel[2].enableWindow2ForBg2Bg4Color, true);
cr_assert_eq(snes.ppu->_registers._wsel[2].window1InversionForBg1Bg2Obj, true);
cr_assert_eq(snes.ppu->_registers._wsel[2].enableWindow1ForBg1Bg2Obj, false);
cr_assert_eq(snes.ppu->_registers._wsel[2].window2InversionForBg1Bg3Obj, true);
cr_assert_eq(snes.ppu->_registers._wsel[2].enableWindow2ForBg1Bg3Obj, true);
cr_assert_eq(snes.ppu->_registers._wsel[2].window1InversionForBg2Bg4Color, false);
cr_assert_eq(snes.ppu->_registers._wsel[2].enableWindow1ForBg2Bg4Color, false);
cr_assert_eq(snes.ppu->_registers._wsel[2].window2InversionForBg2Bg4Color, false);
cr_assert_eq(snes.ppu->_registers._wsel[2].enableWindow2ForBg2Bg4Color, true);
}
Test(PPU_write_2, wbglog_data_full)
{
Init()
snes._bus->write(0x212A, 0b10110001);
cr_assert_eq(snes.ppu->_wbglog.maskLogicBg1, 0b10);
cr_assert_eq(snes.ppu->_wbglog.maskLogicBg2, 0b11);
cr_assert_eq(snes.ppu->_wbglog.maskLogicBg3, 0b00);
cr_assert_eq(snes.ppu->_wbglog.maskLogicBg4, 0b01);
cr_assert_eq(snes.ppu->_registers._wbglog.maskLogicBg1, 0b10);
cr_assert_eq(snes.ppu->_registers._wbglog.maskLogicBg2, 0b11);
cr_assert_eq(snes.ppu->_registers._wbglog.maskLogicBg3, 0b00);
cr_assert_eq(snes.ppu->_registers._wbglog.maskLogicBg4, 0b01);
}
Test(PPU_write_2, wobjlog_data_full)
{
Init()
snes._bus->write(0x212B, 0b10110001);
cr_assert_eq(snes.ppu->_wobjlog.maskLogicObj, 0b01);
cr_assert_eq(snes.ppu->_wobjlog.maskLogicColor, 0b00);
cr_assert_eq(snes.ppu->_registers._wobjlog.maskLogicObj, 0b01);
cr_assert_eq(snes.ppu->_registers._wobjlog.maskLogicColor, 0b00);
}
Test(PPU_write_2, tm_data_full)
{
Init()
snes._bus->write(0x212C, 0b10110001);
cr_assert_eq(snes.ppu->_t[0].enableWindowDisplayBg1, true);
cr_assert_eq(snes.ppu->_t[0].enableWindowDisplayBg2, false);
cr_assert_eq(snes.ppu->_t[0].enableWindowDisplayBg3, false);
cr_assert_eq(snes.ppu->_t[0].enableWindowDisplayBg4, false);
cr_assert_eq(snes.ppu->_t[0].enableWindowDisplayObj, true);
cr_assert_eq(snes.ppu->_registers._t[0].enableWindowDisplayBg1, true);
cr_assert_eq(snes.ppu->_registers._t[0].enableWindowDisplayBg2, false);
cr_assert_eq(snes.ppu->_registers._t[0].enableWindowDisplayBg3, false);
cr_assert_eq(snes.ppu->_registers._t[0].enableWindowDisplayBg4, false);
cr_assert_eq(snes.ppu->_registers._t[0].enableWindowDisplayObj, true);
}
Test(PPU_write_2, ts_data_full)
{
Init()
snes._bus->write(0x212D, 0b10101110);
cr_assert_eq(snes.ppu->_t[1].enableWindowDisplayBg1, false);
cr_assert_eq(snes.ppu->_t[1].enableWindowDisplayBg2, true);
cr_assert_eq(snes.ppu->_t[1].enableWindowDisplayBg3, true);
cr_assert_eq(snes.ppu->_t[1].enableWindowDisplayBg4, true);
cr_assert_eq(snes.ppu->_t[1].enableWindowDisplayObj, false);
cr_assert_eq(snes.ppu->_registers._t[1].enableWindowDisplayBg1, false);
cr_assert_eq(snes.ppu->_registers._t[1].enableWindowDisplayBg2, true);
cr_assert_eq(snes.ppu->_registers._t[1].enableWindowDisplayBg3, true);
cr_assert_eq(snes.ppu->_registers._t[1].enableWindowDisplayBg4, true);
cr_assert_eq(snes.ppu->_registers._t[1].enableWindowDisplayObj, false);
}
Test(PPU_write_2, tmw_data_full)
{
Init()
snes._bus->write(0x212E, 0b10101110);
cr_assert_eq(snes.ppu->_tw[0].enableWindowMaskingBg1, false);
cr_assert_eq(snes.ppu->_tw[0].enableWindowMaskingBg2, true);
cr_assert_eq(snes.ppu->_tw[0].enableWindowMaskingBg3, true);
cr_assert_eq(snes.ppu->_tw[0].enableWindowMaskingBg4, true);
cr_assert_eq(snes.ppu->_tw[0].enableWindowMaskingObj, false);
cr_assert_eq(snes.ppu->_registers._tw[0].enableWindowMaskingBg1, false);
cr_assert_eq(snes.ppu->_registers._tw[0].enableWindowMaskingBg2, true);
cr_assert_eq(snes.ppu->_registers._tw[0].enableWindowMaskingBg3, true);
cr_assert_eq(snes.ppu->_registers._tw[0].enableWindowMaskingBg4, true);
cr_assert_eq(snes.ppu->_registers._tw[0].enableWindowMaskingObj, false);
}
Test(PPU_write_2, tsw_data_full)
{
Init()
snes._bus->write(0x212F, 0b10100011);
cr_assert_eq(snes.ppu->_tw[1].enableWindowMaskingBg1, true);
cr_assert_eq(snes.ppu->_tw[1].enableWindowMaskingBg2, true);
cr_assert_eq(snes.ppu->_tw[1].enableWindowMaskingBg3, false);
cr_assert_eq(snes.ppu->_tw[1].enableWindowMaskingBg4, false);
cr_assert_eq(snes.ppu->_tw[1].enableWindowMaskingObj, false);
cr_assert_eq(snes.ppu->_registers._tw[1].enableWindowMaskingBg1, true);
cr_assert_eq(snes.ppu->_registers._tw[1].enableWindowMaskingBg2, true);
cr_assert_eq(snes.ppu->_registers._tw[1].enableWindowMaskingBg3, false);
cr_assert_eq(snes.ppu->_registers._tw[1].enableWindowMaskingBg4, false);
cr_assert_eq(snes.ppu->_registers._tw[1].enableWindowMaskingObj, false);
}
Test(PPU_write_2, cgwsel_data_full)
{
Init()
snes._bus->write(0x2130, 0b10111001);
cr_assert_eq(snes.ppu->_cgwsel.clipColorToBlackBeforeMath, 0b10);
cr_assert_eq(snes.ppu->_cgwsel.preventColorMath, 0b11);
cr_assert_eq(snes.ppu->_cgwsel.addSubscreen, false);
cr_assert_eq(snes.ppu->_cgwsel.directColorMode, true);
cr_assert_eq(snes.ppu->_registers._cgwsel.clipColorToBlackBeforeMath, 0b10);
cr_assert_eq(snes.ppu->_registers._cgwsel.preventColorMath, 0b11);
cr_assert_eq(snes.ppu->_registers._cgwsel.addSubscreen, false);
cr_assert_eq(snes.ppu->_registers._cgwsel.directColorMode, true);
}
Test(PPU_write_2, cgadsub_data_full)
{
Init()
snes._bus->write(0x2131, 0b10111001);
cr_assert_eq(snes.ppu->_cgadsub.addSubtractSelect, true);
cr_assert_eq(snes.ppu->_cgadsub.halfColorMath, false);
cr_assert_eq(snes.ppu->_cgadsub.enableColorMathBackdrop, true);
cr_assert_eq(snes.ppu->_cgadsub.enableColorMathObj, true);
cr_assert_eq(snes.ppu->_cgadsub.enableColorMathBg4, true);
cr_assert_eq(snes.ppu->_cgadsub.enableColorMathBg3, false);
cr_assert_eq(snes.ppu->_cgadsub.enableColorMathBg2, false);
cr_assert_eq(snes.ppu->_cgadsub.enableColorMathBg1, true);
cr_assert_eq(snes.ppu->_registers._cgadsub.addSubtractSelect, true);
cr_assert_eq(snes.ppu->_registers._cgadsub.halfColorMath, false);
cr_assert_eq(snes.ppu->_registers._cgadsub.enableColorMathBackdrop, true);
cr_assert_eq(snes.ppu->_registers._cgadsub.enableColorMathObj, true);
cr_assert_eq(snes.ppu->_registers._cgadsub.enableColorMathBg4, true);
cr_assert_eq(snes.ppu->_registers._cgadsub.enableColorMathBg3, false);
cr_assert_eq(snes.ppu->_registers._cgadsub.enableColorMathBg2, false);
cr_assert_eq(snes.ppu->_registers._cgadsub.enableColorMathBg1, true);
}
Test(PPU_write_2, coldata_data_full)
{
Init()
snes._bus->write(0x2132, 0b10111001);
cr_assert_eq(snes.ppu->_coldata.blue, true);
cr_assert_eq(snes.ppu->_coldata.green, false);
cr_assert_eq(snes.ppu->_coldata.red, true);
cr_assert_eq(snes.ppu->_coldata.colorIntensity, 0b11001);
cr_assert_eq(snes.ppu->_registers._coldata.blue, true);
cr_assert_eq(snes.ppu->_registers._coldata.green, false);
cr_assert_eq(snes.ppu->_registers._coldata.red, true);
cr_assert_eq(snes.ppu->_registers._coldata.colorIntensity, 0b11001);
}
Test(PPU_write_2, setini_data_full)
{
Init()
snes._bus->write(0x2133, 0b10111001);
cr_assert_eq(snes.ppu->_setini.externalSync, true);
cr_assert_eq(snes.ppu->_setini.mode7ExtBg, false);
cr_assert_eq(snes.ppu->_setini.enablePseudoHiresMode, true);
cr_assert_eq(snes.ppu->_setini.overscanMode, false);
cr_assert_eq(snes.ppu->_setini.objInterlace, false);
cr_assert_eq(snes.ppu->_setini.screenInterlace, true);
cr_assert_eq(snes.ppu->_registers._setini.externalSync, true);
cr_assert_eq(snes.ppu->_registers._setini.mode7ExtBg, false);
cr_assert_eq(snes.ppu->_registers._setini.enablePseudoHiresMode, true);
cr_assert_eq(snes.ppu->_registers._setini.overscanMode, false);
cr_assert_eq(snes.ppu->_registers._setini.objInterlace, false);
cr_assert_eq(snes.ppu->_registers._setini.screenInterlace, true);
}
Test(PPU_write_2, m7a_data_full)
{
Init()
snes._bus->write(0x211B, 0b10111001);
cr_assert_eq(snes.ppu->_registers._m7[0].m7l, 0b10111001);
}
Test(PPU_write_2, m7c_data_low_and_high_byte)
{
Init()
snes._bus->write(0x211D, 0b10111001);
snes._bus->write(0x211D, 0b11111111);
cr_assert_eq(snes.ppu->_registers._m7[2].m7, 0b1011100111111111);
}
+2 -2
View File
@@ -350,7 +350,7 @@ Test(BusRead, ReadPPU)
Init()
uint8_t data;
snes.ppu->mpy.mpyl = 123;
snes.ppu->_registers._mpy.mpyl = 123;
data = snes._bus->read(0x002134);
cr_assert_eq(data, 123);
}
@@ -428,7 +428,7 @@ Test(BusWrite, WritePPU)
Init()
snes._bus->write(0x002106, 123);
cr_assert_eq(snes.ppu->_mosaic.raw, 123);
cr_assert_eq(snes.ppu->_registers._mosaic.raw, 123);
}
Test(BusWrite, WriteCPU)