starting to implement registers of ppu in debugger

This commit is contained in:
Clément Le Bihan
2021-02-05 16:39:11 +01:00
parent 82f1dadee9
commit 499e2f4fa7
5 changed files with 64 additions and 6 deletions
+50 -1
View File
@@ -36,8 +36,9 @@ namespace ComSquare::Debugger
this->_ui.dmaChannel7,
this->_ui.dmaChannel8
};
RegistersViewerModel *model;
for (int i = 0; i < 8; i++) {
RegistersViewerModel *model = new RegistersViewerModel(this->_snes);
model = new RegistersViewerModel(this->_snes);
model->addRegister(Register(0x420B, std::string(":") + std::to_string(i), "Enabled", [i](SNES &snes) {
return snes.cpu->_dmaChannels[i].enabled;
}, nullptr, Boolean));
@@ -65,6 +66,52 @@ namespace ComSquare::Debugger
channels[i]->setModel(model);
this->_models.push_back(model);
}
// ppuRegisters
model = new RegistersViewerModel(this->_snes);
const PPU::Registers &ppuRegisters = this->_snes.ppu->getWriteRegisters();
//INIDISP 0X2100
model->addRegister(Register(0x2100, "", "INIDISP", [ppuRegisters](SNES &) {
return ppuRegisters._inidisp.raw;
}, nullptr, EightBits));
model->addRegister(Register(0x2100, ":0-3", "Screen brightness", [ppuRegisters](SNES &) {
return ppuRegisters._inidisp.brightness;
}, nullptr, Integer));
model->addRegister(Register(0x2100, ":7", "F-Blank", [ppuRegisters](SNES &) {
return ppuRegisters._inidisp.fblank;
}, nullptr, Boolean));
//OBSEL 0x2101
model->addRegister(Register(0x2101, "", "OBSEL", [ppuRegisters](SNES &) {
return ppuRegisters._obsel.raw;
}, nullptr, EightBits));
model->addRegister(Register(0x2101, ":0-2", "Name base select", [ppuRegisters](SNES &) {
return ppuRegisters._obsel.nameBaseSelect;
}, nullptr, EightBits));
model->addRegister(Register(0x2101, ":3-4", "Name select", [ppuRegisters](SNES &) {
return ppuRegisters._obsel.nameSelect;
}, nullptr, EightBits));
model->addRegister(Register(0x2101, ":5-7", "Object Size", [ppuRegisters](SNES &) {
return ppuRegisters._obsel.objectSize;
}, nullptr, EightBits));
//BGMODE 0x2105
model->addRegister(Register(0x2105, "", "BGMODE", [ppuRegisters](SNES &) {
return ppuRegisters._bgmode.raw;
}, nullptr, EightBits));
model->addRegister(Register(0x2105, ":0-2", "BG Mode", [ppuRegisters](SNES &) {
return ppuRegisters._bgmode.bgMode;
}, nullptr, Integer));
model->addRegister(Register(0x2105, ":3", "BG3 Priority Bit", [ppuRegisters](SNES &) {
return ppuRegisters._bgmode.mode1Bg3PriorityBit;
}, nullptr, Boolean));
for (int i = 0; i < 4; i++) {
model->addRegister(Register(0x2105, ":" + std::to_string(i + 4), "BG"+ std::to_string(i + 1) + " 16x16 Tiles", [ppuRegisters, i](SNES &) {
return (ppuRegisters._bgmode.raw >> (i + 4)) & 1;
}, nullptr, Boolean));
}
this->_ui.ppuRegisters->setModel(model);
}
void RegisterViewer::focus()
@@ -141,6 +188,8 @@ QVariant RegistersViewerModel::data(const QModelIndex &index, int role) const
switch (reg.type) {
case Boolean:
return QString(reg.get(this->_snes) ? "True" : "False");
case Integer:
return QString::number(reg.get(this->_snes));
case EightBits:
return QString(Utility::to_hex(static_cast<uint8_t>(reg.get(this->_snes))).c_str());
case SixteenBits:
+3 -1
View File
@@ -87,7 +87,9 @@ namespace ComSquare
//! @brief A 16 bits hexadecimal value.
SixteenBits,
//! @brief A 24 bits hexadecimal value.
TwentyFourBits
TwentyFourBits,
//! @brief Just like printf(%d, myVar);
Integer
};
//! @brief Struct containing information about a register.