Improvements in SWBM (#133)

* feat: improvements in SWBM

* feat: improvements

* feat: increase matching for jp version

* feat: add vfuncs from fields' classes

* feat: improve matching

* feat: rename parameters to reflect staticness of the function

* refactor: change mangled name

* feat: remove unused variable from bss

* style: explicite parenthesis

* feat: better matching

* feat: replace if/else by a switch statement
This commit is contained in:
Alessevan
2026-08-14 10:37:50 -04:00
committed by GitHub
parent 93fd0610a0
commit ce24ddfc4e
26 changed files with 462 additions and 129 deletions
+2 -2
View File
@@ -179,7 +179,7 @@ func_ov000_02058f5c kind:function(arm,size=0x18) addr:0x02058f5c
func_ov000_02058f74 kind:function(arm,size=0x10) addr:0x02058f74
func_ov000_02058f84 kind:function(arm,size=0x18) addr:0x02058f84
_ZN18UnkStruct_027e09586CreateEv kind:function(arm,size=0x28) addr:0x02058f9c
_ZN18UnkStruct_027e095819func_ov000_02058fc4EP7VecFx32S1_ kind:function(arm,size=0x34) addr:0x02058fc4
_ZN18UnkStruct_027e095819func_ov000_02058fc4EP27UnkStruct_PlayerGet_74_baseP7VecFx32 kind:function(arm,size=0x34) addr:0x02058fc4
func_ov000_02058ff8 kind:function(arm,size=0xdc) addr:0x02058ff8
func_ov000_020590d4 kind:function(arm,size=0x10) addr:0x020590d4
_ZN27UnkStruct_PlayerGet_74_baseC2Ev kind:function(arm,size=0x24) addr:0x020590e4
@@ -1414,7 +1414,7 @@ _ZN24UnkStruct_ov000_020b28388vfunc_00Ev kind:function(arm,size=0x4) addr:0x0207
_ZN24UnkStruct_ov000_020b2838D0Ev kind:function(arm,size=0x14) addr:0x0207bfe8
_ZN29UnkStruct_ov031_Items_00_BaseD2Ev kind:function(arm,size=0x4) addr:0x0207bffc
_ZN26UnkStruct_027e0ce0_38_Base8vfunc_08EPK24UnkStruct_ov031_020f3310 kind:function(arm,size=0x8) addr:0x0207c000
_ZN26UnkStruct_027e0ce0_38_Base8vfunc_0CEPK24UnkStruct_ov031_020e54d4ii kind:function(arm,size=0x8) addr:0x0207c008
_ZN26UnkStruct_027e0ce0_38_Base8vfunc_0CEPK24UnkStruct_ov031_020e54d4Pii kind:function(arm,size=0x8) addr:0x0207c008
_ZN26UnkStruct_027e0ce0_38_Base8vfunc_10Ev kind:function(arm,size=0x8) addr:0x0207c010
_ZN17MapObject_10_BaseC2Ev kind:function(arm,size=0x30) addr:0x0207c018
func_ov000_0207c048 kind:function(arm,size=0x30) addr:0x0207c048
+3 -2
View File
@@ -45,10 +45,11 @@ src/031_Land/Actor/ActorItemTornado.cpp:
.bss start:0x02116534 end:0x02116580
src/031_Land/Actor/ActorUnkSWBM.cpp:
.text start:0x020e6b34 end:0x020e7378
.text start:0x020e68d8 end:0x020e7378
.init start:0x021111ac end:0x02111220
.ctor start:0x021127b0 end:0x021127b4
.bss start:0x02116580 end:0x021165d0
.data start:0x02113108 end:0x021131dc
.bss start:0x02116580 end:0x021165cc
src/031_Land/Actor/ActorUnkROCK.cpp:
.text start:0x020e8824 end:0x020e8cb8
+3 -3
View File
@@ -1579,9 +1579,9 @@ from:0x020e6bb0 kind:arm_call to:0x02098388 module:overlay(0)
from:0x020e6c00 kind:arm_call to:0x020590e4 module:overlay(0)
from:0x020e6c30 kind:arm_call to:0x02028c4c module:main
from:0x020e6c4c kind:load to:0x02113180 add:0x8 module:overlay(31)
from:0x020e6c50 kind:load to:0x02113148 module:overlay(31)
from:0x020e6c54 kind:load to:0x0211312c module:overlay(31)
from:0x020e6c58 kind:load to:0x02113110 module:overlay(31)
from:0x020e6c50 kind:load to:0x02113140 module:overlay(31) add:0x8
from:0x020e6c54 kind:load to:0x02113124 module:overlay(31) add:0x8
from:0x020e6c58 kind:load to:0x02113108 module:overlay(31) add:0x8
from:0x020e6c68 kind:arm_call to:0x0207bffc module:overlay(0)
from:0x020e6c7c kind:arm_call to:0x0207b6c0 module:overlay(0)
from:0x020e6d38 kind:load to:0x0203e964 module:main
+26 -26
View File
@@ -50,7 +50,7 @@ func_ov031_020d96e0 kind:function(thumb,size=0x4) addr:0x020d96e0
func_ov031_020d96e4 kind:function(arm,size=0x10) addr:0x020d96e4
func_ov031_020d96f4 kind:function(arm,size=0x10) addr:0x020d96f4
func_ov031_020d9704 kind:function(arm,size=0x10) addr:0x020d9704
func_ov031_020d9714 kind:function(arm,size=0x1c) addr:0x020d9714
_ZN18UnkStruct_027e0d3419func_ov031_020d9714Ev kind:function(arm,size=0x1c) addr:0x020d9714
func_ov031_020d9730 kind:function(arm,size=0x18) addr:0x020d9730
func_ov031_020d9748 kind:function(arm,size=0x10) addr:0x020d9748
_ZN18UnkStruct_027e0d3419func_ov031_020d9758Ev kind:function(arm,size=0x18) addr:0x020d9758
@@ -444,7 +444,7 @@ _ZN22ActorItemBoomerang_11CC1EP18ActorItemBoomerang kind:function(arm,size=0x28)
_ZN22ActorItemBoomerang_11CD1Ev kind:function(arm,size=0x14) addr:0x020e5474
_ZN22ActorItemBoomerang_11CD0Ev kind:function(arm,size=0x1c) addr:0x020e5488
_ZN22ActorItemBoomerang_11C8vfunc_08EPK24UnkStruct_ov031_020f3310 kind:function(arm,size=0x30) addr:0x020e54a4
_ZN22ActorItemBoomerang_11C8vfunc_0CEPK24UnkStruct_ov031_020e54d4ii kind:function(arm,size=0x230) addr:0x020e54d4
_ZN22ActorItemBoomerang_11C8vfunc_0CEPK24UnkStruct_ov031_020e54d4Pii kind:function(arm,size=0x230) addr:0x020e54d4
_ZN26ActorItemBoomerang_Unknown19func_ov031_020e5704Ev kind:function(arm,size=0xc) addr:0x020e5704
_ZN21ActorItemBoomerang_A0D0Ev kind:function(arm,size=0x1c) addr:0x020e5710
_ZN21ActorItemBoomerang_CCD0Ev kind:function(arm,size=0x1c) addr:0x020e572c
@@ -481,29 +481,29 @@ _ZN19func_ov031_020e6774D0Ev kind:function(arm,size=0x68) addr:0x020e6774
func_ov031_020e67dc kind:function(arm,size=0x7c) addr:0x020e67dc
func_ov031_020e6858 kind:function(arm,size=0x64) addr:0x020e6858
_ZN19func_ov031_020e68bcD0Ev kind:function(arm,size=0x1c) addr:0x020e68bc
func_ov031_020e68d8 kind:function(arm,size=0x28) addr:0x020e68d8
func_ov031_020e6900 kind:function(arm,size=0x1c) addr:0x020e6900
func_ov031_020e691c kind:function(arm,size=0x58) addr:0x020e691c
func_ov031_020e6974 kind:function(arm,size=0x58) addr:0x020e6974
func_ov031_020e69cc kind:function(arm,size=0x168) addr:0x020e69cc
_ZN15ActorUnkSWBM_948vfunc_08EPK24UnkStruct_ov031_020f3310 kind:function(arm,size=0x28) addr:0x020e68d8
_ZN15ActorUnkSWBM_948vfunc_0CEPK24UnkStruct_ov031_020e54d4Pii kind:function(arm,size=0x1c) addr:0x020e6900
_ZN15ActorUnkSWBM_988vfunc_0CEP5ActorP7VecFx32 kind:function(arm,size=0x58) addr:0x020e691c
_ZN15ActorUnkSWBM_988vfunc_10EP5Actor kind:function(arm,size=0x58) addr:0x020e6974
_ZN15ActorUnkSWBM_C88vfunc_00Eiii kind:function(arm,size=0x168) addr:0x020e69cc
_ZN19ActorProfileUnkSWBM10GetProfileEv kind:function(arm,size=0xc) addr:0x020e6b34
_ZN19ActorProfileUnkSWBM6CreateEv kind:function(arm,size=0x24) addr:0x020e6b40
_ZN19ActorProfileUnkSWBMC1Ev kind:function(arm,size=0x44) addr:0x020e6b64
_ZN12ActorUnkSWBMC1Ev kind:function(arm,size=0xb8) addr:0x020e6ba8
_ZN12ActorUnkSWBM19func_ov031_020e6c60Ev kind:function(arm,size=0x14) addr:0x020e6c60
_ZN12ActorUnkSWBM19func_ov031_020e6c74Ev kind:function(arm,size=0x14) addr:0x020e6c74
_ZN12ActorUnkSWBM19func_ov031_020e6c88Ev kind:function(arm,size=0xc0) addr:0x020e6c88
_ZN15ActorUnkSWBM_94D1Ev kind:function(arm,size=0x14) addr:0x020e6c60
_ZN15ActorUnkSWBM_98D1Ev kind:function(arm,size=0x14) addr:0x020e6c74
_ZN12ActorUnkSWBM8vfunc_18Ei kind:function(arm,size=0xc0) addr:0x020e6c88
_ZN12ActorUnkSWBM19func_ov031_020e6d48Ev kind:function(arm,size=0x38) addr:0x020e6d48
_ZN12ActorUnkSWBM19func_ov031_020e6d80Ev kind:function(arm,size=0x104) addr:0x020e6d80
_ZN12ActorUnkSWBM19func_ov031_020e6e84Ev kind:function(arm,size=0x74) addr:0x020e6e84
_ZN12ActorUnkSWBM19func_ov031_020e6ef8Ev kind:function(arm,size=0x268) addr:0x020e6ef8
_ZN12ActorUnkSWBM19func_ov031_020e7160Ev kind:function(arm,size=0x2c) addr:0x020e7160
_ZN12ActorUnkSWBM19func_ov031_020e718cEv kind:function(arm,size=0x108) addr:0x020e718c
_ZN12ActorUnkSWBM19func_ov031_020e7294Ev kind:function(arm,size=0x40) addr:0x020e7294
_ZN12ActorUnkSWBMD0Ev kind:function(arm,size=0x1c) addr:0x020e72d4
_ZN12ActorUnkSWBM19func_ov031_020e72f0Ev kind:function(arm,size=0x1c) addr:0x020e72f0
_ZN12ActorUnkSWBM19func_ov031_020e6d80Ei kind:function(arm,size=0x104) addr:0x020e6d80
_ZN12ActorUnkSWBM19func_ov031_020e6e84Es kind:function(arm,size=0x74) addr:0x020e6e84
_ZN12ActorUnkSWBM8vfunc_20Ev kind:function(arm,size=0x268) addr:0x020e6ef8
_ZN12ActorUnkSWBM8vfunc_24Ev kind:function(arm,size=0x2c) addr:0x020e7160
_ZN12ActorUnkSWBM19func_ov031_020e718cEP7VecFx32P5Mat3pists kind:function(arm,size=0x108) addr:0x020e718c
_ZN12ActorUnkSWBM8vfunc_2CEi kind:function(arm,size=0x40) addr:0x020e7294
_ZN15ActorUnkSWBM_94D0Ev kind:function(arm,size=0x1c) addr:0x020e72d4
_ZN15ActorUnkSWBM_98D0Ev kind:function(arm,size=0x1c) addr:0x020e72f0
_ZN12ActorUnkSWBMD1Ev kind:function(arm,size=0x28) addr:0x020e730c
_ZN12ActorUnkSWBM19func_ov031_020e7334Ev kind:function(arm,size=0x30) addr:0x020e7334
_ZN12ActorUnkSWBMD0Ev kind:function(arm,size=0x30) addr:0x020e7334
_ZN19ActorProfileUnkSWBMD1Ev kind:function(arm,size=0x14) addr:0x020e7364
func_ov031_020e7378 kind:function(arm,size=0x74) addr:0x020e7378
_ZN19func_ov031_020e73ecD1Ev kind:function(arm,size=0x20) addr:0x020e73ec
@@ -924,7 +924,7 @@ _ZN18ActorShotArrow_178D1Ev kind:function(arm,size=0x1c) addr:0x020f32c4
_ZN18ActorShotArrow_178D0Ev kind:function(arm,size=0x24) addr:0x020f32e0
_ZN18ActorShotArrow_17819func_ov031_020f3304Ev kind:function(arm,size=0xc) addr:0x020f3304
_ZN18ActorShotArrow_1788vfunc_08EPK24UnkStruct_ov031_020f3310 kind:function(arm,size=0xac) addr:0x020f3310
_ZN18ActorShotArrow_1788vfunc_0CEPK24UnkStruct_ov031_020e54d4ii kind:function(arm,size=0x350) addr:0x020f33bc
_ZN18ActorShotArrow_1788vfunc_0CEPK24UnkStruct_ov031_020e54d4Pii kind:function(arm,size=0x350) addr:0x020f33bc
_ZN18ActorShotArrow_194C1EP14ActorShotArrow kind:function(arm,size=0x40) addr:0x020f370c
_ZN18ActorShotArrow_19419func_ov031_020f374cEP5Actor kind:function(arm,size=0x164) addr:0x020f374c
_ZN18ActorShotArrow_1948vfunc_10EP5Actor kind:function(arm,size=0x388) addr:0x020f38b0
@@ -1110,7 +1110,7 @@ _ZN19ActorProfileUnkFLEND1Ev kind:function(arm,size=0x14) addr:0x020f82cc
_ZN24ActorProfileRollingStone10GetProfileEv kind:function(arm,size=0xc) addr:0x020f82e0
_ZN24ActorProfileRollingStone6CreateEv kind:function(arm,size=0x24) addr:0x020f82ec
_ZN24ActorProfileRollingStoneC1Ev kind:function(arm,size=0x44) addr:0x020f8310
_ZN21ActorRollingStone_1048vfunc_0CEPK24UnkStruct_ov031_020e54d4ii kind:function(arm,size=0x90) addr:0x020f8354
_ZN21ActorRollingStone_1048vfunc_0CEPK24UnkStruct_ov031_020e54d4Pii kind:function(arm,size=0x90) addr:0x020f8354
_ZN21ActorRollingStone_1048vfunc_10Ev kind:function(arm,size=0xb8) addr:0x020f83e4
_ZN20ActorRollingStone_D48vfunc_10EP5Actor kind:function(arm,size=0x44) addr:0x020f849c
_ZN17ActorRollingStoneC1Ev kind:function(arm,size=0x194) addr:0x020f84e0
@@ -2268,12 +2268,12 @@ _ZTV23ActorProfileItemTornado kind:data(any) addr:0x02113008
_ZTV16ActorItemTornado kind:data(any) addr:0x0211302c
_ZTV19data_ov031_02113090 kind:data(any) addr:0x02113088
_ZTV19data_ov031_021130a4 kind:data(any) addr:0x021130a4
data_ov031_02113110 kind:data(any) addr:0x02113110
_ZTV15ActorUnkSWBM_C8 kind:data(any) addr:0x02113108
data_ov031_02113114 kind:data(any) addr:0x02113114
data_ov031_0211312c kind:data(any) addr:0x0211312c
data_ov031_02113148 kind:data(any) addr:0x02113148
_ZTV19data_ov031_0211315c kind:data(any) addr:0x0211315c
_ZTV19data_ov031_02113180 kind:data(any) addr:0x02113180
_ZTV15ActorUnkSWBM_98 kind:data(any) addr:0x02113124
_ZTV15ActorUnkSWBM_94 kind:data(any) addr:0x02113140
_ZTV19ActorProfileUnkSWBM kind:data(any) addr:0x0211315c
_ZTV12ActorUnkSWBM kind:data(any) addr:0x02113180
data_ov031_021131dc kind:data(any) addr:0x021131dc
data_ov031_021131e0 kind:data(any) addr:0x021131e0
data_ov031_021131e4 kind:data(any) addr:0x021131e4
+1 -1
View File
@@ -54,7 +54,7 @@ _ZN24UnkStruct_ov063_02162ea8C1Ev kind:function(arm,size=0x30) addr:0x0215a7d4
_ZN24UnkStruct_ov063_02162ea8D1Ev kind:function(arm,size=0x14) addr:0x0215a804
_ZN24UnkStruct_ov063_02162ea8D0Ev kind:function(arm,size=0x1c) addr:0x0215a818
_ZN24UnkStruct_ov063_02162ea88vfunc_08EP24UnkStruct_ov031_020f3310 kind:function(arm,size=0x4c) addr:0x0215a834
_ZN24UnkStruct_ov063_02162ea88vfunc_0CEPK24UnkStruct_ov031_020e54d4ii kind:function(arm,size=0xcc) addr:0x0215a880
_ZN24UnkStruct_ov063_02162ea88vfunc_0CEPK24UnkStruct_ov031_020e54d4Pii kind:function(arm,size=0xcc) addr:0x0215a880
_ZN24UnkStruct_ov063_02162f148vfunc_3CEv kind:function(arm,size=0x24) addr:0x0215a94c
_ZN24UnkStruct_ov063_02162f148vfunc_38Eii kind:function(arm,size=0x2c) addr:0x0215a970
_ZN24UnkStruct_ov063_02162ee8D0Ev kind:function(arm,size=0x1c) addr:0x0215a99c
+2 -2
View File
@@ -179,7 +179,7 @@ func_ov000_0205a4dc kind:function(arm,size=0x18) addr:0x0205a4dc
func_ov000_0205a4f4 kind:function(arm,size=0x10) addr:0x0205a4f4
func_ov000_0205a504 kind:function(arm,size=0x18) addr:0x0205a504
_ZN18UnkStruct_027e09586CreateEv kind:function(arm,size=0x28) addr:0x0205a51c
func_ov000_0205a544 kind:function(arm,size=0x34) addr:0x0205a544
_ZN18UnkStruct_027e095819func_ov000_02058fc4EP27UnkStruct_PlayerGet_74_baseP7VecFx32 kind:function(arm,size=0x34) addr:0x0205a544
func_ov000_0205a578 kind:function(arm,size=0xdc) addr:0x0205a578
func_ov000_0205a654 kind:function(arm,size=0x10) addr:0x0205a654
_ZN27UnkStruct_PlayerGet_74_baseC2Ev kind:function(arm,size=0x24) addr:0x0205a664
@@ -1412,7 +1412,7 @@ func_ov000_0207d69c kind:function(arm,size=0x4) addr:0x0207d69c
_ZN19func_ov000_0207d6a0D0Ev kind:function(arm,size=0x14) addr:0x0207d6a0
_ZN29UnkStruct_ov031_Items_00_BaseD2Ev kind:function(arm,size=0x4) addr:0x0207d6b4
_ZN26UnkStruct_027e0ce0_38_Base8vfunc_08EPK24UnkStruct_ov031_020f3310 kind:function(arm,size=0x8) addr:0x0207d6b8
_ZN26UnkStruct_027e0ce0_38_Base8vfunc_0CEPK24UnkStruct_ov031_020e54d4ii kind:function(arm,size=0x8) addr:0x0207d6c0
_ZN26UnkStruct_027e0ce0_38_Base8vfunc_0CEPK24UnkStruct_ov031_020e54d4Pii kind:function(arm,size=0x8) addr:0x0207d6c0
_ZN26UnkStruct_027e0ce0_38_Base8vfunc_10Ev kind:function(arm,size=0x8) addr:0x0207d6c8
_ZN17MapObject_10_BaseC2Ev kind:function(arm,size=0x30) addr:0x0207d6d0
func_ov000_0207d700 kind:function(arm,size=0x30) addr:0x0207d700
+2 -1
View File
@@ -44,9 +44,10 @@ src/031_Land/Actor/ActorItemTornado.cpp:
.bss start:0x021182d4 end:0x02118320
src/031_Land/Actor/ActorUnkSWBM.cpp:
.text start:0x020e8520 end:0x020e8d64
.text start:0x020e82c4 end:0x020e8d64
.init start:0x02112f1c end:0x02112f90
.ctor start:0x0211453c end:0x02114540
.data start:0x02114ea8 end:0x02114f7c
.bss start:0x02118320 end:0x0211836c
src/031_Land/Actor/ActorUnkROCK.cpp:
+3 -3
View File
@@ -1580,9 +1580,9 @@ from:0x020e859c kind:arm_call to:0x02099b30 module:overlay(0)
from:0x020e85ec kind:arm_call to:0x0205a664 module:overlay(0)
from:0x020e861c kind:arm_call to:0x0202a17c module:main
from:0x020e8638 kind:load to:0x02114f20 add:0x8 module:overlay(31)
from:0x020e863c kind:load to:0x02114ee8 module:overlay(31)
from:0x020e8640 kind:load to:0x02114ecc module:overlay(31)
from:0x020e8644 kind:load to:0x02114eb0 module:overlay(31)
from:0x020e863c kind:load to:0x02114ee0 module:overlay(31) add:0x8
from:0x020e8640 kind:load to:0x02114ec4 module:overlay(31) add:0x8
from:0x020e8644 kind:load to:0x02114ea8 module:overlay(31) add:0x8
from:0x020e8654 kind:arm_call to:0x0207d6b4 module:overlay(0)
from:0x020e8668 kind:arm_call to:0x0207cd78 module:overlay(0)
from:0x020e8724 kind:load to:0x0203feb0 module:main
+27 -27
View File
@@ -50,7 +50,7 @@ func_ov031_020db080 kind:function(thumb,size=0x4) addr:0x020db080
func_ov031_020db084 kind:function(arm,size=0x10) addr:0x020db084
func_ov031_020db094 kind:function(arm,size=0x10) addr:0x020db094
func_ov031_020db0a4 kind:function(arm,size=0x10) addr:0x020db0a4
func_ov031_020db0b4 kind:function(arm,size=0x1c) addr:0x020db0b4
_ZN18UnkStruct_027e0d3419func_ov031_020d9714Ev kind:function(arm,size=0x1c) addr:0x020db0b4
func_ov031_020db0d0 kind:function(arm,size=0x18) addr:0x020db0d0
func_ov031_020db0e8 kind:function(arm,size=0x10) addr:0x020db0e8
_ZN18UnkStruct_027e0d3419func_ov031_020d9758Ev kind:function(arm,size=0x18) addr:0x020db0f8
@@ -444,7 +444,7 @@ _ZN22ActorItemBoomerang_11CC1EP18ActorItemBoomerang kind:function(arm,size=0x28)
_ZN22ActorItemBoomerang_11CD1Ev kind:function(arm,size=0x14) addr:0x020e6e60
_ZN22ActorItemBoomerang_11CD0Ev kind:function(arm,size=0x1c) addr:0x020e6e74
_ZN22ActorItemBoomerang_11C8vfunc_08EPK24UnkStruct_ov031_020f3310 kind:function(arm,size=0x30) addr:0x020e6e90
_ZN22ActorItemBoomerang_11C8vfunc_0CEPK24UnkStruct_ov031_020e54d4ii kind:function(arm,size=0x230) addr:0x020e6ec0
_ZN22ActorItemBoomerang_11C8vfunc_0CEPK24UnkStruct_ov031_020e54d4Pii kind:function(arm,size=0x230) addr:0x020e6ec0
_ZN26ActorItemBoomerang_Unknown19func_ov031_020e5704Ev kind:function(arm,size=0xc) addr:0x020e70f0
_ZN21ActorItemBoomerang_A0D0Ev kind:function(arm,size=0x1c) addr:0x020e70fc
_ZN21ActorItemBoomerang_CCD0Ev kind:function(arm,size=0x1c) addr:0x020e7118
@@ -481,29 +481,29 @@ _ZN19func_ov031_020e6774D0Ev kind:function(arm,size=0x68) addr:0x020e8160
func_ov031_020e81c8 kind:function(arm,size=0x7c) addr:0x020e81c8
func_ov031_020e8244 kind:function(arm,size=0x64) addr:0x020e8244
_ZN19func_ov031_020e68bcD0Ev kind:function(arm,size=0x1c) addr:0x020e82a8
func_ov031_020e82c4 kind:function(arm,size=0x28) addr:0x020e82c4
func_ov031_020e82ec kind:function(arm,size=0x1c) addr:0x020e82ec
func_ov031_020e8308 kind:function(arm,size=0x58) addr:0x020e8308
func_ov031_020e8360 kind:function(arm,size=0x58) addr:0x020e8360
func_ov031_020e83b8 kind:function(arm,size=0x168) addr:0x020e83b8
_ZN15ActorUnkSWBM_948vfunc_08EPK24UnkStruct_ov031_020f3310 kind:function(arm,size=0x28) addr:0x020e82c4
_ZN15ActorUnkSWBM_948vfunc_0CEPK24UnkStruct_ov031_020e54d4Pii kind:function(arm,size=0x1c) addr:0x020e82ec
_ZN15ActorUnkSWBM_988vfunc_0CEP5ActorP7VecFx32 kind:function(arm,size=0x58) addr:0x020e8308
_ZN15ActorUnkSWBM_988vfunc_10EP5Actor kind:function(arm,size=0x58) addr:0x020e8360
_ZN15ActorUnkSWBM_C88vfunc_00Eiii kind:function(arm,size=0x168) addr:0x020e83b8
_ZN19ActorProfileUnkSWBM10GetProfileEv kind:function(arm,size=0xc) addr:0x020e8520
_ZN19ActorProfileUnkSWBM6CreateEv kind:function(arm,size=0x24) addr:0x020e852c
_ZN19ActorProfileUnkSWBMC1Ev kind:function(arm,size=0x44) addr:0x020e8550
_ZN12ActorUnkSWBMC1Ev kind:function(arm,size=0xb8) addr:0x020e8594
_ZN12ActorUnkSWBM19func_ov031_020e6c60Ev kind:function(arm,size=0x14) addr:0x020e864c
_ZN12ActorUnkSWBM19func_ov031_020e6c74Ev kind:function(arm,size=0x14) addr:0x020e8660
_ZN12ActorUnkSWBM19func_ov031_020e6c88Ev kind:function(arm,size=0xc0) addr:0x020e8674
_ZN15ActorUnkSWBM_94D1Ev kind:function(arm,size=0x14) addr:0x020e864c
_ZN15ActorUnkSWBM_98D1Ev kind:function(arm,size=0x14) addr:0x020e8660
_ZN12ActorUnkSWBM8vfunc_18Ei kind:function(arm,size=0xc0) addr:0x020e8674
_ZN12ActorUnkSWBM19func_ov031_020e6d48Ev kind:function(arm,size=0x38) addr:0x020e8734
_ZN12ActorUnkSWBM19func_ov031_020e6d80Ev kind:function(arm,size=0x104) addr:0x020e876c
_ZN12ActorUnkSWBM19func_ov031_020e6e84Ev kind:function(arm,size=0x74) addr:0x020e8870
_ZN12ActorUnkSWBM19func_ov031_020e6ef8Ev kind:function(arm,size=0x268) addr:0x020e88e4
_ZN12ActorUnkSWBM19func_ov031_020e7160Ev kind:function(arm,size=0x2c) addr:0x020e8b4c
_ZN12ActorUnkSWBM19func_ov031_020e718cEv kind:function(arm,size=0x108) addr:0x020e8b78
_ZN12ActorUnkSWBM19func_ov031_020e7294Ev kind:function(arm,size=0x40) addr:0x020e8c80
_ZN12ActorUnkSWBMD0Ev kind:function(arm,size=0x1c) addr:0x020e8cc0
_ZN12ActorUnkSWBM19func_ov031_020e72f0Ev kind:function(arm,size=0x1c) addr:0x020e8cdc
_ZN12ActorUnkSWBM19func_ov031_020e6d80Ei kind:function(arm,size=0x104) addr:0x020e876c
_ZN12ActorUnkSWBM19func_ov031_020e6e84Es kind:function(arm,size=0x74) addr:0x020e8870
_ZN12ActorUnkSWBM8vfunc_20Ev kind:function(arm,size=0x268) addr:0x020e88e4
_ZN12ActorUnkSWBM8vfunc_24Ev kind:function(arm,size=0x2c) addr:0x020e8b4c
_ZN12ActorUnkSWBM19func_ov031_020e718cEP7VecFx32P5Mat3pists kind:function(arm,size=0x108) addr:0x020e8b78
_ZN12ActorUnkSWBM8vfunc_2CEi kind:function(arm,size=0x40) addr:0x020e8c80
_ZN15ActorUnkSWBM_94D0Ev kind:function(arm,size=0x1c) addr:0x020e8cc0
_ZN15ActorUnkSWBM_98D0Ev kind:function(arm,size=0x1c) addr:0x020e8cdc
_ZN12ActorUnkSWBMD1Ev kind:function(arm,size=0x28) addr:0x020e8cf8
_ZN12ActorUnkSWBM19func_ov031_020e7334Ev kind:function(arm,size=0x30) addr:0x020e8d20
_ZN12ActorUnkSWBMD0Ev kind:function(arm,size=0x30) addr:0x020e8d20
_ZN19ActorProfileUnkSWBMD1Ev kind:function(arm,size=0x14) addr:0x020e8d50
func_ov031_020e7378 kind:function(arm,size=0x74) addr:0x020e8d64
_ZN19func_ov031_020e73ecD1Ev kind:function(arm,size=0x20) addr:0x020e8dd8
@@ -924,7 +924,7 @@ _ZN18ActorShotArrow_178D1Ev kind:function(arm,size=0x1c) addr:0x020f4cc0
_ZN18ActorShotArrow_178D0Ev kind:function(arm,size=0x24) addr:0x020f4cdc
_ZN18ActorShotArrow_17819func_ov031_020f3304Ev kind:function(arm,size=0xc) addr:0x020f4d00
_ZN18ActorShotArrow_1788vfunc_08EPK24UnkStruct_ov031_020f3310 kind:function(arm,size=0xac) addr:0x020f4d0c
_ZN18ActorShotArrow_1788vfunc_0CEPK24UnkStruct_ov031_020e54d4ii kind:function(arm,size=0x3f8) addr:0x020f4db8
_ZN18ActorShotArrow_1788vfunc_0CEPK24UnkStruct_ov031_020e54d4Pii kind:function(arm,size=0x3f8) addr:0x020f4db8
_ZN18ActorShotArrow_194C1EP14ActorShotArrow kind:function(arm,size=0x40) addr:0x020f51b0
_ZN18ActorShotArrow_19419func_ov031_020f374cEP5Actor kind:function(arm,size=0x164) addr:0x020f51f0
_ZN18ActorShotArrow_1948vfunc_10EP5Actor kind:function(arm,size=0x388) addr:0x020f5354
@@ -1109,7 +1109,7 @@ _ZN19ActorProfileUnkFLEND1Ev kind:function(arm,size=0x14) addr:0x020f9d10
_ZN24ActorProfileRollingStone10GetProfileEv kind:function(arm,size=0xc) addr:0x020f9d24
_ZN24ActorProfileRollingStone6CreateEv kind:function(arm,size=0x24) addr:0x020f9d30
_ZN24ActorProfileRollingStoneC1Ev kind:function(arm,size=0x44) addr:0x020f9d54
_ZN21ActorRollingStone_1048vfunc_0CEPK24UnkStruct_ov031_020e54d4ii kind:function(arm,size=0x90) addr:0x020f9d98
_ZN21ActorRollingStone_1048vfunc_0CEPK24UnkStruct_ov031_020e54d4Pii kind:function(arm,size=0x90) addr:0x020f9d98
_ZN21ActorRollingStone_1048vfunc_10Ev kind:function(arm,size=0xb8) addr:0x020f9e28
_ZN20ActorRollingStone_D48vfunc_10EP5Actor kind:function(arm,size=0x44) addr:0x020f9ee0
_ZN17ActorRollingStoneC1Ev kind:function(arm,size=0x194) addr:0x020f9f24
@@ -2265,12 +2265,12 @@ _ZTV19data_ov031_02114da8 kind:data(any) addr:0x02114da8
_ZTV19data_ov031_02114dcc kind:data(any) addr:0x02114dcc
_ZTV19data_ov031_02114e30 kind:data(any) addr:0x02114e28
_ZTV19data_ov031_02114e44 kind:data(any) addr:0x02114e44
data_ov031_02114eb0 kind:data(any) addr:0x02114eb0
data_ov031_02114eb4 kind:data(any) addr:0x02114eb4
data_ov031_02114ecc kind:data(any) addr:0x02114ecc
data_ov031_02114ee8 kind:data(any) addr:0x02114ee8
_ZTV19data_ov031_02114efc kind:data(any) addr:0x02114efc
_ZTV19data_ov031_02114f20 kind:data(any) addr:0x02114f20
_ZTV15ActorUnkSWBM_C8 kind:data(any) addr:0x02114ea8
data_ov031_02113114 kind:data(any) addr:0x02114eb4
_ZTV15ActorUnkSWBM_98 kind:data(any) addr:0x02114ec4
_ZTV15ActorUnkSWBM_94 kind:data(any) addr:0x02114ee0
_ZTV19ActorProfileUnkSWBM kind:data(any) addr:0x02114efc
_ZTV12ActorUnkSWBM kind:data(any) addr:0x02114f20
data_ov031_02114f7c kind:data(any) addr:0x02114f7c
data_ov031_02114f80 kind:data(any) addr:0x02114f80
data_ov031_02114f84 kind:data(any) addr:0x02114f84
+1 -1
View File
@@ -54,7 +54,7 @@ _ZN24UnkStruct_ov063_02162ea8C1Ev kind:function(arm,size=0x30) addr:0x0215c570
_ZN24UnkStruct_ov063_02162ea8D1Ev kind:function(arm,size=0x14) addr:0x0215c5a0
_ZN24UnkStruct_ov063_02162ea8D0Ev kind:function(arm,size=0x1c) addr:0x0215c5b4
_ZN24UnkStruct_ov063_02162ea88vfunc_08EP24UnkStruct_ov031_020f3310 kind:function(arm,size=0x4c) addr:0x0215c5d0
_ZN24UnkStruct_ov063_02162ea88vfunc_0CEPK24UnkStruct_ov031_020e54d4ii kind:function(arm,size=0xcc) addr:0x0215c61c
_ZN24UnkStruct_ov063_02162ea88vfunc_0CEPK24UnkStruct_ov031_020e54d4Pii kind:function(arm,size=0xcc) addr:0x0215c61c
_ZN24UnkStruct_ov063_02162f148vfunc_3CEv kind:function(arm,size=0x24) addr:0x0215c6e8
_ZN24UnkStruct_ov063_02162f148vfunc_38Eii kind:function(arm,size=0x2c) addr:0x0215c70c
_ZN24UnkStruct_ov063_02162ee8D0Ev kind:function(arm,size=0x1c) addr:0x0215c738
+1 -1
View File
@@ -36,7 +36,7 @@ public:
/* 00 */ virtual ~ActorItemBoomerang_11C() override;
/* 08 */ virtual bool vfunc_08(const UnkStruct_ov031_020f3310 *param1) override;
/* 0C */ virtual bool vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 param2, unk32 param3) override;
/* 0C */ virtual bool vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) override;
};
class ActorItemBoomerang_A0 : public UnkStruct_ov031_Items_01 {
+1 -1
View File
@@ -33,7 +33,7 @@ public:
/* 04 */
// data_ov031_02114a5c
/* 0C */ virtual bool vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 param2,
/* 0C */ virtual bool vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2,
unk32 param3) override; // func_ov031_020f8354
/* 10 */ virtual void vfunc_10() override; // func_ov031_020f83e4
/* 14 */
+1 -1
View File
@@ -50,7 +50,7 @@ public:
// data_ov031_02114288
/* 00 */ virtual ~ActorShotArrow_178() override;
/* 08 */ virtual bool vfunc_08(const UnkStruct_ov031_020f3310 *param1) override;
/* 0C */ virtual bool vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 param2, unk32 param3) override;
/* 0C */ virtual bool vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) override;
void func_ov031_020f3304();
};
+1 -1
View File
@@ -42,7 +42,7 @@ public:
/* 00 (base) */ virtual ~UnkStruct_ov063_02162ea8();
/* 08 */ virtual bool vfunc_08(UnkStruct_ov031_020f3310 *param1) override;
/* 0C */ virtual bool vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 param2, unk32 param3) override;
/* 0C */ virtual bool vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) override;
};
class UnkStruct_ov063_02162ee8 : public UnkStruct_ov000_020b3268 {
+62 -25
View File
@@ -1,43 +1,81 @@
//! TODO: This file was generated automatically and might contain errors
#pragma once
#include "Actor/Actor.hpp"
#include "Actor/ActorProfile.hpp"
#include "Player/PlayerGet.hpp"
#include "global.h"
#include "types.h"
class ActorUnkSWBM_C4 : public Actor_C4 {
public:
ActorUnkSWBM_C4(Actor *param1);
class ActorUnkSWBM;
enum ActorUnkSWBMState_ {
ActorUnkSWBMState_0 = 0,
ActorUnkSWBMState_1 = 1,
ActorUnkSWBMState_2 = 2,
ActorUnkSWBMState_Max
};
/* 00 */ virtual bool vfunc_00(ActorRef ref, unk32 param2) override;
/* 04 */ virtual bool vfunc_04() override;
/* 08 */ virtual void vfunc_08() override;
/* 0C */ virtual void vfunc_0C(unk32 param1) override;
class ActorUnkSWBM_94 : public UnkStruct_ov031_Items_00_Base {
public:
/* 00 (base) */
/* 04 */
// data_ov031_02113148
/* 08 */ virtual bool vfunc_08(const UnkStruct_ov031_020f3310 *param1) override; // func_ov031_020e68d8
/* 0C */ virtual bool vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2,
unk32 param3) override; // func_ov031_020e6900
};
class ActorUnkSWBM_98 : public UnkStruct_ov031_Items_01 {
public:
/* 00 (base) */
/* 2C */ ActorUnkSWBM *mUnk_2C;
/* 30 */
ActorUnkSWBM_98(ActorUnkSWBM *param1) :
mUnk_2C(param1) {}
// data_ov031_0211312c
/* 0C */ virtual bool vfunc_0C(Actor *param1, VecFx32 *vector) override; // func_ov031_020e691c
/* 10 */ virtual void vfunc_10(Actor *actor) override; // func_ov031_020e6974
};
class ActorUnkSWBM_C8 : public UnkStruct_PlayerGet_74_base {
public:
/* 00 (base) */
/* 04 */ STRUCT_PAD(0x04, 0x14);
/* 14 */ ActorUnkSWBM *mUnk_14;
/* 18 */
ActorUnkSWBM_C8(ActorUnkSWBM *param1) :
mUnk_14(param1) {}
// data_ov031_02113110
/* 00 */ virtual void vfunc_00(unk32 param1, unk32 param2, unk32 param3) override; // func_ov031_020e69cc
};
class ActorUnkSWBM : public Actor {
public:
/* 00 (base) */
/* 94 */
/* 000 (base) */
/* 094 */ ActorUnkSWBM_94 mUnk_094;
/* 098 */ ActorUnkSWBM_98 mUnk_098;
/* 0C8 */ ActorUnkSWBM_C8 mUnk_0C8;
/* 0E0 */ unk16 mUnk_0E0;
/* 0E4 */ VecFx32 mUnk_0E4[0x3];
/* 108 */ unk16 mUnk_108;
/* 10A */ unk16 mUnk_10A;
/* 10C */
ActorUnkSWBM();
/* 4C */ virtual ~ActorUnkSWBM() override;
/* 18 */ virtual bool vfunc_18(unk32 param1) override;
/* 20 */ virtual void vfunc_20() override;
/* 24 */ virtual void vfunc_24() override;
/* 2C */ virtual void vfunc_2C(unk32 param1) override;
void func_ov031_020e6c60(void);
void func_ov031_020e6c74(void);
void func_ov031_020e6c88(void);
void func_ov031_020e6d48(void);
void func_ov031_020e6d80(void);
void func_ov031_020e6e84(void);
void func_ov031_020e6ef8(void);
void func_ov031_020e7160(void);
void func_ov031_020e718c(void);
void func_ov031_020e7294(void);
void func_ov031_020e72f0(void);
void func_ov031_020e7334(void);
void func_ov031_020e6d48();
void func_ov031_020e6d80(unk32 param1);
void func_ov031_020e6e84(ActorState state);
static void func_ov031_020e718c(VecFx32 *param0, Mat3p *param1, s32 param2, s16 param3, u16 param4, s16 param5);
};
class ActorProfileUnkSWBM : public ActorProfile {
@@ -45,7 +83,6 @@ public:
/* 00 (base) */
ActorProfileUnkSWBM();
~ActorProfileUnkSWBM();
/* 0C */ virtual Actor *Create();
+3
View File
@@ -13,6 +13,9 @@ struct Cylinder {
Cylinder(fx32 size) {
this->Init(size);
}
Cylinder(fx32 x, fx32 y, fx32 z, fx32 size) {
this->Init(x, y, z, size);
}
void Init(fx32 size) {
pos.x = 0;
+1
View File
@@ -1303,6 +1303,7 @@ public:
class UnkStruct_PlayerGet_74_base {
public:
/* 00 (vtable) */
/* 04 */
/* 00 */ virtual void vfunc_00(unk32 param1, unk32 param2, unk32 param3);
+1 -1
View File
@@ -14,7 +14,7 @@ public:
static UnkStruct_027e0958 *Create();
static void Destroy();
void func_ov000_02058fc4(UnkStruct_PlayerGet_74 *param1, VecFx32 *param2);
void func_ov000_02058fc4(UnkStruct_PlayerGet_74_base *param1, VecFx32 *param2);
};
extern UnkStruct_027e0958 *data_027e0958;
+1 -1
View File
@@ -302,7 +302,7 @@ public:
// data_ov000_020b2838
/* 00 */ virtual ~UnkStruct_027e0ce0_38_Base();
/* 08 */ virtual bool vfunc_08(const UnkStruct_ov031_020f3310 *param1);
/* 0C */ virtual bool vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 param2, unk32 param3);
/* 0C */ virtual bool vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3);
/* 10 */ virtual void vfunc_10();
/* 14 */
};
+1
View File
@@ -21,6 +21,7 @@ public:
static void Destroy();
// overlay 31
bool func_ov031_020d9714();
bool func_ov031_020d9758();
bool func_ov031_020d97e4();
bool func_ov031_020d97f4();
+2
View File
@@ -67,9 +67,11 @@ extern "C" {
#define REG_GFX_FIFO_VERTEX_COLOR (*(vu32 *) 0x04000480)
#define REG_GFX_FIFO_VERTEX_TEXCOORD (*(vu32 *) 0x04000488)
#define REG_GFX_FIFO_VERTEX_16 (*(vu32 *) 0x0400048C)
#define REG_GFX_FIFO_VERTEX_XZ (*(vu32 *) 0x04000498)
#define REG_GFX_FIFO_POLYGON_ATTR (*(vu32 *) 0x040004A4)
#define REG_GFX_FIFO_TEXTURE_PARAM (*(vu32 *) 0x040004A8)
#define REG_GFX_FIFO_TEXTURE_PALETTE (*(vu32 *) 0x040004AC)
#define REG_GFX_FIFO_DIFFUSE_AMBIENT_REFLECT (*(vu32 *) 0x040004C0)
#define REG_GFX_FIFO_POLYGONS_BEGIN (*(vu32 *) 0x04000500)
#define REG_GFX_FIFO_POLYGONS_END (*(vu32 *) 0x04000504)
#define REG_GFX_FIFO_SWAP_BUFFERS (*(vu32 *) 0x04000540)
+8 -8
View File
@@ -365,7 +365,7 @@ bool ActorItemBoomerang_11C::vfunc_08(const UnkStruct_ov031_020f3310 *param1) {
return func_ov000_020982d8();
}
bool ActorItemBoomerang_11C::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 param2, unk32 param3) {
bool ActorItemBoomerang_11C::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) {
u32 val = (param1->mUnk_08 >> 9) & 7;
if (val == 0x2) {
this->mUnk_08->func_ov031_020e5034(0x1);
@@ -381,9 +381,9 @@ bool ActorItemBoomerang_11C::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, un
Vec2bCpp pos;
if (this->mUnk_08->mState == ActorItemBoomerangState_1) {
if (param2 & 0x1000) {
pos.x = (u8) param2 >> 16;
pos.y = (u8) param2 >> 24;
if (*param2 & 0x1000) {
pos.x = (u8) *param2 >> 16;
pos.y = (u8) *param2 >> 24;
MapObject *mapObject = gpMapObjManager->func_01fff498(pos);
if (mapObject != NULL) {
@@ -395,16 +395,16 @@ bool ActorItemBoomerang_11C::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, un
return false;
}
if (param2 & 0x1000) {
pos.x = (u8) param2 >> 16;
pos.y = (u8) param2 >> 24;
if (*param2 & 0x1000) {
pos.x = (u8) *param2 >> 16;
pos.y = (u8) *param2 >> 24;
MapObject *mapObject = gpMapObjManager->func_01fff498(pos);
if (mapObject != NULL) {
switch (mapObject->GetMapObjectId()) {
case MapObjectId_SKDI:
case MapObjectId_SWHT:
data_027e0d2c->func_ov031_020d95c8(param2);
data_027e0d2c->func_ov031_020d95c8(*param2);
case MapObjectId_Pot:
mapObject->vfunc_1C(this->mUnk_08->mRef, 0xC, &this->mUnk_08->mVel);
return false;
+1 -1
View File
@@ -62,7 +62,7 @@ ActorProfileRollingStone::ActorProfileRollingStone() :
}
// non-matching
bool ActorRollingStone_104::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 param2, unk32 param3) {}
bool ActorRollingStone_104::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) {}
// non-matching
void ActorRollingStone_104::vfunc_10() {}
+1 -1
View File
@@ -987,7 +987,7 @@ bool ActorShotArrow_178::vfunc_08(const UnkStruct_ov031_020f3310 *param1) {
}
// non-matching
bool ActorShotArrow_178::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 param2, unk32 param3) {}
bool ActorShotArrow_178::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) {}
ActorShotArrow_194::ActorShotArrow_194(ActorShotArrow *param1) {
this->mUnk_2C = param1;
+305 -18
View File
@@ -1,7 +1,100 @@
//! TODO: This file was generated automatically and might contain errors
#include "Actor/ActorUnkSWBM.hpp"
#include "System/SysNew.hpp"
#include "Unknown/UnkStruct_027e0958.hpp"
#include "Unknown/UnkStruct_027e095c.hpp"
#include "Unknown/UnkStruct_027e09a8.hpp"
#include "Unknown/UnkStruct_027e09c0.hpp"
#include "Unknown/UnkStruct_027e0cec.hpp"
#include "Unknown/UnkStruct_027e0d34.hpp"
#include "Unknown/UnkStruct_ov000_020b4ec4.hpp"
struct UnkStruct_ov031_020e5d18_00 {
Actor *mUnk_00;
u8 mUnk_04[0x14];
};
extern "C" void func_01ffe6c4(Actor **, ActorRef, VecFx32 *, VecFx32 *, s32, VecFx32 *, UnkStruct_ov031_Items_00_Base *);
extern "C" bool func_ov000_02080998(VecFx32 *);
extern "C" void /*GX_*/ func_02024a84(Mat3p *param1);
extern "C" void FlushGfxQueue();
static const Cylinder data_ov031_02113114(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.35f));
// non-matching
bool ActorUnkSWBM_94::vfunc_08(const UnkStruct_ov031_020f3310 *param1) {
return (((u32) param1->mUnk_04->mUnk_24[param1->mUnk_00->mUnk_06] >> 0x16) & 0x1) != 0x1;
}
bool ActorUnkSWBM_94::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) {
return (((u32) param2[0x2] >> 0x16) & 0x1) != 0x1;
}
bool ActorUnkSWBM_98::vfunc_0C(Actor *param1, VecFx32 *vector) {
bool retValue = this->UnkStruct_ov031_Items_01::vfunc_0C(param1, vector);
if (!retValue) {
return retValue;
}
u16 angle = this->mUnk_2C->mAngle;
vector->x = SIN(angle);
vector->y = FLOAT_TO_FX32(0.0f);
vector->z = COS(angle);
return retValue;
}
void ActorUnkSWBM_98::vfunc_10(Actor *actor) {
switch (GET_FLAG(actor->mFlags, ActorFlag_17)) {
case false:
ActorUnkSWBM *actorSWBM = this->mUnk_2C;
if (actorSWBM->mState != ActorUnkSWBMState_0) {
break;
}
actorSWBM->func_ov031_020e6e84(ActorUnkSWBMState_1);
break;
case true:
this->mUnk_2C->func_ov031_020e6d80(0x8C98);
break;
}
}
// non-matching
void ActorUnkSWBM_C8::vfunc_00(unk32 param1, unk32 param2, unk32 param3) {
ActorUnkSWBM *actor = this->mUnk_14;
FlushGfxQueue();
REG_GFX_FIFO_DIFFUSE_AMBIENT_REFLECT = 0x1084FFFF;
VecFx32 *textureParam = data_027e095c->mUnk_000;
REG_GFX_FIFO_TEXTURE_PARAM = textureParam[0x8].z;
unk32 var_r2 = 1;
if (((textureParam[0x8].z >> 0x1A) & 7) != 2) {
var_r2 = 0;
}
REG_GFX_FIFO_TEXTURE_PALETTE = ((u32) (textureParam[0x8].y << 0x10) >> 0xD) >> (4 - var_r2);
Mat3p mat;
u16 angle = actor->mAngle;
Mat3p_InitYRotation(&mat, SIN(angle), COS(angle));
s16 var_r8 = 0xB33;
s32 var_r9 = 0x1F - ((0xE - actor->mUnk_0E0) * 2);
u16 var_r7 = 0xB33;
ActorUnkSWBM::func_ov031_020e718c(&actor->mPos, &mat, var_r9, 0xB33, 0xB33, actor->mUnk_108);
unk16 var_r10 = actor->mUnk_10A;
if ((s32) var_r10 >= 3) {
var_r10 = 3;
}
for (unk32 var_r6 = 0; var_r6 < (s32) var_r10; ++var_r6) {
var_r8 += 0x11F;
var_r7 += 0x23D;
var_r9 -= 5;
ActorUnkSWBM::func_ov031_020e718c(&actor->mUnk_0E4[var_r6], &mat, var_r9, var_r8, var_r7, actor->mUnk_108);
}
}
DECL_PROFILE(ActorProfileUnkSWBM);
@@ -10,22 +103,216 @@ Actor *ActorProfileUnkSWBM::Create() {
}
ActorProfileUnkSWBM::ActorProfileUnkSWBM() :
ActorProfile(ActorId_SWBM) {}
ActorProfile(ActorId_SWBM) {
VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mUnk_04.pos);
this->mUnk_04.size = FLOAT_TO_FX32(0.35f);
}
ActorUnkSWBM::ActorUnkSWBM() {}
ActorUnkSWBM::ActorUnkSWBM() :
mUnk_098(this),
mUnk_0C8(this),
mUnk_0E0(0xE),
mUnk_108(0x0),
mUnk_10A(0x0) {
MI_CpuFill32(0x0, this->mUnk_0E4, ARRAY_LEN(this->mUnk_0E4) * sizeof *this->mUnk_0E4);
this->mState = ActorUnkSWBMState_0;
this->mUnk_52 = 0xFFFF;
this->mUnk_50 = 0x0000;
}
void ActorUnkSWBM::func_ov031_020e6c60(void) {}
void ActorUnkSWBM::func_ov031_020e6c74(void) {}
void ActorUnkSWBM::func_ov031_020e6c88(void) {}
void ActorUnkSWBM::func_ov031_020e6d48(void) {}
void ActorUnkSWBM::func_ov031_020e6d80(void) {}
void ActorUnkSWBM::func_ov031_020e6e84(void) {}
void ActorUnkSWBM::func_ov031_020e6ef8(void) {}
void ActorUnkSWBM::func_ov031_020e7160(void) {}
void ActorUnkSWBM::func_ov031_020e718c(void) {}
void ActorUnkSWBM::func_ov031_020e7294(void) {}
void ActorUnkSWBM::func_ov031_020e72f0(void) {}
void ActorUnkSWBM::func_ov031_020e7334(void) {}
bool ActorUnkSWBM::vfunc_18(unk32 param1) {
this->mUnk_44 = 0x1F;
this->mUnk_098.mUnk_04 = this->mRef;
ActorUnkSWBM::~ActorUnkSWBM() {}
ActorProfileUnkSWBM::~ActorProfileUnkSWBM() {}
this->mUnk_34 = (Cylinder *) &data_ov031_02113114;
VecFx32_Copy(&this->mPos, &this->mUnk_098.mUnk_0C.pos);
this->mUnk_098.mUnk_0C.size = FLOAT_TO_FX32(0.35f);
this->mVel.x = MUL_FX32(SIN((u16) this->mAngle), 0xB33);
this->mVel.z = MUL_FX32(COS((u16) this->mAngle), 0xB33);
this->mVel.y = FLOAT_TO_FX32(0.0f);
return true;
}
void ActorUnkSWBM::func_ov031_020e6d48() {
switch (this->mState) {
case ActorUnkSWBMState_1:
if (this->mUnk_0E0 != 6) {
return;
}
case ActorUnkSWBMState_0:
this->mState = ActorUnkSWBMState_0;
this->func_ov031_020e6d80(0x8C98);
break;
default:
break;
}
}
void ActorUnkSWBM::func_ov031_020e6d80(unk32 param1) {
if (this->mState != ActorUnkSWBMState_0) {
return;
}
if (param1 >= 0x0) {
data_027e09a8->func_ov000_02071b30((u16) param1, &this->mPos, 0x0);
}
if (!data_027e0d34->func_ov031_020d9714()) {
VecFx16 vecSp08;
data_027e0cec->func_ov000_0209feac(0x8E0, &this->mPos, 0x1, 0x0, 0x0);
s16 angle = this->mAngle - DEG_TO_ANG(180);
vecSp08.x = SIN((u16) angle);
vecSp08.y = FLOAT_TO_FX32(0.0f);
vecSp08.z = COS((u16) angle);
data_027e0cec->func_ov000_0209ff24(0x8E1, &this->mPos, &vecSp08, 0x1);
}
this->func_ov031_020e6e84(ActorUnkSWBMState_1);
this->mUnk_0E0 = 0x3;
}
void ActorUnkSWBM::func_ov031_020e6e84(ActorState state) {
switch (state) {
case ActorUnkSWBMState_2:
UNSET_FLAG(this->mFlags, ActorFlag_Alive);
break;
case ActorUnkSWBMState_1:
if (this->mUnk_0E0 > 0x6) {
this->mUnk_0E0 = 0x6;
}
this->mVel.x /= 3;
this->mVel.z /= 3;
break;
}
this->mState = state;
this->mUnk_52 = 0xFFFF;
this->mUnk_50 = 0x0000;
}
// non-matching
void ActorUnkSWBM::vfunc_20() {
VecFx32_Copy(&this->mPos, &this->mPrevPos);
VecFx32_Add(&this->mPos, &this->mVel, &this->mPos);
for (VecFx32 *vec = &this->mUnk_0E4[ARRAY_LEN(this->mUnk_0E4) - 1]; vec > &this->mUnk_0E4[0]; --vec) {
VecFx32_Copy(vec - 1, vec);
}
VecFx32_Copy(&this->mPrevPos, &this->mUnk_0E4[0]);
++this->mUnk_10A;
if (this->mState != ActorUnkSWBMState_2) {
--this->mUnk_0E0;
if (this->mUnk_0E0 <= 0) {
this->func_ov031_020e6e84(ActorUnkSWBMState_2);
} else {
s16 newVal = this->mUnk_108 + 0x666;
if (newVal >= 0xB33) {
newVal = 0xB33;
}
this->mUnk_108 = newVal;
}
}
this->IsTimerOut();
if (this->mState != ActorUnkSWBMState_2) {
if (!Actor::func_ov017_020beeec(0x0)) {
this->func_ov031_020e6e84(ActorUnkSWBMState_2);
return;
}
if (func_ov000_02080998(&this->mPos)) {
this->func_ov031_020e6e84(ActorUnkSWBMState_2);
return;
}
}
switch (this->mState) {
case ActorUnkSWBMState_0:
if (this->func_ov000_02098ab4(0x4, 0x19, 0x2, &this->mVel)) {
this->func_ov031_020e6d80(-0x1);
} else {
VecFx32_Copy(&this->mPos, &this->mUnk_098.mUnk_0C.pos);
data_027e09c0->func_ov000_0207e58c(this->mRef, 0x7, 0x4, &this->mUnk_098);
}
//! TODO : find this
UnkStruct_ov031_020e5d18_00 actorSpC;
actorSpC.mUnk_00 = NULL;
func_01ffe6c4((Actor **) &actorSpC, this->mRef, &this->mPos, &this->mPrevPos, (s16) this->mUnk_44, &this->mPos,
&this->mUnk_094);
unk32 val = ((Actor *) &actorSpC)->func_ov000_0207df88(this->mUnk_30, 0x7) |
((Actor *) &actorSpC)->func_ov000_0207e294(this->mUnk_30);
this->mUnk_46 = val;
if (val == 0x0) {
return;
}
this->func_ov031_020e6d80(-0x1);
break;
case ActorUnkSWBMState_1:
break;
}
}
void ActorUnkSWBM::vfunc_24() {
if (this->mState == ActorUnkSWBMState_0) {
this->func_ov031_020e6e84(ActorUnkSWBMState_1);
return;
}
this->vfunc_20();
}
// non-matching
void ActorUnkSWBM::func_ov031_020e718c(VecFx32 *param0, Mat3p *param1, s32 param2, s16 param3, u16 param4, s16 param5) {
if (param2 <= 0) {
return;
}
REG_GFX_FIFO_POLYGON_ATTR = data_ov000_020b4ec4.func_01ffc768(0x4) << 0x18 | 0x80 | (param2 << 0x10);
REG_GFX_FIFO_MATRIX_PUSH = false;
REG_GFX_FIFO_MATRIX_TRANSLATE = param0->x;
REG_GFX_FIFO_MATRIX_TRANSLATE = param0->y;
REG_GFX_FIFO_MATRIX_TRANSLATE = param0->z;
func_02024a84(param1);
REG_GFX_FIFO_POLYGONS_BEGIN = true;
REG_GFX_FIFO_VERTEX_TEXCOORD = 0x02000200;
u16 var1 = (u16) (s16) -param3;
u16 var2 = (u16) param3;
u16 var3 = (u16) (s16) -param5;
REG_GFX_FIFO_VERTEX_16 = var1;
REG_GFX_FIFO_VERTEX_16 = var3;
REG_GFX_FIFO_VERTEX_TEXCOORD = 0x200;
REG_GFX_FIFO_VERTEX_XZ = var1 | (param4 << 0x10);
REG_GFX_FIFO_VERTEX_TEXCOORD = 0x0;
REG_GFX_FIFO_VERTEX_XZ = var2 | (param4 << 0x10);
REG_GFX_FIFO_VERTEX_TEXCOORD = 0x02000000;
REG_GFX_FIFO_VERTEX_XZ = var2 | (var3 << 0x10);
REG_GFX_FIFO_POLYGONS_END = false;
REG_GFX_FIFO_MATRIX_POP = true;
}
void ActorUnkSWBM::vfunc_2C(unk32 param1) {
if (this->mState == ActorUnkSWBMState_2) {
return;
}
if (!this->func_01fff5d0(param1, 0x0)) {
return;
}
data_027e0958->func_ov000_02058fc4(&this->mUnk_0C8, &this->mPos);
}
+2 -2
View File
@@ -131,8 +131,8 @@ bool UnkStruct_ov063_02162ea8::vfunc_08(UnkStruct_ov031_020f3310 *param1) {
return retVal;
}
bool UnkStruct_ov063_02162ea8::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 param2, unk32 param3) {
UnkStruct_02162ea8_vfunc_0C *param2Struct = (UnkStruct_02162ea8_vfunc_0C *) &param2;
bool UnkStruct_ov063_02162ea8::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) {
UnkStruct_02162ea8_vfunc_0C *param2Struct = (UnkStruct_02162ea8_vfunc_0C *) param2;
if ((*(u16 *) &param2Struct->mUnk_04 & 0x1000) != 0) {
UnkStruct_02162ea8_vfunc_0C tmp;
tmp.mUnk_04 = *(volatile unk32 *) &param2Struct->mUnk_04;