diff --git a/.gitignore b/.gitignore index 3411e74c..13c0d1af 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ build/ .vscode/ +venv/ ph_*/ *.nds *bios.bin diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 07354aa5..037efe47 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -82,8 +82,8 @@ func_ov000_02078b0c kind:function(thumb,size=0x34) addr:0x2078b0c _ZN18UnkStruct_027e0d3819func_ov000_02078b40Ev kind:function(arm,size=0x24) addr:0x2078b40 _ZN18UnkStruct_027e0d3819func_ov000_02078b64Ev kind:function(arm,size=0x24) addr:0x2078b64 _ZN18UnkStruct_027e0d3819func_ov000_02078b88Ev kind:function(arm,size=0x3c) addr:0x2078b88 -func_ov000_02078bc4 kind:function(thumb,size=0x2c) addr:0x2078bc4 -func_ov000_02078bf0 kind:function(thumb,size=0x11c) addr:0x2078bf0 +_Z19func_ov000_02078bc4i kind:function(thumb,size=0x2c) addr:0x2078bc4 +_Z19func_ov000_02078bf0PiS_ kind:function(thumb,size=0x11c) addr:0x2078bf0 func_ov000_02078d0c kind:function(thumb,size=0x24) addr:0x2078d0c func_ov000_02078d30 kind:function(thumb,size=0x24) addr:0x2078d30 func_ov000_02078d54 kind:function(thumb,size=0x3c) addr:0x2078d54 @@ -95,22 +95,22 @@ func_ov000_02078f80 kind:function(arm,size=0x2c) addr:0x2078f80 func_ov000_02078fac kind:function(arm,size=0x14) addr:0x2078fac func_ov000_02078fc0 kind:function(arm,size=0x14) addr:0x2078fc0 func_ov000_02078fd4 kind:function(arm,size=0x14) addr:0x2078fd4 -func_ov000_02078fe8 kind:function(arm,size=0x14) addr:0x2078fe8 +_Z19func_ov000_02078fe8Pi kind:function(arm,size=0x14) addr:0x2078fe8 func_ov000_02078ffc kind:function(arm,size=0xc) addr:0x2078ffc func_ov000_02079008 kind:function(arm,size=0x1c) addr:0x2079008 func_ov000_02079024 kind:function(arm,size=0x128) addr:0x2079024 func_ov000_0207914c kind:function(arm,size=0x90) addr:0x207914c func_ov000_020791dc kind:function(arm,size=0x30) addr:0x20791dc -func_ov000_0207920c kind:function(arm,size=0x94) addr:0x207920c -func_ov000_020792a0 kind:function(arm,size=0x118) addr:0x20792a0 +_Z19func_ov000_0207920cPiP5Vec3pS_S_ kind:function(arm,size=0x94) addr:0x207920c +_Z19func_ov000_020792a0Piiii kind:function(arm,size=0x118) addr:0x20792a0 func_ov000_020793b8 kind:function(arm,size=0x18) addr:0x20793b8 func_ov000_020793d0 kind:function(arm,size=0xa0) addr:0x20793d0 func_ov000_02079470 kind:function(arm,size=0x210) addr:0x2079470 func_ov000_02079680 kind:function(arm,size=0xfc) addr:0x2079680 func_ov000_0207977c kind:function(arm,size=0xfc) addr:0x207977c func_ov000_02079878 kind:function(arm,size=0x20) addr:0x2079878 -func_ov000_02079898 kind:function(arm,size=0x24) addr:0x2079898 -func_ov000_020798bc kind:function(arm,size=0x2c) addr:0x20798bc +_Z19func_ov000_02079898Piii kind:function(arm,size=0x24) addr:0x2079898 +_Z19func_ov000_020798bcPii kind:function(arm,size=0x2c) addr:0x20798bc func_ov000_020798e8 kind:function(arm,size=0x40) addr:0x20798e8 func_ov000_02079928 kind:function(arm,size=0x124) addr:0x2079928 func_ov000_02079a4c kind:function(arm,size=0x44) addr:0x2079a4c @@ -283,7 +283,7 @@ _ZN6Course14GetMCSFilePathEiii kind:function(arm,size=0xf0) addr:0x207cc84 _ZN6Course14GetMRCFilePathEiii kind:function(arm,size=0xac) addr:0x207cd74 _ZN6Course18func_ov00_0207ce20EiiPci kind:function(arm,size=0x2c) addr:0x207ce20 _ZN6Course18func_ov00_0207ce4cEiiiPci kind:function(arm,size=0x5b8) addr:0x207ce4c -_ZN6Course18func_ov00_0207d404Eiii kind:function(arm,size=0x78) addr:0x207d404 +_ZN6Course18func_ov00_0207d404Eiiii kind:function(arm,size=0x78) addr:0x207d404 _ZN6Course22IsCurrentMapInMainGridEv kind:function(arm,size=0x14) addr:0x207d47c _ZN6Course12IsInMainGridEii kind:function(arm,size=0x54) addr:0x207d490 _ZN6Course15IsMapInMainGridEj kind:function(arm,size=0x34) addr:0x207d4e4 @@ -313,7 +313,7 @@ _ZN6Course15SetMapDataFlag2Eib kind:function(arm,size=0x20) addr:0x207d924 _ZN6Course15GetMapDataFlag2Ei kind:function(arm,size=0x18) addr:0x207d944 _ZN6Course15SetMapDataFlag3Eib kind:function(arm,size=0x20) addr:0x207d95c _ZN6Course15GetMapDataFlag3Ei kind:function(arm,size=0x18) addr:0x207d97c -_ZN6Course15SetMapDataFlag4Eii kind:function(arm,size=0x20) addr:0x207d994 +_ZN6Course15SetMapDataFlag4Eib kind:function(arm,size=0x20) addr:0x207d994 _ZN6Course15GetMapDataFlag4Ei kind:function(arm,size=0x18) addr:0x207d9b4 _ZN6Course11FindMapDataEj kind:function(arm,size=0x48) addr:0x207d9cc _ZN6Course18FindCurrentMapDataEv kind:function(arm,size=0x24) addr:0x207da14 @@ -330,18 +330,18 @@ _ZN7MapBase18func_ov00_0207de68Ei kind:function(arm,size=0x20) addr:0x207de68 _ZN7MapBase18func_ov00_0207de88Ev kind:function(arm,size=0x18) addr:0x207de88 _ZN7MapBase18func_ov00_0207dea0Eb kind:function(arm,size=0x1c0) addr:0x207dea0 _ZN7MapBase8vfunc_b0Eii kind:function(arm,size=0x2c) addr:0x207e060 -_ZN7MapBase18func_ov00_0207e08cEii kind:function(arm,size=0x64) addr:0x207e08c +_ZN7MapBase18func_ov00_0207e08cEPii kind:function(arm,size=0x64) addr:0x207e08c _ZN7MapBase18func_ov00_0207e0f0Ei kind:function(arm,size=0x19c) addr:0x207e0f0 _ZN7MapBase18func_ov00_0207e28cEi kind:function(arm,size=0x1b8) addr:0x207e28c _ZN7MapBase8vfunc_b4Ev kind:function(arm,size=0x28) addr:0x207e444 _ZN7MapBase8vfunc_48Ev kind:function(arm,size=0x1c) addr:0x207e46c _ZN7MapBase8vfunc_50Ev kind:function(arm,size=0x8) addr:0x207e488 -_ZN7MapBase8vfunc_54Ev kind:function(arm,size=0x8) addr:0x207e490 -_ZN7MapBase8vfunc_58Ev kind:function(arm,size=0x8) addr:0x207e498 +_ZN7MapBase8vfunc_54EP5Vec2b kind:function(arm,size=0x8) addr:0x207e490 +_ZN7MapBase8vfunc_58EP5Vec2bi kind:function(arm,size=0x8) addr:0x207e498 _ZN7MapBase8vfunc_5cEv kind:function(arm,size=0x8) addr:0x207e4a0 -_ZN7MapBase8vfunc_60Ev kind:function(arm,size=0x8) addr:0x207e4a8 +_ZN7MapBase8vfunc_60EPh kind:function(arm,size=0x8) addr:0x207e4a8 _ZN7MapBase8vfunc_64Ev kind:function(arm,size=0x8) addr:0x207e4b0 -_ZN7MapBase8vfunc_68Eii kind:function(arm,size=0x488) addr:0x207e4b8 +_ZN7MapBase8vfunc_68EP5Vec3pb kind:function(arm,size=0x488) addr:0x207e4b8 _ZN7MapBase18func_ov00_0207e940EPc kind:function(arm,size=0x28) addr:0x207e940 _ZN7MapBase18func_ov00_0207e968Ev kind:function(arm,size=0x4) addr:0x207e968 _ZN7MapBase18func_ov00_0207e96cEv kind:function(arm,size=0x4) addr:0x207e96c @@ -355,14 +355,14 @@ _ZN7MapBase8vfunc_88Ev kind:function(arm,size=0x8) addr:0x207f324 _ZN7MapBase8vfunc_8cEv kind:function(arm,size=0x8) addr:0x207f32c _ZN7MapBase8vfunc_9cEv kind:function(arm,size=0x4) addr:0x207f334 _ZN7MapBase8vfunc_a0Ev kind:function(arm,size=0x4) addr:0x207f338 -_ZN7MapBase8vfunc_a4Ev kind:function(arm,size=0x8) addr:0x207f33c +_ZN7MapBase8vfunc_a4EPc kind:function(arm,size=0x8) addr:0x207f33c _ZN7MapBase8vfunc_a8Ev kind:function(arm,size=0x4) addr:0x207f344 _ZN7MapBase8vfunc_acEv kind:function(arm,size=0x4) addr:0x207f348 -_ZN7MapBase8vfunc_78Ev kind:function(arm,size=0x8) addr:0x207f34c -_ZN7MapBase8vfunc_7cEv kind:function(arm,size=0x8) addr:0x207f354 +_ZN7MapBase8vfunc_78EPb kind:function(arm,size=0x8) addr:0x207f34c +_ZN7MapBase8vfunc_7cEiPiiPs kind:function(arm,size=0x8) addr:0x207f354 _ZN7MapBase8vfunc_80Ev kind:function(arm,size=0x8) addr:0x207f35c _ZN7MapBase8vfunc_84Ei kind:function(arm,size=0x28) addr:0x207f364 -_ZN7MapBase18func_ov00_0207f38cEi kind:function(arm,size=0x38) addr:0x207f38c +_ZN7MapBase18func_ov00_0207f38cEPi kind:function(arm,size=0x38) addr:0x207f38c _ZN7MapBase8vfunc_90Eiii kind:function(arm,size=0xdc) addr:0x207f3c4 _ZN7MapBase8vfunc_94Ev kind:function(arm,size=0x4) addr:0x207f4a0 _ZN7MapBase18func_ov00_0207f4a4EP5Vec2si kind:function(arm,size=0x98) addr:0x207f4a4 @@ -406,14 +406,14 @@ _ZN7MapBase18func_ov00_0208008cEj kind:function(arm,size=0x10) addr:0x208008c _ZN7MapBase7AddExitEP4Exit kind:function(arm,size=0xa4) addr:0x208009c _ZN7MapBase18func_ov00_02080140EP4Exit kind:function(arm,size=0x1e4) addr:0x2080140 _ZN12MapBase_Unk118func_ov00_02080324Eiii kind:function(arm,size=0x78) addr:0x2080324 -_ZN7MapBase8FindExitEiP4Exit kind:function(arm,size=0xd0) addr:0x208039c +_ZN7MapBase8FindExitEjP4Exit kind:function(arm,size=0xd0) addr:0x208039c _ZN7MapBase18AddCameraViewpointEP15CameraViewpoint kind:function(arm,size=0xa4) addr:0x208046c _ZN7MapBase19FindViewpoint_Unk_4EcP15CameraViewpoint kind:function(arm,size=0xc0) addr:0x2080510 _ZN7MapBase19FindViewpoint_Unk_0EiP15CameraViewpoint kind:function(arm,size=0xb8) addr:0x20805d0 _ZN7MapBase19GetCurrentViewpointEP15CameraViewpointi kind:function(arm,size=0xf8) addr:0x2080688 _ZN7MapBase26GetCurrentViewpoint_Unk_00Ei kind:function(arm,size=0x54) addr:0x2080780 _ZN7MapBase8vfunc_b8Ev kind:function(arm,size=0x50) addr:0x20807d4 -_ZN7MapBase18func_ov00_02080824Eii kind:function(arm,size=0xac) addr:0x2080824 +_ZN7MapBase18func_ov00_02080824EjPc kind:function(arm,size=0xac) addr:0x2080824 _ZN7MapBase10AddUnk_130Ei kind:function(arm,size=0xe8) addr:0x20808d0 _ZN7MapBase18func_ov00_020809b8Ei kind:function(arm,size=0xc0) addr:0x20809b8 _ZN7MapBase18func_ov00_02080a78EP5Vec3p kind:function(arm,size=0x58) addr:0x2080a78 @@ -421,7 +421,7 @@ _ZN12MapBase_Unk218func_ov00_02080ad0EPP11TriggerBaseS2_ kind:function(arm,size= _ZN7MapBase18func_ov00_02080b24EP5Vec2b kind:function(arm,size=0x1e4) addr:0x2080b24 _ZN7MapBase18func_ov00_02080d08Ei kind:function(arm,size=0x6c) addr:0x2080d08 _ZN7MapBase8vfunc_bcEv kind:function(arm,size=0x4) addr:0x2080d74 -_ZN7MapBase8vfunc_98Ev kind:function(arm,size=0x4) addr:0x2080d78 +_ZN7MapBase8vfunc_98Eiii kind:function(arm,size=0x4) addr:0x2080d78 _ZN7MapBase8vfunc_c0Ev kind:function(arm,size=0x4) addr:0x2080d7c _ZN7MapBase22TriggerOfType_vfunc_10Ei kind:function(arm,size=0x5c) addr:0x2080d80 _ZN11TriggerBase8vfunc_10Ev kind:function(arm,size=0x8) addr:0x2080ddc @@ -488,11 +488,11 @@ func_ov000_0208208c kind:function(arm,size=0x14) addr:0x208208c func_ov000_020820a0 kind:function(arm,size=0x1c) addr:0x20820a0 func_ov000_020820bc kind:function(arm,size=0x14) addr:0x20820bc func_ov000_020820d0 kind:function(arm,size=0x1c) addr:0x20820d0 -_ZN10MapManager18func_ov00_020820ecEPi kind:function(arm,size=0x10) addr:0x20820ec +_ZN10MapManager24GetCourseDungeonProgressEP14CourseProgress kind:function(arm,size=0x10) addr:0x20820ec _ZN10MapManager18func_ov00_020820fcEiii kind:function(arm,size=0x10) addr:0x20820fc -_ZN10MapManager18func_ov00_0208210cEii kind:function(arm,size=0x200) addr:0x208210c -_ZN10MapManager18func_ov00_0208230cEi kind:function(arm,size=0x3c) addr:0x208230c -_ZN10MapManager18func_ov00_02082348Ei kind:function(arm,size=0x5c) addr:0x2082348 +_ZN10MapManager18func_ov00_0208210cEiPi kind:function(arm,size=0x200) addr:0x208210c +_ZN10MapManager18func_ov00_0208230cEPi kind:function(arm,size=0x3c) addr:0x208230c +_ZN10MapManager18func_ov00_02082348EPi kind:function(arm,size=0x5c) addr:0x2082348 _ZN10MapManager18func_ov00_020823a4Ei kind:function(arm,size=0x10) addr:0x20823a4 _ZN10MapManager18func_ov00_020823b4Ev kind:function(arm,size=0x10) addr:0x20823b4 _ZN10MapManager18func_ov00_020823c4EPii kind:function(arm,size=0x10) addr:0x20823c4 @@ -501,7 +501,7 @@ _ZN10MapManager18func_ov00_020823e4Ei kind:function(arm,size=0x10) addr:0x20823e _ZN10MapManager16MapData_vfunc_b4Ev kind:function(arm,size=0x18) addr:0x20823f4 _ZN10MapManager16MapData_vfunc_9cEv kind:function(arm,size=0x18) addr:0x208240c _ZN10MapManager18func_ov00_02082424Ev kind:function(arm,size=0x30) addr:0x2082424 -_ZN10MapManager18func_ov00_02082454Eii kind:function(arm,size=0x40) addr:0x2082454 +_ZN10MapManager18func_ov00_02082454EP5Vec3pS1_ kind:function(arm,size=0x40) addr:0x2082454 _ZN10MapManager18func_ov00_02082494Ei kind:function(arm,size=0x38) addr:0x2082494 _ZN10MapManager18func_ov00_020824ccEi kind:function(arm,size=0x38) addr:0x20824cc _ZN10MapManager18func_ov00_02082504Ev kind:function(arm,size=0x34) addr:0x2082504 @@ -509,145 +509,145 @@ _ZN10MapManager18func_ov00_02082538Ev kind:function(arm,size=0x5c) addr:0x208253 _ZN10MapManager18func_ov00_02082594Ev kind:function(arm,size=0x18) addr:0x2082594 _ZN10MapManager18func_ov00_020825acEv kind:function(arm,size=0x18) addr:0x20825ac _ZN10MapManager17GetCourseFilePathEPcS0_ kind:function(arm,size=0x20) addr:0x20825c4 -_ZN10MapManager18func_ov00_020825e4Eii kind:function(arm,size=0x30) addr:0x20825e4 -_ZN10MapManager18func_ov00_02082614Eii kind:function(arm,size=0x24) addr:0x2082614 -_ZN10MapManager16MapData_vfunc_b0Ev kind:function(arm,size=0x18) addr:0x2082638 +_ZN10MapManager18func_ov00_020825e4EiPc kind:function(arm,size=0x30) addr:0x20825e4 +_ZN10MapManager18func_ov00_02082614EPci kind:function(arm,size=0x24) addr:0x2082614 +_ZN10MapManager16MapData_vfunc_b0Eii kind:function(arm,size=0x18) addr:0x2082638 _ZN10MapManager18func_ov00_02082650Eiii kind:function(arm,size=0x10) addr:0x2082650 _ZN10MapManager18func_ov00_02082660Eii kind:function(arm,size=0x10) addr:0x2082660 _ZN10MapManager18func_ov00_02082670Eii kind:function(arm,size=0x10) addr:0x2082670 _ZN10MapManager18func_ov00_02082680Eii kind:function(arm,size=0x20) addr:0x2082680 -_ZN10MapManager18func_ov00_020826a0Eiii kind:function(arm,size=0x20) addr:0x20826a0 +_ZN10MapManager18func_ov00_020826a0Eii kind:function(arm,size=0x20) addr:0x20826a0 _ZN10MapManager9CreateMapEiii kind:function(arm,size=0x100) addr:0x20826c0 _ZN10MapManager10DestroyMapEv kind:function(arm,size=0x30) addr:0x20827c0 _ZN10MapManager16MapData_vfunc_44Ev kind:function(arm,size=0x18) addr:0x20827f0 -_ZN10MapManager18func_ov00_02082808Ev kind:function(arm,size=0xb8) addr:0x2082808 -_ZN10MapManager16MapData_vfunc_7cEv kind:function(arm,size=0x20) addr:0x20828c0 -_ZN10MapManager16MapData_vfunc_84Ev kind:function(arm,size=0x18) addr:0x20828e0 +_ZN10MapManager18func_ov00_02082808Eb kind:function(arm,size=0xb8) addr:0x2082808 +_ZN10MapManager16MapData_vfunc_7cEiPiiPs kind:function(arm,size=0x20) addr:0x20828c0 +_ZN10MapManager16MapData_vfunc_84Ei kind:function(arm,size=0x18) addr:0x20828e0 _ZN10MapManager18func_ov00_020828f8EPi kind:function(arm,size=0x10) addr:0x20828f8 -_ZN10MapManager20GetCourseData_Unk_b0Ev kind:function(arm,size=0xc) addr:0x2082908 +_ZN10MapManager10GetNumMapsEv kind:function(arm,size=0xc) addr:0x2082908 _ZN10MapManager18func_ov00_02082914Ei kind:function(arm,size=0x1b8) addr:0x2082914 _ZN10MapManager18func_ov00_02082accEv kind:function(arm,size=0x10) addr:0x2082acc _ZN10MapManager18func_ov00_02082adcEv kind:function(arm,size=0x18) addr:0x2082adc _ZN10MapManager18func_ov00_02082af4Ev kind:function(arm,size=0x48) addr:0x2082af4 -_ZN10MapManager18func_ov00_02082b3cEi kind:function(arm,size=0x1cc) addr:0x2082b3c +_ZN10MapManager18func_ov00_02082b3cEPiP5Vec2b kind:function(arm,size=0x1cc) addr:0x2082b3c _ZN10MapManager18func_ov00_02082d08Ev kind:function(arm,size=0x20) addr:0x2082d08 -_ZN10MapManager20GetCourseData_Unk_1cEv kind:function(arm,size=0xc) addr:0x2082d28 -_ZN10MapManager20GetCourseData_Unk_1dEv kind:function(arm,size=0xc) addr:0x2082d34 +_ZN10MapManager17GetCurrentMapPosXEv kind:function(arm,size=0xc) addr:0x2082d28 +_ZN10MapManager17GetCurrentMapPosYEv kind:function(arm,size=0xc) addr:0x2082d34 _ZN10MapManager18func_ov00_02082d40Ev kind:function(arm,size=0x34) addr:0x2082d40 _ZN10MapManager18func_ov00_02082d74Ei kind:function(arm,size=0x10) addr:0x2082d74 -_ZN10MapManager18func_ov00_02082d84Ev kind:function(arm,size=0x98) addr:0x2082d84 +_ZN10MapManager18func_ov00_02082d84EP5Vec2bPiS2_ kind:function(arm,size=0x98) addr:0x2082d84 _ZN10MapManager18func_ov00_02082e1cEPiS0_ kind:function(arm,size=0x250) addr:0x2082e1c -_ZN10MapManager18func_ov00_0208306cEv kind:function(arm,size=0xf0) addr:0x208306c +_ZN10MapManager18func_ov00_0208306cEPiS0_ kind:function(arm,size=0xf0) addr:0x208306c _ZN10MapManager18func_ov00_0208315cEPiS0_ kind:function(arm,size=0xe8) addr:0x208315c -_ZN10MapManager18func_ov00_02083244EjPiS0_S0_ kind:function(arm,size=0x54) addr:0x2083244 -_ZN10MapManager18func_ov00_02083298EjPiS0_S0_ kind:function(arm,size=0x74) addr:0x2083298 +_ZN10MapManager18func_ov00_02083244EjP5Vec3pPiS2_ kind:function(arm,size=0x54) addr:0x2083244 +_ZN10MapManager18func_ov00_02083298EjP5Vec3pPiS2_ kind:function(arm,size=0x74) addr:0x2083298 _ZN10MapManager21GetCourseData_Unk_25cEv kind:function(arm,size=0xc) addr:0x208330c -_ZN10MapManager18func_ov00_02083318Ei kind:function(arm,size=0x10) addr:0x2083318 +_ZN10MapManager15IsMapInMainGridEj kind:function(arm,size=0x10) addr:0x2083318 _ZN10MapManager18func_ov00_02083328Ev kind:function(arm,size=0x1c) addr:0x2083328 -_ZN10MapManager20GetCourseData_Unk_86Ev kind:function(arm,size=0xc) addr:0x2083344 -_ZN10MapManager20GetCourseData_Unk_87Ev kind:function(arm,size=0xc) addr:0x2083350 -_ZN10MapManager17Get_MapData_Unk28Ev kind:function(arm,size=0xc) addr:0x208335c -_ZN10MapManager17Get_MapData_Unk2aEv kind:function(arm,size=0xc) addr:0x2083368 +_ZN10MapManager22GetCourseMainGridSizeXEv kind:function(arm,size=0xc) addr:0x2083344 +_ZN10MapManager22GetCourseMainGridSizeYEv kind:function(arm,size=0xc) addr:0x2083350 +_ZN10MapManager11GetMapWidthEv kind:function(arm,size=0xc) addr:0x208335c +_ZN10MapManager12GetMapHeightEv kind:function(arm,size=0xc) addr:0x2083368 _ZN10MapManager18func_ov00_02083374Ev kind:function(arm,size=0x10) addr:0x2083374 _ZN10MapManager18func_ov00_02083384Ev kind:function(arm,size=0x10) addr:0x2083384 _ZN10MapManager13GetCourseMinXEv kind:function(arm,size=0xc) addr:0x2083394 _ZN10MapManager13GetCourseMinZEv kind:function(arm,size=0xc) addr:0x20833a0 _ZN10MapManager13GetCourseMaxXEv kind:function(arm,size=0xc) addr:0x20833ac _ZN10MapManager13GetCourseMaxZEv kind:function(arm,size=0xc) addr:0x20833b8 -_ZN10MapManager18func_ov00_020833c4Ev kind:function(arm,size=0xc) addr:0x20833c4 -_ZN10MapManager18func_ov00_020833d0Ev kind:function(arm,size=0xc) addr:0x20833d0 -_ZN10MapManager18func_ov00_020833dcEv kind:function(arm,size=0xc) addr:0x20833dc -_ZN10MapManager18func_ov00_020833e8Ev kind:function(arm,size=0xc) addr:0x20833e8 -_ZN10MapManager18Get_MapData_Unk_d0Ev kind:function(arm,size=0xc) addr:0x20833f4 -_ZN10MapManager18Get_MapData_Unk_d8Ev kind:function(arm,size=0xc) addr:0x2083400 -_ZN10MapManager17GetMapData_Unk_dcEP5Vec3p kind:function(arm,size=0x20) addr:0x208340c -_ZN10MapManager17GetMapData_Unk_e8EP5Vec3p kind:function(arm,size=0x20) addr:0x208342c -_ZN10MapManager17GetMapData_Unk_d0EP5Vec3p kind:function(arm,size=0x20) addr:0x208344c +_ZN10MapManager10GetMapMinXEv kind:function(arm,size=0xc) addr:0x20833c4 +_ZN10MapManager10GetMapMinZEv kind:function(arm,size=0xc) addr:0x20833d0 +_ZN10MapManager10GetMapMaxXEv kind:function(arm,size=0xc) addr:0x20833dc +_ZN10MapManager10GetMapMaxZEv kind:function(arm,size=0xc) addr:0x20833e8 +_ZN10MapManager13GetMapCenterXEv kind:function(arm,size=0xc) addr:0x20833f4 +_ZN10MapManager13GetMapCenterZEv kind:function(arm,size=0xc) addr:0x2083400 +_ZN10MapManager15GetMapMinBoundsEP5Vec3p kind:function(arm,size=0x20) addr:0x208340c +_ZN10MapManager15GetMapMaxBoundsEP5Vec3p kind:function(arm,size=0x20) addr:0x208342c +_ZN10MapManager12GetMapCenterEP5Vec3p kind:function(arm,size=0x20) addr:0x208344c _ZN10MapManager18func_ov00_0208346cEP4AABB kind:function(arm,size=0x50) addr:0x208346c _ZN10MapManager18func_ov00_020834bcEP5Vec3pii kind:function(arm,size=0x68) addr:0x20834bc _ZN10MapManager18func_ov00_02083524EP5Vec3pii kind:function(arm,size=0x3c) addr:0x2083524 -_ZN10MapManager18func_ov00_02083560EiPS_j kind:function(arm,size=0x10) addr:0x2083560 -_ZN10MapManager18func_ov00_02083570Eii kind:function(arm,size=0x18) addr:0x2083570 +_ZN10MapManager18func_ov00_02083560EP5Vec2bPS_j kind:function(arm,size=0x10) addr:0x2083560 +_ZN10MapManager18func_ov00_02083570Ehh kind:function(arm,size=0x18) addr:0x2083570 _ZN10MapManager18func_ov00_02083588Ev kind:function(arm,size=0x1c) addr:0x2083588 _ZN10MapManager18func_ov00_020835a4Ev kind:function(arm,size=0x10) addr:0x20835a4 _ZN10MapManager18func_ov00_020835b4Ev kind:function(arm,size=0x10) addr:0x20835b4 _ZN10MapManager18func_ov00_020835c4Eii kind:function(arm,size=0x20) addr:0x20835c4 -_ZN10MapManager18func_ov00_020835e4EiPiS0_ kind:function(arm,size=0x10) addr:0x20835e4 +_ZN10MapManager18func_ov00_020835e4EiPiPc kind:function(arm,size=0x10) addr:0x20835e4 _ZN10MapManager18func_ov00_020835f4Ei kind:function(arm,size=0x10) addr:0x20835f4 _ZN10MapManager18func_ov00_02083604Ei kind:function(arm,size=0x10) addr:0x2083604 _ZN10MapManager18func_ov00_02083614Ei kind:function(arm,size=0x10) addr:0x2083614 -_ZN10MapManager14GetEntrancePosEP5Vec3pi kind:function(arm,size=0x40) addr:0x2083624 -_ZN10MapManager18func_ov00_02083664EP5Vec3pi kind:function(arm,size=0x58) addr:0x2083664 -_ZN10MapManager18func_ov00_020836bcEjPi kind:function(arm,size=0x10) addr:0x20836bc -_ZN10MapManager23GetTriggerBoundingBoxesEjP4AABBj kind:function(arm,size=0x10) addr:0x20836cc -_ZN10MapManager18func_ov00_020836dcEii kind:function(arm,size=0x94) addr:0x20836dc -_ZN10MapManager18func_ov00_02083770Eji kind:function(arm,size=0x10) addr:0x2083770 -_ZN10MapManager18func_ov00_02083780Ei kind:function(arm,size=0x10) addr:0x2083780 +_ZN10MapManager14GetEntrancePosEP8Entrancei kind:function(arm,size=0x40) addr:0x2083624 +_ZN10MapManager18func_ov00_02083664EP8Entrancei kind:function(arm,size=0x58) addr:0x2083664 +_ZN10MapManager21GetTriggerBoundingBoxEiP4AABB kind:function(arm,size=0x10) addr:0x20836bc +_ZN10MapManager23GetTriggerBoundingBoxesEiP4AABBi kind:function(arm,size=0x10) addr:0x20836cc +_ZN10MapManager18func_ov00_020836dcEjj kind:function(arm,size=0x94) addr:0x20836dc +_ZN10MapManager23IsTriggerTypeOverlappedEjP5Vec3p kind:function(arm,size=0x10) addr:0x2083770 +_ZN10MapManager21GetOverlappingTriggerEP5Vec3p kind:function(arm,size=0x10) addr:0x2083780 _ZN10MapManager18func_ov00_02083790Ei kind:function(arm,size=0xb0) addr:0x2083790 _ZN10MapManager18func_ov00_02083840Ei kind:function(arm,size=0x88) addr:0x2083840 -_ZN10MapManager18func_ov00_020838c8Ei kind:function(arm,size=0x10) addr:0x20838c8 +_ZN10MapManager10AddTriggerEi kind:function(arm,size=0x10) addr:0x20838c8 _ZN10MapManager18func_ov00_020838d8Ei kind:function(arm,size=0x10) addr:0x20838d8 -_ZN10MapManager18func_ov00_020838e8EjPi kind:function(arm,size=0x10) addr:0x20838e8 -_ZN10MapManager18func_ov00_020838f8EPi kind:function(arm,size=0x10) addr:0x20838f8 -_ZN10MapManager18func_ov00_02083908EcPi kind:function(arm,size=0x10) addr:0x2083908 -_ZN10MapManager18func_ov00_02083918EiPi kind:function(arm,size=0x10) addr:0x2083918 -_ZN10MapManager18func_ov00_02083928EPci kind:function(arm,size=0x10) addr:0x2083928 +_ZN10MapManager8FindExitEjP4Exit kind:function(arm,size=0x10) addr:0x20838e8 +_ZN10MapManager18func_ov00_020838f8EP4Exit kind:function(arm,size=0x10) addr:0x20838f8 +_ZN10MapManager18func_ov00_02083908EcP15CameraViewpoint kind:function(arm,size=0x10) addr:0x2083908 +_ZN10MapManager18func_ov00_02083918EiP15CameraViewpoint kind:function(arm,size=0x10) addr:0x2083918 +_ZN10MapManager19GetCurrentViewpointEP15CameraViewpointi kind:function(arm,size=0x10) addr:0x2083928 _ZN10MapManager18func_ov00_02083938Ei kind:function(arm,size=0x10) addr:0x2083938 -_ZN10MapManager18Set_MapData_Unk_16Eci kind:function(arm,size=0x10) addr:0x2083948 +_ZN10MapManager21SetCurrentViewpointIdEci kind:function(arm,size=0x10) addr:0x2083948 _ZN10MapManager18func_ov00_02083958Ei kind:function(arm,size=0x10) addr:0x2083958 _ZN10MapManager18func_ov00_02083968EjPc kind:function(arm,size=0x10) addr:0x2083968 -_ZN10MapManager18func_ov00_02083978EiP5Vec3p kind:function(arm,size=0x3c) addr:0x2083978 +_ZN10MapManager18func_ov00_02083978EP5Vec3pS1_ kind:function(arm,size=0x3c) addr:0x2083978 _ZN10MapManager18func_ov00_020839b4Ei kind:function(arm,size=0x10) addr:0x20839b4 _ZN10MapManager18func_ov00_020839c4Ei kind:function(arm,size=0x10) addr:0x20839c4 -_ZN10MapManager18func_ov00_020839d4Ev kind:function(arm,size=0x24) addr:0x20839d4 -_ZN10MapManager18func_ov00_020839f8Ev kind:function(arm,size=0x24) addr:0x20839f8 +_ZN10MapManager18func_ov00_020839d4Ei kind:function(arm,size=0x24) addr:0x20839d4 +_ZN10MapManager18func_ov00_020839f8Ei kind:function(arm,size=0x24) addr:0x20839f8 _ZN10MapManager18func_ov00_02083a1cEP5Vec2bPS_P5Vec3p kind:function(arm,size=0x38) addr:0x2083a1c -_ZN10MapManager18func_ov00_02083a54EiPS_iii kind:function(arm,size=0x130) addr:0x2083a54 -_ZN10MapManager18func_ov00_02083b84Ev kind:function(arm,size=0x28) addr:0x2083b84 -_ZN10MapManager18func_ov00_02083bacEv kind:function(arm,size=0x28) addr:0x2083bac -_ZN10MapManager18func_ov00_02083bd4Ev kind:function(arm,size=0x28) addr:0x2083bd4 -_ZN10MapManager18func_ov00_02083bfcEv kind:function(arm,size=0x28) addr:0x2083bfc +_ZN10MapManager18func_ov00_02083a54EPhPS_PiiS2_ kind:function(arm,size=0x130) addr:0x2083a54 +_ZN10MapManager13GetTileStartXEi kind:function(arm,size=0x28) addr:0x2083b84 +_ZN10MapManager13GetTileStartZEi kind:function(arm,size=0x28) addr:0x2083bac +_ZN10MapManager11GetTileEndXEi kind:function(arm,size=0x28) addr:0x2083bd4 +_ZN10MapManager11GetTileEndZEi kind:function(arm,size=0x28) addr:0x2083bfc _ZN10MapManager18func_ov00_02083c24Ei kind:function(arm,size=0x2c) addr:0x2083c24 _ZN10MapManager18func_ov00_02083c50Ei kind:function(arm,size=0x2c) addr:0x2083c50 _ZN10MapManager18func_ov00_02083c7cEP5Vec3p5Vec2b kind:function(arm,size=0x6c) addr:0x2083c7c -_ZN10MapManager18func_ov00_02083ce8Ecccci kind:function(arm,size=0x14c) addr:0x2083ce8 +_ZN10MapManager18func_ov00_02083ce8EP5Vec3pjij kind:function(arm,size=0x14c) addr:0x2083ce8 _ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x2083e34 -_ZN10MapManager16MapData_vfunc_60Ev kind:function(arm,size=0x18) addr:0x2083e58 -_ZN10MapManager18func_ov00_02083e70Ev kind:function(arm,size=0x70) addr:0x2083e70 -_ZN10MapManager16MapData_vfunc_68Ev kind:function(arm,size=0x18) addr:0x2083ee0 -_ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_i kind:function(arm,size=0x4c) addr:0x2083ef8 -_ZN10MapManager18func_ov00_02083f44EP5Vec3p kind:function(arm,size=0x3c) addr:0x2083f44 -_ZN10MapManager16MapData_vfunc_6cEv kind:function(arm,size=0x18) addr:0x2083f80 -_ZN10MapManager16MapData_vfunc_70Ev kind:function(arm,size=0x18) addr:0x2083f98 +_ZN10MapManager16MapData_vfunc_60EP5Vec2b kind:function(arm,size=0x18) addr:0x2083e58 +_ZN10MapManager18func_ov00_02083e70EP5Vec2b kind:function(arm,size=0x70) addr:0x2083e70 +_ZN10MapManager16MapData_vfunc_68EP5Vec3pb kind:function(arm,size=0x18) addr:0x2083ee0 +_ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_b kind:function(arm,size=0x4c) addr:0x2083ef8 +_ZN10MapManager18func_ov00_02083f44EP5Vec3pb kind:function(arm,size=0x3c) addr:0x2083f44 +_ZN10MapManager16MapData_vfunc_6cEiii kind:function(arm,size=0x18) addr:0x2083f80 +_ZN10MapManager16MapData_vfunc_70EP5Vec3p kind:function(arm,size=0x18) addr:0x2083f98 _ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x2083fb0 _ZN10MapManager18GetTileWorldBoundsEP5Vec2bP4AABB kind:function(arm,size=0x64) addr:0x2084024 -_ZN10MapManager16MapData_vfunc_54Ev kind:function(arm,size=0x18) addr:0x2084088 -_ZN10MapManager18func_ov00_020840a0Ecci kind:function(arm,size=0x24) addr:0x20840a0 +_ZN10MapManager16MapData_vfunc_54EP5Vec2b kind:function(arm,size=0x18) addr:0x2084088 +_ZN10MapManager18func_ov00_020840a0Ecc kind:function(arm,size=0x24) addr:0x20840a0 _ZN10MapManager16MapData_vfunc_78EP5Vec2b kind:function(arm,size=0x18) addr:0x20840c4 -_ZN10MapManager18func_ov00_020840dcEv kind:function(arm,size=0x24) addr:0x20840dc -_ZN10MapManager18func_ov00_02084100EiPS_ kind:function(arm,size=0x14) addr:0x2084100 +_ZN10MapManager18func_ov00_020840dcEP5Vec2b kind:function(arm,size=0x24) addr:0x20840dc +_ZN10MapManager18func_ov00_02084100EPiPS_ kind:function(arm,size=0x14) addr:0x2084100 _ZN10MapManager17GetMapData_Unk_48Ev kind:function(arm,size=0xc) addr:0x2084114 _ZN10MapManager17GetMapData_Unk_4cEv kind:function(arm,size=0xc) addr:0x2084120 _ZN10MapManager18func_ov00_0208412cEv kind:function(arm,size=0x10) addr:0x208412c _ZN10MapManager18func_ov00_0208413cEi kind:function(arm,size=0x10) addr:0x208413c -_ZN10MapManager16MapData_vfunc_58Ev kind:function(arm,size=0x18) addr:0x208414c -_ZN10MapManager18func_ov00_02084164Ev kind:function(arm,size=0x1a8) addr:0x2084164 +_ZN10MapManager16MapData_vfunc_58EP5Vec2bi kind:function(arm,size=0x18) addr:0x208414c +_ZN10MapManager18func_ov00_02084164EP5Vec2b kind:function(arm,size=0x1a8) addr:0x2084164 _ZN10MapManager17GetMapData_Unk_0aEv kind:function(arm,size=0xc) addr:0x208430c _ZN10MapManager17GetMapData_Unk_0bEv kind:function(arm,size=0xc) addr:0x2084318 -_ZN10MapManager16MapData_vfunc_a4Ev kind:function(arm,size=0x18) addr:0x2084324 -_ZN10MapManager18func_ov00_0208433cEP5Vec3pi kind:function(arm,size=0x60) addr:0x208433c -_ZN10MapManager18func_ov00_0208439cEv kind:function(arm,size=0x50) addr:0x208439c +_ZN10MapManager16MapData_vfunc_a4EPc kind:function(arm,size=0x18) addr:0x2084324 +_ZN10MapManager18func_ov00_0208433cEP5Vec3pP5Vec2s kind:function(arm,size=0x60) addr:0x208433c +_ZN10MapManager18func_ov00_0208439cEP5Vec2sP5Vec3p kind:function(arm,size=0x50) addr:0x208439c _ZN10MapManager18func_ov00_020843ecEPi kind:function(arm,size=0x2ac) addr:0x20843ec _ZN10MapManager17GetMapData_Unk_38Ev kind:function(arm,size=0xc) addr:0x2084698 _ZN10MapManager18func_ov00_020846a4Ev kind:function(arm,size=0x5c) addr:0x20846a4 _ZN10MapManager18func_ov00_02084700Ev kind:function(arm,size=0x40) addr:0x2084700 _ZN10MapManager18func_ov00_02084740Ev kind:function(arm,size=0xa0) addr:0x2084740 _ZN10MapManager18func_ov00_020847e0Ev kind:function(arm,size=0x10) addr:0x20847e0 -_ZN10MapManager18func_ov00_020847f0Ev kind:function(arm,size=0x48) addr:0x20847f0 +_ZN10MapManager18func_ov00_020847f0Ei kind:function(arm,size=0x48) addr:0x20847f0 _ZN10MapManager18func_ov00_02084838Ev kind:function(arm,size=0x80) addr:0x2084838 _ZN10MapManager18func_ov00_020848b8Ev kind:function(arm,size=0x6c) addr:0x20848b8 _ZN10MapManager18func_ov00_02084924Ej kind:function(arm,size=0x10) addr:0x2084924 -_ZN10MapManager18func_ov00_02084934Ev kind:function(arm,size=0x50) addr:0x2084934 +_ZN10MapManager18func_ov00_02084934EP5Vec3p kind:function(arm,size=0x50) addr:0x2084934 _ZN10MapManager17GetMapData_Unk_06Ev kind:function(arm,size=0xc) addr:0x2084984 _ZN10MapManager17GetMapData_Unk_07Ev kind:function(arm,size=0xc) addr:0x2084990 _ZN10MapManager18func_ov00_0208499cEv kind:function(arm,size=0x24) addr:0x208499c @@ -659,31 +659,31 @@ _ZN10MapManager8SpawnNPCEP5Vec3pii kind:function(arm,size=0x68) addr:0x2084a5c _ZN10MapManager18func_ov00_02084ac4Ej kind:function(arm,size=0x44) addr:0x2084ac4 _ZN10MapManager10SetNumKeysEi kind:function(arm,size=0xc) addr:0x2084b08 _ZN10MapManager10GetNumKeysEv kind:function(arm,size=0xc) addr:0x2084b14 -_ZN10MapManager21SetCourseData_Unk_25cEc kind:function(arm,size=0xc) addr:0x2084b20 -_ZN10MapManager21GetCourseData_Unk_25dEv kind:function(arm,size=0xc) addr:0x2084b2c -_ZN10MapManager18func_ov00_02084b38Eiii kind:function(arm,size=0xa8) addr:0x2084b38 -_ZN10MapManager18func_ov00_02084be0Eii kind:function(arm,size=0x7c) addr:0x2084be0 -_ZN10MapManager18func_ov00_02084c5cEii kind:function(arm,size=0x10) addr:0x2084c5c -_ZN10MapManager18func_ov00_02084c6cEi kind:function(arm,size=0x10) addr:0x2084c6c -_ZN10MapManager18func_ov00_02084c7cEi kind:function(arm,size=0x18) addr:0x2084c7c +_ZN10MapManager15SetBlueWarpOpenEb kind:function(arm,size=0xc) addr:0x2084b20 +_ZN10MapManager15GetBlueWarpOpenEv kind:function(arm,size=0xc) addr:0x2084b2c +_ZN10MapManager18func_ov00_02084b38Ejib kind:function(arm,size=0xa8) addr:0x2084b38 +_ZN10MapManager18func_ov00_02084be0Eji kind:function(arm,size=0x7c) addr:0x2084be0 +_ZN10MapManager15SetMapDataFlag1Eib kind:function(arm,size=0x10) addr:0x2084c5c +_ZN10MapManager15GetMapDataFlag1Ei kind:function(arm,size=0x10) addr:0x2084c6c +_ZN10MapManager18func_ov00_02084c7cEib kind:function(arm,size=0x18) addr:0x2084c7c _ZN10MapManager18func_ov00_02084c94Ei kind:function(arm,size=0x1c) addr:0x2084c94 -_ZN10MapManager18func_ov00_02084cb0Ei kind:function(arm,size=0x18) addr:0x2084cb0 +_ZN10MapManager18func_ov00_02084cb0Eib kind:function(arm,size=0x18) addr:0x2084cb0 _ZN10MapManager18func_ov00_02084cc8Ei kind:function(arm,size=0x1c) addr:0x2084cc8 -_ZN10MapManager18func_ov00_02084ce4Ei kind:function(arm,size=0x18) addr:0x2084ce4 +_ZN10MapManager18func_ov00_02084ce4Eib kind:function(arm,size=0x18) addr:0x2084ce4 _ZN10MapManager18func_ov00_02084cfcEi kind:function(arm,size=0x1c) addr:0x2084cfc _ZN10MapManager17GetMapData_Unk_09Ev kind:function(arm,size=0xc) addr:0x2084d18 -_ZN10MapManager18func_ov00_02084d24Ecci kind:function(arm,size=0x28) addr:0x2084d24 +_ZN10MapManager18func_ov00_02084d24Eccs kind:function(arm,size=0x28) addr:0x2084d24 _ZN10MapManager18func_ov00_02084d4cEiiP5Vec3p kind:function(arm,size=0x170) addr:0x2084d4c -_ZN10MapManager18func_ov00_02084ebcEi kind:function(arm,size=0x24c) addr:0x2084ebc +_ZN10MapManager18func_ov00_02084ebcEP5Vec3p kind:function(arm,size=0x24c) addr:0x2084ebc _ZN10MapManager18func_ov00_02085108EP5Vec3p kind:function(arm,size=0x174) addr:0x2085108 -_ZN10MapManager18func_ov00_0208527cEv kind:function(arm,size=0x180) addr:0x208527c -_ZN10MapManager18func_ov00_020853fcEv kind:function(arm,size=0x198) addr:0x20853fc +_ZN10MapManager18func_ov00_0208527cEPS_iPi kind:function(arm,size=0x180) addr:0x208527c +_ZN10MapManager18func_ov00_020853fcEPS_P5Vec3pPi kind:function(arm,size=0x198) addr:0x20853fc _ZN10MapManager18func_ov00_02085594EP5Vec3p kind:function(arm,size=0x2a8) addr:0x2085594 -_ZN10MapManager18func_ov00_0208583cEiP5Vec3pi kind:function(arm,size=0x74) addr:0x208583c -_ZN10MapManager18func_ov00_020858b0Ev kind:function(arm,size=0x184) addr:0x20858b0 -_ZN10MapManager18func_ov00_02085a34Eii kind:function(arm,size=0x22c) addr:0x2085a34 -_ZN10MapManager18func_ov00_02085c60Eiiii kind:function(arm,size=0x3e4) addr:0x2085c60 -_ZN10MapManager18func_ov00_02086044Eiii kind:function(arm,size=0x240) addr:0x2086044 +_ZN10MapManager18func_ov00_0208583cEPS_P5Vec3pi kind:function(arm,size=0x74) addr:0x208583c +_ZN10MapManager18func_ov00_020858b0EPS_P5Vec3pi kind:function(arm,size=0x184) addr:0x20858b0 +_ZN10MapManager18func_ov00_02085a34EP5Vec3pi kind:function(arm,size=0x22c) addr:0x2085a34 +_ZN10MapManager18func_ov00_02085c60EP5Vec3pPiS2_j kind:function(arm,size=0x3e4) addr:0x2085c60 +_ZN10MapManager18func_ov00_02086044EP5Vec3pS1_i kind:function(arm,size=0x240) addr:0x2086044 _ZN10MapManager18func_ov00_02086284EPiP5Vec3pS2_itS2_S2_ kind:function(arm,size=0x800) addr:0x2086284 _ZN10MapManager18func_ov00_02086a84EPiP5Vec3pS2_iiiS2_S2_ kind:function(arm,size=0x24c) addr:0x2086a84 func_ov000_02086cd0 kind:function(arm,size=0x4) addr:0x2086cd0 @@ -720,12 +720,12 @@ func_ov000_02087f08 kind:function(arm,size=0x18) addr:0x2087f08 func_ov000_02087f20 kind:function(arm,size=0xa0) addr:0x2087f20 func_ov000_02087fc0 kind:function(arm,size=0x20) addr:0x2087fc0 func_ov000_02087fe0 kind:function(arm,size=0x20) addr:0x2087fe0 -func_ov000_02088000 kind:function(arm,size=0x10) addr:0x2088000 +_Z19func_ov000_02088000ii kind:function(arm,size=0x10) addr:0x2088000 func_ov000_02088010 kind:function(arm,size=0x64) addr:0x2088010 func_ov000_02088074 kind:function(arm,size=0x84) addr:0x2088074 func_ov000_020880f8 kind:function(arm,size=0x38) addr:0x20880f8 -func_ov000_02088130 kind:function(arm,size=0x14) addr:0x2088130 -func_ov000_02088144 kind:function(arm,size=0x14) addr:0x2088144 +_Z19func_ov000_02088130Phi kind:function(arm,size=0x14) addr:0x2088130 +_Z19func_ov000_02088144Phi kind:function(arm,size=0x14) addr:0x2088144 func_ov000_02088158 kind:function(arm,size=0x44) addr:0x2088158 func_ov000_0208819c kind:function(arm,size=0x58) addr:0x208819c func_ov000_020881f4 kind:function(arm,size=0x50) addr:0x20881f4 @@ -811,10 +811,10 @@ func_ov000_0208b70c kind:function(arm,size=0x4) addr:0x208b70c func_ov000_0208b710 kind:function(arm,size=0x4) addr:0x208b710 func_ov000_0208b714 kind:function(arm,size=0x8) addr:0x208b714 func_ov000_0208b71c kind:function(arm,size=0x20) addr:0x208b71c -func_ov000_0208b73c kind:function(arm,size=0x60) addr:0x208b73c +_Z19func_ov000_0208b73cii kind:function(arm,size=0x60) addr:0x208b73c func_ov000_0208b79c kind:function(arm,size=0x34) addr:0x208b79c -func_ov000_0208b7d0 kind:function(arm,size=0x34) addr:0x208b7d0 -func_ov000_0208b804 kind:function(arm,size=0x40) addr:0x208b804 +_Z19func_ov000_0208b7d0iP5Vec3p kind:function(arm,size=0x34) addr:0x208b7d0 +_Z19func_ov000_0208b804PiP5Vec3pS1_ kind:function(arm,size=0x40) addr:0x208b804 func_ov000_0208b844 kind:function(arm,size=0x2c) addr:0x208b844 func_ov000_0208b870 kind:function(arm,size=0x2c) addr:0x208b870 func_ov000_0208b89c kind:function(arm,size=0x44) addr:0x208b89c @@ -861,7 +861,7 @@ func_ov000_0208cb84 kind:function(arm,size=0x4c) addr:0x208cb84 func_ov000_0208cbd0 kind:function(arm,size=0x84) addr:0x208cbd0 func_ov000_0208cc54 kind:function(arm,size=0x10) addr:0x208cc54 func_ov000_0208cc64 kind:function(arm,size=0x24) addr:0x208cc64 -func_ov000_0208cc88 kind:function(arm,size=0x54) addr:0x208cc88 +_Z19func_ov000_0208cc88Pi kind:function(arm,size=0x54) addr:0x208cc88 func_ov000_0208ccdc kind:function(arm,size=0x10) addr:0x208ccdc func_ov000_0208ccec kind:function(arm,size=0x10) addr:0x208ccec func_ov000_0208ccfc kind:function(arm,size=0x10) addr:0x208ccfc @@ -878,8 +878,8 @@ func_ov000_0208d310 kind:function(arm,size=0xec) addr:0x208d310 func_ov000_0208d3fc kind:function(arm,size=0x98) addr:0x208d3fc func_ov000_0208d494 kind:function(arm,size=0x14c) addr:0x208d494 func_ov000_0208d5e0 kind:function(arm,size=0x40) addr:0x208d5e0 -func_ov000_0208d620 kind:function(arm,size=0x60) addr:0x208d620 -func_ov000_0208d680 kind:function(arm,size=0x60) addr:0x208d680 +_Z19func_ov000_0208d620Pi kind:function(arm,size=0x60) addr:0x208d620 +_Z19func_ov000_0208d680Pi kind:function(arm,size=0x60) addr:0x208d680 func_ov000_0208d6e0 kind:function(arm,size=0x140) addr:0x208d6e0 func_ov000_0208d820 kind:function(arm,size=0x110) addr:0x208d820 func_ov000_0208d930 kind:function(arm,size=0xb0) addr:0x208d930 @@ -901,7 +901,7 @@ func_ov000_0208def0 kind:function(arm,size=0x14) addr:0x208def0 func_ov000_0208df04 kind:function(arm,size=0x28) addr:0x208df04 func_ov000_0208df2c kind:function(arm,size=0x48) addr:0x208df2c func_ov000_0208df74 kind:function(arm,size=0x4) addr:0x208df74 -func_ov000_0208df78 kind:function(arm,size=0x250) addr:0x208df78 +_Z19func_ov000_0208df78PiiiP5Vec3pS_ kind:function(arm,size=0x250) addr:0x208df78 func_ov000_0208e1c8 kind:function(arm,size=0x208) addr:0x208e1c8 func_ov000_0208e3d0 kind:function(arm,size=0x4c) addr:0x208e3d0 func_ov000_0208e41c kind:function(arm,size=0x4) addr:0x208e41c @@ -1091,7 +1091,7 @@ func_ov000_0209394c kind:function(arm,size=0xc) addr:0x209394c func_ov000_02093958 kind:function(arm,size=0x10) addr:0x2093958 func_ov000_02093968 kind:function(arm,size=0x78) addr:0x2093968 func_ov000_020939e0 kind:function(arm,size=0x3c) addr:0x20939e0 -func_ov000_02093a1c kind:function(arm,size=0x20) addr:0x2093a1c +_Z19func_ov000_02093a1cPjPii kind:function(arm,size=0x20) addr:0x2093a1c func_ov000_02093a3c kind:function(arm,size=0x10) addr:0x2093a3c func_ov000_02093a4c kind:function(arm,size=0x10) addr:0x2093a4c func_ov000_02093a5c kind:function(arm,size=0x94) addr:0x2093a5c @@ -1235,8 +1235,8 @@ func_ov000_02095fe0 kind:function(arm,size=0x180) addr:0x2095fe0 func_ov000_02096160 kind:function(arm,size=0x98) addr:0x2096160 func_ov000_020961f8 kind:function(arm,size=0x24) addr:0x20961f8 func_ov000_0209621c kind:function(arm,size=0x108) addr:0x209621c -func_ov000_02096324 kind:function(arm,size=0xf4) addr:0x2096324 -func_ov000_02096418 kind:function(arm,size=0xb4) addr:0x2096418 +_Z19func_ov000_02096324PiS_ kind:function(arm,size=0xf4) addr:0x2096324 +_Z19func_ov000_02096418Pi kind:function(arm,size=0xb4) addr:0x2096418 func_ov000_020964cc kind:function(arm,size=0xf4) addr:0x20964cc func_ov000_020965c0 kind:function(arm,size=0x1ec) addr:0x20965c0 func_ov000_020967ac kind:function(arm,size=0x250) addr:0x20967ac @@ -1457,9 +1457,9 @@ func_ov000_0209d550 kind:function(arm,size=0x14) addr:0x209d550 func_ov000_0209d564 kind:function(arm,size=0x16c) addr:0x209d564 func_ov000_0209d6d0 kind:function(arm,size=0x4) addr:0x209d6d0 func_ov000_0209d6d4 kind:function(arm,size=0x14) addr:0x209d6d4 -func_ov000_0209d6e8 kind:function(arm,size=0x28) addr:0x209d6e8 +_Z19func_ov000_0209d6e8PiS_ kind:function(arm,size=0x28) addr:0x209d6e8 func_ov000_0209d710 kind:function(arm,size=0xc) addr:0x209d710 -func_ov000_0209d71c kind:function(arm,size=0xc) addr:0x209d71c +_Z19func_ov000_0209d71cPii kind:function(arm,size=0xc) addr:0x209d71c func_ov000_0209d728 kind:function(arm,size=0x10) addr:0x209d728 func_ov000_0209d738 kind:function(arm,size=0x10) addr:0x209d738 func_ov000_0209d748 kind:function(arm,size=0x10) addr:0x209d748 @@ -1783,7 +1783,7 @@ func_ov000_020a5d50 kind:function(arm,size=0xc) addr:0x20a5d50 func_ov000_020a5d5c kind:function(arm,size=0x18) addr:0x20a5d5c func_ov000_020a5d74 kind:function(arm,size=0x94) addr:0x20a5d74 func_ov000_020a5e08 kind:function(arm,size=0x94) addr:0x20a5e08 -func_ov000_020a5e9c kind:function(arm,size=0x5c) addr:0x20a5e9c +_Z19func_ov000_020a5e9cPi kind:function(arm,size=0x5c) addr:0x20a5e9c func_ov000_020a5ef8 kind:function(arm,size=0x30) addr:0x20a5ef8 func_ov000_020a5f28 kind:function(arm,size=0x30) addr:0x20a5f28 func_ov000_020a5f58 kind:function(arm,size=0x14) addr:0x20a5f58 @@ -2833,7 +2833,7 @@ _ZN5Actor8vfunc_b0Ev kind:function(arm,size=0x4) addr:0x20c322c _ZN5Actor10GetLinkPosEP5Vec3p kind:function(arm,size=0x60) addr:0x20c3230 _ZN5Actor15GetLinkDummyPosEP5Vec3p kind:function(arm,size=0x98) addr:0x20c3290 _ZN19Actor_UnkStruct_09cC2Ev kind:function(arm,size=0x20) addr:0x20c3328 -func_ov000_020c3348 kind:function(arm,size=0x24) addr:0x20c3348 +_Z19func_ov000_020c3348P17ActorSpawnOptions kind:function(arm,size=0x24) addr:0x20c3348 func_ov000_020c336c kind:function(thumb,size=0x1a) addr:0x20c336c func_ov000_020c3388 kind:function(thumb,size=0x28) addr:0x20c3388 func_ov000_020c33b0 kind:function(thumb,size=0x24) addr:0x20c33b0 @@ -3588,19 +3588,19 @@ func_ov000_020d6c5c kind:function(arm,size=0xd4) addr:0x20d6c5c func_ov000_020d6d30 kind:function(arm,size=0xe4) addr:0x20d6d30 func_ov000_020d6e14 kind:function(arm,size=0x2c) addr:0x20d6e14 func_ov000_020d6e40 kind:function(arm,size=0x264) addr:0x20d6e40 -func_ov000_020d70a4 kind:function(arm,size=0xc8) addr:0x20d70a4 +_Z19func_ov000_020d70a4Piiii kind:function(arm,size=0xc8) addr:0x20d70a4 func_ov000_020d716c kind:function(arm,size=0x14) addr:0x20d716c func_ov000_020d7180 kind:function(arm,size=0x20) addr:0x20d7180 func_ov000_020d71a0 kind:function(arm,size=0xc8) addr:0x20d71a0 func_ov000_020d7268 kind:function(arm,size=0xc) addr:0x20d7268 func_ov000_020d7274 kind:function(arm,size=0x44) addr:0x20d7274 -func_ov000_020d72b8 kind:function(arm,size=0x70) addr:0x20d72b8 +_Z19func_ov000_020d72b8Pi kind:function(arm,size=0x70) addr:0x20d72b8 func_ov000_020d7328 kind:function(arm,size=0x6c) addr:0x20d7328 func_ov000_020d7394 kind:function(arm,size=0x28) addr:0x20d7394 PlaySoundEffect kind:function(arm,size=0x34) addr:0x20d73bc func_ov000_020d73f0 kind:function(arm,size=0x14) addr:0x20d73f0 func_ov000_020d7404 kind:function(arm,size=0x20) addr:0x20d7404 -func_ov000_020d7424 kind:function(arm,size=0xc) addr:0x20d7424 +_Z19func_ov000_020d7424Pi kind:function(arm,size=0xc) addr:0x20d7424 func_ov000_020d7430 kind:function(arm,size=0x40) addr:0x20d7430 func_ov000_020d7470 kind:function(arm,size=0x1c) addr:0x20d7470 func_ov000_020d748c kind:function(arm,size=0x20) addr:0x20d748c @@ -4054,7 +4054,7 @@ data_ov000_020e250c kind:data(any) addr:0x20e250c data_ov000_020e2510 kind:data(any) addr:0x20e2510 data_ov000_020e2520 kind:data(any) addr:0x20e2520 data_ov000_020e2524 kind:data(any) addr:0x20e2524 -data_ov000_020e2528 kind:data(any) addr:0x20e2528 +@1495 kind:data(any) addr:0x20e2528 data_ov000_020e2544 kind:data(any) addr:0x20e2544 data_ov000_020e2568 kind:data(any) addr:0x20e2568 data_ov000_020e2588 kind:data(any) addr:0x20e2588 diff --git a/config/eur/arm9/overlays/ov004/symbols.txt b/config/eur/arm9/overlays/ov004/symbols.txt index 64c73de8..b78e8357 100644 --- a/config/eur/arm9/overlays/ov004/symbols.txt +++ b/config/eur/arm9/overlays/ov004/symbols.txt @@ -51,7 +51,7 @@ func_ov004_021026cc kind:function(thumb,size=0x24) addr:0x21026cc func_ov004_021026f0 kind:function(thumb,size=0x4c) addr:0x21026f0 func_ov004_0210273c kind:function(thumb,size=0xc) addr:0x210273c func_ov004_02102748 kind:function(thumb,size=0x26) addr:0x2102748 -func_ov004_02102770 kind:function(thumb,size=0x44) addr:0x2102770 +_Z19func_ov004_02102770Pi kind:function(thumb,size=0x44) addr:0x2102770 func_ov004_021027b4 kind:function(arm,size=0x28) addr:0x21027b4 func_ov004_021027dc kind:function(arm,size=0x4) addr:0x21027dc func_ov004_021027e0 kind:function(arm,size=0x14) addr:0x21027e0 @@ -72,7 +72,7 @@ func_ov004_02102aa0 kind:function(thumb,size=0x38) addr:0x2102aa0 func_ov004_02102ad8 kind:function(thumb,size=0x1e) addr:0x2102ad8 func_ov004_02102af8 kind:function(thumb,size=0x6) addr:0x2102af8 func_ov004_02102b00 kind:function(thumb,size=0x28) addr:0x2102b00 -func_ov004_02102b28 kind:function(thumb,size=0x54) addr:0x2102b28 +_Z19func_ov004_02102b28Pi kind:function(thumb,size=0x54) addr:0x2102b28 func_ov004_02102b7c kind:function(arm,size=0x14) addr:0x2102b7c func_ov004_02102b90 kind:function(arm,size=0x14) addr:0x2102b90 func_ov004_02102ba4 kind:function(arm,size=0x44) addr:0x2102ba4 @@ -86,7 +86,7 @@ func_ov004_02102da4 kind:function(thumb,size=0x44) addr:0x2102da4 func_ov004_02102de8 kind:function(thumb,size=0x2) addr:0x2102de8 func_ov004_02102dec kind:function(thumb,size=0x2c) addr:0x2102dec func_ov004_02102e18 kind:function(thumb,size=0x24) addr:0x2102e18 -func_ov004_02102e3c kind:function(thumb,size=0x1c) addr:0x2102e3c +_Z19func_ov004_02102e3cPi kind:function(thumb,size=0x1c) addr:0x2102e3c func_ov004_02102e58 kind:function(thumb,size=0x5ec) addr:0x2102e58 func_ov004_02103444 kind:function(thumb,size=0xb8) addr:0x2103444 func_ov004_021034fc kind:function(thumb,size=0xbc) addr:0x21034fc diff --git a/config/eur/arm9/overlays/ov012/symbols.txt b/config/eur/arm9/overlays/ov012/symbols.txt index 84b02182..350d7c30 100644 --- a/config/eur/arm9/overlays/ov012/symbols.txt +++ b/config/eur/arm9/overlays/ov012/symbols.txt @@ -665,7 +665,7 @@ func_ov012_0212b31c kind:function(arm,size=0x20) addr:0x212b31c func_ov012_0212b33c kind:function(arm,size=0xc) addr:0x212b33c func_ov012_0212b348 kind:function(arm,size=0x8) addr:0x212b348 func_ov012_0212b350 kind:function(arm,size=0x8) addr:0x212b350 -func_ov012_0212b358 kind:function(arm,size=0xf8) addr:0x212b358 +_Z19func_ov012_0212b358P7MapBaseii kind:function(arm,size=0xf8) addr:0x212b358 func_ov012_0212b450 kind:function(arm,size=0x88) addr:0x212b450 func_ov012_0212b4d8 kind:function(arm,size=0x90) addr:0x212b4d8 func_ov012_0212b568 kind:function(arm,size=0x94) addr:0x212b568 diff --git a/config/eur/arm9/overlays/ov015/symbols.txt b/config/eur/arm9/overlays/ov015/symbols.txt index 325923f3..1c160f1b 100644 --- a/config/eur/arm9/overlays/ov015/symbols.txt +++ b/config/eur/arm9/overlays/ov015/symbols.txt @@ -253,7 +253,7 @@ func_ov015_02128b9c kind:function(arm,size=0x90) addr:0x2128b9c func_ov015_02128c2c kind:function(arm,size=0x140) addr:0x2128c2c func_ov015_02128d6c kind:function(arm,size=0x20) addr:0x2128d6c func_ov015_02128d8c kind:function(arm,size=0x4c) addr:0x2128d8c -func_ov015_02128dd8 kind:function(arm,size=0xac) addr:0x2128dd8 +_Z19func_ov015_02128dd8P7MapBaseii kind:function(arm,size=0xac) addr:0x2128dd8 func_ov015_02128e84 kind:function(arm,size=0xcc) addr:0x2128e84 func_ov015_02128f50 kind:function(arm,size=0xd4) addr:0x2128f50 func_ov015_02129024 kind:function(arm,size=0x220) addr:0x2129024 @@ -287,10 +287,10 @@ func_ov015_02129b30 kind:function(arm,size=0x8) addr:0x2129b30 func_ov015_02129b38 kind:function(arm,size=0x18) addr:0x2129b38 func_ov015_02129b50 kind:function(arm,size=0xb4) addr:0x2129b50 func_ov015_02129c04 kind:function(arm,size=0x10) addr:0x2129c04 -func_ov015_02129c14 kind:function(arm,size=0x10) addr:0x2129c14 -func_ov015_02129c24 kind:function(arm,size=0x10) addr:0x2129c24 -func_ov015_02129c34 kind:function(arm,size=0x10) addr:0x2129c34 -func_ov015_02129c44 kind:function(arm,size=0x10) addr:0x2129c44 +_Z19func_ov015_02129c14P7MapBase kind:function(arm,size=0x10) addr:0x2129c14 +_Z19func_ov015_02129c24P7MapBaseP5Vec3pS2_ kind:function(arm,size=0x10) addr:0x2129c24 +_Z19func_ov015_02129c34P7MapBasei kind:function(arm,size=0x10) addr:0x2129c34 +_Z19func_ov015_02129c44P7MapBasei kind:function(arm,size=0x10) addr:0x2129c44 func_ov015_02129c54 kind:function(arm,size=0x50) addr:0x2129c54 func_ov015_02129ca4 kind:function(arm,size=0x44) addr:0x2129ca4 func_ov015_02129ce8 kind:function(arm,size=0xac) addr:0x2129ce8 @@ -1986,7 +1986,7 @@ func_ov015_021847bc kind:function(arm,size=0x7c) addr:0x21847bc func_ov015_02184838 kind:function(arm,size=0xa4) addr:0x2184838 func_ov015_021848dc kind:function(arm,size=0x8c) addr:0x21848dc func_ov015_02184968 kind:function(arm,size=0x3c) addr:0x2184968 -func_ov015_021849a4 kind:function(arm,size=0x1c) addr:0x21849a4 +_Z19func_ov015_021849a4Pi kind:function(arm,size=0x1c) addr:0x21849a4 func_ov015_021849c0 kind:function(arm,size=0x1c) addr:0x21849c0 func_ov015_021849dc kind:function(arm,size=0x10) addr:0x21849dc func_ov015_021849ec kind:function(arm,size=0x54) addr:0x21849ec diff --git a/config/eur/arm9/overlays/ov017/symbols.txt b/config/eur/arm9/overlays/ov017/symbols.txt index 9b7a4935..756ad603 100644 --- a/config/eur/arm9/overlays/ov017/symbols.txt +++ b/config/eur/arm9/overlays/ov017/symbols.txt @@ -1,6 +1,6 @@ -func_ov017_0215b4a0 kind:function(arm,size=0x2c) addr:0x215b4a0 +_Z19func_ov017_0215b4a0P7MapBaseii kind:function(arm,size=0x2c) addr:0x215b4a0 func_ov017_0215b4cc kind:function(arm,size=0x1c) addr:0x215b4cc -func_ov017_0215b4e8 kind:function(thumb,size=0xf0) addr:0x215b4e8 +_Z19func_ov017_0215b4e8P7MapBaseii kind:function(thumb,size=0xf0) addr:0x215b4e8 func_ov017_0215b5d8 kind:function(thumb,size=0x94) addr:0x215b5d8 func_ov017_0215b66c kind:function(thumb,size=0x9c) addr:0x215b66c func_ov017_0215b708 kind:function(thumb,size=0x5c) addr:0x215b708 diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index 0d64be3f..5ebae6aa 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -478,7 +478,7 @@ func_0200c7c4 kind:function(arm,size=0x30) addr:0x200c7c4 func_0200c7f4 kind:function(arm,size=0x30) addr:0x200c7f4 func_0200c824 kind:function(arm,size=0x54) addr:0x200c824 func_0200c878 kind:function(arm,size=0x58) addr:0x200c878 -sprintf kind:function(arm,size=0x28) addr:0x200c8d0 +_Z7sprintfrPcrPKcz kind:function(arm,size=0x28) addr:0x200c8d0 vsprintf kind:function(arm,size=0x18) addr:0x200c8f8 va_sprintf kind:function(arm,size=0x28) addr:0x200c910 vsnprintf kind:function(arm,size=0x8fc) addr:0x200c938 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 3d96d716..ff058d9f 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -488,11 +488,11 @@ func_ov000_0208208c kind:function(arm,size=0x14) addr:0x208202c func_ov000_020820a0 kind:function(arm,size=0x1c) addr:0x2082040 func_ov000_020820bc kind:function(arm,size=0x14) addr:0x208205c func_ov000_020820d0 kind:function(arm,size=0x1c) addr:0x2082070 -_ZN10MapManager18func_ov00_020820ecEPi kind:function(arm,size=0x10) addr:0x208208c +_ZN10MapManager24GetCourseDungeonProgressEP14CourseProgress kind:function(arm,size=0x10) addr:0x208208c _ZN10MapManager18func_ov00_020820fcEiii kind:function(arm,size=0x10) addr:0x208209c -_ZN10MapManager18func_ov00_0208210cEii kind:function(arm,size=0x200) addr:0x20820ac -_ZN10MapManager18func_ov00_0208230cEi kind:function(arm,size=0x3c) addr:0x20822ac -_ZN10MapManager18func_ov00_02082348Ei kind:function(arm,size=0x5c) addr:0x20822e8 +_ZN10MapManager18func_ov00_0208210cEiPi kind:function(arm,size=0x200) addr:0x20820ac +_ZN10MapManager18func_ov00_0208230cEPi kind:function(arm,size=0x3c) addr:0x20822ac +_ZN10MapManager18func_ov00_02082348EPi kind:function(arm,size=0x5c) addr:0x20822e8 _ZN10MapManager18func_ov00_020823a4Ei kind:function(arm,size=0x10) addr:0x2082344 _ZN10MapManager18func_ov00_020823b4Ev kind:function(arm,size=0x10) addr:0x2082354 _ZN10MapManager18func_ov00_020823c4EPii kind:function(arm,size=0x10) addr:0x2082364 @@ -501,7 +501,7 @@ _ZN10MapManager18func_ov00_020823e4Ei kind:function(arm,size=0x10) addr:0x208238 _ZN10MapManager16MapData_vfunc_b4Ev kind:function(arm,size=0x18) addr:0x2082394 _ZN10MapManager16MapData_vfunc_9cEv kind:function(arm,size=0x18) addr:0x20823ac _ZN10MapManager18func_ov00_02082424Ev kind:function(arm,size=0x30) addr:0x20823c4 -_ZN10MapManager18func_ov00_02082454Eii kind:function(arm,size=0x40) addr:0x20823f4 +_ZN10MapManager18func_ov00_02082454EP5Vec3pS1_ kind:function(arm,size=0x40) addr:0x20823f4 _ZN10MapManager18func_ov00_02082494Ei kind:function(arm,size=0x38) addr:0x2082434 _ZN10MapManager18func_ov00_020824ccEi kind:function(arm,size=0x38) addr:0x208246c _ZN10MapManager18func_ov00_02082504Ev kind:function(arm,size=0x34) addr:0x20824a4 @@ -509,145 +509,145 @@ _ZN10MapManager18func_ov00_02082538Ev kind:function(arm,size=0x5c) addr:0x20824d _ZN10MapManager18func_ov00_02082594Ev kind:function(arm,size=0x18) addr:0x2082534 _ZN10MapManager18func_ov00_020825acEv kind:function(arm,size=0x18) addr:0x208254c _ZN10MapManager17GetCourseFilePathEPcS0_ kind:function(arm,size=0x20) addr:0x2082564 -_ZN10MapManager18func_ov00_020825e4Eii kind:function(arm,size=0x30) addr:0x2082584 -_ZN10MapManager18func_ov00_02082614Eii kind:function(arm,size=0x24) addr:0x20825b4 -_ZN10MapManager16MapData_vfunc_b0Ev kind:function(arm,size=0x18) addr:0x20825d8 +_ZN10MapManager18func_ov00_020825e4EiPc kind:function(arm,size=0x30) addr:0x2082584 +_ZN10MapManager18func_ov00_02082614EPci kind:function(arm,size=0x24) addr:0x20825b4 +_ZN10MapManager16MapData_vfunc_b0Eii kind:function(arm,size=0x18) addr:0x20825d8 _ZN10MapManager18func_ov00_02082650Eiii kind:function(arm,size=0x10) addr:0x20825f0 _ZN10MapManager18func_ov00_02082660Eii kind:function(arm,size=0x10) addr:0x2082600 _ZN10MapManager18func_ov00_02082670Eii kind:function(arm,size=0x10) addr:0x2082610 _ZN10MapManager18func_ov00_02082680Eii kind:function(arm,size=0x20) addr:0x2082620 -_ZN10MapManager18func_ov00_020826a0Eiii kind:function(arm,size=0x20) addr:0x2082640 +_ZN10MapManager18func_ov00_020826a0Eii kind:function(arm,size=0x20) addr:0x2082640 _ZN10MapManager9CreateMapEiii kind:function(arm,size=0x100) addr:0x2082660 _ZN10MapManager10DestroyMapEv kind:function(arm,size=0x30) addr:0x2082760 _ZN10MapManager16MapData_vfunc_44Ev kind:function(arm,size=0x18) addr:0x2082790 -_ZN10MapManager18func_ov00_02082808Ev kind:function(arm,size=0xb8) addr:0x20827a8 -_ZN10MapManager16MapData_vfunc_7cEv kind:function(arm,size=0x20) addr:0x2082860 -_ZN10MapManager16MapData_vfunc_84Ev kind:function(arm,size=0x18) addr:0x2082880 +_ZN10MapManager18func_ov00_02082808Eb kind:function(arm,size=0xb8) addr:0x20827a8 +_ZN10MapManager16MapData_vfunc_7cEiPiiPs kind:function(arm,size=0x20) addr:0x2082860 +_ZN10MapManager16MapData_vfunc_84Ei kind:function(arm,size=0x18) addr:0x2082880 _ZN10MapManager18func_ov00_020828f8EPi kind:function(arm,size=0x10) addr:0x2082898 -_ZN10MapManager20GetCourseData_Unk_b0Ev kind:function(arm,size=0xc) addr:0x20828a8 +_ZN10MapManager10GetNumMapsEv kind:function(arm,size=0xc) addr:0x20828a8 _ZN10MapManager18func_ov00_02082914Ei kind:function(arm,size=0x1b8) addr:0x20828b4 _ZN10MapManager18func_ov00_02082accEv kind:function(arm,size=0x10) addr:0x2082a6c _ZN10MapManager18func_ov00_02082adcEv kind:function(arm,size=0x18) addr:0x2082a7c _ZN10MapManager18func_ov00_02082af4Ev kind:function(arm,size=0x48) addr:0x2082a94 -_ZN10MapManager18func_ov00_02082b3cEi kind:function(arm,size=0x1cc) addr:0x2082adc +_ZN10MapManager18func_ov00_02082b3cEPiP5Vec2b kind:function(arm,size=0x1cc) addr:0x2082adc _ZN10MapManager18func_ov00_02082d08Ev kind:function(arm,size=0x20) addr:0x2082ca8 -_ZN10MapManager20GetCourseData_Unk_1cEv kind:function(arm,size=0xc) addr:0x2082cc8 -_ZN10MapManager20GetCourseData_Unk_1dEv kind:function(arm,size=0xc) addr:0x2082cd4 +_ZN10MapManager17GetCurrentMapPosXEv kind:function(arm,size=0xc) addr:0x2082cc8 +_ZN10MapManager17GetCurrentMapPosYEv kind:function(arm,size=0xc) addr:0x2082cd4 _ZN10MapManager18func_ov00_02082d40Ev kind:function(arm,size=0x34) addr:0x2082ce0 _ZN10MapManager18func_ov00_02082d74Ei kind:function(arm,size=0x10) addr:0x2082d14 -_ZN10MapManager18func_ov00_02082d84Ev kind:function(arm,size=0x98) addr:0x2082d24 +_ZN10MapManager18func_ov00_02082d84EP5Vec2bPiS2_ kind:function(arm,size=0x98) addr:0x2082d24 _ZN10MapManager18func_ov00_02082e1cEPiS0_ kind:function(arm,size=0x250) addr:0x2082dbc -_ZN10MapManager18func_ov00_0208306cEv kind:function(arm,size=0xf0) addr:0x208300c +_ZN10MapManager18func_ov00_0208306cEPiS0_ kind:function(arm,size=0xf0) addr:0x208300c _ZN10MapManager18func_ov00_0208315cEPiS0_ kind:function(arm,size=0xe8) addr:0x20830fc -_ZN10MapManager18func_ov00_02083244EjPiS0_S0_ kind:function(arm,size=0x54) addr:0x20831e4 -_ZN10MapManager18func_ov00_02083298EjPiS0_S0_ kind:function(arm,size=0x74) addr:0x2083238 +_ZN10MapManager18func_ov00_02083244EjP5Vec3pPiS2_ kind:function(arm,size=0x54) addr:0x20831e4 +_ZN10MapManager18func_ov00_02083298EjP5Vec3pPiS2_ kind:function(arm,size=0x74) addr:0x2083238 _ZN10MapManager21GetCourseData_Unk_25cEv kind:function(arm,size=0xc) addr:0x20832ac -_ZN10MapManager18func_ov00_02083318Ei kind:function(arm,size=0x10) addr:0x20832b8 +_ZN10MapManager15IsMapInMainGridEj kind:function(arm,size=0x10) addr:0x20832b8 _ZN10MapManager18func_ov00_02083328Ev kind:function(arm,size=0x1c) addr:0x20832c8 -_ZN10MapManager20GetCourseData_Unk_86Ev kind:function(arm,size=0xc) addr:0x20832e4 -_ZN10MapManager20GetCourseData_Unk_87Ev kind:function(arm,size=0xc) addr:0x20832f0 -_ZN10MapManager17Get_MapData_Unk28Ev kind:function(arm,size=0xc) addr:0x20832fc -_ZN10MapManager17Get_MapData_Unk2aEv kind:function(arm,size=0xc) addr:0x2083308 +_ZN10MapManager22GetCourseMainGridSizeXEv kind:function(arm,size=0xc) addr:0x20832e4 +_ZN10MapManager22GetCourseMainGridSizeYEv kind:function(arm,size=0xc) addr:0x20832f0 +_ZN10MapManager11GetMapWidthEv kind:function(arm,size=0xc) addr:0x20832fc +_ZN10MapManager12GetMapHeightEv kind:function(arm,size=0xc) addr:0x2083308 _ZN10MapManager18func_ov00_02083374Ev kind:function(arm,size=0x10) addr:0x2083314 _ZN10MapManager18func_ov00_02083384Ev kind:function(arm,size=0x10) addr:0x2083324 _ZN10MapManager13GetCourseMinXEv kind:function(arm,size=0xc) addr:0x2083334 _ZN10MapManager13GetCourseMinZEv kind:function(arm,size=0xc) addr:0x2083340 _ZN10MapManager13GetCourseMaxXEv kind:function(arm,size=0xc) addr:0x208334c _ZN10MapManager13GetCourseMaxZEv kind:function(arm,size=0xc) addr:0x2083358 -_ZN10MapManager18func_ov00_020833c4Ev kind:function(arm,size=0xc) addr:0x2083364 -_ZN10MapManager18func_ov00_020833d0Ev kind:function(arm,size=0xc) addr:0x2083370 -_ZN10MapManager18func_ov00_020833dcEv kind:function(arm,size=0xc) addr:0x208337c -_ZN10MapManager18func_ov00_020833e8Ev kind:function(arm,size=0xc) addr:0x2083388 -_ZN10MapManager18Get_MapData_Unk_d0Ev kind:function(arm,size=0xc) addr:0x2083394 -_ZN10MapManager18Get_MapData_Unk_d8Ev kind:function(arm,size=0xc) addr:0x20833a0 -_ZN10MapManager17GetMapData_Unk_dcEP5Vec3p kind:function(arm,size=0x20) addr:0x20833ac -_ZN10MapManager17GetMapData_Unk_e8EP5Vec3p kind:function(arm,size=0x20) addr:0x20833cc -_ZN10MapManager17GetMapData_Unk_d0EP5Vec3p kind:function(arm,size=0x20) addr:0x20833ec +_ZN10MapManager10GetMapMinXEv kind:function(arm,size=0xc) addr:0x2083364 +_ZN10MapManager10GetMapMinZEv kind:function(arm,size=0xc) addr:0x2083370 +_ZN10MapManager10GetMapMaxXEv kind:function(arm,size=0xc) addr:0x208337c +_ZN10MapManager10GetMapMaxZEv kind:function(arm,size=0xc) addr:0x2083388 +_ZN10MapManager13GetMapCenterXEv kind:function(arm,size=0xc) addr:0x2083394 +_ZN10MapManager13GetMapCenterZEv kind:function(arm,size=0xc) addr:0x20833a0 +_ZN10MapManager15GetMapMinBoundsEP5Vec3p kind:function(arm,size=0x20) addr:0x20833ac +_ZN10MapManager15GetMapMaxBoundsEP5Vec3p kind:function(arm,size=0x20) addr:0x20833cc +_ZN10MapManager12GetMapCenterEP5Vec3p kind:function(arm,size=0x20) addr:0x20833ec _ZN10MapManager18func_ov00_0208346cEP4AABB kind:function(arm,size=0x50) addr:0x208340c _ZN10MapManager18func_ov00_020834bcEP5Vec3pii kind:function(arm,size=0x68) addr:0x208345c _ZN10MapManager18func_ov00_02083524EP5Vec3pii kind:function(arm,size=0x3c) addr:0x20834c4 -_ZN10MapManager18func_ov00_02083560EiPS_j kind:function(arm,size=0x10) addr:0x2083500 -_ZN10MapManager18func_ov00_02083570Eii kind:function(arm,size=0x18) addr:0x2083510 +_ZN10MapManager18func_ov00_02083560EP5Vec2bPS_j kind:function(arm,size=0x10) addr:0x2083500 +_ZN10MapManager18func_ov00_02083570Ehh kind:function(arm,size=0x18) addr:0x2083510 _ZN10MapManager18func_ov00_02083588Ev kind:function(arm,size=0x1c) addr:0x2083528 _ZN10MapManager18func_ov00_020835a4Ev kind:function(arm,size=0x10) addr:0x2083544 _ZN10MapManager18func_ov00_020835b4Ev kind:function(arm,size=0x10) addr:0x2083554 _ZN10MapManager18func_ov00_020835c4Eii kind:function(arm,size=0x20) addr:0x2083564 -_ZN10MapManager18func_ov00_020835e4EiPiS0_ kind:function(arm,size=0x10) addr:0x2083584 +_ZN10MapManager18func_ov00_020835e4EiPiPc kind:function(arm,size=0x10) addr:0x2083584 _ZN10MapManager18func_ov00_020835f4Ei kind:function(arm,size=0x10) addr:0x2083594 _ZN10MapManager18func_ov00_02083604Ei kind:function(arm,size=0x10) addr:0x20835a4 _ZN10MapManager18func_ov00_02083614Ei kind:function(arm,size=0x10) addr:0x20835b4 -_ZN10MapManager14GetEntrancePosEP5Vec3pi kind:function(arm,size=0x40) addr:0x20835c4 -_ZN10MapManager18func_ov00_02083664EP5Vec3pi kind:function(arm,size=0x58) addr:0x2083604 -_ZN10MapManager18func_ov00_020836bcEjPi kind:function(arm,size=0x10) addr:0x208365c -_ZN10MapManager23GetTriggerBoundingBoxesEjP4AABBj kind:function(arm,size=0x10) addr:0x208366c -_ZN10MapManager18func_ov00_020836dcEii kind:function(arm,size=0x94) addr:0x208367c -_ZN10MapManager18func_ov00_02083770Eji kind:function(arm,size=0x10) addr:0x2083710 -_ZN10MapManager18func_ov00_02083780Ei kind:function(arm,size=0x10) addr:0x2083720 +_ZN10MapManager14GetEntrancePosEP8Entrancei kind:function(arm,size=0x40) addr:0x20835c4 +_ZN10MapManager18func_ov00_02083664EP8Entrancei kind:function(arm,size=0x58) addr:0x2083604 +_ZN10MapManager21GetTriggerBoundingBoxEiP4AABB kind:function(arm,size=0x10) addr:0x208365c +_ZN10MapManager23GetTriggerBoundingBoxesEiP4AABBi kind:function(arm,size=0x10) addr:0x208366c +_ZN10MapManager18func_ov00_020836dcEjj kind:function(arm,size=0x94) addr:0x208367c +_ZN10MapManager23IsTriggerTypeOverlappedEjP5Vec3p kind:function(arm,size=0x10) addr:0x2083710 +_ZN10MapManager21GetOverlappingTriggerEP5Vec3p kind:function(arm,size=0x10) addr:0x2083720 _ZN10MapManager18func_ov00_02083790Ei kind:function(arm,size=0xb0) addr:0x2083730 _ZN10MapManager18func_ov00_02083840Ei kind:function(arm,size=0x88) addr:0x20837e0 -_ZN10MapManager18func_ov00_020838c8Ei kind:function(arm,size=0x10) addr:0x2083868 +_ZN10MapManager10AddTriggerEi kind:function(arm,size=0x10) addr:0x2083868 _ZN10MapManager18func_ov00_020838d8Ei kind:function(arm,size=0x10) addr:0x2083878 -_ZN10MapManager18func_ov00_020838e8EjPi kind:function(arm,size=0x10) addr:0x2083888 -_ZN10MapManager18func_ov00_020838f8EPi kind:function(arm,size=0x10) addr:0x2083898 -_ZN10MapManager18func_ov00_02083908EcPi kind:function(arm,size=0x10) addr:0x20838a8 -_ZN10MapManager18func_ov00_02083918EiPi kind:function(arm,size=0x10) addr:0x20838b8 -_ZN10MapManager18func_ov00_02083928EPci kind:function(arm,size=0x10) addr:0x20838c8 +_ZN10MapManager8FindExitEjP4Exit kind:function(arm,size=0x10) addr:0x2083888 +_ZN10MapManager18func_ov00_020838f8EP4Exit kind:function(arm,size=0x10) addr:0x2083898 +_ZN10MapManager18func_ov00_02083908EcP15CameraViewpoint kind:function(arm,size=0x10) addr:0x20838a8 +_ZN10MapManager18func_ov00_02083918EiP15CameraViewpoint kind:function(arm,size=0x10) addr:0x20838b8 +_ZN10MapManager19GetCurrentViewpointEP15CameraViewpointi kind:function(arm,size=0x10) addr:0x20838c8 _ZN10MapManager18func_ov00_02083938Ei kind:function(arm,size=0x10) addr:0x20838d8 -_ZN10MapManager18Set_MapData_Unk_16Eci kind:function(arm,size=0x10) addr:0x20838e8 +_ZN10MapManager21SetCurrentViewpointIdEci kind:function(arm,size=0x10) addr:0x20838e8 _ZN10MapManager18func_ov00_02083958Ei kind:function(arm,size=0x10) addr:0x20838f8 _ZN10MapManager18func_ov00_02083968EjPc kind:function(arm,size=0x10) addr:0x2083908 -_ZN10MapManager18func_ov00_02083978EiP5Vec3p kind:function(arm,size=0x3c) addr:0x2083918 +_ZN10MapManager18func_ov00_02083978EP5Vec3pS1_ kind:function(arm,size=0x3c) addr:0x2083918 _ZN10MapManager18func_ov00_020839b4Ei kind:function(arm,size=0x10) addr:0x2083954 _ZN10MapManager18func_ov00_020839c4Ei kind:function(arm,size=0x10) addr:0x2083964 -_ZN10MapManager18func_ov00_020839d4Ev kind:function(arm,size=0x24) addr:0x2083974 -_ZN10MapManager18func_ov00_020839f8Ev kind:function(arm,size=0x24) addr:0x2083998 +_ZN10MapManager18func_ov00_020839d4Ei kind:function(arm,size=0x24) addr:0x2083974 +_ZN10MapManager18func_ov00_020839f8Ei kind:function(arm,size=0x24) addr:0x2083998 _ZN10MapManager18func_ov00_02083a1cEP5Vec2bPS_P5Vec3p kind:function(arm,size=0x38) addr:0x20839bc -_ZN10MapManager18func_ov00_02083a54EiPS_iii kind:function(arm,size=0x130) addr:0x20839f4 -_ZN10MapManager18func_ov00_02083b84Ev kind:function(arm,size=0x28) addr:0x2083b24 -_ZN10MapManager18func_ov00_02083bacEv kind:function(arm,size=0x28) addr:0x2083b4c -_ZN10MapManager18func_ov00_02083bd4Ev kind:function(arm,size=0x28) addr:0x2083b74 -_ZN10MapManager18func_ov00_02083bfcEv kind:function(arm,size=0x28) addr:0x2083b9c +_ZN10MapManager18func_ov00_02083a54EPhPS_PiiS2_ kind:function(arm,size=0x130) addr:0x20839f4 +_ZN10MapManager13GetTileStartXEi kind:function(arm,size=0x28) addr:0x2083b24 +_ZN10MapManager13GetTileStartZEi kind:function(arm,size=0x28) addr:0x2083b4c +_ZN10MapManager11GetTileEndXEi kind:function(arm,size=0x28) addr:0x2083b74 +_ZN10MapManager11GetTileEndZEi kind:function(arm,size=0x28) addr:0x2083b9c _ZN10MapManager18func_ov00_02083c24Ei kind:function(arm,size=0x2c) addr:0x2083bc4 _ZN10MapManager18func_ov00_02083c50Ei kind:function(arm,size=0x2c) addr:0x2083bf0 _ZN10MapManager18func_ov00_02083c7cEP5Vec3p5Vec2b kind:function(arm,size=0x6c) addr:0x2083c1c -_ZN10MapManager18func_ov00_02083ce8Ecccci kind:function(arm,size=0x14c) addr:0x2083c88 +_ZN10MapManager18func_ov00_02083ce8EP5Vec3pjij kind:function(arm,size=0x14c) addr:0x2083c88 _ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x2083dd4 -_ZN10MapManager16MapData_vfunc_60Ev kind:function(arm,size=0x18) addr:0x2083df8 -_ZN10MapManager18func_ov00_02083e70Ev kind:function(arm,size=0x70) addr:0x2083e10 -_ZN10MapManager16MapData_vfunc_68Ev kind:function(arm,size=0x18) addr:0x2083e80 -_ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_i kind:function(arm,size=0x4c) addr:0x2083e98 -_ZN10MapManager18func_ov00_02083f44EP5Vec3p kind:function(arm,size=0x3c) addr:0x2083ee4 -_ZN10MapManager16MapData_vfunc_6cEv kind:function(arm,size=0x18) addr:0x2083f20 -_ZN10MapManager16MapData_vfunc_70Ev kind:function(arm,size=0x18) addr:0x2083f38 +_ZN10MapManager16MapData_vfunc_60EP5Vec2b kind:function(arm,size=0x18) addr:0x2083df8 +_ZN10MapManager18func_ov00_02083e70EP5Vec2b kind:function(arm,size=0x70) addr:0x2083e10 +_ZN10MapManager16MapData_vfunc_68EP5Vec3pb kind:function(arm,size=0x18) addr:0x2083e80 +_ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_b kind:function(arm,size=0x4c) addr:0x2083e98 +_ZN10MapManager18func_ov00_02083f44EP5Vec3pb kind:function(arm,size=0x3c) addr:0x2083ee4 +_ZN10MapManager16MapData_vfunc_6cEiii kind:function(arm,size=0x18) addr:0x2083f20 +_ZN10MapManager16MapData_vfunc_70EP5Vec3p kind:function(arm,size=0x18) addr:0x2083f38 _ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x2083f50 _ZN10MapManager18GetTileWorldBoundsEP5Vec2bP4AABB kind:function(arm,size=0x64) addr:0x2083fc4 -_ZN10MapManager16MapData_vfunc_54Ev kind:function(arm,size=0x18) addr:0x2084028 -_ZN10MapManager18func_ov00_020840a0Ecci kind:function(arm,size=0x24) addr:0x2084040 +_ZN10MapManager16MapData_vfunc_54EP5Vec2b kind:function(arm,size=0x18) addr:0x2084028 +_ZN10MapManager18func_ov00_020840a0Ecc kind:function(arm,size=0x24) addr:0x2084040 _ZN10MapManager16MapData_vfunc_78EP5Vec2b kind:function(arm,size=0x18) addr:0x2084064 -_ZN10MapManager18func_ov00_020840dcEv kind:function(arm,size=0x24) addr:0x208407c -_ZN10MapManager18func_ov00_02084100EiPS_ kind:function(arm,size=0x14) addr:0x20840a0 +_ZN10MapManager18func_ov00_020840dcEP5Vec2b kind:function(arm,size=0x24) addr:0x208407c +_ZN10MapManager18func_ov00_02084100EPiPS_ kind:function(arm,size=0x14) addr:0x20840a0 _ZN10MapManager17GetMapData_Unk_48Ev kind:function(arm,size=0xc) addr:0x20840b4 _ZN10MapManager17GetMapData_Unk_4cEv kind:function(arm,size=0xc) addr:0x20840c0 _ZN10MapManager18func_ov00_0208412cEv kind:function(arm,size=0x10) addr:0x20840cc _ZN10MapManager18func_ov00_0208413cEi kind:function(arm,size=0x10) addr:0x20840dc -_ZN10MapManager16MapData_vfunc_58Ev kind:function(arm,size=0x18) addr:0x20840ec -_ZN10MapManager18func_ov00_02084164Ev kind:function(arm,size=0x1a8) addr:0x2084104 +_ZN10MapManager16MapData_vfunc_58EP5Vec2bi kind:function(arm,size=0x18) addr:0x20840ec +_ZN10MapManager18func_ov00_02084164EP5Vec2b kind:function(arm,size=0x1a8) addr:0x2084104 _ZN10MapManager17GetMapData_Unk_0aEv kind:function(arm,size=0xc) addr:0x20842ac _ZN10MapManager17GetMapData_Unk_0bEv kind:function(arm,size=0xc) addr:0x20842b8 -_ZN10MapManager16MapData_vfunc_a4Ev kind:function(arm,size=0x18) addr:0x20842c4 -_ZN10MapManager18func_ov00_0208433cEP5Vec3pi kind:function(arm,size=0x60) addr:0x20842dc -_ZN10MapManager18func_ov00_0208439cEv kind:function(arm,size=0x50) addr:0x208433c +_ZN10MapManager16MapData_vfunc_a4EPc kind:function(arm,size=0x18) addr:0x20842c4 +_ZN10MapManager18func_ov00_0208433cEP5Vec3pP5Vec2s kind:function(arm,size=0x60) addr:0x20842dc +_ZN10MapManager18func_ov00_0208439cEP5Vec2sP5Vec3p kind:function(arm,size=0x50) addr:0x208433c _ZN10MapManager18func_ov00_020843ecEPi kind:function(arm,size=0x2ac) addr:0x208438c _ZN10MapManager17GetMapData_Unk_38Ev kind:function(arm,size=0xc) addr:0x2084638 _ZN10MapManager18func_ov00_020846a4Ev kind:function(arm,size=0x5c) addr:0x2084644 _ZN10MapManager18func_ov00_02084700Ev kind:function(arm,size=0x40) addr:0x20846a0 _ZN10MapManager18func_ov00_02084740Ev kind:function(arm,size=0xa0) addr:0x20846e0 _ZN10MapManager18func_ov00_020847e0Ev kind:function(arm,size=0x10) addr:0x2084780 -_ZN10MapManager18func_ov00_020847f0Ev kind:function(arm,size=0x48) addr:0x2084790 +_ZN10MapManager18func_ov00_020847f0Ei kind:function(arm,size=0x48) addr:0x2084790 _ZN10MapManager18func_ov00_02084838Ev kind:function(arm,size=0x80) addr:0x20847d8 _ZN10MapManager18func_ov00_020848b8Ev kind:function(arm,size=0x6c) addr:0x2084858 _ZN10MapManager18func_ov00_02084924Ej kind:function(arm,size=0x10) addr:0x20848c4 -_ZN10MapManager18func_ov00_02084934Ev kind:function(arm,size=0x50) addr:0x20848d4 +_ZN10MapManager18func_ov00_02084934EP5Vec3p kind:function(arm,size=0x50) addr:0x20848d4 _ZN10MapManager17GetMapData_Unk_06Ev kind:function(arm,size=0xc) addr:0x2084924 _ZN10MapManager17GetMapData_Unk_07Ev kind:function(arm,size=0xc) addr:0x2084930 _ZN10MapManager18func_ov00_0208499cEv kind:function(arm,size=0x24) addr:0x208493c @@ -659,31 +659,31 @@ _ZN10MapManager8SpawnNPCEP5Vec3pii kind:function(arm,size=0x68) addr:0x20849fc _ZN10MapManager18func_ov00_02084ac4Ej kind:function(arm,size=0x44) addr:0x2084a64 _ZN10MapManager10SetNumKeysEi kind:function(arm,size=0xc) addr:0x2084aa8 _ZN10MapManager10GetNumKeysEv kind:function(arm,size=0xc) addr:0x2084ab4 -_ZN10MapManager21SetCourseData_Unk_25cEc kind:function(arm,size=0xc) addr:0x2084ac0 -_ZN10MapManager21GetCourseData_Unk_25dEv kind:function(arm,size=0xc) addr:0x2084acc -_ZN10MapManager18func_ov00_02084b38Eiii kind:function(arm,size=0xa8) addr:0x2084ad8 -_ZN10MapManager18func_ov00_02084be0Eii kind:function(arm,size=0x7c) addr:0x2084b80 -_ZN10MapManager18func_ov00_02084c5cEii kind:function(arm,size=0x10) addr:0x2084bfc -_ZN10MapManager18func_ov00_02084c6cEi kind:function(arm,size=0x10) addr:0x2084c0c -_ZN10MapManager18func_ov00_02084c7cEi kind:function(arm,size=0x18) addr:0x2084c1c +_ZN10MapManager15SetBlueWarpOpenEb kind:function(arm,size=0xc) addr:0x2084ac0 +_ZN10MapManager15GetBlueWarpOpenEv kind:function(arm,size=0xc) addr:0x2084acc +_ZN10MapManager18func_ov00_02084b38Ejib kind:function(arm,size=0xa8) addr:0x2084ad8 +_ZN10MapManager18func_ov00_02084be0Eji kind:function(arm,size=0x7c) addr:0x2084b80 +_ZN10MapManager15SetMapDataFlag1Eib kind:function(arm,size=0x10) addr:0x2084bfc +_ZN10MapManager15GetMapDataFlag1Ei kind:function(arm,size=0x10) addr:0x2084c0c +_ZN10MapManager18func_ov00_02084c7cEib kind:function(arm,size=0x18) addr:0x2084c1c _ZN10MapManager18func_ov00_02084c94Ei kind:function(arm,size=0x1c) addr:0x2084c34 -_ZN10MapManager18func_ov00_02084cb0Ei kind:function(arm,size=0x18) addr:0x2084c50 +_ZN10MapManager18func_ov00_02084cb0Eib kind:function(arm,size=0x18) addr:0x2084c50 _ZN10MapManager18func_ov00_02084cc8Ei kind:function(arm,size=0x1c) addr:0x2084c68 -_ZN10MapManager18func_ov00_02084ce4Ei kind:function(arm,size=0x18) addr:0x2084c84 +_ZN10MapManager18func_ov00_02084ce4Eib kind:function(arm,size=0x18) addr:0x2084c84 _ZN10MapManager18func_ov00_02084cfcEi kind:function(arm,size=0x1c) addr:0x2084c9c _ZN10MapManager17GetMapData_Unk_09Ev kind:function(arm,size=0xc) addr:0x2084cb8 -_ZN10MapManager18func_ov00_02084d24Ecci kind:function(arm,size=0x28) addr:0x2084cc4 +_ZN10MapManager18func_ov00_02084d24Eccs kind:function(arm,size=0x28) addr:0x2084cc4 _ZN10MapManager18func_ov00_02084d4cEiiP5Vec3p kind:function(arm,size=0x170) addr:0x2084cec -_ZN10MapManager18func_ov00_02084ebcEi kind:function(arm,size=0x24c) addr:0x2084e5c +_ZN10MapManager18func_ov00_02084ebcEP5Vec3p kind:function(arm,size=0x24c) addr:0x2084e5c _ZN10MapManager18func_ov00_02085108EP5Vec3p kind:function(arm,size=0x174) addr:0x20850a8 -_ZN10MapManager18func_ov00_0208527cEv kind:function(arm,size=0x180) addr:0x208521c -_ZN10MapManager18func_ov00_020853fcEv kind:function(arm,size=0x198) addr:0x208539c +_ZN10MapManager18func_ov00_0208527cEPS_iPi kind:function(arm,size=0x180) addr:0x208521c +_ZN10MapManager18func_ov00_020853fcEPS_P5Vec3pPi kind:function(arm,size=0x198) addr:0x208539c _ZN10MapManager18func_ov00_02085594EP5Vec3p kind:function(arm,size=0x2a8) addr:0x2085534 -_ZN10MapManager18func_ov00_0208583cEiP5Vec3pi kind:function(arm,size=0x74) addr:0x20857dc -_ZN10MapManager18func_ov00_020858b0Ev kind:function(arm,size=0x184) addr:0x2085850 -_ZN10MapManager18func_ov00_02085a34Eii kind:function(arm,size=0x22c) addr:0x20859d4 -_ZN10MapManager18func_ov00_02085c60Eiiii kind:function(arm,size=0x3e4) addr:0x2085c00 -_ZN10MapManager18func_ov00_02086044Eiii kind:function(arm,size=0x240) addr:0x2085fe4 +_ZN10MapManager18func_ov00_0208583cEPS_P5Vec3pi kind:function(arm,size=0x74) addr:0x20857dc +_ZN10MapManager18func_ov00_020858b0EPS_P5Vec3pi kind:function(arm,size=0x184) addr:0x2085850 +_ZN10MapManager18func_ov00_02085a34EP5Vec3pi kind:function(arm,size=0x22c) addr:0x20859d4 +_ZN10MapManager18func_ov00_02085c60EP5Vec3pPiS2_j kind:function(arm,size=0x3e4) addr:0x2085c00 +_ZN10MapManager18func_ov00_02086044EP5Vec3pS1_i kind:function(arm,size=0x240) addr:0x2085fe4 _ZN10MapManager18func_ov00_02086284EPiP5Vec3pS2_itS2_S2_ kind:function(arm,size=0x800) addr:0x2086224 _ZN10MapManager18func_ov00_02086a84EPiP5Vec3pS2_iiiS2_S2_ kind:function(arm,size=0x24c) addr:0x2086a24 func_ov000_02086cd0 kind:function(arm,size=0x4) addr:0x2086c70 @@ -2833,7 +2833,7 @@ _ZN5Actor8vfunc_b0Ev kind:function(arm,size=0x4) addr:0x20c31cc _ZN5Actor10GetLinkPosEP5Vec3p kind:function(arm,size=0x60) addr:0x20c31d0 _ZN5Actor15GetLinkDummyPosEP5Vec3p kind:function(arm,size=0x98) addr:0x20c3230 _ZN19Actor_UnkStruct_09cC2Ev kind:function(arm,size=0x20) addr:0x20c32c8 -func_ov000_020c3348 kind:function(arm,size=0x24) addr:0x20c32e8 +_Z19func_ov000_020c3348P17ActorSpawnOptions kind:function(arm,size=0x24) addr:0x20c32e8 func_ov000_020c336c kind:function(thumb,size=0x1a) addr:0x20c330c func_ov000_020c3388 kind:function(thumb,size=0x28) addr:0x20c3328 func_ov000_020c33b0 kind:function(thumb,size=0x24) addr:0x20c3350 diff --git a/config/usa/arm9/overlays/ov004/symbols.txt b/config/usa/arm9/overlays/ov004/symbols.txt index 532f2002..9d88dbb9 100644 --- a/config/usa/arm9/overlays/ov004/symbols.txt +++ b/config/usa/arm9/overlays/ov004/symbols.txt @@ -51,7 +51,7 @@ func_ov004_021026cc kind:function(thumb,size=0x24) addr:0x210264c func_ov004_021026f0 kind:function(thumb,size=0x4c) addr:0x2102670 func_ov004_0210273c kind:function(thumb,size=0xc) addr:0x21026bc func_ov004_02102748 kind:function(thumb,size=0x26) addr:0x21026c8 -func_ov004_02102770 kind:function(thumb,size=0x44) addr:0x21026f0 +_Z19func_ov004_02102770Pi kind:function(thumb,size=0x44) addr:0x21026f0 func_ov004_021027b4 kind:function(arm,size=0x28) addr:0x2102734 func_ov004_021027dc kind:function(arm,size=0x4) addr:0x210275c func_ov004_021027e0 kind:function(arm,size=0x14) addr:0x2102760 diff --git a/include/Actor/ActorType.hpp b/include/Actor/ActorType.hpp index 1d7d5723..6101cd2c 100644 --- a/include/Actor/ActorType.hpp +++ b/include/Actor/ActorType.hpp @@ -78,6 +78,7 @@ enum ActorTypeId_ { ActorTypeId_BMTY = 'BMTY', ActorTypeId_BTRF = 'BTRF', ActorTypeId_CBLS = 'CBLS', + ActorTypeId_EVIC = 'EVIC', ActorTypeId_FLAL = 'FLAL', ActorTypeId_FLBM = 'FLBM', ActorTypeId_FLBT = 'FLBT', diff --git a/include/DTCM/UnkStruct_027e0d38.hpp b/include/DTCM/UnkStruct_027e0d38.hpp index b2e50a89..e544c60c 100644 --- a/include/DTCM/UnkStruct_027e0d38.hpp +++ b/include/DTCM/UnkStruct_027e0d38.hpp @@ -6,7 +6,9 @@ struct UnkStruct_027e0d38_Unk28 { /* 00 */ unk8 mUnk_00[0x34]; /* 34 */ bool mUnk_34; - /* 35 */ + /* 35 */ unk8 mUnk_35[0x27]; + /* 5c */ unk32 mUnk_5c[3]; + /* 68 */ }; struct UnkStruct_027e0d38 { diff --git a/include/DTCM/UnkStruct_027e0f64.hpp b/include/DTCM/UnkStruct_027e0f64.hpp index 33728a7e..975c6818 100644 --- a/include/DTCM/UnkStruct_027e0f64.hpp +++ b/include/DTCM/UnkStruct_027e0f64.hpp @@ -3,7 +3,10 @@ #include "global.h" #include "types.h" -struct UnkStruct_027e0f64 { +#include "Debug/DebugHierarchy.hpp" + +class UnkStruct_027e0f64 { +public: /* 0 */ DebugHierarchyBase *mUnk_0; /* 4 */ void *mUnk_4; /* 8 */ void *mUnk_8; diff --git a/include/Map/Course.hpp b/include/Map/Course.hpp index b9b11904..c09cbb4d 100644 --- a/include/Map/Course.hpp +++ b/include/Map/Course.hpp @@ -27,14 +27,15 @@ struct CourseProgress { }; class Course : public SysObject { - /* 000 */ unk32 mIndex; +public: + /* 000 */ s32 mIndex; /* 004 */ CourseType mType; /* 008 */ unk32 mUnk_008; /* 00c */ char mName[0x10]; /* 01c */ Vec2b mCurrMapPos; // position in the map grid /* 01e */ unk8 mUnk_01e; /* 01f */ unk8 mUnk_01f; - /* 020 */ unk8 mMapGrid[10][10]; + /* 020 */ u8 mMapGrid[10][10]; /* 084 */ Vec2b mMainGrid; // part of the grid where you can walk off screen to another map /* 086 */ Vec2b mMainGridSize; /* 088 */ s32 mScreenMapOffsetX; @@ -42,8 +43,8 @@ class Course : public SysObject { /* 090 */ unk32 mUnk_090; /* 094 */ unk32 mUnk_094; /* 098 */ AABB mBounds; - /* 0b0 */ s8 mNumMaps; - /* 0b1 */ unk8 mUnk_0b1; + /* 0b0 */ u8 mNumMaps; + /* 0b1 */ u8 mUnk_0b1; /* 0b2 */ unk8 mUnk_0b2; /* 0b3 */ unk8 mUnk_0b3; /* 0b4 */ unk32 mUnk_0b4; @@ -58,7 +59,7 @@ class Course : public SysObject { /* 25e */ unk8 mUnk_25e; /* 25f */ unk8 mUnk_25f; /* 260 */ unk32 mNumKeys; - /* 260 */ unk32 mFlags0[1]; + /* 264 */ unk32 mFlags0[1]; /* 268 */ unk32 mFlags1[1]; // knows which doors are open in a dungeon /* 26c */ @@ -77,7 +78,7 @@ class Course : public SysObject { void GetMRCFilePath(unk32 param_2, unk32 buf, unk32 param_4); void func_ov00_0207ce20(unk32 param_2, unk32 param_3, char *param_4, unk32 param_5); void func_ov00_0207ce4c(s32 param_2, s32 param_3, unk32 param_4, char *param_5, unk32 param_6); - bool func_ov00_0207d404(s32 param_2, unk32 param_3, unk32 param_4); + bool func_ov00_0207d404(s32 param_2, unk32 param_3, unk32 param_4, unk32 param_5); bool IsCurrentMapInMainGrid(); bool IsInMainGrid(s32 x, s32 y); bool IsMapInMainGrid(u32 map); @@ -107,7 +108,7 @@ class Course : public SysObject { bool GetMapDataFlag2(unk32 param_2); void SetMapDataFlag3(unk32 param_2, bool param_3); bool GetMapDataFlag3(unk32 param_2); - void SetMapDataFlag4(unk32 param_2, unk32 param_3); + void SetMapDataFlag4(unk32 param_2, bool param_3); bool GetMapDataFlag4(unk32 param_2); MapData *FindMapData(u32 map); MapData *FindCurrentMapData(); diff --git a/include/Map/Entrance.hpp b/include/Map/Entrance.hpp index 8d7d6a29..d8d1b751 100644 --- a/include/Map/Entrance.hpp +++ b/include/Map/Entrance.hpp @@ -8,10 +8,11 @@ #include "System/SysNew.hpp" class Entrance : public SysObject { +public: /* 00 */ Vec3p mPos; /* 0c */ unk16 mAngle; - /* 0e */ s8 mUnk_0e; - /* 0f */ unk8 mUnk_0f; + /* 0e */ u8 mId; + /* 0f */ // unk8 mUnk_0f; /* 10 */ s32 mUnk_10; /* 14 */ }; diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index 4c061620..f9768a81 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -66,7 +66,7 @@ public: /* 013 */ unk8 mUnk_013; /* 014 */ unk8 mUnk_014; /* 015 */ unk8 mUnk_015; - /* 016 */ unk8 mUnk_016[2]; + /* 016 */ unk8 mCurrViewpointId[2]; /* 018 */ unk8 mUnk_018[2]; /* 01a */ unk8 mUnk_01a; /* 01b */ unk8 mUnk_01b; @@ -76,8 +76,8 @@ public: /* 01f */ unk8 mUnk_01f; /* 020 */ unk32 mUnk_020; /* 024 */ unk32 mUnk_024; - /* 028 */ s16 mUnk_028; - /* 02a */ s16 mUnk_02a; + /* 028 */ s16 mWidth; + /* 02a */ s16 mHeight; /* 02c */ unk16 mUnk_02c; /* 02e */ unk16 mUnk_02e; /* 030 */ s16 mUnk_030; @@ -90,9 +90,8 @@ public: /* 048 */ u32 mUnk_048; /* 04c */ unk32 mUnk_04c; /* 050 */ unk8 mUnk_050[0x80]; - /* 0d0 */ Vec3p mUnk_0d0; - /* 0dc */ Vec3p mUnk_0dc; - /* 0e8 */ Vec3p mUnk_0e8; + /* 0d0 */ Vec3p mCenter; + /* 0dc */ AABB mBounds; /* 0f4 */ Vec3p mUnk_0f4; /* 100 */ std::vector mEntrances; /* 10c */ std::vector mTriggers; @@ -112,8 +111,8 @@ public: /* 180 */ MapBase_Unk_180 mUnk_180[2]; /* 188 */ unk8 mUnk_188[0x14]; /* 19c */ unk32 mUnk_19c; - /* 1a0 */ unk8 mUnk_1a0[0xc]; - /* 1ac */ unk32 mUnk_1ac; + /* 1a0 */ Vec3p mUnk_1a0; + /* 1ac */ s16 mUnk_1ac; /* 1b0 */ /* 00 */ virtual ~MapBase(); @@ -134,32 +133,32 @@ public: /* 40 */ virtual void vfunc_40(); /* 44 */ virtual void vfunc_44(); /* 48 */ virtual void vfunc_48(); - /* 4c */ virtual void vfunc_4c() = 0; + /* 4c */ virtual s32 vfunc_4c(); /* 50 */ virtual unk32 vfunc_50(); - /* 54 */ virtual unk32 vfunc_54(); - /* 58 */ virtual unk32 vfunc_58(); + /* 54 */ virtual unk32 vfunc_54(Vec2b *param_1); + /* 58 */ virtual unk32 vfunc_58(Vec2b *param_1, int param_2); /* 5c */ virtual unk32 vfunc_5c(); - /* 60 */ virtual unk32 vfunc_60(); + /* 60 */ virtual unk32 vfunc_60(Vec2b *param_1); /* 64 */ virtual unk32 vfunc_64(); - /* 68 */ virtual unk8 vfunc_68(unk32 param_2, unk32 param_3); + /* 68 */ virtual unk32 vfunc_68(Vec3p *param_1, bool param_2); /* 6c */ virtual unk8 vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4); /* 70 */ virtual unk32 vfunc_70(Vec3p *param_2); - /* 74 */ virtual s32 *vfunc_74(Vec3p *param_2); - /* 78 */ virtual unk32 vfunc_78(); - /* 7c */ virtual unk32 vfunc_7c(); + /* 74 */ virtual unk32 *vfunc_74(Vec3p *param_2); + /* 78 */ virtual unk32 *vfunc_78(Vec2b *param_1); + /* 7c */ virtual s32 vfunc_7c(s32 param_1, unk32 *param_2, s32 param_3, short param_4[4]); /* 80 */ virtual unk32 vfunc_80(); /* 84 */ virtual void vfunc_84(unk32 param_2); /* 88 */ virtual unk32 vfunc_88(); /* 8c */ virtual unk32 vfunc_8c(); - /* 90 */ virtual unk8 vfunc_90(unk32 param_2, unk32 param_3, unk32 param_4); + /* 90 */ virtual unk8 vfunc_90(Vec2b *param_2, unk32 param_3); /* 94 */ virtual void vfunc_94(); - /* 98 */ virtual void vfunc_98(); + /* 98 */ virtual void vfunc_98(unk32 param_2, unk32 param_3, unk32 param_4); /* 9c */ virtual void vfunc_9c(); /* a0 */ virtual void vfunc_a0(); - /* a4 */ virtual unk32 vfunc_a4(); + /* a4 */ virtual unk32 vfunc_a4(unk8 *param_1); /* a8 */ virtual void vfunc_a8(); /* ac */ virtual void vfunc_ac(); - /* b0 */ virtual unk8 vfunc_b0(unk32 param_2, unk32 param_3); + /* b0 */ virtual void vfunc_b0(unk32 param_2, unk32 param_3); /* b4 */ virtual void vfunc_b4(); /* b8 */ virtual unk32 vfunc_b8(); /* bc */ virtual void vfunc_bc(); @@ -172,16 +171,16 @@ public: void func_ov00_0207de68(unk32 param_2); void func_ov00_0207de88(); void func_ov00_0207dea0(bool param_2); - bool func_ov00_0207e08c(unk32 param_2, unk32 param_3); - s32 func_ov00_0207e0f0(unk32 param_2); - s32 func_ov00_0207e28c(unk32 param_2); + bool func_ov00_0207e08c(s32 *param_2, s32 param_3); + s32 func_ov00_0207e0f0(s32 param_2); + s32 func_ov00_0207e28c(s32 param_2); static unk8 func_ov00_0207e940(unk8 *param_1); static unk8 func_ov00_0207e968(); static unk8 func_ov00_0207e96c(); static unk8 func_ov00_0207f100(); bool func_ov00_0207f104(unk32 param_2, unk32 param_3); unk32 func_ov00_0207f1f4(Vec3p *param_2, unk32 *param_3); - unk8 func_ov00_0207f38c(unk32 param_2); + bool func_ov00_0207f38c(s32 *param_2); void func_ov00_0207f4a4(Vec2s *param_2, unk32 param_3); static void func_ov00_0207f53c(Vec2s *param_1, MapBase *param_2, Vec3p *param_3); static void func_ov00_0207f588(Vec2s *param_1, MapBase *param_2, Vec2b *param_3, unk32 param_4); @@ -191,42 +190,42 @@ public: s32 GetTileEndX(unk32 x); s32 GetTileEndZ(unk32 z); void GetTileBounds(Vec2b *tilePos, AABB *bounds); - unk8 GetClampedTileX(unk32 worldX); - unk8 GetClampedTileY(unk32 worldZ); - unk8 GetTileX(unk32 worldX); - unk8 GetTileY(unk32 worldZ); + s32 GetClampedTileX(s32 worldX); + s32 GetClampedTileY(s32 worldZ); + unk8 GetTileX(s32 worldX); + unk8 GetTileY(s32 worldZ); bool IsInBounds(Vec3p *tileWorldPos); s32 AddEntrance(Entrance *param_2); - unk8 FindEntrance(unk32 id); - unk8 func_ov00_0207f924(unk32 param_2); + Entrance *FindEntrance(unk32 id); + void func_ov00_0207f924(s32 param_2); unk8 func_ov00_0207f934(); unk8 func_ov00_0207f948(unk32 param_2); void AddTrigger(TriggerParams *param_2); - s32 GetTriggerBoundingBox(unk32 param_2, AABB *param_3); - unk8 GetTriggerBoundingBoxes(unk32 param_2, AABB *param_3, unk32 param_4); - unk32 GetOverlappingTrigger(Vec3p *param_2); - unk8 FindTrigger(unk32 type); + s32 GetTriggerBoundingBox(s32 param_2, AABB *param_3); + s32 GetTriggerBoundingBoxes(s32 param_2, AABB *param_3, s32 param_4); + bool GetOverlappingTrigger(Vec3p *param_2); + TriggerBase *FindTrigger(unk32 type); unk8 GetOverlappingTriggers(Vec3p *param_2, TriggerBase **triggers, unk32 capacity); bool IsTriggerTypeOverlapped(unk32 type, Vec3p *param_3); bool AnyTrigger_func_0c(unk32 type); unk8 Trigger_vfunc_08(); bool AddTrigger(unk32 param_2); - bool func_ov00_0207ff88(unk32 param_2); + bool func_ov00_0207ff88(s32 param_2); void func_ov00_0208005c(s32 param_2, s32 param_3, unk32 param_4); void func_ov00_0208006c(unk32 param_2, s32 param_3); void func_ov00_0208007c(s32 param_2, s32 param_3); void func_ov00_0208008c(u32 param_2); unk8 AddExit(Exit *param_2); - unk8 func_ov00_02080140(Exit *param_2); - bool FindExit(unk32 param_2, Exit *param_3); + char func_ov00_02080140(Exit *param_2); + bool FindExit(u32 param_2, Exit *param_3); unk8 AddCameraViewpoint(CameraViewpoint *param_2); bool FindViewpoint_Unk_4(unk8 id, CameraViewpoint *param_3); - bool FindViewpoint_Unk_0(unk32 param_2, CameraViewpoint *param_3); - void GetCurrentViewpoint(CameraViewpoint *param_2, unk32 param_3); - unk8 GetCurrentViewpoint_Unk_00(s32 param_2); - bool func_ov00_02080824(unk32 param_2, unk32 param_3); - bool AddUnk_130(unk32 param_2); - bool func_ov00_020809b8(unk32 param_2); + bool FindViewpoint_Unk_0(s32 param_2, CameraViewpoint *param_3); + void GetCurrentViewpoint(CameraViewpoint *param_2, s32 param_3); + unk32 GetCurrentViewpoint_Unk_00(s32 param_2); + bool func_ov00_02080824(u32 param_2, unk8 *param_3); + bool AddUnk_130(s32 param_2); + bool func_ov00_020809b8(s32 param_2); unk8 func_ov00_02080a78(Vec3p *param_2); unk8 func_ov00_02080b24(Vec2b *param_2); void func_ov00_02080d08(unk32 param_2); diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index 91e958d8..b1018279 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -30,11 +30,11 @@ class MapManager : public SysObject { public: /* 00 */ Course *mCourse; /* 04 */ MapBase *mMap; - /* 08 */ unk8 mUnk_08; - /* 09 */ unk8 mUnk_09; - /* 0a */ unk8 mUnk_0a; - /* 0b */ unk8 mUnk_0b; - /* 0c */ unk8 mUnk_0c; + /* 08 */ bool mUnk_08; + /* 09 */ bool mUnk_09; + /* 0a */ bool mUnk_0a; + /* 0b */ bool mUnk_0b; + /* 0c */ u8 mUnk_0c; /* 0d */ unk8 mUnk_0d; /* 0e */ unk8 mUnk_0e; /* 0f */ unk8 mUnk_0f; @@ -45,202 +45,202 @@ public: bool func_01ffc118(s32 *param1, Vec3p *param2, Vec3p *param3, s32 param4, s32 *param5, u32 param6, s32 *param7); bool func_01ffd1e0(s32 *param1, Vec3p *param2, Vec3p *param3, s32 param4, s32 *param5, u32 param6, s32 *param7); - void func_ov00_020820ec(unk32 *param_2); + void GetCourseDungeonProgress(CourseProgress *param_2); void func_ov00_020820fc(s32 param_2, unk32 param_3, unk32 param_4); - unk8 func_ov00_0208210c(unk32 param_2, unk32 param_3); - unk8 func_ov00_0208230c(unk32 param_2); - unk8 func_ov00_02082348(unk32 param_2); + void func_ov00_0208210c(unk32 param_2, unk32 *param_3); + void func_ov00_0208230c(s32 *param_2); + void func_ov00_02082348(unk32 *param_2); void func_ov00_020823a4(unk32 param_2); - unk8 func_ov00_020823b4(); + void func_ov00_020823b4(); bool func_ov00_020823c4(unk32 *param_2, s32 param_3); s32 func_ov00_020823d4(s32 param_2); s32 func_ov00_020823e4(s32 param_2); - unk8 MapData_vfunc_b4(); - unk8 MapData_vfunc_9c(); + void MapData_vfunc_b4(); + void MapData_vfunc_9c(); s32 func_ov00_02082424(); - unk8 func_ov00_02082454(unk32 param_2, unk32 param_3); - unk8 func_ov00_02082494(unk32 param_2); - unk8 func_ov00_020824cc(unk32 param_2); - unk8 func_ov00_02082504(); - unk8 *func_ov00_02082538(); + bool func_ov00_02082454(Vec3p *param_2, Vec3p *param_3); + bool func_ov00_02082494(s32 param_2); + bool func_ov00_020824cc(s32 param_2); + s32 func_ov00_02082504(); + Vec3p *func_ov00_02082538(); void func_ov00_02082594(); void func_ov00_020825ac(); s32 GetCourseFilePath(char *courseName, char *buf); - unk8 func_ov00_020825e4(unk32 param_2, unk32 param_3); - unk8 func_ov00_02082614(unk32 param_2, unk32 param_3); - unk8 MapData_vfunc_b0(); + void func_ov00_020825e4(unk32 param_2, char *buf); + void func_ov00_02082614(char *param_2, unk32 param_3); + void MapData_vfunc_b0(unk32 param_2, unk32 param_3); void func_ov00_02082650(s32 param_2, s32 param_3, unk32 param_4); void func_ov00_02082660(s32 param_2, s32 param_3); void func_ov00_02082670(unk32 param_2, s32 param_3); void func_ov00_02082680(unk32 param_2, unk32 param_3); - unk8 func_ov00_020826a0(unk32 param_2, unk32 param_3, unk32 param_4); - unk8 CreateMap(unk32 mapType, unk32 param_3, unk32 param_4); - unk8 DestroyMap(); - unk8 MapData_vfunc_44(); - static unk8 func_ov00_02082808(); - unk8 MapData_vfunc_7c(); - unk8 MapData_vfunc_84(); + void func_ov00_020826a0(unk32 param_2, unk32 param_3); + void CreateMap(unk32 mapType, unk32 param_3, unk32 param_4); + void DestroyMap(); + void MapData_vfunc_44(); + void func_ov00_02082808(bool param_2); + s32 MapData_vfunc_7c(s32 param_1, unk32 *param_2, s32 param_3, short param_4[4]); + void MapData_vfunc_84(unk32 param_2); bool func_ov00_020828f8(s32 *param_2); - unk8 GetCourseData_Unk_b0(); + u8 GetNumMaps(); s32 func_ov00_02082914(unk32 param_2); - unk8 func_ov00_02082acc(); + void func_ov00_02082acc(); unk32 *func_ov00_02082adc(); - unk8 func_ov00_02082af4(); - bool func_ov00_02082b3c(s32 param_2); - unk8 func_ov00_02082d08(); - unk8 GetCourseData_Unk_1c(); - unk8 GetCourseData_Unk_1d(); - unk8 func_ov00_02082d40(); + void func_ov00_02082af4(); + void func_ov00_02082b3c(unk32 *param_2, Vec2b *param3); + u8 func_ov00_02082d08(); + u8 GetCurrentMapPosX(); + u8 GetCurrentMapPosY(); + u8 func_ov00_02082d40(); u32 func_ov00_02082d74(unk32 param_2); - static unk8 func_ov00_02082d84(); + void func_ov00_02082d84(Vec2b *param_2, s32 *param_3, s32 *param_4); bool func_ov00_02082e1c(s32 *param_2, s32 *param_3); - static unk8 func_ov00_0208306c(); + void func_ov00_0208306c(s32 *param_2, s32 *param_3); void func_ov00_0208315c(s32 *param_2, s32 *param_3); - void func_ov00_02083244(u32 param_2, s32 *param_3, s32 *param_4, s32 *param_5); - void func_ov00_02083298(u32 param_2, s32 *param_3, s32 *param_4, s32 *param_5); - unk8 GetCourseData_Unk_25c(); - bool func_ov00_02083318(unk32 param_2); - static unk8 func_ov00_02083328(); - unk8 GetCourseData_Unk_86(); - unk8 GetCourseData_Unk_87(); - unk8 Get_MapData_Unk28(); - unk8 Get_MapData_Unk2a(); - static unk8 func_ov00_02083374(); - static unk8 func_ov00_02083384(); - unk8 GetCourseMinX(); - unk8 GetCourseMinZ(); - unk8 GetCourseMaxX(); - unk8 GetCourseMaxZ(); - unk8 func_ov00_020833c4(); - unk8 func_ov00_020833d0(); - unk8 func_ov00_020833dc(); - unk8 func_ov00_020833e8(); - unk8 Get_MapData_Unk_d0(); - unk8 Get_MapData_Unk_d8(); - unk8 GetMapData_Unk_dc(Vec3p *param_2); - unk8 GetMapData_Unk_e8(Vec3p *param_2); - unk8 GetMapData_Unk_d0(Vec3p *param_2); - unk8 func_ov00_0208346c(AABB *param_2); - unk8 func_ov00_020834bc(Vec3p *param_2, unk32 param_3, unk32 param_4); - unk8 func_ov00_02083524(Vec3p *param_2, unk32 param_3, unk32 param_4); - static void func_ov00_02083560(unk32 param_1, MapManager *param_2, u32 param_3); - unk8 func_ov00_02083570(unk32 param_2, unk32 param_3); + void func_ov00_02083244(u32 param_2, Vec3p *param_3, s32 *param_4, s32 *param_5); + void func_ov00_02083298(u32 param_2, Vec3p *param_3, s32 *param_4, s32 *param_5); + bool GetCourseData_Unk_25c(); + bool IsMapInMainGrid(u32 map); + bool func_ov00_02083328(); + u8 GetCourseMainGridSizeX(); + u8 GetCourseMainGridSizeY(); + u16 GetMapWidth(); + u16 GetMapHeight(); + s32 func_ov00_02083374(); + s32 func_ov00_02083384(); + q20 GetCourseMinX(); + q20 GetCourseMinZ(); + q20 GetCourseMaxX(); + q20 GetCourseMaxZ(); + q20 GetMapMinX(); + q20 GetMapMinZ(); + q20 GetMapMaxX(); + q20 GetMapMaxZ(); + q20 GetMapCenterX(); + q20 GetMapCenterZ(); + void GetMapMinBounds(Vec3p *param_2); + void GetMapMaxBounds(Vec3p *param_2); + void GetMapCenter(Vec3p *param_2); + void func_ov00_0208346c(AABB *param_2); + void func_ov00_020834bc(Vec3p *param_2, unk32 param_3, unk32 param_4); + void func_ov00_02083524(Vec3p *param_2, unk32 param_3, unk32 param_4); + static void func_ov00_02083560(Vec2b *param_1, MapManager *param_2, u32 param_3); + u8 func_ov00_02083570(u8 param_2, u8 param_3); unk32 func_ov00_02083588(); unk32 func_ov00_020835a4(); unk32 func_ov00_020835b4(); - unk8 func_ov00_020835c4(unk32 param_2, unk32 param_3); - bool func_ov00_020835e4(s32 param_2, unk32 *param_3, unk32 *param_4); + bool func_ov00_020835c4(s32 param_2, unk32 param_3); + bool func_ov00_020835e4(s32 param_2, unk32 *param_3, unk8 *param_4); unk32 func_ov00_020835f4(s32 param_2); void func_ov00_02083604(s32 param_2); unk8 func_ov00_02083614(s32 param_2); - bool GetEntrancePos(Vec3p *param_2, unk32 entranceId); - bool func_ov00_02083664(Vec3p *param_2, unk32 entranceId); - s32 func_ov00_020836bc(u32 param_2, unk32 *param_3); - s32 GetTriggerBoundingBoxes(u32 param_2, AABB *param_3, u32 param_4); - unk8 func_ov00_020836dc(unk32 param_2, unk32 param_3); - bool func_ov00_02083770(u32 param_2, unk32 param_3); - bool func_ov00_02083780(unk32 param_2); - bool func_ov00_02083790(unk32 param_2); - unk8 func_ov00_02083840(unk32 param_2); - bool func_ov00_020838c8(s32 param_2); + bool GetEntrancePos(Entrance *param_2, unk32 entranceId); + bool func_ov00_02083664(Entrance *param_2, unk32 entranceId); + s32 GetTriggerBoundingBox(s32 param_2, AABB *param_3); + s32 GetTriggerBoundingBoxes(s32 param_2, AABB *param_3, s32 param_4); + bool func_ov00_020836dc(u32 param_2, u32 actorId); + bool IsTriggerTypeOverlapped(u32 param_2, Vec3p *param_3); + bool GetOverlappingTrigger(Vec3p *param_2); + bool func_ov00_02083790(s32 param_2); + bool func_ov00_02083840(s32 param_2); + bool AddTrigger(s32 param_2); bool func_ov00_020838d8(s32 param_2); - bool func_ov00_020838e8(u32 param_2, unk32 *param_3); - char func_ov00_020838f8(unk32 *param_2); - bool func_ov00_02083908(char param_2, unk32 *param_3); - void func_ov00_02083918(s32 param_2, s32 *param_3); - void func_ov00_02083928(unk8 *param_2, s32 param_3); + bool FindExit(u32 param_2, Exit *param_3); + char func_ov00_020838f8(Exit *param_2); + bool func_ov00_02083908(char param_2, CameraViewpoint *param_3); + void func_ov00_02083918(s32 param_2, CameraViewpoint *param_3); + void GetCurrentViewpoint(CameraViewpoint *param_2, s32 param_3); unk32 func_ov00_02083938(s32 param_2); - unk8 Set_MapData_Unk_16(unk8 value, unk32 index); + void SetCurrentViewpointId(unk8 value, s32 index); void func_ov00_02083958(s32 param_2); void func_ov00_02083968(u32 param_2, unk8 *param_3); - bool func_ov00_02083978(unk32 param_2, Vec3p *param_3); + bool func_ov00_02083978(Vec3p *param_2, Vec3p *param_3); bool func_ov00_020839b4(s32 param_2); bool func_ov00_020839c4(s32 param_2); - static unk8 func_ov00_020839d4(); - static unk8 func_ov00_020839f8(); + s32 func_ov00_020839d4(s32 param_2); + s32 func_ov00_020839f8(s32 param_2); static void func_ov00_02083a1c(Vec2b *param_1, MapManager *param_2, Vec3p *param_3); - static unk8 func_ov00_02083a54(unk32 param_1, MapManager *param_2, unk32 param_3, unk32 param_4, unk32 param_5); - static unk8 func_ov00_02083b84(); - static unk8 func_ov00_02083bac(); - static unk8 func_ov00_02083bd4(); - static unk8 func_ov00_02083bfc(); - unk8 func_ov00_02083c24(unk32 param_2); - unk8 func_ov00_02083c50(unk32 param_2); - unk8 func_ov00_02083c7c(Vec3p *param_2, Vec2b param_3); - static unk8 func_ov00_02083ce8(unk8 param_1, unk8 param_2, unk8 param_3, unk8 param_4, unk32 param_5); - unk8 func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4); - unk8 MapData_vfunc_60(); - static unk8 func_ov00_02083e70(); - unk8 MapData_vfunc_68(); - s32 func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3, unk32 param_4); - void func_ov00_02083f44(Vec3p *param_2); - unk8 MapData_vfunc_6c(); - unk8 MapData_vfunc_70(); - static unk8 func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3); + static void func_ov00_02083a54(u8 *param_1, MapManager *param_2, s32 *param_3, s32 param_4, s32 *param_5); + s32 GetTileStartX(unk32 x); + s32 GetTileStartZ(unk32 z); + s32 GetTileEndX(unk32 x); + s32 GetTileEndZ(unk32 z); + s32 func_ov00_02083c24(unk32 x); + s32 func_ov00_02083c50(unk32 z); + void func_ov00_02083c7c(Vec3p *param_2, Vec2b param_3); + void func_ov00_02083ce8(Vec3p *param_2, u32 param_3, s32 param_4, u32 param_5); + s32 func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4); + unk32 MapData_vfunc_60(Vec2b *param_1); + bool func_ov00_02083e70(Vec2b *param_2); + unk32 MapData_vfunc_68(Vec3p *param_1, bool param_2); + s32 func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3, bool param_4); + unk32 func_ov00_02083f44(Vec3p *param_2, bool param_3); + unk8 MapData_vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4); + unk32 MapData_vfunc_70(Vec3p *param_2); + static void func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3); void GetTileWorldBounds(Vec2b *tile, AABB *tileBounds); - unk8 MapData_vfunc_54(); - unk8 func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4); - unk32 MapData_vfunc_78(Vec2b *param1); - static unk8 func_ov00_020840dc(); - static unk8 func_ov00_02084100(unk32 param_1, MapManager *param_2); - unk8 GetMapData_Unk_48(); - unk8 GetMapData_Unk_4c(); + unk32 MapData_vfunc_54(Vec2b *a); + unk32 func_ov00_020840a0(unk8 param_2, unk8 param_3); + unk32 *MapData_vfunc_78(Vec2b *param_1); + unk32 func_ov00_020840dc(Vec2b *param_1); + static unk8 func_ov00_02084100(unk32 *param_1, MapManager *param_2); + u32 GetMapData_Unk_48(); + unk32 GetMapData_Unk_4c(); unk32 func_ov00_0208412c(); void func_ov00_0208413c(unk32 param_2); - unk8 MapData_vfunc_58(); - static unk8 func_ov00_02084164(); - unk8 GetMapData_Unk_0a(); - unk8 GetMapData_Unk_0b(); - unk8 MapData_vfunc_a4(); - unk8 func_ov00_0208433c(Vec3p *param_2, unk32 param_3); - static unk8 func_ov00_0208439c(); + unk8 MapData_vfunc_58(Vec2b *param_1, int param_2); + s32 func_ov00_02084164(Vec2b *param_2); + u8 GetMapData_Unk_0a(); + u8 GetMapData_Unk_0b(); + unk8 MapData_vfunc_a4(unk8 *param_1); + void func_ov00_0208433c(Vec3p *param_2, Vec2s *param_3); + unk8 func_ov00_0208439c(Vec2s *param_2, Vec3p *param_3); void func_ov00_020843ec(s32 *param_2); - unk8 GetMapData_Unk_38(); - unk8 func_ov00_020846a4(); - static unk8 func_ov00_02084700(); - unk8 func_ov00_02084740(); - unk8 func_ov00_020847e0(); - unk8 func_ov00_020847f0(); + unk32 GetMapData_Unk_38(); + s32 func_ov00_020846a4(); + s32 func_ov00_02084700(); + unk32 func_ov00_02084740(); + unk32 func_ov00_020847e0(); + unk32 func_ov00_020847f0(unk32 type); bool func_ov00_02084838(); bool func_ov00_020848b8(); void func_ov00_02084924(u32 param_2); - static unk8 func_ov00_02084934(); - unk8 GetMapData_Unk_06(); - unk8 GetMapData_Unk_07(); - unk8 func_ov00_0208499c(); - unk8 func_ov00_020849c0(); - unk8 func_ov00_020849dc(); + bool func_ov00_02084934(Vec3p *param_2); + u8 GetMapData_Unk_06(); + u8 GetMapData_Unk_07(); + bool func_ov00_0208499c(); + bool func_ov00_020849c0(); + bool func_ov00_020849dc(); bool func_ov00_020849f8(); - unk8 func_ov00_02084a50(); + u8 func_ov00_02084a50(); void SpawnNPC(Vec3p *param_2, unk32 param_3, unk32 param_4); bool func_ov00_02084ac4(u32 actorId); - unk8 SetNumKeys(unk32 keys); - unk8 GetNumKeys(); - unk8 SetCourseData_Unk_25c(unk8 param_2); - unk8 GetCourseData_Unk_25d(); - unk8 func_ov00_02084b38(unk32 param_2, unk32 param_3, unk32 param_4); - bool func_ov00_02084be0(unk32 param_2, unk32 param_3); - void func_ov00_02084c5c(unk32 param_2, unk32 param_3); - bool func_ov00_02084c6c(unk32 param_2); - unk8 func_ov00_02084c7c(unk32 param_2); - unk8 func_ov00_02084c94(unk32 param_2); - unk8 func_ov00_02084cb0(unk32 param_2); - unk8 func_ov00_02084cc8(unk32 param_2); - unk8 func_ov00_02084ce4(unk32 param_2); - unk8 func_ov00_02084cfc(unk32 param_2); - unk8 GetMapData_Unk_09(); - unk8 func_ov00_02084d24(unk8 param_2, unk8 param_3, unk32 param_4); + void SetNumKeys(unk32 keys); + unk32 GetNumKeys(); + void SetBlueWarpOpen(bool state); + bool GetBlueWarpOpen(); + void func_ov00_02084b38(u32 param_2, unk32 param_3, bool param_4); + bool func_ov00_02084be0(u32 param_2, unk32 param_3); + void SetMapDataFlag1(unk32 param_2, bool param_3); + bool GetMapDataFlag1(unk32 param_2); + void func_ov00_02084c7c(unk32 param_2, bool param_3); + bool func_ov00_02084c94(unk32 param_2); + void func_ov00_02084cb0(unk32 param_2, bool param_3); + bool func_ov00_02084cc8(unk32 param_2); + void func_ov00_02084ce4(unk32 param_2, bool param_3); + bool func_ov00_02084cfc(unk32 param_2); + u8 GetMapData_Unk_09(); + void func_ov00_02084d24(unk8 param_2, unk8 param_3, unk16 param_4); s32 func_ov00_02084d4c(unk32 param_2, unk32 param_3, Vec3p *param_4); - unk8 func_ov00_02084ebc(unk32 param_2); + unk32 func_ov00_02084ebc(Vec3p *param_2); s32 func_ov00_02085108(Vec3p *param_2); - static unk8 func_ov00_0208527c(); - static unk8 func_ov00_020853fc(); - unk8 func_ov00_02085594(Vec3p *param_1); - static void func_ov00_0208583c(unk32 param_1, Vec3p *param_2, unk32 param_3); - static unk8 func_ov00_020858b0(); - s32 func_ov00_02085a34(unk32 param_2, unk32 param_3); - unk8 func_ov00_02085c60(unk32 param_2, unk32 param_3, unk32 param_4, unk32 param_5); - unk8 func_ov00_02086044(unk32 param_2, unk32 param_3, unk32 param_4); + static s32 func_ov00_0208527c(MapManager *param_1, unk32 param_2, unk32 *param_3); + static s32 func_ov00_020853fc(MapManager *param_1, Vec3p *param_2, s32 *param_3); + unk32 func_ov00_02085594(Vec3p *param_2); + static void func_ov00_0208583c(MapManager *param_1, Vec3p *param_2, unk32 param_3); + static unk32 func_ov00_020858b0(MapManager *param_1, Vec3p *param_2, s32 param_3); + s32 func_ov00_02085a34(Vec3p *param_2, unk32 param_3); + unk8 func_ov00_02085c60(Vec3p *param_2, unk32 *param_3, unk32 *param_4, u32 param_5); + unk8 func_ov00_02086044(Vec3p *param_2, Vec3p *param_3, unk32 param_4); bool func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4, s32 param_5, u16 param_6, Vec3p *param_7, Vec3p *param_8); bool func_ov00_02086a84(s32 *param_2, Vec3p *param_3, Vec3p *param_4, s32 param_5, s32 param_6, unk32 param_7, @@ -253,7 +253,7 @@ public: static void LoadMapTexSprites(s32 param1); void func_ov004_02102260(); void func_ov004_02102264(unk32 *param1, char *param2); - void func_ov004_021024c4(s32 param1, unk32 param2, unk32 param3); + void func_ov004_021024c4(unk32 *param1, unk32 param2, bool param3); void func_ov004_021025d8(); }; diff --git a/include/Map/MapOverworld.hpp b/include/Map/MapOverworld.hpp index 482b3ad1..2fda60af 100644 --- a/include/Map/MapOverworld.hpp +++ b/include/Map/MapOverworld.hpp @@ -46,19 +46,19 @@ public: /* 1c */ virtual void vfunc_1c(bool param_2) override; /* 20 */ virtual void vfunc_20(s32 param_2) override; /* 2c */ virtual void vfunc_2c() override; - /* 4c */ virtual void vfunc_4c() override; + /* 4c */ virtual s32 vfunc_4c() override; /* 54 */ virtual unk32 vfunc_54() override; /* 58 */ virtual unk32 vfunc_58() override; /* 5c */ virtual unk32 vfunc_5c() override; /* 60 */ virtual unk32 vfunc_60() override; /* 64 */ virtual unk32 vfunc_64() override; - /* 78 */ virtual unk32 vfunc_78() override; + /* 78 */ virtual unk32 *vfunc_78() override; /* 7c */ virtual unk32 vfunc_7c() override; /* 80 */ virtual unk32 vfunc_80() override; /* 94 */ virtual void vfunc_94() override; /* 98 */ virtual void vfunc_98() override; /* a4 */ virtual unk32 vfunc_a4() override; - /* b0 */ virtual unk8 vfunc_b0(unk32 param_2, unk32 param_3) override; + /* b0 */ virtual void vfunc_b0(unk32 param_2, unk32 param_3) override; /* bc */ virtual void vfunc_bc() override; /* c0 */ virtual void vfunc_c0() override; /* c4 */ diff --git a/include/System/SysNew.hpp b/include/System/SysNew.hpp index 7e9b0cd8..4d3c3f7c 100644 --- a/include/System/SysNew.hpp +++ b/include/System/SysNew.hpp @@ -4,7 +4,8 @@ struct UnkStruct_0202e894 { /* 00 */ u32 mId; - /* 04 */ unk8 mUnk_04[0x28]; + /* 04 */ u32 *mUnk_04; + /* 08 */ unk8 mUnk_08[0x24]; /* 2c */ }; diff --git a/src/00_Core/Actor/Actor.cpp b/src/00_Core/Actor/Actor.cpp index 85f58869..9ab972fe 100644 --- a/src/00_Core/Actor/Actor.cpp +++ b/src/00_Core/Actor/Actor.cpp @@ -860,7 +860,7 @@ ARM bool Actor::func_ov00_020c3094() { Vec3p pos, prevPos; Vec3p_Copy(&mPos, &pos); Vec3p_Copy(&mPrevPos, &prevPos); - s32 unk1 = gMapManager->func_ov00_02083ef8(&pos, &prevPos, 0); + s32 unk1 = gMapManager->func_ov00_02083ef8(&pos, &prevPos, false); if (mPos.y <= unk1) { result = true; mPos.y = unk1; @@ -886,7 +886,7 @@ ARM bool Actor::func_ov00_020c313c(u32 param1) { ARM void Actor::func_ov00_020c3158() { if (mUnk_03c < 0) return; - gMapManager->func_ov00_02084c5c(mUnk_03c, 1); + gMapManager->SetMapDataFlag1(mUnk_03c, 1); } ARM void Actor::Kill() { diff --git a/src/00_Core/Actor/ActorSpawner.cpp b/src/00_Core/Actor/ActorSpawner.cpp index 55cf1a57..fcf8b66b 100644 --- a/src/00_Core/Actor/ActorSpawner.cpp +++ b/src/00_Core/Actor/ActorSpawner.cpp @@ -68,8 +68,8 @@ ARM s32 ActorSpawner::Spawn(ActorTypeId type, Vec3p *pos, ActorSpawnOptions *opt Actor *actor2 = *actorSlot; actor2->mPos = *pos; actor2->mPrevPos = *pos; - (*actorSlot)->mUnk_010 = gMapManager->GetCourseData_Unk_1c(); - (*actorSlot)->mUnk_011 = gMapManager->GetCourseData_Unk_1d(); + (*actorSlot)->mUnk_010 = gMapManager->GetCurrentMapPosX(); + (*actorSlot)->mUnk_011 = gMapManager->GetCurrentMapPosY(); u16 nextIndex = index + 1; if (actorManager->mMaxActorIndex < nextIndex) { actorManager->mMaxActorIndex = nextIndex; diff --git a/src/00_Core/Map/Course.cpp b/src/00_Core/Map/Course.cpp index 4771048d..fed9a442 100644 --- a/src/00_Core/Map/Course.cpp +++ b/src/00_Core/Map/Course.cpp @@ -15,7 +15,7 @@ void Course::GetMCSFilePath(unk32 buf, s32 fileIndex, unk32 fileType) {} void Course::GetMRCFilePath(unk32 param_2, unk32 buf, unk32 param_4) {} void Course::func_ov00_0207ce20(unk32 param_2, unk32 param_3, char *param_4, unk32 param_5) {} void Course::func_ov00_0207ce4c(s32 param_2, s32 param_3, unk32 param_4, char *param_5, unk32 param_6) {} -bool Course::func_ov00_0207d404(s32 param_2, unk32 param_3, unk32 param_4) {} +bool Course::func_ov00_0207d404(s32 param_2, unk32 param_3, unk32 param_4, unk32 param_5) {} bool Course::IsCurrentMapInMainGrid() {} bool Course::IsInMainGrid(s32 x, s32 y) {} bool Course::IsMapInMainGrid(u32 map) {} @@ -45,7 +45,7 @@ void Course::SetMapDataFlag2(unk32 param_2, bool param_3) {} bool Course::GetMapDataFlag2(unk32 param_2) {} void Course::SetMapDataFlag3(unk32 param_2, bool param_3) {} bool Course::GetMapDataFlag3(unk32 param_2) {} -void Course::SetMapDataFlag4(unk32 param_2, unk32 param_3) {} +void Course::SetMapDataFlag4(unk32 param_2, bool param_3) {} bool Course::GetMapDataFlag4(unk32 param_2) {} MapData *Course::FindMapData(u32 map) {} MapData *Course::FindCurrentMapData() {} diff --git a/src/00_Core/Map/MapBase.cpp b/src/00_Core/Map/MapBase.cpp index 46f4e40b..b923de8d 100644 --- a/src/00_Core/Map/MapBase.cpp +++ b/src/00_Core/Map/MapBase.cpp @@ -11,25 +11,25 @@ void MapBase::func_ov00_0207ddf8(bool param_2) {} void MapBase::func_ov00_0207de68(unk32 param_2) {} void MapBase::func_ov00_0207de88() {} void MapBase::func_ov00_0207dea0(bool param_2) {} -unk8 MapBase::vfunc_b0(unk32 param_2, unk32 param_3) {} -bool MapBase::func_ov00_0207e08c(unk32 param_2, unk32 param_3) {} -s32 MapBase::func_ov00_0207e0f0(unk32 param_2) {} -s32 MapBase::func_ov00_0207e28c(unk32 param_2) {} +void MapBase::vfunc_b0(unk32 param_2, unk32 param_3) {} +bool MapBase::func_ov00_0207e08c(s32 *param_2, s32 param_3) {} +s32 MapBase::func_ov00_0207e0f0(s32 param_2) {} +s32 MapBase::func_ov00_0207e28c(s32 param_2) {} void MapBase::vfunc_b4() {} void MapBase::vfunc_48() {} unk32 MapBase::vfunc_50() {} -unk32 MapBase::vfunc_54() {} -unk32 MapBase::vfunc_58() {} +unk32 MapBase::vfunc_54(Vec2b *param_1) {} +unk32 MapBase::vfunc_58(Vec2b *param_1, int param_2) {} unk32 MapBase::vfunc_5c() {} -unk32 MapBase::vfunc_60() {} +unk32 MapBase::vfunc_60(Vec2b *param_1) {} unk32 MapBase::vfunc_64() {} -unk8 MapBase::vfunc_68(unk32 param_2, unk32 param_3) {} +unk32 MapBase::vfunc_68(Vec3p *param_1, bool param_2) {} unk8 MapBase::func_ov00_0207e940(unk8 *param_1) {} unk8 MapBase::func_ov00_0207e968() {} unk8 MapBase::func_ov00_0207e96c() {} unk8 MapBase::vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4) {} unk32 MapBase::vfunc_70(Vec3p *param_2) {} -s32 *MapBase::vfunc_74(Vec3p *param_2) {} +unk32 *MapBase::vfunc_74(Vec3p *param_2) {} unk8 MapBase::func_ov00_0207f100() {} bool MapBase::func_ov00_0207f104(unk32 param_2, unk32 param_3) {} unk32 MapBase::func_ov00_0207f1f4(Vec3p *param_2, unk32 *param_3) {} @@ -37,15 +37,15 @@ unk32 MapBase::vfunc_88() {} unk32 MapBase::vfunc_8c() {} void MapBase::vfunc_9c() {} void MapBase::vfunc_a0() {} -unk32 MapBase::vfunc_a4() {} +unk32 MapBase::vfunc_a4(unk8 *param_1) {} void MapBase::vfunc_a8() {} void MapBase::vfunc_ac() {} -unk32 MapBase::vfunc_78() {} -unk32 MapBase::vfunc_7c() {} +unk32 *MapBase::vfunc_78(Vec2b *param_1) {} +s32 MapBase::vfunc_7c(s32 param_1, unk32 *param_2, s32 param_3, short param_4[4]) {} unk32 MapBase::vfunc_80() {} void MapBase::vfunc_84(unk32 param_2) {} -unk8 MapBase::func_ov00_0207f38c(unk32 param_2) {} -unk8 MapBase::vfunc_90(unk32 param_2, unk32 param_3, unk32 param_4) {} +bool MapBase::func_ov00_0207f38c(s32 *param_2) {} +unk8 MapBase::vfunc_90(Vec2b *param_2, unk32 param_3) {} void MapBase::vfunc_94() {} void MapBase::func_ov00_0207f4a4(Vec2s *param_2, unk32 param_3) {} void MapBase::func_ov00_0207f53c(Vec2s *param_1, MapBase *param_2, Vec3p *param_3) {} @@ -56,54 +56,54 @@ unk8 MapBase::GetTileStartZ(unk32 z) {} s32 MapBase::GetTileEndX(unk32 x) {} s32 MapBase::GetTileEndZ(unk32 z) {} void MapBase::GetTileBounds(Vec2b *tilePos, AABB *bounds) {} -unk8 MapBase::GetClampedTileX(unk32 worldX) {} -unk8 MapBase::GetClampedTileY(unk32 worldZ) {} -unk8 MapBase::GetTileX(unk32 worldX) {} -unk8 MapBase::GetTileY(unk32 worldZ) {} +s32 MapBase::GetClampedTileX(s32 worldX) {} +s32 MapBase::GetClampedTileY(s32 worldZ) {} +unk8 MapBase::GetTileX(s32 worldX) {} +unk8 MapBase::GetTileY(s32 worldZ) {} bool MapBase::IsInBounds(Vec3p *tileWorldPos) {} s32 MapBase::AddEntrance(Entrance *param_2) {} -unk8 MapBase::FindEntrance(unk32 id) {} -unk8 MapBase::func_ov00_0207f924(unk32 param_2) {} +Entrance *MapBase::FindEntrance(unk32 id) {} +void MapBase::func_ov00_0207f924(s32 param_2) {} unk8 MapBase::func_ov00_0207f934() {} unk8 MapBase::func_ov00_0207f948(unk32 param_2) {} void MapBase::AddTrigger(TriggerParams *param_2) {} void TriggerBase::vfunc_08() {} s32 MapBase::GetTriggerBoundingBox(unk32 param_2, AABB *param_3) {} bool TriggerBase::GetBoundingBox(AABB *bbox) {} -unk8 MapBase::GetTriggerBoundingBoxes(unk32 param_2, AABB *param_3, unk32 param_4) {} -unk32 MapBase::GetOverlappingTrigger(Vec3p *param_2) {} +s32 MapBase::GetTriggerBoundingBoxes(s32 param_2, AABB *param_3, s32 param_4) {} +bool MapBase::GetOverlappingTrigger(Vec3p *param_2) {} bool TriggerBase::Overlaps(Vec3p *point) {} -unk8 MapBase::FindTrigger(unk32 type) {} +TriggerBase *MapBase::FindTrigger(unk32 type) {} unk8 MapBase::GetOverlappingTriggers(Vec3p *param_2, TriggerBase **triggers, unk32 capacity) {} bool MapBase::IsTriggerTypeOverlapped(unk32 type, Vec3p *param_3) {} bool MapBase::AnyTrigger_func_0c(unk32 type) {} unk32 TriggerBase::vfunc_0c() {} unk8 MapBase::Trigger_vfunc_08() {} bool MapBase::AddTrigger(unk32 param_2) {} -bool MapBase::func_ov00_0207ff88(unk32 param_2) {} +bool MapBase::func_ov00_0207ff88(s32 param_2) {} void MapBase::func_ov00_0208005c(s32 param_2, s32 param_3, unk32 param_4) {} void MapBase::func_ov00_0208006c(unk32 param_2, s32 param_3) {} void MapBase::func_ov00_0208007c(s32 param_2, s32 param_3) {} void MapBase::func_ov00_0208008c(u32 param_2) {} unk8 MapBase::AddExit(Exit *param_2) {} -unk8 MapBase::func_ov00_02080140(Exit *param_2) {} +char MapBase::func_ov00_02080140(Exit *param_2) {} void MapBase_Unk1::func_ov00_02080324(s32 param_2, s32 param_3, s32 param_4) {} -bool MapBase::FindExit(unk32 param_2, Exit *param_3) {} +bool MapBase::FindExit(u32 param_2, Exit *param_3) {} unk8 MapBase::AddCameraViewpoint(CameraViewpoint *param_2) {} -bool MapBase::FindViewpoint_Unk_4(unk8 id, CameraViewpoint *param_3) {} -bool MapBase::FindViewpoint_Unk_0(unk32 param_2, CameraViewpoint *param_3) {} -void MapBase::GetCurrentViewpoint(CameraViewpoint *param_2, unk32 param_3) {} -unk8 MapBase::GetCurrentViewpoint_Unk_00(s32 param_2) {} +bool MapBase::FindViewpoint_Unk_4(char id, CameraViewpoint *param_3) {} +bool MapBase::FindViewpoint_Unk_0(s32 param_2, CameraViewpoint *param_3) {} +void MapBase::GetCurrentViewpoint(CameraViewpoint *param_2, s32 param_3) {} +unk32 MapBase::GetCurrentViewpoint_Unk_00(s32 param_2) {} unk32 MapBase::vfunc_b8() {} -bool MapBase::func_ov00_02080824(unk32 param_2, unk32 param_3) {} -bool MapBase::AddUnk_130(unk32 param_2) {} -bool MapBase::func_ov00_020809b8(unk32 param_2) {} +bool MapBase::func_ov00_02080824(u32 param_2, unk8 *param_3) {} +bool MapBase::AddUnk_130(s32 param_2) {} +bool MapBase::func_ov00_020809b8(s32 param_2) {} unk8 MapBase::func_ov00_02080a78(Vec3p *param_2) {} void MapBase_Unk2::func_ov00_02080ad0(TriggerBase **param_2, TriggerBase **param_3) {} unk8 MapBase::func_ov00_02080b24(Vec2b *param_2) {} void MapBase::func_ov00_02080d08(unk32 param_2) {} void MapBase::vfunc_bc() {} -void MapBase::vfunc_98() {} +void MapBase::vfunc_98(unk32 param_2, unk32 param_3, unk32 param_4) {} void MapBase::vfunc_c0() {} bool MapBase::TriggerOfType_vfunc_10(unk32 type) {} unk32 TriggerBase::vfunc_10() {} diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 6abb27cc..e26cc57e 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -1,202 +1,3113 @@ -#include "Map/MapManager.hpp" +// TODO: Make sure every function has either ARM or THUMB +// TODO: Optimise functions' bodies as much as possible (without affecting asm) +// Clear these comments when done + +#include "Map/MapManager.hpp" +#include "Actor/Actor.hpp" +#include "Actor/ActorManager.hpp" +#include "Actor/ActorSpawner.hpp" +#include "DTCM/UnkStruct_027e0d38.hpp" +#include "DTCM/UnkStruct_027e0fd4.hpp" +#include "DTCM/UnkStruct_027e103c.hpp" +#include "Player/PlayerBase.hpp" +#include "Save/AdventureFlags.hpp" +#include "Unknown/UnkStruct_02037750.hpp" +#include "stdio.h" + +extern bool func_01ffbe78(Vec3p *param1, Vec3p *param2, Vec3p *param3, Vec4p *param4); + +extern u32 func_ov000_02078bc4(unk32 param_1); +extern void func_ov000_02078bf0(s32 *param_1, unk32 *param_2); +extern s32 func_ov000_02078fe8(s32 *param_1); +extern void func_ov000_0207920c(s32 *param_1, Vec3p *param_2, s32 *param_3, s32 *param_4); +extern void func_ov000_020792a0(s32 *param_1, s32 param_2, unk32 param_3, unk32 param_4); +extern void func_ov000_02079898(unk32 *param_1, unk32 param_2, unk32 param_3); +extern void func_ov000_020798bc(s32 *param_1, s32 param_2); +extern void func_ov000_02088000(unk32 param_1, s32 param_2); +extern void func_ov000_02088130(u8 *param_1, unk32 param_2); +extern void func_ov000_02088144(u8 *param_1, unk32 param_2); +extern void func_ov000_0208b13c(s32 *param_1); +extern unk32 func_ov000_0208b180(s32 *param_1); +extern s32 func_ov000_0208b73c(s32 param_1, unk32 param_2); +extern s32 func_ov000_0208b7d0(s32 param_1, Vec3p *param_2); +extern s32 func_ov000_0208b804(s32 *param_1, Vec3p *param_2, Vec3p *param_3); +extern void func_ov000_0208cc88(s32 *param1); +extern void func_ov000_0208d620(s32 *param_1); +extern void func_ov000_0208d680(s32 *param_1); +extern s32 func_ov000_0208df78(s32 *param_1, unk32 param_, unk32 param_3, Vec3p *param_4, s32 *param_5); +extern void func_ov000_0208e6b0(Vec3p *param_1, Vec3p *param_2); +extern s32 func_ov000_0208e6f0(Vec3p *param_1); +extern s32 func_ov000_0208e704(Vec3p *param_1); +extern s32 func_ov000_0208e87c(AABB *param_1, Vec3p *param_2, Vec3p *param_3); +extern void func_ov000_0208ed74(AABB *param_1, Vec3p *param_2); +extern void func_ov000_02093a1c(u32 *param_1, unk32 *param_2, unk32 param_3); +extern void func_ov000_02096324(unk32 *param_1, unk32 *param_2); +extern s32 *func_ov000_02096418(s32 *param_1); +extern void func_ov000_0209d6e8(unk32 *param_1, unk32 *param_2); +extern s32 func_ov000_0209d71c(s32 *param_1, s32 param_2); +extern unk32 func_ov000_020a5e9c(unk32 *param_1); +extern void func_ov000_020c3348(ActorSpawnOptions *param_1); +extern void func_ov000_020d70a4(unk32 *param_1, unk32 param_2, unk32 param_3, unk32 param_4); +extern void func_ov000_020d72b8(unk32 *param_1); +extern unk32 func_ov000_020d7424(unk32 *param_1); + +extern void func_ov004_021024c4(MapManager *param_1, s32 param_2, bool param_3, s32 param_4); +extern void func_ov004_02102770(s32 *param_1); +extern void func_ov004_02102b28(s32 *param_1); +extern void func_ov004_02102e3c(s32 *param_1); +extern void func_ov004_02106db8(unk32 *param_1); // UnkStruct_027e0c68 doesn't exist, so using unk32 + +extern MapBase *func_ov012_0212b358(MapBase *param_1, unk32 param_2, unk32 param_3); + +extern MapBase *func_ov015_02128dd8(MapBase *param_1, unk32 param_2, unk32 param_3); +extern s32 func_ov015_02129c14(MapBase *param_1); +extern bool func_ov015_02129c24(MapBase *param_1, Vec3p *param_2, Vec3p *param_3); +extern bool func_ov015_02129c34(MapBase *param_1, s32 param_2); +extern bool func_ov015_02129c44(MapBase *param_1, s32 param_2); +extern void func_ov015_021849a4(unk32 *param_1); + +extern MapBase *func_ov017_0215b4a0(MapBase *param_1, unk32 param_2, unk32 param_3); +extern MapBase *func_ov017_0215b4e8(MapBase *param_1, unk32 param_2, unk32 param_3); + +// extern MapBase *func_ov018_0215b4a0(MapBase *param_1, unk32 param_2, unk32 param_3); + +struct astruct_16 { + /* 00 */ Actor_UnkStruct_020 *mUnk_00; + /* 04 */ unk8 mUnk_08[0x10]; + /* 14 */ unk16 mAngle; + /* 16 */ unk8 mUnk_16; + /* 17 */ unk8 mUnk_17; + /* 18 */ unk32 mUnk_18; + /* 1c */ unk32 mUnk_1c; + /* 20 */ unk32 mUnk_20; + /* 24 */ unk32 mUnk_24; + /* 28 */ unk32 mUnk_28; + /* 2c */ +}; // What is this struct? + +// This might be FlagsUnk2 +struct UnkStruct_02082348 { + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0c */ unk32 mUnk_0c; + /* 10 */ unk16 mUnk_10; + /* 12 */ u8 mUnk_12; + /* 13 */ u8 mUnk_13; + /* 14 */ u8 mUnk_14; + /* 15 */ u8 mUnk_15; + /* 16 */ +}; + +struct UnkStruct_027e077c { + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ unk16 mUnk_08; + /* 0a */ unk8 mUnk_0a; +}; + +class Case_0 : public MapBase { +public: + char pad[0x790 - 0x1B0]; + Case_0(u32 param1, u32 param2); + virtual ~Case_0() override; +}; + +class Case_4 : public MapBase { +public: + char pad[0x1DC - 0x1B0]; + Case_4(u32 param1, u32 param2); + virtual ~Case_4() override; +}; + +class Case_Default : public MapBase { +public: + char pad[0x790 - 0x1B0]; + Case_Default(u32 param1, u32 param2); + virtual ~Case_Default() override; +}; + +extern UnkStruct_027e077c *data_027e077c; +extern unk32 *data_027e0c68; +extern u32 *data_027e0ce0[]; +extern UnkStruct_0202e894 *data_027e0ce4; +extern unk32 *data_027e0d3c; +extern unk32 data_027e0f64[]; +extern unk32 *data_027e0f68; +extern unk32 *data_027e0f6c; +extern unk32 *data_027e0f70; +extern unk32 *data_027e0f78; +extern unk32 *data_027e0f7c; +extern UnkStruct_027e103c *data_027e103c; + +extern unk32 *data_ov000_020e24a4; +extern MapManager_Unk2 data_ov000_020e24c8[]; +extern MapManager_Unk2 data_ov000_020e24e8[]; +extern unk32 data_ov000_020eec68; +extern unk32 data_ov015_02190458; + +MapManager::MapManager() { + /*MapManager_Unk1 *object; + undefined *destructor; + undefined *chain; + + DWORD_arm9_ov000__020e24c4 = 0x5fff; + data_ov000_020e24c8.field0_0x0 = 0; + data_ov000_020e24c8.field1_0x4 = 0x60; + __register_global_object + (&data_ov000_020e24c8,func_ov000_02086cd0,(DestructorChain *)(undefined *)0x20ec964); + data_ov000_020e24d0.field0_0x0 = 0; + data_ov000_020e24d0.field1_0x4 = 0; + __register_global_object + (&data_ov000_020e24d0,func_ov000_02086cd0,(DestructorChain *)(undefined *)0x20ec970); + data_ov000_020e24d8.field0_0x0 = 0x80; + data_ov000_020e24d8.field1_0x4 = 0x60; + __register_global_object + (&data_ov000_020e24d8,func_ov000_02086cd0,(DestructorChain *)(undefined *)0x20ec97c); + data_ov000_020e24e0.field0_0x0 = 0x80; + data_ov000_020e24e0.field1_0x4 = 0; + __register_global_object + (&data_ov000_020e24e0,func_ov000_02086cd0,(DestructorChain *)(undefined *)0x20ec988); + data_ov000_020e24e8.field0_0x0 = 0xfff80000; + data_ov000_020e24e8.field1_0x4 = 0xfffa0000; + __register_global_object + (&data_ov000_020e24e8,MapManager_Unk2::~MapManager_Unk2, + (DestructorChain *)(undefined *)0x20ec994); + data_ov000_020e24f0.field0_0x0 = 0xfff80000; + data_ov000_020e24f0.field1_0x4 = 0xfffa0000; + __register_global_object + (&data_ov000_020e24f0,MapManager_Unk2::~MapManager_Unk2, + (DestructorChain *)(undefined *)0x20ec9a0); + data_ov000_020e24f8.field0_0x0 = 0xfff80000; + data_ov000_020e24f8.field1_0x4 = 0xfffa0000; + __register_global_object + (&data_ov000_020e24f8,MapManager_Unk2::~MapManager_Unk2, + (DestructorChain *)(undefined *)0x20ec9ac); + data_ov000_020e2500.field0_0x0 = 0xfff80000; + data_ov000_020e2500.field1_0x4 = 0xfffa0000; + __register_global_object + (&data_ov000_020e2500,MapManager_Unk2::~MapManager_Unk2, + (DestructorChain *)(undefined *)0x20ec9b8); + return;*/ +} + +MapManager::~MapManager() {} + +ARM void MapManager::GetCourseDungeonProgress(CourseProgress *param_2) { + this->mCourse->GetDungeonProgress(param_2); +} + +ARM void MapManager::func_ov00_020820fc(s32 param_2, unk32 param_3, unk32 param_4) { + this->mCourse->func_ov00_0207ca28(param_2, param_3, param_4); +} + +ARM void MapManager::func_ov00_0208210c(unk32 param_2, unk32 *param_3) { + void *pvVar3; + unk32 uVar2; + UnkStruct_02082348 local_40[2]; + + local_40[1].mUnk_00 = 0x47; + local_40[1].mUnk_04 = 0; + local_40[1].mUnk_08 = 0; + local_40[1].mUnk_0c = -2; + local_40[1].mUnk_10 = 0; + local_40[1].mUnk_12 = -1; + local_40[1].mUnk_13 = 0; + local_40[1].mUnk_14 = 0; + local_40[1].mUnk_15 = 0; + if (param_2 != 0) { + *param_3 = 0xb; + *(unk8 *) (param_3 + 1) = 2; + *(u8 *) ((int) param_3 + 5) = 4; + } else { + this->func_ov00_02082348((unk32 *) &local_40[1]); + *param_3 = func_ov000_020a5e9c((unk32 *) &local_40[1]); + *(unk8 *) (param_3 + 1) = local_40[1].mUnk_12; + *(u8 *) ((int) param_3 + 5) = local_40[1].mUnk_13; + } + param_3[2] = func_ov000_020a5e9c((unk32 *) ((unk32) (data_027e0d38->mUnk_28) + 0x1c)); + *(u8 *) (param_3 + 4) = *(u8 *) ((int) data_027e0d38->mUnk_28 + 0x2e); + *(unk16 *) (param_3 + 5) = *(unk16 *) ((int) data_027e0d38->mUnk_28 + 0x36); + pvVar3 = data_027e0d38->mUnk_28; + param_3[6] = *(unk32 *) ((int) pvVar3 + 0x38); // Likely Vec3p + param_3[7] = *(unk32 *) ((int) pvVar3 + 0x3c); + param_3[8] = *(unk32 *) ((int) pvVar3 + 0x40); + param_3[3] = func_ov000_020a5e9c((unk32 *) ((unk32) data_027e0d38->mUnk_28 + 0x44)); + *(u8 *) ((int) param_3 + 0x11) = *(u8 *) ((int) data_027e0d38->mUnk_28 + 0x56); + pvVar3 = data_027e0d38->mUnk_28; + param_3[9] = *(unk32 *) ((int) pvVar3 + 0x5c); // Likely Vec3p + param_3[10] = *(unk32 *) ((int) pvVar3 + 0x60); + param_3[0xb] = *(unk32 *) ((int) pvVar3 + 0x64); + *(unk16 *) ((int) param_3 + 0x16) = *(unk16 *) ((int) data_027e0d38->mUnk_28 + 0x68); + pvVar3 = data_027e0d38->mUnk_28; + local_40[0].mUnk_00 = *(unk32 *) ((int) pvVar3 + 0x70); + local_40[0].mUnk_04 = *(unk32 *) ((int) pvVar3 + 0x74); + local_40[0].mUnk_08 = *(unk32 *) ((int) pvVar3 + 0x78); + local_40[0].mUnk_0c = *(unk32 *) ((int) pvVar3 + 0x7c); + local_40[0].mUnk_10 = *(unk16 *) ((int) pvVar3 + 0x80); + local_40[0].mUnk_12 = *(u8 *) ((int) pvVar3 + 0x82); + local_40[0].mUnk_13 = *(u8 *) ((int) pvVar3 + 0x83); + local_40[0].mUnk_14 = *(u8 *) ((int) pvVar3 + 0x84); + local_40[0].mUnk_15 = *(u8 *) ((int) pvVar3 + 0x85); + uVar2 = func_ov000_020a5e9c((unk32 *) &local_40[0]); + param_3[0x70] = uVar2; + *(u8 *) ((int) param_3 + 0x1be) = local_40[0].mUnk_12; + *(u8 *) ((int) param_3 + 0x1bf) = local_40[0].mUnk_13; + func_ov000_02096324(data_027e0f70, param_3); + func_ov000_0209d6e8(data_027e0f7c, param_3); + if (this->mCourse->mType != CourseType_TempleOfTheOceanKing) { + *(bool *) ((int) param_3 + 7) = this->mUnk_08; + *(bool *) (param_3 + 0x6f) = this->mUnk_09; + } +} + +ARM void MapManager::func_ov00_0208230c(s32 *param_2) { + *param_2 = this->mCourse->mIndex; + Course *course = this->mCourse; + *(unk8 *) ((u32) param_2 + 0x12) = course->mMapGrid[(u8) course->mCurrMapPos.x][(u8) course->mCurrMapPos.y]; + *(unk8 *) ((u32) param_2 + 0x13) = this->mUnk_0c; +} + +ARM void MapManager::func_ov00_02082348(unk32 *param_2) { + UnkStruct_02082348 unkStruct; + unkStruct.mUnk_00 = 0x47; + unkStruct.mUnk_04 = 0; + unkStruct.mUnk_08 = 0; + unkStruct.mUnk_0c = -2; + unkStruct.mUnk_10 = 0; + unkStruct.mUnk_12 = -1; + unkStruct.mUnk_13 = 0; + unkStruct.mUnk_14 = 0; + unkStruct.mUnk_15 = 0; + this->func_ov00_0208230c((s32 *) &unkStruct); + func_ov000_02078bf0((s32 *) &unkStruct, param_2); +} + +ARM void MapManager::func_ov00_020823a4(unk32 param_2) { + this->mMap->func_ov00_0207de68(param_2); +} + +ARM void MapManager::func_ov00_020823b4() { + this->mMap->func_ov00_0207de88(); +} + +ARM bool MapManager::func_ov00_020823c4(s32 *param_2, s32 param_3) { + return this->mMap->func_ov00_0207e08c(param_2, param_3); +} + +ARM s32 MapManager::func_ov00_020823d4(s32 param_2) { + return this->mMap->func_ov00_0207e0f0(param_2); +} + +ARM s32 MapManager::func_ov00_020823e4(s32 param_2) { + return this->mMap->func_ov00_0207e28c(param_2); +} + +ARM void MapManager::MapData_vfunc_b4() { + this->mMap->vfunc_b4(); +} + +ARM void MapManager::MapData_vfunc_9c() { + this->mMap->vfunc_9c(); +} + +ARM s32 MapManager::func_ov00_02082424() { + s32 var = this->mMap->vfunc_4c(); + if (var == 2) { + var = func_ov015_02129c14(this->mMap); // MapBase::GetUnk_19c_Unk_28 according to Ghidra + return var; + } + return 0; +} + +ARM bool MapManager::func_ov00_02082454(Vec3p *param_2, Vec3p *param_3) { + s32 var = this->mMap->vfunc_4c(); + if (var == 2) { + bool state = func_ov015_02129c24(this->mMap, param_2, param_3); + return state; + } + return false; +} + +ARM bool MapManager::func_ov00_02082494(s32 param_2) { + s32 var = this->mMap->vfunc_4c(); + if (var == 2) { + bool state = func_ov015_02129c34(this->mMap, param_2); + return state; + } + return false; +} + +ARM bool MapManager::func_ov00_020824cc(s32 param_2) { + s32 var = this->mMap->vfunc_4c(); + if (var == 2) { + bool state = func_ov015_02129c44(this->mMap, param_2); + return state; + } + return false; +} + +ARM s32 MapManager::func_ov00_02082504() { + s32 var = this->mMap->vfunc_4c(); + if (var == 2) return this->mMap->mUnk_1ac; + return 0; +} + +ARM Vec3p *MapManager::func_ov00_02082538() { + s32 var1 = this->mMap->vfunc_4c(); + Vec3p var0; + if (var1 == 2) return &this->mMap->mUnk_1a0; + var0 = gPlayerPos; + return &var0; +} + +ARM void MapManager::func_ov00_02082594() { + func_ov000_0208d620(data_027e0f68); +} + +ARM void MapManager::func_ov00_020825ac() { + func_ov000_0208d680(data_027e0f68); +} + +ARM s32 MapManager::GetCourseFilePath(char *courseName, char *buf) { + s32 var = sprintf(buf, "Map/%s/course.bin\0\0", courseName); + return var; +} + +ARM void MapManager::func_ov00_020825e4(unk32 param_2, char *buf) { + char *courseName = (char *) func_ov000_0209d71c(data_027e0f7c, param_2); + this->GetCourseFilePath(courseName, buf); +} + +ARM void MapManager::func_ov00_02082614(char *param_2, unk32 param_3) { + this->mCourse->func_ov00_0207ce20(param_3, 0, param_2, 4); +} + +ARM void MapManager::MapData_vfunc_b0(unk32 param_2, unk32 param_3) { + this->mMap->vfunc_b0(param_2, param_3); +} + +ARM void MapManager::func_ov00_02082650(s32 param_2, s32 param_3, unk32 param_4) { + this->mMap->func_ov00_0208005c(param_2, param_3, param_4); +} + +ARM void MapManager::func_ov00_02082660(s32 param_2, s32 param_3) { + this->mMap->func_ov00_0208007c(param_2, param_3); +} + +ARM void MapManager::func_ov00_02082670(unk32 param_2, s32 param_3) { + this->mMap->func_ov00_0208006c(param_2, param_3); +} + +ARM void MapManager::func_ov00_02082680(unk32 param_2, unk32 param_3) { + this->mMap->vfunc_98(param_2, 5, param_3); +} + +ARM void MapManager::func_ov00_020826a0(unk32 param_2, unk32 param_3) { + this->mMap->vfunc_98(param_2, 7, param_3); +} + +ARM void MapManager::CreateMap(unk32 mapType, unk32 param_3, unk32 param_4) { + MapBase *mapBase; + if (this->mMap == NULL) { + switch (mapType) { + case 4: this->mMap = new(data_027e0ce0[1], 4) Case_0(param_3, param_4); break; + case 2: this->mMap = new(data_027e0ce0[1], 4) MapBase(param_3, param_4); break; + case 0: this->mMap = new(data_027e0ce0[1], 4) Case_4(param_3, param_4); break; + case 1: + case 3: + default: this->mMap = new(data_027e0ce0[1], 4) Case_Default(param_3, param_4); break; + } + } +} + +ARM void MapManager::DestroyMap() { + if (this->mMap == NULL) { + return; + } + if (this->mMap != NULL) { + this->mMap->~MapBase(); // 0x0 offset instead of the expected 0x4. + } + this->mMap = NULL; + return; +} + +ARM void MapManager::MapData_vfunc_44() { + this->mMap->vfunc_44(); +} + +ARM void MapManager::func_ov00_02082808(bool param_2) { + int iVar1; + int iVar2; + + if (data_027e0d38->mUnk_14 == 1) { + return; + } + iVar1 = this->func_ov00_02084740(); + if (param_2) { + iVar2 = func_ov000_020a5e9c(&data_027e0d38->mUnk_0c); + if (iVar2 == 0) { + func_ov015_021849a4(&data_ov015_02190458); + } + func_ov000_020d70a4(&data_ov000_020eec68, iVar1, 0, 0x7f); + } else { + iVar2 = func_ov000_020d7424(&data_ov000_020eec68); + if (iVar1 == iVar2) { + return; + } + func_ov000_020d70a4(&data_ov000_020eec68, iVar1, 0, 0x7f); + } + iVar1 = func_ov000_020a5e9c(&data_027e0d38->mUnk_0c); + if (iVar1 == 0) { + return; + } + func_ov000_020d72b8(&data_ov000_020eec68); +} + +ARM s32 MapManager::MapData_vfunc_7c(s32 param_1, unk32 *param_2, s32 param_3, short param_4[4]) { + return this->mMap->vfunc_7c(param_1, param_2, param_3, param_4); +} + +ARM void MapManager::MapData_vfunc_84(unk32 param_2) { + this->mMap->vfunc_84(param_2); +} + +ARM bool MapManager::func_ov00_020828f8(s32 *param_2) { + return this->mMap->func_ov00_0207f38c(param_2); +} + +ARM u8 MapManager::GetNumMaps() { + return this->mCourse->mNumMaps; +} + +ARM s32 MapManager::func_ov00_02082914(unk32 param_2) { + void *pvVar1; + int iVar3; + int iVar4; + int iVar5; + Vec3p pVar1; + Entrance local_44; + Entrance local_30; + + switch (param_2) { + case 0xfa: + pvVar1 = data_027e0d38->mUnk_28; + local_30.mPos.x = *(int *) ((int) pvVar1 + 0x5c); + local_30.mPos.y = *(int *) ((int) pvVar1 + 0x60); + local_30.mPos.z = *(int *) ((int) pvVar1 + 100); + local_30.mAngle = *(unk16 *) ((int) pvVar1 + 0x68); + local_30.mId = *(unk8 *) ((int) pvVar1 + 0x6a); + local_30.mUnk_10 = *(int *) ((int) pvVar1 + 0x6c); + iVar3 = this->mMap->AddEntrance(&local_30); + return iVar3; + case 0xfb: + case 0xfc: + case 0xfd: + case 0xfe: break; + default: return (int) this; + } + local_44.mId = -1; + local_44.mUnk_10 = 0; + pvVar1 = data_027e0d38->mUnk_28; + pVar1 = *(Vec3p *) ((int) pvVar1 + 0x38); + iVar3 = 0x2000; + iVar4 = 0x2000; + iVar5 = 0xfd; + if (this->mCourse->mType == CourseType_Sea) { + iVar3 = this->mMap->vfunc_88(); + iVar3 = iVar3 + 0xa000; + iVar4 = this->mMap->vfunc_8c(); + iVar4 = iVar4 + 0xa000; + iVar5 = 0xfe; + } + local_44.mAngle = 0; + switch (param_2) { + case 0xfb: + pVar1.z = this->GetMapMaxZ(); + pVar1.z = pVar1.z - iVar4; + local_44.mAngle = 0x8000; + break; + case 0xfc: + pVar1.z = this->GetMapMinZ(); + pVar1.z = iVar4 + pVar1.z; + local_44.mAngle = 0; + break; + case 0xfd: + pVar1.x = GetMapMaxX(); + pVar1.x = pVar1.x - iVar3; + local_44.mAngle = 0xc000; + break; + case 0xfe: + pVar1.x = GetMapMinX(); + pVar1.x = iVar3 + pVar1.x; + local_44.mAngle = 0x4000; + } + local_44.mId = (unk8) param_2; + local_44.mPos.x = pVar1.x; + local_44.mPos.z = pVar1.z; + local_44.mPos.y = pVar1.y; + local_44.mUnk_10 = iVar5; + return this->mMap->AddEntrance(&local_44); +} + +ARM void MapManager::func_ov00_02082acc() { + this->mCourse->func_ov00_0207d7bc(); +} + +ARM s32 *MapManager::func_ov00_02082adc() { + return func_ov000_02096418(data_027e0f70); +} + +ARM void MapManager::func_ov00_02082af4() { + func_ov000_0208cc88(data_027e0f68); + this->mMap->vfunc_48(); + this->func_ov00_02082808(false); + this->mUnk_0a = true; + this->mUnk_0b = false; +} + +void MapManager::func_ov00_02082b3c(unk32 *param_2, Vec2b *param_3) { + u8 bVar1; + u16 uVar3; + u32 uVar4; + unk32 uVar5; + ActorManager *pAVar6; + PlayerBase *puVar2; + + this->mCourse->FindMapGridPos(param_3, this->mCourse, *(u32 *) ((unk32) param_2 + 0x12)); + uVar4 = this->GetCurrentMapPosX(); + if (((((param_3->x) == uVar4) && (uVar4 = this->GetCurrentMapPosY(), (param_3->y) == uVar4)) && + ((*(s32 *) (param_2 + 8) != 1 || (*(s32 *) (*(s32 *) data_027e0d38 + 0x14) != 1)))) && + (*(char *) (param_2 + 0x15) == '\0')) + { + gAdventureFlags->func_ov00_020976c8(); + this->mUnk_0c = *(unk32 *) (param_2 + 0x13); + gPlayer->TeleportToEntrance(*(unk32 *) (param_2 + 0x13), false); + func_ov004_02106db8(data_027e0c68); + this->mMap->vfunc_18(); + } else { + gAdventureFlags->func_ov00_020976c8(); + func_ov000_0208b13c(data_027e0f64); + uVar5 = this->func_ov00_02082d08(); + gActorManager->func_ov004_02105608(param_3->x, param_3->y, uVar5); + this->mMap->vfunc_2c(); + func_ov004_02102b28(data_027e0f68); + func_ov004_02102770(data_027e0f6c); + func_ov004_02102e3c(data_027e0f78); + bVar1 = *(u8 *) (param_2 + 0x12); + uVar3 = this->mCourse->FindCurrentMapData_Unk_04(); + uVar4 = this->mCourse->FindMapData_Unk_04((u32) bVar1); + (this->mCourse->mCurrMapPos).x = (u8) param_3->x; + (this->mCourse->mCurrMapPos).y = (u8) param_3->y; + this->func_ov004_021024c4(param_2, uVar3 != uVar4, 0); + gActorManager->func_ov004_02105578(*(unk32 *) ((unk32) param_2 + 0x12)); + data_027e103c->func_ov000_020cfcec(); + } +} + +ARM u8 MapManager::func_ov00_02082d08() { + Course *course = this->mCourse; + return course->mMapGrid[(u8) course->mCurrMapPos.x][(u8) course->mCurrMapPos.y]; +} + +ARM u8 MapManager::GetCurrentMapPosX() { + return this->mCourse->mCurrMapPos.x; +} + +ARM u8 MapManager::GetCurrentMapPosY() { + return this->mCourse->mCurrMapPos.y; +} + +ARM u8 MapManager::func_ov00_02082d40() { + switch (this->mCourse->mType) { + case CourseType_Sea: + return this->mCourse->mMapGrid[(u8) this->mCourse->mCurrMapPos.x][(u8) this->mCourse->mCurrMapPos.y]; + default: return this->mCourse->mUnk_0b1; + } +} + +ARM u32 MapManager::func_ov00_02082d74(unk32 param_2) { + return func_ov000_02078bc4(param_2); +} + +ARM void MapManager::func_ov00_02082d84(Vec2b *param_2, s32 *param_3, s32 *param_4) { + s32 mapWidth = this->GetMapWidth(); + u32 uVar3 = CoDivide64By32(0x100000, mapWidth << 0xc); + s32 mapHeight = this->GetMapHeight(); + u32 uVar4 = CoDivide64By32(0xc0000, mapHeight << 0xc); + // something related to x or width + s64 lVar1 = (s64) ((u8) param_2->x << 0xc) * (s32) uVar3 + 0x800; + *param_3 = (s32) (((s32) (lVar1 >> 0xc)) + ((s32) uVar3 >> 1) + 0x800) >> 0xc; + // something related to y or height + lVar1 = (s64) ((u8) param_2->y << 0xc) * (s32) uVar4 + 0x800; + *param_4 = (s32) (((s32) (lVar1 >> 0xc)) + ((s32) uVar4 >> 1) + 0x800) >> 0xc; +} + +ARM bool MapManager::func_ov00_02082e1c(s32 *param_2, s32 *param_3) { + unk32 local_20; // Unused. What could this be for? + unk32 local_24; // Unused. What could this be for? + unk32 local_28; // Vec3p instead ??? + s32 local_44[11]; // not [6] apparently + s32 local_48; + Vec2b local_4a; + u8 local_4b; + u8 local_4c; + u8 bVar1; + u8 bVar2; + s64 lVar3; + s32 iVar5; + u32 uVar7; + if (!this->mCourse->mUnk_25c) { + *param_2 = 0xc0; + *param_3 = 0xc0; + return false; + } + if (!this->mCourse->IsCurrentMapInMainGrid()) { + local_44[0] = -0x100; + local_48 = -0x100; + bVar1 = this->mMap->mUnk_01a; + iVar5 = data_027e0d38->func_ov000_02078b40(); + if (iVar5 == 0) { + // bVar2 = *(u8 *) (*(s32 *) (*(s32 *) PTR_PTR_overlay_d_0__02083068 + 0x28) + 0x9a); + } else { + // bVar2 = *(u8 *) (*(s32 *) (*(s32 *) PTR_PTR_overlay_d_0__02083068 + 0x28) + 0x2e); + } + uVar7 = (u32) bVar2; + if (uVar7 == 0xff) { + uVar7 = (u32) (u8) this->mCourse->mMapGrid[(u8) this->mCourse->mUnk_01e][(u8) this->mCourse->mUnk_01f]; + } + // iVar5 = UnkStruct_027e0d38::FUN_overlay_d_0__02078b40(*(UnkStruct_027e0d38 **) PTR_PTR_overlay_d_0__02083068); + if (iVar5 == 0) { + // iVar5 = *(s32 *) (*(s32 *) PTR_PTR_overlay_d_0__02083068 + 0x28); + local_24 = *(unk32 *) (iVar5 + 0xa4); + local_20 = *(unk32 *) (iVar5 + 0xa8); + local_28 = *(unk32 *) (iVar5 + 0xa0); + } else { + // iVar5 = *(int *) (*(int *) PTR_PTR_overlay_d_0__02083068 + 0x28); + local_24 = *(unk32 *) (iVar5 + 0x3c); + local_20 = *(unk32 *) (iVar5 + 0x40); + local_28 = *(unk32 *) (iVar5 + 0x38); + } + if (this->mCourse->GetMapScreenPos((u32) bVar1, local_44, &local_48)) { + uVar7 = this->mCourse->GetScreenMapCellSizeX(); + lVar3 = (s64) (s32) ((u32) (u8) this->mMap->mUnk_01b << 0xc) * (s64) (s32) uVar7 + 0x800; + *param_2 = local_44[0] + ((s32) (((u32) lVar3 >> 0xc | (s32) ((u64) lVar3 >> 0x20) * 0x100000) + 0x800) >> 0xc); + uVar7 = this->mCourse->GetScreenMapCellSizeY(); + local_4b = this->mMap->mUnk_01c; + } else { + this->mCourse->GetMapScreenPos(uVar7, local_44, &local_48); + this->mCourse->FindMapGridPos(&local_4a, this->mCourse, uVar7); + // this->func_ov00_02083a54(&local_4c, this, &local_28, (u32) local_4a.x, (u32) local_4a.y); + uVar7 = this->mCourse->GetScreenMapCellSizeX(); + lVar3 = (s64) (s32) ((u32) local_4c << 0xc) * (s64) (s32) uVar7 + 0x800; + *param_2 = local_44[0] + ((s32) (((u32) lVar3 >> 0xc | (s32) ((u64) lVar3 >> 0x20) * 0x100000) + 0x800) >> 0xc); + uVar7 = this->mCourse->GetScreenMapCellSizeY(); + } + lVar3 = (s64) (s32) ((u32) local_4b << 0xc) * (s64) (s32) uVar7 + 0x800; + *param_3 = local_48 + ((s32) (((u32) lVar3 >> 0xc | (s32) ((u64) lVar3 >> 0x20) * 0x100000) + 0x800) >> 0xc); + return true; + } +} + +ARM void MapManager::func_ov00_0208306c(s32 *param_2, s32 *param_3) { + MapManager *pMVar1; + s32 iVar2; + MapManager *pMVar3; + Vec2b auStack_2c[18]; + s32 local_28; // This has to be a Vec3p, but uncertain as of now. + unk32 local_24; // Unused. + unk32 local_20; // Unused. + Vec3p local_1c; + + pMVar3 = (MapManager *) this->mCourse->mUnk_008; + pMVar1 = this; // why + if (pMVar3 != (MapManager *) 0xfffffffd) { + pMVar1 = (MapManager *) 0xfffffffe; // I really don't get this + } + if (pMVar3 == (MapManager *) 0xfffffffd || pMVar3 == pMVar1) { + // iVar2 = *(s32 *) (*(s32 *) PTR_PTR_overlay_d_0__02083158 + 0x28); + local_28 = *(int *) (iVar2 + 0x5c); + local_24 = *(unk32 *) (iVar2 + 0x60); + local_20 = *(unk32 *) (iVar2 + 100); + /*this->func_ov00_02083244((u32) * (u8 *) (*(s32 *) (*(s32 *) PTR_PTR_overlay_d_0__02083158 + 0x28) + 0x56), &local_28, + param_2, param_3);*/ + return; + } + if (pMVar3 != (MapManager *) 0xffffffff) { + *param_2 = this->mCourse->mUnk_0b4; + *param_3 = this->mCourse->mUnk_0b8; + return; + } + local_1c.y = gPlayerPos.y; + local_1c.x = gPlayerPos.x; + local_1c.z = gPlayerPos.z; + // this->func_ov00_02083a1c(auStack_2c, this, &local_1c); + this->func_ov00_02082d84(auStack_2c, param_2, param_3); +} + +ARM void MapManager::func_ov00_0208315c(s32 *param_2, s32 *param_3) { + u32 uVar1; + s32 *piVar2; + UnkStruct_027e0d38_Unk28 *pvVar3; + s32 *piVar4; + Vec3p local_20; + Vec3p local_2c; + + *piVar4 = this->mCourse->mUnk_008; + *piVar2 = *param_2; + + if (*piVar4 != -3) { + *piVar2 = -2; + } + local_20.x = gPlayerPos.x; + local_20.y = gPlayerPos.y; + local_20.z = gPlayerPos.z; + uVar1 = this->func_ov00_02082d08(); + this->func_ov00_02083298(uVar1, &local_20, param_2, param_3); + + if (*piVar4 == -2 || piVar4 == piVar2) { + pvVar3 = data_027e0d38->mUnk_28; + local_2c.x = pvVar3->mUnk_5c[0]; + local_2c.y = pvVar3->mUnk_5c[1]; + local_2c.z = pvVar3->mUnk_5c[2]; + this->func_ov00_02083298((u32) * (u8 *) (*(s32 *) data_027e0d38->mUnk_28 + 0x56), &local_2c, param_2, param_3); + return; + } + if (*piVar4 != -1) { + *param_2 = this->mCourse->mUnk_0bc; + *param_3 = this->mCourse->mUnk_0c0; + } +} + +ARM void MapManager::func_ov00_02083244(u32 param_2, Vec3p *param_3, s32 *param_4, s32 *param_5) { + if (4 <= param_2) { + param_2 = 0; + } + *param_4 = (param_3->x - data_ov000_020e24e8[param_2].mUnk_0) + 0x800 >> 0xc; + *param_5 = (param_3->z - data_ov000_020e24e8[param_2].mUnk_4) + 0x800 >> 0xc; +} + +ARM void MapManager::func_ov00_02083298(u32 param_2, Vec3p *param_3, s32 *param_4, s32 *param_5) { + if (4 <= param_2) { + param_2 = 0; + } + + *param_4 = data_ov000_020e24c8[param_2].mUnk_0 + ((param_3->x - data_ov000_020e24e8[param_2].mUnk_0 >> 1) + 0x800 >> 0xc); + *param_5 = data_ov000_020e24c8[param_2].mUnk_4 + ((param_3->z - data_ov000_020e24e8[param_2].mUnk_4 >> 1) + 0x800 >> 0xc); +} + +ARM bool MapManager::GetCourseData_Unk_25c() { + return this->mCourse->mUnk_25c; +} + +ARM bool MapManager::IsMapInMainGrid(u32 map) { + return this->mCourse->IsMapInMainGrid(map); +} + +ARM bool MapManager::func_ov00_02083328() { + u32 map = (u32) this->func_ov00_02082d08(); + return this->mCourse->IsMapInMainGrid(map); +} + +ARM u8 MapManager::GetCourseMainGridSizeX() { + return (u8) this->mCourse->mMainGridSize.x; +} + +ARM u8 MapManager::GetCourseMainGridSizeY() { + return (u8) this->mCourse->mMainGridSize.y; +} + +ARM u16 MapManager::GetMapWidth() { + return this->mMap->mWidth; +} + +ARM u16 MapManager::GetMapHeight() { + return this->mMap->mHeight; +} + +ARM s32 MapManager::func_ov00_02083374() { + return this->GetMapWidth() << 0xc; +} + +ARM s32 MapManager::func_ov00_02083384() { + return this->GetMapHeight() << 0xc; +} + +ARM q20 MapManager::GetCourseMinX() { + return this->mCourse->mBounds.min.x; +} + +ARM q20 MapManager::GetCourseMinZ() { + return this->mCourse->mBounds.min.z; +} + +ARM q20 MapManager::GetCourseMaxX() { + return this->mCourse->mBounds.max.x; +} + +ARM q20 MapManager::GetCourseMaxZ() { + return this->mCourse->mBounds.max.z; +} + +ARM q20 MapManager::GetMapMinX() { + return this->mMap->mBounds.min.x; +} + +ARM q20 MapManager::GetMapMinZ() { + return this->mMap->mBounds.min.z; +} + +ARM q20 MapManager::GetMapMaxX() { + return this->mMap->mBounds.max.x; +} + +ARM q20 MapManager::GetMapMaxZ() { + return this->mMap->mBounds.max.z; +} + +ARM q20 MapManager::GetMapCenterX() { + return this->mMap->mCenter.x; +} + +ARM q20 MapManager::GetMapCenterZ() { + return this->mMap->mCenter.z; +} + +ARM void MapManager::GetMapMinBounds(Vec3p *param_2) { + MapBase *mapBase = this->mMap; + param_2->x = mapBase->mBounds.min.x; + param_2->y = mapBase->mBounds.min.y; + param_2->z = mapBase->mBounds.min.z; +} + +ARM void MapManager::GetMapMaxBounds(Vec3p *param_2) { + MapBase *mapBase = this->mMap; + param_2->x = mapBase->mBounds.max.x; + param_2->y = mapBase->mBounds.max.y; + param_2->z = mapBase->mBounds.max.z; +} + +ARM void MapManager::GetMapCenter(Vec3p *param_2) { + MapBase *mapBase = this->mMap; + param_2->x = mapBase->mCenter.x; + param_2->y = mapBase->mCenter.y; + param_2->z = mapBase->mCenter.z; +} + +ARM void MapManager::func_ov00_0208346c(AABB *param_2) { + (param_2->min).x = this->GetMapMinX(); + (param_2->min).z = this->GetMapMinZ(); + (param_2->max).x = this->GetMapMaxX(); + (param_2->max).z = this->GetMapMaxZ(); + (param_2->max).y = 0x1333; + (param_2->min).y = 0; +} + +ARM void MapManager::func_ov00_020834bc(Vec3p *param_2, unk32 param_3, unk32 param_4) { + Vec3p *mapCenter = this->mCourse->FindMapCenter((u32) (u8) this->mCourse->mMapGrid[param_3][param_4]); + s32 iVar2; + param_2->x = mapCenter->x; + param_2->y = mapCenter->y; + param_2->z = mapCenter->z; + iVar2 = this->func_ov00_02083374(); + param_2->x = param_2->x - (iVar2 >> 1); + iVar2 = this->func_ov00_02083384(); + param_2->z = param_2->z - (iVar2 >> 1); +} + +ARM void MapManager::func_ov00_02083524(Vec3p *param_2, unk32 param_3, unk32 param_4) { + Vec3p *mapCenter = this->mCourse->FindMapCenter((u32) (u8) this->mCourse->mMapGrid[param_3][param_4]); + param_2->x = mapCenter->x; + param_2->y = mapCenter->y; + param_2->z = mapCenter->z; +} + +ARM void MapManager::func_ov00_02083560(Vec2b *param_1, MapManager *param_2, u32 param_3) { + param_2->mCourse->FindMapGridPos(param_1, param_2->mCourse, param_3); +} + +ARM u8 MapManager::func_ov00_02083570(u8 param_2, u8 param_3) { + return this->mCourse->mMapGrid[param_2][param_3]; +} + +ARM unk32 MapManager::func_ov00_02083588() { + return this->mCourse->FindMapData_Unk_08(this->func_ov00_02082d08()); +} + +ARM unk32 MapManager::func_ov00_020835a4() { + return this->mCourse->Get_Unk_c8_00(); +} + +ARM unk32 MapManager::func_ov00_020835b4() { + return this->mCourse->Get_Unk_c8_04(); +} + +ARM bool MapManager::func_ov00_020835c4(s32 param_1, unk32 param_2) { + return this->mCourse->func_ov00_0207d404(param_1, 0, param_2, 3); +} + +ARM bool MapManager::func_ov00_020835e4(s32 param_2, unk32 *param_3, unk8 *param_4) { + return this->mCourse->func_ov00_0207caa8(param_2, param_3, param_4); +} + +ARM unk32 MapManager::func_ov00_020835f4(s32 param_2) { + return this->mCourse->func_ov00_0207cb30(param_2); +} + +ARM void MapManager::func_ov00_02083604(s32 param_2) { + this->mCourse->func_ov00_0207cbe8(param_2); +} + +ARM unk8 MapManager::func_ov00_02083614(s32 param_2) { + return this->mCourse->func_ov00_0207cc24(param_2); +} + +ARM bool MapManager::GetEntrancePos(Entrance *param_1, unk32 entranceId) { + Entrance *entrance = this->mMap->FindEntrance(entranceId); + *param_1 = *entrance; + return true; +} + +ARM bool MapManager::func_ov00_02083664(Entrance *param_2, unk32 entranceId) { + Entrance entrance; + entrance.mId = (u8) 0xff; + entrance.mUnk_10 = 0; + if (this->GetEntrancePos(&entrance, entranceId)) { + param_2->mPos.x = entrance.mPos.x; + param_2->mPos.y = entrance.mPos.y; + param_2->mPos.z = entrance.mPos.z; + return true; + } + return false; +} + +ARM s32 MapManager::GetTriggerBoundingBox(s32 param_2, AABB *param_3) { + return this->mMap->GetTriggerBoundingBox(param_2, param_3); +} + +ARM s32 MapManager::GetTriggerBoundingBoxes(s32 param_2, AABB *param_3, s32 param_4) { + return this->mMap->GetTriggerBoundingBoxes(param_2, param_3, param_4); +} + +ARM bool MapManager::func_ov00_020836dc(u32 type, u32 actorId) { + Actor *actor; + Vec3p playerPos; + + switch (actorId) { + case 0: + case 1: + q20 y = gPlayerPos.y; + playerPos.x = gPlayerPos.x; + playerPos.y = y; + playerPos.z = gPlayerPos.z; + break; + default: + actor = gActorManager->FindActorById(actorId); + if (actor == NULL) { + return false; + } + playerPos.x = actor->mPos.x; + playerPos.y = actor->mPos.y; + playerPos.z = actor->mPos.z; + break; + } + return this->IsTriggerTypeOverlapped(type, &playerPos); +} + +ARM bool MapManager::IsTriggerTypeOverlapped(u32 type, Vec3p *pos) { + return this->mMap->IsTriggerTypeOverlapped(type, pos); +} + +ARM bool MapManager::GetOverlappingTrigger(Vec3p *param_2) { + return this->mMap->GetOverlappingTrigger(param_2); +} + +ARM bool MapManager::func_ov00_02083790(s32 param_2) { + bool bVar1; + int iVar2; + int aiStack_14; + int iStack_18; + + if (param_2 == 0) { + return true; + } + *(int *) (*(int *) (*(unk32 *) data_027e0f64 + 8) + 0x1b4) = param_2; + *(int *) (*(int *) (*(unk32 *) data_027e0f64 + 4) + 0x1b4) = param_2; + iVar2 = data_027e0d38->func_ov000_02078b40(); + if ((iVar2 != 0) && (bVar1 = this->func_ov00_02082e1c(&aiStack_14, &iStack_18), !bVar1)) { + func_ov000_02079898(data_027e0d3c, param_2, 0x10); + gActorManager->func_ov00_020c3ce8(param_2, true); + } + bVar1 = this->mMap->AnyTrigger_func_0c(param_2); + return bVar1; +} + +ARM bool MapManager::func_ov00_02083840(s32 param_2) { + bool bVar3; + s32 iVar4; + + if (param_2 == 0) { + return true; + } + *(unk32 *) (*(unk32 *) (*(unk32 *) data_027e0f64 + 8) + 0x1b4) = -1; + *(unk32 *) (*(unk32 *) (*(unk32 *) data_027e0f64 + 4) + 0x1b4) = -1; + iVar4 = func_ov000_02078fe8(data_027e0d3c); + if (0 <= iVar4) { + func_ov000_020798bc(data_027e0d3c, 0x10); + gActorManager->func_ov00_020c3ce8(param_2, false); + } + bVar3 = this->mMap->TriggerOfType_vfunc_10(param_2); + return bVar3; +} + +ARM bool MapManager::AddTrigger(s32 param_2) { + return this->mMap->AddTrigger(param_2); +} + +ARM bool MapManager::func_ov00_020838d8(s32 param_2) { + return this->mMap->func_ov00_0207ff88(param_2); +} + +ARM bool MapManager::FindExit(u32 param_2, Exit *param_3) { + return this->mMap->FindExit(param_2, param_3); +} + +ARM char MapManager::func_ov00_020838f8(Exit *param_2) { + return this->mMap->func_ov00_02080140(param_2); +} + +ARM bool MapManager::func_ov00_02083908(char id, CameraViewpoint *param_3) { + return this->mMap->FindViewpoint_Unk_4(id, param_3); +} + +ARM void MapManager::func_ov00_02083918(s32 param_2, CameraViewpoint *param_3) { + this->mMap->FindViewpoint_Unk_0(param_2, param_3); +} + +ARM void MapManager::GetCurrentViewpoint(CameraViewpoint *param_2, s32 param_3) { + this->mMap->GetCurrentViewpoint(param_2, param_3); +} + +ARM unk32 MapManager::func_ov00_02083938(s32 param_2) { + return this->mMap->GetCurrentViewpoint_Unk_00(param_2); +} + +ARM void MapManager::SetCurrentViewpointId(unk8 value, s32 index) { + this->mMap->mCurrViewpointId[index] = value; +} + +ARM void MapManager::func_ov00_02083958(s32 param_2) { + this->mMap->func_ov00_0207f924(param_2); +} + +ARM void MapManager::func_ov00_02083968(u32 param_2, unk8 *param_3) { + this->mMap->func_ov00_02080824(param_2, param_3); +} + +ARM bool MapManager::func_ov00_02083978(Vec3p *param_2, Vec3p *param_3) { + s32 iVar1 = this->mMap->func_ov00_02080a78(param_2); + if (iVar1 != 0) { + param_3->x = *(s32 *) (iVar1 + 0x8); + param_3->y = *(s32 *) (iVar1 + 0xc); + param_3->z = *(s32 *) (iVar1 + 0x10); + return true; + } + return false; +} + +ARM bool MapManager::func_ov00_020839b4(s32 param_2) { + return this->mMap->AddUnk_130(param_2); +} + +ARM bool MapManager::func_ov00_020839c4(s32 param_2) { + return this->mMap->func_ov00_020809b8(param_2); +} + +ARM s32 MapManager::func_ov00_020839d4(s32 param_2) { + return this->mMap->GetClampedTileX(param_2 - this->GetMapCenterX()); +} + +ARM s32 MapManager::func_ov00_020839f8(s32 param_2) { + return this->mMap->GetClampedTileY(param_2 - this->GetMapCenterZ()); +} + +ARM void MapManager::func_ov00_02083a1c(Vec2b *param_1, MapManager *param_2, Vec3p *param_3) { + s8 x = param_2->func_ov00_020839f8(param_3->z); + s8 y = param_2->func_ov00_020839d4(param_3->x); + param_1->x = y; + param_1->y = x; +} + +ARM void MapManager::func_ov00_02083a54(u8 *param_1, MapManager *param_2, s32 *param_3, s32 param_4, s32 *param_5) { + bool bVar1; + unk8 uVar2; + unk8 uVar3; + s32 iVar4; + u32 uVar5; + s32 *piVar6; + Vec3p local_38; + Vec3p local_2c; + Vec3p VStack_20; + + piVar6 = param_3; + iVar4 = param_2->GetCourseData_Unk_25c(); + if (iVar4 == 0) { + uVar2 = param_2->func_ov00_020839f8(param_3[2]); + uVar3 = param_2->func_ov00_020839d4(*param_3); + *param_1 = uVar3; + param_1[1] = uVar2; + return; + } + if (param_4 != -1) { + piVar6 = param_5; + } + if (param_4 != -1 && piVar6 != (int *) 0xffffffff) { + uVar5 = (u32) * (u8 *) ((s32) piVar6 + (s32) (param_2->mCourse->mMapGrid + param_4)); + } else { + uVar5 = param_2->func_ov00_02082d08(); + } + bVar1 = param_2->IsMapInMainGrid(uVar5); + if (!bVar1) { + uVar2 = param_2->func_ov00_020839f8(param_3[2]); + uVar3 = param_2->func_ov00_020839d4(*param_3); + *param_1 = uVar3; + param_1[1] = uVar2; + return; + } + param_2->func_ov00_02083524(&VStack_20, param_4, *param_5); + local_38.x = *param_3; + local_38.y = param_3[1]; + local_38.z = param_3[2]; + Vec3p_Sub(&local_38, &VStack_20, &local_2c); + uVar2 = param_2->mMap->GetClampedTileY(local_2c.z); + uVar3 = param_2->mMap->GetClampedTileX(local_2c.x); + *param_1 = uVar3; + param_1[1] = uVar2; +} + +ARM s32 MapManager::GetTileStartX(unk32 x) { + return this->GetMapCenterX() + this->mMap->GetTileStartX(x); +} + +ARM s32 MapManager::GetTileStartZ(unk32 z) { + return this->GetMapCenterZ() + this->mMap->GetTileStartZ(z); +} + +ARM s32 MapManager::GetTileEndX(unk32 x) { + return this->GetMapCenterX() + this->mMap->GetTileEndX(x); +} + +ARM s32 MapManager::GetTileEndZ(unk32 z) { + return this->GetMapCenterZ() + this->mMap->GetTileEndZ(z); +} + +ARM s32 MapManager::func_ov00_02083c24(unk32 x) { + return this->GetMapCenterX() + this->mMap->GetTileStartX(x) + 0x800; +} + +ARM s32 MapManager::func_ov00_02083c50(unk32 z) { + return this->GetMapCenterZ() + this->mMap->GetTileStartZ(z) + 0x800; +} + +ARM void MapManager::func_ov00_02083c7c(Vec3p *param_2, Vec2b param_3) { + Vec3p local_28; + + param_2->x = this->func_ov00_02083c24(param_3.x); + param_2->z = this->func_ov00_02083c50(param_3.y); + local_28 = *param_2; + param_2->y = this->MapData_vfunc_68(&local_28, true); +} + +ARM void MapManager::func_ov00_02083ce8(Vec3p *param_2, u32 param_3, s32 param_4, u32 param_5) { + bool bVar1; + u32 uVar2; + Vec3p local_38; + Vec3p local_2c; + + uVar2 = param_3; + bVar1 = GetCourseData_Unk_25c(); + if (bVar1) { + if (param_4 != -1) { + uVar2 = param_5; + } else if (param_4 != -1 && uVar2 != -1) { + uVar2 = this->mCourse->mMapGrid[param_4][uVar2]; + } else { + uVar2 = this->func_ov00_02082d08(); + } + bVar1 = this->IsMapInMainGrid(uVar2); + if (bVar1) { + func_ov00_02083524(&local_2c, param_4, param_5); + param_2->x = local_2c.x + this->mMap->GetTileStartX(param_3 & 0xff) + 0x800; + param_2->z = local_2c.z + this->mMap->GetTileStartZ(param_3 >> 8 & 0xff) + 0x800; + } else { + param_2->x = this->mMap->GetTileStartX(param_3 & 0xff) + 0x800; + param_2->z = this->mMap->GetTileStartZ(param_3 >> 8 & 0xff) + 0x800; + } + } else { + param_2->x = this->mMap->GetTileStartX(param_3 & 0xff) + 0x800; + param_2->z = this->mMap->GetTileStartZ(param_3 >> 8 & 0xff) + 0x800; + } + local_38 = *param_2; + param_2->y = MapData_vfunc_68(&local_38, true); +} + +ARM s32 MapManager::func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4) { + Vec2b local_8; + local_8.x = param_2; + local_8.y = param_3; + return this->mMap->vfunc_60(&local_8); +} + +ARM unk32 MapManager::MapData_vfunc_60(Vec2b *param_1) { + return this->mMap->vfunc_60(param_1); +} + +ARM bool MapManager::func_ov00_02083e70(Vec2b *param_2) { + int iVar1; + int iVar2; + + iVar1 = this->MapData_vfunc_54(param_2); + + switch (iVar1) { + case 0x1b: + case 0x2b: + case 0x4e: + case 0x4f: return true; + } + + iVar1 = this->MapData_vfunc_60(param_2); + iVar2 = this->GetMapData_Unk_48(); + return iVar1 >= iVar2; +} + +ARM unk32 MapManager::MapData_vfunc_68(Vec3p *param_1, bool param_2) { + return this->mMap->vfunc_68(param_1, param_2); +} + +ARM s32 MapManager::func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3, bool param_4) { + Vec3p local_18 = *param_2; + + if (param_3->y > local_18.y) { + local_18.y = param_3->y; + } + return this->mMap->vfunc_68(&local_18, param_4); +} + +ARM unk32 MapManager::func_ov00_02083f44(Vec3p *param_2, bool param_3) { + Vec3p local_18; + + local_18 = *param_2; + local_18.y = *(data_ov000_020e24a4 + 0x8); + return this->func_ov00_02083ef8(param_2, &local_18, param_3); +} + +unk8 MapManager::MapData_vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4) { + this->mMap->vfunc_6c(param_2, param_3, param_4); +} + +ARM unk32 MapManager::MapData_vfunc_70(Vec3p *param_2) { + return this->mMap->vfunc_70(param_2); +} + +ARM void MapManager::func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3) { + unk32 *iVar1; // find type with field that exists at offset 0xc + s32 dVar2; + + iVar1 = (unk32 *) param_2->mMap->vfunc_74(param_3); + if (iVar1 != NULL) { + *param_1 = *(u32 *) ((unk32 *) iVar1 + 0x3); // offset 0xc + return; + } + dVar2 = param_2->MapData_vfunc_70(param_3); + if (dVar2 != 0xffff) { + func_ov000_02093a1c(param_1, data_027e0f6c, dVar2); + return; + } + *param_1 = 0; +} + +void MapManager::GetTileWorldBounds(Vec2b *tile, AABB *tileBounds) { + int iVar1; + Vec3p local_20; + + this->mMap->GetTileBounds(tile, tileBounds); + iVar1 = this->GetMapCenterZ(); + local_20.x = this->GetMapCenterX(); + local_20.y = 0; + local_20.z = iVar1; + Vec3p_Add(&tileBounds->min, &local_20, &tileBounds->min); + Vec3p_Add(&tileBounds->max, &local_20, &tileBounds->max); +} + +unk32 MapManager::MapData_vfunc_54(Vec2b *param_1) { + return this->mMap->vfunc_54(param_1); +} + +ARM unk32 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3) { + // Correct param types? + Vec2b vec; + vec.x = param_2; + vec.y = param_3; + return this->mMap->vfunc_54(&vec); +} + +unk32 *MapManager::MapData_vfunc_78(Vec2b *param_1) { + return this->mMap->vfunc_78(param_1); +} + +unk32 MapManager::func_ov00_020840dc(Vec2b *param_1) { + UnkStruct_02037750 *piVar1; // placeholder struct until I can find the real struct + + piVar1 = (UnkStruct_02037750 *) this->MapData_vfunc_78(param_1); + if (piVar1 != NULL) { + return piVar1->vfunc_1c(); + } + return -1; +} + +unk8 MapManager::func_ov00_02084100(unk32 *param_1, MapManager *param_2) { + unk32 uVar1 = param_2->mMap->mUnk_040; + *param_1 = param_2->mMap->mUnk_044; + param_1[1] = uVar1; +} + +u32 MapManager::GetMapData_Unk_48() { + return this->mMap->mUnk_048; +} + +unk32 MapManager::GetMapData_Unk_4c() { + return this->mMap->mUnk_04c; +} + +unk32 MapManager::func_ov00_0208412c() { + return this->mMap->func_ov00_0207f934(); +} + +void MapManager::func_ov00_0208413c(unk32 param_2) { + this->mMap->func_ov00_0207f948(param_2); +} + +unk8 MapManager::MapData_vfunc_58(Vec2b *param_1, int param_2) { + this->mMap->vfunc_58(param_1, param_2); +} + +ARM s32 MapManager::func_ov00_02084164(Vec2b *param_2) { + int iVar1; + unk32 uVar2; + + iVar1 = this->mMap->vfunc_58(param_2, 7); + if (iVar1 != 0) { + return 0; + } + uVar2 = this->MapData_vfunc_54(param_2); + switch (uVar2) { + case 0: + case 8: + case 9: + case 0xb: + case 0xc: + case 0xd: + case 0xe: + case 0xf: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x15: + case 0x16: + case 0x18: + case 0x1a: + case 0x20: + case 0x21: + case 0x22: + case 0x23: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2a: + case 0x2c: + case 0x2d: + case 0x2e: + case 0x2f: + case 0x31: + case 0x32: + case 0x35: + case 0x36: + case 0x38: + case 0x39: + case 0x3a: + case 0x3b: + case 0x3c: + case 0x3d: + case 0x3e: + case 0x3f: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x4d: + case 0x51: + case 0x52: + case 0x53: + case 0x54: return 1; + } + return 0; +} + +u8 MapManager::GetMapData_Unk_0a() { + return this->mMap->mUnk_00a; +} + +u8 MapManager::GetMapData_Unk_0b() { + return this->mMap->mUnk_00b; +} + +unk8 MapManager::MapData_vfunc_a4(unk8 *param_1) { + this->mMap->vfunc_a4(param_1); +} + +ARM void MapManager::func_ov00_0208433c(Vec3p *param_2, Vec2s *param_3) { + Vec3p local_18 = *param_2; + Vec3p VStack_24; + Vec2s local_28; + + this->GetMapMinBounds(&VStack_24); + Vec3p_Sub(&local_18, &VStack_24, &local_18); + this->mMap->func_ov00_0207f53c(&local_28, this->mMap, &local_18); + param_3->x = local_28.x; + param_3->y = local_28.y; +} + +unk8 MapManager::func_ov00_0208439c(Vec2s *param_2, Vec3p *param_3) { + s32 iVar1; + Vec3p VStack_18; + + this->mMap->func_ov00_0207f630(param_2, param_3); + this->GetMapMinBounds(&VStack_18); + Vec3p_Add(param_3, &VStack_18, param_3); + iVar1 = this->MapData_vfunc_68(param_3, true); + param_3->y = iVar1; +} + +void MapManager::func_ov00_020843ec(s32 *param_2) { + u32 uVar1; + s32 iVar2; + s32 iVar3; + unk16 uStack_88; + unk16 uStack_86; + unk16 uStack_84; + unk16 uStack_82; + Vec2s local_80; + Vec2s local_7c; + Vec2s local_78; + Vec2s local_74; + Vec3p local_70; + Vec3p local_64; + s32 local_58; + s32 iStack_54; + s32 iStack_50; + s32 local_4c; + s32 iStack_48; + s32 iStack_44; + Vec3p local_40; + Vec3p local_34; + s32 local_28; + s32 local_24; + s32 local_20; + + // uVar1 = (**(code **) (*param_2 + 8))(); // Which function is this? + if (uVar1 < 2) { + // (**(code **) (*param_2 + 0x3c))(param_2, &local_28); // And this? + // local_40.z = (**(code **) (*param_2 + 0x40))(); // What about this? + local_34.x = local_28 - local_40.z; + local_34.z = local_20 - local_40.z; + local_40.x = local_28 + local_40.z; + local_40.z = local_20 + local_40.z; + local_34.y = local_24; + local_40.y = local_24; + iVar2 = this->GetMapMinX(); + local_34.x = local_34.x - iVar2; + iVar2 = this->GetMapMinZ(); + local_34.z = local_34.z - iVar2; + iVar2 = this->GetMapMinX(); + local_40.x = local_40.x - iVar2; + iVar2 = this->GetMapMinZ(); + local_40.z = local_40.z - iVar2; + this->mMap->func_ov00_0207f53c(&local_74, this->mMap, &local_34); + this->mMap->func_ov00_0207f53c(&local_78, this->mMap, &local_40); + iVar2 = (int) local_74.x; + if (iVar2 <= local_78.x) { + do { + iVar3 = (int) local_74.y; + if (iVar3 <= local_78.y) { + do { + uStack_84 = (unk16) iVar2; + uStack_82 = (unk16) iVar3; + this->mMap->vfunc_ac(/*&uStack_84*/); // No args? + iVar3 = (iVar3 + 1) * 0x10000 >> 0x10; + } while (iVar3 <= local_78.y); + } + iVar2 = (iVar2 + 1) * 0x10000 >> 0x10; + } while (iVar2 <= local_78.x); + return; + } + return; + } + if (uVar1 == 2) { + this->mMap->vfunc_2c(/*&local_58*/); // No args? + local_64.x = local_58; + local_64.y = iStack_54; + local_64.z = iStack_50; + local_70.x = local_4c; + local_70.y = iStack_48; + local_70.z = iStack_44; + iVar2 = this->GetMapMinX(); + local_64.x = local_64.x - iVar2; + iVar2 = this->GetMapMinZ(); + local_64.z = local_64.z - iVar2; + iVar2 = this->GetMapMinX(); + local_70.x = local_70.x - iVar2; + iVar2 = this->GetMapMinZ(); + local_70.z = local_70.z - iVar2; + this->mMap->func_ov00_0207f53c(&local_7c, this->mMap, &local_64); + this->mMap->func_ov00_0207f53c(&local_80, this->mMap, &local_70); + iVar2 = (int) local_7c.x; + if (iVar2 <= local_80.x) { + do { + iVar3 = (int) local_7c.y; + if (iVar3 <= local_80.y) { + do { + uStack_88 = (unk16) iVar2; + uStack_86 = (unk16) iVar3; + this->mMap->vfunc_ac(/*&uStack_88*/); // No args? + iVar3 = (iVar3 + 1) * 0x10000 >> 0x10; + } while (iVar3 <= local_80.y); + } + iVar2 = (iVar2 + 1) * 0x10000 >> 0x10; + } while (iVar2 <= local_80.x); + } + } +} + +ARM unk32 MapManager::GetMapData_Unk_38() { + return this->mMap->mUnk_038; +} + +ARM s32 MapManager::func_ov00_020846a4() { + s32 iVar1 = *(s32 *) ((s32) this->mMap->mUnk_144 + 4); + if (iVar1 == 0xff) { + switch (this->mCourse->mType) { + case CourseType_Dungeon: + case CourseType_TempleOfTheOceanKing: + case CourseType_Battle: return 1; + case CourseType_Sea: return 2; + case CourseType_Normal: + default: return 0; + } + } + return iVar1; +} + +ARM s32 MapManager::func_ov00_02084700() { + s32 iVar1; + iVar1 = this->mMap->mUnk_034; + if (iVar1 == -1) { + iVar1 = this->mCourse->mUnk_0c4; + } + if ((iVar1 == 0x1b) && (gActorManager->mUnk_29 != false)) { + iVar1 = 0x1c; + } + return iVar1; +} + +unk32 MapManager::func_ov00_02084740() { + static const s32 data_ov000_020d88f0[] = { + // Map IDs? + 0x51, 0x6e, 0x65, 0x50, 0x30, 0x74, 0x49, 0x50, 0x51, 0x54, 0x52, 0x53, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5f, + 0x60, 0x61, 0x5c, 0x5b, 0x5e, 0x62, 0x63, 0x64, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x5d, 0x31, 0x39, + 0x3a, 0x3b, 0x3c, 0x32, 0x33, 0x34, 0x35, 0x38, 0x3d, 0xd9, 0xdc, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0x6f, 0x72, + 0x75, 0x78, 0x79, 0x7a, 0x7b, 0x7f, 0x83, 0x87, 0x7c, 0x80, 0x84, 0x0, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, + 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9d, 0x9e, 0x9f, 0xa0, 0x70, 0x71, + 0x73, 0x76, 0x77, 0x7d, 0x7e, 0x81, 0x82, 0x86, 0x9c, 0x36, 0x37, 0xd0, 0xd1, 0xcd, 0x19a}; + bool bVar1; + int iVar2; + int iVar3; + unk32 uVar4; + unk32 uVar5; + unk32 uVar6; + unk32 uVar7; + s32 *puVar8; + unk32 *puVar9; + unk32 local_1c8; + unk32 local_1c4; + unk32 local_1c0; + unk32 local_1bc[108]; + + // iVar2 = this->func_ov00_02084700(?); // what param? + // iVar3 = UnkStruct_027e0d38::FUN_overlay_d_0__02078b40(*(UnkStruct_027e0d38 **) PTR_PTR_overlay_d_0__020847d4); + if (iVar3 != 2) { + local_1c8 = *(unk32 *) gPlayerPos.x; + local_1c4 = *(unk32 *) gPlayerPos.y; + local_1c0 = *(unk32 *) gPlayerPos.z; + // bVar1 = FUN_overlay_d_0__02083780(&local_1c8); // MapManager method? + if (bVar1) { + // iVar2 = this->func_ov00_020847f0(); + } + } + puVar9 = local_1bc; + iVar3 = 0x1b; + puVar8 = (s32 *) data_ov000_020d88f0; + do { + uVar4 = *puVar8; + uVar5 = puVar8[1]; + uVar6 = puVar8[2]; + uVar7 = puVar8[3]; + puVar8 = puVar8 + 4; + *puVar9 = uVar4; + puVar9[1] = uVar5; + puVar9[2] = uVar6; + puVar9[3] = uVar7; + puVar9 = puVar9 + 4; + iVar3 = iVar3 + -1; + } while (iVar3 != 0); + return local_1bc[iVar2]; +} + +unk32 MapManager::func_ov00_020847e0() { + return *(s32 *) ((s32) this->mMap->mUnk_144 + 0xc); +} + +ARM unk32 MapManager::func_ov00_020847f0(unk32 type) { + TriggerBase *triggerBase = this->mMap->FindTrigger(type); + + if (triggerBase == NULL) { + return this->func_ov00_02084700(); + } + if ((triggerBase->mUnk_0c != -1) && ((int) triggerBase->mUnk_0c < 0x6c)) { + return triggerBase->mUnk_0c; + } + return this->func_ov00_02084700(); +} + +bool MapManager::func_ov00_02084838() { + unk32 uVar1 = this->GetMapData_Unk_38(); + switch (uVar1) { + case 1: + case 2: + case 3: + case 4: + case 5: + case 10: + case 0xb: + case 0xc: + case 0x11: + case 0x13: + case 0x14: + case 0x15: + case 0x16: return true; + default: return false; + } +} + +bool MapManager::func_ov00_020848b8() { + unk32 uVar1 = this->func_ov00_020846a4(); + switch (uVar1) { + case 6: + case 0xc: + case 0xd: + case 0xf: + case 0x11: return true; + } + return false; +} + +void MapManager::func_ov00_02084924(u32 param_2) { + this->mMap->func_ov00_0208008c(param_2); +} + +ARM bool MapManager::func_ov00_02084934(Vec3p *param_2) { + Vec3p local_20; + + q20 mapCenterZ = this->GetMapCenterZ(); + q20 y = param_2->y; + q20 zDiff = param_2->z - mapCenterZ; + local_20.x = param_2->x - this->GetMapCenterX(); + local_20.y = y; + local_20.z = zDiff; + return this->mMap->IsInBounds(&local_20); +} + +u8 MapManager::GetMapData_Unk_06() { + return this->mMap->mUnk_006; +} + +u8 MapManager::GetMapData_Unk_07() { + return this->mMap->mUnk_007; +} + +bool MapManager::func_ov00_0208499c() { + s32 iVar2 = this->func_ov00_020849c0(); + if (iVar2 == 0) { + return this->mCourse->IsCurrentMapInMainGrid(); + } + return false; +} + +bool MapManager::func_ov00_020849c0() { + return this->mCourse->mUnk_008 == -2; +} + +bool MapManager::func_ov00_020849dc() { + return this->mCourse->mUnk_008 == -3; +} + +ARM bool MapManager::func_ov00_020849f8() { + switch (func_ov000_020a5e9c(&data_027e0d38->mUnk_0c)) { + case 5: return true; + default: + if (this->GetMapData_Unk_06() != 0 && !this->func_ov00_020849c0()) { + return true; + } + break; + } + return false; +} + +u8 MapManager::func_ov00_02084a50() { + return this->mMap->mUnk_011; +} + +void MapManager::SpawnNPC(Vec3p *pos, unk32 param_3, unk32 param_4) { + ActorSpawnOptions actorSpawnOptions; + actorSpawnOptions.mUnk_1c.id = -1; + actorSpawnOptions.mUnk_1c.index = -1; + func_ov000_020c3348(&actorSpawnOptions); + actorSpawnOptions.mUnk_24 = param_3; + actorSpawnOptions.mUnk_28 = param_4; + gActorSpawner->Spawn(ActorTypeId_EVIC, pos, &actorSpawnOptions, NULL); +} + +ARM bool MapManager::func_ov00_02084ac4(u32 actorId) { + Actor *iVar1; + bool bVar1; + + iVar1 = gActorManager->FindActorById(actorId); + if (iVar1 == NULL) { + return false; + } + + if (iVar1->mType != ActorTypeId_EVIC) return false; + iVar1->mAlive = false; + return true; +} + +void MapManager::SetNumKeys(unk32 keys) { + this->mCourse->mNumKeys = keys; +} + +unk32 MapManager::GetNumKeys() { + return this->mCourse->mNumKeys; +} + +void MapManager::SetBlueWarpOpen(bool state) { + this->mCourse->mBlueWarpOpen = state; +} + +bool MapManager::GetBlueWarpOpen() { + return this->mCourse->mBlueWarpOpen; +} + +ARM void MapManager::func_ov00_02084b38(u32 param_2, unk32 param_3, bool param_4) { + MapBase *pMVar1; + if (param_2 == 0) { + return; + } + switch (param_3) { + case 0: + pMVar1 = this->mMap; + if (param_4) { + pMVar1->mUnk_180[param_2 >> 5].mUnk_0 |= 1 << (param_2 & 0x1f); + break; + } + pMVar1->mUnk_180[param_2 >> 5].mUnk_0 &= ~(1 << (param_2 & 0x1f)); + break; + case 1: this->mCourse->SetMapDataFlag0(param_2, param_4); break; + case 2: this->mCourse->SetFlag0(param_2, param_4); break; + case 3: this->mCourse->SetFlag1(param_2, param_4); break; + default: break; + } +} + +bool MapManager::func_ov00_02084be0(u32 param_2, unk32 param_3) { + bool bVar1; + + if (param_2 == 0) { + return false; + } + switch (param_3) { + case 0: return (this->mMap->mUnk_180[param_2 >> 5].mUnk_0 & 1 << (param_2 & 0x1f)) != 0; + case 1: bVar1 = this->mCourse->GetMapDataFlag0(param_2); return bVar1; + case 2: bVar1 = this->mCourse->GetFlag0(param_2); return bVar1; + case 3: bVar1 = this->mCourse->SetFlag1(param_2); return bVar1; + default: return false; + } +} + +void MapManager::SetMapDataFlag1(unk32 param_2, bool param_3) { + this->mCourse->SetMapDataFlag1(param_2, param_3); +} + +bool MapManager::GetMapDataFlag1(unk32 param_2) { + return this->mCourse->GetMapDataFlag1(param_2); +} + +void MapManager::func_ov00_02084c7c(unk32 param_2, bool param_3) { + if (param_2 < 0) { + return; + } + this->mCourse->SetMapDataFlag2(param_2, param_3); +} + +bool MapManager::func_ov00_02084c94(unk32 param_2) { + bool bVar1; + + if (0 <= param_2) { + bVar1 = this->mCourse->GetMapDataFlag2(param_2); + return bVar1; + } + return false; +} + +void MapManager::func_ov00_02084cb0(unk32 param_2, bool param_3) { + if (param_2 < 0) { + return; + } + this->mCourse->SetMapDataFlag3(param_2, param_3); +} + +bool MapManager::func_ov00_02084cc8(unk32 param_2) { + bool bVar1; + + if (0 <= param_2) { + bVar1 = this->mCourse->GetMapDataFlag3(param_2); + return bVar1; + } + return false; +} + +void MapManager::func_ov00_02084ce4(unk32 param_2, bool param_3) { + if (param_2 < 0) { + return; + } + this->mCourse->SetMapDataFlag4(param_2, param_3); +} + +bool MapManager::func_ov00_02084cfc(unk32 param_2) { + bool bVar1; + + if (0 <= param_2) { + bVar1 = this->mCourse->GetMapDataFlag4(param_2); + return bVar1; + } + return false; +} + +u8 MapManager::GetMapData_Unk_09() { + return this->mMap->mUnk_009; +} + +ARM void MapManager::func_ov00_02084d24(unk8 param_2, unk8 param_3, unk16 param_4) { + // Matches, but param types unsure. + // param_2 and param_3 aren't both part of a Vec2b * + // param_4 short or int? + Vec2b vec; + vec.x = param_2; + vec.y = param_3; + this->mMap->vfunc_90(&vec, param_4); +} + +s32 MapManager::func_ov00_02084d4c(unk32 param_2, unk32 param_3, Vec3p *param_4) { + unk32 *object; // undefined type + unk32 *dtor; // undefined type + unk32 *obj; // undefined type + unk32 a; // dword + int iVar1; + int aiStack_3c[4]; + Vec3p VStack_2c; + int iStack_20; + int iStack_1c; + int iStack_18; + Vec3p VStack_14; + + iVar1 = func_ov000_0208df78(data_027e0f64 + 4, param_2, param_3, &VStack_14, &iStack_20); + // object = PTR_DWORD_overlay_d_0__020e2510_overlay_d_0__02084ea8; + if (iVar1 == -1) { + return -1; + } + /*if ((*(u32 *) (PTR_DestructorChain_overlay_d_0_bss__020ec964_overlay_d_0__02084ea4 + 0x60) & 1) == 0) { + aiStack_3c[1] = 0; + aiStack_3c[3] = 0; + aiStack_3c[2] = 0x1000; + *(unk32 *) PTR_DWORD_overlay_d_0__020e2510_overlay_d_0__02084ea8 = 0; + *(unk32 *) (object + 4) = 0x1000; + *(unk32 *) (object + 8) = 0; + obj = PTR_DestructorChain_overlay_d_0_bss__020ec9c8_overlay_d_0__02084eb4; + dtor = PTR_FUN_overlay_d_0__0207e968_overlay_d_0__02084eb0; + *(unk32 *) (PTR_PTR_s_anc_overlay_d_0__020e24a0_overlay_d_0__020e24a4_overlay_d_0__02084eac + 0x78) = 0; + __register_global_object(object, dtor, (DestructorChain *) obj); + *(u32 *) (PTR_DestructorChain_overlay_d_0_bss__020ec964_overlay_d_0__02084ea4 + 0x60) = + *(u32 *) (PTR_DestructorChain_overlay_d_0_bss__020ec964_overlay_d_0__02084ea4 + 0x60) | 1; + }*/ + VStack_2c.x = iStack_20; + VStack_2c.y = iStack_1c; + VStack_2c.z = iStack_18; + Vec3p_Sub(&VStack_2c, &VStack_14, &VStack_2c); + // iVar1 = func_01ffe61c(PTR_DWORD_overlay_d_0__020e2510_overlay_d_0__02084ea8, &VStack_14, &VStack_2c, aiStack_3c); + if (iVar1 != 0) { + param_4->x = VStack_14.x; + param_4->y = VStack_14.y; + param_4->z = VStack_14.z; + Vec3p_Axpy(aiStack_3c[0], &VStack_2c, param_4, param_4); + a = 0x19a; + if (aiStack_3c[0] < 0) { + param_4->x = VStack_14.x; + param_4->y = VStack_14.y; + param_4->z = VStack_14.z; + Vec3p_Axpy(a, &VStack_2c, param_4, param_4); + return 1; + } + return 0; + } + return -1; +} + +unk32 MapManager::func_ov00_02084ebc(Vec3p *param_2) { + int *piVar1; + int iVar2; + unk32 dVar3; // dword + Vec2b auStack_18[4]; // undefined type + u32 uStack_14; + + this->func_ov00_02083a1c(auStack_18, this, param_2); + piVar1 = (int *) this->MapData_vfunc_78(auStack_18); + if (piVar1 != (int *) 0x0) { + // iVar2 = (**(code **) (*piVar1 + 0x1c))(); + if (iVar2 < 0x39) { + if ((iVar2 < 0x38) && (iVar2 != 1)) { + return 0; + } + } else if (iVar2 < 0x5a) { + if (iVar2 != 0x59) { + return 0; + } + } else { + if (iVar2 != 0x61) { + return 0; + } + if (piVar1[2] == 2) { + return 0; + } + } + } + iVar2 = this->func_ov00_02083e70(auStack_18); + if (iVar2 != 0) { + return 0; + } + iVar2 = this->MapData_vfunc_54(0); + if (iVar2 < 0x47) { + if (0x45 < iVar2) { + return 0; + } + if (iVar2 < 0x2a) { + switch (iVar2) { + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 8: + case 9: + case 0x14: + case 0x16: + case 0x17: + case 0x19: + case 0x1d: + case 0x1e: + case 0x1f: + case 0x27: + case 0x28: + case 0x29: return 0; + default: break; + } + } else if (iVar2 == 0x37) { + return 0; + } + } else if (iVar2 < 0x49) { + if (0x47 < iVar2) { + return 0; + } + if (iVar2 == 0x47) { + return 0; + } + } else if (iVar2 == 0x50) { + return 0; + } + iVar2 = this->mMap->vfunc_58(auStack_18, 5); + if (iVar2 != 0) { + return 0; + } + // dVar3 = this->MapData_vfunc_70(); // Missing param. + if (dVar3 != 0xffff) { + func_ov000_02093a1c(&uStack_14, data_027e0f6c, dVar3); + if ((uStack_14 >> 5 & 3) != 1) { + return 0; + } + return 1; + } + return 0; +} + +s32 MapManager::func_ov00_02085108(Vec3p *param_2) { + MapManager *puVar1; + unk32 uVar2; + int *piVar3; + int iVar4; + u32 uVar5; + int iVar6; + int iVar7; + int iVar8; + u32 local_44; + u8 local_3a; + u8 local_39; + u8 local_38; + u8 local_37; + int local_34; + int local_30; + int local_2c; + unk32 local_28; + + uVar2 = func_ov000_0208b180(data_027e0f64); + func_ov000_02088130(&local_38, uVar2); + local_44 = (u32) local_38; + uVar2 = func_ov000_0208b180(data_027e0f64); + func_ov000_02088144(&local_3a, uVar2); + if (local_44 <= local_37) { + do { + puVar1 = gMapManager; + uVar5 = (u32) local_39; + if ((u32) local_3a <= (u32) local_39) { + do { + // piVar3 = (int *) puVar1->MapData_vfunc_78(); + if ((piVar3 != (int *) 0x0) && ((piVar3[1] & 4U) != 0)) { + iVar7 = piVar3[7]; + iVar6 = piVar3[6]; + iVar8 = piVar3[8]; + // iVar4 = (**(code **) (*piVar3 + 0x60))(); + // local_28 = (**(code **) (*piVar3 + 0x5c))(); + local_34 = iVar6; + local_30 = iVar7 + iVar4; + local_2c = iVar8; + // iVar4 = func_0202b8e4(&local_34, 2); + if (iVar4 != 0) { + param_2->x = piVar3[6]; + param_2->y = piVar3[7]; + param_2->z = piVar3[8]; + return (int) *(char *) ((int) piVar3 + 0x12); + } + } + uVar5 = uVar5 - 1; + } while ((int) (u32) local_3a <= (int) uVar5); + } + local_44 = local_44 + 1; + } while ((int) local_44 <= (int) (u32) local_37); + } + return 0; +} + +s32 MapManager::func_ov00_0208527c(MapManager *param_1, unk32 param_2, unk32 *param_3) { + u32 uVar1; + MapManager *puVar2; + unk32 uVar3; + int iVar4; + int iVar5; + u32 uVar6; + u32 uVar7; + u32 local_4c; + u8 local_3e; + u8 local_3d; + u8 local_3c; + u8 local_3b; + unk32 local_38; + unk32 local_34; + unk32 local_30; + unk32 local_2c; + + uVar3 = func_ov000_0208b180(data_027e0f64); + func_ov000_02088130(&local_3c, uVar3); + uVar7 = (u32) local_3c; + uVar3 = func_ov000_0208b180(data_027e0f64); + func_ov000_02088144(&local_3e, uVar3); + local_4c = (u32) local_3e; + uVar6 = (u32) local_3d; + iVar4 = param_1->GetMapWidth(); + iVar5 = param_1->GetMapHeight(); + puVar2 = gMapManager; + if (uVar7 == 0) { + uVar7 = 0; + } + if (iVar4 <= (int) (u32) local_3b) { + uVar7 = iVar4 - 1; + } + if (local_4c == 0) { + local_4c = 0; + } + if (iVar5 <= (int) uVar6) { + uVar6 = iVar5 - 1; + } + local_2c = 0; + local_38 = 0; + local_34 = 0; + local_30 = 0; + do { + uVar1 = local_4c; + if ((int) (u32) local_3b < (int) uVar7) { + return 0; + } + for (; (int) uVar1 <= (int) uVar6; uVar1 = uVar1 + 1) { + // iVar4 = puVar2->MapData_vfunc_78(0); + if (((iVar4 != 0) && ((*(u32 *) (iVar4 + 4) & 4) != 0)) && + (iVar5 = func_ov000_0208b73c(iVar4, param_2), iVar5 != 0)) + { + *param_3 = *(unk32 *) (iVar4 + 0x18); + param_3[1] = *(unk32 *) (iVar4 + 0x1c); + param_3[2] = *(unk32 *) (iVar4 + 0x20); + return (int) *(char *) (iVar4 + 0x12); + } + } + uVar7 = uVar7 + 1; + } while (true); +} + +s32 MapManager::func_ov00_020853fc(MapManager *param_1, Vec3p *param_2, s32 *param_3) { + u32 uVar1; + unk32 uVar2; + int iVar3; + int iVar4; + int iVar5; + u32 uVar6; + int iVar7; + u32 local_50; + u32 local_48; + u8 local_3e; + u8 local_3d; + u8 local_3c; + u8 local_3b; + unk32 local_38; + unk32 local_34; + unk32 local_30; + unk32 local_2c; + + uVar2 = func_ov000_0208b180(data_027e0f64); + func_ov000_02088130(&local_3c, uVar2); + local_48 = (u32) local_3c; + uVar2 = func_ov000_0208b180(data_027e0f64); + func_ov000_02088144(&local_3e, uVar2); + local_50 = local_3e; + uVar6 = local_3d; + iVar3 = param_1->GetMapWidth(); + iVar4 = param_1->GetMapHeight(); + iVar7 = 0; + local_2c = 0; + if (local_48 == 0) { + local_48 = 0; + } + local_38 = 0; + if (iVar3 <= (int) (u32) local_3b) { + local_48 = iVar3 - 1; + } + local_34 = 0; + if (local_50 == 0) { + local_50 = 0; + } + if (iVar4 <= (int) uVar6) { + uVar6 = iVar4 - 1; + } + local_30 = 0; + for (; uVar1 = local_50, (int) local_48 <= (int) (u32) local_3b; local_48 = local_48 + 1) { + for (; (int) uVar1 <= (int) uVar6; uVar1 = uVar1 + 1) { + // iVar3 = gMapManager->MapData_vfunc_78(0); + if ((((iVar3 != 0) && ((*(u32 *) (iVar3 + 4) & 4) != 0)) && + (iVar4 = Vec3p_Distance((Vec3p *) (iVar3 + 0x18), param_2), iVar4 < *param_3)) && + (iVar5 = func_ov000_0208b7d0(iVar3, param_2), iVar5 != 0)) + { + *param_3 = iVar4; + iVar7 = iVar3; + } + } + } + return iVar7; +} + +unk32 MapManager::func_ov00_02085594(Vec3p *param_2) { + int *piVar1; + int iVar2; + unk32 dVar3; // dword + unk32 uVar4; + bool bVar5; + Vec2b uStack_2c; + Vec2b local_28; + u32 uStack_24; + Vec3p VStack_20; + + this->func_ov00_02083a1c(&local_28, this, param_2); + piVar1 = (int *) this->MapData_vfunc_78(&local_28); + bVar5 = true; + if (piVar1 != (int *) 0x0) { + param_2->x = piVar1[6]; + param_2->y = piVar1[7]; + param_2->z = piVar1[8]; + // iVar2 = (**(code **) (*piVar1 + 0x1c))(); + if (iVar2 < 0x43) { + if (0x41 < iVar2) { + return 2; + } + if (iVar2 < 2) { + if (iVar2 != 1) { + return 0; + } + } else if (iVar2 != 0x38) { + return 0; + } + } else if (iVar2 < 0x5a) { + if (iVar2 != 0x59) { + return 0; + } + bVar5 = piVar1[2] == 4; + } else { + if (iVar2 != 0x61) { + return 0; + } + if (piVar1[2] == 2) { + return 0; + } + } + } + iVar2 = this->func_ov00_020840a0(local_28.x, local_28.y); + if (iVar2 < 0x46) { + if (iVar2 < 0x2a) { + switch (iVar2) { + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 8: + case 9: + case 0x14: + case 0x16: + case 0x17: + case 0x19: + case 0x1d: + case 0x1e: + case 0x1f: + case 0x27: + case 0x28: + case 0x29: return 0; + } + } else if (iVar2 == 0x37) { + return 0; + } + } else if (iVar2 < 0x48) { + if (0x47 < iVar2) { + return 0; + } + if (iVar2 == 0x47) { + return 0; + } + } else if (iVar2 == 0x50) { + return 0; + } + iVar2 = this->mMap->vfunc_58(&local_28, 5); + if (iVar2 != 0) { + return 0; + } + uStack_2c.y = local_28.y; + uStack_2c.x = local_28.x; + this->func_ov00_02083c7c(&VStack_20, uStack_2c); + dVar3 = this->MapData_vfunc_70(&VStack_20); + if (dVar3 != 0xffff) { + func_ov000_02093a1c(&uStack_24, data_027e0f6c, dVar3); + if ((uStack_24 >> 5 & 3) != 1) { + return 0; + } + if (bVar5) { + uVar4 = 1; + } else { + uVar4 = 2; + } + return uVar4; + } + return 0; +} + +void MapManager::func_ov00_0208583c(MapManager *param_1, Vec3p *param_2, unk32 param_3) { + void *piVar1; + Vec2b auStack_10; + + param_1->func_ov00_02083a1c(&auStack_10, param_1, param_2); + piVar1 = (unk32 *) param_1->MapData_vfunc_78(&auStack_10); + if (piVar1 == NULL) { + return; + } + if (data_027e077c->mUnk_00 == 1) { + if (data_027e077c->mUnk_04 == 1) { + //(**(code **) (*piVar1 + 0x30))(piVar1, param_3); + return; + } + return; + } +} + +unk32 MapManager::func_ov00_020858b0(MapManager *param_1, Vec3p *param_2, s32 param_3) { + int iVar1; + int iVar2; + int iVar3; + int iVar4; + int *piVar5; + int iVar6; + int iVar7; + unk32 local_38; + Vec2b local_28; // x = originally 'local_28' ; y = originally 'local_27' + + if (param_3 == 1) { + func_ov000_02088000(*(unk32 *) (*(int *) data_027e0f64 + 4), 7); + } else { + func_ov000_02088000(*(unk32 *) (*(int *) data_027e0f64 + 4), 6); + } + iVar2 = param_1->GetMapWidth(); + iVar3 = param_1->GetMapHeight(); + local_38 = 0xffffffff; + param_1->func_ov00_02083a1c(&local_28, param_1, param_2); + iVar6 = gPlayerPos.y; // *(int *) (PTR_gPlayerPos_overlay_d_0__02085a30 + 4); + for (iVar7 = local_28.x - 1; iVar7 <= (int) (local_28.x + 1); iVar7 = iVar7 + 1) { + if ((-1 < iVar7) && (iVar1 = local_28.y - 1, iVar7 < iVar2)) { + for (; iVar1 <= (int) (local_28.y + 1); iVar1 = iVar1 + 1) { + if ((-1 < iVar1) && (iVar1 < iVar3)) { + iVar4 = param_1->MapData_vfunc_60(0); + iVar4 = iVar4 - iVar6; + if (iVar4 < 0) { + iVar4 = -iVar4; + } + if ((iVar4 < 0xce) && (piVar5 = (int *) param_1->MapData_vfunc_78(&local_28), piVar5 != (int *) 0x0)) { + // local_38 = (**(code **) (*piVar5 + 0x38))(piVar5, param_3); + } + } + } + } + } + return local_38; +} + +s32 MapManager::func_ov00_02085a34(Vec3p *param_2, s32 param_3) { + int *piVar1; + int iVar2; + unk16 *puVar3; + u32 uVar4; + u32 uVar5; + u32 uVar6; + unk32 uStack_2c; + unk32 uStack_2b; + Vec2b auStack_2a[2]; + Vec2b aVStack_28[2]; + unk16 auStack_24[4]; + unk32 auStack_1c[4]; + unk32 uStack_18; + unk16 uStack_14; + unk32 uStack_12; + + if (param_3 != 1) { + if (param_3 != 2 && param_3 != 3) { + return -1; + } + this->func_ov00_02083a1c(auStack_2a, this, param_2); + piVar1 = (int *) this->MapData_vfunc_78(auStack_2a); + if (piVar1 == (int *) 0x0) { + return -1; + } + // iVar2 = (**(code **) (*piVar1 + 0x1c))(); + if (iVar2 == 0x42) { + // uStack_2b = *(undefined *) ((int) piVar1 + 0x15); + // uStack_2c = *(undefined *) (piVar1 + 5); + // this->mMap->func_ov00_02080d08(&uStack_2c); + } + // iVar2 = (**(code **) (*piVar1 + 0x3c))(piVar1, param_3); + return iVar2; + } + this->func_ov00_02083a1c(aVStack_28, this, param_2); + iVar2 = this->func_ov00_02084ebc(param_2); + if (iVar2 == 0) { + return -1; + } + piVar1 = (int *) this->MapData_vfunc_78(aVStack_28); + if (piVar1 != (int *) 0x0) { + // iVar2 = (**(code **) (*piVar1 + 0x1c))(); + if (0x38 < iVar2) { + if (iVar2 < 0x5a) { + if (iVar2 == 0x59) { + LAB_overlay_d_0__02085afc: + // iVar2 = (**(code **) (*piVar1 + 0x3c))(piVar1, 1); // What is this? + return iVar2; + } + } else if (iVar2 == 0x61) + goto LAB_overlay_d_0__02085afc; + return -1; + } + if ((iVar2 < 0x38) && (iVar2 != 1)) { + return -1; + } + piVar1[1] = piVar1[1] & 0xfffffffe; + this->func_ov00_020828f8(piVar1); + } + this->mMap->func_ov00_02080b24(aVStack_28); + uStack_14 = 0xffff; + uStack_18 = 0; + uStack_12 = 1; + uVar6 = 0; + puVar3 = auStack_24; + uVar4 = 0; + do { + uVar5 = uVar4 + 1; + puVar3[uVar4] = 0; + uVar4 = uVar5; + } while (uVar5 < 4); + do { + *(unk32 *) (puVar3 + 4) = 0; // This is undefined, using unk32 as placeholder. + uVar6 = uVar6 + 1; + *(unk32 *) (puVar3 + 5) = 0; // Same here. + puVar3 = (unk16 *) ((int) puVar3 + 1); + } while (uVar6 < 2); + // iVar2 = this->MapData_vfunc_7c(); <- This needs to return some value (not void). + if (iVar2 == 0) { + return -1; + } + // iVar2 = MapData_vfunc_78(0); // Same here. + if ((iVar2 != 0) && (0 < *(s16 *) (iVar2 + 0xe))) { + return 1; + } + return 0; +} + +unk8 MapManager::func_ov00_02085c60(Vec3p *param_2, unk32 *param_3, unk32 *param_4, u32 param_5) { + s64 lVar1; + s32 *puVar2; + unk32 dVar3; // dword + bool bVar4; + bool bVar5; + int iVar6; + u32 uVar7; + int iStack_10c; + int iStack_108; + int iStack_104; + int iStack_100; + Vec3p VStack_f0; + Vec3p VStack_e4; + Vec4p VStack_d8; + Vec3p VStack_c8; + Vec3p VStack_bc; + Vec3p VStack_b0; + Vec3p VStack_a4; + Vec3p VStack_98; + Vec3p aVStack_8c[3]; + unk16 uStack_68; + unk16 uStack_66; + unk16 uStack_64; + unk16 uStack_62; + unk16 uStack_60; + unk32 uStack_3e; + unk32 uStack_3d; + unk32 uStack_3c; + unk32 uStack_3b; + unk32 uStack_34; + unk32 uStack_33; + unk32 uStack_32; + unk32 uStack_31; + unk32 uStack_30; + unk32 uStack_2f; + unk32 uStack_2c; + unk32 uStack_28; + + if (param_5 == 0) { + return 0; + } + func_ov000_020792a0(data_027e0d3c, 0, *param_3, param_3[1]); + func_ov000_020792a0(data_027e0d3c, 0, *param_4, param_4[1]); + VStack_b0.x = VStack_98.x; + VStack_b0.y = VStack_98.y; + VStack_b0.z = VStack_98.z; + VStack_bc.x = VStack_a4.x; + VStack_bc.y = VStack_a4.y; + VStack_bc.z = VStack_a4.z; + VStack_c8.x = VStack_98.x; + VStack_c8.y = VStack_98.y; + VStack_c8.z = VStack_98.z; + Vec3p_Sub(&VStack_c8, &VStack_bc, &VStack_c8); + lVar1 = (u64) param_5 * 0xc000 + 0x800; + uVar7 = (u32) lVar1 >> 0xc | (int) ((u64) lVar1 >> 0x20) * 0x100000; + iVar6 = Vec3p_Length(&VStack_c8); + if ((int) uVar7 < iVar6) { + Vec3p_Normalize(&VStack_c8, &VStack_c8); + Vec3p_Scale(&VStack_c8, uVar7); + VStack_98.x = VStack_a4.x; + VStack_98.y = VStack_a4.y; + VStack_98.z = VStack_a4.z; + Vec3p_Add(&VStack_98, &VStack_c8, &VStack_98); + VStack_b0.y = VStack_98.y; + VStack_b0.x = VStack_98.x; + VStack_b0.z = VStack_98.z; + } + VStack_c8.x = VStack_98.x; + VStack_c8.y = VStack_98.y; + VStack_c8.z = VStack_98.z; + Vec3p_Sub(&VStack_c8, &VStack_a4, &VStack_c8); + uVar7 = param_5 * 0x800 + 0x800 >> 0xc | + ((((int) param_5 >> 0x1f) << 0xb | param_5 >> 0x15) + (u32) (0xfffff7ff < param_5 * 0x800)) * 0x100000; + iVar6 = Vec3p_Length(&VStack_c8); + if ((int) param_5 <= iVar6) { + Vec3p_Normalize(&VStack_c8, &VStack_c8); + Vec3p_Scale(&VStack_c8, uVar7); + VStack_b0.x = VStack_bc.x; + VStack_b0.y = VStack_bc.y; + VStack_b0.z = VStack_bc.z; + Vec3p_Add(&VStack_b0, &VStack_c8, &VStack_b0); + } + bVar5 = false; + VStack_d8.y = param_5 << 1; + VStack_d8.x = 0; + VStack_d8.z = 0; + VStack_d8.w = param_5; + do { + bVar4 = func_01ffbe78(param_2, &VStack_b0, &VStack_bc, &VStack_d8); + if (bVar4) { + VStack_e4.x = param_2->x; + VStack_e4.y = param_2->y; + VStack_e4.z = param_2->z; + VStack_f0.x = param_2[1].x; + VStack_f0.y = param_2[1].y; + VStack_f0.z = param_2[1].z; + Vec3p_Normalize(&VStack_f0, &VStack_f0); + Vec3p_Scale(&VStack_f0, param_5); + Vec3p_Add(&VStack_e4, &VStack_f0, &VStack_e4); + dVar3 = 0xffff; + param_2->x = VStack_e4.x; + param_2->y = VStack_e4.y; + param_2->z = VStack_e4.z; + uStack_68 = (u16) dVar3; + uStack_60 = 0; + uStack_3e = 0; + uStack_3d = 0; + uStack_3c = 0; + uStack_3b = 0; + uStack_34 = 0; + uStack_33 = 0; + uStack_32 = 0; + uStack_31 = 0; + uStack_30 = 0; + uStack_2f = 0; + uStack_2c = 0xffffffff; + uStack_28 = 0xffffffff; + uStack_66 = uStack_68; + uStack_64 = uStack_68; + uStack_62 = uStack_68; + bVar5 = func_01ffbe78(aVStack_8c, &VStack_e4, &VStack_e4, &VStack_d8); + if (bVar5) { + VStack_e4.x = aVStack_8c[0].x; + VStack_e4.y = aVStack_8c[0].y; + VStack_e4.z = aVStack_8c[0].z; + } + func_ov000_0207920c(data_027e0d3c, &VStack_e4, &iStack_104, 0); + param_2[8].x = iStack_104; + param_2[8].y = iStack_100; + return 1; + } + VStack_bc.x = VStack_b0.x; + VStack_bc.y = VStack_b0.y; + VStack_bc.z = VStack_b0.z; + // iVar6 = func_0202b2e8(&VStack_b0, &VStack_98, uVar7); + puVar2 = data_027e0d3c; + if (iVar6 != 0) { + bVar5 = true; + } + } while (!bVar5); + param_2->x = VStack_98.x; + param_2->y = VStack_98.y; + param_2->z = VStack_98.z; + func_ov000_0207920c(puVar2, &VStack_98, &iStack_10c, 0); + param_2[8].x = iStack_10c; + param_2[8].y = iStack_108; + return 0; +} + +unk8 MapManager::func_ov00_02086044(Vec3p *param_2, Vec3p *param_3, unk32 param_4) { + unk32 uVar1; + unk32 uVar2; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + int *piVar9; + Vec3p *pVVar10; + int iVar11; + Vec2b local_c6; + unk32 auStack_c4[4]; + Vec3p iStack_c0; + Vec3p local_b0; + Vec3p local_a0; + Vec3p local_94; + Vec3p local_88; + Vec3p VStack_7c; + AABB AStack_70; + Vec3p VStack_58; + Vec3p local_4c; + AABB local_40; + + local_40.min.x = param_3->x; + local_40.min.y = param_3->y; + local_40.min.z = param_3->z; + local_40.max.x = param_3->x; + local_40.max.y = param_3->y; + local_40.max.z = param_3->z; + local_88.x = param_2->x; + local_88.y = param_2->y; + local_88.z = param_2->z; + func_ov000_0208ed74(&local_40, &local_88); + // AABB_Grow(&local_40, param_4); + iVar3 = this->func_ov00_020839d4(local_40.min.x); + iVar4 = this->func_ov00_020839f8(local_40.min.z); + iVar5 = this->func_ov00_020839d4(local_40.max.x); + iVar6 = this->func_ov00_020839f8(local_40.max.z); + local_4c.x = param_3->x; + local_4c.y = param_3->y; + local_4c.z = param_3->z; + local_94.x = param_2->x; + local_94.y = param_2->y; + local_94.z = param_2->z; + pVVar10 = &local_a0; + local_a0.x = param_3->x; + local_a0.y = param_3->y; + local_a0.z = param_3->z; + Vec3p_Sub(&local_94, pVVar10, &VStack_58); + uVar1 = this->func_ov00_020839d4(param_3->x); + uVar2 = this->func_ov00_020839f8(param_3->z); + // iVar7 = this->func_ov00_02083e34(uVar1, uVar2, pVVar10); + do { + if (iVar5 < iVar3) { + return 0; + } + if (iVar4 <= iVar6) { + iVar11 = iVar4; + do { + // iVar8 = this->func_ov00_02083e34((char) iVar3, (char) iVar11, pVVar10); + if (iVar7 < iVar8) { + local_c6.x = (char) iVar3; + local_c6.y = (char) iVar11; + gMapManager->GetTileWorldBounds(&local_c6, &AStack_70); + Vec3p_Sub(param_2, param_3, &VStack_7c); + pVVar10 = (Vec3p *) auStack_c4; + iVar8 = func_ov000_0208e87c(&AStack_70, &local_b0, &VStack_7c); + if (iVar8 != 0) { + return 1; + } + } + piVar9 = (int *) this->MapData_vfunc_78(&local_c6); + if ((piVar9 != (int *) 0x0) /*&& (iVar8 = (**(code **) (*piVar9 + 0x58))(), iVar8 != 0)*/) { + iStack_c0.x = param_3->x; + iStack_c0.y = param_3->y; + pVVar10 = (Vec3p *) param_3->z; + iStack_c0.z = (int) pVVar10; + iVar8 = func_ov000_0208b804(piVar9, &iStack_c0, &VStack_58); + if (iVar8 != 0) { + return 1; + } + } + iVar11 = iVar11 + 1; + } while (iVar11 <= iVar6); + } + iVar3 = iVar3 + 1; + } while (true); +} -void MapManager::func_ov00_020820ec(unk32 *param_2) {} -void MapManager::func_ov00_020820fc(s32 param_2, unk32 param_3, unk32 param_4) {} -unk8 MapManager::func_ov00_0208210c(unk32 param_2, unk32 param_3) {} -unk8 MapManager::func_ov00_0208230c(unk32 param_2) {} -unk8 MapManager::func_ov00_02082348(unk32 param_2) {} -void MapManager::func_ov00_020823a4(unk32 param_2) {} -unk8 MapManager::func_ov00_020823b4() {} -bool MapManager::func_ov00_020823c4(unk32 *param_2, s32 param_3) {} -s32 MapManager::func_ov00_020823d4(s32 param_2) {} -s32 MapManager::func_ov00_020823e4(s32 param_2) {} -unk8 MapManager::MapData_vfunc_b4() {} -unk8 MapManager::MapData_vfunc_9c() {} -s32 MapManager::func_ov00_02082424() {} -unk8 MapManager::func_ov00_02082454(unk32 param_2, unk32 param_3) {} -unk8 MapManager::func_ov00_02082494(unk32 param_2) {} -unk8 MapManager::func_ov00_020824cc(unk32 param_2) {} -unk8 MapManager::func_ov00_02082504() {} -unk8 *MapManager::func_ov00_02082538() {} -void MapManager::func_ov00_02082594() {} -void MapManager::func_ov00_020825ac() {} -s32 MapManager::GetCourseFilePath(char *courseName, char *buf) {} -unk8 MapManager::func_ov00_020825e4(unk32 param_2, unk32 param_3) {} -unk8 MapManager::func_ov00_02082614(unk32 param_2, unk32 param_3) {} -unk8 MapManager::MapData_vfunc_b0() {} -void MapManager::func_ov00_02082650(s32 param_2, s32 param_3, unk32 param_4) {} -void MapManager::func_ov00_02082660(s32 param_2, s32 param_3) {} -void MapManager::func_ov00_02082670(unk32 param_2, s32 param_3) {} -void MapManager::func_ov00_02082680(unk32 param_2, unk32 param_3) {} -unk8 MapManager::func_ov00_020826a0(unk32 param_2, unk32 param_3, unk32 param_4) {} -unk8 MapManager::CreateMap(unk32 mapType, unk32 param_3, unk32 param_4) {} -unk8 MapManager::DestroyMap() {} -unk8 MapManager::MapData_vfunc_44() {} -unk8 MapManager::func_ov00_02082808() {} -unk8 MapManager::MapData_vfunc_7c() {} -unk8 MapManager::MapData_vfunc_84() {} -bool MapManager::func_ov00_020828f8(s32 *param_2) {} -unk8 MapManager::GetCourseData_Unk_b0() {} -s32 MapManager::func_ov00_02082914(unk32 param_2) {} -unk8 MapManager::func_ov00_02082acc() {} -unk32 *MapManager::func_ov00_02082adc() {} -unk8 MapManager::func_ov00_02082af4() {} -bool MapManager::func_ov00_02082b3c(s32 param_2) {} -unk8 MapManager::func_ov00_02082d08() {} -unk8 MapManager::GetCourseData_Unk_1c() {} -unk8 MapManager::GetCourseData_Unk_1d() {} -unk8 MapManager::func_ov00_02082d40() {} -u32 MapManager::func_ov00_02082d74(unk32 param_2) {} -unk8 MapManager::func_ov00_02082d84() {} -bool MapManager::func_ov00_02082e1c(s32 *param_2, s32 *param_3) {} -unk8 MapManager::func_ov00_0208306c() {} -void MapManager::func_ov00_0208315c(s32 *param_2, s32 *param_3) {} -void MapManager::func_ov00_02083244(u32 param_2, s32 *param_3, s32 *param_4, s32 *param_5) {} -void MapManager::func_ov00_02083298(u32 param_2, s32 *param_3, s32 *param_4, s32 *param_5) {} -unk8 MapManager::GetCourseData_Unk_25c() {} -bool MapManager::func_ov00_02083318(unk32 param_2) {} -unk8 MapManager::func_ov00_02083328() {} -unk8 MapManager::GetCourseData_Unk_86() {} -unk8 MapManager::GetCourseData_Unk_87() {} -unk8 MapManager::Get_MapData_Unk28() {} -unk8 MapManager::Get_MapData_Unk2a() {} -unk8 MapManager::func_ov00_02083374() {} -unk8 MapManager::func_ov00_02083384() {} -unk8 MapManager::GetCourseMinX() {} -unk8 MapManager::GetCourseMinZ() {} -unk8 MapManager::GetCourseMaxX() {} -unk8 MapManager::GetCourseMaxZ() {} -unk8 MapManager::func_ov00_020833c4() {} -unk8 MapManager::func_ov00_020833d0() {} -unk8 MapManager::func_ov00_020833dc() {} -unk8 MapManager::func_ov00_020833e8() {} -unk8 MapManager::Get_MapData_Unk_d0() {} -unk8 MapManager::Get_MapData_Unk_d8() {} -unk8 MapManager::GetMapData_Unk_dc(Vec3p *param_2) {} -unk8 MapManager::GetMapData_Unk_e8(Vec3p *param_2) {} -unk8 MapManager::GetMapData_Unk_d0(Vec3p *param_2) {} -unk8 MapManager::func_ov00_0208346c(AABB *param_2) {} -unk8 MapManager::func_ov00_020834bc(Vec3p *param_2, unk32 param_3, unk32 param_4) {} -unk8 MapManager::func_ov00_02083524(Vec3p *param_2, unk32 param_3, unk32 param_4) {} -void MapManager::func_ov00_02083560(unk32 param_1, MapManager *param_2, u32 param_3) {} -unk8 MapManager::func_ov00_02083570(unk32 param_2, unk32 param_3) {} -unk32 MapManager::func_ov00_02083588() {} -unk32 MapManager::func_ov00_020835a4() {} -unk32 MapManager::func_ov00_020835b4() {} -unk8 MapManager::func_ov00_020835c4(unk32 param_2, unk32 param_3) {} -bool MapManager::func_ov00_020835e4(s32 param_2, unk32 *param_3, unk32 *param_4) {} -unk32 MapManager::func_ov00_020835f4(s32 param_2) {} -void MapManager::func_ov00_02083604(s32 param_2) {} -unk8 MapManager::func_ov00_02083614(s32 param_2) {} -bool MapManager::GetEntrancePos(Vec3p *param_2, unk32 entranceId) {} -bool MapManager::func_ov00_02083664(Vec3p *param_2, unk32 entranceId) {} -s32 MapManager::func_ov00_020836bc(u32 param_2, unk32 *param_3) {} -s32 MapManager::GetTriggerBoundingBoxes(u32 param_2, AABB *param_3, u32 param_4) {} -unk8 MapManager::func_ov00_020836dc(unk32 param_2, unk32 param_3) {} -bool MapManager::func_ov00_02083770(u32 param_2, unk32 param_3) {} -bool MapManager::func_ov00_02083780(unk32 param_2) {} -bool MapManager::func_ov00_02083790(unk32 param_2) {} -unk8 MapManager::func_ov00_02083840(unk32 param_2) {} -bool MapManager::func_ov00_020838c8(s32 param_2) {} -bool MapManager::func_ov00_020838d8(s32 param_2) {} -bool MapManager::func_ov00_020838e8(u32 param_2, unk32 *param_3) {} -char MapManager::func_ov00_020838f8(unk32 *param_2) {} -bool MapManager::func_ov00_02083908(char param_2, unk32 *param_3) {} -void MapManager::func_ov00_02083918(s32 param_2, s32 *param_3) {} -void MapManager::func_ov00_02083928(unk8 *param_2, s32 param_3) {} -unk32 MapManager::func_ov00_02083938(s32 param_2) {} -unk8 MapManager::Set_MapData_Unk_16(unk8 value, unk32 index) {} -void MapManager::func_ov00_02083958(s32 param_2) {} -void MapManager::func_ov00_02083968(u32 param_2, unk8 *param_3) {} -bool MapManager::func_ov00_02083978(unk32 param_2, Vec3p *param_3) {} -bool MapManager::func_ov00_020839b4(s32 param_2) {} -bool MapManager::func_ov00_020839c4(s32 param_2) {} -unk8 MapManager::func_ov00_020839d4() {} -unk8 MapManager::func_ov00_020839f8() {} -void MapManager::func_ov00_02083a1c(Vec2b *param_1, MapManager *param_2, Vec3p *param_3) {} -unk8 MapManager::func_ov00_02083a54(unk32 param_1, MapManager *param_2, unk32 param_3, unk32 param_4, unk32 param_5) {} -unk8 MapManager::func_ov00_02083b84() {} -unk8 MapManager::func_ov00_02083bac() {} -unk8 MapManager::func_ov00_02083bd4() {} -unk8 MapManager::func_ov00_02083bfc() {} -unk8 MapManager::func_ov00_02083c24(unk32 param_2) {} -unk8 MapManager::func_ov00_02083c50(unk32 param_2) {} -unk8 MapManager::func_ov00_02083c7c(Vec3p *param_2, Vec2b param_3) {} -unk8 MapManager::func_ov00_02083ce8(unk8 param_1, unk8 param_2, unk8 param_3, unk8 param_4, unk32 param_5) {} -unk8 MapManager::func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4) {} -unk8 MapManager::MapData_vfunc_60() {} -unk8 MapManager::func_ov00_02083e70() {} -unk8 MapManager::MapData_vfunc_68() {} -s32 MapManager::func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3, unk32 param_4) {} -void MapManager::func_ov00_02083f44(Vec3p *param_2) {} -unk8 MapManager::MapData_vfunc_6c() {} -unk8 MapManager::MapData_vfunc_70() {} -unk8 MapManager::func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3) {} -void MapManager::GetTileWorldBounds(Vec2b *tile, AABB *tileBounds) {} -unk8 MapManager::MapData_vfunc_54() {} -unk8 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4) {} -unk32 MapManager::MapData_vfunc_78(Vec2b *param1) {} -unk8 MapManager::func_ov00_020840dc() {} -unk8 MapManager::func_ov00_02084100(unk32 param_1, MapManager *param_2) {} -unk8 MapManager::GetMapData_Unk_48() {} -unk8 MapManager::GetMapData_Unk_4c() {} -unk32 MapManager::func_ov00_0208412c() {} -void MapManager::func_ov00_0208413c(unk32 param_2) {} -unk8 MapManager::MapData_vfunc_58() {} -unk8 MapManager::func_ov00_02084164() {} -unk8 MapManager::GetMapData_Unk_0a() {} -unk8 MapManager::GetMapData_Unk_0b() {} -unk8 MapManager::MapData_vfunc_a4() {} -unk8 MapManager::func_ov00_0208433c(Vec3p *param_2, unk32 param_3) {} -unk8 MapManager::func_ov00_0208439c() {} -void MapManager::func_ov00_020843ec(s32 *param_2) {} -unk8 MapManager::GetMapData_Unk_38() {} -unk8 MapManager::func_ov00_020846a4() {} -unk8 MapManager::func_ov00_02084700() {} -unk8 MapManager::func_ov00_02084740() {} -unk8 MapManager::func_ov00_020847e0() {} -unk8 MapManager::func_ov00_020847f0() {} -bool MapManager::func_ov00_02084838() {} -bool MapManager::func_ov00_020848b8() {} -void MapManager::func_ov00_02084924(u32 param_2) {} -unk8 MapManager::func_ov00_02084934() {} -unk8 MapManager::GetMapData_Unk_06() {} -unk8 MapManager::GetMapData_Unk_07() {} -unk8 MapManager::func_ov00_0208499c() {} -unk8 MapManager::func_ov00_020849c0() {} -unk8 MapManager::func_ov00_020849dc() {} -bool MapManager::func_ov00_020849f8() {} -unk8 MapManager::func_ov00_02084a50() {} -void MapManager::SpawnNPC(Vec3p *param_2, unk32 param_3, unk32 param_4) {} -bool MapManager::func_ov00_02084ac4(u32 actorId) {} -unk8 MapManager::SetNumKeys(unk32 keys) {} -unk8 MapManager::GetNumKeys() {} -unk8 MapManager::SetCourseData_Unk_25c(unk8 param_2) {} -unk8 MapManager::GetCourseData_Unk_25d() {} -unk8 MapManager::func_ov00_02084b38(unk32 param_2, unk32 param_3, unk32 param_4) {} -bool MapManager::func_ov00_02084be0(unk32 param_2, unk32 param_3) {} -void MapManager::func_ov00_02084c5c(unk32 param_2, unk32 param_3) {} -bool MapManager::func_ov00_02084c6c(unk32 param_2) {} -unk8 MapManager::func_ov00_02084c7c(unk32 param_2) {} -unk8 MapManager::func_ov00_02084c94(unk32 param_2) {} -unk8 MapManager::func_ov00_02084cb0(unk32 param_2) {} -unk8 MapManager::func_ov00_02084cc8(unk32 param_2) {} -unk8 MapManager::func_ov00_02084ce4(unk32 param_2) {} -unk8 MapManager::func_ov00_02084cfc(unk32 param_2) {} -unk8 MapManager::GetMapData_Unk_09() {} -unk8 MapManager::func_ov00_02084d24(unk8 param_2, unk8 param_3, unk32 param_4) {} -s32 MapManager::func_ov00_02084d4c(unk32 param_2, unk32 param_3, Vec3p *param_4) {} -unk8 MapManager::func_ov00_02084ebc(unk32 param_2) {} -s32 MapManager::func_ov00_02085108(Vec3p *param_2) {} -unk8 MapManager::func_ov00_0208527c() {} -unk8 MapManager::func_ov00_020853fc() {} -unk8 MapManager::func_ov00_02085594(Vec3p *param_1) {} -void MapManager::func_ov00_0208583c(unk32 param_1, Vec3p *param_2, unk32 param_3) {} -unk8 MapManager::func_ov00_020858b0() {} -s32 MapManager::func_ov00_02085a34(unk32 param_2, unk32 param_3) {} -unk8 MapManager::func_ov00_02085c60(unk32 param_2, unk32 param_3, unk32 param_4, unk32 param_5) {} -unk8 MapManager::func_ov00_02086044(unk32 param_2, unk32 param_3, unk32 param_4) {} bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4, s32 param_5, u16 param_6, Vec3p *param_7, - Vec3p *param_8) {} + Vec3p *param_8) { + bool bVar1; + s32 iVar2; + s32 iVar3; + Vec3p local_d0; + s32 local_c8; + Vec3p local_c4; + Vec3p local_b8; + Vec3p local_ac; + s32 local_a4; + Vec3p local_a0; + s32 local_98; + s32 local_94; + s32 local_90; + s32 local_8c; + Vec3p local_88; + Vec3p local_7c; + Vec3p local_70; + s32 local_64; + s32 local_60; + s32 local_5c; + s32 local_58; + s32 local_54; + Vec3p local_50; + Vec3p local_44; + Vec3p local_38; + Vec3p local_2c; + s32 local_20; + + // iVar2 = (**(code **) (*param_2 + 8))(); // What pointer address is contained in param_2? + if (iVar2 == 0) { + // (**(code **) (*param_2 + 0x24))(param_2, &local_2c); + local_38.x = local_2c.x; + local_38.y = local_2c.y; + local_38.z = local_2c.z; + iVar2 = Vec3p_Distance(param_3, &local_38); + Vec3p_Sub(param_3, &local_38, &local_38); + Vec3p_Normalize(&local_38, &local_2c); + if (!bVar1) { + local_38.x = 0; + local_38.y = 0; + local_38.z = 0x1000; + } + Vec3p_Scale(&local_38, (local_20 + param_5) - iVar2); + Vec3p_Add(param_3, &local_38, param_7); + local_50.x = local_2c.x; + local_50.y = local_2c.y; + local_50.z = local_2c.z; + Vec3p_Sub(param_4, &local_50, &local_44); + // Vec3p_Normalize(&local_44); + param_8->x = local_44.x; + param_8->y = local_44.y; + param_8->z = local_44.z; + return false; + } + if (iVar2 == 1) { + local_58 = 0; + local_64 = 0; + local_60 = 0; + local_5c = 0; + // (**(code **) (*param_2 + 0x28))(param_2, &local_64); + local_70.y = param_3->y; + local_70.x = local_64; + local_70.z = local_5c; + if ((((*(char *) ((int) param_2 + 5) != '\0') && ((param_6 & 0x80) != 0)) && + (iVar2 = Vec3p_Distance(&local_70, param_3), iVar2 <= local_58)) && + ((local_60 + local_54 <= param_4->y && (iVar2 = param_5 + local_60 + local_54, param_3->y <= iVar2)))) + { + param_7->y = iVar2; + param_8->x = 0; + param_8->y = 0x1000; + param_8->z = 0; + return true; + } + iVar2 = Vec3p_Distance(param_3, &local_70); + iVar3 = local_58 + param_5; + Vec3p_Sub(param_3, &local_70, &local_70); + // bVar1 = Vec3p_Normalize(&local_70); + if (!bVar1) { + local_70.x = 0; + local_70.y = 0; + local_70.z = 0x1000; + } + Vec3p_Scale(&local_70, iVar3 - iVar2); + Vec3p_Add(param_3, &local_70, param_7); + local_88.x = local_64; + local_88.z = local_5c; + local_88.y = param_4->y; + Vec3p_Sub(param_4, &local_88, &local_7c); + // Vec3p_Normalize(&local_7c); + param_8->x = local_7c.x; + param_8->y = local_7c.y; + param_8->z = local_7c.z; + return false; + } + if (iVar2 != 2) { + return false; + } + // (**(code **) (*param_2 + 0x2c))(param_2, local_a0); + func_ov000_0208e6b0(&local_a0, &local_ac); + local_b8.y = param_3->y; + local_b8.x = local_ac.x; // previously = local_ac[0] (of type s32) + local_b8.z = local_a4; + Vec3p_Sub(param_3, &local_b8, &local_b8); + local_c4.x = local_b8.x; + local_c4.y = local_b8.y; + local_c4.z = local_b8.z; + // bVar1 = Vec3p_Normalize(&local_c4); + if (!bVar1) { + local_c4.x = 0; + local_c4.y = 0; + local_c4.z = 0x1000; + } + if (((*(char *) ((int) param_2 + 5) != '\0') && ((param_6 & 0x80) != 0)) && + (((param_3->x < local_94 && (((local_a0.x <= param_3->x && (param_3->z < local_8c)) && (local_98 <= param_3->z)))) || + (local_90 + param_5 <= param_4->y)))) + { + param_7->y = local_90 + param_5; + param_8->x = 0; + param_8->y = 0x1000; + param_8->z = 0; + return true; + } + func_ov000_0208e6b0(&local_a0, &local_d0); + iVar2 = param_3->z; + if (((iVar2 < local_8c) && (local_98 <= iVar2)) && ((param_3->x < local_94 && (local_a0.x <= param_3->x)))) { + iVar2 = func_ov000_0208e6f0(&local_a0); + iVar3 = func_ov000_0208e704(&local_a0); + if (iVar2 == iVar3) { + local_c8 = local_c8 - param_3->z; + if (local_c8 < 0) { + local_c8 = -local_c8; + } + local_d0.x = local_d0.x - param_3->x; + if (local_d0.x < 0) { + local_d0.x = -local_d0.x; + } + bVar1 = local_c8 < local_d0.x; + } else { + iVar2 = func_ov000_0208e6f0(&local_a0); + iVar3 = func_ov000_0208e704(&local_a0); + if (iVar2 < iVar3) { + bVar1 = true; + } else { + bVar1 = false; + } + } + if (bVar1) { + if (local_c4.x < 0) { + iVar2 = local_b8.x; + if (local_b8.x < 0) { + iVar2 = -local_b8.x; + } + iVar3 = func_ov000_0208e6f0(&local_a0); + param_7->x = param_7->x - ((param_5 + (iVar3 >> 1)) - iVar2); + param_8->x = -0x1000; + param_8->y = 0; + param_8->z = 0; + } else { + iVar2 = local_b8.x; + if (local_b8.x < 0) { + iVar2 = -local_b8.x; + } + iVar3 = func_ov000_0208e6f0(&local_a0); + param_7->x = param_7->x + ((param_5 + (iVar3 >> 1)) - iVar2); + param_8->x = 0x1000; + param_8->y = 0; + param_8->z = 0; + } + } else if (local_c4.z < 0) { + iVar2 = local_b8.z; + if (local_b8.z < 0) { + iVar2 = -local_b8.z; + } + iVar3 = func_ov000_0208e704(&local_a0); + param_7->z = param_7->z - ((param_5 + (iVar3 >> 1)) - iVar2); + param_8->x = 0; + param_8->y = 0; + param_8->z = -0x1000; + } else { + iVar2 = local_b8.z; + if (local_b8.z < 0) { + iVar2 = -local_b8.z; + } + iVar3 = func_ov000_0208e704(&local_a0); + param_7->z = param_7->z + ((param_5 + (iVar3 >> 1)) - iVar2); + param_8->x = 0; + param_8->y = 0; + param_8->z = 0x1000; + } + } else { + iVar3 = param_3->x; + if ((iVar3 < local_94) && (local_a0.x <= iVar3)) { + if (local_c4.z < 0) { + iVar2 = local_b8.z; + if (local_b8.z < 0) { + iVar2 = -local_b8.z; + } + iVar3 = func_ov000_0208e704(&local_a0); + param_7->z = param_7->z - ((param_5 + (iVar3 >> 1)) - iVar2); + param_8->x = 0; + param_8->y = 0; + param_8->z = -0x1000; + } else { + iVar2 = local_b8.z; + if (local_b8.z < 0) { + iVar2 = -local_b8.z; + } + iVar3 = func_ov000_0208e704(&local_a0); + param_7->z = param_7->z + ((param_5 + (iVar3 >> 1)) - iVar2); + param_8->x = 0; + param_8->y = 0; + param_8->z = 0x1000; + } + } else if ((iVar2 < local_8c) && (local_98 <= iVar2)) { + if (local_c4.x < 0) { + iVar2 = local_b8.x; + if (local_b8.x < 0) { + iVar2 = -local_b8.x; + } + iVar3 = func_ov000_0208e6f0(&local_a0); + param_7->x = param_7->x - ((param_5 + (iVar3 >> 1)) - iVar2); + param_8->x = -0x1000; + param_8->y = 0; + param_8->z = 0; + } else { + iVar2 = local_b8.x; + if (local_b8.x < 0) { + iVar2 = -local_b8.x; + } + iVar3 = func_ov000_0208e6f0(&local_a0); + param_7->x = param_7->x + ((param_5 + (iVar3 >> 1)) - iVar2); + param_8->x = 0x1000; + param_8->y = 0; + param_8->z = 0; + } + } else { + local_c8 = local_c8 - iVar2; + if (local_c8 < 0) { + local_c8 = -local_c8; + } + local_d0.x = local_d0.x - iVar3; + if (local_d0.x < 0) { + local_d0.x = -local_d0.x; // local_d0.x previously local_d0[0] + } + if (local_c8 < local_d0.x) { + if (local_c4.x < 0) { + iVar2 = local_b8.x; + if (local_b8.x < 0) { + iVar2 = -local_b8.x; + } + iVar3 = func_ov000_0208e6f0(&local_a0); + param_7->x = param_7->x - ((param_5 + (iVar3 >> 1)) - iVar2); + param_8->x = -0x1000; + param_8->y = 0; + param_8->z = 0; + } else { + iVar2 = local_b8.x; + if (local_b8.x < 0) { + iVar2 = -local_b8.x; + } + iVar3 = func_ov000_0208e6f0(&local_a0); + param_7->x = param_7->x + ((param_5 + (iVar3 >> 1)) - iVar2); + param_8->x = 0x1000; + param_8->y = 0; + param_8->z = 0; + } + } else if (local_c4.z < 0) { + iVar2 = local_b8.z; + if (local_b8.z < 0) { + iVar2 = -local_b8.z; + } + iVar3 = func_ov000_0208e704(&local_a0); + param_7->z = param_7->z - ((param_5 + (iVar3 >> 1)) - iVar2); + param_8->x = 0; + param_8->y = 0; + param_8->z = -0x1000; + } else { + iVar2 = local_b8.z; + if (local_b8.z < 0) { + iVar2 = -local_b8.z; + } + iVar3 = func_ov000_0208e704(&local_a0); + param_7->z = param_7->z + ((param_5 + (iVar3 >> 1)) - iVar2); + param_8->x = 0; + param_8->y = 0; + param_8->z = 0x1000; + } + } + } + return false; +} + bool MapManager::func_ov00_02086a84(s32 *param_2, Vec3p *param_3, Vec3p *param_4, s32 param_5, s32 param_6, unk32 param_7, - Vec3p *param_8, Vec3p *param_9) {} + Vec3p *param_8, Vec3p *param_9) { + bool bVar1; + int iVar2; + Vec3p VStack_a0; + unk32 auStack_94[24]; + Vec3p local_7c; + int local_70[5]; + Vec3p local_5c; + Vec3p local_50; + Vec3p local_44; + Vec3p local_38; + int local_2c; + Vec3p VStack_28; + + Vec3p_Sub(param_3, param_4, &VStack_28); + // iVar2 = (**(code **) (*param_2 + 8))(); + if (iVar2 == 0) { + //(**(code **) (*param_2 + 0x24))(param_2, &local_38); + if (param_6 == 0) { + local_44.x = local_38.x; + local_44.y = local_38.y; + local_44.z = local_38.z; + iVar2 = Vec3p_Distance(param_3, &local_44); + Vec3p_Sub(param_3, &local_38, &local_44); + // bVar1 = Vec3p_Normalize(&local_44); // This function needs to be declared and defined separately to the other + // Vec3p_Normalize with the return type as bool. + if (!bVar1) { + local_44.x = 0; + local_44.y = 0; + local_44.z = 0x1000; + } + Vec3p_Scale(&local_44, (local_2c + param_5) - iVar2); + Vec3p_Add(param_3, &local_44, param_8); + } else { + Vec3p_Scale(&VStack_28, param_6); + Vec3p_Add(param_4, &VStack_28, param_8); + } + local_5c.x = local_38.x; + local_5c.y = local_38.y; + local_5c.z = local_38.z; + Vec3p_Sub(param_4, &local_5c, &local_50); + // Vec3p_Normalize(&local_50); + param_9->x = local_50.x; + param_9->y = local_50.y; + param_9->z = local_50.z; + return false; + } + if (iVar2 != 1) { + if (iVar2 != 2) { + return false; + } + //(**(code **) (*param_2 + 0x2c))(param_2, auStack_94); + // func_ov000_0208e6b0(auStack_94, &VStack_a0); + Vec3p_Scale(&VStack_28, param_6); + Vec3p_Add(param_4, &VStack_28, param_8); + Vec3p_Sub(param_4, &VStack_a0, param_9); + // Vec3p_Normalize(param_9); + return false; + } + local_70[3] = 0; + local_70[0] = 0; + local_70[1] = 0; + local_70[2] = 0; + // (**(code **) (*param_2 + 0x28))(param_2, local_70); + Vec3p_Scale(&VStack_28, param_6); + Vec3p_Add(param_4, &VStack_28, param_8); + local_7c.x = local_70[0]; + local_7c.z = local_70[2]; + local_7c.y = param_4->y; + Vec3p_Sub(param_4, &local_7c, param_9); + // Vec3p_Normalize(param_9); + return false; +} diff --git a/src/04_Load/Map/MapManager.cpp b/src/04_Load/Map/MapManager.cpp index 74f9c617..e171f8be 100644 --- a/src/04_Load/Map/MapManager.cpp +++ b/src/04_Load/Map/MapManager.cpp @@ -7,5 +7,5 @@ void MapManager::Destroy() {} void MapManager::LoadMapTexSprites(s32 param1) {} void MapManager::func_ov004_02102260() {} void MapManager::func_ov004_02102264(unk32 *param1, char *param2) {} -void MapManager::func_ov004_021024c4(s32 param1, unk32 param2, unk32 param3) {} +void MapManager::func_ov004_021024c4(unk32 *param1, unk32 param2, bool param3) {} void MapManager::func_ov004_021025d8() {} diff --git a/src/18_Overworld/Map/MapOverworld.cpp b/src/18_Overworld/Map/MapOverworld.cpp index 5737ea54..de9b727e 100644 --- a/src/18_Overworld/Map/MapOverworld.cpp +++ b/src/18_Overworld/Map/MapOverworld.cpp @@ -22,10 +22,10 @@ s32 MapOverworld::func_ov018_0215c380(u8 *param1) {} void MapOverworld::vfunc_bc() {} void MapOverworld::vfunc_98() {} void MapOverworld::vfunc_c0() {} -unk32 MapOverworld::vfunc_78() {} +unk32 *MapOverworld::vfunc_78() {} unk32 MapOverworld::vfunc_7c() {} unk32 MapOverworld::vfunc_80() {} -unk8 MapOverworld::vfunc_b0(unk32 param_2, unk32 param_3) {} +void MapOverworld::vfunc_b0(unk32 param_2, unk32 param_3) {} void MapOverworld::func_ov018_0215c650() {} void MapOverworld::func_ov018_0215c6ac() {} void MapOverworld::func_ov018_0215c6d0() {} @@ -35,4 +35,4 @@ void MapOverworld::func_ov018_0215c9ac() {} void func_ov018_0215ca24(s32 param1) {} void func_ov018_0215ca3c(s32 param1, s32 param2, unk32 param3, unk32 param4) {} void func_ov018_0215ca8c(s32 param1) {} -void MapOverworld::vfunc_4c() {} +s32 MapOverworld::vfunc_4c() {}