dynamic buffer size for RAMTileRenderer.cpp is working

This commit is contained in:
Clément Le Bihan
2021-07-26 15:55:10 +02:00
parent 0f66bd2388
commit 87aabbfce4
9 changed files with 39 additions and 33 deletions
+18 -13
View File
@@ -18,29 +18,34 @@ namespace ComSquare::Debugger
buffer({{0}})
{}
/* void prepVector(std::vector<std::vector<uint32_t>> &vector, int nbColumns)
void prepVector(std::vector<std::vector<uint32_t>> &vector, int nbColumns)
{
std::vector<std::vector<uint32_t>> vec(1 * PPU::Tile::NbPixelsHeight, std::vector<uint32_t>(nbColumns * PPU::Tile::NbPixelsWidth, 0));
vector = vec;
return;
std::vector<uint32_t> pixelLine(static_cast<unsigned int>(nbColumns), 0);
vector.reserve(8);
for (int i = 0; i < 8; i++) {
vector.push_back(pixelLine);
}
}*/
}
void RAMTileRenderer::render()
{
this->buffer.clear();
int bufX = 0;
int bufY = 0;
int nbTilesDrawn = 0;
int resetX = bufX;
int nbLinesDrawn = 0;
for (auto &i : this->buffer)
i.fill(0);
//for (auto &i : this->buffer)
// i.fill(0);
uint24_t limit = std::fmin(this->_ram.getSize(), this->_renderSize) + this->_ramOffset;
//std::vector<std::vector<uint32_t>> row;
std::vector<std::vector<uint32_t>> row;
//prepVector(row, this->_nbColumns);
prepVector(row, this->_nbColumns);
for (uint24_t i = this->_ramOffset; i < limit; i += PPU::Tile::BaseByteSize * this->_bpp, nbTilesDrawn++) {
if (bufX > 1024 || bufY > 1024)
break;
@@ -55,17 +60,17 @@ namespace ComSquare::Debugger
nbTilesDrawn = 0;
nbLinesDrawn++;
resetX = 0;
bufX = resetX;
bufY += PPU::Tile::NbPixelsHeight;
//bufX = 0;
//bufY = 0;
//this->buffer.insert(this->buffer.end(), row.begin(), row.end());
//prepVector(row, this->_nbColumns);
//bufX = resetX;
//bufY += PPU::Tile::NbPixelsHeight;
bufX = 0;
bufY = 0;
this->buffer.insert(this->buffer.end(), row.begin(), row.end());
prepVector(row, this->_nbColumns);
}
for (const auto &raw : this->_tileRenderer.buffer) {
for (const auto &pixel : raw) {
this->buffer[bufX++][bufY] = pixel;
row[bufY][bufX++] = pixel;
}
bufY++;
bufX = resetX;
@@ -28,7 +28,8 @@ namespace ComSquare::Debugger
PPU::TileRenderer _tileRenderer;
public:
//! @brief internal buffer
std::array<std::array<uint32_t, 1024>, 1024> buffer;
//std::array<std::array<uint32_t, 1024>, 1024> buffer;
std::vector<std::vector<uint32_t>> buffer;
//! @brief Set the palette to use for render (index of palette)
void setPaletteIndex(int paletteIndex);
//! @brief Set the bpp to render graphics
+1 -1
View File
@@ -118,7 +118,7 @@ namespace ComSquare::Debugger
int j = 0;
for (const auto &row : this->_ramTileRenderer.buffer) {
for (const auto &pixel : row) {
this->_renderer->putPixel(j++, i, pixel);
this->_renderer->putPixel(i, j++, pixel);
}
j = 0;
i++;