Files
nostalgia/deps/teagba/src/gfx.cpp
Gary Talent c54c0bad38
All checks were successful
Build / build (push) Successful in 1m20s
[teagba] Cleanup
2025-06-23 01:03:33 -05:00

33 lines
808 B
C++

/*
* Copyright 2016 - 2024 Gary Talent (gary@drinkingtea.net). All rights reserved.
*/
#include <teagba/addresses.hpp>
#include <teagba/bios.hpp>
#include <teagba/irq.hpp>
#include <teagba/gfx.hpp>
namespace teagba {
static ox::Array<GbaSpriteAttrUpdate, 128> g_spriteBuffer;
GbaSpriteAttrUpdate &spriteAttr(size_t i) noexcept {
return g_spriteBuffer[i];
}
void addSpriteUpdate(GbaSpriteAttrUpdate const &upd) noexcept {
const auto ie = REG_IE; // disable vblank interrupt handler
REG_IE = REG_IE & static_cast<uint16_t>(~teagba::Int_vblank); // disable vblank interrupt handler
g_spriteBuffer[upd.idx] = upd;
REG_IE = ie; // enable vblank interrupt handler
}
void applySpriteUpdates() noexcept {
for (auto const&oa : g_spriteBuffer) {
MEM_OAM[oa.idx] = std::bit_cast<uint64_t>(oa);
}
}
}