diff --git a/sources/Debugger/MemoryViewer.cpp b/sources/Debugger/MemoryViewer.cpp index f3880fc..acc55a2 100644 --- a/sources/Debugger/MemoryViewer.cpp +++ b/sources/Debugger/MemoryViewer.cpp @@ -80,7 +80,7 @@ namespace ComSquare::Debugger this->_ui.tabs->addTab("&WRam"); this->_ui.tabs->addTab("&SRam"); 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_Absolute, &QAction::triggered, this, &MemoryViewer::gotoAbsoluteAddr); QObject::connect(this->_ui.tabs, &QTabBar::currentChanged, this, &MemoryViewer::changeRam); @@ -105,9 +105,9 @@ namespace ComSquare::Debugger case 2: this->_model.setMemory(this->_snes.cartridge); break; -// case 3: -// this->_model.setMemory(this->_snes.vram); -// break; + // case 3: + // this->_model.setMemory(std::make_shared(this->_snes.ppu->getPpuCgRam())); + // break; } } diff --git a/sources/PPU/PPU.cpp b/sources/PPU/PPU.cpp index 5a242e7..05bc892 100644 --- a/sources/PPU/PPU.cpp +++ b/sources/PPU/PPU.cpp @@ -55,7 +55,7 @@ namespace ComSquare::PPU //throw InvalidAddress("oamdata", addr); std::cout << "oamdata" << std::endl; // 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++; break; case ppuRegisters::bgmode: @@ -109,19 +109,20 @@ namespace ComSquare::PPU break; case ppuRegisters::vmdatal: //throw InvalidAddress("vmdata", addr); - std::cout << "vmdatal" << std::endl; + //std::cout << "vmdatal" << std::endl; if (!this->_registers._inidisp.fblank) { 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) this->_registers._vmadd.vmadd += this->_registers._incrementAmount; break; case ppuRegisters::vmdatah: - std::cout << "vmdatah" << std::endl; + //std::cout << "vmdatah" << std::endl; if (!this->_registers._inidisp.fblank) { 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) this->_registers._vmadd.vmadd += this->_registers._incrementAmount; @@ -145,9 +146,9 @@ namespace ComSquare::PPU } else { 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->_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._isLowByte = !this->_registers._isLowByte; @@ -227,8 +228,8 @@ namespace ComSquare::PPU uint32_t pixelTmp = 0x0; if (!this->_registers._inidisp.fblank) { for (int y = 0; y <= 255; y += 2) { - tmp = this->_cgram.read(y); - tmp += this->_cgram.read( y + 1) << 8; + tmp = this->_cgram.read_internal(y); + tmp += this->_cgram.read_internal( y + 1) << 8; blue = (tmp & 0x7D00U) >> 10U; green = (tmp & 0x03E0U) >> 5U; red = (tmp & 0x001FU); @@ -398,7 +399,7 @@ namespace ComSquare::PPU 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 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; + } } \ No newline at end of file diff --git a/sources/PPU/PPU.hpp b/sources/PPU/PPU.hpp index ccea871..ed2a16a 100644 --- a/sources/PPU/PPU.hpp +++ b/sources/PPU/PPU.hpp @@ -536,6 +536,12 @@ namespace ComSquare::PPU virtual bool isDebugger(); //! @brief Allow others components to read the CGRAM (Debuggers) 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 void renderBackground(int bgNumber, std::vector characterSize, int bpp, bool priority); };