// // Created by cbihan on 24/05/2021. // #pragma once #include #include "PPU/TileRenderer.hpp" #include "Ram/Ram.hpp" namespace ComSquare::Debugger { class RAMTileRenderer { private: //! @brief ram to render std::shared_ptr _ram; //! @brief The size to render in the ram int _renderSize; //! @brief The number of tile columns to display int _nbColumns; //! @brief Bytes to skip from the start of the ram int _ramOffset; //! @brief The actual bpp to render int _bpp; //! @brief The class tha actually render the tile PPU::TileRenderer _tileRenderer; public: //! @brief internal buffer std::array, 1024> buffer; //! @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 Set the ram offset void setRamOffset(int offset); //! @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; //! @brief render the selected ram void render(); //! @brief ctor RAMTileRenderer(); //! @brief copy ctor RAMTileRenderer(const RAMTileRenderer &) = default; //! @brief dtor ~RAMTileRenderer() = default; //! @brief assignment operator RAMTileRenderer &operator=(const RAMTileRenderer &) = default; }; }