Creating the structures of the register viewer

This commit is contained in:
Anonymus Raccoon
2020-05-29 18:52:58 +02:00
parent 3fb36e1be3
commit c38b100c14
13 changed files with 431 additions and 151 deletions

View File

@@ -12,6 +12,7 @@
#include "../Memory/AMemory.hpp" #include "../Memory/AMemory.hpp"
#include "Instruction.hpp" #include "Instruction.hpp"
#include "DMA/DMA.hpp" #include "DMA/DMA.hpp"
#include "../Debugger/RegisterViewer.hpp"
namespace ComSquare::CPU namespace ComSquare::CPU
{ {
@@ -199,6 +200,7 @@ namespace ComSquare::CPU
//! @brief The cartridge header (stored for interrupt vectors.. //! @brief The cartridge header (stored for interrupt vectors..
Cartridge::Header &_cartridgeHeader; Cartridge::Header &_cartridgeHeader;
//! @brief DMA channels witch are mapped to the bus.
std::array<DMA, 8> _dmaChannels; std::array<DMA, 8> _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). //! @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. //! @brief Change the memory bus used by the CPU.
virtual void setMemoryBus(std::shared_ptr<Memory::MemoryBus> bus); virtual void setMemoryBus(std::shared_ptr<Memory::MemoryBus> bus);
#ifdef DEBUGGER_ENABLED
friend Debugger::RegisterViewer;
#endif
}; };
} }

View File

@@ -9,6 +9,7 @@
#include <memory> #include <memory>
#include "../../Models/Int24.hpp" #include "../../Models/Int24.hpp"
#include "../../Memory/MemoryBus.hpp" #include "../../Memory/MemoryBus.hpp"
#include "../../Debugger/RegisterViewer.hpp"
namespace ComSquare::CPU namespace ComSquare::CPU
{ {
@@ -98,6 +99,10 @@ namespace ComSquare::CPU
DMA(const DMA &) = default; DMA(const DMA &) = default;
DMA &operator=(const DMA &) = default; DMA &operator=(const DMA &) = default;
~DMA() = default; ~DMA() = default;
#ifdef DEBUGGER_ENABLED
friend Debugger::RegisterViewer;
#endif
}; };
} }

View File

