mirror of
https://github.com/zoriya/ComSquare.git
synced 2026-05-27 16:21:53 +00:00
adding tests for the getPalette function
This commit is contained in:
@@ -46,7 +46,9 @@ namespace ComSquare::PPU
|
||||
//! @return The color Reference
|
||||
uint8_t getPixelReferenceFromTileRow(uint16_t tileRowAddress, uint8_t pixelIndex);
|
||||
//! @brief Gives the actual selected palette with all of it's colors
|
||||
//! @param nbPalette The index of the palette wanted
|
||||
//! @return The array of color of the palette
|
||||
//! @note The return and argument depends on the current bpp
|
||||
//! @warning Values are CGRAM colors use PPU::getRealColor function to get the actual real color
|
||||
std::vector<uint16_t> getPalette(int nbPalette);
|
||||
//! @brief read the 2bpp value for a pixel (used multple times for 4bpp and 8bpp)
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
#include "Ram/Ram.hpp"
|
||||
#include "PPU/Tile.hpp"
|
||||
|
||||
void fillRAMFromStrings(const std::vector<std::string> &values, ComSquare::Ram::Ram &ram)
|
||||
void fillRAM(const std::vector<std::string> &values, ComSquare::Ram::Ram &ram)
|
||||
{
|
||||
uint8_t value;
|
||||
int i = 0;
|
||||
@@ -25,6 +25,16 @@ void fillRAMFromStrings(const std::vector<std::string> &values, ComSquare::Ram::
|
||||
}
|
||||
}
|
||||
|
||||
void fillRAM(const std::vector<int> &values, ComSquare::Ram::Ram &ram)
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
for (const auto &value : values) {
|
||||
ram.write(i++, value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
TEST_CASE("read2BPPValue", "[PPU][TileRenderer]")
|
||||
{
|
||||
ComSquare::Ram::Ram vram(100, static_cast<ComSquare::Component>(0), "vramTest");
|
||||
@@ -99,7 +109,7 @@ TEST_CASE("getPixelReferenceFromTileRow 4bpp", "[PPU][TileRenderer]")
|
||||
"1000540038000000"
|
||||
};
|
||||
|
||||
fillRAMFromStrings(vramValues, vram);
|
||||
fillRAM(vramValues, vram);
|
||||
|
||||
char correctValues[8][8] = {
|
||||
{0, 7, 7, 7, 7, 7, 0, 0},
|
||||
@@ -138,7 +148,7 @@ TEST_CASE("getPixelReferenceFromTileRow 8bpp", "[PPU][TileRenderer]")
|
||||
"00002800000000000000000000000000"
|
||||
};
|
||||
|
||||
fillRAMFromStrings(vramValues, vram);
|
||||
fillRAM(vramValues, vram);
|
||||
uint8_t correctValues[8][8] = {
|
||||
{0x00, 0x22, 0x22, 0x22, 0x23, 0x23, 0x00, 0x00},
|
||||
{0x22, 0x11, 0x42, 0x21, 0x41, 0x11, 0x24, 0x00},
|
||||
@@ -198,7 +208,7 @@ TEST_CASE("getPixelReferenceFromTile 4bpp", "[PPU][TileRenderer]")
|
||||
"1000540038000000"
|
||||
};
|
||||
|
||||
fillRAMFromStrings(vramValues, vram);
|
||||
fillRAM(vramValues, vram);
|
||||
|
||||
char correctValues[8][8] = {
|
||||
{0, 7, 7, 7, 7, 7, 0, 0},
|
||||
@@ -235,7 +245,7 @@ TEST_CASE("getPixelReferenceFromTile 8bpp", "[PPU][TileRenderer]")
|
||||
"00002800000000000000000000000000"
|
||||
};
|
||||
|
||||
fillRAMFromStrings(vramValues, vram);
|
||||
fillRAM(vramValues, vram);
|
||||
uint8_t correctValues[8][8] = {
|
||||
{0x00, 0x22, 0x22, 0x22, 0x23, 0x23, 0x00, 0x00},
|
||||
{0x22, 0x11, 0x42, 0x21, 0x41, 0x11, 0x24, 0x00},
|
||||
@@ -256,3 +266,264 @@ TEST_CASE("getPixelReferenceFromTile 8bpp", "[PPU][TileRenderer]")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("getPalette 2bpp", "[PPU][TileRenderer]")
|
||||
{
|
||||
ComSquare::Ram::Ram vram(10, static_cast<ComSquare::Component>(0), "vramTest");
|
||||
ComSquare::Ram::Ram cgram(512, static_cast<ComSquare::Component>(0), "cgramTest");
|
||||
ComSquare::PPU::TileRenderer tileRenderer(vram, cgram);
|
||||
|
||||
tileRenderer.setBpp(2);
|
||||
|
||||
std::vector<int> cgram_dump = {
|
||||
0xCE, 0x69, 0xDF, 0x63, 0xDE, 0x16, 0x8B, 0x00, 0x00, 0x00, 0xBF, 0x67, 0x98, 0x42, 0x0E, 0x15, 0x00, 0x00,
|
||||
0xBF, 0x4B, 0xDD, 0x01, 0xCB, 0x0C, 0x00, 0x00, 0xDF, 0x55, 0x3C, 0x0C, 0x8B, 0x10, 0xCE, 0x69, 0x95, 0x7A,
|
||||
0x74, 0x76, 0x53, 0x72, 0x32, 0x6E, 0x11, 0x6A, 0xF0, 0x69, 0xEF, 0x69, 0xDC, 0x7B, 0x16, 0x67, 0x73, 0x5A,
|
||||
0x0F, 0x42, 0x4C, 0x31, 0xE9, 0x24, 0x76, 0x21, 0x34, 0x19, 0xCE, 0x69, 0xDF, 0x57, 0x3C, 0x47, 0xDB, 0x3A,
|
||||
0x78, 0x2E, 0x16, 0x26, 0xB4, 0x19, 0x52, 0x11, 0xA9, 0x08, 0xBE, 0x3A, 0x1B, 0x26, 0x99, 0x21, 0x76, 0x21,
|
||||
0x34, 0x19, 0x0F, 0x0D, 0xEB, 0x10, 0xCE, 0x69, 0xC7, 0x18, 0xBC, 0x3E, 0x1B, 0x2E, 0x96, 0x4E, 0x2B, 0x41,
|
||||
0xCD, 0x10, 0x39, 0x57, 0xF2, 0x35, 0x8E, 0x29, 0x09, 0x1D, 0x16, 0x26, 0x8A, 0x10, 0xE9, 0x34, 0x76, 0x21,
|
||||
0x34, 0x19, 0xDF, 0x57, 0xB2, 0x64, 0xAF, 0x54, 0xCE, 0x3C, 0x57, 0x22, 0x71, 0x19, 0xCC, 0x20, 0xF7, 0x51,
|
||||
0xCB, 0x0C, 0x15, 0x75, 0xB9, 0x21, 0x76, 0x21, 0x54, 0x1D, 0x12, 0x15, 0xF0, 0x10, 0xCD, 0x0C, 0xCE, 0x69,
|
||||
0x5F, 0x3B, 0xDC, 0x3A, 0x3B, 0x26, 0xB7, 0x19, 0x53, 0x15, 0xED, 0x10, 0xA9, 0x0C, 0xFE, 0x59, 0x5B, 0x41,
|
||||
0xF6, 0x34, 0xB3, 0x28, 0x90, 0x20, 0x6E, 0x18, 0x76, 0x21, 0x34, 0x19, 0xCE, 0x69, 0xDE, 0x5F, 0xFC, 0x3A,
|
||||
0x79, 0x26, 0xF5, 0x19, 0x71, 0x15, 0x0B, 0x11, 0xC8, 0x0C, 0x94, 0x5F, 0x29, 0x3F, 0x69, 0x3A, 0xA9, 0x35,
|
||||
0x47, 0x2D, 0x04, 0x2D, 0x76, 0x21, 0x34, 0x19, 0xCE, 0x69, 0x17, 0x2E, 0x37, 0x2E, 0xF5, 0x25, 0xB3, 0x21,
|
||||
0x71, 0x21, 0x2F, 0x25, 0x6E, 0x35, 0x11, 0x6A, 0xEE, 0x08, 0xB0, 0x51, 0xD2, 0x18, 0xD0, 0x1C, 0x11, 0x0D,
|
||||
0x7A, 0x36, 0x0E, 0x21, 0x0B, 0x46, 0x37, 0x2E, 0xBA, 0x42, 0x7D, 0x63, 0xCF, 0x04, 0x38, 0x09, 0x1C, 0x2A,
|
||||
0xDC, 0x4A, 0x1C, 0x14, 0x28, 0x44, 0x6F, 0x58, 0x52, 0x6D, 0x91, 0x1D, 0x2C, 0x11, 0xA8, 0x14, 0x00, 0x00,
|
||||
0x48, 0x2D, 0x6A, 0x00, 0xCE, 0x08, 0x78, 0x0D, 0xFC, 0x15, 0xBE, 0x1E, 0x5C, 0x63, 0x33, 0x46, 0x0A, 0x6D,
|
||||
0x46, 0x30, 0xBA, 0x14, 0xB1, 0x75, 0x13, 0x0D, 0x0C, 0x08, 0xC9, 0x38, 0x00, 0x00, 0xF0, 0x31, 0xAA, 0x04,
|
||||
0xE0, 0x14, 0x80, 0x05, 0x00, 0x53, 0x80, 0x73, 0x9C, 0x7F, 0x10, 0x00, 0x3C, 0x0C, 0xDF, 0x55, 0xFC, 0x26,
|
||||
0x9E, 0x5B, 0x5C, 0x32, 0xD7, 0x21, 0x12, 0x11, 0x8E, 0x08, 0xCE, 0x69, 0xDF, 0x57, 0x3C, 0x47, 0xDB, 0x3A,
|
||||
0x78, 0x2E, 0x16, 0x26, 0xB4, 0x19, 0x52, 0x11, 0x88, 0x08, 0xBE, 0x3A, 0x1B, 0x26, 0x99, 0x21, 0x76, 0x21,
|
||||
0x34, 0x19, 0x0F, 0x0D, 0xEB, 0x10, 0x30, 0x15, 0x0A, 0x0D, 0x2C, 0x11, 0x4D, 0x19, 0xF3, 0x25, 0x35, 0x36,
|
||||
0xB9, 0x4A, 0x74, 0x42, 0x19, 0x57, 0xF0, 0x31, 0x9C, 0x73, 0xCC, 0x00, 0x10, 0x01, 0x76, 0x01, 0x3E, 0x03,
|
||||
0x00, 0x00, 0xEA, 0x29, 0xE6, 0x00, 0x07, 0x09, 0x29, 0x11, 0x8C, 0x19, 0xEE, 0x21, 0x50, 0x2A, 0xB2, 0x32,
|
||||
0x34, 0x43, 0xA0, 0x01, 0x40, 0x02, 0xE1, 0x16, 0x80, 0x2B, 0x9C, 0x73, 0x00, 0x00, 0x00, 0x00, 0x88, 0x29,
|
||||
0x6F, 0x21, 0x98, 0x3E, 0x7D, 0x63, 0xED, 0x04, 0xEF, 0x08, 0x56, 0x15, 0x5C, 0x2E, 0xDD, 0x3E, 0x3C, 0x4F,
|
||||
0xF1, 0x00, 0x1C, 0x00, 0x3B, 0x01, 0x9E, 0x02, 0xA5, 0x14, 0x00, 0x00, 0x88, 0x29, 0xD3, 0x2D, 0x4D, 0x19,
|
||||
0xF9, 0x52, 0xAB, 0x08, 0x56, 0x15, 0x5C, 0x2E, 0x35, 0x32, 0x0D, 0x00, 0x05, 0x28, 0x66, 0x40, 0x9A, 0x10,
|
||||
0xC9, 0x0C, 0xD2, 0x25, 0xA5, 0x14, 0x00, 0x00
|
||||
};
|
||||
|
||||
fillRAM(cgram_dump, cgram);
|
||||
uint16_t correctValues[64][4] = {
|
||||
{0x69ce, 0x63df, 0x16de, 0x008b},
|
||||
{0x0000, 0x67bf, 0x4298, 0x150e},
|
||||
{0x0000, 0x4bbf, 0x01dd, 0x0ccb},
|
||||
{0x0000, 0x55df, 0x0c3c, 0x108b},
|
||||
{0x69ce, 0x7a95, 0x7674, 0x7253},
|
||||
{0x6e32, 0x6a11, 0x69f0, 0x69ef},
|
||||
{0x7bdc, 0x6716, 0x5a73, 0x420f},
|
||||
{0x314c, 0x24e9, 0x2176, 0x1934},
|
||||
{0x69ce, 0x57df, 0x473c, 0x3adb},
|
||||
{0x2e78, 0x2616, 0x19b4, 0x1152},
|
||||
{0x08a9, 0x3abe, 0x261b, 0x2199},
|
||||
{0x2176, 0x1934, 0x0d0f, 0x10eb},
|
||||
{0x69ce, 0x18c7, 0x3ebc, 0x2e1b},
|
||||
{0x4e96, 0x412b, 0x10cd, 0x5739},
|
||||
{0x35f2, 0x298e, 0x1d09, 0x2616},
|
||||
{0x108a, 0x34e9, 0x2176, 0x1934},
|
||||
{0x57df, 0x64b2, 0x54af, 0x3cce},
|
||||
{0x2257, 0x1971, 0x20cc, 0x51f7},
|
||||
{0x0ccb, 0x7515, 0x21b9, 0x2176},
|
||||
{0x1d54, 0x1512, 0x10f0, 0x0ccd},
|
||||
{0x69ce, 0x3b5f, 0x3adc, 0x263b},
|
||||
{0x19b7, 0x1553, 0x10ed, 0x0ca9},
|
||||
{0x59fe, 0x415b, 0x34f6, 0x28b3},
|
||||
{0x2090, 0x186e, 0x2176, 0x1934},
|
||||
{0x69ce, 0x5fde, 0x3afc, 0x2679},
|
||||
{0x19f5, 0x1571, 0x110b, 0x0cc8},
|
||||
{0x5f94, 0x3f29, 0x3a69, 0x35a9},
|
||||
{0x2d47, 0x2d04, 0x2176, 0x1934},
|
||||
{0x69ce, 0x2e17, 0x2e37, 0x25f5},
|
||||
{0x21b3, 0x2171, 0x252f, 0x356e},
|
||||
{0x6a11, 0x08ee, 0x51b0, 0x18d2},
|
||||
{0x1cd0, 0x0d11, 0x367a, 0x210e},
|
||||
{0x460b, 0x2e37, 0x42ba, 0x637d},
|
||||
{0x04cf, 0x0938, 0x2a1c, 0x4adc},
|
||||
{0x141c, 0x4428, 0x586f, 0x6d52},
|
||||
{0x1d91, 0x112c, 0x14a8, 0x0000},
|
||||
{0x2d48, 0x006a, 0x08ce, 0x0d78},
|
||||
{0x15fc, 0x1ebe, 0x635c, 0x4633},
|
||||
{0x6d0a, 0x3046, 0x14ba, 0x75b1},
|
||||
{0x0d13, 0x080c, 0x38c9, 0x0000},
|
||||
{0x31f0, 0x04aa, 0x14e0, 0x0580},
|
||||
{0x5300, 0x7380, 0x7f9c, 0x0010},
|
||||
{0x0c3c, 0x55df, 0x26fc, 0x5b9e},
|
||||
{0x325c, 0x21d7, 0x1112, 0x088e},
|
||||
{0x69ce, 0x57df, 0x473c, 0x3adb},
|
||||
{0x2e78, 0x2616, 0x19b4, 0x1152},
|
||||
{0x0888, 0x3abe, 0x261b, 0x2199},
|
||||
{0x2176, 0x1934, 0x0d0f, 0x10eb},
|
||||
{0x1530, 0x0d0a, 0x112c, 0x194d},
|
||||
{0x25f3, 0x3635, 0x4ab9, 0x4274},
|
||||
{0x5719, 0x31f0, 0x739c, 0x00cc},
|
||||
{0x0110, 0x0176, 0x033e, 0x0000},
|
||||
{0x29ea, 0x00e6, 0x0907, 0x1129},
|
||||
{0x198c, 0x21ee, 0x2a50, 0x32b2},
|
||||
{0x4334, 0x01a0, 0x0240, 0x16e1},
|
||||
{0x2b80, 0x739c, 0x0000, 0x0000},
|
||||
{0x2988, 0x216f, 0x3e98, 0x637d},
|
||||
{0x04ed, 0x08ef, 0x1556, 0x2e5c},
|
||||
{0x3edd, 0x4f3c, 0x00f1, 0x001c},
|
||||
{0x013b, 0x029e, 0x14a5, 0x0000},
|
||||
{0x2988, 0x2dd3, 0x194d, 0x52f9},
|
||||
{0x08ab, 0x1556, 0x2e5c, 0x3235},
|
||||
{0x000d, 0x2805, 0x4066, 0x109a},
|
||||
{0x0cc9, 0x25d2, 0x14a5, 0x0000}
|
||||
};
|
||||
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
for (const auto &row : correctValues) {
|
||||
const auto &palette = tileRenderer.getPalette(j++);
|
||||
for (const auto &refValue : row) {
|
||||
CHECK(palette.at(i++) == refValue);
|
||||
}
|
||||
i = 0;
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("getPalette 4bpp", "[PPU][TileRenderer]")
|
||||
{
|
||||
ComSquare::Ram::Ram vram(10, static_cast<ComSquare::Component>(0), "vramTest");
|
||||
ComSquare::Ram::Ram cgram(512, static_cast<ComSquare::Component>(0), "cgramTest");
|
||||
ComSquare::PPU::TileRenderer tileRenderer(vram, cgram);
|
||||
|
||||
tileRenderer.setBpp(4);
|
||||
|
||||
std::vector<int> cgram_dump = {
|
||||
0xCE, 0x69, 0xDF, 0x63, 0xDE, 0x16, 0x8B, 0x00, 0x00, 0x00, 0xBF, 0x67, 0x98, 0x42, 0x0E, 0x15, 0x00, 0x00,
|
||||
0xBF, 0x4B, 0xDD, 0x01, 0xCB, 0x0C, 0x00, 0x00, 0xDF, 0x55, 0x3C, 0x0C, 0x8B, 0x10, 0xCE, 0x69, 0x95, 0x7A,
|
||||
0x74, 0x76, 0x53, 0x72, 0x32, 0x6E, 0x11, 0x6A, 0xF0, 0x69, 0xEF, 0x69, 0xDC, 0x7B, 0x16, 0x67, 0x73, 0x5A,
|
||||
0x0F, 0x42, 0x4C, 0x31, 0xE9, 0x24, 0x76, 0x21, 0x34, 0x19, 0xCE, 0x69, 0xDF, 0x57, 0x3C, 0x47, 0xDB, 0x3A,
|
||||
0x78, 0x2E, 0x16, 0x26, 0xB4, 0x19, 0x52, 0x11, 0xA9, 0x08, 0xBE, 0x3A, 0x1B, 0x26, 0x99, 0x21, 0x76, 0x21,
|
||||
0x34, 0x19, 0x0F, 0x0D, 0xEB, 0x10, 0xCE, 0x69, 0xC7, 0x18, 0xBC, 0x3E, 0x1B, 0x2E, 0x96, 0x4E, 0x2B, 0x41,
|
||||
0xCD, 0x10, 0x39, 0x57, 0xF2, 0x35, 0x8E, 0x29, 0x09, 0x1D, 0x16, 0x26, 0x8A, 0x10, 0xE9, 0x34, 0x76, 0x21,
|
||||
0x34, 0x19, 0xDF, 0x57, 0xB2, 0x64, 0xAF, 0x54, 0xCE, 0x3C, 0x57, 0x22, 0x71, 0x19, 0xCC, 0x20, 0xF7, 0x51,
|
||||
0xCB, 0x0C, 0x15, 0x75, 0xB9, 0x21, 0x76, 0x21, 0x54, 0x1D, 0x12, 0x15, 0xF0, 0x10, 0xCD, 0x0C, 0xCE, 0x69,
|
||||
0x5F, 0x3B, 0xDC, 0x3A, 0x3B, 0x26, 0xB7, 0x19, 0x53, 0x15, 0xED, 0x10, 0xA9, 0x0C, 0xFE, 0x59, 0x5B, 0x41,
|
||||
0xF6, 0x34, 0xB3, 0x28, 0x90, 0x20, 0x6E, 0x18, 0x76, 0x21, 0x34, 0x19, 0xCE, 0x69, 0xDE, 0x5F, 0xFC, 0x3A,
|
||||
0x79, 0x26, 0xF5, 0x19, 0x71, 0x15, 0x0B, 0x11, 0xC8, 0x0C, 0x94, 0x5F, 0x29, 0x3F, 0x69, 0x3A, 0xA9, 0x35,
|
||||
0x47, 0x2D, 0x04, 0x2D, 0x76, 0x21, 0x34, 0x19, 0xCE, 0x69, 0x17, 0x2E, 0x37, 0x2E, 0xF5, 0x25, 0xB3, 0x21,
|
||||
0x71, 0x21, 0x2F, 0x25, 0x6E, 0x35, 0x11, 0x6A, 0xEE, 0x08, 0xB0, 0x51, 0xD2, 0x18, 0xD0, 0x1C, 0x11, 0x0D,
|
||||
0x7A, 0x36, 0x0E, 0x21, 0x0B, 0x46, 0x37, 0x2E, 0xBA, 0x42, 0x7D, 0x63, 0xCF, 0x04, 0x38, 0x09, 0x1C, 0x2A,
|
||||
0xDC, 0x4A, 0x1C, 0x14, 0x28, 0x44, 0x6F, 0x58, 0x52, 0x6D, 0x91, 0x1D, 0x2C, 0x11, 0xA8, 0x14, 0x00, 0x00,
|
||||
0x48, 0x2D, 0x6A, 0x00, 0xCE, 0x08, 0x78, 0x0D, 0xFC, 0x15, 0xBE, 0x1E, 0x5C, 0x63, 0x33, 0x46, 0x0A, 0x6D,
|
||||
0x46, 0x30, 0xBA, 0x14, 0xB1, 0x75, 0x13, 0x0D, 0x0C, 0x08, 0xC9, 0x38, 0x00, 0x00, 0xF0, 0x31, 0xAA, 0x04,
|
||||
0xE0, 0x14, 0x80, 0x05, 0x00, 0x53, 0x80, 0x73, 0x9C, 0x7F, 0x10, 0x00, 0x3C, 0x0C, 0xDF, 0x55, 0xFC, 0x26,
|
||||
0x9E, 0x5B, 0x5C, 0x32, 0xD7, 0x21, 0x12, 0x11, 0x8E, 0x08, 0xCE, 0x69, 0xDF, 0x57, 0x3C, 0x47, 0xDB, 0x3A,
|
||||
0x78, 0x2E, 0x16, 0x26, 0xB4, 0x19, 0x52, 0x11, 0x88, 0x08, 0xBE, 0x3A, 0x1B, 0x26, 0x99, 0x21, 0x76, 0x21,
|
||||
0x34, 0x19, 0x0F, 0x0D, 0xEB, 0x10, 0x30, 0x15, 0x0A, 0x0D, 0x2C, 0x11, 0x4D, 0x19, 0xF3, 0x25, 0x35, 0x36,
|
||||
0xB9, 0x4A, 0x74, 0x42, 0x19, 0x57, 0xF0, 0x31, 0x9C, 0x73, 0xCC, 0x00, 0x10, 0x01, 0x76, 0x01, 0x3E, 0x03,
|
||||
0x00, 0x00, 0xEA, 0x29, 0xE6, 0x00, 0x07, 0x09, 0x29, 0x11, 0x8C, 0x19, 0xEE, 0x21, 0x50, 0x2A, 0xB2, 0x32,
|
||||
0x34, 0x43, 0xA0, 0x01, 0x40, 0x02, 0xE1, 0x16, 0x80, 0x2B, 0x9C, 0x73, 0x00, 0x00, 0x00, 0x00, 0x88, 0x29,
|
||||
0x6F, 0x21, 0x98, 0x3E, 0x7D, 0x63, 0xED, 0x04, 0xEF, 0x08, 0x56, 0x15, 0x5C, 0x2E, 0xDD, 0x3E, 0x3C, 0x4F,
|
||||
0xF1, 0x00, 0x1C, 0x00, 0x3B, 0x01, 0x9E, 0x02, 0xA5, 0x14, 0x00, 0x00, 0x88, 0x29, 0xD3, 0x2D, 0x4D, 0x19,
|
||||
0xF9, 0x52, 0xAB, 0x08, 0x56, 0x15, 0x5C, 0x2E, 0x35, 0x32, 0x0D, 0x00, 0x05, 0x28, 0x66, 0x40, 0x9A, 0x10,
|
||||
0xC9, 0x0C, 0xD2, 0x25, 0xA5, 0x14, 0x00, 0x00
|
||||
};
|
||||
|
||||
fillRAM(cgram_dump, cgram);
|
||||
uint16_t correctValues[16][16] = {
|
||||
{0x69ce, 0x63df, 0x16de, 0x008b, 0x0000, 0x67bf, 0x4298, 0x150e, 0x0000, 0x4bbf, 0x01dd, 0x0ccb, 0x0000, 0x55df, 0x0c3c, 0x108b},
|
||||
{0x69ce, 0x7a95, 0x7674, 0x7253, 0x6e32, 0x6a11, 0x69f0, 0x69ef, 0x7bdc, 0x6716, 0x5a73, 0x420f, 0x314c, 0x24e9, 0x2176, 0x1934},
|
||||
{0x69ce, 0x57df, 0x473c, 0x3adb, 0x2e78, 0x2616, 0x19b4, 0x1152, 0x08a9, 0x3abe, 0x261b, 0x2199, 0x2176, 0x1934, 0x0d0f, 0x10eb},
|
||||
{0x69ce, 0x18c7, 0x3ebc, 0x2e1b, 0x4e96, 0x412b, 0x10cd, 0x5739, 0x35f2, 0x298e, 0x1d09, 0x2616, 0x108a, 0x34e9, 0x2176, 0x1934},
|
||||
{0x57df, 0x64b2, 0x54af, 0x3cce, 0x2257, 0x1971, 0x20cc, 0x51f7, 0x0ccb, 0x7515, 0x21b9, 0x2176, 0x1d54, 0x1512, 0x10f0, 0x0ccd},
|
||||
{0x69ce, 0x3b5f, 0x3adc, 0x263b, 0x19b7, 0x1553, 0x10ed, 0x0ca9, 0x59fe, 0x415b, 0x34f6, 0x28b3, 0x2090, 0x186e, 0x2176, 0x1934},
|
||||
{0x69ce, 0x5fde, 0x3afc, 0x2679, 0x19f5, 0x1571, 0x110b, 0x0cc8, 0x5f94, 0x3f29, 0x3a69, 0x35a9, 0x2d47, 0x2d04, 0x2176, 0x1934},
|
||||
{0x69ce, 0x2e17, 0x2e37, 0x25f5, 0x21b3, 0x2171, 0x252f, 0x356e, 0x6a11, 0x08ee, 0x51b0, 0x18d2, 0x1cd0, 0x0d11, 0x367a, 0x210e},
|
||||
{0x460b, 0x2e37, 0x42ba, 0x637d, 0x04cf, 0x0938, 0x2a1c, 0x4adc, 0x141c, 0x4428, 0x586f, 0x6d52, 0x1d91, 0x112c, 0x14a8, 0x0000},
|
||||
{0x2d48, 0x006a, 0x08ce, 0x0d78, 0x15fc, 0x1ebe, 0x635c, 0x4633, 0x6d0a, 0x3046, 0x14ba, 0x75b1, 0x0d13, 0x080c, 0x38c9, 0x0000},
|
||||
{0x31f0, 0x04aa, 0x14e0, 0x0580, 0x5300, 0x7380, 0x7f9c, 0x0010, 0x0c3c, 0x55df, 0x26fc, 0x5b9e, 0x325c, 0x21d7, 0x1112, 0x088e},
|
||||
{0x69ce, 0x57df, 0x473c, 0x3adb, 0x2e78, 0x2616, 0x19b4, 0x1152, 0x0888, 0x3abe, 0x261b, 0x2199, 0x2176, 0x1934, 0x0d0f, 0x10eb},
|
||||
{0x1530, 0x0d0a, 0x112c, 0x194d, 0x25f3, 0x3635, 0x4ab9, 0x4274, 0x5719, 0x31f0, 0x739c, 0x00cc, 0x0110, 0x0176, 0x033e, 0x0000},
|
||||
{0x29ea, 0x00e6, 0x0907, 0x1129, 0x198c, 0x21ee, 0x2a50, 0x32b2, 0x4334, 0x01a0, 0x0240, 0x16e1, 0x2b80, 0x739c, 0x0000, 0x0000},
|
||||
{0x2988, 0x216f, 0x3e98, 0x637d, 0x04ed, 0x08ef, 0x1556, 0x2e5c, 0x3edd, 0x4f3c, 0x00f1, 0x001c, 0x013b, 0x029e, 0x14a5, 0x0000},
|
||||
{0x2988, 0x2dd3, 0x194d, 0x52f9, 0x08ab, 0x1556, 0x2e5c, 0x3235, 0x000d, 0x2805, 0x4066, 0x109a, 0x0cc9, 0x25d2, 0x14a5, 0x0000}
|
||||
};
|
||||
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
for (const auto &row : correctValues) {
|
||||
const auto &palette = tileRenderer.getPalette(j++);
|
||||
for (const auto &refValue : row) {
|
||||
CHECK(palette.at(i++) == refValue);
|
||||
}
|
||||
i = 0;
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("getPalette 8bpp", "[PPU][TileRenderer]")
|
||||
{
|
||||
ComSquare::Ram::Ram vram(10, static_cast<ComSquare::Component>(0), "vramTest");
|
||||
ComSquare::Ram::Ram cgram(512, static_cast<ComSquare::Component>(0), "cgramTest");
|
||||
ComSquare::PPU::TileRenderer tileRenderer(vram, cgram);
|
||||
|
||||
tileRenderer.setBpp(8);
|
||||
|
||||
std::vector<int> cgram_dump = {
|
||||
0xCE, 0x69, 0xDF, 0x63, 0xDE, 0x16, 0x8B, 0x00, 0x00, 0x00, 0xBF, 0x67, 0x98, 0x42, 0x0E, 0x15, 0x00, 0x00,
|
||||
0xBF, 0x4B, 0xDD, 0x01, 0xCB, 0x0C, 0x00, 0x00, 0xDF, 0x55, 0x3C, 0x0C, 0x8B, 0x10, 0xCE, 0x69, 0x95, 0x7A,
|
||||
0x74, 0x76, 0x53, 0x72, 0x32, 0x6E, 0x11, 0x6A, 0xF0, 0x69, 0xEF, 0x69, 0xDC, 0x7B, 0x16, 0x67, 0x73, 0x5A,
|
||||
0x0F, 0x42, 0x4C, 0x31, 0xE9, 0x24, 0x76, 0x21, 0x34, 0x19, 0xCE, 0x69, 0xDF, 0x57, 0x3C, 0x47, 0xDB, 0x3A,
|
||||
0x78, 0x2E, 0x16, 0x26, 0xB4, 0x19, 0x52, 0x11, 0xA9, 0x08, 0xBE, 0x3A, 0x1B, 0x26, 0x99, 0x21, 0x76, 0x21,
|
||||
0x34, 0x19, 0x0F, 0x0D, 0xEB, 0x10, 0xCE, 0x69, 0xC7, 0x18, 0xBC, 0x3E, 0x1B, 0x2E, 0x96, 0x4E, 0x2B, 0x41,
|
||||
0xCD, 0x10, 0x39, 0x57, 0xF2, 0x35, 0x8E, 0x29, 0x09, 0x1D, 0x16, 0x26, 0x8A, 0x10, 0xE9, 0x34, 0x76, 0x21,
|
||||
0x34, 0x19, 0xDF, 0x57, 0xB2, 0x64, 0xAF, 0x54, 0xCE, 0x3C, 0x57, 0x22, 0x71, 0x19, 0xCC, 0x20, 0xF7, 0x51,
|
||||
0xCB, 0x0C, 0x15, 0x75, 0xB9, 0x21, 0x76, 0x21, 0x54, 0x1D, 0x12, 0x15, 0xF0, 0x10, 0xCD, 0x0C, 0xCE, 0x69,
|
||||
0x5F, 0x3B, 0xDC, 0x3A, 0x3B, 0x26, 0xB7, 0x19, 0x53, 0x15, 0xED, 0x10, 0xA9, 0x0C, 0xFE, 0x59, 0x5B, 0x41,
|
||||
0xF6, 0x34, 0xB3, 0x28, 0x90, 0x20, 0x6E, 0x18, 0x76, 0x21, 0x34, 0x19, 0xCE, 0x69, 0xDE, 0x5F, 0xFC, 0x3A,
|
||||
0x79, 0x26, 0xF5, 0x19, 0x71, 0x15, 0x0B, 0x11, 0xC8, 0x0C, 0x94, 0x5F, 0x29, 0x3F, 0x69, 0x3A, 0xA9, 0x35,
|
||||
0x47, 0x2D, 0x04, 0x2D, 0x76, 0x21, 0x34, 0x19, 0xCE, 0x69, 0x17, 0x2E, 0x37, 0x2E, 0xF5, 0x25, 0xB3, 0x21,
|
||||
0x71, 0x21, 0x2F, 0x25, 0x6E, 0x35, 0x11, 0x6A, 0xEE, 0x08, 0xB0, 0x51, 0xD2, 0x18, 0xD0, 0x1C, 0x11, 0x0D,
|
||||
0x7A, 0x36, 0x0E, 0x21, 0x0B, 0x46, 0x37, 0x2E, 0xBA, 0x42, 0x7D, 0x63, 0xCF, 0x04, 0x38, 0x09, 0x1C, 0x2A,
|
||||
0xDC, 0x4A, 0x1C, 0x14, 0x28, 0x44, 0x6F, 0x58, 0x52, 0x6D, 0x91, 0x1D, 0x2C, 0x11, 0xA8, 0x14, 0x00, 0x00,
|
||||
0x48, 0x2D, 0x6A, 0x00, 0xCE, 0x08, 0x78, 0x0D, 0xFC, 0x15, 0xBE, 0x1E, 0x5C, 0x63, 0x33, 0x46, 0x0A, 0x6D,
|
||||
0x46, 0x30, 0xBA, 0x14, 0xB1, 0x75, 0x13, 0x0D, 0x0C, 0x08, 0xC9, 0x38, 0x00, 0x00, 0xF0, 0x31, 0xAA, 0x04,
|
||||
0xE0, 0x14, 0x80, 0x05, 0x00, 0x53, 0x80, 0x73, 0x9C, 0x7F, 0x10, 0x00, 0x3C, 0x0C, 0xDF, 0x55, 0xFC, 0x26,
|
||||
0x9E, 0x5B, 0x5C, 0x32, 0xD7, 0x21, 0x12, 0x11, 0x8E, 0x08, 0xCE, 0x69, 0xDF, 0x57, 0x3C, 0x47, 0xDB, 0x3A,
|
||||
0x78, 0x2E, 0x16, 0x26, 0xB4, 0x19, 0x52, 0x11, 0x88, 0x08, 0xBE, 0x3A, 0x1B, 0x26, 0x99, 0x21, 0x76, 0x21,
|
||||
0x34, 0x19, 0x0F, 0x0D, 0xEB, 0x10, 0x30, 0x15, 0x0A, 0x0D, 0x2C, 0x11, 0x4D, 0x19, 0xF3, 0x25, 0x35, 0x36,
|
||||
0xB9, 0x4A, 0x74, 0x42, 0x19, 0x57, 0xF0, 0x31, 0x9C, 0x73, 0xCC, 0x00, 0x10, 0x01, 0x76, 0x01, 0x3E, 0x03,
|
||||
0x00, 0x00, 0xEA, 0x29, 0xE6, 0x00, 0x07, 0x09, 0x29, 0x11, 0x8C, 0x19, 0xEE, 0x21, 0x50, 0x2A, 0xB2, 0x32,
|
||||
0x34, 0x43, 0xA0, 0x01, 0x40, 0x02, 0xE1, 0x16, 0x80, 0x2B, 0x9C, 0x73, 0x00, 0x00, 0x00, 0x00, 0x88, 0x29,
|
||||
0x6F, 0x21, 0x98, 0x3E, 0x7D, 0x63, 0xED, 0x04, 0xEF, 0x08, 0x56, 0x15, 0x5C, 0x2E, 0xDD, 0x3E, 0x3C, 0x4F,
|
||||
0xF1, 0x00, 0x1C, 0x00, 0x3B, 0x01, 0x9E, 0x02, 0xA5, 0x14, 0x00, 0x00, 0x88, 0x29, 0xD3, 0x2D, 0x4D, 0x19,
|
||||
0xF9, 0x52, 0xAB, 0x08, 0x56, 0x15, 0x5C, 0x2E, 0x35, 0x32, 0x0D, 0x00, 0x05, 0x28, 0x66, 0x40, 0x9A, 0x10,
|
||||
0xC9, 0x0C, 0xD2, 0x25, 0xA5, 0x14, 0x00, 0x00
|
||||
};
|
||||
|
||||
fillRAM(cgram_dump, cgram);
|
||||
uint16_t correctValues[1][256] = {
|
||||
{0x69ce, 0x63df, 0x16de, 0x008b, 0x0000, 0x67bf, 0x4298, 0x150e, 0x0000, 0x4bbf, 0x01dd, 0x0ccb, 0x0000, 0x55df, 0x0c3c, 0x108b,
|
||||
0x69ce, 0x7a95, 0x7674, 0x7253, 0x6e32, 0x6a11, 0x69f0, 0x69ef, 0x7bdc, 0x6716, 0x5a73, 0x420f, 0x314c, 0x24e9, 0x2176, 0x1934,
|
||||
0x69ce, 0x57df, 0x473c, 0x3adb, 0x2e78, 0x2616, 0x19b4, 0x1152, 0x08a9, 0x3abe, 0x261b, 0x2199, 0x2176, 0x1934, 0x0d0f, 0x10eb,
|
||||
0x69ce, 0x18c7, 0x3ebc, 0x2e1b, 0x4e96, 0x412b, 0x10cd, 0x5739, 0x35f2, 0x298e, 0x1d09, 0x2616, 0x108a, 0x34e9, 0x2176, 0x1934,
|
||||
0x57df, 0x64b2, 0x54af, 0x3cce, 0x2257, 0x1971, 0x20cc, 0x51f7, 0x0ccb, 0x7515, 0x21b9, 0x2176, 0x1d54, 0x1512, 0x10f0, 0x0ccd,
|
||||
0x69ce, 0x3b5f, 0x3adc, 0x263b, 0x19b7, 0x1553, 0x10ed, 0x0ca9, 0x59fe, 0x415b, 0x34f6, 0x28b3, 0x2090, 0x186e, 0x2176, 0x1934,
|
||||
0x69ce, 0x5fde, 0x3afc, 0x2679, 0x19f5, 0x1571, 0x110b, 0x0cc8, 0x5f94, 0x3f29, 0x3a69, 0x35a9, 0x2d47, 0x2d04, 0x2176, 0x1934,
|
||||
0x69ce, 0x2e17, 0x2e37, 0x25f5, 0x21b3, 0x2171, 0x252f, 0x356e, 0x6a11, 0x08ee, 0x51b0, 0x18d2, 0x1cd0, 0x0d11, 0x367a, 0x210e,
|
||||
0x460b, 0x2e37, 0x42ba, 0x637d, 0x04cf, 0x0938, 0x2a1c, 0x4adc, 0x141c, 0x4428, 0x586f, 0x6d52, 0x1d91, 0x112c, 0x14a8, 0x0000,
|
||||
0x2d48, 0x006a, 0x08ce, 0x0d78, 0x15fc, 0x1ebe, 0x635c, 0x4633, 0x6d0a, 0x3046, 0x14ba, 0x75b1, 0x0d13, 0x080c, 0x38c9, 0x0000,
|
||||
0x31f0, 0x04aa, 0x14e0, 0x0580, 0x5300, 0x7380, 0x7f9c, 0x0010, 0x0c3c, 0x55df, 0x26fc, 0x5b9e, 0x325c, 0x21d7, 0x1112, 0x088e,
|
||||
0x69ce, 0x57df, 0x473c, 0x3adb, 0x2e78, 0x2616, 0x19b4, 0x1152, 0x0888, 0x3abe, 0x261b, 0x2199, 0x2176, 0x1934, 0x0d0f, 0x10eb,
|
||||
0x1530, 0x0d0a, 0x112c, 0x194d, 0x25f3, 0x3635, 0x4ab9, 0x4274, 0x5719, 0x31f0, 0x739c, 0x00cc, 0x0110, 0x0176, 0x033e, 0x0000,
|
||||
0x29ea, 0x00e6, 0x0907, 0x1129, 0x198c, 0x21ee, 0x2a50, 0x32b2, 0x4334, 0x01a0, 0x0240, 0x16e1, 0x2b80, 0x739c, 0x0000, 0x0000,
|
||||
0x2988, 0x216f, 0x3e98, 0x637d, 0x04ed, 0x08ef, 0x1556, 0x2e5c, 0x3edd, 0x4f3c, 0x00f1, 0x001c, 0x013b, 0x029e, 0x14a5, 0x0000,
|
||||
0x2988, 0x2dd3, 0x194d, 0x52f9, 0x08ab, 0x1556, 0x2e5c, 0x3235, 0x000d, 0x2805, 0x4066, 0x109a, 0x0cc9, 0x25d2, 0x14a5, 0x0000}
|
||||
};
|
||||
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
for (const auto &row : correctValues) {
|
||||
const auto &palette = tileRenderer.getPalette(j++);
|
||||
for (const auto &refValue : row) {
|
||||
CHECK(palette.at(i++) == refValue);
|
||||
}
|
||||
i = 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user