Decompiling SWSW (#144)

* feat: init decompiling

* feat: increase matching

* feat: better matching

* feat: match up jp

* fix: used ifdef instand of if

* doc: more explicit comment

Co-authored-by: Yanis <35189056+Yanis002@users.noreply.github.com>

* style: add brackets for switch cases which define variables

---------

Co-authored-by: Yanis <35189056+Yanis002@users.noreply.github.com>
This commit is contained in:
Alessevan
2026-08-24 12:41:00 -04:00
committed by GitHub
parent 05612891ad
commit 1634c50231
21 changed files with 673 additions and 118 deletions
+1 -1
View File
@@ -128,7 +128,7 @@ func_01ffc520 kind:function(arm,size=0x5c) addr:0x01ffc520
_ZN11ModelRender8vfunc_0CEv kind:function(arm,size=0x24) addr:0x01ffc57c
func_01ffc5a0 kind:function(arm,size=0x94) addr:0x01ffc5a0
func_01ffc634 kind:function(arm,size=0xa0) addr:0x01ffc634
_ZN19UnkSystem6_Derived213func_01ffc6d4E14UnkAngleStructP7VecFx32 kind:function(arm,size=0x70) addr:0x01ffc6d4
_ZN15ModelRenderBase13func_01ffc6d4E14UnkAngleStructP7VecFx32 kind:function(arm,size=0x70) addr:0x01ffc6d4
func_01ffc744 kind:function(arm,size=0x24) addr:0x01ffc744
_ZN24UnkStruct_ov000_020b4ec413func_01ffc768Ei kind:function(arm,size=0x3c) addr:0x01ffc768
_ZN20ModelRender_Derived18vfunc_1CEP19UnkSystem4_vfunc_1C kind:function(arm,size=0xb4) addr:0x01ffc7a4
+1 -1
View File
@@ -101,7 +101,7 @@ _ZN11ModelRender8vfunc_1CEP19UnkSystem4_vfunc_1C kind:function(arm,size=0x4) add
_ZN11ModelRender19func_ov000_02057c38Eii kind:function(arm,size=0x34) addr:0x02057c38
func_ov000_02057c6c kind:function(arm,size=0x2c) addr:0x02057c6c
_ZN11ModelRender19func_ov000_02057c98EP10UnkSystem5 kind:function(arm,size=0x18) addr:0x02057c98
func_ov000_02057cb0 kind:function(arm,size=0x18) addr:0x02057cb0
_ZN15ModelRenderBase19func_ov000_02057cb0Ev kind:function(arm,size=0x18) addr:0x02057cb0
func_ov000_02057cc8 kind:function(arm,size=0x2c) addr:0x02057cc8
_ZN11ModelRender19func_ov000_02057cf4Ev kind:function(arm,size=0x2c) addr:0x02057cf4
_ZN11ModelRender19func_ov000_02057d20Eh kind:function(thumb,size=0x1c) addr:0x02057d20
+2 -1
View File
@@ -2,7 +2,7 @@
.rodata start:0x02121ed0 end:0x02121f34 kind:rodata align:4
.init start:0x02121f34 end:0x0212212c kind:code align:4
.ctor start:0x0212212c end:0x02122140 kind:rodata align:4
.data start:0x02122160 end:0x02122820 kind:data align:32
.data start:0x02122160 end:0x02122818 kind:data align:32
.bss start:0x02122820 end:0x02122bc0 kind:bss align:32
src/032_MapA1/Actor/ActorUnkKURI.cpp:
@@ -34,4 +34,5 @@ src/032_MapA1/MapObject/MapObjectUnkSWSW.cpp:
.text start:0x02120e90 end:0x02121ed0
.init start:0x021220dc end:0x0212212c
.ctor start:0x0212213c end:0x02122140
.data start:0x02122744 end:0x02122818
.bss start:0x02122aa8 end:0x02122ad8
+5 -5
View File
@@ -916,14 +916,14 @@ from:0x02120eac kind:arm_call to:0x02011f3c module:main
from:0x02120eb8 kind:arm_call to:0x02121104 module:overlay(32)
from:0x02120ed0 kind:arm_call to:0x0209c9a8 module:overlay(0)
from:0x02120ee0 kind:arm_call to:0x0207c018 module:overlay(0)
from:0x02120f64 kind:load to:0x02122768 module:overlay(32)
from:0x02120f68 kind:load to:0x02122784 module:overlay(32)
from:0x02120f6c kind:load to:0x0212274c module:overlay(32)
from:0x02120f64 kind:load to:0x02122760 module:overlay(32) add:0x8
from:0x02120f68 kind:load to:0x0212277c module:overlay(32) add:0x8
from:0x02120f6c kind:load to:0x02122744 module:overlay(32) add:0x8
from:0x02120f80 kind:arm_call_thumb to:0x02057b54 module:overlay(0)
from:0x02120fa8 kind:arm_call to:0x02057f18 module:overlay(0)
from:0x02120fb8 kind:arm_call to:0x02057f18 module:overlay(0)
from:0x02120fcc kind:arm_call to:0x02057c38 module:overlay(0)
from:0x02120fd8 kind:load to:0x021227ac module:overlay(32)
from:0x02120fd8 kind:load to:0x021227a4 module:overlay(32) add:0x8
from:0x02120fdc kind:load to:0x02121f14 module:overlay(32)
from:0x02120fe0 kind:load to:0x02121f24 module:overlay(32)
from:0x02121040 kind:arm_call_thumb to:0x01ffa184 module:itcm
@@ -933,7 +933,7 @@ from:0x0212110c kind:arm_call to:0x0209cfe0 module:overlay(0)
from:0x02121130 kind:arm_call to:0x0200f05c module:main
from:0x0212114c kind:arm_call to:0x02120f78 module:overlay(32)
from:0x02121160 kind:arm_call_thumb to:0x0205778c module:overlay(0)
from:0x021211b8 kind:load to:0x021227d8 module:overlay(32)
from:0x021211b8 kind:load to:0x021227d0 module:overlay(32) add:0x8
from:0x021211bc kind:load to:0x02122ab8 module:overlay(32)
from:0x021211c0 kind:load to:0x02121ef4 module:overlay(32)
from:0x021211c4 kind:load to:0x02122b8c module:overlay(32)
+19 -20
View File
@@ -185,7 +185,7 @@ _ZN12ActorUnkNSSW19func_ov032_02120b6cEv kind:function(arm,size=0x10) addr:0x021
_ZN12ActorUnkNSSW19func_ov032_02120b7cEv kind:function(arm,size=0x44) addr:0x02120b7c
_ZN12ActorUnkNSSW19func_ov032_02120bc0Ev kind:function(arm,size=0x3c) addr:0x02120bc0
_ZN12ActorUnkNSSW19func_ov032_02120bfcEv kind:function(arm,size=0x68) addr:0x02120bfc
_ZN12ActorUnkNSSW19func_ov032_02120c64Ev kind:function(arm,size=0x8c) addr:0x02120c64
_ZN12ActorUnkNSSW19func_ov032_02120c64EP16MapObjectUnkSWSW kind:function(arm,size=0x8c) addr:0x02120c64
_ZN12ActorUnkNSSW19func_ov032_02120cf0Ev kind:function(arm,size=0x34) addr:0x02120cf0
_ZN12ActorUnkNSSW19func_ov032_02120d24Ev kind:function(arm,size=0x3c) addr:0x02120d24
_ZN12ActorUnkNSSW19func_ov032_02120d60Ev kind:function(arm,size=0x1c) addr:0x02120d60
@@ -199,22 +199,22 @@ _ZN19ActorProfileUnkNSSWD1Ev kind:function(arm,size=0x14) addr:0x02120e7c
_ZN23MapObjectProfileUnkSWSW10GetProfileEv kind:function(arm,size=0xc) addr:0x02120e90
_ZN23MapObjectProfileUnkSWSW6CreateEv kind:function(arm,size=0x24) addr:0x02120e9c
_ZN23MapObjectProfileUnkSWSWC1Ev kind:function(arm,size=0xb8) addr:0x02120ec0
_ZN16MapObjectUnkSWSW19func_ov032_02120f78Ev kind:function(arm,size=0x6c) addr:0x02120f78
_ZN16MapObjectUnkSWSW19func_ov032_02120fe4Ev kind:function(arm,size=0xbc) addr:0x02120fe4
_ZN16MapObjectUnkSWSW19func_ov032_021210a0Ev kind:function(arm,size=0x64) addr:0x021210a0
_ZN19MapObjectUnkSWSW_40C1EP10G3d_Model_ kind:function(arm,size=0x6c) addr:0x02120f78
_ZN19MapObjectUnkSWSW_408vfunc_1CEP19UnkSystem4_vfunc_1C kind:function(arm,size=0xbc) addr:0x02120fe4
_ZN19MapObjectUnkSWSW_4019func_ov032_021210a0Ei kind:function(arm,size=0x64) addr:0x021210a0
_ZN16MapObjectUnkSWSWC1Ev kind:function(arm,size=0xc4) addr:0x02121104
_ZN16MapObjectUnkSWSW19func_ov032_021211c8Ev kind:function(arm,size=0x14) addr:0x021211c8
_ZN16MapObjectUnkSWSW19func_ov032_021211dcEv kind:function(arm,size=0x240) addr:0x021211dc
_ZN16MapObjectUnkSWSW19func_ov032_0212141cEv kind:function(arm,size=0x4b4) addr:0x0212141c
_ZN16MapObjectUnkSWSW19func_ov032_021218d0Ev kind:function(arm,size=0x278) addr:0x021218d0
_ZN16MapObjectUnkSWSW19func_ov032_02121b48Ev kind:function(arm,size=0x48) addr:0x02121b48
_ZN19MapObjectUnkSWSW_40D1Ev kind:function(arm,size=0x14) addr:0x021211c8
_ZN16MapObjectUnkSWSW8vfunc_00Ev kind:function(arm,size=0x240) addr:0x021211dc
_ZN16MapObjectUnkSWSW8vfunc_08Ev kind:function(arm,size=0x4b4) addr:0x0212141c
_ZN16MapObjectUnkSWSW8vfunc_1CE8ActorRefiP7VecFx32 kind:function(arm,size=0x278) addr:0x021218d0
_ZN16MapObjectUnkSWSW8vfunc_38Ev kind:function(arm,size=0x48) addr:0x02121b48
_ZN16MapObjectUnkSWSW19func_ov032_02121b90Ev kind:function(arm,size=0x88) addr:0x02121b90
_ZN16MapObjectUnkSWSW19func_ov032_02121c18Ev kind:function(arm,size=0x158) addr:0x02121c18
_ZN16MapObjectUnkSWSW19func_ov032_02121d70Ev kind:function(arm,size=0x58) addr:0x02121d70
_ZN16MapObjectUnkSWSW19func_ov032_02121dc8Ev kind:function(arm,size=0x90) addr:0x02121dc8
_ZN16MapObjectUnkSWSWD0Ev kind:function(arm,size=0x1c) addr:0x02121e58
_ZN16MapObjectUnkSWSW8vfunc_3CEi kind:function(arm,size=0x158) addr:0x02121c18
_ZN16MapObjectUnkSWSW8vfunc_14Ev kind:function(arm,size=0x58) addr:0x02121d70
_ZN16MapObjectUnkSWSW19func_ov032_02121dc8EP7VecFx32 kind:function(arm,size=0x90) addr:0x02121dc8
_ZN19MapObjectUnkSWSW_40D0Ev kind:function(arm,size=0x1c) addr:0x02121e58
_ZN16MapObjectUnkSWSWD1Ev kind:function(arm,size=0x20) addr:0x02121e74
_ZN16MapObjectUnkSWSW19func_ov032_02121e94Ev kind:function(arm,size=0x28) addr:0x02121e94
_ZN16MapObjectUnkSWSWD0Ev kind:function(arm,size=0x28) addr:0x02121e94
_ZN23MapObjectProfileUnkSWSWD1Ev kind:function(arm,size=0x14) addr:0x02121ebc
data_ov032_02121ed4 kind:data(any) addr:0x02121ed4
data_ov032_02121ee4 kind:data(any) addr:0x02121ee4
@@ -266,12 +266,11 @@ data_ov032_02122694 kind:data(any) addr:0x02122694
data_ov032_021226ac kind:data(any) addr:0x021226ac
_ZTV19data_ov032_021226c0 kind:data(any) addr:0x021226c0
_ZTV19data_ov032_021226e4 kind:data(any) addr:0x021226e4
data_ov032_0212274c kind:data(any) addr:0x0212274c
data_ov032_02122768 kind:data(any) addr:0x02122768
data_ov032_02122784 kind:data(any) addr:0x02122784
data_ov032_021227ac kind:data(any) addr:0x021227ac
data_ov032_021227d8 kind:data(any) addr:0x021227d8
data_ov032_02122810 kind:data(any) addr:0x02122810 ambiguous
_ZTV23MapObjectProfileUnkSWSW kind:data(any) addr:0x02122744
_ZTV28MapObjectProfileUnkSWSW_Base kind:data(any) addr:0x02122760
_ZTV17MapObject_10_SWSW kind:data(any) addr:0x0212277c
_ZTV19MapObjectUnkSWSW_40 kind:data(any) addr:0x021227a4
_ZTV16MapObjectUnkSWSW kind:data(any) addr:0x021227d0
_ZGVN15ProfileInstanceI19ActorProfileUnkKURIE8sProfileE kind:bss addr:0x02122820
@11136 kind:bss addr:0x02122824
_ZN15ProfileInstanceI19ActorProfileUnkKURIE8sProfileE kind:bss addr:0x02122830
+1 -1
View File
@@ -1246,7 +1246,7 @@ from:0x02120e9c kind:arm_call to:0x0203ce74 module:main
from:0x02120eb0 kind:load to:0x02122764 module:overlay(36)
from:0x02120eb4 kind:load to:0x02122774 module:overlay(36)
from:0x02120eb8 kind:load to:0x0211b214 module:overlay(36)
from:0x02120ebc kind:load to:0x02122768 module:overlay(36)
from:0x02120ebc kind:load to:0x02122760 module:overlay(36) add:0x8
from:0x02120edc kind:arm_call to:0x0211b278 module:overlay(36)
from:0x02120eec kind:arm_call to:0x0203ce74 module:main
from:0x02120f00 kind:load to:0x0212284c module:overlay(36)
+1 -1
View File
@@ -101,7 +101,7 @@ func_ov000_02057c34 kind:function(arm,size=0x4) addr:0x02057c34
func_ov000_02057c38 kind:function(arm,size=0x34) addr:0x02057c38
func_ov000_02057c6c kind:function(arm,size=0x2c) addr:0x02057c6c
func_ov000_02057c98 kind:function(arm,size=0x18) addr:0x02057c98
func_ov000_02057cb0 kind:function(arm,size=0x18) addr:0x02057cb0
_ZN15ModelRenderBase19func_ov000_02057cb0Ev kind:function(arm,size=0x18) addr:0x02057cb0
func_ov000_02057cc8 kind:function(arm,size=0x2c) addr:0x02057cc8
func_ov000_02057cf4 kind:function(arm,size=0x2c) addr:0x02057cf4
func_ov000_02057d20 kind:function(thumb,size=0x1c) addr:0x02057d20
+1 -1
View File
@@ -128,7 +128,7 @@ func_01ffc520 kind:function(arm,size=0x5c) addr:0x01ffc520
_ZN11ModelRender8vfunc_0CEv kind:function(arm,size=0x24) addr:0x01ffc57c
func_01ffc5a0 kind:function(arm,size=0x94) addr:0x01ffc5a0
func_01ffc634 kind:function(arm,size=0xa0) addr:0x01ffc634
_ZN19UnkSystem6_Derived213func_01ffc6d4E14UnkAngleStructP7VecFx32 kind:function(arm,size=0x70) addr:0x01ffc6d4
_ZN15ModelRenderBase13func_01ffc6d4E14UnkAngleStructP7VecFx32 kind:function(arm,size=0x70) addr:0x01ffc6d4
func_01ffc744 kind:function(arm,size=0x24) addr:0x01ffc744
_ZN24UnkStruct_ov000_020b4ec413func_01ffc768Ei kind:function(arm,size=0x3c) addr:0x01ffc768
_ZN20ModelRender_Derived18vfunc_1CEP19UnkSystem4_vfunc_1C kind:function(arm,size=0xb4) addr:0x01ffc7a4
+1 -1
View File
@@ -101,7 +101,7 @@ _ZN11ModelRender8vfunc_1CEP19UnkSystem4_vfunc_1C kind:function(arm,size=0x4) add
_ZN11ModelRender19func_ov000_02057c38Eii kind:function(arm,size=0x34) addr:0x020591b8
func_ov000_020591ec kind:function(arm,size=0x2c) addr:0x020591ec
_ZN11ModelRender19func_ov000_02057c98EP10UnkSystem5 kind:function(arm,size=0x18) addr:0x02059218
func_ov000_02059230 kind:function(arm,size=0x18) addr:0x02059230
_ZN15ModelRenderBase19func_ov000_02057cb0Ev kind:function(arm,size=0x18) addr:0x02059230
func_ov000_02059248 kind:function(arm,size=0x2c) addr:0x02059248
_ZN11ModelRender19func_ov000_02057cf4Ev kind:function(arm,size=0x2c) addr:0x02059274
_ZN11ModelRender19func_ov000_02057d20Eh kind:function(thumb,size=0x1c) addr:0x020592a0
+2 -1
View File
@@ -2,7 +2,7 @@
.rodata start:0x02123ea8 end:0x02123f0c kind:rodata align:4
.init start:0x02123f0c end:0x02124104 kind:code align:4
.ctor start:0x02124104 end:0x02124118 kind:rodata align:4
.data start:0x02124120 end:0x02124800 kind:data align:32
.data start:0x02124120 end:0x021247f4 kind:data align:32
.bss start:0x02124800 end:0x02124ba0 kind:bss align:32
src/032_MapA1/Actor/ActorUnkKURI.cpp:
@@ -34,4 +34,5 @@ src/032_MapA1/MapObject/MapObjectUnkSWSW.cpp:
.text start:0x02122e68 end:0x02123ea8
.init start:0x021240b4 end:0x02124104
.ctor start:0x02124114 end:0x02124118
.data start:0x02124720 end:0x021247f4
.bss start:0x02124a88 end:0x02124ab8
+5 -5
View File
@@ -937,14 +937,14 @@ from:0x02122e84 kind:arm_call to:0x02011f3c module:main
from:0x02122e90 kind:arm_call to:0x021230dc module:overlay(32)
from:0x02122ea8 kind:arm_call to:0x0209e16c module:overlay(0)
from:0x02122eb8 kind:arm_call to:0x0207d6d0 module:overlay(0)
from:0x02122f3c kind:load to:0x02124744 module:overlay(32)
from:0x02122f40 kind:load to:0x02124760 module:overlay(32)
from:0x02122f44 kind:load to:0x02124728 module:overlay(32)
from:0x02122f3c kind:load to:0x0212473c module:overlay(32) add:0x8
from:0x02122f40 kind:load to:0x02124758 module:overlay(32) add:0x8
from:0x02122f44 kind:load to:0x02124720 module:overlay(32) add:0x8
from:0x02122f58 kind:arm_call_thumb to:0x020590d4 module:overlay(0)
from:0x02122f80 kind:arm_call to:0x02059498 module:overlay(0)
from:0x02122f90 kind:arm_call to:0x02059498 module:overlay(0)
from:0x02122fa4 kind:arm_call to:0x020591b8 module:overlay(0)
from:0x02122fb0 kind:load to:0x02124788 module:overlay(32)
from:0x02122fb0 kind:load to:0x02124780 module:overlay(32) add:0x8
from:0x02122fb4 kind:load to:0x02123eec module:overlay(32)
from:0x02122fb8 kind:load to:0x02123efc module:overlay(32)
from:0x02123018 kind:arm_call_thumb to:0x01ffa184 module:itcm
@@ -954,7 +954,7 @@ from:0x021230e4 kind:arm_call to:0x0209e7a4 module:overlay(0)
from:0x02123108 kind:arm_call to:0x0200f05c module:main
from:0x02123124 kind:arm_call to:0x02122f50 module:overlay(32)
from:0x02123138 kind:arm_call_thumb to:0x02058d0c module:overlay(0)
from:0x02123190 kind:load to:0x021247b4 module:overlay(32)
from:0x02123190 kind:load to:0x021247ac module:overlay(32) add:0x8
from:0x02123194 kind:load to:0x02124a98 module:overlay(32)
from:0x02123198 kind:load to:0x02123ecc module:overlay(32)
from:0x0212319c kind:load to:0x02124b6c module:overlay(32)
+25 -25
View File
@@ -187,7 +187,7 @@ _ZN12ActorUnkNSSW19func_ov032_02120b7cEv kind:function(arm,size=0x44) addr:0x021
_ZN12ActorUnkNSSW19func_ov032_02120bc0Ev kind:function(arm,size=0x3c) addr:0x02122a2c
_ZN12ActorUnkNSSW19func_ov032_02122a68Ev kind:function(arm,size=0xa4) addr:0x02122a68
_ZN12ActorUnkNSSW19func_ov032_02122b0cEv kind:function(arm,size=0x6c) addr:0x02122b0c
_ZN12ActorUnkNSSW19func_ov032_02120c64Ev kind:function(arm,size=0x8c) addr:0x02122b78
_ZN12ActorUnkNSSW19func_ov032_02120c64EP16MapObjectUnkSWSW kind:function(arm,size=0x8c) addr:0x02122b78
_ZN12ActorUnkNSSW19func_ov032_02120cf0Ev kind:function(arm,size=0x34) addr:0x02122c04
_ZN12ActorUnkNSSW19func_ov032_02120d24Ev kind:function(arm,size=0x3c) addr:0x02122c38
_ZN12ActorUnkNSSW19func_ov032_02120d60Ev kind:function(arm,size=0x1c) addr:0x02122c74
@@ -203,29 +203,29 @@ _ZN19ActorProfileUnkNSSWD1Ev kind:function(arm,size=0x14) addr:0x02122e54
_ZN23MapObjectProfileUnkSWSW10GetProfileEv kind:function(arm,size=0xc) addr:0x02122e68
_ZN23MapObjectProfileUnkSWSW6CreateEv kind:function(arm,size=0x24) addr:0x02122e74
_ZN23MapObjectProfileUnkSWSWC1Ev kind:function(arm,size=0xb8) addr:0x02122e98
_ZN16MapObjectUnkSWSW19func_ov032_02120f78Ev kind:function(arm,size=0x6c) addr:0x02122f50
_ZN16MapObjectUnkSWSW19func_ov032_02120fe4Ev kind:function(arm,size=0xbc) addr:0x02122fbc
_ZN16MapObjectUnkSWSW19func_ov032_021210a0Ev kind:function(arm,size=0x64) addr:0x02123078
_ZN19MapObjectUnkSWSW_40C1EP10G3d_Model_ kind:function(arm,size=0x6c) addr:0x02122f50
_ZN19MapObjectUnkSWSW_408vfunc_1CEP19UnkSystem4_vfunc_1C kind:function(arm,size=0xbc) addr:0x02122fbc
_ZN19MapObjectUnkSWSW_4019func_ov032_021210a0Ei kind:function(arm,size=0x64) addr:0x02123078
_ZN16MapObjectUnkSWSWC1Ev kind:function(arm,size=0xc4) addr:0x021230dc
_ZN16MapObjectUnkSWSW19func_ov032_021211c8Ev kind:function(arm,size=0x14) addr:0x021231a0
_ZN16MapObjectUnkSWSW19func_ov032_021211dcEv kind:function(arm,size=0x240) addr:0x021231b4
_ZN16MapObjectUnkSWSW19func_ov032_0212141cEv kind:function(arm,size=0x4b4) addr:0x021233f4
_ZN16MapObjectUnkSWSW19func_ov032_021218d0Ev kind:function(arm,size=0x278) addr:0x021238a8
_ZN16MapObjectUnkSWSW19func_ov032_02121b48Ev kind:function(arm,size=0x48) addr:0x02123b20
_ZN19MapObjectUnkSWSW_40D1Ev kind:function(arm,size=0x14) addr:0x021231a0
_ZN16MapObjectUnkSWSW8vfunc_00Ev kind:function(arm,size=0x240) addr:0x021231b4
_ZN16MapObjectUnkSWSW8vfunc_08Ev kind:function(arm,size=0x4b4) addr:0x021233f4
_ZN16MapObjectUnkSWSW8vfunc_1CE8ActorRefiP7VecFx32 kind:function(arm,size=0x278) addr:0x021238a8
_ZN16MapObjectUnkSWSW8vfunc_38Ev kind:function(arm,size=0x48) addr:0x02123b20
_ZN16MapObjectUnkSWSW19func_ov032_02121b90Ev kind:function(arm,size=0x88) addr:0x02123b68
_ZN16MapObjectUnkSWSW19func_ov032_02121c18Ev kind:function(arm,size=0x158) addr:0x02123bf0
_ZN16MapObjectUnkSWSW19func_ov032_02121d70Ev kind:function(arm,size=0x58) addr:0x02123d48
_ZN16MapObjectUnkSWSW19func_ov032_02121dc8Ev kind:function(arm,size=0x90) addr:0x02123da0
_ZN16MapObjectUnkSWSWD0Ev kind:function(arm,size=0x1c) addr:0x02123e30
_ZN16MapObjectUnkSWSW8vfunc_3CEi kind:function(arm,size=0x158) addr:0x02123bf0
_ZN16MapObjectUnkSWSW8vfunc_14Ev kind:function(arm,size=0x58) addr:0x02123d48
_ZN16MapObjectUnkSWSW19func_ov032_02121dc8EP7VecFx32 kind:function(arm,size=0x90) addr:0x02123da0
_ZN19MapObjectUnkSWSW_40D0Ev kind:function(arm,size=0x1c) addr:0x02123e30
_ZN16MapObjectUnkSWSWD1Ev kind:function(arm,size=0x20) addr:0x02123e4c
_ZN16MapObjectUnkSWSW19func_ov032_02123e6cEv kind:function(arm,size=0x28) addr:0x02123e6c
_ZN16MapObjectUnkSWSWD0Ev kind:function(arm,size=0x28) addr:0x02123e6c
_ZN23MapObjectProfileUnkSWSWD1Ev kind:function(arm,size=0x14) addr:0x02123e94
data_ov032_02123eac kind:data(any) addr:0x02123eac
data_ov032_02123ebc kind:data(any) addr:0x02123ebc
data_ov032_02123ecc kind:data(any) addr:0x02123ecc
data_ov032_02123edc kind:data(any) addr:0x02123edc
data_ov032_02123eec kind:data(any) addr:0x02123eec
data_ov032_02123efc kind:data(any) addr:0x02123efc
data_ov032_02121ef4 kind:data(any) addr:0x02123ecc
data_ov032_02121f04 kind:data(any) addr:0x02123edc
data_ov032_02121f14 kind:data(any) addr:0x02123eec
data_ov032_02121f24 kind:data(any) addr:0x02123efc
__sinit_ActorUnkKURI.cpp kind:function(arm,size=0x6c) addr:0x02123f0c
__sinit_ActorUnkMKUR.cpp kind:function(arm,size=0x80) addr:0x02123f78
__sinit_ActorUnkKETH.cpp kind:function(arm,size=0x6c) addr:0x02123ff8
@@ -270,11 +270,11 @@ data_ov032_0212466c kind:data(any) addr:0x0212466c
data_ov032_02124688 kind:data(any) addr:0x02124688
_ZTV19data_ov032_0212469c kind:data(any) addr:0x0212469c
_ZTV19data_ov032_021246c0 kind:data(any) addr:0x021246c0
data_ov032_02124728 kind:data(any) addr:0x02124728
data_ov032_02124744 kind:data(any) addr:0x02124744
data_ov032_02124760 kind:data(any) addr:0x02124760
data_ov032_02124788 kind:data(any) addr:0x02124788
data_ov032_021247b4 kind:data(any) addr:0x021247b4
_ZTV23MapObjectProfileUnkSWSW kind:data(any) addr:0x02124720
_ZTV28MapObjectProfileUnkSWSW_Base kind:data(any) addr:0x0212473c
_ZTV17MapObject_10_SWSW kind:data(any) addr:0x02124758
_ZTV19MapObjectUnkSWSW_40 kind:data(any) addr:0x02124780
_ZTV16MapObjectUnkSWSW kind:data(any) addr:0x021247ac
_ZGVN15ProfileInstanceI19ActorProfileUnkKURIE8sProfileE kind:bss addr:0x02124800
@31136 kind:bss addr:0x02124804
_ZN15ProfileInstanceI19ActorProfileUnkKURIE8sProfileE kind:bss addr:0x02124810
@@ -292,5 +292,5 @@ _ZN15ProfileInstanceI19ActorProfileUnkNSSWE8sProfileE kind:bss addr:0x02124a4c
_ZGVN15ProfileInstanceI23MapObjectProfileUnkSWSWE8sProfileE kind:bss addr:0x02124a88
@31149 kind:bss addr:0x02124a8c
_ZN15ProfileInstanceI23MapObjectProfileUnkSWSWE8sProfileE kind:bss addr:0x02124a98
data_ov032_02124ab8 kind:bss addr:0x02124ab8
data_ov032_02124b6c kind:bss addr:0x02124b6c
data_ov032_02122ad8 kind:bss addr:0x02124ab8
data_ov032_02122b8c kind:bss addr:0x02124b6c
+1 -1
View File
@@ -841,7 +841,7 @@ func_020168f0 kind:function(arm,size=0x38) addr:0x020168f0
func_02016928 kind:function(arm,size=0x44) addr:0x02016928
func_020169d4 kind:function(arm,size=0x9c) addr:0x0201696c
func_02016a08 kind:function(arm,size=0x70) addr:0x02016a08
func_02016a78 kind:function(arm,size=0xac) addr:0x02016a78
func_02016ae0 kind:function(arm,size=0xac) addr:0x02016a78
func_02016b8c kind:function(arm,size=0xdc) addr:0x02016b24
func_02016c00 kind:function(arm,size=0x88) addr:0x02016c00
func_02016c88 kind:function(arm,size=0x8c) addr:0x02016c88
+15 -3
View File
@@ -4,6 +4,7 @@
#include "Actor/Actor.hpp"
#include "Actor/ActorProfile.hpp"
#include "MapObject/MapObjectUnkSWSW.hpp"
#include "global.h"
#include "types.h"
@@ -19,8 +20,19 @@ public:
class ActorUnkNSSW : public Actor {
public:
/* 00 (base) */
/* 94 */
/* 000 (base) */
/* 094 */ STRUCT_PAD(0x094, 0x0BC);
/* 0BC */ unk32 mUnk_0BC;
/* 0C0 */ STRUCT_PAD(0x0C0, 0x184);
#if IS_JP
/* 184 */ STRUCT_PAD(0x184, 0x190);
/* 190 */ MapObjectUnkSWSW *mUnk_184_eur;
/* 194 */ MapObjectUnkSWSW *mUnk_188_eur;
#else
/* 184 */ MapObjectUnkSWSW *mUnk_184_eur;
/* 188 */ MapObjectUnkSWSW *mUnk_188_eur;
#endif
/* 18C */
ActorUnkNSSW();
@@ -42,7 +54,7 @@ public:
void func_ov032_02120b7c(void);
void func_ov032_02120bc0(void);
void func_ov032_02120bfc(void);
void func_ov032_02120c64(void);
void func_ov032_02120c64(MapObjectUnkSWSW *param1);
void func_ov032_02120cf0(void);
void func_ov032_02120d24(void);
void func_ov032_02120d60(void);
+72 -21
View File
@@ -1,5 +1,3 @@
//! TODO: This file was generated automatically and might contain errors
#pragma once
#include "MapObject/MapObject.hpp"
@@ -7,38 +5,91 @@
#include "global.h"
#include "types.h"
class MapObjectUnkSWSW : public MapObject {
class ActorUnkNSSW;
class MapObjectUnkSWSW_40 : public ModelRender {
public:
/* 00 (base) */
/* 40 */
/* 60 */ unk32 mUnk_60;
/* 64 */ unk32 mUnk_64;
/* 68 */ unk16 mUnk_68;
/* 6A */ unk16 mUnk_6A;
/* 6C */
MapObjectUnkSWSW_40(G3d_Model *pModel);
// data_ov032_021227ac
/* 1C */ virtual void vfunc_1C(UnkSystem4_vfunc_1C *param1) override;
void func_ov032_021210a0(fx32 param1);
};
class MapObjectUnkSWSW : public MapObject {
public:
/* 000 (base) */
/* 040 */ MapObjectUnkSWSW_40 mUnk_040;
/* 0AC */ UnkSystem5 mUnk_0AC;
/* 0CC */ unk32 mUnk_0CC;
/* 0E0 */ STRUCT_PAD(0xD0, 0xEC);
/* 0EC */ VecFx32 mUnk_0EC;
/* 0F8 */ ActorUnkNSSW *mUnk_0F8;
/* 0FC */ unk32 mUnk_0FC;
/* 100 */ volatile u16 mUnk_100;
/* 102 */ u16 mUnk_102;
/* 104 */ u8 mUnk_104;
/* 105 */ u8 mUnk_105;
/* 106 */ STRUCT_PAD(0x106, 0x108);
/* 108 */ fx32 mUnk_108;
/* 10C */ unk16 mUnk_10C;
/* 10E */ volatile u16 mUnk_10E;
/* 110 */ u16 mUnk_110;
/* 114 */ ActorUnkNSSW *mUnk_114;
/* 118 */
MapObjectUnkSWSW();
/* 30 */ virtual ~MapObjectUnkSWSW() override;
bool IsInternalTimerOut() {
if (this->mUnk_100 < this->mUnk_102) {
++this->mUnk_100;
return false;
}
return true;
}
void func_ov032_02120f78(void);
void func_ov032_02120fe4(void);
void func_ov032_021210a0(void);
void func_ov032_021211c8(void);
void func_ov032_021211dc(void);
void func_ov032_0212141c(void);
void func_ov032_021218d0(void);
void func_ov032_02121b48(void);
void func_ov032_02121b90(void);
void func_ov032_02121c18(void);
void func_ov032_02121d70(void);
void func_ov032_02121dc8(void);
void func_ov032_02121e94(void);
/* 00 */ virtual bool vfunc_00() override;
/* 08 */ virtual void vfunc_08() override;
/* 14 */ virtual void vfunc_14() override;
/* 1C */ virtual bool vfunc_1C(ActorRef param1, unk32 param2, VecFx32 *param3) override;
/* 38 */ virtual void vfunc_38();
/* 3C */ virtual void vfunc_3C(unk32 param1);
void func_ov032_02121b90();
ActorUnkNSSW *func_ov032_02121dc8(VecFx32 *param1);
};
class MapObjectProfileUnkSWSW : public MapObjectProfile {
class MapObject_10_SWSW : public MapObject_10 {
public:
// data_ov032_02122784
};
class MapObjectProfileUnkSWSW_Base : public MapObjectProfile_Derived2 {
public:
/* 00 (base) */
/* D4 */ MapObject_10_SWSW mUnk_D4;
/* F8 */
MapObjectProfileUnkSWSW_Base(MapObjectId id) :
MapObjectProfile_Derived2(id, id) {}
};
class MapObjectProfileUnkSWSW : public MapObjectProfileUnkSWSW_Base {
public:
/* 00 (base) */
/* F8 */
MapObjectProfileUnkSWSW();
~MapObjectProfileUnkSWSW();
/* 0C */ virtual MapObject *Create();
/* 00 */ virtual MapObject *Create();
static MapObjectProfileUnkSWSW *GetProfile();
};
+5 -3
View File
@@ -23,7 +23,8 @@ typedef void (*UnkSystem4_UnkCallback)(void *, unk32);
class UnkSystem4_vfunc_1C_B4 {
public:
/* 00 */ unk32 mUnk_00;
/* 00 */ STRUCT_PAD(0x04, 0x4C);
/* 00 */ STRUCT_PAD(0x04, 0x28);
/* 28 */ Mat3p mUnk_28;
/* 4C */ unk32 mUnk_4C;
/* 50 */ unk32 mUnk_50;
/* 54 */ unk32 mUnk_54;
@@ -56,6 +57,9 @@ public:
/* 18 */ virtual void vfunc_18(VecFx32 *param1) = 0;
/* 1C */
void func_01ffc6d4(UnkAngleStruct angleStruct, VecFx32 *pos);
void func_ov000_02057cb0();
unk32 func_ov000_02057f18(const void *param1);
unk32 func_ov000_02057f40(const void *param1);
const G3d_Model_14 *func_ov000_02057ee0() const;
@@ -118,8 +122,6 @@ public:
// data_ov000_020b1968
/* 00 */ virtual ~UnkSystem6_Derived2() {}
/* 0C */ virtual void vfunc_0C() override;
void func_01ffc6d4(UnkAngleStruct angleStruct, VecFx32 *pos);
};
class ModelRender_ov000_020b198c : public ModelRenderBase {
+3 -3
View File
@@ -6,7 +6,7 @@
#include "Unknown/UnkStruct_027e0ce0.hpp"
#include "Unknown/UnkStruct_ov000_020b5214.hpp"
extern "C" void func_01ffedac(u16 *, VecFx32 *);
extern "C" void func_01ffedac(Vec2bCpp *, VecFx32 *);
extern "C" void func_01ffb9cc(void *, VecFx32 *);
DECL_PROFILE(ActorProfileUnkSWOB);
@@ -85,7 +85,7 @@ void ActorUnkSWOB::func_ov000_0209aa30(void) {
VecFx32 vec2;
VecFx32 vec;
ActorParams AStack_7c;
u16 auStack_80[2];
Vec2bCpp auStack_80;
int j;
u32 i;
@@ -109,7 +109,7 @@ void ActorUnkSWOB::func_ov000_0209aa30(void) {
VecFx32_Add(&vec, &vec2, &vec);
if (j < 10) {
func_01ffedac(auStack_80, &vec);
func_01ffedac(&auStack_80, &vec);
func_01ffb9cc(&temp, &vec);
i--;
j++;
+2 -2
View File
@@ -15,7 +15,7 @@ extern "C" void func_01ff97c8(VecFx32 *, int);
extern "C" void func_01ffb714(VecFx32 *, VecFx32 *, void *);
extern "C" unk32 func_01ffb9cc(VecFx32 *, VecFx32 *);
extern "C" void func_01ffe6c4(Actor **, ActorRef, VecFx32 *, VecFx32 *, s32, VecFx32 *, UnkStruct_ov031_Items_00 *);
extern "C" void func_01ffedac(u16 *, VecFx32 *);
extern "C" void func_01ffedac(Vec2bCpp *, VecFx32 *);
extern "C" bool func_ov000_0205aeac();
extern "C" bool func_ov000_020982d8();
@@ -199,7 +199,7 @@ void ActorItemBoomerang::vfunc_20() {
this->func_ov031_020e49b0(0x8D70);
}
u16 spC;
Vec2bCpp spC;
VecFx32 sp3C;
VecFx32_Copy(data_027e0ce0->func_01fff148(0x0), &sp3C);
+1 -1
View File
@@ -30,7 +30,7 @@ void ActorUnkNSSW::func_ov032_02120b6c(void) {}
void ActorUnkNSSW::func_ov032_02120b7c(void) {}
void ActorUnkNSSW::func_ov032_02120bc0(void) {}
void ActorUnkNSSW::func_ov032_02120bfc(void) {}
void ActorUnkNSSW::func_ov032_02120c64(void) {}
void ActorUnkNSSW::func_ov032_02120c64(MapObjectUnkSWSW *param1) {}
void ActorUnkNSSW::func_ov032_02120cf0(void) {}
void ActorUnkNSSW::func_ov032_02120d24(void) {}
void ActorUnkNSSW::func_ov032_02120d60(void) {}
+509 -19
View File
@@ -1,32 +1,522 @@
//! TODO: This file was generated automatically and might contain errors
#define VECFX32_CTORS
#include "MapObject/MapObjectUnkSWSW.hpp"
#include "Actor/Actor.hpp"
#include "Actor/ActorManager.hpp"
#include "Actor/ActorUnkNSSW.hpp"
#include "System/Random.hpp"
#include "System/SysNew.hpp"
#include "Unknown/UnkStruct_027e09a8.hpp"
#include "Unknown/UnkStruct_027e0cd8.hpp"
extern "C" char data_ov032_02121ef4;
extern "C" char data_ov032_02121f04;
extern "C" unk32 data_ov032_02121f14; // ig these variables should be 0x10-byte long
extern "C" unk32 data_ov032_02121f24; // same as above
extern "C" MapObjectProfile_Derived2_20_Base data_ov032_02122ad8;
extern "C" MapObject_10 data_ov032_02122b8c;
extern "C" void func_01ff9218(fx32 *, fx32, fx32);
extern "C" void func_01ff91b8(unk16 *, fx32, fx32);
extern "C" fx32 func_01ffbbe0(fx32 x, fx32 z);
extern "C" void func_01ffedac(Vec2bCpp *, VecFx32 *);
extern "C" fx32 func_02015a18(u16, unk32, unk32, unk32, u16, unk32, unk32);
extern "C" unk32 func_02016ae0(VecFx32 *, VecFx32 *, UnkAngleStruct, unk32, unk32);
DECL_PROFILE(MapObjectProfileUnkSWSW);
MapObject *MapObjectProfileUnkSWSW::Create() {
return new(HeapIndex_2) MapObjectUnkSWSW();
return new(HeapIndex_ITCM) MapObjectUnkSWSW();
}
MapObjectProfileUnkSWSW::MapObjectProfileUnkSWSW() :
MapObjectProfile(MapObjectId_SWSW) {}
MapObjectProfileUnkSWSW_Base(MapObjectId_SWSW) {
this->mUnk_D4.mUnk_08 = 0x7007;
MapObjectUnkSWSW::MapObjectUnkSWSW() {}
VecFx32_Init(FLOAT_TO_FX32(-0.5002f), FLOAT_TO_FX32(-1.0002), FLOAT_TO_FX32(-1.0002), &this->mUnk_D4.mUnk_0C);
VecFx32_Init(FLOAT_TO_FX32(0.5f), FLOAT_TO_FX32(1.0f), FLOAT_TO_FX32(0.0f), &this->mUnk_D4.mUnk_18);
void MapObjectUnkSWSW::func_ov032_02120f78(void) {}
void MapObjectUnkSWSW::func_ov032_02120fe4(void) {}
void MapObjectUnkSWSW::func_ov032_021210a0(void) {}
void MapObjectUnkSWSW::func_ov032_021211c8(void) {}
void MapObjectUnkSWSW::func_ov032_021211dc(void) {}
void MapObjectUnkSWSW::func_ov032_0212141c(void) {}
void MapObjectUnkSWSW::func_ov032_021218d0(void) {}
void MapObjectUnkSWSW::func_ov032_02121b48(void) {}
void MapObjectUnkSWSW::func_ov032_02121b90(void) {}
void MapObjectUnkSWSW::func_ov032_02121c18(void) {}
void MapObjectUnkSWSW::func_ov032_02121d70(void) {}
void MapObjectUnkSWSW::func_ov032_02121dc8(void) {}
void MapObjectUnkSWSW::func_ov032_02121e94(void) {}
this->mUnk_D4.mUnk_04 |= 0x2;
this->mUnk_06 = -0x1;
this->mUnk_1E &= 0xFFFE;
this->mUnk_20.mUnk_15 = 0x1;
}
MapObjectUnkSWSW::~MapObjectUnkSWSW() {}
MapObjectProfileUnkSWSW::~MapObjectProfileUnkSWSW() {}
MapObjectUnkSWSW_40::MapObjectUnkSWSW_40(G3d_Model *pModel) :
ModelRender(pModel),
mUnk_60(0x0),
mUnk_64(0x0),
mUnk_68(0x0),
mUnk_6A(0x0) {
this->mUnk_60 = this->ModelRenderBase::func_ov000_02057f18(&data_ov032_02121f14);
this->mUnk_64 = this->ModelRenderBase::func_ov000_02057f18(&data_ov032_02121f24);
this->ModelRender::func_ov000_02057c38(0x6, 0x2);
}
void MapObjectUnkSWSW_40::vfunc_1C(UnkSystem4_vfunc_1C *param1) {
if (param1->mUnk_00[0x1] == this->mUnk_60) {
param1->mUnk_B4->mUnk_00 &= ~0x2;
Mat3p_InitXRotation(&param1->mUnk_B4->mUnk_28, SIN((u16) this->mUnk_68), COS((u16) this->mUnk_68));
}
if (param1->mUnk_00[0x1] != this->mUnk_64) {
return;
}
param1->mUnk_B4->mUnk_00 &= ~0x2;
Mat3p_InitXRotation(&param1->mUnk_B4->mUnk_28, SIN((u16) this->mUnk_6A), COS((u16) this->mUnk_6A));
}
struct UnkStruct_ov032_021210a0 {
/* 00 */ s16 mUnk_00;
/* 02 */ s16 mUnk_02;
/* 04 */ u16 mUnk_04;
/* 06 */ u16 mUnk_06;
/* 08 */
};
// non-matching (stack not used)
void MapObjectUnkSWSW_40::func_ov032_021210a0(fx32 param1) {
UnkStruct_ov032_021210a0 stack;
if (param1 < 0) {
param1 = 0;
}
if (param1 > 0x1000) {
param1 = 0x1000;
}
fx32 temp_r2 = -0xB6 - (((param1 * 0xE39) << 0x4) >> 0x10);
fx32 temp_r1 = (param1 << 0xD) >> 0xC;
stack.mUnk_06 = temp_r2;
stack.mUnk_04 = temp_r1;
stack.mUnk_02 = stack.mUnk_06;
stack.mUnk_00 = stack.mUnk_04;
this->mUnk_68 = stack.mUnk_02;
this->mUnk_6A = stack.mUnk_00;
}
MapObjectUnkSWSW::MapObjectUnkSWSW() :
mUnk_040(G3d_GetUnkPtr(GET_PROFILE(MapObjectProfileUnkSWSW)->mUnk_20.mUnk_50, &data_ov032_02121ef4)),
mUnk_0AC(&this->mUnk_0CC, NULL),
mUnk_0EC(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.5f), FLOAT_TO_FX32(-0.4202f)),
mUnk_0F8(NULL),
mUnk_0FC(0x4),
mUnk_100(0x0),
mUnk_102(0x0),
mUnk_104(0x0),
mUnk_105(0x0),
mUnk_10C(0x0),
mUnk_10E(0x0),
mUnk_110(0x0),
mUnk_114(NULL) {
this->mUnk_10 = &data_ov032_02122b8c;
}
bool MapObjectUnkSWSW::vfunc_00() {
Vec2bCpp sp00;
UnkStruct_027e0cd8_0C_Base *data_027e0cd8_0C = data_027e0cd8->mUnk_0C;
func_01ffedac(&sp00, &this->mPos);
if (data_027e0cd8_0C->func_ov000_02080180(&sp00) == 0x14) {
this->mPos.y = FLOAT_TO_FX32(0.0f);
}
if (this->mUnk_20.mParams[2] != 0x0) {
this->mPos.y += MUL_FX32(this->mUnk_20.mParams[2] << 0xC, 0x1333);
}
this->mUnk_0AC.mpModel = this->mUnk_040.mpModel;
unk32 param2 = data_ov032_02122ad8.func_ov000_02058a24();
UnkStruct_ov000_02058a84 *param1 = data_ov032_02122ad8.func_ov000_02058a84(0x3, &data_ov032_02121f04);
this->mUnk_0AC.func_ov000_020577a4(param1, param2, 0x1);
this->mUnk_040.func_ov000_02057cb0();
this->mUnk_040.func_ov000_02057c98(&this->mUnk_0AC);
this->mUnk_0AC.func_ov000_020577f8(0x0);
this->mUnk_104 = 0x0;
this->mUnk_105 = 0x0;
if (this->mUnk_20.mParams[3] == 0x1 || this->mUnk_20.mParams[3] == 0x3) {
this->mUnk_104 = 0x1;
}
if ((u16) (this->mUnk_20.mParams[3] + 0xFFFE) <= 0x1) {
this->mUnk_105 = 0x1;
}
if (this->mUnk_105 != 0x0 && this->MapObject::func_ov000_0209d29c(0x1)) {
this->vfunc_3C(0x3);
return true;
}
if (this->mUnk_20.mParams[0] == 0x0) {
VecFx32 sp04;
VecFx32_Init(this->mPos.x + this->mUnk_0EC.x, this->mPos.y + this->mUnk_0EC.y, this->mPos.z + this->mUnk_0EC.z, &sp04);
ActorUnkNSSW *actorNSSW = this->func_ov032_02121dc8(&sp04);
this->mUnk_0F8 = actorNSSW;
this->mUnk_114 = actorNSSW;
this->vfunc_3C(0x0);
this->mUnk_108 = FLOAT_TO_FX32(0.0f);
this->MapObject::func_ov000_0209d2c4(0x1, true);
if (this->mUnk_104 != 0x0) {
this->MapObject::func_ov000_0209d2c4(0x0, false);
}
} else {
this->vfunc_3C(0x2);
this->mUnk_108 = FLOAT_TO_FX32(1.0f);
this->MapObject::func_ov000_0209d2c4(0x0, true);
if (this->mUnk_104 != 0x0) {
this->MapObject::func_ov000_0209d2c4(0x1, false);
}
}
return true;
}
// non-matching
void MapObjectUnkSWSW::vfunc_08() {
switch (this->mUnk_0FC) {
case 0x0:
func_01ff9218(&this->mUnk_108, 0x0, 0x99A);
func_01ff91b8(&this->mUnk_10C, 0x0, 0x4CD);
break;
case 0x2: {
if (this->mUnk_102 != 0x0 && this->mUnk_100 >= this->mUnk_102) {
this->MapObject::func_ov000_0209d2c4(0x0, true);
if (this->mUnk_104 != 0x0) {
this->MapObject::func_ov000_0209d2c4(0x1, false);
}
}
if (this->mUnk_0F8 == NULL && this->mUnk_20.mParams[1] != 0x0) {
this->vfunc_3C(0x1);
return;
}
VecFx32 *vec = data_027e0ce0->func_01fff148(0x0);
VecFx32 sp48;
VecFx32_Init(vec->x - this->mPos.x, vec->y - this->mPos.y, vec->z - this->mPos.z, &sp48);
VecFx32_Normalize(&sp48, &sp48);
VecFx32 sp3C;
VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(1.0f), &sp3C);
bool var_r5 = false;
if (VecFx32_Dot(&sp48, &sp3C) > FLOAT_TO_FX32(0.4f)) {
s16 param = (s16) func_01ffbbe0(sp48.x, sp48.z);
func_01ff91b8(&this->mUnk_10C, param, 0x333);
var_r5 = true;
} else {
func_01ff91b8(&this->mUnk_10C, 0x0, 0x333);
}
if (var_r5 && this->mUnk_110 != 0x0) {
fx16 var_r3 = COS((u16) (this->mUnk_10E * 0xFFFF / this->mUnk_110));
if (var_r3 < 0) {
var_r3 = -var_r3;
}
this->mUnk_108 = var_r3;
if (this->mUnk_10E < this->mUnk_110) {
++this->mUnk_10E;
}
if (this->mUnk_10E >= this->mUnk_110) {
this->mUnk_110 = 0x0;
this->mUnk_10E = 0x0;
}
} else {
if (gRandom.Next32(0x33) != 0x0) {
this->mUnk_110 = 0x0;
} else {
this->mUnk_110 = gRandom.Next32(0x29) + 0xA;
}
this->mUnk_10E = 0x0;
if (!var_r5) {
this->mUnk_110 = 0x0;
this->mUnk_10E = 0x0;
func_01ff9218(&this->mUnk_108, 0x0, 0x800);
} else {
func_01ff9218(&this->mUnk_108, 0x1000, 0x800);
}
}
break;
}
case 0x1: {
VecFx32 sp30;
VecFx32 sp24;
VecFx32 sp18;
VecFx32 sp0C;
if (this->mUnk_100 >= this->mUnk_102) {
VecFx32_Init(this->mPos.x + this->mUnk_0EC.x, this->mPos.y + this->mUnk_0EC.y, this->mPos.z + this->mUnk_0EC.z,
&sp30);
sp18 = sp30;
ActorUnkNSSW *actorNSSW = this->mUnk_0F8;
VecFx32_Copy(&sp18, &actorNSSW->mPos);
VecFx32_Copy(&sp18, &actorNSSW->mPrevPos);
this->MapObject::func_ov000_0209d2c4(0x1, true);
if (this->mUnk_104 != 0x0) {
this->MapObject::func_ov000_0209d2c4(0x0, false);
}
this->vfunc_3C(0x0);
} else {
fx32 z = this->mPos.z + this->mUnk_0EC.z +
func_02015a18(this->mUnk_100 << 0xC, 0, -0x1000, 0, this->mUnk_102 << 0xC, 0, 0);
VecFx32_Init(this->mPos.x + this->mUnk_0EC.x, this->mPos.y + this->mUnk_0EC.y, z, &sp24);
sp0C = sp24;
ActorUnkNSSW *actorNSSW = this->mUnk_0F8;
VecFx32_Copy(&sp0C, &actorNSSW->mPos);
VecFx32_Copy(&sp0C, &actorNSSW->mPrevPos);
}
break;
}
case 0x3:
func_01ff9218(&this->mUnk_108, 0x0, 0x99A);
func_01ff91b8(&this->mUnk_10C, 0x0, 0x4CD);
break;
default:
break;
}
this->IsInternalTimerOut();
this->mUnk_040.func_ov032_021210a0(this->mUnk_108);
if (this->mUnk_10C > 0x2AAB) {
this->mUnk_10C = 0x2AAB;
}
if (this->mUnk_10C < -0x2AAB) {
this->mUnk_10C = -0x2AAB;
}
if (this->mUnk_114 != NULL) {
(*(u16 *) &this->mUnk_20.mUnk_08) = this->mUnk_10C;
}
this->mAngle = this->mUnk_10C;
}
bool MapObjectUnkSWSW::vfunc_1C(ActorRef param1, unk32 param2, VecFx32 *param3) {
if (this->mUnk_0FC != 0x2) {
if (param1.type != 0x0) {
Actor *actor = gpActorManager->func_01fff3b4(param1);
if (actor != NULL) {
if (actor->GetActorId() == ActorId_NSSW) {
return false;
}
}
}
return true;
}
if (param1.type != 0x0) {
ActorUnkNSSW *actorNSSW = (ActorUnkNSSW *) gpActorManager->func_01fff3b4(param1);
if (actorNSSW != NULL) {
if (actorNSSW->GetActorId() == ActorId_NSSW) {
if (actorNSSW->mUnk_0BC != 0x4) {
return true;
}
UnkAngleStruct angle = {.angle = actorNSSW->mAngle};
VecFx32 *vec = data_027e0ce0->func_01fff148(0x0);
if (!func_02016ae0(&actorNSSW->mPos, vec, angle, 0x2AAB, 0x1)) {
return false;
}
this->mUnk_114 = actorNSSW;
actorNSSW->func_ov032_02120c64(this);
VecFx32 sp14;
VecFx32 sp08;
VecFx32_Init(this->mPos.x + this->mUnk_0EC.x, this->mPos.y + this->mUnk_0EC.y, this->mPos.z + this->mUnk_0EC.z,
&sp14);
sp08 = sp14;
ActorUnkNSSW *nssw114 = this->mUnk_114;
VecFx32_Init(sp08.x, sp08.y, sp08.z, &nssw114->mPos);
VecFx32_Init(sp08.x, sp08.y, sp08.z, &nssw114->mPrevPos);
this->vfunc_3C(0x0);
this->MapObject::func_ov000_0209d2c4(0x1, true);
if (this->mUnk_104 != 0x0) {
this->MapObject::func_ov000_0209d2c4(0x0, false);
}
data_027e09a8->func_ov000_02071b30(0x12A, &this->mPos, 0x0);
if (this->mUnk_105 != 0x0) {
data_027e09a8->func_ov000_02071b30(0x12B, &this->mPos, 0x0);
this->vfunc_3C(0x3);
}
return false;
}
}
}
return true;
}
void MapObjectUnkSWSW::vfunc_38() {
if (this->mUnk_0FC == 0x3) {
this->mUnk_114 = NULL;
return;
}
this->vfunc_3C(0x2);
this->mUnk_102 = 0xF;
this->mUnk_100 = 0x0;
this->mUnk_114 = NULL;
}
void MapObjectUnkSWSW::func_ov032_02121b90() {
this->mUnk_0F8 = NULL;
if (this->mUnk_114 != NULL) {
if (this->mUnk_114->mUnk_184_eur != NULL && this != this->mUnk_114->mUnk_184_eur) {
this->mUnk_114->mUnk_184_eur->func_ov032_02121b90();
}
this->mUnk_0F8 = this->mUnk_114;
this->mUnk_114->mUnk_184_eur = this;
this->mUnk_0F8->mUnk_188_eur = this;
this->vfunc_3C(0x0);
return;
}
if (this->mUnk_0FC != 0x2) {
return;
}
if (this->mUnk_20.mParams[1] == 0x0) {
return;
}
this->vfunc_3C(0x1);
}
// non-matching (last copies)
void MapObjectUnkSWSW::vfunc_3C(unk32 param1) {
this->mUnk_0FC = param1;
this->mUnk_102 = 0xFFFF;
this->mUnk_100 = 0x0000;
switch (param1) {
case 0x2:
this->mUnk_102 = 0x0;
this->mUnk_100 = 0x0;
this->mUnk_0AC.func_ov000_020577f8(0x1000);
break;
case 0x1: {
VecFx32 sp18;
VecFx32 sp0C;
VecFx32 sp00;
VecFx32_Init(this->mPos.x + this->mUnk_0EC.x, this->mPos.y + this->mUnk_0EC.y, this->mPos.z + this->mUnk_0EC.z,
&sp0C);
ActorUnkNSSW *actorNSSW = this->func_ov032_02121dc8(&sp0C);
this->mUnk_0F8 = actorNSSW;
this->mUnk_114 = actorNSSW;
this->mUnk_102 = 0x28;
this->mUnk_100 = 0x00;
this->mUnk_0AC.func_ov000_020577f8(0x1000);
VecFx32_Init(this->mPos.x + this->mUnk_0EC.x, this->mPos.y + this->mUnk_0EC.y,
this->mPos.z + this->mUnk_0EC.z - FLOAT_TO_FX32(1.0f), &sp18);
sp00 = sp18;
ActorUnkNSSW *nssw0F8 = this->mUnk_0F8;
VecFx32_Copy(&sp00, &nssw0F8->mPos);
VecFx32_Copy(&sp00, &nssw0F8->mPrevPos);
break;
}
case 0x0:
this->mUnk_0AC.func_ov000_020577f8(0x1000);
break;
case 0x3:
this->mUnk_0AC.func_ov000_020577f8(0x0);
break;
default:
break;
}
}
void MapObjectUnkSWSW::vfunc_14() {
VecFx32 vec;
VecFx32_Init(this->mPos.x + this->mUnk_0EC.x, this->mPos.y + this->mUnk_0EC.y, this->mPos.z + this->mUnk_0EC.z, &vec);
this->mUnk_040.func_01ffc6d4(this->mAngleStruct, &vec);
}
struct UnkStack_ov032_02121dc8 {
/* 00 */ ActorRef ref;
/* 04 */ STRUCT_PAD(0x04, 0x08);
/* 08 */
};
// non-matching (vec copy)
ActorUnkNSSW *MapObjectUnkSWSW::func_ov032_02121dc8(VecFx32 *param1) {
ActorParams params;
UnkStack_ov032_02121dc8 unk;
params.mUnk_28 = 0;
params.func_ov000_020975f8();
params.mInitialAngle = this->mAngle;
params.mUnk_28 = *(unk32 *) &this->mUnk_38;
VecFx32_Init(param1->x, param1->y, param1->z, &params.mInitialPos);
Actor::func_ov000_020973f4(&unk.ref, &data_ov000_020b539c_eur, ActorId_NSSW, &params, 0x0);
ActorUnkNSSW *actor = (ActorUnkNSSW *) gpActorManager->func_01fff3b4(unk.ref);
actor->mUnk_184_eur = this;
actor->mUnk_188_eur = this;
return actor;
}
+1 -2
View File
@@ -51,7 +51,6 @@ extern "C" void func_01ffad5c(Mat4x3p *, Mat4x3p *, Mat4x3p *);
extern "C" fx32 func_01ffb428(unk32, unk32);
extern "C" void func_01ffb714(VecFx32 *, VecFx32 *, VecFx32 *);
extern "C" unk32 func_01ffbbe0(fx32 param1, fx32 param2);
extern "C" void func_01ffc6d4(ModelRender *param1, UnkAngleStruct param2, VecFx32 *param3);
extern "C" void func_0200eab0(G3d_Model *, unk32, u8);
// Overlay 0
@@ -453,7 +452,7 @@ void ActorUnkCANS::vfunc_2C(unk32 param1) {
return;
}
((UnkSystem6_Derived2 *) &mUnk_0B0)->func_01ffc6d4(mAngleStruct, &mPos);
mUnk_0B0.func_01ffc6d4(mAngleStruct, &mPos);
if (mUnk_268 != NULL) {
VecFx32 vec;