diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/d/a/d_a_alink.cpp | 315 | ||||
| -rw-r--r-- | src/d/a/d_a_npc.cpp | 89 | ||||
| -rw-r--r-- | src/d/bg/d_bg_s.cpp | 2 | ||||
| -rw-r--r-- | src/d/bg/d_bg_w.cpp | 2 | ||||
| -rw-r--r-- | src/d/bg/d_bg_w_kcol.cpp | 2 | ||||
| -rw-r--r-- | src/d/d_drawlist.cpp | 1 | ||||
| -rw-r--r-- | src/d/d_lib.cpp | 8 | ||||
| -rw-r--r-- | src/d/d_resorce.cpp | 1 | ||||
| -rw-r--r-- | src/d/kankyo/d_kankyo.cpp | 2 | ||||
| -rw-r--r-- | src/d/menu/d_menu_collect.cpp | 1 | ||||
| -rw-r--r-- | src/d/menu/d_menu_window.cpp | 20 | ||||
| -rw-r--r-- | src/d/particle/d_particle.cpp | 1 | ||||
| -rw-r--r-- | src/f_op/f_op_actor.cpp | 1 | ||||
| -rw-r--r-- | src/m_Do/m_Do_DVDError.cpp | 127 | ||||
| -rw-r--r-- | src/m_Do/m_Do_Reset.cpp | 158 | ||||
| -rw-r--r-- | src/m_Do/m_Do_audio.cpp | 92 | ||||
| -rw-r--r-- | src/m_Do/m_Do_graphic.cpp | 2 | ||||
| -rw-r--r-- | src/m_Do/m_Do_main.cpp | 418 |
18 files changed, 483 insertions, 759 deletions
diff --git a/src/d/a/d_a_alink.cpp b/src/d/a/d_a_alink.cpp index cf4975757c..0846767685 100644 --- a/src/d/a/d_a_alink.cpp +++ b/src/d/a/d_a_alink.cpp @@ -13,6 +13,7 @@ #include "d/a/d_a_horse_static.h" #include "d/com/d_com_inf_game.h" #include "d/d_bomb.h" +#include "d/d_procname.h" #include "dol2asm.h" #include "dolphin/types.h" #include "f_op/f_op_actor_mng.h" @@ -3307,7 +3308,6 @@ extern "C" u8 mGndCheck__11fopAcM_gc_c[84]; extern "C" u8 mWaterCheck__11fopAcM_wt_c[84 + 4 /* padding */]; extern "C" u8 mDemoArcName__20dStage_roomControl_c[10 + 2 /* padding */]; extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; -extern "C" extern u8 g_env_light[4880]; extern "C" f32 Zero__4cXyz[3]; extern "C" u8 BaseX__4cXyz[12]; extern "C" u8 BaseY__4cXyz[12]; @@ -3347,6 +3347,10 @@ inline BOOL i_dComIfGs_isEventBit(u16 id) { return g_dComIfG_gameInfo.info.getEvent().isEventBit(id); } +inline bool i_dComIfGp_checkPlayerStatus1(int param_0, u32 flag) { + return g_dComIfG_gameInfo.play.checkPlayerStatus(param_0, 1, flag); +} + /* 8009D87C-8009D884 0981BC 0008+00 0/0 1/1 0/0 .text getE3Zhint__9daAlink_cFv */ bool daAlink_c::getE3Zhint() { return false; @@ -15665,8 +15669,8 @@ BOOL daAlink_c::itemButtonCheck(u8 pButton) { return mItemButton & pButton; } -void daAlink_c::itemButton() { - itemButtonCheck(1 << mSelectItemId); +BOOL daAlink_c::itemButton() { + return itemButtonCheck(1 << mSelectItemId); } void daAlink_c::itemTrigger() { @@ -17152,7 +17156,7 @@ asm J3DModelData* daAlink_c::loadAramBmd(u16 param_0, u32 param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::loadAram(u16 param_0, u32 param_1) { +asm void* daAlink_c::loadAram(u16 param_0, u32 param_1) { nofralloc #include "asm/d/a/d_a_alink/loadAram__9daAlink_cFUsUl.s" } @@ -28031,164 +28035,141 @@ asm void daAlink_c::hookshotAtHitCallBack(dCcD_GObjInf* param_0, fopAc_ac_c* par /* 8010859C-801085BC 102EDC 0020+00 1/1 0/0 0/0 .text * daAlink_hookshotAtHitCallBack__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daAlink_hookshotAtHitCallBack(fopAc_ac_c* param_0, dCcD_GObjInf* param_1, +static void daAlink_hookshotAtHitCallBack(fopAc_ac_c* player, dCcD_GObjInf* param_1, fopAc_ac_c* param_2, dCcD_GObjInf* param_3) { - nofralloc -#include "asm/d/a/d_a_alink/daAlink_hookshotAtHitCallBack__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf.s" + ((daAlink_c*)player)->hookshotAtHitCallBack(param_1, param_2, param_3); } -#pragma pop /* 801085BC-80108600 102EFC 0044+00 1/0 0/0 0/0 .text getHookshotTopPos__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::getHookshotTopPos() { - nofralloc -#include "asm/d/a/d_a_alink/getHookshotTopPos__9daAlink_cFv.s" +cXyz* daAlink_c::getHookshotTopPos() { + if (checkHookshotItem(mEquipItem)) { + return &mHookshotTopPos; + } + + return NULL; } -#pragma pop /* 80108600-80108668 102F40 0068+00 1/0 0/0 0/0 .text checkHookshotReturnMode__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkHookshotReturnMode() const { - nofralloc -#include "asm/d/a/d_a_alink/checkHookshotReturnMode__9daAlink_cCFv.s" +bool daAlink_c::checkHookshotReturnMode() const { + return checkHookshotItem(mEquipItem) && (mHookshotMode == 4 || mHookshotMode == 5 || mHookshotMode == 6); } -#pragma pop /* 80108668-801086DC 102FA8 0074+00 1/0 0/0 0/0 .text checkHookshotShootReturnMode__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkHookshotShootReturnMode() const { - nofralloc -#include "asm/d/a/d_a_alink/checkHookshotShootReturnMode__9daAlink_cCFv.s" +bool daAlink_c::checkHookshotShootReturnMode() const { + return (checkHookshotItem(mEquipItem) && mHookshotMode == 3) || checkHookshotReturnMode(); } -#pragma pop /* 801086DC-8010871C 10301C 0040+00 6/6 0/0 0/0 .text resetHookshotMode__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::resetHookshotMode() { - nofralloc -#include "asm/d/a/d_a_alink/resetHookshotMode__9daAlink_cFv.s" +void daAlink_c::resetHookshotMode() { + mHookshotMode = 0; + initLockAt(); + mSearchBallScale = __float_max[0]; } -#pragma pop /* 8010871C-80108784 10305C 0068+00 0/0 0/0 1/1 .text * setEnemyBombHookshot__9daAlink_cFP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setEnemyBombHookshot(fopAc_ac_c* param_0) { - nofralloc -#include "asm/d/a/d_a_alink/setEnemyBombHookshot__9daAlink_cFP10fopAc_ac_c.s" +bool daAlink_c::setEnemyBombHookshot(fopAc_ac_c* actor) { + if (field_0x284c.getActor() != NULL) { + cancelHookshotCarry(); + field_0x284c.setData(actor); + fopAcM_setHookCarryNow(actor); + return true; + } + return false; } -#pragma pop /* 80108784-801087B0 1030C4 002C+00 3/3 0/0 0/0 .text checkLv7BossRoom__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkLv7BossRoom() { - nofralloc -#include "asm/d/a/d_a_alink/checkLv7BossRoom__9daAlink_cFv.s" +bool daAlink_c::checkLv7BossRoom() { + return checkStageName("D_MN07A"); } -#pragma pop /* 801087B0-80108828 1030F0 0078+00 6/6 0/0 0/0 .text * checkHookshotStickBG__9daAlink_cFR13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkHookshotStickBG(cBgS_PolyInfo& param_0) { - nofralloc -#include "asm/d/a/d_a_alink/checkHookshotStickBG__9daAlink_cFR13cBgS_PolyInfo.s" +bool daAlink_c::checkHookshotStickBG(cBgS_PolyInfo& poly) { + if (dComIfG_Bgsp().ChkPolyHSStick(poly)) { + dBgW_Base* bgw = dComIfG_Bgsp().GetBgWBasePointer(poly); + if (bgw != NULL && bgw->ChkPushPullOk()) { + return true; + } + } + + return false; } -#pragma pop /* 80108828-80108864 103168 003C+00 4/4 0/0 0/0 .text cancelHookshotCarry__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::cancelHookshotCarry() { - nofralloc -#include "asm/d/a/d_a_alink/cancelHookshotCarry__9daAlink_cFv.s" +void daAlink_c::cancelHookshotCarry() { + if (field_0x284c.getActor() != NULL) { + fopAcM_cancelHookCarryNow(field_0x284c.getActor()); + field_0x284c.clearData(); + } } -#pragma pop /* 80108864-801088A0 1031A4 003C+00 2/2 0/0 0/0 .text changeHookshotDrawModel__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::changeHookshotDrawModel() { - nofralloc -#include "asm/d/a/d_a_alink/changeHookshotDrawModel__9daAlink_cFv.s" +void daAlink_c::changeHookshotDrawModel() { + if (mEquipItem == HOOKSHOT && field_0x3020 == 1) { + J3DModel* old_item = mHeldItemModel; + mHeldItemModel = field_0x0710; + field_0x0710 = old_item; + + J3DModel* old_item2 = field_0x070c; + field_0x070c = field_0x0714; + field_0x0714 = old_item2; + } } -#pragma pop /* 801088A0-801088C8 1031E0 0028+00 6/6 0/0 0/0 .text checkHookshotRoofLv7Boss__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkHookshotRoofLv7Boss() { - nofralloc -#include "asm/d/a/d_a_alink/checkHookshotRoofLv7Boss__9daAlink_cFv.s" +BOOL daAlink_c::checkHookshotRoofLv7Boss() { + return mCargoCarryActor.getActor() != NULL && fopAcM_GetName(mCargoCarryActor.getActor()) == PROC_B_DR; } -#pragma pop /* 801088C8-80108980 103208 00B8+00 2/2 0/0 0/0 .text checkChaseHookshot__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkChaseHookshot() { - nofralloc -#include "asm/d/a/d_a_alink/checkChaseHookshot__9daAlink_cFv.s" +BOOL daAlink_c::checkChaseHookshot() { + if (field_0x2804 == NULL) { + if (mTargetedActor != NULL) { + field_0x2804 = mTargetedActor; + } else { + field_0x2804 = this; + } + } else if (field_0x2804 != mTargetedActor) { + field_0x2804 = this; + } + + if (mTargetedActor != NULL) { + s16 actorName = fopAcM_GetName(mTargetedActor); + return field_0x2804 == mTargetedActor && (checkBossOctaIealRoom() || actorName == PROC_Obj_FallObj || actorName == PROC_B_DR || actorName == PROC_E_PH); + } + + return false; } -#pragma pop /* 80108980-801089E8 1032C0 0068+00 2/2 0/0 0/0 .text checkOctaIealSpecialCollect__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkOctaIealSpecialCollect() { - nofralloc -#include "asm/d/a/d_a_alink/checkOctaIealSpecialCollect__9daAlink_cFv.s" +BOOL daAlink_c::checkOctaIealSpecialCollect() { + return mActionID == 0xC6 && checkHookshotItem(mEquipItem) && checkBossOctaIealRoom(); } -#pragma pop /* 801089E8-80108A18 103328 0030+00 5/5 0/0 0/0 .text checkBossOctaIealRoom__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkBossOctaIealRoom() { - nofralloc -#include "asm/d/a/d_a_alink/checkBossOctaIealRoom__9daAlink_cFv.s" +BOOL daAlink_c::checkBossOctaIealRoom() { + return checkStageName("D_MN01A"); } -#pragma pop /* 80108A18-80108A3C 103358 0024+00 19/19 0/0 0/0 .text checkHookshotWait__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkHookshotWait() const { - nofralloc -#include "asm/d/a/d_a_alink/checkHookshotWait__9daAlink_cCFv.s" +BOOL daAlink_c::checkHookshotWait() const { + return mHookshotMode == 0 || mHookshotMode == 1; } -#pragma pop /* 80108A3C-80108A90 10337C 0054+00 1/1 0/0 0/0 .text setHookshotCatchNow__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +void daAlink_c::setHookshotCatchNow() { + field_0x3026 = 5; + dComIfGp_getVibration().StartShock(4, 1, cXyz(0.0f, 1.0f, 0.0f)); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -28197,27 +28178,78 @@ asm void daAlink_c::setHookshotCatchNow() { #include "asm/d/a/d_a_alink/setHookshotCatchNow__9daAlink_cFv.s" } #pragma pop +#endif /* 80108A90-80108B34 1033D0 00A4+00 1/0 0/0 0/0 .text setHookshotCarryOffset__9daAlink_cFUiPC4cXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::setHookshotCarryOffset(unsigned int param_0, cXyz const* param_1) { - nofralloc -#include "asm/d/a/d_a_alink/setHookshotCarryOffset__9daAlink_cFUiPC4cXyz.s" +bool daAlink_c::setHookshotCarryOffset(unsigned int actorID, cXyz const* offset) { + if (i_dComIfGp_checkPlayerStatus1(0, 0x10000)) { + fopAc_ac_c* carryActor = mCargoCarryActor.getActor(); + + if (carryActor != NULL && fopAcM_checkHookCarryNow(carryActor) && actorID == mCargoCarryActor.getID()) { + field_0x37c8 = *offset; + return true; + } + } + + fopAc_ac_c* actor = field_0x284c.getActor(); + if (actor != NULL && fopAcM_checkHookCarryNow(actor) && actorID == field_0x284c.getID()) { + field_0x37f8 = *offset; + return true; + } + + return false; } -#pragma pop /* 80108B34-80108DB4 103474 0280+00 1/1 0/0 0/0 .text setHookshotModel__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setHookshotModel() { - nofralloc -#include "asm/d/a/d_a_alink/setHookshotModel__9daAlink_cFv.s" +void daAlink_c::setHookshotModel() { + J3DAnmTransform* bck = (J3DAnmTransform*)mAnmHeap9.loadDataIdx(0x17E); + + JKRHeap* heap = setItemHeap(); + field_0x730.init(bck, 0, 2, lit_6040, 0, -1, false); + + J3DModelData* heldItem_modelData = loadAramBmd(0x316, 0x5C00); + mHeldItemModel = initModel(heldItem_modelData, 0x80000, 0); + + J3DModelData* modelData = loadAramBmd(0x318, 0x3800); + field_0x070c = initModel(modelData, 0x80000, 0); + field_0x0710 = initModel(mHeldItemModel->getModelData(), 0x80000, 0); + field_0x0714 = initModel(field_0x070c->getModelData(), 0x80000, 0); + + field_0x0768 = loadAramBmd(0x317, 0x1000); + field_0x770 = new hsChainShape_c(); + field_0x076c = new Z2SoundObjSimple(); + + mpHookshotLinChk = new dBgS_ObjLinChk(); + mpHookshotLinChk->OffFullGrp(); + mpHookshotLinChk->OnWaterGrp(); + + J3DAnmTransform* bck2 = (J3DAnmTransform*)loadAram(0x17F, 0x800); + field_0x74C.init(bck2, 0, 2, lit_6040, 0, -1, false); + mDoExt_setCurrentHeap(heap); + + resetHookshotMode(); + field_0x770->setUserArea((u32)this); + field_0x2f94 = 1; + if (mEquipItem == W_HOOKSHOT) { + field_0x2f95 = 6; + } + + field_0x3020 = 0; + field_0x3024 = 0; + + field_0x122C[0].SetAtSpl(dCcG_At_Spl_UNK_0); + field_0x122C[0].OffAtNoHitMark(); + field_0x122C[0].SetAtAtp(0); + field_0x122C[0].SetR(lit_7808); + field_0x122C[0].SetAtSe(8); + field_0x122C[0].SetAtType(0x4000); + field_0x122C[0].SetAtHitMark(1); + field_0x122C[0].OnAtSetBit(); + field_0x122C[0].SetAtHitCallback(daAlink_hookshotAtHitCallBack); + field_0x122C[0].SetAtMtrl(0); + field_0x076c->init(&mHookshotTopPos, 1); } -#pragma pop /* 80108DB4-80108EEC 1036F4 0138+00 6/6 0/0 0/0 .text setHookshotSight__9daAlink_cFv */ #pragma push @@ -28230,24 +28262,37 @@ asm void daAlink_c::setHookshotSight() { #pragma pop /* 80108EEC-80108F64 10382C 0078+00 1/1 0/0 0/0 .text cancelHookshotShot__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::cancelHookshotShot() { - nofralloc -#include "asm/d/a/d_a_alink/cancelHookshotShot__9daAlink_cFv.s" +void daAlink_c::cancelHookshotShot() { + if (checkHookshotItem(mEquipItem) && (mHookshotMode == 3 || mHookshotMode == 5 || mHookshotMode == 4)) { + if (mActionID != 0xC5 && mActionID != 0xC6 && mActionID != 0xC4) { + mHookshotMode = 6; + } + } } -#pragma pop /* 80108F64-8010903C 1038A4 00D8+00 4/4 0/0 0/0 .text cancelHookshotMove__9daAlink_cFv */ +// checkAttentionLock has weird codegen +#ifdef NONMATCHING +bool daAlink_c::cancelHookshotMove() { + if (mFastShotTime == 0 && mHookshotMode == 0) { + if (checkHookshotAnime() && (mTargetedActor == NULL && !i_checkAttentionLock() || !itemButton())) { + resetUpperAnime(UPPER_NOW, -1.0f); + return 1; + } + } + + return 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::cancelHookshotMove() { +asm bool daAlink_c::cancelHookshotMove() { nofralloc #include "asm/d/a/d_a_alink/cancelHookshotMove__9daAlink_cFv.s" } #pragma pop +#endif /* 8010903C-80109070 10397C 0034+00 2/2 0/0 0/0 .text * checkHookshotReadyMaterialOffMode__9daAlink_cCFv */ @@ -32159,10 +32204,6 @@ asm void daAlink_c::checkWolfLandAction(int param_0) { } #pragma pop -inline bool i_dComIfGp_checkPlayerStatus1(int param_0, u32 flag) { - return g_dComIfG_gameInfo.play.checkPlayerStatus(param_0, 1, flag); -} - /* 80129958-801299A8 124298 0050+00 1/1 0/0 1/1 .text checkMidnaUseAbility__9daAlink_cCFv */ BOOL daAlink_c::checkMidnaUseAbility() const { @@ -35893,8 +35934,8 @@ bool daPy_py_c::getDpdFarFlg() const { } /* 8014188C-80141894 13C1CC 0008+00 1/0 0/0 0/0 .text getHookshotTopPos__9daPy_py_cFv */ -bool daPy_py_c::getHookshotTopPos() { - return false; +cXyz* daPy_py_c::getHookshotTopPos() { + return NULL; } /* 80141894-8014189C 13C1D4 0008+00 1/0 0/0 0/0 .text checkHookshotReturnMode__9daPy_py_cCFv */ diff --git a/src/d/a/d_a_npc.cpp b/src/d/a/d_a_npc.cpp index 5a1f3575e8..54088d85d9 100644 --- a/src/d/a/d_a_npc.cpp +++ b/src/d/a/d_a_npc.cpp @@ -37,80 +37,6 @@ struct daNpcT_MatAnm_c { /* 8014D24C */ ~daNpcT_MatAnm_c(); }; -struct daNpcF_c { - struct daNpcF_anmPlayData {}; - - /* 80152014 */ void execute(); - /* 801522AC */ void draw(int, int, f32, _GXColorS10*, int); - /* 80152614 */ void tgHitCallBack(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*); - /* 80152654 */ void srchAttnActor1(void*, void*); - /* 801526E8 */ void srchActor(void*, void*); - /* 8015276C */ void setMtx(); - /* 801527FC */ void setMtx2(); - /* 801528C8 */ void initialize(); - /* 80152B2C */ void getTrnsfrmKeyAnmP(char*, int); - /* 80152B68 */ void getTexPtrnAnmP(char*, int); - /* 80152BA4 */ void getTexSRTKeyAnmP(char*, int); - /* 80152BE0 */ void getTevRegKeyAnmP(char*, int); - /* 80152C1C */ void setMcaMorfAnm(J3DAnmTransformKey*, f32, f32, int, int, int); - /* 80152C80 */ void setBckAnm(J3DAnmTransform*, f32, int, int, int, bool); - /* 80152CC4 */ void setBtpAnm(J3DAnmTexPattern*, J3DModelData*, f32, int); - /* 80152D04 */ void setBtkAnm(J3DAnmTextureSRTKey*, J3DModelData*, f32, int); - /* 80152D44 */ void setBrkAnm(J3DAnmTevRegKey*, J3DModelData*, f32, int); - /* 80152D84 */ void setEnvTevColor(); - /* 80152DE0 */ void setRoomNo(); - /* 80152E24 */ void chkEndAnm(f32); - /* 80152EC4 */ void chkEndAnm(J3DFrameCtrl*, f32); - /* 80152F40 */ void playAllAnm(); - /* 80153150 */ void playExpressionAnm(daNpcF_c::daNpcF_anmPlayData***); - /* 80153264 */ void playMotionAnm(daNpcF_c::daNpcF_anmPlayData***); - /* 8015337C */ void setLookatMtx(int, int*, f32); - /* 80153578 */ void hitChk2(dCcD_Cyl*, int, int); - /* 80153658 */ void setDamage(int, int, int); - /* 80153718 */ void ctrlMsgAnm(int&, int&, fopAc_ac_c*, int); - /* 8015387C */ void orderEvent(int, char*, u16, u16, u8, u16); - /* 80153954 */ void changeEvent(char*, char*, u16, u16); - /* 801539F0 */ void chkActorInSight(fopAc_ac_c*, f32); - /* 80153A78 */ void chkActorInArea(fopAc_ac_c*, cXyz, cXyz, s16); - /* 80153BDC */ void chkActorInAttnArea(fopAc_ac_c*, fopAc_ac_c*, int); - /* 80153D1C */ void initTalk(int, fopAc_ac_c**); - /* 80153D84 */ void talkProc(int*, int, fopAc_ac_c**); - /* 80153EF4 */ void turn(s16, f32, int); - /* 801540A4 */ void step(s16, int, int, int); - /* 80154250 */ void setAngle(s16); - /* 80154278 */ void getDistTableIdx(int, int); - /* 801542A0 */ void getEvtAreaTagP(int, int); - /* 8015436C */ void getAttnActorP(int, void* (*)(void*, void*), f32, f32, f32, f32, s16, int, - int); - /* 80154730 */ void chkActorInSight2(fopAc_ac_c*, f32, s16); - /* 80154834 */ void chkPointInArea(cXyz, cXyz, f32, f32, f32, s16); - /* 801548F4 */ void chkPointInArea(cXyz, cXyz, cXyz, s16); - /* 8015496C */ void getAttentionPos(fopAc_ac_c*); - /* 801549E0 */ void chkFindPlayer2(int, s16); - /* 80154BD8 */ void setHitodamaPrtcl(); - /* 80155BB4 */ void setCollisions(); - /* 80155BB8 */ void setAttnPos(); - /* 80155BBC */ void adjustShapeAngle(); - /* 80155BC0 */ bool main(); - /* 80155BC8 */ void setParam(); - /* 80155BCC */ void drawOtherMdls(); - /* 80155BD0 */ bool drawDbgInfo(); - /* 80155BD8 */ bool ctrlBtk(); - /* 80155BE0 */ bool setExpressionAnm(int, bool); - /* 80155BE8 */ void setMotionAnm(int, f32); - /* 80155BEC */ void setMotion(int, f32, int); - /* 80155BF0 */ void setExpression(int, f32); - /* 80155BF4 */ ~daNpcF_c(); - /* 80155EC8 */ bool setExpressionBtp(int); - - static u8 const mCcDObjInfo[48]; - static u8 mCcDCyl[68]; - static u8 mCcDSph[64]; - static u8 mFindActorPList[400]; - static u8 mFindCount[4]; - static u8 mSrchActorName[2 + 2 /* padding */]; -}; - struct dPath {}; struct daNpcF_SPCurve_c { @@ -163,15 +89,6 @@ struct daNpcF_Lookat_c { /* 80151FE0 */ void clrRotAngle(); }; -struct daNpcF_ActorMngr_c { - /* 801506B0 */ void initialize(); - /* 801506D8 */ void entry(unsigned int); - /* 801506BC */ void entry(fopAc_ac_c*); - /* 801506E0 */ void remove(); - /* 801506EC */ void getActorP(); - /* 80155E40 */ ~daNpcF_ActorMngr_c(); -}; - struct daBaseNpc_path_c { /* 8014D998 */ daBaseNpc_path_c(); /* 8014D9A8 */ void isPath(); @@ -4762,7 +4679,8 @@ void daNpcF_c::setExpression(int param_0, f32 param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm daNpcF_c::~daNpcF_c() { +// asm daNpcF_c::~daNpcF_c() { +extern "C" asm void __dt__8daNpcF_cFv() { nofralloc #include "asm/d/a/d_a_npc/__dt__8daNpcF_cFv.s" } @@ -4772,7 +4690,8 @@ asm daNpcF_c::~daNpcF_c() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm daNpcF_ActorMngr_c::~daNpcF_ActorMngr_c() { +// asm daNpcF_ActorMngr_c::~daNpcF_ActorMngr_c() { +extern "C" asm void __dt__18daNpcF_ActorMngr_cFv() { nofralloc #include "asm/d/a/d_a_npc/__dt__18daNpcF_ActorMngr_cFv.s" } diff --git a/src/d/bg/d_bg_s.cpp b/src/d/bg/d_bg_s.cpp index 5516f14d1e..fb90040c4f 100644 --- a/src/d/bg/d_bg_s.cpp +++ b/src/d/bg/d_bg_s.cpp @@ -671,7 +671,7 @@ bool dBgS::GetPolyAttackThrough(cBgS_PolyInfo const& poly) { } /* 800751F8-8007524C 06FB38 0054+00 0/0 1/1 0/0 .text ChkPolyHSStick__4dBgSFRC13cBgS_PolyInfo */ -bool dBgS::ChkPolyHSStick(cBgS_PolyInfo const& poly) { +u32 dBgS::ChkPolyHSStick(cBgS_PolyInfo const& poly) { int bg_index = poly.GetBgIndex(); if (m_chk_element[bg_index].ChkUsed()) { return m_chk_element[bg_index].m_bgw_base_ptr->GetPolyHSStick(poly.GetPolyIndex()); diff --git a/src/d/bg/d_bg_w.cpp b/src/d/bg/d_bg_w.cpp index ba90aee54a..9676d73678 100644 --- a/src/d/bg/d_bg_w.cpp +++ b/src/d/bg/d_bg_w.cpp @@ -1076,7 +1076,7 @@ asm void dBgW::GetPolyArrowThrough(int param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm bool dBgW::GetPolyHSStick(int param_0) { +asm u32 dBgW::GetPolyHSStick(int param_0) { nofralloc #include "asm/d/bg/d_bg_w/GetPolyHSStick__4dBgWFi.s" } diff --git a/src/d/bg/d_bg_w_kcol.cpp b/src/d/bg/d_bg_w_kcol.cpp index 8b47c5a3a9..a35621f5b4 100644 --- a/src/d/bg/d_bg_w_kcol.cpp +++ b/src/d/bg/d_bg_w_kcol.cpp @@ -686,7 +686,7 @@ asm void dBgWKCol::GetPolyArrowThrough(int param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dBgWKCol::GetPolyHSStick(int param_0) { +asm u32 dBgWKCol::GetPolyHSStick(int param_0) { nofralloc #include "asm/d/bg/d_bg_w_kcol/GetPolyHSStick__8dBgWKColFi.s" } diff --git a/src/d/d_drawlist.cpp b/src/d/d_drawlist.cpp index 6deebb62d9..936ab7279b 100644 --- a/src/d/d_drawlist.cpp +++ b/src/d/d_drawlist.cpp @@ -263,7 +263,6 @@ extern "C" extern void* __vt__9J3DPacket[5]; extern "C" u8 now__14mDoMtx_stack_c[48]; extern "C" u8 mClipper__14mDoLib_clipper[92]; extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 g_env_light[4880]; extern "C" extern u8 g_envHIO[68]; extern "C" u8 sincosTable___5JMath[65536]; extern "C" u8 mBackColor__13mDoGph_gInf_c[4]; diff --git a/src/d/d_lib.cpp b/src/d/d_lib.cpp index ad09b0485c..3030b34766 100644 --- a/src/d/d_lib.cpp +++ b/src/d/d_lib.cpp @@ -163,19 +163,19 @@ asm void STControl::Yinit() { #endif f32 STControl::getValueStick() { - return mDoCPd_c::getStickValue(mDoCPd_c::PAD_0); + return mDoCPd_c::getStickValue(PAD_1); } s16 STControl::getAngleStick() { - return mDoCPd_c::getStickAngle(mDoCPd_c::PAD_0); + return mDoCPd_c::getStickAngle(PAD_1); } f32 CSTControl::getValueStick() { - return mDoCPd_c::getSubStickValue(mDoCPd_c::PAD_0); + return mDoCPd_c::getSubStickValue(PAD_1); } s16 CSTControl::getAngleStick() { - return mDoCPd_c::getSubStickAngle(mDoCPd_c::PAD_0); + return mDoCPd_c::getSubStickAngle(PAD_1); } /* 8003219C-8003242C 02CADC 0290+00 0/0 24/24 0/0 .text checkTrigger__9STControlFv */ diff --git a/src/d/d_resorce.cpp b/src/d/d_resorce.cpp index d735f1a7ec..c2d2534697 100644 --- a/src/d/d_resorce.cpp +++ b/src/d/d_resorce.cpp @@ -154,7 +154,6 @@ extern "C" void _restgpr_29(); extern "C" void memcmp(); extern "C" extern void* __vt__14J3DMaterialAnm[4]; extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_env_light[4880]; extern "C" u8 mFrameBufferTimg__13mDoGph_gInf_c[4]; extern "C" u8 mZbufferTimg__13mDoGph_gInf_c[4]; extern "C" u8 sCurrentHeap__7JKRHeap[4]; diff --git a/src/d/kankyo/d_kankyo.cpp b/src/d/kankyo/d_kankyo.cpp index 21e0ab0ef0..bcf72b3f7a 100644 --- a/src/d/kankyo/d_kankyo.cpp +++ b/src/d/kankyo/d_kankyo.cpp @@ -5,7 +5,6 @@ #include "d/kankyo/d_kankyo.h" #include "MSL_C/MSL_Common/Src/mem.h" -#include "Z2AudioLib/Z2EnvSeMgr.h" #include "d/com/d_com_inf_game.h" #include "d/kankyo/d_kankyo_data.h" #include "d/msg/d_msg_object.h" @@ -1934,7 +1933,6 @@ asm void dScnKy_env_light_c::settingTevStruct_plightcol_plus(cXyz* param_0, dKy_ #pragma pop /* 8042DD70-8042E07C 05AA90 030C+00 1/2 8/8 9/9 .bss g_mEnvSeMgr */ -extern Z2EnvSeMgr g_mEnvSeMgr; Z2EnvSeMgr g_mEnvSeMgr; /* 8042E07C-8042E7BC 05AD9C 0740+00 5/4 0/0 0/0 .bss lightStatusData */ diff --git a/src/d/menu/d_menu_collect.cpp b/src/d/menu/d_menu_collect.cpp index e843e45287..a6a90f09f7 100644 --- a/src/d/menu/d_menu_collect.cpp +++ b/src/d/menu/d_menu_collect.cpp @@ -427,7 +427,6 @@ extern "C" extern void* __vt__8J3DModel[9]; extern "C" extern void* __vt__14J3DMaterialAnm[4]; extern "C" u8 now__14mDoMtx_stack_c[48]; extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 g_env_light[4880]; extern "C" extern u8 g_drawHIO[3880]; extern "C" extern u8 g_meter2_info[248]; extern "C" f32 Zero__4cXyz[3]; diff --git a/src/d/menu/d_menu_window.cpp b/src/d/menu/d_menu_window.cpp index d4bee51560..af15b9a5d8 100644 --- a/src/d/menu/d_menu_window.cpp +++ b/src/d/menu/d_menu_window.cpp @@ -277,15 +277,15 @@ inline BOOL dComIfGp_event_runCheck() { } BOOL dMw_UP_TRIGGER() { - return (bool)mDoCPd_c::getTrigUp(mDoCPd_c::PAD_0); + return (bool)mDoCPd_c::getTrigUp(PAD_1); } bool dMw_DOWN_TRIGGER() { - return mDoCPd_c::getTrigDown(mDoCPd_c::PAD_0); + return mDoCPd_c::getTrigDown(PAD_1); } BOOL dMw_LEFT_TRIGGER() { - if (mDoCPd_c::getTrigLeft(mDoCPd_c::PAD_0) && !dMw_UP_TRIGGER()) { + if (mDoCPd_c::getTrigLeft(PAD_1) && !dMw_UP_TRIGGER()) { return true; } else { return false; @@ -293,7 +293,7 @@ BOOL dMw_LEFT_TRIGGER() { } BOOL dMw_RIGHT_TRIGGER() { - if (mDoCPd_c::getTrigRight(mDoCPd_c::PAD_0) && !dMw_UP_TRIGGER()) { + if (mDoCPd_c::getTrigRight(PAD_1) && !dMw_UP_TRIGGER()) { return true; } else { return false; @@ -301,19 +301,19 @@ BOOL dMw_RIGHT_TRIGGER() { } bool dMw_A_TRIGGER() { - return mDoCPd_c::getTrigA(mDoCPd_c::PAD_0); + return mDoCPd_c::getTrigA(PAD_1); } BOOL dMw_B_TRIGGER() { - return (bool)mDoCPd_c::getTrigB(mDoCPd_c::PAD_0); + return (bool)mDoCPd_c::getTrigB(PAD_1); } bool dMw_Z_TRIGGER() { - return mDoCPd_c::getTrigZ(mDoCPd_c::PAD_0); + return mDoCPd_c::getTrigZ(PAD_1); } BOOL dMw_START_TRIGGER() { - return (bool)mDoCPd_c::getTrigStart(mDoCPd_c::PAD_0); + return (bool)mDoCPd_c::getTrigStart(PAD_1); } void dMw_onPauseWindow() { @@ -2011,9 +2011,9 @@ void dMw_c::dMw_collect_create() { mpMenuCollect = new dMenu_Collect_c(mpHeap, mpStick, mpCStick); mpMenuCollect->_create(); - if (mDoCPd_c::getHoldLockL(mDoCPd_c::PAD_0)) { + if (mDoCPd_c::getHoldLockL(PAD_1)) { dMw_onButtonBit(1); - } else if (mDoCPd_c::getHoldLockR(mDoCPd_c::PAD_0)) { + } else if (mDoCPd_c::getHoldLockR(PAD_1)) { dMw_onButtonBit(2); } } diff --git a/src/d/particle/d_particle.cpp b/src/d/particle/d_particle.cpp index f2f0d51860..b581e837dd 100644 --- a/src/d/particle/d_particle.cpp +++ b/src/d/particle/d_particle.cpp @@ -474,7 +474,6 @@ extern "C" u8 j_o_id__8dPa_name[10 + 2 /* padding */]; extern "C" u8 s_o_id__8dPa_name[28]; extern "C" u8 mClipper__14mDoLib_clipper[92]; extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 g_env_light[4880]; extern "C" u8 sincosTable___5JMath[65536]; extern "C" extern u32 g_whiteColor; extern "C" u8 mFrameBufferTimg__13mDoGph_gInf_c[4]; diff --git a/src/f_op/f_op_actor.cpp b/src/f_op/f_op_actor.cpp index ea987b19bb..21578c3f41 100644 --- a/src/f_op/f_op_actor.cpp +++ b/src/f_op/f_op_actor.cpp @@ -126,7 +126,6 @@ extern "C" void __construct_array(); extern "C" void _savegpr_29(); extern "C" void _restgpr_29(); extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 g_env_light[4880]; extern "C" f32 Zero__4cXyz[3]; extern "C" extern u8 g_dComIfAc_gameInfo[8]; extern "C" u8 m_object__7dDemo_c[4]; diff --git a/src/m_Do/m_Do_DVDError.cpp b/src/m_Do/m_Do_DVDError.cpp index 6fc91edc2a..64b2811856 100644 --- a/src/m_Do/m_Do_DVDError.cpp +++ b/src/m_Do/m_Do_DVDError.cpp @@ -4,120 +4,71 @@ // #include "m_Do/m_Do_DVDError.h" +#include "m_Do/m_Do_dvd_thread.h" +#include "m_Do/m_Do_reset.h" +#include "m_Do/m_Do_ext.h" #include "dol2asm.h" #include "dolphin/types.h" // -// Types: -// - -struct mDoDvdThd { - /* 800158B4 */ void suspend(); -}; - -struct OSThread {}; - -struct OSContext {}; - -struct OSAlarm {}; - -struct JKRThread { - /* 802D16B8 */ JKRThread(OSThread*, int); - /* 802D1758 */ ~JKRThread(); -}; - -struct JKRHeap { - /* 802CE438 */ void becomeCurrentHeap(); -}; - -// -// Forward References: -// - -extern "C" void mDoDvdErr_ThdInit__Fv(); -extern "C" void mDoDvdErr_ThdCleanup__Fv(); -extern "C" static void mDoDvdErr_Watch__FPv(); -extern "C" static void AlarmHandler__FP7OSAlarmP9OSContext(); - -// -// External References: -// - -extern "C" void mDoExt_getAssertHeap__Fv(); -extern "C" void suspend__9mDoDvdThdFv(); -extern "C" void becomeCurrentHeap__7JKRHeapFv(); -extern "C" void __ct__9JKRThreadFP8OSThreadi(); -extern "C" void __dt__9JKRThreadFv(); -extern "C" void OSCreateAlarm(); -extern "C" void OSSetPeriodicAlarm(); -extern "C" void OSCancelAlarm(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSGetCurrentThread(); -extern "C" void OSCreateThread(); -extern "C" void OSCancelThread(); -extern "C" void OSResumeThread(); -extern "C" void OSSuspendThread(); -extern "C" void OSGetThreadPriority(); -extern "C" void OSGetTime(); -extern "C" void DVDGetDriveStatus(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_29(); -extern "C" extern u8 data_80450C88[8]; - -// // Declarations: // /* ############################################################################################## */ /* 803DECC0-803DEFE0 00B9E0 0318+08 4/4 0/0 0/0 .bss DvdErr_thread */ -static u8 DvdErr_thread[792 + 8 /* padding */]; +static OSThread DvdErr_thread; /* 803DEFE0-803DFBE0 00BD00 0C00+00 0/1 0/0 0/0 .bss DvdErr_stack */ #pragma push #pragma force_active on -static u8 DvdErr_stack[3072]; +static u8 DvdErr_stack[3072] ALIGN_DECL(16); #pragma pop /* 803DFBE0-803DFC20 00C900 0028+18 1/2 0/0 0/0 .bss Alarm */ -static u8 Alarm[40 + 24 /* padding */]; +static OSAlarm Alarm; /* 8001659C-8001665C 010EDC 00C0+00 0/0 1/1 0/0 .text mDoDvdErr_ThdInit__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoDvdErr_ThdInit() { - nofralloc -#include "asm/m_Do/m_Do_DVDError/mDoDvdErr_ThdInit__Fv.s" +void mDoDvdErr_ThdInit() { + if (!data_80450C88) { + OSTime time = OSGetTime(); + OSThread* curThread = OSGetCurrentThread(); + s32 priority = OSGetThreadPriority(curThread); + + OSCreateThread(&DvdErr_thread, mDoDvdErr_Watch, NULL, DvdErr_stack + sizeof(DvdErr_stack), sizeof(DvdErr_stack), priority - 3, 1); + OSResumeThread(&DvdErr_thread); + OSCreateAlarm(&Alarm); + OSSetPeriodicAlarm(&Alarm, time, OS_BUS_CLOCK / 4, AlarmHandler); + + data_80450C88 = 1; + } } -#pragma pop /* 8001665C-800166A4 010F9C 0048+00 0/0 1/1 0/0 .text mDoDvdErr_ThdCleanup__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoDvdErr_ThdCleanup() { - nofralloc -#include "asm/m_Do/m_Do_DVDError/mDoDvdErr_ThdCleanup__Fv.s" +void mDoDvdErr_ThdCleanup() { + if (data_80450C88) { + OSCancelThread(&DvdErr_thread); + OSCancelAlarm(&Alarm); + data_80450C88 = 0; + } } -#pragma pop /* 800166A4-80016704 010FE4 0060+00 1/1 0/0 0/0 .text mDoDvdErr_Watch__FPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void mDoDvdErr_Watch(void* param_0) { - nofralloc -#include "asm/m_Do/m_Do_DVDError/mDoDvdErr_Watch__FPv.s" +static void mDoDvdErr_Watch(void*) { + OSDisableInterrupts(); + { JKRThread thread(OSGetCurrentThread(), 0); } + + mDoExt_getAssertHeap()->becomeCurrentHeap(); + + do { + if (DVDGetDriveStatus() == DVD_STATE_FATAL_ERROR) { + mDoDvdThd::suspend(); + } + OSSuspendThread(&DvdErr_thread); + } while (true); } -#pragma pop /* 80016704-8001672C 011044 0028+00 1/1 0/0 0/0 .text AlarmHandler__FP7OSAlarmP9OSContext */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void AlarmHandler(OSAlarm* param_0, OSContext* param_1) { - nofralloc -#include "asm/m_Do/m_Do_DVDError/AlarmHandler__FP7OSAlarmP9OSContext.s" +static void AlarmHandler(OSAlarm*, OSContext*) { + OSResumeThread(&DvdErr_thread); } -#pragma pop diff --git a/src/m_Do/m_Do_Reset.cpp b/src/m_Do/m_Do_Reset.cpp index 5abaa68cea..e1996726ef 100644 --- a/src/m_Do/m_Do_Reset.cpp +++ b/src/m_Do/m_Do_Reset.cpp @@ -4,40 +4,17 @@ // #include "m_Do/m_Do_Reset.h" +#include "m_Do/m_Do_DVDError.h" +#include "m_Do/m_Do_Audio.h" +#include "m_Do/m_Do_MemCard.h" #include "dol2asm.h" #include "dolphin/gx/GX.h" #include "dolphin/types.h" - -// -// Types: -// - -struct Z2AudioMgr { - /* 802CDA6C */ void hasReset() const; - - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - -struct JUTXfb { - /* 802E5214 */ void clearIndex(); - - static u8 sManager[4 + 4 /* padding */]; -}; - -struct JUTVideo { - /* 802E4CAC */ void destroyManager(); -}; - -struct JUTGamePad { - struct C3ButtonReset { - static u8 sCallback[4]; - static u8 sCallbackArg[4 + 4 /* padding */]; - }; -}; - -struct JASTaskThread { - /* 8028FE88 */ void pause(bool); -}; +#include "JSystem/JUtility/JUTGamePad.h" +#include "JSystem/JUtility/JUTVideo.h" +#include "JSystem/JUtility/JUTXfb.h" +#include "JSystem/JAudio2/JASDvdThread.h" +#include "SSystem/SComponent/c_API_controller_pad.h" // // Forward References: @@ -51,13 +28,11 @@ extern "C" u32 getResetData__6mDoRstFv(); extern "C" extern char const* const m_Do_m_Do_Reset__stringBase0; extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */]; extern "C" extern u8 struct_80450C80; -extern "C" extern u8 data_80450C88[8]; // // External References: // -extern "C" void OSAttention(); extern "C" void mDoDvdErr_ThdCleanup__Fv(); extern "C" void cAPICPad_recalibrate__Fv(); extern "C" void pause__13JASTaskThreadFb(); @@ -66,29 +41,15 @@ extern "C" void hasReset__10Z2AudioMgrCFv(); extern "C" void destroyManager__8JUTVideoFv(); extern "C" void clearIndex__6JUTXfbFv(); extern "C" void LCDisable(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void OSSetSaveRegion(); -extern "C" void OSResetSystem(); -extern "C" void OSGetCurrentThread(); -extern "C" void OSCancelThread(); -extern "C" void OSDetachThread(); -extern "C" void OSSuspendThread(); -extern "C" void DVDGetDriveStatus(); -extern "C" void DVDCheckDisk(); extern "C" void VIWaitForRetrace(); extern "C" void VIFlush(); -extern "C" void VISetBlack(s32); extern "C" void GXFlush(); extern "C" void GXAbortFrame(); extern "C" void GXDrawDone(); extern "C" void _savegpr_27(); -extern "C" extern u8 g_mDoMemCd_control[8192]; -extern "C" extern u8 struct_80450BB8[4]; extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; extern "C" u8 sCallback__Q210JUTGamePad13C3ButtonReset[4]; extern "C" u8 sCallbackArg__Q210JUTGamePad13C3ButtonReset[4 + 4 /* padding */]; -extern "C" extern u8 struct_80451500[4]; extern "C" u8 sManager__6JUTXfb[4 + 4 /* padding */]; // @@ -100,7 +61,7 @@ static void my_OSCancelAlarmAll() { } static void destroyVideo() { - destroyManager__8JUTVideoFv(); + JUTVideo::destroyManager(); GXSetDrawDoneCallback(NULL); VISetBlack(1); VIFlush(); @@ -108,40 +69,30 @@ static void destroyVideo() { return; } -/* ############################################################################################## */ -/* 80374198-80374198 0007F8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80374198 = "DVD_STATE_BUSY\n"; -#pragma pop - /* 80450C78-80450C80 000178 0004+04 3/2 42/42 2/2 .sbss mResetData__6mDoRst */ mDoRstData* mDoRst::mResetData; /* 80015614-8001574C 00FF54 0138+00 0/0 3/3 0/0 .text mDoRst_reset__FiUli */ -#ifdef NONMATCHING -void mDoRst_reset(int p1, u32 p2, int p3) { - mDoCPd_c* pmVar1; - u32 uVar2; - DVDState DVar3; - OSThread* thread; - s32 enable; - /* sManager */ lbl_80451550->clearIndex(); - mDoDvdErr_ThdCleanup__Fv(); - cAPICPad_recalibrate__Fv(); - if (lbl_80450BB8 != false) { +void mDoRst_reset(int param_0, u32 param_1, int param_2) { + JUTXfb::getManager()->clearIndex(); + mDoDvdErr_ThdCleanup(); + cAPICPad_recalibrate(); + + if (mDoAud_zelAudio_c::isInitFlag()) { + bool audioReset; do { - uVar2 = lbl_80451368->hasReset(); - } while ((uVar2 & 0xff) == 0); + audioReset = Z2AudioMgr::getInterface()->hasReset(); + } while (!audioReset); } - if ((s32)DVDGetDriveStatus() == (s32)DVD_STATE_BUSY) { - OSAttention(lbl_80374198); + if (DVDGetDriveStatus() == DVD_STATE_BUSY) { + OSAttention("DVD_STATE_BUSY\n"); } - JASTaskThread* task_thread = getThreadPointer__6JASDvdFv(); + + JASTaskThread* task_thread = JASDvd::getThreadPointer(); if (task_thread != NULL) { - pause__13JASTaskThreadFb(task_thread, true); - thread = task_thread->thread; + task_thread->pause(true); + OSThread* thread = task_thread->getThreadRecord(); if (thread != NULL) { OSSuspendThread(thread); OSDetachThread(thread); @@ -152,79 +103,57 @@ void mDoRst_reset(int p1, u32 p2, int p3) { VIWaitForRetrace(); VIWaitForRetrace(); - thread = GXGetCurrentGXThread(); - enable = OSDisableInterrupts(); - OSThread* ourThread = OSGetCurrentThread(); - if (thread != ourThread) { - OSCancelThread(thread); + OSThread* gxThread = GXGetCurrentGXThread(); + s32 enable = OSDisableInterrupts(); + + if (gxThread != OSGetCurrentThread()) { + OSCancelThread(gxThread); GXSetCurrentGXThread(); } + GXFlush(); GXAbortFrame(); GXDrawDone(); - OSRestoreInterrupts(enable); destroyVideo(); - while (mDoMemCd_isCardCommNone() != 0) { + while (!mDoMemCd_isCardCommNone()) { VIWaitForRetrace(); } my_OSCancelAlarmAll(); LCDisable(); - // probably false match; check out 80015728 or thereabouts in Ghidra - OSSetSaveRegion(mDoRst::mResetData, (u8*)(&mDoRst::getResetData()) + 0x18); - OSResetSystem(p1, p2, p3); + OSSetSaveRegion(mDoRst::mResetData, (u8*)&mDoRst::getResetData + 0x18); + OSResetSystem(param_0, param_1, param_2); + do { VIWaitForRetrace(); } while (true); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoRst_reset(int param_0, u32 param_1, int param_2) { - nofralloc -#include "asm/m_Do/m_Do_Reset/mDoRst_reset__FiUli.s" -} -#pragma pop -#endif /* 8001574C-800157F4 01008C 00A8+00 0/0 3/3 0/0 .text mDoRst_resetCallBack__FiPv */ -// fix JUTGamePad data -#ifdef NONMATCHING -void mDoRst_resetCallBack(int port, void* p2) { +void mDoRst_resetCallBack(int port, void*) { if (!mDoRst::isReset()) { if (port == -1) { - cAPICPad_recalibrate__Fv(); + cAPICPad_recalibrate(); } else { - if (mDoRst::is3ButtonReset() != 0) { - lbl_80451501 = false; - /* sCallback */ lbl_804514EC = &mDoRst_resetCallBack; - /* sCallbackArg */ lbl_804514F0 = 0; + if (mDoRst::is3ButtonReset()) { + struct_80451501 = false; + JUTGamePad::C3ButtonReset::sCallback = mDoRst_resetCallBack; + JUTGamePad::C3ButtonReset::sCallbackArg = NULL; return; } mDoRst::on3ButtonReset(); mDoRst::set3ButtonResetPort(port); - cAPICPad_recalibrate__Fv(); + cAPICPad_recalibrate(); } - if ((DVDCheckDisk() == 0) && (DVDGetDriveStatus() != DVD_STATE_FATAL_ERROR)) { + if (DVDCheckDisk() == 0 && DVDGetDriveStatus() != DVD_STATE_FATAL_ERROR) { mDoRst::onReturnToMenu(); } mDoRst::onReset(); } } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoRst_resetCallBack(int param_0, void* param_1) { - nofralloc -#include "asm/m_Do/m_Do_Reset/mDoRst_resetCallBack__FiPv.s" -} -#pragma pop -#endif /* 800157F4-800157FC -00001 0008+00 0/0 0/0 0/0 .text getResetData__6mDoRstFv */ mDoRstData* mDoRst::getResetData() { @@ -253,7 +182,6 @@ u8 struct_80450C87; #pragma pop /* 80450C88-80450C90 000188 0008+00 0/0 2/2 0/0 .sbss None */ -extern u8 data_80450C88[8]; -u8 data_80450C88[8]; +u8 data_80450C88; /* 80374198-80374198 0007F8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/m_Do/m_Do_audio.cpp b/src/m_Do/m_Do_audio.cpp index b5365c30af..2ae9e42e30 100644 --- a/src/m_Do/m_Do_audio.cpp +++ b/src/m_Do/m_Do_audio.cpp @@ -6,23 +6,14 @@ #include "m_Do/m_Do_audio.h" #include "dol2asm.h" #include "dolphin/types.h" +#include "m_Do/m_Do_Reset.h" +#include "m_Do/m_Do_dvd_thread.h" +#include "d/com/d_com_inf_game.h" // // Types: // -struct mDoRst { - static u8 mResetData[4 + 4 /* padding */]; -}; - -struct mDoDvdThd_toMainRam_c { - /* 80016394 */ void create(char const*, u8, JKRHeap*); -}; - -struct mDoDvdThd_mountXArchive_c { - /* 800161E0 */ void create(char const*, u8, JKRArchive::EMountMode, JKRHeap*); -}; - struct JAIStreamDataMgr { /* 802A3AD8 */ ~JAIStreamDataMgr(); }; @@ -96,7 +87,6 @@ extern "C" extern void* __vt__14Z2SoundStarter[5 + 1 /* padding */]; extern "C" extern void* __vt__11Z2SoundInfo[20]; extern "C" extern void* __vt__15Z2SpeechStarter[5]; extern "C" extern void* __vt__10Z2AudioMgr[3]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; extern "C" extern u8 data_80450B40[4]; extern "C" extern u8 data_80450B48[4]; extern "C" extern u8 data_80450B4C[4]; @@ -112,7 +102,7 @@ extern "C" extern u8 data_80450B80[4]; extern "C" extern u8 data_80450B84[4]; extern "C" extern u8 data_80450B88[4]; extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */]; -extern "C" extern u8 struct_80450C80[8]; +extern "C" extern bool struct_80450C80; extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; extern "C" u8 sCurrentHeap__7JKRHeap[4]; @@ -140,18 +130,6 @@ void mDoAud_zelAudio_c::reset() { data_80450bba = false; } -/* ############################################################################################## */ -/* 80373D68-80373D68 0003C8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80373D68 = "/Audiores/Z2Sound.baa"; -SECTION_DEAD static char const* const stringBase_80373D7E = "/Audiores/Seqs/Z2SoundSeqs.arc"; -SECTION_DEAD static char const* const stringBase_80373D9D = - "ヒープ確保失敗につきオーディオ初期化できません\n"; -/* @stringBase0 padding */ -SECTION_DEAD static char const* const pad_80373DCD = "\0\0"; -#pragma pop - /* 803DBF40-803DBF4C 008C60 000C+00 1/1 0/1 0/0 .bss @3620 */ static u8 lit_3620[12]; @@ -168,24 +146,58 @@ static mDoDvdThd_toMainRam_c* l_affCommand; static mDoDvdThd_mountXArchive_c* l_arcCommand; /* 80006FC0-80007164 001900 01A4+00 1/1 0/0 0/0 .text mDoAud_Create__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void mDoAud_Create() { - nofralloc -#include "asm/m_Do/m_Do_audio/mDoAud_Create__Fv.s" +static void mDoAud_Create() { + if (l_affCommand == NULL) { + l_affCommand = mDoDvdThd_toMainRam_c::create("/Audiores/Z2Sound.baa", 2, NULL); + + if (l_affCommand == NULL) { + return; + } + } + + if (l_arcCommand == NULL) { + l_arcCommand = mDoDvdThd_mountXArchive_c::create("/Audiores/Seqs/Z2SoundSeqs.arc", 0, JKRArchive::MOUNT_DVD, NULL); + + if (l_arcCommand == NULL) { + return; + } + } + + if (l_affCommand->sync() && l_arcCommand->sync()) { + if (g_mDoAud_audioHeap != NULL) { + s32 groupID = JKRHeap::sCurrentHeap->changeGroupID(5); + (*(mDoAud_zelAudio_c*)g_mDoAud_zelAudio).mAudioMgr.init(g_mDoAud_audioHeap, 0xA00000, l_affCommand->getMemAddress(), l_arcCommand->getArchive()); + JKRHeap::sCurrentHeap->changeGroupID(groupID); + g_mDoAud_audioHeap->adjustSize(); + } else { + // "Cannot initialize audio due to heap allocation failure\n" + OSReport_Error("ヒープ確保失敗につきオーディオ初期化できません\n"); + } + + (*(mDoAud_zelAudio_c*)g_mDoAud_zelAudio).mAudioMgr.mStatusMgr.setEventBit(dComIfGs_getPEventBit()); + (*(mDoAud_zelAudio_c*)g_mDoAud_zelAudio).reset(); + + u32 soundMode = OSGetSoundMode(); + Z2AudioMgr::getInterface()->setOutputMode(soundMode); + JKRHeap::free(l_affCommand->getMemAddress(), NULL); + l_affCommand->destroy(); + l_arcCommand->destroy(); + + mDoAud_zelAudio_c::onInitFlag(); + struct_80450C80 = true; + } } -#pragma pop /* 80007164-800071BC 001AA4 0058+00 0/0 1/1 0/0 .text mDoAud_Execute__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoAud_Execute() { - nofralloc -#include "asm/m_Do/m_Do_audio/mDoAud_Execute__Fv.s" +void mDoAud_Execute() { + if (!mDoAud_zelAudio_c::isInitFlag()) { + if (!mDoRst::isShutdown() && !mDoRst::isReturnToMenu()) { + mDoAud_Create(); + } + } else { + (*(mDoAud_zelAudio_c*)g_mDoAud_zelAudio).mAudioMgr.gframeProcess(); + } } -#pragma pop /* 800071BC-800071F8 001AFC 003C+00 0/0 3/3 0/0 .text mDoAud_setSceneName__FPCcll */ void mDoAud_setSceneName(char const* spot, s32 room, s32 layer) { diff --git a/src/m_Do/m_Do_graphic.cpp b/src/m_Do/m_Do_graphic.cpp index 4718a4deae..5008983ab4 100644 --- a/src/m_Do/m_Do_graphic.cpp +++ b/src/m_Do/m_Do_graphic.cpp @@ -140,13 +140,11 @@ extern "C" void _restgpr_28(); extern "C" extern void* __vt__14J2DGrafContext[10]; extern "C" extern void* __vt__13J2DOrthoGraph[10]; extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_env_light[4880]; extern "C" f32 Zero__4cXyz[3]; extern "C" u8 mPadStatus__10JUTGamePad[48]; extern "C" u8 sincosTable___5JMath[65536]; extern "C" extern s8 data_80450580; extern "C" void* mRenderModeObj__15mDoMch_render_c[1 + 1 /* padding */]; -; extern "C" u8 systemConsole__9JFWSystem[4]; extern "C" u8 sManager__10JFWDisplay[4]; extern "C" u8 sCurrentHeap__7JKRHeap[4]; diff --git a/src/m_Do/m_Do_main.cpp b/src/m_Do/m_Do_main.cpp index 9e206cc8ca..86f291d94c 100644 --- a/src/m_Do/m_Do_main.cpp +++ b/src/m_Do/m_Do_main.cpp @@ -17,14 +17,8 @@ #include "m_Do/m_Do_controller_pad.h" #include "m_Do/m_Do_dvd_thread.h" #include "m_Do/m_Do_graphic.h" - -// -// Types: -// - -struct DynamicModuleControlBase { - /* 80262470 */ void dump(); -}; +#include "m_Do/m_Do_machine.h" +#include "DynamicLink.h" // // Forward References: @@ -220,21 +214,21 @@ static HeapCheck CommandHeapCheck; /* 8000578C-80005848 0000CC 00BC+00 1/1 0/0 0/0 .text CheckHeap__FUl */ void CheckHeap(u32 i_padNo) { - mDoMch_HeapCheckAll__Fv(); + mDoMch_HeapCheckAll(); OSCheckActiveThreads(); bool comboCheck = false; - // if L + R + Z is pressed... + // if L + R + Z is pressed if ((mDoCPd_c::getHold(i_padNo) & ~CButton::Z) == (CButton::L + CButton::R) && mDoCPd_c::getTrig(i_padNo) & CButton::Z) { comboCheck = true; } - int unk2 = comboCheck; + int saveRel = comboCheck; for (int i = 0; i < 8; i++) { HeapCheckTable[i]->CheckHeap1(); - if (unk2) { + if (saveRel) { HeapCheckTable[i]->saveRelBase(); } } @@ -266,59 +260,24 @@ void HeapCheck::heapDisplay() const { s32 total_free_size = mHeap->getTotalFreeSize(); s32 heap_free_size = mHeap->getFreeSize(); - JUTReport(0x64, 0xd4, "[%sName]", mName); - JUTReport(0x64, 0xe3, "HeapSize %8ld", heap_size); - JUTReport(0x64, 0xf0, "TargetHeapSize %8ld", mTargetHeapSize); - JUTReport(0x64, 0xfd, "TotalFree %8ld", total_free_size - used_count); - JUTReport(0x64, 0x10a, "FreeSize %8ld", heap_free_size - used_count); - JUTReport(0x64, 0x117, "TotalUsedSize %8ld", total_used_size); - JUTReport(0x64, 0x124, "TotalUsedRate %3ld%%", + JUTReport(100, 212, "[%sName]", mName); + JUTReport(100, 227, "HeapSize %8ld", heap_size); + JUTReport(100, 240, "TargetHeapSize %8ld", mTargetHeapSize); + JUTReport(100, 253, "TotalFree %8ld", total_free_size - used_count); + JUTReport(100, 266, "FreeSize %8ld", heap_free_size - used_count); + JUTReport(100, 279, "TotalUsedSize %8ld", total_used_size); + JUTReport(100, 292, "TotalUsedRate %3ld%%", (int)(total_used_size * 0x64) / (int)mTargetHeapSize); - JUTReport(0x64, 0x131, "MaxTotalUsedSize %8ld", mMaxTotalUsedSize); - JUTReport(0x64, 0x13e, "MaxTotalUsedRate %3ld%%", + JUTReport(100, 305, "MaxTotalUsedSize %8ld", mMaxTotalUsedSize); + JUTReport(100, 318, "MaxTotalUsedRate %3ld%%", (mMaxTotalUsedSize * 0x64) / (int)mTargetHeapSize); - JUTReport(0x64, 0x14b, "MinFreeSize %8ld", mMaxTotalFreeSize - used_count); - JUTReport(0x64, 0x158, "MinFreeRate %3ld%%", + JUTReport(100, 331, "MinFreeSize %8ld", mMaxTotalFreeSize - used_count); + JUTReport(100, 344, "MinFreeRate %3ld%%", ((mMaxTotalFreeSize - used_count) * 0x64) / (int)mTargetHeapSize); used_count = countUsed(mHeap); - JUTReport(0x64, 0x165, "UsedCount %3ld%", used_count); + JUTReport(100, 357, "UsedCount %3ld%", used_count); } -/* ############################################################################################## */ -/* 803739A0-803739A0 000000 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80373AEF = ""; -SECTION_DEAD static char const* const stringBase_80373AF0 = "TotalFree"; -SECTION_DEAD static char const* const stringBase_80373AFA = "MaxUsed "; -SECTION_DEAD static char const* const stringBase_80373B04 = "Used "; -SECTION_DEAD static char const* const stringBase_80373B0E = "RelUsed "; -SECTION_DEAD static char const* const stringBase_80373B18 = "/ MaxFree"; -SECTION_DEAD static char const* const stringBase_80373B22 = "/HeapSize"; -SECTION_DEAD static char const* const stringBase_80373B2C = "Blk/Bytes"; -SECTION_DEAD static char const* const stringBase_80373B36 = "ARAM Free"; -SECTION_DEAD static char const* const stringBase_80373B40 = "%d"; -SECTION_DEAD static char const* const stringBase_80373B43 = "%s"; -SECTION_DEAD static char const* const stringBase_80373B46 = " [%s]"; -SECTION_DEAD static char const* const stringBase_80373B4C = "%10d"; -#pragma pop - -/* 803A2F14-803A2F28 -00001 0014+00 0/1 0/0 0/0 .data desc1$3717 */ -#pragma push -#pragma force_active on -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 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 s8 data_80450580 = 0xFF; @@ -326,10 +285,7 @@ SECTION_SDATA s8 data_80450580 = 0xFF; 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, -}; +SECTION_SDATA u8 mDoMain::mHeapBriefType = 4; /* 80450B00-80450B08 000000 0008+00 1/1 0/0 0/0 .sbss None */ static u8 data_80450B00; @@ -344,201 +300,135 @@ OSTime mDoMain::sHungUpTime; /* 80450B18 0001+00 data_80450B18 None */ /* 80450B19 0001+00 data_80450B19 None */ /* 80450B1A 0002+00 data_80450B1A None */ -static u8 struct_80450B18[2]; - -static u8 data_80450B1A; -static u8 data_80450B1B; +static bool struct_80450B18; // sDisplayHeapDebug +static u8 sDisplayHeap; +static bool sCheckHeap; /* 80005AD8-80005D4C 000418 0274+00 1/1 0/0 0/0 .text debugDisplay__Fv */ -#ifdef NONMATCHING -void debugDisplay(void) { - int tmp1; - int tmp2; +void debugDisplay() { + static char* desc1[5] = { + "", "TotalFree", "MaxUsed ", "Used ", "RelUsed ", + }; - if (struct_80450B18[1] >= 1 && struct_80450B18[1] <= 6) { - HeapCheckTable[struct_80450B18[1]]->heapDisplay(); + static char* desc2[5] = { + "", "/ MaxFree", "/HeapSize", "Blk/Bytes", "Blk/Bytes", + }; + + if (sDisplayHeap >= 1 && sDisplayHeap <= 6) { + HeapCheckTable[sDisplayHeap - 1]->heapDisplay(); } - if (data_80450588[0] == 5) { + if (mDoMain::mHeapBriefType == 5) { JKRAramHeap* heap = JKRAram::getAramHeap(); if (heap) { - JUTReport(0x1db, 100, "ARAM Free"); - JUTReport(0x1db, 0x72, "%d", heap->getFreeSize()); - JUTReport(0x1db, 0x80, "TotalFree"); - JUTReport(0x1db, 0x8e, "%d", heap->getTotalFreeSize()); + JUTReport(475, 100, "ARAM Free"); + JUTReport(475, 114, "%d", heap->getFreeSize()); + JUTReport(475, 128, "TotalFree"); + JUTReport(475, 142, "%d", heap->getTotalFreeSize()); + return; } - } else { - 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) { - HeapCheck* heap_check = HeapCheckTable[i]; - - switch (data_80450588[0]) { - case 3: { - tmp1 = heap_check->getUsedCount(); - tmp2 = heap_check->getHeap()->getTotalUsedSize(); - break; - } - case 1: { - tmp1 = heap_check->getHeap()->getTotalFreeSize(); - tmp2 = heap_check->getHeap()->getFreeSize(); - break; - } - case 2: { - tmp1 = heap_check->getMaxTotalUsedSize(); - tmp2 = heap_check->getHeap()->getSize(); - break; - } - case 4: { - tmp1 = heap_check->getUsedCount() - heap_check->getUsedCountRef(); - tmp2 = heap_check->getHeap()->getTotalUsedSize() - - heap_check->getTotalUsedSizeRef(); - break; - } - - JUTReport(0x1db, k + 0x96, " [%s]", heap_check->getName()); - JUTReport(0x1db, k + 0xA4, "%10d", tmp1); - JUTReport(0x1db, k + 0xB2, "%10d", tmp2); - } + } else if (mDoMain::mHeapBriefType != 0) { + JUTReport(475, 100, "%s", desc1[mDoMain::mHeapBriefType]); + JUTReport(475, 114, "%s", desc2[mDoMain::mHeapBriefType]); + + for (int i = 0; i < 8; i++) { + HeapCheck* heap_check = HeapCheckTable[i]; + JKRExpHeap* expHeap = heap_check->getHeap(); + + s32 check1; + s32 check2; + switch (mDoMain::mHeapBriefType) { + case 1: + check1 = expHeap->getTotalFreeSize(); + check2 = expHeap->getFreeSize(); + break; + case 2: + check1 = heap_check->getMaxTotalUsedSize(); + check2 = expHeap->getHeapSize(); + break; + case 3: + check1 = heap_check->getUsedCount(); + check2 = expHeap->getTotalUsedSize(); + break; + case 4: + check1 = heap_check->getRelUsedCount(); + check2 = heap_check->getRelTotalUsedSize(); + break; } + + JUTReport(475, (i * 44) + 150, " [%s]", heap_check->getName()); + JUTReport(475, (i * 44) + 164, "%10d", check1); + JUTReport(475, (i * 44) + 178, "%10d", check2); } } } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void debugDisplay() { - nofralloc -#include "asm/m_Do/m_Do_main/debugDisplay__Fv.s" -} -#pragma pop -#endif - -/* ############################################################################################## */ -/* 803739A0-803739A0 000000 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80373B51 = "Press X+Y+START to CLEAR console."; -SECTION_DEAD static char const* const stringBase_80373B73 = "3DStick UP/Down to scroll"; -SECTION_DEAD static char const* const stringBase_80373B8D = - "Press A to output terminal from console."; -SECTION_DEAD static char const* const stringBase_80373BB6 = "SCROLL:%3d %3d %3d Output=%1x"; -SECTION_DEAD static char const* const stringBase_80373BD5 = "Press L+R trigger to control console."; -SECTION_DEAD static char const* const stringBase_80373BFB = - "Press [Z] trigger to close this window."; -#pragma pop - -/* 80450B1C-80450B20 00001C 0004+00 1/1 0/0 0/0 .sbss console_position_x$3776 */ -static f32 console_position_x; - -/* 80450B20-80450B24 000020 0004+00 1/1 0/0 0/0 .sbss None */ -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 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 s8 data_80450B30; - -/* 80451A00-80451A04 000000 0004+00 1/1 0/0 0/0 .sdata2 @3884 */ -SECTION_SDATA2 static f32 lit_3884 = 20.0f; - -/* 80451A04-80451A08 000004 0004+00 1/1 0/0 0/0 .sdata2 @3885 */ -SECTION_SDATA2 static f32 lit_3885 = 30.0f; - -/* 80451A08-80451A0C 000008 0004+00 1/1 0/0 0/0 .sdata2 @3886 */ -SECTION_SDATA2 static u8 lit_3886[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 80451A0C-80451A10 00000C 0004+00 1/1 0/0 0/0 .sdata2 @3887 */ -SECTION_SDATA2 static f32 lit_3887 = 1.0f; - -/* 80451A10-80451A18 000010 0004+04 1/1 0/0 0/0 .sdata2 @3888 */ -SECTION_SDATA2 static f32 lit_3888[1 + 1 /* padding */] = { - -1.0f, - /* padding */ - 0.0f, -}; - -/* 80451A18-80451A20 000018 0008+00 1/1 0/0 0/0 .sdata2 @3890 */ -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 bool Debug_console(u32 i_padNo) { - float tmp2; - float tmp3; - int tmp6; + static f32 console_position_x; + static s8 console_x_init; + + static f32 console_position_y; + static s8 console_y_init; + + static f32 console_scroll; + static s8 console_scroll_init; JUTConsole* console = JFWSystem::getSystemConsole(); if (console) { - if (!data_80450B20) { + if (!console_x_init) { console_position_x = 20.0f; - data_80450B20 = 1; + console_x_init = 1; } - if (!data_80450B28) { + if (!console_y_init) { console_position_y = 30.0f; - data_80450B28 = 1; + console_y_init = 1; } - if (!data_80450B30) { + if (!console_scroll_init) { console_scroll = 0.0f; - data_80450B30 = 1; + console_scroll_init = 1; } - if (mDoCPd_c::getTrig(i_padNo) & CButton::Z && - !(mDoCPd_c::getHold(i_padNo) & ~CButton::Z)) { - bool visible = console->isVisible() == false; - console->setVisible(visible); + if (mDoCPd_c::getTrig(i_padNo) & CButton::Z && !(mDoCPd_c::getHold(i_padNo) & ~CButton::Z)) { + console->setVisible(console->isVisible() == false); JUTAssertion::setMessageCount(0); } if (console->isVisible()) { - // if R and L are pressed - 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) && + u32 holdButtons = mDoCPd_c::getHold(i_padNo); + if ((holdButtons & CButton::L && holdButtons & CButton::R) || + ((mDoCPd_c::getAnalogL(i_padNo) > 0.0f && mDoCPd_c::getAnalogR(i_padNo) > 0.0f))) { + f32 stick_x = mDoCPd_c::getStickX(i_padNo); + f32 stick_y = mDoCPd_c::getStickY(i_padNo); + + if (holdButtons & (CButton::Y | CButton::X) && mDoCPd_c::getTrig(i_padNo) & CButton::START) { console->clear(); } if (!(mDoCPd_c::getHold(i_padNo) & (CButton::Y | CButton::X))) { - // subtract console scroll value from stick Y - console_scroll -= mDoCPd_c::getStickY(i_padNo); - int tmp; - if (1.0f <= console_scroll) { - -1.0f <= console_scroll ? tmp = 0 : tmp = -console_scroll; + console_scroll -= stick_y; + + int scrollAmount; + if (console_scroll > 1.0f) { + scrollAmount = console_scroll; + } else if (console_scroll < -1.0f) { + scrollAmount = -(int)-console_scroll; } else { - tmp = mDoCPd_c::getStickX(i_padNo) - mDoCPd_c::getStickY(i_padNo); + scrollAmount = 0; } - if (tmp) { - console_scroll -= tmp; - console->scroll(tmp); + if (scrollAmount != 0) { + console_scroll -= scrollAmount; + console->scroll(scrollAmount); } } else { if (mDoCPd_c::getHold(i_padNo) & CButton::X) { - console_position_x += mDoCPd_c::getStickX(i_padNo); + console_position_x += stick_x; } if (mDoCPd_c::getHold(i_padNo) & CButton::Y) { - console_position_y -= mDoCPd_c::getStickY(i_padNo); + console_position_y -= stick_y; } } @@ -547,54 +437,46 @@ bool Debug_console(u32 i_padNo) { console->setOutput(JUTConsole::OUTPUT_OSREPORT | JUTConsole::OUTPUT_CONSOLE); } - 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", + JUTReport(30, 390, 1, "Press X+Y+START to CLEAR console."); + JUTReport(30, 400, 1, "3DStick UP/Down to scroll"); + JUTReport(30, 410, 1, "Press A to output terminal from console."); + JUTReport(30, 420, 1, "SCROLL:%3d %3d %3d Output=%1x", console->getLineOffset(), console->getPositionX(), console->getPositionY(), console->getOutput()); - } - } else { - if (mDoCPd_c::getTrig(i_padNo) & CButton::DPAD_DOWN) { - g_HIO.mDisplayMeter ^= 1; - } + } else { + u32 pressButtons = mDoCPd_c::getTrig(i_padNo); - if (mDoCPd_c::getTrig(i_padNo) & CButton::DPAD_LEFT) { - if (JKRAram::getAramHeap()) { - JKRAram::getAramHeap()->dump(); + if (pressButtons & CButton::DPAD_DOWN) { + g_HIO.mDisplayMeter ^= 1; } - dump__24DynamicModuleControlBaseFv(); - g_dComIfG_gameInfo.mResControl.dump(); - } + if (pressButtons & CButton::DPAD_LEFT) { + if (JKRAram::getAramHeap()) { + JKRAram::getAramHeap()->dump(); + } - if (mDoCPd_c::getTrig(i_padNo) & CButton::DPAD_RIGHT) { - JKRHeap::getSystemHeap()->dump_sort(); - } + dump__24DynamicModuleControlBaseFv(); + g_dComIfG_gameInfo.mResControl.dump(); + } - if (mDoCPd_c::getTrig(i_padNo) & CButton::DPAD_UP) { - zeldaHeap->dump_sort(); - gameHeap->dump_sort(); - archiveHeap->dump_sort(); + if (mDoCPd_c::getTrig(i_padNo) & CButton::DPAD_RIGHT) { + JKRHeap::getSystemHeap()->dump_sort(); + } + + if (mDoCPd_c::getTrig(i_padNo) & CButton::DPAD_UP) { + zeldaHeap->dump_sort(); + gameHeap->dump_sort(); + archiveHeap->dump_sort(); + } + JUTReport(30, 440, 1, "Press L+R trigger to control console."); + JUTReport(30, 450, 1, "Press [Z] trigger to close this window."); } - JUTReport(0x1E, 0x1B8, 1, "Press L+R trigger to control console."); - JUTReport(0x1E, 0x1C2, 1, "Press [Z] trigger to close this window."); + console->setPosition(console_position_x, console_position_y); + return 1; } - console->setPosition(console_position_x, console_position_y); - return 1; } return 0; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void Debug_console(u32 param_0) { - nofralloc -#include "asm/m_Do/m_Do_main/Debug_console__FUl.s" -} -#pragma pop -#endif /* ############################################################################################## */ /* 803739A0-803739A0 000000 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ @@ -633,25 +515,25 @@ asm void* LOAD_COPYDATE(void* param_0) { static void debug() { if (data_80450580) { - if (data_80450B1A) { - CheckHeap(2); + if (sCheckHeap) { + CheckHeap(PAD_3); } - if ((mDoCPd_c::getGamePad(2)->getButton() & ~CButton::Z) == CButton::R && - mDoCPd_c::getGamePad(2)->testTrigger(CButton::Z)) { - struct_80450B18[0] ^= 0x1; + if ((mDoCPd_c::getGamePad(PAD_3)->getButton() & ~CButton::Z) == CButton::R && + mDoCPd_c::getGamePad(PAD_3)->testTrigger(CButton::Z)) { + struct_80450B18 ^= 1; } - if (struct_80450B18[0]) { - 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; + if (struct_80450B18) { + if ((mDoCPd_c::getGamePad(PAD_3)->getButton() & ~CButton::Z) == CButton::L && + mDoCPd_c::getGamePad(PAD_3)->testTrigger(CButton::Z)) { + mDoMain::mHeapBriefType < 5 ? mDoMain::mHeapBriefType++ : mDoMain::mHeapBriefType = 1; } debugDisplay(); } - Debug_console(2); + Debug_console(PAD_3); } } @@ -660,7 +542,7 @@ static void debug() { static u32 frame; /* 8000628C-80006454 000BCC 01C8+00 1/1 0/0 0/0 .text main01__Fv */ -// almost +// only issue is output check section with weird code gen #ifdef NONMATCHING void main01(void) { mDoMch_Create__Fv(); @@ -708,18 +590,18 @@ void main01(void) { } JUTConsole* console = JFWSystem::getSystemConsole(); - u32 output = JUTConsole::OUTPUT_OSREPORT | JUTConsole::OUTPUT_CONSOLE; + s32 output = 0; if (data_80450580 != 0) { - data_80450580 = JUTConsole::OUTPUT_NONE; + output = JUTConsole::OUTPUT_OSREPORT | JUTConsole::OUTPUT_CONSOLE; } - console->setOutput(output); + console->setOutput(output); console->setPosition(32, 42); mDoDvdThd_callback_c::create(LOAD_COPYDATE, NULL); fapGm_Create__Fv(); fopAcM_initManager__Fv(); - struct_80450B18[0] = 0; + struct_80450B18 = 0; cDyl_InitAsync__Fv(); g_mDoAud_audioHeap = JKRSolidHeap::create(0x14D800, JKRHeap::getCurrentHeap(), false); @@ -761,7 +643,7 @@ static OSThread mainThread; /* 80006454-800065D8 000D94 0184+00 0/0 1/1 0/0 .text main */ void main() { OSThread* current_thread = OSGetCurrentThread(); - u8* stack = &mainThreadStack[0]; + u8* stack = mainThreadStack; mDoMain::sPowerOnTime = OSGetTime(); OSReportInit(); version_check(); @@ -795,7 +677,7 @@ void main() { data_80450580 = 1; } else if (disk_id->game_version > 0x80) { u32 consoleType = OSGetConsoleType(); - data_80450580 = (consoleType >> 0x1c) & 1; + data_80450580 = (consoleType >> 0x1C) & 1; } else { data_80450580 = 0; } |