@@ -4,6 +4,7 @@
#include "RegisterViewer.hpp" #include "RegisterViewer.hpp"
#include "../SNES.hpp" #include "../SNES.hpp"
#include "../Utility/Utility.hpp"
namespace ComSquare::Debugger namespace ComSquare::Debugger
{ {
@@ -17,9 +18,22 @@ namespace ComSquare::Debugger
this->_window->setAttribute(Qt::WA_DeleteOnClose); this->_window->setAttribute(Qt::WA_DeleteOnClose);
this->_ui.setupUi(this->_window); this->_ui.setupUi(this->_window);
this->_setupUi();
this->_window->show(); 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() void RegisterViewer::focus()
{ {
this->_window->activateWindow(); this->_window->activateWindow();
@@ -29,4 +43,94 @@ namespace ComSquare::Debugger
{ {
this->_snes.disableRegisterDebugging(); this->_snes.disableRegisterDebugging();
} }
RegisterViewer::~RegisterViewer()
{
for (auto &model : this->_models)
delete model;
}
Register::Register(uint24_t addr,
const std::string &usedBits,
const std::string &regName,
const std::function<unsigned int(SNES &)> &getValue,
const std::function<void(SNES &, unsigned int)> &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<uint8_t>(reg.get(this->_snes))).c_str());
case SixteenBits:
return QString(Utility::to_hex(static_cast<uint16_t>(reg.get(this->_snes))).c_str());
case TwentyFourBits:
return QString(Utility::to_hex(static_cast<uint24_t>(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();
}
} }

View File

@@ -8,6 +8,41 @@
#include <QtCore/QObject> #include <QtCore/QObject>
#include "ClosableWindow.hpp" #include "ClosableWindow.hpp"
#include "../../ui/ui_registersView.h" #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<ComSquare::Debugger::Register> _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 namespace ComSquare
{ {
@@ -21,9 +56,14 @@ namespace ComSquare
ClosableWindow<RegisterViewer> *_window; ClosableWindow<RegisterViewer> *_window;
//! @brief A widget that contain the whole UI. //! @brief A widget that contain the whole UI.
Ui::RegistersView _ui; Ui::RegistersView _ui;
//! @brief The list of models used by different panels.
std::vector<RegistersViewerModel *> _models;
//! @brief The snes instance to read/write to DMA channels. //! @brief The snes instance to read/write to DMA channels.
SNES &_snes; SNES &_snes;
//! @brief Set models to the different tables and initialize them.
void _setupUi();
public: public:
//! @brief Called when the window is closed. Turn off the debugger. //! @brief Called when the window is closed. Turn off the debugger.
void disableDebugger(); void disableDebugger();
@@ -32,12 +72,47 @@ namespace ComSquare
RegisterViewer( RegisterViewer(
const RegisterViewer &) = delete; const RegisterViewer &) = delete;
RegisterViewer &operator=(const RegisterViewer &) = delete; RegisterViewer &operator=(const RegisterViewer &) = delete;
~RegisterViewer() =default; ~RegisterViewer();
//! @brief Focus the debugger's window. //! @brief Focus the debugger's window.
void focus(); 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 &regName,
const std::function<unsigned int(SNES &)> &getValue,
const std::function<void(SNES &, unsigned int)> &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<unsigned(SNES &)> get;
//! @brief How to set this value.
std::function<void(SNES &, unsigned)> set;
//! @brief How this value should be displayed/asked for input.
RegisterType type;
};
}
} }
#endif //COMSQUARE_REGISTERVIEWER_HPP #endif //COMSQUARE_REGISTERVIEWER_HPP

View File

@@ -15,16 +15,16 @@
namespace ComSquare namespace ComSquare
{ {
SNES::SNES(const std::string &romPath, Renderer::IRenderer &renderer) : SNES::SNES(const std::string &romPath, Renderer::IRenderer &renderer) :
_bus(std::make_shared<Memory::MemoryBus>()), bus(std::make_shared<Memory::MemoryBus>()),
cartridge(new Cartridge::Cartridge(romPath)), cartridge(new Cartridge::Cartridge(romPath)),
wram(new Ram::Ram(16384, WRam, "WRam")), wram(new Ram::Ram(16384, WRam, "WRam")),
sram(new Ram::Ram(this->cartridge->header.sramSize, SRam, "SRam")), sram(new Ram::Ram(this->cartridge->header.sramSize, SRam, "SRam")),
apuRam(new APU::MemoryMap()), 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)), ppu(new PPU::PPU(renderer)),
apu(new APU::APU(this->apuRam)) apu(new APU::APU(this->apuRam))
{ {
this->_bus->mapComponents(*this); this->bus->mapComponents(*this);
} }
void SNES::update() void SNES::update()
@@ -44,7 +44,7 @@ namespace ComSquare
cpuDebug->pause(); cpuDebug->pause();
} else { } else {
this->cpu = std::make_shared<Debugger::CPUDebug>(*this->cpu, *this); this->cpu = std::make_shared<Debugger::CPUDebug>(*this->cpu, *this);
this->_bus->mapComponents(*this); this->bus->mapComponents(*this);
} }
#else #else
std::cerr << "Debugging features are not enabled. You can't enable the debugger." << std::endl; std::cerr << "Debugging features are not enabled. You can't enable the debugger." << std::endl;
@@ -55,7 +55,7 @@ namespace ComSquare
void SNES::disableCPUDebugging() void SNES::disableCPUDebugging()
{ {
this->cpu = std::make_shared<CPU::CPU>(*this->cpu); this->cpu = std::make_shared<CPU::CPU>(*this->cpu);
this->_bus->mapComponents(*this); this->bus->mapComponents(*this);
} }
void SNES::enableRamViewer() void SNES::enableRamViewer()
@@ -64,7 +64,7 @@ namespace ComSquare
if (this->_ramViewer) if (this->_ramViewer)
this->_ramViewer->focus(); this->_ramViewer->focus();
else else
this->_ramViewer = std::make_unique<Debugger::MemoryViewer>(*this, *this->_bus); this->_ramViewer = std::make_unique<Debugger::MemoryViewer>(*this, *this->bus);
#endif #endif
} }
@@ -99,7 +99,7 @@ namespace ComSquare
std::static_pointer_cast<Debugger::APUDebug>(this->apu)->focus(); std::static_pointer_cast<Debugger::APUDebug>(this->apu)->focus();
else { else {
this->apu = std::make_shared<Debugger::APUDebug>(*this->apu, *this); this->apu = std::make_shared<Debugger::APUDebug>(*this->apu, *this);
this->_bus->mapComponents(*this); this->bus->mapComponents(*this);
} }
#else #else
std::cerr << "Debugging features are not enabled. You can't enable the debugger." << std::endl; std::cerr << "Debugging features are not enabled. You can't enable the debugger." << std::endl;
@@ -109,18 +109,18 @@ namespace ComSquare
void SNES::disableAPUDebugging() void SNES::disableAPUDebugging()
{ {
this->apu = std::make_shared<APU::APU>(*this->apu); this->apu = std::make_shared<APU::APU>(*this->apu);
this->_bus->mapComponents(*this); this->bus->mapComponents(*this);
} }
void SNES::enableMemoryBusDebugging() void SNES::enableMemoryBusDebugging()
{ {
#ifdef DEBUGGER_ENABLED #ifdef DEBUGGER_ENABLED
if (this->_bus->isDebugger()) if (this->bus->isDebugger())
std::static_pointer_cast<Debugger::MemoryBusDebug>(this->_bus)->focus(); std::static_pointer_cast<Debugger::MemoryBusDebug>(this->bus)->focus();
else else
{ {
this->_bus = std::make_shared<Debugger::MemoryBusDebug>(*this, *this->_bus); this->bus = std::make_shared<Debugger::MemoryBusDebug>(*this, *this->bus);
this->cpu->setMemoryBus(this->_bus); this->cpu->setMemoryBus(this->bus);
} }
#else #else
std::cerr << "Debugging features are not enabled. You can't enable the debugger." << std::endl; std::cerr << "Debugging features are not enabled. You can't enable the debugger." << std::endl;
@@ -130,8 +130,8 @@ namespace ComSquare
void SNES::disableMemoryBusDebugging() void SNES::disableMemoryBusDebugging()
{ {
#ifdef DEBUGGER_ENABLED #ifdef DEBUGGER_ENABLED
this->_bus = std::make_shared<Memory::MemoryBus>(*this->_bus); this->bus = std::make_shared<Memory::MemoryBus>(*this->bus);
this->cpu->setMemoryBus(this->_bus); this->cpu->setMemoryBus(this->bus);
#else #else
std::cerr << "Debugging features are not enabled. You can't enable the debugger." << std::endl; std::cerr << "Debugging features are not enabled. You can't enable the debugger." << std::endl;
#endif #endif

View File

@@ -35,9 +35,10 @@ namespace ComSquare
//! @brief The window that allow the user to view registers. //! @brief The window that allow the user to view registers.
std::unique_ptr<Debugger::RegisterViewer> _registerViewer; std::unique_ptr<Debugger::RegisterViewer> _registerViewer;
#endif #endif
//! @brief The memory bus that map addresses to components.
std::shared_ptr<Memory::MemoryBus> _bus;
public: public:
//! @brief The memory bus that map addresses to components.
std::shared_ptr<Memory::MemoryBus> bus;
//! @brief Cartridge containing instructions (ROM). //! @brief Cartridge containing instructions (ROM).
std::shared_ptr<Cartridge::Cartridge> cartridge; std::shared_ptr<Cartridge::Cartridge> cartridge;
//! @brief Work Ram shared by all the components. //! @brief Work Ram shared by all the components.

View File

@@ -18,11 +18,11 @@ namespace ComSquare::Utility
StandardPrefix 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); std::string to_binary(uint8_t i);

View File

@@ -16,11 +16,12 @@ void usage(char *bin)
std::cout << "ComSquare:" << std::endl std::cout << "ComSquare:" << std::endl
<< "\tUsage: " << bin << " rom_path [options]" << std::endl << "\tUsage: " << bin << " rom_path [options]" << std::endl
<< "Options:" << std::endl << "Options:" << std::endl
<< "\t-c, --cpu: \tEnable the debugger of the CPU." << std::endl << "\t-c, --cpu: \tEnable the debugger of the CPU." << std::endl
<< "\t-m, --memory: \tEnable the memory viewer panel." << std::endl << "\t-m, --memory: \tEnable the memory viewer panel." << std::endl
<< "\t-h, --header: \tShow the header of the cartridge." << 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-b, --bus: \tShow the memory bus's log." << std::endl
<< "\t-g, --cgram: \tShow the palette viewer." << 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) void parseArguments(int argc, char **argv, SNES &snes)
@@ -28,16 +29,17 @@ void parseArguments(int argc, char **argv, SNES &snes)
while (true) { while (true) {
int option_index = 0; int option_index = 0;
static struct option long_options[] = { static struct option long_options[] = {
{"cpu", no_argument, 0, 'c'}, {"cpu", no_argument, 0, 'c'},
{"apu", no_argument, 0, 'a'}, {"apu", no_argument, 0, 'a'},
{"memory", no_argument, 0, 'm'}, {"memory", no_argument, 0, 'm'},
{"header", no_argument, 0, 'h'}, {"header", no_argument, 0, 'h'},
{"bus", no_argument, 0, 'b'}, {"bus", no_argument, 0, 'b'},
{"cgram", no_argument, 0, 'g'}, {"cgram", no_argument, 0, 'g'},
{0, 0, 0, 0} {"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) if (c == -1)
break; break;
switch (c) { switch (c) {
@@ -62,6 +64,9 @@ void parseArguments(int argc, char **argv, SNES &snes)
case 'g': case 'g':
snes.enableCgramDebugging(); snes.enableCgramDebugging();
break; break;
case 'r':
snes.enableRegisterDebugging();
break;
default: default:
break; break;
} }
@@ -70,7 +75,7 @@ void parseArguments(int argc, char **argv, SNES &snes)
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
if (argc < 2) { if (argc < 2 || !strcmp(argv[1], "-h") || !strcmp(argv[1], "--help")) {
usage(argv[0]); usage(argv[0]);
return 1; return 1;
} }

View File

@@ -13,7 +13,7 @@ using namespace ComSquare;
Test(AddrModeInit, LegitBus) Test(AddrModeInit, LegitBus)
{ {
Init() 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) Test(AddrMode, Immediate)

View File

@@ -14,7 +14,7 @@ using namespace ComSquare;
Test(PPU_write, inidisp_data_full_ones) Test(PPU_write, inidisp_data_full_ones)
{ {
Init() 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.fblank, true);
cr_assert_eq(snes.ppu->_registers._inidisp.brightness, 0xF); 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) Test(PPU_write, inidisp_data_full_zeros)
{ {
Init() 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.fblank, false);
cr_assert_eq(snes.ppu->_registers._inidisp.brightness, 0x0); 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) Test(PPU_write, inidisp_data_fBlank_on_brghtness_off)
{ {
Init() 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.fblank, true);
cr_assert_eq(snes.ppu->_registers._inidisp.brightness, 0x0); 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) Test(PPU_write, inidisp_data_fBlank_off_brghtness_max)
{ {
Init() 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.fblank, false);
cr_assert_eq(snes.ppu->_registers._inidisp.brightness, 0xF); 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) Test(PPU_write, inidisp_data_fBlank_off_brghtness_half)
{ {
Init() 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.fblank, false);
cr_assert_eq(snes.ppu->_registers._inidisp.brightness, 0x5); 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) Test(PPU_write, obsel_111_object_size_and_all_null)
{ {
Init() 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.objectSize, 0b111);
cr_assert_eq(snes.ppu->_registers._obsel.nameSelect, 0b00); cr_assert_eq(snes.ppu->_registers._obsel.nameSelect, 0b00);
cr_assert_eq(snes.ppu->_registers._obsel.nameBaseSelect, 0b000); 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) Test(PPU_write, obsel_data_full)
{ {
Init() 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.objectSize, 0b111);
cr_assert_eq(snes.ppu->_registers._obsel.nameSelect, 0b11); cr_assert_eq(snes.ppu->_registers._obsel.nameSelect, 0b11);
cr_assert_eq(snes.ppu->_registers._obsel.nameBaseSelect, 0b111); 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) Test(PPU_write, obsel_data_full_nameselect)
{ {
Init() 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.objectSize, 0b000);
cr_assert_eq(snes.ppu->_registers._obsel.nameSelect, 0b11); cr_assert_eq(snes.ppu->_registers._obsel.nameSelect, 0b11);
cr_assert_eq(snes.ppu->_registers._obsel.nameBaseSelect, 0b000); 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) Test(PPU_write, obsel_data_full_baseselect)
{ {
Init() 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.objectSize, 0b000);
cr_assert_eq(snes.ppu->_registers._obsel.nameSelect, 0b00); cr_assert_eq(snes.ppu->_registers._obsel.nameSelect, 0b00);
cr_assert_eq(snes.ppu->_registers._obsel.nameBaseSelect, 0b111); 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) Test(PPU_write, oamaddl_data_full)
{ {
Init() Init()
snes._bus->write(0x2102, 0b11111111); snes.bus->write(0x2102, 0b11111111);
cr_assert_eq(snes.ppu->_registers._oamadd.oamAddress, 0b011111111); cr_assert_eq(snes.ppu->_registers._oamadd.oamAddress, 0b011111111);
} }
Test(PPU_write, oamaddh_data_full) Test(PPU_write, oamaddh_data_full)
{ {
Init() 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.objPriorityActivationBit, true);
cr_assert_eq(snes.ppu->_registers._oamadd.oamAddress, 0b100000000); 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) Test(PPU_write, oamaddlh_data_full)
{ {
Init() Init()
snes._bus->write(0x2102, 0b11111111); snes.bus->write(0x2102, 0b11111111);
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.objPriorityActivationBit, true);
cr_assert_eq(snes.ppu->_registers._oamadd.oamAddress, 0b111111111); 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) Test(PPU_write, oamaddlh_data_full_priorityBit_off)
{ {
Init() Init()
snes._bus->write(0x2102, 0b11111111); snes.bus->write(0x2102, 0b11111111);
snes._bus->write(0x2103, 0b01111111); snes.bus->write(0x2103, 0b01111111);
cr_assert_eq(snes.ppu->_registers._oamadd.objPriorityActivationBit, false); cr_assert_eq(snes.ppu->_registers._oamadd.objPriorityActivationBit, false);
cr_assert_eq(snes.ppu->_registers._oamadd.oamAddress, 0b111111111); 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) Test(PPU_write, oamaddlh_oamAdress_11_priorityBit_on)
{ {
Init() Init()
snes._bus->write(0x2102, 0b00001011); snes.bus->write(0x2102, 0b00001011);
snes._bus->write(0x2103, 0b10011100); snes.bus->write(0x2103, 0b10011100);
cr_assert_eq(snes.ppu->_registers._oamadd.objPriorityActivationBit, true); cr_assert_eq(snes.ppu->_registers._oamadd.objPriorityActivationBit, true);
cr_assert_eq(snes.ppu->_registers._oamadd.oamAddress, 11); 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) Test(PPU_write, bgmode_data_full)
{ {
Init() 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.bgMode, 7);
cr_assert_eq(snes.ppu->_registers._bgmode.characterSizeBg1, true); 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.characterSizeBg2, true);
@@ -144,7 +144,7 @@ Test(PPU_write, bgmode_data_full)
Test(PPU_write, bgmode_bgmode_5_and_bg24_on) Test(PPU_write, bgmode_bgmode_5_and_bg24_on)
{ {
Init() 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.bgMode, 5);
cr_assert_eq(snes.ppu->_registers._bgmode.characterSizeBg1, false); 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.characterSizeBg2, true);
@@ -156,7 +156,7 @@ Test(PPU_write, bgmode_bgmode_5_and_bg24_on)
Test(PPU_write, mosaic_data_full) Test(PPU_write, mosaic_data_full)
{ {
Init() 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.affectBg1, true);
cr_assert_eq(snes.ppu->_registers._mosaic.affectBg2, 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.affectBg3, true);
@@ -167,7 +167,7 @@ Test(PPU_write, mosaic_data_full)
Test(PPU_write, mosaic_affectbg23_w_1x1_size) Test(PPU_write, mosaic_affectbg23_w_1x1_size)
{ {
Init() 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.affectBg1, false);
cr_assert_eq(snes.ppu->_registers._mosaic.affectBg2, 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.affectBg3, true);
@@ -178,7 +178,7 @@ Test(PPU_write, mosaic_affectbg23_w_1x1_size)
Test(PPU_write, mosaic_affectbg14_w_2x2_size) Test(PPU_write, mosaic_affectbg14_w_2x2_size)
{ {
Init() 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.affectBg1, true);
cr_assert_eq(snes.ppu->_registers._mosaic.affectBg2, false); 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.affectBg3, false);
@@ -189,7 +189,7 @@ Test(PPU_write, mosaic_affectbg14_w_2x2_size)
Test(PPU_write, bg1sc_data_full) Test(PPU_write, bg1sc_data_full)
{ {
Init() 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].tilemapAddress, 0b111111);
cr_assert_eq(snes.ppu->_registers._bgsc[0].tilemapHorizontalMirroring, true); cr_assert_eq(snes.ppu->_registers._bgsc[0].tilemapHorizontalMirroring, true);
cr_assert_eq(snes.ppu->_registers._bgsc[0].tilemapVerticalMirroring, 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) Test(PPU_write, bg2sc_data_full)
{ {
Init() 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].tilemapAddress, 0b111111);
cr_assert_eq(snes.ppu->_registers._bgsc[1].tilemapHorizontalMirroring, true); cr_assert_eq(snes.ppu->_registers._bgsc[1].tilemapHorizontalMirroring, true);
cr_assert_eq(snes.ppu->_registers._bgsc[1].tilemapVerticalMirroring, 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) Test(PPU_write, bg3sc_data_full)
{ {
Init() 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].tilemapAddress, 0b111111);
cr_assert_eq(snes.ppu->_registers._bgsc[2].tilemapHorizontalMirroring, true); cr_assert_eq(snes.ppu->_registers._bgsc[2].tilemapHorizontalMirroring, true);
cr_assert_eq(snes.ppu->_registers._bgsc[2].tilemapVerticalMirroring, 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) Test(PPU_write, bg4sc_data_full)
{ {
Init() 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].tilemapAddress, 0b111111);
cr_assert_eq(snes.ppu->_registers._bgsc[3].tilemapHorizontalMirroring, true); cr_assert_eq(snes.ppu->_registers._bgsc[3].tilemapHorizontalMirroring, true);
cr_assert_eq(snes.ppu->_registers._bgsc[3].tilemapVerticalMirroring, 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) Test(PPU_write, bg4sc_data_null)
{ {
Init() 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].tilemapAddress, 0);
cr_assert_eq(snes.ppu->_registers._bgsc[3].tilemapHorizontalMirroring, false); cr_assert_eq(snes.ppu->_registers._bgsc[3].tilemapHorizontalMirroring, false);
cr_assert_eq(snes.ppu->_registers._bgsc[3].tilemapVerticalMirroring, 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) Test(PPU_write, bg4sc_horizontal_off_vertical_on_random_tilemapAdress)
{ {
Init() 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].tilemapAddress, 0b110001);
cr_assert_eq(snes.ppu->_registers._bgsc[3].tilemapHorizontalMirroring, false); cr_assert_eq(snes.ppu->_registers._bgsc[3].tilemapHorizontalMirroring, false);
cr_assert_eq(snes.ppu->_registers._bgsc[3].tilemapVerticalMirroring, true); 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) Test(PPU_write, bg12nba_data_full)
{ {
Init() 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].baseAddressBg1a3, 0b1111);
cr_assert_eq(snes.ppu->_registers._bgnba[0].baseAddressBg2a4, 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) Test(PPU_write, bg34nba_data_full)
{ {
Init() 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].baseAddressBg1a3, 0b1111);
cr_assert_eq(snes.ppu->_registers._bgnba[1].baseAddressBg2a4, 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) Test(PPU_write, bg12nba_data_random_data)
{ {
Init() 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].baseAddressBg1a3, 0b1010);
cr_assert_eq(snes.ppu->_registers._bgnba[0].baseAddressBg2a4, 0b1010); cr_assert_eq(snes.ppu->_registers._bgnba[0].baseAddressBg2a4, 0b1010);
} }

View File

@@ -14,7 +14,7 @@ using namespace ComSquare;
Test(PPU_write_2, vmain_data_full) Test(PPU_write_2, vmain_data_full)
{ {
Init() 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.incrementMode, true);
cr_assert_eq(snes.ppu->_registers._vmain.addressRemapping, 0b11); cr_assert_eq(snes.ppu->_registers._vmain.addressRemapping, 0b11);
cr_assert_eq(snes.ppu->_registers._vmain.incrementAmount, 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) Test(PPU_write_2, vmain_incrementmode_off_false_else_full)
{ {
Init() 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.incrementMode, false);
cr_assert_eq(snes.ppu->_registers._vmain.addressRemapping, 0b11); cr_assert_eq(snes.ppu->_registers._vmain.addressRemapping, 0b11);
cr_assert_eq(snes.ppu->_registers._vmain.incrementAmount, 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) Test(PPU_write_2, vmain_addressremaping_null_else_full)
{ {
Init() 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.incrementMode, true);
cr_assert_eq(snes.ppu->_registers._vmain.addressRemapping, 0b00); cr_assert_eq(snes.ppu->_registers._vmain.addressRemapping, 0b00);
cr_assert_eq(snes.ppu->_registers._vmain.incrementAmount, 0b11); 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) Test(PPU_write_2, vmain_incrementamount_null_else_full)
{ {
Init() 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.incrementMode, true);
cr_assert_eq(snes.ppu->_registers._vmain.addressRemapping, 0b11); cr_assert_eq(snes.ppu->_registers._vmain.addressRemapping, 0b11);
cr_assert_eq(snes.ppu->_registers._vmain.incrementAmount, 0b00); 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) Test(PPU_write_2, vmadd_full_data)
{ {
Init() Init()
snes._bus->write(0x2116, 0b11111111); snes.bus->write(0x2116, 0b11111111);
snes._bus->write(0x2117, 0b11111111); snes.bus->write(0x2117, 0b11111111);
cr_assert_eq(snes.ppu->_registers._vmadd.vmadd, 0b1111111111111111); cr_assert_eq(snes.ppu->_registers._vmadd.vmadd, 0b1111111111111111);
} }
Test(PPU_write_2, vmadd_full_high_byte_null) Test(PPU_write_2, vmadd_full_high_byte_null)
{ {
Init() Init()
snes._bus->write(0x2116, 0b11111111); snes.bus->write(0x2116, 0b11111111);
snes._bus->write(0x2117, 0b00000000); snes.bus->write(0x2117, 0b00000000);
cr_assert_eq(snes.ppu->_registers._vmadd.vmadd, 0b0000000011111111); cr_assert_eq(snes.ppu->_registers._vmadd.vmadd, 0b0000000011111111);
} }
Test(PPU_write_2, vmdata_full_data) Test(PPU_write_2, vmdata_full_data)
{ {
Init() Init()
snes._bus->write(0x2118, 0b11111111); snes.bus->write(0x2118, 0b11111111);
snes._bus->write(0x2119, 0b11111111); snes.bus->write(0x2119, 0b11111111);
cr_assert_eq(snes.ppu->_registers._vmdata.vmdata, 0b1111111111111111); cr_assert_eq(snes.ppu->_registers._vmdata.vmdata, 0b1111111111111111);
} }
Test(PPU_write_2, vmdata_full_high_byte_null) Test(PPU_write_2, vmdata_full_high_byte_null)
{ {
Init() Init()
snes._bus->write(0x2118, 0b11111111); snes.bus->write(0x2118, 0b11111111);
snes._bus->write(0x2119, 0b00000000); snes.bus->write(0x2119, 0b00000000);
cr_assert_eq(snes.ppu->_registers._vmdata.vmdata, 0b0000000011111111); cr_assert_eq(snes.ppu->_registers._vmdata.vmdata, 0b0000000011111111);
} }
Test(PPU_write_2, cgadd_full_high_byte_null) Test(PPU_write_2, cgadd_full_high_byte_null)
{ {
Init() 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._cgadd, 0b11111111);
cr_assert_eq(snes.ppu->_registers._isLowByte, true); 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) Test(PPU_write_2, cgdata_data_full)
{ {
Init() Init()
snes._bus->write(0x2121, 0x0); snes.bus->write(0x2121, 0x0);
snes._bus->write(0x2122, 0b11111111); snes.bus->write(0x2122, 0b11111111);
cr_assert_eq(snes.ppu->_registers._cgdata.cgdatal, 0b11111111); cr_assert_eq(snes.ppu->_registers._cgdata.cgdatal, 0b11111111);
cr_assert_eq(snes.ppu->_registers._isLowByte, false); cr_assert_eq(snes.ppu->_registers._isLowByte, false);
int address = snes.ppu->_registers._cgadd; 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._cgdata.cgdatah, 0b11111000);
cr_assert_eq(snes.ppu->_registers._isLowByte, true); cr_assert_eq(snes.ppu->_registers._isLowByte, true);
cr_assert_eq(snes.ppu->_registers._cgadd, address + 2); 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) Test(PPU_write_2, m7sel_data_full)
{ {
Init() 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.playingFieldSize, true);
cr_assert_eq(snes.ppu->_registers._m7sel.emptySpaceFill, 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.horizontalMirroring, true);
@@ -114,7 +114,7 @@ Test(PPU_write_2, m7sel_data_full)
Test(PPU_write_2, m7sel_data_actual) Test(PPU_write_2, m7sel_data_actual)
{ {
Init() 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.playingFieldSize, false);
cr_assert_eq(snes.ppu->_registers._m7sel.emptySpaceFill, 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.horizontalMirroring, true);
@@ -124,7 +124,7 @@ Test(PPU_write_2, m7sel_data_actual)
Test(PPU_write_2, w12sel_data_full) Test(PPU_write_2, w12sel_data_full)
{ {
Init() 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].window1InversionForBg1Bg2Obj, true);
cr_assert_eq(snes.ppu->_registers._wsel[0].enableWindow1ForBg1Bg2Obj, 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].window2InversionForBg1Bg3Obj, true);
@@ -138,7 +138,7 @@ Test(PPU_write_2, w12sel_data_full)
Test(PPU_write_2, w34sel_data_full) Test(PPU_write_2, w34sel_data_full)
{ {
Init() 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].window1InversionForBg1Bg2Obj, true);
cr_assert_eq(snes.ppu->_registers._wsel[1].enableWindow1ForBg1Bg2Obj, false); 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].window2InversionForBg1Bg3Obj, true);
@@ -152,7 +152,7 @@ Test(PPU_write_2, w34sel_data_full)
Test(PPU_write_2, wobjsel_data_full) Test(PPU_write_2, wobjsel_data_full)
{ {
Init() 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].window1InversionForBg1Bg2Obj, true);
cr_assert_eq(snes.ppu->_registers._wsel[2].enableWindow1ForBg1Bg2Obj, false); 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].window2InversionForBg1Bg3Obj, true);
@@ -166,7 +166,7 @@ Test(PPU_write_2, wobjsel_data_full)
Test(PPU_write_2, wbglog_data_full) Test(PPU_write_2, wbglog_data_full)
{ {
Init() 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.maskLogicBg1, 0b10);
cr_assert_eq(snes.ppu->_registers._wbglog.maskLogicBg2, 0b11); 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.maskLogicBg3, 0b00);
@@ -176,7 +176,7 @@ Test(PPU_write_2, wbglog_data_full)
Test(PPU_write_2, wobjlog_data_full) Test(PPU_write_2, wobjlog_data_full)
{ {
Init() 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.maskLogicObj, 0b01);
cr_assert_eq(snes.ppu->_registers._wobjlog.maskLogicColor, 0b00); 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) Test(PPU_write_2, tm_data_full)
{ {
Init() 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].enableWindowDisplayBg1, true);
cr_assert_eq(snes.ppu->_registers._t[0].enableWindowDisplayBg2, false); 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].enableWindowDisplayBg3, false);
@@ -195,7 +195,7 @@ Test(PPU_write_2, tm_data_full)
Test(PPU_write_2, ts_data_full) Test(PPU_write_2, ts_data_full)
{ {
Init() 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].enableWindowDisplayBg1, false);
cr_assert_eq(snes.ppu->_registers._t[1].enableWindowDisplayBg2, true); 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].enableWindowDisplayBg3, true);
@@ -206,7 +206,7 @@ Test(PPU_write_2, ts_data_full)
Test(PPU_write_2, tmw_data_full) Test(PPU_write_2, tmw_data_full)
{ {
Init() 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].enableWindowMaskingBg1, false);
cr_assert_eq(snes.ppu->_registers._tw[0].enableWindowMaskingBg2, true); 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].enableWindowMaskingBg3, true);
@@ -217,7 +217,7 @@ Test(PPU_write_2, tmw_data_full)
Test(PPU_write_2, tsw_data_full) Test(PPU_write_2, tsw_data_full)
{ {
Init() 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].enableWindowMaskingBg1, true);
cr_assert_eq(snes.ppu->_registers._tw[1].enableWindowMaskingBg2, 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].enableWindowMaskingBg3, false);
@@ -228,7 +228,7 @@ Test(PPU_write_2, tsw_data_full)
Test(PPU_write_2, cgwsel_data_full) Test(PPU_write_2, cgwsel_data_full)
{ {
Init() 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.clipColorToBlackBeforeMath, 0b10);
cr_assert_eq(snes.ppu->_registers._cgwsel.preventColorMath, 0b11); 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.addSubscreen, false);
@@ -238,7 +238,7 @@ Test(PPU_write_2, cgwsel_data_full)
Test(PPU_write_2, cgadsub_data_full) Test(PPU_write_2, cgadsub_data_full)
{ {
Init() 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.addSubtractSelect, true);
cr_assert_eq(snes.ppu->_registers._cgadsub.halfColorMath, false); 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.enableColorMathBackdrop, true);
@@ -252,7 +252,7 @@ Test(PPU_write_2, cgadsub_data_full)
Test(PPU_write_2, coldata_data_full) Test(PPU_write_2, coldata_data_full)
{ {
Init() 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.blue, true);
cr_assert_eq(snes.ppu->_registers._coldata.green, false); 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.red, true);
@@ -262,7 +262,7 @@ Test(PPU_write_2, coldata_data_full)
Test(PPU_write_2, setini_data_full) Test(PPU_write_2, setini_data_full)
{ {
Init() 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.externalSync, true);
cr_assert_eq(snes.ppu->_registers._setini.mode7ExtBg, false); 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.enablePseudoHiresMode, true);
@@ -274,14 +274,14 @@ Test(PPU_write_2, setini_data_full)
Test(PPU_write_2, m7a_data_full) Test(PPU_write_2, m7a_data_full)
{ {
Init() Init()
snes._bus->write(0x211B, 0b10111001); snes.bus->write(0x211B, 0b10111001);
cr_assert_eq(snes.ppu->_registers._m7[0].m7l, 0b10111001); cr_assert_eq(snes.ppu->_registers._m7[0].m7l, 0b10111001);
} }
Test(PPU_write_2, m7c_data_low_and_high_byte) Test(PPU_write_2, m7c_data_low_and_high_byte)
{ {
Init() Init()
snes._bus->write(0x211D, 0b10111001); snes.bus->write(0x211D, 0b10111001);
snes._bus->write(0x211D, 0b11111111); snes.bus->write(0x211D, 0b11111111);
cr_assert_eq(snes.ppu->_registers._m7[2].m7, 0b1011100111111111); cr_assert_eq(snes.ppu->_registers._m7[2].m7, 0b1011100111111111);
} }

View File

@@ -29,7 +29,7 @@ Test(BusAccessor, GetWramStart)
Init() Init()
std::shared_ptr<Memory::AMemory> accessor = nullptr; std::shared_ptr<Memory::AMemory> accessor = nullptr;
accessor = snes._bus->getAccessor(0x7E0000); accessor = snes.bus->getAccessor(0x7E0000);
cr_assert_eq(accessor.get(), snes.wram.get()); cr_assert_eq(accessor.get(), snes.wram.get());
} }
@@ -38,7 +38,7 @@ Test(BusAccessor, GetWramEnd)
Init() Init()
std::shared_ptr<Memory::AMemory> accessor = nullptr; std::shared_ptr<Memory::AMemory> accessor = nullptr;
accessor = snes._bus->getAccessor(0x7FFFFF); accessor = snes.bus->getAccessor(0x7FFFFF);
cr_assert_eq(accessor.get(), snes.wram.get()); cr_assert_eq(accessor.get(), snes.wram.get());
} }
@@ -47,7 +47,7 @@ Test(BusAccessor, GetWramMirror)
Init() Init()
std::shared_ptr<Memory::RectangleShadow> accessor = nullptr; std::shared_ptr<Memory::RectangleShadow> accessor = nullptr;
accessor = std::static_pointer_cast<Memory::RectangleShadow>(snes._bus->getAccessor(0x2F11FF)); accessor = std::static_pointer_cast<Memory::RectangleShadow>(snes.bus->getAccessor(0x2F11FF));
cr_assert_neq(accessor, nullptr); cr_assert_neq(accessor, nullptr);
cr_assert_eq(accessor->_initial.get(), snes.wram.get()); cr_assert_eq(accessor->_initial.get(), snes.wram.get());
} }
@@ -57,7 +57,7 @@ Test(BusAccessor, GetWramMirror2)
Init() Init()
std::shared_ptr<Memory::RectangleShadow> accessor = nullptr; std::shared_ptr<Memory::RectangleShadow> accessor = nullptr;
accessor = std::static_pointer_cast<Memory::RectangleShadow>(snes._bus->getAccessor(0x100000)); accessor = std::static_pointer_cast<Memory::RectangleShadow>(snes.bus->getAccessor(0x100000));
cr_assert_neq(accessor, nullptr); cr_assert_neq(accessor, nullptr);
cr_assert_eq(accessor->_initial.get(), snes.wram.get()); cr_assert_eq(accessor->_initial.get(), snes.wram.get());
} }
@@ -67,7 +67,7 @@ Test(BusAccessor, GetWramMirror3)
Init() Init()
std::shared_ptr<Memory::RectangleShadow> accessor = nullptr; std::shared_ptr<Memory::RectangleShadow> accessor = nullptr;
accessor = std::static_pointer_cast<Memory::RectangleShadow>(snes._bus->getAccessor(0x1010)); accessor = std::static_pointer_cast<Memory::RectangleShadow>(snes.bus->getAccessor(0x1010));
cr_assert_neq(accessor, nullptr); cr_assert_neq(accessor, nullptr);
cr_assert_eq(accessor->_initial.get(), snes.wram.get()); cr_assert_eq(accessor->_initial.get(), snes.wram.get());
} }
@@ -75,7 +75,7 @@ Test(BusAccessor, GetWramMirror3)
Test(BusAccessor, GetOpenBus) Test(BusAccessor, GetOpenBus)
{ {
Init() Init()
std::shared_ptr<Memory::AMemory> accessor = snes._bus->getAccessor(0x897654); std::shared_ptr<Memory::AMemory> accessor = snes.bus->getAccessor(0x897654);
cr_assert_eq(accessor.get(), nullptr); cr_assert_eq(accessor.get(), nullptr);
} }
@@ -84,7 +84,7 @@ Test(BusAccessor, GetSramStart)
Init() Init()
std::shared_ptr<Memory::RectangleShadow> accessor = nullptr; std::shared_ptr<Memory::RectangleShadow> accessor = nullptr;
accessor = std::static_pointer_cast<Memory::RectangleShadow>(snes._bus->getAccessor(0x700000)); accessor = std::static_pointer_cast<Memory::RectangleShadow>(snes.bus->getAccessor(0x700000));
cr_assert_eq(accessor->_initial.get(), snes.sram.get()); cr_assert_eq(accessor->_initial.get(), snes.sram.get());
} }
@@ -93,7 +93,7 @@ Test(BusAccessor, GetSramEnd)
Init() Init()
std::shared_ptr<Memory::RectangleShadow> accessor = nullptr; std::shared_ptr<Memory::RectangleShadow> accessor = nullptr;
accessor = std::static_pointer_cast<Memory::RectangleShadow>(snes._bus->getAccessor(0x7D7FFF)); accessor = std::static_pointer_cast<Memory::RectangleShadow>(snes.bus->getAccessor(0x7D7FFF));
cr_assert_eq(accessor->_initial.get(), snes.sram.get()); cr_assert_eq(accessor->_initial.get(), snes.sram.get());
} }
@@ -102,7 +102,7 @@ Test(BusAccessor, GetSramMirror)
Init() Init()
std::shared_ptr<Memory::ARectangleMemory> accessor = nullptr; std::shared_ptr<Memory::ARectangleMemory> accessor = nullptr;
accessor = std::static_pointer_cast<Memory::ARectangleMemory>(snes._bus->getAccessor(0xF00123)); accessor = std::static_pointer_cast<Memory::ARectangleMemory>(snes.bus->getAccessor(0xF00123));
cr_assert_eq(accessor.get(), snes.sram.get()); cr_assert_eq(accessor.get(), snes.sram.get());
} }
@@ -111,7 +111,7 @@ Test(BusAccessor, GetAPUStart)
Init() Init()
std::shared_ptr<Memory::AMemory> accessor = nullptr; std::shared_ptr<Memory::AMemory> accessor = nullptr;
accessor = snes._bus->getAccessor(0x002140); accessor = snes.bus->getAccessor(0x002140);
cr_assert_eq(accessor.get(), snes.apu.get()); cr_assert_eq(accessor.get(), snes.apu.get());
} }
@@ -120,7 +120,7 @@ Test(BusAccessor, GetAPUEnd)
Init() Init()
std::shared_ptr<Memory::AMemory> accessor = nullptr; std::shared_ptr<Memory::AMemory> accessor = nullptr;
accessor = snes._bus->getAccessor(0x002143); accessor = snes.bus->getAccessor(0x002143);
cr_assert_eq(accessor.get(), snes.apu.get()); cr_assert_eq(accessor.get(), snes.apu.get());
} }
@@ -129,7 +129,7 @@ Test(BusAccessor, GetAPUMirror)
Init() Init()
std::shared_ptr<Memory::MemoryShadow> accessor = nullptr; std::shared_ptr<Memory::MemoryShadow> accessor = nullptr;
accessor = std::static_pointer_cast<Memory::MemoryShadow>(snes._bus->getAccessor(0xAB2143)); accessor = std::static_pointer_cast<Memory::MemoryShadow>(snes.bus->getAccessor(0xAB2143));
cr_assert_eq(accessor->_initial.get(), snes.apu.get()); cr_assert_eq(accessor->_initial.get(), snes.apu.get());
} }
@@ -138,7 +138,7 @@ Test(BusAccessor, GetAPUMirrorFirstHalf)
Init() Init()
std::shared_ptr<Memory::MemoryShadow> accessor = nullptr; std::shared_ptr<Memory::MemoryShadow> accessor = nullptr;
accessor = std::static_pointer_cast<Memory::MemoryShadow>(snes._bus->getAccessor(0x052143)); accessor = std::static_pointer_cast<Memory::MemoryShadow>(snes.bus->getAccessor(0x052143));
cr_assert_eq(accessor->_initial.get(), snes.apu.get()); cr_assert_eq(accessor->_initial.get(), snes.apu.get());
} }
@@ -147,7 +147,7 @@ Test(BusAccessor, GetCPUStart)
Init() Init()
std::shared_ptr<Memory::AMemory> accessor = nullptr; std::shared_ptr<Memory::AMemory> accessor = nullptr;
accessor = snes._bus->getAccessor(0x004200); accessor = snes.bus->getAccessor(0x004200);
cr_assert_eq(accessor.get(), snes.cpu.get()); cr_assert_eq(accessor.get(), snes.cpu.get());
} }
@@ -156,7 +156,7 @@ Test(BusAccessor, GetCPUEnd)
Init() Init()
std::shared_ptr<Memory::AMemory> accessor = nullptr; std::shared_ptr<Memory::AMemory> accessor = nullptr;
accessor = snes._bus->getAccessor(0x00421F); accessor = snes.bus->getAccessor(0x00421F);
cr_assert_eq(accessor.get(), snes.cpu.get()); cr_assert_eq(accessor.get(), snes.cpu.get());
} }
@@ -165,7 +165,7 @@ Test(BusAccessor, GetPPU1Start)
Init() Init()
std::shared_ptr<Memory::AMemory> accessor = nullptr; std::shared_ptr<Memory::AMemory> accessor = nullptr;
accessor = snes._bus->getAccessor(0x00213E); accessor = snes.bus->getAccessor(0x00213E);
cr_assert_eq(accessor.get(), snes.ppu.get()); cr_assert_eq(accessor.get(), snes.ppu.get());
} }
@@ -174,7 +174,7 @@ Test(BusAccessor, GetPPU1End)
Init() Init()
std::shared_ptr<Memory::AMemory> accessor = nullptr; std::shared_ptr<Memory::AMemory> accessor = nullptr;
accessor = snes._bus->getAccessor(0x00213F); accessor = snes.bus->getAccessor(0x00213F);
cr_assert_eq(accessor.get(), snes.ppu.get()); cr_assert_eq(accessor.get(), snes.ppu.get());
} }
@@ -183,7 +183,7 @@ Test(BusAccessor, GetCPU)
Init() Init()
std::shared_ptr<Memory::AMemory> accessor = nullptr; std::shared_ptr<Memory::AMemory> accessor = nullptr;
accessor = snes._bus->getAccessor(0x004212); accessor = snes.bus->getAccessor(0x004212);
cr_assert_eq(accessor.get(), snes.cpu.get()); cr_assert_eq(accessor.get(), snes.cpu.get());
} }
@@ -192,7 +192,7 @@ Test(BusAccessor, GetPPU1Mirror)
Init() Init()
std::shared_ptr<Memory::MemoryShadow> accessor = nullptr; std::shared_ptr<Memory::MemoryShadow> accessor = nullptr;
accessor = std::static_pointer_cast<Memory::MemoryShadow>(snes._bus->getAccessor(0x80213F)); accessor = std::static_pointer_cast<Memory::MemoryShadow>(snes.bus->getAccessor(0x80213F));
cr_assert_eq(accessor->_initial.get(), snes.ppu.get()); cr_assert_eq(accessor->_initial.get(), snes.ppu.get());
} }
@@ -201,7 +201,7 @@ Test(BusAccessor, GetCPU2Mirror)
Init() Init()
std::shared_ptr<Memory::MemoryShadow> accessor = nullptr; std::shared_ptr<Memory::MemoryShadow> accessor = nullptr;
accessor = std::static_pointer_cast<Memory::MemoryShadow>(snes._bus->getAccessor(0x804212)); accessor = std::static_pointer_cast<Memory::MemoryShadow>(snes.bus->getAccessor(0x804212));
cr_assert_eq(accessor->_initial.get(), snes.cpu.get()); cr_assert_eq(accessor->_initial.get(), snes.cpu.get());
} }
@@ -210,7 +210,7 @@ Test(BusAccessor, GetRomStart)
Init() Init()
std::shared_ptr<Memory::AMemory> accessor = nullptr; std::shared_ptr<Memory::AMemory> accessor = nullptr;
accessor = snes._bus->getAccessor(0x808000); accessor = snes.bus->getAccessor(0x808000);
cr_assert_eq(accessor.get(), snes.cartridge.get()); cr_assert_eq(accessor.get(), snes.cartridge.get());
} }
@@ -219,7 +219,7 @@ Test(BusAccessor, GetRomEnd)
Init() Init()
std::shared_ptr<Memory::AMemory> accessor = nullptr; std::shared_ptr<Memory::AMemory> accessor = nullptr;
accessor = snes._bus->getAccessor(0xFFFFFF); accessor = snes.bus->getAccessor(0xFFFFFF);
cr_assert_eq(accessor.get(), snes.cartridge.get()); cr_assert_eq(accessor.get(), snes.cartridge.get());
} }
@@ -228,7 +228,7 @@ Test(BusAccessor, GetRomMirror)
Init() Init()
std::shared_ptr<Memory::RectangleShadow> accessor = nullptr; std::shared_ptr<Memory::RectangleShadow> accessor = nullptr;
accessor = std::static_pointer_cast<Memory::RectangleShadow>(snes._bus->getAccessor(0x694200)); accessor = std::static_pointer_cast<Memory::RectangleShadow>(snes.bus->getAccessor(0x694200));
cr_assert_eq(accessor->_initial.get(), snes.cartridge.get()); cr_assert_eq(accessor->_initial.get(), snes.cartridge.get());
} }
@@ -237,7 +237,7 @@ Test(BusAccessor, GetRomMirror2)
Init() Init()
std::shared_ptr<Memory::RectangleShadow> accessor = nullptr; std::shared_ptr<Memory::RectangleShadow> accessor = nullptr;
accessor = std::static_pointer_cast<Memory::RectangleShadow>(snes._bus->getAccessor(0x01FEDC)); accessor = std::static_pointer_cast<Memory::RectangleShadow>(snes.bus->getAccessor(0x01FEDC));
cr_assert_eq(accessor->_initial.get(), snes.cartridge.get()); cr_assert_eq(accessor->_initial.get(), snes.cartridge.get());
} }
@@ -246,7 +246,7 @@ Test(BusAccessor, GetRomMirror3)
Init() Init()
std::shared_ptr<Memory::RectangleShadow> accessor = nullptr; std::shared_ptr<Memory::RectangleShadow> accessor = nullptr;
accessor = std::static_pointer_cast<Memory::RectangleShadow>(snes._bus->getAccessor(0xDE1248)); accessor = std::static_pointer_cast<Memory::RectangleShadow>(snes.bus->getAccessor(0xDE1248));
cr_assert_eq(accessor->_initial.get(), snes.cartridge.get()); cr_assert_eq(accessor->_initial.get(), snes.cartridge.get());
} }
@@ -255,7 +255,7 @@ Test(BusAccessor, Get0x0)
Init() Init()
std::shared_ptr<Memory::RectangleShadow> accessor = nullptr; std::shared_ptr<Memory::RectangleShadow> accessor = nullptr;
accessor = std::static_pointer_cast<Memory::RectangleShadow>(snes._bus->getAccessor(0x0)); accessor = std::static_pointer_cast<Memory::RectangleShadow>(snes.bus->getAccessor(0x0));
cr_assert_eq(accessor->_initial.get(), snes.wram.get()); cr_assert_eq(accessor->_initial.get(), snes.wram.get());
} }
@@ -271,7 +271,7 @@ Test(BusRead, Read0x0)
uint8_t data; uint8_t data;
snes.wram->_data[0] = 123; snes.wram->_data[0] = 123;
data = snes._bus->read(0x0); data = snes.bus->read(0x0);
cr_assert_eq(data, 123); cr_assert_eq(data, 123);
} }
@@ -280,8 +280,8 @@ Test(BusRead, ReadOutside, .init = cr_redirect_stdout)
Init() Init()
uint8_t data; uint8_t data;
snes._bus->_openBus = 123; snes.bus->_openBus = 123;
data = snes._bus->read(0x002000); data = snes.bus->read(0x002000);
cr_assert_eq(data, 123); cr_assert_eq(data, 123);
} }
@@ -290,8 +290,8 @@ Test(BusRead, ReadOutside2, .init = cr_redirect_stdout)
Init() Init()
uint8_t data; uint8_t data;
snes._bus->_openBus = 123; snes.bus->_openBus = 123;
data = snes._bus->read(0xBF2FFF); data = snes.bus->read(0xBF2FFF);
cr_assert_eq(data, 123); cr_assert_eq(data, 123);
} }
@@ -300,8 +300,8 @@ Test(BusRead, ReadOutside3, .init = cr_redirect_stdout)
Init() Init()
uint8_t data; uint8_t data;
snes._bus->_openBus = 123; snes.bus->_openBus = 123;
data = snes._bus->read(0x127654); data = snes.bus->read(0x127654);
cr_assert_eq(data, 123); cr_assert_eq(data, 123);
} }
@@ -311,7 +311,7 @@ Test(BusRead, ReadAPU)
uint8_t data; uint8_t data;
snes.apu->_registers.port0 = 123; snes.apu->_registers.port0 = 123;
data = snes._bus->read(0x002140); data = snes.bus->read(0x002140);
cr_assert_eq(data, 123); cr_assert_eq(data, 123);
} }
@@ -321,7 +321,7 @@ Test(BusRead, ReadROM)
uint8_t data; uint8_t data;
snes.cartridge->_data[5] = 123; snes.cartridge->_data[5] = 123;
data = snes._bus->read(0x808005); data = snes.bus->read(0x808005);
cr_assert_eq(data, 123); cr_assert_eq(data, 123);
} }
@@ -331,7 +331,7 @@ Test(BusRead, ReadROMStart)
uint8_t data; uint8_t data;
snes.cartridge->_data[0] = 123; snes.cartridge->_data[0] = 123;
data = snes._bus->read(0x808000); data = snes.bus->read(0x808000);
cr_assert_eq(data, 123); cr_assert_eq(data, 123);
} }
@@ -341,7 +341,7 @@ Test(BusRead, ReadCPU)
uint8_t data; uint8_t data;
snes.cpu->_internalRegisters.wrio = 123; snes.cpu->_internalRegisters.wrio = 123;
data = snes._bus->read(0x004201); data = snes.bus->read(0x004201);
cr_assert_eq(data, 123); cr_assert_eq(data, 123);
} }
@@ -351,7 +351,7 @@ Test(BusRead, ReadPPU)
uint8_t data; uint8_t data;
snes.ppu->_registers._mpy.mpyl = 123; snes.ppu->_registers._mpy.mpyl = 123;
data = snes._bus->read(0x002134); data = snes.bus->read(0x002134);
cr_assert_eq(data, 123); cr_assert_eq(data, 123);
} }
@@ -361,7 +361,7 @@ Test(BusRead, ReadSRAM)
uint8_t data; uint8_t data;
snes.sram->_data[7] = 123; snes.sram->_data[7] = 123;
data = snes._bus->read(0x700007); data = snes.bus->read(0x700007);
cr_assert_eq(data, 123); cr_assert_eq(data, 123);
} }
@@ -371,7 +371,7 @@ Test(BusRead, ReadWRAM)
uint8_t data; uint8_t data;
snes.wram->_data[3] = 123; snes.wram->_data[3] = 123;
data = snes._bus->read(0x7E0003); data = snes.bus->read(0x7E0003);
cr_assert_eq(data, 123); cr_assert_eq(data, 123);
} }
@@ -381,7 +381,7 @@ Test(BusRead, ReadWRAM2)
uint8_t data; uint8_t data;
snes.wram->_data[0x1010] = 123; snes.wram->_data[0x1010] = 123;
data = snes._bus->read(0x7E1010); data = snes.bus->read(0x7E1010);
cr_assert_eq(data, 123); cr_assert_eq(data, 123);
} }
@@ -392,7 +392,7 @@ Test(BusRead, ReadWRAMMirror)
uint8_t data; uint8_t data;
snes.wram->_data[0x1010] = 123; snes.wram->_data[0x1010] = 123;
data = snes._bus->read(0x1010); data = snes.bus->read(0x1010);
cr_assert_eq(data, 123); cr_assert_eq(data, 123);
} }
@@ -407,7 +407,7 @@ Test(BusWrite, Write0x0)
Init() Init()
try { try {
snes._bus->write(0x0, 123); snes.bus->write(0x0, 123);
} catch (std::exception &ex) { } catch (std::exception &ex) {
std::cout << ex.what() << std::endl; std::cout << ex.what() << std::endl;
} }
@@ -419,7 +419,7 @@ Test(BusWrite, WriteAPU)
{ {
Init() Init()
snes._bus->write(0x002143, 123); snes.bus->write(0x002143, 123);
cr_assert_eq(snes.apu->_registers.port3, 123); cr_assert_eq(snes.apu->_registers.port3, 123);
} }
@@ -427,7 +427,7 @@ Test(BusWrite, WritePPU)
{ {
Init() Init()
snes._bus->write(0x002106, 123); snes.bus->write(0x002106, 123);
cr_assert_eq(snes.ppu->_registers._mosaic.raw, 123); cr_assert_eq(snes.ppu->_registers._mosaic.raw, 123);
} }
@@ -435,7 +435,7 @@ Test(BusWrite, WriteCPU)
{ {
Init() Init()
snes._bus->write(0x00420D, 123); snes.bus->write(0x00420D, 123);
cr_assert_eq(snes.cpu->_internalRegisters.memsel, 123); cr_assert_eq(snes.cpu->_internalRegisters.memsel, 123);
} }
@@ -443,14 +443,14 @@ Test(BusWrite, WriteROM)
{ {
Init() Init()
cr_assert_throw(snes._bus->write(0x808005, 123), InvalidAction); cr_assert_throw(snes.bus->write(0x808005, 123), InvalidAction);
} }
Test(BusWrite, WriteWRAM) Test(BusWrite, WriteWRAM)
{ {
Init() Init()
snes._bus->write(0x7E0002, 123); snes.bus->write(0x7E0002, 123);
cr_assert_eq(snes.wram->_data[2], 123); cr_assert_eq(snes.wram->_data[2], 123);
} }
@@ -458,6 +458,6 @@ Test(BusWrite, WriteSRAM)
{ {
Init() Init()
snes._bus->write(0x700009, 123); snes.bus->write(0x700009, 123);
cr_assert_eq(snes.sram->_data[9], 123); cr_assert_eq(snes.sram->_data[9], 123);
} }

