From 434dea2ba17c8880e5187bcd3a9f72e7113dee40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Le=20Bihan?= Date: Tue, 25 May 2021 00:51:54 +0200 Subject: [PATCH] found issues with rendering in 4 bpp --- sources/Debugger/TileViewer/TileRenderer.cpp | 26 ++++++++++++++++---- sources/Debugger/TileViewer/TileRenderer.hpp | 16 ++++++++++-- sources/PPU/PPU.cpp | 3 +++ 3 files changed, 38 insertions(+), 7 deletions(-) diff --git a/sources/Debugger/TileViewer/TileRenderer.cpp b/sources/Debugger/TileViewer/TileRenderer.cpp index 3b2b000..4f24d41 100644 --- a/sources/Debugger/TileViewer/TileRenderer.cpp +++ b/sources/Debugger/TileViewer/TileRenderer.cpp @@ -14,7 +14,7 @@ namespace ComSquare::Debugger : _ram(nullptr), _cgram(nullptr), _bpp(2), - _palette(0), + _paletteIndex(0), _renderSize(5000), _nbColumns(16), buffer({{{0}}}) @@ -30,7 +30,7 @@ namespace ComSquare::Debugger { uint8_t colorReference; uint24_t color; - std::vector palette = this->getPalette(this->_palette); + std::vector palette = this->getPalette(this->_paletteIndex); int bufX = this->_offsetX; int bufY = this->_offsetY; int nbTilesDrawn = 0; @@ -46,8 +46,9 @@ namespace ComSquare::Debugger bufY -= PPU::Tile::NbPixelsHeight; nbTilesDrawn++; } - if (nbTilesDrawn && nbTilesDrawn % 16 == 0) { + if (nbTilesDrawn && nbTilesDrawn % this->_nbColumns == 0) { nbTilesDrawn = 0; + break; resetX = this->_offsetX; bufX = resetX; bufY += PPU::Tile::NbPixelsHeight; @@ -62,9 +63,9 @@ namespace ComSquare::Debugger } } - void TileRenderer::setPalette(int palette) + void TileRenderer::setPaletteIndex(int paletteIndex) { - this->_palette = palette; + this->_paletteIndex = paletteIndex; } void TileRenderer::setBpp(int bpp) @@ -127,4 +128,19 @@ namespace ComSquare::Debugger { this->_nbColumns = nbColumns; } + + int TileRenderer::getBpp() const + { + return this->_bpp; + } + + int TileRenderer::getPaletteIndex() const + { + return this->_paletteIndex; + } + + int TileRenderer::getNbColumns() const + { + return this->_nbColumns; + } } \ No newline at end of file diff --git a/sources/Debugger/TileViewer/TileRenderer.hpp b/sources/Debugger/TileViewer/TileRenderer.hpp index 45c86ce..8788566 100644 --- a/sources/Debugger/TileViewer/TileRenderer.hpp +++ b/sources/Debugger/TileViewer/TileRenderer.hpp @@ -18,7 +18,7 @@ namespace ComSquare::Debugger //! @brief The bpp to use while rendering int _bpp; //! @brief The palette number to use while rendering - int _palette; + int _paletteIndex; //! @brief The size to render in the ram int _renderSize; //! @brief The number of tile columns to display @@ -30,12 +30,24 @@ namespace ComSquare::Debugger public: //! @brief internal buffer std::array, 1024> buffer; - void setPalette(int palette); + //! @brief Set the palette to use for render (index of palette) + void setPaletteIndex(int paletteIndex); + //! @brief Set the ram to look for color references void setCgram(std::shared_ptr ram); + //! @brief Set the bpp to render graphics void setBpp(int bpp); + //! @brief Set the number of maximum columns void setNbColumns(int nbColumns); + //! @brief Set the size of ram to render void setRenderSize(int size); + //! @brief The ram to render void setRam(std::shared_ptr ram); + //! @brief Get the current bpp + int getBpp() const; + //! @brief Get the index of the current palette used + int getPaletteIndex() const; + //! @brief Get the numbr of maximum tile columns to render + int getNbColumns() const; uint8_t getPixelReferenceFromTileRow(uint16_t tileRowAddress, uint8_t pixelIndex); std::vector getPalette(int nbPalette); //! @brief render the selected ram diff --git a/sources/PPU/PPU.cpp b/sources/PPU/PPU.cpp index e71ef61..21c348d 100644 --- a/sources/PPU/PPU.cpp +++ b/sources/PPU/PPU.cpp @@ -468,6 +468,9 @@ namespace ComSquare::PPU void PPU::update(unsigned cycles) { (void)cycles; + this->tileRenderer.setBpp(4); + this->tileRenderer.setPaletteIndex(2); + this->tileRenderer.setNbColumns(1); this->tileRenderer.render(); this->add_buffer(this->_screen, this->tileRenderer.buffer);