From 58235d4f98ae3e4e099fa257c8c7b5fd6deb6ff6 Mon Sep 17 00:00:00 2001 From: Mityno <84503460+Mityno@users.noreply.github.com> Date: Thu, 2 Jul 2026 17:39:05 +0000 Subject: [PATCH] Start decompiling Actors RMSX (#96) * feat: Decompile ActorUnkRMSS * feat: Rename symbols for ActorUnkRMSD and finish ActorUnkRMSS * feat: Start decompiling ActorUnkRMSV (port changes from ActorUnkRMSX) * feat: Start decompiling ActorUnkRMSW (port changes from ActorUnkRMSX) * feat: Start to decompile RMSW::vfunc_18 * feat: Match ActorUnkRMSW::vfunc_18 * feat: Match ActorUnkRMSD::vfunc_18 * feat: Match ActorUnkRMSV::vfunc_18 and vfunc_20 * fix: Style reviews --- config/eur/arm9/overlays/ov063/symbols.txt | 44 +++++++-------- config/jp/arm9/overlays/ov063/symbols.txt | 64 +++++++++++----------- include/Actor/ActorUnkRMSD.hpp | 13 ++--- include/Actor/ActorUnkRMSS.hpp | 10 ++-- include/Actor/ActorUnkRMSV.hpp | 22 +++++--- include/Actor/ActorUnkRMSW.hpp | 28 +++++++--- src/063_Shrine/Actor/ActorUnkRMSD.cpp | 27 ++++++--- src/063_Shrine/Actor/ActorUnkRMSS.cpp | 15 ++++- src/063_Shrine/Actor/ActorUnkRMSV.cpp | 48 +++++++++++++--- src/063_Shrine/Actor/ActorUnkRMSW.cpp | 37 +++++++++++-- 10 files changed, 202 insertions(+), 106 deletions(-) diff --git a/config/eur/arm9/overlays/ov063/symbols.txt b/config/eur/arm9/overlays/ov063/symbols.txt index 1378ad29..b48d2438 100644 --- a/config/eur/arm9/overlays/ov063/symbols.txt +++ b/config/eur/arm9/overlays/ov063/symbols.txt @@ -118,27 +118,27 @@ _ZN19ActorProfileUnkRMSV6CreateEv kind:function(arm,size=0x24) addr:0x0215bc38 _ZN19ActorProfileUnkRMSVC1Ev kind:function(arm,size=0x28) addr:0x0215bc5c _ZN12ActorUnkRMSVC1Ev kind:function(arm,size=0xc0) addr:0x0215bc84 _ZN12ActorUnkRMSV19func_ov063_0215bd44Ev kind:function(arm,size=0x14) addr:0x0215bd44 -_ZN12ActorUnkRMSV19func_ov063_0215bd58Ev kind:function(arm,size=0x94) addr:0x0215bd58 +_ZN12ActorUnkRMSV8vfunc_18Ev kind:function(arm,size=0x94) addr:0x0215bd58 _ZN12ActorUnkRMSV19func_ov063_0215bdecEv kind:function(arm,size=0x24) addr:0x0215bdec -_ZN12ActorUnkRMSV19func_ov063_0215be10Ev kind:function(arm,size=0x2c) addr:0x0215be10 -_ZN12ActorUnkRMSV19func_ov063_0215be3cEv kind:function(arm,size=0x14) addr:0x0215be3c -_ZN12ActorUnkRMSV19func_ov063_0215be50Ev kind:function(arm,size=0x40) addr:0x0215be50 -_ZN12ActorUnkRMSV19func_ov063_0215be90Ev kind:function(arm,size=0x40) addr:0x0215be90 +_ZN12ActorUnkRMSV8vfunc_20Ev kind:function(arm,size=0x2c) addr:0x0215be10 +_ZN12ActorUnkRMSV8vfunc_24Ev kind:function(arm,size=0x14) addr:0x0215be3c +_ZN12ActorUnkRMSV8vfunc_54Ev kind:function(arm,size=0x40) addr:0x0215be50 +_ZN12ActorUnkRMSV8vfunc_58Ev kind:function(arm,size=0x40) addr:0x0215be90 _ZN12ActorUnkRMSV19func_ov063_0215bed0Ev kind:function(arm,size=0x10) addr:0x0215bed0 _ZN12ActorUnkRMSV19func_ov063_0215bee0Ev kind:function(arm,size=0x8) addr:0x0215bee0 _ZN12ActorUnkRMSVD0Ev kind:function(arm,size=0x1c) addr:0x0215bee8 _ZN12ActorUnkRMSVD1Ev kind:function(arm,size=0x38) addr:0x0215bf04 -_ZN12ActorUnkRMSV19func_ov063_0215bf3cEv kind:function(arm,size=0x40) addr:0x0215bf3c +_ZN12ActorUnkRMSV8vfunc_50Ev kind:function(arm,size=0x40) addr:0x0215bf3c _ZN19ActorProfileUnkRMSVD1Ev kind:function(arm,size=0x14) addr:0x0215bf7c _ZN19ActorProfileUnkRMSW10GetProfileEv kind:function(arm,size=0xc) addr:0x0215bf90 _ZN19ActorProfileUnkRMSW6CreateEv kind:function(arm,size=0x24) addr:0x0215bf9c _ZN19ActorProfileUnkRMSWC1Ev kind:function(arm,size=0x28) addr:0x0215bfc0 _ZN12ActorUnkRMSWC1Ev kind:function(arm,size=0x74) addr:0x0215bfe8 -_ZN12ActorUnkRMSW19func_ov063_0215c05cEv kind:function(arm,size=0x54) addr:0x0215c05c -_ZN12ActorUnkRMSW19func_ov063_0215c0b0Ev kind:function(arm,size=0x18) addr:0x0215c0b0 -_ZN12ActorUnkRMSW19func_ov063_0215c0c8Ev kind:function(arm,size=0x14) addr:0x0215c0c8 -_ZN12ActorUnkRMSW19func_ov063_0215c0dcEv kind:function(arm,size=0x40) addr:0x0215c0dc -_ZN12ActorUnkRMSW19func_ov063_0215c11cEv kind:function(arm,size=0x40) addr:0x0215c11c +_ZN12ActorUnkRMSW8vfunc_18Ev kind:function(arm,size=0x54) addr:0x0215c05c +_ZN12ActorUnkRMSW8vfunc_20Ev kind:function(arm,size=0x18) addr:0x0215c0b0 +_ZN12ActorUnkRMSW8vfunc_24Ev kind:function(arm,size=0x14) addr:0x0215c0c8 +_ZN12ActorUnkRMSW8vfunc_54Ev kind:function(arm,size=0x40) addr:0x0215c0dc +_ZN12ActorUnkRMSW8vfunc_58Ev kind:function(arm,size=0x40) addr:0x0215c11c _ZN12ActorUnkRMSWD1Ev kind:function(arm,size=0x30) addr:0x0215c15c _ZN12ActorUnkRMSWD0Ev kind:function(arm,size=0x38) addr:0x0215c18c _ZN19ActorProfileUnkRMSWD1Ev kind:function(arm,size=0x14) addr:0x0215c1c4 @@ -155,11 +155,11 @@ _ZN19ActorProfileUnkRMSD10GetProfileEv kind:function(arm,size=0xc) addr:0x0215c3 _ZN19ActorProfileUnkRMSD6CreateEv kind:function(arm,size=0x24) addr:0x0215c348 _ZN19ActorProfileUnkRMSDC1Ev kind:function(arm,size=0x28) addr:0x0215c36c _ZN12ActorUnkRMSDC1Ev kind:function(arm,size=0x74) addr:0x0215c394 -_ZN12ActorUnkRMSD19func_ov063_0215c408Ev kind:function(arm,size=0x54) addr:0x0215c408 -_ZN12ActorUnkRMSD19func_ov063_0215c45cEv kind:function(arm,size=0x18) addr:0x0215c45c -_ZN12ActorUnkRMSD19func_ov063_0215c474Ev kind:function(arm,size=0x14) addr:0x0215c474 -_ZN12ActorUnkRMSD19func_ov063_0215c488Ev kind:function(arm,size=0x40) addr:0x0215c488 -_ZN12ActorUnkRMSD19func_ov063_0215c4c8Ev kind:function(arm,size=0x40) addr:0x0215c4c8 +_ZN12ActorUnkRMSD8vfunc_18Ev kind:function(arm,size=0x54) addr:0x0215c408 +_ZN12ActorUnkRMSD8vfunc_20Ev kind:function(arm,size=0x18) addr:0x0215c45c +_ZN12ActorUnkRMSD8vfunc_24Ev kind:function(arm,size=0x14) addr:0x0215c474 +_ZN12ActorUnkRMSD8vfunc_54Ev kind:function(arm,size=0x40) addr:0x0215c488 +_ZN12ActorUnkRMSD8vfunc_58Ev kind:function(arm,size=0x40) addr:0x0215c4c8 _ZN12ActorUnkRMSDD1Ev kind:function(arm,size=0x30) addr:0x0215c508 _ZN12ActorUnkRMSDD0Ev kind:function(arm,size=0x38) addr:0x0215c538 _ZN19ActorProfileUnkRMSDD1Ev kind:function(arm,size=0x14) addr:0x0215c570 @@ -167,8 +167,8 @@ _ZN19ActorProfileUnkRMSS10GetProfileEv kind:function(arm,size=0xc) addr:0x0215c5 _ZN19ActorProfileUnkRMSS6CreateEv kind:function(arm,size=0x24) addr:0x0215c590 _ZN19ActorProfileUnkRMSSC1Ev kind:function(arm,size=0x28) addr:0x0215c5b4 _ZN12ActorUnkRMSSC1Ev kind:function(arm,size=0x20) addr:0x0215c5dc -_ZN12ActorUnkRMSS19func_ov063_0215c5fcEv kind:function(arm,size=0x40) addr:0x0215c5fc -_ZN12ActorUnkRMSS19func_ov063_0215c63cEv kind:function(arm,size=0x40) addr:0x0215c63c +_ZN12ActorUnkRMSS8vfunc_54Ev kind:function(arm,size=0x40) addr:0x0215c5fc +_ZN12ActorUnkRMSS8vfunc_58Ev kind:function(arm,size=0x40) addr:0x0215c63c _ZN12ActorUnkRMSSD1Ev kind:function(arm,size=0x28) addr:0x0215c67c _ZN12ActorUnkRMSSD0Ev kind:function(arm,size=0x30) addr:0x0215c6a4 _ZN19ActorProfileUnkRMSSD1Ev kind:function(arm,size=0x14) addr:0x0215c6d4 @@ -436,13 +436,13 @@ data_ov063_021631a0 kind:data(any) addr:0x021631a0 _ZTV19data_ov063_021631c4 kind:data(any) addr:0x021631c4 _ZTV19data_ov063_02163224 kind:data(any) addr:0x02163224 data_ov063_02163228 kind:data(any) addr:0x02163228 ambiguous -_ZTV19data_ov063_02163288 kind:data(any) addr:0x02163288 +_ZTV19ActorProfileUnkRMSV kind:data(any) addr:0x02163288 data_ov063_021632ac kind:data(any) addr:0x021632ac data_ov063_021632c4 kind:data(any) addr:0x021632c4 data_ov063_021632e4 kind:data(any) addr:0x021632e4 _ZTV19data_ov063_02163324 kind:data(any) addr:0x02163324 data_ov063_02163388 kind:data(any) addr:0x02163388 -_ZTV19data_ov063_021633a0 kind:data(any) addr:0x021633a0 +_ZTV19ActorProfileUnkRMSW kind:data(any) addr:0x021633a0 _ZTV19data_ov063_021633c4 kind:data(any) addr:0x021633c4 _ZTV19ActorProfileUnkRMSF kind:data(any) addr:0x02163428 _ZTV12ActorUnkRMSF kind:data(any) addr:0x0216344c @@ -450,8 +450,8 @@ data_ov063_021634b0 kind:data(any) addr:0x021634b0 _ZTV19ActorProfileUnkRMSD kind:data(any) addr:0x021634c8 _ZTV12ActorUnkRMSD kind:data(any) addr:0x021634ec _ZTV19data_ov063_02163510 kind:data(any) addr:0x02163510 ambiguous -_ZTV19data_ov063_02163550 kind:data(any) addr:0x02163550 -_ZTV19data_ov063_02163574 kind:data(any) addr:0x02163574 +_ZTV19ActorProfileUnkRMSS kind:data(any) addr:0x02163550 +_ZTV12ActorUnkRMSS kind:data(any) addr:0x02163574 _ZTV19data_ov063_021635d8 kind:data(any) addr:0x021635d8 data_ov063_021635fc kind:data(any) addr:0x021635fc data_ov063_02163618 kind:data(any) addr:0x02163618 diff --git a/config/jp/arm9/overlays/ov063/symbols.txt b/config/jp/arm9/overlays/ov063/symbols.txt index a99a83dd..cbaada98 100644 --- a/config/jp/arm9/overlays/ov063/symbols.txt +++ b/config/jp/arm9/overlays/ov063/symbols.txt @@ -118,27 +118,27 @@ _ZN19ActorProfileUnkRMSV6CreateEv kind:function(arm,size=0x24) addr:0x0215d9cc _ZN19ActorProfileUnkRMSVC1Ev kind:function(arm,size=0x28) addr:0x0215d9f0 _ZN12ActorUnkRMSVC1Ev kind:function(arm,size=0xc0) addr:0x0215da18 _ZN12ActorUnkRMSV19func_ov063_0215dad8Ev kind:function(arm,size=0x14) addr:0x0215dad8 -_ZN12ActorUnkRMSV19func_ov063_0215daecEv kind:function(arm,size=0x94) addr:0x0215daec +_ZN12ActorUnkRMSV8vfunc_18Ev kind:function(arm,size=0x94) addr:0x0215daec _ZN12ActorUnkRMSV19func_ov063_0215db80Ev kind:function(arm,size=0x24) addr:0x0215db80 -_ZN12ActorUnkRMSV19func_ov063_0215dba4Ev kind:function(arm,size=0x2c) addr:0x0215dba4 -_ZN12ActorUnkRMSV19func_ov063_0215dbd0Ev kind:function(arm,size=0x14) addr:0x0215dbd0 -_ZN12ActorUnkRMSV19func_ov063_0215dbe4Ev kind:function(arm,size=0x40) addr:0x0215dbe4 -_ZN12ActorUnkRMSV19func_ov063_0215dc24Ev kind:function(arm,size=0x40) addr:0x0215dc24 +_ZN12ActorUnkRMSV8vfunc_20Ev kind:function(arm,size=0x2c) addr:0x0215dba4 +_ZN12ActorUnkRMSV8vfunc_24Ev kind:function(arm,size=0x14) addr:0x0215dbd0 +_ZN12ActorUnkRMSV8vfunc_54Ev kind:function(arm,size=0x40) addr:0x0215dbe4 +_ZN12ActorUnkRMSV8vfunc_58Ev kind:function(arm,size=0x40) addr:0x0215dc24 _ZN12ActorUnkRMSV19func_ov063_0215dc64Ev kind:function(arm,size=0x10) addr:0x0215dc64 _ZN12ActorUnkRMSV19func_ov063_0215dc74Ev kind:function(arm,size=0x8) addr:0x0215dc74 _ZN12ActorUnkRMSVD0Ev kind:function(arm,size=0x1c) addr:0x0215dc7c _ZN12ActorUnkRMSVD1Ev kind:function(arm,size=0x38) addr:0x0215dc98 -_ZN12ActorUnkRMSV19func_ov063_0215dcd0Ev kind:function(arm,size=0x40) addr:0x0215dcd0 +_ZN12ActorUnkRMSV8vfunc_50Ev kind:function(arm,size=0x40) addr:0x0215dcd0 _ZN19ActorProfileUnkRMSVD1Ev kind:function(arm,size=0x14) addr:0x0215dd10 _ZN19ActorProfileUnkRMSW10GetProfileEv kind:function(arm,size=0xc) addr:0x0215dd24 _ZN19ActorProfileUnkRMSW6CreateEv kind:function(arm,size=0x24) addr:0x0215dd30 _ZN19ActorProfileUnkRMSWC1Ev kind:function(arm,size=0x28) addr:0x0215dd54 _ZN12ActorUnkRMSWC1Ev kind:function(arm,size=0x74) addr:0x0215dd7c -_ZN12ActorUnkRMSW19func_ov063_0215ddf0Ev kind:function(arm,size=0x54) addr:0x0215ddf0 -_ZN12ActorUnkRMSW19func_ov063_0215de44Ev kind:function(arm,size=0x18) addr:0x0215de44 -_ZN12ActorUnkRMSW19func_ov063_0215de5cEv kind:function(arm,size=0x14) addr:0x0215de5c -_ZN12ActorUnkRMSW19func_ov063_0215de70Ev kind:function(arm,size=0x40) addr:0x0215de70 -_ZN12ActorUnkRMSW19func_ov063_0215deb0Ev kind:function(arm,size=0x40) addr:0x0215deb0 +_ZN12ActorUnkRMSW8vfunc_18Ev kind:function(arm,size=0x54) addr:0x0215ddf0 +_ZN12ActorUnkRMSW8vfunc_20Ev kind:function(arm,size=0x18) addr:0x0215de44 +_ZN12ActorUnkRMSW8vfunc_24Ev kind:function(arm,size=0x14) addr:0x0215de5c +_ZN12ActorUnkRMSW8vfunc_54Ev kind:function(arm,size=0x40) addr:0x0215de70 +_ZN12ActorUnkRMSW8vfunc_58Ev kind:function(arm,size=0x40) addr:0x0215deb0 _ZN12ActorUnkRMSWD1Ev kind:function(arm,size=0x30) addr:0x0215def0 _ZN12ActorUnkRMSWD0Ev kind:function(arm,size=0x38) addr:0x0215df20 _ZN19ActorProfileUnkRMSWD1Ev kind:function(arm,size=0x14) addr:0x0215df58 @@ -155,11 +155,11 @@ _ZN19ActorProfileUnkRMSD10GetProfileEv kind:function(arm,size=0xc) addr:0x0215e0 _ZN19ActorProfileUnkRMSD6CreateEv kind:function(arm,size=0x24) addr:0x0215e0dc _ZN19ActorProfileUnkRMSDC1Ev kind:function(arm,size=0x28) addr:0x0215e100 _ZN12ActorUnkRMSDC1Ev kind:function(arm,size=0x74) addr:0x0215e128 -_ZN12ActorUnkRMSD19func_ov063_0215c408Ev kind:function(arm,size=0x54) addr:0x0215e19c -_ZN12ActorUnkRMSD19func_ov063_0215c45cEv kind:function(arm,size=0x18) addr:0x0215e1f0 -_ZN12ActorUnkRMSD19func_ov063_0215c474Ev kind:function(arm,size=0x14) addr:0x0215e208 -_ZN12ActorUnkRMSD19func_ov063_0215c488Ev kind:function(arm,size=0x40) addr:0x0215e21c -_ZN12ActorUnkRMSD19func_ov063_0215c4c8Ev kind:function(arm,size=0x40) addr:0x0215e25c +_ZN12ActorUnkRMSD8vfunc_18Ev kind:function(arm,size=0x54) addr:0x0215e19c +_ZN12ActorUnkRMSD8vfunc_20Ev kind:function(arm,size=0x18) addr:0x0215e1f0 +_ZN12ActorUnkRMSD8vfunc_24Ev kind:function(arm,size=0x14) addr:0x0215e208 +_ZN12ActorUnkRMSD8vfunc_54Ev kind:function(arm,size=0x40) addr:0x0215e21c +_ZN12ActorUnkRMSD8vfunc_58Ev kind:function(arm,size=0x40) addr:0x0215e25c _ZN12ActorUnkRMSDD1Ev kind:function(arm,size=0x30) addr:0x0215e29c _ZN12ActorUnkRMSDD0Ev kind:function(arm,size=0x38) addr:0x0215e2cc _ZN19ActorProfileUnkRMSDD1Ev kind:function(arm,size=0x14) addr:0x0215e304 @@ -167,8 +167,8 @@ _ZN19ActorProfileUnkRMSS10GetProfileEv kind:function(arm,size=0xc) addr:0x0215e3 _ZN19ActorProfileUnkRMSS6CreateEv kind:function(arm,size=0x24) addr:0x0215e324 _ZN19ActorProfileUnkRMSSC1Ev kind:function(arm,size=0x28) addr:0x0215e348 _ZN12ActorUnkRMSSC1Ev kind:function(arm,size=0x20) addr:0x0215e370 -_ZN12ActorUnkRMSS19func_ov063_0215e390Ev kind:function(arm,size=0x40) addr:0x0215e390 -_ZN12ActorUnkRMSS19func_ov063_0215e3d0Ev kind:function(arm,size=0x40) addr:0x0215e3d0 +_ZN12ActorUnkRMSS8vfunc_54Ev kind:function(arm,size=0x40) addr:0x0215e390 +_ZN12ActorUnkRMSS8vfunc_58Ev kind:function(arm,size=0x40) addr:0x0215e3d0 _ZN12ActorUnkRMSSD1Ev kind:function(arm,size=0x28) addr:0x0215e410 _ZN12ActorUnkRMSSD0Ev kind:function(arm,size=0x30) addr:0x0215e438 _ZN19ActorProfileUnkRMSSD1Ev kind:function(arm,size=0x14) addr:0x0215e468 @@ -366,16 +366,16 @@ data_ov063_02164350 kind:data(any) addr:0x02164350 data_ov063_02164360 kind:data(any) addr:0x02164360 data_ov063_02164370 kind:data(any) addr:0x02164370 data_ov063_02164380 kind:data(any) addr:0x02164380 -data_ov063_02164390 kind:data(any) addr:0x02164390 -data_ov063_021643a0 kind:data(any) addr:0x021643a0 -data_ov063_021643b0 kind:data(any) addr:0x021643b0 -data_ov063_021643c0 kind:data(any) addr:0x021643c0 +data_ov063_02162578 kind:data(any) addr:0x02164390 +data_ov063_02162588 kind:data(any) addr:0x021643a0 +data_ov063_02162598 kind:data(any) addr:0x021643b0 +data_ov063_021625a8 kind:data(any) addr:0x021643c0 data_ov063_021625b8 kind:data(any) addr:0x021643d0 data_ov063_021625c8 kind:data(any) addr:0x021643e0 data_ov063_021625d8 kind:data(any) addr:0x021643f0 data_ov063_021625e8 kind:data(any) addr:0x02164400 -data_ov063_02164410 kind:data(any) addr:0x02164410 -data_ov063_02164420 kind:data(any) addr:0x02164420 +data_ov063_021625f8 kind:data(any) addr:0x02164410 +data_ov063_02162608 kind:data(any) addr:0x02164420 data_ov063_0216443c kind:data(any) addr:0x0216443c data_ov063_02164443 kind:data(any) addr:0x02164443 data_ov063_0216444a kind:data(any) addr:0x0216444a @@ -436,22 +436,22 @@ _ZTV19data_ov063_02164f94 kind:data(any) addr:0x02164f94 data_ov063_02164fc0 kind:data(any) addr:0x02164fc0 _ZTV19data_ov063_02164fe4 kind:data(any) addr:0x02164fe4 _ZTV19data_ov063_02165044 kind:data(any) addr:0x02165044 -_ZTV19data_ov063_021650a8 kind:data(any) addr:0x021650a8 -data_ov063_021650cc kind:data(any) addr:0x021650cc -data_ov063_021650e4 kind:data(any) addr:0x021650e4 +_ZTV19ActorProfileUnkRMSV kind:data(any) addr:0x021650a8 +data_ov063_021632ac kind:data(any) addr:0x021650cc +data_ov063_021632c4 kind:data(any) addr:0x021650e4 data_ov063_02165104 kind:data(any) addr:0x02165104 _ZTV19data_ov063_02165144 kind:data(any) addr:0x02165144 _ZTV19data_ov063_0216518c kind:data(any) addr:0x0216518c ambiguous -data_ov063_021651a8 kind:data(any) addr:0x021651a8 -_ZTV19data_ov063_021651c0 kind:data(any) addr:0x021651c0 +data_ov063_02163388 kind:data(any) addr:0x021651a8 +_ZTV19ActorProfileUnkRMSW kind:data(any) addr:0x021651c0 _ZTV19data_ov063_021651e4 kind:data(any) addr:0x021651e4 _ZTV19ActorProfileUnkRMSF kind:data(any) addr:0x02165248 _ZTV12ActorUnkRMSF kind:data(any) addr:0x0216526c -data_ov063_021652d0 kind:data(any) addr:0x021652d0 +data_ov063_021634b0 kind:data(any) addr:0x021652d0 _ZTV19ActorProfileUnkRMSD kind:data(any) addr:0x021652e8 _ZTV12ActorUnkRMSD kind:data(any) addr:0x0216530c -_ZTV19data_ov063_02165370 kind:data(any) addr:0x02165370 -_ZTV19data_ov063_02165394 kind:data(any) addr:0x02165394 +_ZTV19ActorProfileUnkRMSS kind:data(any) addr:0x02165370 +_ZTV12ActorUnkRMSS kind:data(any) addr:0x02165394 _ZTV19data_ov063_021653f8 kind:data(any) addr:0x021653f8 data_ov063_0216541c kind:data(any) addr:0x0216541c data_ov063_02165438 kind:data(any) addr:0x02165438 diff --git a/include/Actor/ActorUnkRMSD.hpp b/include/Actor/ActorUnkRMSD.hpp index d3617295..4c6ccab5 100644 --- a/include/Actor/ActorUnkRMSD.hpp +++ b/include/Actor/ActorUnkRMSD.hpp @@ -4,9 +4,7 @@ #include "Actor/Actor.hpp" #include "Actor/ActorProfile.hpp" -#include "MainGame/AdventureMode.hpp" #include "Render/ModelRender.hpp" -#include "Unknown/Common.hpp" #include "global.h" #include "nns/g3d/g3d.h" #include "types.h" @@ -41,13 +39,12 @@ public: ActorUnkRMSD(); + /* 18 */ virtual unk32 vfunc_18(void) override; + /* 20 */ virtual void vfunc_20(void) override; + /* 24 */ virtual void vfunc_24(void) override; /* 4C */ virtual ~ActorUnkRMSD() override; - - void func_ov063_0215c408(void); - void func_ov063_0215c45c(void); - void func_ov063_0215c474(void); - G3d_Model *func_ov063_0215c488(void); //! INFO: G3d_Model deduced from RMSF - G3d_Model *func_ov063_0215c4c8(void); //! INFO: same as above + /* 54 */ virtual G3d_Model *vfunc_54(void); + /* 58 */ virtual G3d_Model *vfunc_58(void); }; class ActorProfileUnkRMSD : public ActorProfile_Derived1 { diff --git a/include/Actor/ActorUnkRMSS.hpp b/include/Actor/ActorUnkRMSS.hpp index 14277885..13ab7b6a 100644 --- a/include/Actor/ActorUnkRMSS.hpp +++ b/include/Actor/ActorUnkRMSS.hpp @@ -4,7 +4,9 @@ #include "Actor/Actor.hpp" #include "Actor/ActorProfile.hpp" +#include "Actor/ActorUnkRMSD.hpp" #include "global.h" +#include "nns/g3d/g3d.h" #include "types.h" class ActorUnkRMSS_C4 : public Actor_C4 { @@ -17,17 +19,17 @@ public: /* 0C */ virtual void vfunc_0C(unk32 param1) override; }; -class ActorUnkRMSS : public Actor { +class ActorUnkRMSS : public ActorUnkRMSBase { public: /* 00 (base) */ - /* 94 */ + /* 158 */ ActorUnkRMSS(); /* 4C */ virtual ~ActorUnkRMSS() override; - void func_ov063_0215c5fc(void); - void func_ov063_0215c63c(void); + /* 54 */ virtual G3d_Model *vfunc_54(void); + /* 58 */ virtual G3d_Model *vfunc_58(void); }; class ActorProfileUnkRMSS : public ActorProfile_Derived1 { diff --git a/include/Actor/ActorUnkRMSV.hpp b/include/Actor/ActorUnkRMSV.hpp index 97f1bf7a..19363f9f 100644 --- a/include/Actor/ActorUnkRMSV.hpp +++ b/include/Actor/ActorUnkRMSV.hpp @@ -5,6 +5,7 @@ #include "Actor/Actor.hpp" #include "Actor/ActorProfile.hpp" #include "global.h" +#include "nns/g3d/g3d.h" #include "types.h" class ActorUnkRMSV_C4 : public Actor_C4 { @@ -17,25 +18,30 @@ public: /* 0C */ virtual void vfunc_0C(unk32 param1) override; }; -class ActorUnkRMSV : public Actor { +class ActorUnkRMSV : public Actor { //! INFO: ActorUnkRMSBase ? -> weirdly doesn't match first dtor public: /* 00 (base) */ - /* 94 */ + /* 94 */ STRUCT_PAD(0x94, 0x158); + /* 158 */ unk32 mUnk_158; //! INFO: Some class with a vfunc_34 + /* 15C */ STRUCT_PAD(0x15C, 0x1D4); //! INFO: Force alignment to match ::Create + /* 1D4 */ unk32 mUnk_1D4; //! INFO: Some class with a vfunc_34 + /* 1D8 */ STRUCT_PAD(0x1D8, 0x250); //! INFO: Force alignment to match ::Create + /* 250 */ ActorUnkRMSV(); + /* 18 */ virtual unk32 vfunc_18(void); + /* 20 */ virtual void vfunc_20(void); + /* 24 */ virtual void vfunc_24(void); /* 4C */ virtual ~ActorUnkRMSV() override; + /* 50 */ virtual void vfunc_50(void); // dtor, override? + /* 54 */ virtual G3d_Model *vfunc_54(void); + /* 58 */ virtual G3d_Model *vfunc_58(void); void func_ov063_0215bd44(void); - void func_ov063_0215bd58(void); void func_ov063_0215bdec(void); - void func_ov063_0215be10(void); - void func_ov063_0215be3c(void); - void func_ov063_0215be50(void); - void func_ov063_0215be90(void); void func_ov063_0215bed0(void); void func_ov063_0215bee0(void); - void func_ov063_0215bf3c(void); }; class ActorProfileUnkRMSV : public ActorProfile_Derived1 { diff --git a/include/Actor/ActorUnkRMSW.hpp b/include/Actor/ActorUnkRMSW.hpp index 14e8b386..6b1fb3c3 100644 --- a/include/Actor/ActorUnkRMSW.hpp +++ b/include/Actor/ActorUnkRMSW.hpp @@ -4,9 +4,20 @@ #include "Actor/Actor.hpp" #include "Actor/ActorProfile.hpp" +#include "Actor/ActorUnkRMSD.hpp" #include "global.h" +#include "nns/g3d/g3d.h" #include "types.h" +struct UnkStruct_data_ov063_02163388 { + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0C */ unk32 mUnk_0C; + /* 10 */ unk32 mUnk_10; + /* 14 */ unk32 mUnk_14; +}; + class ActorUnkRMSW_C4 : public Actor_C4 { public: ActorUnkRMSW_C4(Actor *param1); @@ -17,20 +28,23 @@ public: /* 0C */ virtual void vfunc_0C(unk32 param1) override; }; -class ActorUnkRMSW : public Actor { +class ActorUnkRMSW : public ActorUnkRMSBase { public: /* 00 (base) */ - /* 94 */ + /* 158 */ unk32 mUnk_158; //! INFO: Some class with a vfunc_34 + /* 15C */ STRUCT_PAD(0x15C, 0x1D4); //! INFO: Force alignment to match ::Create + /* 1D4 */ ActorUnkRMSW(); + /* 18 */ virtual unk32 vfunc_18(void); + /* 20 */ virtual void vfunc_20(void); + /* 24 */ virtual void vfunc_24(void); + /* 4C */ virtual ~ActorUnkRMSW() override; - void func_ov063_0215c05c(void); - void func_ov063_0215c0b0(void); - void func_ov063_0215c0c8(void); - void func_ov063_0215c0dc(void); - void func_ov063_0215c11c(void); + /* 54 */ virtual G3d_Model *vfunc_54(void); + /* 58 */ virtual G3d_Model *vfunc_58(void); }; class ActorProfileUnkRMSW : public ActorProfile_Derived1 { diff --git a/src/063_Shrine/Actor/ActorUnkRMSD.cpp b/src/063_Shrine/Actor/ActorUnkRMSD.cpp index 8c0813f1..b46c4464 100644 --- a/src/063_Shrine/Actor/ActorUnkRMSD.cpp +++ b/src/063_Shrine/Actor/ActorUnkRMSD.cpp @@ -2,17 +2,22 @@ #include "Actor/ActorUnkRMSD.hpp" +#include "Actor/ActorUnkRMSW.hpp" #include "Render/ModelRender.hpp" #include "nns/g3d/g3d.h" #include "profile.hpp" - -extern "C" void func_ov073_0215bb34(ActorUnkRMSD *); - -DECL_PROFILE(ActorProfileUnkRMSD); +#include "types.h" char data_ov063_021625d8[0x10]; // = "RMSD_wall"; char data_ov063_021625e8[0x10]; // = "RMSD"; +extern struct UnkStruct_data_ov063_02163388 data_ov063_021634b0; // = {0, 0x44534D52, 0, 0, 0, 0}; + +extern "C" void func_ov000_02099ff8(unk32 *param1, struct UnkStruct_data_ov063_02163388 param2, unk32 param8); +extern "C" unk32 func_ov063_0215bb34(ActorUnkRMSD *); + +DECL_PROFILE(ActorProfileUnkRMSD); + Actor *ActorProfileUnkRMSD::Create() { return new(HeapIndex_2) ActorUnkRMSD(); } @@ -29,20 +34,24 @@ ActorUnkRMSD::ActorUnkRMSD() { r0->vfunc_04(); } -void ActorUnkRMSD::func_ov063_0215c408(void) {} +unk32 ActorUnkRMSD::vfunc_18(void) { + unk32 res = func_ov063_0215bb34(this); + func_ov000_02099ff8(&this->mUnk_158, data_ov063_021634b0, 0x1000); + return res; +} -void ActorUnkRMSD::func_ov063_0215c45c(void) { +void ActorUnkRMSD::vfunc_20(void) { (*(Actor *) &this->mUnk_158).vfunc_34(); // Not an Actor } -void ActorUnkRMSD::func_ov063_0215c474(void) { +void ActorUnkRMSD::vfunc_24(void) { this->vfunc_20(); } -G3d_Model *ActorUnkRMSD::func_ov063_0215c488(void) { +G3d_Model *ActorUnkRMSD::vfunc_54(void) { return GetModelFromProfile3(&GET_PROFILE(ActorProfileUnkRMSD)->mUnk_3C, data_ov063_021625e8); } -G3d_Model *ActorUnkRMSD::func_ov063_0215c4c8(void) { +G3d_Model *ActorUnkRMSD::vfunc_58(void) { return GetModelFromProfile3(&GET_PROFILE(ActorProfileUnkRMSD)->mUnk_3C, data_ov063_021625d8); } diff --git a/src/063_Shrine/Actor/ActorUnkRMSS.cpp b/src/063_Shrine/Actor/ActorUnkRMSS.cpp index f1e65284..81a841d1 100644 --- a/src/063_Shrine/Actor/ActorUnkRMSS.cpp +++ b/src/063_Shrine/Actor/ActorUnkRMSS.cpp @@ -1,7 +1,11 @@ //! TODO: This file was generated automatically and might contain errors #include "Actor/ActorUnkRMSS.hpp" -#include "System/SysNew.hpp" +#include "nns/g3d/g3d.h" +#include "profile.hpp" + +extern char data_ov063_021625f8[0x10]; // = "RMSS_wall"; +extern char data_ov063_02162608[0x10]; // = "RMSS"; DECL_PROFILE(ActorProfileUnkRMSS); @@ -14,8 +18,13 @@ ActorProfileUnkRMSS::ActorProfileUnkRMSS() : ActorUnkRMSS::ActorUnkRMSS() {} -void ActorUnkRMSS::func_ov063_0215c5fc(void) {} -void ActorUnkRMSS::func_ov063_0215c63c(void) {} +G3d_Model *ActorUnkRMSS::vfunc_54(void) { + return GetModelFromProfile3(&GET_PROFILE(ActorProfileUnkRMSS)->mUnk_3C, data_ov063_02162608); +} + +G3d_Model *ActorUnkRMSS::vfunc_58(void) { + return GetModelFromProfile3(&GET_PROFILE(ActorProfileUnkRMSS)->mUnk_3C, data_ov063_021625f8); +} ActorUnkRMSS::~ActorUnkRMSS() {} ActorProfileUnkRMSS::~ActorProfileUnkRMSS() {} diff --git a/src/063_Shrine/Actor/ActorUnkRMSV.cpp b/src/063_Shrine/Actor/ActorUnkRMSV.cpp index 4fd4bafe..86cd3747 100644 --- a/src/063_Shrine/Actor/ActorUnkRMSV.cpp +++ b/src/063_Shrine/Actor/ActorUnkRMSV.cpp @@ -1,7 +1,20 @@ //! TODO: This file was generated automatically and might contain errors #include "Actor/ActorUnkRMSV.hpp" -#include "System/SysNew.hpp" +#include "Actor/Actor.hpp" +#include "Actor/ActorUnkRMSW.hpp" +#include "MapObject/MapObjectTreasureSpawned.hpp" +#include "nns/g3d/g3d.h" + +char data_ov063_02162578[0x10]; // = "RMSV"; +char data_ov063_02162588[0x10]; // = "RMSV_wall"; + +extern struct UnkStruct_data_ov063_02163388 data_ov063_021632ac; // = {0, 0x56534D52, 0, 0, 0, 0}; +extern struct UnkStruct_data_ov063_02163388 data_ov063_021632c4; // = {0x1, 0x56534D52, 0, 0, 0, 0}; + +extern "C" void func_ov000_02099ff8(unk32 *param1, struct UnkStruct_data_ov063_02163388 param2, unk32 param8); +extern "C" void func_ov000_02099e58(unk32 *param1, struct UnkStruct_data_ov063_02163388 param2, unk32 param8); +extern "C" unk32 func_ov063_0215bb34(ActorUnkRMSV *); DECL_PROFILE(ActorProfileUnkRMSV); @@ -14,16 +27,37 @@ ActorProfileUnkRMSV::ActorProfileUnkRMSV() : ActorUnkRMSV::ActorUnkRMSV() {} +unk32 ActorUnkRMSV::vfunc_18(void) { + unk32 res = func_ov063_0215bb34(this); + func_ov000_02099ff8(&this->mUnk_158, data_ov063_021632ac, 0x1000); + func_ov000_02099e58(&this->mUnk_1D4, data_ov063_021632c4, 0x1000); + ((MapObjectTreasureSpawned *) &this->mUnk_1D4)->vfunc_3C(); //! WARN: NOT a MapObjectTreasureSpawned + return res; +} + +void ActorUnkRMSV::vfunc_20(void) { + (*(Actor *) &this->mUnk_158).vfunc_34(); // Not an Actor + (*(Actor *) &this->mUnk_1D4).vfunc_34(); // Not an Actor +} + +void ActorUnkRMSV::vfunc_24(void) { + this->vfunc_20(); +} + +void ActorUnkRMSV::vfunc_50(void) {} + +G3d_Model *ActorUnkRMSV::vfunc_54(void) { + return GetModelFromProfile3(&GET_PROFILE(ActorProfileUnkRMSV)->mUnk_3C, data_ov063_02162578); +} + +G3d_Model *ActorUnkRMSV::vfunc_58(void) { + return GetModelFromProfile3(&GET_PROFILE(ActorProfileUnkRMSV)->mUnk_3C, data_ov063_02162588); +} + void ActorUnkRMSV::func_ov063_0215bd44(void) {} -void ActorUnkRMSV::func_ov063_0215bd58(void) {} void ActorUnkRMSV::func_ov063_0215bdec(void) {} -void ActorUnkRMSV::func_ov063_0215be10(void) {} -void ActorUnkRMSV::func_ov063_0215be3c(void) {} -void ActorUnkRMSV::func_ov063_0215be50(void) {} -void ActorUnkRMSV::func_ov063_0215be90(void) {} void ActorUnkRMSV::func_ov063_0215bed0(void) {} void ActorUnkRMSV::func_ov063_0215bee0(void) {} -void ActorUnkRMSV::func_ov063_0215bf3c(void) {} ActorUnkRMSV::~ActorUnkRMSV() {} ActorProfileUnkRMSV::~ActorProfileUnkRMSV() {} diff --git a/src/063_Shrine/Actor/ActorUnkRMSW.cpp b/src/063_Shrine/Actor/ActorUnkRMSW.cpp index 0e759944..4fcaca55 100644 --- a/src/063_Shrine/Actor/ActorUnkRMSW.cpp +++ b/src/063_Shrine/Actor/ActorUnkRMSW.cpp @@ -1,7 +1,16 @@ //! TODO: This file was generated automatically and might contain errors #include "Actor/ActorUnkRMSW.hpp" -#include "System/SysNew.hpp" +#include "nns/g3d/g3d.h" +#include "types.h" + +char data_ov063_02162598[0x10]; // = "RMSW_wall"; +char data_ov063_021625a8[0x10]; // = "RMSW"; + +extern struct UnkStruct_data_ov063_02163388 data_ov063_02163388; // = {0, 0x57534D52, 0, 0, 0, 0}; + +extern "C" void func_ov000_02099ff8(unk32 *param1, struct UnkStruct_data_ov063_02163388 param2, unk32 param8); +extern "C" unk32 func_ov063_0215bb34(ActorUnkRMSW *); DECL_PROFILE(ActorProfileUnkRMSW); @@ -14,11 +23,27 @@ ActorProfileUnkRMSW::ActorProfileUnkRMSW() : ActorUnkRMSW::ActorUnkRMSW() {} -void ActorUnkRMSW::func_ov063_0215c05c(void) {} -void ActorUnkRMSW::func_ov063_0215c0b0(void) {} -void ActorUnkRMSW::func_ov063_0215c0c8(void) {} -void ActorUnkRMSW::func_ov063_0215c0dc(void) {} -void ActorUnkRMSW::func_ov063_0215c11c(void) {} +unk32 ActorUnkRMSW::vfunc_18(void) { + unk32 res = func_ov063_0215bb34(this); + func_ov000_02099ff8(&this->mUnk_158, data_ov063_02163388, 0x1000); + return res; +} + +void ActorUnkRMSW::vfunc_20(void) { + (*(Actor *) &this->mUnk_158).vfunc_34(); // Not an Actor +} + +void ActorUnkRMSW::vfunc_24(void) { + this->vfunc_20(); +} + +G3d_Model *ActorUnkRMSW::vfunc_54(void) { + return GetModelFromProfile3(&GET_PROFILE(ActorProfileUnkRMSW)->mUnk_3C, data_ov063_021625a8); +} + +G3d_Model *ActorUnkRMSW::vfunc_58(void) { + return GetModelFromProfile3(&GET_PROFILE(ActorProfileUnkRMSW)->mUnk_3C, data_ov063_02162598); +} ActorUnkRMSW::~ActorUnkRMSW() {} ActorProfileUnkRMSW::~ActorProfileUnkRMSW() {}