mirror of
https://github.com/zoriya/ComSquare.git
synced 2026-05-27 00:07:10 +00:00
dynamic renderer seems to work but have some resize/ratio issues
This commit is contained in:
@@ -20,15 +20,9 @@ namespace ComSquare::Debugger
|
||||
|
||||
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));
|
||||
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()
|
||||
|
||||
@@ -16,11 +16,12 @@
|
||||
namespace ComSquare::Debugger
|
||||
{
|
||||
TileViewer::TileViewer(SNES &snes, ComSquare::PPU::PPU &ppu)
|
||||
:_window(new ClosableWindow([&snes] { snes.disableTileViewer(); })),
|
||||
: _window(new ClosableWindow([&snes] { snes.disableTileViewer(); })),
|
||||
_snes(snes),
|
||||
_ui(),
|
||||
_ppu(ppu),
|
||||
_ramTileRenderer(ppu.vram, ppu.cgram)
|
||||
_ramTileRenderer(ppu.vram, ppu.cgram),
|
||||
_currentRendererSize(0, 0)
|
||||
{
|
||||
this->_ui.setupUi(this->_window);
|
||||
//this->_qtSfmlRenderer(this->_ui.widget_sfml, 30);
|
||||
@@ -114,14 +115,25 @@ namespace ComSquare::Debugger
|
||||
void TileViewer::internalUpdate()
|
||||
{
|
||||
this->_ramTileRenderer.render();
|
||||
if (this->_ramTileRenderer.buffer.size() != this->_currentRendererSize.y
|
||||
|| this->_ramTileRenderer.buffer.at(0).size() != this->_currentRendererSize.x) {
|
||||
if (this->_ramTileRenderer.buffer.size() == 0 || this->_ramTileRenderer.buffer.at(0).size() == 0)
|
||||
return;
|
||||
this->_currentRendererSize = {static_cast<unsigned int>(this->_ramTileRenderer.buffer.at(0).size()), static_cast<unsigned int>(this->_ramTileRenderer.buffer.size())};
|
||||
this->_renderer->setSize(this->_currentRendererSize.x, this->_currentRendererSize.y);
|
||||
}
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
for (const auto &row : this->_ramTileRenderer.buffer) {
|
||||
for (const auto &pixel : row) {
|
||||
this->_renderer->putPixel(i, j++, pixel);
|
||||
try {
|
||||
for (const auto &row : this->_ramTileRenderer.buffer) {
|
||||
for (const auto &pixel : row) {
|
||||
this->_renderer->putPixel(i, j++, pixel);
|
||||
}
|
||||
j = 0;
|
||||
i++;
|
||||
}
|
||||
j = 0;
|
||||
i++;
|
||||
} catch (const std::exception &e) {
|
||||
std::cout << "cc" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -40,6 +40,8 @@ namespace ComSquare::Debugger
|
||||
//! @brief Change the bpp from the index given by the ui (QT combo box)
|
||||
void _bppChangeUIHandler(int index);
|
||||
|
||||
Vector2<unsigned> _currentRendererSize;
|
||||
|
||||
public:
|
||||
//! @brief ctor
|
||||
explicit TileViewer(SNES &snes, ComSquare::PPU::PPU &ppu);
|
||||
|
||||
Reference in New Issue
Block a user