From 530fcd8c07ff4d7f076a842334b33a14e6ddad17 Mon Sep 17 00:00:00 2001 From: Yanis <35189056+Yanis002@users.noreply.github.com> Date: Sun, 24 May 2026 17:20:48 +0200 Subject: [PATCH] Decompile overlay 24 (Part 2) (#66) * remove scratch links * UnkAdventureModeSystem1 OK * UnkStruct_ov024_020d8694_024 OK * UnkTitleCardSystem1_024 99% * UnkTitleCardSystem1_024 OK * fix regressions * title card vfunc_08 oddity * tools: make build.ninja deterministic and delink when objdiff rebuild-on-change * clean up link node mess * UnkStruct_020d8698_024 24% * UnkStruct_020d8698_024 49% * UnkStruct_020d8698_024 65% * fix build issues * UnkStruct_020d8698_024 92% * UnkStruct_020d8698_024 OK * delink data_ov024_020d8694 symbol * tools: revert previous objdiff change and reduce ds-rom logs on objdiff --- config/eur/arm9/delinks.txt | 5 +- config/eur/arm9/itcm/symbols.txt | 2 +- config/eur/arm9/overlays/ov000/delinks.txt | 4 + config/eur/arm9/overlays/ov000/relocs.txt | 4 +- config/eur/arm9/overlays/ov000/symbols.txt | 86 +- config/eur/arm9/overlays/ov019/symbols.txt | 2 +- config/eur/arm9/overlays/ov024/delinks.txt | 11 + config/eur/arm9/overlays/ov024/relocs.txt | 12 +- config/eur/arm9/overlays/ov024/symbols.txt | 224 +-- config/eur/arm9/overlays/ov025/symbols.txt | 2 +- config/eur/arm9/overlays/ov031/symbols.txt | 16 +- config/eur/arm9/relocs.txt | 8 +- config/eur/arm9/symbols.txt | 52 +- config/jp/arm9/delinks.txt | 5 +- config/jp/arm9/itcm/symbols.txt | 2 +- config/jp/arm9/overlays/ov000/delinks.txt | 4 + config/jp/arm9/overlays/ov000/relocs.txt | 4 +- config/jp/arm9/overlays/ov000/symbols.txt | 88 +- config/jp/arm9/overlays/ov010/relocs.txt | 8 +- config/jp/arm9/overlays/ov019/symbols.txt | 2 +- config/jp/arm9/overlays/ov020/relocs.txt | 4 +- config/jp/arm9/overlays/ov022/relocs.txt | 2 +- config/jp/arm9/overlays/ov024/delinks.txt | 11 + config/jp/arm9/overlays/ov024/relocs.txt | 12 +- config/jp/arm9/overlays/ov024/symbols.txt | 224 +-- config/jp/arm9/overlays/ov025/symbols.txt | 2 +- config/jp/arm9/overlays/ov031/symbols.txt | 16 +- config/jp/arm9/relocs.txt | 8 +- config/jp/arm9/symbols.txt | 66 +- include/FileSelect/FileSelect.hpp | 10 +- include/FileSelect/FileSelectMain.hpp | 12 +- include/FileSelect/FileSelectMicTest.hpp | 8 - include/FileSelect/FileSelectOptions.hpp | 8 - .../FileSelect/FileSelectOptionsManager.hpp | 8 - include/FileSelect/FileSelectUnkDraw.hpp | 2 +- include/FileSelect/UnkSubStruct9.hpp | 3 +- include/Game/GameModeManager.hpp | 156 +- include/Item/ItemManager.hpp | 8 + include/LinkList.hpp | 201 +++ include/MainGame/AdventureMode.hpp | 22 +- include/MainGame/CargoManager.hpp | 19 +- include/MainGame/UnkAdventureModeSystem1.hpp | 22 +- include/Message/BMG.hpp | 5 +- include/Message/BMGEnums.hpp | 35 +- include/TitleScreen/TitleScreen.hpp | 16 +- include/Unknown/Common.hpp | 240 ++- include/Unknown/UnkStruct_0204a060.hpp | 5 +- include/Unknown/UnkStruct_0204a110.hpp | 44 +- include/Unknown/UnkStruct_0204af1c.hpp | 3 +- include/Unknown/UnkStruct_0204e5f8.hpp | 2 +- include/Unknown/UnkStruct_020d8698.hpp | 286 +++- include/Unknown/UnkStruct_027e0954.hpp | 2 +- include/Unknown/UnkStruct_027e09a4.hpp | 42 +- include/Unknown/UnkStruct_027e0cd8.hpp | 7 +- include/Unknown/UnkStruct_ov000_02067bc4.hpp | 37 +- include/Unknown/UnkStruct_ov000_020b4f84.hpp | 6 +- include/Unknown/UnkStruct_ov024_020d8694.hpp | 153 +- include/iterator.hpp | 83 +- include/math.hpp | 45 + libs/nitro/include/nitro/math.h | 19 +- .../Game/GameModeManagerBase_104.cpp | 13 +- src/000_Second/Item/ItemManager.cpp | 4 +- .../MapObject/MapObjectSwitchStep.cpp | 2 +- src/000_Second/code_020657fc.cpp | 19 + .../Game/AdventureModeManager_001.cpp | 19 +- src/017_CourseExec/CargoManager_017.cpp | 8 +- src/018_StartUp/StartUpInitializers.cpp | 10 +- src/019_MainSelect/019_UnkSubStruct9.cpp | 16 +- .../019_UnkSystem1_ov019_Derived1.cpp | 2 +- .../019_UnkSystem1_ov019_Derived2.cpp | 2 +- .../019_UnkSystem1_ov019_Derived3.cpp | 2 +- src/019_MainSelect/FileSelectMain.cpp | 40 +- src/019_MainSelect/FileSelectManager.cpp | 6 +- src/019_MainSelect/FileSelectManager_160.cpp | 4 +- src/019_MainSelect/FileSelectManager_164.cpp | 6 +- src/019_MainSelect/FileSelectMicTest.cpp | 8 +- src/019_MainSelect/FileSelectOptions.cpp | 42 +- src/019_MainSelect/FileSelectSubScreen.cpp | 2 +- .../Game/AdventureModeManager_024.cpp | 136 +- .../AdventureModeManager_15C_20_00_024.cpp | 4 +- .../Game/AdventureModeManager_160_024.cpp | 4 +- .../Game/AdventureModeManager_184_024.cpp | 4 +- .../AdventureModeManager_1B8_Base_024.cpp | 18 +- .../Game/UnkStruct_027e0cf8_024.cpp | 13 +- .../UnkAdventureModeSystem1_024.cpp | 86 ++ src/024_MainGame/UnkStruct_020d8698_024.cpp | 1332 +++++++++++++++++ .../UnkStruct_ov024_020d8694_024.cpp | 177 +++ src/024_MainGame/UnkTitleCardSystem1_024.cpp | 620 ++++++++ src/025_Title/TitleScreen.cpp | 27 +- src/025_Title/TitleScreenManager.cpp | 4 +- src/110_PlayerGet/PlayerGet.cpp | 2 +- src/Main/Game/Game.cpp | 15 +- src/Main/Game/GameModeLinkListNode.cpp | 39 - src/Main/Game/GameModeManagerBase.cpp | 110 +- src/Main/LinkList.cpp | 110 ++ src/Main/System/SysFault.cpp | 11 +- tools/configure.py | 3 +- tools/objdiff_config.py | 12 +- tools/project.py | 22 +- tools/vtable_sym.py | 2 +- 100 files changed, 4150 insertions(+), 1201 deletions(-) create mode 100644 include/LinkList.hpp create mode 100644 src/000_Second/code_020657fc.cpp delete mode 100644 src/Main/Game/GameModeLinkListNode.cpp create mode 100644 src/Main/LinkList.cpp diff --git a/config/eur/arm9/delinks.txt b/config/eur/arm9/delinks.txt index c9bb79df..4fce80b0 100644 --- a/config/eur/arm9/delinks.txt +++ b/config/eur/arm9/delinks.txt @@ -35,9 +35,9 @@ src/Main/UnkFileSystem.cpp: src/Main/System/Random.cpp: .text start:0x02016384 end:0x02016404 -src/Main/Game/GameModeLinkListNode.cpp: +src/Main/LinkList.cpp: complete - .text start:0x0201667c end:0x02016720 + .text start:0x0201667c end:0x02016798 src/Main/func_02017ea4.cpp: .text start:0x02017ea4 end:0x02017f38 @@ -53,6 +53,7 @@ src/Main/UnkStruct_0204a060.cpp: .data start:0x02044040 end:0x0204405c src/Main/Game/GameModeManagerBase.cpp: + complete .text start:0x0201847c end:0x02018bc4 .data start:0x0204405c end:0x0204409c diff --git a/config/eur/arm9/itcm/symbols.txt b/config/eur/arm9/itcm/symbols.txt index 18f8a1d2..04ae295c 100644 --- a/config/eur/arm9/itcm/symbols.txt +++ b/config/eur/arm9/itcm/symbols.txt @@ -155,7 +155,7 @@ 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 -_ZN18UnkStruct_027e09a413func_01ffd400Ev kind:function(arm,size=0x20) addr:0x01ffd400 +_ZNK18UnkStruct_027e09a413func_01ffd400Ev 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/delinks.txt b/config/eur/arm9/overlays/ov000/delinks.txt index 5425091a..4ba37315 100644 --- a/config/eur/arm9/overlays/ov000/delinks.txt +++ b/config/eur/arm9/overlays/ov000/delinks.txt @@ -11,9 +11,13 @@ src/000_Second/Game/GameModeManagerBase_104_0C.cpp: .data start:0x020b1e40 end:0x020b1e58 src/000_Second/Game/GameModeManagerBase_104.cpp: + complete .text start:0x02061ae4 end:0x02061ce0 .data start:0x020b1e58 end:0x020b1e7c +src/000_Second/code_020657fc.cpp: + .text start:0x020657fc end:0x02065c20 + src/000_Second/UnkSystem1_Base.cpp: .text start:0x020667b0 end:0x02067244 .data start:0x020b2070 end:0x020b209c diff --git a/config/eur/arm9/overlays/ov000/relocs.txt b/config/eur/arm9/overlays/ov000/relocs.txt index 83e29045..9d7e4924 100644 --- a/config/eur/arm9/overlays/ov000/relocs.txt +++ b/config/eur/arm9/overlays/ov000/relocs.txt @@ -1403,9 +1403,9 @@ from:0x02061dfc kind:arm_call to:0x02008a0c module:main from:0x02061eac kind:arm_call to:0x0200ab00 module:main from:0x02061ef8 kind:arm_call to:0x02028c90 module:main from:0x02061f38 kind:arm_call to:0x02061ce0 module:overlay(0) -from:0x02061f5c kind:load to:0x020b1e9c module:overlay(0) +from:0x02061f5c kind:load to:0x020b1e94 add:0x8 module:overlay(0) from:0x02061f7c kind:arm_call to:0x02062144 module:overlay(0) -from:0x02061f88 kind:load to:0x020b1e9c module:overlay(0) +from:0x02061f88 kind:load to:0x020b1e94 add:0x8 module:overlay(0) from:0x02061ff0 kind:arm_call to:0x02008b58 module:main from:0x020620f4 kind:arm_call to:0x02015ef8 module:main from:0x02062100 kind:arm_call to:0x0203a3c8 module:main diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 62a069e8..27bfcfaf 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -424,7 +424,7 @@ func_ov000_02060738 kind:function(arm,size=0x24) addr:0x02060738 func_ov000_0206075c kind:function(arm,size=0x80) addr:0x0206075c func_ov000_020607dc kind:function(arm,size=0x28) addr:0x020607dc _ZN14UnkSubStruct19C1Ev kind:function(arm,size=0x28) addr:0x02060804 -_ZN14UnkSubStruct1919func_ov000_0206082cEii kind:function(arm,size=0x124) addr:0x0206082c +_ZN14UnkSubStruct1919func_ov000_0206082cEsi kind:function(arm,size=0x124) addr:0x0206082c _ZN14UnkSubStruct1919func_ov000_02060950Ev kind:function(arm,size=0x60) addr:0x02060950 _ZN14UnkSubStruct1919func_ov000_020609b0Ev kind:function(arm,size=0x14) addr:0x020609b0 _ZN14UnkSubStruct1919func_ov000_020609c4Ev kind:function(arm,size=0xd4) addr:0x020609c4 @@ -434,15 +434,15 @@ _ZN14UnkSubStruct1919func_ov000_02060af8Ev kind:function(arm,size=0x58) addr:0x0 _ZN14UnkSubStruct1919func_ov000_02060b50Ev kind:function(arm,size=0x14) addr:0x02060b50 _ZN14UnkSubStruct1919func_ov000_02060b64Ev kind:function(arm,size=0x20) addr:0x02060b64 func_ov000_02060b84 kind:function(arm,size=0x28) addr:0x02060b84 -func_ov000_02060bac kind:function(arm,size=0x2c) addr:0x02060bac +_ZN14UnkSubStruct1919func_ov000_02060bacEv kind:function(arm,size=0x2c) addr:0x02060bac _ZN14UnkSubStruct1919func_ov000_02060bd8Ei kind:function(arm,size=0x50) addr:0x02060bd8 _ZN14UnkSubStruct1919func_ov000_02060c28Ev kind:function(arm,size=0xc) addr:0x02060c28 -func_ov000_02060c34 kind:function(arm,size=0x1c) addr:0x02060c34 -func_ov000_02060c50 kind:function(arm,size=0x2c) addr:0x02060c50 -func_ov000_02060c7c kind:function(arm,size=0x100) addr:0x02060c7c -func_ov000_02060d7c kind:function(arm,size=0x3c) addr:0x02060d7c -func_ov000_02060db8 kind:function(arm,size=0x84) addr:0x02060db8 -func_ov000_02060e3c kind:function(arm,size=0x88) addr:0x02060e3c +_ZN25UnkStruct_020d8698_2C_14CC1Ev kind:function(arm,size=0x1c) addr:0x02060c34 +_ZN25UnkStruct_020d8698_2C_14C19func_ov000_02060c50EPKwP25UnkStruct_020d8698_2C_198iP34UnkStruct_ov019_020d24c8_28_258_00 kind:function(arm,size=0x2c) addr:0x02060c50 +_ZN25UnkStruct_020d8698_2C_14C19func_ov000_02060c7cEi kind:function(arm,size=0x100) addr:0x02060c7c +_ZN25UnkStruct_020d8698_2C_14C19func_ov000_02060d7cEit kind:function(arm,size=0x3c) addr:0x02060d7c +_ZN25UnkStruct_020d8698_2C_14C19func_ov000_02060db8Et kind:function(arm,size=0x84) addr:0x02060db8 +_ZN25UnkStruct_020d8698_2C_14C19func_ov000_02060e3cEiPKcPw kind:function(arm,size=0x88) addr:0x02060e3c func_ov000_02060ec4 kind:function(arm,size=0x20) addr:0x02060ec4 _ZN23TitleScreenManager_BaseC2Ev kind:function(arm,size=0x30) addr:0x02060ee4 _ZN23TitleScreenManager_BaseD1Ev kind:function(arm,size=0x38) addr:0x02060f14 @@ -505,33 +505,33 @@ _ZN23GameModeManagerBase_1048vfunc_0CEi kind:function(arm,size=0x4) addr:0x02061 _ZN23GameModeManagerBase_1048vfunc_10EPc kind:function(arm,size=0x4) addr:0x02061cd4 _ZN23GameModeManagerBase_1048vfunc_14EPc kind:function(arm,size=0x4) addr:0x02061cd8 _ZN23GameModeManagerBase_1048vfunc_18Ev kind:function(arm,size=0x4) addr:0x02061cdc -func_ov000_02061ce0 kind:function(arm,size=0x58) addr:0x02061ce0 -func_ov000_02061d38 kind:function(arm,size=0x50) addr:0x02061d38 -func_ov000_02061d88 kind:function(arm,size=0x20) addr:0x02061d88 -func_ov000_02061da8 kind:function(arm,size=0x10) addr:0x02061da8 -func_ov000_02061db8 kind:function(arm,size=0x24) addr:0x02061db8 -func_ov000_02061ddc kind:function(arm,size=0x2c) addr:0x02061ddc -func_ov000_02061e08 kind:function(arm,size=0xb0) addr:0x02061e08 -func_ov000_02061eb8 kind:function(arm,size=0x48) addr:0x02061eb8 -func_ov000_02061f00 kind:function(arm,size=0x30) addr:0x02061f00 -func_ov000_02061f30 kind:function(arm,size=0x30) addr:0x02061f30 -_ZN25UnkSystem2_UnkSubSystem11D1Ev kind:function(arm,size=0x2c) addr:0x02061f60 -func_ov000_02061f8c kind:function(arm,size=0x1b8) addr:0x02061f8c -func_ov000_02062144 kind:function(arm,size=0x28) addr:0x02062144 -func_ov000_0206216c kind:function(arm,size=0xbc) addr:0x0206216c -func_ov000_02062228 kind:function(arm,size=0xf8) addr:0x02062228 -func_ov000_02062320 kind:function(arm,size=0x3c) addr:0x02062320 -func_ov000_0206235c kind:function(arm,size=0x24) addr:0x0206235c -func_ov000_02062380 kind:function(arm,size=0x34) addr:0x02062380 -func_ov000_020623b4 kind:function(arm,size=0x24) addr:0x020623b4 +_ZN30UnkSystem2_UnkSubSystem11_BaseC2Ev kind:function(arm,size=0x58) addr:0x02061ce0 +_ZN30UnkSystem2_UnkSubSystem11_Base19func_ov000_02061d38Ev kind:function(arm,size=0x50) addr:0x02061d38 +_ZN30UnkSystem2_UnkSubSystem11_Base19func_ov000_02061d88Ev kind:function(arm,size=0x20) addr:0x02061d88 +_ZN30UnkSystem2_UnkSubSystem11_Base19func_ov000_02061da8Ev kind:function(arm,size=0x10) addr:0x02061da8 +_ZN30UnkSystem2_UnkSubSystem11_Base19func_ov000_02061db8Ev kind:function(arm,size=0x24) addr:0x02061db8 +_ZN30UnkSystem2_UnkSubSystem11_Base8vfunc_04Ev kind:function(arm,size=0x2c) addr:0x02061ddc +_ZN30UnkSystem2_UnkSubSystem11_Base8vfunc_08Ev kind:function(arm,size=0xb0) addr:0x02061e08 +_ZN30UnkSystem2_UnkSubSystem11_Base8vfunc_0CEv kind:function(arm,size=0x48) addr:0x02061eb8 +_ZN30UnkSystem2_UnkSubSystem11_Base8vfunc_00Ev kind:function(arm,size=0x30) addr:0x02061f00 +_ZN34UnkSystem2_UnkSubSystem11_Derived1C2Ev kind:function(arm,size=0x30) addr:0x02061f30 +_ZN34UnkSystem2_UnkSubSystem11_Derived1D2Ev kind:function(arm,size=0x2c) addr:0x02061f60 +_ZN34UnkSystem2_UnkSubSystem11_Derived119func_ov000_02061f8cEv kind:function(arm,size=0x1b8) addr:0x02061f8c +_ZN34UnkSystem2_UnkSubSystem11_Derived119func_ov000_02062144Ev kind:function(arm,size=0x28) addr:0x02062144 +_ZN34UnkSystem2_UnkSubSystem11_Derived119func_ov000_0206216cEP5Vec2sii kind:function(arm,size=0xbc) addr:0x0206216c +_ZN34UnkSystem2_UnkSubSystem11_Derived119func_ov000_02062228Ev kind:function(arm,size=0xf8) addr:0x02062228 +_ZN34UnkSystem2_UnkSubSystem11_Derived18vfunc_00Ev kind:function(arm,size=0x3c) addr:0x02062320 +_ZN34UnkSystem2_UnkSubSystem11_Derived18vfunc_04Ev kind:function(arm,size=0x24) addr:0x0206235c +_ZN34UnkSystem2_UnkSubSystem11_Derived18vfunc_08Ev kind:function(arm,size=0x34) addr:0x02062380 +_ZN34UnkSystem2_UnkSubSystem11_Derived18vfunc_0CEv kind:function(arm,size=0x24) addr:0x020623b4 func_ov000_020623d8 kind:function(arm,size=0x30) addr:0x020623d8 func_ov000_02062408 kind:function(arm,size=0x30) addr:0x02062408 func_ov000_02062438 kind:function(arm,size=0x100) addr:0x02062438 func_ov000_02062538 kind:function(arm,size=0x8c) addr:0x02062538 func_ov000_020625c4 kind:function(arm,size=0x120) addr:0x020625c4 -func_ov000_020626e4 kind:function(arm,size=0x124) addr:0x020626e4 +_ZN34UnkSystem2_UnkSubSystem11_Derived219func_ov000_020626e4EPvbPiiiii kind:function(arm,size=0x124) addr:0x020626e4 func_ov000_02062808 kind:function(arm,size=0x30) addr:0x02062808 -func_ov000_02062838 kind:function(arm,size=0x8c) addr:0x02062838 +_ZN34UnkSystem2_UnkSubSystem11_Derived119func_ov000_02062838EPv kind:function(arm,size=0x8c) addr:0x02062838 _ZN17struct_aStack_2d8C1Ev kind:function(arm,size=0x20) addr:0x020628c4 _ZN17struct_aStack_2d819func_ov000_020628e4Eiiiiiiiii kind:function(arm,size=0xcc) addr:0x020628e4 func_ov000_020629b0 kind:function(arm,size=0x8c) addr:0x020629b0 @@ -637,15 +637,15 @@ func_ov000_020655c4 kind:function(arm,size=0x9c) addr:0x020655c4 func_ov000_02065660 kind:function(arm,size=0xb4) addr:0x02065660 func_ov000_02065714 kind:function(arm,size=0xb4) addr:0x02065714 func_ov000_020657c8 kind:function(arm,size=0x34) addr:0x020657c8 -func_ov000_020657fc kind:function(arm,size=0x88) addr:0x020657fc -func_ov000_02065884 kind:function(arm,size=0x88) addr:0x02065884 -func_ov000_0206590c kind:function(arm,size=0x24) addr:0x0206590c -func_ov000_02065930 kind:function(arm,size=0x58) addr:0x02065930 -func_ov000_02065988 kind:function(arm,size=0x48) addr:0x02065988 -func_ov000_020659d0 kind:function(arm,size=0x148) addr:0x020659d0 -func_ov000_02065b18 kind:function(arm,size=0x30) addr:0x02065b18 -func_ov000_02065b48 kind:function(arm,size=0x44) addr:0x02065b48 -func_ov000_02065b8c kind:function(arm,size=0x94) addr:0x02065b8c +_ZN29UnkStruct_020d8698_24_5C_BaseC2EiPKtti kind:function(arm,size=0x88) addr:0x020657fc +_ZN29UnkStruct_020d8698_24_5C_BaseC1EiPKtti kind:function(arm,size=0x88) addr:0x02065884 +_ZN29UnkStruct_020d8698_24_5C_Base19func_ov000_0206590cEti kind:function(arm,size=0x24) addr:0x0206590c +_ZN29UnkStruct_020d8698_24_5C_Base19func_ov000_02065930Ev kind:function(arm,size=0x58) addr:0x02065930 +_ZN29UnkStruct_020d8698_24_5C_Base19func_ov000_02065988EtPKt kind:function(arm,size=0x48) addr:0x02065988 +_ZN29UnkStruct_020d8698_24_5C_Base19func_ov000_020659d0EPcP14UnkDataStruct1 kind:function(arm,size=0x148) addr:0x020659d0 +_ZN24UnkStruct_020d8698_24_5CC1EiPKtti kind:function(arm,size=0x30) addr:0x02065b18 +_ZN24UnkStruct_020d8698_24_5C19func_ov000_02065b48Eii kind:function(arm,size=0x44) addr:0x02065b48 +_ZN24UnkStruct_020d8698_24_5C19func_ov000_02065b8cEv kind:function(arm,size=0x94) addr:0x02065b8c func_ov000_02065c20 kind:function(arm,size=0x4c) addr:0x02065c20 func_ov000_02065c6c kind:function(arm,size=0x4c) addr:0x02065c6c func_ov000_02065cb8 kind:function(arm,size=0x48) addr:0x02065cb8 @@ -717,8 +717,8 @@ func_ov000_020677b0 kind:function(arm,size=0x54) addr:0x020677b0 func_ov000_02067804 kind:function(arm,size=0xdc) addr:0x02067804 func_ov000_020678e0 kind:function(arm,size=0x90) addr:0x020678e0 func_ov000_02067970 kind:function(arm,size=0xbc) addr:0x02067970 -func_ov000_02067a2c kind:function(arm,size=0x34) addr:0x02067a2c -_ZN17struct_aStack_2e0C1EP24UnkStruct_ov000_020b504ci kind:function(arm,size=0x44) addr:0x02067a60 +_ZN29UnkStruct_ov000_020b504c_Sub319func_ov000_02067a2cEj kind:function(arm,size=0x34) addr:0x02067a2c +_ZN17UnkMsgDataStruct119func_ov000_02067a60EPvi kind:function(arm,size=0x44) addr:0x02067a60 func_ov000_02067aa4 kind:function(arm,size=0x7c) addr:0x02067aa4 _ZN24UnkStruct_ov000_020b504c19func_ov000_02067b20Ev kind:function(arm,size=0x40) addr:0x02067b20 _ZN24UnkStruct_ov000_020b504c19func_ov000_02067b60Ev kind:function(arm,size=0x54) addr:0x02067b60 @@ -757,7 +757,7 @@ _ZN17struct_aStack_2d819func_ov000_0206869cEv kind:function(arm,size=0x8) addr:0 _ZN17struct_aStack_2d819func_ov000_020686a4Ei kind:function(arm,size=0x34) addr:0x020686a4 func_ov000_020686d8 kind:function(arm,size=0xb4) addr:0x020686d8 _ZN17struct_aStack_2d819func_ov000_0206878cEv kind:function(arm,size=0xc) addr:0x0206878c -func_ov000_02068798 kind:function(arm,size=0x1c) addr:0x02068798 +_ZN32UnkSystem2_UnkSubSystem5_Base_1019func_ov000_02068798EP5Vec2s kind:function(arm,size=0x1c) addr:0x02068798 func_ov000_020687b4 kind:function(arm,size=0x48) addr:0x020687b4 func_ov000_020687fc kind:function(arm,size=0x6c) addr:0x020687fc func_ov000_02068868 kind:function(arm,size=0xb4) addr:0x02068868 @@ -773,7 +773,7 @@ func_ov000_02068d50 kind:function(arm,size=0x29c) addr:0x02068d50 _ZN17struct_aStack_2d819func_ov000_02068fecEv kind:function(arm,size=0x1c8) addr:0x02068fec func_ov000_020691b4 kind:function(arm,size=0x24) addr:0x020691b4 func_ov000_020691d8 kind:function(arm,size=0x8) addr:0x020691d8 -func_ov000_020691e0 kind:function(arm,size=0x3f4) addr:0x020691e0 +_ZN32UnkSystem2_UnkSubSystem5_Base_1019func_ov000_020691e0EPv kind:function(arm,size=0x3f4) addr:0x020691e0 func_ov000_020695d4 kind:function(arm,size=0x80) addr:0x020695d4 func_ov000_02069654 kind:function(arm,size=0x50) addr:0x02069654 func_ov000_020696a4 kind:function(arm,size=0x4) addr:0x020696a4 @@ -3459,7 +3459,7 @@ data_ov000_020b1e30 kind:data(any) addr:0x020b1e30 _ZTV26GameModeManagerBase_104_0C kind:data(any) addr:0x020b1e40 _ZTV23GameModeManagerBase_104 kind:data(any) addr:0x020b1e58 data_ov000_020b1e84 kind:data(any) addr:0x020b1e7c -data_ov000_020b1e9c kind:data(any) addr:0x020b1e9c +_ZTV34UnkSystem2_UnkSubSystem11_Derived1 kind:data(any) addr:0x020b1e94 data_ov000_020b1eb4 kind:data(any) addr:0x020b1eb4 _ZTV19data_ov000_020b1ec4 kind:data(any) addr:0x020b1ec4 _ZTV19data_ov000_020b1edc kind:data(any) addr:0x020b1edc diff --git a/config/eur/arm9/overlays/ov019/symbols.txt b/config/eur/arm9/overlays/ov019/symbols.txt index fb706e3a..22c909f8 100644 --- a/config/eur/arm9/overlays/ov019/symbols.txt +++ b/config/eur/arm9/overlays/ov019/symbols.txt @@ -22,7 +22,7 @@ _ZN17FileSelectManager8vfunc_24Ev kind:function(arm,size=0x40) addr:0x020c4ff8 _ZN17FileSelectManager19func_ov019_020c5038Ev kind:function(arm,size=0x4) addr:0x020c5038 _ZN17FileSelectManager19func_ov019_020c503cEv kind:function(arm,size=0x12c) addr:0x020c503c _ZN17FileSelectManager8vfunc_28EPc kind:function(arm,size=0x20) addr:0x020c5168 -_ZN17FileSelectManager8vfunc_2CEPc kind:function(arm,size=0x20) addr:0x020c5188 +_ZN17FileSelectManager6DrawUIEPc kind:function(arm,size=0x20) addr:0x020c5188 _ZN17FileSelectManager19func_ov019_020c51a8Ev kind:function(arm,size=0x44) addr:0x020c51a8 _ZN23UnkStruct_0204a088_BaseD2Ev kind:function(arm,size=0x14) addr:0x020c51ec _ZN25UnkSystem1_ov019_Derived1C1Ev kind:function(arm,size=0x3c) addr:0x020c5200 diff --git a/config/eur/arm9/overlays/ov024/delinks.txt b/config/eur/arm9/overlays/ov024/delinks.txt index ac4df1ed..5c84baaf 100644 --- a/config/eur/arm9/overlays/ov024/delinks.txt +++ b/config/eur/arm9/overlays/ov024/delinks.txt @@ -95,16 +95,27 @@ src/024_MainGame/Game/AdventureModeManager_15C_20_00_024.cpp: .data start:0x020d7f50 end:0x020d7f74 src/024_MainGame/UnkAdventureModeSystem1_024.cpp: + complete .text start:0x020caa58 end:0x020cada0 + .data start:0x020d7f74 end:0x020d7f80 src/024_MainGame/UnkStruct_ov024_020d8694_024.cpp: .text start:0x020cada0 end:0x020cb1f0 + .rodata start:0x020d7328 end:0x020d73d8 + .data start:0x020d7f80 end:0x020d7fa4 + .bss start:0x020d8694 end:0x020d8698 src/024_MainGame/UnkTitleCardSystem1_024.cpp: + complete .text start:0x020cb1f0 end:0x020ccd1c + .data start:0x020d7fa4 end:0x020d8064 src/024_MainGame/UnkStruct_020d8698_024.cpp: + complete .text start:0x020ccd1c end:0x020cf968 + .rodata start:0x020d73d8 end:0x020d7454 + .data start:0x020d8064 end:0x020d8094 + .bss start:0x020d8698 end:0x020d869c src/024_MainGame/UnkStruct_027e0cf8_00_0C_024.cpp: .text start:0x020cf968 end:0x020d05ec diff --git a/config/eur/arm9/overlays/ov024/relocs.txt b/config/eur/arm9/overlays/ov024/relocs.txt index 03e90490..8bef3b5f 100644 --- a/config/eur/arm9/overlays/ov024/relocs.txt +++ b/config/eur/arm9/overlays/ov024/relocs.txt @@ -1265,7 +1265,7 @@ from:0x020cae84 kind:arm_call to:0x020cb274 module:overlay(24) from:0x020cae94 kind:arm_call to:0x020cb274 module:overlay(24) from:0x020caea4 kind:arm_call to:0x020cb274 module:overlay(24) from:0x020caeb0 kind:load to:0x020d7f80 add:0x8 module:overlay(24) -from:0x020caeb4 kind:load to:0x020443a8 module:main +from:0x020caeb4 kind:load to:0x020443a0 add:0x8 module:main from:0x020caedc kind:arm_call to:0x02061f60 module:overlay(0) from:0x020caee4 kind:arm_call to:0x02011ff4 module:main from:0x020caf04 kind:arm_call to:0x020cb280 module:overlay(24) @@ -1310,7 +1310,7 @@ from:0x020cb1ec kind:load to:0x020d8694 module:overlay(24) from:0x020cb250 kind:arm_call to:0x0201e6d0 module:main from:0x020cb258 kind:arm_call to:0x0201e6d0 module:main from:0x020cb260 kind:arm_call to:0x0201e6d0 module:main -from:0x020cb270 kind:load to:0x020d7fd0 module:overlay(24) +from:0x020cb270 kind:load to:0x020d7fc8 add:0x8 module:overlay(24) from:0x020cb2a8 kind:arm_call to:0x02067f88 module:overlay(0) from:0x020cb2c8 kind:arm_call to:0x02067f5c module:overlay(0) from:0x020cb2e4 kind:arm_call to:0x02067a2c module:overlay(0) @@ -1352,7 +1352,7 @@ from:0x020cb86c kind:arm_call to:0x0201e8d4 module:main from:0x020cb8a0 kind:arm_call to:0x0206216c module:overlay(0) from:0x020cb8ac kind:load to:0x0204af1c module:main from:0x020cb8d4 kind:arm_call to:0x020cb1f0 module:overlay(24) -from:0x020cb900 kind:load to:0x020d8044 module:overlay(24) +from:0x020cb900 kind:load to:0x020d803c add:0x8 module:overlay(24) from:0x020cb940 kind:arm_call to:0x020cb284 module:overlay(24) from:0x020cb974 kind:arm_call to:0x0201e874 module:main from:0x020cb9c0 kind:arm_call to:0x0201e874 module:main @@ -1409,7 +1409,7 @@ from:0x020cc138 kind:load to:0x0204a088 module:main from:0x020cc13c kind:load to:0x027e0994 module:dtcm from:0x020cc15c kind:arm_call to:0x020cb8cc module:overlay(24) from:0x020cc16c kind:arm_call to:0x0201ef9c module:main -from:0x020cc180 kind:load to:0x020d7ff4 module:overlay(24) +from:0x020cc180 kind:load to:0x020d7fec add:0x8 module:overlay(24) from:0x020cc1c0 kind:arm_call to:0x020cb904 module:overlay(24) from:0x020cc1d4 kind:arm_call to:0x0201effc module:main from:0x020cc208 kind:arm_call to:0x0201f04c module:main @@ -1425,7 +1425,7 @@ from:0x020cc448 kind:arm_call to:0x020cbf98 module:overlay(24) from:0x020cc454 kind:load to:0x0204a110 add:0xd9c module:main from:0x020cc460 kind:arm_call to:0x020cb8cc module:overlay(24) from:0x020cc470 kind:arm_call to:0x0201eb4c module:main -from:0x020cc47c kind:load to:0x020d801c module:overlay(24) +from:0x020cc47c kind:load to:0x020d8014 add:0x8 module:overlay(24) from:0x020cc488 kind:arm_call to:0x020cb904 module:overlay(24) from:0x020cc4a4 kind:arm_call to:0x0201ebf8 module:main from:0x020cc508 kind:arm_call to:0x020cc088 module:overlay(24) @@ -1439,7 +1439,7 @@ from:0x020cc738 kind:load to:0x027e0120 module:dtcm from:0x020cc744 kind:arm_call to:0x020cb8b0 module:overlay(24) from:0x020cc754 kind:arm_call to:0x0201ec30 module:main from:0x020cc774 kind:arm_call to:0x020cb1f0 module:overlay(24) -from:0x020cc788 kind:load to:0x020d7fac module:overlay(24) +from:0x020cc788 kind:load to:0x020d7fa4 add:0x8 module:overlay(24) from:0x020ccb08 kind:load to:0x020d8694 module:overlay(24) from:0x020ccb0c kind:load to:0x020cb178 module:overlay(24) from:0x020ccb2c kind:arm_call to:0x020cb284 module:overlay(24) diff --git a/config/eur/arm9/overlays/ov024/symbols.txt b/config/eur/arm9/overlays/ov024/symbols.txt index f51a9bbf..a2f29bdc 100644 --- a/config/eur/arm9/overlays/ov024/symbols.txt +++ b/config/eur/arm9/overlays/ov024/symbols.txt @@ -68,7 +68,7 @@ _ZN20AdventureModeManager19func_ov024_020c5f70Ev kind:function(arm,size=0x184) a _ZN20AdventureModeManager19func_ov024_020c60f4Ev kind:function(arm,size=0x148) addr:0x020c60f4 _ZN20AdventureModeManager19func_ov024_020c623cEv kind:function(arm,size=0x8c) addr:0x020c623c _ZN20AdventureModeManager8vfunc_28EPc kind:function(arm,size=0x60) addr:0x020c62c8 -_ZN20AdventureModeManager8vfunc_2CEPc kind:function(arm,size=0x138) addr:0x020c6328 +_ZN20AdventureModeManager6DrawUIEPc kind:function(arm,size=0x138) addr:0x020c6328 _ZN20AdventureModeManager8vfunc_34Eii kind:function(arm,size=0xa0) addr:0x020c6460 _ZN20AdventureModeManager8vfunc_38Ejhss kind:function(arm,size=0x14) addr:0x020c6500 _ZN20AdventureModeManager19func_ov024_020c6514Ejhss kind:function(arm,size=0x160) addr:0x020c6514 @@ -85,7 +85,7 @@ _ZN20AdventureModeManager19func_ov024_020c6940Eii kind:function(arm,size=0x5c) a _ZN20AdventureModeManager19func_ov024_020c699cEv kind:function(arm,size=0x34) addr:0x020c699c _ZN20AdventureModeManager19func_ov024_020c69d0Ev kind:function(arm,size=0x50) addr:0x020c69d0 _ZN20AdventureModeManager19func_ov024_020c6a20Ev kind:function(arm,size=0x28) addr:0x020c6a20 -_ZN20AdventureModeManager19func_ov024_020c6a48Eii kind:function(arm,size=0xac) addr:0x020c6a48 +_ZN20AdventureModeManager19func_ov024_020c6a48Eib kind:function(arm,size=0xac) addr:0x020c6a48 _ZN20AdventureModeManager19func_ov024_020c6af4Ei kind:function(arm,size=0x98) addr:0x020c6af4 _ZN20AdventureModeManager19func_ov024_020c6b8cEv kind:function(arm,size=0xd4) addr:0x020c6b8c _ZN20AdventureModeManager19func_ov024_020c6c60Ev kind:function(arm,size=0x74) addr:0x020c6c60 @@ -275,137 +275,137 @@ _ZN30AdventureModeManager_15C_20_0019func_ov024_020ca658Ev kind:function(arm,siz _ZN30AdventureModeManager_15C_20_008vfunc_08EP5InputP12TouchControl kind:function(arm,size=0x2d0) addr:0x020ca6a8 _ZN30AdventureModeManager_15C_20_00D1Ev kind:function(arm,size=0x6c) addr:0x020ca978 _ZN30AdventureModeManager_15C_20_00D0Ev kind:function(arm,size=0x74) addr:0x020ca9e4 -_ZN23UnkAdventureModeSystem1C2EPsPsi kind:function(arm,size=0xa4) addr:0x020caa58 -_ZN23UnkAdventureModeSystem1C2Ei kind:function(arm,size=0x5c) addr:0x020caafc -_ZN23UnkAdventureModeSystem119func_ov024_020cab58Ev kind:function(arm,size=0x4c) addr:0x020cab58 -_ZN23UnkAdventureModeSystem119func_ov024_020caba4Ev kind:function(arm,size=0x1d8) addr:0x020caba4 -_ZN23UnkAdventureModeSystem119func_ov024_020cad7cEv kind:function(arm,size=0x24) addr:0x020cad7c +_ZN23UnkAdventureModeSystem1C2EP5Vec2sS1_b kind:function(arm,size=0xa4) addr:0x020caa58 +_ZN23UnkAdventureModeSystem1C2Eb kind:function(arm,size=0x5c) addr:0x020caafc +_ZN23UnkAdventureModeSystem119func_ov024_020cab58EP5Vec2sS1_ kind:function(arm,size=0x4c) addr:0x020cab58 +_ZN23UnkAdventureModeSystem119func_ov024_020caba4Ei kind:function(arm,size=0x1d8) addr:0x020caba4 +_ZN23UnkAdventureModeSystem119func_ov024_020cad7cEi kind:function(arm,size=0x24) addr:0x020cad7c _ZN24UnkStruct_ov024_020d86946CreateEP23GameModeManagerBase_004 kind:function(arm,size=0x2c) addr:0x020cada0 -_ZN24UnkStruct_ov024_020d8694C1Ev kind:function(arm,size=0xec) addr:0x020cadcc +_ZN24UnkStruct_ov024_020d8694C1EP23GameModeManagerBase_004 kind:function(arm,size=0xec) addr:0x020cadcc _ZN24UnkStruct_ov024_020d8694D1Ev kind:function(arm,size=0x7c) addr:0x020caeb8 _ZN24UnkStruct_ov024_020d8694D0Ev kind:function(arm,size=0x84) addr:0x020caf34 -_ZN24UnkStruct_ov024_020d869419func_ov024_020cafb8Ev kind:function(arm,size=0x20) addr:0x020cafb8 -_ZN24UnkStruct_ov024_020d869419func_ov024_020cafd8Ev kind:function(arm,size=0x28) addr:0x020cafd8 -_ZN24UnkStruct_ov024_020d869419func_ov024_020cb000Ev kind:function(arm,size=0x20) addr:0x020cb000 -_ZN24UnkStruct_ov024_020d869419func_ov024_020cb020Ev kind:function(arm,size=0x20) addr:0x020cb020 +_ZN24UnkStruct_ov024_020d869419func_ov024_020cafb8Ei kind:function(arm,size=0x20) addr:0x020cafb8 +_ZN24UnkStruct_ov024_020d869419func_ov024_020cafd8Ei kind:function(arm,size=0x28) addr:0x020cafd8 +_ZN24UnkStruct_ov024_020d869419func_ov024_020cb000Ei kind:function(arm,size=0x20) addr:0x020cb000 +_ZN24UnkStruct_ov024_020d869419func_ov024_020cb020Ei kind:function(arm,size=0x20) addr:0x020cb020 _ZN24UnkStruct_ov024_020d869419func_ov024_020cb040Ev kind:function(arm,size=0x14) addr:0x020cb040 -_ZN24UnkStruct_ov024_020d869419func_ov024_020cb054Ev kind:function(arm,size=0x58) addr:0x020cb054 -_ZN24UnkStruct_ov024_020d869419func_ov024_020cb0acEv kind:function(arm,size=0x18) addr:0x020cb0ac +_ZN24UnkStruct_ov024_020d869419func_ov024_020cb054EiP5Vec2sS1_ kind:function(arm,size=0x58) addr:0x020cb054 +_ZN24UnkStruct_ov024_020d869412GetMessageIDEi kind:function(arm,size=0x18) addr:0x020cb0ac _ZN24UnkStruct_ov024_020d869419func_ov024_020cb0c4Ev kind:function(arm,size=0x30) addr:0x020cb0c4 _ZN24UnkStruct_ov024_020d86948vfunc_08EP5InputP12TouchControl kind:function(arm,size=0x3c) addr:0x020cb0f4 _ZN24UnkStruct_ov024_020d86948vfunc_10EPc kind:function(arm,size=0x48) addr:0x020cb130 -_ZN24UnkStruct_ov024_020d869419func_ov024_020cb178Ev kind:function(arm,size=0x1c) addr:0x020cb178 -_ZN24UnkStruct_ov024_020d869419func_ov024_020cb194Ev kind:function(arm,size=0x38) addr:0x020cb194 -func_ov024_020cb1cc kind:function(arm,size=0x10) addr:0x020cb1cc -func_ov024_020cb1dc kind:function(arm,size=0x14) addr:0x020cb1dc +_ZN24UnkStruct_ov024_020d869419func_ov024_020cb178Ei kind:function(arm,size=0x1c) addr:0x020cb178 +_ZN24UnkStruct_ov024_020d869419func_ov024_020cb194Es kind:function(arm,size=0x38) addr:0x020cb194 +_ZN8InstanceI24UnkStruct_ov024_020d8694EC2Ev kind:function(arm,size=0x10) addr:0x020cb1cc +_ZN8InstanceI24UnkStruct_ov024_020d8694ED2Ev kind:function(arm,size=0x14) addr:0x020cb1dc _ZN19UnkTitleCardSystem1C2EP23GameModeManagerBase_004 kind:function(arm,size=0x84) addr:0x020cb1f0 -func_ov024_020cb274 kind:function(arm,size=0xc) addr:0x020cb274 -func_ov024_020cb280 kind:function(arm,size=0x4) addr:0x020cb280 -func_ov024_020cb284 kind:function(arm,size=0x20c) addr:0x020cb284 -func_ov024_020cb490 kind:function(arm,size=0x11c) addr:0x020cb490 +_ZN19UnkTitleCardSystem119func_ov024_020cb274EP34UnkSystem2_UnkSubSystem11_Derived2P32UnkSystem2_UnkSubSystem5_Base_10 kind:function(arm,size=0xc) addr:0x020cb274 +_ZN19UnkTitleCardSystem119func_ov024_020cb280Ev kind:function(arm,size=0x4) addr:0x020cb280 +_ZN19UnkTitleCardSystem119func_ov024_020cb284Eii kind:function(arm,size=0x20c) addr:0x020cb284 +_ZN19UnkTitleCardSystem119func_ov024_020cb490EP14UnkDataStruct2Pi kind:function(arm,size=0x11c) addr:0x020cb490 _ZN19UnkTitleCardSystem18vfunc_08Ev kind:function(arm,size=0x8) addr:0x020cb5ac _ZN19UnkTitleCardSystem18vfunc_0CEv kind:function(arm,size=0x4) addr:0x020cb5b4 _ZN19UnkTitleCardSystem18vfunc_10Ev kind:function(arm,size=0x4) addr:0x020cb5b8 -func_ov024_020cb5bc kind:function(arm,size=0x3c) addr:0x020cb5bc +_ZN19UnkTitleCardSystem119func_ov024_020cb5bcEv kind:function(arm,size=0x3c) addr:0x020cb5bc _ZN19UnkTitleCardSystem18vfunc_00Ev kind:function(arm,size=0x4) addr:0x020cb5f8 -_ZN19UnkTitleCardSystem18vfunc_04Ev kind:function(arm,size=0x58) addr:0x020cb5fc -func_ov024_020cb654 kind:function(arm,size=0x25c) addr:0x020cb654 +_ZN19UnkTitleCardSystem18vfunc_04EPc kind:function(arm,size=0x58) addr:0x020cb5fc +_ZN19UnkTitleCardSystem119func_ov024_020cb654EPcP14UnkDataStruct1 kind:function(arm,size=0x25c) addr:0x020cb654 _ZN19UnkTitleCardSystem18vfunc_14Ev kind:function(arm,size=0x14) addr:0x020cb8b0 _ZN19UnkTitleCardSystem18vfunc_18Ev kind:function(arm,size=0x8) addr:0x020cb8c4 _ZN28UnkTitleCardSystem1_Derived1C2EP23GameModeManagerBase_004 kind:function(arm,size=0x38) addr:0x020cb8cc -_ZN28UnkTitleCardSystem1_Derived18vfunc_1CEv kind:function(arm,size=0x114) addr:0x020cb904 +_ZN28UnkTitleCardSystem1_Derived18vfunc_1CEjib kind:function(arm,size=0x114) addr:0x020cb904 _ZN28UnkTitleCardSystem1_Derived18vfunc_08Ev kind:function(arm,size=0x80) addr:0x020cba18 _ZN28UnkTitleCardSystem1_Derived18vfunc_0CEv kind:function(arm,size=0x338) addr:0x020cba98 _ZN28UnkTitleCardSystem1_Derived18vfunc_10Ev kind:function(arm,size=0xc4) addr:0x020cbdd0 -func_ov024_020cbe94 kind:function(arm,size=0x24) addr:0x020cbe94 -func_ov024_020cbeb8 kind:function(arm,size=0xbc) addr:0x020cbeb8 -func_ov024_020cbf74 kind:function(arm,size=0x24) addr:0x020cbf74 -func_ov024_020cbf98 kind:function(arm,size=0xc4) addr:0x020cbf98 -func_ov024_020cc05c kind:function(arm,size=0x2c) addr:0x020cc05c -func_ov024_020cc088 kind:function(arm,size=0x2c) addr:0x020cc088 -func_ov024_020cc0b4 kind:function(arm,size=0x8c) addr:0x020cc0b4 +_ZN28UnkTitleCardSystem1_Derived119func_ov024_020cbe94Ei kind:function(arm,size=0x24) addr:0x020cbe94 +_ZN28UnkTitleCardSystem1_Derived119func_ov024_020cbeb8Ev kind:function(arm,size=0xbc) addr:0x020cbeb8 +_ZN28UnkTitleCardSystem1_Derived119func_ov024_020cbf74Ei kind:function(arm,size=0x24) addr:0x020cbf74 +_ZN28UnkTitleCardSystem1_Derived119func_ov024_020cbf98Ev kind:function(arm,size=0xc4) addr:0x020cbf98 +_ZN28UnkTitleCardSystem1_Derived119func_ov024_020cc05cEj kind:function(arm,size=0x2c) addr:0x020cc05c +_ZN28UnkTitleCardSystem1_Derived119func_ov024_020cc088Eb kind:function(arm,size=0x2c) addr:0x020cc088 +_ZN28UnkTitleCardSystem1_Derived119func_ov024_020cc0b4Ev kind:function(arm,size=0x8c) addr:0x020cc0b4 _ZN28UnkTitleCardSystem1_Derived18vfunc_18Ev kind:function(arm,size=0x14) addr:0x020cc140 _ZN28UnkStruct_ov024_020d8694_01CC1EP23GameModeManagerBase_004 kind:function(arm,size=0x30) addr:0x020cc154 -_ZN28UnkStruct_ov024_020d8694_01C8vfunc_1CEv kind:function(arm,size=0xa8) addr:0x020cc184 +_ZN28UnkStruct_ov024_020d8694_01C8vfunc_1CEjib kind:function(arm,size=0xa8) addr:0x020cc184 _ZN28UnkStruct_ov024_020d8694_01C8vfunc_00Ev kind:function(arm,size=0x22c) addr:0x020cc22c _ZN28UnkStruct_ov024_020d8694_188C1EP23GameModeManagerBase_004 kind:function(arm,size=0x28) addr:0x020cc458 -_ZN28UnkStruct_ov024_020d8694_1888vfunc_1CEv kind:function(arm,size=0x54) addr:0x020cc480 +_ZN28UnkStruct_ov024_020d8694_1888vfunc_1CEjib kind:function(arm,size=0x54) addr:0x020cc480 _ZN28UnkStruct_ov024_020d8694_1888vfunc_00Ev kind:function(arm,size=0x1e0) addr:0x020cc4d4 -_ZN28UnkStruct_ov024_020d8694_1888vfunc_04Ev kind:function(arm,size=0x88) addr:0x020cc6b4 +_ZN28UnkStruct_ov024_020d8694_1888vfunc_04EPc kind:function(arm,size=0x88) addr:0x020cc6b4 _ZN28UnkStruct_ov024_020d8694_1888vfunc_14Ev kind:function(arm,size=0x30) addr:0x020cc73c _ZN28UnkStruct_ov024_020d8694_2FCC1EP23GameModeManagerBase_004 kind:function(arm,size=0x20) addr:0x020cc76c _ZN28UnkStruct_ov024_020d8694_2FC8vfunc_00Ev kind:function(arm,size=0x364) addr:0x020cc78c _ZN28UnkStruct_ov024_020d8694_2FC8vfunc_10Ev kind:function(arm,size=0x20) addr:0x020ccaf0 -func_ov024_020ccb10 kind:function(arm,size=0x17c) addr:0x020ccb10 +_ZN28UnkStruct_ov024_020d8694_2FC19func_ov024_020ccb10EiP5Vec2sS1_ kind:function(arm,size=0x17c) addr:0x020ccb10 _ZN28UnkStruct_ov024_020d8694_2FC8vfunc_08Ev kind:function(arm,size=0x8) addr:0x020ccc8c _ZN28UnkStruct_ov024_020d8694_2FC8vfunc_0CEv kind:function(arm,size=0x88) addr:0x020ccc94 -func_ov024_020ccd1c kind:function(arm,size=0x24) addr:0x020ccd1c -func_ov024_020ccd40 kind:function(arm,size=0x19c) addr:0x020ccd40 -func_ov024_020ccedc kind:function(arm,size=0xd8) addr:0x020ccedc -_ZN19func_ov024_020ccfb4D0Ev kind:function(arm,size=0xe0) addr:0x020ccfb4 +_ZN18UnkStruct_020d86986CreateEv kind:function(arm,size=0x24) addr:0x020ccd1c +_ZN18UnkStruct_020d8698C1Ev kind:function(arm,size=0x19c) addr:0x020ccd40 +_ZN18UnkStruct_020d8698D1Ev kind:function(arm,size=0xd8) addr:0x020ccedc +_ZN18UnkStruct_020d8698D0Ev kind:function(arm,size=0xe0) addr:0x020ccfb4 _ZN18UnkStruct_020d869819func_ov024_020cd094Ev kind:function(arm,size=0xbc) addr:0x020cd094 _ZN18UnkStruct_020d869819func_ov024_020cd150Ev kind:function(arm,size=0x94) addr:0x020cd150 -func_ov024_020cd1e4 kind:function(arm,size=0x98) addr:0x020cd1e4 -func_ov024_020cd27c kind:function(arm,size=0xcc) addr:0x020cd27c -func_ov024_020cd348 kind:function(arm,size=0x10) addr:0x020cd348 -func_ov024_020cd358 kind:function(arm,size=0x10) addr:0x020cd358 +_ZN18UnkStruct_020d86988vfunc_08EP5InputP12TouchControl kind:function(arm,size=0x98) addr:0x020cd1e4 +_ZN18UnkStruct_020d86988vfunc_10EPc kind:function(arm,size=0xcc) addr:0x020cd27c +_ZN18UnkStruct_020d869819func_ov024_020cd348Ehh kind:function(arm,size=0x10) addr:0x020cd348 +_ZN18UnkStruct_020d869819func_ov024_020cd358Eh kind:function(arm,size=0x10) addr:0x020cd358 _ZN18UnkStruct_020d869819func_ov024_020cd368Ebb kind:function(arm,size=0x3c) addr:0x020cd368 _ZN18UnkStruct_020d869819func_ov024_020cd3a4Ev kind:function(arm,size=0x2c) addr:0x020cd3a4 _ZN18UnkStruct_020d869819func_ov024_020cd3d0Ev kind:function(arm,size=0x10) addr:0x020cd3d0 -_ZN18UnkStruct_020d869819func_ov024_020cd3e0Ei kind:function(arm,size=0x10) addr:0x020cd3e0 -_ZN18UnkStruct_020d869819func_ov024_020cd3f0Ei kind:function(arm,size=0x10) addr:0x020cd3f0 +_ZN18UnkStruct_020d869819func_ov024_020cd3e0Eb kind:function(arm,size=0x10) addr:0x020cd3e0 +_ZN18UnkStruct_020d869819func_ov024_020cd3f0Eb kind:function(arm,size=0x10) addr:0x020cd3f0 _ZN18UnkStruct_020d869819func_ov024_020cd400Ev kind:function(arm,size=0x10) addr:0x020cd400 _ZN18UnkStruct_020d869819func_ov024_020cd410Ev kind:function(arm,size=0x10) addr:0x020cd410 _ZN18UnkStruct_020d869819func_ov024_020cd420Ev kind:function(arm,size=0x38) addr:0x020cd420 -_ZN18UnkStruct_020d869819func_ov024_020cd458Eji kind:function(arm,size=0x4c) addr:0x020cd458 -func_ov024_020cd4a4 kind:function(arm,size=0x40) addr:0x020cd4a4 -_ZN18UnkStruct_020d869819func_ov024_020cd4e4Et kind:function(arm,size=0xdc) addr:0x020cd4e4 +_ZN18UnkStruct_020d869819func_ov024_020cd458Ejb kind:function(arm,size=0x4c) addr:0x020cd458 +_ZN18UnkStruct_020d869819func_ov024_020cd4a4Eb kind:function(arm,size=0x40) addr:0x020cd4a4 +_ZN18UnkStruct_020d869819func_ov024_020cd4e4Etb kind:function(arm,size=0xdc) addr:0x020cd4e4 _ZN18UnkStruct_020d869819func_ov024_020cd5c0Et kind:function(arm,size=0x44) addr:0x020cd5c0 -func_ov024_020cd604 kind:function(arm,size=0x6c) addr:0x020cd604 -func_ov024_020cd670 kind:function(arm,size=0xf8) addr:0x020cd670 -func_ov024_020cd768 kind:function(arm,size=0xc) addr:0x020cd768 -func_ov024_020cd774 kind:function(arm,size=0x27c) addr:0x020cd774 -func_ov024_020cd9f0 kind:function(arm,size=0xbc) addr:0x020cd9f0 -func_ov024_020cdaac kind:function(arm,size=0x290) addr:0x020cdaac -func_ov024_020cdd3c kind:function(arm,size=0x118) addr:0x020cdd3c -func_ov024_020cde54 kind:function(arm,size=0x74) addr:0x020cde54 -func_ov024_020cdec8 kind:function(arm,size=0x110) addr:0x020cdec8 -func_ov024_020cdfd8 kind:function(arm,size=0x240) addr:0x020cdfd8 -func_ov024_020ce218 kind:function(arm,size=0x48) addr:0x020ce218 -func_ov024_020ce260 kind:function(arm,size=0x48) addr:0x020ce260 -func_ov024_020ce2a8 kind:function(arm,size=0x24) addr:0x020ce2a8 -func_ov024_020ce2cc kind:function(arm,size=0x24c) addr:0x020ce2cc -func_ov024_020ce518 kind:function(arm,size=0x58) addr:0x020ce518 -func_ov024_020ce570 kind:function(arm,size=0x5c) addr:0x020ce570 -func_ov024_020ce5cc kind:function(arm,size=0x2c0) addr:0x020ce5cc -func_ov024_020ce88c kind:function(arm,size=0x104) addr:0x020ce88c -func_ov024_020ce990 kind:function(arm,size=0x1c) addr:0x020ce990 -func_ov024_020ce9ac kind:function(arm,size=0x50) addr:0x020ce9ac -func_ov024_020ce9fc kind:function(arm,size=0x358) addr:0x020ce9fc -func_ov024_020ced54 kind:function(arm,size=0x54) addr:0x020ced54 -func_ov024_020ceda8 kind:function(arm,size=0xb0) addr:0x020ceda8 -func_ov024_020cee58 kind:function(arm,size=0xc) addr:0x020cee58 -func_ov024_020cee64 kind:function(arm,size=0x20) addr:0x020cee64 -func_ov024_020cee84 kind:function(arm,size=0xd4) addr:0x020cee84 -func_ov024_020cef58 kind:function(arm,size=0x360) addr:0x020cef58 -func_ov024_020cf2b8 kind:function(arm,size=0x1dc) addr:0x020cf2b8 -func_ov024_020cf494 kind:function(arm,size=0x30) addr:0x020cf494 -func_ov024_020cf4c4 kind:function(arm,size=0x50) addr:0x020cf4c4 -func_ov024_020cf514 kind:function(arm,size=0x28) addr:0x020cf514 -func_ov024_020cf53c kind:function(arm,size=0x34) addr:0x020cf53c -func_ov024_020cf570 kind:function(arm,size=0x14) addr:0x020cf570 -func_ov024_020cf584 kind:function(arm,size=0x24) addr:0x020cf584 -func_ov024_020cf5a8 kind:function(arm,size=0x38) addr:0x020cf5a8 -func_ov024_020cf5e0 kind:function(arm,size=0xb8) addr:0x020cf5e0 -func_ov024_020cf698 kind:function(arm,size=0x4c) addr:0x020cf698 -func_ov024_020cf6e4 kind:function(arm,size=0x40) addr:0x020cf6e4 -func_ov024_020cf724 kind:function(arm,size=0xd0) addr:0x020cf724 -func_ov024_020cf7f4 kind:function(arm,size=0x38) addr:0x020cf7f4 -func_ov024_020cf82c kind:function(arm,size=0x5c) addr:0x020cf82c -func_ov024_020cf888 kind:function(arm,size=0x4) addr:0x020cf888 -func_ov024_020cf88c kind:function(arm,size=0xb8) addr:0x020cf88c -func_ov024_020cf944 kind:function(arm,size=0x10) addr:0x020cf944 -func_ov024_020cf954 kind:function(arm,size=0x14) addr:0x020cf954 +_ZN18UnkStruct_020d869819func_ov024_020cd604Ev kind:function(arm,size=0x6c) addr:0x020cd604 +_ZN21UnkStruct_020d8698_1CC1Ev kind:function(arm,size=0xf8) addr:0x020cd670 +_ZN21UnkStruct_020d8698_1C19func_ov024_020cd768Ev kind:function(arm,size=0xc) addr:0x020cd768 +_ZN21UnkStruct_020d8698_1C19func_ov024_020cd774Ev kind:function(arm,size=0x27c) addr:0x020cd774 +_ZN21UnkStruct_020d8698_1C19func_ov024_020cd9f0Ev kind:function(arm,size=0xbc) addr:0x020cd9f0 +_ZN21UnkStruct_020d8698_1C19func_ov024_020cdaacEv kind:function(arm,size=0x290) addr:0x020cdaac +_ZN21UnkStruct_020d8698_1C19func_ov024_020cdd3cEhh kind:function(arm,size=0x118) addr:0x020cdd3c +_ZN21UnkStruct_020d8698_1C19func_ov024_020cde54Eh kind:function(arm,size=0x74) addr:0x020cde54 +_ZN21UnkStruct_020d8698_1C19func_ov024_020cdec8Ev kind:function(arm,size=0x110) addr:0x020cdec8 +_ZN21UnkStruct_020d8698_1C19func_ov024_020cdfd8Ev kind:function(arm,size=0x240) addr:0x020cdfd8 +_ZN21UnkStruct_020d8698_1C19func_ov024_020ce218Ev kind:function(arm,size=0x48) addr:0x020ce218 +_ZN21UnkStruct_020d8698_1C19func_ov024_020ce260Ev kind:function(arm,size=0x48) addr:0x020ce260 +_ZN21UnkStruct_020d8698_1C19func_ov024_020ce2a8Ev kind:function(arm,size=0x24) addr:0x020ce2a8 +_ZN21UnkStruct_020d8698_24C1Ev kind:function(arm,size=0x24c) addr:0x020ce2cc +_ZN21UnkStruct_020d8698_2419func_ov024_020ce518Ev kind:function(arm,size=0x58) addr:0x020ce518 +_ZN21UnkStruct_020d8698_2419func_ov024_020ce570Ev kind:function(arm,size=0x5c) addr:0x020ce570 +_ZN21UnkStruct_020d8698_2419func_ov024_020ce5ccEv kind:function(arm,size=0x2c0) addr:0x020ce5cc +_ZN21UnkStruct_020d8698_2419func_ov024_020ce88cEPc kind:function(arm,size=0x104) addr:0x020ce88c +_ZN21UnkStruct_020d8698_2419func_ov024_020ce990Ebb kind:function(arm,size=0x1c) addr:0x020ce990 +_ZN21UnkStruct_020d8698_2419func_ov024_020ce9acEv kind:function(arm,size=0x50) addr:0x020ce9ac +_ZN21UnkStruct_020d8698_2CC1Ev kind:function(arm,size=0x358) addr:0x020ce9fc +_ZN21UnkStruct_020d8698_2C19func_ov024_020ced54Ev kind:function(arm,size=0x54) addr:0x020ced54 +_ZN21UnkStruct_020d8698_2C19func_ov024_020ceda8Ev kind:function(arm,size=0xb0) addr:0x020ceda8 +_ZN21UnkStruct_020d8698_2C19func_ov024_020cee58Ev kind:function(arm,size=0xc) addr:0x020cee58 +_ZN21UnkStruct_020d8698_2C19func_ov024_020cee64Ev kind:function(arm,size=0x20) addr:0x020cee64 +_ZN21UnkStruct_020d8698_2C19func_ov024_020cee84Ev kind:function(arm,size=0xd4) addr:0x020cee84 +_ZN21UnkStruct_020d8698_2C19func_ov024_020cef58Ev kind:function(arm,size=0x360) addr:0x020cef58 +_ZN21UnkStruct_020d8698_2C19func_ov024_020cf2b8EPc kind:function(arm,size=0x1dc) addr:0x020cf2b8 +_ZN21UnkStruct_020d8698_2C19func_ov024_020cf494Eb kind:function(arm,size=0x30) addr:0x020cf494 +_ZN21UnkStruct_020d8698_2C19func_ov024_020cf4c4Ev kind:function(arm,size=0x50) addr:0x020cf4c4 +_ZN21UnkStruct_020d8698_2C19func_ov024_020cf514Ev kind:function(arm,size=0x28) addr:0x020cf514 +_ZN21UnkStruct_020d8698_2C19func_ov024_020cf53cEb kind:function(arm,size=0x34) addr:0x020cf53c +_ZN21UnkStruct_020d8698_2C19func_ov024_020cf570Ev kind:function(arm,size=0x14) addr:0x020cf570 +_ZN21UnkStruct_020d8698_2C19func_ov024_020cf584Ev kind:function(arm,size=0x24) addr:0x020cf584 +_ZN21UnkStruct_020d8698_2C19func_ov024_020cf5a8Eb kind:function(arm,size=0x38) addr:0x020cf5a8 +_ZN21UnkStruct_020d8698_34C1Ev kind:function(arm,size=0xb8) addr:0x020cf5e0 +_ZN21UnkStruct_020d8698_3419func_ov024_020cf698Ev kind:function(arm,size=0x4c) addr:0x020cf698 +_ZN21UnkStruct_020d8698_3419func_ov024_020cf6e4Ev kind:function(arm,size=0x40) addr:0x020cf6e4 +_ZN21UnkStruct_020d8698_3419func_ov024_020cf724Ev kind:function(arm,size=0xd0) addr:0x020cf724 +_ZN21UnkStruct_020d8698_3CC1Ev kind:function(arm,size=0x38) addr:0x020cf7f4 +_ZN21UnkStruct_020d8698_3C19func_ov024_020cf82cEv kind:function(arm,size=0x5c) addr:0x020cf82c +_ZN21UnkStruct_020d8698_3C19func_ov024_020cf888Ev kind:function(arm,size=0x4) addr:0x020cf888 +_ZN21UnkStruct_020d8698_3C19func_ov024_020cf88cEv kind:function(arm,size=0xb8) addr:0x020cf88c +_ZN8InstanceI18UnkStruct_020d8698EC2Ev kind:function(arm,size=0x10) addr:0x020cf944 +_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 @@ -723,14 +723,14 @@ data_ov024_020d7318 kind:data(any) addr:0x020d7318 ambiguous data_ov024_020d731c kind:data(any) addr:0x020d731c ambiguous data_ov024_020d7320 kind:data(any) addr:0x020d7320 ambiguous data_ov024_020d7324 kind:data(any) addr:0x020d7324 ambiguous -data_ov024_020d7328 kind:data(any) addr:0x020d7328 -data_ov024_020d73d8 kind:data(any) addr:0x020d73d8 -data_ov024_020d73de kind:data(any) addr:0x020d73de -data_ov024_020d73ec kind:data(any) addr:0x020d73ec -data_ov024_020d73fa kind:data(any) addr:0x020d73fa -data_ov024_020d740a kind:data(any) addr:0x020d740a -data_ov024_020d741e kind:data(any) addr:0x020d741e -data_ov024_020d7432 kind:data(any) addr:0x020d7432 +sBMGSceneMap kind:data(any) addr:0x020d7328 local +data_ov024_020d73d8 kind:data(any) addr:0x020d73d8 local +data_ov024_020d73de kind:data(any) addr:0x020d73de local +data_ov024_020d73ec kind:data(any) addr:0x020d73ec local +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_020d7544 kind:data(any) addr:0x020d7544 local data_ov024_020d7547 kind:data(any) addr:0x020d7547 local @@ -803,15 +803,15 @@ _ZTV27AdventureModeManager_190_14 kind:data(any) addr:0x020d7ef4 _ZTV24AdventureModeManager_190 kind:data(any) addr:0x020d7f10 data_ov024_020d7f40 kind:data(any) addr:0x020d7f40 _ZTV30AdventureModeManager_15C_20_00 kind:data(any) addr:0x020d7f50 -_ZTV19data_ov024_020d7f7c kind:data(any) addr:0x020d7f74 -_ZTV19data_ov024_020d7f80 kind:data(any) addr:0x020d7f80 -data_ov024_020d7fac kind:data(any) addr:0x020d7fac -data_ov024_020d7fd0 kind:data(any) addr:0x020d7fd0 -data_ov024_020d7ff4 kind:data(any) addr:0x020d7ff4 -data_ov024_020d801c kind:data(any) addr:0x020d801c -data_ov024_020d8044 kind:data(any) addr:0x020d8044 -_ZTV19data_ov024_020d8064 kind:data(any) addr:0x020d8064 -data_ov024_020d8088 kind:data(any) addr:0x020d8088 +_ZTV23UnkAdventureModeSystem1 kind:data(any) addr:0x020d7f74 +_ZTV24UnkStruct_ov024_020d8694 kind:data(any) addr:0x020d7f80 +_ZTV28UnkStruct_ov024_020d8694_2FC kind:data(any) addr:0x020d7fa4 +_ZTV19UnkTitleCardSystem1 kind:data(any) addr:0x020d7fc8 +_ZTV28UnkStruct_ov024_020d8694_01C kind:data(any) addr:0x020d7fec +_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 diff --git a/config/eur/arm9/overlays/ov025/symbols.txt b/config/eur/arm9/overlays/ov025/symbols.txt index 63363463..6844bdd1 100644 --- a/config/eur/arm9/overlays/ov025/symbols.txt +++ b/config/eur/arm9/overlays/ov025/symbols.txt @@ -15,7 +15,7 @@ _ZN18TitleScreenManager8vfunc_14Ev kind:function(arm,size=0x78) addr:0x020c4b10 _ZN18TitleScreenManager8vfunc_18Ev kind:function(arm,size=0x34) addr:0x020c4b88 _ZN18TitleScreenManager8vfunc_24Ev kind:function(arm,size=0x20) addr:0x020c4bbc _ZN18TitleScreenManager8vfunc_28EPc kind:function(arm,size=0x20) addr:0x020c4bdc -_ZN18TitleScreenManager8vfunc_2CEPc kind:function(arm,size=0x20) addr:0x020c4bfc +_ZN18TitleScreenManager6DrawUIEPc kind:function(arm,size=0x20) addr:0x020c4bfc _ZN18TitleScreenManager8vfunc_38Ejhss kind:function(arm,size=0x4) addr:0x020c4c1c _ZN18TitleScreenManager19func_ov025_020c4c20Ev kind:function(arm,size=0x10) addr:0x020c4c20 _ZN18TitleScreenManager19func_ov025_020c4c30Ev kind:function(arm,size=0x10) addr:0x020c4c30 diff --git a/config/eur/arm9/overlays/ov031/symbols.txt b/config/eur/arm9/overlays/ov031/symbols.txt index 306545be..74a4f999 100644 --- a/config/eur/arm9/overlays/ov031/symbols.txt +++ b/config/eur/arm9/overlays/ov031/symbols.txt @@ -1931,14 +1931,14 @@ func_ov031_0210ea58 kind:function(arm,size=0x2c) addr:0x0210ea58 _ZN19func_ov031_0210ea84D0Ev kind:function(arm,size=0x1c) addr:0x0210ea84 _ZN19func_ov031_0210eaa0D1Ev kind:function(arm,size=0x20) addr:0x0210eaa0 _ZN19func_ov031_0210eac0D0Ev kind:function(arm,size=0x28) addr:0x0210eac0 -func_ov031_0210eae8 kind:function(thumb,size=0x3cc) addr:0x0210eae8 -func_ov031_0210eeb4 kind:function(arm,size=0x200) addr:0x0210eeb4 -func_ov031_0210f0b4 kind:function(arm,size=0x580) addr:0x0210f0b4 -func_ov031_0210f634 kind:function(arm,size=0x1b0) addr:0x0210f634 -func_ov031_0210f7e4 kind:function(arm,size=0x30) addr:0x0210f7e4 -func_ov031_0210f814 kind:function(arm,size=0xec) addr:0x0210f814 -_ZN19func_ov031_0210f900D1Ev kind:function(arm,size=0x14) addr:0x0210f900 -_ZN19func_ov031_0210f914D0Ev kind:function(arm,size=0x1c) addr:0x0210f914 +_ZN21UnkStruct_020d8698_44C1Ev kind:function(thumb,size=0x3cc) addr:0x0210eae8 +_ZN21UnkStruct_020d8698_4419func_ov031_0210eeb4Ev kind:function(arm,size=0x200) addr:0x0210eeb4 +_ZN21UnkStruct_020d8698_448vfunc_08Ev kind:function(arm,size=0x580) addr:0x0210f0b4 +_ZN21UnkStruct_020d8698_448vfunc_0CEv kind:function(arm,size=0x1b0) addr:0x0210f634 +_ZN21UnkStruct_020d8698_4419func_ov031_0210f7e4Ejb kind:function(arm,size=0x30) addr:0x0210f7e4 +_ZN21UnkStruct_020d8698_4419func_ov031_0210f814Ev kind:function(arm,size=0xec) addr:0x0210f814 +_ZN21UnkStruct_020d8698_44D1Ev kind:function(arm,size=0x14) addr:0x0210f900 +_ZN21UnkStruct_020d8698_44D0Ev kind:function(arm,size=0x1c) addr:0x0210f914 func_ov031_0210f930 kind:function(arm,size=0xac) addr:0x0210f930 func_ov031_0210f9dc kind:function(arm,size=0x4c) addr:0x0210f9dc _ZN19func_ov031_0210fa28D1Ev kind:function(arm,size=0x14) addr:0x0210fa28 diff --git a/config/eur/arm9/relocs.txt b/config/eur/arm9/relocs.txt index 77d89f74..453da310 100644 --- a/config/eur/arm9/relocs.txt +++ b/config/eur/arm9/relocs.txt @@ -2925,19 +2925,19 @@ from:0x0201f63c kind:load to:0x0204a110 module:main from:0x0201f64c kind:arm_call to:0x0201f244 module:main from:0x0201f65c kind:arm_call to:0x02061f30 module:overlay(0) from:0x0201f670 kind:load to:0x02044394 add:0x8 module:main -from:0x0201f674 kind:load to:0x020443a8 module:main +from:0x0201f674 kind:load to:0x020443a0 add:0x8 module:main from:0x0201f684 kind:arm_call to:0x0201f244 module:main from:0x0201f694 kind:arm_call to:0x02061f30 module:overlay(0) from:0x0201f6a8 kind:load to:0x02044394 add:0x8 module:main -from:0x0201f6ac kind:load to:0x020443a8 module:main +from:0x0201f6ac kind:load to:0x020443a0 add:0x8 module:main from:0x0201f6c4 kind:arm_call to:0x0201f288 module:main from:0x0201f6d4 kind:arm_call to:0x02061f30 module:overlay(0) from:0x0201f6e8 kind:load to:0x02044394 add:0x8 module:main -from:0x0201f6ec kind:load to:0x020443a8 module:main +from:0x0201f6ec kind:load to:0x020443a0 add:0x8 module:main from:0x0201f704 kind:arm_call to:0x0201f288 module:main from:0x0201f714 kind:arm_call to:0x02061f30 module:overlay(0) from:0x0201f728 kind:load to:0x02044394 add:0x8 module:main -from:0x0201f72c kind:load to:0x020443a8 module:main +from:0x0201f72c kind:load to:0x020443a0 add:0x8 module:main from:0x0201f748 kind:arm_call to:0x02067a2c module:overlay(0) from:0x0201f780 kind:arm_call to:0x02019590 module:main from:0x0201f7f0 kind:arm_call to:0x02015348 module:main diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index 09cb73a8..f53d6155 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -747,9 +747,9 @@ func_02015244 kind:function(arm,size=0x40) addr:0x02015244 func_02015284 kind:function(arm,size=0x7c) addr:0x02015284 func_02015300 kind:function(arm,size=0x38) addr:0x02015300 func_02015338 kind:function(arm,size=0x10) addr:0x02015338 -_ZN18SomeSaveFileStructC1Ei kind:function(arm,size=0x38) addr:0x02015348 +_ZN14UnkDataStruct2C1Ei kind:function(arm,size=0x38) addr:0x02015348 func_02015380 kind:function(arm,size=0x24) addr:0x02015380 -_ZN18SomeSaveFileStructD1Ev kind:function(arm,size=0x20) addr:0x020153a4 +_ZN14UnkDataStruct2D1Ev kind:function(arm,size=0x20) addr:0x020153a4 _ZN17UnkFileSystem2_10D1Ev kind:function(arm,size=0x20) addr:0x020153c4 func_020153e4 kind:function(arm,size=0x18) addr:0x020153e4 func_020153fc kind:function(thumb,size=0x12) addr:0x020153fc @@ -823,15 +823,15 @@ func_020165b0 kind:function(arm,size=0x50) addr:0x020165b0 func_02016600 kind:function(arm,size=0x20) addr:0x02016600 func_02016620 kind:function(arm,size=0x3c) addr:0x02016620 func_0201665c kind:function(arm,size=0x20) addr:0x0201665c -_ZN20GameModeLinkListNodeC2Ev kind:function(arm,size=0xc) addr:0x0201667c -_ZN20GameModeLinkListNodeC1Ev kind:function(arm,size=0xc) addr:0x02016688 -_ZN20GameModeLinkListNodeD2Ev kind:function(arm,size=0x18) addr:0x02016694 -_ZN20GameModeLinkListNode13func_020166acEPS_ kind:function(arm,size=0x20) addr:0x020166ac -_ZN20GameModeLinkListNode13func_020166ccEPS_ kind:function(arm,size=0x28) addr:0x020166cc -_ZN20GameModeLinkListNode13func_020166f4EPS_ kind:function(arm,size=0x2c) addr:0x020166f4 -func_02016720 kind:function(arm,size=0x1c) addr:0x02016720 -_ZN20GameModeLinkListNode13func_0201673cEv kind:function(arm,size=0x28) addr:0x0201673c -func_02016764 kind:function(arm,size=0x34) addr:0x02016764 +_ZN12LinkListImplC2Ev kind:function(arm,size=0xc) addr:0x0201667c +_ZN12LinkListImplC1Ev kind:function(arm,size=0xc) addr:0x02016688 +_ZN12LinkListImplD2Ev kind:function(arm,size=0x18) addr:0x02016694 +_ZN12LinkListImpl6DetachEP12LinkListNode kind:function(arm,size=0x20) addr:0x020166ac +_ZN12LinkListImpl6AppendEP12LinkListNode kind:function(arm,size=0x28) addr:0x020166cc +_ZN12LinkListImpl7PrependEP12LinkListNode kind:function(arm,size=0x2c) addr:0x020166f4 +_ZN12LinkListImpl6ExtendEP12LinkListNode kind:function(arm,size=0x1c) addr:0x02016720 +_ZN12LinkListImpl13GetListLengthEv kind:function(arm,size=0x28) addr:0x0201673c +_ZN12LinkListImpl8ContainsEP12LinkListNode kind:function(arm,size=0x34) addr:0x02016764 func_02016798 kind:function(arm,size=0x10) addr:0x02016798 func_020167a8 kind:function(arm,size=0x4) addr:0x020167a8 func_020167ac kind:function(arm,size=0x34) addr:0x020167ac @@ -937,7 +937,7 @@ _ZN19GameModeManagerBase8vfunc_04Ei kind:function(arm,size=0x28) addr:0x0201860c _ZN19GameModeManagerBase13func_02018634Et kind:function(arm,size=0x48) addr:0x02018634 _ZN19GameModeManagerBase8vfunc_24Ev kind:function(arm,size=0x18) addr:0x0201867c _ZN19GameModeManagerBase8vfunc_28EPc kind:function(arm,size=0x10) addr:0x02018694 -_ZN19GameModeManagerBase8vfunc_2CEPc kind:function(arm,size=0x4) addr:0x020186a4 +_ZN19GameModeManagerBase6DrawUIEPc kind:function(arm,size=0x4) addr:0x020186a4 _ZN19GameModeManagerBase8vfunc_30Ei kind:function(arm,size=0x4c) addr:0x020186a8 _ZN19GameModeManagerBase8vfunc_34Eii kind:function(arm,size=0x4) addr:0x020186f4 _ZN19GameModeManagerBase13func_020186f8Ei kind:function(arm,size=0xc) addr:0x020186f8 @@ -952,12 +952,12 @@ _ZN19GameModeManagerBase13func_02018984EPc kind:function(arm,size=0x90) addr:0x0 _ZN19GameModeManagerBase13func_02018a14EPc kind:function(arm,size=0x78) addr:0x02018a14 _ZN19GameModeManagerBase13func_02018a8cEv kind:function(arm,size=0x10) addr:0x02018a8c _ZN19GameModeManagerBase13func_02018a9cEii kind:function(arm,size=0x10) addr:0x02018a9c -_ZN19GameModeManagerBase13func_02018aacEi kind:function(arm,size=0x18) addr:0x02018aac -_ZN19GameModeManagerBase13func_02018ac4Ev kind:function(arm,size=0x10) addr:0x02018ac4 +_ZN19GameModeManagerBase13func_02018aacEib kind:function(arm,size=0x18) addr:0x02018aac +_ZN19GameModeManagerBase13func_02018ac4Es kind:function(arm,size=0x10) addr:0x02018ac4 _ZN19GameModeManagerBase13func_02018ad4Ev kind:function(arm,size=0x1c) addr:0x02018ad4 -_ZN19GameModeManagerBase13func_02018af0EP16GameModeLinkListI23GameModeManagerBase_104E kind:function(arm,size=0x64) addr:0x02018af0 -_ZN19GameModeManagerBase13func_02018b54EP16GameModeLinkListI23GameModeManagerBase_104E kind:function(arm,size=0x3c) addr:0x02018b54 -_ZN19GameModeManagerBase13func_02018b90EP16GameModeLinkListI23GameModeManagerBase_104EPc kind:function(arm,size=0x34) addr:0x02018b90 +_ZN19GameModeManagerBase13func_02018af0EP23GameModeManagerBase_104 kind:function(arm,size=0x64) addr:0x02018af0 +_ZN19GameModeManagerBase13func_02018b54EP23GameModeManagerBase_104 kind:function(arm,size=0x3c) addr:0x02018b54 +_ZN19GameModeManagerBase13func_02018b90EP23GameModeManagerBase_104Pc kind:function(arm,size=0x34) addr:0x02018b90 _ZN19GameModeManagerBase13func_02018bc4Ei kind:function(arm,size=0x1c) addr:0x02018bc4 _ZN18UnkStruct_0204a11013func_02018be0Ei kind:function(arm,size=0x4c) addr:0x02018be0 _ZN18UnkStruct_0204a11013func_02018c2cEv kind:function(arm,size=0x4c) addr:0x02018c2c @@ -979,7 +979,7 @@ _ZN18UnkStruct_0204a11013func_02019538Eii kind:function(arm,size=0x10) addr:0x02 _ZN18UnkStruct_0204a11013func_02019548Ev kind:function(arm,size=0x10) addr:0x02019548 func_02019558 kind:function(arm,size=0x28) addr:0x02019558 func_02019580 kind:function(arm,size=0x10) addr:0x02019580 -func_02019590 kind:function(arm,size=0x10) addr:0x02019590 +_ZN18UnkStruct_0204a11013func_02019590Esi kind:function(arm,size=0x10) addr:0x02019590 func_020195a0 kind:function(arm,size=0x84) addr:0x020195a0 func_02019624 kind:function(arm,size=0x2c) addr:0x02019624 func_02019650 kind:function(arm,size=0x2c) addr:0x02019650 @@ -1010,8 +1010,8 @@ func_0201a7b8 kind:function(arm,size=0x48) addr:0x0201a7b8 _ZN18UnkStruct_0204af1c13func_0201a800Ev kind:function(arm,size=0x7c) addr:0x0201a800 func_0201a87c kind:function(arm,size=0xf8) addr:0x0201a87c func_0201a974 kind:function(arm,size=0xd0) addr:0x0201a974 -_ZN18UnkStruct_0204af1c13func_0201aa44EPvS0_iS0_ kind:function(arm,size=0x48) addr:0x0201aa44 -func_0201aa8c kind:function(arm,size=0x44) addr:0x0201aa8c +_ZN18UnkStruct_0204af1c13func_0201aa44EP34UnkStruct_ov019_020d24c8_28_258_00PviS2_ kind:function(arm,size=0x48) addr:0x0201aa44 +_ZN18UnkStruct_0204af1c13func_0201aa8cEP34UnkStruct_ov019_020d24c8_28_258_00iiii kind:function(arm,size=0x44) addr:0x0201aa8c _ZN18UnkStruct_0204af1c13func_0201aad0EP14UnkSubStruct19PviS2_ kind:function(arm,size=0x1a0) addr:0x0201aad0 func_0201ac70 kind:function(arm,size=0x13c) addr:0x0201ac70 func_0201adac kind:function(arm,size=0x50) addr:0x0201adac @@ -1063,9 +1063,9 @@ _ZN23GameModeManagerBase_004D1Ev kind:function(arm,size=0x3c) addr:0x0201bee8 _ZN23GameModeManagerBase_00413func_0201bf24Ev kind:function(arm,size=0x30) addr:0x0201bf24 _ZN23GameModeManagerBase_00413func_0201bf54Ev kind:function(arm,size=0x3c) addr:0x0201bf54 _ZN23GameModeManagerBase_00413func_0201bf90Ev kind:function(arm,size=0x5c) addr:0x0201bf90 -_ZN23GameModeManagerBase_00413func_0201bfecEv kind:function(arm,size=0x20) addr:0x0201bfec +_ZN23GameModeManagerBase_00413func_0201bfecEs kind:function(arm,size=0x20) addr:0x0201bfec _ZN23GameModeManagerBase_00413func_0201c00cEii kind:function(arm,size=0x5c) addr:0x0201c00c -_ZN23GameModeManagerBase_00413func_0201c068Es kind:function(arm,size=0x3c) addr:0x0201c068 +_ZN23GameModeManagerBase_00413func_0201c068Esb kind:function(arm,size=0x3c) addr:0x0201c068 func_0201c0a4 kind:function(arm,size=0x20) addr:0x0201c0a4 _ZN23GameModeManagerBase_00413func_0201c0c4Ei kind:function(arm,size=0x20) addr:0x0201c0c4 _ZN23GameModeManagerBase_00413func_0201c0e4Ev kind:function(arm,size=0x40) addr:0x0201c0e4 @@ -1074,7 +1074,7 @@ _ZN23GameModeManagerBase_00413func_0201c19cEv kind:function(arm,size=0x48) addr: _ZN23GameModeManagerBase_00413func_0201c1e4Ev kind:function(arm,size=0x48) addr:0x0201c1e4 _ZN23GameModeManagerBase_00413func_0201c22cEv kind:function(arm,size=0x40) addr:0x0201c22c func_0201c26c kind:function(arm,size=0x44) addr:0x0201c26c -func_0201c2b0 kind:function(arm,size=0x30) addr:0x0201c2b0 +_ZN23GameModeManagerBase_00413func_0201c2b0Ei kind:function(arm,size=0x30) addr:0x0201c2b0 func_0201c2e0 kind:function(arm,size=0xc4) addr:0x0201c2e0 func_0201c3a4 kind:function(arm,size=0xac) addr:0x0201c3a4 _ZN23UnkStruct_0204a110_Sub5C1Ev kind:function(thumb,size=0x10) addr:0x0201c450 @@ -1097,7 +1097,7 @@ func_0201c99c kind:function(thumb,size=0x20) addr:0x0201c99c func_0201c9bc kind:function(thumb,size=0x26) addr:0x0201c9bc func_0201c9e4 kind:function(thumb,size=0x2e) addr:0x0201c9e4 func_0201ca14 kind:function(thumb,size=0x12) addr:0x0201ca14 -func_0201ca28 kind:function(thumb,size=0xa) addr:0x0201ca28 +_ZN23UnkStruct_0204a110_Sub213func_0201ca28Ei kind:function(thumb,size=0xa) addr:0x0201ca28 func_0201ca34 kind:function(arm,size=0x104) addr:0x0201ca34 func_0201cb38 kind:function(arm,size=0x44) addr:0x0201cb38 func_0201cb7c kind:function(arm,size=0x148) addr:0x0201cb7c @@ -1142,7 +1142,7 @@ func_0201eb24 kind:function(arm,size=0x14) addr:0x0201eb24 func_0201eb38 kind:function(arm,size=0x14) addr:0x0201eb38 _ZN26UnkStruct_0204a110_Sub7_08C1Ev kind:function(arm,size=0x60) addr:0x0201eb4c func_0201ebac kind:function(arm,size=0x4c) addr:0x0201ebac -func_0201ebf8 kind:function(arm,size=0x38) addr:0x0201ebf8 +_ZN26UnkStruct_0204a110_Sub7_0813func_0201ebf8Eiiii kind:function(arm,size=0x38) addr:0x0201ebf8 _ZN26UnkStruct_0204a110_Sub7_0813func_0201ec30Ev kind:function(arm,size=0x8) addr:0x0201ec30 func_0201ec38 kind:function(arm,size=0x70) addr:0x0201ec38 func_0201eca8 kind:function(arm,size=0x14) addr:0x0201eca8 @@ -2554,7 +2554,7 @@ data_02044340 kind:data(any) addr:0x02044340 data_02044384 kind:data(any) addr:0x02044384 data_02044390 kind:data(any) addr:0x02044390 _ZTV24UnkSystem2_UnkSubSystem5 kind:data(any) addr:0x02044394 -data_020443a8 kind:data(any) addr:0x020443a8 +_ZTV34UnkSystem2_UnkSubSystem11_Derived2 kind:data(any) addr:0x020443a0 data_020443c0 kind:data(any) addr:0x020443c0 _ZTV21UnkStruct_0204e64c_00 kind:data(any) addr:0x020443d0 data_020443e8 kind:data(any) addr:0x020443e8 diff --git a/config/jp/arm9/delinks.txt b/config/jp/arm9/delinks.txt index 53f95b86..466b81e8 100644 --- a/config/jp/arm9/delinks.txt +++ b/config/jp/arm9/delinks.txt @@ -35,9 +35,9 @@ src/Main/UnkFileSystem.cpp: src/Main/System/Random.cpp: .text start:0x0201631c end:0x0201639c -src/Main/Game/GameModeLinkListNode.cpp: +src/Main/LinkList.cpp: complete - .text start:0x02016614 end:0x020166b8 + .text start:0x02016614 end:0x02016730 src/Main/func_02017ea4.cpp: .text start:0x02017e3c end:0x02017ed0 @@ -53,6 +53,7 @@ src/Main/UnkStruct_0204a060.cpp: .data start:0x02045584 end:0x020455a0 src/Main/Game/GameModeManagerBase.cpp: + complete .text start:0x02018414 end:0x02018b5c .data start:0x020455a0 end:0x020455e0 diff --git a/config/jp/arm9/itcm/symbols.txt b/config/jp/arm9/itcm/symbols.txt index 18f8a1d2..04ae295c 100644 --- a/config/jp/arm9/itcm/symbols.txt +++ b/config/jp/arm9/itcm/symbols.txt @@ -155,7 +155,7 @@ 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 -_ZN18UnkStruct_027e09a413func_01ffd400Ev kind:function(arm,size=0x20) addr:0x01ffd400 +_ZNK18UnkStruct_027e09a413func_01ffd400Ev 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/delinks.txt b/config/jp/arm9/overlays/ov000/delinks.txt index 3caf48cc..0cf9ed9b 100644 --- a/config/jp/arm9/overlays/ov000/delinks.txt +++ b/config/jp/arm9/overlays/ov000/delinks.txt @@ -11,9 +11,13 @@ src/000_Second/Game/GameModeManagerBase_104_0C.cpp: .data start:0x020b3640 end:0x020b3658 src/000_Second/Game/GameModeManagerBase_104.cpp: + complete .text start:0x0206306c end:0x02063268 .data start:0x020b3658 end:0x020b367c +src/000_Second/code_020657fc.cpp: + .text start:0x02066d84 end:0x020671a8 + src/000_Second/UnkSystem1_Base.cpp: .text start:0x02067d38 end:0x020687e0 .data start:0x020b3870 end:0x020b389c diff --git a/config/jp/arm9/overlays/ov000/relocs.txt b/config/jp/arm9/overlays/ov000/relocs.txt index c806569e..ddad4f79 100644 --- a/config/jp/arm9/overlays/ov000/relocs.txt +++ b/config/jp/arm9/overlays/ov000/relocs.txt @@ -1403,9 +1403,9 @@ from:0x02063384 kind:arm_call to:0x02008a0c module:main from:0x02063434 kind:arm_call to:0x0200ab00 module:main from:0x02063480 kind:arm_call to:0x0202a1c0 module:main from:0x020634c0 kind:arm_call to:0x02063268 module:overlay(0) -from:0x020634e4 kind:load to:0x020b369c module:overlay(0) +from:0x020634e4 kind:load to:0x020b3694 add:0x8 module:overlay(0) from:0x02063504 kind:arm_call to:0x020636cc module:overlay(0) -from:0x02063510 kind:load to:0x020b369c module:overlay(0) +from:0x02063510 kind:load to:0x020b3694 add:0x8 module:overlay(0) from:0x02063578 kind:arm_call to:0x02008b58 module:main from:0x0206367c kind:arm_call to:0x02015e90 module:main from:0x02063688 kind:arm_call to:0x0203b8f8 module:main diff --git a/config/jp/arm9/overlays/ov000/symbols.txt b/config/jp/arm9/overlays/ov000/symbols.txt index e2f22444..6b0fb171 100644 --- a/config/jp/arm9/overlays/ov000/symbols.txt +++ b/config/jp/arm9/overlays/ov000/symbols.txt @@ -424,7 +424,7 @@ func_ov000_02061cc0 kind:function(arm,size=0x24) addr:0x02061cc0 func_ov000_02061ce4 kind:function(arm,size=0x80) addr:0x02061ce4 func_ov000_02061d64 kind:function(arm,size=0x28) addr:0x02061d64 _ZN14UnkSubStruct19C1Ev kind:function(arm,size=0x28) addr:0x02061d8c -_ZN14UnkSubStruct1919func_ov000_0206082cEii kind:function(arm,size=0x124) addr:0x02061db4 +_ZN14UnkSubStruct1919func_ov000_0206082cEsi kind:function(arm,size=0x124) addr:0x02061db4 _ZN14UnkSubStruct1919func_ov000_02060950Ev kind:function(arm,size=0x60) addr:0x02061ed8 _ZN14UnkSubStruct1919func_ov000_020609b0Ev kind:function(arm,size=0x14) addr:0x02061f38 _ZN14UnkSubStruct1919func_ov000_020609c4Ev kind:function(arm,size=0xd4) addr:0x02061f4c @@ -434,15 +434,15 @@ _ZN14UnkSubStruct1919func_ov000_02060af8Ev kind:function(arm,size=0x58) addr:0x0 _ZN14UnkSubStruct1919func_ov000_02060b50Ev kind:function(arm,size=0x14) addr:0x020620d8 _ZN14UnkSubStruct1919func_ov000_02060b64Ev kind:function(arm,size=0x20) addr:0x020620ec func_ov000_0206210c kind:function(arm,size=0x28) addr:0x0206210c -func_ov000_02062134 kind:function(arm,size=0x2c) addr:0x02062134 +_ZN14UnkSubStruct1919func_ov000_02060bacEv kind:function(arm,size=0x2c) addr:0x02062134 _ZN14UnkSubStruct1919func_ov000_02060bd8Ei kind:function(arm,size=0x50) addr:0x02062160 _ZN14UnkSubStruct1919func_ov000_02060c28Ev kind:function(arm,size=0xc) addr:0x020621b0 -func_ov000_020621bc kind:function(arm,size=0x1c) addr:0x020621bc -func_ov000_020621d8 kind:function(arm,size=0x2c) addr:0x020621d8 -func_ov000_02062204 kind:function(arm,size=0x100) addr:0x02062204 -func_ov000_02062304 kind:function(arm,size=0x3c) addr:0x02062304 -func_ov000_02062340 kind:function(arm,size=0x84) addr:0x02062340 -func_ov000_020623c4 kind:function(arm,size=0x88) addr:0x020623c4 +_ZN25UnkStruct_020d8698_2C_14CC1Ev kind:function(arm,size=0x1c) addr:0x020621bc +_ZN25UnkStruct_020d8698_2C_14C19func_ov000_02060c50EPKwP25UnkStruct_020d8698_2C_198iP34UnkStruct_ov019_020d24c8_28_258_00 kind:function(arm,size=0x2c) addr:0x020621d8 +_ZN25UnkStruct_020d8698_2C_14C19func_ov000_02060c7cEi kind:function(arm,size=0x100) addr:0x02062204 +_ZN25UnkStruct_020d8698_2C_14C19func_ov000_02060d7cEit kind:function(arm,size=0x3c) addr:0x02062304 +_ZN25UnkStruct_020d8698_2C_14C19func_ov000_02060db8Et kind:function(arm,size=0x84) addr:0x02062340 +_ZN25UnkStruct_020d8698_2C_14C19func_ov000_02060e3cEiPKcPw kind:function(arm,size=0x88) addr:0x020623c4 func_ov000_0206244c kind:function(arm,size=0x20) addr:0x0206244c _ZN23TitleScreenManager_BaseC2Ev kind:function(arm,size=0x30) addr:0x0206246c _ZN23TitleScreenManager_BaseD1Ev kind:function(arm,size=0x38) addr:0x0206249c @@ -505,33 +505,33 @@ _ZN23GameModeManagerBase_1048vfunc_0CEi kind:function(arm,size=0x4) addr:0x02063 _ZN23GameModeManagerBase_1048vfunc_10EPc kind:function(arm,size=0x4) addr:0x0206325c _ZN23GameModeManagerBase_1048vfunc_14EPc kind:function(arm,size=0x4) addr:0x02063260 _ZN23GameModeManagerBase_1048vfunc_18Ev kind:function(arm,size=0x4) addr:0x02063264 -func_ov000_02063268 kind:function(arm,size=0x58) addr:0x02063268 -func_ov000_020632c0 kind:function(arm,size=0x50) addr:0x020632c0 -func_ov000_02063310 kind:function(arm,size=0x20) addr:0x02063310 -func_ov000_02063330 kind:function(arm,size=0x10) addr:0x02063330 -func_ov000_02063340 kind:function(arm,size=0x24) addr:0x02063340 -func_ov000_02063364 kind:function(arm,size=0x2c) addr:0x02063364 -func_ov000_02063390 kind:function(arm,size=0xb0) addr:0x02063390 -func_ov000_02063440 kind:function(arm,size=0x48) addr:0x02063440 -func_ov000_02063488 kind:function(arm,size=0x30) addr:0x02063488 -func_ov000_020634b8 kind:function(arm,size=0x30) addr:0x020634b8 -_ZN25UnkSystem2_UnkSubSystem11D1Ev kind:function(arm,size=0x2c) addr:0x020634e8 -func_ov000_02063514 kind:function(arm,size=0x1b8) addr:0x02063514 -func_ov000_020636cc kind:function(arm,size=0x28) addr:0x020636cc -func_ov000_020636f4 kind:function(arm,size=0xbc) addr:0x020636f4 -func_ov000_020637b0 kind:function(arm,size=0xf8) addr:0x020637b0 -func_ov000_020638a8 kind:function(arm,size=0x3c) addr:0x020638a8 -func_ov000_020638e4 kind:function(arm,size=0x24) addr:0x020638e4 -func_ov000_02063908 kind:function(arm,size=0x34) addr:0x02063908 -func_ov000_0206393c kind:function(arm,size=0x24) addr:0x0206393c +_ZN30UnkSystem2_UnkSubSystem11_BaseC2Ev kind:function(arm,size=0x58) addr:0x02063268 +_ZN30UnkSystem2_UnkSubSystem11_Base19func_ov000_02061d38Ev kind:function(arm,size=0x50) addr:0x020632c0 +_ZN30UnkSystem2_UnkSubSystem11_Base19func_ov000_02061d88Ev kind:function(arm,size=0x20) addr:0x02063310 +_ZN30UnkSystem2_UnkSubSystem11_Base19func_ov000_02061da8Ev kind:function(arm,size=0x10) addr:0x02063330 +_ZN30UnkSystem2_UnkSubSystem11_Base19func_ov000_02061db8Ev kind:function(arm,size=0x24) addr:0x02063340 +_ZN30UnkSystem2_UnkSubSystem11_Base8vfunc_04Ev kind:function(arm,size=0x2c) addr:0x02063364 +_ZN30UnkSystem2_UnkSubSystem11_Base8vfunc_08Ev kind:function(arm,size=0xb0) addr:0x02063390 +_ZN30UnkSystem2_UnkSubSystem11_Base8vfunc_0CEv kind:function(arm,size=0x48) addr:0x02063440 +_ZN30UnkSystem2_UnkSubSystem11_Base8vfunc_00Ev kind:function(arm,size=0x30) addr:0x02063488 +_ZN34UnkSystem2_UnkSubSystem11_Derived1C2Ev kind:function(arm,size=0x30) addr:0x020634b8 +_ZN34UnkSystem2_UnkSubSystem11_Derived1D2Ev kind:function(arm,size=0x2c) addr:0x020634e8 +_ZN34UnkSystem2_UnkSubSystem11_Derived119func_ov000_02061f8cEv kind:function(arm,size=0x1b8) addr:0x02063514 +_ZN34UnkSystem2_UnkSubSystem11_Derived119func_ov000_02062144Ev kind:function(arm,size=0x28) addr:0x020636cc +_ZN34UnkSystem2_UnkSubSystem11_Derived119func_ov000_0206216cEP5Vec2sii kind:function(arm,size=0xbc) addr:0x020636f4 +_ZN34UnkSystem2_UnkSubSystem11_Derived119func_ov000_02062228Ev kind:function(arm,size=0xf8) addr:0x020637b0 +_ZN34UnkSystem2_UnkSubSystem11_Derived18vfunc_00Ev kind:function(arm,size=0x3c) addr:0x020638a8 +_ZN34UnkSystem2_UnkSubSystem11_Derived18vfunc_04Ev kind:function(arm,size=0x24) addr:0x020638e4 +_ZN34UnkSystem2_UnkSubSystem11_Derived18vfunc_08Ev kind:function(arm,size=0x34) addr:0x02063908 +_ZN34UnkSystem2_UnkSubSystem11_Derived18vfunc_0CEv kind:function(arm,size=0x24) addr:0x0206393c func_ov000_02063960 kind:function(arm,size=0x30) addr:0x02063960 func_ov000_02063990 kind:function(arm,size=0x30) addr:0x02063990 func_ov000_020639c0 kind:function(arm,size=0x100) addr:0x020639c0 func_ov000_02063ac0 kind:function(arm,size=0x8c) addr:0x02063ac0 func_ov000_02063b4c kind:function(arm,size=0x120) addr:0x02063b4c -func_ov000_02063c6c kind:function(arm,size=0x124) addr:0x02063c6c +_ZN34UnkSystem2_UnkSubSystem11_Derived219func_ov000_020626e4EPvbPiiiii kind:function(arm,size=0x124) addr:0x02063c6c func_ov000_02063d90 kind:function(arm,size=0x30) addr:0x02063d90 -func_ov000_02063dc0 kind:function(arm,size=0x8c) addr:0x02063dc0 +_ZN34UnkSystem2_UnkSubSystem11_Derived119func_ov000_02062838EPv kind:function(arm,size=0x8c) addr:0x02063dc0 _ZN17struct_aStack_2d8C1Ev kind:function(arm,size=0x20) addr:0x02063e4c _ZN17struct_aStack_2d819func_ov000_020628e4Eiiiiiiiii kind:function(arm,size=0xcc) addr:0x02063e6c func_ov000_02063f38 kind:function(arm,size=0x8c) addr:0x02063f38 @@ -637,15 +637,15 @@ func_ov000_02066b4c kind:function(arm,size=0x9c) addr:0x02066b4c func_ov000_02066be8 kind:function(arm,size=0xb4) addr:0x02066be8 func_ov000_02066c9c kind:function(arm,size=0xb4) addr:0x02066c9c func_ov000_02066d50 kind:function(arm,size=0x34) addr:0x02066d50 -func_ov000_02066d84 kind:function(arm,size=0x88) addr:0x02066d84 -func_ov000_02066e0c kind:function(arm,size=0x88) addr:0x02066e0c -func_ov000_02066e94 kind:function(arm,size=0x24) addr:0x02066e94 -func_ov000_02066eb8 kind:function(arm,size=0x58) addr:0x02066eb8 -func_ov000_02066f10 kind:function(arm,size=0x48) addr:0x02066f10 -func_ov000_02066f58 kind:function(arm,size=0x148) addr:0x02066f58 -func_ov000_020670a0 kind:function(arm,size=0x30) addr:0x020670a0 -func_ov000_020670d0 kind:function(arm,size=0x44) addr:0x020670d0 -func_ov000_02067114 kind:function(arm,size=0x94) addr:0x02067114 +_ZN29UnkStruct_020d8698_24_5C_BaseC2EiPKtti kind:function(arm,size=0x88) addr:0x02066d84 +_ZN29UnkStruct_020d8698_24_5C_BaseC1EiPKtti kind:function(arm,size=0x88) addr:0x02066e0c +_ZN29UnkStruct_020d8698_24_5C_Base19func_ov000_0206590cEti kind:function(arm,size=0x24) addr:0x02066e94 +_ZN29UnkStruct_020d8698_24_5C_Base19func_ov000_02065930Ev kind:function(arm,size=0x58) addr:0x02066eb8 +_ZN29UnkStruct_020d8698_24_5C_Base19func_ov000_02065988EtPKt kind:function(arm,size=0x48) addr:0x02066f10 +_ZN29UnkStruct_020d8698_24_5C_Base19func_ov000_020659d0EPcP14UnkDataStruct1 kind:function(arm,size=0x148) addr:0x02066f58 +_ZN24UnkStruct_020d8698_24_5CC1EiPKtti kind:function(arm,size=0x30) addr:0x020670a0 +_ZN24UnkStruct_020d8698_24_5C19func_ov000_02065b48Eii kind:function(arm,size=0x44) addr:0x020670d0 +_ZN24UnkStruct_020d8698_24_5C19func_ov000_02065b8cEv kind:function(arm,size=0x94) addr:0x02067114 func_ov000_020671a8 kind:function(arm,size=0x4c) addr:0x020671a8 func_ov000_020671f4 kind:function(arm,size=0x4c) addr:0x020671f4 func_ov000_02067240 kind:function(arm,size=0x48) addr:0x02067240 @@ -717,8 +717,8 @@ func_ov000_02068d4c kind:function(arm,size=0x54) addr:0x02068d4c func_ov000_02068da0 kind:function(arm,size=0xdc) addr:0x02068da0 func_ov000_02068e7c kind:function(arm,size=0x90) addr:0x02068e7c func_ov000_02068f0c kind:function(arm,size=0xbc) addr:0x02068f0c -func_ov000_02068fc8 kind:function(arm,size=0x34) addr:0x02068fc8 -_ZN17struct_aStack_2e0C1EP24UnkStruct_ov000_020b504ci kind:function(arm,size=0x44) addr:0x02068ffc +_ZN29UnkStruct_ov000_020b504c_Sub319func_ov000_02067a2cEj kind:function(arm,size=0x34) addr:0x02068fc8 +_ZN17UnkMsgDataStruct119func_ov000_02067a60EPvi kind:function(arm,size=0x44) addr:0x02068ffc func_ov000_02069040 kind:function(arm,size=0x7c) addr:0x02069040 _ZN24UnkStruct_ov000_020b504c19func_ov000_02067b20Ev kind:function(arm,size=0x40) addr:0x020690bc _ZN24UnkStruct_ov000_020b504c19func_ov000_02067b60Ev kind:function(arm,size=0x54) addr:0x020690fc @@ -758,7 +758,7 @@ _ZN17struct_aStack_2d819func_ov000_0206869cEv kind:function(arm,size=0x8) addr:0 _ZN17struct_aStack_2d819func_ov000_020686a4Ei kind:function(arm,size=0x34) addr:0x02069c48 func_ov000_02069c7c kind:function(arm,size=0xb4) addr:0x02069c7c _ZN17struct_aStack_2d819func_ov000_0206878cEv kind:function(arm,size=0xc) addr:0x02069d30 -func_ov000_02069d3c kind:function(arm,size=0x1c) addr:0x02069d3c +_ZN32UnkSystem2_UnkSubSystem5_Base_1019func_ov000_02068798EP5Vec2s kind:function(arm,size=0x1c) addr:0x02069d3c func_ov000_02069d58 kind:function(arm,size=0x48) addr:0x02069d58 func_ov000_02069da0 kind:function(arm,size=0x6c) addr:0x02069da0 func_ov000_02069e0c kind:function(arm,size=0xb4) addr:0x02069e0c @@ -774,7 +774,7 @@ func_ov000_0206a2f4 kind:function(arm,size=0x29c) addr:0x0206a2f4 _ZN17struct_aStack_2d819func_ov000_02068fecEv kind:function(arm,size=0x1c8) addr:0x0206a590 func_ov000_0206a758 kind:function(arm,size=0x24) addr:0x0206a758 func_ov000_0206a77c kind:function(arm,size=0x8) addr:0x0206a77c -func_ov000_0206a784 kind:function(arm,size=0x3f4) addr:0x0206a784 +_ZN32UnkSystem2_UnkSubSystem5_Base_1019func_ov000_020691e0EPv kind:function(arm,size=0x3f4) addr:0x0206a784 func_ov000_0206ab78 kind:function(arm,size=0x80) addr:0x0206ab78 func_ov000_0206abf8 kind:function(arm,size=0x50) addr:0x0206abf8 func_ov000_0206ac48 kind:function(arm,size=0x4) addr:0x0206ac48 @@ -3459,7 +3459,7 @@ data_ov000_020b3630 kind:data(any) addr:0x020b3630 _ZTV26GameModeManagerBase_104_0C kind:data(any) addr:0x020b3640 _ZTV23GameModeManagerBase_104 kind:data(any) addr:0x020b3658 data_ov000_020b3684 kind:data(any) addr:0x020b367c -data_ov000_020b369c kind:data(any) addr:0x020b369c +_ZTV34UnkSystem2_UnkSubSystem11_Derived1 kind:data(any) addr:0x020b3694 data_ov000_020b36b4 kind:data(any) addr:0x020b36b4 _ZTV19data_ov000_020b36c4 kind:data(any) addr:0x020b36c4 _ZTV19data_ov000_020b36dc kind:data(any) addr:0x020b36dc @@ -4015,7 +4015,7 @@ data_ov000_020b4eec kind:bss addr:0x020b66ec data_ov000_020b4f70 kind:bss addr:0x020b6770 data_ov000_020b6774 kind:bss addr:0x020b6774 data_ov000_020b6778 kind:bss addr:0x020b6778 -data_ov000_020b6784 kind:bss addr:0x020b6784 +data_ov000_020b4f84 kind:bss addr:0x020b6784 data_ov000_020b6848 kind:bss addr:0x020b6848 data_ov000_020b504c kind:bss addr:0x020b684c data_ov000_020b68a8 kind:bss addr:0x020b68a8 diff --git a/config/jp/arm9/overlays/ov010/relocs.txt b/config/jp/arm9/overlays/ov010/relocs.txt index 3ec3e793..4e1102a4 100644 --- a/config/jp/arm9/overlays/ov010/relocs.txt +++ b/config/jp/arm9/overlays/ov010/relocs.txt @@ -61,10 +61,10 @@ from:0x020b80f4 kind:load to:0x020da040 module:overlay(24) from:0x020b80f8 kind:load to:0x020b684c module:overlay(0) from:0x020b80fc kind:load to:0x027e0cf8 module:dtcm from:0x020b8156 kind:thumb_call_arm to:0x02062784 module:overlay(0) -from:0x020b8166 kind:thumb_call_arm to:0x020cecf4 module:overlays(20,24) +from:0x020b8166 kind:thumb_call_arm to:0x020cecf4 module:overlay(24) from:0x020b8182 kind:thumb_call_arm to:0x01ff9b50 module:itcm from:0x020b81d2 kind:thumb_call_arm to:0x02069620 module:overlay(0) -from:0x020b81dc kind:thumb_call_arm to:0x020cecf4 module:overlays(20,24) +from:0x020b81dc kind:thumb_call_arm to:0x020cecf4 module:overlay(24) from:0x020b81e6 kind:thumb_call_arm to:0x02062784 module:overlay(0) from:0x020b8200 kind:thumb_call_arm to:0x02062784 module:overlay(0) from:0x020b8208 kind:thumb_call_arm to:0x0206f100 module:overlay(0) @@ -170,7 +170,7 @@ from:0x020b91be kind:thumb_call_arm to:0x02064948 module:overlay(0) from:0x020b91e4 kind:thumb_call_arm to:0x02064948 module:overlay(0) from:0x020b9204 kind:thumb_call_arm to:0x02064948 module:overlay(0) from:0x020b9280 kind:thumb_call_arm to:0x02062784 module:overlay(0) -from:0x020b9290 kind:thumb_call_arm to:0x020cecf4 module:overlays(20,24) +from:0x020b9290 kind:thumb_call_arm to:0x020cecf4 module:overlay(24) from:0x020b9298 kind:thumb_call to:0x020b8108 module:overlay(10) from:0x020b92de kind:thumb_call_arm to:0x020a9f28 module:overlay(0) from:0x020b92e8 kind:thumb_call_arm to:0x020a9f48 module:overlay(0) @@ -205,7 +205,7 @@ from:0x020b972c kind:load to:0x020da000 module:overlay(24) from:0x020b9864 kind:thumb_call_arm to:0x01ff9b50 module:itcm from:0x020b98a6 kind:thumb_call_arm to:0x020db154 module:overlay(31) from:0x020b98c8 kind:thumb_call_arm to:0x02069620 module:overlay(0) -from:0x020b98d2 kind:thumb_call_arm to:0x020cecf4 module:overlays(20,24) +from:0x020b98d2 kind:thumb_call_arm to:0x020cecf4 module:overlay(24) from:0x020b990a kind:thumb_call_arm to:0x02019648 module:main from:0x020b9924 kind:thumb_call_arm to:0x020611a8 module:overlay(0) from:0x020b9942 kind:thumb_call_arm to:0x02019648 module:main diff --git a/config/jp/arm9/overlays/ov019/symbols.txt b/config/jp/arm9/overlays/ov019/symbols.txt index bb19222e..835e9a14 100644 --- a/config/jp/arm9/overlays/ov019/symbols.txt +++ b/config/jp/arm9/overlays/ov019/symbols.txt @@ -22,7 +22,7 @@ _ZN17FileSelectManager8vfunc_24Ev kind:function(arm,size=0x40) addr:0x020c6818 _ZN17FileSelectManager19func_ov019_020c5038Ev kind:function(arm,size=0x4) addr:0x020c6858 _ZN17FileSelectManager19func_ov019_020c503cEv kind:function(arm,size=0x12c) addr:0x020c685c _ZN17FileSelectManager8vfunc_28EPc kind:function(arm,size=0x20) addr:0x020c6988 -_ZN17FileSelectManager8vfunc_2CEPc kind:function(arm,size=0x20) addr:0x020c69a8 +_ZN17FileSelectManager6DrawUIEPc kind:function(arm,size=0x20) addr:0x020c69a8 _ZN17FileSelectManager19func_ov019_020c51a8Ev kind:function(arm,size=0x44) addr:0x020c69c8 _ZN23UnkStruct_0204a088_BaseD2Ev kind:function(arm,size=0x14) addr:0x020c6a0c _ZN25UnkSystem1_ov019_Derived1C1Ev kind:function(arm,size=0x3c) addr:0x020c6a20 diff --git a/config/jp/arm9/overlays/ov020/relocs.txt b/config/jp/arm9/overlays/ov020/relocs.txt index ffcad1ba..bbbfd7bc 100644 --- a/config/jp/arm9/overlays/ov020/relocs.txt +++ b/config/jp/arm9/overlays/ov020/relocs.txt @@ -1832,7 +1832,7 @@ from:0x020d2e0c kind:load to:0x020eb22c module:overlay(20) from:0x020d2ea4 kind:arm_call to:0x020d2d9c module:overlay(20) from:0x020d2f18 kind:arm_call to:0x0202a2cc module:main from:0x020d2f3c kind:arm_call to:0x0202a2cc module:main -from:0x020d2f44 kind:arm_call to:0x020d99e4 module:overlay(20) +from:0x020d2f44 kind:arm_call to:0x020d99dc add:0x8 module:overlay(20) from:0x020d3074 kind:arm_call to:0x020d2d9c module:overlay(20) from:0x020d3084 kind:arm_call to:0x020d2d9c module:overlay(20) from:0x020d30a8 kind:arm_call to:0x020d3750 module:overlay(20) @@ -2192,7 +2192,7 @@ from:0x020d7a20 kind:load to:0x020eb220 module:overlay(20) from:0x020d7a34 kind:arm_call to:0x020d179c module:overlay(20) from:0x020d7a80 kind:arm_call to:0x0202a2cc module:main from:0x020d7a9c kind:arm_call to:0x0202a2cc module:main -from:0x020d7aa4 kind:arm_call to:0x020d99e4 module:overlay(20) +from:0x020d7aa4 kind:arm_call to:0x020d99dc add:0x8 module:overlay(20) from:0x020d7bb4 kind:load to:0x020d62ec module:overlay(20) from:0x020d7bb8 kind:load to:0x020eb220 module:overlay(20) from:0x020d7bc8 kind:load to:0x020eb220 module:overlay(20) diff --git a/config/jp/arm9/overlays/ov022/relocs.txt b/config/jp/arm9/overlays/ov022/relocs.txt index 10d85dfb..c42551a3 100644 --- a/config/jp/arm9/overlays/ov022/relocs.txt +++ b/config/jp/arm9/overlays/ov022/relocs.txt @@ -276,7 +276,7 @@ from:0x020ec884 kind:load to:0x020e9ffa module:overlay(20) from:0x020ec894 kind:load to:0x020e9ff2 module:overlay(20) from:0x020ec8b8 kind:load to:0x020e9fdc module:overlay(20) from:0x020ec8cc kind:load to:0x020e9fdc module:overlay(20) -from:0x020ec8d0 kind:load to:0x020cfe0c module:overlays(20,24) +from:0x020ec8d0 kind:load to:0x020cfe0c module:overlay(20) from:0x020ec8e4 kind:load to:0x020efc28 module:overlay(22) from:0x020ec8f4 kind:arm_call to:0x0206306c module:overlay(0) from:0x020ec924 kind:arm_call to:0x02064450 module:overlay(0) diff --git a/config/jp/arm9/overlays/ov024/delinks.txt b/config/jp/arm9/overlays/ov024/delinks.txt index 90f188d8..e36f0f87 100644 --- a/config/jp/arm9/overlays/ov024/delinks.txt +++ b/config/jp/arm9/overlays/ov024/delinks.txt @@ -95,16 +95,27 @@ src/024_MainGame/Game/AdventureModeManager_15C_20_00_024.cpp: .data start:0x020d98f0 end:0x020d9914 src/024_MainGame/UnkAdventureModeSystem1_024.cpp: + complete .text start:0x020cc2a8 end:0x020cc5f0 + .data start:0x020d9914 end:0x020d9920 src/024_MainGame/UnkStruct_ov024_020d8694_024.cpp: .text start:0x020cc5f0 end:0x020cca40 + .rodata start:0x020d8ccc end:0x020d8d7c + .data start:0x020d9920 end:0x020d9944 + .bss start:0x020da034 end:0x020da038 src/024_MainGame/UnkTitleCardSystem1_024.cpp: + complete .text start:0x020cca40 end:0x020ce56c + .data start:0x020d9944 end:0x020d9a04 src/024_MainGame/UnkStruct_020d8698_024.cpp: + complete .text start:0x020ce56c end:0x020d129c + .rodata start:0x020d8d7c end:0x020d8df8 + .data start:0x020d9a04 end:0x020d9a34 + .bss start:0x020da038 end:0x020da03c src/024_MainGame/UnkStruct_027e0cf8_00_0C_024.cpp: .text start:0x020d129c end:0x020d1f40 diff --git a/config/jp/arm9/overlays/ov024/relocs.txt b/config/jp/arm9/overlays/ov024/relocs.txt index 984bb474..3ec01d7e 100644 --- a/config/jp/arm9/overlays/ov024/relocs.txt +++ b/config/jp/arm9/overlays/ov024/relocs.txt @@ -1267,7 +1267,7 @@ from:0x020cc6d4 kind:arm_call to:0x020ccac4 module:overlay(24) from:0x020cc6e4 kind:arm_call to:0x020ccac4 module:overlay(24) from:0x020cc6f4 kind:arm_call to:0x020ccac4 module:overlay(24) from:0x020cc700 kind:load to:0x020d9920 add:0x8 module:overlay(24) -from:0x020cc704 kind:load to:0x020458ec module:main +from:0x020cc704 kind:load to:0x020458e4 add:0x8 module:main from:0x020cc72c kind:arm_call to:0x020634e8 module:overlay(0) from:0x020cc734 kind:arm_call to:0x02011ff4 module:main from:0x020cc754 kind:arm_call to:0x020ccad0 module:overlay(24) @@ -1312,7 +1312,7 @@ from:0x020cca3c kind:load to:0x020da034 module:overlay(24) from:0x020ccaa0 kind:arm_call to:0x0201e4c0 module:main from:0x020ccaa8 kind:arm_call to:0x0201e4c0 module:main from:0x020ccab0 kind:arm_call to:0x0201e4c0 module:main -from:0x020ccac0 kind:load to:0x020d9970 module:overlay(24) +from:0x020ccac0 kind:load to:0x020d9968 add:0x8 module:overlay(24) from:0x020ccaf8 kind:arm_call to:0x0206952c module:overlay(0) from:0x020ccb18 kind:arm_call to:0x02069500 module:overlay(0) from:0x020ccb34 kind:arm_call to:0x02068fc8 module:overlay(0) @@ -1354,7 +1354,7 @@ from:0x020cd0bc kind:arm_call to:0x0201e6c4 module:main from:0x020cd0f0 kind:arm_call to:0x020636f4 module:overlay(0) from:0x020cd0fc kind:load to:0x0204c49c module:main from:0x020cd124 kind:arm_call to:0x020cca40 module:overlay(24) -from:0x020cd150 kind:load to:0x020d99e4 module:overlay(24) +from:0x020cd150 kind:load to:0x020d99dc add:0x8 module:overlay(24) from:0x020cd190 kind:arm_call to:0x020ccad4 module:overlay(24) from:0x020cd1c4 kind:arm_call to:0x0201e664 module:main from:0x020cd210 kind:arm_call to:0x0201e664 module:main @@ -1411,7 +1411,7 @@ from:0x020cd988 kind:load to:0x0204b608 module:main from:0x020cd98c kind:load to:0x027e0994 module:dtcm from:0x020cd9ac kind:arm_call to:0x020cd11c module:overlay(24) from:0x020cd9bc kind:arm_call to:0x0201ed8c module:main -from:0x020cd9d0 kind:load to:0x020d9994 module:overlay(24) +from:0x020cd9d0 kind:load to:0x020d998c add:0x8 module:overlay(24) from:0x020cda10 kind:arm_call to:0x020cd154 module:overlay(24) from:0x020cda24 kind:arm_call to:0x0201edec module:main from:0x020cda58 kind:arm_call to:0x0201ee3c module:main @@ -1427,7 +1427,7 @@ from:0x020cdc98 kind:arm_call to:0x020cd7e8 module:overlay(24) from:0x020cdca4 kind:load to:0x0204b690 add:0xd9c module:main from:0x020cdcb0 kind:arm_call to:0x020cd11c module:overlay(24) from:0x020cdcc0 kind:arm_call to:0x0201e93c module:main -from:0x020cdccc kind:load to:0x020d99bc module:overlay(24) +from:0x020cdccc kind:load to:0x020d99b4 add:0x8 module:overlay(24) from:0x020cdcd8 kind:arm_call to:0x020cd154 module:overlay(24) from:0x020cdcf4 kind:arm_call to:0x0201e9e8 module:main from:0x020cdd58 kind:arm_call to:0x020cd8d8 module:overlay(24) @@ -1441,7 +1441,7 @@ from:0x020cdf88 kind:load to:0x027e0120 module:dtcm from:0x020cdf94 kind:arm_call to:0x020cd100 module:overlay(24) from:0x020cdfa4 kind:arm_call to:0x0201ea20 module:main from:0x020cdfc4 kind:arm_call to:0x020cca40 module:overlay(24) -from:0x020cdfd8 kind:load to:0x020d994c module:overlay(24) +from:0x020cdfd8 kind:load to:0x020d9944 add:0x8 module:overlay(24) from:0x020ce358 kind:load to:0x020da034 module:overlay(24) from:0x020ce35c kind:load to:0x020cc9c8 module:overlay(24) from:0x020ce37c kind:arm_call to:0x020ccad4 module:overlay(24) diff --git a/config/jp/arm9/overlays/ov024/symbols.txt b/config/jp/arm9/overlays/ov024/symbols.txt index 872dbcfc..9b36715d 100644 --- a/config/jp/arm9/overlays/ov024/symbols.txt +++ b/config/jp/arm9/overlays/ov024/symbols.txt @@ -68,7 +68,7 @@ _ZN20AdventureModeManager19func_ov024_020c5f70Ev kind:function(arm,size=0x184) a _ZN20AdventureModeManager19func_ov024_020c60f4Ev kind:function(arm,size=0x148) addr:0x020c7914 _ZN20AdventureModeManager19func_ov024_020c623cEv kind:function(arm,size=0x8c) addr:0x020c7a5c _ZN20AdventureModeManager8vfunc_28EPc kind:function(arm,size=0x60) addr:0x020c7ae8 -_ZN20AdventureModeManager8vfunc_2CEPc kind:function(arm,size=0x138) addr:0x020c7b48 +_ZN20AdventureModeManager6DrawUIEPc kind:function(arm,size=0x138) addr:0x020c7b48 _ZN20AdventureModeManager8vfunc_34Eii kind:function(arm,size=0xa0) addr:0x020c7c80 _ZN20AdventureModeManager8vfunc_38Ejhss kind:function(arm,size=0x14) addr:0x020c7d20 _ZN20AdventureModeManager19func_ov024_020c6514Ejhss kind:function(arm,size=0x160) addr:0x020c7d34 @@ -85,7 +85,7 @@ _ZN20AdventureModeManager19func_ov024_020c6940Eii kind:function(arm,size=0x8c) a _ZN20AdventureModeManager19func_ov024_020c699cEv kind:function(arm,size=0x34) addr:0x020c81ec _ZN20AdventureModeManager19func_ov024_020c69d0Ev kind:function(arm,size=0x50) addr:0x020c8220 _ZN20AdventureModeManager19func_ov024_020c6a20Ev kind:function(arm,size=0x28) addr:0x020c8270 -_ZN20AdventureModeManager19func_ov024_020c6a48Eii kind:function(arm,size=0xac) addr:0x020c8298 +_ZN20AdventureModeManager19func_ov024_020c6a48Eib kind:function(arm,size=0xac) addr:0x020c8298 _ZN20AdventureModeManager19func_ov024_020c6af4Ei kind:function(arm,size=0x98) addr:0x020c8344 _ZN20AdventureModeManager19func_ov024_020c6b8cEv kind:function(arm,size=0xd4) addr:0x020c83dc _ZN20AdventureModeManager19func_ov024_020c6c60Ev kind:function(arm,size=0x74) addr:0x020c84b0 @@ -275,137 +275,137 @@ _ZN30AdventureModeManager_15C_20_0019func_ov024_020ca658Ev kind:function(arm,siz _ZN30AdventureModeManager_15C_20_008vfunc_08EP5InputP12TouchControl kind:function(arm,size=0x2d0) addr:0x020cbef8 _ZN30AdventureModeManager_15C_20_00D1Ev kind:function(arm,size=0x6c) addr:0x020cc1c8 _ZN30AdventureModeManager_15C_20_00D0Ev kind:function(arm,size=0x74) addr:0x020cc234 -_ZN23UnkAdventureModeSystem1C2EPsPsi kind:function(arm,size=0xa4) addr:0x020cc2a8 -_ZN23UnkAdventureModeSystem1C2Ei kind:function(arm,size=0x5c) addr:0x020cc34c -_ZN23UnkAdventureModeSystem119func_ov024_020cab58Ev kind:function(arm,size=0x4c) addr:0x020cc3a8 -_ZN23UnkAdventureModeSystem119func_ov024_020caba4Ev kind:function(arm,size=0x1d8) addr:0x020cc3f4 -_ZN23UnkAdventureModeSystem119func_ov024_020cad7cEv kind:function(arm,size=0x24) addr:0x020cc5cc +_ZN23UnkAdventureModeSystem1C2EP5Vec2sS1_b kind:function(arm,size=0xa4) addr:0x020cc2a8 +_ZN23UnkAdventureModeSystem1C2Eb kind:function(arm,size=0x5c) addr:0x020cc34c +_ZN23UnkAdventureModeSystem119func_ov024_020cab58EP5Vec2sS1_ kind:function(arm,size=0x4c) addr:0x020cc3a8 +_ZN23UnkAdventureModeSystem119func_ov024_020caba4Ei kind:function(arm,size=0x1d8) addr:0x020cc3f4 +_ZN23UnkAdventureModeSystem119func_ov024_020cad7cEi kind:function(arm,size=0x24) addr:0x020cc5cc _ZN24UnkStruct_ov024_020d86946CreateEP23GameModeManagerBase_004 kind:function(arm,size=0x2c) addr:0x020cc5f0 -_ZN24UnkStruct_ov024_020d8694C1Ev kind:function(arm,size=0xec) addr:0x020cc61c +_ZN24UnkStruct_ov024_020d8694C1EP23GameModeManagerBase_004 kind:function(arm,size=0xec) addr:0x020cc61c _ZN24UnkStruct_ov024_020d8694D1Ev kind:function(arm,size=0x7c) addr:0x020cc708 _ZN24UnkStruct_ov024_020d8694D0Ev kind:function(arm,size=0x84) addr:0x020cc784 -_ZN24UnkStruct_ov024_020d869419func_ov024_020cafb8Ev kind:function(arm,size=0x20) addr:0x020cc808 -_ZN24UnkStruct_ov024_020d869419func_ov024_020cafd8Ev kind:function(arm,size=0x28) addr:0x020cc828 -_ZN24UnkStruct_ov024_020d869419func_ov024_020cb000Ev kind:function(arm,size=0x20) addr:0x020cc850 -_ZN24UnkStruct_ov024_020d869419func_ov024_020cb020Ev kind:function(arm,size=0x20) addr:0x020cc870 +_ZN24UnkStruct_ov024_020d869419func_ov024_020cafb8Ei kind:function(arm,size=0x20) addr:0x020cc808 +_ZN24UnkStruct_ov024_020d869419func_ov024_020cafd8Ei kind:function(arm,size=0x28) addr:0x020cc828 +_ZN24UnkStruct_ov024_020d869419func_ov024_020cb000Ei kind:function(arm,size=0x20) addr:0x020cc850 +_ZN24UnkStruct_ov024_020d869419func_ov024_020cb020Ei kind:function(arm,size=0x20) addr:0x020cc870 _ZN24UnkStruct_ov024_020d869419func_ov024_020cb040Ev kind:function(arm,size=0x14) addr:0x020cc890 -_ZN24UnkStruct_ov024_020d869419func_ov024_020cb054Ev kind:function(arm,size=0x58) addr:0x020cc8a4 -_ZN24UnkStruct_ov024_020d869419func_ov024_020cb0acEv kind:function(arm,size=0x18) addr:0x020cc8fc +_ZN24UnkStruct_ov024_020d869419func_ov024_020cb054EiP5Vec2sS1_ kind:function(arm,size=0x58) addr:0x020cc8a4 +_ZN24UnkStruct_ov024_020d869412GetMessageIDEi kind:function(arm,size=0x18) addr:0x020cc8fc _ZN24UnkStruct_ov024_020d869419func_ov024_020cb0c4Ev kind:function(arm,size=0x30) addr:0x020cc914 _ZN24UnkStruct_ov024_020d86948vfunc_08EP5InputP12TouchControl kind:function(arm,size=0x3c) addr:0x020cc944 _ZN24UnkStruct_ov024_020d86948vfunc_10EPc kind:function(arm,size=0x48) addr:0x020cc980 -_ZN24UnkStruct_ov024_020d869419func_ov024_020cb178Ev kind:function(arm,size=0x1c) addr:0x020cc9c8 -_ZN24UnkStruct_ov024_020d869419func_ov024_020cb194Ev kind:function(arm,size=0x38) addr:0x020cc9e4 -func_ov024_020cb1cc kind:function(arm,size=0x10) addr:0x020cca1c -func_ov024_020cb1dc kind:function(arm,size=0x14) addr:0x020cca2c +_ZN24UnkStruct_ov024_020d869419func_ov024_020cb178Ei kind:function(arm,size=0x1c) addr:0x020cc9c8 +_ZN24UnkStruct_ov024_020d869419func_ov024_020cb194Es kind:function(arm,size=0x38) addr:0x020cc9e4 +_ZN8InstanceI24UnkStruct_ov024_020d8694EC2Ev kind:function(arm,size=0x10) addr:0x020cca1c +_ZN8InstanceI24UnkStruct_ov024_020d8694ED2Ev kind:function(arm,size=0x14) addr:0x020cca2c _ZN19UnkTitleCardSystem1C2EP23GameModeManagerBase_004 kind:function(arm,size=0x84) addr:0x020cca40 -func_ov024_020cb274 kind:function(arm,size=0xc) addr:0x020ccac4 -func_ov024_020cb280 kind:function(arm,size=0x4) addr:0x020ccad0 -func_ov024_020cb284 kind:function(arm,size=0x20c) addr:0x020ccad4 -func_ov024_020cb490 kind:function(arm,size=0x11c) addr:0x020ccce0 +_ZN19UnkTitleCardSystem119func_ov024_020cb274EP34UnkSystem2_UnkSubSystem11_Derived2P32UnkSystem2_UnkSubSystem5_Base_10 kind:function(arm,size=0xc) addr:0x020ccac4 +_ZN19UnkTitleCardSystem119func_ov024_020cb280Ev kind:function(arm,size=0x4) addr:0x020ccad0 +_ZN19UnkTitleCardSystem119func_ov024_020cb284Eii kind:function(arm,size=0x20c) addr:0x020ccad4 +_ZN19UnkTitleCardSystem119func_ov024_020cb490EP14UnkDataStruct2Pi kind:function(arm,size=0x11c) addr:0x020ccce0 _ZN19UnkTitleCardSystem18vfunc_08Ev kind:function(arm,size=0x8) addr:0x020ccdfc _ZN19UnkTitleCardSystem18vfunc_0CEv kind:function(arm,size=0x4) addr:0x020cce04 _ZN19UnkTitleCardSystem18vfunc_10Ev kind:function(arm,size=0x4) addr:0x020cce08 -func_ov024_020cb5bc kind:function(arm,size=0x3c) addr:0x020cce0c +_ZN19UnkTitleCardSystem119func_ov024_020cb5bcEv kind:function(arm,size=0x3c) addr:0x020cce0c _ZN19UnkTitleCardSystem18vfunc_00Ev kind:function(arm,size=0x4) addr:0x020cce48 -_ZN19UnkTitleCardSystem18vfunc_04Ev kind:function(arm,size=0x58) addr:0x020cce4c -func_ov024_020cb654 kind:function(arm,size=0x25c) addr:0x020ccea4 +_ZN19UnkTitleCardSystem18vfunc_04EPc kind:function(arm,size=0x58) addr:0x020cce4c +_ZN19UnkTitleCardSystem119func_ov024_020cb654EPcP14UnkDataStruct1 kind:function(arm,size=0x25c) addr:0x020ccea4 _ZN19UnkTitleCardSystem18vfunc_14Ev kind:function(arm,size=0x14) addr:0x020cd100 _ZN19UnkTitleCardSystem18vfunc_18Ev kind:function(arm,size=0x8) addr:0x020cd114 _ZN28UnkTitleCardSystem1_Derived1C2EP23GameModeManagerBase_004 kind:function(arm,size=0x38) addr:0x020cd11c -_ZN28UnkTitleCardSystem1_Derived18vfunc_1CEv kind:function(arm,size=0x114) addr:0x020cd154 +_ZN28UnkTitleCardSystem1_Derived18vfunc_1CEjib kind:function(arm,size=0x114) addr:0x020cd154 _ZN28UnkTitleCardSystem1_Derived18vfunc_08Ev kind:function(arm,size=0x80) addr:0x020cd268 _ZN28UnkTitleCardSystem1_Derived18vfunc_0CEv kind:function(arm,size=0x338) addr:0x020cd2e8 _ZN28UnkTitleCardSystem1_Derived18vfunc_10Ev kind:function(arm,size=0xc4) addr:0x020cd620 -func_ov024_020cbe94 kind:function(arm,size=0x24) addr:0x020cd6e4 -func_ov024_020cbeb8 kind:function(arm,size=0xbc) addr:0x020cd708 -func_ov024_020cbf74 kind:function(arm,size=0x24) addr:0x020cd7c4 -func_ov024_020cbf98 kind:function(arm,size=0xc4) addr:0x020cd7e8 -func_ov024_020cc05c kind:function(arm,size=0x2c) addr:0x020cd8ac -func_ov024_020cc088 kind:function(arm,size=0x2c) addr:0x020cd8d8 -func_ov024_020cc0b4 kind:function(arm,size=0x8c) addr:0x020cd904 +_ZN28UnkTitleCardSystem1_Derived119func_ov024_020cbe94Ei kind:function(arm,size=0x24) addr:0x020cd6e4 +_ZN28UnkTitleCardSystem1_Derived119func_ov024_020cbeb8Ev kind:function(arm,size=0xbc) addr:0x020cd708 +_ZN28UnkTitleCardSystem1_Derived119func_ov024_020cbf74Ei kind:function(arm,size=0x24) addr:0x020cd7c4 +_ZN28UnkTitleCardSystem1_Derived119func_ov024_020cbf98Ev kind:function(arm,size=0xc4) addr:0x020cd7e8 +_ZN28UnkTitleCardSystem1_Derived119func_ov024_020cc05cEj kind:function(arm,size=0x2c) addr:0x020cd8ac +_ZN28UnkTitleCardSystem1_Derived119func_ov024_020cc088Eb kind:function(arm,size=0x2c) addr:0x020cd8d8 +_ZN28UnkTitleCardSystem1_Derived119func_ov024_020cc0b4Ev kind:function(arm,size=0x8c) addr:0x020cd904 _ZN28UnkTitleCardSystem1_Derived18vfunc_18Ev kind:function(arm,size=0x14) addr:0x020cd990 _ZN28UnkStruct_ov024_020d8694_01CC1EP23GameModeManagerBase_004 kind:function(arm,size=0x30) addr:0x020cd9a4 -_ZN28UnkStruct_ov024_020d8694_01C8vfunc_1CEv kind:function(arm,size=0xa8) addr:0x020cd9d4 +_ZN28UnkStruct_ov024_020d8694_01C8vfunc_1CEjib kind:function(arm,size=0xa8) addr:0x020cd9d4 _ZN28UnkStruct_ov024_020d8694_01C8vfunc_00Ev kind:function(arm,size=0x22c) addr:0x020cda7c _ZN28UnkStruct_ov024_020d8694_188C1EP23GameModeManagerBase_004 kind:function(arm,size=0x28) addr:0x020cdca8 -_ZN28UnkStruct_ov024_020d8694_1888vfunc_1CEv kind:function(arm,size=0x54) addr:0x020cdcd0 +_ZN28UnkStruct_ov024_020d8694_1888vfunc_1CEjib kind:function(arm,size=0x54) addr:0x020cdcd0 _ZN28UnkStruct_ov024_020d8694_1888vfunc_00Ev kind:function(arm,size=0x1e0) addr:0x020cdd24 -_ZN28UnkStruct_ov024_020d8694_1888vfunc_04Ev kind:function(arm,size=0x88) addr:0x020cdf04 +_ZN28UnkStruct_ov024_020d8694_1888vfunc_04EPc kind:function(arm,size=0x88) addr:0x020cdf04 _ZN28UnkStruct_ov024_020d8694_1888vfunc_14Ev kind:function(arm,size=0x30) addr:0x020cdf8c _ZN28UnkStruct_ov024_020d8694_2FCC1EP23GameModeManagerBase_004 kind:function(arm,size=0x20) addr:0x020cdfbc _ZN28UnkStruct_ov024_020d8694_2FC8vfunc_00Ev kind:function(arm,size=0x364) addr:0x020cdfdc _ZN28UnkStruct_ov024_020d8694_2FC8vfunc_10Ev kind:function(arm,size=0x20) addr:0x020ce340 -func_ov024_020ccb10 kind:function(arm,size=0x17c) addr:0x020ce360 +_ZN28UnkStruct_ov024_020d8694_2FC19func_ov024_020ccb10EiP5Vec2sS1_ kind:function(arm,size=0x17c) addr:0x020ce360 _ZN28UnkStruct_ov024_020d8694_2FC8vfunc_08Ev kind:function(arm,size=0x8) addr:0x020ce4dc _ZN28UnkStruct_ov024_020d8694_2FC8vfunc_0CEv kind:function(arm,size=0x88) addr:0x020ce4e4 -func_ov024_020ce56c kind:function(arm,size=0x24) addr:0x020ce56c -func_ov024_020ce590 kind:function(arm,size=0x19c) addr:0x020ce590 -func_ov024_020ce72c kind:function(arm,size=0xd8) addr:0x020ce72c -_ZN19func_ov024_020ce804D0Ev kind:function(arm,size=0xe0) addr:0x020ce804 +_ZN18UnkStruct_020d86986CreateEv kind:function(arm,size=0x24) addr:0x020ce56c +_ZN18UnkStruct_020d8698C1Ev kind:function(arm,size=0x19c) addr:0x020ce590 +_ZN18UnkStruct_020d8698D1Ev kind:function(arm,size=0xd8) addr:0x020ce72c +_ZN18UnkStruct_020d8698D0Ev kind:function(arm,size=0xe0) addr:0x020ce804 _ZN18UnkStruct_020d869819func_ov024_020cd094Ev kind:function(arm,size=0xbc) addr:0x020ce8e4 _ZN18UnkStruct_020d869819func_ov024_020cd150Ev kind:function(arm,size=0x94) addr:0x020ce9a0 -func_ov024_020cea34 kind:function(arm,size=0x98) addr:0x020cea34 -func_ov024_020ceacc kind:function(arm,size=0xcc) addr:0x020ceacc -func_ov024_020ceb98 kind:function(arm,size=0x10) addr:0x020ceb98 -func_ov024_020ceba8 kind:function(arm,size=0x10) addr:0x020ceba8 +_ZN18UnkStruct_020d86988vfunc_08EP5InputP12TouchControl kind:function(arm,size=0x98) addr:0x020cea34 +_ZN18UnkStruct_020d86988vfunc_10EPc kind:function(arm,size=0xcc) addr:0x020ceacc +_ZN18UnkStruct_020d869819func_ov024_020cd348Ehh kind:function(arm,size=0x10) addr:0x020ceb98 +_ZN18UnkStruct_020d869819func_ov024_020cd358Eh kind:function(arm,size=0x10) addr:0x020ceba8 _ZN18UnkStruct_020d869819func_ov024_020cd368Ebb kind:function(arm,size=0x3c) addr:0x020cebb8 _ZN18UnkStruct_020d869819func_ov024_020cd3a4Ev kind:function(arm,size=0x2c) addr:0x020cebf4 _ZN18UnkStruct_020d869819func_ov024_020cd3d0Ev kind:function(arm,size=0x10) addr:0x020cec20 -_ZN18UnkStruct_020d869819func_ov024_020cd3e0Ei kind:function(arm,size=0x10) addr:0x020cec30 -_ZN18UnkStruct_020d869819func_ov024_020cd3f0Ei kind:function(arm,size=0x10) addr:0x020cec40 +_ZN18UnkStruct_020d869819func_ov024_020cd3e0Eb kind:function(arm,size=0x10) addr:0x020cec30 +_ZN18UnkStruct_020d869819func_ov024_020cd3f0Eb kind:function(arm,size=0x10) addr:0x020cec40 _ZN18UnkStruct_020d869819func_ov024_020cd400Ev kind:function(arm,size=0x10) addr:0x020cec50 _ZN18UnkStruct_020d869819func_ov024_020cd410Ev kind:function(arm,size=0x10) addr:0x020cec60 _ZN18UnkStruct_020d869819func_ov024_020cd420Ev kind:function(arm,size=0x38) addr:0x020cec70 -_ZN18UnkStruct_020d869819func_ov024_020cd458Eji kind:function(arm,size=0x4c) addr:0x020ceca8 -func_ov024_020cecf4 kind:function(arm,size=0x40) addr:0x020cecf4 -_ZN18UnkStruct_020d869819func_ov024_020cd4e4Et kind:function(arm,size=0xdc) addr:0x020ced34 +_ZN18UnkStruct_020d869819func_ov024_020cd458Ejb kind:function(arm,size=0x4c) addr:0x020ceca8 +_ZN18UnkStruct_020d869819func_ov024_020cd4a4Eb kind:function(arm,size=0x40) addr:0x020cecf4 +_ZN18UnkStruct_020d869819func_ov024_020cd4e4Etb kind:function(arm,size=0xdc) addr:0x020ced34 _ZN18UnkStruct_020d869819func_ov024_020cd5c0Et kind:function(arm,size=0x44) addr:0x020cee10 -func_ov024_020cee54 kind:function(arm,size=0x6c) addr:0x020cee54 -func_ov024_020ceec0 kind:function(arm,size=0xf8) addr:0x020ceec0 -func_ov024_020cefb8 kind:function(arm,size=0xc) addr:0x020cefb8 -func_ov024_020cefc4 kind:function(arm,size=0x27c) addr:0x020cefc4 -func_ov024_020cf240 kind:function(arm,size=0xbc) addr:0x020cf240 -func_ov024_020cf2fc kind:function(arm,size=0x290) addr:0x020cf2fc -func_ov024_020cf58c kind:function(arm,size=0x144) addr:0x020cf58c -func_ov024_020cf6d0 kind:function(arm,size=0x74) addr:0x020cf6d0 -func_ov024_020cf744 kind:function(arm,size=0x110) addr:0x020cf744 -func_ov024_020cf854 kind:function(arm,size=0x2b8) addr:0x020cf854 -func_ov024_020cfb0c kind:function(arm,size=0x48) addr:0x020cfb0c -func_ov024_020cfb54 kind:function(arm,size=0x48) addr:0x020cfb54 -func_ov024_020cfb9c kind:function(arm,size=0x24) addr:0x020cfb9c -func_ov024_020cfbc0 kind:function(arm,size=0x24c) addr:0x020cfbc0 -func_ov024_020cfe0c kind:function(arm,size=0x58) addr:0x020cfe0c -func_ov024_020cfe64 kind:function(arm,size=0x5c) addr:0x020cfe64 -func_ov024_020cfec0 kind:function(arm,size=0x2c0) addr:0x020cfec0 -func_ov024_020d0180 kind:function(arm,size=0x104) addr:0x020d0180 -func_ov024_020d0284 kind:function(arm,size=0x1c) addr:0x020d0284 -func_ov024_020d02a0 kind:function(arm,size=0x50) addr:0x020d02a0 -func_ov024_020d02f0 kind:function(arm,size=0x358) addr:0x020d02f0 -func_ov024_020d0648 kind:function(arm,size=0x54) addr:0x020d0648 -func_ov024_020d069c kind:function(arm,size=0xb0) addr:0x020d069c -func_ov024_020d074c kind:function(arm,size=0xc) addr:0x020d074c -func_ov024_020d0758 kind:function(arm,size=0x4c) addr:0x020d0758 -func_ov024_020d07a4 kind:function(arm,size=0xe8) addr:0x020d07a4 -func_ov024_020d088c kind:function(arm,size=0x360) addr:0x020d088c -func_ov024_020d0bec kind:function(arm,size=0x1dc) addr:0x020d0bec -func_ov024_020d0dc8 kind:function(arm,size=0x30) addr:0x020d0dc8 -func_ov024_020d0df8 kind:function(arm,size=0x50) addr:0x020d0df8 -func_ov024_020d0e48 kind:function(arm,size=0x28) addr:0x020d0e48 -func_ov024_020d0e70 kind:function(arm,size=0x34) addr:0x020d0e70 -func_ov024_020d0ea4 kind:function(arm,size=0x14) addr:0x020d0ea4 -func_ov024_020d0eb8 kind:function(arm,size=0x24) addr:0x020d0eb8 -func_ov024_020d0edc kind:function(arm,size=0x38) addr:0x020d0edc -func_ov024_020d0f14 kind:function(arm,size=0xb8) addr:0x020d0f14 -func_ov024_020d0fcc kind:function(arm,size=0x4c) addr:0x020d0fcc -func_ov024_020d1018 kind:function(arm,size=0x40) addr:0x020d1018 -func_ov024_020d1058 kind:function(arm,size=0xd0) addr:0x020d1058 -func_ov024_020d1128 kind:function(arm,size=0x38) addr:0x020d1128 -func_ov024_020d1160 kind:function(arm,size=0x5c) addr:0x020d1160 -func_ov024_020d11bc kind:function(arm,size=0x4) addr:0x020d11bc -func_ov024_020d11c0 kind:function(arm,size=0xb8) addr:0x020d11c0 -func_ov024_020d1278 kind:function(arm,size=0x10) addr:0x020d1278 -func_ov024_020d1288 kind:function(arm,size=0x14) addr:0x020d1288 +_ZN18UnkStruct_020d869819func_ov024_020cd604Ev kind:function(arm,size=0x6c) addr:0x020cee54 +_ZN21UnkStruct_020d8698_1CC1Ev kind:function(arm,size=0xf8) addr:0x020ceec0 +_ZN21UnkStruct_020d8698_1C19func_ov024_020cd768Ev kind:function(arm,size=0xc) addr:0x020cefb8 +_ZN21UnkStruct_020d8698_1C19func_ov024_020cd774Ev kind:function(arm,size=0x27c) addr:0x020cefc4 +_ZN21UnkStruct_020d8698_1C19func_ov024_020cd9f0Ev kind:function(arm,size=0xbc) addr:0x020cf240 +_ZN21UnkStruct_020d8698_1C19func_ov024_020cdaacEv kind:function(arm,size=0x290) addr:0x020cf2fc +_ZN21UnkStruct_020d8698_1C19func_ov024_020cdd3cEhh kind:function(arm,size=0x144) addr:0x020cf58c +_ZN21UnkStruct_020d8698_1C19func_ov024_020cde54Eh kind:function(arm,size=0x74) addr:0x020cf6d0 +_ZN21UnkStruct_020d8698_1C19func_ov024_020cdec8Ev kind:function(arm,size=0x110) addr:0x020cf744 +_ZN21UnkStruct_020d8698_1C19func_ov024_020cdfd8Ev kind:function(arm,size=0x2b8) addr:0x020cf854 +_ZN21UnkStruct_020d8698_1C19func_ov024_020ce218Ev kind:function(arm,size=0x48) addr:0x020cfb0c +_ZN21UnkStruct_020d8698_1C19func_ov024_020ce260Ev kind:function(arm,size=0x48) addr:0x020cfb54 +_ZN21UnkStruct_020d8698_1C19func_ov024_020ce2a8Ev kind:function(arm,size=0x24) addr:0x020cfb9c +_ZN21UnkStruct_020d8698_24C1Ev kind:function(arm,size=0x24c) addr:0x020cfbc0 +_ZN21UnkStruct_020d8698_2419func_ov024_020ce518Ev kind:function(arm,size=0x58) addr:0x020cfe0c +_ZN21UnkStruct_020d8698_2419func_ov024_020ce570Ev kind:function(arm,size=0x5c) addr:0x020cfe64 +_ZN21UnkStruct_020d8698_2419func_ov024_020ce5ccEv kind:function(arm,size=0x2c0) addr:0x020cfec0 +_ZN21UnkStruct_020d8698_2419func_ov024_020ce88cEPc kind:function(arm,size=0x104) addr:0x020d0180 +_ZN21UnkStruct_020d8698_2419func_ov024_020ce990Ebb kind:function(arm,size=0x1c) addr:0x020d0284 +_ZN21UnkStruct_020d8698_2419func_ov024_020ce9acEv kind:function(arm,size=0x50) addr:0x020d02a0 +_ZN21UnkStruct_020d8698_2CC1Ev kind:function(arm,size=0x358) addr:0x020d02f0 +_ZN21UnkStruct_020d8698_2C19func_ov024_020ced54Ev kind:function(arm,size=0x54) addr:0x020d0648 +_ZN21UnkStruct_020d8698_2C19func_ov024_020ceda8Ev kind:function(arm,size=0xb0) addr:0x020d069c +_ZN21UnkStruct_020d8698_2C19func_ov024_020cee58Ev kind:function(arm,size=0xc) addr:0x020d074c +_ZN21UnkStruct_020d8698_2C19func_ov024_020cee64Ev kind:function(arm,size=0x4c) addr:0x020d0758 +_ZN21UnkStruct_020d8698_2C19func_ov024_020cee84Ev kind:function(arm,size=0xe8) addr:0x020d07a4 +_ZN21UnkStruct_020d8698_2C19func_ov024_020cef58Ev kind:function(arm,size=0x360) addr:0x020d088c +_ZN21UnkStruct_020d8698_2C19func_ov024_020cf2b8EPc kind:function(arm,size=0x1dc) addr:0x020d0bec +_ZN21UnkStruct_020d8698_2C19func_ov024_020cf494Eb kind:function(arm,size=0x30) addr:0x020d0dc8 +_ZN21UnkStruct_020d8698_2C19func_ov024_020cf4c4Ev kind:function(arm,size=0x50) addr:0x020d0df8 +_ZN21UnkStruct_020d8698_2C19func_ov024_020cf514Ev kind:function(arm,size=0x28) addr:0x020d0e48 +_ZN21UnkStruct_020d8698_2C19func_ov024_020cf53cEb kind:function(arm,size=0x34) addr:0x020d0e70 +_ZN21UnkStruct_020d8698_2C19func_ov024_020cf570Ev kind:function(arm,size=0x14) addr:0x020d0ea4 +_ZN21UnkStruct_020d8698_2C19func_ov024_020cf584Ev kind:function(arm,size=0x24) addr:0x020d0eb8 +_ZN21UnkStruct_020d8698_2C19func_ov024_020cf5a8Eb kind:function(arm,size=0x38) addr:0x020d0edc +_ZN21UnkStruct_020d8698_34C1Ev kind:function(arm,size=0xb8) addr:0x020d0f14 +_ZN21UnkStruct_020d8698_3419func_ov024_020cf698Ev kind:function(arm,size=0x4c) addr:0x020d0fcc +_ZN21UnkStruct_020d8698_3419func_ov024_020cf6e4Ev kind:function(arm,size=0x40) addr:0x020d1018 +_ZN21UnkStruct_020d8698_3419func_ov024_020cf724Ev kind:function(arm,size=0xd0) addr:0x020d1058 +_ZN21UnkStruct_020d8698_3CC1Ev kind:function(arm,size=0x38) addr:0x020d1128 +_ZN21UnkStruct_020d8698_3C19func_ov024_020cf82cEv kind:function(arm,size=0x5c) addr:0x020d1160 +_ZN21UnkStruct_020d8698_3C19func_ov024_020cf888Ev kind:function(arm,size=0x4) addr:0x020d11bc +_ZN21UnkStruct_020d8698_3C19func_ov024_020cf88cEv kind:function(arm,size=0xb8) addr:0x020d11c0 +_ZN8InstanceI18UnkStruct_020d8698EC2Ev kind:function(arm,size=0x10) addr:0x020d1278 +_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 @@ -723,14 +723,14 @@ data_ov024_020d8cbc kind:data(any) addr:0x020d8cbc ambiguous data_ov024_020d8cc0 kind:data(any) addr:0x020d8cc0 ambiguous data_ov024_020d8cc4 kind:data(any) addr:0x020d8cc4 ambiguous data_ov024_020d8cc8 kind:data(any) addr:0x020d8cc8 ambiguous -data_ov024_020d8ccc kind:data(any) addr:0x020d8ccc -data_ov024_020d8d7c kind:data(any) addr:0x020d8d7c -data_ov024_020d8d82 kind:data(any) addr:0x020d8d82 -data_ov024_020d8d90 kind:data(any) addr:0x020d8d90 -data_ov024_020d8d9e kind:data(any) addr:0x020d8d9e -data_ov024_020d8dae kind:data(any) addr:0x020d8dae -data_ov024_020d8dc2 kind:data(any) addr:0x020d8dc2 -data_ov024_020d8dd6 kind:data(any) addr:0x020d8dd6 +sBMGSceneMap kind:data(any) addr:0x020d8ccc local +data_ov024_020d73d8 kind:data(any) addr:0x020d8d7c local +data_ov024_020d73de kind:data(any) addr:0x020d8d82 local +data_ov024_020d73ec kind:data(any) addr:0x020d8d90 local +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_020d7544 kind:data(any) addr:0x020d8ee8 local data_ov024_020d7547 kind:data(any) addr:0x020d8eeb local @@ -803,15 +803,15 @@ _ZTV27AdventureModeManager_190_14 kind:data(any) addr:0x020d9894 _ZTV24AdventureModeManager_190 kind:data(any) addr:0x020d98b0 data_ov024_020d98e0 kind:data(any) addr:0x020d98e0 _ZTV30AdventureModeManager_15C_20_00 kind:data(any) addr:0x020d98f0 -_ZTV19data_ov024_020d7f7c kind:data(any) addr:0x020d9914 -_ZTV19data_ov024_020d9920 kind:data(any) addr:0x020d9920 -data_ov024_020d994c kind:data(any) addr:0x020d994c -data_ov024_020d9970 kind:data(any) addr:0x020d9970 -data_ov024_020d9994 kind:data(any) addr:0x020d9994 -data_ov024_020d99bc kind:data(any) addr:0x020d99bc -data_ov024_020d99e4 kind:data(any) addr:0x020d99e4 -_ZTV19data_ov024_020d9a04 kind:data(any) addr:0x020d9a04 -data_ov024_020d9a28 kind:data(any) addr:0x020d9a28 +_ZTV23UnkAdventureModeSystem1 kind:data(any) addr:0x020d9914 +_ZTV24UnkStruct_ov024_020d8694 kind:data(any) addr:0x020d9920 +_ZTV28UnkStruct_ov024_020d8694_2FC kind:data(any) addr:0x020d9944 +_ZTV19UnkTitleCardSystem1 kind:data(any) addr:0x020d9968 +_ZTV28UnkStruct_ov024_020d8694_01C kind:data(any) addr:0x020d998c +_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 diff --git a/config/jp/arm9/overlays/ov025/symbols.txt b/config/jp/arm9/overlays/ov025/symbols.txt index d7b00fb9..4f3a401a 100644 --- a/config/jp/arm9/overlays/ov025/symbols.txt +++ b/config/jp/arm9/overlays/ov025/symbols.txt @@ -15,7 +15,7 @@ _ZN18TitleScreenManager8vfunc_14Ev kind:function(arm,size=0x78) addr:0x020c6330 _ZN18TitleScreenManager8vfunc_18Ev kind:function(arm,size=0x34) addr:0x020c63a8 _ZN18TitleScreenManager8vfunc_24Ev kind:function(arm,size=0x20) addr:0x020c63dc _ZN18TitleScreenManager8vfunc_28EPc kind:function(arm,size=0x20) addr:0x020c63fc -_ZN18TitleScreenManager8vfunc_2CEPc kind:function(arm,size=0x20) addr:0x020c641c +_ZN18TitleScreenManager6DrawUIEPc kind:function(arm,size=0x20) addr:0x020c641c _ZN18TitleScreenManager8vfunc_38Ejhss kind:function(arm,size=0x4) addr:0x020c643c _ZN18TitleScreenManager19func_ov025_020c4c20Ev kind:function(arm,size=0x10) addr:0x020c6440 _ZN18TitleScreenManager19func_ov025_020c4c30Ev kind:function(arm,size=0x10) addr:0x020c6450 diff --git a/config/jp/arm9/overlays/ov031/symbols.txt b/config/jp/arm9/overlays/ov031/symbols.txt index 07cca00b..46ee5efd 100644 --- a/config/jp/arm9/overlays/ov031/symbols.txt +++ b/config/jp/arm9/overlays/ov031/symbols.txt @@ -1931,14 +1931,14 @@ func_ov031_0210ea58 kind:function(arm,size=0x2c) addr:0x021107c8 _ZN19func_ov031_0210ea84D0Ev kind:function(arm,size=0x1c) addr:0x021107f4 _ZN19func_ov031_0210eaa0D1Ev kind:function(arm,size=0x20) addr:0x02110810 _ZN19func_ov031_0210eac0D0Ev kind:function(arm,size=0x28) addr:0x02110830 -func_ov031_0210eae8 kind:function(thumb,size=0x3cc) addr:0x02110858 -func_ov031_0210eeb4 kind:function(arm,size=0x200) addr:0x02110c24 -func_ov031_0210f0b4 kind:function(arm,size=0x580) addr:0x02110e24 -func_ov031_0210f634 kind:function(arm,size=0x1b0) addr:0x021113a4 -func_ov031_0210f7e4 kind:function(arm,size=0x30) addr:0x02111554 -func_ov031_0210f814 kind:function(arm,size=0xec) addr:0x02111584 -_ZN19func_ov031_0210f900D1Ev kind:function(arm,size=0x14) addr:0x02111670 -_ZN19func_ov031_0210f914D0Ev kind:function(arm,size=0x1c) addr:0x02111684 +_ZN21UnkStruct_020d8698_44C1Ev kind:function(thumb,size=0x3cc) addr:0x02110858 +_ZN21UnkStruct_020d8698_4419func_ov031_0210eeb4Ev kind:function(arm,size=0x200) addr:0x02110c24 +_ZN21UnkStruct_020d8698_448vfunc_08Ev kind:function(arm,size=0x580) addr:0x02110e24 +_ZN21UnkStruct_020d8698_448vfunc_0CEv kind:function(arm,size=0x1b0) addr:0x021113a4 +_ZN21UnkStruct_020d8698_4419func_ov031_0210f7e4Ejb kind:function(arm,size=0x30) addr:0x02111554 +_ZN21UnkStruct_020d8698_4419func_ov031_0210f814Ev kind:function(arm,size=0xec) addr:0x02111584 +_ZN21UnkStruct_020d8698_44D1Ev kind:function(arm,size=0x14) addr:0x02111670 +_ZN21UnkStruct_020d8698_44D0Ev kind:function(arm,size=0x1c) addr:0x02111684 func_ov031_0210f930 kind:function(arm,size=0xac) addr:0x021116a0 func_ov031_0210f9dc kind:function(arm,size=0x4c) addr:0x0211174c _ZN19func_ov031_0210fa28D1Ev kind:function(arm,size=0x14) addr:0x02111798 diff --git a/config/jp/arm9/relocs.txt b/config/jp/arm9/relocs.txt index d5fdebc8..e2568fd6 100644 --- a/config/jp/arm9/relocs.txt +++ b/config/jp/arm9/relocs.txt @@ -2925,19 +2925,19 @@ from:0x0201f42c kind:load to:0x0204b690 module:main from:0x0201f43c kind:arm_call to:0x0201f034 module:main from:0x0201f44c kind:arm_call to:0x020634b8 module:overlay(0) from:0x0201f460 kind:load to:0x020458d8 add:0x8 module:main -from:0x0201f464 kind:load to:0x020458ec module:main +from:0x0201f464 kind:load to:0x020458e4 add:0x8 module:main from:0x0201f474 kind:arm_call to:0x0201f034 module:main from:0x0201f484 kind:arm_call to:0x020634b8 module:overlay(0) from:0x0201f498 kind:load to:0x020458d8 add:0x8 module:main -from:0x0201f49c kind:load to:0x020458ec module:main +from:0x0201f49c kind:load to:0x020458e4 add:0x8 module:main from:0x0201f4b4 kind:arm_call to:0x0201f078 module:main from:0x0201f4c4 kind:arm_call to:0x020634b8 module:overlay(0) from:0x0201f4d8 kind:load to:0x020458d8 add:0x8 module:main -from:0x0201f4dc kind:load to:0x020458ec module:main +from:0x0201f4dc kind:load to:0x020458e4 add:0x8 module:main from:0x0201f4f4 kind:arm_call to:0x0201f078 module:main from:0x0201f504 kind:arm_call to:0x020634b8 module:overlay(0) from:0x0201f518 kind:load to:0x020458d8 add:0x8 module:main -from:0x0201f51c kind:load to:0x020458ec module:main +from:0x0201f51c kind:load to:0x020458e4 add:0x8 module:main from:0x0201f538 kind:arm_call to:0x02068fc8 module:overlay(0) from:0x0201f570 kind:arm_call to:0x02019528 module:main from:0x0201f5e0 kind:arm_call to:0x020152e0 module:main diff --git a/config/jp/arm9/symbols.txt b/config/jp/arm9/symbols.txt index 5ce2db83..eee7c0d4 100644 --- a/config/jp/arm9/symbols.txt +++ b/config/jp/arm9/symbols.txt @@ -736,7 +736,7 @@ func_02014ea4 kind:function(arm,size=0x5c) addr:0x02014ea4 func_02014f00 kind:function(arm,size=0x58) addr:0x02014f00 func_02014f58 kind:function(arm,size=0x18) addr:0x02014f58 func_02014f70 kind:function(arm,size=0x8) addr:0x02014f70 -func_02014f78 kind:function(arm,size=0x8) addr:0x02014f78 +func_02014fe0 kind:function(arm,size=0x8) addr:0x02014f78 func_02014f80 kind:function(arm,size=0xc) addr:0x02014f80 _ZN18UnkStruct_02049be013func_02014ff4Ev kind:function(arm,size=0x14) addr:0x02014f8c func_02014fa0 kind:function(arm,size=0x28) addr:0x02014fa0 @@ -747,9 +747,9 @@ func_020151dc kind:function(arm,size=0x40) addr:0x020151dc func_0201521c kind:function(arm,size=0x7c) addr:0x0201521c func_02015298 kind:function(arm,size=0x38) addr:0x02015298 func_020152d0 kind:function(arm,size=0x10) addr:0x020152d0 -_ZN18SomeSaveFileStructC1Ei kind:function(arm,size=0x38) addr:0x020152e0 +_ZN14UnkDataStruct2C1Ei kind:function(arm,size=0x38) addr:0x020152e0 func_02015318 kind:function(arm,size=0x24) addr:0x02015318 -_ZN18SomeSaveFileStructD1Ev kind:function(arm,size=0x20) addr:0x0201533c +_ZN14UnkDataStruct2D1Ev kind:function(arm,size=0x20) addr:0x0201533c _ZN17UnkFileSystem2_10D1Ev kind:function(arm,size=0x20) addr:0x0201535c func_0201537c kind:function(arm,size=0x18) addr:0x0201537c func_02015394 kind:function(thumb,size=0x12) addr:0x02015394 @@ -787,9 +787,9 @@ _ZN14UnkFileSystem2D0Ev kind:function(thumb,size=0x1a) addr:0x020156a0 _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_02015720 kind:function(arm,size=0x38) addr:0x02015720 +func_02015788 kind:function(arm,size=0x38) addr:0x02015720 func_02015758 kind:function(arm,size=0x30) addr:0x02015758 -func_02015788 kind:function(arm,size=0x30) addr:0x02015788 +func_02015788_jp 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 @@ -823,15 +823,15 @@ func_02016548 kind:function(arm,size=0x50) addr:0x02016548 func_02016598 kind:function(arm,size=0x20) addr:0x02016598 func_020165b8 kind:function(arm,size=0x3c) addr:0x020165b8 func_020165f4 kind:function(arm,size=0x20) addr:0x020165f4 -_ZN20GameModeLinkListNodeC2Ev kind:function(arm,size=0xc) addr:0x02016614 -_ZN20GameModeLinkListNodeC1Ev kind:function(arm,size=0xc) addr:0x02016620 -_ZN20GameModeLinkListNodeD2Ev kind:function(arm,size=0x18) addr:0x0201662c -_ZN20GameModeLinkListNode13func_020166acEPS_ kind:function(arm,size=0x20) addr:0x02016644 -_ZN20GameModeLinkListNode13func_020166ccEPS_ kind:function(arm,size=0x28) addr:0x02016664 -_ZN20GameModeLinkListNode13func_020166f4EPS_ kind:function(arm,size=0x2c) addr:0x0201668c -func_020166b8 kind:function(arm,size=0x1c) addr:0x020166b8 -_ZN20GameModeLinkListNode13func_0201673cEv kind:function(arm,size=0x28) addr:0x020166d4 -func_020166fc kind:function(arm,size=0x34) addr:0x020166fc +_ZN12LinkListImplC2Ev kind:function(arm,size=0xc) addr:0x02016614 +_ZN12LinkListImplC1Ev kind:function(arm,size=0xc) addr:0x02016620 +_ZN12LinkListImplD2Ev kind:function(arm,size=0x18) addr:0x0201662c +_ZN12LinkListImpl6DetachEP12LinkListNode kind:function(arm,size=0x20) addr:0x02016644 +_ZN12LinkListImpl6AppendEP12LinkListNode kind:function(arm,size=0x28) addr:0x02016664 +_ZN12LinkListImpl7PrependEP12LinkListNode kind:function(arm,size=0x2c) addr:0x0201668c +_ZN12LinkListImpl6ExtendEP12LinkListNode kind:function(arm,size=0x1c) addr:0x020166b8 +_ZN12LinkListImpl13GetListLengthEv kind:function(arm,size=0x28) addr:0x020166d4 +_ZN12LinkListImpl8ContainsEP12LinkListNode kind:function(arm,size=0x34) addr:0x020166fc func_02016730 kind:function(arm,size=0x10) addr:0x02016730 func_02016740 kind:function(arm,size=0x4) addr:0x02016740 func_02016744 kind:function(arm,size=0x34) addr:0x02016744 @@ -937,7 +937,7 @@ _ZN19GameModeManagerBase8vfunc_04Ei kind:function(arm,size=0x28) addr:0x020185a4 _ZN19GameModeManagerBase13func_02018634Et kind:function(arm,size=0x48) addr:0x020185cc _ZN19GameModeManagerBase8vfunc_24Ev kind:function(arm,size=0x18) addr:0x02018614 _ZN19GameModeManagerBase8vfunc_28EPc kind:function(arm,size=0x10) addr:0x0201862c -_ZN19GameModeManagerBase8vfunc_2CEPc kind:function(arm,size=0x4) addr:0x0201863c +_ZN19GameModeManagerBase6DrawUIEPc kind:function(arm,size=0x4) addr:0x0201863c _ZN19GameModeManagerBase8vfunc_30Ei kind:function(arm,size=0x4c) addr:0x02018640 _ZN19GameModeManagerBase8vfunc_34Eii kind:function(arm,size=0x4) addr:0x0201868c _ZN19GameModeManagerBase13func_020186f8Ei kind:function(arm,size=0xc) addr:0x02018690 @@ -952,12 +952,12 @@ _ZN19GameModeManagerBase13func_02018984EPc kind:function(arm,size=0x90) addr:0x0 _ZN19GameModeManagerBase13func_02018a14EPc kind:function(arm,size=0x78) addr:0x020189ac _ZN19GameModeManagerBase13func_02018a8cEv kind:function(arm,size=0x10) addr:0x02018a24 _ZN19GameModeManagerBase13func_02018a9cEii kind:function(arm,size=0x10) addr:0x02018a34 -_ZN19GameModeManagerBase13func_02018aacEi kind:function(arm,size=0x18) addr:0x02018a44 -_ZN19GameModeManagerBase13func_02018ac4Ev kind:function(arm,size=0x10) addr:0x02018a5c +_ZN19GameModeManagerBase13func_02018aacEib kind:function(arm,size=0x18) addr:0x02018a44 +_ZN19GameModeManagerBase13func_02018ac4Es kind:function(arm,size=0x10) addr:0x02018a5c _ZN19GameModeManagerBase13func_02018ad4Ev kind:function(arm,size=0x1c) addr:0x02018a6c -_ZN19GameModeManagerBase13func_02018af0EP16GameModeLinkListI23GameModeManagerBase_104E kind:function(arm,size=0x64) addr:0x02018a88 -_ZN19GameModeManagerBase13func_02018b54EP16GameModeLinkListI23GameModeManagerBase_104E kind:function(arm,size=0x3c) addr:0x02018aec -_ZN19GameModeManagerBase13func_02018b90EP16GameModeLinkListI23GameModeManagerBase_104EPc kind:function(arm,size=0x34) addr:0x02018b28 +_ZN19GameModeManagerBase13func_02018af0EP23GameModeManagerBase_104 kind:function(arm,size=0x64) addr:0x02018a88 +_ZN19GameModeManagerBase13func_02018b54EP23GameModeManagerBase_104 kind:function(arm,size=0x3c) addr:0x02018aec +_ZN19GameModeManagerBase13func_02018b90EP23GameModeManagerBase_104Pc kind:function(arm,size=0x34) addr:0x02018b28 _ZN19GameModeManagerBase13func_02018bc4Ei kind:function(arm,size=0x1c) addr:0x02018b5c _ZN18UnkStruct_0204a11013func_02018be0Ei kind:function(arm,size=0x4c) addr:0x02018b78 _ZN18UnkStruct_0204a11013func_02018c2cEv kind:function(arm,size=0x4c) addr:0x02018bc4 @@ -979,12 +979,12 @@ _ZN18UnkStruct_0204a11013func_02019538Eii kind:function(arm,size=0x10) addr:0x02 _ZN18UnkStruct_0204a11013func_02019548Ev kind:function(arm,size=0x10) addr:0x020194e0 func_020194f0 kind:function(arm,size=0x28) addr:0x020194f0 func_02019518 kind:function(arm,size=0x10) addr:0x02019518 -func_02019528 kind:function(arm,size=0x10) addr:0x02019528 +_ZN18UnkStruct_0204a11013func_02019590Esi kind:function(arm,size=0x10) addr:0x02019528 func_02019538 kind:function(arm,size=0x84) addr:0x02019538 func_020195bc kind:function(arm,size=0x2c) addr:0x020195bc func_020195e8 kind:function(arm,size=0x2c) addr:0x020195e8 _ZN18UnkStruct_0204a11013func_0201967cEiiiii kind:function(arm,size=0x34) addr:0x02019614 -func_02019648 kind:function(arm,size=0x4c) addr:0x02019648 +func_020196b0 kind:function(arm,size=0x4c) addr:0x02019648 func_02019694 kind:function(arm,size=0x238) addr:0x02019694 func_020198cc kind:function(arm,size=0x140) addr:0x020198cc func_02019a74 kind:function(arm,size=0xc8) addr:0x02019a0c @@ -1010,8 +1010,8 @@ func_0201a750 kind:function(arm,size=0x48) addr:0x0201a750 _ZN18UnkStruct_0204af1c13func_0201a800Ev kind:function(arm,size=0x7c) addr:0x0201a798 func_0201a814 kind:function(arm,size=0xf8) addr:0x0201a814 func_0201a90c kind:function(arm,size=0xd0) addr:0x0201a90c -_ZN18UnkStruct_0204af1c13func_0201aa44EPvS0_iS0_ kind:function(arm,size=0x48) addr:0x0201a9dc -func_0201aa24 kind:function(arm,size=0x44) addr:0x0201aa24 +_ZN18UnkStruct_0204af1c13func_0201aa44EP34UnkStruct_ov019_020d24c8_28_258_00PviS2_ kind:function(arm,size=0x48) addr:0x0201a9dc +_ZN18UnkStruct_0204af1c13func_0201aa8cEP34UnkStruct_ov019_020d24c8_28_258_00iiii kind:function(arm,size=0x44) addr:0x0201aa24 _ZN18UnkStruct_0204af1c13func_0201aad0EP14UnkSubStruct19PviS2_ kind:function(arm,size=0x1a0) addr:0x0201aa68 func_0201ac08 kind:function(arm,size=0x13c) addr:0x0201ac08 func_0201ad44 kind:function(arm,size=0x50) addr:0x0201ad44 @@ -1063,9 +1063,9 @@ _ZN23GameModeManagerBase_004D1Ev kind:function(arm,size=0x3c) addr:0x0201bcd8 _ZN23GameModeManagerBase_00413func_0201bf24Ev kind:function(arm,size=0x30) addr:0x0201bd14 _ZN23GameModeManagerBase_00413func_0201bf54Ev kind:function(arm,size=0x3c) addr:0x0201bd44 _ZN23GameModeManagerBase_00413func_0201bf90Ev kind:function(arm,size=0x5c) addr:0x0201bd80 -_ZN23GameModeManagerBase_00413func_0201bfecEv kind:function(arm,size=0x20) addr:0x0201bddc +_ZN23GameModeManagerBase_00413func_0201bfecEs kind:function(arm,size=0x20) addr:0x0201bddc _ZN23GameModeManagerBase_00413func_0201c00cEii kind:function(arm,size=0x5c) addr:0x0201bdfc -_ZN23GameModeManagerBase_00413func_0201c068Es kind:function(arm,size=0x3c) addr:0x0201be58 +_ZN23GameModeManagerBase_00413func_0201c068Esb kind:function(arm,size=0x3c) addr:0x0201be58 func_0201be94 kind:function(arm,size=0x20) addr:0x0201be94 _ZN23GameModeManagerBase_00413func_0201c0c4Ei kind:function(arm,size=0x20) addr:0x0201beb4 _ZN23GameModeManagerBase_00413func_0201c0e4Ev kind:function(arm,size=0x40) addr:0x0201bed4 @@ -1074,7 +1074,7 @@ _ZN23GameModeManagerBase_00413func_0201c19cEv kind:function(arm,size=0x48) addr: _ZN23GameModeManagerBase_00413func_0201c1e4Ev kind:function(arm,size=0x48) addr:0x0201bfd4 _ZN23GameModeManagerBase_00413func_0201c22cEv kind:function(arm,size=0x40) addr:0x0201c01c func_0201c05c kind:function(arm,size=0x44) addr:0x0201c05c -func_0201c0a0 kind:function(arm,size=0x30) addr:0x0201c0a0 +_ZN23GameModeManagerBase_00413func_0201c2b0Ei kind:function(arm,size=0x30) addr:0x0201c0a0 func_0201c0d0 kind:function(arm,size=0xc4) addr:0x0201c0d0 func_0201c194 kind:function(arm,size=0xac) addr:0x0201c194 _ZN23UnkStruct_0204a110_Sub5C1Ev kind:function(thumb,size=0x10) addr:0x0201c240 @@ -1097,7 +1097,7 @@ func_0201c78c kind:function(thumb,size=0x20) addr:0x0201c78c func_0201c7ac kind:function(thumb,size=0x26) addr:0x0201c7ac func_0201c7d4 kind:function(thumb,size=0x2e) addr:0x0201c7d4 func_0201c804 kind:function(thumb,size=0x12) addr:0x0201c804 -func_0201c818 kind:function(thumb,size=0xa) addr:0x0201c818 +_ZN23UnkStruct_0204a110_Sub213func_0201ca28Ei kind:function(thumb,size=0xa) addr:0x0201c818 func_0201c824 kind:function(arm,size=0x104) addr:0x0201c824 func_0201c928 kind:function(arm,size=0x44) addr:0x0201c928 func_0201c96c kind:function(arm,size=0x148) addr:0x0201c96c @@ -1142,7 +1142,7 @@ func_0201e914 kind:function(arm,size=0x14) addr:0x0201e914 func_0201e928 kind:function(arm,size=0x14) addr:0x0201e928 _ZN26UnkStruct_0204a110_Sub7_08C1Ev kind:function(arm,size=0x60) addr:0x0201e93c func_0201e99c kind:function(arm,size=0x4c) addr:0x0201e99c -func_0201e9e8 kind:function(arm,size=0x38) addr:0x0201e9e8 +_ZN26UnkStruct_0204a110_Sub7_0813func_0201ebf8Eiiii kind:function(arm,size=0x38) addr:0x0201e9e8 _ZN26UnkStruct_0204a110_Sub7_0813func_0201ec30Ev kind:function(arm,size=0x8) addr:0x0201ea20 func_0201ea28 kind:function(arm,size=0x70) addr:0x0201ea28 func_0201ea98 kind:function(arm,size=0x14) addr:0x0201ea98 @@ -2581,7 +2581,7 @@ data_02045884 kind:data(any) addr:0x02045884 data_020458c8 kind:data(any) addr:0x020458c8 data_020458d4 kind:data(any) addr:0x020458d4 _ZTV24UnkSystem2_UnkSubSystem5 kind:data(any) addr:0x020458d8 -data_020458ec kind:data(any) addr:0x020458ec +_ZTV34UnkSystem2_UnkSubSystem11_Derived2 kind:data(any) addr:0x020458e4 data_02045904 kind:data(any) addr:0x02045904 _ZTV21UnkStruct_0204e64c_00 kind:data(any) addr:0x02045914 data_0204592c kind:data(any) addr:0x0204592c @@ -2750,9 +2750,9 @@ data_0204af9c kind:bss addr:0x0204af9c data_0204afa0 kind:bss addr:0x0204afa0 gGame kind:bss addr:0x0204afac data_0204b094 kind:bss addr:0x0204b094 -data_0204b098 kind:bss addr:0x0204b098 +data_02049b18 kind:bss addr:0x0204b098 data_0204b0aa kind:bss addr:0x0204b0aa -data_0204b0cc kind:bss addr:0x0204b0cc +data_02049b4c kind:bss addr:0x0204b0cc data_0204b0d2 kind:bss addr:0x0204b0d2 data_0204b0f4 kind:bss addr:0x0204b0f4 data_0204b0fc kind:bss addr:0x0204b0fc @@ -2762,7 +2762,7 @@ data_0204b128 kind:bss addr:0x0204b128 data_02049bac kind:bss addr:0x0204b12c data_0204b150 kind:bss addr:0x0204b150 data_0204b154 kind:bss addr:0x0204b154 -data_0204b15c kind:bss addr:0x0204b15c +data_02049be0 kind:bss addr:0x0204b15c gRandom kind:bss addr:0x0204b164 data_0204b17c kind:bss addr:0x0204b17c data_0204b480 kind:bss addr:0x0204b480 diff --git a/include/FileSelect/FileSelect.hpp b/include/FileSelect/FileSelect.hpp index 374c4181..6408a674 100644 --- a/include/FileSelect/FileSelect.hpp +++ b/include/FileSelect/FileSelect.hpp @@ -66,14 +66,6 @@ public: /* 0FE4 */ UnkResult mUnk_0FE4; /* 1020 */ - GameModeLinkListNode *GetNode() { - GameModeLinkListNode *node = (GameModeLinkListNode *) this; - if (this != NULL) { - node = (GameModeLinkListNode *) ((u32 *) node + 1); - } - return node; - } - FileSelectSubScreen(); void func_ov019_020cf73c(unk32 param1, unk32 param2); @@ -122,7 +114,7 @@ public: /* 10 */ virtual void vfunc_10(unk32 param1, unk32 param2, unk32 param3) override; /* 24 */ virtual void vfunc_24() override; /* 28 */ virtual void vfunc_28(unk8 *param1) override; - /* 2C */ virtual void vfunc_2C(unk8 *param1) override; + /* 2C */ virtual void DrawUI(unk8 *param1) override; static GameModeManagerBase *Create(unk32 param1); }; diff --git a/include/FileSelect/FileSelectMain.hpp b/include/FileSelect/FileSelectMain.hpp index ab0b9665..8618ab3d 100644 --- a/include/FileSelect/FileSelectMain.hpp +++ b/include/FileSelect/FileSelectMain.hpp @@ -9,7 +9,7 @@ #include "math.hpp" #include "types.h" -typedef Iterator FileSlotIterator; +typedef Iterator FileSlotIterator; /* - "Slot Select" refers to the screen where you choose which file to use @@ -153,21 +153,13 @@ public: /* 1C28 */ UnkSubStruct9 &GetUnk03E0(int saveSlotIndex) { - return this->mUnk_03E0.GetRef(saveSlotIndex); + return this->mUnk_03E0.Get(saveSlotIndex); } UnkSubStruct9 &GetUnk03E0() { return this->GetUnk03E0(this->mSaveSlotIndex); } - GameModeLinkListNode *GetNode() { - GameModeLinkListNode *node = (GameModeLinkListNode *) this; - if (this != NULL) { - node = (GameModeLinkListNode *) ((u32 *) node + 1); - } - return node; - } - FileSelectMain(); void func_ov019_020c61dc(); void func_ov019_020c63dc(); diff --git a/include/FileSelect/FileSelectMicTest.hpp b/include/FileSelect/FileSelectMicTest.hpp index 30550daa..a9d3a07d 100644 --- a/include/FileSelect/FileSelectMicTest.hpp +++ b/include/FileSelect/FileSelectMicTest.hpp @@ -74,14 +74,6 @@ public: /* 633 */ unk8 mUnk_633; /* 634 */ - GameModeLinkListNode *GetNode() { - GameModeLinkListNode *node = (GameModeLinkListNode *) this; - if (this != NULL) { - node = (GameModeLinkListNode *) ((u32 *) node + 1); - } - return node; - } - FileSelectMicTest(); void func_ov019_020cea74(); void func_ov019_020cefe4(); diff --git a/include/FileSelect/FileSelectOptions.hpp b/include/FileSelect/FileSelectOptions.hpp index 11d371a9..5fa337ea 100644 --- a/include/FileSelect/FileSelectOptions.hpp +++ b/include/FileSelect/FileSelectOptions.hpp @@ -135,14 +135,6 @@ public: /* 1CF7 */ unk8 mUnk_1CF7; /* 1CF8 */ - GameModeLinkListNode *GetNode() { - GameModeLinkListNode *node = (GameModeLinkListNode *) this; - if (this != NULL) { - node = (GameModeLinkListNode *) ((u32 *) node + 1); - } - return node; - } - FileSelectOptions(s32 saveSlotIndex); void func_ov019_020ccd40(); void func_ov019_020ccdf4(); diff --git a/include/FileSelect/FileSelectOptionsManager.hpp b/include/FileSelect/FileSelectOptionsManager.hpp index bb1c7c71..bb1149d4 100644 --- a/include/FileSelect/FileSelectOptionsManager.hpp +++ b/include/FileSelect/FileSelectOptionsManager.hpp @@ -29,14 +29,6 @@ public: /* 2C */ FileSelectOptions *mpOptions; /* 30 */ - GameModeLinkListNode *GetNode() { - GameModeLinkListNode *node = (GameModeLinkListNode *) this; - if (this != NULL) { - node = (GameModeLinkListNode *) ((u32 *) node + 1); - } - return node; - } - FileSelectOptionsManager(void *param1, unk32 param2); void func_ov019_020cc85c(unk32 param1); unk32 func_ov019_020cc874(); diff --git a/include/FileSelect/FileSelectUnkDraw.hpp b/include/FileSelect/FileSelectUnkDraw.hpp index ed8b057f..e1f50c63 100644 --- a/include/FileSelect/FileSelectUnkDraw.hpp +++ b/include/FileSelect/FileSelectUnkDraw.hpp @@ -8,7 +8,7 @@ class FileSelectManager_UnkDrawBase : public SysObject { public: /* 00 (vtable) */ - /* 04 */ GameModeLinkListNode mUnk_04; + /* 04 */ LinkListImpl mUnk_04; /* 0C */ FileSelectManager_UnkDrawBase(); diff --git a/include/FileSelect/UnkSubStruct9.hpp b/include/FileSelect/UnkSubStruct9.hpp index 81cb1d6e..f06f0e1a 100644 --- a/include/FileSelect/UnkSubStruct9.hpp +++ b/include/FileSelect/UnkSubStruct9.hpp @@ -43,8 +43,7 @@ public: UnkSubStruct9(); UnkSubStruct9(stack_struct1 param1); - void Init(); - void Init(stack_struct1 param1); + void func_ov019_020cbaec(); bool IsPlayerNameSet(); void func_ov019_020cbb40(); diff --git a/include/Game/GameModeManager.hpp b/include/Game/GameModeManager.hpp index 56945c13..7e8f9a72 100644 --- a/include/Game/GameModeManager.hpp +++ b/include/Game/GameModeManager.hpp @@ -1,11 +1,13 @@ #pragma once #include "Game/GameMode.hpp" +#include "LinkList.hpp" #include "Player/TouchControl.hpp" #include "System/SysNew.hpp" #include "Unknown/UnkStruct_02049b18.hpp" #include "math.hpp" #include "types.h" + #include #include @@ -23,126 +25,26 @@ public: void func_0201bf24(); void func_0201bf54(); void func_0201bf90(); - void func_0201bfec(); + void func_0201bfec(unk16 param1); void func_0201c00c(unk32 param1, unk32 param2); - void func_0201c068(unk16 param1); + void func_0201c068(unk16 param1, bool param2); void func_0201c0c4(unk32 param1); void func_0201c0e4(); void func_0201c19c(); void func_0201c124(unk32 param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5); void func_0201c1e4(); void func_0201c22c(); + bool func_0201c2b0(unk32 param1); void func_ov001_020bd734(unk32 *param1); void func_ov001_020bd784(); }; -class GameModeLinkListNode { +class GameModeManagerBase_104_0C : public LinkList { public: - /* 00 */ GameModeLinkListNode *mNext; - /* 04 */ GameModeLinkListNode *mPrev; - /* 08 */ - - GameModeLinkListNode(); - ~GameModeLinkListNode(); - - GameModeLinkListNode *GetNode() { - GameModeLinkListNode *node = (GameModeLinkListNode *) this; - if (node != NULL) { - node = (GameModeLinkListNode *) ((u32 *) node + 1); - } - return node; - } - - GameModeLinkListNode *GetNext() { - GameModeLinkListNode *next = mNext; - if (next != NULL) { - next = (GameModeLinkListNode *) ((u32 *) next - 1); - } - return next; - } - - GameModeLinkListNode *GetNext3() { - GameModeLinkListNode *next = this; - if (next != NULL) { - next = (GameModeLinkListNode *) ((u32 *) next - 1); - } - return next; - } - - GameModeLinkListNode *GetUnk() { - GameModeLinkListNode *prev = (GameModeLinkListNode *) *((u32 *) this + 2); - if (prev != NULL) { - prev = (GameModeLinkListNode *) ((u32 *) prev - 1); - } - return prev; - } - - GameModeLinkListNode *GetUnk2() { - GameModeLinkListNode *prev = (GameModeLinkListNode *) *((u32 *) this + 1); - if (prev != NULL) { - prev = (GameModeLinkListNode *) ((u32 *) prev - 1); - } - return prev; - } - - GameModeLinkListNode *GetPrev() { - GameModeLinkListNode *prev = mPrev; - if (prev != NULL) { - prev = (GameModeLinkListNode *) ((u32 *) prev - 1); - } - return prev; - } - - template T *GetTarget() { - return (T *) this; - } - - void func_020166cc(GameModeLinkListNode *param1); - void func_020166f4(GameModeLinkListNode *param1); - unk32 func_0201673c(); - - static void func_020166ac(GameModeLinkListNode *param1); -}; - -template class GameModeLinkList : public GameModeLinkListNode { -public: - GameModeLinkList *GetNext2() { - GameModeLinkListNode *next = (GameModeLinkListNode *) *((u8 **) this + 2); - if (next != NULL) { - next = (GameModeLinkListNode *) ((u32 *) next - 1); - } - return (GameModeLinkList *) next; - } - - GameModeLinkList *GetNextList() { - return (GameModeLinkList *) this->GetNext(); - } - - GameModeLinkList *GetPrevList() { - return (GameModeLinkList *) this->GetPrev(); - } - - T *GetTarget() { - return (T *) this; - } -}; - -class GameModeManagerBase_104_0C : public SysObject { -public: - GameModeLinkList mList; - - GameModeLinkList *GetOrigin() { - return (GameModeLinkList *) this; - } - - GameModeLinkListNode *GetUnk3() { - GameModeLinkListNode *prev = (GameModeLinkListNode *) *((u32 *) this - 1); - if (prev != NULL) { - prev = (GameModeLinkListNode *) ((u32 *) prev - 1); - } - return prev; - } + /* 00 (vtable) */ + /* 04 (base) */ + /* 0C */ // data_ov000_020b1e48 vtable /* 00 */ virtual ~GameModeManagerBase_104_0C(); @@ -150,38 +52,20 @@ public: /* 0C */ virtual void vfunc_0C(void *param1); }; -class GameModeManagerBase_104_00 : public SysObject { -public: - GameModeManagerBase_104_00() {} - - /* 04 */ GameModeLinkList mList; - /* 0C */ GameModeManagerBase_104_0C mUnk_0C; -}; - class AdventureModeManager_160_14; class AdventureModeManager_160_18; class AdventureModeManager_1B8; -class GameModeManagerBase_104 : public GameModeManagerBase_104_00 { +class GameModeManagerBase_104 : public LinkList { public: /* 00 (vtable) */ + /* 04 (base) */ + /* 0C */ GameModeManagerBase_104_0C mUnk_0C; /* 18 */ bool mUnk_18; /* 19 */ bool mUnk_19; /* 1A */ bool mUnk_1A; /* 1C */ - GameModeLinkList *GetOrigin() { - return (GameModeLinkList *) this; - } - - GameModeLinkListNode *GetNode() { - GameModeLinkListNode *node = (GameModeLinkListNode *) this; - if (node != NULL) { - node = (GameModeLinkListNode *) ((u32 *) node + 1); - } - return node; - } - GameModeManagerBase_104(); // data_ov000_020b1e60 vtable @@ -226,6 +110,10 @@ public: /* 150 */ unk8 mUnk_153; /* 154 */ + BOOL IsUnk150() { + return this->mUnk_150; + } + GameModeManagerBase(unk32 param1); void func_02018550(void); void func_02018554(void); @@ -242,12 +130,12 @@ public: void func_02018a14(unk8 *param1); void func_02018a8c(void); void func_02018a9c(unk32 param1, unk32 param2); - void func_02018aac(unk32 param1); - void func_02018ac4(void); + void func_02018aac(unk32 param1, bool param2); + void func_02018ac4(unk16 param1); bool func_02018ad4(void); - bool func_02018af0(GameModeLinkList *param1); - bool func_02018b54(GameModeLinkList *param1); - bool func_02018b90(GameModeLinkList *param1, unk8 *param2); + bool func_02018af0(GameModeManagerBase_104 *param1); + bool func_02018b54(GameModeManagerBase_104 *param1); + bool func_02018b90(GameModeManagerBase_104 *param1, unk8 *param2); void func_02018bc4(unk32 param1); // data_02044064 vtable @@ -261,7 +149,7 @@ public: /* 20 */ virtual void vfunc_20(); /* 24 */ virtual void vfunc_24(); /* 28 */ virtual void vfunc_28(unk8 *param1); - /* 2C */ virtual void vfunc_2C(unk8 *param1); + /* 2C */ virtual void DrawUI(unk8 *param1); /* 30 */ virtual void vfunc_30(unk32 param1); /* 34 */ virtual void vfunc_34(unk32 param1, unk32 param2); diff --git a/include/Item/ItemManager.hpp b/include/Item/ItemManager.hpp index a1298b16..d2d65788 100644 --- a/include/Item/ItemManager.hpp +++ b/include/Item/ItemManager.hpp @@ -77,6 +77,14 @@ public: /* 24 */ unk8 mUnk_27; /* 28 */ + u8 GetTearsAmount() const { + return this->mTearsAmount; + } + + u8 GetKeyAmount() const { + return this->mKeyAmount; + } + ItemManager(); ~ItemManager(); diff --git a/include/LinkList.hpp b/include/LinkList.hpp new file mode 100644 index 00000000..5f1559e5 --- /dev/null +++ b/include/LinkList.hpp @@ -0,0 +1,201 @@ +#pragma once + +#include "types.h" + +//! TODO: inlines in the class +#define GetLinkListRef(l) (&l) +#define GetLinkListOrigin(l) GetLinkListRef(l) + +class LinkListNode { +private: + /* 00 */ LinkListNode *mpNext; + /* 04 */ LinkListNode *mpPrev; + /* 08 */ + +public: + LinkListNode *GetNext() { + return this->mpNext; + } + + LinkListNode *GetPrev() { + return this->mpPrev; + } + + void SetNext(LinkListNode *pNext) { + this->mpNext = pNext; + } + + void SetPrev(LinkListNode *pPrev) { + this->mpPrev = pPrev; + } +}; + +class LinkListIterImpl { +private: + LinkListNode *mPointer; + +public: + LinkListIterImpl(LinkListNode *pNode) { + this->mPointer = pNode; + } + + LinkListNode *operator->() { + return this->mPointer; + } + + LinkListNode &operator*() { + return *this->mPointer; + } + + LinkListIterImpl &operator++() { + this->mPointer = (LinkListNode *) ((u8 *) this->mPointer + 4); + return *this; + } + + LinkListIterImpl &operator++(int) { + this->mPointer = this->mPointer->GetNext(); + return *this; + } + + LinkListIterImpl &operator--(int) { + this->mPointer = mPointer->GetPrev(); + return *this; + } + + friend bool operator==(LinkListIterImpl &left, LinkListNode *right) { + return left.mPointer == right; + } + + friend bool operator!=(LinkListIterImpl &left, LinkListNode *right) { + return left.mPointer != right; + } +}; + +class LinkListImpl : public LinkListNode { +public: + /* 00 (base) */ + /* 08 */ + +public: + LinkListImpl(); + ~LinkListImpl(); + + LinkListNode *GetOriginNode() { + return (LinkListNode *) this; + } + + LinkListNode *GetBeginIterImpl() { + return this->GetNext(); + } + + LinkListNode *GetEndIterImpl() { + return this; + } + + // insert B (`node`) between A (`this`) and C (`this->mNext`) + void Append(LinkListNode *node); + + // insert B (`node`) between A (`this->mPrev`) and C (`this`) + void Prepend(LinkListNode *node); + + // links list `node` to list `this` (append) + void Extend(LinkListNode *node); + + // returns the number of how many nodes are following `this` + s32 GetListLength(); + + // search through the list to determine if the node is inside it + bool Contains(LinkListNode *node); + + static void Detach(LinkListNode *pNode); +}; + +#define GetBeginIter(l) (GetLinkListRef(l)->GetNextTarget()) +#define GetBeginIterReverse(l) (GetLinkListRef(l)->GetPrevTarget()) +#define GetEndIter(l) GetLinkListRef(l) +#define GetNextIter(it) (it = it->GetNextTarget()) +#define GetPrevIter(it) (it = it->GetPrevTarget()) + +template class LinkListIter { +private: + T *mPointer; + +public: + LinkListIter() {} + + LinkListIter(T *pNode) { + this->mPointer = pNode; + } + + T *operator->() const { + return this->mPointer; + } + + T &operator*() const { + return *this->mPointer; + } + + void operator++() { + this->mPointer = (T *) ((u8 *) this->mPointer + 4); + } + + void operator++(int) { + this->mPointer = this->mPointer->GetNextTarget(); + } + + void operator--(int) { + this->mPointer = mPointer->GetPrevTarget(); + } + + friend const bool operator==(LinkListIter &left, T *right) { + return left.mPointer == right; + } + + friend const bool operator!=(LinkListIter &left, T *right) { + return left.mPointer != right; + } + + friend const bool operator==(LinkListIter &left, T &right) { + return left.mPointer == &right; + } + + friend const bool operator!=(LinkListIter &left, T &right) { + return left.mPointer != &right; + } +}; + +template class LinkList : public LinkListImpl { +private: + /* 00 (base) */ + /* 08 */ + +public: + LinkList() {} + ~LinkList() {} + + LinkListNode *GetNextNode() { + return this->GetNext(); + } + + LinkListNode *GetPrevNode() { + return this->GetPrev(); + } + + T *GetNextTarget() { + return (T *) this->GetNextNode(); + } + + T *GetPrevTarget() { + return (T *) this->GetPrevNode(); + } + + T *GetRef() { + return (T *) this; + } + + void Detach() { + LinkListImpl::Detach(this); + } + + typedef LinkListIter Iterator; +}; diff --git a/include/MainGame/AdventureMode.hpp b/include/MainGame/AdventureMode.hpp index b13b8db8..51bf512c 100644 --- a/include/MainGame/AdventureMode.hpp +++ b/include/MainGame/AdventureMode.hpp @@ -115,10 +115,10 @@ public: void func_ov000_02066218(unk32 param1); }; -class AdventureModeManager_160_18 { +class AdventureModeManager_160_18 : public LinkList { public: /* 00 (vtable) */ - /* 04 */ + /* 04 (base) */ /* 00 */ virtual void vfunc_00(); /* 04 */ virtual void vfunc_04(); @@ -695,7 +695,8 @@ public: class AdventureModeManager_1A0 : public AdventureModeManager_174_Base { public: /* 00 (base) */ - /* 0C */ STRUCT_PAD(0x0C, 0xBC); + /* B8 */ unk32 mUnk_B8; + /* BC */ AdventureModeManager_1A0(GameModeManagerBase_104 *param1); // overlay 62 @@ -712,7 +713,8 @@ public: class AdventureModeManager_1A4 : public AdventureModeManager_174_Base { public: /* 00 (base) */ - /* 0C */ STRUCT_PAD(0x0C, 0xBC); + /* B8 */ unk32 mUnk_B8; + /* BC */ AdventureModeManager_1A4(GameModeManagerBase_104 *param1); // overlay 62 @@ -762,14 +764,6 @@ public: /* 34 */ STRUCT_PAD(0x34, 0x50); /* 50 */ - GameModeLinkListNode *GetNode() { - GameModeLinkListNode *node = (GameModeLinkListNode *) this; - if (node != NULL) { - node = (GameModeLinkListNode *) ((u32 *) node + 1); - } - return node; - } - AdventureModeManager_1B0(); // overlay 31 void func_ov031_0210fad0(); @@ -957,7 +951,7 @@ public: /* 20 */ virtual void vfunc_20() override; /* 24 */ virtual void vfunc_24() override; /* 28 */ virtual void vfunc_28(unk8 *param1) override; - /* 2C */ virtual void vfunc_2C(unk8 *param1) override; + /* 2C */ virtual void DrawUI(unk8 *param1) override; /* 34 */ virtual void vfunc_34(unk32 param1, unk32 param2) override; /* 38 */ virtual void vfunc_38(u32 param1, u8 param2, unk16 param3, unk16 param4) override; @@ -991,7 +985,7 @@ public: bool func_ov024_020c6940(unk32 param1, unk32 param2); unk32 func_ov024_020c69d0(); unk32 func_ov024_020c6a20(); - void func_ov024_020c6a48(unk32 param1, unk32 param2); + void func_ov024_020c6a48(unk32 param1, bool param2); bool func_ov024_020c6af4(unk32 param1); void func_ov024_020c6b8c(); void func_ov024_020c6c60(); diff --git a/include/MainGame/CargoManager.hpp b/include/MainGame/CargoManager.hpp index f3af851c..778b1152 100644 --- a/include/MainGame/CargoManager.hpp +++ b/include/MainGame/CargoManager.hpp @@ -2,6 +2,7 @@ #include "types.h" +typedef s32 CargoType; enum CargoType_ { CargoType_None = -1, CargoType_MegaIce, @@ -16,7 +17,7 @@ enum CargoType_ { class Cargo { public: - /* 00 */ unk32 mType; + /* 00 */ CargoType mType; /* 04 */ unk32 mAmount; /* 08 */ u32 mDecayTimer; /* 0C */ @@ -36,6 +37,18 @@ public: this->mAmount = 0; this->mDecayTimer = 0; } + + CargoType GetType() { + return this->mType; + } + + bool IsTypeSet() { + return this->mType != CargoType_None; + } + + unk32 GetAmount() { + return this->mAmount; + } }; class CargoManager : public AutoInstance { @@ -46,6 +59,10 @@ public: /* 1C */ bool mUnk_1C; /* 20 */ + Cargo *GetCargo() { + return &this->mCargo; + } + // overlay 1 CargoManager(); ~CargoManager(); diff --git a/include/MainGame/UnkAdventureModeSystem1.hpp b/include/MainGame/UnkAdventureModeSystem1.hpp index df9a70f0..c231edf1 100644 --- a/include/MainGame/UnkAdventureModeSystem1.hpp +++ b/include/MainGame/UnkAdventureModeSystem1.hpp @@ -3,19 +3,27 @@ #include "Unknown/Common.hpp" #include "types.h" +#include + +struct UnkAdventureModeSystem1_48 { + /* 00 */ STRUCT_PAD(0x00, 0x2A); + /* 2A */ bool mUnk_2A; +}; + class UnkAdventureModeSystem1 { public: /* 00 (vtable) */ /* 04 */ UnkSystem2_UnkSubSystem9 mUnk_04; - /* 48 */ + /* 48 */ UnkAdventureModeSystem1_48 *mUnk_48; + /* 4A */ - UnkAdventureModeSystem1(unk16 *param1, unk16 *param2, unk32 param3); - UnkAdventureModeSystem1(unk32 param3); + UnkAdventureModeSystem1(Vec2s *param1, Vec2s *param2, bool param3); + UnkAdventureModeSystem1(bool param3); // data_ov024_020d7f7c - /* 00 */ virtual void vfunc_00() = 0; + /* 00 */ virtual unk32 vfunc_00(unk32 param1) = 0; - void func_ov024_020cab58(); - void func_ov024_020caba4(); - void func_ov024_020cad7c(); + void func_ov024_020cab58(Vec2s *param1, Vec2s *param2); + bool func_ov024_020caba4(unk32 param1); + bool func_ov024_020cad7c(unk32 param1); }; diff --git a/include/Message/BMG.hpp b/include/Message/BMG.hpp index 3544e9d7..65249557 100644 --- a/include/Message/BMG.hpp +++ b/include/Message/BMG.hpp @@ -12,6 +12,7 @@ ((u32) (pGroups)->entries[(flags) >> 0x10].pDAT1 + (BMG_GET_MSG_OFFSET((pGroups), (flags)) & ~1)) #define BMG_ID(group, infIndex) (((group) << 16) | (infIndex)) +#define BMG_ID_NONE 0 enum BMGGroup_ { BMGGroup_regular = 0x00, @@ -89,8 +90,8 @@ struct EntryINF1 { /* 00 */ u32 offset; // relative to the end of the DAT1 header /* 04 */ u8 mUnk_04; // flags/attributes? (+0x04 to +0x06) /* 05 */ u8 mUnk_05; - /* 06 */ u8 mUnk_06; - /* 07 */ u8 mUnk_07; + /* 06 */ u8 fontIndex; // see FontIndex enum + /* 07 */ s8 mUnk_07; /* 08 */ }; diff --git a/include/Message/BMGEnums.hpp b/include/Message/BMGEnums.hpp index a8acc561..1b395566 100644 --- a/include/Message/BMGEnums.hpp +++ b/include/Message/BMGEnums.hpp @@ -188,6 +188,38 @@ enum MsgIndex_ { MsgIndex_ValleySanctuary, MsgIndex_DuneSanctuary, MsgIndex_BridgeWorkersHouse, + +#if IS_JP + //! TODO: add the indices from the other files so we can improve this + // BMGGroup_dungeon + MsgIndex_BossStagnox = 0x90, + MsgIndex_BossFraaz, + MsgIndex_BossCactops, + MsgIndex_BossVulcano, + MsgIndex_BossCapbone, + + // BMGGroup_train_extra + MsgIndex_BossGhostTrain = 0x1A, + + // BMGGroup_dungeon + MsgIndex_BossStaven = 0x95, + MsgIndex_BossMalladus1, + MsgIndex_BossMalladus2, + + MsgIndex_GoronTargetRange = 0xB2, + MsgIndex_SnowdriftStation, + MsgIndex_LostAtSeaStation, + MsgIndex_DisorientationStation, + MsgIndex_EndsOfTheEarthStation, + MsgIndex_DarkOreMine, + MsgIndex_RabbitHaven, + MsgIndex_SlipperyStation, + MsgIndex_ThreeQuestionMarks, + MsgIndex_Floor1, + MsgIndex_Floor2, + MsgIndex_Floor3, + MsgIndex_ZeldaPhantomTooFar, +#else MsgIndex_BossStagnox, MsgIndex_BossFraaz, MsgIndex_BossCactops, @@ -202,7 +234,7 @@ enum MsgIndex_ { MsgIndex_LostAtSeaStation, MsgIndex_DisorientationStation, MsgIndex_EndsOfTheEarthStation, - MsgIndex_DarOreMine, + MsgIndex_DarkOreMine, MsgIndex_RabbitHaven, MsgIndex_SlipperyStation, MsgIndex_ThreeQuestionMarks, @@ -210,4 +242,5 @@ enum MsgIndex_ { MsgIndex_Floor2, MsgIndex_Floor3, MsgIndex_ZeldaPhantomTooFar, +#endif }; diff --git a/include/TitleScreen/TitleScreen.hpp b/include/TitleScreen/TitleScreen.hpp index 38ff08a2..fcda6eb6 100644 --- a/include/TitleScreen/TitleScreen.hpp +++ b/include/TitleScreen/TitleScreen.hpp @@ -24,7 +24,7 @@ enum TitleScreenState_ { TitleScreenState_Max = 6 }; -class TitleScreen_Sub2 : public GameModeLinkListNode { +class TitleScreen_Sub2 : public LinkList { public: /* 00 (vtable) */ /* 0C */ unk32 mUnk_0C; @@ -37,10 +37,6 @@ public: mUnk_0C(0), mUnk_10(false) {} - GameModeLinkListNode *GetNode() { - return this; - } - // data_ov025_020c5b24 vtable /* 00 */ virtual void vfunc_00(); }; @@ -92,14 +88,6 @@ public: /* 344 */ unk32 mUnk_344; /* 348 */ - GameModeLinkListNode *GetNode() { - GameModeLinkListNode *node = (GameModeLinkListNode *) this; - if (this != NULL) { - node = (GameModeLinkListNode *) ((u32 *) node + 1); - } - return node; - } - TitleScreen(); void func_ov025_020c4e54(); @@ -148,7 +136,7 @@ public: /* 18 */ virtual void vfunc_18() override; /* 24 */ virtual void vfunc_24() override; /* 28 */ virtual void vfunc_28(unk8 *param1) override; - /* 2C */ virtual void vfunc_2C(unk8 *param1) override; + /* 2C */ virtual void DrawUI(unk8 *param1) override; /* 38 */ virtual void vfunc_38(u32 param1, u8 param2, unk16 param3, unk16 param4) override; static TitleScreenManager *Create(unk32 param1); diff --git a/include/Unknown/Common.hpp b/include/Unknown/Common.hpp index 83155b91..b0ff7e71 100644 --- a/include/Unknown/Common.hpp +++ b/include/Unknown/Common.hpp @@ -3,12 +3,15 @@ #include "Game/GameModeManager.hpp" #include "System/SysNew.hpp" #include "Unknown/UnkFileSystem.hpp" +#include "Unknown/UnkMemFuncs.h" #include "global.h" #include "math.hpp" #include "profile.hpp" #include "types.h" + #include +class UnkDataStruct2; extern "C" void func_0201e8d4(void *param1, void *param2); //! TODO: make this work with templates? @@ -120,6 +123,35 @@ public: /* 1C */ unk32 mUnk_1C; /* 20 */ + void UnkOperations1() { + this->mUnk_0A = true; + this->mUnk_0B = false; + this->mUnk_0C = false; + + if (this->mUnk_04 == this->mUnk_06) { + this->mUnk_0A = false; + this->mUnk_0C = true; + } + } + + void UnkOperations2() { + this->mUnk_0A = false; + this->mUnk_0B = true; + this->mUnk_0C = false; + + if (this->mUnk_04 == 0) { + this->mUnk_0B = false; + this->mUnk_0C = true; + } + } + + void UnkOperations3() { + this->mUnk_04 = 0; + this->mUnk_0A = false; + this->mUnk_0B = false; + this->mUnk_0C = true; + } + UnkSubStruct1_Base(); // data_02044330 vtable @@ -181,14 +213,25 @@ public: struct UnkStruct_ov019_020d24c8_28_258_00 { /* 00 */ void *mUnk_00; /* 04 */ unk32 mUnk_04; + /* 08 */ + + UnkStruct_ov019_020d24c8_28_258_00() { + this->mUnk_00 = NULL; + this->mUnk_04 = 0; + } - UnkStruct_ov019_020d24c8_28_258_00() {} UnkStruct_ov019_020d24c8_28_258_00(void *param1, unk32 param2) : mUnk_00(param1), mUnk_04(param2) {} void func_ov000_0205fc20(unk32 param1, unk32 param2, void *param3, void *param4); }; +struct UnkStruct_ov019_020d24c8_28_258_00_Derived1 : public UnkStruct_ov019_020d24c8_28_258_00 { + /* 00 (base) */ + /* 08 */ unk32 mUnk_08; + /* 0C */ +}; + class UnkStruct_ov019_020d24c8_28_258 : public UnkStruct_ov019_020d24c8_28_258_00 { public: /* 08 */ unk16 mUnk_08; @@ -196,26 +239,22 @@ public: Vec2s mPos; Vec2us mPosU; }; - /* 0E */ s16 mUnk_0E; - /* 10 */ unk16 mUnk_10; + /* 0E */ Vec2s mUnk_0E; /* 12 */ unk16 mUnk_12; /* 14 */ unk16 mUnk_14; /* 16 */ unk16 mUnk_16; /* 18 */ UnkStruct_ov019_020d24c8_28_258() { - this->mUnk_00 = NULL; - this->mUnk_04 = 0; - this->mPos.x = 0; - this->mPos.y = 0; + this->mPos.x = 0; + this->mPos.y = 0; }; - UnkStruct_ov019_020d24c8_28_258(unk32 param1, unk32 param2) : - UnkStruct_ov019_020d24c8_28_258_00(NULL, 0) { + UnkStruct_ov019_020d24c8_28_258(s16 param1, unk32 param2) { this->UnknownAction(param1, param2); } - void UnknownAction(unk32 param1, unk32 param2) { + void UnknownAction(s16 param1, unk32 param2) { this->func_ov000_0205fc20(param1, param2, &this->mPos, &this->mUnk_0E); this->mUnk_12 = param1; this->mUnk_14 = param2; @@ -223,9 +262,15 @@ public: }; #define BTN_ID_NONE -1 + +#define BTN_ID_UNK_00 0x00 + #define BTN_ID_ITEM 0x03 #define BTN_ID_RETURN 0x05 +#define BTN_ID_UNK_08 0x08 +#define BTN_ID_UNK_0C 0x0C + #define BTN_ID_TRAIN_ROUTE_GO 0x0E #define BTN_ID_TRAIN_ROUTE_CANCEL 0x0F #define BTN_ID_TRAIN_ROUTE_QUIT 0x10 @@ -256,6 +301,8 @@ public: #define BTN_ID_MENU_PAN_FLUTE 0x3C #define BTN_ID_MENU_CLOSE_TOP 0x3D +#define BTN_ID_FILE_SELECT_UNK_0F 0x0F +#define BTN_ID_FILE_SELECT_UNK_14 0x14 #define BTN_ID_FILE_SELECT_FILE_1 0x40 #define BTN_ID_FILE_SELECT_FILE_2 0x41 #define BTN_ID_FILE_SELECT_42 0x42 // unused file 3 probably @@ -413,7 +460,7 @@ public: #define BTN_ID_BATTLE_MENU_JOIN_GROUP 0xBB #define BTN_ID_BATTLE_MENU_PLAYER_LIST 0xBD -class UnkSystem2_UnkSubSystem1_Base : public GameModeLinkList { +class UnkSystem2_UnkSubSystem1_Base : public LinkList { public: /* 00 (vtable) */ /* 0C */ void *mUnk_0C; @@ -538,25 +585,33 @@ public: class UnkSystem2_UnkSubSystem5_Base_10 { public: /* 000 (vtable) */ - /* 014 */ void *mUnk_014; - /* 018 */ unk32 mUnk_018; - /* 01C */ void *mUnk_01C; - /* 020 */ unk32 mUnk_020; - /* 024 */ unk32 mUnk_024; - /* 028 */ unk8 mUnk_028; - /* 029 */ unk8 mUnk_029; - /* 02A */ unk8 mUnk_02A; - /* 02B */ unk8 mUnk_02B; - /* 02C */ unk32 mUnk_02C; - /* 030 */ unk32 mUnk_030; - /* 034 */ unk32 mUnk_034; - /* 038 */ unk32 mUnk_038; - /* 03C */ unk32 mUnk_03C; - /* 040 */ unk32 mUnk_040; - /* 044 */ unk32 mUnk_044; - /* 048 */ unk32 mUnk_048; - /* 04C */ unk32 mUnk_04C; - /* 050 */ STRUCT_PAD(0x50, 0x130); // e0 + /* 014 */ void *mUnk_004; + /* 018 */ unk32 mUnk_008; + /* 01C */ void *mUnk_00C; + /* 020 */ unk32 mUnk_010; + /* 024 */ unk16 mUnk_014; + /* 026 */ u16 mUnk_016; + /* 028 */ unk8 mUnk_018; + /* 029 */ unk8 mUnk_019; + /* 02A */ unk8 mUnk_01A; + /* 02B */ unk8 mUnk_01B; + /* 02C */ unk32 mUnk_01C; + /* 030 */ unk32 mUnk_020; + /* 034 */ unk32 mUnk_024; + /* 038 */ unk32 mUnk_028; + /* 03C */ unk32 mUnk_02C; + /* 040 */ unk32 mUnk_030; + /* 044 */ unk32 mUnk_034; + /* 048 */ unk32 mUnk_038; + /* 04C */ unk32 mUnk_03C; + /* 050 */ unk32 mUnk_040; + /* 054 */ unk32 mUnk_044; + /* 058 */ unk32 mUnk_048; + /* 05C */ unk32 mUnk_04C; + /* 060 */ unk32 mUnk_050; + /* 064 */ unk32 mUnk_054; + /* 068 */ STRUCT_PAD(0x58, 0x130); + /* 130 */ UnkSystem2_UnkSubSystem5_Base_10(); @@ -565,7 +620,7 @@ public: /* 08 */ virtual void vfunc_08(); /* 0C */ virtual void vfunc_0C(); /* 10 */ virtual void vfunc_10(void *param1); - /* 14 */ virtual void vfunc_14(); + /* 14 */ virtual void vfunc_14(unk32 param1); /* 18 */ virtual void vfunc_18(); /* 1C */ virtual void vfunc_1C(); /* 20 */ virtual void vfunc_20(); @@ -580,10 +635,19 @@ public: /* 44 */ virtual void vfunc_44(); /* 48 */ virtual void vfunc_48(); /* 4C */ + + unk32 func_ov000_020691e0(void *param1); + void func_ov000_02068798(Vec2s *param1); + void func_ov000_02068798(void *, void *); }; +struct Font_UnkStruct1; struct UnkSystem2_UnkSubSystem11_Base_1C { - u8 pad[0x10]; + /* 00 */ unk32 mUnk_00; + /* 04 */ Font_UnkStruct1 *mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0C */ unk32 mUnk_0C; + /* 10 */ }; class UnkSystem2_UnkSubSystem11_Base { @@ -591,7 +655,9 @@ public: /* 00 (vtable) */ /* 04 */ Text_UnkStruct2 mUnk_04; /* 1C */ UnkSystem2_UnkSubSystem11_Base_1C mUnk_1C; // +0x24: space between characters, set from BMG INF1 entry - /* 2C */ + /* 2C */ s16 mUnk_2C; + /* 2E */ unk16 mUnk_2E; // pad? + /* 30 */ UnkSystem2_UnkSubSystem11_Base(); // func_ov000_02061ce0 @@ -600,23 +666,48 @@ public: /* 04 */ virtual void vfunc_04(); /* 08 */ virtual void vfunc_08(); /* 0C */ virtual void vfunc_0C(); + + void func_ov000_02061d38(); + void func_ov000_02061d88(); + unk32 func_ov000_02061da8(); + unk32 func_ov000_02061db8(); }; -class UnkSystem2_UnkSubSystem11 : public UnkSystem2_UnkSubSystem11_Base { +class UnkSystem2_UnkSubSystem11_Derived1 : public UnkSystem2_UnkSubSystem11_Base { public: /* 00 (base) */ - /* 2C */ STRUCT_PAD(0x2C, 0xE8); - /* E8 */ + /* 30 */ STRUCT_PAD(0x30, 0xC0); + /* C0 */ - UnkSystem2_UnkSubSystem11(); // func_ov000_02061f30 - ~UnkSystem2_UnkSubSystem11(); - void func_ov000_02061f60(); + UnkSystem2_UnkSubSystem11_Derived1(); // func_ov000_02061f30 + ~UnkSystem2_UnkSubSystem11_Derived1(); // data_ov000_020b1e9c vtable /* 00 */ virtual void vfunc_00() override; /* 04 */ virtual void vfunc_04() override; /* 08 */ virtual void vfunc_08() override; /* 0C */ virtual void vfunc_0C() override; + + void func_ov000_02061f8c(); + void func_ov000_02062144(); + void func_ov000_0206216c(Vec2s *param1, unk32 param2, unk32 param3); + void func_ov000_02062228(); + void func_ov000_02062838(void *param1); +}; + +class UnkSystem2_UnkSubSystem11_Derived2 : public UnkSystem2_UnkSubSystem11_Derived1 { +public: + /* 00 (base) */ + /* C0 */ STRUCT_PAD(0xC0, 0xE0); + /* E0 */ + + UnkSystem2_UnkSubSystem11_Derived2() {} + ~UnkSystem2_UnkSubSystem11_Derived2() {} + + // data_020443a8 (vtable) + + void func_ov000_020626e4(void *param1, bool param2, unk32 *param3, void *param4); + void func_ov000_020626e4(void *param1, bool param2, unk32 *param3, unk32 param4, unk32 param5, unk32 param6, unk32 param7); }; class UnkSystem2_UnkSubSystem5_Base { @@ -627,7 +718,6 @@ public: /* 00A */ unk16 mUnk_00A; // UnkSystem2_UnkSubSystem5()'s param2 /* 00C */ void *mUnk_00C; /* 010 */ UnkSystem2_UnkSubSystem5_Base_10 mUnk_010; - /* 130 */ STRUCT_PAD(0x130, 0x140); /* 140 */ unk16 mUnk_140; /* 142 */ unk16 mUnk_142; /* 144 */ unk16 mUnk_144; @@ -638,7 +728,7 @@ public: /* 14E */ unk8 mUnk_14E; // 0x546 /* 14F */ unk8 mUnk_14F; // 0x547 - UnkSystem2_UnkSubSystem5_Base(UnkSystem2_UnkSubSystem11 *param1, unk32 param2, unk32 param3); // func_0201f288 + UnkSystem2_UnkSubSystem5_Base(UnkSystem2_UnkSubSystem11_Derived2 *param1, unk32 param2, unk32 param3); // func_0201f288 ~UnkSystem2_UnkSubSystem5_Base(); /* 00 */ virtual void vfunc_00(); @@ -649,7 +739,9 @@ public: class UnkSystem2_UnkSubSystem5 : public UnkSystem2_UnkSubSystem5_Base { public: /* 000 (base) */ - /* 150 */ UnkSystem2_UnkSubSystem11 mUnk_150; + /* 150 */ UnkSystem2_UnkSubSystem11_Derived2 mUnk_150; + /* 230 */ unk32 mUnk_230; + /* 234 */ unk32 mUnk_234; /* 238 */ UnkSystem2_UnkSubSystem5(unk32 param1, unk32 param2); @@ -717,7 +809,7 @@ public: /* 0C */ //! TODO: conflict with UnkStruct_ov019_020d24c8_28_304 - void func_0201e874(unk32 param1, void *param2, void *param3, unk32 param4); + void func_0201e874(unk32 buttonID, void *param2, void *param3, unk32 param4); }; class UnkSystem2_UnkSubSystem8 : public UnkSystem2_UnkSubSystem8_Base { @@ -834,15 +926,16 @@ public: this->func_ov000_0206082c(param1, param2); } - void func_ov000_0206082c(unk32 param1, unk32 param2); + void func_ov000_0206082c(s16 param1, unk32 param2); void func_ov000_02060950(); void func_ov000_020609b0(); void func_ov000_020609c4(void); bool func_ov000_02060a98(unk32 param1); void func_ov000_02060ad0(); - unk32 func_ov000_02060af8(void); + bool func_ov000_02060af8(void); void func_ov000_02060b50(); void func_ov000_02060b64(void); + void func_ov000_02060bac(); unk32 func_ov000_02060c28(void); void func_ov000_02060bd8(unk32 param1); }; @@ -1133,3 +1226,60 @@ public: bool func_ov024_020c510c(); void func_ov024_020c5120(bool param1); }; + +struct UnkDataStruct1 { + /* 00 */ void *mUnk_00; + /* 04 */ u8 mUnk_04; + /* 05 */ unk8 mUnk_05; + /* 06 */ u16 mUnk_06; + /* 08 */ + + UnkDataStruct1() {} + UnkDataStruct1(u16 param1) { + this->Init(); + this->mUnk_06 |= param1; + } + + UnkDataStruct1(void *param1, u16 param2) { + this->Init(); + this->mUnk_06 |= param2; + this->mUnk_00 = param1; + } + + void Init() { + this->mUnk_06 = 0x00; + MI_CpuFill32(0, this, sizeof(UnkDataStruct1)); + this->mUnk_05 = -1; + } + + void SetUnk04(u8 param1) { + this->mUnk_04 = param1; + } +}; + +struct UnkDataStruct2 { + /* 00 */ void *unk_00; + /* 04 */ + + UnkDataStruct2(unk32 param1); + ~UnkDataStruct2(); +}; + +struct UnkDataStruct3 { + /* 00 */ UnkDataStruct2 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ STRUCT_PAD(0x08, 0xCC); + /* CC */ unk32 mUnk_CC; + /* D0 */ unk32 mUnk_D0; + /* D4 */ + + UnkDataStruct3(unk32 param1) : + mUnk_00(param1) {} +}; + +struct InputInformations { + void *unk_00; + void *unk_04; + void *unk_08; + void *unk_0C; +}; diff --git a/include/Unknown/UnkStruct_0204a060.hpp b/include/Unknown/UnkStruct_0204a060.hpp index 87bb0eb7..8a23883c 100644 --- a/include/Unknown/UnkStruct_0204a060.hpp +++ b/include/Unknown/UnkStruct_0204a060.hpp @@ -2,6 +2,7 @@ #include "Game/GameMode.hpp" #include "Game/GameModeManager.hpp" +#include "LinkList.hpp" #include "System/SysNew.hpp" #include "Unknown/Common.hpp" #include "Unknown/UnkStruct_ov000_02067bc4.hpp" @@ -9,10 +10,10 @@ class GameModeFileSelect; -class UnkStruct_0204a060_Base3 : public SysObject { +class UnkStruct_0204a060_Base3 : public LinkList { public: /* 00 (vtable) */ - /* 04 */ GameModeLinkList mUnk_04; + /* 04 (base) */ /* 0C */ bool mUnk_0C; /* 0D */ unk8 mUnk_0D; /* 0E */ unk8 mUnk_0E; diff --git a/include/Unknown/UnkStruct_0204a110.hpp b/include/Unknown/UnkStruct_0204a110.hpp index c972476c..358b708e 100644 --- a/include/Unknown/UnkStruct_0204a110.hpp +++ b/include/Unknown/UnkStruct_0204a110.hpp @@ -60,6 +60,7 @@ public: UnkStruct_0204a110_Sub2(); void func_0201c890(unk32 param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5); + void func_0201ca28(unk32 param1); }; class UnkStruct_0204a110_Sub3_00 { @@ -131,12 +132,10 @@ public: void func_0201cf30(); }; -class UnkStruct_0204a110_Sub7_08 : public SysObject { +class UnkStruct_0204a110_Sub7_08 : public UnkSubStruct1_Base { public: /* 00 (vtable) */ - /* 04 */ STRUCT_PAD(0x04, 0x0A); - /* 0A */ bool mUnk_0A; - /* 0B */ STRUCT_PAD(0x0B, 0x30); + /* 0B */ STRUCT_PAD(0x20, 0x30); /* 30 */ UnkStruct_0204a110_Sub7_08(); @@ -147,14 +146,21 @@ public: /* 08 */ virtual void vfunc_08(); unk32 func_0201ec30(); + void func_0201ebf8(unk32 param1, unk32 param2, unk32 param3, unk32 param4); + + void Subprocess1_UnkValueSets() { + this->mUnk_10 = this->mUnk_18; + } + + void Subprocess2_UnkValueSets() { + this->mUnk_10 = this->mUnk_14; + } + + UnkSubStruct1_Methods; }; -struct UnkStruct_027e0120 { - /* 00 */ unk32 mUnk_00[4]; - /* 10 */ -}; - -extern UnkStruct_027e0120 data_027e0120; +//! TODO: actually a matrix +extern Vec4p data_027e0120; class UnkStruct_0204a110_Sub7 { public: @@ -164,7 +170,7 @@ public: /* 03 */ unk8 mUnk_03; /* 04 */ UnkSystem2_UnkSubSystem9 *mUnk_04; /* 08 */ UnkStruct_0204a110_Sub7_08 *mUnk_08; - /* 0C */ UnkStruct_027e0120 mUnk_0C; + /* 0C */ Vec4p mUnk_0C; // same type as data_027e0120? /* 1C */ UnkStruct_0204a110_Sub7(); @@ -195,6 +201,21 @@ public: void func_0201e698(void); }; +//! TODO: is this real? +struct UnkStruct_func_02019590 { + s16 a : 12; + s16 b : 12; + union { + unk32 c_raw; + struct { + u16 c_b1 : 8; + u16 c_b2 : 8; + }; + }; + u16 d : 8; + u16 e : 4; +}; + class UnkStruct_0204a110 { public: /* 000 */ unk32 mUnk_000; @@ -261,6 +282,7 @@ public: unk32 func_02019514(); void func_02019528(); bool func_02019548(); + UnkStruct_func_02019590 *func_02019590(unk16 param1, unk32 param2); void func_ov001_020bd514(unk32 param1, void *param2, unk32 param3, unk32 param4); void func_ov001_020bd58c(void); diff --git a/include/Unknown/UnkStruct_0204af1c.hpp b/include/Unknown/UnkStruct_0204af1c.hpp index 5e229fc1..c64f1e39 100644 --- a/include/Unknown/UnkStruct_0204af1c.hpp +++ b/include/Unknown/UnkStruct_0204af1c.hpp @@ -21,8 +21,9 @@ public: UnkStruct_0204af1c(); void func_0201a800(); - void func_0201aa44(void *param1, void *param2, unk32 param3, void *param4); + void func_0201aa44(UnkStruct_ov019_020d24c8_28_258_00 *param1, void *param2, unk32 param3, void *param4); void func_0201aad0(UnkSubStruct19 *param1, void *param2, unk32 param3, void *param4); + void func_0201aa8c(UnkStruct_ov019_020d24c8_28_258_00 *param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5); }; extern UnkStruct_0204af1c data_0204af1c; diff --git a/include/Unknown/UnkStruct_0204e5f8.hpp b/include/Unknown/UnkStruct_0204e5f8.hpp index f5e808ef..8592fad1 100644 --- a/include/Unknown/UnkStruct_0204e5f8.hpp +++ b/include/Unknown/UnkStruct_0204e5f8.hpp @@ -5,7 +5,7 @@ #include "global.h" #include "types.h" -class UnkStruct_0204e5f8_1C_Base : GameModeLinkListNode { +class UnkStruct_0204e5f8_1C_Base : public LinkList { public: /* 00 (base) */ /* 08 */ unk32 mUnk_08; diff --git a/include/Unknown/UnkStruct_020d8698.hpp b/include/Unknown/UnkStruct_020d8698.hpp index ae2d6a7d..c7be4e5d 100644 --- a/include/Unknown/UnkStruct_020d8698.hpp +++ b/include/Unknown/UnkStruct_020d8698.hpp @@ -2,30 +2,278 @@ #include "Game/GameModeManager.hpp" #include "Item/Item.hpp" +#include "Unknown/Common.hpp" +#include "iterator.hpp" #include "types.h" -class UnkStruct_020d8698 : public GameModeManagerBase_104 { +struct UnkStructIterator1 { + /* 00 */ unk32 mUnk_00; + + UnkStructIterator1() { + this->mUnk_00 = 0; + } + ~UnkStructIterator1() {} +}; + +typedef Iterator UnkIterator1; + +class UnkStruct_020d8698_1C { public: - void func_ov024_020cd094(); - void func_ov024_020cd150(); - void func_ov024_020cd368(bool param1, bool param2); - void func_ov024_020cd3d0(); - void func_ov024_020cd3e0(unk32 param1); - void func_ov024_020cd3f0(unk32 param1); - void func_ov024_020cd410(); - void func_ov024_020cd420(); - void func_ov024_020cd458(ItemFlag itemFlag, unk32 param2); - void func_ov024_020cd4e4(u16 param1); - bool func_ov024_020cd5c0(u16 param1); - void func_ov024_020cd3a4(); - void func_ov024_020cd400(); + /* 000 */ UnkIterator1 mUnk_000; + /* 008 */ u8 mUnk_008; + /* 009 */ u8 mUnk_009; + /* 00A */ u8 mUnk_00A; + /* 00B */ unk8 mUnk_00B; + /* 000 */ UnkStruct_ov019_020d24c8_28_258 mUnk_00C; + /* 018 */ UnkSubStruct19 mUnk_024; + /* 090 */ UnkSubStruct19 mUnk_09C; + /* 108 */ UnkSubStruct19 mUnk_114; + /* 180 */ UnkSubStruct19 mUnk_18C; + /* 1F8 */ UnkSubStruct19 mUnk_204; + /* 270 */ UnkSubStruct19 mUnk_27C; + /* 2E8 */ UnkSubStruct19 mUnk_2F4; + /* 360 */ UnkSubStruct19 mUnk_36C; + /* 3E4 */ UnkSubStruct19 mUnk_3E4[2]; + /* 4D4 */ u8 mUnk_4D4; + /* 4D5 */ u8 mUnk_4D5; + /* 4D6 */ unk8 mUnk_4D6; // pad? + /* 4D7 */ unk8 mUnk_4D7; // pad? + /* 4D8 */ + + unk32 GetIterValue(int index) { + return this->mUnk_000.Get(index).mUnk_00; + } + + void SetIterValue(u32 index, u32 value) { + this->mUnk_000.Get(index).mUnk_00 = value; + } + + UnkStruct_020d8698_1C(); + + void func_ov024_020cd768(); + void func_ov024_020cd774(); + void func_ov024_020cd9f0(); + void func_ov024_020cdaac(); + void func_ov024_020cdd3c(u8 param1, u8 param2); + void func_ov024_020cde54(u8 param1); + void func_ov024_020cdec8(); + void func_ov024_020cdfd8(); + u8 func_ov024_020ce218(); + u8 func_ov024_020ce260(); + u32 func_ov024_020ce2a8(); +}; + +class UnkStruct_020d8698_24_5C_Base { +public: + /* 00 */ Vec2s mUnk_00; + /* 04 */ unk16 mUnk_04; + /* 06 */ unk16 mUnk_06; + /* 08 */ UnkStruct_ov019_020d24c8_28_258_00_Derived1 mUnk_08[10]; + /* 80 */ unk32 mUnk_80; + /* 84 */ unk32 mUnk_84; + /* 88 */ unk32 mUnk_88; + /* 8C */ unk32 mUnk_8C; + /* 90 */ unk32 mUnk_90; + /* 94 */ unk32 mUnk_94; + /* 98 */ + + UnkStruct_020d8698_24_5C_Base(unk32 param1, const u16 *param2, u16 param3, unk32 param4); + + void func_ov000_02065884(); + void func_ov000_0206590c(u16 param1, unk32 param2); + void func_ov000_02065930(); + void func_ov000_02065988(u16 param1, const u16 *param2); + void func_ov000_020659d0(unk8 *param1, UnkDataStruct1 *param2); +}; + +class UnkStruct_020d8698_24_5C : public UnkStruct_020d8698_24_5C_Base { +public: + /* 00 (base) */ + /* 98 */ unk32 mUnk_98; + /* 98 */ unk32 mUnk_9C; + /* A0 */ + + UnkStruct_020d8698_24_5C(unk32 param1, const u16 *param2, u16 param3, unk32 param4); + + void func_ov000_02065b48(unk32 param1, unk32 param2); + void func_ov000_02065b8c(); +}; + +class UnkStruct_020d8698_24 { +public: + /* 000 */ UnkStruct_ov019_020d24c8_28_258 mUnk_000; + /* 018 */ UnkSystem2_UnkSubSystem9 mUnk_018; + /* 05C */ UnkStruct_020d8698_24_5C mUnk_05C; + /* 0FC */ Vec2s mUnk_0FC; + /* 100 */ unk32 mUnk_100; + /* 104 */ bool mUnk_104; + /* 105 */ bool mUnk_105; + /* 106 */ Vec2s mUnk_106; + /* 10C */ + + UnkStruct_020d8698_24(); + + void func_ov024_020ce518(); + void func_ov024_020ce570(); + void func_ov024_020ce5cc(); + void func_ov024_020ce88c(unk8 *param1); + void func_ov024_020ce990(bool param1, bool param2); + void func_ov024_020ce9ac(); +}; + +class UnkStruct_020d8698_2C_198 { +public: + /* 00 */ STRUCT_PAD(0x00, 0x80); + /* 80 */ +}; + +class UnkStruct_020d8698_2C_14C { +public: + /* 00 */ wchar_t mUnk_00[31]; // path to a ncgr file + /* 40 */ unk32 mUnk_40; + /* 44 */ unk32 mUnk_44; + /* 48 */ unk32 mUnk_48; + /* 4C */ + + UnkStruct_020d8698_2C_14C(); + + void func_ov000_02060c50(const wchar_t *path, UnkStruct_020d8698_2C_198 *param2, unk32 param3, + UnkStruct_ov019_020d24c8_28_258_00 *param4); // is param3 sizeof(param2)? + void func_ov000_02060c7c(unk32 param1); + void func_ov000_02060d7c(unk32 param1, u16 param2); + void func_ov000_02060db8(u16 param1); + void func_ov000_02060e3c(unk32 param1, const char *filename, wchar_t *param3); +}; + +class UnkStruct_020d8698_2C { +public: + /* 000 */ unk32 mUnk_000; + /* 004 */ UnkStruct_ov019_020d24c8_28_258 mUnk_004; + /* 01C */ UnkStruct_ov019_020d24c8_28_258 mUnk_01C; + /* 034 */ UnkStruct_ov019_020d24c8_28_258 mUnk_034; + /* 04C */ UnkSystem2_UnkSubSystem9 mUnk_04C; + /* 090 */ UnkStruct_020d8698_24_5C mUnk_090; + /* 130 */ Vec2s mUnk_130; + /* 134 */ Vec2s mUnk_134; + /* 138 */ Vec2s mUnk_138; + /* 13C */ unk32 mUnk_13C; + /* 140 */ bool mUnk_140; + /* 141 */ bool mUnk_141; + /* 142 */ bool mUnk_142; + /* 143 */ bool mUnk_143; + /* 144 */ unk16 mUnk_144; + /* 144 */ bool mUnk_146; + /* 148 */ unk16 mUnk_148; + /* 14A */ unk16 mUnk_14A; + /* 14C */ UnkStruct_020d8698_2C_14C mUnk_14C; + /* 198 */ UnkStruct_020d8698_2C_198 mUnk_198; + /* 218 */ Vec2s mUnk_218; + /* 21C */ + + UnkStruct_020d8698_2C(); + + void func_ov024_020ced54(); + void func_ov024_020ceda8(); + void func_ov024_020cee58(); + void func_ov024_020cee64(); + void func_ov024_020cee84(); + void func_ov024_020cef58(); + void func_ov024_020cf2b8(unk8 *param1); + void func_ov024_020cf494(bool param1); + void func_ov024_020cf4c4(); + void func_ov024_020cf514(); + void func_ov024_020cf53c(bool param1); + void func_ov024_020cf570(); + void func_ov024_020cf584(); + void func_ov024_020cf5a8(bool param1); +}; + +class UnkStruct_020d8698_34 { +public: + /* 00 */ UnkStruct_ov019_020d24c8_28_258 mUnk_00; + /* 18 */ UnkSubStruct19 mUnk_18; + /* 90 */ unk16 mUnk_90; + /* 92 */ unk16 mUnk_92; + /* 94 */ + + UnkStruct_020d8698_34(); + + void func_ov024_020cf698(); + void func_ov024_020cf6e4(); + void func_ov024_020cf724(); +}; + +class UnkStruct_020d8698_3C { +public: + /* 00 */ UnkStruct_ov019_020d24c8_28_258 mUnk_00; + /* 18 */ UnkStruct_ov019_020d24c8_28_258 mUnk_18; + /* 30 */ + + UnkStruct_020d8698_3C(); + + void func_ov024_020cf82c(); + void func_ov024_020cf888(); + void func_ov024_020cf88c(); +}; + +class UnkStruct_020d8698_44 : public LinkList { +public: + /* 008 */ STRUCT_PAD(0x0C, 0x18B); + /* 18B */ bool mUnk_18B; + /* 18C */ STRUCT_PAD(0x18C, 0x52C); + /* 52C */ + + UnkStruct_020d8698_44(); // overlay 31 + + /* 00 */ virtual ~UnkStruct_020d8698_44(); + /* 08 */ + + void func_ov031_0210eeb4(); + void func_ov031_0210f7e4(ItemFlag itemFlag, bool param2); + void func_ov031_0210f814(); +}; + +class UnkStruct_020d8698 : public GameModeManagerBase_104, AutoInstance { +public: + /* 000 (base) */ + /* 01C */ UnkStruct_020d8698_1C *mUnk_01C; + /* 020 */ bool mUnk_020; + /* 024 */ UnkStruct_020d8698_24 *mUnk_024; + /* 028 */ bool mUnk_028; + /* 02C */ UnkStruct_020d8698_2C *mUnk_02C; + /* 030 */ bool mUnk_030; + /* 034 */ UnkStruct_020d8698_34 *mUnk_034; + /* 038 */ bool mUnk_038; + /* 03C */ UnkStruct_020d8698_3C *mUnk_03C; + /* 040 */ bool mUnk_040; + /* 044 */ UnkStruct_020d8698_44 *mUnk_044; + /* 048 */ bool mUnk_048; + + UnkStruct_020d8698(); /* 00 */ virtual ~UnkStruct_020d8698(); - /* 08 */ virtual void vfunc_08(); - /* 0C */ virtual void vfunc_0C(); - /* 10 */ virtual void vfunc_10(); - /* 14 */ virtual void vfunc_14(); - /* 18 */ virtual void vfunc_18(); + /* 08 */ virtual void vfunc_08(Input *pButtons, TouchControl *pTouchControl); + /* 10 */ virtual void vfunc_10(unk8 *param1); + + void func_ov024_020cd094(); + void func_ov024_020cd150(); + void func_ov024_020cd348(u8 param1, u8 param2); + void func_ov024_020cd358(u8 param1); + void func_ov024_020cd368(bool param1, bool param2); + void func_ov024_020cd3a4(); + void func_ov024_020cd3d0(); + void func_ov024_020cd3e0(bool param1); + void func_ov024_020cd3f0(bool param1); + void func_ov024_020cd400(); + void func_ov024_020cd410(); + void func_ov024_020cd420(); + void func_ov024_020cd458(ItemFlag itemFlag, bool param2); + void func_ov024_020cd4a4(bool param1); + void func_ov024_020cd4e4(u16 param1, bool param2); + bool func_ov024_020cd5c0(u16 param1); + bool func_ov024_020cd604(); + + static UnkStruct_020d8698 *Create(); }; extern UnkStruct_020d8698 *data_ov024_020d8698; diff --git a/include/Unknown/UnkStruct_027e0954.hpp b/include/Unknown/UnkStruct_027e0954.hpp index 3675014e..fae490b4 100644 --- a/include/Unknown/UnkStruct_027e0954.hpp +++ b/include/Unknown/UnkStruct_027e0954.hpp @@ -11,7 +11,7 @@ public: /* 08 */ unk32 mUnk_08; /* 0C */ unk32 mUnk_0C; /* 10 */ unk32 mUnk_10; - /* 14 */ GameModeLinkListNode mUnk_14; + /* 14 */ LinkListImpl mUnk_14; UnkStruct_027e0954(); ~UnkStruct_027e0954(); diff --git a/include/Unknown/UnkStruct_027e09a4.hpp b/include/Unknown/UnkStruct_027e09a4.hpp index 443683c5..b74e9fb8 100644 --- a/include/Unknown/UnkStruct_027e09a4.hpp +++ b/include/Unknown/UnkStruct_027e09a4.hpp @@ -78,7 +78,7 @@ enum SceneIndex_ { /* 54 */ SceneIndex_f_bridge = 0x36, // Bridge Worker's House /* 55 */ SceneIndex_f_bridge2 = 0x37, // Trading Post /* 56 */ SceneIndex_f_forest3 = 0x38, // whittleton forest - /* 57 */ SceneIndex_f_water3 = 0x39, // papuchia south + /* 57 */ SceneIndex_f_water3 = 0x39, // papuchia south and lost at sea station /* 58 */ SceneIndex_f_ajito = 0x3A, // Pirate Hideout /* 59 */ SceneIndex_f_ajito2 = 0x3B, // same as above /* 60 */ SceneIndex_f_flame3 = 0x3C, // Goron Target Range @@ -147,11 +147,13 @@ enum SceneIndex_ { struct UnkStruct_func_01ffd400 { /* 00 */ STRUCT_PAD(0x00, 0x10); - /* 1B */ unk32 mUnk_10; - /* 1B */ unk32 mUnk_14; - /* 1B */ unk8 mUnk_18; - /* 1B */ unk8 mUnk_19; - /* 1B */ unk8 mUnk_1A; + /* 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; }; @@ -269,6 +271,16 @@ public: return false; } + bool UnkCheck2() const { + bool result = true; + + if (this->func_01ffd400()->mUnk_10 != 1 && this->func_01ffd400()->mUnk_10 != 3) { + result = false; + } + + return result; + } + SceneIndex CurrentSceneIndex() { return this->mUnk_00.mSceneIndex; } @@ -277,18 +289,30 @@ public: return this->mUnk_00.mSceneIndex <= SceneIndex_t_eviltrain3 && this->mUnk_00.mSceneIndex >= SceneIndex_t_eviltrain; } + bool IsDungeonTower() { + return this->mUnk_00.mSceneIndex == SceneIndex_d_main; + } + bool IsPirate() { return this->mUnk_00.mSceneIndex == SceneIndex_f_pirate; } + bool IsWater3() { + return this->mUnk_00.mSceneIndex == SceneIndex_f_water3; + } + + bool IsSnowdriftStation() { + return this->mUnk_00.mSceneIndex == SceneIndex_f_kakushi1; + } + bool IsPassenger() { return this->mUnk_00.mSceneIndex == SceneIndex_f_passenger; } ~UnkStruct_027e09a4(); - bool func_01ffd3d8(); - UnkStruct_func_01ffd400 *func_01ffd400(); + bool func_01ffd3d8(); // is on train? + UnkStruct_func_01ffd400 *func_01ffd400() const; unk8 func_ov000_02070bd0(unk32 csIndex, unk32 param2); UnkStruct_SceneChange1 *func_ov000_02070560(); @@ -302,7 +326,7 @@ public: unk16 *func_ov000_02070538(); bool func_ov000_02070a9c(UnkStruct_SceneChange1 *param1); bool func_ov000_02072154(UnkStruct_SceneChange1 *param1, unk32 param2); - void func_ov000_0207056c(); + bool func_ov000_0207056c(); void func_ov000_020705e8(SaveFile *param1, unk32 param2); void func_ov017_020bb994(void *param1); diff --git a/include/Unknown/UnkStruct_027e0cd8.hpp b/include/Unknown/UnkStruct_027e0cd8.hpp index 8658f0f8..34f53e3a 100644 --- a/include/Unknown/UnkStruct_027e0cd8.hpp +++ b/include/Unknown/UnkStruct_027e0cd8.hpp @@ -109,7 +109,10 @@ public: class UnkStruct_027e0cd8_04_0C { public: - /* 00 */ STRUCT_PAD(0x00, 0x50); + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ s16 mUnk_08; + /* 0C */ STRUCT_PAD(0x0C, 0x50); /* 50 */ UnkStruct_027e0cd8_04_0C(); @@ -144,7 +147,7 @@ public: void func_ov000_02081ecc(unk16 param1, unk32 param2); void func_ov000_02081eec(unk16 param1, unk32 param2, unk32 param3); bool func_ov000_02081f3c(unk16 param1, unk32 param2); - unk32 func_ov000_02081d5c(); + u32 func_ov000_02081d5c(); // returns current room index? bool func_ov000_02082124(); bool func_ov000_02081c28(); }; diff --git a/include/Unknown/UnkStruct_ov000_02067bc4.hpp b/include/Unknown/UnkStruct_ov000_02067bc4.hpp index 6a8931f0..94e06b46 100644 --- a/include/Unknown/UnkStruct_ov000_02067bc4.hpp +++ b/include/Unknown/UnkStruct_ov000_02067bc4.hpp @@ -26,14 +26,20 @@ class UnkStruct_ov000_02067bc4 { public: class UnkStruct1 { public: - unk16 mUnk_00; - unk16 mUnk_02; - unk32 mUnk_04; - unk32 mUnk_08; - unk8 mUnk_0C; - unk8 mUnk_0D; - unk8 mUnk_0E; - unk8 mUnk_0F; + union { + struct { + unk16 mUnk_00; + unk16 mUnk_02; + unk32 mUnk_04; + unk32 mUnk_08; + u8 mUnk_0C; + unk8 mUnk_0D; + unk8 mUnk_0E; + unk8 mUnk_0F; + }; + + u32 data[4]; + }; UnkStruct1(unk32 param1, unk32 param2) { mUnk_00 = 0; @@ -64,12 +70,14 @@ public: /* 000 (vtable) */ /* 004 */ unk32 mUnk_004; /* 008 */ UnkStruct_ov000_02067bc4_Sub2 *mUnk_008; - /* 00C */ STRUCT_PAD(0x0C, 0x160); + /* 00C */ STRUCT_PAD(0x0C, 0x28); + /* 028 */ UnkStruct1 mUnk_028; + /* 038 */ STRUCT_PAD(0x38, 0x160); /* 160 */ UnkStruct_ov000_02067bc4_Sub1 mUnk_160; /* 00 */ virtual unk32 vfunc_00(); /* 04 */ virtual unk32 vfunc_04(); - /* 08 */ virtual unk32 vfunc_08(); + /* 08 */ virtual bool vfunc_08(); void func_02021bec(unk16 param1); void func_02021c08(); @@ -99,6 +107,7 @@ public: UnkStruct_ov000_020b504c_Sub3(unk32 param1); void func_ov000_020676f8(const char *bmgFileName, unk32 param2); + EntryINF1 *func_ov000_02067a2c(u32 msgId); }; class UnkStruct_ov000_020b504c_Sub4_00 { @@ -145,7 +154,7 @@ public: void func_ov000_02067e60(u8 param1, unk32 param2); unk32 func_ov000_020682c0(unk32 param1); void func_ov000_02067f5c(unk32 param1); - unk32 func_ov000_02067f88(unk32 param1, unk32 param2); + bool func_ov000_02067f88(unk32 param1, unk32 param2); UnkStruct_ov000_020b504c_Sub4_00 *func_ov000_02067bf0(); void func_ov000_02067b20(); void func_ov000_02068068(unk32 param1); @@ -165,3 +174,9 @@ public: // gMessageManager? extern UnkStruct_ov000_020b504c data_ov000_020b504c; + +struct UnkMsgDataStruct1 { + unk32 mUnk_00; + + void func_ov000_02067a60(void *, int); +}; diff --git a/include/Unknown/UnkStruct_ov000_020b4f84.hpp b/include/Unknown/UnkStruct_ov000_020b4f84.hpp index 211c1480..944d6cb8 100644 --- a/include/Unknown/UnkStruct_ov000_020b4f84.hpp +++ b/include/Unknown/UnkStruct_ov000_020b4f84.hpp @@ -5,7 +5,7 @@ #include "types.h" #include -enum { +enum FontIndex_ { FontIndex_DSZ2_msg = 0, FontIndex_LC_Font_s = 1, // unused? FontIndex_DSZ2_endL = 2, @@ -16,9 +16,9 @@ enum { }; // FontEntry? -class UnkStruct_ov000_020b4f84_00 : public UnkFileSystem5 { +class UnkStruct_ov000_020b4f84_00 { public: - /* 00 (base) */ + /* 00 */ UnkFileSystem5 mUnk_00; /* 14 */ Font_UnkStruct1 mUnk_14; /* 1C */ unk16 mUnk_1C; /* 1E */ unk16 mUnk_1E; diff --git a/include/Unknown/UnkStruct_ov024_020d8694.hpp b/include/Unknown/UnkStruct_ov024_020d8694.hpp index 5028f331..56552a58 100644 --- a/include/Unknown/UnkStruct_ov024_020d8694.hpp +++ b/include/Unknown/UnkStruct_ov024_020d8694.hpp @@ -9,43 +9,69 @@ #include +// Title Card Scene Message Index (see sBMGSceneMap) +typedef s32 TC_SceneMsgIdx; +enum TC_SceneMsgIdx_ { + /* -1 */ TC_SceneMsgIdx_None = -1, + /* 0 */ TC_SceneMsgIdx_ForestLand, + /* 1 */ TC_SceneMsgIdx_SnowLand, + /* 2 */ TC_SceneMsgIdx_OceanLand, + /* 3 */ TC_SceneMsgIdx_FireLand, + /* 4 */ TC_SceneMsgIdx_TowerOfSpirits, + /* 5 */ TC_SceneMsgIdx_TunnelToTheTower, + /* 6 */ TC_SceneMsgIdx_WoodedTemple, + /* 7 */ TC_SceneMsgIdx_BlizzardTemple, + /* 8 */ TC_SceneMsgIdx_MarineTemple, + /* 9 */ TC_SceneMsgIdx_MountainTemple, + /* 10 */ TC_SceneMsgIdx_DesertTemple, + /* 11 */ TC_SceneMsgIdx_PirateHideout, + /* 12 */ TC_SceneMsgIdx_HyruleCastle, + /* 13 */ TC_SceneMsgIdx_CastleTown, + /* 14 */ TC_SceneMsgIdx_Mayscore, + /* 15 */ TC_SceneMsgIdx_AnoukiVillage, + /* 16 */ TC_SceneMsgIdx_PapuziaVillage, + /* 17 */ TC_SceneMsgIdx_GoronVillage, + /* 18 */ TC_SceneMsgIdx_TradingPost, + /* 19 */ TC_SceneMsgIdx_IcySpring, + /* 20 */ TC_SceneMsgIdx_OutsetVillage, + /* 21 */ TC_SceneMsgIdx_WoodlandSanctuary, + /* 22 */ TC_SceneMsgIdx_SnowfallSanctuary, + /* 23 */ TC_SceneMsgIdx_IslandSanctuary, + /* 24 */ TC_SceneMsgIdx_ValleySanctuary, + /* 25 */ TC_SceneMsgIdx_DuneSanctuary, + /* 26 */ TC_SceneMsgIdx_BridgeWorkersHouse, + /* 27 */ TC_SceneMsgIdx_BossStagnox, + /* 28 */ TC_SceneMsgIdx_BossFraaz, + /* 29 */ TC_SceneMsgIdx_BossCactops, + /* 30 */ TC_SceneMsgIdx_BossVulcano, + /* 31 */ TC_SceneMsgIdx_BossCapbone, + /* 32 */ TC_SceneMsgIdx_BossGhostTrain, + /* 33 */ TC_SceneMsgIdx_BossStaven, + /* 34 */ TC_SceneMsgIdx_BossMalladus1, + /* 35 */ TC_SceneMsgIdx_BossMalladus2, + /* 36 */ TC_SceneMsgIdx_GoronTargetRange, + /* 37 */ TC_SceneMsgIdx_SnowdriftStation, + /* 38 */ TC_SceneMsgIdx_LostAtSeaStation, + /* 39 */ TC_SceneMsgIdx_DisorientationStation, + /* 40 */ TC_SceneMsgIdx_EndsOfTheEarthStation, + /* 41 */ TC_SceneMsgIdx_DarkOreMine, + /* 42 */ TC_SceneMsgIdx_RabbitHaven, + /* 43 */ TC_SceneMsgIdx_SlipperyStation, +}; + class UnkTitleCardSystem1 { public: /* 000 (vtable) */ /* 004 */ unk16 mUnk_004; /* 006 */ unk16 mUnk_006; // pad? - /* 008 */ unk32 mUnk_008; - /* 00C */ unk32 mUnk_00C; + /* 008 */ UnkSystem2_UnkSubSystem11_Derived2 *mUnk_008; + /* 00C */ UnkSystem2_UnkSubSystem5_Base_10 *mUnk_00C; /* 010 */ unk32 mUnk_010; /* 014 */ GameModeManagerBase_004 *mUnk_014; - /* 018 */ unk32 mUnk_018; - /* 01C */ unk32 mUnk_01C; - /* 020 */ unk16 mUnk_020; - /* 022 */ unk16 mUnk_022; - /* 024 */ unk16 mUnk_024; - /* 026 */ unk16 mUnk_026; - /* 028 */ unk32 mUnk_028; - /* 02C */ unk32 mUnk_02C; - /* 030 */ unk16 mUnk_030; - /* 034 */ unk16 mUnk_034; - /* 036 */ unk16 mUnk_036; - /* 038 */ unk16 mUnk_038; - /* 03A */ unk16 mUnk_03A; - /* 03C */ unk16 mUnk_03C; - /* 03E */ unk16 mUnk_03E; - /* 040 */ unk32 mUnk_040; - /* 044 */ unk32 mUnk_044; - /* 048 */ unk16 mUnk_048; - /* 04A */ unk16 mUnk_04A; - /* 04C */ unk16 mUnk_04C; - /* 04E */ unk16 mUnk_04E; - /* 050 */ unk16 mUnk_050; - /* 052 */ unk16 mUnk_052; - /* 054 */ unk16 mUnk_054; - /* 056 */ unk16 mUnk_056; - /* 058 */ unk32 mUnk_058; - /* 05C */ unk32 mUnk_05C; - /* 060 */ unk32 mUnk_060; + /* 018 */ UnkStruct_ov019_020d24c8_28_258 mUnk_018; + /* 030 */ UnkStruct_ov019_020d24c8_28_258 mUnk_030; + /* 048 */ UnkStruct_ov019_020d24c8_28_258 mUnk_048; + /* 060 */ Vec2s mUnk_060; /* 064 */ UnkSystem2_UnkSubSystem9 mUnk_064; /* 0A8 */ UnkSystem2_UnkSubSystem9 mUnk_0A8; /* 0EC */ UnkSystem2_UnkSubSystem9 mUnk_0EC; @@ -60,21 +86,29 @@ public: // data_ov024_020d7fd0 /* 00 */ virtual void vfunc_00(); - /* 04 */ virtual void vfunc_04(); - /* 08 */ virtual void vfunc_08(); + /* 04 */ virtual void vfunc_04(unk8 *param1); + /* 08 */ virtual unk32 vfunc_08(); /* 0C */ virtual void vfunc_0C(); /* 10 */ virtual void vfunc_10(); - /* 14 */ virtual void vfunc_14(); - /* 18 */ virtual void vfunc_18(); + /* 14 */ virtual bool vfunc_14(); + /* 18 */ virtual unk32 vfunc_18(); /* 1C */ + + void func_ov024_020cb274(UnkSystem2_UnkSubSystem11_Derived2 *param1, UnkSystem2_UnkSubSystem5_Base_10 *param2); + void func_ov024_020cb280(); + void func_ov024_020cb284(unk32 param1, unk32 param2); + void func_ov024_020cb490(UnkDataStruct2 *param1, unk32 *param2); + void func_ov024_020cb490(UnkDataStruct2 *param1, unk32 *param2, void *); + void func_ov024_020cb5bc(); + void func_ov024_020cb654(unk8 *param1, UnkDataStruct1 *param2); }; class UnkTitleCardSystem1_Derived1 : public UnkTitleCardSystem1 { public: /* 000 (base) */ /* 138 */ unk32 mUnk_138; - /* 13C */ unk16 mUnk_13C; - /* 13E */ unk16 mUnk_13E; + /* 13C */ u16 mUnk_13C; + /* 13E */ u16 mUnk_13E; /* 140 */ bool mUnk_140; /* 141 */ unk8 mUnk_141; // pad? /* 142 */ unk8 mUnk_142; // pad? @@ -84,12 +118,20 @@ public: UnkTitleCardSystem1_Derived1(GameModeManagerBase_004 *param1); // data_ov024_020d8044 - /* 08 */ virtual void vfunc_08() override; + /* 08 */ virtual unk32 vfunc_08() override; /* 0C */ virtual void vfunc_0C() override; /* 10 */ virtual void vfunc_10() override; - /* 18 */ virtual void vfunc_18() override; - /* 1C */ virtual void vfunc_1C(); + /* 18 */ virtual unk32 vfunc_18() override; + /* 1C */ virtual void vfunc_1C(u32 msgId, unk32 param2, bool param3); /* 20 */ + + void func_ov024_020cbe94(unk32 param1); + void func_ov024_020cbeb8(); + void func_ov024_020cbf74(unk32 param1); + void func_ov024_020cbf98(); + void func_ov024_020cc05c(u32 msgId); + void func_ov024_020cc088(bool param1); + bool func_ov024_020cc0b4(); }; class UnkStruct_ov024_020d8694_01C : public UnkTitleCardSystem1_Derived1 { @@ -106,7 +148,7 @@ public: // data_ov024_020d7ff4 /* 00 */ virtual void vfunc_00() override; - /* 1C */ virtual void vfunc_1C() override; + /* 1C */ virtual void vfunc_1C(u32 msgId, unk32 param2, bool param3) override; }; class UnkStruct_ov024_020d8694_188 : public UnkTitleCardSystem1_Derived1 { @@ -119,9 +161,9 @@ public: // data_ov024_020d801c /* 00 */ virtual void vfunc_00() override; - /* 04 */ virtual void vfunc_04() override; - /* 14 */ virtual void vfunc_14() override; - /* 1C */ virtual void vfunc_1C() override; + /* 04 */ virtual void vfunc_04(unk8 *param1) override; + /* 14 */ virtual bool vfunc_14() override; + /* 1C */ virtual void vfunc_1C(u32 msgId, unk32 param2, bool param3) override; }; class UnkStruct_ov024_020d8694_2FC : public UnkTitleCardSystem1 { @@ -133,17 +175,22 @@ public: // data_ov024_020d7fac /* 00 */ virtual void vfunc_00() override; - /* 08 */ virtual void vfunc_08() override; + /* 08 */ virtual unk32 vfunc_08() override; /* 0C */ virtual void vfunc_0C() override; /* 10 */ virtual void vfunc_10() override; + + void func_ov024_020ccb10(unk32 param1, Vec2s *param2, Vec2s *param3); }; -class UnkStruct_ov024_020d8694 : public AutoInstance, public GameModeManagerBase_104 { +class UnkStruct_ov024_020d8694 : public GameModeManagerBase_104, public AutoInstance { public: /* 000 (vtable) */ /* 01C */ UnkStruct_ov024_020d8694_01C mUnk_01C; /* 188 */ UnkStruct_ov024_020d8694_188 mUnk_188; /* 2FC */ UnkStruct_ov024_020d8694_2FC mUnk_2FC; + /* 434 */ UnkSystem2_UnkSubSystem11_Derived2 *mUnk_434; + /* 438 */ UnkSystem2_UnkSubSystem5_Base_10 *mUnk_438; + /* 43C */ GameModeManagerBase_004 *mUnk_43C; /* 440 */ UnkStruct_ov024_020d8694(GameModeManagerBase_004 *param1); @@ -153,16 +200,16 @@ public: /* 08 */ virtual void vfunc_08(Input *pButtons, TouchControl *pTouchControl); /* 10 */ virtual void vfunc_10(unk8 *param1); - void func_ov024_020cafb8(); - void func_ov024_020cafd8(); - void func_ov024_020cb000(); - void func_ov024_020cb020(); + void func_ov024_020cafb8(unk32 param1); + void func_ov024_020cafd8(unk32 param1); + void func_ov024_020cb000(unk32 param1); + void func_ov024_020cb020(unk32 param1); void func_ov024_020cb040(); - void func_ov024_020cb054(); - void func_ov024_020cb0ac(); + void func_ov024_020cb054(unk32 param1, Vec2s *param2, Vec2s *param3); + u32 GetMessageID(int index); void func_ov024_020cb0c4(); - void func_ov024_020cb178(); - void func_ov024_020cb194(); + void func_ov024_020cb178(unk32 param1); + void func_ov024_020cb194(unk16 param1); static UnkStruct_ov024_020d8694 *Create(GameModeManagerBase_004 *param1); }; diff --git a/include/iterator.hpp b/include/iterator.hpp index 55edacfc..5ec49f2d 100644 --- a/include/iterator.hpp +++ b/include/iterator.hpp @@ -3,50 +3,57 @@ #include "System/SysNew.hpp" #include "types.h" +// link list? struct stack_struct1 { void *param1; - int param2; + + union { + void *param2; + unk32 arg2; + }; }; -template class Iterator { +template class Iterator { public: - class ListData : public SysObject { - public: - u8 data[sizeof(T) * arrayLength]; - }; + /* 00 */ void *begin; + /* 04 */ void *end; + /* 08 */ - ListData *begin; - ListData *end; - - Iterator() {} + Iterator() { + this->Clear(); + } ~Iterator() { this->Destroy(); } - void Init(stack_struct1 *param1) { - if (this->begin != this->end) { - T *it = (T *) this->end; - - do { - (--it)->~T(); - } while (it != (T *) this->begin); - - delete this->begin; - } - - ListData *ptr = new(HeapIndex_1) ListData(); - this->begin = ptr; - this->end = ptr + (arrayLength - 1); + // allocate the list and run the constructors for each element + void Init(size_t arrayLength) { + this->Destroy(); + this->Set(arrayLength * 4); if (this->begin != this->end) { T *it = (T *) this->begin; - stack_struct1 *p; do { - if (it != NULL) { - it->Init(*p); - } + new(it) T(); // using placement new to run the ctor + + it++; + } while (it != (T *) this->end); + } + } + + // same as the other `Init` except this takes a node list + void Init(size_t arrayLength, void *params) { + this->Destroy(); + this->Set(arrayLength); + + if (this->begin != this->end) { + T *it = (T *) this->begin; + stack_struct1 *p = (stack_struct1 *) params; + + do { + new(it) T(*p); it++; p++; @@ -54,6 +61,7 @@ public: } } + // iterate the array and run the destructors for each element void Destroy() { if (this->begin != this->end) { T *it = (T *) this->end; @@ -66,13 +74,26 @@ public: } } - void Reset() { - this->Destroy(); + // allocate and set pointers + void Set(size_t arrayLength) { + void *ptr = ::operator new(arrayLength, HeapIndex_1, 4); + this->begin = ptr; + this->end = (void *) ((u8 *) ptr + arrayLength); + } + + // clear pointers + void Clear() { this->begin = NULL; this->end = NULL; } - T &GetRef(int index) { + // destroy and clear + void Reset() { + this->Destroy(); + this->Clear(); + } + + T &Get(int index) { return ((T *) this->begin)[index]; } }; diff --git a/include/math.hpp b/include/math.hpp index a67c541b..7e022cc1 100644 --- a/include/math.hpp +++ b/include/math.hpp @@ -67,6 +67,35 @@ static inline void Vec2s_Sub(const Vec2s *a, const Vec2s *b, Vec2s *dst) { dst->y = y; } +//! TODO: Vec2s_OffsetAdd and Vec2s_OffsetAdd2 are probably fake? +static inline void Vec2s_OffsetAdd(Vec2s *a, Vec2s *b, Vec2s *c, Vec2s *dst) { + s16 y; + s16 x; + + y = a->y + b->y; + x = a->x + b->x; + + x += c->x; + y += c->y; + + dst->x = x; + dst->y = y; +} + +static inline void Vec2s_OffsetAdd2(Vec2s *a, Vec2s *b, Vec2s *c, Vec2s *dst) { + s16 y; + s16 x; + + y = a->y + b->y; + x = a->x + b->x; + + y += c->y; + x += c->x; + + dst->x = x; + dst->y = y; +} + static inline void Vec2s_Copy(const Vec2s *a, Vec2s *dst) { #if __MWERKS__ dst->coords = a->coords; @@ -261,3 +290,19 @@ static inline void Vec2pCpp_Copy(const Vec2pCpp *a, Vec2pCpp *dst) { dst->y = a->y; #endif } + +//! TODO: remove +extern "C" static inline Vec2s *Vec2s_New(s16 x, s16 y) { + Vec2s vec; + vec.x = x; + vec.y = y; + return &vec; +} + +//! TODO: remove +extern "C" static inline Vec2s *Vec2s_GetCopy(Vec2s *src) { + Vec2s vec; + vec.x = src->x; + vec.y = src->y; + return &vec; +} diff --git a/libs/nitro/include/nitro/math.h b/libs/nitro/include/nitro/math.h index a7cbbe24..88c8be39 100644 --- a/libs/nitro/include/nitro/math.h +++ b/libs/nitro/include/nitro/math.h @@ -4,11 +4,20 @@ #include "global.h" #include "types.h" -#define Vec2_Set(a, dst) \ - { \ - (dst)->coords = (a)->coords; \ - } \ - ((void) 0) +#if __MWERKS__ + #define Vec2_Set(a, dst) \ + { \ + (dst)->coords = (a)->coords; \ + } \ + ((void) 0) +#else + #define Vec2_Set(a, dst) \ + { \ + (dst)->x = (a)->x; \ + (dst)->y = (a)->y; \ + } \ + ((void) 0) +#endif #define Vec2_CopyAdd(type, a, b, dst) \ { \ diff --git a/src/000_Second/Game/GameModeManagerBase_104.cpp b/src/000_Second/Game/GameModeManagerBase_104.cpp index dfa40d53..20ca22f3 100644 --- a/src/000_Second/Game/GameModeManagerBase_104.cpp +++ b/src/000_Second/Game/GameModeManagerBase_104.cpp @@ -6,14 +6,13 @@ ARM GameModeManagerBase_104::GameModeManagerBase_104() : mUnk_1A(false) {} ARM GameModeManagerBase_104::~GameModeManagerBase_104() { - GameModeLinkList *pNode = this->mUnk_0C.mList.GetPrevList(); - GameModeLinkList *pOrigin = - (GameModeLinkList *) ((u8 *) this + offsetof(GameModeManagerBase_104, mUnk_0C)); + GameModeManagerBase_104_0C *pTarget = this->mUnk_0C.GetPrevTarget(); + GameModeManagerBase_104_0C *pOrigin = &this->mUnk_0C; - while (pNode != pOrigin) { - GameModeLinkList *pNextNode = pNode->GetNext2(); - delete pNode->GetTarget(); - pNode = pNextNode; + while (pTarget != pOrigin) { + GameModeManagerBase_104_0C *pNext = pTarget->GetPrevTarget(); + delete pTarget; + pTarget = pNext; } } diff --git a/src/000_Second/Item/ItemManager.cpp b/src/000_Second/Item/ItemManager.cpp index b15d4c7c..263be1ae 100644 --- a/src/000_Second/Item/ItemManager.cpp +++ b/src/000_Second/Item/ItemManager.cpp @@ -82,7 +82,7 @@ ARM void ItemManager::GiveRupees(s32 amount, bool param2, bool param3) { this->mNumRupees = newAmount; if (param3) { - data_ov024_020d8698->func_ov024_020cd368(param2 && prevNumRupees != this->mNumRupees, 1); + data_ov024_020d8698->func_ov024_020cd368(param2 && prevNumRupees != this->mNumRupees, true); } } @@ -128,7 +128,7 @@ ARM bool ItemManager::TryEquipForcedItem() { if (this->mForcedItem != ItemFlag_None) { this->mEquippedItem = this->mForcedItem; this->mForcedItem = ItemFlag_None; - data_ov024_020d8698->func_ov024_020cd458(this->mEquippedItem, 0); + data_ov024_020d8698->func_ov024_020cd458(this->mEquippedItem, false); return true; } diff --git a/src/000_Second/MapObject/MapObjectSwitchStep.cpp b/src/000_Second/MapObject/MapObjectSwitchStep.cpp index b0d42fd6..572c7729 100644 --- a/src/000_Second/MapObject/MapObjectSwitchStep.cpp +++ b/src/000_Second/MapObject/MapObjectSwitchStep.cpp @@ -12,7 +12,7 @@ extern "C" unk32 func_0200f218(unk32, const char *); static const char data_ov000_020af550[] = "switch"; static const char data_ov000_020af560[] = "switchB"; -UnkStruct_ov019_020d24c8_28_258_00 MapObjectSwitchStep_data_020b6118(0, 0); +UnkStruct_ov019_020d24c8_28_258_00 MapObjectSwitchStep_data_020b6118(NULL, 0); ARM DECL_PROFILE(MapObjectProfileSwitchStep); diff --git a/src/000_Second/code_020657fc.cpp b/src/000_Second/code_020657fc.cpp new file mode 100644 index 00000000..2cb4cbb5 --- /dev/null +++ b/src/000_Second/code_020657fc.cpp @@ -0,0 +1,19 @@ +#include "Unknown/UnkStruct_020d8698.hpp" + +// non-matching +UnkStruct_020d8698_24_5C_Base::UnkStruct_020d8698_24_5C_Base(unk32 param1, const u16 *param2, u16 param3, unk32 param4) { + this->mUnk_80 = 0; + this->mUnk_84 = 0; + + this->func_ov000_0206590c(param3, param4); + + for (int i = 0; i < 10; i++) { + this->mUnk_08[i].func_ov000_0205fc20(param1, param2[i], NULL, NULL); + } +} + +UnkStruct_020d8698_24_5C::UnkStruct_020d8698_24_5C(unk32 param1, const u16 *param2, u16 param3, unk32 param4) : + UnkStruct_020d8698_24_5C_Base(param1, param2, param3, param4) { + this->mUnk_98 = 0; + this->mUnk_9C = 0; +} diff --git a/src/001_SceneInit/Game/AdventureModeManager_001.cpp b/src/001_SceneInit/Game/AdventureModeManager_001.cpp index 872119a5..808593b1 100644 --- a/src/001_SceneInit/Game/AdventureModeManager_001.cpp +++ b/src/001_SceneInit/Game/AdventureModeManager_001.cpp @@ -18,7 +18,6 @@ extern "C" { void *func_ov024_020d1658(); void *func_ov000_02066294(); -void *func_ov024_020ccd1c(); void GX_SetGraphicsMode(unk32 param1, unk32 param2, unk32 param3); void GXS_SetGraphicsMode(unk32 param1); } @@ -164,11 +163,10 @@ void AdventureModeManager::vfunc_14() { this->mUnk_1B0 = var_r5; if (data_027e09a4->IsNotCutscene()) { - //! TODO: fake match? - GameModeLinkListNode *pList = (GameModeLinkListNode *) &this->mUnk_104; - ((GameModeLinkListNode *) ((u8 *) pList + 4))->func_020166cc(var_r5->GetNode()); - + GameModeManagerBase_104 *pList = GetLinkListRef(this->mUnk_104); + pList->Append(var_r5); var_r5->vfunc_18(); + this->mUnk_1B5 = true; } @@ -179,13 +177,14 @@ void AdventureModeManager::vfunc_14() { func_ov000_02066294(); } - func_ov024_020ccd1c(); + UnkStruct_020d8698::Create(); if (data_027e09a4->IsNotCutscene()) { - GameModeManagerBase_104 *ptr = &this->mUnk_104; - GameModeLinkListNode *origin = data_ov024_020d8698->GetOrigin(); - ptr->mList.func_020166cc(data_ov024_020d8698->GetNode()); - ((UnkStruct_020d8698 *) origin)->vfunc_18(); + GameModeManagerBase_104 *pList = GetLinkListRef(this->mUnk_104); + UnkStruct_020d8698 *ptr = data_ov024_020d8698; + pList->Append(ptr); + ptr->vfunc_18(); + this->mUnk_1B4 = true; } diff --git a/src/017_CourseExec/CargoManager_017.cpp b/src/017_CourseExec/CargoManager_017.cpp index f29ee4b5..472ce26e 100644 --- a/src/017_CourseExec/CargoManager_017.cpp +++ b/src/017_CourseExec/CargoManager_017.cpp @@ -108,15 +108,15 @@ void CargoManager::Update() { if (this->mCargo.mDecayTimer >= sCargoInfos[this->mCargo.mType].timerMax) { this->RemoveAmount(1); this->mCargo.mDecayTimer = 0; - data_ov024_020d8698->func_ov024_020cd3f0(1); + data_ov024_020d8698->func_ov024_020cd3f0(true); } } } if (this->mCargo.mAmount <= sCargoInfos[this->mCargo.mType].amount) { - data_ov024_020d8698->func_ov024_020cd3e0(1); + data_ov024_020d8698->func_ov024_020cd3e0(true); } else { - data_ov024_020d8698->func_ov024_020cd3e0(0); + data_ov024_020d8698->func_ov024_020cd3e0(false); } if (this->mUnk_18 > 0) { @@ -139,7 +139,7 @@ void CargoManager::Init(unk32 type, unk32 amount) { pUnkStruct_027e0d00->func_ov024_020d4cc0(this->mCargo.mType); data_ov024_020d8698->func_ov024_020cd410(); - data_ov024_020d8698->func_ov024_020cd3f0(1); + data_ov024_020d8698->func_ov024_020cd3f0(true); } void CargoManager::func_ov017_020bebdc() { diff --git a/src/018_StartUp/StartUpInitializers.cpp b/src/018_StartUp/StartUpInitializers.cpp index 97b2a95a..6838a06b 100644 --- a/src/018_StartUp/StartUpInitializers.cpp +++ b/src/018_StartUp/StartUpInitializers.cpp @@ -273,11 +273,11 @@ ARM UnkStruct_0204a110_Sub6::UnkStruct_0204a110_Sub6() { } ARM UnkStruct_0204a110_Sub7::UnkStruct_0204a110_Sub7() { - this->mUnk_00 = 0; - this->mUnk_01 = 0; - this->mUnk_0C = data_027e0120; - this->mUnk_04 = new(HeapIndex_Main) UnkSystem2_UnkSubSystem9(); - this->mUnk_08 = new(HeapIndex_Main) UnkStruct_0204a110_Sub7_08(); + this->mUnk_00 = 0; + this->mUnk_01 = 0; + this->mUnk_0C.coords = data_027e0120.coords; + this->mUnk_04 = new(HeapIndex_Main) UnkSystem2_UnkSubSystem9(); + this->mUnk_08 = new(HeapIndex_Main) UnkStruct_0204a110_Sub7_08(); } ARM UnkStruct_0204a110_Sub8::UnkStruct_0204a110_Sub8() { diff --git a/src/019_MainSelect/019_UnkSubStruct9.cpp b/src/019_MainSelect/019_UnkSubStruct9.cpp index 36e1365b..53479c45 100644 --- a/src/019_MainSelect/019_UnkSubStruct9.cpp +++ b/src/019_MainSelect/019_UnkSubStruct9.cpp @@ -4,15 +4,14 @@ #include "Unknown/UnkStruct_0204af1c.hpp" extern "C" { -void func_020166cc(void *param1, void *param2, void *); void func_ov000_02062e44(void *param1, void *param2); }; // non-matching ARM UnkSubStruct9::UnkSubStruct9(stack_struct1 param1) : - mSaveSlotIndex(param1.param2), + mSaveSlotIndex(param1.arg2), mUnk_064(0x89, 0x01), - mUnk_29C(0x89, UnkStruct_ov019_020d1e70::data_ov019_020d1e4c.mUnk_04[param1.param2]), + mUnk_29C(0x89, UnkStruct_ov019_020d1e70::data_ov019_020d1e4c.mUnk_04[param1.arg2]), mUnk_2B4(0x89, 0x15), mUnk_2CC(0x89, 0x00), mUnk_344(0x89, 0x03), @@ -35,16 +34,15 @@ ARM UnkSubStruct9::UnkSubStruct9(stack_struct1 param1) : UnkStruct_ov019_020d24c8_28_258 local_40(0x89, 0x02); // sp28 UnkStruct_ov019_020d24c8_28_258 local_58(0x89, 0x01); // sp10 - s16 temp_r2 = local_58.mPos.x - local_40.mPos.x; - s16 spE = local_58.mPos.y - local_40.mPos.y; - param1.param2 = temp_r2; + s16 temp_r2 = local_58.mPos.x - local_40.mPos.x; + s16 spE = local_58.mPos.y - local_40.mPos.y; + param1.arg2 = temp_r2; - this->mUnk_77C.x = param1.param2; + this->mUnk_77C.x = param1.arg2; this->mUnk_77C.y = spE; } - stack = &this->mUnk_004; - func_020166cc(&this->mUnk_004, &stack, param1.param1); + this->mUnk_004.Append((LinkListNode *) param1.param1); this->mUnk_004.mUnk_2C = 1; } diff --git a/src/019_MainSelect/019_UnkSystem1_ov019_Derived1.cpp b/src/019_MainSelect/019_UnkSystem1_ov019_Derived1.cpp index c6f652e3..4ac074be 100644 --- a/src/019_MainSelect/019_UnkSystem1_ov019_Derived1.cpp +++ b/src/019_MainSelect/019_UnkSystem1_ov019_Derived1.cpp @@ -21,7 +21,7 @@ ARM unk32 UnkSystem1_ov019_Derived1::vfunc_1C(u32 param1, unk32 param2, unk32 pa if (this->mUnk_04 <= 0) { this->func_ov019_020c5590(BMG_ID(BMGGroup_select, 0x1B), param2, param3); this->mUnk_04++; - } else if (data_ov000_020b504c.func_ov000_02067bc4(this->mUnk_10)->vfunc_08() != 0) { + } else if (data_ov000_020b504c.func_ov000_02067bc4(this->mUnk_10)->vfunc_08()) { switch (this->mUnk_04) { case 0x1E: switch (param1) { diff --git a/src/019_MainSelect/019_UnkSystem1_ov019_Derived2.cpp b/src/019_MainSelect/019_UnkSystem1_ov019_Derived2.cpp index c5d74d74..176f0649 100644 --- a/src/019_MainSelect/019_UnkSystem1_ov019_Derived2.cpp +++ b/src/019_MainSelect/019_UnkSystem1_ov019_Derived2.cpp @@ -34,7 +34,7 @@ ARM unk32 UnkSystem1_ov019_Derived2::vfunc_1C(u32 param1, unk32 param2, unk32 pa data_ov000_020b504c.func_ov000_02067bc4(0)->func_02021bec(1); data_ov000_020b504c.func_ov000_02067bc4(this->mUnk_10)->func_02021c08(); this->mUnk_04++; - } else if (data_ov000_020b504c.func_ov000_02067bc4(this->mUnk_10)->vfunc_08() != 0) { + } else if (data_ov000_020b504c.func_ov000_02067bc4(this->mUnk_10)->vfunc_08()) { if (this->mUnk_04 == 0x0F) { SaveFile *pSaveFile = gSaveManager.mpSaveFile; pSaveFile->func_ov019_020d1aac(this->mUnk_12, data_ov003_020ba740->mUnk_9D0); diff --git a/src/019_MainSelect/019_UnkSystem1_ov019_Derived3.cpp b/src/019_MainSelect/019_UnkSystem1_ov019_Derived3.cpp index 1ec02de4..6c6e0a6e 100644 --- a/src/019_MainSelect/019_UnkSystem1_ov019_Derived3.cpp +++ b/src/019_MainSelect/019_UnkSystem1_ov019_Derived3.cpp @@ -48,7 +48,7 @@ ARM unk32 UnkSystem1_ov019_Derived3::vfunc_1C(u32 param1, unk32 param2, unk32 pa data_ov000_020b504c.func_ov000_02067bc4(0)->func_02021bec(1); data_ov000_020b504c.func_ov000_02067bc4(this->mUnk_10)->func_02021c08(); this->mUnk_04++; - } else if (data_ov000_020b504c.func_ov000_02067bc4(this->mUnk_10)->vfunc_08() != 0) { + } else if (data_ov000_020b504c.func_ov000_02067bc4(this->mUnk_10)->vfunc_08()) { if (this->mUnk_04 == 0x1E) { if (this->mUnk_18 == 0) { gSaveManager.func_ov019_020d0ae0(this->mUnk_12); diff --git a/src/019_MainSelect/FileSelectMain.cpp b/src/019_MainSelect/FileSelectMain.cpp index 80117dce..53973097 100644 --- a/src/019_MainSelect/FileSelectMain.cpp +++ b/src/019_MainSelect/FileSelectMain.cpp @@ -154,9 +154,9 @@ ARM FileSelectMain::FileSelectMain() : stack_struct1 params; params.param2 = NULL; params.param1 = &this->mUnk_0C; - this->mUnk_03E0.Init(¶ms); + this->mUnk_03E0.Init(sizeof(UnkSubStruct9) * MAX_SAVE_SLOTS, ¶ms); - this->mUnk_0C.mList.func_020166cc(&this->mUnk_0100); + this->mUnk_0C.Append(&this->mUnk_0100); this->mUnk_0100.mUnk_2A = 0; this->mUnk_0488.mUnk_2C = 1; this->mUnk_07E4.mUnk_2C = 1; @@ -188,7 +188,7 @@ ARM FileSelectMain::FileSelectMain() : REG_DISPCNT &= 0xFFFFE0FF; REG_DISPCNT |= 0x00001C00; _G2_SetBlend(®_BLDCNT, 4, 8, 0, 0x10); - this->mUnk_0C.mList.func_020166cc(&this->mUnk_005C); + this->mUnk_0C.Append(&this->mUnk_005C); this->func_ov019_020c63dc(); this->func_ov019_020c6d10(); } @@ -200,31 +200,31 @@ ARM FileSelectMain::~FileSelectMain() { ARM void FileSelectMain::func_ov019_020c6c14() {} ARM void FileSelectMain::func_ov019_020c6c18() { - this->mUnk_0C.mList.func_020166cc(&this->mUnk_0488); - this->mUnk_0C.mList.func_020166cc(&this->mUnk_07E4); - this->mUnk_0C.mList.func_020166cc(&this->mUnk_0AC4); + this->mUnk_0C.Append(&this->mUnk_0488); + this->mUnk_0C.Append(&this->mUnk_07E4); + this->mUnk_0C.Append(&this->mUnk_0AC4); } ARM void FileSelectMain::func_ov019_020c6c54() { - this->mUnk_0C.mList.func_020166cc(&this->mUnk_0DA4); - this->mUnk_0C.mList.func_020166cc(&this->mUnk_11BC); - this->mUnk_0C.mList.func_020166cc(&this->mUnk_15D4); - this->mUnk_0C.mList.func_020166cc(&this->mUnk_18EC); + this->mUnk_0C.Append(&this->mUnk_0DA4); + this->mUnk_0C.Append(&this->mUnk_11BC); + this->mUnk_0C.Append(&this->mUnk_15D4); + this->mUnk_0C.Append(&this->mUnk_18EC); } ARM void FileSelectMain::func_ov019_020c6c9c() {} ARM void FileSelectMain::func_ov019_020c6ca0() { - GameModeLinkListNode::func_020166ac(&this->mUnk_0488); - GameModeLinkListNode::func_020166ac(&this->mUnk_07E4); - GameModeLinkListNode::func_020166ac(&this->mUnk_0AC4); + this->mUnk_0488.Detach(); + this->mUnk_07E4.Detach(); + this->mUnk_0AC4.Detach(); } ARM void FileSelectMain::func_ov019_020c6cd0() { - GameModeLinkListNode::func_020166ac(&this->mUnk_0DA4); - GameModeLinkListNode::func_020166ac(&this->mUnk_11BC); - GameModeLinkListNode::func_020166ac(&this->mUnk_15D4); - GameModeLinkListNode::func_020166ac(&this->mUnk_18EC); + this->mUnk_0DA4.Detach(); + this->mUnk_11BC.Detach(); + this->mUnk_15D4.Detach(); + this->mUnk_18EC.Detach(); } ARM void FileSelectMain::func_ov019_020c6d08() {} @@ -1127,7 +1127,6 @@ ARM void FileSelectMain::func_ov019_020c80e8() { ARM void FileSelectMain::func_ov019_020c80f4() {} -// non-matching ARM void FileSelectMain::vfunc_08(Input *pButtons, TouchControl *pTouchControl) { for (int i = 0; i < MAX_SAVE_SLOTS; i++) { this->mUnk_03E8[i].func_ov000_02063f64(); @@ -1145,7 +1144,6 @@ ARM void FileSelectMain::func_ov019_020c8290() { } } -// non-matching ARM void FileSelectMain::func_ov019_020c82c4() { this->mUnk_039C.Update(&this->mUnk_0100.mPos); @@ -1382,14 +1380,14 @@ ARM void FileSelectMain::func_ov019_020c9d88() { this->mUnk_155C.func_ov000_020609c4(); if (this->mExitMode == FileSelectExitMode_AdventureMode) { - if (this->mUnk_1144.func_ov000_02060af8() != 0) { + if (this->mUnk_1144.func_ov000_02060af8()) { this->SetState(FileSelectState_EnterGameMode); return; } } if (this->mExitMode == FileSelectExitMode_BattleMode) { - if (this->mUnk_155C.func_ov000_02060af8() != 0) { + if (this->mUnk_155C.func_ov000_02060af8()) { this->SetState(FileSelectState_EnterGameMode); return; } diff --git a/src/019_MainSelect/FileSelectManager.cpp b/src/019_MainSelect/FileSelectManager.cpp index d5d02b4d..4d2bbc28 100644 --- a/src/019_MainSelect/FileSelectManager.cpp +++ b/src/019_MainSelect/FileSelectManager.cpp @@ -36,12 +36,12 @@ ARM void FileSelectManager::vfunc_10(unk32 param1, unk32 param2, unk32 param3) { FileSelectMain *newSub3 = new(HeapIndex_1) FileSelectMain(); this->mUnk_158 = newSub3; - this->mUnk_154->mList.func_020166cc(newSub3->GetNode()); + this->mUnk_154->Append(newSub3); newSub3->vfunc_18(); FileSelectSubScreen *newSub4 = new(HeapIndex_1) FileSelectSubScreen(); this->mUnk_15C = newSub4; - this->mUnk_154->mList.func_020166cc(newSub4->GetNode()); + this->mUnk_154->Append(newSub4); newSub4->vfunc_18(); this->mUnk_160 = new(HeapIndex_1) FileSelectManager_160(&this->mUnk_104, this->mUnk_158); @@ -114,7 +114,7 @@ ARM void FileSelectManager::vfunc_28(unk8 *param1) { this->func_02018a14(param1); } -ARM void FileSelectManager::vfunc_2C(unk8 *param1) { +ARM void FileSelectManager::DrawUI(unk8 *param1) { this->func_02018984(param1); this->func_02018830(param1); } diff --git a/src/019_MainSelect/FileSelectManager_160.cpp b/src/019_MainSelect/FileSelectManager_160.cpp index 1ffef098..fcdec712 100644 --- a/src/019_MainSelect/FileSelectManager_160.cpp +++ b/src/019_MainSelect/FileSelectManager_160.cpp @@ -48,7 +48,7 @@ ARM void FileSelectManager_160::vfunc_10(unk32 param1, unk32 param2) { data_0204999c.mUnk_60 = 0xD6D8; data_0204a088->func_ov000_02061248(); data_0204a110.func_02019538(0x27, 1); - GameModeLinkListNode::func_020166ac(&this->mUnk_10->mList); + this->mUnk_10->Detach(); this->mUnk_10->func_ov019_020cb664(); this->mUnk_14 = func_ov003_020b6520(&this->mUnk_18, this->mUnk_1C); REG_DISPCNT &= 0xFFFFE0FF; @@ -88,7 +88,7 @@ ARM void FileSelectManager_160::vfunc_20(unk32 param1, unk32 param2) { data_0204a110.func_02019538(0x25, 1); FileSelectMain *temp_r4 = this->mUnk_10; - this->mUnk_18->mList.func_020166cc(temp_r4->GetNode()); + this->mUnk_18->Append(temp_r4); temp_r4->vfunc_18(); this->mUnk_10->func_ov019_020cb5dc(); diff --git a/src/019_MainSelect/FileSelectManager_164.cpp b/src/019_MainSelect/FileSelectManager_164.cpp index 578551c3..c0ee2e68 100644 --- a/src/019_MainSelect/FileSelectManager_164.cpp +++ b/src/019_MainSelect/FileSelectManager_164.cpp @@ -49,13 +49,13 @@ ARM void FileSelectManager_164::vfunc_10(unk32 param1, unk32 param2) { data_0204999c.func_02013014(); data_0204999c.mUnk_60 = 0xD6D8; data_ov000_020b50c0.func_ov000_0206a758(); - GameModeLinkListNode::func_020166ac(&this->mUnk_10->mList); + this->mUnk_10->Detach(); this->mUnk_10->func_ov019_020cb664(); data_0204a110.func_02019538(0x26, 1); FileSelectOptionsManager::Create(this->mUnk_18, this->mUnk_10->mSaveSlotIndex); FileSelectOptionsManager *pVar1 = gpFSOptionsManager; - this->mUnk_14->mList.func_020166cc(pVar1->GetNode()); + this->mUnk_14->Append(pVar1); pVar1->vfunc_18(); data_0204999c.func_02013070(); @@ -96,7 +96,7 @@ ARM void FileSelectManager_164::vfunc_20(unk32 param1, unk32 param2) { data_0204a110.func_02019538(0x25, 1); FileSelectMain *temp_r4 = this->mUnk_10; - this->mUnk_14->mList.func_020166cc(temp_r4->GetNode()); + this->mUnk_14->Append(temp_r4); temp_r4->vfunc_18(); this->mUnk_10->func_ov019_020cb5dc(); diff --git a/src/019_MainSelect/FileSelectMicTest.cpp b/src/019_MainSelect/FileSelectMicTest.cpp index ed301f88..c799ade4 100644 --- a/src/019_MainSelect/FileSelectMicTest.cpp +++ b/src/019_MainSelect/FileSelectMicTest.cpp @@ -55,7 +55,7 @@ ARM FileSelectMicTest::FileSelectMicTest() : mUnk_304(BTN_ID_RETURN, 0x8E, 0x00, 0x01, 0x8E, 0x00), mUnk_3F8(0x8D, 0x01), mUnk_630(1) { - this->mUnk_0C.mList.func_020166cc(&this->mUnk_304.mUnk_044); + this->mUnk_0C.Append(&this->mUnk_304.mUnk_044); this->mUnk_020.func_0201f730(BMG_ID(BMGGroup_select, 0x06)); this->mUnk_3F8.mUnk_14E = 1; this->mUnk_3F8.func_0201f730(BMG_ID(BMGGroup_select, 0x43)); @@ -95,7 +95,7 @@ ARM void FileSelectMicTest::func_ov019_020ceaac() { local_38.x = 0; local_38.y = 0; - this->mUnk_304.func_0201e874(0x0C, (void *) &local_34, (void *) &local_38, 0); + this->mUnk_304.func_0201e874(BTN_ID_UNK_0C, (void *) &local_34, (void *) &local_38, 0); this->mUnk_304.mUnk_000.mUnk_0A = true; this->mUnk_304.mUnk_000.mUnk_0B = false; @@ -191,7 +191,7 @@ ARM void FileSelectMicTest::vfunc_08(Input *pButtons, TouchControl *pTouchContro ARM void FileSelectMicTest::vfunc_10(unk8 *param1) { this->mUnk_270.func_ov019_020cf21c(); - data_0204af1c.func_0201aa44(&this->mUnk_258.mUnk_00, &this->mUnk_258.mPos, 0, 0); + data_0204af1c.func_0201aa44(&this->mUnk_258, &this->mUnk_258.mPos, 0, 0); this->mUnk_020.func_0201f4b4(0); unk32 stack; @@ -310,7 +310,7 @@ ARM void UnkStruct_ov019_020d24c8_28_270::func_ov019_020cf168() { } ARM void UnkStruct_ov019_020d24c8_28_270::func_ov019_020cf21c() { - data_0204af1c.func_0201aa44(this, &this->mUnk_8E, 0, 0); + data_0204af1c.func_0201aa44(&this->mUnk_00, &this->mUnk_8E, 0, 0); for (int i = 0; i < ARRAY_LEN(this->mUnk_18.mUnk_00); i++) { if (this->mUnk_78[i] != 0) { diff --git a/src/019_MainSelect/FileSelectOptions.cpp b/src/019_MainSelect/FileSelectOptions.cpp index dd693888..e42772f3 100644 --- a/src/019_MainSelect/FileSelectOptions.cpp +++ b/src/019_MainSelect/FileSelectOptions.cpp @@ -106,7 +106,7 @@ ARM FileSelectOptionsManager::FileSelectOptionsManager(void *param1, s32 saveSlo FileSelectOptions *var_r5 = new(HeapIndex_1) FileSelectOptions(saveSlotIndex); this->mpOptions = var_r5; - this->mUnk_24->mList.func_020166cc(var_r5->GetNode()); + this->mUnk_24->Append(var_r5); var_r5->vfunc_18(); } @@ -128,17 +128,17 @@ ARM void FileSelectOptionsManager::vfunc_08(Input *pButtons, TouchControl *pTouc switch (this->mUnk_1C) { case 0: FileSelectOptions *pFVar4 = this->mpOptions; - this->mUnk_24->mList.func_020166cc(pFVar4->GetNode()); + this->mUnk_24->Append(pFVar4); pFVar4->vfunc_18(); this->mpOptions->func_ov019_020cde9c(); - GameModeLinkListNode::func_020166ac(&this->mpMicTest->mList); + this->mpMicTest->Detach(); break; case 1: FileSelectMicTest *pFVar5 = this->mpMicTest; - this->mUnk_24->mList.func_020166cc(pFVar5->GetNode()); + this->mUnk_24->Append(pFVar5); pFVar5->vfunc_18(); this->mpMicTest->func_ov019_020cefe4(); - GameModeLinkListNode::func_020166ac(&this->mpOptions->mList); + this->mpOptions->Detach(); break; case 2: this->mpOptions->func_ov019_020ccdf4(); @@ -179,10 +179,10 @@ ARM FileSelectOptions::FileSelectOptions(s32 saveSlotIndex) : mUnk_1A68(&mUnk_19D0), mUnk_1AB8(&mUnk_19D0, 0x8C, 0x09, BMG_ID(BMGGroup_select, 0x07)) { this->mUnk_1CF5 = false; - this->mUnk_0C.mList.func_020166cc(&this->mUnk_10A8); - this->mUnk_0C.mList.func_020166cc(&this->mUnk_19D0); - this->mUnk_0C.mList.func_020166cc(&this->mUnk_1388); - this->mUnk_0C.mList.func_020166cc(&this->mUnk_16AC); + this->mUnk_0C.Append(&this->mUnk_10A8); + this->mUnk_0C.Append(&this->mUnk_19D0); + this->mUnk_0C.Append(&this->mUnk_1388); + this->mUnk_0C.Append(&this->mUnk_16AC); this->mUnk_10A8.mUnk_2A = false; this->mUnk_1388.mUnk_2C = true; this->mUnk_16AC.mUnk_2C = true; @@ -246,7 +246,7 @@ ARM void FileSelectOptions::func_ov019_020cce30() { local_4c.x = sVar2_1.x; local_4c.y = sVar2_1.y; - this->mUnk_1344.func_0201e874(0x0F, &local_4c, &local_50, 6); + this->mUnk_1344.func_0201e874(BTN_ID_FILE_SELECT_UNK_0F, &local_4c, &local_50, 6); this->mUnk_1344.mUnk_0A = true; this->mUnk_1344.mUnk_0B = false; this->mUnk_1344.mUnk_0C = false; @@ -268,7 +268,7 @@ ARM void FileSelectOptions::func_ov019_020cce30() { local_5c.x = local_38.mPos.x; local_5c.y = local_38.mPos.y; - this->mUnk_1064.func_0201e874(0x14, &local_58, &local_5c, 6); + this->mUnk_1064.func_0201e874(BTN_ID_FILE_SELECT_UNK_14, &local_58, &local_5c, 6); this->mUnk_1064.mUnk_0A = true; this->mUnk_1064.mUnk_0B = false; this->mUnk_1064.mUnk_0C = false; @@ -341,7 +341,7 @@ ARM void FileSelectOptions::func_ov019_020cd16c() { local_50.y = local_48.y + UnkStruct_ov019_020d2170::data_ov019_020d215c.mUnk_04.y; local_4c.x = local_38.x; local_4c.y = local_38.y; - this->mUnk_1344.func_0201e874(0xf, &local_4c, &local_50, 7); + this->mUnk_1344.func_0201e874(BTN_ID_FILE_SELECT_UNK_0F, &local_4c, &local_50, 7); uVar1 = this->mUnk_1344.mUnk_04; uVar2 = this->mUnk_1344.mUnk_06; this->mUnk_1344.mUnk_0A = true; @@ -357,7 +357,7 @@ ARM void FileSelectOptions::func_ov019_020cd16c() { local_58.y = local_34.mPosU.y + UnkStruct_ov019_020d2170::data_ov019_020d215c.mUnk_08.y; local_54.y = local_34.mPosU.y; local_54.x = local_34.mPosU.x; - this->mUnk_1064.func_0201e874(0x14, &local_54, &local_58, 7); + this->mUnk_1064.func_0201e874(BTN_ID_FILE_SELECT_UNK_14, &local_54, &local_58, 7); this->mUnk_1064.mUnk_0A = true; this->mUnk_1064.mUnk_0B = false; @@ -396,7 +396,7 @@ ARM void FileSelectOptions::func_ov019_020cd41c() { local_40.y = local_34.mPosU.y + UnkStruct_ov019_020d2170::data_ov019_020d215c.mUnk_00.y; local_3c.x = local_34.mPosU.x; local_3c.y = local_34.mPosU.y; - this->mUnk_1064.func_0201e874(0x0C, &local_3c, &local_40, 0); + this->mUnk_1064.func_0201e874(BTN_ID_UNK_0C, &local_3c, &local_40, 0); this->mUnk_1064.mUnk_0A = true; this->mUnk_1064.mUnk_0C = false; this->mUnk_1064.mUnk_0B = false; @@ -445,7 +445,7 @@ ARM void FileSelectOptions::func_ov019_020cd614() { local_3c.x = local_30.mPos.x; local_3c.y = local_30.mPos.y; - this->mUnk_1064.func_0201e874(0x0C, &local_38, &local_3c, 0); + this->mUnk_1064.func_0201e874(BTN_ID_UNK_0C, &local_38, &local_3c, 0); this->mUnk_1064.mUnk_0A = true; this->mUnk_1064.mUnk_0B = false; this->mUnk_1064.mUnk_0C = false; @@ -634,12 +634,12 @@ ARM UnkStruct_ov019_020d24c8_2C_24::UnkStruct_ov019_020d24c8_2C_24(GameModeManag this->mUnk_FC3[0].mUnk_00 = *src; this->mUnk_103E = pSaveSub17->mUnk_7E; - param1->mList.func_020166cc(&this->mUnk_490); - param1->mList.func_020166cc(&this->mUnk_4F0); - param1->mList.func_020166cc(&this->mUnk_9C0); - param1->mList.func_020166cc(&this->mUnk_A20); - param1->mList.func_020166cc(&this->mUnk_EF0); - param1->mList.func_020166cc(&this->mUnk_F50); + param1->Append(&this->mUnk_490); + param1->Append(&this->mUnk_4F0); + param1->Append(&this->mUnk_9C0); + param1->Append(&this->mUnk_A20); + param1->Append(&this->mUnk_EF0); + param1->Append(&this->mUnk_F50); this->mUnk_490.mPosOffset.x = 0; this->mUnk_490.mPosOffset.y = 0; diff --git a/src/019_MainSelect/FileSelectSubScreen.cpp b/src/019_MainSelect/FileSelectSubScreen.cpp index 69317329..39b2f215 100644 --- a/src/019_MainSelect/FileSelectSubScreen.cpp +++ b/src/019_MainSelect/FileSelectSubScreen.cpp @@ -186,7 +186,7 @@ ARM void FileSelect_UnkClass7::vfunc_00() { for (int i = 0; i < ARRAY_LEN(this->mUnk_004.mUnk_000); i++) { this->mUnk_004.mUnk_000[i].func_ov000_020609c4(); - if (this->mUnk_004.mUnk_000[i].func_ov000_02060af8() != 0) { + if (this->mUnk_004.mUnk_000[i].func_ov000_02060af8()) { this->mUnk_004.mUnk_000[i].func_ov000_02060b64(); Vec2us pos; diff --git a/src/024_MainGame/Game/AdventureModeManager_024.cpp b/src/024_MainGame/Game/AdventureModeManager_024.cpp index 3f95b7da..a551ad03 100644 --- a/src/024_MainGame/Game/AdventureModeManager_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_024.cpp @@ -45,13 +45,6 @@ void func_ov024_020d2518(void *); extern void *data_ov000_020b64f8; -struct InputInformations { - void *unk_00; - void *unk_04; - void *unk_08; - void *unk_0C; -}; - AdventureModeManager::~AdventureModeManager() { delete this->mUnk_1B8; delete this->mUnk_170; @@ -176,12 +169,6 @@ void AdventureModeManager::func_ov024_020c555c(unk32 param1) { this->mUnk_154 = param1; } -struct UnkNodeStruct5 { - virtual void vfunc_00(); - virtual void vfunc_04(); - virtual void vfunc_08(InputInformations *); -}; - void AdventureModeManager::vfunc_24() { u16 press; @@ -207,26 +194,18 @@ void AdventureModeManager::vfunc_24() { sp24.unk_08 = &this->mButtons; sp24.unk_0C = &this->mTouchControl; - GameModeLinkListNode *var_r4 = this->mUnk_15C->mUnk_04.mList.mNext->GetNext3(); - - while (var_r4 != this->mUnk_15C->mUnk_04.GetOrigin()) { - GameModeManagerBase_104 *pTarget = var_r4->GetTarget(); - GameModeLinkListNode *var_r9 = pTarget->mUnk_0C.mList.GetNext(); - - while (var_r9 != pTarget->mUnk_0C.GetOrigin()) { - //! TODO: figure out which class it is - var_r9->GetTarget()->vfunc_08(&sp24); - var_r9 = var_r9->GetUnk2(); + for (GameModeManagerBase_104::Iterator it1 = GetBeginIter(this->mUnk_15C->mUnk_04); + it1 != GetEndIter(this->mUnk_15C->mUnk_04); it1++) { + //! TODO: regalloc issues when using the iterator + for (GameModeManagerBase_104_0C *it2 = GetBeginIter(it1->mUnk_0C); it2 != GetEndIter(it1->mUnk_0C); + GetNextIter(it2)) { + it2->vfunc_08(&sp24); } - - var_r4 = var_r4->GetUnk2(); } - GameModeLinkListNode *var_r4_2 = this->mUnk_15C->mUnk_04.mList.mNext->GetNext3(); - - while (var_r4_2 != this->mUnk_15C->mUnk_04.GetOrigin()) { - var_r4_2->GetTarget()->vfunc_08(&this->mButtons, &this->mTouchControl); - var_r4_2 = var_r4_2->GetUnk2(); + for (GameModeManagerBase_104::Iterator it = GetBeginIter(this->mUnk_15C->mUnk_04); + it != GetEndIter(this->mUnk_15C->mUnk_04); it++) { + it->vfunc_08(&this->mButtons, &this->mTouchControl); } if (!this->mTouchControl.mState.touch) { @@ -432,7 +411,7 @@ void AdventureModeManager::vfunc_24() { return; } - if (data_ov000_020b504c.func_ov000_02067bc4(0)->vfunc_08() != 0) { + if (data_ov000_020b504c.func_ov000_02067bc4(0)->vfunc_08()) { return; } } @@ -454,7 +433,7 @@ void AdventureModeManager::func_ov024_020c5cec() { data_ov024_020d8698->func_ov024_020cd420(); if (!data_027e09a4->func_01ffd3d8()) { - data_ov024_020d8698->func_ov024_020cd458(data_027e0ce0->mUnk_2C->mEquippedItem, 1); + data_ov024_020d8698->func_ov024_020cd458(data_027e0ce0->mUnk_2C->mEquippedItem, true); if (gOverlayManager.IsPlayerSub() && data_0204a088->mUnk_00 == OverlayIndex_SceneInit) { this->mUnk_168->func_ov031_0210df60(1); @@ -463,8 +442,7 @@ void AdventureModeManager::func_ov024_020c5cec() { if (this->mUnk_160 != NULL && this->mUnk_160->mUnk_18 != NULL) { AdventureModeManager_160_18 *ptr = this->mUnk_160->mUnk_18; - GameModeLinkListNode *pUVar3 = (GameModeLinkListNode *) ptr; - this->mUnk_104.mList.func_020166cc(pUVar3->GetNode()); + this->mUnk_104.Append(this->mUnk_160->mUnk_18); ptr->vfunc_18(); } } @@ -475,9 +453,8 @@ bool AdventureModeManager::func_ov024_020c5dac() { if (this->func_ov024_020c6af4(4)) { if (!data_027e09b8->func_ov000_020732dc(0) && !data_027e09b8->func_ov000_020732dc(1) && !data_027e09b8->func_ov000_020732dc(3) && !data_027e09b8->func_ov000_020732dc(4)) { - GameModeLinkListNode *node = data_0204e5f8.mUnk_00.mUnk_04.GetNext(); - - if ((void *) node == (void *) &data_0204e5f8 && (unk_00 != 1 || this->func_ov024_020c69d0() != 0) && + 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)) { return true; @@ -512,10 +489,8 @@ bool AdventureModeManager::func_ov024_020c5f70() { if (var_r4) { if (this->func_ov024_020c6af4(4) && data_0204a110.mUnk_008 != 1 && !data_027e09b8->func_ov000_020732dc(0) && !data_027e09b8->func_ov000_020732dc(1) && !data_027e09b8->func_ov000_020732dc(4)) { - GameModeLinkListNode *node = data_0204e5f8.mUnk_00.mUnk_04.GetNext(); - - if ((void *) node == (void *) &data_0204e5f8 && (unk_00 == 1 || unk_00 - 6 <= 1) && - (unk_00 != 1 || this->func_ov024_020c69d0() != 0) && + 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()) { @@ -575,7 +550,7 @@ void AdventureModeManager::vfunc_28(unk8 *param1) { } } -void AdventureModeManager::vfunc_2C(unk8 *param1) { +void AdventureModeManager::DrawUI(unk8 *param1) { s8 value = *param1; this->func_02018984(param1); @@ -588,25 +563,17 @@ void AdventureModeManager::vfunc_2C(unk8 *param1) { savedUnk[1] = this->mNextButtonID; savedUnk[0] = (u32) param1; - GameModeLinkListNode *var_r4 = this->mUnk_15C->mUnk_04.mUnk_0C.GetUnk3(); - - while (var_r4 != this->mUnk_15C->mUnk_04.GetOrigin()) { - GameModeManagerBase_104 *pTarget = var_r4->GetTarget(); - GameModeLinkListNode *var_r9 = pTarget->mUnk_0C.mList.GetPrev(); - - while (var_r9 != pTarget->mUnk_0C.GetOrigin()) { - var_r9->GetTarget()->vfunc_0C(savedUnk); - var_r9 = var_r9->GetUnk(); + for (GameModeManagerBase_104::Iterator it1 = GetBeginIterReverse(this->mUnk_15C->mUnk_04); + it1 != GetEndIter(this->mUnk_15C->mUnk_04); it1--) { + for (GameModeManagerBase_104_0C::Iterator it2 = GetBeginIterReverse(it1->mUnk_0C); + it2 != GetEndIter(it1->mUnk_0C); it2--) { + it2->vfunc_0C(savedUnk); } - - var_r4 = var_r4->GetUnk(); } - GameModeLinkListNode *var_r4_2 = this->mUnk_15C->mUnk_04.mUnk_0C.GetUnk3(); - - while (var_r4_2 != this->mUnk_15C->mUnk_04.GetOrigin()) { - var_r4_2->GetTarget()->vfunc_10(param1); - var_r4_2 = var_r4_2->GetUnk(); + for (GameModeManagerBase_104::Iterator it = GetBeginIterReverse(this->mUnk_15C->mUnk_04); + it != GetEndIter(this->mUnk_15C->mUnk_04); it--) { + it->vfunc_10(param1); } } } @@ -722,10 +689,10 @@ void AdventureModeManager::func_ov024_020c6770(SceneIndex sceneIndex, u8 param2, this->func_ov024_020c6840(sceneIndex); data_027e0cf8->func_ov024_020c7780(); - if (this->mUnk_1AC->mList.func_0201673c() == 0) { - GameModeLinkListNode *origin = this->mUnk_1AC->GetOrigin(); - this->mUnk_158->mList.func_020166cc(origin->GetNode()); - origin->GetTarget()->vfunc_18(); + if (this->mUnk_1AC->GetListLength() == 0) { + AdventureModeManager_1AC *ptr = this->mUnk_1AC; + this->mUnk_158->Append(ptr); + ptr->vfunc_18(); } } @@ -737,14 +704,6 @@ bool AdventureModeManager::func_ov024_020c681c() { return false; } -struct SomeSaveFileStruct { - /* 00 */ SaveFile *mpSaveFiles[MAX_SAVE_SLOTS]; - STRUCT_PAD(0x00, 0xCC); - - SomeSaveFileStruct(unk32 param1); - ~SomeSaveFileStruct(); -}; - void AdventureModeManager::func_ov024_020c6840(SceneIndex sceneIndex) { if (this->func_ov024_020c6d64() != 0) { return; @@ -755,12 +714,11 @@ void AdventureModeManager::func_ov024_020c6840(SceneIndex sceneIndex) { } { - //! TODO: fake match most likely - SomeSaveFileStruct uStack_e8(0x1770); - func_ov024_020d24d4(&uStack_e8.mpSaveFiles[1]); - func_ov024_020d2538(&uStack_e8.mpSaveFiles[1], sceneIndex, 0, uStack_e8.mpSaveFiles[0]); - data_027e0cf8->func_ov024_020c755c(&uStack_e8.mpSaveFiles[1]); - func_ov024_020d2518(&uStack_e8.mpSaveFiles[1]); + 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); + data_027e0cf8->func_ov024_020c755c(&uStack_e8.mUnk_04); + func_ov024_020d2518(&uStack_e8.mUnk_04); } } @@ -804,7 +762,7 @@ bool AdventureModeManager::func_ov024_020c6940(unk32 param1, unk32 param2) { void AdventureModeManager::func_ov024_020c699c() { if (data_027e0cf8->mUnk_1C) { data_027e0cf8->func_ov024_020c7724(); - GameModeLinkListNode::func_020166ac(&this->mUnk_1AC->mList); + this->mUnk_1AC->Detach(); } } @@ -832,13 +790,13 @@ unk32 AdventureModeManager::func_ov024_020c6a20() { return uVar2; } -void AdventureModeManager::func_ov024_020c6a48(unk32 param1, unk32 param2) { +void AdventureModeManager::func_ov024_020c6a48(unk32 param1, bool param2) { switch (param1) { case 0: case 1: case 2: case 3: - data_ov024_020d8698->func_ov024_020cd4e4(param1); + data_ov024_020d8698->func_ov024_020cd4e4(param1, param2); break; case 4: if (data_027e09a4->func_01ffd3d8()) { @@ -848,7 +806,7 @@ void AdventureModeManager::func_ov024_020c6a48(unk32 param1, unk32 param2) { } break; case 5: - data_ov024_020d8698->func_ov024_020cd4e4(param1); + data_ov024_020d8698->func_ov024_020cd4e4(param1, param2); this->func_ov024_020c6a48(4, param2); break; default: @@ -890,13 +848,13 @@ bool AdventureModeManager::func_ov024_020c6af4(unk32 param1) { void AdventureModeManager::func_ov024_020c6b8c() { if (this->mUnk_1B4 && data_ov024_020d8698 != NULL) { - GameModeLinkListNode::func_020166ac(&data_ov024_020d8698->mList); + data_ov024_020d8698->Detach(); } if (data_ov024_020d8698 != NULL) { - GameModeLinkListNode *origin = data_ov024_020d8698->GetOrigin(); - this->mUnk_104.mList.func_020166cc(data_ov024_020d8698->GetNode()); - origin->GetTarget()->vfunc_18(); + UnkStruct_020d8698 *ptr = data_ov024_020d8698; + this->mUnk_104.Append(ptr); + ptr->vfunc_18(); if (!this->mUnk_1B4) { data_ov024_020d8698->func_ov024_020cd094(); @@ -907,9 +865,9 @@ void AdventureModeManager::func_ov024_020c6b8c() { if (!data_027e09a4->func_01ffd3d8()) { if (!this->mUnk_1B5 && this->mUnk_1B0 != NULL) { - GameModeLinkListNode *origin = this->mUnk_1B0->GetOrigin(); - this->mUnk_104.mList.func_020166cc(this->mUnk_1B0->GetNode()); - origin->GetTarget()->vfunc_18(); + AdventureModeManager_1B0 *ptr = this->mUnk_1B0; + this->mUnk_104.Append(ptr); + ptr->vfunc_18(); this->mUnk_1B5 = true; } @@ -918,13 +876,13 @@ void AdventureModeManager::func_ov024_020c6b8c() { void AdventureModeManager::func_ov024_020c6c60() { if (this->mUnk_1B4 && data_ov024_020d8698 != NULL) { - GameModeLinkListNode::func_020166ac(&data_ov024_020d8698->mList); + data_ov024_020d8698->Detach(); this->mUnk_1B4 = false; } if (!data_027e09a4->func_01ffd3d8()) { if (this->mUnk_1B5 && this->mUnk_1B0 != NULL) { - GameModeLinkListNode::func_020166ac(&this->mUnk_1B0->mList); + this->mUnk_1B0->Detach(); this->mUnk_1B5 = false; } } diff --git a/src/024_MainGame/Game/AdventureModeManager_15C_20_00_024.cpp b/src/024_MainGame/Game/AdventureModeManager_15C_20_00_024.cpp index 686e4ada..26996f2a 100644 --- a/src/024_MainGame/Game/AdventureModeManager_15C_20_00_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_15C_20_00_024.cpp @@ -29,8 +29,8 @@ AdventureModeManager_15C_20_00::AdventureModeManager_15C_20_00(bool param1) : this->mUnk_01C = 0; } - this->mUnk_0C.mList.func_020166cc(this->mUnk_020); - this->mUnk_0C.mList.func_020166cc(this->mUnk_024); + this->mUnk_0C.Append(this->mUnk_020); + this->mUnk_0C.Append(this->mUnk_024); this->mUnk_028.mUnk_04 = this->mUnk_020; this->mUnk_078.mUnk_04 = this->mUnk_024; diff --git a/src/024_MainGame/Game/AdventureModeManager_160_024.cpp b/src/024_MainGame/Game/AdventureModeManager_160_024.cpp index c3693e62..a69b39c4 100644 --- a/src/024_MainGame/Game/AdventureModeManager_160_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_160_024.cpp @@ -95,7 +95,7 @@ void AdventureModeManager_160::vfunc_0C(unk32 param1) { } break; case 6: - if (data_ov000_020b504c.func_ov000_02067f88(0, 1) != 0) { + if (data_ov000_020b504c.func_ov000_02067f88(0, 1)) { this->func_ov024_020c7d4c(param1); } break; @@ -153,7 +153,7 @@ void AdventureModeManager_160::func_ov024_020c7d4c(unk32 param1) { this->func_ov024_020c851c(param1); UnkStruct_ov019_020d24c8_28_258 local_30(0x5F, 0); - data_0204a110.GetUnkDDC()->func_0201e588(1, (s16) (-local_30.mUnk_0E / 2), 0, 8, 0); + data_0204a110.GetUnkDDC()->func_0201e588(1, (s16) (-local_30.mUnk_0E.x / 2), 0, 8, 0); this->mUnk_18->func_ov006_020b6c74(); this->mUnk_0C = 7; diff --git a/src/024_MainGame/Game/AdventureModeManager_184_024.cpp b/src/024_MainGame/Game/AdventureModeManager_184_024.cpp index 87ade45b..c5bb9300 100644 --- a/src/024_MainGame/Game/AdventureModeManager_184_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_184_024.cpp @@ -56,8 +56,8 @@ void AdventureModeManager_184::vfunc_0C(unk32 param1) { } this->mUnk_10->func_ov010_020b7008(); - data_ov024_020d8698->func_ov024_020cd368(0, 0); - data_ov024_020d8698->func_ov024_020cd3f0(0); + data_ov024_020d8698->func_ov024_020cd368(false, false); + data_ov024_020d8698->func_ov024_020cd3f0(false); } if (this->mUnk_10 != NULL && this->mUnk_10->vfunc_20()) { diff --git a/src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp b/src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp index b4e66334..97f92fe1 100644 --- a/src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp @@ -38,14 +38,6 @@ static const bool data_ov024_020d7544[] = {true, false, true}; static const u8 data_ov024_020d7547[] = {0x03, 0x01, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00}; static u16 data_ov024_020d869c; -//! TODO figure this out -struct SomeSaveFileStruct { - /* 00 */ void *unk_00; - - SomeSaveFileStruct(unk32 param1); - ~SomeSaveFileStruct(); -}; - static const AdventureModeManager_1B8_Base_1C data_ov024_020d8200(0x14, 0x08, 0xD8, 0xB0); AdventureModeManager_1B8_Base::AdventureModeManager_1B8_Base(u8 bgType, bool param2, @@ -110,7 +102,6 @@ static inline void SetUnkValue4(int a, int b, int *pVal) { } } -// https://decomp.me/scratch/LhXwS bool AdventureModeManager_1B8_Base::func_ov024_020d0744(s32 arg1, s32 arg2, s32 arg3, s32 arg4, u8 arg5, u8 arg6) { bool sp10; s32 sp8; @@ -258,7 +249,6 @@ bool AdventureModeManager_1B8_Base::func_ov024_020d0924(unk32 param1, unk32 para return true; } -// https://decomp.me/scratch/e7SZ5 void AdventureModeManager_1B8_Base::func_ov024_020d0a64() { u32 var_r2; s32 var_r2_2; @@ -281,7 +271,7 @@ void AdventureModeManager_1B8_Base::func_ov024_020d0a64() { } if (var_r6 != 0) { - SomeSaveFileStruct sp4(var_r6); + UnkDataStruct2 sp4(var_r6); _MI_CpuFill(0, sp4.unk_00, var_r6); this->TryLoadBGChar(sp4.unk_00, GetUnkValue2(), var_r6); } @@ -290,7 +280,7 @@ void AdventureModeManager_1B8_Base::func_ov024_020d0a64() { var_r7 = GetUnkValue(0xC0 - var_r6); if (var_r7 != 0) { - SomeSaveFileStruct sp0(var_r7); + UnkDataStruct2 sp0(var_r7); _MI_CpuFill(0, sp0.unk_00, var_r7); this->TryLoadBGChar(sp0.unk_00, GetUnkValue2() + GetUnkValue(var_r6), var_r7); } @@ -510,7 +500,7 @@ void AdventureModeManager_1B8::func_ov024_020d114c() { } bool AdventureModeManager_1B8::func_ov024_020d1160() { - SomeSaveFileStruct sp1C(0x4A90); + UnkDataStruct2 sp1C(0x4A90); s32 *unk_00 = (s32 *) sp1C.unk_00; void *sp14 = (void *) ((u8 *) sp1C.unk_00 + 0x1290); @@ -601,7 +591,7 @@ void AdventureModeManager_1B8::func_ov024_020d13cc(s32 param1) { } if (GET_FLAG(gSaveManager.mUnk_000->mUnk_B30, this->mUnk_24)) { - SomeSaveFileStruct sp4(0x2290); + UnkDataStruct2 sp4(0x2290); void *unk_00 = sp4.unk_00; if (gSaveManager.func_ov000_020a0b70(unk_00, this->mUnk_24)) { diff --git a/src/024_MainGame/Game/UnkStruct_027e0cf8_024.cpp b/src/024_MainGame/Game/UnkStruct_027e0cf8_024.cpp index ba96c276..80bd8dc4 100644 --- a/src/024_MainGame/Game/UnkStruct_027e0cf8_024.cpp +++ b/src/024_MainGame/Game/UnkStruct_027e0cf8_024.cpp @@ -63,22 +63,13 @@ void UnkStruct_027e0cf8::func_ov024_020c755c(void *param1) { } } -//! TODO: figure this out -struct SomeSaveFileStruct { - /* 00 */ SaveFile *mpSaveFiles[MAX_SAVE_SLOTS]; - /* 08 */ STRUCT_PAD(0x00, 0xC4); - /* CC */ unk32 mUnk_CC; - - SomeSaveFileStruct(unk32 param1); - ~SomeSaveFileStruct(); -}; - void UnkStruct_027e0cf8::func_ov024_020c75d0(void *param1, unk32 param2, u16 param3) { if (this->mUnk_1C) { UnkStruct_027e0cf8::func_ov024_020c7724(); } - unk32 uVar1 = ((SomeSaveFileStruct *) param1)->mUnk_CC; + //! TODO: confirm what UnkDataStruct3 is so we can remove the cast + unk32 uVar1 = ((UnkDataStruct3 *) param1)->mUnk_CC; volatile Vec2us local_1c; func_ov024_020d524c((Vec2us *) &local_1c, uVar1); diff --git a/src/024_MainGame/UnkAdventureModeSystem1_024.cpp b/src/024_MainGame/UnkAdventureModeSystem1_024.cpp index e69de29b..6e07f473 100644 --- a/src/024_MainGame/UnkAdventureModeSystem1_024.cpp +++ b/src/024_MainGame/UnkAdventureModeSystem1_024.cpp @@ -0,0 +1,86 @@ +#include "MainGame/UnkAdventureModeSystem1.hpp" + +UnkAdventureModeSystem1::UnkAdventureModeSystem1(Vec2s *param1, Vec2s *param2, bool param3) { + Vec2s local_24; + Vec2s local_20; + + local_20.x = param2->x; + local_20.y = param2->y; + + local_24.x = param1->x; + local_24.y = param1->y; + + this->mUnk_04.func_0201e874(BTN_ID_UNK_08, &local_24, &local_20, 0); + + if (!param3) { + this->mUnk_04.mUnk_10 = this->mUnk_04.mUnk_20; + this->mUnk_04.mUnk_14 = this->mUnk_04.mUnk_24; + this->mUnk_04.mUnk_04 = this->mUnk_04.mUnk_06; + this->mUnk_04.mUnk_0A = false; + this->mUnk_04.mUnk_0B = false; + this->mUnk_04.mUnk_0C = true; + } +} + +UnkAdventureModeSystem1::UnkAdventureModeSystem1(bool param3) { + if (!param3) { + this->mUnk_04.mUnk_10 = this->mUnk_04.mUnk_20; + this->mUnk_04.mUnk_14 = this->mUnk_04.mUnk_24; + this->mUnk_04.mUnk_04 = this->mUnk_04.mUnk_06; + this->mUnk_04.mUnk_0A = false; + this->mUnk_04.mUnk_0B = false; + this->mUnk_04.mUnk_0C = true; + } +} + +void UnkAdventureModeSystem1::func_ov024_020cab58(Vec2s *param1, Vec2s *param2) { + Vec2s local_24; + Vec2s local_20; + + local_20.x = param2->x; + local_20.y = param2->y; + + local_24.x = param1->x; + local_24.y = param1->y; + + this->mUnk_04.func_0201e874(BTN_ID_UNK_08, &local_24, &local_20, 0); +} + +bool UnkAdventureModeSystem1::func_ov024_020caba4(unk32 param1) { + this->mUnk_04.UpdateLogic(); + + switch (this->vfunc_00(param1)) { + case 0: + if (!this->mUnk_04.mUnk_0A) { + this->mUnk_04.UnkOperations1(); + } + break; + case 2: + if (!this->mUnk_04.mUnk_0B) { + this->mUnk_04.UnkOperations2(); + } + case 1: + default: + break; + } + + if (this->mUnk_04.mUnk_10 == this->mUnk_04.mUnk_18 && this->mUnk_04.mUnk_14 == this->mUnk_04.mUnk_1C && + !this->mUnk_04.mUnk_0A) { + return true; + } + + return false; +} + +bool UnkAdventureModeSystem1::func_ov024_020cad7c(unk32 param1) { + bool ret = this->func_ov024_020caba4(param1); + + bool result = true; + + if (!ret) { + result = false; + } + + this->mUnk_48->mUnk_2A = result; + return ret; +} diff --git a/src/024_MainGame/UnkStruct_020d8698_024.cpp b/src/024_MainGame/UnkStruct_020d8698_024.cpp index e69de29b..7cb89980 100644 --- a/src/024_MainGame/UnkStruct_020d8698_024.cpp +++ b/src/024_MainGame/UnkStruct_020d8698_024.cpp @@ -0,0 +1,1332 @@ +#include "MainGame/CargoManager.hpp" +#include "Unknown/UnkStruct_0204a110.hpp" +#include "Unknown/UnkStruct_0204af1c.hpp" +#include "Unknown/UnkStruct_0204e5f8.hpp" +#include "Unknown/UnkStruct_020d8698.hpp" +#include "Unknown/UnkStruct_027e09a4.hpp" +#include "Unknown/UnkStruct_027e09b8.hpp" +#include "Unknown/UnkStruct_027e0ce0.hpp" +#include "Unknown/UnkStruct_ov000_02067bc4.hpp" +#include "Unknown/UnkStruct_ov000_020b5214.hpp" +#include "Unknown/UnkStruct_ov024_020d8660.hpp" +#include "versions.h" + +extern "C" s16 func_020196b0(unk32 param1); +extern "C" unk32 func_02015788(u16 param1); + +UnkStruct_020d8698 *data_ov024_020d8698 = NULL; + +static const u16 data_ov024_020d73d8[] = { + 0x09, + 0x0A, + 0x08, +}; + +static const u16 data_ov024_020d73de[] = { + 0x01, 0x02, 0x03, 0x00, 0x05, 0x06, 0x04, +}; + +static const u16 data_ov024_020d73ec[] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, +}; + +static const u16 data_ov024_020d73fa[] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, +}; + +static const u16 data_ov024_020d741e[] = { + 0x1A, 0x19, 0x18, 0x1D, 0x1C, 0x1B, 0x20, 0x1F, 0x1E, 0x23, +}; + +static const u16 data_ov024_020d740a[] = { + 0x02, 0x01, 0x00, 0x05, 0x04, 0x03, 0x08, 0x07, 0x06, 0x0B, +}; + +static const u16 data_ov024_020d7432[] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x00, +}; + +UnkStruct_020d8698 *UnkStruct_020d8698::Create() { + return new(HeapIndex_1) UnkStruct_020d8698(); +} + +UnkStruct_020d8698::UnkStruct_020d8698() : + mUnk_01C(NULL), + mUnk_020(true), + mUnk_024(NULL), + mUnk_028(true), + mUnk_02C(NULL), + mUnk_030(true), + mUnk_034(NULL), + mUnk_038(true), + mUnk_03C(NULL), + mUnk_040(true), + mUnk_044(NULL), + mUnk_048(true) { + this->mUnk_18 = true; + this->mUnk_19 = true; + this->mUnk_01C = new(HeapIndex_1) UnkStruct_020d8698_1C(); + this->mUnk_024 = new(HeapIndex_1) UnkStruct_020d8698_24(); + this->mUnk_02C = new(HeapIndex_1) UnkStruct_020d8698_2C(); + + if (!data_027e09a4->func_01ffd3d8()) { + this->mUnk_034 = new(HeapIndex_1) UnkStruct_020d8698_34(); + this->mUnk_044 = new(HeapIndex_1) UnkStruct_020d8698_44(); + + if (this->mUnk_048) { + this->mUnk_0C.Append(this->mUnk_044); + } + } + + if (data_027e09a4->IsDungeonTower() && !GET_FLAG(data_027e0ce0->mUnk_2C->mFlags, ItemFlag_LokomoSword)) { + this->mUnk_03C = new(HeapIndex_1) UnkStruct_020d8698_3C(); + } + + this->mUnk_01C->func_ov024_020cdec8(); +} + +UnkStruct_020d8698::~UnkStruct_020d8698() { + delete this->mUnk_01C; + this->mUnk_01C = NULL; + + 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 (this->mUnk_03C != NULL) { + delete this->mUnk_03C; + this->mUnk_03C = NULL; + } +} + +void UnkStruct_020d8698::func_ov024_020cd094() { + this->mUnk_01C->func_ov024_020cd768(); + this->mUnk_024->func_ov024_020ce518(); + this->mUnk_02C->func_ov024_020ced54(); + + if (data_ov000_020b504c.func_ov000_02067f88(0, 0) || data_027e09b8->func_ov000_020732dc(0)) { + return; + } + + UnkStruct_ov000_02067bc4::UnkStruct1 local; + +#if __MWERKS__ + local.data = data_ov000_020b504c.func_ov000_02067bc4(0)->mUnk_028.data; +#else + UnkStruct_ov000_02067bc4::UnkStruct1 *pData = &data_ov000_020b504c.func_ov000_02067bc4(0)->mUnk_028; + + local.mUnk_00 = pData->mUnk_00; + local.mUnk_02 = pData->mUnk_02; + local.mUnk_04 = pData->mUnk_04; + local.mUnk_08 = pData->mUnk_08; + local.mUnk_0C = pData->mUnk_0C; + local.mUnk_0D = pData->mUnk_0D; + local.mUnk_0E = pData->mUnk_0E; + local.mUnk_0F = pData->mUnk_0F; +#endif + + if (!local.mUnk_0C) { + this->func_ov024_020cd368(false, false); + this->func_ov024_020cd3f0(false); + } +} + +void UnkStruct_020d8698::func_ov024_020cd150() { + if (data_027e09a4->IsCutscene()) { + return; + } + + this->mUnk_01C->func_ov024_020cd774(); + this->mUnk_024->func_ov024_020ce570(); + this->mUnk_02C->func_ov024_020ceda8(); + + if (!data_027e09a4->func_01ffd3d8()) { + this->mUnk_034->func_ov024_020cf698(); + this->mUnk_044->func_ov031_0210eeb4(); + data_ov024_020d8698->func_ov024_020cd458(data_027e0ce0->mUnk_2C->mEquippedItem, true); + } + + if (this->mUnk_03C != NULL) { + this->mUnk_03C->func_ov024_020cf82c(); + } +} + +void UnkStruct_020d8698::vfunc_08(Input *pButtons, TouchControl *pTouchControl) { + if (this->mUnk_020 && !this->func_ov024_020cd604()) { + this->mUnk_01C->func_ov024_020cd9f0(); + } + + if (this->mUnk_028) { + this->mUnk_024->func_ov024_020ce5cc(); + } + + if (this->mUnk_030) { + this->mUnk_02C->func_ov024_020cef58(); + } + + if (!data_027e09a4->func_01ffd3d8() && this->mUnk_038) { + this->mUnk_034->func_ov024_020cf6e4(); + } + + if (this->mUnk_03C != NULL && this->mUnk_040) { + this->mUnk_03C->func_ov024_020cf888(); + } +} + +void UnkStruct_020d8698::vfunc_10(unk8 *param1) { + if (data_0204a110.mUnk_DF4 == 0 && !this->func_ov024_020cd604()) { + if (this->mUnk_020) { + this->mUnk_01C->func_ov024_020cdaac(); + } + + if (this->mUnk_028) { + this->mUnk_024->func_ov024_020ce88c(param1); + } + + if (this->mUnk_030 && data_ov024_020d8660->mUnk_1C != 5) { + this->mUnk_02C->func_ov024_020cf2b8(param1); + } + + if (!data_027e09a4->func_01ffd3d8() && this->mUnk_038) { + this->mUnk_034->func_ov024_020cf724(); + } + } + + if (this->mUnk_03C != NULL && this->mUnk_040) { + this->mUnk_03C->func_ov024_020cf88c(); + } +} + +void UnkStruct_020d8698::func_ov024_020cd348(u8 param1, u8 param2) { + this->mUnk_01C->func_ov024_020cdd3c(param1, param2); +} + +void UnkStruct_020d8698::func_ov024_020cd358(u8 param1) { + this->mUnk_01C->func_ov024_020cde54(param1); +} + +void UnkStruct_020d8698::func_ov024_020cd368(bool param1, bool param2) { + if (!data_027e09a4->func_ov000_0207056c()) { + this->mUnk_024->func_ov024_020ce990(param1, param2); + } +} + +void UnkStruct_020d8698::func_ov024_020cd3a4() { + if (!data_027e09a4->func_ov000_0207056c()) { + this->mUnk_024->func_ov024_020ce9ac(); + } +} + +void UnkStruct_020d8698::func_ov024_020cd3d0() { + this->mUnk_02C->func_ov024_020cf514(); +} + +void UnkStruct_020d8698::func_ov024_020cd3e0(bool param1) { + this->mUnk_02C->func_ov024_020cf53c(param1); +} + +void UnkStruct_020d8698::func_ov024_020cd3f0(bool param1) { + this->mUnk_02C->func_ov024_020cf494(param1); +} + +void UnkStruct_020d8698::func_ov024_020cd400() { + this->mUnk_02C->func_ov024_020cf4c4(); +} + +void UnkStruct_020d8698::func_ov024_020cd410() { + this->mUnk_02C->func_ov024_020cee58(); +} + +void UnkStruct_020d8698::func_ov024_020cd420() { + if (data_027e09a4->IsNotCutscene() && !data_027e09a4->func_ov000_0207056c()) { + this->mUnk_02C->func_ov024_020cee64(); + } +} + +void UnkStruct_020d8698::func_ov024_020cd458(ItemFlag itemFlag, bool param2) { + if (!data_027e09a4->func_01ffd3d8() && data_027e09a4->IsNotCutscene()) { + this->mUnk_044->func_ov031_0210f7e4(itemFlag, param2); + } +} + +void UnkStruct_020d8698::func_ov024_020cd4a4(bool param1) { + if (data_027e09a4->func_01ffd3d8()) { + return; + } + + if (param1) { + this->mUnk_044->mUnk_18B = true; + } else { + this->mUnk_044->mUnk_18B = false; + } +} + +void UnkStruct_020d8698::func_ov024_020cd4e4(u16 param1, bool param2) { + switch (param1) { + case 0: + this->mUnk_020 = param2; + break; + case 1: + this->mUnk_028 = param2; + break; + case 3: + this->mUnk_030 = param2; + break; + case 2: + if (!data_027e09a4->func_01ffd3d8() && param2 != this->mUnk_048) { + this->mUnk_048 = param2; + + if (this->mUnk_044 != NULL) { + if (param2) { + this->mUnk_0C.Append(this->mUnk_044); + } else { + this->mUnk_044->Detach(); + } + } + } + break; + case 5: + this->func_ov024_020cd4e4(0, param2); + this->func_ov024_020cd4e4(1, param2); + this->func_ov024_020cd4e4(2, param2); + this->func_ov024_020cd4e4(3, param2); + break; + default: + break; + } +} + +bool UnkStruct_020d8698::func_ov024_020cd5c0(u16 param1) { + switch (param1) { + case 0: + return this->mUnk_020; + case 1: + return this->mUnk_028; + case 2: + return this->mUnk_048; + case 3: + return this->mUnk_030; + default: + break; + } + + return false; +} + +bool UnkStruct_020d8698::func_ov024_020cd604() { + if (data_027e09b8 != NULL) { + if (data_027e09b8->func_ov000_020732dc(0) || data_027e09b8->func_ov000_020732dc(4) || data_0204e5f8.mUnk_18 || + data_0204e5f8.mUnk_3A != 0 || data_0204e5f8.mUnk_3E != 0) { + return true; + } + } + + return false; +} + +UnkStruct_020d8698_1C::UnkStruct_020d8698_1C() { + this->mUnk_000.Init(this->func_ov024_020ce2a8()); + this->func_ov024_020cd774(); +} + +void UnkStruct_020d8698_1C::func_ov024_020cd768() { + this->func_ov024_020cdec8(); +} + +void UnkStruct_020d8698_1C::func_ov024_020cd774() { + if (data_027e09a4->func_01ffd3d8()) { + s32 sVar1 = func_020196b0(0x34); + s32 sVar2 = func_020196b0(0x27); + + this->mUnk_00C.UnknownAction(sVar1, 0); + this->mUnk_024.func_ov000_0206082c(sVar1, 0); + this->mUnk_204.func_ov000_0206082c(sVar2, 1); + this->mUnk_18C.func_ov000_0206082c(sVar2, 2); + this->mUnk_114.func_ov000_0206082c(sVar2, 3); + this->mUnk_09C.func_ov000_0206082c(sVar1, 2); + this->mUnk_3E4[0].func_ov000_0206082c(sVar1, 1); + this->mUnk_3E4[0].func_ov000_02060bac(); + this->mUnk_3E4[1].func_ov000_0206082c(sVar1, 1); + this->mUnk_3E4[1].func_ov000_02060bac(); + this->mUnk_36C.func_ov000_0206082c(sVar2, 6); + this->mUnk_2F4.func_ov000_0206082c(sVar2, 7); + this->mUnk_27C.func_ov000_0206082c(sVar2, 8); + } else { + s32 sVar2 = func_020196b0(0x27); + + this->mUnk_00C.UnknownAction(sVar2, 0); + this->mUnk_024.func_ov000_0206082c(sVar2, 0); + this->mUnk_204.func_ov000_0206082c(sVar2, 1); + this->mUnk_18C.func_ov000_0206082c(sVar2, 2); + this->mUnk_114.func_ov000_0206082c(sVar2, 3); + this->mUnk_09C.func_ov000_0206082c(sVar2, 4); + this->mUnk_3E4[0].func_ov000_0206082c(sVar2, 5); + this->mUnk_3E4[0].func_ov000_02060bac(); + this->mUnk_3E4[1].func_ov000_0206082c(sVar2, 5); + this->mUnk_3E4[1].func_ov000_02060bac(); + this->mUnk_36C.func_ov000_0206082c(sVar2, 6); + this->mUnk_2F4.func_ov000_0206082c(sVar2, 7); + this->mUnk_27C.func_ov000_0206082c(sVar2, 8); + } +} + +void UnkStruct_020d8698_1C::func_ov024_020cd9f0() { + this->mUnk_024.func_ov000_020609c4(); + this->mUnk_114.func_ov000_020609c4(); + this->mUnk_18C.func_ov000_020609c4(); + this->mUnk_204.func_ov000_020609c4(); + this->mUnk_3E4[0].func_ov000_020609c4(); + this->mUnk_3E4[1].func_ov000_020609c4(); + this->mUnk_36C.func_ov000_020609c4(); + this->mUnk_2F4.func_ov000_020609c4(); + this->mUnk_27C.func_ov000_020609c4(); + this->func_ov024_020cdfd8(); + + if (data_027e09b8->func_ov000_020732dc(2)) { + return; + } + + s32 iVar1 = this->func_ov024_020ce218(); + + if (iVar1 != 0) { + if (iVar1 <= 2) { + data_ov000_020b5214.func_ov000_0206e7e8(0x6B); + } else if (iVar1 <= 6) { + data_ov000_020b5214.func_ov000_0206e7e8(0x6A); + } + } +} + +void UnkStruct_020d8698_1C::func_ov024_020cdaac() { + unk32 temp_r0 = this->func_ov024_020ce2a8(); + + for (int var_r8 = 0; var_r8 < temp_r0; var_r8++) { + unk32 temp_r1 = (this->func_ov024_020ce260() / 4) - 1; + unk32 var_r7; + + if (var_r8 <= temp_r1) { + if (data_0204a110.mUnk_000 == 0) { + var_r7 = var_r8; + } else if (var_r8 < 8) { + if (temp_r1 < 8) { + var_r7 = temp_r1 - var_r8; + } else { + var_r7 = 0x07 - var_r8; + } + } else { + var_r7 = 0x17 - var_r8; + } + + Vec2s sp4; + if (data_027e09a4->func_01ffd3d8()) { + UnkStruct_ov019_020d24c8_28_258 sp20(func_020196b0(0x34), data_ov024_020d73fa[var_r7]); + sp4.x = sp20.mPosU.x; + sp4.y = sp20.mPosU.y; + } else { + UnkStruct_ov019_020d24c8_28_258 sp20(func_020196b0(0x27), data_ov024_020d7432[var_r7]); + sp4.x = sp20.mPosU.x; + sp4.y = sp20.mPosU.y; + } + + //! TODO: regalloc fix + Vec2s *ptr2 = &sp4; + UnkSubStruct19 *ptr3 = &this->mUnk_3E4[1]; + + switch (this->GetIterValue(var_r8)) { + case 0: + data_0204af1c.func_0201aad0(&this->mUnk_09C, &sp4, 0, NULL); + break; + case 1: + data_0204af1c.func_0201aa44(&this->mUnk_00C, &sp4, 0, NULL); + break; + case 2: + data_0204af1c.func_0201aad0(&this->mUnk_024, &sp4, 0, NULL); + break; + case 5: + data_0204af1c.func_0201aad0(&this->mUnk_114, &sp4, 0, NULL); + break; + case 7: + data_0204af1c.func_0201aad0(&this->mUnk_18C, &sp4, 0, NULL); + break; + case 9: + data_0204af1c.func_0201aad0(&this->mUnk_204, &sp4, 0, NULL); + break; + case 3: + data_0204af1c.func_0201aad0(&this->mUnk_3E4[0], &sp4, 0, NULL); + break; + case 4: + data_0204af1c.func_0201aad0(ptr3, &sp4, 0, NULL); + break; + case 6: + data_0204af1c.func_0201aad0(&this->mUnk_27C, &sp4, 0, NULL); + break; + case 8: + data_0204af1c.func_0201aad0(&this->mUnk_2F4, &sp4, 0, NULL); + break; + case 10: + data_0204af1c.func_0201aad0(&this->mUnk_36C, ptr2, 0, NULL); + break; + case 11: + default: + break; + } + } + } +} + +void UnkStruct_020d8698_1C::func_ov024_020cdd3c(u8 param1, u8 param2) { + u8 var_r4 = param2; + u8 var_r5 = param1; + + if (data_027e09a4->func_01ffd3d8()) { + var_r5 *= 4; + var_r4 *= 4; + } + +#if IS_JP + if (var_r5 < var_r4 && (var_r4 - var_r5) >= 4) { + this->mUnk_008 = var_r5 / 4; + this->mUnk_009 = var_r4 / 4; + this->mUnk_4D4 = 0x12; + this->mUnk_00A = var_r4 % 4; + + for (int var_r2 = 0; var_r2 < this->mUnk_008; var_r2++) { + this->SetIterValue(var_r2, 1); + } + + this->SetIterValue(this->mUnk_008, 3); + this->mUnk_3E4[0].func_ov000_02060b64(); + + if ((var_r4 - var_r5) != 4) { + return; + } + + this->mUnk_00A = 0; + + int value = var_r4 % 4; + if (value != 0) { + switch (value) { + case 1: + this->SetIterValue(this->mUnk_009, 0x06); + this->mUnk_27C.func_ov000_02060b64(); + break; + case 2: + this->SetIterValue(this->mUnk_009, 0x08); + this->mUnk_2F4.func_ov000_02060b64(); + break; + case 3: + this->SetIterValue(this->mUnk_009, 0x0A); + this->mUnk_36C.func_ov000_02060b64(); + break; + default: + break; + } + } + + return; + } +#else + if (var_r5 < var_r4) { + this->mUnk_008 = var_r5 / 4; + this->mUnk_009 = var_r4 / 4; + this->mUnk_4D4 = 0x12; + + if (this->mUnk_008 != 0) { + this->SetIterValue(this->mUnk_008 - 1, 1); + } + + this->SetIterValue(this->mUnk_008, 3); + this->mUnk_3E4[0].func_ov000_02060b64(); + + if ((var_r4 - var_r5) != 4) { + return; + } + + int value = var_r4 % 4; + if (value != 0) { + switch (value) { + case 1: + this->SetIterValue(this->mUnk_009, 0x06); + this->mUnk_27C.func_ov000_02060b64(); + break; + case 2: + this->SetIterValue(this->mUnk_009, 0x08); + this->mUnk_2F4.func_ov000_02060b64(); + break; + case 3: + this->SetIterValue(this->mUnk_009, 0x0A); + this->mUnk_36C.func_ov000_02060b64(); + break; + default: + break; + } + } + + return; + } +#endif + + this->func_ov024_020cdec8(); +} + +void UnkStruct_020d8698_1C::func_ov024_020cde54(u8 param1) { + u8 var_r5 = param1; + + if (data_027e09a4->func_01ffd3d8() != 0) { + var_r5 *= 4; + } + + int temp_r3 = var_r5 / 4; + + for (int var_ip = 0; var_ip < temp_r3; var_ip++) { + if (this->GetIterValue(var_ip) == 0x0B) { + this->SetIterValue(var_ip, 0x00); + } + } + + this->func_ov024_020cdd3c(this->func_ov024_020ce218(), var_r5); +} + +void UnkStruct_020d8698_1C::func_ov024_020cdec8() { + s32 temp_r5 = this->func_ov024_020ce218(); + s32 temp_r0 = this->func_ov024_020ce260(); + + s32 temp_r4 = temp_r5 / 4; + s32 temp_r5_2 = temp_r5 % 4; + s32 temp_r7 = temp_r0 / 4; + + s32 temp_r0_2 = this->func_ov024_020ce2a8(); + + for (int var_r8 = 0; var_r8 < temp_r0_2; var_r8++) { + if (var_r8 < temp_r7) { + if (var_r8 < temp_r4) { + if ((var_r8 == (temp_r4 - 1)) && (temp_r5_2 == 0)) { + this->SetIterValue(var_r8, 0x02); + } else { + this->SetIterValue(var_r8, 0x01); + } + } else if (var_r8 == temp_r4) { + switch (temp_r5_2) { + case 0: + this->SetIterValue(var_r8, 0x00); + break; + case 1: + this->SetIterValue(var_r8, 0x05); + break; + case 2: + this->SetIterValue(var_r8, 0x07); + break; + case 3: + this->SetIterValue(var_r8, 0x09); + break; + default: + break; + } + } else if (var_r8 < temp_r7) { + this->SetIterValue(var_r8, 0x00); + } + } else { + this->SetIterValue(var_r8, 0x0B); + } + } +} + +void UnkStruct_020d8698_1C::func_ov024_020cdfd8() { + s32 temp_r0 = this->func_ov024_020ce2a8(); + + for (int var_r7 = 0; var_r7 < temp_r0; var_r7++) { + switch (this->GetIterValue(var_r7)) { + case 3: + case 4: { + bool var_r0 = false; + bool var_r8 = false; + + switch (this->GetIterValue(var_r7)) { + case 3: + if (this->mUnk_4D4 != 0) { + this->mUnk_4D4--; + + if (this->mUnk_4D4 == 8) { + var_r8 = true; + } else if (this->mUnk_4D4 == 0) { + var_r0 = true; + } + } + break; + case 4: + if (this->mUnk_4D5 != 0) { + this->mUnk_4D5--; + + if (this->mUnk_4D5 == 8) { + var_r8 = true; + } else if (this->mUnk_4D5 == 0) { + var_r0 = true; + } + } + break; + default: + break; + } + + if (var_r0) { + this->SetIterValue(var_r7, 0x01); + + if (this->mUnk_008 == this->mUnk_009) { + if (this->mUnk_008 == (data_027e09a4->func_01ffd3d8() ? 0x08 : 0x10) || + this->GetIterValue(this->mUnk_008) == 0x0B || this->GetIterValue(this->mUnk_008) == 0x00) { + + this->mUnk_024.func_ov000_02060b64(); + this->SetIterValue(this->mUnk_008 - 1, 0x02); + } + } + } + + if (var_r8) { + this->mUnk_008++; + + if (this->mUnk_008 != this->mUnk_009) { + // the cast is required to fix the regalloc + if (this->GetIterValue((u32) var_r7) == 3) { + this->mUnk_3E4[1].func_ov000_02060b64(); + this->SetIterValue(this->mUnk_008, 0x04); + this->mUnk_4D5 = 0x12; + } else { + this->mUnk_3E4[0].func_ov000_02060b64(); + this->SetIterValue(this->mUnk_008, 0x03); + this->mUnk_4D4 = 0x12; + } + } else if (this->mUnk_00A != 0) { +#if IS_JP + switch (this->mUnk_00A) { + case 1: + this->SetIterValue(this->mUnk_008, 0x06); + this->mUnk_27C.func_ov000_02060b64(); + break; + case 2: + this->SetIterValue(this->mUnk_008, 0x08); + this->mUnk_2F4.func_ov000_02060b64(); + break; + case 3: + this->SetIterValue(this->mUnk_008, 0x0A); + this->mUnk_36C.func_ov000_02060b64(); + break; + default: + break; + } + + this->mUnk_00A = 0; + data_ov000_020b5214.func_ov000_0206db44(0x6C); +#endif + } + } + + break; + } + case 6: + if (this->mUnk_27C.func_ov000_02060af8()) { + this->mUnk_114.func_ov000_02060b64(); + this->SetIterValue(var_r7, 0x05); + } + break; + case 8: + if (this->mUnk_2F4.func_ov000_02060af8()) { + this->mUnk_18C.func_ov000_02060b64(); + this->SetIterValue(var_r7, 0x07); + break; + } + break; + case 10: + if (this->mUnk_36C.func_ov000_02060af8()) { + this->mUnk_204.func_ov000_02060b64(); + this->SetIterValue(var_r7, 0x09); + break; + } + break; + default: + break; + } + } +} + +u8 UnkStruct_020d8698_1C::func_ov024_020ce218() { + if (data_027e09a4->func_01ffd3d8()) { + return data_027e0ce0->mUnk_34->mUnk_28 * 4; + } + + return data_027e0ce0->mHealth; +} + +u8 UnkStruct_020d8698_1C::func_ov024_020ce260() { + if (data_027e09a4->func_01ffd3d8()) { + return data_027e0ce0->mUnk_34->mUnk_24 * 4; + } + + return data_027e0ce0->mHealthMax; +} + +u32 UnkStruct_020d8698_1C::func_ov024_020ce2a8() { + if (data_027e09a4->func_01ffd3d8()) { + return 0x08; + } + + return 0x10; +} + +//! TODO: remove the volatile casts? +UnkStruct_020d8698_24::UnkStruct_020d8698_24() : + mUnk_000(func_020196b0(0x1B), 0), + mUnk_05C(0x18, data_ov024_020d740a, 0, 1), + mUnk_100(0), + mUnk_104(false), + mUnk_105(false) { + this->mUnk_106.x = 0; + this->mUnk_106.y = 0; + + s16 sVar2 = func_020196b0(0x1B); + + UnkStruct_ov019_020d24c8_28_258 local_30((volatile s32) sVar2, 1); + UnkStruct_ov019_020d24c8_28_258 local_48((volatile s32) sVar2, 2); + this->mUnk_05C.mUnk_04 = local_48.mPos.x - local_30.mPos.x; + + UnkStruct_ov019_020d24c8_28_258 local_60((volatile s32) sVar2, 0); + + Vec2s_CopySub(&local_30.mPos, &local_60.mPos, &this->mUnk_0FC); + + this->mUnk_05C.func_ov000_02065b48(data_027e0ce0->mUnk_2C->mNumRupees, 0); + + UnkStruct_ov019_020d24c8_28_258 local_78((volatile s32) sVar2, 4); + s16 temp_r0 = local_78.mPos.x + local_78.mUnk_0E.x; + + if (data_0204a110.mUnk_000 == 0) { + Vec2s sp10; + Vec2s spC; + + spC.x = this->mUnk_000.mPos.x; + spC.y = this->mUnk_000.mPos.y; + + sp10.x = this->mUnk_000.mPos.x - temp_r0; + sp10.y = this->mUnk_000.mPos.y; + + this->mUnk_018.func_0201e874(BTN_ID_UNK_08, &sp10, &spC, 1); + } else { + Vec2s sp8; + Vec2s sp4; + + sp4.x = this->mUnk_000.mPos.x; + sp4.y = this->mUnk_000.mPos.y; + + sp8.x = this->mUnk_000.mPos.x + temp_r0; + sp8.y = this->mUnk_000.mPos.y; + + this->mUnk_018.func_0201e874(BTN_ID_UNK_08, &sp8, &sp4, 1); + } +} + +void UnkStruct_020d8698_24::func_ov024_020ce518() { + this->mUnk_018.Subprocess2_UnkValueSets(); + this->mUnk_018.UnkOperations3(); + this->mUnk_05C.func_ov000_02065b48(data_027e0ce0->mUnk_2C->mNumRupees, 0); + this->mUnk_104 = false; +} + +void UnkStruct_020d8698_24::func_ov024_020ce570() { + this->mUnk_000.UnknownAction(func_020196b0(0x1B), 0); + this->mUnk_05C.func_ov000_02065988(0x18, data_ov024_020d740a); +} + +void UnkStruct_020d8698_24::func_ov024_020ce5cc() { + bool var_r2 = false; + bool var_r3 = false; + + if (this->mUnk_100 > 0 && this->mUnk_05C.mUnk_9C == 0) { + this->mUnk_100--; + } + + if (this->mUnk_104 || this->mUnk_100 > 0 || this->mUnk_05C.mUnk_9C != 0) { + var_r2 = true; + } else { + var_r3 = true; + } + + if (var_r2) { + if (!this->mUnk_018.mUnk_0A) { + this->mUnk_018.mUnk_0A = true; + this->mUnk_018.UnkOperations1(); + this->mUnk_018.mUnk_08 = 1; + } + } else if (var_r3) { + if (!this->mUnk_018.mUnk_0B) { + this->mUnk_018.mUnk_0B = true; + this->mUnk_018.UnkOperations2(); + this->mUnk_018.mUnk_08 = 1; + } + } + + this->mUnk_018.UpdateLogic(); + this->mUnk_05C.func_ov000_02065b48(data_027e0ce0->mUnk_2C->mNumRupees, 1); + + if (data_0204a110.mUnk_000 == 1) { + switch (func_02015788(this->mUnk_05C.mUnk_94)) { + case 1: + this->mUnk_106.x = this->mUnk_05C.mUnk_04 * 3; + this->mUnk_106.y = 0; + break; + case 2: + this->mUnk_106.x = this->mUnk_05C.mUnk_04 * 2; + this->mUnk_106.y = 0; + break; + case 3: + this->mUnk_106.x = this->mUnk_05C.mUnk_04; + this->mUnk_106.y = 0; + break; + case 4: + this->mUnk_106.x = 0; + this->mUnk_106.y = 0; + break; + default: + break; + } + } + + this->mUnk_05C.func_ov000_02065b8c(); + + if (this->mUnk_05C.mUnk_9C != 0) { + if (this->mUnk_05C.mUnk_9C == 1) { + data_ov000_020b5214.func_ov000_0206e7e8(0x6E); + } else { + data_ov000_020b5214.func_ov000_0206e7e8(0x6F); + } + } +} + +void UnkStruct_020d8698_24::func_ov024_020ce88c(unk8 *param1) { + UnkDataStruct1 sp14; + Vec2s sp10; + Vec2s spC; + Vec2s sp8; + Vec2s sp4; + + Vec2s *pSpC = (Vec2s *) &spC; + func_0201e8d4(pSpC, &this->mUnk_018); + Vec2s_Add(pSpC, &this->mUnk_106, &sp10); + data_0204af1c.func_0201aa44(&this->mUnk_000, &sp10, 2, NULL); + + sp14.Init(); + sp14.SetUnk04(2); + + Vec2s *pSp4 = (Vec2s *) &sp4; + func_0201e8d4(pSp4, &this->mUnk_018); + Vec2s_OffsetAdd(pSp4, &this->mUnk_0FC, &this->mUnk_106, &sp8); + Vec2s_Copy(&sp8, &this->mUnk_05C.mUnk_00); + + this->mUnk_05C.func_ov000_020659d0(param1, &sp14); +} + +void UnkStruct_020d8698_24::func_ov024_020ce990(bool param1, bool param2) { + this->mUnk_105 = param1; + + if (param2) { + this->mUnk_100 = 0x4B; + } else { + this->mUnk_104 = true; + } +} + +void UnkStruct_020d8698_24::func_ov024_020ce9ac() { + this->mUnk_104 = false; + + if (data_ov024_020d8698->func_ov024_020cd604()) { + this->mUnk_018.Subprocess2_UnkValueSets(); + this->mUnk_018.UnkOperations3(); + } +} + +UnkStruct_020d8698_2C::UnkStruct_020d8698_2C() : + mUnk_000(0), + mUnk_004(func_020196b0(0x1B), 6), + mUnk_01C(func_020196b0(0x1B), 5), + mUnk_034(func_020196b0(0x1B), 9), + mUnk_090(0x18, data_ov024_020d740a, 0, 1), + mUnk_13C(0), + mUnk_140(false), + mUnk_141(false), + mUnk_142(false), + mUnk_143(false), + mUnk_144(0), + mUnk_146(false) { + this->mUnk_218.x = 0; + this->mUnk_218.y = 0; + + s16 sVar2 = func_020196b0(0x1B); + + UnkStruct_ov019_020d24c8_28_258 local_30((volatile s32) sVar2, 7); + UnkStruct_ov019_020d24c8_28_258 local_48((volatile s32) sVar2, 8); + this->mUnk_090.mUnk_04 = local_48.mPos.x - local_30.mPos.x; + + this->mUnk_090.func_ov000_02065b48(gpCargoManager->GetCargo()->GetAmount(), 0); + + Vec2s_CopySub(&local_30.mPos, &this->mUnk_004.mPos, &this->mUnk_130); + Vec2s_CopySub(&this->mUnk_034.mPos, &this->mUnk_004.mPos, &this->mUnk_134); + Vec2s_CopySub(&this->mUnk_01C.mPos, &this->mUnk_004.mPos, &this->mUnk_138); + + UnkStruct_ov019_020d24c8_28_258 local_78((volatile s32) sVar2, 8); + s16 temp_r0 = local_78.mPos.x + local_78.mUnk_0E.x; + + if (data_0204a110.mUnk_000 == 0) { + Vec2s sp10; + Vec2s spC; + + spC.x = this->mUnk_004.mPos.x; + spC.y = this->mUnk_004.mPos.y; + + sp10.x = this->mUnk_004.mPos.x - temp_r0; + sp10.y = this->mUnk_004.mPos.y; + + this->mUnk_04C.func_0201e874(BTN_ID_UNK_08, &sp10, &spC, 1); + } else { + Vec2s sp8; + Vec2s sp4; + + sp4.x = this->mUnk_004.mPos.x; + sp4.y = this->mUnk_004.mPos.y; + + sp8.x = this->mUnk_004.mPos.x + temp_r0; + sp8.y = this->mUnk_004.mPos.y; + + this->mUnk_04C.func_0201e874(BTN_ID_UNK_08, &sp8, &sp4, 1); + } + + if (gpCargoManager->GetCargo()->IsTypeSet()) { + this->func_ov024_020cee84(); + } + + if (data_027e09a4->func_01ffd3d8() && gpCargoManager->GetCargo()->IsTypeSet()) { + this->mUnk_141 = true; + } else { + this->mUnk_141 = false; + } +} + +void UnkStruct_020d8698_2C::func_ov024_020ced54() { + this->mUnk_04C.Subprocess2_UnkValueSets(); + this->mUnk_04C.UnkOperations3(); + this->mUnk_090.func_ov000_02065b48(gpCargoManager->GetCargo()->GetAmount(), 0); + this->mUnk_140 = false; +} + +void UnkStruct_020d8698_2C::func_ov024_020ceda8() { + s16 sVar1 = func_020196b0(0x1B); + this->mUnk_004.UnknownAction((volatile s32) sVar1, 0x06); + this->mUnk_01C.UnknownAction((volatile s32) sVar1, 0x05); + this->mUnk_034.UnknownAction((volatile s32) sVar1, 0x09); + this->mUnk_090.func_ov000_02065988(0x18, data_ov024_020d740a); +} + +void UnkStruct_020d8698_2C::func_ov024_020cee58() { + this->func_ov024_020cee84(); +} + +void UnkStruct_020d8698_2C::func_ov024_020cee64() { + if (gpCargoManager->GetCargo()->IsTypeSet()) { + this->mUnk_143 = true; + } else { +#if IS_JP + this->mUnk_141 = false; + this->mUnk_04C.Subprocess2_UnkValueSets(); + this->mUnk_04C.UnkOperations3(); +#endif + } +} + +void UnkStruct_020d8698_2C::func_ov024_020cee84() { + if (!data_027e0994->mUnk_004.func_0201c2b0(func_020196b0(0x1B))) { + return; + } + + wchar_t path[32]; + path[0] = L'\0'; + path[31] = L'\0'; + + this->mUnk_14C.func_ov000_02060e3c(0, "Cargo.ncgr", path); + +#if IS_JP + if (!gpCargoManager->GetCargo()->IsTypeSet()) { + this->mUnk_141 = false; + return; + } +#endif + + CargoType eType = gpCargoManager->GetCargo()->GetType(); + this->mUnk_14C.func_ov000_02060c50(path, &this->mUnk_198, 0x80, &this->mUnk_004); + this->mUnk_14C.func_ov000_02060db8(data_ov024_020d73ec[eType]); + this->mUnk_14C.func_ov000_02060c7c(0); + this->mUnk_14C.func_ov000_02060d7c(0x1D, data_ov024_020d73de[eType]); +} + +void UnkStruct_020d8698_2C::func_ov024_020cef58() { + this->mUnk_090.func_ov000_02065b8c(); + this->mUnk_090.func_ov000_02065b48(gpCargoManager->GetCargo()->GetAmount(), 1); + + if (data_0204a110.mUnk_000 == 1) { + switch (func_02015788(this->mUnk_090.mUnk_94)) { + case 1: + this->mUnk_218.x = this->mUnk_090.mUnk_04; + this->mUnk_218.y = 0; + break; + case 2: + this->mUnk_218.x = 0; + this->mUnk_218.y = 0; + break; + default: + break; + } + } + + bool var_r2 = false; + bool var_r3 = false; + + if (this->mUnk_13C > 0 && this->mUnk_090.mUnk_9C == 0) { + this->mUnk_13C--; + } + + if (this->mUnk_141 || this->mUnk_140 || this->mUnk_13C > 0 || this->mUnk_090.mUnk_9C != 0) { + var_r2 = true; + } else { + var_r3 = true; + } + + if (var_r2) { + if (!this->mUnk_04C.mUnk_0A) { + this->mUnk_04C.mUnk_0A = true; + this->mUnk_04C.UnkOperations1(); + this->mUnk_04C.mUnk_08 = 1; + } + } else if (var_r3) { + if (!this->mUnk_04C.mUnk_0B) { + this->mUnk_04C.mUnk_0B = true; + this->mUnk_04C.UnkOperations2(); + this->mUnk_04C.mUnk_08 = 1; + } + } + + this->mUnk_04C.UpdateLogic(); + + if (this->mUnk_000 != 0) { + switch (this->mUnk_000) { + case 1: + this->mUnk_148++; + + if (this->mUnk_148 == 0x1E) { + this->mUnk_148 = 0; + this->func_ov024_020cf5a8(true); + } else if (this->mUnk_148 == 0x0F) { + this->func_ov024_020cf5a8(false); + } + break; + case 2: + this->mUnk_144--; + + if (this->mUnk_144 == 0) { + if (this->mUnk_146) { + this->func_ov024_020cf584(); + } else { + this->func_ov024_020cf570(); + } + } + break; + default: + break; + } + } + + if (this->mUnk_143 && data_027e0994->func_02018ad4()) { + this->func_ov024_020cee84(); + this->mUnk_143 = false; + } + + if (this->mUnk_090.mUnk_9C != 0) { + if (this->mUnk_090.mUnk_9C == 1) { + data_ov000_020b5214.func_ov000_0206e7e8(0x78); + } else { + data_ov000_020b5214.func_ov000_0206e7e8(0x79); + } + } +} + +void UnkStruct_020d8698_2C::func_ov024_020cf2b8(unk8 *param1) { + UnkDataStruct1 sp24; + Vec2s sp20; + Vec2s sp1C; + Vec2s sp18; + Vec2s sp14; + Vec2s sp10; + Vec2s spC; + Vec2s sp8; + Vec2s sp4; + + Vec2s *pSp1C = (Vec2s *) &sp1C; + func_0201e8d4(pSp1C, &this->mUnk_04C); + Vec2s_Add(pSp1C, &this->mUnk_218, &sp20); + data_0204af1c.func_0201aa44(&this->mUnk_004, &sp20, 2, NULL); + + Vec2s *pSp14 = (Vec2s *) &sp14; + func_0201e8d4(&sp14, &this->mUnk_04C); + Vec2s_OffsetAdd2(pSp14, &this->mUnk_138, &this->mUnk_218, &sp18); + data_0204af1c.func_0201aa44(&this->mUnk_01C, &sp18, 2, NULL); + + Vec2s *pSpC = (Vec2s *) &spC; + func_0201e8d4(&spC, &this->mUnk_04C); + Vec2s_OffsetAdd2(pSpC, &this->mUnk_134, &this->mUnk_218, &sp10); + data_0204af1c.func_0201aa44(&this->mUnk_034, &sp10, 2, NULL); + + sp24.Init(); + sp24.SetUnk04(2); + + Vec2s *pSp4 = (Vec2s *) &sp4; + func_0201e8d4(&sp4, &this->mUnk_04C); + Vec2s_OffsetAdd(pSp4, &this->mUnk_130, &this->mUnk_218, &sp8); + Vec2s_Copy(&sp8, &this->mUnk_090.mUnk_00); + + this->mUnk_090.func_ov000_020659d0(param1, &sp24); +} + +void UnkStruct_020d8698_2C::func_ov024_020cf494(bool param1) { + if (gpCargoManager->GetCargo()->IsTypeSet()) { + if (param1) { + this->mUnk_13C = 0x4B; + } else { + this->mUnk_140 = true; + } + } +} + +void UnkStruct_020d8698_2C::func_ov024_020cf4c4() { + this->mUnk_140 = false; + + if (data_ov024_020d8698->func_ov024_020cd604()) { + this->mUnk_04C.Subprocess2_UnkValueSets(); + this->mUnk_04C.UnkOperations3(); + } +} + +void UnkStruct_020d8698_2C::func_ov024_020cf514() { + this->mUnk_000 = 0x02; + this->func_ov024_020cf5a8(true); + this->mUnk_144 = 0x4B; +} + +void UnkStruct_020d8698_2C::func_ov024_020cf53c(bool param1) { + if (this->mUnk_146 != param1) { + this->mUnk_146 = param1; + + if (this->mUnk_000 != 2) { + if (param1 & 0xFF) { + this->func_ov024_020cf584(); + } else { + this->func_ov024_020cf570(); + } + } + } +} + +void UnkStruct_020d8698_2C::func_ov024_020cf570() { + this->mUnk_000 = 0x00; + this->func_ov024_020cf5a8(false); +} + +void UnkStruct_020d8698_2C::func_ov024_020cf584() { + this->mUnk_000 = 0x01; + this->func_ov024_020cf5a8(true); + this->mUnk_148 = 0x00; +} + +void UnkStruct_020d8698_2C::func_ov024_020cf5a8(bool param1) { + if (param1) { + this->mUnk_090.func_ov000_02065988(0x18, data_ov024_020d741e); + } else { + this->mUnk_090.func_ov000_02065988(0x18, data_ov024_020d740a); + } +} + +UnkStruct_020d8698_34::UnkStruct_020d8698_34() { + this->mUnk_90 = 0; + this->mUnk_92 = 0; + this->func_ov024_020cf698(); + UnkStruct_ov019_020d24c8_28_258 local_2c(0x5E, 0x04); + UnkStruct_ov019_020d24c8_28_258 local_44(0x5E, 0x05); + this->mUnk_90 = local_44.mPos.x - local_2c.mPos.x; +} + +void UnkStruct_020d8698_34::func_ov024_020cf698() { + this->mUnk_00.UnknownAction(0x5E, 0x04); + this->mUnk_18.func_ov000_0206082c(0x5E, 0x00); +} + +void UnkStruct_020d8698_34::func_ov024_020cf6e4() { + this->mUnk_18.func_ov000_020609c4(); + + u8 amount = data_027e0ce0->mUnk_2C->GetKeyAmount(); + if (amount > this->mUnk_92) { + this->mUnk_18.func_ov000_02060b64(); + this->mUnk_92 = amount; + } +} + +void UnkStruct_020d8698_34::func_ov024_020cf724() { + const s32 amount = data_027e0ce0->mUnk_2C->GetKeyAmount(); + + if (amount <= 0) { + return; + } + + s16 offsetX = 0; + for (int i = 0; i < amount; i++) { + if (i == amount - 1 && !this->mUnk_18.func_ov000_02060af8()) { + Vec2s sStack_28; + Vec2s offset(offsetX, 0); + Vec2s_Add(&this->mUnk_00.mPos, &offset, &sStack_28); + data_0204af1c.func_0201aad0(&this->mUnk_18, &sStack_28, 1, NULL); + } else { + data_0204af1c.func_0201aa8c(&this->mUnk_00, 1, 0, offsetX, 0); + } + + offsetX += this->mUnk_90; + } +} + +UnkStruct_020d8698_3C::UnkStruct_020d8698_3C() { + this->func_ov024_020cf82c(); +} + +void UnkStruct_020d8698_3C::func_ov024_020cf82c() { + this->mUnk_00.UnknownAction(0x5E, 0x09); + this->mUnk_18.UnknownAction(0x5E, 0x0B); +} + +void UnkStruct_020d8698_3C::func_ov024_020cf888() {} + +void UnkStruct_020d8698_3C::func_ov024_020cf88c() { + const s32 amount = data_027e0ce0->mUnk_2C->GetTearsAmount(); + + for (int i = 0; i < MAX_TEARS_OF_LIGHT; i++) { + UnkStruct_ov019_020d24c8_28_258 local_3c(0x5E, data_ov024_020d73d8[i]); + + if (i < amount) { + data_0204af1c.func_0201aa44(&this->mUnk_18, &local_3c.mPos, 0, NULL); + } else { + data_0204af1c.func_0201aa44(&this->mUnk_00, &local_3c.mPos, 0, NULL); + } + } +} + +DECL_INSTANCE(UnkStruct_020d8698, data_ov024_020d8698); diff --git a/src/024_MainGame/UnkStruct_ov024_020d8694_024.cpp b/src/024_MainGame/UnkStruct_ov024_020d8694_024.cpp index e69de29b..e6c50e41 100644 --- a/src/024_MainGame/UnkStruct_ov024_020d8694_024.cpp +++ b/src/024_MainGame/UnkStruct_ov024_020d8694_024.cpp @@ -0,0 +1,177 @@ +#include "Message/BMG.hpp" +#include "System/SysNew.hpp" +#include "Unknown/UnkStruct_ov024_020d8694.hpp" + +UnkStruct_ov024_020d8694 *data_ov024_020d8694 = NULL; + +static const u32 sBMGSceneMap[] = { + BMG_ID(BMGGroup_maingame, MsgIndex_ForestLand), // TC_SceneMsgIdx_ForestLand + BMG_ID(BMGGroup_maingame, MsgIndex_SnowLand), // TC_SceneMsgIdx_SnowLand + BMG_ID(BMGGroup_maingame, MsgIndex_OceanLand), // TC_SceneMsgIdx_OceanLand + BMG_ID(BMGGroup_maingame, MsgIndex_FireLand), // TC_SceneMsgIdx_FireLand + BMG_ID(BMGGroup_maingame, MsgIndex_TowerOfSpirits), // TC_SceneMsgIdx_TowerOfSpirits + BMG_ID(BMGGroup_maingame, MsgIndex_TunnelToTheTower), // TC_SceneMsgIdx_TunnelToTheTower + BMG_ID(BMGGroup_maingame, MsgIndex_WoodedTemple), // TC_SceneMsgIdx_WoodedTemple + BMG_ID(BMGGroup_maingame, MsgIndex_BlizzardTemple), // TC_SceneMsgIdx_BlizzardTemple + BMG_ID(BMGGroup_maingame, MsgIndex_MarineTemple), // TC_SceneMsgIdx_MarineTemple + BMG_ID(BMGGroup_maingame, MsgIndex_MountainTemple), // TC_SceneMsgIdx_MountainTemple + BMG_ID(BMGGroup_maingame, MsgIndex_DesertTemple), // TC_SceneMsgIdx_DesertTemple + BMG_ID(BMGGroup_maingame, MsgIndex_PirateHideout), // TC_SceneMsgIdx_PirateHideout + BMG_ID(BMGGroup_maingame, MsgIndex_HyruleCastle), // TC_SceneMsgIdx_HyruleCastle + BMG_ID(BMGGroup_maingame, MsgIndex_CastleTown), // TC_SceneMsgIdx_CastleTown + BMG_ID(BMGGroup_maingame, MsgIndex_Mayscore), // TC_SceneMsgIdx_Mayscore + BMG_ID(BMGGroup_maingame, MsgIndex_AnoukiVillage), // TC_SceneMsgIdx_AnoukiVillage + BMG_ID(BMGGroup_maingame, MsgIndex_PapuziaVillage), // TC_SceneMsgIdx_PapuziaVillage + BMG_ID(BMGGroup_maingame, MsgIndex_GoronVillage), // TC_SceneMsgIdx_GoronVillage + BMG_ID(BMGGroup_maingame, MsgIndex_TradingPost), // TC_SceneMsgIdx_TradingPost + BMG_ID(BMGGroup_maingame, MsgIndex_IcySpring), // TC_SceneMsgIdx_IcySpring + BMG_ID(BMGGroup_maingame, MsgIndex_OutsetVillage), // TC_SceneMsgIdx_OutsetVillage + BMG_ID(BMGGroup_maingame, MsgIndex_WoodlandSanctuary), // TC_SceneMsgIdx_WoodlandSanctuary + BMG_ID(BMGGroup_maingame, MsgIndex_SnowfallSanctuary), // TC_SceneMsgIdx_SnowfallSanctuary + BMG_ID(BMGGroup_maingame, MsgIndex_IslandSanctuary), // TC_SceneMsgIdx_IslandSanctuary + BMG_ID(BMGGroup_maingame, MsgIndex_ValleySanctuary), // TC_SceneMsgIdx_ValleySanctuary + BMG_ID(BMGGroup_maingame, MsgIndex_DuneSanctuary), // TC_SceneMsgIdx_DuneSanctuary + BMG_ID(BMGGroup_maingame, MsgIndex_BridgeWorkersHouse), // TC_SceneMsgIdx_BridgeWorkersHouse + +#if IS_JP + BMG_ID(BMGGroup_dungeon, MsgIndex_BossStagnox), // TC_SceneMsgIdx_BossStagnox + BMG_ID(BMGGroup_dungeon, MsgIndex_BossFraaz), // TC_SceneMsgIdx_BossFraaz + BMG_ID(BMGGroup_dungeon, MsgIndex_BossCactops), // TC_SceneMsgIdx_BossCactops + BMG_ID(BMGGroup_dungeon, MsgIndex_BossVulcano), // TC_SceneMsgIdx_BossVulcano + BMG_ID(BMGGroup_dungeon, MsgIndex_BossCapbone), // TC_SceneMsgIdx_BossCapbone + BMG_ID(BMGGroup_train_extra, MsgIndex_BossGhostTrain), // TC_SceneMsgIdx_BossGhostTrain + BMG_ID(BMGGroup_dungeon, MsgIndex_BossStaven), // TC_SceneMsgIdx_BossStaven + BMG_ID(BMGGroup_dungeon, MsgIndex_BossMalladus1), // TC_SceneMsgIdx_BossMalladus1 + BMG_ID(BMGGroup_dungeon, MsgIndex_BossMalladus2), // TC_SceneMsgIdx_BossMalladus2 +#else + BMG_ID(BMGGroup_maingame, MsgIndex_BossStagnox), // TC_SceneMsgIdx_BossStagnox + BMG_ID(BMGGroup_maingame, MsgIndex_BossFraaz), // TC_SceneMsgIdx_BossFraaz + BMG_ID(BMGGroup_maingame, MsgIndex_BossCactops), // TC_SceneMsgIdx_BossCactops + BMG_ID(BMGGroup_maingame, MsgIndex_BossVulcano), // TC_SceneMsgIdx_BossVulcano + BMG_ID(BMGGroup_maingame, MsgIndex_BossCapbone), // TC_SceneMsgIdx_BossCapbone + BMG_ID(BMGGroup_maingame, MsgIndex_BossGhostTrain), // TC_SceneMsgIdx_BossGhostTrain + BMG_ID(BMGGroup_maingame, MsgIndex_BossStaven), // TC_SceneMsgIdx_BossStaven + BMG_ID(BMGGroup_maingame, MsgIndex_BossMalladus1), // TC_SceneMsgIdx_BossMalladus1 + BMG_ID(BMGGroup_maingame, MsgIndex_BossMalladus2), // TC_SceneMsgIdx_BossMalladus2 +#endif + + BMG_ID(BMGGroup_maingame, MsgIndex_GoronTargetRange), // TC_SceneMsgIdx_GoronTargetRange + BMG_ID(BMGGroup_maingame, MsgIndex_SnowdriftStation), // TC_SceneMsgIdx_SnowdriftStation + BMG_ID(BMGGroup_maingame, MsgIndex_LostAtSeaStation), // TC_SceneMsgIdx_LostAtSeaStation + BMG_ID(BMGGroup_maingame, MsgIndex_DisorientationStation), // TC_SceneMsgIdx_DisorientationStation + BMG_ID(BMGGroup_maingame, MsgIndex_EndsOfTheEarthStation), // TC_SceneMsgIdx_EndsOfTheEarthStation + BMG_ID(BMGGroup_maingame, MsgIndex_DarkOreMine), // TC_SceneMsgIdx_DarkOreMine + BMG_ID(BMGGroup_maingame, MsgIndex_RabbitHaven), // TC_SceneMsgIdx_RabbitHaven + BMG_ID(BMGGroup_maingame, MsgIndex_SlipperyStation), // TC_SceneMsgIdx_SlipperyStation +}; + +UnkStruct_ov024_020d8694 *UnkStruct_ov024_020d8694::Create(GameModeManagerBase_004 *param1) { + return new(HeapIndex_1) UnkStruct_ov024_020d8694(param1); +} + +UnkStruct_ov024_020d8694::UnkStruct_ov024_020d8694(GameModeManagerBase_004 *param1) : + mUnk_01C(param1), + mUnk_188(param1), + mUnk_2FC(param1), + mUnk_434(NULL), + mUnk_438(NULL), + mUnk_43C(param1) { + this->mUnk_434 = new(HeapIndex_1) UnkSystem2_UnkSubSystem11_Derived2(); + this->mUnk_438 = new(HeapIndex_1) UnkSystem2_UnkSubSystem5_Base_10(); + this->mUnk_438->vfunc_10(this->mUnk_434); + this->mUnk_01C.func_ov024_020cb274(this->mUnk_434, this->mUnk_438); + this->mUnk_188.func_ov024_020cb274(this->mUnk_434, this->mUnk_438); + this->mUnk_2FC.func_ov024_020cb274(this->mUnk_434, this->mUnk_438); +} + +UnkStruct_ov024_020d8694::~UnkStruct_ov024_020d8694() { + if (this->mUnk_434 != NULL) { + delete this->mUnk_434; + } + + if (this->mUnk_438 != NULL) { + delete this->mUnk_438; + } + + this->mUnk_2FC.func_ov024_020cb280(); + this->mUnk_188.func_ov024_020cb280(); + this->mUnk_01C.func_ov024_020cb280(); +} + +void UnkStruct_ov024_020d8694::func_ov024_020cafb8(unk32 param1) { + this->func_ov024_020cb0c4(); + this->mUnk_01C.func_ov024_020cbe94(param1); +} + +void UnkStruct_ov024_020d8694::func_ov024_020cafd8(unk32 param1) { + this->func_ov024_020cb0c4(); + this->mUnk_01C.mUnk_168 = true; + this->mUnk_01C.func_ov024_020cbe94(param1); +} + +void UnkStruct_ov024_020d8694::func_ov024_020cb000(unk32 param1) { + this->func_ov024_020cb0c4(); + this->mUnk_01C.func_ov024_020cbf74(param1); +} + +void UnkStruct_ov024_020d8694::func_ov024_020cb020(unk32 param1) { + this->func_ov024_020cb0c4(); + this->mUnk_01C.func_ov024_020cc05c(param1); +} + +void UnkStruct_ov024_020d8694::func_ov024_020cb040() { + this->mUnk_01C.func_ov024_020cc088(true); +} + +void UnkStruct_ov024_020d8694::func_ov024_020cb054(unk32 param1, Vec2s *param2, Vec2s *param3) { + this->func_ov024_020cb0c4(); + + Vec2s local_20; + Vec2s local_24; + + local_24.x = param3->x; + local_24.y = param3->y; + + local_20.x = param2->x; + local_20.y = param2->y; + + this->mUnk_2FC.func_ov024_020ccb10(param1, &local_20, &local_24); +} + +u32 UnkStruct_ov024_020d8694::GetMessageID(int index) { + if (index >= 0) { + return sBMGSceneMap[index]; + } + + return BMG_ID_NONE; +} + +void UnkStruct_ov024_020d8694::func_ov024_020cb0c4() { + this->mUnk_01C.func_ov024_020cc088(false); + this->mUnk_188.func_ov024_020cc088(false); + this->mUnk_2FC.func_ov024_020cb5bc(); +} + +void UnkStruct_ov024_020d8694::vfunc_08(Input *pButtons, TouchControl *pTouchControl) { + this->mUnk_01C.vfunc_00(); + this->mUnk_188.vfunc_00(); + this->mUnk_2FC.vfunc_00(); +} + +void UnkStruct_ov024_020d8694::vfunc_10(unk8 *param1) { + this->mUnk_01C.vfunc_04(param1); + this->mUnk_188.vfunc_04(param1); + this->mUnk_2FC.vfunc_04(param1); +} + +void UnkStruct_ov024_020d8694::func_ov024_020cb178(unk32 param1) { + data_027e0994->func_02018aac(param1, true); +} + +void UnkStruct_ov024_020d8694::func_ov024_020cb194(unk16 param1) { + data_027e0994->func_02018ac4(param1); + data_0204a110.mUnk_010.func_0201ca28(0); + data_0204a110.mUnk_010.func_0201ca28(1); +} + +DECL_INSTANCE(UnkStruct_ov024_020d8694, data_ov024_020d8694); diff --git a/src/024_MainGame/UnkTitleCardSystem1_024.cpp b/src/024_MainGame/UnkTitleCardSystem1_024.cpp index e69de29b..b981e77f 100644 --- a/src/024_MainGame/UnkTitleCardSystem1_024.cpp +++ b/src/024_MainGame/UnkTitleCardSystem1_024.cpp @@ -0,0 +1,620 @@ +#include "Game/GameModeManager.hpp" +#include "System/OverlayManager.hpp" +#include "Unknown/UnkMemFuncs.h" +#include "Unknown/UnkStruct_02049be0.hpp" +#include "Unknown/UnkStruct_0204a088.hpp" +#include "Unknown/UnkStruct_0204a110.hpp" +#include "Unknown/UnkStruct_0204af1c.hpp" +#include "Unknown/UnkStruct_0204e5f8.hpp" +#include "Unknown/UnkStruct_027e09a4.hpp" +#include "Unknown/UnkStruct_027e0cd8.hpp" +#include "Unknown/UnkStruct_ov000_02067bc4.hpp" +#include "Unknown/UnkStruct_ov000_020b4f84.hpp" +#include "Unknown/UnkStruct_ov024_020d8694.hpp" + +extern "C" unk32 func_02014fe0(); +extern "C" q20 func_01ffb428(unk32, unk32); + +UnkTitleCardSystem1::UnkTitleCardSystem1(GameModeManagerBase_004 *param1) : + mUnk_004(4), + mUnk_008(NULL), + mUnk_00C(NULL), + mUnk_010(0), + mUnk_014(param1), + mUnk_134(false) {} + +void UnkTitleCardSystem1::func_ov024_020cb274(UnkSystem2_UnkSubSystem11_Derived2 *param1, + UnkSystem2_UnkSubSystem5_Base_10 *param2) { + this->mUnk_008 = param1; + this->mUnk_00C = param2; +} + +void UnkTitleCardSystem1::func_ov024_020cb280() {} + +void UnkTitleCardSystem1::func_ov024_020cb284(unk32 param1, unk32 param2) { + if (!data_ov000_020b504c.func_ov000_02067f88(0, param2)) { + return; + } + + if (param2 == 1) { + data_ov000_020b504c.func_ov000_02067f5c(0); + } + + this->mUnk_134 = true; + this->mUnk_010 = param2; + + EntryINF1 *pINF1 = data_ov000_020b504c.mUnk_000->func_ov000_02067a2c(param1); + u8 fontIndex = pINF1->fontIndex; + if (fontIndex == FontIndex_04) { + fontIndex = FontIndex_DSZ2_msg; + } + + this->mUnk_008->mUnk_1C.mUnk_04 = &data_ov000_020b4f84.mUnk_00[fontIndex].mUnk_14; + this->vfunc_10(); + this->vfunc_0C(); + + UnkStruct_func_02019590 *puVar5 = data_0204a110.func_02019590(this->mUnk_004, this->vfunc_08()); + + s16 bitFieldVal2 = puVar5->c_b2; + s16 bitFieldVal1 = puVar5->c_b1; + + if (bitFieldVal1 == 0) { + bitFieldVal1 = 0x100; + } + + UnkDataStruct2 sp10(((bitFieldVal1 * bitFieldVal2) / 64) * 32); + UnkMsgDataStruct1 spC; + UnkMsgDataStruct1 sp8; + + Vec2s sp4; + sp4.x = bitFieldVal1; + sp4.y = bitFieldVal2; + this->func_ov024_020cb490(&sp10, (unk32 *) &sp4); + this->mUnk_008->mUnk_1C.mUnk_08 = pINF1->mUnk_07; + + spC.func_ov000_02067a60(data_ov000_020b504c.mUnk_000, param1); + unk32 temp_r7 = this->mUnk_00C->func_ov000_020691e0(&spC); + UnkSystem2_UnkSubSystem11_Derived2 *temp_r8 = this->mUnk_008; + this->mUnk_130 = temp_r7 + this->vfunc_18(); + + unk32 temp_r0_3 = (this->mUnk_008->mUnk_04.unk_08 * 8); + int temp_r5_3 = (this->mUnk_008->func_ov000_02061db8() / 2) + ((temp_r0_3 - this->mUnk_008->func_ov000_02061da8()) / 2); + int temp_r6_2 = (((this->mUnk_008->mUnk_04.unk_04 * 8) - temp_r7) / 2); + + UnkMsgDataStruct1 *ptr = (UnkMsgDataStruct1 *) &sp8; // cast is required + ptr->func_ov000_02067a60(data_ov000_020b504c.mUnk_000, param1); + this->mUnk_00C->vfunc_14(ptr->mUnk_00); + Vec2s sp0; + sp0.x = temp_r6_2; + sp0.y = temp_r5_3; + this->mUnk_00C->func_ov000_02068798(&sp0); + this->mUnk_008->func_ov000_02062838(sp10.unk_00); +} + +//! TODO: fake match? see UnkStruct_func_02019590 +void UnkTitleCardSystem1::func_ov024_020cb490(UnkDataStruct2 *param1, unk32 *param2) { + UnkStruct_func_02019590 *ptr = data_0204a110.func_02019590(this->mUnk_004, this->vfunc_08()); + + u16 arg7_val = ptr->e; + bool var_r2 = this->mUnk_010 == 1; + + if (this->mUnk_004 == 0x63) { + this->mUnk_008->func_ov000_020626e4(param1->unk_00, var_r2, param2, 0, 0, 0, arg7_val); + } else { + this->mUnk_008->func_ov000_020626e4(param1->unk_00, var_r2, param2, 0, 1, 0, arg7_val); + } + + ptr = data_0204a110.func_02019590(this->mUnk_004, this->vfunc_08()); + + int x_div = (this->mUnk_008->mUnk_04.unk_04 * 8) / 2; + int x = (ptr->a - this->mUnk_018.mPos.x - x_div); + this->mUnk_060.x = x; + + int y_div = (this->mUnk_008->mUnk_04.unk_08 * 8) / 2; + int y = (ptr->b - this->mUnk_018.mPos.y - y_div); + this->mUnk_060.y = y; + + this->mUnk_00C->mUnk_016 = ptr->d; +} + +unk32 UnkTitleCardSystem1::vfunc_08() { + return 0; +} + +void UnkTitleCardSystem1::vfunc_0C() {} + +void UnkTitleCardSystem1::vfunc_10() {} + +void UnkTitleCardSystem1::func_ov024_020cb5bc() { + if (this->mUnk_134) { + this->mUnk_008->func_ov000_02062144(); + this->mUnk_134 = false; + data_ov024_020d8694->func_ov024_020cb194(this->mUnk_004); + } +} + +void UnkTitleCardSystem1::vfunc_00() {} + +void UnkTitleCardSystem1::vfunc_04(unk8 *param1) { + UnkDataStruct1 auStack_20(0x40); + this->func_ov024_020cb654(param1, &auStack_20); +} + +void UnkTitleCardSystem1::func_ov024_020cb654(unk8 *param1, UnkDataStruct1 *param2) { + Vec2s sp34; + Vec2s sp30; + Vec2s sp2C; + Vec2s sp28; + + bool r3 = false; + bool r4 = false; + + if (!(!this->mUnk_134 || this->mUnk_008->mUnk_2C == -1)) { + r4 = true; + } + + if (r4) { + unk8 param = ((volatile unk8 *) param1)[this->mUnk_010]; + + if (this->mUnk_008->mUnk_2C == param) { + r3 = true; + } + } + + if (!r3) { + return; + } + + Vec2s sp24; + Vec2s sp20; + + func_0201e8d4(&sp20, &this->mUnk_0A8); + + Vec2s *pSp24 = (Vec2s *) &sp24; + func_0201e8d4(pSp24, &this->mUnk_064); + Vec2s_Add(pSp24, &sp20, &sp34); + + data_0204af1c.func_0201aa44(&this->mUnk_030, &sp34, 1, (void *) param2); + s16 unk_056 = this->mUnk_048.mUnk_0E.x; + + Vec2s sp18; + Vec2s sp1C; + func_0201e8d4(&sp18, &this->mUnk_0EC); + func_0201e8d4(&sp1C, &this->mUnk_0A8); + + int var_r7 = (sp18.x - sp1C.x) - unk_056; + + Vec2s sp14; + Vec2s sp10; + Vec2s offset; + offset.x = (this->mUnk_030.mUnk_0E.x / 2) + (this->mUnk_018.mUnk_0E.x / 2); + offset.y = 0; + func_0201e8d4(&sp10, &this->mUnk_0A8); + + Vec2s *pSp14 = (Vec2s *) &sp14; + func_0201e8d4(pSp14, &this->mUnk_064); + Vec2s_OffsetAdd(pSp14, &sp10, &offset, &sp30); + + while (true) { + data_0204af1c.func_0201aa44(&this->mUnk_018, &sp30, 1, (void *) param2); + s16 step_x = this->mUnk_018.mUnk_0E.x; + + var_r7 -= step_x; + if (var_r7 <= 0) { + break; + } + + if (var_r7 < step_x) { + sp30.x += var_r7; + } else { + sp30.x += step_x; + } + } + + Vec2s spC; + Vec2s sp8; + func_0201e8d4(&sp8, &this->mUnk_0EC); + Vec2s *pSpC = (Vec2s *) &spC; + func_0201e8d4(pSpC, &this->mUnk_064); + Vec2s_Add(pSpC, &sp8, &sp2C); + + data_0204af1c.func_0201aa44(&this->mUnk_048, &sp2C, 1, (void *) param2); + + if (this->vfunc_14()) { + Vec2s sp4; + Vec2s *pSp4 = (Vec2s *) &sp4; + func_0201e8d4(pSp4, &this->mUnk_064); + Vec2s_Add(pSp4, &this->mUnk_060, &sp28); + this->mUnk_008->func_ov000_0206216c(&sp28, 0, 0); + } +} + +bool UnkTitleCardSystem1::vfunc_14() { + return this->mUnk_064.mUnk_0A ? false : true; +} + +unk32 UnkTitleCardSystem1::vfunc_18() { + return 0x1E; +} + +UnkTitleCardSystem1_Derived1::UnkTitleCardSystem1_Derived1(GameModeManagerBase_004 *param1) : + UnkTitleCardSystem1(param1), + mUnk_138(0), + mUnk_13C(0), + mUnk_13E(0), + mUnk_140(false) {} + +void UnkTitleCardSystem1_Derived1::vfunc_1C(u32 msgId, unk32 param2, bool param3) { + s16 x; + + if (data_027e09a4->IsCutscene()) { + return; + } + + if (param3) { + this->mUnk_13C = 90; + } else { + this->mUnk_13C = 0; + } + + this->func_ov024_020cb284(msgId, param2); + + this->mUnk_064.func_0201e874(BTN_ID_UNK_00, Vec2s_GetCopy(&this->mUnk_018.mPos), Vec2s_GetCopy(&this->mUnk_018.mPos), 0); + + x = -((this->mUnk_130 / 2) + (this->mUnk_048.mUnk_0E.x / 2)); + this->mUnk_0A8.func_0201e874(BTN_ID_UNK_00, Vec2s_New(x, 0), Vec2s_New(x, 0), 0); + + x = (this->mUnk_130 / 2) + (this->mUnk_030.mUnk_0E.x / 2); + this->mUnk_0EC.func_0201e874(BTN_ID_UNK_00, Vec2s_New(x, 0), Vec2s_New(x, 0), 0); +} + +unk32 UnkTitleCardSystem1_Derived1::vfunc_08() { + switch (this->mUnk_004) { + case 0x04: + return 0; + case 0x06: + return 0; + case 0x05: + return 0; + case 0x14: + return 0; + case 0x15: + return 0; + case 0x07: + return 0; + case 0x63: + return 0; + default: + break; + } + + //! @bug: missing return +} + +void UnkTitleCardSystem1_Derived1::vfunc_0C() { + switch (this->mUnk_004) { + case 0x04: + this->mUnk_018.UnknownAction(0x04, 0x01); + this->mUnk_030.UnknownAction(0x04, 0x00); + this->mUnk_048.UnknownAction(0x04, 0x02); + break; + case 0x06: + this->mUnk_018.UnknownAction(0x06, 0x01); + this->mUnk_030.UnknownAction(0x06, 0x00); + this->mUnk_048.UnknownAction(0x06, 0x02); + break; + case 0x05: + this->mUnk_018.UnknownAction(0x05, 0x01); + this->mUnk_030.UnknownAction(0x05, 0x00); + this->mUnk_048.UnknownAction(0x05, 0x02); + break; + case 0x14: + this->mUnk_018.UnknownAction(0x14, 0x01); + this->mUnk_030.UnknownAction(0x14, 0x00); + this->mUnk_048.UnknownAction(0x14, 0x02); + break; + case 0x15: + this->mUnk_018.UnknownAction(0x15, 0x01); + this->mUnk_030.UnknownAction(0x15, 0x00); + this->mUnk_048.UnknownAction(0x15, 0x02); + break; + case 0x07: + this->mUnk_018.UnknownAction(0x07, 0x01); + this->mUnk_030.UnknownAction(0x07, 0x00); + this->mUnk_048.UnknownAction(0x07, 0x02); + break; + default: + break; + } +} + +void UnkTitleCardSystem1_Derived1::vfunc_10() { + if (data_027e09a4->func_01ffd3d8()) { + if (data_0204a110.mUnk_DF4 == 0) { + this->mUnk_004 = 0x07; + } else { + this->mUnk_004 = 0x15; + } + } else if (this->mUnk_140) { + this->mUnk_004 = 0x06; + } else { + if (data_027e09a4->UnkCheck2()) { + this->mUnk_004 = 0x05; + } else { + if (this->mUnk_010 == 0) { + this->mUnk_004 = 4; + } else { + this->mUnk_004 = 0x14; + } + } + } + + data_ov024_020d8694->func_ov024_020cb178(this->mUnk_004); +} + +void UnkTitleCardSystem1_Derived1::func_ov024_020cbe94(unk32 param1) { + if (param1 != 0) { + this->mUnk_13E = param1; + this->mUnk_138 = 0; + } else { + this->func_ov024_020cbeb8(); + } +} + +void UnkTitleCardSystem1_Derived1::func_ov024_020cbeb8() { + if (!this->func_ov024_020cc0b4()) { + return; + } + + TC_SceneMsgIdx index = TC_SceneMsgIdx_None; + + if (data_027e09a4->IsSnowdriftStation()) { + if (data_027e0cd8->func_ov000_02081d5c() < 6) { + index = TC_SceneMsgIdx_SnowdriftStation; + } else { + index = TC_SceneMsgIdx_SlipperyStation; + } + } else if (data_027e09a4->IsWater3()) { + if (data_027e0cd8->func_ov000_02081d5c() >= 10) { + index = TC_SceneMsgIdx_LostAtSeaStation; + } + } else { + index = data_027e09a4->func_01ffd400()->mUnk_16; + } + + if (index >= 0) { + this->vfunc_1C(data_ov024_020d8694->GetMessageID(index), data_0204a110.mUnk_DF4, 1); + } +} + +void UnkTitleCardSystem1_Derived1::func_ov024_020cbf74(unk32 param1) { + if (param1 != 0) { + this->mUnk_13E = param1; + this->mUnk_138 = 1; + } else { + this->func_ov024_020cbf98(); + } +} + +void UnkTitleCardSystem1_Derived1::func_ov024_020cbf98() { + if (!this->func_ov024_020cc0b4()) { + return; + } + + UnkStruct_027e0cd8_04_0C *ptr = data_027e0cd8->mUnk_04->mUnk_0C; + s32 unk_08 = ptr->mUnk_08; + u32 msgId = BMG_ID_NONE; + + if (unk_08 == 1) { + msgId = BMG_ID(BMGGroup_maingame, MsgIndex_Floor2); + } else if (unk_08 < 0) { + this->mUnk_00C->mUnk_054 = -unk_08; + msgId = BMG_ID(BMGGroup_maingame, MsgIndex_Floor3); + } else if (unk_08 > 1) { + unk32 value = func_02014fe0(); + if ((data_02049be0.mUnk_00 == 5 || data_02049be0.mUnk_00 == 4 || data_02049be0.mUnk_00 == 2) || + (data_02049be0.mUnk_00 == 3 && value == 2)) { + unk_08--; + } + + this->mUnk_00C->mUnk_054 = unk_08; + msgId = BMG_ID(BMGGroup_maingame, MsgIndex_Floor1); + } else { + return; + } + + this->vfunc_1C(msgId, data_0204a110.mUnk_DF4, 1); +} + +void UnkTitleCardSystem1_Derived1::func_ov024_020cc05c(u32 msgId) { + this->mUnk_140 = true; + this->vfunc_1C(msgId, data_0204a110.mUnk_DF4, 0); +} + +void UnkTitleCardSystem1_Derived1::func_ov024_020cc088(bool param1) { + if (param1) { + this->mUnk_13C = 5; + } else { + this->func_ov024_020cb5bc(); + } + + this->mUnk_140 = false; +} + +bool UnkTitleCardSystem1_Derived1::func_ov024_020cc0b4() { + unk32 unk_DF4 = data_0204a110.mUnk_DF4; + + if (data_ov000_020b504c.func_ov000_02067bc4(unk_DF4) != NULL) { + if (data_ov000_020b504c.func_ov000_02067bc4(unk_DF4)->vfunc_08()) { + return false; + } + } + + if (data_0204a088->mUnk_00 != OverlayIndex_SceneInit) { + return false; + } + + return !data_027e0994->IsUnk150(); +} + +unk32 UnkTitleCardSystem1_Derived1::vfunc_18() { + if (this->mUnk_140) { + return 0; + } + + return 0x1E; +} + +UnkStruct_ov024_020d8694_01C::UnkStruct_ov024_020d8694_01C(GameModeManagerBase_004 *param1) : + UnkTitleCardSystem1_Derived1(param1), + mUnk_168(false) {} + +void UnkStruct_ov024_020d8694_01C::vfunc_1C(u32 msgId, unk32 param2, bool param3) { + if (this->mUnk_168) { + this->mUnk_168 = false; + + if (data_0204e5f8.mUnk_3A == 0 && data_0204e5f8.mUnk_3E == 0) { + return; + } + } + + this->UnkTitleCardSystem1_Derived1::vfunc_1C(msgId, param2, param3); + this->mUnk_144.func_0201effc(0x08, 0x03, 0x0D); + this->mUnk_144.UnkOperations1(); + data_0204a110.GetUnkD9C()->func_0201c4d8(this->mUnk_010, this->mUnk_144.func_0201f04c(), 5); +} + +void UnkStruct_ov024_020d8694_01C::vfunc_00() { + if (this->mUnk_13C != 0) { + this->mUnk_13C--; + + if (this->mUnk_13C == 0) { + this->func_ov024_020cc088(false); + } + + if (this->mUnk_13C == 4) { + this->mUnk_144.func_0201effc(0x08, 0x0D, 0x03); + this->mUnk_144.UnkOperations1(); + } + } + + if (this->mUnk_134 != 0) { + this->mUnk_144.UpdateLogic(); + data_0204a110.GetUnkD9C()->func_0201c4d8(this->mUnk_010, this->mUnk_144.func_0201f04c(), 5); + } + + if (this->mUnk_13E != 0) { + this->mUnk_13E--; + + if (this->mUnk_13E == 0) { + switch (this->mUnk_138) { + case 0: + this->func_ov024_020cbeb8(); + break; + case 1: + this->func_ov024_020cbf98(); + break; + default: + break; + } + } + } +} + +UnkStruct_ov024_020d8694_188::UnkStruct_ov024_020d8694_188(GameModeManagerBase_004 *param1) : + UnkTitleCardSystem1_Derived1(param1) {} + +void UnkStruct_ov024_020d8694_188::vfunc_1C(u32 msgId, unk32 param2, bool param3) { + this->UnkTitleCardSystem1_Derived1::vfunc_1C(msgId, param2, param3); + this->mUnk_144.func_0201ebf8(0x08, 0x47, 0x1000, 0); + this->mUnk_144.UnkOperations1(); +} + +void UnkStruct_ov024_020d8694_188::vfunc_00() { + if (this->mUnk_13C != 0) { + this->mUnk_13C--; + + if (this->mUnk_13C == 0) { + this->func_ov024_020cc088(false); + } + + if (this->mUnk_13C == 4) { + this->mUnk_144.func_0201ebf8(0x08, 0x1000, 0x47, 0x00); + this->mUnk_144.UnkOperations1(); + } + } + + if (this->mUnk_13E != 0) { + this->mUnk_13E--; + + if (this->mUnk_13E == 0) { + this->func_ov024_020cbeb8(); + } + } + + this->mUnk_144.UpdateLogic(); +} + +void UnkStruct_ov024_020d8694_188::vfunc_04(unk8 *param1) { + Vec4p local; + local.coords = data_027e0120.coords; + local.w = func_01ffb428(0x1000, this->mUnk_144.func_0201ec30()); + + UnkDataStruct1 local_30(&local, 0x40); + this->func_ov024_020cb654(param1, &local_30); +} + +bool UnkStruct_ov024_020d8694_188::vfunc_14() { + if (this->UnkTitleCardSystem1::vfunc_14() && this->mUnk_144.func_0201ec30() == 0x1000) { + return true; + } + + return false; +} + +UnkStruct_ov024_020d8694_2FC::UnkStruct_ov024_020d8694_2FC(GameModeManagerBase_004 *param1) : + UnkTitleCardSystem1(param1) {} + +void UnkStruct_ov024_020d8694_2FC::vfunc_00() { + //! TODO: volatile hack + if ((*(volatile bool *) &this->mUnk_064.mUnk_0A)) { + this->mUnk_064.UpdateLogic(); + this->mUnk_0A8.UpdateLogic(); + this->mUnk_0EC.UpdateLogic(); + } +} + +void UnkStruct_ov024_020d8694_2FC::vfunc_10() { + this->mUnk_004 = 0x63; + data_ov024_020d8694->func_ov024_020cb178(this->mUnk_004); +} + +void UnkStruct_ov024_020d8694_2FC::func_ov024_020ccb10(unk32 param1, Vec2s *param2, Vec2s *param3) { + s16 x1; + s16 x2; + + this->func_ov024_020cb284(param1, 1); + + this->mUnk_064.func_0201e874(BTN_ID_UNK_08, Vec2s_GetCopy(param2), Vec2s_GetCopy(param3), 0); + this->mUnk_064.UnkOperations1(); + + x1 = (-this->mUnk_018.mUnk_0E.x / 2) - (this->mUnk_030.mUnk_0E.x / 2); + x2 = -((this->mUnk_130 / 2) + (this->mUnk_030.mUnk_0E.x / 2)); + this->mUnk_0A8.func_0201e874(BTN_ID_UNK_08, Vec2s_New(x1, 0), Vec2s_New(x2, 0), 0); + this->mUnk_0A8.UnkOperations1(); + + x1 = (this->mUnk_018.mUnk_0E.x / 2) + (this->mUnk_048.mUnk_0E.x / 2); + x2 = (this->mUnk_130 / 2) + (this->mUnk_048.mUnk_0E.x / 2); + this->mUnk_0EC.func_0201e874(BTN_ID_UNK_08, Vec2s_New(x1, 0), Vec2s_New(x2, 0), 0); + this->mUnk_0EC.UnkOperations1(); +} + +unk32 UnkStruct_ov024_020d8694_2FC::vfunc_08() { + return 0; +} + +void UnkStruct_ov024_020d8694_2FC::vfunc_0C() { + this->mUnk_018.UnknownAction(0x63, 0x01); + this->mUnk_030.UnknownAction(0x63, 0x00); + this->mUnk_048.UnknownAction(0x63, 0x02); +} diff --git a/src/025_Title/TitleScreen.cpp b/src/025_Title/TitleScreen.cpp index 34b48a80..67800757 100644 --- a/src/025_Title/TitleScreen.cpp +++ b/src/025_Title/TitleScreen.cpp @@ -196,19 +196,19 @@ void TitleScreen::func_ov025_020c5240(Input *pButtons, TouchControl *pTouchContr this->mUnk_218.UpdateLogic(); this->mUnk_204.mUnk_10 = this->mUnk_218.func_0201f04c(); - if (this->mUnk_024.func_ov000_02060af8() == 0) { + if (!this->mUnk_024.func_ov000_02060af8()) { return; } - if (this->mUnk_09C.func_ov000_02060af8() == 0) { + if (!this->mUnk_09C.func_ov000_02060af8()) { return; } - if (this->mUnk_114.func_ov000_02060af8() == 0) { + if (!this->mUnk_114.func_ov000_02060af8()) { return; } - if (this->mUnk_18C.func_ov000_02060af8() == 0) { + if (!this->mUnk_18C.func_ov000_02060af8()) { return; } @@ -234,19 +234,19 @@ void TitleScreen::func_ov025_020c53d0(Input *pButtons, TouchControl *pTouchContr this->mUnk_204.mUnk_10 = this->mUnk_218.func_0201f04c(); if (this->mUnk_218.mUnk_0C) { - if (this->mUnk_024.func_ov000_02060af8() == 0) { + if (!this->mUnk_024.func_ov000_02060af8()) { return; } - if (this->mUnk_09C.func_ov000_02060af8() == 0) { + if (!this->mUnk_09C.func_ov000_02060af8()) { return; } - if (this->mUnk_114.func_ov000_02060af8() == 0) { + if (!this->mUnk_114.func_ov000_02060af8()) { return; } - if (this->mUnk_18C.func_ov000_02060af8() == 0) { + if (!this->mUnk_18C.func_ov000_02060af8()) { return; } @@ -262,19 +262,19 @@ void TitleScreen::func_ov025_020c55a4(Input *pButtons, TouchControl *pTouchContr } void TitleScreen::func_ov025_020c55e4(Input *pButtons, TouchControl *pTouchControl) { - if (this->mUnk_024.func_ov000_02060af8() == 0) { + if (!this->mUnk_024.func_ov000_02060af8()) { return; } - if (this->mUnk_09C.func_ov000_02060af8() == 0) { + if (!this->mUnk_09C.func_ov000_02060af8()) { return; } - if (this->mUnk_114.func_ov000_02060af8() == 0) { + if (!this->mUnk_114.func_ov000_02060af8()) { return; } - if (this->mUnk_18C.func_ov000_02060af8() == 0) { + if (!this->mUnk_18C.func_ov000_02060af8()) { return; } @@ -343,7 +343,8 @@ void TitleScreen::vfunc_10(unk8 *param1) { void TitleScreen::vfunc_0C(unk32 param1) { if (param1 == 1 && this->mShowUI) { UnkStruct_027e0954 *ptr = data_027e0954; - ptr->mUnk_14.func_020166f4(this->mUnk_204.GetNode()); + TitleScreen_Sub2 *pList = GetLinkListRef(this->mUnk_204); + ptr->mUnk_14.Prepend(pList); } } diff --git a/src/025_Title/TitleScreenManager.cpp b/src/025_Title/TitleScreenManager.cpp index 52776c62..d56b2ed7 100644 --- a/src/025_Title/TitleScreenManager.cpp +++ b/src/025_Title/TitleScreenManager.cpp @@ -18,7 +18,7 @@ ARM void TitleScreenManager::vfunc_14() { TitleScreen *pTitleScreen = new(HeapIndex_1) TitleScreen(); this->mpGameMode = (GameModeBase *) pTitleScreen; - this->mUnk_104.mList.func_020166cc(pTitleScreen->GetNode()); + this->mUnk_104.Append(pTitleScreen); pTitleScreen->vfunc_18(); } @@ -40,7 +40,7 @@ ARM void TitleScreenManager::vfunc_28(unk8 *param1) { this->func_02018a14(param1); } -ARM void TitleScreenManager::vfunc_2C(unk8 *param1) { +ARM void TitleScreenManager::DrawUI(unk8 *param1) { this->func_02018984(param1); this->func_02018830(param1); } diff --git a/src/110_PlayerGet/PlayerGet.cpp b/src/110_PlayerGet/PlayerGet.cpp index cedfc868..403d3b96 100644 --- a/src/110_PlayerGet/PlayerGet.cpp +++ b/src/110_PlayerGet/PlayerGet.cpp @@ -155,7 +155,7 @@ ARM bool ItemManager::func_ov110_02184a40(ItemId itemId) { if (this->mEquippedItem == ItemFlag_None) { this->mEquippedItem = itemFlag; - data_ov024_020d8698->func_ov024_020cd458(this->mEquippedItem, 0); + data_ov024_020d8698->func_ov024_020cd458(this->mEquippedItem, false); } } else { itemFlag = GetItemFlag(itemId); diff --git a/src/Main/Game/Game.cpp b/src/Main/Game/Game.cpp index 80038d17..4f7155a3 100644 --- a/src/Main/Game/Game.cpp +++ b/src/Main/Game/Game.cpp @@ -20,14 +20,7 @@ extern "C" void func_02013354(); extern "C" void func_0201328c(); extern "C" int OS_DisableInterrupts_Irq(); extern "C" void OS_RestoreInterrupts(int enabled); -extern Mat3p data_027e02c4; - -struct SomeSaveFileStruct { - /* 00 */ SaveFile *mpSaveFiles[MAX_SAVE_SLOTS]; - - SomeSaveFileStruct(unk32 param1); - ~SomeSaveFileStruct(); -}; +extern Mat3p gGeomMatrix; ARM void Game::func_02013370(unk32 param1) { data_0204a110.func_02018c78(param1); @@ -43,8 +36,8 @@ ARM void Game::Run() { data_0204999c.func_02013014(); { - SomeSaveFileStruct local_28(0x1300); - this->mpSaveFile = local_28.mpSaveFiles[0]; + UnkDataStruct2 local_28(0x1300); + this->mpSaveFile = (SaveFile *) local_28.unk_00; if (this->mpCurrentGameMode != NULL) { delete this->mpCurrentGameMode; @@ -103,7 +96,7 @@ ARM void Game::Run() { data_027e0208.mUnk_0E4 = 0; data_027e0208.mUnk_0E8 = 0; - Mat3p_InitIdentity(&data_027e02c4); + Mat3p_InitIdentity(&gGeomMatrix); data_027e0208.mUnk_0FC = 0; FlushGfxQueue(); this->mpCurrentGameMode->vfunc_18(); diff --git a/src/Main/Game/GameModeLinkListNode.cpp b/src/Main/Game/GameModeLinkListNode.cpp deleted file mode 100644 index 7307703d..00000000 --- a/src/Main/Game/GameModeLinkListNode.cpp +++ /dev/null @@ -1,39 +0,0 @@ -#include "Game/GameModeManager.hpp" - -ARM GameModeLinkListNode::GameModeLinkListNode() { - this->mNext = this; - this->mPrev = this; -} - -ARM GameModeLinkListNode::~GameModeLinkListNode() { - this->mNext->mPrev = this->mPrev; - this->mPrev->mNext = this->mNext; -} - -ARM void GameModeLinkListNode::func_020166ac(GameModeLinkListNode *node) { - node->mNext->mPrev = node->mPrev; - node->mPrev->mNext = node->mNext; - - node->mNext = node; - node->mPrev = node; -} - -ARM void GameModeLinkListNode::func_020166cc(GameModeLinkListNode *node) { - this->func_020166ac(node); - - GameModeLinkListNode *nextNode = this->mNext; - nextNode->mPrev = node; - node->mNext = nextNode; - node->mPrev = this; - this->mNext = node; -} - -ARM void GameModeLinkListNode::func_020166f4(GameModeLinkListNode *node) { - this->func_020166ac(node); - - GameModeLinkListNode *prevNode = this->mPrev; - prevNode->mNext = node; - node->mPrev = prevNode; - node->mNext = this; - this->mPrev = node; -} diff --git a/src/Main/Game/GameModeManagerBase.cpp b/src/Main/Game/GameModeManagerBase.cpp index b95a12ca..b8ca5dff 100644 --- a/src/Main/Game/GameModeManagerBase.cpp +++ b/src/Main/Game/GameModeManagerBase.cpp @@ -66,13 +66,11 @@ ARM void GameModeManagerBase::vfunc_28(unk8 *param1) { this->mUnk_004.func_0201bf54(); } -ARM void GameModeManagerBase::vfunc_2C(unk8 *param1) {} +ARM void GameModeManagerBase::DrawUI(unk8 *param1) {} ARM void GameModeManagerBase::vfunc_30(unk32 param1) { - GameModeLinkList *pNode; - - for (pNode = this->mUnk_104.mList.GetNextList(); pNode != this->mUnk_104.GetOrigin(); pNode = pNode->GetPrevList()) { - pNode->GetTarget()->vfunc_0C(param1); + for (GameModeManagerBase_104::Iterator it = GetBeginIter(this->mUnk_104); it != GetEndIter(this->mUnk_104); it++) { + it->vfunc_0C(param1); } } @@ -104,84 +102,70 @@ ARM void GameModeManagerBase::func_0201874c(void) { this->mUnk_004.func_0201c1e4(); } -struct UnkStruct4 { - void *a; - void *b; - void *c; - void *d; -}; - // non-matching ARM void GameModeManagerBase::func_0201875c(void) { - GameModeLinkList *pNode2; - GameModeLinkList *pNode; + InputInformations local_30; + local_30.unk_00 = &this->mNextButtonID; + local_30.unk_04 = &this->mButtonID; + local_30.unk_08 = &this->mButtons; + local_30.unk_0C = &this->mTouchControl; - UnkStruct4 local_30; - local_30.a = &this->mNextButtonID; - local_30.b = &this->mButtonID; - local_30.c = &this->mButtons; - local_30.d = &this->mTouchControl; - - for (pNode = this->mUnk_104.mList.GetNextList(); pNode != this->mUnk_104.GetOrigin(); pNode = pNode->GetPrevList()) { - if (this->func_02018af0(pNode) && this->func_02018b54(pNode)) { - for (pNode2 = pNode->GetTarget()->mUnk_0C.mList.GetNextList(); pNode2 != pNode->GetTarget()->mUnk_0C.GetOrigin(); - pNode2 = pNode2->GetPrevList()) { - pNode2->GetTarget()->vfunc_08(&local_30); + for (GameModeManagerBase_104::Iterator it1 = GetBeginIter(this->mUnk_104); it1 != GetEndIter(this->mUnk_104); it1++) { + if (this->func_02018af0(it1.operator->()) && this->func_02018b54(it1.operator->())) { + //! TODO: regalloc issues when using the iterator + for (GameModeManagerBase_104_0C *it2 = GetBeginIter(it1->mUnk_0C); it2 != GetEndIter(it1->mUnk_0C); + GetNextIter(it2)) { + it2->vfunc_08(&local_30); } } } } struct UnkStruct5 { - unk32 a; - void *b; + void *a; + unk32 b; }; -// non-matching ARM void GameModeManagerBase::func_02018830(unk8 *param1) { - GameModeLinkList *pNode2; - GameModeLinkList *pNode; - + unk32 id = this->mNextButtonID; UnkStruct5 local_28; - local_28.a = this->mNextButtonID; - local_28.b = param1; + local_28.a = param1; + local_28.b = id; - for (pNode = this->mUnk_104.mList.GetPrevList(); pNode != this->mUnk_104.GetOrigin(); pNode = pNode->GetNext2()) { - if (this->func_02018af0(pNode) && this->func_02018b54(pNode) && this->func_02018b90(pNode, (unk8 *) param1)) { - for (pNode2 = pNode->GetTarget()->mUnk_0C.mList.GetPrevList(); pNode2 != pNode->GetTarget()->mUnk_0C.GetOrigin(); - pNode2 = pNode2->GetNext2()) { - pNode2->GetTarget()->vfunc_0C(&local_28); + for (GameModeManagerBase_104::Iterator it1 = GetBeginIterReverse(this->mUnk_104); it1 != GetEndIter(this->mUnk_104); + it1--) { + if (this->func_02018af0(it1.operator->()) && this->func_02018b54(it1.operator->()) && + this->func_02018b90(it1.operator->(), (unk8 *) param1)) { + //! TODO: regalloc issues when using the iterator + for (GameModeManagerBase_104_0C *it2 = GetBeginIterReverse(it1->mUnk_0C); it2 != GetEndIter(it1->mUnk_0C); + GetPrevIter(it2)) { + it2->vfunc_0C(&local_28); } } } } ARM void GameModeManagerBase::func_02018908() { - GameModeLinkList *pNode; - - for (pNode = this->mUnk_104.mList.GetNextList(); pNode != this->mUnk_104.GetOrigin(); pNode = pNode->GetPrevList()) { - if (this->func_02018af0(pNode) && this->func_02018b54(pNode)) { - pNode->GetTarget()->vfunc_08(&this->mButtons, &this->mTouchControl); + for (GameModeManagerBase_104::Iterator it = GetBeginIter(this->mUnk_104); it != GetEndIter(this->mUnk_104); it++) { + if (this->func_02018af0(it.operator->()) && this->func_02018b54(it.operator->())) { + it->vfunc_08(&this->mButtons, &this->mTouchControl); } } } ARM void GameModeManagerBase::func_02018984(unk8 *param1) { - GameModeLinkList *pNode; - - for (pNode = this->mUnk_104.mList.GetPrevList(); pNode != this->mUnk_104.GetOrigin(); pNode = pNode->GetNext2()) { - if (this->func_02018af0(pNode) && this->func_02018b54(pNode) && this->func_02018b90(pNode, param1)) { - pNode->GetTarget()->vfunc_10(param1); + for (GameModeManagerBase_104::Iterator it = GetBeginIterReverse(this->mUnk_104); it != GetEndIter(this->mUnk_104); it--) { + if (this->func_02018af0(it.operator->()) && this->func_02018b54(it.operator->()) && + this->func_02018b90(it.operator->(), param1)) { + it->vfunc_10(param1); } } } ARM void GameModeManagerBase::func_02018a14(unk8 *param1) { - GameModeLinkList *pNode; - - for (pNode = this->mUnk_104.mList.GetNextList(); pNode != this->mUnk_104.GetOrigin(); pNode = pNode->GetPrevList()) { - if (this->func_02018af0(pNode) && this->func_02018b54(pNode)) { - pNode->GetTarget()->vfunc_14(param1); + for (GameModeManagerBase_104::Iterator it = GetBeginIter(this->mUnk_104); it != GetEndIter(this->mUnk_104); it++) { + if (this->func_02018af0(it.operator->()) && this->func_02018b54(it.operator->())) { + it->vfunc_14(param1); } } } @@ -194,20 +178,20 @@ void GameModeManagerBase::func_02018a9c(unk32 param1, unk32 param2) { this->mUnk_004.func_0201c00c(param1, param2); } -void GameModeManagerBase::func_02018aac(unk32 param1) { - this->mUnk_004.func_0201c068(param1); +void GameModeManagerBase::func_02018aac(unk32 param1, bool param2) { + this->mUnk_004.func_0201c068(param1, param2); } -void GameModeManagerBase::func_02018ac4(void) { - this->mUnk_004.func_0201bfec(); +void GameModeManagerBase::func_02018ac4(unk16 param1) { + this->mUnk_004.func_0201bfec(param1); } bool GameModeManagerBase::func_02018ad4(void) { return !this->mUnk_0F4 && !this->mUnk_0F5; } -bool GameModeManagerBase::func_02018af0(GameModeLinkList *param1) { - if (param1->GetTarget()->mUnk_18) { +bool GameModeManagerBase::func_02018af0(GameModeManagerBase_104 *param1) { + if (param1->mUnk_18) { return true; } @@ -222,8 +206,8 @@ bool GameModeManagerBase::func_02018af0(GameModeLinkList *param1) { - if (param1->GetTarget()->mUnk_19) { +bool GameModeManagerBase::func_02018b54(GameModeManagerBase_104 *param1) { + if (param1->mUnk_19) { return true; } @@ -234,8 +218,8 @@ bool GameModeManagerBase::func_02018b54(GameModeLinkList *param1, unk8 *param2) { - if (param1->GetTarget()->mUnk_1A) { +bool GameModeManagerBase::func_02018b90(GameModeManagerBase_104 *param1, unk8 *param2) { + if (param1->mUnk_1A) { return true; } diff --git a/src/Main/LinkList.cpp b/src/Main/LinkList.cpp new file mode 100644 index 00000000..dccd51f7 --- /dev/null +++ b/src/Main/LinkList.cpp @@ -0,0 +1,110 @@ +#include "LinkList.hpp" + +LinkListImpl::LinkListImpl() { + this->SetNext(this); + this->SetPrev(this); +} + +LinkListImpl::~LinkListImpl() { + // link the previous node with the next node since + // the one in-between (`this`) is getting removed + + // A <- B <- C will become A <- C + this->GetNext()->SetPrev(this->GetPrev()); + + // A -> B -> C will become A -> C + this->GetPrev()->SetNext(this->GetNext()); +} + +void LinkListImpl::Detach(LinkListNode *node) { + // remove the links from `node` + + // A <- B <- C will become A <- C + node->GetNext()->SetPrev(node->GetPrev()); + + // A -> B -> C will become A -> C + node->GetPrev()->SetNext(node->GetNext()); + + node->SetNext(node); + node->SetPrev(node); +} + +void LinkListImpl::Append(LinkListNode *node) { + LinkListImpl::Detach(node); + + LinkListNode *nextNode = this->GetNext(); + + // current: A -> C and A <- C + + // create link B <- C + nextNode->SetPrev(node); + + // create link B -> C + node->SetNext(nextNode); + + // create link A <- B + node->SetPrev(this); + + // create link A -> B + this->SetNext(node); + + // updated: A -> B -> C and A <- B <- C +} + +void LinkListImpl::Prepend(LinkListNode *node) { + LinkListImpl::Detach(node); + + LinkListNode *prevNode = this->GetPrev(); + + // current: A -> C and A <- C + + // create link A -> B + prevNode->SetNext(node); + + // create link A <- B + node->SetPrev(prevNode); + + // create link B -> C + node->SetNext(this); + + // create link B <- C + this->SetPrev(node); + + // updated: A -> B -> C and A <- B <- C +} + +void LinkListImpl::Extend(LinkListNode *node) { + LinkListNode *prevNode = this->GetPrev(); + LinkListNode *paramPrev = node->GetPrev(); + + prevNode->SetNext(node); + paramPrev->SetNext(this); + this->SetPrev(paramPrev); + node->SetPrev(prevNode); +} + +s32 LinkListImpl::GetListLength() { + s32 count = 0; + + for (LinkListIterImpl it = this->GetBeginIterImpl(); it != this->GetEndIterImpl(); it++) { + count++; + } + + return count; +} + +bool LinkListImpl::Contains(LinkListNode *node) { + // iterates through the list to try to find the node + for (LinkListIterImpl it = this->GetBeginIterImpl(); it != this->GetEndIterImpl(); it++) { + if (it == node) { + return true; + } + } + + // if the node parameter has the same address as this + if (node == this) { + return true; + } + + return false; +} diff --git a/src/Main/System/SysFault.cpp b/src/Main/System/SysFault.cpp index 6a62e76b..d631d66f 100644 --- a/src/Main/System/SysFault.cpp +++ b/src/Main/System/SysFault.cpp @@ -33,11 +33,6 @@ extern u16 data_0203e0c4[]; extern int data_0203e0be; extern int data_ov020_20e8580; -struct struct_aStack_2e0 { - int mUnk_00; - struct_aStack_2e0(void *, int); -}; - struct struct_aStack_2d8 { struct_aStack_2d8(); void func_ov000_020685cc(); @@ -146,7 +141,8 @@ THUMB void SysFault::func_020127f0(unk32 param1) { { UnkSystem2_UnkSubSystem5_Base_10 aStack_278; aStack_2d8.func_ov000_0206869c(); - struct_aStack_2e0 uStack_2e0(data_ov000_020b504c.mUnk_000, 0x25); + UnkMsgDataStruct1 uStack_2e0; + uStack_2e0.func_ov000_02067a60(data_ov000_020b504c.mUnk_000, 0x25); aStack_2d8.func_ov000_020686a4(uStack_2e0.mUnk_00); aStack_2d8.func_ov000_02068fec(); aStack_2d8.func_ov000_0206878c(); @@ -166,7 +162,8 @@ THUMB void SysFault::func_020127f0(unk32 param1) { { UnkSystem2_UnkSubSystem5_Base_10 aStack_278; aStack_2d8.func_ov000_0206869c(); - struct_aStack_2e0 uStack_2e0(data_ov000_020b504c.mUnk_000, 0x26); + UnkMsgDataStruct1 uStack_2e0; + uStack_2e0.func_ov000_02067a60(data_ov000_020b504c.mUnk_000, 0x26); aStack_2d8.func_ov000_020686a4(uStack_2e0.mUnk_00); aStack_2d8.func_ov000_02068fec(); aStack_2d8.func_ov000_0206878c(); diff --git a/tools/configure.py b/tools/configure.py index aa270cc9..4eb387e4 100755 --- a/tools/configure.py +++ b/tools/configure.py @@ -148,7 +148,7 @@ config.libs = [ Object("Main/System/OverlayManager.cpp"), Object("Main/UnkFileSystem.cpp"), Object("Main/System/Random.cpp"), - Object("Main/Game/GameModeLinkListNode.cpp"), + Object("Main/LinkList.cpp"), Object("Main/func_02017ea4.cpp"), Object("Main/Game/GameModeBase.cpp"), Object("Main/UnkStruct_0204a060.cpp"), @@ -161,6 +161,7 @@ config.libs = [ [ Object("000_Second/Game/GameModeManagerBase_104_0C.cpp"), Object("000_Second/Game/GameModeManagerBase_104.cpp"), + Object("000_Second/code_020657fc.cpp"), Object("000_Second/UnkSystem1_Base.cpp"), Object("000_Second/UnkSystem1_Derived1.cpp"), Object("000_Second/data_ov000_020af58c.cpp"), diff --git a/tools/objdiff_config.py b/tools/objdiff_config.py index a017315f..b44687c9 100644 --- a/tools/objdiff_config.py +++ b/tools/objdiff_config.py @@ -25,11 +25,21 @@ class ConfigVersion: objdiff_json = json.loads(self.objdiff_path.read_text()) self.objdiff_json: dict = copy.copy(objdiff_json) - # deprecated options + # remove deprecated options self.objdiff_json.pop("target_dir") self.objdiff_json.pop("base_dir") self.objdiff_json.pop("build_base") + # fix watch patterns, remove yaml, json and all txt files + # except symbols, delinks and relocs + self.objdiff_json["watch_patterns"].remove("*.yml") + self.objdiff_json["watch_patterns"].remove("*.yaml") + self.objdiff_json["watch_patterns"].remove("*.json") + self.objdiff_json["watch_patterns"].remove("*.txt") + self.objdiff_json["watch_patterns"].append("*symbols.txt") + self.objdiff_json["watch_patterns"].append("*delinks.txt") + self.objdiff_json["watch_patterns"].append("*relocs.txt") + for i, unit_dict in enumerate(objdiff_json["units"]): if "name" in unit_dict: unit_dict["name"] = f"{self.name}/{unit_dict['name']}" diff --git a/tools/project.py b/tools/project.py index 75761f18..f45d12c8 100644 --- a/tools/project.py +++ b/tools/project.py @@ -305,7 +305,9 @@ class ProjectConfig: def delink_files(self, version: str) -> list[str]: delink_files = [file['delink_file'] for file in self.files(version)] - return list(set(delink_files)) + delink_files = list(set(delink_files)) + delink_files.sort() + return delink_files def arm9_lcf_file(self, version: str) -> str: if self.delinks_jsons[version] is None: @@ -318,12 +320,14 @@ class ProjectConfig: return self.delinks_jsons[version]['arm9_objects_file'] def get_config_files(self, version: str, name: str) -> list[str]: - return [ + files = [ f"{root}/{file}" for root, _, files in os.walk(self.get_game_config(version)) for file in files if file == name ] + files.sort() + return files def get_decompme_compiler(self): return COMPILER_MAP[self.mwcc_version] @@ -535,6 +539,7 @@ def add_mwcc_builds(cfg: ProjectConfig, version: str, objects: Dict[str, Object] "basedir": str(src_obj_path.parent), "basefile": str(src_obj_path.with_suffix("")), }, + # order_only="objdiff", ) n.newline() @@ -743,6 +748,10 @@ def process_project(cfg: ProjectConfig, args: Any): create_objdiff_fixup_config(cfg, objects) + rust_log = "RUST_LOG=ds_rom::rom::rom=warn" + if cfg.platform.system == "windows": + rust_log = f"set {rust_log} &&" + with cfg.build_ninja_path.open("w") as file: n = ninja_syntax.Writer(file) @@ -760,7 +769,7 @@ def process_project(cfg: ProjectConfig, args: Any): n.rule( name="extract", - command=f"{cfg.dsd_path} {cfg.dsd_flags} rom extract --rom $in --output-path $output_path $arm7_bios_flag" + command=f"{rust_log} {cfg.dsd_path} {cfg.dsd_flags} rom extract --rom $in --output-path $output_path $arm7_bios_flag" ) n.newline() @@ -806,13 +815,13 @@ def process_project(cfg: ProjectConfig, args: Any): n.rule( name="rom_config", - command=f"{cfg.dsd_path} {cfg.dsd_flags} rom config --elf $in --config $config_path" + command=f"{rust_log} {cfg.dsd_path} {cfg.dsd_flags} rom config --elf $in --config $config_path" ) n.newline() n.rule( name="rom_build", - command=f"{cfg.dsd_path} {cfg.dsd_flags} rom build --config $in --rom $out $arm7_bios_flag" + command=f"{rust_log} {cfg.dsd_path} {cfg.dsd_flags} rom build --config $in --rom $out $arm7_bios_flag" ) n.newline() @@ -936,7 +945,8 @@ def process_project(cfg: ProjectConfig, args: Any): n.build( rule="post_objdiff", implicit=[f"objdiff_{version}.json" for version in cfg.game_versions], - outputs="objdiff" + outputs="objdiff", + order_only=cmds_map["delink"], ) n.newline() diff --git a/tools/vtable_sym.py b/tools/vtable_sym.py index 1b846730..8f0768aa 100755 --- a/tools/vtable_sym.py +++ b/tools/vtable_sym.py @@ -55,7 +55,7 @@ def main(): # Try next symbols.txt file continue - file_name = str(symbol_file.relative_to(config_path)) + file_name = str(symbol_file.relative_to(base_config_path)) if file_name.endswith("dtcm/symbols.txt"): dest_module = ("dtcm", 0) elif file_name.endswith("itcm/symbols.txt"):