diff --git a/sources/CPU/CPU.hpp b/sources/CPU/CPU.hpp index f2afc1b..761684f 100644 --- a/sources/CPU/CPU.hpp +++ b/sources/CPU/CPU.hpp @@ -12,6 +12,7 @@ #include "../Memory/AMemory.hpp" #include "Instruction.hpp" #include "DMA/DMA.hpp" +#include "../Debugger/RegisterViewer.hpp" namespace ComSquare::CPU { @@ -199,6 +200,7 @@ namespace ComSquare::CPU //! @brief The cartridge header (stored for interrupt vectors.. Cartridge::Header &_cartridgeHeader; + //! @brief DMA channels witch are mapped to the bus. std::array _dmaChannels; //! @brief True if an addressing mode with an iterator (x, y) has crossed the page. (Used because crossing the page boundary take one more cycle to run certain instructions). @@ -768,6 +770,10 @@ namespace ComSquare::CPU //! @brief Change the memory bus used by the CPU. virtual void setMemoryBus(std::shared_ptr bus); + + #ifdef DEBUGGER_ENABLED + friend Debugger::RegisterViewer; + #endif }; } diff --git a/sources/CPU/DMA/DMA.hpp b/sources/CPU/DMA/DMA.hpp index caa2dcb..99fdbc3 100644 --- a/sources/CPU/DMA/DMA.hpp +++ b/sources/CPU/DMA/DMA.hpp @@ -9,6 +9,7 @@ #include #include "../../Models/Int24.hpp" #include "../../Memory/MemoryBus.hpp" +#include "../../Debugger/RegisterViewer.hpp" namespace ComSquare::CPU { @@ -98,6 +99,10 @@ namespace ComSquare::CPU DMA(const DMA &) = default; DMA &operator=(const DMA &) = default; ~DMA() = default; + + #ifdef DEBUGGER_ENABLED + friend Debugger::RegisterViewer; + #endif }; } diff --git a/sources/Debugger/RegisterViewer.cpp b/sources/Debugger/RegisterViewer.cpp index 56178a9..d6ae10f 100644 --- a/sources/Debugger/RegisterViewer.cpp +++ b/sources/Debugger/RegisterViewer.cpp @@ -4,6 +4,7 @@ #include "RegisterViewer.hpp" #include "../SNES.hpp" +#include "../Utility/Utility.hpp" namespace ComSquare::Debugger { @@ -17,9 +18,22 @@ namespace ComSquare::Debugger this->_window->setAttribute(Qt::WA_DeleteOnClose); this->_ui.setupUi(this->_window); + this->_setupUi(); this->_window->show(); } + void RegisterViewer::_setupUi() + { + for (int i = 0; i < 8; i++) { + RegistersViewerModel *model = new RegistersViewerModel(this->_snes); + model->addRegister(Register(0x420B, "-0", "Enabled", [i](SNES &snes) { + return snes.cpu->_dmaChannels[i].enabled; + }, nullptr, Boolean)); + this->_ui.dmaChannel1->setModel(model); + this->_models.push_back(model); + } + } + void RegisterViewer::focus() { this->_window->activateWindow(); @@ -29,4 +43,94 @@ namespace ComSquare::Debugger { this->_snes.disableRegisterDebugging(); } + + RegisterViewer::~RegisterViewer() + { + for (auto &model : this->_models) + delete model; + } + + Register::Register(uint24_t addr, + const std::string &usedBits, + const std::string ®Name, + const std::function &getValue, + const std::function &setValue, + RegisterType regType) + : address(addr), + bits(usedBits), + name(regName), + get(getValue), + set(setValue), + type(regType) {} +} + +using namespace ComSquare; +using namespace ComSquare::Debugger; + +RegistersViewerModel::RegistersViewerModel(SNES &snes, QObject *parent) : QAbstractTableModel(parent), _snes(snes) { } + + +void RegistersViewerModel::addRegister(Register reg) +{ + int row = this->_registers.size(); + this->beginInsertRows(QModelIndex(), row, row); + this->_registers.push_back(reg); + this->insertRow(row); + this->endInsertRows(); +} + +int RegistersViewerModel::rowCount(const QModelIndex &) const +{ + return this->_registers.size(); +} + +int RegistersViewerModel::columnCount(const QModelIndex &) const +{ + return 3; +} + +QVariant RegistersViewerModel::data(const QModelIndex &index, int role) const +{ + Register reg = this->_registers[index.row()]; + + if (role == Qt::CheckStateRole && reg.type == Boolean && index.column() == 2) + return reg.get(this->_snes) ? Qt::Checked : Qt::Unchecked; + + if (role != Qt::DisplayRole) + return QVariant(); + + switch (index.column()) { + case 0: + return QString((Utility::to_hex(reg.address) + reg.bits).c_str()); + case 1: + return QString(reg.name.c_str()); + case 2: + switch (reg.type) { + case Boolean: + return QString(reg.get(this->_snes) ? "True" : "False"); + case EightBits: + return QString(Utility::to_hex(static_cast(reg.get(this->_snes))).c_str()); + case SixteenBits: + return QString(Utility::to_hex(static_cast(reg.get(this->_snes))).c_str()); + case TwentyFourBits: + return QString(Utility::to_hex(static_cast(reg.get(this->_snes))).c_str()); + } + } + return QVariant(); +} + +QVariant RegistersViewerModel::headerData(int section, Qt::Orientation orientation, int role) const +{ + if (orientation == Qt::Vertical || role != Qt::DisplayRole) + return QVariant(); + switch (section) { + case 0: + return QString("Address"); + case 1: + return QString("Name"); + case 2: + return QString("Value"); + default: + return QVariant(); + } } \ No newline at end of file diff --git a/sources/Debugger/RegisterViewer.hpp b/sources/Debugger/RegisterViewer.hpp index e1853ab..e98390e 100644 --- a/sources/Debugger/RegisterViewer.hpp +++ b/sources/Debugger/RegisterViewer.hpp @@ -8,6 +8,41 @@ #include #include "ClosableWindow.hpp" #include "../../ui/ui_registersView.h" +#include "../Models/Int24.hpp" +#include "../Memory/MemoryBus.hpp" + +namespace ComSquare::Debugger +{ + struct Register; +} + +class RegistersViewerModel : public QAbstractTableModel +{ +Q_OBJECT +private: + //! @brief The list of registers to display / update. + std::vector _registers; + //! @brief Reference to the snes to get information from registers. + ComSquare::SNES &_snes; +public: + //! @brief Add a register. + void addRegister(ComSquare::Debugger::Register reg); + + RegistersViewerModel(ComSquare::SNES &snes, QObject *parent = nullptr); + RegistersViewerModel(const RegistersViewerModel &) = delete; + const RegistersViewerModel &operator=(const RegistersViewerModel &) = delete; + ~RegistersViewerModel() override = default; + + //! @brief The number of row the table has. + int rowCount(const QModelIndex &parent) const override; + //! @brief The number of column the table has. + int columnCount(const QModelIndex &parent) const override; + //! @brief Return a data representing the table cell. + QVariant data(const QModelIndex &index, int role) const override; + //! @brief Override the headers to use hex values. + QVariant headerData(int section, Qt::Orientation orientation, int role) const override; +}; + namespace ComSquare { @@ -21,9 +56,14 @@ namespace ComSquare ClosableWindow *_window; //! @brief A widget that contain the whole UI. Ui::RegistersView _ui; + //! @brief The list of models used by different panels. + std::vector _models; //! @brief The snes instance to read/write to DMA channels. SNES &_snes; + + //! @brief Set models to the different tables and initialize them. + void _setupUi(); public: //! @brief Called when the window is closed. Turn off the debugger. void disableDebugger(); @@ -32,12 +72,47 @@ namespace ComSquare RegisterViewer( const RegisterViewer &) = delete; RegisterViewer &operator=(const RegisterViewer &) = delete; - ~RegisterViewer() =default; + ~RegisterViewer(); //! @brief Focus the debugger's window. void focus(); }; - }; + + //! @brief The types of registers + enum RegisterType { + //! @brief This type display a checkbox + Boolean, + //! @brief A 8 bits hexadecimal value. + EightBits, + //! @brief A 16 bits hexadecimal value. + SixteenBits, + //! @brief A 24 bits hexadecimal value. + TwentyFourBits + }; + + //! @brief Struct containing information about a register. + struct Register { + Register(uint24_t addr, + const std::string &usedBits, + const std::string ®Name, + const std::function &getValue, + const std::function &setValue, + RegisterType regType); + + //! @brief Where this register is located on the bus. + uint24_t address; + //! @brief Specify witch bits are concerned if not all bytes are concerned. + std::string bits; + //! @brief The name of this register. + std::string name; + //! @brief How to get this value. + std::function get; + //! @brief How to set this value. + std::function set; + //! @brief How this value should be displayed/asked for input. + RegisterType type; + }; + } } #endif //COMSQUARE_REGISTERVIEWER_HPP diff --git a/sources/SNES.cpp b/sources/SNES.cpp index a107aaf..d6d321b 100644 --- a/sources/SNES.cpp +++ b/sources/SNES.cpp @@ -15,16 +15,16 @@ namespace ComSquare { SNES::SNES(const std::string &romPath, Renderer::IRenderer &renderer) : - _bus(std::make_shared()), + bus(std::make_shared()), cartridge(new Cartridge::Cartridge(romPath)), wram(new Ram::Ram(16384, WRam, "WRam")), sram(new Ram::Ram(this->cartridge->header.sramSize, SRam, "SRam")), apuRam(new APU::MemoryMap()), - cpu(new CPU::CPU(this->_bus, cartridge->header)), + cpu(new CPU::CPU(this->bus, cartridge->header)), ppu(new PPU::PPU(renderer)), apu(new APU::APU(this->apuRam)) { - this->_bus->mapComponents(*this); + this->bus->mapComponents(*this); } void SNES::update() @@ -44,7 +44,7 @@ namespace ComSquare cpuDebug->pause(); } else { this->cpu = std::make_shared(*this->cpu, *this); - this->_bus->mapComponents(*this); + this->bus->mapComponents(*this); } #else std::cerr << "Debugging features are not enabled. You can't enable the debugger." << std::endl; @@ -55,7 +55,7 @@ namespace ComSquare void SNES::disableCPUDebugging() { this->cpu = std::make_shared(*this->cpu); - this->_bus->mapComponents(*this); + this->bus->mapComponents(*this); } void SNES::enableRamViewer() @@ -64,7 +64,7 @@ namespace ComSquare if (this->_ramViewer) this->_ramViewer->focus(); else - this->_ramViewer = std::make_unique(*this, *this->_bus); + this->_ramViewer = std::make_unique(*this, *this->bus); #endif } @@ -99,7 +99,7 @@ namespace ComSquare std::static_pointer_cast(this->apu)->focus(); else { this->apu = std::make_shared(*this->apu, *this); - this->_bus->mapComponents(*this); + this->bus->mapComponents(*this); } #else std::cerr << "Debugging features are not enabled. You can't enable the debugger." << std::endl; @@ -109,18 +109,18 @@ namespace ComSquare void SNES::disableAPUDebugging() { this->apu = std::make_shared(*this->apu); - this->_bus->mapComponents(*this); + this->bus->mapComponents(*this); } void SNES::enableMemoryBusDebugging() { #ifdef DEBUGGER_ENABLED - if (this->_bus->isDebugger()) - std::static_pointer_cast(this->_bus)->focus(); + if (this->bus->isDebugger()) + std::static_pointer_cast(this->bus)->focus(); else { - this->_bus = std::make_shared(*this, *this->_bus); - this->cpu->setMemoryBus(this->_bus); + this->bus = std::make_shared(*this, *this->bus); + this->cpu->setMemoryBus(this->bus); } #else std::cerr << "Debugging features are not enabled. You can't enable the debugger." << std::endl; @@ -130,8 +130,8 @@ namespace ComSquare void SNES::disableMemoryBusDebugging() { #ifdef DEBUGGER_ENABLED - this->_bus = std::make_shared(*this->_bus); - this->cpu->setMemoryBus(this->_bus); + this->bus = std::make_shared(*this->bus); + this->cpu->setMemoryBus(this->bus); #else std::cerr << "Debugging features are not enabled. You can't enable the debugger." << std::endl; #endif diff --git a/sources/SNES.hpp b/sources/SNES.hpp index 146ffb5..c3d3ed5 100644 --- a/sources/SNES.hpp +++ b/sources/SNES.hpp @@ -35,9 +35,10 @@ namespace ComSquare //! @brief The window that allow the user to view registers. std::unique_ptr _registerViewer; #endif - //! @brief The memory bus that map addresses to components. - std::shared_ptr _bus; public: + //! @brief The memory bus that map addresses to components. + std::shared_ptr bus; + //! @brief Cartridge containing instructions (ROM). std::shared_ptr cartridge; //! @brief Work Ram shared by all the components. diff --git a/sources/Utility/Utility.hpp b/sources/Utility/Utility.hpp index 489afc3..78b1ced 100644 --- a/sources/Utility/Utility.hpp +++ b/sources/Utility/Utility.hpp @@ -18,11 +18,11 @@ namespace ComSquare::Utility StandardPrefix }; - std::string to_hex(uint8_t i, HexString prefix = StandardPrefix); + std::string to_hex(uint8_t i, HexString prefix = AsmPrefix); - std::string to_hex(uint16_t i, HexString prefix = StandardPrefix); + std::string to_hex(uint16_t i, HexString prefix = AsmPrefix); - std::string to_hex(uint24_t i, HexString prefix = StandardPrefix); + std::string to_hex(uint24_t i, HexString prefix = AsmPrefix); std::string to_binary(uint8_t i); diff --git a/sources/main.cpp b/sources/main.cpp index 99bbc08..a13903b 100644 --- a/sources/main.cpp +++ b/sources/main.cpp @@ -16,11 +16,12 @@ void usage(char *bin) std::cout << "ComSquare:" << std::endl << "\tUsage: " << bin << " rom_path [options]" << std::endl << "Options:" << std::endl - << "\t-c, --cpu: \tEnable the debugger of the CPU." << std::endl - << "\t-m, --memory: \tEnable the memory viewer panel." << std::endl - << "\t-h, --header: \tShow the header of the cartridge." << std::endl - << "\t-b, --bus: \tShow the memory bus's log." << std::endl - << "\t-g, --cgram: \tShow the palette viewer." << std::endl; + << "\t-c, --cpu: \tEnable the debugger of the CPU." << std::endl + << "\t-m, --memory: \tEnable the memory viewer panel." << std::endl + << "\t-h, --header: \tShow the header of the cartridge." << std::endl + << "\t-b, --bus: \tShow the memory bus's log." << std::endl + << "\t-g, --cgram: \tShow the palette viewer." << std::endl + << "\t-r, --registers: \tShow the registers viewer." << std::endl; } void parseArguments(int argc, char **argv, SNES &snes) @@ -28,16 +29,17 @@ void parseArguments(int argc, char **argv, SNES &snes) while (true) { int option_index = 0; static struct option long_options[] = { - {"cpu", no_argument, 0, 'c'}, - {"apu", no_argument, 0, 'a'}, - {"memory", no_argument, 0, 'm'}, - {"header", no_argument, 0, 'h'}, - {"bus", no_argument, 0, 'b'}, - {"cgram", no_argument, 0, 'g'}, - {0, 0, 0, 0} + {"cpu", no_argument, 0, 'c'}, + {"apu", no_argument, 0, 'a'}, + {"memory", no_argument, 0, 'm'}, + {"header", no_argument, 0, 'h'}, + {"bus", no_argument, 0, 'b'}, + {"cgram", no_argument, 0, 'g'}, + {"registers", no_argument, 0, 'r'}, + {0, 0, 0, 0} }; - int c = getopt_long(argc, argv, "camhbg", long_options, &option_index); + int c = getopt_long(argc, argv, "camhbgr", long_options, &option_index); if (c == -1) break; switch (c) { @@ -62,6 +64,9 @@ void parseArguments(int argc, char **argv, SNES &snes) case 'g': snes.enableCgramDebugging(); break; + case 'r': + snes.enableRegisterDebugging(); + break; default: break; } @@ -70,7 +75,7 @@ void parseArguments(int argc, char **argv, SNES &snes) int main(int argc, char **argv) { - if (argc < 2) { + if (argc < 2 || !strcmp(argv[1], "-h") || !strcmp(argv[1], "--help")) { usage(argv[0]); return 1; } diff --git a/tests/CPU/testAddressingMode.cpp b/tests/CPU/testAddressingMode.cpp index f4ed3e4..1fd8371 100644 --- a/tests/CPU/testAddressingMode.cpp +++ b/tests/CPU/testAddressingMode.cpp @@ -13,7 +13,7 @@ using namespace ComSquare; Test(AddrModeInit, LegitBus) { Init() - cr_assert_eq(snes._bus.get(), snes.cpu->_bus.get(), "Warning, the CPU's bus is not the same the SNES's bus. Next tests of the CPU may fail."); + cr_assert_eq(snes.bus.get(), snes.cpu->_bus.get(), "Warning, the CPU's bus is not the same the SNES's bus. Next tests of the CPU may fail."); } Test(AddrMode, Immediate) diff --git a/tests/PPU/testPpuWrite.cpp b/tests/PPU/testPpuWrite.cpp index 036d214..3e63c36 100644 --- a/tests/PPU/testPpuWrite.cpp +++ b/tests/PPU/testPpuWrite.cpp @@ -14,7 +14,7 @@ using namespace ComSquare; Test(PPU_write, inidisp_data_full_ones) { Init() - snes._bus->write(0x2100, 0b11111111); + snes.bus->write(0x2100, 0b11111111); cr_assert_eq(snes.ppu->_registers._inidisp.fblank, true); cr_assert_eq(snes.ppu->_registers._inidisp.brightness, 0xF); } @@ -22,7 +22,7 @@ Test(PPU_write, inidisp_data_full_ones) Test(PPU_write, inidisp_data_full_zeros) { Init() - snes._bus->write(0x2100, 0b00000000); + snes.bus->write(0x2100, 0b00000000); cr_assert_eq(snes.ppu->_registers._inidisp.fblank, false); cr_assert_eq(snes.ppu->_registers._inidisp.brightness, 0x0); } @@ -30,7 +30,7 @@ Test(PPU_write, inidisp_data_full_zeros) Test(PPU_write, inidisp_data_fBlank_on_brghtness_off) { Init() - snes._bus->write(0x2100, 0b10000000); + snes.bus->write(0x2100, 0b10000000); cr_assert_eq(snes.ppu->_registers._inidisp.fblank, true); cr_assert_eq(snes.ppu->_registers._inidisp.brightness, 0x0); } @@ -38,7 +38,7 @@ Test(PPU_write, inidisp_data_fBlank_on_brghtness_off) Test(PPU_write, inidisp_data_fBlank_off_brghtness_max) { Init() - snes._bus->write(0x2100, 0b00001111); + snes.bus->write(0x2100, 0b00001111); cr_assert_eq(snes.ppu->_registers._inidisp.fblank, false); cr_assert_eq(snes.ppu->_registers._inidisp.brightness, 0xF); } @@ -46,7 +46,7 @@ Test(PPU_write, inidisp_data_fBlank_off_brghtness_max) Test(PPU_write, inidisp_data_fBlank_off_brghtness_half) { Init() - snes._bus->write(0x2100, 0b00000101); + snes.bus->write(0x2100, 0b00000101); cr_assert_eq(snes.ppu->_registers._inidisp.fblank, false); cr_assert_eq(snes.ppu->_registers._inidisp.brightness, 0x5); } @@ -54,7 +54,7 @@ Test(PPU_write, inidisp_data_fBlank_off_brghtness_half) Test(PPU_write, obsel_111_object_size_and_all_null) { Init() - snes._bus->write(0x2101, 0b11100000); + snes.bus->write(0x2101, 0b11100000); 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); @@ -63,7 +63,7 @@ Test(PPU_write, obsel_111_object_size_and_all_null) Test(PPU_write, obsel_data_full) { Init() - snes._bus->write(0x2101, 0b11111111); + snes.bus->write(0x2101, 0b11111111); 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); @@ -72,7 +72,7 @@ Test(PPU_write, obsel_data_full) Test(PPU_write, obsel_data_full_nameselect) { Init() - snes._bus->write(0x2101, 0b00011000); + snes.bus->write(0x2101, 0b00011000); 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); @@ -81,7 +81,7 @@ Test(PPU_write, obsel_data_full_nameselect) Test(PPU_write, obsel_data_full_baseselect) { Init() - snes._bus->write(0x2101, 0b00000111); + snes.bus->write(0x2101, 0b00000111); 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); @@ -90,14 +90,14 @@ Test(PPU_write, obsel_data_full_baseselect) Test(PPU_write, oamaddl_data_full) { Init() - snes._bus->write(0x2102, 0b11111111); + snes.bus->write(0x2102, 0b11111111); cr_assert_eq(snes.ppu->_registers._oamadd.oamAddress, 0b011111111); } Test(PPU_write, oamaddh_data_full) { Init() - snes._bus->write(0x2103, 0b11111111); + snes.bus->write(0x2103, 0b11111111); cr_assert_eq(snes.ppu->_registers._oamadd.objPriorityActivationBit, true); cr_assert_eq(snes.ppu->_registers._oamadd.oamAddress, 0b100000000); } @@ -105,8 +105,8 @@ Test(PPU_write, oamaddh_data_full) Test(PPU_write, oamaddlh_data_full) { Init() - snes._bus->write(0x2102, 0b11111111); - snes._bus->write(0x2103, 0b11111111); + snes.bus->write(0x2102, 0b11111111); + snes.bus->write(0x2103, 0b11111111); cr_assert_eq(snes.ppu->_registers._oamadd.objPriorityActivationBit, true); cr_assert_eq(snes.ppu->_registers._oamadd.oamAddress, 0b111111111); } @@ -114,8 +114,8 @@ Test(PPU_write, oamaddlh_data_full) Test(PPU_write, oamaddlh_data_full_priorityBit_off) { Init() - snes._bus->write(0x2102, 0b11111111); - snes._bus->write(0x2103, 0b01111111); + snes.bus->write(0x2102, 0b11111111); + snes.bus->write(0x2103, 0b01111111); cr_assert_eq(snes.ppu->_registers._oamadd.objPriorityActivationBit, false); cr_assert_eq(snes.ppu->_registers._oamadd.oamAddress, 0b111111111); } @@ -123,8 +123,8 @@ Test(PPU_write, oamaddlh_data_full_priorityBit_off) Test(PPU_write, oamaddlh_oamAdress_11_priorityBit_on) { Init() - snes._bus->write(0x2102, 0b00001011); - snes._bus->write(0x2103, 0b10011100); + snes.bus->write(0x2102, 0b00001011); + snes.bus->write(0x2103, 0b10011100); cr_assert_eq(snes.ppu->_registers._oamadd.objPriorityActivationBit, true); cr_assert_eq(snes.ppu->_registers._oamadd.oamAddress, 11); } @@ -132,7 +132,7 @@ Test(PPU_write, oamaddlh_oamAdress_11_priorityBit_on) Test(PPU_write, bgmode_data_full) { Init() - snes._bus->write(0x2105, 0b11111111); + snes.bus->write(0x2105, 0b11111111); 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); @@ -144,7 +144,7 @@ Test(PPU_write, bgmode_data_full) Test(PPU_write, bgmode_bgmode_5_and_bg24_on) { Init() - snes._bus->write(0x2105, 0b10100101); + snes.bus->write(0x2105, 0b10100101); 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); @@ -156,7 +156,7 @@ Test(PPU_write, bgmode_bgmode_5_and_bg24_on) Test(PPU_write, mosaic_data_full) { Init() - snes._bus->write(0x2106, 0b11111111); + snes.bus->write(0x2106, 0b11111111); 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); @@ -167,7 +167,7 @@ Test(PPU_write, mosaic_data_full) Test(PPU_write, mosaic_affectbg23_w_1x1_size) { Init() - snes._bus->write(0x2106, 0b00000110); + snes.bus->write(0x2106, 0b00000110); 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); @@ -178,7 +178,7 @@ Test(PPU_write, mosaic_affectbg23_w_1x1_size) Test(PPU_write, mosaic_affectbg14_w_2x2_size) { Init() - snes._bus->write(0x2106, 0b00101001); + snes.bus->write(0x2106, 0b00101001); 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); @@ -189,7 +189,7 @@ Test(PPU_write, mosaic_affectbg14_w_2x2_size) Test(PPU_write, bg1sc_data_full) { Init() - snes._bus->write(0x2107, 0b11111111); + snes.bus->write(0x2107, 0b11111111); 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); @@ -198,7 +198,7 @@ Test(PPU_write, bg1sc_data_full) Test(PPU_write, bg2sc_data_full) { Init() - snes._bus->write(0x2108, 0b11111111); + snes.bus->write(0x2108, 0b11111111); 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); @@ -207,7 +207,7 @@ Test(PPU_write, bg2sc_data_full) Test(PPU_write, bg3sc_data_full) { Init() - snes._bus->write(0x2109, 0b11111111); + snes.bus->write(0x2109, 0b11111111); 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); @@ -216,7 +216,7 @@ Test(PPU_write, bg3sc_data_full) Test(PPU_write, bg4sc_data_full) { Init() - snes._bus->write(0x210A, 0b11111111); + snes.bus->write(0x210A, 0b11111111); 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); @@ -225,7 +225,7 @@ Test(PPU_write, bg4sc_data_full) Test(PPU_write, bg4sc_data_null) { Init() - snes._bus->write(0x210A, 0b00000000); + snes.bus->write(0x210A, 0b00000000); 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); @@ -234,7 +234,7 @@ Test(PPU_write, bg4sc_data_null) Test(PPU_write, bg4sc_horizontal_off_vertical_on_random_tilemapAdress) { Init() - snes._bus->write(0x210A, 0b11000110); + snes.bus->write(0x210A, 0b11000110); 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); @@ -243,7 +243,7 @@ Test(PPU_write, bg4sc_horizontal_off_vertical_on_random_tilemapAdress) Test(PPU_write, bg12nba_data_full) { Init() - snes._bus->write(0x210B, 0b11111111); + snes.bus->write(0x210B, 0b11111111); cr_assert_eq(snes.ppu->_registers._bgnba[0].baseAddressBg1a3, 0b1111); cr_assert_eq(snes.ppu->_registers._bgnba[0].baseAddressBg2a4, 0b1111); } @@ -251,7 +251,7 @@ Test(PPU_write, bg12nba_data_full) Test(PPU_write, bg34nba_data_full) { Init() - snes._bus->write(0x210C, 0b11111111); + snes.bus->write(0x210C, 0b11111111); cr_assert_eq(snes.ppu->_registers._bgnba[1].baseAddressBg1a3, 0b1111); cr_assert_eq(snes.ppu->_registers._bgnba[1].baseAddressBg2a4, 0b1111); } @@ -259,7 +259,7 @@ Test(PPU_write, bg34nba_data_full) Test(PPU_write, bg12nba_data_random_data) { Init() - snes._bus->write(0x210B, 0b10101010); + snes.bus->write(0x210B, 0b10101010); cr_assert_eq(snes.ppu->_registers._bgnba[0].baseAddressBg1a3, 0b1010); cr_assert_eq(snes.ppu->_registers._bgnba[0].baseAddressBg2a4, 0b1010); } \ No newline at end of file diff --git a/tests/PPU/testPpuWriteFromVmain.cpp b/tests/PPU/testPpuWriteFromVmain.cpp index df4f295..197aed0 100644 --- a/tests/PPU/testPpuWriteFromVmain.cpp +++ b/tests/PPU/testPpuWriteFromVmain.cpp @@ -14,7 +14,7 @@ using namespace ComSquare; Test(PPU_write_2, vmain_data_full) { Init() - snes._bus->write(0x2115, 0b11111111); + snes.bus->write(0x2115, 0b11111111); 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); @@ -23,7 +23,7 @@ Test(PPU_write_2, vmain_data_full) Test(PPU_write_2, vmain_incrementmode_off_false_else_full) { Init() - snes._bus->write(0x2115, 0b01111111); + snes.bus->write(0x2115, 0b01111111); 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); @@ -32,7 +32,7 @@ Test(PPU_write_2, vmain_incrementmode_off_false_else_full) Test(PPU_write_2, vmain_addressremaping_null_else_full) { Init() - snes._bus->write(0x2115, 0b11110011); + snes.bus->write(0x2115, 0b11110011); 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); @@ -41,7 +41,7 @@ Test(PPU_write_2, vmain_addressremaping_null_else_full) Test(PPU_write_2, vmain_incrementamount_null_else_full) { Init() - snes._bus->write(0x2115, 0b11111100); + snes.bus->write(0x2115, 0b11111100); 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); @@ -50,39 +50,39 @@ Test(PPU_write_2, vmain_incrementamount_null_else_full) Test(PPU_write_2, vmadd_full_data) { Init() - snes._bus->write(0x2116, 0b11111111); - snes._bus->write(0x2117, 0b11111111); + snes.bus->write(0x2116, 0b11111111); + snes.bus->write(0x2117, 0b11111111); cr_assert_eq(snes.ppu->_registers._vmadd.vmadd, 0b1111111111111111); } Test(PPU_write_2, vmadd_full_high_byte_null) { Init() - snes._bus->write(0x2116, 0b11111111); - snes._bus->write(0x2117, 0b00000000); + snes.bus->write(0x2116, 0b11111111); + snes.bus->write(0x2117, 0b00000000); cr_assert_eq(snes.ppu->_registers._vmadd.vmadd, 0b0000000011111111); } Test(PPU_write_2, vmdata_full_data) { Init() - snes._bus->write(0x2118, 0b11111111); - snes._bus->write(0x2119, 0b11111111); + snes.bus->write(0x2118, 0b11111111); + snes.bus->write(0x2119, 0b11111111); cr_assert_eq(snes.ppu->_registers._vmdata.vmdata, 0b1111111111111111); } Test(PPU_write_2, vmdata_full_high_byte_null) { Init() - snes._bus->write(0x2118, 0b11111111); - snes._bus->write(0x2119, 0b00000000); + snes.bus->write(0x2118, 0b11111111); + snes.bus->write(0x2119, 0b00000000); cr_assert_eq(snes.ppu->_registers._vmdata.vmdata, 0b0000000011111111); } Test(PPU_write_2, cgadd_full_high_byte_null) { Init() - snes._bus->write(0x2121, 0b11111111); + snes.bus->write(0x2121, 0b11111111); cr_assert_eq(snes.ppu->_registers._cgadd, 0b11111111); cr_assert_eq(snes.ppu->_registers._isLowByte, true); } @@ -90,12 +90,12 @@ Test(PPU_write_2, cgadd_full_high_byte_null) Test(PPU_write_2, cgdata_data_full) { Init() - snes._bus->write(0x2121, 0x0); - snes._bus->write(0x2122, 0b11111111); + snes.bus->write(0x2121, 0x0); + snes.bus->write(0x2122, 0b11111111); 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); + snes.bus->write(0x2122, 0b11111000); 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 + 2); @@ -104,7 +104,7 @@ Test(PPU_write_2, cgdata_data_full) Test(PPU_write_2, m7sel_data_full) { Init() - snes._bus->write(0x211A, 0b11111111); + snes.bus->write(0x211A, 0b11111111); 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); @@ -114,7 +114,7 @@ Test(PPU_write_2, m7sel_data_full) Test(PPU_write_2, m7sel_data_actual) { Init() - snes._bus->write(0x211A, 0b01111101); + snes.bus->write(0x211A, 0b01111101); 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); @@ -124,7 +124,7 @@ Test(PPU_write_2, m7sel_data_actual) Test(PPU_write_2, w12sel_data_full) { Init() - snes._bus->write(0x2123, 0b11111111); + snes.bus->write(0x2123, 0b11111111); 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); @@ -138,7 +138,7 @@ Test(PPU_write_2, w12sel_data_full) Test(PPU_write_2, w34sel_data_full) { Init() - snes._bus->write(0x2124, 0b10101010); + snes.bus->write(0x2124, 0b10101010); 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); @@ -152,7 +152,7 @@ Test(PPU_write_2, w34sel_data_full) Test(PPU_write_2, wobjsel_data_full) { Init() - snes._bus->write(0x2125, 0b10110001); + snes.bus->write(0x2125, 0b10110001); 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); @@ -166,7 +166,7 @@ Test(PPU_write_2, wobjsel_data_full) Test(PPU_write_2, wbglog_data_full) { Init() - snes._bus->write(0x212A, 0b10110001); + snes.bus->write(0x212A, 0b10110001); 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); @@ -176,7 +176,7 @@ Test(PPU_write_2, wbglog_data_full) Test(PPU_write_2, wobjlog_data_full) { Init() - snes._bus->write(0x212B, 0b10110001); + snes.bus->write(0x212B, 0b10110001); cr_assert_eq(snes.ppu->_registers._wobjlog.maskLogicObj, 0b01); cr_assert_eq(snes.ppu->_registers._wobjlog.maskLogicColor, 0b00); } @@ -184,7 +184,7 @@ Test(PPU_write_2, wobjlog_data_full) Test(PPU_write_2, tm_data_full) { Init() - snes._bus->write(0x212C, 0b10110001); + snes.bus->write(0x212C, 0b10110001); 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); @@ -195,7 +195,7 @@ Test(PPU_write_2, tm_data_full) Test(PPU_write_2, ts_data_full) { Init() - snes._bus->write(0x212D, 0b10101110); + snes.bus->write(0x212D, 0b10101110); 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); @@ -206,7 +206,7 @@ Test(PPU_write_2, ts_data_full) Test(PPU_write_2, tmw_data_full) { Init() - snes._bus->write(0x212E, 0b10101110); + snes.bus->write(0x212E, 0b10101110); 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); @@ -217,7 +217,7 @@ Test(PPU_write_2, tmw_data_full) Test(PPU_write_2, tsw_data_full) { Init() - snes._bus->write(0x212F, 0b10100011); + snes.bus->write(0x212F, 0b10100011); 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); @@ -228,7 +228,7 @@ Test(PPU_write_2, tsw_data_full) Test(PPU_write_2, cgwsel_data_full) { Init() - snes._bus->write(0x2130, 0b10111001); + snes.bus->write(0x2130, 0b10111001); 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); @@ -238,7 +238,7 @@ Test(PPU_write_2, cgwsel_data_full) Test(PPU_write_2, cgadsub_data_full) { Init() - snes._bus->write(0x2131, 0b10111001); + snes.bus->write(0x2131, 0b10111001); 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); @@ -252,7 +252,7 @@ Test(PPU_write_2, cgadsub_data_full) Test(PPU_write_2, coldata_data_full) { Init() - snes._bus->write(0x2132, 0b10111001); + snes.bus->write(0x2132, 0b10111001); 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); @@ -262,7 +262,7 @@ Test(PPU_write_2, coldata_data_full) Test(PPU_write_2, setini_data_full) { Init() - snes._bus->write(0x2133, 0b10111001); + snes.bus->write(0x2133, 0b10111001); 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); @@ -274,14 +274,14 @@ Test(PPU_write_2, setini_data_full) Test(PPU_write_2, m7a_data_full) { Init() - snes._bus->write(0x211B, 0b10111001); + 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); + snes.bus->write(0x211D, 0b10111001); + snes.bus->write(0x211D, 0b11111111); cr_assert_eq(snes.ppu->_registers._m7[2].m7, 0b1011100111111111); } \ No newline at end of file diff --git a/tests/testMemoryBus.cpp b/tests/testMemoryBus.cpp index 81600be..d41788a 100644 --- a/tests/testMemoryBus.cpp +++ b/tests/testMemoryBus.cpp @@ -29,7 +29,7 @@ Test(BusAccessor, GetWramStart) Init() std::shared_ptr accessor = nullptr; - accessor = snes._bus->getAccessor(0x7E0000); + accessor = snes.bus->getAccessor(0x7E0000); cr_assert_eq(accessor.get(), snes.wram.get()); } @@ -38,7 +38,7 @@ Test(BusAccessor, GetWramEnd) Init() std::shared_ptr accessor = nullptr; - accessor = snes._bus->getAccessor(0x7FFFFF); + accessor = snes.bus->getAccessor(0x7FFFFF); cr_assert_eq(accessor.get(), snes.wram.get()); } @@ -47,7 +47,7 @@ Test(BusAccessor, GetWramMirror) Init() std::shared_ptr accessor = nullptr; - accessor = std::static_pointer_cast(snes._bus->getAccessor(0x2F11FF)); + accessor = std::static_pointer_cast(snes.bus->getAccessor(0x2F11FF)); cr_assert_neq(accessor, nullptr); cr_assert_eq(accessor->_initial.get(), snes.wram.get()); } @@ -57,7 +57,7 @@ Test(BusAccessor, GetWramMirror2) Init() std::shared_ptr accessor = nullptr; - accessor = std::static_pointer_cast(snes._bus->getAccessor(0x100000)); + accessor = std::static_pointer_cast(snes.bus->getAccessor(0x100000)); cr_assert_neq(accessor, nullptr); cr_assert_eq(accessor->_initial.get(), snes.wram.get()); } @@ -67,7 +67,7 @@ Test(BusAccessor, GetWramMirror3) Init() std::shared_ptr accessor = nullptr; - accessor = std::static_pointer_cast(snes._bus->getAccessor(0x1010)); + accessor = std::static_pointer_cast(snes.bus->getAccessor(0x1010)); cr_assert_neq(accessor, nullptr); cr_assert_eq(accessor->_initial.get(), snes.wram.get()); } @@ -75,7 +75,7 @@ Test(BusAccessor, GetWramMirror3) Test(BusAccessor, GetOpenBus) { Init() - std::shared_ptr accessor = snes._bus->getAccessor(0x897654); + std::shared_ptr accessor = snes.bus->getAccessor(0x897654); cr_assert_eq(accessor.get(), nullptr); } @@ -84,7 +84,7 @@ Test(BusAccessor, GetSramStart) Init() std::shared_ptr accessor = nullptr; - accessor = std::static_pointer_cast(snes._bus->getAccessor(0x700000)); + accessor = std::static_pointer_cast(snes.bus->getAccessor(0x700000)); cr_assert_eq(accessor->_initial.get(), snes.sram.get()); } @@ -93,7 +93,7 @@ Test(BusAccessor, GetSramEnd) Init() std::shared_ptr accessor = nullptr; - accessor = std::static_pointer_cast(snes._bus->getAccessor(0x7D7FFF)); + accessor = std::static_pointer_cast(snes.bus->getAccessor(0x7D7FFF)); cr_assert_eq(accessor->_initial.get(), snes.sram.get()); } @@ -102,7 +102,7 @@ Test(BusAccessor, GetSramMirror) Init() std::shared_ptr accessor = nullptr; - accessor = std::static_pointer_cast(snes._bus->getAccessor(0xF00123)); + accessor = std::static_pointer_cast(snes.bus->getAccessor(0xF00123)); cr_assert_eq(accessor.get(), snes.sram.get()); } @@ -111,7 +111,7 @@ Test(BusAccessor, GetAPUStart) Init() std::shared_ptr accessor = nullptr; - accessor = snes._bus->getAccessor(0x002140); + accessor = snes.bus->getAccessor(0x002140); cr_assert_eq(accessor.get(), snes.apu.get()); } @@ -120,7 +120,7 @@ Test(BusAccessor, GetAPUEnd) Init() std::shared_ptr accessor = nullptr; - accessor = snes._bus->getAccessor(0x002143); + accessor = snes.bus->getAccessor(0x002143); cr_assert_eq(accessor.get(), snes.apu.get()); } @@ -129,7 +129,7 @@ Test(BusAccessor, GetAPUMirror) Init() std::shared_ptr accessor = nullptr; - accessor = std::static_pointer_cast(snes._bus->getAccessor(0xAB2143)); + accessor = std::static_pointer_cast(snes.bus->getAccessor(0xAB2143)); cr_assert_eq(accessor->_initial.get(), snes.apu.get()); } @@ -138,7 +138,7 @@ Test(BusAccessor, GetAPUMirrorFirstHalf) Init() std::shared_ptr accessor = nullptr; - accessor = std::static_pointer_cast(snes._bus->getAccessor(0x052143)); + accessor = std::static_pointer_cast(snes.bus->getAccessor(0x052143)); cr_assert_eq(accessor->_initial.get(), snes.apu.get()); } @@ -147,7 +147,7 @@ Test(BusAccessor, GetCPUStart) Init() std::shared_ptr accessor = nullptr; - accessor = snes._bus->getAccessor(0x004200); + accessor = snes.bus->getAccessor(0x004200); cr_assert_eq(accessor.get(), snes.cpu.get()); } @@ -156,7 +156,7 @@ Test(BusAccessor, GetCPUEnd) Init() std::shared_ptr accessor = nullptr; - accessor = snes._bus->getAccessor(0x00421F); + accessor = snes.bus->getAccessor(0x00421F); cr_assert_eq(accessor.get(), snes.cpu.get()); } @@ -165,7 +165,7 @@ Test(BusAccessor, GetPPU1Start) Init() std::shared_ptr accessor = nullptr; - accessor = snes._bus->getAccessor(0x00213E); + accessor = snes.bus->getAccessor(0x00213E); cr_assert_eq(accessor.get(), snes.ppu.get()); } @@ -174,7 +174,7 @@ Test(BusAccessor, GetPPU1End) Init() std::shared_ptr accessor = nullptr; - accessor = snes._bus->getAccessor(0x00213F); + accessor = snes.bus->getAccessor(0x00213F); cr_assert_eq(accessor.get(), snes.ppu.get()); } @@ -183,7 +183,7 @@ Test(BusAccessor, GetCPU) Init() std::shared_ptr accessor = nullptr; - accessor = snes._bus->getAccessor(0x004212); + accessor = snes.bus->getAccessor(0x004212); cr_assert_eq(accessor.get(), snes.cpu.get()); } @@ -192,7 +192,7 @@ Test(BusAccessor, GetPPU1Mirror) Init() std::shared_ptr accessor = nullptr; - accessor = std::static_pointer_cast(snes._bus->getAccessor(0x80213F)); + accessor = std::static_pointer_cast(snes.bus->getAccessor(0x80213F)); cr_assert_eq(accessor->_initial.get(), snes.ppu.get()); } @@ -201,7 +201,7 @@ Test(BusAccessor, GetCPU2Mirror) Init() std::shared_ptr accessor = nullptr; - accessor = std::static_pointer_cast(snes._bus->getAccessor(0x804212)); + accessor = std::static_pointer_cast(snes.bus->getAccessor(0x804212)); cr_assert_eq(accessor->_initial.get(), snes.cpu.get()); } @@ -210,7 +210,7 @@ Test(BusAccessor, GetRomStart) Init() std::shared_ptr accessor = nullptr; - accessor = snes._bus->getAccessor(0x808000); + accessor = snes.bus->getAccessor(0x808000); cr_assert_eq(accessor.get(), snes.cartridge.get()); } @@ -219,7 +219,7 @@ Test(BusAccessor, GetRomEnd) Init() std::shared_ptr accessor = nullptr; - accessor = snes._bus->getAccessor(0xFFFFFF); + accessor = snes.bus->getAccessor(0xFFFFFF); cr_assert_eq(accessor.get(), snes.cartridge.get()); } @@ -228,7 +228,7 @@ Test(BusAccessor, GetRomMirror) Init() std::shared_ptr accessor = nullptr; - accessor = std::static_pointer_cast(snes._bus->getAccessor(0x694200)); + accessor = std::static_pointer_cast(snes.bus->getAccessor(0x694200)); cr_assert_eq(accessor->_initial.get(), snes.cartridge.get()); } @@ -237,7 +237,7 @@ Test(BusAccessor, GetRomMirror2) Init() std::shared_ptr accessor = nullptr; - accessor = std::static_pointer_cast(snes._bus->getAccessor(0x01FEDC)); + accessor = std::static_pointer_cast(snes.bus->getAccessor(0x01FEDC)); cr_assert_eq(accessor->_initial.get(), snes.cartridge.get()); } @@ -246,7 +246,7 @@ Test(BusAccessor, GetRomMirror3) Init() std::shared_ptr accessor = nullptr; - accessor = std::static_pointer_cast(snes._bus->getAccessor(0xDE1248)); + accessor = std::static_pointer_cast(snes.bus->getAccessor(0xDE1248)); cr_assert_eq(accessor->_initial.get(), snes.cartridge.get()); } @@ -255,7 +255,7 @@ Test(BusAccessor, Get0x0) Init() std::shared_ptr accessor = nullptr; - accessor = std::static_pointer_cast(snes._bus->getAccessor(0x0)); + accessor = std::static_pointer_cast(snes.bus->getAccessor(0x0)); cr_assert_eq(accessor->_initial.get(), snes.wram.get()); } @@ -271,7 +271,7 @@ Test(BusRead, Read0x0) uint8_t data; snes.wram->_data[0] = 123; - data = snes._bus->read(0x0); + data = snes.bus->read(0x0); cr_assert_eq(data, 123); } @@ -280,8 +280,8 @@ Test(BusRead, ReadOutside, .init = cr_redirect_stdout) Init() uint8_t data; - snes._bus->_openBus = 123; - data = snes._bus->read(0x002000); + snes.bus->_openBus = 123; + data = snes.bus->read(0x002000); cr_assert_eq(data, 123); } @@ -290,8 +290,8 @@ Test(BusRead, ReadOutside2, .init = cr_redirect_stdout) Init() uint8_t data; - snes._bus->_openBus = 123; - data = snes._bus->read(0xBF2FFF); + snes.bus->_openBus = 123; + data = snes.bus->read(0xBF2FFF); cr_assert_eq(data, 123); } @@ -300,8 +300,8 @@ Test(BusRead, ReadOutside3, .init = cr_redirect_stdout) Init() uint8_t data; - snes._bus->_openBus = 123; - data = snes._bus->read(0x127654); + snes.bus->_openBus = 123; + data = snes.bus->read(0x127654); cr_assert_eq(data, 123); } @@ -311,7 +311,7 @@ Test(BusRead, ReadAPU) uint8_t data; snes.apu->_registers.port0 = 123; - data = snes._bus->read(0x002140); + data = snes.bus->read(0x002140); cr_assert_eq(data, 123); } @@ -321,7 +321,7 @@ Test(BusRead, ReadROM) uint8_t data; snes.cartridge->_data[5] = 123; - data = snes._bus->read(0x808005); + data = snes.bus->read(0x808005); cr_assert_eq(data, 123); } @@ -331,7 +331,7 @@ Test(BusRead, ReadROMStart) uint8_t data; snes.cartridge->_data[0] = 123; - data = snes._bus->read(0x808000); + data = snes.bus->read(0x808000); cr_assert_eq(data, 123); } @@ -341,7 +341,7 @@ Test(BusRead, ReadCPU) uint8_t data; snes.cpu->_internalRegisters.wrio = 123; - data = snes._bus->read(0x004201); + data = snes.bus->read(0x004201); cr_assert_eq(data, 123); } @@ -351,7 +351,7 @@ Test(BusRead, ReadPPU) uint8_t data; snes.ppu->_registers._mpy.mpyl = 123; - data = snes._bus->read(0x002134); + data = snes.bus->read(0x002134); cr_assert_eq(data, 123); } @@ -361,7 +361,7 @@ Test(BusRead, ReadSRAM) uint8_t data; snes.sram->_data[7] = 123; - data = snes._bus->read(0x700007); + data = snes.bus->read(0x700007); cr_assert_eq(data, 123); } @@ -371,7 +371,7 @@ Test(BusRead, ReadWRAM) uint8_t data; snes.wram->_data[3] = 123; - data = snes._bus->read(0x7E0003); + data = snes.bus->read(0x7E0003); cr_assert_eq(data, 123); } @@ -381,7 +381,7 @@ Test(BusRead, ReadWRAM2) uint8_t data; snes.wram->_data[0x1010] = 123; - data = snes._bus->read(0x7E1010); + data = snes.bus->read(0x7E1010); cr_assert_eq(data, 123); } @@ -392,7 +392,7 @@ Test(BusRead, ReadWRAMMirror) uint8_t data; snes.wram->_data[0x1010] = 123; - data = snes._bus->read(0x1010); + data = snes.bus->read(0x1010); cr_assert_eq(data, 123); } @@ -407,7 +407,7 @@ Test(BusWrite, Write0x0) Init() try { - snes._bus->write(0x0, 123); + snes.bus->write(0x0, 123); } catch (std::exception &ex) { std::cout << ex.what() << std::endl; } @@ -419,7 +419,7 @@ Test(BusWrite, WriteAPU) { Init() - snes._bus->write(0x002143, 123); + snes.bus->write(0x002143, 123); cr_assert_eq(snes.apu->_registers.port3, 123); } @@ -427,7 +427,7 @@ Test(BusWrite, WritePPU) { Init() - snes._bus->write(0x002106, 123); + snes.bus->write(0x002106, 123); cr_assert_eq(snes.ppu->_registers._mosaic.raw, 123); } @@ -435,7 +435,7 @@ Test(BusWrite, WriteCPU) { Init() - snes._bus->write(0x00420D, 123); + snes.bus->write(0x00420D, 123); cr_assert_eq(snes.cpu->_internalRegisters.memsel, 123); } @@ -443,14 +443,14 @@ Test(BusWrite, WriteROM) { Init() - cr_assert_throw(snes._bus->write(0x808005, 123), InvalidAction); + cr_assert_throw(snes.bus->write(0x808005, 123), InvalidAction); } Test(BusWrite, WriteWRAM) { Init() - snes._bus->write(0x7E0002, 123); + snes.bus->write(0x7E0002, 123); cr_assert_eq(snes.wram->_data[2], 123); } @@ -458,6 +458,6 @@ Test(BusWrite, WriteSRAM) { Init() - snes._bus->write(0x700009, 123); + snes.bus->write(0x700009, 123); cr_assert_eq(snes.sram->_data[9], 123); } \ No newline at end of file diff --git a/ui/registersView.ui b/ui/registersView.ui index 44e26db..4f467e3 100644 --- a/ui/registersView.ui +++ b/ui/registersView.ui @@ -59,7 +59,91 @@ - + + + 0 + + + + 1 + + + + + + + + + + 2 + + + + + + + + + + 3 + + + + + + + + + + 4 + + + + + + + + + + 5 + + + + + + + + + + 6 + + + + + + + + + + 7 + + + + + + + + + + 8 + + + + + + + +