summaryrefslogtreecommitdiff
path: root/src/m_Do/m_Do_ext.cpp
diff options
context:
space:
mode:
authorlepelog <lepelog@users.noreply.github.com>2021-06-02 14:13:31 +0200
committerGitHub <noreply@github.com>2021-06-02 08:13:31 -0400
commitb728ec1ef544571b02ef5fe05f418b9935c2b071 (patch)
treed9eff34f05e9f50033a1361745a98571f7354346 /src/m_Do/m_Do_ext.cpp
parente915df66c806bdff65aa243649f7abfe6cc19227 (diff)
J3duclip, fop_actor_mng and related stuff (#131)
* J3DUClipper sinit * sincosTable_ etc * decompile JMATrigonometric sinit * f_op_actor_mng * move f_op_actor_mng and parts of mDo_ext * J3DSys sinit * f_op_scene_req * failed matching attempt for decodeSZS__9JKRDecompFPUcPUcUlUl * mX -> x * fix mCull and fopAcM_prm_class members * fix a few function parameters * move missing NON_MATCHING * remove some unneeded data * turns out that data was not unused * remove unused asm * readd asm deleted by accident
Diffstat (limited to 'src/m_Do/m_Do_ext.cpp')
-rw-r--r--src/m_Do/m_Do_ext.cpp342
1 files changed, 138 insertions, 204 deletions
diff --git a/src/m_Do/m_Do_ext.cpp b/src/m_Do/m_Do_ext.cpp
index 67005d5af5..fb8a3cf2f7 100644
--- a/src/m_Do/m_Do_ext.cpp
+++ b/src/m_Do/m_Do_ext.cpp
@@ -4,7 +4,12 @@
//
#include "m_Do/m_Do_ext.h"
+#include "JSystem/JKernel/JKRArchive.h"
+#include "JSystem/JKernel/JKRAssertHeap.h"
+#include "JSystem/JKernel/JKRExpHeap.h"
+#include "SSystem/SComponent/c_xyz.h"
#include "dol2asm.h"
+#include "dolphin/mtx/mtx.h"
#include "dolphin/types.h"
//
@@ -18,16 +23,6 @@ struct mDoExt_morf_c {
/* 8000FBC0 */ void frameUpdate();
};
-struct cXyz {
- /* 80009184 */ ~cXyz();
- /* 800125DC */ cXyz();
- /* 80266AE4 */ void operator+(Vec const&) const;
- /* 80266B34 */ void operator-(Vec const&) const;
- /* 80266B84 */ void operator*(f32) const;
- /* 80266CBC */ void outprod(Vec const&) const;
- /* 80266F48 */ void normalizeZP();
-};
-
struct mDoExt_invisibleModel {
/* 8000E53C */ void create(J3DModel*, u8);
/* 8000E6C8 */ void entryJoint(cXyz*);
@@ -230,19 +225,6 @@ struct JUTCacheFont {
/* 802DD188 */ JUTCacheFont(ResFONT const*, u32, JKRHeap*);
};
-struct JKRFileLoader {
- /* 802D4308 */ void removeResource(void*, JKRFileLoader*);
-};
-
-struct JKRAssertHeap {
- /* 802D1368 */ void create(JKRHeap*);
-};
-
-struct JKRArchive {
- /* 802D5B38 */ void getGlbResource(u32, char const*, JKRArchive*);
- /* 802D6770 */ void findIdResource(u16) const;
-};
-
struct J3DZMode {};
struct J3DVertexBuffer {
@@ -2405,314 +2387,265 @@ asm void mDoExt_setupStageTexture(J3DModelData* param_0) {
/* ############################################################################################## */
/* 80450C20-80450C24 000120 0004+00 2/1 0/0 0/0 .sbss AssertHeap */
-static u8 AssertHeap[4];
+static JKRAssertHeap* AssertHeap;
/* 8000ECC0-8000ECE4 009600 0024+00 0/0 1/1 0/0 .text mDoExt_createAssertHeap__FP7JKRHeap
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void mDoExt_createAssertHeap(JKRHeap* param_0) {
- nofralloc
-#include "asm/m_Do/m_Do_ext/mDoExt_createAssertHeap__FP7JKRHeap.s"
+JKRAssertHeap* mDoExt_createAssertHeap(JKRHeap* param_0) {
+ return AssertHeap = JKRAssertHeap::create(param_0);
}
-#pragma pop
/* 8000ECE4-8000ECEC -00001 0008+00 0/0 0/0 0/0 .text mDoExt_getAssertHeap__Fv */
-u32 mDoExt_getAssertHeap() {
- return *(u32*)(&AssertHeap);
+JKRAssertHeap* mDoExt_getAssertHeap() {
+ return AssertHeap;
}
/* ############################################################################################## */
/* 80450C24-80450C28 000124 0004+00 2/1 0/0 0/0 .sbss DbPrintHeap */
-static u8 DbPrintHeap[4];
+static JKRExpHeap* DbPrintHeap;
/* 8000ECEC-8000ED14 00962C 0028+00 0/0 1/1 0/0 .text mDoExt_createDbPrintHeap__FUlP7JKRHeap */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void mDoExt_createDbPrintHeap(u32 param_0, JKRHeap* param_1) {
- nofralloc
-#include "asm/m_Do/m_Do_ext/mDoExt_createDbPrintHeap__FUlP7JKRHeap.s"
+JKRExpHeap* mDoExt_createDbPrintHeap(u32 param_0, JKRHeap* param_1) {
+ return DbPrintHeap = JKRExpHeap::create(param_0, param_1, true);
}
-#pragma pop
/* 8000ED14-8000ED1C -00001 0008+00 0/0 0/0 0/0 .text mDoExt_getDbPrintHeap__Fv */
-u32 mDoExt_getDbPrintHeap() {
- return *(u32*)(&DbPrintHeap);
+JKRExpHeap* mDoExt_getDbPrintHeap() {
+ return DbPrintHeap;
}
/* ############################################################################################## */
/* 80450C28-80450C2C 000128 0004+00 2/1 3/3 0/0 .sbss gameHeap */
-extern u8 gameHeap[4];
-u8 gameHeap[4];
+JKRExpHeap* gameHeap;
/* 8000ED1C-8000ED50 00965C 0034+00 0/0 1/1 0/0 .text mDoExt_createGameHeap__FUlP7JKRHeap
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void mDoExt_createGameHeap(u32 param_0, JKRHeap* param_1) {
- nofralloc
-#include "asm/m_Do/m_Do_ext/mDoExt_createGameHeap__FUlP7JKRHeap.s"
+JKRExpHeap* mDoExt_createGameHeap(u32 param_0, JKRHeap* param_1) {
+ gameHeap = JKRExpHeap::create(param_0, param_1, true);
+ gameHeap->field_0x6c = 1;
+ return gameHeap;
}
-#pragma pop
/* 8000ED50-8000ED58 -00001 0008+00 0/0 0/0 0/0 .text mDoExt_getGameHeap__Fv */
-u32 mDoExt_getGameHeap() {
- return *(u32*)(&gameHeap);
+JKRHeap* mDoExt_getGameHeap() {
+ return gameHeap;
}
/* ############################################################################################## */
/* 80450C2C-80450C30 00012C 0004+00 2/1 3/3 0/0 .sbss zeldaHeap */
-extern u8 zeldaHeap[4];
-u8 zeldaHeap[4];
+JKRExpHeap* zeldaHeap;
/* 8000ED58-8000ED80 009698 0028+00 0/0 1/1 0/0 .text mDoExt_createZeldaHeap__FUlP7JKRHeap */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void mDoExt_createZeldaHeap(u32 param_0, JKRHeap* param_1) {
- nofralloc
-#include "asm/m_Do/m_Do_ext/mDoExt_createZeldaHeap__FUlP7JKRHeap.s"
+JKRExpHeap* mDoExt_createZeldaHeap(u32 param_0, JKRHeap* param_1) {
+ return zeldaHeap = JKRExpHeap::create(param_0, param_1, true);
}
-#pragma pop
/* 8000ED80-8000ED88 -00001 0008+00 0/0 0/0 0/0 .text mDoExt_getZeldaHeap__Fv */
-u32 mDoExt_getZeldaHeap() {
- return *(u32*)(&zeldaHeap);
+JKRExpHeap* mDoExt_getZeldaHeap() {
+ return zeldaHeap;
}
/* ############################################################################################## */
/* 80450C30-80450C34 000130 0004+00 2/1 1/1 0/0 .sbss commandHeap */
-extern u8 commandHeap[4];
-u8 commandHeap[4];
+JKRExpHeap* commandHeap;
/* 8000ED88-8000EDB0 0096C8 0028+00 0/0 1/1 0/0 .text mDoExt_createCommandHeap__FUlP7JKRHeap */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void mDoExt_createCommandHeap(u32 param_0, JKRHeap* param_1) {
- nofralloc
-#include "asm/m_Do/m_Do_ext/mDoExt_createCommandHeap__FUlP7JKRHeap.s"
+JKRExpHeap* mDoExt_createCommandHeap(u32 param_0, JKRHeap* param_1) {
+ return commandHeap = JKRExpHeap::create(param_0, param_1, true);
}
-#pragma pop
/* 8000EDB0-8000EDB8 -00001 0008+00 0/0 0/0 0/0 .text mDoExt_getCommandHeap__Fv */
-u32 mDoExt_getCommandHeap() {
- return *(u32*)(&commandHeap);
+JKRExpHeap* mDoExt_getCommandHeap() {
+ return commandHeap;
}
/* ############################################################################################## */
/* 80450C34-80450C38 000134 0004+00 3/1 5/5 0/0 .sbss archiveHeap */
-extern u8 archiveHeap[4];
-u8 archiveHeap[4];
+JKRExpHeap* archiveHeap;
/* 8000EDB8-8000EDEC 0096F8 0034+00 0/0 1/1 0/0 .text mDoExt_createArchiveHeap__FUlP7JKRHeap */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void mDoExt_createArchiveHeap(u32 param_0, JKRHeap* param_1) {
- nofralloc
-#include "asm/m_Do/m_Do_ext/mDoExt_createArchiveHeap__FUlP7JKRHeap.s"
+JKRExpHeap* mDoExt_createArchiveHeap(u32 param_0, JKRHeap* param_1) {
+ archiveHeap = JKRExpHeap::create(param_0, param_1, true);
+ archiveHeap->field_0x6c = 1;
+ return archiveHeap;
}
-#pragma pop
/* 8000EDEC-8000EDF4 -00001 0008+00 0/0 0/0 0/0 .text mDoExt_getArchiveHeap__Fv */
-u32 mDoExt_getArchiveHeap() {
- return *(u32*)(&archiveHeap);
+JKRExpHeap* mDoExt_getArchiveHeap() {
+ return archiveHeap;
}
/* 8000EDF4-8000EDFC -00001 0008+00 0/0 0/0 0/0 .text mDoExt_getArchiveHeapPtr__Fv */
-u32 mDoExt_getArchiveHeapPtr() {
- return *(u32*)(&archiveHeap);
+JKRExpHeap* mDoExt_getArchiveHeapPtr() {
+ return archiveHeap;
}
/* ############################################################################################## */
/* 80450C38-80450C3C 000138 0004+00 2/1 0/0 0/0 .sbss j2dHeap */
-static u8 j2dHeap[4];
+static JKRExpHeap* j2dHeap;
/* 8000EDFC-8000EE30 00973C 0034+00 0/0 1/1 0/0 .text mDoExt_createJ2dHeap__FUlP7JKRHeap
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void mDoExt_createJ2dHeap(u32 param_0, JKRHeap* param_1) {
- nofralloc
-#include "asm/m_Do/m_Do_ext/mDoExt_createJ2dHeap__FUlP7JKRHeap.s"
+JKRExpHeap* mDoExt_createJ2dHeap(u32 param_0, JKRHeap* param_1) {
+ j2dHeap = JKRExpHeap::create(param_0, param_1, true);
+ j2dHeap->field_0x6c = 1;
+ return j2dHeap;
}
-#pragma pop
/* 8000EE30-8000EE38 -00001 0008+00 0/0 0/0 0/0 .text mDoExt_getJ2dHeap__Fv */
-u32 mDoExt_getJ2dHeap() {
- return *(u32*)(&j2dHeap);
+JKRExpHeap* mDoExt_getJ2dHeap() {
+ return j2dHeap;
}
/* ############################################################################################## */
/* 80450C3C-80450C40 00013C 0004+00 1/0 0/0 0/0 .sbss HostIOHeap */
-static u8 HostIOHeap[4];
+static JKRExpHeap* HostIOHeap;
/* 8000EE38-8000EE40 -00001 0008+00 0/0 0/0 0/0 .text mDoExt_getHostIOHeap__Fv */
-u32 mDoExt_getHostIOHeap() {
- return *(u32*)(&HostIOHeap);
+JKRExpHeap* mDoExt_getHostIOHeap() {
+ return HostIOHeap;
}
/* 8000EE40-8000EED8 009780 0098+00 3/3 0/0 0/0 .text mDoExt_createSolidHeap__FUlP7JKRHeapUl */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void mDoExt_createSolidHeap(u32 param_0, JKRHeap* param_1, u32 param_2) {
- nofralloc
-#include "asm/m_Do/m_Do_ext/mDoExt_createSolidHeap__FUlP7JKRHeapUl.s"
+static JKRSolidHeap* mDoExt_createSolidHeap(u32 pSize, JKRHeap* pHeap, u32 pAlignment) {
+ if (pHeap == NULL) {
+ pHeap = JKRHeap::getCurrentHeap();
+ }
+ JKRSolidHeap* createdHeap;
+ if (pSize == 0 || pSize == 0xFFFFFFFF) {
+ createdHeap = JKRSolidHeap::create(0xFFFFFFFFFF, pHeap, false);
+ } else {
+ pSize = ALIGN_NEXT(pSize, 0x10);
+ pSize += 0x80;
+ if (0x10 < pAlignment) {
+ pSize = (pAlignment - 0x10 + pSize);
+ }
+ createdHeap = JKRSolidHeap::create(pSize, pHeap, false);
+ }
+ if (createdHeap != NULL) {
+ createdHeap->setErrorFlag(true);
+ }
+ return createdHeap;
}
-#pragma pop
/* 8000EED8-8000EF20 009818 0048+00 0/0 2/2 0/0 .text mDoExt_createSolidHeapFromGame__FUlUl */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void mDoExt_createSolidHeapFromGame(u32 param_0, u32 param_1) {
- nofralloc
-#include "asm/m_Do/m_Do_ext/mDoExt_createSolidHeapFromGame__FUlUl.s"
+JKRSolidHeap* mDoExt_createSolidHeapFromGame(u32 pSize, u32 pAlignment) {
+ return mDoExt_createSolidHeap(pSize, mDoExt_getGameHeap(), pAlignment);
}
-#pragma pop
/* 8000EF20-8000EF68 009860 0048+00 0/0 1/1 0/0 .text mDoExt_createSolidHeapFromSystem__FUlUl */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void mDoExt_createSolidHeapFromSystem(u32 param_0, u32 param_1) {
- nofralloc
-#include "asm/m_Do/m_Do_ext/mDoExt_createSolidHeapFromSystem__FUlUl.s"
+JKRSolidHeap* mDoExt_createSolidHeapFromSystem(u32 pSize, u32 pAlignment) {
+ return mDoExt_createSolidHeap(pSize, mDoExt_getZeldaHeap(), pAlignment);
}
-#pragma pop
/* 8000EF68-8000EFBC 0098A8 0054+00 2/2 0/0 0/0 .text
* mDoExt_createSolidHeapToCurrent__FPP7JKRHeapUlP7JKRHeapUl */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void mDoExt_createSolidHeapToCurrent(JKRHeap** param_0, u32 param_1, JKRHeap* param_2,
- u32 param_3) {
- nofralloc
-#include "asm/m_Do/m_Do_ext/mDoExt_createSolidHeapToCurrent__FPP7JKRHeapUlP7JKRHeapUl.s"
+static JKRSolidHeap* mDoExt_createSolidHeapToCurrent(JKRHeap** pOutHeap, u32 pSize,
+ JKRHeap* pParentHeap, u32 pAlignment) {
+ if (pOutHeap != NULL) {
+ *pOutHeap = JKRHeap::getCurrentHeap();
+ }
+ JKRSolidHeap* resultHeap = mDoExt_createSolidHeap(pSize, pParentHeap, pAlignment);
+ if (resultHeap != NULL) {
+ mDoExt_setCurrentHeap(resultHeap);
+ }
+ return resultHeap;
}
-#pragma pop
/* ############################################################################################## */
/* 80450C40-80450C44 000140 0004+00 2/2 0/0 0/0 .sbss mDoExt_SaveCurrentHeap */
-static u8 mDoExt_SaveCurrentHeap[4];
+static JKRHeap* mDoExt_SaveCurrentHeap;
/* 8000EFBC-8000EFF4 0098FC 0038+00 1/1 3/3 0/0 .text
* mDoExt_createSolidHeapToCurrent__FUlP7JKRHeapUl */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void mDoExt_createSolidHeapToCurrent(u32 param_0, JKRHeap* param_1, u32 param_2) {
- nofralloc
-#include "asm/m_Do/m_Do_ext/mDoExt_createSolidHeapToCurrent__FUlP7JKRHeapUl.s"
+JKRSolidHeap* mDoExt_createSolidHeapToCurrent(u32 pSize, JKRHeap* pParentHeap, u32 pAlignment) {
+ return mDoExt_createSolidHeapToCurrent(&mDoExt_SaveCurrentHeap, pSize, pParentHeap, pAlignment);
}
-#pragma pop
/* 8000EFF4-8000F044 009934 0050+00 0/0 2/2 0/0 .text
* mDoExt_createSolidHeapFromGameToCurrent__FPP7JKRHeapUlUl */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void mDoExt_createSolidHeapFromGameToCurrent(JKRHeap** param_0, u32 param_1, u32 param_2) {
- nofralloc
-#include "asm/m_Do/m_Do_ext/mDoExt_createSolidHeapFromGameToCurrent__FPP7JKRHeapUlUl.s"
+JKRSolidHeap* mDoExt_createSolidHeapFromGameToCurrent(JKRHeap** pOutHeap, u32 pSize,
+ u32 pAlignment) {
+ return mDoExt_createSolidHeapToCurrent(pOutHeap, pSize, mDoExt_getGameHeap(), pAlignment);
}
-#pragma pop
/* 8000F044-8000F08C 009984 0048+00 0/0 7/7 0/0 .text
* mDoExt_createSolidHeapFromGameToCurrent__FUlUl */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void mDoExt_createSolidHeapFromGameToCurrent(u32 param_0, u32 param_1) {
- nofralloc
-#include "asm/m_Do/m_Do_ext/mDoExt_createSolidHeapFromGameToCurrent__FUlUl.s"
+JKRSolidHeap* mDoExt_createSolidHeapFromGameToCurrent(u32 pSize, u32 pAlignment) {
+ return mDoExt_createSolidHeapToCurrent(pSize, mDoExt_getGameHeap(), pAlignment);
}
-#pragma pop
/* ############################################################################################## */
/* 803740FC-803740FC 00075C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_8037411F =
- "親ヒープがExpでないのでアジャストできません %08x %08x\n";
-SECTION_DEAD static char const* const stringBase_80374156 = "adjustSize失敗 %08x\n";
-#pragma pop
+// #pragma push
+// #pragma force_active on
+// SECTION_DEAD static char const* const stringBase_8037411F =
+// "親ヒープがExpでないのでアジャストできません %08x %08x\n";
+// SECTION_DEAD static char const* const stringBase_80374156 = "adjustSize失敗 %08x\n";
+// #pragma pop
/* 8000F08C-8000F158 0099CC 00CC+00 1/1 11/11 0/0 .text mDoExt_adjustSolidHeap__FP12JKRSolidHeap
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void mDoExt_adjustSolidHeap(JKRSolidHeap* param_0) {
- nofralloc
-#include "asm/m_Do/m_Do_ext/mDoExt_adjustSolidHeap__FP12JKRSolidHeap.s"
+u32 mDoExt_adjustSolidHeap(JKRSolidHeap* pHeap) {
+ if (pHeap == NULL) {
+ return -1;
+ }
+ JKRHeap* parentHeap = pHeap->getParent();
+ if (parentHeap == NULL || parentHeap->getHeapType() != 'EXPH') {
+ OSReport_Error("親ヒープがExpでないのでアジャストできません %08x %08x\n", pHeap,
+ parentHeap);
+ return -1;
+ } else {
+ s32 result = pHeap->adjustSize();
+ if (result < 0) {
+ OSReport_Error("adjustSize失敗 %08x\n", pHeap);
+ return -1;
+ } else {
+ // this probably indicates that 0x80 is some constant, maybe from a sizeof(JKRSolidHeap)
+ // with alignment?
+ if (result >= (u32)0x80) {
+ result -= 0x80;
+ }
+ return result;
+ }
+ }
}
-#pragma pop
/* 8000F158-8000F18C 009A98 0034+00 0/0 1/1 0/0 .text
* mDoExt_adjustSolidHeapToSystem__FP12JKRSolidHeap */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void mDoExt_adjustSolidHeapToSystem(JKRSolidHeap* param_0) {
- nofralloc
-#include "asm/m_Do/m_Do_ext/mDoExt_adjustSolidHeapToSystem__FP12JKRSolidHeap.s"
+u32 mDoExt_adjustSolidHeapToSystem(JKRSolidHeap* pHeap) {
+ u32 result = mDoExt_adjustSolidHeap(pHeap);
+ mDoExt_restoreCurrentHeap();
+ return result;
}
-#pragma pop
/* 8000F18C-8000F1AC 009ACC 0020+00 0/0 13/13 0/0 .text mDoExt_destroySolidHeap__FP12JKRSolidHeap
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void mDoExt_destroySolidHeap(JKRSolidHeap* param_0) {
- nofralloc
-#include "asm/m_Do/m_Do_ext/mDoExt_destroySolidHeap__FP12JKRSolidHeap.s"
+void mDoExt_destroySolidHeap(JKRSolidHeap* pHeap) {
+ pHeap->destroy();
}
-#pragma pop
/* 8000F1AC-8000F1CC 009AEC 0020+00 0/0 7/7 0/0 .text mDoExt_destroyExpHeap__FP10JKRExpHeap */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void mDoExt_destroyExpHeap(JKRExpHeap* param_0) {
- nofralloc
-#include "asm/m_Do/m_Do_ext/mDoExt_destroyExpHeap__FP10JKRExpHeap.s"
+void mDoExt_destroyExpHeap(JKRExpHeap* pHeap) {
+ pHeap->destroy();
}
-#pragma pop
/* 8000F1CC-8000F1EC 009B0C 0020+00 1/1 78/78 2/2 .text mDoExt_setCurrentHeap__FP7JKRHeap
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void mDoExt_setCurrentHeap(JKRHeap* param_0) {
- nofralloc
-#include "asm/m_Do/m_Do_ext/mDoExt_setCurrentHeap__FP7JKRHeap.s"
+JKRHeap* mDoExt_setCurrentHeap(JKRHeap* pHeap) {
+ return pHeap->becomeCurrentHeap();
}
-#pragma pop
/* 8000F1EC-8000F1F4 -00001 0008+00 0/0 0/0 0/0 .text mDoExt_getCurrentHeap__Fv */
-u32 mDoExt_getCurrentHeap() {
- return *(u32*)(&JKRHeap::sCurrentHeap);
+JKRHeap* mDoExt_getCurrentHeap() {
+ return JKRHeap::getCurrentHeap();
}
/* 8000F1F4-8000F220 009B34 002C+00 1/1 9/9 0/0 .text mDoExt_restoreCurrentHeap__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void mDoExt_restoreCurrentHeap() {
- nofralloc
-#include "asm/m_Do/m_Do_ext/mDoExt_restoreCurrentHeap__Fv.s"
+void mDoExt_restoreCurrentHeap() {
+ mDoExt_SaveCurrentHeap->becomeCurrentHeap();
+ mDoExt_SaveCurrentHeap = NULL;
}
-#pragma pop
/* 8000F220-8000F26C 009B60 004C+00 0/0 1/1 0/0 .text mDoExt_resIDToIndex__FP10JKRArchiveUs */
#pragma push
@@ -3221,7 +3154,8 @@ asm void mDoExt_3Dline_c::init(u16 param_0, int param_1, int param_2) {
#pragma pop
/* 800125DC-800125E0 00CF1C 0004+00 1/1 9/9 0/0 .text __ct__4cXyzFv */
-cXyz::cXyz() {
+// cXyz::cXyz() {
+extern "C" void __ct__4cXyzFv() {
/* empty function */
}