Match pal modesel

This commit is contained in:
gamemasterplc 2025-03-14 19:18:12 -05:00
parent 22c6c0444b
commit 1c809d5316
7 changed files with 127 additions and 50 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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(

View file

@ -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;

View file

@ -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);

View file

@ -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();
}