View File

@@ -59,7 +59,91 @@
</attribute> </attribute>
<layout class="QGridLayout" name="gridLayout_4"> <layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0"> <item row="0" column="0">
<layout class="QFormLayout" name="formLayout_3"/> <widget class="QTabWidget" name="tabWidget_2">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="channel1">
<attribute name="title">
<string>1</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_5">
<item row="0" column="0">
<widget class="QTableView" name="dmaChannel1"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="channel2">
<attribute name="title">
<string>2</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_6">
<item row="0" column="0">
<widget class="QTableView" name="dmaChannel2"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="channel3">
<attribute name="title">
<string>3</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_7">
<item row="0" column="0">
<widget class="QTableView" name="dmaChannel3"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="channel4">
<attribute name="title">
<string>4</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_8">
<item row="0" column="0">
<widget class="QTableView" name="dmaChannel4"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="channel5">
<attribute name="title">
<string>5</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_9">
<item row="0" column="0">
<widget class="QTableView" name="dmaChannel5"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="channel6">
<attribute name="title">
<string>6</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_10">
<item row="0" column="0">
<widget class="QTableView" name="dmaChannel6"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="channel7">
<attribute name="title">
<string>7</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_11">
<item row="0" column="0">
<widget class="QTableView" name="dmaChannel7"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="channel8">
<attribute name="title">
<string>8</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_12">
<item row="0" column="0">
<widget class="QTableView" name="dmaChannel8"/>
</item>
</layout>
</widget>
</widget>
</item> </item>
</layout> </layout>
</widget> </widget>