From 9288bf38291f603588e5c378d86a3ada8d311529 Mon Sep 17 00:00:00 2001 From: Melefo <42809472+Melefo@users.noreply.github.com> Date: Fri, 7 Feb 2020 14:08:00 +0100 Subject: [PATCH] Fixing APU read & write --- sources/APU/APU.cpp | 59 ++++++----------------------------------- tests/testMemoryBus.cpp | 9 +++---- 2 files changed, 12 insertions(+), 56 deletions(-) diff --git a/sources/APU/APU.cpp b/sources/APU/APU.cpp index 6127573..cdf06f4 100644 --- a/sources/APU/APU.cpp +++ b/sources/APU/APU.cpp @@ -14,30 +14,14 @@ namespace ComSquare::APU uint8_t APU::read(uint24_t addr) { switch (addr) { - case 0xF0: - return this->_registers.unknown; - case 0xF2: - return this->_registers.dspregAddr; - case 0xF3: - return this->_registers.dspregData; - case 0xF4: + case 0x00: return this->_registers.port0; - case 0xF5: + case 0x01: return this->_registers.port1; - case 0xF6: + case 0x02: return this->_registers.port2; - case 0xF7: + case 0x03: return this->_registers.port3; - case 0xF8: - return this->_registers.regmem1; - case 0xF9: - return this->_registers.regmem2; - case 0xFD: - return this->_registers.counter0; - case 0xFE: - return this->_registers.counter1; - case 0xFF: - return this->_registers.counter2; default: throw InvalidAddress("APU Registers read", addr); } @@ -46,45 +30,18 @@ namespace ComSquare::APU void APU::write(uint24_t addr, uint8_t data) { switch (addr) { - case 0xF0: - this->_registers.unknown = data; - break; - case 0xF1: - this->_registers.ctrlreg = data; - break; - case 0xF2: - this->_registers.dspregAddr = data; - break; - case 0xF3: - this->_registers.dspregData = data; - break; - case 0xF4: + case 0x00: this->_registers.port0 = data; break; - case 0xF5: + case 0x01: this->_registers.port1 = data; break; - case 0xF6: + case 0x02: this->_registers.port2 = data; break; - case 0xF7: + case 0x03: this->_registers.port3 = data; break; - case 0xF8: - this->_registers.regmem1 = data; - break; - case 0xF9: - this->_registers.regmem2 = data; - break; - case 0xFA: - this->_registers.timer0 = data; - break; - case 0xFB: - this->_registers.timer1 = data; - break; - case 0xFC: - this->_registers.timer2 = data; - break; default: throw InvalidAddress("APU Registers write", addr); } diff --git a/tests/testMemoryBus.cpp b/tests/testMemoryBus.cpp index c03e974..25eabe4 100644 --- a/tests/testMemoryBus.cpp +++ b/tests/testMemoryBus.cpp @@ -3,6 +3,7 @@ // #include +#include #include #include "communism.hpp" #include "../sources/Memory/MemoryBus.hpp" @@ -26,8 +27,6 @@ std::pair Init() snes.cartridge->header.mappingMode = Cartridge::LoRom; snes.sram->_size = 10; snes.sram->_data = new uint8_t[snes.cartridge->_size]; - snes.wram->_size = 10; - snes.wram->_data = new uint8_t[snes.cartridge->_size]; bus.mapComponents(snes); return std::make_pair(bus, snes); } @@ -251,7 +250,7 @@ Test(BusAccessor, GetRomMirror3) // // /////////////////////////// -Test(BusRead, ReadOutside) +Test(BusRead, ReadOutside, .init = cr_redirect_stdout) { auto pair = Init(); uint8_t data; @@ -261,7 +260,7 @@ Test(BusRead, ReadOutside) cr_assert_eq(data, 123); } -Test(BusRead, ReadOutside2) +Test(BusRead, ReadOutside2, .init = cr_redirect_stdout) { auto pair = Init(); uint8_t data; @@ -271,7 +270,7 @@ Test(BusRead, ReadOutside2) cr_assert_eq(data, 123); } -Test(BusRead, ReadOutside3) +Test(BusRead, ReadOutside3, .init = cr_redirect_stdout) { auto pair = Init(); uint8_t data;