found issues with rendering in 4 bpp

This commit is contained in:
Clément Le Bihan
2021-05-25 00:51:54 +02:00
parent 26d8dd7123
commit 434dea2ba1
3 changed files with 38 additions and 7 deletions

View File

@@ -14,7 +14,7 @@ namespace ComSquare::Debugger
: _ram(nullptr), : _ram(nullptr),
_cgram(nullptr), _cgram(nullptr),
_bpp(2), _bpp(2),
_palette(0), _paletteIndex(0),
_renderSize(5000), _renderSize(5000),
_nbColumns(16), _nbColumns(16),
buffer({{{0}}}) buffer({{{0}}})
@@ -30,7 +30,7 @@ namespace ComSquare::Debugger
{ {
uint8_t colorReference; uint8_t colorReference;
uint24_t color; uint24_t color;
std::vector<uint16_t> palette = this->getPalette(this->_palette); std::vector<uint16_t> palette = this->getPalette(this->_paletteIndex);
int bufX = this->_offsetX; int bufX = this->_offsetX;
int bufY = this->_offsetY; int bufY = this->_offsetY;
int nbTilesDrawn = 0; int nbTilesDrawn = 0;
@@ -46,8 +46,9 @@ namespace ComSquare::Debugger
bufY -= PPU::Tile::NbPixelsHeight; bufY -= PPU::Tile::NbPixelsHeight;
nbTilesDrawn++; nbTilesDrawn++;
} }
if (nbTilesDrawn && nbTilesDrawn % 16 == 0) { if (nbTilesDrawn && nbTilesDrawn % this->_nbColumns == 0) {
nbTilesDrawn = 0; nbTilesDrawn = 0;
break;
resetX = this->_offsetX; resetX = this->_offsetX;
bufX = resetX; bufX = resetX;
bufY += PPU::Tile::NbPixelsHeight; 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) void TileRenderer::setBpp(int bpp)
@@ -127,4 +128,19 @@ namespace ComSquare::Debugger
{ {
this->_nbColumns = nbColumns; this->_nbColumns = nbColumns;
} }
int TileRenderer::getBpp() const
{
return this->_bpp;
}
int TileRenderer::getPaletteIndex() const
{
return this->_paletteIndex;
}
int TileRenderer::getNbColumns() const
{
return this->_nbColumns;
}
} }

View File

@@ -18,7 +18,7 @@ namespace ComSquare::Debugger
//! @brief The bpp to use while rendering //! @brief The bpp to use while rendering
int _bpp; int _bpp;
//! @brief The palette number to use while rendering //! @brief The palette number to use while rendering
int _palette; int _paletteIndex;
//! @brief The size to render in the ram //! @brief The size to render in the ram
int _renderSize; int _renderSize;
//! @brief The number of tile columns to display //! @brief The number of tile columns to display
@@ -30,12 +30,24 @@ namespace ComSquare::Debugger
public: public:
//! @brief internal buffer //! @brief internal buffer
std::array<std::array<uint32_t, 1024>, 1024> buffer; std::array<std::array<uint32_t, 1024>, 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::Ram> ram); void setCgram(std::shared_ptr<Ram::Ram> ram);
//! @brief Set the bpp to render graphics
void setBpp(int bpp); void setBpp(int bpp);
//! @brief Set the number of maximum columns
void setNbColumns(int nbColumns); void setNbColumns(int nbColumns);
//! @brief Set the size of ram to render
void setRenderSize(int size); void setRenderSize(int size);
//! @brief The ram to render
void setRam(std::shared_ptr<Ram::Ram> ram); void setRam(std::shared_ptr<Ram::Ram> 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); uint8_t getPixelReferenceFromTileRow(uint16_t tileRowAddress, uint8_t pixelIndex);
std::vector<uint16_t> getPalette(int nbPalette); std::vector<uint16_t> getPalette(int nbPalette);
//! @brief render the selected ram //! @brief render the selected ram

View File

@@ -468,6 +468,9 @@ namespace ComSquare::PPU
void PPU::update(unsigned cycles) void PPU::update(unsigned cycles)
{ {
(void)cycles; (void)cycles;
this->tileRenderer.setBpp(4);
this->tileRenderer.setPaletteIndex(2);
this->tileRenderer.setNbColumns(1);
this->tileRenderer.render(); this->tileRenderer.render();
this->add_buffer(this->_screen, this->tileRenderer.buffer); this->add_buffer(this->_screen, this->tileRenderer.buffer);