mirror of
https://github.com/zoriya/ComSquare.git
synced 2026-05-25 23:48:29 +00:00
adding tests on getPixelReferenceFromTile tests
This commit is contained in:
+113
-23
@@ -11,6 +11,20 @@
|
||||
#include "Ram/Ram.hpp"
|
||||
#include "PPU/Tile.hpp"
|
||||
|
||||
void fillRAMFromStrings(const std::vector<std::string> &values, ComSquare::Ram::Ram &ram)
|
||||
{
|
||||
uint8_t value;
|
||||
int i = 0;
|
||||
|
||||
for (auto row : values) {
|
||||
while (!row.empty()) {
|
||||
value = std::stoul(row.substr(0, 2), nullptr, 16);
|
||||
row.erase(0, 2);
|
||||
ram.write(i++, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("read2BPPValue", "[PPU][TileRenderer]")
|
||||
{
|
||||
ComSquare::Ram::Ram vram(100, static_cast<ComSquare::Component>(0), "vramTest");
|
||||
@@ -85,16 +99,7 @@ TEST_CASE("getPixelReferenceFromTileRow 4bpp", "[PPU][TileRenderer]")
|
||||
"1000540038000000"
|
||||
};
|
||||
|
||||
uint8_t value;
|
||||
int i = 0;
|
||||
|
||||
for (auto row : vramValues) {
|
||||
while (!row.empty()) {
|
||||
value = std::stoul(row.substr(0, 2), nullptr, 16);
|
||||
row.erase(0, 2);
|
||||
vram.write(i++, value);
|
||||
}
|
||||
}
|
||||
fillRAMFromStrings(vramValues, vram);
|
||||
|
||||
char correctValues[8][8] = {
|
||||
{0, 7, 7, 7, 7, 7, 0, 0},
|
||||
@@ -107,7 +112,7 @@ TEST_CASE("getPixelReferenceFromTileRow 4bpp", "[PPU][TileRenderer]")
|
||||
{0, 0, 3, 3, 3, 0, 0, 0}
|
||||
};
|
||||
|
||||
i = 0;
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
for (const auto &row : correctValues) {
|
||||
for (const auto &refValue : row) {
|
||||
@@ -133,17 +138,7 @@ TEST_CASE("getPixelReferenceFromTileRow 8bpp", "[PPU][TileRenderer]")
|
||||
"00002800000000000000000000000000"
|
||||
};
|
||||
|
||||
uint8_t value;
|
||||
int i = 0;
|
||||
|
||||
for (auto row : vramValues) {
|
||||
while (!row.empty()) {
|
||||
value = std::stoul(row.substr(0, 2), nullptr, 16);
|
||||
row.erase(0, 2);
|
||||
vram.write(i++, value);
|
||||
}
|
||||
}
|
||||
|
||||
fillRAMFromStrings(vramValues, vram);
|
||||
uint8_t correctValues[8][8] = {
|
||||
{0x00, 0x22, 0x22, 0x22, 0x23, 0x23, 0x00, 0x00},
|
||||
{0x22, 0x11, 0x42, 0x21, 0x41, 0x11, 0x24, 0x00},
|
||||
@@ -156,7 +151,7 @@ TEST_CASE("getPixelReferenceFromTileRow 8bpp", "[PPU][TileRenderer]")
|
||||
};
|
||||
|
||||
|
||||
i = 0;
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
for (const auto &row : correctValues) {
|
||||
for (const auto &refValue : row) {
|
||||
@@ -166,3 +161,98 @@ TEST_CASE("getPixelReferenceFromTileRow 8bpp", "[PPU][TileRenderer]")
|
||||
i += 2;
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("getPixelReferenceFromTile 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);
|
||||
|
||||
vram.write(2, 0xD6);
|
||||
vram.write(3, 0x00);
|
||||
|
||||
CHECK(tileRenderer.getPixelReferenceFromTile(2, 0) == 1);
|
||||
CHECK(tileRenderer.getPixelReferenceFromTile(2, 1) == 1);
|
||||
CHECK(tileRenderer.getPixelReferenceFromTile(2, 2) == 0);
|
||||
CHECK(tileRenderer.getPixelReferenceFromTile(2, 3) == 1);
|
||||
CHECK(tileRenderer.getPixelReferenceFromTile(2, 4) == 0);
|
||||
CHECK(tileRenderer.getPixelReferenceFromTile(2, 5) == 1);
|
||||
CHECK(tileRenderer.getPixelReferenceFromTile(2, 6) == 1);
|
||||
CHECK(tileRenderer.getPixelReferenceFromTile(2, 7) == 0);
|
||||
}
|
||||
|
||||
TEST_CASE("getPixelReferenceFromTile 4bpp", "[PPU][TileRenderer]")
|
||||
{
|
||||
ComSquare::Ram::Ram vram(40, 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<std::string> vramValues {
|
||||
"7C7C82EE82FE7C7C",
|
||||
"0000D68254443838",
|
||||
"7C00AA1082007C00",
|
||||
"1000540038000000"
|
||||
};
|
||||
|
||||
fillRAMFromStrings(vramValues, vram);
|
||||
|
||||
char correctValues[8][8] = {
|
||||
{0, 7, 7, 7, 7, 7, 0, 0},
|
||||
{7, 2, 6, 8, 6, 2, 7, 0},
|
||||
{7, 2, 2, 2, 2, 2, 7, 0},
|
||||
{0, 7, 7, 7, 7, 7, 0, 0},
|
||||
{0, 0, 0, 4, 0, 0, 0, 0},
|
||||
{3, 5, 0, 5, 0, 5, 3, 0},
|
||||
{0, 3, 4, 5, 4, 3, 0, 0},
|
||||
{0, 0, 3, 3, 3, 0, 0, 0}
|
||||
};
|
||||
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
for (const auto &row : correctValues) {
|
||||
for (const auto &refValue : row) {
|
||||
CHECK(tileRenderer.getPixelReferenceFromTile(i, j++) == refValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("getPixelReferenceFromTile 8bpp", "[PPU][TileRenderer]")
|
||||
{
|
||||
ComSquare::Ram::Ram vram(100, 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<std::string> vramValues {
|
||||
"0C7C5CA0C0BC3C001010964038282018",
|
||||
"0000020002007C000000820044003800",
|
||||
"007C44927C82007C1010D6D67C7C3838",
|
||||
"00002800000000000000000000000000"
|
||||
};
|
||||
|
||||
fillRAMFromStrings(vramValues, vram);
|
||||
uint8_t correctValues[8][8] = {
|
||||
{0x00, 0x22, 0x22, 0x22, 0x23, 0x23, 0x00, 0x00},
|
||||
{0x22, 0x11, 0x42, 0x21, 0x41, 0x11, 0x24, 0x00},
|
||||
{0x23, 0x11, 0x12, 0x12, 0x12, 0x12, 0x24, 0x00},
|
||||
{0x00, 0x24, 0x25, 0x25, 0x25, 0x25, 0x00, 0x00},
|
||||
{0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x35, 0x32, 0x00, 0x31, 0x00, 0x31, 0x35, 0x00},
|
||||
{0x00, 0x34, 0x33, 0x31, 0x33, 0x34, 0x00, 0x00},
|
||||
{0x00, 0x00, 0x35, 0x36, 0x36, 0x00, 0x00, 0x00},
|
||||
};
|
||||
|
||||
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
for (const auto &row : correctValues) {
|
||||
for (const auto &refValue : row) {
|
||||
CHECK(tileRenderer.getPixelReferenceFromTile(i, j++) == refValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user