diff --git a/src/nostalgia/modules/core/include/nostalgia/core/gfx.hpp b/src/nostalgia/modules/core/include/nostalgia/core/gfx.hpp index ca017384..0d3e34e5 100644 --- a/src/nostalgia/modules/core/include/nostalgia/core/gfx.hpp +++ b/src/nostalgia/modules/core/include/nostalgia/core/gfx.hpp @@ -103,6 +103,12 @@ oxModelEnd() void addEntry(TileSheetSet &set, ox::FileAddress path, int32_t begin = 0, int32_t size = -1) noexcept; +[[nodiscard]] +int tileColumns(Context&) noexcept; + +[[nodiscard]] +int tileRows(Context&) noexcept; + ox::Error loadBgPalette( Context &ctx, size_t palBank, diff --git a/src/nostalgia/modules/core/src/gba/gfx.cpp b/src/nostalgia/modules/core/src/gba/gfx.cpp index e2404fd2..21da2a81 100644 --- a/src/nostalgia/modules/core/src/gba/gfx.cpp +++ b/src/nostalgia/modules/core/src/gba/gfx.cpp @@ -22,8 +22,6 @@ namespace nostalgia::core { -constexpr auto GbaTileColumns = 32; -constexpr auto GbaTileRows = 32; constexpr auto SpriteCount = 128; struct GbaTileMapTarget { @@ -285,7 +283,7 @@ ox::Error loadSpriteTileSheet( } void setBgTile(Context&, uint_t bgIdx, int column, int row, BgTile const&tile) noexcept { - auto const tileIdx = static_cast(row * GbaTileColumns + column); + auto const tileIdx = static_cast(row * tileColumns() + column); // see Tonc 9.3 MEM_BG_MAP[bgIdx][tileIdx] = static_cast(tile.tileIdx & 0b1'1111'1111) | @@ -294,8 +292,8 @@ void setBgTile(Context&, uint_t bgIdx, int column, int row, BgTile const&tile) n static_cast(tile.palBank << 0xc); } -void clearBg(Context&, uint_t bgIdx) noexcept { - memset(MEM_BG_MAP[bgIdx].data(), 0, GbaTileRows * GbaTileColumns); +void clearBg(Context &ctx, uint_t bgIdx) noexcept { + memset(MEM_BG_MAP[bgIdx].data(), 0, static_cast(tileRows(ctx) * tileColumns(ctx))); } uint8_t bgStatus(Context&) noexcept { diff --git a/src/nostalgia/modules/core/src/gfx.cpp b/src/nostalgia/modules/core/src/gfx.cpp index 2b85f805..3c941f8b 100644 --- a/src/nostalgia/modules/core/src/gfx.cpp +++ b/src/nostalgia/modules/core/src/gfx.cpp @@ -6,6 +6,17 @@ namespace nostalgia::core { +constexpr auto GbaTileColumns = 32; +constexpr auto GbaTileRows = 32; + +int tileColumns(Context&) noexcept { + return GbaTileColumns; +} + +int tileRows(Context&) noexcept { + return GbaTileRows; +} + // map ASCII values to the nostalgia charset constexpr ox::Array charMap = { 0,