diff --git a/config/eur/arm9/itcm/symbols.txt b/config/eur/arm9/itcm/symbols.txt index 7cbee55f..c07d2517 100644 --- a/config/eur/arm9/itcm/symbols.txt +++ b/config/eur/arm9/itcm/symbols.txt @@ -155,7 +155,7 @@ func_01ffd250 kind:function(arm,size=0x44) addr:0x01ffd250 func_01ffd294 kind:function(arm,size=0x11c) addr:0x01ffd294 func_01ffd3b0 kind:function(arm,size=0x28) addr:0x01ffd3b0 func_01ffd3d8 kind:function(arm,size=0x28) addr:0x01ffd3d8 -func_01ffd400 kind:function(arm,size=0x20) addr:0x01ffd400 +_ZN18UnkStruct_027e09a413func_01ffd400Ev kind:function(arm,size=0x20) addr:0x01ffd400 _ZN18UnkStruct_027e09b813func_01ffd420Ev kind:function(arm,size=0x1c) addr:0x01ffd420 func_01ffd43c kind:function(arm,size=0x60) addr:0x01ffd43c func_01ffd49c kind:function(arm,size=0x1a4) addr:0x01ffd49c diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 2e3112aa..36f43b68 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -189,9 +189,9 @@ func_ov000_02059168 kind:function(arm,size=0x28) addr:0x02059168 func_ov000_02059190 kind:function(arm,size=0x3c) addr:0x02059190 _ZN29UnkStruct_ov000_020b4ec4_BaseC2Ev kind:function(arm,size=0x20) addr:0x020591cc _ZN26UnkStruct_StackTitleScreenC1EPKci kind:function(arm,size=0x54) addr:0x020591ec -_ZN26UnkStruct_StackTitleScreen19func_ov000_02059240Ev kind:function(arm,size=0x30) addr:0x02059240 +_ZN26UnkStruct_StackTitleScreenD1Ev kind:function(arm,size=0x30) addr:0x02059240 _ZN26UnkStruct_StackTitleScreen19func_ov000_02059270EiPci kind:function(arm,size=0x18) addr:0x02059270 -func_ov000_02059288 kind:function(arm,size=0x18) addr:0x02059288 +_ZN26UnkStruct_StackTitleScreen19func_ov000_02059288EiPci kind:function(arm,size=0x18) addr:0x02059288 func_ov000_020592a0 kind:function(thumb,size=0x4c) addr:0x020592a0 func_ov000_020592ec kind:function(thumb,size=0x70) addr:0x020592ec func_ov000_0205935c kind:function(thumb,size=0xc) addr:0x0205935c @@ -986,7 +986,7 @@ func_ov000_02070134 kind:function(arm,size=0x14) addr:0x02070134 func_ov000_02070148 kind:function(arm,size=0x1c) addr:0x02070148 func_ov000_02070164 kind:function(arm,size=0xfc) addr:0x02070164 func_ov000_02070260 kind:function(arm,size=0x3c) addr:0x02070260 -func_ov000_0207029c kind:function(arm,size=0xc) addr:0x0207029c +_ZN18UnkStruct_027e09a019func_ov000_0207029cEi kind:function(arm,size=0xc) addr:0x0207029c func_ov000_020702a8 kind:function(arm,size=0x14) addr:0x020702a8 func_ov000_020702bc kind:function(arm,size=0x40) addr:0x020702bc func_ov000_020702fc kind:function(arm,size=0x14) addr:0x020702fc @@ -1000,7 +1000,7 @@ _ZN18UnkStruct_027e09a4D1Ev kind:function(arm,size=0x44) addr:0x020704f4 func_ov000_02070538 kind:function(arm,size=0xc) addr:0x02070538 func_ov000_02070544 kind:function(arm,size=0x10) addr:0x02070544 func_ov000_02070554 kind:function(arm,size=0xc) addr:0x02070554 -func_ov000_02070560 kind:function(arm,size=0xc) addr:0x02070560 +_ZN18UnkStruct_027e09a419func_ov000_02070560Ev kind:function(arm,size=0xc) addr:0x02070560 func_ov000_0207056c kind:function(arm,size=0x14) addr:0x0207056c func_ov000_02070580 kind:function(arm,size=0x1c) addr:0x02070580 func_ov000_0207059c kind:function(arm,size=0x4c) addr:0x0207059c @@ -2244,7 +2244,7 @@ func_ov000_02096cc8 kind:function(arm,size=0x24) addr:0x02096cc8 func_ov000_02096cec kind:function(arm,size=0x14) addr:0x02096cec func_ov000_02096d00 kind:function(arm,size=0x68) addr:0x02096d00 func_ov000_02096d68 kind:function(arm,size=0xdc) addr:0x02096d68 -func_ov000_02096e44 kind:function(arm,size=0x6c) addr:0x02096e44 +_ZN12ActorManager19func_ov000_02096e44Ei kind:function(arm,size=0x6c) addr:0x02096e44 func_ov000_02096eb0 kind:function(arm,size=0x38) addr:0x02096eb0 func_ov000_02096ee8 kind:function(arm,size=0x164) addr:0x02096ee8 func_ov000_0209704c kind:function(arm,size=0x7c) addr:0x0209704c @@ -2252,11 +2252,11 @@ func_ov000_020970c8 kind:function(arm,size=0xc4) addr:0x020970c8 func_ov000_0209718c kind:function(arm,size=0xb8) addr:0x0209718c func_ov000_02097244 kind:function(arm,size=0x44) addr:0x02097244 func_ov000_02097288 kind:function(arm,size=0x154) addr:0x02097288 -func_ov000_020973dc kind:function(arm,size=0xc) addr:0x020973dc -func_ov000_020973e8 kind:function(arm,size=0xc) addr:0x020973e8 +_ZN24UnkStruct_ov000_020b539c18func_ov000_02073dcEv kind:function(arm,size=0xc) addr:0x020973dc +_ZN24UnkStruct_ov000_020b539c18func_ov000_02073e8Ev kind:function(arm,size=0xc) addr:0x020973e8 func_ov000_020973f4 kind:function(arm,size=0x50) addr:0x020973f4 func_ov000_02097444 kind:function(arm,size=0x98) addr:0x02097444 -func_ov000_020974dc kind:function(arm,size=0x4c) addr:0x020974dc +_ZN24UnkStruct_ov000_020b539c19func_ov000_020974dcEj kind:function(arm,size=0x4c) addr:0x020974dc func_ov000_02097528 kind:function(arm,size=0x20) addr:0x02097528 func_ov000_02097548 kind:function(arm,size=0x78) addr:0x02097548 func_ov000_020975c0 kind:function(arm,size=0x1c) addr:0x020975c0 diff --git a/config/eur/arm9/overlays/ov001/delinks.txt b/config/eur/arm9/overlays/ov001/delinks.txt index 690f78b2..725b860b 100644 --- a/config/eur/arm9/overlays/ov001/delinks.txt +++ b/config/eur/arm9/overlays/ov001/delinks.txt @@ -7,3 +7,5 @@ src/001_SceneInit/Actor/ActorManager_001.cpp: .text start:0x020baf64 end:0x020bb87c + .rodata start:0x020c2624 end:0x020c264c + .data start:0x020c2b3c end:0x020c2c70 diff --git a/config/eur/arm9/overlays/ov001/relocs.txt b/config/eur/arm9/overlays/ov001/relocs.txt index 40bb3015..476382d7 100644 --- a/config/eur/arm9/overlays/ov001/relocs.txt +++ b/config/eur/arm9/overlays/ov001/relocs.txt @@ -2349,7 +2349,7 @@ from:0x020c1524 kind:load to:0x020c3508 module:overlay(1) from:0x020c1590 kind:load to:0x020c4701 module:overlay(1) from:0x020c159c kind:load to:0x020c2550 module:overlay(1) from:0x020c1608 kind:load to:0x020c4701 module:overlay(1) -from:0x020c1614 kind:load to:0x020c2628 module:overlay(1) +from:0x020c1614 kind:load to:0x020c2624 add:4 module:overlay(1) from:0x020c1680 kind:load to:0x020c4701 module:overlay(1) from:0x020c168c kind:load to:0x020c273c module:overlay(1) from:0x020c16f8 kind:load to:0x020c4701 module:overlay(1) diff --git a/config/eur/arm9/overlays/ov001/symbols.txt b/config/eur/arm9/overlays/ov001/symbols.txt index 27ce60e5..bd896a74 100644 --- a/config/eur/arm9/overlays/ov001/symbols.txt +++ b/config/eur/arm9/overlays/ov001/symbols.txt @@ -177,14 +177,14 @@ _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_020bb018EP36UnkStruct_func_ov001_020bb018_param2 kind:function(thumb,size=0x3fc) addr:0x020bb018 +_ZN12ActorManager19func_ov001_020bb414EPS_ 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_020bb7b0EP15ZeldaObjectList 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 @@ -473,7 +473,6 @@ data_ov001_020c25c0 kind:data(any) addr:0x020c25c0 data_ov001_020c25d4 kind:data(any) addr:0x020c25d4 data_ov001_020c25fc kind:data(any) addr:0x020c25fc data_ov001_020c2624 kind:data(any) addr:0x020c2624 -data_ov001_020c2628 kind:data(any) addr:0x020c2628 data_ov001_020c262e kind:data(any) addr:0x020c262e data_ov001_020c2638 kind:data(any) addr:0x020c2638 data_ov001_020c264c kind:data(any) addr:0x020c264c diff --git a/config/eur/arm9/overlays/ov021/symbols.txt b/config/eur/arm9/overlays/ov021/symbols.txt index 8944cc6b..5ce46dd4 100644 --- a/config/eur/arm9/overlays/ov021/symbols.txt +++ b/config/eur/arm9/overlays/ov021/symbols.txt @@ -443,9 +443,9 @@ func_ov021_020f879c kind:function(arm,size=0x18) addr:0x020f879c func_ov021_020f87b4 kind:function(arm,size=0x64) addr:0x020f87b4 func_ov021_020f8818 kind:function(arm,size=0x28) addr:0x020f8818 func_ov021_020f8840 kind:function(arm,size=0x458) addr:0x020f8840 -func_ov021_020f8c98 kind:function(arm,size=0x44) addr:0x020f8c98 -func_ov021_020f8cdc kind:function(arm,size=0x44) addr:0x020f8cdc -func_ov021_020f8d20 kind:function(arm,size=0x48) addr:0x020f8d20 +_ZN18UnkStruct_027e0cf4D1Ev kind:function(arm,size=0x44) addr:0x020f8c98 +_ZN18UnkStruct_027e0cf419func_ov021_020f8cdcEv kind:function(arm,size=0x44) addr:0x020f8cdc +_ZN18UnkStruct_027e0cf419func_ov021_020f8d20Ev kind:function(arm,size=0x48) addr:0x020f8d20 func_ov021_020f8d68 kind:function(arm,size=0x334) addr:0x020f8d68 func_ov021_020f909c kind:function(arm,size=0x48) addr:0x020f909c func_ov021_020f90e4 kind:function(arm,size=0x150) addr:0x020f90e4 diff --git a/config/eur/arm9/overlays/ov060/symbols.txt b/config/eur/arm9/overlays/ov060/symbols.txt index 2c01f334..4be772dc 100644 --- a/config/eur/arm9/overlays/ov060/symbols.txt +++ b/config/eur/arm9/overlays/ov060/symbols.txt @@ -249,7 +249,7 @@ func_ov060_0215e974 kind:function(arm,size=0xc) addr:0x0215e974 func_ov060_0215e980 kind:function(arm,size=0x24) addr:0x0215e980 func_ov060_0215e9a4 kind:function(arm,size=0x28) addr:0x0215e9a4 func_ov060_0215e9cc kind:function(arm,size=0xc4) addr:0x0215e9cc -func_ov060_0215ea90 kind:function(arm,size=0x6c) addr:0x0215ea90 +_ZN18UnkStruct_027e0d70D1Ev kind:function(arm,size=0x6c) addr:0x0215ea90 func_ov060_0215eafc kind:function(arm,size=0x14) addr:0x0215eafc func_ov060_0215eb10 kind:function(arm,size=0x14) addr:0x0215eb10 func_ov060_0215eb24 kind:function(arm,size=0x20) addr:0x0215eb24 diff --git a/config/eur/arm9/overlays/ov068/symbols.txt b/config/eur/arm9/overlays/ov068/symbols.txt index 75c6cb33..b816f3e7 100644 --- a/config/eur/arm9/overlays/ov068/symbols.txt +++ b/config/eur/arm9/overlays/ov068/symbols.txt @@ -253,7 +253,7 @@ func_ov068_0215e7e4 kind:function(arm,size=0xb0) addr:0x0215e7e4 func_ov068_0215e894 kind:function(arm,size=0xc) addr:0x0215e894 func_ov068_0215e8a0 kind:function(arm,size=0x28) addr:0x0215e8a0 func_ov068_0215e8c8 kind:function(arm,size=0x30) addr:0x0215e8c8 -func_ov068_0215e8f8 kind:function(arm,size=0x14) addr:0x0215e8f8 +_ZN18UnkStruct_027e0d7019func_ov068_0215e8f8Ev kind:function(arm,size=0x14) addr:0x0215e8f8 func_ov068_0215e90c kind:function(arm,size=0xc) addr:0x0215e90c func_ov068_0215e918 kind:function(arm,size=0x28) addr:0x0215e918 func_ov068_0215e940 kind:function(arm,size=0x54) addr:0x0215e940 diff --git a/config/eur/arm9/overlays/ov071/symbols.txt b/config/eur/arm9/overlays/ov071/symbols.txt index 932f9c08..0af41d8e 100644 --- a/config/eur/arm9/overlays/ov071/symbols.txt +++ b/config/eur/arm9/overlays/ov071/symbols.txt @@ -265,10 +265,10 @@ func_ov071_0215e7fc kind:function(arm,size=0xd8) addr:0x0215e7fc func_ov071_0215e8d4 kind:function(arm,size=0x24) addr:0x0215e8d4 func_ov071_0215e8f8 kind:function(arm,size=0x70) addr:0x0215e8f8 func_ov071_0215e968 kind:function(arm,size=0x44) addr:0x0215e968 -func_ov071_0215e9ac kind:function(arm,size=0x68) addr:0x0215e9ac +_ZN18UnkStruct_027e0d7019func_ov071_0215e9acEv kind:function(arm,size=0x68) addr:0x0215e9ac func_ov071_0215ea14 kind:function(arm,size=0x7c) addr:0x0215ea14 func_ov071_0215ea90 kind:function(arm,size=0x38) addr:0x0215ea90 -func_ov071_0215eac8 kind:function(arm,size=0x50) addr:0x0215eac8 +_ZN18UnkStruct_027e0d7019func_ov071_0215eac8Ev kind:function(arm,size=0x50) addr:0x0215eac8 func_ov071_0215eb18 kind:function(arm,size=0xc) addr:0x0215eb18 func_ov071_0215eb24 kind:function(arm,size=0x27c) addr:0x0215eb24 func_ov071_0215eda0 kind:function(arm,size=0x50) addr:0x0215eda0 diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index 29453d87..a51c72ab 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -606,7 +606,7 @@ _Z9SysDeletePv kind:function(arm,size=0x6c) addr:0x02011ea4 _Z13func_02011f10i kind:function(arm,size=0x20) addr:0x02011f10 _Z13func_02011f30i kind:function(arm,size=0xc) addr:0x02011f30 _Znwmjj kind:function(arm,size=0xb8) addr:0x02011f3c -_ZN9SysObjectdlEPv kind:function(arm,size=0xc) addr:0x02011ff4 +_ZdlPv kind:function(arm,size=0xc) addr:0x02011ff4 _ZN9SysObjectdaEPv kind:function(arm,size=0xc) addr:0x02012000 func_0201200c kind:function(arm,size=0x15c) addr:0x0201200c func_02012168 kind:function(arm,size=0x198) addr:0x02012168 diff --git a/config/jp/arm9/itcm/symbols.txt b/config/jp/arm9/itcm/symbols.txt index 7cbee55f..c07d2517 100644 --- a/config/jp/arm9/itcm/symbols.txt +++ b/config/jp/arm9/itcm/symbols.txt @@ -155,7 +155,7 @@ func_01ffd250 kind:function(arm,size=0x44) addr:0x01ffd250 func_01ffd294 kind:function(arm,size=0x11c) addr:0x01ffd294 func_01ffd3b0 kind:function(arm,size=0x28) addr:0x01ffd3b0 func_01ffd3d8 kind:function(arm,size=0x28) addr:0x01ffd3d8 -func_01ffd400 kind:function(arm,size=0x20) addr:0x01ffd400 +_ZN18UnkStruct_027e09a413func_01ffd400Ev kind:function(arm,size=0x20) addr:0x01ffd400 _ZN18UnkStruct_027e09b813func_01ffd420Ev kind:function(arm,size=0x1c) addr:0x01ffd420 func_01ffd43c kind:function(arm,size=0x60) addr:0x01ffd43c func_01ffd49c kind:function(arm,size=0x1a4) addr:0x01ffd49c diff --git a/config/jp/arm9/overlays/ov000/symbols.txt b/config/jp/arm9/overlays/ov000/symbols.txt index 11d3a968..f4b4a9cb 100644 --- a/config/jp/arm9/overlays/ov000/symbols.txt +++ b/config/jp/arm9/overlays/ov000/symbols.txt @@ -189,9 +189,9 @@ func_ov000_0205a6e8 kind:function(arm,size=0x28) addr:0x0205a6e8 func_ov000_0205a710 kind:function(arm,size=0x3c) addr:0x0205a710 _ZN29UnkStruct_ov000_020b4ec4_BaseC2Ev kind:function(arm,size=0x20) addr:0x0205a74c _ZN26UnkStruct_StackTitleScreenC1EPKci kind:function(arm,size=0x54) addr:0x0205a76c -_ZN26UnkStruct_StackTitleScreen19func_ov000_02059240Ev kind:function(arm,size=0x30) addr:0x0205a7c0 +_ZN26UnkStruct_StackTitleScreenD1Ev kind:function(arm,size=0x30) addr:0x0205a7c0 _ZN26UnkStruct_StackTitleScreen19func_ov000_02059270EiPci kind:function(arm,size=0x18) addr:0x0205a7f0 -func_ov000_0205a808 kind:function(arm,size=0x18) addr:0x0205a808 +_ZN26UnkStruct_StackTitleScreen19func_ov000_02059288EiPci kind:function(arm,size=0x18) addr:0x0205a808 func_ov000_0205a820 kind:function(thumb,size=0x46) addr:0x0205a820 func_ov000_0205a868 kind:function(thumb,size=0x7c) addr:0x0205a868 func_ov000_0205a8e4 kind:function(thumb,size=0xc) addr:0x0205a8e4 @@ -987,7 +987,7 @@ func_ov000_020717ec kind:function(arm,size=0x14) addr:0x020717ec func_ov000_02071800 kind:function(arm,size=0x1c) addr:0x02071800 func_ov000_02070164 kind:function(arm,size=0xfc) addr:0x0207181c func_ov000_02071918 kind:function(arm,size=0x3c) addr:0x02071918 -func_ov000_02071954 kind:function(arm,size=0xc) addr:0x02071954 +_ZN18UnkStruct_027e09a019func_ov000_0207029cEi kind:function(arm,size=0xc) addr:0x02071954 func_ov000_02071960 kind:function(arm,size=0x14) addr:0x02071960 func_ov000_02071974 kind:function(arm,size=0x40) addr:0x02071974 func_ov000_020719b4 kind:function(arm,size=0x14) addr:0x020719b4 @@ -1001,7 +1001,7 @@ _ZN18UnkStruct_027e09a4D1Ev kind:function(arm,size=0x44) addr:0x02071bac func_ov000_02071bf0 kind:function(arm,size=0xc) addr:0x02071bf0 func_ov000_02071bfc kind:function(arm,size=0x10) addr:0x02071bfc func_ov000_02071c0c kind:function(arm,size=0xc) addr:0x02071c0c -func_ov000_02071c18 kind:function(arm,size=0xc) addr:0x02071c18 +_ZN18UnkStruct_027e09a419func_ov000_02070560Ev kind:function(arm,size=0xc) addr:0x02071c18 func_ov000_02071c24 kind:function(arm,size=0x14) addr:0x02071c24 func_ov000_02071c38 kind:function(arm,size=0x1c) addr:0x02071c38 func_ov000_02071c54 kind:function(arm,size=0x4c) addr:0x02071c54 @@ -2242,7 +2242,7 @@ func_ov000_0209847c kind:function(arm,size=0x24) addr:0x0209847c func_ov000_020984a0 kind:function(arm,size=0x14) addr:0x020984a0 func_ov000_020984b4 kind:function(arm,size=0x68) addr:0x020984b4 func_ov000_0209851c kind:function(arm,size=0xdc) addr:0x0209851c -func_ov000_020985f8 kind:function(arm,size=0x6c) addr:0x020985f8 +_ZN12ActorManager19func_ov000_02096e44Ei kind:function(arm,size=0x6c) addr:0x020985f8 func_ov000_02098664 kind:function(arm,size=0x38) addr:0x02098664 func_ov000_0209869c kind:function(arm,size=0x164) addr:0x0209869c func_ov000_02098800 kind:function(arm,size=0x7c) addr:0x02098800 @@ -2250,11 +2250,11 @@ func_ov000_0209887c kind:function(arm,size=0xc4) addr:0x0209887c func_ov000_02098940 kind:function(arm,size=0xb8) addr:0x02098940 func_ov000_020989f8 kind:function(arm,size=0x44) addr:0x020989f8 func_ov000_02098a3c kind:function(arm,size=0x154) addr:0x02098a3c -func_ov000_02098b90 kind:function(arm,size=0xc) addr:0x02098b90 -func_ov000_02098b9c kind:function(arm,size=0xc) addr:0x02098b9c +_ZN24UnkStruct_ov000_020b539c18func_ov000_02073dcEv kind:function(arm,size=0xc) addr:0x02098b90 +_ZN24UnkStruct_ov000_020b539c18func_ov000_02073e8Ev kind:function(arm,size=0xc) addr:0x02098b9c func_ov000_02098ba8 kind:function(arm,size=0x50) addr:0x02098ba8 func_ov000_02098bf8 kind:function(arm,size=0x98) addr:0x02098bf8 -func_ov000_02098c90 kind:function(arm,size=0x4c) addr:0x02098c90 +_ZN24UnkStruct_ov000_020b539c19func_ov000_020974dcEj kind:function(arm,size=0x4c) addr:0x02098c90 func_ov000_02098cdc kind:function(arm,size=0x20) addr:0x02098cdc func_ov000_02098cfc kind:function(arm,size=0x78) addr:0x02098cfc func_ov000_02098d74 kind:function(arm,size=0x1c) addr:0x02098d74 diff --git a/config/jp/arm9/overlays/ov001/delinks.txt b/config/jp/arm9/overlays/ov001/delinks.txt index ed52e679..ce92dac1 100644 --- a/config/jp/arm9/overlays/ov001/delinks.txt +++ b/config/jp/arm9/overlays/ov001/delinks.txt @@ -7,3 +7,5 @@ src/001_SceneInit/Actor/ActorManager_001.cpp: .text start:0x020bc7ac end:0x020bd0c4 + .rodata start:0x020c3e78 end:0x020c3ea0 + .data start:0x020c437c end:0x020c44b0 diff --git a/config/jp/arm9/overlays/ov001/relocs.txt b/config/jp/arm9/overlays/ov001/relocs.txt index 8ce90f3b..bf7c0223 100644 --- a/config/jp/arm9/overlays/ov001/relocs.txt +++ b/config/jp/arm9/overlays/ov001/relocs.txt @@ -2352,7 +2352,7 @@ from:0x020c2d78 kind:load to:0x020c4d5c module:overlay(1) from:0x020c2de4 kind:load to:0x020c5f41 module:overlay(1) from:0x020c2df0 kind:load to:0x020c3da4 module:overlay(1) from:0x020c2e5c kind:load to:0x020c5f41 module:overlay(1) -from:0x020c2e68 kind:load to:0x020c3e7c module:overlay(1) +from:0x020c2e68 kind:load to:0x020c3e78 add:4 module:overlay(1) from:0x020c2ed4 kind:load to:0x020c5f41 module:overlay(1) from:0x020c2ee0 kind:load to:0x020c3f90 module:overlay(1) from:0x020c2f4c kind:load to:0x020c5f41 module:overlay(1) diff --git a/config/jp/arm9/overlays/ov001/symbols.txt b/config/jp/arm9/overlays/ov001/symbols.txt index 63d5c9d3..c17fa51f 100644 --- a/config/jp/arm9/overlays/ov001/symbols.txt +++ b/config/jp/arm9/overlays/ov001/symbols.txt @@ -177,14 +177,14 @@ _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_020bb018EP36UnkStruct_func_ov001_020bb018_param2 kind:function(thumb,size=0x3fc) addr:0x020bc860 +_ZN12ActorManager19func_ov001_020bb414EPS_ 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_020bb7b0EP15ZeldaObjectList 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 @@ -472,7 +472,6 @@ data_ov001_020c3e14 kind:data(any) addr:0x020c3e14 data_ov001_020c3e28 kind:data(any) addr:0x020c3e28 data_ov001_020c3e50 kind:data(any) addr:0x020c3e50 data_ov001_020c3e78 kind:data(any) addr:0x020c3e78 -data_ov001_020c3e7c kind:data(any) addr:0x020c3e7c data_ov001_020c3e82 kind:data(any) addr:0x020c3e82 data_ov001_020c3e8c kind:data(any) addr:0x020c3e8c data_ov001_020c3ea0 kind:data(any) addr:0x020c3ea0 diff --git a/config/jp/arm9/overlays/ov021/symbols.txt b/config/jp/arm9/overlays/ov021/symbols.txt index 3d167dfb..df9dd81b 100644 --- a/config/jp/arm9/overlays/ov021/symbols.txt +++ b/config/jp/arm9/overlays/ov021/symbols.txt @@ -443,9 +443,9 @@ func_ov021_020fa134 kind:function(arm,size=0x18) addr:0x020fa134 func_ov021_020fa14c kind:function(arm,size=0x64) addr:0x020fa14c func_ov021_020fa1b0 kind:function(arm,size=0x28) addr:0x020fa1b0 func_ov021_020fa1d8 kind:function(arm,size=0x458) addr:0x020fa1d8 -func_ov021_020fa630 kind:function(arm,size=0x44) addr:0x020fa630 -func_ov021_020fa674 kind:function(arm,size=0x44) addr:0x020fa674 -func_ov021_020fa6b8 kind:function(arm,size=0x48) addr:0x020fa6b8 +_ZN18UnkStruct_027e0cf4D1Ev kind:function(arm,size=0x44) addr:0x020fa630 +_ZN18UnkStruct_027e0cf419func_ov021_020f8cdcEv kind:function(arm,size=0x44) addr:0x020fa674 +_ZN18UnkStruct_027e0cf419func_ov021_020f8d20Ev kind:function(arm,size=0x48) addr:0x020fa6b8 func_ov021_020fa700 kind:function(arm,size=0x334) addr:0x020fa700 func_ov021_020faa34 kind:function(arm,size=0x48) addr:0x020faa34 func_ov021_020faa7c kind:function(arm,size=0x150) addr:0x020faa7c diff --git a/config/jp/arm9/overlays/ov060/symbols.txt b/config/jp/arm9/overlays/ov060/symbols.txt index 920a88c4..84566693 100644 --- a/config/jp/arm9/overlays/ov060/symbols.txt +++ b/config/jp/arm9/overlays/ov060/symbols.txt @@ -249,7 +249,7 @@ func_ov060_021606b4 kind:function(arm,size=0xc) addr:0x021606b4 func_ov060_021606c0 kind:function(arm,size=0x24) addr:0x021606c0 func_ov060_021606e4 kind:function(arm,size=0x28) addr:0x021606e4 func_ov060_0216070c kind:function(arm,size=0xc4) addr:0x0216070c -func_ov060_021607d0 kind:function(arm,size=0x6c) addr:0x021607d0 +_ZN18UnkStruct_027e0d70D1Ev kind:function(arm,size=0x6c) addr:0x021607d0 func_ov060_0216083c kind:function(arm,size=0x14) addr:0x0216083c func_ov060_02160850 kind:function(arm,size=0x14) addr:0x02160850 func_ov060_02160864 kind:function(arm,size=0x20) addr:0x02160864 diff --git a/config/jp/arm9/overlays/ov068/symbols.txt b/config/jp/arm9/overlays/ov068/symbols.txt index 44768358..9938fe7a 100644 --- a/config/jp/arm9/overlays/ov068/symbols.txt +++ b/config/jp/arm9/overlays/ov068/symbols.txt @@ -257,7 +257,7 @@ func_ov068_02160848 kind:function(arm,size=0xb0) addr:0x02160848 func_ov068_021608f8 kind:function(arm,size=0xc) addr:0x021608f8 func_ov068_02160904 kind:function(arm,size=0x28) addr:0x02160904 func_ov068_0216092c kind:function(arm,size=0x30) addr:0x0216092c -func_ov068_0216095c kind:function(arm,size=0x14) addr:0x0216095c +_ZN18UnkStruct_027e0d7019func_ov068_0215e8f8Ev kind:function(arm,size=0x14) addr:0x0216095c func_ov068_02160970 kind:function(arm,size=0xc) addr:0x02160970 func_ov068_0216097c kind:function(arm,size=0x28) addr:0x0216097c func_ov068_021609a4 kind:function(arm,size=0x54) addr:0x021609a4 diff --git a/config/jp/arm9/overlays/ov071/symbols.txt b/config/jp/arm9/overlays/ov071/symbols.txt index 91cbce8e..177cb17f 100644 --- a/config/jp/arm9/overlays/ov071/symbols.txt +++ b/config/jp/arm9/overlays/ov071/symbols.txt @@ -266,10 +266,10 @@ func_ov071_021609e8 kind:function(arm,size=0xd8) addr:0x021609e8 func_ov071_02160ac0 kind:function(arm,size=0x24) addr:0x02160ac0 func_ov071_02160ae4 kind:function(arm,size=0x70) addr:0x02160ae4 func_ov071_02160b54 kind:function(arm,size=0x44) addr:0x02160b54 -func_ov071_02160b98 kind:function(arm,size=0x68) addr:0x02160b98 +_ZN18UnkStruct_027e0d7019func_ov071_0215e9acEv kind:function(arm,size=0x68) addr:0x02160b98 func_ov071_02160c00 kind:function(arm,size=0x7c) addr:0x02160c00 func_ov071_02160c7c kind:function(arm,size=0x38) addr:0x02160c7c -func_ov071_02160cb4 kind:function(arm,size=0x50) addr:0x02160cb4 +_ZN18UnkStruct_027e0d7019func_ov071_0215eac8Ev kind:function(arm,size=0x50) addr:0x02160cb4 func_ov071_02160d04 kind:function(arm,size=0xc) addr:0x02160d04 func_ov071_02160d10 kind:function(arm,size=0x27c) addr:0x02160d10 func_ov071_02160f8c kind:function(arm,size=0x50) addr:0x02160f8c diff --git a/config/jp/arm9/symbols.txt b/config/jp/arm9/symbols.txt index e2f76882..e8ed245a 100644 --- a/config/jp/arm9/symbols.txt +++ b/config/jp/arm9/symbols.txt @@ -606,7 +606,7 @@ _Z9SysDeletePv kind:function(arm,size=0x6c) addr:0x02011ea4 _Z13func_02011f10i kind:function(arm,size=0x20) addr:0x02011f10 _Z13func_02011f30i kind:function(arm,size=0xc) addr:0x02011f30 _Znwmjj kind:function(arm,size=0xb8) addr:0x02011f3c -_ZN9SysObjectdlEPv kind:function(arm,size=0xc) addr:0x02011ff4 +_ZdlPv kind:function(arm,size=0xc) addr:0x02011ff4 _ZN9SysObjectdaEPv kind:function(arm,size=0xc) addr:0x02012000 func_0201200c kind:function(arm,size=0x15c) addr:0x0201200c func_02012168 kind:function(arm,size=0x198) addr:0x02012168 diff --git a/docs/overlays.md b/docs/overlays.md index 8957e22a..1290f38f 100644 --- a/docs/overlays.md +++ b/docs/overlays.md @@ -79,11 +79,11 @@ Each overlay is tied to an index which is used to access the overlay in two diff `068` | FldAjito | `056` | | `069` | FldRabbit | `057` | | `070` | Dungeon | `031` | | -`071` | Tower | `033` | | +`071` | Tower | `033` | `8` | `072` | TowerLobby | `034` | | -`073` | BossDeago | `040` | | -`074` | BossLast1 | `041` | | -`075` | BossLast2 | `042` | | +`073` | BossDeago | `040` | `8` | +`074` | BossLast1 | `041` | `8` | +`075` | BossLast2 | `042` | `8` | `076` | DgnLv1 | `071` | | `077` | DgnForest | `043` | | `078` | BossForest | `035` | | diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp index ad1dc85d..7cb151c0 100644 --- a/include/Actor/Actor.hpp +++ b/include/Actor/Actor.hpp @@ -5,6 +5,7 @@ #include "Actor/ActorType.hpp" #include "Physics/Cylinder.hpp" #include "System/SysNew.hpp" +#include "flags.h" #include "global.h" #include "nitro/math.h" #include "types.h" @@ -32,42 +33,46 @@ public: /* 00 */ Actor_5c_Base mUnk_00[3]; /* 30 */ ActorType *mUnk_30; /* 34 */ + + ActorType **func_ov000_02073dc(); + ActorType **func_ov000_02073e8(); + ActorType *func_ov000_020974dc(u32 id); }; 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_Grabbed, - 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, + ActorFlag_Alive = FLAG(0, 0), + ActorFlag_Visible = FLAG(0, 1), + ActorFlag_2 = FLAG(0, 2), + ActorFlag_Active = FLAG(0, 3), // stops updating if false + ActorFlag_4 = FLAG(0, 4), + ActorFlag_5 = FLAG(0, 5), + ActorFlag_6 = FLAG(0, 6), + ActorFlag_7 = FLAG(0, 7), + ActorFlag_Grabbed = FLAG(0, 8), + ActorFlag_9 = FLAG(0, 9), + ActorFlag_Interacting = FLAG(0, 10), // set when player interacts with actor + ActorFlag_11 = FLAG(0, 11), + ActorFlag_12 = FLAG(0, 12), + ActorFlag_13 = FLAG(0, 13), + ActorFlag_14 = FLAG(0, 14), + ActorFlag_15 = FLAG(0, 15), + ActorFlag_16 = FLAG(0, 16), + ActorFlag_17 = FLAG(0, 17), + ActorFlag_18 = FLAG(0, 18), + ActorFlag_19 = FLAG(0, 19), + ActorFlag_20 = FLAG(0, 20), + ActorFlag_21 = FLAG(0, 21), + ActorFlag_22 = FLAG(0, 22), + ActorFlag_23 = FLAG(0, 23), + ActorFlag_24 = FLAG(0, 24), + ActorFlag_25 = FLAG(0, 25), + ActorFlag_26 = FLAG(0, 26), + ActorFlag_27 = FLAG(0, 27), + ActorFlag_28 = FLAG(0, 28), + ActorFlag_29 = FLAG(0, 29), + ActorFlag_30 = FLAG(0, 30), + ActorFlag_31 = FLAG(0, 31), }; class Actor : public SysObject { @@ -94,7 +99,7 @@ public: /* 50 */ volatile u16 mUnk_50; /* 52 */ u16 mUnk_52; /* 54 */ unk32 mUnk_54; - /* 58 */ ActorFlags mFlags; + /* 58 */ ActorFlags mFlags[1]; /* 5c */ Actor_5c mUnk_5c; /* 6c */ u16 mUnk_6c; // actor user id? /* 6e */ u16 mUnk_6e; @@ -138,6 +143,10 @@ public: unk32 func_01fff5d0(unk32 param1, unk32 param2); + void ResetFlags() { + *(u32 *) this->mFlags = 0; + } + Actor(); void func_ov000_0209848c(ActorType *param1); void func_ov000_020984b0(); diff --git a/include/Actor/ActorManager.hpp b/include/Actor/ActorManager.hpp index 5b933e5f..a6e1fdbc 100644 --- a/include/Actor/ActorManager.hpp +++ b/include/Actor/ActorManager.hpp @@ -1,47 +1,67 @@ #pragma once #include "Actor/ActorUnk_ov000_020a8bb0.hpp" +#include "System/SysNew.hpp" +#include "Unknown/Common.hpp" +#include "files.h" #include "types.h" -class ActorManager { +struct UnkStruct_func_ov001_020bb018_param2 { + /* 00 */ STRUCT_PAD(0x00, 0x08); + /* 08 */ u16 mUnk_08; + /* 08 */ u16 mUnk_0A; +}; + +class ActorManager : public SysObject { 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]; + /* 10 */ unk8 mUnk_10; + /* 10 */ unk8 mUnk_11; + /* 10 */ unk8 mUnk_12; + /* 10 */ unk8 mUnk_13; + /* 14 */ UnkStruct_ov019_020d24c8_28_258_00 mUnk_14; + /* 1c */ unk32 mUnk_1c; + /* 20 */ unk8 mUnk_20; + /* 21 */ unk8 mUnk_21; + /* 22 */ unk8 mUnk_22; + /* 23 */ unk8 mUnk_23; /* 24 */ unk32 mUnk_24; /* 28 */ unk32 mUnk_28; /* 2c */ unk32 mUnk_2c; /* 30 */ unk16 mUnk_30; - /* 32 */ unk8 mUnk_32[0x34 - 0x32]; + /* 32 */ unk8 mUnk_32; + /* 33 */ unk8 mUnk_33; /* 34 */ unk32 mUnk_34; /* 38 */ ActorManager(); ~ActorManager(); - static void SetInstance(ActorManager *instance); - static void ClearInstance(); - static void Create(); - static void Destroy(); + + ActorUnk_ov000_020a8bb0 *func_01fff3b4(unk32 param1); + + void func_ov000_02096e44(int index); + + int ClearInstance(); void func_ov001_020bafdc(); - void func_ov001_020bb018(s32 param1); - void func_ov001_020bb414(); + void func_ov001_020bb018(UnkStruct_func_ov001_020bb018_param2 *param1); 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_020bb7b0(ZeldaObjectList *pObjList); void func_ov001_020bb7f0(); + + static void SetInstance(ActorManager *instance); + static ActorManager *Create(); + static void Destroy(); + static void func_ov001_020bb414(ActorManager *instance); + static bool func_ov001_020bb728(s32 param1); 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/ActorType.hpp b/include/Actor/ActorType.hpp index f6c9e983..e37f5dc6 100644 --- a/include/Actor/ActorType.hpp +++ b/include/Actor/ActorType.hpp @@ -23,7 +23,7 @@ public: /* 2c */ unk32 mUnk_2c; /* 30 */ unk32 mUnk_30; /* 34 */ unk32 mUnk_34; - /* 38 */ unk8 mUnk_38; + /* 38 */ u8 mUnk_38; /* 39 */ unk8 mUnk_39; /* 3a */ diff --git a/include/Map/MapObjectId.hpp b/include/Map/MapObjectId.hpp new file mode 100644 index 00000000..36af389d --- /dev/null +++ b/include/Map/MapObjectId.hpp @@ -0,0 +1,9 @@ +#pragma once + +#include "types.h" + +enum MapObjectId { +#define DEFINE_MAP_OBJECT_TYPE(id, name) MapObjectId_##name = id, +#include "Map/MapObjectTypeTable.inl" +#undef DEFINE_MAP_OBJECT_TYPE +}; diff --git a/include/Map/MapObjectTypeTable.inl b/include/Map/MapObjectTypeTable.inl new file mode 100644 index 00000000..3ac796dd --- /dev/null +++ b/include/Map/MapObjectTypeTable.inl @@ -0,0 +1,265 @@ +// IMPORTANT: Map Object types must be sorted by ID! + +// DEFINE_MAP_OBJECT_TYPE(id, name) +DEFINE_MAP_OBJECT_TYPE('ACDS', ACDS) +DEFINE_MAP_OBJECT_TYPE('ACFR', ACFR) +DEFINE_MAP_OBJECT_TYPE('ACSN', ACSN) +DEFINE_MAP_OBJECT_TYPE('ACVC', ACVC) +DEFINE_MAP_OBJECT_TYPE('ACWT', ACWT) +DEFINE_MAP_OBJECT_TYPE('ARWL', ARWL) +DEFINE_MAP_OBJECT_TYPE('BBFL', BBFL) +DEFINE_MAP_OBJECT_TYPE('BFFL', BFFL) +DEFINE_MAP_OBJECT_TYPE('BFSP', BFSP) +DEFINE_MAP_OBJECT_TYPE('BKCT', BKCT) +DEFINE_MAP_OBJECT_TYPE('BLCC', BLCC) +DEFINE_MAP_OBJECT_TYPE('BLCE', BLCE) +DEFINE_MAP_OBJECT_TYPE('BLCK', BLCK) +DEFINE_MAP_OBJECT_TYPE('BLCM', BLCM) +DEFINE_MAP_OBJECT_TYPE('BLHL', BLHL) +DEFINE_MAP_OBJECT_TYPE('BLKF', BLKF) +DEFINE_MAP_OBJECT_TYPE('BLRB', BLRB) +DEFINE_MAP_OBJECT_TYPE('BLSR', BLSR) +DEFINE_MAP_OBJECT_TYPE('BLT3', BLT3) +DEFINE_MAP_OBJECT_TYPE('BLT4', BLT4) +DEFINE_MAP_OBJECT_TYPE('BLVC', BLVC) +DEFINE_MAP_OBJECT_TYPE('BMFL', BMFL) +DEFINE_MAP_OBJECT_TYPE('BREX', BREX) +DEFINE_MAP_OBJECT_TYPE('BRGL', BRGL) +DEFINE_MAP_OBJECT_TYPE('BRGS', BRGS) +DEFINE_MAP_OBJECT_TYPE('BRGW', BRGW) +DEFINE_MAP_OBJECT_TYPE('BRLI', BRLI) +DEFINE_MAP_OBJECT_TYPE('CHAI', CHAI) +DEFINE_MAP_OBJECT_TYPE('CLMN', CLMN) +DEFINE_MAP_OBJECT_TYPE('CRLL', CRLL) +DEFINE_MAP_OBJECT_TYPE('CRWL', CRWL) +DEFINE_MAP_OBJECT_TYPE('CSTL', CSTL) +DEFINE_MAP_OBJECT_TYPE('CTPT', CTPT) +DEFINE_MAP_OBJECT_TYPE('DFNC', DFNC) +DEFINE_MAP_OBJECT_TYPE('DNGN', DNGN) +DEFINE_MAP_OBJECT_TYPE('DOPA', DOPA) +DEFINE_MAP_OBJECT_TYPE('DRBK', DRBK) +DEFINE_MAP_OBJECT_TYPE('DRBR', DRBR) +DEFINE_MAP_OBJECT_TYPE('DRCG', DRCG) +DEFINE_MAP_OBJECT_TYPE('DRCK', DRCK) +DEFINE_MAP_OBJECT_TYPE('DRDS', DRDS) +DEFINE_MAP_OBJECT_TYPE('DRHS', DRHS) +DEFINE_MAP_OBJECT_TYPE('DRKY', DRKY) +DEFINE_MAP_OBJECT_TYPE('DRMC', DRMC) +DEFINE_MAP_OBJECT_TYPE('DRRS', DRRS) +DEFINE_MAP_OBJECT_TYPE('DRSN', DRSN) +DEFINE_MAP_OBJECT_TYPE('DRST', DRST) +DEFINE_MAP_OBJECT_TYPE('DRSW', DRSW) +DEFINE_MAP_OBJECT_TYPE('DRTC', DRTC) +DEFINE_MAP_OBJECT_TYPE('DRTW', DRTW) +DEFINE_MAP_OBJECT_TYPE('DRTY', DRTY) +DEFINE_MAP_OBJECT_TYPE('DRVC', DRVC) +DEFINE_MAP_OBJECT_TYPE('DRVT', DRVT) +DEFINE_MAP_OBJECT_TYPE('EBRD', EBRD) +DEFINE_MAP_OBJECT_TYPE('EFRF', EFRF) +DEFINE_MAP_OBJECT_TYPE('EFRS', EFRS) +DEFINE_MAP_OBJECT_TYPE('ETDK', ETDK) +DEFINE_MAP_OBJECT_TYPE('ETET', ETET) +DEFINE_MAP_OBJECT_TYPE('ETMW', ETMW) +DEFINE_MAP_OBJECT_TYPE('ETNL', ETNL) +DEFINE_MAP_OBJECT_TYPE('ETNM', ETNM) +DEFINE_MAP_OBJECT_TYPE('ETNS', ETNS) +DEFINE_MAP_OBJECT_TYPE('ETSD', ETSD) +DEFINE_MAP_OBJECT_TYPE('ETSW', ETSW) +DEFINE_MAP_OBJECT_TYPE('ETTV', ETTV) +DEFINE_MAP_OBJECT_TYPE('ETUS', ETUS) +DEFINE_MAP_OBJECT_TYPE('ETWP', ETWP) +DEFINE_MAP_OBJECT_TYPE('ETYG', ETYG) +DEFINE_MAP_OBJECT_TYPE('EXIT', EXIT) +DEFINE_MAP_OBJECT_TYPE('FLSP', FLSP) +DEFINE_MAP_OBJECT_TYPE('FNCE', FNCE) +DEFINE_MAP_OBJECT_TYPE('FRA1', FRA1) +DEFINE_MAP_OBJECT_TYPE('FRAI', FRAI) +DEFINE_MAP_OBJECT_TYPE('FRAM', FRAM) +DEFINE_MAP_OBJECT_TYPE('FRSH', FRSH) +DEFINE_MAP_OBJECT_TYPE('FRWL', FRWL) +DEFINE_MAP_OBJECT_TYPE('FSCT', FSCT) +DEFINE_MAP_OBJECT_TYPE('FSFR', FSFR) +DEFINE_MAP_OBJECT_TYPE('FSFS', FSFS) +DEFINE_MAP_OBJECT_TYPE('FSSN', FSSN) +DEFINE_MAP_OBJECT_TYPE('FSSV', FSSV) +DEFINE_MAP_OBJECT_TYPE('FST0', FST0) +DEFINE_MAP_OBJECT_TYPE('FST1', FST1) +DEFINE_MAP_OBJECT_TYPE('FST2', FST2) +DEFINE_MAP_OBJECT_TYPE('FST3', FST3) +DEFINE_MAP_OBJECT_TYPE('FSVC', FSVC) +DEFINE_MAP_OBJECT_TYPE('FSWT', FSWT) +DEFINE_MAP_OBJECT_TYPE('GATE', GATE) +DEFINE_MAP_OBJECT_TYPE('GBDR', GBDR) +DEFINE_MAP_OBJECT_TYPE('GELG', GELG) +DEFINE_MAP_OBJECT_TYPE('GRSG', GRSG) +DEFINE_MAP_OBJECT_TYPE('GRSS', GRSS) +DEFINE_MAP_OBJECT_TYPE('GRSV', GRSV) +DEFINE_MAP_OBJECT_TYPE('GSST', GSST) +DEFINE_MAP_OBJECT_TYPE('GTCT', GTCT) +DEFINE_MAP_OBJECT_TYPE('GTMT', GTMT) +DEFINE_MAP_OBJECT_TYPE('GTRB', GTRB) +DEFINE_MAP_OBJECT_TYPE('GTRK', GTRK) +DEFINE_MAP_OBJECT_TYPE('GTSN', GTSN) +DEFINE_MAP_OBJECT_TYPE('GTTN', GTTN) +DEFINE_MAP_OBJECT_TYPE('HOF0', HOF0) +DEFINE_MAP_OBJECT_TYPE('HOF1', HOF1) +DEFINE_MAP_OBJECT_TYPE('HOL0', HOL0) +DEFINE_MAP_OBJECT_TYPE('HOL1', HOL1) +DEFINE_MAP_OBJECT_TYPE('HOL2', HOL2) +DEFINE_MAP_OBJECT_TYPE('HOLB', HOLB) +DEFINE_MAP_OBJECT_TYPE('HOS0', HOS0) +DEFINE_MAP_OBJECT_TYPE('HOS1', HOS1) +DEFINE_MAP_OBJECT_TYPE('HOSB', HOSB) +DEFINE_MAP_OBJECT_TYPE('HOSO', HOSO) +DEFINE_MAP_OBJECT_TYPE('HOST', HOST) +DEFINE_MAP_OBJECT_TYPE('HOT0', HOT0) +DEFINE_MAP_OBJECT_TYPE('HOT1', HOT1) +DEFINE_MAP_OBJECT_TYPE('HOT2', HOT2) +DEFINE_MAP_OBJECT_TYPE('HOUS', HOUS) +DEFINE_MAP_OBJECT_TYPE('HOV0', HOV0) +DEFINE_MAP_OBJECT_TYPE('HOV1', HOV1) +DEFINE_MAP_OBJECT_TYPE('HOW0', HOW0) +DEFINE_MAP_OBJECT_TYPE('HOW1', HOW1) +DEFINE_MAP_OBJECT_TYPE('ICEB', ICEB) +DEFINE_MAP_OBJECT_TYPE('ICGR', ICGR) +DEFINE_MAP_OBJECT_TYPE('ITFL', ITFL) +DEFINE_MAP_OBJECT_TYPE('KNBN', KNBN) +DEFINE_MAP_OBJECT_TYPE('LEVS', LEVS) +DEFINE_MAP_OBJECT_TYPE('LTRW', LTRW) +DEFINE_MAP_OBJECT_TYPE('LTST', LTST) +DEFINE_MAP_OBJECT_TYPE('LVCM', LVCM) +DEFINE_MAP_OBJECT_TYPE('LVVT', LVVT) +DEFINE_MAP_OBJECT_TYPE('MBBS', MBBS) +DEFINE_MAP_OBJECT_TYPE('MBRB', MBRB) +DEFINE_MAP_OBJECT_TYPE('MBRG', MBRG) +DEFINE_MAP_OBJECT_TYPE('MTFS', MTFS) +DEFINE_MAP_OBJECT_TYPE('MTGT', MTGT) +DEFINE_MAP_OBJECT_TYPE('MTIC', MTIC) +DEFINE_MAP_OBJECT_TYPE('MTIR', MTIR) +DEFINE_MAP_OBJECT_TYPE('MTJR', MTJR) +DEFINE_MAP_OBJECT_TYPE('MTOR', MTOR) +DEFINE_MAP_OBJECT_TYPE('MTWD', MTWD) +DEFINE_MAP_OBJECT_TYPE('MTWR', MTWR) +DEFINE_MAP_OBJECT_TYPE('MZFE', MZFE) +DEFINE_MAP_OBJECT_TYPE('MZTR', MZTR) +DEFINE_MAP_OBJECT_TYPE('NPST', NPST) +DEFINE_MAP_OBJECT_TYPE('OJTH', OJTH) +DEFINE_MAP_OBJECT_TYPE('PLCT', PLCT) +DEFINE_MAP_OBJECT_TYPE('PLFM', PLFM) +DEFINE_MAP_OBJECT_TYPE('PLFR', PLFR) +DEFINE_MAP_OBJECT_TYPE('PLV2', PLV2) +DEFINE_MAP_OBJECT_TYPE('PRSH', PRSH) +DEFINE_MAP_OBJECT_TYPE('RCFL', RCFL) +DEFINE_MAP_OBJECT_TYPE('RDSD', RDSD) +DEFINE_MAP_OBJECT_TYPE('RKAG', RKAG) +DEFINE_MAP_OBJECT_TYPE('RLFL', RLFL) +DEFINE_MAP_OBJECT_TYPE('RLSG', RLSG) +DEFINE_MAP_OBJECT_TYPE('RNBO', RNBO) +DEFINE_MAP_OBJECT_TYPE('RPFL', RPFL) +DEFINE_MAP_OBJECT_TYPE('SAND', SAND) +DEFINE_MAP_OBJECT_TYPE('SBDE', SBDE) +DEFINE_MAP_OBJECT_TYPE('SHWB', SHWB) +DEFINE_MAP_OBJECT_TYPE('SKBN', SKBN) +DEFINE_MAP_OBJECT_TYPE('SKDI', SKDI) +DEFINE_MAP_OBJECT_TYPE('SKFR', SKFR) +DEFINE_MAP_OBJECT_TYPE('SKSN', SKSN) +DEFINE_MAP_OBJECT_TYPE('SKVC', SKVC) +DEFINE_MAP_OBJECT_TYPE('SKWT', SKWT) +DEFINE_MAP_OBJECT_TYPE('SPTB', SPTB) +DEFINE_MAP_OBJECT_TYPE('STAL', STAL) +DEFINE_MAP_OBJECT_TYPE('STAT', STAT) +DEFINE_MAP_OBJECT_TYPE('STDE', STDE) +DEFINE_MAP_OBJECT_TYPE('STDS', STDS) +DEFINE_MAP_OBJECT_TYPE('STIR', STIR) +DEFINE_MAP_OBJECT_TYPE('STNE', STNE) +DEFINE_MAP_OBJECT_TYPE('STSD', STSD) +DEFINE_MAP_OBJECT_TYPE('STSF', STSF) +DEFINE_MAP_OBJECT_TYPE('STSH', STSH) +DEFINE_MAP_OBJECT_TYPE('STSP', STSP) +DEFINE_MAP_OBJECT_TYPE('STSS', STSS) +DEFINE_MAP_OBJECT_TYPE('STSV', STSV) +DEFINE_MAP_OBJECT_TYPE('SWBR', SWBR) +DEFINE_MAP_OBJECT_TYPE('SWCB', SWCB) +DEFINE_MAP_OBJECT_TYPE('SWCR', SWCR) +DEFINE_MAP_OBJECT_TYPE('SWEY', SWEY) +DEFINE_MAP_OBJECT_TYPE('SWHT', SWHT) +DEFINE_MAP_OBJECT_TYPE('SWRA', SWRA) +DEFINE_MAP_OBJECT_TYPE('SWST', SWST) +DEFINE_MAP_OBJECT_TYPE('SWSW', SWSW) +DEFINE_MAP_OBJECT_TYPE('SWWN', SWWN) +DEFINE_MAP_OBJECT_TYPE('TATZ', TATZ) +DEFINE_MAP_OBJECT_TYPE('TBSD', TBSD) +DEFINE_MAP_OBJECT_TYPE('TBSF', TBSF) +DEFINE_MAP_OBJECT_TYPE('TBSS', TBSS) +DEFINE_MAP_OBJECT_TYPE('TCBT', TCBT) +DEFINE_MAP_OBJECT_TYPE('TDBP', TDBP) +DEFINE_MAP_OBJECT_TYPE('TDBR', TDBR) +DEFINE_MAP_OBJECT_TYPE('TDDR', TDDR) +DEFINE_MAP_OBJECT_TYPE('THAW', THAW) +DEFINE_MAP_OBJECT_TYPE('TMDE', TMDE) +DEFINE_MAP_OBJECT_TYPE('TMFR', TMFR) +DEFINE_MAP_OBJECT_TYPE('TMSB', TMSB) +DEFINE_MAP_OBJECT_TYPE('TMSN', TMSN) +DEFINE_MAP_OBJECT_TYPE('TMWT', TMWT) +DEFINE_MAP_OBJECT_TYPE('TOWN', TOWN) +DEFINE_MAP_OBJECT_TYPE('TRBB', TRBB) +DEFINE_MAP_OBJECT_TYPE('TRBF', TRBF) +DEFINE_MAP_OBJECT_TYPE('TRBL', TRBL) +DEFINE_MAP_OBJECT_TYPE('TRBM', TRBM) +DEFINE_MAP_OBJECT_TYPE('TRBR', TRBR) +DEFINE_MAP_OBJECT_TYPE('TRCC', TRCC) +DEFINE_MAP_OBJECT_TYPE('TRDA', TRDA) +DEFINE_MAP_OBJECT_TYPE('TRDR', TRDR) +DEFINE_MAP_OBJECT_TYPE('TRDT', TRDT) +DEFINE_MAP_OBJECT_TYPE('TREE', TREE) +DEFINE_MAP_OBJECT_TYPE('TREP', TREP) +DEFINE_MAP_OBJECT_TYPE('TRES', TRES) +DEFINE_MAP_OBJECT_TYPE('TRET', TRET) +DEFINE_MAP_OBJECT_TYPE('TRFI', TRFI) +DEFINE_MAP_OBJECT_TYPE('TRFO', TRFO) +DEFINE_MAP_OBJECT_TYPE('TRFS', TRFS) +DEFINE_MAP_OBJECT_TYPE('TRFV', TRFV) +DEFINE_MAP_OBJECT_TYPE('TRGE', TRGE) +DEFINE_MAP_OBJECT_TYPE('TRGM', TRGM) +DEFINE_MAP_OBJECT_TYPE('TRGW', TRGW) +DEFINE_MAP_OBJECT_TYPE('TRH0', TRH0) +DEFINE_MAP_OBJECT_TYPE('TRH1', TRH1) +DEFINE_MAP_OBJECT_TYPE('TRH2', TRH2) +DEFINE_MAP_OBJECT_TYPE('TRH3', TRH3) +DEFINE_MAP_OBJECT_TYPE('TRLS', TRLS) +DEFINE_MAP_OBJECT_TYPE('TRMA', TRMA) +DEFINE_MAP_OBJECT_TYPE('TRMR', TRMR) +DEFINE_MAP_OBJECT_TYPE('TRPI', TRPI) +DEFINE_MAP_OBJECT_TYPE('TRPT', TRPT) +DEFINE_MAP_OBJECT_TYPE('TRRA', TRRA) +DEFINE_MAP_OBJECT_TYPE('TRRC', TRRC) +DEFINE_MAP_OBJECT_TYPE('TRRD', TRRD) +DEFINE_MAP_OBJECT_TYPE('TRRS', TRRS) +DEFINE_MAP_OBJECT_TYPE('TRRW', TRRW) +DEFINE_MAP_OBJECT_TYPE('TRSA', TRSA) +DEFINE_MAP_OBJECT_TYPE('TRSD', TRSD) +DEFINE_MAP_OBJECT_TYPE('TRSH', TRSH) +DEFINE_MAP_OBJECT_TYPE('TRSN', TRSN) +DEFINE_MAP_OBJECT_TYPE('TRSR', TRSR) +DEFINE_MAP_OBJECT_TYPE('TRSS', TRSS) +DEFINE_MAP_OBJECT_TYPE('TRST', TRST) +DEFINE_MAP_OBJECT_TYPE('TRSW', TRSW) +DEFINE_MAP_OBJECT_TYPE('TRTF', TRTF) +DEFINE_MAP_OBJECT_TYPE('TRTS', TRTS) +DEFINE_MAP_OBJECT_TYPE('TRWA', TRWA) +DEFINE_MAP_OBJECT_TYPE('TRWS', TRWS) +DEFINE_MAP_OBJECT_TYPE('TSUB', TSUB) +DEFINE_MAP_OBJECT_TYPE('TWGS', TWGS) +DEFINE_MAP_OBJECT_TYPE('TWPG', TWPG) +DEFINE_MAP_OBJECT_TYPE('WDST', WDST) +DEFINE_MAP_OBJECT_TYPE('WHSW', WHSW) +DEFINE_MAP_OBJECT_TYPE('WLM0', WLM0) +DEFINE_MAP_OBJECT_TYPE('WLM1', WLM1) +DEFINE_MAP_OBJECT_TYPE('WLM2', WLM2) +DEFINE_MAP_OBJECT_TYPE('WLM3', WLM3) +DEFINE_MAP_OBJECT_TYPE('WLM4', WLM4) +DEFINE_MAP_OBJECT_TYPE('WLM5', WLM5) +DEFINE_MAP_OBJECT_TYPE('WLM6', WLM6) +DEFINE_MAP_OBJECT_TYPE('WLM7', WLM7) +DEFINE_MAP_OBJECT_TYPE('WLMS', WLMS) +DEFINE_MAP_OBJECT_TYPE('ZDPF', ZDPF) diff --git a/include/System/SysNew.hpp b/include/System/SysNew.hpp index d929c401..bc2d3a2a 100644 --- a/include/System/SysNew.hpp +++ b/include/System/SysNew.hpp @@ -27,7 +27,6 @@ enum HeapIndex_ { class SysObject { public: - static void operator delete(void *ptr); static void operator delete[](void *ptr); }; @@ -75,6 +74,8 @@ public: void func_02013014(); void func_02013070(); + void func_ov001_020ba588(unk32 param1, unk32 param2); + void func_ov018_020c4980(); void func_ov018_020c4a5c(); }; diff --git a/include/Unknown/Common.hpp b/include/Unknown/Common.hpp index ee7f6ed5..05ac9b62 100644 --- a/include/Unknown/Common.hpp +++ b/include/Unknown/Common.hpp @@ -233,10 +233,19 @@ public: } }; -class UnkStruct_ov019_020d24c8_28_258 { -public: +struct UnkStruct_ov019_020d24c8_28_258_00 { /* 00 */ void *mUnk_00; /* 04 */ unk32 mUnk_04; + + UnkStruct_ov019_020d24c8_28_258_00() {} + UnkStruct_ov019_020d24c8_28_258_00(void *param1, unk32 param2) : + mUnk_00(param1), + mUnk_04(param2) {} + void func_ov000_0205fc20(unk32 param1, unk32 param2, void *param3, void *param4); +}; + +class UnkStruct_ov019_020d24c8_28_258 : public UnkStruct_ov019_020d24c8_28_258_00 { +public: /* 08 */ unk16 mUnk_08; /* 0A */ union { //! TODO: figure out Vec2s mPos; @@ -257,8 +266,7 @@ public: }; UnkStruct_ov019_020d24c8_28_258(unk32 param1, unk32 param2) : - mUnk_00(0), - mUnk_04(0) { + UnkStruct_ov019_020d24c8_28_258_00(NULL, 0) { this->UnknownAction(param1, param2); } @@ -267,8 +275,6 @@ public: this->mUnk_12 = param1; this->mUnk_14 = param2; } - - void func_ov000_0205fc20(unk32 param1, unk32 param2, void *param3, void *param4); }; #define BTN_ID_NONE -1 @@ -844,3 +850,14 @@ public: unk32 func_ov000_02060c28(void); void func_ov000_02060bd8(unk32 param1); }; + +struct UnkStruct_StackTitleScreen { + /* 00 */ unk32 pad[5]; + /* 14 */ + + UnkStruct_StackTitleScreen(const char *path, unk32 param1); + ~UnkStruct_StackTitleScreen(); + + void func_ov000_02059270(unk32 param1, char *param2, unk32 param3); + void func_ov000_02059288(unk32 param1, char *param2, unk32 param3); +}; diff --git a/include/Unknown/UnkStruct_027e09a0.hpp b/include/Unknown/UnkStruct_027e09a0.hpp new file mode 100644 index 00000000..c2bf3ad5 --- /dev/null +++ b/include/Unknown/UnkStruct_027e09a0.hpp @@ -0,0 +1,27 @@ +#pragma once + +#include "global.h" +#include "types.h" + +struct UnkStruct_func_ov000_0207029c { + /* 00 */ STRUCT_PAD(0x00, 0x1D); + /* 20 */ u8 mUnk_1D; +}; + +struct UnkStruct_func_ov000_020702a8 { + /* 00 */ STRUCT_PAD(0x00, 0x20); + /* 20 */ unk16 mUnk_20; +}; + +class UnkStruct_027e09a0 { +public: + /* 00 */ unk32 mUnk_00; + + UnkStruct_027e09a0(); + ~UnkStruct_027e09a0(); + + UnkStruct_func_ov000_0207029c *func_ov000_0207029c(unk32 param1); + UnkStruct_func_ov000_020702a8 *func_ov000_020702a8(unk32 param1); +}; + +extern UnkStruct_027e09a0 *data_027e09a0; diff --git a/include/Unknown/UnkStruct_027e09a4.hpp b/include/Unknown/UnkStruct_027e09a4.hpp index 70b43701..9749d731 100644 --- a/include/Unknown/UnkStruct_027e09a4.hpp +++ b/include/Unknown/UnkStruct_027e09a4.hpp @@ -1,15 +1,65 @@ #pragma once #include "System/SysNew.hpp" +#include "global.h" #include "types.h" +struct UnkStruct_027e09a4_58_78 { + unk32 mUnk_00; + unk32 mUnk_04; + unk8 mUnk_08; + unk8 mUnk_09; + u8 mUnk_0A; +}; + +struct UnkStruct_func_01ffd400 { + /* 00 */ STRUCT_PAD(0x00, 0x10); + /* 1B */ unk32 mUnk_10; + /* 1B */ unk32 mUnk_14; + /* 1B */ unk8 mUnk_18; + /* 1B */ unk8 mUnk_19; + /* 1B */ unk8 mUnk_1A; + /* 1B */ u8 mUnk_1B; +}; + class UnkStruct_027e09a4 : public SysObject { public: /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0C */ u8 mUnk_0C; + /* 0D */ STRUCT_PAD(0x0D, 0x60); + /* 60 */ unk32 mUnk_60; + + bool UnkCheck(unk32 value) { + switch (value) { + case 0x03: + case 0x13: + case 0x42: + case 0x5A: + case 0x5B: + case 0x5D: + case 0x63: + return true; + case 0x5C: + case 0x5E: + case 0x5F: + case 0x60: + case 0x61: + case 0x62: + default: + break; + } + + return false; + } ~UnkStruct_027e09a4(); + UnkStruct_func_01ffd400 *func_01ffd400(); + unk8 func_ov000_02070bd0(unk32, unk32); + UnkStruct_027e09a4_58_78 *func_ov000_02070560(); void func_ov000_020707a8(void *param1); void func_ov000_02070834(void *param1); void func_ov000_0207087c(unk32 param1); diff --git a/include/Unknown/UnkStruct_027e0cd8.hpp b/include/Unknown/UnkStruct_027e0cd8.hpp index 8fadca21..3864be37 100644 --- a/include/Unknown/UnkStruct_027e0cd8.hpp +++ b/include/Unknown/UnkStruct_027e0cd8.hpp @@ -1,10 +1,70 @@ #pragma once +#include "files.h" #include "nitro/math.h" #include "types.h" class UnkStruct_027e0cd8_0c { public: + /* 000 (vtable) */ + /* 004 */ unk32 *mUnk_04; + /* 008 */ unk32 *mUnk_08; + /* 00c */ unk32 mUnk_0c; + /* 010 */ unk32 *mUnk_10; + /* 014 */ unk32 *mUnk_14; + /* 018 */ unk32 mUnk_18; + /* 01c */ unk32 *mUnk_1c; + /* 020 */ unk32 mUnk_20; + /* 024 */ unk32 *mUnk_24; + /* 028 */ unk32 mUnk_28; + /* 02c */ unk32 *mUnk_2c; + /* 030 */ unk32 mUnk_30; + /* 034 */ unk32 *mUnk_34; + /* 038 */ unk32 mUnk_38; + /* 03c */ unk32 mUnk_3c; + /* 040 */ unk32 mUnk_40; + /* 044 */ unk32 mUnk_44; + /* 048 */ unk32 mUnk_48; + /* 04c */ unk32 mUnk_4c; + /* 050 */ unk32 mUnk_50; + /* 054 */ unk32 mUnk_54; + /* 058 */ unk32 mUnk_58; + /* 05c */ unk32 mUnk_5c; + /* 060 */ unk32 mUnk_60; + /* 064 */ unk32 mUnk_64; + /* 068 */ unk32 mUnk_68; + /* 06c */ unk32 mUnk_6c; + /* 070 */ unk32 *mUnk_70; + /* 074 */ unk32 *mUnk_74; + /* 078 */ unk32 *mUnk_78; + /* 07c */ unk32 mUnk_7c; + /* 080 */ unk32 mUnk_80; + /* 084 */ unk32 mUnk_84; + /* 088 */ unk32 *mUnk_88; + /* 08c */ unk32 *mUnk_8c; + /* 090 */ unk32 mUnk_90; + /* 094 */ unk32 mUnk_94; + /* 098 */ unk32 mUnk_98; + /* 09c */ unk32 mUnk_9c; + /* 0a0 */ unk32 mUnk_a0; + /* 0a4 */ unk32 mUnk_a4; + /* 0a8 */ unk32 mUnk_a8; + /* 0ac */ unk32 mUnk_ac; + /* 0b0 */ unk32 mUnk_b0; + /* 0b4 */ ZeldaObjectList *mUnk_b4; + /* 0b8 */ ZeldaObjectList *mUnk_b8; + /* 0bc */ ZeldaObjectList *mUnk_bc; + /* 0c0 */ ZeldaObjectList *mUnk_c0; + /* 0c4 */ ZeldaObjectList *mUnk_c4; + /* 0c8 */ ZeldaObjectList *mUnk_c8; + /* 0cc */ ZeldaObjectList *mUnk_cc; + /* 0d0 */ ZeldaObjectList *mUnk_d0; + /* 0d4 */ ZeldaObjectList *mUnk_d4; + /* 0d8 */ ZeldaObjectList *mUnk_d8; + /* 0dc */ ZeldaObjectList *mUnk_dc[8]; + /* 0fc */ STRUCT_PAD(0xFC, 0x128); + /* 128 */ u16 mUnk_128; + /* 00 */ virtual void vfunc_00(); /* 04 */ virtual void vfunc_04(); /* 08 */ virtual void vfunc_08(); @@ -24,7 +84,7 @@ public: class UnkStruct_027e0cd8 { public: /* 00 */ unk32 mUnk_00; - /* 04 */ unk32 mUnk_04; + /* 04 */ unk32 *mUnk_04; /* 08 */ unk32 mUnk_08; /* 0c */ UnkStruct_027e0cd8_0c *mUnk_0c; /* 10 */ diff --git a/include/Unknown/UnkStruct_027e0cf4.hpp b/include/Unknown/UnkStruct_027e0cf4.hpp new file mode 100644 index 00000000..1ba47f3c --- /dev/null +++ b/include/Unknown/UnkStruct_027e0cf4.hpp @@ -0,0 +1,14 @@ +#pragma once + +#include "System/SysNew.hpp" +#include "types.h" + +class UnkStruct_027e0cf4 : public SysObject { +public: + ~UnkStruct_027e0cf4(); + void func_ov021_020f8cdc(); + void func_ov021_020f8d20(); +}; + +// gBattleGame? +extern UnkStruct_027e0cf4 *data_027e0cf4; diff --git a/include/Unknown/UnkStruct_027e0d70.hpp b/include/Unknown/UnkStruct_027e0d70.hpp new file mode 100644 index 00000000..55c203c7 --- /dev/null +++ b/include/Unknown/UnkStruct_027e0d70.hpp @@ -0,0 +1,14 @@ +#pragma once + +#include "System/SysNew.hpp" +#include "types.h" + +class UnkStruct_027e0d70 : public SysObject { +public: + ~UnkStruct_027e0d70(); + void func_ov068_0215e8f8(); + void func_ov071_0215e9ac(); + void func_ov071_0215eac8(); +}; + +extern UnkStruct_027e0d70 *data_027e0d70; diff --git a/include/files.h b/include/files.h new file mode 100644 index 00000000..cfc6d368 --- /dev/null +++ b/include/files.h @@ -0,0 +1,19 @@ +#pragma once + +#include "Map/MapObjectId.hpp" +#include "types.h" + +enum FileType { + FileType_ZOB = 'BLOZ', +}; + +// .zob +typedef struct ZeldaObjectList { + /* 00 */ FileType type; // always "ZOLB" + /* 04 */ unk32 nSize; // file size? + /* 08 */ unk16 unk_08; + /* 0a */ unk16 unk_0a; + /* 0c */ u16 nEntries; // number of entries + /* 0e */ unk16 unk_0e; + /* 10 */ u32 aIdList[]; // actor id or map object id +} ZeldaObjectList; diff --git a/include/flags.h b/include/flags.h index de9a4114..1bb5e197 100644 --- a/include/flags.h +++ b/include/flags.h @@ -14,3 +14,15 @@ #define SET_FLAG(arr, pos) ((arr)[((u32) (pos)) >> 5] |= 1 << ((pos) & 0x1F)) #define UNSET_FLAG(arr, pos) ((arr)[((u32) (pos)) >> 5] &= ~(1 << ((pos) & 0x1F))) #define FLAG(index, pos) (((index) << 5) | ((pos) & 0x1F)) + +//! TODO: improve or remove? idk +#define VA_NARGS_IMPL(_1, _2, _3, _4, N, ...) N +#define VA_NARGS(...) VA_NARGS_IMPL(__VA_ARGS__, 4, 3, 2, 1) +#define GET_FLAGS_1(f1) (1 << (f1)) +#define GET_FLAGS_2(f1, f2) GET_FLAGS_1(f1) | (1 << (f2)) +#define GET_FLAGS_3(f1, f2, f3) GET_FLAGS_2(f1, f2) | (1 << (f3)) +#define GET_FLAGS_4(f1, f2, f3, f4) GET_FLAGS_3(f1, f2, f3) | (1 << (f4)) +#define GET_FLAGS_IMPL2(N, ...) GET_FLAGS_##N(__VA_ARGS__) +#define GET_FLAGS_IMPL(N, ...) GET_FLAGS_IMPL2(N, __VA_ARGS__) +#define GET_FLAGS(...) GET_FLAGS_IMPL(VA_NARGS(__VA_ARGS__), __VA_ARGS__) +#define SET_FLAGS(arr, ...) (*(u32 *) arr = GET_FLAGS_IMPL(VA_NARGS(__VA_ARGS__), __VA_ARGS__)) diff --git a/include/global.h b/include/global.h index f99f9ebd..7f7fa319 100644 --- a/include/global.h +++ b/include/global.h @@ -47,4 +47,8 @@ #define SUBSCREEN_WIDTH 256 #define SUBSCREEN_HEIGHT 192 +#define ALIGN_PREV(X, N) ((X) & ~((N) - 1)) +#define ALIGN_NEXT(X, N) ALIGN_PREV(((X) + (N) - 1), N) +#define ALIGN(X, N) ((X + N) & ~N) + #endif diff --git a/src/000_Second/Actor/Actor.cpp b/src/000_Second/Actor/Actor.cpp index 8eb73245..7e31897f 100644 --- a/src/000_Second/Actor/Actor.cpp +++ b/src/000_Second/Actor/Actor.cpp @@ -16,7 +16,7 @@ ARM Actor::Actor() { this->mUnk_50 = 0; this->mUnk_52 = 0; this->mUnk_54 = 0; - this->mFlags = 0; + this->ResetFlags(); this->mUnk_84 = 0; this->mUnk_5c.func_ov000_020975f8(); this->mRef.Reset(); @@ -24,7 +24,7 @@ ARM Actor::Actor() { Copy256(&data_ov000_020b539c.mUnk_00, &this->mUnk_5c, sizeof(data_ov000_020b539c.mUnk_00)); this->mPrevPos = this->mPos = this->mUnk_5c.mUnk_00; this->mAngle = this->mUnk_5c.mUnk_0c; - this->mFlags = (1 << ActorFlag_Alive) | (1 << ActorFlag_Visible) | (1 << ActorFlag_Active) | (1 << ActorFlag_14); + SET_FLAGS(this->mFlags, ActorFlag_Alive, ActorFlag_Visible, ActorFlag_Active, ActorFlag_14); this->mUnk_44 = 0xFF; this->mUnk_46 = 0; this->func_ov000_0209862c(0); @@ -67,9 +67,9 @@ ARM unk32 Actor::vfunc_34() { } ARM void Actor::func_ov000_020984d0() { - UNSET_FLAG(&this->mFlags, ActorFlag_Alive); + UNSET_FLAG(this->mFlags, ActorFlag_Alive); - if (GET_FLAG(&this->mFlags, ActorFlag_16)) { + if (GET_FLAG(this->mFlags, ActorFlag_16)) { this->func_ov000_020984f0(); } } @@ -116,12 +116,12 @@ ARM unk32 Actor::vfunc_38(unk32 param1) { var_r3 = param1 >> 16; - if (GET_FLAG(&this->mFlags, ActorFlag_Grabbed)) { + if (GET_FLAG(this->mFlags, ActorFlag_Grabbed)) { return 0; } - SET_FLAG(&this->mFlags, ActorFlag_Grabbed); - stack_c = this->mFlags; + SET_FLAG(this->mFlags, ActorFlag_Grabbed); + stack_c = this->mFlags[0]; switch (stack_c) { case 0x100: @@ -142,12 +142,12 @@ ARM unk32 Actor::vfunc_38(unk32 param1) { // non-matching ARM bool Actor::vfunc_3c(unk32 param2, Vec3p *param3) { - if (!GET_FLAG(&this->mFlags, ActorFlag_Grabbed)) { + if (!GET_FLAG(this->mFlags, ActorFlag_Grabbed)) { return false; } this->mVel = *param3; - UNSET_FLAG(&this->mFlags, ActorFlag_Grabbed); + UNSET_FLAG(this->mFlags, ActorFlag_Grabbed); return true; } diff --git a/src/000_Second/Actor/ActorUnk_ov000_020a8bb0.cpp b/src/000_Second/Actor/ActorUnk_ov000_020a8bb0.cpp index 3c1b7999..90cbb563 100644 --- a/src/000_Second/Actor/ActorUnk_ov000_020a8bb0.cpp +++ b/src/000_Second/Actor/ActorUnk_ov000_020a8bb0.cpp @@ -61,7 +61,7 @@ ARM ActorUnk_ov000_020a8bb0::~ActorUnk_ov000_020a8bb0() {} ARM bool ActorUnk_ov000_020a8bb0::vfunc_18(unk32 param1) { if (this->mUnk_70 == 0 && this->func_ov000_020a8dd0() != 0) { - UNSET_FLAG(&this->mFlags, ActorFlag_Alive); + UNSET_FLAG(this->mFlags, ActorFlag_Alive); } if (this->mUnk_0b0 & 8) { @@ -165,7 +165,7 @@ ARM void ActorUnk_ov000_020a8bb0::vfunc_60() { } ARM bool ActorUnk_ov000_020a8bb0::vfunc_64() { - return GET_FLAG(&this->mFlags, ActorFlag_Interacting); + return GET_FLAG(this->mFlags, ActorFlag_Interacting); } ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a8ff4() {} @@ -173,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() { - UNSET_FLAG(&this->mFlags, ActorFlag_Interacting); + 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 index b74c71ec..087c978d 100644 --- a/src/001_SceneInit/Actor/ActorManager_001.cpp +++ b/src/001_SceneInit/Actor/ActorManager_001.cpp @@ -1,20 +1,412 @@ #include "Actor/ActorManager.hpp" +#include "System/OverlayManager.hpp" +#include "Unknown/UnkMemFuncs.h" +#include "Unknown/UnkStruct_027e09a0.hpp" +#include "Unknown/UnkStruct_027e09a4.hpp" +#include "Unknown/UnkStruct_027e09b8.hpp" +#include "Unknown/UnkStruct_027e0cd8.hpp" +#include "Unknown/UnkStruct_027e0cf4.hpp" +#include "Unknown/UnkStruct_027e0d70.hpp" +#include "flags.h" #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() {} +extern "C" { +void func_ov000_020977e4(); +void func_ov001_020ba59c(void *); +void func_ov021_020f8818(); +void func_ov031_020ea100(); +void func_ov071_0215e8d4(); +unk32 func_01ffd3b0(); +unk32 func_01ffd3d8(); +} + +struct UnkStruct_ov000_020ab1ac { + /* 00 */ u32 mUnk_00; + /* 04 */ u32 mUnk_04; + /* 08 */ u8 mUnk_08; + /* 09 */ u8 pad[3]; + /* 0C */ +}; +extern UnkStruct_ov000_020ab1ac data_ov000_020ab1ac[30]; + +const u32 data_ov001_020c2638[] = {ActorId_FOMC, ActorId_FOMA, ActorId_FOMB, ActorId_FOPD, ActorId_FOMR}; +const u16 data_ov001_020c2624[] = {0x01AE, 0x01AF, 0x01B0, 0x01B1, 0x01B2}; +const u16 data_ov001_020c262e[] = {0x01CB, 0x01CC, 0x01CD, 0x01CE, 0x01CF}; + +THUMB ActorManager *ActorManager::Create() { + return new(1, 4) ActorManager(); +} + +THUMB ActorManager::ActorManager() { + this->SetInstance(this); + this->mUnk_20 = 0; + this->mUnk_21 = 0; + this->mUnk_22 = 0; + this->mUnk_23 = 0; + this->mUnk_32 = 0; + this->mActorTable = NULL; + this->mActorTableEnd = NULL; + this->mUnk_08 = NULL; + this->mActorCount = 0; + this->mNextActorId = 0; + this->mUnk_10 = 0; + this->mUnk_14.mUnk_00 = NULL; + this->mUnk_14.mUnk_04 = 0; + this->mUnk_24 = 0; + this->mUnk_28 = 0; + this->mUnk_2c = 0; + this->mUnk_30 = 0; + this->mUnk_34 = 0; +} + +THUMB ActorManager::~ActorManager() { + if (this->mActorTable != NULL) { + delete this->mActorTable; + } + + this->ClearInstance(); +} + +THUMB void ActorManager::func_ov001_020bafdc() { + Actor **ppActorTable = this->mActorTable; + + while (ppActorTable != this->mUnk_08) { + Actor *pActor = *ppActorTable; + + if (pActor != NULL) { + // alive and uninitialized? + if (GET_FLAG(pActor->mFlags, ActorFlag_Alive) && !GET_FLAG(pActor->mFlags, ActorFlag_4)) { + pActor->vfunc_1c(); + SET_FLAG(pActor->mFlags, ActorFlag_4); + } + } + + ppActorTable++; + } +} + +// https://decomp.me/scratch/UywfM +THUMB void ActorManager::func_ov001_020bb018(UnkStruct_func_ov001_020bb018_param2 *param1) { + u16 unk_0A = param1->mUnk_0A; + u16 unk_08 = param1->mUnk_08; + + this->mActorCount = 0; + this->mNextActorId = 0; + this->mUnk_10 = 0; + this->mUnk_34 = 0; + + int aligned0A = ALIGN_NEXT(unk_0A, 8); + int aligned08 = ALIGN_NEXT(unk_08, 8); + + int iVar5 = data_027e09a0->func_ov000_020702a8(data_027e09a4->mUnk_00)->mUnk_20; + + s32 allocCount; + if (data_027e09a4->mUnk_60 == 0) { + allocCount = aligned0A + 0x40; + } else { + allocCount = aligned0A + 0x80; + } + + if (this->mActorTable != NULL) { + delete this->mActorTable; + } + + this->mActorTable = (Actor **) ::operator new(allocCount * 4, HeapIndex_1); + this->mActorTableEnd = this->mActorTable + allocCount * 4; + + size_t iVar9 = ((this->mActorTable + allocCount * 4) - this->mActorTable); + Fill32(0, this->mActorTable, (iVar9 * 4)); + this->mUnk_08 = this->mActorTable; + data_0204999c.func_ov001_020ba588(aligned08 + iVar5, 0x100); + + // it's 2 when we are on the title screen and 0 during normal gameplay, is it the game mode ? + if (data_027e09a4->mUnk_60 != 2) { + unk32 iVar5; + + if (func_01ffd3b0() != 0) { + iVar5 = data_027e09a4->mUnk_00; + + if (iVar5 == 0x3E) { + this->mUnk_34 = 0xFFFFECCD; // ~0x1332 + } + + this->mUnk_14.func_ov000_0205fc20(0x5D, 0x22, NULL, 0); + + { + UnkStruct_StackTitleScreen auStack_28("Npc/Tex.bin", 1); + auStack_28.func_ov000_02059270(0x07, "zdf_sw_trace", 0x39200000); + auStack_28.func_ov000_02059270(0x08, "zdf_sword02", 0x19150000); + auStack_28.func_ov000_02059270(0x0A, "whip", 0x28000000); + + auStack_28.func_ov000_02059270(0x0C, "rupy0", 0x2D200000); + auStack_28.func_ov000_02059288(0x0D, "rupy1", 0x0C); + auStack_28.func_ov000_02059288(0x0E, "rupy2", 0x0C); + auStack_28.func_ov000_02059288(0x0F, "rupy3", 0x0C); + + auStack_28.func_ov000_02059270(0x10, "life0", 0x2D200000); + auStack_28.func_ov000_02059270(0x1D, "arrow", 0x2D200000); + auStack_28.func_ov000_02059270(0x1E, "bomb", 0x2D200000); + auStack_28.func_ov000_02059270(0x1F, "drug", 0x2D200000); + auStack_28.func_ov000_02059270(0x20, "drop0", 0x2D200000); + auStack_28.func_ov000_02059270(0x21, "drop1", 0x2D200000); + auStack_28.func_ov000_02059270(0x22, "drop2", 0x2D200000); + auStack_28.func_ov000_02059270(0x23, "drop3", 0x2D200000); + auStack_28.func_ov000_02059270(0x24, "drop4", 0x2D200000); + auStack_28.func_ov000_02059270(0x25, "drop5", 0x2D200000); + + UnkStruct_func_ov000_0207029c *ptr = data_027e09a0->func_ov000_0207029c(iVar5); + if ((ptr->mUnk_1D - 1) == 1) { + auStack_28.func_ov000_02059270(0x38, "mic_0", 0x35B00000); + auStack_28.func_ov000_02059270(0x39, "mic_1", 0x35B00000); + auStack_28.func_ov000_02059270(0x3A, "mic_on", 0x35B00000); + auStack_28.func_ov000_02059270(0x3B, "mic_ok", 0x35B00000); + auStack_28.func_ov000_02059270(0x3C, "mic_ng", 0x35B00000); + } + + if (gOverlayManager.mLoadedOverlays[OverlaySlot_8] == OverlayIndex_BossDeago) { + auStack_28.func_ov000_02059270(0x09, "bdga_chain", 0x28000000); + } + + if (gOverlayManager.mLoadedOverlays[OverlaySlot_8] == OverlayIndex_BossLast1) { + auStack_28.func_ov000_02059270(0x0B, "kimrat", 0x28000000); + } + } + + if (gOverlayManager.mLoadedOverlays[OverlaySlot_8] == OverlayIndex_Tower) { + UnkStruct_StackTitleScreen auStack_3c("Screen/tex2d.bin", 1); + auStack_3c.func_ov000_02059270(0x34, "baloon", 0x28a00000); + auStack_3c.func_ov000_02059270(0x35, "dot", 0x28000000); + } + + if (gOverlayManager.mLoadedOverlays[OverlaySlot_8] == OverlayIndex_BossDeago) { + UnkStruct_StackTitleScreen auStack_50("Screen/tex2d.bin", 1); + auStack_50.func_ov000_02059270(0x30, "deagohit", 0x29200000); + auStack_50.func_ov000_02059270(0x31, "deagotarget", 0x29200000); + } + + if (gOverlayManager.mLoadedOverlays[OverlaySlot_8] == OverlayIndex_BossLast2) { + UnkStruct_StackTitleScreen auStack_64("Screen/tex2d.bin", 1); + auStack_64.func_ov000_02059270(0x32, "zeldahit", 0x29200000); + auStack_64.func_ov000_02059270(0x33, "zeldatarget", 0x2D200000); + } + } else if (func_01ffd3d8() != 0) { + UnkStruct_StackTitleScreen auStack_78("Npc/Tex.bin", 1); + auStack_78.func_ov000_02059270(0x12, "rupy0", 0x2D200000); + auStack_78.func_ov000_02059288(0x13, "rupy1", 0x12); + auStack_78.func_ov000_02059288(0x14, "rupy2", 0x12); + + auStack_78.func_ov000_02059270(0x11, "life1", 0x2D200000); + } + } + + if (data_027e09a4->UnkCheck(data_027e09a4->mUnk_00)) { + func_ov071_0215e8d4(); + } + + // 1 for battle mode + if (data_027e09a4->mUnk_60 == 1) { + func_ov021_020f8818(); + } +} + +THUMB void ActorManager::func_ov001_020bb414(ActorManager *instance) { + func_ov001_020ba59c(&data_0204999c); + + if (data_027e09a4->UnkCheck(data_027e09a4->mUnk_00)) { + instance->func_ov001_020bb844(); + } + + if (instance->mActorTable != 0) { + delete instance->mActorTable; + } + + instance->mActorTable = NULL; + instance->mActorTableEnd = NULL; +} + +THUMB void ActorManager::func_ov001_020bb488() { + if (data_027e09a4->mUnk_0C != 1) { + switch (data_027e09a4->func_01ffd400()->mUnk_10) { + case 0x00: + case 0x01: + case 0x03: + case 0x06: + if (data_027e0cd8->mUnk_0c->mUnk_128 & 0x800) { + func_ov031_020ea100(); + } + break; + default: + break; + } + } + + if (data_027e09a4->mUnk_60 == 1) { + data_027e0cf4->func_ov021_020f8cdc(); + } + + if (data_027e09a4->UnkCheck(data_027e09a4->mUnk_00)) { + data_027e0d70->func_ov068_0215e8f8(); + } +} + +THUMB void ActorManager::func_ov001_020bb548() { + Actor **ppActorTable = this->mActorTable; + int i = 0; + + while (ppActorTable < this->mUnk_08) { + Actor *pActor = *ppActorTable; + + if (pActor != NULL && pActor->vfunc_34() != 0) { + this->func_ov000_02096e44(i); + } + + ppActorTable++; + i++; + } + + unk32 value = data_027e09a4->mUnk_00; + if (data_027e09a4->UnkCheck(value)) { + data_027e0d70->func_ov071_0215e9ac(); + + if (data_027e09a4->UnkCheck(value)) { + data_027e0d70->func_ov071_0215eac8(); + } + } + + if (data_027e09a4->mUnk_60 == 1) { + ActorManager::func_ov001_020bb824(); + } +} + +THUMB void ActorManager::func_ov001_020bb630() { + ActorType **piVar2 = data_ov000_020b539c.func_ov000_02073dc(); + ActorType **piVar3 = data_ov000_020b539c.func_ov000_02073e8(); + + while (piVar2 != piVar3) { + ActorType *iVar4 = *piVar2; + + if (iVar4 != NULL) { + bool run_vfunc_08 = false; + + if (iVar4->mUnk_38 != 0) { + run_vfunc_08 = true; + } else { + if (iVar4->mActorId == ActorId_BSFC && data_027e09a4->func_01ffd400()->mUnk_1B & 0x10) { + run_vfunc_08 = true; + } + } + + if (run_vfunc_08) { + (*piVar2)->vfunc_08(); + } + } + + piVar2++; + piVar3 = data_ov000_020b539c.func_ov000_02073e8(); + } + + if (data_027e09a4->mUnk_60 == 1) { + data_027e0cf4->func_ov021_020f8d20(); + } +} + +THUMB void ActorManager::func_ov001_020bb6b0(s32 *param1) { + ActorType **piVar1 = data_ov000_020b539c.func_ov000_02073dc(); + ActorType **piVar2 = data_ov000_020b539c.func_ov000_02073e8(); + + while (piVar1 != piVar2) { + ActorType *iVar5 = *piVar1; + + if (iVar5 != NULL && iVar5->mUnk_38 == 0) { + for (int i = 0; i < ARRAY_LEN(data_ov000_020ab1ac); i++) { + UnkStruct_ov000_020ab1ac *pEntry = &data_ov000_020ab1ac[i]; + + if (pEntry->mUnk_00 == iVar5->mActorId && pEntry->mUnk_04 == ((UnkStruct_027e09a4_58_78 *) param1)->mUnk_00 && + pEntry->mUnk_08 == ((UnkStruct_027e09a4_58_78 *) param1)->mUnk_0A) { + (*piVar1)->mUnk_39 = 1; + (*piVar1)->vfunc_08(); + } + } + } + + piVar1++; + piVar2 = data_ov000_020b539c.func_ov000_02073e8(); + } +} + +THUMB bool ActorManager::func_ov001_020bb728(s32 param1) { + UnkStruct_027e09a4_58_78 *piVar1 = data_027e09a4->func_ov000_02070560(); + + if (piVar1->mUnk_00 != 0x2C || piVar1->mUnk_0A != 0) { + return false; + } + + for (u32 i = 0; i < 5; i++) { + int value; + int value2; + + if (param1 == data_ov001_020c2638[i]) { + value = data_ov001_020c2624[i] & 0x1F; + value2 = data_027e09b8->mUnk_14[(u32) data_ov001_020c2624[i] >> 5]; + + if ((1 << value) & value2) { + value = data_ov001_020c262e[i] & 0x1F; + value2 = data_027e09b8->mUnk_14[(u32) data_ov001_020c262e[i] >> 5]; + + if (!((1 << value) & value2)) { + continue; + } + } + + return true; + } + } + + return false; +} + +THUMB void ActorManager::func_ov001_020bb7b0(ZeldaObjectList *pObjList) { + for (s32 i = 0; i < pObjList->nEntries; i++) { + u32 id = pObjList->aIdList[i]; + ActorType *pActorType = data_ov000_020b539c.func_ov000_020974dc(id); + + if (!this->func_ov001_020bb728(id) && pActorType != NULL) { + pActorType->vfunc_08(); + } + } +} + +THUMB void ActorManager::func_ov001_020bb7f0() { + ActorType **ptr1 = data_ov000_020b539c.func_ov000_02073dc(); + ActorType **ptr2 = data_ov000_020b539c.func_ov000_02073e8(); + + while (ptr1 != ptr2) { + if (*ptr1 != NULL) { + func_ov000_020977e4(); + } + + ptr1++; + ptr2 = data_ov000_020b539c.func_ov000_02073e8(); + } +} + +THUMB void ActorManager::func_ov001_020bb824() { + if (data_027e0cf4 != NULL) { + delete data_027e0cf4; + } +} + +THUMB void ActorManager::func_ov001_020bb844() { + if (data_027e0d70 != NULL) { + delete data_027e0d70; + } +} + +THUMB void ActorManager::SetInstance(ActorManager *instance) { + gActorManager = instance; +} + +THUMB int ActorManager::ClearInstance() { + gActorManager = NULL; + //! @bug: the function expects a return value (though it seems unused) +} diff --git a/src/025_Title/TitleScreen.cpp b/src/025_Title/TitleScreen.cpp index 2dad4d58..b9885aa5 100644 --- a/src/025_Title/TitleScreen.cpp +++ b/src/025_Title/TitleScreen.cpp @@ -39,15 +39,6 @@ static const Vec2s data_ov025_020c5ae8(0x0100, 0x0080); static const Vec2us data_ov025_020c5ae0(0x0100, 0x0080); #endif -struct UnkStruct_StackTitleScreen { - /* 00 */ unk32 pad[5]; - /* 14 */ - - UnkStruct_StackTitleScreen(const char *path, unk32 param1); - void func_ov000_02059270(unk32 param1, char *param2, unk32 param3); - void func_ov000_02059240(); -}; - TitleScreen::TitleScreen() : mState(TitleScreenState_None), mShowUI(false), @@ -65,9 +56,10 @@ TitleScreen::TitleScreen() : size_t len = strlen((char *) acStack_54); strncpy((char *) acStack_54 + len, path, sizeof(acStack_54) - len - 1); - UnkStruct_StackTitleScreen auStack_68((char *) acStack_54, 1); - auStack_68.func_ov000_02059270(0x3E, "title", 0x32500000); - auStack_68.func_ov000_02059240(); + { + UnkStruct_StackTitleScreen auStack_68((char *) acStack_54, 1); + auStack_68.func_ov000_02059270(0x3E, "title", 0x32500000); + } data_0204aeac.func_0201c494(3); this->mUnk_218.func_0201effc(0x0F, 1, 0x1F); diff --git a/src/031_Land/Actor/ActorRupee.cpp b/src/031_Land/Actor/ActorRupee.cpp index be02eda6..cde402d5 100644 --- a/src/031_Land/Actor/ActorRupee.cpp +++ b/src/031_Land/Actor/ActorRupee.cpp @@ -79,7 +79,7 @@ ARM bool ActorRupee::vfunc_18(unk32 param1) { if (this->func_ov031_020e9d54()) { this->mUnk_30 = &data_ov031_02113478; this->mUnk_34 = &data_ov031_02113478; - SET_FLAG(&this->mFlags, ActorFlag_12); + SET_FLAG(this->mFlags, ActorFlag_12); } if (this->mUnk_80 >= 0) { @@ -199,7 +199,7 @@ ARM void ActorRupee::func_ov031_020e9108() { this->mVel.y = vel.y + 0x9A + 0x100; this->mVel.z = vel.z - 0xCD; - SET_FLAG(&this->mFlags, ActorFlag_Visible); + SET_FLAG(this->mFlags, ActorFlag_Visible); } ARM void ActorRupee::func_ov031_020e91a8() { @@ -229,7 +229,7 @@ ARM void ActorRupee::func_ov031_020e9234() { this->mVel.x = 0; this->mVel.y = 0; this->mVel.z = 0; - SET_FLAG(&this->mFlags, ActorFlag_Visible); + SET_FLAG(this->mFlags, ActorFlag_Visible); } ARM void ActorRupee::func_ov031_020e9254() { @@ -328,7 +328,7 @@ ARM void ActorRupee::func_ov031_020e9450() { this->mPrevPos = this->mPos; Vec3p_Add(&this->mPos, &this->mVel, &this->mPos); - if (!GET_FLAG(&this->mFlags, ActorFlag_5)) { + if (!GET_FLAG(this->mFlags, ActorFlag_5)) { return; } @@ -348,7 +348,7 @@ ARM void ActorRupee::func_ov031_020e94d4() { this->mUnk_4a = 0; this->mUnk_44 = 0; this->mUnk_9c.func_ov000_02097bec(); - UNSET_FLAG(&this->mFlags, ActorFlag_Visible); + UNSET_FLAG(this->mFlags, ActorFlag_Visible); } ARM void ActorRupee::func_ov031_020e951c() { @@ -422,7 +422,7 @@ ARM void ActorRupee::func_ov031_020e9638() { this->mVel.x = 0; this->mVel.y = 0; this->mVel.z = 0; - UNSET_FLAG(&this->mFlags, ActorFlag_Visible); + UNSET_FLAG(this->mFlags, ActorFlag_Visible); this->mUnk_c4.mUnk_04 = 0; if (this->mUnk_6e == 2) { @@ -452,7 +452,7 @@ ARM void ActorRupee::func_ov031_020e970c() { this->mVel.x = 0; this->mVel.y = 0; this->mVel.z = 0; - SET_FLAG(&this->mFlags, ActorFlag_Visible); + SET_FLAG(this->mFlags, ActorFlag_Visible); this->mUnk_4a = 1; this->mUnk_52 = -1; this->mUnk_50 = 0; @@ -752,7 +752,7 @@ ARM void ActorRupee::func_ov031_020e9d94() { u32 temp_r1; if (this->func_ov031_020e9e5c()) { - SET_FLAG(&this->mFlags, ActorFlag_Visible); + SET_FLAG(this->mFlags, ActorFlag_Visible); return; } @@ -777,9 +777,9 @@ ARM void ActorRupee::func_ov031_020e9d94() { temp_r1 = temp_r0 >> 0x1F; if ((this->mUnk_94 & 7) < 4) { - UNSET_FLAG(&this->mFlags, ActorFlag_Visible); + UNSET_FLAG(this->mFlags, ActorFlag_Visible); } else { - SET_FLAG(&this->mFlags, ActorFlag_Visible); + 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 61ba2f32..13ea3e27 100644 --- a/src/110_PlayerGet/PlayerGet.cpp +++ b/src/110_PlayerGet/PlayerGet.cpp @@ -351,12 +351,12 @@ ARM void PlayerGet::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1) { iVar10 = gActorManager->func_01fff3b4(*(u32 *) this->mUnk_54.mUnk_00); - if (iVar10 == 0) { + if (iVar10 == NULL) { return; } if (iVar10->func_01fff458() == ActorId_NormalShield) { - UNSET_FLAG(&(iVar10->mFlags), ActorFlag_Visible); + UNSET_FLAG(iVar10->mFlags, ActorFlag_Visible); iVar10->mUnk_4a = 0; } break; diff --git a/src/Main/System/SysNew.cpp b/src/Main/System/SysNew.cpp index 5cf74ac3..071c84d2 100644 --- a/src/Main/System/SysNew.cpp +++ b/src/Main/System/SysNew.cpp @@ -95,7 +95,7 @@ ARM void *operator new(unsigned long length, u32 id, u32 idLength) { return pvVar1; } -ARM void SysObject::operator delete(void *ptr) { +ARM void operator delete(void *ptr) { SysDelete(ptr); } diff --git a/tools/new_class.py b/tools/new_class.py index 79f54ec8..47d239e9 100755 --- a/tools/new_class.py +++ b/tools/new_class.py @@ -8,7 +8,7 @@ INDENT = " " * 4 def main(): parser = argparse.ArgumentParser(description="Add new header") - parser.add_argument("--suffix", "-s", dest="suffix", help="Suffix") + parser.add_argument("--suffix", "-s", dest="suffix", help="Suffix", required=True) parser.add_argument("--pointer", "-p", dest="pointer", help="Make the symbol a pointer", action="store_true", default=False) parser.add_argument("--base", "-b", dest="base", help="Add a base class", action="store_true", default=False) args = parser.parse_args()