From e80f625b50ee2aaafe2a4359242cab37da11e822 Mon Sep 17 00:00:00 2001 From: Yanis <35189056+Yanis002@users.noreply.github.com> Date: Mon, 4 Aug 2025 13:33:17 +0200 Subject: [PATCH] Decompile `031_Land/Actor/ActorRupee.cpp` (#3) * delink ActorRupee and match few functions * add missing functions, mangle names and match func_ov031_020e9d54 * random stuff (literally) * decomp more of ActorRupee * rng stuff (thanks to aetias) * decomp more of ActorRupee (36%) * sync symbols * format * random: fixed wrong function call in configure.py * decomp more of ActorRupee (51%) * add actor ids and move them to their own header + small docs on actor class * format * improvements and small progress * progress * progress * sync eur with jp * fix build issues * missed a file --- config/eur/arm9/delinks.txt | 3 + config/eur/arm9/itcm/symbols.txt | 4 +- config/eur/arm9/overlays/ov000/symbols.txt | 18 +- config/eur/arm9/overlays/ov017/symbols.txt | 2 +- config/eur/arm9/overlays/ov031/delinks.txt | 3 + config/eur/arm9/overlays/ov031/relocs.txt | 6 +- config/eur/arm9/overlays/ov031/symbols.txt | 112 +-- config/jp/arm9/delinks.txt | 3 + config/jp/arm9/itcm/symbols.txt | 6 +- config/jp/arm9/overlays/ov000/symbols.txt | 28 +- config/jp/arm9/overlays/ov017/symbols.txt | 4 +- config/jp/arm9/overlays/ov031/delinks.txt | 3 + config/jp/arm9/overlays/ov031/relocs.txt | 6 +- config/jp/arm9/overlays/ov031/symbols.txt | 122 +-- config/jp/arm9/symbols.txt | 10 +- include/Actor/Actor.hpp | 25 +- include/Actor/ActorId.hpp | 530 +++++++++++++ include/Actor/ActorRupee.hpp | 153 ++++ include/Actor/ActorUnk_ov000_0209767c.hpp | 36 + include/Item/ItemManager.hpp | 1 + include/Player/PlayerGet.hpp | 134 ++++ include/System/Random.hpp | 27 + include/Unknown/UnkStruct_027e09a8.hpp | 11 + include/Unknown/UnkStruct_027e0cd8.hpp | 23 + include/Unknown/UnkStruct_027e0ce0.hpp | 8 +- include/Unknown/UnkStruct_027e0ce4.hpp | 16 + include/Unknown/UnkStruct_027e0cec.hpp | 13 + include/Unknown/UnkStruct_ov000_0208f820.hpp | 70 ++ src/031_Land/Actor/ActorRupee.cpp | 789 +++++++++++++++++++ src/Main/func_02017ea4.cpp | 10 + tools/configure.py | 2 +- 31 files changed, 2007 insertions(+), 171 deletions(-) create mode 100644 include/Actor/ActorId.hpp create mode 100644 include/Actor/ActorRupee.hpp create mode 100644 include/Actor/ActorUnk_ov000_0209767c.hpp create mode 100644 include/Player/PlayerGet.hpp create mode 100644 include/System/Random.hpp create mode 100644 include/Unknown/UnkStruct_027e09a8.hpp create mode 100644 include/Unknown/UnkStruct_027e0ce4.hpp create mode 100644 include/Unknown/UnkStruct_027e0cec.hpp create mode 100644 include/Unknown/UnkStruct_ov000_0208f820.hpp create mode 100644 src/031_Land/Actor/ActorRupee.cpp create mode 100644 src/Main/func_02017ea4.cpp diff --git a/config/eur/arm9/delinks.txt b/config/eur/arm9/delinks.txt index 221c7fa9..ac106f9e 100644 --- a/config/eur/arm9/delinks.txt +++ b/config/eur/arm9/delinks.txt @@ -17,3 +17,6 @@ libs/cpp/src/__register_global_object.c: complete .text start:0x0203ce74 end:0x0203ce94 .bss start:0x02051ad4 end:0x02051ad8 + +src/Main/func_02017ea4.cpp: + .text start:0x02017ea4 end:0x02017f38 diff --git a/config/eur/arm9/itcm/symbols.txt b/config/eur/arm9/itcm/symbols.txt index 73611beb..32e6fb21 100644 --- a/config/eur/arm9/itcm/symbols.txt +++ b/config/eur/arm9/itcm/symbols.txt @@ -200,7 +200,7 @@ func_01fff2a8 kind:function(arm,size=0x24) addr:0x01fff2a8 func_01fff2cc kind:function(arm,size=0x30) addr:0x01fff2cc func_01fff2fc kind:function(arm,size=0x54) addr:0x01fff2fc func_01fff350 kind:function(arm,size=0x64) addr:0x01fff350 -func_01fff3b4 kind:function(arm,size=0x8c) addr:0x01fff3b4 +_ZN18UnkStruct_027e0ce413func_01fff3b4Ei kind:function(arm,size=0x8c) addr:0x01fff3b4 func_01fff440 kind:function(arm,size=0x18) addr:0x01fff440 func_01fff458 kind:function(arm,size=0xc) addr:0x01fff458 func_01fff464 kind:function(arm,size=0x34) addr:0x01fff464 @@ -209,7 +209,7 @@ func_01fff4cc kind:function(arm,size=0x54) addr:0x01fff4cc func_01fff520 kind:function(arm,size=0x64) addr:0x01fff520 func_01fff584 kind:function(arm,size=0xc) addr:0x01fff584 func_01fff590 kind:function(arm,size=0x40) addr:0x01fff590 -func_01fff5d0 kind:function(arm,size=0x3c) addr:0x01fff5d0 +_ZN10ActorRupee13func_01fff5d0Eii kind:function(arm,size=0x3c) addr:0x01fff5d0 func_01fff60c kind:function(arm,size=0x8c) addr:0x01fff60c func_01fff698 kind:function(arm,size=0x38) addr:0x01fff698 func_01fff6d0 kind:function(arm,size=0x74) addr:0x01fff6d0 diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 790452b1..ac19ce5a 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -1061,7 +1061,7 @@ func_ov000_02071934 kind:function(arm,size=0x60) addr:0x02071934 func_ov000_02071994 kind:function(arm,size=0x1c) addr:0x02071994 func_ov000_020719b0 kind:function(arm,size=0xc4) addr:0x020719b0 func_ov000_02071a74 kind:function(arm,size=0xbc) addr:0x02071a74 -func_ov000_02071b30 kind:function(arm,size=0xa4) addr:0x02071b30 +_ZN18UnkStruct_027e09a819func_ov000_02071b30EiP5Vec3pi kind:function(arm,size=0xa4) addr:0x02071b30 func_ov000_02071bd4 kind:function(arm,size=0x90) addr:0x02071bd4 func_ov000_02071c64 kind:function(arm,size=0x2c) addr:0x02071c64 func_ov000_02071c90 kind:function(arm,size=0xa4) addr:0x02071c90 @@ -2263,7 +2263,7 @@ func_ov000_020975c0 kind:function(arm,size=0x1c) addr:0x020975c0 func_ov000_020975dc kind:function(arm,size=0x1c) addr:0x020975dc _ZN8Actor_5c19func_ov000_020975f8Ev kind:function(arm,size=0x78) addr:0x020975f8 func_ov000_02097670 kind:function(arm,size=0xc) addr:0x02097670 -func_ov000_0209767c kind:function(arm,size=0xa8) addr:0x0209767c +_ZN23ActorUnk_ov000_0209767cC2Ej kind:function(arm,size=0xa8) addr:0x0209767c func_ov000_02097724 kind:function(arm,size=0x28) addr:0x02097724 func_ov000_0209774c kind:function(arm,size=0x8) addr:0x0209774c func_ov000_02097754 kind:function(arm,size=0x7c) addr:0x02097754 @@ -2289,8 +2289,8 @@ func_ov000_02097a88 kind:function(arm,size=0x70) addr:0x02097a88 func_ov000_02097af8 kind:function(arm,size=0x70) addr:0x02097af8 func_ov000_02097b68 kind:function(arm,size=0x1c) addr:0x02097b68 func_ov000_02097b84 kind:function(arm,size=0x34) addr:0x02097b84 -func_ov000_02097bb8 kind:function(arm,size=0x34) addr:0x02097bb8 -func_ov000_02097bec kind:function(arm,size=0x28) addr:0x02097bec +_ZN8Actor_9cC1Ev kind:function(arm,size=0x34) addr:0x02097bb8 +_ZN8Actor_9c19func_ov000_02097becEv kind:function(arm,size=0x28) addr:0x02097bec func_ov000_02097c14 kind:function(arm,size=0xc) addr:0x02097c14 func_ov000_02097c20 kind:function(arm,size=0x80) addr:0x02097c20 func_ov000_02097ca0 kind:function(arm,size=0x7c) addr:0x02097ca0 @@ -2311,7 +2311,7 @@ func_ov000_020982c0 kind:function(arm,size=0x18) addr:0x020982c0 func_ov000_020982d8 kind:function(arm,size=0x80) addr:0x020982d8 func_ov000_02098358 kind:function(arm,size=0x14) addr:0x02098358 func_ov000_0209836c kind:function(arm,size=0x1c) addr:0x0209836c -_ZN5ActorC1Ev kind:function(arm,size=0xe8) addr:0x02098388 +_ZN5ActorC2Ev kind:function(arm,size=0xe8) addr:0x02098388 _ZN5ActorD1Ev kind:function(arm,size=0x4) addr:0x02098470 _ZN5ActorD0Ev kind:function(arm,size=0x14) addr:0x02098474 _ZN5ActorD2Ev kind:function(arm,size=0x4) addr:0x02098488 @@ -2342,7 +2342,7 @@ func_ov000_02098778 kind:function(arm,size=0x88) addr:0x02098778 func_ov000_02098800 kind:function(arm,size=0x38) addr:0x02098800 func_ov000_02098838 kind:function(arm,size=0x28) addr:0x02098838 func_ov000_02098860 kind:function(arm,size=0xb0) addr:0x02098860 -func_ov000_02098910 kind:function(arm,size=0xd0) addr:0x02098910 +_ZN5Actor19func_ov000_02098910Eii kind:function(arm,size=0xd0) addr:0x02098910 func_ov000_020989e0 kind:function(arm,size=0x38) addr:0x020989e0 func_ov000_02098a18 kind:function(arm,size=0x48) addr:0x02098a18 func_ov000_02098a60 kind:function(arm,size=0x28) addr:0x02098a60 @@ -2672,14 +2672,14 @@ func_ov000_0209fea0 kind:function(arm,size=0xc) addr:0x0209fea0 func_ov000_0209feac kind:function(arm,size=0x78) addr:0x0209feac func_ov000_0209ff24 kind:function(arm,size=0x28) addr:0x0209ff24 func_ov000_0209ff4c kind:function(arm,size=0x40) addr:0x0209ff4c -func_ov000_0209ff8c kind:function(arm,size=0x74) addr:0x0209ff8c +_ZN18UnkStruct_027e0cec19func_ov000_0209ff8cEP22UnkStruct_PlayerGet_eciP5Vec3pi kind:function(arm,size=0x74) addr:0x0209ff8c func_ov000_020a0000 kind:function(arm,size=0xa0) addr:0x020a0000 func_ov000_020a00a0 kind:function(arm,size=0x34) addr:0x020a00a0 func_ov000_020a00d4 kind:function(arm,size=0x3c) addr:0x020a00d4 func_ov000_020a0110 kind:function(arm,size=0x30) addr:0x020a0110 func_ov000_020a0140 kind:function(arm,size=0xe0) addr:0x020a0140 func_ov000_020a0220 kind:function(arm,size=0xb4) addr:0x020a0220 -func_ov000_020a02d4 kind:function(arm,size=0x30) addr:0x020a02d4 +_ZN22UnkStruct_PlayerGet_ecD1Ev kind:function(arm,size=0x30) addr:0x020a02d4 func_ov000_020a0304 kind:function(arm,size=0x30) addr:0x020a0304 func_ov000_020a0334 kind:function(arm,size=0x38) addr:0x020a0334 func_ov000_020a036c kind:function(arm,size=0x20) addr:0x020a036c @@ -2999,7 +2999,7 @@ _ZN11ItemManager19func_ov000_020a86a4Ev kind:function(arm,size=0x2c) addr:0x020a _ZN11ItemManager19func_ov000_020a86d0Ej kind:function(arm,size=0x58) addr:0x020a86d0 _ZN11ItemManager19func_ov000_020a8728Ev kind:function(arm,size=0x20) addr:0x020a8728 _ZN11ItemManager19func_ov000_020a8748Ev kind:function(arm,size=0x20) addr:0x020a8748 -func_ov000_020a8768 kind:function(arm,size=0x60) addr:0x020a8768 +_ZN11ItemManager19func_ov000_020a8768Eiii kind:function(arm,size=0x60) addr:0x020a8768 _ZN11ItemManager19func_ov000_020a87c8Ei kind:function(arm,size=0x24) addr:0x020a87c8 _ZN11ItemManager19func_ov000_020a87ecEi kind:function(arm,size=0x34) addr:0x020a87ec _ZN11ItemManager19func_ov000_020a8820Ei kind:function(arm,size=0x34) addr:0x020a8820 diff --git a/config/eur/arm9/overlays/ov017/symbols.txt b/config/eur/arm9/overlays/ov017/symbols.txt index e84db5a2..16947f5f 100644 --- a/config/eur/arm9/overlays/ov017/symbols.txt +++ b/config/eur/arm9/overlays/ov017/symbols.txt @@ -75,7 +75,7 @@ func_ov017_020bf894 kind:function(arm,size=0x60) addr:0x020bf894 func_ov017_020bf8f4 kind:function(arm,size=0x44) addr:0x020bf8f4 func_ov017_020bf938 kind:function(arm,size=0x64) addr:0x020bf938 func_ov017_020bf99c kind:function(arm,size=0x2c) addr:0x020bf99c -func_ov017_020bf9c8 kind:function(arm,size=0x88) addr:0x020bf9c8 +_ZN10ActorRupee19func_ov017_020bf9c8EP27UnkStruct_func_01fff3b4_ret kind:function(arm,size=0x88) addr:0x020bf9c8 func_ov017_020bfa50 kind:function(arm,size=0x84) addr:0x020bfa50 func_ov017_020bfad4 kind:function(arm,size=0x44) addr:0x020bfad4 func_ov017_020bfb18 kind:function(arm,size=0x238) addr:0x020bfb18 diff --git a/config/eur/arm9/overlays/ov031/delinks.txt b/config/eur/arm9/overlays/ov031/delinks.txt index cd72d791..e679206a 100644 --- a/config/eur/arm9/overlays/ov031/delinks.txt +++ b/config/eur/arm9/overlays/ov031/delinks.txt @@ -5,3 +5,6 @@ .data start:0x021128a0 end:0x02116380 kind:data align:32 .bss start:0x02116380 end:0x02118fc0 kind:bss align:32 +src/031_Land/Actor/ActorRupee.cpp: + .text start:0x020e8cb8 end:0x020ea018 + .data start:0x02113488 end:0x02113520 diff --git a/config/eur/arm9/overlays/ov031/relocs.txt b/config/eur/arm9/overlays/ov031/relocs.txt index 2f9d1d43..e05f3e83 100644 --- a/config/eur/arm9/overlays/ov031/relocs.txt +++ b/config/eur/arm9/overlays/ov031/relocs.txt @@ -1766,14 +1766,14 @@ from:0x020e8cc0 kind:load to:0x021166e8 module:overlay(31) from:0x020e8cd4 kind:arm_call to:0x02011f3c module:main from:0x020e8ce0 kind:arm_call to:0x020e8da8 module:overlay(31) from:0x020e8cf4 kind:arm_call to:0x0209767c module:overlay(0) -from:0x020e8d28 kind:load to:0x021134a8 module:overlay(31) +from:0x020e8d28 kind:load to:0x021134a0 add:8 module:overlay(31) from:0x020e8d54 kind:arm_call to:0x020975f8 module:overlay(0) from:0x020e8d94 kind:arm_call to:0x020973f4 module:overlay(0) from:0x020e8da0 kind:load to:0x020b539c module:overlay(0) from:0x020e8db0 kind:arm_call to:0x02098388 module:overlay(0) from:0x020e8dd8 kind:arm_call to:0x02097bb8 module:overlay(0) from:0x020e8dec kind:arm_call to:0x020e9ef0 module:overlay(31) -from:0x020e8e14 kind:load to:0x021134cc module:overlay(31) +from:0x020e8e14 kind:load to:0x021134c4 add:8 module:overlay(31) from:0x020e8e28 kind:arm_call to:0x020e9d54 module:overlay(31) from:0x020e8e64 kind:arm_call to:0x02098a60 module:overlay(0) from:0x020e8e94 kind:arm_call to:0x020e9904 module:overlay(31) @@ -1872,7 +1872,7 @@ from:0x020e9d4c kind:load to:0x02113468 module:overlay(31) from:0x020e9d9c kind:arm_call to:0x020e9e5c module:overlay(31) from:0x020e9e54 kind:arm_call to:0x020984d0 module:overlay(0) from:0x020e9f04 kind:arm_call to:0x020f6284 module:overlay(31) -from:0x020e9f24 kind:load to:0x02113490 module:overlay(31) +from:0x020e9f24 kind:load to:0x02113488 add:8 module:overlay(31) from:0x020e9f4c kind:arm_call to:0x020e9904 module:overlay(31) from:0x020e9f5c kind:arm_call to:0x020f62e4 module:overlay(31) from:0x020e9f7c kind:arm_call to:0x020e9904 module:overlay(31) diff --git a/config/eur/arm9/overlays/ov031/symbols.txt b/config/eur/arm9/overlays/ov031/symbols.txt index 6b01ecee..45ad3924 100644 --- a/config/eur/arm9/overlays/ov031/symbols.txt +++ b/config/eur/arm9/overlays/ov031/symbols.txt @@ -556,55 +556,55 @@ func_ov031_020e8c08 kind:function(arm,size=0x44) addr:0x020e8c08 func_ov031_020e8c4c kind:function(arm,size=0x28) addr:0x020e8c4c func_ov031_020e8c74 kind:function(arm,size=0x30) addr:0x020e8c74 func_ov031_020e8ca4 kind:function(arm,size=0x14) addr:0x020e8ca4 -func_ov031_020e8cb8 kind:function(arm,size=0xc) addr:0x020e8cb8 -func_ov031_020e8cc4 kind:function(arm,size=0x24) addr:0x020e8cc4 -func_ov031_020e8ce8 kind:function(arm,size=0x44) addr:0x020e8ce8 -func_ov031_020e8d2c kind:function(arm,size=0x7c) addr:0x020e8d2c -func_ov031_020e8da8 kind:function(arm,size=0x74) addr:0x020e8da8 -func_ov031_020e8e1c kind:function(arm,size=0x1d0) addr:0x020e8e1c -func_ov031_020e8fec kind:function(arm,size=0x7c) addr:0x020e8fec -func_ov031_020e9068 kind:function(arm,size=0xa0) addr:0x020e9068 -func_ov031_020e9108 kind:function(arm,size=0xa0) addr:0x020e9108 -func_ov031_020e91a8 kind:function(arm,size=0x8c) addr:0x020e91a8 -func_ov031_020e9234 kind:function(arm,size=0x20) addr:0x020e9234 -func_ov031_020e9254 kind:function(arm,size=0x8c) addr:0x020e9254 -func_ov031_020e92e0 kind:function(arm,size=0x30) addr:0x020e92e0 -func_ov031_020e9310 kind:function(arm,size=0x118) addr:0x020e9310 -func_ov031_020e9428 kind:function(arm,size=0x4) addr:0x020e9428 -func_ov031_020e942c kind:function(arm,size=0x4) addr:0x020e942c -func_ov031_020e9430 kind:function(arm,size=0x4) addr:0x020e9430 -func_ov031_020e9434 kind:function(arm,size=0x4) addr:0x020e9434 -func_ov031_020e9438 kind:function(arm,size=0x18) addr:0x020e9438 -func_ov031_020e9450 kind:function(arm,size=0x84) addr:0x020e9450 -func_ov031_020e94d4 kind:function(arm,size=0x48) addr:0x020e94d4 -func_ov031_020e951c kind:function(arm,size=0x7c) addr:0x020e951c -func_ov031_020e9598 kind:function(arm,size=0x14) addr:0x020e9598 -func_ov031_020e95ac kind:function(arm,size=0x4) addr:0x020e95ac -func_ov031_020e95b0 kind:function(arm,size=0x10) addr:0x020e95b0 -func_ov031_020e95c0 kind:function(arm,size=0x50) addr:0x020e95c0 -func_ov031_020e9610 kind:function(arm,size=0x14) addr:0x020e9610 -func_ov031_020e9624 kind:function(arm,size=0x14) addr:0x020e9624 -func_ov031_020e9638 kind:function(arm,size=0x84) addr:0x020e9638 -func_ov031_020e96bc kind:function(arm,size=0x50) addr:0x020e96bc -func_ov031_020e970c kind:function(arm,size=0x34) addr:0x020e970c -func_ov031_020e9740 kind:function(arm,size=0xf8) addr:0x020e9740 -func_ov031_020e9838 kind:function(arm,size=0x8c) addr:0x020e9838 -func_ov031_020e98c4 kind:function(arm,size=0x40) addr:0x020e98c4 -func_ov031_020e9904 kind:function(arm,size=0x54) addr:0x020e9904 -func_ov031_020e9958 kind:function(arm,size=0x230) addr:0x020e9958 -func_ov031_020e9b88 kind:function(arm,size=0x60) addr:0x020e9b88 -func_ov031_020e9be8 kind:function(arm,size=0x44) addr:0x020e9be8 -func_ov031_020e9c2c kind:function(arm,size=0x128) addr:0x020e9c2c -func_ov031_020e9d54 kind:function(arm,size=0x40) addr:0x020e9d54 -func_ov031_020e9d94 kind:function(arm,size=0xc8) addr:0x020e9d94 -func_ov031_020e9e5c kind:function(arm,size=0x94) addr:0x020e9e5c -func_ov031_020e9ef0 kind:function(arm,size=0x38) addr:0x020e9ef0 -func_ov031_020e9f28 kind:function(arm,size=0x44) addr:0x020e9f28 -func_ov031_020e9f6c kind:function(arm,size=0x20) addr:0x020e9f6c -func_ov031_020e9f8c kind:function(arm,size=0x28) addr:0x020e9f8c -func_ov031_020e9fb4 kind:function(arm,size=0x1c) addr:0x020e9fb4 -func_ov031_020e9fd0 kind:function(arm,size=0x20) addr:0x020e9fd0 -func_ov031_020e9ff0 kind:function(arm,size=0x28) addr:0x020e9ff0 +_ZN10ActorRupee19func_ov031_020e8cb8Ev kind:function(arm,size=0xc) addr:0x020e8cb8 +_ZN14ActorRupeeBase6CreateEv kind:function(arm,size=0x24) addr:0x020e8cc4 +_ZN14ActorRupeeBaseC1Ev kind:function(arm,size=0x44) addr:0x020e8ce8 +_ZN10ActorRupee19func_ov031_020e8d2cEv kind:function(arm,size=0x7c) addr:0x020e8d2c +_ZN10ActorRupeeC1Ev kind:function(arm,size=0x74) addr:0x020e8da8 +_ZN10ActorRupee8vfunc_18Ev kind:function(arm,size=0x1d0) addr:0x020e8e1c +_ZN10ActorRupee19func_ov031_020e8fecEv kind:function(arm,size=0x7c) addr:0x020e8fec +_ZN10ActorRupee19func_ov031_020e9068Ev kind:function(arm,size=0xa0) addr:0x020e9068 +_ZN10ActorRupee19func_ov031_020e9108Ev kind:function(arm,size=0xa0) addr:0x020e9108 +_ZN10ActorRupee19func_ov031_020e91a8Ev kind:function(arm,size=0x8c) addr:0x020e91a8 +_ZN10ActorRupee19func_ov031_020e9234Ev kind:function(arm,size=0x20) addr:0x020e9234 +_ZN10ActorRupee19func_ov031_020e9254Ev kind:function(arm,size=0x8c) addr:0x020e9254 +_ZN10ActorRupee19func_ov031_020e92e0Ev kind:function(arm,size=0x30) addr:0x020e92e0 +_ZN10ActorRupee19func_ov031_020e9310Ev kind:function(arm,size=0x118) addr:0x020e9310 +_ZN10ActorRupee19func_ov031_020e9428Ev kind:function(arm,size=0x4) addr:0x020e9428 +_ZN10ActorRupee19func_ov031_020e942cEv kind:function(arm,size=0x4) addr:0x020e942c +_ZN10ActorRupee19func_ov031_020e9430Ev kind:function(arm,size=0x4) addr:0x020e9430 +_ZN10ActorRupee19func_ov031_020e9434Ev kind:function(arm,size=0x4) addr:0x020e9434 +_ZN10ActorRupee19func_ov031_020e9438Ev kind:function(arm,size=0x18) addr:0x020e9438 +_ZN10ActorRupee19func_ov031_020e9450Ev kind:function(arm,size=0x84) addr:0x020e9450 +_ZN10ActorRupee19func_ov031_020e94d4Ev kind:function(arm,size=0x48) addr:0x020e94d4 +_ZN10ActorRupee19func_ov031_020e951cEv kind:function(arm,size=0x7c) addr:0x020e951c +_ZN10ActorRupee19func_ov031_020e9598Ev kind:function(arm,size=0x14) addr:0x020e9598 +_ZN10ActorRupee19func_ov031_020e95acEv kind:function(arm,size=0x4) addr:0x020e95ac +_ZN10ActorRupee19func_ov031_020e95b0Ev kind:function(arm,size=0x10) addr:0x020e95b0 +_ZN10ActorRupee19func_ov031_020e95c0Ev kind:function(arm,size=0x50) addr:0x020e95c0 +_ZN10ActorRupee19func_ov031_020e9610Ev kind:function(arm,size=0x14) addr:0x020e9610 +_ZN10ActorRupee19func_ov031_020e9624Ev kind:function(arm,size=0x14) addr:0x020e9624 +_ZN10ActorRupee19func_ov031_020e9638Ev kind:function(arm,size=0x84) addr:0x020e9638 +_ZN10ActorRupee19func_ov031_020e96bcEv kind:function(arm,size=0x50) addr:0x020e96bc +_ZN10ActorRupee19func_ov031_020e970cEv kind:function(arm,size=0x34) addr:0x020e970c +_ZN10ActorRupee19func_ov031_020e9740Ev kind:function(arm,size=0xf8) addr:0x020e9740 +_ZN10ActorRupee19func_ov031_020e9838Ev kind:function(arm,size=0x8c) addr:0x020e9838 +_ZN10ActorRupee19func_ov031_020e98c4Ev kind:function(arm,size=0x40) addr:0x020e98c4 +_ZN10ActorRupee19func_ov031_020e9904Ei kind:function(arm,size=0x54) addr:0x020e9904 +_ZN10ActorRupee8vfunc_20Ev kind:function(arm,size=0x230) addr:0x020e9958 +_ZN10ActorRupee19func_ov031_020e9b88Ev kind:function(arm,size=0x60) addr:0x020e9b88 +_ZN10ActorRupee19func_ov031_020e9be8Ev kind:function(arm,size=0x44) addr:0x020e9be8 +_ZN10ActorRupee8vfunc_2cEv kind:function(arm,size=0x128) addr:0x020e9c2c +_ZN10ActorRupee19func_ov031_020e9d54Ev kind:function(arm,size=0x40) addr:0x020e9d54 +_ZN10ActorRupee19func_ov031_020e9d94Ev kind:function(arm,size=0xc8) addr:0x020e9d94 +_ZN10ActorRupee19func_ov031_020e9e5cEv kind:function(arm,size=0x94) addr:0x020e9e5c +_ZN8Actor_c4C1EP5Actor kind:function(arm,size=0x38) addr:0x020e9ef0 +_ZN8Actor_c48vfunc_00Eii kind:function(arm,size=0x44) addr:0x020e9f28 +_ZN8Actor_c48vfunc_04Ev kind:function(arm,size=0x20) addr:0x020e9f6c +_ZN8Actor_c48vfunc_0cEi kind:function(arm,size=0x28) addr:0x020e9f8c +_ZN8Actor_c48vfunc_08Ev kind:function(arm,size=0x1c) addr:0x020e9fb4 +_ZN10ActorRupeeD1Ev kind:function(arm,size=0x20) addr:0x020e9fd0 +_ZN10ActorRupeeD0Ev kind:function(arm,size=0x28) addr:0x020e9ff0 func_ov031_020ea018 kind:function(arm,size=0x14) addr:0x020ea018 func_ov031_020ea02c kind:function(thumb,size=0x8) addr:0x020ea02c func_ov031_020ea034 kind:function(thumb,size=0x4) addr:0x020ea034 @@ -1003,11 +1003,11 @@ func_ov031_020f61f0 kind:function(arm,size=0x50) addr:0x020f61f0 func_ov031_020f6240 kind:function(arm,size=0x14) addr:0x020f6240 func_ov031_020f6254 kind:function(arm,size=0x1c) addr:0x020f6254 func_ov031_020f6270 kind:function(arm,size=0x14) addr:0x020f6270 -func_ov031_020f6284 kind:function(arm,size=0x60) addr:0x020f6284 +_ZN13Actor_c4_BaseC2EPvi kind:function(arm,size=0x60) addr:0x020f6284 func_ov031_020f62e4 kind:function(arm,size=0x90) addr:0x020f62e4 -func_ov031_020f6374 kind:function(arm,size=0x8) addr:0x020f6374 -func_ov031_020f637c kind:function(arm,size=0x8) addr:0x020f637c -func_ov031_020f6384 kind:function(arm,size=0x8) addr:0x020f6384 +_ZN8Actor_c419func_ov031_020f6374Ev kind:function(arm,size=0x8) addr:0x020f6374 +_ZN8Actor_c419func_ov031_020f637cEv kind:function(arm,size=0x8) addr:0x020f637c +_ZN8Actor_c419func_ov031_020f6384Ei kind:function(arm,size=0x8) addr:0x020f6384 func_ov031_020f638c kind:function(arm,size=0x4c) addr:0x020f638c func_ov031_020f63d8 kind:function(arm,size=0x14) addr:0x020f63d8 func_ov031_020f63ec kind:function(arm,size=0x5c) addr:0x020f63ec @@ -2289,9 +2289,9 @@ data_ov031_021133f0 kind:data(any) addr:0x021133f0 data_ov031_02113414 kind:data(any) addr:0x02113414 data_ov031_02113468 kind:data(any) addr:0x02113468 data_ov031_02113478 kind:data(any) addr:0x02113478 -data_ov031_02113490 kind:data(any) addr:0x02113490 -data_ov031_021134a8 kind:data(any) addr:0x021134a8 -data_ov031_021134cc kind:data(any) addr:0x021134cc +_ZTV8Actor_c4 kind:data(any) addr:0x02113488 +_ZTV14ActorRupeeBase kind:data(any) addr:0x021134a0 +_ZTV10ActorRupee kind:data(any) addr:0x021134c4 data_ov031_02113520 kind:data(any) addr:0x02113520 data_ov031_02113588 kind:data(any) addr:0x02113588 data_ov031_021135f0 kind:data(any) addr:0x021135f0 diff --git a/config/jp/arm9/delinks.txt b/config/jp/arm9/delinks.txt index c4cc517f..9788af52 100644 --- a/config/jp/arm9/delinks.txt +++ b/config/jp/arm9/delinks.txt @@ -17,3 +17,6 @@ libs/cpp/src/__register_global_object.c: complete .text start:0x0203e3a4 end:0x0203e3c4 .bss start:0x02053054 end:0x02053058 + +src/Main/func_02017ea4.cpp: + .text start:0x02017e3c end:0x02017ed0 diff --git a/config/jp/arm9/itcm/symbols.txt b/config/jp/arm9/itcm/symbols.txt index b68e6d9a..32e6fb21 100644 --- a/config/jp/arm9/itcm/symbols.txt +++ b/config/jp/arm9/itcm/symbols.txt @@ -97,7 +97,7 @@ func_01ffb618 kind:function(arm,size=0x2c) addr:0x01ffb618 func_01ffb644 kind:function(arm,size=0x28) addr:0x01ffb644 func_01ffb66c kind:function(arm,size=0x3c) addr:0x01ffb66c func_01ffb6a8 kind:function(arm,size=0x3c) addr:0x01ffb6a8 -func_01ffb6e4 kind:function(arm,size=0x30) addr:0x01ffb6e4 +Vec3p_Add kind:function(arm,size=0x30) addr:0x01ffb6e4 func_01ffb714 kind:function(arm,size=0x30) addr:0x01ffb714 Vec3p_Dot kind:function(arm,size=0x3c) addr:0x01ffb744 func_01ffb780 kind:function(arm,size=0x80) addr:0x01ffb780 @@ -200,7 +200,7 @@ func_01fff2a8 kind:function(arm,size=0x24) addr:0x01fff2a8 func_01fff2cc kind:function(arm,size=0x30) addr:0x01fff2cc func_01fff2fc kind:function(arm,size=0x54) addr:0x01fff2fc func_01fff350 kind:function(arm,size=0x64) addr:0x01fff350 -func_01fff3b4 kind:function(arm,size=0x8c) addr:0x01fff3b4 +_ZN18UnkStruct_027e0ce413func_01fff3b4Ei kind:function(arm,size=0x8c) addr:0x01fff3b4 func_01fff440 kind:function(arm,size=0x18) addr:0x01fff440 func_01fff458 kind:function(arm,size=0xc) addr:0x01fff458 func_01fff464 kind:function(arm,size=0x34) addr:0x01fff464 @@ -209,7 +209,7 @@ func_01fff4cc kind:function(arm,size=0x54) addr:0x01fff4cc func_01fff520 kind:function(arm,size=0x64) addr:0x01fff520 func_01fff584 kind:function(arm,size=0xc) addr:0x01fff584 func_01fff590 kind:function(arm,size=0x40) addr:0x01fff590 -func_01fff5d0 kind:function(arm,size=0x3c) addr:0x01fff5d0 +_ZN10ActorRupee13func_01fff5d0Eii kind:function(arm,size=0x3c) addr:0x01fff5d0 func_01fff60c kind:function(arm,size=0x8c) addr:0x01fff60c func_01fff698 kind:function(arm,size=0x38) addr:0x01fff698 func_01fff6d0 kind:function(arm,size=0x74) addr:0x01fff6d0 diff --git a/config/jp/arm9/overlays/ov000/symbols.txt b/config/jp/arm9/overlays/ov000/symbols.txt index 2d71bad9..d47c363f 100644 --- a/config/jp/arm9/overlays/ov000/symbols.txt +++ b/config/jp/arm9/overlays/ov000/symbols.txt @@ -1062,7 +1062,7 @@ func_ov000_02072fec kind:function(arm,size=0x60) addr:0x02072fec func_ov000_0207304c kind:function(arm,size=0x1c) addr:0x0207304c func_ov000_02073068 kind:function(arm,size=0xc4) addr:0x02073068 func_ov000_0207312c kind:function(arm,size=0xbc) addr:0x0207312c -func_ov000_020731e8 kind:function(arm,size=0xa4) addr:0x020731e8 +_ZN18UnkStruct_027e09a819func_ov000_02071b30EiP5Vec3pi kind:function(arm,size=0xa4) addr:0x020731e8 func_ov000_0207328c kind:function(arm,size=0x90) addr:0x0207328c func_ov000_0207331c kind:function(arm,size=0x2c) addr:0x0207331c func_ov000_02073348 kind:function(arm,size=0xa4) addr:0x02073348 @@ -2260,7 +2260,7 @@ func_ov000_02098cfc kind:function(arm,size=0x78) addr:0x02098cfc func_ov000_02098d74 kind:function(arm,size=0x1c) addr:0x02098d74 func_ov000_02098d90 kind:function(arm,size=0x1c) addr:0x02098d90 func_ov000_02098dac kind:function(arm,size=0x78) addr:0x02098dac -func_ov000_02098e24 kind:function(arm,size=0xa8) addr:0x02098e24 +_ZN23ActorUnk_ov000_0209767cC2Ej kind:function(arm,size=0xa8) addr:0x02098e24 func_ov000_02098ecc kind:function(arm,size=0x28) addr:0x02098ecc func_ov000_02098ef4 kind:function(arm,size=0x8) addr:0x02098ef4 func_ov000_02098efc kind:function(arm,size=0x7c) addr:0x02098efc @@ -2286,8 +2286,8 @@ func_ov000_02099230 kind:function(arm,size=0x70) addr:0x02099230 func_ov000_020992a0 kind:function(arm,size=0x70) addr:0x020992a0 func_ov000_02099310 kind:function(arm,size=0x1c) addr:0x02099310 func_ov000_0209932c kind:function(arm,size=0x34) addr:0x0209932c -func_ov000_02099360 kind:function(arm,size=0x34) addr:0x02099360 -func_ov000_02099394 kind:function(arm,size=0x28) addr:0x02099394 +_ZN8Actor_9cC1Ev kind:function(arm,size=0x34) addr:0x02099360 +_ZN8Actor_9c19func_ov000_02097becEv kind:function(arm,size=0x28) addr:0x02099394 func_ov000_020993bc kind:function(arm,size=0xc) addr:0x020993bc func_ov000_020993c8 kind:function(arm,size=0x80) addr:0x020993c8 func_ov000_02099448 kind:function(arm,size=0x7c) addr:0x02099448 @@ -2308,10 +2308,10 @@ func_ov000_02099a68 kind:function(arm,size=0x18) addr:0x02099a68 func_ov000_02099a80 kind:function(arm,size=0x80) addr:0x02099a80 func_ov000_02099b00 kind:function(arm,size=0x14) addr:0x02099b00 func_ov000_02099b14 kind:function(arm,size=0x1c) addr:0x02099b14 -func_ov000_02099b30 kind:function(arm,size=0xe8) addr:0x02099b30 +_ZN5ActorC2Ev kind:function(arm,size=0xe8) addr:0x02099b30 func_ov000_02099c18 kind:function(arm,size=0x4) addr:0x02099c18 func_ov000_02099c1c kind:function(arm,size=0x14) addr:0x02099c1c -func_ov000_02099c30 kind:function(arm,size=0x4) addr:0x02099c30 +_ZN5ActorD2Ev kind:function(arm,size=0x4) addr:0x02099c30 func_ov000_02099c34 kind:function(arm,size=0x1c) addr:0x02099c34 func_ov000_02099c50 kind:function(arm,size=0x8) addr:0x02099c50 func_ov000_02099c58 kind:function(arm,size=0x4) addr:0x02099c58 @@ -2321,7 +2321,7 @@ func_ov000_02099c64 kind:function(arm,size=0x4) addr:0x02099c64 func_ov000_02099c68 kind:function(arm,size=0x4) addr:0x02099c68 func_ov000_02099c6c kind:function(arm,size=0x4) addr:0x02099c6c func_ov000_02099c70 kind:function(arm,size=0x8) addr:0x02099c70 -func_ov000_02099c78 kind:function(arm,size=0x20) addr:0x02099c78 +_ZN5Actor19func_ov000_020984d0Ev kind:function(arm,size=0x20) addr:0x02099c78 func_ov000_02099c98 kind:function(arm,size=0x28) addr:0x02099c98 func_ov000_02099cc0 kind:function(arm,size=0x24) addr:0x02099cc0 func_ov000_02099ce4 kind:function(arm,size=0x18) addr:0x02099ce4 @@ -2337,13 +2337,13 @@ func_ov000_02099e5c kind:function(arm,size=0x48) addr:0x02099e5c func_ov000_02099ea4 kind:function(arm,size=0x7c) addr:0x02099ea4 func_ov000_02099f20 kind:function(arm,size=0x88) addr:0x02099f20 func_ov000_02099fa8 kind:function(arm,size=0x38) addr:0x02099fa8 -func_ov000_02099fe0 kind:function(arm,size=0x28) addr:0x02099fe0 +func_ov000_02098838 kind:function(arm,size=0x28) addr:0x02099fe0 func_ov000_0209a008 kind:function(arm,size=0xb0) addr:0x0209a008 -func_ov000_0209a0b8 kind:function(arm,size=0xd0) addr:0x0209a0b8 +_ZN5Actor19func_ov000_02098910Eii kind:function(arm,size=0xd0) addr:0x0209a0b8 func_ov000_0209a188 kind:function(arm,size=0x38) addr:0x0209a188 func_ov000_0209a1c0 kind:function(arm,size=0x48) addr:0x0209a1c0 func_ov000_0209a208 kind:function(arm,size=0x28) addr:0x0209a208 -func_ov000_0209a230 kind:function(arm,size=0x2c) addr:0x0209a230 +_ZN10ActorRupee19func_ov000_02098a88Eii kind:function(arm,size=0x2c) addr:0x0209a230 func_ov000_0209a25c kind:function(arm,size=0x74) addr:0x0209a25c func_ov000_0209a2d0 kind:function(arm,size=0x64) addr:0x0209a2d0 func_ov000_0209a334 kind:function(arm,size=0x1a8) addr:0x0209a334 @@ -2670,14 +2670,14 @@ func_ov000_020a1678 kind:function(arm,size=0xc) addr:0x020a1678 func_ov000_020a1684 kind:function(arm,size=0x78) addr:0x020a1684 func_ov000_020a16fc kind:function(arm,size=0x28) addr:0x020a16fc func_ov000_020a1724 kind:function(arm,size=0x40) addr:0x020a1724 -func_ov000_020a1764 kind:function(arm,size=0x74) addr:0x020a1764 +_ZN18UnkStruct_027e0cec19func_ov000_0209ff8cEP22UnkStruct_PlayerGet_eciP5Vec3pi kind:function(arm,size=0x74) addr:0x020a1764 func_ov000_020a17d8 kind:function(arm,size=0xa0) addr:0x020a17d8 func_ov000_020a1878 kind:function(arm,size=0x34) addr:0x020a1878 func_ov000_020a18ac kind:function(arm,size=0x3c) addr:0x020a18ac -func_ov000_020a18e8 kind:function(arm,size=0x30) addr:0x020a18e8 +_ZN18UnkStruct_027e0cec19func_ov000_020a0110EP22UnkStruct_PlayerGet_ec kind:function(arm,size=0x30) addr:0x020a18e8 func_ov000_020a1918 kind:function(arm,size=0xe0) addr:0x020a1918 func_ov000_020a19f8 kind:function(arm,size=0xb4) addr:0x020a19f8 -func_ov000_020a1aac kind:function(arm,size=0x30) addr:0x020a1aac +_ZN22UnkStruct_PlayerGet_ecD1Ev kind:function(arm,size=0x30) addr:0x020a1aac func_ov000_020a1adc kind:function(arm,size=0x30) addr:0x020a1adc func_ov000_020a1b0c kind:function(arm,size=0x38) addr:0x020a1b0c func_ov000_020a1b44 kind:function(arm,size=0x20) addr:0x020a1b44 @@ -2998,7 +2998,7 @@ func_ov000_020a9ea4 kind:function(arm,size=0x2c) addr:0x020a9ea4 func_ov000_020a9ed0 kind:function(arm,size=0x58) addr:0x020a9ed0 func_ov000_020a9f28 kind:function(arm,size=0x20) addr:0x020a9f28 func_ov000_020a9f48 kind:function(arm,size=0x20) addr:0x020a9f48 -func_ov000_020a9f68 kind:function(arm,size=0x60) addr:0x020a9f68 +_ZN11ItemManager19func_ov000_020a8768Eiii kind:function(arm,size=0x60) addr:0x020a9f68 func_ov000_020a9fc8 kind:function(arm,size=0x24) addr:0x020a9fc8 func_ov000_020a9fec kind:function(arm,size=0x34) addr:0x020a9fec func_ov000_020aa020 kind:function(arm,size=0x34) addr:0x020aa020 diff --git a/config/jp/arm9/overlays/ov017/symbols.txt b/config/jp/arm9/overlays/ov017/symbols.txt index 633a6248..d90f5e84 100644 --- a/config/jp/arm9/overlays/ov017/symbols.txt +++ b/config/jp/arm9/overlays/ov017/symbols.txt @@ -74,8 +74,8 @@ func_ov017_020c0fd4 kind:function(arm,size=0xec) addr:0x020c0fd4 func_ov017_020c10c0 kind:function(arm,size=0x60) addr:0x020c10c0 func_ov017_020c1120 kind:function(arm,size=0x44) addr:0x020c1120 func_ov017_020c1164 kind:function(arm,size=0x64) addr:0x020c1164 -func_ov017_020c11c8 kind:function(arm,size=0x2c) addr:0x020c11c8 -func_ov017_020c11f4 kind:function(arm,size=0x88) addr:0x020c11f4 +func_ov017_020bf99c kind:function(arm,size=0x2c) addr:0x020c11c8 +_ZN10ActorRupee19func_ov017_020bf9c8EP27UnkStruct_func_01fff3b4_ret kind:function(arm,size=0x88) addr:0x020c11f4 func_ov017_020c127c kind:function(arm,size=0x84) addr:0x020c127c func_ov017_020c1300 kind:function(arm,size=0x44) addr:0x020c1300 func_ov017_020c1344 kind:function(arm,size=0x238) addr:0x020c1344 diff --git a/config/jp/arm9/overlays/ov031/delinks.txt b/config/jp/arm9/overlays/ov031/delinks.txt index 449c5db6..f4c83852 100644 --- a/config/jp/arm9/overlays/ov031/delinks.txt +++ b/config/jp/arm9/overlays/ov031/delinks.txt @@ -5,3 +5,6 @@ .data start:0x02114640 end:0x02118120 kind:data align:32 .bss start:0x02118120 end:0x0211ad60 kind:bss align:32 +src/031_Land/Actor/ActorRupee.cpp: + .text start:0x020ea6a4 end:0x020eba04 + .data start:0x02115228 end:0x021152c0 diff --git a/config/jp/arm9/overlays/ov031/relocs.txt b/config/jp/arm9/overlays/ov031/relocs.txt index aadda6eb..ab4e21b7 100644 --- a/config/jp/arm9/overlays/ov031/relocs.txt +++ b/config/jp/arm9/overlays/ov031/relocs.txt @@ -1767,14 +1767,14 @@ from:0x020ea6ac kind:load to:0x02118488 module:overlay(31) from:0x020ea6c0 kind:arm_call to:0x02011f3c module:main from:0x020ea6cc kind:arm_call to:0x020ea794 module:overlay(31) from:0x020ea6e0 kind:arm_call to:0x02098e24 module:overlay(0) -from:0x020ea714 kind:load to:0x02115248 module:overlay(31) +from:0x020ea714 kind:load to:0x02115240 add:8 module:overlay(31) from:0x020ea740 kind:arm_call to:0x02098dac module:overlay(0) from:0x020ea780 kind:arm_call to:0x02098ba8 module:overlay(0) from:0x020ea78c kind:load to:0x020b6ba4 module:overlay(0) from:0x020ea79c kind:arm_call to:0x02099b30 module:overlay(0) from:0x020ea7c4 kind:arm_call to:0x02099360 module:overlay(0) from:0x020ea7d8 kind:arm_call to:0x020eb8dc module:overlay(31) -from:0x020ea800 kind:load to:0x0211526c module:overlay(31) +from:0x020ea800 kind:load to:0x02115264 add:8 module:overlay(31) from:0x020ea814 kind:arm_call to:0x020eb740 module:overlay(31) from:0x020ea850 kind:arm_call to:0x0209a208 module:overlay(0) from:0x020ea880 kind:arm_call to:0x020eb2f0 module:overlay(31) @@ -1873,7 +1873,7 @@ from:0x020eb738 kind:load to:0x02115208 module:overlay(31) from:0x020eb788 kind:arm_call to:0x020eb848 module:overlay(31) from:0x020eb840 kind:arm_call to:0x02099c78 module:overlay(0) from:0x020eb8f0 kind:arm_call to:0x020f7d24 module:overlay(31) -from:0x020eb910 kind:load to:0x02115230 module:overlay(31) +from:0x020eb910 kind:load to:0x02115228 add:8 module:overlay(31) from:0x020eb938 kind:arm_call to:0x020eb2f0 module:overlay(31) from:0x020eb948 kind:arm_call to:0x020f7d84 module:overlay(31) from:0x020eb968 kind:arm_call to:0x020eb2f0 module:overlay(31) diff --git a/config/jp/arm9/overlays/ov031/symbols.txt b/config/jp/arm9/overlays/ov031/symbols.txt index 5b69a206..7b7e1d14 100644 --- a/config/jp/arm9/overlays/ov031/symbols.txt +++ b/config/jp/arm9/overlays/ov031/symbols.txt @@ -65,7 +65,7 @@ func_ov031_020db194 kind:function(arm,size=0x10) addr:0x020db194 func_ov031_020db1a4 kind:function(arm,size=0x10) addr:0x020db1a4 func_ov031_020db1b4 kind:function(arm,size=0x10) addr:0x020db1b4 func_ov031_020db1c4 kind:function(arm,size=0x10) addr:0x020db1c4 -func_ov031_020db1d4 kind:function(arm,size=0x10) addr:0x020db1d4 +func_ov031_020d9834 kind:function(arm,size=0x10) addr:0x020db1d4 func_ov031_020db1e4 kind:function(arm,size=0x10) addr:0x020db1e4 func_ov031_020db1f4 kind:function(arm,size=0x34) addr:0x020db1f4 func_ov031_020db228 kind:function(arm,size=0x34) addr:0x020db228 @@ -554,55 +554,55 @@ func_ov031_020ea5f4 kind:function(arm,size=0x44) addr:0x020ea5f4 func_ov031_020ea638 kind:function(arm,size=0x28) addr:0x020ea638 func_ov031_020ea660 kind:function(arm,size=0x30) addr:0x020ea660 func_ov031_020ea690 kind:function(arm,size=0x14) addr:0x020ea690 -func_ov031_020ea6a4 kind:function(arm,size=0xc) addr:0x020ea6a4 -func_ov031_020ea6b0 kind:function(arm,size=0x24) addr:0x020ea6b0 -func_ov031_020ea6d4 kind:function(arm,size=0x44) addr:0x020ea6d4 -func_ov031_020ea718 kind:function(arm,size=0x7c) addr:0x020ea718 -func_ov031_020ea794 kind:function(arm,size=0x74) addr:0x020ea794 -func_ov031_020ea808 kind:function(arm,size=0x1d0) addr:0x020ea808 -func_ov031_020ea9d8 kind:function(arm,size=0x7c) addr:0x020ea9d8 -func_ov031_020eaa54 kind:function(arm,size=0xa0) addr:0x020eaa54 -func_ov031_020eaaf4 kind:function(arm,size=0xa0) addr:0x020eaaf4 -func_ov031_020eab94 kind:function(arm,size=0x8c) addr:0x020eab94 -func_ov031_020eac20 kind:function(arm,size=0x20) addr:0x020eac20 -func_ov031_020eac40 kind:function(arm,size=0x8c) addr:0x020eac40 -func_ov031_020eaccc kind:function(arm,size=0x30) addr:0x020eaccc -func_ov031_020eacfc kind:function(arm,size=0x118) addr:0x020eacfc -func_ov031_020eae14 kind:function(arm,size=0x4) addr:0x020eae14 -func_ov031_020eae18 kind:function(arm,size=0x4) addr:0x020eae18 -func_ov031_020eae1c kind:function(arm,size=0x4) addr:0x020eae1c -func_ov031_020eae20 kind:function(arm,size=0x4) addr:0x020eae20 -func_ov031_020eae24 kind:function(arm,size=0x18) addr:0x020eae24 -func_ov031_020eae3c kind:function(arm,size=0x84) addr:0x020eae3c -func_ov031_020eaec0 kind:function(arm,size=0x48) addr:0x020eaec0 -func_ov031_020eaf08 kind:function(arm,size=0x7c) addr:0x020eaf08 -func_ov031_020eaf84 kind:function(arm,size=0x14) addr:0x020eaf84 -func_ov031_020eaf98 kind:function(arm,size=0x4) addr:0x020eaf98 -func_ov031_020eaf9c kind:function(arm,size=0x10) addr:0x020eaf9c -func_ov031_020eafac kind:function(arm,size=0x50) addr:0x020eafac -func_ov031_020eaffc kind:function(arm,size=0x14) addr:0x020eaffc -func_ov031_020eb010 kind:function(arm,size=0x14) addr:0x020eb010 -func_ov031_020eb024 kind:function(arm,size=0x84) addr:0x020eb024 -func_ov031_020eb0a8 kind:function(arm,size=0x50) addr:0x020eb0a8 -func_ov031_020eb0f8 kind:function(arm,size=0x34) addr:0x020eb0f8 -func_ov031_020eb12c kind:function(arm,size=0xf8) addr:0x020eb12c -func_ov031_020eb224 kind:function(arm,size=0x8c) addr:0x020eb224 -func_ov031_020eb2b0 kind:function(arm,size=0x40) addr:0x020eb2b0 -func_ov031_020eb2f0 kind:function(arm,size=0x54) addr:0x020eb2f0 -func_ov031_020eb344 kind:function(arm,size=0x230) addr:0x020eb344 -func_ov031_020eb574 kind:function(arm,size=0x60) addr:0x020eb574 -func_ov031_020eb5d4 kind:function(arm,size=0x44) addr:0x020eb5d4 -func_ov031_020eb618 kind:function(arm,size=0x128) addr:0x020eb618 -func_ov031_020eb740 kind:function(arm,size=0x40) addr:0x020eb740 -func_ov031_020eb780 kind:function(arm,size=0xc8) addr:0x020eb780 -func_ov031_020eb848 kind:function(arm,size=0x94) addr:0x020eb848 -func_ov031_020eb8dc kind:function(arm,size=0x38) addr:0x020eb8dc -func_ov031_020eb914 kind:function(arm,size=0x44) addr:0x020eb914 -func_ov031_020eb958 kind:function(arm,size=0x20) addr:0x020eb958 -func_ov031_020eb978 kind:function(arm,size=0x28) addr:0x020eb978 -func_ov031_020eb9a0 kind:function(arm,size=0x1c) addr:0x020eb9a0 -func_ov031_020eb9bc kind:function(arm,size=0x20) addr:0x020eb9bc -func_ov031_020eb9dc kind:function(arm,size=0x28) addr:0x020eb9dc +_ZN10ActorRupee19func_ov031_020e8cb8Ev kind:function(arm,size=0xc) addr:0x020ea6a4 +_ZN14ActorRupeeBase6CreateEv kind:function(arm,size=0x24) addr:0x020ea6b0 +_ZN14ActorRupeeBaseC1Ev kind:function(arm,size=0x44) addr:0x020ea6d4 +_ZN10ActorRupee19func_ov031_020e8d2cEv kind:function(arm,size=0x7c) addr:0x020ea718 +_ZN10ActorRupeeC1Ev kind:function(arm,size=0x74) addr:0x020ea794 +_ZN10ActorRupee8vfunc_18Ev kind:function(arm,size=0x1d0) addr:0x020ea808 +_ZN10ActorRupee19func_ov031_020e8fecEv kind:function(arm,size=0x7c) addr:0x020ea9d8 +_ZN10ActorRupee19func_ov031_020e9068Ev kind:function(arm,size=0xa0) addr:0x020eaa54 +_ZN10ActorRupee19func_ov031_020e9108Ev kind:function(arm,size=0xa0) addr:0x020eaaf4 +_ZN10ActorRupee19func_ov031_020e91a8Ev kind:function(arm,size=0x8c) addr:0x020eab94 +_ZN10ActorRupee19func_ov031_020e9234Ev kind:function(arm,size=0x20) addr:0x020eac20 +_ZN10ActorRupee19func_ov031_020e9254Ev kind:function(arm,size=0x8c) addr:0x020eac40 +_ZN10ActorRupee19func_ov031_020e92e0Ev kind:function(arm,size=0x30) addr:0x020eaccc +_ZN10ActorRupee19func_ov031_020e9310Ev kind:function(arm,size=0x118) addr:0x020eacfc +_ZN10ActorRupee19func_ov031_020e9428Ev kind:function(arm,size=0x4) addr:0x020eae14 +_ZN10ActorRupee19func_ov031_020e942cEv kind:function(arm,size=0x4) addr:0x020eae18 +_ZN10ActorRupee19func_ov031_020e9430Ev kind:function(arm,size=0x4) addr:0x020eae1c +_ZN10ActorRupee19func_ov031_020e9434Ev kind:function(arm,size=0x4) addr:0x020eae20 +_ZN10ActorRupee19func_ov031_020e9438Ev kind:function(arm,size=0x18) addr:0x020eae24 +_ZN10ActorRupee19func_ov031_020e9450Ev kind:function(arm,size=0x84) addr:0x020eae3c +_ZN10ActorRupee19func_ov031_020e94d4Ev kind:function(arm,size=0x48) addr:0x020eaec0 +_ZN10ActorRupee19func_ov031_020e951cEv kind:function(arm,size=0x7c) addr:0x020eaf08 +_ZN10ActorRupee19func_ov031_020e9598Ev kind:function(arm,size=0x14) addr:0x020eaf84 +_ZN10ActorRupee19func_ov031_020e95acEv kind:function(arm,size=0x4) addr:0x020eaf98 +_ZN10ActorRupee19func_ov031_020e95b0Ev kind:function(arm,size=0x10) addr:0x020eaf9c +_ZN10ActorRupee19func_ov031_020e95c0Ev kind:function(arm,size=0x50) addr:0x020eafac +_ZN10ActorRupee19func_ov031_020e9610Ev kind:function(arm,size=0x14) addr:0x020eaffc +_ZN10ActorRupee19func_ov031_020e9624Ev kind:function(arm,size=0x14) addr:0x020eb010 +_ZN10ActorRupee19func_ov031_020e9638Ev kind:function(arm,size=0x84) addr:0x020eb024 +_ZN10ActorRupee19func_ov031_020e96bcEv kind:function(arm,size=0x50) addr:0x020eb0a8 +_ZN10ActorRupee19func_ov031_020e970cEv kind:function(arm,size=0x34) addr:0x020eb0f8 +_ZN10ActorRupee19func_ov031_020e9740Ev kind:function(arm,size=0xf8) addr:0x020eb12c +_ZN10ActorRupee19func_ov031_020e9838Ev kind:function(arm,size=0x8c) addr:0x020eb224 +_ZN10ActorRupee19func_ov031_020e98c4Ev kind:function(arm,size=0x40) addr:0x020eb2b0 +_ZN10ActorRupee19func_ov031_020e9904Ei kind:function(arm,size=0x54) addr:0x020eb2f0 +_ZN10ActorRupee8vfunc_20Ev kind:function(arm,size=0x230) addr:0x020eb344 +_ZN10ActorRupee19func_ov031_020e9b88Ev kind:function(arm,size=0x60) addr:0x020eb574 +_ZN10ActorRupee19func_ov031_020e9be8Ev kind:function(arm,size=0x44) addr:0x020eb5d4 +_ZN10ActorRupee8vfunc_2cEv kind:function(arm,size=0x128) addr:0x020eb618 +_ZN10ActorRupee19func_ov031_020e9d54Ev kind:function(arm,size=0x40) addr:0x020eb740 +_ZN10ActorRupee19func_ov031_020e9d94Ev kind:function(arm,size=0xc8) addr:0x020eb780 +_ZN10ActorRupee19func_ov031_020e9e5cEv kind:function(arm,size=0x94) addr:0x020eb848 +_ZN8Actor_c4C1EP5Actor kind:function(arm,size=0x38) addr:0x020eb8dc +_ZN8Actor_c48vfunc_00Eii kind:function(arm,size=0x44) addr:0x020eb914 +_ZN8Actor_c48vfunc_04Ev kind:function(arm,size=0x20) addr:0x020eb958 +_ZN8Actor_c48vfunc_0cEi kind:function(arm,size=0x28) addr:0x020eb978 +_ZN8Actor_c48vfunc_08Ev kind:function(arm,size=0x1c) addr:0x020eb9a0 +_ZN10ActorRupeeD1Ev kind:function(arm,size=0x20) addr:0x020eb9bc +_ZN10ActorRupeeD0Ev kind:function(arm,size=0x28) addr:0x020eb9dc func_ov031_020eba04 kind:function(arm,size=0x14) addr:0x020eba04 func_ov031_020eba18 kind:function(thumb,size=0x8) addr:0x020eba18 func_ov031_020eba20 kind:function(thumb,size=0x4) addr:0x020eba20 @@ -1001,11 +1001,11 @@ func_ov031_020f7c90 kind:function(arm,size=0x50) addr:0x020f7c90 func_ov031_020f7ce0 kind:function(arm,size=0x14) addr:0x020f7ce0 func_ov031_020f7cf4 kind:function(arm,size=0x1c) addr:0x020f7cf4 func_ov031_020f7d10 kind:function(arm,size=0x14) addr:0x020f7d10 -func_ov031_020f7d24 kind:function(arm,size=0x60) addr:0x020f7d24 -func_ov031_020f7d84 kind:function(arm,size=0x90) addr:0x020f7d84 -func_ov031_020f7e14 kind:function(arm,size=0x8) addr:0x020f7e14 -func_ov031_020f7e1c kind:function(arm,size=0x8) addr:0x020f7e1c -func_ov031_020f7e24 kind:function(arm,size=0x8) addr:0x020f7e24 +_ZN13Actor_c4_BaseC2EPvi kind:function(arm,size=0x60) addr:0x020f7d24 +_ZN8Actor_c419func_ov031_020f62e4Ei kind:function(arm,size=0x90) addr:0x020f7d84 +_ZN8Actor_c419func_ov031_020f6374Ev kind:function(arm,size=0x8) addr:0x020f7e14 +_ZN8Actor_c419func_ov031_020f637cEv kind:function(arm,size=0x8) addr:0x020f7e1c +_ZN8Actor_c419func_ov031_020f6384Ei kind:function(arm,size=0x8) addr:0x020f7e24 func_ov031_020f7e2c kind:function(arm,size=0x4c) addr:0x020f7e2c func_ov031_020f7e78 kind:function(arm,size=0x14) addr:0x020f7e78 func_ov031_020f7e8c kind:function(arm,size=0x5c) addr:0x020f7e8c @@ -1780,11 +1780,11 @@ func_ov031_0210ca3c kind:function(arm,size=0x90) addr:0x0210ca3c func_ov031_0210cacc kind:function(arm,size=0x9c) addr:0x0210cacc func_ov031_0210cb68 kind:function(arm,size=0x90) addr:0x0210cb68 func_ov031_0210cbf8 kind:function(arm,size=0xc0) addr:0x0210cbf8 -func_ov031_0210ccb8 kind:function(arm,size=0xc8) addr:0x0210ccb8 +func_ov031_0210af50 kind:function(arm,size=0xc8) addr:0x0210ccb8 func_ov031_0210cd80 kind:function(arm,size=0x10) addr:0x0210cd80 func_ov031_0210cd90 kind:function(arm,size=0x84) addr:0x0210cd90 func_ov031_0210ce14 kind:function(arm,size=0x38) addr:0x0210ce14 -func_ov031_0210ce4c kind:function(arm,size=0x60) addr:0x0210ce4c +_Z19func_ov031_0210b0e4ti kind:function(arm,size=0x60) addr:0x0210ce4c func_ov031_0210ceac kind:function(arm,size=0x38) addr:0x0210ceac func_ov031_0210cee4 kind:function(arm,size=0x70) addr:0x0210cee4 func_ov031_0210cf54 kind:function(arm,size=0xe0) addr:0x0210cf54 @@ -2263,9 +2263,9 @@ data_ov031_02115190 kind:data(any) addr:0x02115190 data_ov031_021151b4 kind:data(any) addr:0x021151b4 data_ov031_02115208 kind:data(any) addr:0x02115208 data_ov031_02115218 kind:data(any) addr:0x02115218 -data_ov031_02115230 kind:data(any) addr:0x02115230 -data_ov031_02115248 kind:data(any) addr:0x02115248 -data_ov031_0211526c kind:data(any) addr:0x0211526c +_ZTV8Actor_c4 kind:data(any) addr:0x02115228 +_ZTV14ActorRupeeBase kind:data(any) addr:0x02115240 +_ZTV10ActorRupee kind:data(any) addr:0x02115264 data_ov031_021152c0 kind:data(any) addr:0x021152c0 data_ov031_02115328 kind:data(any) addr:0x02115328 data_ov031_02115390 kind:data(any) addr:0x02115390 @@ -2524,7 +2524,7 @@ data_ov031_02118380 kind:bss addr:0x02118380 data_ov031_02118458 kind:bss addr:0x02118458 data_ov031_02118478 kind:bss addr:0x02118478 data_ov031_0211847c kind:bss addr:0x0211847c -data_ov031_02118488 kind:bss addr:0x02118488 +data_ov031_021166e8 kind:bss addr:0x02118488 data_ov031_021184c4 kind:bss addr:0x021184c4 data_ov031_021184cc kind:bss addr:0x021184cc data_ov031_021184d8 kind:bss addr:0x021184d8 diff --git a/config/jp/arm9/symbols.txt b/config/jp/arm9/symbols.txt index f2f65ddb..12160446 100644 --- a/config/jp/arm9/symbols.txt +++ b/config/jp/arm9/symbols.txt @@ -605,8 +605,8 @@ func_02011e10 kind:function(arm,size=0x94) addr:0x02011e10 func_02011ea4 kind:function(arm,size=0x6c) addr:0x02011ea4 func_02011f10 kind:function(arm,size=0x20) addr:0x02011f10 func_02011f30 kind:function(arm,size=0xc) addr:0x02011f30 -func_02011f3c kind:function(arm,size=0xb8) addr:0x02011f3c -func_02011ff4 kind:function(arm,size=0xc) addr:0x02011ff4 +_ZN9SysObjectnwEmjj kind:function(arm,size=0xb8) addr:0x02011f3c +_ZN9SysObjectdlEPv kind:function(arm,size=0xc) addr:0x02011ff4 func_02012000 kind:function(arm,size=0xc) addr:0x02012000 func_0201200c kind:function(arm,size=0x15c) addr:0x0201200c func_02012168 kind:function(arm,size=0x198) addr:0x02012168 @@ -889,8 +889,8 @@ func_02017c04 kind:function(arm,size=0x40) addr:0x02017c04 func_02017c44 kind:function(arm,size=0xd8) addr:0x02017c44 func_02017d1c kind:function(arm,size=0x108) addr:0x02017d1c func_02017e24 kind:function(arm,size=0x18) addr:0x02017e24 -func_02017e3c kind:function(arm,size=0x40) addr:0x02017e3c -func_02017e7c kind:function(arm,size=0x54) addr:0x02017e7c +func_02017ea4 kind:function(arm,size=0x40) addr:0x02017e3c +func_02017ee4 kind:function(arm,size=0x54) addr:0x02017e7c func_02017ed0 kind:function(arm,size=0x1c) addr:0x02017ed0 func_02017eec kind:function(arm,size=0x38) addr:0x02017eec func_02017f24 kind:function(arm,size=0x84) addr:0x02017f24 @@ -2766,7 +2766,7 @@ data_0204b12c kind:bss addr:0x0204b12c data_0204b150 kind:bss addr:0x0204b150 data_0204b154 kind:bss addr:0x0204b154 data_0204b15c kind:bss addr:0x0204b15c -data_0204b164 kind:bss addr:0x0204b164 +gRandom kind:bss addr:0x0204b164 data_0204b17c kind:bss addr:0x0204b17c data_0204b480 kind:bss addr:0x0204b480 data_0204b484 kind:bss addr:0x0204b484 diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp index 4f05e920..664c7f84 100644 --- a/include/Actor/Actor.hpp +++ b/include/Actor/Actor.hpp @@ -1,5 +1,6 @@ #pragma once +#include "Actor/ActorId.hpp" #include "System/SysNew.hpp" #include "global.h" #include "nitro/math.h" @@ -12,6 +13,7 @@ public: /* 0e */ unk16 mUnk_0e; // padding? /* 10 */ + Actor_5c() {}; void func_ov000_020975f8(); }; @@ -44,13 +46,13 @@ public: /* 10 */ Vec3p mPrevPos; /* 1c */ Vec3p mVel; /* 28 */ u16 mAngle; - /* 28 */ unk16 mUnk_2a; + /* 2a */ unk16 mUnk_2a; /* 2c */ unk32 mUnk_2c; // gravity? /* 30 */ unk32 *mUnk_30; /* 34 */ unk32 *mUnk_34; /* 38 */ unk32 *mUnk_38; /* 3c */ unk32 mUnk_3c; - /* 40 */ unk32 mUnk_40; + /* 40 */ void *mUnk_40; // pointer to `Actor_c4` /* 44 */ u16 mUnk_44; /* 46 */ unk16 mUnk_46; /* 48 */ unk16 mUnk_48; @@ -58,22 +60,25 @@ public: /* 4a */ unk8 mUnk_4b; /* 4c */ unk16 mUnk_4c; /* 4e */ s16 mUnk_4e; - /* 50 */ unk16 mUnk_50; - /* 52 */ unk16 mUnk_52; + /* 50 */ volatile u16 mUnk_50; + /* 52 */ u16 mUnk_52; /* 54 */ unk32 mUnk_54; /* 58 */ unk32 mUnk_58; /* 5c */ Actor_5c mUnk_5c; - /* 6c */ unk32 mUnk_6c; + /* 6c */ u16 mUnk_6c; // actor user id? + /* 6e */ u16 mUnk_6e; /* 70 */ unk32 mUnk_70; - /* 74 */ unk32 mUnk_74; + /* 74 */ unk16 mUnk_74; + /* 76 */ u16 mUnk_76; /* 78 */ unk32 mUnk_78; /* 7c */ unk32 mUnk_7c; - /* 80 */ unk16 mUnk_80; + /* 80 */ s16 mUnk_80; /* 80 */ unk16 mUnk_82; /* 84 */ unk32 mUnk_84; /* 88 */ unk32 mUnk_88; /* 8c */ unk32 mUnk_8c; /* 90 */ UnkStruct_ov000_020b539c_30 *mUnk_90; + /* 94 */ /* 00 */ virtual void vfunc_00(Vec3p *param1); /* 04 */ virtual bool vfunc_04(); @@ -108,6 +113,7 @@ public: unk32 func_ov000_020984c8(); void func_ov000_020984d0(); void func_ov000_020984f0(); + unk32 func_ov000_02098910(unk32 param1, unk32 param2); s32 func_ov000_02098518(unk32 *param1); void func_ov000_0209853c(); @@ -117,6 +123,11 @@ public: s32 func_ov000_02098584(); s32 func_ov000_020985f0(void *param1); void func_ov000_0209862c(unk32 param1); + + void func_ov000_020973f4(UnkStruct_ov000_020b539c *param1, ActorId param2, Actor_5c param3); + void func_ov000_020989e0(); + + void func_ov017_020bf5c4(Vec3p *param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5); }; extern UnkStruct_ov000_020b539c data_ov000_020b539c; diff --git a/include/Actor/ActorId.hpp b/include/Actor/ActorId.hpp new file mode 100644 index 00000000..43962b88 --- /dev/null +++ b/include/Actor/ActorId.hpp @@ -0,0 +1,530 @@ +#pragma once + +#include "types.h" + +typedef u32 ActorId; +enum ActorId_ { + ActorId_AJAI = 'AJAI', + ActorId_AJBS = 'AJBS', + ActorId_AJCR = 'AJCR', + ActorId_AJEM = 'AJEM', + ActorId_AJET = 'AJET', + ActorId_AJMN = 'AJMN', + ActorId_AJNP = 'AJNP', + ActorId_AJSP = 'AJSP', + ActorId_AJTM = 'AJTM', + ActorId_ALEV = 'ALEV', + ActorId_AROW = 'AROW', + ActorId_ASBA = 'ASBA', + ActorId_ASYU = 'ASYU', + ActorId_ATTG = 'ATTG', + ActorId_BAEY = 'BAEY', + ActorId_BAFO = 'BAFO', + ActorId_BANI = 'BANI', + ActorId_BAPH = 'BAPH', + ActorId_BBLE = 'BBLE', + ActorId_BDBA = 'BDBA', + ActorId_BDEA = 'BDEA', + ActorId_BDEM = 'BDEM', + ActorId_BDGA = 'BDGA', + ActorId_BDLB = 'BDLB', + ActorId_TreasureBee = 'BEEE', + ActorId_BeeHive = 'BEEH', + ActorId_BFFN = 'BFFN', + ActorId_BGOK = 'BGOK', + ActorId_BKST = 'BKST', + ActorId_BLBL = 'BLBL', + ActorId_BLBR = 'BLBR', + ActorId_BLJF = 'BLJF', + ActorId_BLON = 'BLON', + ActorId_BLST = 'BLST', + ActorId_BMHN = 'BMHN', + ActorId_BMOC = 'BMOC', + ActorId_BOMB = 'BOMB', + ActorId_BPAP = 'BPAP', + ActorId_BPBS = 'BPBS', + ActorId_BROW = 'BROW', + ActorId_BSFC = 'BSFC', + ActorId_BSKM = 'BSKM', + ActorId_BSTG = 'BSTG', + ActorId_BTIR = 'BTIR', + ActorId_CAGE = 'CAGE', + ActorId_CAMA = 'CAMA', + ActorId_CAMB = 'CAMB', + ActorId_CAMS = 'CAMS', + ActorId_CAMY = 'CAMY', + ActorId_CANS = 'CANS', + ActorId_CASE = 'CASE', + ActorId_CASL = 'CASL', + ActorId_CAST = 'CAST', + ActorId_CAWA = 'CAWA', + ActorId_CAWB = 'CAWB', + ActorId_ChuChu = 'CHUC', + ActorId_CLBT = 'CLBT', + ActorId_CLLT = 'CLLT', + ActorId_CLZN = 'CLZN', + ActorId_CNBL = 'CNBL', + ActorId_COMM = 'COMM', + ActorId_CRCH = 'CRCH', + ActorId_CRFP = 'CRFP', + ActorId_CRFT = 'CRFT', + ActorId_CROW = 'CROW', + ActorId_CTFS = 'CTFS', + ActorId_DGPC = 'DGPC', + ActorId_DKCB = 'DKCB', + ActorId_DKCL = 'DKCL', + ActorId_DKTR = 'DKTR', + ActorId_DLPN = 'DLPN', + ActorId_DLTG = 'DLTG', + ActorId_DMCH = 'DMCH', + ActorId_DMEQ = 'DMEQ', + ActorId_DMET = 'DMET', + ActorId_DMFR = 'DMFR', + ActorId_DMFT = 'DMFT', + ActorId_DMGM = 'DMGM', + ActorId_DMGN = 'DMGN', + ActorId_DMMM = 'DMMM', + ActorId_DMMS = 'DMMS', + ActorId_DMMT = 'DMMT', + ActorId_DMPK = 'DMPK', + ActorId_DMPS = 'DMPS', + ActorId_DMSS = 'DMSS', + ActorId_DMST = 'DMST', + ActorId_DMT2 = 'DMT2', + ActorId_DMTR = 'DMTR', + ActorId_DMWS = 'DMWS', + ActorId_DMWT = 'DMWT', + ActorId_DMZS = 'DMZS', + ActorId_DSBB = 'DSBB', + ActorId_DSBH = 'DSBH', + ActorId_DSBN = 'DSBN', + ActorId_DSDS = 'DSDS', + ActorId_DSFR = 'DSFR', + ActorId_DSSN = 'DSSN', + ActorId_DSVC = 'DSVC', + ActorId_DSWT = 'DSWT', + ActorId_E3GL = 'E3GL', + ActorId_E3LV = 'E3LV', + ActorId_E3ST = 'E3ST', + ActorId_E3TT = 'E3TT', + ActorId_EFIK = 'EFIK', + ActorId_EFOC = 'EFOC', + ActorId_EFR2 = 'EFR2', + ActorId_EFR3 = 'EFR3', + ActorId_EFRI = 'EFRI', + ActorId_EFRL = 'EFRL', + ActorId_EFRP = 'EFRP', + ActorId_EFSB = 'EFSB', + ActorId_EFSC = 'EFSC', + ActorId_EFW2 = 'EFW2', + ActorId_EFW3 = 'EFW3', + ActorId_EFWI = 'EFWI', + ActorId_EFWL = 'EFWL', + ActorId_EFWV = 'EFWV', + ActorId_ELVT = 'ELVT', + ActorId_ENGE = 'ENGE', + ActorId_EVCH = 'EVCH', + ActorId_EVIC = 'EVIC', + ActorId_EWHI = 'EWHI', + ActorId_FBBF = 'FBBF', + ActorId_FBBH = 'FBBH', + ActorId_FBCH = 'FBCH', + ActorId_FBRD = 'FBRD', + ActorId_FBRG = 'FBRG', + ActorId_FBSC = 'FBSC', + ActorId_FCHL = 'FCHL', + ActorId_FDKY = 'FDKY', + ActorId_FIBB = 'FIBB', + ActorId_FIFI = 'FIFI', + ActorId_FIMA = 'FIMA', + ActorId_FIML = 'FIML', + ActorId_FIRB = 'FIRB', + ActorId_FKTR = 'FKTR', + ActorId_FLCT = 'FLCT', + ActorId_FLDK = 'FLDK', + ActorId_FLEN = 'FLEN', + ActorId_FMAS = 'FMAS', + ActorId_FMLS = 'FMLS', + ActorId_FOFA = 'FOFA', + ActorId_FOMA = 'FOMA', + ActorId_FOMB = 'FOMB', + ActorId_FOMC = 'FOMC', + ActorId_FOMD = 'FOMD', + ActorId_FOMR = 'FOMR', + ActorId_FOMS = 'FOMS', + ActorId_FOMY = 'FOMY', + ActorId_FOPD = 'FOPD', + ActorId_FRBS = 'FRBS', + ActorId_FRTN = 'FRTN', + ActorId_FSIR = 'FSIR', + ActorId_FSSF = 'FSSF', + ActorId_FSST = 'FSST', + ActorId_FTRN = 'FTRN', + ActorId_GHOS = 'GHOS', + ActorId_GOCA = 'GOCA', + ActorId_GOCB = 'GOCB', + ActorId_GOCP = 'GOCP', + ActorId_GOKI = 'GOKI', + ActorId_GORK = 'GORK', + ActorId_GORM = 'GORM', + ActorId_GORP = 'GORP', + ActorId_GORS = 'GORS', + ActorId_GORY = 'GORY', + ActorId_GOVT = 'GOVT', + ActorId_GRCF = 'GRCF', + ActorId_GRCM = 'GRCM', + ActorId_GTTG = 'GTTG', + ActorId_GYAM = 'GYAM', + ActorId_HAMN = 'HAMN', + ActorId_HELA = 'HELA', + ActorId_Heart = 'HERT', + ActorId_HLMG = 'HLMG', + ActorId_HYSW = 'HYSW', + ActorId_IBBA = 'IBBA', + ActorId_IBSP = 'IBSP', + ActorId_ICBA = 'ICBA', + ActorId_ICBB = 'ICBB', + ActorId_ICBS = 'ICBS', + ActorId_ITBM = 'ITBM', + ActorId_ITSC = 'ITSC', + ActorId_ITTD = 'ITTD', + ActorId_ITWP = 'ITWP', + ActorId_IWTS = 'IWTS', + ActorId_JOLN = 'JOLN', + ActorId_KETH = 'KETH', + ActorId_KEYB = 'KEYB', + ActorId_KEYN = 'KEYN', + ActorId_KEYT = 'KEYT', + ActorId_KGDB = 'KGDB', + ActorId_KGDN = 'KGDN', + ActorId_KIMA = 'KIMA', + ActorId_KIMB = 'KIMB', + ActorId_KLTR = 'KLTR', + ActorId_KMOH = 'KMOH', + ActorId_KMOS = 'KMOS', + ActorId_KMSO = 'KMSO', + ActorId_KOAT = 'KOAT', + ActorId_KOCH = 'KOCH', + ActorId_KOKO = 'KOKO', + ActorId_KOTA = 'KOTA', + ActorId_KURI = 'KURI', + ActorId_L2MT = 'L2MT', + ActorId_L2V1 = 'L2V1', + ActorId_L2V2 = 'L2V2', + ActorId_LAVA = 'LAVA', + ActorId_LBCK = 'LBCK', + ActorId_LBRC = 'LBRC', + ActorId_LikeLike = 'LIKE', + ActorId_LIRA = 'LIRA', + ActorId_LOCK = 'LOCK', + ActorId_LVBD = 'LVBD', + ActorId_LVOF = 'LVOF', + ActorId_LZET = 'LZET', + ActorId_MABC = 'MABC', + ActorId_MABL = 'MABL', + ActorId_MAFI = 'MAFI', + ActorId_MAGR = 'MAGR', + ActorId_MARG = 'MARG', + ActorId_MATR = 'MATR', + ActorId_MBCC = 'MBCC', + ActorId_MDYG = 'MDYG', + ActorId_MGAJ = 'MGAJ', + ActorId_MIFR = 'MIFR', + ActorId_MKUR = 'MKUR', + ActorId_MLCK = 'MLCK', + ActorId_MNCB = 'MNCB', + ActorId_MOCT = 'MOCT', + ActorId_MRD2 = 'MRD2', + ActorId_MRDA = 'MRDA', + ActorId_MRDL = 'MRDL', + ActorId_MRDO = 'MRDO', + ActorId_MTFB = 'MTFB', + ActorId_MTFL = 'MTFL', + ActorId_MTWP = 'MTWP', + ActorId_MZCT = 'MZCT', + ActorId_NAVI = 'NAVI', + ActorId_NCCA = 'NCCA', + ActorId_NCCB = 'NCCB', + ActorId_NCCS = 'NCCS', + ActorId_NCMB = 'NCMB', + ActorId_NCWA = 'NCWA', + ActorId_NFSP = 'NFSP', + ActorId_NICO = 'NICO', + ActorId_NITF = 'NITF', + ActorId_NLTR = 'NLTR', + ActorId_NORE = 'NORE', + ActorId_NPWC = 'NPWC', + ActorId_NSHD = 'NSHD', + ActorId_NSSW = 'NSSW', + ActorId_NSTN = 'NSTN', + ActorId_NTTZ = 'NTTZ', + ActorId_NTUB = 'NTUB', + ActorId_OBPC = 'OBPC', + ActorId_OCGS = 'OCGS', + ActorId_OCTA = 'OCTA', + ActorId_OCTG = 'OCTG', + ActorId_OCTS = 'OCTS', + ActorId_OCTW = 'OCTW', + ActorId_OCWS = 'OCWS', + ActorId_OFSW = 'OFSW', + ActorId_OLDM = 'OLDM', + ActorId_OLDS = 'OLDS', + ActorId_PASS = 'PASS', + ActorId_PBK2 = 'PBK2', + ActorId_PBSP = 'PBSP', + ActorId_PCTG = 'PCTG', + ActorId_PHEY = 'PHEY', + ActorId_PHTM = 'PHTM', + ActorId_PLSR = 'PLSR', + ActorId_PMST = 'PMST', + ActorId_PMTB = 'PMTB', + ActorId_PMTC = 'PMTC', + ActorId_PMTD = 'PMTD', + ActorId_PostBox = 'POST', + ActorId_PPPM = 'PPPM', + ActorId_PRPL = 'PRPL', + ActorId_PRPP = 'PRPP', + ActorId_PRSP = 'PRSP', + ActorId_PSBK = 'PSBK', + ActorId_PSBL = 'PSBL', + ActorId_PSBS = 'PSBS', + ActorId_PSEM = 'PSEM', + ActorId_PSNP = 'PSNP', + ActorId_PSWB = 'PSWB', + ActorId_PTMN = 'PTMN', + ActorId_QKSD = 'QKSD', + ActorId_QKTG = 'QKTG', + ActorId_RAT0 = 'RAT0', + ActorId_RB1F = 'RB1F', + ActorId_RB1T = 'RB1T', + ActorId_RBD2 = 'RBD2', + ActorId_RBDS = 'RBDS', + ActorId_RBFR = 'RBFR', + ActorId_RBL1 = 'RBL1', + ActorId_RBL2 = 'RBL2', + ActorId_RBLS = 'RBLS', + ActorId_RBNT = 'RBNT', + ActorId_RBRP = 'RBRP', + ActorId_RBRT = 'RBRT', + ActorId_RBSN = 'RBSN', + ActorId_RBVC = 'RBVC', + ActorId_RBWS = 'RBWS', + ActorId_RBWT = 'RBWT', + ActorId_RCFO = 'RCFO', + ActorId_RCHU = 'RCHU', + ActorId_RCMS = 'RCMS', + ActorId_RCSG = 'RCSG', + ActorId_RLST = 'RLST', + ActorId_RMA0 = 'RMA0', + ActorId_RMA1 = 'RMA1', + ActorId_RMA2 = 'RMA2', + ActorId_RMA3 = 'RMA3', + ActorId_RMAJ = 'RMAJ', + ActorId_RMBC = 'RMBC', + ActorId_RMBD = 'RMBD', + ActorId_RMC0 = 'RMC0', + ActorId_RMC1 = 'RMC1', + ActorId_RMC2 = 'RMC2', + ActorId_RMC3 = 'RMC3', + ActorId_RMC4 = 'RMC4', + ActorId_RMC5 = 'RMC5', + ActorId_RMC6 = 'RMC6', + ActorId_RMDO = 'RMDO', + ActorId_RMDS = 'RMDS', + ActorId_RMF0 = 'RMF0', + ActorId_RMF1 = 'RMF1', + ActorId_RMFK = 'RMFK', + ActorId_RML0 = 'RML0', + ActorId_RML1 = 'RML1', + ActorId_RML2 = 'RML2', + ActorId_RML3 = 'RML3', + ActorId_RMLF = 'RMLF', + ActorId_RMM0 = 'RMM0', + ActorId_RMM1 = 'RMM1', + ActorId_RMM2 = 'RMM2', + ActorId_RMM3 = 'RMM3', + ActorId_RMM4 = 'RMM4', + ActorId_RMS0 = 'RMS0', + ActorId_RMS1 = 'RMS1', + ActorId_RMS2 = 'RMS2', + ActorId_RMS3 = 'RMS3', + ActorId_RMS4 = 'RMS4', + ActorId_RMS5 = 'RMS5', + ActorId_RMSD = 'RMSD', + ActorId_RMSF = 'RMSF', + ActorId_RMSS = 'RMSS', + ActorId_RMST = 'RMST', + ActorId_RMSV = 'RMSV', + ActorId_RMSW = 'RMSW', + ActorId_RMT0 = 'RMT0', + ActorId_RMT1 = 'RMT1', + ActorId_RMT2 = 'RMT2', + ActorId_RMT3 = 'RMT3', + ActorId_RMT4 = 'RMT4', + ActorId_RMTB = 'RMTB', + ActorId_RMTE = 'RMTE', + ActorId_RMTG = 'RMTG', + ActorId_RMTR = 'RMTR', + ActorId_RMTZ = 'RMTZ', + ActorId_RMV0 = 'RMV0', + ActorId_RMV1 = 'RMV1', + ActorId_RMVD = 'RMVD', + ActorId_RMVF = 'RMVF', + ActorId_RMVS = 'RMVS', + ActorId_RMVT = 'RMVT', + ActorId_RMVV = 'RMVV', + ActorId_RMVW = 'RMVW', + ActorId_RMW0 = 'RMW0', + ActorId_RMW1 = 'RMW1', + ActorId_RNTN = 'RNTN', + ActorId_ROCK = 'ROCK', + ActorId_RPMT = 'RPMT', + ActorId_Rupee = 'RUPE', + ActorId_RYAW = 'RYAW', + ActorId_SCCN = 'SCCN', + ActorId_SEAT = 'SEAT', + ActorId_SEFS = 'SEFS', + ActorId_SGMG = 'SGMG', + ActorId_SHDL = 'SHDL', + ActorId_SHIT = 'SHIT', + ActorId_SIRO = 'SIRO', + ActorId_SIRS = 'SIRS', + ActorId_SKDO = 'SKDO', + ActorId_SMCT = 'SMCT', + ActorId_SNMA = 'SNMA', + ActorId_SNMB = 'SNMB', + ActorId_SNOW = 'SNOW', + ActorId_SNST = 'SNST', + ActorId_SOGB = 'SOGB', + ActorId_SOGC = 'SOGC', + ActorId_SOLB = 'SOLB', + ActorId_SOLC = 'SOLC', + ActorId_SOLD = 'SOLD', + ActorId_SOLF = 'SOLF', + ActorId_SOLG = 'SOLG', + ActorId_SOLT = 'SOLT', + ActorId_SPAR = 'SPAR', + ActorId_SPBM = 'SPBM', + ActorId_SPDR = 'SPDR', + ActorId_SPID = 'SPID', + ActorId_SPTG = 'SPTG', + ActorId_SPTR = 'SPTR', + ActorId_SPTT = 'SPTT', + ActorId_SRNM = 'SRNM', + ActorId_SRSL = 'SRSL', + ActorId_SRST = 'SRST', + ActorId_SSFC = 'SSFC', + ActorId_STCT = 'STCT', + ActorId_STFB = 'STFB', + ActorId_STFH = 'STFH', + ActorId_STLF = 'STLF', + ActorId_STLW = 'STLW', + ActorId_STTG = 'STTG', + ActorId_STWH = 'STWH', + ActorId_SWBM = 'SWBM', + ActorId_SWCH = 'SWCH', + ActorId_SWDS = 'SWDS', + ActorId_SWHI = 'SWHI', + ActorId_SWOB = 'SWOB', + ActorId_SWON = 'SWON', + ActorId_SWTM = 'SWTM', + ActorId_SYDE = 'SYDE', + ActorId_SYDL = 'SYDL', + ActorId_SYDS = 'SYDS', + ActorId_SYFI = 'SYFI', + ActorId_SYFO = 'SYFO', + ActorId_SYIL = 'SYIL', + ActorId_SYIS = 'SYIS', + ActorId_SYOL = 'SYOL', + ActorId_SYOS = 'SYOS', + ActorId_SYRN = 'SYRN', + ActorId_SYSL = 'SYSL', + ActorId_SYSN = 'SYSN', + ActorId_SYSS = 'SYSS', + ActorId_SYWA = 'SYWA', + ActorId_SYWL = 'SYWL', + ActorId_SYWS = 'SYWS', + ActorId_SZKL = 'SZKL', + ActorId_SZKU = 'SZKU', + ActorId_SZRD = 'SZRD', + ActorId_TBRD = 'TBRD', + ActorId_TCAM = 'TCAM', + ActorId_TCOW = 'TCOW', + ActorId_TDKT = 'TDKT', + ActorId_TEHT = 'TEHT', + ActorId_Beedle = 'TERY', + ActorId_TEVT = 'TEVT', + ActorId_TFAT = 'TFAT', + ActorId_TGTZ = 'TGTZ', + ActorId_THER = 'THER', + ActorId_TKYT = 'TKYT', + ActorId_TLKT = 'TLKT', + ActorId_TMNA = 'TMNA', + ActorId_TMNC = 'TMNC', + ActorId_TMNP = 'TMNP', + ActorId_TPDO = 'TPDO', + ActorId_TRAP = 'TRAP', + ActorId_TRBC = 'TRBC', + ActorId_TRCB = 'TRCB', + ActorId_TRER = 'TRER', + ActorId_TRIC = 'TRIC', + ActorId_TRLY = 'TRLY', + ActorId_TRRL = 'TRRL', + ActorId_TRSG = 'TRSG', + ActorId_TRSP = 'TRSP', + ActorId_TRTT = 'TRTT', + ActorId_TRUP = 'TRUP', + ActorId_TSCN = 'TSCN', + ActorId_TSLB = 'TSLB', + ActorId_TSMT = 'TSMT', + ActorId_TTET = 'TTET', + ActorId_TTFT = 'TTFT', + ActorId_TTKB = 'TTKB', + ActorId_TTUT = 'TTUT', + ActorId_TUTO = 'TUTO', + ActorId_TVLR = 'TVLR', + ActorId_VCCH = 'VCCH', + ActorId_VCFT = 'VCFT', + ActorId_VLCR = 'VLCR', + ActorId_VOLV = 'VOLV', + ActorId_VRGN = 'VRGN', + ActorId_WAMA = 'WAMA', + ActorId_WAWA = 'WAWA', + ActorId_WAWB = 'WAWB', + ActorId_WAWC = 'WAWC', + ActorId_WAWS = 'WAWS', + ActorId_WAWY = 'WAWY', + ActorId_WBEF = 'WBEF', + ActorId_WBN2 = 'WBN2', + ActorId_WBPS = 'WBPS', + ActorId_WBTN = 'WBTN', + ActorId_WCAS = 'WCAS', + ActorId_WDBA = 'WDBA', + ActorId_WDRD = 'WDRD', + ActorId_WHMA = 'WHMA', + ActorId_WIDR = 'WIDR', + ActorId_WIDT = 'WIDT', + ActorId_WKTR = 'WKTR', + ActorId_WPBD = 'WPBD', + ActorId_WPCH = 'WPCH', + ActorId_WPCL = 'WPCL', + ActorId_WTBS = 'WTBS', + ActorId_WTH2 = 'WTH2', + ActorId_WTH3 = 'WTH3', + ActorId_WTTH = 'WTTH', + ActorId_WWFS = 'WWFS', + ActorId_YKAP = 'YKAP', + ActorId_YKCP = 'YKCP', + ActorId_YKEP = 'YKEP', + ActorId_YUKI = 'YUKI', + ActorId_YUKY = 'YUKY', + ActorId_YWIS = 'YWIS', + ActorId_ZELD = 'ZELD', + ActorId_ZLBB = 'ZLBB', + ActorId_ZLBS = 'ZLBS', + ActorId_ZLSL = 'ZLSL', + ActorId_ZLSN = 'ZLSN', + ActorId_ZLSS = 'ZLSS', + ActorId_ZSRS = 'ZSRS', + ActorId_ZSTG = 'ZSTG', +}; diff --git a/include/Actor/ActorRupee.hpp b/include/Actor/ActorRupee.hpp new file mode 100644 index 00000000..ad2f411a --- /dev/null +++ b/include/Actor/ActorRupee.hpp @@ -0,0 +1,153 @@ +#pragma once + +#include "Actor/Actor.hpp" +#include "Actor/ActorUnk_ov000_0209767c.hpp" +#include "Player/PlayerGet.hpp" +#include "Unknown/UnkStruct_027e0ce4.hpp" +#include "types.h" + +typedef u32 RupeeId; +enum RupeeId_ { + /* 0 */ RupeeId_Green, + /* 1 */ RupeeId_Blue, + /* 2 */ RupeeId_Red, + /* 3 */ RupeeId_BigGreen, + /* 4 */ RupeeId_BigRed, + /* 5 */ RupeeId_Gold, + /* 6 */ RupeeId_6, + /* 7 */ RupeeId_7, +}; + +class Actor_9c { +public: + /* 00 (vtable) */ + /* 04 */ + + /* 00 */ virtual void vfunc_00(); // corresponds to func_ov000_02097c14 + /* 04 */ virtual void vfunc_04(); // corresponds to func_ov000_02097c20 + /* 08 */ + + Actor_9c(); + void func_ov000_02097bec(); +}; + +class Actor_c4_Base { +public: + Actor_c4_Base(void *param1, unk32 param2); +}; + +class Actor_c4 : public Actor_c4_Base { +public: + /* 00 (vtable) */ + /* 04 */ unk32 mUnk_04; + /* 08 */ unk16 mUnk_08; + /* 08 */ unk16 mUnk_0a; + /* 0c */ unk16 mUnk_0c; + /* 0c */ unk16 mUnk_0e; + /* 10 */ unk16 mUnk_10; + /* 10 */ unk16 mUnk_12; + /* 14 */ unk32 mUnk_14; + /* 18 */ unk32 mUnk_18; + /* 1c */ unk32 mUnk_1c; + /* 20 */ Actor *mUnk_20; + /* 24 */ + + /* 00 */ virtual unk32 vfunc_00(unk32 param1, unk32 param2); + /* 04 */ virtual void vfunc_04(); + /* 08 */ virtual void vfunc_08(); + /* 0c */ virtual void vfunc_0c(unk32 param1); + /* 10 */ + + Actor_c4(Actor *param1); + void func_ov031_020f637c(); + void func_ov031_020f6374(); + void func_ov031_020f6384(unk32 param1); + unk32 func_ov031_020f62e4(unk32 param1); +}; + +class ActorRupee : public Actor { +public: + /* 00 (base) */ + /* 94 */ u16 mUnk_94; + /* 96 */ u16 mUnk_96; + /* 98 */ u16 mUnk_98; + /* 9a */ u16 mUnk_9a; + /* 9c */ Actor_9c mUnk_9c; + /* a0 */ unk32 mUnk_a0; + /* a4 */ unk32 mUnk_a4; + /* a8 */ unk32 mUnk_a8; + /* ac */ unk32 mUnk_ac; + /* b0 */ unk32 mUnk_b0; + /* b4 */ unk32 mUnk_b4; + /* b8 */ unk32 mUnk_b8; + /* bc */ unk32 mUnk_bc; + /* c0 */ unk32 mUnk_c0; + /* c4 */ Actor_c4 mUnk_c4; + /* e8 */ unk32 mUnk_e8; + /* ec */ s16 mUnk_ec; + /* f0 */ UnkStruct_PlayerGet_ec mUnk_f0; + /* f4 */ bool mUnk_f4; + /* f5 */ unk8 mUnk_f5; + /* f6 */ unk8 mUnk_f6; + /* f7 */ unk8 mUnk_f7; + /* f8 */ + + ActorRupee(); + + /* 18 */ virtual unk32 vfunc_18() override; + /* 20 */ virtual void vfunc_20() override; + /* 2c */ virtual void vfunc_2c(unk32 param1) override; + /* 4c */ virtual ~ActorRupee() override; + + void func_ov000_02098a88(unk32 param1, unk32 param2); + + void func_ov017_020bf9c8(UnkStruct_func_01fff3b4_ret *param1); + + UnkStruct_ov000_020b539c_30 *func_ov031_020e8cb8(); + void func_ov031_020e8d2c(Vec3p *param1); + void func_ov031_020e8fec(); + void func_ov031_020e9068(); + void func_ov031_020e9108(); + void func_ov031_020e91a8(); + void func_ov031_020e9234(); + void func_ov031_020e9254(); + void func_ov031_020e92e0(); + void func_ov031_020e9310(); + void func_ov031_020e9428(); + void func_ov031_020e942c(); + void func_ov031_020e9430(); + void func_ov031_020e9434(); + void func_ov031_020e9438(); + void func_ov031_020e9450(); + void func_ov031_020e94d4(); + void func_ov031_020e951c(); + void func_ov031_020e9598(); + void func_ov031_020e95ac(); + void func_ov031_020e95b0(); + void func_ov031_020e95c0(); + void func_ov031_020e9610(); + void func_ov031_020e9624(); + void func_ov031_020e9638(); + void func_ov031_020e96bc(); + void func_ov031_020e970c(); + void func_ov031_020e9740(); + void func_ov031_020e9838(); + void func_ov031_020e98c4(); + void func_ov031_020e9904(unk32 param1); + void func_ov031_020e9b88(); + void func_ov031_020e9be8(); + bool func_ov031_020e9d54(); + void func_ov031_020e9d94(); + bool func_ov031_020e9e5c(); + + unk32 func_01fff5d0(unk32 param1, unk32 param2); +}; + +class ActorRupeeBase : public ActorUnk_ov000_0209767c { +public: + /* 00 (base) */ + + ActorRupeeBase(); + + /* 0c */ virtual Actor *Create(); +}; diff --git a/include/Actor/ActorUnk_ov000_0209767c.hpp b/include/Actor/ActorUnk_ov000_0209767c.hpp new file mode 100644 index 00000000..3e3c4bd6 --- /dev/null +++ b/include/Actor/ActorUnk_ov000_0209767c.hpp @@ -0,0 +1,36 @@ +#pragma once + +#include "Actor/Actor.hpp" +#include "System/SysNew.hpp" +#include "types.h" + +class ActorUnk_ov000_0209767c : public SysObject { +public: + /* 00 (vtable) */ + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0c */ unk32 mUnk_0c; + /* 10 */ unk32 mUnk_10; + + ActorUnk_ov000_0209767c(u32 actorId); + + /* 00 */ virtual void vfunc_00() = 0; + /* 04 */ virtual void vfunc_04() = 0; + /* 08 */ virtual void vfunc_08() = 0; + /* 0c */ virtual Actor *Create() = 0; + /* 10 */ virtual void vfunc_10(); + /* 14 */ virtual void vfunc_14(); + /* 18 */ virtual void vfunc_18(); + /* 1c */ virtual void vfunc_1c(); + /* 20 */ virtual void vfunc_20(); + /* 24 */ virtual void vfunc_24(); + /* 28 */ virtual void vfunc_28() = 0; + /* 2c */ virtual void vfunc_2c() = 0; + /* 30 */ virtual void vfunc_30() = 0; + /* 34 */ virtual void vfunc_34() = 0; + /* 38 */ virtual void vfunc_38() = 0; + /* 3c */ virtual void vfunc_3c() = 0; + /* 40 */ virtual void vfunc_40() = 0; + /* 44 */ virtual void vfunc_44() = 0; + /* 48 */ +}; diff --git a/include/Item/ItemManager.hpp b/include/Item/ItemManager.hpp index a0a22291..3f31dd4a 100644 --- a/include/Item/ItemManager.hpp +++ b/include/Item/ItemManager.hpp @@ -34,6 +34,7 @@ public: unk32 func_ov000_020a86a4(); u32 func_ov000_020a86d0(ItemFlag itemFlag); u8 func_ov000_020a8728(); + void func_ov000_020a8768(unk32 param1, unk32 param2, unk32 param3); u8 func_ov000_020a8748(); void func_ov000_020a87c8(s32 amount); void func_ov000_020a87ec(s32 amount); diff --git a/include/Player/PlayerGet.hpp b/include/Player/PlayerGet.hpp new file mode 100644 index 00000000..1375bc2f --- /dev/null +++ b/include/Player/PlayerGet.hpp @@ -0,0 +1,134 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include "Unknown/UnkStruct_027e0ce0.hpp" +#include "Unknown/UnkStruct_ov000_0208f820.hpp" + +class UnkStruct_ov110_021861ec { +public: + /* 00 */ Vec3p mUnk_00; + /* 08 */ unk32 mUnk_0c; + /* 08 */ unk32 mUnk_10; + /* 14 */ + + ARM UnkStruct_ov110_021861ec(q20 x, q20 y, q20 z) { + this->mUnk_00.x = x; + this->mUnk_00.y = y; + this->mUnk_00.z = z; + } +}; + +struct UnkStruct_PlayerGet_64 { + UnkStruct_PlayerGet_64(unk32 param1, unk32 param2); +}; + +class UnkStruct_PlayerGet_74_base : public SysObject { +public: + /* 00 (vtable) */ + + /* 00 */ virtual void vfunc_00(); + /* 04 */ virtual void vfunc_04() /* = 0 */; + /* 08 */ virtual void vfunc_08() /* = 0 */; + /* 0c */ virtual void vfunc_0c() /* = 0 */; + /* 10 */ virtual void vfunc_10() /* = 0 */; + /* 14 */ virtual void vfunc_14() /* = 0 */; + /* 18 */ virtual void vfunc_18() /* = 0 */; + /* 1c */ virtual void vfunc_1c() /* = 0 */; + /* 20 */ virtual void vfunc_20() /* = 0 */; + /* 24 */ + + UnkStruct_PlayerGet_74_base(); +}; + +class UnkStruct_PlayerGet_74 : public UnkStruct_PlayerGet_74_base { +public: + /* 00 (base) */ + + /* 00 */ virtual void vfunc_00() override; + + UnkStruct_PlayerGet_74() {} +}; + +class UnkStruct_PlayerGet_8c { +public: + UnkStruct_PlayerGet_8c(unk32 param1); +}; + +class UnkStruct_PlayerGet_ec { +public: + /* 00 */ unk32 mUnk_00; + /* 04 */ + + UnkStruct_PlayerGet_ec(unk32 param1) { + this->mUnk_00 = param1; + } + + ~UnkStruct_PlayerGet_ec(); +}; + +class PlayerGet : public UnkStruct_ov000_0208f820 { +public: + /* 00 (base) */ + /* 48 */ unk32 mUnk_48; + /* 4c */ unk32 mUnk_4c; + /* 50 */ unk32 mUnk_50; + /* 54 */ unk32 mUnk_54; + /* 58 */ unk32 mUnk_58; + /* 5c */ unk32 mUnk_5c; + /* 60 */ unk32 mUnk_60; + /* 64 */ UnkStruct_PlayerGet_64 mUnk_64; + /* 68 */ unk32 mUnk_68; + /* 6c */ unk32 mUnk_6c; + /* 70 */ unk16 mUnk_70; + /* 70 */ unk8 mUnk_72; + /* 70 */ unk8 mUnk_73; + /* 74 */ UnkStruct_PlayerGet_74 mUnk_74; + /* 78 */ unk32 mUnk_78; + /* 7c */ unk32 mUnk_7c; + /* 80 */ unk32 mUnk_80; + /* 84 */ unk32 mUnk_84; + /* 88 */ UnkStruct_ov000_0208f820 *mUnk_88; + /* 8c */ UnkStruct_PlayerGet_8c mUnk_8c; + /* 90 */ unk32 mUnk_90; + /* 94 */ unk32 mUnk_94; + /* 98 */ unk32 mUnk_98; + /* 9c */ unk32 mUnk_9c; + /* a0 */ unk32 mUnk_a0; + /* a4 */ unk32 mUnk_a4; + /* a8 */ unk32 mUnk_a8; + /* ac */ unk32 mUnk_ac; + /* b0 */ unk32 mUnk_b0; + /* b4 */ unk32 mUnk_b4; + /* b8 */ unk32 mUnk_b8; + /* bc */ unk32 mUnk_bc; + /* c0 */ unk32 mUnk_c0; + /* c4 */ unk32 mUnk_c4; + /* c8 */ unk32 mUnk_c8; + /* cc */ unk32 mUnk_cc; + /* d0 */ unk32 mUnk_d0; + /* d4 */ unk32 mUnk_d4; + /* d8 */ unk32 mUnk_d8; + /* dc */ unk32 mUnk_dc; + /* e0 */ unk32 mUnk_e0; + /* e4 */ unk32 mUnk_e4; + /* e8 */ unk32 mUnk_e8; + /* ec */ UnkStruct_PlayerGet_ec mUnk_ec[4]; + /* f0 */ + + /* 04 */ virtual ~PlayerGet() override; + /* 0c */ virtual void vfunc_0c() override; + /* 10 */ virtual void vfunc_10() override; + /* 18 */ virtual void vfunc_18(unk32 param1, unk32 param2, unk32 param3) override; + + void func_ov110_02184dac(unk32 param1, unk32 param2, unk32 param3); + PlayerGet(); + + static unk32 func_ov110_02185da4(unk32 param1); + + // Japanese version only + bool func_ov110_02186b8c(); +}; + +extern const UnkStruct_ov110_021861ec data_ov110_021861ec; diff --git a/include/System/Random.hpp b/include/System/Random.hpp new file mode 100644 index 00000000..167267ab --- /dev/null +++ b/include/System/Random.hpp @@ -0,0 +1,27 @@ +#pragma once + +#include "global.h" +#include "types.h" + +struct Random { + /* 00 */ u64 mRandomValue; + /* 08 */ u64 mFactor; + /* 10 */ u64 mAddend; + /* 18 */ + + /** + * Generate a random number from 0 (inclusive) to `max` (exclusive) + */ + u32 Next(u64 min, u64 max) { + mRandomValue = mAddend + mFactor * mRandomValue; + u64 result; + if ((max - min) == 0x100000000) { + result = mRandomValue; + } else { + result = (mRandomValue >> 32) * (max - min); + } + return (result >> 32) + min; + } +}; + +extern Random gRandom; diff --git a/include/Unknown/UnkStruct_027e09a8.hpp b/include/Unknown/UnkStruct_027e09a8.hpp new file mode 100644 index 00000000..b236ac45 --- /dev/null +++ b/include/Unknown/UnkStruct_027e09a8.hpp @@ -0,0 +1,11 @@ +#pragma once + +#include "nitro/math.h" +#include "types.h" + +class UnkStruct_027e09a8 { +public: + void func_ov000_02071b30(unk32 param1, Vec3p *pPos, unk32 param3); +}; + +extern UnkStruct_027e09a8 *data_027e09a8; diff --git a/include/Unknown/UnkStruct_027e0cd8.hpp b/include/Unknown/UnkStruct_027e0cd8.hpp index e802c8a5..e163fcaa 100644 --- a/include/Unknown/UnkStruct_027e0cd8.hpp +++ b/include/Unknown/UnkStruct_027e0cd8.hpp @@ -1,9 +1,32 @@ #pragma once +#include "nitro/math.h" #include "types.h" +class UnkStruct_027e0cd8_0c { +public: + /* 00 */ virtual void vfunc_00(); + /* 04 */ virtual void vfunc_04(); + /* 08 */ virtual void vfunc_08(); + /* 0c */ virtual void vfunc_0c(); + /* 10 */ virtual void vfunc_10(); + /* 14 */ virtual void vfunc_14(); + /* 18 */ virtual void vfunc_18(); + /* 1c */ virtual void vfunc_1c(); + /* 20 */ virtual void vfunc_20(); + /* 24 */ virtual void vfunc_24(); + /* 28 */ virtual q20 vfunc_28(Vec3p *param1, unk32 param2, unk32 param3); + /* 2c */ virtual void vfunc_2c(); +}; + class UnkStruct_027e0cd8 { public: + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0c */ UnkStruct_027e0cd8_0c *mUnk_0c; + /* 10 */ + void func_ov000_02081ecc(unk16 param1, unk32 param2); }; diff --git a/include/Unknown/UnkStruct_027e0ce0.hpp b/include/Unknown/UnkStruct_027e0ce0.hpp index 30820c39..fc628670 100644 --- a/include/Unknown/UnkStruct_027e0ce0.hpp +++ b/include/Unknown/UnkStruct_027e0ce0.hpp @@ -10,10 +10,10 @@ class UnkStruct_027e0ce0 { public: /* 00 */ unk8 mHealth; - /* 04 */ unk8 mHealthMax; - /* 02 */ unk32 mUnk_02; - /* 03 */ unk32 mUnk_03; - /* 04 */ unk32 mUnk_04; + /* 01 */ unk8 mHealthMax; + /* 02 */ unk8 mUnk_02; + /* 03 */ unk8 mUnk_03; + /* 04 */ unk32 *mUnk_04; /* 08 */ unk32 *mUnk_08; /* 0c */ unk32 *mUnk_0c; /* 10 */ unk32 *mUnk_10; diff --git a/include/Unknown/UnkStruct_027e0ce4.hpp b/include/Unknown/UnkStruct_027e0ce4.hpp new file mode 100644 index 00000000..0756ae71 --- /dev/null +++ b/include/Unknown/UnkStruct_027e0ce4.hpp @@ -0,0 +1,16 @@ +#pragma once + +#include "nitro/math.h" +#include "types.h" + +struct UnkStruct_func_01fff3b4_ret { + /* 00 */ unk8 mUnk_00[0xE8]; + /* e8 */ Vec3p mPos; +}; + +class UnkStruct_027e0ce4 { +public: + UnkStruct_func_01fff3b4_ret *func_01fff3b4(unk32 param1); +}; + +extern UnkStruct_027e0ce4 *data_027e0ce4; diff --git a/include/Unknown/UnkStruct_027e0cec.hpp b/include/Unknown/UnkStruct_027e0cec.hpp new file mode 100644 index 00000000..70321019 --- /dev/null +++ b/include/Unknown/UnkStruct_027e0cec.hpp @@ -0,0 +1,13 @@ +#pragma once + +#include "Player/PlayerGet.hpp" +#include "nitro/math.h" +#include "types.h" + +class UnkStruct_027e0cec { +public: + void func_ov000_0209ff8c(UnkStruct_PlayerGet_ec *param1, unk32 param2, Vec3p *param3, unk32 param4); + void func_ov000_020a0110(UnkStruct_PlayerGet_ec *param1); +}; + +extern UnkStruct_027e0cec *data_027e0cec; diff --git a/include/Unknown/UnkStruct_ov000_0208f820.hpp b/include/Unknown/UnkStruct_ov000_0208f820.hpp new file mode 100644 index 00000000..6eb2b5a3 --- /dev/null +++ b/include/Unknown/UnkStruct_ov000_0208f820.hpp @@ -0,0 +1,70 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include "System/SysNew.hpp" +#include "nitro/math.h" + +struct UnkStruct_ov000_0208f820_14 { + /* 00 */ unk8 mUnk_00[0x6C]; + /* 6c */ unk32 mUnk_6c; + /* 70 */ u16 mUnk_70; + /* 72 */ unk16 mUnk_72; + /* 74 */ unk32 mUnk_74; + /* 78 */ unk32 mUnk_78; + /* 7c */ unk32 mUnk_7c; + /* 80 */ unk32 mUnk_80; + /* 84 */ unk32 mUnk_84; + /* 88 */ unk32 mUnk_88; + /* 8c */ unk32 mUnk_8c; + /* 90 */ +}; + +struct UnkStruct_ov000_0208f820_28_54 { + /* 00 */ unk8 mUnk_00[0x12]; + /* 12 */ u16 mUnk_12; +}; + +struct UnkStruct_ov000_0208f820_28 { + /* 00 */ unk8 mUnk_00[0x54]; + /* 54 */ UnkStruct_ov000_0208f820_28_54 *mUnk_54; + /* 58 */ +}; + +class UnkStruct_ov000_0208f820 : public SysObject { +public: + /* 00 (vtable) */ + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0c */ unk32 mUnk_0c; + /* 10 */ unk32 mUnk_10; + /* 14 */ UnkStruct_ov000_0208f820_14 *mUnk_14; + /* 18 */ unk8 mUnk_18; + /* 18 */ unk8 mUnk_19; + /* 18 */ unk8 mUnk_1a; + /* 18 */ unk8 mUnk_1b; + /* 1c */ unk32 mUnk_1c; + /* 20 */ unk32 mUnk_20; + /* 24 */ unk32 mUnk_24; + /* 28 */ UnkStruct_ov000_0208f820_28 *mUnk_28; + /* 2c */ unk32 mUnk_2c; + /* 30 */ unk32 mUnk_30; + /* 34 */ Vec3p *mUnk_34; + /* 38 */ unk32 mUnk_38; + /* 3c */ unk32 mUnk_3c; + /* 40 */ unk32 mUnk_40; + /* 44 */ unk32 mUnk_44; + /* 48 */ + + /* 00 */ virtual void vfunc_00(); + /* 04 */ virtual ~UnkStruct_ov000_0208f820(); + /* 0c */ virtual void vfunc_0c(); + /* 10 */ virtual void vfunc_10(); + /* 14 */ virtual void vfunc_14(); + /* 18 */ virtual void vfunc_18(); + /* 1c */ virtual void vfunc_1c(); + /* 20 */ + + UnkStruct_ov000_0208f820(); +}; diff --git a/src/031_Land/Actor/ActorRupee.cpp b/src/031_Land/Actor/ActorRupee.cpp new file mode 100644 index 00000000..4bd8c656 --- /dev/null +++ b/src/031_Land/Actor/ActorRupee.cpp @@ -0,0 +1,789 @@ +#include "Actor/ActorRupee.hpp" +#include "System/Random.hpp" +#include "Unknown/UnkStruct_027e09a8.hpp" +#include "Unknown/UnkStruct_027e0cd8.hpp" +#include "Unknown/UnkStruct_027e0ce0.hpp" +#include "Unknown/UnkStruct_027e0cec.hpp" + +extern "C" unk32 func_01ffd420(unk32 *); +extern "C" void func_01ffedac(u16 *, Vec3p *); +extern "C" void func_01fff05c(u32 *, UnkStruct_027e0cd8_0c *, Vec3p *); +extern "C" unk32 func_02017158(); +extern "C" void func_ov000_02098838(); +extern "C" void func_ov017_020bf99c(); +extern "C" void func_ov031_0210acd4(u8); +extern "C" unk32 func_ov031_0210af50(u16, unk32 *); +extern void func_ov031_0210b0e4(u16, unk32); +extern "C" unk32 func_ov031_020d9834(unk32 *); + +extern UnkStruct_ov000_020b539c_30 data_ov031_021166e8; +extern unk32 *data_027e09b8; +extern unk32 *data_027e0d34; + +ARM UnkStruct_ov000_020b539c_30 *ActorRupee::func_ov031_020e8cb8() { + return &data_ov031_021166e8; +} + +ARM Actor *ActorRupeeBase::Create() { + return new(2, 4) ActorRupee(); +} + +ARM ActorRupeeBase::ActorRupeeBase() : + ActorUnk_ov000_0209767c(ActorId_Rupee) { + this->mUnk_04 = 0; + this->mUnk_08 = 0x556; + this->mUnk_0c = 0; + this->mUnk_10 = 0x556; +} + +// non-matching +ARM void ActorRupee::func_ov031_020e8d2c(Vec3p *param1) { + Actor_5c uStack_4c; + uStack_4c.func_ov000_020975f8(); + uStack_4c.mUnk_00 = *param1; + uStack_4c.mUnk_0c = 0; + this->func_ov000_020973f4(&data_ov000_020b539c, ActorId_Rupee, uStack_4c); +} + +ARM ActorRupee::ActorRupee() : + mUnk_94(0), + mUnk_96(0), + mUnk_98(0), + mUnk_9a(6), + mUnk_bc(0), + mUnk_c0(0), + mUnk_c4(this), + mUnk_e8(0), + mUnk_f0(0), + mUnk_f4(false) { + this->mUnk_a0 = 0x13100; + this->mUnk_40 = &this->mUnk_c4; +} + +ARM unk32 ActorRupee::vfunc_18() {} + +ARM void ActorRupee::func_ov031_020e8fec() { + switch (this->mUnk_6c) { + case RupeeId_Green: + data_027e09a8->func_ov000_02071b30(0x73, &this->mPos, 0); + break; + case RupeeId_Blue: + data_027e09a8->func_ov000_02071b30(0x74, &this->mPos, 0); + break; + case RupeeId_Red: + data_027e09a8->func_ov000_02071b30(0x75, &this->mPos, 0); + break; + default: + break; + } +} + +// non-matching (regalloc) +ARM void ActorRupee::func_ov031_020e9068() { + bool var_r4 = false; + + switch (this->mUnk_6c) { + case RupeeId_BigGreen: + case RupeeId_BigRed: + case RupeeId_Gold: + this->func_ov031_020e9904(5); + break; + default: { + ItemManager *pItemManager = data_027e0ce0->mUnk_2c; + pItemManager->func_ov000_020a8768(func_02017158(), 0, 1); + var_r4 = true; + break; + } + } + + if (this->mUnk_80 >= 0 && this->mUnk_76 != 0) { + this->func_ov000_02098a88(0, 1); + } + + this->func_ov031_020e8fec(); + + if (var_r4) { + this->func_ov000_020984d0(); + } +} + +// https://decomp.me/scratch/FZsEE +ARM void ActorRupee::func_ov031_020e9108() { + this->mVel.x = gRandom.Next(-0xCD, 0x19B); + this->mVel.y = gRandom.Next(0, 0x19A); + this->mVel.z = gRandom.Next(-0xCD, 0x19B); + this->mUnk_58 |= 0x02; +} + +ARM void ActorRupee::func_ov031_020e91a8() { + u32 sp0; + + if (this->mUnk_50 < this->mUnk_52) { + this->mUnk_50++; + } + + this->func_ov031_020e9b88(); + + if (!(this->mUnk_46 & 0x03)) { + return; + } + + func_01fff05c(&sp0, data_027e0cd8->mUnk_0c, &this->mPos); + + if (((sp0 >> 5) & 0x03) == 2) { + this->func_ov000_020984d0(); + return; + } + + this->func_ov031_020e9904(2); +} + +ARM void ActorRupee::func_ov031_020e9234() { + this->mVel.x = 0; + this->mVel.y = 0; + this->mVel.z = 0; + this->mUnk_58 |= 0x02; +} + +ARM void ActorRupee::func_ov031_020e9254() { + u32 sp0; + + if (this->mUnk_50 < this->mUnk_52) { + this->mUnk_50++; + } + + this->func_ov031_020e9be8(); + + if (!(this->mUnk_46 & 0x03)) { + return; + } + + func_01fff05c(&sp0, data_027e0cd8->mUnk_0c, &this->mPos); + + if (((sp0 >> 5) & 0x03) == 2) { + this->func_ov000_020984d0(); + return; + } + + this->func_ov031_020e9904(2); +} + +ARM void ActorRupee::func_ov031_020e92e0() { + this->mVel.x = 0; + this->mVel.y = 0; + this->mVel.z = 0; + + if (this->mUnk_96 - this->mUnk_94 > 180) { + this->mUnk_96 = 180; + this->mUnk_94 = 0; + } +} + +// non-matching +ARM void ActorRupee::func_ov031_020e9310() { + u32 sp0; + + if (this->mUnk_50 < this->mUnk_52) { + this->mUnk_50++; + } + + switch (this->mUnk_ec) { + case 0: + if (data_027e0cd8->mUnk_0c->vfunc_28(&this->mPos, 1, 0) < this->mPos.y) { + this->mUnk_ec++; + } + break; + case 1: + this->func_ov031_020e9be8(); + if (this->mUnk_46 & 3) { + this->mVel.x = 0; + this->mVel.y = 0; + this->mVel.z = 0; + + func_01fff05c(&sp0, data_027e0cd8->mUnk_0c, &this->mPos); + + if (((sp0 >> 5) & 3) != 2) { + this->mUnk_ec = 0; + } else { + this->func_ov000_020984d0(); + } + } + break; + default: + break; + } + + this->mUnk_44 = 3; + this->func_ov000_02098910(0, 0x10); + + if (this->mUnk_46 & 3) { + return; + } + + this->func_ov031_020e9904(1); +} + +ARM void ActorRupee::func_ov031_020e9428() {} + +ARM void ActorRupee::func_ov031_020e942c() {} + +ARM void ActorRupee::func_ov031_020e9430() {} + +ARM void ActorRupee::func_ov031_020e9434() {} + +ARM void ActorRupee::func_ov031_020e9438() { + func_ov017_020bf99c(); + this->mUnk_9c.func_ov000_02097bec(); +} + +ARM void ActorRupee::func_ov031_020e9450() { + this->func_ov017_020bf9c8(data_027e0ce4->func_01fff3b4(this->mUnk_bc)); + this->mPrevPos = this->mPos; + Vec3p_Add(&this->mPos, &this->mVel, &this->mPos); + + if (!(this->mUnk_58 & 0x20)) { + return; + } + + this->mVel.x = 0; + this->mVel.y = 0; + this->mVel.z = 0; + this->mUnk_a0 |= 0x1000; + this->func_ov031_020e9904(0); +} + +ARM void ActorRupee::func_ov031_020e94d4() { + this->mUnk_52 = -1; + this->mUnk_50 = 0; + this->mVel.x = 0; + this->mVel.y = 0; + this->mVel.z = 0; + this->mUnk_4a = 0; + this->mUnk_44 = 0; + this->mUnk_9c.func_ov000_02097bec(); + this->mUnk_58 &= ~0x02; +} + +ARM void ActorRupee::func_ov031_020e951c() { + s32 var_r1; + + if (func_01ffd420(data_027e09b8) != 0) { + return; + } + + var_r1 = -1; + + switch (this->mUnk_6c) { + case RupeeId_Gold: + var_r1 = 0x11; + break; + case RupeeId_BigGreen: + var_r1 = 0x0F; + break; + case RupeeId_BigRed: + var_r1 = 0x10; + break; + default: + break; + } + + if (var_r1 != -1 && func_ov031_020d9834(data_027e0d34) == 0) { + return; + } + + this->func_ov000_020984d0(); +} + +ARM void ActorRupee::func_ov031_020e9598() { + this->mVel.x = 0; + this->mVel.y = 0; + this->mVel.z = 0; +} + +ARM void ActorRupee::func_ov031_020e95ac() {} + +ARM void ActorRupee::func_ov031_020e95b0() { + this->mVel.x = 0; + this->mVel.z = 0; +} + +ARM void ActorRupee::func_ov031_020e95c0() { + UnkStruct_func_01fff3b4_ret *temp_r0; + + temp_r0 = data_027e0ce4->func_01fff3b4(this->mUnk_c0); + if (temp_r0 == NULL) { + this->func_ov031_020e9904(0); + return; + } + + this->mPos = temp_r0->mPos; +} + +ARM void ActorRupee::func_ov031_020e9610() { + this->mVel.x = 0; + this->mVel.y = 0; + this->mVel.z = 0; +} + +ARM void ActorRupee::func_ov031_020e9624() { + this->mUnk_9a = 0x14; + this->mUnk_98 = 0x00; +} + +ARM void ActorRupee::func_ov031_020e9638() { + this->mVel.x = 0; + this->mVel.y = 0; + this->mVel.z = 0; + this->mUnk_58 &= ~0x02; + this->mUnk_c4.mUnk_04 = 0; + + if (this->mUnk_6e == 2) { + this->mUnk_4a = 1; + data_027e0cec->func_ov000_0209ff8c(&this->mUnk_f0, 0xD00C, &this->mPos, 2); + } else { + this->mUnk_4a = 0; + } + + this->mPos.y -= FLOAT_TO_Q20(1.2); +} + +// non-matching +ARM void ActorRupee::func_ov031_020e96bc() { + u16 sp0; + + func_01ffedac(&sp0, &this->mPos); + + if (func_ov031_0210af50(sp0, NULL) == 0) { + return; + } + + this->func_ov031_020e9904(0xB); +} + +ARM void ActorRupee::func_ov031_020e970c() { + this->mVel.x = 0; + this->mVel.y = 0; + this->mVel.z = 0; + this->mUnk_58 |= 0x02; + this->mUnk_4a = 1; + this->mUnk_52 = -1; + this->mUnk_50 = 0; +} + +// non-matching +ARM void ActorRupee::func_ov031_020e9740() { + u16 sp0; + unk32 sp4; + unk32 *psp4; + s32 temp_r2; + UnkStruct_027e0cd8_0c *temp_r0; + + func_01ffedac(&sp0, &this->mPos); + sp4 = 0; + + if (func_ov031_0210af50(sp0, &sp4) != 0) { + temp_r0 = data_027e0cd8->mUnk_0c; + temp_r2 = (sp4 - 0x800) + temp_r0->vfunc_28(&this->mPos, 0, 0); + + if (this->mPos.y != temp_r2) { + this->mPos.y = temp_r2; + this->mUnk_52 = -1; + this->mUnk_50 = 0; + } else if (this->mUnk_50 == 8) { + this->func_ov031_020e9904(0xC); + } + } else { + temp_r0 = data_027e0cd8->mUnk_0c; + this->mPos.y = temp_r0->vfunc_28(&this->mUnk_5c.mUnk_00, 0, 0); + this->func_ov031_020e9904(0xC); + } + + if (this->mUnk_50 < this->mUnk_52) { + this->mUnk_50++; + } +} + +// non-matching +ARM void ActorRupee::func_ov031_020e9838() { + u16 sp2; + + func_01ffedac(&sp2, &this->mPos); + this->mUnk_c4.mUnk_04 = 1; + func_ov031_0210b0e4(sp2, 0); + func_ov031_0210acd4(sp2); + func_ov031_0210acd4(sp2); + data_027e0cec->func_ov000_020a0110(&this->mUnk_f0); +} + +// non-matching +ARM void ActorRupee::func_ov031_020e98c4() { + u16 sp0; + + func_01ffedac(&sp0, &this->mPos); + func_ov031_0210b0e4(sp0, 1); + this->func_ov031_020e9904(1); +} + +typedef void (*UnkCallback_ov031_02113520)(void *); +struct UnkStruct_ov031_02113520 { + /* 00 */ UnkCallback_ov031_02113520 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ +}; +extern UnkStruct_ov031_02113520 data_ov031_02113520[13]; + +// non-matching +ARM void ActorRupee::func_ov031_020e9904(unk32 param1) { + this->mUnk_4c = param1; + this->mUnk_52 = -1; + this->mUnk_50 = 0; + this->mUnk_ec = 0; + u32 uVar1 = data_ov031_02113520[this->mUnk_4c].mUnk_04; + UnkCallback_ov031_02113520 pcVar2; + + if (!(uVar1 & 1)) { + pcVar2 = data_ov031_02113520[this->mUnk_4c].mUnk_00; + } else { + pcVar2 = (UnkCallback_ov031_02113520) (((u32) this + uVar1 >> 1) + &data_ov031_02113520[this->mUnk_4c]); + } + + pcVar2(this); +} + +extern "C" void func_01fff17c(unk16 *, UnkStruct_027e0ce0 *, unk32); +extern "C" void func_02018114(unk16 *, unk32); +typedef void (*UnkCallback_vfunc_20)(Vec3p *); + +struct UnkStruct_ov031_02113588 { + /* 00 */ UnkCallback_vfunc_20 callback; + /* 04 */ unk32 mUnk_04; + /* 08 */ +}; +extern UnkStruct_ov031_02113588 data_ov031_02113588[13]; + +// non-matching +ARM void ActorRupee::vfunc_20() { + short sVar1; + unk16 uVar2; + unk16 uVar3; + int iVar4; + u32 uVar5; + UnkCallback_vfunc_20 pcVar6; + int iVar7; + int iVar8; + unk16 uStack_16; + unk16 uStack_18; + unk16 uStack_1a; + short sStack_1c; + u16 uStack_1e; + u16 uStack_20; + Vec3p test; + + uStack_1a = 0; + uVar2 = 0x666; + uStack_16 = 0xFB33; + uStack_18 = uVar2; + + func_01fff17c(&sStack_1c, data_027e0ce0, 0); + func_02018114(&uStack_1a, sStack_1c); + this->mUnk_c4.mUnk_08 = uStack_1a; + this->mUnk_c4.mUnk_0a = uStack_18; + this->mUnk_c4.mUnk_0c = uStack_16; + + uStack_1a = 0; + uStack_18 = 0x666; + uStack_16 = 0; + this->mUnk_c4.mUnk_0e = 0; + this->mUnk_c4.mUnk_10 = 0x666; + sVar1 = this->mUnk_4c; + + test = this->mPos; + + if (sVar1 != 5) { + iVar4 = (int) (short) this->mUnk_4c; + } + + this->mUnk_c4.mUnk_12 = 0; + + this->mPrevPos = test; + + uVar3 = uVar2; + + if ((sVar1 != 5 && iVar4 != 10) && iVar4 != 0xb) { + if ((sVar1 != 6) && ((u16) this->mUnk_98 < (u16) this->mUnk_9a)) { + this->mUnk_98++; + } + + uVar3 = uStack_18; + + if ((u16) this->mUnk_9a <= (u16) this->mUnk_98) { + this->mUnk_3c = (unk32) & this->mUnk_9c; + uStack_18 = uVar2; + this->func_ov000_020989e0(); + uVar3 = uStack_18; + + if ((this->mUnk_a4 & 0x3ffff) != 0) { + sVar1 = *(short *) &this->mUnk_b8; + + switch (mUnk_b8) { + case 0x08: + case 0x10: + if ((this->mUnk_a8 & 0x100) != 0) { + this->func_ov031_020e9068(); + uVar3 = uStack_18; + } + break; + case 0x0C: + this->mUnk_bc = this->mUnk_a8; + this->mUnk_a0 &= 0xffffefff; + this->func_ov031_020e9904(6); + uVar3 = uStack_18; + break; + default: + break; + } + } + } + } + + uStack_18 = uVar3; + iVar4 = (int) (short) this->mUnk_4c; + // uVar5 = *(u32 *) (data_ov031_0211358c[iVar4 * 8]); + + if (!(uVar5 & 1)) { + data_ov031_02113588[iVar4 * 2].callback(NULL); + } else { + this->vfunc_00(NULL); + // pcVar6 = *(code **) (*(int *) ((int) &this->vtable + ((int) uVar5 >> 1)) + (&data_ov031_02113588)[iVar4 * 2]); + } + + // (*pcVar6)(); + + if ((this->mUnk_80 < 0) && (this->mUnk_4c != 5)) { + this->func_ov031_020e9d94(); + } + + if (this->mUnk_6e != 0) { + sVar1 = this->mUnk_4c; + + if (!(sVar1 != 10 && sVar1 != 0xb && sVar1 != 0xc)) { + func_01ffedac(&uStack_1e, &this->mPos); + func_ov031_0210b0e4(uStack_1e, 0); + } else { + func_01ffedac(&uStack_20, &this->mPos); + func_ov031_0210b0e4(uStack_20, 1); + } + } +} + +ARM void ActorRupee::func_ov031_020e9b88() { + func_ov000_02098838(); + Vec3p_Add(&this->mPos, &this->mVel, &this->mPos); + + if (this->mUnk_5c.mUnk_00.y < this->mPos.y + this->mVel.y) { + this->mUnk_44 = 0x9C; + } else { + this->mUnk_44 = 0x9F; + } + + if (this->func_ov000_02098910(0, 0x10) != 0) { + this->mVel.x = 0; + this->mVel.z = 0; + } +} + +ARM void ActorRupee::func_ov031_020e9be8() { + func_ov000_02098838(); + Vec3p_Add(&this->mPos, &this->mVel, &this->mPos); + + if (this->mVel.y < 0) { + this->mUnk_44 = 3; + this->func_ov000_02098910(0, 0x10); + } +} + +extern "C" void func_ov000_0205c1f0(unk32 *, unk16); +extern unk32 data_ov031_02110aa0[]; +extern unk32 data_ov031_02113468[]; +extern "C" void func_ov000_0205c204(unk32 *, Vec3p *, unk32, unk32, unk32); + +// non-matching +ARM void ActorRupee::vfunc_2c(unk32 param1) { + Vec3p iStack_18; + Vec3p iStack_28; + unk32 auStack_30[4]; + s32 uVar2; + + if (this->func_01fff5d0(param1, 0) == 0) { + return; + } + + func_ov000_0205c1f0(auStack_30, data_ov031_02110aa0[this->mUnk_6c]); + iStack_18 = this->mPos; + + if (!this->func_ov031_020e9d54()) { + iStack_18.y += 0x800; + func_ov000_0205c204(auStack_30, &iStack_18, 0xB0A, 0x0A, 0x1F); + uVar2 = 0x333; + } else { + iStack_18.y += data_ov031_02113468[2]; + func_ov000_0205c204(auStack_30, &iStack_18, data_ov031_02113468[1], data_ov031_02113468[1], 0x1F); + uVar2 = 0x4CD; + } + + if (this->mUnk_4c != 9) { + iStack_28.x = this->mPos.x; + iStack_28.y = this->mPos.y + 0x80; + iStack_28.z = this->mPos.z; + this->func_ov017_020bf5c4(&iStack_28, uVar2, uVar2, 0x1F, 0); + } +} + +ARM bool ActorRupee::func_ov031_020e9d54() { + switch (this->mUnk_6c) { + case RupeeId_BigGreen: + case RupeeId_BigRed: + case RupeeId_Gold: + case RupeeId_7: + return true; + + default: + break; + } + + return false; +} + +// non-matching +ARM void ActorRupee::func_ov031_020e9d94() { + s32 temp_r0_2; + s32 var_r0; + s32 var_r1; + bool var_r1_2; + u16 temp_r0; + u32 temp_r1; + + if (this->func_ov031_020e9e5c()) { + this->mUnk_58 |= 2; + return; + } + + if (!this->mUnk_f4) { + if (this->mUnk_94 < this->mUnk_96) { + this->mUnk_94++; + var_r1 = 0; + } else { + var_r1 = 1; + } + + if (var_r1 == 0) { + return; + } + this->mUnk_f4 = 1; + this->mUnk_96 = 0x3C; + this->mUnk_94 = 0; + return; + } + + temp_r0 = this->mUnk_94; + temp_r1 = temp_r0 >> 0x1F; + + if ((this->mUnk_94 & 7) < 4) { + this->mUnk_58 &= ~2; + } else { + this->mUnk_58 |= 2; + } + + if (this->mUnk_94 < this->mUnk_96) { + var_r1_2 = 0; + this->mUnk_94++; + } else { + var_r1_2 = 1; + } + + if (var_r1_2 == 0) { + return; + } + + this->func_ov000_020984d0(); +} + +// non-matching (and awful...) +ARM bool ActorRupee::func_ov031_020e9e5c() { + short sVar1; + bool bVar8; + bool bVar2; + bool bVar3; + bool bVar4; + bool bVar5; + bool bVar6; + bool bVar7; + + sVar1 = this->mUnk_4c; + bVar6 = true; + bVar5 = true; + bVar4 = true; + bVar3 = true; + bVar2 = true; + bVar7 = true; + bVar8 = true; + if ((sVar1 != 6 && sVar1 != 7)) { + bVar2 = false; + } + if ((!bVar2) && (sVar1 != 3)) { + bVar8 = false; + } + if ((!bVar8) && (sVar1 != 8)) { + bVar3 = false; + } + if ((!bVar3) && (sVar1 != 9)) { + bVar4 = false; + } + if ((!bVar4) && (sVar1 != 10)) { + bVar5 = false; + } + if ((!bVar5) && (sVar1 != 0xb)) { + bVar6 = false; + } + if (!(bVar6) && (sVar1 != 0xc)) { + bVar7 = false; + } + + return bVar7; +} + +#define GET_ACTOR_RUPEE(pActor) ((ActorRupee *) (pActor)) + +ARM Actor_c4::Actor_c4(Actor *param1) : + Actor_c4_Base(¶m1->mUnk_8c, 0) { + this->mUnk_20 = param1; + this->mUnk_04 = 1; +} + +// non-matching +ARM unk32 Actor_c4::vfunc_00(unk32 param1, unk32 param2) { + if (param2 != 0) { + ActorRupee *pRupee = GET_ACTOR_RUPEE(this->mUnk_20); + pRupee->mUnk_c0 = param2; + pRupee->func_ov031_020e9904(7); + } + + return this->func_ov031_020f62e4(param2); +} + +ARM void Actor_c4::vfunc_04() { + GET_ACTOR_RUPEE(this->mUnk_20)->func_ov031_020e9904(8); + this->func_ov031_020f6374(); +} + +ARM void Actor_c4::vfunc_0c(unk32 param1) { + GET_ACTOR_RUPEE(this->mUnk_20)->func_ov031_020e9904(1); + this->func_ov031_020f6384(param1); +} + +ARM void Actor_c4::vfunc_08() { + GET_ACTOR_RUPEE(this->mUnk_20)->func_ov031_020e9068(); + this->func_ov031_020f637c(); +} + +ARM ActorRupee::~ActorRupee() {} diff --git a/src/Main/func_02017ea4.cpp b/src/Main/func_02017ea4.cpp new file mode 100644 index 00000000..ff59da51 --- /dev/null +++ b/src/Main/func_02017ea4.cpp @@ -0,0 +1,10 @@ +#include "System/Random.hpp" +#include "types.h" + +ARM extern "C" void func_02017ea4(u16 *param1) { + *param1 = gRandom.Next(0, 0x100000000) >> 16; +} + +ARM extern "C" void func_02017ee4(u16 *param1) { + *param1 = gRandom.Next(0, 4) << 14; +} diff --git a/tools/configure.py b/tools/configure.py index f9846ffb..b56133b2 100755 --- a/tools/configure.py +++ b/tools/configure.py @@ -436,7 +436,7 @@ def add_download_tool_builds(n: ninja_syntax.Writer, project: Project): rule="phony", outputs="download_tools", ) - n.newline + n.newline() def add_extract_build(n: ninja_syntax.Writer, project: Project):