Started decompiling ActorHeart (#41)

* feat: change symbols for ActorHeart

* feat: begin ActorHeart decompilation

* feat: continue decompilation (some changes should be refactored)

* improvements

* fix build issues

* feat: improve matching code

* fix: remove back nitro/math

* feat: load s8 as u8

* refactor: remove shady variadic function

* feat: better function, reg order issue

* refactor: switch EC, F0 and F4 to a single VecFx32 variable and improve vfunc_20

* feat: improvements in vfunc_v20

* docs: add what should be written in comments

* feat: match with temporary unknown actor structure

* style: remove unnecessary curly brackets in switch cases

* style: move external functions to the top

* docs: mark unmatched functions as non-matching

* refactor: use FLOAT_TO_Q20 instead of raw hex values

* style: remove unnecessary cast

* refactor: use macros to manipulate flags

* refactor: better floating values

* refactor: use hex values over bin values

* feat: use ROUND_Q20 to increase matching

* refactor: use Cylinder::Init instead of assigning each variable

* refactor: change mangled names

---------

Co-authored-by: Yanis002 <35189056+Yanis002@users.noreply.github.com>
This commit is contained in:
Alessevan
2026-05-29 13:02:57 -04:00
committed by GitHub
parent 69ef244371
commit 905ceeb4b3
16 changed files with 679 additions and 223 deletions
+1 -1
View File
@@ -209,7 +209,7 @@ _ZN16MapObjectManager13func_01fff4ccEPFvPvS0_ES0_ kind:function(arm,size=0x54) a
_ZN16MapObjectManager13func_01fff520EP24UnkStruct_ov000_020b34c4PP9MapObject kind:function(arm,size=0x64) addr:0x01fff520
_ZN9MapObject14GetMapObjectIdEv kind:function(arm,size=0xc) addr:0x01fff584
_ZN9MapObject13func_01fff590Ei kind:function(arm,size=0x40) addr:0x01fff590
_ZN10ActorRupee13func_01fff5d0Eii kind:function(arm,size=0x3c) addr:0x01fff5d0
_ZN5Actor13func_01fff5d0Eii kind:function(arm,size=0x3c) addr:0x01fff5d0
_ZN18UnkStruct_027e09b413func_01fff60cEiiihii kind:function(arm,size=0x8c) addr:0x01fff60c
func_01fff698 kind:function(arm,size=0x38) addr:0x01fff698
_ZN21UnkStruct_027e0cd8_1013func_01fff6d0EP7VecFx32PiS2_ kind:function(arm,size=0x74) addr:0x01fff6d0
+2 -2
View File
@@ -1932,7 +1932,7 @@ func_ov000_0208bbd4 kind:function(arm,size=0x2c) addr:0x0208bbd4
func_ov000_0208bc00 kind:function(arm,size=0x1c) addr:0x0208bc00
func_ov000_0208bc1c kind:function(arm,size=0x40) addr:0x0208bc1c
func_ov000_0208bc5c kind:function(arm,size=0x40) addr:0x0208bc5c
func_ov000_0208bc9c kind:function(arm,size=0x84) addr:0x0208bc9c
_ZN18UnkStruct_027e0ce019func_ov000_0208bc9cEii kind:function(arm,size=0x84) addr:0x0208bc9c
func_ov000_0208bd20 kind:function(arm,size=0x10) addr:0x0208bd20
func_ov000_0208bd30 kind:function(arm,size=0x18) addr:0x0208bd30
func_ov000_0208bd48 kind:function(arm,size=0x34) addr:0x0208bd48
@@ -2254,7 +2254,7 @@ func_ov000_02097244 kind:function(arm,size=0x44) addr:0x02097244
func_ov000_02097288 kind:function(arm,size=0x154) addr:0x02097288
_ZN24UnkStruct_ov000_020b539c18func_ov000_02073dcEv kind:function(arm,size=0xc) addr:0x020973dc
_ZN24UnkStruct_ov000_020b539c18func_ov000_02073e8Ev kind:function(arm,size=0xc) addr:0x020973e8
func_ov000_020973f4 kind:function(arm,size=0x50) addr:0x020973f4
_ZN5Actor19func_ov000_020973f4EP24UnkStruct_ov000_020b539cjP11ActorParamsi kind:function(arm,size=0x50) addr:0x020973f4
func_ov000_02097444 kind:function(arm,size=0x98) addr:0x02097444
_ZN24UnkStruct_ov000_020b539c16GetProfileFromIdEj kind:function(arm,size=0x4c) addr:0x020974dc
func_ov000_02097528 kind:function(arm,size=0x20) addr:0x02097528
+2 -2
View File
@@ -66,7 +66,7 @@ func_ov017_020bf2d8 kind:function(arm,size=0x108) addr:0x020bf2d8
func_ov017_020bf3e0 kind:function(arm,size=0xd0) addr:0x020bf3e0
func_ov017_020bf4b0 kind:function(arm,size=0xc4) addr:0x020bf4b0
func_ov017_020bf574 kind:function(arm,size=0x50) addr:0x020bf574
func_ov017_020bf5c4 kind:function(arm,size=0x70) addr:0x020bf5c4
_ZN5Actor19func_ov017_020bf5c4EP7VecFx32iiii kind:function(arm,size=0x70) addr:0x020bf5c4
func_ov017_020bf634 kind:function(arm,size=0x54) addr:0x020bf634
func_ov017_020bf688 kind:function(arm,size=0x88) addr:0x020bf688
func_ov017_020bf710 kind:function(arm,size=0x98) addr:0x020bf710
@@ -75,7 +75,7 @@ func_ov017_020bf894 kind:function(arm,size=0x60) addr:0x020bf894
_ZN5Actor8vfunc_40Ev kind:function(arm,size=0x44) addr:0x020bf8f4
_ZN5Actor8vfunc_44Ev kind:function(arm,size=0x64) addr:0x020bf938
func_ov017_020bf99c kind:function(arm,size=0x2c) addr:0x020bf99c
_ZN10ActorRupee19func_ov017_020bf9c8EP27UnkStruct_func_01fff3b4_ret kind:function(arm,size=0x88) addr:0x020bf9c8
_ZN5Actor19func_ov017_020bf9c8EPS_ kind:function(arm,size=0x88) addr:0x020bf9c8
func_ov017_020bfa50 kind:function(arm,size=0x84) addr:0x020bfa50
func_ov017_020bfad4 kind:function(arm,size=0x44) addr:0x020bfad4
func_ov017_020bfb18 kind:function(arm,size=0x238) addr:0x020bfb18
+2 -1
View File
@@ -63,10 +63,11 @@ src/031_Land/Actor/ActorUnkZLSL_ZSRS.cpp:
.ctor start:0x021127bc end:0x021127c0
.bss start:0x0211672c end:0x02116858
src/031_Land/Actor/ActorUnkHERT.cpp:
src/031_Land/Actor/ActorHeart.cpp:
.text start:0x020eecf4 end:0x020ef81c
.init start:0x0211139c end:0x02111408
.ctor start:0x021127c0 end:0x021127c4
.data start:0x02113d64 end:0x02113e6c
.bss start:0x02116858 end:0x021168a4
src/031_Land/Actor/ActorUnkRMTG.cpp:
+1 -1
View File
@@ -2492,7 +2492,7 @@ from:0x020ef650 kind:arm_call to:0x0205c1f0 module:overlay(0)
from:0x020ef688 kind:arm_call to:0x0205c204 module:overlay(0)
from:0x020ef6d4 kind:arm_call to:0x020ef570 module:overlay(31)
from:0x020ef70c kind:arm_call to:0x020f6284 module:overlay(31)
from:0x020ef72c kind:load to:0x02113ddc module:overlay(31)
from:0x020ef72c kind:load to:0x02113dd4 add:0x8 module:overlay(31)
from:0x020ef754 kind:arm_call to:0x020ef1b4 module:overlay(31)
from:0x020ef764 kind:arm_call to:0x020f62e4 module:overlay(31)
from:0x020ef784 kind:arm_call to:0x020ef1b4 module:overlay(31)
+41 -41
View File
@@ -728,40 +728,40 @@ func_ov031_020eeb18 kind:function(arm,size=0x40) addr:0x020eeb18
func_ov031_020eeb58 kind:function(arm,size=0x150) addr:0x020eeb58
func_ov031_020eeca8 kind:function(arm,size=0x40) addr:0x020eeca8
func_ov031_020eece8 kind:function(arm,size=0xc) addr:0x020eece8
_ZN19ActorProfileUnkHERT10GetProfileEv kind:function(arm,size=0xc) addr:0x020eecf4
_ZN19ActorProfileUnkHERT6CreateEv kind:function(arm,size=0x24) addr:0x020eed00
_ZN19ActorProfileUnkHERTC1Ev kind:function(arm,size=0x40) addr:0x020eed24
_ZN12ActorUnkHERT19func_ov031_020eed64Ev kind:function(arm,size=0x7c) addr:0x020eed64
_ZN12ActorUnkHERTC1Ev kind:function(arm,size=0xf8) addr:0x020eede0
_ZN12ActorUnkHERT19func_ov031_020eeed8Ev kind:function(arm,size=0x10) addr:0x020eeed8
_ZN12ActorUnkHERT19func_ov031_020eeee8Ev kind:function(arm,size=0x2cc) addr:0x020eeee8
_ZN12ActorUnkHERT19func_ov031_020ef1b4Ev kind:function(arm,size=0x54) addr:0x020ef1b4
_ZN12ActorUnkHERT19func_ov031_020ef208Ev kind:function(arm,size=0xe4) addr:0x020ef208
_ZN12ActorUnkHERT19func_ov031_020ef2ecEv kind:function(arm,size=0xc) addr:0x020ef2ec
_ZN12ActorUnkHERT19func_ov031_020ef2f8Ev kind:function(arm,size=0x28) addr:0x020ef2f8
_ZN12ActorUnkHERT19func_ov031_020ef320Ev kind:function(arm,size=0x14) addr:0x020ef320
_ZN12ActorUnkHERT19func_ov031_020ef334Ev kind:function(arm,size=0x28) addr:0x020ef334
_ZN12ActorUnkHERT19func_ov031_020ef35cEv kind:function(arm,size=0x44) addr:0x020ef35c
_ZN12ActorUnkHERT19func_ov031_020ef3a0Ev kind:function(arm,size=0x18) addr:0x020ef3a0
_ZN12ActorUnkHERT19func_ov031_020ef3b8Ev kind:function(arm,size=0x18) addr:0x020ef3b8
_ZN12ActorUnkHERT19func_ov031_020ef3d0Ev kind:function(arm,size=0x60) addr:0x020ef3d0
_ZN12ActorUnkHERT19func_ov031_020ef430Ev kind:function(arm,size=0x14) addr:0x020ef430
_ZN12ActorUnkHERT19func_ov031_020ef444Ev kind:function(arm,size=0x4) addr:0x020ef444
_ZN12ActorUnkHERT19func_ov031_020ef448Ev kind:function(arm,size=0x10) addr:0x020ef448
_ZN12ActorUnkHERT19func_ov031_020ef458Ev kind:function(arm,size=0x50) addr:0x020ef458
_ZN12ActorUnkHERT19func_ov031_020ef4a8Ev kind:function(arm,size=0x80) addr:0x020ef4a8
_ZN12ActorUnkHERT19func_ov031_020ef528Ev kind:function(arm,size=0x48) addr:0x020ef528
_ZN12ActorUnkHERT19func_ov031_020ef570Ev kind:function(arm,size=0x78) addr:0x020ef570
_ZN12ActorUnkHERT19func_ov031_020ef5e8Ev kind:function(arm,size=0xb0) addr:0x020ef5e8
_ZN12ActorUnkHERT19func_ov031_020ef698Ev kind:function(arm,size=0x60) addr:0x020ef698
_ZN12ActorUnkHERT19func_ov031_020ef6f8Ev kind:function(arm,size=0x38) addr:0x020ef6f8
_ZN12ActorUnkHERT19func_ov031_020ef730Ev kind:function(arm,size=0x44) addr:0x020ef730
_ZN12ActorUnkHERT19func_ov031_020ef774Ev kind:function(arm,size=0x20) addr:0x020ef774
_ZN12ActorUnkHERT19func_ov031_020ef794Ev kind:function(arm,size=0x28) addr:0x020ef794
_ZN12ActorUnkHERT19func_ov031_020ef7bcEv kind:function(arm,size=0x1c) addr:0x020ef7bc
_ZN12ActorUnkHERTD0Ev kind:function(arm,size=0x1c) addr:0x020ef7d8
_ZN12ActorUnkHERTD2Ev kind:function(arm,size=0x14) addr:0x020ef7f4
_ZN19ActorProfileUnkHERTD1Ev kind:function(arm,size=0x14) addr:0x020ef808
_ZN17ActorProfileHeart10GetProfileEv kind:function(arm,size=0xc) addr:0x020eecf4
_ZN17ActorProfileHeart6CreateEv kind:function(arm,size=0x24) addr:0x020eed00
_ZN17ActorProfileHeartC1Ev kind:function(arm,size=0x40) addr:0x020eed24
_ZN10ActorHeart19func_ov031_020eed64EP11ActorParamsii kind:function(arm,size=0x7c) addr:0x020eed64
_ZN10ActorHeartC1Ev kind:function(arm,size=0xf8) addr:0x020eede0
_ZN10ActorHeart8vfunc_18Ei kind:function(arm,size=0x10) addr:0x020eeed8
_ZN10ActorHeart8vfunc_20Ev kind:function(arm,size=0x2cc) addr:0x020eeee8
_ZN10ActorHeart19func_ov031_020ef1b4Es kind:function(arm,size=0x54) addr:0x020ef1b4
_ZN10ActorHeart19func_ov031_020ef208Ev kind:function(arm,size=0xe4) addr:0x020ef208
_ZN10ActorHeart19func_ov031_020ef2ecEv kind:function(arm,size=0xc) addr:0x020ef2ec
_ZN10ActorHeart19func_ov031_020ef2f8Ev kind:function(arm,size=0x28) addr:0x020ef2f8
_ZN10ActorHeart19func_ov031_020ef320Ev kind:function(arm,size=0x14) addr:0x020ef320
_ZN10ActorHeart19func_ov031_020ef334Ev kind:function(arm,size=0x28) addr:0x020ef334
_ZN10ActorHeart19func_ov031_020ef35cEv kind:function(arm,size=0x44) addr:0x020ef35c
_ZN10ActorHeart19func_ov031_020ef3a0Ev kind:function(arm,size=0x18) addr:0x020ef3a0
_ZN10ActorHeart19func_ov031_020ef3b8Ev kind:function(arm,size=0x18) addr:0x020ef3b8
_ZN10ActorHeart19func_ov031_020ef3d0Ev kind:function(arm,size=0x60) addr:0x020ef3d0
_ZN10ActorHeart19func_ov031_020ef430Ev kind:function(arm,size=0x14) addr:0x020ef430
_ZN10ActorHeart19func_ov031_020ef444Ev kind:function(arm,size=0x4) addr:0x020ef444
_ZN10ActorHeart19func_ov031_020ef448Ev kind:function(arm,size=0x10) addr:0x020ef448
_ZN10ActorHeart19func_ov031_020ef458Ev kind:function(arm,size=0x50) addr:0x020ef458
_ZN10ActorHeart19func_ov031_020ef4a8Ev kind:function(arm,size=0x80) addr:0x020ef4a8
_ZN10ActorHeart19func_ov031_020ef528Ev kind:function(arm,size=0x48) addr:0x020ef528
_ZN10ActorHeart19func_ov031_020ef570Ev kind:function(arm,size=0x78) addr:0x020ef570
_ZN10ActorHeart8vfunc_2cEi kind:function(arm,size=0xb0) addr:0x020ef5e8
_ZN10ActorHeart19func_ov031_020ef698Ev kind:function(arm,size=0x60) addr:0x020ef698
_ZN13ActorHeart_c4C1EP5Actor kind:function(arm,size=0x38) addr:0x020ef6f8
_ZN13ActorHeart_c48vfunc_00E14Actor_c4_stacki kind:function(arm,size=0x44) addr:0x020ef730
_ZN13ActorHeart_c48vfunc_04Ev kind:function(arm,size=0x20) addr:0x020ef774
_ZN13ActorHeart_c48vfunc_0cEi kind:function(arm,size=0x28) addr:0x020ef794
_ZN13ActorHeart_c48vfunc_08Ev kind:function(arm,size=0x1c) addr:0x020ef7bc
_ZN10ActorHeartD0Ev kind:function(arm,size=0x1c) addr:0x020ef7d8
_ZN10ActorHeartD1Ev kind:function(arm,size=0x14) addr:0x020ef7f4
_ZN17ActorProfileHeartD1Ev kind:function(arm,size=0x14) addr:0x020ef808
_ZN19ActorProfileUnkRMTG10GetProfileEv kind:function(arm,size=0xc) addr:0x020ef81c
_ZN19ActorProfileUnkRMTG6CreateEv kind:function(arm,size=0x24) addr:0x020ef828
_ZN19ActorProfileUnkRMTGC1Ev kind:function(arm,size=0x28) addr:0x020ef84c
@@ -2079,7 +2079,7 @@ __sinit_ActorUnkSWBM.cpp kind:function(arm,size=0x74) addr:0x021111ac
__sinit_ActorUnkROCK.cpp kind:function(arm,size=0x50) addr:0x02111220
__sinit_ActorRupee.cpp kind:function(arm,size=0x98) addr:0x02111270
__sinit_ActorUnkZLSL_ZSRS.cpp kind:function(arm,size=0x94) addr:0x02111308
__sinit_ActorUnkHERT.cpp kind:function(arm,size=0x6c) addr:0x0211139c
__sinit_ActorHeart.cpp kind:function(arm,size=0x6c) addr:0x0211139c
__sinit_ActorUnkRMTG.cpp kind:function(arm,size=0x50) addr:0x02111408
__sinit_ActorUnkSCCN.cpp kind:function(arm,size=0x50) addr:0x02111458
__sinit_ActorUnkNTUB.cpp kind:function(arm,size=0x50) addr:0x021114a8
@@ -2143,7 +2143,7 @@ __sinit_MapObjectUnkSWFS.cpp kind:function(arm,size=0x70) addr:0x02112724
.p__sinit_ActorUnkROCK.cpp kind:data(word) addr:0x021127b4
.p__sinit_ActorRupee.cpp kind:data(word) addr:0x021127b8
.p__sinit_ActorUnkZLSL_ZSRS.cpp kind:data(word) addr:0x021127bc
.p__sinit_ActorUnkHERT.cpp kind:data(word) addr:0x021127c0
.p__sinit_ActorHeart.cpp kind:data(word) addr:0x021127c0
.p__sinit_ActorUnkRMTG.cpp kind:data(word) addr:0x021127c4
.p__sinit_ActorUnkSCCN.cpp kind:data(word) addr:0x021127c8
.p__sinit_ActorUnkNTUB.cpp kind:data(word) addr:0x021127cc
@@ -2328,9 +2328,9 @@ data_ov031_02113d58 kind:data(any) addr:0x02113d58
data_ov031_02113d64 kind:data(any) addr:0x02113d64
data_ov031_02113d74 kind:data(any) addr:0x02113d74
data_ov031_02113da4 kind:data(any) addr:0x02113da4
data_ov031_02113ddc kind:data(any) addr:0x02113ddc
_ZTV19data_ov031_02113dec kind:data(any) addr:0x02113dec
_ZTV19data_ov031_02113e10 kind:data(any) addr:0x02113e10
_ZTV13ActorHeart_c4 kind:data(any) addr:0x02113dd4
_ZTV17ActorProfileHeart kind:data(any) addr:0x02113dec
_ZTV10ActorHeart kind:data(any) addr:0x02113e10
_ZTV19data_ov031_02113e6c kind:data(any) addr:0x02113e6c
_ZTV19data_ov031_02113e90 kind:data(any) addr:0x02113e90
_ZTV19data_ov031_02113eec kind:data(any) addr:0x02113eec
@@ -2552,9 +2552,9 @@ _ZGVN15ProfileInstanceI19ActorProfileUnkZLSLE8sProfileE kind:bss addr:0x0211672c
@10824 kind:bss addr:0x02116738
_ZN15ProfileInstanceI19ActorProfileUnkZLSLE8sProfileE kind:bss addr:0x02116744
_ZN15ProfileInstanceI19ActorProfileUnkZSRSE8sProfileE kind:bss addr:0x02116780
_ZGVN15ProfileInstanceI19ActorProfileUnkHERTE8sProfileE kind:bss addr:0x02116858
_ZGVN15ProfileInstanceI17ActorProfileHeartE8sProfileE kind:bss addr:0x02116858
@10830 kind:bss addr:0x0211685c
_ZN15ProfileInstanceI19ActorProfileUnkHERTE8sProfileE kind:bss addr:0x02116868
_ZN15ProfileInstanceI17ActorProfileHeartE8sProfileE kind:bss addr:0x02116868
_ZGVN15ProfileInstanceI19ActorProfileUnkRMTGE8sProfileE kind:bss addr:0x021168a4
@10836 kind:bss addr:0x021168a8
_ZN15ProfileInstanceI19ActorProfileUnkRMTGE8sProfileE kind:bss addr:0x021168b4
+2 -1
View File
@@ -63,10 +63,11 @@ src/031_Land/Actor/ActorUnkZLSL_ZSRS.cpp:
.ctor start:0x02114548 end:0x0211454c
.bss start:0x021184cc end:0x021185f8
src/031_Land/Actor/ActorUnkHERT.cpp:
src/031_Land/Actor/ActorHeart.cpp:
.text start:0x020f06e0 end:0x020f1218
.init start:0x0211310c end:0x02113178
.ctor start:0x0211454c end:0x02114550
.data start:0x02115b04 end:0x02115c0c
.bss start:0x021185f8 end:0x02118644
src/031_Land/Actor/ActorUnkRMTG.cpp:
+44 -44
View File
@@ -728,40 +728,40 @@ func_ov031_020f0504 kind:function(arm,size=0x40) addr:0x020f0504
func_ov031_020f0544 kind:function(arm,size=0x150) addr:0x020f0544
func_ov031_020f0694 kind:function(arm,size=0x40) addr:0x020f0694
func_ov031_020f06d4 kind:function(arm,size=0xc) addr:0x020f06d4
_ZN19ActorProfileUnkHERT10GetProfileEv kind:function(arm,size=0xc) addr:0x020f06e0
_ZN19ActorProfileUnkHERT6CreateEv kind:function(arm,size=0x24) addr:0x020f06ec
_ZN19ActorProfileUnkHERTC1Ev kind:function(arm,size=0x40) addr:0x020f0710
_ZN12ActorUnkHERT19func_ov031_020f0750Ev kind:function(arm,size=0x7c) addr:0x020f0750
_ZN12ActorUnkHERTC1Ev kind:function(arm,size=0xf8) addr:0x020f07cc
_ZN12ActorUnkHERT19func_ov031_020eeed8Ev kind:function(arm,size=0x10) addr:0x020f08c4
_ZN12ActorUnkHERT19func_ov031_020eeee8Ev kind:function(arm,size=0x2cc) addr:0x020f08d4
_ZN12ActorUnkHERT19func_ov031_020ef1b4Ev kind:function(arm,size=0x54) addr:0x020f0ba0
_ZN12ActorUnkHERT19func_ov031_020ef208Ev kind:function(arm,size=0xe4) addr:0x020f0bf4
_ZN12ActorUnkHERT19func_ov031_020ef2ecEv kind:function(arm,size=0xc) addr:0x020f0cd8
_ZN12ActorUnkHERT19func_ov031_020ef2f8Ev kind:function(arm,size=0x28) addr:0x020f0ce4
_ZN12ActorUnkHERT19func_ov031_020ef320Ev kind:function(arm,size=0x14) addr:0x020f0d0c
_ZN12ActorUnkHERT19func_ov031_020ef334Ev kind:function(arm,size=0x28) addr:0x020f0d20
_ZN12ActorUnkHERT19func_ov031_020ef35cEv kind:function(arm,size=0x44) addr:0x020f0d48
_ZN12ActorUnkHERT19func_ov031_020ef3a0Ev kind:function(arm,size=0x18) addr:0x020f0d8c
_ZN12ActorUnkHERT19func_ov031_020ef3b8Ev kind:function(arm,size=0x18) addr:0x020f0da4
_ZN12ActorUnkHERT19func_ov031_020ef3d0Ev kind:function(arm,size=0x60) addr:0x020f0dbc
_ZN12ActorUnkHERT19func_ov031_020ef430Ev kind:function(arm,size=0x14) addr:0x020f0e1c
_ZN12ActorUnkHERT19func_ov031_020ef444Ev kind:function(arm,size=0x4) addr:0x020f0e30
_ZN12ActorUnkHERT19func_ov031_020ef448Ev kind:function(arm,size=0x10) addr:0x020f0e34
_ZN12ActorUnkHERT19func_ov031_020ef458Ev kind:function(arm,size=0x50) addr:0x020f0e44
_ZN12ActorUnkHERT19func_ov031_020ef4a8Ev kind:function(arm,size=0x80) addr:0x020f0e94
_ZN12ActorUnkHERT19func_ov031_020ef528Ev kind:function(arm,size=0x58) addr:0x020f0f14
_ZN12ActorUnkHERT19func_ov031_020ef570Ev kind:function(arm,size=0x78) addr:0x020f0f6c
_ZN12ActorUnkHERT19func_ov031_020ef5e8Ev kind:function(arm,size=0xb0) addr:0x020f0fe4
_ZN12ActorUnkHERT19func_ov031_020ef698Ev kind:function(arm,size=0x60) addr:0x020f1094
_ZN12ActorUnkHERT19func_ov031_020ef6f8Ev kind:function(arm,size=0x38) addr:0x020f10f4
_ZN12ActorUnkHERT19func_ov031_020ef730Ev kind:function(arm,size=0x44) addr:0x020f112c
_ZN12ActorUnkHERT19func_ov031_020ef774Ev kind:function(arm,size=0x20) addr:0x020f1170
_ZN12ActorUnkHERT19func_ov031_020ef794Ev kind:function(arm,size=0x28) addr:0x020f1190
_ZN12ActorUnkHERT19func_ov031_020ef7bcEv kind:function(arm,size=0x1c) addr:0x020f11b8
_ZN12ActorUnkHERTD0Ev kind:function(arm,size=0x1c) addr:0x020f11d4
_ZN12ActorUnkHERTD2Ev kind:function(arm,size=0x14) addr:0x020f11f0
_ZN19ActorProfileUnkHERTD1Ev kind:function(arm,size=0x14) addr:0x020f1204
_ZN17ActorProfileHeart10GetProfileEv kind:function(arm,size=0xc) addr:0x020f06e0
_ZN17ActorProfileHeart6CreateEv kind:function(arm,size=0x24) addr:0x020f06ec
_ZN17ActorProfileHeartC1Ev kind:function(arm,size=0x40) addr:0x020f0710
_ZN10ActorHeart19func_ov031_020f0750Ev kind:function(arm,size=0x7c) addr:0x020f0750
_ZN10ActorHeartC1Ev kind:function(arm,size=0xf8) addr:0x020f07cc
_ZN10ActorHeart8vfunc_18Ei kind:function(arm,size=0x10) addr:0x020f08c4
_ZN10ActorHeart8vfunc_20Ev kind:function(arm,size=0x2cc) addr:0x020f08d4
_ZN10ActorHeart19func_ov031_020ef1b4Es kind:function(arm,size=0x54) addr:0x020f0ba0
_ZN10ActorHeart19func_ov031_020ef208Ev kind:function(arm,size=0xe4) addr:0x020f0bf4
_ZN10ActorHeart19func_ov031_020ef2ecEv kind:function(arm,size=0xc) addr:0x020f0cd8
_ZN10ActorHeart19func_ov031_020ef2f8Ev kind:function(arm,size=0x28) addr:0x020f0ce4
_ZN10ActorHeart19func_ov031_020ef320Ev kind:function(arm,size=0x14) addr:0x020f0d0c
_ZN10ActorHeart19func_ov031_020ef334Ev kind:function(arm,size=0x28) addr:0x020f0d20
_ZN10ActorHeart19func_ov031_020ef35cEv kind:function(arm,size=0x44) addr:0x020f0d48
_ZN10ActorHeart19func_ov031_020ef3a0Ev kind:function(arm,size=0x18) addr:0x020f0d8c
_ZN10ActorHeart19func_ov031_020ef3b8Ev kind:function(arm,size=0x18) addr:0x020f0da4
_ZN10ActorHeart19func_ov031_020ef3d0Ev kind:function(arm,size=0x60) addr:0x020f0dbc
_ZN10ActorHeart19func_ov031_020ef430Ev kind:function(arm,size=0x14) addr:0x020f0e1c
_ZN10ActorHeart19func_ov031_020ef444Ev kind:function(arm,size=0x4) addr:0x020f0e30
_ZN10ActorHeart19func_ov031_020ef448Ev kind:function(arm,size=0x10) addr:0x020f0e34
_ZN10ActorHeart19func_ov031_020ef458Ev kind:function(arm,size=0x50) addr:0x020f0e44
_ZN10ActorHeart19func_ov031_020ef4a8Ev kind:function(arm,size=0x80) addr:0x020f0e94
_ZN10ActorHeart19func_ov031_020ef528Ev kind:function(arm,size=0x58) addr:0x020f0f14
_ZN10ActorHeart19func_ov031_020ef570Ev kind:function(arm,size=0x78) addr:0x020f0f6c
_ZN10ActorHeart8vfunc_2cEi kind:function(arm,size=0xb0) addr:0x020f0fe4
_ZN10ActorHeart19func_ov031_020ef698Ev kind:function(arm,size=0x60) addr:0x020f1094
_ZN13ActorHeart_c4C1EP5Actor kind:function(arm,size=0x38) addr:0x020f10f4
_ZN13ActorHeart_c48vfunc_00E14Actor_c4_stacki kind:function(arm,size=0x44) addr:0x020f112c
_ZN13ActorHeart_c48vfunc_04Ev kind:function(arm,size=0x20) addr:0x020f1170
_ZN13ActorHeart_c48vfunc_0cEi kind:function(arm,size=0x28) addr:0x020f1190
_ZN13ActorHeart_c48vfunc_08Ev kind:function(arm,size=0x1c) addr:0x020f11b8
_ZN10ActorHeartD0Ev kind:function(arm,size=0x1c) addr:0x020f11d4
_ZN10ActorHeartD1Ev kind:function(arm,size=0x14) addr:0x020f11f0
_ZN17ActorProfileHeartD1Ev kind:function(arm,size=0x14) addr:0x020f1204
_ZN19ActorProfileUnkRMTG10GetProfileEv kind:function(arm,size=0xc) addr:0x020f1218
_ZN19ActorProfileUnkRMTG6CreateEv kind:function(arm,size=0x24) addr:0x020f1224
_ZN19ActorProfileUnkRMTGC1Ev kind:function(arm,size=0x28) addr:0x020f1248
@@ -2076,7 +2076,7 @@ __sinit_ActorUnkSWBM.cpp kind:function(arm,size=0x74) addr:0x02112f1c
__sinit_ActorUnkROCK.cpp kind:function(arm,size=0x50) addr:0x02112f90
__sinit_ActorRupee.cpp kind:function(arm,size=0x98) addr:0x02112fe0
__sinit_ActorUnkZLSL_ZSRS.cpp kind:function(arm,size=0x94) addr:0x02113078
__sinit_ActorUnkHERT.cpp kind:function(arm,size=0x6c) addr:0x0211310c
__sinit_ActorHeart.cpp kind:function(arm,size=0x6c) addr:0x0211310c
__sinit_ActorUnkRMTG.cpp kind:function(arm,size=0x50) addr:0x02113178
__sinit_ActorUnkSCCN.cpp kind:function(arm,size=0x50) addr:0x021131c8
__sinit_ActorUnkNTUB.cpp kind:function(arm,size=0x50) addr:0x02113218
@@ -2140,7 +2140,7 @@ __sinit_MapObjectUnkSWFS.cpp kind:function(arm,size=0x70) addr:0x021144b0
.p__sinit_ActorUnkROCK.cpp kind:data(word) addr:0x02114540
.p__sinit_ActorRupee.cpp kind:data(word) addr:0x02114544
.p__sinit_ActorUnkZLSL_ZSRS.cpp kind:data(word) addr:0x02114548
.p__sinit_ActorUnkHERT.cpp kind:data(word) addr:0x0211454c
.p__sinit_ActorHeart.cpp kind:data(word) addr:0x0211454c
.p__sinit_ActorUnkRMTG.cpp kind:data(word) addr:0x02114550
.p__sinit_ActorUnkSCCN.cpp kind:data(word) addr:0x02114554
.p__sinit_ActorUnkNTUB.cpp kind:data(word) addr:0x02114558
@@ -2321,12 +2321,12 @@ data_ov031_021158f8 kind:data(any) addr:0x021158f8
data_ov031_02115aa8 kind:data(any) addr:0x02115aa8
data_ov031_02115ab4 kind:data(any) addr:0x02115ab4
data_ov031_02115af8 kind:data(any) addr:0x02115af8
data_ov031_02115b04 kind:data(any) addr:0x02115b04
data_ov031_02115b14 kind:data(any) addr:0x02115b14
data_ov031_02115b44 kind:data(any) addr:0x02115b44
data_ov031_02115b7c kind:data(any) addr:0x02115b74
_ZTV19data_ov031_02115b8c kind:data(any) addr:0x02115b8c
_ZTV19data_ov031_02115bb0 kind:data(any) addr:0x02115bb0
data_ov031_02113d64 kind:data(any) addr:0x02115b04
data_ov031_02113d74 kind:data(any) addr:0x02115b14
data_ov031_02113da4 kind:data(any) addr:0x02115b44
_ZTV13ActorHeart_c4 kind:data(any) addr:0x02115b74
_ZTV17ActorProfileHeart kind:data(any) addr:0x02115b8c
_ZTV10ActorHeart kind:data(any) addr:0x02115bb0
_ZTV19data_ov031_02115c0c kind:data(any) addr:0x02115c0c
_ZTV19data_ov031_02115c30 kind:data(any) addr:0x02115c30
_ZTV19data_ov031_02115c8c kind:data(any) addr:0x02115c8c
@@ -2547,9 +2547,9 @@ _ZGVN15ProfileInstanceI19ActorProfileUnkZLSLE8sProfileE kind:bss addr:0x021184cc
@30824 kind:bss addr:0x021184d8
_ZN15ProfileInstanceI19ActorProfileUnkZLSLE8sProfileE kind:bss addr:0x021184e4
_ZN15ProfileInstanceI19ActorProfileUnkZSRSE8sProfileE kind:bss addr:0x02118520
_ZGVN15ProfileInstanceI19ActorProfileUnkHERTE8sProfileE kind:bss addr:0x021185f8
_ZGVN15ProfileInstanceI17ActorProfileHeartE8sProfileE kind:bss addr:0x021185f8
@30830 kind:bss addr:0x021185fc
_ZN15ProfileInstanceI19ActorProfileUnkHERTE8sProfileE kind:bss addr:0x02118608
_ZN15ProfileInstanceI17ActorProfileHeartE8sProfileE kind:bss addr:0x02118608
_ZGVN15ProfileInstanceI19ActorProfileUnkRMTGE8sProfileE kind:bss addr:0x02118644
@30836 kind:bss addr:0x02118648
_ZN15ProfileInstanceI19ActorProfileUnkRMTGE8sProfileE kind:bss addr:0x02118654
+16
View File
@@ -61,6 +61,8 @@ public:
ActorProfile *GetProfileFromId(ActorId actorId);
};
class Actor_c4;
typedef u32 ActorFlags;
enum ActorFlag_ {
ActorFlag_Alive = FLAG(0, 0),
@@ -195,6 +197,7 @@ public:
void func_ov000_02098a88(unk32 param1, unk32 param2);
void func_ov017_020bf5c4(VecFx32 *param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5);
void func_ov017_020bf9c8(Actor *param1);
};
struct Actor_c4_stack {
@@ -207,6 +210,19 @@ public:
Actor_c4_Base(void *param1, unk32 param2);
};
class Actor_9c {
public:
/* 00 (vtable) */
/* 04 */
/* 00 */ virtual void vfunc_00(); // corresponds to func_ov000_02097c14
/* 04 */ virtual void vfunc_04(); // corresponds to func_ov000_02097c20
/* 08 */
Actor_9c();
void func_ov000_02097bec();
};
class Actor_c4 : public Actor_c4_Base {
public:
/* 00 (vtable) */
+83
View File
@@ -0,0 +1,83 @@
#pragma once
#include "Actor/Actor.hpp"
#include "Actor/ActorProfile.hpp"
#include "ActorRupee.hpp"
#include "types.h"
class ActorHeart_c4 : public Actor_c4 {
public:
ActorHeart_c4(Actor *param1);
/* 00 */ virtual unk32 vfunc_00(Actor_c4_stack param1, unk32 param2) override;
/* 04 */ virtual void vfunc_04() override;
/* 08 */ virtual void vfunc_08() override;
/* 0C */ virtual void vfunc_0c(unk32 param1) override;
};
class ActorHeart : public Actor {
public:
/* 00 (base) */
/* 94 */ u16 mUnk_94;
/* 96 */ u16 mUnk_96;
/* 98 */ Actor_9c mUnk_98;
/* 9C */ unk32 mUnk_9C;
/* A0 */ unk32 mUnk_A0;
/* A4 */ unk32 mUnk_A4;
/* A8 */ STRUCT_PAD(0xA8, 0xB4);
/* B4 */ unk16 mUnk_B4;
/* B6 */ STRUCT_PAD(0xB6, 0xB8);
/* B8 */ s16 mUnk_B8;
/* BA */ unk16 mUnk_BA;
/* BC */ unk16 mUnk_BC;
/* BE */ s8 mUnk_BE;
/* BF */ STRUCT_PAD(0xBF, 0xC0);
/* C0 */ unk32 mUnk_C0;
/* C4 */ unk32 mUnk_C4;
/* C8 */ ActorHeart_c4 mUnk_C8;
/* EC */ VecFx32 mUnk_EC;
ActorHeart();
/* 18 */ virtual bool vfunc_18(unk32 param1) override;
/* 20 */ virtual void vfunc_20() override;
/* 2C */ virtual void vfunc_2c(unk32 param1) override;
/* 4C */ virtual ~ActorHeart() override {};
void func_ov031_020f0750();
void func_ov031_020eed64(ActorParams *param_2, unk32 param_3, unk32 param_4);
void func_ov031_020ef1b4(unk16 param_2);
void func_ov031_020ef208();
void func_ov031_020ef4a8();
void func_ov031_020ef528();
void func_ov031_020ef570();
void func_ov031_020ef698();
// data_ov031_02113d74
void func_ov031_020ef2f8();
void func_ov031_020ef334();
void func_ov031_020ef3a0();
void func_ov031_020ef3d0();
void func_ov031_020ef444();
void func_ov031_020ef458();
// data_ov031_02113da4
void func_ov031_020ef2ec();
void func_ov031_020ef320();
void func_ov031_020ef35c();
void func_ov031_020ef3b8();
void func_ov031_020ef430();
void func_ov031_020ef448();
};
class ActorProfileHeart : public ActorProfile {
public:
/* 00 (base) */
ActorProfileHeart();
~ActorProfileHeart() {}
/* 0C */ virtual Actor *Create();
static ActorProfileHeart *GetProfile();
};
-15
View File
@@ -19,19 +19,6 @@ enum RupeeId_ {
/* 7 */ RupeeId_7,
};
class Actor_9c {
public:
/* 00 (vtable) */
/* 04 */
/* 00 */ virtual void vfunc_00(); // corresponds to func_ov000_02097c14
/* 04 */ virtual void vfunc_04(); // corresponds to func_ov000_02097c20
/* 08 */
Actor_9c();
void func_ov000_02097bec();
};
class ActorRupee_c4 : public Actor_c4 {
public:
ActorRupee_c4(Actor *param1);
@@ -76,8 +63,6 @@ public:
/* 2C */ virtual void vfunc_2c(unk32 param1) override;
/* 4C */ virtual ~ActorRupee() override;
void func_ov017_020bf9c8(Actor *param1);
void func_ov031_020e8d2c(VecFx32 *param1, u8 param2, unk32 param3, unk32 param4);
void func_ov031_020e8fec();
void func_ov031_020e9068();
-68
View File
@@ -1,68 +0,0 @@
//! TODO: This file was generated automatically and might contain errors
#pragma once
#include "Actor/Actor.hpp"
#include "Actor/ActorProfile.hpp"
#include "global.h"
#include "types.h"
class ActorUnkHERT_c4 : public Actor_c4 {
public:
ActorUnkHERT_c4(Actor *param1);
/* 00 */ virtual unk32 vfunc_00(Actor_c4_stack param1, unk32 param2) override;
/* 04 */ virtual void vfunc_04() override;
/* 08 */ virtual void vfunc_08() override;
/* 0C */ virtual void vfunc_0c(unk32 param1) override;
};
class ActorUnkHERT : public Actor {
public:
/* 00 (base) */
/* 94 */
ActorUnkHERT();
/* 4C */ virtual ~ActorUnkHERT() override;
void func_ov031_020eed64(void);
void func_ov031_020eeed8(void);
void func_ov031_020eeee8(void);
void func_ov031_020ef1b4(void);
void func_ov031_020ef208(void);
void func_ov031_020ef2ec(void);
void func_ov031_020ef2f8(void);
void func_ov031_020ef320(void);
void func_ov031_020ef334(void);
void func_ov031_020ef35c(void);
void func_ov031_020ef3a0(void);
void func_ov031_020ef3b8(void);
void func_ov031_020ef3d0(void);
void func_ov031_020ef430(void);
void func_ov031_020ef444(void);
void func_ov031_020ef448(void);
void func_ov031_020ef458(void);
void func_ov031_020ef4a8(void);
void func_ov031_020ef528(void);
void func_ov031_020ef570(void);
void func_ov031_020ef5e8(void);
void func_ov031_020ef698(void);
void func_ov031_020ef6f8(void);
void func_ov031_020ef730(void);
void func_ov031_020ef774(void);
void func_ov031_020ef794(void);
void func_ov031_020ef7bc(void);
};
class ActorProfileUnkHERT : public ActorProfile {
public:
/* 00 (base) */
ActorProfileUnkHERT();
~ActorProfileUnkHERT();
/* 0C */ virtual Actor *Create();
static ActorProfileUnkHERT *GetProfile();
};
+1
View File
@@ -84,6 +84,7 @@ public:
void func_ov000_0208bbd4(unk32 param1, VecFx32 *param2, u16 param3);
void func_ov000_0208bbd4(unk32 param1, VecFx32 *param2, void *param3);
void func_ov000_0208bc9c(unk32 param1, unk32 param2);
static UnkStruct_027e0ce0_34 *func_ov000_0205c904();
+483
View File
@@ -0,0 +1,483 @@
#include "Actor/ActorHeart.hpp"
#include "System/Random.hpp"
#include "Unknown/UnkStruct_027e09a8.hpp"
#include "Unknown/UnkStruct_027e0cd8.hpp"
#include "Unknown/UnkStruct_027e0ce0.hpp"
class UnkStruct_ov031_02113d64 {
public:
/* 00 */ unk32 mUnk_00;
/* 04 */ VecFx32 mUnk_04;
UnkStruct_ov031_02113d64(unk32 param1, fx32 x, fx32 y, fx32 z) {
mUnk_00 = param1;
mUnk_04.x = x;
mUnk_04.y = y;
mUnk_04.z = z;
}
};
const UnkStruct_ov031_02113d64 data_ov031_02113d64(0, 0x800, 0, 0x800);
typedef struct {
unk16 mUnk_00;
unk16 mUnk_02;
unk16 mUnk_04;
unk16 mUnk_06;
unk16 mUnk_08;
STRUCT_PAD(0x0A, 0x14);
unk16 mUnk_14;
STRUCT_PAD(0x16, 0x18);
unk16 mUnk_18;
STRUCT_PAD(0x1A, 0x1C);
unk16 mUnk_1C;
STRUCT_PAD(0x1E, 0x28);
unk16 mUnk_28;
STRUCT_PAD(0x2A, 0x3C);
} UnkStruct_ov031_020eeee8;
extern "C" void func_01ffce1c(unk16 *, unk16 *);
extern "C" int func_01ffcea0(unk32, UnkStruct_ov031_020eeee8 *);
extern "C" void func_01ffedac(u16 *, VecFx32 *);
extern "C" void func_01fff17c(UnkStruct_ov031_020eeee8 *, UnkStruct_027e0ce0 *, unk32);
extern "C" void func_02018114(unk16 *, unk16);
extern "C" void func_02098388(void);
extern "C" void func_02097bb8(void);
extern "C" void func_ov000_0205c1f0(unk32 *, unk16);
extern "C" void func_ov000_0205c204(unk32 *, VecFx32 *, unk32, unk32, unk32);
extern "C" void func_ov000_0208bc00(UnkStruct_027e0ce0 *, unk16, unk16 *);
extern "C" void func_ov000_02098838();
extern "C" void func_ov017_020bf99c(void);
extern "C" void func_ov017_02097bec(Actor_9c *);
ARM DECL_PROFILE(ActorProfileHeart);
ARM Actor *ActorProfileHeart::Create() {
return new(HeapIndex_2) ActorHeart();
}
ARM ActorProfileHeart::ActorProfileHeart() :
ActorProfile(ActorId_Heart) {
this->mUnk_04.Init(FLOAT_TO_Q20(0.25));
}
ARM void ActorHeart::func_ov031_020eed64(ActorParams *param_2, unk32 param_3, unk32 param_4) {
ActorParams actorParams;
actorParams.func_ov000_020975f8();
actorParams.mInitialPos = param_2->mInitialPos;
actorParams.mUnk_28 = param_4;
actorParams.mUnk_2C = param_3;
this->func_ov000_020973f4(&data_ov000_020b539c_eur, ActorId_Heart, &actorParams, 0);
}
ARM void ActorHeart::func_ov031_020f0750() {}
ARM ActorHeart::ActorHeart() :
mUnk_94(0),
mUnk_96(6),
mUnk_B8(0),
mUnk_BA(gRandom.ConditionalNext32(0) & 0x80000000 ? 0x666 : ~0x665),
mUnk_BC(0),
mUnk_BE(0),
mUnk_C0(0),
mUnk_C4(0),
mUnk_C8(this) {
this->mUnk_EC.x = FLOAT_TO_Q20(0.0);
this->mUnk_EC.y = FLOAT_TO_Q20(0.0);
this->mUnk_EC.z = FLOAT_TO_Q20(0.0);
this->mUnk_9C = 0x13100;
this->mUnk_40 = &this->mUnk_C8;
u16 sp0;
func_01ffedac(&sp0, &this->mPos);
if (data_027e0cd8->mUnk_0C->func_ov000_02080180(&sp0) == 0x5) {
this->mUnk_34 = (Cylinder *) &data_ov031_02113d64;
}
}
ARM bool ActorHeart::vfunc_18(unk32 param1) {
this->func_ov031_020ef4a8();
return true;
}
static PTMF<ActorHeart> data_ov031_02113d74[] = {
ActorHeart::func_ov031_020ef2f8, ActorHeart::func_ov031_020ef334, ActorHeart::func_ov031_020ef3a0,
ActorHeart::func_ov031_020ef3d0, ActorHeart::func_ov031_020ef444, ActorHeart::func_ov031_020ef458,
};
// non-matching
void ActorHeart::vfunc_20() {
UnkStruct_ov031_020eeee8 stack;
stack.mUnk_02 = 0;
stack.mUnk_04 = 0x666;
stack.mUnk_06 = 0xfb33;
func_01fff17c(&stack, data_027e0ce0, 0);
func_02018114(&stack.mUnk_02, stack.mUnk_00);
this->mUnk_C8.mUnk_08 = stack.mUnk_02; // d0
this->mUnk_C8.mUnk_0A = stack.mUnk_04; // d2
this->mUnk_C8.mUnk_0C = stack.mUnk_06; // d4
stack.mUnk_02 = 0;
stack.mUnk_04 = 0x666;
stack.mUnk_06 = 0;
this->mUnk_C8.mUnk_0E = 0;
this->mUnk_C8.mUnk_10 = stack.mUnk_04; // d8
stack.mUnk_06 = stack.mUnk_04;
this->mUnk_C8.mUnk_12 = stack.mUnk_06; // da
this->mUnk_3C = (unk32) & this->mUnk_98;
CALL_PTMF(PTMF<ActorHeart>, data_ov031_02113d74[this->mUnk_4C]);
bool t = true;
if (this->mUnk_94 < this->mUnk_96) {
this->mUnk_94 = this->mUnk_96;
this->mUnk_94++;
t = false;
} else {
t = true;
}
if (t) {
this->func_ov000_020989e0();
if (this->mUnk_4C == 1) {
func_ov000_0208bc00(data_027e0ce0, 0, &stack.mUnk_08);
func_01ffce1c(&stack.mUnk_18, &stack.mUnk_08);
stack.mUnk_28 += stack.mUnk_14 + (stack.mUnk_14 << 1);
stack.mUnk_1C -= stack.mUnk_14;
func_01ffcea0(0, &stack);
while (1) {
// should be lower
this->func_ov031_020ef528();
if (data_027e0ce0->func_01fff1a4()) {
func_ov000_0208bc00(data_027e0ce0, 0, &stack.mUnk_08);
func_01ffce1c(0, 0);
stack.mUnk_1C += stack.mUnk_14 + stack.mUnk_1C;
stack.mUnk_28 = stack.mUnk_14 + (stack.mUnk_14 << 1) + stack.mUnk_28;
if (func_01ffcea0(0, &stack) != 0x0) {
break;
}
}
}
}
if (!(this->mUnk_A0 & 0x3ffff)) {
unk16 var = this->mUnk_B4;
if (var != 0x8 && var == 0xC) {
this->mUnk_C0 = this->mUnk_A4;
this->mUnk_9C &= ~0x1000;
}
}
}
if (this->mUnk_5C.mUnk_24 < 0) {
this->func_ov031_020ef208();
}
this->mPrevPos.x = this->mPos.x;
this->mPrevPos.y = this->mPos.y;
this->mPrevPos.z = this->mPos.z;
VecFx32_Add(&this->mPos, &this->mVel, &this->mPos);
if (this->mUnk_4C != 0x3) {
this->func_ov000_02098910(0, 0x10);
}
if (this->mUnk_46 & 0x3) {
this->mVel.y = FLOAT_TO_Q20(0.0);
}
VecFx32_Add(&this->mPos, &this->mUnk_EC, &this->mPos);
this->mUnk_EC.x = FLOAT_TO_Q20(0.0);
this->mUnk_EC.y = FLOAT_TO_Q20(0.0);
this->mUnk_EC.z = FLOAT_TO_Q20(0.0);
}
extern unk32 data_ov000_020aecf8;
static PTMF<ActorHeart> data_ov031_02113da4[] = {
ActorHeart::func_ov031_020ef2ec, ActorHeart::func_ov031_020ef320, ActorHeart::func_ov031_020ef35c,
ActorHeart::func_ov031_020ef3b8, ActorHeart::func_ov031_020ef430, ActorHeart::func_ov031_020ef448,
};
ARM void ActorHeart::func_ov031_020ef1b4(unk16 param_2) {
this->mUnk_4C = param_2;
this->mUnk_2C = data_ov000_020aecf8;
this->mUnk_44 = 0x9C;
CALL_PTMF(PTMF<ActorHeart>, data_ov031_02113da4[this->mUnk_4C]);
}
// non-matching (r1 and r2 swapped)
ARM void ActorHeart::func_ov031_020ef208() {
bool var2 = true;
bool var1 = true;
if (this->mUnk_4C != 0x3 && this->mUnk_4C != 0x4) {
var1 = false;
}
if (!var1) {
if (this->mUnk_4C != 0x5) {
var2 = false;
}
}
if (var2) {
SET_FLAG(this->mFlags, ActorFlag_2);
return;
}
if ((u8) this->mUnk_BE == 0) {
if (this->mUnk_50 < this->mUnk_52) {
this->mUnk_50++;
var2 = false;
} else {
var2 = true;
}
if (var2) {
this->mUnk_BE = 0x01;
this->mUnk_50 = 0x00;
this->mUnk_52 = 0x3C;
}
return;
}
if ((this->mUnk_50 % 8) < 4) {
UNSET_FLAG(this->mFlags, ActorFlag_2);
} else {
SET_FLAG(this->mFlags, ActorFlag_2);
}
if (this->mUnk_50 < this->mUnk_52) {
this->mUnk_50++;
var2 = false;
} else {
var2 = true;
}
if (var2) {
this->func_ov000_020984d0();
}
}
ARM void ActorHeart::func_ov031_020ef2ec() {
this->mVel.y = FLOAT_TO_Q20(0.25);
}
ARM void ActorHeart::func_ov031_020ef2f8() {
func_ov000_02098838();
if (this->mVel.y > 0) {
return;
}
this->func_ov031_020ef1b4(0x01);
}
ARM void ActorHeart::func_ov031_020ef320() {
this->mUnk_2C = 0x06;
this->mUnk_44 = 0x9F;
}
ARM void ActorHeart::func_ov031_020ef334() {
this->func_ov031_020ef570();
if ((this->mUnk_46 & 0x3) == 0) {
return;
}
this->func_ov031_020ef1b4(0x02);
}
ARM void ActorHeart::func_ov031_020ef35c() {
this->mVel.x = FLOAT_TO_Q20(0.0);
this->mVel.y = FLOAT_TO_Q20(0.0);
this->mVel.z = FLOAT_TO_Q20(0.0);
if ((u8) this->mUnk_BE == 0 && (this->mUnk_52 - this->mUnk_50) > 0xB4) {
this->mUnk_52 = 0xB4;
this->mUnk_50 = 0x00;
}
this->mUnk_44 = 0x9F;
}
ARM void ActorHeart::func_ov031_020ef3a0() {
if (this->mUnk_5C.mUnk_24 >= 0) {
return;
}
this->func_ov031_020ef698();
}
ARM void ActorHeart::func_ov031_020ef3b8() {
func_ov017_020bf99c();
this->mUnk_98.func_ov000_02097bec();
}
ARM void ActorHeart::func_ov031_020ef3d0() {
this->func_ov017_020bf9c8(gpActorManager->func_01fff3b4(this->mUnk_C0));
if (!GET_FLAG(this->mFlags, ActorFlag_5)) {
return;
}
this->mVel.x = FLOAT_TO_Q20(0.0);
this->mVel.y = FLOAT_TO_Q20(0.0);
this->mVel.z = FLOAT_TO_Q20(0.0);
this->mUnk_9C |= 0x1000;
this->func_ov031_020ef1b4(0x01);
}
ARM void ActorHeart::func_ov031_020ef430() {
this->mVel.x = FLOAT_TO_Q20(0.0);
this->mVel.y = FLOAT_TO_Q20(0.0);
this->mVel.z = FLOAT_TO_Q20(0.0);
}
ARM void ActorHeart::func_ov031_020ef444() {
return;
}
ARM void ActorHeart::func_ov031_020ef448() {
this->mVel.x = FLOAT_TO_Q20(0.0);
this->mVel.z = FLOAT_TO_Q20(0.0);
}
typedef struct {
STRUCT_PAD(0x00, 0xE8);
VecFx32 mUnk_E8;
} UnkActor_02ef458;
ARM void ActorHeart::func_ov031_020ef458() {
// which actor is this ?
UnkActor_02ef458 *actor = (UnkActor_02ef458 *) gpActorManager->func_01fff3b4(this->mUnk_C4);
if (actor == nullptr) {
this->func_ov031_020ef1b4(0x01);
return;
}
VecFx32_Copy(&actor->mUnk_E8, &this->mPos);
}
ARM void ActorHeart::func_ov031_020ef4a8() {
if (this->mUnk_5C.mUnk_24 >= 0) {
this->func_ov031_020ef1b4(2);
return;
}
switch (this->mUnk_5C.mUnk_2C) {
case 0:
this->mUnk_52 = 0xB4;
this->mUnk_50 = 0x00;
this->func_ov031_020ef1b4(2);
break;
case 1:
this->mUnk_52 = 0x1E0;
this->mUnk_50 = 0x00;
this->func_ov031_020ef1b4(0);
return;
default:
this->mUnk_52 = 0x1E0;
this->mUnk_50 = 0x00;
this->func_ov031_020ef1b4(0);
break;
}
}
ARM void ActorHeart::func_ov031_020ef528() {
data_027e0ce0->func_ov000_0208bc9c(4, 1);
data_027e09a8->func_ov000_02071b30(0x76, &this->mPos, 0);
this->func_ov000_020984d0();
}
// non-matching
ARM void ActorHeart::func_ov031_020ef570() {
func_ov000_02098838();
this->mUnk_B8 += 0x666;
this->mVel.z = FLOAT_TO_Q20(0.0);
s16 sin_value = SIN((u16) this->mUnk_B8);
s32 value = ((sin_value >> 0x1F) << 6 | sin_value >> 0x1A) + (sin_value * 0x40 > ~0x800);
this->mVel.x = ROUND_Q20(sin_value * 0x40) + value;
if (this->mVel.y <= FLOAT_TO_Q20(-0.005)) {
this->mVel.y = FLOAT_TO_Q20(-0.005);
}
}
ARM void ActorHeart::vfunc_2c(unk32 param1) {
VecFx32 iStack_20;
VecFx32 iStack_2c;
unk32 auStack_30;
if (this->func_01fff5d0(param1, 0) == 0) {
return;
}
iStack_20 = this->mPos;
iStack_20.y += FLOAT_TO_Q20(0.03113);
this->func_ov017_020bf5c4(&iStack_20, 0x400, 0x400, 0x1f, 0);
func_ov000_0205c1f0(&auStack_30, 0x10);
iStack_2c = this->mPos;
iStack_2c.y += FLOAT_TO_Q20(0.33);
func_ov000_0205c204(&auStack_30, &iStack_2c, 0xccd, 0xccd, 0x1f);
}
ARM void ActorHeart::func_ov031_020ef698() {
switch (this->mUnk_BC) {
case 0x00:
if ((this->mUnk_46 & 3) == 0) {
this->mUnk_BC += 0x01;
this->mUnk_2C = 0x06;
}
break;
case 0x01:
this->func_ov031_020ef570();
if ((this->mUnk_46 & 3) != 0) {
this->mVel.x = 0;
this->mVel.y = 0;
this->mVel.z = 0;
this->mUnk_BC = 0;
}
break;
}
}
#define GET_ACTORHEART(this) reinterpret_cast<ActorHeart *>((this)->mUnk_20)
ARM ActorHeart_c4::ActorHeart_c4(Actor *param1) :
Actor_c4(param1) {
this->mUnk_20 = param1;
this->mUnk_04 = 1;
}
// non-matching
ARM unk32 ActorHeart_c4::vfunc_00(Actor_c4_stack param_2, unk32 param_3) {
if (param_3 != 0) {
ActorHeart *pHeart = GET_ACTORHEART(this);
pHeart->mUnk_C4 = param_2.param1;
pHeart->func_ov031_020ef1b4(0x04);
}
return this->Actor_c4::vfunc_00(param_2, param_3);
}
ARM void ActorHeart_c4::vfunc_04() {
GET_ACTORHEART(this)->func_ov031_020ef1b4(0x05);
this->Actor_c4::vfunc_04();
}
ARM void ActorHeart_c4::vfunc_0c(unk32 param1) {
GET_ACTORHEART(this)->func_ov031_020ef1b4(0x01);
this->Actor_c4::vfunc_0c(param1);
}
ARM void ActorHeart_c4::vfunc_08() {
GET_ACTORHEART(this)->func_ov031_020ef528();
this->Actor_c4::vfunc_08();
}
-46
View File
@@ -1,46 +0,0 @@
//! TODO: This file was generated automatically and might contain errors
#include "Actor/ActorUnkHERT.hpp"
#include "System/SysNew.hpp"
ARM DECL_PROFILE(ActorProfileUnkHERT);
ARM Actor *ActorProfileUnkHERT::Create() {
return new(HeapIndex_2) ActorUnkHERT();
}
ARM ActorProfileUnkHERT::ActorProfileUnkHERT() :
ActorProfile(ActorId_Heart) {}
ARM ActorUnkHERT::ActorUnkHERT() {}
ARM void ActorUnkHERT::func_ov031_020eed64(void) {}
ARM void ActorUnkHERT::func_ov031_020eeed8(void) {}
ARM void ActorUnkHERT::func_ov031_020eeee8(void) {}
ARM void ActorUnkHERT::func_ov031_020ef1b4(void) {}
ARM void ActorUnkHERT::func_ov031_020ef208(void) {}
ARM void ActorUnkHERT::func_ov031_020ef2ec(void) {}
ARM void ActorUnkHERT::func_ov031_020ef2f8(void) {}
ARM void ActorUnkHERT::func_ov031_020ef320(void) {}
ARM void ActorUnkHERT::func_ov031_020ef334(void) {}
ARM void ActorUnkHERT::func_ov031_020ef35c(void) {}
ARM void ActorUnkHERT::func_ov031_020ef3a0(void) {}
ARM void ActorUnkHERT::func_ov031_020ef3b8(void) {}
ARM void ActorUnkHERT::func_ov031_020ef3d0(void) {}
ARM void ActorUnkHERT::func_ov031_020ef430(void) {}
ARM void ActorUnkHERT::func_ov031_020ef444(void) {}
ARM void ActorUnkHERT::func_ov031_020ef448(void) {}
ARM void ActorUnkHERT::func_ov031_020ef458(void) {}
ARM void ActorUnkHERT::func_ov031_020ef4a8(void) {}
ARM void ActorUnkHERT::func_ov031_020ef528(void) {}
ARM void ActorUnkHERT::func_ov031_020ef570(void) {}
ARM void ActorUnkHERT::func_ov031_020ef5e8(void) {}
ARM void ActorUnkHERT::func_ov031_020ef698(void) {}
ARM void ActorUnkHERT::func_ov031_020ef6f8(void) {}
ARM void ActorUnkHERT::func_ov031_020ef730(void) {}
ARM void ActorUnkHERT::func_ov031_020ef774(void) {}
ARM void ActorUnkHERT::func_ov031_020ef794(void) {}
ARM void ActorUnkHERT::func_ov031_020ef7bc(void) {}
ARM ActorUnkHERT::~ActorUnkHERT() {}
ARM ActorProfileUnkHERT::~ActorProfileUnkHERT() {}
+1 -1
View File
@@ -428,7 +428,7 @@ config.libs = [
Object("031_Land/Actor/ActorUnkCLLT.cpp"),
Object("031_Land/Actor/ActorUnkEFSB.cpp"),
Object("031_Land/Actor/ActorUnkFLEN.cpp"),
Object("031_Land/Actor/ActorUnkHERT.cpp"),
Object("031_Land/Actor/ActorHeart.cpp"),
Object("031_Land/Actor/ActorUnkITBM.cpp"),
Object("031_Land/Actor/ActorUnkITTD.cpp"),
Object("031_Land/Actor/ActorUnkMLCK.cpp"),