From da415ac542ccdb4379cc4e35a2c636c4e42f84a2 Mon Sep 17 00:00:00 2001 From: Noah McQueen Date: Sun, 10 Sep 2023 23:17:07 -0600 Subject: Several JSystem file matches --- src/JSystem/JUtility/JUTGraphFifo.cpp | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) (limited to 'src/JSystem/JUtility/JUTGraphFifo.cpp') 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); } -- cgit v1.2.3