From 098873f9fab6dec729e500950e07f6ad4aaf414c Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Mon, 22 Jan 2024 01:28:14 -0500 Subject: [PATCH] d_s_play data matches --- include/d/actor/d_a_dai.h | 4 +- include/d/actor/d_a_npc_kg2.h | 2 +- include/d/actor/d_a_salvage.h | 4 +- include/d/d_com_inf_game.h | 2 +- include/d/d_s_play.h | 2 +- include/m_Do/m_Do_graphic.h | 4 +- src/d/d_s_play.cpp | 743 ++++++++++++++++++++++++++++++++-- 7 files changed, 716 insertions(+), 45 deletions(-) diff --git a/include/d/actor/d_a_dai.h b/include/d/actor/d_a_dai.h index 1e072a971..2a305815f 100644 --- a/include/d/actor/d_a_dai.h +++ b/include/d/actor/d_a_dai.h @@ -33,8 +33,8 @@ public: static void getMaxDaiza(); static void getDaizaSetItemNum(); - static u32 mNowDaizaNum; - static u32 mNowItemNum; + static s8 mNowDaizaNum; + static s8 mNowItemNum; static const u16 m_savelabel[]; public: diff --git a/include/d/actor/d_a_npc_kg2.h b/include/d/actor/d_a_npc_kg2.h index 35f27965b..7fff18548 100644 --- a/include/d/actor/d_a_npc_kg2.h +++ b/include/d/actor/d_a_npc_kg2.h @@ -47,7 +47,7 @@ public: canon_game_result = 0; } - static s32 canon_game_result; + static s8 canon_game_result; public: /* Place member variables here */ diff --git a/include/d/actor/d_a_salvage.h b/include/d/actor/d_a_salvage.h index 5fc76dbde..270b14c4f 100644 --- a/include/d/actor/d_a_salvage.h +++ b/include/d/actor/d_a_salvage.h @@ -68,12 +68,12 @@ public: static void init_room(signed char); static void init() { - mNowRoomNo = 0xFF; + mNowRoomNo = -1; mTagData_p = NULL; mSalvageId = -1; } - static u8 mNowRoomNo; + static s8 mNowRoomNo; static daSalvage_control_c* mTagData_p; static s32 mSalvageId; static const u16 m_savelabel[]; diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index d687045c4..2d1e1ecb4 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -284,7 +284,7 @@ public: /* 0x00 */ camera_class* mpCamera; /* 0x04 */ u8 mDlstWindowIdx; /* 0x05 */ u8 mCamIdx; - /* 0x06 */ u8 field_0x06; + /* 0x06 */ s8 field_0x06; /* 0x07 */ u8 field_0x07; /* 0x08 */ u32 mCameraAttentionStatus; /* 0x0C */ f32 mCameraZoomScale; diff --git a/include/d/d_s_play.h b/include/d/d_s_play.h index 9630fb006..01c4c8eee 100644 --- a/include/d/d_s_play.h +++ b/include/d/d_s_play.h @@ -119,7 +119,7 @@ public: extern dScnPly_msg_HIO_c g_msgDHIO; -class dScnPly_preLoad_HIO_c : public JORReflexible { +class dScnPly_preLoad_HIO_c : public mDoHIO_entry_c { public: virtual ~dScnPly_preLoad_HIO_c() {} }; diff --git a/include/m_Do/m_Do_graphic.h b/include/m_Do/m_Do_graphic.h index 5e3bf2628..e5f38bfdb 100644 --- a/include/m_Do/m_Do_graphic.h +++ b/include/m_Do/m_Do_graphic.h @@ -66,8 +66,8 @@ public: static void setBlureMtx(const Mtx) {} static void setBlureRate(u8) {} static void setFrameRate(u16) {} - static void setMonotoneRate(s16) {} - static void setMonotoneRateSpeed(s16) {} + static void setMonotoneRate(s16 rate) { mMonotoneRate = rate; } + static void setMonotoneRateSpeed(s16 speed) { mMonotoneRateSpeed = speed; } static GXTexObj mFrameBufferTexObj; static GXTexObj mZbufferTexObj; diff --git a/src/d/d_s_play.cpp b/src/d/d_s_play.cpp index 40ff98164..84fd7516f 100644 --- a/src/d/d_s_play.cpp +++ b/src/d/d_s_play.cpp @@ -18,6 +18,7 @@ #include "d/actor/d_a_steam_tag.h" #include "d/actor/d_a_title.h" #include "d/actor/d_a_ykgr.h" +#include "d/actor/d_a_obj_tribox.h" #include "d/d_com_inf_game.h" #include "d/d_com_lib_game.h" #include "d/d_kankyo_rain.h" @@ -38,12 +39,18 @@ #include "printf.h" #include "string.h" -namespace daObjTribox { -class Act_c { -public: - static void reset(); +static Vec dummy_3569; + +static const int PRELOAD_RES_MAX = 0x23; +static const int PRELOAD_DYL_MAX = 0x1B; + +struct PreLoadInfoT_s { + char* stageName; + const s16* dylKeyTbl; + const char** resName; + u8 dylKeyTblNum; + u8 resNameNum; }; -}; // namespace daObjTribox s8 dScnPly_ply_c::pauseTimer; s8 dScnPly_ply_c::nextPauseTimer; @@ -175,7 +182,6 @@ void dScnPly_msg_HIO_c::dScnPly_msg_HIO_numUpdate(s16 i_addGroup, s16 i_addID) { } /* 80234830-80234AA8 .text dScnPly_msg_HIO_padCheck__17dScnPly_msg_HIO_cFv */ -// NONMATCHING - regswap void dScnPly_msg_HIO_c::dScnPly_msg_HIO_padCheck() { if (mIsUpdate) { if (CPad_CHECK_TRIG_Z(3)) { @@ -239,7 +245,8 @@ void dScnPly_msg_HIO_c::dScnPly_msg_HIO_messageProc() { if (field_0x06) { if (field_0x10 == fpcM_ERROR_PROCESS_ID_e) { u32 msg_num = (mGroup << 0x10) | mID; - cXyz sp10(0.0f, 0.0f, 0.0f); + cXyz sp10; + sp10.x = sp10.y = sp10.z = 0.0f; if (mGroup != 99 && mGroup != 98 && mGroup != 89) { msg_num = fopMsgM_searchMessageNumber(msg_num); @@ -264,6 +271,17 @@ void dScnPly_msg_HIO_c::dScnPly_msg_HIO_messageProc() { } } +static OSTime dylPreLoadTime1; +static OSTime resPreLoadTime0; +static OSTime resPreLoadTime1; + +static u8 number_of_resPhase[PRELOAD_RES_MAX]; +static u8 number_of_dylPhase[PRELOAD_DYL_MAX]; +static request_of_phase_process_class resPhase[PRELOAD_RES_MAX]; +static request_of_phase_process_class dylPhase[PRELOAD_DYL_MAX]; + +static dScnPly_preLoad_HIO_c g_preLoadHIO; + /* 80234B9C-80234FD0 .text dScnPly_Draw__FP13dScnPly_ply_c */ // NONMATCHING - close, just an issue with the wipe conditional int dScnPly_Draw(dScnPly_ply_c* i_this) { @@ -366,6 +384,644 @@ int dScnPly_Draw(dScnPly_ply_c* i_this) { return 1; } +const char* sea_resName[] = { + "Ship", + "Cloth", + "knob", + "Yslvg00", + "Kamome", +}; +STATIC_ASSERT(ARRAY_SIZE(sea_resName) <= PRELOAD_RES_MAX); + +const char* M_Dai_resName[] = { + "door12", + "System", + "Dalways", + "M_DOOR", + "Odokuro", + "Key", + "Mspot", + "Kbota_00", + "Tenmado", + "Osiblk", + "Mmirror", + "MkieK", + "Mkanoke", + "Vds", + "St", + "Msdan", + "MkieB", + "Mhsg", + "Club", + "ltubw", + "Rd", + "MpwrB", + "Fm", +}; +STATIC_ASSERT(ARRAY_SIZE(M_Dai_resName) <= PRELOAD_RES_MAX); + +const s16 majroom_dylKeyTbl[] = { + PROC_DOOR10, + PROC_EP, + PROC_HIMO3, + PROC_KNOB00, + PROC_KYTAG02, + PROC_MO2, + PROC_NPC_NZ, + PROC_NZ, + PROC_NZG, + PROC_Obj_Barrel, + PROC_Obj_Mshokki, + PROC_OBJ_OTBLE, + PROC_Tag_Attention, + PROC_TAG_EVENT, + PROC_TAG_HINT, + PROC_TBOX, + PROC_TSUBO, +}; +STATIC_ASSERT(ARRAY_SIZE(majroom_dylKeyTbl) <= PRELOAD_DYL_MAX); + +const char* majroom_resName[] = { + "Dalways", + "Ep", + "Ktaru_01", + "System", + "knob", + "Himo3", + "Mshokki", + "Okmono", + "Kantera", + "Mbdoor", + "Mo2", + "Spear", + "NZ", + "NZG", + "Npcnz", + "Atdoor", + "Ylesr00", + "Pt", + "Mozo", + "Ki", + "Kbota_00", +}; +STATIC_ASSERT(ARRAY_SIZE(majroom_resName) <= PRELOAD_RES_MAX); + +const s16 ma2room_dylKeyTbl[] = { + PROC_AGBSW0, + PROC_BK, + PROC_DOOR10, + PROC_EP, + PROC_KNOB00, + PROC_MO2, + PROC_NZ, + PROC_NZG, + PROC_Obj_Mshokki, + PROC_OBJ_OTBLE, + PROC_Tag_Attention, + PROC_TAG_EVENT, + PROC_TBOX, + PROC_TSUBO, +}; +STATIC_ASSERT(ARRAY_SIZE(ma2room_dylKeyTbl) <= PRELOAD_DYL_MAX); + +const char* ma2room_resName[] = { + "Dalways", + "Ep", + "System", + "knob", + "Ktaru_01", + "Okmono", + "Mo2", + "Mbdoor", + "Kantera", + "Mshokki", + "NZ", + "NZG", + "Shmrgrd", + "Spear", + "Nata", + "Bk", + "Atdoor", + "Fm", + "Kbota_00", + "Mozo", + "OQ", + "Pt", + "StpTetu", + "Ylesr00", +}; +STATIC_ASSERT(ARRAY_SIZE(ma2room_resName) <= PRELOAD_RES_MAX); + +const s16 ma3room_dylKeyTbl[] = { + PROC_DOOR10, + PROC_EP, + PROC_KI, + PROC_KNOB00, + PROC_MO2, + PROC_NZ, + PROC_NZG, + PROC_Obj_Mshokki, + PROC_OBJ_OTBLE, + PROC_Tag_Attention, + PROC_TAG_EVENT, + PROC_TBOX, + PROC_TSUBO, +}; +STATIC_ASSERT(ARRAY_SIZE(ma3room_dylKeyTbl) <= PRELOAD_DYL_MAX); + +const char* ma3room_resName[] = { + "Dalways", + "Ep", + "System", + "knob", + "Ki", + "Ktaru_01", + "Okmono", + "Mbdoor", + "Mshokki", + "NZ", + "NZG", + "Npcnz", + "Atdoor", + "Kbota_00", + "Mozo", + "StpTetu", + "Ylesr00", +}; +STATIC_ASSERT(ARRAY_SIZE(ma3room_resName) <= PRELOAD_RES_MAX); + +const s16 M_NewD2_dylKeyTbl[] = { + PROC_TBOX, + PROC_TAG_EVENT, + PROC_DOOR10, + PROC_AGBSW0, + PROC_Ykgr, + PROC_TSUBO, + PROC_BK, + PROC_SteamTag, + PROC_MT, + PROC_CC, + PROC_NPC_NZ, + PROC_Fire, +}; +STATIC_ASSERT(ARRAY_SIZE(M_NewD2_dylKeyTbl) <= PRELOAD_DYL_MAX); + +const char* M_NewD2_resName[] = { + "System", + "Link", + "Key", + "Dalways", + "Always", + "Agb", + "Ep", + "Magma", + "Boko", + "KsakuCo", + "Bk", + "YFire_00", + "Kmtub_00", + "Kui", + "Knsak_00", + "Ki", + "ltubw", + "Osiblk", + "Nata", + "Mt", + "Ksaku_00", + "Ebrock", + "CC", + "Bridge", + "Odokuro", + "Msw", + "Kbota_00", + "Otana", + "Okmono", + "Npcnz", + "NZG", + "NZ", + "MtoriSU", + "Mflft", + "Bb", +}; +STATIC_ASSERT(ARRAY_SIZE(M_NewD2_resName) <= PRELOAD_RES_MAX); + +const s16 kindan_dylKeyTbl[] = { + PROC_TBOX, + PROC_TAG_EVENT, + PROC_SWC00, + PROC_DOOR10, + PROC_AGBSW0, + PROC_Tag_Attention, + PROC_TSUBO, + PROC_CC, + PROC_PH, + PROC_KLFT, + PROC_SITEM, + PROC_KITA, + PROC_Obj_Mtest, +}; +STATIC_ASSERT(ARRAY_SIZE(kindan_dylKeyTbl) <= PRELOAD_DYL_MAX); + +const char* kindan_resName[] = { + "System", + "Ssk", + "Link", + "Key", + "Dalways", + "Always", + "Agb", + "Sitem", + "Ss", + "CC", + "Vochi", + "PH", + "JBO", + "Ep", + "Klft", + "KS", + "BO", + "ltubw", + "Kui", + "KsakuCo", + "Sss", + "Sk2", + "Sk", + "Shand", + "Knsak_00", + "Yaflw00", + "Vpbot_00", + "Spear", + "Mtest", + "Ksaku_00", + "Kokiie", + "Kita", + "Kanat", + "Boko", + "Mdoor", +}; +STATIC_ASSERT(ARRAY_SIZE(kindan_resName) <= PRELOAD_RES_MAX); + +const s16 M_Dai_dylKeyTbl[] = { + PROC_ALLDIE, + PROC_Obj_Msdan2, + PROC_Obj_Msdan, + PROC_Obj_MsdanSub2, + PROC_Obj_MsdanSub, + PROC_SW_ATTACK, + PROC_Obj_Correct, + PROC_Obj_Mkiek, + PROC_Obj_Vds, + PROC_Obj_Ladder, + PROC_DOOR12, + PROC_Obj_MknjD, + PROC_Obj_Swhammer, + PROC_Obj_Swlight, + PROC_Obj_Mkie, + PROC_KANTERA, + PROC_Obj_Mmrr, + PROC_Obj_Kanoke, + PROC_BOKO, + PROC_BL, + PROC_PW, + PROC_CC, + PROC_Obj_Tapestry, + PROC_ST, + PROC_FM, + PROC_MO2, + PROC_TN, +}; +STATIC_ASSERT(ARRAY_SIZE(M_Dai_dylKeyTbl) <= PRELOAD_DYL_MAX); + +const s16 sea_dylKeyTbl[] = { + PROC_TAG_SO, + PROC_Salvage, + PROC_Obj_Coming, + PROC_LODBG, + PROC_Coming2, + PROC_SHIP, + PROC_NPC_SO, +}; +STATIC_ASSERT(ARRAY_SIZE(sea_dylKeyTbl) <= PRELOAD_DYL_MAX); + +const s16 kaze_dylKeyTbl[] = { + PROC_GRASS, + PROC_PH, + PROC_FM, + PROC_TAG_MDCB, + PROC_Obj_Hfuck1, + PROC_Obj_Eff, + PROC_WindTag, + PROC_Obj_Homen, + PROC_TSUBO, + PROC_EP, + PROC_Obj_Jump, + PROC_Obj_Hami3, + PROC_WINDMILL, + PROC_Obj_Hbrf1, + PROC_Obj_Hami4, + PROC_Obj_Hami2, + PROC_MACHINE, + PROC_Obj_Vmc, + PROC_Obj_MknjD, + PROC_NPC_CB1, + PROC_Obj_Trap, + PROC_SW_PROPELLER, + PROC_TOGE, + PROC_SHUTTER2, +}; +STATIC_ASSERT(ARRAY_SIZE(kaze_dylKeyTbl) <= PRELOAD_DYL_MAX); + +const char* kaze_resName[] = { + "Dalways", + "Key", + "door13", + "Am", + "Am2", + "Ep", + "Hami1", + "Hami2", + "Hami3", + "Hami4", + "Hfuck1", + "Hhbot", + "Hhyu1", + "Hjump", + "Hpbot1", + "Hsen1", + "Hsen3", + "Kbota_00", + "Ybgaf00", + "Ph", + "Sss", + "Trap", + "Vmc", + "Yaflw00", + "ltubw", +}; +STATIC_ASSERT(ARRAY_SIZE(kaze_resName) <= PRELOAD_RES_MAX); + +s16 Siren_dylKeyTbl[] = { + PROC_Obj_Hha, + PROC_Obj_Htetu1, + PROC_NPC_OS, + PROC_LIGHTSTAIR, + PROC_WALL, + PROC_Obj_Try, + PROC_Obj_Correct, +}; +STATIC_ASSERT(ARRAY_SIZE(Siren_dylKeyTbl) <= PRELOAD_DYL_MAX); + +const char* Siren_resName[] = { + "Dalways", + "Ship", + "Cloth", + "Key", + "Hha", + "Htetu1", + "Os", + "Htw1", + "Hcbh", + "Hdai1", +}; +STATIC_ASSERT(ARRAY_SIZE(Siren_resName) <= PRELOAD_RES_MAX); + +s16 GanonJ_dylKeyTbl[] = { + PROC_TBOX, + PROC_DOOR10, + PROC_MANT, + PROC_FGANON, + PROC_TSUBO, + PROC_MO2, + PROC_BK, + PROC_TN, + PROC_PT, + PROC_Obj_Hcbh, + PROC_ANDSW0, +}; +STATIC_ASSERT(ARRAY_SIZE(GanonJ_dylKeyTbl) <= PRELOAD_DYL_MAX); + +const char* GanonJ_resName[] = { + "System", + "Link", + "Dalways", + "Always", + "Agb", + "Fganon", + "Spear", + "Nata", + "Mo2", + "Bk", + "Tn", + "Tkwn", + "Odokuro", + "Boko", +}; +STATIC_ASSERT(ARRAY_SIZE(GanonJ_resName) <= PRELOAD_RES_MAX); + +s16 GanonK_dylKeyTbl[] = { + PROC_TSUBO, + PROC_Obj_Vteng, + PROC_KUI, + PROC_KS, + PROC_EP, + PROC_BGN, + PROC_TAG_EVENT, + PROC_Tag_Attention, + PROC_PZ, + PROC_Obj_Gbed, + PROC_BGN3, + PROC_BGN2, + PROC_ATT, +}; +STATIC_ASSERT(ARRAY_SIZE(GanonK_dylKeyTbl) <= PRELOAD_DYL_MAX); + +const char* GanonK_resName[] = { + "Agb", + "Always", + "Ep", + "KS", + "Kui", + "Link", + "System", + "ltubw", +}; +STATIC_ASSERT(ARRAY_SIZE(GanonK_resName) <= PRELOAD_RES_MAX); + +s16 GanonM_dylKeyTbl[] = { + PROC_FGANON, + PROC_MANT, + PROC_Ygcwp, + PROC_Obj_Vfan, + PROC_WARPGANON, +}; +STATIC_ASSERT(ARRAY_SIZE(GanonM_dylKeyTbl) <= PRELOAD_DYL_MAX); + +const char* GanonM_resName[] = { + "Fganon", + "Pgsw", + "Vfan", + "Ygcwp", + "Gmjwp", +}; +STATIC_ASSERT(ARRAY_SIZE(GanonM_resName) <= PRELOAD_RES_MAX); + +const s16 M_DragB_dylKeyTbl[] = { + PROC_WARPFLOWER, +}; +STATIC_ASSERT(ARRAY_SIZE(M_DragB_dylKeyTbl) <= PRELOAD_DYL_MAX); + +const char* M_DragB_resName[] = { + NULL, +}; +STATIC_ASSERT(ARRAY_SIZE(M_DragB_resName) <= PRELOAD_RES_MAX); + +const s16 kinBOSS_dylKeyTbl[] = { + PROC_NPC_CB1, + PROC_WARPFLOWER, +}; +STATIC_ASSERT(ARRAY_SIZE(kinBOSS_dylKeyTbl) <= PRELOAD_DYL_MAX); + +const char* kinBOSS_resName[] = { + "Cb", + "Gtfglow", +}; +STATIC_ASSERT(ARRAY_SIZE(kinBOSS_resName) <= PRELOAD_RES_MAX); + +const s16 M_DaiB_dylKeyTbl[] = { + PROC_WARPFLOWER, +}; +STATIC_ASSERT(ARRAY_SIZE(M_DaiB_dylKeyTbl) <= PRELOAD_DYL_MAX); + +const char* M_DaiB_resName[] = { + "Gtfglow", +}; +STATIC_ASSERT(ARRAY_SIZE(M_DaiB_resName) <= PRELOAD_RES_MAX); + +const s16 SirenB_dylKeyTbl[] = { + PROC_WARPFLOWER, +}; +STATIC_ASSERT(ARRAY_SIZE(SirenB_dylKeyTbl) <= PRELOAD_DYL_MAX); + +const char* SirenB_resName[] = { + "Ysbwp00", +}; +STATIC_ASSERT(ARRAY_SIZE(SirenB_resName) <= PRELOAD_RES_MAX); + +const PreLoadInfoT_s PreLoadInfoT[] = { + { + "sea", + sea_dylKeyTbl, + sea_resName, + ARRAY_SIZE(sea_dylKeyTbl), + ARRAY_SIZE(sea_resName), + }, + { + "M_Dai", + M_Dai_dylKeyTbl, + M_Dai_resName, + ARRAY_SIZE(M_Dai_dylKeyTbl), + ARRAY_SIZE(M_Dai_resName), + }, + { + "kaze", + kaze_dylKeyTbl, + kaze_resName, + ARRAY_SIZE(kaze_dylKeyTbl), + ARRAY_SIZE(kaze_resName), + }, + { + "Siren", + Siren_dylKeyTbl, + Siren_resName, + ARRAY_SIZE(Siren_dylKeyTbl), + ARRAY_SIZE(Siren_resName), + }, + { + "M_DragB", + M_DragB_dylKeyTbl, + M_DragB_resName, + ARRAY_SIZE(M_DragB_dylKeyTbl), + ARRAY_SIZE(M_DragB_resName), + }, + { + "kinBOSS", + kinBOSS_dylKeyTbl, + kinBOSS_resName, + ARRAY_SIZE(kinBOSS_dylKeyTbl), + ARRAY_SIZE(kinBOSS_resName), + }, + { + "SirenB", + SirenB_dylKeyTbl, + SirenB_resName, + ARRAY_SIZE(SirenB_dylKeyTbl), + ARRAY_SIZE(SirenB_resName), + }, + { + "M_DaiB", + M_DaiB_dylKeyTbl, + M_DaiB_resName, + ARRAY_SIZE(M_DaiB_dylKeyTbl), + ARRAY_SIZE(M_DaiB_resName), + }, + { + "majroom", + majroom_dylKeyTbl, + majroom_resName, + ARRAY_SIZE(majroom_dylKeyTbl), + ARRAY_SIZE(majroom_resName), + }, + { + "ma2room", + ma2room_dylKeyTbl, + ma2room_resName, + ARRAY_SIZE(ma2room_dylKeyTbl), + ARRAY_SIZE(ma2room_resName), + }, + { + "ma3room", + ma3room_dylKeyTbl, + ma3room_resName, + ARRAY_SIZE(ma3room_dylKeyTbl), + ARRAY_SIZE(ma3room_resName), + }, + { + "M_NewD2", + M_NewD2_dylKeyTbl, + M_NewD2_resName, + ARRAY_SIZE(M_NewD2_dylKeyTbl), + ARRAY_SIZE(M_NewD2_resName), + }, + { + "kindan", + kindan_dylKeyTbl, + kindan_resName, + ARRAY_SIZE(kindan_dylKeyTbl), + ARRAY_SIZE(kindan_resName), + }, + { + "GanonJ", + GanonJ_dylKeyTbl, + GanonJ_resName, + ARRAY_SIZE(GanonJ_dylKeyTbl), + ARRAY_SIZE(GanonJ_resName), + }, + { + "GanonK", + GanonK_dylKeyTbl, + GanonK_resName, + ARRAY_SIZE(GanonK_dylKeyTbl), + ARRAY_SIZE(GanonK_resName), + }, + { + "GanonM", + GanonM_dylKeyTbl, + GanonM_resName, + ARRAY_SIZE(GanonM_dylKeyTbl), + ARRAY_SIZE(GanonM_resName), + }, +}; + /* 80234FD0-802350B4 .text dScnPly_Execute__FP13dScnPly_ply_c */ int dScnPly_Execute(dScnPly_ply_c* i_this) { if (!fopOvlpM_IsPeek()) { @@ -405,6 +1061,10 @@ int dScnPly_IsDelete(dScnPly_ply_c* i_this) { /* 802350BC-80235364 .text dScnPly_Delete__FP13dScnPly_ply_c */ void dScnPly_Delete(dScnPly_ply_c* i_this) { /* Nonmatching */ + OSReport("Xboss0"); + OSReport("Xboss1"); + OSReport("Xboss2"); + OSReport("Xboss3"); } /* 80235364-802355A8 .text heapSizeCheck__Fv */ @@ -487,25 +1147,25 @@ static mDoDvdThd_mountXArchive_c* l_lkDemoAnmCommand; /* 802356E0-802357F4 .text phase_0__FP13dScnPly_ply_c */ s32 phase_0(dScnPly_ply_c* i_this) { /* Nonmatching */ - if (!mDoAud_checkAllWaveLoadStatus()) { + if (mDoAud_checkAllWaveLoadStatus()) { + return cPhs_INIT_e; + } else { l_lkDemoAnmCommand = NULL; - u32 darcIdx = dComIfGs_isEventBit(0x2D01) ? 1 : 0; + s32 darcIdx = dComIfGs_isEventBit(0x2D01) ? 1 : 0; if (darcIdx != dComIfGp_getLkDemoAnmNo()) { - if (dComIfGp_getLkDemoAnmNo() > -1) { + if (dComIfGp_getLkDemoAnmNo() >= 0) { dComIfGp_getLkDemoAnmArchive()->unmount(); } dComIfGp_setLkDemoAnmNo(darcIdx); + + char buf[32]; + sprintf(buf, "/res/Object/LkD%02d.arc", darcIdx); + l_lkDemoAnmCommand = mDoDvdThd_mountXArchive_c::create(buf, 0, JKRArchive::MOUNT_ARAM); + JUT_ASSERT(0xd56, l_lkDemoAnmCommand != 0); } - char buf[32]; - sprintf(buf, "/res/Object/LkD%02.arc", darcIdx); - l_lkDemoAnmCommand = mDoDvdThd_mountXArchive_c::create(buf, 0, JKRArchive::MOUNT_ARAM); - JUT_ASSERT(0xd56, l_lkDemoAnmCommand != 0); - return cPhs_NEXT_e; - } else { - return cPhs_INIT_e; } } @@ -543,7 +1203,7 @@ int phase_1(dScnPly_ply_c* i_this) { /* 802359DC-80235ABC .text phase_2__FP13dScnPly_ply_c */ int phase_2(dScnPly_ply_c* i_this) { - int rt = dComIfG_syncStageRes("Stg_00"); + int rt = dComIfG_syncStageRes("Stage"); JUT_ASSERT(3485, rt >= 0) if (rt != 0) { @@ -567,34 +1227,33 @@ int phase_3(dScnPly_ply_c* i_this) { return cPhs_NEXT_e; } -static s8 preLoadNo; -static bool doPreLoad; -static OSTime resPreLoadTime0; -static OSTime resPreLoadTime1; +static s8 preLoadNo = 0xFF; +static bool doPreLoad = true; /* 80235B0C-80236334 .text phase_4__FP13dScnPly_ply_c */ s32 phase_4(dScnPly_ply_c* i_this) { /* Nonmatching */ if (i_this->sceneCommand != NULL) { - JUT_ASSERT(0xdef, i_this->sceneCommand->getMemAddress()); + JUT_ASSERT(0xdef, i_this->sceneCommand->getMemAddress() != 0); dComIfGp_particle_createScene(i_this->sceneCommand->getMemAddress()); delete i_this->sceneCommand; } else { dComIfGp_particle_createScene(NULL); } + dComIfG_Bgsp()->Ct(); dComIfG_Ccsp()->Ct(); dComIfGp_createDemo(); daSea_Init(); dSnap_Create(); - dComIfGp_setPlayerPtr(0, NULL); + dComIfGp_setPlayer(0, NULL); g_dComIfG_gameInfo.play.mCurCamera[0] = 0; // dComIfGp_setPlayerInfo? for (s32 i = 0; i < 3; i++) dComIfGp_setPlayerPtr(i, NULL); dComIfGp_setWindowNum(1); dComIfGp_setWindow(0, 0.0f, 0.0f, mDoMch_render_c::getFbWidth(), mDoMch_render_c::getEfbHeight(), 0.0f, 1.0f, 0, 2); - dComIfGp_setCameraInfo(0, NULL, 0, 0, 0xFF); + dComIfGp_setCameraInfo(0, NULL, 0, 0, -1); // setCameraAttentionStatus? dComIfGd_setWindow(NULL); dComIfGd_setViewport(NULL); @@ -605,7 +1264,7 @@ s32 phase_4(dScnPly_ply_c* i_this) { dComIfGp_setExpHeap2D(heap); dStage_Create(); - mDoGph_gInf_c::setTickRate((OS_BUS_CLOCK / 4) / 60); + mDoGph_gInf_c::setTickRate((OS_BUS_CLOCK / 4) / 30); g_darkHIO.mChildID = mDoHIO_root.mDoHIO_createChild("暗闇スポット", &g_darkHIO); g_envHIO.mChildID = mDoHIO_root.mDoHIO_createChild("描画設定", &g_envHIO); @@ -632,7 +1291,7 @@ s32 phase_4(dScnPly_ply_c* i_this) { if (strcmp(dComIfGp_getStartStageName(), "GTower") == 0) { dComIfGs_setItem(12, NO_ITEM); // take away the bow for (s32 i = 0; i < 3; i++) { - s32 itemno = dComIfGp_getSelectItem(i); + u32 itemno = dComIfGp_getSelectItem(i); if (itemno == BOW || itemno == MAGIC_ARROW || itemno == LIGHT_ARROW) { dComIfGs_setSelectItem(i, NO_ITEM); dComIfGp_setSelectItem(i); @@ -640,11 +1299,11 @@ s32 phase_4(dScnPly_ply_c* i_this) { } } else if (dComIfGs_getItem(12) == NO_ITEM) { // give the bow back - if (dComIfGs_isItem(12, 2)) + if (dComIfGs_isGetItem(12, 2)) dComIfGs_setItem(12, LIGHT_ARROW); - else if (dComIfGs_isItem(12, 1)) + else if (dComIfGs_isGetItem(12, 1)) dComIfGs_setItem(12, MAGIC_ARROW); - else if (dComIfGs_isItem(12, 0)) + else if (dComIfGs_isGetItem(12, 0)) dComIfGs_setItem(12, BOW); } @@ -654,7 +1313,7 @@ s32 phase_4(dScnPly_ply_c* i_this) { mDoAud_monsSeInit(); - if (fpcM_GetProfName(i_this) == PROC_PLAY_SCENE) { + if (fpcM_GetName(i_this) == PROC_PLAY_SCENE) { mDoAud_zelAudio_c::onBgmSet(); } else { mDoAud_zelAudio_c::offBgmSet(); @@ -667,9 +1326,8 @@ s32 phase_4(dScnPly_ply_c* i_this) { mDoGph_gInf_c::onMonotone(); bool hy8 = strcmp(dComIfGp_getStartStageName(), "Hyrule") == 0 && dComIfGp_getStartStageLayer() == 8; - mDoGph_gInf_c::setMonotoneRate(400); - if (hy8) - mDoGph_gInf_c::setMonotoneRate(-600); + s16 rate = hy8 ? -600 : 400; + mDoGph_gInf_c::setMonotoneRate(rate); mDoGph_gInf_c::setMonotoneRateSpeed(0); } else { mDoGph_gInf_c::offMonotone(); @@ -677,7 +1335,11 @@ s32 phase_4(dScnPly_ply_c* i_this) { preLoadNo = -1; if (doPreLoad) { - // PreloadTable + for (int i = 0; i < ARRAY_SIZE(PreLoadInfoT); i++) { + if (strcmp(dComIfGp_getStartStageName(), PreLoadInfoT[i].stageName) == 0) { + preLoadNo = i; + } + } } mDoRst::offReset(); @@ -699,7 +1361,10 @@ s32 phase_4(dScnPly_ply_c* i_this) { /* 80236334-80236444 .text phase_5__FP13dScnPly_ply_c */ s32 phase_5(dScnPly_ply_c* i_this) { /* Nonmatching */ - if (preLoadNo < 0) { + if (preLoadNo >= 0) { + u8 resNameNum = PreLoadInfoT[preLoadNo].resNameNum; + JUT_ASSERT(0, resNameNum <= (sizeof(resPhase) / sizeof(resPhase[0]))); + } else { return cPhs_NEXT_e; } } @@ -707,6 +1372,12 @@ s32 phase_5(dScnPly_ply_c* i_this) { /* 80236444-80236554 .text phase_6__FP13dScnPly_ply_c */ s32 phase_6(dScnPly_ply_c* i_this) { /* Nonmatching */ + if (preLoadNo >= 0) { + u8 dylKeyTblNum = PreLoadInfoT[preLoadNo].dylKeyTblNum; + JUT_ASSERT(0, dylKeyTblNum <= (sizeof(dylPhase) / sizeof(dylPhase[0]))); + } else { + return cPhs_NEXT_e; + } } /* 80236554-8023655C .text phase_compleate__FPv */