diff options
| author | Noah McQueen <nzmcqueen1996@gmail.com> | 2023-09-10 23:17:07 -0600 |
|---|---|---|
| committer | Noah McQueen <nzmcqueen1996@gmail.com> | 2023-09-10 23:17:07 -0600 |
| commit | da415ac542ccdb4379cc4e35a2c636c4e42f84a2 (patch) | |
| tree | 817957f6fab201846138c48d795256459c667345 /src/JSystem/JUtility/JUTGraphFifo.cpp | |
| parent | b82520becb16fa83e53c93fe7c1eebf2856c68aa (diff) | |
Several JSystem file matches
Diffstat (limited to 'src/JSystem/JUtility/JUTGraphFifo.cpp')
| -rw-r--r-- | src/JSystem/JUtility/JUTGraphFifo.cpp | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/src/JSystem/JUtility/JUTGraphFifo.cpp b/src/JSystem/JUtility/JUTGraphFifo.cpp index 40b9bcad..a5aabbf5 100644 --- a/src/JSystem/JUtility/JUTGraphFifo.cpp +++ b/src/JSystem/JUtility/JUTGraphFifo.cpp @@ -4,14 +4,40 @@ // #include "JSystem/JUtility/JUTGraphFifo.h" +#include "JSystem/JKernel/JKRHeap.h" #include "dolphin/types.h" +bool JUTGraphFifo::sInitiated; +JUTGraphFifo* JUTGraphFifo::sCurrentFifo; + /* 802C1C04-802C1CE0 .text __ct__12JUTGraphFifoFUl */ -JUTGraphFifo::JUTGraphFifo(unsigned long) { - /* Nonmatching */ +JUTGraphFifo::JUTGraphFifo(u32 size) { + mSize = size + 0x1F & ~0x1F; + if (sInitiated) { + 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); + sInitiated = true; + sCurrentFifo = this; + } } +bool JUTGraphFifo::mGpStatus[5]; + /* 802C1CE0-802C1DA4 .text __dt__12JUTGraphFifoFv */ JUTGraphFifo::~JUTGraphFifo() { - /* Nonmatching */ + sCurrentFifo->save(); + + do { + } while (isGPActive()); + + if (sCurrentFifo == this) { + sCurrentFifo = NULL; + } + JKRFreeToSysHeap(mBase); } |
