From fca11f6233672010ee6e5f617c34aa1ca62631f2 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Fri, 13 Oct 2023 19:40:46 -0700 Subject: [PATCH] jpn/pal fix --- include/d/d_com_inf_game.h | 8 +++-- include/m_Do/m_Do_Reset.h | 2 +- src/JSystem/JKernel/JKRArchivePub.cpp | 18 +++++----- src/JSystem/JKernel/JKRHeap.cpp | 8 ++--- src/d/actor/d_a_tag_kb_item.cpp | 4 +-- src/d/d_s_open.cpp | 6 ++++ src/d/d_s_title.cpp | 50 +++++++++++++++++++++++---- src/m_Do/m_Do_Reset.cpp | 8 ++--- 8 files changed, 76 insertions(+), 28 deletions(-) diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index 98a0a6bcd..8039e0e67 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -417,7 +417,7 @@ public: /* 0x47EC */ JKRArchive* mpCamResArchive; /* 0x47F0 */ JKRArchive* mpSwimResArchive; /* 0x47F4 */ JKRArchive* mpWindResArchive; -#if VERSION != VERSION_JP +#if VERSION != VERSION_JPN /* 0x47F8 */ JKRArchive* mpEnglishTextArchive; /* 0x47FC */ JKRArchive* mpHyruleTextArchive; /* 0x4800 */ u8 mCARDHeap0[0x04]; @@ -565,7 +565,7 @@ public: /* 0x1D1C1 */ u8 field_0x1d1c1; }; -#if VERSION != VERSION_JP +#if VERSION != VERSION_JPN STATIC_ASSERT(sizeof(dComIfG_inf_c) == 0x1D1C8); #endif @@ -1458,6 +1458,10 @@ inline void dComIfGp_event_offEventFlag(s16 flag) { g_dComIfG_gameInfo.play.getEvent().offEventFlag(flag); } +inline void dComIfGp_event_remove() { + g_dComIfG_gameInfo.play.getEvent().remove(); +} + inline void dComIfGp_event_reset() { g_dComIfG_gameInfo.play.getEvent().reset(); } diff --git a/include/m_Do/m_Do_Reset.h b/include/m_Do/m_Do_Reset.h index 905fdb8f9..e7a320406 100644 --- a/include/m_Do/m_Do_Reset.h +++ b/include/m_Do/m_Do_Reset.h @@ -17,7 +17,7 @@ struct mDoRstData { class mDoRst { public: -#if VERSION != VERSION_JP +#if VERSION != VERSION_JPN static void set3ButtonResetPort(int port) { mResetData->m3ButtonResetPort = port; } static void off3ButtonReset() { mResetData->m3ButtonReset = 0; } static void offResetPrepare() { mResetData->mResetPrepare = 0; } diff --git a/src/JSystem/JKernel/JKRArchivePub.cpp b/src/JSystem/JKernel/JKRArchivePub.cpp index aa13e7dcd..c2a051fc0 100644 --- a/src/JSystem/JKernel/JKRArchivePub.cpp +++ b/src/JSystem/JKernel/JKRArchivePub.cpp @@ -134,7 +134,7 @@ void* JKRArchive::getGlbResource(u32 param_0, const char* path, JKRArchive* arch /* 802B8380-802B8450 .text getResource__10JKRArchiveFPCc */ void* JKRArchive::getResource(const char* path) { -#if VERSION == VERSION_JP +#if VERSION == VERSION_JPN JUT_ASSERT(337, isMounted()); #else JUT_ASSERT(285, isMounted()); @@ -156,7 +156,7 @@ void* JKRArchive::getResource(const char* path) { /* 802B8450-802B8528 .text getResource__10JKRArchiveFUlPCc */ void* JKRArchive::getResource(u32 type, const char* path) { -#if VERSION == VERSION_JP +#if VERSION == VERSION_JPN JUT_ASSERT(384, isMounted()); #else JUT_ASSERT(332, isMounted()); @@ -198,7 +198,7 @@ u32 JKRArchive::readTypeResource(void* buffer, u32 bufferSize, u32 type, const c /* 802B85F0-802B86DC .text readResource__10JKRArchiveFPvUlUlPCc */ u32 JKRArchive::readResource(void* buffer, u32 bufferSize, u32 type, const char* path) { -#if VERSION == VERSION_JP +#if VERSION == VERSION_JPN JUT_ASSERT(543, isMounted()); #else JUT_ASSERT(491, isMounted()); @@ -222,7 +222,7 @@ u32 JKRArchive::readResource(void* buffer, u32 bufferSize, u32 type, const char* /* 802B86DC-802B87C0 .text readResource__10JKRArchiveFPvUlPCc */ u32 JKRArchive::readResource(void* buffer, u32 bufferSize, const char* path) { -#if VERSION == VERSION_JP +#if VERSION == VERSION_JPN JUT_ASSERT(589, isMounted()); #else JUT_ASSERT(537, isMounted()); @@ -246,7 +246,7 @@ u32 JKRArchive::readResource(void* buffer, u32 bufferSize, const char* path) { /* 802B87C0-802B8878 .text readIdxResource__10JKRArchiveFPvUlUl */ u32 JKRArchive::readIdxResource(void* buffer, u32 bufferSize, u32 index) { -#if VERSION == VERSION_JP +#if VERSION == VERSION_JPN JUT_ASSERT(645, isMounted()); #else JUT_ASSERT(593, isMounted()); @@ -264,7 +264,7 @@ u32 JKRArchive::readIdxResource(void* buffer, u32 bufferSize, u32 index) { /* 802B8878-802B8930 .text readResource__10JKRArchiveFPvUlUs */ u32 JKRArchive::readResource(void* buffer, u32 bufferSize, u16 id) { -#if VERSION == VERSION_JP +#if VERSION == VERSION_JPN JUT_ASSERT(679, isMounted()); #else JUT_ASSERT(627, isMounted()); @@ -295,7 +295,7 @@ void JKRArchive::removeResourceAll() { /* 802B89B8-802B8A54 .text removeResource__10JKRArchiveFPv */ bool JKRArchive::removeResource(void* resource) { -#if VERSION == VERSION_JP +#if VERSION == VERSION_JPN JUT_ASSERT(755, resource != 0); #else JUT_ASSERT(687, resource != 0); @@ -312,7 +312,7 @@ bool JKRArchive::removeResource(void* resource) { /* 802B8A54-802B8AE4 .text detachResource__10JKRArchiveFPv */ bool JKRArchive::detachResource(void* resource) { -#if VERSION == VERSION_JP +#if VERSION == VERSION_JPN JUT_ASSERT(787, resource != 0); #else JUT_ASSERT(719, resource != 0); @@ -328,7 +328,7 @@ bool JKRArchive::detachResource(void* resource) { /* 802B8AE4-802B8B6C .text getResSize__10JKRArchiveCFPCv */ u32 JKRArchive::getResSize(const void* resource) const { -#if VERSION == VERSION_JP +#if VERSION == VERSION_JPN JUT_ASSERT(814, resource != 0); #else JUT_ASSERT(746, resource != 0); diff --git a/src/JSystem/JKernel/JKRHeap.cpp b/src/JSystem/JKernel/JKRHeap.cpp index 1ee6dc7fe..a071b05fa 100644 --- a/src/JSystem/JKernel/JKRHeap.cpp +++ b/src/JSystem/JKernel/JKRHeap.cpp @@ -420,7 +420,7 @@ static void dummy3() { /* 802B0D70-802B0E14 .text state_register__7JKRHeapCFPQ27JKRHeap6TStateUl */ void JKRHeap::state_register(JKRHeap::TState* p, u32 id) const { -#if VERSION == VERSION_JP +#if VERSION == VERSION_JPN JUT_ASSERT(1034, p != 0); JUT_ASSERT(1035, p->getHeap() == this); #else @@ -431,7 +431,7 @@ void JKRHeap::state_register(JKRHeap::TState* p, u32 id) const { /* 802B0E14-802B0E9C .text state_compare__7JKRHeapCFRCQ27JKRHeap6TStateRCQ27JKRHeap6TState */ bool JKRHeap::state_compare(const JKRHeap::TState& r1, const JKRHeap::TState& r2) const { -#if VERSION == VERSION_JP +#if VERSION == VERSION_JPN JUT_ASSERT(1043, r1.getHeap() == r2.getHeap()); #else JUT_ASSERT(1099, r1.getHeap() == r2.getHeap()); @@ -448,7 +448,7 @@ static void dummy4() { /* 802B0E9C-802B0F24 .text state_dump__7JKRHeapCFRCQ27JKRHeap6TState */ void JKRHeap::state_dump(const JKRHeap::TState& p) const { -#if VERSION == VERSION_JP +#if VERSION == VERSION_JPN JUT_LOG(1067, "check-code : 0x%08x", p.getCheckCode()); JUT_LOG(1068, "id : 0x%08x", p.getId()); JUT_LOG(1069, "used size : %u", p.getUsedSize()); @@ -469,7 +469,7 @@ u8 JKRHeap::do_getCurrentGroupId() { return 0; } -#if VERSION == VERSION_JP +#if VERSION == VERSION_JPN static void dummy5() { OSReport("\x1B[41;37m:::addr %08x size %08x: Freeされた領域が浸食されている (%08x=%02x)\n\x1B[m"); } diff --git a/src/d/actor/d_a_tag_kb_item.cpp b/src/d/actor/d_a_tag_kb_item.cpp index 1d6dac616..ceb948898 100644 --- a/src/d/actor/d_a_tag_kb_item.cpp +++ b/src/d/actor/d_a_tag_kb_item.cpp @@ -32,7 +32,7 @@ public: /* 00000078-000000C8 .text _delete__13daTagKbItem_cFv */ bool daTagKbItem_c::_delete() { -#if VERSION != VERSION_JP +#if VERSION != VERSION_JPN if (field_0x2a0 != 0xff && field_0x2a4 != 0xff) { dComIfGs_offSwitch(field_0x2a4, orig.roomNo); } @@ -67,7 +67,7 @@ int daTagKbItem_c::_create() { /* 000001BC-000001C4 .text _execute__13daTagKbItem_cFv */ bool daTagKbItem_c::_execute() { -#if VERSION == VERSION_JP +#if VERSION == VERSION_JPN if (field_0x29c != 0x1f && dComIfGs_isItem(field_0x29c, orig.roomNo) || field_0x2a4 != 0xff && dComIfGs_isSwitch(field_0x2a4, orig.roomNo)) { diff --git a/src/d/d_s_open.cpp b/src/d/d_s_open.cpp index 9d2d46a23..394bdab2a 100644 --- a/src/d/d_s_open.cpp +++ b/src/d/d_s_open.cpp @@ -64,11 +64,17 @@ s32 dScnOpen_c::create() { JUT_ASSERT(0x48, rt == cPhs_COMPLEATE_e); return rt; } + + return rt; } /* 80232BC4-80232CAC .text execute__10dScnOpen_cFv */ BOOL dScnOpen_c::execute() { +#if VERSION != VERSION_JPN if (mpProc->field_0x2b0 >= 5 && !fopOvlpM_IsPeek() && !dComIfG_resetToOpening(this)) { +#else + if (!fopOvlpM_IsPeek() && !dComIfG_resetToOpening(this)) { +#endif if (fpcM_GetName(this) == PROC_OPEN2_SCENE && (CPad_CHECK_TRIG_A(0) || CPad_CHECK_TRIG_B(0) || CPad_CHECK_TRIG_START(0))) { field_0x1d4 = 1; mDoAud_bgmStop(20); diff --git a/src/d/d_s_title.cpp b/src/d/d_s_title.cpp index a14c41d2f..76c26a7ac 100644 --- a/src/d/d_s_title.cpp +++ b/src/d/d_s_title.cpp @@ -7,6 +7,7 @@ #include "f_op/f_op_draw_iter.h" #include "f_op/f_op_actor_mng.h" #include "f_op/f_op_overlap_mng.h" +#include "f_op/f_op_msg_mng.h" #include "f_op/f_op_scene_mng.h" #include "f_pc/f_pc_leaf.h" #include "f_pc/f_pc_manager.h" @@ -22,18 +23,30 @@ namespace JAInter { }; }; -struct title_of_scene_class : public scene_class { -public: - /* 0x1C4 */ u32 pad[0x97]; - /* 0x420 */ u32 mMoviePId; -}; - class daMP_c : public fopAc_ac_c { public: /* 0x290 */ u32 (*mpCallBack1)(); /* 0x294 */ u32 (*mpCallBack2)(f32); }; +#if VERSION == VERSION_PAL + #define title_of_scene_class dScnTitle_c +#endif + +struct title_of_scene_class : public scene_class { +public: + /* 0x1C4 */ u32 pad[0x97]; + /* 0x420 */ u32 mMoviePId; + +#if VERSION == VERSION_PAL + static daMP_c* mMp; +#endif +}; + +#if VERSION == VERSION_PAL +daMP_c* dScnTitle_c::mMp; +#endif + /* 802372F4-80237344 .text dScnTitle_Draw__FP20title_of_scene_class */ BOOL dScnTitle_Draw(title_of_scene_class* i_this) { for (create_tag_class* pTag = fopDwIt_Begin(); pTag != NULL; pTag = fopDwIt_Next(pTag)) @@ -44,12 +57,25 @@ BOOL dScnTitle_Draw(title_of_scene_class* i_this) { /* 80237344-802374C8 .text dScnTitle_Execute__FP20title_of_scene_class */ BOOL dScnTitle_Execute(title_of_scene_class* i_this) { if (!fopOvlpM_IsPeek() && !dComIfG_resetToOpening(i_this)) { +#if VERSION == VERSION_PAL + daMP_c *movie = dScnTitle_c::mMp; + if (movie == NULL) { + s32 rt = fopAcM_SearchByID(i_this->mMoviePId, (fopAc_ac_c**)&movie); + JUT_ASSERT(0x8a, rt); + + if (movie == NULL) + return TRUE; + + dScnTitle_c::mMp = movie; + } +#else daMP_c *movie; s32 rt = fopAcM_SearchByID(i_this->mMoviePId, (fopAc_ac_c**)&movie); JUT_ASSERT(0x83, rt); if (movie == NULL) return TRUE; +#endif if (movie->mpCallBack1 == NULL || movie->mpCallBack2 == NULL) return TRUE; @@ -80,6 +106,9 @@ BOOL dScnTitle_IsDelete(title_of_scene_class* i_this) { /* 802374D0-802374D8 .text dScnTitle_Delete__FP20title_of_scene_class */ BOOL dScnTitle_Delete(title_of_scene_class* i_this) { +#if VERSION == VERSION_PAL + dComIfGp_event_remove(); +#endif return TRUE; } @@ -94,7 +123,16 @@ s32 dScnTitle_Create(scene_class* i_scn) { fopAc_ac_c::stopStatus = 0; dComIfGp_offEnableNextStage(); u32 parameter = fpcM_GetName(i_this) == PROC_TITLE_SCENE ? 0 : 1; + i_this->mMoviePId = fopAcM_create(PROC_MP, parameter, NULL, -1, NULL, NULL, 0xFF, NULL); + +#if VERSION == VERSION_PAL + dScnTitle_c::mMp = NULL; + if (fpcM_GetName(i_this) == PROC_ENDING_SCENE) { + fopMsgM_Create(PROC_MESG, 0, 0); + } +#endif + return cPhs_COMPLEATE_e; } diff --git a/src/m_Do/m_Do_Reset.cpp b/src/m_Do/m_Do_Reset.cpp index 65be5c534..1e362743c 100644 --- a/src/m_Do/m_Do_Reset.cpp +++ b/src/m_Do/m_Do_Reset.cpp @@ -23,7 +23,7 @@ void destroyVideo() { VIWaitForRetrace(); } -#if VERSION == VERSION_JP +#if VERSION == VERSION_JPN int mDoRst::mResetFlag; int mDoRst::mResetPrepare; int mDoRst::m3ButtonResetFlag; @@ -44,7 +44,7 @@ void mDoRst_reset(int param_0, unsigned long param_1, int param_2) { JUTGamePad::clearForReset(); mDoAud_zelAudio_c::offInitFlag(); -#if VERSION != VERSION_JP +#if VERSION != VERSION_JPN VIWaitForRetrace(); VIWaitForRetrace(); #endif @@ -64,7 +64,7 @@ void mDoRst_reset(int param_0, unsigned long param_1, int param_2) { destroyVideo(); my_OSCancelAlarmAll(); LCDisable(); -#if VERSION != VERSION_JP +#if VERSION != VERSION_JPN OSSetSaveRegion(mDoRst::mResetData, (u8*)&mDoRst::getResetData + 0x10); #endif OSResetSystem(param_0, param_1, param_2); @@ -92,7 +92,7 @@ void mDoRst_resetCallBack(int port, void*) { JUTGamePad::clearForReset(); JUTGamePad::CRumble::setEnabled(0xF0000000); } -#if VERSION != VERSION_JP +#if VERSION != VERSION_JPN if (DVDCheckDisk() == 0) { mDoRst_reset(1, 0x80000000, 0); }