From 6c8f5c72bcf43754d740e6f59e2a767df5d2a00a Mon Sep 17 00:00:00 2001 From: Alessevan <44125445+Alessevan@users.noreply.github.com> Date: Sun, 11 Oct 2026 19:18:57 -0400 Subject: [PATCH] Decompiling Actor NSSW (#153) * feat: begin decompiling * feat: decompiling enhanced * fix: symbols sheningans * fix: make jp build * merge: update NSSW * feat: improve overall matching * feat: update * feat: improve matching of ActorItemTornado's vfunc_2C * fix: first attempt to make usa build * style: move external functions * fix: building NSSW * fix: build for jp * feat: improve matching * feat: comply to suggestions --- config/eur/arm9/overlays/ov032/delinks.txt | 2 +- config/eur/arm9/overlays/ov032/relocs.txt | 2 +- config/eur/arm9/overlays/ov032/symbols.txt | 40 +- config/eur1/arm9/overlays/ov032/delinks.txt | 1 + config/eur1/arm9/overlays/ov032/relocs.txt | 10 +- config/eur1/arm9/overlays/ov032/symbols.txt | 42 +- config/jp/arm9/overlays/ov032/delinks.txt | 1 + config/jp/arm9/overlays/ov032/relocs.txt | 10 +- config/jp/arm9/overlays/ov032/symbols.txt | 52 +- config/jp/arm9/symbols.txt | 2 +- config/usa/arm9/overlays/ov032/delinks.txt | 1 + config/usa/arm9/overlays/ov032/relocs.txt | 8 +- config/usa/arm9/overlays/ov032/symbols.txt | 44 +- config/usa/arm9/symbols.txt | 2 +- include/Actor/Actor.hpp | 4 + include/Actor/ActorUnkNSSW.hpp | 122 ++-- include/Actor/ActorUnkRCHU.hpp | 5 +- include/CommonFuncs.hpp | 8 +- include/math.hpp | 22 + libs/nitro/include/nitro/math.h | 12 + src/031_Land/Actor/ActorItemTornado.cpp | 3 +- src/032_MapA1/Actor/ActorUnkNSSW.cpp | 714 ++++++++++++++++++- src/032_MapA1/MapObject/MapObjectUnkSWSW.cpp | 14 +- 23 files changed, 929 insertions(+), 192 deletions(-) diff --git a/config/eur/arm9/overlays/ov032/delinks.txt b/config/eur/arm9/overlays/ov032/delinks.txt index c74bfc7c..62ee710e 100644 --- a/config/eur/arm9/overlays/ov032/delinks.txt +++ b/config/eur/arm9/overlays/ov032/delinks.txt @@ -30,7 +30,7 @@ src/032_MapA1/Actor/ActorUnkNSSW.cpp: .text start:0x0211fd80 end:0x02120e90 .init start:0x0212208c end:0x021220dc .ctor start:0x02122138 end:0x0212213c - .data start:0x021226c0 end:0x02122744 + .data start:0x0212268c end:0x02122744 .bss start:0x02122a5c end:0x02122aa8 src/032_MapA1/MapObject/MapObjectUnkSWSW.cpp: diff --git a/config/eur/arm9/overlays/ov032/relocs.txt b/config/eur/arm9/overlays/ov032/relocs.txt index 3677ea48..df8ba3fc 100644 --- a/config/eur/arm9/overlays/ov032/relocs.txt +++ b/config/eur/arm9/overlays/ov032/relocs.txt @@ -899,7 +899,7 @@ from:0x02120d8c kind:arm_call to:0x01ffb800 module:itcm from:0x02120d9c kind:arm_call to:0x02120bc0 module:overlay(32) from:0x02120da8 kind:arm_call to:0x02120b7c module:overlay(32) from:0x02120db4 kind:arm_call to:0x020f6384 module:overlay(31) -from:0x02120df4 kind:load to:0x021226ac module:overlay(32) +from:0x02120df4 kind:load to:0x021226a4 module:overlay(32) add:0x8 from:0x02120e04 kind:load to:0x02120bfc module:overlay(32) from:0x02120e10 kind:arm_call to:0x0207b6c0 module:overlay(0) from:0x02120e18 kind:arm_call to:0x02011ff4 module:main diff --git a/config/eur/arm9/overlays/ov032/symbols.txt b/config/eur/arm9/overlays/ov032/symbols.txt index f6bccce2..8235031d 100644 --- a/config/eur/arm9/overlays/ov032/symbols.txt +++ b/config/eur/arm9/overlays/ov032/symbols.txt @@ -169,32 +169,32 @@ _ZN19ActorProfileUnkNSSW10GetProfileEv kind:function(arm,size=0xc) addr:0x0211fd _ZN19ActorProfileUnkNSSW6CreateEv kind:function(arm,size=0x24) addr:0x0211fd8c _ZN19ActorProfileUnkNSSWC1Ev kind:function(arm,size=0x44) addr:0x0211fdb0 _ZN12ActorUnkNSSWC1Ev kind:function(arm,size=0x108) addr:0x0211fdf4 -_ZN12ActorUnkNSSW19func_ov032_0211fefcEv kind:function(arm,size=0x14) addr:0x0211fefc -_ZN12ActorUnkNSSW19func_ov032_0211ff10Ev kind:function(arm,size=0x28) addr:0x0211ff10 -_ZN12ActorUnkNSSW19func_ov032_0211ff38Ev kind:function(arm,size=0x1e0) addr:0x0211ff38 +_ZN16ActorUnkNSSW_104D1Ev kind:function(arm,size=0x14) addr:0x0211fefc +_ZN12ActorUnkNSSW4InitEi kind:function(arm,size=0x28) addr:0x0211ff10 +_ZN12ActorUnkNSSW6UpdateEv kind:function(arm,size=0x1e0) addr:0x0211ff38 _ZN12ActorUnkNSSW19func_ov032_02120118Ev kind:function(arm,size=0x78) addr:0x02120118 _ZN12ActorUnkNSSW19func_ov032_02120190Ev kind:function(arm,size=0xcc) addr:0x02120190 _ZN12ActorUnkNSSW19func_ov032_0212025cEv kind:function(arm,size=0x7c) addr:0x0212025c _ZN12ActorUnkNSSW19func_ov032_021202d8Ev kind:function(arm,size=0x124) addr:0x021202d8 _ZN12ActorUnkNSSW19func_ov032_021203fcEv kind:function(arm,size=0x350) addr:0x021203fc -_ZN12ActorUnkNSSW19func_ov032_0212074cEv kind:function(arm,size=0x134) addr:0x0212074c +_ZN12ActorUnkNSSW8vfunc_2CEP14Actor_vfunc_30 kind:function(arm,size=0x134) addr:0x0212074c _ZN12ActorUnkNSSW19func_ov032_02120880Ev kind:function(arm,size=0x14) addr:0x02120880 -_ZN12ActorUnkNSSW19func_ov032_02120894Ev kind:function(arm,size=0x2a0) addr:0x02120894 -_ZN12ActorUnkNSSW19func_ov032_02120b34Ev kind:function(arm,size=0x38) addr:0x02120b34 +_ZN12ActorUnkNSSW19func_ov032_02120894Ei kind:function(arm,size=0x2a0) addr:0x02120894 +_ZN12ActorUnkNSSW19func_ov032_02120b34E9RefStruct kind:function(arm,size=0x38) addr:0x02120b34 _ZN12ActorUnkNSSW19func_ov032_02120b6cEv kind:function(arm,size=0x10) addr:0x02120b6c -_ZN12ActorUnkNSSW19func_ov032_02120b7cEv kind:function(arm,size=0x44) addr:0x02120b7c +_ZN12ActorUnkNSSW19func_ov032_02120b7cEP7VecFx32 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_02120bfcEP5Actor kind:function(arm,size=0x68) addr:0x02120bfc _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 -_ZN12ActorUnkNSSW19func_ov032_02120d7cEv kind:function(arm,size=0x40) addr:0x02120d7c -_ZN12ActorUnkNSSW19func_ov032_02120dbcEv kind:function(arm,size=0x3c) addr:0x02120dbc -_ZN12ActorUnkNSSW19func_ov032_02120df8Ev kind:function(arm,size=0x10) addr:0x02120df8 -_ZN12ActorUnkNSSWD0Ev kind:function(arm,size=0x1c) addr:0x02120e08 +_ZN16ActorUnkNSSW_0E0C1EP12ActorUnkNSSW kind:function(arm,size=0x34) addr:0x02120cf0 +_ZN16ActorUnkNSSW_0E08vfunc_00E9RefStructi kind:function(arm,size=0x3c) addr:0x02120d24 +_ZN16ActorUnkNSSW_0E08vfunc_04Ev kind:function(arm,size=0x1c) addr:0x02120d60 +_ZN16ActorUnkNSSW_0E08vfunc_0CEP7VecFx32 kind:function(arm,size=0x40) addr:0x02120d7c +_ZN16ActorUnkNSSW_104C1EP12ActorUnkNSSW kind:function(arm,size=0x3c) addr:0x02120dbc +_ZN16ActorUnkNSSW_1048vfunc_10EP5Actor kind:function(arm,size=0x10) addr:0x02120df8 +_ZN16ActorUnkNSSW_104D0Ev kind:function(arm,size=0x1c) addr:0x02120e08 _ZN12ActorUnkNSSWD1Ev kind:function(arm,size=0x28) addr:0x02120e24 -_ZN12ActorUnkNSSW19func_ov032_02120e4cEv kind:function(arm,size=0x30) addr:0x02120e4c +_ZN12ActorUnkNSSWD0Ev kind:function(arm,size=0x30) addr:0x02120e4c _ZN19ActorProfileUnkNSSWD1Ev kind:function(arm,size=0x14) addr:0x02120e7c _ZN23MapObjectProfileUnkSWSW10GetProfileEv kind:function(arm,size=0xc) addr:0x02120e90 _ZN23MapObjectProfileUnkSWSW6CreateEv kind:function(arm,size=0x24) addr:0x02120e9c @@ -260,10 +260,10 @@ _ZTV26ModelRender_ov032_02122568 kind:data(any) addr:0x02122560 data_ov032_0212258c kind:data(any) addr:0x0212258c data_ov032_021225dc kind:data(any) addr:0x021225dc _ZTV10ActorKeese kind:data(any) addr:0x0212262c -_ZTV19data_ov032_02122694 kind:data(any) addr:0x0212268c -data_ov032_021226ac kind:data(any) addr:0x021226ac -_ZTV19data_ov032_021226c0 kind:data(any) addr:0x021226c0 -data_ov032_021226e4 kind:data(any) addr:0x021226e4 +_ZTV16ActorUnkNSSW_0E0 kind:data(any) addr:0x0212268c +_ZTV16ActorUnkNSSW_104 kind:data(any) addr:0x021226a4 +_ZTV19ActorProfileUnkNSSW kind:data(any) addr:0x021226c0 +_ZTV12ActorUnkNSSW kind:data(any) addr:0x021226e4 _ZTV23MapObjectProfileUnkSWSW kind:data(any) addr:0x02122744 _ZTV28MapObjectProfileUnkSWSW_Base kind:data(any) addr:0x02122760 _ZTV17MapObject_10_SWSW kind:data(any) addr:0x0212277c diff --git a/config/eur1/arm9/overlays/ov032/delinks.txt b/config/eur1/arm9/overlays/ov032/delinks.txt index 707e98ea..715ae654 100644 --- a/config/eur1/arm9/overlays/ov032/delinks.txt +++ b/config/eur1/arm9/overlays/ov032/delinks.txt @@ -30,6 +30,7 @@ src/032_MapA1/Actor/ActorUnkNSSW.cpp: .text start:0x0211fec0 end:0x0212104c .init start:0x02122248 end:0x02122298 .ctor start:0x021222f4 end:0x021222f8 + .data start:0x0212282c end:0x021228e4 .bss start:0x02122bfc end:0x02122c48 src/032_MapA1/MapObject/MapObjectUnkSWSW.cpp: diff --git a/config/eur1/arm9/overlays/ov032/relocs.txt b/config/eur1/arm9/overlays/ov032/relocs.txt index ebcf52b2..6e8b76dd 100644 --- a/config/eur1/arm9/overlays/ov032/relocs.txt +++ b/config/eur1/arm9/overlays/ov032/relocs.txt @@ -779,7 +779,7 @@ from:0x0211fec8 kind:load to:0x02122c0c module:overlay(32) from:0x0211fedc kind:arm_call to:0x02011f3c module:main from:0x0211fee8 kind:arm_call to:0x0211ff34 module:overlay(32) from:0x0211fefc kind:arm_call to:0x020976d0 module:overlay(0) -from:0x0211ff2c kind:load to:0x02122868 module:overlay(32) +from:0x0211ff2c kind:load to:0x02122860 module:overlay(32) add:0x8 from:0x0211ff3c kind:arm_call to:0x02098b7c module:overlay(0) from:0x0211ff50 kind:arm_call to:0x0209c70c module:overlay(0) from:0x0211ff68 kind:arm_call to:0x0200f05c module:main @@ -787,7 +787,7 @@ from:0x0211ffa0 kind:arm_call to:0x02097c0c module:overlay(0) from:0x0211ffac kind:arm_call to:0x02120eac module:overlay(32) from:0x0211ffb8 kind:arm_call to:0x02120f78 module:overlay(32) from:0x02120014 kind:arm_call to:0x01ffa06c module:itcm -from:0x02120028 kind:load to:0x0212288c module:overlay(32) +from:0x02120028 kind:load to:0x02122884 module:overlay(32) add:0x8 from:0x0212002c kind:load to:0x020b5d7c module:overlay(0) from:0x02120034 kind:load to:0x021220a0 module:overlay(32) from:0x02120038 kind:load to:0x020b19a0 add:0x8 module:overlay(0) @@ -898,14 +898,14 @@ from:0x02120e9c kind:arm_call to:0x021209f4 module:overlay(32) from:0x02120ec4 kind:arm_call to:0x020f63b4 module:overlay(31) from:0x02120edc kind:load to:0x0212282c add:0x8 module:overlay(32) from:0x02120efc kind:arm_call to:0x02120ce0 module:overlay(32) -from:0x02120f0c kind:arm_call to:0x020f6414 module:overlays(21,31) +from:0x02120f0c kind:arm_call to:0x020f6414 module:overlay(31) from:0x02120f28 kind:arm_call to:0x02120d18 module:overlay(32) from:0x02120f30 kind:arm_call to:0x020f64a4 module:overlay(31) from:0x02120f48 kind:arm_call to:0x01ffb800 module:itcm from:0x02120f58 kind:arm_call to:0x02120d6c module:overlay(32) from:0x02120f64 kind:arm_call to:0x02120d28 module:overlay(32) from:0x02120f70 kind:arm_call to:0x020f64b4 module:overlay(31) -from:0x02120fb0 kind:load to:0x0212284c module:overlay(32) +from:0x02120fb0 kind:load to:0x02122844 module:overlay(32) add:0x8 from:0x02120fc0 kind:load to:0x02120da8 module:overlay(32) from:0x02120fcc kind:arm_call to:0x0207b6f4 module:overlay(0) from:0x02120fd4 kind:arm_call to:0x02011ff4 module:main @@ -1251,7 +1251,7 @@ from:0x02122824 kind:load to:0x0211fe00 module:overlay(32) from:0x02122828 kind:load to:0x020995dc module:overlay(0) from:0x02122834 kind:load to:0x02120ee0 module:overlay(32) from:0x02122838 kind:load to:0x02120f1c module:overlay(32) -from:0x0212283c kind:load to:0x020f64ac module:overlays(22,23,31) +from:0x0212283c kind:load to:0x020f64ac module:overlay(31) from:0x02122840 kind:load to:0x02120f38 module:overlay(32) from:0x0212284c kind:load to:0x0212003c module:overlay(32) from:0x02122850 kind:load to:0x02120fc4 module:overlay(32) diff --git a/config/eur1/arm9/overlays/ov032/symbols.txt b/config/eur1/arm9/overlays/ov032/symbols.txt index 97b6efe7..9a94e89b 100644 --- a/config/eur1/arm9/overlays/ov032/symbols.txt +++ b/config/eur1/arm9/overlays/ov032/symbols.txt @@ -169,32 +169,32 @@ _ZN19ActorProfileUnkNSSW10GetProfileEv kind:function(arm,size=0xc) addr:0x0211fe _ZN19ActorProfileUnkNSSW6CreateEv kind:function(arm,size=0x24) addr:0x0211fecc _ZN19ActorProfileUnkNSSWC1Ev kind:function(arm,size=0x44) addr:0x0211fef0 _ZN12ActorUnkNSSWC1Ev kind:function(arm,size=0x108) addr:0x0211ff34 -_ZN12ActorUnkNSSW19func_ov032_0211fefcEv kind:function(arm,size=0x14) addr:0x0212003c -_ZN12ActorUnkNSSW19func_ov032_0211ff10Ev kind:function(arm,size=0x28) addr:0x02120050 -_ZN12ActorUnkNSSW19func_ov032_0211ff38Ev kind:function(arm,size=0x200) addr:0x02120078 +_ZN16ActorUnkNSSW_104D1Ev kind:function(arm,size=0x14) addr:0x0212003c +_ZN12ActorUnkNSSW4InitEi kind:function(arm,size=0x28) addr:0x02120050 +_ZN12ActorUnkNSSW6UpdateEv kind:function(arm,size=0x200) addr:0x02120078 _ZN12ActorUnkNSSW19func_ov032_02120118Ev kind:function(arm,size=0x78) addr:0x02120278 _ZN12ActorUnkNSSW19func_ov032_02120190Ev kind:function(arm,size=0xcc) addr:0x021202f0 _ZN12ActorUnkNSSW19func_ov032_0212025cEv kind:function(arm,size=0x7c) addr:0x021203bc _ZN12ActorUnkNSSW19func_ov032_021202d8Ev kind:function(arm,size=0x124) addr:0x02120438 _ZN12ActorUnkNSSW19func_ov032_021203fcEv kind:function(arm,size=0x350) addr:0x0212055c -_ZN12ActorUnkNSSW19func_ov032_0212074cEv kind:function(arm,size=0x134) addr:0x021208ac +_ZN12ActorUnkNSSW8vfunc_2CEP14Actor_vfunc_30 kind:function(arm,size=0x134) addr:0x021208ac _ZN12ActorUnkNSSW19func_ov032_02120880Ev kind:function(arm,size=0x14) addr:0x021209e0 -_ZN12ActorUnkNSSW19func_ov032_02120894Ev kind:function(arm,size=0x2ec) addr:0x021209f4 -_ZN12ActorUnkNSSW19func_ov032_02120b34Ev kind:function(arm,size=0x38) addr:0x02120ce0 +_ZN12ActorUnkNSSW19func_ov032_02120894Ei kind:function(arm,size=0x2ec) addr:0x021209f4 +_ZN12ActorUnkNSSW19func_ov032_02120b34E9RefStruct kind:function(arm,size=0x38) addr:0x02120ce0 _ZN12ActorUnkNSSW19func_ov032_02120b6cEv kind:function(arm,size=0x10) addr:0x02120d18 -_ZN12ActorUnkNSSW19func_ov032_02120b7cEv kind:function(arm,size=0x44) addr:0x02120d28 +_ZN12ActorUnkNSSW19func_ov032_02120b7cEP7VecFx32 kind:function(arm,size=0x44) addr:0x02120d28 _ZN12ActorUnkNSSW19func_ov032_02120bc0Ev kind:function(arm,size=0x3c) addr:0x02120d6c -_ZN12ActorUnkNSSW19func_ov032_02120bfcEv kind:function(arm,size=0x78) addr:0x02120da8 +_ZN12ActorUnkNSSW19func_ov032_02120bfcEP5Actor kind:function(arm,size=0x78) addr:0x02120da8 _ZN12ActorUnkNSSW19func_ov032_02120c64EP16MapObjectUnkSWSW kind:function(arm,size=0x8c) addr:0x02120e20 -_ZN12ActorUnkNSSW19func_ov032_02120cf0Ev kind:function(arm,size=0x34) addr:0x02120eac -_ZN12ActorUnkNSSW19func_ov032_02120d24Ev kind:function(arm,size=0x3c) addr:0x02120ee0 -_ZN12ActorUnkNSSW19func_ov032_02120d60Ev kind:function(arm,size=0x1c) addr:0x02120f1c -_ZN12ActorUnkNSSW19func_ov032_02120d7cEv kind:function(arm,size=0x40) addr:0x02120f38 -_ZN12ActorUnkNSSW19func_ov032_02120dbcEv kind:function(arm,size=0x3c) addr:0x02120f78 -_ZN12ActorUnkNSSW19func_ov032_02120df8Ev kind:function(arm,size=0x10) addr:0x02120fb4 -_ZN12ActorUnkNSSWD0Ev kind:function(arm,size=0x1c) addr:0x02120fc4 +_ZN16ActorUnkNSSW_0E0C1EP12ActorUnkNSSW kind:function(arm,size=0x34) addr:0x02120eac +_ZN16ActorUnkNSSW_0E08vfunc_00E9RefStructi kind:function(arm,size=0x3c) addr:0x02120ee0 +_ZN16ActorUnkNSSW_0E08vfunc_04Ev kind:function(arm,size=0x1c) addr:0x02120f1c +_ZN16ActorUnkNSSW_0E08vfunc_0CEP7VecFx32 kind:function(arm,size=0x40) addr:0x02120f38 +_ZN16ActorUnkNSSW_104C1EP12ActorUnkNSSW kind:function(arm,size=0x3c) addr:0x02120f78 +_ZN16ActorUnkNSSW_1048vfunc_10EP5Actor kind:function(arm,size=0x10) addr:0x02120fb4 +_ZN16ActorUnkNSSW_104D0Ev kind:function(arm,size=0x1c) addr:0x02120fc4 _ZN12ActorUnkNSSWD1Ev kind:function(arm,size=0x28) addr:0x02120fe0 -_ZN12ActorUnkNSSW19func_ov032_02120e4cEv kind:function(arm,size=0x30) addr:0x02121008 +_ZN12ActorUnkNSSWD0Ev kind:function(arm,size=0x30) addr:0x02121008 _ZN19ActorProfileUnkNSSWD1Ev kind:function(arm,size=0x14) addr:0x02121038 _ZN23MapObjectProfileUnkSWSW10GetProfileEv kind:function(arm,size=0xc) addr:0x0212104c _ZN23MapObjectProfileUnkSWSW6CreateEv kind:function(arm,size=0x24) addr:0x02121058 @@ -217,7 +217,7 @@ _ZN16MapObjectUnkSWSWD1Ev kind:function(arm,size=0x20) addr:0x02122030 _ZN16MapObjectUnkSWSWD0Ev kind:function(arm,size=0x28) addr:0x02122050 _ZN23MapObjectProfileUnkSWSWD1Ev kind:function(arm,size=0x14) addr:0x02122078 data_ov032_02121ed4 kind:data(any) addr:0x02122090 -data_ov032_021220a0 kind:data(any) addr:0x021220a0 +data_ov032_02121ee4 kind:data(any) addr:0x021220a0 data_ov032_021220b0 kind:data(any) addr:0x021220b0 data_ov032_021220c0 kind:data(any) addr:0x021220c0 data_ov032_021220d0 kind:data(any) addr:0x021220d0 @@ -261,10 +261,10 @@ _ZTV26ModelRender_ov032_02122568 kind:data(any) addr:0x02122700 data_ov032_0212258c kind:data(any) addr:0x0212272c data_ov032_021225dc kind:data(any) addr:0x0212277c _ZTV10ActorKeese kind:data(any) addr:0x021227cc -_ZTV19data_ov032_02122834 kind:data(any) addr:0x0212282c -data_ov032_0212284c kind:data(any) addr:0x0212284c -data_ov032_02122868 kind:data(any) addr:0x02122868 -data_ov032_0212288c kind:data(any) addr:0x0212288c +_ZTV16ActorUnkNSSW_0E0 kind:data(any) addr:0x0212282c +_ZTV16ActorUnkNSSW_104 kind:data(any) addr:0x02122844 +_ZTV19ActorProfileUnkNSSW kind:data(any) addr:0x02122860 +_ZTV12ActorUnkNSSW kind:data(any) addr:0x02122884 _ZTV23MapObjectProfileUnkSWSW kind:data(any) addr:0x021228e4 _ZTV28MapObjectProfileUnkSWSW_Base kind:data(any) addr:0x02122900 _ZTV17MapObject_10_SWSW kind:data(any) addr:0x0212291c diff --git a/config/jp/arm9/overlays/ov032/delinks.txt b/config/jp/arm9/overlays/ov032/delinks.txt index 7048011f..a0bf6731 100644 --- a/config/jp/arm9/overlays/ov032/delinks.txt +++ b/config/jp/arm9/overlays/ov032/delinks.txt @@ -30,6 +30,7 @@ src/032_MapA1/Actor/ActorUnkNSSW.cpp: .text start:0x02121b20 end:0x02122e68 .init start:0x02124064 end:0x021240b4 .ctor start:0x02124110 end:0x02124114 + .data start:0x0212464c end:0x02124720 .bss start:0x02124a3c end:0x02124a88 src/032_MapA1/MapObject/MapObjectUnkSWSW.cpp: diff --git a/config/jp/arm9/overlays/ov032/relocs.txt b/config/jp/arm9/overlays/ov032/relocs.txt index 38437260..5bf736d4 100644 --- a/config/jp/arm9/overlays/ov032/relocs.txt +++ b/config/jp/arm9/overlays/ov032/relocs.txt @@ -792,7 +792,7 @@ from:0x02121c9c kind:load to:0x021246c0 add:0x8 module:overlay(32) from:0x02121ca0 kind:load to:0x020b7544 module:overlay(0) from:0x02121ca8 kind:load to:0x02123ebc module:overlay(32) from:0x02121cac kind:load to:0x020b3160 add:0x8 module:overlay(0) -from:0x02121cb0 kind:load to:0x02124688 module:overlay(32) +from:0x02121cb0 kind:load to:0x02124680 module:overlay(32) add:0x8 from:0x02121cbc kind:arm_call to:0x0207cd78 module:overlay(0) from:0x02121cd0 kind:arm_call to:0x0207d6b4 module:overlay(0) from:0x02121cf8 kind:arm_call to:0x021226b4 module:overlay(32) @@ -902,8 +902,8 @@ from:0x02122b20 kind:arm_call to:0x01fff584 module:itcm from:0x02122b64 kind:arm_call to:0x021226b4 module:overlay(32) from:0x02122bdc kind:arm_call to:0x01ffa06c module:itcm from:0x02122bf4 kind:arm_call to:0x021226b4 module:overlay(32) -from:0x02122c1c kind:arm_call to:0x020f7d24 module:overlays(21,31) -from:0x02122c34 kind:load to:0x0212464c add:0x8 module:overlay(32) +from:0x02122c1c kind:arm_call to:0x020f7d24 module:overlay(31) +from:0x02122c34 kind:load to:0x0212464c module:overlay(32) add:0x8 from:0x02122c54 kind:arm_call to:0x021229a0 module:overlay(32) from:0x02122c64 kind:arm_call to:0x020f7d84 module:overlay(31) from:0x02122c80 kind:arm_call to:0x021229d8 module:overlay(32) @@ -912,7 +912,7 @@ from:0x02122ca0 kind:arm_call to:0x01ffb800 module:itcm from:0x02122cb0 kind:arm_call to:0x02122a2c module:overlay(32) from:0x02122cbc kind:arm_call to:0x021229e8 module:overlay(32) from:0x02122cc8 kind:arm_call to:0x020f7e24 module:overlay(31) -from:0x02122d08 kind:load to:0x0212466c module:overlay(32) +from:0x02122d08 kind:load to:0x02124664 module:overlay(32) add:0x8 from:0x02122d18 kind:load to:0x02122a68 module:overlay(32) from:0x02122d70 kind:arm_call to:0x01fff498 module:itcm from:0x02122d80 kind:arm_call to:0x02122b0c module:overlay(32) @@ -1266,7 +1266,7 @@ from:0x02124644 kind:load to:0x02121a60 module:overlay(32) from:0x02124648 kind:load to:0x0209ad54 module:overlay(0) from:0x02124654 kind:load to:0x02122c38 module:overlay(32) from:0x02124658 kind:load to:0x02122c74 module:overlay(32) -from:0x0212465c kind:load to:0x020f7e1c module:overlays(22,23,31) +from:0x0212465c kind:load to:0x020f7e1c module:overlay(31) from:0x02124660 kind:load to:0x02122c90 module:overlay(32) from:0x0212466c kind:load to:0x02121cb4 module:overlay(32) from:0x02124670 kind:load to:0x02122db4 module:overlay(32) diff --git a/config/jp/arm9/overlays/ov032/symbols.txt b/config/jp/arm9/overlays/ov032/symbols.txt index 830b6d18..ba7cba19 100644 --- a/config/jp/arm9/overlays/ov032/symbols.txt +++ b/config/jp/arm9/overlays/ov032/symbols.txt @@ -169,36 +169,36 @@ _ZN19ActorProfileUnkNSSW10GetProfileEv kind:function(arm,size=0xc) addr:0x02121b _ZN19ActorProfileUnkNSSW6CreateEv kind:function(arm,size=0x24) addr:0x02121b2c _ZN19ActorProfileUnkNSSWC1Ev kind:function(arm,size=0x44) addr:0x02121b50 _ZN12ActorUnkNSSWC1Ev kind:function(arm,size=0x120) addr:0x02121b94 -_ZN12ActorUnkNSSW19func_ov032_02121cb4Ev kind:function(arm,size=0x14) addr:0x02121cb4 -_ZN12ActorUnkNSSW19func_ov032_02121cc8Ev kind:function(arm,size=0x14) addr:0x02121cc8 -_ZN12ActorUnkNSSW19func_ov032_0211ff10Ev kind:function(arm,size=0x28) addr:0x02121cdc -_ZN12ActorUnkNSSW19func_ov032_0211ff38Ev kind:function(arm,size=0x224) addr:0x02121d04 +_ZN16ActorUnkNSSW_104D1Ev kind:function(arm,size=0x14) addr:0x02121cb4 +_ZN16ActorUnkNSSW_138D1Ev kind:function(arm,size=0x14) addr:0x02121cc8 +_ZN12ActorUnkNSSW4InitEi kind:function(arm,size=0x28) addr:0x02121cdc +_ZN12ActorUnkNSSW6UpdateEv kind:function(arm,size=0x224) addr:0x02121d04 _ZN12ActorUnkNSSW19func_ov032_02120118Ev kind:function(arm,size=0x78) addr:0x02121f28 _ZN12ActorUnkNSSW19func_ov032_02120190Ev kind:function(arm,size=0xcc) addr:0x02121fa0 _ZN12ActorUnkNSSW19func_ov032_0212025cEv kind:function(arm,size=0x7c) addr:0x0212206c _ZN12ActorUnkNSSW19func_ov032_021202d8Ev kind:function(arm,size=0x124) addr:0x021220e8 _ZN12ActorUnkNSSW19func_ov032_021203fcEv kind:function(arm,size=0x360) addr:0x0212220c -_ZN12ActorUnkNSSW19func_ov032_0212074cEv kind:function(arm,size=0x134) addr:0x0212256c +_ZN12ActorUnkNSSW8vfunc_2CEP14Actor_vfunc_30 kind:function(arm,size=0x134) addr:0x0212256c _ZN12ActorUnkNSSW19func_ov032_02120880Ev kind:function(arm,size=0x14) addr:0x021226a0 -_ZN12ActorUnkNSSW19func_ov032_02120894Ev kind:function(arm,size=0x2ec) addr:0x021226b4 -_ZN12ActorUnkNSSW19func_ov032_02120b34Ev kind:function(arm,size=0x38) addr:0x021229a0 +_ZN12ActorUnkNSSW19func_ov032_02120894Ei kind:function(arm,size=0x2ec) addr:0x021226b4 +_ZN12ActorUnkNSSW19func_ov032_02120b34E9RefStruct kind:function(arm,size=0x38) addr:0x021229a0 _ZN12ActorUnkNSSW19func_ov032_02120b6cEv kind:function(arm,size=0x10) addr:0x021229d8 -_ZN12ActorUnkNSSW19func_ov032_02120b7cEv kind:function(arm,size=0x44) addr:0x021229e8 +_ZN12ActorUnkNSSW19func_ov032_02120b7cEP7VecFx32 kind:function(arm,size=0x44) addr:0x021229e8 _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_02120bfcEP5Actor kind:function(arm,size=0xa4) addr:0x02122a68 +_ZN12ActorUnkNSSW19func_ov032_02122b0cEP9MapObject kind:function(arm,size=0x6c) addr:0x02122b0c _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 -_ZN12ActorUnkNSSW19func_ov032_02120d7cEv kind:function(arm,size=0x40) addr:0x02122c90 -_ZN12ActorUnkNSSW19func_ov032_02120dbcEv kind:function(arm,size=0x3c) addr:0x02122cd0 -_ZN12ActorUnkNSSW19func_ov032_02120df8Ev kind:function(arm,size=0x10) addr:0x02122d0c -_ZN12ActorUnkNSSW19func_ov032_02122d1cEv kind:function(arm,size=0x98) addr:0x02122d1c -_ZN12ActorUnkNSSWD0Ev kind:function(arm,size=0x1c) addr:0x02122db4 -_ZN12ActorUnkNSSW19func_ov032_02122dd0Ev kind:function(arm,size=0x1c) addr:0x02122dd0 +_ZN16ActorUnkNSSW_0E0C1EP12ActorUnkNSSW kind:function(arm,size=0x34) addr:0x02122c04 +_ZN16ActorUnkNSSW_0E08vfunc_00E9RefStructi kind:function(arm,size=0x3c) addr:0x02122c38 +_ZN16ActorUnkNSSW_0E08vfunc_04Ev kind:function(arm,size=0x1c) addr:0x02122c74 +_ZN16ActorUnkNSSW_0E08vfunc_0CEP7VecFx32 kind:function(arm,size=0x40) addr:0x02122c90 +_ZN16ActorUnkNSSW_104C1EP12ActorUnkNSSW kind:function(arm,size=0x3c) addr:0x02122cd0 +_ZN16ActorUnkNSSW_1048vfunc_10EP5Actor kind:function(arm,size=0x10) addr:0x02122d0c +_ZN16ActorUnkNSSW_1388vfunc_0CE9RefStructP24UnkStruct_ov031_020e54d4PK7VecFx32S5_ kind:function(arm,size=0x98) addr:0x02122d1c +_ZN16ActorUnkNSSW_104D0Ev kind:function(arm,size=0x1c) addr:0x02122db4 +_ZN16ActorUnkNSSW_138D0Ev kind:function(arm,size=0x1c) addr:0x02122dd0 _ZN12ActorUnkNSSWD1Ev kind:function(arm,size=0x30) addr:0x02122dec -_ZN12ActorUnkNSSW19func_ov032_02122e1cEv kind:function(arm,size=0x38) addr:0x02122e1c +_ZN12ActorUnkNSSWD0Ev kind:function(arm,size=0x38) addr:0x02122e1c _ZN19ActorProfileUnkNSSWD1Ev kind:function(arm,size=0x14) addr:0x02122e54 _ZN23MapObjectProfileUnkSWSW10GetProfileEv kind:function(arm,size=0xc) addr:0x02122e68 _ZN23MapObjectProfileUnkSWSW6CreateEv kind:function(arm,size=0x24) addr:0x02122e74 @@ -221,7 +221,7 @@ _ZN16MapObjectUnkSWSWD1Ev kind:function(arm,size=0x20) addr:0x02123e4c _ZN16MapObjectUnkSWSWD0Ev kind:function(arm,size=0x28) addr:0x02123e6c _ZN23MapObjectProfileUnkSWSWD1Ev kind:function(arm,size=0x14) addr:0x02123e94 data_ov032_02121ed4 kind:data(any) addr:0x02123eac -data_ov032_02123ebc kind:data(any) addr:0x02123ebc +data_ov032_02121ee4 kind:data(any) addr:0x02123ebc data_ov032_02121ef4 kind:data(any) addr:0x02123ecc data_ov032_02121f04 kind:data(any) addr:0x02123edc data_ov032_02121f14 kind:data(any) addr:0x02123eec @@ -264,11 +264,11 @@ _ZTV26ModelRender_ov032_02122568 kind:data(any) addr:0x02124520 data_ov032_0212258c kind:data(any) addr:0x0212454c data_ov032_021225dc kind:data(any) addr:0x0212459c _ZTV10ActorKeese kind:data(any) addr:0x021245ec -_ZTV19data_ov032_02124654 kind:data(any) addr:0x0212464c -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 +_ZTV16ActorUnkNSSW_0E0 kind:data(any) addr:0x0212464c +_ZTV16ActorUnkNSSW_104 kind:data(any) addr:0x02124664 +_ZTV16ActorUnkNSSW_138 kind:data(any) addr:0x02124680 +_ZTV19ActorProfileUnkNSSW kind:data(any) addr:0x0212469c +_ZTV12ActorUnkNSSW kind:data(any) addr:0x021246c0 _ZTV23MapObjectProfileUnkSWSW kind:data(any) addr:0x02124720 _ZTV28MapObjectProfileUnkSWSW_Base kind:data(any) addr:0x0212473c _ZTV17MapObject_10_SWSW kind:data(any) addr:0x02124758 diff --git a/config/jp/arm9/symbols.txt b/config/jp/arm9/symbols.txt index 9bbf7a6a..b5cf2d4f 100644 --- a/config/jp/arm9/symbols.txt +++ b/config/jp/arm9/symbols.txt @@ -2341,7 +2341,7 @@ data_020408b0 kind:data(any) addr:0x020408b0 data_02040ab0 kind:data(any) addr:0x02040ab0 data_02040eb0 kind:data(any) addr:0x02040eb0 data_020418b0 kind:data(any) addr:0x020418b0 -data_02041eb0 kind:data(any) addr:0x02041eb0 +data_02040964 kind:data(any) addr:0x02041eb0 data_020428b0 kind:data(any) addr:0x020428b0 data_02042eb0 kind:data(any) addr:0x02042eb0 data_020438b0 kind:data(any) addr:0x020438b0 diff --git a/config/usa/arm9/overlays/ov032/delinks.txt b/config/usa/arm9/overlays/ov032/delinks.txt index 0cd66da5..53399e9c 100644 --- a/config/usa/arm9/overlays/ov032/delinks.txt +++ b/config/usa/arm9/overlays/ov032/delinks.txt @@ -30,6 +30,7 @@ src/032_MapA1/Actor/ActorUnkNSSW.cpp: .text start:0x0211fd60 end:0x02120e70 .init start:0x0212206c end:0x021220bc .ctor start:0x02122118 end:0x0212211c + .data start:0x0212266c end:0x02122724 .bss start:0x02122a3c end:0x02122a88 src/032_MapA1/MapObject/MapObjectUnkSWSW.cpp: diff --git a/config/usa/arm9/overlays/ov032/relocs.txt b/config/usa/arm9/overlays/ov032/relocs.txt index d234cb4f..bb7c263d 100644 --- a/config/usa/arm9/overlays/ov032/relocs.txt +++ b/config/usa/arm9/overlays/ov032/relocs.txt @@ -779,7 +779,7 @@ from:0x0211fd68 kind:load to:0x02122a4c module:overlay(32) from:0x0211fd7c kind:arm_call to:0x02011f3c module:main from:0x0211fd88 kind:arm_call to:0x0211fdd4 module:overlay(32) from:0x0211fd9c kind:arm_call to:0x0209765c module:overlay(0) -from:0x0211fdcc kind:load to:0x021226a8 module:overlay(32) +from:0x0211fdcc kind:load to:0x021226a0 module:overlay(32) add:0x8 from:0x0211fddc kind:arm_call to:0x02098b08 module:overlay(0) from:0x0211fdf0 kind:arm_call to:0x0209c698 module:overlay(0) from:0x0211fe08 kind:arm_call to:0x0200f05c module:main @@ -787,7 +787,7 @@ from:0x0211fe40 kind:arm_call to:0x02097b98 module:overlay(0) from:0x0211fe4c kind:arm_call to:0x02120cd0 module:overlay(32) from:0x0211fe58 kind:arm_call to:0x02120d9c module:overlay(32) from:0x0211feb4 kind:arm_call to:0x01ffa06c module:itcm -from:0x0211fec8 kind:load to:0x021226cc module:overlay(32) +from:0x0211fec8 kind:load to:0x021226c4 module:overlay(32) add:0x8 from:0x0211fecc kind:load to:0x020b5d14 module:overlay(0) from:0x0211fed4 kind:load to:0x02121ec4 module:overlay(32) from:0x0211fed8 kind:load to:0x020b1940 add:0x8 module:overlay(0) @@ -899,7 +899,7 @@ from:0x02120d6c kind:arm_call to:0x01ffb800 module:itcm from:0x02120d7c kind:arm_call to:0x02120ba0 module:overlay(32) from:0x02120d88 kind:arm_call to:0x02120b5c module:overlay(32) from:0x02120d94 kind:arm_call to:0x020f6364 module:overlay(31) -from:0x02120dd4 kind:load to:0x0212268c module:overlay(32) +from:0x02120dd4 kind:load to:0x02122684 module:overlay(32) add:0x8 from:0x02120de4 kind:load to:0x02120bdc module:overlay(32) from:0x02120df0 kind:arm_call to:0x0207b6a0 module:overlay(0) from:0x02120df8 kind:arm_call to:0x02011ff4 module:main @@ -1245,7 +1245,7 @@ from:0x02122664 kind:load to:0x0211fca0 module:overlay(32) from:0x02122668 kind:load to:0x02099568 module:overlay(0) from:0x02122674 kind:load to:0x02120d04 module:overlay(32) from:0x02122678 kind:load to:0x02120d40 module:overlay(32) -from:0x0212267c kind:load to:0x020f635c module:overlays(22,23,31) +from:0x0212267c kind:load to:0x020f635c module:overlay(31) from:0x02122680 kind:load to:0x02120d5c module:overlay(32) from:0x0212268c kind:load to:0x0211fedc module:overlay(32) from:0x02122690 kind:load to:0x02120de8 module:overlay(32) diff --git a/config/usa/arm9/overlays/ov032/symbols.txt b/config/usa/arm9/overlays/ov032/symbols.txt index d97cb42a..d2e86023 100644 --- a/config/usa/arm9/overlays/ov032/symbols.txt +++ b/config/usa/arm9/overlays/ov032/symbols.txt @@ -169,32 +169,32 @@ _ZN19ActorProfileUnkNSSW10GetProfileEv kind:function(arm,size=0xc) addr:0x0211fd _ZN19ActorProfileUnkNSSW6CreateEv kind:function(arm,size=0x24) addr:0x0211fd6c _ZN19ActorProfileUnkNSSWC1Ev kind:function(arm,size=0x44) addr:0x0211fd90 _ZN12ActorUnkNSSWC1Ev kind:function(arm,size=0x108) addr:0x0211fdd4 -_ZN12ActorUnkNSSW19func_ov032_0211fefcEv kind:function(arm,size=0x14) addr:0x0211fedc -_ZN12ActorUnkNSSW19func_ov032_0211ff10Ev kind:function(arm,size=0x28) addr:0x0211fef0 -_ZN12ActorUnkNSSW19func_ov032_0211ff38Ev kind:function(arm,size=0x1e0) addr:0x0211ff18 +_ZN16ActorUnkNSSW_104D1Ev kind:function(arm,size=0x14) addr:0x0211fedc +_ZN12ActorUnkNSSW4InitEi kind:function(arm,size=0x28) addr:0x0211fef0 +_ZN12ActorUnkNSSW6UpdateEv kind:function(arm,size=0x1e0) addr:0x0211ff18 _ZN12ActorUnkNSSW19func_ov032_02120118Ev kind:function(arm,size=0x78) addr:0x021200f8 _ZN12ActorUnkNSSW19func_ov032_02120190Ev kind:function(arm,size=0xcc) addr:0x02120170 _ZN12ActorUnkNSSW19func_ov032_0212025cEv kind:function(arm,size=0x7c) addr:0x0212023c _ZN12ActorUnkNSSW19func_ov032_021202d8Ev kind:function(arm,size=0x124) addr:0x021202b8 _ZN12ActorUnkNSSW19func_ov032_021203fcEv kind:function(arm,size=0x350) addr:0x021203dc -_ZN12ActorUnkNSSW19func_ov032_0212074cEv kind:function(arm,size=0x134) addr:0x0212072c +_ZN12ActorUnkNSSW8vfunc_2CEP14Actor_vfunc_30 kind:function(arm,size=0x134) addr:0x0212072c _ZN12ActorUnkNSSW19func_ov032_02120880Ev kind:function(arm,size=0x14) addr:0x02120860 -_ZN12ActorUnkNSSW19func_ov032_02120894Ev kind:function(arm,size=0x2a0) addr:0x02120874 -_ZN12ActorUnkNSSW19func_ov032_02120b34Ev kind:function(arm,size=0x38) addr:0x02120b14 +_ZN12ActorUnkNSSW19func_ov032_02120894Ei kind:function(arm,size=0x2a0) addr:0x02120874 +_ZN12ActorUnkNSSW19func_ov032_02120b34E9RefStruct kind:function(arm,size=0x38) addr:0x02120b14 _ZN12ActorUnkNSSW19func_ov032_02120b6cEv kind:function(arm,size=0x10) addr:0x02120b4c -_ZN12ActorUnkNSSW19func_ov032_02120b7cEv kind:function(arm,size=0x44) addr:0x02120b5c +_ZN12ActorUnkNSSW19func_ov032_02120b7cEP7VecFx32 kind:function(arm,size=0x44) addr:0x02120b5c _ZN12ActorUnkNSSW19func_ov032_02120bc0Ev kind:function(arm,size=0x3c) addr:0x02120ba0 -_ZN12ActorUnkNSSW19func_ov032_02120bfcEv kind:function(arm,size=0x68) addr:0x02120bdc +_ZN12ActorUnkNSSW19func_ov032_02120bfcEP5Actor kind:function(arm,size=0x68) addr:0x02120bdc _ZN12ActorUnkNSSW19func_ov032_02120c64EP16MapObjectUnkSWSW kind:function(arm,size=0x8c) addr:0x02120c44 -_ZN12ActorUnkNSSW19func_ov032_02120cf0Ev kind:function(arm,size=0x34) addr:0x02120cd0 -_ZN12ActorUnkNSSW19func_ov032_02120d24Ev kind:function(arm,size=0x3c) addr:0x02120d04 -_ZN12ActorUnkNSSW19func_ov032_02120d60Ev kind:function(arm,size=0x1c) addr:0x02120d40 -_ZN12ActorUnkNSSW19func_ov032_02120d7cEv kind:function(arm,size=0x40) addr:0x02120d5c -_ZN12ActorUnkNSSW19func_ov032_02120dbcEv kind:function(arm,size=0x3c) addr:0x02120d9c -_ZN12ActorUnkNSSW19func_ov032_02120df8Ev kind:function(arm,size=0x10) addr:0x02120dd8 -_ZN12ActorUnkNSSWD0Ev kind:function(arm,size=0x1c) addr:0x02120de8 +_ZN16ActorUnkNSSW_0E0C1EP12ActorUnkNSSW kind:function(arm,size=0x34) addr:0x02120cd0 +_ZN16ActorUnkNSSW_0E08vfunc_00E9RefStructi kind:function(arm,size=0x3c) addr:0x02120d04 +_ZN16ActorUnkNSSW_0E08vfunc_04Ev kind:function(arm,size=0x1c) addr:0x02120d40 +_ZN16ActorUnkNSSW_0E08vfunc_0CEP7VecFx32 kind:function(arm,size=0x40) addr:0x02120d5c +_ZN16ActorUnkNSSW_104C1EP12ActorUnkNSSW kind:function(arm,size=0x3c) addr:0x02120d9c +_ZN16ActorUnkNSSW_1048vfunc_10EP5Actor kind:function(arm,size=0x10) addr:0x02120dd8 +_ZN16ActorUnkNSSW_104D0Ev kind:function(arm,size=0x1c) addr:0x02120de8 _ZN12ActorUnkNSSWD1Ev kind:function(arm,size=0x28) addr:0x02120e04 -_ZN12ActorUnkNSSW19func_ov032_02120e4cEv kind:function(arm,size=0x30) addr:0x02120e2c +_ZN12ActorUnkNSSWD0Ev kind:function(arm,size=0x30) addr:0x02120e2c _ZN19ActorProfileUnkNSSWD1Ev kind:function(arm,size=0x14) addr:0x02120e5c _ZN23MapObjectProfileUnkSWSW10GetProfileEv kind:function(arm,size=0xc) addr:0x02120e70 _ZN23MapObjectProfileUnkSWSW6CreateEv kind:function(arm,size=0x24) addr:0x02120e7c @@ -217,9 +217,9 @@ _ZN16MapObjectUnkSWSWD1Ev kind:function(arm,size=0x20) addr:0x02121e54 _ZN16MapObjectUnkSWSWD0Ev kind:function(arm,size=0x28) addr:0x02121e74 _ZN23MapObjectProfileUnkSWSWD1Ev kind:function(arm,size=0x14) addr:0x02121e9c data_ov032_02121ed4 kind:data(any) addr:0x02121eb4 -data_ov032_02121ec4 kind:data(any) addr:0x02121ec4 +data_ov032_02121ee4 kind:data(any) addr:0x02121ec4 data_ov032_02121ed4_usa kind:data(any) addr:0x02121ed4 -data_ov032_02121ee4 kind:data(any) addr:0x02121ee4 +data_ov032_02121ee4_usa kind:data(any) addr:0x02121ee4 data_ov032_02121ef4 kind:data(any) addr:0x02121ef4 data_ov032_02121f04 kind:data(any) addr:0x02121f04 __sinit_ActorSpinut.cpp kind:function(arm,size=0x6c) addr:0x02121f14 local @@ -260,10 +260,10 @@ _ZTV26ModelRender_ov032_02122568 kind:data(any) addr:0x02122540 data_ov032_0212258c kind:data(any) addr:0x0212256c data_ov032_021225dc kind:data(any) addr:0x021225bc _ZTV10ActorKeese kind:data(any) addr:0x0212260c -_ZTV19data_ov032_02122674 kind:data(any) addr:0x0212266c -data_ov032_0212268c kind:data(any) addr:0x0212268c -data_ov032_021226a8 kind:data(any) addr:0x021226a8 -data_ov032_021226cc kind:data(any) addr:0x021226cc +_ZTV16ActorUnkNSSW_0E0 kind:data(any) addr:0x0212266c +_ZTV16ActorUnkNSSW_104 kind:data(any) addr:0x02122684 +_ZTV19ActorProfileUnkNSSW kind:data(any) addr:0x021226a0 +_ZTV12ActorUnkNSSW kind:data(any) addr:0x021226c4 _ZTV23MapObjectProfileUnkSWSW kind:data(any) addr:0x02122724 _ZTV28MapObjectProfileUnkSWSW_Base kind:data(any) addr:0x02122740 _ZTV17MapObject_10_SWSW kind:data(any) addr:0x0212275c diff --git a/config/usa/arm9/symbols.txt b/config/usa/arm9/symbols.txt index 609ee0a0..aae7ecc2 100644 --- a/config/usa/arm9/symbols.txt +++ b/config/usa/arm9/symbols.txt @@ -2319,7 +2319,7 @@ data_02040105 kind:data(any) addr:0x02040105 data_02040202 kind:data(any) addr:0x02040202 data_0204033c kind:data(any) addr:0x0204033c data_02040403 kind:data(any) addr:0x02040403 -data_0204093c kind:data(any) addr:0x0204093c +data_02040964 kind:data(any) addr:0x0204093c data_0204133c kind:data(any) addr:0x0204133c data_0204193c kind:data(any) addr:0x0204193c data_0204233c kind:data(any) addr:0x0204233c diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp index d5afa5b4..8e5598a1 100644 --- a/include/Actor/Actor.hpp +++ b/include/Actor/Actor.hpp @@ -353,12 +353,16 @@ class Actor_C4 : public Actor_C4_Base { public: /* 00 (vtable) */ /* 04 */ unk32 mUnk_04; + // might be a VecFx16 /* 08 */ unk16 mUnk_08; /* 08 */ unk16 mUnk_0A; /* 0C */ unk16 mUnk_0C; + + // might be a VecFx16 /* 0C */ unk16 mUnk_0E; /* 10 */ unk16 mUnk_10; /* 10 */ unk16 mUnk_12; + /* 14 */ unk32 mUnk_14; /* 18 */ unk32 mUnk_18; /* 1C */ unk32 mUnk_1C; diff --git a/include/Actor/ActorUnkNSSW.hpp b/include/Actor/ActorUnkNSSW.hpp index 32cf4b31..de190ed7 100644 --- a/include/Actor/ActorUnkNSSW.hpp +++ b/include/Actor/ActorUnkNSSW.hpp @@ -1,5 +1,3 @@ -//! TODO: This file was generated automatically and might contain errors - #pragma once #include "Actor/Actor.hpp" @@ -8,60 +6,99 @@ #include "global.h" #include "types.h" -class ActorUnkNSSW_C4 : public Actor_C4 { +class ActorUnkNSSW; + +class ActorUnkNSSW_0E0 : public Actor_C4 { public: - ActorUnkNSSW_C4(Actor *param1); + /* 00 (base) */ + /* 24 */ + + ActorUnkNSSW_0E0(ActorUnkNSSW *param1); /* 00 */ virtual bool vfunc_00(RefStruct ref, unk32 param2) override; /* 04 */ virtual bool vfunc_04() override; - /* 08 */ virtual void vfunc_08() override; - /* 0C */ virtual void vfunc_0C(unk32 param1) override; + /* 0C */ virtual void vfunc_0C(VecFx32 *param1) override; }; -class ActorUnkNSSW : public Actor { +class ActorUnkNSSW_104 : public UnkStruct_ov031_Items_01 { public: - /* 000 (base) */ - /* 094 */ PAD(0x094, 0x0BC); - /* 0BC */ unk32 mUnk_0BC; - /* 0C0 */ PAD(0x0C0, 0x184); + /* 00 (base) */ + /* 2C */ ActorUnkNSSW *mUnk_2C; + /* 30 */ + + ActorUnkNSSW_104(ActorUnkNSSW *actor); + + /* 10 */ virtual void vfunc_10(Actor *actor) override; +}; + #if IS_JP - /* 184 */ PAD(0x184, 0x190); - /* 190 */ MapObjectUnkSWSW *mUnk_184_eur; - /* 194 */ MapObjectUnkSWSW *mUnk_188_eur; -#else - /* 184 */ MapObjectUnkSWSW *mUnk_184_eur; - /* 188 */ MapObjectUnkSWSW *mUnk_188_eur; +class ActorUnkNSSW_138 : public UnkStruct_ov031_Items_00 { +public: + /* 00 (base) */ + /* 04 */ unk32 mUnk_04; + /* 08 */ ActorUnkNSSW *mUnk_08; + + ActorUnkNSSW_138(ActorUnkNSSW *actor) : + UnkStruct_ov031_Items_00(), + mUnk_08(actor) {} + + /* 0C */ virtual bool vfunc_0C(RefStruct ref, UnkStruct_ov031_020e54d4 *param2, const VecFx32 *param3, + const VecFx32 *param4) override; +}; #endif - /* 18C */ + +class ActorUnkNSSW : public Actor_Derived2 { +public: + /* EUR - JPN */ + /* 000 - 000 (base) */ + /* 0AE - 0AE */ PAD(0x0AE, 0x0B0); + /* 0B0 - 0B0 */ UnkSystem6_Derived2 mUnk_0B0; + /* 0BC - 0BC */ unk32 mUnk_0BC; + /* 0C0 - 0C0 */ Actor_9C mUnk_0C0; + /* 0E0 - 0E0 */ ActorUnkNSSW_0E0 mUnk_0E0; + /* 104 - 104 */ ActorUnkNSSW_104 mUnk_104; + /* 134 - 134 */ RefStruct mUnk_134; +#if IS_JP + /* 138 - 138 */ ActorUnkNSSW_138 mUnk_138_jp; +#endif + /* 138 - 144 */ VecFx32Cpp mUnk_138; + /* 144 - 150 */ VecFx32Cpp mUnk_144; + /* 150 - 15C */ MtxFx33 mUnk_150; + /* 174 - 180 */ unk32 mUnk_174; + /* 178 - 184 */ unk32 mUnk_178; + /* 17C - 188 */ unk32 mUnk_17C; + /* 180 - 18C */ unk32 mUnk_180; + /* 184 - 190 */ MapObjectUnkSWSW *mUnk_184; + /* 188 - 194 */ MapObjectUnkSWSW *mUnk_188; + /* 18C - 198 */ unk16 mUnk_18C; + /* 190 - 19C */ VecFx32Cpp mUnk_190; + /* 19C - 1A8 */ bool mUnk_19C; + /* 19D - 1A9 */ bool mUnk_19D; + /* 1A0 - 1AC */ unk32 mUnk_1A0; + /* 1A4 - 1B0 */ ActorUnkNSSW(); - /* 4C */ virtual ~ActorUnkNSSW() override; + /* 1C */ virtual bool Init(unk32 param1) override; + /* 20 */ virtual void Update() override; + /* 2C */ virtual void vfunc_2C(Actor_vfunc_30 *param1) override; - void func_ov032_0211fefc(void); - void func_ov032_0211ff10(void); - void func_ov032_0211ff38(void); - void func_ov032_02120118(void); - void func_ov032_02120190(void); - void func_ov032_0212025c(void); - void func_ov032_021202d8(void); - void func_ov032_021203fc(void); - void func_ov032_0212074c(void); - void func_ov032_02120880(void); - void func_ov032_02120894(void); - void func_ov032_02120b34(void); - void func_ov032_02120b6c(void); - void func_ov032_02120b7c(void); - void func_ov032_02120bc0(void); - void func_ov032_02120bfc(void); + void func_ov032_02120118(); + void func_ov032_02120190(); + void func_ov032_0212025c(); + void func_ov032_021202d8(); + void func_ov032_021203fc(); + void func_ov032_02120880(); + void func_ov032_02120894(unk32 param1); + void func_ov032_02120b34(RefStruct ref); + void func_ov032_02120b6c(); + void func_ov032_02120b7c(VecFx32 *param1); + void func_ov032_02120bc0(); + void func_ov032_02120bfc(Actor *actor); +#if IS_JP + void func_ov032_02122b0c(MapObject *mapObject); +#endif void func_ov032_02120c64(MapObjectUnkSWSW *param1); - void func_ov032_02120cf0(void); - void func_ov032_02120d24(void); - void func_ov032_02120d60(void); - void func_ov032_02120d7c(void); - void func_ov032_02120dbc(void); - void func_ov032_02120df8(void); - void func_ov032_02120e4c(void); }; class ActorProfileUnkNSSW : public ActorProfile { @@ -69,7 +106,6 @@ public: /* 00 (base) */ ActorProfileUnkNSSW(); - ~ActorProfileUnkNSSW(); /* 0C */ virtual Actor *Create(); diff --git a/include/Actor/ActorUnkRCHU.hpp b/include/Actor/ActorUnkRCHU.hpp index 73a1d77e..cc0a5f86 100644 --- a/include/Actor/ActorUnkRCHU.hpp +++ b/include/Actor/ActorUnkRCHU.hpp @@ -19,8 +19,9 @@ public: class ActorUnkRCHU : public Actor { public: - /* 00 (base) */ - /* 94 */ + /* 000 (base) */ + /* 094 */ PAD(0x094, 0x268); + /* 268 */ unk32 mUnk_268; ActorUnkRCHU(); diff --git a/include/CommonFuncs.hpp b/include/CommonFuncs.hpp index f507f345..9c111b72 100644 --- a/include/CommonFuncs.hpp +++ b/include/CommonFuncs.hpp @@ -131,7 +131,8 @@ void func_0200b58c(G3d_RenderObject *); void G3d_GetCurrentMtx(MtxFx43 *mtx1, MtxFx33 *mtx2); void func_0200ea38(G3d_Model *, unk32, unk32); void func_0200eab0(G3d_Model *, unk32, u8); -void func_0200ef9c(G3d_Model *); +void func_0200ef5c(G3d_Model *, unk32); +void func_0200ef9c(G3d_Model *, unk32); UnkResourceStruct2 *func_0200f05c(G3d_NameList *, char *); unk32 func_0200f218(G3d_NameList *, const char name[16]); void *func_02012ec8(unk32, unk16, const char *, size_t *, unk32, u8); @@ -279,6 +280,11 @@ VecFx32 *func_ov000_0205d524(unk32, unk32); void func_ov000_0205d65c(void *, VecFx32 *, VecFx32 *, UnkAngleStruct); void func_ov000_0205db44(void *, void *, unk32); void func_ov000_0205dbe4(u16); +void func_ov000_0205f298(unk32 *, VecFx32 *, unk32); +void func_ov000_0205f4fc(unk32 *, MtxFx33 *); +void func_ov000_0205f6e4(VecFx32 *, VecFx32 *); +bool func_ov000_0205f7d4(VecFx32 *, VecFx32 *, VecFx32 *); +void func_ov000_0205f8e8(unk32 *, MtxFx33 *); void func_ov000_02062e44(Vec2s *param1, void *param2); void *func_ov000_02066294(); unk32 func_ov000_02068504(int); diff --git a/include/math.hpp b/include/math.hpp index 957219be..593737c3 100644 --- a/include/math.hpp +++ b/include/math.hpp @@ -1,5 +1,7 @@ #pragma once +#include "global.h" + #include // some kind of angle conversion? only used for angle values so far @@ -45,6 +47,26 @@ struct VecFx32Cpp { vec.y = Y; vec.z = Z; } + + void Set(fx32 X, fx32 Y, fx32 Z) { + VecFx32_Init(X, Y, Z, &this->vec); + } + + void Reset() { + VecFx32_Reset(&this->vec); + } + + void CopyIn(VecFx32Cpp *vec) { + VecFx32_Copy(&this->vec, &vec->vec); + } + + void CopyIn(VecFx32 *vec) { + VecFx32_Copy(&this->vec, vec); + } + + bool TryNormalize() { + return VecFx32_TryNormalize(&this->vec); + } }; // C++ wrapper for VecFx16 diff --git a/libs/nitro/include/nitro/math.h b/libs/nitro/include/nitro/math.h index ac18663a..319e2ff6 100644 --- a/libs/nitro/include/nitro/math.h +++ b/libs/nitro/include/nitro/math.h @@ -84,12 +84,24 @@ static inline void VecFx32_Copy(const VecFx32 *vec, VecFx32 *out) { out->z = vec->z; } +static inline void VecFx32_Copy2VecFx16(const VecFx32 *vec, VecFx16 *out) { + out->x = vec->x; + out->y = vec->y; + out->z = vec->z; +} + static inline void VecFx32_Init(fx32 x, fx32 y, fx32 z, VecFx32 *dst) { dst->x = x; dst->y = y; dst->z = z; } +static inline void VecFx16_Init(fx16 x, fx16 y, fx16 z, VecFx16 *dst) { + dst->x = x; + dst->y = y; + dst->z = z; +} + static inline void VecFx32_Reset(VecFx32 *dst) { dst->x = 0; dst->y = 0; diff --git a/src/031_Land/Actor/ActorItemTornado.cpp b/src/031_Land/Actor/ActorItemTornado.cpp index 0f53ed97..f52f3f52 100644 --- a/src/031_Land/Actor/ActorItemTornado.cpp +++ b/src/031_Land/Actor/ActorItemTornado.cpp @@ -286,7 +286,6 @@ void ActorItemTornado::vfunc_24() { #define MUL_FXUNK2(a, b) (fx32)((((s32) (a)) * ((s32) (b)) + 0x800) >> FX32_SHIFT) -// non-matching void ActorItemTornado::vfunc_2C(Actor_vfunc_30 *param1) { if (this->mUnk_1DC <= 0x0) { return; @@ -304,7 +303,7 @@ void ActorItemTornado::vfunc_2C(Actor_vfunc_30 *param1) { u32 var_r7; G3d_Model *var_r8 = this->mUnk_94.mpModel; - func_0200ef9c(var_r8); + func_0200ef9c(var_r8, var_r1); for (var_r7 = 0x0; var_r7 < this->mUnk_1D1; ++var_r7) { func_0200ea38(var_r8, var_r7, data_ov000_020b4ec4.func_01ffc768(0x4)); diff --git a/src/032_MapA1/Actor/ActorUnkNSSW.cpp b/src/032_MapA1/Actor/ActorUnkNSSW.cpp index bd5e80a0..07223dda 100644 --- a/src/032_MapA1/Actor/ActorUnkNSSW.cpp +++ b/src/032_MapA1/Actor/ActorUnkNSSW.cpp @@ -1,43 +1,697 @@ -//! TODO: This file was generated automatically and might contain errors - #include "Actor/ActorUnkNSSW.hpp" + +#include "Actor/ActorManager.hpp" +#include "Actor/ActorUnkRCHU.hpp" +#include "CommonFuncs.hpp" +#include "MapObject/MapObjectManager.hpp" #include "System/SysNew.hpp" +#include "Unknown/UnkStruct_027e09a8.hpp" +#include "Unknown/UnkStruct_027e09b4.hpp" +#include "Unknown/UnkStruct_027e09c0.hpp" +#include "Unknown/UnkStruct_027e0cd8.hpp" +#include "Unknown/UnkStruct_027e0cec.hpp" +#include "Unknown/UnkStruct_ov000_020b4ec4.hpp" +#include "Unknown/UnkStruct_ov000_020b5d34.hpp" + +class ActorWithMat4x3pAt154 : public Actor { +public: + /* 000 (base) */ + /* 094 */ PAD(0x094, 0x154); + /* 154 */ MtxFx43 mUnk_154; + /* 184 */ +}; + +class UnkActor_ov032_02120190 : public Actor { +public: + /* 000 (base) */ + /* 94 */ PAD(0x94, 0xE8); + /* E8 */ VecFx32 mUnk_E8; +}; + +class UnkStruct_ov071_0215f92c : public UnkStruct_ov031_Items_00 { +public: + /* 00 (base) */ + /* 04 */ u16 mUnk_04; + /* 08 */ UnkStruct_ov031_020e5d18_00 mUnk_08; + /* 0C */ + + UnkStruct_ov071_0215f92c(); +}; + +#if IS_JP +class ActorWithBoolAt17F : public Actor { +public: + /* 000 (base) */ + /* 094 */ PAD(0x094, 0x17F); + /* 17F */ bool mUnk_17F; + /* 180 */ +}; +#endif + +extern fx16 data_02040964[]; +extern VecFx32 data_027e0108; +extern unk32 data_ov000_020aecf8; DECL_PROFILE(ActorProfileUnkNSSW); +extern char data_ov032_02121ee4; + Actor *ActorProfileUnkNSSW::Create() { return new(HeapIndex_2) ActorUnkNSSW(); } ActorProfileUnkNSSW::ActorProfileUnkNSSW() : - ActorProfile(ActorId_NSSW) {} + ActorProfile(ActorId_NSSW) { + this->mUnk_04.Init(FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(0.3f)); +} -ActorUnkNSSW::ActorUnkNSSW() {} +ActorUnkNSSW::ActorUnkNSSW() : + mUnk_0B0( + G3d_GetUnkPtr(((MapObjectProfile_Derived2 *) data_ov000_020b5d34.GetProfileFromId(MapObjectId_SWSW))->mUnk_20.mUnk_50, + &data_ov032_02121ee4), + true), + mUnk_0BC(0x7), + mUnk_0E0(this), + mUnk_104(this), + mUnk_134(0x0), +#if IS_JP + mUnk_138_jp(this), +#endif + mUnk_138(FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(0.0f)), + mUnk_144(FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(0.0f)), + mUnk_174(0x0), + mUnk_178(0x0), + mUnk_17C(0x0), + mUnk_180(0x1000), + mUnk_184(NULL), + mUnk_188(NULL), + mUnk_18C(0x0), + mUnk_190(FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(0.0f)), + mUnk_19D(false) { + MtxFx33_InitIdentity(&this->mUnk_150); + this->mUnk_40 = &this->mUnk_0E0; +} -void ActorUnkNSSW::func_ov032_0211fefc(void) {} -void ActorUnkNSSW::func_ov032_0211ff10(void) {} -void ActorUnkNSSW::func_ov032_0211ff38(void) {} -void ActorUnkNSSW::func_ov032_02120118(void) {} -void ActorUnkNSSW::func_ov032_02120190(void) {} -void ActorUnkNSSW::func_ov032_0212025c(void) {} -void ActorUnkNSSW::func_ov032_021202d8(void) {} -void ActorUnkNSSW::func_ov032_021203fc(void) {} -void ActorUnkNSSW::func_ov032_0212074c(void) {} -void ActorUnkNSSW::func_ov032_02120880(void) {} -void ActorUnkNSSW::func_ov032_02120894(void) {} -void ActorUnkNSSW::func_ov032_02120b34(void) {} -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(MapObjectUnkSWSW *param1) {} -void ActorUnkNSSW::func_ov032_02120cf0(void) {} -void ActorUnkNSSW::func_ov032_02120d24(void) {} -void ActorUnkNSSW::func_ov032_02120d60(void) {} -void ActorUnkNSSW::func_ov032_02120d7c(void) {} -void ActorUnkNSSW::func_ov032_02120dbc(void) {} -void ActorUnkNSSW::func_ov032_02120df8(void) {} -void ActorUnkNSSW::func_ov032_02120e4c(void) {} +bool ActorUnkNSSW::Init(unk32 param1) { + this->mUnk_104.mUnk_04 = this->mRef; + this->mUnk_0E0.mUnk_1C = 0x1; + this->mUnk_19D = false; -ActorUnkNSSW::~ActorUnkNSSW() {} -ActorProfileUnkNSSW::~ActorProfileUnkNSSW() {} + this->func_ov032_02120894(0x0); + return true; +} + +void ActorUnkNSSW::Update() { + VecFx32Cpp sp10(FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(1.0f)); + VecFx32Cpp sp04(FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(1.0f)); + + func_01ffa7a0(&sp10.vec, &this->mUnk_150, &sp10.vec); + func_01ffa7a0(&sp04.vec, &this->mUnk_150, &sp04.vec); + + fx16 z1 = sp10.vec.z; + fx16 y1 = sp10.vec.y; + + fx16 z2 = sp04.vec.z; + fx16 y2 = sp04.vec.y; + fx16 x2 = sp04.vec.x; + + fx16 x1 = sp10.vec.x; + + VecFx16_Init(x1, y1, z1, (VecFx16 *) &this->mUnk_0E0.mUnk_08); + VecFx16_Init(x2, y2, z2, (VecFx16 *) &this->mUnk_0E0.mUnk_0E); + + this->mUnk_0E0.mUnk_1C = 0x1; + + this->mUnk_190.Reset(); + this->mUnk_19C = false; + + switch (this->mUnk_0BC) { + case 0x0: + MtxFx33_InitYRotation(&this->mUnk_150, SIN(this->mAngle.angle_u), COS(this->mAngle.angle_u)); + func_ov000_0205f8e8(&this->mUnk_174, &this->mUnk_150); + this->func_ov032_02120880(); + break; + + case 0x1: { + this->func_ov032_02120880(); + if (this->mTimer.value <= 0x14) { + break; + } + + UnkStruct_027e0cd8_0C_Base *data = data_027e0cd8->mUnk_0C; + Vec2bCpp sp0; + func_01ffedac(&sp0, &this->mPos); + + switch (data->func_ov000_02080180(&sp0)) { + case 0x09: + case 0x14: + case 0x17: + case 0x28: + case 0x2B: + this->func_ov032_02120894(0x5); + break; + } + + break; + } + case 0x3: + this->func_ov032_02120190(); +#if IS_JP + { + ActorWithBoolAt17F *actor = (ActorWithBoolAt17F *) gpActorManager->func_01fff3b4(this->mUnk_134); + if (actor != NULL) { + actor->mUnk_17F = this->mUnk_19C = true; + } + } +#endif + break; + + case 0x4: + this->func_ov032_02120880(); + this->func_ov032_021203fc(); + break; + + case 0x6: + this->func_ov032_021202d8(); + break; + + default: + break; + } + + this->mTimer.Update(); +#if IS_JP || IS_EUR1 + if (!func_ov000_02080998(&this->mPos)) { + return; + } + + this->func_ov032_02120894(0x5); +#endif +} + +void ActorUnkNSSW::func_ov032_02120118() { + ActorWithMat4x3pAt154 *actor = (ActorWithMat4x3pAt154 *) gpActorManager->func_01fff3b4(this->mUnk_134); + if (actor == NULL) { + return; + } + + CopySingle288(&actor->mUnk_154, &this->mUnk_150); + + MtxFx33 stack; + MtxFx33_InitYRotation(&stack, data_02040964[0], data_02040964[1]); + + func_01ffa60c(&stack, &this->mUnk_150, &this->mUnk_150); + + func_ov000_0205f8e8(&this->mUnk_174, &this->mUnk_150); +} + +void ActorUnkNSSW::func_ov032_02120190() { + UnkActor_ov032_02120190 *actor = (UnkActor_ov032_02120190 *) gpActorManager->func_01fff3b4(this->mUnk_134); + + if (actor == NULL) { + this->func_ov032_02120894(0x6); + return; + } + + VecFx16_Init(FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(0.0f), (VecFx16 *) &this->mUnk_0E0.mUnk_08); + VecFx16_Init(FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(0.0f), (VecFx16 *) &this->mUnk_0E0.mUnk_0E); + VecFx32_Copy(&this->mPos, &this->mPrevPos); + + VecFx32 vec; + VecFx32_Init(FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(-1.0002f), &vec); + + func_01ffa7a0(&vec, &this->mUnk_150, &vec); + + VecFx32_Add(&vec, &actor->mUnk_E8, &vec); + + VecFx32_Copy(&vec, &this->mPos); + + this->func_ov032_02120118(); +} + +// non-matching (ctor of sp0C called before sp0C.mUnk_08.mUnk_00 = NULL) +void ActorUnkNSSW::func_ov032_0212025c() { + UnkStruct_ov031_020e5d18_00 sp14; + sp14.mUnk_00 = NULL; + UnkStruct_ov071_0215f92c sp0C; + sp0C.mUnk_08.mUnk_00 = NULL; + + UnkStruct_ov031_020e5d18_00 *pActor = &sp0C.mUnk_08; + func_01ffe6c4(&pActor->mUnk_00, this->mRef, &this->mPos, &this->mPrevPos, 0x4, &this->mPos, &sp0C); + + this->mUnk_46 = ((Actor *) pActor)->func_ov000_0207e294(this->mUnk_30); + if (this->mUnk_46 & 0x4) { + this->func_ov032_02120894(0x5); + } +} + +void ActorUnkNSSW::func_ov032_021202d8() { + fx32 newY = this->mUnk_144.vec.y - data_ov000_020aecf8; + this->mUnk_1A0 = data_ov000_020aecf8; + this->mUnk_144.vec.y = newY; + + VecFx32_Copy(&this->mPos, &this->mPrevPos); + VecFx32_Add(&this->mPos, &this->mUnk_144.vec, &this->mPos); + + VecFx32 vec = this->mPos; + vec.y += FX_F32_TO_FX32(0.2f); + + fx32 y = data_027e0cd8->mUnk_0C->vfunc_28(&vec, 0x1, 0x0); + if (this->mPos.y <= y) { + Vec2bCpp sp00; + UnkStruct_027e0cd8_0C_Base *data_0C = data_027e0cd8->mUnk_0C; + func_01ffedac(&sp00, &vec); + if (data_0C->func_ov000_02080180(&sp00) == 0x14) { + this->func_ov032_02120894(0x5); + } else { + this->mPos.y = y; + this->mUnk_144.vec.y = FX_F32_TO_FX32(0.0f); + this->func_ov032_02120894(0x1); + } + } + + if (this->mPos.y >= FX_F32_TO_FX32(-5.0002f)) { + return; + } + + this->func_ov032_02120894(0x5); +} + +// non-matching +void ActorUnkNSSW::func_ov032_021203fc() { + /* 90 */ UnkStruct_ov031_020e5d18_00 stack_90; + /* 84 */ VecFx32Cpp stack_84; + /* 78 */ VecFx32Cpp stack_78; + /* 68 */ Cylinder stack_68; + /* 58 */ Cylinder stack_58; + /* 40 */ UnkStruct_ov031_020e5d18_00 stack_40; + /* 34 */ VecFx32Cpp stack_34; + /* 28 */ VecFx32Cpp stack_28; + /* 1C */ VecFx32Cpp stack_1C; + /* 10 */ VecFx32Cpp stack_10; + /* 0C */ u16 stack_0C; + + if (this->mTimer.value < 0x4) { + + this->func_ov032_02120190(); + stack_90.mUnk_00 = NULL; + + UnkStruct_ov031_020e5d18_00 *pActor = &stack_90; + +#if IS_JP + func_01ffe6c4(&pActor->mUnk_00, this->mRef, &this->mPos, &this->mPrevPos, (s16) this->mUnk_44, &this->mPos, + &this->mUnk_138_jp); + ((Actor *) pActor)->func_ov000_0207df88(this->mUnk_30, 0x0A); +#else + func_01ffe6c4(&pActor->mUnk_00, this->mRef, &this->mPos, &this->mPrevPos, (s16) this->mUnk_44, &this->mPos, NULL); + ((Actor *) pActor)->func_ov000_0207df88(this->mUnk_30, 0x10); +#endif + + if (this->mUnk_0BC == 0x0) { + MapObjectUnkSWSW *objectSWSW = this->mUnk_188; + if (objectSWSW == NULL) { + return; + } + + fx32 z = objectSWSW->mPos.z + objectSWSW->mUnk_0EC.vec.z; + fx32 x = objectSWSW->mPos.x + objectSWSW->mUnk_0EC.vec.x; + fx32 y = objectSWSW->mPos.y + objectSWSW->mUnk_0EC.vec.y; + stack_34.vec.x = x; + stack_34.vec.y = y; + stack_34.vec.z = z; + + stack_1C = stack_34; + + VecFx32_Copy(&stack_1C.vec, &this->mPos); + VecFx32_Copy(&stack_1C.vec, &this->mPrevPos); + return; + } + + this->func_ov032_0212025c(); + return; + } + + stack_84 = this->mUnk_138; + stack_84.vec.x = -stack_84.vec.x; + stack_84.vec.y = -stack_84.vec.y; + stack_84.vec.z = -stack_84.vec.z; + + if (!stack_84.TryNormalize()) { + stack_84.vec.y = data_027e0108.y; + stack_84.vec.x = data_027e0108.x; + stack_84.vec.z = data_027e0108.z; + unk16 *ptr = (unk16 *) &stack_0C; + func_01fff17c(ptr, data_027e0ce0, stack_84.vec.z); + func_01ff9638(&stack_84.vec, *ptr); + } + + stack_78.vec.x = stack_84.vec.x; + stack_78.vec.y = FX_F32_TO_FX32(0.0f); + stack_78.vec.z = stack_84.vec.z; + if (!func_ov000_0205f7d4(&stack_58.pos, &data_027e0108, &stack_78.vec)) { + stack_58.Init(FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(1.0f), FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(0.0f)); + } + if (!func_ov000_0205f7d4(&stack_68.pos, &stack_78.vec, &stack_84.vec)) { + stack_68.Init(FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(1.0f)); + } + + func_ov000_0205f6e4(&stack_68.pos, &stack_58.pos); + func_ov000_0205f298(&this->mUnk_174, &stack_68.pos, 0x333); + func_ov000_0205f4fc(&this->mUnk_174, &this->mUnk_150); + VecFx32_Copy(&this->mPos, &this->mPrevPos); + VecFx32_Add(&this->mPos, &this->mUnk_144.vec, &this->mPos); + + stack_40.mUnk_00 = NULL; + UnkStruct_ov031_020e5d18_00 *pActor = &stack_40; + +#if IS_JP + func_01ffe6c4(&pActor->mUnk_00, this->mRef, &this->mPos, &this->mPrevPos, (s16) this->mUnk_44, &this->mPos, + &this->mUnk_138_jp); + ((Actor *) pActor)->func_ov000_0207df88(this->mUnk_30, 0x0A); +#else + func_01ffe6c4(&pActor->mUnk_00, this->mRef, &this->mPos, &this->mPrevPos, (s16) this->mUnk_44, &this->mPos, NULL); + ((Actor *) pActor)->func_ov000_0207df88(this->mUnk_30, 0x10); +#endif + + if (this->mUnk_0BC == 0x0) { + MapObjectUnkSWSW *objectSWSW = this->mUnk_188; + if (objectSWSW == NULL) { + return; + } + + fx32 z = objectSWSW->mPos.z + objectSWSW->mUnk_0EC.vec.z; + fx32 x = objectSWSW->mPos.x + objectSWSW->mUnk_0EC.vec.x; + fx32 y = objectSWSW->mPos.y + objectSWSW->mUnk_0EC.vec.y; + stack_28.vec.x = x; + stack_28.vec.y = y; + stack_28.vec.z = z; + + stack_10 = stack_28; + + VecFx32_Copy(&stack_10.vec, &this->mPos); + VecFx32_Copy(&stack_10.vec, &this->mPrevPos); + return; + } + + VecFx32_Copy(&this->mPos, &this->mUnk_104.mUnk_0C.pos); + this->mUnk_104.mUnk_0C.size = FX_F32_TO_FX32(0.3f); + + data_027e09c0->func_ov000_0207e58c(this->mRef, 0x8, 0x4, &this->mUnk_104); + + this->func_ov032_0212025c(); +} + +void ActorUnkNSSW::vfunc_2C(Actor_vfunc_30 *param1) { + if (!this->Actor::func_01fff5d0(param1, 0x0)) { + return; + } + + unk32 val = data_ov000_020b4ec4.func_01ffc768(0x3); + func_0200ef5c(this->mUnk_0B0.mpModel, val); + func_0200ef9c(this->mUnk_0B0.mpModel, 0x1F); + + VecFx32 sp24; + VecFx32 sp18; + VecFx32 sp0C; + // VecFx32_Add does not match + VecFx32_Init(this->mPos.x + this->mUnk_190.vec.x, this->mPos.y + this->mUnk_190.vec.y, this->mPos.z + this->mUnk_190.vec.z, + &sp0C); + + this->mUnk_0B0.vfunc_14(&this->mUnk_150, &sp0C); + + VecFx32_Init(FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(1.0f), &sp24); + + func_01ffa7a0(&sp24, &this->mUnk_150, &sp24); + fx16 angle = func_01ffbbe0(sp24.x, sp24.z); + + sp18 = this->mPos; + sp24.x = FX_F32_TO_FX32(0.1001f); + sp24.y = FX_F32_TO_FX32(0.0f); + sp24.z = FX_F32_TO_FX32(0.9f); + + sp18.y += FX_F32_TO_FX32(0.2f); + + data_027e09b4->func_ov017_020c08c4(&sp18, sp24.x, sp24.z, 0x1F, angle, 0x1); +} + +void ActorUnkNSSW::func_ov032_02120880() { + this->mUnk_3C = &this->mUnk_0C0; + this->Actor::func_ov000_020989e0(); +} + +// non-matching +// eur,usa: regalloc +// eur1,jp: regalloc + accessing actor in spC +void ActorUnkNSSW::func_ov032_02120894(unk32 param1) { + unk32 oldVal0BC = this->mUnk_0BC; + unk32 newVal1A0 = data_ov000_020aecf8; + this->mUnk_0BC = param1; + this->mTimer.Reset(); + this->mUnk_1A0 = newVal1A0; + + switch (param1) { + case 0x0: + this->mUnk_1A0 = 0x0; + this->mUnk_18C = 0x0; + break; + + case 0x1: + this->mUnk_1A0 = 0x0; + break; + + case 0x2: + this->mUnk_1A0 = 0x0; + break; + + case 0x3: + this->mUnk_1A0 = 0x0; + + if (this->mUnk_188 != NULL && this == this->mUnk_188->mUnk_114) { + this->mUnk_188->vfunc_38(); + } + + func_ov000_0205f8e8(&this->mUnk_174, &this->mUnk_150); + break; + + case 0x4: + this->mUnk_138.CopyIn(&this->mUnk_144); + *(s16 *) &this->mUnk_44 &= ~0x20; + this->mUnk_1A0 = 0x0; + break; + + case 0x5: + this->mUnk_1A0 = 0x0; + if (oldVal0BC == 0x5) { + break; + } + + if (this->mUnk_184 != NULL) { + this->mUnk_184->func_ov032_02121b90(); + } + + if (this->mUnk_19D == 0x0) { + data_027e0cec->func_ov000_0209feac(0x0822, &this->mPos, 0x2, 0x0, 0x0); + data_027e0cec->func_ov000_0209feac(0xD09C, &this->mPos, 0x2, 0x0, 0x0); + data_027e0cec->func_ov000_0209feac(0xD09D, &this->mPos, 0x2, 0x0, 0x0); + data_027e0cec->func_ov000_0209feac(0xD09E, &this->mPos, 0x2, 0x0, 0x0); + data_027e0cec->func_ov000_0209feac(0xD09F, &this->mPos, 0x2, 0x0, 0x0); + data_027e0cec->func_ov000_0209feac(0xD0A0, &this->mPos, 0x2, 0x0, 0x0); + data_027e09a8->func_ov000_02071b30(0x9927, &this->mPos, 0x0); + } + + this->Actor::func_ov000_020984d0(); + break; + + case 0x6: { + this->mUnk_144.Reset(); + VecFx32 vec; + VecFx32_Init(FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(1.0f), &vec); + + func_01ffa7a0(&vec, &this->mUnk_150, &vec); + + u16 angle = (u16) (s16) func_01ffbbe0(vec.x, vec.z); + + MtxFx33_InitYRotation(&this->mUnk_150, SIN(angle), COS(angle)); + + *(s16 *) &this->mUnk_44 &= ~0x20; + +#if IS_JP || IS_EUR1 + UnkStruct_ov031_020e5d18_00 spC; + spC.mUnk_00 = NULL; + VecFx32 *vec2 = this->Actor::func_ov000_0209853c(0x0); + + UnkStruct_ov031_020e5d18_00 *pActor = &spC; + func_01ffe6c4(&pActor->mUnk_00, this->mRef, &this->mPos, vec2, (s16) this->mUnk_44, &this->mPos, NULL); + + ((Actor *) pActor)->func_ov000_0207df88(this->mUnk_30, 0x10); + + ((Actor *) pActor)->func_ov000_0207e294(this->mUnk_30); +#endif + break; + } + + default: + break; + } +} + +void ActorUnkNSSW::func_ov032_02120b34(RefStruct ref) { + if (this->mUnk_0BC == 0x3) { + return; + } + this->mUnk_134 = ref; + this->func_ov032_02120894(0x2); +} + +void ActorUnkNSSW::func_ov032_02120b6c() { + this->func_ov032_02120894(0x3); +} + +void ActorUnkNSSW::func_ov032_02120b7c(VecFx32 *param1) { + fx32 x = param1->x; + fx32 y = param1->y; + fx32 z = param1->z; + this->mUnk_138.Set(x, y, z); + + if (x == FX_F32_TO_FX32(0.0f) && y == FX_F32_TO_FX32(0.0f) && z == FX_F32_TO_FX32(0.0f)) { + this->func_ov032_02120894(0x6); + return; + } + this->func_ov032_02120894(0x4); +} + +void ActorUnkNSSW::func_ov032_02120bc0() { + if (this->mUnk_188 != NULL && this == this->mUnk_188->mUnk_114) { + this->mUnk_188->vfunc_38(); + } + + this->func_ov032_02120894(0x6); +} + +void ActorUnkNSSW::func_ov032_02120bfc(Actor *actor) { +#if IS_EUR1 + if (this->mUnk_0BC != 0x4) { + return; + } +#endif + + this->mUnk_19D = true; + + if (actor != NULL) { + switch (actor->GetActorId()) { + case ActorId_RCMS: + this->mUnk_19D = false; + break; + case ActorId_RCHU: + if (((ActorUnkRCHU *) actor)->mUnk_268 != 0x0) { + this->mUnk_19D = false; + } + break; +#if IS_JP + case ActorId_NSSW: + case ActorId_FRTN: + this->mUnk_19D = false; + break; +#endif + default: + break; + } + } + + this->func_ov032_02120894(0x5); +} + +#if IS_JP +void ActorUnkNSSW::func_ov032_02122b0c(MapObject *mapObject) { + if (mapObject == NULL) { + return; + } + + MapObjectId id = mapObject->GetMapObjectId(); + // Weird branching, I think that there is a better way + if (id <= MapObjectId_FSPS) { + if (id < MapObjectId_FSPS && id != MapObjectId_FLSP) { + return; + } + } else if (id > MapObjectId_GTTN || id != MapObjectId_GTTN) { + return; + } + this->mUnk_19D = false; + this->func_ov032_02120894(0x5); +} +#endif + +// non-matching +void ActorUnkNSSW::func_ov032_02120c64(MapObjectUnkSWSW *param1) { + if (this->mUnk_0BC != 0x4) { + return; + } + + VecFx32 vec = param1->mPos; + VecFx32_Copy(&vec, &this->mPrevPos); + VecFx32_Copy(&vec, &this->mPos); // non-matching + + this->mUnk_18C = 0x0; + MtxFx33_InitIdentity(&this->mUnk_150); + + this->mUnk_138.Reset(); + + this->func_ov032_02120894(0x0); + this->mUnk_188 = param1; +} + +ActorUnkNSSW_0E0::ActorUnkNSSW_0E0(ActorUnkNSSW *actor) : + Actor_C4(actor, 0x1) { + this->mUnk_20 = actor; + this->mUnk_04 = 0x1; +} + +bool ActorUnkNSSW_0E0::vfunc_00(RefStruct ref, unk32 param2) { + if (param2 != 0x0) { + ActorUnkNSSW *actor = this->GetActorPtr(); + actor->func_ov032_02120b34(ref); + } + + return this->Actor_C4::vfunc_00(ref, param2); +} + +bool ActorUnkNSSW_0E0::vfunc_04() { + this->GetActorPtr()->func_ov032_02120b6c(); + + return this->Actor_C4::vfunc_04(); +} + +void ActorUnkNSSW_0E0::vfunc_0C(VecFx32 *param1) { + if (VecFx32_Length(param1) < FX_F32_TO_FX32(0.01f)) { + this->GetActorPtr()->func_ov032_02120bc0(); + } else { + this->GetActorPtr()->func_ov032_02120b7c(param1); + } + + return this->Actor_C4::vfunc_0C(param1); +} + +ActorUnkNSSW_104::ActorUnkNSSW_104(ActorUnkNSSW *actor) : + mUnk_2C(actor) {} + +void ActorUnkNSSW_104::vfunc_10(Actor *actor) { + this->mUnk_2C->func_ov032_02120bfc(actor); +} + +#if IS_JP +// non-matching +bool ActorUnkNSSW_138::vfunc_0C(RefStruct ref, UnkStruct_ov031_020e54d4 *param2, const VecFx32 *param3, + const VecFx32 *param4) { + + if ((s32) ref.moRef.unk_00_u16 & 0x1000) { + Vec2bCpp vec(0, 0); + MapObject *mapObject = gpMapObjManager->func_01fff498(vec); + + if (mapObject != NULL) { + this->mUnk_08->func_ov032_02122b0c(mapObject); + } + } + + this->UnkStruct_027e0ce0_38_Base::vfunc_0C(ref, param2, param3, param4); +} +#endif diff --git a/src/032_MapA1/MapObject/MapObjectUnkSWSW.cpp b/src/032_MapA1/MapObject/MapObjectUnkSWSW.cpp index 24ba6f6e..446ff574 100644 --- a/src/032_MapA1/MapObject/MapObjectUnkSWSW.cpp +++ b/src/032_MapA1/MapObject/MapObjectUnkSWSW.cpp @@ -398,13 +398,13 @@ 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(); + if (this->mUnk_114->mUnk_184 != NULL && this != this->mUnk_114->mUnk_184) { + this->mUnk_114->mUnk_184->func_ov032_02121b90(); } - this->mUnk_0F8 = this->mUnk_114; - this->mUnk_114->mUnk_184_eur = this; - this->mUnk_0F8->mUnk_188_eur = this; + this->mUnk_0F8 = this->mUnk_114; + this->mUnk_114->mUnk_184 = this; + this->mUnk_0F8->mUnk_188 = this; this->vfunc_3C(0x0); return; @@ -501,8 +501,8 @@ ActorUnkNSSW *MapObjectUnkSWSW::func_ov032_02121dc8(VecFx32 *param1) { ActorUnkNSSW *actor = (ActorUnkNSSW *) gpActorManager->func_01fff3b4(unk.ref); - actor->mUnk_184_eur = this; - actor->mUnk_188_eur = this; + actor->mUnk_184 = this; + actor->mUnk_188 = this; return actor; }