mirror of
https://github.com/zoriya/ComSquare.git
synced 2026-06-07 03:34:55 +00:00
adding getters to ppus maps and modifing ram writes
This commit is contained in:
@@ -80,7 +80,7 @@ namespace ComSquare::Debugger
|
|||||||
this->_ui.tabs->addTab("&WRam");
|
this->_ui.tabs->addTab("&WRam");
|
||||||
this->_ui.tabs->addTab("&SRam");
|
this->_ui.tabs->addTab("&SRam");
|
||||||
this->_ui.tabs->addTab("&Rom");
|
this->_ui.tabs->addTab("&Rom");
|
||||||
// this->_ui.tabs->addTab("&VRam");
|
//this->_ui.tabs->addTab("&CGRam");
|
||||||
QMainWindow::connect(this->_ui.actionGoto, &QAction::triggered, this, &MemoryViewer::gotoAddr);
|
QMainWindow::connect(this->_ui.actionGoto, &QAction::triggered, this, &MemoryViewer::gotoAddr);
|
||||||
QMainWindow::connect(this->_ui.actionGoto_Absolute, &QAction::triggered, this, &MemoryViewer::gotoAbsoluteAddr);
|
QMainWindow::connect(this->_ui.actionGoto_Absolute, &QAction::triggered, this, &MemoryViewer::gotoAbsoluteAddr);
|
||||||
QObject::connect(this->_ui.tabs, &QTabBar::currentChanged, this, &MemoryViewer::changeRam);
|
QObject::connect(this->_ui.tabs, &QTabBar::currentChanged, this, &MemoryViewer::changeRam);
|
||||||
@@ -105,9 +105,9 @@ namespace ComSquare::Debugger
|
|||||||
case 2:
|
case 2:
|
||||||
this->_model.setMemory(this->_snes.cartridge);
|
this->_model.setMemory(this->_snes.cartridge);
|
||||||
break;
|
break;
|
||||||
// case 3:
|
// case 3:
|
||||||
// this->_model.setMemory(this->_snes.vram);
|
// this->_model.setMemory(std::make_shared(this->_snes.ppu->getPpuCgRam()));
|
||||||
// break;
|
// break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+26
-10
@@ -55,7 +55,7 @@ namespace ComSquare::PPU
|
|||||||
//throw InvalidAddress("oamdata", addr);
|
//throw InvalidAddress("oamdata", addr);
|
||||||
std::cout << "oamdata" << std::endl;
|
std::cout << "oamdata" << std::endl;
|
||||||
// the oamAddress have to be calculated if fblank or not (not implemented)
|
// the oamAddress have to be calculated if fblank or not (not implemented)
|
||||||
_oamram.write(this->_registers._oamadd.oamAddress, this->_registers._oamdata);
|
_oamram.write_internal(this->_registers._oamadd.oamAddress, this->_registers._oamdata);
|
||||||
this->_registers._oamadd.oamAddress++;
|
this->_registers._oamadd.oamAddress++;
|
||||||
break;
|
break;
|
||||||
case ppuRegisters::bgmode:
|
case ppuRegisters::bgmode:
|
||||||
@@ -109,19 +109,20 @@ namespace ComSquare::PPU
|
|||||||
break;
|
break;
|
||||||
case ppuRegisters::vmdatal:
|
case ppuRegisters::vmdatal:
|
||||||
//throw InvalidAddress("vmdata", addr);
|
//throw InvalidAddress("vmdata", addr);
|
||||||
std::cout << "vmdatal" << std::endl;
|
//std::cout << "vmdatal" << std::endl;
|
||||||
if (!this->_registers._inidisp.fblank) {
|
if (!this->_registers._inidisp.fblank) {
|
||||||
this->_registers._vmdata.vmdatal = data;
|
this->_registers._vmdata.vmdatal = data;
|
||||||
this->_vram.write(getVramAddress(), this->_registers._vmdata.vmdata);
|
this->_vram.write_internal(getVramAddress(), this->_registers._vmdata.vmdata);
|
||||||
}
|
}
|
||||||
if (!this->_registers._vmain.incrementMode)
|
if (!this->_registers._vmain.incrementMode)
|
||||||
this->_registers._vmadd.vmadd += this->_registers._incrementAmount;
|
this->_registers._vmadd.vmadd += this->_registers._incrementAmount;
|
||||||
break;
|
break;
|
||||||
case ppuRegisters::vmdatah:
|
case ppuRegisters::vmdatah:
|
||||||
std::cout << "vmdatah" << std::endl;
|
//std::cout << "vmdatah" << std::endl;
|
||||||
if (!this->_registers._inidisp.fblank) {
|
if (!this->_registers._inidisp.fblank) {
|
||||||
this->_registers._vmdata.vmdatah = data;
|
this->_registers._vmdata.vmdatah = data;
|
||||||
this->_vram.write(getVramAddress(), this->_registers._vmdata.vmdata);
|
this->_vram.write_internal(getVramAddress(), this->_registers._vmdata.vmdatal);
|
||||||
|
this->_vram.write_internal(getVramAddress(), this->_registers._vmdata.vmdatah);
|
||||||
}
|
}
|
||||||
if (this->_registers._vmain.incrementMode)
|
if (this->_registers._vmain.incrementMode)
|
||||||
this->_registers._vmadd.vmadd += this->_registers._incrementAmount;
|
this->_registers._vmadd.vmadd += this->_registers._incrementAmount;
|
||||||
@@ -145,9 +146,9 @@ namespace ComSquare::PPU
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this->_registers._cgdata.cgdatah = data;
|
this->_registers._cgdata.cgdatah = data;
|
||||||
this->_cgram.write(this->_registers._cgadd, this->_registers._cgdata.cgdatah);
|
this->_cgram.write_internal(this->_registers._cgadd, this->_registers._cgdata.cgdatal);
|
||||||
this->_registers._cgadd++;
|
this->_registers._cgadd++;
|
||||||
this->_cgram.write(this->_registers._cgadd, this->_registers._cgdata.cgdatal);
|
this->_cgram.write_internal(this->_registers._cgadd, this->_registers._cgdata.cgdatah);
|
||||||
this->_registers._cgadd++;
|
this->_registers._cgadd++;
|
||||||
}
|
}
|
||||||
this->_registers._isLowByte = !this->_registers._isLowByte;
|
this->_registers._isLowByte = !this->_registers._isLowByte;
|
||||||
@@ -227,8 +228,8 @@ namespace ComSquare::PPU
|
|||||||
uint32_t pixelTmp = 0x0;
|
uint32_t pixelTmp = 0x0;
|
||||||
if (!this->_registers._inidisp.fblank) {
|
if (!this->_registers._inidisp.fblank) {
|
||||||
for (int y = 0; y <= 255; y += 2) {
|
for (int y = 0; y <= 255; y += 2) {
|
||||||
tmp = this->_cgram.read(y);
|
tmp = this->_cgram.read_internal(y);
|
||||||
tmp += this->_cgram.read( y + 1) << 8;
|
tmp += this->_cgram.read_internal( y + 1) << 8;
|
||||||
blue = (tmp & 0x7D00U) >> 10U;
|
blue = (tmp & 0x7D00U) >> 10U;
|
||||||
green = (tmp & 0x03E0U) >> 5U;
|
green = (tmp & 0x03E0U) >> 5U;
|
||||||
red = (tmp & 0x001FU);
|
red = (tmp & 0x001FU);
|
||||||
@@ -398,7 +399,7 @@ namespace ComSquare::PPU
|
|||||||
|
|
||||||
uint16_t PPU::cgramRead(uint8_t addr)
|
uint16_t PPU::cgramRead(uint8_t addr)
|
||||||
{
|
{
|
||||||
return this->_cgram.read(addr);
|
return this->_cgram.read_internal(addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PPU::renderBackground(int bgNumber, std::vector<int> characterSize, int bpp, bool priority)
|
void PPU::renderBackground(int bgNumber, std::vector<int> characterSize, int bpp, bool priority)
|
||||||
@@ -416,4 +417,19 @@ namespace ComSquare::PPU
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Ram::Ram &PPU::getPpuCgRam()
|
||||||
|
{
|
||||||
|
return this->_cgram;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ram::Ram &PPU::getPpuVRam()
|
||||||
|
{
|
||||||
|
return this->_vram;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ram::Ram &PPU::getPpuOAMRam()
|
||||||
|
{
|
||||||
|
return this->_oamram;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -536,6 +536,12 @@ namespace ComSquare::PPU
|
|||||||
virtual bool isDebugger();
|
virtual bool isDebugger();
|
||||||
//! @brief Allow others components to read the CGRAM (Debuggers)
|
//! @brief Allow others components to read the CGRAM (Debuggers)
|
||||||
uint16_t cgramRead(uint8_t addr);
|
uint16_t cgramRead(uint8_t addr);
|
||||||
|
//! @brief Allow Memory Viewer debugger to access the CGRAM
|
||||||
|
Ram::Ram &getPpuCgRam();
|
||||||
|
//! @brief Allow Memory Viewer debugger to access the VRAM
|
||||||
|
Ram::Ram &getPpuVRam();
|
||||||
|
//! @brief Allow Memory Viewer debugger to access the OAMRAM
|
||||||
|
Ram::Ram &getPpuOAMRam();
|
||||||
//! @brief Render a background on the screen
|
//! @brief Render a background on the screen
|
||||||
void renderBackground(int bgNumber, std::vector<int> characterSize, int bpp, bool priority);
|
void renderBackground(int bgNumber, std::vector<int> characterSize, int bpp, bool priority);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user