// // Generated By: dol2asm // Translation Unit: d/s/d_s_play // #include "d/s/d_s_play.h" #include "JSystem/JUtility/JUTConsole.h" #include "JSystem/JUtility/JUTGamePad.h" #include "SSystem/SComponent/c_counter.h" #include "d/a/d_a_player.h" #include "d/d_demo.h" #include "d/d_item.h" #include "d/d_model.h" #include "d/d_procname.h" #include "d/msg/d_msg_object.h" #include "d/save/d_save_HIO.h" #include "dol2asm.h" #include "dolphin/types.h" #include "f_op/f_op_actor_mng.h" #include "f_op/f_op_draw_iter.h" #include "f_op/f_op_msg_mng.h" #include "f_op/f_op_overlap_mng.h" #include "f_op/f_op_scene_mng.h" #include "m_Do/m_Do_Reset.h" #include "m_Do/m_Do_audio.h" #include "m_Do/m_Do_graphic.h" #include "d/d_eye_hl.h" // // Types: // struct daSus_c { /* 800313BC */ void reset(); /* 800315A4 */ static void execute(); }; struct cDylPhs { /* 8001884C */ void Link(request_of_phase_process_class*, s16); /* 80018890 */ void Unlink(request_of_phase_process_class*, s16); }; // // Forward References: // extern "C" void calcPauseTimer__9dScnPly_cFv(); extern "C" void __ct__22dScnPly_env_otherHIO_cFv(); extern "C" void __ct__22dScnPly_env_debugHIO_cFv(); extern "C" static void dScnPly_Draw__FP9dScnPly_c(); extern "C" static void dScnPly_Execute__FP9dScnPly_c(); extern "C" static void dScnPly_IsDelete__F9dScnPly_c(); extern "C" static void dScnPly_Delete__FP9dScnPly_c(); extern "C" void resetGame__9dScnPly_cFv(); extern "C" void offReset__9dScnPly_cFv(); extern "C" static void phase_00__FP9dScnPly_c(); extern "C" static void phase_01__FP9dScnPly_c(); extern "C" static s32 phase_0__FP9dScnPly_c(); extern "C" static void phase_1__FP9dScnPly_c(); extern "C" static void phase_1_0__FP9dScnPly_c(); extern "C" static void phase_2__FP9dScnPly_c(); extern "C" static void phase_3__FP9dScnPly_c(); extern "C" static void phase_4__FP9dScnPly_c(); extern "C" static void phase_5__FP9dScnPly_c(); extern "C" static void phase_6__FP9dScnPly_c(); extern "C" static s32 phase_compleate__FPv(); extern "C" static void dScnPly_Create__FP11scene_class(); extern "C" void __dt__22dScnPly_env_debugHIO_cFv(); extern "C" void __dt__22dScnPly_env_otherHIO_cFv(); extern "C" void __sinit_d_s_play_cpp(); extern "C" void __dt__17dScnPly_env_HIO_cFv(); extern "C" void __dt__17dScnPly_reg_HIO_cFv(); extern "C" void __dt__21dScnPly_preLoad_HIO_cFv(); extern "C" extern char const* const d_s_d_s_play__stringBase0; // // External References: // extern "C" void mDoAud_setSceneName__FPCcll(); extern "C" void mDoAud_load1stDynamicWave__Fv(); extern "C" void mDoAud_resetRecover__Fv(); extern "C" void remove__Q213mDoGph_gInf_c7bloom_cFv(); extern "C" void mDoRst_resetCallBack__FiPv(); extern "C" void Link__7cDylPhsFP30request_of_phase_process_classs(); extern "C" void Unlink__7cDylPhsFP30request_of_phase_process_classs(); extern "C" void fopAcM_create__FsUlPC4cXyziPC5csXyzPC4cXyzSc(); extern "C" void fopOvlpM_IsPeek__Fv(); extern "C" void fopScnM_ChangeReq__FP11scene_classssUs(); extern "C" void fopMsgM_createExpHeap__FUlP7JKRHeap(); extern "C" void fopMsgM_destroyExpHeap__FP10JKRExpHeap(); extern "C" void fopDwIt_Begin__Fv(); extern "C" void fopDwIt_Next__FP16create_tag_class(); extern "C" void fpcM_Draw__FPv(); extern "C" void resetArchiveBank__20dStage_roomControl_cFi(); extern "C" void dStage_stagInfo_GetParticleNo__FP21stage_stag_info_classi(); extern "C" void dStage_infoCreate__Fv(); extern "C" void dStage_Create__Fv(); extern "C" void dStage_Delete__Fv(); extern "C" void init__14dComIfG_play_cFv(); extern "C" void setStartStage__14dComIfG_play_cFP19dStage_startStage_c(); extern "C" void getLayerNo_common_common__14dComIfG_play_cFPCcii(); extern "C" void getLayerNo_common__14dComIfG_play_cFPCcii(); extern "C" void getLayerNo__14dComIfG_play_cFi(); extern "C" void createSimpleModel__14dComIfG_play_cFv(); extern "C" void deleteSimpleModel__14dComIfG_play_cFv(); extern "C" void dComIfG_resetToOpening__FP11scene_class(); extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); extern "C" void dComIfGs_BossLife_public_Set__FSc(); extern "C" void dComIfGp_calcNowRegion__Fv(); extern "C" void dComIfGp_world_dark_set__FUc(); extern "C" void dComLbG_PhaseHandler__FP30request_of_phase_process_classPPFPv_iPv(); extern "C" void reset__7daSus_cFv(); extern "C" void execute__7daSus_cFv(); extern "C" void onDarkClearLV__21dSv_player_status_b_cFi(); extern "C" void onTransformLV__21dSv_player_status_b_cFi(); extern "C" void setItem__17dSv_player_item_cFiUc(); extern "C" void onFirstBit__21dSv_player_get_item_cFUc(); extern "C" void onEventBit__11dSv_event_cFUs(); extern "C" void onSwitch__12dSv_danBit_cFi(); extern "C" void init__10dSv_info_cFv(); extern "C" void create__7dDemo_cFv(); extern "C" void remove__7dDemo_cFv(); extern "C" void update__7dDemo_cFv(); extern "C" void setRes__14dRes_control_cFPCcP11dRes_info_ciPCcUcP7JKRHeap(); extern "C" void syncRes__14dRes_control_cFPCcP11dRes_info_ci(); extern "C" void syncAllRes__14dRes_control_cFP11dRes_info_ci(); extern "C" void setStageRes__14dRes_control_cFPCcP7JKRHeap(); extern "C" void create__8dMpath_cFv(); extern "C" void remove__8dMpath_cFv(); extern "C" void Step__14dEvt_control_cFv(); extern "C" void remove__14dEvt_control_cFv(); extern "C" void readScene__13dPa_control_cFUcPP21mDoDvdThd_toMainRam_c(); extern "C" void createScene__13dPa_control_cFPCv(); extern "C" void removeScene__13dPa_control_cFb(); extern "C" void cleanup__13dPa_control_cFv(); extern "C" void calc3D__13dPa_control_cFv(); extern "C" void calc2D__13dPa_control_cFv(); extern "C" void setViewPort__14dDlst_window_cFffffff(); extern "C" void setScissor__14dDlst_window_cFffff(); extern "C" void Run__12dVibration_cFv(); extern "C" void Init__12dVibration_cFv(); extern "C" void Pause__12dVibration_cFv(); extern "C" void Remove__12dVibration_cFv(); extern "C" void __ct__12dAttention_cFP10fopAc_ac_cUl(); extern "C" void __dt__12dAttention_cFv(); extern "C" void Run__12dAttention_cFv(); extern "C" void Draw__12dAttention_cFv(); extern "C" void ClrMoveFlag__4dBgSFv(); extern "C" void Move__4dBgSFv(); extern "C" void Ct__4dCcSFv(); extern "C" void Dt__4dCcSFv(); extern "C" void Move__4dCcSFv(); extern "C" void Draw__4dCcSFv(); extern "C" void execItemGet__FUc(); extern "C" void create__7dTres_cFv(); extern "C" void remove__7dTres_cFv(); extern "C" void create__10dMdl_mng_cFv(); extern "C" void remove__10dMdl_mng_cFv(); extern "C" void reset__10dMdl_mng_cFv(); extern "C" void update__12dEyeHL_mng_cFv(); extern "C" void checkRoomRestartStart__9daPy_py_cFv(); extern "C" void dKy_getdaytime_hour__Fv(); extern "C" void dKy_getdaytime_minute__Fv(); extern "C" void dKy_itudemo_se__Fv(); extern "C" void dKy_get_dayofweek__Fv(); extern "C" void dKy_darkworld_check__Fv(); extern "C" void dKy_darkworld_stage_check__FPCci(); extern "C" void dKy_darkworld_spot_check__FPCci(); extern "C" void dKy_darkworld_Area_set__FPCci(); extern "C" void dMeter2Info_setCloth__FUcb(); extern "C" void dMeter2Info_setSword__FUcb(); extern "C" void dMeter2Info_setShield__FUcb(); extern "C" void readMessageGroup__12dMsgObject_cFPP25mDoDvdThd_mountXArchive_c(); extern "C" s8 func_80252E70(s8*); extern "C" void ClearPi__13cBgS_PolyInfoFv(); extern "C" void setInDarkness__10Z2SceneMgrFb(); extern "C" void check1stDynamicWave__10Z2SceneMgrFv(); extern "C" void load2ndDynamicWave__10Z2SceneMgrFv(); extern "C" void sceneBgmStart__10Z2SceneMgrFv(); extern "C" void __dl__FPv(); extern "C" void setMessageCount__12JUTAssertionFi(); extern "C" void __register_global_object(); extern "C" void _savegpr_26(); extern "C" void _savegpr_28(); extern "C" void _savegpr_29(); extern "C" void _restgpr_26(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); // extern "C" extern void* g_fopScn_Method[5 + 1 /* padding */]; // extern "C" extern void* g_fpcNd_Method[5 + 1 /* padding */]; extern "C" extern void* __vt__14mDoHIO_entry_c[3]; extern "C" u8 m_bloom__13mDoGph_gInf_c[20]; extern "C" u8 mLineCheck__11fopAcM_lc_c[112]; extern "C" u8 mGndCheck__11fopAcM_gc_c[84]; extern "C" u8 mRoofCheck__11fopAcM_rc_c[80]; extern "C" u8 mWaterCheck__11fopAcM_wt_c[84 + 4 /* padding */]; extern "C" extern dScnKy_env_light_c g_env_light; extern "C" extern dSvBit_HIO_c g_save_bit_HIO; extern "C" extern GXColor g_saftyWhiteColor; extern "C" u8 mFader__13mDoGph_gInf_c[4]; extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */]; extern "C" u8 mProcID__20dStage_roomControl_c[4]; extern "C" extern u8 struct_80450D8C[4]; extern "C" extern u8 mBgmSet__17mDoAud_zelAudio_c; extern "C" u8 m_emitter__8daYkgr_c[4]; extern "C" u8 sManager__10JFWDisplay[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" u8 mStatus__13dPa_control_c; // // Declarations: // /* ############################################################################################## */ /* 804510F8-80451100 0005F8 0008+00 2/2 0/0 0/0 .sbss resPhase */ static request_of_phase_process_class resPhase; /* 80451100-80451108 000600 0008+00 2/2 0/0 0/0 .sbss dylPhase */ static request_of_phase_process_class dylPhase; /* 80451108-8045110C 000608 0004+00 1/1 0/0 0/0 .sbss dylPreLoadTime1 */ static u8 dylPreLoadTime1[4]; /* 8045110C-80451110 00060C 0004+00 1/1 0/0 0/0 .sbss None */ static u8 data_8045110C[4]; /* 80451110-80451114 000610 0004+00 1/1 0/0 0/0 .sbss resPreLoadTime0 */ //static OSTime resPreLoadTime0; static u8 resPreLoadTime0[4]; /* 80451114-80451118 000614 0004+00 1/1 0/0 0/0 .sbss None */ static u8 data_80451114[4]; /* 80451118-8045111C 000618 0004+00 1/1 0/0 0/0 .sbss resPreLoadTime1 */ static u8 resPreLoadTime1[4]; /* 8045111C-80451120 00061C 0004+00 1/1 0/0 0/0 .sbss None */ static u8 data_8045111C[4]; /* 80451120-80451124 000620 0004+00 1/1 0/0 0/0 .sbss g_preLoadHIO */ static u8 g_preLoadHIO[4]; /* 80451124-80451128 -00001 0004+00 3/3 7/7 38/38 .sbss None */ /* 80451124 0001+00 data_80451124 None */ /* 80451125 0003+00 nextPauseTimer__9dScnPly_c None */ s8 dScnPly_c::pauseTimer; s8 dScnPly_c::nextPauseTimer; /* 80259400-80259440 253D40 0040+00 1/1 0/0 0/0 .text calcPauseTimer__9dScnPly_cFv */ s8 dScnPly_c::calcPauseTimer() { if (nextPauseTimer != 0) { pauseTimer = nextPauseTimer; nextPauseTimer = 0; return pauseTimer; } else { return func_80252E70(&pauseTimer); // cLib_calcTimer : 80252E70 } } /* ############################################################################################## */ /* 803C3158-803C3188 020278 002E+02 1/1 0/0 0/0 .data l_wipeType$4081 */ SECTION_DATA static s16 l_wipeType[23] = { 0x0000, 0x0000, 0x0011, 0x0002, 0x0002, 0x0001, 0x0003, 0x0001, 0x0004, 0x0004, 0x0005, 0x0005, 0x0006, 0x0007, 0x0000, 0x0000, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0008, 0x0008, }; /* 803C3188-803C3194 0202A8 000A+02 1/1 0/0 0/0 .data camparamarc$4608 */ SECTION_DATA static char camparamarc[10] = "CamParam"; /* 803C3194-803C31C0 -00001 002C+00 1/1 0/0 0/0 .data l_method$4860 */ SECTION_DATA static request_of_phase_process_fn l_method[11] = { (request_of_phase_process_fn)phase_00__FP9dScnPly_c, (request_of_phase_process_fn)phase_1__FP9dScnPly_c, (request_of_phase_process_fn)phase_1_0__FP9dScnPly_c, (request_of_phase_process_fn)phase_01__FP9dScnPly_c, (request_of_phase_process_fn)phase_0__FP9dScnPly_c, (request_of_phase_process_fn)phase_2__FP9dScnPly_c, (request_of_phase_process_fn)phase_3__FP9dScnPly_c, (request_of_phase_process_fn)phase_4__FP9dScnPly_c, (request_of_phase_process_fn)phase_5__FP9dScnPly_c, (request_of_phase_process_fn)phase_6__FP9dScnPly_c, (request_of_phase_process_fn)phase_compleate__FPv, }; /* 803C31C0-803C31D4 -00001 0014+00 2/0 0/0 0/0 .data l_dScnPly_Method */ SECTION_DATA static void* l_dScnPly_Method[5] = { (void*)dScnPly_Create__FP11scene_class, (void*)dScnPly_Delete__FP9dScnPly_c, (void*)dScnPly_Execute__FP9dScnPly_c, (void*)dScnPly_IsDelete__F9dScnPly_c, (void*)dScnPly_Draw__FP9dScnPly_c, }; /* 803C31D4-803C31FC -00001 0028+00 0/0 0/0 1/0 .data g_profile_PLAY_SCENE */ SECTION_DATA extern void* g_profile_PLAY_SCENE[10] = { (void*)NULL, (void*)0x0001FFFD, (void*)0x000B0000, (void*)&g_fpcNd_Method, (void*)0x000001D8, (void*)NULL, (void*)NULL, (void*)&g_fopScn_Method, (void*)&l_dScnPly_Method, (void*)NULL, }; /* 803C31FC-803C3224 -00001 0028+00 0/0 0/0 1/0 .data g_profile_OPENING_SCENE */ SECTION_DATA extern void* g_profile_OPENING_SCENE[10] = { (void*)NULL, (void*)0x0001FFFD, (void*)0x000C0000, (void*)&g_fpcNd_Method, (void*)0x000001D8, (void*)NULL, (void*)NULL, (void*)&g_fopScn_Method, (void*)&l_dScnPly_Method, (void*)NULL, }; /* 803C3224-803C3230 020344 000C+00 3/3 0/0 0/0 .data __vt__22dScnPly_env_debugHIO_c */ SECTION_DATA extern void* __vt__22dScnPly_env_debugHIO_c[3] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)__dt__22dScnPly_env_debugHIO_cFv, }; /* 803C3230-803C323C 020350 000C+00 3/3 0/0 0/0 .data __vt__22dScnPly_env_otherHIO_c */ SECTION_DATA extern void* __vt__22dScnPly_env_otherHIO_c[3] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)__dt__22dScnPly_env_otherHIO_cFv, }; /* 80454F18-80454F1C 003518 0002+02 1/0 0/0 0/0 .sdata2 T_JOINT_dylKeyTbl */ SECTION_SDATA2 static u16 T_JOINT_dylKeyTbl = { 0x0106, }; /* 80259440-80259468 253D80 0028+00 1/1 0/0 0/0 .text __ct__22dScnPly_env_otherHIO_cFv */ dScnPly_env_otherHIO_c::dScnPly_env_otherHIO_c() { mShadowDensity = 255.0f; mLODBias = 1; mDispTransCylinder = false; } /* ############################################################################################## */ /* 80454F20-80454F24 003520 0004+00 1/1 0/0 0/0 .sdata2 @4066 */ SECTION_SDATA2 static f32 lit_4066 = -100.0f; /* 80454F24-80454F28 003524 0004+00 1/1 0/0 0/0 .sdata2 @4067 */ SECTION_SDATA2 static f32 lit_4067 = 100.0f; /* 80454F28-80454F2C 003528 0004+00 2/2 0/0 0/0 .sdata2 @4068 */ SECTION_SDATA2 static u8 lit_4068[4] = { 0x00, 0x00, 0x00, 0x00, }; /* 80259468-802594AC 253DA8 0044+00 1/1 0/0 0/0 .text __ct__22dScnPly_env_debugHIO_cFv */ // matches with literals #ifdef NONMATCHING dScnPly_env_debugHIO_c::dScnPly_env_debugHIO_c() { mBoxCullMinSize.set(-100.0f, -100.0f, -100.0f); mBoxCullMaxSize.set(100.0f, 100.0f, 100.0f); mSphereCullCenter.set(0.0f, 0.0f, 0.0f); mSphereCullRadius = 100.0f; } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm dScnPly_env_debugHIO_c::dScnPly_env_debugHIO_c() { nofralloc #include "asm/d/s/d_s_play/__ct__22dScnPly_env_debugHIO_cFv.s" } #pragma pop #endif /* ############################################################################################## */ /* 80454F2C-80454F30 00352C 0004+00 1/1 0/0 0/0 .sdata2 @4100 */ SECTION_SDATA2 static u32 lit_4100 = 0x2A1E46FF; /* 802594AC-802597B8 253DEC 030C+00 1/0 0/0 0/0 .text dScnPly_Draw__FP9dScnPly_c */ // bool comparison issues #ifdef NONMATCHING static int dScnPly_Draw(dScnPly_c* scn) { dComIfG_Ccsp()->Move(); dComIfG_Bgsp().ClrMoveFlag(); u8 useWhiteColor; if (!fopOvlpM_IsPeek() && !dComIfG_resetToOpening(scn)) { if (dComIfGp_isEnableNextStage()) { u8 wipe = dComIfGp_getNextStageWipe(); fopScnM_ChangeReq(scn, 11, l_wipeType[wipe], 5); int hour = dKy_getdaytime_hour(); useWhiteColor = false; if (hour >= 6 && hour < 18) { useWhiteColor = true; } bool tmp = useWhiteColor == 0; if (wipe == 1 || wipe == 2 || wipe == 7 || wipe == 17 || wipe == 21 || ((wipe == 8 || wipe == 10 || wipe == 18) && tmp) || ((wipe == 9 || wipe == 11 || wipe == 19) && !tmp)) { mDoGph_gInf_c::setFadeColor(*(JUtility::TColor*)&g_saftyWhiteColor); } else if (wipe == 14 || wipe == 20) { GXColor color = {0x2A, 0x1E, 0x46, 0xFF}; if (dKy_darkworld_check()) { color.r = 0xFF; color.g = 0xCF; color.b = 0xB4; } mDoGph_gInf_c::setFadeColor(*(JUtility::TColor*)&color); } else { mDoGph_gInf_c::setFadeColor(*(JUtility::TColor*)&g_blackColor); } } } dMdl_mng_c::reset(); if (!dComIfGp_isPauseFlag() && dScnPly_c::pauseTimer == 0) { if (fpcM_GetName(scn) == PROC_PLAY_SCENE) { dComIfGp_getVibration().Run(); } daSus_c::execute(); dComIfG_Bgsp().Move(); dComIfGp_particle_calc3D(); dComIfGp_particle_calc2D(); cCt_execCounter(); } else { dPa_control_c::onStatus(1); if (dScnPly_c::pauseTimer == 0) { dPa_control_c::onStatus(2); if (dScnPly_c::pauseTimer == 0) { dComIfGp_getVibration().Pause(); } } } for (create_tag_class* i = fopDwIt_Begin(); i != NULL; i = fopDwIt_Next(i)) { fpcM_Draw(i->mpTagData); } if (!dComIfGp_isPauseFlag()) { dEyeHL_mng_c::update(); dComIfG_Ccsp()->Draw(); dComIfGp_getAttention().Draw(); } return 1; } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void dScnPly_Draw(dScnPly_c* param_0) { nofralloc #include "asm/d/s/d_s_play/dScnPly_Draw__FP9dScnPly_c.s" } #pragma pop #endif /* 802597B8-8025987C 2540F8 00C4+00 1/0 0/0 0/0 .text dScnPly_Execute__FP9dScnPly_c */ static int dScnPly_Execute(dScnPly_c* scnPly) { scnPly->offReset(); dStage_roomControl_c::offNoChangeRoom(); dStage_roomControl_c::setRoomReadId(0xFF); if (!fopOvlpM_IsPeek()) { if (mDoAud_zelAudio_c::isBgmSet()) { mDoAud_sceneBgmStart(); mDoAud_load2ndDynamicWave(); mDoAud_zelAudio_c::offBgmSet(); } if (scnPly->calcPauseTimer() != 0) { return 1; } } dKy_itudemo_se(); if (!dComIfGp_isPauseFlag()) { dDemo_c::update(); i_dComIfGp_getEvent().Step(); dComIfGp_getAttention().Run(); } return 1; } /* 8025987C-802598AC 2541BC 0030+00 1/0 0/0 0/0 .text dScnPly_IsDelete__F9dScnPly_c */ static int dScnPly_IsDelete(dScnPly_c scnPly) { dComIfGp_particle_cleanup(); return 1; } /* ############################################################################################## */ /* 8039A2DF-8039A2E7 02693F 0008+00 1/0 0/0 0/0 .rodata None */ extern "C" char const* const stringBase_8039A2DF; /* 80450760-80450764 -00001 0004+00 1/0 0/0 0/0 .sdata T_JOINT_resName */ extern "C" const char* T_JOINT_resName; /* 80454F18-80454F1C 003518 0002+02 1/0 0/0 0/0 .sdata2 T_JOINT_dylKeyTbl */ extern "C" u16 T_JOINT_dylKeyTbl; /* 8039A2C8-8039A2D8 -00001 0010+00 4/4 0/0 0/0 .rodata PreLoadInfoT */ SECTION_RODATA static void* const PreLoadInfoT[4] = { (void*)(((char*)&d_s_d_s_play__stringBase0) + 0x7), &T_JOINT_dylKeyTbl, &T_JOINT_resName, (void*)0x01010000, }; COMPILER_STRIP_GATE(0x8039A2C8, &PreLoadInfoT); /* 8039A2D8-8039A2D8 026938 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ #pragma push #pragma force_active on SECTION_DEAD static char const* const stringBase_8039A2D8 = "Always"; SECTION_DEAD static char const* const stringBase_8039A2DF = "T_JOINT"; #pragma pop /* 80450760-80450764 -00001 0004+00 1/0 0/0 0/0 .sdata T_JOINT_resName */ SECTION_SDATA static const char* T_JOINT_resName = "Always"; /* 80450764-80450768 -00001 0004+00 4/4 0/0 0/0 .sdata None */ SECTION_SDATA static s8 preLoadNo = 0xFF; #pragma push #pragma force_active on SECTION_SDATA static u8 doPreLoad = 1; #pragma pop /* 802598AC-80259AC4 2541EC 0218+00 1/0 0/0 0/0 .text dScnPly_Delete__FP9dScnPly_c */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void dScnPly_Delete(dScnPly_c* param_0) { nofralloc #include "asm/d/s/d_s_play/dScnPly_Delete__FP9dScnPly_c.s" } #pragma pop /* 80259AC4-80259BFC 254404 0138+00 1/1 0/0 0/0 .text resetGame__9dScnPly_cFv */ bool dScnPly_c::resetGame() { if (fpcM_GetName(this) == PROC_OPENING_SCENE) { if (!dStage_roomControl_c::resetArchiveBank(0)) { return false; } if (!mDoAud_resetRecover()) { return false; } if (mDoRst::isReset()) { field_0x1d4 = 1; } } else { if (dComIfGp_getNextStagePoint() == -4 || (dComIfGs_getLastSceneMode() & 0xF) == 0xC || !strcmp(dComIfGp_getNextStageName(), "F_SP109") || (!strcmp(dComIfGp_getNextStageName(), "F_SP116") && dComIfGp_getNextStageRoomNo() == 1 && dComIfGp_getNextStageLayer() == 9)) { if (!dStage_roomControl_c::resetArchiveBank(0)) { return false; } } } dComIfG_setBrightness(255); mDoGph_gInf_c::offFade(); dDlst_list_c::offWipe(); return true; } /* 80259BFC-80259C70 25453C 0074+00 1/1 0/0 0/0 .text offReset__9dScnPly_cFv */ void dScnPly_c::offReset() { if (field_0x1d4 != 0 && !fopOvlpM_IsPeek()) { mDoRst::offReset(); mDoRst::offResetPrepare(); JUTGamePad::C3ButtonReset::sResetOccurred = false; JUTGamePad::setResetCallback(mDoRst_resetCallBack, NULL); field_0x1d4 = 0; } } /* 80259C70-80259CAC 2545B0 003C+00 1/0 0/0 0/0 .text phase_00__FP9dScnPly_c */ static int phase_00(dScnPly_c* scn) { if (!scn->resetGame()) { return cPhs_ZERO_e; } else { mDoGph_gInf_c::offBlure(); return cPhs_TWO_e; } } /* 80259CAC-80259D7C 2545EC 00D0+00 1/0 0/0 0/0 .text phase_01__FP9dScnPly_c */ static int phase_01(dScnPly_c* scn) { mDoAud_setHour(dKy_getdaytime_hour()); mDoAud_setMinute(dKy_getdaytime_minute()); mDoAud_setWeekday(dKy_get_dayofweek()); if (dKy_darkworld_check()) { mDoAud_setInDarkness(true); } else { mDoAud_setInDarkness(false); } s8 start_room = dComIfGp_getStartStageRoomNo(); int layer = dComIfG_play_c::getLayerNo_common(dComIfGp_getStartStageName(), start_room, dComIfGp_getStartStageLayer()); mDoAud_setSceneName(dComIfGp_getStartStageName(), start_room, layer); if (!mDoAud_load1stDynamicWave()) { return cPhs_ZERO_e; } else { return cPhs_TWO_e; } } /* 80259D7C-80259D84 2546BC 0008+00 1/0 0/0 0/0 .text phase_0__FP9dScnPly_c */ static int phase_0(dScnPly_c* param_0) { return cPhs_TWO_e; } /* 80259D84-8025A438 2546C4 06B4+00 1/0 0/0 0/0 .text phase_1__FP9dScnPly_c */ static int phase_1(dScnPly_c* scn) { u32 id = fopScnM_GetID(scn); dStage_roomControl_c::setProcID(id); dComIfGp_setStartStage(dComIfGp_getNextStartStage()); if (dComIfGp_getStartStageLayer() < 0 && daPy_py_c::checkRoomRestartStart()) { const char* stage = dComIfGp_getStartStageName(); s8 room = dComIfGp_getStartStageRoomNo(); s8 layer = dComIfGp_getStartStageLayer(); if (dComIfG_play_c::getLayerNo_common_common(stage, room, layer) < 0) { dComIfGp_setStartStageLayer(dComIfGp_getLayerOld()); } } dComIfGp_offEnableNextStage(); // Stage: Faron Woods, Room: Faron Spring if (!strcmp(dComIfGp_getStartStageName(), "F_SP108") && dComIfGp_getStartStageRoomNo() == 1 && dComIfGp_getStartStagePoint() == 3) { dComIfGs_onDarkClearLV(0); execItemGet(WEAR_KOKIRI); } // Stage: Kakariko Village, Room: Kakariko Village else if (!strcmp(dComIfGp_getStartStageName(), "F_SP109") && dComIfGp_getStartStageRoomNo() == 0 && dComIfGp_getStartStagePoint() == 30) { dComIfGs_onDarkClearLV(1); } // Stage: Lake Hylia, Room: Fountain else if (!strcmp(dComIfGp_getStartStageName(), "F_SP115") && dComIfGp_getStartStageRoomNo() == 1 && dComIfGp_getStartStagePoint() == 20) { dComIfGs_onDarkClearLV(2); } // Stage: Sacred Grove, Room: Lost Woods else if (!strcmp(dComIfGp_getStartStageName(), "F_SP117") && dComIfGp_getStartStageRoomNo() == 1 && dComIfGp_getStartStagePoint() == 99) { dComIfGs_onDarkClearLV(3); } // Stage: Ordon Spring, Room: Ordon Spring if (!strcmp(dComIfGp_getStartStageName(), "F_SP104") && dComIfGp_getStartStageRoomNo() == 1 && dComIfGp_getStartStagePoint() == 23 && dComIfGp_getStartStageLayer() == 12) { dComIfGs_onItemFirstBit(HORSE_FLUTE); dComIfGs_setItem(SLOT_21, HORSE_FLUTE); } if ((u8)dKy_darkworld_stage_check(dComIfGp_getStartStageName(), dComIfGp_getStartStageRoomNo()) == true) { dComIfGp_world_dark_set(1); } else if ((u8)dKy_darkworld_spot_check(dComIfGp_getStartStageName(), dComIfGp_getStartStageRoomNo()) == true) { dComIfGp_world_dark_set(2); } else { dComIfGp_world_dark_set(0); } // Stage: Lake Hylia, Room: Fountain if (!strcmp(dComIfGp_getStartStageName(), "F_SP115") && dComIfGp_getStartStageRoomNo() == 1 && dComIfGp_getStartStageLayer() < 0) { const char* stage = dComIfGp_getStartStageName(); s8 room = dComIfGp_getStartStageRoomNo(); s8 layer = dComIfGp_getStartStageLayer(); if (dComIfG_play_c::getLayerNo_common(stage, room, layer) == 9) { dComIfGp_setStartStageLayer(9); } } // Stage: Faron Woods, Room: South Faron // Stage: Faron Woods Cave // Stage: Kakariko Village, Room: Kakariko Village // Stage: Lake Hylia, Room: Fountain if ((!strcmp(dComIfGp_getStartStageName(), "F_SP108") && dComIfGp_getStartStageRoomNo() == 0 && dComIfGp_getStartStageLayer() == 7) || (!strcmp(dComIfGp_getStartStageName(), "D_SB10") && dComIfG_play_c::getLayerNo(0) == 14) || (!strcmp(dComIfGp_getStartStageName(), "F_SP109") && dComIfGp_getStartStageRoomNo() == 0 && dComIfGp_getStartStageLayer() == 8) || (!strcmp(dComIfGp_getStartStageName(), "F_SP115") && dComIfGp_getStartStageRoomNo() == 1 && dComIfGp_getStartStageLayer() == 8) || (!strcmp(dComIfGp_getStartStageName(), "F_SP115") && dComIfGp_getStartStageRoomNo() == 1 && dComIfGp_getStartStageLayer() == 9)) { dComIfGp_world_dark_set(1); } // Stage: Zant Boss Fight, Room: Throne Room if (!strcmp(dComIfGp_getStartStageName(), "D_MN08D") && dComIfGp_getStartStageRoomNo() == 50 && dComIfGp_getStartStagePoint() == 20) { dComIfGs_onSaveDunSwitch(30); } dKy_darkworld_Area_set(dComIfGp_getStartStageName(), dComIfGp_getStartStageRoomNo()); // Stage: Hyrule Castle Sewers, Room: Prison Cell if (!strcmp(dComIfGp_getStartStageName(), "R_SP107") && dComIfGp_getStartStageRoomNo() == 0 && (dComIfGp_getStartStagePoint() == 24 || dComIfGp_getStartStagePoint() == 0)) { dComIfGs_onTransformLV(0); } // Stage: Hyrule Field, Room: Eldin Gorge south entrance else if (!strcmp(dComIfGp_getStartStageName(), "F_SP121") && dComIfGp_getStartStageRoomNo() == 2 && dComIfGp_getStartStagePoint() == 10) { dComIfGs_onTransformLV(1); } // Stage: Hyrule Field, Room: Lanayru Field north entrance else if (!strcmp(dComIfGp_getStartStageName(), "F_SP121") && dComIfGp_getStartStageRoomNo() == 9 && dComIfGp_getStartStagePoint() == 10) { dComIfGs_onTransformLV(2); } // Stage: Hyrule Field, Room: Lanayru Field else if (!strcmp(dComIfGp_getStartStageName(), "F_SP121") && dComIfGp_getStartStageRoomNo() == 10 && (dComIfGp_getStartStagePoint() == 23 || dComIfGp_getStartStagePoint() == 20)) { dComIfGs_onTransformLV(3); } // Stage: Fishing Pond, Room: Fishing Pond if (!strcmp(dComIfGp_getStartStageName(), "F_SP127") && dComIfGp_getStartStageRoomNo() == 0 && dComIfGp_getStartStagePoint() == 2) { g_env_light.field_0x12fe++; if (g_env_light.field_0x12fe > 4) { g_env_light.field_0x12fe = 1; } } dComIfGs_BossLife_public_Set(0xFF); g_env_light.field_0x1308 = 0; JUTReportConsole_f("Start StageName:RoomNo [%s:%d]\n", dComIfGp_getStartStageName(), dComIfGp_getStartStageRoomNo()); dComIfGp_setStatus(0); if (dComIfG_syncStageRes("Stg_00") < 0) { dComIfG_setStageRes("Stg_00", NULL); } return cPhs_TWO_e; } /* 8025A438-8025A4F8 254D78 00C0+00 1/0 0/0 0/0 .text phase_1_0__FP9dScnPly_c */ static int phase_1_0(dScnPly_c* param_0) { if (dComIfG_syncStageRes("Stg_00")) { return cPhs_ZERO_e; } else { dStage_infoCreate(); dComIfG_setObjectRes("Event", (u8)0, NULL); dComIfGp_setCameraParamFileName(0, camparamarc); dComIfG_setObjectRes("CamParam", (u8)0, NULL); return cPhs_TWO_e; } } /* 8025A4F8-8025A5D4 254E38 00DC+00 1/0 0/0 0/0 .text phase_2__FP9dScnPly_c */ // extra mr #ifdef NONMATCHING static int phase_2(dScnPly_c* scn) { int tmp = dComIfG_syncAllObjectRes(); if (tmp >= 0 && tmp != 0) { return cPhs_ZERO_e; } int layer = dComIfG_play_c::getLayerNo(0); stage_stag_info_class* stag_info = i_dComIfGp_getStage()->getStagInfo(); u8 particle_no = dStage_stagInfo_GetParticleNo(stag_info, layer); if (particle_no == 255) { particle_no = dStage_stagInfo_GetParticleNo(i_dComIfGp_getStage()->getStagInfo()); } dComIfGp_particle_readScene(particle_no, &scn->sceneCommand); dMsgObject_readMessageGroup(&scn->field_0x1d0); return cPhs_TWO_e; } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm int phase_2(dScnPly_c* param_0) { nofralloc #include "asm/d/s/d_s_play/phase_2__FP9dScnPly_c.s" } #pragma pop #endif /* 8025A5D4-8025A654 254F14 0080+00 1/0 0/0 0/0 .text phase_3__FP9dScnPly_c */ static int phase_3(dScnPly_c* scn) { if ((scn->sceneCommand != NULL && !scn->sceneCommand->sync()) || mDoAud_check1stDynamicWave()) { return cPhs_ZERO_e; } else if (!scn->field_0x1d0 == NULL && !scn->field_0x1d0->sync()) { return cPhs_ZERO_e; } else { return cPhs_TWO_e; } } /* ############################################################################################## */ /* 80430778-80430784 05D498 000C+00 1/1 0/0 0/0 .bss @4041 */ static u8 lit_4041[12]; /* 80430784-80430790 05D4A4 000C+00 0/1 0/0 0/0 .bss @4049 */ #pragma push #pragma force_active on static u8 lit_4049[12]; #pragma pop /* 80430790-8043079C 05D4B0 000C+00 0/1 0/0 0/0 .bss @4050 */ #pragma push #pragma force_active on static u8 lit_4050[12]; #pragma pop /* 8043079C-804307E0 05D4BC 0044+00 1/2 3/3 0/0 .bss g_envHIO */ u8 g_envHIO[68]; /* 80454F30-80454F34 003530 0004+00 1/1 0/0 0/0 .sdata2 @4804 */ SECTION_SDATA2 static f32 lit_4804 = 608.0f; /* 80454F34-80454F38 003534 0004+00 1/1 0/0 0/0 .sdata2 @4805 */ SECTION_SDATA2 static f32 lit_4805 = 448.0f; /* 80454F38-80454F40 003538 0004+04 1/1 0/0 0/0 .sdata2 @4806 */ SECTION_SDATA2 static f32 lit_4806[1 + 1 /* padding */] = { 1.0f, /* padding */ 0.0f, }; class daYkgr_c { public: static void init() { m_emitter = 0; m_flag = false; m_alpha_flag = true; m_alpha = 255; } static u32 m_emitter; static bool m_flag; static bool m_alpha_flag; static u8 m_alpha; }; /* 8025A654-8025A9F4 254F94 03A0+00 1/0 0/0 0/0 .text phase_4__FP9dScnPly_c */ #ifdef NONMATCHING static int phase_4(dScnPly_c* i_this) { if (i_this->sceneCommand) { dComIfGp_particle_createScene(i_this->sceneCommand->getMemAddress()); i_this->sceneCommand->destroy(); } else { dComIfGp_particle_createScene(NULL); } if (i_this->field_0x1d0 != NULL) { dComIfGp_setMsgDtArchive(1, i_this->field_0x1d0->getArchive()); i_this->field_0x1d0->destroy(); } dComIfGp_calcNowRegion(); dComIfG_Bgsp().Ct(); fopAcM_lc_c::getLineCheck()->ClearPi(); fopAcM_gc_c::getGroundCheck()->ClearPi(); fopAcM_rc_c::getRoofCheck()->ClearPi(); fopAcM_wt_c::getWaterCheck()->ClearPi(); dComIfG_Ccsp()->Ct(); dDemo_c::create(); dComIfGp_setPlayerInfo(0, NULL, 0); for (int i = 0; i < 2; i++) { dComIfGp_setPlayerPtr(i, NULL); } dComIfGp_setWindow(0, 0.0f, 0.0f, 608.0f, 448.0f, 0.0f, 1.0f, 0, 2); dComIfGp_setCameraInfo(0, NULL, 0, 0, -1); dComIfGd_setWindow(NULL); dComIfGd_setViewport(NULL); dComIfGd_setView(NULL); dComIfGp_setExpHeap2D(fopMsgM_createExpHeap(0xBB800, NULL)); dComIfGp_setMsgExpHeap(fopMsgM_createExpHeap(0xA800, NULL)); if (fpcM_GetName(i_this) == PROC_OPENING_SCENE) { fopAcM_create(PROC_TITLE, 0, NULL, -1, NULL, NULL, -1); dComIfGs_init(); dComIfGs_setOptPointer(0); dComIfGs_setLife(12); dMeter2Info_setCloth(WEAR_KOKIRI, false); dMeter2Info_setSword(SWORD, false); dMeter2Info_setShield(HYLIA_SHIELD, false); dComIfGs_onEventBit(0x0601); // Epona Tamed } dMpath_c::create(); dTres_c::create(); dStage_Create(); dComIfGp_createSimpleModel(); dMdl_mng_c::create(); mDoGph_gInf_c::setTickRate((OS_BUS_CLOCK / 4) / 30); g_envHIO[4] = -1; g_save_bit_HIO.field_0x4 = -1; new (&dComIfGp_getAttention()) dAttention_c(dComIfGp_getPlayer(0), 0); dComIfGp_getVibration().Init(); daYkgr_c::init(); dComIfG_setBrightness(255); mDoGph_gInf_c::offFade(); mDoAud_zelAudio_c::onBgmSet(); dScnPly_c::pauseTimer = 0; dScnPly_c::nextPauseTimer = 0; preLoadNo = -1; if (doPreLoad != 0 && !strcmp(dComIfGp_getStartStageName(), (char*)PreLoadInfoT[0])) { preLoadNo = 0; } if (preLoadNo < 0) { return cPhs_COMPLEATE_e; } resPreLoadTime0 = OSGetTime(); return cPhs_TWO_e; } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void phase_4(dScnPly_c* param_0) { nofralloc #include "asm/d/s/d_s_play/phase_4__FP9dScnPly_c.s" } #pragma pop #endif /* 8025A9F4-8025AAC0 255334 00CC+00 1/0 0/0 0/0 .text phase_5__FP9dScnPly_c */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void phase_5(dScnPly_c* param_0) { nofralloc #include "asm/d/s/d_s_play/phase_5__FP9dScnPly_c.s" } #pragma pop /* 8025AAC0-8025AB8C 255400 00CC+00 1/0 0/0 0/0 .text phase_6__FP9dScnPly_c */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void phase_6(dScnPly_c* param_0) { nofralloc #include "asm/d/s/d_s_play/phase_6__FP9dScnPly_c.s" } #pragma pop /* 8025AB8C-8025AB94 2554CC 0008+00 1/0 0/0 0/0 .text phase_compleate__FPv */ static int phase_compleate(void* param_0) { return cPhs_COMPLEATE_e; } /* 8025AB94-8025ABC4 2554D4 0030+00 1/0 0/0 0/0 .text dScnPly_Create__FP11scene_class */ #ifdef NONMATCHING static void dScnPly_Create(scene_class* scn) { dComLbG_PhaseHandler(&scn->field_0x1c4, l_method[0], scn); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void dScnPly_Create(scene_class* param_0) { nofralloc #include "asm/d/s/d_s_play/dScnPly_Create__FP11scene_class.s" } #pragma pop #endif /* 8025ABC4-8025AC0C 255504 0048+00 1/0 0/0 0/0 .text __dt__22dScnPly_env_debugHIO_cFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off // asm dScnPly_env_debugHIO_c::~dScnPly_env_debugHIO_c() { extern "C" asm void __dt__22dScnPly_env_debugHIO_cFv() { nofralloc #include "asm/d/s/d_s_play/__dt__22dScnPly_env_debugHIO_cFv.s" } #pragma pop /* 8025AC0C-8025AC54 25554C 0048+00 1/0 0/0 0/0 .text __dt__22dScnPly_env_otherHIO_cFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off // asm dScnPly_env_otherHIO_c::~dScnPly_env_otherHIO_c() { extern "C" asm void __dt__22dScnPly_env_otherHIO_cFv() { nofralloc #include "asm/d/s/d_s_play/__dt__22dScnPly_env_otherHIO_cFv.s" } #pragma pop /* ############################################################################################## */ /* 803C323C-803C3248 02035C 000C+00 2/2 0/0 0/0 .data __vt__17dScnPly_env_HIO_c */ SECTION_DATA extern void* __vt__17dScnPly_env_HIO_c[3] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)__dt__17dScnPly_env_HIO_cFv, }; /* 803C3248-803C3254 020368 000C+00 2/2 0/0 0/0 .data __vt__17dScnPly_reg_HIO_c */ SECTION_DATA extern void* __vt__17dScnPly_reg_HIO_c[3] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)__dt__17dScnPly_reg_HIO_cFv, }; /* 803C3254-803C3260 020374 000C+00 2/2 0/0 0/0 .data __vt__21dScnPly_preLoad_HIO_c */ SECTION_DATA extern void* __vt__21dScnPly_preLoad_HIO_c[3] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)__dt__21dScnPly_preLoad_HIO_cFv, }; /* 80451128-80451130 000628 0004+04 1/1 0/0 0/0 .sbss g_regHIO */ static u8 g_regHIO[4 + 4 /* padding */]; /* 8025AC54-8025AD04 255594 00B0+00 0/0 1/0 0/0 .text __sinit_d_s_play_cpp */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void __sinit_d_s_play_cpp() { nofralloc #include "asm/d/s/d_s_play/__sinit_d_s_play_cpp.s" } #pragma pop #pragma push #pragma force_active on REGISTER_CTORS(0x8025AC54, __sinit_d_s_play_cpp); #pragma pop /* 8025AD04-8025AD78 255644 0074+00 2/1 0/0 0/0 .text __dt__17dScnPly_env_HIO_cFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off // asm dScnPly_env_HIO_c::~dScnPly_env_HIO_c() { extern "C" asm void __dt__17dScnPly_env_HIO_cFv() { nofralloc #include "asm/d/s/d_s_play/__dt__17dScnPly_env_HIO_cFv.s" } #pragma pop /* 8025AD78-8025ADC0 2556B8 0048+00 2/1 0/0 0/0 .text __dt__17dScnPly_reg_HIO_cFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off // asm dScnPly_reg_HIO_c::~dScnPly_reg_HIO_c() { extern "C" asm void __dt__17dScnPly_reg_HIO_cFv() { nofralloc #include "asm/d/s/d_s_play/__dt__17dScnPly_reg_HIO_cFv.s" } #pragma pop /* 8025ADC0-8025AE1C 255700 005C+00 2/1 0/0 0/0 .text __dt__21dScnPly_preLoad_HIO_cFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off // asm dScnPly_preLoad_HIO_c::~dScnPly_preLoad_HIO_c() { extern "C" asm void __dt__21dScnPly_preLoad_HIO_cFv() { nofralloc #include "asm/d/s/d_s_play/__dt__21dScnPly_preLoad_HIO_cFv.s" } #pragma pop /* 8039A2D8-8039A2D8 026938 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */