From 3463dd8dc2d39dd27938b0b440273cf0de5861b6 Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Sat, 29 Jun 2024 21:23:00 -0400 Subject: [PATCH] d_gameover done on JPN and PAL --- configure.py | 2 +- include/d/d_gameover.h | 3 +++ include/d/d_menu_save.h | 4 ++++ src/d/d_gameover.cpp | 24 +++++++++++------------- 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/configure.py b/configure.py index 1b5753aea..d053b1afe 100644 --- a/configure.py +++ b/configure.py @@ -495,7 +495,7 @@ config.libs = [ Object(Matching, "d/d_envse.cpp"), Object(NonMatching, "d/d_file_error.cpp"), Object(NonMatching, "d/d_file_select.cpp"), - Object(NonMatching, "d/d_gameover.cpp"), + Object(Matching, "d/d_gameover.cpp"), Object(NonMatching, "d/d_kankyo.cpp"), Object(Matching, "d/d_kyeff.cpp"), Object(Matching, "d/d_kyeff2.cpp"), diff --git a/include/d/d_gameover.h b/include/d/d_gameover.h index 77c9c4431..b8e4e093c 100644 --- a/include/d/d_gameover.h +++ b/include/d/d_gameover.h @@ -44,7 +44,10 @@ public: public: /* 0x004 */ J2DScreen* scrn; /* 0x008 */ fopMsgM_pane_class letter[8]; +#if VERSION != VERSION_JPN /* 0x1C8 */ u8 field_0x1c8[0x318 - 0x1c8]; +#endif + /* Offsets below are for USA/PAL */ /* 0x318 */ fopMsgM_pane_alpha_class blak; /* 0x320 */ JPABaseEmitter* mpEmitter0; /* 0x324 */ JPABaseEmitter* mpEmitter1; diff --git a/include/d/d_menu_save.h b/include/d/d_menu_save.h index 51189e73f..8e923a1c5 100644 --- a/include/d/d_menu_save.h +++ b/include/d/d_menu_save.h @@ -108,6 +108,10 @@ public: public: /* 0x0004 */ u8 field_0x0004; /* 0x0008 */ dDlst_MenuSave_c mDlst; +#if VERSION == VERSION_PAL + // Not 100% sure where these extra bytes go, but it has to be before field_0x0537. + /* 0x000C */ u8 field_0x000c_pal[0x0038]; +#endif /* 0x000C */ u8 field_0x000c[0x0524]; /* 0x0530 */ u8 field_0x0530; /* 0x0531 */ u8 field_0x0531; diff --git a/src/d/d_gameover.cpp b/src/d/d_gameover.cpp index c16227c63..e4a078784 100644 --- a/src/d/d_gameover.cpp +++ b/src/d/d_gameover.cpp @@ -14,7 +14,6 @@ /* 8018E1CC-8018E4B4 .text draw__24dDlst_Gameover_CAPTURE_cFv */ void dDlst_Gameover_CAPTURE_c::draw() { - /* Nonmatching */ GXTexObj texObj; GXSetTexCopySrc(0, 0, 640, 480); @@ -74,7 +73,7 @@ s32 dGameover_c::_create() { if (rt == cPhs_COMPLEATE_e) { dComIfGs_addDeathCount(); dRes_info_c* resInfo = dComIfG_getObjectResInfo("Gover"); - JUT_ASSERT(0xa0, resInfo != NULL); + JUT_ASSERT(VERSION_SELECT(0x9c, 0xa0, 0xa0), resInfo != NULL); mpHeap = dComIfGp_getExpHeap2D(); dComIfGp_setHeapLockFlag(4); @@ -84,12 +83,12 @@ s32 dGameover_c::_create() { dgo_scrn_c->setScreen("gameover.blo", resInfo->getArchive()); dMs_c = new dMenu_save_c(); - JUT_ASSERT(0xb6, dMs_c != NULL); + JUT_ASSERT(VERSION_SELECT(0xa7, 0xb6, 0xb6), dMs_c != NULL); dMs_c->field_0x0537 = 2; dMs_c->_create(); dgo_capture_c = new dDlst_Gameover_CAPTURE_c(); - JUT_ASSERT(0xbb, dgo_capture_c != NULL); + JUT_ASSERT(VERSION_SELECT(0xac, 0xbb, 0xbb), dgo_capture_c != NULL); mDoExt_setCurrentHeap(oldHeap); } else { @@ -170,7 +169,6 @@ BOOL dGameover_c::_draw() { /* 8018EA58-8018EB54 .text _delete__11dGameover_cFv */ BOOL dGameover_c::_delete() { - /* Nonmatching */ JKRHeap* oldHeap = mDoExt_setCurrentHeap(mpHeap); delete dgo_scrn_c->scrn; @@ -190,7 +188,11 @@ BOOL dGameover_c::deleteCheck() { return mState == 6; } +#if VERSION == VERSION_JPN +static const s16 dGover_tex_number = 8; +#else static s16 dGover_tex_number = 8; +#endif /* 8018EB68-8018EC9C .text setScreen__24dDlst_GameOverScrnDraw_cFPCcP10JKRArchive */ void dDlst_GameOverScrnDraw_c::setScreen(const char* filename, JKRArchive* arc) { @@ -259,10 +261,8 @@ BOOL dDlst_GameOverScrnDraw_c::animeOpen() { for (int i = 0; i < dGover_tex_number; i++) { - s16 userArea = letter[i].mUserArea; - - if (userArea >= 0 && userArea < 9) { - if (userArea >= 1 && var_r30 != i) { + if (letter[i].mUserArea >= 0 && letter[i].mUserArea < 9) { + if (letter[i].mUserArea >= 1 && var_r30 != i) { anime1(i); if (letter[i].mUserArea == 5) { dComIfGp_particle_set2Dfore(0x2E, &cXyz(x[i], 50.0f, 0.0f)); @@ -313,10 +313,8 @@ BOOL dDlst_GameOverScrnDraw_c::animeClose() { } for (int i = 0; i < dGover_tex_number; i++) { - s16 userArea = letter[i].mUserArea; - - if (userArea >= 0 && userArea < 7) { - if (userArea >= 1 && var_r30 != i) { + if (letter[i].mUserArea >= 0 && letter[i].mUserArea < 7) { + if (letter[i].mUserArea >= 1 && var_r30 != i) { anime2(i); }