From d1acad0dd8c597b567376d253284a335a5554bee Mon Sep 17 00:00:00 2001 From: Aetias Date: Mon, 26 May 2025 23:30:28 +0200 Subject: [PATCH 1/5] Delink `ActorRefill` --- config/eur/arm9/overlays/ov014/delinks.txt | 6 ++ config/usa/arm9/overlays/ov014/delinks.txt | 6 ++ include/Actor/Player/ActorRefill.hpp | 102 +++++++++++++++++++++ src/14_Land/Actor/Player/ActorRefill.cpp | 31 +++++++ 4 files changed, 145 insertions(+) create mode 100644 include/Actor/Player/ActorRefill.hpp create mode 100644 src/14_Land/Actor/Player/ActorRefill.cpp diff --git a/config/eur/arm9/overlays/ov014/delinks.txt b/config/eur/arm9/overlays/ov014/delinks.txt index 60aa7fc6..b5ed209d 100644 --- a/config/eur/arm9/overlays/ov014/delinks.txt +++ b/config/eur/arm9/overlays/ov014/delinks.txt @@ -12,3 +12,9 @@ src/14_Land/Actor/ActorRupee.cpp: .ctor start:0x0215591c end:0x02155920 .data start:0x02158994 end:0x02158a94 .bss start:0x0215b1f4 end:0x0215b214 + +src/14_Land/Actor/Player/ActorRefill.cpp: + .text start:0x02134e24 end:0x02135940 + .init start:0x02154c14 end:0x02154d24 + .ctor start:0x021558ec end:0x021558f0 + .data start:0x021578b0 end:0x02157d70 diff --git a/config/usa/arm9/overlays/ov014/delinks.txt b/config/usa/arm9/overlays/ov014/delinks.txt index c0472e4a..2290a8e6 100644 --- a/config/usa/arm9/overlays/ov014/delinks.txt +++ b/config/usa/arm9/overlays/ov014/delinks.txt @@ -12,3 +12,9 @@ src/14_Land/Actor/ActorRupee.cpp: .ctor start:0x02155878 end:0x0215587c .data start:0x021588f4 end:0x021589f8 .bss start:0x0215b154 end:0x0215b174 + +src/14_Land/Actor/Player/ActorRefill.cpp: + .text start:0x02134d80 end:0x0213589c + .init start:0x02154b70 end:0x02154c80 + .ctor start:0x02155848 end:0x0215584c + .data start:0x02157810 end:0x02157cd0 diff --git a/include/Actor/Player/ActorRefill.hpp b/include/Actor/Player/ActorRefill.hpp new file mode 100644 index 00000000..47e7d9fc --- /dev/null +++ b/include/Actor/Player/ActorRefill.hpp @@ -0,0 +1,102 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include "Actor/Actor.hpp" + +class ActorRefill : public Actor { +public: + /* 000 (base) */ + /* 158 */ unk32 mUnk_158; + /* 15c */ unk32 mUnk_15c; + /* 160 */ unk32 mUnk_160; + /* 164 */ unk8 mUnk_164; + /* 165 */ unk8 mUnk_165[0x3]; + /* 168 */ + +public: + ActorRefill(); + + /* 00 */ virtual ~ActorRefill() override; + /* 08 */ virtual bool vfunc_08() override; + /* 14 */ virtual void vfunc_14(u32 param1) override; + /* 20 */ virtual void vfunc_20(bool param1) override; + /* b4 */ virtual unk32 vfunc_b4() = 0; + /* b8 */ + + bool func_ov014_02135364(unk32 param1); + void func_ov014_02135474(); +}; + +class ActorRefillBombs : public ActorRefill { +public: + /* 000 (base) */ + /* 168 */ + +public: + ActorRefillBombs(); + static ActorRefillBombs *Create(); + + /* 00 */ virtual ~ActorRefillBombs() override; + /* b4 */ virtual unk32 vfunc_b4() override; + /* b8 */ +}; + +class ActorRefillBombchus : public ActorRefill { +public: + /* 000 (base) */ + /* 168 */ + +public: + ActorRefillBombchus(); + static ActorRefillBombchus *Create(); + + /* 00 */ virtual ~ActorRefillBombchus() override; + /* b4 */ virtual unk32 vfunc_b4() override; + /* b8 */ +}; + +class ActorRefillArrows : public ActorRefill { +public: + /* 000 (base) */ + /* 168 */ + +public: + ActorRefillArrows(); + static ActorRefillArrows *Create(); + + /* 00 */ virtual ~ActorRefillArrows() override; + /* b4 */ virtual unk32 vfunc_b4() override; + /* b8 */ +}; + +class ActorRefillTime : public ActorRefill { +public: + /* 000 (base) */ + /* 168 */ + +public: + ActorRefillTime(); + static ActorRefillTime *Create(); + + /* 00 */ virtual ~ActorRefillTime() override; + /* 08 */ virtual bool vfunc_08() override; + /* b4 */ virtual unk32 vfunc_b4() override; + /* b8 */ +}; + +class ActorLSTM : public ActorRefill { +public: + /* 000 (base) */ + /* 168 */ + +public: + ActorLSTM(); + static ActorLSTM *Create(); + + /* 00 */ virtual ~ActorLSTM() override; + /* 08 */ virtual bool vfunc_08() override; + /* b4 */ virtual unk32 vfunc_b4() override; + /* b8 */ +}; diff --git a/src/14_Land/Actor/Player/ActorRefill.cpp b/src/14_Land/Actor/Player/ActorRefill.cpp new file mode 100644 index 00000000..841c4910 --- /dev/null +++ b/src/14_Land/Actor/Player/ActorRefill.cpp @@ -0,0 +1,31 @@ +#include "Actor/Player/ActorRefill.hpp" + +ActorRefillBombs *ActorRefillBombs::Create() {} +ActorRefillBombchus *ActorRefillBombchus::Create() {} +ActorRefillArrows *ActorRefillArrows::Create() {} +ActorRefillTime *ActorRefillTime::Create() {} +ActorLSTM *ActorLSTM::Create() {} +ActorRefill::ActorRefill() {} +ActorRefill::~ActorRefill() {} +bool ActorRefill::vfunc_08() {} +void ActorRefill::vfunc_14(u32 param1) {} +bool ActorRefill::func_ov014_02135364(unk32 param1) {} +void ActorRefill::vfunc_20(bool param1) {} +void ActorRefill::func_ov014_02135474() {} +ActorRefillBombs::ActorRefillBombs() {} +ActorRefillBombs::~ActorRefillBombs() {} +unk32 ActorRefillBombs::vfunc_b4() {} +ActorRefillBombchus::ActorRefillBombchus() {} +ActorRefillBombchus::~ActorRefillBombchus() {} +unk32 ActorRefillBombchus::vfunc_b4() {} +ActorRefillArrows::ActorRefillArrows() {} +ActorRefillArrows::~ActorRefillArrows() {} +unk32 ActorRefillArrows::vfunc_b4() {} +ActorRefillTime::ActorRefillTime() {} +ActorRefillTime::~ActorRefillTime() {} +bool ActorRefillTime::vfunc_08() {} +unk32 ActorRefillTime::vfunc_b4() {} +ActorLSTM::ActorLSTM() {} +ActorLSTM::~ActorLSTM() {} +bool ActorLSTM::vfunc_08() {} +unk32 ActorLSTM::vfunc_b4() {} From 9a58583fafd6add2324cb6397c000a5f0e9403b6 Mon Sep 17 00:00:00 2001 From: Aetias Date: Mon, 26 May 2025 23:30:42 +0200 Subject: [PATCH 2/5] Update actors.md --- docs/actors.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/docs/actors.md b/docs/actors.md index 49300936..1787be41 100644 --- a/docs/actors.md +++ b/docs/actors.md @@ -80,6 +80,8 @@ translations. Feel free to contribute to this list! `PSBA` | Pushable Armos | Armos statue `PSBL` | Push Block `RFLR` | Repeating? Floor | Moves repetetively along a set path +`RLST` | Rolling Stone +`RLSG` | Rolling Stone Generator `SPRL` | Spike Roller `WBLK` | Wind Block | The blocks in the Wind Temple that blow air `WPHL` | Warp Hole | Blue warp @@ -101,7 +103,7 @@ translations. Feel free to contribute to this list! `CHUC` | ChuChu `CROW` | Crow | Bird that steals rupees `EGST` | Escape Ghost | Poe -`FLTB` | Floating ??? | Flying pot +`FLTB` | Flying Tsubo (つぼ) | Flying pot `FSHB` | Fish Bullet | Geozard bullet `FSHM` | Fishman | Geozard `GELL` | Gel @@ -116,7 +118,7 @@ translations. Feel free to contribute to this list! `OCSH` | Octa Shell | Octorok bullet `OCTA` | Octarock | Octorok `PBLN` | Petit Blin | Miniblin -`PB ` | | Eye Slug +`PBZK` | | Eye Slug `PLSV` | Pols Voice `POON` | Pōn (ポーン) | Hardhat beetle `RAT0` | Rat @@ -124,11 +126,15 @@ translations. Feel free to contribute to this list! `RAT1` `SNAK` | Snake | Rope, the purple snake enemy `SPDR` | Spider | Skulltula +`STLB` | Stalfos bone | Projectile thrown by Stalfos `STLF` | Stalfos +`STLH` | Stalfos head +`STLP` | Stalfos | Stationary, throws bones constantly `STLW` | Stalfos Warrior `TAIL` | Tail | Moldorm head `TALB` | Tail Body | One of Moldorm's 3 body parts `TEKT` | Tektite +`UBLN` | Umi (うみ) Blin | Pirate miniblin `WTCR` | Watcher | Phantom eye `YETI` | Yook @@ -167,6 +173,7 @@ translations. Feel free to contribute to this list! `CMNC` | Character Man C | Doudo, man in blue of Mercay Island `COMA` | Character Old A | Tuzi, woman in brown of Mercay Island `COBS` | Character Old B/Shared | Maltza, man at the bar of Mercay Island +`CPSK` | Carpenter Spirit Knight? | Cobble spirit (Brant, Bremeur, Doylan, Max) `CRPS` | Corpse | Non-moving skeleton with a blue spirit `CSTM` | Character Standard Man | Adult Male NPC `CWIF` | Character Wife | Maronie, woman in purple of Molida Island @@ -220,7 +227,10 @@ translations. Feel free to contribute to this list! `FSRL` | Fish Reel | Roaming fish `GFIS` | Golden Frog ??? `GSIP` | Ghost Ship +`GYRG` | Gyorg +`GYMG` | Gyorg monster generator `HRCN` | Hurricane | Stops you from going to other seas +`KMGA` | Kamome (カモメ) Generator | Seagull generator `KMME` | Kamome (カモメ) | Seagull `LOND` | | Explosive barrel `PLSP` | Pirate Lady Ship | Jolene's ship @@ -231,6 +241,7 @@ translations. Feel free to contribute to this list! `SLTR` | Salvage ??? | Salvage arm `SLOC` | Salvage Octorok `SLRC` | Salvage Rupee ??? +`SNGA` | Sea NPC Generator | Spawns sea monsters `SNAV` | Sea Navi | Shows proximity to the Ghost Ship `SPKN` | Sea Plant ??? | Eye Plant `SROP` | Sea Rope | Sea Trap rope, jump over to avoid damage From 9f8ead4aebb81502160cceeccdd2259a84c82896 Mon Sep 17 00:00:00 2001 From: Aetias Date: Tue, 27 May 2025 19:00:31 +0200 Subject: [PATCH 3/5] Add symbols for `ActorRefill` --- config/eur/arm9/overlays/ov014/delinks.txt | 1 + config/eur/arm9/overlays/ov014/symbols.txt | 107 +++++++++++---------- config/usa/arm9/overlays/ov014/delinks.txt | 1 + config/usa/arm9/overlays/ov014/symbols.txt | 107 +++++++++++---------- include/Actor/Player/ActorRefill.hpp | 11 +++ src/14_Land/Actor/Player/ActorRefill.cpp | 6 ++ 6 files changed, 127 insertions(+), 106 deletions(-) diff --git a/config/eur/arm9/overlays/ov014/delinks.txt b/config/eur/arm9/overlays/ov014/delinks.txt index b5ed209d..c58b5eda 100644 --- a/config/eur/arm9/overlays/ov014/delinks.txt +++ b/config/eur/arm9/overlays/ov014/delinks.txt @@ -18,3 +18,4 @@ src/14_Land/Actor/Player/ActorRefill.cpp: .init start:0x02154c14 end:0x02154d24 .ctor start:0x021558ec end:0x021558f0 .data start:0x021578b0 end:0x02157d70 + .bss start:0x0215af94 end:0x0215b034 diff --git a/config/eur/arm9/overlays/ov014/symbols.txt b/config/eur/arm9/overlays/ov014/symbols.txt index 57a2177c..c4185ad6 100644 --- a/config/eur/arm9/overlays/ov014/symbols.txt +++ b/config/eur/arm9/overlays/ov014/symbols.txt @@ -586,42 +586,42 @@ func_ov014_02134c04 kind:function(arm,size=0x8) addr:0x2134c04 func_ov014_02134c0c kind:function(arm,size=0x8) addr:0x2134c0c func_ov014_02134c14 kind:function(arm,size=0x200) addr:0x2134c14 func_ov014_02134e14 kind:function(arm,size=0x10) addr:0x2134e14 -func_ov014_02134e24 kind:function(arm,size=0x30) addr:0x2134e24 -func_ov014_02134e54 kind:function(arm,size=0x30) addr:0x2134e54 -func_ov014_02134e84 kind:function(arm,size=0x30) addr:0x2134e84 -func_ov014_02134eb4 kind:function(arm,size=0x30) addr:0x2134eb4 -func_ov014_02134ee4 kind:function(arm,size=0x30) addr:0x2134ee4 -func_ov014_02134f14 kind:function(arm,size=0x40) addr:0x2134f14 -func_ov014_02134f54 kind:function(arm,size=0x14) addr:0x2134f54 -func_ov014_02134f68 kind:function(arm,size=0x1c) addr:0x2134f68 -func_ov014_02134f84 kind:function(arm,size=0x14) addr:0x2134f84 -func_ov014_02134f98 kind:function(arm,size=0xf4) addr:0x2134f98 -func_ov014_0213508c kind:function(arm,size=0x2d8) addr:0x213508c -func_ov014_02135364 kind:function(arm,size=0x54) addr:0x2135364 -func_ov014_021353b8 kind:function(arm,size=0xbc) addr:0x21353b8 -func_ov014_02135474 kind:function(arm,size=0x84) addr:0x2135474 -func_ov014_021354f8 kind:function(arm,size=0x34) addr:0x21354f8 -func_ov014_0213552c kind:function(arm,size=0x14) addr:0x213552c -func_ov014_02135540 kind:function(arm,size=0x1c) addr:0x2135540 -func_ov014_0213555c kind:function(arm,size=0x8) addr:0x213555c -func_ov014_02135564 kind:function(arm,size=0x34) addr:0x2135564 -func_ov014_02135598 kind:function(arm,size=0x14) addr:0x2135598 -func_ov014_021355ac kind:function(arm,size=0x1c) addr:0x21355ac -func_ov014_021355c8 kind:function(arm,size=0x8) addr:0x21355c8 -func_ov014_021355d0 kind:function(arm,size=0x34) addr:0x21355d0 -func_ov014_02135604 kind:function(arm,size=0x14) addr:0x2135604 -func_ov014_02135618 kind:function(arm,size=0x1c) addr:0x2135618 -func_ov014_02135634 kind:function(arm,size=0x8) addr:0x2135634 -func_ov014_0213563c kind:function(arm,size=0x34) addr:0x213563c -func_ov014_02135670 kind:function(arm,size=0x14) addr:0x2135670 -func_ov014_02135684 kind:function(arm,size=0x1c) addr:0x2135684 -func_ov014_021356a0 kind:function(arm,size=0x114) addr:0x21356a0 -func_ov014_021357b4 kind:function(arm,size=0x8) addr:0x21357b4 -func_ov014_021357bc kind:function(arm,size=0x34) addr:0x21357bc -func_ov014_021357f0 kind:function(arm,size=0x14) addr:0x21357f0 -func_ov014_02135804 kind:function(arm,size=0x1c) addr:0x2135804 -func_ov014_02135820 kind:function(arm,size=0x118) addr:0x2135820 -func_ov014_02135938 kind:function(arm,size=0x8) addr:0x2135938 +_ZN16ActorRefillBombs6CreateEv kind:function(arm,size=0x30) addr:0x2134e24 +_ZN19ActorRefillBombchus6CreateEv kind:function(arm,size=0x30) addr:0x2134e54 +_ZN17ActorRefillArrows6CreateEv kind:function(arm,size=0x30) addr:0x2134e84 +_ZN15ActorRefillTime6CreateEv kind:function(arm,size=0x30) addr:0x2134eb4 +_ZN9ActorLSTM6CreateEv kind:function(arm,size=0x30) addr:0x2134ee4 +_ZN11ActorRefillC2Ev kind:function(arm,size=0x40) addr:0x2134f14 +_ZN11ActorRefillD1Ev kind:function(arm,size=0x14) addr:0x2134f54 +_ZN11ActorRefillD0Ev kind:function(arm,size=0x1c) addr:0x2134f68 +_ZN11ActorRefillD2Ev kind:function(arm,size=0x14) addr:0x2134f84 +_ZN11ActorRefill8vfunc_08Ev kind:function(arm,size=0xf4) addr:0x2134f98 +_ZN11ActorRefill8vfunc_14Ej kind:function(arm,size=0x2d8) addr:0x213508c +_ZN11ActorRefill19func_ov014_02135364Ei kind:function(arm,size=0x54) addr:0x2135364 +_ZN11ActorRefill8vfunc_20Eb kind:function(arm,size=0xbc) addr:0x21353b8 +_ZN11ActorRefill19func_ov014_02135474Ev kind:function(arm,size=0x84) addr:0x2135474 +_ZN16ActorRefillBombsC1Ev kind:function(arm,size=0x34) addr:0x21354f8 +_ZN16ActorRefillBombsD1Ev kind:function(arm,size=0x14) addr:0x213552c +_ZN16ActorRefillBombsD0Ev kind:function(arm,size=0x1c) addr:0x2135540 +_ZN16ActorRefillBombs8vfunc_b4Ev kind:function(arm,size=0x8) addr:0x213555c +_ZN19ActorRefillBombchusC1Ev kind:function(arm,size=0x34) addr:0x2135564 +_ZN19ActorRefillBombchusD1Ev kind:function(arm,size=0x14) addr:0x2135598 +_ZN19ActorRefillBombchusD0Ev kind:function(arm,size=0x1c) addr:0x21355ac +_ZN19ActorRefillBombchus8vfunc_b4Ev kind:function(arm,size=0x8) addr:0x21355c8 +_ZN17ActorRefillArrowsC1Ev kind:function(arm,size=0x34) addr:0x21355d0 +_ZN17ActorRefillArrowsD1Ev kind:function(arm,size=0x14) addr:0x2135604 +_ZN17ActorRefillArrowsD0Ev kind:function(arm,size=0x1c) addr:0x2135618 +_ZN17ActorRefillArrows8vfunc_b4Ev kind:function(arm,size=0x8) addr:0x2135634 +_ZN15ActorRefillTimeC1Ev kind:function(arm,size=0x34) addr:0x213563c +_ZN15ActorRefillTimeD1Ev kind:function(arm,size=0x14) addr:0x2135670 +_ZN15ActorRefillTimeD0Ev kind:function(arm,size=0x1c) addr:0x2135684 +_ZN15ActorRefillTime8vfunc_08Ev kind:function(arm,size=0x114) addr:0x21356a0 +_ZN15ActorRefillTime8vfunc_b4Ev kind:function(arm,size=0x8) addr:0x21357b4 +_ZN9ActorLSTMC1Ev kind:function(arm,size=0x34) addr:0x21357bc +_ZN9ActorLSTMD1Ev kind:function(arm,size=0x14) addr:0x21357f0 +_ZN9ActorLSTMD0Ev kind:function(arm,size=0x1c) addr:0x2135804 +_ZN9ActorLSTM8vfunc_08Ev kind:function(arm,size=0x118) addr:0x2135820 +_ZN9ActorLSTM8vfunc_b4Ev kind:function(arm,size=0x8) addr:0x2135938 func_ov014_02135940 kind:function(arm,size=0x34) addr:0x2135940 func_ov014_02135974 kind:function(arm,size=0xc4) addr:0x2135974 func_ov014_02135a38 kind:function(arm,size=0xc4) addr:0x2135a38 @@ -1672,7 +1672,7 @@ __sinit_ov014_02154b34 kind:function(arm,size=0x38) addr:0x2154b34 __sinit_ov014_02154b6c kind:function(arm,size=0x38) addr:0x2154b6c __sinit_ov014_02154ba4 kind:function(arm,size=0x38) addr:0x2154ba4 __sinit_ov014_02154bdc kind:function(arm,size=0x38) addr:0x2154bdc -__sinit_ov014_02154c14 kind:function(arm,size=0x110) addr:0x2154c14 +__sinit_ActorRefill.cpp kind:function(arm,size=0x110) addr:0x2154c14 __sinit_ov014_02154d24 kind:function(arm,size=0x1d8) addr:0x2154d24 __sinit_ov014_02154efc kind:function(arm,size=0x40) addr:0x2154efc __sinit_ov014_02154f3c kind:function(arm,size=0x40) addr:0x2154f3c @@ -1854,12 +1854,13 @@ data_ov014_021578c0 kind:data(any) addr:0x21578c0 data_ov014_021578c4 kind:data(any) addr:0x21578c4 data_ov014_021578c8 kind:data(any) addr:0x21578c8 data_ov014_021578cc kind:data(any) addr:0x21578cc -data_ov014_021578f8 kind:data(any) addr:0x21578f8 -data_ov014_021579b8 kind:data(any) addr:0x21579b8 -data_ov014_02157a78 kind:data(any) addr:0x2157a78 -data_ov014_02157b38 kind:data(any) addr:0x2157b38 -data_ov014_02157bf8 kind:data(any) addr:0x2157bf8 -data_ov014_02157cb8 kind:data(any) addr:0x2157cb8 +sShipTypes kind:data(any) addr:0x21578d0 local +_ZTV9ActorLSTM kind:data(any) addr:0x21578f8 +_ZTV15ActorRefillTime kind:data(any) addr:0x21579b8 +_ZTV17ActorRefillArrows kind:data(any) addr:0x2157a78 +_ZTV19ActorRefillBombchus kind:data(any) addr:0x2157b38 +_ZTV16ActorRefillBombs kind:data(any) addr:0x2157bf8 +_ZTV11ActorRefill kind:data(any) addr:0x2157cb8 data_ov014_02157d70 kind:data(any) addr:0x2157d70 data_ov014_02157d7c kind:data(any) addr:0x2157d7c data_ov014_02157d88 kind:data(any) addr:0x2157d88 @@ -2195,16 +2196,16 @@ data_ov014_0215af6c kind:bss addr:0x215af6c data_ov014_0215af74 kind:bss addr:0x215af74 data_ov014_0215af80 kind:bss addr:0x215af80 data_ov014_0215af88 kind:bss addr:0x215af88 -data_ov014_0215af94 kind:bss addr:0x215af94 -data_ov014_0215afa0 kind:bss addr:0x215afa0 -data_ov014_0215afb4 kind:bss addr:0x215afb4 -data_ov014_0215afc0 kind:bss addr:0x215afc0 -data_ov014_0215afd4 kind:bss addr:0x215afd4 -data_ov014_0215afe0 kind:bss addr:0x215afe0 -data_ov014_0215aff4 kind:bss addr:0x215aff4 -data_ov014_0215b000 kind:bss addr:0x215b000 -data_ov014_0215b014 kind:bss addr:0x215b014 -data_ov014_0215b020 kind:bss addr:0x215b020 +@363 kind:bss addr:0x215af94 +_ZN19ActorRefillBombchus5gTypeE kind:bss addr:0x215afa0 +@361 kind:bss addr:0x215afb4 +_ZN15ActorRefillTime5gTypeE kind:bss addr:0x215afc0 +@364 kind:bss addr:0x215afd4 +_ZN17ActorRefillArrows5gTypeE kind:bss addr:0x215afe0 +@360 kind:bss addr:0x215aff4 +_ZN16ActorRefillBombs5gTypeE kind:bss addr:0x215b000 +@362 kind:bss addr:0x215b014 +_ZN9ActorLSTM5gTypeE kind:bss addr:0x215b020 data_ov014_0215b034 kind:bss addr:0x215b034 data_ov014_0215b040 kind:bss addr:0x215b040 data_ov014_0215b054 kind:bss addr:0x215b054 diff --git a/config/usa/arm9/overlays/ov014/delinks.txt b/config/usa/arm9/overlays/ov014/delinks.txt index 2290a8e6..db538ee4 100644 --- a/config/usa/arm9/overlays/ov014/delinks.txt +++ b/config/usa/arm9/overlays/ov014/delinks.txt @@ -18,3 +18,4 @@ src/14_Land/Actor/Player/ActorRefill.cpp: .init start:0x02154b70 end:0x02154c80 .ctor start:0x02155848 end:0x0215584c .data start:0x02157810 end:0x02157cd0 + .bss start:0x0215aef4 end:0x0215af94 diff --git a/config/usa/arm9/overlays/ov014/symbols.txt b/config/usa/arm9/overlays/ov014/symbols.txt index 1fb08698..f669348b 100644 --- a/config/usa/arm9/overlays/ov014/symbols.txt +++ b/config/usa/arm9/overlays/ov014/symbols.txt @@ -586,42 +586,42 @@ func_ov014_02134c04 kind:function(arm,size=0x8) addr:0x2134b60 func_ov014_02134c0c kind:function(arm,size=0x8) addr:0x2134b68 func_ov014_02134c14 kind:function(arm,size=0x200) addr:0x2134b70 func_ov014_02134e14 kind:function(arm,size=0x10) addr:0x2134d70 -func_ov014_02134e24 kind:function(arm,size=0x30) addr:0x2134d80 -func_ov014_02134e54 kind:function(arm,size=0x30) addr:0x2134db0 -func_ov014_02134e84 kind:function(arm,size=0x30) addr:0x2134de0 -func_ov014_02134eb4 kind:function(arm,size=0x30) addr:0x2134e10 -func_ov014_02134ee4 kind:function(arm,size=0x30) addr:0x2134e40 -func_ov014_02134f14 kind:function(arm,size=0x40) addr:0x2134e70 -func_ov014_02134f54 kind:function(arm,size=0x14) addr:0x2134eb0 -func_ov014_02134f68 kind:function(arm,size=0x1c) addr:0x2134ec4 -func_ov014_02134f84 kind:function(arm,size=0x14) addr:0x2134ee0 -func_ov014_02134f98 kind:function(arm,size=0xf4) addr:0x2134ef4 -func_ov014_0213508c kind:function(arm,size=0x2d8) addr:0x2134fe8 -func_ov014_02135364 kind:function(arm,size=0x54) addr:0x21352c0 -func_ov014_021353b8 kind:function(arm,size=0xbc) addr:0x2135314 -func_ov014_02135474 kind:function(arm,size=0x84) addr:0x21353d0 -func_ov014_021354f8 kind:function(arm,size=0x34) addr:0x2135454 -func_ov014_0213552c kind:function(arm,size=0x14) addr:0x2135488 -func_ov014_02135540 kind:function(arm,size=0x1c) addr:0x213549c -func_ov014_0213555c kind:function(arm,size=0x8) addr:0x21354b8 -func_ov014_02135564 kind:function(arm,size=0x34) addr:0x21354c0 -func_ov014_02135598 kind:function(arm,size=0x14) addr:0x21354f4 -func_ov014_021355ac kind:function(arm,size=0x1c) addr:0x2135508 -func_ov014_021355c8 kind:function(arm,size=0x8) addr:0x2135524 -func_ov014_021355d0 kind:function(arm,size=0x34) addr:0x213552c -func_ov014_02135604 kind:function(arm,size=0x14) addr:0x2135560 -func_ov014_02135618 kind:function(arm,size=0x1c) addr:0x2135574 -func_ov014_02135634 kind:function(arm,size=0x8) addr:0x2135590 -func_ov014_0213563c kind:function(arm,size=0x34) addr:0x2135598 -func_ov014_02135670 kind:function(arm,size=0x14) addr:0x21355cc -func_ov014_02135684 kind:function(arm,size=0x1c) addr:0x21355e0 -func_ov014_021356a0 kind:function(arm,size=0x114) addr:0x21355fc -func_ov014_021357b4 kind:function(arm,size=0x8) addr:0x2135710 -func_ov014_021357bc kind:function(arm,size=0x34) addr:0x2135718 -func_ov014_021357f0 kind:function(arm,size=0x14) addr:0x213574c -func_ov014_02135804 kind:function(arm,size=0x1c) addr:0x2135760 -func_ov014_02135820 kind:function(arm,size=0x118) addr:0x213577c -func_ov014_02135938 kind:function(arm,size=0x8) addr:0x2135894 +_ZN16ActorRefillBombs6CreateEv kind:function(arm,size=0x30) addr:0x2134d80 +_ZN19ActorRefillBombchus6CreateEv kind:function(arm,size=0x30) addr:0x2134db0 +_ZN17ActorRefillArrows6CreateEv kind:function(arm,size=0x30) addr:0x2134de0 +_ZN15ActorRefillTime6CreateEv kind:function(arm,size=0x30) addr:0x2134e10 +_ZN9ActorLSTM6CreateEv kind:function(arm,size=0x30) addr:0x2134e40 +_ZN11ActorRefillC2Ev kind:function(arm,size=0x40) addr:0x2134e70 +_ZN11ActorRefillD1Ev kind:function(arm,size=0x14) addr:0x2134eb0 +_ZN11ActorRefillD0Ev kind:function(arm,size=0x1c) addr:0x2134ec4 +_ZN11ActorRefillD2Ev kind:function(arm,size=0x14) addr:0x2134ee0 +_ZN11ActorRefill8vfunc_08Ev kind:function(arm,size=0xf4) addr:0x2134ef4 +_ZN11ActorRefill8vfunc_14Ej kind:function(arm,size=0x2d8) addr:0x2134fe8 +_ZN11ActorRefill19func_ov014_02135364Ei kind:function(arm,size=0x54) addr:0x21352c0 +_ZN11ActorRefill8vfunc_20Eb kind:function(arm,size=0xbc) addr:0x2135314 +_ZN11ActorRefill19func_ov014_02135474Ev kind:function(arm,size=0x84) addr:0x21353d0 +_ZN16ActorRefillBombsC1Ev kind:function(arm,size=0x34) addr:0x2135454 +_ZN16ActorRefillBombsD1Ev kind:function(arm,size=0x14) addr:0x2135488 +_ZN16ActorRefillBombsD0Ev kind:function(arm,size=0x1c) addr:0x213549c +_ZN16ActorRefillBombs8vfunc_b4Ev kind:function(arm,size=0x8) addr:0x21354b8 +_ZN19ActorRefillBombchusC1Ev kind:function(arm,size=0x34) addr:0x21354c0 +_ZN19ActorRefillBombchusD1Ev kind:function(arm,size=0x14) addr:0x21354f4 +_ZN19ActorRefillBombchusD0Ev kind:function(arm,size=0x1c) addr:0x2135508 +_ZN19ActorRefillBombchus8vfunc_b4Ev kind:function(arm,size=0x8) addr:0x2135524 +_ZN17ActorRefillArrowsC1Ev kind:function(arm,size=0x34) addr:0x213552c +_ZN17ActorRefillArrowsD1Ev kind:function(arm,size=0x14) addr:0x2135560 +_ZN17ActorRefillArrowsD0Ev kind:function(arm,size=0x1c) addr:0x2135574 +_ZN17ActorRefillArrows8vfunc_b4Ev kind:function(arm,size=0x8) addr:0x2135590 +_ZN15ActorRefillTimeC1Ev kind:function(arm,size=0x34) addr:0x2135598 +_ZN15ActorRefillTimeD1Ev kind:function(arm,size=0x14) addr:0x21355cc +_ZN15ActorRefillTimeD0Ev kind:function(arm,size=0x1c) addr:0x21355e0 +_ZN15ActorRefillTime8vfunc_08Ev kind:function(arm,size=0x114) addr:0x21355fc +_ZN15ActorRefillTime8vfunc_b4Ev kind:function(arm,size=0x8) addr:0x2135710 +_ZN9ActorLSTMC1Ev kind:function(arm,size=0x34) addr:0x2135718 +_ZN9ActorLSTMD1Ev kind:function(arm,size=0x14) addr:0x213574c +_ZN9ActorLSTMD0Ev kind:function(arm,size=0x1c) addr:0x2135760 +_ZN9ActorLSTM8vfunc_08Ev kind:function(arm,size=0x118) addr:0x213577c +_ZN9ActorLSTM8vfunc_b4Ev kind:function(arm,size=0x8) addr:0x2135894 func_ov014_02135940 kind:function(arm,size=0x34) addr:0x213589c func_ov014_02135974 kind:function(arm,size=0xc4) addr:0x21358d0 func_ov014_02135a38 kind:function(arm,size=0xc4) addr:0x2135994 @@ -1672,7 +1672,7 @@ __sinit_ov014_02154b34 kind:function(arm,size=0x38) addr:0x2154a90 __sinit_ov014_02154b6c kind:function(arm,size=0x38) addr:0x2154ac8 __sinit_ov014_02154ba4 kind:function(arm,size=0x38) addr:0x2154b00 __sinit_ov014_02154bdc kind:function(arm,size=0x38) addr:0x2154b38 -__sinit_ov014_02154c14 kind:function(arm,size=0x110) addr:0x2154b70 +__sinit_ActorRefill.cpp kind:function(arm,size=0x110) addr:0x2154b70 __sinit_ov014_02154d24 kind:function(arm,size=0x1d8) addr:0x2154c80 __sinit_ov014_02154efc kind:function(arm,size=0x40) addr:0x2154e58 __sinit_ov014_02154f3c kind:function(arm,size=0x40) addr:0x2154e98 @@ -1854,12 +1854,13 @@ data_ov014_021578c0 kind:data(any) addr:0x2157820 data_ov014_021578c4 kind:data(any) addr:0x2157824 data_ov014_021578c8 kind:data(any) addr:0x2157828 data_ov014_021578cc kind:data(any) addr:0x215782c -data_ov014_021578f8 kind:data(any) addr:0x2157858 -data_ov014_021579b8 kind:data(any) addr:0x2157918 -data_ov014_02157a78 kind:data(any) addr:0x21579d8 -data_ov014_02157b38 kind:data(any) addr:0x2157a98 -data_ov014_02157bf8 kind:data(any) addr:0x2157b58 -data_ov014_02157cb8 kind:data(any) addr:0x2157c18 +sShipTypes kind:data(any) addr:0x2157830 local +_ZTV9ActorLSTM kind:data(any) addr:0x2157858 +_ZTV15ActorRefillTime kind:data(any) addr:0x2157918 +_ZTV17ActorRefillArrows kind:data(any) addr:0x21579d8 +_ZTV19ActorRefillBombchus kind:data(any) addr:0x2157a98 +_ZTV16ActorRefillBombs kind:data(any) addr:0x2157b58 +_ZTV11ActorRefill kind:data(any) addr:0x2157c18 data_ov014_02157d70 kind:data(any) addr:0x2157cd0 data_ov014_02157d7c kind:data(any) addr:0x2157cdc data_ov014_02157d88 kind:data(any) addr:0x2157ce8 @@ -2195,16 +2196,16 @@ data_ov014_0215af6c kind:bss addr:0x215aecc data_ov014_0215af74 kind:bss addr:0x215aed4 data_ov014_0215af80 kind:bss addr:0x215aee0 data_ov014_0215af88 kind:bss addr:0x215aee8 -data_ov014_0215af94 kind:bss addr:0x215aef4 -data_ov014_0215afa0 kind:bss addr:0x215af00 -data_ov014_0215afb4 kind:bss addr:0x215af14 -data_ov014_0215afc0 kind:bss addr:0x215af20 -data_ov014_0215afd4 kind:bss addr:0x215af34 -data_ov014_0215afe0 kind:bss addr:0x215af40 -data_ov014_0215aff4 kind:bss addr:0x215af54 -data_ov014_0215b000 kind:bss addr:0x215af60 -data_ov014_0215b014 kind:bss addr:0x215af74 -data_ov014_0215b020 kind:bss addr:0x215af80 +@363 kind:bss addr:0x215aef4 +_ZN19ActorRefillBombchus5gTypeE kind:bss addr:0x215af00 +@361 kind:bss addr:0x215af14 +_ZN15ActorRefillTime5gTypeE kind:bss addr:0x215af20 +@364 kind:bss addr:0x215af34 +_ZN17ActorRefillArrows5gTypeE kind:bss addr:0x215af40 +@360 kind:bss addr:0x215af54 +_ZN16ActorRefillBombs5gTypeE kind:bss addr:0x215af60 +@362 kind:bss addr:0x215af74 +_ZN9ActorLSTM5gTypeE kind:bss addr:0x215af80 data_ov014_0215b034 kind:bss addr:0x215af94 data_ov014_0215b040 kind:bss addr:0x215afa0 data_ov014_0215b054 kind:bss addr:0x215afb4 diff --git a/include/Actor/Player/ActorRefill.hpp b/include/Actor/Player/ActorRefill.hpp index 47e7d9fc..044a2c03 100644 --- a/include/Actor/Player/ActorRefill.hpp +++ b/include/Actor/Player/ActorRefill.hpp @@ -4,6 +4,7 @@ #include "types.h" #include "Actor/Actor.hpp" +#include "Actor/ActorType.hpp" class ActorRefill : public Actor { public: @@ -31,6 +32,8 @@ public: class ActorRefillBombs : public ActorRefill { public: + static ActorType gType; + /* 000 (base) */ /* 168 */ @@ -45,6 +48,8 @@ public: class ActorRefillBombchus : public ActorRefill { public: + static ActorType gType; + /* 000 (base) */ /* 168 */ @@ -59,6 +64,8 @@ public: class ActorRefillArrows : public ActorRefill { public: + static ActorType gType; + /* 000 (base) */ /* 168 */ @@ -73,6 +80,8 @@ public: class ActorRefillTime : public ActorRefill { public: + static ActorType gType; + /* 000 (base) */ /* 168 */ @@ -88,6 +97,8 @@ public: class ActorLSTM : public ActorRefill { public: + static ActorType gType; + /* 000 (base) */ /* 168 */ diff --git a/src/14_Land/Actor/Player/ActorRefill.cpp b/src/14_Land/Actor/Player/ActorRefill.cpp index 841c4910..bd8981a4 100644 --- a/src/14_Land/Actor/Player/ActorRefill.cpp +++ b/src/14_Land/Actor/Player/ActorRefill.cpp @@ -1,5 +1,11 @@ #include "Actor/Player/ActorRefill.hpp" +ActorType ActorRefillBombs::gType; +ActorType ActorRefillBombchus::gType; +ActorType ActorRefillArrows::gType; +ActorType ActorRefillTime::gType; +ActorType ActorLSTM::gType; + ActorRefillBombs *ActorRefillBombs::Create() {} ActorRefillBombchus *ActorRefillBombchus::Create() {} ActorRefillArrows *ActorRefillArrows::Create() {} From 0b6e5d042b88229a88e48d954eb0084c6f039369 Mon Sep 17 00:00:00 2001 From: Aetias Date: Tue, 27 May 2025 22:00:27 +0200 Subject: [PATCH 4/5] Decomp `ActorRefill` 94% --- config/eur/arm9/overlays/ov000/symbols.txt | 2 +- config/eur/arm9/overlays/ov014/relocs.txt | 12 +- config/eur/arm9/overlays/ov014/symbols.txt | 14 +- config/usa/arm9/overlays/ov000/symbols.txt | 2 +- config/usa/arm9/overlays/ov014/relocs.txt | 12 +- config/usa/arm9/overlays/ov014/symbols.txt | 14 +- include/Actor/Actor.hpp | 10 +- include/Actor/ActorType.hpp | 9 +- include/Actor/Player/ActorRefill.hpp | 16 +- include/Item/ItemManager.hpp | 2 +- src/00_Core/Item/ItemManager.cpp | 2 +- src/14_Land/Actor/Player/ActorRefill.cpp | 385 +++++++++++++++++++-- 12 files changed, 402 insertions(+), 78 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 4758d647..7ada7f31 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -2119,7 +2119,7 @@ _ZN11ItemManager17EquipCollidesWithEP8Cylinderi kind:function(arm,size=0x80) add _ZN11ItemManager18EquipItem_vfunc_2cEi kind:function(arm,size=0x1c) addr:0x20ad6f8 _ZN11ItemManager12GetEquipItemEi kind:function(arm,size=0x18) addr:0x20ad714 _ZNK11ItemManager7GetAmmoEi kind:function(arm,size=0x10) addr:0x20ad72c -_ZN11ItemManager8GiveAmmoEit kind:function(arm,size=0x54) addr:0x20ad73c +_ZN11ItemManager8GiveAmmoEij kind:function(arm,size=0x54) addr:0x20ad73c _ZN11ItemManager18func_ov00_020ad790Ei kind:function(arm,size=0x150) addr:0x20ad790 _ZNK11ItemManager19GetEquippedShipPartEj kind:function(thumb,size=0x8) addr:0x20ad8e0 _ZN11ItemManager13EquipShipPartEjj kind:function(thumb,size=0x8) addr:0x20ad8e8 diff --git a/config/eur/arm9/overlays/ov014/relocs.txt b/config/eur/arm9/overlays/ov014/relocs.txt index 422bdbad..32eaed4d 100644 --- a/config/eur/arm9/overlays/ov014/relocs.txt +++ b/config/eur/arm9/overlays/ov014/relocs.txt @@ -2474,7 +2474,7 @@ from:0x02134efc kind:arm_call to:0x0202e9dc module:main from:0x02134f08 kind:arm_call to:0x021357bc module:overlay(14) from:0x02134f10 kind:load to:0x027e0fe0 module:dtcm from:0x02134f20 kind:arm_call to:0x020c1554 module:overlay(0) -from:0x02134f50 kind:load to:0x02157cb8 module:overlay(14) +from:0x02134f50 kind:load to:0x02157cb0 add:8 module:overlay(14) from:0x02134f5c kind:arm_call to:0x020c1730 module:overlay(0) from:0x02134f70 kind:arm_call to:0x020c1730 module:overlay(0) from:0x02134f78 kind:arm_call to:0x0202ea0c module:main @@ -2527,29 +2527,29 @@ from:0x021354b4 kind:arm_call to:0x0207c1b0 module:overlay(0) from:0x021354d8 kind:arm_call to:0x0207c1b0 module:overlay(0) from:0x021354ec kind:load to:0x027e0e58 module:dtcm from:0x02135504 kind:arm_call to:0x02134f14 module:overlay(14) -from:0x02135528 kind:load to:0x02157bf8 module:overlay(14) +from:0x02135528 kind:load to:0x02157bf0 add:8 module:overlay(14) from:0x02135534 kind:arm_call to:0x02134f84 module:overlay(14) from:0x02135548 kind:arm_call to:0x02134f84 module:overlay(14) from:0x02135550 kind:arm_call to:0x0202ea0c module:main from:0x02135570 kind:arm_call to:0x02134f14 module:overlay(14) -from:0x02135594 kind:load to:0x02157b38 module:overlay(14) +from:0x02135594 kind:load to:0x02157b30 add:8 module:overlay(14) from:0x021355a0 kind:arm_call to:0x02134f84 module:overlay(14) from:0x021355b4 kind:arm_call to:0x02134f84 module:overlay(14) from:0x021355bc kind:arm_call to:0x0202ea0c module:main from:0x021355dc kind:arm_call to:0x02134f14 module:overlay(14) -from:0x02135600 kind:load to:0x02157a78 module:overlay(14) +from:0x02135600 kind:load to:0x02157a70 add:8 module:overlay(14) from:0x0213560c kind:arm_call to:0x02134f84 module:overlay(14) from:0x02135620 kind:arm_call to:0x02134f84 module:overlay(14) from:0x02135628 kind:arm_call to:0x0202ea0c module:main from:0x02135648 kind:arm_call to:0x02134f14 module:overlay(14) -from:0x0213566c kind:load to:0x021579b8 module:overlay(14) +from:0x0213566c kind:load to:0x021579b0 add:8 module:overlay(14) from:0x02135678 kind:arm_call to:0x02134f84 module:overlay(14) from:0x0213568c kind:arm_call to:0x02134f84 module:overlay(14) from:0x02135694 kind:arm_call to:0x0202ea0c module:main from:0x021356a8 kind:arm_call to:0x02134f98 module:overlay(14) from:0x021357b0 kind:load to:0x027e0764 module:dtcm from:0x021357c8 kind:arm_call to:0x02134f14 module:overlay(14) -from:0x021357ec kind:load to:0x021578f8 module:overlay(14) +from:0x021357ec kind:load to:0x021578f0 add:8 module:overlay(14) from:0x021357f8 kind:arm_call to:0x02134f84 module:overlay(14) from:0x0213580c kind:arm_call to:0x02134f84 module:overlay(14) from:0x02135814 kind:arm_call to:0x0202ea0c module:main diff --git a/config/eur/arm9/overlays/ov014/symbols.txt b/config/eur/arm9/overlays/ov014/symbols.txt index c4185ad6..845eaccd 100644 --- a/config/eur/arm9/overlays/ov014/symbols.txt +++ b/config/eur/arm9/overlays/ov014/symbols.txt @@ -591,7 +591,7 @@ _ZN19ActorRefillBombchus6CreateEv kind:function(arm,size=0x30) addr:0x2134e54 _ZN17ActorRefillArrows6CreateEv kind:function(arm,size=0x30) addr:0x2134e84 _ZN15ActorRefillTime6CreateEv kind:function(arm,size=0x30) addr:0x2134eb4 _ZN9ActorLSTM6CreateEv kind:function(arm,size=0x30) addr:0x2134ee4 -_ZN11ActorRefillC2Ev kind:function(arm,size=0x40) addr:0x2134f14 +_ZN11ActorRefillC2Ei kind:function(arm,size=0x40) addr:0x2134f14 _ZN11ActorRefillD1Ev kind:function(arm,size=0x14) addr:0x2134f54 _ZN11ActorRefillD0Ev kind:function(arm,size=0x1c) addr:0x2134f68 _ZN11ActorRefillD2Ev kind:function(arm,size=0x14) addr:0x2134f84 @@ -1855,12 +1855,12 @@ data_ov014_021578c4 kind:data(any) addr:0x21578c4 data_ov014_021578c8 kind:data(any) addr:0x21578c8 data_ov014_021578cc kind:data(any) addr:0x21578cc sShipTypes kind:data(any) addr:0x21578d0 local -_ZTV9ActorLSTM kind:data(any) addr:0x21578f8 -_ZTV15ActorRefillTime kind:data(any) addr:0x21579b8 -_ZTV17ActorRefillArrows kind:data(any) addr:0x2157a78 -_ZTV19ActorRefillBombchus kind:data(any) addr:0x2157b38 -_ZTV16ActorRefillBombs kind:data(any) addr:0x2157bf8 -_ZTV11ActorRefill kind:data(any) addr:0x2157cb8 +_ZTV9ActorLSTM kind:data(any) addr:0x21578f0 +_ZTV15ActorRefillTime kind:data(any) addr:0x21579b0 +_ZTV17ActorRefillArrows kind:data(any) addr:0x2157a70 +_ZTV19ActorRefillBombchus kind:data(any) addr:0x2157b30 +_ZTV16ActorRefillBombs kind:data(any) addr:0x2157bf0 +_ZTV11ActorRefill kind:data(any) addr:0x2157cb0 data_ov014_02157d70 kind:data(any) addr:0x2157d70 data_ov014_02157d7c kind:data(any) addr:0x2157d7c data_ov014_02157d88 kind:data(any) addr:0x2157d88 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index a656d213..2247bd65 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -2119,7 +2119,7 @@ _ZN11ItemManager17EquipCollidesWithEP8Cylinderi kind:function(arm,size=0x80) add _ZN11ItemManager18EquipItem_vfunc_2cEi kind:function(arm,size=0x1c) addr:0x20ad698 _ZN11ItemManager12GetEquipItemEi kind:function(arm,size=0x18) addr:0x20ad6b4 _ZNK11ItemManager7GetAmmoEi kind:function(arm,size=0x10) addr:0x20ad6cc -_ZN11ItemManager8GiveAmmoEit kind:function(arm,size=0x54) addr:0x20ad6dc +_ZN11ItemManager8GiveAmmoEij kind:function(arm,size=0x54) addr:0x20ad6dc _ZN11ItemManager18func_ov00_020ad790Ei kind:function(arm,size=0x150) addr:0x20ad730 _ZNK11ItemManager19GetEquippedShipPartEj kind:function(thumb,size=0x8) addr:0x20ad880 _ZN11ItemManager13EquipShipPartEjj kind:function(thumb,size=0x8) addr:0x20ad888 diff --git a/config/usa/arm9/overlays/ov014/relocs.txt b/config/usa/arm9/overlays/ov014/relocs.txt index 180807df..46843a25 100644 --- a/config/usa/arm9/overlays/ov014/relocs.txt +++ b/config/usa/arm9/overlays/ov014/relocs.txt @@ -2474,7 +2474,7 @@ from:0x02134e58 kind:arm_call to:0x0202e9d8 module:main from:0x02134e64 kind:arm_call to:0x02135718 module:overlay(14) from:0x02134e6c kind:load to:0x027e0fe0 module:dtcm from:0x02134e7c kind:arm_call to:0x020c14f4 module:overlay(0) -from:0x02134eac kind:load to:0x02157c18 module:overlay(14) +from:0x02134eac kind:load to:0x02157c10 add:8 module:overlay(14) from:0x02134eb8 kind:arm_call to:0x020c16d0 module:overlay(0) from:0x02134ecc kind:arm_call to:0x020c16d0 module:overlay(0) from:0x02134ed4 kind:arm_call to:0x0202ea08 module:main @@ -2527,29 +2527,29 @@ from:0x02135410 kind:arm_call to:0x0207c150 module:overlay(0) from:0x02135434 kind:arm_call to:0x0207c150 module:overlay(0) from:0x02135448 kind:load to:0x027e0e58 module:dtcm from:0x02135460 kind:arm_call to:0x02134e70 module:overlay(14) -from:0x02135484 kind:load to:0x02157b58 module:overlay(14) +from:0x02135484 kind:load to:0x02157b50 add:8 module:overlay(14) from:0x02135490 kind:arm_call to:0x02134ee0 module:overlay(14) from:0x021354a4 kind:arm_call to:0x02134ee0 module:overlay(14) from:0x021354ac kind:arm_call to:0x0202ea08 module:main from:0x021354cc kind:arm_call to:0x02134e70 module:overlay(14) -from:0x021354f0 kind:load to:0x02157a98 module:overlay(14) +from:0x021354f0 kind:load to:0x02157a90 add:8 module:overlay(14) from:0x021354fc kind:arm_call to:0x02134ee0 module:overlay(14) from:0x02135510 kind:arm_call to:0x02134ee0 module:overlay(14) from:0x02135518 kind:arm_call to:0x0202ea08 module:main from:0x02135538 kind:arm_call to:0x02134e70 module:overlay(14) -from:0x0213555c kind:load to:0x021579d8 module:overlay(14) +from:0x0213555c kind:load to:0x021579d0 add:8 module:overlay(14) from:0x02135568 kind:arm_call to:0x02134ee0 module:overlay(14) from:0x0213557c kind:arm_call to:0x02134ee0 module:overlay(14) from:0x02135584 kind:arm_call to:0x0202ea08 module:main from:0x021355a4 kind:arm_call to:0x02134e70 module:overlay(14) -from:0x021355c8 kind:load to:0x02157918 module:overlay(14) +from:0x021355c8 kind:load to:0x02157910 add:8 module:overlay(14) from:0x021355d4 kind:arm_call to:0x02134ee0 module:overlay(14) from:0x021355e8 kind:arm_call to:0x02134ee0 module:overlay(14) from:0x021355f0 kind:arm_call to:0x0202ea08 module:main from:0x02135604 kind:arm_call to:0x02134ef4 module:overlay(14) from:0x0213570c kind:load to:0x027e0764 module:dtcm from:0x02135724 kind:arm_call to:0x02134e70 module:overlay(14) -from:0x02135748 kind:load to:0x02157858 module:overlay(14) +from:0x02135748 kind:load to:0x02157850 add:8 module:overlay(14) from:0x02135754 kind:arm_call to:0x02134ee0 module:overlay(14) from:0x02135768 kind:arm_call to:0x02134ee0 module:overlay(14) from:0x02135770 kind:arm_call to:0x0202ea08 module:main diff --git a/config/usa/arm9/overlays/ov014/symbols.txt b/config/usa/arm9/overlays/ov014/symbols.txt index f669348b..139f3157 100644 --- a/config/usa/arm9/overlays/ov014/symbols.txt +++ b/config/usa/arm9/overlays/ov014/symbols.txt @@ -591,7 +591,7 @@ _ZN19ActorRefillBombchus6CreateEv kind:function(arm,size=0x30) addr:0x2134db0 _ZN17ActorRefillArrows6CreateEv kind:function(arm,size=0x30) addr:0x2134de0 _ZN15ActorRefillTime6CreateEv kind:function(arm,size=0x30) addr:0x2134e10 _ZN9ActorLSTM6CreateEv kind:function(arm,size=0x30) addr:0x2134e40 -_ZN11ActorRefillC2Ev kind:function(arm,size=0x40) addr:0x2134e70 +_ZN11ActorRefillC2Ei kind:function(arm,size=0x40) addr:0x2134e70 _ZN11ActorRefillD1Ev kind:function(arm,size=0x14) addr:0x2134eb0 _ZN11ActorRefillD0Ev kind:function(arm,size=0x1c) addr:0x2134ec4 _ZN11ActorRefillD2Ev kind:function(arm,size=0x14) addr:0x2134ee0 @@ -1855,12 +1855,12 @@ data_ov014_021578c4 kind:data(any) addr:0x2157824 data_ov014_021578c8 kind:data(any) addr:0x2157828 data_ov014_021578cc kind:data(any) addr:0x215782c sShipTypes kind:data(any) addr:0x2157830 local -_ZTV9ActorLSTM kind:data(any) addr:0x2157858 -_ZTV15ActorRefillTime kind:data(any) addr:0x2157918 -_ZTV17ActorRefillArrows kind:data(any) addr:0x21579d8 -_ZTV19ActorRefillBombchus kind:data(any) addr:0x2157a98 -_ZTV16ActorRefillBombs kind:data(any) addr:0x2157b58 -_ZTV11ActorRefill kind:data(any) addr:0x2157c18 +_ZTV9ActorLSTM kind:data(any) addr:0x2157850 +_ZTV15ActorRefillTime kind:data(any) addr:0x2157910 +_ZTV17ActorRefillArrows kind:data(any) addr:0x21579d0 +_ZTV19ActorRefillBombchus kind:data(any) addr:0x2157a90 +_ZTV16ActorRefillBombs kind:data(any) addr:0x2157b50 +_ZTV11ActorRefill kind:data(any) addr:0x2157c10 data_ov014_02157d70 kind:data(any) addr:0x2157cd0 data_ov014_02157d7c kind:data(any) addr:0x2157cdc data_ov014_02157d88 kind:data(any) addr:0x2157ce8 diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp index c22f086e..f82d34ab 100644 --- a/include/Actor/Actor.hpp +++ b/include/Actor/Actor.hpp @@ -64,6 +64,7 @@ struct Actor_UnkStruct_0a4 { /* 14 */ Actor_UnkStruct_0a4(q20 x, q20 y, q20 z, s32 unk_10); + void func_ov000_0207a1c8(unk32 param1, Vec3p *param2); }; class KillPickupsFilter : FilterActorReturn, public FilterActorBase { @@ -83,7 +84,8 @@ enum PlayerCollide_ { PlayerCollide_Gongoron = 0x8, PlayerCollide_Hammer = 0x10, - PlayerCollide_PickupFlags = PlayerCollide_Hammer | PlayerCollide_Gongoron | PlayerCollide_Sword | PlayerCollide_Player, + /* 0x1b */ PlayerCollide_PickupFlags = + PlayerCollide_Hammer | PlayerCollide_Gongoron | PlayerCollide_Sword | PlayerCollide_Player, }; struct Knockback { @@ -136,10 +138,10 @@ public: /* 108 */ unk8 mUnk_108; /* 109 */ unk8 mUnk_109; /* 10a */ unk8 mUnk_10a[0x6]; - /* 110 */ unk8 mUnk_110; + /* 110 */ bool mUnk_110; /* 111 */ bool mUnk_111; - /* 112 */ unk8 mUnk_112; - /* 113 */ unk8 mUnk_113; + /* 112 */ bool mUnk_112; + /* 113 */ bool mUnk_113; /* 114 */ unk8 mUnk_114; /* 115 */ unk8 mUnk_115; /* 116 */ unk8 mUnk_116; diff --git a/include/Actor/ActorType.hpp b/include/Actor/ActorType.hpp index f71c533b..1d7d5723 100644 --- a/include/Actor/ActorType.hpp +++ b/include/Actor/ActorType.hpp @@ -25,8 +25,13 @@ enum ActorTypeId_ { ActorTypeId_ShopItemShield = 'ITSL', ActorTypeId_ShopItemSoldOut = 'ITSO', - ActorTypeId_Heart = 'HART', - ActorTypeId_Rupee = 'RUPY', + ActorTypeId_RefillArrows = 'FLAL', + ActorTypeId_RefillBombs = 'FLBM', + ActorTypeId_RefillBombchus = 'FLBT', + ActorTypeId_RefillTime = 'FLTM', + ActorTypeId_Heart = 'HART', + ActorTypeId_LSTM = 'LSTM', + ActorTypeId_Rupee = 'RUPY', ActorTypeId_Arrow = 'ARRW', ActorTypeId_Blast = 'BLST', diff --git a/include/Actor/Player/ActorRefill.hpp b/include/Actor/Player/ActorRefill.hpp index 044a2c03..bdd334ff 100644 --- a/include/Actor/Player/ActorRefill.hpp +++ b/include/Actor/Player/ActorRefill.hpp @@ -12,18 +12,18 @@ public: /* 158 */ unk32 mUnk_158; /* 15c */ unk32 mUnk_15c; /* 160 */ unk32 mUnk_160; - /* 164 */ unk8 mUnk_164; + /* 164 */ u8 mUnk_164; /* 165 */ unk8 mUnk_165[0x3]; /* 168 */ public: - ActorRefill(); + ActorRefill(unk32 param1); /* 00 */ virtual ~ActorRefill() override; /* 08 */ virtual bool vfunc_08() override; /* 14 */ virtual void vfunc_14(u32 param1) override; /* 20 */ virtual void vfunc_20(bool param1) override; - /* b4 */ virtual unk32 vfunc_b4() = 0; + /* b4 */ virtual ItemFlag vfunc_b4() = 0; /* b8 */ bool func_ov014_02135364(unk32 param1); @@ -42,7 +42,7 @@ public: static ActorRefillBombs *Create(); /* 00 */ virtual ~ActorRefillBombs() override; - /* b4 */ virtual unk32 vfunc_b4() override; + /* b4 */ virtual ItemFlag vfunc_b4() override; /* b8 */ }; @@ -58,7 +58,7 @@ public: static ActorRefillBombchus *Create(); /* 00 */ virtual ~ActorRefillBombchus() override; - /* b4 */ virtual unk32 vfunc_b4() override; + /* b4 */ virtual ItemFlag vfunc_b4() override; /* b8 */ }; @@ -74,7 +74,7 @@ public: static ActorRefillArrows *Create(); /* 00 */ virtual ~ActorRefillArrows() override; - /* b4 */ virtual unk32 vfunc_b4() override; + /* b4 */ virtual ItemFlag vfunc_b4() override; /* b8 */ }; @@ -91,7 +91,7 @@ public: /* 00 */ virtual ~ActorRefillTime() override; /* 08 */ virtual bool vfunc_08() override; - /* b4 */ virtual unk32 vfunc_b4() override; + /* b4 */ virtual ItemFlag vfunc_b4() override; /* b8 */ }; @@ -108,6 +108,6 @@ public: /* 00 */ virtual ~ActorLSTM() override; /* 08 */ virtual bool vfunc_08() override; - /* b4 */ virtual unk32 vfunc_b4() override; + /* b4 */ virtual ItemFlag vfunc_b4() override; /* b8 */ }; diff --git a/include/Item/ItemManager.hpp b/include/Item/ItemManager.hpp index 37f22457..34d5a636 100644 --- a/include/Item/ItemManager.hpp +++ b/include/Item/ItemManager.hpp @@ -134,7 +134,7 @@ public: // Ammo u16 GetAmmo(ItemFlag equipId) const; - void GiveAmmo(ItemFlag equipId, u16 amount); + void GiveAmmo(ItemFlag equipId, u32 amount); u16 GetMaxAmmo(ItemFlag equipId) const; void UpgradeQuiver(); void UpgradeBombBag(); diff --git a/src/00_Core/Item/ItemManager.cpp b/src/00_Core/Item/ItemManager.cpp index d85fc6ab..4b2e7b44 100644 --- a/src/00_Core/Item/ItemManager.cpp +++ b/src/00_Core/Item/ItemManager.cpp @@ -231,7 +231,7 @@ ARM u16 ItemManager::GetAmmo(ItemFlag equipId) const { return (*mAmmo)[equipId]; } -ARM void ItemManager::GiveAmmo(ItemFlag equipId, u16 amount) { +ARM void ItemManager::GiveAmmo(ItemFlag equipId, u32 amount) { (*mAmmo)[equipId] += amount; if ((*mAmmo)[equipId] <= this->GetMaxAmmo(equipId)) return; (*mAmmo)[equipId] = this->GetMaxAmmo(equipId); diff --git a/src/14_Land/Actor/Player/ActorRefill.cpp b/src/14_Land/Actor/Player/ActorRefill.cpp index bd8981a4..83ef57fd 100644 --- a/src/14_Land/Actor/Player/ActorRefill.cpp +++ b/src/14_Land/Actor/Player/ActorRefill.cpp @@ -1,37 +1,354 @@ #include "Actor/Player/ActorRefill.hpp" +#include "DTCM/UnkStruct_027e0d38.hpp" +#include "DTCM/UnkStruct_027e103c.hpp" +#include "Item/ItemManager.hpp" +#include "System/Random.hpp" -ActorType ActorRefillBombs::gType; -ActorType ActorRefillBombchus::gType; -ActorType ActorRefillArrows::gType; -ActorType ActorRefillTime::gType; -ActorType ActorLSTM::gType; +static char *sShipTypes[8] = {"anc", "bow", "hul", "can", "dco", "pdl", "fnl", "brg"}; -ActorRefillBombs *ActorRefillBombs::Create() {} -ActorRefillBombchus *ActorRefillBombchus::Create() {} -ActorRefillArrows *ActorRefillArrows::Create() {} -ActorRefillTime *ActorRefillTime::Create() {} -ActorLSTM *ActorLSTM::Create() {} -ActorRefill::ActorRefill() {} -ActorRefill::~ActorRefill() {} -bool ActorRefill::vfunc_08() {} -void ActorRefill::vfunc_14(u32 param1) {} -bool ActorRefill::func_ov014_02135364(unk32 param1) {} -void ActorRefill::vfunc_20(bool param1) {} -void ActorRefill::func_ov014_02135474() {} -ActorRefillBombs::ActorRefillBombs() {} -ActorRefillBombs::~ActorRefillBombs() {} -unk32 ActorRefillBombs::vfunc_b4() {} -ActorRefillBombchus::ActorRefillBombchus() {} -ActorRefillBombchus::~ActorRefillBombchus() {} -unk32 ActorRefillBombchus::vfunc_b4() {} -ActorRefillArrows::ActorRefillArrows() {} -ActorRefillArrows::~ActorRefillArrows() {} -unk32 ActorRefillArrows::vfunc_b4() {} -ActorRefillTime::ActorRefillTime() {} -ActorRefillTime::~ActorRefillTime() {} -bool ActorRefillTime::vfunc_08() {} -unk32 ActorRefillTime::vfunc_b4() {} -ActorLSTM::ActorLSTM() {} -ActorLSTM::~ActorLSTM() {} -bool ActorLSTM::vfunc_08() {} -unk32 ActorLSTM::vfunc_b4() {} +extern u32 **data_027e0fe0[]; +ARM ActorRefillBombs *ActorRefillBombs::Create() { + return new(*data_027e0fe0[0], 4) ActorRefillBombs(); +} +ActorType ActorRefillBombs::gType = ActorType(ActorTypeId_RefillBombs, (ActorCreateFunc) ActorRefillBombs::Create, NULL); + +ARM ActorRefillBombchus *ActorRefillBombchus::Create() { + return new(*data_027e0fe0[0], 4) ActorRefillBombchus(); +} +ActorType ActorRefillBombchus::gType = + ActorType(ActorTypeId_RefillBombchus, (ActorCreateFunc) ActorRefillBombchus::Create, NULL); + +ARM ActorRefillArrows *ActorRefillArrows::Create() { + return new(*data_027e0fe0[0], 4) ActorRefillArrows(); +} +ActorType ActorRefillArrows::gType = ActorType(ActorTypeId_RefillArrows, (ActorCreateFunc) ActorRefillArrows::Create, NULL); + +ARM ActorRefillTime *ActorRefillTime::Create() { + return new(*data_027e0fe0[0], 4) ActorRefillTime(); +} +ActorType ActorRefillTime::gType = ActorType(ActorTypeId_RefillTime, (ActorCreateFunc) ActorRefillTime::Create, NULL); + +ARM ActorLSTM *ActorLSTM::Create() { + return new(*data_027e0fe0[0], 4) ActorLSTM(); +} +ActorType ActorLSTM::gType = ActorType(ActorTypeId_LSTM, (ActorCreateFunc) ActorLSTM::Create, NULL); + +ARM ActorRefill::ActorRefill(unk32 param1) : + mUnk_158(0), + mUnk_15c(0x56), + mUnk_160(param1), + mUnk_164(0x1f) {} + +ARM ActorRefill::~ActorRefill() {} + +ARM bool ActorRefill::vfunc_08() { + ItemManager *itemManager; + + if (this->vfunc_b4() == ItemFlag_None) { + if (data_027e0d38->func_ov000_02078b40() != 3) { + return false; + } + } else { + ItemManager *itemManager = gItemManager; + ItemFlag item = this->vfunc_b4(); + if (!itemManager->HasItem(item)) { + return false; + } + } + mHitbox.pos.x = 0; + mHitbox.pos.y = FLOAT_TO_Q20(0.3); + mHitbox.pos.z = 0; + mHitbox.size = FLOAT_TO_Q20(0.3); + mUnk_08c.pos.x = mHitbox.pos.x; + mUnk_08c.pos.y = mHitbox.pos.y; + mUnk_08c.pos.z = mHitbox.pos.z; + mUnk_08c.size = mHitbox.size; + mUnk_0a4.mUnk_04.x = 0; + mUnk_0a4.mUnk_04.y = FLOAT_TO_Q20(0.3); + mUnk_0a4.mUnk_04.z = 0; + mUnk_0a4.mUnk_10 = FLOAT_TO_Q20(1.3); + mUnk_09c.mUnk_0 &= ~0xa4; + mUnk_09c.mUnk_3 = 1; + mMaxFall = mUnk_08c.size + -1; + this->func_ov014_02135364(0); + return true; +} + +extern unk32 data_ov000_020eec9c; +extern "C" void func_ov000_020d7ad4(unk32 *param1, unk32 param2); +ARM void ActorRefill::vfunc_14(u32 param1) { + s32 temp_r0_4; + s32 temp_r6; + s8 var_r0; + u32 temp_r0; + u32 temp_r0_3; + u32 temp_r1; + Vec3p *temp_r0_2; + + if (this->func_ov00_020c313c(param1) != 0) { + this->IncreaseActiveFrames(); + temp_r0 = mUnk_130; + switch (temp_r0) { + case 0: + this->ApplyGravity(); + temp_r0_2 = &mPos; + Vec3p_Add(temp_r0_2, &mVel, temp_r0_2); + this->func_01fffd04(0); + if (mUnk_110 || mUnk_112 || mUnk_113) { + mVel.x = 0; + mVel.z = 0; + } + if (mUnk_111) { + this->func_ov014_02135364(1); + } else if (this->func_ov00_020c2c0c()) { + this->func_ov014_02135364(4); + } else if (this->func_ov00_020c2d54()) { + this->func_ov014_02135364(5); + } + break; + case 1: + case 2: + case 4: + case 5: + if (this->CollidesWithPlayer(PlayerCollide_PickupFlags) != 0) { + if (this->vfunc_b4() == -1) { + data_027e103c->func_ov000_020cfbf0(mUnk_158 * 60, 1, 0); + } else { + ItemManager *itemManager = gItemManager; + itemManager->GiveAmmo(this->vfunc_b4(), mUnk_158); + } + func_ov000_020d7ad4(&data_ov000_020eec9c, 0x100); + this->func_ov014_02135364(3); + } else { + temp_r0_3 = mUnk_130; + switch (temp_r0_3) { + case 0: + case 3: break; + case 1: + if (this->func_ov00_020c2c0c()) { + this->func_ov014_02135364(4); + } else if (this->func_ov00_020c2d54()) { + this->func_ov014_02135364(5); + } else if (mActiveFrames >= 180) { + this->func_ov014_02135364(2); + } + break; + case 2: +#define ROTATE_RIGHT(x, n) ((x >> n) | (x << (32 - n))) + temp_r0_4 = mActiveFrames; + temp_r1 = (u32) temp_r0_4 >> 31; + + if ((temp_r1 + ROTATE_RIGHT((temp_r0_4 << 29) - temp_r1, 29)) < 4) { + var_r0 = 0; + } else { + var_r0 = 31; + } + mUnk_164 = var_r0; + if (this->func_ov00_020c2c0c()) { + this->func_ov014_02135364(4); + } else if (this->func_ov00_020c2d54()) { + this->func_ov014_02135364(5); + } else if (mActiveFrames >= 60) { + this->func_ov014_02135364(3); + } + break; + case 4: + if (!this->func_ov00_020c2c70()) { + this->func_ov014_02135364(1); + } + break; + case 5: + if (!this->func_ov00_020c2de4()) { + this->func_ov014_02135364(1); + } + break; + } + } + break; + } + this->KillInBounds(); + } + mUnk_0a4.func_ov000_0207a1c8(param1, &mPos); +} + +ARM bool ActorRefill::func_ov014_02135364(unk32 param1) { + mUnk_130 = param1; + mUnk_164 = 31; + mActiveFrames = 0; + switch (mUnk_130) { + case 0: + case 2: break; + case 1: + mVel.x = 0; + mVel.y = 0; + mVel.z = 0; + break; + case 3: this->Kill(); break; + } + return true; +} + +extern "C" void func_0202bc38(bool param1, Vec3p *pos, unk32 param2, Actor_UnkStruct_012 *param3, unk32 param4); +extern u32 data_ov000_020e9370[]; +extern "C" void func_ov005_02102c2c(u32 *param_1, int param_2, Vec3p *param_3, int param_4, int param_5, u32 param_6, + int param_7, char param_8, char param_9, char param_10); +ARM void ActorRefill::vfunc_20(bool param1) { + bool var_r0; + + if (param1) { + var_r0 = mUnk_0a4.mUnk_01; + } else { + var_r0 = mUnk_0a4.mUnk_00; + } + if (var_r0 && mUnk_164 != 0) { + Actor_UnkStruct_012 sp18; + sp18.mUnk_04 = 5; + sp18.mUnk_08 = 2; + sp18.mUnk_0c = 2; + sp18.mUnk_14 = 0x800; + sp18.mUnk_18 = 0x1000; + sp18.mUnk_02 = mUnk_164; + func_0202bc38(param1, &mPos, mUnk_15c, &sp18, 0); + func_ov005_02102c2c(&data_ov000_020e9370[0], 0, &mPos, 0x400, 0, mUnk_164, 0, 0, 1, 0); + } +} + +extern unk32 data_027e0e58; +extern "C" void func_ov000_0207c1b0(unk32 *param1, unk32 param2, Vec3p *param3, unk32 param4, unk32 param5, unk32 param6); +ARM void ActorRefill::func_ov014_02135474() { + s32 iVar1 = mUnk_130; + if (iVar1 != 4 && iVar1 != 5) { + func_ov000_0207c1b0(&data_027e0e58, 0x241, &mPos, 2, 0, 0); + func_ov000_0207c1b0(&data_027e0e58, 0x242, &mPos, 2, 0, 0); + mAlive = false; + } +} + +ARM ActorRefillBombs::ActorRefillBombs() : + ActorRefill(0) { + mUnk_158 = 3; + mUnk_15c = 0x2e; +} + +ARM ActorRefillBombs::~ActorRefillBombs() {} + +ARM ItemFlag ActorRefillBombs::vfunc_b4() { + return ItemFlag_BombBag; +} + +ARM ActorRefillBombchus::ActorRefillBombchus() : + ActorRefill(1) { + mUnk_158 = 3; + mUnk_15c = 0x2f; +} + +ARM ActorRefillBombchus::~ActorRefillBombchus() {} + +ARM ItemFlag ActorRefillBombchus::vfunc_b4() { + return ItemFlag_BombchuBag; +} + +ARM ActorRefillArrows::ActorRefillArrows() : + ActorRefill(2) { + mUnk_158 = 5; + mUnk_15c = 0x2d; +} + +ARM ActorRefillArrows::~ActorRefillArrows() {} + +ARM ItemFlag ActorRefillArrows::vfunc_b4() { + return ItemFlag_Bow; +} + +ARM ActorRefillTime::ActorRefillTime() : + ActorRefill(3) { + mUnk_158 = 5; + mUnk_15c = 0x44; +} + +ARM ActorRefillTime::~ActorRefillTime() {} + +ARM bool ActorRefillTime::vfunc_08() { + + if (!ActorRefill::vfunc_08()) { + return false; + } + switch (mUnk_020.mUnk_00[0]) { + case 2: mUnk_158 = 5; break; + case 4: mUnk_158 = 15; break; + case 5: mUnk_158 = 30; break; + default: + case 0: + case 1: + case 3: + s32 temp_ip = gRandom->Next(10); + if (temp_ip >= 9) { + mUnk_158 = 30; + } else if (temp_ip >= 6) { + mUnk_158 = 15; + } else { + mUnk_158 = 5; + } + break; + } + if (mUnk_158 != -0x1E) { + if (mUnk_158 == -0xF) { + mUnk_15c = 0x48; + } else { + mUnk_15c = 0x47; + } + } else { + mUnk_15c = 0x49; + } + return true; +} + +ARM ItemFlag ActorRefillTime::vfunc_b4() { + return ItemFlag_None; +} + +ARM ActorLSTM::ActorLSTM() : + ActorRefill(3) { + mUnk_158 = -5; + mUnk_15c = 0x47; +} + +ARM ActorLSTM::~ActorLSTM() {} + +ARM bool ActorLSTM::vfunc_08() { + if (!ActorRefill::vfunc_08()) { + return false; + } + switch (mUnk_020.mUnk_00[0]) { + case 2: mUnk_158 = -5; break; + case 4: mUnk_158 = -15; break; + case 5: mUnk_158 = -30; break; + default: + case 0: + case 1: + case 3: + s32 temp_ip = gRandom->Next(10); + if (temp_ip >= 9) { + mUnk_158 = -30; + } else if (temp_ip >= 6) { + mUnk_158 = -15; + } else { + mUnk_158 = -5; + } + break; + } + if (mUnk_158 != -0x1E) { + if (mUnk_158 == -0xF) { + mUnk_15c = 0x48; + } else { + mUnk_15c = 0x47; + } + } else { + mUnk_15c = 0x49; + } + return true; +} + +ARM ItemFlag ActorLSTM::vfunc_b4() { + return ItemFlag_None; +} From 2c27f6cb3d98b3a8fe94d631c47767dea4daeda8 Mon Sep 17 00:00:00 2001 From: Aetias Date: Thu, 29 May 2025 08:51:28 +0200 Subject: [PATCH 5/5] `ActorRefill` OK --- config/eur/arm9/overlays/ov000/symbols.txt | 2 +- config/eur/arm9/overlays/ov014/delinks.txt | 1 + config/eur/arm9/overlays/ov014/symbols.txt | 34 +++++++-------- config/usa/arm9/overlays/ov000/symbols.txt | 2 +- config/usa/arm9/overlays/ov014/delinks.txt | 1 + config/usa/arm9/overlays/ov014/symbols.txt | 34 +++++++-------- include/System/Random.hpp | 2 +- src/14_Land/Actor/ActorRupee.cpp | 11 +++-- src/14_Land/Actor/Player/ActorRefill.cpp | 48 ++++++++-------------- 9 files changed, 61 insertions(+), 74 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 7ada7f31..7748f1a0 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -146,7 +146,7 @@ func_ov000_0207a038 kind:function(thumb,size=0x102) addr:0x207a038 _ZN19Actor_UnkStruct_012C1Ev kind:function(arm,size=0x4c) addr:0x207a13c _ZN19Actor_UnkStruct_0a4C1Eiiii kind:function(thumb,size=0x1c) addr:0x207a188 func_ov000_0207a1a4 kind:function(arm,size=0x24) addr:0x207a1a4 -func_ov000_0207a1c8 kind:function(arm,size=0xcc) addr:0x207a1c8 +_ZN19Actor_UnkStruct_0a419func_ov000_0207a1c8EiP5Vec3p kind:function(arm,size=0xcc) addr:0x207a1c8 func_ov000_0207a294 kind:function(thumb,size=0x44) addr:0x207a294 func_ov000_0207a2d8 kind:function(arm,size=0x10) addr:0x207a2d8 func_ov000_0207a2e8 kind:function(thumb,size=0x14) addr:0x207a2e8 diff --git a/config/eur/arm9/overlays/ov014/delinks.txt b/config/eur/arm9/overlays/ov014/delinks.txt index c58b5eda..df6a203b 100644 --- a/config/eur/arm9/overlays/ov014/delinks.txt +++ b/config/eur/arm9/overlays/ov014/delinks.txt @@ -14,6 +14,7 @@ src/14_Land/Actor/ActorRupee.cpp: .bss start:0x0215b1f4 end:0x0215b214 src/14_Land/Actor/Player/ActorRefill.cpp: + complete .text start:0x02134e24 end:0x02135940 .init start:0x02154c14 end:0x02154d24 .ctor start:0x021558ec end:0x021558f0 diff --git a/config/eur/arm9/overlays/ov014/symbols.txt b/config/eur/arm9/overlays/ov014/symbols.txt index 845eaccd..af3f2ed6 100644 --- a/config/eur/arm9/overlays/ov014/symbols.txt +++ b/config/eur/arm9/overlays/ov014/symbols.txt @@ -1672,7 +1672,7 @@ __sinit_ov014_02154b34 kind:function(arm,size=0x38) addr:0x2154b34 __sinit_ov014_02154b6c kind:function(arm,size=0x38) addr:0x2154b6c __sinit_ov014_02154ba4 kind:function(arm,size=0x38) addr:0x2154ba4 __sinit_ov014_02154bdc kind:function(arm,size=0x38) addr:0x2154bdc -__sinit_ActorRefill.cpp kind:function(arm,size=0x110) addr:0x2154c14 +__sinit_ActorRefill.cpp kind:function(arm,size=0x110) addr:0x2154c14 local __sinit_ov014_02154d24 kind:function(arm,size=0x1d8) addr:0x2154d24 __sinit_ov014_02154efc kind:function(arm,size=0x40) addr:0x2154efc __sinit_ov014_02154f3c kind:function(arm,size=0x40) addr:0x2154f3c @@ -1846,14 +1846,14 @@ data_ov014_02157768 kind:data(any) addr:0x2157768 data_ov014_0215777c kind:data(any) addr:0x215777c data_ov014_02157790 kind:data(any) addr:0x2157790 data_ov014_02157824 kind:data(any) addr:0x2157824 -data_ov014_021578b0 kind:data(any) addr:0x21578b0 -data_ov014_021578b4 kind:data(any) addr:0x21578b4 -data_ov014_021578b8 kind:data(any) addr:0x21578b8 -data_ov014_021578bc kind:data(any) addr:0x21578bc -data_ov014_021578c0 kind:data(any) addr:0x21578c0 -data_ov014_021578c4 kind:data(any) addr:0x21578c4 -data_ov014_021578c8 kind:data(any) addr:0x21578c8 -data_ov014_021578cc kind:data(any) addr:0x21578cc +@570 kind:data(any) addr:0x21578b0 local +@569 kind:data(any) addr:0x21578b4 local +@568 kind:data(any) addr:0x21578b8 local +@567 kind:data(any) addr:0x21578bc local +@566 kind:data(any) addr:0x21578c0 local +@565 kind:data(any) addr:0x21578c4 local +@564 kind:data(any) addr:0x21578c8 local +@563 kind:data(any) addr:0x21578cc local sShipTypes kind:data(any) addr:0x21578d0 local _ZTV9ActorLSTM kind:data(any) addr:0x21578f0 _ZTV15ActorRefillTime kind:data(any) addr:0x21579b0 @@ -2196,15 +2196,15 @@ data_ov014_0215af6c kind:bss addr:0x215af6c data_ov014_0215af74 kind:bss addr:0x215af74 data_ov014_0215af80 kind:bss addr:0x215af80 data_ov014_0215af88 kind:bss addr:0x215af88 -@363 kind:bss addr:0x215af94 -_ZN19ActorRefillBombchus5gTypeE kind:bss addr:0x215afa0 -@361 kind:bss addr:0x215afb4 -_ZN15ActorRefillTime5gTypeE kind:bss addr:0x215afc0 -@364 kind:bss addr:0x215afd4 +@363 kind:bss addr:0x215af94 local +_ZN16ActorRefillBombs5gTypeE kind:bss addr:0x215afa0 +@361 kind:bss addr:0x215afb4 local +_ZN19ActorRefillBombchus5gTypeE kind:bss addr:0x215afc0 +@364 kind:bss addr:0x215afd4 local _ZN17ActorRefillArrows5gTypeE kind:bss addr:0x215afe0 -@360 kind:bss addr:0x215aff4 -_ZN16ActorRefillBombs5gTypeE kind:bss addr:0x215b000 -@362 kind:bss addr:0x215b014 +@360 kind:bss addr:0x215aff4 local +_ZN15ActorRefillTime5gTypeE kind:bss addr:0x215b000 +@362 kind:bss addr:0x215b014 local _ZN9ActorLSTM5gTypeE kind:bss addr:0x215b020 data_ov014_0215b034 kind:bss addr:0x215b034 data_ov014_0215b040 kind:bss addr:0x215b040 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 2247bd65..d8d0c8c9 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -146,7 +146,7 @@ func_ov000_0207a038 kind:function(thumb,size=0x102) addr:0x2079fd8 _ZN19Actor_UnkStruct_012C1Ev kind:function(arm,size=0x4c) addr:0x207a0dc _ZN19Actor_UnkStruct_0a4C1Eiiii kind:function(thumb,size=0x1c) addr:0x207a128 func_ov000_0207a1a4 kind:function(arm,size=0x24) addr:0x207a144 -func_ov000_0207a1c8 kind:function(arm,size=0xcc) addr:0x207a168 +_ZN19Actor_UnkStruct_0a419func_ov000_0207a1c8EiP5Vec3p kind:function(arm,size=0xcc) addr:0x207a168 func_ov000_0207a294 kind:function(thumb,size=0x44) addr:0x207a234 func_ov000_0207a2d8 kind:function(arm,size=0x10) addr:0x207a278 func_ov000_0207a2e8 kind:function(thumb,size=0x14) addr:0x207a288 diff --git a/config/usa/arm9/overlays/ov014/delinks.txt b/config/usa/arm9/overlays/ov014/delinks.txt index db538ee4..dcd2d705 100644 --- a/config/usa/arm9/overlays/ov014/delinks.txt +++ b/config/usa/arm9/overlays/ov014/delinks.txt @@ -14,6 +14,7 @@ src/14_Land/Actor/ActorRupee.cpp: .bss start:0x0215b154 end:0x0215b174 src/14_Land/Actor/Player/ActorRefill.cpp: + complete .text start:0x02134d80 end:0x0213589c .init start:0x02154b70 end:0x02154c80 .ctor start:0x02155848 end:0x0215584c diff --git a/config/usa/arm9/overlays/ov014/symbols.txt b/config/usa/arm9/overlays/ov014/symbols.txt index 139f3157..ce1b6513 100644 --- a/config/usa/arm9/overlays/ov014/symbols.txt +++ b/config/usa/arm9/overlays/ov014/symbols.txt @@ -1672,7 +1672,7 @@ __sinit_ov014_02154b34 kind:function(arm,size=0x38) addr:0x2154a90 __sinit_ov014_02154b6c kind:function(arm,size=0x38) addr:0x2154ac8 __sinit_ov014_02154ba4 kind:function(arm,size=0x38) addr:0x2154b00 __sinit_ov014_02154bdc kind:function(arm,size=0x38) addr:0x2154b38 -__sinit_ActorRefill.cpp kind:function(arm,size=0x110) addr:0x2154b70 +__sinit_ActorRefill.cpp kind:function(arm,size=0x110) addr:0x2154b70 local __sinit_ov014_02154d24 kind:function(arm,size=0x1d8) addr:0x2154c80 __sinit_ov014_02154efc kind:function(arm,size=0x40) addr:0x2154e58 __sinit_ov014_02154f3c kind:function(arm,size=0x40) addr:0x2154e98 @@ -1846,14 +1846,14 @@ data_ov014_02157768 kind:data(any) addr:0x21576c8 data_ov014_0215777c kind:data(any) addr:0x21576dc data_ov014_02157790 kind:data(any) addr:0x21576f0 data_ov014_02157824 kind:data(any) addr:0x2157784 -data_ov014_021578b0 kind:data(any) addr:0x2157810 -data_ov014_021578b4 kind:data(any) addr:0x2157814 -data_ov014_021578b8 kind:data(any) addr:0x2157818 -data_ov014_021578bc kind:data(any) addr:0x215781c -data_ov014_021578c0 kind:data(any) addr:0x2157820 -data_ov014_021578c4 kind:data(any) addr:0x2157824 -data_ov014_021578c8 kind:data(any) addr:0x2157828 -data_ov014_021578cc kind:data(any) addr:0x215782c +@570 kind:data(any) addr:0x2157810 local +@569 kind:data(any) addr:0x2157814 local +@568 kind:data(any) addr:0x2157818 local +@567 kind:data(any) addr:0x215781c local +@566 kind:data(any) addr:0x2157820 local +@565 kind:data(any) addr:0x2157824 local +@564 kind:data(any) addr:0x2157828 local +@563 kind:data(any) addr:0x215782c local sShipTypes kind:data(any) addr:0x2157830 local _ZTV9ActorLSTM kind:data(any) addr:0x2157850 _ZTV15ActorRefillTime kind:data(any) addr:0x2157910 @@ -2196,15 +2196,15 @@ data_ov014_0215af6c kind:bss addr:0x215aecc data_ov014_0215af74 kind:bss addr:0x215aed4 data_ov014_0215af80 kind:bss addr:0x215aee0 data_ov014_0215af88 kind:bss addr:0x215aee8 -@363 kind:bss addr:0x215aef4 -_ZN19ActorRefillBombchus5gTypeE kind:bss addr:0x215af00 -@361 kind:bss addr:0x215af14 -_ZN15ActorRefillTime5gTypeE kind:bss addr:0x215af20 -@364 kind:bss addr:0x215af34 +@363 kind:bss addr:0x215aef4 local +_ZN16ActorRefillBombs5gTypeE kind:bss addr:0x215af00 +@361 kind:bss addr:0x215af14 local +_ZN19ActorRefillBombchus5gTypeE kind:bss addr:0x215af20 +@364 kind:bss addr:0x215af34 local _ZN17ActorRefillArrows5gTypeE kind:bss addr:0x215af40 -@360 kind:bss addr:0x215af54 -_ZN16ActorRefillBombs5gTypeE kind:bss addr:0x215af60 -@362 kind:bss addr:0x215af74 +@360 kind:bss addr:0x215af54 local +_ZN15ActorRefillTime5gTypeE kind:bss addr:0x215af60 +@362 kind:bss addr:0x215af74 local _ZN9ActorLSTM5gTypeE kind:bss addr:0x215af80 data_ov014_0215b034 kind:bss addr:0x215af94 data_ov014_0215b040 kind:bss addr:0x215afa0 diff --git a/include/System/Random.hpp b/include/System/Random.hpp index 4506466d..cc1f2a12 100644 --- a/include/System/Random.hpp +++ b/include/System/Random.hpp @@ -19,4 +19,4 @@ struct Random { } }; -extern Random *gRandom; +extern Random gRandom; diff --git a/src/14_Land/Actor/ActorRupee.cpp b/src/14_Land/Actor/ActorRupee.cpp index 80857246..32a95333 100644 --- a/src/14_Land/Actor/ActorRupee.cpp +++ b/src/14_Land/Actor/ActorRupee.cpp @@ -5,7 +5,6 @@ #include "System/Random.hpp" extern "C" { -void func_ov000_0207a1c8(bool *param_1, unk32 param_2, Vec3p *param_3); void func_0202bc38(unk32 param_1, Vec3p *param_2, u32 param_3, Actor_UnkStruct_012 *param_4, bool); void func_ov005_02102c2c(u32 *param_1, int param_2, Vec3p *param_3, int param_4, int param_5, u32 param_6, int param_7, char param_8, char param_9, char param_10); @@ -71,9 +70,9 @@ bool ActorRupee::vfunc_08() { func_ov14_0213b204(0); break; case 1: - q20 x = gRandom->Next(FLOAT_TO_Q20(0.1335)); - q20 y = gRandom->Next(FLOAT_TO_Q20(0.2)); - q20 z = gRandom->Next(FLOAT_TO_Q20(0.1335)); + q20 x = gRandom.Next(FLOAT_TO_Q20(0.1335)); + q20 y = gRandom.Next(FLOAT_TO_Q20(0.2)); + q20 z = gRandom.Next(FLOAT_TO_Q20(0.1335)); mVel.x = x - FLOAT_TO_Q20(0.0666); mVel.y = y + FLOAT_TO_Q20(0.3333); @@ -263,14 +262,14 @@ void ActorRupee::vfunc_14(u32 param1) { if (func_ov00_020c313c(param1)) { Update(false); } - func_ov000_0207a1c8(&mUnk_0a4.mUnk_00, param1, &mPos); + mUnk_0a4.func_ov000_0207a1c8(param1, &mPos); } void ActorRupee::vfunc_18(u32 param1) { if (func_ov00_020c313c(param1)) { Update(true); } - func_ov000_0207a1c8(&mUnk_0a4.mUnk_00, param1, &mPos); + mUnk_0a4.func_ov000_0207a1c8(param1, &mPos); } #define VFUNC20_COND (param1 ? mUnk_0a4.mUnk_01 : mUnk_0a4.mUnk_00) diff --git a/src/14_Land/Actor/Player/ActorRefill.cpp b/src/14_Land/Actor/Player/ActorRefill.cpp index 83ef57fd..0e6a9edf 100644 --- a/src/14_Land/Actor/Player/ActorRefill.cpp +++ b/src/14_Land/Actor/Player/ActorRefill.cpp @@ -134,16 +134,11 @@ ARM void ActorRefill::vfunc_14(u32 param1) { } break; case 2: -#define ROTATE_RIGHT(x, n) ((x >> n) | (x << (32 - n))) - temp_r0_4 = mActiveFrames; - temp_r1 = (u32) temp_r0_4 >> 31; - - if ((temp_r1 + ROTATE_RIGHT((temp_r0_4 << 29) - temp_r1, 29)) < 4) { - var_r0 = 0; + if (mActiveFrames % 8 < 4) { + mUnk_164 = 0; } else { - var_r0 = 31; + mUnk_164 = 31; } - mUnk_164 = var_r0; if (this->func_ov00_020c2c0c()) { this->func_ov014_02135364(4); } else if (this->func_ov00_020c2d54()) { @@ -209,17 +204,17 @@ ARM void ActorRefill::vfunc_20(bool param1) { sp18.mUnk_18 = 0x1000; sp18.mUnk_02 = mUnk_164; func_0202bc38(param1, &mPos, mUnk_15c, &sp18, 0); - func_ov005_02102c2c(&data_ov000_020e9370[0], 0, &mPos, 0x400, 0, mUnk_164, 0, 0, 1, 0); + func_ov005_02102c2c(&data_ov000_020e9370[0], 0, &mPos, 0x400, 0x400, 0, mUnk_164, 0, 0, 1); } } -extern unk32 data_027e0e58; +extern unk32 *data_027e0e58; extern "C" void func_ov000_0207c1b0(unk32 *param1, unk32 param2, Vec3p *param3, unk32 param4, unk32 param5, unk32 param6); ARM void ActorRefill::func_ov014_02135474() { s32 iVar1 = mUnk_130; if (iVar1 != 4 && iVar1 != 5) { - func_ov000_0207c1b0(&data_027e0e58, 0x241, &mPos, 2, 0, 0); - func_ov000_0207c1b0(&data_027e0e58, 0x242, &mPos, 2, 0, 0); + func_ov000_0207c1b0(data_027e0e58, 0x241, &mPos, 2, 0, 0); + func_ov000_0207c1b0(data_027e0e58, 0x242, &mPos, 2, 0, 0); mAlive = false; } } @@ -269,7 +264,6 @@ ARM ActorRefillTime::ActorRefillTime() : ARM ActorRefillTime::~ActorRefillTime() {} ARM bool ActorRefillTime::vfunc_08() { - if (!ActorRefill::vfunc_08()) { return false; } @@ -281,7 +275,7 @@ ARM bool ActorRefillTime::vfunc_08() { case 0: case 1: case 3: - s32 temp_ip = gRandom->Next(10); + s32 temp_ip = gRandom.Next(10); if (temp_ip >= 9) { mUnk_158 = 30; } else if (temp_ip >= 6) { @@ -291,14 +285,10 @@ ARM bool ActorRefillTime::vfunc_08() { } break; } - if (mUnk_158 != -0x1E) { - if (mUnk_158 == -0xF) { - mUnk_15c = 0x48; - } else { - mUnk_15c = 0x47; - } - } else { - mUnk_15c = 0x49; + switch (mUnk_158) { + case 15: mUnk_15c = 0x45; break; + case 30: mUnk_15c = 0x46; break; + default: mUnk_15c = 0x44; break; } return true; } @@ -327,7 +317,7 @@ ARM bool ActorLSTM::vfunc_08() { case 0: case 1: case 3: - s32 temp_ip = gRandom->Next(10); + s32 temp_ip = gRandom.Next(10); if (temp_ip >= 9) { mUnk_158 = -30; } else if (temp_ip >= 6) { @@ -337,14 +327,10 @@ ARM bool ActorLSTM::vfunc_08() { } break; } - if (mUnk_158 != -0x1E) { - if (mUnk_158 == -0xF) { - mUnk_15c = 0x48; - } else { - mUnk_15c = 0x47; - } - } else { - mUnk_15c = 0x49; + switch (mUnk_158) { + case -15: mUnk_15c = 0x48; break; + case -30: mUnk_15c = 0x49; break; + default: mUnk_15c = 0x47; break; } return true; }