summaryrefslogtreecommitdiff
path: root/libs/JSystem/JUtility/JUTGraphFifo.cpp
blob: bc23716ef4b0e0a0e579bb3bd0f538b32dfc7faa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//
// Generated By: dol2asm
// Translation Unit: JUTGraphFifo
//

#include "JSystem/JUtility/JUTGraphFifo.h"
#include "JSystem/JKernel/JKRHeap.h"

/* 804514B8-804514BC 0009B8 0004+00 1/1 0/0 0/0 .sbss            None */
static bool data_804514B8;

/* 804514BC-804514C0 0009BC 0004+00 2/2 0/0 0/0 .sbss            sCurrentFifo__12JUTGraphFifo */
JUTGraphFifo* JUTGraphFifo::sCurrentFifo;

/* 802DEB58-802DEC34 2D9498 00DC+00 0/0 1/1 0/0 .text            __ct__12JUTGraphFifoFUl */
JUTGraphFifo::JUTGraphFifo(u32 size) {
    mSize = size + 0x1F & ~0x1F;
    if (data_804514B8) {
        mFifo = (GXFifoObj*)JKRAllocFromSysHeap(mSize + 0x80, 32);
        mBase = mFifo + 1;
        GXInitFifoBase(mFifo, mBase, mSize);
        GXInitFifoPtrs(mFifo, mBase, mBase);
    } else {
        mBase = JKRAllocFromSysHeap(mSize + 0xA0, 32);
        mBase = (void*)((int)mBase + 0x1F & ~0x1F);
        mFifo = GXInit(mBase, mSize);
        data_804514B8 = true;
        sCurrentFifo = this;
    }
}

/* ############################################################################################## */
/* 804514C0-804514C8 0009C0 0005+03 1/1 0/0 0/0 .sbss            mGpStatus__12JUTGraphFifo */
bool JUTGraphFifo::mGpStatus[5];

/* 802DEC34-802DECF8 2D9574 00C4+00 1/0 0/0 0/0 .text            __dt__12JUTGraphFifoFv */
JUTGraphFifo::~JUTGraphFifo() {
    sCurrentFifo->save();

    do {
    } while (isGPActive());

    if (sCurrentFifo == this) {
        sCurrentFifo = NULL;
    }
    JKRFreeToSysHeap(mBase);
}