diff --git a/config/GMPP01_00/rels/m457Dll/symbols.txt b/config/GMPP01_00/rels/m457Dll/symbols.txt index 4e212888..0b08cedf 100644 --- a/config/GMPP01_00/rels/m457Dll/symbols.txt +++ b/config/GMPP01_00/rels/m457Dll/symbols.txt @@ -120,7 +120,7 @@ lbl_1_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 scope:local data: lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 scope:local data:float lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 scope:local data:float sprDataNumTbl = .data:0x00000000; // type:object size:0x5C scope:local -sprIdTbl = .data:0x0000005C; // type:object size:0x5C data:4byte scope:local +sprIdTbl = .data:0x0000005C; // type:object size:0x5C scope:local data:4byte lbl_1_data_B8 = .data:0x000000B8; // type:object size:0x30 scope:local lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x30 scope:local lbl_1_data_118 = .data:0x00000118; // type:object size:0x30 scope:local @@ -129,49 +129,49 @@ lbl_1_data_154 = .data:0x00000154; // type:object size:0x30 scope:local lbl_1_data_184 = .data:0x00000184; // type:object size:0x30 scope:local lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x6C scope:local sparkDataTbl = .data:0x00000220; // type:object size:0x6C scope:local -lbl_1_data_28C = .data:0x0000028C; // type:object size:0x18 data:float scope:local -lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x2 data:2byte scope:local -lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x2 data:2byte scope:local -backgroundMusNo = .data:0x000002A8; // type:object size:0x4 data:4byte scope:local -windSeNo = .data:0x000002AC; // type:object size:0x4 data:4byte scope:local -lbl_1_data_2B0 = .data:0x000002B0; // type:object size:0x2 data:2byte scope:local -invincibilitySeNo = .data:0x000002B4; // type:object size:0x4 data:4byte scope:local -lbl_1_data_2B8 = .data:0x000002B8; // type:object size:0x4 data:4byte scope:local +lbl_1_data_28C = .data:0x0000028C; // type:object size:0x18 scope:local data:float +lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x2 scope:local data:2byte +lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x2 scope:local data:2byte +backgroundMusNo = .data:0x000002A8; // type:object size:0x4 scope:local data:4byte +windSeNo = .data:0x000002AC; // type:object size:0x4 scope:local data:4byte +lbl_1_data_2B0 = .data:0x000002B0; // type:object size:0x2 scope:local data:2byte +invincibilitySeNo = .data:0x000002B4; // type:object size:0x4 scope:local data:4byte +lbl_1_data_2B8 = .data:0x000002B8; // type:object size:0x4 scope:local data:4byte lbl_1_data_2BC = .data:0x000002BC; // type:object size:0x9 scope:local data:string lbl_1_data_2C5 = .data:0x000002C5; // type:object size:0x3 scope:local data:string jumptable_1_data_2C8 = .data:0x000002C8; // type:object size:0x2C scope:local jumptable_1_data_2F4 = .data:0x000002F4; // type:object size:0x48 scope:local -lbl_1_data_33C = .data:0x0000033C; // type:object size:0x4 data:4byte scope:local -lbl_1_data_340 = .data:0x00000340; // type:object size:0x4 data:float scope:local -lbl_1_data_344 = .data:0x00000344; // type:object size:0x4 data:float scope:local -lbl_1_data_348 = .data:0x00000348; // type:object size:0x4 data:float scope:local +lbl_1_data_33C = .data:0x0000033C; // type:object size:0x4 scope:local data:4byte +lbl_1_data_340 = .data:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_data_344 = .data:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_data_348 = .data:0x00000348; // type:object size:0x4 scope:local data:float jumptable_1_data_34C = .data:0x0000034C; // type:object size:0x20 scope:local jumptable_1_data_36C = .data:0x0000036C; // type:object size:0x2C scope:local lbl_1_data_398 = .data:0x00000398; // type:object size:0x12 scope:local data:string lbl_1_data_3AA = .data:0x000003AA; // type:object size:0x19 scope:local data:string lbl_1_data_3C3 = .data:0x000003C3; // type:object size:0x24 scope:local data:string -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte scope:local -m457MesEndF = .bss:0x00000010; // type:object size:0x4 data:4byte scope:local -againstBrowserF = .bss:0x00000014; // type:object size:0x4 data:4byte scope:local -lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte scope:local -lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte scope:local -lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte scope:local -lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte scope:local -lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:float scope:local -lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:float scope:local -lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:float scope:local -lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:float scope:local -lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte scope:local -lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte scope:local -lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte scope:local -lightId = .bss:0x00000048; // type:object size:0x4 data:4byte scope:local -objman = .bss:0x0000004C; // type:object size:0x4 data:4byte scope:local -lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte scope:local -lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte scope:local -gameState = .bss:0x0000005C; // type:object size:0x4 data:4byte scope:local -lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:4byte scope:local -gameObj = .bss:0x00000064; // type:object size:0x4 data:4byte scope:local -playerObj = .bss:0x00000068; // type:object size:0x8 data:4byte scope:local -omViewObj = .bss:0x00000070; // type:object size:0x4 data:4byte scope:local -mainObj = .bss:0x00000074; // type:object size:0x4 data:4byte scope:local -lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x50 data:4byte scope:local +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 scope:local data:4byte +m457MesEndF = .bss:0x00000010; // type:object size:0x4 scope:local data:4byte +againstBrowserF = .bss:0x00000014; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 scope:local data:4byte +lightId = .bss:0x00000048; // type:object size:0x4 scope:local data:4byte +objman = .bss:0x0000004C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 scope:local data:4byte +gameState = .bss:0x0000005C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 scope:local data:4byte +gameObj = .bss:0x00000064; // type:object size:0x4 scope:local data:4byte +playerObj = .bss:0x00000068; // type:object size:0x8 scope:local data:4byte +omViewObj = .bss:0x00000070; // type:object size:0x4 scope:local data:4byte +mainObj = .bss:0x00000074; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x50 scope:local data:4byte diff --git a/config/GMPP01_00/rels/modeseldll/splits.txt b/config/GMPP01_00/rels/modeseldll/splits.txt index 531cd645..8dd4d423 100644 --- a/config/GMPP01_00/rels/modeseldll/splits.txt +++ b/config/GMPP01_00/rels/modeseldll/splits.txt @@ -5,3 +5,30 @@ Sections: .rodata type:rodata align:8 .data type:data align:8 .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/modeseldll/main.c: + .text start:0x000000A0 end:0x00002528 + .rodata start:0x00000000 end:0x000000B8 + .data start:0x00000000 end:0x00000080 + .bss start:0x00000000 end:0x00000080 + +REL/modeseldll/modesel.c: + .text start:0x00002528 end:0x00003874 + .rodata start:0x000000B8 end:0x000001B0 + .data start:0x00000080 end:0x00000100 + .bss start:0x00000080 end:0x00000088 + +REL/modeseldll/filesel.c: + .text start:0x00003874 end:0x0000BFDC + .rodata start:0x000001B0 end:0x00000318 + .data start:0x00000100 end:0x00000428 + .bss start:0x00000088 end:0x00000150 + +REL/modeseldll/datalist.c: + .text start:0x0000BFDC end:0x0000C438 + .rodata start:0x00000318 end:0x00000328 + .data start:0x00000428 end:0x00000A2C + .bss start:0x00000150 end:0x000001CA diff --git a/config/GMPP01_00/rels/modeseldll/symbols.txt b/config/GMPP01_00/rels/modeseldll/symbols.txt index 5cfb1784..fb5fd9a4 100644 --- a/config/GMPP01_00/rels/modeseldll/symbols.txt +++ b/config/GMPP01_00/rels/modeseldll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -fn_1_A0 = .text:0x000000A0; // type:function size:0x374 +ObjectSetup = .text:0x000000A0; // type:function size:0x374 fn_1_414 = .text:0x00000414; // type:function size:0x678 fn_1_A8C = .text:0x00000A8C; // type:function size:0xFC fn_1_B88 = .text:0x00000B88; // type:function size:0x9C @@ -263,7 +263,8 @@ lbl_1_bss_13A = .bss:0x0000013A; // type:object size:0x6 lbl_1_bss_140 = .bss:0x00000140; // type:object size:0x6 lbl_1_bss_146 = .bss:0x00000146; // type:object size:0x2 data:2byte lbl_1_bss_148 = .bss:0x00000148; // type:object size:0x2 data:2byte -lbl_1_bss_14C = .bss:0x0000014C; // type:object size:0x6 +lbl_1_bss_14C = .bss:0x0000014C; // type:object size:0x4 data:4byte +lbl_1_bss_150 = .bss:0x00000150; // type:object size:0x2 lbl_1_bss_152 = .bss:0x00000152; // type:object size:0x18 data:2byte lbl_1_bss_16A = .bss:0x0000016A; // type:object size:0x30 data:2byte lbl_1_bss_19A = .bss:0x0000019A; // type:object size:0x30 data:2byte diff --git a/configure.py b/configure.py index c9437b77..513b0305 100644 --- a/configure.py +++ b/configure.py @@ -1373,10 +1373,10 @@ config.libs = [ Rel( "modeseldll", objects={ - Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/modeseldll/main.c"), - Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/modeseldll/modesel.c"), - Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/modeseldll/filesel.c"), - Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/modeseldll/datalist.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/modeseldll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/modeseldll/modesel.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/modeseldll/filesel.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/modeseldll/datalist.c"), }, ), Rel( diff --git a/src/REL/modeseldll/filesel.c b/src/REL/modeseldll/filesel.c index aa81055f..16712e88 100644 --- a/src/REL/modeseldll/filesel.c +++ b/src/REL/modeseldll/filesel.c @@ -122,6 +122,9 @@ s32 fn_1_37DC(void) } if (!SLSaveFlagGet()) { GWGameStatReset(); + #if VERSION_PAL + _ClearFlag(0x1000B); + #endif GWGameStat.sound_mode = msmSysGetOutputMode(); result = 1; break; @@ -428,7 +431,11 @@ loop_exit: temp_r29 = 0; if (temp_r28 == -2) { HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[temp_r31]), 0); + #if VERSION_PAL + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x39)); + #else HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x37)); + #endif HuWinMesWait(lbl_1_bss_148); temp_r29 = 1; } @@ -970,6 +977,9 @@ s32 fn_1_61B4(void) sp8 = OSGetTime(); SLSaveDataMake(1, &sp8); GWGameStatReset(); + #if VERSION_PAL + _ClearFlag(0x1000B); + #endif GWGameStat.sound_mode = msmSysGetOutputMode(); SLCommonSet(); fn_1_B8CC(MAKE_MESSID(16, 0x3C)); @@ -1011,6 +1021,13 @@ s32 fn_1_61B4(void) if (SLCheckSumCheck()) { fn_1_9E14(); SLLoadGameStat(); + #if VERSION_PAL + if(GwLanguageSave != -1) { + GWGameStat.language = GwLanguageSave; + } + GwLanguage = GWGameStat.language; + _ClearFlag(0x1000B); + #endif temp_r31 = 1; break; } @@ -1172,7 +1189,11 @@ s32 fn_1_76B4(char *name, s16 slotno) } if (result == -2) { HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[slotno]), 0); + #if VERSION_PAL + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x39)); + #else HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x37)); + #endif HuWinMesWait(lbl_1_bss_148); return result; } @@ -2002,6 +2023,16 @@ void fn_1_AAB8(void) HuSprGrpPosSet(lbl_1_bss_110[temp_r30], sp14.x, sp14.y); HuSprGrpScaleSet(lbl_1_bss_110[temp_r30], temp_f31, temp_f31); OSTicksToCalendarTime(lbl_1_bss_D0[temp_r30], &sp20); + #if VERSION_PAL + temp_r29 = sp20.mday; + HuSprBankSet(lbl_1_bss_110[temp_r30], 0, temp_r29 / 10); + temp_r29 -= (temp_r29 / 10) * 10; + HuSprBankSet(lbl_1_bss_110[temp_r30], 1, temp_r29); + temp_r29 = sp20.mon+1; + HuSprBankSet(lbl_1_bss_110[temp_r30], 3, temp_r29 / 10); + temp_r29 -= (temp_r29 / 10) * 10; + HuSprBankSet(lbl_1_bss_110[temp_r30], 4, temp_r29); + #else temp_r29 = sp20.mon + 1; HuSprBankSet(lbl_1_bss_110[temp_r30], 0, temp_r29 / 10); temp_r29 -= (temp_r29 / 10) * 10; @@ -2010,6 +2041,7 @@ void fn_1_AAB8(void) HuSprBankSet(lbl_1_bss_110[temp_r30], 3, temp_r29 / 10); temp_r29 -= (temp_r29 / 10) * 10; HuSprBankSet(lbl_1_bss_110[temp_r30], 4, temp_r29); + #endif temp_r29 = sp20.hour; HuSprBankSet(lbl_1_bss_110[temp_r30], 6, temp_r29 / 10); temp_r29 -= (temp_r29 / 10) * 10; diff --git a/src/REL/modeseldll/main.c b/src/REL/modeseldll/main.c index 7505272f..2ece1b9d 100644 --- a/src/REL/modeseldll/main.c +++ b/src/REL/modeseldll/main.c @@ -84,17 +84,30 @@ void fn_1_414(void) while (WipeStatGet()) { HuPrcVSleep(); } + #if VERSION_PAL + if(GwLanguageSave != -1) { + GWGameStat.language = GwLanguageSave; + } else if(GwLanguage != -1) { + GWGameStat.language = GwLanguage; + } + #endif omOvlReturnEx(1, 1); while (1) { HuPrcVSleep(); } } else { - s16 group = HuSprGrpCreate(1); - s16 sprite = HuTHPSprCreateVol("movie/opmov_s00.thp", 0, 3000, 70.0); - HuSprGrpMemberSet(group, 0, sprite); - HuSprPosSet(group, 0, 288, 240); - HuSprDrawNoSet(group, 0, 127); + s16 grpId; + s16 sprId; + #if VERSION_PAL + HuWinAllKill(); + HuWinInit(1); + #endif + grpId = HuSprGrpCreate(1); + sprId = HuTHPSprCreateVol("movie/opmov_s00.thp", 0, 3000, 70.0); + HuSprGrpMemberSet(grpId, 0, sprId); + HuSprPosSet(grpId, 0, 288, 240); + HuSprDrawNoSet(grpId, 0, 127); HuPrcSleep(2); espAttrSet(lbl_1_bss_152[0], HUSPR_ATTR_DISPOFF); HuAudFXStop(lbl_1_data_100); @@ -102,7 +115,7 @@ void fn_1_414(void) HuPrcVSleep(); } HuTHPClose(); - HuSprGrpKill(group); + HuSprGrpKill(grpId); } } espAttrReset(lbl_1_bss_152[9], HUSPR_ATTR_DISPOFF); diff --git a/src/REL/modeseldll/modesel.c b/src/REL/modeseldll/modesel.c index 74fc30e9..ff96fbbc 100644 --- a/src/REL/modeseldll/modesel.c +++ b/src/REL/modeseldll/modesel.c @@ -213,7 +213,11 @@ s32 fn_1_2490(void) } _ClearFlag(FLAG_ID_MAKE(1, 11)); WipeColorSet(255, 255, 255); + #if VERSION_PAL + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + #else WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 10); + #endif while (WipeStatGet()) { HuPrcVSleep(); }