mirror of
https://github.com/zoriya/ComSquare.git
synced 2025-12-22 15:15:17 +00:00
found issues with rendering in 4 bpp
This commit is contained in:
@@ -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<uint16_t> palette = this->getPalette(this->_palette);
|
||||
std::vector<uint16_t> 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;
|
||||
}
|
||||
}
|
||||
@@ -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<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);
|
||||
//! @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::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);
|
||||
std::vector<uint16_t> getPalette(int nbPalette);
|
||||
//! @brief render the selected ram
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user