adding tests and fixing VMDATA(L-H) and adding read registers for vram

This commit is contained in:
Clément Le Bihan
2021-02-01 23:45:43 +01:00
parent 71dfa7b880
commit 212a3b3922
5 changed files with 65 additions and 5 deletions
+45
View File
@@ -0,0 +1,45 @@
//
// Created by cbihan on 2/1/21.
//
#include <criterion/criterion.h>
#include <bitset>
#include "../tests.hpp"
#include "../../sources/SNES.hpp"
#include "../../sources/Memory/MemoryBus.hpp"
#include "../../sources/PPU/PPU.hpp"
using namespace ComSquare;
Test(PPU_read_1, vram_data_read_full)
{
Init()
snes._bus->write(0x2115, 0b10000000);
snes._bus->write(0x2116, 0);
snes._bus->write(0x2117, 0);
snes.ppu->vram->write_internal(0, 0b11111111);
snes.ppu->vram->write_internal(1, 0b11111111);
snes._bus->write(0x2116, 0);
snes._bus->write(0x2117, 0);
uint8_t tmp = snes._bus->read(0x2139);
cr_expect(tmp == 0b11111111, "Got %X expected 0xFF", tmp);
tmp = snes._bus->read(0x213a);
cr_expect(tmp == 0b11111111, "Got %X expected 0xFF", tmp);
}
Test(PPU_read_1, vram_data_read_half)
{
Init()
snes._bus->write(0x2116, 0);
snes._bus->write(0x2117, 0);
snes.ppu->vram->write_internal(0, 0b01101001);
snes.ppu->vram->write_internal(1, 0b11111111);
snes._bus->write(0x2116, 0);
snes._bus->write(0x2117, 0);
uint8_t tmp = snes._bus->read(0x2139);
cr_expect(tmp == 0b01101001, "Got %X expected 0x69", tmp);
tmp = snes._bus->read(0x213a);
cr_expect(tmp == 0b11111111, "Got %X expected 0xFF", tmp);
}
+13
View File
@@ -55,6 +55,19 @@ Test(PPU_write_2, vmadd_full_data)
cr_assert_eq(snes.ppu->_registers._vmadd.vmadd, 0b1111111111111111);
}
Test(PPU_write_2, vmadd_full_data_check_ram)
{
Init()
snes._bus->write(0x2115, 0b10000000);
snes._bus->write(0x2116, 2);
snes._bus->write(0x2117, 0);
snes._bus->write(0x2118, 0xFF);
snes._bus->write(0x2119, 0xFF);
cr_assert(snes.ppu->_registers._vmadd.vmadd == 3, "Got %d but expected 3", snes.ppu->_registers._vmadd.vmadd);
cr_assert(snes.ppu->vram->read_internal(4) == 0xFF, "Got %X but expected 0xFF", snes.ppu->vram->read_internal(4));
cr_assert(snes.ppu->vram->read_internal(5) == 0xFF, "Got %X but expected 0xFF", snes.ppu->vram->read_internal(5));
}
Test(PPU_write_2, vmadd_full_high_byte_null)
{
Init()