Decompile MapObject functions (#51)

* decompile MapObject

* fix regression

* match the remaining 4 functions
This commit is contained in:
Yanis
2026-04-16 13:27:46 +02:00
committed by GitHub
parent bcb6371074
commit 754eb10308
24 changed files with 563 additions and 149 deletions
+2 -2
View File
@@ -210,9 +210,9 @@ func_01fff520 kind:function(arm,size=0x64) addr:0x01fff520
_ZN9MapObject14GetMapObjectIdEv kind:function(arm,size=0xc) addr:0x01fff584
func_01fff590 kind:function(arm,size=0x40) addr:0x01fff590
_ZN10ActorRupee13func_01fff5d0Eii kind:function(arm,size=0x3c) addr:0x01fff5d0
func_01fff60c kind:function(arm,size=0x8c) addr:0x01fff60c
_ZN18UnkStruct_027e09b413func_01fff60cEiiihii kind:function(arm,size=0x8c) addr:0x01fff60c
func_01fff698 kind:function(arm,size=0x38) addr:0x01fff698
func_01fff6d0 kind:function(arm,size=0x74) addr:0x01fff6d0
_ZN21UnkStruct_027e0cd8_1013func_01fff6d0EP5Vec3pPiS2_ kind:function(arm,size=0x74) addr:0x01fff6d0
func_01fff744 kind:function(arm,size=0x20) addr:0x01fff744
func_01fff764 kind:function(arm,size=0xec) addr:0x01fff764
func_01fff850 kind:function(arm,size=0x158) addr:0x01fff850
@@ -57,6 +57,10 @@ src/000_Second/Actor/ActorUnkEFIK.cpp:
.data start:0x020b342c end:0x020b34b0
.bss start:0x020b5ce4 end:0x020b5d30
src/000_Second/MapObject/MapObject.cpp:
.text start:0x0209cfe0 end:0x0209d700
.data start:0x020b3588 end:0x020b35c8
src/000_Second/MapObject/MapObjectSwitchStep.cpp:
.text start:0x0209dce0 end:0x0209e3f8
.rodata start:0x020af550 end:0x020af574
+2 -2
View File
@@ -7151,7 +7151,7 @@ from:0x0209cfa4 kind:load to:0x020b3578 module:overlay(0)
from:0x0209cfa8 kind:load to:0x020b3580 module:overlay(0)
from:0x0209d008 kind:arm_call to:0x0209c7c8 module:overlay(0)
from:0x0209d060 kind:arm_call to:0x02028cdc module:main
from:0x0209d08c kind:load to:0x020b3590 module:overlay(0)
from:0x0209d08c kind:load to:0x020b3588 add:0x8 module:overlay(0)
from:0x0209d090 kind:load to:0x020b5d34 module:overlay(0)
from:0x0209d0a0 kind:arm_call to:0x02011ff4 module:main
from:0x0209d0f4 kind:arm_call to:0x01fff6d0 module:itcm
@@ -7197,7 +7197,7 @@ from:0x0209d6f8 kind:arm_call to:0x01ffb6e4 module:itcm
from:0x0209d708 kind:arm_call to:0x0209cfe0 module:overlay(0)
from:0x0209d730 kind:arm_call to:0x0209da78 module:overlay(0)
from:0x0209d740 kind:arm_call to:0x0209da78 module:overlay(0)
from:0x0209d74c kind:load to:0x020b35d0 module:overlay(0)
from:0x0209d74c kind:load to:0x020b35c8 add:0x8 module:overlay(0)
from:0x0209d758 kind:arm_call to:0x0209d0ac module:overlay(0)
from:0x0209d760 kind:arm_call to:0x02011ff4 module:main
from:0x0209d774 kind:arm_call to:0x0209d0ac module:overlay(0)
+22 -22
View File
@@ -488,7 +488,7 @@ func_ov000_02061828 kind:function(thumb,size=0x28) addr:0x02061828
func_ov000_02061850 kind:function(arm,size=0x18) addr:0x02061850
func_ov000_02061868 kind:function(arm,size=0x1e0) addr:0x02061868
func_ov000_02061a48 kind:function(arm,size=0x28) addr:0x02061a48
func_ov000_02061a70 kind:function(arm,size=0xc) addr:0x02061a70
_ZN18UnkStruct_027e099819func_ov000_02061a70Ev kind:function(arm,size=0xc) addr:0x02061a70
func_ov000_02061a7c kind:function(arm,size=0x10) addr:0x02061a7c
_ZN26GameModeManagerBase_104_0CD1Ev kind:function(arm,size=0x18) addr:0x02061a8c
_ZN26GameModeManagerBase_104_0CD0Ev kind:function(arm,size=0x20) addr:0x02061aa4
@@ -1416,7 +1416,7 @@ func_ov000_0207bffc kind:function(arm,size=0x4) addr:0x0207bffc
func_ov000_0207c000 kind:function(arm,size=0x8) addr:0x0207c000
func_ov000_0207c008 kind:function(arm,size=0x8) addr:0x0207c008
func_ov000_0207c010 kind:function(arm,size=0x8) addr:0x0207c010
_ZN24MapObjectProfile_D4_BaseC2Ev kind:function(arm,size=0x30) addr:0x0207c018
_ZN17MapObject_10_BaseC2Ev kind:function(arm,size=0x30) addr:0x0207c018
func_ov000_0207c048 kind:function(arm,size=0x30) addr:0x0207c048
func_ov000_0207c078 kind:function(arm,size=0x38) addr:0x0207c078
func_ov000_0207c0b0 kind:function(arm,size=0x54) addr:0x0207c0b0
@@ -1557,7 +1557,7 @@ func_ov000_02080098 kind:function(arm,size=0xc8) addr:0x02080098
func_ov000_02080160 kind:function(arm,size=0x20) addr:0x02080160
_ZN21UnkStruct_027e0cd8_0c19func_ov000_02080180EPv kind:function(arm,size=0x10) addr:0x02080180
func_ov000_02080190 kind:function(arm,size=0x20) addr:0x02080190
func_ov000_020801b0 kind:function(arm,size=0x60) addr:0x020801b0
_ZN21UnkStruct_027e0cd8_0c19func_ov000_020801b0EP5Vec2bii kind:function(arm,size=0x60) addr:0x020801b0
func_ov000_02080210 kind:function(arm,size=0x78) addr:0x02080210
func_ov000_02080288 kind:function(arm,size=0x64) addr:0x02080288
func_ov000_020802ec kind:function(arm,size=0x78) addr:0x020802ec
@@ -1638,8 +1638,8 @@ _ZN18UnkStruct_027e0cd819func_ov000_02081e30Eii kind:function(arm,size=0x8c) add
func_ov000_02081ebc kind:function(arm,size=0x10) addr:0x02081ebc
_ZN18UnkStruct_027e0cd819func_ov000_02081eccEsi kind:function(arm,size=0x10) addr:0x02081ecc
func_ov000_02081edc kind:function(arm,size=0x10) addr:0x02081edc
func_ov000_02081eec kind:function(arm,size=0x50) addr:0x02081eec
func_ov000_02081f3c kind:function(arm,size=0x4c) addr:0x02081f3c
_ZN18UnkStruct_027e0cd819func_ov000_02081eecEsii kind:function(arm,size=0x50) addr:0x02081eec
_ZN18UnkStruct_027e0cd819func_ov000_02081f3cEsi kind:function(arm,size=0x4c) addr:0x02081f3c
func_ov000_02081f88 kind:function(arm,size=0x90) addr:0x02081f88
func_ov000_02082018 kind:function(arm,size=0x10c) addr:0x02082018
func_ov000_02082124 kind:function(arm,size=0x40) addr:0x02082124
@@ -2511,7 +2511,7 @@ func_ov000_0209c820 kind:function(arm,size=0x8) addr:0x0209c820
func_ov000_0209c828 kind:function(arm,size=0x8c) addr:0x0209c828
func_ov000_0209c8b4 kind:function(arm,size=0x28) addr:0x0209c8b4
func_ov000_0209c8dc kind:function(arm,size=0x8) addr:0x0209c8dc
func_ov000_0209c8e4 kind:function(arm,size=0x8) addr:0x0209c8e4
_ZN16MapObjectProfile19func_ov000_0209c8e4EP12MapObject_20 kind:function(arm,size=0x8) addr:0x0209c8e4
func_ov000_0209c8ec kind:function(arm,size=0x70) addr:0x0209c8ec
func_ov000_0209c95c kind:function(arm,size=0x14) addr:0x0209c95c
func_ov000_0209c970 kind:function(arm,size=0x2c) addr:0x0209c970
@@ -2553,28 +2553,28 @@ _ZN9MapObjectD0Ev kind:function(arm,size=0x14) addr:0x0209d098
_ZN9MapObjectD2Ev kind:function(arm,size=0x4) addr:0x0209d0ac
_ZN9MapObject8vfunc_00Ev kind:function(arm,size=0x8) addr:0x0209d0b0
_ZN9MapObject8vfunc_04Ev kind:function(arm,size=0x4) addr:0x0209d0b8
_ZN9MapObject19func_ov000_0209d0bcEv kind:function(arm,size=0x58) addr:0x0209d0bc
_ZN9MapObject19func_ov000_0209d0bcEP5Vec2bPS_ kind:function(arm,size=0x58) addr:0x0209d0bc
_ZN9MapObject19func_ov000_0209d114Ev kind:function(arm,size=0x18) addr:0x0209d114
_ZN9MapObject19func_ov000_0209d12cEv kind:function(arm,size=0x18) addr:0x0209d12c
_ZN9MapObject19func_ov000_0209d144Ev kind:function(arm,size=0x88) addr:0x0209d144
_ZN9MapObject19func_ov000_0209d144EP5Vec2sii kind:function(arm,size=0x88) addr:0x0209d144
_ZN9MapObject8vfunc_1CEv kind:function(arm,size=0x8) addr:0x0209d1cc
_ZN9MapObject8vfunc_20Ev kind:function(arm,size=0x4) addr:0x0209d1d4
_ZN9MapObject8vfunc_24Ev kind:function(arm,size=0xc) addr:0x0209d1d8
_ZN9MapObject8vfunc_28Ev kind:function(arm,size=0x8) addr:0x0209d1e4
_ZN9MapObject8vfunc_2CEv kind:function(arm,size=0x40) addr:0x0209d1ec
_ZN9MapObject19func_ov000_0209d22cEv kind:function(arm,size=0x48) addr:0x0209d22c
_ZN9MapObject19func_ov000_0209d274Ev kind:function(arm,size=0x28) addr:0x0209d274
_ZN9MapObject8vfunc_2CEP5Vec3p kind:function(arm,size=0x40) addr:0x0209d1ec
_ZN9MapObject19func_ov000_0209d22cEPsPS_i kind:function(arm,size=0x48) addr:0x0209d22c
_ZN9MapObject19func_ov000_0209d274Ei kind:function(arm,size=0x28) addr:0x0209d274
_ZN9MapObject19func_ov000_0209d29cEi kind:function(arm,size=0x28) addr:0x0209d29c
_ZN9MapObject19func_ov000_0209d2c4Eii kind:function(arm,size=0x2c) addr:0x0209d2c4
_ZN9MapObject19func_ov000_0209d2f0Ev kind:function(arm,size=0xc4) addr:0x0209d2f0
_ZN9MapObject19func_ov000_0209d3b4Ev kind:function(arm,size=0x80) addr:0x0209d3b4
_ZN9MapObject19func_ov000_0209d434Ev kind:function(arm,size=0xe4) addr:0x0209d434
_ZN9MapObject19func_ov000_0209d518Ev kind:function(arm,size=0x34) addr:0x0209d518
_ZN9MapObject19func_ov000_0209d54cEv kind:function(arm,size=0x7c) addr:0x0209d54c
_ZN9MapObject19func_ov000_0209d5c8Ev kind:function(arm,size=0x4c) addr:0x0209d5c8
_ZN9MapObject19func_ov000_0209d614Ev kind:function(arm,size=0x54) addr:0x0209d614
_ZN9MapObject19func_ov000_0209d2f0EiiP5Vec2b kind:function(arm,size=0xc4) addr:0x0209d2f0
_ZN9MapObject19func_ov000_0209d3b4Eii kind:function(arm,size=0x80) addr:0x0209d3b4
_ZN9MapObject19func_ov000_0209d434EPcP34UnkStruct_ov019_020d24c8_28_258_00i kind:function(arm,size=0xe4) addr:0x0209d434
_ZN9MapObject19func_ov000_0209d518Eiiih kind:function(arm,size=0x34) addr:0x0209d518
_ZN9MapObject19func_ov000_0209d54cEitP5Vec3pst kind:function(arm,size=0x7c) addr:0x0209d54c
_ZN9MapObject19func_ov000_0209d5c8E8ActorRef kind:function(arm,size=0x4c) addr:0x0209d5c8
_ZN9MapObject19func_ov000_0209d614Ei kind:function(arm,size=0x54) addr:0x0209d614
_ZN9MapObject19func_ov000_0209d668Ev kind:function(arm,size=0x44) addr:0x0209d668
_ZN9MapObject19func_ov000_0209d6acEv kind:function(arm,size=0x54) addr:0x0209d6ac
_ZN9MapObject19func_ov000_0209d6acEP5Vec3p kind:function(arm,size=0x54) addr:0x0209d6ac
func_ov000_0209d700 kind:function(arm,size=0x50) addr:0x0209d700
_ZN19func_ov000_0209d750D0Ev kind:function(arm,size=0x1c) addr:0x0209d750
_ZN19func_ov000_0209d76cD2Ev kind:function(arm,size=0x14) addr:0x0209d76c
@@ -3694,13 +3694,13 @@ data_ov000_020b3568 kind:data(any) addr:0x020b3568
data_ov000_020b3570 kind:data(any) addr:0x020b3570
data_ov000_020b3578 kind:data(any) addr:0x020b3578
data_ov000_020b3580 kind:data(any) addr:0x020b3580
data_ov000_020b3590 kind:data(any) addr:0x020b3590
data_ov000_020b35d0 kind:data(any) addr:0x020b35d0
_ZTV9MapObject kind:data(any) addr:0x020b3588
data_ov000_020b35d0 kind:data(any) addr:0x020b35c8
data_ov000_020b3630 kind:data(any) addr:0x020b3630
data_ov000_020b363c kind:data(any) addr:0x020b363c
_ZTV26MapObjectProfileSwitchStep kind:data(any) addr:0x020b3678
_ZTV31MapObjectProfileSwitchStep_Base kind:data(any) addr:0x020b3694
_ZTV19MapObjectProfile_D4 kind:data(any) addr:0x020b36b0
_ZTV12MapObject_10 kind:data(any) addr:0x020b36b0
_ZTV22MapObjectSwitchStep_40 kind:data(any) addr:0x020b36d8
_ZTV19MapObjectSwitchStep kind:data(any) addr:0x020b3704
_ZTV26MapObjectProfileMiniBlocks kind:data(any) addr:0x020b3744
+2 -2
View File
@@ -210,9 +210,9 @@ func_01fff520 kind:function(arm,size=0x64) addr:0x01fff520
_ZN9MapObject14GetMapObjectIdEv kind:function(arm,size=0xc) addr:0x01fff584
func_01fff590 kind:function(arm,size=0x40) addr:0x01fff590
_ZN10ActorRupee13func_01fff5d0Eii kind:function(arm,size=0x3c) addr:0x01fff5d0
func_01fff60c kind:function(arm,size=0x8c) addr:0x01fff60c
_ZN18UnkStruct_027e09b413func_01fff60cEiiihii kind:function(arm,size=0x8c) addr:0x01fff60c
func_01fff698 kind:function(arm,size=0x38) addr:0x01fff698
func_01fff6d0 kind:function(arm,size=0x74) addr:0x01fff6d0
_ZN21UnkStruct_027e0cd8_1013func_01fff6d0EP5Vec3pPiS2_ kind:function(arm,size=0x74) addr:0x01fff6d0
func_01fff744 kind:function(arm,size=0x20) addr:0x01fff744
func_01fff764 kind:function(arm,size=0xec) addr:0x01fff764
func_01fff850 kind:function(arm,size=0x158) addr:0x01fff850
@@ -56,6 +56,10 @@ src/000_Second/Actor/ActorUnkEFIK.cpp:
.data start:0x020b4c2c end:0x020b4cb0
.bss start:0x020b74f4 end:0x020b7540
src/000_Second/MapObject/MapObject.cpp:
.text start:0x0209e7a4 end:0x0209eec4
.data start:0x020b4d88 end:0x020b4dc8
src/000_Second/MapObject/MapObjectSwitchStep.cpp:
.text start:0x0209f4a4 end:0x0209fbbc
.rodata start:0x020af548 end:0x020af56c
+2 -2
View File
@@ -7152,7 +7152,7 @@ from:0x0209e768 kind:load to:0x020b4d78 module:overlay(0)
from:0x0209e76c kind:load to:0x020b4d80 module:overlay(0)
from:0x0209e7cc kind:arm_call to:0x0209df94 module:overlay(0)
from:0x0209e824 kind:arm_call to:0x0202a20c module:main
from:0x0209e850 kind:load to:0x020b4d90 module:overlay(0)
from:0x0209e850 kind:load to:0x020b4d88 add:0x8 module:overlay(0)
from:0x0209e854 kind:load to:0x020b7544 module:overlay(0)
from:0x0209e864 kind:arm_call to:0x02011ff4 module:main
from:0x0209e8b8 kind:arm_call to:0x01fff6d0 module:itcm
@@ -7198,7 +7198,7 @@ from:0x0209eebc kind:arm_call to:0x01ffb6e4 module:itcm
from:0x0209eecc kind:arm_call to:0x0209e7a4 module:overlay(0)
from:0x0209eef4 kind:arm_call to:0x0209f23c module:overlay(0)
from:0x0209ef04 kind:arm_call to:0x0209f23c module:overlay(0)
from:0x0209ef10 kind:load to:0x020b4dd0 module:overlay(0)
from:0x0209ef10 kind:load to:0x020b4dc8 add:0x8 module:overlay(0)
from:0x0209ef1c kind:arm_call to:0x0209e870 module:overlay(0)
from:0x0209ef24 kind:arm_call to:0x02011ff4 module:main
from:0x0209ef38 kind:arm_call to:0x0209e870 module:overlay(0)
+21 -21
View File
@@ -488,7 +488,7 @@ func_ov000_02062db0 kind:function(thumb,size=0x28) addr:0x02062db0
func_ov000_02062dd8 kind:function(arm,size=0x18) addr:0x02062dd8
func_ov000_02062df0 kind:function(arm,size=0x1e0) addr:0x02062df0
func_ov000_02062fd0 kind:function(arm,size=0x28) addr:0x02062fd0
func_ov000_02062ff8 kind:function(arm,size=0xc) addr:0x02062ff8
_ZN18UnkStruct_027e099819func_ov000_02061a70Ev kind:function(arm,size=0xc) addr:0x02062ff8
func_ov000_02063004 kind:function(arm,size=0x10) addr:0x02063004
_ZN26GameModeManagerBase_104_0CD1Ev kind:function(arm,size=0x18) addr:0x02063014
_ZN26GameModeManagerBase_104_0CD0Ev kind:function(arm,size=0x20) addr:0x0206302c
@@ -1414,7 +1414,7 @@ func_ov000_0207d6b4 kind:function(arm,size=0x4) addr:0x0207d6b4
func_ov000_0207d6b8 kind:function(arm,size=0x8) addr:0x0207d6b8
func_ov000_0207d6c0 kind:function(arm,size=0x8) addr:0x0207d6c0
func_ov000_0207d6c8 kind:function(arm,size=0x8) addr:0x0207d6c8
_ZN24MapObjectProfile_D4_BaseC2Ev kind:function(arm,size=0x30) addr:0x0207d6d0
_ZN17MapObject_10_BaseC2Ev kind:function(arm,size=0x30) addr:0x0207d6d0
func_ov000_0207d700 kind:function(arm,size=0x30) addr:0x0207d700
func_ov000_0207d730 kind:function(arm,size=0x38) addr:0x0207d730
func_ov000_0207d768 kind:function(arm,size=0x54) addr:0x0207d768
@@ -1555,7 +1555,7 @@ func_ov000_02081750 kind:function(arm,size=0xc8) addr:0x02081750
func_ov000_02081818 kind:function(arm,size=0x20) addr:0x02081818
_ZN21UnkStruct_027e0cd8_0c19func_ov000_02080180EPv kind:function(arm,size=0x10) addr:0x02081838
func_ov000_02081848 kind:function(arm,size=0x20) addr:0x02081848
func_ov000_02081868 kind:function(arm,size=0x60) addr:0x02081868
_ZN21UnkStruct_027e0cd8_0c19func_ov000_020801b0EP5Vec2bii kind:function(arm,size=0x60) addr:0x02081868
func_ov000_020818c8 kind:function(arm,size=0x78) addr:0x020818c8
func_ov000_02081940 kind:function(arm,size=0x64) addr:0x02081940
func_ov000_020819a4 kind:function(arm,size=0x78) addr:0x020819a4
@@ -1636,8 +1636,8 @@ _ZN18UnkStruct_027e0cd819func_ov000_02081e30Eii kind:function(arm,size=0x8c) add
func_ov000_02083574 kind:function(arm,size=0x10) addr:0x02083574
_ZN18UnkStruct_027e0cd819func_ov000_02081eccEsi kind:function(arm,size=0x10) addr:0x02083584
func_ov000_02083594 kind:function(arm,size=0x10) addr:0x02083594
func_ov000_020835a4 kind:function(arm,size=0x50) addr:0x020835a4
func_ov000_020835f4 kind:function(arm,size=0x4c) addr:0x020835f4
_ZN18UnkStruct_027e0cd819func_ov000_02081eecEsii kind:function(arm,size=0x50) addr:0x020835a4
_ZN18UnkStruct_027e0cd819func_ov000_02081f3cEsi kind:function(arm,size=0x4c) addr:0x020835f4
func_ov000_02083640 kind:function(arm,size=0x90) addr:0x02083640
func_ov000_020836d0 kind:function(arm,size=0x10c) addr:0x020836d0
func_ov000_020837dc kind:function(arm,size=0x40) addr:0x020837dc
@@ -2549,28 +2549,28 @@ _ZN9MapObjectD0Ev kind:function(arm,size=0x14) addr:0x0209e85c
_ZN9MapObjectD2Ev kind:function(arm,size=0x4) addr:0x0209e870
_ZN9MapObject8vfunc_00Ev kind:function(arm,size=0x8) addr:0x0209e874
_ZN9MapObject8vfunc_04Ev kind:function(arm,size=0x4) addr:0x0209e87c
_ZN9MapObject19func_ov000_0209d0bcEv kind:function(arm,size=0x58) addr:0x0209e880
_ZN9MapObject19func_ov000_0209d0bcEP5Vec2bPS_ kind:function(arm,size=0x58) addr:0x0209e880
_ZN9MapObject19func_ov000_0209d114Ev kind:function(arm,size=0x18) addr:0x0209e8d8
_ZN9MapObject19func_ov000_0209d12cEv kind:function(arm,size=0x18) addr:0x0209e8f0
_ZN9MapObject19func_ov000_0209d144Ev kind:function(arm,size=0x88) addr:0x0209e908
_ZN9MapObject19func_ov000_0209d144EP5Vec2sii kind:function(arm,size=0x88) addr:0x0209e908
_ZN9MapObject8vfunc_1CEv kind:function(arm,size=0x8) addr:0x0209e990
_ZN9MapObject8vfunc_20Ev kind:function(arm,size=0x4) addr:0x0209e998
_ZN9MapObject8vfunc_24Ev kind:function(arm,size=0xc) addr:0x0209e99c
_ZN9MapObject8vfunc_28Ev kind:function(arm,size=0x8) addr:0x0209e9a8
_ZN9MapObject8vfunc_2CEv kind:function(arm,size=0x40) addr:0x0209e9b0
_ZN9MapObject19func_ov000_0209d22cEv kind:function(arm,size=0x48) addr:0x0209e9f0
_ZN9MapObject19func_ov000_0209d274Ev kind:function(arm,size=0x28) addr:0x0209ea38
_ZN9MapObject8vfunc_2CEP5Vec3p kind:function(arm,size=0x40) addr:0x0209e9b0
_ZN9MapObject19func_ov000_0209d22cEPsPS_i kind:function(arm,size=0x48) addr:0x0209e9f0
_ZN9MapObject19func_ov000_0209d274Ei kind:function(arm,size=0x28) addr:0x0209ea38
_ZN9MapObject19func_ov000_0209d29cEi kind:function(arm,size=0x28) addr:0x0209ea60
_ZN9MapObject19func_ov000_0209d2c4Eii kind:function(arm,size=0x2c) addr:0x0209ea88
_ZN9MapObject19func_ov000_0209d2f0Ev kind:function(arm,size=0xc4) addr:0x0209eab4
_ZN9MapObject19func_ov000_0209d3b4Ev kind:function(arm,size=0x80) addr:0x0209eb78
_ZN9MapObject19func_ov000_0209d434Ev kind:function(arm,size=0xe4) addr:0x0209ebf8
_ZN9MapObject19func_ov000_0209d518Ev kind:function(arm,size=0x34) addr:0x0209ecdc
_ZN9MapObject19func_ov000_0209d54cEv kind:function(arm,size=0x7c) addr:0x0209ed10
_ZN9MapObject19func_ov000_0209d5c8Ev kind:function(arm,size=0x4c) addr:0x0209ed8c
_ZN9MapObject19func_ov000_0209d614Ev kind:function(arm,size=0x54) addr:0x0209edd8
_ZN9MapObject19func_ov000_0209d2f0EiiP5Vec2b kind:function(arm,size=0xc4) addr:0x0209eab4
_ZN9MapObject19func_ov000_0209d3b4Eii kind:function(arm,size=0x80) addr:0x0209eb78
_ZN9MapObject19func_ov000_0209d434EPcP34UnkStruct_ov019_020d24c8_28_258_00i kind:function(arm,size=0xe4) addr:0x0209ebf8
_ZN9MapObject19func_ov000_0209d518Eiiih kind:function(arm,size=0x34) addr:0x0209ecdc
_ZN9MapObject19func_ov000_0209d54cEitP5Vec3pst kind:function(arm,size=0x7c) addr:0x0209ed10
_ZN9MapObject19func_ov000_0209d5c8E8ActorRef kind:function(arm,size=0x4c) addr:0x0209ed8c
_ZN9MapObject19func_ov000_0209d614Ei kind:function(arm,size=0x54) addr:0x0209edd8
_ZN9MapObject19func_ov000_0209d668Ev kind:function(arm,size=0x44) addr:0x0209ee2c
_ZN9MapObject19func_ov000_0209d6acEv kind:function(arm,size=0x54) addr:0x0209ee70
_ZN9MapObject19func_ov000_0209d6acEP5Vec3p kind:function(arm,size=0x54) addr:0x0209ee70
func_ov000_0209eec4 kind:function(arm,size=0x50) addr:0x0209eec4
_ZN19func_ov000_0209ef14D0Ev kind:function(arm,size=0x1c) addr:0x0209ef14
_ZN19func_ov000_0209ef30D2Ev kind:function(arm,size=0x14) addr:0x0209ef30
@@ -3694,13 +3694,13 @@ data_ov000_020b4d68 kind:data(any) addr:0x020b4d68
data_ov000_020b4d70 kind:data(any) addr:0x020b4d70
data_ov000_020b4d78 kind:data(any) addr:0x020b4d78
data_ov000_020b4d80 kind:data(any) addr:0x020b4d80
data_ov000_020b4d90 kind:data(any) addr:0x020b4d90
data_ov000_020b4dd0 kind:data(any) addr:0x020b4dd0
_ZTV9MapObject kind:data(any) addr:0x020b4d88
data_ov000_020b4dd0 kind:data(any) addr:0x020b4dc8
data_ov000_020b4e30 kind:data(any) addr:0x020b4e30
data_ov000_020b4e3c kind:data(any) addr:0x020b4e3c
_ZTV26MapObjectProfileSwitchStep kind:data(any) addr:0x020b4e78
_ZTV31MapObjectProfileSwitchStep_Base kind:data(any) addr:0x020b4e94
_ZTV19MapObjectProfile_D4 kind:data(any) addr:0x020b4eb0
_ZTV12MapObject_10 kind:data(any) addr:0x020b4eb0
_ZTV22MapObjectSwitchStep_40 kind:data(any) addr:0x020b4ed8
_ZTV19MapObjectSwitchStep kind:data(any) addr:0x020b4f04
_ZTV26MapObjectProfileMiniBlocks kind:data(any) addr:0x020b4f44
+2 -1
View File
@@ -41,7 +41,8 @@ public:
class Actor_5c_temp : public Actor_5c_Base {
public:
/* 00 (base) */
/* 10 */ STRUCT_PAD(0x10, 0x28);
/* 10 */ unk16 mUnk_10;
/* 14 */ STRUCT_PAD(0x14, 0x28);
/* 28 */ unk32 mUnk_28;
Actor_5c_temp() {};
+10 -6
View File
@@ -2,22 +2,26 @@
#include "types.h"
#define ACTOR_INDEX_MASK 0x3fff
#define ACTOR_INDEX_MASK 0x3FFF
struct ActorRef {
/* 0 */ s16 index;
/* 2 */ s16 id;
/* 0 */ u16 index;
/* 2 */ u16 id;
/* 4 */
inline void Reset() {
void Reset() {
*(u32 *) this = 0;
}
inline bool operator==(const ActorRef &other) const {
bool operator==(const ActorRef &other) const {
return this->index == other.index && this->id == other.id;
}
inline bool operator!=(const ActorRef &other) const {
bool operator!=(const ActorRef &other) const {
return !(*this == other);
}
u32 Get32() {
return *(u32 *) this;
}
};
+84 -27
View File
@@ -1,5 +1,6 @@
#pragma once
#include "Actor/ActorRef.hpp"
#include "Map/MapObjectId.hpp"
#include "MapObject/MapObjectProfile.hpp"
#include "Physics/Cylinder.hpp"
@@ -9,6 +10,8 @@
#include "nitro/math.h"
#include "types.h"
class MapObjectProfile;
typedef u16 MapObjFlags;
enum MapObjFlag_ {
MapObjFlag_Alive = FLAG(0, 0),
@@ -45,26 +48,79 @@ enum MapObjFlag_ {
MapObjFlag_31 = FLAG(0, 31),
};
class MapObject_10_Base {
public:
/* 00 (vtable) */
/* 04 */ unk8 mUnk_04;
/* 05 */ unk8 mUnk_05;
/* 06 */ unk8 mUnk_06;
/* 07 */ unk8 mUnk_07;
/* 08 */ unk32 mUnk_08;
/* 0C */
MapObject_10_Base(); // func_ov000_0207c018
// data_ov000_020b2854
/* 00 */ virtual void vfunc_00() = 0;
/* 04 */ virtual void vfunc_04() = 0;
/* 08 */ virtual void vfunc_08() = 0;
/* 0C */ virtual void vfunc_0C() = 0;
/* 10 */ virtual void vfunc_10(Cylinder *param1) = 0;
/* 14 */ virtual void vfunc_14() = 0;
/* 18 */ virtual void vfunc_18(Vec3p *param1) = 0;
/* 1C */ virtual void vfunc_1C(Vec3p *param1) = 0;
/* 20 */
};
class MapObject_10 : public MapObject_10_Base {
public:
/* 00 (vtable) */
/* 0C */
MapObject_10() {}
~MapObject_10() {}
// data_ov031_02113f18
/* 00 */ virtual void vfunc_00();
/* 04 */ virtual void vfunc_04();
/* 08 */ virtual void vfunc_08();
/* 0C */ virtual void vfunc_0C();
/* 10 */ virtual void vfunc_10(Cylinder *param1);
/* 14 */ virtual void vfunc_14();
/* 18 */ virtual void vfunc_18(Vec3p *param1);
/* 1C */ virtual void vfunc_1C(Vec3p *param1);
/* 20 */
};
class MapObject_20 {
public:
/* 00 */ u16 mUnk_00;
/* 02 */ u16 mUnk_02;
/* 04 */ unk32 mUnk_04;
/* 08 */ u8 mUnk_08[2];
/* 0A */ u16 mUnk_0A[2];
/* 0E */ unk16 mUnk_0E;
/* 10 */ unk32 mUnk_10;
/* 14 */ s16 mUnk_14;
/* 16 */ unk16 mUnk_16;
/* 18 */
MapObject_20() {}
};
class MapObject : public SysObject {
public:
/* 00 (vtable) */
/* 04 */ Vec3p mPos;
/* 10 */ void *mUnk_10;
/* 10 */ MapObject_10 *mUnk_10;
/* 14 */ unk16 mUnk_14;
/* 16 */ unk16 mUnk_16;
/* 18 */ unk8 mUnk_18; // bool? when set Link walks to the map object when touched
/* 19 */ unk8 mUnk_19;
/* 18 */ unk8 mUnk_18[2]; // bools? when set Link walks to the map object when touched
/* 1A */ unk8 mUnk_1A;
/* 1B */ unk8 mUnk_1B;
/* 1C */ MapObjFlags mFlags[1];
/* 1E */ unk16 mUnk_1E;
/* 20 */ u16 mUnk_20;
/* 22 */ u16 mUnk_22;
/* 24 */ unk32 mUnk_24;
/* 28 */ unk32 mUnk_28;
/* 2C */ unk32 mUnk_2C;
/* 30 */ unk32 mUnk_30;
/* 34 */ unk32 mUnk_34;
/* 20 */ MapObject_20 mUnk_20;
/* 38 */ unk8 mUnk_38;
/* 38 */ unk8 mUnk_39;
/* 3A */ Vec2b mUnk_3A;
@@ -79,11 +135,11 @@ public:
/* 10 */ virtual void vfunc_10();
/* 14 */ virtual void vfunc_14();
/* 18 */ virtual void vfunc_18();
/* 1C */ virtual void vfunc_1C();
/* 1C */ virtual bool vfunc_1C();
/* 20 */ virtual void vfunc_20();
/* 24 */ virtual void vfunc_24();
/* 28 */ virtual void vfunc_28();
/* 2C */ virtual void vfunc_2C();
/* 28 */ virtual bool vfunc_28();
/* 2C */ virtual bool vfunc_2C(Vec3p *param1);
/* 30 */ virtual ~MapObject();
/* 38 */
@@ -91,23 +147,24 @@ public:
MapObjectId GetMapObjectId();
void func_ov000_0209d0bc();
void func_ov000_0209d114();
void func_ov000_0209d12c();
void func_ov000_0209d144();
void func_ov000_0209d22c();
void func_ov000_0209d274();
bool func_ov000_0209d114();
bool func_ov000_0209d12c();
bool func_ov000_0209d144(Vec2s *param1, unk32 param2, unk32 param3);
void func_ov000_0209d274(unk32 param1);
unk32 func_ov000_0209d29c(unk32 param1);
void func_ov000_0209d2c4(unk32 param1, unk32 param2);
void func_ov000_0209d2f0();
void func_ov000_0209d3b4();
void func_ov000_0209d434();
void func_ov000_0209d518();
void func_ov000_0209d54c();
void func_ov000_0209d5c8();
void func_ov000_0209d614();
void func_ov000_0209d668();
void func_ov000_0209d2f0(unk32 param1, unk32 param2, Vec2b *param3);
void func_ov000_0209d3b4(unk32 param1, q20 size);
void func_ov000_0209d434(s8 *param1, UnkStruct_ov019_020d24c8_28_258_00 *param2, unk32 param3);
void func_ov000_0209d518(unk32 param1, unk32 param2, unk32 param3, u8 param4);
void func_ov000_0209d54c(unk32 param1, u16 param2, Vec3p *param3, s16 param4, u16 param5);
void func_ov000_0209d5c8(ActorRef ref);
void func_ov000_0209d614(unk32 param1);
bool func_ov000_0209d668();
void func_ov000_0209d6ac(Vec3p *param1);
void func_ov031_02103878();
static void func_ov000_0209d0bc(Vec2b *param1, MapObject *thisx);
static void func_ov000_0209d22c(unk16 *param1, MapObject *thisx, unk32 param2);
};
+3 -42
View File
@@ -9,48 +9,7 @@
#include "types.h"
class MapObject;
class MapObjectProfile_D4_Base {
public:
/* 00 (vtable) */
/* 04 */ unk8 mUnk_04;
/* 05 */ unk8 mUnk_05;
/* 06 */ unk8 mUnk_06;
/* 07 */ unk8 mUnk_07;
/* 08 */ unk32 mUnk_08;
/* 0C */
MapObjectProfile_D4_Base(); // func_ov000_0207c018
// data_ov000_020b2854
/* 00 */ virtual void vfunc_00(void) = 0;
/* 04 */ virtual void vfunc_04(void) = 0;
/* 08 */ virtual void vfunc_08(void) = 0;
/* 0C */ virtual void vfunc_0C(void) = 0;
/* 10 */ virtual void vfunc_10(void) = 0;
/* 14 */ virtual void vfunc_14(void) = 0;
/* 18 */ virtual void vfunc_18(void) = 0;
/* 1C */ virtual void vfunc_1C(void) = 0;
/* 20 */
};
class MapObjectProfile_D4 : public MapObjectProfile_D4_Base {
public:
/* 00 (base) */
/* 0C */
MapObjectProfile_D4() {}
~MapObjectProfile_D4() {}
/* 00 */ virtual void vfunc_00(void);
/* 04 */ virtual void vfunc_04(void);
/* 08 */ virtual void vfunc_08(void);
/* 0C */ virtual void vfunc_0C(void);
/* 10 */ virtual void vfunc_10(void);
/* 14 */ virtual void vfunc_14(void);
/* 18 */ virtual void vfunc_18(void);
/* 1C */ virtual void vfunc_1C(void);
};
class MapObject_20;
class MapObjectProfile : public SysObject {
public:
@@ -80,6 +39,8 @@ public:
/* 0C */ virtual void vfunc_0C();
/* 10 */ virtual void vfunc_10();
/* 14 */
unk32 func_ov000_0209c8e4(MapObject_20 *param1);
};
class MapObjectProfile_Derived2_20;
+1 -1
View File
@@ -55,7 +55,7 @@ public:
class MapObjectProfileSwitchStep_Base : public MapObjectProfile_Derived2 {
public:
/* 00 (base) */
/* D4 */ MapObjectProfile_D4 mUnk_D4;
/* D4 */ MapObject_10 mUnk_D4;
MapObjectProfileSwitchStep_Base(MapObjectId mapObjId) :
MapObjectProfile_Derived2(mapObjId, mapObjId) {}
+7 -3
View File
@@ -8,8 +8,12 @@ struct Cylinder {
Vec3p pos;
q20 size; // height and radius
inline Cylinder() {}
inline Cylinder(q20 size) {
Cylinder() {}
Cylinder(q20 size) {
this->Init(size);
}
void Init(q20 size) {
pos.x = 0;
pos.y = size;
pos.z = 0;
@@ -17,7 +21,7 @@ struct Cylinder {
this->size = size;
}
inline void MakeEmpty() {
void MakeEmpty() {
pos = gVec3p_ZERO;
size = -1;
}
+2
View File
@@ -13,6 +13,8 @@ public:
/* 00 */ virtual bool vfunc_00(Vec3p *pPos, void *param2, void *param3);
/* 04 */
unk32 func_ov000_02061a70();
};
extern UnkStruct_027e0998 *data_027e0998;
+16
View File
@@ -0,0 +1,16 @@
#pragma once
#include "global.h"
#include "types.h"
class UnkStruct_027e09b4 {
public:
/* 00 */ unk32 mUnk_00;
UnkStruct_027e09b4();
~UnkStruct_027e09b4();
void func_01fff60c(unk32 param1, unk32 param2, unk32 param3, u8 param4, unk32 param5, unk32 param6);
};
extern UnkStruct_027e09b4 *data_027e09b4;
+14 -2
View File
@@ -85,6 +85,14 @@ public:
bool func_ov000_02080658(unk32 param1, UnkStruct_SceneChange1 *param2);
void func_ov000_020808f4(void *param1, void *param2, unk32 param3);
unk32 func_ov000_02080a44();
void func_ov000_020801b0(Vec2b *param1, unk32 param2, unk32 param3);
};
class UnkStruct_027e0cd8_10 {
public:
/* 00 */ unk32 mUnk_00;
void func_01fff6d0(Vec3p *param1, s32 *param2, s32 *param3);
};
class UnkStruct_027e0cd8 {
@@ -92,12 +100,16 @@ public:
/* 00 */ unk32 mUnk_00;
/* 04 */ unk32 *mUnk_04;
/* 08 */ unk32 mUnk_08;
/* 0c */ UnkStruct_027e0cd8_0c *mUnk_0c;
/* 10 */
/* 0C */ UnkStruct_027e0cd8_0c *mUnk_0c;
/* 10 */ UnkStruct_027e0cd8_10 *mUnk_10;
/* 14 */ STRUCT_PAD(0x14, 0x4C);
/* 4C */
unk32 func_ov000_02081e30(unk32 param1, unk32 param2);
void func_ov000_02081d7c(unk32 param1, unk32 param2, unk32 param3);
void func_ov000_02081ecc(unk16 param1, unk32 param2);
void func_ov000_02081eec(unk16 param1, unk32 param2, unk32 param3);
bool func_ov000_02081f3c(unk16 param1, unk32 param2);
};
extern UnkStruct_027e0cd8 *data_027e0cd8;
@@ -0,0 +1,32 @@
#pragma once
#include "global.h"
#include "types.h"
class MapObject_20;
class UnkStruct_ov000_020b5d34_00 {
public:
unk32 *mUnk_00;
MapObject_20 *mUnk_04;
Vec3p *mUnk_08;
unk16 mUnk_0C;
};
class UnkStruct_ov000_020b5d34_0C {
public:
unk16 mUnk_00;
};
class UnkStruct_ov000_020b5d34 {
public:
/* 00 */ UnkStruct_ov000_020b5d34_00 *mUnk_00;
/* 04 */ MapObjectProfile *mpProfile;
/* 08 */ unk32 mUnk_08;
UnkStruct_ov000_020b5d34_0C *mUnk_0C;
UnkStruct_ov000_020b5d34();
~UnkStruct_ov000_020b5d34();
};
extern UnkStruct_ov000_020b5d34 data_ov000_020b5d34;
+1 -1
View File
@@ -25,4 +25,4 @@
#define GET_FLAGS_IMPL2(N, ...) GET_FLAGS_##N(__VA_ARGS__)
#define GET_FLAGS_IMPL(N, ...) GET_FLAGS_IMPL2(N, __VA_ARGS__)
#define GET_FLAGS(...) GET_FLAGS_IMPL(VA_NARGS(__VA_ARGS__), __VA_ARGS__)
#define SET_FLAGS(arr, ...) (*(u32 *) arr = GET_FLAGS_IMPL(VA_NARGS(__VA_ARGS__), __VA_ARGS__))
#define SET_FLAGS(arr, ...) (*(arr) = GET_FLAGS_IMPL(VA_NARGS(__VA_ARGS__), __VA_ARGS__))
@@ -97,10 +97,10 @@ ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a8df0(ActorRef param1, unk32 par
if (this->mRef != param1) {
this->vfunc_b4();
this->mUnk_0bc = param1;
this->mUnk_0c0.x = 0;
this->mUnk_0c0.y = 0;
this->mUnk_0c0.z = 0;
*(u32 *) &this->mUnk_0bc = param1.Get32();
this->mUnk_0c0.x = 0;
this->mUnk_0c0.y = 0;
this->mUnk_0c0.z = 0;
this->mUnk_0b0 |= 1;
}
}
+314
View File
@@ -0,0 +1,314 @@
#include "MapObject/MapObject.hpp"
#include "Actor/Actor.hpp"
#include "Actor/ActorManager.hpp"
#include "Physics/Cylinder.hpp"
#include "Unknown/UnkMemFuncs.h"
#include "Unknown/UnkStruct_0204af1c.hpp"
#include "Unknown/UnkStruct_027e0998.hpp"
#include "Unknown/UnkStruct_027e09b4.hpp"
#include "Unknown/UnkStruct_027e0cd8.hpp"
#include "Unknown/UnkStruct_027e0ce0.hpp"
#include "Unknown/UnkStruct_ov000_020b5d34.hpp"
extern "C" void func_ov000_0209c7c8(void *);
extern "C" void func_01ffb714(Vec3p *, Vec3p *, void *);
extern "C" void func_01ffb9cc(Vec3p *, Vec3p *);
extern "C" u16 func_01ffbbe0(q20 x, q20 z);
extern "C" void func_01ffecdc(unk32 param1, Cylinder *param2);
extern "C" bool func_01ffd768(unk32, void *, void *, unk8);
extern "C" void func_ov000_020973f4(void *, void *, u32, void *, int); //! TODO: solve oddity
struct UnkStruct {
u32 *mUnk_00;
MapObject_20 *mUnk_04;
Vec3p *mUnk_08;
};
// https://decomp.me/scratch/4do9S
ARM MapObject::MapObject() {
this->mUnk_10 = NULL;
this->mUnk_16 = -1;
this->mFlags[0] = 0;
func_ov000_0209c7c8(&this->mUnk_20);
*(u32 *) &this->mUnk_38 = 0;
UnkStruct_ov000_020b5d34 *ptr1 = &data_ov000_020b5d34;
this->mpProfile = ptr1->mpProfile;
UnkStruct *ptr2 = (UnkStruct *) ptr1->mUnk_00;
*(u32 *) &this->mUnk_38 = *ptr2->mUnk_00;
Vec3p *ptr = ptr2->mUnk_08;
this->mPos.x = ptr->x;
this->mPos.y = ptr->y;
this->mPos.z = ptr->z;
this->mUnk_14 = ptr1->mUnk_0C->mUnk_00;
_MI_CpuCopy(ptr2->mUnk_04, &this->mUnk_20, sizeof(MapObject_20));
for (int i = 0; i < ARRAY_LEN(this->mUnk_18); i++) {
this->mUnk_18[i] = 0;
}
SET_FLAGS(this->mFlags, MapObjFlag_Alive, MapObjFlag_1, MapObjFlag_2);
}
ARM MapObject::~MapObject() {}
ARM bool MapObject::vfunc_00() {
return true;
}
ARM bool MapObject::vfunc_04() {}
ARM void MapObject::func_ov000_0209d0bc(Vec2b *param1, MapObject *thisx) {
Vec3p pos;
Vec2p out;
UnkStruct_027e0cd8_10 *t = data_027e0cd8->mUnk_10;
pos.coords = thisx->mPos.coords;
t->func_01fff6d0(&pos, (q20 *) &out.y, (q20 *) &out.x);
Vec2p temp;
temp.y = out.x;
temp.x = out.y;
param1->x = temp.x;
param1->y = temp.y;
}
ARM bool MapObject::func_ov000_0209d114() {
bool result[2];
MapObject::func_ov000_0209d0bc((Vec2b *) &result, this);
return result[0];
}
ARM bool MapObject::func_ov000_0209d12c() {
bool result[2];
MapObject::func_ov000_0209d0bc((Vec2b *) &result, this);
return result[1];
}
ARM bool MapObject::func_ov000_0209d144(Vec2s *param1, unk32 param2, unk32 param3) {
if (this->mUnk_10 != NULL) {
u32 stack[5];
stack[3] = 0;
stack[0] = 0;
stack[1] = 0;
stack[2] = 0;
this->vfunc_2C((Vec3p *) &stack);
unk8 value = this->mpProfile->mUnk_04[param2];
Vec2s stack2;
stack2.x = param1->x;
stack2.y = param1->y;
return func_01ffd768(param3, &stack, &stack2, value);
}
return false;
}
ARM bool MapObject::vfunc_1C() {
return true;
}
ARM void MapObject::vfunc_20() {}
ARM void MapObject::vfunc_24() {
*(u32 *) this = 0; // ????
}
ARM bool MapObject::vfunc_28() {
return false;
}
ARM bool MapObject::vfunc_2C(Vec3p *param1) {
if (this->mUnk_10 != NULL) {
this->mUnk_10->vfunc_18(param1);
Vec3p_Add(param1, &this->mPos, param1);
return true;
}
return false;
}
ARM void MapObject::func_ov000_0209d22c(unk16 *param1, MapObject *thisx, unk32 param2) {
Vec3p local_18;
func_01ffb714(data_027e0ce0->func_01fff148(param2), &thisx->mPos, &local_18);
*param1 = func_01ffbbe0(local_18.x, local_18.z);
}
ARM void MapObject::func_ov000_0209d274(unk32 param1) {
func_01ffb9cc(&this->mPos, data_027e0ce0->func_01fff148(param1));
}
ARM unk32 MapObject::func_ov000_0209d29c(unk32 param1) {
data_027e0cd8->func_ov000_02081e30(this->mUnk_20.mUnk_0A[param1], this->mUnk_20.mUnk_08[param1]);
}
ARM void MapObject::func_ov000_0209d2c4(unk32 param1, unk32 param2) {
data_027e0cd8->func_ov000_02081d7c(this->mUnk_20.mUnk_0A[param1], this->mUnk_20.mUnk_08[param1], param2);
}
ARM void MapObject::func_ov000_0209d2f0(unk32 param1, unk32 param2, Vec2b *param3) {
UnkStruct_027e0cd8_0c *temp_r5 = data_027e0cd8->mUnk_0c;
Vec2b sp0(0, 0);
sp0.x = this->mUnk_3A.x;
s32 tempX = param3->x;
tempX += this->mUnk_3A.x;
if (this->mUnk_3A.x < tempX) {
do {
sp0.y = this->mUnk_3A.y;
s32 tempY = param3->y;
tempY += this->mUnk_3A.y;
if (this->mUnk_3A.y < tempY) {
do {
temp_r5->func_ov000_020801b0(&sp0, param1, param2);
} while (++sp0.y < param3->y + this->mUnk_3A.y);
}
} while (++sp0.x < param3->x + this->mUnk_3A.x);
}
}
ARM void MapObject::func_ov000_0209d3b4(unk32 param1, q20 size) {
Cylinder spC;
if (this->mUnk_10 != NULL) {
this->mUnk_10->vfunc_10(&spC);
} else {
spC.Init(FLOAT_TO_Q20(0.5f));
}
Vec3p_Add(&spC.pos, &this->mPos, &spC.pos);
spC.size += size;
func_01ffecdc(param1, &spC);
}
struct stack_struct {
/* 00 */ unk16 mUnk_00;
/* 02 */ unk16 mUnk_02;
/* 04 */ unk8 mUnk_04;
/* 05 */ unk8 mUnk_05;
/* 06 */ u16 mUnk_06;
/* 08 */
};
ARM void MapObject::func_ov000_0209d434(s8 *param1, UnkStruct_ov019_020d24c8_28_258_00 *param2, unk32 param3) {
unk32 sp10;
stack_struct spC;
s32 var_r2;
if (!GET_FLAG(this->mFlags, MapObjFlag_5)) {
return;
}
if (param2->mUnk_04 & 1) {
var_r2 = 1;
} else {
var_r2 = 0;
}
if (param1[0] != var_r2 && param1[1] != var_r2) {
return;
}
if (data_027e0998->vfunc_00(&this->mPos, &sp10, &this->mUnk_38)) {
spC.mUnk_06 = 0x00;
MI_CpuFill32(0, &spC, sizeof(spC));
spC.mUnk_05 = -1;
*(unk32 *) &spC.mUnk_00 = data_027e0998->func_ov000_02061a70();
spC.mUnk_06 |= 0x01;
data_0204af1c.func_0201aa44(param2, &sp10, param3, &spC);
}
}
ARM void MapObject::func_ov000_0209d518(unk32 param1, unk32 param2, unk32 param3, u8 param4) {
data_027e09b4->func_01fff60c(param1, param2, param3, param4, 0, 0);
}
struct TempStruct {
Vec3p pos;
u16 param_r2;
s16 extra_s16;
u16 extra_u16;
STRUCT_PAD(0x16, 0x28);
unk32 mUnk_28;
void func_ov000_020975f8();
};
// non-matching
ARM void MapObject::func_ov000_0209d54c(unk32 param1, u16 param2, Vec3p *param3, s16 param4, u16 param5) {
TempStruct local_4c;
local_4c.mUnk_28 = 0;
local_4c.func_ov000_020975f8();
local_4c.pos.x = param3->x;
local_4c.pos.y = param3->y;
local_4c.pos.z = param3->z;
local_4c.param_r2 = param2;
local_4c.extra_s16 = param4;
local_4c.extra_u16 = param5;
func_ov000_020973f4(this, &data_ov000_020b539c, ActorId_EventIcon, &local_4c, 0);
}
ARM void MapObject::func_ov000_0209d5c8(ActorRef ref) {
if (ref.index != 0) {
Actor *pActor = gpActorManager->func_01fff3b4(ref.Get32());
if (pActor != NULL) {
UNSET_FLAG(pActor->mFlags, ActorFlag_Alive);
}
}
}
ARM void MapObject::func_ov000_0209d614(unk32 param1) {
if (this->mUnk_20.mUnk_14 < 0) {
return;
}
if (this->mpProfile->mUnk_0E == -1) {
return;
}
UnkStruct_027e0cd8 *pUVar1 = data_027e0cd8;
unk32 uVar2 = this->mpProfile->func_ov000_0209c8e4(&this->mUnk_20);
pUVar1->func_ov000_02081eec(this->mUnk_20.mUnk_14, uVar2, param1);
}
ARM bool MapObject::func_ov000_0209d668() {
if (this->mpProfile->mUnk_0E == -1) {
return false;
}
UnkStruct_027e0cd8 *pUVar1 = data_027e0cd8;
unk32 uVar2 = this->mpProfile->func_ov000_0209c8e4(&this->mUnk_20);
return pUVar1->func_ov000_02081f3c(this->mUnk_20.mUnk_14, uVar2);
}
ARM void MapObject::func_ov000_0209d6ac(Vec3p *param1) {
if (this->mUnk_10 == NULL) {
volatile Vec3p *tempPos = &this->mPos;
Vec3p pos;
pos.x = tempPos->x;
pos.y = tempPos->y;
pos.z = tempPos->z;
param1->x = pos.x;
param1->y = pos.y;
param1->z = pos.z;
return;
}
this->mUnk_10->vfunc_1C(param1);
Vec3p_Add(param1, &this->mPos, param1);
}
@@ -37,11 +37,12 @@ ARM MapObjectMiniBlocks::MapObjectMiniBlocks() :
}
ARM bool MapObjectMiniBlocks::vfunc_00(void) {
GET_PROFILE(MapObjectProfileMiniBlocks)->func_ov000_0209ccd8(this->mUnk_22, data_ov000_020af574[this->mUnk_22]);
GET_PROFILE(MapObjectProfileMiniBlocks)
->func_ov000_0209ccd8(this->mUnk_20.mUnk_02, data_ov000_020af574[this->mUnk_20.mUnk_02]);
UnkStruct_027e0cd8_0c *pUnkStruct_027e0cd8_0c = data_027e0cd8->mUnk_0c;
u8 uVar6;
if (this->mUnk_22 != MiniBlocksVariant_BLKF) {
if (this->mUnk_20.mUnk_02 != MiniBlocksVariant_BLKF) {
Vec2b vec(this->mUnk_3A.x, this->mUnk_3A.y);
this->mPos.y = pUnkStruct_027e0cd8_0c->func_01ffedf4(&vec);
}
@@ -49,7 +50,7 @@ ARM bool MapObjectMiniBlocks::vfunc_00(void) {
Vec3p vec(FLOAT_TO_Q20(0.0f), FLOAT_TO_Q20(0.0f), FLOAT_TO_Q20(0.0f));
uVar6 = 0;
switch (this->mUnk_20) {
switch (this->mUnk_20.mUnk_00) {
case 4:
case 5:
case 6:
@@ -63,7 +64,7 @@ ARM bool MapObjectMiniBlocks::vfunc_00(void) {
uVar6 = 2;
break;
default:
if (this->mUnk_22 == MiniBlocksVariant_BLKF) {
if (this->mUnk_20.mUnk_02 == MiniBlocksVariant_BLKF) {
vec.x = FLOAT_TO_Q20(0.0f);
vec.y = FLOAT_TO_Q20(0.0f);
vec.z = -FLOAT_TO_Q20(0.375f);
@@ -75,7 +76,8 @@ ARM bool MapObjectMiniBlocks::vfunc_00(void) {
break;
}
MapObjectProfile_Derived2_20_Base_50 *ptr = GET_PROFILE(MapObjectProfileMiniBlocks)->vfunc_1C(this->mUnk_22)->mUnk_50;
MapObjectProfile_Derived2_20_Base_50 *ptr =
GET_PROFILE(MapObjectProfileMiniBlocks)->vfunc_1C(this->mUnk_20.mUnk_02)->mUnk_50;
void *var_r1;
if (ptr != NULL) {
u16 *temp_r1 = (u16 *) ((u8 *) ptr + 8);
@@ -102,7 +104,7 @@ next:
unk32 var_r0_2;
unk32 var_r0;
switch (this->mUnk_20) {
switch (this->mUnk_20.mUnk_00) {
case 1:
case 6:
case 8:
@@ -121,7 +121,7 @@ end:
}
ARM MapObjectSwitchStep::~MapObjectSwitchStep() {
if (this->mUnk_20 == 2) {
if (this->mUnk_20.mUnk_00 == 2) {
this->func_ov000_0209e11c(0, 1);
this->func_ov000_0209d2c4(0, 0);
}
@@ -129,10 +129,10 @@ ARM MapObjectSwitchStep::~MapObjectSwitchStep() {
ARM bool MapObjectSwitchStep::vfunc_00(void) {
SET_FLAG(this->mFlags, MapObjFlag_9);
this->mUnk_18 = 1;
this->mUnk_18[0] = 1;
SET_FLAG(this->mFlags, MapObjFlag_10);
this->mUnk_19 = 1;
this->mUnk_18[1] = 1;
if (this->func_ov000_0209d29c(0)) {
this->func_ov000_0209e11c(2, 1);
@@ -182,8 +182,8 @@ ARM void MapObjectSwitchStep::func_ov000_0209e11c(unk32 param1, unk32 param2) {
this->mUnk_EA = 1;
}
if (this->mUnk_20 == 2) {
this->mUnk_E6 = this->mUnk_22;
if (this->mUnk_20.mUnk_00 == 2) {
this->mUnk_E6 = this->mUnk_20.mUnk_02;
this->mUnk_E4 = 0;
}
+1
View File
@@ -155,6 +155,7 @@ config.libs = [
Object("000_Second/Actor/ActorEventIcon.cpp"),
Object("000_Second/Actor/ActorUnkSWOB.cpp"),
Object("000_Second/Actor/ActorUnkSWTM.cpp"),
Object("000_Second/MapObject/MapObject.cpp"),
Object("000_Second/MapObject/MapObjectSwitchStep.cpp"),
Object("000_Second/MapObject/MapObjectMiniBlocks.cpp"),
]