From 536c4d4b067a138172191e73646d20ac7ae491a2 Mon Sep 17 00:00:00 2001 From: Yanis002 <35189056+Yanis002@users.noreply.github.com> Date: Wed, 14 Jan 2026 20:42:26 +0100 Subject: [PATCH 1/5] Decompile Title overlay --- config/eur/arm9/overlays/ov000/relocs.txt | 2 +- config/eur/arm9/overlays/ov000/symbols.txt | 54 +- config/eur/arm9/overlays/ov001/relocs.txt | 25 +- config/eur/arm9/overlays/ov017/symbols.txt | 2 +- config/eur/arm9/overlays/ov018/symbols.txt | 6 +- config/eur/arm9/overlays/ov019/symbols.txt | 10 +- config/eur/arm9/overlays/ov021/relocs.txt | 6 +- config/eur/arm9/overlays/ov024/relocs.txt | 4 +- config/eur/arm9/overlays/ov025/delinks.txt | 16 + config/eur/arm9/overlays/ov025/relocs.txt | 20 +- config/eur/arm9/overlays/ov025/symbols.txt | 107 ++-- config/eur/arm9/symbols.txt | 21 +- config/jp/arm9/overlays/ov000/symbols.txt | 56 +- config/jp/arm9/overlays/ov001/relocs.txt | 33 +- config/jp/arm9/overlays/ov001/symbols.txt | 2 +- config/jp/arm9/overlays/ov017/symbols.txt | 2 +- config/jp/arm9/overlays/ov018/symbols.txt | 6 +- config/jp/arm9/overlays/ov019/symbols.txt | 10 +- config/jp/arm9/overlays/ov021/relocs.txt | 6 +- config/jp/arm9/overlays/ov024/relocs.txt | 4 +- config/jp/arm9/overlays/ov025/delinks.txt | 16 + config/jp/arm9/overlays/ov025/relocs.txt | 20 +- config/jp/arm9/overlays/ov025/symbols.txt | 122 ++--- config/jp/arm9/symbols.txt | 23 +- include/FileSelect/FileSelect.hpp | 38 +- include/FileSelect/FileSelectMain.hpp | 40 +- include/FileSelect/FileSelectMicTest.hpp | 41 +- include/FileSelect/FileSelectOptions.hpp | 4 +- .../FileSelect/FileSelectOptionsManager.hpp | 2 +- include/FileSelect/UnkSubStruct9.hpp | 51 +- include/Game/GameModeManager.hpp | 23 +- include/Game/GameModeTitleScreen.hpp | 27 + include/Player/TouchControl.hpp | 26 + include/TitleScreen/TitleScreen.hpp | 222 ++++++++ include/{FileSelect => Unknown}/Common.hpp | 97 ++++ include/Unknown/UnkStruct_02049be0.hpp | 16 + include/Unknown/UnkStruct_0204a060.hpp | 2 +- include/Unknown/UnkStruct_0204a088.hpp | 10 +- include/Unknown/UnkStruct_0204a110.hpp | 5 +- include/Unknown/UnkStruct_0204aeac.hpp | 17 + include/Unknown/UnkStruct_027e0954.hpp | 20 + include/Unknown/UnkStruct_027e09a4.hpp | 17 +- include/Unknown/UnkStruct_ov000_020b5214.hpp | 3 +- include/nitro/button.h | 14 + include/regs.h | 2 + include/types.h | 34 +- src/019_MainSelect/019_SaveManager.cpp | 2 +- src/019_MainSelect/019_UnkSubStruct9.cpp | 163 +++--- src/019_MainSelect/FileSelectMain.cpp | 46 +- src/019_MainSelect/FileSelectManager.cpp | 2 +- src/019_MainSelect/FileSelectMicTest.cpp | 6 +- src/019_MainSelect/FileSelectOptions.cpp | 14 +- src/019_MainSelect/FileSelectSubScreen.cpp | 12 +- src/025_Title/GameModeTitleScreen.cpp | 109 ++++ src/025_Title/TitleScreen.cpp | 503 ++++++++++++++++++ src/025_Title/TitleScreenManager.cpp | 61 +++ 56 files changed, 1578 insertions(+), 624 deletions(-) create mode 100644 include/Game/GameModeTitleScreen.hpp create mode 100644 include/Player/TouchControl.hpp create mode 100644 include/TitleScreen/TitleScreen.hpp rename include/{FileSelect => Unknown}/Common.hpp (83%) create mode 100644 include/Unknown/UnkStruct_02049be0.hpp create mode 100644 include/Unknown/UnkStruct_0204aeac.hpp create mode 100644 include/Unknown/UnkStruct_027e0954.hpp create mode 100644 include/nitro/button.h create mode 100644 src/025_Title/GameModeTitleScreen.cpp create mode 100644 src/025_Title/TitleScreen.cpp create mode 100644 src/025_Title/TitleScreenManager.cpp diff --git a/config/eur/arm9/overlays/ov000/relocs.txt b/config/eur/arm9/overlays/ov000/relocs.txt index ec1367ae..52fc21f7 100644 --- a/config/eur/arm9/overlays/ov000/relocs.txt +++ b/config/eur/arm9/overlays/ov000/relocs.txt @@ -9427,7 +9427,7 @@ from:0x020b01d0 kind:arm_call to:0x020c5a74 module:overlay(18) from:0x020b01e0 kind:arm_call to:0x0203ce74 module:main from:0x020b01f4 kind:load to:0x020b52d8 module:overlay(0) from:0x020b01f8 kind:load to:0x020b52e8 module:overlay(0) -from:0x020b01fc kind:load to:0x020c5aa8 module:overlays(18,25) +from:0x020b01fc kind:load to:0x020c5aa8 module:overlay(18) from:0x020b0200 kind:load to:0x020b52dc module:overlay(0) from:0x020b021c kind:arm_call to:0x020c5814 module:overlay(18) from:0x020b0230 kind:load to:0x020b52fc module:overlay(0) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index a0e9d318..5fab1cb7 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -188,9 +188,9 @@ func_ov000_02059138 kind:function(arm,size=0x30) addr:0x02059138 func_ov000_02059168 kind:function(arm,size=0x28) addr:0x02059168 func_ov000_02059190 kind:function(arm,size=0x3c) addr:0x02059190 _ZN29UnkStruct_ov000_020b4ec4_BaseC2Ev kind:function(arm,size=0x20) addr:0x020591cc -func_ov000_020591ec kind:function(arm,size=0x54) addr:0x020591ec -func_ov000_02059240 kind:function(arm,size=0x30) addr:0x02059240 -func_ov000_02059270 kind:function(arm,size=0x18) addr:0x02059270 +_ZN26UnkStruct_StackTitleScreenC1EPKci kind:function(arm,size=0x54) addr:0x020591ec +_ZN26UnkStruct_StackTitleScreen19func_ov000_02059240Ev kind:function(arm,size=0x30) addr:0x02059240 +_ZN26UnkStruct_StackTitleScreen19func_ov000_02059270EiPci kind:function(arm,size=0x18) addr:0x02059270 func_ov000_02059288 kind:function(arm,size=0x18) addr:0x02059288 func_ov000_020592a0 kind:function(thumb,size=0x4c) addr:0x020592a0 func_ov000_020592ec kind:function(thumb,size=0x70) addr:0x020592ec @@ -423,16 +423,16 @@ func_ov000_020606f0 kind:function(arm,size=0x48) addr:0x020606f0 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 -func_ov000_02060804 kind:function(arm,size=0x28) addr:0x02060804 -func_ov000_0206082c kind:function(arm,size=0x124) addr:0x0206082c -func_ov000_02060950 kind:function(arm,size=0x60) addr:0x02060950 -func_ov000_020609b0 kind:function(arm,size=0x14) addr:0x020609b0 -func_ov000_020609c4 kind:function(arm,size=0xd4) addr:0x020609c4 -func_ov000_02060a98 kind:function(arm,size=0x38) addr:0x02060a98 -func_ov000_02060ad0 kind:function(arm,size=0x28) addr:0x02060ad0 -func_ov000_02060af8 kind:function(arm,size=0x58) addr:0x02060af8 -func_ov000_02060b50 kind:function(arm,size=0x14) addr:0x02060b50 -func_ov000_02060b64 kind:function(arm,size=0x20) addr:0x02060b64 +_ZN14UnkSubStruct19C1Ev kind:function(arm,size=0x28) addr:0x02060804 +_ZN14UnkSubStruct1919func_ov000_0206082cEii 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 +_ZN14UnkSubStruct1919func_ov000_02060a98Ev kind:function(arm,size=0x38) addr:0x02060a98 +_ZN14UnkSubStruct1919func_ov000_02060ad0Ev kind:function(arm,size=0x28) addr:0x02060ad0 +_ZN14UnkSubStruct1919func_ov000_02060af8Ev kind:function(arm,size=0x58) addr:0x02060af8 +_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 func_ov000_02060bd8 kind:function(arm,size=0x50) addr:0x02060bd8 @@ -444,15 +444,15 @@ 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 func_ov000_02060ec4 kind:function(arm,size=0x20) addr:0x02060ec4 -func_ov000_02060ee4 kind:function(arm,size=0x30) addr:0x02060ee4 +_ZN23TitleScreenManager_BaseC2Ev kind:function(arm,size=0x30) addr:0x02060ee4 func_ov000_02060f14 kind:function(arm,size=0x38) addr:0x02060f14 func_ov000_02060f4c kind:function(arm,size=0x40) addr:0x02060f4c -func_ov000_02060f8c kind:function(arm,size=0x38) addr:0x02060f8c -func_ov000_02060fc4 kind:function(arm,size=0x4) addr:0x02060fc4 +_ZN23TitleScreenManager_BaseD2Ev kind:function(arm,size=0x38) addr:0x02060f8c +_ZN23TitleScreenManager_Base8vfunc_10Eiii kind:function(arm,size=0x4) addr:0x02060fc4 func_ov000_02060fc8 kind:function(arm,size=0x68) addr:0x02060fc8 -func_ov000_02061030 kind:function(arm,size=0x8) addr:0x02061030 -func_ov000_02061038 kind:function(arm,size=0x4) addr:0x02061038 -func_ov000_0206103c kind:function(arm,size=0x4) addr:0x0206103c +_ZN23TitleScreenManager_Base8vfunc_3CEv kind:function(arm,size=0x8) addr:0x02061030 +_ZN23TitleScreenManager_Base8vfunc_40Ev kind:function(arm,size=0x4) addr:0x02061038 +_ZN23TitleScreenManager_Base8vfunc_44Ev kind:function(arm,size=0x4) addr:0x0206103c func_ov000_02061040 kind:function(arm,size=0x44) addr:0x02061040 func_ov000_02061084 kind:function(arm,size=0x14) addr:0x02061084 _ZN18UnkStruct_0204a08819func_ov000_02061098Ev kind:function(arm,size=0x144) addr:0x02061098 @@ -903,7 +903,7 @@ func_ov000_0206d4cc kind:function(arm,size=0x98) addr:0x0206d4cc func_ov000_0206d564 kind:function(arm,size=0x150) addr:0x0206d564 _ZN24UnkStruct_ov000_020b521419func_ov000_0206d6b4Eii kind:function(arm,size=0x15c) addr:0x0206d6b4 func_ov000_0206d810 kind:function(arm,size=0x2c) addr:0x0206d810 -func_ov000_0206d83c kind:function(arm,size=0x40) addr:0x0206d83c +_ZN24UnkStruct_ov000_020b521419func_ov000_0206d83cEi kind:function(arm,size=0x40) addr:0x0206d83c func_ov000_0206d87c kind:function(arm,size=0x4c) addr:0x0206d87c func_ov000_0206d8c8 kind:function(arm,size=0x4c) addr:0x0206d8c8 func_ov000_0206d914 kind:function(arm,size=0x4c) addr:0x0206d914 @@ -996,7 +996,7 @@ func_ov000_020703bc kind:function(arm,size=0x8) addr:0x020703bc func_ov000_020703c4 kind:function(arm,size=0x5c) addr:0x020703c4 func_ov000_02070420 kind:function(arm,size=0xa8) addr:0x02070420 func_ov000_020704c8 kind:function(arm,size=0x2c) addr:0x020704c8 -func_ov000_020704f4 kind:function(arm,size=0x44) addr:0x020704f4 +_ZN18UnkStruct_027e09a4D1Ev kind:function(arm,size=0x44) addr:0x020704f4 func_ov000_02070538 kind:function(arm,size=0xc) addr:0x02070538 func_ov000_02070544 kind:function(arm,size=0x10) addr:0x02070544 func_ov000_02070554 kind:function(arm,size=0xc) addr:0x02070554 @@ -1006,12 +1006,12 @@ func_ov000_02070580 kind:function(arm,size=0x1c) addr:0x02070580 func_ov000_0207059c kind:function(arm,size=0x4c) addr:0x0207059c func_ov000_020705e8 kind:function(thumb,size=0x134) addr:0x020705e8 func_ov000_0207071c kind:function(thumb,size=0x8c) addr:0x0207071c -func_ov000_020707a8 kind:function(thumb,size=0x8c) addr:0x020707a8 -func_ov000_02070834 kind:function(arm,size=0x48) addr:0x02070834 -func_ov000_0207087c kind:function(arm,size=0x5c) addr:0x0207087c -func_ov000_020708d8 kind:function(arm,size=0x60) addr:0x020708d8 -func_ov000_02070938 kind:function(arm,size=0x114) addr:0x02070938 -func_ov000_02070a4c kind:function(arm,size=0x50) addr:0x02070a4c +_ZN18UnkStruct_027e09a419func_ov000_020707a8EPv kind:function(thumb,size=0x8c) addr:0x020707a8 +_ZN18UnkStruct_027e09a419func_ov000_02070834EPv kind:function(arm,size=0x48) addr:0x02070834 +_ZN18UnkStruct_027e09a419func_ov000_0207087cEi kind:function(arm,size=0x5c) addr:0x0207087c +_ZN18UnkStruct_027e09a419func_ov000_020708d8Ei kind:function(arm,size=0x60) addr:0x020708d8 +_ZN18UnkStruct_027e09a419func_ov000_02070938Ei kind:function(arm,size=0x114) addr:0x02070938 +_ZN18UnkStruct_027e09a419func_ov000_02070a4cEi kind:function(arm,size=0x50) addr:0x02070a4c func_ov000_02070a9c kind:function(arm,size=0x44) addr:0x02070a9c func_ov000_02070ae0 kind:function(arm,size=0x18) addr:0x02070ae0 func_ov000_02070af8 kind:function(arm,size=0x1c) addr:0x02070af8 diff --git a/config/eur/arm9/overlays/ov001/relocs.txt b/config/eur/arm9/overlays/ov001/relocs.txt index b9f6a0b7..40bb3015 100644 --- a/config/eur/arm9/overlays/ov001/relocs.txt +++ b/config/eur/arm9/overlays/ov001/relocs.txt @@ -1647,7 +1647,7 @@ from:0x020be086 kind:thumb_call to:0x020a1028 module:overlay(0) from:0x020be09a kind:thumb_call_arm to:0x02028c90 module:main from:0x020be0b6 kind:thumb_call_arm to:0x020a10f4 module:overlay(0) from:0x020be0c0 kind:thumb_call_arm to:0x02011f3c module:main -from:0x020be0c8 kind:thumb_call_arm to:0x020c4840 module:overlays(20,25) +from:0x020be0c8 kind:thumb_call_arm to:0x020c4840 module:overlay(25) from:0x020be0d0 kind:load to:0x02049ba0 module:main from:0x020be0d4 kind:load to:0x02049a2c module:main from:0x020be0de kind:thumb_call to:0x020148d0 module:main @@ -2336,17 +2336,11 @@ from:0x020c1088 kind:load to:0x020c2104 module:overlay(1) from:0x020c10f4 kind:load to:0x020c4701 module:overlay(1) from:0x020c1100 kind:load to:0x020c219c module:overlay(1) from:0x020c1114 kind:load to:0x020c2234 module:overlay(1) -from:0x020c1118 kind:load to:0x020c5b68 module:overlay(25) from:0x020c111c kind:load to:0x020c22ac module:overlay(1) -from:0x020c1120 kind:load to:0x020c5b68 module:overlay(25) from:0x020c1124 kind:load to:0x020c2324 module:overlay(1) -from:0x020c1128 kind:load to:0x020c5b68 module:overlay(25) from:0x020c112c kind:load to:0x020c239c module:overlay(1) -from:0x020c1130 kind:load to:0x020c5b68 module:overlay(25) from:0x020c1134 kind:load to:0x020c2414 module:overlay(1) -from:0x020c1138 kind:load to:0x020c5b68 module:overlay(25) from:0x020c113c kind:load to:0x020c248c module:overlay(1) -from:0x020c1140 kind:load to:0x020c5b68 module:overlay(25) from:0x020c114c kind:load to:0x020c3bf4 module:overlay(1) from:0x020c1224 kind:load to:0x020c2f4c module:overlay(1) from:0x020c1338 kind:load to:0x020c2fc4 module:overlay(1) @@ -2360,13 +2354,9 @@ from:0x020c1680 kind:load to:0x020c4701 module:overlay(1) from:0x020c168c kind:load to:0x020c273c module:overlay(1) from:0x020c16f8 kind:load to:0x020c4701 module:overlay(1) from:0x020c1718 kind:load to:0x020c1528 add:0x1400 module:overlay(1) -from:0x020c171c kind:load to:0x020c5b68 module:overlay(25) from:0x020c1720 kind:load to:0x020c29a0 module:overlay(1) -from:0x020c1724 kind:load to:0x020c5b68 module:overlay(25) from:0x020c1728 kind:load to:0x020c2a18 module:overlay(1) -from:0x020c172c kind:load to:0x020c5b68 module:overlay(25) from:0x020c1730 kind:load to:0x020c2a90 module:overlay(1) -from:0x020c1734 kind:load to:0x020c5b68 module:overlay(25) from:0x020c18a4 kind:load to:0x020c4700 module:overlay(1) from:0x020c1930 kind:load to:0x020c4700 module:overlay(1) from:0x020c19c0 kind:load to:0x020c4700 module:overlay(1) @@ -2384,7 +2374,6 @@ from:0x020c1e80 kind:load to:0x020c4701 module:overlay(1) from:0x020c1e88 kind:load to:0x020d22ea module:overlay(19) from:0x020c1e8c kind:load to:0x020c303c module:overlay(1) from:0x020c1ef8 kind:load to:0x020c4701 module:overlay(1) -from:0x020c1efc kind:load to:0x020c5b54 module:overlay(25) from:0x020c1f00 kind:load to:0x020d22ea module:overlay(19) from:0x020c1f04 kind:load to:0x020c31c0 module:overlay(1) from:0x020c20f8 kind:load to:0x020c4701 module:overlay(1) @@ -2394,29 +2383,19 @@ from:0x020c2170 kind:load to:0x020c4701 module:overlay(1) from:0x020c2178 kind:load to:0x020d22ea module:overlay(19) from:0x020c217c kind:load to:0x020c33cc module:overlay(1) from:0x020c2190 kind:load to:0x020c3490 module:overlay(1) -from:0x020c2194 kind:load to:0x020c5b68 module:overlay(25) from:0x020c2198 kind:load to:0x020c3508 module:overlay(1) -from:0x020c219c kind:load to:0x020c5b68 module:overlay(25) from:0x020c21a0 kind:load to:0x020c2f4c module:overlay(1) -from:0x020c21a4 kind:load to:0x020c5b68 module:overlay(25) from:0x020c21a8 kind:load to:0x020c2fc4 module:overlay(1) -from:0x020c21ac kind:load to:0x020c5b68 module:overlay(25) from:0x020c21b0 kind:load to:0x020c3218 module:overlay(1) -from:0x020c21b4 kind:load to:0x020c5b68 module:overlay(25) from:0x020c21b8 kind:load to:0x020c3290 module:overlay(1) -from:0x020c21bc kind:load to:0x020c5b68 module:overlay(25) from:0x020c2580 kind:load to:0x020c35c8 module:overlay(1) -from:0x020c2584 kind:load to:0x020c5b74 module:overlay(25) from:0x020c2588 kind:load to:0x020c363c module:overlay(1) -from:0x020c258c kind:load to:0x020c5b4c module:overlays(20,25) +from:0x020c258c kind:load to:0x020c5b4c module:overlay(20) from:0x020c2590 kind:load to:0x020c3688 module:overlay(1) -from:0x020c2594 kind:load to:0x020c5b24 module:overlay(25) from:0x020c2598 kind:load to:0x020c36ac module:overlay(1) from:0x020c25a0 kind:load to:0x020c37b4 module:overlay(1) from:0x020c25a8 kind:load to:0x020c38c0 module:overlay(1) -from:0x020c25ac kind:load to:0x020c5b58 module:overlay(25) from:0x020c25b0 kind:load to:0x020c3918 module:overlay(1) -from:0x020c25b4 kind:load to:0x020c5b58 module:overlay(25) from:0x020c2822 kind:thumb_call to:0x020b7430 module:overlay(1) from:0x020c2830 kind:load to:0x020c2fe0 module:overlay(1) from:0x020c2834 kind:load to:0x020c2fe4 module:overlay(1) diff --git a/config/eur/arm9/overlays/ov017/symbols.txt b/config/eur/arm9/overlays/ov017/symbols.txt index 0ac5f1e9..b109ed10 100644 --- a/config/eur/arm9/overlays/ov017/symbols.txt +++ b/config/eur/arm9/overlays/ov017/symbols.txt @@ -1,7 +1,7 @@ func_ov017_020bb660 kind:function(arm,size=0x198) addr:0x020bb660 func_ov017_020bb7f8 kind:function(arm,size=0x13c) addr:0x020bb7f8 func_ov017_020bb934 kind:function(arm,size=0x60) addr:0x020bb934 -func_ov017_020bb994 kind:function(arm,size=0x8c) addr:0x020bb994 +_ZN18UnkStruct_027e09a419func_ov017_020bb994EPv kind:function(arm,size=0x8c) addr:0x020bb994 func_ov017_020bba20 kind:function(arm,size=0x28) addr:0x020bba20 func_ov017_020bba48 kind:function(arm,size=0x30) addr:0x020bba48 func_ov017_020bba78 kind:function(arm,size=0x1c) addr:0x020bba78 diff --git a/config/eur/arm9/overlays/ov018/symbols.txt b/config/eur/arm9/overlays/ov018/symbols.txt index 2d05436a..dd96c5be 100644 --- a/config/eur/arm9/overlays/ov018/symbols.txt +++ b/config/eur/arm9/overlays/ov018/symbols.txt @@ -53,10 +53,10 @@ _ZN24UnkStruct_ov018_020c5ac011SetInstanceEv kind:function(arm,size=0x10) addr:0 _ZTV15GameModeStartUp kind:data(any) addr:0x020c5b20 @1618 kind:data(any) addr:0x020c5b50 local @1619 kind:data(any) addr:0x020c5b64 local -@1620 kind:data(any) addr:0x020c5b68 local -@1621 kind:data(any) addr:0x020c5b78 local +@1620 kind:data(byte[14]) addr:0x020c5b68 local +@1621 kind:data(byte[10]) addr:0x020c5b78 local @1676 kind:data(any) addr:0x020c5b84 local -@1845 kind:data(any) addr:0x020c5b8c local +@1845 kind:data(byte[32]) addr:0x020c5b8c local data_ov018_020c5bc0 kind:bss(size=0x1) addr:0x020c5bc0 local _ZGVZN18UnkStruct_02049a2c19func_ov018_020c4ba8EvE19data_ov018_020c5bd4 kind:bss addr:0x020c5bc4 local @978 kind:bss addr:0x020c5bc8 local diff --git a/config/eur/arm9/overlays/ov019/symbols.txt b/config/eur/arm9/overlays/ov019/symbols.txt index 3759276a..ada97dd7 100644 --- a/config/eur/arm9/overlays/ov019/symbols.txt +++ b/config/eur/arm9/overlays/ov019/symbols.txt @@ -104,7 +104,7 @@ _ZN14FileSelectMain19func_ov019_020cb1dcEv kind:function(arm,size=0x5c) addr:0x0 _ZN14FileSelectMain19func_ov019_020cb238Ev kind:function(arm,size=0x30) addr:0x020cb238 _ZN14FileSelectMain19func_ov019_020cb268Ev kind:function(arm,size=0x4) addr:0x020cb268 _ZN14FileSelectMain19func_ov019_020cb26cEv kind:function(arm,size=0x4) addr:0x020cb26c -_ZN14FileSelectMain8vfunc_10Ev kind:function(arm,size=0x38) addr:0x020cb270 +_ZN14FileSelectMain8vfunc_10EPc kind:function(arm,size=0x38) addr:0x020cb270 _ZN14FileSelectMain19func_ov019_020cb2a8Ev kind:function(arm,size=0x34) addr:0x020cb2a8 _ZN14FileSelectMain19func_ov019_020cb2dcEv kind:function(arm,size=0x48) addr:0x020cb2dc _ZN14FileSelectMain19func_ov019_020cb324Ev kind:function(arm,size=0x198) addr:0x020cb324 @@ -154,7 +154,7 @@ _ZN17FileSelectOptionsD1Ev kind:function(arm,size=0x110) addr:0x020ccb18 _ZN17FileSelectOptionsD0Ev kind:function(arm,size=0x118) addr:0x020ccc28 _ZN17FileSelectOptions19func_ov019_020ccd40Ev kind:function(arm,size=0x38) addr:0x020ccd40 _ZN17FileSelectOptions8vfunc_08Ev kind:function(arm,size=0x38) addr:0x020ccd78 -_ZN17FileSelectOptions8vfunc_10Ev kind:function(arm,size=0x44) addr:0x020ccdb0 +_ZN17FileSelectOptions8vfunc_10EPc kind:function(arm,size=0x44) addr:0x020ccdb0 _ZN17FileSelectOptions19func_ov019_020ccdf4Ev kind:function(arm,size=0x10) addr:0x020ccdf4 _ZN17FileSelectOptions19func_ov019_020cce04Ev kind:function(arm,size=0x2c) addr:0x020cce04 _ZN17FileSelectOptions19func_ov019_020cce30Ev kind:function(arm,size=0x33c) addr:0x020cce30 @@ -196,8 +196,8 @@ _ZN17FileSelectMicTest19func_ov019_020cea74Ev kind:function(arm,size=0x38) addr: _ZN17FileSelectMicTest19func_ov019_020ceaacEv kind:function(arm,size=0x120) addr:0x020ceaac _ZN17FileSelectMicTest19func_ov019_020cebccEv kind:function(arm,size=0x98) addr:0x020cebcc _ZN17FileSelectMicTest8vfunc_08Ev kind:function(arm,size=0x2a0) addr:0x020cec64 -_ZN17FileSelectMicTest8vfunc_10Ev kind:function(arm,size=0x68) addr:0x020cef04 -_ZN17FileSelectMicTest8vfunc_14Ev kind:function(arm,size=0x78) addr:0x020cef6c +_ZN17FileSelectMicTest8vfunc_10EPc kind:function(arm,size=0x68) addr:0x020cef04 +_ZN17FileSelectMicTest8vfunc_14EPc kind:function(arm,size=0x78) addr:0x020cef6c _ZN17FileSelectMicTest19func_ov019_020cefe4Ev kind:function(arm,size=0x14) addr:0x020cefe4 _ZN17FileSelectMicTest19func_ov019_020ceff8Ev kind:function(arm,size=0x14) addr:0x020ceff8 _ZN31UnkStruct_ov019_020d24c8_28_270C1Ev kind:function(arm,size=0x124) addr:0x020cf00c @@ -207,7 +207,7 @@ _ZN31UnkStruct_ov019_020d24c8_28_27019func_ov019_020cf21cEv kind:function(arm,si _ZN19FileSelectSubScreenC1Ev kind:function(arm,size=0x35c) addr:0x020cf28c _ZN19FileSelectSubScreen8vfunc_08Ev kind:function(arm,size=0x154) addr:0x020cf5e8 _ZN19FileSelectSubScreen19func_ov019_020cf73cEii kind:function(arm,size=0x120) addr:0x020cf73c -_ZN19FileSelectSubScreen8vfunc_10Ev kind:function(arm,size=0x14) addr:0x020cf85c +_ZN19FileSelectSubScreen8vfunc_10EPc kind:function(arm,size=0x14) addr:0x020cf85c _ZN13UnkStructSub2C1Ev kind:function(arm,size=0x18c) addr:0x020cf870 _ZN20FileSelect_UnkClass78vfunc_00Ev kind:function(arm,size=0xd4) addr:0x020cf9fc _ZN20FileSelect_UnkClass78vfunc_04Ev kind:function(arm,size=0x58) addr:0x020cfad0 diff --git a/config/eur/arm9/overlays/ov021/relocs.txt b/config/eur/arm9/overlays/ov021/relocs.txt index 9370f32b..6a4f0151 100644 --- a/config/eur/arm9/overlays/ov021/relocs.txt +++ b/config/eur/arm9/overlays/ov021/relocs.txt @@ -2137,7 +2137,7 @@ from:0x020fc86c kind:load to:0x027e09a4 module:dtcm from:0x020fc870 kind:load to:0x0204a110 module:main from:0x020fc890 kind:arm_call to:0x02070834 module:overlay(0) from:0x020fc898 kind:load to:0x027e09a4 module:dtcm -from:0x020fc89c kind:load to:0x0204af02 module:main +from:0x020fc89c kind:load to:0x0204a110 add:0xdf2 module:main from:0x020fc8c0 kind:arm_call to:0x02070938 module:overlay(0) from:0x020fc8d8 kind:arm_call to:0x020f66c4 module:overlay(21) from:0x020fc8e8 kind:arm_call to:0x020fa9d0 module:overlay(21) @@ -2161,7 +2161,7 @@ from:0x020fcbbc kind:arm_call to:0x0201aad0 module:main from:0x020fcbc4 kind:arm_call to:0x020c99b4 module:overlay(20) from:0x020fcbd0 kind:load to:0x0204a088 module:main from:0x020fcbd4 kind:load to:0x027e09a4 module:dtcm -from:0x020fcbd8 kind:load to:0x0204af02 module:main +from:0x020fcbd8 kind:load to:0x0204a110 add:0xdf2 module:main from:0x020fcbdc kind:load to:0x0204af1c module:main from:0x020fcbe0 kind:load to:0x027e0cf4 module:dtcm from:0x020fcbe4 kind:load to:0x027e0ce0 module:dtcm @@ -2943,7 +2943,7 @@ from:0x021035e8 kind:arm_call to:0x0201aa44 module:main from:0x02103600 kind:arm_call to:0x020c99b4 module:overlay(20) from:0x0210360c kind:load to:0x0204af1c module:main from:0x02103610 kind:load to:0x021098cd module:overlay(21) -from:0x02103614 kind:load to:0x0204af02 module:main +from:0x02103614 kind:load to:0x0204a110 add:0xdf2 module:main from:0x02103660 kind:arm_call to:0x02104e90 module:overlay(21) from:0x021036ac kind:load to:0x021073b8 module:overlay(21) from:0x02103814 kind:arm_call to:0x020c707c module:overlay(20) diff --git a/config/eur/arm9/overlays/ov024/relocs.txt b/config/eur/arm9/overlays/ov024/relocs.txt index 09482c37..31de8228 100644 --- a/config/eur/arm9/overlays/ov024/relocs.txt +++ b/config/eur/arm9/overlays/ov024/relocs.txt @@ -37,7 +37,7 @@ from:0x020c4958 kind:load to:0x027e09a4 module:dtcm from:0x020c495c kind:load to:0x0204a110 module:main from:0x020c4960 kind:load to:0x020708d8 module:overlay(0) from:0x020c4978 kind:load to:0x027e09a4 module:dtcm -from:0x020c497c kind:load to:0x0204af02 module:main +from:0x020c497c kind:load to:0x0204a110 add:0xdf2 module:main from:0x020c4980 kind:load to:0x02070834 module:overlay(0) from:0x020c499c kind:arm_call to:0x02070938 module:overlay(0) from:0x020c49c8 kind:load to:0x0204a110 module:main @@ -49,7 +49,7 @@ from:0x020c49f4 kind:load to:0x02070a4c module:overlay(0) from:0x020c4a24 kind:arm_call to:0x020bb994 module:overlay(17) from:0x020c4a50 kind:load to:0x0204a088 module:main from:0x020c4a54 kind:load to:0x027e09a4 module:dtcm -from:0x020c4a58 kind:load to:0x0204af02 module:main +from:0x020c4a58 kind:load to:0x0204a110 add:0xdf2 module:main from:0x020c4a5c kind:load to:0x020d8660 module:overlay(24) from:0x020c4a78 kind:arm_call to:0x020704f4 module:overlay(0) from:0x020c4a80 kind:arm_call to:0x02011ff4 module:main diff --git a/config/eur/arm9/overlays/ov025/delinks.txt b/config/eur/arm9/overlays/ov025/delinks.txt index ce6770bd..464fd034 100644 --- a/config/eur/arm9/overlays/ov025/delinks.txt +++ b/config/eur/arm9/overlays/ov025/delinks.txt @@ -5,3 +5,19 @@ .data start:0x020c5a60 end:0x020c5b80 kind:data align:32 .bss start:0x020c5b80 end:0x020c5b80 kind:bss align:32 +src/025_Title/GameModeTitleScreen.cpp: + complete + .text start:0x020c4840 end:0x020c4a8c + .rodata start:0x020c5a0c end:0x020c5a10 + .data start:0x020c5a60 end:0x020c5a90 + +src/025_Title/TitleScreenManager.cpp: + complete + .text start:0x020c4a8c end:0x020c4c70 + .data start:0x020c5a90 end:0x020c5ae0 + +src/025_Title/TitleScreen.cpp: + .text start:0x020c4c70 end:0x020c5a0c + .init start:0x020c5a10 end:0x020c5a44 + .ctor start:0x020c5a44 end:0x020c5a4c + .data start:0x020c5ae0 end:0x020c5b80 diff --git a/config/eur/arm9/overlays/ov025/relocs.txt b/config/eur/arm9/overlays/ov025/relocs.txt index cdd8dd17..58983d4c 100644 --- a/config/eur/arm9/overlays/ov025/relocs.txt +++ b/config/eur/arm9/overlays/ov025/relocs.txt @@ -3,19 +3,19 @@ from:0x020c4854 kind:arm_call to:0x0201659c module:main from:0x020c4864 kind:arm_call to:0x02013370 module:main from:0x020c4880 kind:arm_call_thumb to:0x020bd514 module:overlay(1) from:0x020c4888 kind:arm_call_thumb to:0x020b6520 module:overlays(1,2,6,10,12,14) -from:0x020c4894 kind:load to:0x020c5a68 module:overlay(25) +from:0x020c4894 kind:load to:0x020c5a60 add:8 module:overlay(25) from:0x020c4898 kind:load to:0x02049a2c module:main from:0x020c489c kind:load to:0x0204a110 module:main from:0x020c48a0 kind:load to:0x020c4a8c module:overlay(25) from:0x020c48b4 kind:arm_call to:0x020c4a60 module:overlay(25) from:0x020c48b8 kind:arm_call to:0x0200e234 module:main from:0x020c48c0 kind:arm_call to:0x0201834c module:main -from:0x020c48cc kind:load to:0x020c5a68 module:overlay(25) +from:0x020c48cc kind:load to:0x020c5a60 add:8 module:overlay(25) from:0x020c48e0 kind:arm_call to:0x020c4a60 module:overlay(25) from:0x020c48e4 kind:arm_call to:0x0200e234 module:main from:0x020c48ec kind:arm_call to:0x0201834c module:main from:0x020c48f4 kind:arm_call to:0x02011ff4 module:main -from:0x020c4900 kind:load to:0x020c5a68 module:overlay(25) +from:0x020c4900 kind:load to:0x020c5a60 add:8 module:overlay(25) from:0x020c490c kind:arm_call to:0x02018374 module:main from:0x020c4918 kind:arm_call to:0x020a782c module:overlay(0) from:0x020c4964 kind:arm_call_thumb to:0x020707a8 module:overlay(0) @@ -27,7 +27,7 @@ from:0x020c49b0 kind:load to:0x027e09a4 module:dtcm from:0x020c49b4 kind:load to:0x0204a110 module:main from:0x020c49b8 kind:load to:0x020708d8 module:overlay(0) from:0x020c49d0 kind:load to:0x027e09a4 module:dtcm -from:0x020c49d4 kind:load to:0x0204af02 module:main +from:0x020c49d4 kind:load to:0x0204a110 add:0xdf2 module:main from:0x020c49d8 kind:load to:0x02070834 module:overlay(0) from:0x020c49f4 kind:load to:0x027e09a4 module:dtcm from:0x020c49f8 kind:load to:0x0204a110 module:main @@ -38,7 +38,7 @@ from:0x020c4a20 kind:load to:0x02070a4c module:overlay(0) from:0x020c4a4c kind:arm_call to:0x020bb994 module:overlay(17) from:0x020c4a54 kind:load to:0x0204a088 module:main from:0x020c4a58 kind:load to:0x027e09a4 module:dtcm -from:0x020c4a5c kind:load to:0x0204af02 module:main +from:0x020c4a5c kind:load to:0x0204a110 add:0xdf2 module:main from:0x020c4a78 kind:arm_call to:0x020704f4 module:overlay(0) from:0x020c4a80 kind:arm_call to:0x02011ff4 module:main from:0x020c4a88 kind:load to:0x027e09a4 module:dtcm @@ -47,7 +47,7 @@ from:0x020c4ab0 kind:arm_call to:0x020c4ab8 module:overlay(25) from:0x020c4ac0 kind:arm_call to:0x02060ee4 module:overlay(0) from:0x020c4adc kind:arm_call to:0x0202358c module:main from:0x020c4ae4 kind:arm_call to:0x020235f4 module:main -from:0x020c4b08 kind:load to:0x020c5a98 module:overlay(25) +from:0x020c4b08 kind:load to:0x020c5a90 add:8 module:overlay(25) from:0x020c4b20 kind:arm_call_thumb to:0x020bd734 module:overlay(1) from:0x020c4b34 kind:arm_call to:0x0201c00c module:main from:0x020c4b44 kind:arm_call to:0x02011f3c module:main @@ -85,8 +85,8 @@ from:0x020c4d70 kind:arm_call to:0x02059270 module:overlay(0) from:0x020c4d78 kind:arm_call to:0x02059240 module:overlay(0) from:0x020c4d84 kind:arm_call to:0x0201c494 module:main from:0x020c4d98 kind:arm_call to:0x0201effc module:main -from:0x020c4da8 kind:load to:0x020c5b30 module:overlay(25) -from:0x020c4dac kind:load to:0x020c5b24 module:overlay(25) +from:0x020c4da8 kind:load to:0x020c5b28 add:8 module:overlay(25) +from:0x020c4dac kind:load to:0x020c5b1c add:8 module:overlay(25) from:0x020c4db0 kind:load to:0x02049be0 module:main from:0x020c4db4 kind:load to:0x020c5b4c module:overlay(25) from:0x020c4db8 kind:load to:0x020c5b60 module:overlay(25) @@ -95,14 +95,14 @@ from:0x020c4ddc kind:arm_call to:0x0206d83c module:overlay(0) from:0x020c4de4 kind:arm_call to:0x020c5964 module:overlay(25) from:0x020c4dec kind:arm_call to:0x02016694 module:main from:0x020c4df4 kind:arm_call to:0x02061c5c module:overlay(0) -from:0x020c4e00 kind:load to:0x020c5b30 module:overlay(25) +from:0x020c4e00 kind:load to:0x020c5b28 add:8 module:overlay(25) from:0x020c4e04 kind:load to:0x020b5214 module:overlay(0) from:0x020c4e20 kind:arm_call to:0x0206d83c module:overlay(0) from:0x020c4e28 kind:arm_call to:0x020c5964 module:overlay(25) from:0x020c4e30 kind:arm_call to:0x02016694 module:main from:0x020c4e38 kind:arm_call to:0x02061c5c module:overlay(0) from:0x020c4e40 kind:arm_call to:0x02011ff4 module:main -from:0x020c4e4c kind:load to:0x020c5b30 module:overlay(25) +from:0x020c4e4c kind:load to:0x020c5b28 add:8 module:overlay(25) from:0x020c4e50 kind:load to:0x020b5214 module:overlay(0) from:0x020c4e68 kind:load to:0x020c4ea0 module:overlay(25) from:0x020c4e88 kind:arm_call to:0x020c4ea0 module:overlay(25) diff --git a/config/eur/arm9/overlays/ov025/symbols.txt b/config/eur/arm9/overlays/ov025/symbols.txt index 2ad10617..a8e66891 100644 --- a/config/eur/arm9/overlays/ov025/symbols.txt +++ b/config/eur/arm9/overlays/ov025/symbols.txt @@ -1,59 +1,54 @@ -func_ov025_020c4840 kind:function(arm,size=0x64) addr:0x020c4840 -func_ov025_020c48a4 kind:function(arm,size=0x2c) addr:0x020c48a4 -func_ov025_020c48d0 kind:function(arm,size=0x34) addr:0x020c48d0 -func_ov025_020c4904 kind:function(arm,size=0x70) addr:0x020c4904 -func_ov025_020c4974 kind:function(arm,size=0x24) addr:0x020c4974 -func_ov025_020c4998 kind:function(arm,size=0x24) addr:0x020c4998 -func_ov025_020c49bc kind:function(arm,size=0x20) addr:0x020c49bc -func_ov025_020c49dc kind:function(arm,size=0x24) addr:0x020c49dc -func_ov025_020c4a00 kind:function(arm,size=0x24) addr:0x020c4a00 -func_ov025_020c4a24 kind:function(arm,size=0x3c) addr:0x020c4a24 -func_ov025_020c4a60 kind:function(arm,size=0x2c) addr:0x020c4a60 -func_ov025_020c4a8c kind:function(arm,size=0x2c) addr:0x020c4a8c -func_ov025_020c4ab8 kind:function(arm,size=0x58) addr:0x020c4ab8 -func_ov025_020c4b10 kind:function(arm,size=0x78) addr:0x020c4b10 -func_ov025_020c4b88 kind:function(arm,size=0x34) addr:0x020c4b88 -func_ov025_020c4bbc kind:function(arm,size=0x20) addr:0x020c4bbc -func_ov025_020c4bdc kind:function(arm,size=0x20) addr:0x020c4bdc -func_ov025_020c4bfc kind:function(arm,size=0x20) addr:0x020c4bfc -func_ov025_020c4c1c kind:function(arm,size=0x4) addr:0x020c4c1c -func_ov025_020c4c20 kind:function(arm,size=0x10) addr:0x020c4c20 -func_ov025_020c4c30 kind:function(arm,size=0x10) addr:0x020c4c30 -func_ov025_020c4c40 kind:function(arm,size=0x14) addr:0x020c4c40 -func_ov025_020c4c54 kind:function(arm,size=0x1c) addr:0x020c4c54 -func_ov025_020c4c70 kind:function(arm,size=0x154) addr:0x020c4c70 -func_ov025_020c4dc4 kind:function(arm,size=0x44) addr:0x020c4dc4 -func_ov025_020c4e08 kind:function(arm,size=0x4c) addr:0x020c4e08 -func_ov025_020c4e54 kind:function(arm,size=0x18) addr:0x020c4e54 -func_ov025_020c4e6c kind:function(arm,size=0x24) addr:0x020c4e6c -func_ov025_020c4e90 kind:function(arm,size=0x10) addr:0x020c4e90 -func_ov025_020c4ea0 kind:function(arm,size=0x298) addr:0x020c4ea0 -func_ov025_020c5138 kind:function(arm,size=0xc8) addr:0x020c5138 -func_ov025_020c5200 kind:function(arm,size=0x4) addr:0x020c5200 -func_ov025_020c5204 kind:function(arm,size=0x3c) addr:0x020c5204 -func_ov025_020c5240 kind:function(arm,size=0x190) addr:0x020c5240 -func_ov025_020c53d0 kind:function(arm,size=0x1d4) addr:0x020c53d0 -func_ov025_020c55a4 kind:function(arm,size=0x40) addr:0x020c55a4 -func_ov025_020c55e4 kind:function(arm,size=0x68) addr:0x020c55e4 -func_ov025_020c564c kind:function(arm,size=0x50) addr:0x020c564c -func_ov025_020c569c kind:function(arm,size=0x258) addr:0x020c569c -func_ov025_020c58f4 kind:function(arm,size=0x38) addr:0x020c58f4 -func_ov025_020c592c kind:function(arm,size=0x38) addr:0x020c592c -func_ov025_020c5964 kind:function(arm,size=0x24) addr:0x020c5964 -func_ov025_020c5988 kind:function(arm,size=0x84) addr:0x020c5988 +_ZN19GameModeTitleScreenC1Ev kind:function(arm,size=0x64) addr:0x020c4840 +_ZN19GameModeTitleScreenD1Ev kind:function(arm,size=0x2c) addr:0x020c48a4 +_ZN19GameModeTitleScreenD0Ev kind:function(arm,size=0x34) addr:0x020c48d0 +_ZN19GameModeTitleScreen8vfunc_08Eiii kind:function(arm,size=0x70) addr:0x020c4904 +_ZN19GameModeTitleScreen8vfunc_0CEv kind:function(arm,size=0x24) addr:0x020c4974 +_ZN19GameModeTitleScreen8vfunc_10Ev kind:function(arm,size=0x24) addr:0x020c4998 +_ZN19GameModeTitleScreen8vfunc_14Ev kind:function(arm,size=0x20) addr:0x020c49bc +_ZN19GameModeTitleScreen8vfunc_18Ev kind:function(arm,size=0x24) addr:0x020c49dc +_ZN19GameModeTitleScreen8vfunc_1CEv kind:function(arm,size=0x24) addr:0x020c4a00 +_ZN19GameModeTitleScreen8vfunc_20Ev kind:function(arm,size=0x3c) addr:0x020c4a24 +_ZN18UnkStruct_027e09a419func_ov025_020c4a60Ev kind:function(arm,size=0x2c) addr:0x020c4a60 +_ZN18TitleScreenManager6CreateEi kind:function(arm,size=0x2c) addr:0x020c4a8c +_ZN18TitleScreenManagerC1Ei kind:function(arm,size=0x58) addr:0x020c4ab8 +_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_28Ei kind:function(arm,size=0x20) addr:0x020c4bdc +_ZN18TitleScreenManager8vfunc_2CEi kind:function(arm,size=0x20) addr:0x020c4bfc +_ZN18TitleScreenManager8vfunc_38Ev 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 +_ZN18TitleScreenManagerD1Ev kind:function(arm,size=0x14) addr:0x020c4c40 +_ZN18TitleScreenManagerD0Ev kind:function(arm,size=0x1c) addr:0x020c4c54 +_ZN11TitleScreenC1Ev kind:function(arm,size=0x154) addr:0x020c4c70 +_ZN11TitleScreenD1Ev kind:function(arm,size=0x44) addr:0x020c4dc4 +_ZN11TitleScreenD0Ev kind:function(arm,size=0x4c) addr:0x020c4e08 +_ZN11TitleScreen19func_ov025_020c4e54Ev kind:function(arm,size=0x18) addr:0x020c4e54 +_ZN11TitleScreen19func_ov025_020c4e6cEv kind:function(arm,size=0x24) addr:0x020c4e6c +_ZN11TitleScreen19func_ov025_020c4e90Ev kind:function(arm,size=0x10) addr:0x020c4e90 +_ZN11TitleScreen19func_ov025_020c4ea0Ej kind:function(arm,size=0x298) addr:0x020c4ea0 +_ZN11TitleScreen8vfunc_08EP24GameModePTMFParam2StructP12TouchControl kind:function(arm,size=0xc8) addr:0x020c5138 +_ZN11TitleScreen19func_ov025_020c5200EP24GameModePTMFParam2StructP12TouchControl kind:function(arm,size=0x4) addr:0x020c5200 +_ZN11TitleScreen19func_ov025_020c5204EP24GameModePTMFParam2StructP12TouchControl kind:function(arm,size=0x3c) addr:0x020c5204 +_ZN11TitleScreen19func_ov025_020c5240EP24GameModePTMFParam2StructP12TouchControl kind:function(arm,size=0x190) addr:0x020c5240 +_ZN11TitleScreen19func_ov025_020c53d0EP24GameModePTMFParam2StructP12TouchControl kind:function(arm,size=0x1d4) addr:0x020c53d0 +_ZN11TitleScreen19func_ov025_020c55a4EP24GameModePTMFParam2StructP12TouchControl kind:function(arm,size=0x40) addr:0x020c55a4 +_ZN11TitleScreen19func_ov025_020c55e4EP24GameModePTMFParam2StructP12TouchControl kind:function(arm,size=0x68) addr:0x020c55e4 +_ZN11TitleScreen8vfunc_14EPc kind:function(arm,size=0x50) addr:0x020c564c +_ZN11TitleScreen8vfunc_10EPc kind:function(arm,size=0x258) addr:0x020c569c +_ZN11TitleScreen8vfunc_0CEi kind:function(arm,size=0x38) addr:0x020c58f4 +_ZN11TitleScreen19func_ov025_020c592cEv kind:function(arm,size=0x38) addr:0x020c592c +_ZN11TitleScreen19func_ov025_020c5964Ev kind:function(arm,size=0x24) addr:0x020c5964 +_ZN16TitleScreen_Sub28vfunc_00Ev kind:function(arm,size=0x84) addr:0x020c5988 data_ov025_020c5a0c kind:data(any) addr:0x020c5a0c -__sinit_ov025_020c5a10 kind:function(arm,size=0x34) addr:0x020c5a10 -.p__sinit_ov025_020c5a10 kind:data(word) addr:0x020c5a44 -data_ov025_020c5a68 kind:data(any) addr:0x020c5a68 -data_ov025_020c5a98 kind:data(any) addr:0x020c5a98 -data_ov025_020c5aa8 kind:data(any) addr:0x020c5aa8 ambiguous +__sinit_TitleScreen.cpp kind:function(arm,size=0x34) addr:0x020c5a10 +.p__sinit_TitleScreen.cpp kind:data(word) addr:0x020c5a44 +_ZTV19GameModeTitleScreen kind:data(any) addr:0x020c5a60 +_ZTV18TitleScreenManager kind:data(any) addr:0x020c5a90 data_ov025_020c5ae0 kind:data(any) addr:0x020c5ae0 data_ov025_020c5aec kind:data(any) addr:0x020c5aec -data_ov025_020c5b24 kind:data(any) addr:0x020c5b24 -data_ov025_020c5b30 kind:data(any) addr:0x020c5b30 -data_ov025_020c5b4c kind:data(any) addr:0x020c5b4c -data_ov025_020c5b54 kind:data(any) addr:0x020c5b54 ambiguous -data_ov025_020c5b58 kind:data(any) addr:0x020c5b58 ambiguous -data_ov025_020c5b60 kind:data(any) addr:0x020c5b60 -data_ov025_020c5b68 kind:data(any) addr:0x020c5b68 ambiguous -data_ov025_020c5b74 kind:data(any) addr:0x020c5b74 ambiguous +_ZTV16TitleScreen_Sub2 kind:data(any) addr:0x020c5b1c +_ZTV11TitleScreen kind:data(any) addr:0x020c5b28 +@337 kind:data(byte[18]) addr:0x020c5b4c local +@338 kind:data(byte[6]) addr:0x020c5b60 local diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index 8c335b34..fbe8f675 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -738,7 +738,7 @@ func_02014f54 kind:function(arm,size=0x18) addr:0x02014f54 func_02014f6c kind:function(arm,size=0x74) addr:0x02014f6c func_02014fe0 kind:function(arm,size=0x8) addr:0x02014fe0 func_02014fe8 kind:function(arm,size=0xc) addr:0x02014fe8 -func_02014ff4 kind:function(arm,size=0x14) addr:0x02014ff4 +_ZN18UnkStruct_02049be013func_02014ff4Ev kind:function(arm,size=0x14) addr:0x02014ff4 func_02015008 kind:function(arm,size=0x28) addr:0x02015008 func_02015030 kind:function(arm,size=0x24) addr:0x02015030 func_02015054 kind:function(arm,size=0x2c) addr:0x02015054 @@ -825,10 +825,10 @@ func_02016620 kind:function(arm,size=0x3c) addr:0x02016620 func_0201665c kind:function(arm,size=0x20) addr:0x0201665c _ZN26GameModeManagerBase_104_04C1Ev kind:function(arm,size=0xc) addr:0x0201667c func_02016688 kind:function(arm,size=0xc) addr:0x02016688 -func_02016694 kind:function(arm,size=0x18) addr:0x02016694 +_ZN26GameModeManagerBase_104_04D1Ev kind:function(arm,size=0x18) addr:0x02016694 _ZN26GameModeManagerBase_104_0413func_020166acEv kind:function(arm,size=0x20) addr:0x020166ac _ZN26GameModeManagerBase_104_0413func_020166ccEPv kind:function(arm,size=0x28) addr:0x020166cc -func_020166f4 kind:function(arm,size=0x2c) addr:0x020166f4 +_ZN26GameModeManagerBase_104_0413func_020166f4EPv kind:function(arm,size=0x2c) addr:0x020166f4 func_02016720 kind:function(arm,size=0x1c) addr:0x02016720 func_0201673c kind:function(arm,size=0x28) addr:0x0201673c func_02016764 kind:function(arm,size=0x34) addr:0x02016764 @@ -1064,7 +1064,7 @@ func_0201bf24 kind:function(arm,size=0x30) addr:0x0201bf24 func_0201bf54 kind:function(arm,size=0x3c) addr:0x0201bf54 func_0201bf90 kind:function(arm,size=0x5c) addr:0x0201bf90 func_0201bfec kind:function(arm,size=0x20) addr:0x0201bfec -_ZN23GameModeManagerBase_00413func_0201c00cEiii kind:function(arm,size=0x5c) addr:0x0201c00c +_ZN23GameModeManagerBase_00413func_0201c00cEii kind:function(arm,size=0x5c) addr:0x0201c00c func_0201c068 kind:function(arm,size=0x3c) addr:0x0201c068 func_0201c0a4 kind:function(arm,size=0x20) addr:0x0201c0a4 func_0201c0c4 kind:function(arm,size=0x20) addr:0x0201c0c4 @@ -1079,10 +1079,10 @@ 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 func_0201c460 kind:function(thumb,size=0x34) addr:0x0201c460 -func_0201c494 kind:function(arm,size=0x14) addr:0x0201c494 +_ZN18UnkStruct_0204aeac13func_0201c494Ei kind:function(arm,size=0x14) addr:0x0201c494 func_0201c4a8 kind:function(arm,size=0x30) addr:0x0201c4a8 -func_0201c4d8 kind:function(arm,size=0x2c) addr:0x0201c4d8 -func_0201c504 kind:function(arm,size=0x2c) addr:0x0201c504 +_ZN18UnkStruct_0204aeac13func_0201c4d8Eiii kind:function(arm,size=0x2c) addr:0x0201c4d8 +_ZN18UnkStruct_0204aeac13func_0201c504Eiiii kind:function(arm,size=0x2c) addr:0x0201c504 func_0201c530 kind:function(arm,size=0x19c) addr:0x0201c530 func_0201c6cc kind:function(thumb,size=0x6e) addr:0x0201c6cc func_0201c73c kind:function(arm,size=0x44) addr:0x0201c73c @@ -1157,9 +1157,9 @@ func_0201ee54 kind:function(arm,size=0x14) addr:0x0201ee54 func_0201ee68 kind:function(arm,size=0x6c) addr:0x0201ee68 func_0201eed4 kind:function(arm,size=0xa4) addr:0x0201eed4 func_0201ef78 kind:function(arm,size=0x24) addr:0x0201ef78 -func_0201ef9c kind:function(arm,size=0x60) addr:0x0201ef9c -func_0201effc kind:function(arm,size=0x50) addr:0x0201effc -func_0201f04c kind:function(arm,size=0x14) addr:0x0201f04c +_ZN16TitleScreen_Sub3C1Ev kind:function(arm,size=0x60) addr:0x0201ef9c +_ZN16TitleScreen_Sub313func_0201effcEiii kind:function(arm,size=0x50) addr:0x0201effc +_ZN16TitleScreen_Sub313func_0201f04cEv kind:function(arm,size=0x14) addr:0x0201f04c func_0201f060 kind:function(arm,size=0x60) addr:0x0201f060 func_0201f0c0 kind:function(arm,size=0x50) addr:0x0201f0c0 func_0201f110 kind:function(arm,size=0x14) addr:0x0201f110 @@ -2765,7 +2765,6 @@ data_0204aed0 kind:bss addr:0x0204aed0 data_0204aedc kind:bss addr:0x0204aedc data_0204aeec kind:bss addr:0x0204aeec data_0204aef0 kind:bss addr:0x0204aef0 -data_0204af02 kind:bss addr:0x0204af02 data_0204af10 kind:bss addr:0x0204af10 data_0204af18 kind:bss addr:0x0204af18 data_0204af1c kind:bss addr:0x0204af1c diff --git a/config/jp/arm9/overlays/ov000/symbols.txt b/config/jp/arm9/overlays/ov000/symbols.txt index 8583eace..1f12dd70 100644 --- a/config/jp/arm9/overlays/ov000/symbols.txt +++ b/config/jp/arm9/overlays/ov000/symbols.txt @@ -188,9 +188,9 @@ func_ov000_0205a6b8 kind:function(arm,size=0x30) addr:0x0205a6b8 func_ov000_0205a6e8 kind:function(arm,size=0x28) addr:0x0205a6e8 func_ov000_0205a710 kind:function(arm,size=0x3c) addr:0x0205a710 _ZN29UnkStruct_ov000_020b4ec4_BaseC2Ev kind:function(arm,size=0x20) addr:0x0205a74c -func_ov000_0205a76c kind:function(arm,size=0x54) addr:0x0205a76c -func_ov000_0205a7c0 kind:function(arm,size=0x30) addr:0x0205a7c0 -func_ov000_0205a7f0 kind:function(arm,size=0x18) addr:0x0205a7f0 +_ZN26UnkStruct_StackTitleScreenC1EPKci kind:function(arm,size=0x54) addr:0x0205a76c +_ZN26UnkStruct_StackTitleScreen19func_ov000_02059240Ev kind:function(arm,size=0x30) addr:0x0205a7c0 +_ZN26UnkStruct_StackTitleScreen19func_ov000_02059270EiPci kind:function(arm,size=0x18) addr:0x0205a7f0 func_ov000_0205a808 kind:function(arm,size=0x18) addr:0x0205a808 func_ov000_0205a820 kind:function(thumb,size=0x46) addr:0x0205a820 func_ov000_0205a868 kind:function(thumb,size=0x7c) addr:0x0205a868 @@ -423,16 +423,16 @@ func_ov000_02061c78 kind:function(arm,size=0x48) addr:0x02061c78 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 -func_ov000_02061d8c kind:function(arm,size=0x28) addr:0x02061d8c -func_ov000_0206082c kind:function(arm,size=0x124) addr:0x02061db4 -func_ov000_02061ed8 kind:function(arm,size=0x60) addr:0x02061ed8 -func_ov000_02061f38 kind:function(arm,size=0x14) addr:0x02061f38 -func_ov000_020609c4 kind:function(arm,size=0xd4) addr:0x02061f4c -func_ov000_02062020 kind:function(arm,size=0x38) addr:0x02062020 -func_ov000_02062058 kind:function(arm,size=0x28) addr:0x02062058 -func_ov000_02060af8 kind:function(arm,size=0x58) addr:0x02062080 -func_ov000_020620d8 kind:function(arm,size=0x14) addr:0x020620d8 -func_ov000_020620ec kind:function(arm,size=0x20) addr:0x020620ec +_ZN14UnkSubStruct19C1Ev kind:function(arm,size=0x28) addr:0x02061d8c +_ZN14UnkSubStruct1919func_ov000_0206082cEii 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 +_ZN14UnkSubStruct1919func_ov000_02060a98Ev kind:function(arm,size=0x38) addr:0x02062020 +_ZN14UnkSubStruct1919func_ov000_02060ad0Ev kind:function(arm,size=0x28) addr:0x02062058 +_ZN14UnkSubStruct1919func_ov000_02060af8Ev kind:function(arm,size=0x58) addr:0x02062080 +_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 func_ov000_02062160 kind:function(arm,size=0x50) addr:0x02062160 @@ -444,15 +444,15 @@ 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 func_ov000_0206244c kind:function(arm,size=0x20) addr:0x0206244c -func_ov000_0206246c kind:function(arm,size=0x30) addr:0x0206246c +_ZN23TitleScreenManager_BaseC2Ev kind:function(arm,size=0x30) addr:0x0206246c func_ov000_0206249c kind:function(arm,size=0x38) addr:0x0206249c func_ov000_020624d4 kind:function(arm,size=0x40) addr:0x020624d4 -func_ov000_02062514 kind:function(arm,size=0x38) addr:0x02062514 -func_ov000_0206254c kind:function(arm,size=0x4) addr:0x0206254c +_ZN23TitleScreenManager_BaseD2Ev kind:function(arm,size=0x38) addr:0x02062514 +_ZN23TitleScreenManager_Base8vfunc_10Eiii kind:function(arm,size=0x4) addr:0x0206254c func_ov000_02062550 kind:function(arm,size=0x68) addr:0x02062550 -func_ov000_020625b8 kind:function(arm,size=0x8) addr:0x020625b8 -func_ov000_020625c0 kind:function(arm,size=0x4) addr:0x020625c0 -func_ov000_020625c4 kind:function(arm,size=0x4) addr:0x020625c4 +_ZN23TitleScreenManager_Base8vfunc_3CEv kind:function(arm,size=0x8) addr:0x020625b8 +_ZN23TitleScreenManager_Base8vfunc_40Ev kind:function(arm,size=0x4) addr:0x020625c0 +_ZN23TitleScreenManager_Base8vfunc_44Ev kind:function(arm,size=0x4) addr:0x020625c4 func_ov000_020625c8 kind:function(arm,size=0x44) addr:0x020625c8 func_ov000_0206260c kind:function(arm,size=0x14) addr:0x0206260c _ZN18UnkStruct_0204a08819func_ov000_02061098Ev kind:function(arm,size=0x144) addr:0x02062620 @@ -904,7 +904,7 @@ func_ov000_0206ea80 kind:function(arm,size=0xa0) addr:0x0206ea80 func_ov000_0206eb20 kind:function(arm,size=0x150) addr:0x0206eb20 _ZN24UnkStruct_ov000_020b521419func_ov000_0206d6b4Eii kind:function(arm,size=0x15c) addr:0x0206ec70 func_ov000_0206edcc kind:function(arm,size=0x2c) addr:0x0206edcc -func_ov000_0206edf8 kind:function(arm,size=0x40) addr:0x0206edf8 +_ZN24UnkStruct_ov000_020b521419func_ov000_0206d83cEi kind:function(arm,size=0x40) addr:0x0206edf8 func_ov000_0206ee38 kind:function(arm,size=0x4c) addr:0x0206ee38 func_ov000_0206ee84 kind:function(arm,size=0x4c) addr:0x0206ee84 func_ov000_0206eed0 kind:function(arm,size=0x4c) addr:0x0206eed0 @@ -997,7 +997,7 @@ func_ov000_02071a74 kind:function(arm,size=0x8) addr:0x02071a74 func_ov000_02071a7c kind:function(arm,size=0x5c) addr:0x02071a7c func_ov000_02071ad8 kind:function(arm,size=0xa8) addr:0x02071ad8 func_ov000_02071b80 kind:function(arm,size=0x2c) addr:0x02071b80 -func_ov000_02071bac kind:function(arm,size=0x44) addr:0x02071bac +_ZN18UnkStruct_027e09a4D1Ev kind:function(arm,size=0x44) addr:0x02071bac func_ov000_02071bf0 kind:function(arm,size=0xc) addr:0x02071bf0 func_ov000_02071bfc kind:function(arm,size=0x10) addr:0x02071bfc func_ov000_02071c0c kind:function(arm,size=0xc) addr:0x02071c0c @@ -1007,12 +1007,12 @@ func_ov000_02071c38 kind:function(arm,size=0x1c) addr:0x02071c38 func_ov000_02071c54 kind:function(arm,size=0x4c) addr:0x02071c54 func_ov000_02071ca0 kind:function(thumb,size=0x134) addr:0x02071ca0 func_ov000_02071dd4 kind:function(thumb,size=0x8c) addr:0x02071dd4 -func_ov000_02071e60 kind:function(thumb,size=0x8c) addr:0x02071e60 -func_ov000_02071eec kind:function(arm,size=0x48) addr:0x02071eec -func_ov000_02071f34 kind:function(arm,size=0x5c) addr:0x02071f34 -func_ov000_02071f90 kind:function(arm,size=0x60) addr:0x02071f90 -func_ov000_02071ff0 kind:function(arm,size=0x114) addr:0x02071ff0 -func_ov000_02072104 kind:function(arm,size=0x50) addr:0x02072104 +_ZN18UnkStruct_027e09a419func_ov000_020707a8EPv kind:function(thumb,size=0x8c) addr:0x02071e60 +_ZN18UnkStruct_027e09a419func_ov000_02070834EPv kind:function(arm,size=0x48) addr:0x02071eec +_ZN18UnkStruct_027e09a419func_ov000_0207087cEi kind:function(arm,size=0x5c) addr:0x02071f34 +_ZN18UnkStruct_027e09a419func_ov000_020708d8Ei kind:function(arm,size=0x60) addr:0x02071f90 +_ZN18UnkStruct_027e09a419func_ov000_02070938Ei kind:function(arm,size=0x114) addr:0x02071ff0 +_ZN18UnkStruct_027e09a419func_ov000_02070a4cEi kind:function(arm,size=0x50) addr:0x02072104 func_ov000_02072154 kind:function(arm,size=0x44) addr:0x02072154 func_ov000_02072198 kind:function(arm,size=0x18) addr:0x02072198 func_ov000_020721b0 kind:function(arm,size=0x1c) addr:0x020721b0 @@ -2958,7 +2958,7 @@ func_ov000_020a8f48 kind:function(arm,size=0x14) addr:0x020a8f48 func_ov000_020a8f5c kind:function(arm,size=0x28) addr:0x020a8f5c func_ov000_020a8f84 kind:function(arm,size=0x4c) addr:0x020a8f84 func_ov000_020a8fd0 kind:function(arm,size=0x5c) addr:0x020a8fd0 -func_ov000_020a902c kind:function(arm,size=0x14) addr:0x020a902c +func_ov000_020a782c kind:function(arm,size=0x14) addr:0x020a902c func_ov000_020a9040 kind:function(arm,size=0x84) addr:0x020a9040 func_ov000_020a90c4 kind:function(arm,size=0x44) addr:0x020a90c4 func_ov000_020a9108 kind:function(arm,size=0xdc) addr:0x020a9108 diff --git a/config/jp/arm9/overlays/ov001/relocs.txt b/config/jp/arm9/overlays/ov001/relocs.txt index 6fc58416..8ce90f3b 100644 --- a/config/jp/arm9/overlays/ov001/relocs.txt +++ b/config/jp/arm9/overlays/ov001/relocs.txt @@ -1646,7 +1646,7 @@ from:0x020bf8b6 kind:thumb_call to:0x020a2800 module:overlay(0) from:0x020bf8ca kind:thumb_call_arm to:0x0202a1c0 module:main from:0x020bf8e6 kind:thumb_call_arm to:0x020a28cc module:overlay(0) from:0x020bf8f0 kind:thumb_call_arm to:0x02011f3c module:main -from:0x020bf8f8 kind:thumb_call_arm to:0x020c6060 module:overlays(20,25) +from:0x020bf8f8 kind:thumb_call_arm to:0x020c6060 module:overlay(25) from:0x020bf900 kind:load to:0x0204b120 module:main from:0x020bf904 kind:load to:0x0204afac module:main from:0x020bf90e kind:thumb_call to:0x020148d4 module:main @@ -2327,72 +2327,51 @@ from:0x020c2498 kind:load to:0x020c417c module:overlays(2,4) from:0x020c254c kind:load to:0x020c4818 module:overlay(1) from:0x020c2550 kind:load to:0x020c41f4 module:overlay(1) from:0x020c26f0 kind:load to:0x020c5f41 module:overlay(1) -from:0x020c26f4 kind:load to:0x020c73ec module:overlay(25) from:0x020c26fc kind:load to:0x020c3678 module:overlay(1) from:0x020c2768 kind:load to:0x020c5f41 module:overlay(1) -from:0x020c276c kind:load to:0x020c73ec module:overlay(25) from:0x020c2774 kind:load to:0x020c3730 module:overlay(1) from:0x020c27e0 kind:load to:0x020c5f41 module:overlay(1) -from:0x020c27e4 kind:load to:0x020c73ec module:overlay(25) from:0x020c27ec kind:load to:0x020c37e8 module:overlay(1) from:0x020c2858 kind:load to:0x020c5f41 module:overlay(1) -from:0x020c285c kind:load to:0x020c73ec module:overlay(25) from:0x020c2864 kind:load to:0x020c38a0 module:overlay(1) from:0x020c28d0 kind:load to:0x020c5f41 module:overlay(1) -from:0x020c28d4 kind:load to:0x020c73d4 module:overlay(25) from:0x020c28dc kind:load to:0x020c3958 module:overlay(1) from:0x020c2948 kind:load to:0x020c5f41 module:overlay(1) -from:0x020c294c kind:load to:0x020c73d4 module:overlay(25) from:0x020c2954 kind:load to:0x020c39f0 module:overlay(1) from:0x020c2968 kind:load to:0x020c3a88 module:overlay(1) -from:0x020c296c kind:load to:0x020c73a8 module:overlay(25) from:0x020c2970 kind:load to:0x020c3b00 module:overlay(1) -from:0x020c2974 kind:load to:0x020c73a8 module:overlay(25) from:0x020c2978 kind:load to:0x020c3b78 module:overlay(1) -from:0x020c297c kind:load to:0x020c73a8 module:overlay(25) from:0x020c2980 kind:load to:0x020c3bf0 module:overlay(1) -from:0x020c2984 kind:load to:0x020c73a8 module:overlay(25) from:0x020c2988 kind:load to:0x020c3c68 module:overlay(1) -from:0x020c298c kind:load to:0x020c73a8 module:overlay(25) from:0x020c2990 kind:load to:0x020c3ce0 module:overlay(1) -from:0x020c2994 kind:load to:0x020c73a8 module:overlay(25) from:0x020c29a0 kind:load to:0x020c5448 module:overlay(1) from:0x020c2a78 kind:load to:0x020c47a0 module:overlay(1) from:0x020c2b8c kind:load to:0x020c4818 module:overlay(1) from:0x020c2c64 kind:load to:0x020c4ce4 module:overlay(1) from:0x020c2d78 kind:load to:0x020c4d5c module:overlay(1) from:0x020c2de4 kind:load to:0x020c5f41 module:overlay(1) -from:0x020c2de8 kind:load to:0x020c7414 module:overlay(25) from:0x020c2df0 kind:load to:0x020c3da4 module:overlay(1) from:0x020c2e5c kind:load to:0x020c5f41 module:overlay(1) from:0x020c2e68 kind:load to:0x020c3e7c module:overlay(1) from:0x020c2ed4 kind:load to:0x020c5f41 module:overlay(1) -from:0x020c2ed8 kind:load to:0x020c7414 module:overlay(25) from:0x020c2ee0 kind:load to:0x020c3f90 module:overlay(1) from:0x020c2f4c kind:load to:0x020c5f41 module:overlay(1) from:0x020c2f6c kind:load to:0x020c417c module:overlays(2,4) -from:0x020c2f70 kind:load to:0x020c73a8 module:overlay(25) from:0x020c2f74 kind:load to:0x020c41f4 module:overlay(1) -from:0x020c2f78 kind:load to:0x020c73a8 module:overlay(25) from:0x020c2f7c kind:load to:0x020c426c module:overlay(1) -from:0x020c2f80 kind:load to:0x020c73a8 module:overlay(25) from:0x020c2f84 kind:load to:0x020c42e4 module:overlay(1) -from:0x020c2f88 kind:load to:0x020c73a8 module:overlay(25) from:0x020c30f8 kind:load to:0x020c5f40 module:overlay(1) from:0x020c3184 kind:load to:0x020c5f40 module:overlay(1) from:0x020c3214 kind:load to:0x020c5f40 module:overlay(1) from:0x020c3228 kind:load to:0x020c4588 module:overlay(1) from:0x020c322c kind:load to:0x020c73cc module:overlay(25) from:0x020c3230 kind:load to:0x020c4500 module:overlay(1) -from:0x020c3234 kind:load to:0x020c73c4 module:overlay(25) from:0x020c32ec kind:load to:0x020c4060 module:overlay(1) from:0x020c339c kind:load to:0x020c4060 module:overlay(1) from:0x020c3408 kind:load to:0x020c5f41 module:overlay(1) -from:0x020c340c kind:load to:0x020c73ec module:overlay(25) from:0x020c3410 kind:load to:0x020d3b2a module:overlay(19) from:0x020c3414 kind:load to:0x020c4640 module:overlay(1) from:0x020c3480 kind:load to:0x020c5f41 module:overlay(1) -from:0x020c3484 kind:load to:0x020c73ec module:overlay(25) from:0x020c3488 kind:load to:0x020d3b2a module:overlay(19) from:0x020c348c kind:load to:0x020c46f0 module:overlay(1) from:0x020c36d4 kind:load to:0x020c5f41 module:overlay(1) @@ -2403,31 +2382,21 @@ from:0x020c3750 kind:load to:0x020c7394 module:overlay(25) from:0x020c3754 kind:load to:0x020d3b2a module:overlay(19) from:0x020c3758 kind:load to:0x020c4a14 module:overlay(1) from:0x020c394c kind:load to:0x020c5f41 module:overlay(1) -from:0x020c3950 kind:load to:0x020c7404 module:overlay(25) from:0x020c3954 kind:load to:0x020d3b2a module:overlay(19) from:0x020c3958 kind:load to:0x020c4b5c module:overlay(1) from:0x020c39c4 kind:load to:0x020c5f41 module:overlay(1) -from:0x020c39c8 kind:load to:0x020c7404 module:overlay(25) from:0x020c39cc kind:load to:0x020d3b2a module:overlay(19) from:0x020c39d0 kind:load to:0x020c4c20 module:overlay(1) from:0x020c39e4 kind:load to:0x020c4ce4 module:overlay(1) -from:0x020c39e8 kind:load to:0x020c73a8 module:overlay(25) from:0x020c39ec kind:load to:0x020c4d5c module:overlay(1) -from:0x020c39f0 kind:load to:0x020c73a8 module:overlay(25) from:0x020c39f4 kind:load to:0x020c47a0 module:overlay(1) -from:0x020c39f8 kind:load to:0x020c73a8 module:overlay(25) from:0x020c39fc kind:load to:0x020c4818 module:overlay(1) -from:0x020c3a00 kind:load to:0x020c73a8 module:overlay(25) from:0x020c3a04 kind:load to:0x020c4a6c module:overlay(1) -from:0x020c3a08 kind:load to:0x020c73a8 module:overlay(25) from:0x020c3a0c kind:load to:0x020c4ae4 module:overlay(1) -from:0x020c3a10 kind:load to:0x020c73a8 module:overlay(25) from:0x020c3dd4 kind:load to:0x020c4e1c module:overlay(1) -from:0x020c3dd8 kind:load to:0x020c73b4 module:overlay(25) from:0x020c3ddc kind:load to:0x020c4e90 module:overlay(1) from:0x020c3de0 kind:load to:0x020c738c module:overlay(25) from:0x020c3de4 kind:load to:0x020c4edc module:overlay(1) -from:0x020c3de8 kind:load to:0x020c7364 module:overlay(25) from:0x020c3dec kind:load to:0x020c4f00 module:overlay(1) from:0x020c3df4 kind:load to:0x020c5008 module:overlay(1) from:0x020c3dfc kind:load to:0x020c5114 module:overlay(1) diff --git a/config/jp/arm9/overlays/ov001/symbols.txt b/config/jp/arm9/overlays/ov001/symbols.txt index f0fa5ffb..1557ef6e 100644 --- a/config/jp/arm9/overlays/ov001/symbols.txt +++ b/config/jp/arm9/overlays/ov001/symbols.txt @@ -1,4 +1,4 @@ -func_ov001_020b7d40 kind:function(thumb,size=0x1a) addr:0x020b7d40 +func_ov001_020b6520 kind:function(thumb,size=0x1a) addr:0x020b7d40 func_ov001_020b7d5c kind:function(thumb,size=0xee) addr:0x020b7d5c func_ov001_020b7e4c kind:function(thumb,size=0xae) addr:0x020b7e4c func_ov001_020b7efc kind:function(thumb,size=0x7c) addr:0x020b7efc diff --git a/config/jp/arm9/overlays/ov017/symbols.txt b/config/jp/arm9/overlays/ov017/symbols.txt index 596a3e16..32fffee4 100644 --- a/config/jp/arm9/overlays/ov017/symbols.txt +++ b/config/jp/arm9/overlays/ov017/symbols.txt @@ -1,7 +1,7 @@ func_ov017_020bce80 kind:function(arm,size=0x198) addr:0x020bce80 func_ov017_020bd018 kind:function(arm,size=0x13c) addr:0x020bd018 func_ov017_020bd154 kind:function(arm,size=0x60) addr:0x020bd154 -func_ov017_020bd1b4 kind:function(arm,size=0x8c) addr:0x020bd1b4 +_ZN18UnkStruct_027e09a419func_ov017_020bb994EPv kind:function(arm,size=0x8c) addr:0x020bd1b4 func_ov017_020bd240 kind:function(arm,size=0x28) addr:0x020bd240 func_ov017_020bd268 kind:function(arm,size=0x30) addr:0x020bd268 func_ov017_020bd298 kind:function(arm,size=0x1c) addr:0x020bd298 diff --git a/config/jp/arm9/overlays/ov018/symbols.txt b/config/jp/arm9/overlays/ov018/symbols.txt index 59ed30e5..6240ac0d 100644 --- a/config/jp/arm9/overlays/ov018/symbols.txt +++ b/config/jp/arm9/overlays/ov018/symbols.txt @@ -53,10 +53,10 @@ _ZN24UnkStruct_ov018_020c5ac011SetInstanceEv kind:function(arm,size=0x10) addr:0 _ZTV15GameModeStartUp kind:data(any) addr:0x020c7360 @893 kind:data(any) addr:0x020c7390 local @894 kind:data(any) addr:0x020c73a4 local -@895 kind:data(any) addr:0x020c73a8 local -@896 kind:data(any) addr:0x020c73b8 local +@895 kind:data(byte[14]) addr:0x020c73a8 local +@896 kind:data(byte[10]) addr:0x020c73b8 local @1289 kind:data(any) addr:0x020c73c4 local -@1544 kind:data(any) addr:0x020c73cc local +@1544 kind:data(byte[32]) addr:0x020c73cc local data_ov018_020c5bc0 kind:bss(size=0x1) addr:0x020c7400 local _ZGVZN18UnkStruct_02049a2c19func_ov018_020c4ba8EvE19data_ov018_020c5bd4 kind:bss addr:0x020c7404 local @729 kind:bss addr:0x020c7408 local diff --git a/config/jp/arm9/overlays/ov019/symbols.txt b/config/jp/arm9/overlays/ov019/symbols.txt index 24886c73..a7de7494 100644 --- a/config/jp/arm9/overlays/ov019/symbols.txt +++ b/config/jp/arm9/overlays/ov019/symbols.txt @@ -104,7 +104,7 @@ _ZN14FileSelectMain19func_ov019_020cb1dcEv kind:function(arm,size=0x5c) addr:0x0 _ZN14FileSelectMain19func_ov019_020cb238Ev kind:function(arm,size=0x30) addr:0x020cca58 _ZN14FileSelectMain19func_ov019_020cb268Ev kind:function(arm,size=0x4) addr:0x020cca88 _ZN14FileSelectMain19func_ov019_020cb26cEv kind:function(arm,size=0x4) addr:0x020cca8c -_ZN14FileSelectMain8vfunc_10Ev kind:function(arm,size=0x38) addr:0x020cca90 +_ZN14FileSelectMain8vfunc_10EPc kind:function(arm,size=0x38) addr:0x020cca90 _ZN14FileSelectMain19func_ov019_020cb2a8Ev kind:function(arm,size=0x34) addr:0x020ccac8 _ZN14FileSelectMain19func_ov019_020cb2dcEv kind:function(arm,size=0x48) addr:0x020ccafc _ZN14FileSelectMain19func_ov019_020cb324Ev kind:function(arm,size=0x198) addr:0x020ccb44 @@ -154,7 +154,7 @@ _ZN17FileSelectOptionsD1Ev kind:function(arm,size=0x110) addr:0x020ce338 _ZN17FileSelectOptionsD0Ev kind:function(arm,size=0x118) addr:0x020ce448 _ZN17FileSelectOptions19func_ov019_020ccd40Ev kind:function(arm,size=0x38) addr:0x020ce560 _ZN17FileSelectOptions8vfunc_08Ev kind:function(arm,size=0x38) addr:0x020ce598 -_ZN17FileSelectOptions8vfunc_10Ev kind:function(arm,size=0x44) addr:0x020ce5d0 +_ZN17FileSelectOptions8vfunc_10EPc kind:function(arm,size=0x44) addr:0x020ce5d0 _ZN17FileSelectOptions19func_ov019_020ccdf4Ev kind:function(arm,size=0x10) addr:0x020ce614 _ZN17FileSelectOptions19func_ov019_020cce04Ev kind:function(arm,size=0x2c) addr:0x020ce624 _ZN17FileSelectOptions19func_ov019_020cce30Ev kind:function(arm,size=0x33c) addr:0x020ce650 @@ -196,8 +196,8 @@ _ZN17FileSelectMicTest19func_ov019_020cea74Ev kind:function(arm,size=0x38) addr: _ZN17FileSelectMicTest19func_ov019_020ceaacEv kind:function(arm,size=0x120) addr:0x020d02cc _ZN17FileSelectMicTest19func_ov019_020cebccEv kind:function(arm,size=0x98) addr:0x020d03ec _ZN17FileSelectMicTest8vfunc_08Ev kind:function(arm,size=0x2a0) addr:0x020d0484 -_ZN17FileSelectMicTest8vfunc_10Ev kind:function(arm,size=0x68) addr:0x020d0724 -_ZN17FileSelectMicTest8vfunc_14Ev kind:function(arm,size=0x78) addr:0x020d078c +_ZN17FileSelectMicTest8vfunc_10EPc kind:function(arm,size=0x68) addr:0x020d0724 +_ZN17FileSelectMicTest8vfunc_14EPc kind:function(arm,size=0x78) addr:0x020d078c _ZN17FileSelectMicTest19func_ov019_020cefe4Ev kind:function(arm,size=0x14) addr:0x020d0804 _ZN17FileSelectMicTest19func_ov019_020ceff8Ev kind:function(arm,size=0x14) addr:0x020d0818 _ZN31UnkStruct_ov019_020d24c8_28_270C1Ev kind:function(arm,size=0x124) addr:0x020d082c @@ -207,7 +207,7 @@ _ZN31UnkStruct_ov019_020d24c8_28_27019func_ov019_020cf21cEv kind:function(arm,si _ZN19FileSelectSubScreenC1Ev kind:function(arm,size=0x35c) addr:0x020d0aac _ZN19FileSelectSubScreen8vfunc_08Ev kind:function(arm,size=0x154) addr:0x020d0e08 _ZN19FileSelectSubScreen19func_ov019_020cf73cEii kind:function(arm,size=0x120) addr:0x020d0f5c -_ZN19FileSelectSubScreen8vfunc_10Ev kind:function(arm,size=0x14) addr:0x020d107c +_ZN19FileSelectSubScreen8vfunc_10EPc kind:function(arm,size=0x14) addr:0x020d107c _ZN13UnkStructSub2C1Ev kind:function(arm,size=0x18c) addr:0x020d1090 _ZN20FileSelect_UnkClass78vfunc_00Ev kind:function(arm,size=0xd4) addr:0x020d121c _ZN20FileSelect_UnkClass78vfunc_04Ev kind:function(arm,size=0x58) addr:0x020d12f0 diff --git a/config/jp/arm9/overlays/ov021/relocs.txt b/config/jp/arm9/overlays/ov021/relocs.txt index ce43eaa5..9dddea46 100644 --- a/config/jp/arm9/overlays/ov021/relocs.txt +++ b/config/jp/arm9/overlays/ov021/relocs.txt @@ -2140,7 +2140,7 @@ from:0x020fe274 kind:load to:0x027e09a4 module:dtcm from:0x020fe278 kind:load to:0x0204b690 module:main from:0x020fe298 kind:arm_call to:0x02071eec module:overlay(0) from:0x020fe2a0 kind:load to:0x027e09a4 module:dtcm -from:0x020fe2a4 kind:load to:0x0204c482 module:main +from:0x020fe2a4 kind:load to:0x0204b690 add:0xDF2 module:main from:0x020fe2c8 kind:arm_call to:0x02071ff0 module:overlay(0) from:0x020fe2e0 kind:arm_call to:0x020f7f44 module:overlay(21) from:0x020fe2f0 kind:arm_call to:0x020fc3d8 module:overlay(21) @@ -2164,7 +2164,7 @@ from:0x020fe5c4 kind:arm_call to:0x0201aa68 module:main from:0x020fe5cc kind:arm_call to:0x020cb1d4 module:overlay(20) from:0x020fe5d8 kind:load to:0x0204b608 module:main from:0x020fe5dc kind:load to:0x027e09a4 module:dtcm -from:0x020fe5e0 kind:load to:0x0204c482 module:main +from:0x020fe5e0 kind:load to:0x0204b690 add:0xDF2 module:main from:0x020fe5e4 kind:load to:0x0204c49c module:main from:0x020fe5e8 kind:load to:0x027e0cf4 module:dtcm from:0x020fe5ec kind:load to:0x027e0ce0 module:dtcm @@ -2954,7 +2954,7 @@ from:0x021051cc kind:arm_call to:0x0201a9dc module:main from:0x021051e4 kind:arm_call to:0x020cb1d4 module:overlay(20) from:0x021051f0 kind:load to:0x0204c49c module:main from:0x021051f4 kind:load to:0x0210b4ad module:overlay(21) -from:0x021051f8 kind:load to:0x0204c482 module:main +from:0x021051f8 kind:load to:0x0204b690 add:0xDF2 module:main from:0x02105244 kind:arm_call to:0x02106a74 module:overlay(21) from:0x02105290 kind:load to:0x02108f9c module:overlay(21) from:0x021053f8 kind:arm_call to:0x020c889c module:overlay(20) diff --git a/config/jp/arm9/overlays/ov024/relocs.txt b/config/jp/arm9/overlays/ov024/relocs.txt index 8e64edb8..c1d2ba55 100644 --- a/config/jp/arm9/overlays/ov024/relocs.txt +++ b/config/jp/arm9/overlays/ov024/relocs.txt @@ -37,7 +37,7 @@ from:0x020c6198 kind:load to:0x027e09a4 module:dtcm from:0x020c619c kind:load to:0x0204b690 module:main from:0x020c61a0 kind:load to:0x02071f90 module:overlay(0) from:0x020c61b8 kind:load to:0x027e09a4 module:dtcm -from:0x020c61bc kind:load to:0x0204c482 module:main +from:0x020c61bc kind:load to:0x0204b690 add:0xDF2 module:main from:0x020c61c0 kind:load to:0x02071eec module:overlay(0) from:0x020c61dc kind:arm_call to:0x02071ff0 module:overlay(0) from:0x020c6208 kind:load to:0x0204b690 module:main @@ -49,7 +49,7 @@ from:0x020c6234 kind:load to:0x02072104 module:overlay(0) from:0x020c6264 kind:arm_call to:0x020bd1b4 module:overlay(17) from:0x020c6290 kind:load to:0x0204b608 module:main from:0x020c6294 kind:load to:0x027e09a4 module:dtcm -from:0x020c6298 kind:load to:0x0204c482 module:main +from:0x020c6298 kind:load to:0x0204b690 add:0xDF2 module:main from:0x020c629c kind:load to:0x020da000 module:overlay(24) from:0x020c62b8 kind:arm_call to:0x02071bac module:overlay(0) from:0x020c62c0 kind:arm_call to:0x02011ff4 module:main diff --git a/config/jp/arm9/overlays/ov025/delinks.txt b/config/jp/arm9/overlays/ov025/delinks.txt index bd3cf595..c76a2629 100644 --- a/config/jp/arm9/overlays/ov025/delinks.txt +++ b/config/jp/arm9/overlays/ov025/delinks.txt @@ -5,3 +5,19 @@ .data start:0x020c7300 end:0x020c7420 kind:data align:32 .bss start:0x020c7420 end:0x020c7420 kind:bss align:32 +src/025_Title/GameModeTitleScreen.cpp: + complete + .text start:0x020c6060 end:0x020c62ac + .rodata start:0x020c7294 end:0x020c7298 + .data start:0x020c7300 end:0x020c7330 + +src/025_Title/TitleScreenManager.cpp: + complete + .text start:0x020c62ac end:0x020c6490 + .data start:0x020c7330 end:0x020c7380 + +src/025_Title/TitleScreen.cpp: + .text start:0x020c6490 end:0x020c7294 + .init start:0x020c7298 end:0x020c72f0 + .ctor start:0x020c72f0 end:0x020c72f8 + .data start:0x020c7380 end:0x020c7420 diff --git a/config/jp/arm9/overlays/ov025/relocs.txt b/config/jp/arm9/overlays/ov025/relocs.txt index 66e07f9a..76024180 100644 --- a/config/jp/arm9/overlays/ov025/relocs.txt +++ b/config/jp/arm9/overlays/ov025/relocs.txt @@ -3,19 +3,19 @@ from:0x020c6074 kind:arm_call to:0x02016534 module:main from:0x020c6084 kind:arm_call to:0x02013370 module:main from:0x020c60a0 kind:arm_call_thumb to:0x020bed5c module:overlay(1) from:0x020c60a8 kind:arm_call_thumb to:0x020b7d40 module:overlays(1,2,6,10,12,14) -from:0x020c60b4 kind:load to:0x020c7308 module:overlay(25) +from:0x020c60b4 kind:load to:0x020c7300 add:8 module:overlay(25) from:0x020c60b8 kind:load to:0x0204afac module:main from:0x020c60bc kind:load to:0x0204b690 module:main from:0x020c60c0 kind:load to:0x020c62ac module:overlay(25) from:0x020c60d4 kind:arm_call to:0x020c6280 module:overlay(25) from:0x020c60d8 kind:arm_call to:0x0200e234 module:main from:0x020c60e0 kind:arm_call to:0x020182e4 module:main -from:0x020c60ec kind:load to:0x020c7308 module:overlay(25) +from:0x020c60ec kind:load to:0x020c7300 add:8 module:overlay(25) from:0x020c6100 kind:arm_call to:0x020c6280 module:overlay(25) from:0x020c6104 kind:arm_call to:0x0200e234 module:main from:0x020c610c kind:arm_call to:0x020182e4 module:main from:0x020c6114 kind:arm_call to:0x02011ff4 module:main -from:0x020c6120 kind:load to:0x020c7308 module:overlay(25) +from:0x020c6120 kind:load to:0x020c7300 add:8 module:overlay(25) from:0x020c612c kind:arm_call to:0x0201830c module:main from:0x020c6138 kind:arm_call to:0x020a902c module:overlay(0) from:0x020c6184 kind:arm_call_thumb to:0x02071e60 module:overlay(0) @@ -27,7 +27,7 @@ from:0x020c61d0 kind:load to:0x027e09a4 module:dtcm from:0x020c61d4 kind:load to:0x0204b690 module:main from:0x020c61d8 kind:load to:0x02071f90 module:overlay(0) from:0x020c61f0 kind:load to:0x027e09a4 module:dtcm -from:0x020c61f4 kind:load to:0x0204c482 module:main +from:0x020c61f4 kind:load to:0x0204b690 add:0xDF2 module:main from:0x020c61f8 kind:load to:0x02071eec module:overlay(0) from:0x020c6214 kind:load to:0x027e09a4 module:dtcm from:0x020c6218 kind:load to:0x0204b690 module:main @@ -38,7 +38,7 @@ from:0x020c6240 kind:load to:0x02072104 module:overlay(0) from:0x020c626c kind:arm_call to:0x020bd1b4 module:overlay(17) from:0x020c6274 kind:load to:0x0204b608 module:main from:0x020c6278 kind:load to:0x027e09a4 module:dtcm -from:0x020c627c kind:load to:0x0204c482 module:main +from:0x020c627c kind:load to:0x0204b690 add:0xDF2 module:main from:0x020c6298 kind:arm_call to:0x02071bac module:overlay(0) from:0x020c62a0 kind:arm_call to:0x02011ff4 module:main from:0x020c62a8 kind:load to:0x027e09a4 module:dtcm @@ -47,7 +47,7 @@ from:0x020c62d0 kind:arm_call to:0x020c62d8 module:overlay(25) from:0x020c62e0 kind:arm_call to:0x0206246c module:overlay(0) from:0x020c62fc kind:arm_call to:0x02024abc module:main from:0x020c6304 kind:arm_call to:0x02024b24 module:main -from:0x020c6328 kind:load to:0x020c7338 module:overlay(25) +from:0x020c6328 kind:load to:0x020c7330 add:8 module:overlay(25) from:0x020c6340 kind:arm_call_thumb to:0x020bef7c module:overlay(1) from:0x020c6354 kind:arm_call to:0x0201bdfc module:main from:0x020c6364 kind:arm_call to:0x02011f3c module:main @@ -85,8 +85,8 @@ from:0x020c6590 kind:arm_call to:0x0205a7f0 module:overlay(0) from:0x020c6598 kind:arm_call to:0x0205a7c0 module:overlay(0) from:0x020c65a4 kind:arm_call to:0x0201c284 module:main from:0x020c65b8 kind:arm_call to:0x0201edec module:main -from:0x020c65c8 kind:load to:0x020c73e0 module:overlay(25) -from:0x020c65cc kind:load to:0x020c73d4 module:overlay(25) +from:0x020c65c8 kind:load to:0x020c73d8 add:8 module:overlay(25) +from:0x020c65cc kind:load to:0x020c73cc add:8 module:overlay(25) from:0x020c65d0 kind:load to:0x0204b15c module:main from:0x020c65d4 kind:load to:0x020c73fc module:overlay(25) from:0x020c65d8 kind:load to:0x020c7410 module:overlay(25) @@ -95,14 +95,14 @@ from:0x020c65fc kind:arm_call to:0x0206edf8 module:overlay(0) from:0x020c6604 kind:arm_call to:0x020c71ec module:overlay(25) from:0x020c660c kind:arm_call to:0x0201662c module:main from:0x020c6614 kind:arm_call to:0x020631e4 module:overlay(0) -from:0x020c6620 kind:load to:0x020c73e0 module:overlay(25) +from:0x020c6620 kind:load to:0x020c73d8 add:8 module:overlay(25) from:0x020c6624 kind:load to:0x020b6a14 module:overlay(0) from:0x020c6640 kind:arm_call to:0x0206edf8 module:overlay(0) from:0x020c6648 kind:arm_call to:0x020c71ec module:overlay(25) from:0x020c6650 kind:arm_call to:0x0201662c module:main from:0x020c6658 kind:arm_call to:0x020631e4 module:overlay(0) from:0x020c6660 kind:arm_call to:0x02011ff4 module:main -from:0x020c666c kind:load to:0x020c73e0 module:overlay(25) +from:0x020c666c kind:load to:0x020c73d8 add:8 module:overlay(25) from:0x020c6670 kind:load to:0x020b6a14 module:overlay(0) from:0x020c6688 kind:load to:0x020c66c0 module:overlay(25) from:0x020c66a8 kind:arm_call to:0x020c66c0 module:overlay(25) diff --git a/config/jp/arm9/overlays/ov025/symbols.txt b/config/jp/arm9/overlays/ov025/symbols.txt index de60dc2f..25a9e068 100644 --- a/config/jp/arm9/overlays/ov025/symbols.txt +++ b/config/jp/arm9/overlays/ov025/symbols.txt @@ -1,65 +1,57 @@ -func_ov025_020c6060 kind:function(arm,size=0x64) addr:0x020c6060 -func_ov025_020c60c4 kind:function(arm,size=0x2c) addr:0x020c60c4 -func_ov025_020c60f0 kind:function(arm,size=0x34) addr:0x020c60f0 -func_ov025_020c6124 kind:function(arm,size=0x70) addr:0x020c6124 -func_ov025_020c6194 kind:function(arm,size=0x24) addr:0x020c6194 -func_ov025_020c61b8 kind:function(arm,size=0x24) addr:0x020c61b8 -func_ov025_020c61dc kind:function(arm,size=0x20) addr:0x020c61dc -func_ov025_020c61fc kind:function(arm,size=0x24) addr:0x020c61fc -func_ov025_020c6220 kind:function(arm,size=0x24) addr:0x020c6220 -func_ov025_020c6244 kind:function(arm,size=0x3c) addr:0x020c6244 -func_ov025_020c6280 kind:function(arm,size=0x2c) addr:0x020c6280 -func_ov025_020c62ac kind:function(arm,size=0x2c) addr:0x020c62ac -func_ov025_020c62d8 kind:function(arm,size=0x58) addr:0x020c62d8 -func_ov025_020c6330 kind:function(arm,size=0x78) addr:0x020c6330 -func_ov025_020c63a8 kind:function(arm,size=0x34) addr:0x020c63a8 -func_ov025_020c63dc kind:function(arm,size=0x20) addr:0x020c63dc -func_ov025_020c63fc kind:function(arm,size=0x20) addr:0x020c63fc -func_ov025_020c641c kind:function(arm,size=0x20) addr:0x020c641c -func_ov025_020c643c kind:function(arm,size=0x4) addr:0x020c643c -func_ov025_020c6440 kind:function(arm,size=0x10) addr:0x020c6440 -func_ov025_020c6450 kind:function(arm,size=0x10) addr:0x020c6450 -func_ov025_020c6460 kind:function(arm,size=0x14) addr:0x020c6460 -func_ov025_020c6474 kind:function(arm,size=0x1c) addr:0x020c6474 -func_ov025_020c6490 kind:function(arm,size=0x154) addr:0x020c6490 -func_ov025_020c65e4 kind:function(arm,size=0x44) addr:0x020c65e4 -func_ov025_020c6628 kind:function(arm,size=0x4c) addr:0x020c6628 -func_ov025_020c6674 kind:function(arm,size=0x18) addr:0x020c6674 -func_ov025_020c668c kind:function(arm,size=0x24) addr:0x020c668c -func_ov025_020c66b0 kind:function(arm,size=0x10) addr:0x020c66b0 -func_ov025_020c66c0 kind:function(arm,size=0x298) addr:0x020c66c0 -func_ov025_020c6958 kind:function(arm,size=0xc8) addr:0x020c6958 -func_ov025_020c6a20 kind:function(arm,size=0x4) addr:0x020c6a20 -func_ov025_020c6a24 kind:function(arm,size=0x3c) addr:0x020c6a24 -func_ov025_020c6a60 kind:function(arm,size=0x190) addr:0x020c6a60 -func_ov025_020c6bf0 kind:function(arm,size=0x1d4) addr:0x020c6bf0 -func_ov025_020c6dc4 kind:function(arm,size=0x40) addr:0x020c6dc4 -func_ov025_020c6e04 kind:function(arm,size=0x68) addr:0x020c6e04 -func_ov025_020c6e6c kind:function(arm,size=0x50) addr:0x020c6e6c -func_ov025_020c6ebc kind:function(arm,size=0x2c0) addr:0x020c6ebc -func_ov025_020c717c kind:function(arm,size=0x38) addr:0x020c717c -func_ov025_020c71b4 kind:function(arm,size=0x38) addr:0x020c71b4 -func_ov025_020c71ec kind:function(arm,size=0x24) addr:0x020c71ec -func_ov025_020c7210 kind:function(arm,size=0x84) addr:0x020c7210 -data_ov025_020c7294 kind:data(any) addr:0x020c7294 -__sinit_ov025_020c7298 kind:function(arm,size=0x58) addr:0x020c7298 -.p__sinit_ov025_020c7298 kind:data(word) addr:0x020c72f0 -data_ov025_020c7308 kind:data(any) addr:0x020c7308 -data_ov025_020c7338 kind:data(any) addr:0x020c7338 -data_ov025_020c7364 kind:data(any) addr:0x020c7364 ambiguous -data_ov025_020c7380 kind:data(any) addr:0x020c7380 -data_ov025_020c738c kind:data(any) addr:0x020c738c ambiguous -data_ov025_020c7394 kind:data(any) addr:0x020c7394 ambiguous -data_ov025_020c7398 kind:data(any) addr:0x020c7398 ambiguous -data_ov025_020c739c kind:data(any) addr:0x020c739c -data_ov025_020c73a8 kind:data(any) addr:0x020c73a8 ambiguous -data_ov025_020c73b4 kind:data(any) addr:0x020c73b4 ambiguous -data_ov025_020c73c4 kind:data(any) addr:0x020c73c4 ambiguous -data_ov025_020c73cc kind:data(any) addr:0x020c73cc ambiguous -data_ov025_020c73d4 kind:data(any) addr:0x020c73d4 -data_ov025_020c73e0 kind:data(any) addr:0x020c73e0 -data_ov025_020c73ec kind:data(any) addr:0x020c73ec ambiguous -data_ov025_020c73fc kind:data(any) addr:0x020c73fc -data_ov025_020c7404 kind:data(any) addr:0x020c7404 ambiguous -data_ov025_020c7410 kind:data(any) addr:0x020c7410 -data_ov025_020c7414 kind:data(any) addr:0x020c7414 ambiguous +_ZN19GameModeTitleScreenC1Ev kind:function(arm,size=0x64) addr:0x020c6060 +_ZN19GameModeTitleScreenD1Ev kind:function(arm,size=0x2c) addr:0x020c60c4 +_ZN19GameModeTitleScreenD0Ev kind:function(arm,size=0x34) addr:0x020c60f0 +_ZN19GameModeTitleScreen8vfunc_08Eiii kind:function(arm,size=0x70) addr:0x020c6124 +_ZN19GameModeTitleScreen8vfunc_0CEv kind:function(arm,size=0x24) addr:0x020c6194 +_ZN19GameModeTitleScreen8vfunc_10Ev kind:function(arm,size=0x24) addr:0x020c61b8 +_ZN19GameModeTitleScreen8vfunc_14Ev kind:function(arm,size=0x20) addr:0x020c61dc +_ZN19GameModeTitleScreen8vfunc_18Ev kind:function(arm,size=0x24) addr:0x020c61fc +_ZN19GameModeTitleScreen8vfunc_1CEv kind:function(arm,size=0x24) addr:0x020c6220 +_ZN19GameModeTitleScreen8vfunc_20Ev kind:function(arm,size=0x3c) addr:0x020c6244 +_ZN18UnkStruct_027e09a419func_ov025_020c4a60Ev kind:function(arm,size=0x2c) addr:0x020c6280 +_ZN18TitleScreenManager6CreateEi kind:function(arm,size=0x2c) addr:0x020c62ac +_ZN18TitleScreenManagerC1Ei kind:function(arm,size=0x58) addr:0x020c62d8 +_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_28Ei kind:function(arm,size=0x20) addr:0x020c63fc +_ZN18TitleScreenManager8vfunc_2CEi kind:function(arm,size=0x20) addr:0x020c641c +_ZN18TitleScreenManager8vfunc_38Ev 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 +_ZN18TitleScreenManagerD1Ev kind:function(arm,size=0x14) addr:0x020c6460 +_ZN18TitleScreenManagerD0Ev kind:function(arm,size=0x1c) addr:0x020c6474 +_ZN11TitleScreenC1Ev kind:function(arm,size=0x154) addr:0x020c6490 +_ZN11TitleScreenD1Ev kind:function(arm,size=0x44) addr:0x020c65e4 +_ZN11TitleScreenD0Ev kind:function(arm,size=0x4c) addr:0x020c6628 +_ZN11TitleScreen19func_ov025_020c4e54Ev kind:function(arm,size=0x18) addr:0x020c6674 +_ZN11TitleScreen19func_ov025_020c4e6cEv kind:function(arm,size=0x24) addr:0x020c668c +_ZN11TitleScreen19func_ov025_020c4e90Ev kind:function(arm,size=0x10) addr:0x020c66b0 +_ZN11TitleScreen19func_ov025_020c4ea0Ej kind:function(arm,size=0x298) addr:0x020c66c0 +_ZN11TitleScreen8vfunc_08EP24GameModePTMFParam2StructP12TouchControl kind:function(arm,size=0xc8) addr:0x020c6958 +_ZN11TitleScreen19func_ov025_020c5200EP24GameModePTMFParam2StructP12TouchControl kind:function(arm,size=0x4) addr:0x020c6a20 +_ZN11TitleScreen19func_ov025_020c5204EP24GameModePTMFParam2StructP12TouchControl kind:function(arm,size=0x3c) addr:0x020c6a24 +_ZN11TitleScreen19func_ov025_020c5240EP24GameModePTMFParam2StructP12TouchControl kind:function(arm,size=0x190) addr:0x020c6a60 +_ZN11TitleScreen19func_ov025_020c53d0EP24GameModePTMFParam2StructP12TouchControl kind:function(arm,size=0x1d4) addr:0x020c6bf0 +_ZN11TitleScreen19func_ov025_020c55a4EP24GameModePTMFParam2StructP12TouchControl kind:function(arm,size=0x40) addr:0x020c6dc4 +_ZN11TitleScreen19func_ov025_020c55e4EP24GameModePTMFParam2StructP12TouchControl kind:function(arm,size=0x68) addr:0x020c6e04 +_ZN11TitleScreen8vfunc_14EPc kind:function(arm,size=0x50) addr:0x020c6e6c +_ZN11TitleScreen8vfunc_10EPc kind:function(arm,size=0x2c0) addr:0x020c6ebc +_ZN11TitleScreen8vfunc_0CEi kind:function(arm,size=0x38) addr:0x020c717c +_ZN11TitleScreen19func_ov025_020c592cEv kind:function(arm,size=0x38) addr:0x020c71b4 +_ZN11TitleScreen19func_ov025_020c5964Ev kind:function(arm,size=0x24) addr:0x020c71ec +_ZN16TitleScreen_Sub28vfunc_00Ev kind:function(arm,size=0x84) addr:0x020c7210 +data_ov025_020c5a0c kind:data(any) addr:0x020c7294 +__sinit_TitleScreen.cpp kind:function(arm,size=0x58) addr:0x020c7298 +.p__sinit_TitleScreen.cpp kind:data(word) addr:0x020c72f0 +_ZTV19GameModeTitleScreen kind:data(any) addr:0x020c7300 +_ZTV18TitleScreenManager kind:data(any) addr:0x020c7330 +data_ov025_020c5ae0 kind:data(any) addr:0x020c7380 +data_ov025_020c738c kind:data(any) addr:0x020c738c +data_ov025_020c7394 kind:data(any) addr:0x020c7394 +data_ov025_020c7398 kind:data(any) addr:0x020c7398 +data_ov025_020c5aec kind:data(any) addr:0x020c739c +_ZTV16TitleScreen_Sub2 kind:data(any) addr:0x020c73cc +_ZTV11TitleScreen kind:data(any) addr:0x020c73d8 +@337 kind:data(byte[18]) addr:0x020c73fc +@338 kind:data(byte[6]) addr:0x020c7410 diff --git a/config/jp/arm9/symbols.txt b/config/jp/arm9/symbols.txt index d8955665..6cbc1531 100644 --- a/config/jp/arm9/symbols.txt +++ b/config/jp/arm9/symbols.txt @@ -738,7 +738,7 @@ func_02014f58 kind:function(arm,size=0x18) addr:0x02014f58 func_02014f70 kind:function(arm,size=0x8) addr:0x02014f70 func_02014fe0 kind:function(arm,size=0x8) addr:0x02014f78 func_02014f80 kind:function(arm,size=0xc) addr:0x02014f80 -func_02014f8c kind:function(arm,size=0x14) addr:0x02014f8c +_ZN18UnkStruct_02049be013func_02014ff4Ev kind:function(arm,size=0x14) addr:0x02014f8c func_02014fa0 kind:function(arm,size=0x28) addr:0x02014fa0 func_02014fc8 kind:function(arm,size=0x24) addr:0x02014fc8 func_02014fec kind:function(arm,size=0x2c) addr:0x02014fec @@ -818,17 +818,17 @@ func_02016438 kind:function(thumb,size=0x34) addr:0x02016438 func_0201646c kind:function(thumb,size=0x34) addr:0x0201646c func_020164a0 kind:function(thumb,size=0x34) addr:0x020164a0 func_020164d4 kind:function(thumb,size=0x60) addr:0x020164d4 -func_02016534 kind:function(arm,size=0x14) addr:0x02016534 +func_0201659c kind:function(arm,size=0x14) addr:0x02016534 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 _ZN26GameModeManagerBase_104_04C1Ev kind:function(arm,size=0xc) addr:0x02016614 func_02016620 kind:function(arm,size=0xc) addr:0x02016620 -func_0201662c kind:function(arm,size=0x18) addr:0x0201662c +_ZN26GameModeManagerBase_104_04D1Ev kind:function(arm,size=0x18) addr:0x0201662c _ZN26GameModeManagerBase_104_0413func_020166acEv kind:function(arm,size=0x20) addr:0x02016644 _ZN26GameModeManagerBase_104_0413func_020166ccEPv kind:function(arm,size=0x28) addr:0x02016664 -func_0201668c kind:function(arm,size=0x2c) addr:0x0201668c +_ZN26GameModeManagerBase_104_0413func_020166f4EPv kind:function(arm,size=0x2c) addr:0x0201668c func_020166b8 kind:function(arm,size=0x1c) addr:0x020166b8 func_020166d4 kind:function(arm,size=0x28) addr:0x020166d4 func_020166fc kind:function(arm,size=0x34) addr:0x020166fc @@ -1064,7 +1064,7 @@ func_0201bd14 kind:function(arm,size=0x30) addr:0x0201bd14 func_0201bd44 kind:function(arm,size=0x3c) addr:0x0201bd44 func_0201bd80 kind:function(arm,size=0x5c) addr:0x0201bd80 func_0201bddc kind:function(arm,size=0x20) addr:0x0201bddc -_ZN23GameModeManagerBase_00413func_0201c00cEiii kind:function(arm,size=0x5c) addr:0x0201bdfc +_ZN23GameModeManagerBase_00413func_0201c00cEii kind:function(arm,size=0x5c) addr:0x0201bdfc func_0201be58 kind:function(arm,size=0x3c) addr:0x0201be58 func_0201be94 kind:function(arm,size=0x20) addr:0x0201be94 func_0201beb4 kind:function(arm,size=0x20) addr:0x0201beb4 @@ -1079,10 +1079,10 @@ 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 func_0201c250 kind:function(thumb,size=0x34) addr:0x0201c250 -func_0201c284 kind:function(arm,size=0x14) addr:0x0201c284 +_ZN18UnkStruct_0204aeac13func_0201c494Ei kind:function(arm,size=0x14) addr:0x0201c284 func_0201c298 kind:function(arm,size=0x30) addr:0x0201c298 -func_0201c2c8 kind:function(arm,size=0x2c) addr:0x0201c2c8 -func_0201c2f4 kind:function(arm,size=0x2c) addr:0x0201c2f4 +_ZN18UnkStruct_0204aeac13func_0201c4d8Eiii kind:function(arm,size=0x2c) addr:0x0201c2c8 +_ZN18UnkStruct_0204aeac13func_0201c504Eiiii kind:function(arm,size=0x2c) addr:0x0201c2f4 func_0201c320 kind:function(arm,size=0x19c) addr:0x0201c320 func_0201c4bc kind:function(thumb,size=0x6e) addr:0x0201c4bc func_0201c52c kind:function(arm,size=0x44) addr:0x0201c52c @@ -1157,9 +1157,9 @@ func_0201ec44 kind:function(arm,size=0x14) addr:0x0201ec44 func_0201ec58 kind:function(arm,size=0x6c) addr:0x0201ec58 func_0201ecc4 kind:function(arm,size=0xa4) addr:0x0201ecc4 func_0201ed68 kind:function(arm,size=0x24) addr:0x0201ed68 -func_0201ed8c kind:function(arm,size=0x60) addr:0x0201ed8c -func_0201edec kind:function(arm,size=0x50) addr:0x0201edec -func_0201ee3c kind:function(arm,size=0x14) addr:0x0201ee3c +_ZN16TitleScreen_Sub3C1Ev kind:function(arm,size=0x60) addr:0x0201ed8c +_ZN16TitleScreen_Sub313func_0201effcEiii kind:function(arm,size=0x50) addr:0x0201edec +_ZN16TitleScreen_Sub313func_0201f04cEv kind:function(arm,size=0x14) addr:0x0201ee3c func_0201ee50 kind:function(arm,size=0x60) addr:0x0201ee50 func_0201eeb0 kind:function(arm,size=0x50) addr:0x0201eeb0 func_0201ef00 kind:function(arm,size=0x14) addr:0x0201ef00 @@ -2787,7 +2787,6 @@ data_0204c450 kind:bss addr:0x0204c450 data_0204c45c kind:bss addr:0x0204c45c data_0204aeec kind:bss addr:0x0204c46c data_0204c470 kind:bss addr:0x0204c470 -data_0204c482 kind:bss addr:0x0204c482 data_0204c490 kind:bss addr:0x0204c490 data_0204c498 kind:bss addr:0x0204c498 data_0204af1c kind:bss addr:0x0204c49c diff --git a/include/FileSelect/FileSelect.hpp b/include/FileSelect/FileSelect.hpp index 1d4b0a46..2d68af68 100644 --- a/include/FileSelect/FileSelect.hpp +++ b/include/FileSelect/FileSelect.hpp @@ -14,40 +14,6 @@ extern const unk16 data_ov019_020d1bb0[]; extern "C" void func_ov001_020bd6a8(); -class UnkStructSub2 { -public: - UnkStructSub2(); - - /* 00 */ virtual void vfunc_00(); - /* 04 */ virtual void vfunc_04(); -}; - -class UnkStructSub4 { -public: - /* 00 */ unk8 mUnk_00[0x18]; - /* 18 */ unk32 mUnk_0018; - /* 1C */ unk32 mUnk_001C; - /* 20 */ unk32 mUnk_0020; - /* 20 */ unk32 mUnk_0024; - /* 28 */ u8 mUnk_0028; // bool? - /* 28 */ unk8 mUnk_0029; - /* 28 */ unk8 mUnk_002A; - /* 28 */ unk8 mUnk_002B; - /* 2C */ UnkStructSub2 mUnk_002C; - /* 30 */ STRUCT_PAD(0x30, 0x5C); - /* 5C */ unk16 mUnk_5C; - /* 5C */ unk16 mUnk_5E; - /* 60 */ STRUCT_PAD(0x60, 0x6E); - /* 6E */ unk8 mUnk_6E; - /* 6F */ unk8 mUnk_6F; - /* 70 */ unk32 mUnk_70; - /* 74 */ unk16 mUnk_74; - /* 76 */ unk16 mUnk_76; - /* 78 */ - - void func_ov000_02060b64(void); -}; - // related to UnkStructSub2 but unsure how class FileSelect_UnkClass7 { public: @@ -58,7 +24,7 @@ class FileSelect_UnkClass7 { }; /* 0000 (vtable) */ - /* 0004 */ UnkStructSub4 mUnk_0004[30]; + /* 0004 */ UnkSubStruct19 mUnk_0004[30]; /* 0E14 */ Sub5 mUnk_0E14[30]; // data_ov019_020d22a8 vtable @@ -105,7 +71,7 @@ class FileSelectSubScreen : public FileSelect_UnkClass2_Sub4_Base { // data_ov019_020d22b8 vtable /* 00 */ virtual ~FileSelectSubScreen() override {} /* 08 */ virtual void vfunc_08() override; - /* 10 */ virtual void vfunc_10() override; + /* 10 */ virtual void vfunc_10(unk8 *param1) override; }; class FileSelectManager : public GameModeManagerBase { // 0x02262dbc diff --git a/include/FileSelect/FileSelectMain.hpp b/include/FileSelect/FileSelectMain.hpp index 7b707d79..ac5acf11 100644 --- a/include/FileSelect/FileSelectMain.hpp +++ b/include/FileSelect/FileSelectMain.hpp @@ -55,44 +55,6 @@ enum FileSelectExitMode_ { /* 0x03 */ FileSelectExitMode_Unk_3 = 3, }; -// used to draw the swords from the adventure and battle buttons -class UnkSubStruct19 { -public: - /* 00 */ void *mUnk_00; - /* 04 */ void *mUnk_04; - /* 08 */ unk32 mUnk_08; - /* 0C */ unk32 mUnk_0C; // pause the animation timer (in this context: pause the shiny animation on the sword) - /* 10 */ unk32 mUnk_10; // animation timer - /* 14 */ unk32 mUnk_14; // animation speed (also affects above timer) - /* 18 */ unk32 mUnk_18; - /* 1C */ void *mUnk_1C; // pointer to animation bank ("ABNK") - /* 20 */ unk32 mUnk_20; - /* 24 */ unk32 mUnk_24; - /* 28 */ unk32 mUnk_28; - /* 2C */ unk32 mUnk_2C; - /* 30 */ void *mUnk_30; // pointer to somewhere inside "CEBK" - /* 34 */ void *mUnk_34; - /* 38 */ unk32 mUnk_38; - /* 3C */ unk32 mUnk_3C; - /* 40 */ unk32 mUnk_40; // related to the width of the texture (scaling matrix?) - /* 44 */ unk32 mUnk_44; // related to the height of the texture - /* 48 */ Vec2us mUnk_48; - /* 4C */ unk32 mUnk_4C; - /* 50 */ unk32 mUnk_50; - /* 54 */ unk32 mUnk_54; - /* 58 */ unk32 mUnk_58; // another timer? - /* 5C */ Vec2us mUnk_5C; // position of the animated texture - /* 60 */ unk32 mUnk_60; - /* 64 */ unk32 mUnk_64; - /* 68 */ unk32 mUnk_68; - /* 6C */ unk32 mUnk_6C; - /* 70 */ unk32 mUnk_70; - /* 74 */ unk32 mUnk_74; - /* 78 */ - - UnkSubStruct19(); -}; - class FileSelectMain : public GameModeManagerBase_104 { // 022E5F70 public: /* 0000 (base) */ @@ -294,6 +256,6 @@ class FileSelectMain : public GameModeManagerBase_104 { // 022E5F70 // data_ov019_020d1ec0 vtable /* 00 */ virtual ~FileSelectMain() override; /* 08 */ virtual void vfunc_08() override; - /* 10 */ virtual void vfunc_10() override; + /* 10 */ virtual void vfunc_10(unk8 *param1) override; /* 18 */ virtual void vfunc_18(void) override; }; diff --git a/include/FileSelect/FileSelectMicTest.hpp b/include/FileSelect/FileSelectMicTest.hpp index 6da98608..ef50d9c2 100644 --- a/include/FileSelect/FileSelectMicTest.hpp +++ b/include/FileSelect/FileSelectMicTest.hpp @@ -1,7 +1,7 @@ #pragma once -#include "FileSelect/Common.hpp" #include "Game/GameModeManager.hpp" +#include "Unknown/Common.hpp" #include "global.h" #include "nitro/math.h" #include "types.h" @@ -21,41 +21,6 @@ enum FSMicTestState_ { /* 0x04 */ FSMicTestState_Max = 4 }; -class UnkStruct_ov019_020d24c8_28_258 { -public: - /* 00 */ void *mUnk_00; - /* 04 */ unk32 mUnk_04; - /* 08 */ unk16 mUnk_08; - /* 0A */ Vec2us_cpp mPos; - /* 0E */ unk16 mUnk_0E; - /* 10 */ unk16 mUnk_10; - /* 12 */ unk16 mUnk_12; - /* 14 */ unk16 mUnk_14; - /* 16 */ unk16 mUnk_16; - /* 18 */ - - UnkStruct_ov019_020d24c8_28_258() { - mUnk_00 = NULL; - mUnk_04 = 0; - mPos.x = 0; - mPos.y = 0; - }; - - UnkStruct_ov019_020d24c8_28_258(unk32 param1, unk32 param2) : - mUnk_00(0), - mUnk_04(0) { - this->UnknownAction(param1, param2); - } - - void UnknownAction(unk32 param1, unk32 param2) { - this->func_ov000_0205fc20(param1, param2, &this->mPos, &this->mUnk_0E); - this->mUnk_12 = param1; - this->mUnk_14 = param2; - } - - void func_ov000_0205fc20(unk32 param1, unk32 param2, void *param3, void *param4); -}; - class UnkStruct_ov019_020d24c8_28_270_18 { public: /* 00 */ UnkStruct_ov019_020d24c8_28_258 mUnk_00[MAX_MIC_LEVELS]; @@ -123,6 +88,6 @@ class FileSelectMicTest : public GameModeManagerBase_104 { // data_ov019_020d2284 vtable /* 00 */ virtual ~FileSelectMicTest() override; /* 08 */ virtual void vfunc_08() override; - /* 10 */ virtual void vfunc_10() override; - /* 14 */ virtual void vfunc_14() override; + /* 10 */ virtual void vfunc_10(unk8 *param1) override; + /* 14 */ virtual void vfunc_14(unk8 *param1) override; }; diff --git a/include/FileSelect/FileSelectOptions.hpp b/include/FileSelect/FileSelectOptions.hpp index ffe17f36..a8586a7f 100644 --- a/include/FileSelect/FileSelectOptions.hpp +++ b/include/FileSelect/FileSelectOptions.hpp @@ -1,9 +1,9 @@ #pragma once -#include "FileSelect/Common.hpp" #include "FileSelect/FileSelectMicTest.hpp" #include "Game/GameModeManager.hpp" #include "System/SysNew.hpp" +#include "Unknown/Common.hpp" #include "global.h" #include "types.h" @@ -167,7 +167,7 @@ class FileSelectOptions : public GameModeManagerBase_104 { // data_ov019_020d2200 vtable /* 00 */ virtual ~FileSelectOptions() override; /* 08 */ virtual void vfunc_08() override; - /* 10 */ virtual void vfunc_10() override; + /* 10 */ virtual void vfunc_10(unk8 *param1) override; static GameModeManagerBase_104 *Create(void *param1, s32 saveSlotIndex); }; diff --git a/include/FileSelect/FileSelectOptionsManager.hpp b/include/FileSelect/FileSelectOptionsManager.hpp index b2660386..57f2012d 100644 --- a/include/FileSelect/FileSelectOptionsManager.hpp +++ b/include/FileSelect/FileSelectOptionsManager.hpp @@ -1,7 +1,7 @@ #pragma once -#include "FileSelect/Common.hpp" #include "System/SysNew.hpp" +#include "Unknown/Common.hpp" #include "global.h" #include "nitro/math.h" #include "types.h" diff --git a/include/FileSelect/UnkSubStruct9.hpp b/include/FileSelect/UnkSubStruct9.hpp index 590811be..20d8217e 100644 --- a/include/FileSelect/UnkSubStruct9.hpp +++ b/include/FileSelect/UnkSubStruct9.hpp @@ -7,37 +7,6 @@ #include "nitro/math.h" #include "types.h" -class UnkStructSub4_2 { -public: - /* 00 */ void *mUnk_00; - /* 04 */ void *mUnk_04; - /* 08 */ unk32 mUnk_08; - /* 08 */ unk32 mUnk_0C; - /* 10 */ unk32 mUnk_10; - /* 14 */ unk32 mUnk_14; - /* 18 */ unk32 mUnk_18; - /* 1C */ unk32 mUnk_1C; - /* 20 */ unk32 mUnk_20; - /* 24 */ unk32 mUnk_24; - /* 28 */ u8 mUnk_28; // bool? - /* 29 */ unk8 mUnk_29; - /* 2A */ unk8 mUnk_2A; - /* 2B */ unk8 mUnk_2B; - /* 2C */ unk32 mUnk_2C; - /* 30 */ STRUCT_PAD(0x30, 0x5C); - /* 5C */ unk16 mUnk_5C; - /* 5E */ unk16 mUnk_5E; - /* 60 */ STRUCT_PAD(0x60, 0x6E); - /* 6E */ unk8 mUnk_6E; - /* 6F */ unk8 mUnk_6F; - /* 70 */ unk32 mUnk_70; - /* 74 */ unk16 mUnk_74; - /* 76 */ unk16 mUnk_76; - /* 78 */ - - void func_ov000_02060b64(void); -}; - // file tab manager? class UnkSubStruct9 : public SysObject { public: @@ -49,16 +18,16 @@ class UnkSubStruct9 : public SysObject { /* 064 */ UnkSystem2_UnkSubSystem5 mUnk_064; /* 29C */ UnkStruct_ov019_020d24c8_28_258 mUnk_29C; // top-left 1 and 2 icons /* 2B4 */ UnkStruct_ov019_020d24c8_28_258 mUnk_2B4; // static hearts (hearts before beating heart) - /* 2CC */ UnkStructSub4_2 mUnk_2CC; - /* 344 */ UnkStructSub4_2 mUnk_344; - /* 3BC */ UnkStructSub4_2 mUnk_3BC; - /* 434 */ UnkStructSub4_2 mUnk_434; - /* 4AC */ UnkStructSub4_2 mUnk_4AC; - /* 524 */ UnkStructSub4_2 mUnk_524; // forest dungeon icon - /* 59C */ UnkStructSub4_2 mUnk_59C; // snow dungeon icon - /* 614 */ UnkStructSub4_2 mUnk_614; // ocean dungeon icon - /* 68C */ UnkStructSub4_2 mUnk_68C; // fire dungeon icon - /* 704 */ UnkStructSub4_2 mUnk_704; // desert dungeon icon + /* 2CC */ UnkSubStruct19 mUnk_2CC; + /* 344 */ UnkSubStruct19 mUnk_344; + /* 3BC */ UnkSubStruct19 mUnk_3BC; + /* 434 */ UnkSubStruct19 mUnk_434; + /* 4AC */ UnkSubStruct19 mUnk_4AC; + /* 524 */ UnkSubStruct19 mUnk_524; // forest dungeon icon + /* 59C */ UnkSubStruct19 mUnk_59C; // snow dungeon icon + /* 614 */ UnkSubStruct19 mUnk_614; // ocean dungeon icon + /* 68C */ UnkSubStruct19 mUnk_68C; // fire dungeon icon + /* 704 */ UnkSubStruct19 mUnk_704; // desert dungeon icon /* 77C */ Vec2us mUnk_77C; // int pad[10]; /* 780 */ diff --git a/include/Game/GameModeManager.hpp b/include/Game/GameModeManager.hpp index 32663078..4b8dc8d9 100644 --- a/include/Game/GameModeManager.hpp +++ b/include/Game/GameModeManager.hpp @@ -1,5 +1,6 @@ #pragma once +#include "Player/TouchControl.hpp" #include "System/SysNew.hpp" #include "nitro/math.h" #include "types.h" @@ -8,7 +9,7 @@ class GameModeManagerBase_004 : public SysObject { public: void func_ov001_020bd734(unk32 *param1); void func_ov001_020bd784(); - void func_0201c00c(unk32 param1, unk32 param2, unk32 param3); + void func_0201c00c(unk32 param1, unk32 param2); }; class GameModeManagerBase_104_04 { @@ -19,8 +20,10 @@ class GameModeManagerBase_104_04 { void func_020166ac(void); void func_020166cc(void *param1); + void func_020166f4(void *param1); GameModeManagerBase_104_04(); + ~GameModeManagerBase_104_04(); }; class GameModeManagerBase_104_0C_04 { @@ -41,22 +44,30 @@ class GameModeManagerBase_104_0C { /* 0C */ virtual void vfunc_0C(); }; +struct GameModePTMFParam2Struct { + /* 00 */ unk16 mUnk_00; + /* 00 */ volatile u16 mButtons; +}; + class GameModeManagerBase_104 : public SysObject { public: /* 00 (vtable) */ /* 04 */ GameModeManagerBase_104_04 mUnk_04; /* 0C */ GameModeManagerBase_104_0C mUnk_0C; - /* 18 */ u32 mUnk_18; + /* 18 */ unk8 mUnk_18; + /* 19 */ unk8 mUnk_19; + /* 1A */ unk8 mUnk_1A; + /* 1B */ unk8 mUnk_1B; /* 1C */ GameModeManagerBase_104(); // data_ov000_020b1e60 vtable /* 00 */ virtual ~GameModeManagerBase_104(); - /* 08 */ virtual void vfunc_08(); - /* 0C */ virtual void vfunc_0C(); - /* 10 */ virtual void vfunc_10(); - /* 14 */ virtual void vfunc_14(); + /* 08 */ virtual void vfunc_08(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl); + /* 0C */ virtual void vfunc_0C(unk32 param1); + /* 10 */ virtual void vfunc_10(unk8 *param1); + /* 14 */ virtual void vfunc_14(unk8 *param1); /* 18 */ virtual void vfunc_18(void); static GameModeManagerBase_104 *Create(void *param1, s32 saveSlotIndex); diff --git a/include/Game/GameModeTitleScreen.hpp b/include/Game/GameModeTitleScreen.hpp new file mode 100644 index 00000000..d028d47c --- /dev/null +++ b/include/Game/GameModeTitleScreen.hpp @@ -0,0 +1,27 @@ +#pragma once + +#include "Game/GameMode.hpp" +#include "Unknown/UnkStruct_0204a060.hpp" +#include "global.h" +#include "types.h" + +class GameModeTitleScreen : public GameModeBase { +public: + /* 00 (base) */ + /* 04 */ + + GameModeTitleScreen(); + + // data_ov025_020c5a68 vtable + /* 00 */ virtual ~GameModeTitleScreen() override; + /* 08 */ virtual void vfunc_08(unk32 param1, unk32 param2, unk32 param3) override; + /* 0C */ virtual void vfunc_0C() override; + /* 10 */ virtual void vfunc_10() override; + /* 14 */ virtual void vfunc_14() override; + /* 18 */ virtual void vfunc_18() override; + /* 1C */ virtual void vfunc_1C() override; + /* 20 */ virtual void vfunc_20() override; +}; + +extern void func_ov018_020c4b08(unk16 *param1); +extern void func_ov018_020c4e8c(void); diff --git a/include/Player/TouchControl.hpp b/include/Player/TouchControl.hpp new file mode 100644 index 00000000..cb42c325 --- /dev/null +++ b/include/Player/TouchControl.hpp @@ -0,0 +1,26 @@ +#pragma once + +#include "types.h" + +typedef u16 TouchFlags; +enum TouchFlag_ { + TouchFlag_TouchedNow = 0x0001, + TouchFlag_UntouchedNow = 0x0002, + TouchFlag_Repeat = 0x0004, +}; + +#define CHECK_TOUCH_FLAGS(pTC, flags) ((pTC)->mFlags & (flags)) + +class TouchControl { +public: + /* 00 */ u16 mUnk_00; + /* 00 */ u16 mUnk_02; + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0C */ unk32 mUnk_0C; + /* 10 */ unk32 mUnk_10; + /* 14 */ unk32 mUnk_14; + /* 18 */ unk32 mUnk_18; + /* 1C */ unk32 mUnk_1C; + /* 20 */ TouchFlags mFlags; +}; diff --git a/include/TitleScreen/TitleScreen.hpp b/include/TitleScreen/TitleScreen.hpp new file mode 100644 index 00000000..1475ba59 --- /dev/null +++ b/include/TitleScreen/TitleScreen.hpp @@ -0,0 +1,222 @@ +#pragma once + +#include "Game/GameModeManager.hpp" +#include "Unknown/Common.hpp" +#include "regs.h" +#include "types.h" + +extern "C" { +void GX_SetGraphicsMode(unk32 param1, unk32 param2, unk32 param3); +void GXS_SetGraphicsMode(unk32 param1); +} + +DECL_PTMF(TitleScreenPTMF, GameModePTMFParam2Struct *param1, TouchControl *pTouchControl); + +typedef u32 TitleScreenState; +enum TitleScreenState_ { + TitleScreenState_None = 0, // does nothing + TitleScreenState_IdleBeforeUI = 1, + TitleScreenState_DrawUIOnInput = 2, + TitleScreenState_DrawUIOnCsCmd = 3, //! TODO: definitely related to the cs, "cs cmd" is assumed + TitleScreenState_IdleBeforeFileSelect = 4, + TitleScreenState_ToFileSelect = 5, + TitleScreenState_Max = 6 +}; + +class TitleScreenManager_Base : public GameModeManagerBase { +public: + /* 000 (base) */ + /* 154 */ + + TitleScreenManager_Base(); + + // data_ov000_020b1d14 vtable + /* 08 */ virtual ~TitleScreenManager_Base() override; + /* 10 */ virtual void vfunc_10(unk32 param1, unk32 param2, unk32 param3) override; + /* 38 */ virtual void vfunc_38(); + /* 3C */ virtual void vfunc_3C(); + /* 40 */ virtual void vfunc_40(); + /* 44 */ virtual void vfunc_44(); + /* 48 */ +}; + +class TitleScreen_Sub2_Base { +public: + /* 00 */ GameModeManagerBase_104_04 mUnk_00; + /* 08 */ + + TitleScreen_Sub2_Base() {} +}; + +class TitleScreen_Sub2 : public TitleScreen_Sub2_Base { +public: + /* 00 (vtable) */ + /* 0C */ unk32 mUnk_0C; + /* 10 */ bool mUnk_10; + /* 11 */ unk8 mUnk_11; + /* 12 */ unk8 mUnk_12; + /* 13 */ unk8 mUnk_13; + + TitleScreen_Sub2() : + mUnk_0C(0), + mUnk_10(false) {} + + // data_ov025_020c5b24 vtable + /* 00 */ virtual void vfunc_00(); +}; + +// similar to UnkSubStruct1 +class TitleScreen_Sub3 { +public: + /* 00 (vtable) */ + /* 04 */ u16 mUnk_04; + /* 04 */ u16 mUnk_06; + /* 08 */ u16 mUnk_08; // 220 + /* 08 */ bool mUnk_0A; // 222 + /* 08 */ bool mUnk_0B; // 223 + /* 0C */ bool mUnk_0C; // 224 + /* 0C */ bool mUnk_0D; + /* 0C */ bool mUnk_0E; + /* 0C */ bool mUnk_0F; + /* 10 */ unk32 mUnk_10; + /* 14 */ unk32 mUnk_14; + /* 18 */ unk32 mUnk_18; + /* 1C */ unk32 mUnk_1C; + /* 20 */ unk32 mUnk_20; + + TitleScreen_Sub3(); + void func_0201effc(unk32 param1, unk32 param2, unk32 param3); + bool func_0201f04c(); + + // data_020442d4 vtable + /* 00 */ virtual void vfunc_00(); + /* 04 */ virtual void vfunc_04(); + /* 08 */ virtual void vfunc_08(); + /* 0C */ + + void UnkOperations() { + int iVar1; + + if (this->mUnk_08 != 0) { + iVar1 = this->mUnk_08 - this->mUnk_0D; + this->mUnk_08 = CLAMP(iVar1, 0, 0xFFFF); + } else { + if (this->mUnk_0A) { + if (this->mUnk_04 < this->mUnk_06) { + iVar1 = this->mUnk_04 + this->mUnk_0D; + + if (iVar1 > this->mUnk_06) { + iVar1 = this->mUnk_06; + } else if (iVar1 < 0) { + iVar1 = 0; + } + + this->mUnk_04 = iVar1; + this->vfunc_00(); + + if (this->mUnk_04 >= this->mUnk_06) { + this->mUnk_10 = this->mUnk_18; + this->mUnk_0A = false; + this->mUnk_0C = true; + } + } + } else { + if (this->mUnk_0B && this->mUnk_04 != 0) { + iVar1 = this->mUnk_04 - this->mUnk_0D; + + if (iVar1 > this->mUnk_06) { + iVar1 = this->mUnk_06; + } else if (iVar1 < 0) { + iVar1 = 0; + } + + this->mUnk_04 = iVar1; + this->vfunc_04(); + + if (this->mUnk_04 == 0) { + this->mUnk_10 = this->mUnk_14; + this->mUnk_0B = false; + this->mUnk_0C = true; + } + } + } + } + } +}; + +class TitleScreen : public GameModeManagerBase_104 { // 0233c6d4 +public: + /* 000 (base) */ + /* 01C */ TitleScreenState mState; + /* 020 */ bool mShowUI; + /* 021 */ u8 mUnk_021; + /* 022 */ unk8 mUnk_022; + /* 023 */ unk8 mUnk_023; + /* 024 */ UnkSubStruct19 mUnk_024; // feather + /* 09C */ UnkSubStruct19 mUnk_09C; // green rectangle + /* 114 */ UnkSubStruct19 mUnk_114; // "touch screen!" text + /* 18C */ UnkSubStruct19 mUnk_18C; // copyright text + /* 204 */ TitleScreen_Sub2 mUnk_204; + /* 218 */ TitleScreen_Sub3 mUnk_218; + /* 23C */ UnkStruct_ov019_020d24c8_28_258 mUnk_23C; + /* 254 */ UnkSubStruct19 mUnk_254; // logo shine + /* 2CC */ UnkSubStruct19 mUnk_2CC; // logo shine outline (it's barely visible) + /* 344 */ unk32 mUnk_344; + /* 348 */ + + TitleScreen(); + + void func_ov025_020c4e54(); + void func_ov025_020c4e6c(); + void func_ov025_020c4e90(); + void func_ov025_020c4ea0(TitleScreenState state); + void func_ov025_020c592c(); + void func_ov025_020c5964(); + void func_ov025_020c5988(); + + // data_ov025_020c5aec + void func_ov025_020c5200(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl); + void func_ov025_020c5204(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl); + void func_ov025_020c5240(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl); + void func_ov025_020c53d0(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl); + void func_ov025_020c55a4(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl); + void func_ov025_020c55e4(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl); + + // data_ov025_020c5b30 vtable + /* 00 */ virtual ~TitleScreen() override; + /* 08 */ virtual void vfunc_08(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) override; + /* 0C */ virtual void vfunc_0C(unk32 param1) override; + /* 10 */ virtual void vfunc_10(unk8 *param1) override; + /* 14 */ virtual void vfunc_14(unk8 *param1) override; +}; + +class TitleScreenManager : public TitleScreenManager_Base { +public: + /* 000 (base) */ + /* 154 */ TitleScreen *mpTitleScreen; + /* 158 */ + + TitleScreenManager(unk32 param1) NO_INLINE { + this->mpTitleScreen = NULL; + GX_SetGraphicsMode(1, 0, 1); + GXS_SetGraphicsMode(5); + REG_BG3CNT_SUB = (REG_BG3CNT_SUB & 0x0043) | 0x4E14; + } + + void func_ov025_020c4c20(); + void func_ov025_020c4c30(); + + // data_ov025_020c5a98 vtable + /* 08 */ virtual ~TitleScreenManager() override; + /* 14 */ virtual void vfunc_14() override; + /* 18 */ virtual void vfunc_18() override; + /* 24 */ virtual void vfunc_24() override; + /* 28 */ virtual void vfunc_28(unk32 param1) override; + /* 2C */ virtual void vfunc_2C(unk32 param1) override; + /* 38 */ virtual void vfunc_38() override; + + static TitleScreenManager *Create(unk32 param1); +}; + +extern TitleScreenManager *data_027e0994; +extern const unk16 data_ov025_020c5a0c[]; diff --git a/include/FileSelect/Common.hpp b/include/Unknown/Common.hpp similarity index 83% rename from include/FileSelect/Common.hpp rename to include/Unknown/Common.hpp index a317a8bb..de9db01c 100644 --- a/include/FileSelect/Common.hpp +++ b/include/Unknown/Common.hpp @@ -517,3 +517,100 @@ struct UnkResult { UnkResult(const char *path); }; + +class UnkStruct_ov019_020d24c8_28_258 { +public: + /* 00 */ void *mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ unk16 mUnk_08; + /* 0A */ Vec2s mPos; + /* 0E */ unk16 mUnk_0E; + /* 10 */ unk16 mUnk_10; + /* 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; + }; + + UnkStruct_ov019_020d24c8_28_258(unk32 param1, unk32 param2) : + mUnk_00(0), + mUnk_04(0) { + this->UnknownAction(param1, param2); + } + + void UnknownAction(unk32 param1, unk32 param2) { + this->func_ov000_0205fc20(param1, param2, &this->mPos, &this->mUnk_0E); + this->mUnk_12 = param1; + this->mUnk_14 = param2; + } + + void func_ov000_0205fc20(unk32 param1, unk32 param2, void *param3, void *param4); +}; + +class UnkStructSub2 { +public: + UnkStructSub2(); + + /* 00 */ virtual void vfunc_00(); + /* 04 */ virtual void vfunc_04(); +}; + +// used to draw the swords from the adventure and battle buttons +class UnkSubStruct19 { +public: + /* 00 */ void *mUnk_00; + /* 04 */ void *mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0C */ unk32 mUnk_0C; // pause the animation timer (in this context: pause the shiny animation on the sword) + /* 10 */ unk32 mUnk_10; // animation timer + /* 14 */ unk32 mUnk_14; // animation speed (also affects above timer) + /* 18 */ unk32 mUnk_18; + /* 1C */ void *mUnk_1C; // pointer to animation bank ("ABNK") + /* 20 */ unk32 mUnk_20; + /* 24 */ unk32 mUnk_24; + /* 28 */ u8 mUnk_28; // bool? + /* 29 */ unk8 mUnk_29; + /* 2A */ unk8 mUnk_2A; + /* 2B */ unk8 mUnk_2B; + /* 2C */ UnkStructSub2 mUnk_2C; + /* 30 */ void *mUnk_30; // pointer to somewhere inside "CEBK" + /* 34 */ void *mUnk_34; + /* 38 */ unk32 mUnk_38; + /* 3C */ unk32 mUnk_3C; + /* 40 */ unk32 mUnk_40; // related to the width of the texture (scaling matrix?) + /* 44 */ unk32 mUnk_44; // related to the height of the texture + /* 48 */ Vec2us mUnk_48; + /* 4C */ unk32 mUnk_4C; + /* 50 */ unk32 mUnk_50; + /* 54 */ unk32 mUnk_54; + /* 58 */ unk32 mUnk_58; // another timer? + /* 5C */ Vec2us mUnk_5C; // position of the animated texture + /* 60 */ unk32 mUnk_60; + /* 64 */ unk32 mUnk_64; + /* 68 */ unk32 mUnk_68; + /* 6C */ unk16 mUnk_6C; + /* 6E */ bool mUnk_6E; + /* 6F */ unk8 mUnk_6F; + /* 70 */ unk32 mUnk_70; + /* 74 */ unk16 mUnk_74; + /* 76 */ unk16 mUnk_76; + /* 78 */ + + UnkSubStruct19(); + + void func_ov000_0206082c(unk32 param1, unk32 param2); + void func_ov000_02060950(); + void func_ov000_020609b0(); + void func_ov000_020609c4(void); + void func_ov000_02060a98(); + void func_ov000_02060ad0(); + unk32 func_ov000_02060af8(void); + void func_ov000_02060b50(); + void func_ov000_02060b64(void); +}; diff --git a/include/Unknown/UnkStruct_02049be0.hpp b/include/Unknown/UnkStruct_02049be0.hpp new file mode 100644 index 00000000..a74dd677 --- /dev/null +++ b/include/Unknown/UnkStruct_02049be0.hpp @@ -0,0 +1,16 @@ +#pragma once + +#include "global.h" +#include "types.h" + +class UnkStruct_02049be0 { +public: + /* 00 */ unk32 mUnk_00; + + UnkStruct_02049be0(); + ~UnkStruct_02049be0(); + + char *func_02014ff4(); +}; + +extern UnkStruct_02049be0 data_02049be0; diff --git a/include/Unknown/UnkStruct_0204a060.hpp b/include/Unknown/UnkStruct_0204a060.hpp index 331e9607..f2593dfb 100644 --- a/include/Unknown/UnkStruct_0204a060.hpp +++ b/include/Unknown/UnkStruct_0204a060.hpp @@ -1,8 +1,8 @@ #pragma once -#include "FileSelect/Common.hpp" #include "Game/GameModeManager.hpp" #include "System/SysNew.hpp" +#include "Unknown/Common.hpp" #include "Unknown/UnkStruct_ov000_02067bc4.hpp" #include "types.h" diff --git a/include/Unknown/UnkStruct_0204a088.hpp b/include/Unknown/UnkStruct_0204a088.hpp index f15ce8cb..1d2bd666 100644 --- a/include/Unknown/UnkStruct_0204a088.hpp +++ b/include/Unknown/UnkStruct_0204a088.hpp @@ -15,10 +15,12 @@ class UnkStruct_0204a088_Base : public SysObject { class UnkStruct_0204a088 : public UnkStruct_0204a088_Base { public: - /* 00 */ unk32 mUnk_00; - /* 00 */ unk32 mUnk_04; - /* 00 */ unk32 mUnk_08; - /* 0C */ FileSelectManager_UnkDrawBase mUnk_0C[23]; + /* 000 */ unk32 mUnk_00; + /* 000 */ unk32 mUnk_04; + /* 000 */ unk32 mUnk_08; + /* 00C */ FileSelectManager_UnkDrawBase mUnk_0C[23]; + /* 120 */ u16 mUnk_120; + /* 122 */ unk16 mUnk_122; void func_ov000_02061098(void); void func_ov000_020611dc(void *param1, unk32 param2); diff --git a/include/Unknown/UnkStruct_0204a110.hpp b/include/Unknown/UnkStruct_0204a110.hpp index 9ea4846b..bc973c6e 100644 --- a/include/Unknown/UnkStruct_0204a110.hpp +++ b/include/Unknown/UnkStruct_0204a110.hpp @@ -193,10 +193,7 @@ class UnkStruct_0204a110 { /* DF2 */ unk8 mUnk_DF2; /* DF3 */ unk8 mUnk_DF3; /* DF4 */ unk32 mUnk_DF4; - /* DF8 */ unk8 mUnk_DF8; - /* DF9 */ unk8 mUnk_DF9; - /* DFA */ unk8 mUnk_DFA; - /* DFB */ unk8 mUnk_DFB; + /* DF8 */ unk32 mUnk_DF8; /* DFC */ unk8 mUnk_DFC; /* DFD */ unk8 mUnk_DFD; /* DFE */ unk8 mUnk_DFE; diff --git a/include/Unknown/UnkStruct_0204aeac.hpp b/include/Unknown/UnkStruct_0204aeac.hpp new file mode 100644 index 00000000..73aee95c --- /dev/null +++ b/include/Unknown/UnkStruct_0204aeac.hpp @@ -0,0 +1,17 @@ +#pragma once + +#include "global.h" +#include "types.h" + +class UnkStruct_0204aeac { +public: + /* 00 */ unk32 mUnk_00; + + UnkStruct_0204aeac(); + ~UnkStruct_0204aeac(); + void func_0201c494(unk32 param1); + void func_0201c4d8(unk32 param1, unk32 param2, unk32 param3); + void func_0201c504(unk32 param1, unk32 param2, unk32 param3, unk32 param4); +}; + +extern UnkStruct_0204aeac data_0204aeac; diff --git a/include/Unknown/UnkStruct_027e0954.hpp b/include/Unknown/UnkStruct_027e0954.hpp new file mode 100644 index 00000000..0d65c0a9 --- /dev/null +++ b/include/Unknown/UnkStruct_027e0954.hpp @@ -0,0 +1,20 @@ +#pragma once + +#include "Game/GameModeManager.hpp" +#include "global.h" +#include "types.h" + +class UnkStruct_027e0954 { +public: + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0C */ unk32 mUnk_0C; + /* 10 */ unk32 mUnk_10; + /* 14 */ GameModeManagerBase_104_04 mUnk_14; + + UnkStruct_027e0954(); + ~UnkStruct_027e0954(); +}; + +extern UnkStruct_027e0954 *data_027e0954; diff --git a/include/Unknown/UnkStruct_027e09a4.hpp b/include/Unknown/UnkStruct_027e09a4.hpp index 01d70ddd..70b43701 100644 --- a/include/Unknown/UnkStruct_027e09a4.hpp +++ b/include/Unknown/UnkStruct_027e09a4.hpp @@ -1,12 +1,27 @@ #pragma once +#include "System/SysNew.hpp" #include "types.h" -class UnkStruct_027e09a4 { +class UnkStruct_027e09a4 : public SysObject { public: /* 00 */ unk32 mUnk_00; + ~UnkStruct_027e09a4(); + unk8 func_ov000_02070bd0(unk32, unk32); + void func_ov000_020707a8(void *param1); + void func_ov000_02070834(void *param1); + void func_ov000_0207087c(unk32 param1); + void func_ov000_020708d8(unk32 param1); + void func_ov000_02070938(unk32 param1); + void func_ov000_02070a4c(unk32 param1); + + void func_ov017_020bb994(void *param1); + void func_ov017_020bb994(unk32 param1); + void func_ov017_020bb994(void *, void *); + + static void func_ov025_020c4a60(); }; extern UnkStruct_027e09a4 *data_027e09a4; diff --git a/include/Unknown/UnkStruct_ov000_020b5214.hpp b/include/Unknown/UnkStruct_ov000_020b5214.hpp index 25ac79a4..972f6bf3 100644 --- a/include/Unknown/UnkStruct_ov000_020b5214.hpp +++ b/include/Unknown/UnkStruct_ov000_020b5214.hpp @@ -45,8 +45,9 @@ class UnkStruct_ov000_020b5214 { UnkStruct_ov000_020b5214(); - void func_ov000_0206db44(unk32 param1); void func_ov000_0206d6b4(unk32 param1, unk32 param2); + void func_ov000_0206d83c(unk32 param1); + void func_ov000_0206db44(unk32 param1); }; extern UnkStruct_ov000_020b5214 data_ov000_020b5214; diff --git a/include/nitro/button.h b/include/nitro/button.h new file mode 100644 index 00000000..64a2a545 --- /dev/null +++ b/include/nitro/button.h @@ -0,0 +1,14 @@ +#pragma once + +#define BTN_A (1 << 0) // 0x0001 +#define BTN_B (1 << 1) // 0x0002 +#define BTN_SELECT (1 << 2) // 0x0004 +#define BTN_START (1 << 3) // 0x0008 +#define BTN_DRIGHT (1 << 4) // 0x0010 +#define BTN_DLEFT (1 << 5) // 0x0020 +#define BTN_DUP (1 << 6) // 0x0040 +#define BTN_DDOWN (1 << 7) // 0x0080 +#define BTN_R (1 << 8) // 0x0100 +#define BTN_L (1 << 9) // 0x0200 + +#define CHECK_BUTTON_COMBO(value, btn) ((value) & (btn)) diff --git a/include/regs.h b/include/regs.h index 308e71cb..8371513e 100644 --- a/include/regs.h +++ b/include/regs.h @@ -31,4 +31,6 @@ #define REG_WININ_SUB REG_HALFWORD(ARM9_IO_BASE | 0x00001048) #define REG_WINOUT_SUB REG_HALFWORD(ARM9_IO_BASE | 0x0000104A) +#define REG_BG3CNT_SUB REG_HALFWORD(ARM9_IO_BASE | 0x0000100E) + #define SHARED_WORK_C3C REG_WORD(SHARED_WORK_BASE | 0xC3C) diff --git a/include/types.h b/include/types.h index 9cef9e59..79979146 100644 --- a/include/types.h +++ b/include/types.h @@ -23,30 +23,32 @@ typedef s32 unk32; #define CEIL_DIV(a, b) (((a) + (b) - 1) / (b)) #ifdef __cplusplus -template struct PTMF { - typedef void (T::*PTMFCallback)(); - - PTMFCallback callback; - - #define CALL_PTMF(cls, data, ...) \ + #define DECL_PTMF(name, ...) \ + template struct name { \ + typedef void (T::*PTMFCallback)(__VA_ARGS__); \ + \ + PTMFCallback callback; \ + }; + + #define CALL_PTMF(type, data, ...) \ { \ - PTMF &ptr = (data); \ + type &ptr = (data); \ (this->*ptr.callback)(__VA_ARGS__); \ } - #define STATIC_CALL_PTMF(cls, data, thisx, ...) \ - { \ - PTMF &ptr = (data); \ - ((thisx)->*ptr.callback)(__VA_ARGS__); \ + #define STATIC_CALL_PTMF(type, data, thisx, ...) \ + { \ + type &ptr = (data); \ + ((thisx)->*ptr.callback)(__VA_ARGS__); \ } - #define STATIC_PTMFCALLBACK(cls, data, thisx, ...) \ - { \ - PTMF::PTMFCallback &ptr = (data); \ - ((thisx)->*ptr)(__VA_ARGS__); \ + #define STATIC_PTMFCALLBACK(type, data, thisx, ...) \ + { \ + type::PTMFCallback &ptr = (data); \ + ((thisx)->*ptr)(__VA_ARGS__); \ } -}; +DECL_PTMF(PTMF); typedef void (*UnkCallback)(u16 param1); #endif diff --git a/src/019_MainSelect/019_SaveManager.cpp b/src/019_MainSelect/019_SaveManager.cpp index aa2bac65..0b7fca79 100644 --- a/src/019_MainSelect/019_SaveManager.cpp +++ b/src/019_MainSelect/019_SaveManager.cpp @@ -29,7 +29,7 @@ const unk32 data_ov019_020d1be8[] = { ARM void SaveManager::func_ov019_020d086c(u16 param1) { func_02030d48(gSaveManager.mUnk_204); - STATIC_PTMFCALLBACK(SaveFile, gSaveManager.mUnk_23C, gSaveManager.mpSaveFile); + STATIC_PTMFCALLBACK(PTMF, gSaveManager.mUnk_23C, gSaveManager.mpSaveFile); gSaveManager.mUnk_20C = func_02030cfc(); func_02030d58(gSaveManager.mUnk_204); diff --git a/src/019_MainSelect/019_UnkSubStruct9.cpp b/src/019_MainSelect/019_UnkSubStruct9.cpp index 9ca54f3c..d8fdc765 100644 --- a/src/019_MainSelect/019_UnkSubStruct9.cpp +++ b/src/019_MainSelect/019_UnkSubStruct9.cpp @@ -5,12 +5,7 @@ extern "C" { void func_020166cc(void *param1, void *param2); - void func_ov000_02062e44(void *param1, void *param2); - -//! TODO: conflict between UnkStructSub4, UnkStructSub4_2 and UnkStructSub19 -unk32 func_ov000_020609c4(void *thisx); -void func_ov000_0206082c(void *thisx, unk32 param1, unk32 param2); }; // non-matching @@ -19,75 +14,75 @@ ARM UnkSubStruct9::UnkSubStruct9(stack_struct1 param1) : mUnk_064(0x89, 1), mUnk_29C(0x89, UnkStruct_ov019_020d1e70::data_ov019_020d1e4c.mUnk_04[param1.param2]), mUnk_2B4(0x89, 0x15) { - this->mUnk_2CC.mUnk_6E = 1; - this->mUnk_2CC.mUnk_70 = 0; - this->mUnk_2CC.mUnk_5C = 0; - this->mUnk_2CC.mUnk_5E = 0; - this->mUnk_2CC.mUnk_74 = 0; - func_ov000_0206082c(&this->mUnk_2CC, 0x89, 0x00); - - this->mUnk_344.mUnk_6E = 1; - this->mUnk_344.mUnk_70 = 0; - this->mUnk_344.mUnk_5C = 0; - this->mUnk_344.mUnk_5E = 0; - this->mUnk_344.mUnk_74 = 0; - func_ov000_0206082c(&this->mUnk_344, 0x89, 0x03); - - this->mUnk_3BC.mUnk_6E = 1; - this->mUnk_3BC.mUnk_70 = 0; - this->mUnk_3BC.mUnk_5C = 0; - this->mUnk_3BC.mUnk_5E = 0; - this->mUnk_3BC.mUnk_74 = 0; - func_ov000_0206082c(&this->mUnk_3BC, 0x89, 0x02); - - this->mUnk_434.mUnk_6E = 1; - this->mUnk_434.mUnk_70 = 0; - this->mUnk_434.mUnk_5C = 0; - this->mUnk_434.mUnk_5E = 0; - this->mUnk_434.mUnk_74 = 0; - func_ov000_0206082c(&this->mUnk_434, 0x89, 0x01); - - this->mUnk_4AC.mUnk_6E = 1; - this->mUnk_4AC.mUnk_70 = 0; - this->mUnk_4AC.mUnk_5C = 0; - this->mUnk_4AC.mUnk_5E = 0; - this->mUnk_4AC.mUnk_74 = 0; - func_ov000_0206082c(&this->mUnk_4AC, 0x89, 0x04); - - this->mUnk_524.mUnk_6E = 1; - this->mUnk_524.mUnk_70 = 0; - this->mUnk_524.mUnk_5C = 0; - this->mUnk_524.mUnk_5E = 0; - this->mUnk_524.mUnk_74 = 0; - func_ov000_0206082c(&this->mUnk_524, 0x89, 0x05); - - this->mUnk_59C.mUnk_6E = 1; - this->mUnk_59C.mUnk_70 = 0; - this->mUnk_59C.mUnk_5C = 0; - this->mUnk_59C.mUnk_5E = 0; - this->mUnk_59C.mUnk_74 = 0; - func_ov000_0206082c(&this->mUnk_59C, 0x89, 0x06); - - this->mUnk_614.mUnk_6E = 1; - this->mUnk_614.mUnk_70 = 0; - this->mUnk_614.mUnk_5C = 0; - this->mUnk_614.mUnk_5E = 0; - this->mUnk_614.mUnk_74 = 0; - func_ov000_0206082c(&this->mUnk_614, 0x89, 0x07); - - this->mUnk_68C.mUnk_6E = 1; - this->mUnk_68C.mUnk_70 = 0; - this->mUnk_68C.mUnk_5C = 0; - this->mUnk_68C.mUnk_5E = 0; - this->mUnk_68C.mUnk_74 = 0; - func_ov000_0206082c(&this->mUnk_68C, 0x89, 0x08); - - this->mUnk_704.mUnk_6E = 1; - this->mUnk_704.mUnk_70 = 0; - this->mUnk_704.mUnk_5C = 0; - this->mUnk_704.mUnk_5E = 0; - this->mUnk_704.mUnk_74 = 0; - func_ov000_0206082c(&this->mUnk_704, 0x89, 0x09); + this->mUnk_2CC.mUnk_6E = true; + this->mUnk_2CC.mUnk_70 = 0; + this->mUnk_2CC.mUnk_5C.x = 0; + this->mUnk_2CC.mUnk_5C.y = 0; + this->mUnk_2CC.mUnk_74 = 0; + this->mUnk_2CC.func_ov000_0206082c(0x89, 0x00); + + this->mUnk_344.mUnk_6E = true; + this->mUnk_344.mUnk_70 = 0; + this->mUnk_344.mUnk_5C.x = 0; + this->mUnk_344.mUnk_5C.y = 0; + this->mUnk_344.mUnk_74 = 0; + this->mUnk_344.func_ov000_0206082c(0x89, 0x03); + + this->mUnk_3BC.mUnk_6E = true; + this->mUnk_3BC.mUnk_70 = 0; + this->mUnk_3BC.mUnk_5C.x = 0; + this->mUnk_3BC.mUnk_5C.y = 0; + this->mUnk_3BC.mUnk_74 = 0; + this->mUnk_3BC.func_ov000_0206082c(0x89, 0x02); + + this->mUnk_434.mUnk_6E = true; + this->mUnk_434.mUnk_70 = 0; + this->mUnk_434.mUnk_5C.x = 0; + this->mUnk_434.mUnk_5C.y = 0; + this->mUnk_434.mUnk_74 = 0; + this->mUnk_434.func_ov000_0206082c(0x89, 0x01); + + this->mUnk_4AC.mUnk_6E = true; + this->mUnk_4AC.mUnk_70 = 0; + this->mUnk_4AC.mUnk_5C.x = 0; + this->mUnk_4AC.mUnk_5C.y = 0; + this->mUnk_4AC.mUnk_74 = 0; + this->mUnk_4AC.func_ov000_0206082c(0x89, 0x04); + + this->mUnk_524.mUnk_6E = true; + this->mUnk_524.mUnk_70 = 0; + this->mUnk_524.mUnk_5C.x = 0; + this->mUnk_524.mUnk_5C.y = 0; + this->mUnk_524.mUnk_74 = 0; + this->mUnk_524.func_ov000_0206082c(0x89, 0x05); + + this->mUnk_59C.mUnk_6E = true; + this->mUnk_59C.mUnk_70 = 0; + this->mUnk_59C.mUnk_5C.x = 0; + this->mUnk_59C.mUnk_5C.y = 0; + this->mUnk_59C.mUnk_74 = 0; + this->mUnk_59C.func_ov000_0206082c(0x89, 0x06); + + this->mUnk_614.mUnk_6E = true; + this->mUnk_614.mUnk_70 = 0; + this->mUnk_614.mUnk_5C.x = 0; + this->mUnk_614.mUnk_5C.y = 0; + this->mUnk_614.mUnk_74 = 0; + this->mUnk_614.func_ov000_0206082c(0x89, 0x07); + + this->mUnk_68C.mUnk_6E = true; + this->mUnk_68C.mUnk_70 = 0; + this->mUnk_68C.mUnk_5C.x = 0; + this->mUnk_68C.mUnk_5C.y = 0; + this->mUnk_68C.mUnk_74 = 0; + this->mUnk_68C.func_ov000_0206082c(0x89, 0x08); + + this->mUnk_704.mUnk_6E = true; + this->mUnk_704.mUnk_70 = 0; + this->mUnk_704.mUnk_5C.x = 0; + this->mUnk_704.mUnk_5C.y = 0; + this->mUnk_704.mUnk_74 = 0; + this->mUnk_704.func_ov000_0206082c(0x89, 0x09); if (this->mSaveSlotIndex == 0) { this->mUnk_004.func_ov000_020633c0(0x40, 0x89, 0x02, 0x1F, 0x89, 0x00); @@ -131,16 +126,16 @@ ARM void UnkSubStruct9::func_ov019_020cbb40() { } ARM void UnkSubStruct9::func_ov019_020cbb94() { - func_ov000_020609c4(&this->mUnk_2CC); - func_ov000_020609c4(&this->mUnk_344); - func_ov000_020609c4(&this->mUnk_3BC); - func_ov000_020609c4(&this->mUnk_434); - func_ov000_020609c4(&this->mUnk_4AC); - func_ov000_020609c4(&this->mUnk_524); - func_ov000_020609c4(&this->mUnk_59C); - func_ov000_020609c4(&this->mUnk_614); - func_ov000_020609c4(&this->mUnk_68C); - func_ov000_020609c4(&this->mUnk_704); + this->mUnk_2CC.func_ov000_020609c4(); + this->mUnk_344.func_ov000_020609c4(); + this->mUnk_3BC.func_ov000_020609c4(); + this->mUnk_434.func_ov000_020609c4(); + this->mUnk_4AC.func_ov000_020609c4(); + this->mUnk_524.func_ov000_020609c4(); + this->mUnk_59C.func_ov000_020609c4(); + this->mUnk_614.func_ov000_020609c4(); + this->mUnk_68C.func_ov000_020609c4(); + this->mUnk_704.func_ov000_020609c4(); } struct struct_auStack_c0 { diff --git a/src/019_MainSelect/FileSelectMain.cpp b/src/019_MainSelect/FileSelectMain.cpp index f17153ae..0e5d3b40 100644 --- a/src/019_MainSelect/FileSelectMain.cpp +++ b/src/019_MainSelect/FileSelectMain.cpp @@ -13,13 +13,7 @@ extern "C" { void func_020249d4(void *pReg, unk32 param1, unk32 param2, unk32 param3, unk32 param4); - void func_ov000_02062e44(void *param1, void *param2); - -//! TODO: conflict between UnkStructSub4, UnkStructSub4_2 and UnkStructSub19 -unk32 func_ov000_020609c4(void *thisx); -unk32 func_ov000_02060af8(void *thisx); -void func_ov000_0206082c(void *thisx, unk32 param1, unk32 param2); }; class UnkStruct_ov019_020d24c0 { @@ -240,7 +234,7 @@ ARM void FileSelectMain::func_ov019_020c6d08() {} ARM void FileSelectMain::func_ov019_020c6d0c() {} ARM void FileSelectMain::func_ov019_020c6d10() { - CALL_PTMF(FileSelectMain, data_ov019_020d1edc[this->mState]); + CALL_PTMF(PTMF, data_ov019_020d1edc[this->mState]); } // https://decomp.me/scratch/EuA67 @@ -723,8 +717,8 @@ ARM void FileSelectMain::func_ov019_020c77b8() { this->func_ov019_020c6c54(); this->func_ov019_020c6ca0(); this->func_ov019_020c757c(); - func_ov000_0206082c(&this->mUnk_1144, 0x8B, 0); - func_ov000_0206082c(&this->mUnk_155C, 0x8B, 2); + this->mUnk_1144.func_ov000_0206082c(0x8B, 0); + this->mUnk_155C.func_ov000_0206082c(0x8B, 2); } ARM void FileSelectMain::func_ov019_020c7804() { @@ -758,9 +752,9 @@ ARM void FileSelectMain::func_ov019_020c7878() { ARM void FileSelectMain::func_ov019_020c78ac() { if (this->mExitMode == FileSelectExitMode_AdventureMode) { - func_ov000_0206082c(&this->mUnk_1144, 0x8B, 1); + this->mUnk_1144.func_ov000_0206082c(0x8B, 1); } else if (this->mExitMode == FileSelectExitMode_BattleMode) { - func_ov000_0206082c(&this->mUnk_155C, 0x8B, 3); + this->mUnk_155C.func_ov000_0206082c(0x8B, 3); } this->mUnk_0DA4.mUnk_2A = false; @@ -1126,7 +1120,7 @@ ARM void FileSelectMain::vfunc_08() { this->GetUnk03E0(i).func_ov019_020cbb94(); } - CALL_PTMF(FileSelectMain, data_ov019_020d1f94[this->mState]); + CALL_PTMF(PTMF, data_ov019_020d1f94[this->mState]); this->mUnk_002C.UnkOperations(NULL, false); REG_BLDALPHA = this->mUnk_002C.func_0201eaa0() | 0x1000; } @@ -1286,8 +1280,8 @@ ARM void FileSelectMain::func_ov019_020c92dc() { this->mUnk_18A8.UnkOperations(&this->mUnk_15D4.mPos, true); this->mUnk_1BC0.UnkOperations(&this->mUnk_18EC.mPos, true); - func_ov000_020609c4(&this->mUnk_1144); - func_ov000_020609c4(&this->mUnk_155C); + this->mUnk_1144.func_ov000_020609c4(); + this->mUnk_155C.func_ov000_020609c4(); } ARM void FileSelectMain::func_ov019_020c9b28() { @@ -1327,8 +1321,8 @@ ARM void FileSelectMain::func_ov019_020c9c18() { } ARM void FileSelectMain::func_ov019_020c9c70() { - func_ov000_020609c4(&this->mUnk_1144); - func_ov000_020609c4(&this->mUnk_155C); + this->mUnk_1144.func_ov000_020609c4(); + this->mUnk_155C.func_ov000_020609c4(); switch (data_0204a110.func_01ff9b50()) { case 0x46: @@ -1360,18 +1354,18 @@ ARM void FileSelectMain::func_ov019_020c9c70() { } ARM void FileSelectMain::func_ov019_020c9d88() { - func_ov000_020609c4(&this->mUnk_1144); - func_ov000_020609c4(&this->mUnk_155C); + this->mUnk_1144.func_ov000_020609c4(); + this->mUnk_155C.func_ov000_020609c4(); if (this->mExitMode == FileSelectExitMode_AdventureMode) { - if (func_ov000_02060af8(&this->mUnk_1144) != 0) { + if (this->mUnk_1144.func_ov000_02060af8() != 0) { this->SetState(FileSelectState_EnterGameMode); return; } } if (this->mExitMode == FileSelectExitMode_BattleMode) { - if (func_ov000_02060af8(&this->mUnk_155C) != 0) { + if (this->mUnk_155C.func_ov000_02060af8() != 0) { this->SetState(FileSelectState_EnterGameMode); return; } @@ -1402,8 +1396,8 @@ ARM void FileSelectMain::func_ov019_020c9e08() { this->mUnk_18A8.UnkOperations(&this->mUnk_15D4.mPos, true); this->mUnk_1BC0.UnkOperations(&this->mUnk_18EC.mPos, true); - func_ov000_020609c4(&this->mUnk_1144); - func_ov000_020609c4(&this->mUnk_155C); + this->mUnk_1144.func_ov000_020609c4(); + this->mUnk_155C.func_ov000_020609c4(); if (this->mExitMode == FileSelectExitMode_AdventureMode && this->mUnk_00BC.mUnk_0C) { data_02049a2c.GetUnk00_FileSelect()->LoadAdventureMode(this->mSaveSlotIndex); @@ -1489,8 +1483,8 @@ ARM void FileSelectMain::func_ov019_020ca940() { this->mUnk_18A8.UnkOperations(&this->mUnk_15D4.mPos, true); this->mUnk_1BC0.UnkOperations(&this->mUnk_18EC.mPos, true); - func_ov000_020609c4(&this->mUnk_1144); - func_ov000_020609c4(&this->mUnk_155C); + this->mUnk_1144.func_ov000_020609c4(); + this->mUnk_155C.func_ov000_020609c4(); } ARM void FileSelectMain::func_ov019_020cb180() { @@ -1525,8 +1519,8 @@ ARM void FileSelectMain::func_ov019_020cb268() {} ARM void FileSelectMain::func_ov019_020cb26c() {} -ARM void FileSelectMain::vfunc_10() { - CALL_PTMF(FileSelectMain, data_ov019_020d204c[this->mState]); +ARM void FileSelectMain::vfunc_10(unk8 *param1) { + CALL_PTMF(PTMF, data_ov019_020d204c[this->mState]); } ARM void FileSelectMain::func_ov019_020cb2a8() { diff --git a/src/019_MainSelect/FileSelectManager.cpp b/src/019_MainSelect/FileSelectManager.cpp index 1b3ee5fb..f8e3562e 100644 --- a/src/019_MainSelect/FileSelectManager.cpp +++ b/src/019_MainSelect/FileSelectManager.cpp @@ -34,7 +34,7 @@ ARM FileSelectManager::~FileSelectManager() { ARM void FileSelectManager::vfunc_10(unk32 param1, unk32 param2, unk32 param3) { void *unkPtr; - this->mUnk_004.func_0201c00c(0x25, 1, param3); + this->mUnk_004.func_0201c00c(0x25, 1); FileSelectMain *newSub3 = new(HeapIndex_1) FileSelectMain(); unkPtr = newSub3; diff --git a/src/019_MainSelect/FileSelectMicTest.cpp b/src/019_MainSelect/FileSelectMicTest.cpp index e9ac4325..a295d835 100644 --- a/src/019_MainSelect/FileSelectMicTest.cpp +++ b/src/019_MainSelect/FileSelectMicTest.cpp @@ -84,7 +84,7 @@ ARM void FileSelectMicTest::func_ov019_020cea6c() {} ARM void FileSelectMicTest::func_ov019_020cea70() {} ARM void FileSelectMicTest::func_ov019_020cea74() { - CALL_PTMF(FileSelectMicTest, data_ov019_020d225c[this->mState]); + CALL_PTMF(PTMF, data_ov019_020d225c[this->mState]); } // non-matching @@ -177,7 +177,7 @@ ARM void FileSelectMicTest::vfunc_08() { data_ov000_020b51b8.func_ov000_0206c608(8, 0, 0x1000); } -ARM void FileSelectMicTest::vfunc_10() { +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); this->mUnk_020.func_0201f4b4(0); @@ -189,7 +189,7 @@ ARM void FileSelectMicTest::vfunc_10() { extern u8 data_ov000_020b5340[]; // bool? -ARM void FileSelectMicTest::vfunc_14() { +ARM void FileSelectMicTest::vfunc_14(unk8 *param1) { if (this->mUnk_630 != 0) { if (data_ov000_020b5340[5] == 0) { this->mUnk_630 = 0; diff --git a/src/019_MainSelect/FileSelectOptions.cpp b/src/019_MainSelect/FileSelectOptions.cpp index 93626a40..4ded010d 100644 --- a/src/019_MainSelect/FileSelectOptions.cpp +++ b/src/019_MainSelect/FileSelectOptions.cpp @@ -12,8 +12,6 @@ extern "C" { void func_ov000_02062e44(void *param1, void *param2); - -//! TODO: conflict between UnkStructSub4, UnkStructSub4_2 and UnkStructSub19 void func_ov000_020623d8(void *param1, unk32 param2); }; @@ -211,14 +209,14 @@ ARM FileSelectOptions::~FileSelectOptions() { } ARM void FileSelectOptions::func_ov019_020ccd40() { - CALL_PTMF(FileSelectOptions, data_ov019_020d21c0[this->mState]); + CALL_PTMF(PTMF, data_ov019_020d21c0[this->mState]); } ARM void FileSelectOptions::vfunc_08() { - CALL_PTMF(FileSelectOptions, data_ov019_020d2188[this->mState]); + CALL_PTMF(PTMF, data_ov019_020d2188[this->mState]); } -ARM void FileSelectOptions::vfunc_10() { +ARM void FileSelectOptions::vfunc_10(unk8 *param1) { this->mUnk_0024.func_ov019_020ce4dc(); this->mUnk_1108.func_ov000_02062f30(); this->mUnk_1794.func_ov000_02062f30(); @@ -404,7 +402,8 @@ ARM void FileSelectOptions::func_ov019_020cd41c() { local_40.x = local_34.mPos.x + UnkStruct_ov019_020d2170::data_ov019_020d215c.mUnk_00.x; local_40.y = local_34.mPos.y + UnkStruct_ov019_020d2170::data_ov019_020d215c.mUnk_00.y; - local_3c = local_34.mPos; + local_3c.x = local_34.mPos.x; + local_3c.y = local_34.mPos.y; this->mUnk_1064.func_0201e874(0x0C, &local_3c, &local_40, 0); this->mUnk_1064.mUnk_0A = true; this->mUnk_1064.mUnk_0C = false; @@ -451,7 +450,8 @@ ARM void FileSelectOptions::func_ov019_020cd614() { local_38.x = local_30.mPos.x + UnkStruct_ov019_020d2170::data_ov019_020d215c.mUnk_00.x; local_38.y = local_30.mPos.y + UnkStruct_ov019_020d2170::data_ov019_020d215c.mUnk_00.y; - local_3c = local_30.mPos; + 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.mUnk_0A = true; diff --git a/src/019_MainSelect/FileSelectSubScreen.cpp b/src/019_MainSelect/FileSelectSubScreen.cpp index 78214d6b..fade6901 100644 --- a/src/019_MainSelect/FileSelectSubScreen.cpp +++ b/src/019_MainSelect/FileSelectSubScreen.cpp @@ -9,10 +9,6 @@ void func_0200a7b0(unk32 param1, const char *param2, const char *param3, const c unk32 param7, unk32 param8); void func_020249d4(void *pReg, unk32 param1, unk32 param2, unk32 param3, unk32 param4); void func_020275e8(); - -//! TODO: conflict between UnkStructSub4, UnkStructSub4_2 and UnkStructSub19 -unk32 func_ov000_020609c4(void *thisx); -unk32 func_ov000_02060af8(void *thisx); }; #pragma dont_reuse_strings off @@ -171,7 +167,7 @@ ARM void FileSelectSubScreen::func_ov019_020cf73c(unk32 param1, unk32 param2) { } } -ARM void FileSelectSubScreen::vfunc_10() { +ARM void FileSelectSubScreen::vfunc_10(unk8 *param1) { this->mUnk_002C.vfunc_04(); } @@ -182,11 +178,11 @@ ARM void FileSelect_UnkClass7::vfunc_00() { int i; for (i = 0; i < 0x1E; i++) { - UnkStructSub4 *pVar6 = &this->mUnk_0004[i]; + UnkSubStruct19 *pVar6 = &this->mUnk_0004[i]; - func_ov000_020609c4(pVar6); + pVar6->func_ov000_020609c4(); - if (func_ov000_02060af8(pVar6) != 0) { + if (pVar6->func_ov000_02060af8() != 0) { pVar6->func_ov000_02060b64(); this->mUnk_0E14[i].one = (u16) gRandom.Next(0, 256); this->mUnk_0E14[i].two = (u16) gRandom.Next(0, 192); diff --git a/src/025_Title/GameModeTitleScreen.cpp b/src/025_Title/GameModeTitleScreen.cpp new file mode 100644 index 00000000..1d01eb69 --- /dev/null +++ b/src/025_Title/GameModeTitleScreen.cpp @@ -0,0 +1,109 @@ +#include "Game/GameModeTitleScreen.hpp" +#include "TitleScreen/TitleScreen.hpp" +#include "Unknown/UnkStruct_02049a2c.hpp" +#include "Unknown/UnkStruct_0204a088.hpp" +#include "Unknown/UnkStruct_0204a110.hpp" +#include "Unknown/UnkStruct_027e09a4.hpp" + +struct UnkStruct_ov000_020a782c { + /* 00 */ unk32 mUnk_00; + /* 04 */ u8 mUnk_04; + /* 05 */ u8 mUnk_05; + /* 06 */ u8 mUnk_06; + /* 07 */ u8 mUnk_07; +}; + +extern "C" { +void func_0201659c(); +void func_0200e234(); +void func_ov001_020b6520(unk32 param1); +UnkStruct_ov000_020a782c *func_ov000_020a782c(unk32 param1); +} + +const unk16 data_ov025_020c5a0c[] = {0x0016, 0x003C}; + +ARM GameModeTitleScreen::GameModeTitleScreen() { + func_0201659c(); + data_02049a2c.func_02013370(2); + data_0204a110.func_ov001_020bd514(0, TitleScreenManager::Create, 0, 1); + func_ov001_020b6520(2); +} + +ARM GameModeTitleScreen::~GameModeTitleScreen() { + UnkStruct_027e09a4::func_ov025_020c4a60(); + func_0200e234(); +} + +struct stack_struct { + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ unk16 mUnk_08; + /* 0A */ unk8 mUnk_0A; + /* 0B */ unk8 mUnk_0B; + /* 0C */ unk8 mUnk_0C; + /* 0D */ unk8 mUnk_0D; + /* 0E */ unk8 mUnk_0E; + /* 0F */ unk8 mmUnk_0F; + /* 10 */ unk8 mUnk_10; + /* 11 */ unk8 mUnk_11; + /* 12 */ unk8 mUnk_12; + /* 13 */ unk8 mUnk_13; + /* 14 */ +}; + +ARM void GameModeTitleScreen::vfunc_08(unk32 param1, unk32 param2, unk32 param3) { + this->GameModeBase::vfunc_08(param1, param2, param3); + + UnkStruct_ov000_020a782c *iVar1 = func_ov000_020a782c(0); + u8 mUnk_04 = iVar1->mUnk_04; + u8 mUnk_07 = iVar1->mUnk_07; + u8 mUnk_06 = iVar1->mUnk_06; + u8 mUnk_05 = iVar1->mUnk_05; + + stack_struct stack; + stack.mUnk_00 = mUnk_04; + stack.mUnk_04 = 0; + stack.mUnk_08 = 0; + stack.mUnk_0A = mUnk_05; + stack.mUnk_0B = mUnk_06; + stack.mUnk_0C = 1; + stack.mUnk_0D = 0; + stack.mUnk_0E = mUnk_07; + stack.mmUnk_0F = 0; + stack.mUnk_10 = 0; + + data_027e09a4->func_ov000_020707a8(&stack); +} + +ARM void GameModeTitleScreen::vfunc_0C() { + data_027e09a4->func_ov000_0207087c(data_0204a110.mUnk_DF8); +} + +ARM void GameModeTitleScreen::vfunc_10() { + data_027e09a4->func_ov000_020708d8(data_0204a110.mUnk_DF8); +} + +ARM void GameModeTitleScreen::vfunc_14() { + data_027e09a4->func_ov000_02070834(&data_0204a110.mUnk_DF2); +} + +ARM void GameModeTitleScreen::vfunc_18() { + data_027e09a4->func_ov000_02070938(data_0204a110.mUnk_DF8); +} + +ARM void GameModeTitleScreen::vfunc_1C() { + data_027e09a4->func_ov000_02070a4c(data_0204a110.mUnk_DF8); +} + +ARM void GameModeTitleScreen::vfunc_20() { + UnkStruct_027e09a4 *ptr4 = data_027e09a4; + void *ptr = &data_0204a110.mUnk_DF2; + + if ((data_0204a088->mUnk_120 & 1) != 0) { + ptr4->func_ov017_020bb994(ptr); + } +} + +ARM void UnkStruct_027e09a4::func_ov025_020c4a60() { + delete data_027e09a4; +} diff --git a/src/025_Title/TitleScreen.cpp b/src/025_Title/TitleScreen.cpp new file mode 100644 index 00000000..e2d08f1d --- /dev/null +++ b/src/025_Title/TitleScreen.cpp @@ -0,0 +1,503 @@ +#include "TitleScreen/TitleScreen.hpp" +#include "Unknown/UnkStruct_02049be0.hpp" +#include "Unknown/UnkStruct_0204a060.hpp" +#include "Unknown/UnkStruct_0204aeac.hpp" +#include "Unknown/UnkStruct_0204af1c.hpp" +#include "Unknown/UnkStruct_027e0954.hpp" +#include "Unknown/UnkStruct_ov000_020b5214.hpp" +#include "nitro/button.h" +#include "regs.h" +#include "versions.h" + +#include + +#pragma dont_reuse_strings off + +extern "C" { +void func_02018424(); +void func_ov000_0205be34(void *param1, unk32 param2); +void func_ov000_0205bedc(void *param1, void *param2, void *param3, void *param4, unk32 param5, int); +} + +#if IS_JP +class UnkStruct_ov025_020c738c { +public: + /* 00 */ unk16 mUnk_00; + /* 02 */ unk16 mUnk_02; + /* 04 */ unk16 mUnk_04; + /* 06 */ unk16 mUnk_06; + /* 08 */ + + UnkStruct_ov025_020c738c() { + this->mUnk_04 = 0x100; + this->mUnk_06 = 0x20; + this->mUnk_00 = 0x100; + this->mUnk_02 = 0x20; + } +}; + +class UnkStruct_ov025_020c7394 { +public: + /* 00 */ unk16 mUnk_00; + /* 02 */ unk16 mUnk_02; + /* 04 */ + + UnkStruct_ov025_020c7394() { + this->mUnk_00 = 0x00; + this->mUnk_02 = 0x94; + } +}; + +class UnkStruct_ov025_020c7398 { +public: + /* 00 */ unk16 mUnk_00; + /* 02 */ unk16 mUnk_02; + /* 04 */ + + UnkStruct_ov025_020c7398() { + this->mUnk_00 = 0x100; + this->mUnk_02 = 0x80; + } +}; + +class UnkStruct_ov025_020c5ae0 { +public: + /* 00 */ u16 mUnk_00; + /* 02 */ u16 mUnk_02; + /* 04 */ unk16 mUnk_04; + /* 06 */ unk16 mUnk_06; + /* 08 */ unk16 mUnk_08; + /* 0A */ unk16 mUnk_0A; + /* 0C */ + + UnkStruct_ov025_020c5ae0() { + this->mUnk_04 = 0x00; + this->mUnk_06 = 0x00; + this->mUnk_08 = 0x00; + this->mUnk_0A = 0x20; + this->mUnk_00 = 0x100; + this->mUnk_02 = 0x80; + } +}; + +static const UnkStruct_ov025_020c5ae0 data_ov025_020c5ae0; +static const UnkStruct_ov025_020c738c data_ov025_020c738c; +static const UnkStruct_ov025_020c7394 data_ov025_020c7394; +static const UnkStruct_ov025_020c7398 data_ov025_020c7398; +#else +class UnkStruct_ov025_020c5ae0 { +public: + /* 00 */ u16 mUnk_00; + /* 02 */ u16 mUnk_02; + /* 04 */ unk16 mUnk_04; + /* 06 */ unk16 mUnk_06; + /* 08 */ unk16 mUnk_08; + /* 0A */ unk16 mUnk_0A; + /* 0C */ + + UnkStruct_ov025_020c5ae0() {} + UnkStruct_ov025_020c5ae0(unk16 param1, unk16 param2, unk16 param3, unk16 param4, unk16 param5, unk16 param6) { + this->mUnk_04 = param1; + this->mUnk_06 = param2; + this->mUnk_08 = param3; + this->mUnk_0A = param4; + this->mUnk_00 = param5; + this->mUnk_02 = param6; + } +}; + +static const UnkStruct_ov025_020c5ae0 data_ov025_020c5ae0(0x0000, 0x0020, 0x0100, 0x0080, 0x0100, 0x0080); +#endif + +static TitleScreenPTMF data_ov025_020c5aec[TitleScreenState_Max] = { + TitleScreen::func_ov025_020c5200, // TitleScreenState_None + TitleScreen::func_ov025_020c5204, // TitleScreenState_IdleBeforeUI + TitleScreen::func_ov025_020c5240, // TitleScreenState_DrawUIOnInput + TitleScreen::func_ov025_020c53d0, // TitleScreenState_DrawUIOnCsCmd + TitleScreen::func_ov025_020c55a4, // TitleScreenState_IdleBeforeFileSelect + TitleScreen::func_ov025_020c55e4, // TitleScreenState_ToFileSelect +}; + +struct UnkStruct_StackTitleScreen { + /* 00 */ unk32 pad[5]; + /* 14 */ + + UnkStruct_StackTitleScreen(const char *path, unk32 param1); + void func_ov000_02059270(unk32 param1, char *param2, unk32 param3); + void func_ov000_02059240(); +}; + +TitleScreen::TitleScreen() : + mState(TitleScreenState_None), + mShowUI(false), + mUnk_021(false) { + this->mUnk_18 = 1; + this->mUnk_19 = 1; + this->mUnk_1A = 1; + + wchar_t acStack_54[32]; + char *pcVar1 = data_02049be0.func_02014ff4(); + acStack_54[ARRAY_LEN(acStack_54) - 1] = '\0'; + strncpy((char *) acStack_54, pcVar1, sizeof(acStack_54) - 1); + + char *path = "/Screen/tex2d.bin"; + size_t len = strlen((char *) acStack_54); + strncpy((char *) acStack_54 + len, path, sizeof(acStack_54) - len - 1); + + UnkStruct_StackTitleScreen auStack_68((char *) acStack_54, 1); + auStack_68.func_ov000_02059270(0x3E, "title", 0x32500000); + auStack_68.func_ov000_02059240(); + + data_0204aeac.func_0201c494(3); + this->mUnk_218.func_0201effc(0x0F, 1, 0x1F); +} + +TitleScreen::~TitleScreen() { + data_ov000_020b5214.func_ov000_0206d83c(0x1E); + this->func_ov025_020c5964(); +} + +void TitleScreen::func_ov025_020c4e54() { + this->mShowUI = true; + this->func_ov025_020c4ea0(TitleScreenState_DrawUIOnInput); +} + +void TitleScreen::func_ov025_020c4e6c() { + if (!this->mShowUI) { + this->mShowUI = true; + this->func_ov025_020c4ea0(TitleScreenState_DrawUIOnCsCmd); + } +} + +void TitleScreen::func_ov025_020c4e90() { + this->func_ov025_020c4ea0(TitleScreenState_IdleBeforeUI); +} + +void TitleScreen::func_ov025_020c4ea0(TitleScreenState state) { + this->mState = state; + + switch (this->mState) { + case TitleScreenState_None: + break; + case TitleScreenState_IdleBeforeUI: + break; + case TitleScreenState_DrawUIOnCsCmd: + this->mUnk_344 = 0; + this->mUnk_218.func_0201effc(0x1E, 1, 0x1F); + + this->mUnk_218.mUnk_0A = true; + this->mUnk_218.mUnk_0B = false; + this->mUnk_218.mUnk_0C = false; + if (this->mUnk_218.mUnk_04 == this->mUnk_218.mUnk_06) { + this->mUnk_218.mUnk_0A = false; + this->mUnk_218.mUnk_0C = true; + } + + this->mUnk_204.mUnk_10 = true; + this->mUnk_23C.UnknownAction(0x59, 2); + + this->mUnk_254.func_ov000_0206082c(0x59, 2); + this->mUnk_2CC.func_ov000_0206082c(0x59, 0); + this->mUnk_024.func_ov000_0206082c(0x58, 1); + this->mUnk_09C.func_ov000_0206082c(0x58, 3); + this->mUnk_114.func_ov000_0206082c(0x58, 5); + this->mUnk_18C.func_ov000_0206082c(0x58, 7); + + this->mUnk_254.mUnk_6E = false; + this->mUnk_2CC.mUnk_6E = false; + this->mUnk_024.mUnk_6E = false; + this->mUnk_09C.mUnk_6E = false; + this->mUnk_114.mUnk_6E = false; + this->mUnk_18C.mUnk_6E = false; + break; + case TitleScreenState_DrawUIOnInput: + this->mUnk_218.func_0201effc(0x0F, 1, 0x1F); + + this->mUnk_218.mUnk_0A = true; + this->mUnk_218.mUnk_0B = false; + this->mUnk_218.mUnk_0C = false; + if (this->mUnk_218.mUnk_04 == this->mUnk_218.mUnk_06) { + this->mUnk_218.mUnk_0A = false; + this->mUnk_218.mUnk_0C = true; + } + + this->mUnk_204.mUnk_10 = true; + this->mUnk_23C.UnknownAction(0x59, 2); + + this->mUnk_254.func_ov000_0206082c(0x59, 2); + this->mUnk_2CC.func_ov000_0206082c(0x59, 0); + this->mUnk_024.func_ov000_0206082c(0x58, 1); + this->mUnk_09C.func_ov000_0206082c(0x58, 3); + this->mUnk_114.func_ov000_0206082c(0x58, 5); + this->mUnk_18C.func_ov000_0206082c(0x58, 7); + break; + case TitleScreenState_IdleBeforeFileSelect: + this->mUnk_024.func_ov000_0206082c(0x58, 0); + break; + case TitleScreenState_ToFileSelect: + this->mUnk_024.func_ov000_0206082c(0x58, 2); + this->mUnk_09C.func_ov000_0206082c(0x58, 4); + this->mUnk_114.func_ov000_0206082c(0x58, 6); + this->mUnk_18C.func_ov000_0206082c(0x58, 8); + data_ov000_020b5214.func_ov000_0206d83c(0x1E); + break; + default: + break; + } +} + +void TitleScreen::vfunc_08(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) { + if (this->mShowUI) { + this->mUnk_024.func_ov000_020609c4(); + this->mUnk_09C.func_ov000_020609c4(); + this->mUnk_114.func_ov000_020609c4(); + this->mUnk_18C.func_ov000_020609c4(); + this->mUnk_254.func_ov000_020609c4(); + this->mUnk_2CC.func_ov000_020609c4(); + } + + CALL_PTMF(TitleScreenPTMF, data_ov025_020c5aec[this->mState], param1, pTouchControl); + data_0204aeac.func_0201c4d8(0, 0x0B, 8); + data_0204aeac.func_0201c504(1, 10, 0x10, 8); +} + +void TitleScreen::func_ov025_020c5200(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) {} + +extern "C" inline void Test(TitleScreen *thisx, u16 flags) { + if ((flags & 1) != 0) { + thisx->mUnk_021 = 1; + } +} + +extern "C" inline void Test2(TitleScreen *thisx, u16 flags, GameModePTMFParam2Struct *param1) { + if ((flags & 2) != 0) { + if (thisx->mUnk_021) { + goto test; + } + } + + if (!(param1->mButtons & 8)) { + return; + } + +test: + thisx->func_ov025_020c4e54(); +} + +// https://decomp.me/scratch/6nDGM +void TitleScreen::func_ov025_020c5204(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) { + if (pTouchControl->mFlags & 1) { + this->mUnk_021 = 1U; + } + if ((pTouchControl->mFlags & 2) && (this->mUnk_021 != 0)) { + goto test; + } + if (!(param1->mButtons & 8)) { + return; + } +test: + func_ov025_020c4e54(); +} + +void TitleScreen::func_ov025_020c5240(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) { + this->mUnk_218.UnkOperations(); + this->mUnk_204.mUnk_10 = this->mUnk_218.func_0201f04c(); + + if (this->mUnk_024.func_ov000_02060af8() == 0) { + return; + } + + if (this->mUnk_09C.func_ov000_02060af8() == 0) { + return; + } + + if (this->mUnk_114.func_ov000_02060af8() == 0) { + return; + } + + if (this->mUnk_18C.func_ov000_02060af8() == 0) { + return; + } + + this->func_ov025_020c4ea0(TitleScreenState_IdleBeforeFileSelect); +} + +void TitleScreen::func_ov025_020c53d0(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) { + this->mUnk_344++; + + if (this->mUnk_344 == 15) { + // do subscreen animations (logo) + this->mUnk_254.mUnk_6E = true; + this->mUnk_2CC.mUnk_6E = true; + } else if (this->mUnk_344 == 60) { + // do main screen animations (feather, strings and bg) + this->mUnk_024.mUnk_6E = true; + this->mUnk_09C.mUnk_6E = true; + this->mUnk_114.mUnk_6E = true; + this->mUnk_18C.mUnk_6E = true; + } + + this->mUnk_218.UnkOperations(); + this->mUnk_204.mUnk_10 = this->mUnk_218.func_0201f04c(); + + if (this->mUnk_218.mUnk_0C) { + if (this->mUnk_024.func_ov000_02060af8() == 0) { + return; + } + + if (this->mUnk_09C.func_ov000_02060af8() == 0) { + return; + } + + if (this->mUnk_114.func_ov000_02060af8() == 0) { + return; + } + + if (this->mUnk_18C.func_ov000_02060af8() == 0) { + return; + } + + this->func_ov025_020c4ea0(TitleScreenState_IdleBeforeFileSelect); + } +} + +void TitleScreen::func_ov025_020c55a4(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) { + if (CHECK_TOUCH_FLAGS(pTouchControl, TouchFlag_UntouchedNow) || CHECK_BUTTON_COMBO(param1->mButtons, BTN_START)) { + data_ov000_020b5214.func_ov000_0206db44(0x0B); + this->func_ov025_020c4ea0(TitleScreenState_ToFileSelect); + } +} + +void TitleScreen::func_ov025_020c55e4(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) { + if (this->mUnk_024.func_ov000_02060af8() == 0) { + return; + } + + if (this->mUnk_09C.func_ov000_02060af8() == 0) { + return; + } + + if (this->mUnk_114.func_ov000_02060af8() == 0) { + return; + } + + if (this->mUnk_18C.func_ov000_02060af8() == 0) { + return; + } + + data_0204a060.func_020183d4(true, func_02018424, 1); +} + +void TitleScreen::vfunc_14(unk8 *param1) { + if (param1[1] == 0) { + this->func_ov025_020c592c(); + data_0204aeac.func_0201c494(3); + } + + if (param1[0] == 0) { + this->func_ov025_020c5964(); + data_0204aeac.func_0201c494(0); + } +} + +void TitleScreen::vfunc_10(unk8 *param1) { + if (this->mShowUI) { + if (param1[0] == 0 && this->mUnk_09C.mUnk_6E) { + UnkStruct_ov019_020d24c8_28_258 uStack_3c(0x58, 0x00); + data_0204af1c.func_0201aad0(&this->mUnk_09C, &uStack_3c.mPos, 0, 0); + + UnkStruct_ov019_020d24c8_28_258 uStack_54(0x58, 0x01); + data_0204af1c.func_0201aad0(&this->mUnk_024, &uStack_54.mPos, 0, 0); + + UnkStruct_ov019_020d24c8_28_258 uStack_6c(0x58, 0x02); + data_0204af1c.func_0201aad0(&this->mUnk_18C, &uStack_6c.mPos, 0, 0); + + UnkStruct_ov019_020d24c8_28_258 uStack_84(0x58, 0x03); + data_0204af1c.func_0201aad0(&this->mUnk_114, &uStack_84.mPos, 0, 0); + } + + if (param1[1] == 0 && this->mUnk_254.mUnk_6E) { +#if IS_JP + Vec2us pos1; + pos1.x = this->mUnk_23C.mPos.x + data_ov025_020c5ae0.mUnk_04; + pos1.y = this->mUnk_23C.mPos.y + data_ov025_020c5ae0.mUnk_06; + data_0204af1c.func_0201aa44(&this->mUnk_23C, &pos1, 0, 0); + + UnkStruct_ov019_020d24c8_28_258 uStack_9c(0x59, 0x01); + Vec2us pos2; + pos2.x = uStack_9c.mPos.x + data_ov025_020c5ae0.mUnk_04; + pos2.y = uStack_9c.mPos.y + data_ov025_020c5ae0.mUnk_06; + data_0204af1c.func_0201aad0(&this->mUnk_254, &pos2, 0, 0); + + UnkStruct_ov019_020d24c8_28_258 uStack_b4(0x59, 0x00); + Vec2us pos3; + pos3.x = uStack_b4.mPos.x + data_ov025_020c5ae0.mUnk_04; + pos3.y = uStack_b4.mPos.y + data_ov025_020c5ae0.mUnk_06; + data_0204af1c.func_0201aad0(&this->mUnk_2CC, &pos3, 0, 0); +#else + data_0204af1c.func_0201aa44(&this->mUnk_23C, &this->mUnk_23C.mPos, 0, 0); + + UnkStruct_ov019_020d24c8_28_258 uStack_9c(0x59, 0x01); + data_0204af1c.func_0201aad0(&this->mUnk_254, &uStack_9c.mPos, 0, 0); + + UnkStruct_ov019_020d24c8_28_258 uStack_b4(0x59, 0x00); + data_0204af1c.func_0201aad0(&this->mUnk_2CC, &uStack_b4.mPos, 0, 0); +#endif + } + } +} + +//! TODO: fake match? +void TitleScreen::vfunc_0C(unk32 param1) { + if (param1 == 1 && this->mShowUI) { + UnkStruct_027e0954 *ptr = data_027e0954; + void *iVar1 = &this->mUnk_204; + + if (iVar1 != NULL) { + iVar1 = (u32 *) iVar1 + 1; + } + + ptr->mUnk_14.func_020166f4(iVar1); + } +} + +void TitleScreen::func_ov025_020c592c() { + REG_DISPCNT &= ~0xE000; + REG_DISPCNT |= 0x8000; + + REG_WINOUT = (REG_WINOUT & ~0x3F00) | 0x1900; + REG_WINOUT = (REG_WINOUT & ~0x3F) | 0x09; +} + +void TitleScreen::func_ov025_020c5964() { + REG_DISPCNT &= ~0xE000; + REG_WINOUT = (REG_WINOUT & ~0x3F) | 0x30; +} + +struct stack_struct { + unk16 a; + bool mUnk_02; +}; + +// https://decomp.me/scratch/nXEa8 +void TitleScreen_Sub2::vfunc_00() { + stack_struct sp14; + Vec2s sp10; + Vec2s spC; + Vec2us sp8; + + func_ov000_0205be34(&sp14, 0x3E); + + sp14.mUnk_02 = this->mUnk_10; + + sp8.x = data_ov025_020c5ae0.mUnk_00; + sp8.y = data_ov025_020c5ae0.mUnk_02; + + spC.x = data_ov025_020c5ae0.mUnk_08; + spC.y = data_ov025_020c5ae0.mUnk_0A; + + sp10.x = data_ov025_020c5ae0.mUnk_04; + sp10.y = data_ov025_020c5ae0.mUnk_06; + + func_ov000_0205bedc(&sp14, &sp10, &spC, &sp8, 0, 0); +} diff --git a/src/025_Title/TitleScreenManager.cpp b/src/025_Title/TitleScreenManager.cpp new file mode 100644 index 00000000..5759e42e --- /dev/null +++ b/src/025_Title/TitleScreenManager.cpp @@ -0,0 +1,61 @@ +#include "TitleScreen/TitleScreen.hpp" +#include "regs.h" + +extern "C" { +void GX_SetGraphicsMode(unk32 param1, unk32 param2, unk32 param3); +void GXS_SetGraphicsMode(unk32 param1); +} + +ARM TitleScreenManager *TitleScreenManager::Create(unk32 param1) { + return new(HeapIndex_1) TitleScreenManager(param1); +} + +ARM void TitleScreenManager::vfunc_14() { + this->mUnk_004.func_ov001_020bd734((unk32 *) data_ov025_020c5a0c); + this->mUnk_004.func_0201c00c(0x24, 1); + + TitleScreen *pTitleScreen = new(HeapIndex_1) TitleScreen(); + void *pUVar2 = pTitleScreen; + if (pTitleScreen != NULL) { + pUVar2 = &pTitleScreen->mUnk_04; + } + this->mpTitleScreen = pTitleScreen; + + this->mUnk_104.mUnk_04.func_020166cc(pUVar2); + pTitleScreen->vfunc_18(); +} + +ARM void TitleScreenManager::vfunc_18() { + this->mUnk_004.func_ov001_020bd784(); + + delete this->mpTitleScreen; + this->mpTitleScreen = NULL; +} + +ARM void TitleScreenManager::vfunc_24() { + this->GameModeManagerBase::vfunc_24(); + this->func_0201875c(); + this->func_02018908(); +} + +ARM void TitleScreenManager::vfunc_28(unk32 param1) { + this->GameModeManagerBase::vfunc_28(param1); + this->func_02018a14(param1); +} + +ARM void TitleScreenManager::vfunc_2C(unk32 param1) { + this->func_02018984(param1); + this->func_02018830(param1); +} + +ARM void TitleScreenManager::vfunc_38() {} + +ARM void TitleScreenManager::func_ov025_020c4c20() { + this->mpTitleScreen->func_ov025_020c4e6c(); +} + +ARM void TitleScreenManager::func_ov025_020c4c30() { + this->mpTitleScreen->func_ov025_020c4e90(); +} + +TitleScreenManager::~TitleScreenManager() {} From 879e16ef9ff56b438981042c1f59e7d11b7bdb87 Mon Sep 17 00:00:00 2001 From: Yanis002 <35189056+Yanis002@users.noreply.github.com> Date: Thu, 15 Jan 2026 18:39:17 +0100 Subject: [PATCH 2/5] math structs as cpp when applicable --- include/nitro/math.h | 188 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 168 insertions(+), 20 deletions(-) diff --git a/include/nitro/math.h b/include/nitro/math.h index 3903a34b..579b5084 100644 --- a/include/nitro/math.h +++ b/include/nitro/math.h @@ -28,29 +28,148 @@ typedef s16 q4; #define SIN(n) (gSinCosTable[2 * ((n) >> 4)]) #define COS(n) (gSinCosTable[2 * ((n) >> 4) + 1]) -u32 func_01ff9f3c(s32 a, s32 b); -s32 Atan2(s32 x, s32 y); +#ifdef __cplusplus +} +#endif -u32 CoDivide64By32(u32 a, u32 b); -u32 func_01ff98f0(u32 a, u32 b); -u32 CoReciprocal(u32 x); -u64 func_01ff992c(u32 x); -u32 CoSqrt(u32 x); -u32 CoInvSqrt(u32 x); -u32 AwaitDivisionResult(); -u32 GetDivisionResult(); -void StartReciprocal(u32 x); -void StartSqrt(u32 x); -void func_01ff9ac4(u32 x); -u32 AwaitSqrtResult(); -void StartDivision64By32(u32 a, u32 b); -u32 CoDivide32(u32 a, u32 b); -u32 CoRemainder(u32 a, u32 b); +#ifdef __cplusplus +struct Vec2b { + /* 0 */ u8 x; + /* 1 */ u8 y; + /* 2 */ -bool Approach(unk32 *src, unk32 dest, unk32 step); -bool Approach_thunk(unk32 *src, unk32 dest, unk32 step); -extern q4 gSinCosTable[]; + Vec2b() {} + Vec2b(u8 X, u8 Y) { + x = X; + y = Y; + } +}; + +struct Vec2s { + /* 0 */ s16 x; + /* 1 */ s16 y; + /* 2 */ + + Vec2s() {} + Vec2s(s16 X, s16 Y) { + x = X; + y = Y; + } +}; + +struct Vec2us { + /* 0 */ u16 x; + /* 2 */ u16 y; + /* 4 */ + + Vec2us() {} + Vec2us(u16 X, u16 Y) { + x = X; + y = Y; + } +}; + +struct Vec2p { + /* 0 */ q20 x; + /* 4 */ q20 y; + /* 8 */ + + Vec2p() {} + Vec2p(q20 X, q20 Y) { + x = X; + y = Y; + } +}; + +struct Vec3p { + /* 0 */ q20 x; + /* 4 */ q20 y; + /* 8 */ q20 z; + /* c */ + + Vec3p() {} + Vec3p(q20 X, q20 Y, q20 Z) { + x = X; + y = Y; + z = Z; + } +}; + +struct Vec4p { + /* 00 */ q20 x; + /* 04 */ q20 y; + /* 08 */ q20 z; + /* 0c */ q20 w; + /* 10 */ + + Vec4p() {} + Vec4p(q20 X, q20 Y, q20 Z, q20 W) { + x = X; + y = Y; + z = Z; + w = W; + } +}; +struct Mat2p { + /* 00 */ Vec2p xColumn; + /* 08 */ Vec2p yColumn; + /* 10 */ + + Mat2p() {} + Mat2p(Vec2p X, Vec2p Y) { + xColumn = X; + yColumn = Y; + } +}; + +struct Mat3p { + /* 00 */ Vec3p xColumn; + /* 0c */ Vec3p yColumn; + /* 18 */ Vec3p zColumn; + /* 24 */ + + Mat3p() {} + Mat3p(Vec3p X, Vec3p Y, Vec3p Z) { + xColumn = X; + yColumn = Y; + zColumn = Z; + } +}; + +struct Mat4x3p { + /* 00 */ Vec3p xColumn; + /* 0c */ Vec3p yColumn; + /* 18 */ Vec3p zColumn; + /* 24 */ Vec3p wColumn; + /* 30 */ + + Mat4x3p() {} + Mat4x3p(Vec3p X, Vec3p Y, Vec3p Z, Vec3p W) { + xColumn = X; + yColumn = Y; + zColumn = Z; + wColumn = W; + } +}; + +struct Mat4p { + /* 00 */ Vec4p xColumn; + /* 10 */ Vec4p yColumn; + /* 20 */ Vec4p zColumn; + /* 30 */ Vec4p wColumn; + /* 40 */ + + Mat4p() {} + Mat4p(Vec4p X, Vec4p Y, Vec4p Z, Vec4p W) { + xColumn = X; + yColumn = Y; + zColumn = Z; + wColumn = W; + } +}; +#else +extern "C" { typedef struct Vec2b { /* 0 */ u8 x; /* 1 */ u8 y; @@ -118,6 +237,35 @@ typedef struct Mat4p { /* 30 */ Vec4p wColumn; /* 40 */ } Mat4p; +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +u32 func_01ff9f3c(s32 a, s32 b); +s32 Atan2(s32 x, s32 y); + +u32 CoDivide64By32(u32 a, u32 b); +u32 func_01ff98f0(u32 a, u32 b); +u32 CoReciprocal(u32 x); +u64 func_01ff992c(u32 x); +u32 CoSqrt(u32 x); +u32 CoInvSqrt(u32 x); +u32 AwaitDivisionResult(); +u32 GetDivisionResult(); +void StartReciprocal(u32 x); +void StartSqrt(u32 x); +void func_01ff9ac4(u32 x); +u32 AwaitSqrtResult(); +void StartDivision64By32(u32 a, u32 b); +u32 CoDivide32(u32 a, u32 b); +u32 CoRemainder(u32 a, u32 b); + +bool Approach(unk32 *src, unk32 dest, unk32 step); +bool Approach_thunk(unk32 *src, unk32 dest, unk32 step); +extern q4 gSinCosTable[]; extern const Vec3p gVec3p_ZERO; From db54278b1d01bc866afdde1dc5511b45cedd2e91 Mon Sep 17 00:00:00 2001 From: Yanis002 <35189056+Yanis002@users.noreply.github.com> Date: Thu, 15 Jan 2026 18:39:33 +0100 Subject: [PATCH 3/5] fixes and improvements --- config/eur/arm9/overlays/ov000/symbols.txt | 6 +- config/eur/arm9/overlays/ov019/symbols.txt | 2 +- config/eur/arm9/overlays/ov025/delinks.txt | 2 +- config/eur/arm9/overlays/ov025/symbols.txt | 4 +- config/jp/arm9/overlays/ov000/symbols.txt | 10 +- config/jp/arm9/overlays/ov019/symbols.txt | 2 +- config/jp/arm9/overlays/ov025/delinks.txt | 2 +- config/jp/arm9/overlays/ov025/symbols.txt | 5 +- config/jp/arm9/symbols.txt | 6 +- include/FileSelect/FileSelectMain.hpp | 2 +- include/TitleScreen/TitleScreen.hpp | 1 - include/Unknown/Common.hpp | 62 --------- src/019_MainSelect/FileSelectMain.cpp | 4 +- src/019_MainSelect/FileSelectOptions.cpp | 43 +++--- src/025_Title/GameModeTitleScreen.cpp | 2 - src/025_Title/TitleScreen.cpp | 152 ++++----------------- src/025_Title/TitleScreenManager.cpp | 2 + 17 files changed, 72 insertions(+), 235 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 5fab1cb7..02c34d90 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -501,9 +501,9 @@ _ZN23GameModeManagerBase_104D1Ev kind:function(arm,size=0x70) addr:0x02061b74 _ZN23GameModeManagerBase_104D0Ev kind:function(arm,size=0x78) addr:0x02061be4 _ZN23GameModeManagerBase_104D2Ev kind:function(arm,size=0x70) addr:0x02061c5c _ZN23GameModeManagerBase_1048vfunc_08Ei kind:function(arm,size=0x4) addr:0x02061ccc -_ZN23GameModeManagerBase_1048vfunc_0CEv kind:function(arm,size=0x4) addr:0x02061cd0 +_ZN23GameModeManagerBase_1048vfunc_0CEi kind:function(arm,size=0x4) addr:0x02061cd0 _ZN23GameModeManagerBase_1048vfunc_10Ev kind:function(arm,size=0x4) addr:0x02061cd4 -_ZN23GameModeManagerBase_1048vfunc_14Ev kind:function(arm,size=0x4) addr:0x02061cd8 +_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 @@ -735,7 +735,7 @@ _ZN24UnkStruct_ov000_020b504c19func_ov000_02067e60Ehi kind:function(arm,size=0xf func_ov000_02067f5c kind:function(arm,size=0x2c) addr:0x02067f5c func_ov000_02067f88 kind:function(arm,size=0xe0) addr:0x02067f88 func_ov000_02068068 kind:function(arm,size=0x14) addr:0x02068068 -_ZN24UnkStruct_ov000_02067bc419func_ov000_0206807cEiPv kind:function(arm,size=0x48) addr:0x0206807c +_ZN24UnkStruct_ov000_020b504c19func_ov000_0206807cEiPv kind:function(arm,size=0x48) addr:0x0206807c func_ov000_020680c4 kind:function(arm,size=0xd0) addr:0x020680c4 func_ov000_02068194 kind:function(arm,size=0x98) addr:0x02068194 func_ov000_0206822c kind:function(arm,size=0x94) addr:0x0206822c diff --git a/config/eur/arm9/overlays/ov019/symbols.txt b/config/eur/arm9/overlays/ov019/symbols.txt index ada97dd7..4ab201fe 100644 --- a/config/eur/arm9/overlays/ov019/symbols.txt +++ b/config/eur/arm9/overlays/ov019/symbols.txt @@ -73,7 +73,7 @@ _ZN14FileSelectMain19func_ov019_020c7dc8Ev kind:function(arm,size=0x314) addr:0x _ZN14FileSelectMain19func_ov019_020c80dcEv kind:function(arm,size=0xc) addr:0x020c80dc _ZN14FileSelectMain19func_ov019_020c80e8Ev kind:function(arm,size=0xc) addr:0x020c80e8 _ZN14FileSelectMain19func_ov019_020c80f4Ev kind:function(arm,size=0x4) addr:0x020c80f4 -_ZN14FileSelectMain8vfunc_08Ev kind:function(arm,size=0x198) addr:0x020c80f8 +_ZN14FileSelectMain8vfunc_08EP24GameModePTMFParam2StructP12TouchControl kind:function(arm,size=0x198) addr:0x020c80f8 _ZN14FileSelectMain19func_ov019_020c8290Ev kind:function(arm,size=0x34) addr:0x020c8290 _ZN14FileSelectMain19func_ov019_020c82c4Ev kind:function(arm,size=0x190) addr:0x020c82c4 _ZN14FileSelectMain19func_ov019_020c8454Ev kind:function(arm,size=0xd0) addr:0x020c8454 diff --git a/config/eur/arm9/overlays/ov025/delinks.txt b/config/eur/arm9/overlays/ov025/delinks.txt index 464fd034..72945015 100644 --- a/config/eur/arm9/overlays/ov025/delinks.txt +++ b/config/eur/arm9/overlays/ov025/delinks.txt @@ -8,12 +8,12 @@ src/025_Title/GameModeTitleScreen.cpp: complete .text start:0x020c4840 end:0x020c4a8c - .rodata start:0x020c5a0c end:0x020c5a10 .data start:0x020c5a60 end:0x020c5a90 src/025_Title/TitleScreenManager.cpp: complete .text start:0x020c4a8c end:0x020c4c70 + .rodata start:0x020c5a0c end:0x020c5a10 .data start:0x020c5a90 end:0x020c5ae0 src/025_Title/TitleScreen.cpp: diff --git a/config/eur/arm9/overlays/ov025/symbols.txt b/config/eur/arm9/overlays/ov025/symbols.txt index a8e66891..8561b3ea 100644 --- a/config/eur/arm9/overlays/ov025/symbols.txt +++ b/config/eur/arm9/overlays/ov025/symbols.txt @@ -41,12 +41,14 @@ _ZN11TitleScreen8vfunc_0CEi kind:function(arm,size=0x38) addr:0x020c58f4 _ZN11TitleScreen19func_ov025_020c592cEv kind:function(arm,size=0x38) addr:0x020c592c _ZN11TitleScreen19func_ov025_020c5964Ev kind:function(arm,size=0x24) addr:0x020c5964 _ZN16TitleScreen_Sub28vfunc_00Ev kind:function(arm,size=0x84) addr:0x020c5988 -data_ov025_020c5a0c kind:data(any) addr:0x020c5a0c +data_ov025_020c5a0c kind:data(any) addr:0x020c5a0c local __sinit_TitleScreen.cpp kind:function(arm,size=0x34) addr:0x020c5a10 .p__sinit_TitleScreen.cpp kind:data(word) addr:0x020c5a44 _ZTV19GameModeTitleScreen kind:data(any) addr:0x020c5a60 _ZTV18TitleScreenManager kind:data(any) addr:0x020c5a90 data_ov025_020c5ae0 kind:data(any) addr:0x020c5ae0 +data_ov025_020c5ae4 kind:data(any) addr:0x020c5ae4 +data_ov025_020c5ae8 kind:data(any) addr:0x020c5ae8 data_ov025_020c5aec kind:data(any) addr:0x020c5aec _ZTV16TitleScreen_Sub2 kind:data(any) addr:0x020c5b1c _ZTV11TitleScreen kind:data(any) addr:0x020c5b28 diff --git a/config/jp/arm9/overlays/ov000/symbols.txt b/config/jp/arm9/overlays/ov000/symbols.txt index 1f12dd70..ebab5618 100644 --- a/config/jp/arm9/overlays/ov000/symbols.txt +++ b/config/jp/arm9/overlays/ov000/symbols.txt @@ -305,9 +305,9 @@ func_ov000_0205d230 kind:function(arm,size=0x74) addr:0x0205d230 func_ov000_0205d2a4 kind:function(arm,size=0x28) addr:0x0205d2a4 func_ov000_0205d2cc kind:function(arm,size=0x60) addr:0x0205d2cc func_ov000_0205d32c kind:function(arm,size=0x90) addr:0x0205d32c -func_ov000_0205d3bc kind:function(arm,size=0x10) addr:0x0205d3bc +func_ov000_0205be34 kind:function(arm,size=0x10) addr:0x0205d3bc func_ov000_0205d3cc kind:function(arm,size=0x98) addr:0x0205d3cc -func_ov000_0205d464 kind:function(arm,size=0x7c) addr:0x0205d464 +func_ov000_0205bedc kind:function(arm,size=0x7c) addr:0x0205d464 func_ov000_0205d4e0 kind:function(arm,size=0x6c) addr:0x0205d4e0 func_ov000_0205d54c kind:function(arm,size=0x78) addr:0x0205d54c func_ov000_0205d5c4 kind:function(arm,size=0x6c) addr:0x0205d5c4 @@ -501,9 +501,9 @@ _ZN23GameModeManagerBase_104D1Ev kind:function(arm,size=0x70) addr:0x020630fc _ZN23GameModeManagerBase_104D0Ev kind:function(arm,size=0x78) addr:0x0206316c _ZN23GameModeManagerBase_104D2Ev kind:function(arm,size=0x70) addr:0x020631e4 _ZN23GameModeManagerBase_1048vfunc_08Ei kind:function(arm,size=0x4) addr:0x02063254 -_ZN23GameModeManagerBase_1048vfunc_0CEv kind:function(arm,size=0x4) addr:0x02063258 +_ZN23GameModeManagerBase_1048vfunc_0CEi kind:function(arm,size=0x4) addr:0x02063258 _ZN23GameModeManagerBase_1048vfunc_10Ev kind:function(arm,size=0x4) addr:0x0206325c -_ZN23GameModeManagerBase_1048vfunc_14Ev kind:function(arm,size=0x4) addr:0x02063260 +_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 @@ -736,7 +736,7 @@ _ZN24UnkStruct_ov000_020b504c19func_ov000_02067e60Ehi kind:function(arm,size=0xf func_ov000_02069500 kind:function(arm,size=0x2c) addr:0x02069500 func_ov000_0206952c kind:function(arm,size=0xe0) addr:0x0206952c func_ov000_0206960c kind:function(arm,size=0x14) addr:0x0206960c -_ZN24UnkStruct_ov000_02067bc419func_ov000_0206807cEiPv kind:function(arm,size=0x48) addr:0x02069620 +_ZN24UnkStruct_ov000_020b504c19func_ov000_0206807cEiPv kind:function(arm,size=0x48) addr:0x02069620 func_ov000_02069668 kind:function(arm,size=0xd0) addr:0x02069668 func_ov000_02069738 kind:function(arm,size=0x98) addr:0x02069738 func_ov000_020697d0 kind:function(arm,size=0x94) addr:0x020697d0 diff --git a/config/jp/arm9/overlays/ov019/symbols.txt b/config/jp/arm9/overlays/ov019/symbols.txt index a7de7494..0cb74b0c 100644 --- a/config/jp/arm9/overlays/ov019/symbols.txt +++ b/config/jp/arm9/overlays/ov019/symbols.txt @@ -73,7 +73,7 @@ _ZN14FileSelectMain19func_ov019_020c7dc8Ev kind:function(arm,size=0x314) addr:0x _ZN14FileSelectMain19func_ov019_020c80dcEv kind:function(arm,size=0xc) addr:0x020c98fc _ZN14FileSelectMain19func_ov019_020c80e8Ev kind:function(arm,size=0xc) addr:0x020c9908 _ZN14FileSelectMain19func_ov019_020c80f4Ev kind:function(arm,size=0x4) addr:0x020c9914 -_ZN14FileSelectMain8vfunc_08Ev kind:function(arm,size=0x198) addr:0x020c9918 +_ZN14FileSelectMain8vfunc_08EP24GameModePTMFParam2StructP12TouchControl kind:function(arm,size=0x198) addr:0x020c9918 _ZN14FileSelectMain19func_ov019_020c8290Ev kind:function(arm,size=0x34) addr:0x020c9ab0 _ZN14FileSelectMain19func_ov019_020c82c4Ev kind:function(arm,size=0x190) addr:0x020c9ae4 _ZN14FileSelectMain19func_ov019_020c8454Ev kind:function(arm,size=0xd0) addr:0x020c9c74 diff --git a/config/jp/arm9/overlays/ov025/delinks.txt b/config/jp/arm9/overlays/ov025/delinks.txt index c76a2629..5a9c4965 100644 --- a/config/jp/arm9/overlays/ov025/delinks.txt +++ b/config/jp/arm9/overlays/ov025/delinks.txt @@ -8,12 +8,12 @@ src/025_Title/GameModeTitleScreen.cpp: complete .text start:0x020c6060 end:0x020c62ac - .rodata start:0x020c7294 end:0x020c7298 .data start:0x020c7300 end:0x020c7330 src/025_Title/TitleScreenManager.cpp: complete .text start:0x020c62ac end:0x020c6490 + .rodata start:0x020c7294 end:0x020c7298 .data start:0x020c7330 end:0x020c7380 src/025_Title/TitleScreen.cpp: diff --git a/config/jp/arm9/overlays/ov025/symbols.txt b/config/jp/arm9/overlays/ov025/symbols.txt index 25a9e068..f9904203 100644 --- a/config/jp/arm9/overlays/ov025/symbols.txt +++ b/config/jp/arm9/overlays/ov025/symbols.txt @@ -41,13 +41,16 @@ _ZN11TitleScreen8vfunc_0CEi kind:function(arm,size=0x38) addr:0x020c717c _ZN11TitleScreen19func_ov025_020c592cEv kind:function(arm,size=0x38) addr:0x020c71b4 _ZN11TitleScreen19func_ov025_020c5964Ev kind:function(arm,size=0x24) addr:0x020c71ec _ZN16TitleScreen_Sub28vfunc_00Ev kind:function(arm,size=0x84) addr:0x020c7210 -data_ov025_020c5a0c kind:data(any) addr:0x020c7294 +data_ov025_020c5a0c kind:data(any) addr:0x020c7294 local __sinit_TitleScreen.cpp kind:function(arm,size=0x58) addr:0x020c7298 .p__sinit_TitleScreen.cpp kind:data(word) addr:0x020c72f0 _ZTV19GameModeTitleScreen kind:data(any) addr:0x020c7300 _ZTV18TitleScreenManager kind:data(any) addr:0x020c7330 data_ov025_020c5ae0 kind:data(any) addr:0x020c7380 +data_ov025_020c5ae4 kind:data(any) addr:0x020c7384 +data_ov025_020c5ae8 kind:data(any) addr:0x020c7388 data_ov025_020c738c kind:data(any) addr:0x020c738c +data_ov025_020c738e kind:data(any) addr:0x020c738e data_ov025_020c7394 kind:data(any) addr:0x020c7394 data_ov025_020c7398 kind:data(any) addr:0x020c7398 data_ov025_020c5aec kind:data(any) addr:0x020c739c diff --git a/config/jp/arm9/symbols.txt b/config/jp/arm9/symbols.txt index 6cbc1531..2cef7240 100644 --- a/config/jp/arm9/symbols.txt +++ b/config/jp/arm9/symbols.txt @@ -915,7 +915,7 @@ _ZN18UnkStruct_0204a0608vfunc_0CEi kind:function(thumb,size=0x14) addr:0x0201833 func_020183b8 kind:function(thumb,size=0x8) addr:0x02018350 func_02018358 kind:function(thumb,size=0x14) addr:0x02018358 _ZN18UnkStruct_0204a06013func_020183d4EbPvi kind:function(thumb,size=0x50) addr:0x0201836c -func_020183bc kind:function(thumb,size=0x14) addr:0x020183bc +func_02018424 kind:function(thumb,size=0x14) addr:0x020183bc _ZN18UnkStruct_0204a060D1Ev kind:function(arm,size=0x14) addr:0x020183d0 _ZN18UnkStruct_0204a060D0Ev kind:function(arm,size=0x1c) addr:0x020183e4 func_02018400 kind:function(arm,size=0x14) addr:0x02018400 @@ -2764,7 +2764,7 @@ data_0204b128 kind:bss addr:0x0204b128 data_0204b12c kind:bss addr:0x0204b12c data_0204b150 kind:bss addr:0x0204b150 data_02049bd4 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 @@ -2781,7 +2781,7 @@ data_0204b6a0 kind:bss addr:0x0204b6a0 data_0204ba00 kind:bss addr:0x0204ba00 data_0204c390 kind:bss addr:0x0204c390 data_0204c410 kind:bss addr:0x0204c410 -data_0204c42c kind:bss addr:0x0204c42c +data_0204aeac kind:bss addr:0x0204c42c data_0204c438 kind:bss addr:0x0204c438 data_0204c450 kind:bss addr:0x0204c450 data_0204c45c kind:bss addr:0x0204c45c diff --git a/include/FileSelect/FileSelectMain.hpp b/include/FileSelect/FileSelectMain.hpp index ac5acf11..63a65a33 100644 --- a/include/FileSelect/FileSelectMain.hpp +++ b/include/FileSelect/FileSelectMain.hpp @@ -255,7 +255,7 @@ class FileSelectMain : public GameModeManagerBase_104 { // 022E5F70 // data_ov019_020d1ec0 vtable /* 00 */ virtual ~FileSelectMain() override; - /* 08 */ virtual void vfunc_08() override; + /* 08 */ virtual void vfunc_08(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) override; /* 10 */ virtual void vfunc_10(unk8 *param1) override; /* 18 */ virtual void vfunc_18(void) override; }; diff --git a/include/TitleScreen/TitleScreen.hpp b/include/TitleScreen/TitleScreen.hpp index 1475ba59..d1adc791 100644 --- a/include/TitleScreen/TitleScreen.hpp +++ b/include/TitleScreen/TitleScreen.hpp @@ -219,4 +219,3 @@ class TitleScreenManager : public TitleScreenManager_Base { }; extern TitleScreenManager *data_027e0994; -extern const unk16 data_ov025_020c5a0c[]; diff --git a/include/Unknown/Common.hpp b/include/Unknown/Common.hpp index de9db01c..340b3b6e 100644 --- a/include/Unknown/Common.hpp +++ b/include/Unknown/Common.hpp @@ -8,68 +8,6 @@ extern "C" void func_0201e8d4(void *param1, void *param2); -struct Vec2s_cpp { - /* 0 */ s16 x; - /* 1 */ s16 y; - /* 2 */ - - Vec2s_cpp() {}; - Vec2s_cpp(s16 __x, s16 __y) { - x = __x; - y = __y; - } - - void operator=(Vec2s_cpp &from) { - x = from.x; - y = from.y; - } - - void operator+=(Vec2s_cpp &from) { - x = from.x + x; - y = from.y + y; - } - - Vec2s_cpp &operator+(Vec2s_cpp &from) { - Vec2s_cpp vec(x + from.x, y + from.y); - return vec; - } - - Vec2s_cpp *operator&() { - return this; - } -}; - -struct Vec2us_cpp { - /* 0 */ u16 x; - /* 1 */ u16 y; - /* 2 */ - - Vec2us_cpp() {}; - Vec2us_cpp(u16 __x, u16 __y) { - x = __x; - y = __y; - } - - void operator=(Vec2us_cpp &from) { - x = from.x; - y = from.y; - } - - void operator+=(Vec2us_cpp &from) { - x += from.x; - y += from.y; - } - - Vec2us_cpp &operator+(Vec2us_cpp &from) { - Vec2us_cpp vec(x + from.x, y + from.y); - return vec; - } - - Vec2us_cpp *operator&() { - return this; - } -}; - class UnkSubStruct1 : public SysObject { public: /* 00 (vtable) */ diff --git a/src/019_MainSelect/FileSelectMain.cpp b/src/019_MainSelect/FileSelectMain.cpp index 0e5d3b40..668afd18 100644 --- a/src/019_MainSelect/FileSelectMain.cpp +++ b/src/019_MainSelect/FileSelectMain.cpp @@ -33,7 +33,7 @@ class UnkStruct_ov019_020d24c0 { UnkStruct_ov019_020d24c0 data_ov019_020d24c0(-0x100, 0, 0x100, 0); UnkStruct_ov019_020d1e4c UnkStruct_ov019_020d1e70::data_ov019_020d1e4c = { - 0x14, 0x14, 0x14, 0x04, 0x03, -0x47, 0x00, 0x0281, -0x47, {0x00, 0x00}, 0x0281, + 0x14, 0x14, 0x14, 0x04, 0x03, -0x47, 0x00, 0x0281, -0x47, Vec2s(0x00, 0x00), 0x0281, }; UnkStruct_ov019_020d1e94 UnkStruct_ov019_020d1e70::data_ov019_020d1e94 = { @@ -1114,7 +1114,7 @@ ARM void FileSelectMain::func_ov019_020c80e8() { ARM void FileSelectMain::func_ov019_020c80f4() {} // non-matching -ARM void FileSelectMain::vfunc_08() { +ARM void FileSelectMain::vfunc_08(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) { for (int i = 0; i < MAX_SAVE_SLOTS; i++) { this->mUnk_03E8[i].func_ov000_02063f64(); this->GetUnk03E0(i).func_ov019_020cbb94(); diff --git a/src/019_MainSelect/FileSelectOptions.cpp b/src/019_MainSelect/FileSelectOptions.cpp index 4ded010d..a178e9f1 100644 --- a/src/019_MainSelect/FileSelectOptions.cpp +++ b/src/019_MainSelect/FileSelectOptions.cpp @@ -27,12 +27,12 @@ class UnkStruct_ov019_020d215c { class UnkStruct_ov019_020d2170 { public: - /* 14 */ Vec2s_cpp mUnk_00; - /* 18 */ Vec2s_cpp mUnk_04; - /* 1C */ Vec2s_cpp mUnk_08; - /* 20 */ Vec2s_cpp mUnk_0C; - /* 24 */ Vec2s_cpp mUnk_10; - /* 28 */ Vec2s_cpp mUnk_14; + /* 14 */ Vec2s mUnk_00; + /* 18 */ Vec2s mUnk_04; + /* 1C */ Vec2s mUnk_08; + /* 20 */ Vec2s mUnk_0C; + /* 24 */ Vec2s mUnk_10; + /* 28 */ Vec2s mUnk_14; /* 2C */ static UnkStruct_ov019_020d215c data_ov019_020d215c; @@ -68,7 +68,8 @@ class UnkStruct_ov019_020d2170 { }; UnkStruct_ov019_020d215c UnkStruct_ov019_020d2170::data_ov019_020d215c = { - {0, 0}, {0, 0}, {0, 0}, {-0x47, -0x01}, {0x0281, 0x00}}; + Vec2s(0, 0), Vec2s(0, 0), Vec2s(0, 0), Vec2s(-0x47, -0x0), Vec2s(0x0281, 0x00), +}; static const UnkStruct_ov019_020d2170 data_ov019_020d2170; @@ -396,8 +397,8 @@ ARM void FileSelectOptions::func_ov019_020cd16c() { } ARM void FileSelectOptions::func_ov019_020cd41c() { - Vec2s_cpp local_40; - Vec2us_cpp local_3c; + Vec2s local_40; + Vec2us local_3c; UnkStruct_ov019_020d24c8_28_258 local_34(0x8C, 0x00); local_40.x = local_34.mPos.x + UnkStruct_ov019_020d2170::data_ov019_020d215c.mUnk_00.x; @@ -413,22 +414,22 @@ ARM void FileSelectOptions::func_ov019_020cd41c() { this->mUnk_1064.mUnk_0C = true; } - Vec2s_cpp local_44; - Vec2s_cpp local_30; + Vec2s local_44; + Vec2s local_30; func_ov000_02062e44(&local_44, &this->mUnk_1388); local_30.x = local_44.x + data_ov019_020d2170.mUnk_10.x; local_30.y = local_44.y + data_ov019_020d2170.mUnk_10.y; this->mUnk_1420.func_ov000_0206415c(&local_30, 0, 0x0C, 0); - Vec2s_cpp local_4c; - Vec2s_cpp local_2c; + Vec2s local_4c; + Vec2s local_2c; func_ov000_02062e44(&local_4c, &this->mUnk_16AC); local_2c.x = local_4c.x + data_ov019_020d2170.mUnk_08.x; local_2c.y = local_4c.y + data_ov019_020d2170.mUnk_08.y; this->mUnk_1744.func_ov000_0206415c(&local_2c, 0, 0x0C, 0); - Vec2s_cpp local_54; - Vec2s_cpp local_38; + Vec2s local_54; + Vec2s local_38; func_ov000_02062e44(&local_54, &this->mUnk_19D0); local_38.x = local_54.x + data_ov019_020d2170.mUnk_00.x; local_38.y = local_54.y + data_ov019_020d2170.mUnk_00.y; @@ -440,11 +441,11 @@ ARM void FileSelectOptions::func_ov019_020cd5f8() { } ARM void FileSelectOptions::func_ov019_020cd614() { - Vec2us_cpp local_34; - Vec2s_cpp local_38; - Vec2us_cpp local_3c; - Vec2us_cpp local_40; - Vec2us_cpp local_44; + Vec2us local_34; + Vec2s local_38; + Vec2us local_3c; + Vec2us local_40; + Vec2us local_44; UnkStruct_ov019_020d24c8_28_258 local_30(0x8C, 0); @@ -606,7 +607,7 @@ ARM void FileSelectOptions::func_ov019_020cde9c() { ARM UnkStruct_ov019_020d24c8_2C_24::UnkStruct_ov019_020d24c8_2C_24(GameModeManagerBase_104_0C *param1, s32 saveSlotIndex) : mSaveSlotIndex(saveSlotIndex), - mUnk_004((Vec2s) {0, 0}), + mUnk_004(0, 0), mUnk_008(0, 0), mUnk_020(0x8C, 1), mUnk_258(0x8C, 4), diff --git a/src/025_Title/GameModeTitleScreen.cpp b/src/025_Title/GameModeTitleScreen.cpp index 1d01eb69..a421ebad 100644 --- a/src/025_Title/GameModeTitleScreen.cpp +++ b/src/025_Title/GameModeTitleScreen.cpp @@ -20,8 +20,6 @@ void func_ov001_020b6520(unk32 param1); UnkStruct_ov000_020a782c *func_ov000_020a782c(unk32 param1); } -const unk16 data_ov025_020c5a0c[] = {0x0016, 0x003C}; - ARM GameModeTitleScreen::GameModeTitleScreen() { func_0201659c(); data_02049a2c.func_02013370(2); diff --git a/src/025_Title/TitleScreen.cpp b/src/025_Title/TitleScreen.cpp index e2d08f1d..c0bfa80e 100644 --- a/src/025_Title/TitleScreen.cpp +++ b/src/025_Title/TitleScreen.cpp @@ -19,96 +19,6 @@ void func_ov000_0205be34(void *param1, unk32 param2); void func_ov000_0205bedc(void *param1, void *param2, void *param3, void *param4, unk32 param5, int); } -#if IS_JP -class UnkStruct_ov025_020c738c { -public: - /* 00 */ unk16 mUnk_00; - /* 02 */ unk16 mUnk_02; - /* 04 */ unk16 mUnk_04; - /* 06 */ unk16 mUnk_06; - /* 08 */ - - UnkStruct_ov025_020c738c() { - this->mUnk_04 = 0x100; - this->mUnk_06 = 0x20; - this->mUnk_00 = 0x100; - this->mUnk_02 = 0x20; - } -}; - -class UnkStruct_ov025_020c7394 { -public: - /* 00 */ unk16 mUnk_00; - /* 02 */ unk16 mUnk_02; - /* 04 */ - - UnkStruct_ov025_020c7394() { - this->mUnk_00 = 0x00; - this->mUnk_02 = 0x94; - } -}; - -class UnkStruct_ov025_020c7398 { -public: - /* 00 */ unk16 mUnk_00; - /* 02 */ unk16 mUnk_02; - /* 04 */ - - UnkStruct_ov025_020c7398() { - this->mUnk_00 = 0x100; - this->mUnk_02 = 0x80; - } -}; - -class UnkStruct_ov025_020c5ae0 { -public: - /* 00 */ u16 mUnk_00; - /* 02 */ u16 mUnk_02; - /* 04 */ unk16 mUnk_04; - /* 06 */ unk16 mUnk_06; - /* 08 */ unk16 mUnk_08; - /* 0A */ unk16 mUnk_0A; - /* 0C */ - - UnkStruct_ov025_020c5ae0() { - this->mUnk_04 = 0x00; - this->mUnk_06 = 0x00; - this->mUnk_08 = 0x00; - this->mUnk_0A = 0x20; - this->mUnk_00 = 0x100; - this->mUnk_02 = 0x80; - } -}; - -static const UnkStruct_ov025_020c5ae0 data_ov025_020c5ae0; -static const UnkStruct_ov025_020c738c data_ov025_020c738c; -static const UnkStruct_ov025_020c7394 data_ov025_020c7394; -static const UnkStruct_ov025_020c7398 data_ov025_020c7398; -#else -class UnkStruct_ov025_020c5ae0 { -public: - /* 00 */ u16 mUnk_00; - /* 02 */ u16 mUnk_02; - /* 04 */ unk16 mUnk_04; - /* 06 */ unk16 mUnk_06; - /* 08 */ unk16 mUnk_08; - /* 0A */ unk16 mUnk_0A; - /* 0C */ - - UnkStruct_ov025_020c5ae0() {} - UnkStruct_ov025_020c5ae0(unk16 param1, unk16 param2, unk16 param3, unk16 param4, unk16 param5, unk16 param6) { - this->mUnk_04 = param1; - this->mUnk_06 = param2; - this->mUnk_08 = param3; - this->mUnk_0A = param4; - this->mUnk_00 = param5; - this->mUnk_02 = param6; - } -}; - -static const UnkStruct_ov025_020c5ae0 data_ov025_020c5ae0(0x0000, 0x0020, 0x0100, 0x0080, 0x0100, 0x0080); -#endif - static TitleScreenPTMF data_ov025_020c5aec[TitleScreenState_Max] = { TitleScreen::func_ov025_020c5200, // TitleScreenState_None TitleScreen::func_ov025_020c5204, // TitleScreenState_IdleBeforeUI @@ -118,6 +28,20 @@ static TitleScreenPTMF data_ov025_020c5aec[TitleScreenState_Max] = TitleScreen::func_ov025_020c55e4, // TitleScreenState_ToFileSelect }; +#if IS_JP +static const Vec2s data_ov025_020c5ae4(0x0000, 0x0000); +static const Vec2s data_ov025_020c5ae8(0x0000, 0x0000); +static const Vec2us data_ov025_020c5ae0(0x0100, 0x0080); +static const Vec2s data_ov025_020c7398(0x0100, 0x0080); +static const Vec2s data_ov025_020c7394(0x0000, 0x0094); +static const Vec2s data_ov025_020c738e(0x0100, 0x0020); +static const Vec2s data_ov025_020c738c(0x0100, 0x0020); +#else +static const Vec2s data_ov025_020c5ae4(0x0000, 0x0020); +static const Vec2s data_ov025_020c5ae8(0x0100, 0x0080); +static const Vec2us data_ov025_020c5ae0(0x0100, 0x0080); +#endif + struct UnkStruct_StackTitleScreen { /* 00 */ unk32 pad[5]; /* 14 */ @@ -263,27 +187,6 @@ void TitleScreen::vfunc_08(GameModePTMFParam2Struct *param1, TouchControl *pTouc void TitleScreen::func_ov025_020c5200(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) {} -extern "C" inline void Test(TitleScreen *thisx, u16 flags) { - if ((flags & 1) != 0) { - thisx->mUnk_021 = 1; - } -} - -extern "C" inline void Test2(TitleScreen *thisx, u16 flags, GameModePTMFParam2Struct *param1) { - if ((flags & 2) != 0) { - if (thisx->mUnk_021) { - goto test; - } - } - - if (!(param1->mButtons & 8)) { - return; - } - -test: - thisx->func_ov025_020c4e54(); -} - // https://decomp.me/scratch/6nDGM void TitleScreen::func_ov025_020c5204(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) { if (pTouchControl->mFlags & 1) { @@ -419,20 +322,20 @@ void TitleScreen::vfunc_10(unk8 *param1) { if (param1[1] == 0 && this->mUnk_254.mUnk_6E) { #if IS_JP Vec2us pos1; - pos1.x = this->mUnk_23C.mPos.x + data_ov025_020c5ae0.mUnk_04; - pos1.y = this->mUnk_23C.mPos.y + data_ov025_020c5ae0.mUnk_06; + pos1.x = this->mUnk_23C.mPos.x + data_ov025_020c5ae4.x; + pos1.y = this->mUnk_23C.mPos.y + data_ov025_020c5ae4.y; data_0204af1c.func_0201aa44(&this->mUnk_23C, &pos1, 0, 0); UnkStruct_ov019_020d24c8_28_258 uStack_9c(0x59, 0x01); Vec2us pos2; - pos2.x = uStack_9c.mPos.x + data_ov025_020c5ae0.mUnk_04; - pos2.y = uStack_9c.mPos.y + data_ov025_020c5ae0.mUnk_06; + pos2.x = uStack_9c.mPos.x + data_ov025_020c5ae4.x; + pos2.y = uStack_9c.mPos.y + data_ov025_020c5ae4.y; data_0204af1c.func_0201aad0(&this->mUnk_254, &pos2, 0, 0); UnkStruct_ov019_020d24c8_28_258 uStack_b4(0x59, 0x00); Vec2us pos3; - pos3.x = uStack_b4.mPos.x + data_ov025_020c5ae0.mUnk_04; - pos3.y = uStack_b4.mPos.y + data_ov025_020c5ae0.mUnk_06; + pos3.x = uStack_b4.mPos.x + data_ov025_020c5ae4.x; + pos3.y = uStack_b4.mPos.y + data_ov025_020c5ae4.y; data_0204af1c.func_0201aad0(&this->mUnk_2CC, &pos3, 0, 0); #else data_0204af1c.func_0201aa44(&this->mUnk_23C, &this->mUnk_23C.mPos, 0, 0); @@ -479,7 +382,6 @@ struct stack_struct { bool mUnk_02; }; -// https://decomp.me/scratch/nXEa8 void TitleScreen_Sub2::vfunc_00() { stack_struct sp14; Vec2s sp10; @@ -487,17 +389,9 @@ void TitleScreen_Sub2::vfunc_00() { Vec2us sp8; func_ov000_0205be34(&sp14, 0x3E); - sp14.mUnk_02 = this->mUnk_10; - - sp8.x = data_ov025_020c5ae0.mUnk_00; - sp8.y = data_ov025_020c5ae0.mUnk_02; - - spC.x = data_ov025_020c5ae0.mUnk_08; - spC.y = data_ov025_020c5ae0.mUnk_0A; - - sp10.x = data_ov025_020c5ae0.mUnk_04; - sp10.y = data_ov025_020c5ae0.mUnk_06; - + sp8 = data_ov025_020c5ae0; + spC = data_ov025_020c5ae8; + sp10 = data_ov025_020c5ae4; func_ov000_0205bedc(&sp14, &sp10, &spC, &sp8, 0, 0); } diff --git a/src/025_Title/TitleScreenManager.cpp b/src/025_Title/TitleScreenManager.cpp index 5759e42e..7b83426f 100644 --- a/src/025_Title/TitleScreenManager.cpp +++ b/src/025_Title/TitleScreenManager.cpp @@ -1,6 +1,8 @@ #include "TitleScreen/TitleScreen.hpp" #include "regs.h" +const unk16 data_ov025_020c5a0c[] = {0x0016, 0x003C}; + extern "C" { void GX_SetGraphicsMode(unk32 param1, unk32 param2, unk32 param3); void GXS_SetGraphicsMode(unk32 param1); From adb508cc2f22efb7fc8f26f683a7a4cb5f94e66d Mon Sep 17 00:00:00 2001 From: Yanis002 <35189056+Yanis002@users.noreply.github.com> Date: Thu, 15 Jan 2026 18:46:13 +0100 Subject: [PATCH 4/5] regressions fix 1 --- config/eur/arm9/overlays/ov000/symbols.txt | 4 ++-- config/eur/arm9/overlays/ov019/symbols.txt | 8 ++++---- config/jp/arm9/overlays/ov000/symbols.txt | 2 +- config/jp/arm9/overlays/ov019/symbols.txt | 8 ++++---- include/FileSelect/FileSelect.hpp | 2 +- include/FileSelect/FileSelectMicTest.hpp | 2 +- include/FileSelect/FileSelectOptions.hpp | 2 +- include/FileSelect/FileSelectOptionsManager.hpp | 2 +- src/019_MainSelect/FileSelectMicTest.cpp | 2 +- src/019_MainSelect/FileSelectOptions.cpp | 4 ++-- src/019_MainSelect/FileSelectSubScreen.cpp | 2 +- 11 files changed, 19 insertions(+), 19 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 02c34d90..a437b1b7 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -500,9 +500,9 @@ _ZN23GameModeManagerBase_104C1Ev kind:function(arm,size=0x48) addr:0x02061b2c _ZN23GameModeManagerBase_104D1Ev kind:function(arm,size=0x70) addr:0x02061b74 _ZN23GameModeManagerBase_104D0Ev kind:function(arm,size=0x78) addr:0x02061be4 _ZN23GameModeManagerBase_104D2Ev kind:function(arm,size=0x70) addr:0x02061c5c -_ZN23GameModeManagerBase_1048vfunc_08Ei kind:function(arm,size=0x4) addr:0x02061ccc +_ZN23GameModeManagerBase_1048vfunc_08EP24GameModePTMFParam2StructP12TouchControl kind:function(arm,size=0x4) addr:0x02061ccc _ZN23GameModeManagerBase_1048vfunc_0CEi kind:function(arm,size=0x4) addr:0x02061cd0 -_ZN23GameModeManagerBase_1048vfunc_10Ev kind:function(arm,size=0x4) addr:0x02061cd4 +_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 diff --git a/config/eur/arm9/overlays/ov019/symbols.txt b/config/eur/arm9/overlays/ov019/symbols.txt index 4ab201fe..8ae8889b 100644 --- a/config/eur/arm9/overlays/ov019/symbols.txt +++ b/config/eur/arm9/overlays/ov019/symbols.txt @@ -146,14 +146,14 @@ _ZN24FileSelectOptionsManager6CreateEPvi kind:function(arm,size=0x34) addr:0x020 _ZN24FileSelectOptionsManagerC1EPvi kind:function(arm,size=0xb8) addr:0x020cc5f4 _ZN24FileSelectOptionsManagerD1Ev kind:function(arm,size=0x6c) addr:0x020cc6ac _ZN24FileSelectOptionsManagerD0Ev kind:function(arm,size=0x74) addr:0x020cc718 -_ZN24FileSelectOptionsManager8vfunc_08Ev kind:function(arm,size=0xd0) addr:0x020cc78c +_ZN24FileSelectOptionsManager8vfunc_08EP24GameModePTMFParam2StructP12TouchControl kind:function(arm,size=0xd0) addr:0x020cc78c _ZN24FileSelectOptionsManager19func_ov019_020cc85cEi kind:function(arm,size=0x18) addr:0x020cc85c _ZN24FileSelectOptionsManager19func_ov019_020cc874Ev kind:function(arm,size=0xc) addr:0x020cc874 _ZN17FileSelectOptionsC1Ei kind:function(arm,size=0x298) addr:0x020cc880 _ZN17FileSelectOptionsD1Ev kind:function(arm,size=0x110) addr:0x020ccb18 _ZN17FileSelectOptionsD0Ev kind:function(arm,size=0x118) addr:0x020ccc28 _ZN17FileSelectOptions19func_ov019_020ccd40Ev kind:function(arm,size=0x38) addr:0x020ccd40 -_ZN17FileSelectOptions8vfunc_08Ev kind:function(arm,size=0x38) addr:0x020ccd78 +_ZN17FileSelectOptions8vfunc_08EP24GameModePTMFParam2StructP12TouchControl kind:function(arm,size=0x38) addr:0x020ccd78 _ZN17FileSelectOptions8vfunc_10EPc kind:function(arm,size=0x44) addr:0x020ccdb0 _ZN17FileSelectOptions19func_ov019_020ccdf4Ev kind:function(arm,size=0x10) addr:0x020ccdf4 _ZN17FileSelectOptions19func_ov019_020cce04Ev kind:function(arm,size=0x2c) addr:0x020cce04 @@ -195,7 +195,7 @@ _ZN17FileSelectMicTest19func_ov019_020cea70Ev kind:function(arm,size=0x4) addr:0 _ZN17FileSelectMicTest19func_ov019_020cea74Ev kind:function(arm,size=0x38) addr:0x020cea74 _ZN17FileSelectMicTest19func_ov019_020ceaacEv kind:function(arm,size=0x120) addr:0x020ceaac _ZN17FileSelectMicTest19func_ov019_020cebccEv kind:function(arm,size=0x98) addr:0x020cebcc -_ZN17FileSelectMicTest8vfunc_08Ev kind:function(arm,size=0x2a0) addr:0x020cec64 +_ZN17FileSelectMicTest8vfunc_08EP24GameModePTMFParam2StructP12TouchControl kind:function(arm,size=0x2a0) addr:0x020cec64 _ZN17FileSelectMicTest8vfunc_10EPc kind:function(arm,size=0x68) addr:0x020cef04 _ZN17FileSelectMicTest8vfunc_14EPc kind:function(arm,size=0x78) addr:0x020cef6c _ZN17FileSelectMicTest19func_ov019_020cefe4Ev kind:function(arm,size=0x14) addr:0x020cefe4 @@ -205,7 +205,7 @@ _ZN31UnkStruct_ov019_020d24c8_28_27019func_ov019_020cf130Ev kind:function(arm,si _ZN31UnkStruct_ov019_020d24c8_28_27019func_ov019_020cf168Ev kind:function(arm,size=0xb4) addr:0x020cf168 _ZN31UnkStruct_ov019_020d24c8_28_27019func_ov019_020cf21cEv kind:function(arm,size=0x70) addr:0x020cf21c _ZN19FileSelectSubScreenC1Ev kind:function(arm,size=0x35c) addr:0x020cf28c -_ZN19FileSelectSubScreen8vfunc_08Ev kind:function(arm,size=0x154) addr:0x020cf5e8 +_ZN19FileSelectSubScreen8vfunc_08EP24GameModePTMFParam2StructP12TouchControl kind:function(arm,size=0x154) addr:0x020cf5e8 _ZN19FileSelectSubScreen19func_ov019_020cf73cEii kind:function(arm,size=0x120) addr:0x020cf73c _ZN19FileSelectSubScreen8vfunc_10EPc kind:function(arm,size=0x14) addr:0x020cf85c _ZN13UnkStructSub2C1Ev kind:function(arm,size=0x18c) addr:0x020cf870 diff --git a/config/jp/arm9/overlays/ov000/symbols.txt b/config/jp/arm9/overlays/ov000/symbols.txt index ebab5618..9982d341 100644 --- a/config/jp/arm9/overlays/ov000/symbols.txt +++ b/config/jp/arm9/overlays/ov000/symbols.txt @@ -502,7 +502,7 @@ _ZN23GameModeManagerBase_104D0Ev kind:function(arm,size=0x78) addr:0x0206316c _ZN23GameModeManagerBase_104D2Ev kind:function(arm,size=0x70) addr:0x020631e4 _ZN23GameModeManagerBase_1048vfunc_08Ei kind:function(arm,size=0x4) addr:0x02063254 _ZN23GameModeManagerBase_1048vfunc_0CEi kind:function(arm,size=0x4) addr:0x02063258 -_ZN23GameModeManagerBase_1048vfunc_10Ev kind:function(arm,size=0x4) addr:0x0206325c +_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 diff --git a/config/jp/arm9/overlays/ov019/symbols.txt b/config/jp/arm9/overlays/ov019/symbols.txt index 0cb74b0c..42ecefe9 100644 --- a/config/jp/arm9/overlays/ov019/symbols.txt +++ b/config/jp/arm9/overlays/ov019/symbols.txt @@ -146,14 +146,14 @@ _ZN24FileSelectOptionsManager6CreateEPvi kind:function(arm,size=0x34) addr:0x020 _ZN24FileSelectOptionsManagerC1EPvi kind:function(arm,size=0xb8) addr:0x020cde14 _ZN24FileSelectOptionsManagerD1Ev kind:function(arm,size=0x6c) addr:0x020cdecc _ZN24FileSelectOptionsManagerD0Ev kind:function(arm,size=0x74) addr:0x020cdf38 -_ZN24FileSelectOptionsManager8vfunc_08Ev kind:function(arm,size=0xd0) addr:0x020cdfac +_ZN24FileSelectOptionsManager8vfunc_08EP24GameModePTMFParam2StructP12TouchControl kind:function(arm,size=0xd0) addr:0x020cdfac _ZN24FileSelectOptionsManager19func_ov019_020cc85cEi kind:function(arm,size=0x18) addr:0x020ce07c _ZN24FileSelectOptionsManager19func_ov019_020cc874Ev kind:function(arm,size=0xc) addr:0x020ce094 _ZN17FileSelectOptionsC1Ei kind:function(arm,size=0x298) addr:0x020ce0a0 _ZN17FileSelectOptionsD1Ev kind:function(arm,size=0x110) addr:0x020ce338 _ZN17FileSelectOptionsD0Ev kind:function(arm,size=0x118) addr:0x020ce448 _ZN17FileSelectOptions19func_ov019_020ccd40Ev kind:function(arm,size=0x38) addr:0x020ce560 -_ZN17FileSelectOptions8vfunc_08Ev kind:function(arm,size=0x38) addr:0x020ce598 +_ZN17FileSelectOptions8vfunc_08EP24GameModePTMFParam2StructP12TouchControl kind:function(arm,size=0x38) addr:0x020ce598 _ZN17FileSelectOptions8vfunc_10EPc kind:function(arm,size=0x44) addr:0x020ce5d0 _ZN17FileSelectOptions19func_ov019_020ccdf4Ev kind:function(arm,size=0x10) addr:0x020ce614 _ZN17FileSelectOptions19func_ov019_020cce04Ev kind:function(arm,size=0x2c) addr:0x020ce624 @@ -195,7 +195,7 @@ _ZN17FileSelectMicTest19func_ov019_020cea70Ev kind:function(arm,size=0x4) addr:0 _ZN17FileSelectMicTest19func_ov019_020cea74Ev kind:function(arm,size=0x38) addr:0x020d0294 _ZN17FileSelectMicTest19func_ov019_020ceaacEv kind:function(arm,size=0x120) addr:0x020d02cc _ZN17FileSelectMicTest19func_ov019_020cebccEv kind:function(arm,size=0x98) addr:0x020d03ec -_ZN17FileSelectMicTest8vfunc_08Ev kind:function(arm,size=0x2a0) addr:0x020d0484 +_ZN17FileSelectMicTest8vfunc_08EP24GameModePTMFParam2StructP12TouchControl kind:function(arm,size=0x2a0) addr:0x020d0484 _ZN17FileSelectMicTest8vfunc_10EPc kind:function(arm,size=0x68) addr:0x020d0724 _ZN17FileSelectMicTest8vfunc_14EPc kind:function(arm,size=0x78) addr:0x020d078c _ZN17FileSelectMicTest19func_ov019_020cefe4Ev kind:function(arm,size=0x14) addr:0x020d0804 @@ -205,7 +205,7 @@ _ZN31UnkStruct_ov019_020d24c8_28_27019func_ov019_020cf130Ev kind:function(arm,si _ZN31UnkStruct_ov019_020d24c8_28_27019func_ov019_020cf168Ev kind:function(arm,size=0xb4) addr:0x020d0988 _ZN31UnkStruct_ov019_020d24c8_28_27019func_ov019_020cf21cEv kind:function(arm,size=0x70) addr:0x020d0a3c _ZN19FileSelectSubScreenC1Ev kind:function(arm,size=0x35c) addr:0x020d0aac -_ZN19FileSelectSubScreen8vfunc_08Ev kind:function(arm,size=0x154) addr:0x020d0e08 +_ZN19FileSelectSubScreen8vfunc_08EP24GameModePTMFParam2StructP12TouchControl kind:function(arm,size=0x154) addr:0x020d0e08 _ZN19FileSelectSubScreen19func_ov019_020cf73cEii kind:function(arm,size=0x120) addr:0x020d0f5c _ZN19FileSelectSubScreen8vfunc_10EPc kind:function(arm,size=0x14) addr:0x020d107c _ZN13UnkStructSub2C1Ev kind:function(arm,size=0x18c) addr:0x020d1090 diff --git a/include/FileSelect/FileSelect.hpp b/include/FileSelect/FileSelect.hpp index 2d68af68..abed69a0 100644 --- a/include/FileSelect/FileSelect.hpp +++ b/include/FileSelect/FileSelect.hpp @@ -70,7 +70,7 @@ class FileSelectSubScreen : public FileSelect_UnkClass2_Sub4_Base { // data_ov019_020d22b8 vtable /* 00 */ virtual ~FileSelectSubScreen() override {} - /* 08 */ virtual void vfunc_08() override; + /* 08 */ virtual void vfunc_08(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) override; /* 10 */ virtual void vfunc_10(unk8 *param1) override; }; diff --git a/include/FileSelect/FileSelectMicTest.hpp b/include/FileSelect/FileSelectMicTest.hpp index ef50d9c2..8db3fba5 100644 --- a/include/FileSelect/FileSelectMicTest.hpp +++ b/include/FileSelect/FileSelectMicTest.hpp @@ -87,7 +87,7 @@ class FileSelectMicTest : public GameModeManagerBase_104 { // data_ov019_020d2284 vtable /* 00 */ virtual ~FileSelectMicTest() override; - /* 08 */ virtual void vfunc_08() override; + /* 08 */ virtual void vfunc_08(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) override; /* 10 */ virtual void vfunc_10(unk8 *param1) override; /* 14 */ virtual void vfunc_14(unk8 *param1) override; }; diff --git a/include/FileSelect/FileSelectOptions.hpp b/include/FileSelect/FileSelectOptions.hpp index a8586a7f..f4bd31c6 100644 --- a/include/FileSelect/FileSelectOptions.hpp +++ b/include/FileSelect/FileSelectOptions.hpp @@ -166,7 +166,7 @@ class FileSelectOptions : public GameModeManagerBase_104 { // data_ov019_020d2200 vtable /* 00 */ virtual ~FileSelectOptions() override; - /* 08 */ virtual void vfunc_08() override; + /* 08 */ virtual void vfunc_08(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) override; /* 10 */ virtual void vfunc_10(unk8 *param1) override; static GameModeManagerBase_104 *Create(void *param1, s32 saveSlotIndex); diff --git a/include/FileSelect/FileSelectOptionsManager.hpp b/include/FileSelect/FileSelectOptionsManager.hpp index 57f2012d..77835385 100644 --- a/include/FileSelect/FileSelectOptionsManager.hpp +++ b/include/FileSelect/FileSelectOptionsManager.hpp @@ -35,7 +35,7 @@ class FileSelectOptionsManager : public OptionsManagerAssessor, // data_ov019_020d2224 vtable /* 00 */ virtual ~FileSelectOptionsManager() override; - /* 08 */ virtual void vfunc_08() override; + /* 08 */ virtual void vfunc_08(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) override; static GameModeManagerBase_104 *Create(void *param1, s32 saveSlotIndex); }; diff --git a/src/019_MainSelect/FileSelectMicTest.cpp b/src/019_MainSelect/FileSelectMicTest.cpp index a295d835..369323f5 100644 --- a/src/019_MainSelect/FileSelectMicTest.cpp +++ b/src/019_MainSelect/FileSelectMicTest.cpp @@ -138,7 +138,7 @@ ARM void FileSelectMicTest::func_ov019_020cebcc() { this->mUnk_304.mUnk_0A4.func_ov000_0206415c(&local_10, 7, data_ov019_020d2248.mUnk_00, 0); } -ARM void FileSelectMicTest::vfunc_08() { +ARM void FileSelectMicTest::vfunc_08(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) { switch (this->mState) { case FSMicTestState_MicTestIdle: this->mUnk_270.func_ov019_020cf168(); diff --git a/src/019_MainSelect/FileSelectOptions.cpp b/src/019_MainSelect/FileSelectOptions.cpp index a178e9f1..b13467f2 100644 --- a/src/019_MainSelect/FileSelectOptions.cpp +++ b/src/019_MainSelect/FileSelectOptions.cpp @@ -119,7 +119,7 @@ ARM FileSelectOptionsManager::~FileSelectOptionsManager() { this->mpOptions = NULL; } -ARM void FileSelectOptionsManager::vfunc_08() { +ARM void FileSelectOptionsManager::vfunc_08(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) { if (this->mUnk_20 == 0) { return; } @@ -213,7 +213,7 @@ ARM void FileSelectOptions::func_ov019_020ccd40() { CALL_PTMF(PTMF, data_ov019_020d21c0[this->mState]); } -ARM void FileSelectOptions::vfunc_08() { +ARM void FileSelectOptions::vfunc_08(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) { CALL_PTMF(PTMF, data_ov019_020d2188[this->mState]); } diff --git a/src/019_MainSelect/FileSelectSubScreen.cpp b/src/019_MainSelect/FileSelectSubScreen.cpp index fade6901..2bdc1e0e 100644 --- a/src/019_MainSelect/FileSelectSubScreen.cpp +++ b/src/019_MainSelect/FileSelectSubScreen.cpp @@ -79,7 +79,7 @@ ARM FileSelectSubScreen::FileSelectSubScreen() : this->func_ov019_020cf73c(2, 1); } -ARM void FileSelectSubScreen::vfunc_08() { +ARM void FileSelectSubScreen::vfunc_08(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) { this->mUnk_0024 = this->mUnk_0020; this->mUnk_0020 += 0x800; From 41ef314e35867b997d1e8eec920fdf1228213f85 Mon Sep 17 00:00:00 2001 From: Yanis002 <35189056+Yanis002@users.noreply.github.com> Date: Thu, 15 Jan 2026 19:02:03 +0100 Subject: [PATCH 5/5] regressions fix 2 --- include/Unknown/Common.hpp | 66 +++++++++++++++++++++++- include/nitro/math.h | 13 ++--- src/019_MainSelect/FileSelectMain.cpp | 34 ++++++------ src/019_MainSelect/FileSelectOptions.cpp | 22 ++++---- 4 files changed, 100 insertions(+), 35 deletions(-) diff --git a/include/Unknown/Common.hpp b/include/Unknown/Common.hpp index 340b3b6e..9890a9e7 100644 --- a/include/Unknown/Common.hpp +++ b/include/Unknown/Common.hpp @@ -110,6 +110,67 @@ class UnkSubStruct1 : public SysObject { pPos->y = local_4c.y; } } + + void UnkOperations2(Vec2s *pPos, bool doSetPos) { + int iVar1; + + if (this->mUnk_08 != 0) { + iVar1 = this->mUnk_08 - this->mUnk_0D; + this->mUnk_08 = CLAMP2(iVar1, 0, 0xFFFF); + } else { + if (this->mUnk_0A) { + if (this->mUnk_04 < this->mUnk_06) { + iVar1 = this->mUnk_04 + this->mUnk_0D; + + if (iVar1 > this->mUnk_06) { + iVar1 = this->mUnk_06; + } else if (iVar1 < 0) { + iVar1 = 0; + } + + this->mUnk_04 = iVar1; + this->vfunc_00(); + + if (this->mUnk_04 >= this->mUnk_06) { + this->mUnk_10 = this->mUnk_20; + this->mUnk_14 = this->mUnk_24; + this->mUnk_0A = false; + this->mUnk_0C = true; + } + } + } else { + if (this->mUnk_0B && this->mUnk_04 != 0) { + iVar1 = this->mUnk_04 - this->mUnk_0D; + + if (iVar1 > this->mUnk_06) { + iVar1 = this->mUnk_06; + } else if (iVar1 < 0) { + iVar1 = 0; + } + + this->mUnk_04 = iVar1; + this->vfunc_04(); + + if (this->mUnk_04 == 0) { + this->mUnk_10 = this->mUnk_18; + this->mUnk_14 = this->mUnk_1C; + this->mUnk_0B = false; + this->mUnk_0C = true; + } + } + } + } + + if (doSetPos) { + Vec2us local_4c_copy; + Vec2us local_4c; + func_0201e8d4(&local_4c_copy, this); + local_4c.x = local_4c_copy.y; + local_4c.y = local_4c_copy.x; + pPos->x = local_4c.x; + pPos->y = local_4c.y; + } + } }; class UnkSystem2_UnkSubSystem1_Base { @@ -461,7 +522,10 @@ class UnkStruct_ov019_020d24c8_28_258 { /* 00 */ void *mUnk_00; /* 04 */ unk32 mUnk_04; /* 08 */ unk16 mUnk_08; - /* 0A */ Vec2s mPos; + /* 0A */ union { //! TODO: figure out + Vec2s mPos; + Vec2us mPosU; + }; /* 0E */ unk16 mUnk_0E; /* 10 */ unk16 mUnk_10; /* 12 */ unk16 mUnk_12; diff --git a/include/nitro/math.h b/include/nitro/math.h index 579b5084..e8e1f3e6 100644 --- a/include/nitro/math.h +++ b/include/nitro/math.h @@ -10,6 +10,7 @@ extern "C" { #define ABS(x) ((x) < 0 ? -(x) : (x)) #define CLAMP(x, min, max) ((x) > (max) ? (max) : (x) < (min) ? (min) : (x)) +#define CLAMP2(x, min, max) ((x) > (max) ? (max) : (x) >= (min) ? (x) : (min)) // Q20.12 fixed point number typedef s32 q20; @@ -176,12 +177,6 @@ typedef struct Vec2b { /* 2 */ } Vec2b; -typedef struct Vec2s { - /* 0 */ s16 x; - /* 1 */ s16 y; - /* 2 */ -} Vec2s; - typedef struct Vec2us { /* 0 */ u16 x; /* 2 */ u16 y; @@ -244,6 +239,12 @@ typedef struct Mat4p { extern "C" { #endif +typedef struct VEC2S { + /* 0 */ s16 x; + /* 1 */ s16 y; + /* 2 */ +} VEC2S; + u32 func_01ff9f3c(s32 a, s32 b); s32 Atan2(s32 x, s32 y); diff --git a/src/019_MainSelect/FileSelectMain.cpp b/src/019_MainSelect/FileSelectMain.cpp index 668afd18..27f19bc1 100644 --- a/src/019_MainSelect/FileSelectMain.cpp +++ b/src/019_MainSelect/FileSelectMain.cpp @@ -298,8 +298,8 @@ ARM void FileSelectMain::func_ov019_020c6e3c() { unaff_r4 = 0; UnkStruct_ov019_020d24c8_28_258 local_3c(0x8A, 0x05); - local_40.x = local_3c.mPos.x; - local_40.y = local_3c.mPos.y; + local_40.x = local_3c.mPosU.x; + local_40.y = local_3c.mPosU.y; unaff_r9 = 10; func_ov000_02062e44(auStack_50, &this->GetUnk03E0(fileIndex).mUnk_004); @@ -1257,9 +1257,9 @@ ARM void FileSelectMain::func_ov019_020c92dc() { this->GetUnk03E0(i).mUnk_004.mUnk_2A = false; } - this->mUnk_00BC.UnkOperations(&this->mUnk_005C.mPos, true); + this->mUnk_00BC.UnkOperations2(&this->mUnk_005C.mPos, true); - this->mUnk_1078.UnkOperations(&this->mUnk_0DA4.mPos, true); + this->mUnk_1078.UnkOperations2(&this->mUnk_0DA4.mPos, true); UnkStruct_ov019_020d24c8_28_258 local_30(0x8B, 0x06); Vec2s local_5c; Vec2s local_58; @@ -1268,7 +1268,7 @@ ARM void FileSelectMain::func_ov019_020c92dc() { this->mUnk_1144.mUnk_5C.x = local_58.x + local_30.mPos.x - local_5c.x; this->mUnk_1144.mUnk_5C.y = local_58.y + local_30.mPos.y - local_5c.y; - this->mUnk_1490.UnkOperations(&this->mUnk_11BC.mPos, true); + this->mUnk_1490.UnkOperations2(&this->mUnk_11BC.mPos, true); UnkStruct_ov019_020d24c8_28_258 local_48(0x8B, 0x06); Vec2s local_60; Vec2s local_64; @@ -1277,8 +1277,8 @@ ARM void FileSelectMain::func_ov019_020c92dc() { this->mUnk_1144.mUnk_5C.x = local_64.x + local_48.mPos.x - local_60.x; this->mUnk_1144.mUnk_5C.y = local_64.y + local_48.mPos.y - local_60.y; - this->mUnk_18A8.UnkOperations(&this->mUnk_15D4.mPos, true); - this->mUnk_1BC0.UnkOperations(&this->mUnk_18EC.mPos, true); + this->mUnk_18A8.UnkOperations2(&this->mUnk_15D4.mPos, true); + this->mUnk_1BC0.UnkOperations2(&this->mUnk_18EC.mPos, true); this->mUnk_1144.func_ov000_020609c4(); this->mUnk_155C.func_ov000_020609c4(); @@ -1373,9 +1373,9 @@ ARM void FileSelectMain::func_ov019_020c9d88() { } ARM void FileSelectMain::func_ov019_020c9e08() { - this->mUnk_00BC.UnkOperations(&this->mUnk_005C.mPos, true); + this->mUnk_00BC.UnkOperations2(&this->mUnk_005C.mPos, true); - this->mUnk_1100.UnkOperations(&this->mUnk_0DA4.mPos, true); + this->mUnk_1100.UnkOperations2(&this->mUnk_0DA4.mPos, true); UnkStruct_ov019_020d24c8_28_258 local_30(0x8B, 0x06); Vec2s local_5c; Vec2s local_58; @@ -1384,7 +1384,7 @@ ARM void FileSelectMain::func_ov019_020c9e08() { this->mUnk_1144.mUnk_5C.x = local_58.x + local_30.mPos.x - local_5c.x; this->mUnk_1144.mUnk_5C.y = local_58.y + local_30.mPos.y - local_5c.y; - this->mUnk_1518.UnkOperations(&this->mUnk_11BC.mPos, true); + this->mUnk_1518.UnkOperations2(&this->mUnk_11BC.mPos, true); UnkStruct_ov019_020d24c8_28_258 local_48(0x8B, 0x05); Vec2s local_6c; Vec2s local_68; @@ -1393,8 +1393,8 @@ ARM void FileSelectMain::func_ov019_020c9e08() { this->mUnk_155C.mUnk_5C.x = local_68.x + local_48.mPos.x - local_6c.x; this->mUnk_155C.mUnk_5C.y = local_68.y + local_48.mPos.y - local_6c.y; - this->mUnk_18A8.UnkOperations(&this->mUnk_15D4.mPos, true); - this->mUnk_1BC0.UnkOperations(&this->mUnk_18EC.mPos, true); + this->mUnk_18A8.UnkOperations2(&this->mUnk_15D4.mPos, true); + this->mUnk_1BC0.UnkOperations2(&this->mUnk_18EC.mPos, true); this->mUnk_1144.func_ov000_020609c4(); this->mUnk_155C.func_ov000_020609c4(); @@ -1460,9 +1460,9 @@ ARM void FileSelectMain::func_ov019_020ca940() { this->GetUnk03E0(i).mUnk_004.mUnk_2A = false; } - this->mUnk_00BC.UnkOperations(&this->mUnk_005C.mPos, true); + this->mUnk_00BC.UnkOperations2(&this->mUnk_005C.mPos, true); - this->mUnk_1100.UnkOperations(&this->mUnk_0DA4.mPos, true); + this->mUnk_1100.UnkOperations2(&this->mUnk_0DA4.mPos, true); UnkStruct_ov019_020d24c8_28_258 local_30(0x8B, 0x06); Vec2s local_5c; Vec2s local_58; @@ -1471,7 +1471,7 @@ ARM void FileSelectMain::func_ov019_020ca940() { this->mUnk_1144.mUnk_5C.x = local_58.x + local_30.mPos.x - local_5c.x; this->mUnk_1144.mUnk_5C.y = local_58.y + local_30.mPos.y - local_5c.y; - this->mUnk_1518.UnkOperations(&this->mUnk_11BC.mPos, true); + this->mUnk_1518.UnkOperations2(&this->mUnk_11BC.mPos, true); UnkStruct_ov019_020d24c8_28_258 local_48(0x8B, 0x05); Vec2s local_6c; Vec2s local_68; @@ -1480,8 +1480,8 @@ ARM void FileSelectMain::func_ov019_020ca940() { this->mUnk_155C.mUnk_5C.x = local_68.x + local_48.mPos.x - local_6c.x; this->mUnk_155C.mUnk_5C.y = local_68.y + local_48.mPos.y - local_6c.y; - this->mUnk_18A8.UnkOperations(&this->mUnk_15D4.mPos, true); - this->mUnk_1BC0.UnkOperations(&this->mUnk_18EC.mPos, true); + this->mUnk_18A8.UnkOperations2(&this->mUnk_15D4.mPos, true); + this->mUnk_1BC0.UnkOperations2(&this->mUnk_18EC.mPos, true); this->mUnk_1144.func_ov000_020609c4(); this->mUnk_155C.func_ov000_020609c4(); diff --git a/src/019_MainSelect/FileSelectOptions.cpp b/src/019_MainSelect/FileSelectOptions.cpp index b13467f2..84ae8595 100644 --- a/src/019_MainSelect/FileSelectOptions.cpp +++ b/src/019_MainSelect/FileSelectOptions.cpp @@ -20,8 +20,8 @@ class UnkStruct_ov019_020d215c { /* 00 */ Vec2s mUnk_00; /* 04 */ Vec2s mUnk_04; /* 08 */ Vec2s mUnk_08; - /* 0C */ Vec2s mUnk_0C; - /* 10 */ Vec2s mUnk_10; + /* 0C */ VEC2S mUnk_0C; + /* 10 */ VEC2S mUnk_10; /* 14 */ }; @@ -68,7 +68,7 @@ class UnkStruct_ov019_020d2170 { }; UnkStruct_ov019_020d215c UnkStruct_ov019_020d2170::data_ov019_020d215c = { - Vec2s(0, 0), Vec2s(0, 0), Vec2s(0, 0), Vec2s(-0x47, -0x0), Vec2s(0x0281, 0x00), + Vec2s(), Vec2s(), Vec2s(), {-0x47, -0x01}, {0x0281, 0x00}, }; static const UnkStruct_ov019_020d2170 data_ov019_020d2170; @@ -362,10 +362,10 @@ ARM void FileSelectOptions::func_ov019_020cd16c() { } UnkStruct_ov019_020d24c8_28_258 local_34(0x8C, 0x00); - local_58.x = local_34.mPos.x + UnkStruct_ov019_020d2170::data_ov019_020d215c.mUnk_08.x; - local_58.y = local_34.mPos.y + UnkStruct_ov019_020d2170::data_ov019_020d215c.mUnk_08.y; - local_54.y = local_34.mPos.y; - local_54.x = local_34.mPos.x; + local_58.x = local_34.mPosU.x + UnkStruct_ov019_020d2170::data_ov019_020d215c.mUnk_08.x; + 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.mUnk_0A = true; @@ -401,10 +401,10 @@ ARM void FileSelectOptions::func_ov019_020cd41c() { Vec2us local_3c; UnkStruct_ov019_020d24c8_28_258 local_34(0x8C, 0x00); - local_40.x = local_34.mPos.x + UnkStruct_ov019_020d2170::data_ov019_020d215c.mUnk_00.x; - local_40.y = local_34.mPos.y + UnkStruct_ov019_020d2170::data_ov019_020d215c.mUnk_00.y; - local_3c.x = local_34.mPos.x; - local_3c.y = local_34.mPos.y; + local_40.x = local_34.mPosU.x + UnkStruct_ov019_020d2170::data_ov019_020d215c.mUnk_00.x; + 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.mUnk_0A = true; this->mUnk_1064.mUnk_0C = false;