Files
dusklight/libs/JSystem/src/JUtility/JUTGraphFifo.cpp
T
Luke Street eed14acdc6 Annotate all data with DUSK_GAME_DATA (#2214)
The hope of auto-importing data via lld MinGW
+ pseudo_reloc is now dead thanks to ARM64,
so I just wrote a script to go annotate every
exported data symbol in the game instead.
2026-07-14 13:49:21 -06:00

43 lines
1.1 KiB
C++

#include "JSystem/JSystem.h" // IWYU pragma: keep
#include "JSystem/JUtility/JUTGraphFifo.h"
#include "JSystem/JKernel/JKRHeap.h"
#include <stdint.h>
static bool data_804514B8;
DUSK_GAME_DATA JUTGraphFifo* JUTGraphFifo::sCurrentFifo;
JUTGraphFifo::JUTGraphFifo(u32 size) {
mSize = ROUND(size, 0x20);
if (data_804514B8) {
u32 fifoSize = sizeof(GXFifoObj);
mFifo = (GXFifoObj*)JKRAllocFromSysHeap(fifoSize + mSize, 32);
mBase = (u8*)mFifo + fifoSize;
GXInitFifoBase(mFifo, mBase, mSize);
GXInitFifoPtrs(mFifo, mBase, mBase);
} else {
mBase = JKRAllocFromSysHeap(mSize + 0xA0, 32);
mBase = (void*)ALIGN_NEXT((uintptr_t)mBase, 0x20);
mFifo = GXInit(mBase, mSize);
GXSetColorUpdate(GX_ENABLE);
data_804514B8 = true;
sCurrentFifo = this;
}
}
DUSK_GAME_DATA bool JUTGraphFifo::mGpStatus[5];
JUTGraphFifo::~JUTGraphFifo() {
sCurrentFifo->save();
while (isGPActive()) {
// nop
}
if (sCurrentFifo == this) {
sCurrentFifo = NULL;
}
JKRFreeToSysHeap(mBase);
}