Add support for PAL version (#464)

* Initial setup for PAL version

* Add hashes to config.yml
Set REL/empty.c to matching for every version
Turn off quick-analysis for PAL

* Set nisDll matching only for the US version

* More config.yml fixes and reran auto-analysis

* Split PAL to sprput

* Add more symbols

* Split a lot more code in PAL

* Split more

Also introduce version.h header

* Split to board stuff

* Port early board TUs to PAL

* More board PAL ports

* Split rest of board code

* Board RELs porting to PAL

* Match w06Dll/fire.c in PAL

* Match w04 big boo for PAL

---------

Co-authored-by: dbalatoni13 <stubiflex.junior@gmail.com>
This commit is contained in:
Liam Coleman 2024-11-16 12:35:24 -06:00 committed by GitHub
parent 80015a6e5e
commit d0a5c85d3e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
236 changed files with 40998 additions and 390 deletions

View file

@ -0,0 +1,33 @@
Sections:
.text type:code align:4
.ctors type:rodata align:4
.dtors type:rodata align:4
.rodata type:rodata align:8
.data type:data align:8
.bss type:bss align:8
REL/board_executor.c:
.text start:0x00000000 end:0x000000E0
.rodata start:0x00000000 end:0x00000010
REL/w10Dll/main.c:
.text start:0x000000E0 end:0x00000AEC
.rodata start:0x00000010 end:0x00000038
.data start:0x00000000 end:0x00000078
.bss start:0x00000000 end:0x00000018
REL/w10Dll/host.c:
.text start:0x00000AEC end:0x00000D2C
.rodata start:0x00000038 end:0x00000048
.data start:0x00000078 end:0x00000098
.bss start:0x00000018 end:0x00000020
REL/w10Dll/scene.c:
.text start:0x00000D2C end:0x00001984
.rodata start:0x00000048 end:0x00000058
REL/w10Dll/tutorial.c:
.text start:0x00001984 end:0x0000206C
.rodata start:0x00000058 end:0x00000070
.data start:0x00000098 end:0x000002D4
.bss start:0x00000020 end:0x00000038

View file

@ -0,0 +1,116 @@
ObjectSetup = .text:0x00000000; // type:function size:0x30 scope:local
_prolog = .text:0x00000030; // type:function size:0x64 scope:global
_epilog = .text:0x00000094; // type:function size:0x4C scope:global
BoardCreate = .text:0x000000E0; // type:function size:0x5F8
BoardDestroy = .text:0x000006D8; // type:function size:0x1E8
LightSetHook = .text:0x000008C0; // type:function size:0x44 scope:local
LightResetHook = .text:0x00000904; // type:function size:0x4 scope:local
LandEvent = .text:0x00000908; // type:function size:0x4 scope:local
WalkEvent = .text:0x0000090C; // type:function size:0x8 scope:local
fn_1_914 = .text:0x00000914; // type:function size:0x4
fn_1_918 = .text:0x00000918; // type:function size:0x4
WalkMiniEvent = .text:0x0000091C; // type:function size:0x4 scope:local
fn_1_920 = .text:0x00000920; // type:function size:0x1CC
HostCreate = .text:0x00000AEC; // type:function size:0xB4
HostWinExec = .text:0x00000BA0; // type:function size:0x70
HostPosSet = .text:0x00000C10; // type:function size:0x10
UpdateHost = .text:0x00000C20; // type:function size:0x10C scope:local
TutorialStartExec = .text:0x00000D2C; // type:function size:0x28
TutorialPreRollExec = .text:0x00000D54; // type:function size:0x28
TutorialOrderExec = .text:0x00000D7C; // type:function size:0x28
TutorialP1StartExec = .text:0x00000DA4; // type:function size:0x28
TutorialP2StartExec = .text:0x00000DCC; // type:function size:0x28
TutorialP3StartExec = .text:0x00000DF4; // type:function size:0x28
TutorialP4StartExec = .text:0x00000E1C; // type:function size:0x28
TutorialGameStartExec = .text:0x00000E44; // type:function size:0x50
TutorialRollExec = .text:0x00000E94; // type:function size:0x28
TutorialMoveExec = .text:0x00000EBC; // type:function size:0x28
TutorialLandExec = .text:0x00000EE4; // type:function size:0x4
TutorialLandBlueExec = .text:0x00000EE8; // type:function size:0x48
TutorialLandRedExec = .text:0x00000F30; // type:function size:0x3C
TutorialLandHappenExec = .text:0x00000F6C; // type:function size:0x4C
TutorialLandFortuneExec = .text:0x00000FB8; // type:function size:0x58
TutorialLandBowserExec = .text:0x00001010; // type:function size:0x4C
TutorialLandMushroomExec = .text:0x0000105C; // type:function size:0x3C
TutorialMushroomMegaExec = .text:0x00001098; // type:function size:0x28
TutorialMushroomMiniExec = .text:0x000010C0; // type:function size:0x38
TutorialLandBattleExec = .text:0x000010F8; // type:function size:0x3C
TutorialLandWarpExec = .text:0x00001134; // type:function size:0x44
TutorialWarpDecideExec = .text:0x00001178; // type:function size:0x28
TutorialBlockStarExec = .text:0x000011A0; // type:function size:0x4C
TutorialBlockCoinExec = .text:0x000011EC; // type:function size:0x54
TutorialMiniMegaExec = .text:0x00001240; // type:function size:0x38
TutorialMiniUseExec = .text:0x00001278; // type:function size:0x28
TutorialMiniStopExec = .text:0x000012A0; // type:function size:0x3C
TutorialMegaUseExec = .text:0x000012DC; // type:function size:0x28
TutorialMegaDiceExec = .text:0x00001304; // type:function size:0x28
TutorialMegaStompExec = .text:0x0000132C; // type:function size:0x28
TutorialMegaEventExec = .text:0x00001354; // type:function size:0x28
TutorialMegaStopExec = .text:0x0000137C; // type:function size:0x28
TutorialEndExec = .text:0x000013A4; // type:function size:0x3C8
TutorialMGStatusExec = .text:0x0000176C; // type:function size:0x30
TutorialMG4PExec = .text:0x0000179C; // type:function size:0x58
TutorialMG2Vs2Exec = .text:0x000017F4; // type:function size:0x40
TutorialMG1Vs3Exec = .text:0x00001834; // type:function size:0x88
TutorialMG1Vs3AltExec = .text:0x000018BC; // type:function size:0x4C
TutorialShopExec = .text:0x00001908; // type:function size:0x28
TutorialLotteryExec = .text:0x00001930; // type:function size:0x28
TutorialBooHouseExec = .text:0x00001958; // type:function size:0x28
TutorialNullExec = .text:0x00001980; // type:function size:0x4
CloseTutorial = .text:0x00001984; // type:function size:0x128 scope:local
TutorialHookExec = .text:0x00001AAC; // type:function size:0x2BC
TutorialSprCreate = .text:0x00001D68; // type:function size:0x84
TutorialSprKill = .text:0x00001DEC; // type:function size:0x50
TutorialSpaceShow = .text:0x00001E3C; // type:function size:0x174
TutorialSpaceHide = .text:0x00001FB0; // type:function size:0xBC
_ctors = .ctors:0x00000000; // type:label scope:global data:4byte
_dtors = .dtors:0x00000000; // type:label scope:global data:4byte
lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float
lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float
lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float
lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double
lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float
lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float
lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 scope:local data:float
lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float
lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float
lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float
lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float
lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float
lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double
mapObjTbl = .data:0x00000000; // type:object size:0x28 scope:local data:float
bgMdl = .data:0x00000028; // type:object size:0x2 scope:local data:2byte
fgMdl = .data:0x0000002A; // type:object size:0x2 scope:local data:2byte
boardStarHostMdl = .data:0x0000002C; // type:object size:0x2 data:2byte
boardShopHostMdl = .data:0x0000002E; // type:object size:0x2 data:2byte
boardLotteryHostMdl = .data:0x00000030; // type:object size:0x2 data:2byte
boardBooHouseHostMdl = .data:0x00000032; // type:object size:0x2 data:2byte
charMotDirTbl = .data:0x00000034; // type:object size:0x20 scope:local data:4byte
starHostMot = .data:0x00000054; // type:object size:0x8 scope:local
shopHostMot = .data:0x0000005C; // type:object size:0x8 scope:local
lotteryHostMot = .data:0x00000064; // type:object size:0x8 scope:local
booHouseHostMot = .data:0x0000006C; // type:object size:0x8 scope:local
hostMot = .data:0x00000078; // type:object size:0x8 scope:local
hostPosTbl = .data:0x00000080; // type:object size:0x18 scope:local data:float
lbl_1_data_98 = .data:0x00000098; // type:object size:0x2D scope:local data:string
rollDataTbl = .data:0x000000C6; // type:object size:0x42 scope:local
sceneTbl = .data:0x00000108; // type:object size:0x150 scope:local
lbl_1_data_258 = .data:0x00000258; // type:object size:0x50 scope:local data:string
tutorialSprTbl = .data:0x000002A8; // type:object size:0x2C scope:local
boardWork = .bss:0x00000000; // type:object size:0x4 data:4byte
lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte
motTbl = .bss:0x00000008; // type:object size:0x4 scope:local data:4byte
tutorialDoneF = .bss:0x0000000C; // type:object size:0x2 data:2byte
tutorialExitWin = .bss:0x0000000E; // type:object size:0x2 data:2byte
boardMapObjMdl = .bss:0x00000010; // type:object size:0x2 data:2byte
hostProc = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte
hostPos = .bss:0x0000001C; // type:object size:0x2 scope:local data:2byte
hostMdl = .bss:0x0000001E; // type:object size:0x2 scope:local data:2byte
sprCurr = .bss:0x00000020; // type:object size:0x2 scope:local data:2byte
sprList = .bss:0x00000022; // type:object size:0x16 scope:local