diff --git a/config/eur/arm9/dtcm/symbols.txt b/config/eur/arm9/dtcm/symbols.txt index 658e9696..79f949b6 100644 --- a/config/eur/arm9/dtcm/symbols.txt +++ b/config/eur/arm9/dtcm/symbols.txt @@ -107,7 +107,7 @@ data_027e0ccc kind:bss addr:0x027e0ccc data_027e0cd8 kind:bss addr:0x027e0cd8 data_027e0cdc kind:bss addr:0x027e0cdc data_027e0ce0 kind:bss addr:0x027e0ce0 -data_027e0ce4 kind:bss addr:0x027e0ce4 +gActorManager kind:bss addr:0x027e0ce4 data_027e0ce8 kind:bss addr:0x027e0ce8 data_027e0cec kind:bss addr:0x027e0cec data_027e0cf0 kind:bss addr:0x027e0cf0 diff --git a/config/eur/arm9/itcm/symbols.txt b/config/eur/arm9/itcm/symbols.txt index 0b93935e..7df4f45a 100644 --- a/config/eur/arm9/itcm/symbols.txt +++ b/config/eur/arm9/itcm/symbols.txt @@ -200,7 +200,7 @@ func_01fff2a8 kind:function(arm,size=0x24) addr:0x01fff2a8 func_01fff2cc kind:function(arm,size=0x30) addr:0x01fff2cc func_01fff2fc kind:function(arm,size=0x54) addr:0x01fff2fc func_01fff350 kind:function(arm,size=0x64) addr:0x01fff350 -_ZN18UnkStruct_027e0ce413func_01fff3b4Ei kind:function(arm,size=0x8c) addr:0x01fff3b4 +_ZN12ActorManager13func_01fff3b4Ei kind:function(arm,size=0x8c) addr:0x01fff3b4 func_01fff440 kind:function(arm,size=0x18) addr:0x01fff440 func_01fff458 kind:function(arm,size=0xc) addr:0x01fff458 _ZN5Actor8vfunc_10Ev kind:function(arm,size=0x34) addr:0x01fff464 diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index ce43b158..0cd78ba5 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -2263,7 +2263,7 @@ func_ov000_020975c0 kind:function(arm,size=0x1c) addr:0x020975c0 func_ov000_020975dc kind:function(arm,size=0x1c) addr:0x020975dc _ZN8Actor_5c19func_ov000_020975f8Ev kind:function(arm,size=0x78) addr:0x020975f8 func_ov000_02097670 kind:function(arm,size=0xc) addr:0x02097670 -_ZN23ActorUnk_ov000_0209767cC2Ej kind:function(arm,size=0xa8) addr:0x0209767c +_ZN9ActorTypeC2Ej kind:function(arm,size=0xa8) addr:0x0209767c func_ov000_02097724 kind:function(arm,size=0x28) addr:0x02097724 func_ov000_0209774c kind:function(arm,size=0x8) addr:0x0209774c func_ov000_02097754 kind:function(arm,size=0x7c) addr:0x02097754 diff --git a/config/eur/arm9/overlays/ov001/delinks.txt b/config/eur/arm9/overlays/ov001/delinks.txt index cf74250f..690f78b2 100644 --- a/config/eur/arm9/overlays/ov001/delinks.txt +++ b/config/eur/arm9/overlays/ov001/delinks.txt @@ -5,3 +5,5 @@ .data start:0x020c2940 end:0x020c2fe0 kind:data align:32 .bss start:0x020c2fe0 end:0x020c4720 kind:bss align:32 +src/001_SceneInit/Actor/ActorManager_001.cpp: + .text start:0x020baf64 end:0x020bb87c diff --git a/config/eur/arm9/overlays/ov001/symbols.txt b/config/eur/arm9/overlays/ov001/symbols.txt index ace32345..a39741c4 100644 --- a/config/eur/arm9/overlays/ov001/symbols.txt +++ b/config/eur/arm9/overlays/ov001/symbols.txt @@ -173,23 +173,23 @@ func_ov001_020baea0 kind:function(thumb,size=0x88) addr:0x020baea0 func_ov001_020baf28 kind:function(thumb,size=0x22) addr:0x020baf28 func_ov001_020baf4c kind:function(thumb,size=0xc) addr:0x020baf4c func_ov001_020baf58 kind:function(thumb,size=0xc) addr:0x020baf58 -func_ov001_020baf64 kind:function(thumb,size=0x16) addr:0x020baf64 -func_ov001_020baf7c kind:function(thumb,size=0x46) addr:0x020baf7c -func_ov001_020bafc4 kind:function(thumb,size=0x18) addr:0x020bafc4 -func_ov001_020bafdc kind:function(thumb,size=0x3c) addr:0x020bafdc -func_ov001_020bb018 kind:function(thumb,size=0x3fc) addr:0x020bb018 -func_ov001_020bb414 kind:function(thumb,size=0x74) addr:0x020bb414 -func_ov001_020bb488 kind:function(thumb,size=0xc0) addr:0x020bb488 -func_ov001_020bb548 kind:function(thumb,size=0xe8) addr:0x020bb548 -func_ov001_020bb630 kind:function(thumb,size=0x80) addr:0x020bb630 -func_ov001_020bb6b0 kind:function(thumb,size=0x78) addr:0x020bb6b0 -func_ov001_020bb728 kind:function(thumb,size=0x88) addr:0x020bb728 -func_ov001_020bb7b0 kind:function(thumb,size=0x40) addr:0x020bb7b0 -func_ov001_020bb7f0 kind:function(thumb,size=0x34) addr:0x020bb7f0 -func_ov001_020bb824 kind:function(thumb,size=0x20) addr:0x020bb824 -func_ov001_020bb844 kind:function(thumb,size=0x20) addr:0x020bb844 -func_ov001_020bb864 kind:function(thumb,size=0xc) addr:0x020bb864 -func_ov001_020bb870 kind:function(thumb,size=0xc) addr:0x020bb870 +_ZN12ActorManager6CreateEv kind:function(thumb,size=0x16) addr:0x020baf64 +_ZN12ActorManagerC1Ev kind:function(thumb,size=0x46) addr:0x020baf7c +_ZN12ActorManagerD1Ev kind:function(thumb,size=0x18) addr:0x020bafc4 +_ZN12ActorManager19func_ov001_020bafdcEv kind:function(thumb,size=0x3c) addr:0x020bafdc +_ZN12ActorManager19func_ov001_020bb018Ei kind:function(thumb,size=0x3fc) addr:0x020bb018 +_ZN12ActorManager19func_ov001_020bb414Ev kind:function(thumb,size=0x74) addr:0x020bb414 +_ZN12ActorManager19func_ov001_020bb488Ev kind:function(thumb,size=0xc0) addr:0x020bb488 +_ZN12ActorManager19func_ov001_020bb548Ev kind:function(thumb,size=0xe8) addr:0x020bb548 +_ZN12ActorManager19func_ov001_020bb630Ev kind:function(thumb,size=0x80) addr:0x020bb630 +_ZN12ActorManager19func_ov001_020bb6b0EPi kind:function(thumb,size=0x78) addr:0x020bb6b0 +_ZN12ActorManager19func_ov001_020bb728Ei kind:function(thumb,size=0x88) addr:0x020bb728 +_ZN12ActorManager19func_ov001_020bb7b0Ei kind:function(thumb,size=0x40) addr:0x020bb7b0 +_ZN12ActorManager19func_ov001_020bb7f0Ev kind:function(thumb,size=0x34) addr:0x020bb7f0 +_ZN12ActorManager19func_ov001_020bb824Ev kind:function(thumb,size=0x20) addr:0x020bb824 +_ZN12ActorManager19func_ov001_020bb844Ev kind:function(thumb,size=0x20) addr:0x020bb844 +_ZN12ActorManager11SetInstanceEPS_ kind:function(thumb,size=0xc) addr:0x020bb864 +_ZN12ActorManager13ClearInstanceEv kind:function(thumb,size=0xc) addr:0x020bb870 func_ov001_020bb87c kind:function(thumb,size=0x3c) addr:0x020bb87c func_ov001_020bb8b8 kind:function(thumb,size=0x2) addr:0x020bb8b8 func_ov001_020bb8bc kind:function(thumb,size=0x13c) addr:0x020bb8bc diff --git a/config/eur/arm9/overlays/ov031/symbols.txt b/config/eur/arm9/overlays/ov031/symbols.txt index b9fbb157..bcaba9cb 100644 --- a/config/eur/arm9/overlays/ov031/symbols.txt +++ b/config/eur/arm9/overlays/ov031/symbols.txt @@ -556,9 +556,9 @@ func_ov031_020e8c08 kind:function(arm,size=0x44) addr:0x020e8c08 func_ov031_020e8c4c kind:function(arm,size=0x28) addr:0x020e8c4c func_ov031_020e8c74 kind:function(arm,size=0x30) addr:0x020e8c74 func_ov031_020e8ca4 kind:function(arm,size=0x14) addr:0x020e8ca4 -_ZN10ActorRupee19func_ov031_020e8cb8Ev kind:function(arm,size=0xc) addr:0x020e8cb8 -_ZN14ActorRupeeBase6CreateEv kind:function(arm,size=0x24) addr:0x020e8cc4 -_ZN14ActorRupeeBaseC1Ev kind:function(arm,size=0x44) addr:0x020e8ce8 +_ZN14ActorTypeRupee11GetInstanceEv kind:function(arm,size=0xc) addr:0x020e8cb8 +_ZN14ActorTypeRupee6CreateEv kind:function(arm,size=0x24) addr:0x020e8cc4 +_ZN14ActorTypeRupeeC1Ev kind:function(arm,size=0x44) addr:0x020e8ce8 _ZN10ActorRupee19func_ov031_020e8d2cEv kind:function(arm,size=0x7c) addr:0x020e8d2c _ZN10ActorRupeeC1Ev kind:function(arm,size=0x74) addr:0x020e8da8 _ZN10ActorRupee8vfunc_18Ev kind:function(arm,size=0x1d0) addr:0x020e8e1c @@ -2290,7 +2290,7 @@ data_ov031_02113414 kind:data(any) addr:0x02113414 data_ov031_02113468 kind:data(any) addr:0x02113468 data_ov031_02113478 kind:data(any) addr:0x02113478 _ZTV8Actor_c4 kind:data(any) addr:0x02113488 -_ZTV14ActorRupeeBase kind:data(any) addr:0x021134a0 +_ZTV14ActorTypeRupee kind:data(any) addr:0x021134a0 _ZTV10ActorRupee kind:data(any) addr:0x021134c4 data_ov031_02113520 kind:data(any) addr:0x02113520 data_ov031_02113588 kind:data(any) addr:0x02113588 @@ -2552,7 +2552,7 @@ data_ov031_021165f0 kind:bss addr:0x021165f0 ambiguous data_ov031_021166b8 kind:bss addr:0x021166b8 data_ov031_021166d8 kind:bss addr:0x021166d8 data_ov031_021166dc kind:bss addr:0x021166dc -data_ov031_021166e8 kind:bss addr:0x021166e8 +_ZN14ActorTypeRupee9gInstanceE kind:bss addr:0x021166e8 data_ov031_02116724 kind:bss addr:0x02116724 data_ov031_0211672c kind:bss addr:0x0211672c data_ov031_02116738 kind:bss addr:0x02116738 diff --git a/config/jp/arm9/dtcm/symbols.txt b/config/jp/arm9/dtcm/symbols.txt index 658e9696..79f949b6 100644 --- a/config/jp/arm9/dtcm/symbols.txt +++ b/config/jp/arm9/dtcm/symbols.txt @@ -107,7 +107,7 @@ data_027e0ccc kind:bss addr:0x027e0ccc data_027e0cd8 kind:bss addr:0x027e0cd8 data_027e0cdc kind:bss addr:0x027e0cdc data_027e0ce0 kind:bss addr:0x027e0ce0 -data_027e0ce4 kind:bss addr:0x027e0ce4 +gActorManager kind:bss addr:0x027e0ce4 data_027e0ce8 kind:bss addr:0x027e0ce8 data_027e0cec kind:bss addr:0x027e0cec data_027e0cf0 kind:bss addr:0x027e0cf0 diff --git a/config/jp/arm9/itcm/symbols.txt b/config/jp/arm9/itcm/symbols.txt index 0b93935e..7df4f45a 100644 --- a/config/jp/arm9/itcm/symbols.txt +++ b/config/jp/arm9/itcm/symbols.txt @@ -200,7 +200,7 @@ func_01fff2a8 kind:function(arm,size=0x24) addr:0x01fff2a8 func_01fff2cc kind:function(arm,size=0x30) addr:0x01fff2cc func_01fff2fc kind:function(arm,size=0x54) addr:0x01fff2fc func_01fff350 kind:function(arm,size=0x64) addr:0x01fff350 -_ZN18UnkStruct_027e0ce413func_01fff3b4Ei kind:function(arm,size=0x8c) addr:0x01fff3b4 +_ZN12ActorManager13func_01fff3b4Ei kind:function(arm,size=0x8c) addr:0x01fff3b4 func_01fff440 kind:function(arm,size=0x18) addr:0x01fff440 func_01fff458 kind:function(arm,size=0xc) addr:0x01fff458 _ZN5Actor8vfunc_10Ev kind:function(arm,size=0x34) addr:0x01fff464 diff --git a/config/jp/arm9/overlays/ov000/symbols.txt b/config/jp/arm9/overlays/ov000/symbols.txt index 9a523618..e3d06c2a 100644 --- a/config/jp/arm9/overlays/ov000/symbols.txt +++ b/config/jp/arm9/overlays/ov000/symbols.txt @@ -2260,7 +2260,7 @@ func_ov000_02098cfc kind:function(arm,size=0x78) addr:0x02098cfc func_ov000_02098d74 kind:function(arm,size=0x1c) addr:0x02098d74 func_ov000_02098d90 kind:function(arm,size=0x1c) addr:0x02098d90 _ZN8Actor_5c19func_ov000_020975f8Ev kind:function(arm,size=0x78) addr:0x02098dac -_ZN23ActorUnk_ov000_0209767cC2Ej kind:function(arm,size=0xa8) addr:0x02098e24 +_ZN9ActorTypeC2Ej kind:function(arm,size=0xa8) addr:0x02098e24 func_ov000_02098ecc kind:function(arm,size=0x28) addr:0x02098ecc func_ov000_02098ef4 kind:function(arm,size=0x8) addr:0x02098ef4 func_ov000_02098efc kind:function(arm,size=0x7c) addr:0x02098efc diff --git a/config/jp/arm9/overlays/ov001/delinks.txt b/config/jp/arm9/overlays/ov001/delinks.txt index 35e5c05b..ed52e679 100644 --- a/config/jp/arm9/overlays/ov001/delinks.txt +++ b/config/jp/arm9/overlays/ov001/delinks.txt @@ -5,3 +5,5 @@ .data start:0x020c4180 end:0x020c4820 kind:data align:32 .bss start:0x020c4820 end:0x020c5f60 kind:bss align:32 +src/001_SceneInit/Actor/ActorManager_001.cpp: + .text start:0x020bc7ac end:0x020bd0c4 diff --git a/config/jp/arm9/overlays/ov001/symbols.txt b/config/jp/arm9/overlays/ov001/symbols.txt index 8e0e66ab..d9fb108e 100644 --- a/config/jp/arm9/overlays/ov001/symbols.txt +++ b/config/jp/arm9/overlays/ov001/symbols.txt @@ -173,23 +173,23 @@ func_ov001_020bc6e8 kind:function(thumb,size=0x88) addr:0x020bc6e8 func_ov001_020bc770 kind:function(thumb,size=0x22) addr:0x020bc770 func_ov001_020bc794 kind:function(thumb,size=0xc) addr:0x020bc794 func_ov001_020bc7a0 kind:function(thumb,size=0xc) addr:0x020bc7a0 -func_ov001_020bc7ac kind:function(thumb,size=0x16) addr:0x020bc7ac -func_ov001_020bc7c4 kind:function(thumb,size=0x46) addr:0x020bc7c4 -func_ov001_020bc80c kind:function(thumb,size=0x18) addr:0x020bc80c -func_ov001_020bc824 kind:function(thumb,size=0x3c) addr:0x020bc824 -func_ov001_020bc860 kind:function(thumb,size=0x3fc) addr:0x020bc860 -func_ov001_020bcc5c kind:function(thumb,size=0x74) addr:0x020bcc5c -func_ov001_020bccd0 kind:function(thumb,size=0xc0) addr:0x020bccd0 -func_ov001_020bcd90 kind:function(thumb,size=0xe8) addr:0x020bcd90 -func_ov001_020bce78 kind:function(thumb,size=0x80) addr:0x020bce78 -func_ov001_020bcef8 kind:function(thumb,size=0x78) addr:0x020bcef8 -func_ov001_020bcf70 kind:function(thumb,size=0x88) addr:0x020bcf70 -func_ov001_020bcff8 kind:function(thumb,size=0x40) addr:0x020bcff8 -func_ov001_020bd038 kind:function(thumb,size=0x34) addr:0x020bd038 -func_ov001_020bd06c kind:function(thumb,size=0x20) addr:0x020bd06c -func_ov001_020bd08c kind:function(thumb,size=0x20) addr:0x020bd08c -func_ov001_020bd0ac kind:function(thumb,size=0xc) addr:0x020bd0ac -func_ov001_020bd0b8 kind:function(thumb,size=0xc) addr:0x020bd0b8 +_ZN12ActorManager6CreateEv kind:function(thumb,size=0x16) addr:0x020bc7ac +_ZN12ActorManagerC1Ev kind:function(thumb,size=0x46) addr:0x020bc7c4 +_ZN12ActorManagerD1Ev kind:function(thumb,size=0x18) addr:0x020bc80c +_ZN12ActorManager19func_ov001_020bafdcEv kind:function(thumb,size=0x3c) addr:0x020bc824 +_ZN12ActorManager19func_ov001_020bb018Ei kind:function(thumb,size=0x3fc) addr:0x020bc860 +_ZN12ActorManager19func_ov001_020bb414Ev kind:function(thumb,size=0x74) addr:0x020bcc5c +_ZN12ActorManager19func_ov001_020bb488Ev kind:function(thumb,size=0xc0) addr:0x020bccd0 +_ZN12ActorManager19func_ov001_020bb548Ev kind:function(thumb,size=0xe8) addr:0x020bcd90 +_ZN12ActorManager19func_ov001_020bb630Ev kind:function(thumb,size=0x80) addr:0x020bce78 +_ZN12ActorManager19func_ov001_020bb6b0EPi kind:function(thumb,size=0x78) addr:0x020bcef8 +_ZN12ActorManager19func_ov001_020bb728Ei kind:function(thumb,size=0x88) addr:0x020bcf70 +_ZN12ActorManager19func_ov001_020bb7b0Ei kind:function(thumb,size=0x40) addr:0x020bcff8 +_ZN12ActorManager19func_ov001_020bb7f0Ev kind:function(thumb,size=0x34) addr:0x020bd038 +_ZN12ActorManager19func_ov001_020bb824Ev kind:function(thumb,size=0x20) addr:0x020bd06c +_ZN12ActorManager19func_ov001_020bb844Ev kind:function(thumb,size=0x20) addr:0x020bd08c +_ZN12ActorManager11SetInstanceEPS_ kind:function(thumb,size=0xc) addr:0x020bd0ac +_ZN12ActorManager13ClearInstanceEv kind:function(thumb,size=0xc) addr:0x020bd0b8 func_ov001_020bd0c4 kind:function(thumb,size=0x3c) addr:0x020bd0c4 func_ov001_020bd100 kind:function(thumb,size=0x2) addr:0x020bd100 func_ov001_020bd104 kind:function(thumb,size=0x13c) addr:0x020bd104 diff --git a/config/jp/arm9/overlays/ov031/symbols.txt b/config/jp/arm9/overlays/ov031/symbols.txt index 792d47dd..e3974f46 100644 --- a/config/jp/arm9/overlays/ov031/symbols.txt +++ b/config/jp/arm9/overlays/ov031/symbols.txt @@ -554,9 +554,9 @@ func_ov031_020ea5f4 kind:function(arm,size=0x44) addr:0x020ea5f4 func_ov031_020ea638 kind:function(arm,size=0x28) addr:0x020ea638 func_ov031_020ea660 kind:function(arm,size=0x30) addr:0x020ea660 func_ov031_020ea690 kind:function(arm,size=0x14) addr:0x020ea690 -_ZN10ActorRupee19func_ov031_020e8cb8Ev kind:function(arm,size=0xc) addr:0x020ea6a4 -_ZN14ActorRupeeBase6CreateEv kind:function(arm,size=0x24) addr:0x020ea6b0 -_ZN14ActorRupeeBaseC1Ev kind:function(arm,size=0x44) addr:0x020ea6d4 +_ZN14ActorTypeRupee11GetInstanceEv kind:function(arm,size=0xc) addr:0x020ea6a4 +_ZN14ActorTypeRupee6CreateEv kind:function(arm,size=0x24) addr:0x020ea6b0 +_ZN14ActorTypeRupeeC1Ev kind:function(arm,size=0x44) addr:0x020ea6d4 _ZN10ActorRupee19func_ov031_020e8d2cEv kind:function(arm,size=0x7c) addr:0x020ea718 _ZN10ActorRupeeC1Ev kind:function(arm,size=0x74) addr:0x020ea794 _ZN10ActorRupee8vfunc_18Ev kind:function(arm,size=0x1d0) addr:0x020ea808 @@ -2264,7 +2264,7 @@ data_ov031_021151b4 kind:data(any) addr:0x021151b4 data_ov031_02115208 kind:data(any) addr:0x02115208 data_ov031_02115218 kind:data(any) addr:0x02115218 _ZTV8Actor_c4 kind:data(any) addr:0x02115228 -_ZTV14ActorRupeeBase kind:data(any) addr:0x02115240 +_ZTV14ActorTypeRupee kind:data(any) addr:0x02115240 _ZTV10ActorRupee kind:data(any) addr:0x02115264 data_ov031_021152c0 kind:data(any) addr:0x021152c0 data_ov031_02115328 kind:data(any) addr:0x02115328 @@ -2524,7 +2524,7 @@ data_ov031_02118380 kind:bss addr:0x02118380 data_ov031_02118458 kind:bss addr:0x02118458 data_ov031_02118478 kind:bss addr:0x02118478 data_ov031_0211847c kind:bss addr:0x0211847c -data_ov031_021166e8 kind:bss addr:0x02118488 +_ZN14ActorTypeRupee9gInstanceE kind:bss addr:0x02118488 data_ov031_021184c4 kind:bss addr:0x021184c4 data_ov031_021184cc kind:bss addr:0x021184cc data_ov031_021184d8 kind:bss addr:0x021184d8 diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp index 6dc2a5fe..0c8758f3 100644 --- a/include/Actor/Actor.hpp +++ b/include/Actor/Actor.hpp @@ -1,6 +1,7 @@ #pragma once #include "Actor/ActorId.hpp" +#include "Actor/ActorType.hpp" #include "System/SysNew.hpp" #include "global.h" #include "nitro/math.h" @@ -39,12 +40,40 @@ public: void func_02028cdc(Actor_5c *param1, unk32 param2); }; -class Actor_34 { -public: - /* 00 */ unk32 mUnk_00; - /* 00 */ unk32 mUnk_04; - /* 00 */ unk32 mUnk_08; - /* 00 */ unk32 mUnk_0c; +typedef u32 ActorFlags; +enum ActorFlag_ { + ActorFlag_Alive, + ActorFlag_Visible, + ActorFlag_2, + ActorFlag_Active, // stops updating if false + ActorFlag_4, + ActorFlag_5, + ActorFlag_6, + ActorFlag_7, + ActorFlag_8, + ActorFlag_9, + ActorFlag_Interacting, // set when player interacts with actor + ActorFlag_11, + ActorFlag_12, + ActorFlag_13, + ActorFlag_14, + ActorFlag_15, + ActorFlag_16, + ActorFlag_17, + ActorFlag_18, + ActorFlag_19, + ActorFlag_20, + ActorFlag_21, + ActorFlag_22, + ActorFlag_23, + ActorFlag_24, + ActorFlag_25, + ActorFlag_26, + ActorFlag_27, + ActorFlag_28, + ActorFlag_29, + ActorFlag_30, + ActorFlag_31, }; class Actor : public SysObject { @@ -57,7 +86,7 @@ public: /* 2a */ unk16 mUnk_2a; /* 2c */ unk32 mUnk_2c; // gravity? /* 30 */ unk32 *mUnk_30; - /* 34 */ Actor_34 *mUnk_34; + /* 34 */ ActorTypeData *mUnk_34; /* 38 */ unk32 *mUnk_38; /* 3c */ unk32 mUnk_3c; /* 40 */ void *mUnk_40; // pointer to `Actor_c4` @@ -71,7 +100,7 @@ public: /* 50 */ volatile u16 mUnk_50; /* 52 */ u16 mUnk_52; /* 54 */ unk32 mUnk_54; - /* 58 */ unk32 mUnk_58; + /* 58 */ ActorFlags mFlags; /* 5c */ Actor_5c mUnk_5c; /* 6c */ u16 mUnk_6c; // actor user id? /* 6e */ u16 mUnk_6e; diff --git a/include/Actor/ActorId.hpp b/include/Actor/ActorId.hpp index 1ac82893..f05b18d9 100644 --- a/include/Actor/ActorId.hpp +++ b/include/Actor/ActorId.hpp @@ -2,529 +2,8 @@ #include "types.h" -typedef u32 ActorId; -enum ActorId_ { - ActorId_AJAI = 'AJAI', - ActorId_AJBS = 'AJBS', - ActorId_AJCR = 'AJCR', - ActorId_AJEM = 'AJEM', - ActorId_AJET = 'AJET', - ActorId_AJMN = 'AJMN', - ActorId_AJNP = 'AJNP', - ActorId_AJSP = 'AJSP', - ActorId_AJTM = 'AJTM', - ActorId_ALEV = 'ALEV', - ActorId_AROW = 'AROW', - ActorId_ASBA = 'ASBA', - ActorId_ASYU = 'ASYU', - ActorId_ATTG = 'ATTG', - ActorId_BAEY = 'BAEY', - ActorId_BAFO = 'BAFO', - ActorId_BANI = 'BANI', - ActorId_BAPH = 'BAPH', - ActorId_BBLE = 'BBLE', - ActorId_BDBA = 'BDBA', - ActorId_BDEA = 'BDEA', - ActorId_BDEM = 'BDEM', - ActorId_BDGA = 'BDGA', - ActorId_BDLB = 'BDLB', - ActorId_TreasureBee = 'BEEE', - ActorId_BeeHive = 'BEEH', - ActorId_BFFN = 'BFFN', - ActorId_BGOK = 'BGOK', - ActorId_BKST = 'BKST', - ActorId_BLBL = 'BLBL', - ActorId_BLBR = 'BLBR', - ActorId_BLJF = 'BLJF', - ActorId_BLON = 'BLON', - ActorId_BLST = 'BLST', - ActorId_BMHN = 'BMHN', - ActorId_BMOC = 'BMOC', - ActorId_BOMB = 'BOMB', - ActorId_BPAP = 'BPAP', - ActorId_BPBS = 'BPBS', - ActorId_BROW = 'BROW', - ActorId_BSFC = 'BSFC', - ActorId_BSKM = 'BSKM', - ActorId_BSTG = 'BSTG', - ActorId_BTIR = 'BTIR', - ActorId_CAGE = 'CAGE', - ActorId_CAMA = 'CAMA', - ActorId_CAMB = 'CAMB', - ActorId_CAMS = 'CAMS', - ActorId_CAMY = 'CAMY', - ActorId_CANS = 'CANS', - ActorId_CASE = 'CASE', - ActorId_CASL = 'CASL', - ActorId_CAST = 'CAST', - ActorId_CAWA = 'CAWA', - ActorId_CAWB = 'CAWB', - ActorId_ChuChu = 'CHUC', - ActorId_CLBT = 'CLBT', - ActorId_CLLT = 'CLLT', - ActorId_CLZN = 'CLZN', - ActorId_CNBL = 'CNBL', - ActorId_COMM = 'COMM', - ActorId_CRCH = 'CRCH', - ActorId_CRFP = 'CRFP', - ActorId_CRFT = 'CRFT', - ActorId_CROW = 'CROW', - ActorId_CTFS = 'CTFS', - ActorId_DGPC = 'DGPC', - ActorId_DKCB = 'DKCB', - ActorId_DKCL = 'DKCL', - ActorId_DKTR = 'DKTR', - ActorId_DLPN = 'DLPN', - ActorId_DLTG = 'DLTG', - ActorId_DMCH = 'DMCH', - ActorId_DMEQ = 'DMEQ', - ActorId_DMET = 'DMET', - ActorId_DMFR = 'DMFR', - ActorId_DMFT = 'DMFT', - ActorId_DMGM = 'DMGM', - ActorId_DMGN = 'DMGN', - ActorId_DMMM = 'DMMM', - ActorId_DMMS = 'DMMS', - ActorId_DMMT = 'DMMT', - ActorId_DMPK = 'DMPK', - ActorId_DMPS = 'DMPS', - ActorId_DMSS = 'DMSS', - ActorId_DMST = 'DMST', - ActorId_DMT2 = 'DMT2', - ActorId_DMTR = 'DMTR', - ActorId_DMWS = 'DMWS', - ActorId_DMWT = 'DMWT', - ActorId_DMZS = 'DMZS', - ActorId_DSBB = 'DSBB', - ActorId_DSBH = 'DSBH', - ActorId_DSBN = 'DSBN', - ActorId_DSDS = 'DSDS', - ActorId_DSFR = 'DSFR', - ActorId_DSSN = 'DSSN', - ActorId_DSVC = 'DSVC', - ActorId_DSWT = 'DSWT', - ActorId_E3GL = 'E3GL', - ActorId_E3LV = 'E3LV', - ActorId_E3ST = 'E3ST', - ActorId_E3TT = 'E3TT', - ActorId_EFIK = 'EFIK', - ActorId_EFOC = 'EFOC', - ActorId_EFR2 = 'EFR2', - ActorId_EFR3 = 'EFR3', - ActorId_EFRI = 'EFRI', - ActorId_EFRL = 'EFRL', - ActorId_EFRP = 'EFRP', - ActorId_EFSB = 'EFSB', - ActorId_EFSC = 'EFSC', - ActorId_EFW2 = 'EFW2', - ActorId_EFW3 = 'EFW3', - ActorId_EFWI = 'EFWI', - ActorId_EFWL = 'EFWL', - ActorId_EFWV = 'EFWV', - ActorId_ELVT = 'ELVT', - ActorId_ENGE = 'ENGE', - ActorId_EVCH = 'EVCH', - ActorId_EVIC = 'EVIC', - ActorId_EWHI = 'EWHI', - ActorId_FBBF = 'FBBF', - ActorId_FBBH = 'FBBH', - ActorId_FBCH = 'FBCH', - ActorId_FBRD = 'FBRD', - ActorId_FBRG = 'FBRG', - ActorId_FBSC = 'FBSC', - ActorId_FCHL = 'FCHL', - ActorId_FDKY = 'FDKY', - ActorId_FIBB = 'FIBB', - ActorId_FIFI = 'FIFI', - ActorId_FIMA = 'FIMA', - ActorId_FIML = 'FIML', - ActorId_FIRB = 'FIRB', - ActorId_FKTR = 'FKTR', - ActorId_FLCT = 'FLCT', - ActorId_FLDK = 'FLDK', - ActorId_FLEN = 'FLEN', - ActorId_FMAS = 'FMAS', - ActorId_FMLS = 'FMLS', - ActorId_FOFA = 'FOFA', - ActorId_FOMA = 'FOMA', - ActorId_FOMB = 'FOMB', - ActorId_FOMC = 'FOMC', - ActorId_FOMD = 'FOMD', - ActorId_FOMR = 'FOMR', - ActorId_FOMS = 'FOMS', - ActorId_FOMY = 'FOMY', - ActorId_FOPD = 'FOPD', - ActorId_FRBS = 'FRBS', - ActorId_FRTN = 'FRTN', - ActorId_FSIR = 'FSIR', - ActorId_FSSF = 'FSSF', - ActorId_FSST = 'FSST', - ActorId_FTRN = 'FTRN', - ActorId_GHOS = 'GHOS', - ActorId_GOCA = 'GOCA', - ActorId_GOCB = 'GOCB', - ActorId_GOCP = 'GOCP', - ActorId_GOKI = 'GOKI', - ActorId_GORK = 'GORK', - ActorId_GORM = 'GORM', - ActorId_GORP = 'GORP', - ActorId_GORS = 'GORS', - ActorId_GORY = 'GORY', - ActorId_GOVT = 'GOVT', - ActorId_GRCF = 'GRCF', - ActorId_GRCM = 'GRCM', - ActorId_GTTG = 'GTTG', - ActorId_GYAM = 'GYAM', - ActorId_HAMN = 'HAMN', - ActorId_HELA = 'HELA', - ActorId_Heart = 'HERT', - ActorId_HLMG = 'HLMG', - ActorId_HYSW = 'HYSW', - ActorId_IBBA = 'IBBA', - ActorId_IBSP = 'IBSP', - ActorId_ICBA = 'ICBA', - ActorId_ICBB = 'ICBB', - ActorId_ICBS = 'ICBS', - ActorId_ITBM = 'ITBM', - ActorId_ITSC = 'ITSC', - ActorId_ITTD = 'ITTD', - ActorId_ITWP = 'ITWP', - ActorId_IWTS = 'IWTS', - ActorId_JOLN = 'JOLN', - ActorId_KETH = 'KETH', - ActorId_KEYB = 'KEYB', - ActorId_KEYN = 'KEYN', - ActorId_KEYT = 'KEYT', - ActorId_KGDB = 'KGDB', - ActorId_KGDN = 'KGDN', - ActorId_KIMA = 'KIMA', - ActorId_KIMB = 'KIMB', - ActorId_KLTR = 'KLTR', - ActorId_KMOH = 'KMOH', - ActorId_KMOS = 'KMOS', - ActorId_KMSO = 'KMSO', - ActorId_KOAT = 'KOAT', - ActorId_KOCH = 'KOCH', - ActorId_KOKO = 'KOKO', - ActorId_KOTA = 'KOTA', - ActorId_KURI = 'KURI', - ActorId_L2MT = 'L2MT', - ActorId_L2V1 = 'L2V1', - ActorId_L2V2 = 'L2V2', - ActorId_LAVA = 'LAVA', - ActorId_LBCK = 'LBCK', - ActorId_LBRC = 'LBRC', - ActorId_LikeLike = 'LIKE', - ActorId_LIRA = 'LIRA', - ActorId_LOCK = 'LOCK', - ActorId_LVBD = 'LVBD', - ActorId_LVOF = 'LVOF', - ActorId_LZET = 'LZET', - ActorId_MABC = 'MABC', - ActorId_MABL = 'MABL', - ActorId_MAFI = 'MAFI', - ActorId_MAGR = 'MAGR', - ActorId_MARG = 'MARG', - ActorId_MATR = 'MATR', - ActorId_MBCC = 'MBCC', - ActorId_MDYG = 'MDYG', - ActorId_MGAJ = 'MGAJ', - ActorId_MIFR = 'MIFR', - ActorId_MKUR = 'MKUR', - ActorId_MLCK = 'MLCK', - ActorId_MNCB = 'MNCB', - ActorId_MOCT = 'MOCT', - ActorId_MRD2 = 'MRD2', - ActorId_MRDA = 'MRDA', - ActorId_MRDL = 'MRDL', - ActorId_MRDO = 'MRDO', - ActorId_MTFB = 'MTFB', - ActorId_MTFL = 'MTFL', - ActorId_MTWP = 'MTWP', - ActorId_MZCT = 'MZCT', - ActorId_NAVI = 'NAVI', - ActorId_NCCA = 'NCCA', - ActorId_NCCB = 'NCCB', - ActorId_NCCS = 'NCCS', - ActorId_NCMB = 'NCMB', - ActorId_NCWA = 'NCWA', - ActorId_NFSP = 'NFSP', - ActorId_NICO = 'NICO', - ActorId_NITF = 'NITF', - ActorId_NLTR = 'NLTR', - ActorId_NORE = 'NORE', - ActorId_NPWC = 'NPWC', - ActorId_NormalShield = 'NSHD', - ActorId_NSSW = 'NSSW', - ActorId_NSTN = 'NSTN', - ActorId_NTTZ = 'NTTZ', - ActorId_NTUB = 'NTUB', - ActorId_OBPC = 'OBPC', - ActorId_OCGS = 'OCGS', - ActorId_OCTA = 'OCTA', - ActorId_OCTG = 'OCTG', - ActorId_OCTS = 'OCTS', - ActorId_OCTW = 'OCTW', - ActorId_OCWS = 'OCWS', - ActorId_OFSW = 'OFSW', - ActorId_OLDM = 'OLDM', - ActorId_OLDS = 'OLDS', - ActorId_PASS = 'PASS', - ActorId_PBK2 = 'PBK2', - ActorId_PBSP = 'PBSP', - ActorId_PCTG = 'PCTG', - ActorId_PHEY = 'PHEY', - ActorId_PHTM = 'PHTM', - ActorId_PLSR = 'PLSR', - ActorId_PMST = 'PMST', - ActorId_PMTB = 'PMTB', - ActorId_PMTC = 'PMTC', - ActorId_PMTD = 'PMTD', - ActorId_PostBox = 'POST', - ActorId_PPPM = 'PPPM', - ActorId_PRPL = 'PRPL', - ActorId_PRPP = 'PRPP', - ActorId_PRSP = 'PRSP', - ActorId_PSBK = 'PSBK', - ActorId_PSBL = 'PSBL', - ActorId_PSBS = 'PSBS', - ActorId_PSEM = 'PSEM', - ActorId_PSNP = 'PSNP', - ActorId_PSWB = 'PSWB', - ActorId_PTMN = 'PTMN', - ActorId_QKSD = 'QKSD', - ActorId_QKTG = 'QKTG', - ActorId_RAT0 = 'RAT0', - ActorId_RB1F = 'RB1F', - ActorId_RB1T = 'RB1T', - ActorId_RBD2 = 'RBD2', - ActorId_RBDS = 'RBDS', - ActorId_RBFR = 'RBFR', - ActorId_RBL1 = 'RBL1', - ActorId_RBL2 = 'RBL2', - ActorId_RBLS = 'RBLS', - ActorId_RBNT = 'RBNT', - ActorId_RBRP = 'RBRP', - ActorId_RBRT = 'RBRT', - ActorId_RBSN = 'RBSN', - ActorId_RBVC = 'RBVC', - ActorId_RBWS = 'RBWS', - ActorId_RBWT = 'RBWT', - ActorId_RCFO = 'RCFO', - ActorId_RCHU = 'RCHU', - ActorId_RCMS = 'RCMS', - ActorId_RCSG = 'RCSG', - ActorId_RLST = 'RLST', - ActorId_RMA0 = 'RMA0', - ActorId_RMA1 = 'RMA1', - ActorId_RMA2 = 'RMA2', - ActorId_RMA3 = 'RMA3', - ActorId_RMAJ = 'RMAJ', - ActorId_RMBC = 'RMBC', - ActorId_RMBD = 'RMBD', - ActorId_RMC0 = 'RMC0', - ActorId_RMC1 = 'RMC1', - ActorId_RMC2 = 'RMC2', - ActorId_RMC3 = 'RMC3', - ActorId_RMC4 = 'RMC4', - ActorId_RMC5 = 'RMC5', - ActorId_RMC6 = 'RMC6', - ActorId_RMDO = 'RMDO', - ActorId_RMDS = 'RMDS', - ActorId_RMF0 = 'RMF0', - ActorId_RMF1 = 'RMF1', - ActorId_RMFK = 'RMFK', - ActorId_RML0 = 'RML0', - ActorId_RML1 = 'RML1', - ActorId_RML2 = 'RML2', - ActorId_RML3 = 'RML3', - ActorId_RMLF = 'RMLF', - ActorId_RMM0 = 'RMM0', - ActorId_RMM1 = 'RMM1', - ActorId_RMM2 = 'RMM2', - ActorId_RMM3 = 'RMM3', - ActorId_RMM4 = 'RMM4', - ActorId_RMS0 = 'RMS0', - ActorId_RMS1 = 'RMS1', - ActorId_RMS2 = 'RMS2', - ActorId_RMS3 = 'RMS3', - ActorId_RMS4 = 'RMS4', - ActorId_RMS5 = 'RMS5', - ActorId_RMSD = 'RMSD', - ActorId_RMSF = 'RMSF', - ActorId_RMSS = 'RMSS', - ActorId_RMST = 'RMST', - ActorId_RMSV = 'RMSV', - ActorId_RMSW = 'RMSW', - ActorId_RMT0 = 'RMT0', - ActorId_RMT1 = 'RMT1', - ActorId_RMT2 = 'RMT2', - ActorId_RMT3 = 'RMT3', - ActorId_RMT4 = 'RMT4', - ActorId_RMTB = 'RMTB', - ActorId_RMTE = 'RMTE', - ActorId_RMTG = 'RMTG', - ActorId_RMTR = 'RMTR', - ActorId_RMTZ = 'RMTZ', - ActorId_RMV0 = 'RMV0', - ActorId_RMV1 = 'RMV1', - ActorId_RMVD = 'RMVD', - ActorId_RMVF = 'RMVF', - ActorId_RMVS = 'RMVS', - ActorId_RMVT = 'RMVT', - ActorId_RMVV = 'RMVV', - ActorId_RMVW = 'RMVW', - ActorId_RMW0 = 'RMW0', - ActorId_RMW1 = 'RMW1', - ActorId_RNTN = 'RNTN', - ActorId_ROCK = 'ROCK', - ActorId_RPMT = 'RPMT', - ActorId_Rupee = 'RUPE', - ActorId_RYAW = 'RYAW', - ActorId_SCCN = 'SCCN', - ActorId_SEAT = 'SEAT', - ActorId_SEFS = 'SEFS', - ActorId_SGMG = 'SGMG', - ActorId_SHDL = 'SHDL', - ActorId_SHIT = 'SHIT', - ActorId_SIRO = 'SIRO', - ActorId_SIRS = 'SIRS', - ActorId_SKDO = 'SKDO', - ActorId_SMCT = 'SMCT', - ActorId_SNMA = 'SNMA', - ActorId_SNMB = 'SNMB', - ActorId_SNOW = 'SNOW', - ActorId_SNST = 'SNST', - ActorId_SOGB = 'SOGB', - ActorId_SOGC = 'SOGC', - ActorId_SOLB = 'SOLB', - ActorId_SOLC = 'SOLC', - ActorId_SOLD = 'SOLD', - ActorId_SOLF = 'SOLF', - ActorId_SOLG = 'SOLG', - ActorId_SOLT = 'SOLT', - ActorId_SPAR = 'SPAR', - ActorId_SPBM = 'SPBM', - ActorId_SPDR = 'SPDR', - ActorId_SPID = 'SPID', - ActorId_SPTG = 'SPTG', - ActorId_SPTR = 'SPTR', - ActorId_SPTT = 'SPTT', - ActorId_SRNM = 'SRNM', - ActorId_SRSL = 'SRSL', - ActorId_SRST = 'SRST', - ActorId_SSFC = 'SSFC', - ActorId_STCT = 'STCT', - ActorId_STFB = 'STFB', - ActorId_STFH = 'STFH', - ActorId_STLF = 'STLF', - ActorId_STLW = 'STLW', - ActorId_STTG = 'STTG', - ActorId_STWH = 'STWH', - ActorId_SWBM = 'SWBM', - ActorId_SWCH = 'SWCH', - ActorId_SWDS = 'SWDS', - ActorId_SWHI = 'SWHI', - ActorId_SWOB = 'SWOB', - ActorId_SWON = 'SWON', - ActorId_SWTM = 'SWTM', - ActorId_SYDE = 'SYDE', - ActorId_SYDL = 'SYDL', - ActorId_SYDS = 'SYDS', - ActorId_SYFI = 'SYFI', - ActorId_SYFO = 'SYFO', - ActorId_SYIL = 'SYIL', - ActorId_SYIS = 'SYIS', - ActorId_SYOL = 'SYOL', - ActorId_SYOS = 'SYOS', - ActorId_SYRN = 'SYRN', - ActorId_SYSL = 'SYSL', - ActorId_SYSN = 'SYSN', - ActorId_SYSS = 'SYSS', - ActorId_SYWA = 'SYWA', - ActorId_SYWL = 'SYWL', - ActorId_SYWS = 'SYWS', - ActorId_SZKL = 'SZKL', - ActorId_SZKU = 'SZKU', - ActorId_SZRD = 'SZRD', - ActorId_TBRD = 'TBRD', - ActorId_TCAM = 'TCAM', - ActorId_TCOW = 'TCOW', - ActorId_TDKT = 'TDKT', - ActorId_TEHT = 'TEHT', - ActorId_Beedle = 'TERY', - ActorId_TEVT = 'TEVT', - ActorId_TFAT = 'TFAT', - ActorId_TGTZ = 'TGTZ', - ActorId_THER = 'THER', - ActorId_TKYT = 'TKYT', - ActorId_TLKT = 'TLKT', - ActorId_TMNA = 'TMNA', - ActorId_TMNC = 'TMNC', - ActorId_TMNP = 'TMNP', - ActorId_TPDO = 'TPDO', - ActorId_TRAP = 'TRAP', - ActorId_TRBC = 'TRBC', - ActorId_TRCB = 'TRCB', - ActorId_TRER = 'TRER', - ActorId_TRIC = 'TRIC', - ActorId_TRLY = 'TRLY', - ActorId_TRRL = 'TRRL', - ActorId_TRSG = 'TRSG', - ActorId_TRSP = 'TRSP', - ActorId_TRTT = 'TRTT', - ActorId_TRUP = 'TRUP', - ActorId_TSCN = 'TSCN', - ActorId_TSLB = 'TSLB', - ActorId_TSMT = 'TSMT', - ActorId_TTET = 'TTET', - ActorId_TTFT = 'TTFT', - ActorId_TTKB = 'TTKB', - ActorId_TTUT = 'TTUT', - ActorId_TUTO = 'TUTO', - ActorId_TVLR = 'TVLR', - ActorId_VCCH = 'VCCH', - ActorId_VCFT = 'VCFT', - ActorId_VLCR = 'VLCR', - ActorId_VOLV = 'VOLV', - ActorId_VRGN = 'VRGN', - ActorId_WAMA = 'WAMA', - ActorId_WAWA = 'WAWA', - ActorId_WAWB = 'WAWB', - ActorId_WAWC = 'WAWC', - ActorId_WAWS = 'WAWS', - ActorId_WAWY = 'WAWY', - ActorId_WBEF = 'WBEF', - ActorId_WBN2 = 'WBN2', - ActorId_WBPS = 'WBPS', - ActorId_WBTN = 'WBTN', - ActorId_WCAS = 'WCAS', - ActorId_WDBA = 'WDBA', - ActorId_WDRD = 'WDRD', - ActorId_WHMA = 'WHMA', - ActorId_WIDR = 'WIDR', - ActorId_WIDT = 'WIDT', - ActorId_WKTR = 'WKTR', - ActorId_WPBD = 'WPBD', - ActorId_WPCH = 'WPCH', - ActorId_WPCL = 'WPCL', - ActorId_WTBS = 'WTBS', - ActorId_WTH2 = 'WTH2', - ActorId_WTH3 = 'WTH3', - ActorId_WTTH = 'WTTH', - ActorId_WWFS = 'WWFS', - ActorId_YKAP = 'YKAP', - ActorId_YKCP = 'YKCP', - ActorId_YKEP = 'YKEP', - ActorId_YUKI = 'YUKI', - ActorId_YUKY = 'YUKY', - ActorId_YWIS = 'YWIS', - ActorId_ZELD = 'ZELD', - ActorId_ZLBB = 'ZLBB', - ActorId_ZLBS = 'ZLBS', - ActorId_ZLSL = 'ZLSL', - ActorId_ZLSN = 'ZLSN', - ActorId_ZLSS = 'ZLSS', - ActorId_ZSRS = 'ZSRS', - ActorId_ZSTG = 'ZSTG', +enum ActorId { +#define DEFINE_ACTOR_TYPE(id, name) ActorId_##name = id, +#include "Actor/ActorTypeTable.inl" +#undef DEFINE_ACTOR_TYPE }; diff --git a/include/Actor/ActorManager.hpp b/include/Actor/ActorManager.hpp new file mode 100644 index 00000000..5b933e5f --- /dev/null +++ b/include/Actor/ActorManager.hpp @@ -0,0 +1,47 @@ +#pragma once + +#include "Actor/ActorUnk_ov000_020a8bb0.hpp" +#include "types.h" + +class ActorManager { +public: + /* 00 */ Actor **mActorTable; + /* 04 */ Actor **mActorTableEnd; + /* 08 */ Actor **mUnk_08; + /* 0c */ unk16 mActorCount; + /* 0e */ unk16 mNextActorId; + /* 10 */ unk8 mUnk_10[0x14 - 0x10]; + /* 14 */ unk32 mUnk_14; + /* 18 */ unk32 mUnk_18; + /* 1c */ unk8 mUnk_1c[0x24 - 0x1c]; + /* 24 */ unk32 mUnk_24; + /* 28 */ unk32 mUnk_28; + /* 2c */ unk32 mUnk_2c; + /* 30 */ unk16 mUnk_30; + /* 32 */ unk8 mUnk_32[0x34 - 0x32]; + /* 34 */ unk32 mUnk_34; + /* 38 */ + + ActorManager(); + ~ActorManager(); + static void SetInstance(ActorManager *instance); + static void ClearInstance(); + static void Create(); + static void Destroy(); + void func_ov001_020bafdc(); + void func_ov001_020bb018(s32 param1); + void func_ov001_020bb414(); + void func_ov001_020bb488(); + void func_ov001_020bb548(); + void func_ov001_020bb630(); + void func_ov001_020bb6b0(s32 *param1); + static bool func_ov001_020bb728(s32 param1); + void func_ov001_020bb7b0(s32 param1); + void func_ov001_020bb7f0(); + static void func_ov001_020bb824(); + static void func_ov001_020bb844(); + + ActorUnk_ov000_020a8bb0 *func_01fff3b4(unk32 param1); +}; + +extern ActorManager *gActorManager; diff --git a/include/Actor/ActorRupee.hpp b/include/Actor/ActorRupee.hpp index 5d56dc2e..73b63e67 100644 --- a/include/Actor/ActorRupee.hpp +++ b/include/Actor/ActorRupee.hpp @@ -1,10 +1,10 @@ #pragma once #include "Actor/Actor.hpp" -#include "Actor/ActorUnk_ov000_0209767c.hpp" +#include "Actor/ActorManager.hpp" +#include "Actor/ActorType.hpp" #include "Actor/ActorUnk_ov000_020a8bb0.hpp" #include "Player/PlayerGet.hpp" -#include "Unknown/UnkStruct_027e0ce4.hpp" #include "types.h" typedef u32 RupeeId; @@ -104,7 +104,6 @@ public: void func_ov017_020bf9c8(ActorUnk_ov000_020a8bb0 *param1); - UnkStruct_ov000_020b539c_30 *func_ov031_020e8cb8(); void func_ov031_020e8d2c(Vec3p *param1); void func_ov031_020e8fec(); void func_ov031_020e9068(); @@ -142,11 +141,15 @@ public: bool func_ov031_020e9e5c(); }; -class ActorRupeeBase : public ActorUnk_ov000_0209767c { +class ActorTypeRupee : public ActorType { public: + static ActorTypeRupee gInstance; + /* 00 (base) */ - ActorRupeeBase(); + ActorTypeRupee(); /* 0c */ virtual Actor *Create(); + + static ActorTypeRupee *GetInstance(); }; diff --git a/include/Actor/ActorType.hpp b/include/Actor/ActorType.hpp new file mode 100644 index 00000000..48f0c54d --- /dev/null +++ b/include/Actor/ActorType.hpp @@ -0,0 +1,46 @@ +#pragma once + +#include "Actor/ActorId.hpp" +#include "System/SysNew.hpp" +#include "types.h" + +struct ActorTypeData { + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0c */ unk32 mUnk_0c; + /* 10 */ unk8 mUnk_10[0x16 - 0x10]; + /* 16 */ unk16 mUnk_16; + /* 18 */ unk16 mUnk_18; + /* 1a */ unk16 mUnk_1a; + /* 1c */ ActorId mActorId; + /* 20 */ unk32 mUnk_20; + /* 24 */ unk32 mUnk_24; + /* 28 */ unk32 mUnk_28; + /* 2c */ unk32 mUnk_2c; + /* 30 */ unk32 mUnk_30; + /* 34 */ unk8 mUnk_34; + /* 35 */ unk8 mUnk_35; +}; + +class Actor; + +class ActorType : public SysObject { +public: + /* 00 (vtable) */ + /* 04 */ ActorTypeData mData; + /* 3a */ + + ActorType(ActorId actorId); + + /* 00 */ virtual Actor *Create() = 0; + /* 04 */ virtual void vfunc_04(); + /* 08 */ virtual void vfunc_08(); + /* 0c */ virtual void vfunc_0c(); + /* 10 */ virtual void vfunc_10(); + /* 14 */ virtual void vfunc_14(); + /* 18 */ virtual void vfunc_18(); + /* 1c */ +}; + +typedef ActorType *(*ActorTypeGetInstance)(); diff --git a/include/Actor/ActorTypeTable.inl b/include/Actor/ActorTypeTable.inl new file mode 100644 index 00000000..e5941787 --- /dev/null +++ b/include/Actor/ActorTypeTable.inl @@ -0,0 +1,526 @@ +// IMPORTANT: Actor types must be sorted by ID! + +// DEFINE_ACTOR_TYPE(id, name) +DEFINE_ACTOR_TYPE('AJAI', AJAI) +DEFINE_ACTOR_TYPE('AJBS', AJBS) +DEFINE_ACTOR_TYPE('AJCR', AJCR) +DEFINE_ACTOR_TYPE('AJEM', AJEM) +DEFINE_ACTOR_TYPE('AJET', AJET) +DEFINE_ACTOR_TYPE('AJMN', AJMN) +DEFINE_ACTOR_TYPE('AJNP', AJNP) +DEFINE_ACTOR_TYPE('AJSP', AJSP) +DEFINE_ACTOR_TYPE('AJTM', AJTM) +DEFINE_ACTOR_TYPE('ALEV', ALEV) +DEFINE_ACTOR_TYPE('AROW', AROW) +DEFINE_ACTOR_TYPE('ASBA', ASBA) +DEFINE_ACTOR_TYPE('ASYU', ASYU) +DEFINE_ACTOR_TYPE('ATTG', ATTG) +DEFINE_ACTOR_TYPE('BAEY', BAEY) +DEFINE_ACTOR_TYPE('BAFO', BAFO) +DEFINE_ACTOR_TYPE('BANI', BANI) +DEFINE_ACTOR_TYPE('BAPH', BAPH) +DEFINE_ACTOR_TYPE('BBLE', BBLE) +DEFINE_ACTOR_TYPE('BDBA', BDBA) +DEFINE_ACTOR_TYPE('BDEA', BDEA) +DEFINE_ACTOR_TYPE('BDEM', BDEM) +DEFINE_ACTOR_TYPE('BDGA', BDGA) +DEFINE_ACTOR_TYPE('BDLB', BDLB) +DEFINE_ACTOR_TYPE('BEEE', TreasureBee) +DEFINE_ACTOR_TYPE('BEEH', BeeHive) +DEFINE_ACTOR_TYPE('BFFN', BFFN) +DEFINE_ACTOR_TYPE('BGOK', BGOK) +DEFINE_ACTOR_TYPE('BKST', BKST) +DEFINE_ACTOR_TYPE('BLBL', BLBL) +DEFINE_ACTOR_TYPE('BLBR', BLBR) +DEFINE_ACTOR_TYPE('BLJF', BLJF) +DEFINE_ACTOR_TYPE('BLON', BLON) +DEFINE_ACTOR_TYPE('BLST', BLST) +DEFINE_ACTOR_TYPE('BMHN', BMHN) +DEFINE_ACTOR_TYPE('BMOC', BMOC) +DEFINE_ACTOR_TYPE('BOMB', BOMB) +DEFINE_ACTOR_TYPE('BPAP', BPAP) +DEFINE_ACTOR_TYPE('BPBS', BPBS) +DEFINE_ACTOR_TYPE('BROW', BROW) +DEFINE_ACTOR_TYPE('BSFC', BSFC) +DEFINE_ACTOR_TYPE('BSKM', BSKM) +DEFINE_ACTOR_TYPE('BSTG', BSTG) +DEFINE_ACTOR_TYPE('BTIR', BTIR) +DEFINE_ACTOR_TYPE('CAGE', CAGE) +DEFINE_ACTOR_TYPE('CAMA', CAMA) +DEFINE_ACTOR_TYPE('CAMB', CAMB) +DEFINE_ACTOR_TYPE('CAMS', CAMS) +DEFINE_ACTOR_TYPE('CAMY', CAMY) +DEFINE_ACTOR_TYPE('CANS', CANS) +DEFINE_ACTOR_TYPE('CASE', CASE) +DEFINE_ACTOR_TYPE('CASL', Castle) +DEFINE_ACTOR_TYPE('CAST', CAST) +DEFINE_ACTOR_TYPE('CAWA', CAWA) +DEFINE_ACTOR_TYPE('CAWB', CAWB) +DEFINE_ACTOR_TYPE('CHUC', ChuChu) +DEFINE_ACTOR_TYPE('CLBT', CLBT) +DEFINE_ACTOR_TYPE('CLLT', CLLT) +DEFINE_ACTOR_TYPE('CLZN', CLZN) +DEFINE_ACTOR_TYPE('CNBL', CNBL) +DEFINE_ACTOR_TYPE('COMM', COMM) +DEFINE_ACTOR_TYPE('CRCH', CRCH) +DEFINE_ACTOR_TYPE('CRFP', CRFP) +DEFINE_ACTOR_TYPE('CRFT', CRFT) +DEFINE_ACTOR_TYPE('CROW', CROW) +DEFINE_ACTOR_TYPE('CTFS', CTFS) +DEFINE_ACTOR_TYPE('DGPC', DGPC) +DEFINE_ACTOR_TYPE('DKCB', DKCB) +DEFINE_ACTOR_TYPE('DKCL', DKCL) +DEFINE_ACTOR_TYPE('DKTR', DKTR) +DEFINE_ACTOR_TYPE('DLPN', DLPN) +DEFINE_ACTOR_TYPE('DLTG', DLTG) +DEFINE_ACTOR_TYPE('DMCH', DMCH) +DEFINE_ACTOR_TYPE('DMEQ', DMEQ) +DEFINE_ACTOR_TYPE('DMET', DMET) +DEFINE_ACTOR_TYPE('DMFR', DMFR) +DEFINE_ACTOR_TYPE('DMFT', DMFT) +DEFINE_ACTOR_TYPE('DMGM', DMGM) +DEFINE_ACTOR_TYPE('DMGN', DMGN) +DEFINE_ACTOR_TYPE('DMMM', DMMM) +DEFINE_ACTOR_TYPE('DMMS', DMMS) +DEFINE_ACTOR_TYPE('DMMT', DMMT) +DEFINE_ACTOR_TYPE('DMPK', DMPK) +DEFINE_ACTOR_TYPE('DMPS', DMPS) +DEFINE_ACTOR_TYPE('DMSS', DMSS) +DEFINE_ACTOR_TYPE('DMST', DMST) +DEFINE_ACTOR_TYPE('DMT2', DMT2) +DEFINE_ACTOR_TYPE('DMTR', DMTR) +DEFINE_ACTOR_TYPE('DMWS', DMWS) +DEFINE_ACTOR_TYPE('DMWT', DMWT) +DEFINE_ACTOR_TYPE('DMZS', DMZS) +DEFINE_ACTOR_TYPE('DSBB', DSBB) +DEFINE_ACTOR_TYPE('DSBH', DSBH) +DEFINE_ACTOR_TYPE('DSBN', DSBN) +DEFINE_ACTOR_TYPE('DSDS', DSDS) +DEFINE_ACTOR_TYPE('DSFR', DSFR) +DEFINE_ACTOR_TYPE('DSSN', DSSN) +DEFINE_ACTOR_TYPE('DSVC', DSVC) +DEFINE_ACTOR_TYPE('DSWT', DSWT) +DEFINE_ACTOR_TYPE('E3GL', E3GL) +DEFINE_ACTOR_TYPE('E3LV', E3LV) +DEFINE_ACTOR_TYPE('E3ST', E3ST) +DEFINE_ACTOR_TYPE('E3TT', E3TT) +DEFINE_ACTOR_TYPE('EFIK', EFIK) +DEFINE_ACTOR_TYPE('EFOC', EFOC) +DEFINE_ACTOR_TYPE('EFR2', EFR2) +DEFINE_ACTOR_TYPE('EFR3', EFR3) +DEFINE_ACTOR_TYPE('EFRI', EFRI) +DEFINE_ACTOR_TYPE('EFRL', EFRL) +DEFINE_ACTOR_TYPE('EFRP', EFRP) +DEFINE_ACTOR_TYPE('EFSB', EFSB) +DEFINE_ACTOR_TYPE('EFSC', EFSC) +DEFINE_ACTOR_TYPE('EFW2', EFW2) +DEFINE_ACTOR_TYPE('EFW3', EFW3) +DEFINE_ACTOR_TYPE('EFWI', EFWI) +DEFINE_ACTOR_TYPE('EFWL', EFWL) +DEFINE_ACTOR_TYPE('EFWV', EFWV) +DEFINE_ACTOR_TYPE('ELVT', ELVT) +DEFINE_ACTOR_TYPE('ENGE', ENGE) +DEFINE_ACTOR_TYPE('EVCH', EVCH) +DEFINE_ACTOR_TYPE('EVIC', EVIC) +DEFINE_ACTOR_TYPE('EWHI', EWHI) +DEFINE_ACTOR_TYPE('FBBF', FBBF) +DEFINE_ACTOR_TYPE('FBBH', FBBH) +DEFINE_ACTOR_TYPE('FBCH', FBCH) +DEFINE_ACTOR_TYPE('FBRD', FBRD) +DEFINE_ACTOR_TYPE('FBRG', FBRG) +DEFINE_ACTOR_TYPE('FBSC', FBSC) +DEFINE_ACTOR_TYPE('FCHL', FCHL) +DEFINE_ACTOR_TYPE('FDKY', FDKY) +DEFINE_ACTOR_TYPE('FIBB', FIBB) +DEFINE_ACTOR_TYPE('FIFI', FIFI) +DEFINE_ACTOR_TYPE('FIMA', FIMA) +DEFINE_ACTOR_TYPE('FIML', FIML) +DEFINE_ACTOR_TYPE('FIRB', FIRB) +DEFINE_ACTOR_TYPE('FKTR', FKTR) +DEFINE_ACTOR_TYPE('FLCT', FieldCastleTown) +DEFINE_ACTOR_TYPE('FLDK', FLDK) +DEFINE_ACTOR_TYPE('FLEN', FLEN) +DEFINE_ACTOR_TYPE('FMAS', FMAS) +DEFINE_ACTOR_TYPE('FMLS', FMLS) +DEFINE_ACTOR_TYPE('FOFA', FOFA) +DEFINE_ACTOR_TYPE('FOMA', FOMA) +DEFINE_ACTOR_TYPE('FOMB', FOMB) +DEFINE_ACTOR_TYPE('FOMC', FOMC) +DEFINE_ACTOR_TYPE('FOMD', FOMD) +DEFINE_ACTOR_TYPE('FOMR', FOMR) +DEFINE_ACTOR_TYPE('FOMS', FOMS) +DEFINE_ACTOR_TYPE('FOMY', FOMY) +DEFINE_ACTOR_TYPE('FOPD', FOPD) +DEFINE_ACTOR_TYPE('FRBS', FRBS) +DEFINE_ACTOR_TYPE('FRTN', FRTN) +DEFINE_ACTOR_TYPE('FSIR', FSIR) +DEFINE_ACTOR_TYPE('FSSF', FSSF) +DEFINE_ACTOR_TYPE('FSST', FSST) +DEFINE_ACTOR_TYPE('FTRN', FieldTrain) +DEFINE_ACTOR_TYPE('GHOS', GHOS) +DEFINE_ACTOR_TYPE('GOCA', GOCA) +DEFINE_ACTOR_TYPE('GOCB', GOCB) +DEFINE_ACTOR_TYPE('GOCP', GOCP) +DEFINE_ACTOR_TYPE('GOKI', GOKI) +DEFINE_ACTOR_TYPE('GORK', GORK) +DEFINE_ACTOR_TYPE('GORM', GORM) +DEFINE_ACTOR_TYPE('GORP', GORP) +DEFINE_ACTOR_TYPE('GORS', GORS) +DEFINE_ACTOR_TYPE('GORY', GORY) +DEFINE_ACTOR_TYPE('GOVT', GOVT) +DEFINE_ACTOR_TYPE('GRCF', GRCF) +DEFINE_ACTOR_TYPE('GRCM', GRCM) +DEFINE_ACTOR_TYPE('GTTG', GTTG) +DEFINE_ACTOR_TYPE('GYAM', GYAM) +DEFINE_ACTOR_TYPE('HAMN', HAMN) +DEFINE_ACTOR_TYPE('HELA', HELA) +DEFINE_ACTOR_TYPE('HERT', Heart) +DEFINE_ACTOR_TYPE('HLMG', HLMG) +DEFINE_ACTOR_TYPE('HYSW', HYSW) +DEFINE_ACTOR_TYPE('IBBA', IBBA) +DEFINE_ACTOR_TYPE('IBSP', IBSP) +DEFINE_ACTOR_TYPE('ICBA', ICBA) +DEFINE_ACTOR_TYPE('ICBB', ICBB) +DEFINE_ACTOR_TYPE('ICBS', ICBS) +DEFINE_ACTOR_TYPE('ITBM', ITBM) +DEFINE_ACTOR_TYPE('ITSC', ITSC) +DEFINE_ACTOR_TYPE('ITTD', ITTD) +DEFINE_ACTOR_TYPE('ITWP', ITWP) +DEFINE_ACTOR_TYPE('IWTS', IWTS) +DEFINE_ACTOR_TYPE('JOLN', JOLN) +DEFINE_ACTOR_TYPE('KETH', KETH) +DEFINE_ACTOR_TYPE('KEYB', KEYB) +DEFINE_ACTOR_TYPE('KEYN', KEYN) +DEFINE_ACTOR_TYPE('KEYT', KEYT) +DEFINE_ACTOR_TYPE('KGDB', KGDB) +DEFINE_ACTOR_TYPE('KGDN', KGDN) +DEFINE_ACTOR_TYPE('KIMA', KIMA) +DEFINE_ACTOR_TYPE('KIMB', KIMB) +DEFINE_ACTOR_TYPE('KLTR', KLTR) +DEFINE_ACTOR_TYPE('KMOH', KMOH) +DEFINE_ACTOR_TYPE('KMOS', KMOS) +DEFINE_ACTOR_TYPE('KMSO', KMSO) +DEFINE_ACTOR_TYPE('KOAT', KOAT) +DEFINE_ACTOR_TYPE('KOCH', KOCH) +DEFINE_ACTOR_TYPE('KOKO', Cucco) +DEFINE_ACTOR_TYPE('KOTA', KOTA) +DEFINE_ACTOR_TYPE('KURI', KURI) +DEFINE_ACTOR_TYPE('L2MT', L2MT) +DEFINE_ACTOR_TYPE('L2V1', L2V1) +DEFINE_ACTOR_TYPE('L2V2', L2V2) +DEFINE_ACTOR_TYPE('LAVA', LAVA) +DEFINE_ACTOR_TYPE('LBCK', LBCK) +DEFINE_ACTOR_TYPE('LBRC', LBRC) +DEFINE_ACTOR_TYPE('LIKE', LikeLike) +DEFINE_ACTOR_TYPE('LIRA', LIRA) +DEFINE_ACTOR_TYPE('LOCK', LOCK) +DEFINE_ACTOR_TYPE('LVBD', LVBD) +DEFINE_ACTOR_TYPE('LVOF', LVOF) +DEFINE_ACTOR_TYPE('LZET', LZET) +DEFINE_ACTOR_TYPE('MABC', MABC) +DEFINE_ACTOR_TYPE('MABL', MABL) +DEFINE_ACTOR_TYPE('MAFI', MAFI) +DEFINE_ACTOR_TYPE('MAGR', MAGR) +DEFINE_ACTOR_TYPE('MARG', MARG) +DEFINE_ACTOR_TYPE('MATR', MATR) +DEFINE_ACTOR_TYPE('MBCC', MBCC) +DEFINE_ACTOR_TYPE('MDYG', MDYG) +DEFINE_ACTOR_TYPE('MGAJ', MGAJ) +DEFINE_ACTOR_TYPE('MIFR', MIFR) +DEFINE_ACTOR_TYPE('MKUR', MKUR) +DEFINE_ACTOR_TYPE('MLCK', MLCK) +DEFINE_ACTOR_TYPE('MNCB', MNCB) +DEFINE_ACTOR_TYPE('MOCT', MOCT) +DEFINE_ACTOR_TYPE('MRD2', MRD2) +DEFINE_ACTOR_TYPE('MRDA', MRDA) +DEFINE_ACTOR_TYPE('MRDL', MRDL) +DEFINE_ACTOR_TYPE('MRDO', MRDO) +DEFINE_ACTOR_TYPE('MTFB', MTFB) +DEFINE_ACTOR_TYPE('MTFL', MTFL) +DEFINE_ACTOR_TYPE('MTWP', MTWP) +DEFINE_ACTOR_TYPE('MZCT', MZCT) +DEFINE_ACTOR_TYPE('NAVI', NAVI) +DEFINE_ACTOR_TYPE('NCCA', NCCA) +DEFINE_ACTOR_TYPE('NCCB', NCCB) +DEFINE_ACTOR_TYPE('NCCS', NCCS) +DEFINE_ACTOR_TYPE('NCMB', NCMB) +DEFINE_ACTOR_TYPE('NCWA', NCWA) +DEFINE_ACTOR_TYPE('NFSP', NFSP) +DEFINE_ACTOR_TYPE('NICO', NICO) +DEFINE_ACTOR_TYPE('NITF', NITF) +DEFINE_ACTOR_TYPE('NLTR', NLTR) +DEFINE_ACTOR_TYPE('NORE', NORE) +DEFINE_ACTOR_TYPE('NPWC', NPWC) +DEFINE_ACTOR_TYPE('NSHD', NormalShield) +DEFINE_ACTOR_TYPE('NSSW', NSSW) +DEFINE_ACTOR_TYPE('NSTN', NSTN) +DEFINE_ACTOR_TYPE('NTTZ', NTTZ) +DEFINE_ACTOR_TYPE('NTUB', NTUB) +DEFINE_ACTOR_TYPE('OBPC', OBPC) +DEFINE_ACTOR_TYPE('OCGS', OCGS) +DEFINE_ACTOR_TYPE('OCTA', OCTA) +DEFINE_ACTOR_TYPE('OCTG', OCTG) +DEFINE_ACTOR_TYPE('OCTS', OCTS) +DEFINE_ACTOR_TYPE('OCTW', OCTW) +DEFINE_ACTOR_TYPE('OCWS', OCWS) +DEFINE_ACTOR_TYPE('OFSW', OFSW) +DEFINE_ACTOR_TYPE('OLDM', OLDM) +DEFINE_ACTOR_TYPE('OLDS', OLDS) +DEFINE_ACTOR_TYPE('PASS', PASS) +DEFINE_ACTOR_TYPE('PBK2', PBK2) +DEFINE_ACTOR_TYPE('PBSP', PBSP) +DEFINE_ACTOR_TYPE('PCTG', PCTG) +DEFINE_ACTOR_TYPE('PHEY', PHEY) +DEFINE_ACTOR_TYPE('PHTM', PHTM) +DEFINE_ACTOR_TYPE('PLSR', PLSR) +DEFINE_ACTOR_TYPE('PMST', PMST) +DEFINE_ACTOR_TYPE('PMTB', PMTB) +DEFINE_ACTOR_TYPE('PMTC', PMTC) +DEFINE_ACTOR_TYPE('PMTD', PMTD) +DEFINE_ACTOR_TYPE('POST', PostBox) +DEFINE_ACTOR_TYPE('PPPM', PPPM) +DEFINE_ACTOR_TYPE('PRPL', PRPL) +DEFINE_ACTOR_TYPE('PRPP', PRPP) +DEFINE_ACTOR_TYPE('PRSP', PRSP) +DEFINE_ACTOR_TYPE('PSBK', PSBK) +DEFINE_ACTOR_TYPE('PSBL', PSBL) +DEFINE_ACTOR_TYPE('PSBS', PSBS) +DEFINE_ACTOR_TYPE('PSEM', PSEM) +DEFINE_ACTOR_TYPE('PSNP', PSNP) +DEFINE_ACTOR_TYPE('PSWB', PSWB) +DEFINE_ACTOR_TYPE('PTMN', PTMN) +DEFINE_ACTOR_TYPE('QKSD', QKSD) +DEFINE_ACTOR_TYPE('QKTG', QKTG) +DEFINE_ACTOR_TYPE('RAT0', RAT0) +DEFINE_ACTOR_TYPE('RB1F', RB1F) +DEFINE_ACTOR_TYPE('RB1T', RB1T) +DEFINE_ACTOR_TYPE('RBD2', RBD2) +DEFINE_ACTOR_TYPE('RBDS', RBDS) +DEFINE_ACTOR_TYPE('RBFR', RBFR) +DEFINE_ACTOR_TYPE('RBL1', RBL1) +DEFINE_ACTOR_TYPE('RBL2', RBL2) +DEFINE_ACTOR_TYPE('RBLS', RBLS) +DEFINE_ACTOR_TYPE('RBNT', RBNT) +DEFINE_ACTOR_TYPE('RBRP', RBRP) +DEFINE_ACTOR_TYPE('RBRT', RBRT) +DEFINE_ACTOR_TYPE('RBSN', RBSN) +DEFINE_ACTOR_TYPE('RBVC', RBVC) +DEFINE_ACTOR_TYPE('RBWS', RBWS) +DEFINE_ACTOR_TYPE('RBWT', RBWT) +DEFINE_ACTOR_TYPE('RCFO', RCFO) +DEFINE_ACTOR_TYPE('RCHU', RCHU) +DEFINE_ACTOR_TYPE('RCMS', RCMS) +DEFINE_ACTOR_TYPE('RCSG', RCSG) +DEFINE_ACTOR_TYPE('RLST', RLST) +DEFINE_ACTOR_TYPE('RMA0', RMA0) +DEFINE_ACTOR_TYPE('RMA1', RMA1) +DEFINE_ACTOR_TYPE('RMA2', RMA2) +DEFINE_ACTOR_TYPE('RMA3', RMA3) +DEFINE_ACTOR_TYPE('RMAJ', RMAJ) +DEFINE_ACTOR_TYPE('RMBC', RMBC) +DEFINE_ACTOR_TYPE('RMBD', RMBD) +DEFINE_ACTOR_TYPE('RMC0', RMC0) +DEFINE_ACTOR_TYPE('RMC1', RMC1) +DEFINE_ACTOR_TYPE('RMC2', RMC2) +DEFINE_ACTOR_TYPE('RMC3', RMC3) +DEFINE_ACTOR_TYPE('RMC4', RMC4) +DEFINE_ACTOR_TYPE('RMC5', RMC5) +DEFINE_ACTOR_TYPE('RMC6', RMC6) +DEFINE_ACTOR_TYPE('RMDO', RMDO) +DEFINE_ACTOR_TYPE('RMDS', RMDS) +DEFINE_ACTOR_TYPE('RMF0', RMF0) +DEFINE_ACTOR_TYPE('RMF1', RMF1) +DEFINE_ACTOR_TYPE('RMFK', RMFK) +DEFINE_ACTOR_TYPE('RML0', RML0) +DEFINE_ACTOR_TYPE('RML1', RML1) +DEFINE_ACTOR_TYPE('RML2', RML2) +DEFINE_ACTOR_TYPE('RML3', RML3) +DEFINE_ACTOR_TYPE('RMLF', RMLF) +DEFINE_ACTOR_TYPE('RMM0', RMM0) +DEFINE_ACTOR_TYPE('RMM1', RMM1) +DEFINE_ACTOR_TYPE('RMM2', RMM2) +DEFINE_ACTOR_TYPE('RMM3', RMM3) +DEFINE_ACTOR_TYPE('RMM4', RMM4) +DEFINE_ACTOR_TYPE('RMS0', RMS0) +DEFINE_ACTOR_TYPE('RMS1', RMS1) +DEFINE_ACTOR_TYPE('RMS2', RMS2) +DEFINE_ACTOR_TYPE('RMS3', RMS3) +DEFINE_ACTOR_TYPE('RMS4', RMS4) +DEFINE_ACTOR_TYPE('RMS5', RMS5) +DEFINE_ACTOR_TYPE('RMSD', RMSD) +DEFINE_ACTOR_TYPE('RMSF', RMSF) +DEFINE_ACTOR_TYPE('RMSS', RMSS) +DEFINE_ACTOR_TYPE('RMST', RMST) +DEFINE_ACTOR_TYPE('RMSV', RMSV) +DEFINE_ACTOR_TYPE('RMSW', RMSW) +DEFINE_ACTOR_TYPE('RMT0', RMT0) +DEFINE_ACTOR_TYPE('RMT1', RMT1) +DEFINE_ACTOR_TYPE('RMT2', RMT2) +DEFINE_ACTOR_TYPE('RMT3', RMT3) +DEFINE_ACTOR_TYPE('RMT4', RMT4) +DEFINE_ACTOR_TYPE('RMTB', RMTB) +DEFINE_ACTOR_TYPE('RMTE', RMTE) +DEFINE_ACTOR_TYPE('RMTG', RMTG) +DEFINE_ACTOR_TYPE('RMTR', RMTR) +DEFINE_ACTOR_TYPE('RMTZ', RMTZ) +DEFINE_ACTOR_TYPE('RMV0', RMV0) +DEFINE_ACTOR_TYPE('RMV1', RMV1) +DEFINE_ACTOR_TYPE('RMVD', RMVD) +DEFINE_ACTOR_TYPE('RMVF', RMVF) +DEFINE_ACTOR_TYPE('RMVS', RMVS) +DEFINE_ACTOR_TYPE('RMVT', RMVT) +DEFINE_ACTOR_TYPE('RMVV', RMVV) +DEFINE_ACTOR_TYPE('RMVW', RMVW) +DEFINE_ACTOR_TYPE('RMW0', RMW0) +DEFINE_ACTOR_TYPE('RMW1', RMW1) +DEFINE_ACTOR_TYPE('RNTN', RNTN) +DEFINE_ACTOR_TYPE('ROCK', ROCK) +DEFINE_ACTOR_TYPE('RPMT', RPMT) +DEFINE_ACTOR_TYPE('RUPE', Rupee) +DEFINE_ACTOR_TYPE('RYAW', RYAW) +DEFINE_ACTOR_TYPE('SCCN', SCCN) +DEFINE_ACTOR_TYPE('SEAT', SEAT) +DEFINE_ACTOR_TYPE('SEFS', SEFS) +DEFINE_ACTOR_TYPE('SGMG', SGMG) +DEFINE_ACTOR_TYPE('SHDL', SHDL) +DEFINE_ACTOR_TYPE('SHIT', SHIT) +DEFINE_ACTOR_TYPE('SIRO', SIRO) +DEFINE_ACTOR_TYPE('SIRS', SIRS) +DEFINE_ACTOR_TYPE('SKDO', SKDO) +DEFINE_ACTOR_TYPE('SMCT', SMCT) +DEFINE_ACTOR_TYPE('SNMA', SNMA) +DEFINE_ACTOR_TYPE('SNMB', SNMB) +DEFINE_ACTOR_TYPE('SNOW', SNOW) +DEFINE_ACTOR_TYPE('SNST', SNST) +DEFINE_ACTOR_TYPE('SOGB', SOGB) +DEFINE_ACTOR_TYPE('SOGC', SOGC) +DEFINE_ACTOR_TYPE('SOLB', SoldierBoy) +DEFINE_ACTOR_TYPE('SOLC', SOLC) +DEFINE_ACTOR_TYPE('SOLD', Soldier) +DEFINE_ACTOR_TYPE('SOLF', SOLF) +DEFINE_ACTOR_TYPE('SOLG', SOLG) +DEFINE_ACTOR_TYPE('SOLT', SOLT) +DEFINE_ACTOR_TYPE('SPAR', SPAR) +DEFINE_ACTOR_TYPE('SPBM', SPBM) +DEFINE_ACTOR_TYPE('SPDR', SPDR) +DEFINE_ACTOR_TYPE('SPID', SPID) +DEFINE_ACTOR_TYPE('SPTG', SPTG) +DEFINE_ACTOR_TYPE('SPTR', SPTR) +DEFINE_ACTOR_TYPE('SPTT', SPTT) +DEFINE_ACTOR_TYPE('SRNM', SRNM) +DEFINE_ACTOR_TYPE('SRSL', SRSL) +DEFINE_ACTOR_TYPE('SRST', SRST) +DEFINE_ACTOR_TYPE('SSFC', SSFC) +DEFINE_ACTOR_TYPE('STCT', STCT) +DEFINE_ACTOR_TYPE('STFB', STFB) +DEFINE_ACTOR_TYPE('STFH', STFH) +DEFINE_ACTOR_TYPE('STLF', STLF) +DEFINE_ACTOR_TYPE('STLW', STLW) +DEFINE_ACTOR_TYPE('STTG', STTG) +DEFINE_ACTOR_TYPE('STWH', STWH) +DEFINE_ACTOR_TYPE('SWBM', SWBM) +DEFINE_ACTOR_TYPE('SWCH', SWCH) +DEFINE_ACTOR_TYPE('SWDS', SWDS) +DEFINE_ACTOR_TYPE('SWHI', SWHI) +DEFINE_ACTOR_TYPE('SWOB', SWOB) +DEFINE_ACTOR_TYPE('SWON', SWON) +DEFINE_ACTOR_TYPE('SWTM', SWTM) +DEFINE_ACTOR_TYPE('SYDE', SYDE) +DEFINE_ACTOR_TYPE('SYDL', SYDL) +DEFINE_ACTOR_TYPE('SYDS', SYDS) +DEFINE_ACTOR_TYPE('SYFI', SYFI) +DEFINE_ACTOR_TYPE('SYFO', SYFO) +DEFINE_ACTOR_TYPE('SYIL', SYIL) +DEFINE_ACTOR_TYPE('SYIS', SYIS) +DEFINE_ACTOR_TYPE('SYOL', SYOL) +DEFINE_ACTOR_TYPE('SYOS', SYOS) +DEFINE_ACTOR_TYPE('SYRN', SYRN) +DEFINE_ACTOR_TYPE('SYSL', SYSL) +DEFINE_ACTOR_TYPE('SYSN', SYSN) +DEFINE_ACTOR_TYPE('SYSS', SYSS) +DEFINE_ACTOR_TYPE('SYWA', SYWA) +DEFINE_ACTOR_TYPE('SYWL', SYWL) +DEFINE_ACTOR_TYPE('SYWS', SYWS) +DEFINE_ACTOR_TYPE('SZKL', SZKL) +DEFINE_ACTOR_TYPE('SZKU', SZKU) +DEFINE_ACTOR_TYPE('SZRD', SZRD) +DEFINE_ACTOR_TYPE('TBRD', TBRD) +DEFINE_ACTOR_TYPE('TCAM', TCAM) +DEFINE_ACTOR_TYPE('TCOW', TCOW) +DEFINE_ACTOR_TYPE('TDKT', TDKT) +DEFINE_ACTOR_TYPE('TEHT', TEHT) +DEFINE_ACTOR_TYPE('TERY', Beedle) +DEFINE_ACTOR_TYPE('TEVT', TEVT) +DEFINE_ACTOR_TYPE('TFAT', TFAT) +DEFINE_ACTOR_TYPE('TGTZ', TGTZ) +DEFINE_ACTOR_TYPE('THER', THER) +DEFINE_ACTOR_TYPE('TKYT', TKYT) +DEFINE_ACTOR_TYPE('TLKT', TLKT) +DEFINE_ACTOR_TYPE('TMNA', TMNA) +DEFINE_ACTOR_TYPE('TMNC', TMNC) +DEFINE_ACTOR_TYPE('TMNP', TMNP) +DEFINE_ACTOR_TYPE('TPDO', TPDO) +DEFINE_ACTOR_TYPE('TRAP', TRAP) +DEFINE_ACTOR_TYPE('TRBC', TRBC) +DEFINE_ACTOR_TYPE('TRCB', TRCB) +DEFINE_ACTOR_TYPE('TRER', TRER) +DEFINE_ACTOR_TYPE('TRIC', TRIC) +DEFINE_ACTOR_TYPE('TRLY', TRLY) +DEFINE_ACTOR_TYPE('TRRL', TRRL) +DEFINE_ACTOR_TYPE('TRSG', TRSG) +DEFINE_ACTOR_TYPE('TRSP', TRSP) +DEFINE_ACTOR_TYPE('TRTT', TRTT) +DEFINE_ACTOR_TYPE('TRUP', TRUP) +DEFINE_ACTOR_TYPE('TSCN', TSCN) +DEFINE_ACTOR_TYPE('TSLB', TSLB) +DEFINE_ACTOR_TYPE('TSMT', TSMT) +DEFINE_ACTOR_TYPE('TTET', TTET) +DEFINE_ACTOR_TYPE('TTFT', TTFT) +DEFINE_ACTOR_TYPE('TTKB', TTKB) +DEFINE_ACTOR_TYPE('TTUT', TTUT) +DEFINE_ACTOR_TYPE('TUTO', TUTO) +DEFINE_ACTOR_TYPE('TVLR', TVLR) +DEFINE_ACTOR_TYPE('VCCH', VCCH) +DEFINE_ACTOR_TYPE('VCFT', VCFT) +DEFINE_ACTOR_TYPE('VLCR', VLCR) +DEFINE_ACTOR_TYPE('VOLV', VOLV) +DEFINE_ACTOR_TYPE('VRGN', VRGN) +DEFINE_ACTOR_TYPE('WAMA', WAMA) +DEFINE_ACTOR_TYPE('WAWA', WAWA) +DEFINE_ACTOR_TYPE('WAWB', WAWB) +DEFINE_ACTOR_TYPE('WAWC', WAWC) +DEFINE_ACTOR_TYPE('WAWS', WAWS) +DEFINE_ACTOR_TYPE('WAWY', WAWY) +DEFINE_ACTOR_TYPE('WBEF', WBEF) +DEFINE_ACTOR_TYPE('WBN2', WBN2) +DEFINE_ACTOR_TYPE('WBPS', WBPS) +DEFINE_ACTOR_TYPE('WBTN', WBTN) +DEFINE_ACTOR_TYPE('WCAS', WCAS) +DEFINE_ACTOR_TYPE('WDBA', WDBA) +DEFINE_ACTOR_TYPE('WDRD', WDRD) +DEFINE_ACTOR_TYPE('WHMA', WHMA) +DEFINE_ACTOR_TYPE('WIDR', WIDR) +DEFINE_ACTOR_TYPE('WIDT', WIDT) +DEFINE_ACTOR_TYPE('WKTR', WKTR) +DEFINE_ACTOR_TYPE('WPBD', WPBD) +DEFINE_ACTOR_TYPE('WPCH', WPCH) +DEFINE_ACTOR_TYPE('WPCL', WPCL) +DEFINE_ACTOR_TYPE('WTBS', WTBS) +DEFINE_ACTOR_TYPE('WTH2', WTH2) +DEFINE_ACTOR_TYPE('WTH3', WTH3) +DEFINE_ACTOR_TYPE('WTTH', WTTH) +DEFINE_ACTOR_TYPE('WWFS', WWFS) +DEFINE_ACTOR_TYPE('YKAP', YKAP) +DEFINE_ACTOR_TYPE('YKCP', YKCP) +DEFINE_ACTOR_TYPE('YKEP', YKEP) +DEFINE_ACTOR_TYPE('YUKI', YUKI) +DEFINE_ACTOR_TYPE('YUKY', YUKY) +DEFINE_ACTOR_TYPE('YWIS', YWIS) +DEFINE_ACTOR_TYPE('ZELD', ZELD) +DEFINE_ACTOR_TYPE('ZLBB', ZLBB) +DEFINE_ACTOR_TYPE('ZLBS', ZLBS) +DEFINE_ACTOR_TYPE('ZLSL', ZLSL) +DEFINE_ACTOR_TYPE('ZLSN', ZLSN) +DEFINE_ACTOR_TYPE('ZLSS', ZLSS) +DEFINE_ACTOR_TYPE('ZSRS', ZSRS) +DEFINE_ACTOR_TYPE('ZSTG', ZSTG) diff --git a/include/Actor/ActorUnk_ov000_0209767c.hpp b/include/Actor/ActorUnk_ov000_0209767c.hpp deleted file mode 100644 index 3e3c4bd6..00000000 --- a/include/Actor/ActorUnk_ov000_0209767c.hpp +++ /dev/null @@ -1,36 +0,0 @@ -#pragma once - -#include "Actor/Actor.hpp" -#include "System/SysNew.hpp" -#include "types.h" - -class ActorUnk_ov000_0209767c : public SysObject { -public: - /* 00 (vtable) */ - /* 04 */ unk32 mUnk_04; - /* 08 */ unk32 mUnk_08; - /* 0c */ unk32 mUnk_0c; - /* 10 */ unk32 mUnk_10; - - ActorUnk_ov000_0209767c(u32 actorId); - - /* 00 */ virtual void vfunc_00() = 0; - /* 04 */ virtual void vfunc_04() = 0; - /* 08 */ virtual void vfunc_08() = 0; - /* 0c */ virtual Actor *Create() = 0; - /* 10 */ virtual void vfunc_10(); - /* 14 */ virtual void vfunc_14(); - /* 18 */ virtual void vfunc_18(); - /* 1c */ virtual void vfunc_1c(); - /* 20 */ virtual void vfunc_20(); - /* 24 */ virtual void vfunc_24(); - /* 28 */ virtual void vfunc_28() = 0; - /* 2c */ virtual void vfunc_2c() = 0; - /* 30 */ virtual void vfunc_30() = 0; - /* 34 */ virtual void vfunc_34() = 0; - /* 38 */ virtual void vfunc_38() = 0; - /* 3c */ virtual void vfunc_3c() = 0; - /* 40 */ virtual void vfunc_40() = 0; - /* 44 */ virtual void vfunc_44() = 0; - /* 48 */ -}; diff --git a/include/Actor/Course/ActorSCCN.hpp b/include/Actor/Course/ActorSCCN.hpp new file mode 100644 index 00000000..60a24ef8 --- /dev/null +++ b/include/Actor/Course/ActorSCCN.hpp @@ -0,0 +1,63 @@ +#pragma once + +#include "Actor/Actor.hpp" +#include "types.h" + +enum SCCNType { + SCCNType_None = 0, + SCCNType_FadeMain = 1, // Fades only main screen + SCCNType_NoEntranceWalk = 2, // No walk animation from entrance + SCCNType_CircleTransition = 3, + SCCNType_Unk1 = 4, // Crashes game? + SCCNType_Unk2 = 5, // Crashes game? + SCCNType_NoEntranceWalk2 = 6, + SCCNType_NoEntranceWalk3 = 7, + SCCNType_WalkNorth = 8, + SCCNType_WalkSouth = 9, + SCCNType_WhiteFade = 10, + SCCNType_WhiteFade2 = 11, + SCCNType_WhiteFade3 = 12, + SCCNType_WhiteFade4 = 13, + SCCNType_WhiteFade5 = 14, + SCCNType_CircleTransition2 = 15, + SCCNType_SlowWalk = 16, + SCCNType_ClockwiseStairs = 17, + SCCNType_CounterClockwiseStairs = 18, + SCCNType_ClockwiseStairsFade = 19, + SCCNType_CounterClockwiseStairsFade = 20, + SCCNType_FadeMain2 = 21, // Fades only main screen + SCCNType_CircleMain = 22, // Fades only main screen + SCCNType_ToOriginThenNorth = 23, // Walks to SCCN origin then north + SCCNType_ToOriginThenSouth = 24, // Walks to SCCN origin then south + SCCNType_BlueWarp = 25, + SCCNType_WalkStraight = 26, + SCCNType_ToOriginThenNorth2 = 27, // Walks to SCCN origin then north + SCCNType_SlowWalkQuickTransition = 28, + SCCNType_WalkStraightWhiteFade = 29, + SCCNType_NoEntranceWalk4 = 30, // No walk animation from entrance + SCCNType_ToOriginThenNorth3 = 31, // Walks to SCCN origin then north + SCCNType_ToOriginThenSouthWhite = 32, // Walks to SCCN origin then south + // more probably +}; + +class ActorSCCN : public Actor { +public: + /* 00 (base) */ + /* 94 */ unk32 mUnk_94; + /* 98 */ unk8 mUnk_98; + /* 99 */ unk8 mUnk_99; // gives knockback if not -1 + /* 9a */ unk8 mUnk_9a; + /* 9b */ SCCNType mUnk_9b : 8; + /* 9c */ unk32 mUnk_9c; + /* a0 */ q20 mUnk_a0; + /* a4 */ q20 mUnk_a4; + /* a8 */ q20 mUnk_a8; + /* ac */ q20 mUnk_ac; + /* b0 */ q20 mUnk_b0; + /* b4 */ q20 mUnk_b4; + /* b8 */ unk32 mUnk_b8; + /* bc */ unk32 mUnk_bc; + /* c0 */ unk32 mUnk_c0; + /* c4 */ unk32 mUnk_c4; + /* c8 */ +}; diff --git a/include/Unknown/UnkStruct_027e0ce4.hpp b/include/Unknown/UnkStruct_027e0ce4.hpp deleted file mode 100644 index 086a94ce..00000000 --- a/include/Unknown/UnkStruct_027e0ce4.hpp +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once - -#include "Actor/ActorUnk_ov000_020a8bb0.hpp" -#include "nitro/math.h" -#include "types.h" - -class UnkStruct_027e0ce4 { -public: - ActorUnk_ov000_020a8bb0 *func_01fff3b4(unk32 param1); -}; - -extern UnkStruct_027e0ce4 *data_027e0ce4; diff --git a/include/Unknown/UnkStruct_ov000_0208f820.hpp b/include/Unknown/UnkStruct_ov000_0208f820.hpp index 44941337..ba40baa4 100644 --- a/include/Unknown/UnkStruct_ov000_0208f820.hpp +++ b/include/Unknown/UnkStruct_ov000_0208f820.hpp @@ -3,6 +3,7 @@ #include "global.h" #include "types.h" +#include "Item/ItemManager.hpp" #include "System/SysNew.hpp" #include "nitro/math.h" diff --git a/include/global.h b/include/global.h index bfff0961..b887cae9 100644 --- a/include/global.h +++ b/include/global.h @@ -14,8 +14,16 @@ // `override` was added in C++11 before the DS, so we only use the keyword to indicate overriden functions #define override -// Define .sbss variables by using #pragma section sbss begin|end +#pragma define_section dtcm ".dtcm" \ + ".dtcm" +// Puts variables in the DTCM module +#define DTCM_BEGIN _Pragma("section dtcm begin") +#define DTCM_END _Pragma("section dtcm end") + #pragma define_section sbss ".data" \ ".sbss" +// Define .sbss variables +#define SBSS_BEGIN _Pragma("section sbss begin") +#define SBSS_END _Pragma("section sbss end") #endif diff --git a/src/000_Second/Actor/Actor.cpp b/src/000_Second/Actor/Actor.cpp index 5a4fc3ee..a7185aff 100644 --- a/src/000_Second/Actor/Actor.cpp +++ b/src/000_Second/Actor/Actor.cpp @@ -15,7 +15,7 @@ ARM Actor::Actor() { this->mUnk_50 = 0; this->mUnk_52 = 0; this->mUnk_54 = 0; - this->mUnk_58 = 0; + this->mFlags = 0; this->mUnk_84 = 0; this->mUnk_5c.func_ov000_020975f8(); this->mUnk_8c = 0; @@ -23,9 +23,9 @@ ARM Actor::Actor() { data_ov000_020b539c.func_02028cdc(&this->mUnk_5c, 0x30); this->mPrevPos = this->mPos = this->mUnk_5c.mUnk_00; this->mAngle = this->mUnk_5c.mUnk_0c; - this->mUnk_58 = 0x400B; - this->mUnk_44 = 0xFF; - this->mUnk_46 = 0; + this->mFlags = (1 << ActorFlag_Alive) | (1 << ActorFlag_Visible) | (1 << ActorFlag_Active) | (1 << ActorFlag_14); + this->mUnk_44 = 0xFF; + this->mUnk_46 = 0; this->func_ov000_0209862c(0); this->func_ov000_0209848c(data_ov000_020b539c.mUnk_30); } @@ -66,9 +66,9 @@ ARM unk32 Actor::vfunc_34() { } ARM void Actor::func_ov000_020984d0() { - this->mUnk_58 &= ~1; + UNSET_FLAG(&this->mFlags, ActorFlag_Alive); - if (this->mUnk_58 & 0x10000) { + if (GET_FLAG(&this->mFlags, ActorFlag_16)) { this->func_ov000_020984f0(); } } @@ -115,12 +115,12 @@ ARM unk32 Actor::vfunc_38(unk32 param1) { var_r3 = param1 >> 16; - if (this->mUnk_58 & 0x100) { + if (GET_FLAG(&this->mFlags, ActorFlag_8)) { return 0; } - this->mUnk_58 |= 0x100; - stack_c = this->mUnk_58; + SET_FLAG(&this->mFlags, ActorFlag_8); + stack_c = this->mFlags; switch (stack_c) { case 0x100: @@ -141,12 +141,12 @@ ARM unk32 Actor::vfunc_38(unk32 param1) { // non-matching ARM bool Actor::vfunc_3c(unk32 param2, Vec3p *param3) { - if (!(this->mUnk_58 & 0x100)) { + if (!GET_FLAG(&this->mFlags, ActorFlag_8)) { return false; } this->mVel = *param3; - this->mUnk_58 &= ~0x100; + UNSET_FLAG(&this->mFlags, ActorFlag_8); return true; } diff --git a/src/000_Second/Actor/ActorManager.cpp b/src/000_Second/Actor/ActorManager.cpp new file mode 100644 index 00000000..61df761d --- /dev/null +++ b/src/000_Second/Actor/ActorManager.cpp @@ -0,0 +1,19 @@ +#include "Actor/ActorManager.hpp" +#include "Actor/ActorId.hpp" +#include "global.h" + +static ActorId gActorTypeLookupTable[] = { +#define DEFINE_ACTOR_TYPE(id, name) ActorId_##name, +#include "Actor/ActorTypeTable.inl" +#undef DEFINE_ACTOR_TYPE +}; + +// static ActorTypeGetInstance gActorTypes[] = { +// #define DEFINE_ACTOR_TYPE(id, name) &ActorType##name::GetInstance, +// #include "Actor/ActorTypeTable.inl" +// #undef DEFINE_ACTOR_TYPE +// }; + +DTCM_BEGIN; +ActorManager *gActorManager; +DTCM_END; diff --git a/src/000_Second/Actor/ActorUnk_ov000_020a8bb0.cpp b/src/000_Second/Actor/ActorUnk_ov000_020a8bb0.cpp index feceb1fe..857bb623 100644 --- a/src/000_Second/Actor/ActorUnk_ov000_020a8bb0.cpp +++ b/src/000_Second/Actor/ActorUnk_ov000_020a8bb0.cpp @@ -1,6 +1,7 @@ #include "Actor/ActorUnk_ov000_020a8bb0.hpp" #include "Unknown/UnkStruct_027e09b8.hpp" #include "Unknown/UnkStruct_027e0cd8.hpp" +#include "flags.h" #include "global.h" ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a8ae0(q20 param1) { @@ -60,7 +61,7 @@ ARM ActorUnk_ov000_020a8bb0::~ActorUnk_ov000_020a8bb0() {} ARM unk32 ActorUnk_ov000_020a8bb0::vfunc_18(unk32 param1) { if (this->mUnk_70 == 0 && this->func_ov000_020a8dd0() != 0) { - this->mUnk_58 &= ~1; + UNSET_FLAG(&this->mFlags, ActorFlag_Alive); } if (this->mUnk_0b0 & 8) { @@ -164,7 +165,7 @@ ARM void ActorUnk_ov000_020a8bb0::vfunc_60() { } ARM bool ActorUnk_ov000_020a8bb0::vfunc_64() { - return this->mUnk_58 & 0x400; + return GET_FLAG(&this->mFlags, ActorFlag_Interacting); } ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a8ff4() {} @@ -172,7 +173,7 @@ ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a8ff4() {} ARM void ActorUnk_ov000_020a8bb0::vfunc_6c() {} ARM void ActorUnk_ov000_020a8bb0::vfunc_68() { - this->mUnk_58 &= ~0x400; + UNSET_FLAG(&this->mFlags, ActorFlag_Interacting); this->func_ov000_020a9200(); this->vfunc_ac(); this->mUnk_0b0 &= ~0x01; diff --git a/src/001_SceneInit/Actor/ActorManager_001.cpp b/src/001_SceneInit/Actor/ActorManager_001.cpp new file mode 100644 index 00000000..b74c71ec --- /dev/null +++ b/src/001_SceneInit/Actor/ActorManager_001.cpp @@ -0,0 +1,20 @@ +#include "Actor/ActorManager.hpp" +#include "global.h" + +THUMB void ActorManager::Create() {} +THUMB ActorManager::ActorManager() {} +THUMB ActorManager::~ActorManager() {} +THUMB void ActorManager::func_ov001_020bafdc() {} +THUMB void ActorManager::func_ov001_020bb018(s32 param1) {} +THUMB void ActorManager::func_ov001_020bb414() {} +THUMB void ActorManager::func_ov001_020bb488() {} +THUMB void ActorManager::func_ov001_020bb548() {} +THUMB void ActorManager::func_ov001_020bb630() {} +THUMB void ActorManager::func_ov001_020bb6b0(s32 *param1) {} +THUMB bool ActorManager::func_ov001_020bb728(s32 param1) {} +THUMB void ActorManager::func_ov001_020bb7b0(s32 param1) {} +THUMB void ActorManager::func_ov001_020bb7f0() {} +THUMB void ActorManager::func_ov001_020bb824() {} +THUMB void ActorManager::func_ov001_020bb844() {} +THUMB void ActorManager::SetInstance(ActorManager *instance) {} +THUMB void ActorManager::ClearInstance() {} diff --git a/src/031_Land/Actor/ActorRupee.cpp b/src/031_Land/Actor/ActorRupee.cpp index 8fb29b03..8e7c22d0 100644 --- a/src/031_Land/Actor/ActorRupee.cpp +++ b/src/031_Land/Actor/ActorRupee.cpp @@ -16,23 +16,23 @@ extern "C" unk32 func_ov031_0210af50(u16, unk32 *); extern void func_ov031_0210b0e4(u16, unk32); extern "C" unk32 func_ov031_020d9834(unk32 *); -extern UnkStruct_ov000_020b539c_30 data_ov031_021166e8; +extern ActorTypeRupee ActorTypeRupee::gInstance; extern unk32 *data_027e0d34; -ARM UnkStruct_ov000_020b539c_30 *ActorRupee::func_ov031_020e8cb8() { - return &data_ov031_021166e8; +ARM ActorTypeRupee *ActorTypeRupee::GetInstance() { + return &ActorTypeRupee::gInstance; } -ARM Actor *ActorRupeeBase::Create() { +ARM Actor *ActorTypeRupee::Create() { return new(2, 4) ActorRupee(); } -ARM ActorRupeeBase::ActorRupeeBase() : - ActorUnk_ov000_0209767c(ActorId_Rupee) { - this->mUnk_04 = 0; - this->mUnk_08 = 0x556; - this->mUnk_0c = 0; - this->mUnk_10 = 0x556; +ARM ActorTypeRupee::ActorTypeRupee() : + ActorType(ActorId_Rupee) { + this->mData.mUnk_00 = 0; + this->mData.mUnk_04 = 0x556; + this->mData.mUnk_08 = 0; + this->mData.mUnk_0c = 0x556; } // non-matching @@ -111,7 +111,7 @@ ARM void ActorRupee::func_ov031_020e9108() { this->mVel.x = gRandom.Next(-0xCD, 0x19B); this->mVel.y = gRandom.Next(0, 0x19A); this->mVel.z = gRandom.Next(-0xCD, 0x19B); - this->mUnk_58 |= 0x02; + SET_FLAG(&this->mFlags, ActorFlag_Visible); } ARM void ActorRupee::func_ov031_020e91a8() { @@ -141,7 +141,7 @@ ARM void ActorRupee::func_ov031_020e9234() { this->mVel.x = 0; this->mVel.y = 0; this->mVel.z = 0; - this->mUnk_58 |= 0x02; + SET_FLAG(&this->mFlags, ActorFlag_Visible); } ARM void ActorRupee::func_ov031_020e9254() { @@ -236,11 +236,11 @@ ARM void ActorRupee::func_ov031_020e9438() { } ARM void ActorRupee::func_ov031_020e9450() { - this->func_ov017_020bf9c8(data_027e0ce4->func_01fff3b4(this->mUnk_bc)); + this->func_ov017_020bf9c8(gActorManager->func_01fff3b4(this->mUnk_bc)); this->mPrevPos = this->mPos; Vec3p_Add(&this->mPos, &this->mVel, &this->mPos); - if (!(this->mUnk_58 & 0x20)) { + if (!GET_FLAG(&this->mFlags, ActorFlag_5)) { return; } @@ -260,7 +260,7 @@ ARM void ActorRupee::func_ov031_020e94d4() { this->mUnk_4a = 0; this->mUnk_44 = 0; this->mUnk_9c.func_ov000_02097bec(); - this->mUnk_58 &= ~0x02; + UNSET_FLAG(&this->mFlags, ActorFlag_Visible); } ARM void ActorRupee::func_ov031_020e951c() { @@ -310,7 +310,7 @@ ARM void ActorRupee::func_ov031_020e95b0() { ARM void ActorRupee::func_ov031_020e95c0() { ActorUnk_ov000_020a8bb0 *temp_r0; - temp_r0 = data_027e0ce4->func_01fff3b4(this->mUnk_c0); + temp_r0 = gActorManager->func_01fff3b4(this->mUnk_c0); if (temp_r0 == NULL) { this->func_ov031_020e9904(0); return; @@ -334,7 +334,7 @@ ARM void ActorRupee::func_ov031_020e9638() { this->mVel.x = 0; this->mVel.y = 0; this->mVel.z = 0; - this->mUnk_58 &= ~0x02; + UNSET_FLAG(&this->mFlags, ActorFlag_Visible); this->mUnk_c4.mUnk_04 = 0; if (this->mUnk_6e == 2) { @@ -364,7 +364,7 @@ ARM void ActorRupee::func_ov031_020e970c() { this->mVel.x = 0; this->mVel.y = 0; this->mVel.z = 0; - this->mUnk_58 |= 0x02; + SET_FLAG(&this->mFlags, ActorFlag_Visible); this->mUnk_4a = 1; this->mUnk_52 = -1; this->mUnk_50 = 0; @@ -664,7 +664,7 @@ ARM void ActorRupee::func_ov031_020e9d94() { u32 temp_r1; if (this->func_ov031_020e9e5c()) { - this->mUnk_58 |= 2; + SET_FLAG(&this->mFlags, ActorFlag_Visible); return; } @@ -689,9 +689,9 @@ ARM void ActorRupee::func_ov031_020e9d94() { temp_r1 = temp_r0 >> 0x1F; if ((this->mUnk_94 & 7) < 4) { - this->mUnk_58 &= ~2; + UNSET_FLAG(&this->mFlags, ActorFlag_Visible); } else { - this->mUnk_58 |= 2; + SET_FLAG(&this->mFlags, ActorFlag_Visible); } if (this->mUnk_94 < this->mUnk_96) { diff --git a/src/110_PlayerGet/PlayerGet.cpp b/src/110_PlayerGet/PlayerGet.cpp index e2f4277d..acbe57a6 100644 --- a/src/110_PlayerGet/PlayerGet.cpp +++ b/src/110_PlayerGet/PlayerGet.cpp @@ -1,6 +1,7 @@ #include #include "Actor/ActorId.hpp" +#include "Actor/ActorManager.hpp" #include "Player/PlayerGet.hpp" #include "System/OverlayManager.hpp" #include "Unknown/UnkStruct_020d8698.hpp" @@ -8,7 +9,6 @@ #include "Unknown/UnkStruct_027e09b8.hpp" #include "Unknown/UnkStruct_027e09bc.hpp" #include "Unknown/UnkStruct_027e0cd8.hpp" -#include "Unknown/UnkStruct_027e0ce4.hpp" #include "Unknown/UnkStruct_027e0ce8.hpp" #include "Unknown/UnkStruct_027e0cec.hpp" #include "Unknown/UnkStruct_ov000_02067bc4.hpp" @@ -349,14 +349,14 @@ ARM void PlayerGet::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1) { return; } - iVar10 = data_027e0ce4->func_01fff3b4(*(u32 *) this->mUnk_54.mUnk_00); + iVar10 = gActorManager->func_01fff3b4(*(u32 *) this->mUnk_54.mUnk_00); if (iVar10 == 0) { return; } if (iVar10->func_01fff458() == ActorId_NormalShield) { - iVar10->mUnk_58 &= ~2; + UNSET_FLAG(&(iVar10->mFlags), ActorFlag_Visible); iVar10->mUnk_4a = 0; } break; @@ -635,7 +635,7 @@ ARM void PlayerGet::vfunc_10(unk32 param1) { this->mUnk_30->func_ov000_020936ec(); if (((*(u16 *) this->mUnk_54.mUnk_00 << 0x10) >> 0x1E) == 1) { - temp_r0_3 = data_027e0ce4->func_01fff3b4(*(u32 *) this->mUnk_54.mUnk_00); + temp_r0_3 = gActorManager->func_01fff3b4(*(u32 *) this->mUnk_54.mUnk_00); if ((temp_r0_3 != NULL) && (temp_r0_3->func_01fff458() == ActorId_NormalShield)) { if (this->func_ov110_02186b8c()) { this->mUnk_28->pItemManager->mUnk_12 ^= 2;