[nostalgia/gfx] Cleanup
This commit is contained in:
parent
83fbe6ac74
commit
c1108301c0
@ -223,7 +223,7 @@ bool bgStatus(Context &ctx, unsigned bg) noexcept;
|
|||||||
|
|
||||||
void setBgStatus(Context &ctx, unsigned bg, bool status) noexcept;
|
void setBgStatus(Context &ctx, unsigned bg, bool status) noexcept;
|
||||||
|
|
||||||
void setBgCbb(Context &ctx, unsigned bgIdx, unsigned cbb) noexcept;
|
void setBgCbb(Context &ctx, unsigned bgIdx, unsigned cbbIdx) noexcept;
|
||||||
|
|
||||||
void setBgPriority(Context &ctx, uint_t bgIdx, uint_t priority) noexcept;
|
void setBgPriority(Context &ctx, uint_t bgIdx, uint_t priority) noexcept;
|
||||||
|
|
||||||
|
@ -36,9 +36,9 @@ ox::Error initGfx(Context&, InitParams const&) noexcept {
|
|||||||
|
|
||||||
ox::Error loadBgPalette(
|
ox::Error loadBgPalette(
|
||||||
Context&,
|
Context&,
|
||||||
size_t palBank,
|
size_t const palBank,
|
||||||
CompactPalette const&palette,
|
CompactPalette const&palette,
|
||||||
size_t page) noexcept {
|
size_t const page) noexcept {
|
||||||
if (palette.pages.empty()) {
|
if (palette.pages.empty()) {
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
@ -52,7 +52,7 @@ ox::Error loadBgPalette(
|
|||||||
ox::Error loadSpritePalette(
|
ox::Error loadSpritePalette(
|
||||||
Context&,
|
Context&,
|
||||||
CompactPalette const&palette,
|
CompactPalette const&palette,
|
||||||
size_t page) noexcept {
|
size_t const page) noexcept {
|
||||||
if (palette.pages.empty()) {
|
if (palette.pages.empty()) {
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
@ -133,7 +133,7 @@ ox::Error loadBgTileSheet(
|
|||||||
|
|
||||||
ox::Error loadBgTileSheet(
|
ox::Error loadBgTileSheet(
|
||||||
Context &ctx,
|
Context &ctx,
|
||||||
unsigned cbb,
|
unsigned const cbb,
|
||||||
CompactTileSheet const&ts,
|
CompactTileSheet const&ts,
|
||||||
ox::Optional<unsigned> const&paletteBank) noexcept {
|
ox::Optional<unsigned> const&paletteBank) noexcept {
|
||||||
auto const cnt = (ts.pixels.size() * PixelsPerTile) / (1 + (ts.bpp == 4));
|
auto const cnt = (ts.pixels.size() * PixelsPerTile) / (1 + (ts.bpp == 4));
|
||||||
@ -184,7 +184,7 @@ static void setSpritesBpp(unsigned const bpp) noexcept {
|
|||||||
ox::Error loadSpriteTileSheet(
|
ox::Error loadSpriteTileSheet(
|
||||||
Context &ctx,
|
Context &ctx,
|
||||||
CompactTileSheet const&ts,
|
CompactTileSheet const&ts,
|
||||||
bool loadDefaultPalette) noexcept {
|
bool const loadDefaultPalette) noexcept {
|
||||||
for (size_t i = 0; i < ts.pixels.size(); i += 2) {
|
for (size_t i = 0; i < ts.pixels.size(); i += 2) {
|
||||||
uint16_t v = ts.pixels[i];
|
uint16_t v = ts.pixels[i];
|
||||||
v |= static_cast<uint16_t>(ts.pixels[i + 1] << 8);
|
v |= static_cast<uint16_t>(ts.pixels[i + 1] << 8);
|
||||||
@ -206,7 +206,8 @@ ox::Error loadSpriteTileSheet(
|
|||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
void setBgTile(Context &ctx, uint_t bgIdx, int column, int row, BgTile const&tile) noexcept {
|
void setBgTile(
|
||||||
|
Context &ctx, uint_t const bgIdx, int const column, int const row, BgTile const&tile) noexcept {
|
||||||
auto const tileIdx = static_cast<std::size_t>(row * tileColumns(ctx) + column);
|
auto const tileIdx = static_cast<std::size_t>(row * tileColumns(ctx) + column);
|
||||||
// see Tonc 9.3
|
// see Tonc 9.3
|
||||||
MEM_BG_MAP[bgIdx][tileIdx] =
|
MEM_BG_MAP[bgIdx][tileIdx] =
|
||||||
@ -216,7 +217,7 @@ void setBgTile(Context &ctx, uint_t bgIdx, int column, int row, BgTile const&til
|
|||||||
static_cast<uint16_t>(tile.palBank << 0xc);
|
static_cast<uint16_t>(tile.palBank << 0xc);
|
||||||
}
|
}
|
||||||
|
|
||||||
void clearBg(Context &ctx, uint_t bgIdx) noexcept {
|
void clearBg(Context &ctx, uint_t const bgIdx) noexcept {
|
||||||
memset(MEM_BG_MAP[bgIdx].data(), 0, static_cast<size_t>(tileRows(ctx) * tileColumns(ctx)));
|
memset(MEM_BG_MAP[bgIdx].data(), 0, static_cast<size_t>(tileRows(ctx) * tileColumns(ctx)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -224,39 +225,39 @@ uint8_t bgStatus(Context&) noexcept {
|
|||||||
return (REG_DISPCTL >> 8u) & 0b1111u;
|
return (REG_DISPCTL >> 8u) & 0b1111u;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setBgStatus(Context&, uint32_t status) noexcept {
|
void setBgStatus(Context&, uint32_t const status) noexcept {
|
||||||
constexpr auto BgStatus = 8;
|
constexpr auto BgStatus = 8;
|
||||||
REG_DISPCTL = (REG_DISPCTL & ~0b111100000000u) | status << BgStatus;
|
REG_DISPCTL = (REG_DISPCTL & ~0b111100000000u) | status << BgStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool bgStatus(Context&, unsigned bg) noexcept {
|
bool bgStatus(Context&, unsigned const bg) noexcept {
|
||||||
return (REG_DISPCTL >> (8 + bg)) & 1;
|
return (REG_DISPCTL >> (8 + bg)) & 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setBgStatus(Context&, unsigned bg, bool status) noexcept {
|
void setBgStatus(Context&, unsigned const bg, bool const status) noexcept {
|
||||||
constexpr auto Bg0Status = 8;
|
constexpr auto Bg0Status = 8;
|
||||||
const auto mask = static_cast<uint32_t>(status) << (Bg0Status + bg);
|
const auto mask = static_cast<uint32_t>(status) << (Bg0Status + bg);
|
||||||
REG_DISPCTL = REG_DISPCTL | ((REG_DISPCTL & ~mask) | mask);
|
REG_DISPCTL = REG_DISPCTL | ((REG_DISPCTL & ~mask) | mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setBgBpp(Context&, unsigned bgIdx, unsigned bpp) noexcept {
|
void setBgBpp(Context&, unsigned const bgIdx, unsigned const bpp) noexcept {
|
||||||
auto &bgCtl = regBgCtl(bgIdx);
|
auto &bgCtl = regBgCtl(bgIdx);
|
||||||
teagba::bgSetBpp(bgCtl, bpp);
|
teagba::bgSetBpp(bgCtl, bpp);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setBgCbb(Context &ctx, unsigned bgIdx, unsigned cbb) noexcept {
|
void setBgCbb(Context &ctx, unsigned const bgIdx, unsigned const cbbIdx) noexcept {
|
||||||
auto &bgCtl = regBgCtl(bgIdx);
|
auto &bgCtl = regBgCtl(bgIdx);
|
||||||
const auto &cbbData = ctx.cbbData[cbb];
|
const auto &cbbData = ctx.cbbData[cbbIdx];
|
||||||
teagba::bgSetBpp(bgCtl, cbbData.bpp);
|
teagba::bgSetBpp(bgCtl, cbbData.bpp);
|
||||||
teagba::bgSetCbb(bgCtl, cbb);
|
teagba::bgSetCbb(bgCtl, cbbIdx);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setBgPriority(Context&, uint_t bgIdx, uint_t priority) noexcept {
|
void setBgPriority(Context&, uint_t const bgIdx, uint_t const priority) noexcept {
|
||||||
auto &bgCtl = regBgCtl(bgIdx);
|
auto &bgCtl = regBgCtl(bgIdx);
|
||||||
bgCtl = (bgCtl & 0b1111'1111'1111'1100u) | (priority & 0b11);
|
bgCtl = (bgCtl & 0b1111'1111'1111'1100u) | (priority & 0b11);
|
||||||
}
|
}
|
||||||
|
|
||||||
void hideSprite(Context&, unsigned idx) noexcept {
|
void hideSprite(Context&, unsigned const idx) noexcept {
|
||||||
//oxAssert(g_spriteUpdates < config::GbaSpriteBufferLen, "Sprite update buffer overflow");
|
//oxAssert(g_spriteUpdates < config::GbaSpriteBufferLen, "Sprite update buffer overflow");
|
||||||
teagba::addSpriteUpdate({
|
teagba::addSpriteUpdate({
|
||||||
.attr0 = uint16_t{0b11 << 8},
|
.attr0 = uint16_t{0b11 << 8},
|
||||||
@ -264,7 +265,7 @@ void hideSprite(Context&, unsigned idx) noexcept {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void showSprite(Context&, unsigned idx) noexcept {
|
void showSprite(Context&, unsigned const idx) noexcept {
|
||||||
//oxAssert(g_spriteUpdates < config::GbaSpriteBufferLen, "Sprite update buffer overflow");
|
//oxAssert(g_spriteUpdates < config::GbaSpriteBufferLen, "Sprite update buffer overflow");
|
||||||
teagba::addSpriteUpdate({
|
teagba::addSpriteUpdate({
|
||||||
.attr0 = 0,
|
.attr0 = 0,
|
||||||
@ -272,7 +273,7 @@ void showSprite(Context&, unsigned idx) noexcept {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void setSprite(Context&, uint_t idx, Sprite const&s) noexcept {
|
void setSprite(Context&, uint_t const idx, Sprite const&s) noexcept {
|
||||||
//oxAssert(g_spriteUpdates < config::GbaSpriteBufferLen, "Sprite update buffer overflow");
|
//oxAssert(g_spriteUpdates < config::GbaSpriteBufferLen, "Sprite update buffer overflow");
|
||||||
uint16_t const eightBpp = s.bpp == 8;
|
uint16_t const eightBpp = s.bpp == 8;
|
||||||
teagba::addSpriteUpdate({
|
teagba::addSpriteUpdate({
|
||||||
@ -293,7 +294,7 @@ void setSprite(Context&, uint_t idx, Sprite const&s) noexcept {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
uint_t spriteCount(Context const &) noexcept {
|
uint_t spriteCount(Context const&) noexcept {
|
||||||
return SpriteCount;
|
return SpriteCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,7 +106,7 @@ static constexpr ox::CStringView spritefshadTmpl = R"glsl(
|
|||||||
})glsl";
|
})glsl";
|
||||||
|
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
static constexpr auto bgVertexRow(uint_t x, uint_t y) noexcept {
|
static constexpr auto bgVertexRow(uint_t const x, uint_t const y) noexcept {
|
||||||
return y * TileRows + x;
|
return y * TileRows + x;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -290,8 +290,8 @@ static void initBackgroundBufferset(
|
|||||||
}
|
}
|
||||||
|
|
||||||
static glutils::GLTexture createTexture(
|
static glutils::GLTexture createTexture(
|
||||||
GLsizei w,
|
GLsizei const w,
|
||||||
GLsizei h,
|
GLsizei const h,
|
||||||
void const*pixels) noexcept {
|
void const*pixels) noexcept {
|
||||||
GLuint texId = 0;
|
GLuint texId = 0;
|
||||||
glGenTextures(1, &texId);
|
glGenTextures(1, &texId);
|
||||||
@ -523,7 +523,11 @@ static ox::Result<TileSheetData> normalizeTileSheet(
|
|||||||
pixels[i * 2 + 1] = ts.pixels[i] >> 4;
|
pixels[i * 2 + 1] = ts.pixels[i] >> 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return TileSheetData{std::move(pixels), width, height};
|
return TileSheetData{
|
||||||
|
.pixels = std::move(pixels),
|
||||||
|
.width = width,
|
||||||
|
.height = height
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
ox::Error loadBgPalette(
|
ox::Error loadBgPalette(
|
||||||
@ -762,7 +766,7 @@ uint_t spriteCount(Context const &ctx) noexcept {
|
|||||||
|
|
||||||
namespace gl {
|
namespace gl {
|
||||||
|
|
||||||
ox::Size drawSize(int scale) noexcept {
|
ox::Size drawSize(int const scale) noexcept {
|
||||||
return {240 * scale, 160 * scale};
|
return {240 * scale, 160 * scale};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user