summaryrefslogtreecommitdiff
path: root/src/JSystem/JUtility/JUTGraphFifo.cpp
diff options
context:
space:
mode:
authorNoah McQueen <nzmcqueen1996@gmail.com>2023-09-10 23:17:07 -0600
committerNoah McQueen <nzmcqueen1996@gmail.com>2023-09-10 23:17:07 -0600
commitda415ac542ccdb4379cc4e35a2c636c4e42f84a2 (patch)
tree817957f6fab201846138c48d795256459c667345 /src/JSystem/JUtility/JUTGraphFifo.cpp
parentb82520becb16fa83e53c93fe7c1eebf2856c68aa (diff)
Several JSystem file matches
Diffstat (limited to 'src/JSystem/JUtility/JUTGraphFifo.cpp')
-rw-r--r--src/JSystem/JUtility/JUTGraphFifo.cpp32
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);
}