diff --git a/config/eur/arm9/delinks.txt b/config/eur/arm9/delinks.txt index 4fce80b00..26b32b438 100644 --- a/config/eur/arm9/delinks.txt +++ b/config/eur/arm9/delinks.txt @@ -71,6 +71,14 @@ libs/c/src/ansi_files.c: .data start:0x020446a8 end:0x0204478c .bss start:0x020517a0 end:0x02051aa0 +libs/c/src/float.c: + complete + .data start:0x0204478c end:0x02044790 + +libs/c/src/locale.c: + complete + .data start:0x02044790 end:0x020449ac + libs/c/src/arith.c: complete .text start:0x020338d4 end:0x020338ec @@ -117,14 +125,6 @@ libs/c/src/wmem.c: complete .text start:0x020341f8 end:0x02034230 -libs/c/src/float.c: - complete - .data start:0x0204478c end:0x02044790 - -libs/c/src/locale.c: - complete - .data start:0x02044790 end:0x020449ac - libs/c/src/wprintf.c: .text start:0x02034230 end:0x0203615c .data start:0x020449ac end:0x02044a2c diff --git a/config/eur/arm9/itcm/symbols.txt b/config/eur/arm9/itcm/symbols.txt index 52c9041e3..a684f426e 100644 --- a/config/eur/arm9/itcm/symbols.txt +++ b/config/eur/arm9/itcm/symbols.txt @@ -153,9 +153,9 @@ func_01ffd1b4 kind:function(arm,size=0x64) addr:0x01ffd1b4 func_01ffd218 kind:function(arm,size=0x38) addr:0x01ffd218 func_01ffd250 kind:function(arm,size=0x44) addr:0x01ffd250 func_01ffd294 kind:function(arm,size=0x11c) addr:0x01ffd294 -func_01ffd3b0 kind:function(arm,size=0x28) addr:0x01ffd3b0 -_ZN18UnkStruct_027e09a413func_01ffd3d8Ev kind:function(arm,size=0x28) addr:0x01ffd3d8 -_ZNK18UnkStruct_027e09a413func_01ffd400Ev kind:function(arm,size=0x20) addr:0x01ffd400 +_ZN18UnkStruct_027e09a46IsLandEv kind:function(arm,size=0x28) addr:0x01ffd3b0 +_ZN18UnkStruct_027e09a47IsTrainEv kind:function(arm,size=0x28) addr:0x01ffd3d8 +_ZNK18UnkStruct_027e09a421GetCurrentCourseEntryEv kind:function(arm,size=0x20) addr:0x01ffd400 _ZN18UnkStruct_027e09b813func_01ffd420Ev kind:function(arm,size=0x1c) addr:0x01ffd420 func_01ffd43c kind:function(arm,size=0x60) addr:0x01ffd43c func_01ffd49c kind:function(arm,size=0x1a4) addr:0x01ffd49c diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index b2257e28c..033247f45 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -487,7 +487,7 @@ func_ov000_0206176c kind:function(thumb,size=0xbc) addr:0x0206176c func_ov000_02061828 kind:function(thumb,size=0x28) addr:0x02061828 _ZN23UnkStruct_027e0998_Base19func_ov000_02061850Ei kind:function(arm,size=0x18) addr:0x02061850 _ZN23UnkStruct_027e0998_Base8vfunc_00EP7VecFx32P5Vec2sPt kind:function(arm,size=0x1e0) addr:0x02061868 -func_ov000_02061a48 kind:function(arm,size=0x28) addr:0x02061a48 +_ZN23UnkStruct_027e0998_Base19func_ov000_02061a48EP7VecFx32P5Vec2sS3_ kind:function(arm,size=0x28) addr:0x02061a48 _ZN23UnkStruct_027e0998_Base19func_ov000_02061a70Ev kind:function(arm,size=0xc) addr:0x02061a70 func_ov000_02061a7c kind:function(arm,size=0x10) addr:0x02061a7c _ZN26GameModeManagerBase_104_0CD1Ev kind:function(arm,size=0x18) addr:0x02061a8c @@ -985,7 +985,7 @@ func_ov000_02070120 kind:function(arm,size=0x14) addr:0x02070120 func_ov000_02070134 kind:function(arm,size=0x14) addr:0x02070134 func_ov000_02070148 kind:function(arm,size=0x1c) addr:0x02070148 func_ov000_02070164 kind:function(arm,size=0xfc) addr:0x02070164 -func_ov000_02070260 kind:function(arm,size=0x3c) addr:0x02070260 +_ZN18UnkStruct_027e09a021GetSceneIndexFromNameEPKc kind:function(arm,size=0x3c) addr:0x02070260 _ZN18UnkStruct_027e09a014GetCourseEntryEj kind:function(arm,size=0xc) addr:0x0207029c func_ov000_020702a8 kind:function(arm,size=0x14) addr:0x020702a8 _ZN18UnkStruct_027e09a017GetRoomEntryIndexEv kind:function(arm,size=0x40) addr:0x020702bc @@ -1413,9 +1413,9 @@ func_ov000_0207bd84 kind:function(arm,size=0x260) addr:0x0207bd84 func_ov000_0207bfe4 kind:function(arm,size=0x4) addr:0x0207bfe4 _ZN19func_ov000_0207bfe8D0Ev kind:function(arm,size=0x14) addr:0x0207bfe8 func_ov000_0207bffc kind:function(arm,size=0x4) addr:0x0207bffc -func_ov000_0207c000 kind:function(arm,size=0x8) addr:0x0207c000 -func_ov000_0207c008 kind:function(arm,size=0x8) addr:0x0207c008 -func_ov000_0207c010 kind:function(arm,size=0x8) addr:0x0207c010 +_ZN26UnkStruct_027e0ce0_38_Base8vfunc_08Ev kind:function(arm,size=0x8) addr:0x0207c000 +_ZN26UnkStruct_027e0ce0_38_Base8vfunc_0CEv kind:function(arm,size=0x8) addr:0x0207c008 +_ZN26UnkStruct_027e0ce0_38_Base8vfunc_10Ev kind:function(arm,size=0x8) addr:0x0207c010 _ZN17MapObject_10_BaseC2Ev kind:function(arm,size=0x30) addr:0x0207c018 func_ov000_0207c048 kind:function(arm,size=0x30) addr:0x0207c048 func_ov000_0207c078 kind:function(arm,size=0x38) addr:0x0207c078 @@ -1761,7 +1761,7 @@ func_ov000_020861a0 kind:function(arm,size=0xf8) addr:0x020861a0 func_ov000_02086298 kind:function(arm,size=0x16c) addr:0x02086298 func_ov000_02086404 kind:function(arm,size=0xf4) addr:0x02086404 func_ov000_020864f8 kind:function(arm,size=0x114) addr:0x020864f8 -func_ov000_0208660c kind:function(thumb,size=0xf8) addr:0x0208660c +_ZN14PlayerActor_9CC1Ev kind:function(thumb,size=0xf8) addr:0x0208660c func_ov000_02086704 kind:function(thumb,size=0x54) addr:0x02086704 func_ov000_02086758 kind:function(arm,size=0x9c) addr:0x02086758 func_ov000_020867f4 kind:function(arm,size=0x3c) addr:0x020867f4 @@ -2114,7 +2114,7 @@ func_ov000_0209167c kind:function(arm,size=0x40) addr:0x0209167c _ZN19func_ov000_020916bcD0Ev kind:function(arm,size=0x48) addr:0x020916bc func_ov000_02091704 kind:function(arm,size=0xe4) addr:0x02091704 func_ov000_020917e8 kind:function(arm,size=0x4c4) addr:0x020917e8 -func_ov000_02091cac kind:function(thumb,size=0x1f4) addr:0x02091cac +_ZN14PlayerActor_A0C1Ev kind:function(thumb,size=0x1f4) addr:0x02091cac func_ov000_02091ea0 kind:function(arm,size=0x18) addr:0x02091ea0 func_ov000_02091eb8 kind:function(arm,size=0x50) addr:0x02091eb8 func_ov000_02091f08 kind:function(arm,size=0x28) addr:0x02091f08 diff --git a/config/eur/arm9/overlays/ov001/delinks.txt b/config/eur/arm9/overlays/ov001/delinks.txt index c61bcce41..b5d37133c 100644 --- a/config/eur/arm9/overlays/ov001/delinks.txt +++ b/config/eur/arm9/overlays/ov001/delinks.txt @@ -20,6 +20,9 @@ src/001_SceneInit/CargoManager_001.cpp: src/001_SceneInit/PassengerManager_001.cpp: .text start:0x020bf870 end:0x020bfa50 +src/001_SceneInit/UnkStruct_027e0cf8_08_00_001.cpp: + .text start:0x020bfa50 end:0x020bfcc0 + src/001_SceneInit/Game/AdventureModeManager_001.cpp: .text start:0x020bff74 end:0x020c0944 diff --git a/config/eur/arm9/overlays/ov001/symbols.txt b/config/eur/arm9/overlays/ov001/symbols.txt index 65ce0ab28..3b939572b 100644 --- a/config/eur/arm9/overlays/ov001/symbols.txt +++ b/config/eur/arm9/overlays/ov001/symbols.txt @@ -197,7 +197,7 @@ _ZN11ItemManager19func_ov001_020bb9f8Ev kind:function(thumb,size=0x5c) addr:0x02 func_ov001_020bba54 kind:function(thumb,size=0x18) addr:0x020bba54 func_ov001_020bba6c kind:function(thumb,size=0x58) addr:0x020bba6c func_ov001_020bbac4 kind:function(thumb,size=0x5c) addr:0x020bbac4 -func_ov001_020bbb20 kind:function(thumb,size=0x260) addr:0x020bbb20 +_ZN18PlayerActorBase_70C1Ev kind:function(thumb,size=0x260) addr:0x020bbb20 func_ov001_020bbd80 kind:function(thumb,size=0x96) addr:0x020bbd80 func_ov001_020bbe18 kind:function(thumb,size=0x4c) addr:0x020bbe18 func_ov001_020bbe64 kind:function(thumb,size=0x7c) addr:0x020bbe64 @@ -209,7 +209,7 @@ func_ov001_020bbf24 kind:function(thumb,size=0x2a) addr:0x020bbf24 func_ov001_020bbf50 kind:function(thumb,size=0x2a) addr:0x020bbf50 func_ov001_020bbf7c kind:function(thumb,size=0x50) addr:0x020bbf7c func_ov001_020bbfcc kind:function(thumb,size=0x5a) addr:0x020bbfcc -func_ov001_020bc028 kind:function(thumb,size=0x88) addr:0x020bc028 +_ZN26UnkStruct_027e0ce0_40_BaseC2Ev kind:function(thumb,size=0x88) addr:0x020bc028 func_ov001_020bc0b0 kind:function(thumb,size=0x30) addr:0x020bc0b0 func_ov001_020bc0e0 kind:function(thumb,size=0x154) addr:0x020bc0e0 func_ov001_020bc234 kind:function(thumb,size=0x16) addr:0x020bc234 @@ -235,18 +235,18 @@ func_ov001_020bc75c kind:function(thumb,size=0xc) addr:0x020bc75c func_ov001_020bc768 kind:function(thumb,size=0x20) addr:0x020bc768 func_ov001_020bc788 kind:function(thumb,size=0xc) addr:0x020bc788 func_ov001_020bc794 kind:function(thumb,size=0x8c) addr:0x020bc794 -func_ov001_020bc820 kind:function(thumb,size=0x124) addr:0x020bc820 +_ZN15PlayerActorBaseC2Ev kind:function(thumb,size=0x124) addr:0x020bc820 func_ov001_020bc944 kind:function(thumb,size=0x28) addr:0x020bc944 func_ov001_020bc96c kind:function(thumb,size=0x2e) addr:0x020bc96c -func_ov001_020bc99c kind:function(thumb,size=0x138) addr:0x020bc99c -func_ov001_020bcad4 kind:function(thumb,size=0xc) addr:0x020bcad4 +_ZN11PlayerActorC1Ev kind:function(thumb,size=0x138) addr:0x020bc99c +_ZN15PlayerActor_1B0D1Ev kind:function(thumb,size=0xc) addr:0x020bcad4 func_ov001_020bcae0 kind:function(thumb,size=0x80) addr:0x020bcae0 func_ov001_020bcb60 kind:function(thumb,size=0x10) addr:0x020bcb60 func_ov001_020bcb70 kind:function(thumb,size=0x36) addr:0x020bcb70 func_ov001_020bcba8 kind:function(thumb,size=0x26) addr:0x020bcba8 func_ov001_020bcbd0 kind:function(thumb,size=0x98) addr:0x020bcbd0 func_ov001_020bcc68 kind:function(thumb,size=0x20) addr:0x020bcc68 -func_ov001_020bcc88 kind:function(thumb,size=0xc) addr:0x020bcc88 +_ZN15PlayerActor_1B0C1Ev kind:function(thumb,size=0xc) addr:0x020bcc88 func_ov001_020bcc94 kind:function(thumb,size=0xc) addr:0x020bcc94 func_ov001_020bcca0 kind:function(thumb,size=0x46) addr:0x020bcca0 func_ov001_020bcce8 kind:function(thumb,size=0x2) addr:0x020bcce8 @@ -273,7 +273,7 @@ func_ov001_020bd728 kind:function(thumb,size=0xc) addr:0x020bd728 _ZN23GameModeManagerBase_00419func_ov001_020bd734EPi kind:function(thumb,size=0x50) addr:0x020bd734 _ZN23GameModeManagerBase_00419func_ov001_020bd784Ev kind:function(thumb,size=0x3c) addr:0x020bd784 func_ov001_020bd7c0 kind:function(thumb,size=0x8) addr:0x020bd7c0 -func_ov001_020bd7c8 kind:function(thumb,size=0x32) addr:0x020bd7c8 +_ZN24UnkStruct_ov024_020d86a0C1Ev kind:function(thumb,size=0x32) addr:0x020bd7c8 _ZN24UnkStruct_ov024_020d86a0D1Ev kind:function(thumb,size=0x1a) addr:0x020bd7fc _ZN24UnkStruct_ov024_020d86a019func_ov001_020bd818Ev kind:function(thumb,size=0x24) addr:0x020bd818 func_ov001_020bd83c kind:function(thumb,size=0xc) addr:0x020bd83c @@ -401,9 +401,9 @@ _ZN16PassengerManager19func_ov001_020bf910Ev kind:function(thumb,size=0x10c) add _ZN16PassengerManager19func_ov001_020bfa1cEv kind:function(thumb,size=0x1c) addr:0x020bfa1c _ZN8InstanceI16PassengerManagerEC2Ev kind:function(thumb,size=0xc) addr:0x020bfa38 _ZN8InstanceI16PassengerManagerED2Ev kind:function(thumb,size=0xc) addr:0x020bfa44 -func_ov001_020bfa50 kind:function(thumb,size=0xc2) addr:0x020bfa50 -func_ov001_020bfb14 kind:function(thumb,size=0xc) addr:0x020bfb14 -func_ov001_020bfb20 kind:function(thumb,size=0x1a0) addr:0x020bfb20 +_ZN24UnkStruct_027e0cf8_08_00C1Eh kind:function(thumb,size=0xc2) addr:0x020bfa50 +_ZN24UnkStruct_027e0cf8_08_00D1Ev kind:function(thumb,size=0xc) addr:0x020bfb14 +_ZN24UnkStruct_027e0cf8_08_0019func_ov001_020bfb20Ev kind:function(thumb,size=0x1a0) addr:0x020bfb20 func_ov001_020bfcc0 kind:function(thumb,size=0x30) addr:0x020bfcc0 func_ov001_020bfcf0 kind:function(thumb,size=0x30) addr:0x020bfcf0 func_ov001_020bfd20 kind:function(thumb,size=0x34) addr:0x020bfd20 diff --git a/config/eur/arm9/overlays/ov014/relocs.txt b/config/eur/arm9/overlays/ov014/relocs.txt index 096c23e45..3cb9c89e2 100644 --- a/config/eur/arm9/overlays/ov014/relocs.txt +++ b/config/eur/arm9/overlays/ov014/relocs.txt @@ -247,7 +247,7 @@ from:0x020b779e kind:thumb_call to:0x020b763c module:overlay(14) from:0x020b77a8 kind:thumb_call to:0x020b75f0 module:overlay(14) from:0x020b77b4 kind:thumb_call_arm to:0x020d64a8 module:overlay(24) from:0x020b77c4 kind:thumb_call to:0x020b76b8 module:overlay(14) -from:0x020b77d6 kind:thumb_call_arm to:0x020d64a0 module:overlays(20,24) +from:0x020b77d6 kind:thumb_call_arm to:0x020d64a0 module:overlay(24) from:0x020b77de kind:thumb_call to:0x020b7e04 module:overlay(14) from:0x020b77f4 kind:load to:0x020d86b0 module:overlay(24) from:0x020b77fc kind:thumb_call to:0x020b7600 module:overlay(14) @@ -256,7 +256,7 @@ from:0x020b780e kind:thumb_call to:0x020b763c module:overlay(14) from:0x020b7818 kind:thumb_call to:0x020b7600 module:overlay(14) from:0x020b7824 kind:thumb_call_arm to:0x020d64a8 module:overlay(24) from:0x020b7836 kind:thumb_call to:0x020b76b8 module:overlay(14) -from:0x020b7850 kind:thumb_call_arm to:0x020d64a0 module:overlays(20,24) +from:0x020b7850 kind:thumb_call_arm to:0x020d64a0 module:overlay(24) from:0x020b785a kind:thumb_call to:0x020b7e04 module:overlay(14) from:0x020b786c kind:load to:0x020d86b0 module:overlay(24) from:0x020b7898 kind:thumb_call to:0x020b7f80 module:overlay(14) diff --git a/config/eur/arm9/overlays/ov017/symbols.txt b/config/eur/arm9/overlays/ov017/symbols.txt index 0d78e9ece..960a48227 100644 --- a/config/eur/arm9/overlays/ov017/symbols.txt +++ b/config/eur/arm9/overlays/ov017/symbols.txt @@ -145,8 +145,8 @@ func_ov017_020c30b0 kind:function(arm,size=0x34) addr:0x020c30b0 func_ov017_020c30e4 kind:function(arm,size=0x34) addr:0x020c30e4 func_ov017_020c3118 kind:function(arm,size=0x24) addr:0x020c3118 func_ov017_020c313c kind:function(arm,size=0x44) addr:0x020c313c -func_ov017_020c3180 kind:function(arm,size=0x4c) addr:0x020c3180 -func_ov017_020c31cc kind:function(arm,size=0x1a8) addr:0x020c31cc +_ZN24UnkStruct_ov024_020d86a019func_ov017_020c3180Ev kind:function(arm,size=0x4c) addr:0x020c3180 +_ZN24UnkStruct_ov024_020d86a019func_ov017_020c31ccEv kind:function(arm,size=0x1a8) addr:0x020c31cc func_ov017_020c3374 kind:function(arm,size=0xa0) addr:0x020c3374 func_ov017_020c3414 kind:function(arm,size=0x160) addr:0x020c3414 func_ov017_020c3574 kind:function(arm,size=0x74) addr:0x020c3574 diff --git a/config/eur/arm9/overlays/ov024/delinks.txt b/config/eur/arm9/overlays/ov024/delinks.txt index 5c84baafd..9384c1d61 100644 --- a/config/eur/arm9/overlays/ov024/delinks.txt +++ b/config/eur/arm9/overlays/ov024/delinks.txt @@ -119,6 +119,10 @@ src/024_MainGame/UnkStruct_020d8698_024.cpp: src/024_MainGame/UnkStruct_027e0cf8_00_0C_024.cpp: .text start:0x020cf968 end:0x020d05ec + .rodata start:0x020d7454 end:0x020d7544 + .init start:0x020d7920 end:0x020d7a40 + .ctor start:0x020d7b38 end:0x020d7b3c + .data start:0x020d8094 end:0x020d8200 src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp: complete @@ -130,29 +134,57 @@ src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp: .bss start:0x020d869c end:0x020d86a0 src/024_MainGame/UnkStruct_ov024_020d86a0_024.cpp: + complete .text start:0x020d1658 end:0x020d16fc + .data start:0x020d8208 end:0x020d8224 + +src/024_MainGame/PlayerActor_A0_38_024.cpp: + .text start:0x020d16fc end:0x020d19f8 + .init start:0x020d7a6c end:0x020d7ab4 + .ctor start:0x020d7b40 end:0x020d7b44 + .data start:0x020d8224 end:0x020d8254 -src/024_MainGame/code_020d16fc_024.cpp: - .text start:0x020d16fc end:0x020d24d4 +src/024_MainGame/CreditsEndingType.cpp: + complete + .text start:0x020d19f8 end:0x020d1a18 + .data start:0x020d8254 end:0x020d8258 -src/024_MainGame/code_020d24d4_024.cpp: - .text start:0x020d24d4 end:0x020d3158 +src/024_MainGame/UnkDataStruct4_14.cpp: + complete + .text start:0x020d1a18 end:0x020d2490 + .rodata start:0x020d7550 end:0x020d756c + +src/024_MainGame/UnkDataStruct4.cpp: + complete + .text start:0x020d2490 end:0x020d3158 + .data start:0x020d8258 end:0x020d829c src/024_MainGame/UnkStruct_027e0cf8_08_024.cpp: + complete .text start:0x020d3158 end:0x020d3670 -src/024_MainGame/code_020d3670_024.cpp: - .text start:0x020d3670 end:0x020d3d20 +src/024_MainGame/ZeldaTrainBinary.cpp: + complete + .text start:0x020d3670 end:0x020d3900 + +src/024_MainGame/UnkStruct_027e0cf8_08_00_024.cpp: + complete + .text start:0x020d3900 end:0x020d3c54 src/024_MainGame/UnkStruct_027e0ce0_34_024.cpp: - .text start:0x020d3d20 end:0x020d4120 + complete + .text start:0x020d3c54 end:0x020d4120 + .rodata start:0x020d7570 end:0x020d7598 src/024_MainGame/PassengerManager.cpp: + complete .text start:0x020d4120 end:0x020d46b4 .rodata start:0x020d75a4 end:0x020d7624 src/024_MainGame/code_020d46b4_024.cpp: + complete .text start:0x020d46b4 end:0x020d47c4 + .data start:0x020d829c end:0x020d83c8 src/024_MainGame/UnkStruct_027e0d00.cpp: .text start:0x020d47c4 end:0x020d4e9c @@ -177,6 +209,7 @@ src/024_MainGame/UnkStruct_027e0d08_024.cpp: .text start:0x020d5c8c end:0x020d62b4 src/024_MainGame/MiscAdvManager.cpp: + complete .text start:0x020d62b4 end:0x020d6650 src/024_MainGame/code_020d6650_024.cpp: diff --git a/config/eur/arm9/overlays/ov024/relocs.txt b/config/eur/arm9/overlays/ov024/relocs.txt index 8bef3b5fc..170be7137 100644 --- a/config/eur/arm9/overlays/ov024/relocs.txt +++ b/config/eur/arm9/overlays/ov024/relocs.txt @@ -1823,13 +1823,13 @@ from:0x020cfd50 kind:load to:0x027e07d4 module:dtcm from:0x020cfe1c kind:load to:0x020d8094 module:overlay(24) from:0x020cfe20 kind:load to:0x020d8098 module:overlay(24) from:0x020cfe64 kind:load to:0x020d8098 module:overlay(24) -from:0x020cfe68 kind:load to:0x020d80a2 module:overlay(24) +from:0x020cfe68 kind:load to:0x020d8098 add:0xa module:overlay(24) from:0x020cfe70 kind:arm_call to:0x020cfd54 module:overlay(24) -from:0x020cfe90 kind:load to:0x020d809e module:overlay(24) +from:0x020cfe90 kind:load to:0x020d8098 add:0x6 module:overlay(24) from:0x020cfecc kind:load to:0x020d8098 module:overlay(24) from:0x020cff08 kind:arm_call to:0x020d5340 module:overlay(24) from:0x020cff14 kind:load to:0x020d8098 module:overlay(24) -from:0x020cff18 kind:load to:0x020d80a3 module:overlay(24) +from:0x020cff18 kind:load to:0x020d8098 add:0xb module:overlay(24) from:0x020cffc8 kind:arm_call to:0x0205fc20 module:overlay(0) from:0x020cffe0 kind:arm_call to:0x0205fc20 module:overlay(0) from:0x020cfff0 kind:arm_call to:0x020d002c module:overlay(24) @@ -1984,8 +1984,8 @@ from:0x020d1978 kind:load to:0x0203e964 module:main from:0x020d198c kind:thumb_call_arm to:0x0201667c module:main from:0x020d19a0 kind:thumb_call_arm to:0x0201667c module:main from:0x020d19ae kind:thumb_call to:0x020d19d8 module:overlay(24) -from:0x020d19b8 kind:load to:0x020d8250 module:overlay(24) -from:0x020d19bc kind:load to:0x020d8244 module:overlay(24) +from:0x020d19b8 kind:load to:0x020d8248 add:0x8 module:overlay(24) +from:0x020d19bc kind:load to:0x020d823c add:0x8 module:overlay(24) from:0x020d19c6 kind:thumb_call_arm to:0x02016694 module:main from:0x020d19ce kind:thumb_call_arm to:0x02016694 module:main from:0x020d1a04 kind:load to:0x020d8254 module:overlay(24) @@ -2032,8 +2032,8 @@ from:0x020d2410 kind:arm_call to:0x020d2464 module:overlay(24) from:0x020d2424 kind:arm_call to:0x020d2464 module:overlay(24) from:0x020d2444 kind:load to:0x020d23ec module:overlay(24) from:0x020d244c kind:arm_call to:0x020d1da0 module:overlay(24) -from:0x020d24d0 kind:load to:0x020d8260 module:overlay(24) -from:0x020d2514 kind:load to:0x020d8260 module:overlay(24) +from:0x020d24d0 kind:load to:0x020d8258 add:0x8 module:overlay(24) +from:0x020d2514 kind:load to:0x020d8258 add:0x8 module:overlay(24) from:0x020d2534 kind:load to:0x020d2538 module:overlay(24) from:0x020d2544 kind:arm_call to:0x020d258c module:overlay(24) from:0x020d254c kind:arm_call to:0x020d3140 module:overlay(24) @@ -2221,13 +2221,13 @@ from:0x020d470c kind:arm_call_thumb to:0x02058540 module:overlay(0) from:0x020d4724 kind:load to:0x020d83b4 module:overlay(24) from:0x020d4728 kind:load to:0x020d83a4 module:overlay(24) from:0x020d472c kind:load to:0x020d83ac module:overlay(24) -from:0x020d4730 kind:load to:0x020d8350 module:overlay(24) +from:0x020d4730 kind:load to:0x020d8348 add:0x8 module:overlay(24) from:0x020d4768 kind:arm_call_thumb to:0x02058540 module:overlay(0) from:0x020d4780 kind:load to:0x020d83c4 module:overlay(24) from:0x020d4784 kind:load to:0x020d8358 module:overlay(24) from:0x020d4788 kind:load to:0x020d83ac module:overlay(24) from:0x020d478c kind:load to:0x020d83b8 module:overlay(24) -from:0x020d4790 kind:load to:0x020d8350 module:overlay(24) +from:0x020d4790 kind:load to:0x020d8348 add:0x8 module:overlay(24) from:0x020d479c kind:arm_call_thumb to:0x0205866c module:overlay(0) from:0x020d47b0 kind:arm_call_thumb to:0x0205866c module:overlay(0) from:0x020d47b8 kind:arm_call to:0x02011ff4 module:main diff --git a/config/eur/arm9/overlays/ov024/symbols.txt b/config/eur/arm9/overlays/ov024/symbols.txt index cd575b307..8fe04fd1b 100644 --- a/config/eur/arm9/overlays/ov024/symbols.txt +++ b/config/eur/arm9/overlays/ov024/symbols.txt @@ -78,7 +78,7 @@ _ZN20AdventureModeManager19func_ov024_020c671cEv kind:function(arm,size=0x54) ad _ZN20AdventureModeManager19func_ov024_020c6770Ejhss kind:function(arm,size=0xac) addr:0x020c6770 _ZN20AdventureModeManager19func_ov024_020c681cEv kind:function(arm,size=0x24) addr:0x020c681c _ZN20AdventureModeManager19func_ov024_020c6840Ej kind:function(arm,size=0x94) addr:0x020c6840 -_ZN20AdventureModeManager19func_ov024_020c68d4Ev kind:function(arm,size=0x18) addr:0x020c68d4 +_ZN20AdventureModeManager19func_ov024_020c68d4EP5Vec2si kind:function(arm,size=0x18) addr:0x020c68d4 _ZN20AdventureModeManager19func_ov024_020c68ecEii kind:function(arm,size=0x44) addr:0x020c68ec _ZN20AdventureModeManager19func_ov024_020c6930Ev kind:function(arm,size=0x10) addr:0x020c6930 _ZN20AdventureModeManager19func_ov024_020c6940Eii kind:function(arm,size=0x5c) addr:0x020c6940 @@ -118,14 +118,14 @@ _ZN18UnkStruct_027e099819func_ov024_020c7354Ev kind:function(arm,size=0x3c) addr _ZN18UnkStruct_027e0cf86CreateEv kind:function(arm,size=0x24) addr:0x020c7390 _ZN18UnkStruct_027e0cf8C1Ev kind:function(arm,size=0xf0) addr:0x020c73b4 _ZN18UnkStruct_027e0cf8D1Ev kind:function(arm,size=0xb8) addr:0x020c74a4 -_ZN18UnkStruct_027e0cf819func_ov024_020c755cEPv kind:function(arm,size=0x74) addr:0x020c755c -_ZN18UnkStruct_027e0cf819func_ov024_020c75d0EPvit kind:function(arm,size=0x154) addr:0x020c75d0 +_ZN18UnkStruct_027e0cf819func_ov024_020c755cEP14UnkDataStruct4 kind:function(arm,size=0x74) addr:0x020c755c +_ZN18UnkStruct_027e0cf819func_ov024_020c75d0EP14UnkDataStruct4it kind:function(arm,size=0x154) addr:0x020c75d0 _ZN18UnkStruct_027e0cf819func_ov024_020c7724Ev kind:function(arm,size=0x2c) addr:0x020c7724 _ZN18UnkStruct_027e0cf819func_ov024_020c7750Ev kind:function(arm,size=0x30) addr:0x020c7750 _ZN18UnkStruct_027e0cf819func_ov024_020c7780Ev kind:function(arm,size=0x30) addr:0x020c7780 -_ZN18UnkStruct_027e0cf819func_ov024_020c77b0Ei kind:function(arm,size=0x10) addr:0x020c77b0 -_ZN18UnkStruct_027e0cf819func_ov024_020c77c0Ev kind:function(arm,size=0x10) addr:0x020c77c0 -_ZN18UnkStruct_027e0cf819func_ov024_020c77d0Ev kind:function(arm,size=0x10) addr:0x020c77d0 +_ZN18UnkStruct_027e0cf819func_ov024_020c77b0Eb kind:function(arm,size=0x10) addr:0x020c77b0 +_ZN18UnkStruct_027e0cf819func_ov024_020c77c0EPiS0_i kind:function(arm,size=0x10) addr:0x020c77c0 +_ZN18UnkStruct_027e0cf819func_ov024_020c77d0EP5Vec2si kind:function(arm,size=0x10) addr:0x020c77d0 _ZN18UnkStruct_027e0cf819func_ov024_020c77e0EP5Vec2s kind:function(arm,size=0x24) addr:0x020c77e0 _ZN18UnkStruct_027e0cf819func_ov024_020c7804EP5Vec2s kind:function(arm,size=0x24) addr:0x020c7804 _ZN18UnkStruct_027e0cf819func_ov024_020c7828Ei kind:function(arm,size=0x50) addr:0x020c7828 @@ -408,27 +408,27 @@ _ZN8InstanceI18UnkStruct_020d8698EC2Ev kind:function(arm,size=0x10) addr:0x020cf _ZN8InstanceI18UnkStruct_020d8698ED2Ev kind:function(arm,size=0x14) addr:0x020cf954 _ZN21UnkStruct_027e0cf8_00C1Ev kind:function(arm,size=0x68) addr:0x020cf968 _ZN21UnkStruct_027e0cf8_00D1Ev kind:function(arm,size=0x4) addr:0x020cf9d0 -func_ov024_020cf9d4 kind:function(arm,size=0x1a8) addr:0x020cf9d4 -_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfb7cEPvP5Vec2sitii kind:function(arm,size=0x1d8) addr:0x020cfb7c -func_ov024_020cfd54 kind:function(arm,size=0xd0) addr:0x020cfd54 -func_ov024_020cfe24 kind:function(arm,size=0x48) addr:0x020cfe24 -func_ov024_020cfe6c kind:function(arm,size=0x28) addr:0x020cfe6c -func_ov024_020cfe94 kind:function(arm,size=0x3c) addr:0x020cfe94 -func_ov024_020cfed0 kind:function(arm,size=0x4c) addr:0x020cfed0 -func_ov024_020cff1c kind:function(arm,size=0x2c) addr:0x020cff1c +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cf9d4EP27UnkStruct_027e0cf8_00_18_00 kind:function(arm,size=0x1a8) addr:0x020cf9d4 +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfb7cEP14UnkDataStruct4P5Vec2sitii kind:function(arm,size=0x1d8) addr:0x020cfb7c +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfd54Eiiii kind:function(arm,size=0xd0) addr:0x020cfd54 +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfe24Es kind:function(arm,size=0x48) addr:0x020cfe24 +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfe6cEiiii kind:function(arm,size=0x28) addr:0x020cfe6c +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfe94Ei kind:function(arm,size=0x3c) addr:0x020cfe94 +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfed0Es kind:function(arm,size=0x4c) addr:0x020cfed0 +_ZN24UnkStruct_027e0cf8_0C_0019func_ov024_020cff1cEv kind:function(arm,size=0x2c) addr:0x020cff1c _ZN21UnkStruct_027e0cf8_0CC1Ev kind:function(arm,size=0x40) addr:0x020cff48 _ZN21UnkStruct_027e0cf8_0CD1Ev kind:function(arm,size=0x4) addr:0x020cff88 -_ZN21UnkStruct_027e0cf8_0C19func_ov024_020cff8cEPvP5Vec2s kind:function(arm,size=0x78) addr:0x020cff8c +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020cff8cEP14UnkDataStruct4P5Vec2s kind:function(arm,size=0x78) addr:0x020cff8c _ZN21UnkStruct_027e0cf8_0C19func_ov024_020d0004Ev kind:function(arm,size=0x28) addr:0x020d0004 -func_ov024_020d002c kind:function(arm,size=0x194) addr:0x020d002c -func_ov024_020d01c0 kind:function(arm,size=0x120) addr:0x020d01c0 -_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d02e0Ev kind:function(arm,size=0x60) addr:0x020d02e0 -_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d0340Ev kind:function(arm,size=0xb8) addr:0x020d0340 +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d002cEPK14UnkDataStruct4 kind:function(arm,size=0x194) addr:0x020d002c +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d01c0EPK14UnkDataStruct4 kind:function(arm,size=0x120) addr:0x020d01c0 +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d02e0EPiS0_i kind:function(arm,size=0x60) addr:0x020d02e0 +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d0340EP5Vec2si kind:function(arm,size=0xb8) addr:0x020d0340 _ZN21UnkStruct_027e0cf8_0C19func_ov024_020d03f8EP5Vec2s kind:function(arm,size=0x24) addr:0x020d03f8 _ZN21UnkStruct_027e0cf8_0C19func_ov024_020d041cEP5Vec2s kind:function(arm,size=0xf4) addr:0x020d041c -func_ov024_020d0510 kind:function(arm,size=0xa0) addr:0x020d0510 -_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d05d0Eii kind:function(arm,size=0x3c) addr:0x020d05b0 -_ZN29AdventureModeManager_1B8_BaseC2EhbPK32AdventureModeManager_1B8_Base_1Cbb kind:function(arm,size=0x94) addr:0x020d05ec +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d0510Es kind:function(arm,size=0xa0) addr:0x020d0510 +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d05d0Eib kind:function(arm,size=0x3c) addr:0x020d05b0 +_ZN29AdventureModeManager_1B8_BaseC2EhbRK32AdventureModeManager_1B8_Base_1Cbb kind:function(arm,size=0x94) addr:0x020d05ec _ZN29AdventureModeManager_1B8_BaseD2Ev kind:function(arm,size=0x18) addr:0x020d0680 _ZN29AdventureModeManager_1B8_Base19func_ov024_020d0698Ev kind:function(arm,size=0x38) addr:0x020d0698 _ZN29AdventureModeManager_1B8_Base19func_ov024_020d06d0Ev kind:function(arm,size=0x5c) addr:0x020d06d0 @@ -455,135 +455,135 @@ _ZN24AdventureModeManager_1B819func_ov024_020d14a8EP32AdventureModeManager_1B8_B _ZN24AdventureModeManager_1B819func_ov024_020d1564EPK32AdventureModeManager_1B8_Base_1CiPih kind:function(arm,size=0xb0) addr:0x020d1564 _ZN24AdventureModeManager_1B819func_ov024_020d1614EPv kind:function(arm,size=0x24) addr:0x020d1614 _ZN24AdventureModeManager_1B819func_ov024_020d1638Ev kind:function(arm,size=0x20) addr:0x020d1638 -func_ov024_020d1658 kind:function(arm,size=0x24) addr:0x020d1658 +_ZN24UnkStruct_ov024_020d86a06CreateEv kind:function(arm,size=0x24) addr:0x020d1658 _ZN24UnkStruct_ov024_020d86a019func_ov024_020d167cEv kind:function(arm,size=0x18) addr:0x020d167c -func_ov024_020d1694 kind:function(arm,size=0x28) addr:0x020d1694 -_ZN19func_ov024_020d16bcD1Ev kind:function(arm,size=0x14) addr:0x020d16bc -_ZN19func_ov024_020d16d0D0Ev kind:function(arm,size=0x1c) addr:0x020d16d0 -func_ov024_020d16ec kind:function(arm,size=0x10) addr:0x020d16ec -func_ov024_020d16fc kind:function(arm,size=0x80) addr:0x020d16fc -func_ov024_020d177c kind:function(arm,size=0x200) addr:0x020d177c -func_ov024_020d197c kind:function(thumb,size=0x44) addr:0x020d197c -func_ov024_020d19c0 kind:function(thumb,size=0x16) addr:0x020d19c0 -func_ov024_020d19d8 kind:function(thumb,size=0x20) addr:0x020d19d8 -func_ov024_020d19f8 kind:function(arm,size=0x10) addr:0x020d19f8 -func_ov024_020d1a08 kind:function(arm,size=0x10) addr:0x020d1a08 -func_ov024_020d1a18 kind:function(arm,size=0x10) addr:0x020d1a18 -func_ov024_020d1a28 kind:function(arm,size=0x70) addr:0x020d1a28 -func_ov024_020d1a98 kind:function(arm,size=0x20) addr:0x020d1a98 -func_ov024_020d1ab8 kind:function(arm,size=0xe0) addr:0x020d1ab8 -func_ov024_020d1b98 kind:function(arm,size=0x48) addr:0x020d1b98 -func_ov024_020d1be0 kind:function(arm,size=0x5c) addr:0x020d1be0 -func_ov024_020d1c3c kind:function(arm,size=0x48) addr:0x020d1c3c -func_ov024_020d1c84 kind:function(arm,size=0x44) addr:0x020d1c84 -func_ov024_020d1cc8 kind:function(arm,size=0x2c) addr:0x020d1cc8 -func_ov024_020d1cf4 kind:function(arm,size=0x3c) addr:0x020d1cf4 -func_ov024_020d1d30 kind:function(arm,size=0x48) addr:0x020d1d30 -func_ov024_020d1d78 kind:function(arm,size=0x28) addr:0x020d1d78 -func_ov024_020d1da0 kind:function(arm,size=0x28) addr:0x020d1da0 -func_ov024_020d1dc8 kind:function(arm,size=0x2c) addr:0x020d1dc8 -func_ov024_020d1df4 kind:function(arm,size=0x2c) addr:0x020d1df4 -func_ov024_020d1e20 kind:function(arm,size=0x8c) addr:0x020d1e20 -func_ov024_020d1eac kind:function(arm,size=0xb4) addr:0x020d1eac -func_ov024_020d1f60 kind:function(arm,size=0x10) addr:0x020d1f60 -func_ov024_020d1f70 kind:function(arm,size=0x34) addr:0x020d1f70 -func_ov024_020d1fa4 kind:function(arm,size=0x44) addr:0x020d1fa4 -func_ov024_020d1fe8 kind:function(arm,size=0x48) addr:0x020d1fe8 -func_ov024_020d2030 kind:function(arm,size=0x5c) addr:0x020d2030 -func_ov024_020d208c kind:function(arm,size=0xc) addr:0x020d208c -func_ov024_020d2098 kind:function(arm,size=0x28) addr:0x020d2098 -func_ov024_020d20c0 kind:function(arm,size=0xe0) addr:0x020d20c0 -func_ov024_020d21a0 kind:function(arm,size=0x38) addr:0x020d21a0 -func_ov024_020d21d8 kind:function(arm,size=0x64) addr:0x020d21d8 -func_ov024_020d223c kind:function(arm,size=0x34) addr:0x020d223c -func_ov024_020d2270 kind:function(arm,size=0x3c) addr:0x020d2270 -func_ov024_020d22ac kind:function(arm,size=0x74) addr:0x020d22ac -func_ov024_020d2320 kind:function(arm,size=0x28) addr:0x020d2320 -func_ov024_020d2348 kind:function(arm,size=0x54) addr:0x020d2348 -func_ov024_020d239c kind:function(arm,size=0x20) addr:0x020d239c -func_ov024_020d23bc kind:function(arm,size=0x30) addr:0x020d23bc -func_ov024_020d23ec kind:function(arm,size=0x50) addr:0x020d23ec -func_ov024_020d243c kind:function(arm,size=0xc) addr:0x020d243c -func_ov024_020d2448 kind:function(arm,size=0x1c) addr:0x020d2448 -func_ov024_020d2464 kind:function(arm,size=0x2c) addr:0x020d2464 -func_ov024_020d2490 kind:function(arm,size=0x44) addr:0x020d2490 -func_ov024_020d24d4 kind:function(arm,size=0x44) addr:0x020d24d4 -func_ov024_020d2518 kind:function(arm,size=0x4) addr:0x020d2518 -func_ov024_020d251c kind:function(arm,size=0x4) addr:0x020d251c -func_ov024_020d2520 kind:function(arm,size=0x18) addr:0x020d2520 -func_ov024_020d2538 kind:function(arm,size=0x2c) addr:0x020d2538 -func_ov024_020d2564 kind:function(arm,size=0x28) addr:0x020d2564 -func_ov024_020d258c kind:function(arm,size=0x124) addr:0x020d258c -func_ov024_020d26b0 kind:function(arm,size=0xcc) addr:0x020d26b0 -func_ov024_020d277c kind:function(arm,size=0x50) addr:0x020d277c -func_ov024_020d27cc kind:function(arm,size=0x40) addr:0x020d27cc -func_ov024_020d280c kind:function(arm,size=0x1a4) addr:0x020d280c -func_ov024_020d29b0 kind:function(arm,size=0x68) addr:0x020d29b0 -func_ov024_020d2a18 kind:function(arm,size=0xf0) addr:0x020d2a18 -func_ov024_020d2b08 kind:function(arm,size=0x38) addr:0x020d2b08 -func_ov024_020d2b40 kind:function(arm,size=0x8c) addr:0x020d2b40 -func_ov024_020d2bcc kind:function(arm,size=0x88) addr:0x020d2bcc -func_ov024_020d2c54 kind:function(arm,size=0xa8) addr:0x020d2c54 -func_ov024_020d2cfc kind:function(arm,size=0x364) addr:0x020d2cfc -func_ov024_020d3060 kind:function(arm,size=0x4) addr:0x020d3060 -func_ov024_020d3064 kind:function(arm,size=0x4) addr:0x020d3064 -func_ov024_020d3068 kind:function(arm,size=0x24) addr:0x020d3068 -func_ov024_020d308c kind:function(arm,size=0x74) addr:0x020d308c -func_ov024_020d3100 kind:function(arm,size=0x40) addr:0x020d3100 -func_ov024_020d3140 kind:function(arm,size=0x18) addr:0x020d3140 -func_ov024_020d3158 kind:function(arm,size=0xa0) addr:0x020d3158 +_ZN27UnkStruct_ov024_020d86a0_00C1EP24UnkStruct_ov024_020d86a0 kind:function(arm,size=0x28) addr:0x020d1694 +_ZN27UnkStruct_ov024_020d86a0_00D1Ev kind:function(arm,size=0x14) addr:0x020d16bc +_ZN27UnkStruct_ov024_020d86a0_00D0Ev kind:function(arm,size=0x1c) addr:0x020d16d0 +_ZN27UnkStruct_ov024_020d86a0_008vfunc_0CEv kind:function(arm,size=0x10) addr:0x020d16ec +_ZN20PlayerActor_A0_38_048vfunc_00Ev kind:function(arm,size=0x80) addr:0x020d16fc +_ZN20PlayerActor_A0_38_188vfunc_00Ev kind:function(arm,size=0x200) addr:0x020d177c +_ZN17PlayerActor_A0_38C1Ev kind:function(thumb,size=0x44) addr:0x020d197c +_ZN17PlayerActor_A0_38D1Ev kind:function(thumb,size=0x16) addr:0x020d19c0 +_ZN17PlayerActor_A0_3819func_ov024_020d19d8Ev kind:function(thumb,size=0x20) addr:0x020d19d8 +_Z20SetCreditsEndingTypes kind:function(arm,size=0x10) addr:0x020d19f8 +_Z20GetCreditsEndingTypev kind:function(arm,size=0x10) addr:0x020d1a08 +_ZN17UnkDataStruct4_1419func_ov024_020d1a18Ei kind:function(arm,size=0x10) addr:0x020d1a18 +_ZN17UnkDataStruct4_1419func_ov024_020d1a28Eh kind:function(arm,size=0x70) addr:0x020d1a28 +_ZN17UnkDataStruct4_1419func_ov024_020d1a98Eii kind:function(arm,size=0x20) addr:0x020d1a98 +_ZN17UnkDataStruct4_1419func_ov024_020d1ab8EiPiS0_ kind:function(arm,size=0xe0) addr:0x020d1ab8 +_ZN17UnkDataStruct4_1419func_ov024_020d1b98EPii kind:function(arm,size=0x48) addr:0x020d1b98 +_ZN17UnkDataStruct4_1419func_ov024_020d1be0Ei kind:function(arm,size=0x5c) addr:0x020d1be0 +_ZNK17UnkDataStruct4_1419func_ov024_020d1c3cEPii kind:function(arm,size=0x48) addr:0x020d1c3c +_ZN17UnkDataStruct4_1419func_ov024_020d1c84Ev kind:function(arm,size=0x44) addr:0x020d1c84 +_ZNK17UnkDataStruct4_1419func_ov024_020d1cc8Eii kind:function(arm,size=0x2c) addr:0x020d1cc8 +_ZNK17UnkDataStruct4_1419func_ov024_020d1cf4Ei kind:function(arm,size=0x3c) addr:0x020d1cf4 +_ZNK17UnkDataStruct4_1419func_ov024_020d1d30Eit kind:function(arm,size=0x48) addr:0x020d1d30 +_ZNK17UnkDataStruct4_1419func_ov024_020d1d78Ev kind:function(arm,size=0x28) addr:0x020d1d78 +_ZNK17UnkDataStruct4_1419func_ov024_020d1da0Ev kind:function(arm,size=0x28) addr:0x020d1da0 +_ZNK17UnkDataStruct4_1419func_ov024_020d1dc8Eii kind:function(arm,size=0x2c) addr:0x020d1dc8 +_ZNK17UnkDataStruct4_1419func_ov024_020d1df4Ei kind:function(arm,size=0x2c) addr:0x020d1df4 +_ZN17UnkDataStruct4_1419func_ov024_020d1e20EPsi kind:function(arm,size=0x8c) addr:0x020d1e20 +_ZN17UnkDataStruct4_1419func_ov024_020d1eacEi kind:function(arm,size=0xb4) addr:0x020d1eac +_ZN17UnkDataStruct4_1419func_ov024_020d1f60Ej kind:function(arm,size=0x10) addr:0x020d1f60 +_ZNK17UnkDataStruct4_1419func_ov024_020d1f70Ev kind:function(arm,size=0x34) addr:0x020d1f70 +_ZNK17UnkDataStruct4_1419func_ov024_020d1fa4Ei kind:function(arm,size=0x44) addr:0x020d1fa4 +_ZN17UnkDataStruct4_1419func_ov024_020d1fe8Ev kind:function(arm,size=0x48) addr:0x020d1fe8 +_ZN17UnkDataStruct4_1419func_ov024_020d2030Eii kind:function(arm,size=0x5c) addr:0x020d2030 +_ZNK17UnkDataStruct4_1419func_ov024_020d208cEi kind:function(arm,size=0xc) addr:0x020d208c +_ZN17UnkDataStruct4_1419func_ov024_020d2098Eii kind:function(arm,size=0x28) addr:0x020d2098 +_ZNK17UnkDataStruct4_1419func_ov024_020d20c0Eii kind:function(arm,size=0xe0) addr:0x020d20c0 +_ZNK17UnkDataStruct4_1416IsStationDungeonEv kind:function(arm,size=0x38) addr:0x020d21a0 +_ZNK17UnkDataStruct4_1419func_ov024_020d21d8Ev kind:function(arm,size=0x64) addr:0x020d21d8 +_ZNK17UnkDataStruct4_1419func_ov024_020d223cEv kind:function(arm,size=0x34) addr:0x020d223c +_ZNK17UnkDataStruct4_1419func_ov024_020d2270Eii kind:function(arm,size=0x3c) addr:0x020d2270 +_ZNK17UnkDataStruct4_1419func_ov024_020d22acEi kind:function(arm,size=0x74) addr:0x020d22ac +_ZNK17UnkDataStruct4_1419func_ov024_020d2320Ei kind:function(arm,size=0x28) addr:0x020d2320 +_ZNK17UnkDataStruct4_1419func_ov024_020d2348Ei kind:function(arm,size=0x54) addr:0x020d2348 +_ZNK17UnkDataStruct4_1419func_ov024_020d239cEv kind:function(arm,size=0x20) addr:0x020d239c +_ZNK17UnkDataStruct4_1419func_ov024_020d23bcEv kind:function(arm,size=0x30) addr:0x020d23bc +_ZNK17UnkDataStruct4_1419func_ov024_020d23ecEv kind:function(arm,size=0x50) addr:0x020d23ec +_ZNK17UnkDataStruct4_1419func_ov024_020d243cEv kind:function(arm,size=0xc) addr:0x020d243c +_ZNK17UnkDataStruct4_1419func_ov024_020d2448Ev kind:function(arm,size=0x1c) addr:0x020d2448 +_ZNK17UnkDataStruct4_1419func_ov024_020d2464Eb kind:function(arm,size=0x2c) addr:0x020d2464 +_ZN14UnkDataStruct4C2Ev kind:function(arm,size=0x44) addr:0x020d2490 +_ZN14UnkDataStruct4C1Ev kind:function(arm,size=0x44) addr:0x020d24d4 +_ZN14UnkDataStruct419func_ov024_020d2518Ev kind:function(arm,size=0x4) addr:0x020d2518 +_ZN14UnkDataStruct419func_ov024_020d251cEv kind:function(arm,size=0x4) addr:0x020d251c +_ZN14UnkDataStruct419func_ov024_020d2520EP22UnkStruct_SceneChange1 kind:function(arm,size=0x18) addr:0x020d2520 +_ZN14UnkDataStruct419func_ov024_020d2538EjhP19UnkDataStruct4_14_2 kind:function(arm,size=0x2c) addr:0x020d2538 +_ZN14UnkDataStruct419func_ov024_020d2564Ev kind:function(arm,size=0x28) addr:0x020d2564 +_ZN14UnkDataStruct419func_ov024_020d258cEjh kind:function(arm,size=0x124) addr:0x020d258c +_ZN14UnkDataStruct419func_ov024_020d26b0Ei kind:function(arm,size=0xcc) addr:0x020d26b0 +_ZN14UnkDataStruct419func_ov024_020d277cEv kind:function(arm,size=0x50) addr:0x020d277c +_ZN14UnkDataStruct419func_ov024_020d27ccEv kind:function(arm,size=0x40) addr:0x020d27cc +_ZN14UnkDataStruct419func_ov024_020d280cEv kind:function(arm,size=0x1a4) addr:0x020d280c +_ZN14UnkDataStruct419func_ov024_020d29b0Eiiiii kind:function(arm,size=0x68) addr:0x020d29b0 +_ZN14UnkDataStruct419func_ov024_020d2a18Eiiiii kind:function(arm,size=0xf0) addr:0x020d2a18 +_ZNK14UnkDataStruct419func_ov024_020d2b08EiiP7VecFx32 kind:function(arm,size=0x38) addr:0x020d2b08 +_ZN14UnkDataStruct419func_ov024_020d2b40EP5Vec2sPKS_ kind:function(arm,size=0x8c) addr:0x020d2b40 +_ZN14UnkDataStruct419func_ov024_020d2bccEP5Vec2sPKS_ kind:function(arm,size=0x88) addr:0x020d2bcc +_ZN14UnkDataStruct419func_ov024_020d2c54EPA15_hi kind:function(arm,size=0xa8) addr:0x020d2c54 +_ZN14UnkDataStruct419func_ov024_020d2cfcEPA15_hii kind:function(arm,size=0x364) addr:0x020d2cfc +_ZN14UnkDataStruct48vfunc_00Ev kind:function(arm,size=0x4) addr:0x020d3060 +_ZN14UnkDataStruct48vfunc_04Ev kind:function(arm,size=0x4) addr:0x020d3064 +_ZNK14UnkDataStruct419func_ov024_020d3068Ev kind:function(arm,size=0x24) addr:0x020d3068 +_ZNK14UnkDataStruct419func_ov024_020d308cEPiS0_s kind:function(arm,size=0x74) addr:0x020d308c +_ZN14UnkDataStruct419func_ov024_020d3100Ev kind:function(arm,size=0x40) addr:0x020d3100 +_ZN14UnkDataStruct419func_ov024_020d3140Ev kind:function(arm,size=0x18) addr:0x020d3140 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d3158Ej kind:function(arm,size=0xa0) addr:0x020d3158 _ZN21UnkStruct_027e0cf8_08C1Ev kind:function(arm,size=0x88) addr:0x020d31f8 _ZN21UnkStruct_027e0cf8_08D1Ev kind:function(arm,size=0x34) addr:0x020d3280 -func_ov024_020d32b4 kind:function(arm,size=0x24) addr:0x020d32b4 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d32b4EPc kind:function(arm,size=0x24) addr:0x020d32b4 _ZN21UnkStruct_027e0cf8_0819func_ov024_020d32d8Ev kind:function(arm,size=0x10) addr:0x020d32d8 _ZN21UnkStruct_027e0cf8_0819func_ov024_020d32e8EP5Vec2s kind:function(arm,size=0x3c) addr:0x020d32e8 -_ZN21UnkStruct_027e0cf8_0819func_ov024_020d3324EPv kind:function(arm,size=0x24) addr:0x020d3324 -_ZN21UnkStruct_027e0cf8_0819func_ov024_020d3348EPvitii kind:function(arm,size=0x24) addr:0x020d3348 -func_ov024_020d336c kind:function(arm,size=0xa0) addr:0x020d336c +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d3324EP14UnkDataStruct4 kind:function(arm,size=0x24) addr:0x020d3324 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d3348EP14UnkDataStruct4itii kind:function(arm,size=0x24) addr:0x020d3348 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d336cEP14UnkDataStruct4iiii kind:function(arm,size=0xa0) addr:0x020d336c _ZN21UnkStruct_027e0cf8_0819func_ov024_020d340cEv kind:function(arm,size=0x10) addr:0x020d340c -_ZN21UnkStruct_027e0cf8_0819func_ov024_020d341cEi kind:function(arm,size=0xc) addr:0x020d341c -func_ov024_020d3428 kind:function(arm,size=0x78) addr:0x020d3428 -func_ov024_020d34a0 kind:function(arm,size=0x7c) addr:0x020d34a0 -func_ov024_020d351c kind:function(arm,size=0x154) addr:0x020d351c -func_ov024_020d3670 kind:function(thumb,size=0x8c) addr:0x020d3670 -func_ov024_020d36fc kind:function(thumb,size=0x68) addr:0x020d36fc -func_ov024_020d3764 kind:function(thumb,size=0xdc) addr:0x020d3764 -func_ov024_020d3840 kind:function(thumb,size=0x58) addr:0x020d3840 -func_ov024_020d3898 kind:function(thumb,size=0x68) addr:0x020d3898 -func_ov024_020d3900 kind:function(arm,size=0x14) addr:0x020d3900 -func_ov024_020d3914 kind:function(arm,size=0x5c) addr:0x020d3914 -func_ov024_020d3970 kind:function(arm,size=0x8c) addr:0x020d3970 -func_ov024_020d39fc kind:function(arm,size=0x38) addr:0x020d39fc -func_ov024_020d3a34 kind:function(arm,size=0x2c) addr:0x020d3a34 -func_ov024_020d3a60 kind:function(arm,size=0x2c) addr:0x020d3a60 -func_ov024_020d3a8c kind:function(arm,size=0x50) addr:0x020d3a8c -func_ov024_020d3adc kind:function(arm,size=0x120) addr:0x020d3adc -func_ov024_020d3bfc kind:function(arm,size=0x58) addr:0x020d3bfc -func_ov024_020d3c54 kind:function(thumb,size=0xc) addr:0x020d3c54 -func_ov024_020d3c60 kind:function(thumb,size=0x94) addr:0x020d3c60 -func_ov024_020d3cf4 kind:function(thumb,size=0x2c) addr:0x020d3cf4 -func_ov024_020d3d20 kind:function(thumb,size=0x5e) addr:0x020d3d20 -func_ov024_020d3d80 kind:function(thumb,size=0x18) addr:0x020d3d80 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d341cEb kind:function(arm,size=0xc) addr:0x020d341c +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d3428EPK14UnkDataStruct4ih kind:function(arm,size=0x78) addr:0x020d3428 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d34a0EPA15_hh kind:function(arm,size=0x7c) addr:0x020d34a0 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d351cEiiPiih kind:function(arm,size=0x154) addr:0x020d351c +ZTB_ParseFile kind:function(thumb,size=0x8c) addr:0x020d3670 +ZTB_ParseGRDB kind:function(thumb,size=0x68) addr:0x020d36fc +ZTB_ParseGRRL kind:function(thumb,size=0xdc) addr:0x020d3764 +ZTB_ParseSTAB kind:function(thumb,size=0x58) addr:0x020d3840 +ZTB_ParseLDMK kind:function(thumb,size=0x68) addr:0x020d3898 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3900EP5Vec2sPiS2_ii kind:function(arm,size=0x14) addr:0x020d3900 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3914EP5Vec2sS1_S1_ kind:function(arm,size=0x5c) addr:0x020d3914 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3970EP5Vec2sPiS2_ii kind:function(arm,size=0x8c) addr:0x020d3970 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d39fcEP5Vec2sii kind:function(arm,size=0x38) addr:0x020d39fc +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3a34EP5Vec2sii kind:function(arm,size=0x2c) addr:0x020d3a34 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3a60EP5Vec2sS1_ii kind:function(arm,size=0x2c) addr:0x020d3a60 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3a8cEP5Vec2s kind:function(arm,size=0x50) addr:0x020d3a8c +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3adcEP5Vec2siihbh kind:function(arm,size=0x120) addr:0x020d3adc +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3bfcEP5Vec2siib kind:function(arm,size=0x58) addr:0x020d3bfc +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3c54Ei kind:function(thumb,size=0xc) addr:0x020d3c54 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3c60EP27SaveFile_00000_0000_Data_D8 kind:function(thumb,size=0x94) addr:0x020d3c60 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3cf4Ei kind:function(thumb,size=0x2c) addr:0x020d3cf4 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3d20Ev kind:function(thumb,size=0x5e) addr:0x020d3d20 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3d80Ei kind:function(thumb,size=0x18) addr:0x020d3d80 _ZN21UnkStruct_027e0ce0_3419func_ov024_020d3d98Eii kind:function(thumb,size=0x10) addr:0x020d3d98 -func_ov024_020d3da8 kind:function(thumb,size=0x16) addr:0x020d3da8 -func_ov024_020d3dc0 kind:function(thumb,size=0xa) addr:0x020d3dc0 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3da8Eii kind:function(thumb,size=0x16) addr:0x020d3da8 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3dc0Eii kind:function(thumb,size=0xa) addr:0x020d3dc0 _ZN21UnkStruct_027e0ce0_3419func_ov024_020d3dccEv kind:function(thumb,size=0x20) addr:0x020d3dcc -func_ov024_020d3dec kind:function(arm,size=0x20) addr:0x020d3dec -func_ov024_020d3e0c kind:function(arm,size=0x24) addr:0x020d3e0c -func_ov024_020d3e30 kind:function(arm,size=0x38) addr:0x020d3e30 -func_ov024_020d3e68 kind:function(arm,size=0x80) addr:0x020d3e68 -_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3ee8Eiti kind:function(arm,size=0x64) addr:0x020d3ee8 -func_ov024_020d3f4c kind:function(arm,size=0x40) addr:0x020d3f4c -func_ov024_020d3f8c kind:function(arm,size=0x3c) addr:0x020d3f8c -func_ov024_020d3fc8 kind:function(arm,size=0x40) addr:0x020d3fc8 -func_ov024_020d4008 kind:function(arm,size=0x44) addr:0x020d4008 -func_ov024_020d404c kind:function(arm,size=0x4c) addr:0x020d404c -func_ov024_020d4098 kind:function(arm,size=0x88) addr:0x020d4098 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3decEi kind:function(arm,size=0x20) addr:0x020d3dec +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3e0cEi kind:function(arm,size=0x24) addr:0x020d3e0c +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3e30Eii kind:function(arm,size=0x38) addr:0x020d3e30 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3e68Ei kind:function(arm,size=0x80) addr:0x020d3e68 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3ee8Eitb kind:function(arm,size=0x64) addr:0x020d3ee8 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3f4cEct kind:function(arm,size=0x40) addr:0x020d3f4c +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3f8cEv kind:function(arm,size=0x3c) addr:0x020d3f8c +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3fc8Ev kind:function(arm,size=0x40) addr:0x020d3fc8 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d4008Ei kind:function(arm,size=0x44) addr:0x020d4008 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d404cEv kind:function(arm,size=0x4c) addr:0x020d404c +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d4098EPiS0_ kind:function(arm,size=0x88) addr:0x020d4098 _ZN16PassengerManager21GetPassengerInfoIndexEj kind:function(arm,size=0x30) addr:0x020d4120 _ZN16PassengerManager12GetBoardFlagEj kind:function(arm,size=0x24) addr:0x020d4150 _ZN16PassengerManager11GetFailFlagEj kind:function(arm,size=0x24) addr:0x020d4174 _ZN16PassengerManager6CreateEv kind:function(arm,size=0x24) addr:0x020d4198 -_ZN16PassengerManager19func_ov024_020d41bcEP16UnkStruct_Param1 kind:function(arm,size=0x38) addr:0x020d41bc +_ZN16PassengerManager19func_ov024_020d41bcEPK16UnkStruct_Param1 kind:function(arm,size=0x38) addr:0x020d41bc _ZN16PassengerManager19func_ov024_020d41f4EP16UnkStruct_Param1 kind:function(arm,size=0x34) addr:0x020d41f4 _ZN16PassengerManager19func_ov024_020d4228Ev kind:function(arm,size=0x30) addr:0x020d4228 _ZN16PassengerManager19func_ov024_020d4258Ev kind:function(arm,size=0x30) addr:0x020d4258 @@ -604,13 +604,13 @@ _ZN16PassengerManager19func_ov024_020d4554Ev kind:function(arm,size=0x10) addr:0 _ZN16PassengerManager5ResetEv kind:function(arm,size=0x4c) addr:0x020d4564 _ZN16PassengerManager11IsDateUnsetEv kind:function(arm,size=0x14) addr:0x020d45b0 _ZN16PassengerManager7GetDateEv kind:function(arm,size=0x1c) addr:0x020d45c4 -_ZN16PassengerManager14GetRandomIndexEji kind:function(arm,size=0x5c) addr:0x020d45e0 +_ZN16PassengerManager14GetRandomIndexEjj kind:function(arm,size=0x5c) addr:0x020d45e0 _ZN16PassengerManager13SetFailedFlagEv kind:function(arm,size=0x78) addr:0x020d463c -func_ov024_020d46b4 kind:function(arm,size=0x10) addr:0x020d46b4 -func_ov024_020d46c4 kind:function(arm,size=0x70) addr:0x020d46c4 -func_ov024_020d4734 kind:function(arm,size=0x60) addr:0x020d4734 -_ZN19func_ov024_020d4794D1Ev kind:function(arm,size=0x14) addr:0x020d4794 -_ZN19func_ov024_020d47a8D0Ev kind:function(arm,size=0x1c) addr:0x020d47a8 +_Z19func_ov024_020d46b4i kind:function(arm,size=0x10) addr:0x020d46b4 +_ZN25MapObjectProfile_Derived5C1Eii kind:function(arm,size=0x70) addr:0x020d46c4 +_ZN25MapObjectProfile_Derived5C1Ei kind:function(arm,size=0x60) addr:0x020d4734 +_ZN25MapObjectProfile_Derived5D1Ev kind:function(arm,size=0x14) addr:0x020d4794 +_ZN25MapObjectProfile_Derived5D0Ev kind:function(arm,size=0x1c) addr:0x020d47a8 func_ov024_020d47c4 kind:function(arm,size=0x74) addr:0x020d47c4 func_ov024_020d4838 kind:function(arm,size=0x24) addr:0x020d4838 func_ov024_020d485c kind:function(arm,size=0x6c) addr:0x020d485c @@ -689,7 +689,7 @@ _ZN14MiscAdvManager19func_ov024_020d6468Ev kind:function(arm,size=0x2c) addr:0x0 _ZN14MiscAdvManager8GetStampEi kind:function(arm,size=0xc) addr:0x020d6494 _ZN14MiscAdvManager12GetStampDateEi kind:function(arm,size=0x8) addr:0x020d64a0 _ZN14MiscAdvManager11GetStampPosEi kind:function(arm,size=0xc) addr:0x020d64a8 -_ZN14MiscAdvManager19func_ov024_020d64b4EiiPt kind:function(arm,size=0x7c) addr:0x020d64b4 +_ZN14MiscAdvManager19func_ov024_020d64b4EciPKt kind:function(arm,size=0x7c) addr:0x020d64b4 _ZN14MiscAdvManager19func_ov024_020d6530Ev kind:function(arm,size=0x2c) addr:0x020d6530 _ZN14MiscAdvManager15GetNumPostcardsEv kind:function(arm,size=0x10) addr:0x020d655c _ZN14MiscAdvManager13GivePriceCardEi kind:function(arm,size=0x30) addr:0x020d656c @@ -731,18 +731,18 @@ data_ov024_020d73fa kind:data(any) addr:0x020d73fa local data_ov024_020d740a kind:data(any) addr:0x020d740a local data_ov024_020d741e kind:data(any) addr:0x020d741e local data_ov024_020d7432 kind:data(any) addr:0x020d7432 local -data_ov024_020d7454 kind:data(any) addr:0x020d7454 +data_ov024_020d7454 kind:data(byte[238]) addr:0x020d7454 local data_ov024_020d7544 kind:data(any) addr:0x020d7544 local data_ov024_020d7547 kind:data(any) addr:0x020d7547 local -data_ov024_020d7550 kind:data(any) addr:0x020d7550 -data_ov024_020d7555 kind:data(any) addr:0x020d7555 -data_ov024_020d7560 kind:data(any) addr:0x020d7560 +data_ov024_020d7550 kind:data(any) addr:0x020d7550 local +data_ov024_020d7555 kind:data(any) addr:0x020d7555 local +data_ov024_020d7560 kind:data(any) addr:0x020d7560 local data_ov024_020d756c kind:data(any) addr:0x020d756c -data_ov024_020d7570 kind:data(any) addr:0x020d7570 -data_ov024_020d7578 kind:data(any) addr:0x020d7578 -data_ov024_020d7588 kind:data(any) addr:0x020d7588 +data_ov024_020d7570 kind:data(any) addr:0x020d7570 local +data_ov024_020d7578 kind:data(any) addr:0x020d7578 local +data_ov024_020d7588 kind:data(any) addr:0x020d7588 local data_ov024_020d7598 kind:data(any) addr:0x020d7598 ambiguous -sPassengerInfos kind:data(any) addr:0x020d75a4 +sPassengerInfos kind:data(any) addr:0x020d75a4 local data_ov024_020d7624 kind:data(any) addr:0x020d7624 data_ov024_020d762c kind:data(any) addr:0x020d762c data_ov024_020d763c kind:data(any) addr:0x020d763c @@ -761,16 +761,16 @@ data_ov024_020d78bc kind:data(any) addr:0x020d78bc data_ov024_020d78c0 kind:data(any) addr:0x020d78c0 ambiguous data_ov024_020d78c2 kind:data(any) addr:0x020d78c2 ambiguous __sinit_ov024_020d78e8 kind:function(arm,size=0x38) addr:0x020d78e8 -__sinit_ov024_020d7920 kind:function(arm,size=0x120) addr:0x020d7920 +__sinit_UnkStruct_027e0cf8_00_0C_024.cpp kind:function(arm,size=0x120) addr:0x020d7920 local __sinit_AdventureModeManager_1B8_Base_024.cpp kind:function(arm,size=0x2c) addr:0x020d7a40 local -__sinit_ov024_020d7a6c kind:function(arm,size=0x48) addr:0x020d7a6c +__sinit_PlayerActor_A0_38_024.cpp kind:function(arm,size=0x48) addr:0x020d7a6c __sinit_ov024_020d7ab4 kind:function(arm,size=0x18) addr:0x020d7ab4 __sinit_ov024_020d7acc kind:function(arm,size=0x18) addr:0x020d7acc __sinit_ActorUnkOBPC.cpp kind:function(arm,size=0x50) addr:0x020d7ae4 .p__sinit_ov024_020d78e8 kind:data(word) addr:0x020d7b34 -.p__sinit_ov024_020d7920 kind:data(word) addr:0x020d7b38 +.p__sinit_UnkStruct_027e0cf8_00_0C_024.cpp kind:data(word) addr:0x020d7b38 .p__sinit_AdventureModeManager_1B8_Base_024.cpp kind:data(word) addr:0x020d7b3c local -.p__sinit_ov024_020d7a6c kind:data(word) addr:0x020d7b40 +.p__sinit_PlayerActor_A0_38_024.cpp kind:data(word) addr:0x020d7b40 .p__sinit_ov024_020d7ab4 kind:data(word) addr:0x020d7b44 .p__sinit_ov024_020d7acc kind:data(word) addr:0x020d7b48 .p__sinit_ActorUnkOBPC.cpp kind:data(word) addr:0x020d7b4c @@ -812,48 +812,50 @@ _ZTV28UnkStruct_ov024_020d8694_188 kind:data(any) addr:0x020d8014 _ZTV28UnkTitleCardSystem1_Derived1 kind:data(any) addr:0x020d803c _ZTV18UnkStruct_020d8698 kind:data(any) addr:0x020d8064 @4721 kind:data(byte[11]) addr:0x020d8088 local -data_ov024_020d8094 kind:data(any) addr:0x020d8094 -data_ov024_020d8098 kind:data(any) addr:0x020d8098 -data_ov024_020d809e kind:data(any) addr:0x020d809e -data_ov024_020d80a2 kind:data(any) addr:0x020d80a2 -data_ov024_020d80a3 kind:data(any) addr:0x020d80a3 +data_ov024_020d8094 kind:data(byte[2]) addr:0x020d8094 local +data_ov024_020d8098 kind:data(any) addr:0x020d8098 local data_ov024_020d8200 kind:data(any) addr:0x020d8200 local -_ZTV19data_ov024_020d8208 kind:data(any) addr:0x020d8208 -data_ov024_020d8224 kind:data(any) addr:0x020d8224 -data_ov024_020d8244 kind:data(any) addr:0x020d8244 -data_ov024_020d8250 kind:data(any) addr:0x020d8250 -data_ov024_020d8254 kind:data(any) addr:0x020d8254 -data_ov024_020d8260 kind:data(any) addr:0x020d8260 -data_ov024_020d8268 kind:data(any) addr:0x020d8268 -data_ov024_020d8270 kind:data(any) addr:0x020d8270 -data_ov024_020d8288 kind:data(any) addr:0x020d8288 -data_ov024_020d829c kind:data(any) addr:0x020d829c -data_ov024_020d82a0 kind:data(any) addr:0x020d82a0 -data_ov024_020d82a4 kind:data(any) addr:0x020d82a4 -data_ov024_020d82a8 kind:data(any) addr:0x020d82a8 -data_ov024_020d82b0 kind:data(any) addr:0x020d82b0 -data_ov024_020d82b8 kind:data(any) addr:0x020d82b8 -data_ov024_020d82c0 kind:data(any) addr:0x020d82c0 -data_ov024_020d82c8 kind:data(any) addr:0x020d82c8 -data_ov024_020d82d0 kind:data(any) addr:0x020d82d0 -data_ov024_020d82d8 kind:data(any) addr:0x020d82d8 -data_ov024_020d82e0 kind:data(any) addr:0x020d82e0 -data_ov024_020d82e8 kind:data(any) addr:0x020d82e8 -data_ov024_020d82f4 kind:data(any) addr:0x020d82f4 -data_ov024_020d8300 kind:data(any) addr:0x020d8300 -data_ov024_020d830c kind:data(any) addr:0x020d830c -data_ov024_020d8318 kind:data(any) addr:0x020d8318 -data_ov024_020d8324 kind:data(any) addr:0x020d8324 -data_ov024_020d8330 kind:data(any) addr:0x020d8330 -data_ov024_020d833c kind:data(any) addr:0x020d833c -data_ov024_020d8350 kind:data(any) addr:0x020d8350 -data_ov024_020d8358 kind:data(any) addr:0x020d8358 -data_ov024_020d8374 kind:data(any) addr:0x020d8374 -data_ov024_020d83a4 kind:data(any) addr:0x020d83a4 -data_ov024_020d83ac kind:data(any) addr:0x020d83ac -data_ov024_020d83b4 kind:data(any) addr:0x020d83b4 -data_ov024_020d83b8 kind:data(any) addr:0x020d83b8 -data_ov024_020d83c4 kind:data(any) addr:0x020d83c4 +_ZTV27UnkStruct_ov024_020d86a0_00 kind:data(any) addr:0x020d8208 +data_ov024_020d8224 kind:data(byte[4]) addr:0x020d8224 +data_ov024_020d8228 kind:data(byte[4]) addr:0x020d8228 +data_ov024_020d822c kind:data(byte[4]) addr:0x020d822c +data_ov024_020d8230 kind:data(byte[4]) addr:0x020d8230 +data_ov024_020d8234 kind:data(byte[4]) addr:0x020d8234 +data_ov024_020d8238 kind:data(byte[4]) addr:0x020d8238 +_ZTV20PlayerActor_A0_38_18 kind:data(any) addr:0x020d823c +_ZTV20PlayerActor_A0_38_04 kind:data(any) addr:0x020d8248 +sCreditsEndingType kind:data(byte[2]) addr:0x020d8254 local +_ZTV14UnkDataStruct4 kind:data(any) addr:0x020d8258 +@2128 kind:data(byte[6]) addr:0x020d8268 local +@2129 kind:data(byte[21]) addr:0x020d8270 local +@2130 kind:data(byte[19]) addr:0x020d8288 local +@1520 kind:data(byte[4]) addr:0x020d829c local +@1525 kind:data(byte[4]) addr:0x020d82a0 local +@1526 kind:data(byte[4]) addr:0x020d82a4 local +@1523 kind:data(byte[5]) addr:0x020d82a8 local +@1521 kind:data(byte[5]) addr:0x020d82b0 local +@1522 kind:data(byte[5]) addr:0x020d82b8 local +@1517 kind:data(byte[6]) addr:0x020d82c0 local +@1524 kind:data(byte[6]) addr:0x020d82c8 local +@1511 kind:data(byte[7]) addr:0x020d82d0 local +@1508 kind:data(byte[7]) addr:0x020d82d8 local +@1510 kind:data(byte[8]) addr:0x020d82e0 local +@1515 kind:data(byte[10]) addr:0x020d82e8 local +@1509 kind:data(byte[10]) addr:0x020d82f4 local +@1512 kind:data(byte[10]) addr:0x020d8300 local +@1513 kind:data(byte[10]) addr:0x020d830c local +@1514 kind:data(byte[10]) addr:0x020d8318 local +@1516 kind:data(byte[11]) addr:0x020d8324 local +@1518 kind:data(byte[11]) addr:0x020d8330 local +@1519 kind:data(byte[11]) addr:0x020d833c local +_ZTV25MapObjectProfile_Derived5 kind:data(any) addr:0x020d8348 +data_ov024_020d8358 kind:data(any) addr:0x020d8358 local +data_ov024_020d8374 kind:data(any) addr:0x020d8374 local +@1553 kind:data(byte[6]) addr:0x020d83a4 local +@1554 kind:data(byte[6]) addr:0x020d83ac local +@1555 kind:data(byte[4]) addr:0x020d83b4 local +@1562 kind:data(byte[10]) addr:0x020d83b8 local +@1563 kind:data(byte) addr:0x020d83c4 local data_ov024_020d83c8 kind:data(any) addr:0x020d83c8 data_ov024_020d83d4 kind:data(any) addr:0x020d83d4 data_ov024_020d83dc kind:data(any) addr:0x020d83dc diff --git a/config/eur/arm9/overlays/ov026/symbols.txt b/config/eur/arm9/overlays/ov026/symbols.txt index 7bde3b99f..0a598e139 100644 --- a/config/eur/arm9/overlays/ov026/symbols.txt +++ b/config/eur/arm9/overlays/ov026/symbols.txt @@ -93,11 +93,11 @@ func_ov026_020dc394 kind:function(arm,size=0x6c) addr:0x020dc394 func_ov026_020dc400 kind:function(arm,size=0x34) addr:0x020dc400 func_ov026_020dc434 kind:function(arm,size=0x28) addr:0x020dc434 func_ov026_020dc45c kind:function(arm,size=0x4) addr:0x020dc45c -func_ov026_020dc460 kind:function(arm,size=0x2a8) addr:0x020dc460 +_ZN21UnkStruct_027e0ce0_38C1Ev kind:function(arm,size=0x2a8) addr:0x020dc460 func_ov026_020dc708 kind:function(arm,size=0x14) addr:0x020dc708 func_ov026_020dc71c kind:function(arm,size=0x14) addr:0x020dc71c -func_ov026_020dc730 kind:function(arm,size=0xdc) addr:0x020dc730 -_ZN19func_ov026_020dc80cD0Ev kind:function(arm,size=0xe4) addr:0x020dc80c +_ZN21UnkStruct_027e0ce0_38D1Ev kind:function(arm,size=0xdc) addr:0x020dc730 +_ZN21UnkStruct_027e0ce0_38D0Ev kind:function(arm,size=0xe4) addr:0x020dc80c func_ov026_020dc8f0 kind:function(arm,size=0x28) addr:0x020dc8f0 func_ov026_020dc918 kind:function(arm,size=0x98) addr:0x020dc918 func_ov026_020dc9b0 kind:function(arm,size=0x64) addr:0x020dc9b0 @@ -679,7 +679,7 @@ func_ov026_020f46c8 kind:function(arm,size=0x10) addr:0x020f46c8 func_ov026_020f46d8 kind:function(arm,size=0x8) addr:0x020f46d8 _ZN19func_ov026_020f46e0D1Ev kind:function(arm,size=0x70) addr:0x020f46e0 _ZN19func_ov026_020f4750D0Ev kind:function(arm,size=0x78) addr:0x020f4750 -func_ov026_020f47c8 kind:function(arm,size=0x68) addr:0x020f47c8 +_ZN24UnkStruct_027e0ce0_38_10C1Ev kind:function(arm,size=0x68) addr:0x020f47c8 func_ov026_020f4830 kind:function(arm,size=0x14) addr:0x020f4830 _ZN24UnkStruct_ov026_0213f57819func_ov026_020f4844Ev kind:function(arm,size=0x2c) addr:0x020f4844 _ZN24UnkStruct_027e0ce0_38_1019func_ov026_020f4870Ev kind:function(arm,size=0x298) addr:0x020f4870 diff --git a/config/eur/arm9/overlays/ov031/symbols.txt b/config/eur/arm9/overlays/ov031/symbols.txt index a7451bb91..a0adc167c 100644 --- a/config/eur/arm9/overlays/ov031/symbols.txt +++ b/config/eur/arm9/overlays/ov031/symbols.txt @@ -139,7 +139,7 @@ func_ov031_020db028 kind:function(arm,size=0xd4) addr:0x020db028 func_ov031_020db0fc kind:function(arm,size=0x24) addr:0x020db0fc func_ov031_020db120 kind:function(arm,size=0x40) addr:0x020db120 func_ov031_020db160 kind:function(arm,size=0x30) addr:0x020db160 -func_ov031_020db190 kind:function(arm,size=0x24) addr:0x020db190 +_ZN18PlayerActorBase_74C1Ev kind:function(arm,size=0x24) addr:0x020db190 func_ov031_020db1b4 kind:function(arm,size=0xfc) addr:0x020db1b4 func_ov031_020db2b0 kind:function(arm,size=0x2c) addr:0x020db2b0 func_ov031_020db2dc kind:function(arm,size=0x5c) addr:0x020db2dc diff --git a/config/eur/arm9/overlays/ov088/symbols.txt b/config/eur/arm9/overlays/ov088/symbols.txt index 275e2bd14..5bdc4ff6a 100644 --- a/config/eur/arm9/overlays/ov088/symbols.txt +++ b/config/eur/arm9/overlays/ov088/symbols.txt @@ -322,7 +322,7 @@ func_ov088_0216f818 kind:function(arm,size=0x1c) addr:0x0216f818 func_ov088_0216f834 kind:function(arm,size=0x24) addr:0x0216f834 func_ov088_0216f858 kind:function(arm,size=0x1c) addr:0x0216f858 func_ov088_0216f874 kind:function(arm,size=0x2c) addr:0x0216f874 -func_ov088_0216f8a0 kind:function(thumb,size=0x298) addr:0x0216f8a0 +_ZN21UnkStruct_027e0ce0_3CC1Ev kind:function(thumb,size=0x298) addr:0x0216f8a0 func_ov088_0216fb38 kind:function(thumb,size=0x8c) addr:0x0216fb38 func_ov088_0216fbc4 kind:function(thumb,size=0x2c) addr:0x0216fbc4 func_ov088_0216fbf0 kind:function(arm,size=0xb0) addr:0x0216fbf0 diff --git a/config/eur/arm9/overlays/ov101/symbols.txt b/config/eur/arm9/overlays/ov101/symbols.txt index f0cc9084c..205f72c02 100644 --- a/config/eur/arm9/overlays/ov101/symbols.txt +++ b/config/eur/arm9/overlays/ov101/symbols.txt @@ -9,7 +9,7 @@ func_ov101_02182dc8 kind:function(thumb,size=0x20) addr:0x02182dc8 func_ov101_02182de8 kind:function(thumb,size=0xc) addr:0x02182de8 func_ov101_02182df4 kind:function(thumb,size=0xc) addr:0x02182df4 func_ov101_02182e00 kind:function(thumb,size=0xc) addr:0x02182e00 -func_ov101_02182e0c kind:function(thumb,size=0x154) addr:0x02182e0c +_ZN21UnkStruct_027e0ce0_40C1Ev kind:function(thumb,size=0x154) addr:0x02182e0c func_ov101_02182f60 kind:function(thumb,size=0x54) addr:0x02182f60 func_ov101_02182fb4 kind:function(thumb,size=0x50) addr:0x02182fb4 func_ov101_02183004 kind:function(thumb,size=0x1e) addr:0x02183004 diff --git a/config/jp/arm9/delinks.txt b/config/jp/arm9/delinks.txt index 466b81e80..f0c01e2c4 100644 --- a/config/jp/arm9/delinks.txt +++ b/config/jp/arm9/delinks.txt @@ -71,6 +71,14 @@ libs/c/src/ansi_files.c: .data start:0x02045c1c end:0x02045d00 .bss start:0x02052d20 end:0x02053020 +libs/c/src/float.c: + complete + .data start:0x02045d00 end:0x02045d04 + +libs/c/src/locale.c: + complete + .data start:0x02045d04 end:0x02045f20 + libs/c/src/arith.c: complete .text start:0x02034e04 end:0x02034e1c @@ -117,14 +125,6 @@ libs/c/src/wmem.c: complete .text start:0x02035728 end:0x02035760 -libs/c/src/float.c: - complete - .data start:0x02045d00 end:0x02045d04 - -libs/c/src/locale.c: - complete - .data start:0x02045d04 end:0x02045f20 - libs/c/src/wprintf.c: .text start:0x02035760 end:0x0203768c .data start:0x02045f20 end:0x02045fa0 diff --git a/config/jp/arm9/itcm/symbols.txt b/config/jp/arm9/itcm/symbols.txt index c94ba616e..d8c3e4703 100644 --- a/config/jp/arm9/itcm/symbols.txt +++ b/config/jp/arm9/itcm/symbols.txt @@ -153,9 +153,9 @@ func_01ffd1b4 kind:function(arm,size=0x64) addr:0x01ffd1b4 func_01ffd218 kind:function(arm,size=0x38) addr:0x01ffd218 func_01ffd250 kind:function(arm,size=0x44) addr:0x01ffd250 func_01ffd294 kind:function(arm,size=0x11c) addr:0x01ffd294 -func_01ffd3b0 kind:function(arm,size=0x28) addr:0x01ffd3b0 -_ZN18UnkStruct_027e09a413func_01ffd3d8Ev kind:function(arm,size=0x28) addr:0x01ffd3d8 -_ZNK18UnkStruct_027e09a413func_01ffd400Ev kind:function(arm,size=0x20) addr:0x01ffd400 +_ZN18UnkStruct_027e09a46IsLandEv kind:function(arm,size=0x28) addr:0x01ffd3b0 +_ZN18UnkStruct_027e09a47IsTrainEv kind:function(arm,size=0x28) addr:0x01ffd3d8 +_ZNK18UnkStruct_027e09a421GetCurrentCourseEntryEv kind:function(arm,size=0x20) addr:0x01ffd400 _ZN18UnkStruct_027e09b813func_01ffd420Ev kind:function(arm,size=0x1c) addr:0x01ffd420 func_01ffd43c kind:function(arm,size=0x60) addr:0x01ffd43c func_01ffd49c kind:function(arm,size=0x1a4) addr:0x01ffd49c diff --git a/config/jp/arm9/overlays/ov000/symbols.txt b/config/jp/arm9/overlays/ov000/symbols.txt index e49483b31..4d7a3c1ca 100644 --- a/config/jp/arm9/overlays/ov000/symbols.txt +++ b/config/jp/arm9/overlays/ov000/symbols.txt @@ -284,7 +284,7 @@ func_ov000_0205c654 kind:function(arm,size=0x7c) addr:0x0205c654 func_ov000_0205c6d0 kind:function(arm,size=0x84) addr:0x0205c6d0 func_ov000_0205c754 kind:function(arm,size=0xc) addr:0x0205c754 func_ov000_0205c760 kind:function(arm,size=0x4c) addr:0x0205c760 -func_ov000_0205c7ac kind:function(arm,size=0xb0) addr:0x0205c7ac +func_ov000_0205c7ac_jp kind:function(arm,size=0xb0) addr:0x0205c7ac func_ov000_0205c85c kind:function(arm,size=0x50) addr:0x0205c85c func_ov000_0205c8ac kind:function(arm,size=0x50) addr:0x0205c8ac func_ov000_0205c8fc kind:function(arm,size=0x18) addr:0x0205c8fc @@ -327,9 +327,9 @@ func_ov000_0205db58 kind:function(arm,size=0xd4) addr:0x0205db58 func_ov000_0205dc2c kind:function(arm,size=0x2c) addr:0x0205dc2c func_ov000_0205dc58 kind:function(arm,size=0x34) addr:0x0205dc58 func_ov000_0205dc8c kind:function(arm,size=0x48) addr:0x0205dc8c -func_ov000_0205dcd4 kind:function(arm,size=0x34) addr:0x0205dcd4 +func_ov000_0205c74c kind:function(arm,size=0x34) addr:0x0205dcd4 func_ov000_0205dd08 kind:function(arm,size=0x2c) addr:0x0205dd08 -func_ov000_0205dd34 kind:function(arm,size=0x58) addr:0x0205dd34 +func_ov000_0205c7ac kind:function(arm,size=0x58) addr:0x0205dd34 func_ov000_0205dd8c kind:function(arm,size=0x78) addr:0x0205dd8c func_ov000_0205de04 kind:function(arm,size=0xc) addr:0x0205de04 func_ov000_0205de10 kind:function(arm,size=0xc) addr:0x0205de10 @@ -344,8 +344,8 @@ func_ov000_0205def4 kind:function(arm,size=0x18) addr:0x0205def4 func_ov000_0205c984 kind:function(arm,size=0x14) addr:0x0205df0c func_ov000_0205df20 kind:function(arm,size=0x1c) addr:0x0205df20 func_ov000_0205c9b4 kind:function(arm,size=0x1c) addr:0x0205df3c -func_ov000_0205df58 kind:function(arm,size=0x48) addr:0x0205df58 -func_ov000_0205dfa0 kind:function(arm,size=0x1c) addr:0x0205dfa0 +func_ov000_0205c9d0 kind:function(arm,size=0x48) addr:0x0205df58 +func_ov000_0205ca18 kind:function(arm,size=0x1c) addr:0x0205dfa0 func_ov000_0205dfbc kind:function(arm,size=0x40) addr:0x0205dfbc func_ov000_0205dffc kind:function(arm,size=0x40) addr:0x0205dffc func_ov000_0205e03c kind:function(arm,size=0x28) addr:0x0205e03c @@ -487,7 +487,7 @@ func_ov000_02062cf4 kind:function(thumb,size=0xbc) addr:0x02062cf4 func_ov000_02062db0 kind:function(thumb,size=0x28) addr:0x02062db0 _ZN23UnkStruct_027e0998_Base19func_ov000_02061850Ei kind:function(arm,size=0x18) addr:0x02062dd8 _ZN23UnkStruct_027e0998_Base8vfunc_00EP7VecFx32P5Vec2sPt kind:function(arm,size=0x1e0) addr:0x02062df0 -func_ov000_02062fd0 kind:function(arm,size=0x28) addr:0x02062fd0 +_ZN23UnkStruct_027e0998_Base19func_ov000_02061a48EP7VecFx32P5Vec2sS3_ kind:function(arm,size=0x28) addr:0x02062fd0 _ZN23UnkStruct_027e0998_Base19func_ov000_02061a70Ev kind:function(arm,size=0xc) addr:0x02062ff8 func_ov000_02063004 kind:function(arm,size=0x10) addr:0x02063004 _ZN26GameModeManagerBase_104_0CD1Ev kind:function(arm,size=0x18) addr:0x02063014 @@ -986,7 +986,7 @@ func_ov000_020717d8 kind:function(arm,size=0x14) addr:0x020717d8 func_ov000_020717ec kind:function(arm,size=0x14) addr:0x020717ec func_ov000_02071800 kind:function(arm,size=0x1c) addr:0x02071800 func_ov000_0207181c kind:function(arm,size=0xfc) addr:0x0207181c -func_ov000_02071918 kind:function(arm,size=0x3c) addr:0x02071918 +_ZN18UnkStruct_027e09a021GetSceneIndexFromNameEPKc kind:function(arm,size=0x3c) addr:0x02071918 _ZN18UnkStruct_027e09a014GetCourseEntryEj kind:function(arm,size=0xc) addr:0x02071954 func_ov000_02071960 kind:function(arm,size=0x14) addr:0x02071960 _ZN18UnkStruct_027e09a017GetRoomEntryIndexEv kind:function(arm,size=0x40) addr:0x02071974 @@ -1411,9 +1411,9 @@ func_ov000_0207d43c kind:function(arm,size=0x260) addr:0x0207d43c func_ov000_0207d69c kind:function(arm,size=0x4) addr:0x0207d69c _ZN19func_ov000_0207d6a0D0Ev kind:function(arm,size=0x14) addr:0x0207d6a0 func_ov000_0207d6b4 kind:function(arm,size=0x4) addr:0x0207d6b4 -func_ov000_0207d6b8 kind:function(arm,size=0x8) addr:0x0207d6b8 -func_ov000_0207d6c0 kind:function(arm,size=0x8) addr:0x0207d6c0 -func_ov000_0207d6c8 kind:function(arm,size=0x8) addr:0x0207d6c8 +_ZN26UnkStruct_027e0ce0_38_Base8vfunc_08Ev kind:function(arm,size=0x8) addr:0x0207d6b8 +_ZN26UnkStruct_027e0ce0_38_Base8vfunc_0CEv kind:function(arm,size=0x8) addr:0x0207d6c0 +_ZN26UnkStruct_027e0ce0_38_Base8vfunc_10Ev kind:function(arm,size=0x8) addr:0x0207d6c8 _ZN17MapObject_10_BaseC2Ev kind:function(arm,size=0x30) addr:0x0207d6d0 func_ov000_0207d700 kind:function(arm,size=0x30) addr:0x0207d700 func_ov000_0207d730 kind:function(arm,size=0x38) addr:0x0207d730 @@ -1759,7 +1759,7 @@ func_ov000_02087874 kind:function(arm,size=0xf8) addr:0x02087874 func_ov000_0208796c kind:function(arm,size=0x16c) addr:0x0208796c func_ov000_02087ad8 kind:function(arm,size=0xf4) addr:0x02087ad8 func_ov000_02087bcc kind:function(arm,size=0x114) addr:0x02087bcc -func_ov000_02087ce0 kind:function(thumb,size=0xf8) addr:0x02087ce0 +_ZN14PlayerActor_9CC1Ev kind:function(thumb,size=0xf8) addr:0x02087ce0 func_ov000_02087dd8 kind:function(thumb,size=0x54) addr:0x02087dd8 func_ov000_02087e2c kind:function(arm,size=0x9c) addr:0x02087e2c func_ov000_02087ec8 kind:function(arm,size=0x3c) addr:0x02087ec8 @@ -2112,7 +2112,7 @@ func_ov000_02092d58 kind:function(arm,size=0x40) addr:0x02092d58 _ZN19func_ov000_02092d98D0Ev kind:function(arm,size=0x48) addr:0x02092d98 func_ov000_02092de0 kind:function(arm,size=0xe4) addr:0x02092de0 func_ov000_02092ec4 kind:function(arm,size=0x4c4) addr:0x02092ec4 -func_ov000_02093388 kind:function(thumb,size=0x1f4) addr:0x02093388 +_ZN14PlayerActor_A0C1Ev kind:function(thumb,size=0x1f4) addr:0x02093388 func_ov000_0209357c kind:function(arm,size=0x18) addr:0x0209357c func_ov000_02093594 kind:function(arm,size=0x50) addr:0x02093594 func_ov000_020935e4 kind:function(arm,size=0x28) addr:0x020935e4 diff --git a/config/jp/arm9/overlays/ov001/delinks.txt b/config/jp/arm9/overlays/ov001/delinks.txt index 5c1171bbc..b252f193a 100644 --- a/config/jp/arm9/overlays/ov001/delinks.txt +++ b/config/jp/arm9/overlays/ov001/delinks.txt @@ -20,6 +20,9 @@ src/001_SceneInit/CargoManager_001.cpp: src/001_SceneInit/PassengerManager_001.cpp: .text start:0x020c10c4 end:0x020c12a4 +src/001_SceneInit/UnkStruct_027e0cf8_08_00_001.cpp: + .text start:0x020c12a4 end:0x020c1514 + src/001_SceneInit/Game/AdventureModeManager_001.cpp: .text start:0x020c17c8 end:0x020c2198 diff --git a/config/jp/arm9/overlays/ov001/symbols.txt b/config/jp/arm9/overlays/ov001/symbols.txt index accc84aee..15dd3c69d 100644 --- a/config/jp/arm9/overlays/ov001/symbols.txt +++ b/config/jp/arm9/overlays/ov001/symbols.txt @@ -197,7 +197,7 @@ _ZN11ItemManager19func_ov001_020bb9f8Ev kind:function(thumb,size=0x5c) addr:0x02 func_ov001_020bd29c kind:function(thumb,size=0x18) addr:0x020bd29c func_ov001_020bd2b4 kind:function(thumb,size=0x58) addr:0x020bd2b4 func_ov001_020bd30c kind:function(thumb,size=0x5c) addr:0x020bd30c -func_ov001_020bd368 kind:function(thumb,size=0x260) addr:0x020bd368 +_ZN18PlayerActorBase_70C1Ev kind:function(thumb,size=0x260) addr:0x020bd368 func_ov001_020bd5c8 kind:function(thumb,size=0x96) addr:0x020bd5c8 func_ov001_020bd660 kind:function(thumb,size=0x4c) addr:0x020bd660 func_ov001_020bd6ac kind:function(thumb,size=0x7c) addr:0x020bd6ac @@ -209,7 +209,7 @@ func_ov001_020bd76c kind:function(thumb,size=0x2a) addr:0x020bd76c func_ov001_020bd798 kind:function(thumb,size=0x2a) addr:0x020bd798 func_ov001_020bd7c4 kind:function(thumb,size=0x50) addr:0x020bd7c4 func_ov001_020bd814 kind:function(thumb,size=0x5a) addr:0x020bd814 -func_ov001_020bd870 kind:function(thumb,size=0x88) addr:0x020bd870 +_ZN26UnkStruct_027e0ce0_40_BaseC2Ev kind:function(thumb,size=0x88) addr:0x020bd870 func_ov001_020bd8f8 kind:function(thumb,size=0x30) addr:0x020bd8f8 func_ov001_020bd928 kind:function(thumb,size=0x154) addr:0x020bd928 func_ov001_020bda7c kind:function(thumb,size=0x16) addr:0x020bda7c @@ -235,18 +235,18 @@ func_ov001_020bdfa4 kind:function(thumb,size=0xc) addr:0x020bdfa4 func_ov001_020bdfb0 kind:function(thumb,size=0x20) addr:0x020bdfb0 func_ov001_020bdfd0 kind:function(thumb,size=0xc) addr:0x020bdfd0 func_ov001_020bdfdc kind:function(thumb,size=0x8c) addr:0x020bdfdc -func_ov001_020be068 kind:function(thumb,size=0x124) addr:0x020be068 +_ZN15PlayerActorBaseC2Ev kind:function(thumb,size=0x124) addr:0x020be068 func_ov001_020be18c kind:function(thumb,size=0x28) addr:0x020be18c func_ov001_020be1b4 kind:function(thumb,size=0x2e) addr:0x020be1b4 -func_ov001_020be1e4 kind:function(thumb,size=0x138) addr:0x020be1e4 -func_ov001_020be31c kind:function(thumb,size=0xc) addr:0x020be31c +_ZN11PlayerActorC1Ev kind:function(thumb,size=0x138) addr:0x020be1e4 +_ZN15PlayerActor_1B0D1Ev kind:function(thumb,size=0xc) addr:0x020be31c func_ov001_020be328 kind:function(thumb,size=0x80) addr:0x020be328 func_ov001_020be3a8 kind:function(thumb,size=0x10) addr:0x020be3a8 func_ov001_020be3b8 kind:function(thumb,size=0x36) addr:0x020be3b8 func_ov001_020be3f0 kind:function(thumb,size=0x26) addr:0x020be3f0 func_ov001_020be418 kind:function(thumb,size=0x98) addr:0x020be418 func_ov001_020be4b0 kind:function(thumb,size=0x20) addr:0x020be4b0 -func_ov001_020be4d0 kind:function(thumb,size=0xc) addr:0x020be4d0 +_ZN15PlayerActor_1B0C1Ev kind:function(thumb,size=0xc) addr:0x020be4d0 func_ov001_020be4dc kind:function(thumb,size=0xc) addr:0x020be4dc func_ov001_020be4e8 kind:function(thumb,size=0x46) addr:0x020be4e8 func_ov001_020be530 kind:function(thumb,size=0x2) addr:0x020be530 @@ -273,7 +273,7 @@ func_ov001_020bef70 kind:function(thumb,size=0xc) addr:0x020bef70 _ZN23GameModeManagerBase_00419func_ov001_020bd734EPi kind:function(thumb,size=0x50) addr:0x020bef7c _ZN23GameModeManagerBase_00419func_ov001_020bd784Ev kind:function(thumb,size=0x3c) addr:0x020befcc func_ov001_020bf008 kind:function(thumb,size=0x8) addr:0x020bf008 -func_ov001_020bf010 kind:function(thumb,size=0x32) addr:0x020bf010 +_ZN24UnkStruct_ov024_020d86a0C1Ev kind:function(thumb,size=0x32) addr:0x020bf010 _ZN24UnkStruct_ov024_020d86a0D1Ev kind:function(thumb,size=0x1a) addr:0x020bf044 _ZN24UnkStruct_ov024_020d86a019func_ov001_020bd818Ev kind:function(thumb,size=0x24) addr:0x020bf060 func_ov001_020bf084 kind:function(thumb,size=0xc) addr:0x020bf084 @@ -401,9 +401,9 @@ _ZN16PassengerManager19func_ov001_020bf910Ev kind:function(thumb,size=0x10c) add _ZN16PassengerManager19func_ov001_020bfa1cEv kind:function(thumb,size=0x1c) addr:0x020c1270 _ZN8InstanceI16PassengerManagerEC2Ev kind:function(thumb,size=0xc) addr:0x020c128c _ZN8InstanceI16PassengerManagerED2Ev kind:function(thumb,size=0xc) addr:0x020c1298 -func_ov001_020c12a4 kind:function(thumb,size=0xc2) addr:0x020c12a4 -func_ov001_020c1368 kind:function(thumb,size=0xc) addr:0x020c1368 -func_ov001_020c1374 kind:function(thumb,size=0x1a0) addr:0x020c1374 +_ZN24UnkStruct_027e0cf8_08_00C1Eh kind:function(thumb,size=0xc2) addr:0x020c12a4 +_ZN24UnkStruct_027e0cf8_08_00D1Ev kind:function(thumb,size=0xc) addr:0x020c1368 +_ZN24UnkStruct_027e0cf8_08_0019func_ov001_020bfb20Ev kind:function(thumb,size=0x1a0) addr:0x020c1374 func_ov001_020c1514 kind:function(thumb,size=0x30) addr:0x020c1514 func_ov001_020c1544 kind:function(thumb,size=0x30) addr:0x020c1544 func_ov001_020c1574 kind:function(thumb,size=0x34) addr:0x020c1574 diff --git a/config/jp/arm9/overlays/ov017/symbols.txt b/config/jp/arm9/overlays/ov017/symbols.txt index 86e48a061..5f8a36f98 100644 --- a/config/jp/arm9/overlays/ov017/symbols.txt +++ b/config/jp/arm9/overlays/ov017/symbols.txt @@ -145,8 +145,8 @@ func_ov017_020c48dc kind:function(arm,size=0x34) addr:0x020c48dc func_ov017_020c4910 kind:function(arm,size=0x34) addr:0x020c4910 func_ov017_020c4944 kind:function(arm,size=0x24) addr:0x020c4944 func_ov017_020c4968 kind:function(arm,size=0x44) addr:0x020c4968 -func_ov017_020c49ac kind:function(arm,size=0x4c) addr:0x020c49ac -func_ov017_020c49f8 kind:function(arm,size=0x1a8) addr:0x020c49f8 +_ZN24UnkStruct_ov024_020d86a019func_ov017_020c3180Ev kind:function(arm,size=0x4c) addr:0x020c49ac +_ZN24UnkStruct_ov024_020d86a019func_ov017_020c31ccEv kind:function(arm,size=0x1a8) addr:0x020c49f8 func_ov017_020c4ba0 kind:function(arm,size=0xa0) addr:0x020c4ba0 func_ov017_020c4c40 kind:function(arm,size=0x160) addr:0x020c4c40 func_ov017_020c4da0 kind:function(arm,size=0x74) addr:0x020c4da0 diff --git a/config/jp/arm9/overlays/ov024/delinks.txt b/config/jp/arm9/overlays/ov024/delinks.txt index e36f0f877..e8c16f5d5 100644 --- a/config/jp/arm9/overlays/ov024/delinks.txt +++ b/config/jp/arm9/overlays/ov024/delinks.txt @@ -119,6 +119,10 @@ src/024_MainGame/UnkStruct_020d8698_024.cpp: src/024_MainGame/UnkStruct_027e0cf8_00_0C_024.cpp: .text start:0x020d129c end:0x020d1f40 + .rodata start:0x020d8df8 end:0x020d8ee8 + .init start:0x020d92c4 end:0x020d93e4 + .ctor start:0x020d94dc end:0x020d94e0 + .data start:0x020d9a34 end:0x020d9ba0 src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp: complete @@ -130,29 +134,57 @@ src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp: .bss start:0x020da03c end:0x020da040 src/024_MainGame/UnkStruct_ov024_020d86a0_024.cpp: + complete .text start:0x020d2fac end:0x020d3050 + .data start:0x020d9ba8 end:0x020d9bc4 + +src/024_MainGame/PlayerActor_A0_38_024.cpp: + .text start:0x020d3050 end:0x020d334c + .init start:0x020d9410 end:0x020d9458 + .ctor start:0x020d94e4 end:0x020d94e8 + .data start:0x020d9bc4 end:0x020d9bf4 -src/024_MainGame/code_020d16fc_024.cpp: - .text start:0x020d3050 end:0x020d3e28 +src/024_MainGame/CreditsEndingType.cpp: + complete + .text start:0x020d334c end:0x020d336c + .data start:0x020d9bf4 end:0x020d9bf8 -src/024_MainGame/code_020d24d4_024.cpp: - .text start:0x020d3e28 end:0x020d4aac +src/024_MainGame/UnkDataStruct4_14.cpp: + complete + .text start:0x020d336c end:0x020d3de4 + .rodata start:0x020d8ef4 end:0x020d8f10 + +src/024_MainGame/UnkDataStruct4.cpp: + complete + .text start:0x020d3de4 end:0x020d4aac + .data start:0x020d9bf8 end:0x020d9c3c src/024_MainGame/UnkStruct_027e0cf8_08_024.cpp: + complete .text start:0x020d4aac end:0x020d4fc4 -src/024_MainGame/code_020d3670_024.cpp: - .text start:0x020d4fc4 end:0x020d5674 +src/024_MainGame/ZeldaTrainBinary.cpp: + complete + .text start:0x020d4fc4 end:0x020d5254 + +src/024_MainGame/UnkStruct_027e0cf8_08_00_024.cpp: + complete + .text start:0x020d5254 end:0x020d55a8 src/024_MainGame/UnkStruct_027e0ce0_34_024.cpp: - .text start:0x020d5674 end:0x020d5a74 + complete + .text start:0x020d55a8 end:0x020d5a74 + .rodata start:0x020d8f14 end:0x020d8f3c src/024_MainGame/PassengerManager.cpp: + complete .text start:0x020d5a74 end:0x020d6008 .rodata start:0x020d8f48 end:0x020d8fc8 src/024_MainGame/code_020d46b4_024.cpp: + complete .text start:0x020d6008 end:0x020d6118 + .data start:0x020d9c3c end:0x020d9d68 src/024_MainGame/UnkStruct_027e0d00.cpp: .text start:0x020d6118 end:0x020d6840 @@ -177,6 +209,7 @@ src/024_MainGame/UnkStruct_027e0d08_024.cpp: .text start:0x020d7630 end:0x020d7c58 src/024_MainGame/MiscAdvManager.cpp: + complete .text start:0x020d7c58 end:0x020d7ff4 src/024_MainGame/code_020d6650_024.cpp: diff --git a/config/jp/arm9/overlays/ov024/relocs.txt b/config/jp/arm9/overlays/ov024/relocs.txt index 3ec01d7eb..4ba1c3a89 100644 --- a/config/jp/arm9/overlays/ov024/relocs.txt +++ b/config/jp/arm9/overlays/ov024/relocs.txt @@ -1828,13 +1828,13 @@ from:0x020d1684 kind:load to:0x027e07d4 module:dtcm from:0x020d1750 kind:load to:0x020d9a34 module:overlay(24) from:0x020d1754 kind:load to:0x020d9a38 module:overlay(24) from:0x020d1798 kind:load to:0x020d9a38 module:overlay(24) -from:0x020d179c kind:load to:0x020d9a42 module:overlay(24) +from:0x020d179c kind:load to:0x020d9a38 add:0xa module:overlay(24) from:0x020d17a4 kind:arm_call to:0x020d1688 module:overlay(24) -from:0x020d17c4 kind:load to:0x020d9a3e module:overlay(24) +from:0x020d17c4 kind:load to:0x020d9a38 add:0x6 module:overlay(24) from:0x020d1800 kind:load to:0x020d9a38 module:overlay(24) from:0x020d183c kind:arm_call to:0x020d6ce4 module:overlay(24) from:0x020d1848 kind:load to:0x020d9a38 module:overlay(24) -from:0x020d184c kind:load to:0x020d9a43 module:overlay(24) +from:0x020d184c kind:load to:0x020d9a38 add:0xb module:overlay(24) from:0x020d18fc kind:arm_call to:0x020611a8 module:overlay(0) from:0x020d1914 kind:arm_call to:0x020611a8 module:overlay(0) from:0x020d1924 kind:arm_call to:0x020d1960 module:overlay(24) @@ -1989,8 +1989,8 @@ from:0x020d32cc kind:load to:0x0203feb0 module:main from:0x020d32e0 kind:thumb_call_arm to:0x02016614 module:main from:0x020d32f4 kind:thumb_call_arm to:0x02016614 module:main from:0x020d3302 kind:thumb_call to:0x020d332c module:overlay(24) -from:0x020d330c kind:load to:0x020d9bf0 module:overlay(24) -from:0x020d3310 kind:load to:0x020d9be4 module:overlay(24) +from:0x020d330c kind:load to:0x020d9be8 add:0x8 module:overlay(24) +from:0x020d3310 kind:load to:0x020d9bdc add:0x8 module:overlay(24) from:0x020d331a kind:thumb_call_arm to:0x0201662c module:main from:0x020d3322 kind:thumb_call_arm to:0x0201662c module:main from:0x020d3358 kind:load to:0x020d9bf4 module:overlay(24) @@ -2037,8 +2037,8 @@ from:0x020d3d64 kind:arm_call to:0x020d3db8 module:overlay(24) from:0x020d3d78 kind:arm_call to:0x020d3db8 module:overlay(24) from:0x020d3d98 kind:load to:0x020d3d40 module:overlay(24) from:0x020d3da0 kind:arm_call to:0x020d36f4 module:overlay(24) -from:0x020d3e24 kind:load to:0x020d9c00 module:overlay(24) -from:0x020d3e68 kind:load to:0x020d9c00 module:overlay(24) +from:0x020d3e24 kind:load to:0x020d9bf8 add:0x8 module:overlay(24) +from:0x020d3e68 kind:load to:0x020d9bf8 add:0x8 module:overlay(24) from:0x020d3e88 kind:load to:0x020d3e8c module:overlay(24) from:0x020d3e98 kind:arm_call to:0x020d3ee0 module:overlay(24) from:0x020d3ea0 kind:arm_call to:0x020d4a94 module:overlay(24) @@ -2226,13 +2226,13 @@ from:0x020d6060 kind:arm_call_thumb to:0x02059ac0 module:overlay(0) from:0x020d6078 kind:load to:0x020d9d54 module:overlay(24) from:0x020d607c kind:load to:0x020d9d44 module:overlay(24) from:0x020d6080 kind:load to:0x020d9d4c module:overlay(24) -from:0x020d6084 kind:load to:0x020d9cf0 module:overlay(24) +from:0x020d6084 kind:load to:0x020d9ce8 add:0x8 module:overlay(24) from:0x020d60bc kind:arm_call_thumb to:0x02059ac0 module:overlay(0) from:0x020d60d4 kind:load to:0x020d9d64 module:overlay(24) from:0x020d60d8 kind:load to:0x020d9cf8 module:overlay(24) from:0x020d60dc kind:load to:0x020d9d4c module:overlay(24) from:0x020d60e0 kind:load to:0x020d9d58 module:overlay(24) -from:0x020d60e4 kind:load to:0x020d9cf0 module:overlay(24) +from:0x020d60e4 kind:load to:0x020d9ce8 add:0x8 module:overlay(24) from:0x020d60f0 kind:arm_call_thumb to:0x02059bec module:overlay(0) from:0x020d6104 kind:arm_call_thumb to:0x02059bec module:overlay(0) from:0x020d610c kind:arm_call to:0x02011ff4 module:main diff --git a/config/jp/arm9/overlays/ov024/symbols.txt b/config/jp/arm9/overlays/ov024/symbols.txt index b954ccad8..3c0dc308c 100644 --- a/config/jp/arm9/overlays/ov024/symbols.txt +++ b/config/jp/arm9/overlays/ov024/symbols.txt @@ -78,7 +78,7 @@ _ZN20AdventureModeManager19func_ov024_020c671cEv kind:function(arm,size=0x54) ad _ZN20AdventureModeManager19func_ov024_020c6770Ejhss kind:function(arm,size=0xac) addr:0x020c7f90 _ZN20AdventureModeManager19func_ov024_020c681cEv kind:function(arm,size=0x24) addr:0x020c803c _ZN20AdventureModeManager19func_ov024_020c6840Ej kind:function(arm,size=0x94) addr:0x020c8060 -_ZN20AdventureModeManager19func_ov024_020c68d4Ev kind:function(arm,size=0x18) addr:0x020c80f4 +_ZN20AdventureModeManager19func_ov024_020c68d4EP5Vec2si kind:function(arm,size=0x18) addr:0x020c80f4 _ZN20AdventureModeManager19func_ov024_020c68ecEii kind:function(arm,size=0x44) addr:0x020c810c _ZN20AdventureModeManager19func_ov024_020c6930Ev kind:function(arm,size=0x10) addr:0x020c8150 _ZN20AdventureModeManager19func_ov024_020c6940Eii kind:function(arm,size=0x8c) addr:0x020c8160 @@ -118,14 +118,14 @@ _ZN18UnkStruct_027e099819func_ov024_020c7354Ev kind:function(arm,size=0x3c) addr _ZN18UnkStruct_027e0cf86CreateEv kind:function(arm,size=0x24) addr:0x020c8be0 _ZN18UnkStruct_027e0cf8C1Ev kind:function(arm,size=0xf0) addr:0x020c8c04 _ZN18UnkStruct_027e0cf8D1Ev kind:function(arm,size=0xb8) addr:0x020c8cf4 -_ZN18UnkStruct_027e0cf819func_ov024_020c755cEPv kind:function(arm,size=0x74) addr:0x020c8dac -_ZN18UnkStruct_027e0cf819func_ov024_020c75d0EPvit kind:function(arm,size=0x154) addr:0x020c8e20 +_ZN18UnkStruct_027e0cf819func_ov024_020c755cEP14UnkDataStruct4 kind:function(arm,size=0x74) addr:0x020c8dac +_ZN18UnkStruct_027e0cf819func_ov024_020c75d0EP14UnkDataStruct4it kind:function(arm,size=0x154) addr:0x020c8e20 _ZN18UnkStruct_027e0cf819func_ov024_020c7724Ev kind:function(arm,size=0x2c) addr:0x020c8f74 _ZN18UnkStruct_027e0cf819func_ov024_020c7750Ev kind:function(arm,size=0x30) addr:0x020c8fa0 _ZN18UnkStruct_027e0cf819func_ov024_020c7780Ev kind:function(arm,size=0x30) addr:0x020c8fd0 -_ZN18UnkStruct_027e0cf819func_ov024_020c77b0Ei kind:function(arm,size=0x10) addr:0x020c9000 -_ZN18UnkStruct_027e0cf819func_ov024_020c77c0Ev kind:function(arm,size=0x10) addr:0x020c9010 -_ZN18UnkStruct_027e0cf819func_ov024_020c77d0Ev kind:function(arm,size=0x10) addr:0x020c9020 +_ZN18UnkStruct_027e0cf819func_ov024_020c77b0Eb kind:function(arm,size=0x10) addr:0x020c9000 +_ZN18UnkStruct_027e0cf819func_ov024_020c77c0EPiS0_i kind:function(arm,size=0x10) addr:0x020c9010 +_ZN18UnkStruct_027e0cf819func_ov024_020c77d0EP5Vec2si kind:function(arm,size=0x10) addr:0x020c9020 _ZN18UnkStruct_027e0cf819func_ov024_020c77e0EP5Vec2s kind:function(arm,size=0x24) addr:0x020c9030 _ZN18UnkStruct_027e0cf819func_ov024_020c7804EP5Vec2s kind:function(arm,size=0x24) addr:0x020c9054 _ZN18UnkStruct_027e0cf819func_ov024_020c7828Ei kind:function(arm,size=0x50) addr:0x020c9078 @@ -408,27 +408,27 @@ _ZN8InstanceI18UnkStruct_020d8698EC2Ev kind:function(arm,size=0x10) addr:0x020d1 _ZN8InstanceI18UnkStruct_020d8698ED2Ev kind:function(arm,size=0x14) addr:0x020d1288 _ZN21UnkStruct_027e0cf8_00C1Ev kind:function(arm,size=0x68) addr:0x020d129c _ZN21UnkStruct_027e0cf8_00D1Ev kind:function(arm,size=0x4) addr:0x020d1304 -func_ov024_020d1308 kind:function(arm,size=0x1a8) addr:0x020d1308 -_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfb7cEPvP5Vec2sitii kind:function(arm,size=0x1d8) addr:0x020d14b0 -func_ov024_020d1688 kind:function(arm,size=0xd0) addr:0x020d1688 -func_ov024_020d1758 kind:function(arm,size=0x48) addr:0x020d1758 -func_ov024_020d17a0 kind:function(arm,size=0x28) addr:0x020d17a0 -func_ov024_020d17c8 kind:function(arm,size=0x3c) addr:0x020d17c8 -func_ov024_020d1804 kind:function(arm,size=0x4c) addr:0x020d1804 -func_ov024_020d1850 kind:function(arm,size=0x2c) addr:0x020d1850 +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cf9d4EP27UnkStruct_027e0cf8_00_18_00 kind:function(arm,size=0x1a8) addr:0x020d1308 +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfb7cEP14UnkDataStruct4P5Vec2sitii kind:function(arm,size=0x1d8) addr:0x020d14b0 +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfd54Eiiii kind:function(arm,size=0xd0) addr:0x020d1688 +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfe24Es kind:function(arm,size=0x48) addr:0x020d1758 +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfe6cEiiii kind:function(arm,size=0x28) addr:0x020d17a0 +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfe94Ei kind:function(arm,size=0x3c) addr:0x020d17c8 +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfed0Es kind:function(arm,size=0x4c) addr:0x020d1804 +_ZN24UnkStruct_027e0cf8_0C_0019func_ov024_020cff1cEv kind:function(arm,size=0x2c) addr:0x020d1850 _ZN21UnkStruct_027e0cf8_0CC1Ev kind:function(arm,size=0x40) addr:0x020d187c _ZN21UnkStruct_027e0cf8_0CD1Ev kind:function(arm,size=0x4) addr:0x020d18bc -_ZN21UnkStruct_027e0cf8_0C19func_ov024_020cff8cEPvP5Vec2s kind:function(arm,size=0x78) addr:0x020d18c0 +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020cff8cEP14UnkDataStruct4P5Vec2s kind:function(arm,size=0x78) addr:0x020d18c0 _ZN21UnkStruct_027e0cf8_0C19func_ov024_020d0004Ev kind:function(arm,size=0x28) addr:0x020d1938 -func_ov024_020d1960 kind:function(arm,size=0x1b4) addr:0x020d1960 -func_ov024_020d1b14 kind:function(arm,size=0x120) addr:0x020d1b14 -_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d02e0Ev kind:function(arm,size=0x60) addr:0x020d1c34 -_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d0340Ev kind:function(arm,size=0xb8) addr:0x020d1c94 +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d002cEPK14UnkDataStruct4 kind:function(arm,size=0x1b4) addr:0x020d1960 +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d01c0EPK14UnkDataStruct4 kind:function(arm,size=0x120) addr:0x020d1b14 +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d02e0EPiS0_i kind:function(arm,size=0x60) addr:0x020d1c34 +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d0340EP5Vec2si kind:function(arm,size=0xb8) addr:0x020d1c94 _ZN21UnkStruct_027e0cf8_0C19func_ov024_020d03f8EP5Vec2s kind:function(arm,size=0x24) addr:0x020d1d4c _ZN21UnkStruct_027e0cf8_0C19func_ov024_020d041cEP5Vec2s kind:function(arm,size=0xf4) addr:0x020d1d70 -func_ov024_020d1e64 kind:function(arm,size=0xa0) addr:0x020d1e64 -_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d05d0Eii kind:function(arm,size=0x3c) addr:0x020d1f04 -_ZN29AdventureModeManager_1B8_BaseC2EhbPK32AdventureModeManager_1B8_Base_1Cbb kind:function(arm,size=0x94) addr:0x020d1f40 +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d0510Es kind:function(arm,size=0xa0) addr:0x020d1e64 +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d05d0Eib kind:function(arm,size=0x3c) addr:0x020d1f04 +_ZN29AdventureModeManager_1B8_BaseC2EhbRK32AdventureModeManager_1B8_Base_1Cbb kind:function(arm,size=0x94) addr:0x020d1f40 _ZN29AdventureModeManager_1B8_BaseD2Ev kind:function(arm,size=0x18) addr:0x020d1fd4 _ZN29AdventureModeManager_1B8_Base19func_ov024_020d0698Ev kind:function(arm,size=0x38) addr:0x020d1fec _ZN29AdventureModeManager_1B8_Base19func_ov024_020d06d0Ev kind:function(arm,size=0x5c) addr:0x020d2024 @@ -455,135 +455,135 @@ _ZN24AdventureModeManager_1B819func_ov024_020d14a8EP32AdventureModeManager_1B8_B _ZN24AdventureModeManager_1B819func_ov024_020d1564EPK32AdventureModeManager_1B8_Base_1CiPih kind:function(arm,size=0xb0) addr:0x020d2eb8 _ZN24AdventureModeManager_1B819func_ov024_020d1614EPv kind:function(arm,size=0x24) addr:0x020d2f68 _ZN24AdventureModeManager_1B819func_ov024_020d1638Ev kind:function(arm,size=0x20) addr:0x020d2f8c -func_ov024_020d2fac kind:function(arm,size=0x24) addr:0x020d2fac +_ZN24UnkStruct_ov024_020d86a06CreateEv kind:function(arm,size=0x24) addr:0x020d2fac _ZN24UnkStruct_ov024_020d86a019func_ov024_020d167cEv kind:function(arm,size=0x18) addr:0x020d2fd0 -func_ov024_020d2fe8 kind:function(arm,size=0x28) addr:0x020d2fe8 -_ZN19func_ov024_020d3010D1Ev kind:function(arm,size=0x14) addr:0x020d3010 -_ZN19func_ov024_020d3024D0Ev kind:function(arm,size=0x1c) addr:0x020d3024 -func_ov024_020d3040 kind:function(arm,size=0x10) addr:0x020d3040 -func_ov024_020d3050 kind:function(arm,size=0x80) addr:0x020d3050 -func_ov024_020d30d0 kind:function(arm,size=0x200) addr:0x020d30d0 -func_ov024_020d32d0 kind:function(thumb,size=0x44) addr:0x020d32d0 -func_ov024_020d3314 kind:function(thumb,size=0x16) addr:0x020d3314 -func_ov024_020d332c kind:function(thumb,size=0x20) addr:0x020d332c -func_ov024_020d334c kind:function(arm,size=0x10) addr:0x020d334c -func_ov024_020d335c kind:function(arm,size=0x10) addr:0x020d335c -func_ov024_020d336c kind:function(arm,size=0x10) addr:0x020d336c -func_ov024_020d337c kind:function(arm,size=0x70) addr:0x020d337c -func_ov024_020d33ec kind:function(arm,size=0x20) addr:0x020d33ec -func_ov024_020d340c kind:function(arm,size=0xe0) addr:0x020d340c -func_ov024_020d34ec kind:function(arm,size=0x48) addr:0x020d34ec -func_ov024_020d3534 kind:function(arm,size=0x5c) addr:0x020d3534 -func_ov024_020d3590 kind:function(arm,size=0x48) addr:0x020d3590 -func_ov024_020d35d8 kind:function(arm,size=0x44) addr:0x020d35d8 -func_ov024_020d361c kind:function(arm,size=0x2c) addr:0x020d361c -func_ov024_020d3648 kind:function(arm,size=0x3c) addr:0x020d3648 -func_ov024_020d3684 kind:function(arm,size=0x48) addr:0x020d3684 -func_ov024_020d36cc kind:function(arm,size=0x28) addr:0x020d36cc -func_ov024_020d36f4 kind:function(arm,size=0x28) addr:0x020d36f4 -func_ov024_020d371c kind:function(arm,size=0x2c) addr:0x020d371c -func_ov024_020d3748 kind:function(arm,size=0x2c) addr:0x020d3748 -func_ov024_020d3774 kind:function(arm,size=0x8c) addr:0x020d3774 -func_ov024_020d3800 kind:function(arm,size=0xb4) addr:0x020d3800 -func_ov024_020d38b4 kind:function(arm,size=0x10) addr:0x020d38b4 -func_ov024_020d38c4 kind:function(arm,size=0x34) addr:0x020d38c4 -func_ov024_020d38f8 kind:function(arm,size=0x44) addr:0x020d38f8 -func_ov024_020d393c kind:function(arm,size=0x48) addr:0x020d393c -func_ov024_020d3984 kind:function(arm,size=0x5c) addr:0x020d3984 -func_ov024_020d39e0 kind:function(arm,size=0xc) addr:0x020d39e0 -func_ov024_020d39ec kind:function(arm,size=0x28) addr:0x020d39ec -func_ov024_020d3a14 kind:function(arm,size=0xe0) addr:0x020d3a14 -func_ov024_020d3af4 kind:function(arm,size=0x38) addr:0x020d3af4 -func_ov024_020d3b2c kind:function(arm,size=0x64) addr:0x020d3b2c -func_ov024_020d3b90 kind:function(arm,size=0x34) addr:0x020d3b90 -func_ov024_020d3bc4 kind:function(arm,size=0x3c) addr:0x020d3bc4 -func_ov024_020d3c00 kind:function(arm,size=0x74) addr:0x020d3c00 -func_ov024_020d3c74 kind:function(arm,size=0x28) addr:0x020d3c74 -func_ov024_020d3c9c kind:function(arm,size=0x54) addr:0x020d3c9c -func_ov024_020d3cf0 kind:function(arm,size=0x20) addr:0x020d3cf0 -func_ov024_020d3d10 kind:function(arm,size=0x30) addr:0x020d3d10 -func_ov024_020d3d40 kind:function(arm,size=0x50) addr:0x020d3d40 -func_ov024_020d3d90 kind:function(arm,size=0xc) addr:0x020d3d90 -func_ov024_020d3d9c kind:function(arm,size=0x1c) addr:0x020d3d9c -func_ov024_020d3db8 kind:function(arm,size=0x2c) addr:0x020d3db8 -func_ov024_020d3de4 kind:function(arm,size=0x44) addr:0x020d3de4 -func_ov024_020d24d4 kind:function(arm,size=0x44) addr:0x020d3e28 -func_ov024_020d2518 kind:function(arm,size=0x4) addr:0x020d3e6c -func_ov024_020d3e70 kind:function(arm,size=0x4) addr:0x020d3e70 -func_ov024_020d3e74 kind:function(arm,size=0x18) addr:0x020d3e74 -func_ov024_020d2538 kind:function(arm,size=0x2c) addr:0x020d3e8c -func_ov024_020d3eb8 kind:function(arm,size=0x28) addr:0x020d3eb8 -func_ov024_020d3ee0 kind:function(arm,size=0x124) addr:0x020d3ee0 -func_ov024_020d4004 kind:function(arm,size=0xcc) addr:0x020d4004 -func_ov024_020d40d0 kind:function(arm,size=0x50) addr:0x020d40d0 -func_ov024_020d4120 kind:function(arm,size=0x40) addr:0x020d4120 -func_ov024_020d4160 kind:function(arm,size=0x1a4) addr:0x020d4160 -func_ov024_020d4304 kind:function(arm,size=0x68) addr:0x020d4304 -func_ov024_020d436c kind:function(arm,size=0xf0) addr:0x020d436c -func_ov024_020d445c kind:function(arm,size=0x38) addr:0x020d445c -func_ov024_020d4494 kind:function(arm,size=0x8c) addr:0x020d4494 -func_ov024_020d4520 kind:function(arm,size=0x88) addr:0x020d4520 -func_ov024_020d45a8 kind:function(arm,size=0xa8) addr:0x020d45a8 -func_ov024_020d4650 kind:function(arm,size=0x364) addr:0x020d4650 -func_ov024_020d49b4 kind:function(arm,size=0x4) addr:0x020d49b4 -func_ov024_020d49b8 kind:function(arm,size=0x4) addr:0x020d49b8 -func_ov024_020d49bc kind:function(arm,size=0x24) addr:0x020d49bc -func_ov024_020d49e0 kind:function(arm,size=0x74) addr:0x020d49e0 -func_ov024_020d4a54 kind:function(arm,size=0x40) addr:0x020d4a54 -func_ov024_020d4a94 kind:function(arm,size=0x18) addr:0x020d4a94 -func_ov024_020d4aac kind:function(arm,size=0xa0) addr:0x020d4aac +_ZN27UnkStruct_ov024_020d86a0_00C1EP24UnkStruct_ov024_020d86a0 kind:function(arm,size=0x28) addr:0x020d2fe8 +_ZN27UnkStruct_ov024_020d86a0_00D1Ev kind:function(arm,size=0x14) addr:0x020d3010 +_ZN27UnkStruct_ov024_020d86a0_00D0Ev kind:function(arm,size=0x1c) addr:0x020d3024 +_ZN27UnkStruct_ov024_020d86a0_008vfunc_0CEv kind:function(arm,size=0x10) addr:0x020d3040 +_ZN20PlayerActor_A0_38_048vfunc_00Ev kind:function(arm,size=0x80) addr:0x020d3050 +_ZN20PlayerActor_A0_38_188vfunc_00Ev kind:function(arm,size=0x200) addr:0x020d30d0 +_ZN17PlayerActor_A0_38C1Ev kind:function(thumb,size=0x44) addr:0x020d32d0 +_ZN17PlayerActor_A0_38D1Ev kind:function(thumb,size=0x16) addr:0x020d3314 +_ZN17PlayerActor_A0_3819func_ov024_020d19d8Ev kind:function(thumb,size=0x20) addr:0x020d332c +_Z20SetCreditsEndingTypes kind:function(arm,size=0x10) addr:0x020d334c +_Z20GetCreditsEndingTypev kind:function(arm,size=0x10) addr:0x020d335c +_ZN17UnkDataStruct4_1419func_ov024_020d1a18Ei kind:function(arm,size=0x10) addr:0x020d336c +_ZN17UnkDataStruct4_1419func_ov024_020d1a28Eh kind:function(arm,size=0x70) addr:0x020d337c +_ZN17UnkDataStruct4_1419func_ov024_020d1a98Eii kind:function(arm,size=0x20) addr:0x020d33ec +_ZN17UnkDataStruct4_1419func_ov024_020d1ab8EiPiS0_ kind:function(arm,size=0xe0) addr:0x020d340c +_ZN17UnkDataStruct4_1419func_ov024_020d1b98EPii kind:function(arm,size=0x48) addr:0x020d34ec +_ZN17UnkDataStruct4_1419func_ov024_020d1be0Ei kind:function(arm,size=0x5c) addr:0x020d3534 +_ZNK17UnkDataStruct4_1419func_ov024_020d1c3cEPii kind:function(arm,size=0x48) addr:0x020d3590 +_ZN17UnkDataStruct4_1419func_ov024_020d1c84Ev kind:function(arm,size=0x44) addr:0x020d35d8 +_ZNK17UnkDataStruct4_1419func_ov024_020d1cc8Eii kind:function(arm,size=0x2c) addr:0x020d361c +_ZNK17UnkDataStruct4_1419func_ov024_020d1cf4Ei kind:function(arm,size=0x3c) addr:0x020d3648 +_ZNK17UnkDataStruct4_1419func_ov024_020d1d30Eit kind:function(arm,size=0x48) addr:0x020d3684 +_ZNK17UnkDataStruct4_1419func_ov024_020d1d78Ev kind:function(arm,size=0x28) addr:0x020d36cc +_ZNK17UnkDataStruct4_1419func_ov024_020d1da0Ev kind:function(arm,size=0x28) addr:0x020d36f4 +_ZNK17UnkDataStruct4_1419func_ov024_020d1dc8Eii kind:function(arm,size=0x2c) addr:0x020d371c +_ZNK17UnkDataStruct4_1419func_ov024_020d1df4Ei kind:function(arm,size=0x2c) addr:0x020d3748 +_ZN17UnkDataStruct4_1419func_ov024_020d1e20EPsi kind:function(arm,size=0x8c) addr:0x020d3774 +_ZN17UnkDataStruct4_1419func_ov024_020d1eacEi kind:function(arm,size=0xb4) addr:0x020d3800 +_ZN17UnkDataStruct4_1419func_ov024_020d1f60Ej kind:function(arm,size=0x10) addr:0x020d38b4 +_ZNK17UnkDataStruct4_1419func_ov024_020d1f70Ev kind:function(arm,size=0x34) addr:0x020d38c4 +_ZNK17UnkDataStruct4_1419func_ov024_020d1fa4Ei kind:function(arm,size=0x44) addr:0x020d38f8 +_ZN17UnkDataStruct4_1419func_ov024_020d1fe8Ev kind:function(arm,size=0x48) addr:0x020d393c +_ZN17UnkDataStruct4_1419func_ov024_020d2030Eii kind:function(arm,size=0x5c) addr:0x020d3984 +_ZNK17UnkDataStruct4_1419func_ov024_020d208cEi kind:function(arm,size=0xc) addr:0x020d39e0 +_ZN17UnkDataStruct4_1419func_ov024_020d2098Eii kind:function(arm,size=0x28) addr:0x020d39ec +_ZNK17UnkDataStruct4_1419func_ov024_020d20c0Eii kind:function(arm,size=0xe0) addr:0x020d3a14 +_ZNK17UnkDataStruct4_1416IsStationDungeonEv kind:function(arm,size=0x38) addr:0x020d3af4 +_ZNK17UnkDataStruct4_1419func_ov024_020d21d8Ev kind:function(arm,size=0x64) addr:0x020d3b2c +_ZNK17UnkDataStruct4_1419func_ov024_020d223cEv kind:function(arm,size=0x34) addr:0x020d3b90 +_ZNK17UnkDataStruct4_1419func_ov024_020d2270Eii kind:function(arm,size=0x3c) addr:0x020d3bc4 +_ZNK17UnkDataStruct4_1419func_ov024_020d22acEi kind:function(arm,size=0x74) addr:0x020d3c00 +_ZNK17UnkDataStruct4_1419func_ov024_020d2320Ei kind:function(arm,size=0x28) addr:0x020d3c74 +_ZNK17UnkDataStruct4_1419func_ov024_020d2348Ei kind:function(arm,size=0x54) addr:0x020d3c9c +_ZNK17UnkDataStruct4_1419func_ov024_020d239cEv kind:function(arm,size=0x20) addr:0x020d3cf0 +_ZNK17UnkDataStruct4_1419func_ov024_020d23bcEv kind:function(arm,size=0x30) addr:0x020d3d10 +_ZNK17UnkDataStruct4_1419func_ov024_020d23ecEv kind:function(arm,size=0x50) addr:0x020d3d40 +_ZNK17UnkDataStruct4_1419func_ov024_020d243cEv kind:function(arm,size=0xc) addr:0x020d3d90 +_ZNK17UnkDataStruct4_1419func_ov024_020d2448Ev kind:function(arm,size=0x1c) addr:0x020d3d9c +_ZNK17UnkDataStruct4_1419func_ov024_020d2464Eb kind:function(arm,size=0x2c) addr:0x020d3db8 +_ZN14UnkDataStruct4C2Ev kind:function(arm,size=0x44) addr:0x020d3de4 +_ZN14UnkDataStruct4C1Ev kind:function(arm,size=0x44) addr:0x020d3e28 +_ZN14UnkDataStruct419func_ov024_020d2518Ev kind:function(arm,size=0x4) addr:0x020d3e6c +_ZN14UnkDataStruct419func_ov024_020d251cEv kind:function(arm,size=0x4) addr:0x020d3e70 +_ZN14UnkDataStruct419func_ov024_020d2520EP22UnkStruct_SceneChange1 kind:function(arm,size=0x18) addr:0x020d3e74 +_ZN14UnkDataStruct419func_ov024_020d2538EjhP19UnkDataStruct4_14_2 kind:function(arm,size=0x2c) addr:0x020d3e8c +_ZN14UnkDataStruct419func_ov024_020d2564Ev kind:function(arm,size=0x28) addr:0x020d3eb8 +_ZN14UnkDataStruct419func_ov024_020d258cEjh kind:function(arm,size=0x124) addr:0x020d3ee0 +_ZN14UnkDataStruct419func_ov024_020d26b0Ei kind:function(arm,size=0xcc) addr:0x020d4004 +_ZN14UnkDataStruct419func_ov024_020d277cEv kind:function(arm,size=0x50) addr:0x020d40d0 +_ZN14UnkDataStruct419func_ov024_020d27ccEv kind:function(arm,size=0x40) addr:0x020d4120 +_ZN14UnkDataStruct419func_ov024_020d280cEv kind:function(arm,size=0x1a4) addr:0x020d4160 +_ZN14UnkDataStruct419func_ov024_020d29b0Eiiiii kind:function(arm,size=0x68) addr:0x020d4304 +_ZN14UnkDataStruct419func_ov024_020d2a18Eiiiii kind:function(arm,size=0xf0) addr:0x020d436c +_ZNK14UnkDataStruct419func_ov024_020d2b08EiiP7VecFx32 kind:function(arm,size=0x38) addr:0x020d445c +_ZN14UnkDataStruct419func_ov024_020d2b40EP5Vec2sPKS_ kind:function(arm,size=0x8c) addr:0x020d4494 +_ZN14UnkDataStruct419func_ov024_020d2bccEP5Vec2sPKS_ kind:function(arm,size=0x88) addr:0x020d4520 +_ZN14UnkDataStruct419func_ov024_020d2c54EPA15_hi kind:function(arm,size=0xa8) addr:0x020d45a8 +_ZN14UnkDataStruct419func_ov024_020d2cfcEPA15_hii kind:function(arm,size=0x364) addr:0x020d4650 +_ZN14UnkDataStruct48vfunc_00Ev kind:function(arm,size=0x4) addr:0x020d49b4 +_ZN14UnkDataStruct48vfunc_04Ev kind:function(arm,size=0x4) addr:0x020d49b8 +_ZNK14UnkDataStruct419func_ov024_020d3068Ev kind:function(arm,size=0x24) addr:0x020d49bc +_ZNK14UnkDataStruct419func_ov024_020d308cEPiS0_s kind:function(arm,size=0x74) addr:0x020d49e0 +_ZN14UnkDataStruct419func_ov024_020d3100Ev kind:function(arm,size=0x40) addr:0x020d4a54 +_ZN14UnkDataStruct419func_ov024_020d3140Ev kind:function(arm,size=0x18) addr:0x020d4a94 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d3158Ej kind:function(arm,size=0xa0) addr:0x020d4aac _ZN21UnkStruct_027e0cf8_08C1Ev kind:function(arm,size=0x88) addr:0x020d4b4c _ZN21UnkStruct_027e0cf8_08D1Ev kind:function(arm,size=0x34) addr:0x020d4bd4 -func_ov024_020d4c08 kind:function(arm,size=0x24) addr:0x020d4c08 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d32b4EPc kind:function(arm,size=0x24) addr:0x020d4c08 _ZN21UnkStruct_027e0cf8_0819func_ov024_020d32d8Ev kind:function(arm,size=0x10) addr:0x020d4c2c _ZN21UnkStruct_027e0cf8_0819func_ov024_020d32e8EP5Vec2s kind:function(arm,size=0x3c) addr:0x020d4c3c -_ZN21UnkStruct_027e0cf8_0819func_ov024_020d3324EPv kind:function(arm,size=0x24) addr:0x020d4c78 -_ZN21UnkStruct_027e0cf8_0819func_ov024_020d3348EPvitii kind:function(arm,size=0x24) addr:0x020d4c9c -func_ov024_020d4cc0 kind:function(arm,size=0xa0) addr:0x020d4cc0 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d3324EP14UnkDataStruct4 kind:function(arm,size=0x24) addr:0x020d4c78 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d3348EP14UnkDataStruct4itii kind:function(arm,size=0x24) addr:0x020d4c9c +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d336cEP14UnkDataStruct4iiii kind:function(arm,size=0xa0) addr:0x020d4cc0 _ZN21UnkStruct_027e0cf8_0819func_ov024_020d340cEv kind:function(arm,size=0x10) addr:0x020d4d60 -_ZN21UnkStruct_027e0cf8_0819func_ov024_020d341cEi kind:function(arm,size=0xc) addr:0x020d4d70 -func_ov024_020d4d7c kind:function(arm,size=0x78) addr:0x020d4d7c -func_ov024_020d4df4 kind:function(arm,size=0x7c) addr:0x020d4df4 -func_ov024_020d4e70 kind:function(arm,size=0x154) addr:0x020d4e70 -func_ov024_020d4fc4 kind:function(thumb,size=0x8c) addr:0x020d4fc4 -func_ov024_020d5050 kind:function(thumb,size=0x68) addr:0x020d5050 -func_ov024_020d50b8 kind:function(thumb,size=0xdc) addr:0x020d50b8 -func_ov024_020d5194 kind:function(thumb,size=0x58) addr:0x020d5194 -func_ov024_020d51ec kind:function(thumb,size=0x68) addr:0x020d51ec -func_ov024_020d5254 kind:function(arm,size=0x14) addr:0x020d5254 -func_ov024_020d5268 kind:function(arm,size=0x5c) addr:0x020d5268 -func_ov024_020d52c4 kind:function(arm,size=0x8c) addr:0x020d52c4 -func_ov024_020d5350 kind:function(arm,size=0x38) addr:0x020d5350 -func_ov024_020d5388 kind:function(arm,size=0x2c) addr:0x020d5388 -func_ov024_020d53b4 kind:function(arm,size=0x2c) addr:0x020d53b4 -func_ov024_020d53e0 kind:function(arm,size=0x50) addr:0x020d53e0 -func_ov024_020d5430 kind:function(arm,size=0x120) addr:0x020d5430 -func_ov024_020d5550 kind:function(arm,size=0x58) addr:0x020d5550 -func_ov024_020d55a8 kind:function(thumb,size=0xc) addr:0x020d55a8 -func_ov024_020d55b4 kind:function(thumb,size=0x94) addr:0x020d55b4 -func_ov024_020d5648 kind:function(thumb,size=0x2c) addr:0x020d5648 -func_ov024_020d5674 kind:function(thumb,size=0x5e) addr:0x020d5674 -func_ov024_020d56d4 kind:function(thumb,size=0x18) addr:0x020d56d4 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d341cEb kind:function(arm,size=0xc) addr:0x020d4d70 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d3428EPK14UnkDataStruct4ih kind:function(arm,size=0x78) addr:0x020d4d7c +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d34a0EPA15_hh kind:function(arm,size=0x7c) addr:0x020d4df4 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d351cEiiPiih kind:function(arm,size=0x154) addr:0x020d4e70 +ZTB_ParseFile kind:function(thumb,size=0x8c) addr:0x020d4fc4 +ZTB_ParseGRDB kind:function(thumb,size=0x68) addr:0x020d5050 +ZTB_ParseGRRL kind:function(thumb,size=0xdc) addr:0x020d50b8 +ZTB_ParseSTAB kind:function(thumb,size=0x58) addr:0x020d5194 +ZTB_ParseLDMK kind:function(thumb,size=0x68) addr:0x020d51ec +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3900EP5Vec2sPiS2_ii kind:function(arm,size=0x14) addr:0x020d5254 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3914EP5Vec2sS1_S1_ kind:function(arm,size=0x5c) addr:0x020d5268 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3970EP5Vec2sPiS2_ii kind:function(arm,size=0x8c) addr:0x020d52c4 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d39fcEP5Vec2sii kind:function(arm,size=0x38) addr:0x020d5350 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3a34EP5Vec2sii kind:function(arm,size=0x2c) addr:0x020d5388 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3a60EP5Vec2sS1_ii kind:function(arm,size=0x2c) addr:0x020d53b4 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3a8cEP5Vec2s kind:function(arm,size=0x50) addr:0x020d53e0 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3adcEP5Vec2siihbh kind:function(arm,size=0x120) addr:0x020d5430 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3bfcEP5Vec2siib kind:function(arm,size=0x58) addr:0x020d5550 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3c54Ei kind:function(thumb,size=0xc) addr:0x020d55a8 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3c60EP27SaveFile_00000_0000_Data_D8 kind:function(thumb,size=0x94) addr:0x020d55b4 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3cf4Ei kind:function(thumb,size=0x2c) addr:0x020d5648 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3d20Ev kind:function(thumb,size=0x5e) addr:0x020d5674 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3d80Ei kind:function(thumb,size=0x18) addr:0x020d56d4 _ZN21UnkStruct_027e0ce0_3419func_ov024_020d3d98Eii kind:function(thumb,size=0x10) addr:0x020d56ec -func_ov024_020d56fc kind:function(thumb,size=0x16) addr:0x020d56fc -func_ov024_020d5714 kind:function(thumb,size=0xa) addr:0x020d5714 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3da8Eii kind:function(thumb,size=0x16) addr:0x020d56fc +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3dc0Eii kind:function(thumb,size=0xa) addr:0x020d5714 _ZN21UnkStruct_027e0ce0_3419func_ov024_020d3dccEv kind:function(thumb,size=0x20) addr:0x020d5720 -func_ov024_020d5740 kind:function(arm,size=0x20) addr:0x020d5740 -func_ov024_020d5760 kind:function(arm,size=0x24) addr:0x020d5760 -func_ov024_020d5784 kind:function(arm,size=0x38) addr:0x020d5784 -func_ov024_020d57bc kind:function(arm,size=0x80) addr:0x020d57bc -_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3ee8Eiti kind:function(arm,size=0x64) addr:0x020d583c -func_ov024_020d58a0 kind:function(arm,size=0x40) addr:0x020d58a0 -func_ov024_020d58e0 kind:function(arm,size=0x3c) addr:0x020d58e0 -func_ov024_020d591c kind:function(arm,size=0x40) addr:0x020d591c -func_ov024_020d595c kind:function(arm,size=0x44) addr:0x020d595c -func_ov024_020d59a0 kind:function(arm,size=0x4c) addr:0x020d59a0 -func_ov024_020d59ec kind:function(arm,size=0x88) addr:0x020d59ec +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3decEi kind:function(arm,size=0x20) addr:0x020d5740 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3e0cEi kind:function(arm,size=0x24) addr:0x020d5760 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3e30Eii kind:function(arm,size=0x38) addr:0x020d5784 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3e68Ei kind:function(arm,size=0x80) addr:0x020d57bc +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3ee8Eitb kind:function(arm,size=0x64) addr:0x020d583c +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3f4cEct kind:function(arm,size=0x40) addr:0x020d58a0 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3f8cEv kind:function(arm,size=0x3c) addr:0x020d58e0 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3fc8Ev kind:function(arm,size=0x40) addr:0x020d591c +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d4008Ei kind:function(arm,size=0x44) addr:0x020d595c +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d404cEv kind:function(arm,size=0x4c) addr:0x020d59a0 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d4098EPiS0_ kind:function(arm,size=0x88) addr:0x020d59ec _ZN16PassengerManager21GetPassengerInfoIndexEj kind:function(arm,size=0x30) addr:0x020d5a74 _ZN16PassengerManager12GetBoardFlagEj kind:function(arm,size=0x24) addr:0x020d5aa4 _ZN16PassengerManager11GetFailFlagEj kind:function(arm,size=0x24) addr:0x020d5ac8 _ZN16PassengerManager6CreateEv kind:function(arm,size=0x24) addr:0x020d5aec -_ZN16PassengerManager19func_ov024_020d41bcEP16UnkStruct_Param1 kind:function(arm,size=0x38) addr:0x020d5b10 +_ZN16PassengerManager19func_ov024_020d41bcEPK16UnkStruct_Param1 kind:function(arm,size=0x38) addr:0x020d5b10 _ZN16PassengerManager19func_ov024_020d41f4EP16UnkStruct_Param1 kind:function(arm,size=0x34) addr:0x020d5b48 _ZN16PassengerManager19func_ov024_020d4228Ev kind:function(arm,size=0x30) addr:0x020d5b7c _ZN16PassengerManager19func_ov024_020d4258Ev kind:function(arm,size=0x30) addr:0x020d5bac @@ -604,13 +604,13 @@ _ZN16PassengerManager19func_ov024_020d4554Ev kind:function(arm,size=0x10) addr:0 _ZN16PassengerManager5ResetEv kind:function(arm,size=0x4c) addr:0x020d5eb8 _ZN16PassengerManager11IsDateUnsetEv kind:function(arm,size=0x14) addr:0x020d5f04 _ZN16PassengerManager7GetDateEv kind:function(arm,size=0x1c) addr:0x020d5f18 -_ZN16PassengerManager14GetRandomIndexEji kind:function(arm,size=0x5c) addr:0x020d5f34 +_ZN16PassengerManager14GetRandomIndexEjj kind:function(arm,size=0x5c) addr:0x020d5f34 _ZN16PassengerManager13SetFailedFlagEv kind:function(arm,size=0x78) addr:0x020d5f90 -func_ov024_020d6008 kind:function(arm,size=0x10) addr:0x020d6008 -func_ov024_020d6018 kind:function(arm,size=0x70) addr:0x020d6018 -func_ov024_020d6088 kind:function(arm,size=0x60) addr:0x020d6088 -_ZN19func_ov024_020d60e8D1Ev kind:function(arm,size=0x14) addr:0x020d60e8 -_ZN19func_ov024_020d60fcD0Ev kind:function(arm,size=0x1c) addr:0x020d60fc +_Z19func_ov024_020d46b4i kind:function(arm,size=0x10) addr:0x020d6008 +_ZN25MapObjectProfile_Derived5C1Eii kind:function(arm,size=0x70) addr:0x020d6018 +_ZN25MapObjectProfile_Derived5C1Ei kind:function(arm,size=0x60) addr:0x020d6088 +_ZN25MapObjectProfile_Derived5D1Ev kind:function(arm,size=0x14) addr:0x020d60e8 +_ZN25MapObjectProfile_Derived5D0Ev kind:function(arm,size=0x1c) addr:0x020d60fc func_ov024_020d6118 kind:function(arm,size=0x74) addr:0x020d6118 func_ov024_020d618c kind:function(arm,size=0x24) addr:0x020d618c func_ov024_020d61b0 kind:function(arm,size=0x6c) addr:0x020d61b0 @@ -640,14 +640,14 @@ _ZN19func_ov024_020d6b64D0Ev kind:function(arm,size=0x1c) addr:0x020d6b64 func_ov024_020d51dc kind:function(arm,size=0x70) addr:0x020d6b80 func_ov024_020d524c kind:function(arm,size=0xb8) addr:0x020d6bf0 func_ov024_020d5304 kind:function(arm,size=0x3c) addr:0x020d6ca8 -func_ov024_020d6ce4 kind:function(arm,size=0x14) addr:0x020d6ce4 +func_ov024_020d5340 kind:function(arm,size=0x14) addr:0x020d6ce4 func_ov024_020d5354 kind:function(arm,size=0x5c) addr:0x020d6cf8 func_ov024_020d6d54 kind:function(arm,size=0x60) addr:0x020d6d54 -func_ov024_020d6db4 kind:function(arm,size=0x24) addr:0x020d6db4 -func_ov024_020d6dd8 kind:function(arm,size=0x24) addr:0x020d6dd8 -func_ov024_020d6dfc kind:function(arm,size=0x24) addr:0x020d6dfc -func_ov024_020d6e20 kind:function(arm,size=0x24) addr:0x020d6e20 -func_ov024_020d6e44 kind:function(arm,size=0x10) addr:0x020d6e44 +func_ov024_020d5410 kind:function(arm,size=0x24) addr:0x020d6db4 +func_ov024_020d5434 kind:function(arm,size=0x24) addr:0x020d6dd8 +func_ov024_020d5458 kind:function(arm,size=0x24) addr:0x020d6dfc +func_ov024_020d547c kind:function(arm,size=0x24) addr:0x020d6e20 +func_ov024_020d54a0 kind:function(arm,size=0x10) addr:0x020d6e44 func_ov024_020d6e54 kind:function(arm,size=0x40) addr:0x020d6e54 func_ov024_020d6e94 kind:function(arm,size=0x4) addr:0x020d6e94 func_ov024_020d6e98 kind:function(arm,size=0x138) addr:0x020d6e98 @@ -689,7 +689,7 @@ _ZN14MiscAdvManager19func_ov024_020d6468Ev kind:function(arm,size=0x2c) addr:0x0 _ZN14MiscAdvManager8GetStampEi kind:function(arm,size=0xc) addr:0x020d7e38 _ZN14MiscAdvManager12GetStampDateEi kind:function(arm,size=0x8) addr:0x020d7e44 _ZN14MiscAdvManager11GetStampPosEi kind:function(arm,size=0xc) addr:0x020d7e4c -_ZN14MiscAdvManager19func_ov024_020d64b4EiiPt kind:function(arm,size=0x7c) addr:0x020d7e58 +_ZN14MiscAdvManager19func_ov024_020d64b4EciPKt kind:function(arm,size=0x7c) addr:0x020d7e58 _ZN14MiscAdvManager19func_ov024_020d6530Ev kind:function(arm,size=0x2c) addr:0x020d7ed4 _ZN14MiscAdvManager15GetNumPostcardsEv kind:function(arm,size=0x10) addr:0x020d7f00 _ZN14MiscAdvManager13GivePriceCardEi kind:function(arm,size=0x30) addr:0x020d7f10 @@ -731,18 +731,18 @@ data_ov024_020d73fa kind:data(any) addr:0x020d8d9e local data_ov024_020d740a kind:data(any) addr:0x020d8dae local data_ov024_020d741e kind:data(any) addr:0x020d8dc2 local data_ov024_020d7432 kind:data(any) addr:0x020d8dd6 local -data_ov024_020d8df8 kind:data(any) addr:0x020d8df8 +data_ov024_020d7454 kind:data(byte[238]) addr:0x020d8df8 local data_ov024_020d7544 kind:data(any) addr:0x020d8ee8 local data_ov024_020d7547 kind:data(any) addr:0x020d8eeb local -data_ov024_020d8ef4 kind:data(any) addr:0x020d8ef4 -data_ov024_020d8ef9 kind:data(any) addr:0x020d8ef9 -data_ov024_020d8f04 kind:data(any) addr:0x020d8f04 -data_ov024_020d8f10 kind:data(any) addr:0x020d8f10 -data_ov024_020d8f14 kind:data(any) addr:0x020d8f14 -data_ov024_020d8f1c kind:data(any) addr:0x020d8f1c -data_ov024_020d8f2c kind:data(any) addr:0x020d8f2c +data_ov024_020d7550 kind:data(any) addr:0x020d8ef4 local +data_ov024_020d7555 kind:data(any) addr:0x020d8ef9 local +data_ov024_020d7560 kind:data(any) addr:0x020d8f04 local +data_ov024_020d756c kind:data(any) addr:0x020d8f10 +data_ov024_020d7570 kind:data(any) addr:0x020d8f14 local +data_ov024_020d7578 kind:data(any) addr:0x020d8f1c local +data_ov024_020d7588 kind:data(any) addr:0x020d8f2c local data_ov024_020d8f3c kind:data(any) addr:0x020d8f3c ambiguous -sPassengerInfos kind:data(any) addr:0x020d8f48 +sPassengerInfos kind:data(any) addr:0x020d8f48 local data_ov024_020d8fc8 kind:data(any) addr:0x020d8fc8 data_ov024_020d8fd0 kind:data(any) addr:0x020d8fd0 data_ov024_020d8fe0 kind:data(any) addr:0x020d8fe0 @@ -750,7 +750,7 @@ data_ov024_020d8ff0 kind:data(any) addr:0x020d8ff0 data_ov024_020d9000 kind:data(any) addr:0x020d9000 data_ov024_020d9010 kind:data(any) addr:0x020d9010 data_ov024_020d9020 kind:data(any) addr:0x020d9020 -data_ov024_020d9028 kind:data(any) addr:0x020d9028 +data_ov024_020d7684 kind:data(any) addr:0x020d9028 data_ov024_020d9064 kind:data(any) addr:0x020d9064 data_ov024_020d9066 kind:data(any) addr:0x020d9066 data_ov024_020d90f0 kind:data(any) addr:0x020d90f0 @@ -761,16 +761,16 @@ data_ov024_020d9260 kind:data(any) addr:0x020d9260 data_ov024_020d9264 kind:data(any) addr:0x020d9264 ambiguous data_ov024_020d9266 kind:data(any) addr:0x020d9266 ambiguous __sinit_ov024_020d928c kind:function(arm,size=0x38) addr:0x020d928c -__sinit_ov024_020d92c4 kind:function(arm,size=0x120) addr:0x020d92c4 +__sinit_UnkStruct_027e0cf8_00_0C_024.cpp kind:function(arm,size=0x120) addr:0x020d92c4 local __sinit_AdventureModeManager_1B8_Base_024.cpp kind:function(arm,size=0x2c) addr:0x020d93e4 local -__sinit_ov024_020d9410 kind:function(arm,size=0x48) addr:0x020d9410 +__sinit_PlayerActor_A0_38_024.cpp kind:function(arm,size=0x48) addr:0x020d9410 __sinit_ov024_020d9458 kind:function(arm,size=0x18) addr:0x020d9458 __sinit_ov024_020d9470 kind:function(arm,size=0x18) addr:0x020d9470 __sinit_ActorUnkOBPC.cpp kind:function(arm,size=0x50) addr:0x020d9488 .p__sinit_ov024_020d928c kind:data(word) addr:0x020d94d8 -.p__sinit_ov024_020d92c4 kind:data(word) addr:0x020d94dc +.p__sinit_UnkStruct_027e0cf8_00_0C_024.cpp kind:data(word) addr:0x020d94dc .p__sinit_AdventureModeManager_1B8_Base_024.cpp kind:data(word) addr:0x020d94e0 local -.p__sinit_ov024_020d9410 kind:data(word) addr:0x020d94e4 +.p__sinit_PlayerActor_A0_38_024.cpp kind:data(word) addr:0x020d94e4 .p__sinit_ov024_020d9458 kind:data(word) addr:0x020d94e8 .p__sinit_ov024_020d9470 kind:data(word) addr:0x020d94ec .p__sinit_ActorUnkOBPC.cpp kind:data(word) addr:0x020d94f0 @@ -812,48 +812,50 @@ _ZTV28UnkStruct_ov024_020d8694_188 kind:data(any) addr:0x020d99b4 _ZTV28UnkTitleCardSystem1_Derived1 kind:data(any) addr:0x020d99dc _ZTV18UnkStruct_020d8698 kind:data(any) addr:0x020d9a04 @5034 kind:data(byte[11]) addr:0x020d9a28 local -data_ov024_020d9a34 kind:data(any) addr:0x020d9a34 -data_ov024_020d9a38 kind:data(any) addr:0x020d9a38 -data_ov024_020d9a3e kind:data(any) addr:0x020d9a3e -data_ov024_020d9a42 kind:data(any) addr:0x020d9a42 -data_ov024_020d9a43 kind:data(any) addr:0x020d9a43 +data_ov024_020d8094 kind:data(byte[2]) addr:0x020d9a34 local +data_ov024_020d8098 kind:data(any) addr:0x020d9a38 local data_ov024_020d8200 kind:data(any) addr:0x020d9ba0 local -_ZTV19data_ov024_020d9ba8 kind:data(any) addr:0x020d9ba8 -data_ov024_020d9bc4 kind:data(any) addr:0x020d9bc4 -data_ov024_020d9be4 kind:data(any) addr:0x020d9be4 -data_ov024_020d9bf0 kind:data(any) addr:0x020d9bf0 -data_ov024_020d9bf4 kind:data(any) addr:0x020d9bf4 -data_ov024_020d9c00 kind:data(any) addr:0x020d9c00 -data_ov024_020d9c08 kind:data(any) addr:0x020d9c08 -data_ov024_020d9c10 kind:data(any) addr:0x020d9c10 -data_ov024_020d9c28 kind:data(any) addr:0x020d9c28 -data_ov024_020d9c3c kind:data(any) addr:0x020d9c3c -data_ov024_020d9c40 kind:data(any) addr:0x020d9c40 -data_ov024_020d9c44 kind:data(any) addr:0x020d9c44 -data_ov024_020d9c48 kind:data(any) addr:0x020d9c48 -data_ov024_020d9c50 kind:data(any) addr:0x020d9c50 -data_ov024_020d9c58 kind:data(any) addr:0x020d9c58 -data_ov024_020d9c60 kind:data(any) addr:0x020d9c60 -data_ov024_020d9c68 kind:data(any) addr:0x020d9c68 -data_ov024_020d9c70 kind:data(any) addr:0x020d9c70 -data_ov024_020d9c78 kind:data(any) addr:0x020d9c78 -data_ov024_020d9c80 kind:data(any) addr:0x020d9c80 -data_ov024_020d9c88 kind:data(any) addr:0x020d9c88 -data_ov024_020d9c94 kind:data(any) addr:0x020d9c94 -data_ov024_020d9ca0 kind:data(any) addr:0x020d9ca0 -data_ov024_020d9cac kind:data(any) addr:0x020d9cac -data_ov024_020d9cb8 kind:data(any) addr:0x020d9cb8 -data_ov024_020d9cc4 kind:data(any) addr:0x020d9cc4 -data_ov024_020d9cd0 kind:data(any) addr:0x020d9cd0 -data_ov024_020d9cdc kind:data(any) addr:0x020d9cdc -data_ov024_020d9cf0 kind:data(any) addr:0x020d9cf0 -data_ov024_020d9cf8 kind:data(any) addr:0x020d9cf8 -data_ov024_020d9d14 kind:data(any) addr:0x020d9d14 -data_ov024_020d9d44 kind:data(any) addr:0x020d9d44 -data_ov024_020d9d4c kind:data(any) addr:0x020d9d4c -data_ov024_020d9d54 kind:data(any) addr:0x020d9d54 -data_ov024_020d9d58 kind:data(any) addr:0x020d9d58 -data_ov024_020d9d64 kind:data(any) addr:0x020d9d64 +_ZTV27UnkStruct_ov024_020d86a0_00 kind:data(any) addr:0x020d9ba8 +data_ov024_020d8224 kind:data(byte[4]) addr:0x020d9bc4 +data_ov024_020d8228 kind:data(byte[4]) addr:0x020d9bc8 +data_ov024_020d822c kind:data(byte[4]) addr:0x020d9bcc +data_ov024_020d8230 kind:data(byte[4]) addr:0x020d9bd0 +data_ov024_020d8234 kind:data(byte[4]) addr:0x020d9bd4 +data_ov024_020d8238 kind:data(byte[4]) addr:0x020d9bd8 +_ZTV20PlayerActor_A0_38_18 kind:data(any) addr:0x020d9bdc +_ZTV20PlayerActor_A0_38_04 kind:data(any) addr:0x020d9be8 +sCreditsEndingType kind:data(byte[2]) addr:0x020d9bf4 local +_ZTV14UnkDataStruct4 kind:data(any) addr:0x020d9bf8 +@2128 kind:data(byte[6]) addr:0x020d9c08 local +@2129 kind:data(byte[21]) addr:0x020d9c10 local +@2130 kind:data(byte[19]) addr:0x020d9c28 local +@1520 kind:data(byte[4]) addr:0x020d9c3c local +@1525 kind:data(byte[4]) addr:0x020d9c40 local +@1526 kind:data(byte[4]) addr:0x020d9c44 local +@1523 kind:data(byte[5]) addr:0x020d9c48 local +@1521 kind:data(byte[5]) addr:0x020d9c50 local +@1522 kind:data(byte[5]) addr:0x020d9c58 local +@1517 kind:data(byte[6]) addr:0x020d9c60 local +@1524 kind:data(byte[6]) addr:0x020d9c68 local +@1511 kind:data(byte[7]) addr:0x020d9c70 local +@1508 kind:data(byte[7]) addr:0x020d9c78 local +@1510 kind:data(byte[8]) addr:0x020d9c80 local +@1515 kind:data(byte[10]) addr:0x020d9c88 local +@1509 kind:data(byte[10]) addr:0x020d9c94 local +@1512 kind:data(byte[10]) addr:0x020d9ca0 local +@1513 kind:data(byte[10]) addr:0x020d9cac local +@1514 kind:data(byte[10]) addr:0x020d9cb8 local +@1516 kind:data(byte[11]) addr:0x020d9cc4 local +@1518 kind:data(byte[11]) addr:0x020d9cd0 local +@1519 kind:data(byte[11]) addr:0x020d9cdc local +_ZTV25MapObjectProfile_Derived5 kind:data(any) addr:0x020d9ce8 +data_ov024_020d8358 kind:data(any) addr:0x020d9cf8 local +data_ov024_020d8374 kind:data(any) addr:0x020d9d14 local +@1553 kind:data(byte[6]) addr:0x020d9d44 local +@1554 kind:data(byte[6]) addr:0x020d9d4c local +@1555 kind:data(byte[4]) addr:0x020d9d54 local +@1562 kind:data(byte[10]) addr:0x020d9d58 local +@1563 kind:data(byte) addr:0x020d9d64 local data_ov024_020d9d68 kind:data(any) addr:0x020d9d68 data_ov024_020d9d74 kind:data(any) addr:0x020d9d74 data_ov024_020d9d7c kind:data(any) addr:0x020d9d7c diff --git a/config/jp/arm9/overlays/ov026/symbols.txt b/config/jp/arm9/overlays/ov026/symbols.txt index a77db2e80..0d5bd822a 100644 --- a/config/jp/arm9/overlays/ov026/symbols.txt +++ b/config/jp/arm9/overlays/ov026/symbols.txt @@ -93,11 +93,11 @@ func_ov026_020ddd4c kind:function(arm,size=0x6c) addr:0x020ddd4c func_ov026_020dddb8 kind:function(arm,size=0x34) addr:0x020dddb8 func_ov026_020dddec kind:function(arm,size=0x28) addr:0x020dddec func_ov026_020dde14 kind:function(arm,size=0x4) addr:0x020dde14 -func_ov026_020dde18 kind:function(arm,size=0x2e0) addr:0x020dde18 +_ZN21UnkStruct_027e0ce0_38C1Ev kind:function(arm,size=0x2e0) addr:0x020dde18 func_ov026_020de0f8 kind:function(arm,size=0x14) addr:0x020de0f8 func_ov026_020de10c kind:function(arm,size=0x14) addr:0x020de10c -func_ov026_020de120 kind:function(arm,size=0xdc) addr:0x020de120 -_ZN19func_ov026_020de1fcD0Ev kind:function(arm,size=0xe4) addr:0x020de1fc +_ZN21UnkStruct_027e0ce0_38D1Ev kind:function(arm,size=0xdc) addr:0x020de120 +_ZN21UnkStruct_027e0ce0_38D0Ev kind:function(arm,size=0xe4) addr:0x020de1fc func_ov026_020de2e0 kind:function(arm,size=0x28) addr:0x020de2e0 func_ov026_020de308 kind:function(arm,size=0x98) addr:0x020de308 func_ov026_020de3a0 kind:function(arm,size=0x64) addr:0x020de3a0 @@ -680,7 +680,7 @@ func_ov026_020f65f8 kind:function(arm,size=0x10) addr:0x020f65f8 func_ov026_020f6608 kind:function(arm,size=0x8) addr:0x020f6608 _ZN19func_ov026_020f6610D1Ev kind:function(arm,size=0x70) addr:0x020f6610 _ZN19func_ov026_020f6680D0Ev kind:function(arm,size=0x78) addr:0x020f6680 -func_ov026_020f66f8 kind:function(arm,size=0x68) addr:0x020f66f8 +_ZN24UnkStruct_027e0ce0_38_10C1Ev kind:function(arm,size=0x68) addr:0x020f66f8 func_ov026_020f6760 kind:function(arm,size=0x14) addr:0x020f6760 _ZN24UnkStruct_ov026_0213f57819func_ov026_020f4844Ev kind:function(arm,size=0x2c) addr:0x020f6774 _ZN24UnkStruct_027e0ce0_38_1019func_ov026_020f4870Ev kind:function(arm,size=0x298) addr:0x020f67a0 diff --git a/config/jp/arm9/overlays/ov031/symbols.txt b/config/jp/arm9/overlays/ov031/symbols.txt index c83a788a7..ba3064625 100644 --- a/config/jp/arm9/overlays/ov031/symbols.txt +++ b/config/jp/arm9/overlays/ov031/symbols.txt @@ -139,7 +139,7 @@ func_ov031_020dc9c8 kind:function(arm,size=0xd4) addr:0x020dc9c8 func_ov031_020dca9c kind:function(arm,size=0x24) addr:0x020dca9c func_ov031_020dcac0 kind:function(arm,size=0x40) addr:0x020dcac0 func_ov031_020dcb00 kind:function(arm,size=0x30) addr:0x020dcb00 -func_ov031_020dcb30 kind:function(arm,size=0x24) addr:0x020dcb30 +_ZN18PlayerActorBase_74C1Ev kind:function(arm,size=0x24) addr:0x020dcb30 func_ov031_020dcb54 kind:function(arm,size=0xfc) addr:0x020dcb54 func_ov031_020dcc50 kind:function(arm,size=0x2c) addr:0x020dcc50 func_ov031_020dcc7c kind:function(arm,size=0x5c) addr:0x020dcc7c diff --git a/config/jp/arm9/overlays/ov088/symbols.txt b/config/jp/arm9/overlays/ov088/symbols.txt index a566fd53a..5403fcaad 100644 --- a/config/jp/arm9/overlays/ov088/symbols.txt +++ b/config/jp/arm9/overlays/ov088/symbols.txt @@ -322,7 +322,7 @@ func_ov088_02171a78 kind:function(arm,size=0x1c) addr:0x02171a78 func_ov088_02171a94 kind:function(arm,size=0x24) addr:0x02171a94 func_ov088_02171ab8 kind:function(arm,size=0x1c) addr:0x02171ab8 func_ov088_02171ad4 kind:function(arm,size=0x2c) addr:0x02171ad4 -func_ov088_02171b00 kind:function(thumb,size=0x298) addr:0x02171b00 +_ZN21UnkStruct_027e0ce0_3CC1Ev kind:function(thumb,size=0x298) addr:0x02171b00 func_ov088_02171d98 kind:function(thumb,size=0x8c) addr:0x02171d98 func_ov088_02171e24 kind:function(thumb,size=0x2c) addr:0x02171e24 func_ov088_02171e50 kind:function(arm,size=0xb0) addr:0x02171e50 diff --git a/config/jp/arm9/overlays/ov101/symbols.txt b/config/jp/arm9/overlays/ov101/symbols.txt index 64456240c..467aa5381 100644 --- a/config/jp/arm9/overlays/ov101/symbols.txt +++ b/config/jp/arm9/overlays/ov101/symbols.txt @@ -9,7 +9,7 @@ func_ov101_02184948 kind:function(thumb,size=0x20) addr:0x02184948 func_ov101_02184968 kind:function(thumb,size=0xc) addr:0x02184968 func_ov101_02184974 kind:function(thumb,size=0xc) addr:0x02184974 func_ov101_02184980 kind:function(thumb,size=0xc) addr:0x02184980 -func_ov101_0218498c kind:function(thumb,size=0x154) addr:0x0218498c +_ZN21UnkStruct_027e0ce0_40C1Ev kind:function(thumb,size=0x154) addr:0x0218498c func_ov101_02184ae0 kind:function(thumb,size=0x54) addr:0x02184ae0 func_ov101_02184b34 kind:function(thumb,size=0x50) addr:0x02184b34 func_ov101_02184b84 kind:function(thumb,size=0x1e) addr:0x02184b84 diff --git a/config/jp/arm9/symbols.txt b/config/jp/arm9/symbols.txt index ae87845e2..0b167a2dd 100644 --- a/config/jp/arm9/symbols.txt +++ b/config/jp/arm9/symbols.txt @@ -788,8 +788,8 @@ _ZN14UnkFileSystem28vfunc_08Ei kind:function(thumb,size=0x2a) addr:0x020156bc _ZN14UnkFileSystem28vfunc_0CEv kind:function(thumb,size=0x6) addr:0x020156e8 _ZN14UnkFileSystem28vfunc_10Ei kind:function(thumb,size=0x30) addr:0x020156f0 func_02015788 kind:function(arm,size=0x38) addr:0x02015720 -func_02015758 kind:function(arm,size=0x30) addr:0x02015758 -func_02015788_jp kind:function(arm,size=0x30) addr:0x02015788 +func_020157c0 kind:function(arm,size=0x30) addr:0x02015758 +func_020157f0 kind:function(arm,size=0x30) addr:0x02015788 func_020157b8 kind:function(arm,size=0xc8) addr:0x020157b8 func_02015880 kind:function(arm,size=0xb4) addr:0x02015880 func_02015934 kind:function(arm,size=0x7c) addr:0x02015934 @@ -990,7 +990,7 @@ func_020198cc kind:function(arm,size=0x140) addr:0x020198cc func_02019a74 kind:function(arm,size=0xc8) addr:0x02019a0c func_02019b3c kind:function(arm,size=0x110) addr:0x02019ad4 func_02019c4c kind:function(arm,size=0xa0) addr:0x02019be4 -func_02019c84 kind:function(arm,size=0x28) addr:0x02019c84 +func_02019cec kind:function(arm,size=0x28) addr:0x02019c84 func_02019cac kind:function(arm,size=0x9c) addr:0x02019cac func_02019d48 kind:function(arm,size=0xf4) addr:0x02019d48 func_02019e3c kind:function(arm,size=0x130) addr:0x02019e3c @@ -1498,7 +1498,7 @@ OS_GetLockID kind:function(arm,size=0x58) addr:0x02027c68 func_02027cc0 kind:function(arm,size=0x30) addr:0x02027cc0 sscanf kind:function(arm,size=0x28) addr:0x02027cf0 vsscanf kind:function(arm,size=0x18) addr:0x02027d18 -func_02027d30 kind:function(arm,size=0x28) addr:0x02027d30 +func_02026800 kind:function(arm,size=0x28) addr:0x02027d30 func_02027d58 kind:function(arm,size=0xc) addr:0x02027d58 OS_func_0035 kind:function(arm,size=0x18) addr:0x02027d64 OS_func_0036 kind:function(arm,size=0x78) addr:0x02027d7c @@ -1958,7 +1958,7 @@ CARD_func_0052 kind:function(arm,size=0x14) addr:0x02033b10 CARD_func_0053 kind:function(arm,size=0x8c) addr:0x02033b24 CARD_func_0054 kind:function(arm,size=0x14) addr:0x02033bb0 CARD_func_0055 kind:function(arm,size=0xf0) addr:0x02033bc4 -func_02033cb4 kind:function(arm,size=0x44) addr:0x02033cb4 +func_02032784 kind:function(arm,size=0x44) addr:0x02033cb4 func_02033cf8 kind:function(arm,size=0x44) addr:0x02033cf8 func_02033d3c kind:function(arm,size=0x40) addr:0x02033d3c func_02033d7c kind:function(arm,size=0x40) addr:0x02033d7c diff --git a/include/MainGame/AdventureMode.hpp b/include/MainGame/AdventureMode.hpp index 51bf512c7..13aef4b2d 100644 --- a/include/MainGame/AdventureMode.hpp +++ b/include/MainGame/AdventureMode.hpp @@ -834,7 +834,7 @@ class AdventureModeManager_1B8_Base { return 0; } - AdventureModeManager_1B8_Base(u8 bgType, bool param2, const AdventureModeManager_1B8_Base_1C *param3, bool param4, + AdventureModeManager_1B8_Base(u8 bgType, bool param2, const AdventureModeManager_1B8_Base_1C ¶m3, bool param4, bool param5); ~AdventureModeManager_1B8_Base(); @@ -979,7 +979,7 @@ class AdventureModeManager : public TitleScreenManager_Base { void func_ov024_020c6770(SceneIndex sceneIndex, u8 param2, unk16 param3, unk16 param4); bool func_ov024_020c681c(); void func_ov024_020c6840(SceneIndex sceneIndex); - void func_ov024_020c68d4(); + void func_ov024_020c68d4(Vec2s *param1, unk32 param2); bool func_ov024_020c68ec(unk32 param1, unk32 param2); void func_ov024_020c6930(); bool func_ov024_020c6940(unk32 param1, unk32 param2); @@ -1010,3 +1010,6 @@ class AdventureModeManager : public TitleScreenManager_Base { static void func_ov001_020c0874(); static void func_ov001_020c0894(); }; + +extern void SetCreditsEndingType(u16 value); +extern u16 GetCreditsEndingType(); diff --git a/include/MainGame/MiscAdvManager.hpp b/include/MainGame/MiscAdvManager.hpp index ddd8c6bf8..404e8a45a 100644 --- a/include/MainGame/MiscAdvManager.hpp +++ b/include/MainGame/MiscAdvManager.hpp @@ -64,7 +64,10 @@ class MiscAdvManager : public AutoInstance { /* 00 */ u16 mStampDates[StampType_Max]; /* 28 */ u16 mUnk_28; /* 2A */ u16 mPostDate; - /* 2C */ Vec2b mStampPositions[StampType_Max]; + /* 2C */ union { + Vec2b mStampPositions[StampType_Max]; + u16 mStampPos[StampType_Max]; + }; /* 54 */ s8 mObtainedLetters[LetterType_Max]; /* 68 */ s8 mObtainedStamps[StampType_Max]; /* 7C */ u8 mLastRandomNum; @@ -97,7 +100,7 @@ class MiscAdvManager : public AutoInstance { unk32 GetStamp(unk32 index); u16 *GetStampDate(unk32 index); Vec2b *GetStampPos(unk32 index); - void func_ov024_020d64b4(unk32 param1, unk32 param2, u16 *param3); + void func_ov024_020d64b4(s8 param1, unk32 param2, const u16 *param3); void func_ov024_020d6530(); unk32 GetNumPostcards(); void GivePriceCard(unk32 amount); diff --git a/include/MainGame/PassengerManager.hpp b/include/MainGame/PassengerManager.hpp index d1fd75e38..33531c8b6 100644 --- a/include/MainGame/PassengerManager.hpp +++ b/include/MainGame/PassengerManager.hpp @@ -15,13 +15,14 @@ enum HappinessLevel_ { }; struct UnkStruct_Param1 { - ActorId actorId; - s16 mUnk_04; - SceneIndex_Half sceneIndex; - u8 roomIndex; - unk32 mUnk_0C; - unk32 happiness; - u16 mUnk_14; + /* 00 */ ActorId actorId; + /* 04 */ s16 mUnk_04; + /* 06 */ SceneIndex_Half sceneIndex; + /* 08 */ u8 roomIndex; + /* 0C */ unk32 mUnk_0C; + /* 10 */ unk32 happiness; + /* 14 */ u16 mUnk_14; + /* 18 */ }; class Passenger { @@ -58,7 +59,7 @@ class PassengerManager : public AutoInstance { static bool func_ov001_020bf870(); // overlay 24 - void func_ov024_020d41bc(UnkStruct_Param1 *pActorId); + void func_ov024_020d41bc(const UnkStruct_Param1 *pActorId); void func_ov024_020d41f4(UnkStruct_Param1 *param1); void func_ov024_020d4228(); void func_ov024_020d4258(); @@ -79,7 +80,7 @@ class PassengerManager : public AutoInstance { void Reset(); bool IsDateUnset(); s16 GetDate(); - u32 GetRandomIndex(u32 arg1, s32 arg2); + u32 GetRandomIndex(u32 param1, u32 seed); void SetFailedFlag(); static u32 GetPassengerInfoIndex(ActorId actorId); diff --git a/include/Player/Player.hpp b/include/Player/Player.hpp index eee135c3c..9fdd48ba9 100644 --- a/include/Player/Player.hpp +++ b/include/Player/Player.hpp @@ -1,10 +1,38 @@ #pragma once +#include "LinkList.hpp" +#include "Unknown/Common.hpp" +#include "Unknown/UnkStruct_ov000_0208f820.hpp" #include "math.hpp" #include "types.h" -// incomplete -class PlayerActor { +class PlayerActorBase_5C { +public: + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0C */ unk32 mUnk_0C; + /* 10 */ void *mUnk_10; + /* 14 */ +}; + +class PlayerActorBase_70 { +public: + /* 000 */ STRUCT_PAD(0x00, 0x160); + /* 160 */ + + PlayerActorBase_70(); +}; + +class PlayerActorBase_74 { +public: + /* 00 */ STRUCT_PAD(0x00, 0x34); + /* 34 */ + + PlayerActorBase_74(); +}; + +class PlayerActorBase { public: /* 00 */ VecFx32 mPos; /* 0C */ VecFx32 mPrevPos; @@ -13,6 +41,164 @@ class PlayerActor { /* 30 */ u16 mAngle; /* 32 */ u8 mInvincibilityTimer; /* 33 */ u8 mInvincibilityIconTimer; // the blinking icon on top-screen + /* 34 */ unk32 mUnk_34; + /* 38 */ UnkStruct_PlayerGet_64 mUnk_38; + /* 44 */ unk32 mUnk_44; + /* 48 */ unk32 mUnk_48; + /* 4C */ unk32 mUnk_4C; + /* 50 */ unk32 mUnk_50; + /* 54 */ unk32 mUnk_54; + /* 58 */ unk32 mUnk_58; + /* 5C */ PlayerActorBase_5C mUnk_5C; + /* 70 */ PlayerActorBase_70 *mUnk_70; + /* 74 */ PlayerActorBase_74 *mUnk_74; + /* 78 */ STRUCT_PAD(0x78, 0x84); + /* 84 */ UnkStruct_ov019_020d24c8_28_258 mUnk_84; + /* 9C */ + + PlayerActorBase(); +}; + +class PlayerActor_9C { +public: + /* 000 (vtable) */ + /* 004 */ STRUCT_PAD(0x04, 0x154); + /* 154 */ + + PlayerActor_9C(); + + // data_ov000_020b2a8c + /* 00 */ virtual ~PlayerActor_9C(); +}; + +class PlayerActor_A0_38; + +class PlayerActor_A0_38_04_Base : public LinkList { +public: + /* 00 (vtable) */ + /* 04 (base) */ + /* 0C */ unk32 mUnk_0C; + /* 10 */ PlayerActor_A0_38 *mUnk_10; + /* 14 */ + + PlayerActor_A0_38_04_Base(PlayerActor_A0_38 *param1) { + this->mUnk_0C = 0; + this->mUnk_10 = param1; + } + + /* 00 */ virtual void vfunc_00(); +}; + +class PlayerActor_A0_38_04 : public PlayerActor_A0_38_04_Base { +public: + /* 00 (vtable) */ + /* 04 (base) */ + /* 0C */ + + PlayerActor_A0_38_04(PlayerActor_A0_38 *param1) : + PlayerActor_A0_38_04_Base(param1) {} + + // data_ov024_020d8250 + /* 00 */ virtual void vfunc_00() override; +}; + +class PlayerActor_A0_38_18 : public PlayerActor_A0_38_04_Base { +public: + /* 00 (vtable) */ + /* 04 (base) */ + /* 0C */ + + PlayerActor_A0_38_18(PlayerActor_A0_38 *param1) : + PlayerActor_A0_38_04_Base(param1) {} + + // data_ov024_020d8244 + /* 00 */ virtual void vfunc_00() override; +}; + +class PlayerActor_A0_38 { +public: + /* 00 */ unk16 mUnk_00; + /* 02 */ unk16 mUnk_02; + /* 04 */ PlayerActor_A0_38_04 mUnk_04; + /* 18 */ PlayerActor_A0_38_18 mUnk_18; + /* 2C */ Vec2s mUnk_2C; + /* 30 */ u16 mUnk_30; + /* 32 */ unk16 mUnk_32; + /* 34 */ u16 mUnk_34; + /* 36 */ bool mUnk_36; + /* 37 */ bool mUnk_37; + /* 38 */ + + PlayerActor_A0_38(); + ~PlayerActor_A0_38(); + + void func_ov024_020d19d8(); +}; + +class PlayerActor_A0 { +public: + /* 00 */ STRUCT_PAD(0x00, 0x38); + /* 38 */ PlayerActor_A0_38 *mUnk_38; + /* 3C */ STRUCT_PAD(0x3C, 0x94); + /* 94 */ + + PlayerActor_A0(); +}; + +class PlayerActor_A4 { +public: + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ unk8 mUnk_08; + /* 09 */ unk8 mUnk_09; + /* 0A */ unk8 mUnk_0A; + /* 0B */ unk8 mUnk_0B; + /* 0C */ +}; + +class PlayerActor_134 { +public: + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ + + PlayerActor_134() { + this->mUnk_00 = 0; + this->mUnk_04 = 0; + } +}; + +class PlayerActor_1B0 : public UnkSystem7 { +public: + /* 00 (base) */ + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0C */ + + PlayerActor_1B0(); + ~PlayerActor_1B0(); +}; + +class PlayerActor : public PlayerActorBase { +public: + /* 000 (base) */ + /* 09C */ PlayerActor_9C *mUnk_9C; + /* 0A0 */ PlayerActor_A0 *mUnk_A0; + /* 0A4 */ PlayerActor_A4 mUnk_A4; + /* 0B0 */ unk32 mUnk_B0; + /* 0B4 */ unk8 mUnk_B4; + /* 0B5 */ unk8 mUnk_B5; + /* 0B6 */ unk8 mUnk_B6; + /* 0B7 */ unk8 mUnk_B7; + /* 0B8 */ unk8 mUnk_B8; + /* 0B9 */ unk8 mUnk_B9; + /* 0BA */ unk8 mUnk_BA; + /* 0BB */ unk8 mUnk_BB; + /* 0BC */ UnkSubStruct19 mUnk_BC; + /* 134 */ PlayerActor_134 *mUnk_134; + /* 138 */ UnkSubStruct19 mUnk_138; // sanctuary link icon animation + /* 1B0 */ PlayerActor_1B0 mUnk_1B0[3]; + /* 1D4 */ - void func_ov001_020bc820(); // TODO: params + PlayerActor(); //! TODO: params }; diff --git a/include/Save/AdventureFlags.hpp b/include/Save/AdventureFlags.hpp index 2404c251d..737452979 100644 --- a/include/Save/AdventureFlags.hpp +++ b/include/Save/AdventureFlags.hpp @@ -7,6 +7,7 @@ typedef u32 AdventureFlag; typedef u16 AdventureFlag_Half; enum AdventureFlag_ { + /* -1 */ AdventureFlag_Unset = 0xFFFF, /* 0x000 */ AdventureFlag_Nothing = FLAG(0, 0), /* 0x001 */ AdventureFlag_Unk_001 = FLAG(0, 1), /* 0x002 */ AdventureFlag_ObtainedSpiritTrain = FLAG(0, 2), diff --git a/include/Save/SaveFile.hpp b/include/Save/SaveFile.hpp index 986a24665..12bc00090 100644 --- a/include/Save/SaveFile.hpp +++ b/include/Save/SaveFile.hpp @@ -2,6 +2,7 @@ #include "Item/ItemManager.hpp" #include "MainGame/MiscAdvManager.hpp" +#include "MainGame/PassengerManager.hpp" #include "math.hpp" #include "types.h" @@ -17,11 +18,20 @@ struct SaveFile_00000_0000_Data_D8 { /* 00 */ unk32 unk_00; - /* 04 */ STRUCT_PAD(0x04, 0x6C); - /* 6C */ u32 trackFlags[2]; - /* 74 */ unk32 spiritTrackFlags[1]; - /* 78 */ unk32 unk_74; - /* 7C */ unk32 unk_78; + /* 04 */ STRUCT_PAD(0x04, 0x40); + /* 40 */ UnkStruct_Param1 unk_40; + /* 58 */ unk32 unk_58; + /* 5C */ unk32 unk_5C; + /* 60 */ s8 unk_60[4]; + /* 60 */ s8 unk_64[4]; + /* 68 */ unk8 unk_68; + /* 69 */ unk8 unk_69; + /* 6A */ unk8 unk_6A; + /* 6B */ unk8 unk_6B; + /* 6C */ u32 trackFlags[3]; + /* 78 */ unk32 spiritTrackFlags; + /* 7C */ unk16 cargoAmount; + /* 7E */ unk8 cargoType; /* 80 */ SaveFile_00000_0000_Data_D8(); @@ -116,7 +126,7 @@ struct SaveFile_00000_0000_Data_C84 { } }; -struct SaveFile_00000_0000_Data_TEST4 { +struct SaveFile_00000_0000_Data_D4C { /* D24 */ unk32 unk_D4C; /* D24 */ unk32 unk_D50; /* D24 */ unk32 unk_D54; @@ -128,7 +138,7 @@ struct SaveFile_00000_0000_Data_TEST4 { /* D6C */ unk8 unk_D6C[0x08]; /* D74 */ unk16 unk_D74; - SaveFile_00000_0000_Data_TEST4() { + SaveFile_00000_0000_Data_D4C() { MI_CpuFill32(0, this->unk_D6C, sizeof(this->unk_D6C)); this->unk_D74 = 0; } @@ -166,7 +176,7 @@ struct SaveInfoData { /* D24 */ unk32 unk_D40; /* D24 */ unk32 unk_D44; /* D24 */ unk32 unk_D48; - /* D4C */ SaveFile_00000_0000_Data_TEST4 unk_D4C; + /* D4C */ SaveFile_00000_0000_Data_D4C unk_D4C; /* D78 */ unk32 unk_D78; /* D7C */ unk32 unk_D7C; /* D80 */ unk32 unk_D80; diff --git a/include/Save/SaveManager.hpp b/include/Save/SaveManager.hpp index dde08b7a2..bc52e595c 100644 --- a/include/Save/SaveManager.hpp +++ b/include/Save/SaveManager.hpp @@ -9,8 +9,6 @@ #include "global.h" #include "types.h" -//! TODO: kinda draft state for now - #define SAVE_DATA_SIZE (sizeof(SaveSlot) + sizeof(u8) * NUM_UNK_BLOCKS * SIZE_UNK_BLOCK) enum { diff --git a/include/System/Random.hpp b/include/System/Random.hpp index 4d7def709..c0882f954 100644 --- a/include/System/Random.hpp +++ b/include/System/Random.hpp @@ -18,50 +18,70 @@ struct Random { } /** - * @brief Updates the seed's value + * @brief Sets the seed's value from a u64 */ - void UpdateRandomValue() { - *(u64 *) this->mRandomValue = this->mAddend + (this->mFactor * this->GetRandomValue()); + void SetRandomValue(u64 value) { + *(u64 *) this->mRandomValue = value; } /** - * @brief Generates a random number as a u16 + * @brief Sets the seed's value from a u16 array */ - u16 Next16() { - this->UpdateRandomValue(); - return this->GetRandomValue() >> 48; + void SetRandomValue(u16 *value) { + this->SetRandomValue(*(u64 *) value); } /** - * @brief Generates a random number from 0 (inclusive) to `max` (exclusive) as a u32 + * @brief Setup the randomizer with a set seed as a u64 */ - u32 Next32(u64 min, u64 max) { - this->UpdateRandomValue(); - return (((this->GetRandomValue() >> 32) * (max - min)) >> 32) + min; + void Setup(u64 initial) { + this->SetRandomValue(initial); + this->SetFactorAddend(); } - u16 ConditionalNext16(u32 value) { - this->UpdateRandomValue(); + /** + * @brief Setup the randomizer with a set seed as a u16 array + */ + void Setup(u16 *initial) { + this->SetRandomValue(initial); + this->SetFactorAddend(); + } - u64 result = this->GetRandomValue() >> 32; + /** + * @brief Setup the randomizer without any specific seed + */ + void Setup() { + this->SetRandomValue((u64) 0); + this->SetFactorAddend(); + } - if (value != 0) { - result = (result * value) >> 32; - } + /** + * @brief Sets the factor and addend values + */ + void SetFactorAddend() { + this->mFactor = 0x5D588B656C078965; + this->mAddend = 0x00269EC3; + } - return result; + /** + * @brief Updates the seed's value + */ + void UpdateRandomValue() { + *(u64 *) this->mRandomValue = this->mAddend + (this->mFactor * this->GetRandomValue()); } - u32 ConditionalNext32(u32 value) { + /** + * @brief Generates a random number as u32 + */ + u32 Next32(u32 factor) { this->UpdateRandomValue(); + u64 randomValue = this->GetRandomValue(); - u32 result = this->GetRandomValue() >> 32; - - if (value != 0) { - return ((u64) result * value) >> 32; + if (factor == 0) { + return randomValue >> 32; } - return result; + return ((randomValue >> 32) * factor) >> 32; } void Init(); diff --git a/include/Unknown/Common.hpp b/include/Unknown/Common.hpp index 3e16cfaab..a4d17b252 100644 --- a/include/Unknown/Common.hpp +++ b/include/Unknown/Common.hpp @@ -852,7 +852,9 @@ class UnkSystem3 { class UnkStruct2 { public: - /* 00 */ unk8 pad[0x10]; + /* 00 */ unk32 mUnk_00; + /* 04 */ const char *mUnk_04; + /* 08 */ STRUCT_PAD(0x08, 0x10); /* 10 */ UnkStruct2(const char *path, unk32 param2); @@ -1078,20 +1080,124 @@ struct UnkDataStruct1 { } }; +struct UnkDataStruct4_14_2; struct UnkDataStruct2 { - /* 00 */ void *unk_00; + /* 00 */ UnkDataStruct4_14_2 *unk_00; /* 04 */ UnkDataStruct2(unk32 param1); ~UnkDataStruct2(); }; +#define UnkDataStruct4_14_Unk_Max 20 +typedef u8 UnkArrayDataType1[UnkDataStruct4_14_Unk_Max][15]; +struct UnkDataStruct4_14 { + /* 00 */ unk8 mUnk_00; + /* 01 */ s8 mStationSceneIndex; + /* 02 */ s8 mUnk_02[3]; + /* 05 */ unk8 mUnk_05; + /* 06 */ u16 mUnk_06[3]; + /* 0C */ u8 mUnk_0C[3]; + /* 0F */ u8 mUnk_0F[3]; + /* 12 */ u8 mUnk_12; + /* 13 */ u8 mUnk_13; + /* 14 */ + + s32 func_ov024_020d1c3c(unk32 *param1, unk32 param2) const; + void func_ov024_020d1c84(); + bool func_ov024_020d1cc8(unk32 param1, unk32 param2) const; + bool func_ov024_020d1cf4(unk32 param1) const; + bool func_ov024_020d1d30(unk32 param1, u16 param2) const; + u8 func_ov024_020d1d78() const; + u8 func_ov024_020d1da0() const; + bool func_ov024_020d1dc8(unk32 param1, unk32 param2) const; + bool func_ov024_020d1df4(unk32 param1) const; + void func_ov024_020d1f60(u32 param1); + unk32 func_ov024_020d1f70() const; + bool func_ov024_020d1fa4(unk32 param1) const; + void func_ov024_020d1fe8(); + bool func_ov024_020d2030(unk32 param1, unk32 param2); + u8 func_ov024_020d208c(unk32 param1) const; + void func_ov024_020d2098(unk32 param1, unk32 param2); + unk32 func_ov024_020d20c0(unk32 param1, unk32 param2) const; + bool IsStationDungeon() const; + bool func_ov024_020d21d8() const; + bool func_ov024_020d223c() const; + bool func_ov024_020d2270(unk32 param1, unk32 param2) const; + unk32 func_ov024_020d22ac(unk32 param1) const; + bool func_ov024_020d2320(unk32 param1) const; + unk32 func_ov024_020d2348(unk32 param1) const; + bool func_ov024_020d23bc() const; + bool func_ov024_020d239c() const; + bool func_ov024_020d23ec() const; + bool func_ov024_020d243c() const; + bool func_ov024_020d2448() const; + bool func_ov024_020d2464(bool param1) const; + + static const u8 func_ov024_020d1a18(unk32 param1); + static unk32 func_ov024_020d1a28(u8 param1); + static u8 func_ov024_020d1a98(unk32 param1, unk32 param2); + static void func_ov024_020d1ab8(unk32 param1, unk32 *param2, unk32 *param3); + static s32 func_ov024_020d1b98(unk32 *param1, unk32 param2); + static s32 func_ov024_020d1be0(s32 param1); + static void func_ov024_020d1e20(unk16 *param1, unk32 param2); + static u8 func_ov024_020d1eac(const unk32 param1); +}; + +struct UnkDataStruct4_14_2 { + /* 000 */ UnkDataStruct4_14 mUnk_00[15]; + /* 12C */ +}; + +struct UnkStruct_SceneChange1; +struct UnkDataStruct4 { + /* 00 (vtable) */ + /* 04 */ u16 mUnk_04; + /* 06 */ u16 mUnk_06; + /* 08 */ unk32 mUnk_08; + /* 0C */ unk32 mUnk_0C; + /* 10 */ unk32 mUnk_10; + /* 14 */ UnkDataStruct4_14_2 *mUnk_14[20]; + /* 64 */ UnkDataStruct4_14_2 *mUnk_64; + /* 68 */ VecFx32 mUnk_68[8]; + /* C8 */ VecFx32 *mUnk_C8; + /* CC */ u32 mSceneIndex; + /* D0 */ + + UnkDataStruct4(); + + // data_ov024_020d8260 + /* 00 */ virtual void vfunc_00(); + /* 04 */ virtual void vfunc_04(); + /* 08 */ + + void func_ov024_020d2518(); + void func_ov024_020d251c(); + void func_ov024_020d2520(UnkStruct_SceneChange1 *param1); + void func_ov024_020d2538(u32 sceneIndex, u8 roomIndex, UnkDataStruct4_14_2 *param3); + void func_ov024_020d2564(); + void func_ov024_020d258c(u32 sceneIndex, u8 roomIndex); + void func_ov024_020d26b0(unk32 param1); + void func_ov024_020d277c(); + void func_ov024_020d27cc(); + void func_ov024_020d280c(); + void func_ov024_020d29b0(unk32 param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5); + bool func_ov024_020d2a18(unk32 param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5); + void func_ov024_020d2b08(unk32 param1, unk32 param2, VecFx32 *param3) const; + void func_ov024_020d2c54(UnkArrayDataType1 param1, unk32 param2); + void func_ov024_020d2cfc(UnkArrayDataType1 param1, unk32 param2, unk32 param3); + s32 func_ov024_020d3068() const; + bool func_ov024_020d308c(fx32 *param1, fx32 *param2, unk16 param3) const; + void func_ov024_020d3100(); + void func_ov024_020d3140(); + + static void func_ov024_020d2b40(Vec2s *param1, const UnkDataStruct4 *thisx); + static void func_ov024_020d2bcc(Vec2s *param1, const UnkDataStruct4 *thisx); +}; + struct UnkDataStruct3 { /* 00 */ UnkDataStruct2 mUnk_00; - /* 04 */ unk32 mUnk_04; - /* 08 */ STRUCT_PAD(0x08, 0xCC); - /* CC */ unk32 mUnk_CC; - /* D0 */ unk32 mUnk_D0; + /* 04 */ UnkDataStruct4 mUnk_04; /* D4 */ UnkDataStruct3(unk32 param1) : @@ -1174,3 +1280,19 @@ class MapObjectProfile_Derived2_20_Base { unk32 func_ov000_02058a84(unk32 param1, const char *param2); void func_ov000_02058ab0(void); }; + +class MapObjectProfile_Derived5 : public MapObjectProfile_Derived2_20_Base { +public: + /* 00 (base) */ + /* 94 */ + + MapObjectProfile_Derived5(unk32 param1); + MapObjectProfile_Derived5(unk32 param1, int); + MapObjectProfile_Derived5(const char *directory, const char *archiveName, const char *param3, const char *param4, + unk32 param5, unk32 param6) : + MapObjectProfile_Derived2_20_Base(directory, archiveName, param3, param4, param5, param6) {} + + // data_ov024_020d8350 + /* 00 */ virtual ~MapObjectProfile_Derived5() override; + /* 08 */ +}; diff --git a/include/Unknown/UnkStruct_027e0478.hpp b/include/Unknown/UnkStruct_027e0478.hpp deleted file mode 100644 index 79e7f747c..000000000 --- a/include/Unknown/UnkStruct_027e0478.hpp +++ /dev/null @@ -1,35 +0,0 @@ -#pragma once - -#include "Item/ItemManager.hpp" -#include "Player/Player.hpp" -#include "Player/TouchControl.hpp" -#include "global.h" -#include - -// incomplete -class UnkStruct_027e0478 { -public: - /* 000 */ void *mUnk_000; // set to -1 on land and to a pointer on train? - /* 004 */ void *mUnk_004; - /* 008 */ ItemManager *mpItemManager; - /* 00C */ Input mButtons; - /* 012 */ unk16 mUnk_012; - /* 014 */ TouchControl mTouchControl; - /* 036 */ STRUCT_PAD(0x36, 0xF0); - /* 0F0 */ unk32 mUnk_0F0; // seems to be the walking speed of link?? - /* 0F4 */ unk32 mUnk_0F4; - /* 0F8 */ unk32 mUnk_0F8; - /* 0FC */ unk32 mUnk_0FC; - /* 100 */ unk32 mUnk_100; - /* 104 */ unk8 mUnk_104; - /* 105 */ unk8 mUnk_105; // set to 0 on idle, set to 3 when pulling out an item - /* 106 */ unk8 mUnk_106; - /* 107 */ unk8 mUnk_107; - /* 108 */ void *mUnk_108; // vtable - /* 10C */ void *mUnk_10C; // linklist? - /* 110 */ void *mUnk_110; - /* 114 */ STRUCT_PAD(0x114, 0x154); - /* 154 */ PlayerActor mPlayer; -}; - -extern UnkStruct_027e0478 data_027e0478; diff --git a/include/Unknown/UnkStruct_027e0998.hpp b/include/Unknown/UnkStruct_027e0998.hpp index 1e51e6782..b8616f797 100644 --- a/include/Unknown/UnkStruct_027e0998.hpp +++ b/include/Unknown/UnkStruct_027e0998.hpp @@ -25,6 +25,7 @@ class UnkStruct_027e0998_Base { void func_ov000_02061764(); void func_ov000_02061768(); void func_ov000_02061850(unk32 param1); + bool func_ov000_02061a48(VecFx32 *param1, Vec2s *param2, Vec2s *param3); unk32 func_ov000_02061a70(); static void SetInstance(UnkStruct_027e0998_Base *pInstance); diff --git a/include/Unknown/UnkStruct_027e09a0.hpp b/include/Unknown/UnkStruct_027e09a0.hpp index ed4c4ae4c..15b5737ff 100644 --- a/include/Unknown/UnkStruct_027e09a0.hpp +++ b/include/Unknown/UnkStruct_027e09a0.hpp @@ -81,20 +81,23 @@ struct UnkStruct_func_ov000_020702a8 { }; struct CourseRoomEntry { - u8 roomIndex; - u8 mapPaintIndex; - u8 unk_02; - u8 unk_03; + /* 00 */ u8 roomIndex; + /* 01 */ u8 mapPaintIndex; + /* 02 */ u8 unk_02; + /* 03 */ u8 unk_03; + /* 04 */ }; struct CourseEntry { /* 00 */ const char name[16]; /* 10 */ unk32 unk_10; - /* 14 */ unk8 mNumRooms; + /* 14 */ unk8 numRooms; /* 15 */ unk8 unk_15; - /* 16 */ unk8 unk_16; - /* 17 */ u8 mSaveCourseIndex; - /* 18 */ STRUCT_PAD(0x18, 0x1D); + /* 16 */ unk8 titleCardMsgIndex; + /* 17 */ u8 saveCourseIndex; + /* 18 */ STRUCT_PAD(0x18, 0x1B); + /* 1B */ u8 unk_1B; + /* 1C */ u8 unk_1C; /* 1D */ u8 unk_1D; /* 1E */ u8 unk_1E; /* 1F */ u8 unk_1F; @@ -113,6 +116,7 @@ class UnkStruct_027e09a0 { UnkStruct_func_ov000_020702a8 *func_ov000_020702a8(unk32 param1); unk32 GetRoomEntryIndex(); CourseRoomEntry *GetRoomEntry(u32 sceneIndex, unk32 param2); + u32 GetSceneIndexFromName(const char *sceneName); bool func_ov000_02070378(u32 param1); }; diff --git a/include/Unknown/UnkStruct_027e09a4.hpp b/include/Unknown/UnkStruct_027e09a4.hpp index bd464a38e..0e305f889 100644 --- a/include/Unknown/UnkStruct_027e09a4.hpp +++ b/include/Unknown/UnkStruct_027e09a4.hpp @@ -3,6 +3,7 @@ #include "Cutscene/Cutscene.hpp" #include "System/SysNew.hpp" #include "Unknown/UnkStruct_0204a060.hpp" +#include "Unknown/UnkStruct_027e09a0.hpp" #include "global.h" #include "types.h" @@ -145,18 +146,6 @@ enum SceneIndex_ { /* 121 */ SceneIndex_Max = 0x79 }; -struct UnkStruct_func_01ffd400 { - /* 00 */ STRUCT_PAD(0x00, 0x10); - /* 10 */ unk32 mUnk_10; - /* 14 */ unk16 mUnk_14; - /* 16 */ s8 mUnk_16; - /* 17 */ unk8 mUnk_17; - /* 18 */ unk8 mUnk_18; - /* 19 */ unk8 mUnk_19; - /* 1A */ unk8 mUnk_1A; - /* 1B */ u8 mUnk_1B; -}; - struct UnkStruct_SceneChange1_Base { /* 00 */ unk32 mSceneIndex; /* 04 */ unk32 mUnk_04; @@ -274,7 +263,7 @@ class UnkStruct_027e09a4 : public SysObject { bool UnkCheck2() const { bool result = true; - if (this->func_01ffd400()->mUnk_10 != 1 && this->func_01ffd400()->mUnk_10 != 3) { + if (this->GetCurrentCourseEntry()->unk_10 != 1 && this->GetCurrentCourseEntry()->unk_10 != 3) { result = false; } @@ -311,9 +300,12 @@ class UnkStruct_027e09a4 : public SysObject { ~UnkStruct_027e09a4(); - bool func_01ffd3d8(); // is on train? - UnkStruct_func_01ffd400 *func_01ffd400() const; + // itcm + bool IsLand(); + bool IsTrain(); + CourseEntry *GetCurrentCourseEntry() const; + // overlay 0 unk8 func_ov000_02070bd0(unk32 csIndex, unk32 param2); UnkStruct_SceneChange1 *func_ov000_02070560(); void func_ov000_020707a8(void *param1); @@ -329,6 +321,7 @@ class UnkStruct_027e09a4 : public SysObject { bool func_ov000_0207056c(); void func_ov000_020705e8(SaveFile *param1, unk32 param2); + // overlay 17 void func_ov017_020bb994(void *param1); void func_ov017_020bb994(unk32 param1); void func_ov017_020bb994(void *, void *); diff --git a/include/Unknown/UnkStruct_027e0ce0.hpp b/include/Unknown/UnkStruct_027e0ce0.hpp index 0c5d765b3..e73758bed 100644 --- a/include/Unknown/UnkStruct_027e0ce0.hpp +++ b/include/Unknown/UnkStruct_027e0ce0.hpp @@ -4,51 +4,361 @@ #include "types.h" #include "Item/ItemManager.hpp" +#include "LinkList.hpp" +#include "Player/Player.hpp" +#include "Player/TouchControl.hpp" +#include "Save/SaveManager.hpp" #include "System/SysNew.hpp" +#include "input.hpp" + +#include class UnkStruct_027e0ce0_34 { public: - /* 00 */ unk32 mUnk_00; - /* 04 */ unk32 mUnk_04; - /* 08 */ unk32 mUnk_08; - /* 0C */ unk32 mUnk_0C; - /* 10 */ unk32 mUnk_10; - /* 14 */ unk32 mUnk_14; - /* 18 */ unk32 mUnk_18; - /* 1C */ unk32 mUnk_1C; + /* 00 */ unk32 mUnk_00[4]; + /* 10 */ unk32 mUnk_10[4]; /* 20 */ unk32 mUnk_20; /* 24 */ unk32 mUnk_24; /* 28 */ unk32 mUnk_28; - /* 2C */ unk32 mUnk_2C; - /* 30 */ + /* 2C */ s32 mUnk_2C; + /* 30 */ u32 mSpiritTrackFlags; + /* 34 */ unk32 mUnk_34; + /* 38 */ u32 mTrackFlags[3]; + /* 44 */ + // overlay 8 void func_ov008_020b6a50(); + // overlay 24 + void func_ov024_020d3c60(SaveFile_00000_0000_Data_D8 *param1); + unk32 func_ov024_020d3cf4(unk32 param1); + unk32 func_ov024_020d3d20(); + void func_ov024_020d3d80(unk32 param1); void func_ov024_020d3d98(unk32 param1, unk32 param2); - void func_ov024_020d3ee8(unk32 param1, u16 param2, unk32 param3); - unk32 func_ov024_020d3dcc(); + bool func_ov024_020d3da8(unk32 param1, unk32 param2); + u32 func_ov024_020d3dc0(unk32 param1, unk32 param2); + bool func_ov024_020d3dcc(); + unk32 func_ov024_020d3dec(unk32 param1); + unk32 func_ov024_020d3e0c(unk32 param1); + void func_ov024_020d3e30(unk32 param1, unk32 param2); + void *func_ov024_020d3e68(unk32 param1); + void func_ov024_020d3ee8(unk32 param1, u16 param2, bool param3); + bool func_ov024_020d3f4c(s8 param1, u16 param2); + void func_ov024_020d3f8c(); + void func_ov024_020d3fc8(); + void func_ov024_020d4008(unk32 param1); + void func_ov024_020d404c(); + void func_ov024_020d4098(s32 *param1, s32 *param2); + + static s8 func_ov024_020d3c54(unk32 param1); + // overlay 110 void func_ov110_02185d3c(ItemId itemId); }; +class UnkStruct_027e0ce0_38_Base { +public: + /* 00 (vtable) */ + /* 04 */ void *mUnk_04; + /* 08 */ void *mUnk_08; + /* 0C */ unk32 mUnk_0C; + /* 10 */ + + UnkStruct_027e0ce0_38_Base() { + this->mUnk_04 = NULL; + this->mUnk_08 = NULL; + this->mUnk_0C = 0; + } + + // data_ov000_020b2838 + /* 00 */ virtual ~UnkStruct_027e0ce0_38_Base(); + /* 08 */ virtual void vfunc_08(); + /* 0C */ virtual void vfunc_0C(); + /* 10 */ virtual void vfunc_10(); + /* 14 */ +}; + class UnkStruct_027e0ce0_38_10 { public: + /* 00 */ unk32 mUnk_00; + /* 04 */ unk16 mUnk_04; + /* 06 */ unk16 mUnk_06; + /* 08 */ unk16 mUnk_08; + /* 0A */ unk16 mUnk_0A; + /* 0C */ unk32 mUnk_0C; + /* 10 */ unk32 mUnk_10; + /* 14 */ TouchControl mUnk_14; + /* 38 */ unk32 mUnk_38; + /* 3C */ unk8 mUnk_3C; + /* 3D */ unk8 mUnk_3D; + /* 3E */ unk16 mUnk_3E; + /* 40 */ unk16 mUnk_40; + /* 42 */ Input mUnk_42; + /* 48 */ TouchControl mUnk_48; + /* 6A */ Input mUnk_6A; + /* 70 */ + + UnkStruct_027e0ce0_38_10(); + void func_ov026_020f4870(); }; +class UnkStruct_027e0ce0_38_58 { +public: + /* 000 */ STRUCT_PAD(0x00, 0x3D4); + /* 3D4 */ + + UnkStruct_027e0ce0_38_58(); +}; + +class UnkStruct_027e0ce0_38_5C { +public: + /* 000 */ STRUCT_PAD(0x00, 0x1A4); + /* 1A4 */ + + UnkStruct_027e0ce0_38_5C(); +}; + +class UnkStruct_027e0ce0_38_60 { +public: + /* 00 */ STRUCT_PAD(0x00, 0xD8); + /* D8 */ + + UnkStruct_027e0ce0_38_60(); +}; + class UnkStruct_027e0ce0_38_158 { public: + /* 000 */ STRUCT_PAD(0x00, 0x45C); + /* 45C */ + + UnkStruct_027e0ce0_38_158(); + void func_ov026_020dc2d0(); }; -class UnkStruct_027e0ce0_38 { +class UnkStruct_027e0ce0_38_174 { +public: + /* 00 */ STRUCT_PAD(0x00, 0x28); + /* 28 */ + + UnkStruct_027e0ce0_38_174(); +}; + +class UnkStruct_027e0ce0_38_19C { +public: + /* 00 */ STRUCT_PAD(0x00, 0x2C); + /* 2C */ + + UnkStruct_027e0ce0_38_19C(); +}; + +class UnkStruct_027e0ce0_38_1C8 { +public: + /* 00 */ STRUCT_PAD(0x00, 0x34); + /* 34 */ + + UnkStruct_027e0ce0_38_1C8(); +}; + +// train player stuff +class UnkStruct_027e0ce0_38 : public UnkStruct_027e0ce0_38_Base { public: - /* 000 */ STRUCT_PAD(0x00, 0x10); + /* 000 (base) */ /* 010 */ UnkStruct_027e0ce0_38_10 *mUnk_010; - /* 014 */ STRUCT_PAD(0x14, 0x158); + /* 014 */ Input mUnk_014; + /* 01C */ VecFx32 mPos; + /* 028 */ VecFx32 mPrevPos; + /* 034 */ VecFx32 mVel; + /* 040 */ VecFx32 mAccel; + /* 04C */ unk32 mUnk_04C; + /* 050 */ unk32 mUnk_050; + /* 054 */ unk16 mUnk_054; + /* 056 */ unk16 mUnk_056; + /* 058 */ UnkStruct_027e0ce0_38_58 *mUnk_058; + /* 05C */ UnkStruct_027e0ce0_38_5C *mUnk_05C; + /* 060 */ UnkStruct_027e0ce0_38_60 mUnk_060; + /* 138 */ unk32 mUnk_138; + /* 13C */ unk32 mUnk_13C; + /* 140 */ unk32 mUnk_140; + /* 144 */ unk16 mUnk_144; + /* 146 */ unk8 mUnk_146; + /* 147 */ unk8 mUnk_147; + /* 148 */ unk8 mUnk_148; + /* 149 */ unk8 mUnk_149; + /* 14A */ unk8 mUnk_14A; + /* 14B */ unk8 mUnk_14B; + /* 14C */ unk8 mUnk_14C; + /* 150 */ unk32 mUnk_150; + /* 154 */ unk32 mUnk_154; /* 158 */ UnkStruct_027e0ce0_38_158 *mUnk_158; + /* 15C */ STRUCT_PAD(0x15C, 0x170); + /* 170 */ unk32 mUnk_170; + /* 174 */ UnkStruct_027e0ce0_38_174 mUnk_174; + /* 19C */ UnkStruct_027e0ce0_38_19C mUnk_19C; + /* 1C8 */ UnkStruct_027e0ce0_38_1C8 mUnk_1C8; + /* 1FC */ UnkSubStruct19 mUnk_1FC; + /* 274 */ UnkStruct_ov019_020d24c8_28_258_00 mUnk_274; + /* 280 */ + + UnkStruct_027e0ce0_38(); // data_ov026_0213562c + /* 00 */ virtual ~UnkStruct_027e0ce0_38() override; + /* 0C */ virtual void vfunc_0C() override; +}; + +class UnkStruct_027e0ce0_40_Base_14 { +public: + /* 00 */ TouchControl mTouchControl; + /* 22 */ STRUCT_PAD(0x22, 0x60); + /* 60 */ + + UnkStruct_027e0ce0_40_Base_14(); +}; + +class UnkStruct_027e0ce0_40_Base_74 { +public: + /* 00 */ STRUCT_PAD(0x00, 0x5C); + /* 5C */ + + UnkStruct_027e0ce0_40_Base_74(); +}; + +class UnkStruct_027e0ce0_40_Base_78 { +public: + /* 00 */ STRUCT_PAD(0x00, 0x04); + /* 04 */ + + UnkStruct_027e0ce0_40_Base_78(); +}; + +class UnkStruct_027e0ce0_40_Base_7C { +public: + /* 00 */ STRUCT_PAD(0x00, 0x18); + /* 18 */ + + UnkStruct_027e0ce0_40_Base_7C(); +}; + +class UnkStruct_027e0ce0_40_Base_94 { +public: + /* 00 */ STRUCT_PAD(0x00, 0x5C); + /* 5C */ unk32 mUnk_5C; // seems to be the walking speed of link?? + /* 60 */ unk32 mUnk_60; + /* 64 */ unk32 mUnk_64; + /* 68 */ unk32 mUnk_68; + /* 6C */ unk32 mUnk_6C; + /* 70 */ + + UnkStruct_027e0ce0_40_Base_94(); +}; + +class UnkStruct_027e0ce0_40_Base { +public: + /* 000 */ unk32 mUnk_000; + /* 004 */ void *mUnk_004; + /* 008 */ ItemManager *mpItemManager; + /* 00C */ Input mButtons; + /* 012 */ unk16 mUnk_012; + /* 014 */ UnkStruct_027e0ce0_40_Base_14 mUnk_014; + /* 074 */ UnkStruct_027e0ce0_40_Base_74 *mUnk_074; + /* 078 */ UnkStruct_027e0ce0_40_Base_78 *mUnk_078; + /* 07C */ UnkStruct_027e0ce0_40_Base_7C mUnk_07C; + /* 094 */ UnkStruct_027e0ce0_40_Base_94 mUnk_094; + /* 104 */ unk16 mUnk_104; // set to 0 on idle, set to 3 when pulling out an item + /* 106 */ unk8 mUnk_106; + /* 107 */ unk8 mUnk_107; + /* 108 */ + + UnkStruct_027e0ce0_40_Base(unk32 param1, void *param2, ItemManager *param3); +}; + +class UnkStruct_027e0ce0_40_108_Base : public LinkList { +public: + /* 00 (vtable) */ + /* 04 (base) */ + /* 0C */ + + UnkStruct_027e0ce0_40_108_Base() { + this->SetPrev(NULL); + } + + // data_ov101_02183908 + /* 00 */ virtual void vfunc_00() = 0; +}; + +class UnkStruct_027e0ce0_40_108 : public UnkStruct_027e0ce0_40_108_Base { +public: + /* 00 (base) */ + /* 0C */ STRUCT_PAD(0x0C, 0x40); + /* 40 */ + + UnkStruct_027e0ce0_40_108() {} + + // data_ov031_02112b60 + /* 00 */ virtual void vfunc_00() override; +}; + +class UnkStruct_027e0ce0_40_14C { + /* 00 */ STRUCT_PAD(0x00, 0x94); + /* 94 */ + + UnkStruct_027e0ce0_40_14C(); +}; + +class UnkStruct_027e0ce0_40_150 { + /* 00 */ STRUCT_PAD(0x00, 0x0C); + /* 0C */ + + UnkStruct_027e0ce0_40_150(); +}; + +class UnkStruct_027e0ce0_40_328 { + /* 000 */ STRUCT_PAD(0x00, 0x154); + /* 154 */ + + UnkStruct_027e0ce0_40_328(); +}; + +// land player stuff +class UnkStruct_027e0ce0_40 : public UnkStruct_027e0ce0_40_Base { +public: + /* 000 (base) */ + /* 108 */ UnkStruct_027e0ce0_40_108 mUnk_108; + /* 148 */ void *mUnk_148; + /* 14C */ UnkStruct_027e0ce0_40_14C *mUnk_14C; + /* 150 */ UnkStruct_027e0ce0_40_150 *mUnk_150; + /* 154 */ PlayerActor mPlayer; + /* 328 */ UnkStruct_027e0ce0_40_328 *mUnk_328; + /* 32C */ PlayerActor *mpPlayer; // set to mPlayer + /* 330 */ UnkStruct_027e0ce0_40_328 *mUnk_330; // set to mUnk_328 + /* 334 */ ItemFlag mEquippedItem; + /* 338 */ bool mIsSceneTowerInteriorStairs; + /* 339 */ bool mIsSceneTowerExteriorStairs; + /* 33A */ bool mIsSceneBossByrne; + /* 33B */ unk8 mUnk_33B; + /* 33C */ + + // param2 is UnkStruct_027e0ce0::mUnk_20 + // param3 is UnkStruct_027e0ce0::mUnk_04 + // param4 is UnkStruct_027e0ce0::mUnk_28 + UnkStruct_027e0ce0_40(unk32 param1, void *param2, void *param3, ItemManager *param4); +}; + +union UnkStruct_027e0478 { + UnkStruct_027e0ce0_38 train; + UnkStruct_027e0ce0_40 land; +}; + +extern UnkStruct_027e0478 data_027e0478; + +class UnkStruct_027e0ce0_3C { +public: + /* 00 */ STRUCT_PAD(0x00, 0x98); + /* 98 */ + + UnkStruct_027e0ce0_3C(); }; // PlayerManager? @@ -72,8 +382,8 @@ class UnkStruct_027e0ce0 { /* 30 */ unk32 *mUnk_30; // ? /* 34 */ UnkStruct_027e0ce0_34 *mUnk_34; /* 38 */ UnkStruct_027e0ce0_38 *mUnk_38; // pointer to data_027e0478 when on the train - /* 3C */ unk32 mUnk_3C; - /* 40 */ unk32 *mUnk_40; // pointer to data_027e0478 when not on the train + /* 3C */ UnkStruct_027e0ce0_3C *mUnk_3C; // cutscene related + /* 40 */ UnkStruct_027e0ce0_40 *mUnk_40; // pointer to data_027e0478 when not on the train /* 44 */ VecFx32 *func_01fff148(unk32 param1); diff --git a/include/Unknown/UnkStruct_027e0cf8.hpp b/include/Unknown/UnkStruct_027e0cf8.hpp index fbb618b6e..9cfd7bf63 100644 --- a/include/Unknown/UnkStruct_027e0cf8.hpp +++ b/include/Unknown/UnkStruct_027e0cf8.hpp @@ -1,27 +1,52 @@ #pragma once +#include "MainGame/AdventureMode.hpp" +#include "Save/AdventureFlags.hpp" +#include "System/Random.hpp" #include "Unknown/Common.hpp" #include "global.h" #include "types.h" -struct UnkStruct_027e0cf8_00_18 { +struct UnkStruct_027e0cf8_00_18_00 { /* 00 */ UnkSubStruct19 mUnk_00; /* 78 */ unk32 mUnk_78; /* 7C */ unk32 mUnk_7C; /* 80 */ unk32 mUnk_80; + /* 84 */ +}; + +struct UnkStruct_027e0cf8_00_18 { + /* 0000 */ UnkStruct_027e0cf8_00_18_00 mUnk_00[48]; + /* 18C0 */ Vec2p mUnk_18C0; + /* 18C8 */ STRUCT_PAD(0x18C8, 0x2220); + /* 2220 */ }; class UnkStruct_027e0cf8_00 { public: - /* 0000 */ STRUCT_PAD(0x00, 0x18); - /* 0018 */ UnkStruct_027e0cf8_00_18 mUnk_0018[48]; - /* 18D8 */ STRUCT_PAD(0x18D8, 0x2258); + /* 0000 */ Random mRandom; + /* 0018 */ UnkStruct_027e0cf8_00_18 mUnk_0018; + /* 2238 */ Vec2p *mUnk_2238; + /* 223C */ unk32 mUnk_223C; + /* 2240 */ Vec2s mUnk_2240; + /* 2244 */ unk32 mUnk_2244; + /* 2248 */ unk32 mUnk_2248; + /* 224C */ unk32 mUnk_224C; + /* 2250 */ unk32 mUnk_2250; + /* 2254 */ unk32 mUnk_2254; /* 2258 */ UnkStruct_027e0cf8_00(); ~UnkStruct_027e0cf8_00(); - void func_ov024_020cfb7c(void *param1, Vec2s *param2, unk32 param3, u16 param4, unk32 param5, unk32 param6); + void func_ov024_020cf9d4(UnkStruct_027e0cf8_00_18_00 *param1); + void func_ov024_020cfb7c(UnkDataStruct4 *param1, Vec2s *param2, unk32 param3, u16 param4, unk32 param5, unk32 param6); + + static s32 func_ov024_020cfd54(s32 param1, s32 stationSceneIdx, s32 param3, s32 param4); + static bool func_ov024_020cfe24(s16 stationSceneIdx); + static s32 func_ov024_020cfe6c(s32 param1, s32 param2, s32 param3, s32 param4); + static s16 func_ov024_020cfe94(s32 param1); + static bool func_ov024_020cfed0(s16 param1); }; class UnkStruct_027e0cf8_04 { @@ -33,38 +58,123 @@ class UnkStruct_027e0cf8_04 { void func_ov026_020dc300(); }; +typedef Vec2s UnkArrayDataType2[7]; +// related to the rail positions (only on the minimap?) +class UnkStruct_027e0cf8_08_00 : public AdventureModeManager_1B8_Base { +public: + /* 000 (base) */ + /* 024 */ UnkArrayDataType2 mUnk_024; + /* 040 */ UnkArrayDataType2 mUnk_040; + /* 05C */ UnkArrayDataType2 mUnk_05C; + /* 078 */ UnkArrayDataType2 mUnk_078; + /* 094 */ UnkArrayDataType2 mUnk_094; + /* 0B0 */ UnkArrayDataType2 mUnk_0B0; + /* 0CC */ UnkArrayDataType2 mUnk_0CC; + /* 0E8 */ UnkArrayDataType2 mUnk_0E8; + /* 104 */ UnkArrayDataType2 mUnk_104; + /* 120 */ UnkArrayDataType2 mUnk_120; + /* 13C */ UnkArrayDataType2 mUnk_13C; + /* 158 */ UnkArrayDataType2 mUnk_158; + /* 174 */ Vec2s mUnk_174; + /* 178 */ Vec2s *mUnk_178[4][4]; + /* 1B8 */ + + UnkStruct_027e0cf8_08_00(u8 bgType); + ~UnkStruct_027e0cf8_08_00(); + + // overlay 1 + void func_ov001_020bfb20(); + + // overlay 24 + void func_ov024_020d3adc(Vec2s *param1, unk32 param2, unk32 param3, u8 param4, bool param5, u8 param6); + unk32 func_ov024_020d3bfc(UnkArrayDataType2 param1, unk32 param2, unk32 param3, bool param4); + + static bool func_ov024_020d3900(Vec2s *param1, fx32 *param2, fx32 *param3, unk32 param4, unk32 param5); + static bool func_ov024_020d3914(Vec2s *param1, Vec2s *param2, Vec2s *param3); + static bool func_ov024_020d3970(Vec2s *param1, fx32 *param2, fx32 *param3, unk32 param4, unk32 param5); + static bool func_ov024_020d39fc(Vec2s *param1, unk32 param2, unk32 param3); + static bool func_ov024_020d3a34(Vec2s *param1, unk32 param2, unk32 param3); + static void func_ov024_020d3a60(Vec2s *param1, Vec2s *param2, unk32 param3, unk32 param4); + static bool func_ov024_020d3a8c(Vec2s *param1); +}; + class UnkStruct_027e0cf8_08 { public: - /* 000 */ STRUCT_PAD(0x00, 0x26C); + /* 000 */ UnkStruct_027e0cf8_08_00 *mUnk_000; + /* 004 */ unk32 mUnk_004; + /* 008 */ unk32 mUnk_008; + /* 00C */ unk32 mUnk_00C; + /* 010 */ UnkArrayDataType1 mUnk_010; + /* 13C */ UnkArrayDataType1 mUnk_13C; + /* 268 */ u16 mUnk_268; + /* 26A */ u8 mUnk_26A; + /* 26B */ unk8 mUnk_26B; + /* 26C */ UnkStruct_027e0cf8_08(); ~UnkStruct_027e0cf8_08(); + void func_ov024_020d32b4(unk8 *param1); void func_ov024_020d32d8(); void func_ov024_020d32e8(Vec2s *param1); - void func_ov024_020d3324(void *param1); - void func_ov024_020d3348(void *param1, unk32 param2, u16 param3, unk32 param4, unk32 param5); + void func_ov024_020d3324(UnkDataStruct4 *param1); + void func_ov024_020d3348(UnkDataStruct4 *param1, unk32 param2, u16 param3, unk32 param4, unk32 param5); + void func_ov024_020d336c(UnkDataStruct4 *param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5); void func_ov024_020d340c(); - void func_ov024_020d341c(unk32 param1); + void func_ov024_020d341c(bool param1); + void func_ov024_020d3428(const UnkDataStruct4 *param1, unk32 param2, u8 param3); + void func_ov024_020d34a0(UnkArrayDataType1 param1, u8 param2); + void func_ov024_020d351c(unk32 param1, unk32 param2, unk32 *param3, unk32 param4, u8 param5); + + static u8 func_ov024_020d3158(SceneIndex sceneIndex); +}; + +class UnkStruct_027e0cf8_0C_00 { +public: + /* 00 */ UnkStruct_ov019_020d24c8_28_258_00 mUnk_00; + /* 08 */ unk32 mUnk_08; + /* 0C */ Vec2p mUnk_0C; + /* 14 */ unk16 mUnk_14; + /* 16 */ unk16 mUnk_16; + /* 18 */ bool mUnk_18; + /* 19 */ bool mUnk_19; + /* 1A */ bool mUnk_1A; + /* 1B */ bool mUnk_1B; + /* 1C */ + + UnkStruct_027e0cf8_0C_00() {} + + void func_ov024_020cff1c(); }; class UnkStruct_027e0cf8_0C { public: - /* 000 */ STRUCT_PAD(0x00, 0x170); + /* 000 */ UnkStruct_027e0cf8_0C_00 mUnk_000[12]; + /* 150 */ UnkStruct_ov019_020d24c8_28_258_00 mUnk_150; + /* 158 */ unk32 mUnk_158; + /* 15C */ UnkStruct_ov019_020d24c8_28_258_00 mUnk_15C; + /* 164 */ unk32 mUnk_164; + /* 168 */ Vec2s mUnk_168; + /* 16C */ unk32 mUnk_16C; + /* 170 */ UnkStruct_027e0cf8_0C(); ~UnkStruct_027e0cf8_0C(); - void func_ov024_020cff8c(void *param1, Vec2s *param2); + void func_ov024_020cff8c(UnkDataStruct4 *param1, Vec2s *param2); void func_ov024_020d0004(); - void func_ov024_020d02e0(); - void func_ov024_020d0340(); + void func_ov024_020d002c(const UnkDataStruct4 *param1); + void func_ov024_020d01c0(const UnkDataStruct4 *param1); + bool func_ov024_020d02e0(fx32 *pX, fx32 *pZ, s32 param3); + bool func_ov024_020d0340(Vec2s *param1, unk32 param2); void func_ov024_020d03f8(Vec2s *param1); - void func_ov024_020d041c(Vec2s *param1); - void func_ov024_020d05d0(unk32 param1, unk32 param2); + s32 func_ov024_020d041c(Vec2s *param1); + void func_ov024_020d05d0(unk32 param1, bool param2); + + static bool func_ov024_020d0510(s16 param1); }; -class UnkStruct_027e0cf8 : AutoInstance { +class UnkStruct_027e0cf8 : public AutoInstance { public: /* 00 */ UnkStruct_027e0cf8_00 *mUnk_00; /* 04 */ UnkStruct_027e0cf8_04 *mUnk_04; @@ -90,14 +200,14 @@ class UnkStruct_027e0cf8 : AutoInstance { void func_ov017_020c397c(); void func_ov017_020c39d4(); - void func_ov024_020c755c(void *param1); - void func_ov024_020c75d0(void *param1, unk32 param2, u16 param3); + void func_ov024_020c755c(UnkDataStruct4 *param1); + void func_ov024_020c75d0(UnkDataStruct4 *param1, unk32 param2, u16 param3); void func_ov024_020c7724(); void func_ov024_020c7750(); void func_ov024_020c7780(); - void func_ov024_020c77b0(unk32 param1); - void func_ov024_020c77c0(); - void func_ov024_020c77d0(); + void func_ov024_020c77b0(bool param1); + bool func_ov024_020c77c0(fx32 *pX, fx32 *pZ, s32 param3); + bool func_ov024_020c77d0(Vec2s *param1, unk32 param2); void func_ov024_020c77e0(Vec2s *param1); void func_ov024_020c7804(Vec2s *param1); void func_ov024_020c7828(unk32 param1); @@ -112,4 +222,28 @@ class UnkStruct_027e0cf8 : AutoInstance { static UnkStruct_027e0cf8 *Create(); }; +struct UnkStruct_ov024_020d8098 { + /* 00 */ s16 mUnk_00; + /* 02 */ s16 mStationSceneIdx; + /* 04 */ Vec2sb mUnk_04; + /* 06 */ s16 mUnk_06; + /* 08 */ u16 mUnk_08; + /* 0A */ bool mUnk_0A; + /* 0B */ bool mUnk_0B; + /* 0C */ +}; + +struct UnkStruct_ov024_020d7454 { + /* 00 */ s16 mSceneIndex; + /* 02 */ unk16 mUnk_02; + /* 04 */ u16 mUnk_04; + /* 06 */ AdventureFlag_Half mAdvFlag; + /* 08 */ bool mUnk_08; + /* 09 */ bool mUnk_09; + /* 0A */ bool mUnk_0A; + /* 0B */ unk8 mUnk_0B; + /* 0C */ unk16 mUnk_0C; + /* 0E */ +}; + extern UnkStruct_027e0cf8 *data_027e0cf8; diff --git a/include/Unknown/UnkStruct_027e0d00.hpp b/include/Unknown/UnkStruct_027e0d00.hpp index a8068c9ed..ab1afb599 100644 --- a/include/Unknown/UnkStruct_027e0d00.hpp +++ b/include/Unknown/UnkStruct_027e0d00.hpp @@ -3,9 +3,28 @@ #include "global.h" #include "types.h" +struct UnkStruct_027e0d00_20 { + /* 00 */ STRUCT_PAD(0x00, 0x50); + /* 50 */ void *mUnk_50; // pointer to MDL0 (from NSBMD) + /* 54 */ STRUCT_PAD(0x54, 0xB0); + /* B0 */ unk32 mUnk_B0; +}; + class UnkStruct_027e0d00 : public AutoInstance { public: - /* 00 */ unk32 mUnk_00; + /* 000 */ unk32 mUnk_000[4]; + /* 010 */ unk32 mUnk_010[4]; + /* 020 */ UnkStruct_027e0d00_20 *mUnk_020[4][8]; + /* 0A0 */ unk32 mUnk_0A0[4]; + /* 0B0 */ unk32 mUnk_0B0[12]; + /* 0E0 */ unk32 mUnk_0E0; + /* 0E4 */ unk32 mUnk_0E4[4]; + /* 0F4 */ unk32 mUnk_0F4; + /* 0F8 */ unk32 mUnk_0F8; + /* 0FC */ unk32 mUnk_0FC; + /* 100 */ unk32 mUnk_100; + /* 104 */ unk32 mUnk_104; + /* 108 */ UnkStruct_027e0d00(); ~UnkStruct_027e0d00(); diff --git a/include/Unknown/UnkStruct_ov000_0208f820.hpp b/include/Unknown/UnkStruct_ov000_0208f820.hpp index f7235e78c..e2577a699 100644 --- a/include/Unknown/UnkStruct_ov000_0208f820.hpp +++ b/include/Unknown/UnkStruct_ov000_0208f820.hpp @@ -26,8 +26,10 @@ class UnkStruct_ov000_0208f820_14 { class UnkStruct_PlayerGet_64 { public: /* 00 */ unk32 mUnk_00; - /* 3C */ unk32 mUnk_3C; - /* 40 */ u16 mUnk_40; + /* 04 */ unk32 mUnk_04; + /* 08 */ u16 mUnk_08; + /* 0A */ unk16 mUnk_0A; + /* 0C */ UnkStruct_PlayerGet_64(void *param1, unk32 param2); ~UnkStruct_PlayerGet_64(); @@ -48,12 +50,10 @@ class UnkStruct_PlayerGet_64_2 { class UnkStruct_ov000_0208f820_28_98 { public: /* 00 */ unk32 mUnk_00; - /* 00 */ unk32 mUnk_04; - /* 00 */ u16 mUnk_08; + /* 04 */ unk32 mUnk_04; + /* 08 */ u16 mUnk_08; /* 0C */ STRUCT_PAD(0x0C, 0x38); /* 38 */ UnkStruct_PlayerGet_64 mUnk_38; - // /* 3C */ unk32 mUnk_3C; - // /* 40 */ u16 mUnk_40; void func_ov093_0216f76c(VecFx32 *param1, unk32 param2); }; diff --git a/include/Unknown/UnkStruct_ov024_020d86a0.hpp b/include/Unknown/UnkStruct_ov024_020d86a0.hpp index 742a22ed4..bea98b90b 100644 --- a/include/Unknown/UnkStruct_ov024_020d86a0.hpp +++ b/include/Unknown/UnkStruct_ov024_020d86a0.hpp @@ -1,28 +1,52 @@ #pragma once +#include "Unknown/UnkStruct_0204a060.hpp" #include "global.h" #include "types.h" +class UnkStruct_ov024_020d86a0; + +class UnkStruct_ov024_020d86a0_00 : public UnkStruct_0204a060_Base { +public: + /* 00 (base) */ + /* 24 */ UnkStruct_ov024_020d86a0 *mpInstance; + /* 28 */ + + UnkStruct_ov024_020d86a0_00(UnkStruct_ov024_020d86a0 *pInstance); + + // data_ov024_020d8210 + /* 00 */ virtual ~UnkStruct_ov024_020d86a0_00() override; + /* 0C */ virtual bool vfunc_0C(void) override; +}; + class UnkStruct_ov024_020d86a0 : public AutoInstance { public: - /* 00 */ unk32 mUnk_00; + /* 00 */ UnkStruct_ov024_020d86a0_00 *mUnk_00; /* 04 */ unk32 mUnk_04; /* 08 */ unk32 mUnk_08; /* 0C */ unk8 mUnk_0C; /* 0D */ unk8 mUnk_0D; /* 0E */ unk8 mUnk_0E; /* 0F */ bool mUnk_0F; + /* 10 */ unk8 mUnk_10; + /* 11 */ bool mUnk_11; + /* 14 */ UnkStruct_ov024_020d86a0(); ~UnkStruct_ov024_020d86a0(); + // overlay 1 void func_ov001_020bd818(); + // overlay 17 + bool func_ov017_020c3180(); + void func_ov017_020c31cc(); + + // overlay 24 void func_ov024_020d167c(); + static UnkStruct_ov024_020d86a0 *Create(); static void Destroy(); - static void SetInstance(UnkStruct_ov024_020d86a0 *pInstance); - static bool ClearInstance(); }; extern UnkStruct_ov024_020d86a0 *data_ov024_020d86a0; diff --git a/include/files.h b/include/files.h index df1ef9450..062c06713 100644 --- a/include/files.h +++ b/include/files.h @@ -3,10 +3,23 @@ #include "Map/MapObjectId.hpp" #include "types.h" -enum FileType { +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef u32 FileType; +enum FileType_ { FileType_ZOB = 'BLOZ', + FileType_ZTB = '1BTZ', }; +typedef struct FileInfos { + /* 00 */ void *pFile; + /* 04 */ size_t size; +} FileInfos; + // .zob typedef struct ZeldaObjectList { /* 00 */ FileType type; // always "ZOLB" @@ -17,3 +30,98 @@ typedef struct ZeldaObjectList { /* 0E */ unk16 unk_0e; /* 10 */ u32 aIdList[]; // actor id or map object id } ZeldaObjectList; + +// .ztb +typedef u32 ZTBSectionType; +enum ZTBSectionType_ { + ZTBSectionType_GRDB = 'GRDB', // grid block? + ZTBSectionType_GRRL = 'GRRL', // grid rail? + ZTBSectionType_STAB = 'STAB', // station block + ZTBSectionType_LDMK = 'LDMK', // land mark? +}; + +typedef struct ZTBHeader { + /* 00 */ u32 magic; // 'MTRB' + /* 04 */ FileType type; // always "ZTB1" + /* 08 */ size_t nSize; + /* 0C */ u32 nEntries; + /* 10 */ u8 unused[0x10]; +} ZTBHeader; // size = 0x20 + +typedef struct ZTBSectionHeader { + /* 00 */ ZTBSectionType type; + /* 04 */ size_t nSize; + /* 08 */ union { + u16 nEntries; + struct { + u8 nEntries1; + u8 nEntries2; + }; + }; + /* 0A */ u8 unk_0A; + /* 0B */ u8 unk_0B; +} ZTBSectionHeader; // size = 0x0C + +typedef struct ZTBEntryGRDB { + /* 00 */ u8 unk_00; + /* 01 */ u8 unk_01; + /* 02 */ u8 unk_02; + /* 03 */ u8 unk_03; +} ZTBEntryGRDB; // size = 0x04 + +typedef struct ZTBEntryGRRL { + /* 00 */ u8 unk_00; + /* 01 */ u8 unk_01; + /* 02 */ u8 unk_02; + /* 03 */ u8 unk_03; + /* 04 */ u8 unk_04; + /* 05 */ u8 unk_05; + /* 06 */ u16 unk_06; +} ZTBEntryGRRL; // size = 0x08 + +typedef struct ZTBEntrySTAB { + /* 00 */ char sceneName[16]; + /* 10 */ u8 unk_10; + /* 11 */ u8 unk_11; + /* 12 */ u8 unk_12; + /* 13 */ u8 unk_13; +} ZTBEntrySTAB; // size = 0x14 + +typedef struct ZTBEntryLDMK { + /* 00 */ u8 unk_00; + /* 01 */ u8 unk_01; + /* 02 */ u8 unk_02; + /* 03 */ u8 unk_03; +} ZTBEntryLDMK; // size = 0x04 + +typedef struct ZTBSectionGRDB { + /* 00 */ ZTBSectionHeader header; + /* 0C */ ZTBEntryGRDB entries[]; +} ZTBSectionGRDB; + +typedef struct ZTBSectionGRRL { + /* 00 */ ZTBSectionHeader header; + /* 0C */ ZTBEntryGRRL entries[]; +} ZTBSectionGRRL; + +typedef struct ZTBSectionSTAB { + /* 00 */ ZTBSectionHeader header; + /* 0C */ ZTBEntrySTAB entries[]; +} ZTBSectionSTAB; + +typedef struct ZTBSectionLDMK { + /* 00 */ ZTBSectionHeader header; + /* 0C */ ZTBEntryLDMK entries[]; +} ZTBSectionLDMK; + +struct UnkDataStruct4; + +extern BOOL ZTB_ParseFile(FileInfos *pFileInfos, UnkDataStruct4 *pDst); +extern BOOL ZTB_ParseGRDB(FileInfos *pFileInfos, UnkDataStruct4 *pDst, ZTBSectionGRDB *pGRDB); +extern BOOL ZTB_ParseGRRL(FileInfos *pFileInfos, UnkDataStruct4 *pDst, ZTBSectionGRRL *pGRRL); +extern BOOL ZTB_ParseSTAB(FileInfos *pFileInfos, UnkDataStruct4 *pDst, ZTBSectionSTAB *pSTAB); +extern BOOL ZTB_ParseLDMK(FileInfos *pFileInfos, UnkDataStruct4 *pDst, ZTBSectionLDMK *pLDMK); + +#ifdef __cplusplus +} // extern "C" +#endif diff --git a/include/flags.h b/include/flags.h index 585172ea0..3bffe23f2 100644 --- a/include/flags.h +++ b/include/flags.h @@ -20,6 +20,10 @@ #define SET_FLAG_ALT(arr, pos) ((arr)[(pos) >> 5] |= 1 << ((0x1F - ((pos) & 0x1F)))) #define UNSET_FLAG_ALT(arr, pos) ((arr)[(pos) >> 5] &= ~(1 << ((0x1F - ((pos) & 0x1F))))) +#define GET_FLAG_ALT2(arr, a, b) (((arr)[((u32) (a))] & (1 << (b))) != 0) +#define SET_FLAG_ALT2(arr, a, b) ((arr)[((u32) (a))] |= 1 << (b)) +#define UNSET_FLAG_ALT2(arr, a, b) ((arr)[((u32) (a))] &= ~(1 << (b))) + //! TODO: improve or remove? idk #define VA_NARGS_IMPL(_1, _2, _3, _4, N, ...) N #define VA_NARGS(...) VA_NARGS_IMPL(__VA_ARGS__, 4, 3, 2, 1) diff --git a/include/global.h b/include/global.h index 9c5d8bc1e..596fd0fd1 100644 --- a/include/global.h +++ b/include/global.h @@ -58,4 +58,11 @@ }; \ void _VTABLE_PAD_##name::dummy() {} +#define DELETE(ptr) \ + { \ + delete ptr; \ + ptr = NULL; \ + } \ + (void) 0 + #endif diff --git a/include/math.hpp b/include/math.hpp index 6be3023c5..59cd4a0b1 100644 --- a/include/math.hpp +++ b/include/math.hpp @@ -59,6 +59,22 @@ static inline void Vec2s_Add(const Vec2s *a, const Vec2s *b, Vec2s *dst) { dst->y = y; } +//! TODO: probably fake +static inline void Vec2s_Add2(const Vec2s *a, Vec2s *dst) { + s16 x1, y1, x2, y2; + + x1 = a->x; + x2 = dst->x; + y2 = dst->y; + y1 = a->y; + + x2 += x1; + dst->x = x2; + + dst->y = (s16) dst->y; + dst->y += y1; +} + static inline void Vec2s_Sub(const Vec2s *a, const Vec2s *b, Vec2s *dst) { s16 x = a->x - b->x; s16 y = a->y - b->y; @@ -306,3 +322,23 @@ extern "C" static inline Vec2s *Vec2s_GetCopy(Vec2s *src) { vec.y = src->y; return &vec; } + +union Vec2sb { + struct { + /* 0 */ s8 x; + /* 2 */ s8 y; + /* 4 */ + }; + s8 coords[2]; + + void operator=(const Vec2sb &from) { + this->x = from.x; + this->y = from.y; + } + + Vec2sb() {} + Vec2sb(u8 X, u8 Y) { + x = X; + y = Y; + } +}; diff --git a/libs/nitro/include/nitro/math.h b/libs/nitro/include/nitro/math.h index 185350d81..37aa8f2e5 100644 --- a/libs/nitro/include/nitro/math.h +++ b/libs/nitro/include/nitro/math.h @@ -73,6 +73,14 @@ typedef union Vec2p { #define Vec2p_Sub(a, b, dst) Vec2_Sub(Vec2p, a, b, dst) #define Vec2p_Set(a, dst) Vec2_Set(Vec2p, a, dst) #define Vec2p_Clear(dst) Vec2_Clear(fx32, dst) +static inline void Vec2p_Copy(const Vec2p *src, Vec2p *dst) { +#if __MWERKS__ + dst->coords = src->coords; +#else + dst->x = src->x; + dst->y = src->y; +#endif +} typedef struct Mat2p { /* 00 */ Vec2p xColumn; diff --git a/src/000_Second/Actor/ActorUnkEFIK.cpp b/src/000_Second/Actor/ActorUnkEFIK.cpp index 75cf5318b..0d37edb24 100644 --- a/src/000_Second/Actor/ActorUnkEFIK.cpp +++ b/src/000_Second/Actor/ActorUnkEFIK.cpp @@ -67,7 +67,7 @@ ARM void ActorUnkEFIK::vfunc_20() { bStack_40[1] = k; if (pUVar5->func_ov000_02080180(bStack_40) == 0x38) { - u16 random = gRandom.Next32(0, 6); + u16 random = gRandom.Next32(6); if (random == 0) { VecFx32 vec; diff --git a/src/000_Second/Actor/ActorUnkSWOB.cpp b/src/000_Second/Actor/ActorUnkSWOB.cpp index 0b40e98b1..6a8be20aa 100644 --- a/src/000_Second/Actor/ActorUnkSWOB.cpp +++ b/src/000_Second/Actor/ActorUnkSWOB.cpp @@ -100,9 +100,9 @@ ARM void ActorUnkSWOB::func_ov000_0209aa30(void) { if (gpActorManager->func_01fff3b4(this->mUnk_A4[i].mUnk_00) == NULL) { this->mUnk_A4[i].mUnk_00 = 0; - vec.x = INT_TO_FX32(gRandom.Next32(0, 11) - 5); + vec.x = INT_TO_FX32(gRandom.Next32(11) - 5); vec.y = 0; - vec.z = INT_TO_FX32(gRandom.Next32(0, 11) - 5); + vec.z = INT_TO_FX32(gRandom.Next32(11) - 5); VecFx32_Add(&vec, &vec2, &vec); diff --git a/src/000_Second/Item/TreasureManager.cpp b/src/000_Second/Item/TreasureManager.cpp index 1d7adf2ec..0a58c56af 100644 --- a/src/000_Second/Item/TreasureManager.cpp +++ b/src/000_Second/Item/TreasureManager.cpp @@ -174,7 +174,7 @@ ARM void TreasureManager::func_ov000_020a9cbc(TreasureType type, s32 amount) { } ARM u32 TreasureManager::func_ov000_020a9cfc(u8 *param1, u8 param2) { - s32 uVar2 = gRandom.Next32(0, 100); + s32 uVar2 = gRandom.Next32(100); s32 iVar1 = 0; for (int i = 0; i < param2; i++) { @@ -203,7 +203,7 @@ ARM unk32 TreasureManager::func_ov000_020a9d78(unk32 param1) { } u32 var_r3; - var_r3 = gRandom.ConditionalNext32(temp_r4); + var_r3 = gRandom.Next32(temp_r4); return data_ov000_020afec4[var_r3]; } @@ -222,7 +222,7 @@ ARM unk32 TreasureManager::func_ov000_020a9e14(unk32 param1) { } u32 var_r3; - var_r3 = gRandom.ConditionalNext32(temp_r4); + var_r3 = gRandom.Next32(temp_r4); return data_ov000_020afeb0[var_r3]; } @@ -241,12 +241,12 @@ ARM unk32 TreasureManager::func_ov000_020a9eb0(unk32 param1) { } u32 var_r3; - var_r3 = gRandom.ConditionalNext32(temp_r4); + var_r3 = gRandom.Next32(temp_r4); return data_ov000_020afea0[var_r3]; } ARM unk32 TreasureManager::func_ov000_020a9f4c(unk32 param1) { - if ((s32) gRandom.Next32(0, 100) < 80) { + if ((s32) gRandom.Next32(100) < 80) { return TreasureManager::func_ov000_020a9eb0(param1); } @@ -264,7 +264,7 @@ ARM unk32 TreasureManager::func_ov000_020a9f4c(unk32 param1) { } u32 var_r3; - var_r3 = gRandom.ConditionalNext32(temp_r4); + var_r3 = gRandom.Next32(temp_r4); return data_ov000_020afe98[var_r3]; } diff --git a/src/000_Second/MapObject/MapObjectProfile.cpp b/src/000_Second/MapObject/MapObjectProfile.cpp index 96a9b742e..e0813716b 100644 --- a/src/000_Second/MapObject/MapObjectProfile.cpp +++ b/src/000_Second/MapObject/MapObjectProfile.cpp @@ -211,8 +211,7 @@ ARM void MapObjectProfile_Derived1::vfunc_0C() { ARM void MapObjectProfile_Derived1::vfunc_10() { for (MapObjectProfile_Derived2_20 **ptr = this->mUnk_20; ptr != &this->mUnk_20[ARRAY_LEN(this->mUnk_20)]; ptr++) { if (*ptr != NULL) { - delete *ptr; - *ptr = NULL; + DELETE(*ptr); } } } diff --git a/src/000_Second/MapObject/MapObjectProfile_Derived2_20.cpp b/src/000_Second/MapObject/MapObjectProfile_Derived2_20.cpp index 3b7d5eb7c..d5a1bb80d 100644 --- a/src/000_Second/MapObject/MapObjectProfile_Derived2_20.cpp +++ b/src/000_Second/MapObject/MapObjectProfile_Derived2_20.cpp @@ -10,8 +10,8 @@ unk32 func_02012fa8(const char *); ARM MapObjectProfile_Derived2_20::MapObjectProfile_Derived2_20(MapObjectId mapObjId2) : MapObjectProfile_Derived2_20_Base("MapObj", (const char *) &mUnk_94, (const char *) &mUnk_94, (const char *) &mUnk_94, 0, 0), - unk_94(0), - unk_98(0), + unk_94(L'\0'), + unk_98(L'\0'), mUnk_B0(false), mUnk_B1(0) { func_02015ea8(mapObjId2, &this->mUnk_94); diff --git a/src/001_SceneInit/Actor/ActorManager_001.cpp b/src/001_SceneInit/Actor/ActorManager_001.cpp index 6be12ef53..77f1ea7af 100644 --- a/src/001_SceneInit/Actor/ActorManager_001.cpp +++ b/src/001_SceneInit/Actor/ActorManager_001.cpp @@ -16,8 +16,6 @@ void func_ov001_020ba59c(void *); void func_ov021_020f8818(); void func_ov031_020ea100(); void func_ov071_0215e8d4(); -unk32 func_01ffd3b0(); -unk32 func_01ffd3d8(); } struct UnkStruct_ov000_020ab1ac { @@ -120,7 +118,7 @@ THUMB void ActorManager::func_ov001_020bb018(UnkStruct_func_ov001_020bb018_param if (data_027e09a4->mUnk_60 != 2) { unk32 iVar5; - if (func_01ffd3b0() != 0) { + if (data_027e09a4->IsLand() != 0) { iVar5 = data_027e09a4->mUnk_00.mSceneIndex; if (iVar5 == SceneIndex_f_rabbit) { @@ -186,7 +184,7 @@ THUMB void ActorManager::func_ov001_020bb018(UnkStruct_func_ov001_020bb018_param auStack_64.func_ov000_02059270(0x32, "zeldahit", 0x29200000); auStack_64.func_ov000_02059270(0x33, "zeldatarget", 0x2D200000); } - } else if (func_01ffd3d8() != 0) { + } else if (data_027e09a4->IsTrain()) { UnkStruct_StackTitleScreen auStack_78("Npc/Tex.bin", 1); auStack_78.func_ov000_02059270(0x12, "rupy0", 0x2D200000); auStack_78.func_ov000_02059288(0x13, "rupy1", 0x12); @@ -223,7 +221,7 @@ THUMB void ActorManager::func_ov001_020bb414(ActorManager *instance) { THUMB void ActorManager::func_ov001_020bb488() { if (data_027e09a4->IsNotCutscene()) { - switch (data_027e09a4->func_01ffd400()->mUnk_10) { + switch (data_027e09a4->GetCurrentCourseEntry()->unk_10) { case 0x00: case 0x01: case 0x03: @@ -288,7 +286,7 @@ THUMB void ActorManager::func_ov001_020bb630() { if (iVar4->mUnk_38 != 0) { run_vfunc_08 = true; } else { - if (iVar4->mActorId == ActorId_BSFC && data_027e09a4->func_01ffd400()->mUnk_1B & 0x10) { + if (iVar4->mActorId == ActorId_BSFC && data_027e09a4->GetCurrentCourseEntry()->unk_1B & 0x10) { run_vfunc_08 = true; } } diff --git a/src/001_SceneInit/CargoManager_001.cpp b/src/001_SceneInit/CargoManager_001.cpp index abcd18cf8..64e6849c7 100644 --- a/src/001_SceneInit/CargoManager_001.cpp +++ b/src/001_SceneInit/CargoManager_001.cpp @@ -12,7 +12,7 @@ CargoManager::CargoManager() { CargoManager::~CargoManager() {} void CargoManager::func_ov001_020bf830() { - if (this->mCargo.mAmount == 0 && !data_027e09a4->func_01ffd3d8()) { + if (this->mCargo.mAmount == 0 && !data_027e09a4->IsTrain()) { this->mCargo.mType = CargoType_None; } diff --git a/src/001_SceneInit/Game/AdventureModeManager_001.cpp b/src/001_SceneInit/Game/AdventureModeManager_001.cpp index 12f08078e..c698af9d7 100644 --- a/src/001_SceneInit/Game/AdventureModeManager_001.cpp +++ b/src/001_SceneInit/Game/AdventureModeManager_001.cpp @@ -105,7 +105,7 @@ void AdventureModeManager::vfunc_14() { data_027e09a4->func_ov000_0207056c(); UnkStruct_027e0cf8::Create(); - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { this->mUnk_004.func_ov001_020bd734(&data_ov001_020c276c); if (data_027e09a4->IsNotCutscene()) { @@ -122,7 +122,7 @@ void AdventureModeManager::vfunc_14() { } } - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { if (DSProt_DetectEmulator(AdventureModeManager::func_ov001_020c0194) == 0) { AdventureModeManager::func_ov001_020c0104(); } @@ -199,32 +199,15 @@ void AdventureModeManager::vfunc_14() { } void AdventureModeManager::vfunc_18() { - delete this->mUnk_1B8; - this->mUnk_1B8 = NULL; - - delete this->mUnk_160; - this->mUnk_160 = NULL; - - delete this->mUnk_190; - this->mUnk_190 = NULL; - - delete this->mUnk_18C; - this->mUnk_18C = NULL; - - delete this->mUnk_180; - this->mUnk_180 = NULL; - - delete this->mUnk_17C; - this->mUnk_17C = NULL; - - delete this->mUnk_178; - this->mUnk_178 = NULL; - - delete this->mUnk_174; - this->mUnk_174 = NULL; - - delete this->mUnk_184; - this->mUnk_184 = NULL; + DELETE(this->mUnk_1B8); + DELETE(this->mUnk_160); + DELETE(this->mUnk_190); + DELETE(this->mUnk_18C); + DELETE(this->mUnk_180); + DELETE(this->mUnk_17C); + DELETE(this->mUnk_178); + DELETE(this->mUnk_174); + DELETE(this->mUnk_184); AdventureModeManager::func_ov001_020c083c(); if (data_ov024_020d8698 != NULL) { @@ -232,54 +215,37 @@ void AdventureModeManager::vfunc_18() { this->mUnk_1B4 = false; } - if (data_027e09a4->func_01ffd3d8()) { - delete this->mUnk_16C; - this->mUnk_16C = NULL; - - delete this->mUnk_19C; - this->mUnk_19C = NULL; - - delete this->mUnk_164; - this->mUnk_164 = NULL; + if (data_027e09a4->IsTrain()) { + DELETE(this->mUnk_16C); + DELETE(this->mUnk_19C); + DELETE(this->mUnk_164); } else { if (data_027e09a4->IsCutscene()) { AdventureModeManager::func_ov001_020c0824(); } - delete this->mUnk_1B0; - this->mUnk_1B0 = NULL; + DELETE(this->mUnk_1B0); this->mUnk_1B5 = false; if (this->mUnk_168 != NULL) { - delete this->mUnk_168; - this->mUnk_168 = NULL; + DELETE(this->mUnk_168); } - delete this->mUnk_188; - this->mUnk_188 = NULL; + DELETE(this->mUnk_188); AdventureModeManager::func_ov001_020c0854(); - delete this->mUnk_1BC; - this->mUnk_1BC = NULL; - - delete this->mUnk_198; - this->mUnk_198 = NULL; - - delete this->mUnk_194; - this->mUnk_194 = NULL; + DELETE(this->mUnk_1BC); + DELETE(this->mUnk_198); + DELETE(this->mUnk_194); if (gOverlayManager.mLoadedOverlays[8] == OverlayIndex_Village) { - delete this->mUnk_1A0; - this->mUnk_1A0 = NULL; - - delete this->mUnk_1A4; - this->mUnk_1A4 = NULL; + DELETE(this->mUnk_1A0); + DELETE(this->mUnk_1A4); } if (data_027e09a4->IsCutscene()) { - delete this->mUnk_1A8; - this->mUnk_1A8 = NULL; + DELETE(this->mUnk_1A8); } } @@ -295,7 +261,7 @@ void AdventureModeManager::vfunc_1C() { data_ov024_020d8698->func_ov024_020cd094(); data_ov024_020d8698->func_ov024_020cd150(); - if (!data_027e09a4->func_01ffd3d8()) { + if (!data_027e09a4->IsTrain()) { this->mUnk_1B0->func_ov031_0210fad0(); } } diff --git a/src/001_SceneInit/Item/ItemManager_001.cpp b/src/001_SceneInit/Item/ItemManager_001.cpp index 990569d7d..6ab369a3c 100644 --- a/src/001_SceneInit/Item/ItemManager_001.cpp +++ b/src/001_SceneInit/Item/ItemManager_001.cpp @@ -11,8 +11,8 @@ THUMB void ItemManager::func_ov001_020bb9f8() { CourseEntry *pEntry = data_027e09a0->GetCourseEntry(data_027e09a4->mUnk_00.mSceneIndex); - if (pEntry->mSaveCourseIndex < SaveCourseIndex_Max) { - this->mKeyAmount = gSaveManager.mUnk_000->mUnk_36[pEntry->mSaveCourseIndex].mKeyAmount; + if (pEntry->saveCourseIndex < SaveCourseIndex_Max) { + this->mKeyAmount = gSaveManager.mUnk_000->mUnk_36[pEntry->saveCourseIndex].mKeyAmount; } else { this->mKeyAmount = 0; } diff --git a/src/001_SceneInit/UnkStruct_027e0cf8_08_00_001.cpp b/src/001_SceneInit/UnkStruct_027e0cf8_08_00_001.cpp new file mode 100644 index 000000000..73cd3be41 --- /dev/null +++ b/src/001_SceneInit/UnkStruct_027e0cf8_08_00_001.cpp @@ -0,0 +1,75 @@ +#include "Unknown/UnkStruct_027e0cf8.hpp" + +extern s16 data_ov001_020c2750[]; +extern s16 data_ov001_020c275e[]; + +THUMB_BEGIN + +UnkStruct_027e0cf8_08_00::UnkStruct_027e0cf8_08_00(u8 bgType) : + AdventureModeManager_1B8_Base(bgType, true, AdventureModeManager_1B8_Base_1C(0x00, 0x00, 0x100, 0xC0), true, true) { + this->func_ov001_020bfb20(); + + if (bgType == 1) { + this->mUnk_08 = true; + } + + Vec2s *local_58[4][4] = { + {NULL, this->mUnk_024, this->mUnk_040, this->mUnk_05C}, + {this->mUnk_0B0, NULL, this->mUnk_078, this->mUnk_094}, + {this->mUnk_0E8, this->mUnk_104, NULL, this->mUnk_0CC}, + {this->mUnk_120, this->mUnk_13C, this->mUnk_158, NULL}, + }; + + for (int i = 0; i < 4; i++) { + for (int j = 0; j < 4; j++) { + this->mUnk_178[i][j] = local_58[i][j]; + } + } +} + +UnkStruct_027e0cf8_08_00::~UnkStruct_027e0cf8_08_00() {} + +void UnkStruct_027e0cf8_08_00::func_ov001_020bfb20() { + for (int i = 0; i <= ARRAY_LEN(this->mUnk_0CC) - 1; i++) { + this->mUnk_0CC[i].x = data_ov001_020c2750[i]; + this->mUnk_0CC[i].y = data_ov001_020c275e[i]; + } + + for (int i = 0; i <= ARRAY_LEN(this->mUnk_104) - 1; i++) { + this->mUnk_104[i].x = -this->mUnk_0CC[i].x; + this->mUnk_104[i].y = this->mUnk_0CC[i].y; + } + + for (int i = 0; i <= ARRAY_LEN(this->mUnk_05C) - 1; i++) { + this->mUnk_05C[i].x = this->mUnk_0CC[i].x; + this->mUnk_05C[i].y = -this->mUnk_0CC[i].y; + } + + for (int i = 0; i <= ARRAY_LEN(this->mUnk_024) - 1; i++) { + this->mUnk_024[i].x = -this->mUnk_0CC[i].x; + this->mUnk_024[i].y = -this->mUnk_0CC[i].y; + } + + for (int i = 0; i <= ARRAY_LEN(this->mUnk_0E8) - 1; i++) { + this->mUnk_0E8[i].x = 0; + this->mUnk_0E8[i].y = ((i * 12) / 6) - 6; + } + + for (int i = 0; i <= ARRAY_LEN(this->mUnk_13C) - 1; i++) { + this->mUnk_13C[i].x = ((i * 12) / 6) - 6; + this->mUnk_13C[i].y = 0; + } + + for (int i = 0; i <= ARRAY_LEN(this->mUnk_0CC) - 1; i++) { + s32 iVar2 = 6 - i; + + Vec2s_Copy(&this->mUnk_0CC[i], &this->mUnk_158[iVar2]); + Vec2s_Copy(&this->mUnk_104[i], &this->mUnk_078[iVar2]); + Vec2s_Copy(&this->mUnk_05C[i], &this->mUnk_120[iVar2]); + Vec2s_Copy(&this->mUnk_024[i], &this->mUnk_0B0[iVar2]); + Vec2s_Copy(&this->mUnk_0E8[i], &this->mUnk_040[iVar2]); + Vec2s_Copy(&this->mUnk_13C[i], &this->mUnk_094[iVar2]); + } +} + +THUMB_END diff --git a/src/017_CourseExec/CargoManager_017.cpp b/src/017_CourseExec/CargoManager_017.cpp index 472ce26eb..1b9a19403 100644 --- a/src/017_CourseExec/CargoManager_017.cpp +++ b/src/017_CourseExec/CargoManager_017.cpp @@ -83,7 +83,7 @@ bool CargoManager::IsNotUsingTimer(unk32 type) { } void CargoManager::Update() { - if (UnkStruct_027e0ce0::func_ov000_0205c904()->func_ov024_020d3dcc() == 0) { + if (!UnkStruct_027e0ce0::func_ov000_0205c904()->func_ov024_020d3dcc()) { return; } @@ -98,7 +98,7 @@ void CargoManager::Update() { } } else if (type == CargoType_MegaIce || type == CargoType_Fish) { // the timer won't increase if we are in snow realm - if (data_027e09a4->func_01ffd400()->mUnk_1B & 0x20) { + if (data_027e09a4->GetCurrentCourseEntry()->unk_1B & 0x20) { this->mCargo.mDecayTimer++; } } else { @@ -172,7 +172,7 @@ void CargoManager::RemoveAmount(unk32 decr) { } bool CargoManager::func_ov017_020bec9c() { - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { return data_027e0cd8->mUnk_0C->mUnk_160->func_ov026_02106aa8(); } diff --git a/src/019_MainSelect/FileSelectManager.cpp b/src/019_MainSelect/FileSelectManager.cpp index dc9165ca2..20791985b 100644 --- a/src/019_MainSelect/FileSelectManager.cpp +++ b/src/019_MainSelect/FileSelectManager.cpp @@ -18,17 +18,10 @@ ARM FileSelectManager::~FileSelectManager() { data_0204a110.mUnk_DA4 = 1; this->mUnk_004.func_ov001_020bd784(); - delete this->mUnk_164; - this->mUnk_164 = NULL; - - delete this->mUnk_160; - this->mUnk_160 = NULL; - - delete this->mUnk_15C; - this->mUnk_15C = NULL; - - delete this->mUnk_158; - this->mUnk_158 = NULL; + DELETE(this->mUnk_164); + DELETE(this->mUnk_160); + DELETE(this->mUnk_15C); + DELETE(this->mUnk_158); } ARM void FileSelectManager::vfunc_10(unk32 param1, unk32 param2, unk32 param3) { diff --git a/src/019_MainSelect/FileSelectOptions.cpp b/src/019_MainSelect/FileSelectOptions.cpp index 965fe5c56..83ac7074b 100644 --- a/src/019_MainSelect/FileSelectOptions.cpp +++ b/src/019_MainSelect/FileSelectOptions.cpp @@ -111,11 +111,8 @@ ARM FileSelectOptionsManager::FileSelectOptionsManager(void *param1, s32 saveSlo } ARM FileSelectOptionsManager::~FileSelectOptionsManager() { - delete this->mpMicTest; - this->mpMicTest = NULL; - - delete this->mpOptions; - this->mpOptions = NULL; + DELETE(this->mpMicTest); + DELETE(this->mpOptions); } ARM void FileSelectOptionsManager::vfunc_08(Input *pButtons, TouchControl *pTouchControl) { diff --git a/src/019_MainSelect/FileSelectSubScreen.cpp b/src/019_MainSelect/FileSelectSubScreen.cpp index 4eb30738a..b02afaac5 100644 --- a/src/019_MainSelect/FileSelectSubScreen.cpp +++ b/src/019_MainSelect/FileSelectSubScreen.cpp @@ -166,14 +166,14 @@ ARM FileSelect_UnkClass7::FileSelect_UnkClass7() { Random *pRandom = &gRandom; for (int i = 0; i < ARRAY_LEN(this->mUnk_004.mUnk_000); i++) { - this->mUnk_004.mUnk_000[i].func_ov000_0206082c(0x8F, data_ov019_020d1bcc[gRandom.Next32(0, 3)]); + this->mUnk_004.mUnk_000[i].func_ov000_0206082c(0x8F, data_ov019_020d1bcc[gRandom.Next32(3)]); - u16 value = gRandom.ConditionalNext16(this->mUnk_004.mUnk_000[i].func_ov000_02060c28()); + u16 value = gRandom.Next32(this->mUnk_004.mUnk_000[i].func_ov000_02060c28()); this->mUnk_004.mUnk_000[i].func_ov000_02060bd8(value); Vec2us pos; - pos.x = pRandom->Next32(0, SUBSCREEN_WIDTH); - pos.y = pRandom->Next32(0, SUBSCREEN_HEIGHT); + pos.x = pRandom->Next32(SUBSCREEN_WIDTH); + pos.y = pRandom->Next32(SUBSCREEN_HEIGHT); Vec2us *pVec = &this->mUnk_004.mUnk_E10[i]; pVec->x = pos.x; @@ -189,8 +189,8 @@ ARM void FileSelect_UnkClass7::vfunc_00() { this->mUnk_004.mUnk_000[i].func_ov000_02060b64(); Vec2us pos; - pos.x = gRandom.Next32(0, SUBSCREEN_WIDTH); - pos.y = gRandom.Next32(0, SUBSCREEN_HEIGHT); + pos.x = gRandom.Next32(SUBSCREEN_WIDTH); + pos.y = gRandom.Next32(SUBSCREEN_HEIGHT); Vec2us *pVec = &this->mUnk_004.mUnk_E10[i]; pVec->x = pos.x; diff --git a/src/024_MainGame/CreditsEndingType.cpp b/src/024_MainGame/CreditsEndingType.cpp new file mode 100644 index 000000000..d6857ba71 --- /dev/null +++ b/src/024_MainGame/CreditsEndingType.cpp @@ -0,0 +1,11 @@ +#include "types.h" + +static s16 sCreditsEndingType = 2; + +void SetCreditsEndingType(s16 value) { + sCreditsEndingType = value; +} + +s16 GetCreditsEndingType() { + return sCreditsEndingType; +} diff --git a/src/024_MainGame/Game/AdventureModeManager_024.cpp b/src/024_MainGame/Game/AdventureModeManager_024.cpp index be2f67c5b..59e1bc539 100644 --- a/src/024_MainGame/Game/AdventureModeManager_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_024.cpp @@ -37,9 +37,6 @@ void func_02019a74(); unk32 func_ov024_020d5304(unk32 sceneIndex); void func_0200a7b0(unk32 param1, void *param2, void *param3, void *param4, unk32 param5, unk32 param6, unk32 param7, unk32 param8); -void func_ov024_020d24d4(void *); -void func_ov024_020d2538(void *, SceneIndex, unk32, void *); -void func_ov024_020d2518(void *); } extern void *data_ov000_020b64f8; @@ -113,7 +110,7 @@ void AdventureModeManager::func_ov024_020c53e8() { data_0204a110.mUnk_D9C.func_0201c494(1); break; case 3: - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { this->func_ov024_020c5364(); } else { this->func_ov024_020c52f4(); @@ -127,7 +124,7 @@ void AdventureModeManager::func_ov024_020c53e8() { } break; case 4: - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { this->func_ov024_020c5364(); } else { this->func_ov024_020c52f4(); @@ -142,7 +139,7 @@ void AdventureModeManager::func_ov024_020c53e8() { } break; case 5: - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { this->func_ov024_020c537c(); } else { this->func_ov024_020c530c(); @@ -179,7 +176,7 @@ void AdventureModeManager::vfunc_24() { this->mUnk_15C->func_ov017_020c3c64(); } - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { data_ov026_0213f578->func_ov026_020f4844(); } @@ -248,7 +245,7 @@ void AdventureModeManager::vfunc_24() { return; } - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { data_027e0ce0->mUnk_38->mUnk_010->func_ov026_020f4870(); } @@ -395,7 +392,7 @@ void AdventureModeManager::vfunc_24() { } } - if (!data_027e09a4->func_01ffd3d8()) { + if (!data_027e09a4->IsTrain()) { return; } @@ -427,7 +424,7 @@ void AdventureModeManager::vfunc_24() { void AdventureModeManager::func_ov024_020c5cec() { data_ov024_020d8698->func_ov024_020cd420(); - if (!data_027e09a4->func_01ffd3d8()) { + if (!data_027e09a4->IsTrain()) { data_ov024_020d8698->func_ov024_020cd458(data_027e0ce0->mUnk_2C->mEquippedItem, true); if (gOverlayManager.IsPlayerSub() && data_0204a088->mUnk_00 == OverlayIndex_SceneInit) { @@ -450,8 +447,8 @@ bool AdventureModeManager::func_ov024_020c5dac() { !data_027e09b8->func_ov000_020732dc(3) && !data_027e09b8->func_ov000_020732dc(4)) { if (data_0204e5f8.mUnk_00.GetNextTarget() == GetLinkListOrigin(data_0204e5f8.mUnk_00) && (unk_00 != 1 || this->func_ov024_020c69d0() != 0) && - (data_027e09a4->func_01ffd3d8() || this->mUnk_168->func_ov031_0210dfd8() == 0) && - (!data_027e09a4->func_01ffd3d8() || data_ov026_02138d10->func_ov026_020e18fc() != 0)) { + (data_027e09a4->IsTrain() || this->mUnk_168->func_ov031_0210dfd8() == 0) && + (!data_027e09a4->IsTrain() || data_ov026_02138d10->func_ov026_020e18fc() != 0)) { return true; } } @@ -474,7 +471,7 @@ bool AdventureModeManager::func_ov024_020c5ecc() { bool AdventureModeManager::func_ov024_020c5f70() { bool var_r4 = false; - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { var_r4 = true; } else if (data_027e0d34 != NULL) { var_r4 = data_027e0d34->func_ov031_020d97f4(); @@ -487,8 +484,7 @@ bool AdventureModeManager::func_ov024_020c5f70() { if (data_0204e5f8.mUnk_00.GetNextTarget() == GetLinkListOrigin(data_0204e5f8.mUnk_00) && (unk_00 == 1 || unk_00 - 6 <= 1) && (unk_00 != 1 || this->func_ov024_020c69d0() != 0) && (data_ov024_020d8660 == NULL || data_ov024_020d8660->mUnk_00 == NULL) && - (data_027e09a4->func_01ffd3d8() || this->mUnk_168->func_ov031_0210dfd8() == 0) && - !data_027e09a4->IsDarkRealm()) { + (data_027e09a4->IsTrain() || this->mUnk_168->func_ov031_0210dfd8() == 0) && !data_027e09a4->IsDarkRealm()) { return true; } } @@ -500,7 +496,7 @@ bool AdventureModeManager::func_ov024_020c5f70() { bool AdventureModeManager::func_ov024_020c60f4() { bool var_r4 = false; - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { var_r4 = true; } else if (data_027e0d34 != NULL) { var_r4 = data_027e0d34->func_ov031_020d97e4(); @@ -523,7 +519,7 @@ bool AdventureModeManager::func_ov024_020c623c() { u32 scene = data_027e09a4->mUnk_00.mSceneIndex; if ((gOverlayManager.IsMapA6() && ActorUnkTUTO::func_ov037_02120a64() != 0) || - (data_027e09a4->func_01ffd400()->mUnk_10 == 6 && scene == SceneIndex_f_trnnpc) || + (data_027e09a4->GetCurrentCourseEntry()->unk_10 == 6 && scene == SceneIndex_f_trnnpc) || (data_ov024_020d8660 != NULL && data_ov024_020d8660->mUnk_00 != NULL) || (scene - SceneIndex_b_last1 <= 3)) { return false; } @@ -667,7 +663,7 @@ void AdventureModeManager::func_ov024_020c66c0() { void AdventureModeManager::func_ov024_020c671c() { this->func_ov024_020c6770(this->mUnk_1C4.sceneIndex, this->mUnk_1C4.unk_04, 1, this->mUnk_1C4.unk_06); - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { data_027e0ce0->mUnk_38->mUnk_158->func_ov026_020dc2d0(); } } @@ -675,7 +671,7 @@ void AdventureModeManager::func_ov024_020c671c() { void AdventureModeManager::func_ov024_020c6770(SceneIndex sceneIndex, u8 param2, unk16 param3, unk16 param4) { this->func_ov024_020c6514(sceneIndex, param2, param3, param4); - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { data_027e0cf8->func_ov024_020c77b0(1); } else { data_027e0cf8->func_ov024_020c77b0(0); @@ -710,15 +706,14 @@ void AdventureModeManager::func_ov024_020c6840(SceneIndex sceneIndex) { { UnkDataStruct3 uStack_e8(0x1770); - func_ov024_020d24d4(&uStack_e8.mUnk_04); - func_ov024_020d2538(&uStack_e8.mUnk_04, sceneIndex, 0, uStack_e8.mUnk_00.unk_00); + uStack_e8.mUnk_04.func_ov024_020d2538(sceneIndex, 0, uStack_e8.mUnk_00.unk_00); data_027e0cf8->func_ov024_020c755c(&uStack_e8.mUnk_04); - func_ov024_020d2518(&uStack_e8.mUnk_04); + uStack_e8.mUnk_04.func_ov024_020d2518(); } } -void AdventureModeManager::func_ov024_020c68d4() { - data_027e0cf8->func_ov024_020c77d0(); +void AdventureModeManager::func_ov024_020c68d4(Vec2s *param1, unk32 param2) { + data_027e0cf8->func_ov024_020c77d0(param1, param2); } bool AdventureModeManager::func_ov024_020c68ec(unk32 param1, unk32 param2) { @@ -762,7 +757,7 @@ void AdventureModeManager::func_ov024_020c699c() { } unk32 AdventureModeManager::func_ov024_020c69d0() { - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { unk32 uVar2 = 0; if (this->mUnk_16C != NULL && this->mUnk_16C->func_ov026_020d8e30() != 0) { @@ -794,7 +789,7 @@ void AdventureModeManager::func_ov024_020c6a48(unk32 param1, bool param2) { data_ov024_020d8698->func_ov024_020cd4e4(param1, param2); break; case 4: - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { this->mUnk_16C->func_ov026_020d8dd4(param2); } else { this->mUnk_168->func_ov031_0210df70(param2); @@ -821,7 +816,7 @@ bool AdventureModeManager::func_ov024_020c6af4(unk32 param1) { return data_ov024_020d8698->func_ov024_020cd5c0(param1); case 4: - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { if (this->mUnk_16C != NULL) { return this->mUnk_16C->mUnk_1C; } @@ -858,7 +853,7 @@ void AdventureModeManager::func_ov024_020c6b8c() { this->mUnk_1B4 = true; } - if (!data_027e09a4->func_01ffd3d8()) { + if (!data_027e09a4->IsTrain()) { if (!this->mUnk_1B5 && this->mUnk_1B0 != NULL) { AdventureModeManager_1B0 *ptr = this->mUnk_1B0; this->mUnk_104.Append(ptr); @@ -875,7 +870,7 @@ void AdventureModeManager::func_ov024_020c6c60() { this->mUnk_1B4 = false; } - if (!data_027e09a4->func_01ffd3d8()) { + if (!data_027e09a4->IsTrain()) { if (this->mUnk_1B5 && this->mUnk_1B0 != NULL) { this->mUnk_1B0->Detach(); this->mUnk_1B5 = false; diff --git a/src/024_MainGame/Game/AdventureModeManager_160_024.cpp b/src/024_MainGame/Game/AdventureModeManager_160_024.cpp index 207f036c6..242c37717 100644 --- a/src/024_MainGame/Game/AdventureModeManager_160_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_160_024.cpp @@ -160,7 +160,7 @@ void AdventureModeManager_160::func_ov024_020c7d4c(unk32 param1) { this->mUnk_0C = 7; if (param1 == 6) { - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { data_0204a110.func_02019538(4, 1); } else { data_0204a110.func_02019538(0, 1); @@ -335,7 +335,7 @@ void AdventureModeManager_160::vfunc_20(unk32 param1, unk32 param2) { this->mUnk_70.mUnk_27 = false; SceneIndex sceneIndex = GetAdventureModeManager()->mUnk_1C4.sceneIndex; - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { GetAdventureModeManager()->func_ov024_020c555c(1); } else { if (data_027e09a0->func_ov000_02070378(sceneIndex)) { diff --git a/src/024_MainGame/Game/AdventureModeManager_174_Base_024.cpp b/src/024_MainGame/Game/AdventureModeManager_174_Base_024.cpp index 9a326623d..878ac41d2 100644 --- a/src/024_MainGame/Game/AdventureModeManager_174_Base_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_174_Base_024.cpp @@ -96,7 +96,7 @@ void AdventureModeManager_174_Base::func_ov024_020c8b2c() { data_027e0cd8->func_ov000_02081c28(); AdventureModeManager *pAdvMgr = GetAdventureModeManager(); - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { GetAdventureModeManager()->func_ov024_020c555c(1); } else { if (data_027e0998->func_ov024_020c7354()) { @@ -117,14 +117,14 @@ void AdventureModeManager_174_Base::func_ov024_020c8b2c() { if (data_027e09a4->IsDarkRealm()) { data_0204a110.func_02019538(6, 1); } else { - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { data_0204a110.func_02019538(4, 1); } else { data_0204a110.func_02019538(0, 1); } } - if (data_027e09a4->func_01ffd3d8() || data_027e0998->func_ov024_020c7354()) { + if (data_027e09a4->IsTrain() || data_027e0998->func_ov024_020c7354()) { pAdvMgr->func_ov024_020c671c(); } else { pAdvMgr->func_ov024_020c66c0(); diff --git a/src/024_MainGame/Game/AdventureModeManager_180_024.cpp b/src/024_MainGame/Game/AdventureModeManager_180_024.cpp index 04fa9f69d..d79f2654c 100644 --- a/src/024_MainGame/Game/AdventureModeManager_180_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_180_024.cpp @@ -185,7 +185,7 @@ void AdventureModeManager_180::vfunc_20(unk32 param1, unk32 param2) { GetAdventureModeManager()->func_ov024_020c555c(0); GetAdventureModeManager()->func_ov024_020c53e8(); - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { GetAdventureModeManager()->func_ov024_020c671c(); } else { GetAdventureModeManager()->func_ov024_020c66c0(); diff --git a/src/024_MainGame/Game/AdventureModeManager_184_024.cpp b/src/024_MainGame/Game/AdventureModeManager_184_024.cpp index c5bb93008..b0117a408 100644 --- a/src/024_MainGame/Game/AdventureModeManager_184_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_184_024.cpp @@ -26,7 +26,7 @@ AdventureModeManager_184::AdventureModeManager_184(GameModeManagerBase_104 *para AdventureModeManager_184::~AdventureModeManager_184() {} void AdventureModeManager_184::vfunc_08(unk32 param1) { - if (!data_027e09a4->func_01ffd3d8()) { + if (!data_027e09a4->IsTrain()) { this->func_ov024_020c979c(param1); } } @@ -42,10 +42,9 @@ void AdventureModeManager_184::vfunc_0C(unk32 param1) { data_0204a088->func_ov000_02061248(); MapObjectId mapObjId = data_027e09b8->mUnk_0C->mMapObjId; - if (data_027e09a4->func_01ffd3d8() || - (data_027e09b8->func_ov000_020732dc(2) && - (mapObjId != MapObjectId_WDST || - (mapObjId == MapObjectId_WDST && !data_ov000_020b504c.func_ov000_02067f88(0, 0))))) { + if (data_027e09a4->IsTrain() || (data_027e09b8->func_ov000_020732dc(2) && + (mapObjId != MapObjectId_WDST || + (mapObjId == MapObjectId_WDST && !data_ov000_020b504c.func_ov000_02067f88(0, 0))))) { this->mUnk_10 = func_ov010_020b65fc(&this->mUnk_0C); } else { this->mUnk_10 = func_ov010_020b6520(&this->mUnk_0C); @@ -80,7 +79,7 @@ void AdventureModeManager_184::func_ov024_020c979c(unk32 param1) { MapObjectId mapObjId = data_027e09b8->mUnk_0C->mMapObjId; - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { if (data_027e09a4->IsDarkRealm()) { data_0204a110.func_02019538(7, 0); } else { @@ -124,7 +123,7 @@ void AdventureModeManager_184::vfunc_1C(unk32 param1) { switch (param1) { case 1: if (this->mUnk_10 != NULL && this->mUnk_10->vfunc_20()) { - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { data_0204a088->func_ov000_02061224(); } else { data_0204a088->func_ov000_02061230(); diff --git a/src/024_MainGame/Game/AdventureModeManager_18C_024.cpp b/src/024_MainGame/Game/AdventureModeManager_18C_024.cpp index ff634cc93..6d2156583 100644 --- a/src/024_MainGame/Game/AdventureModeManager_18C_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_18C_024.cpp @@ -289,11 +289,11 @@ void AdventureModeManager_18C::vfunc_20(unk32 param1, unk32 param2) { switch (param1) { case 1: { - if (!data_027e09a4->func_01ffd3d8()) { + if (!data_027e09a4->IsTrain()) { GetAdventureModeManager()->mUnk_004.func_0201c0c4(0x68); } - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { GetAdventureModeManager()->func_ov024_020c555c(1); } else if (data_027e0998->func_ov024_020c7354()) { GetAdventureModeManager()->func_ov024_020c555c(4); @@ -303,7 +303,7 @@ void AdventureModeManager_18C::vfunc_20(unk32 param1, unk32 param2) { GetAdventureModeManager()->func_ov024_020c53e8(); - if (data_027e09a4->func_01ffd3d8() || data_027e0998->func_ov024_020c7354()) { + if (data_027e09a4->IsTrain() || data_027e0998->func_ov024_020c7354()) { GetAdventureModeManager()->func_ov024_020c671c(); } else { GetAdventureModeManager()->func_ov024_020c66c0(); diff --git a/src/024_MainGame/Game/AdventureModeManager_190_024.cpp b/src/024_MainGame/Game/AdventureModeManager_190_024.cpp index ca08dce5e..ad8b2cf0c 100644 --- a/src/024_MainGame/Game/AdventureModeManager_190_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_190_024.cpp @@ -62,7 +62,7 @@ void AdventureModeManager_190::vfunc_20(unk32 param1, unk32 param2) { this->mUnk_10 = NULL; data_0204a088->func_ov000_02061248(); - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { GetAdventureModeManager()->func_ov024_020c555c(1); GetAdventureModeManager()->func_ov024_020c53e8(); } else { @@ -70,7 +70,7 @@ void AdventureModeManager_190::vfunc_20(unk32 param1, unk32 param2) { GetAdventureModeManager()->func_ov024_020c53e8(); } - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { GetAdventureModeManager()->func_ov024_020c671c(); } else { GetAdventureModeManager()->func_ov024_020c66c0(); diff --git a/src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp b/src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp index 16b4d1045..cf28bcebd 100644 --- a/src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp @@ -27,7 +27,7 @@ static u16 data_ov024_020d869c; static const AdventureModeManager_1B8_Base_1C data_ov024_020d8200(0x14, 0x08, 0xD8, 0xB0); AdventureModeManager_1B8_Base::AdventureModeManager_1B8_Base(u8 bgType, bool param2, - const AdventureModeManager_1B8_Base_1C *param3, bool param4, + const AdventureModeManager_1B8_Base_1C ¶m3, bool param4, bool param5) { this->mUnk_00 = ADVMGR_UNK; this->mUnk_04 = ADVMGR_UNK; @@ -39,9 +39,9 @@ AdventureModeManager_1B8_Base::AdventureModeManager_1B8_Base(u8 bgType, bool par this->mBGType = bgType; this->mIsTopScreen = param2; this->mUnk_10 = param4; - this->mUnk_14 = GetUnkValue_ImplS(param3->mUnk_06, param4); + this->mUnk_14 = GetUnkValue_ImplS(param3.mUnk_06, param4); this->mUnk_18 = (u8 *) ::operator new(this->mUnk_14, HeapIndex_1, 4); - MI_CpuCopy16((void *) param3, &this->mUnk_1C, sizeof(AdventureModeManager_1B8_Base_1C)); + MI_CpuCopy16((void *) ¶m3, &this->mUnk_1C, sizeof(AdventureModeManager_1B8_Base_1C)); this->func_ov024_020d0698(); } @@ -432,7 +432,7 @@ unk32 AdventureModeManager_1B8_Base::func_ov024_020d0f2c(unk32 param1, unk32 par } AdventureModeManager_1B8::AdventureModeManager_1B8(u8 bgType, bool param2, bool param3) : - AdventureModeManager_1B8_Base(bgType, param2, &data_ov024_020d8200, param3, false) { + AdventureModeManager_1B8_Base(bgType, param2, data_ov024_020d8200, param3, false) { this->mUnk_24 = 0xFF; this->mUnk_28 = NULL; this->func_ov024_020d0e64(&data_ov024_020d869c, sizeof(data_ov024_020d869c)); diff --git a/src/024_MainGame/Game/GameModeAdventure_024.cpp b/src/024_MainGame/Game/GameModeAdventure_024.cpp index e08d9256f..95ea1c720 100644 --- a/src/024_MainGame/Game/GameModeAdventure_024.cpp +++ b/src/024_MainGame/Game/GameModeAdventure_024.cpp @@ -17,12 +17,8 @@ THUMB_BEGIN GameModeAdventure::~GameModeAdventure() { UnkStruct_027e09a4::Destroy(); - - delete gSaveManager.mUnk_000; - gSaveManager.mUnk_000 = NULL; - + DELETE(gSaveManager.mUnk_000); func_0200e234(); - data_ov000_020b504c.func_ov001_020be6f4(); data_ov000_020b50c0.func_ov001_020bd87c(); } diff --git a/src/024_MainGame/Game/UnkStruct_027e0998_024.cpp b/src/024_MainGame/Game/UnkStruct_027e0998_024.cpp index b8008a98e..1e83f9b7d 100644 --- a/src/024_MainGame/Game/UnkStruct_027e0998_024.cpp +++ b/src/024_MainGame/Game/UnkStruct_027e0998_024.cpp @@ -40,7 +40,7 @@ bool UnkStruct_027e0998::vfunc_00(VecFx32 *pPos, Vec2s *param2, u16 *param3) { return false; } - if (data_027e09a4->func_01ffd3d8() && data_ov026_02138d10->func_ov026_020e6a6c()) { + if (data_027e09a4->IsTrain() && data_ov026_02138d10->func_ov026_020e6a6c()) { return false; } @@ -52,7 +52,7 @@ bool UnkStruct_027e0998::vfunc_00(VecFx32 *pPos, Vec2s *param2, u16 *param3) { case 3: return this->func_ov024_020c727c(param2, param3); case 4: - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { u32 value = *(u32 *) param3; // position? param3 could be a Vec2us @@ -106,7 +106,7 @@ bool UnkStruct_027e0998::func_ov024_020c716c() { bool UnkStruct_027e0998::func_ov024_020c7214(VecFx32 *pPos, Vec2s *param2, u16 *param3) { bool temp_r4 = this->UnkStruct_027e0998_Base::vfunc_00(pPos, param2, param3); - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { Vec2s sp0; func_ov024_020d51dc(&sp0, data_027e09a4->CurrentSceneIndex()); @@ -158,7 +158,7 @@ bool UnkStruct_027e0998::func_ov024_020c7300(unk32 param1) { } bool UnkStruct_027e0998::func_ov024_020c7354() { - if (data_027e09a4->func_01ffd400()->mUnk_10 == 6 && !data_027e09a4->IsPirate()) { + if (data_027e09a4->GetCurrentCourseEntry()->unk_10 == 6 && !data_027e09a4->IsPirate()) { return true; } diff --git a/src/024_MainGame/Game/UnkStruct_027e0cf8_024.cpp b/src/024_MainGame/Game/UnkStruct_027e0cf8_024.cpp index 80bd8dc48..93f97e993 100644 --- a/src/024_MainGame/Game/UnkStruct_027e0cf8_024.cpp +++ b/src/024_MainGame/Game/UnkStruct_027e0cf8_024.cpp @@ -4,8 +4,8 @@ #include "Unknown/UnkStruct_027e0cf8.hpp" extern "C" bool func_ov024_020d5354(unk32 *param1, unk16 *param2, ItemId itemId); -extern "C" void func_ov024_020d524c(Vec2us *param1, unk32 param2); -extern "C" void func_ov024_020d51dc(Vec2us *param1, unk32 param2); +extern "C" void func_ov024_020d524c(Vec2us *param1, SceneIndex sceneIndex); +extern "C" void func_ov024_020d51dc(Vec2us *param1, SceneIndex sceneIndex); UnkStruct_027e0cf8 *UnkStruct_027e0cf8::Create() { return new(HeapIndex_1) UnkStruct_027e0cf8(); @@ -36,21 +36,15 @@ UnkStruct_027e0cf8::~UnkStruct_027e0cf8() { this->func_ov024_020c7750(); if (data_027e09a4->IsDarkRealm()) { - delete this->mUnk_04; - this->mUnk_04 = NULL; + DELETE(this->mUnk_04); } - delete this->mUnk_0C; - this->mUnk_0C = NULL; - - delete this->mUnk_08; - this->mUnk_08 = NULL; - - delete this->mUnk_00; - this->mUnk_00 = NULL; + DELETE(this->mUnk_0C); + DELETE(this->mUnk_08); + DELETE(this->mUnk_00); } -void UnkStruct_027e0cf8::func_ov024_020c755c(void *param1) { +void UnkStruct_027e0cf8::func_ov024_020c755c(UnkDataStruct4 *param1) { unk32 local_1c = -1; unk16 local_20 = 0; @@ -63,16 +57,15 @@ void UnkStruct_027e0cf8::func_ov024_020c755c(void *param1) { } } -void UnkStruct_027e0cf8::func_ov024_020c75d0(void *param1, unk32 param2, u16 param3) { +void UnkStruct_027e0cf8::func_ov024_020c75d0(UnkDataStruct4 *param1, unk32 param2, u16 param3) { if (this->mUnk_1C) { UnkStruct_027e0cf8::func_ov024_020c7724(); } - //! TODO: confirm what UnkDataStruct3 is so we can remove the cast - unk32 uVar1 = ((UnkDataStruct3 *) param1)->mUnk_CC; + SceneIndex sceneIndex = param1->mSceneIndex; volatile Vec2us local_1c; - func_ov024_020d524c((Vec2us *) &local_1c, uVar1); + func_ov024_020d524c((Vec2us *) &local_1c, sceneIndex); Vec2us result; result.x = local_1c.x; @@ -81,7 +74,7 @@ void UnkStruct_027e0cf8::func_ov024_020c75d0(void *param1, unk32 param2, u16 par this->mUnk_10.y = result.y; volatile Vec2us local_20; - func_ov024_020d51dc((Vec2us *) &local_20, uVar1); + func_ov024_020d51dc((Vec2us *) &local_20, sceneIndex); result.x = local_20.x; result.y = local_20.y; @@ -144,16 +137,16 @@ void UnkStruct_027e0cf8::func_ov024_020c7780() { } } -void UnkStruct_027e0cf8::func_ov024_020c77b0(unk32 param1) { +void UnkStruct_027e0cf8::func_ov024_020c77b0(bool param1) { this->mUnk_08->func_ov024_020d341c(param1); } -void UnkStruct_027e0cf8::func_ov024_020c77c0() { - this->mUnk_0C->func_ov024_020d02e0(); +bool UnkStruct_027e0cf8::func_ov024_020c77c0(fx32 *pX, fx32 *pZ, s32 param3) { + return this->mUnk_0C->func_ov024_020d02e0(pX, pZ, param3); } -void UnkStruct_027e0cf8::func_ov024_020c77d0() { - this->mUnk_0C->func_ov024_020d0340(); +bool UnkStruct_027e0cf8::func_ov024_020c77d0(Vec2s *param1, unk32 param2) { + return this->mUnk_0C->func_ov024_020d0340(param1, param2); } void UnkStruct_027e0cf8::func_ov024_020c77e0(Vec2s *param1) { @@ -217,13 +210,13 @@ void UnkStruct_027e0cf8::func_ov024_020c78d0() { void UnkStruct_027e0cf8::func_ov024_020c78e4(unk32 param1) { if (this->mUnk_0C != NULL) { - this->mUnk_0C->func_ov024_020d05d0(param1, 1); + this->mUnk_0C->func_ov024_020d05d0(param1, true); } } void UnkStruct_027e0cf8::func_ov024_020c7900(unk32 param1) { if (this->mUnk_0C != NULL) { - this->mUnk_0C->func_ov024_020d05d0(param1, 0); + this->mUnk_0C->func_ov024_020d05d0(param1, false); } } diff --git a/src/024_MainGame/Game/UnkStruct_ov000_020d8660_024.cpp b/src/024_MainGame/Game/UnkStruct_ov000_020d8660_024.cpp index c06ac3b86..8ddb1343d 100644 --- a/src/024_MainGame/Game/UnkStruct_ov000_020d8660_024.cpp +++ b/src/024_MainGame/Game/UnkStruct_ov000_020d8660_024.cpp @@ -101,7 +101,7 @@ void UnkStruct_ov024_020d8660::func_ov024_020c4cc8() { this->mUnk_00 = NULL; this->mUnk_1C = 0; - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { data_0204a110.func_02019538(4, 1); } else { data_0204a110.func_02019538(0, 1); @@ -111,7 +111,7 @@ void UnkStruct_ov024_020d8660::func_ov024_020c4cc8() { GX_func_0008(®_BLDCNT, 0x2F, 0); GX_func_0008(®_BLDCNT_SUB, 0x3F, 0); - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { data_0204a110.mUnk_D9C.func_0201c494(1); } else { data_0204a110.mUnk_D9C.func_0201c494(0); diff --git a/src/024_MainGame/MiscAdvManager.cpp b/src/024_MainGame/MiscAdvManager.cpp index 595d406bd..c2b4952fb 100644 --- a/src/024_MainGame/MiscAdvManager.cpp +++ b/src/024_MainGame/MiscAdvManager.cpp @@ -111,27 +111,38 @@ Vec2b *MiscAdvManager::GetStampPos(unk32 index) { return (Vec2b *) &this->mStampPositions[index]; } -// non-matching -void MiscAdvManager::func_ov024_020d64b4(unk32 param1, unk32 param2, u16 *param3) { +void MiscAdvManager::func_ov024_020d64b4(s8 param1, unk32 param2, const u16 *param3) { if (param2 < 0) { return; } - if ((u32) param2 >= StampType_Max || (u32) param1 >= StampType_Max) { + if ((u32) param2 >= 20 || (u32) param1 >= 20) { return; } - for (u32 i = 0; i < ARRAY_LEN(this->mObtainedStamps); i++) { + u32 i; + for (i = 0; i < 20; i++) { if (param1 == this->mObtainedStamps[i]) { this->mObtainedStamps[i] = -1; } } u16 local_18; - data_02049bac.func_02014a34((void *) &local_18); - this->mObtainedStamps[param2] = param1; - this->mStampDates[param2] = local_18; - *(u16 *) &this->mStampPositions[param2] = *param3; + data_02049bac.func_02014a34(&local_18); + + this->mObtainedStamps[param2] = param1; + + u16 new_var2 = this->mStampDates[param2]; + u16 temp = local_18; + this->mStampDates[param2] = temp; + this->mStampDates[param2] = new_var2; + this->mStampDates[param2] = temp; + + u16 new_var3 = this->mStampPos[param2]; + u16 temp2 = *param3; + this->mStampPos[param2] = temp2; + this->mStampPos[param2] = new_var3; + this->mStampPos[param2] = temp2; } void MiscAdvManager::func_ov024_020d6530() { diff --git a/src/024_MainGame/PassengerManager.cpp b/src/024_MainGame/PassengerManager.cpp index 8a50ef8c0..bc301560c 100644 --- a/src/024_MainGame/PassengerManager.cpp +++ b/src/024_MainGame/PassengerManager.cpp @@ -1,4 +1,5 @@ #include "MainGame/PassengerManager.hpp" +#include "System/Random.hpp" #include "System/SysNew.hpp" #include "Unknown/UnkStruct_02049bac.hpp" #include "Unknown/UnkStruct_027e09b8.hpp" @@ -129,24 +130,13 @@ PassengerManager *PassengerManager::Create() { return new(HeapIndex_1) PassengerManager(); } -// non-matching -void PassengerManager::func_ov024_020d41bc(UnkStruct_Param1 *param1) { - ActorId actorId = param1->actorId; - s16 mUnk_04 = param1->mUnk_04; - - s16 sceneIndex = param1->sceneIndex; - this->mPassenger.mActorId = actorId; - this->mPassenger.mUnk_04 = mUnk_04; - - u8 roomIndex = param1->roomIndex; - unk32 happiness = param1->happiness; - u16 mUnk_14 = param1->mUnk_14; - - this->mPassenger.mSceneIndex = sceneIndex; - this->mPassenger.mRoomIndex = roomIndex; - this->mPassenger.mHappiness = happiness; - this->mDate = mUnk_14; - +void PassengerManager::func_ov024_020d41bc(const UnkStruct_Param1 *param1) { + this->mPassenger.mActorId = param1->actorId; + this->mPassenger.mUnk_04 = param1->mUnk_04; + this->mPassenger.mSceneIndex = (s16) param1->sceneIndex; + this->mPassenger.mRoomIndex = param1->roomIndex; + this->mPassenger.mHappiness = param1->happiness; + this->mDate = param1->mUnk_14; this->func_ov024_020d4228(); } @@ -333,17 +323,10 @@ s16 PassengerManager::GetDate() { return date; } -// non-matching -u32 PassengerManager::GetRandomIndex(u32 arg1, s32 arg2) { - u64 factor = 0x5D588B656C078965; - u64 addend = 0x00269EC3; - - u64 seed = (u32) arg2; - u64 seed2 = addend + (factor * seed); - - u32 thing = seed2 >> 32; - - return thing % arg1; +u32 PassengerManager::GetRandomIndex(u32 param1, u32 seed) { + Random random; + random.Setup(seed); + return random.Next32(0) % param1; } void PassengerManager::SetFailedFlag() { diff --git a/src/024_MainGame/PlayerActor_A0_38_024.cpp b/src/024_MainGame/PlayerActor_A0_38_024.cpp new file mode 100644 index 000000000..2b000a7a3 --- /dev/null +++ b/src/024_MainGame/PlayerActor_A0_38_024.cpp @@ -0,0 +1,142 @@ +#include "Player/Player.hpp" + +extern "C" void func_ov000_0205be34(void *thisx, unk16 param1); +extern "C" void func_ov000_0205be44(void *thisx, Vec2s *param1, Vec2s *param2, bool param3, bool param4); + +struct UnkStruct_auStack_14 { + unk16 unk_00; + unk8 unk_02; +}; + +int dummy; //! TODO: remove +static const Vec2s data_ov024_020d8238(0x40, 0x10); +static const Vec2s data_ov024_020d8234(0x40, 0x10); +static const Vec2s data_ov024_020d8230(0x20, 0x20); +static const Vec2s data_ov024_020d822c(0x20, 0x10); +static const Vec2s data_ov024_020d8228(0x20, 0x40); +static const Vec2s data_ov024_020d8224(0x40, 0x40); + +void PlayerActor_A0_38_04::vfunc_00() { + UnkStruct_auStack_14 spC; + Vec2s sp8; + Vec2s sp4; + bool var_r3; + bool var_r4; + + func_ov000_0205be34(&spC, 0x28); + + if (this->mUnk_10->mUnk_34 & 0x02) { + var_r4 = true; + } else { + var_r4 = false; + } + + if (this->mUnk_10->mUnk_34 & 0x01) { + var_r3 = true; + } else { + var_r3 = false; + } + + sp4.x = data_ov024_020d8224.x; + sp4.y = data_ov024_020d8224.y; + + sp8.x = this->mUnk_10->mUnk_2C.x; + sp8.y = this->mUnk_10->mUnk_2C.y; + + func_ov000_0205be44(&spC, &sp8, &sp4, var_r3, var_r4); +} + +void PlayerActor_A0_38_18::vfunc_00() { + UnkStruct_auStack_14 sp3C; + UnkStruct_auStack_14 sp38; + UnkStruct_auStack_14 sp34; + UnkStruct_auStack_14 sp30; + Vec2s sp2C; + Vec2s sp28; + Vec2s sp24; + Vec2s sp20; + Vec2s sp1C; + Vec2s sp18; + Vec2s sp14; + Vec2s sp10; + Vec2s spC; + Vec2s sp8; + Vec2s sp4; + + s16 temp_r6 = this->mUnk_10->mUnk_2C.x; + s16 temp_r7 = this->mUnk_10->mUnk_2C.y; + + if (this->mUnk_10->mUnk_36) { + func_ov000_0205be34(&sp3C, 0x2A); + sp3C.unk_02 = 0x14; + sp24.x = data_ov024_020d8238.x; + sp24.y = data_ov024_020d8238.y; + sp28.x = temp_r6; + sp28.y = temp_r7 + 0x17; + func_ov000_0205be44(&sp3C, &sp28, &sp24, false, false); + + func_ov000_0205be34(&sp38, 0x29); + sp38.unk_02 = 0x1E; + + Vec2us temp1; + Vec2us temp2; + temp1.x = data_ov024_020d8228.x; + temp1.y = data_ov024_020d8228.y; + temp2.x = (temp_r6 + 0x18) + ROUND_FX32(MUL_FX32(SIN(this->mUnk_10->mUnk_30), FLOAT_TO_FX32(16.0f))); + temp2.y = temp_r7 - 0x18; + temp2.y = temp2.y & 0xFFFF; //! TODO: fake match? + + sp1C.x = temp1.x; + sp1C.y = temp1.y; + sp20.x = temp2.x; + sp20.y = temp2.y; + + func_ov000_0205be44(&sp38, &sp20, &sp1C, false, false); + + func_ov000_0205be34(&sp34, 0x2D); + sp34.unk_02 = 0x1E; + sp14.x = data_ov024_020d8234.x; + sp14.y = data_ov024_020d8234.y; + sp18.x = temp_r6; + sp18.y = temp_r7 + 0x28; + func_ov000_0205be44(&sp34, &sp18, &sp14, false, false); + } else { + func_ov000_0205be34(&sp30, 0x2B); + spC.x = data_ov024_020d8230.x; + spC.y = data_ov024_020d8230.y; + sp10.x = temp_r6 + 0x10; + sp10.y = temp_r7 + 0x18; + func_ov000_0205be44(&sp30, &sp10, &spC, false, false); + + func_ov000_0205be34(&sp2C, 0x2C); + sp4.x = data_ov024_020d822c.x; + sp4.y = data_ov024_020d822c.y; + sp8.x = temp_r6 + 0x10u; + sp8.y = temp_r7 + 0x08; + func_ov000_0205be44(&sp2C, &sp8, &sp4, false, false); + } +} + +THUMB_BEGIN + +PlayerActor_A0_38::PlayerActor_A0_38() : + mUnk_00(0xC0), + mUnk_02(0x80), + mUnk_04(this), + mUnk_18(this) { + this->func_ov024_020d19d8(); +} + +PlayerActor_A0_38::~PlayerActor_A0_38() {} + +void PlayerActor_A0_38::func_ov024_020d19d8() { + this->mUnk_2C.x = 0x8000; + this->mUnk_2C.y = 0x8000; + this->mUnk_30 = 0; + this->mUnk_32 = 0; + this->mUnk_34 = 0; + this->mUnk_36 = false; + this->mUnk_37 = false; +} + +THUMB_END diff --git a/src/024_MainGame/UnkDataStruct4.cpp b/src/024_MainGame/UnkDataStruct4.cpp new file mode 100644 index 000000000..9d7dddec7 --- /dev/null +++ b/src/024_MainGame/UnkDataStruct4.cpp @@ -0,0 +1,428 @@ +#include "Unknown/Common.hpp" +#include "Unknown/UnkFileSystem.hpp" +#include "Unknown/UnkStruct_027e09a0.hpp" +#include "Unknown/UnkStruct_027e09a4.hpp" +#include "files.h" + +#include + +extern "C" void func_02026800(void *, int, const char *, ...); +extern "C" unk32 func_02032784(unk32 param1); +extern "C" unk32 func_ov000_0205c7ac(unk32, unk32); +extern "C" bool func_ov000_0205c74c(unk32, unk32, unk32, unk32); +extern "C" bool func_ov024_020d5434(SceneIndex sceneIndex); +extern "C" bool func_ov024_020d5410(SceneIndex sceneIndex); +extern "C" bool func_ov024_020d5458(SceneIndex sceneIndex); +extern "C" bool func_ov024_020d547c(SceneIndex sceneIndex); +extern const u16 data_ov024_020d7684[3][6]; +extern u8 data_ov024_020d756c[4]; + +UnkDataStruct4::UnkDataStruct4() { + this->mUnk_04 = 0x14; + this->mUnk_06 = 0x0F; + this->mUnk_08 = 0; + this->mUnk_0C = 0; + this->mUnk_10 = 0; + this->mUnk_C8 = this->mUnk_68; + this->mSceneIndex = SceneIndex_None; +} + +void UnkDataStruct4::func_ov024_020d2518() {} + +void UnkDataStruct4::func_ov024_020d251c() {} + +void UnkDataStruct4::func_ov024_020d2520(UnkStruct_SceneChange1 *param1) { + this->func_ov024_020d2538(param1->mSceneIndex, param1->mRoomIndex, NULL); +} + +void UnkDataStruct4::func_ov024_020d2538(u32 sceneIndex, u8 roomIndex, UnkDataStruct4_14_2 *param3) { + this->mUnk_64 = param3; + this->func_ov024_020d258c(sceneIndex, roomIndex); + this->func_ov024_020d3140(); + this->vfunc_00(); +} + +void UnkDataStruct4::func_ov024_020d2564() { + this->vfunc_04(); + this->func_ov024_020d277c(); + this->mUnk_C8 = this->mUnk_68; +} + +void UnkDataStruct4::func_ov024_020d258c(u32 sceneIndex, u8 roomIndex) { + wchar_t sp34[16]; + wchar_t sp10[2]; + FileInfos sp8; + CourseEntry *pEntry; + + this->mSceneIndex = sceneIndex; + + sp10[0] = L'\0'; + sp10[1] = L'\0'; + func_02026800(sp10, sizeof(sp10), "T%02d", roomIndex); + + sp34[0] = L'\0'; + sp34[15] = L'\0'; + pEntry = data_027e09a0->GetCourseEntry(sceneIndex); + const char *string = "Map/%s/train%02d.bin"; + func_02026800(sp34, sizeof(sp34), string, pEntry->name, roomIndex); + + UnkStruct2 sp24(NULL, 1); + sp24.mUnk_04 = (char *) sp34; + sp24.func_020154ec((char *) sp10); + + pEntry = data_027e09a0->GetCourseEntry(sceneIndex); + func_02026800(sp34, sizeof(sp34), "%s:ztb/%s_%02d.ztb", sp10, pEntry->name, roomIndex); + + UnkFileSystem3 sp14((char *) sp34); + sp14.vfunc_08(0x10); + sp8.pFile = sp14.mpFile; + sp8.size = sp14.mFileSize; + ZTB_ParseFile(&sp8, this); +} + +void UnkDataStruct4::func_ov024_020d26b0(unk32 param1) { + fx32 pos1 = INT_TO_FX32(param1); + fx32 pos3 = MUL_FX32(pos1 >> 1, INT_TO_FX32(this->mUnk_06)); + fx32 pos2 = MUL_FX32(pos1 >> 1, INT_TO_FX32(this->mUnk_04)); + + this->mUnk_08 = pos1; + this->mUnk_0C = pos2; + this->mUnk_10 = pos3; + + if (this->mUnk_64 != NULL) { + for (int i = 0; i < ARRAY_LEN(this->mUnk_14); i++) { + this->mUnk_14[i] = &this->mUnk_64[i]; + } + } else { + for (UnkDataStruct4_14_2 **ptr = this->mUnk_14; ptr != &this->mUnk_14[ARRAY_LEN(this->mUnk_14)]; ptr++) { + *ptr = new(HeapIndex_1) UnkDataStruct4_14_2(); + } + } + + this->func_ov024_020d27cc(); +} + +void UnkDataStruct4::func_ov024_020d277c() { + if (this->mUnk_64 == NULL) { + for (UnkDataStruct4_14_2 **ptr = this->mUnk_14; ptr != &this->mUnk_14[ARRAY_LEN(this->mUnk_14)]; ptr++) { + delete *ptr; + } + } + + this->mUnk_08 = INT_TO_FX32(0); + this->mUnk_0C = INT_TO_FX32(0); + this->mUnk_10 = INT_TO_FX32(0); + this->mSceneIndex = SceneIndex_None; +} + +void UnkDataStruct4::func_ov024_020d27cc() { + UnkDataStruct4_14_2 **new_var; + UnkDataStruct4_14_2 **new_var2; + + for (int i = 0; i < ARRAY_LEN(this->mUnk_14); i++) { + for (int j = 0; j < ARRAY_LEN(this->mUnk_14[0]->mUnk_00); j++) { + new_var2 = &this->mUnk_14[i]; + new_var = new_var2; + (*new_var)->mUnk_00[j].func_ov024_020d1fe8(); + } + } +} + +void UnkDataStruct4::func_ov024_020d280c() { + UnkDataStruct4_14_2 **ppUnk_14; + int i; + int j; + int k; + int temp_r8; + int temp_r9; + + for (i = 0; i < ARRAY_LEN(this->mUnk_14); i++) { + temp_r8 = i + 1; + + for (j = 0; j < ARRAY_LEN(this->mUnk_14[0]->mUnk_00); j++) { + ppUnk_14 = this->mUnk_14; + + if (ppUnk_14[i]->mUnk_00[j].func_ov024_020d1da0() != 0 ? true : false) { + temp_r9 = j + 1; + + for (k = 0; k < 3; k++) { + if (!ppUnk_14[i]->mUnk_00[j].func_ov024_020d1fa4(k)) { + if (temp_r8 >= 0 && temp_r8 < this->mUnk_04 && j >= 0 && j < this->mUnk_06 && + !this->mUnk_14[temp_r8]->mUnk_00[j].func_ov024_020d1fa4(k) && + this->func_ov024_020d2a18(i, j, temp_r8, j, k)) { + this->func_ov024_020d29b0(i, j, temp_r8, j, k); + } + + u32 new_var2 = temp_r9; + if (i >= 0 && i < this->mUnk_04 && temp_r9 >= 0 && temp_r9 < this->mUnk_06 && + !ppUnk_14[i]->mUnk_00[new_var2].func_ov024_020d1fa4(k) && + this->func_ov024_020d2a18(i, j, i, temp_r9, k)) { + this->func_ov024_020d29b0(i, j, i, temp_r9, k); + } + } + } + } + } + } +} + +void UnkDataStruct4::func_ov024_020d29b0(unk32 param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5) { + unk32 iVar1 = func_ov000_0205c7ac(param3 - param1, param4 - param2); + this->mUnk_14[param1]->mUnk_00[param2].func_ov024_020d2030(iVar1, param5); + this->mUnk_14[param3]->mUnk_00[param4].func_ov024_020d2030((iVar1 + 2) & 0x03, param5); +} + +bool UnkDataStruct4::func_ov024_020d2a18(unk32 param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5) { + if (param1 >= 0 && param1 < this->mUnk_04 && param2 >= 0 && param2 < this->mUnk_06 && param3 >= 0 && + param3 < this->mUnk_04 && param4 >= 0 && param4 < this->mUnk_06 && + func_ov000_0205c74c(param1, param2, param3, param4)) { + unk32 temp_r5 = func_ov000_0205c7ac(param3 - param1, param4 - param2); + unk32 temp_r4 = func_ov000_0205c7ac(param1 - param3, param2 - param4); + + if (this->mUnk_14[param1]->mUnk_00[param2].func_ov024_020d1dc8(temp_r5, param5) && + this->mUnk_14[param3]->mUnk_00[param4].func_ov024_020d1dc8(temp_r4, param5)) { + return true; + } + + return false; + } + + return false; +} + +void UnkDataStruct4::func_ov024_020d2b08(unk32 param1, unk32 param2, VecFx32 *param3) const { + VecFx32 result; + result.x = param1 * this->mUnk_08 - this->mUnk_0C + (this->mUnk_08 >> 1); + result.y = 0; + result.z = param2 * this->mUnk_08 - this->mUnk_10 + (this->mUnk_08 >> 1); + VecFx32_Copy(&result, param3); +} + +void UnkDataStruct4::func_ov024_020d2b40(Vec2s *param1, const UnkDataStruct4 *thisx) { + param1->x = -1; + param1->y = -1; + + switch (thisx->mSceneIndex) { + case SceneIndex_t_area0: + param1->x = 0x12; + param1->y = 0x02; + break; + case SceneIndex_t_area1: + param1->x = 0x12; + param1->y = 0x0C; + break; + case SceneIndex_t_area2: + param1->x = 0x01; + param1->y = 0x02; + break; + case SceneIndex_t_area3: + param1->x = 0x01; + param1->y = 0x0C; + break; + default: + break; + } +} + +void UnkDataStruct4::func_ov024_020d2bcc(Vec2s *param1, const UnkDataStruct4 *thisx) { + param1->x = -1; + param1->y = -1; + + switch (thisx->mSceneIndex) { + case SceneIndex_t_area0: + param1->x = 0x12; + param1->y = 0x01; + break; + case SceneIndex_t_area1: + param1->x = 0x12; + param1->y = 0x0D; + break; + case SceneIndex_t_area2: + param1->x = 0x01; + param1->y = 0x01; + break; + case SceneIndex_t_area3: + param1->x = 0x01; + param1->y = 0x0D; + break; + default: + break; + } +} + +void UnkDataStruct4::func_ov024_020d2c54(UnkArrayDataType1 param1, unk32 param2) { + MI_CpuFill8(param1, 0, sizeof(UnkArrayDataType1)); + UnkDataStruct4_14_2 **ppUnk_14 = this->mUnk_14; + + for (int k = 0; k < 3; k++) { + //! TODO: fake match, how is this accessed?? + if (GET_FLAG2(data_ov024_020d7684[k][12], param2)) { + for (int i = 0; i < ARRAY_LEN(this->mUnk_14); i++) { + for (int j = 0; j < ARRAY_LEN(this->mUnk_14[0]->mUnk_00); j++) { + param1[i][j] |= ppUnk_14[i]->mUnk_00[j].func_ov024_020d208c(k); + } + } + } + } +} + +void UnkDataStruct4::func_ov024_020d2cfc(UnkArrayDataType1 param1, unk32 param2, unk32 param3) { + u8 sp44[4]; + unk32 sp40; + unk32 sp3C; + u8 sp38[4]; + UnkDataStruct4_14_2 **sp24; + unk32 sp20; + UnkDataStruct4_14 *sp1C; + unk32 sp18; + unk32 var_r9; + u8 temp_r10; + unk32 temp_r8; + unk32 temp_r4; + UnkDataStruct4_14 *temp_r5; + unk32 var_r7; + unk32 var_r11; + UnkDataStruct4_14_2 **dummy; + UnkDataStruct4_14_2 *ptr; + + MI_CpuFill8(param1, 0, sizeof(UnkArrayDataType1)); + +#if __MWERKS__ + sp38 = data_ov024_020d756c; +#else + sp38[0] = data_ov024_020d756c[0]; + sp38[1] = data_ov024_020d756c[1]; + sp38[2] = data_ov024_020d756c[2]; + sp38[3] = data_ov024_020d756c[3]; +#endif + + for (sp20 = 0; sp20 < ARRAY_LEN(this->mUnk_14); sp20++) { + for (var_r9 = 0; var_r9 < ARRAY_LEN(this->mUnk_14[0]->mUnk_00); var_r9++) { + sp24 = this->mUnk_14; + dummy = sp24; // somehow required to match + ptr = sp24[sp20]; + + for (var_r7 = 0; var_r7 < 3; var_r7++) { + sp1C = &ptr->mUnk_00[var_r9]; + + if (param2 == sp1C->mUnk_02[var_r7] && param3 == sp1C->mUnk_06[var_r7]) { + sp18 = sp1C->mUnk_0C[var_r7]; + +#if __MWERKS__ + sp44 = sp38; +#else + sp44[0] = sp38[0]; + sp44[1] = sp38[1]; + sp44[2] = sp38[2]; + sp44[3] = sp38[3]; +#endif + + for (var_r11 = 0; var_r11 < 4; var_r11++) { + temp_r10 = sp44[var_r11]; + + if (sp18 & temp_r10) { + sp40 = 0; + sp3C = 0; + UnkDataStruct4_14::func_ov024_020d1ab8(temp_r10, &sp40, &sp3C); + temp_r8 = sp20 + sp40; + temp_r4 = var_r9 + sp3C; + + if (this->func_ov024_020d2a18(sp20, var_r9, temp_r8, temp_r4, var_r7)) { + temp_r5 = &this->mUnk_14[temp_r8]->mUnk_00[temp_r4]; + + if (func_02032784(temp_r5->func_ov024_020d1d78()) > 0) { + param1[sp20][var_r9] |= temp_r10; + param1[temp_r8][temp_r4] |= UnkDataStruct4_14::func_ov024_020d1eac(temp_r10); + param1[temp_r8][temp_r4] |= temp_r5->func_ov024_020d1d78(); + } else if (param2 == temp_r5->mUnk_02[var_r7] && param3 == temp_r5->mUnk_06[var_r7]) { + param1[sp20][var_r9] |= temp_r10; + param1[temp_r8][temp_r4] |= UnkDataStruct4_14::func_ov024_020d1eac(temp_r10); + } + } + } + } + } + } + } + } + + if (func_ov024_020d5434(this->mSceneIndex)) { + for (int i = 0; i < 20; i++) { + if (param1[i][0] & 0x01) { + param1[i][0] |= 0x10; + } + } + } + + if (func_ov024_020d5410(this->mSceneIndex)) { + for (int i = 0; i < 20; i++) { + if (param1[i][14] & 0x10) { + param1[i][14] |= 0x01; + } + } + } + + if (func_ov024_020d5458(this->mSceneIndex)) { + for (int i = 0; i < 15; i++) { + if (param1[0][i] & 0x04) { + param1[0][i] |= 0x40; + } + } + } + + if (func_ov024_020d547c(this->mSceneIndex)) { + for (int i = 0; i < 15; i++) { + if (param1[19][i] & 0x40) { + param1[19][i] |= 0x04; + } + } + } +} + +void UnkDataStruct4::vfunc_00() {} + +void UnkDataStruct4::vfunc_04() {} + +s32 UnkDataStruct4::func_ov024_020d3068() const { + return ((s32) this->mUnk_C8 - (s32) this->mUnk_68) / (s32) sizeof(VecFx32); +} + +bool UnkDataStruct4::func_ov024_020d308c(fx32 *param1, fx32 *param2, unk16 param3) const { + s32 arrayLen = this->func_ov024_020d3068(); + + for (int i = 0; i < arrayLen; i++) { + const VecFx32 *pUnk_68 = &this->mUnk_68[i]; + + if (pUnk_68->x == param3) { + if (param1 != NULL) { + *param1 = pUnk_68->y; + } + + if (param2 != NULL) { + *param2 = pUnk_68->z; + } + + return true; + } + } + + return false; +} + +void UnkDataStruct4::func_ov024_020d3100() { + UnkDataStruct4_14_2 **new_var; + UnkDataStruct4_14_2 **new_var2; + + for (int i = 0; i < ARRAY_LEN(this->mUnk_14); i++) { + for (int j = 0; j < ARRAY_LEN(this->mUnk_14[0]->mUnk_00); j++) { + new_var2 = &this->mUnk_14[i]; + new_var = new_var2; + (*new_var)->mUnk_00[j].func_ov024_020d1c84(); + } + } +} + +void UnkDataStruct4::func_ov024_020d3140() { + this->func_ov024_020d280c(); + this->func_ov024_020d3100(); +} diff --git a/src/024_MainGame/UnkDataStruct4_14.cpp b/src/024_MainGame/UnkDataStruct4_14.cpp new file mode 100644 index 000000000..346377c3c --- /dev/null +++ b/src/024_MainGame/UnkDataStruct4_14.cpp @@ -0,0 +1,489 @@ +#include "Unknown/Common.hpp" +#include "Unknown/UnkStruct_027e09a4.hpp" +#include "Unknown/UnkStruct_027e0ce0.hpp" + +extern "C" unk32 func_02032784(unk32 param1); +extern "C" u8 func_020157f0(unk32 param1, unk32 param2); +extern "C" u8 func_020157c0(unk32 param1, unk32 param2); +extern const u16 data_ov024_020d7684[4][6]; + +static const u8 data_ov024_020d7550[] = {0x01, 0x04, 0x10, 0x40, 0x00}; +static const u8 data_ov024_020d7555[] = {0x20, 0x10, 0x08, 0x40, 0x00, 0x04, 0x80, 0x01, 0x02, 0x00, 0x00}; +static const unk32 data_ov024_020d7560[] = {0x01, 0x00, 0x02}; + +const u8 UnkDataStruct4_14::func_ov024_020d1a18(unk32 param1) { + return data_ov024_020d7550[param1]; +} + +unk32 UnkDataStruct4_14::func_ov024_020d1a28(u8 param1) { + switch (param1) { + case 0x10: + return 2; + case 0x01: + return 0; + case 0x40: + return 3; + case 0x04: + return 1; + case 0x00: + return 4; + default: + break; + } + + return 4; +} + +u8 UnkDataStruct4_14::func_ov024_020d1a98(unk32 param1, unk32 param2) { + return data_ov024_020d7555[param1 + 1 + ((param2 + 1) * 3)]; +} + +void UnkDataStruct4_14::func_ov024_020d1ab8(unk32 param1, unk32 *param2, unk32 *param3) { + switch (param1) { + case 0x10: + *param2 = 0; + *param3 = -1; + break; + case 0x40: + *param2 = -1; + *param3 = 0; + break; + case 0x80: + *param2 = -1; + *param3 = 1; + break; + case 0x00: + *param2 = 0; + *param3 = 0; + break; + case 0x01: + *param2 = 0; + *param3 = 1; + break; + case 0x04: + *param2 = 1; + *param3 = 0; + break; + case 0x08: + *param2 = 1; + *param3 = -1; + break; + case 0x20: + *param2 = -1; + *param3 = -1; + break; + case 0x02: + *param2 = 1; + *param3 = 1; + break; + default: + break; + } +} + +s32 UnkDataStruct4_14::func_ov024_020d1b98(unk32 *param1, unk32 param2) { + s32 var_r3 = 0; + + if (param2 & 0x01) { + param1[var_r3++] = 0x00; + } + + if (param2 & 0x04) { + param1[var_r3++] = 0x01; + } + + if (param2 & 0x10) { + param1[var_r3++] = 0x02; + } + + if (param2 & 0x40) { + param1[var_r3++] = 0x03; + } + + return var_r3; +} + +s32 UnkDataStruct4_14::func_ov024_020d1be0(s32 param1) { + switch (param1) { + case 0x54: + return 0x01; + case 0x51: + return 0x04; + case 0x45: + return 0x10; + case 0x15: + return 0x40; + default: + break; + } + + return 0x00; +} + +s32 UnkDataStruct4_14::func_ov024_020d1c3c(unk32 *param1, unk32 param2) const { + s32 j = 0; + + for (int i = 0; i < 4; i++) { + if (this->func_ov024_020d1cc8(i, param2)) { + param1[j] = i; + j++; + } + } + + return j; +} + +void UnkDataStruct4_14::func_ov024_020d1c84() { + for (int i = 0; i < ARRAY_LEN(this->mUnk_0F); i++) { + if (func_02032784(this->mUnk_0F[i]) == 1 && func_02032784(this->mUnk_0C[i]) == 2) { + this->mUnk_0F[i] = this->mUnk_0C[i]; + } + } +} + +bool UnkDataStruct4_14::func_ov024_020d1cc8(unk32 param1, unk32 param2) const { + const u8 value = func_ov024_020d1a18(param1); + return this->mUnk_0F[param2] & value; +} + +bool UnkDataStruct4_14::func_ov024_020d1cf4(unk32 param1) const { + const u8 value = func_ov024_020d1a18(param1); + + for (int i = 0; i < ARRAY_LEN(this->mUnk_0F); i++) { + if (this->mUnk_0F[i] & value) { + return true; + } + } + + return false; +} + +bool UnkDataStruct4_14::func_ov024_020d1d30(unk32 param1, u16 param2) const { + for (int i = 0; i < ARRAY_LEN(this->mUnk_0C); i++) { + if (this->mUnk_0C[i] != 0) { + if (param1 == this->mUnk_02[i] && param2 == this->mUnk_06[i]) { + return true; + } + } + } + + return false; +} + +u8 UnkDataStruct4_14::func_ov024_020d1d78() const { + u8 value = 0; + + for (int i = 0; i < ARRAY_LEN(this->mUnk_0F); i++) { + value |= this->mUnk_0F[i]; + } + + return value; +} + +u8 UnkDataStruct4_14::func_ov024_020d1da0() const { + u8 value = 0; + + for (int i = 0; i < ARRAY_LEN(this->mUnk_0C); i++) { + value |= this->mUnk_0C[i]; + } + + return value; +} + +bool UnkDataStruct4_14::func_ov024_020d1dc8(unk32 param1, unk32 param2) const { + const u8 value = func_ov024_020d1a18(param1); + return this->mUnk_0C[param2] & value; +} + +bool UnkDataStruct4_14::func_ov024_020d1df4(unk32 param1) const { + return func_ov024_020d1a18(param1) & this->func_ov024_020d1da0(); +} + +void UnkDataStruct4_14::func_ov024_020d1e20(unk16 *param1, unk32 param2) { + switch (param2) { + case 0x10: + param1[0] = 0; + param1[1] = -1; + break; + case 0x01: + param1[0] = 0; + param1[1] = 1; + break; + case 0x40: + param1[0] = -1; + param1[1] = 0; + break; + case 0x04: + param1[0] = 1; + param1[1] = 0; + break; + default: + param1[0] = 0; + param1[1] = 0; + break; + } +} + +u8 UnkDataStruct4_14::func_ov024_020d1eac(const unk32 param1) { + switch (param1) { + case 0x10: + return 0x01; + case 0x01: + return 0x10; + case 0x04: + return 0x40; + case 0x40: + return 0x04; + case 0x08: + return 0x80; + case 0x20: + return 0x02; + case 0x02: + return 0x20; + case 0x80: + return 0x08; + default: + break; + } + + return 0x00; +} + +void UnkDataStruct4_14::func_ov024_020d1f60(u32 param1) { + if (param1 >= 0x78) { + param1 = 0; + } + + this->mUnk_12 = param1; +} + +unk32 UnkDataStruct4_14::func_ov024_020d1f70() const { + u8 val = this->mUnk_12; + + if (this->mUnk_12 == 0) { + return 0x6000; + } + + return (this->mUnk_12 * 0xC000) / 120; +} + +bool UnkDataStruct4_14::func_ov024_020d1fa4(unk32 param1) const { + if (this->mUnk_0C[param1] != 0) { + if (this->mUnk_06[param1] != 0 && !this->func_ov024_020d2320(param1)) { + return true; + } + + return false; + } + + return false; +} + +void UnkDataStruct4_14::func_ov024_020d1fe8() { + this->mUnk_00 = 0; + this->mStationSceneIndex = SceneIndex_Max; + + for (int i = 0; i < ARRAY_LEN(this->mUnk_0C); i++) { + this->mUnk_0C[i] = 0; + this->mUnk_0F[i] = 0; + this->mUnk_02[i] = -1; + this->mUnk_06[i] = 0; + } + + this->mUnk_12 = 0; +} + +bool UnkDataStruct4_14::func_ov024_020d2030(unk32 param1, unk32 param2) { + if (this->func_ov024_020d1dc8(param1, param2) && !this->func_ov024_020d1cc8(param1, param2)) { + this->mUnk_0F[param2] |= func_ov024_020d1a18(param1); + return true; + } + + return false; +} + +u8 UnkDataStruct4_14::func_ov024_020d208c(unk32 param1) const { + return this->mUnk_0F[param1]; +} + +void UnkDataStruct4_14::func_ov024_020d2098(unk32 param1, unk32 param2) { + this->mUnk_0C[param2] |= func_ov024_020d1a18(param1); +} + +unk32 UnkDataStruct4_14::func_ov024_020d20c0(unk32 param1, unk32 param2) const { + u8 var_r6; + s32 var_r7; + s32 temp_r8; + + var_r6 = func_ov024_020d1a18(param1); + temp_r8 = this->func_ov024_020d1d78(); + + switch (func_02032784(temp_r8)) { + case 0: + return 4; + case 1: + return 4; + case 2: + return func_ov024_020d1a28(temp_r8 & ~var_r6); + case 3: + if ((param2 == 1) || (param2 == 3)) { + for (var_r7 = 1; var_r7 < 4; var_r7++) { + if (param2 == 1) { + var_r6 = func_020157f0(var_r6, 2); + } else { + var_r6 = func_020157c0(var_r6, 2); + } + + if (temp_r8 & var_r6) { + return func_ov024_020d1a28(var_r6); + } + } + + return 4; + } + + return 4; + default: + break; + } + + return 4; +} + +bool UnkDataStruct4_14::IsStationDungeon() const { + switch (this->mStationSceneIndex) { + case SceneIndex_d_forest: + case SceneIndex_d_snow26: + case SceneIndex_d_water27: + case SceneIndex_d_flame: + case SceneIndex_d_sand: + return true; + default: + break; + } + + return false; +} + +bool UnkDataStruct4_14::func_ov024_020d21d8() const { + switch (this->func_ov024_020d1da0()) { + case 0x01: + case 0x04: + case 0x44: + case 0x40: + case 0x11: + case 0x10: + return true; + default: + break; + } + + return false; +} + +bool UnkDataStruct4_14::func_ov024_020d223c() const { + if (!this->func_ov024_020d21d8() && func_02032784(this->func_ov024_020d1da0()) == 2) { + return true; + } + + return false; +} + +bool UnkDataStruct4_14::func_ov024_020d2270(unk32 param1, unk32 param2) const { + u8 value = func_ov024_020d1a18(param1); + + if (this->mUnk_0C[param2] & value && !(this->mUnk_0F[param2] & value)) { + return true; + } + + return false; +} + +unk32 UnkDataStruct4_14::func_ov024_020d22ac(unk32 param1) const { + u8 temp_r7 = func_ov024_020d1a18(param1); + bool var_r5 = false; + + for (int i = 0; i < ARRAY_LEN(data_ov024_020d7560); i++) { + unk32 temp_r2 = data_ov024_020d7560[i]; + + if (this->mUnk_0F[temp_r2] & temp_r7) { + return temp_r2; + } + + if (this->func_ov024_020d2270(param1, temp_r2)) { + var_r5 = true; + } + } + + return var_r5 ? -1 : -2; +} + +bool UnkDataStruct4_14::func_ov024_020d2320(unk32 param1) const { + UnkStruct_027e0ce0::func_ov000_0205c904()->func_ov024_020d3f4c(this->mUnk_02[param1], this->mUnk_06[param1]); +} + +unk32 UnkDataStruct4_14::func_ov024_020d2348(unk32 param1) const { + unk32 var_r6 = 0; + + for (int i = 0; i < ARRAY_LEN(data_ov024_020d7684); i++) { + //! TODO: fake match, how is this accessed?? + if (GET_FLAG2(data_ov024_020d7684[this->func_ov024_020d22ac(i)][12], param1)) { + var_r6++; + } + } + + return var_r6; +} + +bool UnkDataStruct4_14::func_ov024_020d239c() const { + u8 temp_r0 = func_ov024_020d1da0(); + + if (temp_r0 == 4 || temp_r0 == 0x40 || temp_r0 == 0x44) { + return true; + } + + return false; +} + +bool UnkDataStruct4_14::func_ov024_020d23bc() const { + u8 temp_r0 = func_ov024_020d1da0() + 0xFF; + bool var_r0 = false; + + if (temp_r0 > 0x10) { + return false; + } + + if (GET_FLAG2(0x18001, temp_r0)) { + var_r0 = true; + } + + return var_r0; +} + +bool UnkDataStruct4_14::func_ov024_020d23ec() const { + bool var_r4 = false; + u8 value = this->func_ov024_020d1d78(); + + if (func_02032784(value) == 3 && (this->func_ov024_020d2464(1) || this->func_ov024_020d2464(0))) { + var_r4 = true; + } + + return var_r4; +} + +bool UnkDataStruct4_14::func_ov024_020d243c() const { + return this->func_ov024_020d23ec(); +} + +bool UnkDataStruct4_14::func_ov024_020d2448() const { + u8 value = this->func_ov024_020d1da0(); + return value == 0x11 || value == 0x44 ? true : false; +} + +bool UnkDataStruct4_14::func_ov024_020d2464(bool param1) const { + if (param1) { + return this->mUnk_13 == 0x01; + } + + return this->mUnk_13 == 0x02; +} diff --git a/src/024_MainGame/UnkStruct_020d8698_024.cpp b/src/024_MainGame/UnkStruct_020d8698_024.cpp index 7cb89980b..12ad8ad24 100644 --- a/src/024_MainGame/UnkStruct_020d8698_024.cpp +++ b/src/024_MainGame/UnkStruct_020d8698_024.cpp @@ -69,7 +69,7 @@ UnkStruct_020d8698::UnkStruct_020d8698() : this->mUnk_024 = new(HeapIndex_1) UnkStruct_020d8698_24(); this->mUnk_02C = new(HeapIndex_1) UnkStruct_020d8698_2C(); - if (!data_027e09a4->func_01ffd3d8()) { + if (!data_027e09a4->IsTrain()) { this->mUnk_034 = new(HeapIndex_1) UnkStruct_020d8698_34(); this->mUnk_044 = new(HeapIndex_1) UnkStruct_020d8698_44(); @@ -86,26 +86,17 @@ UnkStruct_020d8698::UnkStruct_020d8698() : } UnkStruct_020d8698::~UnkStruct_020d8698() { - delete this->mUnk_01C; - this->mUnk_01C = NULL; + DELETE(this->mUnk_01C); + DELETE(this->mUnk_024); + DELETE(this->mUnk_02C); - delete this->mUnk_024; - this->mUnk_024 = NULL; - - delete this->mUnk_02C; - this->mUnk_02C = NULL; - - if (!data_027e09a4->func_01ffd3d8()) { - delete this->mUnk_034; - this->mUnk_034 = NULL; - - delete this->mUnk_044; - this->mUnk_044 = NULL; + if (!data_027e09a4->IsTrain()) { + DELETE(this->mUnk_034); + DELETE(this->mUnk_044); } if (this->mUnk_03C != NULL) { - delete this->mUnk_03C; - this->mUnk_03C = NULL; + DELETE(this->mUnk_03C); } } @@ -150,7 +141,7 @@ void UnkStruct_020d8698::func_ov024_020cd150() { this->mUnk_024->func_ov024_020ce570(); this->mUnk_02C->func_ov024_020ceda8(); - if (!data_027e09a4->func_01ffd3d8()) { + if (!data_027e09a4->IsTrain()) { this->mUnk_034->func_ov024_020cf698(); this->mUnk_044->func_ov031_0210eeb4(); data_ov024_020d8698->func_ov024_020cd458(data_027e0ce0->mUnk_2C->mEquippedItem, true); @@ -174,7 +165,7 @@ void UnkStruct_020d8698::vfunc_08(Input *pButtons, TouchControl *pTouchControl) this->mUnk_02C->func_ov024_020cef58(); } - if (!data_027e09a4->func_01ffd3d8() && this->mUnk_038) { + if (!data_027e09a4->IsTrain() && this->mUnk_038) { this->mUnk_034->func_ov024_020cf6e4(); } @@ -197,7 +188,7 @@ void UnkStruct_020d8698::vfunc_10(unk8 *param1) { this->mUnk_02C->func_ov024_020cf2b8(param1); } - if (!data_027e09a4->func_01ffd3d8() && this->mUnk_038) { + if (!data_027e09a4->IsTrain() && this->mUnk_038) { this->mUnk_034->func_ov024_020cf724(); } } @@ -254,13 +245,13 @@ void UnkStruct_020d8698::func_ov024_020cd420() { } void UnkStruct_020d8698::func_ov024_020cd458(ItemFlag itemFlag, bool param2) { - if (!data_027e09a4->func_01ffd3d8() && data_027e09a4->IsNotCutscene()) { + if (!data_027e09a4->IsTrain() && data_027e09a4->IsNotCutscene()) { this->mUnk_044->func_ov031_0210f7e4(itemFlag, param2); } } void UnkStruct_020d8698::func_ov024_020cd4a4(bool param1) { - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { return; } @@ -283,7 +274,7 @@ void UnkStruct_020d8698::func_ov024_020cd4e4(u16 param1, bool param2) { this->mUnk_030 = param2; break; case 2: - if (!data_027e09a4->func_01ffd3d8() && param2 != this->mUnk_048) { + if (!data_027e09a4->IsTrain() && param2 != this->mUnk_048) { this->mUnk_048 = param2; if (this->mUnk_044 != NULL) { @@ -344,7 +335,7 @@ void UnkStruct_020d8698_1C::func_ov024_020cd768() { } void UnkStruct_020d8698_1C::func_ov024_020cd774() { - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { s32 sVar1 = func_020196b0(0x34); s32 sVar2 = func_020196b0(0x27); @@ -428,7 +419,7 @@ void UnkStruct_020d8698_1C::func_ov024_020cdaac() { } Vec2s sp4; - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { UnkStruct_ov019_020d24c8_28_258 sp20(func_020196b0(0x34), data_ov024_020d73fa[var_r7]); sp4.x = sp20.mPosU.x; sp4.y = sp20.mPosU.y; @@ -488,7 +479,7 @@ void UnkStruct_020d8698_1C::func_ov024_020cdd3c(u8 param1, u8 param2) { u8 var_r4 = param2; u8 var_r5 = param1; - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { var_r5 *= 4; var_r4 *= 4; } @@ -582,7 +573,7 @@ void UnkStruct_020d8698_1C::func_ov024_020cdd3c(u8 param1, u8 param2) { void UnkStruct_020d8698_1C::func_ov024_020cde54(u8 param1) { u8 var_r5 = param1; - if (data_027e09a4->func_01ffd3d8() != 0) { + if (data_027e09a4->IsTrain() != 0) { var_r5 *= 4; } @@ -682,7 +673,7 @@ void UnkStruct_020d8698_1C::func_ov024_020cdfd8() { this->SetIterValue(var_r7, 0x01); if (this->mUnk_008 == this->mUnk_009) { - if (this->mUnk_008 == (data_027e09a4->func_01ffd3d8() ? 0x08 : 0x10) || + if (this->mUnk_008 == (data_027e09a4->IsTrain() ? 0x08 : 0x10) || this->GetIterValue(this->mUnk_008) == 0x0B || this->GetIterValue(this->mUnk_008) == 0x00) { this->mUnk_024.func_ov000_02060b64(); @@ -759,7 +750,7 @@ void UnkStruct_020d8698_1C::func_ov024_020cdfd8() { } u8 UnkStruct_020d8698_1C::func_ov024_020ce218() { - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { return data_027e0ce0->mUnk_34->mUnk_28 * 4; } @@ -767,7 +758,7 @@ u8 UnkStruct_020d8698_1C::func_ov024_020ce218() { } u8 UnkStruct_020d8698_1C::func_ov024_020ce260() { - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { return data_027e0ce0->mUnk_34->mUnk_24 * 4; } @@ -775,7 +766,7 @@ u8 UnkStruct_020d8698_1C::func_ov024_020ce260() { } u32 UnkStruct_020d8698_1C::func_ov024_020ce2a8() { - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { return 0x08; } @@ -1010,7 +1001,7 @@ UnkStruct_020d8698_2C::UnkStruct_020d8698_2C() : this->func_ov024_020cee84(); } - if (data_027e09a4->func_01ffd3d8() && gpCargoManager->GetCargo()->IsTypeSet()) { + if (data_027e09a4->IsTrain() && gpCargoManager->GetCargo()->IsTypeSet()) { this->mUnk_141 = true; } else { this->mUnk_141 = false; diff --git a/src/024_MainGame/UnkStruct_027e0ce0_34_024.cpp b/src/024_MainGame/UnkStruct_027e0ce0_34_024.cpp index e69de29bb..a56ae0fda 100644 --- a/src/024_MainGame/UnkStruct_027e0ce0_34_024.cpp +++ b/src/024_MainGame/UnkStruct_027e0ce0_34_024.cpp @@ -0,0 +1,258 @@ +#include "MainGame/CargoManager.hpp" +#include "MainGame/PassengerManager.hpp" +#include "Unknown/Common.hpp" +#include "Unknown/UnkStruct_020d8698.hpp" +#include "Unknown/UnkStruct_027e0cd8.hpp" +#include "Unknown/UnkStruct_027e0ce0.hpp" +#include "Unknown/UnkStruct_027e0d00.hpp" + +static const s8 data_ov024_020d7570[] = {0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x08}; +static const s32 data_ov024_020d7578[4] = {0, 0, -1, -1}; +static const s32 data_ov024_020d7588[4] = {0, 2, -1, -1}; + +THUMB_BEGIN + +s8 UnkStruct_027e0ce0_34::func_ov024_020d3c54(unk32 param1) { + return data_ov024_020d7570[param1]; +} + +void UnkStruct_027e0ce0_34::func_ov024_020d3c60(SaveFile_00000_0000_Data_D8 *param1) { + param1->spiritTrackFlags = this->mSpiritTrackFlags; + + for (s32 i = 0; i < ARRAY_LEN(param1->unk_60); i++) { + if (i < this->mUnk_2C) { + param1->unk_60[i] = this->mUnk_00[i]; + param1->unk_64[i] = this->mUnk_10[i]; + } else { + param1->unk_60[i] = -1; + param1->unk_64[i] = -1; + } + } + + gpPassengerManager->func_ov024_020d41f4(¶m1->unk_40); + param1->unk_69 = this->mUnk_34; + + for (u32 i = 0; i < ARRAY_LEN(param1->trackFlags); i++) { + param1->trackFlags[i] = this->mTrackFlags[i]; + } + + unk32 cargoType = CargoType_None; + unk32 cargoAmount = 0; + gpCargoManager->GetTypeAndAmount(&cargoType, &cargoAmount); + + param1->cargoType = cargoType; + param1->cargoAmount = cargoAmount; +} + +unk32 UnkStruct_027e0ce0_34::func_ov024_020d3cf4(unk32 param1) { + unk32 iVar1 = this->func_ov024_020d3dec(param1); + unk32 iVar2 = this->func_ov024_020d3e0c(param1); + return data_027e0d00->mUnk_020[iVar1][iVar2]->mUnk_B0; +} + +unk32 UnkStruct_027e0ce0_34::func_ov024_020d3d20() { + unk32 iVar1 = this->mUnk_2C; + + if (iVar1 == 4) { + unk32 iVar2 = this->func_ov024_020d3e0c(0); + bool bVar1 = true; + + for (int i = 1; i < 4; i++) { + if (iVar2 != this->func_ov024_020d3e0c(i)) { + bVar1 = false; + break; + } + } + + if (bVar1) { + return UnkStruct_027e0ce0_34::func_ov024_020d3c54(iVar2); + } + } + + for (int i = 0; i < iVar1; i++) { + if (this->func_ov024_020d3e0c(i) != 0) { + return 0x05; + } + } + + return 4; +} + +void UnkStruct_027e0ce0_34::func_ov024_020d3d80(unk32 param1) { + unk32 *puVar1; + + this->mUnk_24 = param1; + + if (this->mUnk_24 < this->mUnk_28) { + puVar1 = &this->mUnk_24; + } else { + puVar1 = &this->mUnk_28; + } + + this->mUnk_28 = *puVar1; +} + +void UnkStruct_027e0ce0_34::func_ov024_020d3d98(unk32 param1, unk32 param2) { + this->mSpiritTrackFlags |= this->func_ov024_020d3dc0(param1, param2); +} + +bool UnkStruct_027e0ce0_34::func_ov024_020d3da8(unk32 param1, unk32 param2) { + if (this->mSpiritTrackFlags & this->func_ov024_020d3dc0(param1, param2)) { + return true; + } + + return false; +} + +u32 UnkStruct_027e0ce0_34::func_ov024_020d3dc0(unk32 param1, unk32 param2) { + return 1 << (param1 + param2 * 4); +} + +bool UnkStruct_027e0ce0_34::func_ov024_020d3dcc() { + //! TODO: fake match? + for (int i = 0; i < *(volatile unk32 *) &this->mUnk_2C; i++) { + if (this->mUnk_00[i] == 3) { + return true; + } + } + + return false; +} + +THUMB_END + +unk32 UnkStruct_027e0ce0_34::func_ov024_020d3dec(unk32 param1) { + if (param1 >= 0 && param1 < this->mUnk_2C) { + return this->mUnk_00[param1]; + } + + return -1; +} + +unk32 UnkStruct_027e0ce0_34::func_ov024_020d3e0c(unk32 param1) { + if (param1 >= 0 && param1 < this->mUnk_2C) { + return this->mUnk_10[param1]; + } + + return -1; +} + +void UnkStruct_027e0ce0_34::func_ov024_020d3e30(unk32 param1, unk32 param2) { + if (param1 < 0) { + return; + } + + if (param1 >= this->mUnk_2C) { + return; + } + + this->mUnk_10[param1] = param2; + this->func_ov024_020d3d80(this->func_ov024_020d3d20()); +} + +void *UnkStruct_027e0ce0_34::func_ov024_020d3e68(unk32 param1) { + unk32 iVar1 = this->func_ov024_020d3e0c(param1); + unk32 iVar2 = this->func_ov024_020d3dec(param1); + return GetUnkPointer1_Impl((UnkResourceStruct *) data_027e0d00->mUnk_020[iVar2][iVar1]->mUnk_50); +} + +void UnkStruct_027e0ce0_34::func_ov024_020d3ee8(unk32 param1, u16 param2, bool param3) { + if (param1 == ARRAY_LEN(this->mTrackFlags)) { + data_027e0cd8->func_ov000_02081d7c(param2, 0x03, param3); + return; + } + + if (param3) { + SET_FLAG_ALT2(this->mTrackFlags, param1, param2); + } else { + UNSET_FLAG_ALT2(this->mTrackFlags, param1, param2); + } +} + +bool UnkStruct_027e0ce0_34::func_ov024_020d3f4c(s8 param1, u16 param2) { + if (param1 == ARRAY_LEN(this->mTrackFlags)) { + return data_027e0cd8->func_ov000_02081e30(param2, 0x03); + } + + return GET_FLAG_ALT2(this->mTrackFlags, param1, param2); +} + +void UnkStruct_027e0ce0_34::func_ov024_020d3f8c() { + this->func_ov024_020d3d98(1, 0); + this->mUnk_2C = 3; + this->mUnk_00[1] = 1; + this->mUnk_10[1] = 0; + this->mUnk_00[2] = 2; + this->mUnk_10[2] = 0; +} + +void UnkStruct_027e0ce0_34::func_ov024_020d3fc8() { + this->func_ov024_020d3d98(3, 0); + this->mUnk_00[this->mUnk_2C] = 3; + this->mUnk_10[this->mUnk_2C] = 0; + this->mUnk_2C++; +} + +void UnkStruct_027e0ce0_34::func_ov024_020d4008(unk32 param1) { + unk32 temp_r2; + unk32 var_r3; + unk32 temp_ip; + + temp_r2 = this->mUnk_24; + temp_ip = this->mUnk_28; + var_r3 = temp_ip + param1; + + if (var_r3 > temp_r2) { + var_r3 = temp_r2; + } else if (var_r3 < 0) { + var_r3 = 0; + } + + this->mUnk_28 = var_r3; + data_ov024_020d8698->func_ov024_020cd348(temp_ip, var_r3); +} + +void UnkStruct_027e0ce0_34::func_ov024_020d404c() { + s32 temp1[4]; + s32 temp2[4]; + +#if __MWERKS__ + temp1 = data_ov024_020d7588; + temp2 = data_ov024_020d7578; +#else + temp1[0] = data_ov024_020d7588[0]; + temp1[1] = data_ov024_020d7588[1]; + temp1[2] = data_ov024_020d7588[2]; + temp1[3] = data_ov024_020d7588[3]; + + temp2[0] = data_ov024_020d7578[0]; + temp2[1] = data_ov024_020d7578[1]; + temp2[2] = data_ov024_020d7578[2]; + temp2[3] = data_ov024_020d7578[3]; +#endif + + this->func_ov024_020d4098(temp1, temp2); +} + +void UnkStruct_027e0ce0_34::func_ov024_020d4098(s32 *param1, s32 *param2) { + s32 value1; + s32 value2; + s32 var_r6 = 0; + + for (int i = 0; i < 4; i++) { + value1 = param1[i]; + + if (value1 > -1 && value1 < 4 && (value2 = param2[i]) > -1 && value2 < 8) { + this->mUnk_00[i] = value1; + this->mUnk_10[i] = value2; + this->func_ov024_020d3d98(value1, value2); + var_r6++; + } else { + this->mUnk_00[i] = -1; + this->mUnk_10[i] = -1; + break; + } + } + + this->mUnk_2C = var_r6; +} diff --git a/src/024_MainGame/UnkStruct_027e0cf8_00_0C_024.cpp b/src/024_MainGame/UnkStruct_027e0cf8_00_0C_024.cpp index e69de29bb..beb70274b 100644 --- a/src/024_MainGame/UnkStruct_027e0cf8_00_0C_024.cpp +++ b/src/024_MainGame/UnkStruct_027e0cf8_00_0C_024.cpp @@ -0,0 +1,717 @@ +#include "Unknown/UnkStruct_027e0998.hpp" +#include "Unknown/UnkStruct_027e09a4.hpp" +#include "Unknown/UnkStruct_027e09b8.hpp" +#include "Unknown/UnkStruct_027e0cf8.hpp" +#include "versions.h" + +extern "C" bool func_ov024_020d5340(s16 param1); +extern "C" bool func_ov000_0205ca18(unk32 param1, unk32 param2); +extern "C" bool func_ov000_0205c9d0(unk32 stationSceneIdx); +extern VecFx32 data_027e07d4; + +static const Vec2sb data_ov024_020d8094(0x7F, 0x7F); + +static const UnkStruct_ov024_020d8098 data_ov024_020d8098[] = { + {-1, SceneIndex_d_main_f, data_ov024_020d8094, 0x00, 0x03, false, false}, + {-1, SceneIndex_f_htown, data_ov024_020d8094, 0x01, 0x02, true, false}, + {-1, SceneIndex_f_first, data_ov024_020d8094, 0x02, 0x0A, true, false}, + {-1, SceneIndex_f_forest1, data_ov024_020d8094, 0x03, 0x0B, true, false}, + {-1, SceneIndex_f_snow, data_ov024_020d8094, 0x04, 0x0C, true, false}, + {-1, SceneIndex_f_water, data_ov024_020d8094, 0x05, 0x0E, true, false}, + {-1, SceneIndex_f_flame5, data_ov024_020d8094, 0x06, 0x0D, true, false}, + {-1, SceneIndex_f_forest2, data_ov024_020d8094, 0x07, 0x13, true, true}, + {-1, SceneIndex_f_snow2, data_ov024_020d8094, 0x08, 0x14, true, true}, + {-1, SceneIndex_f_water2, data_ov024_020d8094, 0x09, 0x15, true, true}, + {-1, SceneIndex_f_flame2, data_ov024_020d8094, 0x0A, 0x16, true, true}, + {-1, SceneIndex_d_forest, data_ov024_020d8094, 0x0B, 0x05, false, false}, + {-1, SceneIndex_d_snow26, data_ov024_020d8094, 0x0C, 0x06, false, false}, + {0x0A, SceneIndex_d_water27, data_ov024_020d8094, 0x0E, 0x1D, false, false}, + {0x06, SceneIndex_d_water27, data_ov024_020d8094, 0x0D, 0x07, false, false}, + {-1, SceneIndex_d_flame, data_ov024_020d8094, 0x0F, 0x08, false, false}, + {-1, SceneIndex_d_sand, data_ov024_020d8094, 0x1B, 0x09, false, false}, + {-1, SceneIndex_f_tetsuo, data_ov024_020d8094, 0x10, 0x1F, true, true}, + {-1, SceneIndex_f_bridge, data_ov024_020d8094, 0x11, 0x1E, true, true}, + {-1, SceneIndex_f_bridge2, data_ov024_020d8094, 0x12, 0x19, true, true}, + {-1, SceneIndex_f_flame3, data_ov024_020d8094, 0x1C, 0x20, true, false}, + {-1, SceneIndex_f_ajito, data_ov024_020d8094, 0x1D, 0x26, true, true}, + {-1, SceneIndex_f_sand, data_ov024_020d8094, 0x1E, 0x17, true, true}, + {-1, SceneIndex_f_flame4, data_ov024_020d8094, 0x1F, 0x24, true, true}, + {-1, SceneIndex_f_rabbit, data_ov024_020d8094, 0x20, 0x25, true, true}, + {-1, SceneIndex_f_kakushi1, Vec2sb(0x01, 0x01), 0x26, 0x29, true, true}, + {-1, SceneIndex_f_kakushi2, data_ov024_020d8094, 0x27, 0x21, true, true}, + {-1, SceneIndex_f_kakushi3, data_ov024_020d8094, 0x28, 0x22, true, true}, + {-1, SceneIndex_f_water3, data_ov024_020d8094, 0x29, 0x1C, true, true}, + {-1, SceneIndex_f_kakushi1, Vec2sb(0x0E, 0x01), 0x38, 0x29, true, true}, +}; + +static const UnkStruct_ov024_020d7454 data_ov024_020d7454[] = { + { + .mSceneIndex = SceneIndex_t_area1, + .mUnk_02 = 0x000B, + .mUnk_04 = 0x1B, + .mAdvFlag = AdventureFlag_AnoukiPuzzleComplete, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x14, + }, + { + .mSceneIndex = SceneIndex_t_area2, + .mUnk_02 = 0x000A, + .mUnk_04 = 0x1A, + .mAdvFlag = AdventureFlag_OpenedMarineTemplePath, + .mUnk_08 = true, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x15, + }, + { + .mSceneIndex = SceneIndex_t_area3, + .mUnk_02 = 0xFFFF, + .mUnk_04 = 0x1B, + .mAdvFlag = AdventureFlag_ObtainedThreeKeysToMountainTemple, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x16, + }, + { + .mSceneIndex = SceneIndex_t_area0, + .mUnk_02 = 0x000F, + .mUnk_04 = 0x28, + .mAdvFlag = AdventureFlag_ZeldaTextAfterCompassOfLight, + .mUnk_08 = true, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x21, + }, + { + .mSceneIndex = SceneIndex_t_area0, + .mUnk_02 = 0x0014, + .mUnk_04 = 0x0F, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x17, + }, + { + .mSceneIndex = SceneIndex_t_area1, + .mUnk_02 = 0x0014, + .mUnk_04 = 0x11, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x18, + }, + { + .mSceneIndex = SceneIndex_t_area2, + .mUnk_02 = 0x0014, + .mUnk_04 = 0x12, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x19, + }, + { + .mSceneIndex = SceneIndex_t_area3, + .mUnk_02 = 0x0014, + .mUnk_04 = 0x10, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x1A, + }, + { + .mSceneIndex = SceneIndex_t_smarine, + .mUnk_02 = 0x0006, + .mUnk_04 = 0x1A, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x22, + }, + { + .mSceneIndex = SceneIndex_t_dark, + .mUnk_02 = 0x000F, + .mUnk_04 = 0x04, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x2A, + }, + { + .mSceneIndex = SceneIndex_t_dark, + .mUnk_02 = 0x000F, + .mUnk_04 = 0x04, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x2B, + }, + { + .mSceneIndex = SceneIndex_t_dark, + .mUnk_02 = 0x000F, + .mUnk_04 = 0x04, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x2C, + }, + { + .mSceneIndex = SceneIndex_t_dark, + .mUnk_02 = 0x000F, + .mUnk_04 = 0x04, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x2D, + }, + { + .mSceneIndex = SceneIndex_t_dark, + .mUnk_02 = 0x000F, + .mUnk_04 = 0x04, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x2E, + }, + { + .mSceneIndex = SceneIndex_t_dark, + .mUnk_02 = 0x000F, + .mUnk_04 = 0x04, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x2F, + }, + { + .mSceneIndex = SceneIndex_t_dark, + .mUnk_02 = 0x000F, + .mUnk_04 = 0x04, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x36, + }, + { + .mSceneIndex = SceneIndex_t_dark, + .mUnk_02 = 0x000F, + .mUnk_04 = 0x04, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x37, + }, +}; + +UnkStruct_027e0cf8_00::UnkStruct_027e0cf8_00() { + this->mUnk_2238 = &this->mUnk_0018.mUnk_18C0; + this->mUnk_223C = 0; + this->mUnk_2240.x = 0; + this->mUnk_2240.y = 0; + this->mUnk_2244 = 0; + this->mUnk_2248 = 0; + this->mUnk_224C = 0; + this->mUnk_2250 = 0; + this->mUnk_2254 = 1; +} + +UnkStruct_027e0cf8_00::~UnkStruct_027e0cf8_00() {} + +void UnkStruct_027e0cf8_00::func_ov024_020cf9d4(UnkStruct_027e0cf8_00_18_00 *param1) { + switch (this->mRandom.Next32(3)) { + case 0: + param1->mUnk_00.func_ov000_0206082c(0x64, 0x00); + break; + case 1: + param1->mUnk_00.func_ov000_0206082c(0x64, 0x01); + break; + case 2: + param1->mUnk_00.func_ov000_0206082c(0x64, 0x02); + break; + default: + break; + } + + u32 value1 = this->mRandom.Next32(((u8 *) this->mUnk_2238 - (u8 *) &this->mUnk_0018.mUnk_18C0) / 8); + + u32 value2 = this->mRandom.Next32(17); + u32 value3 = *(u32 *) ((u8 *) &this->mUnk_0018.mUnk_18C0 + (value1 << 3)); + param1->mUnk_78 = value3 + ((value2 - 8) << 12); + + u32 value4 = this->mRandom.Next32(17); + u32 value5 = *(u32 *) ((u8 *) &this->mUnk_0018.mUnk_18C0 + (value1 << 3) + 4); + param1->mUnk_7C = value5 + ((value4 - 8) << 12); + + param1->mUnk_80 = this->mRandom.Next32(25); +} + +void UnkStruct_027e0cf8_00::func_ov024_020cfb7c(UnkDataStruct4 *param1, Vec2s *param2, unk32 param3, u16 param4, unk32 param5, + unk32 param6) { + this->mUnk_224C = 0; + this->mUnk_2244 = param5; + this->mUnk_2248 = param6; + + if (param3 == -1) { + this->mUnk_223C = 0; + return; + } + + Vec2s_Copy(param2, &this->mUnk_2240); + this->mRandom.Setup(); + this->mUnk_2238 = &this->mUnk_0018.mUnk_18C0; + + VecFx32 spC = data_027e07d4; + + for (s16 i = 0; i < ARRAY_LEN(param1->mUnk_14); i++) { + UnkDataStruct4_14_2 **pUnk_14 = param1->mUnk_14; + + for (s16 j = 0; j < ARRAY_LEN(param1->mUnk_14[0]->mUnk_00); j++) { + if (pUnk_14[i]->mUnk_00[j].func_ov024_020d1d30(param3, param4)) { + param1->func_ov024_020d2b08(i, j, &spC); + + Vec2p temp2; + temp2.x = spC.x; + temp2.y = spC.z; + + Vec2p *unk_2238 = this->mUnk_2238; + if (unk_2238 != NULL) { + Vec2p_Copy(&temp2, unk_2238); + Vec2p_Copy(&temp2, unk_2238); //! TODO: fake match? + } + + this->mUnk_2238++; + } + } + } + + s32 value = (((u8 *) this->mUnk_2238 - (u8 *) &this->mUnk_0018.mUnk_18C0) / 8) * 2; + + if (value > ARRAY_LEN(this->mUnk_0018.mUnk_00)) { + value = ARRAY_LEN(this->mUnk_0018.mUnk_00); + } + + this->mUnk_223C = value; + + for (int i = 0; i < value; i++) { + this->func_ov024_020cf9d4(&this->mUnk_0018.mUnk_00[i]); + value = this->mUnk_223C; + } + + this->mUnk_2250 = value; +} + +s32 UnkStruct_027e0cf8_00::func_ov024_020cfd54(s32 param1, s32 stationSceneIdx, s32 param3, s32 param4) { + u32 i; + const UnkStruct_ov024_020d8098 *ptr; + bool var_r8; + bool var_r9; + bool var_r10; + + for (i = 0; i < ARRAY_LEN(data_ov024_020d8098); i++) { + ptr = &data_ov024_020d8098[i]; + + var_r8 = 1; + if (ptr->mUnk_00 != -1 && ptr->mUnk_00 != param1) { + var_r8 = 0; + } + + var_r10 = 1; + if (ptr->mStationSceneIdx != stationSceneIdx) { + var_r10 = 0; + } + + var_r9 = 1; + if (ptr->mUnk_04.x != data_ov024_020d8094.x || ptr->mUnk_04.y != data_ov024_020d8094.y) { + s8 temp[2]; + temp[0] = param3; + temp[1] = param4; + + s8 *new_var4 = temp; + if (ptr->mUnk_04.x != new_var4[0] || ptr->mUnk_04.y != new_var4[1]) { + var_r9 = 0; + } + } + + if (var_r8 && var_r10 && var_r9) { + return i; + } + } + + return -1; +} + +bool UnkStruct_027e0cf8_00::func_ov024_020cfe24(s16 stationSceneIdx) { + for (u32 i = 0; i < ARRAY_LEN(data_ov024_020d8098); i++) { + if (stationSceneIdx == data_ov024_020d8098[i].mStationSceneIdx) { + return data_ov024_020d8098[i].mUnk_0A; + } + } + + return false; +} + +s32 UnkStruct_027e0cf8_00::func_ov024_020cfe6c(s32 param1, s32 param2, s32 param3, s32 param4) { + s32 index = UnkStruct_027e0cf8_00::func_ov024_020cfd54(param1, param2, param3, param4); + + if (index >= 0) { + return data_ov024_020d8098[index].mUnk_06; + } + + return -1; +} + +s16 UnkStruct_027e0cf8_00::func_ov024_020cfe94(s32 param1) { + for (u32 i = 0; i < ARRAY_LEN(data_ov024_020d8098); i++) { + const UnkStruct_ov024_020d8098 *ptr = &data_ov024_020d8098[i]; + + if (ptr->mUnk_06 == param1) { + return ptr->mStationSceneIdx; + } + } + + return SceneIndex_None; +} + +bool UnkStruct_027e0cf8_00::func_ov024_020cfed0(s16 param1) { + for (u32 i = 0; i < ARRAY_LEN(data_ov024_020d8098); i++) { + if (param1 == data_ov024_020d8098[i].mStationSceneIdx) { + return data_ov024_020d8098[i].mUnk_0B; + } + } + + func_ov024_020d5340(param1); + return false; +} + +void UnkStruct_027e0cf8_0C_00::func_ov024_020cff1c() { + this->mUnk_0C.x = 0; + this->mUnk_0C.y = 0; + this->mUnk_14 = -1; + this->mUnk_16 = -1; + this->mUnk_18 = false; + this->mUnk_19 = false; + this->mUnk_1A = false; + this->mUnk_1B = false; +} + +UnkStruct_027e0cf8_0C::UnkStruct_027e0cf8_0C() { + this->mUnk_168.x = 0; + this->mUnk_168.y = 0; + this->mUnk_16C = 0; +} + +UnkStruct_027e0cf8_0C::~UnkStruct_027e0cf8_0C() {} + +void UnkStruct_027e0cf8_0C::func_ov024_020cff8c(UnkDataStruct4 *param1, Vec2s *param2) { + Vec2s_Copy(param2, &this->mUnk_168); + this->mUnk_150.func_ov000_0205fc20(0x66, 0x00, NULL, NULL); + this->mUnk_15C.func_ov000_0205fc20(0x66, 0x01, NULL, NULL); + this->mUnk_16C = 0; + this->func_ov024_020d002c(param1); + this->func_ov024_020d01c0(param1); +} + +void UnkStruct_027e0cf8_0C::func_ov024_020d0004() { + for (int i = 0; i < ARRAY_LEN(this->mUnk_000); i++) { + this->mUnk_000[i].func_ov024_020cff1c(); + } +} + +void UnkStruct_027e0cf8_0C::func_ov024_020d002c(const UnkDataStruct4 *param1) { + int i; + int j; + unk32 unk_16C; + const UnkStruct_ov024_020d8098 *temp_r6; + UnkStruct_027e0cf8_0C_00 *temp_r9; + s8 temp_r8; + UnkDataStruct4_14_2 *const *sp8; + const UnkDataStruct4_14 *pUnk_14; + const UnkDataStruct4_14 *new_var; + SceneIndex temp_r11; + VecFx32 spC; + s32 temp_r0; + bool var_r0_2; + bool var_r0_3; + + temp_r11 = param1->mSceneIndex; + spC.x = 0; + spC.y = 0; + spC.z = 0; + + for (i = 0; i < ARRAY_LEN(param1->mUnk_14); i++) { + for (j = 0; j < ARRAY_LEN(param1->mUnk_14[0]->mUnk_00); j++) { + sp8 = param1->mUnk_14; + pUnk_14 = sp8[i]->mUnk_00; + temp_r8 = sp8[i]->mUnk_00[j].mStationSceneIndex; + new_var = &pUnk_14[j]; + + if (temp_r8 == SceneIndex_Max) { + continue; + } + + temp_r0 = UnkStruct_027e0cf8_00::func_ov024_020cfd54(temp_r11, temp_r8, i, j); + if (temp_r0 < 0) { + continue; + } + + temp_r6 = &data_ov024_020d8098[temp_r0]; + + if (temp_r8 == SceneIndex_Max) { + continue; + } + + unk_16C = this->mUnk_16C; + this->mUnk_000[unk_16C].mUnk_18 = UnkStruct_027e0cf8_0C::func_ov024_020d0510(temp_r6->mUnk_06); + + if (temp_r6->mUnk_08 != 0xFFFF) { + this->mUnk_000[unk_16C].mUnk_00.func_ov000_0205fc20(0x66, temp_r6->mUnk_08, NULL, NULL); + this->mUnk_000[unk_16C].mUnk_1B = true; + } else { + this->mUnk_000[unk_16C].mUnk_1B = false; + } + + param1->func_ov024_020d2b08(i, j, &spC); + + this->mUnk_000[unk_16C].mUnk_0C.x = spC.x; + this->mUnk_000[unk_16C].mUnk_0C.y = spC.z; + +#if IS_JP + if (temp_r8 == SceneIndex_d_main_f) { + if (param1->mSceneIndex == SceneIndex_t_area1 || param1->mSceneIndex == SceneIndex_t_area3) { + this->mUnk_000[unk_16C].mUnk_0C.y -= 0xC000; + } + } +#endif + + this->mUnk_000[unk_16C].mUnk_14 = UnkStruct_027e0cf8_00::func_ov024_020cfe6c(temp_r11, temp_r8, i, j); + this->mUnk_000[unk_16C].mUnk_16 = temp_r8; + + if (new_var->func_ov024_020d23bc() && UnkStruct_027e0cf8_00::func_ov024_020cfe24(temp_r8)) { + var_r0_2 = true; + } else { + var_r0_2 = false; + } + this->mUnk_000[unk_16C].mUnk_19 = var_r0_2; + + if (new_var->func_ov024_020d239c() && UnkStruct_027e0cf8_00::func_ov024_020cfe24(temp_r8)) { + var_r0_3 = true; + } else { + var_r0_3 = false; + } + this->mUnk_000[unk_16C].mUnk_1A = var_r0_3; + + this->mUnk_16C++; + } + } +} + +void UnkStruct_027e0cf8_0C::func_ov024_020d01c0(const UnkDataStruct4 *param1) { + SceneIndex sceneIndex = param1->mSceneIndex; + + for (u32 i = 0; i < ARRAY_LEN(data_ov024_020d7454); i++) { + const UnkStruct_ov024_020d7454 *temp_r7 = &data_ov024_020d7454[i]; + + if (sceneIndex == temp_r7->mSceneIndex) { + UnkStruct_027e0cf8_0C_00 *temp_r8 = &this->mUnk_000[this->mUnk_16C]; + + if (temp_r7->mAdvFlag == AdventureFlag_Unset) { + temp_r8->mUnk_18 = true; + } else { + bool var_r1; + + if (data_027e09b8->HasAdventureFlag(temp_r7->mAdvFlag)) { + var_r1 = true; + } else { + var_r1 = false; + } + + if (temp_r7->mUnk_08 == var_r1) { + temp_r8->mUnk_18 = true; + } else { + temp_r8->mUnk_18 = false; + } + } + + temp_r8->mUnk_00.func_ov000_0205fc20(0x66, temp_r7->mUnk_04, NULL, NULL); + + if (!param1->func_ov024_020d308c(&temp_r8->mUnk_0C.x, &temp_r8->mUnk_0C.y, temp_r7->mUnk_0C)) { + temp_r8->mUnk_0C.x = 0; + temp_r8->mUnk_0C.y = 0; + } + + temp_r8->mUnk_14 = temp_r7->mUnk_0C; + temp_r8->mUnk_16 = temp_r7->mUnk_02; + temp_r8->mUnk_19 = temp_r7->mUnk_09; + temp_r8->mUnk_1A = temp_r7->mUnk_0A; + temp_r8->mUnk_1B = true; + this->mUnk_16C++; + } + } +} + +bool UnkStruct_027e0cf8_0C::func_ov024_020d02e0(fx32 *pX, fx32 *pZ, s32 param3) { + //! TODO: fake match? + for (int i = 0; i < *(volatile unk32 *) &this->mUnk_16C; i++) { + UnkStruct_027e0cf8_0C_00 *iVar2 = &this->mUnk_000[i]; + + if (iVar2->mUnk_14 == param3) { + if (pX != NULL) { + *pX = iVar2->mUnk_0C.x; + } + + if (pZ != NULL) { + *pZ = iVar2->mUnk_0C.y; + } + + return true; + } + } + + return false; +} + +bool UnkStruct_027e0cf8_0C::func_ov024_020d0340(Vec2s *param1, unk32 param2) { + VecFx32 sp4 = data_027e07d4; + + if (this->func_ov024_020d02e0(&sp4.x, &sp4.z, param2)) { + Vec2s local_28; + local_28.x = 0x200; + local_28.y = 0x000; + + if (!data_027e0998->func_ov000_02061a48(&sp4, param1, &local_28)) { + return false; + } + + Vec2s_Add2(&this->mUnk_168, param1); + return true; + } + + return false; +} + +void UnkStruct_027e0cf8_0C::func_ov024_020d03f8(Vec2s *param1) { + Vec2s local_8; + local_8.x = param1->x; + local_8.y = param1->y; + UnkStruct_027e0cf8_00::func_ov024_020cfe94(this->func_ov024_020d041c(&local_8)); +} + +s32 UnkStruct_027e0cf8_0C::func_ov024_020d041c(Vec2s *param1) { + Vec2s sp0; + s16 var_r0; + s16 var_r2; + s16 var_r6; + s16 var_r7; + + for (int i = 0; i < 0x39; i++) { + switch (i) { + case 0x02: + var_r6 = 0; + var_r7 = -8; + break; + case 0x1D: + case 0x20: + var_r6 = -8; + var_r7 = 0; + break; + default: + var_r6 = 0; + var_r7 = 8; + break; + } + + if (this->func_ov024_020d0340(&sp0, i)) { + sp0.x -= var_r6; + sp0.y -= var_r7; + + sp0.x -= param1->x; + sp0.y -= param1->y; + + var_r2 = sp0.x; + if (var_r2 < 0) { + var_r2 = -var_r2; + } + + if (var_r2 < 12) { + var_r0 = sp0.y; + if (var_r0 < 0) { + var_r0 = -var_r0; + } + + if (var_r0 < 12) { + return i; + } + } + } + } + + return -1; +} + +bool UnkStruct_027e0cf8_0C::func_ov024_020d0510(s16 param1) { + for (u32 i = 0; i < ARRAY_LEN(data_ov024_020d8098); i++) { + const UnkStruct_ov024_020d8098 *ptr = &data_ov024_020d8098[i]; + + if (ptr->mUnk_06 == param1) { + if (ptr->mUnk_0B) { + if (param1 == 0x26) { + return func_ov000_0205ca18(0x3F, 0x00); + } + + if (param1 == 0x38) { + return func_ov000_0205ca18(0x3F, 0x0A); + } + + if (param1 == 0x29) { + return func_ov000_0205ca18(0x39, 0x0A); + } + + return func_ov000_0205c9d0(ptr->mStationSceneIdx); + } + + return true; + } + } + + return false; +} + +void UnkStruct_027e0cf8_0C::func_ov024_020d05d0(unk32 param1, bool param2) { + for (int i = 0; i < this->mUnk_16C; i++) { + if (param1 == this->mUnk_000[i].mUnk_14) { + this->mUnk_000[i].mUnk_18 = param2; + break; + } + } +} diff --git a/src/024_MainGame/UnkStruct_027e0cf8_08_00_024.cpp b/src/024_MainGame/UnkStruct_027e0cf8_08_00_024.cpp new file mode 100644 index 000000000..2cb0d6809 --- /dev/null +++ b/src/024_MainGame/UnkStruct_027e0cf8_08_00_024.cpp @@ -0,0 +1,133 @@ +#include "Unknown/UnkStruct_027e0cf8.hpp" + +#include + +extern "C" fx32 func_01ffb66c(unk32, unk32); + +bool UnkStruct_027e0cf8_08_00::func_ov024_020d3900(Vec2s *param1, fx32 *param2, fx32 *param3, unk32 param4, unk32 param5) { + return UnkStruct_027e0cf8_08_00::func_ov024_020d3970(param1, param2, param3, param4, param5); +} + +bool UnkStruct_027e0cf8_08_00::func_ov024_020d3914(Vec2s *param1, Vec2s *param2, Vec2s *param3) { + fx32 x = 0; + fx32 y = 0; + + if (UnkStruct_027e0cf8_08_00::func_ov024_020d3900(param1, &x, &y, param3->x, param3->y)) { + param2->x = x; + param2->y = y; + return true; + } + + return false; +} + +bool UnkStruct_027e0cf8_08_00::func_ov024_020d3970(Vec2s *param1, fx32 *param2, fx32 *param3, unk32 param4, unk32 param5) { + if (UnkStruct_027e0cf8_08_00::func_ov024_020d39fc(param1, param4, param5)) { + fx32 temp1 = param4 - param1->x; + fx32 temp2 = param5 - param1->y; + + fx32 temp_r5 = func_01ffb66c(temp1, 0x0C); + fx32 temp_r0 = func_01ffb66c(temp2, 0x0C); + + if (UnkStruct_027e0cf8_08_00::func_ov024_020d3a34(param1, temp_r5, temp_r0)) { + *param2 = temp_r5; + *param3 = temp_r0; + return true; + } + + return false; + } + + return false; +} + +bool UnkStruct_027e0cf8_08_00::func_ov024_020d39fc(Vec2s *param1, unk32 param2, unk32 param3) { + unk32 temp_r1 = param2 - param1->x; + unk32 temp_r0 = param3 - param1->y; + + if (temp_r1 >= 0 && temp_r1 < 0xF0 && temp_r0 >= 0 && temp_r0 < 0xB4) { + return true; + } + + return false; +} + +bool UnkStruct_027e0cf8_08_00::func_ov024_020d3a34(Vec2s *param1, unk32 param2, unk32 param3) { + if (param2 >= 0 && param2 < 0x14 && param3 >= 0 && param3 < 0x0F) { + return true; + } + + return false; +} + +void UnkStruct_027e0cf8_08_00::func_ov024_020d3a60(Vec2s *param1, Vec2s *param2, unk32 param3, unk32 param4) { + fx32 x = param2->x + (param3 * 0x0C) + 0x06; + fx32 y = param2->y + (param4 * 0x0C) + 0x06; + param1->x = x; + param1->y = y; +} + +bool UnkStruct_027e0cf8_08_00::func_ov024_020d3a8c(Vec2s *param1) { + bool var_r2 = true; + bool var_r3 = true; + bool var_ip = true; + + if (param1->x >= 0x03 && param1->x <= 0xFD) { + var_ip = false; + } + + if (!var_ip && param1->y >= 0x03) { + var_r3 = false; + } + + if (!var_r3 && param1->y <= 0xBD) { + var_r2 = false; + } + + return var_r2; +} + +void UnkStruct_027e0cf8_08_00::func_ov024_020d3adc(Vec2s *param1, unk32 param2, unk32 param3, u8 param4, bool param5, + u8 param6) { + UnkArrayDataType2 sp10; + Vec2s spC; + s32 temp_r0; + Vec2s temp_r5; + + MI_CpuFill32(0, &sp10, sizeof(sp10)); + + temp_r0 = this->func_ov024_020d3bfc(sp10, param2, param3, param5); + + for (int i = 0; i < temp_r0; i++) { + s16 x1 = sp10[i].x; + s16 y1 = sp10[i].y; + + temp_r5.x = x1 + param1->x; + temp_r5.y = y1 + param1->y; + + if (i == 0 || i == temp_r0 - 1) { + spC.x = temp_r5.x; + spC.y = temp_r5.y; + + if (UnkStruct_027e0cf8_08_00::func_ov024_020d3a8c(&spC)) { + this->func_ov024_020d0924(temp_r5.x, temp_r5.y, param4, param6); + } else { + this->func_ov024_020d0924(temp_r5.x, temp_r5.y, param4, param6 - 2); + } + } else { + this->func_ov024_020d0924(temp_r5.x, temp_r5.y, param4, param6); + } + } +} + +unk32 UnkStruct_027e0cf8_08_00::func_ov024_020d3bfc(UnkArrayDataType2 param1, unk32 param2, unk32 param3, bool param4) { + int i; + Vec2s *temp_r5 = this->mUnk_178[param2][param3]; + s32 arrayLen = param4 ? 4 : 7; + + for (i = 0; i < arrayLen; i++) { + Vec2s_Copy(&temp_r5[i], ¶m1[i]); + } + + return arrayLen; +} diff --git a/src/024_MainGame/UnkStruct_027e0cf8_08_024.cpp b/src/024_MainGame/UnkStruct_027e0cf8_08_024.cpp index e69de29bb..36b9cc2ff 100644 --- a/src/024_MainGame/UnkStruct_027e0cf8_08_024.cpp +++ b/src/024_MainGame/UnkStruct_027e0cf8_08_024.cpp @@ -0,0 +1,192 @@ +#include "Unknown/UnkStruct_027e0cf8.hpp" + +#include + +extern "C" void func_02019cec(u16 param1, unk32 param2); + +u8 UnkStruct_027e0cf8_08::func_ov024_020d3158(SceneIndex sceneIndex) { + switch (sceneIndex) { + case SceneIndex_test_trn: + break; + case SceneIndex_test_trn2: + break; + case SceneIndex_test_pre: + break; + case SceneIndex_test_iwa: + break; + case SceneIndex_t_area0: + case SceneIndex_t_tutorial: + return 0x06; + case SceneIndex_t_area1: + return 0x07; + case SceneIndex_t_area2: + return 0x08; + case SceneIndex_t_area3: + return 0x09; + case SceneIndex_t_forest: + break; + case SceneIndex_t_smarine: + return 0x0A; + case SceneIndex_t_smount: + break; + case SceneIndex_t_smount2: + break; + case SceneIndex_t_smount3: + break; + case SceneIndex_t_dark: + return 0x0B; + case SceneIndex_t_eviltrain: + case SceneIndex_t_eviltrain2: + case SceneIndex_t_eviltrain3: + return 0x0C; + case SceneIndex_t_minigame: + return 0x0D; + default: + break; + } + + return 0x01; +} + +UnkStruct_027e0cf8_08::UnkStruct_027e0cf8_08() { + UnkStruct_027e0cf8_08_00 *ptr = new(HeapIndex_1) UnkStruct_027e0cf8_08_00(1); + this->mUnk_000 = ptr; + this->mUnk_004 = -1; + this->mUnk_008 = 0; + this->mUnk_00C = 0; + this->mUnk_26A = 0; + Vec2s_Clear(&ptr->mUnk_174); + MI_CpuFill8(this->mUnk_010, 0, sizeof(this->mUnk_010)); + MI_CpuFill8(this->mUnk_13C, 0, sizeof(this->mUnk_13C)); +} + +UnkStruct_027e0cf8_08::~UnkStruct_027e0cf8_08() { + DELETE(this->mUnk_000); +} + +void UnkStruct_027e0cf8_08::func_ov024_020d32b4(unk8 *param1) { + this->mUnk_000->func_ov024_020d072c(param1); + func_02019cec(this->mUnk_268, 0x0F); +} + +void UnkStruct_027e0cf8_08::func_ov024_020d32d8() { + this->mUnk_000->func_ov024_020d06d0(); +} + +void UnkStruct_027e0cf8_08::func_ov024_020d32e8(Vec2s *param1) { + Vec2s temp; + temp.x = param1->x; + temp.y = param1->y; + Vec2s_Copy(&temp, &this->mUnk_000->mUnk_174); +} + +void UnkStruct_027e0cf8_08::func_ov024_020d3324(UnkDataStruct4 *param1) { + this->func_ov024_020d336c(param1, -1, 0, 0, 0); +} + +void UnkStruct_027e0cf8_08::func_ov024_020d3348(UnkDataStruct4 *param1, unk32 param2, u16 param3, unk32 param4, unk32 param5) { + this->func_ov024_020d336c(param1, param2, param3, param4, param5); +} + +void UnkStruct_027e0cf8_08::func_ov024_020d336c(UnkDataStruct4 *param1, unk32 param2, unk32 param3, unk32 param4, + unk32 param5) { + this->mUnk_26A = UnkStruct_027e0cf8_08::func_ov024_020d3158(param1->mSceneIndex); + this->mUnk_008 = param4; + this->mUnk_00C = param5; + + if (param2 == -1) { + this->mUnk_004 = -1; + } else { + this->mUnk_004 = 0; + this->mUnk_268 = 0x8000 - 1; + param1->func_ov024_020d2cfc(this->mUnk_13C, param2, param3); + } + + this->func_ov024_020d3428(param1, 0x02, 0x03); + param1->func_ov024_020d2c54(this->mUnk_010, 0); + this->func_ov024_020d34a0(this->mUnk_010, this->mUnk_26A); +} + +void UnkStruct_027e0cf8_08::func_ov024_020d340c() { + this->mUnk_000->func_ov024_020d0698(); +} + +void UnkStruct_027e0cf8_08::func_ov024_020d341c(bool param1) { + this->mUnk_000->mUnk_08 = param1; +} + +void UnkStruct_027e0cf8_08::func_ov024_020d3428(const UnkDataStruct4 *param1, unk32 param2, u8 param3) { + UnkDataStruct4_14_2 *const *pUnk_14 = NULL; + unk32 auStack_30[3]; + + for (int i = 0; i < ARRAY_LEN(param1->mUnk_14); i++) { + for (int j = 0; j < ARRAY_LEN(param1->mUnk_14[0]->mUnk_00); j++) { + pUnk_14 = param1->mUnk_14; + UnkDataStruct4_14_2 *const *dummy = pUnk_14; // somehow required to match + this->func_ov024_020d351c(i, j, auStack_30, pUnk_14[i]->mUnk_00[j].func_ov024_020d1c3c(auStack_30, param2), + param3); + } + } +} + +void UnkStruct_027e0cf8_08::func_ov024_020d34a0(UnkArrayDataType1 param1, u8 param2) { + unk32 auStack_30[3]; + + for (int i = 0; i < UnkDataStruct4_14_Unk_Max; i++) { + for (int j = 0; j < 15; j++) { + unk32 iVar1 = UnkDataStruct4_14::func_ov024_020d1b98(auStack_30, param1[i][j]); + + if (iVar1 > 0) { + this->func_ov024_020d351c(i, j, auStack_30, iVar1, param2); + } + } + } +} + +void UnkStruct_027e0cf8_08::func_ov024_020d351c(unk32 param1, unk32 param2, unk32 *param3, unk32 param4, u8 param5) { + unk16 sVar1; + unk16 sVar2; + + //! TODO: fake match? + sVar2 = param2 * 12 + this->mUnk_000->mUnk_174.y + 6; + sVar1 = param1 * 12 + this->mUnk_000->mUnk_174.x + 6; + + switch (param4) { + case 1: { + u32 val = param3[0]; + + Vec2s temp; + temp.x = sVar1; + temp.y = sVar2; + this->mUnk_000->func_ov024_020d3adc(&temp, param3[0], (val + 2) & 3, param5, true, 4); + break; + } + case 2: { + Vec2s temp; + temp.x = sVar1; + temp.y = sVar2; + this->mUnk_000->func_ov024_020d3adc(&temp, param3[0], param3[1], param5, false, 4); + break; + } + case 3: { + Vec2s temp1; + temp1.x = sVar1; + temp1.y = sVar2; + this->mUnk_000->func_ov024_020d3adc(&temp1, param3[0], param3[1], param5, false, 4); + + Vec2s temp2; + temp2.x = sVar1; + temp2.y = sVar2; + this->mUnk_000->func_ov024_020d3adc(&temp2, param3[1], param3[2], param5, false, 4); + + Vec2s temp3; + temp3.x = sVar1; + temp3.y = sVar2; + this->mUnk_000->func_ov024_020d3adc(&temp3, param3[2], param3[0], param5, false, 4); + break; + } + case 0: + default: + break; + } +} diff --git a/src/024_MainGame/UnkStruct_ov024_020d86a0_024.cpp b/src/024_MainGame/UnkStruct_ov024_020d86a0_024.cpp index e69de29bb..ff4376e2e 100644 --- a/src/024_MainGame/UnkStruct_ov024_020d86a0_024.cpp +++ b/src/024_MainGame/UnkStruct_ov024_020d86a0_024.cpp @@ -0,0 +1,22 @@ +#include "System/SysNew.hpp" +#include "Unknown/UnkStruct_ov024_020d86a0.hpp" + +UnkStruct_ov024_020d86a0 *UnkStruct_ov024_020d86a0::Create() { + return new(HeapIndex_1) UnkStruct_ov024_020d86a0(); +} + +void UnkStruct_ov024_020d86a0::func_ov024_020d167c() { + if (this->mUnk_11) { + this->func_ov017_020c31cc(); + } +} + +UnkStruct_ov024_020d86a0_00::UnkStruct_ov024_020d86a0_00(UnkStruct_ov024_020d86a0 *pInstance) { + this->mpInstance = pInstance; +} + +UnkStruct_ov024_020d86a0_00::~UnkStruct_ov024_020d86a0_00() {} + +bool UnkStruct_ov024_020d86a0_00::vfunc_0C() { + return this->mpInstance->func_ov017_020c3180(); +} diff --git a/src/024_MainGame/UnkTitleCardSystem1_024.cpp b/src/024_MainGame/UnkTitleCardSystem1_024.cpp index 261433f32..f6cb224bb 100644 --- a/src/024_MainGame/UnkTitleCardSystem1_024.cpp +++ b/src/024_MainGame/UnkTitleCardSystem1_024.cpp @@ -329,7 +329,7 @@ void UnkTitleCardSystem1_Derived1::vfunc_0C() { } void UnkTitleCardSystem1_Derived1::vfunc_10() { - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { if (data_0204a110.mUnk_DF4 == 0) { this->mUnk_004 = 0x07; } else { @@ -379,7 +379,7 @@ void UnkTitleCardSystem1_Derived1::func_ov024_020cbeb8() { index = TC_SceneMsgIdx_LostAtSeaStation; } } else { - index = data_027e09a4->func_01ffd400()->mUnk_16; + index = data_027e09a4->GetCurrentCourseEntry()->titleCardMsgIndex; } if (index >= 0) { diff --git a/src/024_MainGame/ZeldaTrainBinary.cpp b/src/024_MainGame/ZeldaTrainBinary.cpp new file mode 100644 index 000000000..86b5aca35 --- /dev/null +++ b/src/024_MainGame/ZeldaTrainBinary.cpp @@ -0,0 +1,128 @@ +#include "Unknown/Common.hpp" +#include "Unknown/UnkStruct_027e09a0.hpp" +#include "files.h" + +THUMB_BEGIN + +BOOL ZTB_ParseFile(FileInfos *pFileInfos, UnkDataStruct4 *pDst) { + ZTBHeader *pHeader = (ZTBHeader *) pFileInfos->pFile; + ZTBSectionHeader *pSection = (ZTBSectionHeader *) ((u8 *) pHeader + sizeof(ZTBHeader)); + + for (int i = 0; i < pHeader->nEntries; i++) { + switch (pSection->type) { + case ZTBSectionType_GRDB: + ZTB_ParseGRDB(pFileInfos, pDst, (ZTBSectionGRDB *) pSection); + break; + case ZTBSectionType_STAB: + ZTB_ParseSTAB(pFileInfos, pDst, (ZTBSectionSTAB *) pSection); + break; + case ZTBSectionType_LDMK: + ZTB_ParseLDMK(pFileInfos, pDst, (ZTBSectionLDMK *) pSection); + break; + case ZTBSectionType_GRRL: + ZTB_ParseGRRL(pFileInfos, pDst, (ZTBSectionGRRL *) pSection); + break; + default: + break; + } + + pSection = (ZTBSectionHeader *) ((u8 *) pSection + pSection->nSize); + } + + return true; +} + +BOOL ZTB_ParseGRDB(FileInfos *pFileInfos, UnkDataStruct4 *pDst, ZTBSectionGRDB *pGRDB) { + pDst->func_ov024_020d26b0(pGRDB->header.unk_0A); + + for (u16 i = 0; i < pGRDB->header.nEntries1; i++) { + for (u16 j = 0; j < pGRDB->header.nEntries2; j++) { + ZTBEntryGRDB entry = pGRDB->entries[i * pGRDB->header.nEntries2 + j]; + pDst->mUnk_14[i]->mUnk_00[j].mUnk_00 = entry.unk_01; + } + } + + return true; +} + +BOOL ZTB_ParseGRRL(FileInfos *pFileInfos, UnkDataStruct4 *pDst, ZTBSectionGRRL *pGRRL) { + for (int i = 0; i < pGRRL->header.nEntries; i++) { + ZTBEntryGRRL entry = pGRRL->entries[i]; + ZTBEntryGRRL *pEntry = &entry; + + u8 var_r4 = entry.unk_04; + UnkDataStruct4_14 *temp_r5 = &pDst->mUnk_14[pGRRL->entries[i].unk_00]->mUnk_00[pGRRL->entries[i].unk_01]; + u8 *new_var = &pEntry->unk_02; + u8 new_var2 = pGRRL->entries[i].unk_01; + + if (var_r4 == 0x03) { + pDst->mUnk_14[pGRRL->entries[i].unk_00]->mUnk_00[new_var2].mUnk_13 = 1; + var_r4 = 0x00; + } else if (var_r4 == 0x04) { + temp_r5->mUnk_13 = 2; + var_r4 = 0x00; + } else if (var_r4 == 0x05) { + temp_r5->mUnk_13 = 3; + var_r4 = 0x00; + } else { + temp_r5->mUnk_13 = 0; + } + + if (*new_var & 0x01) { + temp_r5->func_ov024_020d2098(0, var_r4); + } + + if (*new_var & 0x10) { + temp_r5->func_ov024_020d2098(2, var_r4); + } + + if (*new_var & 0x04) { + temp_r5->func_ov024_020d2098(1, var_r4); + } + + if (*new_var & 0x40) { + temp_r5->func_ov024_020d2098(3, var_r4); + } + + temp_r5->mUnk_02[var_r4] = entry.unk_05; + temp_r5->mUnk_06[var_r4] = entry.unk_06; + temp_r5->func_ov024_020d1f60(entry.unk_03); + } + + return true; +} + +BOOL ZTB_ParseSTAB(FileInfos *pFileInfos, UnkDataStruct4 *pDst, ZTBSectionSTAB *pSTAB) { + for (int i = 0; i < pSTAB->header.nEntries; i++) { + ZTBEntrySTAB entry = pSTAB->entries[i]; + + u8 new_var4 = pSTAB->entries[i].unk_11; + new_var4 = new_var4 & 0xFF; + + UnkDataStruct4_14 *ptr = &pDst->mUnk_14[pSTAB->entries[i].unk_10]->mUnk_00[new_var4]; + ptr->mStationSceneIndex = data_027e09a0->GetSceneIndexFromName(entry.sceneName); + } + + return true; +} + +BOOL ZTB_ParseLDMK(FileInfos *pFileInfos, UnkDataStruct4 *pDst, ZTBSectionLDMK *pLDMK) { + for (int i = 0; i < pLDMK->header.nEntries; i++) { + ZTBEntryLDMK entry = pLDMK->entries[i]; + + VecFx32 temp; + temp.x = entry.unk_00; + temp.y = (entry.unk_01 - 0x80) * 0x1000; + temp.z = (entry.unk_02 - 0x60) * 0x1000; + + if (pDst->mUnk_C8 != NULL) { + *pDst->mUnk_C8 = temp; + } + + pDst->mUnk_C8++; + } + + return true; +} + +THUMB_END diff --git a/src/024_MainGame/code_020d16fc_024.cpp b/src/024_MainGame/code_020d16fc_024.cpp deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/024_MainGame/code_020d24d4_024.cpp b/src/024_MainGame/code_020d24d4_024.cpp deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/024_MainGame/code_020d3670_024.cpp b/src/024_MainGame/code_020d3670_024.cpp deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/024_MainGame/code_020d46b4_024.cpp b/src/024_MainGame/code_020d46b4_024.cpp index e69de29bb..0eced3c0a 100644 --- a/src/024_MainGame/code_020d46b4_024.cpp +++ b/src/024_MainGame/code_020d46b4_024.cpp @@ -0,0 +1,24 @@ +#include "Unknown/Common.hpp" + +extern "C" unk32 func_ov024_020d54a0(int); + +static const char *data_ov024_020d8374[] = { + "pillar", "seaPillar", "stopper", "bubble", "blastLava", "blastSand", + "blastSnow", "blastSoil", "blastWater", "super", "darkPillar", "cannonball", +}; + +static const char *data_ov024_020d8358[] = { + "ice", "wood", "iron", "fish", "kokko", "jar", "ore", +}; + +const char *func_ov024_020d46b4(unk32 param1) { + return data_ov024_020d8374[param1]; +} + +MapObjectProfile_Derived5::MapObjectProfile_Derived5(unk32 param1, int) : + MapObjectProfile_Derived2_20_Base("Train", func_ov024_020d46b4(param1), "model", "anm", 1, func_ov024_020d54a0(param1)) {} + +MapObjectProfile_Derived5::MapObjectProfile_Derived5(unk32 param1) : + MapObjectProfile_Derived2_20_Base("Train/mat", data_ov024_020d8358[param1], "model", "", 1, 0) {} + +MapObjectProfile_Derived5::~MapObjectProfile_Derived5() {} diff --git a/src/025_Title/TitleScreenManager.cpp b/src/025_Title/TitleScreenManager.cpp index 63f53072b..6bc042d42 100644 --- a/src/025_Title/TitleScreenManager.cpp +++ b/src/025_Title/TitleScreenManager.cpp @@ -19,9 +19,7 @@ ARM void TitleScreenManager::vfunc_14() { ARM void TitleScreenManager::vfunc_18() { this->mUnk_004.func_ov001_020bd784(); - - delete this->mpGameMode; - this->mpGameMode = NULL; + DELETE(this->mpGameMode); } ARM void TitleScreenManager::vfunc_24() { diff --git a/src/031_Land/Actor/ActorHeart.cpp b/src/031_Land/Actor/ActorHeart.cpp index f88eeaaa8..20c4af686 100644 --- a/src/031_Land/Actor/ActorHeart.cpp +++ b/src/031_Land/Actor/ActorHeart.cpp @@ -77,7 +77,7 @@ ARM ActorHeart::ActorHeart() : mUnk_94(0), mUnk_96(6), mUnk_B8(0), - mUnk_BA(gRandom.ConditionalNext32(0) & 0x80000000 ? 0x666 : ~0x665), + mUnk_BA(gRandom.Next32(0) & 0x80000000 ? 0x666 : ~0x665), mUnk_BC(0), mUnk_BE(0), mUnk_C0(0), diff --git a/src/031_Land/Actor/ActorRupee.cpp b/src/031_Land/Actor/ActorRupee.cpp index a0380e6e4..d28ff582f 100644 --- a/src/031_Land/Actor/ActorRupee.cpp +++ b/src/031_Land/Actor/ActorRupee.cpp @@ -100,12 +100,10 @@ ARM bool ActorRupee::vfunc_18(unk32 param1) { this->mUnk_94 = 0; { VecFx32 vel; - vel.x = 0; - vel.y = 0; - vel.z = 0; - this->mVel.x = vel.x; - this->mVel.y = vel.y; - this->mVel.z = vel.z; + vel.x = 0; + vel.y = 0; + vel.z = 0; + VecFx32_Copy(&vel, &this->mVel); } this->func_ov031_020e9904(0); break; @@ -116,18 +114,16 @@ ARM bool ActorRupee::vfunc_18(unk32 param1) { { VecFx32 vel; - fx32 vx = gRandom.Next32(0, 0x223) - 0x111; + fx32 vx = gRandom.Next32(0x223) - 0x111; vel.x = vx; - fx32 vy = gRandom.Next32(0, 0x333) + 0x555; + fx32 vy = gRandom.Next32(0x333) + 0x555; vel.y = vy; - fx32 vz = gRandom.Next32(0, 0x223) - 0x111; + fx32 vz = gRandom.Next32(0x223) - 0x111; vel.z = vz; - this->mVel.x = vel.x; - this->mVel.y = vel.y; - this->mVel.z = vel.z; + VecFx32_Copy(&vel, &this->mVel); } this->func_ov031_020e9904(0); break; @@ -209,14 +205,15 @@ ARM void ActorRupee::func_ov031_020e9068() { ARM void ActorRupee::func_ov031_020e9108() { VecFx32 vel; - vel.x = gRandom.Next32(0, 0x19B); - vel.y = gRandom.Next32(0, 0x19A); - vel.z = gRandom.Next32(0, 0x19B); + vel.x = gRandom.Next32(0x19B); + vel.y = gRandom.Next32(0x19A); + vel.z = gRandom.Next32(0x19B); - this->mVel.x = vel.x - 0xCD; - this->mVel.y = vel.y + 0x9A + 0x100; - this->mVel.z = vel.z - 0xCD; + vel.x -= 0xCD; + vel.y += 0x9A + 0x100; + vel.z -= 0xCD; + VecFx32_Copy(&vel, &this->mVel); SET_FLAG(this->mFlags, ActorFlag_Visible); } diff --git a/src/110_PlayerGet/PlayerGet.cpp b/src/110_PlayerGet/PlayerGet.cpp index 1df6b98af..f702affd0 100644 --- a/src/110_PlayerGet/PlayerGet.cpp +++ b/src/110_PlayerGet/PlayerGet.cpp @@ -466,9 +466,9 @@ ARM PlayerGet::~PlayerGet() { UnkStruct_ov000_0208f820_28_98 *pUnk_28_98 = this->mUnk_28->mUnk_98; if (pUnk_28_98 != 0) { - pUnk_28_98->mUnk_38.mUnk_40 &= ~0x10; + pUnk_28_98->mUnk_38.mUnk_08 &= ~0x10; - if (pUnk_28_98->mUnk_38.mUnk_40 == 0) { + if (pUnk_28_98->mUnk_38.mUnk_08 == 0) { // real? pUnk_28_98->mUnk_38.~UnkStruct_PlayerGet_64(); } @@ -677,7 +677,7 @@ ARM void PlayerGet::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1) { if (pUnk28_98 != NULL) { UnkStruct_PlayerGet_64 *ptr = &pUnk28_98->mUnk_38; - ptr->mUnk_40 |= 0x10; + ptr->mUnk_08 |= 0x10; this->mUnk_64.func_ov000_0208a100(); } } @@ -1030,22 +1030,22 @@ THUMB void UnkStruct_027e0ce0_34::func_ov110_02185d3c(ItemId itemId) { switch (itemId) { case ItemId_SpiritTrain: this->func_ov024_020d3d98(0, 0); - this->mUnk_2C = 1; - this->mUnk_00 = 0; - this->mUnk_10 = 0; + this->mUnk_2C = 1; + this->mUnk_00[0] = 0; + this->mUnk_10[0] = 0; break; case ItemId_SpiritTrainCar: this->func_ov024_020d3d98(2, 0); - this->mUnk_2C = 2; - this->mUnk_04 = 2; - this->mUnk_14 = 0; + this->mUnk_2C = 2; + this->mUnk_00[1] = 2; + this->mUnk_10[1] = 0; break; default: uStack_14 = -1; auStack_18[0] = 0; if (func_ov024_020d5354(&uStack_14, auStack_18) != 0) { - this->func_ov024_020d3ee8(uStack_14, auStack_18[0], 1); + this->func_ov024_020d3ee8(uStack_14, auStack_18[0], true); } break; } diff --git a/src/112_PlayerSceneChange/PlayerSceneChange.cpp b/src/112_PlayerSceneChange/PlayerSceneChange.cpp index bf415015b..bc7e3d2c8 100644 --- a/src/112_PlayerSceneChange/PlayerSceneChange.cpp +++ b/src/112_PlayerSceneChange/PlayerSceneChange.cpp @@ -37,9 +37,9 @@ ARM PlayerSceneChange::PlayerSceneChange() { ARM PlayerSceneChange::~PlayerSceneChange() { UnkStruct_ov000_0208f820_28 *pUnk_28 = this->mUnk_28; - pUnk_28->mUnk_38.mUnk_40 &= 0xFFFD; + pUnk_28->mUnk_38.mUnk_08 &= 0xFFFD; - if (pUnk_28->mUnk_38.mUnk_40 == 0) { + if (pUnk_28->mUnk_38.mUnk_08 == 0) { pUnk_28->mUnk_38.~UnkStruct_PlayerGet_64(); } @@ -648,7 +648,7 @@ ARM void PlayerSceneChange::vfunc_10(unk32 param1, unk32 param2) { this->mUnk_6C--; if (this->mUnk_6C < 0x37) { - this->mUnk_28->mUnk_38.mUnk_40 |= 0x02; + this->mUnk_28->mUnk_38.mUnk_08 |= 0x02; break; } diff --git a/src/Main/System/Random.cpp b/src/Main/System/Random.cpp index ae9951cf0..31f65e430 100644 --- a/src/Main/System/Random.cpp +++ b/src/Main/System/Random.cpp @@ -13,7 +13,5 @@ ARM void Random::Init() { randomValue[i] = func_02032920(&auStack_38[i], sizeof(u64)); } - *(u64 *) &this->mRandomValue = *(u64 *) &randomValue; - this->mFactor = 0x5D588B656C078965; - this->mAddend = 0x00269EC3; + this->Setup(randomValue); } diff --git a/src/Main/func_02017ea4.cpp b/src/Main/func_02017ea4.cpp index 0e0989278..6e35e7ae6 100644 --- a/src/Main/func_02017ea4.cpp +++ b/src/Main/func_02017ea4.cpp @@ -2,9 +2,9 @@ #include "types.h" ARM extern "C" void func_02017ea4(u16 *param1) { - *param1 = gRandom.Next16(); + *param1 = gRandom.Next32(0) >> 16; } ARM extern "C" void func_02017ee4(u16 *param1) { - *param1 = gRandom.Next32(0, 4) << 14; + *param1 = gRandom.Next32(4) << 14; } diff --git a/tools/configure.py b/tools/configure.py index e677bc871..97456b588 100755 --- a/tools/configure.py +++ b/tools/configure.py @@ -189,6 +189,7 @@ def GameLib(lib_name: str, objects: List[Object]) -> Dict[str, Any]: Object("001_SceneInit/Item/ItemManager_001.cpp"), Object("001_SceneInit/CargoManager_001.cpp"), Object("001_SceneInit/PassengerManager_001.cpp"), + Object("001_SceneInit/UnkStruct_027e0cf8_08_00_001.cpp"), Object("001_SceneInit/Game/AdventureModeManager_001.cpp"), Object("001_SceneInit/Game/GameModeAdventure_001.cpp"), ] @@ -269,10 +270,13 @@ def GameLib(lib_name: str, objects: List[Object]) -> Dict[str, Any]: Object("024_MainGame/UnkStruct_027e0cf8_00_0C_024.cpp"), Object("024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp"), Object("024_MainGame/UnkStruct_ov024_020d86a0_024.cpp"), - Object("024_MainGame/code_020d16fc_024.cpp"), - Object("024_MainGame/code_020d24d4_024.cpp"), + Object("024_MainGame/PlayerActor_A0_38_024.cpp"), + Object("024_MainGame/CreditsEndingType.cpp"), + Object("024_MainGame/UnkDataStruct4_14.cpp"), + Object("024_MainGame/UnkDataStruct4.cpp"), Object("024_MainGame/UnkStruct_027e0cf8_08_024.cpp"), - Object("024_MainGame/code_020d3670_024.cpp"), + Object("024_MainGame/ZeldaTrainBinary.cpp"), + Object("024_MainGame/UnkStruct_027e0cf8_08_00_024.cpp"), Object("024_MainGame/UnkStruct_027e0ce0_34_024.cpp"), Object("024_MainGame/PassengerManager.cpp"), Object("024_MainGame/code_020d46b4_024.cpp"), diff --git a/tools/courselist.py b/tools/courselist.py new file mode 100644 index 000000000..f5cd3d2b5 --- /dev/null +++ b/tools/courselist.py @@ -0,0 +1,106 @@ +import struct +import yaml + +from pathlib import Path +from dataclasses import dataclass, field + + +@dataclass +class CourseRoomEntry: + roomIndex: int + mapPaintIndex: int + unk_02: int + unk_03: int + + def to_yaml(self): + return { + f"room_index_{self.roomIndex}": { + "mapPaintIndex": self.mapPaintIndex, + "unk_02": f"0x{self.unk_02:02X}", + "unk_03": f"0x{self.unk_03:02X}", + } + } + + +@dataclass +class CourseEntry: + size: int + name: str + unk_10: int + numRooms: int + unk_15: int + titleCardMsgIndex: int + saveCourseIndex: int + unk_18: int + unk_19: int + unk_1A: int + unk_1B: int + unk_1C: int + unk_1D: int + unk_1E: int + unk_1F: int + defaultMapPaintIndex: int + roomEntries: list[CourseRoomEntry] = field(default_factory=list) + + def to_yaml(self): + room_data = {} + + for room in self.roomEntries: + room_data.update(room.to_yaml()) + + return { + self.name: { + "unk_10": f"0x{self.unk_10:02X}", + "numRooms": self.numRooms, + "unk_15": f"0x{self.unk_15:02X}", + "titleCardMsgIndex": self.titleCardMsgIndex, + "saveCourseIndex": self.saveCourseIndex, + "unk_18": f"0x{self.unk_18:02X}", + "unk_19": f"0x{self.unk_19:02X}", + "unk_1A": f"0x{self.unk_1A:02X}", + "unk_1B": f"0x{self.unk_1B:02X}", + "unk_1C": f"0x{self.unk_1C:02X}", + "unk_1D": f"0x{self.unk_1D:02X}", + "unk_1E": f"0x{self.unk_1E:02X}", + "unk_1F": f"0x{self.unk_1F:02X}", + "defaultMapPaintIndex": self.defaultMapPaintIndex, + "roomEntries": room_data, + } + } + + +def get_entries(): + course_entries: list[CourseEntry] = [] + + clb_path = Path("extract/eur/files/Course/courselist.clb").resolve() + assert clb_path.exists() + clb_data = clb_path.read_bytes() + + magic, unk_04, unk_08, unk_0C = struct.unpack("<4sIII", clb_data[0x00:0x10]) + start = 0x10 + + for _ in range(unk_08): + new_entry = CourseEntry(*struct.unpack("