From 2c27f6cb3d98b3a8fe94d631c47767dea4daeda8 Mon Sep 17 00:00:00 2001 From: Aetias Date: Thu, 29 May 2025 08:51:28 +0200 Subject: [PATCH] `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; }