diff --git a/config/eur/arm9/itcm/symbols.txt b/config/eur/arm9/itcm/symbols.txt index 3d03f5d0..21caf7b8 100644 --- a/config/eur/arm9/itcm/symbols.txt +++ b/config/eur/arm9/itcm/symbols.txt @@ -184,7 +184,7 @@ func_01ffe954 kind:function(arm,size=0x80) addr:0x01ffe954 func_01ffe9d4 kind:function(arm,size=0x308) addr:0x01ffe9d4 func_01ffecdc kind:function(arm,size=0xd0) addr:0x01ffecdc func_01ffedac kind:function(arm,size=0x48) addr:0x01ffedac -_ZN26UnkStruct_027e0cd8_0C_Base13func_01ffedf4EP5Vec2b kind:function(arm,size=0x1c) addr:0x01ffedf4 +_ZN26UnkStruct_027e0cd8_0C_Base13func_01ffedf4EP8Vec2bCpp kind:function(arm,size=0x1c) addr:0x01ffedf4 _ZN26UnkStruct_027e0cd8_0C_Base8vfunc_28EP7VecFx32ii kind:function(arm,size=0x124) addr:0x01ffee10 func_01ffef34 kind:function(arm,size=0x128) addr:0x01ffef34 func_01fff05c kind:function(arm,size=0x58) addr:0x01fff05c @@ -204,7 +204,7 @@ _ZN12ActorManager13func_01fff3b4E8ActorRef kind:function(arm,size=0x8c) addr:0x0 func_01fff440 kind:function(arm,size=0x18) addr:0x01fff440 _ZN5Actor10GetActorIdEv kind:function(arm,size=0xc) addr:0x01fff458 _ZN5Actor8vfunc_10EP7VecFx32 kind:function(arm,size=0x34) addr:0x01fff464 -_ZN16MapObjectManager13func_01fff498E5Vec2b kind:function(arm,size=0x34) addr:0x01fff498 +_ZN16MapObjectManager13func_01fff498E8Vec2bCpp kind:function(arm,size=0x34) addr:0x01fff498 _ZN16MapObjectManager13func_01fff4ccEPFvPvS0_ES0_ kind:function(arm,size=0x54) addr:0x01fff4cc _ZN16MapObjectManager13func_01fff520EP24UnkStruct_ov000_020b34c4PP9MapObject kind:function(arm,size=0x64) addr:0x01fff520 _ZN9MapObject14GetMapObjectIdEv kind:function(arm,size=0xc) addr:0x01fff584 diff --git a/config/eur/arm9/overlays/ov000/delinks.txt b/config/eur/arm9/overlays/ov000/delinks.txt index 3d7bd804..61a7e6d9 100644 --- a/config/eur/arm9/overlays/ov000/delinks.txt +++ b/config/eur/arm9/overlays/ov000/delinks.txt @@ -62,6 +62,9 @@ src/000_Second/Actor/ActorUnkEFIK.cpp: .data start:0x020b342c end:0x020b34b0 .bss start:0x020b5ce4 end:0x020b5d30 +src/000_Second/MapObject/MapObjectManager_000.cpp: + .text start:0x0209c3a8 end:0x0209c6a0 + src/000_Second/MapObject/MapObjectProfile.cpp: complete .text start:0x0209c790 end:0x0209ce08 diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index dd078c79..391fde48 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -66,7 +66,7 @@ _ZN19func_ov000_02057734D0Ev kind:function(arm,size=0x1c) addr:0x02057734 func_ov000_02057750 kind:function(thumb,size=0xc) addr:0x02057750 func_ov000_0205775c kind:function(thumb,size=0x20) addr:0x0205775c func_ov000_0205777c kind:function(thumb,size=0xe) addr:0x0205777c -_ZN10UnkSystem5C2EPvP10G3d_Model_ kind:function(thumb,size=0x18) addr:0x0205778c +_ZN10UnkSystem5C1EPvP10G3d_Model_ kind:function(thumb,size=0x18) addr:0x0205778c _ZN10UnkSystem519func_ov000_020577a4Eiii kind:function(arm,size=0x54) addr:0x020577a4 _ZN10UnkSystem519func_ov000_020577f8Ei kind:function(arm,size=0x38) addr:0x020577f8 func_ov000_02057830 kind:function(arm,size=0x3c) addr:0x02057830 @@ -223,12 +223,12 @@ _ZN18UnkStruct_027e096019func_ov000_0205a11cEv kind:function(arm,size=0x4) addr: _ZN18UnkStruct_027e096019func_ov000_0205a120Ev kind:function(arm,size=0x40) addr:0x0205a120 _ZN18UnkStruct_027e096019func_ov000_0205a160Ev kind:function(arm,size=0x4) addr:0x0205a160 _ZN18UnkStruct_027e096019func_ov000_0205a164Ev kind:function(arm,size=0x40) addr:0x0205a164 -func_ov000_0205a1a4 kind:function(arm,size=0x34) addr:0x0205a1a4 +_ZN18UnkStruct_027e096019func_ov000_0205a1a4Ev kind:function(arm,size=0x34) addr:0x0205a1a4 _ZN18UnkStruct_027e09606CreateEv kind:function(arm,size=0x24) addr:0x0205a1d8 -func_ov000_0205a1fc kind:function(arm,size=0x8c) addr:0x0205a1fc -func_ov000_0205a288 kind:function(arm,size=0x1c) addr:0x0205a288 -func_ov000_0205a2a4 kind:function(arm,size=0x24) addr:0x0205a2a4 -func_ov000_0205a2c8 kind:function(arm,size=0x54) addr:0x0205a2c8 +_ZN18UnkStruct_027e096019func_ov000_0205a1fcEh kind:function(arm,size=0x8c) addr:0x0205a1fc +_ZN18UnkStruct_027e096019func_ov000_0205a288EiPK12ZMBEntryRALB kind:function(arm,size=0x1c) addr:0x0205a288 +_ZN18UnkStruct_027e096019func_ov000_0205a2a4EiP12ZMBRALBPoint kind:function(arm,size=0x24) addr:0x0205a2a4 +_ZN18UnkStruct_027e096019func_ov000_0205a2c8Ev kind:function(arm,size=0x54) addr:0x0205a2c8 func_ov000_0205a31c kind:function(arm,size=0x74) addr:0x0205a31c _ZN18UnkStruct_027e096019func_ov000_0205a390Eh kind:function(arm,size=0x38) addr:0x0205a390 func_ov000_0205a3c8 kind:function(arm,size=0x34) addr:0x0205a3c8 @@ -1557,7 +1557,7 @@ func_ov000_02080098 kind:function(arm,size=0xc8) addr:0x02080098 func_ov000_02080160 kind:function(arm,size=0x20) addr:0x02080160 _ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_02080180EPv kind:function(arm,size=0x10) addr:0x02080180 func_ov000_02080190 kind:function(arm,size=0x20) addr:0x02080190 -_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_020801b0EP5Vec2bii kind:function(arm,size=0x60) addr:0x020801b0 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_020801b0EP8Vec2bCppii kind:function(arm,size=0x60) addr:0x020801b0 func_ov000_02080210 kind:function(arm,size=0x78) addr:0x02080210 func_ov000_02080288 kind:function(arm,size=0x64) addr:0x02080288 _ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_020802ecEtP7VecFx32 kind:function(arm,size=0x78) addr:0x020802ec @@ -1572,7 +1572,7 @@ func_ov000_02080840 kind:function(arm,size=0x6c) addr:0x02080840 _ZN26UnkStruct_027e0cd8_0C_Base8vfunc_2CEv kind:function(arm,size=0x20) addr:0x020808ac _ZN26UnkStruct_027e0cd8_0C_Base8vfunc_3CEv kind:function(arm,size=0x8) addr:0x020808cc func_ov000_020808d4 kind:function(arm,size=0x20) addr:0x020808d4 -_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_020808f4EPvS0_i kind:function(arm,size=0x5c) addr:0x020808f4 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_020808f4EPvS0_h kind:function(arm,size=0x5c) addr:0x020808f4 func_ov000_02080950 kind:function(arm,size=0x48) addr:0x02080950 func_ov000_02080998 kind:function(arm,size=0x40) addr:0x02080998 func_ov000_020809d8 kind:function(arm,size=0x6c) addr:0x020809d8 @@ -1618,10 +1618,10 @@ func_ov000_020817f4 kind:function(arm,size=0x28) addr:0x020817f4 func_ov000_0208181c kind:function(arm,size=0x18) addr:0x0208181c func_ov000_02081834 kind:function(arm,size=0x28) addr:0x02081834 func_ov000_0208185c kind:function(arm,size=0x18) addr:0x0208185c -func_ov000_02081874 kind:function(arm,size=0x5c) addr:0x02081874 -func_ov000_020818d0 kind:function(arm,size=0xcc) addr:0x020818d0 -func_ov000_0208199c kind:function(arm,size=0x8) addr:0x0208199c -func_ov000_020819a4 kind:function(arm,size=0x180) addr:0x020819a4 +_ZN21UnkStruct_027e0cd8_0419func_ov000_02081874Et kind:function(arm,size=0x5c) addr:0x02081874 +_ZN21UnkStruct_027e0cd8_0419func_ov000_020818d0EP19CourseListRoomEntryiiii kind:function(arm,size=0xcc) addr:0x020818d0 +_ZN21UnkStruct_027e0cd8_0419func_ov000_0208199cEjPvi kind:function(arm,size=0x8) addr:0x0208199c +_ZN21UnkStruct_027e0cd8_0419func_ov000_020819a4EPK29UnkStruct_func_ov000_020702a8 kind:function(arm,size=0x180) addr:0x020819a4 func_ov000_02081b24 kind:function(arm,size=0x44) addr:0x02081b24 func_ov000_02081b68 kind:function(arm,size=0xc) addr:0x02081b68 func_ov000_02081b74 kind:function(arm,size=0x10) addr:0x02081b74 @@ -1637,7 +1637,7 @@ _ZN18UnkStruct_027e0cd819func_ov000_02081d7cEiib kind:function(arm,size=0xb4) ad _ZN18UnkStruct_027e0cd819func_ov000_02081e30Eii kind:function(arm,size=0x8c) addr:0x02081e30 func_ov000_02081ebc kind:function(arm,size=0x10) addr:0x02081ebc _ZN18UnkStruct_027e0cd819func_ov000_02081eccEsi kind:function(arm,size=0x10) addr:0x02081ecc -func_ov000_02081edc kind:function(arm,size=0x10) addr:0x02081edc +_ZN18UnkStruct_027e0cd819func_ov000_02081edcEt kind:function(arm,size=0x10) addr:0x02081edc _ZN18UnkStruct_027e0cd819func_ov000_02081eecEsii kind:function(arm,size=0x50) addr:0x02081eec _ZN18UnkStruct_027e0cd819func_ov000_02081f3cEsi kind:function(arm,size=0x4c) addr:0x02081f3c func_ov000_02081f88 kind:function(arm,size=0x90) addr:0x02081f88 @@ -2255,7 +2255,7 @@ func_ov000_02097288 kind:function(arm,size=0x154) addr:0x02097288 _ZN24UnkStruct_ov000_020b539c18func_ov000_02073dcEv kind:function(arm,size=0xc) addr:0x020973dc _ZN24UnkStruct_ov000_020b539c18func_ov000_02073e8Ev kind:function(arm,size=0xc) addr:0x020973e8 _ZN5Actor19func_ov000_020973f4EP8ActorRefP24UnkStruct_ov000_020b539cjP11ActorParamsi kind:function(arm,size=0x50) addr:0x020973f4 -func_ov000_02097444 kind:function(arm,size=0x98) addr:0x02097444 +_ZN24UnkStruct_ov000_020b539c19func_ov000_02097444EjP11ActorParamsi kind:function(arm,size=0x98) addr:0x02097444 _ZN24UnkStruct_ov000_020b539c16GetProfileFromIdEj 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 @@ -2498,15 +2498,15 @@ _ZN16MapObjectManager19func_ov000_0209c3a8Ev kind:function(arm,size=0x40) addr:0 _ZN16MapObjectManager19func_ov000_0209c3e8Ev kind:function(arm,size=0x5c) addr:0x0209c3e8 _ZN16MapObjectManager19func_ov000_0209c444Ev kind:function(arm,size=0x4c) addr:0x0209c444 _ZN16MapObjectManager19func_ov000_0209c490Ev kind:function(arm,size=0x94) addr:0x0209c490 -_ZN16MapObjectManager17AllocateMapObjectEv kind:function(arm,size=0x17c) addr:0x0209c524 +_ZN16MapObjectManager17AllocateMapObjectEj5Vec2btih kind:function(arm,size=0x17c) addr:0x0209c524 func_ov000_0209c6a0 kind:function(arm,size=0xc) addr:0x0209c6a0 func_ov000_0209c6ac kind:function(arm,size=0xc) addr:0x0209c6ac _ZN24UnkStruct_ov000_020b5d3416GetProfileFromIdEj kind:function(arm,size=0x38) addr:0x0209c6b8 -_ZN24UnkStruct_ov000_020b5d3415CreateMapObjectEP9MapObject kind:function(arm,size=0x28) addr:0x0209c6f0 +_ZN24UnkStruct_ov000_020b5d3415CreateMapObjectEj kind:function(arm,size=0x28) addr:0x0209c6f0 _ZN24UnkStruct_ov000_020b5d3419func_ov000_0209c718Ej kind:function(arm,size=0x78) addr:0x0209c718 _ZN12MapObject_2019func_ov000_0209c790EjP16MapObjectProfile kind:function(arm,size=0x1c) addr:0x0209c790 _ZN12MapObject_2019func_ov000_0209c7acEj kind:function(arm,size=0x1c) addr:0x0209c7ac -_ZN12MapObject_2019func_ov000_0209c7c8Ev kind:function(arm,size=0x58) addr:0x0209c7c8 +_ZN12MapObject_204InitEv kind:function(arm,size=0x58) addr:0x0209c7c8 _ZN16MapObjectProfile19func_ov000_0209c820Ev kind:function(arm,size=0x8) addr:0x0209c820 _ZN16MapObjectProfileC2Ej kind:function(arm,size=0x8c) addr:0x0209c828 _ZN16MapObjectProfileD2Ev kind:function(arm,size=0x28) addr:0x0209c8b4 @@ -2553,7 +2553,7 @@ _ZN9MapObjectD0Ev kind:function(arm,size=0x14) addr:0x0209d098 _ZN9MapObjectD2Ev kind:function(arm,size=0x4) addr:0x0209d0ac _ZN9MapObject8vfunc_00Ev kind:function(arm,size=0x8) addr:0x0209d0b0 _ZN9MapObject8vfunc_04Ev kind:function(arm,size=0x4) addr:0x0209d0b8 -_ZN9MapObject19func_ov000_0209d0bcEP5Vec2bPS_ kind:function(arm,size=0x58) addr:0x0209d0bc +_ZN9MapObject19func_ov000_0209d0bcEP8Vec2bCppPS_ kind:function(arm,size=0x58) addr:0x0209d0bc _ZN9MapObject19func_ov000_0209d114Ev kind:function(arm,size=0x18) addr:0x0209d114 _ZN9MapObject19func_ov000_0209d12cEv kind:function(arm,size=0x18) addr:0x0209d12c _ZN9MapObject19func_ov000_0209d144EP5Vec2sii kind:function(arm,size=0x88) addr:0x0209d144 @@ -2566,7 +2566,7 @@ _ZN9MapObject19func_ov000_0209d22cEPsPS_i kind:function(arm,size=0x48) addr:0x02 _ZN9MapObject19func_ov000_0209d274Ei kind:function(arm,size=0x28) addr:0x0209d274 _ZN9MapObject19func_ov000_0209d29cEi kind:function(arm,size=0x28) addr:0x0209d29c _ZN9MapObject19func_ov000_0209d2c4Eib kind:function(arm,size=0x2c) addr:0x0209d2c4 -_ZN9MapObject19func_ov000_0209d2f0EiiP5Vec2b kind:function(arm,size=0xc4) addr:0x0209d2f0 +_ZN9MapObject19func_ov000_0209d2f0EiiP8Vec2bCpp kind:function(arm,size=0xc4) addr:0x0209d2f0 _ZN9MapObject19func_ov000_0209d3b4Eii kind:function(arm,size=0x80) addr:0x0209d3b4 _ZN9MapObject19func_ov000_0209d434EPcP34UnkStruct_ov019_020d24c8_28_258_00i kind:function(arm,size=0xe4) addr:0x0209d434 _ZN9MapObject19func_ov000_0209d518Eiiih kind:function(arm,size=0x34) addr:0x0209d518 @@ -2960,7 +2960,7 @@ func_ov000_020a775c kind:function(arm,size=0x28) addr:0x020a775c func_ov000_020a7784 kind:function(arm,size=0x4c) addr:0x020a7784 func_ov000_020a77d0 kind:function(arm,size=0x5c) addr:0x020a77d0 _Z22Cutscene_GetParamEntryi kind:function(arm,size=0x14) addr:0x020a782c -func_ov000_020a7840 kind:function(arm,size=0x84) addr:0x020a7840 +_Z19func_ov000_020a7840ii kind:function(arm,size=0x84) addr:0x020a7840 _Z27Cutscene_IsAdventureFlagSeti kind:function(arm,size=0x44) addr:0x020a78c4 _ZN21UnkStruct_027e09b8_98C1Ev kind:function(arm,size=0xdc) addr:0x020a7908 func_ov000_020a79e4 kind:function(arm,size=0x6c) addr:0x020a79e4 diff --git a/config/eur/arm9/overlays/ov001/delinks.txt b/config/eur/arm9/overlays/ov001/delinks.txt index 1fd4c110..78ac244b 100644 --- a/config/eur/arm9/overlays/ov001/delinks.txt +++ b/config/eur/arm9/overlays/ov001/delinks.txt @@ -30,10 +30,11 @@ src/001_SceneInit/UnkStruct_027e0cd8_0C_001.cpp: .text start:0x020b81e0 end:0x020b9270 .init start:0x020c2838 end:0x020c28f0 .ctor start:0x020c2904 end:0x020c2908 - .bss start:0x020c40e8 end:0x020c46f4 .data start:0x020c29f4 end:0x020c2b3c + .bss start:0x020c40e8 end:0x020c46f4 src/001_SceneInit/ZeldaArrangeBinary.cpp: + complete .text start:0x020b9270 end:0x020b94b0 src/001_SceneInit/ZeldaMapBinary.cpp: diff --git a/config/eur/arm9/overlays/ov001/relocs.txt b/config/eur/arm9/overlays/ov001/relocs.txt index 2f87d217..9429d627 100644 --- a/config/eur/arm9/overlays/ov001/relocs.txt +++ b/config/eur/arm9/overlays/ov001/relocs.txt @@ -314,8 +314,8 @@ from:0x020b7620 kind:thumb_call_arm to:0x02011f3c module:main from:0x020b7628 kind:thumb_call_arm to:0x02074644 module:overlay(0) from:0x020b7634 kind:thumb_call_arm to:0x02011f3c module:main from:0x020b763c kind:thumb_call_arm to:0x020a7908 module:overlay(0) -from:0x020b7650 kind:load to:0x020b22b8 module:overlay(0) add:0x8 -from:0x020b7654 kind:load to:0x020b2344 module:overlay(0) add:0x8 +from:0x020b7650 kind:load to:0x020b22b8 add:0x8 module:overlay(0) +from:0x020b7654 kind:load to:0x020b2344 add:0x8 module:overlay(0) from:0x020b7658 kind:load to:0x0204a088 module:main from:0x020b767e kind:thumb_call_arm to:0x02011ff4 module:main from:0x020b7690 kind:thumb_call_arm to:0x020a7a70 module:overlay(0) @@ -339,7 +339,7 @@ from:0x020b777c kind:thumb_call to:0x020b7784 module:overlay(1) from:0x020b7788 kind:thumb_call to:0x020b81c8 module:overlay(1) from:0x020b77a2 kind:thumb_call_arm to:0x0201667c module:main from:0x020b77be kind:thumb_call_arm to:0x020166f4 module:main -from:0x020b77e4 kind:load to:0x020b2938 module:overlay(0) add:0x8 +from:0x020b77e4 kind:load to:0x020b2938 add:0x8 module:overlay(0) from:0x020b77e8 kind:load to:0x027e09bc module:dtcm from:0x020b77f8 kind:thumb_call_arm to:0x02081270 module:overlay(0) from:0x020b77fe kind:thumb_call_arm to:0x02011ff4 module:main @@ -539,7 +539,7 @@ from:0x020b8218 kind:thumb_call to:0x02015550 module:main from:0x020b822c kind:thumb_call_arm to:0x0208233c module:overlay(0) from:0x020b83be kind:thumb_call to:0x020baea0 module:overlay(1) from:0x020b83c6 kind:thumb_call to:0x020592a0 module:overlay(0) -from:0x020b83d0 kind:load to:0x020c29f4 module:overlay(1) add:0x8 +from:0x020b83d0 kind:load to:0x020c29f4 add:0x8 module:overlay(1) from:0x020b83d4 kind:load to:0x027e0c90 module:dtcm from:0x020b83d8 kind:load to:0x027e0ca8 module:dtcm from:0x020b83dc kind:load to:0x027e0c9c module:dtcm @@ -559,7 +559,7 @@ from:0x020b8466 kind:thumb_call to:0x020b8efc module:overlay(1) from:0x020b846e kind:thumb_call to:0x0201556c module:main from:0x020b8476 kind:thumb_call to:0x02057b8c module:overlay(0) from:0x020b847c kind:thumb_call to:0x0201547c module:main -from:0x020b8484 kind:load to:0x020c29f4 module:overlay(1) add:0x8 +from:0x020b8484 kind:load to:0x020c29f4 add:0x8 module:overlay(1) from:0x020b8488 kind:load to:0x027e095c module:dtcm from:0x020b848c kind:load to:0x027e0ce8 module:dtcm from:0x020b849c kind:thumb_call to:0x020592ec module:overlay(0) @@ -573,7 +573,7 @@ from:0x020b8506 kind:thumb_call to:0x0201556c module:main from:0x020b850e kind:thumb_call to:0x02057b8c module:overlay(0) from:0x020b8514 kind:thumb_call to:0x0201547c module:main from:0x020b851a kind:thumb_call_arm to:0x02011ff4 module:main -from:0x020b8524 kind:load to:0x020c29f4 module:overlay(1) add:0x8 +from:0x020b8524 kind:load to:0x020c29f4 add:0x8 module:overlay(1) from:0x020b8528 kind:load to:0x027e095c module:dtcm from:0x020b852c kind:load to:0x027e0ce8 module:dtcm from:0x020b853c kind:thumb_call to:0x020592ec module:overlay(0) @@ -586,7 +586,7 @@ from:0x020b859e kind:thumb_call to:0x020b8efc module:overlay(1) from:0x020b85a6 kind:thumb_call to:0x0201556c module:main from:0x020b85ae kind:thumb_call to:0x02057b8c module:overlay(0) from:0x020b85b4 kind:thumb_call to:0x0201547c module:main -from:0x020b85bc kind:load to:0x020c29f4 module:overlay(1) add:0x8 +from:0x020b85bc kind:load to:0x020c29f4 add:0x8 module:overlay(1) from:0x020b85c0 kind:load to:0x027e095c module:dtcm from:0x020b85c4 kind:load to:0x027e0ce8 module:dtcm from:0x020b85f0 kind:thumb_call_arm to:0x02026800 module:main diff --git a/config/eur/arm9/overlays/ov001/symbols.txt b/config/eur/arm9/overlays/ov001/symbols.txt index 682d102c..c43ead49 100644 --- a/config/eur/arm9/overlays/ov001/symbols.txt +++ b/config/eur/arm9/overlays/ov001/symbols.txt @@ -2,10 +2,10 @@ _ZN18UnkStruct_027e09a46CreateEi kind:function(thumb,size=0x1a) addr:0x020b6520 _ZN18UnkStruct_027e09a4C1Ei kind:function(thumb,size=0xee) addr:0x020b653c _ZN18UnkStruct_027e09a419func_ov001_020b662cEv kind:function(thumb,size=0xae) addr:0x020b662c _ZN18UnkStruct_027e09a419func_ov001_020b66dcEv kind:function(thumb,size=0x7c) addr:0x020b66dc -_ZN18UnkStruct_027e09a419func_ov001_020b6758EPK22UnkStruct_SceneChange1b kind:function(thumb,size=0x14c) addr:0x020b6758 +_ZN18UnkStruct_027e09a419func_ov001_020b6758EPK12EntranceInfob kind:function(thumb,size=0x14c) addr:0x020b6758 _ZN18UnkStruct_027e09a419func_ov001_020b68a4Ebbb kind:function(thumb,size=0x80) addr:0x020b68a4 -_ZN18UnkStruct_027e09a419func_ov001_020b6924EPK22UnkStruct_SceneChange1b kind:function(thumb,size=0x90) addr:0x020b6924 -_ZN18UnkStruct_027e09a419func_ov001_020b69b4EPK22UnkStruct_SceneChange1b kind:function(thumb,size=0x194) addr:0x020b69b4 +_ZN18UnkStruct_027e09a419func_ov001_020b6924EPK12EntranceInfob kind:function(thumb,size=0x90) addr:0x020b6924 +_ZN18UnkStruct_027e09a419func_ov001_020b69b4EPK12EntranceInfob kind:function(thumb,size=0x194) addr:0x020b69b4 _ZN15TreasureManager7DestroyEv kind:function(thumb,size=0x20) addr:0x020b6b48 _ZN14MiscAdvManager7DestroyEv kind:function(thumb,size=0x20) addr:0x020b6b68 _ZN18UnkStruct_027e09607DestroyEv kind:function(thumb,size=0x20) addr:0x020b6b88 @@ -54,13 +54,13 @@ _ZN8InstanceI18UnkStruct_027e09b8ED2Ev kind:function(thumb,size=0xc) addr:0x020b _ZN18UnkStruct_027e0cd86CreateEv kind:function(thumb,size=0x16) addr:0x020b776c _ZN18UnkStruct_027e0cd8C1Ev kind:function(thumb,size=0x68) addr:0x020b7784 _ZN18UnkStruct_027e0cd8D1Ev kind:function(thumb,size=0x42) addr:0x020b77ec -_ZN18UnkStruct_027e0cd819func_ov001_020b7830EPK22UnkStruct_SceneChange1 kind:function(thumb,size=0x24c) addr:0x020b7830 +_ZN18UnkStruct_027e0cd819func_ov001_020b7830EPK12EntranceInfo kind:function(thumb,size=0x24c) addr:0x020b7830 _ZN18UnkStruct_027e0cd819func_ov001_020b7a7cEv kind:function(thumb,size=0xbc) addr:0x020b7a7c _ZN18UnkStruct_027e0cd819func_ov001_020b7b38EPK15CourseListEntryPK29UnkStruct_func_ov000_020702a8 kind:function(thumb,size=0xd0) addr:0x020b7b38 -_ZN18UnkStruct_027e0cd819func_ov001_020b7c08EPK22UnkStruct_SceneChange1PK21UnkStruct_WarpUnk1_A0 kind:function(thumb,size=0x15c) addr:0x020b7c08 -_ZN18UnkStruct_027e0cd819func_ov001_020b7d64EPK22UnkStruct_SceneChange1 kind:function(thumb,size=0xec) addr:0x020b7d64 +_ZN18UnkStruct_027e0cd819func_ov001_020b7c08EPK12EntranceInfoPK21UnkStruct_WarpUnk1_A0 kind:function(thumb,size=0x15c) addr:0x020b7c08 +_ZN18UnkStruct_027e0cd819func_ov001_020b7d64EPK12EntranceInfo kind:function(thumb,size=0xec) addr:0x020b7d64 _ZN18UnkStruct_027e0cd819func_ov001_020b7e50Ev kind:function(thumb,size=0x16) addr:0x020b7e50 -_ZN18UnkStruct_027e0cd819func_ov001_020b7e68EPK22UnkStruct_SceneChange1b kind:function(thumb,size=0x1d4) addr:0x020b7e68 +_ZN18UnkStruct_027e0cd819func_ov001_020b7e68EPK12EntranceInfob kind:function(thumb,size=0x1d4) addr:0x020b7e68 _ZN18UnkStruct_027e0cd819func_ov001_020b803cEv kind:function(thumb,size=0xc0) addr:0x020b803c _ZN18UnkStruct_027e0cd819func_ov001_020b80fcEj kind:function(thumb,size=0x24) addr:0x020b80fc _ZN18UnkStruct_027e0cd819func_ov001_020b8120Ej kind:function(thumb,size=0x6c) addr:0x020b8120 @@ -73,64 +73,64 @@ _ZN26UnkStruct_027e0cd8_0C_BaseD0Ev kind:function(thumb,size=0xa0) addr:0x020b84 _ZN26UnkStruct_027e0cd8_0C_BaseD2Ev kind:function(thumb,size=0x98) addr:0x020b8530 _ZN26UnkStruct_027e0cd8_0C_Base8vfunc_38Ev kind:function(thumb,size=0x2) addr:0x020b85c8 _ZN26UnkStruct_027e0cd8_0C_Base8vfunc_08Ev kind:function(thumb,size=0x2) addr:0x020b85cc -_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b85d0EPK22UnkStruct_SceneChange1 kind:function(thumb,size=0x2f0) addr:0x020b85d0 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b85d0EPK12EntranceInfo kind:function(thumb,size=0x2f0) addr:0x020b85d0 _ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b88c0Ei kind:function(thumb,size=0x2c) addr:0x020b88c0 _ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b88ecEv kind:function(thumb,size=0x60) addr:0x020b88ec -_ZN26UnkStruct_027e0cd8_0C_Base14LoadSceneModelEPK22UnkStruct_SceneChange1 kind:function(thumb,size=0xe0) addr:0x020b894c -_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_1CEPK22UnkStruct_SceneChange1bb kind:function(thumb,size=0x2c) addr:0x020b8a2c +_ZN26UnkStruct_027e0cd8_0C_Base14LoadSceneModelEPK12EntranceInfo kind:function(thumb,size=0xe0) addr:0x020b894c +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_1CEPK12EntranceInfobb kind:function(thumb,size=0x2c) addr:0x020b8a2c _ZN26UnkStruct_027e0cd8_0C_Base8vfunc_20Ev kind:function(thumb,size=0x2) addr:0x020b8a58 _ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8a5cEii kind:function(thumb,size=0x8e) addr:0x020b8a5c _ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8aecEv kind:function(thumb,size=0xa8) addr:0x020b8aec _ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8b94EP12ZMBEntryARAB kind:function(thumb,size=0x9c) addr:0x020b8b94 -_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8c30ERK33UnkStruct_027e0cd8_0C_Base_154_00 kind:function(thumb,size=0x4e) addr:0x020b8c30 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8c30ERK12EntranceInfo kind:function(thumb,size=0x4e) addr:0x020b8c30 _ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8c80Ei kind:function(thumb,size=0x10) addr:0x020b8c80 -_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8c90Ei kind:function(thumb,size=0x8) addr:0x020b8c90 -_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8c98Ei kind:function(thumb,size=0x8) addr:0x020b8c98 -_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_34Ei kind:function(thumb,size=0x8) addr:0x020b8ca0 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8c90EP14ZMBSectionCMPT kind:function(thumb,size=0x8) addr:0x020b8c90 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8c98EP14ZMBSectionCAME kind:function(thumb,size=0x8) addr:0x020b8c98 +_ZN26UnkStruct_027e0cd8_0C_Base13ZMB_ParseROMBEP14ZMBSectionROMB kind:function(thumb,size=0x8) addr:0x020b8ca0 _ZN24UnkStruct_ov001_020c40f4D1Ev kind:function(thumb,size=0x2) addr:0x020b8ca8 _ZN26UnkStruct_027e0cd8_0C_Base8vfunc_40Eh kind:function(thumb,size=0xfc) addr:0x020b8cac _ZN24UnkStruct_ov001_020c40f4C1Ev kind:function(thumb,size=0xe) addr:0x020b8da8 _ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8db8Ev kind:function(thumb,size=0x6c) addr:0x020b8db8 _ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8e24Ev kind:function(thumb,size=0x30) addr:0x020b8e24 _ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8e54Ev kind:function(thumb,size=0x20) addr:0x020b8e54 -_ZNSt13__vec_deleterI33UnkStruct_027e0cd8_0C_Base_154_00SaIS0_EE13sub_push_backERKS0_N10Metrowerks8int2typeILi0EEE kind:function(thumb,size=0x18) addr:0x020b8e74 -_ZN12CustomVectorI33UnkStruct_027e0cd8_0C_Base_154_00ED1Ev kind:function(thumb,size=0x1c) addr:0x020b8e8c +_ZNSt13__vec_deleterI12EntranceInfoSaIS0_EE13sub_push_backERKS0_N10Metrowerks8int2typeILi0EEE kind:function(thumb,size=0x18) addr:0x020b8e74 +_ZN12CustomVectorI12EntranceInfoED1Ev kind:function(thumb,size=0x1c) addr:0x020b8e8c _ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EE5eraseEPS1_S4_13UnkMSLStruct1 kind:function(thumb,size=0x3c) addr:0x020b8ea8 _ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EE13sub_push_backERKS1_N10Metrowerks8int2typeILi1EEE kind:function(thumb,size=0x18) addr:0x020b8ee4 _ZN12CustomVectorIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseED1Ev kind:function(thumb,size=0x1c) addr:0x020b8efc -_ZNSt13__vec_deleterI33UnkStruct_027e0cd8_0C_Base_154_00SaIS0_EE7grow_byEm kind:function(thumb,size=0x80) addr:0x020b8f18 -_ZNSt13__vec_deleterI33UnkStruct_027e0cd8_0C_Base_154_00SaIS0_EE14append_reallocEmRKS0_ kind:function(thumb,size=0xd4) addr:0x020b8f98 +_ZNSt13__vec_deleterI12EntranceInfoSaIS0_EE7grow_byEm kind:function(thumb,size=0x80) addr:0x020b8f18 +_ZNSt13__vec_deleterI12EntranceInfoSaIS0_EE14append_reallocEmRKS0_ kind:function(thumb,size=0xd4) addr:0x020b8f98 _ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EE7grow_byEm kind:function(thumb,size=0x80) addr:0x020b906c _ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EE14append_reallocEmRKS1_ kind:function(thumb,size=0xc6) addr:0x020b90ec -_ZNSt20__vec_deleter_helperI33UnkStruct_027e0cd8_0C_Base_154_00SaIS0_EED1Ev kind:function(thumb,size=0x10) addr:0x020b91b4 +_ZNSt20__vec_deleter_helperI12EntranceInfoSaIS0_EED1Ev kind:function(thumb,size=0x10) addr:0x020b91b4 _ZNSt20__vec_deleter_helperIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EED1Ev kind:function(thumb,size=0x10) addr:0x020b91c4 _ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EE8allocateEmN10Metrowerks8int2typeILi1EEE kind:function(thumb,size=0x24) addr:0x020b91d4 _ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EED2Ev kind:function(thumb,size=0x1c) addr:0x020b91f8 -_ZNSt13__vec_deleterI33UnkStruct_027e0cd8_0C_Base_154_00SaIS0_EE8allocateEmN10Metrowerks8int2typeILi1EEE kind:function(thumb,size=0x28) addr:0x020b9214 -_ZNSt13__vec_deleterI33UnkStruct_027e0cd8_0C_Base_154_00SaIS0_EED2Ev kind:function(thumb,size=0x1c) addr:0x020b923c +_ZNSt13__vec_deleterI12EntranceInfoSaIS0_EE8allocateEmN10Metrowerks8int2typeILi1EEE kind:function(thumb,size=0x28) addr:0x020b9214 +_ZNSt13__vec_deleterI12EntranceInfoSaIS0_EED2Ev kind:function(thumb,size=0x1c) addr:0x020b923c __arraydtor$4129 kind:function(thumb,size=0x18) addr:0x020b9258 local -func_ov001_020b9270 kind:function(thumb,size=0x70) addr:0x020b9270 -func_ov001_020b92e0 kind:function(thumb,size=0x18c) addr:0x020b92e0 -func_ov001_020b946c kind:function(thumb,size=0x4) addr:0x020b946c -func_ov001_020b9470 kind:function(thumb,size=0x3e) addr:0x020b9470 +ZAB_ParseFile kind:function(thumb,size=0x70) addr:0x020b9270 +ZAB_ParseCAMB kind:function(thumb,size=0x18c) addr:0x020b92e0 +ZAB_ParseCABI kind:function(thumb,size=0x4) addr:0x020b946c +ZAB_GetRoomEntry kind:function(thumb,size=0x3e) addr:0x020b9470 ZMB_ParseFile kind:function(thumb,size=0x164) addr:0x020b94b0 -func_ov001_020b9614 kind:function(thumb,size=0xe) addr:0x020b9614 -func_ov001_020b9624 kind:function(thumb,size=0xfc) addr:0x020b9624 -func_ov001_020b9720 kind:function(thumb,size=0x40) addr:0x020b9720 -func_ov001_020b9760 kind:function(thumb,size=0xe0) addr:0x020b9760 -func_ov001_020b9840 kind:function(thumb,size=0xc4) addr:0x020b9840 -func_ov001_020b9904 kind:function(thumb,size=0x140) addr:0x020b9904 -func_ov001_020b9a44 kind:function(thumb,size=0x22c) addr:0x020b9a44 -func_ov001_020b9c70 kind:function(thumb,size=0x460) addr:0x020b9c70 -func_ov001_020ba0d0 kind:function(thumb,size=0x17c) addr:0x020ba0d0 -func_ov001_020ba24c kind:function(thumb,size=0xa4) addr:0x020ba24c -func_ov001_020ba2f0 kind:function(thumb,size=0x5e) addr:0x020ba2f0 -func_ov001_020ba350 kind:function(thumb,size=0x36) addr:0x020ba350 -func_ov001_020ba388 kind:function(thumb,size=0x7e) addr:0x020ba388 -func_ov001_020ba408 kind:function(thumb,size=0x80) addr:0x020ba408 -func_ov001_020ba488 kind:function(thumb,size=0x1c) addr:0x020ba488 +ZMB_ParseROMB kind:function(thumb,size=0xe) addr:0x020b9614 +ZMB_ParseLDLB kind:function(thumb,size=0xfc) addr:0x020b9624 +ZMB_ParseARAB kind:function(thumb,size=0x40) addr:0x020b9720 +ZMB_ParseRALB kind:function(thumb,size=0xe0) addr:0x020b9760 +ZMB_ParseWARP kind:function(thumb,size=0xc4) addr:0x020b9840 +ZMB_ParseMapObjList kind:function(thumb,size=0x140) addr:0x020b9904 +ZMB_ParseActorList kind:function(thumb,size=0x22c) addr:0x020b9a44 +ZMB_ParseROOM kind:function(thumb,size=0x460) addr:0x020b9c70 +ZMB_ParsePLYR kind:function(thumb,size=0x17c) addr:0x020ba0d0 +ZMB_ParseCAME kind:function(thumb,size=0xa4) addr:0x020ba24c +ZMB_ParseCMPT kind:function(thumb,size=0x5e) addr:0x020ba2f0 +ZMB_020ba350 kind:function(thumb,size=0x36) addr:0x020ba350 +ZMB_020ba388 kind:function(thumb,size=0x7e) addr:0x020ba388 +ZMB_020ba408 kind:function(thumb,size=0x80) addr:0x020ba408 +_ZNSt13__vec_deleterI12EntranceInfoSaIS0_EED1Ev kind:function(thumb,size=0x1c) addr:0x020ba488 func_ov001_020ba4a4 kind:function(thumb,size=0x28) addr:0x020ba4a4 -func_ov001_020ba4cc kind:function(thumb,size=0x1c) addr:0x020ba4cc +_ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EED1Ev kind:function(thumb,size=0x1c) addr:0x020ba4cc func_ov001_020ba4e8 kind:function(thumb,size=0x24) addr:0x020ba4e8 _ZN18UnkStruct_027e095c6CreateEv kind:function(thumb,size=0x1c) addr:0x020ba50c func_ov001_020ba528 kind:function(thumb,size=0x54) addr:0x020ba528 @@ -182,8 +182,8 @@ _ZN12ActorManager19func_ov001_020bb414Ev kind:function(thumb,size=0x74) addr:0x0 _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_020bb6b0EP22UnkStruct_SceneChange1 kind:function(thumb,size=0x78) addr:0x020bb6b0 -_ZN12ActorManager19func_ov001_020bb728Ei kind:function(thumb,size=0x88) addr:0x020bb728 +_ZN12ActorManager19func_ov001_020bb6b0EP12EntranceInfo kind:function(thumb,size=0x78) addr:0x020bb6b0 +_ZN12ActorManager19func_ov001_020bb728Ej kind:function(thumb,size=0x88) addr:0x020bb728 _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 @@ -252,7 +252,7 @@ func_ov001_020bcca0 kind:function(thumb,size=0x46) addr:0x020bcca0 func_ov001_020bcce8 kind:function(thumb,size=0x2) addr:0x020bcce8 func_ov001_020bccec kind:function(thumb,size=0x2fe) addr:0x020bccec func_ov001_020bcfec kind:function(thumb,size=0xb8) addr:0x020bcfec -func_ov001_020bd0a4 kind:function(thumb,size=0x148) addr:0x020bd0a4 +_ZN21UnkStruct_027e0ce0_1C19func_ov001_020bd0a4Eb kind:function(thumb,size=0x148) addr:0x020bd0a4 func_ov001_020bd1ec kind:function(thumb,size=0x80) addr:0x020bd1ec func_ov001_020bd26c kind:function(thumb,size=0x74) addr:0x020bd26c func_ov001_020bd2e0 kind:function(thumb,size=0x78) addr:0x020bd2e0 @@ -285,9 +285,9 @@ _ZN24UnkStruct_ov000_020b50c019func_ov001_020bd8dcEv kind:function(thumb,size=0x func_ov001_020bd8e8 kind:function(thumb,size=0x28) addr:0x020bd8e8 func_ov001_020bd910 kind:function(thumb,size=0x24) addr:0x020bd910 func_ov001_020bd934 kind:function(thumb,size=0x3c) addr:0x020bd934 -_ZN24UnkStruct_ov000_020b50c019func_ov001_020bd970EP22UnkStruct_SceneChange1 kind:function(thumb,size=0x494) addr:0x020bd970 -_ZN24UnkStruct_ov000_020b50c019func_ov001_020bde04EP22UnkStruct_SceneChange1 kind:function(thumb,size=0x48) addr:0x020bde04 -_ZN24UnkStruct_ov000_020b50c019func_ov001_020bde4cEPK22UnkStruct_SceneChange1 kind:function(thumb,size=0x10) addr:0x020bde4c +_ZN24UnkStruct_ov000_020b50c019func_ov001_020bd970EP12EntranceInfo kind:function(thumb,size=0x494) addr:0x020bd970 +_ZN24UnkStruct_ov000_020b50c019func_ov001_020bde04EP12EntranceInfo kind:function(thumb,size=0x48) addr:0x020bde04 +_ZN24UnkStruct_ov000_020b50c019func_ov001_020bde4cEPK12EntranceInfo kind:function(thumb,size=0x10) addr:0x020bde4c _ZN24UnkStruct_ov000_020b50c019func_ov001_020bde5cEv kind:function(thumb,size=0x10) addr:0x020bde5c func_ov001_020bde6c kind:function(thumb,size=0xe) addr:0x020bde6c func_ov001_020bde7c kind:function(thumb,size=0x14) addr:0x020bde7c @@ -518,23 +518,23 @@ __sinit_ov001_020c28f0 kind:function(thumb,size=0x10) addr:0x020c28f0 .p__sinit_ov001_020c2570 kind:data(word) addr:0x020c291c local @433 kind:data(byte[22]) addr:0x020c2940 local @450 kind:data(byte[22]) addr:0x020c2958 local -@3570 kind:data(byte[0x12]) addr:0x020c2970 local -@3571 kind:data(byte[0x04]) addr:0x020c2984 local -@3572 kind:data(byte[0x1a]) addr:0x020c2988 local -@3573 kind:data(byte[0x18]) addr:0x020c29a4 local -@3574 kind:data(byte[0x19]) addr:0x020c29bc local -@3575 kind:data(byte[0x17]) addr:0x020c29d8 local -@3576 kind:data(byte[0x04]) addr:0x020c29f0 local +@3570 kind:data(byte[18]) addr:0x020c2970 local +@3571 kind:data(byte[4]) addr:0x020c2984 local +@3572 kind:data(byte[26]) addr:0x020c2988 local +@3573 kind:data(byte[24]) addr:0x020c29a4 local +@3574 kind:data(byte[25]) addr:0x020c29bc local +@3575 kind:data(byte[23]) addr:0x020c29d8 local +@3576 kind:data(byte[4]) addr:0x020c29f0 local _ZTV26UnkStruct_027e0cd8_0C_Base kind:data(any) addr:0x020c29f4 data_ov001_020c2a40 kind:data(any) addr:0x020c2a40 -@3283 kind:data(byte[0x6]) addr:0x020c2a90 local -@3284 kind:data(byte[0x13]) addr:0x020c2a98 local -@3285 kind:data(byte[0x13]) addr:0x020c2aac local -@3286 kind:data(byte[0x13]) addr:0x020c2ac0 local -@3287 kind:data(byte[0x1b]) addr:0x020c2ad4 local -@3288 kind:data(byte[0x1c]) addr:0x020c2af0 local -@3292 kind:data(byte[0x17]) addr:0x020c2b0c local -@3293 kind:data(byte[0x15]) addr:0x020c2b24 local +@3283 kind:data(byte[6]) addr:0x020c2a90 local +@3284 kind:data(byte[19]) addr:0x020c2a98 local +@3285 kind:data(byte[19]) addr:0x020c2aac local +@3286 kind:data(byte[19]) addr:0x020c2ac0 local +@3287 kind:data(byte[27]) addr:0x020c2ad4 local +@3288 kind:data(byte[28]) addr:0x020c2af0 local +@3292 kind:data(byte[23]) addr:0x020c2b0c local +@3293 kind:data(byte[21]) addr:0x020c2b24 local data_ov001_020c2b3c kind:data(any) addr:0x020c2b3c data_ov001_020c2b48 kind:data(any) addr:0x020c2b48 data_ov001_020c2b58 kind:data(any) addr:0x020c2b58 diff --git a/config/eur/arm9/overlays/ov024/symbols.txt b/config/eur/arm9/overlays/ov024/symbols.txt index 3b61d936..99ae1596 100644 --- a/config/eur/arm9/overlays/ov024/symbols.txt +++ b/config/eur/arm9/overlays/ov024/symbols.txt @@ -510,7 +510,7 @@ _ZN14UnkDataStruct4C2Ev kind:function(arm,size=0x44) addr:0x020d2490 _ZN14UnkDataStruct4C1Ev kind:function(arm,size=0x44) addr:0x020d24d4 _ZN14UnkDataStruct419func_ov024_020d2518Ev kind:function(arm,size=0x4) addr:0x020d2518 _ZN14UnkDataStruct419func_ov024_020d251cEv kind:function(arm,size=0x4) addr:0x020d251c -_ZN14UnkDataStruct419func_ov024_020d2520EP22UnkStruct_SceneChange1 kind:function(arm,size=0x18) addr:0x020d2520 +_ZN14UnkDataStruct419func_ov024_020d2520EP12EntranceInfo kind:function(arm,size=0x18) addr:0x020d2520 _ZN14UnkDataStruct419func_ov024_020d2538EjhP19UnkDataStruct4_14_2 kind:function(arm,size=0x2c) addr:0x020d2538 _ZN14UnkDataStruct419func_ov024_020d2564Ev kind:function(arm,size=0x28) addr:0x020d2564 _ZN14UnkDataStruct419func_ov024_020d258cEjh kind:function(arm,size=0x124) addr:0x020d258c diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index e151a8dd..03b4edde 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -2062,7 +2062,7 @@ func_02039f94 kind:function(arm,size=0x10) addr:0x02039f94 func_02039fa4 kind:function(arm,size=0x1b0) addr:0x02039fa4 _ll_udiv kind:function(arm,size=0xc) addr:0x0203a154 _ull_mod kind:function(arm,size=0x3c) addr:0x0203a160 -func_0203a19c kind:function(arm,size=0x20) addr:0x0203a19c +_ull_mul kind:function(arm,size=0x20) addr:0x0203a19c _s32_div_f kind:function(arm,size=0x20c) addr:0x0203a1bc _u32_div_f kind:function(arm,size=0x1e4) addr:0x0203a3c8 .L_0203a3d0 kind:label(arm) addr:0x0203a3d0 diff --git a/config/jp/arm9/itcm/symbols.txt b/config/jp/arm9/itcm/symbols.txt index 3d03f5d0..21caf7b8 100644 --- a/config/jp/arm9/itcm/symbols.txt +++ b/config/jp/arm9/itcm/symbols.txt @@ -184,7 +184,7 @@ func_01ffe954 kind:function(arm,size=0x80) addr:0x01ffe954 func_01ffe9d4 kind:function(arm,size=0x308) addr:0x01ffe9d4 func_01ffecdc kind:function(arm,size=0xd0) addr:0x01ffecdc func_01ffedac kind:function(arm,size=0x48) addr:0x01ffedac -_ZN26UnkStruct_027e0cd8_0C_Base13func_01ffedf4EP5Vec2b kind:function(arm,size=0x1c) addr:0x01ffedf4 +_ZN26UnkStruct_027e0cd8_0C_Base13func_01ffedf4EP8Vec2bCpp kind:function(arm,size=0x1c) addr:0x01ffedf4 _ZN26UnkStruct_027e0cd8_0C_Base8vfunc_28EP7VecFx32ii kind:function(arm,size=0x124) addr:0x01ffee10 func_01ffef34 kind:function(arm,size=0x128) addr:0x01ffef34 func_01fff05c kind:function(arm,size=0x58) addr:0x01fff05c @@ -204,7 +204,7 @@ _ZN12ActorManager13func_01fff3b4E8ActorRef kind:function(arm,size=0x8c) addr:0x0 func_01fff440 kind:function(arm,size=0x18) addr:0x01fff440 _ZN5Actor10GetActorIdEv kind:function(arm,size=0xc) addr:0x01fff458 _ZN5Actor8vfunc_10EP7VecFx32 kind:function(arm,size=0x34) addr:0x01fff464 -_ZN16MapObjectManager13func_01fff498E5Vec2b kind:function(arm,size=0x34) addr:0x01fff498 +_ZN16MapObjectManager13func_01fff498E8Vec2bCpp kind:function(arm,size=0x34) addr:0x01fff498 _ZN16MapObjectManager13func_01fff4ccEPFvPvS0_ES0_ kind:function(arm,size=0x54) addr:0x01fff4cc _ZN16MapObjectManager13func_01fff520EP24UnkStruct_ov000_020b34c4PP9MapObject kind:function(arm,size=0x64) addr:0x01fff520 _ZN9MapObject14GetMapObjectIdEv kind:function(arm,size=0xc) addr:0x01fff584 diff --git a/config/jp/arm9/overlays/ov000/delinks.txt b/config/jp/arm9/overlays/ov000/delinks.txt index 91989efb..a579db6b 100644 --- a/config/jp/arm9/overlays/ov000/delinks.txt +++ b/config/jp/arm9/overlays/ov000/delinks.txt @@ -60,6 +60,9 @@ src/000_Second/Actor/ActorUnkEFIK.cpp: .data start:0x020b4c2c end:0x020b4cb0 .bss start:0x020b74f4 end:0x020b7540 +src/000_Second/MapObject/MapObjectManager_000.cpp: + .text start:0x0209db74 end:0x0209de6c + src/000_Second/MapObject/MapObjectProfile.cpp: complete .text start:0x0209df5c end:0x0209e5cc diff --git a/config/jp/arm9/overlays/ov000/symbols.txt b/config/jp/arm9/overlays/ov000/symbols.txt index 21be8efc..13b89c7b 100644 --- a/config/jp/arm9/overlays/ov000/symbols.txt +++ b/config/jp/arm9/overlays/ov000/symbols.txt @@ -66,7 +66,7 @@ _ZN19func_ov000_02058cb4D0Ev kind:function(arm,size=0x1c) addr:0x02058cb4 func_ov000_02058cd0 kind:function(thumb,size=0xc) addr:0x02058cd0 func_ov000_02058cdc kind:function(thumb,size=0x20) addr:0x02058cdc func_ov000_02058cfc kind:function(thumb,size=0xe) addr:0x02058cfc -_ZN10UnkSystem5C2EPvP10G3d_Model_ kind:function(thumb,size=0x18) addr:0x02058d0c +_ZN10UnkSystem5C1EPvP10G3d_Model_ kind:function(thumb,size=0x18) addr:0x02058d0c _ZN10UnkSystem519func_ov000_020577a4Eiii kind:function(arm,size=0x54) addr:0x02058d24 _ZN10UnkSystem519func_ov000_020577f8Ei kind:function(arm,size=0x38) addr:0x02058d78 func_ov000_02058db0 kind:function(arm,size=0x3c) addr:0x02058db0 @@ -223,12 +223,12 @@ _ZN18UnkStruct_027e096019func_ov000_0205a11cEv kind:function(arm,size=0x4) addr: _ZN18UnkStruct_027e096019func_ov000_0205a120Ev kind:function(arm,size=0x40) addr:0x0205b6a8 _ZN18UnkStruct_027e096019func_ov000_0205a160Ev kind:function(arm,size=0x4) addr:0x0205b6e8 _ZN18UnkStruct_027e096019func_ov000_0205a164Ev kind:function(arm,size=0x40) addr:0x0205b6ec -func_ov000_0205b72c kind:function(arm,size=0x34) addr:0x0205b72c +_ZN18UnkStruct_027e096019func_ov000_0205a1a4Ev kind:function(arm,size=0x34) addr:0x0205b72c _ZN18UnkStruct_027e09606CreateEv kind:function(arm,size=0x24) addr:0x0205b760 -func_ov000_0205b784 kind:function(arm,size=0x8c) addr:0x0205b784 -func_ov000_0205b810 kind:function(arm,size=0x1c) addr:0x0205b810 -func_ov000_0205b82c kind:function(arm,size=0x24) addr:0x0205b82c -func_ov000_0205b850 kind:function(arm,size=0x54) addr:0x0205b850 +_ZN18UnkStruct_027e096019func_ov000_0205a1fcEh kind:function(arm,size=0x8c) addr:0x0205b784 +_ZN18UnkStruct_027e096019func_ov000_0205a288EiPK12ZMBEntryRALB kind:function(arm,size=0x1c) addr:0x0205b810 +_ZN18UnkStruct_027e096019func_ov000_0205a2a4EiP12ZMBRALBPoint kind:function(arm,size=0x24) addr:0x0205b82c +_ZN18UnkStruct_027e096019func_ov000_0205a2c8Ev kind:function(arm,size=0x54) addr:0x0205b850 func_ov000_0205b8a4 kind:function(arm,size=0x74) addr:0x0205b8a4 _ZN18UnkStruct_027e096019func_ov000_0205a390Eh kind:function(arm,size=0x38) addr:0x0205b918 func_ov000_0205b950 kind:function(arm,size=0x34) addr:0x0205b950 @@ -1549,13 +1549,13 @@ _ZN26UnkStruct_027e0cd8_0C_Base8vfunc_18Ev kind:function(arm,size=0x4) addr:0x02 Unknown_func_ov000_0207fd7c kind:function(arm,size=0x40) addr:0x02081434 func_ov000_02081474 kind:function(arm,size=0x250) addr:0x02081474 func_ov000_020816c4 kind:function(arm,size=0x5c) addr:0x020816c4 -func_ov000_02081720 kind:function(arm,size=0x18) addr:0x02081720 -func_ov000_02081738 kind:function(arm,size=0x18) addr:0x02081738 +func_ov000_02080068 kind:function(arm,size=0x18) addr:0x02081720 +func_ov000_02080080 kind:function(arm,size=0x18) addr:0x02081738 func_ov000_02081750 kind:function(arm,size=0xc8) addr:0x02081750 func_ov000_02081818 kind:function(arm,size=0x20) addr:0x02081818 _ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_02080180EPv kind:function(arm,size=0x10) addr:0x02081838 func_ov000_02081848 kind:function(arm,size=0x20) addr:0x02081848 -_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_020801b0EP5Vec2bii kind:function(arm,size=0x60) addr:0x02081868 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_020801b0EP8Vec2bCppii kind:function(arm,size=0x60) addr:0x02081868 func_ov000_020818c8 kind:function(arm,size=0x78) addr:0x020818c8 func_ov000_02081940 kind:function(arm,size=0x64) addr:0x02081940 _ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_020802ecEtP7VecFx32 kind:function(arm,size=0x78) addr:0x020819a4 @@ -1570,7 +1570,7 @@ func_ov000_02081ef8 kind:function(arm,size=0x6c) addr:0x02081ef8 _ZN26UnkStruct_027e0cd8_0C_Base8vfunc_2CEv kind:function(arm,size=0x20) addr:0x02081f64 _ZN26UnkStruct_027e0cd8_0C_Base8vfunc_3CEv kind:function(arm,size=0x8) addr:0x02081f84 func_ov000_02081f8c kind:function(arm,size=0x20) addr:0x02081f8c -_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_020808f4EPvS0_i kind:function(arm,size=0x5c) addr:0x02081fac +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_020808f4EPvS0_h kind:function(arm,size=0x5c) addr:0x02081fac func_ov000_02082008 kind:function(arm,size=0x48) addr:0x02082008 func_ov000_02082050 kind:function(arm,size=0x40) addr:0x02082050 func_ov000_02082090 kind:function(arm,size=0x6c) addr:0x02082090 @@ -1616,10 +1616,10 @@ func_ov000_02082eac kind:function(arm,size=0x28) addr:0x02082eac func_ov000_02082ed4 kind:function(arm,size=0x18) addr:0x02082ed4 func_ov000_02082eec kind:function(arm,size=0x28) addr:0x02082eec func_ov000_02082f14 kind:function(arm,size=0x18) addr:0x02082f14 -func_ov000_02082f2c kind:function(arm,size=0x5c) addr:0x02082f2c -func_ov000_02082f88 kind:function(arm,size=0xcc) addr:0x02082f88 -func_ov000_02083054 kind:function(arm,size=0x8) addr:0x02083054 -func_ov000_0208305c kind:function(arm,size=0x180) addr:0x0208305c +_ZN21UnkStruct_027e0cd8_0419func_ov000_02081874Et kind:function(arm,size=0x5c) addr:0x02082f2c +_ZN21UnkStruct_027e0cd8_0419func_ov000_020818d0EP19CourseListRoomEntryiiii kind:function(arm,size=0xcc) addr:0x02082f88 +_ZN21UnkStruct_027e0cd8_0419func_ov000_0208199cEjPvi kind:function(arm,size=0x8) addr:0x02083054 +_ZN21UnkStruct_027e0cd8_0419func_ov000_020819a4EPK29UnkStruct_func_ov000_020702a8 kind:function(arm,size=0x180) addr:0x0208305c func_ov000_020831dc kind:function(arm,size=0x44) addr:0x020831dc func_ov000_02083220 kind:function(arm,size=0xc) addr:0x02083220 func_ov000_0208322c kind:function(arm,size=0x10) addr:0x0208322c @@ -1635,7 +1635,7 @@ _ZN18UnkStruct_027e0cd819func_ov000_02081d7cEiib kind:function(arm,size=0xb4) ad _ZN18UnkStruct_027e0cd819func_ov000_02081e30Eii kind:function(arm,size=0x8c) addr:0x020834e8 func_ov000_02083574 kind:function(arm,size=0x10) addr:0x02083574 _ZN18UnkStruct_027e0cd819func_ov000_02081eccEsi kind:function(arm,size=0x10) addr:0x02083584 -func_ov000_02083594 kind:function(arm,size=0x10) addr:0x02083594 +_ZN18UnkStruct_027e0cd819func_ov000_02081edcEt kind:function(arm,size=0x10) addr:0x02083594 _ZN18UnkStruct_027e0cd819func_ov000_02081eecEsii kind:function(arm,size=0x50) addr:0x020835a4 _ZN18UnkStruct_027e0cd819func_ov000_02081f3cEsi kind:function(arm,size=0x4c) addr:0x020835f4 func_ov000_02083640 kind:function(arm,size=0x90) addr:0x02083640 @@ -2253,7 +2253,7 @@ func_ov000_02098a3c kind:function(arm,size=0x154) addr:0x02098a3c _ZN24UnkStruct_ov000_020b539c18func_ov000_02073dcEv kind:function(arm,size=0xc) addr:0x02098b90 _ZN24UnkStruct_ov000_020b539c18func_ov000_02073e8Ev kind:function(arm,size=0xc) addr:0x02098b9c _ZN5Actor19func_ov000_020973f4EP8ActorRefP24UnkStruct_ov000_020b539cjP11ActorParamsi kind:function(arm,size=0x50) addr:0x02098ba8 -func_ov000_02098bf8 kind:function(arm,size=0x98) addr:0x02098bf8 +_ZN24UnkStruct_ov000_020b539c19func_ov000_02097444EjP11ActorParamsi kind:function(arm,size=0x98) addr:0x02098bf8 _ZN24UnkStruct_ov000_020b539c16GetProfileFromIdEj 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 @@ -2495,15 +2495,15 @@ _ZN16MapObjectManager19func_ov000_0209c3a8Ev kind:function(arm,size=0x40) addr:0 _ZN16MapObjectManager19func_ov000_0209c3e8Ev kind:function(arm,size=0x5c) addr:0x0209dbb4 _ZN16MapObjectManager19func_ov000_0209c444Ev kind:function(arm,size=0x4c) addr:0x0209dc10 _ZN16MapObjectManager19func_ov000_0209c490Ev kind:function(arm,size=0x94) addr:0x0209dc5c -_ZN16MapObjectManager17AllocateMapObjectEv kind:function(arm,size=0x17c) addr:0x0209dcf0 +_ZN16MapObjectManager17AllocateMapObjectEj5Vec2btih kind:function(arm,size=0x17c) addr:0x0209dcf0 func_ov000_0209de6c kind:function(arm,size=0xc) addr:0x0209de6c func_ov000_0209de78 kind:function(arm,size=0xc) addr:0x0209de78 _ZN24UnkStruct_ov000_020b5d3416GetProfileFromIdEj kind:function(arm,size=0x38) addr:0x0209de84 -_ZN24UnkStruct_ov000_020b5d3415CreateMapObjectEP9MapObject kind:function(arm,size=0x28) addr:0x0209debc +_ZN24UnkStruct_ov000_020b5d3415CreateMapObjectEj kind:function(arm,size=0x28) addr:0x0209debc _ZN24UnkStruct_ov000_020b5d3419func_ov000_0209c718Ej kind:function(arm,size=0x78) addr:0x0209dee4 _ZN12MapObject_2019func_ov000_0209c790EjP16MapObjectProfile kind:function(arm,size=0x1c) addr:0x0209df5c _ZN12MapObject_2019func_ov000_0209c7acEj kind:function(arm,size=0x1c) addr:0x0209df78 -_ZN12MapObject_2019func_ov000_0209c7c8Ev kind:function(arm,size=0x58) addr:0x0209df94 +_ZN12MapObject_204InitEv kind:function(arm,size=0x58) addr:0x0209df94 _ZN16MapObjectProfileC2Ej kind:function(arm,size=0x8c) addr:0x0209dfec _ZN16MapObjectProfileD2Ev kind:function(arm,size=0x28) addr:0x0209e078 _ZN16MapObjectProfile8vfunc_04Ev kind:function(arm,size=0x8) addr:0x0209e0a0 @@ -2549,7 +2549,7 @@ _ZN9MapObjectD0Ev kind:function(arm,size=0x14) addr:0x0209e85c _ZN9MapObjectD2Ev kind:function(arm,size=0x4) addr:0x0209e870 _ZN9MapObject8vfunc_00Ev kind:function(arm,size=0x8) addr:0x0209e874 _ZN9MapObject8vfunc_04Ev kind:function(arm,size=0x4) addr:0x0209e87c -_ZN9MapObject19func_ov000_0209d0bcEP5Vec2bPS_ kind:function(arm,size=0x58) addr:0x0209e880 +_ZN9MapObject19func_ov000_0209d0bcEP8Vec2bCppPS_ kind:function(arm,size=0x58) addr:0x0209e880 _ZN9MapObject19func_ov000_0209d114Ev kind:function(arm,size=0x18) addr:0x0209e8d8 _ZN9MapObject19func_ov000_0209d12cEv kind:function(arm,size=0x18) addr:0x0209e8f0 _ZN9MapObject19func_ov000_0209d144EP5Vec2sii kind:function(arm,size=0x88) addr:0x0209e908 @@ -2562,7 +2562,7 @@ _ZN9MapObject19func_ov000_0209d22cEPsPS_i kind:function(arm,size=0x48) addr:0x02 _ZN9MapObject19func_ov000_0209d274Ei kind:function(arm,size=0x28) addr:0x0209ea38 _ZN9MapObject19func_ov000_0209d29cEi kind:function(arm,size=0x28) addr:0x0209ea60 _ZN9MapObject19func_ov000_0209d2c4Eib kind:function(arm,size=0x2c) addr:0x0209ea88 -_ZN9MapObject19func_ov000_0209d2f0EiiP5Vec2b kind:function(arm,size=0xc4) addr:0x0209eab4 +_ZN9MapObject19func_ov000_0209d2f0EiiP8Vec2bCpp kind:function(arm,size=0xc4) addr:0x0209eab4 _ZN9MapObject19func_ov000_0209d3b4Eii kind:function(arm,size=0x80) addr:0x0209eb78 _ZN9MapObject19func_ov000_0209d434EPcP34UnkStruct_ov019_020d24c8_28_258_00i kind:function(arm,size=0xe4) addr:0x0209ebf8 _ZN9MapObject19func_ov000_0209d518Eiiih kind:function(arm,size=0x34) addr:0x0209ecdc @@ -2959,7 +2959,7 @@ func_ov000_020a8f5c kind:function(arm,size=0x28) addr:0x020a8f5c func_ov000_020a8f84 kind:function(arm,size=0x4c) addr:0x020a8f84 func_ov000_020a8fd0 kind:function(arm,size=0x5c) addr:0x020a8fd0 _Z22Cutscene_GetParamEntryi kind:function(arm,size=0x14) addr:0x020a902c -func_ov000_020a9040 kind:function(arm,size=0x84) addr:0x020a9040 +_Z19func_ov000_020a7840ii kind:function(arm,size=0x84) addr:0x020a9040 _Z27Cutscene_IsAdventureFlagSeti kind:function(arm,size=0x44) addr:0x020a90c4 _ZN21UnkStruct_027e09b8_98C1Ev kind:function(arm,size=0xdc) addr:0x020a9108 func_ov000_020a91e4 kind:function(arm,size=0x6c) addr:0x020a91e4 diff --git a/config/jp/arm9/overlays/ov001/delinks.txt b/config/jp/arm9/overlays/ov001/delinks.txt index ad335ebe..d6af797a 100644 --- a/config/jp/arm9/overlays/ov001/delinks.txt +++ b/config/jp/arm9/overlays/ov001/delinks.txt @@ -29,11 +29,12 @@ src/001_SceneInit/UnkStruct_027e0cd8_001.cpp: src/001_SceneInit/UnkStruct_027e0cd8_0C_001.cpp: .text start:0x020b9a20 end:0x020baab0 .init start:0x020c408c end:0x020c4144 - .bss start:0x020c5928 end:0x020c5f34 - .data start:0x020c4234 end:0x020c437c .ctor start:0x020c4158 end:0x020c415c + .data start:0x020c4234 end:0x020c437c + .bss start:0x020c5928 end:0x020c5f34 src/001_SceneInit/ZeldaArrangeBinary.cpp: + complete .text start:0x020baab0 end:0x020bacf0 src/001_SceneInit/ZeldaMapBinary.cpp: diff --git a/config/jp/arm9/overlays/ov001/relocs.txt b/config/jp/arm9/overlays/ov001/relocs.txt index 53443d79..e89b9b2a 100644 --- a/config/jp/arm9/overlays/ov001/relocs.txt +++ b/config/jp/arm9/overlays/ov001/relocs.txt @@ -314,8 +314,8 @@ from:0x020b8e48 kind:thumb_call_arm to:0x02011f3c module:main from:0x020b8e50 kind:thumb_call_arm to:0x02075cfc module:overlay(0) from:0x020b8e5c kind:thumb_call_arm to:0x02011f3c module:main from:0x020b8e64 kind:thumb_call_arm to:0x020a9108 module:overlay(0) -from:0x020b8e78 kind:load to:0x020b3ab8 module:overlay(0) add:0x8 -from:0x020b8e7c kind:load to:0x020b3b44 module:overlay(0) add:0x8 +from:0x020b8e78 kind:load to:0x020b3ab8 add:0x8 module:overlay(0) +from:0x020b8e7c kind:load to:0x020b3b44 add:0x8 module:overlay(0) from:0x020b8e80 kind:load to:0x0204b608 module:main from:0x020b8ea6 kind:thumb_call_arm to:0x02011ff4 module:main from:0x020b8eb8 kind:thumb_call_arm to:0x020a9270 module:overlay(0) @@ -339,7 +339,7 @@ from:0x020b8fa4 kind:thumb_call to:0x020b8fac module:overlay(1) from:0x020b8fb0 kind:thumb_call to:0x020b9a08 module:overlay(1) from:0x020b8fca kind:thumb_call_arm to:0x02016614 module:main from:0x020b8fe6 kind:thumb_call_arm to:0x0201668c module:main -from:0x020b900c kind:load to:0x020b4138 module:overlay(0) add:0x8 +from:0x020b900c kind:load to:0x020b4138 add:0x8 module:overlay(0) from:0x020b9010 kind:load to:0x027e09bc module:dtcm from:0x020b9020 kind:thumb_call_arm to:0x02082928 module:overlay(0) from:0x020b9026 kind:thumb_call_arm to:0x02011ff4 module:main @@ -539,7 +539,7 @@ from:0x020b9a58 kind:thumb_call to:0x020154e8 module:main from:0x020b9a6c kind:thumb_call_arm to:0x020839f4 module:overlay(0) from:0x020b9bfe kind:thumb_call to:0x020bc6e8 module:overlay(1) from:0x020b9c06 kind:thumb_call to:0x0205a820 module:overlay(0) -from:0x020b9c10 kind:load to:0x020c4234 module:overlay(1) add:0x8 +from:0x020b9c10 kind:load to:0x020c4234 add:0x8 module:overlay(1) from:0x020b9c14 kind:load to:0x027e0c90 module:dtcm from:0x020b9c18 kind:load to:0x027e0ca8 module:dtcm from:0x020b9c1c kind:load to:0x027e0c9c module:dtcm @@ -559,7 +559,7 @@ from:0x020b9ca6 kind:thumb_call to:0x020ba73c module:overlay(1) from:0x020b9cae kind:thumb_call to:0x02015504 module:main from:0x020b9cb6 kind:thumb_call to:0x0205910c module:overlay(0) from:0x020b9cbc kind:thumb_call to:0x02015414 module:main -from:0x020b9cc4 kind:load to:0x020c4234 module:overlay(1) add:0x8 +from:0x020b9cc4 kind:load to:0x020c4234 add:0x8 module:overlay(1) from:0x020b9cc8 kind:load to:0x027e095c module:dtcm from:0x020b9ccc kind:load to:0x027e0ce8 module:dtcm from:0x020b9cdc kind:thumb_call to:0x0205a868 module:overlay(0) @@ -573,7 +573,7 @@ from:0x020b9d46 kind:thumb_call to:0x02015504 module:main from:0x020b9d4e kind:thumb_call to:0x0205910c module:overlay(0) from:0x020b9d54 kind:thumb_call to:0x02015414 module:main from:0x020b9d5a kind:thumb_call_arm to:0x02011ff4 module:main -from:0x020b9d64 kind:load to:0x020c4234 module:overlay(1) add:0x8 +from:0x020b9d64 kind:load to:0x020c4234 add:0x8 module:overlay(1) from:0x020b9d68 kind:load to:0x027e095c module:dtcm from:0x020b9d6c kind:load to:0x027e0ce8 module:dtcm from:0x020b9d7c kind:thumb_call to:0x0205a868 module:overlay(0) @@ -586,7 +586,7 @@ from:0x020b9dde kind:thumb_call to:0x020ba73c module:overlay(1) from:0x020b9de6 kind:thumb_call to:0x02015504 module:main from:0x020b9dee kind:thumb_call to:0x0205910c module:overlay(0) from:0x020b9df4 kind:thumb_call to:0x02015414 module:main -from:0x020b9dfc kind:load to:0x020c4234 module:overlay(1) add:0x8 +from:0x020b9dfc kind:load to:0x020c4234 add:0x8 module:overlay(1) from:0x020b9e00 kind:load to:0x027e095c module:dtcm from:0x020b9e04 kind:load to:0x027e0ce8 module:dtcm from:0x020b9e30 kind:thumb_call_arm to:0x02027d30 module:main diff --git a/config/jp/arm9/overlays/ov001/symbols.txt b/config/jp/arm9/overlays/ov001/symbols.txt index f9c20760..cb4aca9e 100644 --- a/config/jp/arm9/overlays/ov001/symbols.txt +++ b/config/jp/arm9/overlays/ov001/symbols.txt @@ -2,10 +2,10 @@ _ZN18UnkStruct_027e09a46CreateEi kind:function(thumb,size=0x1a) addr:0x020b7d40 _ZN18UnkStruct_027e09a4C1Ei kind:function(thumb,size=0xee) addr:0x020b7d5c _ZN18UnkStruct_027e09a419func_ov001_020b662cEv kind:function(thumb,size=0xae) addr:0x020b7e4c _ZN18UnkStruct_027e09a419func_ov001_020b66dcEv kind:function(thumb,size=0x7c) addr:0x020b7efc -_ZN18UnkStruct_027e09a419func_ov001_020b6758EPK22UnkStruct_SceneChange1b kind:function(thumb,size=0x14c) addr:0x020b7f78 +_ZN18UnkStruct_027e09a419func_ov001_020b6758EPK12EntranceInfob kind:function(thumb,size=0x14c) addr:0x020b7f78 _ZN18UnkStruct_027e09a419func_ov001_020b68a4Ebbb kind:function(thumb,size=0x80) addr:0x020b80c4 -_ZN18UnkStruct_027e09a419func_ov001_020b6924EPK22UnkStruct_SceneChange1b kind:function(thumb,size=0x90) addr:0x020b8144 -_ZN18UnkStruct_027e09a419func_ov001_020b69b4EPK22UnkStruct_SceneChange1b kind:function(thumb,size=0x194) addr:0x020b81d4 +_ZN18UnkStruct_027e09a419func_ov001_020b6924EPK12EntranceInfob kind:function(thumb,size=0x90) addr:0x020b8144 +_ZN18UnkStruct_027e09a419func_ov001_020b69b4EPK12EntranceInfob kind:function(thumb,size=0x194) addr:0x020b81d4 _ZN15TreasureManager7DestroyEv kind:function(thumb,size=0x20) addr:0x020b8368 _ZN14MiscAdvManager7DestroyEv kind:function(thumb,size=0x20) addr:0x020b8388 _ZN18UnkStruct_027e09607DestroyEv kind:function(thumb,size=0x20) addr:0x020b83a8 @@ -54,13 +54,13 @@ _ZN8InstanceI18UnkStruct_027e09b8ED2Ev kind:function(thumb,size=0xc) addr:0x020b _ZN18UnkStruct_027e0cd86CreateEv kind:function(thumb,size=0x16) addr:0x020b8f94 _ZN18UnkStruct_027e0cd8C1Ev kind:function(thumb,size=0x68) addr:0x020b8fac _ZN18UnkStruct_027e0cd8D1Ev kind:function(thumb,size=0x42) addr:0x020b9014 -_ZN18UnkStruct_027e0cd819func_ov001_020b7830EPK22UnkStruct_SceneChange1 kind:function(thumb,size=0x24c) addr:0x020b9058 +_ZN18UnkStruct_027e0cd819func_ov001_020b7830EPK12EntranceInfo kind:function(thumb,size=0x24c) addr:0x020b9058 _ZN18UnkStruct_027e0cd819func_ov001_020b7a7cEv kind:function(thumb,size=0xbc) addr:0x020b92a4 _ZN18UnkStruct_027e0cd819func_ov001_020b7b38EPK15CourseListEntryPK29UnkStruct_func_ov000_020702a8 kind:function(thumb,size=0xd0) addr:0x020b9360 -_ZN18UnkStruct_027e0cd819func_ov001_020b7c08EPK22UnkStruct_SceneChange1PK21UnkStruct_WarpUnk1_A0 kind:function(thumb,size=0x174) addr:0x020b9430 -_ZN18UnkStruct_027e0cd819func_ov001_020b7d64EPK22UnkStruct_SceneChange1 kind:function(thumb,size=0xec) addr:0x020b95a4 +_ZN18UnkStruct_027e0cd819func_ov001_020b7c08EPK12EntranceInfoPK21UnkStruct_WarpUnk1_A0 kind:function(thumb,size=0x174) addr:0x020b9430 +_ZN18UnkStruct_027e0cd819func_ov001_020b7d64EPK12EntranceInfo kind:function(thumb,size=0xec) addr:0x020b95a4 _ZN18UnkStruct_027e0cd819func_ov001_020b7e50Ev kind:function(thumb,size=0x16) addr:0x020b9690 -_ZN18UnkStruct_027e0cd819func_ov001_020b7e68EPK22UnkStruct_SceneChange1b kind:function(thumb,size=0x1d4) addr:0x020b96a8 +_ZN18UnkStruct_027e0cd819func_ov001_020b7e68EPK12EntranceInfob kind:function(thumb,size=0x1d4) addr:0x020b96a8 _ZN18UnkStruct_027e0cd819func_ov001_020b803cEv kind:function(thumb,size=0xc0) addr:0x020b987c _ZN18UnkStruct_027e0cd819func_ov001_020b80fcEj kind:function(thumb,size=0x24) addr:0x020b993c _ZN18UnkStruct_027e0cd819func_ov001_020b8120Ej kind:function(thumb,size=0x6c) addr:0x020b9960 @@ -73,64 +73,64 @@ _ZN26UnkStruct_027e0cd8_0C_BaseD0Ev kind:function(thumb,size=0xa0) addr:0x020b9c _ZN26UnkStruct_027e0cd8_0C_BaseD2Ev kind:function(thumb,size=0x98) addr:0x020b9d70 _ZN26UnkStruct_027e0cd8_0C_Base8vfunc_38Ev kind:function(thumb,size=0x2) addr:0x020b9e08 _ZN26UnkStruct_027e0cd8_0C_Base8vfunc_08Ev kind:function(thumb,size=0x2) addr:0x020b9e0c -_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b85d0EPK22UnkStruct_SceneChange1 kind:function(thumb,size=0x2f0) addr:0x020b9e10 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b85d0EPK12EntranceInfo kind:function(thumb,size=0x2f0) addr:0x020b9e10 _ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b88c0Ei kind:function(thumb,size=0x2c) addr:0x020ba100 _ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b88ecEv kind:function(thumb,size=0x60) addr:0x020ba12c -_ZN26UnkStruct_027e0cd8_0C_Base14LoadSceneModelEPK22UnkStruct_SceneChange1 kind:function(thumb,size=0xe0) addr:0x020ba18c -_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_1CEPK22UnkStruct_SceneChange1bb kind:function(thumb,size=0x2c) addr:0x020ba26c +_ZN26UnkStruct_027e0cd8_0C_Base14LoadSceneModelEPK12EntranceInfo kind:function(thumb,size=0xe0) addr:0x020ba18c +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_1CEPK12EntranceInfobb kind:function(thumb,size=0x2c) addr:0x020ba26c _ZN26UnkStruct_027e0cd8_0C_Base8vfunc_20Ev kind:function(thumb,size=0x2) addr:0x020ba298 _ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8a5cEii kind:function(thumb,size=0x8e) addr:0x020ba29c _ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8aecEv kind:function(thumb,size=0xa8) addr:0x020ba32c _ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8b94EP12ZMBEntryARAB kind:function(thumb,size=0x9c) addr:0x020ba3d4 -_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8c30ERK33UnkStruct_027e0cd8_0C_Base_154_00 kind:function(thumb,size=0x4e) addr:0x020ba470 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8c30ERK12EntranceInfo kind:function(thumb,size=0x4e) addr:0x020ba470 _ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8c80Ei kind:function(thumb,size=0x10) addr:0x020ba4c0 -_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8c90Ei kind:function(thumb,size=0x8) addr:0x020ba4d0 -_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8c98Ei kind:function(thumb,size=0x8) addr:0x020ba4d8 -_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_34Ei kind:function(thumb,size=0x8) addr:0x020ba4e0 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8c90EP14ZMBSectionCMPT kind:function(thumb,size=0x8) addr:0x020ba4d0 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8c98EP14ZMBSectionCAME kind:function(thumb,size=0x8) addr:0x020ba4d8 +_ZN26UnkStruct_027e0cd8_0C_Base13ZMB_ParseROMBEP14ZMBSectionROMB kind:function(thumb,size=0x8) addr:0x020ba4e0 _ZN24UnkStruct_ov001_020c40f4D1Ev kind:function(thumb,size=0x2) addr:0x020ba4e8 _ZN26UnkStruct_027e0cd8_0C_Base8vfunc_40Eh kind:function(thumb,size=0xfc) addr:0x020ba4ec _ZN24UnkStruct_ov001_020c40f4C1Ev kind:function(thumb,size=0xe) addr:0x020ba5e8 _ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8db8Ev kind:function(thumb,size=0x6c) addr:0x020ba5f8 _ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8e24Ev kind:function(thumb,size=0x30) addr:0x020ba664 _ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8e54Ev kind:function(thumb,size=0x20) addr:0x020ba694 -_ZNSt13__vec_deleterI33UnkStruct_027e0cd8_0C_Base_154_00SaIS0_EE13sub_push_backERKS0_N10Metrowerks8int2typeILi0EEE kind:function(thumb,size=0x18) addr:0x020ba6b4 -_ZN12CustomVectorI33UnkStruct_027e0cd8_0C_Base_154_00ED1Ev kind:function(thumb,size=0x1c) addr:0x020ba6cc +_ZNSt13__vec_deleterI12EntranceInfoSaIS0_EE13sub_push_backERKS0_N10Metrowerks8int2typeILi0EEE kind:function(thumb,size=0x18) addr:0x020ba6b4 +_ZN12CustomVectorI12EntranceInfoED1Ev kind:function(thumb,size=0x1c) addr:0x020ba6cc _ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EE5eraseEPS1_S4_13UnkMSLStruct1 kind:function(thumb,size=0x3c) addr:0x020ba6e8 _ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EE13sub_push_backERKS1_N10Metrowerks8int2typeILi1EEE kind:function(thumb,size=0x18) addr:0x020ba724 _ZN12CustomVectorIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseED1Ev kind:function(thumb,size=0x1c) addr:0x020ba73c -_ZNSt13__vec_deleterI33UnkStruct_027e0cd8_0C_Base_154_00SaIS0_EE7grow_byEm kind:function(thumb,size=0x80) addr:0x020ba758 -_ZNSt13__vec_deleterI33UnkStruct_027e0cd8_0C_Base_154_00SaIS0_EE14append_reallocEmRKS0_ kind:function(thumb,size=0xd4) addr:0x020ba7d8 +_ZNSt13__vec_deleterI12EntranceInfoSaIS0_EE7grow_byEm kind:function(thumb,size=0x80) addr:0x020ba758 +_ZNSt13__vec_deleterI12EntranceInfoSaIS0_EE14append_reallocEmRKS0_ kind:function(thumb,size=0xd4) addr:0x020ba7d8 _ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EE7grow_byEm kind:function(thumb,size=0x80) addr:0x020ba8ac _ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EE14append_reallocEmRKS1_ kind:function(thumb,size=0xc6) addr:0x020ba92c -_ZNSt20__vec_deleter_helperI33UnkStruct_027e0cd8_0C_Base_154_00SaIS0_EED1Ev kind:function(thumb,size=0x10) addr:0x020ba9f4 +_ZNSt20__vec_deleter_helperI12EntranceInfoSaIS0_EED1Ev kind:function(thumb,size=0x10) addr:0x020ba9f4 _ZNSt20__vec_deleter_helperIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EED1Ev kind:function(thumb,size=0x10) addr:0x020baa04 _ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EE8allocateEmN10Metrowerks8int2typeILi1EEE kind:function(thumb,size=0x24) addr:0x020baa14 _ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EED2Ev kind:function(thumb,size=0x1c) addr:0x020baa38 -_ZNSt13__vec_deleterI33UnkStruct_027e0cd8_0C_Base_154_00SaIS0_EE8allocateEmN10Metrowerks8int2typeILi1EEE kind:function(thumb,size=0x28) addr:0x020baa54 -_ZNSt13__vec_deleterI33UnkStruct_027e0cd8_0C_Base_154_00SaIS0_EED2Ev kind:function(thumb,size=0x1c) addr:0x020baa7c +_ZNSt13__vec_deleterI12EntranceInfoSaIS0_EE8allocateEmN10Metrowerks8int2typeILi1EEE kind:function(thumb,size=0x28) addr:0x020baa54 +_ZNSt13__vec_deleterI12EntranceInfoSaIS0_EED2Ev kind:function(thumb,size=0x1c) addr:0x020baa7c __arraydtor$4129 kind:function(thumb,size=0x18) addr:0x020baa98 local -func_ov001_020b9270 kind:function(thumb,size=0x70) addr:0x020baab0 -func_ov001_020b92e0 kind:function(thumb,size=0x18c) addr:0x020bab20 -func_ov001_020b946c kind:function(thumb,size=0x4) addr:0x020bacac -func_ov001_020b9470 kind:function(thumb,size=0x3e) addr:0x020bacb0 +ZAB_ParseFile kind:function(thumb,size=0x70) addr:0x020baab0 +ZAB_ParseCAMB kind:function(thumb,size=0x18c) addr:0x020bab20 +ZAB_ParseCABI kind:function(thumb,size=0x4) addr:0x020bacac +ZAB_GetRoomEntry kind:function(thumb,size=0x3e) addr:0x020bacb0 ZMB_ParseFile kind:function(thumb,size=0x164) addr:0x020bacf0 -func_ov001_020b9614 kind:function(thumb,size=0xe) addr:0x020bae54 -func_ov001_020b9624 kind:function(thumb,size=0xfc) addr:0x020bae64 -func_ov001_020b9720 kind:function(thumb,size=0x40) addr:0x020baf60 -func_ov001_020b9760 kind:function(thumb,size=0xe0) addr:0x020bafa0 -func_ov001_020b9840 kind:function(thumb,size=0xc4) addr:0x020bb080 -func_ov001_020b9904 kind:function(thumb,size=0x140) addr:0x020bb144 -func_ov001_020b9a44 kind:function(thumb,size=0x22c) addr:0x020bb284 -func_ov001_020b9c70 kind:function(thumb,size=0x460) addr:0x020bb4b0 -func_ov001_020ba0d0 kind:function(thumb,size=0x17c) addr:0x020bb910 -func_ov001_020ba24c kind:function(thumb,size=0xa4) addr:0x020bba8c -func_ov001_020ba2f0 kind:function(thumb,size=0x5e) addr:0x020bbb30 -func_ov001_020ba350 kind:function(thumb,size=0x36) addr:0x020bbb90 -func_ov001_020ba388 kind:function(thumb,size=0x7e) addr:0x020bbbc8 -func_ov001_020ba408 kind:function(thumb,size=0x80) addr:0x020bbc48 -func_ov001_020ba488 kind:function(thumb,size=0x1c) addr:0x020bbcc8 +ZMB_ParseROMB kind:function(thumb,size=0xe) addr:0x020bae54 +ZMB_ParseLDLB kind:function(thumb,size=0xfc) addr:0x020bae64 +ZMB_ParseARAB kind:function(thumb,size=0x40) addr:0x020baf60 +ZMB_ParseRALB kind:function(thumb,size=0xe0) addr:0x020bafa0 +ZMB_ParseWARP kind:function(thumb,size=0xc4) addr:0x020bb080 +ZMB_ParseMapObjList kind:function(thumb,size=0x140) addr:0x020bb144 +ZMB_ParseActorList kind:function(thumb,size=0x22c) addr:0x020bb284 +ZMB_ParseROOM kind:function(thumb,size=0x460) addr:0x020bb4b0 +ZMB_ParsePLYR kind:function(thumb,size=0x17c) addr:0x020bb910 +ZMB_ParseCAME kind:function(thumb,size=0xa4) addr:0x020bba8c +ZMB_ParseCMPT kind:function(thumb,size=0x5e) addr:0x020bbb30 +ZMB_020ba350 kind:function(thumb,size=0x36) addr:0x020bbb90 +ZMB_020ba388 kind:function(thumb,size=0x7e) addr:0x020bbbc8 +ZMB_020ba408 kind:function(thumb,size=0x80) addr:0x020bbc48 +_ZNSt13__vec_deleterI12EntranceInfoSaIS0_EED1Ev kind:function(thumb,size=0x1c) addr:0x020bbcc8 func_ov001_020ba4a4 kind:function(thumb,size=0x28) addr:0x020bbce4 -func_ov001_020ba4cc kind:function(thumb,size=0x1c) addr:0x020bbd0c +_ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EED1Ev kind:function(thumb,size=0x1c) addr:0x020bbd0c func_ov001_020ba4e8 kind:function(thumb,size=0x24) addr:0x020bbd28 _ZN18UnkStruct_027e095c6CreateEv kind:function(thumb,size=0x1c) addr:0x020bbd4c func_ov001_020ba528 kind:function(thumb,size=0x50) addr:0x020bbd68 @@ -182,8 +182,8 @@ _ZN12ActorManager19func_ov001_020bb414Ev kind:function(thumb,size=0x74) addr:0x0 _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_020bb6b0EP22UnkStruct_SceneChange1 kind:function(thumb,size=0x78) addr:0x020bcef8 -_ZN12ActorManager19func_ov001_020bb728Ei kind:function(thumb,size=0x88) addr:0x020bcf70 +_ZN12ActorManager19func_ov001_020bb6b0EP12EntranceInfo kind:function(thumb,size=0x78) addr:0x020bcef8 +_ZN12ActorManager19func_ov001_020bb728Ej kind:function(thumb,size=0x88) addr:0x020bcf70 _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 @@ -252,7 +252,7 @@ func_ov001_020bcca0 kind:function(thumb,size=0x46) addr:0x020be4e8 func_ov001_020bcce8 kind:function(thumb,size=0x2) addr:0x020be530 func_ov001_020bccec kind:function(thumb,size=0x2fe) addr:0x020be534 func_ov001_020bcfec kind:function(thumb,size=0xb8) addr:0x020be834 -func_ov001_020bd0a4 kind:function(thumb,size=0x148) addr:0x020be8ec +_ZN21UnkStruct_027e0ce0_1C19func_ov001_020bd0a4Eb kind:function(thumb,size=0x148) addr:0x020be8ec func_ov001_020bd1ec kind:function(thumb,size=0x80) addr:0x020bea34 func_ov001_020bd26c kind:function(thumb,size=0x74) addr:0x020beab4 func_ov001_020bd2e0 kind:function(thumb,size=0x78) addr:0x020beb28 @@ -285,9 +285,9 @@ _ZN24UnkStruct_ov000_020b50c019func_ov001_020bd8dcEv kind:function(thumb,size=0x func_ov001_020bd8e8 kind:function(thumb,size=0x28) addr:0x020bf130 func_ov001_020bd910 kind:function(thumb,size=0x30) addr:0x020bf158 func_ov001_020bd934 kind:function(thumb,size=0x3c) addr:0x020bf188 -_ZN24UnkStruct_ov000_020b50c019func_ov001_020bd970EP22UnkStruct_SceneChange1 kind:function(thumb,size=0x494) addr:0x020bf1c4 -_ZN24UnkStruct_ov000_020b50c019func_ov001_020bde04EP22UnkStruct_SceneChange1 kind:function(thumb,size=0x48) addr:0x020bf658 -_ZN24UnkStruct_ov000_020b50c019func_ov001_020bde4cEPK22UnkStruct_SceneChange1 kind:function(thumb,size=0x10) addr:0x020bf6a0 +_ZN24UnkStruct_ov000_020b50c019func_ov001_020bd970EP12EntranceInfo kind:function(thumb,size=0x494) addr:0x020bf1c4 +_ZN24UnkStruct_ov000_020b50c019func_ov001_020bde04EP12EntranceInfo kind:function(thumb,size=0x48) addr:0x020bf658 +_ZN24UnkStruct_ov000_020b50c019func_ov001_020bde4cEPK12EntranceInfo kind:function(thumb,size=0x10) addr:0x020bf6a0 _ZN24UnkStruct_ov000_020b50c019func_ov001_020bde5cEv kind:function(thumb,size=0x10) addr:0x020bf6b0 func_ov001_020bde6c kind:function(thumb,size=0xe) addr:0x020bf6c0 func_ov001_020bde7c kind:function(thumb,size=0x14) addr:0x020bf6d0 @@ -519,23 +519,23 @@ __sinit_ov001_020c4144 kind:function(thumb,size=0x10) addr:0x020c4144 .p__sinit_ov001_020c3dc4 kind:data(word) addr:0x020c4170 local @433 kind:data(byte[22]) addr:0x020c4180 local @450 kind:data(byte[22]) addr:0x020c4198 local -@3570 kind:data(byte[0x12]) addr:0x020c41b0 local -@3571 kind:data(byte[0x04]) addr:0x020c41c4 local -@3572 kind:data(byte[0x1a]) addr:0x020c41c8 local -@3573 kind:data(byte[0x18]) addr:0x020c41e4 local -@3574 kind:data(byte[0x19]) addr:0x020c41fc local -@3575 kind:data(byte[0x17]) addr:0x020c4218 local -@3576 kind:data(byte[0x04]) addr:0x020c4230 local +@3570 kind:data(byte[18]) addr:0x020c41b0 local +@3571 kind:data(byte[4]) addr:0x020c41c4 local +@3572 kind:data(byte[26]) addr:0x020c41c8 local +@3573 kind:data(byte[24]) addr:0x020c41e4 local +@3574 kind:data(byte[25]) addr:0x020c41fc local +@3575 kind:data(byte[23]) addr:0x020c4218 local +@3576 kind:data(byte[4]) addr:0x020c4230 local _ZTV26UnkStruct_027e0cd8_0C_Base kind:data(any) addr:0x020c4234 data_ov001_020c2a40 kind:data(any) addr:0x020c4280 -@3283 kind:data(byte[0x6]) addr:0x020c42d0 local -@3284 kind:data(byte[0x13]) addr:0x020c42d8 local -@3285 kind:data(byte[0x13]) addr:0x020c42ec local -@3286 kind:data(byte[0x13]) addr:0x020c4300 local -@3287 kind:data(byte[0x1b]) addr:0x020c4314 local -@3288 kind:data(byte[0x1c]) addr:0x020c4330 local -@3292 kind:data(byte[0x17]) addr:0x020c434c local -@3293 kind:data(byte[0x15]) addr:0x020c4364 local +@3283 kind:data(byte[6]) addr:0x020c42d0 local +@3284 kind:data(byte[19]) addr:0x020c42d8 local +@3285 kind:data(byte[19]) addr:0x020c42ec local +@3286 kind:data(byte[19]) addr:0x020c4300 local +@3287 kind:data(byte[27]) addr:0x020c4314 local +@3288 kind:data(byte[28]) addr:0x020c4330 local +@3292 kind:data(byte[23]) addr:0x020c434c local +@3293 kind:data(byte[21]) addr:0x020c4364 local data_ov001_020c437c kind:data(any) addr:0x020c437c data_ov001_020c4388 kind:data(any) addr:0x020c4388 data_ov001_020c4398 kind:data(any) addr:0x020c4398 diff --git a/config/jp/arm9/overlays/ov024/symbols.txt b/config/jp/arm9/overlays/ov024/symbols.txt index f0defd6f..57d021a8 100644 --- a/config/jp/arm9/overlays/ov024/symbols.txt +++ b/config/jp/arm9/overlays/ov024/symbols.txt @@ -510,7 +510,7 @@ _ZN14UnkDataStruct4C2Ev kind:function(arm,size=0x44) addr:0x020d3de4 _ZN14UnkDataStruct4C1Ev kind:function(arm,size=0x44) addr:0x020d3e28 _ZN14UnkDataStruct419func_ov024_020d2518Ev kind:function(arm,size=0x4) addr:0x020d3e6c _ZN14UnkDataStruct419func_ov024_020d251cEv kind:function(arm,size=0x4) addr:0x020d3e70 -_ZN14UnkDataStruct419func_ov024_020d2520EP22UnkStruct_SceneChange1 kind:function(arm,size=0x18) addr:0x020d3e74 +_ZN14UnkDataStruct419func_ov024_020d2520EP12EntranceInfo kind:function(arm,size=0x18) addr:0x020d3e74 _ZN14UnkDataStruct419func_ov024_020d2538EjhP19UnkDataStruct4_14_2 kind:function(arm,size=0x2c) addr:0x020d3e8c _ZN14UnkDataStruct419func_ov024_020d2564Ev kind:function(arm,size=0x28) addr:0x020d3eb8 _ZN14UnkDataStruct419func_ov024_020d258cEjh kind:function(arm,size=0x124) addr:0x020d3ee0 diff --git a/config/jp/arm9/overlays/ov089/symbols.txt b/config/jp/arm9/overlays/ov089/symbols.txt index 4306c86e..90c730a1 100644 --- a/config/jp/arm9/overlays/ov089/symbols.txt +++ b/config/jp/arm9/overlays/ov089/symbols.txt @@ -10,7 +10,7 @@ func_ov089_02167c88 kind:function(arm,size=0xc) addr:0x02167c88 func_ov089_02167c94 kind:function(arm,size=0x34) addr:0x02167c94 func_ov089_02167cc8 kind:function(arm,size=0x94) addr:0x02167cc8 func_ov089_02167d5c kind:function(arm,size=0x1c) addr:0x02167d5c -func_ov089_02167d78 kind:function(arm,size=0x11c) addr:0x02167d78 +func_ov089_02165b18 kind:function(arm,size=0x11c) addr:0x02167d78 func_ov089_02165c34 kind:function(arm,size=0x4c) addr:0x02167e94 func_ov089_02167ee0 kind:function(arm,size=0xe8) addr:0x02167ee0 func_ov089_02167fc8 kind:function(arm,size=0x34) addr:0x02167fc8 diff --git a/config/jp/arm9/symbols.txt b/config/jp/arm9/symbols.txt index 6f6342c3..6a1391df 100644 --- a/config/jp/arm9/symbols.txt +++ b/config/jp/arm9/symbols.txt @@ -2083,7 +2083,7 @@ func_0203b4c4 kind:function(arm,size=0x10) addr:0x0203b4c4 func_0203b4d4 kind:function(arm,size=0x1b0) addr:0x0203b4d4 _ll_udiv kind:function(arm,size=0xc) addr:0x0203b684 _ull_mod kind:function(arm,size=0x3c) addr:0x0203b690 -func_0203b6cc kind:function(arm,size=0x20) addr:0x0203b6cc +_ull_mul kind:function(arm,size=0x20) addr:0x0203b6cc _s32_div_f kind:function(arm,size=0x20c) addr:0x0203b6ec _u32_div_f kind:function(arm,size=0x1e4) addr:0x0203b8f8 .L_0203b900 kind:label(arm) addr:0x0203b900 diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp index c7b8fbae..dfe3a0d1 100644 --- a/include/Actor/Actor.hpp +++ b/include/Actor/Actor.hpp @@ -18,13 +18,9 @@ public: /* 0E */ s8 mUnk_0E; /* 0F */ bool mUnk_0F; /* 10 */ u16 mParams[4]; - /* 18 */ Vec2b mUnk_18; - /* 1A */ u16 mUnk_1A; - /* 1C */ union { - unk32 mUnk_1C; - u16 mUnk_1C_0; - u16 mUnk_1C_2; - }; + /* 18 */ u8 mUnk_18[2]; + /* 1A */ u16 mUnk_1A[2]; + /* 1E */ u16 mUnk_1E; /* 20 */ union { unk32 mUnk_20; unk16 mUnk_20_0; @@ -52,6 +48,7 @@ public: ActorProfile **func_ov000_02073dc(); ActorProfile **func_ov000_02073e8(); ActorProfile *GetProfileFromId(ActorId actorId); + void func_ov000_02097444(ActorId actorId, ActorParams *pParams, unk32 param3); }; class Actor_C4; diff --git a/include/Actor/ActorManager.hpp b/include/Actor/ActorManager.hpp index 12ad9c68..932495c7 100644 --- a/include/Actor/ActorManager.hpp +++ b/include/Actor/ActorManager.hpp @@ -7,7 +7,7 @@ #include "files.h" #include "types.h" -class UnkStruct_SceneChange1; +class EntranceInfo; class ActorManager : public AutoInstance { public: @@ -54,13 +54,13 @@ public: void func_ov001_020bb488(); void func_ov001_020bb548(); void func_ov001_020bb630(); - void func_ov001_020bb6b0(UnkStruct_SceneChange1 *param1); + void func_ov001_020bb6b0(EntranceInfo *param1); void func_ov001_020bb7b0(ZeldaObjectList *pObjList); void func_ov001_020bb7f0(); static ActorManager *Create(); static void Destroy(); - static bool func_ov001_020bb728(s32 param1); + static bool func_ov001_020bb728(ActorId actorId); static void func_ov001_020bb824(); static void func_ov001_020bb844(); }; diff --git a/include/Actor/ActorProfile.hpp b/include/Actor/ActorProfile.hpp index 320ab6a9..cf2941e2 100644 --- a/include/Actor/ActorProfile.hpp +++ b/include/Actor/ActorProfile.hpp @@ -13,7 +13,10 @@ class ActorProfile { public: /* 00 (vtable) */ /* 04 */ Cylinder mUnk_04; - /* 14 */ unk8 mUnk_14[0x18 - 0x14]; + /* 14 */ unk8 mUnk_14; + /* 15 */ bool mUnk_15; + /* 16 */ unk8 mUnk_16; + /* 17 */ unk8 mUnk_17; /* 18 */ unk8 mUnk_18; /* 19 */ unk8 mUnk_19; /* 1A */ unk16 mUnk_1A; diff --git a/include/Cutscene/Cutscene.hpp b/include/Cutscene/Cutscene.hpp index 250a72e9..d313d5b9 100644 --- a/include/Cutscene/Cutscene.hpp +++ b/include/Cutscene/Cutscene.hpp @@ -76,7 +76,7 @@ struct CutsceneParamsEntry { }; CutsceneParamsEntry *Cutscene_GetParamEntry(s32 csIndex); -s32 func_ov000_020a7840(unk32 param1); +s32 func_ov000_020a7840(unk32 param1, unk32 param2); bool Cutscene_IsAdventureFlagSet(s32 csIndex); extern const CutsceneParamsEntry gCSParamsEntries[CutsceneIndex_Max]; diff --git a/include/MainGame/MiscAdvManager.hpp b/include/MainGame/MiscAdvManager.hpp index b1ecd52a..76c1fcef 100644 --- a/include/MainGame/MiscAdvManager.hpp +++ b/include/MainGame/MiscAdvManager.hpp @@ -65,7 +65,7 @@ public: /* 28 */ u16 mUnk_28; /* 2A */ u16 mPostDate; /* 2C */ union { - Vec2b mStampPositions[StampType_Max]; + Vec2bCpp mStampPositions[StampType_Max]; u16 mStampPos[StampType_Max]; }; /* 54 */ s8 mObtainedLetters[LetterType_Max]; @@ -100,7 +100,7 @@ public: unk32 func_ov024_020d6468(); unk32 GetStamp(unk32 index); u16 *GetStampDate(unk32 index); - Vec2b *GetStampPos(unk32 index); + Vec2bCpp *GetStampPos(unk32 index); void func_ov024_020d64b4(s8 param1, unk32 param2, const u16 *param3); void func_ov024_020d6530(); unk32 GetNumPostcards(); diff --git a/include/MapObject/MapObject.hpp b/include/MapObject/MapObject.hpp index 762f02bd..11f74025 100644 --- a/include/MapObject/MapObject.hpp +++ b/include/MapObject/MapObject.hpp @@ -96,19 +96,17 @@ public: class MapObject_20 { public: - /* 00 */ u16 mUnk_00[4]; // parameters + /* 00 */ u16 mParams[4]; // parameters /* 08 */ u8 mUnk_08[2]; /* 0A */ u16 mUnk_0A[2]; /* 0E */ unk16 mUnk_0E; /* 10 */ unk32 mUnk_10; /* 14 */ s16 mUnk_14; /* 16 */ bool mUnk_16; - /* 16 */ unk8 mUnk_17; + /* 17 */ s8 mUnk_17; /* 18 */ - MapObject_20() {} - - void func_ov000_0209c7c8(); + void Init(); static void func_ov000_0209c790(MapObjectId mapObjId, MapObjectProfile *pProfile); static void func_ov000_0209c7ac(MapObjectId mapObjId); @@ -129,7 +127,7 @@ public: /* 20 */ MapObject_20 mUnk_20; // parameters /* 38 */ unk8 mUnk_38; /* 39 */ unk8 mUnk_39; - /* 3A */ Vec2b mUnk_3A; + /* 3A */ Vec2bCpp mUnk_3A; /* 3C */ MapObjectProfile *mpProfile; /* 40 */ @@ -175,7 +173,7 @@ public: void func_ov000_0209d274(unk32 param1); bool func_ov000_0209d29c(unk32 param1); void func_ov000_0209d2c4(unk32 param1, bool param2); - void func_ov000_0209d2f0(unk32 param1, unk32 param2, Vec2b *param3); + void func_ov000_0209d2f0(unk32 param1, unk32 param2, Vec2bCpp *param3); void func_ov000_0209d3b4(unk32 param1, fx32 size); void func_ov000_0209d434(s8 *param1, UnkStruct_ov019_020d24c8_28_258_00 *param2, unk32 param3); void func_ov000_0209d518(unk32 param1, unk32 param2, unk32 param3, u8 param4); @@ -184,7 +182,7 @@ public: bool func_ov000_0209d668(); void func_ov000_0209d6ac(VecFx32 *param1); - static void func_ov000_0209d0bc(Vec2b *param1, MapObject *thisx); + static void func_ov000_0209d0bc(Vec2bCpp *param1, MapObject *thisx); static void func_ov000_0209d22c(unk16 *param1, MapObject *thisx, unk32 param2); static void func_ov000_0209d54c(ActorRef *param1, MapObject *thisx, u16 param2, const VecFx32 *pPos, s16 param3, u16 param4); diff --git a/include/MapObject/MapObjectManager.hpp b/include/MapObject/MapObjectManager.hpp index b7de5f81..9158775c 100644 --- a/include/MapObject/MapObjectManager.hpp +++ b/include/MapObject/MapObjectManager.hpp @@ -9,6 +9,15 @@ typedef void (*UnkCallback_func_01fff4cc)(void *, void *); +struct UnkStruct_MapObjCreateData { + /* 00 */ u16 unk_00; + /* 02 */ union { + Vec2b pos; + u16 raw_pos; + }; + /* 04 */ +}; + class MapObjectManager : public AutoInstance { public: /* 00 */ MapObject **mMapObjTable; @@ -31,14 +40,15 @@ public: ~MapObjectManager(); // itcm - MapObject *func_01fff498(Vec2b param1); + MapObject *func_01fff498(Vec2bCpp param1); void func_01fff4cc(UnkCallback_func_01fff4cc param1, void *param2); MapObject **func_01fff520(UnkStruct_ov000_020b34c4 *param1, MapObject **param2); // overlay 0 - MapObjectId func_ov000_0209c3a8(Vec2b *param1); + MapObjectId func_ov000_0209c3a8(Vec2bCpp *param1); void func_ov000_0209c3e8(); void func_ov000_0209c444(); + MapObject *AllocateMapObject(MapObjectId mapObjId, Vec2b param2, u16 param3, unk32 param4, u8 param5); static void func_ov000_0209c490(); diff --git a/include/Player/PlayerSceneChange.hpp b/include/Player/PlayerSceneChange.hpp index 7da8073b..bffabc85 100644 --- a/include/Player/PlayerSceneChange.hpp +++ b/include/Player/PlayerSceneChange.hpp @@ -15,7 +15,7 @@ public: /* 48 */ unk32 mUnk_48; /* 4C */ unk32 mUnk_4C; /* 50 */ unk32 mUnk_50; - /* 54 */ UnkStruct_SceneChange1 mUnk_54; + /* 54 */ EntranceInfo mUnk_54; /* 68 */ unk32 mUnk_68; /* 6C */ s32 mUnk_6C; /* 70 */ volatile VecFx32 mUnk_70; diff --git a/include/Save/SaveFile.hpp b/include/Save/SaveFile.hpp index 909838ee..b6f26214 100644 --- a/include/Save/SaveFile.hpp +++ b/include/Save/SaveFile.hpp @@ -67,7 +67,7 @@ struct SaveMiscAdvManager { /* 28 */ u16 unk_28; /* 2A */ u16 postDate; /* 2C */ union { - Vec2b stampPositions[StampType_Max]; + Vec2bCpp stampPositions[StampType_Max]; u16 stampPos[StampType_Max]; }; /* 54 */ s8 obtainedLetters[LetterType_Max]; @@ -327,7 +327,7 @@ struct SaveFile_00000_2600_Data { /* 00 */ u8 unk_00; /* 01 */ u8 unk_01; /* 02 */ u8 unk_02; - /* 03 */ Vec2b unk_03[61]; + /* 03 */ Vec2bCpp unk_03[61]; /* 7E */ u16 unk_7E; /* 80 */ }; diff --git a/include/System/OverlayManager.hpp b/include/System/OverlayManager.hpp index 07280dfb..716e157e 100644 --- a/include/System/OverlayManager.hpp +++ b/include/System/OverlayManager.hpp @@ -399,6 +399,10 @@ public: return this->mLoadedOverlays[OverlaySlot_8] == OverlayIndex_FldAjito; } + bool IsASR() { + return this->mLoadedOverlays[OverlaySlot_9] == OverlayIndex_ASR; + } + void Load(OverlaySlot slot, OverlayIndex index); void LoadIfNotLoaded(OverlaySlot slot, OverlayIndex index); void Unload(OverlaySlot slot); diff --git a/include/Unknown/Common.hpp b/include/Unknown/Common.hpp index 0a0e5d12..e7c254c5 100644 --- a/include/Unknown/Common.hpp +++ b/include/Unknown/Common.hpp @@ -1073,7 +1073,7 @@ struct UnkDataStruct4_14_2 { /* 12C */ }; -struct UnkStruct_SceneChange1; +struct EntranceInfo; struct UnkDataStruct4 { /* 00 (vtable) */ /* 04 */ u16 mUnk_04; @@ -1097,7 +1097,7 @@ struct UnkDataStruct4 { void func_ov024_020d2518(); void func_ov024_020d251c(); - void func_ov024_020d2520(UnkStruct_SceneChange1 *param1); + void func_ov024_020d2520(EntranceInfo *param1); void func_ov024_020d2538(u32 sceneIndex, u8 roomIndex, UnkDataStruct4_14_2 *param3); void func_ov024_020d2564(); void func_ov024_020d258c(u32 sceneIndex, u8 roomIndex); diff --git a/include/Unknown/UnkStruct_027e0960.hpp b/include/Unknown/UnkStruct_027e0960.hpp index 02884426..5e1131e7 100644 --- a/include/Unknown/UnkStruct_027e0960.hpp +++ b/include/Unknown/UnkStruct_027e0960.hpp @@ -68,18 +68,23 @@ public: ~UnkStruct_027e0960(); // overlay 0 + void func_ov000_0205a11c(); + void func_ov000_0205a120(); + void func_ov000_0205a160(); + void func_ov000_0205a164(); + void func_ov000_0205a1a4(); + void func_ov000_0205a1fc(u8 nEntries); + void func_ov000_0205a288(unk32 index, const ZMBEntryRALB *pEntry); + void func_ov000_0205a2a4(volatile unk32 index, ZMBRALBPoint *pPoint); + void func_ov000_0205a2c8(); UnkStruct_027e0960_TableEntry *func_ov000_0205a390(u8 param1); UnkStruct_027e0960_TableEntry *func_ov000_0205a3fc(VecFx32 param1, unk32 param4); static UnkStruct_027e0960 *Create(); // overlay 1 - void func_ov000_0205a11c(); - void func_ov000_0205a120(); - void func_ov000_0205a160(); - void func_ov000_0205a164(); - static void Destroy(); }; +// path manager? extern UnkStruct_027e0960 *data_027e0960; diff --git a/include/Unknown/UnkStruct_027e09a4.hpp b/include/Unknown/UnkStruct_027e09a4.hpp index 445dd155..6a8519db 100644 --- a/include/Unknown/UnkStruct_027e09a4.hpp +++ b/include/Unknown/UnkStruct_027e09a4.hpp @@ -5,6 +5,7 @@ #include "System/SysNew.hpp" #include "Unknown/UnkStruct_0204a060.hpp" #include "Unknown/UnkStruct_027e09a0.hpp" +#include "files.h" #include "global.h" #include "iterator.hpp" #include "types.h" @@ -16,57 +17,87 @@ class UnkStruct_027e09a4; #define ROOM_INDEX_NONE 0xFF -struct UnkStruct_SceneChange1 { - /* 00 */ unk32 mSceneIndex; - /* 04 */ unk32 mUnk_04; - /* 08 */ unk16 mUnk_08; - /* 0A */ u8 mRoomIndex; - /* 0B */ u8 mSpawnIndex; - /* 0C */ bool mIsCS; - /* 0D */ u8 mUnk_0D; - /* 0E */ u8 mCutsceneIndex; - /* 0F */ u8 mUnk_0F; - /* 10 */ u8 mUnk_10; - /* 11 */ u8 mUnk_11; - /* 12 */ u16 mUnk_12; +struct EntranceInfo { + /* 00 */ s32 sceneIndex; + /* 04 */ unk32 unk_04; + /* 08 */ unk16 unk_08; + /* 0A */ u8 roomIndex; + /* 0B */ u8 spawnIndex; + /* 0C */ bool isCS; + /* 0D */ u8 unk_0D; + /* 0E */ u8 csIndex; + /* 0F */ u8 unk_0F; + /* 10 */ u8 unk_10; + /* 11 */ u8 unk_11; + /* 12 */ u16 unk_12; /* 14 */ - UnkStruct_SceneChange1() { - this->mSceneIndex = SceneIndex_Max; - this->mUnk_04 = 0; - this->mUnk_08 = 0; - this->mRoomIndex = ROOM_INDEX_NONE; - this->mSpawnIndex = 0; - this->mIsCS = false; - this->mUnk_0D = 0; - this->mCutsceneIndex = CutsceneIndex_None; - this->mUnk_0F = 0; - this->mUnk_10 = 0; + EntranceInfo() {} + + EntranceInfo(bool isCS) { + this->sceneIndex = SceneIndex_Max; + this->unk_04 = 0; + this->unk_08 = 0; + this->roomIndex = ROOM_INDEX_NONE; + this->spawnIndex = 0; + this->isCS = isCS; + this->unk_0D = 0; + this->csIndex = CutsceneIndex_None; + this->unk_0F = 0; + this->unk_10 = 0; } - UnkStruct_SceneChange1(CutsceneParamsEntry *pEntry, bool nextIsCS) { + EntranceInfo(CutsceneParamsEntry *pEntry, bool isCS) { u8 sceneIndex = pEntry->mSceneIndex; u8 cutsceneIndex = pEntry->mCutsceneIndex; u8 spawnIndex = pEntry->mSpawnIndex; u8 roomIndex = pEntry->mRoomIndex; - this->mSceneIndex = sceneIndex; - this->mUnk_04 = 0; - this->mUnk_08 = 0; - this->mRoomIndex = roomIndex; - this->mSpawnIndex = spawnIndex; - this->mIsCS = nextIsCS; - this->mUnk_0D = 0; - this->mCutsceneIndex = cutsceneIndex; - this->mUnk_0F = 0; - this->mUnk_10 = 0; + this->sceneIndex = sceneIndex; + this->unk_04 = 0; + this->unk_08 = 0; + this->roomIndex = roomIndex; + this->spawnIndex = spawnIndex; + this->isCS = isCS; + this->unk_0D = 0; + this->csIndex = cutsceneIndex; + this->unk_0F = 0; + this->unk_10 = 0; } - UnkStruct_SceneChange1(const UnkStruct_SceneChange1 *pSource) { - MI_CpuCopy32((void *) pSource, this, sizeof(UnkStruct_SceneChange1)); + EntranceInfo(const ZMBEntryWARP *pEntry) { + SceneIndex sceneIndex = data_027e09a0->GetSceneIndexFromName(pEntry->destName); + u8 unk_04 = pEntry->unk_01; + s32 cutsceneIndex = CutsceneIndex_None; + + if (pEntry->unk_14 != 0 || pEntry->unk_15 != 0) { + cutsceneIndex = func_ov000_020a7840(pEntry->unk_14, pEntry->unk_15); + } + + u8 unk_10 = pEntry->unk_17; + u8 unk_00 = pEntry->unk_00; + u8 spawnIndex = pEntry->spawnIndex; + u8 roomIndex = pEntry->roomIndex; + + this->sceneIndex = sceneIndex; + this->unk_04 = unk_04; + this->unk_08 = 0; + this->roomIndex = roomIndex; + this->spawnIndex = spawnIndex; + this->isCS = false; + this->unk_0D = unk_00; + this->csIndex = cutsceneIndex; + this->unk_0F = 0; + this->unk_10 = unk_10; } - UnkStruct_SceneChange1(s32) {} + EntranceInfo(const EntranceInfo *pSource) { + MI_CpuCopy32((void *) pSource, this, sizeof(EntranceInfo)); + } + + EntranceInfo(const EntranceInfo &refSource) { + MI_CpuCopy32((void *) &refSource, this, sizeof(EntranceInfo)); + } }; class UnkStruct_WarpUnk1_24 : public UnkStruct_0204a060_Base3 { @@ -109,8 +140,8 @@ public: /* 00 (base) */ /* 24 */ UnkStruct_WarpUnk1_24 mUnk_24; /* 50 */ UnkStruct_WarpUnk1_50 mUnk_50; - /* 78 */ UnkStruct_SceneChange1 mUnk_78; // current scene? - /* 8C */ UnkStruct_SceneChange1 mUnk_8C; // next scene + /* 78 */ EntranceInfo mCurEntrance; + /* 8C */ EntranceInfo mNextEntrance; /* A0 */ UnkStruct_WarpUnk1_A0 mUnk_A0; /* B4 */ unk32 mSpawnTransitionType; // the behavior of Link when entering a new scene /* B8 */ @@ -142,8 +173,8 @@ public: /* 00 (vtable) */ /* 04 */ Iterator mUnk_04; /* 0C */ wchar_t mUnk_0C[8]; - /* 1C */ UnkStruct_SceneChange1 mUnk_1C; - /* 30 */ unk16 mUnk_30; + /* 1C */ EntranceInfo mUnk_1C; + /* 30 */ u16 mUnk_30; /* 32 */ bool mUnk_32; /* 33 */ unk8 mUnk_33; /* 34 */ @@ -186,8 +217,8 @@ public: class UnkStruct_027e09a4 : public AutoInstance { public: - /* 00 */ UnkStruct_SceneChange1 mUnk_00; // the infos of the current area, this isn't saved when you save the game - /* 14 */ UnkStruct_SceneChange1 mUnk_14; + /* 00 */ EntranceInfo mUnk_00; // the infos of the current area, this isn't saved when you save the game + /* 14 */ EntranceInfo mUnk_14; /* 28 */ unk32 mUnk_28; /* 2C */ UnkStruct_027e09a4_2C mUnk_2C; /* 40 */ UnkStruct_027e09a4_2C mUnk_40; @@ -200,15 +231,15 @@ public: /* 68 */ bool IsCutscene() { - return this->mUnk_00.mIsCS == true; + return this->mUnk_00.isCS == true; } bool IsNotCutscene() { - return this->mUnk_00.mIsCS != true; + return this->mUnk_00.isCS != true; } u8 CurrentCSIndex() { - return this->mUnk_00.mCutsceneIndex; + return this->mUnk_00.csIndex; } bool UnkCheck(unk32 sceneIndex) { @@ -245,31 +276,31 @@ public: } SceneIndex CurrentSceneIndex() { - return this->mUnk_00.mSceneIndex; + return this->mUnk_00.sceneIndex; } bool IsDarkRealm() { - return this->mUnk_00.mSceneIndex <= SceneIndex_t_eviltrain3 && this->mUnk_00.mSceneIndex >= SceneIndex_t_eviltrain; + return this->mUnk_00.sceneIndex <= SceneIndex_t_eviltrain3 && this->mUnk_00.sceneIndex >= SceneIndex_t_eviltrain; } bool IsDungeonTower() { - return this->mUnk_00.mSceneIndex == SceneIndex_d_main; + return this->mUnk_00.sceneIndex == SceneIndex_d_main; } bool IsPirate() { - return this->mUnk_00.mSceneIndex == SceneIndex_f_pirate; + return this->mUnk_00.sceneIndex == SceneIndex_f_pirate; } bool IsWater3() { - return this->mUnk_00.mSceneIndex == SceneIndex_f_water3; + return this->mUnk_00.sceneIndex == SceneIndex_f_water3; } bool IsSnowdriftStation() { - return this->mUnk_00.mSceneIndex == SceneIndex_f_kakushi1; + return this->mUnk_00.sceneIndex == SceneIndex_f_kakushi1; } bool IsPassenger() { - return this->mUnk_00.mSceneIndex == SceneIndex_f_passenger; + return this->mUnk_00.sceneIndex == SceneIndex_f_passenger; } UnkStruct_027e09a4(unk32 param1); @@ -282,7 +313,7 @@ public: // overlay 0 unk8 func_ov000_02070bd0(unk32 csIndex, unk32 param2); - UnkStruct_SceneChange1 *func_ov000_02070560(); + EntranceInfo *func_ov000_02070560(); void func_ov000_020707a8(void *param1); void func_ov000_02070834(void *param1); void func_ov000_0207087c(unk32 param1); @@ -291,18 +322,18 @@ public: void func_ov000_02070a4c(unk32 param1); unk32 func_ov000_02070554(); UnkStruct_WarpUnk1_A0 *func_ov000_02070538(); - bool func_ov000_02070a9c(UnkStruct_SceneChange1 *param1); - bool func_ov000_02072154(UnkStruct_SceneChange1 *param1, unk32 param2); + bool func_ov000_02070a9c(EntranceInfo *param1); + bool func_ov000_02072154(EntranceInfo *param1, unk32 param2); bool func_ov000_0207056c(); void func_ov000_020705e8(SaveFile *param1, unk32 param2); // overlay 1 void func_ov001_020b662c(); void func_ov001_020b66dc(); - void func_ov001_020b6758(const UnkStruct_SceneChange1 *param1, bool param2); + void func_ov001_020b6758(const EntranceInfo *param1, bool param2); void func_ov001_020b68a4(bool param1, bool param2, bool param3); - void func_ov001_020b6924(const UnkStruct_SceneChange1 *param1, bool param2); - void func_ov001_020b69b4(const UnkStruct_SceneChange1 *param1, bool param2); + void func_ov001_020b6924(const EntranceInfo *param1, bool param2); + void func_ov001_020b69b4(const EntranceInfo *param1, bool param2); static UnkStruct_027e09a4 *Create(unk32 param1); diff --git a/include/Unknown/UnkStruct_027e0cd8.hpp b/include/Unknown/UnkStruct_027e0cd8.hpp index f0f8c2a6..bb272f22 100644 --- a/include/Unknown/UnkStruct_027e0cd8.hpp +++ b/include/Unknown/UnkStruct_027e0cd8.hpp @@ -4,6 +4,7 @@ #include "math.hpp" #include "types.h" +#include "Actor/Actor.hpp" #include "MapObject/MapObjectManager.hpp" #include "Render/ModelRender.hpp" #include "Save/SaveFile.hpp" @@ -58,6 +59,7 @@ public: /* 14 */ unk32 mUnk_14; /* 18 */ + UnkStruct_ov001_020c40f4(int) {} UnkStruct_ov001_020c40f4() { this->mUnk_0E = -1; this->mUnk_0F = 0; @@ -145,15 +147,35 @@ public: ~UnkStruct_027e0cd8_0C_Base_148_02(); }; -// UnkStruct_ov001_020c2a40 ? -class UnkStruct_027e0cd8_0C_Base_154_00 { -public: - /* 00 */ STRUCT_PAD(0x00, 0x14); - /* 14 */ +typedef u16 UnkFlags1; +enum UnkFlags1_ { + UnkFlags1_None = 0, + UnkFlags1_1 = 1, + UnkFlags1_2 = 2, + UnkFlags1_3 = 3, + UnkFlags1_4 = 4, + UnkFlags1_5 = 5, + UnkFlags1_6 = 6, + UnkFlags1_7 = 7, + UnkFlags1_Max = 8, +}; - UnkStruct_027e0cd8_0C_Base_154_00(const UnkStruct_027e0cd8_0C_Base_154_00 &ref) { - MI_CpuCopy32((void *) &ref, this, sizeof(UnkStruct_027e0cd8_0C_Base_154_00)); - } +typedef u16 UnkFlags2; +enum UnkFlags2_ { + UnkFlags2_None = 0, + UnkFlags2_0 = 0, + UnkFlags2_1 = 1, + UnkFlags2_2 = 2, + UnkFlags2_3 = 3, + UnkFlags2_4 = 4, + UnkFlags2_5 = 5, + UnkFlags2_6 = 6, + UnkFlags2_7 = 7, + UnkFlags2_8 = 8, + UnkFlags2_9 = 9, + UnkFlags2_10 = 10, + UnkFlags2_11 = 11, + UnkFlags2_Max = 12, }; class UnkStruct_027e0cd8_0C_Base { @@ -171,7 +193,7 @@ public: }; /* 088 */ UnkStruct_027e0cd8_0C_Base_88 mUnk_088; /* 098 */ UnkStruct_027e0cd8_0C_Base_98 *mUnk_098; - /* 09C */ Vec2s mUnk_09C; + /* 09C */ Vec2us mUnk_09C; /* 0A0 */ unk32 mUnk_0A0; /* 0A4 */ unk32 mUnk_0A4; /* 0A8 */ unk32 mUnk_0A8; @@ -179,14 +201,17 @@ public: /* 0AC */ bool mUnk_0AD; /* 0AC */ bool mUnk_0AE; /* 0AC */ bool mUnk_0AF; - /* 0B0 */ unk32 mUnk_0B0; + /* 0B0 */ u8 mUnk_0B0; + /* 0B1 */ u8 mUnk_0B1; + /* 0B2 */ u8 mUnk_0B2; + /* 0B3 */ u8 mUnk_0B3; /* 0B4 */ ZeldaObjectList *mUnk_0B4; /* 0B8 */ ZeldaObjectList *mUnk_0B8[8]; // map objects /* 0D8 */ ZeldaObjectList *mUnk_0D8; /* 0DC */ ZeldaObjectList *mUnk_0DC[8]; // actors /* 0FC */ unk32 mUnk_0FC; /* 100 */ volatile BOOL mIsCS; - /* 104 */ unk16 mUnk_104; + /* 104 */ UnkFlags1 mUnk_104; /* 108 */ unk32 mUnk_108; /* 10C */ unk32 mUnk_10C; /* 110 */ unk32 mUnk_110; @@ -195,18 +220,18 @@ public: /* 11C */ unk32 mUnk_11C; /* 120 */ unk32 mUnk_120; /* 124 */ unk32 mUnk_124; - /* 128 */ u16 mUnk_128; + /* 128 */ UnkFlags2 mUnk_128; /* 12A */ bool mUnk_12A; /* 12B */ bool mUnk_12B; /* 12C */ bool mUnk_12C; /* 12D */ bool mUnk_12D; /* 12E */ bool mUnk_12E; - /* 130 */ unk32 mUnk_130; - /* 134 */ unk32 mUnk_134; - /* 138 */ unk32 mUnk_138; - /* 13C */ FixedVector mUnk_13C; - /* 148 */ CustomVector mUnk_148; - /* 154 */ CustomVector mUnk_154; + /* 130 */ ZMBSectionROMB *mpROMB; + /* 134 */ ZMBSectionCAME *mpCAME; + /* 138 */ ZMBSectionCMPT *mpCMPT; + /* 13C */ FixedVector mUnk_13C; // related to player + /* 148 */ CustomVector mUnk_148; // related to "arrange" stuff + /* 154 */ CustomVector mUnk_154; // exit list? /* 160 */ UnkStruct_027e0cd8_0C_Base(UnkStruct_027e0cd8 *param1); @@ -217,43 +242,43 @@ public: /* 10 */ virtual void vfunc_10(); /* 14 */ virtual void vfunc_14(); /* 18 */ virtual void vfunc_18(); - /* 1C */ virtual void vfunc_1C(const UnkStruct_SceneChange1 *param1, bool param2, bool param3); + /* 1C */ virtual void vfunc_1C(const EntranceInfo *param1, bool param2, bool param3); /* 20 */ virtual void vfunc_20(); /* 24 */ virtual void vfunc_24(); /* 28 */ virtual fx32 vfunc_28(VecFx32 *param1, unk32 param2, unk32 param3); /* 2C */ virtual void vfunc_2C(); - /* 30 */ virtual void LoadSceneModel(const UnkStruct_SceneChange1 *param1); - /* 34 */ virtual void vfunc_34(unk32 param1); + /* 30 */ virtual void LoadSceneModel(const EntranceInfo *param1); + /* 34 */ virtual void ZMB_ParseROMB(ZMBSectionROMB *pROMB); /* 38 */ virtual void vfunc_38(); /* 3C */ virtual void vfunc_3C(); /* 40 */ virtual void vfunc_40(u8 spawnIndex); // itcm - fx32 func_01ffedf4(Vec2b *pPos); + fx32 func_01ffedf4(Vec2bCpp *pPos); // overlay 0 unk32 func_ov000_02080180(void *param1); - void func_ov000_020801b0(Vec2b *param1, unk32 param2, unk32 param3); + void func_ov000_020801b0(Vec2bCpp *param1, unk32 param2, unk32 param3); bool func_ov000_020802ec(u16 param1, VecFx32 *param2); void func_ov000_020803ec(u16 param1); void func_ov000_0208053c(u16 param1); - bool func_ov000_02080658(unk32 param1, UnkStruct_SceneChange1 *param2); - void func_ov000_020808f4(void *param1, void *param2, unk32 param3); + bool func_ov000_02080658(unk32 param1, EntranceInfo *param2); + void func_ov000_020808f4(void *param1, void *param2, u8 param3); unk32 func_ov000_02080a44(); void func_ov000_02080a5c(VecFx32 *param1); void func_ov000_02080a78(VecFx32 *param1); // overlay 1 - void func_ov001_020b85d0(const UnkStruct_SceneChange1 *param1); + void func_ov001_020b85d0(const EntranceInfo *param1); void func_ov001_020b88c0(unk32 param1); void func_ov001_020b88ec(); const UnkStruct_ov001_020c40f4 *func_ov001_020b8a5c(unk32 spawnIndex, unk32 param1); void func_ov001_020b8aec(); void func_ov001_020b8b94(ZMBEntryARAB *pARAB); - void func_ov001_020b8c30(const UnkStruct_027e0cd8_0C_Base_154_00 ¶m1); + void func_ov001_020b8c30(const EntranceInfo ¶m1); void *func_ov001_020b8c80(unk32 param1); - void func_ov001_020b8c90(unk32 param1); - void func_ov001_020b8c98(unk32 param1); + void func_ov001_020b8c90(ZMBSectionCMPT *pCMPT); + void func_ov001_020b8c98(ZMBSectionCAME *pCAME); void func_ov001_020b8db8(); void func_ov001_020b8e24(); void func_ov001_020b8e54(); @@ -275,7 +300,7 @@ public: /* 10 */ virtual void vfunc_10() override; /* 14 */ virtual void vfunc_14() override; /* 18 */ virtual void vfunc_18() override; - /* 1C */ virtual void vfunc_1C(const UnkStruct_SceneChange1 *param1, bool param2, bool param3) override; + /* 1C */ virtual void vfunc_1C(const EntranceInfo *param1, bool param2, bool param3) override; /* 20 */ virtual void vfunc_20() override; /* 24 */ virtual void vfunc_24() override; /* 28 */ virtual fx32 vfunc_28(VecFx32 *param1, unk32 param2, unk32 param3) override; @@ -316,8 +341,15 @@ public: /* 08 */ unk32 mUnk_08; /* 0C */ UnkStruct_027e0cd8_04_0C *mUnk_0C; /* 10 */ u8 mUnk_10; - /* 11 */ u8 mUnk_11; - /* 12 */ STRUCT_PAD(0x12, 0x40); + /* 10 */ u8 mUnk_11; + /* 12 */ u8 mUnk_12; + /* 12 */ u8 mUnk_13; + /* 14 */ u8 mUnk_14; + /* 14 */ u8 mUnk_15; + /* 16 */ u8 mUnk_16; + /* 16 */ u8 mUnk_17; + /* 18 */ Vec2p mUnk_18; + /* 20 */ STRUCT_PAD(0x20, 0x40); /* 40 */ u8 mUnk_40[1][10]; // at least one STRUCT_PAD(0x4C, 0xB4); /* B4 */ @@ -327,6 +359,10 @@ public: void func_ov000_02081354(const CourseListEntry *pEntry, const UnkStruct_func_ov000_020702a8 *pUnk1, SaveFile_00000_0000_Data_184 *param3, bool param4); + void func_ov000_02081874(u16 nEntries); + void func_ov000_020819a4(const UnkStruct_func_ov000_020702a8 *pUnk1); + void func_ov000_020818d0(CourseListRoomEntry *param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5); + void func_ov000_0208199c(SceneIndex sceneIndex, void *param2, unk32 param3); }; class UnkStruct_027e0cd8_10 : public UnkDataStruct4 { @@ -374,15 +410,16 @@ public: bool func_ov000_02082124(); bool func_ov000_02081c28(); void func_ov000_02081ca0(); + bool func_ov000_02081edc(u16 param1); // overlay 1 - void func_ov001_020b7830(const UnkStruct_SceneChange1 *param1); + void func_ov001_020b7830(const EntranceInfo *param1); void func_ov001_020b7a7c(); void func_ov001_020b7b38(const CourseListEntry *pEntry, const UnkStruct_func_ov000_020702a8 *pUnk1); - void func_ov001_020b7c08(const UnkStruct_SceneChange1 *param1, const UnkStruct_WarpUnk1_A0 *param2); - void func_ov001_020b7d64(const UnkStruct_SceneChange1 *param1); + void func_ov001_020b7c08(const EntranceInfo *param1, const UnkStruct_WarpUnk1_A0 *param2); + void func_ov001_020b7d64(const EntranceInfo *param1); void func_ov001_020b7e50(); - void func_ov001_020b7e68(const UnkStruct_SceneChange1 *param1, bool param2); + void func_ov001_020b7e68(const EntranceInfo *param1, bool param2); void func_ov001_020b803c(); bool func_ov001_020b80fc(SceneIndex sceneIndex); void func_ov001_020b8120(SceneIndex sceneIndex); diff --git a/include/Unknown/UnkStruct_027e0ce0.hpp b/include/Unknown/UnkStruct_027e0ce0.hpp index 880e2458..409460c9 100644 --- a/include/Unknown/UnkStruct_027e0ce0.hpp +++ b/include/Unknown/UnkStruct_027e0ce0.hpp @@ -397,6 +397,8 @@ class UnkStruct_027e0ce0_1C { public: /* 00 */ STRUCT_PAD(0x00, 0x0C); /* 0C */ MapObjectProfile_Derived2_20_Base *mUnk_0C; + + void func_ov001_020bd0a4(bool param1); }; // PlayerManager? diff --git a/include/Unknown/UnkStruct_ov000_020b50c0.hpp b/include/Unknown/UnkStruct_ov000_020b50c0.hpp index ff1d69f5..f9a1612b 100644 --- a/include/Unknown/UnkStruct_ov000_020b50c0.hpp +++ b/include/Unknown/UnkStruct_ov000_020b50c0.hpp @@ -3,7 +3,7 @@ #include "System/SysNew.hpp" #include "types.h" -class UnkStruct_SceneChange1; +class EntranceInfo; class UnkStruct_ov018_020c5ac0 { public: @@ -63,10 +63,10 @@ public: void func_ov001_020bd87c(void); void func_ov001_020bd8dc(void); void func_ov001_020bd8ac(void); - void func_ov001_020bd970(UnkStruct_SceneChange1 *param1); + void func_ov001_020bd970(EntranceInfo *param1); void func_ov001_020bde5c(void); - void func_ov001_020bde04(UnkStruct_SceneChange1 *param1); - void func_ov001_020bde4c(const UnkStruct_SceneChange1 *param1); + void func_ov001_020bde04(EntranceInfo *param1); + void func_ov001_020bde4c(const EntranceInfo *param1); // overlay 18 UnkStruct_ov018_020c5ac0 *func_ov018_020c5718(void); diff --git a/include/files.h b/include/files.h index 8679598e..1a5e4b12 100644 --- a/include/files.h +++ b/include/files.h @@ -1,5 +1,7 @@ #pragma once +#include "Actor/ActorId.hpp" +#include "Actor/ActorRef.hpp" #include "Map/MapObjectId.hpp" #include "types.h" @@ -11,11 +13,13 @@ extern "C" { typedef u32 FileType; enum FileType_ { - FileType_ZOB = 'BLOZ', - FileType_ZTB = '1BTZ', - FileType_ZMB = '1BMZ', - FileType_CIB = 'ZCIB', - FileType_CLB = 'ZCLB', + FileType_ZOB = 'BLOZ', + FileType_ZTB = '1BTZ', + FileType_ZAB = 'ZCAB', + FileType_ZMBv1 = 'ZMB1', + FileType_ZMBv2 = 'ZMB2', + FileType_CIB = 'ZCIB', + FileType_CLB = 'ZCLB', }; typedef struct FileInfos { @@ -23,6 +27,55 @@ typedef struct FileInfos { /* 04 */ size_t size; } FileInfos; +// .cib +typedef struct CourseInitEntry { + /* 00 */ const char name[16]; + /* 10 */ STRUCT_PAD(0x10, 0x24); +} CourseInitEntry; // size = 0x24 + +typedef struct CourseInitHeader { + /* 00 */ FileType type; // always "ZCIB" + /* 04 */ size_t nSize; + /* 08 */ u32 nEntries; + /* 0C */ u32 nEntries2; // same value as above? +} CourseInitHeader; // size = 0x10 + +// .clb +typedef struct CourseListRoomEntry { + /* 00 */ u8 roomIndex; + /* 01 */ u8 mapPaintIndex; + /* 02 */ u16 unk_02; +} CourseListRoomEntry; // size = 0x08 + +typedef struct CourseListEntry { + /* 00 */ const char name[16]; + /* 10 */ unk32 unk_10; + /* 14 */ u8 numRooms; + /* 15 */ unk8 unk_15; + /* 16 */ unk8 titleCardMsgIndex; + /* 17 */ u8 saveCourseIndex; + /* 18 */ u8 unk_18; + /* 19 */ u8 unk_19; + /* 1A */ u8 unk_1A; + /* 1B */ u8 unk_1B; + /* 1C */ u8 unk_1C; + /* 1D */ u8 unk_1D; + /* 1E */ u8 unk_1E; + /* 1F */ u8 unk_1F; + /* 20 */ u8 defaultMapPaintIndex; + /* 21 */ s8 unk_21; // scene index but unknown purpose + /* 22 */ unk8 unk_22; // pad? + /* 23 */ unk8 unk_23; // pad? + /* 24 */ CourseListRoomEntry roomEntries[]; +} CourseListEntry; // size >= 0x28 + +typedef struct CourseListHeader { + /* 00 */ FileType type; // always "ZCIB" + /* 04 */ size_t nSize; + /* 08 */ u32 nEntries; + /* 0C */ u32 nEntries2; // same value as above? +} CourseListHeader; // size = 0x10 + // .zob typedef struct ZOBHeader { /* 00 */ FileType type; // always "ZOLB" @@ -51,7 +104,7 @@ typedef struct ZTBHeader { /* 00 */ u32 magic; // 'MTRB' /* 04 */ FileType type; // always "ZTB1" /* 08 */ size_t nSize; - /* 0C */ u32 nEntries; + /* 0C */ u32 nSections; /* 10 */ u8 unused[0x10]; } ZTBHeader; // size = 0x20 @@ -129,35 +182,90 @@ extern BOOL ZTB_ParseGRRL(FileInfos *pFileInfos, UnkDataStruct4 *pDst, ZTBSectio extern BOOL ZTB_ParseSTAB(FileInfos *pFileInfos, UnkDataStruct4 *pDst, ZTBSectionSTAB *pSTAB); extern BOOL ZTB_ParseLDMK(FileInfos *pFileInfos, UnkDataStruct4 *pDst, ZTBSectionLDMK *pLDMK); +// .zab +typedef u32 ZABSectionType; +enum ZABSectionType_ { + ZABSectionType_CABM = 'CABM', + ZABSectionType_CABI = 'CABI', +}; + +typedef struct ZABHeader { + /* 00 */ FileType type; // always "ZCAB" (probably "Zelda Course Arrange Binary"?) + /* 04 */ size_t nSize; + /* 08 */ u32 nSections; + /* 0C */ unk32 unk_0C; +} ZABHeader; // size = 0x10 + +typedef struct ZABEntryCABM { + /* 00 */ u8 unk_00; + /* 01 */ u8 unk_01; + /* 02 */ u8 unk_02; + /* 03 */ s8 unk_03; + /* 04 */ u32 unk_04; +} ZABEntryCABM; // size = 0x08 + +typedef struct ZABSectionHeader { + /* 00 */ ZABSectionType type; + /* 04 */ size_t nSize; + /* 08 */ u8 unk_08; + /* 09 */ u8 unk_09; + /* 0A */ u8 unk_0A; + /* 0B */ u8 unk_0B; + /* 0C */ u8 unk_0C; + /* 0D */ u8 unk_0D; + /* 0E */ u16 nEntries; +} ZABSectionHeader; // size = 0x10 + +typedef struct ZABSectionCABM { + /* 00 */ ZABSectionHeader header; + /* 10 */ ZABEntryCABM entries[]; +} ZABSectionCABM; + +typedef struct ZABSectionCABI { + /* 00 */ ZABSectionHeader header; + /* 10 */ // unknown +} ZABSectionCABI; + +struct UnkStruct_027e0cd8_04; +struct UnkStruct_func_ov000_020702a8; + +extern BOOL ZAB_ParseFile(FileInfos *pFileInfos, u32 sceneIndex, UnkStruct_027e0cd8_04 *pDst, const CourseListEntry *pEntry, + const UnkStruct_func_ov000_020702a8 *pUnk1, BOOL param6); +extern BOOL ZAB_ParseCAMB(FileInfos *pFileInfos, ZABSectionCABM *pCABM, u32 sceneIndex, UnkStruct_027e0cd8_04 *pDst, + const CourseListEntry *pEntry, const UnkStruct_func_ov000_020702a8 *pUnk1, BOOL param6); +extern BOOL ZAB_ParseCABI(FileInfos *pFileInfos, ZABSectionCABI *pCABI, BOOL param3); +extern BOOL ZAB_GetRoomEntry(FileInfos *pFileInfos, u8 param2, const CourseListEntry *pEntry, CourseListRoomEntry *param4); + // .zmb typedef u32 ZMBSectionType; enum ZMBSectionType_ { - ZMBSectionType_LDLB = 'LDLB', // related to script triggers - ZMBSectionType_ROMB = 'ROMB', // unknown - ZMBSectionType_ROOB = 'ROOM', // room settings - ZMBSectionType_ARAB = 'ARAB', // locations? (?) - ZMBSectionType_RALB = 'RALB', // paths? - ZMBSectionType_WARP = 'WARP', // exits? - ZMBSectionType_CAME = 'CAME', // camera settings? - ZMBSectionType_PLYR = 'PLYR', // player entrances? - ZMBSectionType_MPOB = 'MPOB', // map object list, parameters are stored here - ZMBSectionType_NPCA = 'NPCA', // actor list, same as above + ZMBSectionType_ROMB = 'ROMB', // unknown + ZMBSectionType_ROOM = 'ROOM', // room settings + ZMBSectionType_LDLB = 'LDLB', // related to script triggers + ZMBSectionType_MapObjects = 'MPOB', // map object list, parameters are stored here + ZMBSectionType_ARAB = 'ARAB', // locations? (?) + ZMBSectionType_RALB = 'RALB', // paths? + ZMBSectionType_NPCA = 'NPCA', // actor list, same as above + ZMBSectionType_PLYR = 'PLYR', // player entrances? + ZMBSectionType_WARP = 'WARP', // exits? + ZMBSectionType_CAME = 'CAME', // camera settings? + ZMBSectionType_CMPT = 'CMPT', // ? }; typedef struct ZMBFileInfos { /* 00 */ void *pFile; /* 04 */ size_t size; /* 08 */ unk16 unk_08; + /* 0A */ unk16 unk_0A; /* 0C */ unk16 unk_0C; - /* 10 */ unk16 unk_10; - /* 14 */ unk16 unk_14; -} ZMBFileInfos; + /* 0E */ s16 unk_0E; +} ZMBFileInfos; // size = 0x10 typedef struct ZMBHeader { /* 00 */ u32 magic; // 'MAPB' /* 04 */ FileType type; // always "ZMB1" /* 08 */ size_t nSize; - /* 0C */ u32 nEntries; + /* 0C */ u32 nSections; /* 10 */ u8 unused[0x10]; } ZMBHeader; // size = 0x20 @@ -169,18 +277,68 @@ typedef struct ZMBSectionHeader { /* 0B */ u8 unk_0B; } ZMBSectionHeader; // size = 0x0C -typedef struct ZMBEntryRALB { +typedef struct ZMBSectionROMB { + /* 00 */ ZMBSectionHeader header; + /* 0C */ +} ZMBSectionROMB; + +typedef struct ZMBEntryROOM { /* 00 */ u8 unk_00; /* 01 */ u8 unk_01; /* 02 */ u8 unk_02; /* 03 */ u8 unk_03; - /* 04 */ unk32 unk_04; -} ZMBEntryRALB; // size = 0x08 + /* 04 */ u8 unk_04; + /* 05 */ u8 unk_05; + /* 06 */ u8 unk_06; + /* 07 */ u8 unk_07; + /* 08 */ u32 unk_08; + /* 0C */ u8 unk_0C; + /* 0D */ union { + u8 unk_0D; + bool unk_0D_bool; + }; + /* 0E */ u8 unk_0E; + /* 0F */ u8 unk_0F; + /* 10 */ u16 unk_10; + /* 12 */ unk16 unk_12; // pad +} ZMBEntryROOM; // size = 0x14 -typedef struct ZMBSectionRALB { +typedef struct ZMBSectionROOM { /* 00 */ ZMBSectionHeader header; - /* 0C */ ZMBEntryRALB entries[]; -} ZMBSectionRALB; + /* 0C */ ZMBEntryROOM entries[]; +} ZMBSectionROOM; + +typedef struct ZMBEntryLBLB { + /* 00 */ u8 unk_00; + /* 01 */ u8 unk_01; + /* 02 */ u8 unk_02; + /* 03 */ u8 unk_03; + /* 04 */ u16 unk_04; + /* 06 */ unk16 unk_06; +} ZMBEntryLBLB; // size = 0x08 + +typedef struct ZMBSectionLDLB { + /* 00 */ ZMBSectionHeader header; + /* 0C */ ZMBEntryLBLB entries[]; +} ZMBSectionLDLB; + +typedef struct ZMBMapObjEntry { + /* 00 */ u32 id; + /* 04 */ Vec2b pos; + /* 06 */ u16 angle; + /* 08 */ u16 params[4]; + /* 10 */ u16 unk_10[2]; + /* 14 */ unk32 unk_14; + /* 18 */ u8 unk_18; + /* 19 */ u8 unk_19; + /* 1A */ u8 unk_1A; + /* 1B */ u8 unk_1B; +} ZMBMapObjEntry; // size = 0x1C + +typedef struct ZMBSectionMapObjectList { + /* 00 */ ZMBSectionHeader header; + /* 0C */ ZMBMapObjEntry entries[]; +} ZMBSectionMapObjectList; typedef struct ZMBEntryARAB { /* 00 */ u8 unk_00; @@ -195,57 +353,130 @@ typedef struct ZMBEntryARAB { /* 0F */ unk8 unk_0F; } ZMBEntryARAB; // size = 0x10 -struct UnkStruct_027e0cd8_0C_Base; +typedef struct ZMBSectionARAB { + /* 00 */ ZMBSectionHeader header; + /* 0C */ ZMBEntryARAB entries[]; +} ZMBSectionARAB; -extern BOOL ZMB_ParseFile(ZMBFileInfos *pFileInfos, UnkStruct_027e0cd8_0C_Base *pDst, BOOL param3); +// ZMBPathPoint? +typedef struct ZMBRALBPoint { + /* 00 */ u8 unk_00; + /* 01 */ u8 unk_01; + /* 02 */ fx16 angle; + /* 04 */ VecFx32 pos; + /* 10 */ unk16 unk_10; + /* 12 */ u16 unk_12; + /* 14 */ unk32 unk_14; +} ZMBRALBPoint; // size = 0x18 -// .cib -typedef struct CourseInitEntry { - /* 00 */ const char name[16]; - /* 10 */ STRUCT_PAD(0x10, 0x24); -} CourseInitEntry; // size = 0x24 - -typedef struct CourseInitHeader { - /* 00 */ FileType type; // always "ZCIB" - /* 04 */ size_t nSize; - /* 08 */ u32 nEntries; - /* 0C */ u32 nEntries2; // same value as above? -} CourseInitHeader; // size = 0x10 - -// .clb -typedef struct CourseListRoomEntry { - /* 00 */ u8 roomIndex; - /* 01 */ u8 mapPaintIndex; +// ZMBPathEntry? +typedef struct ZMBEntryRALB { + /* 00 */ u8 unk_00; + /* 01 */ u8 numPoints; /* 02 */ u8 unk_02; /* 03 */ u8 unk_03; -} CourseListRoomEntry; // size = 0x08 + /* 04 */ unk32 unk_04; +} ZMBEntryRALB; // size = 0x08 -typedef struct CourseListEntry { - /* 00 */ const char name[16]; - /* 10 */ unk32 unk_10; - /* 14 */ unk8 numRooms; - /* 15 */ unk8 unk_15; - /* 16 */ unk8 titleCardMsgIndex; - /* 17 */ u8 saveCourseIndex; - /* 18 */ u8 unk_18; - /* 19 */ u8 unk_19; - /* 1A */ u8 unk_1A; - /* 1B */ u8 unk_1B; +typedef struct ZMBSectionRALB { + /* 00 */ ZMBSectionHeader header; + /* 0C */ ZMBEntryRALB entries[]; +} ZMBSectionRALB; + +typedef struct ZMBActorEntry { + /* 00 */ u32 id; + /* 04 */ struct { + u16 x, y; + } pos; + /* 08 */ s8 unk_08; + /* 08 */ s8 unk_09; + /* 0A */ u16 angle; + /* 0C */ u16 params[4]; + /* 14 */ u16 unk_14[2]; + /* 18 */ u32 unk_18; /* 1C */ u8 unk_1C; /* 1D */ u8 unk_1D; /* 1E */ u8 unk_1E; /* 1F */ u8 unk_1F; - /* 20 */ u8 defaultMapPaintIndex; - /* 21 */ s8 unk_21; // scene index but unknown purpose - /* 24 */ CourseListRoomEntry roomEntries[]; -} CourseListEntry; // size >= 0x28 +} ZMBActorEntry; // size = 0x20 -typedef struct CourseListHeader { - /* 00 */ FileType type; // always "ZCIB" - /* 04 */ size_t nSize; - /* 08 */ u32 nEntries; - /* 0C */ u32 nEntries2; // same value as above? -} CourseListHeader; // size = 0x10 +typedef struct ZMBSectionActorList { + /* 00 */ ZMBSectionHeader header; + /* 0C */ ZMBActorEntry entries[]; +} ZMBSectionActorList; + +typedef struct ZMBEntryPLYR { + /* 00 */ VecFx32 unk_00; + /* 0C */ u16 unk_0C; + /* 0E */ u8 unk_0E; + /* 0F */ u8 unk_0F; + /* 10 */ u8 unk_10; + /* 11 */ u8 unk_11; + /* 12 */ u8 unk_12; + /* 13 */ u8 unk_13; +} ZMBEntryPLYR; // size = 0x14 + +typedef struct ZMBSectionPLYR { + /* 00 */ ZMBSectionHeader header; + /* 0C */ ZMBEntryPLYR entries[]; +} ZMBSectionPLYR; + +typedef struct ZMBEntryWARP { + /* 00 */ u8 unk_00; + /* 01 */ u8 unk_01; + /* 02 */ u8 roomIndex; + /* 03 */ u8 spawnIndex; + /* 04 */ const char destName[16]; + /* 14 */ u8 unk_14; + /* 15 */ u8 unk_15; + /* 16 */ u8 unk_16; + /* 17 */ u8 unk_17; +} ZMBEntryWARP; // size = 0x18 + +typedef struct ZMBSectionWARP { + /* 00 */ ZMBSectionHeader header; + /* 0C */ ZMBEntryWARP entries[]; +} ZMBSectionWARP; + +typedef struct ZMBEntryCAME { + /* 00 */ fx32 unk_00; + /* 04 */ VecFx32 unk_04; + /* 10 */ s16 unk_10; + /* 12 */ s16 unk_12; + /* 14 */ unk32 unk_14[2]; // pad +} ZMBEntryCAME; // size = 0x1C + +typedef struct ZMBSectionCAME { + /* 00 */ ZMBSectionHeader header; + /* 0C */ ZMBEntryCAME entries[]; +} ZMBSectionCAME; + +typedef struct ZMBEntryCMPT { + /* 04 */ VecFx32 unk_00; + /* 10 */ u8 unk_0C; + /* 12 */ u8 unk_0D; + /* 14 */ unk16 unk_0E; // pad +} ZMBEntryCMPT; // size = 0x10 + +typedef struct ZMBSectionCMPT { + /* 00 */ ZMBSectionHeader header; + /* 0C */ ZMBEntryCMPT entries[]; +} ZMBSectionCMPT; + +struct UnkStruct_027e0cd8_0C_Base; + +extern BOOL ZMB_ParseFile(ZMBFileInfos *pFileInfos, UnkStruct_027e0cd8_0C_Base *pDst, bool param3); +extern BOOL ZMB_ParseROMB(ZMBFileInfos *pFileInfos, ZMBSectionROMB *pROMB, UnkStruct_027e0cd8_0C_Base *pDst); +extern BOOL ZMB_ParseLDLB(ZMBFileInfos *pFileInfos, ZMBSectionLDLB *pLDLB, UnkStruct_027e0cd8_0C_Base *pDst); +extern BOOL ZMB_ParseARAB(ZMBFileInfos *pFileInfos, ZMBSectionARAB *pARAB, UnkStruct_027e0cd8_0C_Base *pDst); +extern BOOL ZMB_ParseRALB(ZMBFileInfos *pFileInfos, ZMBSectionRALB *pRALB, UnkStruct_027e0cd8_0C_Base *pDst); +extern BOOL ZMB_ParseWARP(ZMBFileInfos *pFileInfos, ZMBSectionWARP *pWARP, UnkStruct_027e0cd8_0C_Base *pDst); +extern BOOL ZMB_ParseMapObjList(ZMBFileInfos *pFileInfos, ZMBSectionMapObjectList *pMapObjs, UnkStruct_027e0cd8_0C_Base *pDst); +extern BOOL ZMB_ParseActorList(ZMBFileInfos *pFileInfos, ZMBSectionActorList *pNPCA, UnkStruct_027e0cd8_0C_Base *pDst); +extern BOOL ZMB_ParseROOM(ZMBFileInfos *pFileInfos, ZMBSectionROOM *pROOM, UnkStruct_027e0cd8_0C_Base *pDst); +extern BOOL ZMB_ParsePLYR(ZMBFileInfos *pFileInfos, ZMBSectionPLYR *pPLYR, UnkStruct_027e0cd8_0C_Base *pDst); +extern BOOL ZMB_ParseCAME(ZMBFileInfos *pFileInfos, ZMBSectionCAME *pCAME, UnkStruct_027e0cd8_0C_Base *pDst); +extern BOOL ZMB_ParseCMPT(ZMBFileInfos *pFileInfos, ZMBSectionCMPT *pCMPT, UnkStruct_027e0cd8_0C_Base *pDst); #ifdef __cplusplus } // extern "C" diff --git a/include/flags.h b/include/flags.h index 3bffe23f..1ecf2676 100644 --- a/include/flags.h +++ b/include/flags.h @@ -11,11 +11,14 @@ */ #define GET_FLAG(arr, pos) (((arr)[((u32) (pos)) >> 5] & (1 << ((pos) & 0x1F))) != 0) -#define GET_FLAG2(var, pos) ((var) & (1 << pos)) #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)) +#define GET_FLAG2(var, pos) (((var) & (1 << (pos))) != 0) +#define SET_FLAG2(var, pos) ((var) |= 1 << (pos)) +#define UNSET_FLAG2(var, pos) ((var) &= ~(1 << (pos))) + #define GET_FLAG_ALT(arr, pos) (((arr)[(pos) >> 5] & (1 << ((0x1F - ((pos) & 0x1F))))) != 0) #define SET_FLAG_ALT(arr, pos) ((arr)[(pos) >> 5] |= 1 << ((0x1F - ((pos) & 0x1F)))) #define UNSET_FLAG_ALT(arr, pos) ((arr)[(pos) >> 5] &= ~(1 << ((0x1F - ((pos) & 0x1F))))) diff --git a/include/math.hpp b/include/math.hpp index c8572279..9de19b02 100644 --- a/include/math.hpp +++ b/include/math.hpp @@ -160,6 +160,10 @@ union Vec2us { x = X; y = Y; } + Vec2us(Vec2us *pFrom) { + x = pFrom->x; + y = pFrom->y; + } }; #define Vec2us_CopyAdd(a, b, dst) Vec2_CopyAdd(Vec2us, a, b, dst) @@ -204,7 +208,7 @@ static inline void Vec2us_Copy(const Vec2us *a, Vec2us *dst) { #endif } -union Vec2b { +union Vec2bCpp { struct { /* 0 */ u8 x; /* 2 */ u8 y; @@ -212,24 +216,24 @@ union Vec2b { }; u8 coords[2]; - void operator=(const Vec2b &from) { + void operator=(const Vec2bCpp &from) { this->x = from.x; this->y = from.y; } - Vec2b() {} - Vec2b(u8 X, u8 Y) { + Vec2bCpp() {} + Vec2bCpp(u8 X, u8 Y) { x = X; y = Y; } }; -#define Vec2b_CopyAdd(a, b, dst) Vec2_CopyAdd(Vec2b, a, b, dst) -#define Vec2b_CopySub(a, b, dst) Vec2_CopySub(Vec2b, a, b, dst) +#define Vec2b_CopyAdd(a, b, dst) Vec2_CopyAdd(Vec2bCpp, a, b, dst) +#define Vec2b_CopySub(a, b, dst) Vec2_CopySub(Vec2bCpp, a, b, dst) #define Vec2b_Set(a, dst) Vec2_Set(a, dst) -static inline void Vec2b_Clear(Vec2b *dst) { - Vec2b empty; +static inline void Vec2b_Clear(Vec2bCpp *dst) { + Vec2bCpp empty; empty.x = 0; empty.y = 0; @@ -241,7 +245,7 @@ static inline void Vec2b_Clear(Vec2b *dst) { #endif } -static inline void Vec2b_Add(const Vec2b *a, const Vec2b *b, Vec2b *dst) { +static inline void Vec2b_Add(const Vec2bCpp *a, const Vec2bCpp *b, Vec2bCpp *dst) { u8 x = a->x + b->x; u8 y = a->y + b->y; @@ -249,7 +253,7 @@ static inline void Vec2b_Add(const Vec2b *a, const Vec2b *b, Vec2b *dst) { dst->y = y; } -static inline void Vec2b_Sub(const Vec2b *a, const Vec2b *b, Vec2b *dst) { +static inline void Vec2b_Sub(const Vec2bCpp *a, const Vec2bCpp *b, Vec2bCpp *dst) { u8 x = a->x - b->x; u8 y = a->y - b->y; @@ -257,7 +261,7 @@ static inline void Vec2b_Sub(const Vec2b *a, const Vec2b *b, Vec2b *dst) { dst->y = y; } -static inline void Vec2b_Copy(const Vec2b *a, Vec2b *dst) { +static inline void Vec2b_Copy(const Vec2bCpp *a, Vec2bCpp *dst) { #if __MWERKS__ dst->coords = a->coords; #else diff --git a/libs/cpp/include/vector b/libs/cpp/include/vector index 49c6cbdd..8ec71b85 100644 --- a/libs/cpp/include/vector +++ b/libs/cpp/include/vector @@ -9,6 +9,7 @@ #include #include +#include #define TAG_UNK 0 @@ -195,7 +196,7 @@ namespace std { return alloc().max_size(); } - size_t capacity() const { + volatile size_t capacity() const { return capacity_.first(); } @@ -207,10 +208,19 @@ namespace std { size_ = n; } - void move_construct_to_end(iterator begin, iterator end); + void move_construct_to_end(iterator begin, iterator end) { + for (iterator it = this->end(); begin < end; begin++) { + new(it) T(*begin); + it++; + size_++; + } + } + //! TODO: probably a fake match? void reallocate_copy(size_t n) { - __vec_deleter tmp(alloc()); + UnkMSLStruct1 unk = UnkMSLStruct1(); + UnkMSLStruct1 unk2 = UnkMSLStruct1(); + __vec_deleter tmp; tmp.allocate(n); tmp.move_construct_to_end(begin(), end()); optimize_after_moved_from(); @@ -219,6 +229,29 @@ namespace std { swap(size_, tmp.size_); } + void move_construct_to_end_alt(iterator begin, iterator end) { + move_construct_to_end_alt(begin, end, UnkMSLStruct1()); + } + + void move_construct_to_end_alt(iterator begin, iterator end, UnkMSLStruct1) { + size_t diff = end - begin; + memcpy(this->end(), begin, sizeof(T) * diff); + memset(begin, 0, sizeof(T) * diff); + size_ += diff; + } + + //! TODO: non-matching (stack issues :))))) + void reallocate_copy_alt(size_t n) { + UnkMSLStruct1 unk2 = UnkMSLStruct1(); + __vec_deleter tmp; + tmp.allocate(n); + tmp.move_construct_to_end_alt(begin(), end()); + optimize_after_moved_from(); + swap(cap(), tmp.cap()); + swap(data_, tmp.data_); + swap(size_, tmp.size_); + } + void reserve(size_t n) { if (n > cap()) { reallocate_copy(n); @@ -465,7 +498,7 @@ namespace std { typedef _Constructor::const_iterator const_iterator; vector() {} - ~vector() { } + ~vector() {} void push_back(const_reference x) { _Constructor::push_back(x); diff --git a/libs/nitro/include/nitro/math.h b/libs/nitro/include/nitro/math.h index 8960ddf9..01166021 100644 --- a/libs/nitro/include/nitro/math.h +++ b/libs/nitro/include/nitro/math.h @@ -53,7 +53,15 @@ extern "C" { #define MUL_FX32(a, b) (fx32)((((s64) (a)) * ((s64) (b)) + 0x800) >> FX32_SHIFT) #define DIV_FX32(a, b) (((a) << FX32_SHIFT) / (b)) +// some kind of angle conversion? only used for angle values so far +#define MUL_FX32_FX64(a, b) (fx32)(((((a) * (b)) + 0x80000000000LL) >> 32)) +#define UNK_FX_OPERATION_1(a) (MUL_FX32_FX64((u64) (a), 0xB60B60B60BLL) >> FX32_SHIFT) + +#define MUL_FX32_U(a, b) (fx32)((((u64) (a)) * ((u64) (b)) + 0x800) >> FX32_SHIFT) +#define UNK_FX_OPERATION_2(a) MUL_FX32_U((u64) (a), FLOAT_TO_FX32(1.2f)) + #define DEG_TO_ANG(n) ((n) * 0x10000 / 360) +#define DEG_TO_ANG_ALT(n) DEG_TO_ANG((u64) (n)) #define SIN(n) (gSinCosTable[2 * ((n) >> 4)]) #define COS(n) (gSinCosTable[2 * ((n) >> 4) + 1]) @@ -82,6 +90,15 @@ static inline void Vec2p_Copy(const Vec2p *src, Vec2p *dst) { #endif } +typedef union Vec2b { + struct { + /* 0 */ u8 x; + /* 4 */ u8 y; + /* 8 */ + }; + u8 coords[2]; +} Vec2b; + typedef struct Mat2p { /* 00 */ Vec2p xColumn; /* 08 */ Vec2p yColumn; diff --git a/libs/nitro/include/nitro/types.h b/libs/nitro/include/nitro/types.h index 450e2391..ea92b8cf 100644 --- a/libs/nitro/include/nitro/types.h +++ b/libs/nitro/include/nitro/types.h @@ -34,7 +34,7 @@ typedef volatile s8 vs8; typedef volatile f32 vf32; typedef volatile f64 vf64; -typedef u32 BOOL; +typedef s32 BOOL; #define ATTRIBUTE_ALIGN(x) __attribute__((aligned(x))) diff --git a/src/000_Second/Actor/ActorUnkSWOB.cpp b/src/000_Second/Actor/ActorUnkSWOB.cpp index 56607e32..c49a9874 100644 --- a/src/000_Second/Actor/ActorUnkSWOB.cpp +++ b/src/000_Second/Actor/ActorUnkSWOB.cpp @@ -21,11 +21,11 @@ ActorProfileUnkSWOB::ActorProfileUnkSWOB() : ActorUnkSWOB::ActorUnkSWOB() {} bool ActorUnkSWOB::vfunc_18(unk32 param1) { - this->mUnk_9E = this->mUnk_5C.mUnk_1C_0; + this->mUnk_9E = this->mUnk_5C.mUnk_1A[1]; this->mUnk_94 = this->mUnk_5C.mParams[1]; this->mUnk_98 = this->mUnk_5C.mParams[2]; this->mUnk_A0 = this->mUnk_9E + this->mUnk_5C.mParams[0]; - this->mUnk_A2 = this->mUnk_5C.mUnk_18.y; + this->mUnk_A2 = this->mUnk_5C.mUnk_18[1]; this->mUnk_9C = this->mUnk_9E; if (this->func_ov000_02098a60(0)) { @@ -73,9 +73,9 @@ void ActorUnkSWOB::func_ov000_0209aa30(void) { case 3: data_ov000_020b5214.func_ov000_0206db44(0xA3); - s16 unk_78 = this->mUnk_5C.mUnk_1C_0; + s16 unk_78 = this->mUnk_5C.mUnk_1A[1]; if (unk_78 > 0) { - data_027e0cd8->func_ov000_02081d7c((s16) (unk_78 - 1), this->mUnk_5C.mUnk_18.y, true); + data_027e0cd8->func_ov000_02081d7c((s16) (unk_78 - 1), this->mUnk_5C.mUnk_18[1], true); } break; case 2: { diff --git a/src/000_Second/Actor/ActorUnkSWTM.cpp b/src/000_Second/Actor/ActorUnkSWTM.cpp index 7875c8e7..c1d301de 100644 --- a/src/000_Second/Actor/ActorUnkSWTM.cpp +++ b/src/000_Second/Actor/ActorUnkSWTM.cpp @@ -30,11 +30,11 @@ ActorUnkSWTM::~ActorUnkSWTM() { // https://decomp.me/scratch/qkP8m bool ActorUnkSWTM::vfunc_18(unk32 param1) { - this->mUnk_9E = this->mUnk_5C.mUnk_1C_0; + this->mUnk_9E = this->mUnk_5C.mUnk_1A[1]; this->mUnk_98 = this->mUnk_5C.mParams[2]; this->mUnk_A4 = this->mUnk_5C.mParams[1] * 30; this->mUnk_A0 = this->mUnk_9E + this->mUnk_5C.mParams[0]; - this->mUnk_A2 = this->mUnk_5C.mUnk_18.y; + this->mUnk_A2 = this->mUnk_5C.mUnk_18[1]; this->mUnk_9C = this->mUnk_9E; if (this->func_ov000_02098a60(0)) { diff --git a/src/000_Second/Actor/Actor_Derived1.cpp b/src/000_Second/Actor/Actor_Derived1.cpp index 92322122..69780048 100644 --- a/src/000_Second/Actor/Actor_Derived1.cpp +++ b/src/000_Second/Actor/Actor_Derived1.cpp @@ -69,11 +69,11 @@ void Actor_Derived1::vfunc_1C() { } bool Actor_Derived1::func_ov000_020a8db0() { - return data_027e0cd8->func_ov000_02081e30(this->mUnk_5C.mUnk_1A, this->mUnk_5C.mUnk_18.x); + return data_027e0cd8->func_ov000_02081e30(this->mUnk_5C.mUnk_1A[0], this->mUnk_5C.mUnk_18[0]); } bool Actor_Derived1::func_ov000_020a8dd0() { - return data_027e0cd8->func_ov000_02081e30(this->mUnk_5C.mUnk_1C_0, this->mUnk_5C.mUnk_18.y); + return data_027e0cd8->func_ov000_02081e30(this->mUnk_5C.mUnk_1A[1], this->mUnk_5C.mUnk_18[1]); } // non-matching diff --git a/src/000_Second/Cutscene/Cutscene.cpp b/src/000_Second/Cutscene/Cutscene.cpp index dbeec752..28b225e0 100644 --- a/src/000_Second/Cutscene/Cutscene.cpp +++ b/src/000_Second/Cutscene/Cutscene.cpp @@ -826,7 +826,7 @@ CutsceneParamsEntry *Cutscene_GetParamEntry(s32 csIndex) { return (CutsceneParamsEntry *) &gCSParamsEntries[csIndex]; } -s32 func_ov000_020a7840(unk32 param1) {} +s32 func_ov000_020a7840(unk32 param1, unk32 param2) {} bool Cutscene_IsAdventureFlagSet(s32 csIndex) { CutsceneParamsEntry *pEntry = Cutscene_GetParamEntry(csIndex); diff --git a/src/000_Second/MapObject/MapObject.cpp b/src/000_Second/MapObject/MapObject.cpp index 8d1bdeaa..0e940cf2 100644 --- a/src/000_Second/MapObject/MapObject.cpp +++ b/src/000_Second/MapObject/MapObject.cpp @@ -21,7 +21,7 @@ MapObject::MapObject() { this->mUnk_10 = NULL; this->mUnk_16 = -1; this->mFlags[0] = 0; - this->mUnk_20.func_ov000_0209c7c8(); + this->mUnk_20.Init(); *(u32 *) &this->mUnk_38 = 0; UnkStruct_ov000_020b5d34 *ptr1 = &data_ov000_020b5d34; @@ -54,7 +54,7 @@ bool MapObject::vfunc_00() { void MapObject::vfunc_04() {} -void MapObject::func_ov000_0209d0bc(Vec2b *param1, MapObject *thisx) { +void MapObject::func_ov000_0209d0bc(Vec2bCpp *param1, MapObject *thisx) { VecFx32 pos; Vec2p out; @@ -71,13 +71,13 @@ void MapObject::func_ov000_0209d0bc(Vec2b *param1, MapObject *thisx) { bool MapObject::func_ov000_0209d114() { bool result[2]; - MapObject::func_ov000_0209d0bc((Vec2b *) &result, this); + MapObject::func_ov000_0209d0bc((Vec2bCpp *) &result, this); return result[0]; } bool MapObject::func_ov000_0209d12c() { bool result[2]; - MapObject::func_ov000_0209d0bc((Vec2b *) &result, this); + MapObject::func_ov000_0209d0bc((Vec2bCpp *) &result, this); return result[1]; } @@ -145,9 +145,9 @@ void MapObject::func_ov000_0209d2c4(unk32 param1, bool param2) { data_027e0cd8->func_ov000_02081d7c(this->mUnk_20.mUnk_0A[param1], this->mUnk_20.mUnk_08[param1], param2); } -void MapObject::func_ov000_0209d2f0(unk32 param1, unk32 param2, Vec2b *param3) { +void MapObject::func_ov000_0209d2f0(unk32 param1, unk32 param2, Vec2bCpp *param3) { UnkStruct_027e0cd8_0C_Base *temp_r5 = data_027e0cd8->mUnk_0C; - Vec2b sp0(0, 0); + Vec2bCpp sp0(0, 0); sp0.x = this->mUnk_3A.x; diff --git a/src/000_Second/MapObject/MapObjectManager_000.cpp b/src/000_Second/MapObject/MapObjectManager_000.cpp new file mode 100644 index 00000000..a1105572 --- /dev/null +++ b/src/000_Second/MapObject/MapObjectManager_000.cpp @@ -0,0 +1,60 @@ +#include "MapObject/MapObjectManager.hpp" +#include "Unknown/UnkStruct_027e0cd8.hpp" +#include "Unknown/UnkStruct_ov000_020b5d34.hpp" + +MapObject *MapObjectManager::AllocateMapObject(MapObjectId mapObjId, Vec2b param2, u16 param3, unk32 param4, u8 param5) { + s16 *pUnkPos = &this->mUnk_0C[param2.y][param2.x]; + + if (*pUnkPos >= 0) { + return NULL; + } + + MapObject **ppTable = this->mMapObjTable; + + while (ppTable != this->mMapObjTableEnd && *ppTable != NULL ? true : false) { + ppTable++; + } + + if (ppTable != this->mMapObjTableEnd) { + VecFx32 sp14; + + UnkStruct_MapObjCreateData spawnData; + spawnData.raw_pos = 0; + spawnData.unk_00 = 0x1000; + spawnData.pos.x = param2.x; + spawnData.pos.y = param2.y; + + data_027e0cd8->mUnk_0C->func_ov000_020808f4(&sp14, (void *) ¶m2, param5); + + UnkStruct_ov000_020b5d34_00 args; + args.mUnk_00 = (unk32 *) &spawnData; + args.mUnk_04 = (MapObject_20 *) param4; + args.mUnk_08 = &sp14; + args.mUnk_0C = (s16 *) ¶m3; + + data_ov000_020b5d34.mUnk_00 = &args; + MapObject *pMapObj = data_ov000_020b5d34.CreateMapObject(mapObjId); + *ppTable = pMapObj; + + if (pMapObj->vfunc_00()) { + // init was successful, proceed and return the pointer + + // this seems to set map object table index in an array that uses tile pos to figure out which map obj it is + *pUnkPos = ppTable - this->mMapObjTable; + + MapObject **ppNext = ppTable + 1; + if (ppNext <= this->mUnk_08) { + ppNext = this->mUnk_08; + } + + this->mUnk_08 = ppNext; + return pMapObj; + } else { + // init failed, destroy the new map object and return NULL + delete pMapObj; + *ppTable = NULL; + } + } + + return NULL; +} diff --git a/src/000_Second/MapObject/MapObjectMiniBlocks.cpp b/src/000_Second/MapObject/MapObjectMiniBlocks.cpp index cbc0a87f..5986d0eb 100644 --- a/src/000_Second/MapObject/MapObjectMiniBlocks.cpp +++ b/src/000_Second/MapObject/MapObjectMiniBlocks.cpp @@ -35,12 +35,12 @@ MapObjectMiniBlocks::MapObjectMiniBlocks() { bool MapObjectMiniBlocks::vfunc_00(void) { GET_PROFILE(MapObjectProfileMiniBlocks) - ->func_ov000_0209ccd8(this->mUnk_20.mUnk_00[1], data_ov000_020af574[this->mUnk_20.mUnk_00[1]]); + ->func_ov000_0209ccd8(this->mUnk_20.mParams[1], data_ov000_020af574[this->mUnk_20.mParams[1]]); UnkStruct_027e0cd8_0C_Base *pUnkStruct_027e0cd8_0C = data_027e0cd8->mUnk_0C; u8 uVar6; - if (this->mUnk_20.mUnk_00[1] != MiniBlocksVariant_BLKF) { - Vec2b vec(this->mUnk_3A.x, this->mUnk_3A.y); + if (this->mUnk_20.mParams[1] != MiniBlocksVariant_BLKF) { + Vec2bCpp vec(this->mUnk_3A.x, this->mUnk_3A.y); this->mPos.y = pUnkStruct_027e0cd8_0C->func_01ffedf4(&vec); } @@ -50,7 +50,7 @@ bool MapObjectMiniBlocks::vfunc_00(void) { vec.z = FLOAT_TO_FX32(0.0f); uVar6 = 0; - switch (this->mUnk_20.mUnk_00[0]) { + switch (this->mUnk_20.mParams[0]) { case 4: case 5: case 6: @@ -64,7 +64,7 @@ bool MapObjectMiniBlocks::vfunc_00(void) { uVar6 = 2; break; default: - if (this->mUnk_20.mUnk_00[1] == MiniBlocksVariant_BLKF) { + if (this->mUnk_20.mParams[1] == MiniBlocksVariant_BLKF) { vec.x = FLOAT_TO_FX32(0.0f); vec.y = FLOAT_TO_FX32(0.0f); vec.z = -FLOAT_TO_FX32(0.375f); @@ -76,12 +76,12 @@ bool MapObjectMiniBlocks::vfunc_00(void) { break; } - BMDSectionModel *pSectionModel = GET_PROFILE(MapObjectProfileMiniBlocks)->vfunc_1C(this->mUnk_20.mUnk_00[1])->mUnk_50; + BMDSectionModel *pSectionModel = GET_PROFILE(MapObjectProfileMiniBlocks)->vfunc_1C(this->mUnk_20.mParams[1])->mUnk_50; this->mUnk_40.vfunc_08(G3d_GetModelVariantPtr(pSectionModel, uVar6)); unk32 var_r0_2; unk32 var_r0; - switch (this->mUnk_20.mUnk_00[0]) { + switch (this->mUnk_20.mParams[0]) { case 1: case 6: case 8: diff --git a/src/000_Second/MapObject/MapObjectProfile.cpp b/src/000_Second/MapObject/MapObjectProfile.cpp index 28c5ad35..dc4564b5 100644 --- a/src/000_Second/MapObject/MapObjectProfile.cpp +++ b/src/000_Second/MapObject/MapObjectProfile.cpp @@ -18,10 +18,10 @@ void MapObject_20::func_ov000_0209c7ac(MapObjectId mapObjId) { data_ov000_020b5d3c[UnkStruct_ov000_020b5d34::func_ov000_0209c718(mapObjId)] = NULL; } -void MapObject_20::func_ov000_0209c7c8() { +void MapObject_20::Init() { this->mUnk_16 = 0; this->mUnk_10 = 0; - MI_CpuFill32(0, this->mUnk_00, sizeof(this->mUnk_00)); + MI_CpuFill32(0, this->mParams, sizeof(this->mParams)); MI_CpuFill16(0, this->mUnk_08, sizeof(this->mUnk_08)); MI_CpuFill16(0, this->mUnk_0A, sizeof(this->mUnk_0A)); this->mUnk_14 = -1; diff --git a/src/000_Second/MapObject/MapObjectSwitchStep.cpp b/src/000_Second/MapObject/MapObjectSwitchStep.cpp index 28ff39bf..f70d986d 100644 --- a/src/000_Second/MapObject/MapObjectSwitchStep.cpp +++ b/src/000_Second/MapObject/MapObjectSwitchStep.cpp @@ -99,7 +99,7 @@ MapObjectSwitchStep::MapObjectSwitchStep() : } MapObjectSwitchStep::~MapObjectSwitchStep() { - if (this->mUnk_20.mUnk_00[0] == 2) { + if (this->mUnk_20.mParams[0] == 2) { this->func_ov000_0209e11c(0, 1); this->func_ov000_0209d2c4(0, false); } @@ -118,7 +118,7 @@ bool MapObjectSwitchStep::vfunc_00(void) { this->func_ov000_0209e11c(0, 1); } - if (data_027e09a4->mUnk_00.mSceneIndex >= SceneIndex_battle01 && data_027e09a4->mUnk_00.mSceneIndex < SceneIndex_Max) { + if (data_027e09a4->mUnk_00.sceneIndex >= SceneIndex_battle01 && data_027e09a4->mUnk_00.sceneIndex < SceneIndex_Max) { MapObjectSwitchStep_data_020b6118.func_ov000_0205fc20(0x78, 0x0C, NULL, NULL); SET_FLAG(this->mFlags, MapObjFlag_5); } @@ -160,8 +160,8 @@ void MapObjectSwitchStep::func_ov000_0209e11c(unk32 param1, unk32 param2) { this->mUnk_EA = 1; } - if (this->mUnk_20.mUnk_00[0] == 2) { - this->mUnk_E6 = this->mUnk_20.mUnk_00[1]; + if (this->mUnk_20.mParams[0] == 2) { + this->mUnk_E6 = this->mUnk_20.mParams[1]; this->mUnk_E4 = 0; } @@ -203,7 +203,7 @@ void MapObjectSwitchStep::vfunc_18(s8 *param1, s8 param2) { return; } - if (data_027e09a4->mUnk_00.mSceneIndex >= SceneIndex_battle01 && data_027e09a4->mUnk_00.mSceneIndex < SceneIndex_Max) { + if (data_027e09a4->mUnk_00.sceneIndex >= SceneIndex_battle01 && data_027e09a4->mUnk_00.sceneIndex < SceneIndex_Max) { Vec2s sp10; stack_struct sp8; u32 sp4; diff --git a/src/001_SceneInit/Actor/ActorManager_001.cpp b/src/001_SceneInit/Actor/ActorManager_001.cpp index 68d0be80..1d77c3c6 100644 --- a/src/001_SceneInit/Actor/ActorManager_001.cpp +++ b/src/001_SceneInit/Actor/ActorManager_001.cpp @@ -27,9 +27,9 @@ struct UnkStruct_ov000_020ab1ac { }; 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}; +const ActorId 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_BEGIN @@ -95,7 +95,7 @@ void ActorManager::func_ov001_020bb018(ZOBHeader *pHeader) { 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.mSceneIndex)->mUnk_20; + int iVar5 = data_027e09a0->func_ov000_020702a8(data_027e09a4->CurrentSceneIndex())->mUnk_20; s32 allocCount; if (data_027e09a4->mUnk_60 == 0) { @@ -121,7 +121,7 @@ void ActorManager::func_ov001_020bb018(ZOBHeader *pHeader) { unk32 iVar5; if (data_027e09a4->IsLand() != 0) { - iVar5 = data_027e09a4->mUnk_00.mSceneIndex; + iVar5 = data_027e09a4->CurrentSceneIndex(); if (iVar5 == SceneIndex_f_rabbit) { this->mUnk_34 = 0xFFFFECCD; // ~0x1332 @@ -196,7 +196,7 @@ void ActorManager::func_ov001_020bb018(ZOBHeader *pHeader) { } } - if (data_027e09a4->UnkCheck(data_027e09a4->mUnk_00.mSceneIndex)) { + if (data_027e09a4->UnkCheck(data_027e09a4->CurrentSceneIndex())) { func_ov071_0215e8d4(); } @@ -209,7 +209,7 @@ void ActorManager::func_ov001_020bb018(ZOBHeader *pHeader) { void ActorManager::func_ov001_020bb414() { func_ov001_020ba59c(&data_0204999c); - if (data_027e09a4->UnkCheck(data_027e09a4->mUnk_00.mSceneIndex)) { + if (data_027e09a4->UnkCheck(data_027e09a4->CurrentSceneIndex())) { this->func_ov001_020bb844(); } @@ -241,7 +241,7 @@ void ActorManager::func_ov001_020bb488() { data_027e0cf4->func_ov021_020f8cdc(); } - if (data_027e09a4->UnkCheck(data_027e09a4->mUnk_00.mSceneIndex)) { + if (data_027e09a4->UnkCheck(data_027e09a4->CurrentSceneIndex())) { data_027e0d70->func_ov071_0215e8f8(); } } @@ -261,7 +261,7 @@ void ActorManager::func_ov001_020bb548() { i++; } - unk32 value = data_027e09a4->mUnk_00.mSceneIndex; + unk32 value = data_027e09a4->CurrentSceneIndex(); if (data_027e09a4->UnkCheck(value)) { data_027e0d70->func_ov071_0215e9ac(); @@ -307,7 +307,7 @@ void ActorManager::func_ov001_020bb630() { } } -void ActorManager::func_ov001_020bb6b0(UnkStruct_SceneChange1 *param1) { +void ActorManager::func_ov001_020bb6b0(EntranceInfo *param1) { ActorProfile **piVar1 = data_ov000_020b539c_eur.func_ov000_02073dc(); ActorProfile **piVar2 = data_ov000_020b539c_eur.func_ov000_02073e8(); @@ -318,8 +318,8 @@ void ActorManager::func_ov001_020bb6b0(UnkStruct_SceneChange1 *param1) { 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 == param1->mSceneIndex && - pEntry->mUnk_08 == param1->mRoomIndex) { + if (pEntry->mUnk_00 == iVar5->mActorId && pEntry->mUnk_04 == param1->sceneIndex && + pEntry->mUnk_08 == param1->roomIndex) { (*piVar1)->mUnk_39 = 1; (*piVar1)->vfunc_08(); } @@ -331,10 +331,10 @@ void ActorManager::func_ov001_020bb6b0(UnkStruct_SceneChange1 *param1) { } } -bool ActorManager::func_ov001_020bb728(s32 param1) { - UnkStruct_SceneChange1 *piVar1 = data_027e09a4->func_ov000_02070560(); +bool ActorManager::func_ov001_020bb728(ActorId actorId) { + EntranceInfo *piVar1 = data_027e09a4->func_ov000_02070560(); - if (piVar1->mSceneIndex != SceneIndex_f_water || piVar1->mRoomIndex != 0) { + if (piVar1->sceneIndex != SceneIndex_f_water || piVar1->roomIndex != 0) { return false; } @@ -342,7 +342,7 @@ bool ActorManager::func_ov001_020bb728(s32 param1) { int value; int value2; - if (param1 == data_ov001_020c2638[i]) { + if (actorId == data_ov001_020c2638[i]) { value = data_ov001_020c2624[i] & 0x1F; value2 = data_027e09b8->mAdventureFlags[(u32) data_ov001_020c2624[i] >> 5]; diff --git a/src/001_SceneInit/Item/ItemManager_001.cpp b/src/001_SceneInit/Item/ItemManager_001.cpp index 3a3e2e9f..5e6a9d3f 100644 --- a/src/001_SceneInit/Item/ItemManager_001.cpp +++ b/src/001_SceneInit/Item/ItemManager_001.cpp @@ -11,7 +11,7 @@ void ItemManager::func_ov001_020bb9f8() { this->mTearsAmount = 0; } - CourseListEntry *pEntry = data_027e09a0->GetCourseEntry(data_027e09a4->mUnk_00.mSceneIndex); + CourseListEntry *pEntry = data_027e09a0->GetCourseEntry(data_027e09a4->CurrentSceneIndex()); if (pEntry->saveCourseIndex < SaveCourseIndex_Max) { this->mKeyAmount = gSaveManager.mUnk_000->unk_030[pEntry->saveCourseIndex].keyAmount; diff --git a/src/001_SceneInit/PassengerManager_001.cpp b/src/001_SceneInit/PassengerManager_001.cpp index 77f82ca3..263fdecb 100644 --- a/src/001_SceneInit/PassengerManager_001.cpp +++ b/src/001_SceneInit/PassengerManager_001.cpp @@ -26,7 +26,7 @@ inline bool Test3(s32 val) { bool ret = true; if (!Test2(val)) { - if (*((volatile unk32 *) &data_027e09a4->mUnk_00.mSceneIndex) != 36) { + if (*((volatile unk32 *) &data_027e09a4->mUnk_00.sceneIndex) != 36) { ret = false; } } @@ -36,11 +36,11 @@ inline bool Test3(s32 val) { // https://decomp.me/scratch/svwnb bool PassengerManager::func_ov001_020bf870() { - s32 sceneIndex = data_027e09a4->mUnk_00.mSceneIndex; + s32 sceneIndex = data_027e09a4->mUnk_00.sceneIndex; bool ret = true; if (!Test3(sceneIndex)) { - if (*((volatile unk32 *) &data_027e09a4->mUnk_00.mSceneIndex) != 37) { + if (*((volatile unk32 *) &data_027e09a4->mUnk_00.sceneIndex) != 37) { ret = false; } } diff --git a/src/001_SceneInit/SceneInitializers_001.cpp b/src/001_SceneInit/SceneInitializers_001.cpp index b0b0d1e2..f78b193b 100644 --- a/src/001_SceneInit/SceneInitializers_001.cpp +++ b/src/001_SceneInit/SceneInitializers_001.cpp @@ -69,7 +69,9 @@ UnkStruct_027e09a4 *UnkStruct_027e09a4::Create(unk32 param1) { return new(HeapIndex_1) UnkStruct_027e09a4(param1); } -UnkStruct_027e09a4::UnkStruct_027e09a4(unk32 param1) { +UnkStruct_027e09a4::UnkStruct_027e09a4(unk32 param1) : + mUnk_00(false), + mUnk_14(false) { this->mUnk_28 = 0; this->mUnk_54 = NULL; this->mpWarpUnk1 = NULL; @@ -108,7 +110,7 @@ UnkStruct_027e09a4::UnkStruct_027e09a4(unk32 param1) { void UnkStruct_027e09a4::func_ov001_020b662c() { UnkStruct_WarpUnk1 *ptr = this->mpWarpUnk1; - ptr->mUnk_78 = this->mUnk_00; + ptr->mCurEntrance = this->mUnk_00; this->mUnk_14 = this->mUnk_00; this->func_ov001_020b6758(&this->mUnk_00, false); } @@ -144,7 +146,7 @@ void UnkStruct_027e09a4::func_ov001_020b66dc() { UnkStruct_027e09a0::Destroy(); } -void UnkStruct_027e09a4::func_ov001_020b6758(const UnkStruct_SceneChange1 *param1, bool param2) { +void UnkStruct_027e09a4::func_ov001_020b6758(const EntranceInfo *param1, bool param2) { OverlayIndex index; unk32 unk_10; @@ -191,7 +193,7 @@ void UnkStruct_027e09a4::func_ov001_020b6758(const UnkStruct_SceneChange1 *param } if (this->IsCutscene()) { - data_027e09b8->func_ov001_020b76c0(param1->mCutsceneIndex); + data_027e09b8->func_ov001_020b76c0(param1->csIndex); } this->mUnk_54->func_ov001_020b6fa0(this->GetCurrentCourseEntry()); @@ -223,16 +225,16 @@ void UnkStruct_027e09a4::func_ov001_020b68a4(bool param1, bool param2, bool para UnkStruct_027e095c::Destroy(); } -void UnkStruct_027e09a4::func_ov001_020b6924(const UnkStruct_SceneChange1 *param1, bool param2) { +void UnkStruct_027e09a4::func_ov001_020b6924(const EntranceInfo *param1, bool param2) { unk32 iVar5; unk32 iVar6; u8 cVar1; u8 cVar2; iVar6 = this->GetCurrentCourseEntry()->unk_10; - iVar5 = data_027e09a0->GetCourseEntry(param1->mSceneIndex)->unk_10; + iVar5 = data_027e09a0->GetCourseEntry(param1->sceneIndex)->unk_10; cVar1 = data_027e09a0->GetCourseEntry(this->CurrentSceneIndex())->unk_1C; - cVar2 = data_027e09a0->GetCourseEntry(param1->mSceneIndex)->unk_1C; + cVar2 = data_027e09a0->GetCourseEntry(param1->sceneIndex)->unk_1C; this->func_ov001_020b69b4(param1, param2); this->func_ov001_020b68a4(data_ov000_020b21c4[iVar5] != data_ov000_020b21c4[iVar6], @@ -240,7 +242,7 @@ void UnkStruct_027e09a4::func_ov001_020b6924(const UnkStruct_SceneChange1 *param this->func_ov001_020b6758(param1, param2); } -void UnkStruct_027e09a4::func_ov001_020b69b4(const UnkStruct_SceneChange1 *param1, bool param2) { +void UnkStruct_027e09a4::func_ov001_020b69b4(const EntranceInfo *param1, bool param2) { VecFx32 vec1; VecFx32 vec2; unk32 local_34; @@ -253,7 +255,7 @@ void UnkStruct_027e09a4::func_ov001_020b69b4(const UnkStruct_SceneChange1 *param for (int i = 0; i < ARRAY_LEN(data_ov001_020c25d4); i++) { SceneIndex sceneIndex = data_ov001_020c25d4[i]; - if (sceneIndex == param1->mSceneIndex) { + if (sceneIndex == param1->sceneIndex) { bVar1 = true; index = i; } @@ -285,11 +287,11 @@ void UnkStruct_027e09a4::func_ov001_020b69b4(const UnkStruct_SceneChange1 *param this->mUnk_2C.mUnk_10 = this->func_ov000_02070538()->mUnk_12; } else { if (this->GetCurrentCourseEntry()->unk_10 == 4) { - switch (param1->mSceneIndex) { + switch (param1->sceneIndex) { case SceneIndex_d_water27: case SceneIndex_f_forest2: case SceneIndex_f_snow2: - switch (param1->mSceneIndex) { + switch (param1->sceneIndex) { case SceneIndex_d_water27: this->mUnk_2C.mSceneIndex = SceneIndex_t_area2; local_34 = 0x0D; @@ -414,8 +416,7 @@ DECL_INSTANCE_DTOR(UnkStruct_027e095c, data_027e095c); DECL_INSTANCE_DTOR(UnkStruct_027e0958, data_027e0958); DECL_INSTANCE_DTOR(UnkStruct_027e0954, data_027e0954); -UnkStruct_027e09a4_54_Base::UnkStruct_027e09a4_54_Base(unk32 *param1) : - mUnk_1C((s32) 0) { +UnkStruct_027e09a4_54_Base::UnkStruct_027e09a4_54_Base(unk32 *param1) { this->mUnk_04.Clear(); this->mUnk_0C[0] = L'\0'; this->mUnk_0C[7] = L'\0'; @@ -448,8 +449,8 @@ void UnkStruct_027e09a4_54_Base::vfunc_0C() { } void UnkStruct_027e09a4_54_Base::func_ov001_020b6fa0(CourseListEntry *pCourseEntry) { - if (this->mUnk_1C.mIsCS == true) { - data_0204a110.func_02018d78(Cutscene_GetParamEntry(this->mUnk_1C.mCutsceneIndex)->mUnk_14); + if (this->mUnk_1C.isCS == true) { + data_0204a110.func_02018d78(Cutscene_GetParamEntry(this->mUnk_1C.csIndex)->mUnk_14); } else { if (data_027e09a4->mUnk_60 == 0) { if (data_027e09a4->IsDarkRealm()) { @@ -489,7 +490,9 @@ UnkStruct_WarpUnk1_24::UnkStruct_WarpUnk1_24() { this->mUnk_2A = false; } -UnkStruct_WarpUnk1::UnkStruct_WarpUnk1() { +UnkStruct_WarpUnk1::UnkStruct_WarpUnk1() : + mCurEntrance(false), + mNextEntrance(false) { this->mSpawnTransitionType = 0; this->mUnk_A0.mUnk_04.x = 0; this->mUnk_A0.mUnk_04.y = 0; @@ -525,8 +528,8 @@ bool UnkStruct_WarpUnk1::func_ov001_020b7144() { this->mUnk_A0.mUnk_12 = func_ov026_02106564(NULL); } - this->mUnk_A0.mSceneIndex = this->mUnk_78.mSceneIndex; - this->mUnk_A0.mRoomIndex = this->mUnk_78.mRoomIndex; + this->mUnk_A0.mSceneIndex = this->mCurEntrance.sceneIndex; + this->mUnk_A0.mRoomIndex = this->mCurEntrance.roomIndex; switch (this->mSpawnTransitionType) { case 0x04: @@ -540,8 +543,8 @@ bool UnkStruct_WarpUnk1::func_ov001_020b7144() { iVar9 = true; break; default: - if (((this->mUnk_78.mSceneIndex != this->mUnk_8C.mSceneIndex) || (this->mUnk_8C.mIsCS == true) || - (this->mUnk_78.mIsCS == true))) { + if (((this->mCurEntrance.sceneIndex != this->mNextEntrance.sceneIndex) || (this->mNextEntrance.isCS == true) || + (this->mCurEntrance.isCS == true))) { iVar9 = true; } else { iVar9 = false; @@ -550,18 +553,18 @@ bool UnkStruct_WarpUnk1::func_ov001_020b7144() { } data_ov000_020b50c0.func_ov000_0206a014(); - this->mUnk_78 = this->mUnk_8C; + this->mCurEntrance = this->mNextEntrance; if (iVar9) { - data_027e09a4->func_ov001_020b6924(&this->mUnk_8C, this->mSpawnTransitionType == 2); + data_027e09a4->func_ov001_020b6924(&this->mNextEntrance, this->mSpawnTransitionType == 2); } else { - data_027e0cd8->func_ov001_020b7c08(&this->mUnk_8C, &this->mUnk_A0); + data_027e0cd8->func_ov001_020b7c08(&this->mNextEntrance, &this->mUnk_A0); } uVar8 = 0; bVar2 = false; - data_027e0cd8->mUnk_0C->func_ov001_020b8a5c(this->mUnk_8C.mSpawnIndex, 0); + data_027e0cd8->mUnk_0C->func_ov001_020b8a5c(this->mNextEntrance.spawnIndex, 0); this->Detach(); this->mUnk_0C = false; @@ -573,7 +576,7 @@ bool UnkStruct_WarpUnk1::func_ov001_020b7144() { LinkListImpl::Detach((LinkListNode *) ((u8 *) &this->mUnk_50 + 4)); this->mUnk_50.mUnk_0C = false; - if (this->mUnk_8C.mIsCS == true) { + if (this->mNextEntrance.isCS == true) { this->Detach(); this->mUnk_0C = false; } else { diff --git a/src/001_SceneInit/UnkStruct_027e0cd8_001.cpp b/src/001_SceneInit/UnkStruct_027e0cd8_001.cpp index db5bb3d9..581d1c47 100644 --- a/src/001_SceneInit/UnkStruct_027e0cd8_001.cpp +++ b/src/001_SceneInit/UnkStruct_027e0cd8_001.cpp @@ -67,12 +67,12 @@ UnkStruct_027e0cd8::~UnkStruct_027e0cd8() { DELETE(this->mUnk_08); } -void UnkStruct_027e0cd8::func_ov001_020b7830(const UnkStruct_SceneChange1 *param1) { +void UnkStruct_027e0cd8::func_ov001_020b7830(const EntranceInfo *param1) { CourseListEntry *pEntry; UnkStruct_func_ov000_020702a8 *pUnk1; - pEntry = data_027e09a0->GetCourseEntry(param1->mSceneIndex); - pUnk1 = data_027e09a0->func_ov000_020702a8(param1->mSceneIndex); + pEntry = data_027e09a0->GetCourseEntry(param1->sceneIndex); + pUnk1 = data_027e09a0->func_ov000_020702a8(param1->sceneIndex); wchar_t sp80[16]; sp80[0] = L'\0'; @@ -83,7 +83,7 @@ void UnkStruct_027e0cd8::func_ov001_020b7830(const UnkStruct_SceneChange1 *param sp70.func_020154ec("MCS"); bool isCS = true; - if (param1->mIsCS != true) { + if (param1->isCS != true) { isCS = false; } @@ -119,7 +119,7 @@ void UnkStruct_027e0cd8::func_ov001_020b7830(const UnkStruct_SceneChange1 *param } } - this->func_ov001_020b8120(param1->mSceneIndex); + this->func_ov001_020b8120(param1->sceneIndex); if (pEntry->unk_21 != -1) { wchar_t sp30[16]; @@ -135,12 +135,12 @@ void UnkStruct_027e0cd8::func_ov001_020b7830(const UnkStruct_SceneChange1 *param this->func_ov001_020b7b38(pEntry, pUnk1); } - UnkStruct_SceneChange1 sceneChange(param1); - if (sceneChange.mRoomIndex != 0xFF) { - func_ov000_02081520(&sp4, this->mUnk_04, sceneChange.mRoomIndex); + EntranceInfo sceneChange(param1); + if (sceneChange.roomIndex != 0xFF) { + func_ov000_02081520(&sp4, this->mUnk_04, sceneChange.roomIndex); func_ov000_020814ec(this->mUnk_04, &sp4); } else { - sceneChange.mRoomIndex = this->mUnk_04->mUnk_40[this->mUnk_04->mUnk_10][this->mUnk_04->mUnk_11]; + sceneChange.roomIndex = this->mUnk_04->mUnk_40[this->mUnk_04->mUnk_10][this->mUnk_04->mUnk_11]; } this->func_ov001_020b7d64(&sceneChange); @@ -203,22 +203,22 @@ void UnkStruct_027e0cd8::func_ov001_020b7b38(const CourseListEntry *pEntry, cons } } -void UnkStruct_027e0cd8::func_ov001_020b7c08(const UnkStruct_SceneChange1 *param1, const UnkStruct_WarpUnk1_A0 *param2) { - UnkStruct_SceneChange1 sceneChange(param1); +void UnkStruct_027e0cd8::func_ov001_020b7c08(const EntranceInfo *param1, const UnkStruct_WarpUnk1_A0 *param2) { + EntranceInfo sceneChange(param1); Vec2s sp4; - if (this->mUnk_30 == param1->mSceneIndex && DSProt_DetectNotFlashcart(NULL) != 0) { + if (this->mUnk_30 == param1->sceneIndex && DSProt_DetectNotFlashcart(NULL) != 0) { data_ov084_02164690 = &sceneChange; } if (!this->func_ov000_02082124() && - (param1->mSceneIndex < SceneIndex_tekiya00 || param1->mSceneIndex > SceneIndex_tekiya09)) { + (param1->sceneIndex < SceneIndex_tekiya00 || param1->sceneIndex > SceneIndex_tekiya09)) { #if IS_JP VecFx32_Copy(¶m2->mUnk_04, &this->mUnk_24); #endif - if (param1->mSceneIndex == SceneIndex_f_water) { - switch (param1->mRoomIndex) { + if (param1->sceneIndex == SceneIndex_f_water) { + switch (param1->roomIndex) { case 1: this->mUnk_24.x = 0x16000; this->mUnk_24.z = 0xFFFF6000; @@ -240,7 +240,7 @@ void UnkStruct_027e0cd8::func_ov001_020b7c08(const UnkStruct_SceneChange1 *param } } else { #if IS_JP - if (param1->mSceneIndex == SceneIndex_f_snow2 && param1->mRoomIndex == 2) { + if (param1->sceneIndex == SceneIndex_f_snow2 && param1->roomIndex == 2) { this->mUnk_24.x = 0xFFFFF000; this->mUnk_24.z = 0xFFFF0000; } @@ -253,15 +253,15 @@ void UnkStruct_027e0cd8::func_ov001_020b7c08(const UnkStruct_SceneChange1 *param this->func_ov001_020b803c(); this->func_ov001_020b7e50(); - if (sceneChange.mRoomIndex != ROOM_INDEX_NONE) { - if (this->mUnk_30 == sceneChange.mSceneIndex && DSProt_DetectNotEmulator(func_ov084_0216122c) == 0) { + if (sceneChange.roomIndex != ROOM_INDEX_NONE) { + if (this->mUnk_30 == sceneChange.sceneIndex && DSProt_DetectNotEmulator(func_ov084_0216122c) == 0) { func_ov084_021612ac(); } - func_ov000_02081520(&sp4, this->mUnk_04, sceneChange.mRoomIndex); + func_ov000_02081520(&sp4, this->mUnk_04, sceneChange.roomIndex); func_ov000_020814ec(this->mUnk_04, &sp4); } else { - sceneChange.mRoomIndex = this->mUnk_04->mUnk_40[this->mUnk_04->mUnk_10][this->mUnk_04->mUnk_11]; + sceneChange.roomIndex = this->mUnk_04->mUnk_40[this->mUnk_04->mUnk_10][this->mUnk_04->mUnk_11]; } this->func_ov001_020b7d64(&sceneChange); @@ -276,7 +276,7 @@ void UnkStruct_027e0cd8::func_ov001_020b7c08(const UnkStruct_SceneChange1 *param } } -void UnkStruct_027e0cd8::func_ov001_020b7d64(const UnkStruct_SceneChange1 *param1) { +void UnkStruct_027e0cd8::func_ov001_020b7d64(const EntranceInfo *param1) { UnkStruct_027e0cd8_04_0C *iVar7; u32 temp_r1; u16 uVar5; @@ -286,7 +286,7 @@ void UnkStruct_027e0cd8::func_ov001_020b7d64(const UnkStruct_SceneChange1 *param iVar7 = this->mUnk_04->mUnk_0C; - switch (data_027e09a0->GetCourseEntry(param1->mSceneIndex)->unk_10) { + switch (data_027e09a0->GetCourseEntry(param1->sceneIndex)->unk_10) { case 0: case 1: case 3: @@ -331,9 +331,9 @@ void UnkStruct_027e0cd8::func_ov001_020b7e50() { DELETE(this->mUnk_0C); } -void UnkStruct_027e0cd8::func_ov001_020b7e68(const UnkStruct_SceneChange1 *param1, bool param2) { +void UnkStruct_027e0cd8::func_ov001_020b7e68(const EntranceInfo *param1, bool param2) { if (this->mUnk_10 != NULL) { - this->mUnk_10->func_ov024_020d2520((UnkStruct_SceneChange1 *) param1); + this->mUnk_10->func_ov024_020d2520((EntranceInfo *) param1); } data_ov000_020b504c.func_ov001_020be92c(this->mUnk_04->mUnk_0C); @@ -352,7 +352,7 @@ void UnkStruct_027e0cd8::func_ov001_020b7e68(const UnkStruct_SceneChange1 *param data_ov024_020d8660->func_ov024_020c4ba0(); } - unk32 unk_10 = data_027e09a0->GetCourseEntry(param1->mSceneIndex)->unk_10; + unk32 unk_10 = data_027e09a0->GetCourseEntry(param1->sceneIndex)->unk_10; if (data_027e09a4->mUnk_60 == 1) { for (int i = 0; i < 4; i++) { @@ -362,21 +362,21 @@ void UnkStruct_027e0cd8::func_ov001_020b7e68(const UnkStruct_SceneChange1 *param } } else if (unk_10 == 2 || unk_10 == 4) { UnkStruct_027e0ce0 *ptr = data_027e0ce0; - const UnkStruct_ov001_020c40f4 *arg = this->mUnk_0C->func_ov001_020b8a5c(param1->mSpawnIndex, 0x00); + const UnkStruct_ov001_020c40f4 *arg = this->mUnk_0C->func_ov001_020b8a5c(param1->spawnIndex, 0x00); ptr->func_ov001_020bc6e8(arg); } else { UnkStruct_027e0cd8_0C_Base *temp_pUnkC = this->mUnk_0C; u32 temp_unk118 = temp_pUnkC->mUnk_118; - u8 temp_spawn = param1->mSpawnIndex; + u8 temp_spawn = param1->spawnIndex; UnkStruct_027e0ce0 *ptr = data_027e0ce0; - const UnkStruct_ov001_020c40f4 *spC = temp_pUnkC->func_ov001_020b8a5c(param1->mSpawnIndex, 0); + const UnkStruct_ov001_020c40f4 *spC = temp_pUnkC->func_ov001_020b8a5c(param1->spawnIndex, 0); ptr->func_ov001_020bc6fc(spC, temp_pUnkC->func_ov001_020b8a5c(temp_spawn, 1), temp_pUnkC->mUnk_11C, temp_unk118); } data_027e09bc->func_ov000_020771c8(); - unk32 iVar7 = data_027e09a0->GetCourseEntry(param1->mSceneIndex)->unk_10; + unk32 iVar7 = data_027e09a0->GetCourseEntry(param1->sceneIndex)->unk_10; data_027e09c0->func_ov000_0207da40(); this->mUnk_0C->vfunc_08(); @@ -390,7 +390,7 @@ void UnkStruct_027e0cd8::func_ov001_020b7e68(const UnkStruct_SceneChange1 *param if (data_027e09a4->mUnk_60 == 0) { SaveManager_00 *ptr = gSaveManager.mUnk_000; u16 auStack_18[2]; - data_027e09a0->func_ov000_02070310(param1->mSceneIndex, param1->mRoomIndex, &auStack_18); + data_027e09a0->func_ov000_02070310(param1->sceneIndex, param1->roomIndex, &auStack_18); if (auStack_18[1] < 0x100) { SET_FLAG(ptr->unk_004.unk_0C, auStack_18[1]); diff --git a/src/001_SceneInit/UnkStruct_027e0cd8_0C_001.cpp b/src/001_SceneInit/UnkStruct_027e0cd8_0C_001.cpp index 9c71365d..6f55f427 100644 --- a/src/001_SceneInit/UnkStruct_027e0cd8_0C_001.cpp +++ b/src/001_SceneInit/UnkStruct_027e0cd8_0C_001.cpp @@ -67,7 +67,7 @@ UnkStruct_027e0cd8_0C_Base::UnkStruct_027e0cd8_0C_Base(UnkStruct_027e0cd8 *param mUnk_084_00(0), mUnk_084_01(0), mUnk_098(0), - mUnk_09C(¶m1->mUnk_00), + mUnk_09C((Vec2us *) ¶m1->mUnk_00), mUnk_0AC(false), mUnk_0AD(false), mUnk_0AE(false), @@ -89,9 +89,9 @@ UnkStruct_027e0cd8_0C_Base::UnkStruct_027e0cd8_0C_Base(UnkStruct_027e0cd8 *param mUnk_12C(false), mUnk_12D(false), mUnk_12E(false), - mUnk_130(0), - mUnk_134(0), - mUnk_138(0) { + mpROMB(NULL), + mpCAME(NULL), + mpCMPT(NULL) { Vec2s local_30; VecFx32 sp18; VecFx32 spC; @@ -123,7 +123,7 @@ UnkStruct_027e0cd8_0C_Base::UnkStruct_027e0cd8_0C_Base(UnkStruct_027e0cd8 *param this->mUnk_13C.Init(data_ov001_020c40f4, 0x40); - Vec2s_Copy(&this->mUnk_09C, &local_30); + Vec2s_Copy((Vec2s *) &this->mUnk_09C, &local_30); gpMapObjManager->func_ov001_020baea0(&local_30); data_027e095c->func_ov000_020592a0(); } @@ -132,9 +132,9 @@ UnkStruct_027e0cd8_0C_Base::~UnkStruct_027e0cd8_0C_Base() { data_027e095c->func_ov000_020592ec(); gpMapObjManager->func_ov001_020baf28(); DELETE(this->mUnk_098); - this->mUnk_130 = 0; - this->mUnk_138 = 0; - this->mUnk_134 = 0; + this->mpROMB = NULL; + this->mpCMPT = NULL; + this->mpCAME = NULL; this->mUnk_154.clear(); this->func_ov001_020b8aec(); } @@ -143,36 +143,36 @@ void UnkStruct_027e0cd8_0C_Base::vfunc_38() {} void UnkStruct_027e0cd8_0C_Base::vfunc_08() {} -void UnkStruct_027e0cd8_0C_Base::func_ov001_020b85d0(const UnkStruct_SceneChange1 *param1) { - this->mIsCS = param1->mIsCS; +void UnkStruct_027e0cd8_0C_Base::func_ov001_020b85d0(const EntranceInfo *param1) { + this->mIsCS = param1->isCS; wchar_t local_c8[2]; local_c8[0] = L'\0'; local_c8[sizeof(local_c8) / 2 - 1] = L'\0'; - snprintf((char *) local_c8, sizeof(local_c8), "M%02d", param1->mRoomIndex); + snprintf((char *) local_c8, sizeof(local_c8), "M%02d", param1->roomIndex); this->mUnk_084[0] = local_c8[0]; this->mUnk_084[1] = local_c8[1]; - CourseListEntry *pEntry = data_027e09a0->GetCourseEntry(param1->mSceneIndex); + CourseListEntry *pEntry = data_027e09a0->GetCourseEntry(param1->sceneIndex); wchar_t local_34[16]; local_34[0] = L'\0'; local_34[sizeof(local_34) / 2 - 1] = L'\0'; - snprintf((char *) local_34, sizeof(local_34), "Map/%s/map%02d.bin", pEntry->name, param1->mRoomIndex); + snprintf((char *) local_34, sizeof(local_34), "Map/%s/map%02d.bin", pEntry->name, param1->roomIndex); this->mUnk_004.~UnkSystem3(); this->mUnk_004.mUnk_00 = local_34; this->mUnk_004.func_0201541c((char *) local_c8, 0x10); this->LoadSceneModel(param1); - snprintf((char *) local_34, sizeof(local_34), "%s:zcb/%s_%02d.zcb", local_c8, pEntry->name, param1->mRoomIndex); + snprintf((char *) local_34, sizeof(local_34), "%s:zcb/%s_%02d.zcb", local_c8, pEntry->name, param1->roomIndex); UnkFileSystem3 local_44((char *) local_34); data_027e09c0->func_ov001_020be3dc(&local_44, this); wchar_t local_64[16]; local_64[0] = L'\0'; local_64[sizeof(local_64) / 2 - 1] = L'\0'; - snprintf((char *) local_64, sizeof(local_64), "%s:zmb/%s_%02d.zmb", local_c8, pEntry->name, param1->mRoomIndex); + snprintf((char *) local_64, sizeof(local_64), "%s:zmb/%s_%02d.zmb", local_c8, pEntry->name, param1->roomIndex); UnkFileSystem3 local_74((char *) local_64); local_74.vfunc_08(0x10); @@ -180,53 +180,53 @@ void UnkStruct_027e0cd8_0C_Base::func_ov001_020b85d0(const UnkStruct_SceneChange zmbFileInfos.pFile = local_74.mpFile; zmbFileInfos.size = local_74.mFileSize; zmbFileInfos.unk_08 = 0; + zmbFileInfos.unk_0A = 0; zmbFileInfos.unk_0C = 0; - zmbFileInfos.unk_10 = 0; - zmbFileInfos.unk_14 = 0; + zmbFileInfos.unk_0E = 0; ZMB_ParseFile(&zmbFileInfos, this, true); gpMapObjManager->func_ov001_020bade0(); gpActorManager->func_ov001_020bb630(); - if (param1->mIsCS == false) { - gpActorManager->func_ov001_020bb6b0((UnkStruct_SceneChange1 *) param1); + if (param1->isCS == false) { + gpActorManager->func_ov001_020bb6b0((EntranceInfo *) param1); } data_027e095c->func_ov000_020592a0(); u32 isCs = this->mIsCS; - snprintf((char *) local_34, sizeof(local_34), "%s:zob/motype_%02d_%1d.zob", local_c8, param1->mRoomIndex, isCs); + snprintf((char *) local_34, sizeof(local_34), "%s:zob/motype_%02d_%1d.zob", local_c8, param1->roomIndex, isCs); UnkFileSystem3 local_94((char *) local_34); this->mUnk_0B4 = (ZeldaObjectList *) local_94.vfunc_08(sizeof(ZOBHeader)); gpMapObjManager->func_ov001_020bae40(this->mUnk_0B4); for (int i = 0; i < ARRAY_LEN(this->mUnk_0B8); i++) { // i + 2 because 0 is the default one and 1 is the cutscene one - snprintf((char *) local_34, sizeof(local_34), "%s:zob/motype_%02d_%1d.zob", local_c8, param1->mRoomIndex, i + 2); + snprintf((char *) local_34, sizeof(local_34), "%s:zob/motype_%02d_%1d.zob", local_c8, param1->roomIndex, i + 2); UnkFileSystem3 local_a4((char *) local_34); this->mUnk_0B8[i] = (ZeldaObjectList *) local_a4.vfunc_08(sizeof(ZOBHeader)); } isCs = this->mIsCS; - snprintf((char *) local_34, sizeof(local_34), "%s:zob/npctype_%02d_%1d.zob", local_c8, param1->mRoomIndex, isCs); + snprintf((char *) local_34, sizeof(local_34), "%s:zob/npctype_%02d_%1d.zob", local_c8, param1->roomIndex, isCs); UnkFileSystem3 local_b4((char *) local_34); this->mUnk_0D8 = (ZeldaObjectList *) local_b4.vfunc_08(sizeof(ZOBHeader)); gpActorManager->func_ov001_020bb7b0(this->mUnk_0D8); for (int i = 0; i < ARRAY_LEN(this->mUnk_0DC); i++) { // i + 2 because 0 is the default one and 1 is the cutscene one - snprintf((char *) local_34, sizeof(local_34), "%s:zob/npctype_%02d_%1d.zob", local_c8, param1->mRoomIndex, i + 2); + snprintf((char *) local_34, sizeof(local_34), "%s:zob/npctype_%02d_%1d.zob", local_c8, param1->roomIndex, i + 2); UnkFileSystem3 local_c4((char *) local_34); this->mUnk_0DC[i] = (ZeldaObjectList *) local_c4.vfunc_08(sizeof(ZOBHeader)); } data_027e09b0->func_ov000_02072cc4(0x0000, 0x7FFF); ZMB_ParseFile(&zmbFileInfos, this, false); - this->vfunc_40(param1->mSpawnIndex); + this->vfunc_40(param1->spawnIndex); - if (param1->mSceneIndex == SceneIndex_t_area1) { + if (param1->sceneIndex == SceneIndex_t_area1) { if (GET_FLAG(data_027e09b8->mAdventureFlags, AdventureFlag_ObtainedSnowSource)) { this->mUnk_110 = 0x0A; } - } else if (param1->mSceneIndex == SceneIndex_t_area3) { + } else if (param1->sceneIndex == SceneIndex_t_area3) { if (GET_FLAG(data_027e09b8->mAdventureFlags, AdventureFlag_ObtainedFireSource)) { this->mUnk_110 = 0x10; this->mUnk_114 = 0x1F; @@ -236,8 +236,8 @@ void UnkStruct_027e0cd8_0C_Base::func_ov001_020b85d0(const UnkStruct_SceneChange this->func_ov001_020b8db8(); this->func_ov001_020b8e24(); - if (param1->mIsCS == true) { - this->mUnk_114 = Cutscene_GetParamEntry(param1->mCutsceneIndex)->mUnk_0E; + if (param1->isCS == true) { + this->mUnk_114 = Cutscene_GetParamEntry(param1->csIndex)->mUnk_0E; } data_027e09ac->func_ov000_020726f0(this->mUnk_114, 0x00, 0x00); @@ -263,20 +263,20 @@ void UnkStruct_027e0cd8_0C_Base::func_ov001_020b88ec() { } } -void UnkStruct_027e0cd8_0C_Base::LoadSceneModel(const UnkStruct_SceneChange1 *param1) { - const char *pName = data_027e09a0->GetCourseEntry(param1->mSceneIndex)->name; +void UnkStruct_027e0cd8_0C_Base::LoadSceneModel(const EntranceInfo *param1) { + const char *pName = data_027e09a0->GetCourseEntry(param1->sceneIndex)->name; wchar_t local_40[20]; local_40[0] = L'\0'; local_40[sizeof(local_40) / 2 - 1] = L'\0'; - snprintf((char *) local_40, sizeof(local_40), "%s:nsbmd/%s_%02d.nsbmd", this->mUnk_084, pName, param1->mRoomIndex); + snprintf((char *) local_40, sizeof(local_40), "%s:nsbmd/%s_%02d.nsbmd", this->mUnk_084, pName, param1->roomIndex); UnkFileSystem3 local_50((char *) local_40); wchar_t local_78[20]; local_78[0] = L'\0'; local_78[sizeof(local_78) / 2 - 1] = L'\0'; const char *path = "Map/%s/map%02d.nsbtx"; - snprintf((char *) local_78, sizeof(local_78), path, pName, param1->mRoomIndex); + snprintf((char *) local_78, sizeof(local_78), path, pName, param1->roomIndex); this->mUnk_070.vfunc_0C(); this->mUnk_070.mUnk_04 = (char *) local_78; @@ -289,9 +289,9 @@ void UnkStruct_027e0cd8_0C_Base::LoadSceneModel(const UnkStruct_SceneChange1 *pa this->mSceneRender.vfunc_08(pModel); } -void UnkStruct_027e0cd8_0C_Base::vfunc_1C(const UnkStruct_SceneChange1 *param1, bool param2, bool param3) { - SceneIndex sceneIndex = param1->mSceneIndex; - u8 roomIndex = param1->mRoomIndex; +void UnkStruct_027e0cd8_0C_Base::vfunc_1C(const EntranceInfo *param1, bool param2, bool param3) { + SceneIndex sceneIndex = param1->sceneIndex; + u8 roomIndex = param1->roomIndex; if (param2 != 0) { if (param3 == 0) { @@ -352,7 +352,7 @@ void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8b94(ZMBEntryARAB *pARAB) { this->mUnk_148.push_back(ptr); } -void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8c30(const UnkStruct_027e0cd8_0C_Base_154_00 ¶m1) { +void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8c30(const EntranceInfo ¶m1) { this->mUnk_154.push_back(param1); } @@ -360,16 +360,16 @@ void *UnkStruct_027e0cd8_0C_Base::func_ov001_020b8c80(unk32 param1) { return (void *) &data_ov001_020c2a40[param1 - 0x3C]; } -void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8c90(unk32 param1) { - this->mUnk_138 = param1; +void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8c90(ZMBSectionCMPT *pCMPT) { + this->mpCMPT = pCMPT; } -void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8c98(unk32 param1) { - this->mUnk_134 = param1; +void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8c98(ZMBSectionCAME *pCAME) { + this->mpCAME = pCAME; } -void UnkStruct_027e0cd8_0C_Base::vfunc_34(unk32 param1) { - this->mUnk_130 = param1; +void UnkStruct_027e0cd8_0C_Base::ZMB_ParseROMB(ZMBSectionROMB *pROMB) { + this->mpROMB = pROMB; } void UnkStruct_027e0cd8_0C_Base::vfunc_40(u8 spawnIndex) { diff --git a/src/001_SceneInit/ZeldaArrangeBinary.cpp b/src/001_SceneInit/ZeldaArrangeBinary.cpp index e69de29b..37860e5b 100644 --- a/src/001_SceneInit/ZeldaArrangeBinary.cpp +++ b/src/001_SceneInit/ZeldaArrangeBinary.cpp @@ -0,0 +1,157 @@ +#include "Unknown/UnkStruct_027e0cd8.hpp" +#include "files.h" + +BOOL ZAB_ParseFile(FileInfos *pFileInfos, u32 sceneIndex, UnkStruct_027e0cd8_04 *pDst, const CourseListEntry *pEntry, + const UnkStruct_func_ov000_020702a8 *pUnk1, BOOL param6) { + int i; + ZABHeader *pHeader = (ZABHeader *) pFileInfos->pFile; + ZABSectionHeader *pSection = (ZABSectionHeader *) ((u8 *) pHeader + sizeof(ZABHeader)); + + for (i = 0; i < pHeader->nSections; i++) { + switch (pSection->type) { + case ZABSectionType_CABM: + ZAB_ParseCAMB(pFileInfos, (ZABSectionCABM *) pSection, sceneIndex, pDst, pEntry, pUnk1, param6); + break; + case ZABSectionType_CABI: + ZAB_ParseCABI(pFileInfos, (ZABSectionCABI *) pSection, param6); + break; + default: + break; + } + + pSection = (ZABSectionHeader *) ((u8 *) pSection + pSection->nSize); + } + + return true; +} + +BOOL ZAB_ParseCAMB(FileInfos *pFileInfos, ZABSectionCABM *pCABM, u32 sceneIndex, UnkStruct_027e0cd8_04 *pDst, + const CourseListEntry *pEntry, const UnkStruct_func_ov000_020702a8 *pUnk1, BOOL param6) { + u8 params[2]; + u8 uVar4[2]; + u8 unk_04[2]; + u8 unk_02[2]; + u8 unk_00[2]; + Vec2p sp44; + s32 sp24; + s32 sp20; + u8 entry_unk_00; + u8 entry_unk_01; + u8 entry_unk_02; + s8 entry_unk_03; + u32 entry_unk_04; + CourseListRoomEntry sp3A; + CourseListRoomEntry local; + int i; + + if (!param6) { + unk_04[0] = pCABM->header.unk_08; + unk_04[1] = pCABM->header.unk_09; + *(u16 *) &pDst->mUnk_12 = *(u16 *) &unk_04; + + unk_02[0] = pCABM->header.unk_08; + unk_02[1] = pCABM->header.unk_09; + *(u16 *) &pDst->mUnk_10 = *(u16 *) &unk_02; + + unk_00[0] = pCABM->header.unk_0A; + unk_00[1] = pCABM->header.unk_0B; + *(u16 *) &pDst->mUnk_14 = *(u16 *) &unk_00; + + if (pCABM->header.unk_0C == 0) { + params[0] = 1; + } else { + pDst->mUnk_01 = true; + params[0] = pCABM->header.unk_0C; + } + + if (pCABM->header.unk_0D == 0) { + params[1] = 1; + } else { + pDst->mUnk_01 = true; + params[1] = pCABM->header.unk_0D; + } + + *(u16 *) &pDst->mUnk_16 = *(u16 *) params; + + if (pDst->mUnk_01) { + sp44.x = 0; + sp44.y = 0; + + *(u16 *) uVar4 = *(u16 *) &pDst->mUnk_16; + + if (uVar4[0] > uVar4[1]) { + sp44.y = (SUBSCREEN_HEIGHT / (uVar4[0] * 2)) * (uVar4[0] - uVar4[1]); + } else if (uVar4[0] < uVar4[1]) { + sp44.x = (SUBSCREEN_WIDTH / (uVar4[1] * 2)) * (uVar4[1] - ((u8 *) uVar4)[0]); + } + + pDst->mUnk_18 = sp44; + } + } + + pDst->func_ov000_02081874(pCABM->header.nEntries); + sp24 = 0x80000000; + sp20 = 0x7FFFFFFF; + + for (i = 0; i < pCABM->header.nEntries; i++) { + entry_unk_00 = pCABM->entries[i].unk_00; + entry_unk_01 = pCABM->entries[i].unk_01; + entry_unk_02 = pCABM->entries[i].unk_02; + entry_unk_03 = pCABM->entries[i].unk_03; + entry_unk_04 = pCABM->entries[i].unk_04; + + ZAB_GetRoomEntry(pFileInfos, entry_unk_00, pEntry, &sp3A); + + *(u16 *) &local = *(u16 *) &sp3A; + local.unk_02 = sp3A.unk_02; + + if (local.unk_02 >= 0x100 && local.unk_02 != 0xFFFF) { + local.unk_02 = 0xFFFF; + } + + if (local.mapPaintIndex >= 0x78 && local.mapPaintIndex != 0xFF) { + local.mapPaintIndex = 0xFF; + } + + if (param6 == 0) { + pDst->func_ov000_020818d0(&local, entry_unk_01, entry_unk_02, entry_unk_03, entry_unk_04); + } else { + pDst->func_ov000_0208199c(sceneIndex, &local, entry_unk_03); + } + + if (entry_unk_03 != 0) { + if (entry_unk_03 < sp20) { + sp20 = entry_unk_03; + } + + if (entry_unk_03 > sp24) { + sp24 = entry_unk_03; + } + } + } + + pDst->func_ov000_020819a4(pUnk1); + + if (sp24 != 0x80000000) { + pDst->mUnk_04 = sp24; + pDst->mUnk_08 = sp20; + } + + return true; +} + +BOOL ZAB_ParseCABI(FileInfos *pFileInfos, ZABSectionCABI *pCABI, BOOL param3) { + return true; +} + +BOOL ZAB_GetRoomEntry(FileInfos *pFileInfos, u8 param2, const CourseListEntry *pEntry, CourseListRoomEntry *param4) { + for (int i = 0; i < pEntry->numRooms; i++) { + if (param2 == pEntry->roomEntries[i].roomIndex) { + *param4 = pEntry->roomEntries[i]; + return true; + } + } + + param4->roomIndex = ROOM_INDEX_NONE; + return false; +} diff --git a/src/001_SceneInit/ZeldaMapBinary.cpp b/src/001_SceneInit/ZeldaMapBinary.cpp index e69de29b..c2967707 100644 --- a/src/001_SceneInit/ZeldaMapBinary.cpp +++ b/src/001_SceneInit/ZeldaMapBinary.cpp @@ -0,0 +1,676 @@ +#include "Actor/ActorManager.hpp" +#include "MapObject/MapObjectManager.hpp" +#include "Physics/AABB.hpp" +#include "System/OverlayManager.hpp" +#include "Unknown/UnkStruct_027e0960.hpp" +#include "Unknown/UnkStruct_027e09a4.hpp" +#include "Unknown/UnkStruct_027e09b8.hpp" +#include "Unknown/UnkStruct_027e0cd8.hpp" +#include "Unknown/UnkStruct_027e0ce0.hpp" +#include "Unknown/UnkStruct_ov000_020b5d34.hpp" +#include "files.h" + +extern AABB data_027e0c90; +extern int data_ov089_02171540; + +extern "C" fx32 func_ov000_02080068(fx32 x); +extern "C" fx32 func_ov000_02080080(fx32 x); +extern "C" void func_ov089_02165b18(void *); +extern "C" fx32 func_ov000_020775d8(fx32); + +extern "C" BOOL ZMB_020ba350(ZMBFileInfos *pFileInfos, u8 param2, UnkStruct_027e0cd8_0C_Base *pDst); +extern "C" void ZMB_020ba388(CustomVector *pVector, size_t param2); +extern "C" void ZMB_020ba408(CustomVector *pVector, size_t param2); + +BOOL ZMB_ParseFile(ZMBFileInfos *pFileInfos, UnkStruct_027e0cd8_0C_Base *pDst, bool param3) { + bool isVersion2; + ZMBHeader *pHeader; + ZMBSectionHeader *pSection; + + pHeader = (ZMBHeader *) pFileInfos->pFile; + + if (pHeader->type != FileType_ZMBv1 && pHeader->type == FileType_ZMBv2) { + isVersion2 = true; + } else { + isVersion2 = false; + } + + pSection = (ZMBSectionHeader *) ((u8 *) pHeader + sizeof(ZMBHeader)); + + for (int i = 0; i < pHeader->nSections; i++, pSection = (ZMBSectionHeader *) ((u8 *) pSection + pSection->nSize)) { + if (isVersion2 == true) { + continue; + } + + if (param3) { + switch (pSection->type) { + case ZMBSectionType_ROMB: + ZMB_ParseROMB(pFileInfos, (ZMBSectionROMB *) pSection, pDst); + break; + case ZMBSectionType_ROOM: + ZMB_ParseROOM(pFileInfos, (ZMBSectionROOM *) pSection, pDst); + break; + default: + break; + } + } else { + switch (pSection->type) { + case ZMBSectionType_LDLB: + ZMB_ParseLDLB(pFileInfos, (ZMBSectionLDLB *) pSection, pDst); + break; + case ZMBSectionType_MapObjects: + ZMB_ParseMapObjList(pFileInfos, (ZMBSectionMapObjectList *) pSection, pDst); + break; + case ZMBSectionType_ARAB: + ZMB_ParseARAB(pFileInfos, (ZMBSectionARAB *) pSection, pDst); + break; + case ZMBSectionType_RALB: + ZMB_ParseRALB(pFileInfos, (ZMBSectionRALB *) pSection, pDst); + break; + case ZMBSectionType_NPCA: + ZMB_ParseActorList(pFileInfos, (ZMBSectionActorList *) pSection, pDst); + break; + case ZMBSectionType_PLYR: + ZMB_ParsePLYR(pFileInfos, (ZMBSectionPLYR *) pSection, pDst); + break; + case ZMBSectionType_WARP: + ZMB_ParseWARP(pFileInfos, (ZMBSectionWARP *) pSection, pDst); + break; + case ZMBSectionType_CAME: + ZMB_ParseCAME(pFileInfos, (ZMBSectionCAME *) pSection, pDst); + break; + case ZMBSectionType_CMPT: + ZMB_ParseCMPT(pFileInfos, (ZMBSectionCMPT *) pSection, pDst); + break; + default: + break; + } + } + } + + return true; +} + +BOOL ZMB_ParseROMB(ZMBFileInfos *pFileInfos, ZMBSectionROMB *pSection, UnkStruct_027e0cd8_0C_Base *pDst) { + pDst->ZMB_ParseROMB(pSection); + return true; +} + +BOOL ZMB_ParseLDLB(ZMBFileInfos *pFileInfos, ZMBSectionLDLB *pSection, UnkStruct_027e0cd8_0C_Base *pDst) { + pDst->mUnk_104 = UnkFlags1_None; + bool isCs = data_027e09a4->mUnk_00.isCS; + + for (u16 i = 0; i < pSection->header.nEntries; i++) { + ZMBEntryLBLB *pEntry = &pSection->entries[i]; + + if (!(pEntry->unk_01 != 0xFF && isCs != pEntry->unk_01) && + !(pEntry->unk_04 != 0 && !data_027e0cd8->func_ov000_02081e30(pEntry->unk_04, pEntry->unk_03))) { + u8 unk_00 = pEntry->unk_00; + + if (pEntry->unk_02 != 0) { + SET_FLAG2(pDst->mUnk_104, unk_00); + } else { + UNSET_FLAG2(pDst->mUnk_104, unk_00); + } + } + } + + if (data_027e09a4->CurrentSceneIndex() - SceneIndex_t_area0 <= 1 && GET_FLAG2(pDst->mUnk_104, UnkFlags1_6)) { + if (data_027e0cd8->func_ov001_020b80fc(data_027e09a4->CurrentSceneIndex())) { + UNSET_FLAG2(pDst->mUnk_104, UnkFlags1_6); + SET_FLAG2(pDst->mUnk_104, UnkFlags1_7); + } else { + SET_FLAG2(pDst->mUnk_104, UnkFlags1_6); + UNSET_FLAG2(pDst->mUnk_104, UnkFlags1_7); + } + } + + for (int i = 0; i < UnkFlags1_Max; i++) { + if (GET_FLAG2(pDst->mUnk_104, i)) { + pDst->func_ov001_020b88c0(i); + } + } + + return true; +} + +BOOL ZMB_ParseARAB(ZMBFileInfos *pFileInfos, ZMBSectionARAB *pSection, UnkStruct_027e0cd8_0C_Base *pDst) { + size_t capacity = pDst->mUnk_148.capacity(); + + if (pSection->header.nEntries > capacity) { + ZMB_020ba408(&pDst->mUnk_148, pSection->header.nEntries); + } + + for (u16 i = 0; i < pSection->header.nEntries; i++) { + pDst->func_ov001_020b8b94(&pSection->entries[i]); + } + + return true; +} + +BOOL ZMB_ParseRALB(ZMBFileInfos *pFileInfos, ZMBSectionRALB *pSection, UnkStruct_027e0cd8_0C_Base *pDst) { + u32 nEntries = pSection->header.nEntries; + if (nEntries == 0) { + return true; + } + + data_027e0960->func_ov000_0205a1fc(nEntries); + + u8 *offset = (u8 *) pSection->entries; + + for (u8 i = 0; i < nEntries; i++) { + ZMBEntryRALB *pEntry = (ZMBEntryRALB *) offset; + u8 numPoints = pEntry->numPoints; + + data_027e0960->func_ov000_0205a288(i, pEntry); + + offset += sizeof(ZMBEntryRALB); + + for (u8 j = 0; j < numPoints; j++) { + ZMBRALBPoint *pPoint = (ZMBRALBPoint *) offset; + + pPoint->angle = UNK_FX_OPERATION_1(INT_TO_FX32(pPoint->angle)); + + if (data_027e09a4->CurrentSceneIndex() != SceneIndex_b_flame && + data_027e09a4->CurrentSceneIndex() != SceneIndex_tekiya08) { + fx32 y = pPoint->pos.y; + pPoint->pos.y = 0x7FFFEFFF; + pPoint->pos.y = y + pDst->vfunc_28(&pPoint->pos, 0, 0); + } + + data_027e0960->func_ov000_0205a2a4(i, pPoint); + offset += pPoint->unk_12; + } + } + + data_027e0960->func_ov000_0205a2c8(); + data_027e0960->func_ov000_0205a1a4(); + return true; +} + +BOOL ZMB_ParseWARP(ZMBFileInfos *pFileInfos, ZMBSectionWARP *pSection, UnkStruct_027e0cd8_0C_Base *pDst) { + if (pSection->header.nEntries + 8 > pDst->mUnk_154.cap()) { + ZMB_020ba388(&pDst->mUnk_154, pSection->header.nEntries + 8); + } + + for (u16 i = 0; i < pSection->header.nEntries; i++) { + ZMBEntryWARP *pEntry = &pSection->entries[i]; + + if (ZMB_020ba350(pFileInfos, pEntry->unk_16, pDst)) { + pDst->func_ov001_020b8c30(EntranceInfo(pEntry)); + } + } + + return true; +} + +// https://decomp.me/scratch/DThHL +BOOL ZMB_ParseMapObjList(ZMBFileInfos *pFileInfos, ZMBSectionMapObjectList *pSection, UnkStruct_027e0cd8_0C_Base *pDst) { + for (u16 i = 0; i < pSection->header.nEntries; i++) { + ZMBMapObjEntry *pEntry = &pSection->entries[i]; + + struct { + u16 angle; + Vec2b pos; + } allocData; + + allocData.pos.x = pEntry->pos.x; + allocData.pos.y = pEntry->pos.y; + + MapObject_20 local_30; + local_30.Init(); + + for (int j = 0; j < ARRAY_LEN(pEntry->params); j++) { + local_30.mParams[j] = pEntry->params[j]; + } + + for (int j = 0; j < ARRAY_LEN(pEntry->unk_10); j++) { + local_30.mUnk_08[j] = (pEntry->unk_10[j] >> 12) & 0xF; + local_30.mUnk_0A[j] = (pEntry->unk_10[j] & 0xFFF); + } + + local_30.mUnk_10 = pEntry->unk_14; + + if (pEntry->unk_19 == 0) { + local_30.mUnk_16 = false; + } else { + local_30.mUnk_16 = true; + } + + local_30.mUnk_17 = pEntry->unk_18; + + MapObjectProfile *pProfile = data_ov000_020b5d34.GetProfileFromId(pEntry->id); + + if (pProfile == NULL) { + continue; + } + + switch (pProfile->func_ov000_0209c8e4(&local_30)) { + case 0: + local_30.mUnk_14 = pFileInfos->unk_08; + pFileInfos->unk_08++; + break; + case 1: + local_30.mUnk_14 = pFileInfos->unk_0A; + pFileInfos->unk_0A++; + break; + case 2: + local_30.mUnk_14 = pFileInfos->unk_0C; + pFileInfos->unk_0C++; + break; + default: + break; + } + + if (ZMB_020ba350(pFileInfos, pEntry->unk_18, pDst)) { + allocData.angle = UNK_FX_OPERATION_1(INT_TO_FX32(pEntry->angle)); + gpMapObjManager->AllocateMapObject(pEntry->id, allocData.pos, allocData.angle, (int) &local_30, 1); + } + } + + return true; +} + +BOOL ZMB_ParseActorList(ZMBFileInfos *pFileInfos, ZMBSectionActorList *pSection, UnkStruct_027e0cd8_0C_Base *pDst) { + s32 xMod16; + s32 yMod16; + Vec2us somePos; + + somePos = pDst->mUnk_09C; + + for (u16 i = 0; i < pSection->header.nEntries; i++) { + ZMBActorEntry *pEntry = &pSection->entries[i]; + + s32 posX = (u8) (pEntry->pos.x / 16); + s32 posY = (u8) (pEntry->pos.y / 16); + + xMod16 = (u8) (pEntry->pos.x % 16); + yMod16 = (u8) (pEntry->pos.y % 16); + + if (posX < somePos.x && posY < somePos.y) { + bool iVar6 = data_027e0cd8->func_ov000_02081edc(pFileInfos->unk_0E); + + if (ZMB_020ba350(pFileInfos, pEntry->unk_1C, pDst)) { + ActorProfile *pProfile = data_ov000_020b539c_eur.GetProfileFromId(pEntry->id); + + if (pProfile == NULL) { + continue; + } + + if (!iVar6 || pProfile->mUnk_15) { + VecFx32 local_24; + local_24.x = func_ov000_02080068(posX); + local_24.x += MUL_FX32(INT_TO_FX32(xMod16), 256); + + local_24.z = func_ov000_02080080(posY); + local_24.z += MUL_FX32(INT_TO_FX32(yMod16), 256); + + local_24.y = 0x7FFFEFFF; + local_24.y = pDst->vfunc_28(&local_24, 0x01, 0x00); + + u8 bStack_40[2]; + bStack_40[0] = posX; + bStack_40[1] = posY; + unk32 value = pDst->func_ov000_02080180(bStack_40); + + if (value == 0x14 || value == 0x47) { + local_24.y = 0; + } + + local_24.y += UNK_FX_OPERATION_2(INT_TO_FX32(pEntry->unk_08)); + + ActorParams actorParams; + actorParams.mUnk_28.Reset(); + actorParams.func_ov000_020975f8(); + actorParams.mInitialPos.x = local_24.x; + actorParams.mInitialPos.y = local_24.y; + actorParams.mInitialPos.z = local_24.z; + + for (int j = 0; j < ARRAY_LEN(pEntry->params); j++) { + actorParams.mParams[j] = pEntry->params[j]; + } + + for (int j = 0; j < ARRAY_LEN(pEntry->unk_14); j++) { + actorParams.mUnk_18[j] = (pEntry->unk_14[j] >> 12) & 0x0F; + actorParams.mUnk_1A[j] = (pEntry->unk_14[j] & 0xFFF); + } + + actorParams.mUnk_0E = pEntry->unk_09; + actorParams.mUnk_20 = pEntry->unk_18; + + if (pEntry->unk_1D == 0) { + actorParams.mUnk_0F = false; + } else { + actorParams.mUnk_0F = true; + } + + actorParams.mInitialAngle = UNK_FX_OPERATION_1(INT_TO_FX32(pEntry->angle)); + actorParams.mUnk_24 = pFileInfos->unk_0E; + actorParams.mUnk_26_0 = pEntry->unk_1C; + + if (!ActorManager::func_ov001_020bb728(pEntry->id)) { + data_ov000_020b539c_eur.func_ov000_02097444(pEntry->id, &actorParams, 0x00); + } + } + } + + pFileInfos->unk_0E++; + } + } + + return true; +} + +BOOL ZMB_ParseROOM(ZMBFileInfos *pFileInfos, ZMBSectionROOM *pSection, UnkStruct_027e0cd8_0C_Base *pDst) { + for (u16 i = 0; i < pSection->header.nEntries; i++) { + ZMBEntryROOM *pEntry = &pSection->entries[i]; + + pDst->mUnk_108 = pEntry->unk_00; + + if (pEntry->unk_01 == 0xFF) { + pDst->mUnk_110 = 0xFF; + } else { + pDst->mUnk_110 = pEntry->unk_01; + } + + if (pEntry->unk_06 == 0xFF) { + pDst->mUnk_10C = data_027e09a4->mUnk_54->mUnk_30; + } else { + pDst->mUnk_10C = pEntry->unk_06; + } + + u8 var_r1_3 = pEntry->unk_07; + if (pEntry->unk_07 == 0xFF) { + switch (data_027e09a4->GetCurrentCourseEntry()->unk_10) { + case 0x00: + var_r1_3 = 0x00; + break; + case 0x02: + case 0x04: + var_r1_3 = 0x02; + break; + case 0x05: + var_r1_3 = 0x0F; + break; + default: + var_r1_3 = 0x01; + break; + } + } else { + var_r1_3 = pEntry->unk_07; + } + + pDst->mUnk_114 = var_r1_3; + + fx32 var_r7 = UNK_FX_OPERATION_2(INT_TO_FX32(pEntry->unk_02)); + + switch (pEntry->unk_03) { + case 1: + data_027e0cd8->mUnk_16 = true; + break; + case 2: + data_027e0cd8->mUnk_16 = false; + break; + default: + break; + } + + pDst->mUnk_0B0 = pEntry->unk_04; + pDst->mUnk_0B2 = pEntry->unk_04; + pDst->mUnk_0B1 = pEntry->unk_05; + pDst->mUnk_0B3 = pEntry->unk_05; + pDst->mUnk_0FC = pEntry->unk_08; + pDst->mUnk_118 = pEntry->unk_0C; + + switch (data_027e09a4->CurrentSceneIndex()) { + case SceneIndex_b_deago: + if (data_027e09b8->HasAdventureFlag(AdventureFlag_WatchedStavenPostBattleCS) && + !data_027e09b8->HasAdventureFlag(AdventureFlag_WatchedMalladusOnTOSSummitCS)) { + pDst->mUnk_118 = 0x01; + } + break; + case SceneIndex_d_main_s: + if (data_027e09b8->HasAdventureFlag(AdventureFlag_WatchedStavenPostBattleCS) && + !data_027e09b8->HasAdventureFlag(AdventureFlag_WatchedMalladusOnTOSSummitCS)) { + pDst->mUnk_118 = 0x01; + } + break; + case SceneIndex_d_main: + if (data_027e09a4->func_ov000_02070560()->roomIndex == 20 && + !data_027e09b8->HasAdventureFlag(AdventureFlag_WatchedStavenPostBattleCS)) { + pDst->mUnk_118 = 0x01; + } + break; + default: + break; + } + + if (pEntry->unk_0D == 0xFF) { + UNSET_FLAG2(pDst->mUnk_128, UnkFlags2_1); + } else { + SET_FLAG2(pDst->mUnk_128, UnkFlags2_1); + pDst->mUnk_0AF = pEntry->unk_0D_bool; + } + + if (pEntry->unk_10 & 0x001) { + SET_FLAG2(pDst->mUnk_128, UnkFlags2_0); + } else { + UNSET_FLAG2(pDst->mUnk_128, UnkFlags2_0); + } + + if (pEntry->unk_10 & 0x002) { + SET_FLAG2(pDst->mUnk_128, UnkFlags2_5); + } else { + UNSET_FLAG2(pDst->mUnk_128, UnkFlags2_5); + } + + if (pEntry->unk_10 & 0x004) { + SET_FLAG2(pDst->mUnk_128, UnkFlags2_6); + } else { + UNSET_FLAG2(pDst->mUnk_128, UnkFlags2_6); + } + + if (pEntry->unk_10 & 0x008) { + SET_FLAG2(pDst->mUnk_128, UnkFlags2_8); + var_r7 += FLOAT_TO_FX32(1.2f); + } else { + UNSET_FLAG2(pDst->mUnk_128, UnkFlags2_8); + } + + if (pEntry->unk_10 & 0x010) { + SET_FLAG2(pDst->mUnk_128, UnkFlags2_2); + } else { + UNSET_FLAG2(pDst->mUnk_128, UnkFlags2_2); + } + + if (pEntry->unk_10 & 0x020) { + SET_FLAG2(pDst->mUnk_128, UnkFlags2_3); + } else { + UNSET_FLAG2(pDst->mUnk_128, UnkFlags2_3); + } + + if (pEntry->unk_10 & 0x040) { + SET_FLAG2(pDst->mUnk_128, UnkFlags2_4); + } else { + UNSET_FLAG2(pDst->mUnk_128, UnkFlags2_4); + } + + if (pEntry->unk_10 & 0x080) { + SET_FLAG2(pDst->mUnk_128, UnkFlags2_7); + } else { + UNSET_FLAG2(pDst->mUnk_128, UnkFlags2_7); + } + + if (pEntry->unk_10 & 0x100) { + SET_FLAG2(pDst->mUnk_128, UnkFlags2_9); + } else { + UNSET_FLAG2(pDst->mUnk_128, UnkFlags2_9); + } + + if (pEntry->unk_10 & 0x200) { + SET_FLAG2(pDst->mUnk_128, UnkFlags2_10); + } else { + UNSET_FLAG2(pDst->mUnk_128, UnkFlags2_10); + } + + pDst->mUnk_11C = pEntry->unk_0E + 1; + + if (pEntry->unk_0F == 0) { + UNSET_FLAG2(pDst->mUnk_128, UnkFlags2_11); + } else { + SET_FLAG2(pDst->mUnk_128, UnkFlags2_11); + } + + data_027e0c90.max.y = pDst->mUnk_0A4 + var_r7; + } + + if (data_027e09a4->IsLand() || data_027e09a4->GetCurrentCourseEntry()->unk_10 == 0x05) { + if (GET_FLAG2(pDst->mUnk_128, UnkFlags2_4)) { + data_02049ba0.Unload(OverlaySlot_12); + } else if (GET_FLAG2(pDst->mUnk_128, UnkFlags2_2) || data_027e09a4->CurrentSceneIndex() == SceneIndex_b_flame || + data_027e09a4->CurrentSceneIndex() == SceneIndex_tekiya08 || + data_027e09a4->CurrentSceneIndex() == SceneIndex_battle03 || + data_027e09a4->CurrentSceneIndex() == SceneIndex_battle05 || + data_027e09a4->CurrentSceneIndex() == SceneIndex_battle09 || + data_027e09a4->CurrentSceneIndex() == SceneIndex_battle11) { + data_02049ba0.LoadIfNotLoaded(OverlaySlot_12, OverlayIndex_MapLava); + } else if (GET_FLAG2(pDst->mUnk_128, UnkFlags2_3)) { + data_02049ba0.LoadIfNotLoaded(OverlaySlot_12, OverlayIndex_MapWater); + } else { + data_02049ba0.Unload(OverlaySlot_12); + } + } + + data_027e0ce0->mUnk_1C->func_ov001_020bd0a4(GET_FLAG2(pDst->mUnk_128, UnkFlags2_11)); + + if (GET_FLAG2(pDst->mUnk_128, UnkFlags2_9) ? true : false) { + data_02049ba0.Unload(OverlaySlot_10); + data_02049ba0.LoadIfNotLoaded(OverlaySlot_9, OverlayIndex_ASR); + func_ov089_02165b18(&data_ov089_02171540); + } else if (gOverlayManager.IsASR()) { + data_02049ba0.LoadIfNotLoaded(OverlaySlot_9, OverlayIndex_Land2); + } + + return true; +} + +BOOL ZMB_ParsePLYR(ZMBFileInfos *pFileInfos, ZMBSectionPLYR *pSection, UnkStruct_027e0cd8_0C_Base *pDst) { + for (u16 i = 0; i < pSection->header.nEntries; i++) { + ZMBEntryPLYR *pEntry = &pSection->entries[i]; + + if (ZMB_020ba350(pFileInfos, pEntry->unk_11, pDst)) { + s32 unk_00 = ROUND_FX32(pEntry->unk_00.x); + s32 unk_08 = ROUND_FX32(pEntry->unk_00.z); + + s32 tile_x = unk_00 / 16; + s32 tile_z = unk_08 / 16; + + s32 xMod16 = unk_00 % 16; + s32 zMod16 = unk_08 % 16; + + fx32 z = func_ov000_02080080(tile_z); + z += MUL_FX32(INT_TO_FX32(zMod16), 256); + + fx32 x = func_ov000_02080068(tile_x); + x += MUL_FX32(INT_TO_FX32(xMod16), 256); + + VecFx32 local_20; + local_20.x = x; + local_20.y = 0x7FFFEFFF; + local_20.z = z; + + fx16 unk_0C = (u16) UNK_FX_OPERATION_1(INT_TO_FX32(pEntry->unk_0C)); + u8 unk_0E = pEntry->unk_0E; + u8 unk_12; + u8 unk_0F = pEntry->unk_0F; + u8 unk_10 = pEntry->unk_10; + unk_12 = pEntry->unk_12; + + if (unk_12 != 0) { + local_20.y = pEntry->unk_00.y; + } + + UnkStruct_ov001_020c40f4 unkData(0); //! TODO: solve ctor oddities + unkData.mUnk_00 = local_20; + unkData.mUnk_0C = unk_0C; + unkData.mUnk_0E = unk_0E; + unkData.mUnk_0F = unk_12; + unkData.mUnk_10 = unk_0F; + unkData.mUnk_14 = unk_10; + + UnkStruct_ov001_020c40f4 *pEnd = pDst->mUnk_13C.end(); + UnkStruct_ov001_020c40f4 *new_var = &unkData; + if (pEnd != NULL) { + pEnd->mUnk_00 = new_var->mUnk_00; + pEnd->mUnk_0C = new_var->mUnk_0C; + pEnd->mUnk_0E = new_var->mUnk_0E; + pEnd->mUnk_0F = new_var->mUnk_0F; + pEnd->mUnk_10 = new_var->mUnk_10; + pEnd->mUnk_14 = new_var->mUnk_14; + } + + pDst->mUnk_13C.grow_by(1); + } + } + + return true; +} + +BOOL ZMB_ParseCAME(ZMBFileInfos *pFileInfos, ZMBSectionCAME *pSection, UnkStruct_027e0cd8_0C_Base *pDst) { + for (u16 i = 0; i < pSection->header.nEntries; i++) { + ZMBEntryCAME *pEntry = &pSection->entries[i]; + + pEntry->unk_00 = func_ov000_020775d8(pEntry->unk_00); + + VecFx32 vec; + VecFx32_Copy(&pEntry->unk_04, &vec); + + pEntry->unk_04.y += pDst->vfunc_28(&vec, 0x01, 0x00); + pEntry->unk_10 = UNK_FX_OPERATION_1(INT_TO_FX32(pEntry->unk_10)); + pEntry->unk_12 = UNK_FX_OPERATION_1(INT_TO_FX32(pEntry->unk_12)); + } + + pDst->func_ov001_020b8c98(pSection); + return true; +} + +BOOL ZMB_ParseCMPT(ZMBFileInfos *pFileInfos, ZMBSectionCMPT *pSection, UnkStruct_027e0cd8_0C_Base *pDst) { + for (u16 i = 0; i < pSection->header.nEntries; i++) { + ZMBEntryCMPT *pEntry = &pSection->entries[i]; + + if (pEntry->unk_0D != 0) { + VecFx32 vec; + VecFx32_Copy(&pEntry->unk_00, &vec); + pEntry->unk_00.y += pDst->vfunc_28(&vec, 0x01, 0x00); + } + } + + pDst->func_ov001_020b8c90(pSection); + return true; +} + +BOOL ZMB_020ba350(ZMBFileInfos *pFileInfos, u8 param2, UnkStruct_027e0cd8_0C_Base *pDst) { + BOOL isCS = pDst->mIsCS; + + if (param2 == 0xFF) { + return true; + } + + if (param2 < 2) { + return (param2 == isCS); + } + + if (GET_FLAG2(pDst->mUnk_104, (u8) (param2 - 2))) { + return true; + } + + return false; +} + +void ZMB_020ba388(CustomVector *pVector, size_t param2) { + pVector->reallocate_copy(param2); +} + +void ZMB_020ba408(CustomVector *pVector, size_t param2) { + pVector->reallocate_copy_alt(param2); +} diff --git a/src/024_MainGame/Actor/ActorUnkOBPC.cpp b/src/024_MainGame/Actor/ActorUnkOBPC.cpp index 473dfb8a..1596f73e 100644 --- a/src/024_MainGame/Actor/ActorUnkOBPC.cpp +++ b/src/024_MainGame/Actor/ActorUnkOBPC.cpp @@ -36,7 +36,7 @@ bool ActorUnkOBPC::vfunc_18(unk32 param1) { } bool ActorUnkOBPC::func_ov024_020d6f74(void) { - if (this->mUnk_5C.mUnk_1C_0 != 0) { + if (this->mUnk_5C.mUnk_1A[1] != 0) { return this->func_ov000_02098a60(1); } diff --git a/src/024_MainGame/Game/AdventureModeManager_024.cpp b/src/024_MainGame/Game/AdventureModeManager_024.cpp index 79006810..428353c9 100644 --- a/src/024_MainGame/Game/AdventureModeManager_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_024.cpp @@ -458,7 +458,7 @@ bool AdventureModeManager::func_ov024_020c5dac() { bool AdventureModeManager::func_ov024_020c5ecc() { if (data_ov026_02138d10->func_ov026_020e13f4() != 0 && data_027e09b8->func_01ffd420() == 0 && - func_ov024_020d5304(data_027e09a4->mUnk_00.mSceneIndex) && + func_ov024_020d5304(data_027e09a4->mUnk_00.sceneIndex) && (data_ov024_020d8660 == NULL || data_ov024_020d8660->mUnk_00 == NULL) && this->func_ov024_020c6a20() != 0 && data_ov026_0213f590.func_ov026_020f7cc0() == 0) { return true; @@ -515,7 +515,7 @@ bool AdventureModeManager::func_ov024_020c60f4() { } bool AdventureModeManager::func_ov024_020c623c() { - u32 scene = data_027e09a4->mUnk_00.mSceneIndex; + u32 scene = data_027e09a4->mUnk_00.sceneIndex; if ((gOverlayManager.IsMapA6() && ActorUnkTUTO::func_ov037_02120a64() != 0) || (data_027e09a4->GetCurrentCourseEntry()->unk_10 == 6 && scene == SceneIndex_f_trnnpc) || @@ -911,7 +911,7 @@ void AdventureModeManager::func_ov024_020c6d2c(unk32 param1) { bool AdventureModeManager::func_ov024_020c6d64() { if (data_027e09a4 != NULL && data_ov000_020b64f8 != NULL) { - if (data_027e09a4->IsCutscene() && Cutscene_GetParamEntry(data_027e09a4->mUnk_00.mCutsceneIndex)->mUnk_18 == 1) { + if (data_027e09a4->IsCutscene() && Cutscene_GetParamEntry(data_027e09a4->mUnk_00.csIndex)->mUnk_18 == 1) { return true; } } @@ -928,8 +928,8 @@ void AdventureModeManager::func_ov024_020c6db8(unk32 param1) { } bool AdventureModeManager::func_ov024_020c6dec() { - if (this->mUnk_1CC.sceneIndex == data_027e09a4->mUnk_00.mSceneIndex) { - if (this->mUnk_1CC.sceneIndex == data_027e09a4->mUnk_00.mSceneIndex) { + if (this->mUnk_1CC.sceneIndex == data_027e09a4->mUnk_00.sceneIndex) { + if (this->mUnk_1CC.sceneIndex == data_027e09a4->mUnk_00.sceneIndex) { if (this->mUnk_1CC.unk_04 == data_027e0cd8->func_ov000_02081d5c()) { return true; } diff --git a/src/024_MainGame/MiscAdvManager.cpp b/src/024_MainGame/MiscAdvManager.cpp index 7327bbf4..48ef5eaa 100644 --- a/src/024_MainGame/MiscAdvManager.cpp +++ b/src/024_MainGame/MiscAdvManager.cpp @@ -109,8 +109,8 @@ u16 *MiscAdvManager::GetStampDate(unk32 index) { return (u16 *) &this->mStampDates[index]; } -Vec2b *MiscAdvManager::GetStampPos(unk32 index) { - return (Vec2b *) &this->mStampPositions[index]; +Vec2bCpp *MiscAdvManager::GetStampPos(unk32 index) { + return (Vec2bCpp *) &this->mStampPositions[index]; } void MiscAdvManager::func_ov024_020d64b4(s8 param1, unk32 param2, const u16 *param3) { diff --git a/src/024_MainGame/Train/PassengerManager.cpp b/src/024_MainGame/Train/PassengerManager.cpp index 76a40012..80db9650 100644 --- a/src/024_MainGame/Train/PassengerManager.cpp +++ b/src/024_MainGame/Train/PassengerManager.cpp @@ -267,7 +267,7 @@ bool PassengerManager::CanCompleteTrip() { bool result = false; if (this->mPassenger.mActorId != ActorId_None && this->mPassenger.mUnk_04 == 0 && - data_027e09a4->mUnk_00.mSceneIndex != SceneIndex_t_minigame) { + data_027e09a4->CurrentSceneIndex() != SceneIndex_t_minigame) { result = true; } diff --git a/src/024_MainGame/Train/UnkDataStruct4.cpp b/src/024_MainGame/Train/UnkDataStruct4.cpp index 76f35e0e..320db72e 100644 --- a/src/024_MainGame/Train/UnkDataStruct4.cpp +++ b/src/024_MainGame/Train/UnkDataStruct4.cpp @@ -28,8 +28,8 @@ void UnkDataStruct4::func_ov024_020d2518() {} void UnkDataStruct4::func_ov024_020d251c() {} -void UnkDataStruct4::func_ov024_020d2520(UnkStruct_SceneChange1 *param1) { - this->func_ov024_020d2538(param1->mSceneIndex, param1->mRoomIndex, NULL); +void UnkDataStruct4::func_ov024_020d2520(EntranceInfo *param1) { + this->func_ov024_020d2538(param1->sceneIndex, param1->roomIndex, NULL); } void UnkDataStruct4::func_ov024_020d2538(u32 sceneIndex, u8 roomIndex, UnkDataStruct4_14_2 *param3) { diff --git a/src/024_MainGame/ZeldaTrainBinary.cpp b/src/024_MainGame/ZeldaTrainBinary.cpp index 86b5aca3..afb91739 100644 --- a/src/024_MainGame/ZeldaTrainBinary.cpp +++ b/src/024_MainGame/ZeldaTrainBinary.cpp @@ -8,7 +8,7 @@ BOOL ZTB_ParseFile(FileInfos *pFileInfos, UnkDataStruct4 *pDst) { ZTBHeader *pHeader = (ZTBHeader *) pFileInfos->pFile; ZTBSectionHeader *pSection = (ZTBSectionHeader *) ((u8 *) pHeader + sizeof(ZTBHeader)); - for (int i = 0; i < pHeader->nEntries; i++) { + for (int i = 0; i < pHeader->nSections; i++) { switch (pSection->type) { case ZTBSectionType_GRDB: ZTB_ParseGRDB(pFileInfos, pDst, (ZTBSectionGRDB *) pSection); diff --git a/src/025_Title/GameModeTitleScreen.cpp b/src/025_Title/GameModeTitleScreen.cpp index c0feda02..65a43932 100644 --- a/src/025_Title/GameModeTitleScreen.cpp +++ b/src/025_Title/GameModeTitleScreen.cpp @@ -25,7 +25,7 @@ GameModeTitleScreen::~GameModeTitleScreen() { void GameModeTitleScreen::vfunc_08() { this->GameModeBase::vfunc_08(); - UnkStruct_SceneChange1 stack(Cutscene_GetParamEntry(CutsceneIndex_TitleScreen), true); + EntranceInfo stack(Cutscene_GetParamEntry(CutsceneIndex_TitleScreen), true); data_027e09a4->func_ov000_020707a8(&stack); } diff --git a/src/031_Land/Actor/ActorRupee.cpp b/src/031_Land/Actor/ActorRupee.cpp index da025ec3..55f44f74 100644 --- a/src/031_Land/Actor/ActorRupee.cpp +++ b/src/031_Land/Actor/ActorRupee.cpp @@ -182,7 +182,7 @@ void ActorRupee::func_ov031_020e9068() { } } - if (this->mUnk_5C.mUnk_24 >= 0 && this->mUnk_5C.mUnk_1A != 0) { + if (this->mUnk_5C.mUnk_24 >= 0 && this->mUnk_5C.mUnk_1A[0] != 0) { this->func_ov000_02098a88(0, 1); } diff --git a/src/031_Land/Actor/ActorUnkNORE.cpp b/src/031_Land/Actor/ActorUnkNORE.cpp index 78cb5f67..0490ef53 100644 --- a/src/031_Land/Actor/ActorUnkNORE.cpp +++ b/src/031_Land/Actor/ActorUnkNORE.cpp @@ -3,7 +3,7 @@ #include "Unknown/UnkStruct_027e0cd8.hpp" -extern "C" void func_01ffedac(Vec2b *, VecFx32 *); +extern "C" void func_01ffedac(Vec2bCpp *, VecFx32 *); DECL_PROFILE(ActorProfileUnkNORE); @@ -17,7 +17,7 @@ ActorProfileUnkNORE::ActorProfileUnkNORE() : ActorUnkNORE::ActorUnkNORE() {} bool ActorUnkNORE::vfunc_18(unk32 param1) { - Vec2b local_vec; + Vec2bCpp local_vec; UnkStruct_027e0cd8_0C_Base *unk_obj = data_027e0cd8->mUnk_0C; diff --git a/src/031_Land/Actor/ActorUnkSWON.cpp b/src/031_Land/Actor/ActorUnkSWON.cpp index ae167b06..18070cef 100644 --- a/src/031_Land/Actor/ActorUnkSWON.cpp +++ b/src/031_Land/Actor/ActorUnkSWON.cpp @@ -20,7 +20,7 @@ bool ActorUnkSWON::vfunc_18(unk32 param1) { } this->func_ov000_020984d0(); this->func_ov000_020984f0(); - if (this->mUnk_5C.mUnk_1C_0) { + if (this->mUnk_5C.mUnk_1A[1]) { this->func_ov000_02098a88(0x1, 0x1); } break; diff --git a/src/031_Land/MapObject/MapObjectChestBase.cpp b/src/031_Land/MapObject/MapObjectChestBase.cpp index bc9989e5..a603a13b 100644 --- a/src/031_Land/MapObject/MapObjectChestBase.cpp +++ b/src/031_Land/MapObject/MapObjectChestBase.cpp @@ -73,10 +73,10 @@ bool MapObjectChestBase::vfunc_00() { UnkStruct_027e0cd8_0C_Base *pUVar2 = data_027e0cd8->mUnk_0C; - if (this->mUnk_20.mUnk_00[3] == 1) { + if (this->mUnk_20.mParams[3] == 1) { this->mPos.x += 0x7FC; - Vec2b sp48(this->mUnk_3A.x, this->mUnk_3A.y); + Vec2bCpp sp48(this->mUnk_3A.x, this->mUnk_3A.y); pUVar2->func_ov000_020801b0(&sp48, 7, 1); sp48.x++; @@ -84,7 +84,7 @@ bool MapObjectChestBase::vfunc_00() { } this->vfunc_38(this->vfunc_3C(), 1); - this->mItemId = this->mUnk_20.mUnk_00[0]; + this->mItemId = this->mUnk_20.mParams[0]; return true; } @@ -98,11 +98,11 @@ void MapObjectChestBase::vfunc_04() { VecFx32 local_44; VecFx32 sp18; VecFx32 spC; - Vec2b local_5e; - Vec2b local_62; - Vec2b local_64; - Vec2b local_66; - Vec2b local_68; + Vec2bCpp local_5e; + Vec2bCpp local_62; + Vec2bCpp local_64; + Vec2bCpp local_66; + Vec2bCpp local_68; Vec2us local_6c; pUVar5 = data_027e0cd8->mUnk_0C; @@ -129,22 +129,22 @@ void MapObjectChestBase::vfunc_04() { local_68.x = this->mUnk_3A.x; local_68.y = this->mUnk_3A.y; - iVar2 = pUVar5->func_01ffedf4((Vec2b *) &local_68); + iVar2 = pUVar5->func_01ffedf4((Vec2bCpp *) &local_68); - if (this->mUnk_20.mUnk_00[3] == 1) { - Vec2b temp_r0(this->mUnk_3A.x, this->mUnk_3A.y); + if (this->mUnk_20.mParams[3] == 1) { + Vec2bCpp temp_r0(this->mUnk_3A.x, this->mUnk_3A.y); temp_r0.x--; - if (pUVar5->func_01ffedf4((Vec2b *) &temp_r0) > iVar2 || gpMapObjManager->func_01fff498(local_5e) != NULL) { + if (pUVar5->func_01ffedf4((Vec2bCpp *) &temp_r0) > iVar2 || gpMapObjManager->func_01fff498(local_5e) != NULL) { sp48.x -= FLOAT_TO_FX32(0.5f); } temp_r0.x += 3; - if (pUVar5->func_01ffedf4((Vec2b *) &temp_r0) > iVar2 || gpMapObjManager->func_01fff498(local_5e) != NULL) { + if (pUVar5->func_01ffedf4((Vec2bCpp *) &temp_r0) > iVar2 || gpMapObjManager->func_01fff498(local_5e) != NULL) { sp3C.x += FLOAT_TO_FX32(0.5f); } } else { - Vec2b temp_r0(this->mUnk_3A.x, this->mUnk_3A.y); + Vec2bCpp temp_r0(this->mUnk_3A.x, this->mUnk_3A.y); temp_r0.x--; temp_r0.y += 2; // local_5e.y = this->mUnk_3A.y + (this->mUnk_3A.x - 1); @@ -168,7 +168,7 @@ void MapObjectChestBase::vfunc_04() { sp48.z -= FLOAT_TO_FX32(0.5f); } - if (data_027e09a4->mUnk_00.mSceneIndex == SceneIndex_d_flame) { + if (data_027e09a4->CurrentSceneIndex() == SceneIndex_d_flame) { local_64.x = this->mUnk_3A.x; local_66.y = this->mUnk_3A.y; diff --git a/src/031_Land/MapObject/MapObjectDoorBase.cpp b/src/031_Land/MapObject/MapObjectDoorBase.cpp index 3a01e863..2de9ac79 100644 --- a/src/031_Land/MapObject/MapObjectDoorBase.cpp +++ b/src/031_Land/MapObject/MapObjectDoorBase.cpp @@ -82,12 +82,12 @@ MapObjectDoorBase::MapObjectDoorBase() : void MapObjectDoorBase::func_ov031_020fbf10(bool param1, bool param2) { if (this->IsOrientedVertically()) { this->mPos.z += FLOAT_TO_FX32(0.5f); - Vec2b local_16(1, 2); + Vec2bCpp local_16(1, 2); this->func_ov000_0209d2f0(5, 1, &local_16); } else { this->mPos.x += FLOAT_TO_FX32(0.5f); - Vec2b local_18(2, 1); + Vec2bCpp local_18(2, 1); this->func_ov000_0209d2f0(5, 1, &local_18); } diff --git a/src/031_Land/MapObject/MapObjectDoorClick.cpp b/src/031_Land/MapObject/MapObjectDoorClick.cpp index 5f8e60fe..06110066 100644 --- a/src/031_Land/MapObject/MapObjectDoorClick.cpp +++ b/src/031_Land/MapObject/MapObjectDoorClick.cpp @@ -60,7 +60,7 @@ bool MapObjectDoorClick::vfunc_00(void) { this->mUnk_8D = false; this->mUnk_88 = false; this->mUnk_78 = 10; - this->mUnk_A4 = this->mUnk_20.mUnk_00[1]; + this->mUnk_A4 = this->mUnk_20.mParams[1]; this->vfunc2_10(); local_1c.x = -0x1000; @@ -70,9 +70,9 @@ bool MapObjectDoorClick::vfunc_00(void) { local_28.x = 0x1000; local_28.z = 0x266; - unk32 value = ((this->mUnk_20.mUnk_00[2] & 0xFF) << 8) | 0x21C07006; + unk32 value = ((this->mUnk_20.mParams[2] & 0xFF) << 8) | 0x21C07006; unk32 uVar2; - if (this->mUnk_20.mUnk_00[3] == 0) { + if (this->mUnk_20.mParams[3] == 0) { uVar2 = 0x1B; } else { uVar2 = 0x1C; @@ -273,7 +273,7 @@ void MapObjectDoorClick::vfunc_5C(unk32 param1, unk32 param2) { break; case 8: - if (this->mUnk_20.mUnk_00[2] & 0xFF) { + if (this->mUnk_20.mParams[2] & 0xFF) { this->MapObjectDoorBase::vfunc_5C(param1, param2); this->func_ov031_020fcf0c(1); this->mUnk_10 = this->vfunc2_14(); @@ -405,7 +405,7 @@ void MapObjectDoorClick::vfunc_78(void) { } void MapObjectDoorClick::vfunc2_10(void) { - unk32 index = this->mUnk_20.mUnk_00[0]; + unk32 index = this->mUnk_20.mParams[0]; this->mUnk_94.vfunc_08(GetModelFromProfile2(index, data_ov031_02110c1c[index])); } diff --git a/src/031_Land/MapObject/MapObjectDoorDangerSpawn.cpp b/src/031_Land/MapObject/MapObjectDoorDangerSpawn.cpp index 2f85e85e..dbf1bfd5 100644 --- a/src/031_Land/MapObject/MapObjectDoorDangerSpawn.cpp +++ b/src/031_Land/MapObject/MapObjectDoorDangerSpawn.cpp @@ -64,21 +64,21 @@ void MapObjectDoorDangerSpawn::vfunc_04(void) { UnkStruct_027e0cd8_0C_Base *ptr; VecFx32 auStack_20; - if (this->mUnk_20.mUnk_00[1] == 2) { + if (this->mUnk_20.mParams[1] == 2) { this->mUnk_6C = 0; ptr = data_027e0cd8->mUnk_0C; - ptr->func_ov000_0208053c(this->mUnk_20.mUnk_00[0]); - ptr->func_ov000_020803ec(this->mUnk_20.mUnk_00[0]); + ptr->func_ov000_0208053c(this->mUnk_20.mParams[0]); + ptr->func_ov000_020803ec(this->mUnk_20.mParams[0]); this->vfunc_5C(2, 1); return; } - if (this->mUnk_20.mUnk_00[1] == 3) { + if (this->mUnk_20.mParams[1] == 3) { this->mUnk_8C = 0; } - if (this->mUnk_20.mUnk_00[1] == 4) { + if (this->mUnk_20.mParams[1] == 4) { if (this->func_ov000_0209d29c(0) != 0) { this->mUnk_6C = 0; this->MapObjectDoorBase::vfunc_5C(2, 1); @@ -114,10 +114,10 @@ void MapObjectDoorDangerSpawn::vfunc_04(void) { } if (run) { - data_027e0cd8->mUnk_0C->func_ov000_0208053c(this->mUnk_20.mUnk_00[0]); + data_027e0cd8->mUnk_0C->func_ov000_0208053c(this->mUnk_20.mParams[0]); } #else - data_027e0cd8->mUnk_0C->func_ov000_0208053c(this->mUnk_20.mUnk_00[0]); + data_027e0cd8->mUnk_0C->func_ov000_0208053c(this->mUnk_20.mParams[0]); #endif ptr = data_027e0cd8->mUnk_0C; @@ -125,7 +125,7 @@ void MapObjectDoorDangerSpawn::vfunc_04(void) { if (this->func_ov031_020fdec8()) { this->mUnk_A2 = true; this->mUnk_8C = 0; - ptr->func_ov000_020803ec(this->mUnk_20.mUnk_00[0]); + ptr->func_ov000_020803ec(this->mUnk_20.mParams[0]); this->vfunc_5C(0, 0); UnkStruct_027e09bc_0C *uVar5 = data_027e09bc->mUnk_0C; @@ -148,7 +148,7 @@ void MapObjectDoorDangerSpawn::vfunc2_08(void) { data_027e09bc->mUnk_0C->func_ov000_02078230(0); } - data_ov000_020b51b8.func_ov000_0206c96c(data_ov031_02110c00[this->mUnk_20.mUnk_00[3]]); + data_ov000_020b51b8.func_ov000_0206c96c(data_ov031_02110c00[this->mUnk_20.mParams[3]]); } struct UnkStruct_Copy { @@ -229,7 +229,7 @@ void MapObjectDoorDangerSpawn::vfunc_08(void) { } break; case 2: - if (this->mUnk_20.mUnk_00[1] == 4 && this->func_ov000_0209d29c(0) != 0) { + if (this->mUnk_20.mParams[1] == 4 && this->func_ov000_0209d29c(0) != 0) { if (this->func_ov000_0209d29c(1) != 0) { return; } @@ -364,7 +364,7 @@ void MapObjectDoorDangerSpawn::vfunc_5C(unk32 param1, unk32 param2) { this->MapObjectDoorBase::vfunc_5C(param1, param2); var_r6 = 1; - temp_r8 = data_027e09a4->mUnk_00.mSceneIndex; + temp_r8 = data_027e09a4->CurrentSceneIndex(); if (param2 != 0 && (temp_r8 - SceneIndex_tekiya00) > 4) { var_r6 = 0; @@ -378,7 +378,7 @@ void MapObjectDoorDangerSpawn::vfunc_5C(unk32 param1, unk32 param2) { } if (var_r6 != 0) { - data_ov000_020b51b8.func_ov000_0206c9a8(data_ov031_02110c00[this->mUnk_20.mUnk_00[3]], 0, 0x7F, 0); + data_ov000_020b51b8.func_ov000_0206c9a8(data_ov031_02110c00[this->mUnk_20.mParams[3]], 0, 0x7F, 0); } break; @@ -388,7 +388,7 @@ void MapObjectDoorDangerSpawn::vfunc_5C(unk32 param1, unk32 param2) { this->func_ov000_0209d2c4(0, false); if (param2 == 0) { - (*ptr)->mUnk_0C->func_ov000_0208053c(this->mUnk_20.mUnk_00[0]); + (*ptr)->mUnk_0C->func_ov000_0208053c(this->mUnk_20.mParams[0]); } if (param2 == 0) { @@ -407,7 +407,7 @@ bool MapObjectDoorDangerSpawn::vfunc_64(void) { unk32 var_r0; bool var_r5; - switch (this->mUnk_20.mUnk_00[1]) { + switch (this->mUnk_20.mParams[1]) { case 1: case 4: if (MapObjectDoorBase::vfunc_64()) { @@ -415,15 +415,15 @@ bool MapObjectDoorDangerSpawn::vfunc_64(void) { } pUVar4 = data_027e0cd8->mUnk_0C; - if (!pUVar4->func_ov000_020802ec(this->mUnk_20.mUnk_00[0], data_027e0ce0->func_01fff148(0))) { + if (!pUVar4->func_ov000_020802ec(this->mUnk_20.mParams[0], data_027e0ce0->func_01fff148(0))) { return true; } var_r0 = 0; var_r5 = false; - if (this->mUnk_20.mUnk_00[0] != 0) { - var_r0 = gpActorManager->func_ov000_020970c8(this->mUnk_20.mUnk_00[0], NULL); + if (this->mUnk_20.mParams[0] != 0) { + var_r0 = gpActorManager->func_ov000_020970c8(this->mUnk_20.mParams[0], NULL); } else { var_r0 = gpActorManager->func_ov000_0209704c(); } @@ -443,7 +443,7 @@ bool MapObjectDoorDangerSpawn::vfunc_64(void) { bool MapObjectDoorDangerSpawn::vfunc_68(void) { UnkStruct_027e0cd8_0C_Base *pUVar2 = data_027e0cd8->mUnk_0C; - if (this->mUnk_20.mUnk_00[2] == 1) { + if (this->mUnk_20.mParams[2] == 1) { if (func_ov000_0209d29c(1)) { return true; } @@ -453,9 +453,9 @@ bool MapObjectDoorDangerSpawn::vfunc_68(void) { } } - if (this->mUnk_20.mUnk_00[0] != 0) { - if (gpActorManager->func_ov000_020970c8(this->mUnk_20.mUnk_00[0], &this->mUnk_A4) == 0) { - pUVar2->func_ov000_0208053c(this->mUnk_20.mUnk_00[0]); + if (this->mUnk_20.mParams[0] != 0) { + if (gpActorManager->func_ov000_020970c8(this->mUnk_20.mParams[0], &this->mUnk_A4) == 0) { + pUVar2->func_ov000_0208053c(this->mUnk_20.mParams[0]); return true; } @@ -468,12 +468,12 @@ bool MapObjectDoorDangerSpawn::vfunc_68(void) { bool MapObjectDoorDangerSpawn::vfunc_6C(void) { UnkStruct_027e0cd8_0C_Base *pUVar5; - switch (this->mUnk_20.mUnk_00[1]) { + switch (this->mUnk_20.mParams[1]) { case 1: case 4: pUVar5 = data_027e0cd8->mUnk_0C; - if (this->mUnk_20.mUnk_00[2] == 1) { + if (this->mUnk_20.mParams[2] == 1) { if (this->func_ov000_0209d29c(1) != 0) { return false; } @@ -483,8 +483,8 @@ bool MapObjectDoorDangerSpawn::vfunc_6C(void) { } } - if (this->mUnk_20.mUnk_00[0] != 0) { - if (gpActorManager->func_ov000_020970c8(this->mUnk_20.mUnk_00[0], NULL) == 0) { + if (this->mUnk_20.mParams[0] != 0) { + if (gpActorManager->func_ov000_020970c8(this->mUnk_20.mParams[0], NULL) == 0) { return false; } } else { @@ -493,8 +493,8 @@ bool MapObjectDoorDangerSpawn::vfunc_6C(void) { } } - if (pUVar5->func_ov000_020802ec(this->mUnk_20.mUnk_00[0], data_027e0ce0->func_01fff148(0))) { - pUVar5->func_ov000_020803ec(this->mUnk_20.mUnk_00[0]); + if (pUVar5->func_ov000_020802ec(this->mUnk_20.mParams[0], data_027e0ce0->func_01fff148(0))) { + pUVar5->func_ov000_020803ec(this->mUnk_20.mParams[0]); return true; } @@ -503,12 +503,12 @@ bool MapObjectDoorDangerSpawn::vfunc_6C(void) { break; } - if (this->mUnk_20.mUnk_00[1] == 3) { + if (this->mUnk_20.mParams[1] == 3) { if (this->func_ov000_0209d29c(0) != 0) { - u16 uVar4 = this->mUnk_20.mUnk_00[0]; + u16 uVar4 = this->mUnk_20.mParams[0]; if (uVar4 != 0 && gpActorManager->func_ov000_020970c8(uVar4, 0) != 0) { - data_027e0cd8->mUnk_0C->func_ov000_020803ec(this->mUnk_20.mUnk_00[0]); + data_027e0cd8->mUnk_0C->func_ov000_020803ec(this->mUnk_20.mParams[0]); return true; } } @@ -524,10 +524,10 @@ bool MapObjectDoorDangerSpawn::func_ov031_020fdec8(void) { VecFx32 *uVar3; int iVar1; - switch (this->mUnk_20.mUnk_00[1]) { + switch (this->mUnk_20.mParams[1]) { case 1: case 4: - if (this->mUnk_20.mUnk_00[2] == 1) { + if (this->mUnk_20.mParams[2] == 1) { if (this->func_ov000_0209d29c(1) != 0) { return false; } @@ -537,8 +537,8 @@ bool MapObjectDoorDangerSpawn::func_ov031_020fdec8(void) { } } - if (this->mUnk_20.mUnk_00[0] != 0) { - if (gpActorManager->func_ov000_020970c8(this->mUnk_20.mUnk_00[0], 0) == 0) { + if (this->mUnk_20.mParams[0] != 0) { + if (gpActorManager->func_ov000_020970c8(this->mUnk_20.mParams[0], 0) == 0) { return false; } } else { @@ -548,9 +548,9 @@ bool MapObjectDoorDangerSpawn::func_ov031_020fdec8(void) { } pUVar4 = data_027e0cd8->mUnk_0C; - uVar3 = (VecFx32 *) &pUVar4->func_ov001_020b8a5c(data_027e09a4->func_ov000_02070560()->mSpawnIndex, 0)->mUnk_00; + uVar3 = (VecFx32 *) &pUVar4->func_ov001_020b8a5c(data_027e09a4->func_ov000_02070560()->spawnIndex, 0)->mUnk_00; - if (pUVar4->func_ov000_020802ec(this->mUnk_20.mUnk_00[0], uVar3)) { + if (pUVar4->func_ov000_020802ec(this->mUnk_20.mParams[0], uVar3)) { return true; } diff --git a/src/031_Land/MapObject/MapObjectDoorSwitch.cpp b/src/031_Land/MapObject/MapObjectDoorSwitch.cpp index 45ef2f26..b7c6a0a9 100644 --- a/src/031_Land/MapObject/MapObjectDoorSwitch.cpp +++ b/src/031_Land/MapObject/MapObjectDoorSwitch.cpp @@ -41,12 +41,12 @@ bool MapObjectDoorSwitch::vfunc_00(void) { this->mUnk_094.vfunc_08(this->GetModel()); this->func_ov031_020fbf10(true, true); - if (this->mUnk_20.mUnk_00[3] == 1) { + if (this->mUnk_20.mParams[3] == 1) { this->mUnk_8F = false; } #if IS_JP - if (this->mUnk_20.mUnk_00[2] == 1) { + if (this->mUnk_20.mParams[2] == 1) { this->mUnk_141 = true; } #endif @@ -91,7 +91,7 @@ bool MapObjectDoorSwitch::vfunc_00(void) { } void MapObjectDoorSwitch::vfunc_08(void) { - if (this->mUnk_20.mUnk_00[3] == 2 && data_027e09b8->func_01ffd420()) { + if (this->mUnk_20.mParams[3] == 2 && data_027e09b8->func_01ffd420()) { this->MapObjectDoorBase::vfunc_08(); } else if (this->mUnk_16 == 5 && this->vfunc_6C()) { this->vfunc_5C(0, 0); diff --git a/src/031_Land/MapObject/MapObjectDoorTouch.cpp b/src/031_Land/MapObject/MapObjectDoorTouch.cpp index 8c9baa82..eb81a0a8 100644 --- a/src/031_Land/MapObject/MapObjectDoorTouch.cpp +++ b/src/031_Land/MapObject/MapObjectDoorTouch.cpp @@ -29,7 +29,7 @@ bool MapObjectDoorTouch::vfunc_00(void) { void MapObjectDoorTouch::vfunc2_10(void) { MapObjectProfileDoorTouch *p = GET_PROFILE(MapObjectProfileDoorTouch); - unk32 index = this->mUnk_20.mUnk_00[0]; + unk32 index = this->mUnk_20.mParams[0]; this->mUnk_94.vfunc_08(GetModelFromProfile2(index, data_ov031_02110c3c[index])); } diff --git a/src/110_PlayerGet/PlayerGet.cpp b/src/110_PlayerGet/PlayerGet.cpp index 30cfbecd..894505e4 100644 --- a/src/110_PlayerGet/PlayerGet.cpp +++ b/src/110_PlayerGet/PlayerGet.cpp @@ -888,7 +888,7 @@ void PlayerGet::vfunc_10(unk32 param1, unk32 param2) { break; case ItemId_RecruitUniform2: case ItemId_EngineerUniform: - if (data_027e09a4->mUnk_00.mSceneIndex == SceneIndex_f_first) { + if (data_027e09a4->CurrentSceneIndex() == SceneIndex_f_first) { this->mUnk_28->func_ov058_02152a24(); } break; @@ -897,7 +897,7 @@ void PlayerGet::vfunc_10(unk32 param1, unk32 param2) { } if (this->mUnk_54.mUnk_00.type_index == REF_TYPE_INDEX(ActorRefType_0, 0x1000)) { - Vec2b stack; + Vec2bCpp stack; stack.x = this->mUnk_54.mUnk_00.type_index; stack.y = this->mUnk_54.mUnk_00.unk_id; diff --git a/src/112_PlayerSceneChange/PlayerSceneChange.cpp b/src/112_PlayerSceneChange/PlayerSceneChange.cpp index aebb1e66..857d15a7 100644 --- a/src/112_PlayerSceneChange/PlayerSceneChange.cpp +++ b/src/112_PlayerSceneChange/PlayerSceneChange.cpp @@ -12,7 +12,8 @@ extern "C" void func_ov000_0205ca74(unk32); extern "C" void func_ov000_0205d65c(void *, VecFx32 *, VecFx32 *, u32); -PlayerSceneChange::PlayerSceneChange() { +PlayerSceneChange::PlayerSceneChange() : + mUnk_54(false) { this->mUnk_68 = this->mUnk_2C->mUnk_14C; this->mUnk_6C = -1; @@ -77,16 +78,16 @@ extern "C" void func_01ff930c(UnkStruct_ov000_0208f820_40 *, unk16, unk32); // https://decomp.me/scratch/c7PhN void PlayerSceneChange::vfunc_0C(UnkStruct_PlayerGet_vfunc_0C_param1 *param1) { const fx16 *pSinCosTable = gSinCosTable; - Vec2b stack4; + Vec2bCpp stack4; s16 stack3; - Vec2b stack2; + Vec2bCpp stack2; UnkStackStruct1 stack; switch (param1->mUnk_04) { case 0x3C: { int iVar19 = data_027e0cd8->mUnk_0C->func_ov000_02080658((this->mUnk_2C->mUnk_148 >> 16) & 0x3F, &this->mUnk_54); if (iVar19 != 0 && this->mUnk_28->mUnk_94 != 0 && func_ov096_02179c14()) { - this->mUnk_54.mUnk_10 = 1; + this->mUnk_54.unk_10 = 1; } switch (this->mUnk_68) { @@ -301,7 +302,7 @@ void PlayerSceneChange::vfunc_0C(UnkStruct_PlayerGet_vfunc_0C_param1 *param1) { this->mUnk_68 = data_027e09a4->func_ov000_02070554(); } - SceneIndex eScene = data_027e09a4->mUnk_00.mSceneIndex; + SceneIndex eScene = data_027e09a4->CurrentSceneIndex(); if (eScene == SceneIndex_tekiya07) { this->mUnk_68 = 0x18; } else { diff --git a/src/ITCM/ITCM_MapObjectManager.cpp b/src/ITCM/ITCM_MapObjectManager.cpp index 5a000660..503ed415 100644 --- a/src/ITCM/ITCM_MapObjectManager.cpp +++ b/src/ITCM/ITCM_MapObjectManager.cpp @@ -9,7 +9,7 @@ struct UnkStruct { extern "C" void func_01ffecdc(int, void *); -MapObject *MapObjectManager::func_01fff498(Vec2b param1) { +MapObject *MapObjectManager::func_01fff498(Vec2bCpp param1) { if (this->mUnk_0C[param1.y][param1.x] < 0) { return NULL; } diff --git a/tools/configure.py b/tools/configure.py index 30f702c2..f51a5315 100755 --- a/tools/configure.py +++ b/tools/configure.py @@ -173,6 +173,7 @@ config.libs = [ Object("000_Second/Actor/ActorUnkSWTM.cpp"), Object("000_Second/Actor/ActorEventIcon.cpp"), Object("000_Second/Actor/ActorUnkEFIK.cpp"), + Object("000_Second/MapObject/MapObjectManager_000.cpp"), Object("000_Second/MapObject/MapObjectProfile.cpp"), Object("000_Second/MapObject/MapObjectProfile_Derived2_20.cpp"), Object("000_Second/MapObject/MapObject.cpp"),