// // Created by cbihan on 5/7/21. // namespace ComSquare::Renderer { class QtFullSFML; } #include "Renderer/QtRenderer/QtSFML.hpp" #include "TileViewer.hpp" #include "SNES.hpp" #include #include #include #include #include "Utility/Utility.hpp" #include "TileRenderer.hpp" #include "PPU/PPU.hpp" namespace ComSquare::Debugger { TileViewer::TileViewer(SNES &snes, ComSquare::PPU::PPU &ppu) : _window(new ClosableWindow(*this, &TileViewer::disableViewer)), _snes(snes), _ui(), _ppu(ppu), _tileRenderer() { this->_tileRenderer.setRam(ppu.vram); this->_tileRenderer.setCgram(ppu.cgram); this->_window->setContextMenuPolicy(Qt::NoContextMenu); this->_window->setAttribute(Qt::WA_QuitOnClose, false); this->_window->setAttribute(Qt::WA_DeleteOnClose); this->_ui.setupUi(this->_window); //this->_sfWidget = std::make_unique(this->_ui.tab); QMainWindow::connect(this->_ui.NbColumns, QOverload::of(&QSpinBox::valueChanged), this, [this](int nb) -> void { this->setNbColumns(nb); }); QMainWindow::connect(this->_ui.ByteSize, QOverload::of(&QSpinBox::valueChanged), this, [this](int nb) -> void { this->setRenderSize(nb); }); QMainWindow::connect(this->_ui.Address, QOverload::of(&QSpinBox::valueChanged), this, [this](int nb) -> void { this->setRamOffset(nb); }); this->_window->show(); QEvent::registerEventType(); } void TileViewer::disableViewer() { this->_snes.disableTileViewerDebugging(); } void TileViewer::focus() { this->_window->activateWindow(); } bool TileViewer::isDebugger() { return true; } uint16_t TileViewer::read(uint8_t addr) { return this->_ppu.cgramRead(addr); } void TileViewer::setPaletteIndex(int paletteIndex) { this->_tileRenderer.setPaletteIndex(paletteIndex); } void TileViewer::setBpp(int bpp) { this->_tileRenderer.setBpp(bpp); } void TileViewer::setNbColumns(int nbColumns) { this->_tileRenderer.setNbColumns(nbColumns); this->internalUpdate(); } void TileViewer::setRenderSize(int size) { this->_tileRenderer.setRenderSize(size); this->internalUpdate(); } int TileViewer::getBpp() const { return this->_tileRenderer.getBpp(); } int TileViewer::getPaletteIndex() const { return this->_tileRenderer.getPaletteIndex(); } int TileViewer::getNbColumns() const { return this->_tileRenderer.getNbColumns(); } void TileViewer::internalUpdate() { this->_tileRenderer.render(); this->_ppu.add_buffer(this->_tileRenderer.buffer, {200, 200}); } void TileViewer::setRamOffset(int offset) { this->_tileRenderer.setRamOffset(offset); } }