mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-09-01 16:29:55 -04:00
m_Do cleanup, d_resource, drawlist stuff (#145)
* d_resource / some d_stage * setup dDlst_list_c / d_select_icon OK * JUTXfb / some JUTVideo + various * some J2D classes / JUTVideo/Fader attempts * bunch of m_Do cleanup + matches / f_ap_game OK * mDoLib_clipper::setup OK * most of d_meter_HIO OK * pane_class / kantera_icon_meter
This commit is contained in:
@@ -15,32 +15,6 @@ struct mDoRst {
|
||||
static u8 mResetData[4 + 4 /* padding */];
|
||||
};
|
||||
|
||||
struct mDoMemCd_Ctrl_c {
|
||||
/* 8001672C */ mDoMemCd_Ctrl_c();
|
||||
/* 80016730 */ void ThdInit();
|
||||
/* 800167D0 */ void main();
|
||||
/* 80016894 */ void update();
|
||||
/* 800169B4 */ void load();
|
||||
/* 80016A0C */ void restore();
|
||||
/* 80016AB0 */ void LoadSync(void*, u32, u32);
|
||||
/* 80016B58 */ void save(void*, u32, u32);
|
||||
/* 80016BD4 */ void store();
|
||||
/* 80016CE0 */ void SaveSync();
|
||||
/* 80016D74 */ void getStatus(u32);
|
||||
/* 80016E58 */ void command_format();
|
||||
/* 80016EA8 */ void format();
|
||||
/* 80016F2C */ void FormatSync();
|
||||
/* 80016FB8 */ void attach();
|
||||
/* 800170B8 */ void command_attach();
|
||||
/* 80017110 */ void detach();
|
||||
/* 80017148 */ void mount();
|
||||
/* 80017274 */ void loadfile();
|
||||
/* 800172D4 */ void checkspace();
|
||||
/* 80017360 */ void setCardState(s32);
|
||||
};
|
||||
|
||||
struct OSThread {};
|
||||
|
||||
struct JKRThread {
|
||||
/* 802D16B8 */ JKRThread(OSThread*, int);
|
||||
/* 802D1758 */ ~JKRThread();
|
||||
@@ -92,17 +66,9 @@ extern "C" void mDoMemCdRWm_Restore__FP12CARDFileInfoPvUl();
|
||||
extern "C" void becomeCurrentHeap__7JKRHeapFv();
|
||||
extern "C" void __ct__9JKRThreadFP8OSThreadi();
|
||||
extern "C" void __dt__9JKRThreadFv();
|
||||
extern "C" void OSInitMutex();
|
||||
extern "C" void OSLockMutex();
|
||||
extern "C" void OSUnlockMutex();
|
||||
extern "C" void OSTryLockMutex();
|
||||
extern "C" void OSInitCond();
|
||||
extern "C" void OSWaitCond();
|
||||
extern "C" void OSSignalCond();
|
||||
extern "C" void OSGetCurrentThread();
|
||||
extern "C" void OSCreateThread();
|
||||
extern "C" void OSResumeThread();
|
||||
extern "C" void OSGetThreadPriority();
|
||||
extern "C" void CARDInit();
|
||||
extern "C" void CARDFreeBlocks();
|
||||
extern "C" void CARDCheck();
|
||||
@@ -392,8 +358,7 @@ asm void mDoMemCd_Ctrl_c::setCardState(s32 param_0) {
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803EAF40-803ECF40 017C60 2000+00 2/2 27/27 0/0 .bss g_mDoMemCd_control */
|
||||
extern u8 g_mDoMemCd_control[8192];
|
||||
u8 g_mDoMemCd_control[8192];
|
||||
mDoMemCd_Ctrl_c g_mDoMemCd_control;
|
||||
|
||||
/* 8001741C-80017470 011D5C 0054+00 1/1 0/0 0/0 .text mDoMemCd_main__FPv */
|
||||
#pragma push
|
||||
@@ -405,19 +370,4 @@ static asm void mDoMemCd_main(void* param_0) {
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80017470-80017498 011DB0 0028+00 0/0 1/0 0/0 .text __sinit_m_Do_MemCard_cpp */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void __sinit_m_Do_MemCard_cpp() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCard/__sinit_m_Do_MemCard_cpp.s"
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
REGISTER_CTORS(0x80017470, __sinit_m_Do_MemCard_cpp);
|
||||
#pragma pop
|
||||
|
||||
/* 803743F8-803743F8 000A58 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
|
||||
@@ -4,17 +4,10 @@
|
||||
//
|
||||
|
||||
#include "m_Do/m_Do_controller_pad.h"
|
||||
#include "SSystem/SComponent/c_lib.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct mDoRst {
|
||||
static u8 mResetData[4 + 4 /* padding */];
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
@@ -42,12 +35,12 @@ extern "C" void setEnabled__Q210JUTGamePad7CRumbleFUl();
|
||||
extern "C" void _savegpr_29();
|
||||
extern "C" void _restgpr_29();
|
||||
extern "C" extern u8 g_HIO[64 + 4 /* padding */];
|
||||
extern "C" extern u32 data_80450580;
|
||||
extern "C" extern s8 data_80450580;
|
||||
extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */];
|
||||
extern "C" u8 sAnalogMode__10JUTGamePad[4];
|
||||
extern "C" u8 sCallback__Q210JUTGamePad13C3ButtonReset[4];
|
||||
extern "C" u8 sCallbackArg__Q210JUTGamePad13C3ButtonReset[4 + 4 /* padding */];
|
||||
extern "C" extern u8 struct_80451500[4];
|
||||
extern "C" extern bool struct_80451500;
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
@@ -61,80 +54,56 @@ JUTGamePad* mDoCPd_c::m_gamePad[4];
|
||||
interface_of_controller_pad mDoCPd_c::m_cpadInfo[4];
|
||||
|
||||
/* 80007954-80007A94 002294 0140+00 0/0 1/1 0/0 .text create__8mDoCPd_cFv */
|
||||
#ifdef NONMATCHING
|
||||
void mDoCPd_c::create() {
|
||||
JUTGamePad* JUTGamePad_ptr;
|
||||
cpadInfo* m_cpadInfo_addr;
|
||||
JUTGamePad* pad = new JUTGamePad(JUTGamePad::Port_1);
|
||||
m_gamePad[0] = pad;
|
||||
|
||||
JUTGamePad_ptr = new JUTGamePad(JUTGamePad::Port_1);
|
||||
m_gamePad[0] = JUTGamePad_ptr;
|
||||
if (lbl_80450580 == 0) {
|
||||
if (data_80450580 != 0) {
|
||||
m_gamePad[1] = new JUTGamePad(JUTGamePad::Port_2);
|
||||
m_gamePad[2] = new JUTGamePad(JUTGamePad::Port_3);
|
||||
m_gamePad[3] = new JUTGamePad(JUTGamePad::Port_4);
|
||||
} else {
|
||||
m_gamePad[1] = NULL;
|
||||
m_gamePad[2] = NULL;
|
||||
m_gamePad[3] = NULL;
|
||||
JUTGamePad_ptr = m_gamePad[3];
|
||||
} else {
|
||||
m_gamePad[1] = new JUTGamePad(JUTGamePad::Port_2);
|
||||
m_gamePad[2] = new JUTGamePad(JUTGamePad::Port_3);
|
||||
JUTGamePad_ptr = new JUTGamePad(JUTGamePad::Port_4);
|
||||
}
|
||||
m_gamePad[3] = JUTGamePad_ptr;
|
||||
if (m_Do_Reset_NS_mDoRst_NS_mResetData->field_0x0 == 0) {
|
||||
lbl_80451501 = false;
|
||||
lbl_804514EC = resetCallBack__6mDoRstFiPv;
|
||||
lbl_804514F0 = 0;
|
||||
|
||||
if (!mDoRst::isReset()) {
|
||||
JUTGamePad::clearResetOccurred();
|
||||
JUTGamePad::setResetCallback(mDoRst_resetCallBack, NULL);
|
||||
}
|
||||
sAnalogMode = 3;
|
||||
PADSetAnalogMode(3);
|
||||
m_cpadInfo_addr = &m_cpadInfo;
|
||||
for (int i = 4; i != 0; i--) {
|
||||
m_cpadInfo_addr->interface.field_0x3a = false;
|
||||
m_cpadInfo_addr->interface.field_0x39 = false;
|
||||
m_cpadInfo_addr->interface.field_0x3c = false;
|
||||
m_cpadInfo_addr->interface.field_0x3b = false;
|
||||
m_cpadInfo_addr = m_cpadInfo_addr->unk1;
|
||||
JUTGamePad::setAnalogMode(3);
|
||||
|
||||
interface_of_controller_pad* cpad = &m_cpadInfo[0];
|
||||
for (int i = 0; i < 4; i++) {
|
||||
cpad->mTrigLockL = false;
|
||||
cpad->mHoldLockL = false;
|
||||
cpad->mTrigLockR = false;
|
||||
cpad->mHoldLockR = false;
|
||||
cpad++;
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoCPd_c::create() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_controller_pad/create__8mDoCPd_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 80007A94-80007B7C 0023D4 00E8+00 0/0 1/1 0/0 .text read__8mDoCPd_cFv */
|
||||
#ifdef NONMATCHING
|
||||
void mDoCPd_c::read() {
|
||||
//_savegpr_29();
|
||||
gamePad->read();
|
||||
if (m_Do_Reset_NS_mDoRst_NS_mResetData->field_0x0 == 0 &&
|
||||
m_Do_Reset_NS_mDoRst_NS_mResetData->field_0x8 != 0) {
|
||||
JUTGamePad* JUTGamePad_ptr =
|
||||
JUTGamePad::getGamePad(m_Do_Reset_NS_mDoRst_NS_mResetData->pad_index);
|
||||
bool error = false;
|
||||
if (JUTGamePad_ptr->pad_port != 0xffff &&
|
||||
JUTGamePad_ptr->rumble.field_0x10 != 0) { // Make the rumble thing right
|
||||
error = true;
|
||||
}
|
||||
if (error = false) {
|
||||
m_Do_Reset_NS_mDoRst_NS_mResetData->field_0x8 = 0;
|
||||
JUTGamePad::read();
|
||||
|
||||
if (!mDoRst::isReset() && mDoRst::is3ButtonReset()) {
|
||||
JUTGamePad* pad = JUTGamePad::getGamePad(mDoRst::get3ButtonResetPort());
|
||||
|
||||
if (!pad->isPushing3ButtonReset()) { // Make the rumble thing right
|
||||
mDoRst::off3ButtonReset();
|
||||
}
|
||||
}
|
||||
JUTGamePad** m_gamePad_ptr = m_gamePad;
|
||||
cpadInfo* cpad_ptr = &m_cpadInfo;
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
if (*m_gamePad_ptr == 0) {
|
||||
cLib_memSet(cpad_ptr, 0, 0x40);
|
||||
if (m_gamePad[i] == NULL) {
|
||||
cLib_memSet(m_gamePad[i], 0, 0x40);
|
||||
} else {
|
||||
convert(&cpad_ptr->interface, *m_gamePad_ptr);
|
||||
LRlockCheck(&cpad_ptr->interface);
|
||||
convert(&m_cpadInfo[i], m_gamePad[i]);
|
||||
LRlockCheck(&m_cpadInfo[i]);
|
||||
}
|
||||
m_gamePad_ptr = m_gamePad_ptr + 1; // Shouldn't it be 4 if it's incrementing a pointer???
|
||||
cpad_ptr = cpad_ptr->unk1;
|
||||
}
|
||||
}
|
||||
#else
|
||||
@@ -148,72 +117,27 @@ asm void mDoCPd_c::read() {
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80451A20-80451A24 000020 0004+00 1/1 0/0 0/0 .sdata2 @3709 */
|
||||
SECTION_SDATA2 static f32 lit_3709 = 1.0f / 15.0f;
|
||||
|
||||
/* 80451A24-80451A28 000024 0004+00 1/1 0/0 0/0 .sdata2 @3710 */
|
||||
SECTION_SDATA2 static f32 lit_3710 = 1.0f;
|
||||
|
||||
/* 80451A28-80451A30 000028 0004+04 1/1 0/0 0/0 .sdata2 @3711 */
|
||||
SECTION_SDATA2 static f32 lit_3711[1 + 1 /* padding */] = {
|
||||
0.0071428571827709675f,
|
||||
/* padding */
|
||||
0.0f,
|
||||
};
|
||||
|
||||
/* 80451A30-80451A38 000030 0008+00 1/1 0/0 0/0 .sdata2 @3713 */
|
||||
SECTION_SDATA2 static f64 lit_3713 = 4503599627370496.0 /* cast u32 to float */;
|
||||
|
||||
/* 80007B7C-80007CD0 0024BC 0154+00 1/1 0/0 0/0 .text
|
||||
* convert__8mDoCPd_cFP27interface_of_controller_padP10JUTGamePad */
|
||||
#ifdef NONMATCHING
|
||||
// off on load order, regalloc, const placement (int-to-float conversion magic).
|
||||
void mDoCPd_c::convert(interface_of_controller_pad* pInterface, JUTGamePad* pPad) {
|
||||
pInterface->mButtonFlags = pPad->buttons.mButtonFlags;
|
||||
pInterface->mPressedButtonFlags = pPad->buttons.mPressedButtonFlags;
|
||||
pInterface->mMainStickPosX = pPad->control_stick.mPosX;
|
||||
pInterface->mMainStickPosY = pPad->control_stick.mPosY;
|
||||
pInterface->mMainStickValue = pPad->control_stick.mValue;
|
||||
pInterface->mMainStickAngle = pPad->control_stick.mAngle;
|
||||
pInterface->mCStickPosX = pPad->c_stick.mPosX;
|
||||
pInterface->mCStickPosY = pPad->c_stick.mPosY;
|
||||
pInterface->mCStickValue = pPad->c_stick.mValue;
|
||||
pInterface->mCStickAngle = pPad->c_stick.mAngle;
|
||||
pInterface->mButtonFlags = pPad->getButton();
|
||||
pInterface->mPressedButtonFlags = pPad->getTrigger();
|
||||
pInterface->mMainStickPosX = pPad->getMainStickX();
|
||||
pInterface->mMainStickPosY = pPad->getMainStickY();
|
||||
pInterface->mMainStickValue = pPad->getMainStickValue();
|
||||
pInterface->mMainStickAngle = pPad->getMainStickAngle();
|
||||
pInterface->mCStickPosX = pPad->getSubStickX();
|
||||
pInterface->mCStickPosY = pPad->getSubStickY();
|
||||
pInterface->mCStickValue = pPad->getSubStickValue();
|
||||
pInterface->mCStickAngle = pPad->getSubStickAngle();
|
||||
|
||||
pInterface->mAnalogA = lbl_80451A20 * pPad->buttons.mAnalogARaw;
|
||||
if (pInterface->mAnalogA > lbl_80451A24 /* 1.0 */) {
|
||||
pInterface->mAnalogA = lbl_80451A24;
|
||||
}
|
||||
mDoCPd_ANALOG_CONV(pPad->getAnalogA(), pInterface->mAnalogA);
|
||||
mDoCPd_ANALOG_CONV(pPad->getAnalogB(), pInterface->mAnalogB);
|
||||
mDoCPd_TRIGGER_CONV(pPad->getAnalogL(), pInterface->mTriggerLeft);
|
||||
mDoCPd_TRIGGER_CONV(pPad->getAnalogR(), pInterface->mTriggerRight);
|
||||
|
||||
pInterface->mAnalogB = lbl_80451A20 * pPad->buttons.mAnalogBRaw;
|
||||
if (pInterface->mAnalogB > lbl_80451A24 /* 1.0 */) {
|
||||
pInterface->mAnalogB = lbl_80451A24;
|
||||
}
|
||||
|
||||
// pInterface->mTriggerLeft = pPad->buttons.mTriggerLeftRaw * (1/140.0f);
|
||||
pInterface->mTriggerLeft = lbl_80451A28 * pPad->buttons.mTriggerLeftRaw;
|
||||
if (pInterface->mTriggerLeft > lbl_80451A24 /* 1.0 */) {
|
||||
pInterface->mTriggerLeft = lbl_80451A24;
|
||||
}
|
||||
|
||||
pInterface->mTriggerRight = lbl_80451A28 * pPad->buttons.mTriggerRightRaw;
|
||||
if (pInterface->mTriggerRight > lbl_80451A24 /* 1.0 */) {
|
||||
pInterface->mTriggerRight = lbl_80451A24;
|
||||
}
|
||||
|
||||
pInterface->mGamepadErrorFlags = pPad->error_value;
|
||||
pInterface->mGamepadErrorFlags = pPad->getErrorStatus();
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoCPd_c::convert(interface_of_controller_pad* param_0, JUTGamePad* param_1) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_controller_pad/convert__8mDoCPd_cFP27interface_of_controller_padP10JUTGamePad.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 80007CD0-80007D74 002610 00A4+00 1/1 0/0 0/0 .text
|
||||
* LRlockCheck__8mDoCPd_cFP27interface_of_controller_pad */
|
||||
|
||||
@@ -2427,7 +2427,7 @@ JKRExpHeap* mDoExt_createGameHeap(u32 param_0, JKRHeap* param_1) {
|
||||
}
|
||||
|
||||
/* 8000ED50-8000ED58 -00001 0008+00 0/0 0/0 0/0 .text mDoExt_getGameHeap__Fv */
|
||||
JKRHeap* mDoExt_getGameHeap() {
|
||||
JKRExpHeap* mDoExt_getGameHeap() {
|
||||
return gameHeap;
|
||||
}
|
||||
|
||||
@@ -2540,8 +2540,8 @@ JKRSolidHeap* mDoExt_createSolidHeapFromSystem(u32 pSize, u32 pAlignment) {
|
||||
|
||||
/* 8000EF68-8000EFBC 0098A8 0054+00 2/2 0/0 0/0 .text
|
||||
* mDoExt_createSolidHeapToCurrent__FPP7JKRHeapUlP7JKRHeapUl */
|
||||
static JKRSolidHeap* mDoExt_createSolidHeapToCurrent(JKRHeap** pOutHeap, u32 pSize,
|
||||
JKRHeap* pParentHeap, u32 pAlignment) {
|
||||
JKRSolidHeap* mDoExt_createSolidHeapToCurrent(JKRHeap** pOutHeap, u32 pSize, JKRHeap* pParentHeap,
|
||||
u32 pAlignment) {
|
||||
if (pOutHeap != NULL) {
|
||||
*pOutHeap = JKRHeap::getCurrentHeap();
|
||||
}
|
||||
|
||||
+36
-25
@@ -4,23 +4,12 @@
|
||||
//
|
||||
|
||||
#include "m_Do/m_Do_lib.h"
|
||||
#include "JSystem/JMath/JMATrigonometric.h"
|
||||
#include "JSystem/JUtility/JUTTexture.h"
|
||||
#include "SSystem/SComponent/c_math.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct _GXTlutObj {};
|
||||
|
||||
struct _GXTexObj {};
|
||||
|
||||
struct ResTIMG {};
|
||||
|
||||
struct JMath {
|
||||
static u8 sincosTable_[65536];
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
@@ -43,10 +32,6 @@ extern "C" void init__11J3DUClipperFv();
|
||||
extern "C" void calcViewFrustum__11J3DUClipperFv();
|
||||
extern "C" void __dl__FPv();
|
||||
extern "C" void PSMTXMultVec();
|
||||
extern "C" void GXInitTexObj();
|
||||
extern "C" void GXInitTexObjCI();
|
||||
extern "C" void GXInitTexObjLOD();
|
||||
extern "C" void GXInitTlutObj();
|
||||
extern "C" void __register_global_object();
|
||||
extern "C" void _savegpr_29();
|
||||
extern "C" void _restgpr_29();
|
||||
@@ -69,6 +54,27 @@ SECTION_SDATA2 static f64 lit_3638 = 4503601774854144.0 /* cast s32 to float */;
|
||||
|
||||
/* 8001513C-8001528C 00FA7C 0150+00 0/0 3/3 2/2 .text
|
||||
* mDoLib_setResTimgObj__FPC7ResTIMGP9_GXTexObjUlP10_GXTlutObj */
|
||||
#ifdef NONMATCHING
|
||||
bool mDoLib_setResTimgObj(ResTIMG const* res, _GXTexObj* o_texObj, u32 param_2,
|
||||
_GXTlutObj* o_tlutObj) {
|
||||
if (res->palettesEnabled) {
|
||||
GXInitTlutObj(o_tlutObj, (void*)(res + res->paletteOffset), (GXTlutFmt)res->paletteFormat,
|
||||
res->paletteCount);
|
||||
GXInitTexObjCI(o_texObj, (void*)(res + res->texDataOffset), res->width, res->height,
|
||||
(GXCITexFmt)res->format, (GXTexWrapMode)res->wrapS,
|
||||
(GXTexWrapMode)res->wrapT, 1 - res->mipmapCount, param_2);
|
||||
} else {
|
||||
GXInitTexObj(o_texObj, (void*)(res + res->texDataOffset), res->width, res->height,
|
||||
(GXTexFmt)res->format, (GXTexWrapMode)res->wrapS, (GXTexWrapMode)res->wrapT,
|
||||
(s32)1 - res->mipmapCount);
|
||||
}
|
||||
GXInitTexObjLOD(o_texObj, (GXTexFilter)res->minFilter, (GXTexFilter)res->magFilter,
|
||||
(f32)res->minLOD * 0.125f, (f32)res->maxLOD * 0.125f, (f32)res->LODBias * 0.01f,
|
||||
(s32)res->biasClamp, (s32)res->doEdgeLOD, (GXAnisotropy)res->maxAnisotropy);
|
||||
|
||||
return res->palettesEnabled;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -78,6 +84,7 @@ asm void mDoLib_setResTimgObj(ResTIMG const* param_0, _GXTexObj* param_1, u32 pa
|
||||
#include "asm/m_Do/m_Do_lib/mDoLib_setResTimgObj__FPC7ResTIMGP9_GXTexObjUlP10_GXTlutObj.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 803DD8E4-803DD940 00A604 005C+00 2/2 5/5 5/5 .bss mClipper__14mDoLib_clipper */
|
||||
J3DUClipper mDoLib_clipper::mClipper;
|
||||
@@ -92,14 +99,18 @@ f32 mDoLib_clipper::mFovyRate;
|
||||
SECTION_SDATA2 static f32 lit_3739 = 182.04444885253906f;
|
||||
|
||||
/* 8001528C-80015310 00FBCC 0084+00 0/0 1/1 0/0 .text setup__14mDoLib_clipperFffff */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoLib_clipper::setup(f32 param_0, f32 param_1, f32 param_2, f32 param_3) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_lib/setup__14mDoLib_clipperFffff.s"
|
||||
void mDoLib_clipper::setup(f32 fovy, f32 aspect, f32 near, f32 far) {
|
||||
mClipper.setFovy(fovy);
|
||||
mClipper.setAspect(aspect);
|
||||
mClipper.setNear(near);
|
||||
mClipper.setFar(far);
|
||||
mSystemFar = far;
|
||||
mClipper.calcViewFrustum();
|
||||
|
||||
s16 tmp = fovy * 182.04444885253906f;
|
||||
|
||||
mFovyRate = cM_scos(tmp) / cM_ssin(tmp);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80451B84-80451B88 000184 0004+00 2/2 0/0 0/0 .sdata2 @3784 */
|
||||
|
||||
+154
-189
@@ -4,6 +4,9 @@
|
||||
//
|
||||
|
||||
#include "m_Do/m_Do_machine.h"
|
||||
#include "JSystem/JFramework/JFWSystem.h"
|
||||
#include "JSystem/JUtility/JUTDbPrint.h"
|
||||
#include "JSystem/JUtility/JUTException.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
@@ -11,85 +14,22 @@
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct mDoRst {
|
||||
static u8 mResetData[4 + 4 /* padding */];
|
||||
};
|
||||
|
||||
struct mDoMemCd_Ctrl_c {
|
||||
/* 80016730 */ void ThdInit();
|
||||
};
|
||||
|
||||
struct mDoMch_render_c {
|
||||
static void* mRenderModeObj[1 + 1 /* padding */];
|
||||
};
|
||||
|
||||
struct mDoMain {
|
||||
static u32 memMargin;
|
||||
static u8 sHungUpTime[4];
|
||||
static _GXRenderModeObj* mRenderModeObj;
|
||||
};
|
||||
|
||||
struct mDoDvdThd {
|
||||
/* 80015858 */ void create(s32);
|
||||
};
|
||||
|
||||
struct JKRHeap {
|
||||
/* 802CE438 */ void becomeCurrentHeap();
|
||||
/* 802CE72C */ void getFreeSize();
|
||||
/* 802CE784 */ void getTotalFreeSize();
|
||||
/* 802CEB78 */ void setErrorFlag(bool);
|
||||
/* 802CEB88 */ void setErrorHandler(void (*)(void*, u32, int));
|
||||
|
||||
static u8 sSystemHeap[4];
|
||||
static u8 sRootHeap[4];
|
||||
};
|
||||
|
||||
struct cMl {
|
||||
/* 80263220 */ void init(JKRHeap*);
|
||||
};
|
||||
|
||||
struct OSThread {};
|
||||
|
||||
struct OSContext {};
|
||||
|
||||
struct JUTVideo {
|
||||
/* 802E4CAC */ void destroyManager();
|
||||
};
|
||||
|
||||
struct JUTGamePad {
|
||||
struct EPadPort {};
|
||||
|
||||
/* 802E06DC */ JUTGamePad(JUTGamePad::EPadPort);
|
||||
/* 802E07B0 */ ~JUTGamePad();
|
||||
};
|
||||
|
||||
struct JUTFont {};
|
||||
|
||||
struct JUTException {
|
||||
/* 802E2F18 */ void isEnablePad() const;
|
||||
/* 802E2F54 */ void readPad(u32*, u32*);
|
||||
/* 802E3980 */ void waitTime(s32);
|
||||
/* 802E3AEC */ void setPreUserCallback(void (*)(u16, OSContext*, u32, u32));
|
||||
/* 802E3AFC */ void setPostUserCallback(void (*)(u16, OSContext*, u32, u32));
|
||||
/* 802E3B0C */ void appendMapFile(char const*);
|
||||
|
||||
static u8 sErrorManager[4];
|
||||
static u8 sConsole[4];
|
||||
};
|
||||
|
||||
struct JUTDbPrint {
|
||||
/* 802E0190 */ void start(JUTFont*, JKRHeap*);
|
||||
|
||||
static u8 sDebugPrint[4 + 4 /* padding */];
|
||||
};
|
||||
|
||||
struct JUTConsole {
|
||||
/* 802E7BB8 */ void print_f(char const*, ...);
|
||||
/* 802E7C38 */ void print(char const*);
|
||||
/* 802E80A8 */ void scroll(int);
|
||||
/* 802E8184 */ void getUsedLine() const;
|
||||
/* 802E81A8 */ void getLineOffset() const;
|
||||
};
|
||||
|
||||
struct JUTConsoleManager {
|
||||
/* 802E8450 */ void drawDirect(bool) const;
|
||||
/* 802E84C4 */ void setDirectConsole(JUTConsole*);
|
||||
@@ -98,15 +38,7 @@ struct JUTConsoleManager {
|
||||
};
|
||||
|
||||
struct JUTAssertion {
|
||||
/* 802E4C34 */ void setVisible(bool);
|
||||
};
|
||||
|
||||
struct JKRThreadSwitch {
|
||||
/* 802D1A14 */ void createManager(JKRHeap*);
|
||||
};
|
||||
|
||||
struct JKRThread {
|
||||
/* 802D16B8 */ JKRThread(OSThread*, int);
|
||||
/* 802E4C34 */ static void setVisible(bool);
|
||||
};
|
||||
|
||||
struct JKRDvdRipper {
|
||||
@@ -125,39 +57,22 @@ struct JKRAram {
|
||||
static u32 sSZSBufferSize[1 + 1 /* padding */];
|
||||
};
|
||||
|
||||
struct JFWSystem {
|
||||
struct CSetUpParam {
|
||||
static u32 maxStdHeaps;
|
||||
static u32 sysHeapSize;
|
||||
static u32 fifoBufSize;
|
||||
static u32 aramAudioBufSize;
|
||||
static u32 aramGraphBufSize;
|
||||
static void* renderMode;
|
||||
};
|
||||
|
||||
/* 80271CD0 */ void firstInit();
|
||||
/* 80271D18 */ void init();
|
||||
|
||||
static u8 systemHeap[4];
|
||||
static u8 systemConsole[4];
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" static void myGetHeapTypeByString__FP7JKRHeap();
|
||||
extern "C" static void myMemoryErrorRoutine__FPvUli();
|
||||
extern "C" static void myHeapCheckRecursive__FP7JKRHeap();
|
||||
extern "C" void myHeapCheckRecursive__FP7JKRHeap();
|
||||
extern "C" void mDoMch_HeapCheckAll__Fv();
|
||||
extern "C" static void developKeyCheck__FUlUl();
|
||||
extern "C" static void mDoMch_IsProgressiveMode__Fv();
|
||||
extern "C" static void exceptionReadPad__FPUlPUl();
|
||||
extern "C" static void exceptionRestart__Fv();
|
||||
extern "C" static void myExceptionCallback__FUsP9OSContextUlUl();
|
||||
extern "C" static s8 developKeyCheck__FUlUl(u32, u32);
|
||||
extern "C" bool mDoMch_IsProgressiveMode__Fv();
|
||||
extern "C" bool exceptionReadPad__FPUlPUl(u32*, u32*);
|
||||
extern "C" void exceptionRestart__Fv();
|
||||
extern "C" void myExceptionCallback__FUsP9OSContextUlUl();
|
||||
extern "C" static void fault_callback_scroll__FUsP9OSContextUlUl();
|
||||
extern "C" static void my_PrintHeap__FPCcUl();
|
||||
extern "C" static void my_SysPrintHeap__FPCcPvUl();
|
||||
extern "C" void my_SysPrintHeap__FPCcPvUl();
|
||||
extern "C" void mDoMch_Create__Fv();
|
||||
extern "C" extern char const* const m_Do_m_Do_machine__stringBase0;
|
||||
extern "C" void* mRenderModeObj__15mDoMch_render_c[1 + 1 /* padding */];
|
||||
@@ -168,9 +83,6 @@ extern "C" void* mRenderModeObj__15mDoMch_render_c[1 + 1 /* padding */];
|
||||
|
||||
extern "C" void OSReportDisable();
|
||||
extern "C" void OSReportEnable();
|
||||
extern "C" void OSReport();
|
||||
extern "C" void OSReport_Error();
|
||||
extern "C" void OSReport_System();
|
||||
extern "C" void mDoExt_createAssertHeap__FP7JKRHeap();
|
||||
extern "C" void mDoExt_createDbPrintHeap__FUlP7JKRHeap();
|
||||
extern "C" void mDoExt_getDbPrintHeap__Fv();
|
||||
@@ -222,28 +134,16 @@ extern "C" void getLineOffset__10JUTConsoleCFv();
|
||||
extern "C" void drawDirect__17JUTConsoleManagerCFb();
|
||||
extern "C" void setDirectConsole__17JUTConsoleManagerFP10JUTConsole();
|
||||
extern "C" void PPCHalt();
|
||||
extern "C" void OSGetConsoleType();
|
||||
extern "C" void OSGetArenaHi();
|
||||
extern "C" void OSGetArenaLo();
|
||||
extern "C" void OSSetArenaHi();
|
||||
extern "C" void OSEnableInterrupts();
|
||||
extern "C" void OSResetSystem();
|
||||
extern "C" void OSGetResetCode();
|
||||
extern "C" void OSGetProgressiveMode();
|
||||
extern "C" u32 OSGetProgressiveMode();
|
||||
extern "C" void OSSetProgressiveMode();
|
||||
extern "C" void OSGetCurrentThread();
|
||||
extern "C" void OSGetThreadPriority();
|
||||
extern "C" void OSGetTime();
|
||||
extern "C" void DVDChangeDir();
|
||||
extern "C" void VIFlush();
|
||||
extern "C" void VISetBlack();
|
||||
extern "C" void VISetBlack(s32);
|
||||
extern "C" void VIGetRetraceCount();
|
||||
extern "C" void VIGetDTVStatus();
|
||||
extern "C" void GXSetDrawDoneCallback();
|
||||
extern "C" void _savegpr_28();
|
||||
extern "C" void _restgpr_28();
|
||||
extern "C" extern u8 g_mDoMemCd_control[8192];
|
||||
extern "C" extern u32 data_80450580;
|
||||
extern "C" extern s8 data_80450580;
|
||||
extern "C" u32 memMargin__7mDoMain;
|
||||
extern "C" u32 maxStdHeaps__Q29JFWSystem11CSetUpParam;
|
||||
extern "C" u32 sysHeapSize__Q29JFWSystem11CSetUpParam;
|
||||
@@ -267,7 +167,7 @@ extern "C" u8 systemConsole__9JFWSystem[4];
|
||||
extern "C" u8 sSystemHeap__7JKRHeap[4];
|
||||
extern "C" u8 sRootHeap__7JKRHeap[4];
|
||||
extern "C" u8 sDebugPrint__10JUTDbPrint[4 + 4 /* padding */];
|
||||
extern "C" extern u8 struct_80451500[4];
|
||||
extern "C" extern bool struct_80451500;
|
||||
extern "C" u8 sErrorManager__12JUTException[4];
|
||||
extern "C" u8 sConsole__12JUTException[4];
|
||||
extern "C" u8 sManager__17JUTConsoleManager[4];
|
||||
@@ -331,7 +231,7 @@ static u8 struct_80450C10[8];
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void myGetHeapTypeByString(JKRHeap* param_0) {
|
||||
static asm char* myGetHeapTypeByString(JKRHeap* param_0) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_machine/myGetHeapTypeByString__FP7JKRHeap.s"
|
||||
}
|
||||
@@ -367,24 +267,37 @@ SECTION_DEAD static char const* const stringBase_80373EEE = "error in %08x(%s)\n
|
||||
#pragma pop
|
||||
|
||||
/* 8000B5C8-8000B668 005F08 00A0+00 1/1 0/0 0/0 .text myHeapCheckRecursive__FP7JKRHeap */
|
||||
#ifdef NONMATCHING
|
||||
void myHeapCheckRecursive(JKRHeap* param_0) {
|
||||
if (!param_0->check()) {
|
||||
char* type = myGetHeapTypeByString(param_0);
|
||||
OSReport_Error("error in %08x(%s)\n", param_0, type);
|
||||
}
|
||||
|
||||
JSUTree<JKRHeap> heapTree = param_0->getHeapTree();
|
||||
for (heapTree.getFirstChild(); heapTree.getNextChild() != NULL; heapTree--) {
|
||||
/* if (heapTree->getNextChild() == NULL) {
|
||||
heapTree--;
|
||||
} */
|
||||
JKRHeap* heap = (JKRHeap*)heapTree.getObject();
|
||||
myHeapCheckRecursive(heap);
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void myHeapCheckRecursive(JKRHeap* param_0) {
|
||||
asm void myHeapCheckRecursive(JKRHeap* param_0) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_machine/myHeapCheckRecursive__FP7JKRHeap.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 8000B668-8000B68C 005FA8 0024+00 0/0 2/2 0/0 .text mDoMch_HeapCheckAll__Fv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMch_HeapCheckAll() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_machine/mDoMch_HeapCheckAll__Fv.s"
|
||||
void mDoMch_HeapCheckAll() {
|
||||
myHeapCheckRecursive(JKRHeap::sRootHeap);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8000B68C-8000B73C 005FCC 00B0+00 1/1 0/0 0/0 .text developKeyCheck__FUlUl */
|
||||
#pragma push
|
||||
@@ -397,56 +310,79 @@ static asm void developKeyCheck(u32 param_0, u32 param_1) {
|
||||
#pragma pop
|
||||
|
||||
/* 8000B73C-8000B768 00607C 002C+00 1/1 0/0 0/0 .text mDoMch_IsProgressiveMode__Fv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void mDoMch_IsProgressiveMode() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_machine/mDoMch_IsProgressiveMode__Fv.s"
|
||||
u8 mDoMch_IsProgressiveMode() {
|
||||
return OSGetProgressiveMode() == true;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8000B768-8000B798 0060A8 0030+00 2/2 0/0 0/0 .text exceptionReadPad__FPUlPUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void exceptionReadPad(u32* param_0, u32* param_1) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_machine/exceptionReadPad__FPUlPUl.s"
|
||||
bool exceptionReadPad(u32* param_0, u32* param_1) {
|
||||
return JUTException::getManager()->readPad(param_0, param_1);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8000B798-8000B7C8 0060D8 0030+00 1/1 0/0 0/0 .text exceptionRestart__Fv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void exceptionRestart() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_machine/exceptionRestart__Fv.s"
|
||||
void exceptionRestart() {
|
||||
mDoRst_reset(0, 0, 0);
|
||||
OSResetSystem(0, 0, 0);
|
||||
do {
|
||||
} while (true);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80373DE8-80373DE8 000448 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DEAD static char const* const stringBase_80373F01 = "振動停止&原点復帰\n";
|
||||
SECTION_DEAD static char const* const stringBase_80373F15 = "例外マネージャがありません\n";
|
||||
SECTION_DEAD static char const* const stringBase_80373F31 = "キー入力を受け付けています\n";
|
||||
SECTION_DEAD static char const* const stringBase_80373F4D = "JUTAssertionを可視化しました\n";
|
||||
SECTION_DEAD static char const* const stringBase_80373F6B = "3秒間停止\n";
|
||||
SECTION_DEAD static char const* const stringBase_80373F76 = "/map/Final/Release";
|
||||
#pragma pop
|
||||
|
||||
/* 8000B7C8-8000B95C 006108 0194+00 1/1 0/0 0/0 .text myExceptionCallback__FUsP9OSContextUlUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void myExceptionCallback(u16 param_0, OSContext* param_1, u32 param_2, u32 param_3) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_machine/myExceptionCallback__FUsP9OSContextUlUl.s"
|
||||
void myExceptionCallback(u16 param_0, OSContext* param_1, u32 param_2, u32 param_3) {
|
||||
u32 tmp1;
|
||||
u32 tmp2;
|
||||
|
||||
mDoMain::sHungUpTime = OSGetTime();
|
||||
OSReportEnable();
|
||||
cAPICPad_recalibrate__Fv();
|
||||
// "Vibration stopping & resetting to default\n"
|
||||
OSReport("振動停止&原点復帰\n");
|
||||
|
||||
JUTException* manager = JUTException::getManager();
|
||||
|
||||
if (manager == NULL) {
|
||||
// "Exception Manager doesn't exist\n"
|
||||
OSReport("例外マネージャがありません\n");
|
||||
PPCHalt();
|
||||
} else {
|
||||
manager->setTraceSuppress(0x80);
|
||||
if (data_80450580 == 0) {
|
||||
JUTGamePad pad(JUTGamePad::Port_1);
|
||||
manager->field_0x84 = &pad;
|
||||
manager->field_0x88 = -1;
|
||||
|
||||
if (manager != NULL) {
|
||||
OSEnableInterrupts();
|
||||
// "Accepting Key input\n"
|
||||
OSReport("キー入力を受け付けています\n");
|
||||
while (data_80450580 == 0) {
|
||||
exceptionReadPad(&tmp2, &tmp1);
|
||||
developKeyCheck(tmp2, tmp1);
|
||||
JUTException::waitTime(30);
|
||||
if (struct_80451501) {
|
||||
exceptionRestart();
|
||||
}
|
||||
}
|
||||
// "JUTAssertion is visible\n"
|
||||
OSReport("JUTAssertionを可視化しました\n");
|
||||
JUTAssertion::setVisible(true);
|
||||
JUTDbPrint::getManager()->setVisible(true);
|
||||
JFWSystem::getSystemConsole()->setOutput(3);
|
||||
} else {
|
||||
PPCHalt();
|
||||
}
|
||||
} else {
|
||||
// "Wait for 3 seconds\n"
|
||||
OSReport("3秒間停止\n");
|
||||
JUTException::waitTime(3000);
|
||||
}
|
||||
}
|
||||
DVDChangeDir("/map/Final/Release");
|
||||
JUTVideo::destroyManager();
|
||||
GXSetDrawDoneCallback(0);
|
||||
VISetBlack(0);
|
||||
VIFlush();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80373DE8-80373DE8 000448 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
@@ -497,14 +433,11 @@ SECTION_DEAD static char const* const stringBase_80374017 = ""
|
||||
#pragma pop
|
||||
|
||||
/* 8000BCF8-8000BD44 006638 004C+00 1/1 0/0 0/0 .text my_SysPrintHeap__FPCcPvUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void my_SysPrintHeap(char const* param_0, void* param_1, u32 param_2) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_machine/my_SysPrintHeap__FPCcPvUl.s"
|
||||
void my_SysPrintHeap(char const* message, void* start, u32 size) {
|
||||
// "32m%-24s = %08x-%08x size=%d KB\n"
|
||||
OSReport_System("\x1b[32m%-24s = %08x-%08x size=%d KB\n\x1b[m", message, start,
|
||||
(u32)start + size, size >> 10);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80373DE8-80373DE8 000448 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
@@ -521,28 +454,60 @@ SECTION_DEAD static char const* const stringBase_8037409E = "/map/Final/Release/
|
||||
#pragma pop
|
||||
|
||||
/* 803A2F60-803A2F9C 000080 003C+00 1/0 0/0 0/0 .data g_ntscZeldaIntDf */
|
||||
SECTION_DATA static u8 g_ntscZeldaIntDf[60] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x02, 0x60, 0x01, 0xC0, 0x01, 0xC0, 0x00, 0x1B, 0x00, 0x10, 0x02,
|
||||
0x9A, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06,
|
||||
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
|
||||
0x06, 0x06, 0x06, 0x06, 0x06, 0x08, 0x08, 0x0A, 0x0C, 0x0A, 0x08, 0x08, 0x00, 0x00, 0x00,
|
||||
};
|
||||
SECTION_DATA static _GXRenderModeObj g_ntscZeldaIntDf = {0,
|
||||
608,
|
||||
448,
|
||||
448,
|
||||
27,
|
||||
16,
|
||||
666,
|
||||
448,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
{{6, 6},
|
||||
{6, 6},
|
||||
{6, 6},
|
||||
{6, 6},
|
||||
{6, 6},
|
||||
{6, 6},
|
||||
{6, 6},
|
||||
{6, 6},
|
||||
{6, 6},
|
||||
{6, 6},
|
||||
{6, 6},
|
||||
{6, 6}},
|
||||
{8, 8, 10, 12, 10, 8, 8}};
|
||||
|
||||
/* 803A2F9C-803A2FD8 0000BC 003C+00 1/1 1/1 0/0 .data g_ntscZeldaProg */
|
||||
SECTION_DATA extern u8 g_ntscZeldaProg[60] = {
|
||||
0x00, 0x00, 0x00, 0x02, 0x02, 0x60, 0x01, 0xC0, 0x01, 0xC0, 0x00, 0x1B, 0x00, 0x10, 0x02,
|
||||
0x9A, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06,
|
||||
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
|
||||
0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x15, 0x16, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
SECTION_DATA extern _GXRenderModeObj g_ntscZeldaProg = {2,
|
||||
608,
|
||||
448,
|
||||
448,
|
||||
27,
|
||||
16,
|
||||
666,
|
||||
448,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
{{6, 6},
|
||||
{6, 6},
|
||||
{6, 6},
|
||||
{6, 6},
|
||||
{6, 6},
|
||||
{6, 6},
|
||||
{6, 6},
|
||||
{6, 6},
|
||||
{6, 6},
|
||||
{6, 6},
|
||||
{6, 6},
|
||||
{6, 6}},
|
||||
{0, 0, 21, 22, 21, 0, 0}};
|
||||
|
||||
/* 804505A0-804505A8 -00001 0004+04 1/1 3/3 0/0 .sdata mRenderModeObj__15mDoMch_render_c
|
||||
*/
|
||||
SECTION_SDATA void* mDoMch_render_c::mRenderModeObj[1 + 1 /* padding */] = {
|
||||
(void*)&g_ntscZeldaIntDf,
|
||||
/* padding */
|
||||
NULL,
|
||||
};
|
||||
SECTION_SDATA _GXRenderModeObj* mDoMch_render_c::mRenderModeObj = &g_ntscZeldaIntDf;
|
||||
|
||||
/* 8000BD44-8000C0CC 006684 0388+00 0/0 2/1 0/0 .text mDoMch_Create__Fv */
|
||||
#pragma push
|
||||
|
||||
@@ -4,98 +4,35 @@
|
||||
//
|
||||
|
||||
#include "m_Do/m_Do_machine_exception.h"
|
||||
#include "JSystem/JFramework/JFWSystem.h"
|
||||
#include "JSystem/JKernel/JKRAram.h"
|
||||
#include "JSystem/JUtility/JUTConsole.h"
|
||||
#include "d/com/d_com_inf_game.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "m_Do/m_Do_ext.h"
|
||||
#include "m_Do/m_Do_main.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct mDoMain {
|
||||
static u8 COPYDATE_STRING[18 + 2 /* padding */];
|
||||
static u8 sPowerOnTime[4];
|
||||
static u8 sHungUpTime[4];
|
||||
};
|
||||
|
||||
struct dRes_control_c {
|
||||
/* 8003C638 */ void dump();
|
||||
};
|
||||
|
||||
struct JUTConsole {
|
||||
/* 802E7C38 */ void print(char const*);
|
||||
/* 802E7F7C */ void dumpToTerminal(unsigned int);
|
||||
};
|
||||
|
||||
struct JKRHeap {
|
||||
/* 802CE72C */ void getFreeSize();
|
||||
/* 802CE784 */ void getTotalFreeSize();
|
||||
};
|
||||
|
||||
struct JKRAramHeap {
|
||||
/* 802D3218 */ void dump();
|
||||
};
|
||||
|
||||
struct JKRAram {
|
||||
static u8 sAramObject[4];
|
||||
};
|
||||
|
||||
struct JFWSystem {
|
||||
static u8 systemConsole[4];
|
||||
};
|
||||
|
||||
struct DynamicModuleControlBase {
|
||||
/* 80262470 */ void dump();
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" static void print_f__FPCce();
|
||||
extern "C" static void print__FPCc();
|
||||
extern "C" static void dispHeapInfo__Fv();
|
||||
extern "C" static void dispGameInfo__Fv();
|
||||
extern "C" static void dispDateInfo__Fv();
|
||||
extern "C" static void dispConsoleToTerminal__Fv();
|
||||
extern "C" void exception_addition__FP10JUTConsole();
|
||||
extern "C" extern char const* const m_Do_m_Do_machine_exception__stringBase0;
|
||||
extern "C" extern u8 struct_80450C98[4];
|
||||
extern "C" extern u8 struct_80450C9C[4];
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
extern "C" void dump__14dRes_control_cFv();
|
||||
extern "C" void dump__24DynamicModuleControlBaseFv();
|
||||
extern "C" void getFreeSize__7JKRHeapFv();
|
||||
extern "C" void getTotalFreeSize__7JKRHeapFv();
|
||||
extern "C" void dump__11JKRAramHeapFv();
|
||||
extern "C" void print__10JUTConsoleFPCc();
|
||||
extern "C" void JUTConsole_print_f_va_();
|
||||
extern "C" void dumpToTerminal__10JUTConsoleFUi();
|
||||
extern "C" void OSTicksToCalendarTime();
|
||||
extern "C" void _savegpr_23();
|
||||
extern "C" void _restgpr_23();
|
||||
extern "C" u8 COPYDATE_STRING__7mDoMain[18 + 2 /* padding */];
|
||||
extern "C" extern u8 g_dComIfG_gameInfo[122384];
|
||||
extern "C" u8 sPowerOnTime__7mDoMain[4];
|
||||
extern "C" extern u8 data_80450B0C[4];
|
||||
extern "C" u8 sHungUpTime__7mDoMain[4];
|
||||
extern "C" extern u8 data_80450B14[4];
|
||||
extern "C" extern u8 gameHeap[4];
|
||||
extern "C" extern u8 zeldaHeap[4];
|
||||
extern "C" extern u8 archiveHeap[4];
|
||||
extern "C" u8 systemConsole__9JFWSystem[4];
|
||||
extern "C" u8 sAramObject__7JKRAram[4];
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80450C90-80450C98 000190 0004+04 3/3 0/0 0/0 .sbss sConsole */
|
||||
static u8 sConsole[4 + 4 /* padding */];
|
||||
static JUTConsole* sConsole;
|
||||
|
||||
/* 80017D7C-80017E08 0126BC 008C+00 3/3 0/0 0/0 .text print_f__FPCce */
|
||||
#pragma push
|
||||
@@ -107,107 +44,80 @@ static asm void print_f(char const* param_0, ...) {
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80017E08-80017E30 012748 0028+00 2/2 0/0 0/0 .text print__FPCc */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void print(char const* param_0) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_machine_exception/print__FPCc.s"
|
||||
void print(char const* string) {
|
||||
sConsole->print(string);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80374460-80374460 000AC0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DEAD static char const* const stringBase_80374460 =
|
||||
"--------------------------------------\n";
|
||||
SECTION_DEAD static char const* const stringBase_80374488 = "-- Heap Free / TotalFree (KB) --\n";
|
||||
SECTION_DEAD static char const* const stringBase_803744AA = " Zelda %5d / %5d\n";
|
||||
SECTION_DEAD static char const* const stringBase_803744BD = " Game %5d / %5d\n";
|
||||
SECTION_DEAD static char const* const stringBase_803744D0 = "Archive %5d / %5d\n";
|
||||
SECTION_DEAD static char const* const stringBase_803744E3 = "--------------------------------\n";
|
||||
#pragma pop
|
||||
const char* stringBase_80374460 = "--------------------------------------\n";
|
||||
|
||||
/* 80017E30-80017F8C 012770 015C+00 1/1 0/0 0/0 .text dispHeapInfo__Fv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void dispHeapInfo() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_machine_exception/dispHeapInfo__Fv.s"
|
||||
void dispHeapInfo() {
|
||||
JKRExpHeap* zelda = zeldaHeap;
|
||||
JKRExpHeap* game = gameHeap;
|
||||
JKRExpHeap* archive = archiveHeap;
|
||||
|
||||
u32 zeldaFree = zelda->getFreeSize();
|
||||
u32 gameFree = game->getFreeSize();
|
||||
u32 archiveFree = archive->getFreeSize();
|
||||
u32 zeldaTotal = zelda->getTotalFreeSize();
|
||||
u32 gameTotal = game->getTotalFreeSize();
|
||||
u32 archiveTotal = archive->getTotalFreeSize();
|
||||
|
||||
print("-- Heap Free / TotalFree (KB) --\n");
|
||||
print_f(" Zelda %5d / %5d\n", zeldaFree >> 10, zeldaTotal >> 10);
|
||||
print_f(" Game %5d / %5d\n", gameFree >> 10, gameTotal >> 10);
|
||||
print_f("Archive %5d / %5d\n", archiveFree >> 10, archiveTotal >> 10);
|
||||
print("--------------------------------\n");
|
||||
|
||||
if (JKRAram::getAramHeap()) {
|
||||
JKRAram::getAramHeap()->dump();
|
||||
}
|
||||
dump__24DynamicModuleControlBaseFv();
|
||||
g_dComIfG_gameInfo.mResControl.dump();
|
||||
|
||||
zelda->dump_sort();
|
||||
game->dump_sort();
|
||||
archive->dump_sort();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80374460-80374460 000AC0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DEAD static char const* const stringBase_80374505 = "Start StageName:RoomNo [%s:%d]\n";
|
||||
#pragma pop
|
||||
|
||||
/* 80017F8C-80017FD0 0128CC 0044+00 1/1 0/0 0/0 .text dispGameInfo__Fv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void dispGameInfo() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_machine_exception/dispGameInfo__Fv.s"
|
||||
void dispGameInfo() {
|
||||
print_f("Start StageName:RoomNo [%s:%d]\n", dComIfGp_getStartStageName(),
|
||||
dComIfGp_getStartStageRoomNo());
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80374460-80374460 000AC0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DEAD static char const* const stringBase_80374525 =
|
||||
"------------- Date Infomation ---------\n";
|
||||
SECTION_DEAD static char const* const stringBase_8037454E = " FINAL VERSION\n";
|
||||
SECTION_DEAD static char const* const stringBase_8037455E = "COMPILE USER: FINAL\n";
|
||||
SECTION_DEAD static char const* const stringBase_80374573 = "COPYDATE : %17s\n";
|
||||
SECTION_DEAD static char const* const stringBase_80374586 =
|
||||
"PowerOnTime: %04d/%2d/%2d %2d:%2d:%2d`%03d\"%03d\n";
|
||||
SECTION_DEAD static char const* const stringBase_803745B7 =
|
||||
"HungUpTime : %04d/%2d/%2d %2d:%2d:%2d`%03d\"%03d\n";
|
||||
SECTION_DEAD static char const* const stringBase_803745E8 =
|
||||
"PlayTime : %4d days, %2d:%2d:%2d`%03d\"%03d\n";
|
||||
SECTION_DEAD static char const* const stringBase_80374616 =
|
||||
"---------------------------------------\n";
|
||||
/* @stringBase0 padding */
|
||||
SECTION_DEAD static char const* const pad_8037463F = "";
|
||||
#pragma pop
|
||||
void dispDateInfo() {
|
||||
print("------------- Date Infomation ---------\n");
|
||||
print(" FINAL VERSION\n");
|
||||
print("COMPILE USER: FINAL\n");
|
||||
print_f("COPYDATE : %17s\n", mDoMain::COPYDATE_STRING);
|
||||
|
||||
/* 80017FD0-80018124 012910 0154+00 1/1 0/0 0/0 .text dispDateInfo__Fv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void dispDateInfo() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_machine_exception/dispDateInfo__Fv.s"
|
||||
OSCalendarTime time;
|
||||
OSTicksToCalendarTime(mDoMain::sPowerOnTime, &time);
|
||||
print_f("PowerOnTime: %04d/%2d/%2d %2d:%2d:%2d`%03d\"%03d\n", time.year, time.month,
|
||||
time.day_of_month, time.hours, time.minutes, time.seconds, time.milliseconds,
|
||||
time.microseconds);
|
||||
|
||||
OSTicksToCalendarTime(mDoMain::sHungUpTime, &time);
|
||||
print_f("HungUpTime : %04d/%2d/%2d %2d:%2d:%2d`%03d\"%03d\n", time.year, time.month,
|
||||
time.day_of_month, time.hours, time.minutes, time.seconds, time.milliseconds,
|
||||
time.microseconds);
|
||||
|
||||
OSTicksToCalendarTime(mDoMain::sHungUpTime - mDoMain::sPowerOnTime, &time);
|
||||
print_f("PlayTime : %4d days, %2d:%2d:%2d`%03d\"%03d\n", time.year_day, time.hours,
|
||||
time.minutes, time.seconds, time.milliseconds, time.microseconds);
|
||||
print("---------------------------------------\n");
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80018124-8001814C 012A64 0028+00 1/1 0/0 0/0 .text dispConsoleToTerminal__Fv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void dispConsoleToTerminal() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_machine_exception/dispConsoleToTerminal__Fv.s"
|
||||
void dispConsoleToTerminal() {
|
||||
JFWSystem::getSystemConsole()->dumpToTerminal(0xFFFFFFFF);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8001814C-8001817C 012A8C 0030+00 0/0 1/1 0/0 .text exception_addition__FP10JUTConsole
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void exception_addition(JUTConsole* param_0) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_machine_exception/exception_addition__FP10JUTConsole.s"
|
||||
void exception_addition(JUTConsole* pConsole) {
|
||||
sConsole = pConsole;
|
||||
dispHeapInfo();
|
||||
dispDateInfo();
|
||||
dispConsoleToTerminal();
|
||||
dispGameInfo();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80450C98-80450C9C -00001 0004+00 0/0 0/0 50/50 .sbss None */
|
||||
|
||||
+179
-325
@@ -4,65 +4,25 @@
|
||||
//
|
||||
|
||||
#include "m_Do/m_Do_main.h"
|
||||
#include "JSystem/JFramework/JFWSystem.h"
|
||||
#include "JSystem/JKernel/JKRAram.h"
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
#include "JSystem/JUtility/JUTReport.h"
|
||||
#include "d/com/d_com_inf_game.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "f_ap/f_ap_game.h"
|
||||
#include "m_Do/m_Do_MemCard.h"
|
||||
#include "m_Do/m_Do_Reset.h"
|
||||
#include "m_Do/m_Do_controller_pad.h"
|
||||
#include "m_Do/m_Do_dvd_thread.h"
|
||||
#include "m_Do/m_Do_graphic.h"
|
||||
#include "msl_c/string.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct mDoRst {
|
||||
static u8 mResetData[4 + 4 /* padding */];
|
||||
};
|
||||
|
||||
struct mDoMemCd_Ctrl_c {
|
||||
/* 80016894 */ void update();
|
||||
};
|
||||
|
||||
struct mDoDvdThd_callback_c {
|
||||
/* 80015C74 */ void create(void* (*)(void*), void*);
|
||||
};
|
||||
|
||||
struct dRes_control_c {
|
||||
/* 8003C638 */ void dump();
|
||||
};
|
||||
|
||||
struct dComIfG_inf_c {
|
||||
/* 8002CBE4 */ void ct();
|
||||
};
|
||||
|
||||
struct JUTConsole {
|
||||
/* 802E75EC */ void clear();
|
||||
/* 802E7F7C */ void dumpToTerminal(unsigned int);
|
||||
/* 802E80A8 */ void scroll(int);
|
||||
/* 802E81A8 */ void getLineOffset() const;
|
||||
};
|
||||
|
||||
struct JUTAssertion {
|
||||
/* 802E4C3C */ void setMessageCount(int);
|
||||
};
|
||||
|
||||
struct JKRSolidHeap {
|
||||
/* 802D0A24 */ void create(u32, JKRHeap*, bool);
|
||||
};
|
||||
|
||||
struct JKRAramHeap {
|
||||
/* 802D3134 */ void getFreeSize();
|
||||
/* 802D31AC */ void getTotalFreeSize();
|
||||
/* 802D3218 */ void dump();
|
||||
};
|
||||
|
||||
struct JKRAram {
|
||||
static u8 sAramObject[4];
|
||||
};
|
||||
|
||||
struct JFWSystem {
|
||||
static u8 systemConsole[4];
|
||||
};
|
||||
|
||||
struct DynamicModuleControlBase {
|
||||
/* 80262470 */ void dump();
|
||||
};
|
||||
@@ -71,7 +31,7 @@ struct DynamicModuleControlBase {
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" static void version_check__Fv();
|
||||
extern "C" void version_check__Fv();
|
||||
extern "C" void CheckHeap1__9HeapCheckFv();
|
||||
extern "C" static void CheckHeap__FUl();
|
||||
extern "C" static void countUsed__FP10JKRExpHeap();
|
||||
@@ -79,7 +39,7 @@ extern "C" void getUsedCount__9HeapCheckCFv();
|
||||
extern "C" void heapDisplay__9HeapCheckCFv();
|
||||
extern "C" static void debugDisplay__Fv();
|
||||
extern "C" static void Debug_console__FUl();
|
||||
extern "C" static void LOAD_COPYDATE__FPv();
|
||||
extern "C" void* LOAD_COPYDATE__FPv();
|
||||
extern "C" static void debug__Fv();
|
||||
extern "C" static void main01__Fv();
|
||||
extern "C" void main();
|
||||
@@ -166,13 +126,7 @@ extern "C" void _restgpr_27();
|
||||
extern "C" void _restgpr_28();
|
||||
extern "C" u8 m_gamePad__8mDoCPd_c[16];
|
||||
extern "C" u8 m_cpadInfo__8mDoCPd_c[256];
|
||||
extern "C" extern u8 g_mDoMemCd_control[8192];
|
||||
extern "C" extern u8 g_HIO[64 + 4 /* padding */];
|
||||
extern "C" extern u8 g_dComIfG_gameInfo[122384];
|
||||
extern "C" extern u8 g_mDoAud_audioHeap[4];
|
||||
extern "C" extern u8 gameHeap[4];
|
||||
extern "C" extern u8 zeldaHeap[4];
|
||||
extern "C" extern u8 archiveHeap[4];
|
||||
extern "C" extern JKRSolidHeap* g_mDoAud_audioHeap;
|
||||
extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */];
|
||||
extern "C" extern u8 struct_80450C80[8];
|
||||
extern "C" u8 systemConsole__9JFWSystem[4];
|
||||
@@ -185,8 +139,8 @@ extern "C" u8 sAramObject__7JKRAram[4];
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
static void version_check() {
|
||||
if ((!strcmp("20Apr2004", "20Apr2004")) && (!strcmp("Patch2", "Patch2"))) {
|
||||
void version_check() {
|
||||
if (!strcmp("20Apr2004", "20Apr2004") && !strcmp("Patch2", "Patch2")) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -235,30 +189,7 @@ extern "C" HeapCheck HostioHeapCheck;
|
||||
extern "C" HeapCheck CommandHeapCheck;
|
||||
|
||||
/* 803A2EE0-803A2EF4 000000 0012+02 2/2 1/1 0/0 .data COPYDATE_STRING__7mDoMain */
|
||||
// "??/??/?? ??:??:?"
|
||||
SECTION_DATA u8 mDoMain::COPYDATE_STRING[18 + 2 /* padding */] = {
|
||||
0x3F,
|
||||
0x3F,
|
||||
0x2F,
|
||||
0x3F,
|
||||
0x3F,
|
||||
0x2F,
|
||||
0x3F,
|
||||
0x3F,
|
||||
0x20,
|
||||
0x3F,
|
||||
0x3F,
|
||||
0x3A,
|
||||
0x3F,
|
||||
0x3F,
|
||||
0x3A,
|
||||
0x3F,
|
||||
0x3F,
|
||||
0x00,
|
||||
/* padding */
|
||||
0x00,
|
||||
0x00,
|
||||
};
|
||||
SECTION_DATA char mDoMain::COPYDATE_STRING[18] = "??/??/?? ??:??:??";
|
||||
|
||||
/* 803A2EF4-803A2F14 -00001 0020+00 1/2 0/0 0/0 .data HeapCheckTable */
|
||||
SECTION_DATA static HeapCheck* HeapCheckTable[8] = {
|
||||
@@ -291,41 +222,26 @@ static HeapCheck HostioHeapCheck;
|
||||
static HeapCheck CommandHeapCheck;
|
||||
|
||||
/* 8000578C-80005848 0000CC 00BC+00 1/1 0/0 0/0 .text CheckHeap__FUl */
|
||||
#ifdef NONMATCHING
|
||||
void CheckHeap(u32 controller_pad_no) {
|
||||
void CheckHeap(u32 i_padNo) {
|
||||
mDoMch_HeapCheckAll__Fv();
|
||||
OSCheckActiveThreads();
|
||||
|
||||
bool unk = false;
|
||||
bool comboCheck = false;
|
||||
|
||||
// if L + R + Z is pressed...
|
||||
if (((m_cpadInfo[controller_pad_no].mButtonFlags & ~0x10) == 0x60) &&
|
||||
m_cpadInfo[controller_pad_no].mPressedButtonFlags & 0x10) {
|
||||
unk = true;
|
||||
if ((mDoCPd_c::getHold(i_padNo) & ~CButton::Z) == (CButton::L + CButton::R) &&
|
||||
mDoCPd_c::getTrig(i_padNo) & CButton::Z) {
|
||||
comboCheck = true;
|
||||
}
|
||||
|
||||
int unk2 = comboCheck;
|
||||
for (int i = 0; i < 8; i++) {
|
||||
HeapCheckTable[i]->CheckHeap1();
|
||||
if (unk) {
|
||||
HeapCheck* currentHeap = HeapCheckTable[i];
|
||||
s32 used_count = currentHeap->getUsedCount();
|
||||
|
||||
currentHeap->getUsedCountRef() = used_count;
|
||||
used_count = currentHeap->getHeap()->getTotalUsedSize();
|
||||
currentHeap->getTotalUsedSizeRef() = used_count;
|
||||
if (unk2) {
|
||||
HeapCheckTable[i]->saveRelBase();
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void CheckHeap(u32 param_0) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_main/CheckHeap__FUl.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
static int countUsed(JKRExpHeap* heap) {
|
||||
OSDisableScheduler();
|
||||
@@ -393,54 +309,39 @@ SECTION_DEAD static char const* const stringBase_80373B4C = "%10d";
|
||||
/* 803A2F14-803A2F28 -00001 0014+00 0/1 0/0 0/0 .data desc1$3717 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static void* desc1[5] = {
|
||||
(void*)(((char*)&m_Do_m_Do_main__stringBase0) + 0x14F),
|
||||
(void*)(((char*)&m_Do_m_Do_main__stringBase0) + 0x150),
|
||||
(void*)(((char*)&m_Do_m_Do_main__stringBase0) + 0x15A),
|
||||
(void*)(((char*)&m_Do_m_Do_main__stringBase0) + 0x164),
|
||||
(void*)(((char*)&m_Do_m_Do_main__stringBase0) + 0x16E),
|
||||
SECTION_DATA static char* desc1[5] = {
|
||||
"", "TotalFree", "MaxUsed ", "Used ", "RelUsed ",
|
||||
};
|
||||
#pragma pop
|
||||
|
||||
/* 803A2F28-803A2F40 -00001 0014+04 0/1 0/0 0/0 .data desc2$3718 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static void* desc2[5 + 1 /* padding */] = {
|
||||
(void*)(((char*)&m_Do_m_Do_main__stringBase0) + 0x14F),
|
||||
(void*)(((char*)&m_Do_m_Do_main__stringBase0) + 0x178),
|
||||
(void*)(((char*)&m_Do_m_Do_main__stringBase0) + 0x182),
|
||||
(void*)(((char*)&m_Do_m_Do_main__stringBase0) + 0x18C),
|
||||
(void*)(((char*)&m_Do_m_Do_main__stringBase0) + 0x18C),
|
||||
/* padding */
|
||||
NULL,
|
||||
SECTION_DATA static char* desc2[5] = {
|
||||
"", "/ MaxFree", "/HeapSize", "Blk/Bytes", "Blk/Bytes",
|
||||
};
|
||||
#pragma pop
|
||||
|
||||
/* 80450580-80450584 000000 0004+00 3/3 6/6 0/0 .sdata None */
|
||||
SECTION_SDATA extern s8 data_80450580 = 0xFF;
|
||||
SECTION_SDATA s8 data_80450580 = 0xFF;
|
||||
|
||||
/* 80450584-80450588 000004 0004+00 0/0 1/1 0/0 .sdata memMargin__7mDoMain */
|
||||
SECTION_SDATA u32 mDoMain::memMargin = 0xFFFFFFFF;
|
||||
|
||||
/* 80450588-80450590 000008 0008+00 2/2 0/0 0/0 .sdata None */
|
||||
// 0x04 is mDoMain::mHeapBriefType
|
||||
SECTION_SDATA static u8 data_80450588[8] = {
|
||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
|
||||
/* 80450B00-80450B08 000000 0008+00 1/1 0/0 0/0 .sbss None */
|
||||
static u8 data_80450B00[8];
|
||||
static u8 data_80450B00;
|
||||
|
||||
/* 80450B08-80450B0C 000008 0004+00 1/1 1/1 0/0 .sbss sPowerOnTime__7mDoMain */
|
||||
// should be OSTime
|
||||
u8 mDoMain::sPowerOnTime[4];
|
||||
extern u8 data_80450B0C[4];
|
||||
u8 data_80450B0C[4];
|
||||
OSTime mDoMain::sPowerOnTime;
|
||||
|
||||
/* 80450B10-80450B14 000010 0004+00 0/0 2/2 0/0 .sbss sHungUpTime__7mDoMain */
|
||||
// should be OSTime
|
||||
u8 mDoMain::sHungUpTime[4];
|
||||
extern u8 data_80450B14[4];
|
||||
u8 data_80450B14[4];
|
||||
OSTime mDoMain::sHungUpTime;
|
||||
|
||||
/* 80450B18-80450B1C -00001 0004+00 3/3 0/0 0/0 .sbss None */
|
||||
/* 80450B18 0001+00 data_80450B18 None */
|
||||
@@ -456,33 +357,29 @@ static u8 data_80450B1B;
|
||||
void debugDisplay(void) {
|
||||
int tmp1;
|
||||
int tmp2;
|
||||
HeapCheck** hct = (HeapCheck**)lbl_803A2EE0;
|
||||
|
||||
if (lbl_80450B19 >= 1 && lbl_80450B19 <= 6) {
|
||||
hct[lbl_80450B19 - 1]->heapDisplay();
|
||||
if (struct_80450B18[1] >= 1 && struct_80450B18[1] <= 6) {
|
||||
HeapCheckTable[struct_80450B18[1]]->heapDisplay();
|
||||
}
|
||||
|
||||
if (lbl_80450588 == 5) {
|
||||
JKRAramHeap* heap = sAramObject__7JKRAram->getAramHeap();
|
||||
if (data_80450588[0] == 5) {
|
||||
JKRAramHeap* heap = JKRAram::getAramHeap();
|
||||
if (heap) {
|
||||
JUTReport(0x1db, 100, lbl_803739A0 + 0x196);
|
||||
JUTReport(0x1db, 0x72, lbl_803739A0 + 0x1A0, heap->getFreeSize());
|
||||
JUTReport(0x1db, 0x80, lbl_803739A0 + 0x150);
|
||||
JUTReport(0x1db, 0x8e, lbl_803739A0 + 0x1A0, heap->getTotalFreeSize());
|
||||
JUTReport(0x1db, 100, "ARAM Free");
|
||||
JUTReport(0x1db, 0x72, "%d", heap->getFreeSize());
|
||||
JUTReport(0x1db, 0x80, "TotalFree");
|
||||
JUTReport(0x1db, 0x8e, "%d", heap->getTotalFreeSize());
|
||||
}
|
||||
|
||||
} else {
|
||||
if (lbl_80450588) {
|
||||
JUTReport(0x1db, 100, lbl_803739A0 + 0x1A3, lbl_803A2F14[lbl_80450588]);
|
||||
JUTReport(0x1db, 0x72, lbl_803739A0 + 0x1A3, lbl_803A2F28[lbl_80450588]);
|
||||
if (data_80450588[0] != 0) {
|
||||
JUTReport(0x1db, 100, "%s", desc1[data_80450588[0]]);
|
||||
JUTReport(0x1db, 0x72, "%s", lbl_803A2F28[data_80450588[0]]);
|
||||
|
||||
int k = 0;
|
||||
for (int i = 0; i < 8; i++, k += 0x2c) {
|
||||
// heap check table stuff
|
||||
HeapCheck* heap_check;
|
||||
heap_check = HeapCheckTable[i];
|
||||
for (int i = 0; i < 8; i++, k += 0x2C) {
|
||||
HeapCheck* heap_check = HeapCheckTable[i];
|
||||
|
||||
switch (lbl_80450588) {
|
||||
switch (data_80450588[0]) {
|
||||
case 3: {
|
||||
tmp1 = heap_check->getUsedCount();
|
||||
tmp2 = heap_check->getHeap()->getTotalUsedSize();
|
||||
@@ -505,9 +402,9 @@ void debugDisplay(void) {
|
||||
break;
|
||||
}
|
||||
|
||||
JUTReport(0x1db, k + 0x96, lbl_80373B46, heap_check->getNames()[0]);
|
||||
JUTReport(0x1db, k + 0xA4, lbl_80373B4C, tmp1);
|
||||
JUTReport(0x1db, k + 0xB2, lbl_80373B4C, tmp2);
|
||||
JUTReport(0x1db, k + 0x96, " [%s]", heap_check->getName());
|
||||
JUTReport(0x1db, k + 0xA4, "%10d", tmp1);
|
||||
JUTReport(0x1db, k + 0xB2, "%10d", tmp2);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -542,19 +439,19 @@ SECTION_DEAD static char const* const stringBase_80373BFB =
|
||||
static f32 console_position_x;
|
||||
|
||||
/* 80450B20-80450B24 000020 0004+00 1/1 0/0 0/0 .sbss None */
|
||||
static u8 data_80450B20[4];
|
||||
static s8 data_80450B20;
|
||||
|
||||
/* 80450B24-80450B28 000024 0004+00 1/1 0/0 0/0 .sbss console_position_y$3779 */
|
||||
static f32 console_position_y;
|
||||
|
||||
/* 80450B28-80450B2C 000028 0004+00 1/1 0/0 0/0 .sbss None */
|
||||
static u8 data_80450B28[4];
|
||||
static s8 data_80450B28;
|
||||
|
||||
/* 80450B2C-80450B30 00002C 0004+00 1/1 0/0 0/0 .sbss console_scroll$3782 */
|
||||
static f32 console_scroll;
|
||||
|
||||
/* 80450B30-80450B34 000030 0004+00 1/1 0/0 0/0 .sbss None */
|
||||
static u8 data_80450B30[4];
|
||||
static s8 data_80450B30;
|
||||
|
||||
/* 80451A00-80451A04 000000 0004+00 1/1 0/0 0/0 .sdata2 @3884 */
|
||||
SECTION_SDATA2 static f32 lit_3884 = 20.0f;
|
||||
@@ -584,119 +481,112 @@ SECTION_SDATA2 static f32 lit_3888[1 + 1 /* padding */] = {
|
||||
SECTION_SDATA2 static f64 lit_3890 = 4503601774854144.0 /* cast s32 to float */;
|
||||
|
||||
/* 80005D4C-8000614C 00068C 0400+00 1/1 0/0 0/0 .text Debug_console__FUl */
|
||||
// middle section has lots of issues
|
||||
#ifdef NONMATCHING
|
||||
void Debug_console(u32 controller_pad_no) {
|
||||
bool Debug_console(u32 i_padNo) {
|
||||
float tmp2;
|
||||
float tmp3;
|
||||
int tmp6;
|
||||
|
||||
// systemConsole
|
||||
if (lbl_804511B8) {
|
||||
if (!lbl_80450B20) {
|
||||
lbl_80450B1C = lbl_80451A00;
|
||||
lbl_80450B20 = 1;
|
||||
JUTConsole* console = JFWSystem::getSystemConsole();
|
||||
if (console) {
|
||||
if (!data_80450B20) {
|
||||
console_position_x = 20.0f;
|
||||
data_80450B20 = 1;
|
||||
}
|
||||
if (!data_80450B28) {
|
||||
console_position_y = 30.0f;
|
||||
data_80450B28 = 1;
|
||||
}
|
||||
if (!data_80450B30) {
|
||||
console_scroll = 0.0f;
|
||||
data_80450B30 = 1;
|
||||
}
|
||||
|
||||
if (!lbl_80450B28) {
|
||||
lbl_80450B24 = lbl_80451A04;
|
||||
lbl_80450B28 = 1;
|
||||
}
|
||||
if (!lbl_80450B30) {
|
||||
lbl_80450B2C = lbl_80451A08;
|
||||
lbl_80450B30 = 1;
|
||||
}
|
||||
|
||||
u32 tmp5 = m_cpadInfo[controller_pad_no].mPressedButtonFlags;
|
||||
|
||||
if ((m_cpadInfo[controller_pad_no].mPressedButtonFlags & 0x10) &&
|
||||
!(m_cpadInfo[controller_pad_no].mButtonFlags & ~0x10)) {
|
||||
lbl_804511B8->field_0x68 = !lbl_804511B8->field_0x68;
|
||||
if (mDoCPd_c::getTrig(i_padNo) & CButton::Z &&
|
||||
!(mDoCPd_c::getHold(i_padNo) & ~CButton::Z)) {
|
||||
bool visible = console->isVisible() == false;
|
||||
console->setVisible(visible);
|
||||
JUTAssertion::setMessageCount(0);
|
||||
}
|
||||
|
||||
if (lbl_804511B8->field_0x68) {
|
||||
u32 tmp = m_cpadInfo[controller_pad_no].mButtonFlags;
|
||||
|
||||
if (console->isVisible()) {
|
||||
// if R and L are pressed
|
||||
if ((tmp & CButton::R && tmp & CButton::L) ||
|
||||
((lbl_80451A08 > m_cpadInfo[controller_pad_no].mTriggerLeft) &&
|
||||
(lbl_80451A08 > m_cpadInfo[controller_pad_no].mTriggerRight))) {
|
||||
tmp2 = m_cpadInfo[controller_pad_no].mMainStickPosX;
|
||||
tmp3 = m_cpadInfo[controller_pad_no].mMainStickPosY;
|
||||
|
||||
// if x buttons are pressed, clear the console
|
||||
if (tmp & (CButton::Y | CButton::START) && tmp5 & CButton::START) {
|
||||
lbl_804511B8->clear();
|
||||
if ((mDoCPd_c::getHold(i_padNo) & CButton::L &&
|
||||
mDoCPd_c::getHold(i_padNo) & CButton::R) ||
|
||||
((mDoCPd_c::getAnalogL(i_padNo) > 0.0f &&
|
||||
(0.0f > mDoCPd_c::getAnalogR(i_padNo))))) {
|
||||
if (mDoCPd_c::getTrig(i_padNo) & (CButton::Y | CButton::X) &&
|
||||
mDoCPd_c::getTrig(i_padNo) & CButton::START) {
|
||||
console->clear();
|
||||
}
|
||||
|
||||
u32 tmp = m_cpadInfo[controller_pad_no].mButtonFlags;
|
||||
|
||||
if (!(tmp & (CButton::Y | CButton::START))) {
|
||||
if (!(mDoCPd_c::getHold(i_padNo) & (CButton::Y | CButton::X))) {
|
||||
// subtract console scroll value from stick Y
|
||||
float tmp4 = lbl_80450B2C;
|
||||
lbl_80450B2C = tmp4 - tmp3;
|
||||
if (lbl_80450B2C <= lbl_80451A0C) {
|
||||
lbl_80451A10 <= lbl_80450B2C ? tmp = 0 : tmp = lbl_80451A0C;
|
||||
console_scroll -= mDoCPd_c::getStickY(i_padNo);
|
||||
int tmp;
|
||||
if (1.0f <= console_scroll) {
|
||||
-1.0f <= console_scroll ? tmp = 0 : tmp = -console_scroll;
|
||||
} else {
|
||||
tmp = (tmp4 - tmp3);
|
||||
tmp = mDoCPd_c::getStickX(i_padNo) - mDoCPd_c::getStickY(i_padNo);
|
||||
}
|
||||
|
||||
if (tmp) {
|
||||
lbl_80450B2C -= (tmp ^ 0x80000000) - 4503601774854144.00000000;
|
||||
lbl_804511B8->scroll(tmp);
|
||||
console_scroll -= tmp;
|
||||
console->scroll(tmp);
|
||||
}
|
||||
} else {
|
||||
if (tmp & CButton::X) {
|
||||
lbl_80450B2C += tmp2;
|
||||
if (mDoCPd_c::getHold(i_padNo) & CButton::X) {
|
||||
console_position_x += mDoCPd_c::getStickX(i_padNo);
|
||||
}
|
||||
|
||||
if (tmp & CButton::Y) {
|
||||
lbl_80450B2C -= tmp3;
|
||||
if (mDoCPd_c::getHold(i_padNo) & CButton::Y) {
|
||||
console_position_y -= mDoCPd_c::getStickY(i_padNo);
|
||||
}
|
||||
}
|
||||
|
||||
if (tmp5 & CButton::A) {
|
||||
lbl_804511B8->dumpToTerminal(0xFFFFFFFF);
|
||||
lbl_804511B8->field_0x58 = 3;
|
||||
if (mDoCPd_c::getTrig(i_padNo) & CButton::A) {
|
||||
console->dumpToTerminal(0xFFFFFFFF);
|
||||
console->setOutput(3);
|
||||
}
|
||||
|
||||
JUTReport(0x1E, 0x186, 1, lbl_80373B51);
|
||||
JUTReport(0x1E, 400, 1, lbl_80373B73);
|
||||
JUTReport(0x1E, 0x19A, 1, lbl_80373B8D);
|
||||
tmp6 = lbl_804511B8->getLineOffset();
|
||||
JUTReport(0x1E, 0x1A4, 1, lbl_80373BB6, tmp6, lbl_804511B8->field_0x40,
|
||||
lbl_804511B8->field_0x44, lbl_804511B8->field_0x58);
|
||||
JUTReport(0x1E, 0x186, 1, "Press X+Y+START to CLEAR console.");
|
||||
JUTReport(0x1E, 400, 1, "3DStick UP/Down to scroll");
|
||||
JUTReport(0x1E, 0x19A, 1, "Press A to output terminal from console.");
|
||||
JUTReport(0x1E, 0x1A4, 1, "SCROLL:%3d %3d %3d Output=%1x",
|
||||
console->getLineOffset(), console->getPositionX(),
|
||||
console->getPositionY(), console->getOutput());
|
||||
}
|
||||
} else {
|
||||
if (tmp5 & 4) {
|
||||
g_HIO.field_0x15 ^= 1;
|
||||
if (mDoCPd_c::getTrig(i_padNo) & CButton::DPAD_DOWN) {
|
||||
g_HIO.mDisplayMeter ^= 1;
|
||||
}
|
||||
|
||||
if (tmp5 & 1) {
|
||||
if (sAramObject__7JKRAram->getAramHeap()) {
|
||||
sAramObject__7JKRAram->getAramHeap()->dump();
|
||||
if (mDoCPd_c::getTrig(i_padNo) & CButton::DPAD_LEFT) {
|
||||
if (JKRAram::getAramHeap()) {
|
||||
JKRAram::getAramHeap()->dump();
|
||||
}
|
||||
|
||||
dump__24DynamicModuleControlBaseFv();
|
||||
dump__14dRes_control_cFv();
|
||||
g_dComIfG_gameInfo.mResControl.dump();
|
||||
}
|
||||
|
||||
if (tmp5 & 2) {
|
||||
sSystemHeap__7JKRHeap->dump_sort();
|
||||
if (mDoCPd_c::getTrig(i_padNo) & CButton::DPAD_RIGHT) {
|
||||
JKRHeap::getSystemHeap()->dump_sort();
|
||||
}
|
||||
|
||||
if (tmp5 & 8) {
|
||||
lbl_80450C2C->dump_sort();
|
||||
lbl_80450C28->dump_sort();
|
||||
lbl_80450C34->dump_sort();
|
||||
if (mDoCPd_c::getTrig(i_padNo) & CButton::DPAD_UP) {
|
||||
zeldaHeap->dump_sort();
|
||||
gameHeap->dump_sort();
|
||||
archiveHeap->dump_sort();
|
||||
}
|
||||
JUTReport(0x1E, 0x1B8, 1, lbl_80373BD5);
|
||||
JUTReport(0x1E, 0x1C2, 1, lbl_80373BFB);
|
||||
JUTReport(0x1E, 0x1B8, 1, "Press L+R trigger to control console.");
|
||||
JUTReport(0x1E, 0x1C2, 1, "Press [Z] trigger to close this window.");
|
||||
}
|
||||
lbl_804511B8->field_0x40 = lbl_80450B1C;
|
||||
lbl_804511B8->field_0x44 = lbl_80450B24;
|
||||
tmp6 = 1;
|
||||
console->setPosition(console_position_x, console_position_y);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
@@ -728,7 +618,7 @@ s32 LOAD_COPYDATE(void*) {
|
||||
|
||||
if (status) {
|
||||
DVDReadPrio((DVDFileInfo*)fileInfo, &buffer, 32, 0, 2);
|
||||
memcpy(lbl_803A2EE0, buffer, 17);
|
||||
memcpy(mDoMain::COPYDATE_STRING, buffer, 17);
|
||||
status = DVDClose((DVDFileInfo*)fileInfo);
|
||||
}
|
||||
return status;
|
||||
@@ -737,7 +627,7 @@ s32 LOAD_COPYDATE(void*) {
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void LOAD_COPYDATE(void* param_0) {
|
||||
asm void* LOAD_COPYDATE(void* param_0) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_main/LOAD_COPYDATE__FPv.s"
|
||||
}
|
||||
@@ -750,14 +640,14 @@ static void debug() {
|
||||
CheckHeap(2);
|
||||
}
|
||||
|
||||
if (((mDoCPd_c::m_gamePad[2]->buttons.mButtonFlags & ~0x10) == 0x20) &&
|
||||
(mDoCPd_c::m_gamePad[2]->buttons.mPressedButtonFlags & 0x10)) {
|
||||
if ((mDoCPd_c::getGamePad(2)->getButton() & ~CButton::Z) == CButton::R &&
|
||||
mDoCPd_c::getGamePad(2)->testTrigger(CButton::Z)) {
|
||||
struct_80450B18[0] ^= 0x1;
|
||||
}
|
||||
|
||||
if (struct_80450B18[0]) {
|
||||
if (((mDoCPd_c::m_gamePad[2]->buttons.mButtonFlags & ~0x10) == 0x40) &&
|
||||
(mDoCPd_c::m_gamePad[2]->buttons.mPressedButtonFlags & 0x10)) {
|
||||
if ((mDoCPd_c::getGamePad(2)->getButton() & ~CButton::Z) == CButton::L &&
|
||||
mDoCPd_c::getGamePad(2)->testTrigger(CButton::Z)) {
|
||||
data_80450588[0] < 0x5 ? data_80450588[0]++ : data_80450588[0] = 0x1;
|
||||
}
|
||||
|
||||
@@ -770,106 +660,83 @@ static void debug() {
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80450B34-80450B38 000034 0004+00 1/1 0/0 0/0 .sbss frame$3939 */
|
||||
static u8 frame[4];
|
||||
static u32 frame;
|
||||
|
||||
/* 8000628C-80006454 000BCC 01C8+00 1/1 0/0 0/0 .text main01__Fv */
|
||||
// almost
|
||||
#ifdef NONMATCHING
|
||||
void main01(void) {
|
||||
HeapCheck* heaps = lbl_803D32E0;
|
||||
|
||||
mDoMch_Create__Fv();
|
||||
mDoGph_Create();
|
||||
create__8mDoCPd_cFv();
|
||||
mDoCPd_c::create();
|
||||
|
||||
// mDoDVDThd_callback_c thread_callback;
|
||||
// JKRSolidHeap audio_heap;
|
||||
|
||||
// Root Heap
|
||||
heaps[0].setHeap((JKRExpHeap*)JKRHeap::getRootHeap());
|
||||
RootHeapCheck.setHeap((JKRExpHeap*)JKRHeap::getRootHeap());
|
||||
if (JKRHeap::getRootHeap()) {
|
||||
heaps[0].setHeapSize(JKRHeap::getRootHeap()->getSize());
|
||||
RootHeapCheck.setHeapSize(JKRHeap::getRootHeap()->getSize());
|
||||
}
|
||||
|
||||
// System Heap
|
||||
heaps[1].setHeap((JKRExpHeap*)JKRHeap::getSystemHeap());
|
||||
SystemHeapCheck.setHeap((JKRExpHeap*)JKRHeap::getSystemHeap());
|
||||
if (JKRHeap::getSystemHeap()) {
|
||||
heaps[1].setHeapSize(JKRHeap::getSystemHeap()->getSize());
|
||||
SystemHeapCheck.setHeapSize(JKRHeap::getSystemHeap()->getSize());
|
||||
}
|
||||
|
||||
// Zelda Heap
|
||||
heaps[2].setHeap(mDoExt_getZeldaHeap());
|
||||
if (heaps[2].getHeap()) {
|
||||
heaps[2].setHeapSize(heaps[2].getHeap()->getSize());
|
||||
ZeldaHeapCheck.setHeap(mDoExt_getZeldaHeap());
|
||||
if (ZeldaHeapCheck.getHeap()) {
|
||||
ZeldaHeapCheck.setHeapSize(ZeldaHeapCheck.getHeap()->getSize());
|
||||
}
|
||||
|
||||
// Game Heap
|
||||
heaps[3].setHeap(mDoExt_getGameHeap());
|
||||
if (heaps[3].getHeap()) {
|
||||
heaps[3].setHeapSize(heaps[3].getHeap()->getSize());
|
||||
GameHeapCheck.setHeap(mDoExt_getGameHeap());
|
||||
if (GameHeapCheck.getHeap()) {
|
||||
GameHeapCheck.setHeapSize(GameHeapCheck.getHeap()->getSize());
|
||||
}
|
||||
|
||||
// Archive Heap
|
||||
heaps[4].setHeap(mDoExt_getArchiveHeap());
|
||||
if (heaps[4].getHeap()) {
|
||||
heaps[4].setHeapSize(heaps[4].getHeap()->getSize());
|
||||
ArchiveHeapCheck.setHeap(mDoExt_getArchiveHeap());
|
||||
if (ArchiveHeapCheck.getHeap()) {
|
||||
ArchiveHeapCheck.setHeapSize(ArchiveHeapCheck.getHeap()->getSize());
|
||||
}
|
||||
|
||||
// J2D Heap
|
||||
heaps[5].setHeap(mDoExt_getJ2dHeap());
|
||||
if (heaps[5].getHeap()) {
|
||||
heaps[5].setHeapSize(heaps[5].getHeap()->getSize());
|
||||
J2dHeapCheck.setHeap(mDoExt_getJ2dHeap());
|
||||
if (J2dHeapCheck.getHeap()) {
|
||||
J2dHeapCheck.setHeapSize(J2dHeapCheck.getHeap()->getSize());
|
||||
}
|
||||
|
||||
// HostIO Heap
|
||||
heaps[6].setHeap(mDoExt_getHostIOHeap());
|
||||
if (heaps[6].getHeap()) {
|
||||
heaps[6].setHeapSize(heaps[6].getHeap()->getSize());
|
||||
HostioHeapCheck.setHeap(mDoExt_getHostIOHeap());
|
||||
if (HostioHeapCheck.getHeap()) {
|
||||
HostioHeapCheck.setHeapSize(HostioHeapCheck.getHeap()->getSize());
|
||||
}
|
||||
|
||||
// Command Heap
|
||||
heaps[7].setHeap(mDoExt_getCommandHeap());
|
||||
|
||||
JUTConsole* systemConsole = lbl_804511B8;
|
||||
|
||||
if (heaps[7].getHeap()) {
|
||||
heaps[7].setHeapSize(heaps[7].getHeap()->getSize());
|
||||
CommandHeapCheck.setHeap(mDoExt_getCommandHeap());
|
||||
if (CommandHeapCheck.getHeap()) {
|
||||
CommandHeapCheck.setHeapSize(CommandHeapCheck.getHeap()->getSize());
|
||||
}
|
||||
|
||||
u32 unk = 0;
|
||||
if (lbl_80450580) {
|
||||
unk = 3;
|
||||
JUTConsole* console = JFWSystem::getSystemConsole();
|
||||
if (data_80450580 != 0) {
|
||||
console->setOutput(3);
|
||||
}
|
||||
|
||||
systemConsole->field_0x58 = unk;
|
||||
systemConsole->field_0x40 = 0x20;
|
||||
systemConsole->field_0x44 = 0x2A;
|
||||
console->setPosition(32, 42);
|
||||
|
||||
// lol
|
||||
mDoDVDThd_callback_c::create(LOAD_COPYDATE, 0);
|
||||
fapGm_Create();
|
||||
fopAcM_initManager();
|
||||
lbl_80450B18 = 0;
|
||||
mDoDvdThd_callback_c::create(LOAD_COPYDATE, NULL);
|
||||
fapGm_Create__Fv();
|
||||
fopAcM_initManager__Fv();
|
||||
struct_80450B18[0] = 0;
|
||||
cDyl_InitAsync__Fv();
|
||||
|
||||
// g_mDoAud_audioHeap
|
||||
g_mDoAud_audioHeap = JKRSolidHeap::create(0x14D800, JKRHeap::getCurrentHeap(), false);
|
||||
|
||||
lbl_80450BBC = JKRSolidHeap::create(0x14d800, JKRHeap::getCurrentHeap(), false);
|
||||
|
||||
// main loop
|
||||
do {
|
||||
// global frame counter?
|
||||
lbl_80450B34++;
|
||||
frame++;
|
||||
|
||||
if (lbl_80450B00 && (lbl_80450B34 == ((lbl_80450B34 / lbl_80450B00) * lbl_80450B00))) {
|
||||
if (data_80450B00 && frame == data_80450B00 * (frame / data_80450B00)) {
|
||||
mDoMch_HeapCheckAll__Fv();
|
||||
}
|
||||
|
||||
if (lbl_80450C80) {
|
||||
update__15mDoMemCd_Ctrl_cFv();
|
||||
if (struct_80450C80[0]) {
|
||||
g_mDoMemCd_control.update();
|
||||
}
|
||||
mDoCPd_c_NS_read();
|
||||
fapGm_Execute();
|
||||
mDoAud_Execute();
|
||||
mDoCPd_c::read();
|
||||
fapGm_Execute__Fv();
|
||||
mDoAud_Execute__Fv();
|
||||
debug();
|
||||
} while (true);
|
||||
}
|
||||
@@ -889,30 +756,28 @@ static asm void main01() {
|
||||
static u8 mainThreadStack[32768];
|
||||
|
||||
/* 803DB420-803DB740 008140 0318+08 1/1 0/0 0/0 .bss mainThread */
|
||||
static u8 mainThread[792 + 8 /* padding */];
|
||||
static OSThread mainThread;
|
||||
|
||||
/* 80006454-800065D8 000D94 0184+00 0/0 1/1 0/0 .text main */
|
||||
#ifdef NONMATCHING
|
||||
void main() {
|
||||
u32 resetCode;
|
||||
OSThread* current_thread = OSGetCurrentThread();
|
||||
OSPriority* priority;
|
||||
u8* stack = &mainThreadStack[0];
|
||||
mDoMain::sPowerOnTime = OSGetTime();
|
||||
OSReportInit();
|
||||
version_check();
|
||||
mDoRstData* reset_data = (mDoRstData*)OSAllocFromArenaLo(0x18, 4);
|
||||
mDoRst::setResetData(reset_data);
|
||||
|
||||
if (!mDoRst::getResetData()) {
|
||||
if (!mDoRst::i_getResetData()) {
|
||||
do {
|
||||
} while (true);
|
||||
}
|
||||
|
||||
if (!(OSGetResetCode() & 0x80000000)) {
|
||||
if (!(OSGetResetCode() >> 0x1F)) {
|
||||
mDoRst::offReset();
|
||||
mDoRst::offResetPrepare();
|
||||
mDoRst::off3ButtonReset();
|
||||
mDoRst::off3ButtonResetPort(-1);
|
||||
mDoRst::set3ButtonResetPort(-1);
|
||||
mDoRst::setLogoScnFlag(0);
|
||||
mDoRst::setProgSeqFlag(0);
|
||||
mDoRst::setProgChgFlag(0);
|
||||
@@ -921,39 +786,28 @@ void main() {
|
||||
mDoRst::offReturnToMenu();
|
||||
}
|
||||
|
||||
dComIfG_ct();
|
||||
g_dComIfG_gameInfo.ct();
|
||||
|
||||
if (data_80450580 < 0) {
|
||||
DVDDiskID* disk_id = DVDGetCurrentDiskID();
|
||||
|
||||
if (disk_id->game_version <= 0x90) {
|
||||
if (disk_id->game_version <= 0x80) {
|
||||
data_80450580 = 0;
|
||||
} else {
|
||||
resetCode = OSGetConsoleType();
|
||||
data_80450580 = (-(resetCode & 0x10000000) >> 0x1f);
|
||||
}
|
||||
} else {
|
||||
if (disk_id->game_version > 0x90) {
|
||||
data_80450580 = 1;
|
||||
} else if (disk_id->game_version > 0x80) {
|
||||
u32 consoleType = OSGetConsoleType();
|
||||
data_80450580 = (consoleType >> 0x1c) & 1;
|
||||
} else {
|
||||
data_80450580 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
priority = OSGetThreadPriority(current_thread);
|
||||
OSCreateThread(&mainThread, main01, 0, &mainThread, 0x8000, priority, 0);
|
||||
s32 priority = OSGetThreadPriority(current_thread);
|
||||
OSCreateThread(&mainThread, main01, 0, stack + sizeof(mainThreadStack), sizeof(mainThreadStack),
|
||||
priority, 0);
|
||||
OSResumeThread(&mainThread);
|
||||
OSSetThreadPriority(current_thread, 0x1F);
|
||||
OSSuspendThread(current_thread);
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void main() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_main/main.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 800065D8-800065E0 000F18 0008+00 0/0 2/0 0/0 .text dump_sort__7JKRHeapFv */
|
||||
bool JKRHeap::dump_sort() {
|
||||
|
||||
+136
-185
@@ -11,45 +11,6 @@
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct csXyz {};
|
||||
|
||||
struct Quaternion {};
|
||||
|
||||
struct Vec {};
|
||||
|
||||
struct cXyz {
|
||||
/* 80266B34 */ void operator-(Vec const&) const;
|
||||
/* 80266CBC */ void outprod(Vec const&) const;
|
||||
/* 80266EF4 */ void normalize();
|
||||
/* 80266FDC */ void normalizeRS();
|
||||
};
|
||||
|
||||
struct mDoMtx_stack_c {
|
||||
/* 8000CCC8 */ void push();
|
||||
/* 8000CD14 */ void pop();
|
||||
/* 8000CD64 */ void transS(cXyz const&);
|
||||
/* 8000CDD4 */ void transM(cXyz const&);
|
||||
/* 8000CD9C */ void transM(f32, f32, f32);
|
||||
/* 8000CE00 */ void scaleS(cXyz const&);
|
||||
/* 8000CE70 */ void scaleM(cXyz const&);
|
||||
/* 8000CE38 */ void scaleM(f32, f32, f32);
|
||||
/* 8000CE9C */ void XYZrotS(csXyz const&);
|
||||
/* 8000CED4 */ void XYZrotM(csXyz const&);
|
||||
/* 8000CF0C */ void ZXYrotS(csXyz const&);
|
||||
/* 8000CF44 */ void ZXYrotM(csXyz const&);
|
||||
/* 8000CF7C */ void quatM(Quaternion const*);
|
||||
/* 8000D070 */ ~mDoMtx_stack_c();
|
||||
|
||||
static u8 now[48];
|
||||
static u8 buffer[768];
|
||||
static void* next;
|
||||
static void* end;
|
||||
};
|
||||
|
||||
struct mDoMtx_quatStack_c {
|
||||
/* 8000D034 */ ~mDoMtx_quatStack_c();
|
||||
};
|
||||
|
||||
struct JMath {
|
||||
static u8 sincosTable_[65536];
|
||||
};
|
||||
@@ -106,14 +67,6 @@ extern "C" void normalize__4cXyzFv();
|
||||
extern "C" void normalizeRS__4cXyzFv();
|
||||
extern "C" void cM_atan2s__Fff();
|
||||
extern "C" void __dl__FPv();
|
||||
extern "C" void PSMTXIdentity();
|
||||
extern "C" void PSMTXCopy();
|
||||
extern "C" void PSMTXConcat();
|
||||
extern "C" void PSMTXTrans();
|
||||
extern "C" void PSMTXScale();
|
||||
extern "C" void PSMTXQuat();
|
||||
extern "C" void C_MTXLookAt();
|
||||
extern "C" void PSVECDotProduct();
|
||||
extern "C" void __register_global_object();
|
||||
extern "C" void _savegpr_29();
|
||||
extern "C" void _restgpr_29();
|
||||
@@ -126,44 +79,82 @@ extern "C" extern f32 G_CM3D_F_ABS_MIN[1 + 1 /* padding */];
|
||||
//
|
||||
|
||||
/* 8000C0CC-8000C164 006A0C 0098+00 1/1 0/0 0/0 .text mDoMtx_XYZrotS__FPA4_fsss */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void mDoMtx_XYZrotS(f32 (*param_0)[4], s16 param_1, s16 param_2, s16 param_3) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_mtx/mDoMtx_XYZrotS__FPA4_fsss.s"
|
||||
void mDoMtx_XYZrotS(Mtx mtx, s16 x, s16 y, s16 z) {
|
||||
Mtx tmp;
|
||||
if (z != 0) {
|
||||
mDoMtx_ZrotS(mtx, z);
|
||||
} else {
|
||||
PSMTXIdentity(mtx);
|
||||
}
|
||||
|
||||
if (y != 0) {
|
||||
mDoMtx_YrotS(tmp, y);
|
||||
PSMTXConcat(mtx, tmp, mtx);
|
||||
}
|
||||
|
||||
if (x != 0) {
|
||||
mDoMtx_XrotS(tmp, x);
|
||||
PSMTXConcat(mtx, tmp, mtx);
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8000C164-8000C208 006AA4 00A4+00 1/1 8/8 13/13 .text mDoMtx_XYZrotM__FPA4_fsss */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMtx_XYZrotM(f32 (*param_0)[4], s16 param_1, s16 param_2, s16 param_3) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_mtx/mDoMtx_XYZrotM__FPA4_fsss.s"
|
||||
void mDoMtx_XYZrotM(Mtx mtx, s16 x, s16 y, s16 z) {
|
||||
Mtx tmp;
|
||||
if (z != 0) {
|
||||
mDoMtx_ZrotS(tmp, z);
|
||||
PSMTXConcat(mtx, tmp, mtx);
|
||||
}
|
||||
|
||||
if (y != 0) {
|
||||
mDoMtx_YrotS(tmp, y);
|
||||
PSMTXConcat(mtx, tmp, mtx);
|
||||
}
|
||||
|
||||
if (x != 0) {
|
||||
mDoMtx_XrotS(tmp, x);
|
||||
PSMTXConcat(mtx, tmp, mtx);
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8000C208-8000C2A0 006B48 0098+00 1/1 10/10 37/37 .text mDoMtx_ZXYrotS__FPA4_fsss */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMtx_ZXYrotS(f32 (*param_0)[4], s16 param_1, s16 param_2, s16 param_3) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_mtx/mDoMtx_ZXYrotS__FPA4_fsss.s"
|
||||
void mDoMtx_ZXYrotS(Mtx mtx, s16 x, s16 y, s16 z) {
|
||||
Mtx tmp;
|
||||
if (y != 0) {
|
||||
mDoMtx_YrotS(mtx, y);
|
||||
} else {
|
||||
PSMTXIdentity(mtx);
|
||||
}
|
||||
|
||||
if (x != 0) {
|
||||
mDoMtx_XrotS(tmp, x);
|
||||
PSMTXConcat(mtx, tmp, mtx);
|
||||
}
|
||||
|
||||
if (z != 0) {
|
||||
mDoMtx_ZrotS(tmp, z);
|
||||
PSMTXConcat(mtx, tmp, mtx);
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8000C2A0-8000C344 006BE0 00A4+00 1/1 19/19 149/149 .text mDoMtx_ZXYrotM__FPA4_fsss */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMtx_ZXYrotM(f32 (*param_0)[4], s16 param_1, s16 param_2, s16 param_3) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_mtx/mDoMtx_ZXYrotM__FPA4_fsss.s"
|
||||
void mDoMtx_ZXYrotM(Mtx mtx, s16 x, s16 y, s16 z) {
|
||||
Mtx tmp;
|
||||
if (y != 0) {
|
||||
mDoMtx_YrotS(tmp, y);
|
||||
PSMTXConcat(mtx, tmp, mtx);
|
||||
}
|
||||
|
||||
if (x != 0) {
|
||||
mDoMtx_XrotS(tmp, x);
|
||||
PSMTXConcat(mtx, tmp, mtx);
|
||||
}
|
||||
|
||||
if (z != 0) {
|
||||
mDoMtx_ZrotS(tmp, z);
|
||||
PSMTXConcat(mtx, tmp, mtx);
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80451B08-80451B0C 000108 0004+00 6/6 0/0 0/0 .sdata2 @3676 */
|
||||
@@ -188,14 +179,11 @@ asm void mDoMtx_XrotS(f32 (*param_0)[4], s16 param_1) {
|
||||
#pragma pop
|
||||
|
||||
/* 8000C39C-8000C3DC 006CDC 0040+00 0/0 11/11 425/425 .text mDoMtx_XrotM__FPA4_fs */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMtx_XrotM(f32 (*param_0)[4], s16 param_1) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_mtx/mDoMtx_XrotM__FPA4_fs.s"
|
||||
void mDoMtx_XrotM(Mtx mtx, s16 x) {
|
||||
Mtx tmp;
|
||||
mDoMtx_XrotS(tmp, x);
|
||||
PSMTXConcat(mtx, tmp, mtx);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8000C3DC-8000C434 006D1C 0058+00 5/5 24/24 809/809 .text mDoMtx_YrotS__FPA4_fs */
|
||||
#pragma push
|
||||
@@ -208,14 +196,11 @@ asm void mDoMtx_YrotS(f32 (*param_0)[4], s16 param_1) {
|
||||
#pragma pop
|
||||
|
||||
/* 8000C434-8000C474 006D74 0040+00 0/0 44/44 775/775 .text mDoMtx_YrotM__FPA4_fs */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMtx_YrotM(f32 (*param_0)[4], s16 param_1) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_mtx/mDoMtx_YrotM__FPA4_fs.s"
|
||||
void mDoMtx_YrotM(Mtx mtx, s16 y) {
|
||||
Mtx tmp;
|
||||
mDoMtx_YrotS(tmp, y);
|
||||
PSMTXConcat(mtx, tmp, mtx);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8000C474-8000C4CC 006DB4 0058+00 7/7 1/1 6/6 .text mDoMtx_ZrotS__FPA4_fs */
|
||||
#pragma push
|
||||
@@ -228,14 +213,11 @@ asm void mDoMtx_ZrotS(f32 (*param_0)[4], s16 param_1) {
|
||||
#pragma pop
|
||||
|
||||
/* 8000C4CC-8000C50C 006E0C 0040+00 0/0 9/9 302/302 .text mDoMtx_ZrotM__FPA4_fs */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMtx_ZrotM(f32 (*param_0)[4], s16 param_1) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_mtx/mDoMtx_ZrotM__FPA4_fs.s"
|
||||
void mDoMtx_ZrotM(Mtx mtx, s16 z) {
|
||||
Mtx tmp;
|
||||
mDoMtx_ZrotS(tmp, z);
|
||||
PSMTXConcat(mtx, tmp, mtx);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8000C50C-8000C710 006E4C 0204+00 0/0 3/3 0/0 .text mDoMtx_lookAt__FPA4_fPC3VecPC3Vecs
|
||||
*/
|
||||
@@ -315,155 +297,118 @@ asm void mDoMtx_MtxToRot(f32 const (*param_0)[4], csXyz* param_1) {
|
||||
/* ############################################################################################## */
|
||||
/* 803DD470-803DD4A0 00A190 0030+00 12/12 142/142 1820/1820 .bss now__14mDoMtx_stack_c
|
||||
*/
|
||||
u8 mDoMtx_stack_c::now[48];
|
||||
Mtx mDoMtx_stack_c::now;
|
||||
|
||||
/* 803DD4A0-803DD7A0 00A1C0 0300+00 2/2 0/0 0/0 .bss buffer__14mDoMtx_stack_c */
|
||||
u8 mDoMtx_stack_c::buffer[768];
|
||||
Mtx mDoMtx_stack_c::buffer[16];
|
||||
|
||||
/* 803DD7A0-803DD7AC 00A4C0 000C+00 1/1 0/0 0/0 .bss @4048 */
|
||||
static u8 lit_4048[12];
|
||||
|
||||
/* 804505A8-804505AC -00001 0004+00 3/3 0/0 0/0 .sdata next__14mDoMtx_stack_c */
|
||||
SECTION_SDATA void* mDoMtx_stack_c::next = (void*)&mDoMtx_stack_c::buffer;
|
||||
SECTION_SDATA Mtx* mDoMtx_stack_c::next = (Mtx*)&mDoMtx_stack_c::buffer;
|
||||
|
||||
/* 804505AC-804505B0 -00001 0004+00 2/2 0/0 0/0 .sdata end__14mDoMtx_stack_c */
|
||||
SECTION_SDATA void* mDoMtx_stack_c::end = (void*)&lit_4048;
|
||||
SECTION_SDATA Mtx* mDoMtx_stack_c::end = (Mtx*)&lit_4048;
|
||||
|
||||
/* 8000CCC8-8000CD14 007608 004C+00 0/0 0/0 24/24 .text push__14mDoMtx_stack_cFv */
|
||||
// regalloc
|
||||
#ifdef NONMATCHING
|
||||
bool mDoMtx_stack_c::push() {
|
||||
if (next >= end) {
|
||||
return false;
|
||||
}
|
||||
next++;
|
||||
PSMTXCopy(now, *next);
|
||||
return true;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMtx_stack_c::push() {
|
||||
asm bool mDoMtx_stack_c::push() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_mtx/push__14mDoMtx_stack_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 8000CD14-8000CD64 007654 0050+00 0/0 0/0 24/24 .text pop__14mDoMtx_stack_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMtx_stack_c::pop() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_mtx/pop__14mDoMtx_stack_cFv.s"
|
||||
bool mDoMtx_stack_c::pop() {
|
||||
if (next <= buffer) {
|
||||
return false;
|
||||
}
|
||||
next--;
|
||||
PSMTXCopy(*next, now);
|
||||
return true;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8000CD64-8000CD9C 0076A4 0038+00 0/0 50/50 484/484 .text transS__14mDoMtx_stack_cFRC4cXyz */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMtx_stack_c::transS(cXyz const& param_0) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_mtx/transS__14mDoMtx_stack_cFRC4cXyz.s"
|
||||
void mDoMtx_stack_c::transS(cXyz const& param_0) {
|
||||
transS(param_0.x, param_0.y, param_0.z);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8000CD9C-8000CDD4 0076DC 0038+00 1/1 29/29 285/285 .text transM__14mDoMtx_stack_cFfff
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMtx_stack_c::transM(f32 param_0, f32 param_1, f32 param_2) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_mtx/transM__14mDoMtx_stack_cFfff.s"
|
||||
void mDoMtx_stack_c::transM(f32 x, f32 y, f32 z) {
|
||||
Mtx tmp;
|
||||
PSMTXTrans(tmp, x, y, z);
|
||||
PSMTXConcat(now, tmp, now);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8000CDD4-8000CE00 007714 002C+00 0/0 3/3 40/40 .text transM__14mDoMtx_stack_cFRC4cXyz
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMtx_stack_c::transM(cXyz const& param_0) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_mtx/transM__14mDoMtx_stack_cFRC4cXyz.s"
|
||||
void mDoMtx_stack_c::transM(cXyz const& param_0) {
|
||||
transM(param_0.x, param_0.y, param_0.z);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8000CE00-8000CE38 007740 0038+00 0/0 0/0 2/2 .text scaleS__14mDoMtx_stack_cFRC4cXyz */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMtx_stack_c::scaleS(cXyz const& param_0) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_mtx/scaleS__14mDoMtx_stack_cFRC4cXyz.s"
|
||||
void mDoMtx_stack_c::scaleS(cXyz const& param_0) {
|
||||
scaleS(param_0.x, param_0.y, param_0.z);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8000CE38-8000CE70 007778 0038+00 1/1 13/13 219/219 .text scaleM__14mDoMtx_stack_cFfff
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMtx_stack_c::scaleM(f32 param_0, f32 param_1, f32 param_2) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_mtx/scaleM__14mDoMtx_stack_cFfff.s"
|
||||
void mDoMtx_stack_c::scaleM(f32 x, f32 y, f32 z) {
|
||||
Mtx tmp;
|
||||
PSMTXScale(tmp, x, y, z);
|
||||
PSMTXConcat(now, tmp, now);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8000CE70-8000CE9C 0077B0 002C+00 0/0 7/7 79/79 .text scaleM__14mDoMtx_stack_cFRC4cXyz
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMtx_stack_c::scaleM(cXyz const& param_0) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_mtx/scaleM__14mDoMtx_stack_cFRC4cXyz.s"
|
||||
void mDoMtx_stack_c::scaleM(cXyz const& param_0) {
|
||||
scaleM(param_0.x, param_0.y, param_0.z);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8000CE9C-8000CED4 0077DC 0038+00 0/0 3/3 0/0 .text XYZrotS__14mDoMtx_stack_cFRC5csXyz
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMtx_stack_c::XYZrotS(csXyz const& param_0) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_mtx/XYZrotS__14mDoMtx_stack_cFRC5csXyz.s"
|
||||
void mDoMtx_stack_c::XYZrotS(csXyz const& param_0) {
|
||||
XYZrotS(param_0.x, param_0.y, param_0.z);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8000CED4-8000CF0C 007814 0038+00 0/0 1/1 4/4 .text XYZrotM__14mDoMtx_stack_cFRC5csXyz
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMtx_stack_c::XYZrotM(csXyz const& param_0) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_mtx/XYZrotM__14mDoMtx_stack_cFRC5csXyz.s"
|
||||
void mDoMtx_stack_c::XYZrotM(csXyz const& param_0) {
|
||||
XYZrotM(param_0.x, param_0.y, param_0.z);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8000CF0C-8000CF44 00784C 0038+00 0/0 5/5 43/43 .text ZXYrotS__14mDoMtx_stack_cFRC5csXyz */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMtx_stack_c::ZXYrotS(csXyz const& param_0) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_mtx/ZXYrotS__14mDoMtx_stack_cFRC5csXyz.s"
|
||||
void mDoMtx_stack_c::ZXYrotS(csXyz const& param_0) {
|
||||
ZXYrotS(param_0.x, param_0.y, param_0.z);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8000CF44-8000CF7C 007884 0038+00 0/0 24/24 250/250 .text ZXYrotM__14mDoMtx_stack_cFRC5csXyz */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMtx_stack_c::ZXYrotM(csXyz const& param_0) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_mtx/ZXYrotM__14mDoMtx_stack_cFRC5csXyz.s"
|
||||
void mDoMtx_stack_c::ZXYrotM(csXyz const& param_0) {
|
||||
ZXYrotM(param_0.x, param_0.y, param_0.z);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8000CF7C-8000CFB8 0078BC 003C+00 0/0 1/1 6/6 .text quatM__14mDoMtx_stack_cFPC10Quaternion */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMtx_stack_c::quatM(Quaternion const* param_0) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_mtx/quatM__14mDoMtx_stack_cFPC10Quaternion.s"
|
||||
void mDoMtx_stack_c::quatM(Quaternion const* param_0) {
|
||||
Mtx tmp;
|
||||
PSMTXQuat(tmp, param_0);
|
||||
PSMTXConcat(now, tmp, now);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803DD7AC-803DD7B8 00A4CC 000C+00 0/1 0/0 0/0 .bss @4078 */
|
||||
@@ -593,3 +538,9 @@ SECTION_DATA extern u8 g_mDoMtx_identity[48 + 24 /* padding */] = {
|
||||
0x00,
|
||||
0x00,
|
||||
};
|
||||
|
||||
/* SECTION_DATA extern Mtx g_mDoMtx_identity = {
|
||||
{1.0f, 0.0f, 0.0f, 0.0f},
|
||||
{0.0f, 1.0f, 0.0f, 0.0f},
|
||||
{0.0f, 0.0f, 1.0f, 0.0f},
|
||||
}; */
|
||||
|
||||
@@ -18,7 +18,7 @@ struct __va_list_struct {};
|
||||
//
|
||||
|
||||
extern "C" static void OSSwitchFiberEx__FUlUlUlUlUlUl();
|
||||
extern "C" static void my_PutString__FPCc();
|
||||
extern "C" void my_PutString__FPCc();
|
||||
extern "C" static void OSVAttention__FPCcP16__va_list_struct();
|
||||
extern "C" void OSAttention();
|
||||
extern "C" void OSReportDisable();
|
||||
@@ -50,10 +50,8 @@ extern "C" void OSDisableInterrupts();
|
||||
extern "C" void OSRestoreInterrupts();
|
||||
extern "C" void _savegpr_29();
|
||||
extern "C" void _restgpr_29();
|
||||
extern "C" void fputs();
|
||||
extern "C" void fflush();
|
||||
extern "C" void vprintf();
|
||||
extern "C" extern void* __files[80];
|
||||
extern "C" extern u8 struct_80450B98[4];
|
||||
extern "C" extern u8 data_80450B9C[4];
|
||||
|
||||
@@ -73,14 +71,9 @@ static asm void OSSwitchFiberEx(u32 param_0, u32 param_1, u32 param_2, u32 param
|
||||
#pragma pop
|
||||
|
||||
/* 800067C8-800067F4 001108 002C+00 3/3 0/0 0/0 .text my_PutString__FPCc */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void my_PutString(char const* param_0) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_printf/my_PutString__FPCc.s"
|
||||
void my_PutString(const char* string) {
|
||||
fputs(string, &__files.stdout);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 800067F4-80006814 001134 0020+00 3/3 0/0 0/0 .text OSVAttention__FPCcP16__va_list_struct */
|
||||
#pragma push
|
||||
@@ -175,7 +168,7 @@ asm void OSReportInit() {
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803DB740-803DBF40 008460 0800+00 1/1 0/0 0/0 .bss mDoPrintf_FiberStack */
|
||||
static u8 mDoPrintf_FiberStack[2048];
|
||||
static u8 mDoPrintf_FiberStack[2048] ALIGN_DECL(32);
|
||||
|
||||
/* 800068DC-80006964 00121C 0088+00 1/1 0/0 0/0 .text
|
||||
* mDoPrintf_vprintf_Interrupt__FPCcP16__va_list_struct */
|
||||
|
||||
Reference in New Issue
Block a user