summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSammygoodTunes <56520787+SammygoodTunes@users.noreply.github.com>2025-07-24 19:23:29 +0200
committerGitHub <noreply@github.com>2025-07-24 19:23:29 +0200
commitdda45d5574798dc45a31437f473eaa55b9142e13 (patch)
treeead27bd22d20f3ddbe3bd1dd303e66913a745fae
parent2415d4899d50a95e8ff564c7b72bc8803d9a96dd (diff)
Decomp `src/00_Core/Map/MapManager.cpp` (56%) (#101)
* Fix * Fix * stupid typo * Another dumb typo * Fix * Fix declaration * Fix declaration * Fix * Fix symbols * Corrections * Fix regression in GetEntrancePos --------- Co-authored-by: Aetias <aetias@outlook.com>
-rw-r--r--config/eur/arm9/overlays/ov000/symbols.txt38
-rw-r--r--config/eur/arm9/overlays/ov004/symbols.txt10
-rw-r--r--config/eur/arm9/overlays/ov012/symbols.txt2
-rw-r--r--config/eur/arm9/overlays/ov015/symbols.txt10
-rw-r--r--config/eur/arm9/overlays/ov017/symbols.txt4
-rw-r--r--config/usa/arm9/overlays/ov000/symbols.txt32
-rw-r--r--include/DTCM/UnkStruct_027e0f64.hpp9
-rw-r--r--include/DTCM/UnkStruct_027e0f6c.hpp10
-rw-r--r--include/DTCM/UnkStruct_027e0f78.hpp2
-rw-r--r--include/Map/Course.hpp3
-rw-r--r--include/Map/Entrance.hpp2
-rw-r--r--include/Map/MapBase.hpp13
-rw-r--r--include/Map/MapManager.hpp50
-rw-r--r--include/Message/MessageManager.hpp1
-rw-r--r--include/Message/MsgProc.hpp4
-rw-r--r--include/Save/AdventureFlags.hpp11
-rw-r--r--src/00_Core/Map/MapBase.cpp4
-rw-r--r--src/00_Core/Map/MapManager.cpp1354
-rw-r--r--src/00_Core/Save/AdventureFlags.cpp56
-rw-r--r--src/00_Core/Save/FlagsUnk.cpp3
-rw-r--r--src/04_Load/Map/MapManager.cpp2
-rw-r--r--src/09_Adventure/Game/GameModeAdventure.cpp18
-rw-r--r--src/Main/Unknown/UnkStruct_020397f8.cpp2
23 files changed, 839 insertions, 801 deletions
diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt
index 77f6eed5..807fbd9a 100644
--- a/config/eur/arm9/overlays/ov000/symbols.txt
+++ b/config/eur/arm9/overlays/ov000/symbols.txt
@@ -83,7 +83,7 @@ _ZN18UnkStruct_027e0d3819func_ov000_02078b40Ev kind:function(arm,size=0x24) addr
_ZN18UnkStruct_027e0d3819func_ov000_02078b64Ev kind:function(arm,size=0x24) addr:0x02078b64
_ZN18UnkStruct_027e0d3819func_ov000_02078b88Ev kind:function(arm,size=0x3c) addr:0x02078b88
_Z19func_ov000_02078bc4i kind:function(thumb,size=0x2c) addr:0x02078bc4
-_Z19func_ov000_02078bf0PiS_ kind:function(thumb,size=0x11c) addr:0x02078bf0
+_ZN9FlagsUnk219func_ov000_02078bf0EPS_ kind:function(thumb,size=0x11c) addr:0x02078bf0
func_ov000_02078d0c kind:function(thumb,size=0x24) addr:0x02078d0c
func_ov000_02078d30 kind:function(thumb,size=0x24) addr:0x02078d30
func_ov000_02078d54 kind:function(thumb,size=0x3c) addr:0x02078d54
@@ -339,7 +339,7 @@ _ZN7MapBase8vfunc_50Ev kind:function(arm,size=0x8) addr:0x0207e488
_ZN7MapBase8vfunc_54EP5Vec2b kind:function(arm,size=0x8) addr:0x0207e490
_ZN7MapBase8vfunc_58EP5Vec2bi kind:function(arm,size=0x8) addr:0x0207e498
_ZN7MapBase8vfunc_5cEv kind:function(arm,size=0x8) addr:0x0207e4a0
-_ZN7MapBase8vfunc_60EPh kind:function(arm,size=0x8) addr:0x0207e4a8
+_ZN7MapBase8vfunc_60EP5Vec2b kind:function(arm,size=0x8) addr:0x0207e4a8
_ZN7MapBase8vfunc_64Ev kind:function(arm,size=0x8) addr:0x0207e4b0
_ZN7MapBase8vfunc_68EP5Vec3pb kind:function(arm,size=0x488) addr:0x0207e4b8
_ZN7MapBase18func_ov00_0207e940EPc kind:function(arm,size=0x28) addr:0x0207e940
@@ -358,12 +358,12 @@ _ZN7MapBase8vfunc_a0Ev kind:function(arm,size=0x4) addr:0x0207f338
_ZN7MapBase8vfunc_a4EPc kind:function(arm,size=0x8) addr:0x0207f33c
_ZN7MapBase8vfunc_a8Ev kind:function(arm,size=0x4) addr:0x0207f344
_ZN7MapBase8vfunc_acEv kind:function(arm,size=0x4) addr:0x0207f348
-_ZN7MapBase8vfunc_78EPb kind:function(arm,size=0x8) addr:0x0207f34c
+_ZN7MapBase8vfunc_78EP5Vec2b kind:function(arm,size=0x8) addr:0x0207f34c
_ZN7MapBase8vfunc_7cEiPiiPs kind:function(arm,size=0x8) addr:0x0207f354
_ZN7MapBase8vfunc_80Ev kind:function(arm,size=0x8) addr:0x0207f35c
_ZN7MapBase8vfunc_84Ei kind:function(arm,size=0x28) addr:0x0207f364
_ZN7MapBase18func_ov00_0207f38cEPi kind:function(arm,size=0x38) addr:0x0207f38c
-_ZN7MapBase8vfunc_90Eiii kind:function(arm,size=0xdc) addr:0x0207f3c4
+_ZN7MapBase8vfunc_90EP5Vec2bi kind:function(arm,size=0xdc) addr:0x0207f3c4
_ZN7MapBase8vfunc_94Ev kind:function(arm,size=0x4) addr:0x0207f4a0
_ZN7MapBase18func_ov00_0207f4a4EP5Vec2si kind:function(arm,size=0x98) addr:0x0207f4a4
_ZN7MapBase18func_ov00_0207f53cEP5Vec2sPS_P5Vec3p kind:function(arm,size=0x4c) addr:0x0207f53c
@@ -490,9 +490,9 @@ func_ov000_020820bc kind:function(arm,size=0x14) addr:0x020820bc
func_ov000_020820d0 kind:function(arm,size=0x1c) addr:0x020820d0
_ZN10MapManager24GetCourseDungeonProgressEP14CourseProgress kind:function(arm,size=0x10) addr:0x020820ec
_ZN10MapManager18func_ov00_020820fcEiii kind:function(arm,size=0x10) addr:0x020820fc
-_ZN10MapManager18func_ov00_0208210cEiPi kind:function(arm,size=0x200) addr:0x0208210c
-_ZN10MapManager18func_ov00_0208230cEPi kind:function(arm,size=0x3c) addr:0x0208230c
-_ZN10MapManager18func_ov00_02082348EPi kind:function(arm,size=0x5c) addr:0x02082348
+_ZN10MapManager18func_ov00_0208210cEiP25UnkStruct_0208210c_param3 kind:function(arm,size=0x200) addr:0x0208210c
+_ZN10MapManager18func_ov00_0208230cEP9FlagsUnk2 kind:function(arm,size=0x3c) addr:0x0208230c
+_ZN10MapManager18func_ov00_02082348EP9FlagsUnk2 kind:function(arm,size=0x5c) addr:0x02082348
_ZN10MapManager18func_ov00_020823a4Ei kind:function(arm,size=0x10) addr:0x020823a4
_ZN10MapManager18func_ov00_020823b4Ev kind:function(arm,size=0x10) addr:0x020823b4
_ZN10MapManager18func_ov00_020823c4EPii kind:function(arm,size=0x10) addr:0x020823c4
@@ -529,7 +529,7 @@ _ZN10MapManager18func_ov00_02082914Ei kind:function(arm,size=0x1b8) addr:0x02082
_ZN10MapManager18func_ov00_02082accEv kind:function(arm,size=0x10) addr:0x02082acc
_ZN10MapManager18func_ov00_02082adcEv kind:function(arm,size=0x18) addr:0x02082adc
_ZN10MapManager18func_ov00_02082af4Ev kind:function(arm,size=0x48) addr:0x02082af4
-_ZN10MapManager18func_ov00_02082b3cEPiP5Vec2b kind:function(arm,size=0x1cc) addr:0x02082b3c
+_ZN10MapManager18func_ov00_02082b3cEP9FlagsUnk2 kind:function(arm,size=0x1cc) addr:0x02082b3c
_ZN10MapManager18func_ov00_02082d08Ev kind:function(arm,size=0x20) addr:0x02082d08
_ZN10MapManager17GetCurrentMapPosXEv kind:function(arm,size=0xc) addr:0x02082d28
_ZN10MapManager17GetCurrentMapPosYEv kind:function(arm,size=0xc) addr:0x02082d34
@@ -602,7 +602,7 @@ _ZN10MapManager18func_ov00_020839c4Ei kind:function(arm,size=0x10) addr:0x020839
_ZN10MapManager18func_ov00_020839d4Ei kind:function(arm,size=0x24) addr:0x020839d4
_ZN10MapManager18func_ov00_020839f8Ei kind:function(arm,size=0x24) addr:0x020839f8
_ZN10MapManager18func_ov00_02083a1cEP5Vec2bPS_P5Vec3p kind:function(arm,size=0x38) addr:0x02083a1c
-_ZN10MapManager18func_ov00_02083a54EPhPS_PiiS2_ kind:function(arm,size=0x130) addr:0x02083a54
+_ZN10MapManager18func_ov00_02083a54EP5Vec2bPS_P5Vec3pii kind:function(arm,size=0x130) addr:0x02083a54
_ZN10MapManager13GetTileStartXEi kind:function(arm,size=0x28) addr:0x02083b84
_ZN10MapManager13GetTileStartZEi kind:function(arm,size=0x28) addr:0x02083bac
_ZN10MapManager11GetTileEndXEi kind:function(arm,size=0x28) addr:0x02083bd4
@@ -610,7 +610,7 @@ _ZN10MapManager11GetTileEndZEi kind:function(arm,size=0x28) addr:0x02083bfc
_ZN10MapManager18func_ov00_02083c24Ei kind:function(arm,size=0x2c) addr:0x02083c24
_ZN10MapManager18func_ov00_02083c50Ei kind:function(arm,size=0x2c) addr:0x02083c50
_ZN10MapManager18func_ov00_02083c7cEP5Vec3p5Vec2b kind:function(arm,size=0x6c) addr:0x02083c7c
-_ZN10MapManager18func_ov00_02083ce8EP5Vec3pjij kind:function(arm,size=0x14c) addr:0x02083ce8
+_ZN10MapManager18func_ov00_02083ce8EP5Vec3p5Vec2bij kind:function(arm,size=0x14c) addr:0x02083ce8
_ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x02083e34
_ZN10MapManager16MapData_vfunc_60EP5Vec2b kind:function(arm,size=0x18) addr:0x02083e58
_ZN10MapManager18func_ov00_02083e70EP5Vec2b kind:function(arm,size=0x70) addr:0x02083e70
@@ -622,7 +622,7 @@ _ZN10MapManager16MapData_vfunc_70EP5Vec3p kind:function(arm,size=0x18) addr:0x02
_ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x02083fb0
_ZN10MapManager18GetTileWorldBoundsEP5Vec2bP4AABB kind:function(arm,size=0x64) addr:0x02084024
_ZN10MapManager16MapData_vfunc_54EP5Vec2b kind:function(arm,size=0x18) addr:0x02084088
-_ZN10MapManager18func_ov00_020840a0Ecc kind:function(arm,size=0x24) addr:0x020840a0
+_ZN10MapManager18func_ov00_020840a0Ehh kind:function(arm,size=0x24) addr:0x020840a0
_ZN10MapManager16MapData_vfunc_78EP5Vec2b kind:function(arm,size=0x18) addr:0x020840c4
_ZN10MapManager18func_ov00_020840dcEP5Vec2b kind:function(arm,size=0x24) addr:0x020840dc
_ZN10MapManager18func_ov00_02084100EPiPS_ kind:function(arm,size=0x14) addr:0x02084100
@@ -676,7 +676,7 @@ _ZN10MapManager18func_ov00_02084d24Eccs kind:function(arm,size=0x28) addr:0x0208
_ZN10MapManager18func_ov00_02084d4cEiiP5Vec3p kind:function(arm,size=0x170) addr:0x02084d4c
_ZN10MapManager18func_ov00_02084ebcEP5Vec3p kind:function(arm,size=0x24c) addr:0x02084ebc
_ZN10MapManager18func_ov00_02085108EP5Vec3p kind:function(arm,size=0x174) addr:0x02085108
-_ZN10MapManager18func_ov00_0208527cEPS_iPi kind:function(arm,size=0x180) addr:0x0208527c
+_ZN10MapManager18func_ov00_0208527cEPS_iP5Vec3p kind:function(arm,size=0x180) addr:0x0208527c
_ZN10MapManager18func_ov00_020853fcEPS_P5Vec3pPi kind:function(arm,size=0x198) addr:0x020853fc
_ZN10MapManager18func_ov00_02085594EP5Vec3p kind:function(arm,size=0x2a8) addr:0x02085594
_ZN10MapManager18func_ov00_0208583cEPS_P5Vec3pi kind:function(arm,size=0x74) addr:0x0208583c
@@ -720,7 +720,7 @@ func_ov000_02087f08 kind:function(arm,size=0x18) addr:0x02087f08
func_ov000_02087f20 kind:function(arm,size=0xa0) addr:0x02087f20
func_ov000_02087fc0 kind:function(arm,size=0x20) addr:0x02087fc0
func_ov000_02087fe0 kind:function(arm,size=0x20) addr:0x02087fe0
-_Z19func_ov000_02088000ii kind:function(arm,size=0x10) addr:0x02088000
+_Z19func_ov000_02088000P21UnkStruct_027e0f64_04i kind:function(arm,size=0x10) addr:0x02088000
func_ov000_02088010 kind:function(arm,size=0x64) addr:0x02088010
func_ov000_02088074 kind:function(arm,size=0x84) addr:0x02088074
func_ov000_020880f8 kind:function(arm,size=0x38) addr:0x020880f8
@@ -777,7 +777,7 @@ func_ov000_0208ae58 kind:function(arm,size=0x3c) addr:0x0208ae58
_ZN18UnkStruct_027e0f6419func_ov000_0208ae94Ev kind:function(arm,size=0x44) addr:0x0208ae94
func_ov000_0208aed8 kind:function(arm,size=0x244) addr:0x0208aed8
func_ov000_0208b11c kind:function(arm,size=0x20) addr:0x0208b11c
-func_ov000_0208b13c kind:function(arm,size=0x1c) addr:0x0208b13c
+_ZN18UnkStruct_027e0f6419func_ov000_0208b13cEv kind:function(arm,size=0x1c) addr:0x0208b13c
func_ov000_0208b158 kind:function(arm,size=0x28) addr:0x0208b158
_ZN18UnkStruct_027e0f6419func_ov000_0208b180Ev kind:function(arm,size=0x28) addr:0x0208b180
func_ov000_0208b1a8 kind:function(arm,size=0x28) addr:0x0208b1a8
@@ -861,7 +861,7 @@ func_ov000_0208cb84 kind:function(arm,size=0x4c) addr:0x0208cb84
func_ov000_0208cbd0 kind:function(arm,size=0x84) addr:0x0208cbd0
func_ov000_0208cc54 kind:function(arm,size=0x10) addr:0x0208cc54
func_ov000_0208cc64 kind:function(arm,size=0x24) addr:0x0208cc64
-_Z19func_ov000_0208cc88Pi kind:function(arm,size=0x54) addr:0x0208cc88
+_ZN18UnkStruct_027e0f6819func_ov000_0208cc88Ev kind:function(arm,size=0x54) addr:0x0208cc88
func_ov000_0208ccdc kind:function(arm,size=0x10) addr:0x0208ccdc
func_ov000_0208ccec kind:function(arm,size=0x10) addr:0x0208ccec
func_ov000_0208ccfc kind:function(arm,size=0x10) addr:0x0208ccfc
@@ -878,8 +878,8 @@ func_ov000_0208d310 kind:function(arm,size=0xec) addr:0x0208d310
func_ov000_0208d3fc kind:function(arm,size=0x98) addr:0x0208d3fc
func_ov000_0208d494 kind:function(arm,size=0x14c) addr:0x0208d494
func_ov000_0208d5e0 kind:function(arm,size=0x40) addr:0x0208d5e0
-_Z19func_ov000_0208d620Pi kind:function(arm,size=0x60) addr:0x0208d620
-_Z19func_ov000_0208d680Pi kind:function(arm,size=0x60) addr:0x0208d680
+_ZN18UnkStruct_027e0f6819func_ov000_0208d620Ev kind:function(arm,size=0x60) addr:0x0208d620
+_ZN18UnkStruct_027e0f6819func_ov000_0208d680Ev kind:function(arm,size=0x60) addr:0x0208d680
func_ov000_0208d6e0 kind:function(arm,size=0x140) addr:0x0208d6e0
func_ov000_0208d820 kind:function(arm,size=0x110) addr:0x0208d820
func_ov000_0208d930 kind:function(arm,size=0xb0) addr:0x0208d930
@@ -1457,9 +1457,9 @@ func_ov000_0209d550 kind:function(arm,size=0x14) addr:0x0209d550
func_ov000_0209d564 kind:function(arm,size=0x16c) addr:0x0209d564
func_ov000_0209d6d0 kind:function(arm,size=0x4) addr:0x0209d6d0
func_ov000_0209d6d4 kind:function(arm,size=0x14) addr:0x0209d6d4
-_Z19func_ov000_0209d6e8PiS_ kind:function(arm,size=0x28) addr:0x0209d6e8
+_ZN22UnkClass_data_027e0f7c19func_ov000_0209d6e8EPi kind:function(arm,size=0x28) addr:0x0209d6e8
func_ov000_0209d710 kind:function(arm,size=0xc) addr:0x0209d710
-_Z19func_ov000_0209d71cPii kind:function(arm,size=0xc) addr:0x0209d71c
+_ZN22UnkClass_data_027e0f7c19func_ov000_0209d71cEi kind:function(arm,size=0xc) addr:0x0209d71c
func_ov000_0209d728 kind:function(arm,size=0x10) addr:0x0209d728
func_ov000_0209d738 kind:function(arm,size=0x10) addr:0x0209d738
func_ov000_0209d748 kind:function(arm,size=0x10) addr:0x0209d748
diff --git a/config/eur/arm9/overlays/ov004/symbols.txt b/config/eur/arm9/overlays/ov004/symbols.txt
index 49be325a..e2593efe 100644
--- a/config/eur/arm9/overlays/ov004/symbols.txt
+++ b/config/eur/arm9/overlays/ov004/symbols.txt
@@ -41,7 +41,7 @@ _ZN10MapManager7DestroyEv kind:function(thumb,size=0x24) addr:0x02101fe8
_ZN10MapManager17LoadMapTexSpritesEi kind:function(thumb,size=0x254) addr:0x0210200c
_ZN10MapManager19func_ov004_02102260Ev kind:function(thumb,size=0x2) addr:0x02102260
_ZN10MapManager19func_ov004_02102264EPiPc kind:function(thumb,size=0x260) addr:0x02102264
-_ZN10MapManager19func_ov004_021024c4Eiii kind:function(thumb,size=0x114) addr:0x021024c4
+_ZN10MapManager19func_ov004_021024c4EP9FlagsUnk2bb kind:function(thumb,size=0x114) addr:0x021024c4
_ZN10MapManager19func_ov004_021025d8Ev kind:function(thumb,size=0x10) addr:0x021025d8
func_ov004_021025e8 kind:function(thumb,size=0x34) addr:0x021025e8
func_ov004_0210261c kind:function(arm,size=0x4) addr:0x0210261c
@@ -51,7 +51,7 @@ func_ov004_021026cc kind:function(thumb,size=0x24) addr:0x021026cc
func_ov004_021026f0 kind:function(thumb,size=0x4c) addr:0x021026f0
func_ov004_0210273c kind:function(thumb,size=0xc) addr:0x0210273c
func_ov004_02102748 kind:function(thumb,size=0x26) addr:0x02102748
-_Z19func_ov004_02102770Pi kind:function(thumb,size=0x44) addr:0x02102770
+_ZN18UnkStruct_027e0f6c19func_ov004_02102770Ev kind:function(thumb,size=0x44) addr:0x02102770
func_ov004_021027b4 kind:function(arm,size=0x28) addr:0x021027b4
func_ov004_021027dc kind:function(arm,size=0x4) addr:0x021027dc
func_ov004_021027e0 kind:function(arm,size=0x14) addr:0x021027e0
@@ -72,7 +72,7 @@ func_ov004_02102aa0 kind:function(thumb,size=0x38) addr:0x02102aa0
func_ov004_02102ad8 kind:function(thumb,size=0x1e) addr:0x02102ad8
func_ov004_02102af8 kind:function(thumb,size=0x6) addr:0x02102af8
func_ov004_02102b00 kind:function(thumb,size=0x28) addr:0x02102b00
-_Z19func_ov004_02102b28Pi kind:function(thumb,size=0x54) addr:0x02102b28
+_ZN18UnkStruct_027e0f6819func_ov004_02102b28Ev kind:function(thumb,size=0x54) addr:0x02102b28
func_ov004_02102b7c kind:function(arm,size=0x14) addr:0x02102b7c
func_ov004_02102b90 kind:function(arm,size=0x14) addr:0x02102b90
func_ov004_02102ba4 kind:function(arm,size=0x44) addr:0x02102ba4
@@ -86,7 +86,7 @@ func_ov004_02102da4 kind:function(thumb,size=0x44) addr:0x02102da4
func_ov004_02102de8 kind:function(thumb,size=0x2) addr:0x02102de8
func_ov004_02102dec kind:function(thumb,size=0x2c) addr:0x02102dec
func_ov004_02102e18 kind:function(thumb,size=0x24) addr:0x02102e18
-_Z19func_ov004_02102e3cPi kind:function(thumb,size=0x1c) addr:0x02102e3c
+_ZN18UnkStruct_027e0f7819func_ov004_02102e3cEv kind:function(thumb,size=0x1c) addr:0x02102e3c
func_ov004_02102e58 kind:function(thumb,size=0x5ec) addr:0x02102e58
func_ov004_02103444 kind:function(thumb,size=0xb8) addr:0x02103444
func_ov004_021034fc kind:function(thumb,size=0xbc) addr:0x021034fc
@@ -203,7 +203,7 @@ func_ov004_021069c4 kind:function(thumb,size=0x31c) addr:0x021069c4
func_ov004_02106ce0 kind:function(thumb,size=0x80) addr:0x02106ce0
func_ov004_02106d60 kind:function(thumb,size=0x44) addr:0x02106d60
func_ov004_02106da4 kind:function(thumb,size=0x12) addr:0x02106da4
-func_ov004_02106db8 kind:function(thumb,size=0x50) addr:0x02106db8
+_ZN14MessageManager19func_ov004_02106db8Ev kind:function(thumb,size=0x50) addr:0x02106db8
func_ov004_02106e08 kind:function(thumb,size=0x1bc) addr:0x02106e08
func_ov004_02106fc4 kind:function(thumb,size=0xc) addr:0x02106fc4
func_ov004_02106fd0 kind:function(thumb,size=0x154) addr:0x02106fd0
diff --git a/config/eur/arm9/overlays/ov012/symbols.txt b/config/eur/arm9/overlays/ov012/symbols.txt
index 046b6572..83ed51ad 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:0x0212b31c
func_ov012_0212b33c kind:function(arm,size=0xc) addr:0x0212b33c
func_ov012_0212b348 kind:function(arm,size=0x8) addr:0x0212b348
func_ov012_0212b350 kind:function(arm,size=0x8) addr:0x0212b350
-_Z19func_ov012_0212b358P7MapBaseii kind:function(arm,size=0xf8) addr:0x0212b358
+_ZN18UnkStruct_0212b358C1Ejj kind:function(arm,size=0xf8) addr:0x0212b358
func_ov012_0212b450 kind:function(arm,size=0x88) addr:0x0212b450
func_ov012_0212b4d8 kind:function(arm,size=0x90) addr:0x0212b4d8
func_ov012_0212b568 kind:function(arm,size=0x94) addr:0x0212b568
diff --git a/config/eur/arm9/overlays/ov015/symbols.txt b/config/eur/arm9/overlays/ov015/symbols.txt
index a25e3131..d8af5adc 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:0x02128b9c
func_ov015_02128c2c kind:function(arm,size=0x140) addr:0x02128c2c
func_ov015_02128d6c kind:function(arm,size=0x20) addr:0x02128d6c
func_ov015_02128d8c kind:function(arm,size=0x4c) addr:0x02128d8c
-_Z19func_ov015_02128dd8P7MapBaseii kind:function(arm,size=0xac) addr:0x02128dd8
+_ZN18UnkStruct_02128dd8C1Ejj kind:function(arm,size=0xac) addr:0x02128dd8
func_ov015_02128e84 kind:function(arm,size=0xcc) addr:0x02128e84
func_ov015_02128f50 kind:function(arm,size=0xd4) addr:0x02128f50
func_ov015_02129024 kind:function(arm,size=0x220) addr:0x02129024
@@ -287,10 +287,10 @@ func_ov015_02129b30 kind:function(arm,size=0x8) addr:0x02129b30
func_ov015_02129b38 kind:function(arm,size=0x18) addr:0x02129b38
func_ov015_02129b50 kind:function(arm,size=0xb4) addr:0x02129b50
func_ov015_02129c04 kind:function(arm,size=0x10) addr:0x02129c04
-_Z19func_ov015_02129c14P7MapBase kind:function(arm,size=0x10) addr:0x02129c14
-_Z19func_ov015_02129c24P7MapBaseP5Vec3pS2_ kind:function(arm,size=0x10) addr:0x02129c24
-_Z19func_ov015_02129c34P7MapBasei kind:function(arm,size=0x10) addr:0x02129c34
-_Z19func_ov015_02129c44P7MapBasei kind:function(arm,size=0x10) addr:0x02129c44
+_ZN7MapBase19func_ov015_02129c14Ev kind:function(arm,size=0x10) addr:0x02129c14
+_ZN7MapBase19func_ov015_02129c24EP5Vec3pS1_ kind:function(arm,size=0x10) addr:0x02129c24
+_ZN7MapBase19func_ov015_02129c34Ei kind:function(arm,size=0x10) addr:0x02129c34
+_ZN7MapBase19func_ov015_02129c44Ei kind:function(arm,size=0x10) addr:0x02129c44
func_ov015_02129c54 kind:function(arm,size=0x50) addr:0x02129c54
func_ov015_02129ca4 kind:function(arm,size=0x44) addr:0x02129ca4
func_ov015_02129ce8 kind:function(arm,size=0xac) addr:0x02129ce8
diff --git a/config/eur/arm9/overlays/ov017/symbols.txt b/config/eur/arm9/overlays/ov017/symbols.txt
index 78b24538..7679dc4d 100644
--- a/config/eur/arm9/overlays/ov017/symbols.txt
+++ b/config/eur/arm9/overlays/ov017/symbols.txt
@@ -1,6 +1,6 @@
-_Z19func_ov017_0215b4a0P7MapBaseii kind:function(arm,size=0x2c) addr:0x0215b4a0
+_ZN18UnkStruct_0215b4a0C1Ejj kind:function(arm,size=0x2c) addr:0x0215b4a0
func_ov017_0215b4cc kind:function(arm,size=0x1c) addr:0x0215b4cc
-_Z19func_ov017_0215b4e8P7MapBaseii kind:function(thumb,size=0xf0) addr:0x0215b4e8
+_ZN18UnkStruct_0215b4e8C1Ejj kind:function(thumb,size=0xf0) addr:0x0215b4e8
func_ov017_0215b5d8 kind:function(thumb,size=0x94) addr:0x0215b5d8
func_ov017_0215b66c kind:function(thumb,size=0x9c) addr:0x0215b66c
func_ov017_0215b708 kind:function(thumb,size=0x5c) addr:0x0215b708
diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt
index bc234435..77d5568b 100644
--- a/config/usa/arm9/overlays/ov000/symbols.txt
+++ b/config/usa/arm9/overlays/ov000/symbols.txt
@@ -83,7 +83,7 @@ _ZN18UnkStruct_027e0d3819func_ov000_02078b40Ev kind:function(arm,size=0x24) addr
_ZN18UnkStruct_027e0d3819func_ov000_02078b64Ev kind:function(arm,size=0x24) addr:0x02078b04
_ZN18UnkStruct_027e0d3819func_ov000_02078b88Ev kind:function(arm,size=0x3c) addr:0x02078b28
func_ov000_02078bc4 kind:function(thumb,size=0x2c) addr:0x02078b64
-func_ov000_02078bf0 kind:function(thumb,size=0x11c) addr:0x02078b90
+_ZN9FlagsUnk219func_ov000_02078bf0EPS_ kind:function(thumb,size=0x11c) addr:0x02078b90
func_ov000_02078d0c kind:function(thumb,size=0x24) addr:0x02078cac
func_ov000_02078d30 kind:function(thumb,size=0x24) addr:0x02078cd0
func_ov000_02078d54 kind:function(thumb,size=0x3c) addr:0x02078cf4
@@ -363,7 +363,7 @@ _ZN7MapBase8vfunc_7cEv kind:function(arm,size=0x8) addr:0x0207f2f4
_ZN7MapBase8vfunc_80Ev kind:function(arm,size=0x8) addr:0x0207f2fc
_ZN7MapBase8vfunc_84Ei kind:function(arm,size=0x28) addr:0x0207f304
_ZN7MapBase18func_ov00_0207f38cEi kind:function(arm,size=0x38) addr:0x0207f32c
-_ZN7MapBase8vfunc_90Eiii kind:function(arm,size=0xdc) addr:0x0207f364
+_ZN7MapBase8vfunc_90EP5Vec2bi kind:function(arm,size=0xdc) addr:0x0207f364
_ZN7MapBase8vfunc_94Ev kind:function(arm,size=0x4) addr:0x0207f440
_ZN7MapBase18func_ov00_0207f4a4EP5Vec2si kind:function(arm,size=0x98) addr:0x0207f444
_ZN7MapBase18func_ov00_0207f53cEP5Vec2sPS_P5Vec3p kind:function(arm,size=0x4c) addr:0x0207f4dc
@@ -490,9 +490,9 @@ func_ov000_020820bc kind:function(arm,size=0x14) addr:0x0208205c
func_ov000_020820d0 kind:function(arm,size=0x1c) addr:0x02082070
_ZN10MapManager24GetCourseDungeonProgressEP14CourseProgress kind:function(arm,size=0x10) addr:0x0208208c
_ZN10MapManager18func_ov00_020820fcEiii kind:function(arm,size=0x10) addr:0x0208209c
-_ZN10MapManager18func_ov00_0208210cEiPi kind:function(arm,size=0x200) addr:0x020820ac
-_ZN10MapManager18func_ov00_0208230cEPi kind:function(arm,size=0x3c) addr:0x020822ac
-_ZN10MapManager18func_ov00_02082348EPi kind:function(arm,size=0x5c) addr:0x020822e8
+_ZN10MapManager18func_ov00_0208210cEiP25UnkStruct_0208210c_param3 kind:function(arm,size=0x200) addr:0x020820ac
+_ZN10MapManager18func_ov00_0208230cEP9FlagsUnk2 kind:function(arm,size=0x3c) addr:0x020822ac
+_ZN10MapManager18func_ov00_02082348EP9FlagsUnk2 kind:function(arm,size=0x5c) addr:0x020822e8
_ZN10MapManager18func_ov00_020823a4Ei kind:function(arm,size=0x10) addr:0x02082344
_ZN10MapManager18func_ov00_020823b4Ev kind:function(arm,size=0x10) addr:0x02082354
_ZN10MapManager18func_ov00_020823c4EPii kind:function(arm,size=0x10) addr:0x02082364
@@ -529,7 +529,7 @@ _ZN10MapManager18func_ov00_02082914Ei kind:function(arm,size=0x1b8) addr:0x02082
_ZN10MapManager18func_ov00_02082accEv kind:function(arm,size=0x10) addr:0x02082a6c
_ZN10MapManager18func_ov00_02082adcEv kind:function(arm,size=0x18) addr:0x02082a7c
_ZN10MapManager18func_ov00_02082af4Ev kind:function(arm,size=0x48) addr:0x02082a94
-_ZN10MapManager18func_ov00_02082b3cEPiP5Vec2b kind:function(arm,size=0x1cc) addr:0x02082adc
+_ZN10MapManager18func_ov00_02082b3cEP9FlagsUnk2 kind:function(arm,size=0x1cc) addr:0x02082adc
_ZN10MapManager18func_ov00_02082d08Ev kind:function(arm,size=0x20) addr:0x02082ca8
_ZN10MapManager17GetCurrentMapPosXEv kind:function(arm,size=0xc) addr:0x02082cc8
_ZN10MapManager17GetCurrentMapPosYEv kind:function(arm,size=0xc) addr:0x02082cd4
@@ -602,7 +602,7 @@ _ZN10MapManager18func_ov00_020839c4Ei kind:function(arm,size=0x10) addr:0x020839
_ZN10MapManager18func_ov00_020839d4Ei kind:function(arm,size=0x24) addr:0x02083974
_ZN10MapManager18func_ov00_020839f8Ei kind:function(arm,size=0x24) addr:0x02083998
_ZN10MapManager18func_ov00_02083a1cEP5Vec2bPS_P5Vec3p kind:function(arm,size=0x38) addr:0x020839bc
-_ZN10MapManager18func_ov00_02083a54EPhPS_PiiS2_ kind:function(arm,size=0x130) addr:0x020839f4
+_ZN10MapManager18func_ov00_02083a54EP5Vec2bPS_P5Vec3pii kind:function(arm,size=0x130) addr:0x020839f4
_ZN10MapManager13GetTileStartXEi kind:function(arm,size=0x28) addr:0x02083b24
_ZN10MapManager13GetTileStartZEi kind:function(arm,size=0x28) addr:0x02083b4c
_ZN10MapManager11GetTileEndXEi kind:function(arm,size=0x28) addr:0x02083b74
@@ -610,7 +610,7 @@ _ZN10MapManager11GetTileEndZEi kind:function(arm,size=0x28) addr:0x02083b9c
_ZN10MapManager18func_ov00_02083c24Ei kind:function(arm,size=0x2c) addr:0x02083bc4
_ZN10MapManager18func_ov00_02083c50Ei kind:function(arm,size=0x2c) addr:0x02083bf0
_ZN10MapManager18func_ov00_02083c7cEP5Vec3p5Vec2b kind:function(arm,size=0x6c) addr:0x02083c1c
-_ZN10MapManager18func_ov00_02083ce8EP5Vec3pjij kind:function(arm,size=0x14c) addr:0x02083c88
+_ZN10MapManager18func_ov00_02083ce8EP5Vec3p5Vec2bij kind:function(arm,size=0x14c) addr:0x02083c88
_ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x02083dd4
_ZN10MapManager16MapData_vfunc_60EP5Vec2b kind:function(arm,size=0x18) addr:0x02083df8
_ZN10MapManager18func_ov00_02083e70EP5Vec2b kind:function(arm,size=0x70) addr:0x02083e10
@@ -622,7 +622,7 @@ _ZN10MapManager16MapData_vfunc_70EP5Vec3p kind:function(arm,size=0x18) addr:0x02
_ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x02083f50
_ZN10MapManager18GetTileWorldBoundsEP5Vec2bP4AABB kind:function(arm,size=0x64) addr:0x02083fc4
_ZN10MapManager16MapData_vfunc_54EP5Vec2b kind:function(arm,size=0x18) addr:0x02084028
-_ZN10MapManager18func_ov00_020840a0Ecc kind:function(arm,size=0x24) addr:0x02084040
+_ZN10MapManager18func_ov00_020840a0Ehh kind:function(arm,size=0x24) addr:0x02084040
_ZN10MapManager16MapData_vfunc_78EP5Vec2b kind:function(arm,size=0x18) addr:0x02084064
_ZN10MapManager18func_ov00_020840dcEP5Vec2b kind:function(arm,size=0x24) addr:0x0208407c
_ZN10MapManager18func_ov00_02084100EPiPS_ kind:function(arm,size=0x14) addr:0x020840a0
@@ -676,7 +676,7 @@ _ZN10MapManager18func_ov00_02084d24Eccs kind:function(arm,size=0x28) addr:0x0208
_ZN10MapManager18func_ov00_02084d4cEiiP5Vec3p kind:function(arm,size=0x170) addr:0x02084cec
_ZN10MapManager18func_ov00_02084ebcEP5Vec3p kind:function(arm,size=0x24c) addr:0x02084e5c
_ZN10MapManager18func_ov00_02085108EP5Vec3p kind:function(arm,size=0x174) addr:0x020850a8
-_ZN10MapManager18func_ov00_0208527cEPS_iPi kind:function(arm,size=0x180) addr:0x0208521c
+_ZN10MapManager18func_ov00_0208527cEPS_iP5Vec3p kind:function(arm,size=0x180) addr:0x0208521c
_ZN10MapManager18func_ov00_020853fcEPS_P5Vec3pPi kind:function(arm,size=0x198) addr:0x0208539c
_ZN10MapManager18func_ov00_02085594EP5Vec3p kind:function(arm,size=0x2a8) addr:0x02085534
_ZN10MapManager18func_ov00_0208583cEPS_P5Vec3pi kind:function(arm,size=0x74) addr:0x020857dc
@@ -777,7 +777,7 @@ func_ov000_0208ae58 kind:function(arm,size=0x3c) addr:0x0208adf8
_ZN18UnkStruct_027e0f6419func_ov000_0208ae94Ev kind:function(arm,size=0x44) addr:0x0208ae34
func_ov000_0208aed8 kind:function(arm,size=0x244) addr:0x0208ae78
func_ov000_0208b11c kind:function(arm,size=0x20) addr:0x0208b0bc
-func_ov000_0208b13c kind:function(arm,size=0x1c) addr:0x0208b0dc
+_ZN18UnkStruct_027e0f6419func_ov000_0208b13cEv kind:function(arm,size=0x1c) addr:0x0208b0dc
func_ov000_0208b158 kind:function(arm,size=0x28) addr:0x0208b0f8
_ZN18UnkStruct_027e0f6419func_ov000_0208b180Ev kind:function(arm,size=0x28) addr:0x0208b120
func_ov000_0208b1a8 kind:function(arm,size=0x28) addr:0x0208b148
@@ -861,7 +861,7 @@ func_ov000_0208cb84 kind:function(arm,size=0x4c) addr:0x0208cb24
func_ov000_0208cbd0 kind:function(arm,size=0x84) addr:0x0208cb70
func_ov000_0208cc54 kind:function(arm,size=0x10) addr:0x0208cbf4
func_ov000_0208cc64 kind:function(arm,size=0x24) addr:0x0208cc04
-func_ov000_0208cc88 kind:function(arm,size=0x54) addr:0x0208cc28
+_ZN18UnkStruct_027e0f6819func_ov000_0208cc88Ev kind:function(arm,size=0x54) addr:0x0208cc28
func_ov000_0208ccdc kind:function(arm,size=0x10) addr:0x0208cc7c
func_ov000_0208ccec kind:function(arm,size=0x10) addr:0x0208cc8c
func_ov000_0208ccfc kind:function(arm,size=0x10) addr:0x0208cc9c
@@ -878,8 +878,8 @@ func_ov000_0208d310 kind:function(arm,size=0xec) addr:0x0208d2b0
func_ov000_0208d3fc kind:function(arm,size=0x98) addr:0x0208d39c
func_ov000_0208d494 kind:function(arm,size=0x14c) addr:0x0208d434
func_ov000_0208d5e0 kind:function(arm,size=0x40) addr:0x0208d580
-func_ov000_0208d620 kind:function(arm,size=0x60) addr:0x0208d5c0
-func_ov000_0208d680 kind:function(arm,size=0x60) addr:0x0208d620
+_ZN18UnkStruct_027e0f6819func_ov000_0208d620Ev kind:function(arm,size=0x60) addr:0x0208d5c0
+_ZN18UnkStruct_027e0f6819func_ov000_0208d680Ev kind:function(arm,size=0x60) addr:0x0208d620
func_ov000_0208d6e0 kind:function(arm,size=0x140) addr:0x0208d680
func_ov000_0208d820 kind:function(arm,size=0x110) addr:0x0208d7c0
func_ov000_0208d930 kind:function(arm,size=0xb0) addr:0x0208d8d0
@@ -1457,9 +1457,9 @@ func_ov000_0209d550 kind:function(arm,size=0x14) addr:0x0209d4f0
func_ov000_0209d564 kind:function(arm,size=0x16c) addr:0x0209d504
func_ov000_0209d6d0 kind:function(arm,size=0x4) addr:0x0209d670
func_ov000_0209d6d4 kind:function(arm,size=0x14) addr:0x0209d674
-func_ov000_0209d6e8 kind:function(arm,size=0x28) addr:0x0209d688
+_ZN22UnkClass_data_027e0f7c19func_ov000_0209d6e8EPi kind:function(arm,size=0x28) addr:0x0209d688
func_ov000_0209d710 kind:function(arm,size=0xc) addr:0x0209d6b0
-func_ov000_0209d71c kind:function(arm,size=0xc) addr:0x0209d6bc
+_ZN22UnkClass_data_027e0f7c19func_ov000_0209d71cEi kind:function(arm,size=0xc) addr:0x0209d6bc
func_ov000_0209d728 kind:function(arm,size=0x10) addr:0x0209d6c8
func_ov000_0209d738 kind:function(arm,size=0x10) addr:0x0209d6d8
func_ov000_0209d748 kind:function(arm,size=0x10) addr:0x0209d6e8
diff --git a/include/DTCM/UnkStruct_027e0f64.hpp b/include/DTCM/UnkStruct_027e0f64.hpp
index b6fb5a0b..8826fd13 100644
--- a/include/DTCM/UnkStruct_027e0f64.hpp
+++ b/include/DTCM/UnkStruct_027e0f64.hpp
@@ -5,11 +5,16 @@
#include "Debug/DebugHierarchy.hpp"
+struct UnkStruct_027e0f64_04 {
+ /* 000 */ u8 pad[0x1B4 - 0x00];
+ /* 1b4 */ unk32 mUnk_1b4;
+};
+
class UnkStruct_027e0f64 {
public:
/* 0 */ DebugHierarchyBase *mUnk_0;
- /* 4 */ void *mUnk_4;
- /* 8 */ void *mUnk_8;
+ /* 4 */ UnkStruct_027e0f64_04 *mUnk_4;
+ /* 8 */ UnkStruct_027e0f64_04 *mUnk_8;
/* c */
void func_ov000_0208ae94();
diff --git a/include/DTCM/UnkStruct_027e0f6c.hpp b/include/DTCM/UnkStruct_027e0f6c.hpp
new file mode 100644
index 00000000..6bddc3ca
--- /dev/null
+++ b/include/DTCM/UnkStruct_027e0f6c.hpp
@@ -0,0 +1,10 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+struct UnkStruct_027e0f6c {
+ void func_ov004_02102770();
+};
+
+extern UnkStruct_027e0f6c *data_027e0f6c;
diff --git a/include/DTCM/UnkStruct_027e0f78.hpp b/include/DTCM/UnkStruct_027e0f78.hpp
index 04353f37..bbae228d 100644
--- a/include/DTCM/UnkStruct_027e0f78.hpp
+++ b/include/DTCM/UnkStruct_027e0f78.hpp
@@ -10,6 +10,8 @@ struct UnkStruct_027e0f78 {
/* 1c */ u16 mUnk_1c;
/* 1e */ u16 mUnk_1e;
/* 20 */
+
+ void func_ov004_02102e3c();
};
extern UnkStruct_027e0f78 *data_027e0f78;
diff --git a/include/Map/Course.hpp b/include/Map/Course.hpp
index c09cbb4d..569f3765 100644
--- a/include/Map/Course.hpp
+++ b/include/Map/Course.hpp
@@ -33,8 +33,7 @@ public:
/* 008 */ unk32 mUnk_008;
/* 00c */ char mName[0x10];
/* 01c */ Vec2b mCurrMapPos; // position in the map grid
- /* 01e */ unk8 mUnk_01e;
- /* 01f */ unk8 mUnk_01f;
+ /* 01e */ Vec2b mUnk_01e;
/* 020 */ u8 mMapGrid[10][10];
/* 084 */ Vec2b mMainGrid; // part of the grid where you can walk off screen to another map
/* 086 */ Vec2b mMainGridSize;
diff --git a/include/Map/Entrance.hpp b/include/Map/Entrance.hpp
index af40f6ad..79e511f4 100644
--- a/include/Map/Entrance.hpp
+++ b/include/Map/Entrance.hpp
@@ -12,7 +12,7 @@ public:
/* 00 */ Vec3p mPos;
/* 0c */ unk16 mAngle;
/* 0e */ u8 mId;
- /* 0f */ // unk8 mUnk_0f;
+ /* 0f (padding) */
/* 10 */ s32 mUnk_10;
/* 14 */
diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp
index f9768a81..f711dbbb 100644
--- a/include/Map/MapBase.hpp
+++ b/include/Map/MapBase.hpp
@@ -203,7 +203,7 @@ public:
void AddTrigger(TriggerParams *param_2);
s32 GetTriggerBoundingBox(s32 param_2, AABB *param_3);
s32 GetTriggerBoundingBoxes(s32 param_2, AABB *param_3, s32 param_4);
- bool GetOverlappingTrigger(Vec3p *param_2);
+ unk8 GetOverlappingTrigger(Vec3p *param_2);
TriggerBase *FindTrigger(unk32 type);
unk8 GetOverlappingTriggers(Vec3p *param_2, TriggerBase **triggers, unk32 capacity);
bool IsTriggerTypeOverlapped(unk32 type, Vec3p *param_3);
@@ -228,7 +228,7 @@ public:
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);
+ void func_ov00_02080d08(Vec2b *param_2);
bool TriggerOfType_vfunc_10(unk32 type);
void func_ov00_02080de4();
unk8 func_ov00_02080de8(unk32 param_2);
@@ -240,4 +240,13 @@ public:
void func_ov004_0210cb38();
void func_ov004_0210cc20(Course *course);
void func_ov004_0210cc58(Course *course, u32 map);
+
+ MapBase *func_ov012_0212b358(unk32 param_2, unk32 param_3);
+ MapBase *func_ov015_02128dd8(unk32 param_2, unk32 param_3);
+ s32 func_ov015_02129c14();
+ bool func_ov015_02129c24(Vec3p *param_2, Vec3p *param_3);
+ bool func_ov015_02129c34(s32 param_2);
+ bool func_ov015_02129c44(s32 param_2);
+ MapBase *func_ov017_0215b4a0(unk32 param_2, unk32 param_3);
+ MapBase *func_ov017_0215b4e8(unk32 param_2, unk32 param_3);
};
diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp
index aa13a0f1..a6fd03fe 100644
--- a/include/Map/MapManager.hpp
+++ b/include/Map/MapManager.hpp
@@ -27,6 +27,30 @@ struct MapManager_Unk2 {
~MapManager_Unk2();
};
+struct UnkStruct_0208210c_param3 {
+ /* 000 */ unk32 mUnk_00;
+ /* 004 */ unk8 mUnk_04;
+ /* 005 */ unk8 mUnk_05;
+ /* 006 */ unk8 mUnk_06;
+ /* 007 */ bool mUnk_07;
+ /* 008 */ unk32 mUnk_08;
+ /* 00c */ unk32 mUnk_0c;
+ /* 010 */ u8 mUnk_10;
+ /* 011 */ unk8 mUnk_11;
+ /* 012 */ unk16 mUnk_12;
+ /* 014 */ unk16 mUnk_14;
+ /* 016 */ unk16 mUnk_16;
+ /* 018 */ Vec3p mUnk_18;
+ /* 024 */ Vec3p mUnk_24;
+ /* 030 */ unk8 mUnk_30[0x18C];
+ /* 1bc */ bool mUnk_1bc;
+ /* 1bd */ unk8 mUnk_1bd;
+ /* 1be */ u8 mUnk_1be;
+ /* 1bf */ u8 mUnk_1bf;
+ /* 1c0 */ unk32 mUnk_1c0;
+ /* 1c4 */
+};
+
class MapManager : public SysObject {
public:
/* 00 */ Course *mCourse;
@@ -48,9 +72,9 @@ public:
void GetCourseDungeonProgress(CourseProgress *param_2);
void func_ov00_020820fc(s32 param_2, unk32 param_3, unk32 param_4);
- 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_0208210c(unk32 param_2, UnkStruct_0208210c_param3 *param_3);
+ void func_ov00_0208230c(struct FlagsUnk2 *param_2);
+ void func_ov00_02082348(struct FlagsUnk2 *param_2);
void func_ov00_020823a4(unk32 param_2);
void func_ov00_020823b4();
bool func_ov00_020823c4(unk32 *param_2, s32 param_3);
@@ -87,7 +111,7 @@ public:
void func_ov00_02082acc();
unk32 *func_ov00_02082adc();
void func_ov00_02082af4();
- void func_ov00_02082b3c(unk32 *param_2, Vec2b *param3);
+ bool func_ov00_02082b3c(FlagsUnk2 *param_2);
u8 func_ov00_02082d08();
u8 GetCurrentMapPosX();
u8 GetCurrentMapPosY();
@@ -140,7 +164,7 @@ public:
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);
+ unk8 GetOverlappingTrigger(Vec3p *param_2);
bool func_ov00_02083790(s32 param_2);
bool func_ov00_02083840(s32 param_2);
bool AddTrigger(s32 param_2);
@@ -160,7 +184,7 @@ public:
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 void func_ov00_02083a54(u8 *param_1, MapManager *param_2, s32 *param_3, s32 param_4, s32 *param_5);
+ static void func_ov00_02083a54(Vec2b *param_1, MapManager *param_2, Vec3p *param_3, s32 param_4, unk32 param_5);
s32 GetTileStartX(unk32 x);
s32 GetTileStartZ(unk32 z);
s32 GetTileEndX(unk32 x);
@@ -168,7 +192,7 @@ public:
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);
+ void func_ov00_02083ce8(Vec3p *param_2, Vec2b 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);
@@ -180,11 +204,11 @@ public:
static void func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3);
void GetTileWorldBounds(Vec2b *tile, AABB *tileBounds);
unk32 MapData_vfunc_54(Vec2b *a);
- unk32 func_ov00_020840a0(unk8 param_2, unk8 param_3);
+ unk32 func_ov00_020840a0(u8 param_2, u8 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_48();
unk32 GetMapData_Unk_4c();
unk32 func_ov00_0208412c();
void func_ov00_0208413c(unk32 param_2);
@@ -234,11 +258,11 @@ public:
s32 func_ov00_02084d4c(unk32 param_2, unk32 param_3, Vec3p *param_4);
unk32 func_ov00_02084ebc(Vec3p *param_2);
s32 func_ov00_02085108(Vec3p *param_2);
- static s32 func_ov00_0208527c(MapManager *param_1, unk32 param_2, unk32 *param_3);
+ static unk32 func_ov00_0208527c(MapManager *param_1, unk32 param_2, Vec3p *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);
+ static unk32 func_ov00_0208583c(MapManager *param_1, Vec3p *param_2, unk32 param_3);
+ static unk32 func_ov00_020858b0(MapManager *param_1, Vec3p *param_2, unk32 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);
@@ -255,7 +279,7 @@ public:
static void LoadMapTexSprites(s32 param1);
void func_ov004_02102260();
void func_ov004_02102264(unk32 *param1, char *param2);
- void func_ov004_021024c4(unk32 *param1, unk32 param2, bool param3);
+ void func_ov004_021024c4(FlagsUnk2 *param1, bool param2, bool param3);
void func_ov004_021025d8();
};
diff --git a/include/Message/MessageManager.hpp b/include/Message/MessageManager.hpp
index fb06134b..8ac42d14 100644
--- a/include/Message/MessageManager.hpp
+++ b/include/Message/MessageManager.hpp
@@ -73,6 +73,7 @@ public:
UnkStruct_02038aa0 *func_02037178(UnkSubClass1_02256FF8 *param_2);
void func_ov004_021069c4(void);
+ void func_ov004_02106db8(void);
};
extern MessageManager gMessageManager;
diff --git a/include/Message/MsgProc.hpp b/include/Message/MsgProc.hpp
index c3e0b662..97cf46e9 100644
--- a/include/Message/MsgProc.hpp
+++ b/include/Message/MsgProc.hpp
@@ -184,6 +184,8 @@ extern UnkClass_ov000_027e0d04 data_027e0d04;
class UnkClass_data_027e0f7c {
public:
+ void func_ov000_0209d6e8(unk32 *param_2);
+ char *func_ov000_0209d71c(s32 param_2);
u8 *func_ov000_0209d90c(s8, s8);
};
-extern UnkClass_data_027e0f7c data_027e0f7c;
+extern UnkClass_data_027e0f7c *data_027e0f7c;
diff --git a/include/Save/AdventureFlags.hpp b/include/Save/AdventureFlags.hpp
index e7619e8d..72c7f0f1 100644
--- a/include/Save/AdventureFlags.hpp
+++ b/include/Save/AdventureFlags.hpp
@@ -61,11 +61,9 @@ struct UnkStruct_027e0d38_UnkC {
class UnkStruct_02082348_04 {
public:
- /* 00 */ unk32 mUnk_00;
- /* 00 */ unk32 mUnk_04;
- /* 00 */ unk32 mUnk_08;
- /* 0c */ unk16 mUnk_0c;
- /* 0e */ u8 mUnk_0e;
+ /* 00 */ Vec3p mUnk_00; // pos?
+ /* 0c */ unk16 mUnk_0c; // angle?
+ /* 0e */ u8 mUnk_0e; // some id?
/* 0f */ u8 mUnk_0f;
/* 10 */ u8 mUnk_10;
/* 11 */ u8 mUnk_11;
@@ -79,7 +77,7 @@ struct FlagsUnk2 {
/* 04 */ UnkStruct_02082348_04 mUnk_04;
/* 18 */
- ~FlagsUnk2();
+ //~FlagsUnk2();
void func_ov000_02078bf0(FlagsUnk2 *param_2);
void func_ov004_02100ae0();
};
@@ -102,6 +100,7 @@ struct FlagsUnk {
/* 4c */
~FlagsUnk();
+ void func_ov000_020980f8();
};
struct FlagsData {
diff --git a/src/00_Core/Map/MapBase.cpp b/src/00_Core/Map/MapBase.cpp
index b923de8d..1e8a1cce 100644
--- a/src/00_Core/Map/MapBase.cpp
+++ b/src/00_Core/Map/MapBase.cpp
@@ -71,7 +71,7 @@ void TriggerBase::vfunc_08() {}
s32 MapBase::GetTriggerBoundingBox(unk32 param_2, AABB *param_3) {}
bool TriggerBase::GetBoundingBox(AABB *bbox) {}
s32 MapBase::GetTriggerBoundingBoxes(s32 param_2, AABB *param_3, s32 param_4) {}
-bool MapBase::GetOverlappingTrigger(Vec3p *param_2) {}
+unk8 MapBase::GetOverlappingTrigger(Vec3p *param_2) {}
bool TriggerBase::Overlaps(Vec3p *point) {}
TriggerBase *MapBase::FindTrigger(unk32 type) {}
unk8 MapBase::GetOverlappingTriggers(Vec3p *param_2, TriggerBase **triggers, unk32 capacity) {}
@@ -101,7 +101,7 @@ 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::func_ov00_02080d08(Vec2b *param_2) {}
void MapBase::vfunc_bc() {}
void MapBase::vfunc_98(unk32 param_2, unk32 param_3, unk32 param_4) {}
void MapBase::vfunc_c0() {}
diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp
index f991890e..22f15cf8 100644
--- a/src/00_Core/Map/MapManager.cpp
+++ b/src/00_Core/Map/MapManager.cpp
@@ -7,10 +7,15 @@
#include "Actor/ActorManager.hpp"
#include "Actor/ActorSpawner.hpp"
#include "DTCM/UnkStruct_027e077c.hpp"
+#include "DTCM/UnkStruct_027e0c68.hpp"
#include "DTCM/UnkStruct_027e0d38.hpp"
#include "DTCM/UnkStruct_027e0f64.hpp"
+#include "DTCM/UnkStruct_027e0f6c.hpp"
+#include "DTCM/UnkStruct_027e0f78.hpp"
#include "DTCM/UnkStruct_027e0fd4.hpp"
#include "DTCM/UnkStruct_027e103c.hpp"
+#include "Message/MessageManager.hpp"
+#include "Message/MsgProc.hpp"
#include "Player/PlayerBase.hpp"
#include "Save/AdventureFlags.hpp"
#include "Unknown/UnkStruct_02037750.hpp"
@@ -20,22 +25,18 @@
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_02088000(UnkStruct_027e0f64_04 *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 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);
@@ -45,30 +46,9 @@ 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 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 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 {
@@ -85,43 +65,85 @@ struct astruct_16 {
/* 2c */
}; // What is this struct?
-class Case_0 : public MapBase {
+class UnkStruct_0212b358 : public MapBase {
public:
char pad[0x790 - 0x1B0];
- Case_0(u32 param1, u32 param2);
- virtual ~Case_0() override;
+ UnkStruct_0212b358(u32 param1, u32 param2);
+ virtual ~UnkStruct_0212b358() override;
+};
+
+class UnkStruct_02128dd8 : public MapBase {
+public:
+ UnkStruct_02128dd8(u32 param1, u32 param2);
+ virtual ~UnkStruct_02128dd8() override;
};
-class Case_4 : public MapBase {
+class UnkStruct_0215b4a0 : public MapBase {
public:
char pad[0x1DC - 0x1B0];
- Case_4(u32 param1, u32 param2);
- virtual ~Case_4() override;
+ UnkStruct_0215b4a0(u32 param1, u32 param2);
+ virtual ~UnkStruct_0215b4a0() override;
};
-class Case_Default : public MapBase {
+class UnkStruct_0215b4e8 : public MapBase {
public:
char pad[0x790 - 0x1B0];
- Case_Default(u32 param1, u32 param2);
- virtual ~Case_Default() override;
+ UnkStruct_0215b4e8(u32 param1, u32 param2);
+ virtual ~UnkStruct_0215b4e8() override;
+};
+
+struct UnkStruct_02084740 {
+ /* 00 */ unk32 mUnk_00[0x6c];
+ /* 68 */
+};
+
+class UnkStruct_02085594 {
+public:
+ /* 00 */ unk32 mUnk_00;
+ /* 04 */ Vec3p mUnk_04;
+ /* 10 */ unk32 mUnk_10;
+ /* 14 */ Vec3p mUnk_14;
+ /* 20 */ unk32 mUnk_20;
+
+ virtual void vfunc_00();
+ virtual void vfunc_04();
+ virtual void vfunc_08();
+ virtual void vfunc_0c();
+ virtual void vfunc_10();
+ virtual void vfunc_14();
+ virtual void vfunc_18();
+ virtual unk8 vfunc_1c();
+ virtual void vfunc_20();
+ virtual void vfunc_24();
+ virtual void vfunc_28();
+ virtual void vfunc_2c();
+ virtual unk32 vfunc_30(unk32 param_2);
+ virtual void vfunc_34();
+ virtual unk32 vfunc_38(unk32 param_2);
+ virtual unk32 vfunc_3c(unk32 param_2);
+};
+
+struct UnkStruct_027e0f68 {
+ void func_ov000_0208cc88();
+ void func_ov000_0208d620();
+ void func_ov000_0208d680();
+ void func_ov004_02102b28();
};
-extern unk32 *data_027e0c68;
extern u32 *data_027e0ce0[];
extern UnkStruct_0202e894 *data_027e0ce4;
extern unk32 *data_027e0d3c;
-extern unk32 *data_027e0f68;
-extern unk32 *data_027e0f6c;
+extern UnkStruct_027e0f68 *data_027e0f68;
extern unk32 *data_027e0f70;
-extern unk32 *data_027e0f78;
-extern unk32 *data_027e0f7c;
-extern UnkStruct_027e103c *data_027e103c;
-
-extern unk32 *data_ov000_020e24a4;
+extern unk32 data_ov000_020e24a4;
+extern unk32 data_ov000_020e24b4;
+extern unk32 data_ov000_020e24c4;
extern MapManager_Unk2 data_ov000_020e24c8[];
extern MapManager_Unk2 data_ov000_020e24e8[];
extern unk32 data_ov015_02190458;
+// static char *gShipParts[8] = {"anc", "bow", "hul", "can", "dco", "pdl", "fnl", "brg"};
+
MapManager::MapManager() {
/*MapManager_Unk1 *object;
undefined *destructor;
@@ -177,86 +199,84 @@ ARM void MapManager::func_ov00_020820fc(s32 param_2, unk32 param_3, unk32 param_
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;
- FlagsUnk2 local_40[2];
-
- local_40[1].mUnk_00.mUnk_00 = 0x47;
- local_40[1].mUnk_04.mUnk_00 = 0;
- local_40[1].mUnk_04.mUnk_04 = 0;
- local_40[1].mUnk_04.mUnk_08 = -2;
- local_40[1].mUnk_04.mUnk_0c = 0;
- local_40[1].mUnk_04.mUnk_0e = -1;
- local_40[1].mUnk_04.mUnk_0f = 0;
- local_40[1].mUnk_04.mUnk_10 = 0;
- local_40[1].mUnk_04.mUnk_11 = 0;
+ARM void MapManager::func_ov00_0208210c(unk32 param_2, UnkStruct_0208210c_param3 *param_3) {
+ FlagsUnk2 local_28;
+ FlagsUnk2 local_40;
+
+ local_28.mUnk_00.mUnk_00 = 0x47;
+ local_28.mUnk_04.mUnk_00.x = 0;
+ local_28.mUnk_04.mUnk_00.y = 0;
+ local_28.mUnk_04.mUnk_00.z = -2;
+ local_28.mUnk_04.mUnk_0c = 0x0000;
+ local_28.mUnk_04.mUnk_0e = -1;
+ local_28.mUnk_04.mUnk_0f = 0;
+ local_28.mUnk_04.mUnk_10 = 0;
+ local_28.mUnk_04.mUnk_11 = 0;
+
if (param_2 != 0) {
- *param_3 = 0xb;
- *(unk8 *) (param_3 + 1) = 2;
- *(u8 *) ((int) param_3 + 5) = 4;
+ param_3->mUnk_00 = 0xb;
+ param_3->mUnk_04 = 2;
+ param_3->mUnk_05 = 4;
} else {
- this->func_ov00_02082348((unk32 *) &local_40[1]);
- *param_3 = ((UnkStruct_027e0d38_UnkC *) &local_40[1])->func_ov000_020a5e9c();
- *(unk8 *) (param_3 + 1) = local_40[1].mUnk_04.mUnk_0e;
- *(u8 *) ((int) param_3 + 5) = local_40[1].mUnk_04.mUnk_0f;
- }
- param_3[2] = ((UnkStruct_027e0d38_UnkC *) ((unk32) (data_027e0d38->mUnk_28) + 0x1c))->func_ov000_020a5e9c();
- *(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] = ((UnkStruct_027e0d38_UnkC *) ((unk32) data_027e0d38->mUnk_28 + 0x44))->func_ov000_020a5e9c();
- *(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.mUnk_00 = *(unk32 *) ((int) pvVar3 + 0x70);
- local_40[0].mUnk_04.mUnk_00 = *(unk32 *) ((int) pvVar3 + 0x74);
- local_40[0].mUnk_04.mUnk_04 = *(unk32 *) ((int) pvVar3 + 0x78);
- local_40[0].mUnk_04.mUnk_08 = *(unk32 *) ((int) pvVar3 + 0x7c);
- local_40[0].mUnk_04.mUnk_0c = *(unk16 *) ((int) pvVar3 + 0x80);
- local_40[0].mUnk_04.mUnk_0e = *(u8 *) ((int) pvVar3 + 0x82);
- local_40[0].mUnk_04.mUnk_0f = *(u8 *) ((int) pvVar3 + 0x83);
- local_40[0].mUnk_04.mUnk_10 = *(u8 *) ((int) pvVar3 + 0x84);
- local_40[0].mUnk_04.mUnk_11 = *(u8 *) ((int) pvVar3 + 0x85);
- uVar2 = ((UnkStruct_027e0d38_UnkC *) &local_40[0])->func_ov000_020a5e9c();
- param_3[0x70] = uVar2;
- *(u8 *) ((int) param_3 + 0x1be) = local_40[0].mUnk_04.mUnk_0e;
- *(u8 *) ((int) param_3 + 0x1bf) = local_40[0].mUnk_04.mUnk_0f;
- func_ov000_02096324(data_027e0f70, param_3);
- func_ov000_0209d6e8(data_027e0f7c, param_3);
+ this->func_ov00_02082348(&local_28);
+ param_3->mUnk_00 = local_28.mUnk_00.func_ov000_020a5e9c();
+ param_3->mUnk_04 = local_28.mUnk_04.mUnk_0e;
+ param_3->mUnk_05 = local_28.mUnk_04.mUnk_0f;
+ }
+
+ param_3->mUnk_08 = data_027e0d38->mUnk_28->mUnk_1c.func_ov000_020a5e9c();
+ param_3->mUnk_10 = data_027e0d38->mUnk_28->mUnk_2e;
+ param_3->mUnk_14 = data_027e0d38->mUnk_28->mUnk_36;
+ param_3->mUnk_18 = data_027e0d38->mUnk_28->mUnk_38;
+ param_3->mUnk_0c = data_027e0d38->mUnk_28->mUnk_44.func_ov000_020a5e9c();
+ param_3->mUnk_11 = data_027e0d38->mUnk_28->mUnk_56;
+ param_3->mUnk_24 = data_027e0d38->mUnk_28->mUnk_5c.mUnk_00;
+ param_3->mUnk_16 = data_027e0d38->mUnk_28->mUnk_5c.mUnk_0c;
+
+ UnkStruct_027e0d38_Unk28 *pUVar4 = data_027e0d38->mUnk_28;
+ local_40.mUnk_00 = pUVar4->mUnk_70.mUnk_00;
+ local_40.mUnk_04.mUnk_00 = pUVar4->mUnk_70.mUnk_04.mUnk_00;
+ local_40.mUnk_04.mUnk_0c = pUVar4->mUnk_70.mUnk_04.mUnk_0c;
+ local_40.mUnk_04.mUnk_0e = pUVar4->mUnk_70.mUnk_04.mUnk_0e;
+ local_40.mUnk_04.mUnk_0f = pUVar4->mUnk_70.mUnk_04.mUnk_0f;
+ local_40.mUnk_04.mUnk_10 = pUVar4->mUnk_70.mUnk_04.mUnk_10;
+ local_40.mUnk_04.mUnk_11 = pUVar4->mUnk_70.mUnk_04.mUnk_11;
+
+ param_3->mUnk_1c0 = local_40.mUnk_00.func_ov000_020a5e9c();
+ param_3->mUnk_1be = local_40.mUnk_04.mUnk_0e;
+ param_3->mUnk_1bf = local_40.mUnk_04.mUnk_0f;
+ func_ov000_02096324(data_027e0f70, (unk32 *) param_3);
+ data_027e0f7c->func_ov000_0209d6e8((unk32 *) param_3);
+
if (this->mCourse->mType != CourseType_TempleOfTheOceanKing) {
- *(bool *) ((int) param_3 + 7) = this->mUnk_08;
- *(bool *) (param_3 + 0x6f) = this->mUnk_09;
+ param_3->mUnk_07 = this->mUnk_08;
+ param_3->mUnk_1bc = 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_0208230c(FlagsUnk2 *param_2) {
+ param_2->mUnk_00.mUnk_00 = this->mCourse->mIndex;
+
+ Course *course = this->mCourse;
+ param_2->mUnk_04.mUnk_0e = course->mMapGrid[course->mCurrMapPos.x][course->mCurrMapPos.y];
+ param_2->mUnk_04.mUnk_0f = this->mUnk_0c;
}
-ARM void MapManager::func_ov00_02082348(unk32 *param_2) {
+ARM void MapManager::func_ov00_02082348(FlagsUnk2 *param_2) {
FlagsUnk2 unkStruct;
- unkStruct.mUnk_00.mUnk_00 = 0x47;
- unkStruct.mUnk_04.mUnk_00 = 0;
- unkStruct.mUnk_04.mUnk_04 = 0;
- unkStruct.mUnk_04.mUnk_08 = -2;
- unkStruct.mUnk_04.mUnk_0c = 0;
- unkStruct.mUnk_04.mUnk_0e = -1;
- unkStruct.mUnk_04.mUnk_0f = 0;
- unkStruct.mUnk_04.mUnk_10 = 0;
- unkStruct.mUnk_04.mUnk_11 = 0;
- this->func_ov00_0208230c((s32 *) &unkStruct);
- func_ov000_02078bf0((s32 *) &unkStruct, param_2);
+
+ unkStruct.mUnk_00.mUnk_00 = 0x47;
+ unkStruct.mUnk_04.mUnk_00.x = 0;
+ unkStruct.mUnk_04.mUnk_00.y = 0;
+ unkStruct.mUnk_04.mUnk_00.z = -2;
+ unkStruct.mUnk_04.mUnk_0c = 0;
+ unkStruct.mUnk_04.mUnk_0e = -1;
+ unkStruct.mUnk_04.mUnk_0f = 0;
+ unkStruct.mUnk_04.mUnk_10 = 0;
+ unkStruct.mUnk_04.mUnk_11 = 0;
+
+ this->func_ov00_0208230c(&unkStruct);
+ unkStruct.func_ov000_02078bf0(param_2);
}
ARM void MapManager::func_ov00_020823a4(unk32 param_2) {
@@ -288,75 +308,71 @@ ARM void MapManager::MapData_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;
+ if (this->mMap->vfunc_4c() == 2) {
+ return this->mMap->func_ov015_02129c14(); // MapBase::GetUnk_19c_Unk_28 according to Ghidra
}
+
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;
+ if (this->mMap->vfunc_4c() == 2) {
+ return this->mMap->func_ov015_02129c24(param_2, param_3);
}
+
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;
+ if (this->mMap->vfunc_4c() == 2) {
+ return this->mMap->func_ov015_02129c34(param_2);
}
+
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;
+ if (this->mMap->vfunc_4c() == 2) {
+ return this->mMap->func_ov015_02129c44(param_2);
}
+
return false;
}
ARM s32 MapManager::func_ov00_02082504() {
- s32 var = this->mMap->vfunc_4c();
- if (var == 2) {
+ if (this->mMap->vfunc_4c() == 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) {
+
+ if (this->mMap->vfunc_4c() == 2) {
return &this->mMap->mUnk_1a0;
}
+
+ //! @bug: returning pointer to local variable (fake match?)
var0 = gPlayerPos;
return &var0;
}
ARM void MapManager::func_ov00_02082594() {
- func_ov000_0208d620(data_027e0f68);
+ data_027e0f68->func_ov000_0208d620();
}
ARM void MapManager::func_ov00_020825ac() {
- func_ov000_0208d680(data_027e0f68);
+ data_027e0f68->func_ov000_0208d680();
}
ARM s32 MapManager::GetCourseFilePath(char *courseName, char *buf) {
- s32 var = sprintf(buf, "Map/%s/course.bin\0\0", courseName);
- return var;
+ return sprintf(buf, "Map/%s/course.bin", courseName);
}
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);
+ this->GetCourseFilePath(data_027e0f7c->func_ov000_0209d71c(param_2), buf);
}
ARM void MapManager::func_ov00_02082614(char *param_2, unk32 param_3) {
@@ -388,36 +404,31 @@ ARM void MapManager::func_ov00_020826a0(unk32 param_2, unk32 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);
+ this->mMap = new(data_027e0ce0[1], 4) UnkStruct_0212b358(param_3, param_4);
break;
case 2:
- this->mMap = new(data_027e0ce0[1], 4) MapBase(param_3, param_4);
+ this->mMap = new(data_027e0ce0[1], 4) UnkStruct_02128dd8(param_3, param_4);
break;
case 0:
- this->mMap = new(data_027e0ce0[1], 4) Case_4(param_3, param_4);
+ this->mMap = new(data_027e0ce0[1], 4) UnkStruct_0215b4a0(param_3, param_4);
break;
case 1:
case 3:
default:
- this->mMap = new(data_027e0ce0[1], 4) Case_Default(param_3, param_4);
+ this->mMap = new(data_027e0ce0[1], 4) UnkStruct_0215b4e8(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.
+ delete this->mMap;
+ this->mMap = NULL;
}
- this->mMap = NULL;
- return;
}
ARM void MapManager::MapData_vfunc_44() {
@@ -426,29 +437,31 @@ ARM void MapManager::MapData_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 = data_027e0d38->mUnk_0c.func_ov000_020a5e9c();
- if (iVar2 == 0) {
+ if (data_027e0d38->mUnk_0c.func_ov000_020a5e9c() == 0) {
func_ov015_021849a4(&data_ov015_02190458);
}
- data_ov000_020eec68.func_ov000_020d70a4(iVar1, 0, 0x7f);
+
+ data_ov000_020eec68.func_ov000_020d70a4(iVar1, 0, 127);
} else {
- iVar2 = data_ov000_020eec68.func_ov000_020d7424();
- if (iVar1 == iVar2) {
+ if (iVar1 == data_ov000_020eec68.func_ov000_020d7424()) {
return;
}
- data_ov000_020eec68.func_ov000_020d70a4(iVar1, 0, 0x7f);
+
+ data_ov000_020eec68.func_ov000_020d70a4(iVar1, 0, 127);
}
- iVar1 = data_027e0d38->mUnk_0c.func_ov000_020a5e9c();
- if (iVar1 == 0) {
+
+ if (data_027e0d38->mUnk_0c.func_ov000_020a5e9c() == 0) {
return;
}
+
data_ov000_020eec68.func_ov000_020d72b8();
}
@@ -469,16 +482,18 @@ ARM u8 MapManager::GetNumMaps() {
}
ARM s32 MapManager::func_ov00_02082914(unk32 param_2) {
- void *pvVar1;
- int iVar3;
- int iVar4;
+ q20 iVar3;
+ q20 iVar4;
int iVar5;
Vec3p pVar1;
+ Entrance local_30;
+
+ int local_48;
+ int local_50;
switch (param_2) {
- case 0xfa:
- pvVar1 = data_027e0d38->mUnk_28;
- Entrance local_30(*(Entrance *) ((s32) pvVar1 + 0x5c));
+ case 0xfa: // temp correction
+ Entrance local_30(*(Entrance *) ((s32) data_027e0d38->mUnk_28 + 0x5c));
iVar3 = this->mMap->AddEntrance(&local_30);
return iVar3;
case 0xfb:
@@ -487,48 +502,44 @@ ARM s32 MapManager::func_ov00_02082914(unk32 param_2) {
case 0xfe:
break;
default:
- return (int) this;
+ return this->mCourse->mIndex;
}
+
Entrance local_44;
- pvVar1 = data_027e0d38->mUnk_28;
- pVar1 = *(Vec3p *) ((int) pvVar1 + 0x38);
- iVar3 = 0x2000;
- iVar4 = 0x2000;
- iVar5 = 0xfd;
+
+ pVar1 = data_027e0d38->mUnk_28->mUnk_38;
+ iVar3 = FLOAT_TO_Q20(2.0);
+ iVar4 = FLOAT_TO_Q20(2.0);
+ iVar5 = 0xfd;
if (this->mCourse->mType == CourseType_Sea) {
- iVar3 = this->mMap->vfunc_88();
- iVar3 = iVar3 + 0xa000;
- iVar4 = this->mMap->vfunc_8c();
- iVar4 = iVar4 + 0xa000;
+ iVar3 = this->mMap->vfunc_88() + 0xa000;
+ iVar4 = this->mMap->vfunc_8c() + 0xa000;
iVar5 = 0xfe;
}
+
local_44.mAngle = 0;
+
switch (param_2) {
case 0xfb:
- pVar1.z = this->GetMapMaxZ();
- pVar1.z = pVar1.z - iVar4;
+ pVar1.z = this->GetMapMaxZ() - iVar4;
local_44.mAngle = 0x8000;
break;
case 0xfc:
- pVar1.z = this->GetMapMinZ();
- pVar1.z = iVar4 + pVar1.z;
+ pVar1.z = iVar4 + this->GetMapMinZ();
local_44.mAngle = 0;
break;
case 0xfd:
- pVar1.x = GetMapMaxX();
- pVar1.x = pVar1.x - iVar3;
+ pVar1.x = GetMapMaxX() - iVar3;
local_44.mAngle = 0xc000;
break;
case 0xfe:
- pVar1.x = GetMapMinX();
- pVar1.x = iVar3 + pVar1.x;
+ pVar1.x = iVar3 + GetMapMinX();
local_44.mAngle = 0x4000;
+ break;
}
- 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;
+
+ local_44.mId = param_2;
+ local_44.mPos = pVar1;
return this->mMap->AddEntrance(&local_44);
}
@@ -541,54 +552,58 @@ ARM s32 *MapManager::func_ov00_02082adc() {
}
ARM void MapManager::func_ov00_02082af4() {
- func_ov000_0208cc88(data_027e0f68);
+ data_027e0f68->func_ov000_0208cc88();
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 {
+ARM bool MapManager::func_ov00_02082b3c(FlagsUnk2 *param_2) {
+ Vec2b mapGridPos;
+ u8 entranceId;
+ bool cmp;
+ ActorManager *actorManager;
+ u16 var1;
+ u32 var2;
+
+ Course::FindMapGridPos(&mapGridPos, this->mCourse, param_2->mUnk_04.mUnk_0e);
+
+ if (mapGridPos.x != this->GetCurrentMapPosX() || mapGridPos.y != this->GetCurrentMapPosY() ||
+ (param_2->mUnk_04.mUnk_00.y == 1 && data_027e0d38->mUnk_14 == 1) || param_2->mUnk_04.mUnk_11 != 0) {
gAdventureFlags->func_ov00_020976c8();
data_027e0f64->func_ov000_0208b13c();
- uVar5 = this->func_ov00_02082d08();
- gActorManager->func_ov004_02105608(param_3->x, param_3->y, uVar5);
+ actorManager = gActorManager;
+ actorManager->func_ov004_02105608(mapGridPos.x, mapGridPos.y, this->func_ov00_02082d08());
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_027e0f68->func_ov004_02102b28();
+ data_027e0f6c->func_ov004_02102770();
+ data_027e0f78->func_ov004_02102e3c();
+ entranceId = param_2->mUnk_04.mUnk_0e;
+ cmp = false;
+ var1 = this->mCourse->FindCurrentMapData_Unk_04();
+ var2 = this->mCourse->FindMapData_Unk_04(entranceId);
+ if (var1 != var2) {
+ cmp = true;
+ }
+ this->mCourse->mCurrMapPos.x = mapGridPos.x;
+ this->mCourse->mCurrMapPos.y = mapGridPos.y;
+ this->func_ov004_021024c4(param_2, cmp, false);
+ gActorManager->func_ov004_02105578(param_2->mUnk_04.mUnk_0e);
data_027e103c->func_ov000_020cfcec();
+ } else {
+ gAdventureFlags->func_ov00_020976c8();
+ this->mUnk_0c = param_2->mUnk_04.mUnk_0f;
+ gPlayer->TeleportToEntrance(param_2->mUnk_04.mUnk_0f, false);
+ gMessageManager.func_ov004_02106db8();
+ this->mMap->vfunc_18();
}
+ return true;
}
ARM u8 MapManager::func_ov00_02082d08() {
Course *course = this->mCourse;
- return course->mMapGrid[(u8) course->mCurrMapPos.x][(u8) course->mCurrMapPos.y];
+ return course->mMapGrid[course->mCurrMapPos.x][course->mCurrMapPos.y];
}
ARM u8 MapManager::GetCurrentMapPosX() {
@@ -602,10 +617,12 @@ ARM u8 MapManager::GetCurrentMapPosY() {
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];
+ return this->mCourse->mMapGrid[this->mCourse->mCurrMapPos.x][this->mCourse->mCurrMapPos.y];
default:
- return this->mCourse->mUnk_0b1;
+ break;
}
+
+ return this->mCourse->mUnk_0b1;
}
ARM u32 MapManager::func_ov00_02082d74(unk32 param_2) {
@@ -626,113 +643,110 @@ ARM void MapManager::func_ov00_02082d84(Vec2b *param_2, s32 *param_3, s32 *param
}
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;
+ Vec2p mapScreenPos;
+ u8 uVar8;
+ Vec3p local_28;
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;
+ Vec3p local_4c;
+ Course *course;
+ bool bVar1;
+
+ if (this->mCourse->mUnk_25c) {
+ if (!this->mCourse->IsCurrentMapInMainGrid()) {
+ mapScreenPos.x = -256;
+ mapScreenPos.y = -256;
+ bVar1 = this->mMap->mUnk_01a;
+
+ if (!data_027e0d38->func_ov000_02078b40()) {
+ uVar8 = data_027e0d38->mUnk_28->mUnk_9a;
+ } else {
+ uVar8 = data_027e0d38->mUnk_28->mUnk_2e;
+ }
+
+ if (uVar8 == 0xff) {
+ course = this->mCourse;
+ uVar8 = course->mMapGrid[course->mUnk_01e.x][course->mUnk_01e.y];
+ }
+
+ if (!data_027e0d38->func_ov000_02078b40()) {
+ local_28 = data_027e0d38->mUnk_28->mUnk_38;
+ } else {
+ local_28 = data_027e0d38->mUnk_28->mUnk_a0;
+ }
+
+ long long lVar3;
+
+ if (!this->mCourse->GetMapScreenPos(bVar1, &mapScreenPos.x, &mapScreenPos.y)) {
+ this->mCourse->GetMapScreenPos(uVar8, &mapScreenPos.x, &mapScreenPos.y);
+ Course::FindMapGridPos(&local_4a, this->mCourse, uVar8);
+ MapManager::func_ov00_02083a54(&local_4a, this, &local_28, local_4a.x, local_4a.y);
+ uVar8 = this->mCourse->GetScreenMapCellSizeX();
+ lVar3 = (int) ((u32) local_4c.x << 0xc) * (int) uVar8 + 0x800;
+ *param_2 = mapScreenPos.y + ((int) (((u32) lVar3 >> 0xc | (int) (lVar3 >> 0x20) * 0x100000) + 0x800) >> 0xc);
+ uVar8 = this->mCourse->GetScreenMapCellSizeY();
+ } else {
+ uVar8 = this->mCourse->GetScreenMapCellSizeX();
+ lVar3 = (int) ((u32) (char) this->mMap->mUnk_01b << 0xc) * (int) uVar8 + 0x800;
+ *param_2 = mapScreenPos.y + ((int) (((u32) lVar3 >> 0xc | (int) (lVar3 >> 0x20) * 0x100000) + 0x800) >> 0xc);
+ uVar8 = this->mCourse->GetScreenMapCellSizeY();
+ local_4c.y = this->mMap->mUnk_01c;
+ }
+
+ // probably an optimized div? or another operator like that
+ /*
+ s64 lVar1 = (s64) ((u8) param_2->x << 0xc) * (s32) uVar3 + 0x800;
+ *param_3 = (s32) (((s32) (lVar1 >> 0xc)) + ((s32) uVar3 >> 1) + 0x800) >> 0xc;
+ */
+ lVar3 = (local_4c.y << 0xc) * uVar8 + 0x800;
+ *param_3 = mapScreenPos.x + ((int) (((u32) lVar3 >> 0xc | (int) (lVar3 >> 0x20) * 0x100000) + 0x800) >> 0xc);
+ return true;
} 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();
+ param_2[0] = 0x80;
+ param_3[0] = 0x80;
+ return false;
}
- 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;
+ } else {
+ param_2[0] = 0xC0;
+ param_3[0] = 0xC0;
+ return false;
}
}
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;
+ Vec3p local_28;
+ unk32 pMVar1;
+ UnkStruct_027e0d38_Unk28 *iVar2;
+ unk32 pMVar3;
+
+ pMVar3 = this->mCourse->mUnk_008;
+ pMVar1 = -3;
+ if (pMVar3 != -3) {
+ pMVar1 = -2;
+ }
- 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);*/
+ local_1c = gPlayerPos;
+ this->func_ov00_02083a1c(auStack_2c, this, &local_1c);
+ this->func_ov00_02082d84(auStack_2c, param_2, param_3);
+
+ if (pMVar3 == -3 || pMVar3 == pMVar1) {
+ iVar2 = data_027e0d38->mUnk_28;
+ local_28 = iVar2->mUnk_5c.mUnk_00;
+ this->func_ov00_02083244(iVar2->mUnk_56, &local_28, param_2, param_3);
return;
}
- if (pMVar3 != (MapManager *) 0xffffffff) {
+ if (pMVar3 != -1) {
*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 playerPos;
Vec3p local_2c;
*piVar4 = this->mCourse->mUnk_008;
@@ -741,36 +755,34 @@ ARM void MapManager::func_ov00_0208315c(s32 *param_2, s32 *param_3) {
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.mUnk_00;
- local_2c.y = pvVar3->mUnk_5c.mUnk_04;
- local_2c.z = pvVar3->mUnk_5c.mUnk_08;
- this->func_ov00_02083298((u32) * (u8 *) (*(s32 *) data_027e0d38->mUnk_28 + 0x56), &local_2c, param_2, param_3);
+
+ playerPos = gPlayerPos;
+ this->func_ov00_02083298(this->func_ov00_02082d08(), &playerPos, param_2, param_3);
+
+ if (*piVar4 != -3 && piVar4 != piVar2) {
+ local_2c = data_027e0d38->mUnk_28->mUnk_5c.mUnk_00;
+ this->func_ov00_02083298(data_027e0d38->mUnk_28->mUnk_56, &local_2c, param_2, param_3);
return;
}
+
if (*piVar4 != -1) {
*param_2 = this->mCourse->mUnk_0bc;
*param_3 = this->mCourse->mUnk_0c0;
+ return;
}
}
ARM void MapManager::func_ov00_02083244(u32 param_2, Vec3p *param_3, s32 *param_4, s32 *param_5) {
- if (4 <= param_2) {
+ if (param_2 >= 4) {
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) {
+ if (param_2 >= 4) {
param_2 = 0;
}
@@ -787,16 +799,15 @@ ARM bool MapManager::IsMapInMainGrid(u32 map) {
}
ARM bool MapManager::func_ov00_02083328() {
- u32 map = (u32) this->func_ov00_02082d08();
- return this->mCourse->IsMapInMainGrid(map);
+ return this->mCourse->IsMapInMainGrid(this->func_ov00_02082d08());
}
ARM u8 MapManager::GetCourseMainGridSizeX() {
- return (u8) this->mCourse->mMainGridSize.x;
+ return this->mCourse->mMainGridSize.x;
}
ARM u8 MapManager::GetCourseMainGridSizeY() {
- return (u8) this->mCourse->mMainGridSize.y;
+ return this->mCourse->mMainGridSize.y;
}
ARM u16 MapManager::GetMapWidth() {
@@ -877,28 +888,29 @@ ARM void MapManager::GetMapCenter(Vec3p *param_2) {
}
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;
+ 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 = FLOAT_TO_Q20(1.2);
+ 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;
+ Vec3p *mapCenter = this->mCourse->FindMapCenter(this->mCourse->mMapGrid[param_3][param_4]);
+
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);
+
+ param_2->x = param_2->x - (this->func_ov00_02083374() >> 1);
+ param_2->z = param_2->z - (this->func_ov00_02083384() >> 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]);
+ Vec3p *mapCenter = this->mCourse->FindMapCenter(this->mCourse->mMapGrid[param_3][param_4]);
param_2->x = mapCenter->x;
param_2->y = mapCenter->y;
param_2->z = mapCenter->z;
@@ -998,46 +1010,43 @@ ARM bool MapManager::IsTriggerTypeOverlapped(u32 type, Vec3p *pos) {
return this->mMap->IsTriggerTypeOverlapped(type, pos);
}
-ARM bool MapManager::GetOverlappingTrigger(Vec3p *param_2) {
+ARM unk8 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 + 2) + 0x1b4) = param_2;
- *(int *) (*(int *) ((unk32 *) data_027e0f64 + 1) + 0x1b4) = param_2;
- iVar2 = data_027e0d38->func_ov000_02078b40();
- if ((iVar2 != 0) && (bVar1 = this->func_ov00_02082e1c(&aiStack_14, &iStack_18), !bVar1)) {
+
+ data_027e0f64->mUnk_8->mUnk_1b4 = param_2;
+ data_027e0f64->mUnk_4->mUnk_1b4 = param_2;
+
+ if (data_027e0d38->func_ov000_02078b40() != 0 && !this->func_ov00_02082e1c(&aiStack_14, &iStack_18)) {
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;
+
+ return this->mMap->AnyTrigger_func_0c(param_2);
}
ARM bool MapManager::func_ov00_02083840(s32 param_2) {
- bool bVar3;
- s32 iVar4;
-
if (param_2 == 0) {
return true;
}
- *(unk32 *) (*(unk32 *) ((unk32 *) data_027e0f64 + 2) + 0x1b4) = -1;
- *(unk32 *) (*(unk32 *) ((unk32 *) data_027e0f64 + 1) + 0x1b4) = -1;
- iVar4 = func_ov000_02078fe8(data_027e0d3c);
- if (0 <= iVar4) {
+
+ data_027e0f64->mUnk_8->mUnk_1b4 = -1;
+ data_027e0f64->mUnk_4->mUnk_1b4 = -1;
+
+ if (func_ov000_02078fe8(data_027e0d3c) >= 0) {
func_ov000_020798bc(data_027e0d3c, 0x10);
gActorManager->func_ov00_020c3ce8(param_2, false);
}
- bVar3 = this->mMap->TriggerOfType_vfunc_10(param_2);
- return bVar3;
+
+ return this->mMap->TriggerOfType_vfunc_10(param_2);
}
ARM bool MapManager::AddTrigger(s32 param_2) {
@@ -1118,51 +1127,40 @@ ARM void MapManager::func_ov00_02083a1c(Vec2b *param_1, MapManager *param_2, Vec
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;
+ARM void MapManager::func_ov00_02083a54(Vec2b *param_1, MapManager *param_2, Vec3p *param_3, s32 param_4, unk32 param_5) {
unk8 uVar2;
unk8 uVar3;
s32 iVar4;
+ Vec3p VStack_20;
u32 uVar5;
- s32 *piVar6;
- Vec3p local_38;
+ Vec3p *piVar6;
Vec3p local_2c;
- Vec3p VStack_20;
+ Vec3p local_38;
- 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;
+ if (param_2->GetCourseData_Unk_25c() != 0) {
+ uVar5 = (param_4 == -1 || param_5 == 0xffffffff) ? param_2->func_ov00_02082d08()
+ : uVar5 = param_2->mCourse->mMapGrid[param_4][param_5];
+
+ if (param_2->IsMapInMainGrid(uVar5)) {
+ param_2->func_ov00_02083524(&VStack_20, param_4, param_5);
+ local_38 = *param_3;
+ 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->x = uVar3;
+ param_1->y = uVar2;
+ return;
+ }
+ uVar2 = param_2->func_ov00_020839f8(param_3->z);
+ uVar3 = param_2->func_ov00_020839d4(param_3->x);
+ param_1->x = uVar3;
+ param_1->y = 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;
+ uVar2 = param_2->func_ov00_020839f8(param_3->z);
+ uVar3 = param_2->func_ov00_020839d4(param_3->x);
+ param_1->x = uVar3;
+ param_1->y = uVar2;
}
ARM s32 MapManager::GetTileStartX(unk32 x) {
@@ -1198,35 +1196,34 @@ ARM void MapManager::func_ov00_02083c7c(Vec3p *param_2, Vec2b param_3) {
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;
+ARM void MapManager::func_ov00_02083ce8(Vec3p *param_2, Vec2b param_3, s32 param_4, u32 param_5) {
u32 uVar2;
- Vec3p local_38;
+ u8 uVar3;
+ u8 uVar4;
Vec3p local_2c;
+ Vec3p local_38;
+ Vec2b local_8;
- 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 {
+ if (GetCourseData_Unk_25c()) {
+ if (param_4 == -1 || param_5 == -1) {
uVar2 = this->func_ov00_02082d08();
+ } else {
+ uVar2 = this->mCourse->mMapGrid[param_4][param_5];
}
- bVar1 = this->IsMapInMainGrid(uVar2);
- if (bVar1) {
+
+ if (this->IsMapInMainGrid(uVar2)) {
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;
+ param_2->x = local_2c.x + this->mMap->GetTileStartX(param_3.x) + 0x800;
+ param_2->z = local_2c.z + this->mMap->GetTileStartZ(param_3.y) + 0x800;
} else {
- param_2->x = this->mMap->GetTileStartX(param_3 & 0xff) + 0x800;
- param_2->z = this->mMap->GetTileStartZ(param_3 >> 8 & 0xff) + 0x800;
+ param_2->x = this->mMap->GetTileStartX(param_3.x) + 0x800;
+ param_2->z = this->mMap->GetTileStartZ(param_3.y) + 0x800;
}
} else {
- param_2->x = this->mMap->GetTileStartX(param_3 & 0xff) + 0x800;
- param_2->z = this->mMap->GetTileStartZ(param_3 >> 8 & 0xff) + 0x800;
+ param_2->x = this->mMap->GetTileStartX(param_3.x) + 0x800;
+ param_2->z = this->mMap->GetTileStartZ(param_3.y) + 0x800;
}
+
local_38 = *param_2;
param_2->y = MapData_vfunc_68(&local_38, true);
}
@@ -1243,12 +1240,7 @@ ARM unk32 MapManager::MapData_vfunc_60(Vec2b *param_1) {
}
ARM bool MapManager::func_ov00_02083e70(Vec2b *param_2) {
- int iVar1;
- int iVar2;
-
- iVar1 = this->MapData_vfunc_54(param_2);
-
- switch (iVar1) {
+ switch (this->MapData_vfunc_54(param_2)) {
case 0x1b:
case 0x2b:
case 0x4e:
@@ -1256,9 +1248,7 @@ ARM bool MapManager::func_ov00_02083e70(Vec2b *param_2) {
return true;
}
- iVar1 = this->MapData_vfunc_60(param_2);
- iVar2 = this->GetMapData_Unk_48();
- return iVar1 >= iVar2;
+ return this->MapData_vfunc_60(param_2) >= this->GetMapData_Unk_48();
}
ARM unk32 MapManager::MapData_vfunc_68(Vec3p *param_1, bool param_2) {
@@ -1271,14 +1261,14 @@ ARM s32 MapManager::func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3, bool para
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);
+ q20 x = param_2->x;
+ q20 z = param_2->z;
+ Vec3p local_18 = {x, data_ov000_020e24a4, z};
return this->func_ov00_02083ef8(param_2, &local_18, param_3);
}
@@ -1299,11 +1289,13 @@ ARM void MapManager::func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p
*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);
+ func_ov000_02093a1c(param_1, (unk32 *) data_027e0f6c, dVar2);
return;
}
+
*param_1 = 0;
}
@@ -1324,7 +1316,7 @@ 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) {
+ARM unk32 MapManager::func_ov00_020840a0(u8 param_2, u8 param_3) {
// Correct param types?
Vec2b vec;
vec.x = param_2;
@@ -1332,6 +1324,7 @@ ARM unk32 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3) {
return this->mMap->vfunc_54(&vec);
}
+// Returns UnkStruct_02085594*
unk32 *MapManager::MapData_vfunc_78(Vec2b *param_1) {
return this->mMap->vfunc_78(param_1);
}
@@ -1343,6 +1336,7 @@ unk32 MapManager::func_ov00_020840dc(Vec2b *param_1) {
if (piVar1 != NULL) {
return piVar1->vfunc_1c();
}
+
return -1;
}
@@ -1352,7 +1346,7 @@ unk8 MapManager::func_ov00_02084100(unk32 *param_1, MapManager *param_2) {
param_1[1] = uVar1;
}
-u32 MapManager::GetMapData_Unk_48() {
+unk32 MapManager::GetMapData_Unk_48() {
return this->mMap->mUnk_048;
}
@@ -1373,15 +1367,11 @@ unk8 MapManager::MapData_vfunc_58(Vec2b *param_1, int 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) {
+ if (this->mMap->vfunc_58(param_2, 7) != 0) {
return 0;
}
- uVar2 = this->MapData_vfunc_54(param_2);
- switch (uVar2) {
+
+ switch (this->MapData_vfunc_54(param_2)) {
case 0:
case 8:
case 9:
@@ -1435,7 +1425,10 @@ ARM s32 MapManager::func_ov00_02084164(Vec2b *param_2) {
case 0x53:
case 0x54:
return 1;
+ default:
+ break;
}
+
return 0;
}
@@ -1500,7 +1493,7 @@ void MapManager::func_ov00_020843ec(s32 *param_2) {
s32 local_24;
s32 local_20;
- // uVar1 = (**(code **) (*param_2 + 8))(); // Which function is this?
+ // uVar1 = (**(code **) (*param_2 + 8))();
if (uVar1 < 2) {
// (**(code **) (*param_2 + 0x3c))(param_2, &local_28); // And this?
// local_40.z = (**(code **) (*param_2 + 0x40))(); // What about this?
@@ -1539,7 +1532,7 @@ void MapManager::func_ov00_020843ec(s32 *param_2) {
return;
}
if (uVar1 == 2) {
- this->mMap->vfunc_2c(/*&local_58*/); // No args?
+ // this->mMap->vfunc_2c(/*&local_58*/); // No args?
local_64.x = local_58;
local_64.y = iStack_54;
local_64.z = iStack_50;
@@ -1597,68 +1590,100 @@ ARM s32 MapManager::func_ov00_020846a4() {
}
ARM s32 MapManager::func_ov00_02084700() {
- s32 iVar1;
- iVar1 = this->mMap->mUnk_034;
+ s32 iVar1 = this->mMap->mUnk_034;
+
if (iVar1 == -1) {
iVar1 = this->mCourse->mUnk_0c4;
}
- if ((iVar1 == 0x1b) && (gActorManager->mUnk_29 != false)) {
+
+ if (iVar1 == 0x1b && gActorManager->mUnk_29) {
iVar1 = 0x1c;
}
+
return iVar1;
}
unk32 MapManager::func_ov00_02084740() {
- static const s32 data_ov000_020d88f0[] = {
+ unk32 bVar1;
+ int iVar2;
+ int iVar3;
+ unk32 uVar4;
+ unk32 uVar5;
+ unk32 uVar6;
+ unk32 uVar7;
+ Vec3p local_1c8;
+ UnkStruct_02084740 local_1bc;
+
+ static const UnkStruct_02084740 data_ov000_020d88f0 = {
+ .mUnk_00 =
+ {
+ 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, 0x00, 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
+ },
+ };
+
+ iVar2 = this->func_ov00_02084700();
+ iVar3 = data_027e0d38->func_ov000_02078b40();
+ if (iVar3 != 2) {
+ local_1c8 = gPlayerPos;
+ bVar1 = this->GetOverlappingTrigger(&local_1c8);
+ if (bVar1 > 0) {
+ iVar2 = this->func_ov00_020847f0(bVar1);
+ }
+ }
+ // 4-member structs? Or just 4 byte values? Since it's 1/4 of 108.
+
+ local_1bc = data_ov000_020d88f0;
+
+ return local_1bc.mUnk_00[iVar2];
+ /*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;
+ 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,
+ };
+ unk32 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;
+ Vec3p local_1c8;
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);
+ iVar2 = this->func_ov00_02084700();
+ iVar3 = data_027e0d38->func_ov000_02078b40();
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();
+ local_1c8 = gPlayerPos;
+ bVar1 = this->GetOverlappingTrigger(&local_1c8);
+ if (bVar1 > 0) {
+ iVar2 = this->func_ov00_020847f0(bVar1);
}
}
- 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];
+ iVar3 = 0x1b; //((sizeof(data_ov000_020d88f0) / 4) - 2) / 4;
+ unk32 *array = (unk32 *) &data_ov000_020d88f0;
+ unk32 *array2 = local_1bc;
+ while (iVar3 != 0) {
+ array[0] = array2[0];
+ array[1] = array2[1];
+ array[2] = array2[2];
+ array[3] = array2[3];
+
+ *array += 4;
+ *array2 += 4;
+ iVar3--;
+ }
+
+ return local_1bc[iVar2];*/
}
unk32 MapManager::func_ov00_020847e0() {
@@ -1671,15 +1696,16 @@ ARM unk32 MapManager::func_ov00_020847f0(unk32 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) {
+ switch (this->GetMapData_Unk_38()) {
case 1:
case 2:
case 3:
@@ -1695,20 +1721,24 @@ bool MapManager::func_ov00_02084838() {
case 0x16:
return true;
default:
- return false;
+ break;
}
+
+ return false;
}
bool MapManager::func_ov00_020848b8() {
- unk32 uVar1 = this->func_ov00_020846a4();
- switch (uVar1) {
+ switch (this->func_ov00_020846a4()) {
case 6:
case 0xc:
case 0xd:
case 0xf:
case 0x11:
return true;
+ default:
+ break;
}
+
return false;
}
@@ -1737,10 +1767,10 @@ u8 MapManager::GetMapData_Unk_07() {
}
bool MapManager::func_ov00_0208499c() {
- s32 iVar2 = this->func_ov00_020849c0();
- if (iVar2 == 0) {
+ if (!this->func_ov00_020849c0()) {
return this->mCourse->IsCurrentMapInMainGrid();
}
+
return false;
}
@@ -1762,6 +1792,7 @@ ARM bool MapManager::func_ov00_020849f8() {
}
break;
}
+
return false;
}
@@ -1780,10 +1811,8 @@ void MapManager::SpawnNPC(Vec3p *pos, unk32 param_3, unk32 param_4) {
}
ARM bool MapManager::func_ov00_02084ac4(u32 actorId) {
- Actor *iVar1;
- bool bVar1;
+ Actor *iVar1 = gActorManager->FindActorById(actorId);
- iVar1 = gActorManager->FindActorById(actorId);
if (iVar1 == NULL) {
return false;
}
@@ -1791,6 +1820,7 @@ ARM bool MapManager::func_ov00_02084ac4(u32 actorId) {
if (iVar1->mType != ActorTypeId_EVIC) {
return false;
}
+
iVar1->mAlive = false;
return true;
}
@@ -1813,9 +1843,11 @@ bool MapManager::GetBlueWarpOpen() {
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;
@@ -1840,26 +1872,24 @@ ARM void MapManager::func_ov00_02084b38(u32 param_2, unk32 param_3, bool param_4
}
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;
+ return this->mCourse->GetMapDataFlag0(param_2);
case 2:
- bVar1 = this->mCourse->GetFlag0(param_2);
- return bVar1;
+ return this->mCourse->GetFlag0(param_2);
case 3:
- bVar1 = this->mCourse->SetFlag1(param_2);
- return bVar1;
+ return this->mCourse->SetFlag1(param_2);
default:
- return false;
+ break;
}
+
+ return false;
}
void MapManager::SetMapDataFlag1(unk32 param_2, bool param_3) {
@@ -1874,16 +1904,15 @@ 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;
+ if (param_2 >= 0) {
+ return this->mCourse->GetMapDataFlag2(param_2);
}
+
return false;
}
@@ -1891,16 +1920,15 @@ 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;
+ if (param_2 >= 0) {
+ return this->mCourse->GetMapDataFlag3(param_2);
}
+
return false;
}
@@ -1908,16 +1936,15 @@ 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;
+ if (param_2 >= 0) {
+ return this->mCourse->GetMapDataFlag4(param_2);
}
+
return false;
}
@@ -1948,7 +1975,7 @@ s32 MapManager::func_ov00_02084d4c(unk32 param_2, unk32 param_3, Vec3p *param_4)
int iStack_18;
Vec3p VStack_14;
- iVar1 = func_ov000_0208df78((s32 *) data_027e0f64 + 1, param_2, param_3, &VStack_14, &iStack_20);
+ iVar1 = func_ov000_0208df78((s32 *) data_027e0f64->mUnk_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;
@@ -2070,7 +2097,7 @@ unk32 MapManager::func_ov00_02084ebc(Vec3p *param_2) {
}
// dVar3 = this->MapData_vfunc_70(); // Missing param.
if (dVar3 != 0xffff) {
- func_ov000_02093a1c(&uStack_14, data_027e0f6c, dVar3);
+ func_ov000_02093a1c(&uStack_14, (unk32 *) data_027e0f6c, dVar3);
if ((uStack_14 >> 5 & 3) != 1) {
return 0;
}
@@ -2136,7 +2163,7 @@ s32 MapManager::func_ov00_02085108(Vec3p *param_2) {
return 0;
}
-s32 MapManager::func_ov00_0208527c(MapManager *param_1, unk32 param_2, unk32 *param_3) {
+s32 MapManager::func_ov00_0208527c(MapManager *param_1, unk32 param_2, Vec3p *param_3) {
u32 uVar1;
MapManager *puVar2;
unk32 uVar3;
@@ -2186,13 +2213,11 @@ s32 MapManager::func_ov00_0208527c(MapManager *param_1, unk32 param_2, unk32 *pa
return 0;
}
for (; (int) uVar1 <= (int) uVar6; uVar1 = uVar1 + 1) {
- // iVar4 = puVar2->MapData_vfunc_78(0);
- if (((iVar4 != 0) && ((*(u32 *) (iVar4 + 4) & 4) != 0)) &&
+ UnkStruct_0208210c_param3 *var = (UnkStruct_0208210c_param3 *) puVar2->MapData_vfunc_78(0);
+ if (((var != NULL) && ((*(u32 *) var->mUnk_04 & 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);
+ *param_3 = var->mUnk_18;
+ return var->mUnk_12;
}
}
uVar7 = uVar7 + 1;
@@ -2245,8 +2270,8 @@ s32 MapManager::func_ov00_020853fc(MapManager *param_1, Vec3p *param_2, s32 *par
}
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);
+ for (; (int) uVar1 <= (int) uVar6; uVar1++) {
+ // iVar3 = gMapManager->MapData_vfunc_78();
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)) {
@@ -2258,160 +2283,128 @@ s32 MapManager::func_ov00_020853fc(MapManager *param_1, Vec3p *param_2, s32 *par
return iVar7;
}
-unk32 MapManager::func_ov00_02085594(Vec3p *param_2) {
- int *piVar1;
- int iVar2;
- unk32 dVar3; // dword
+ARM unk32 MapManager::func_ov00_02085594(Vec3p *param_2) {
+ UnkStruct_02085594 *piVar1;
+ unk32 dVar3;
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);
+ piVar1 = (UnkStruct_02085594 *) 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;
+ if (piVar1 != NULL) {
+ *param_2 = piVar1->mUnk_14;
+ switch (piVar1->vfunc_1c()) {
+ case 0x61:
+ if (piVar1->mUnk_04.x != 2) {
+ break;
}
- } 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) {
+ case 0x59:
+ bVar5 = piVar1->mUnk_04.x == 4;
+ break;
+ case 0x42:
+ return 2;
+ case 0x1:
+ case 0x38:
+ break;
+ default:
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) {
+ switch (this->func_ov00_020840a0(local_28.x, local_28.y)) {
+ 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:
+ case 0x37:
+ case 0x46:
+ case 0x47:
+ case 0x48:
+ case 0x50:
return 0;
- }
- } else if (iVar2 == 0x50) {
- return 0;
}
- iVar2 = this->mMap->vfunc_58(&local_28, 5);
- if (iVar2 != 0) {
+ if (this->mMap->vfunc_58(&local_28, 5) != 0) {
return 0;
}
- uStack_2c.y = local_28.y;
- uStack_2c.x = local_28.x;
- this->func_ov00_02083c7c(&VStack_20, uStack_2c);
+ this->func_ov00_02083c7c(&VStack_20, local_28);
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;
+ if (dVar3 == 0xffff) {
+ return 0;
}
+ func_ov000_02093a1c(&uStack_24, (unk32 *) data_027e0f6c, dVar3);
+ if ((uStack_24 >> 5 & 3) == 1) {
+ return bVar5 ? 1 : 2;
+ }
+
return 0;
}
-void MapManager::func_ov00_0208583c(MapManager *param_1, Vec3p *param_2, unk32 param_3) {
- void *piVar1;
+ARM unk32 MapManager::func_ov00_0208583c(MapManager *param_1, Vec3p *param_2, unk32 param_3) {
+ UnkStruct_02085594 *piVar1;
Vec2b auStack_10;
param_1->func_ov00_02083a1c(&auStack_10, param_1, param_2);
- piVar1 = (unk32 *) param_1->MapData_vfunc_78(&auStack_10);
+ piVar1 = (UnkStruct_02085594 *) param_1->MapData_vfunc_78(&auStack_10);
if (piVar1 == NULL) {
- return;
+ return -1;
}
- if (data_027e077c.mUnk_0 == 1) {
- if (data_027e077c.mUnk_4 == 1) {
- //(**(code **) (*piVar1 + 0x30))(piVar1, param_3);
- return;
- }
- return;
+ if (data_027e077c.mUnk_0 != 1) {
+ return -1;
+ }
+ if (data_027e077c.mUnk_0 == data_027e077c.mUnk_4) {
+ return piVar1->vfunc_30(param_3);
}
+ return -1;
}
-unk32 MapManager::func_ov00_020858b0(MapManager *param_1, Vec3p *param_2, s32 param_3) {
- int iVar1;
- int iVar2;
- int iVar3;
+unk32 MapManager::func_ov00_020858b0(MapManager *param_1, Vec3p *param_2, unk32 param_3) {
+ int mapWidth;
+ int mapHeight;
int iVar4;
- int *piVar5;
- int iVar6;
- int iVar7;
+ UnkStruct_02085594 *piVar5;
+ int playerPosY;
unk32 local_38;
- Vec2b local_28; // x = originally 'local_28' ; y = originally 'local_27'
+ Vec2b local_28;
if (param_3 == 1) {
- func_ov000_02088000(*(unk32 *) (*(int *) data_027e0f64 + 4), 7);
+ func_ov000_02088000(data_027e0f64->mUnk_4, 7);
} else {
- func_ov000_02088000(*(unk32 *) (*(int *) data_027e0f64 + 4), 6);
+ func_ov000_02088000(data_027e0f64->mUnk_4, 6);
}
- iVar2 = param_1->GetMapWidth();
- iVar3 = param_1->GetMapHeight();
- local_38 = 0xffffffff;
+ mapWidth = param_1->GetMapWidth();
+ mapHeight = param_1->GetMapHeight();
+ local_38 = -1;
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;
+ playerPosY = gPlayerPos.y;
+ for (u8 x = local_28.x - 1; x <= (int) (local_28.x + 1); x++) {
+ if ((x > -1) && (x < mapWidth)) {
+ for (u8 y = local_28.y - 1; y <= (int) (local_28.y + 1); y++) {
+ if ((y > -1) && (y < mapHeight)) {
+ iVar4 = param_1->MapData_vfunc_60(&local_28) - playerPosY;
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);
+ if ((iVar4 <= 0xcd) &&
+ (piVar5 = (UnkStruct_02085594 *) param_1->MapData_vfunc_78(&local_28), piVar5 != NULL)) {
+ local_38 = piVar5->vfunc_38(param_3);
}
}
}
@@ -2421,14 +2414,13 @@ unk32 MapManager::func_ov00_020858b0(MapManager *param_1, Vec3p *param_2, s32 pa
}
s32 MapManager::func_ov00_02085a34(Vec3p *param_2, s32 param_3) {
- int *piVar1;
+ UnkStruct_02085594 *piVar1;
int iVar2;
unk16 *puVar3;
u32 uVar4;
u32 uVar5;
u32 uVar6;
- unk32 uStack_2c;
- unk32 uStack_2b;
+ Vec2b uStack_2c;
Vec2b auStack_2a[2];
Vec2b aVStack_28[2];
unk16 auStack_24[4];
@@ -2442,17 +2434,18 @@ s32 MapManager::func_ov00_02085a34(Vec3p *param_2, s32 param_3) {
return -1;
}
this->func_ov00_02083a1c(auStack_2a, this, param_2);
- piVar1 = (int *) this->MapData_vfunc_78(auStack_2a);
- if (piVar1 == (int *) 0x0) {
+ piVar1 = (UnkStruct_02085594 *) this->MapData_vfunc_78(auStack_2a);
+ if (piVar1 == NULL) {
return -1;
}
- // iVar2 = (**(code **) (*piVar1 + 0x1c))();
+
+ iVar2 = piVar1->vfunc_1c();
if (iVar2 == 0x42) {
- // uStack_2b = *(undefined *) ((int) piVar1 + 0x15);
- // uStack_2c = *(undefined *) (piVar1 + 5);
- // this->mMap->func_ov00_02080d08(&uStack_2c);
+ uStack_2c.y = piVar1->mUnk_14.y;
+ uStack_2c.x = piVar1->mUnk_04.y;
+ this->mMap->func_ov00_02080d08(&uStack_2c);
}
- // iVar2 = (**(code **) (*piVar1 + 0x3c))(piVar1, param_3);
+ iVar2 = piVar1->vfunc_38(param_3);
return iVar2;
}
this->func_ov00_02083a1c(aVStack_28, this, param_2);
@@ -2460,14 +2453,14 @@ s32 MapManager::func_ov00_02085a34(Vec3p *param_2, s32 param_3) {
if (iVar2 == 0) {
return -1;
}
- piVar1 = (int *) this->MapData_vfunc_78(aVStack_28);
- if (piVar1 != (int *) 0x0) {
- // iVar2 = (**(code **) (*piVar1 + 0x1c))();
+ piVar1 = (UnkStruct_02085594 *) this->MapData_vfunc_78(aVStack_28);
+ if (piVar1 != NULL) {
+ iVar2 = piVar1->vfunc_1c();
if (0x38 < iVar2) {
if (iVar2 < 0x5a) {
if (iVar2 == 0x59) {
LAB_overlay_d_0__02085afc:
- // iVar2 = (**(code **) (*piVar1 + 0x3c))(piVar1, 1); // What is this?
+ iVar2 = piVar1->vfunc_3c(1);
return iVar2;
}
} else if (iVar2 == 0x61) {
@@ -2478,8 +2471,8 @@ s32 MapManager::func_ov00_02085a34(Vec3p *param_2, s32 param_3) {
if ((iVar2 < 0x38) && (iVar2 != 1)) {
return -1;
}
- piVar1[1] = piVar1[1] & 0xfffffffe;
- this->func_ov00_020828f8(piVar1);
+ piVar1->mUnk_04.x &= -2;
+ this->func_ov00_020828f8((s32 *) piVar1);
}
this->mMap->func_ov00_02080b24(aVStack_28);
uStack_14 = 0xffff;
@@ -2499,11 +2492,11 @@ s32 MapManager::func_ov00_02085a34(Vec3p *param_2, s32 param_3) {
*(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).
+ // iVar2 = this->MapData_vfunc_7c();
if (iVar2 == 0) {
return -1;
}
- // iVar2 = MapData_vfunc_78(0); // Same here.
+ // iVar2 = MapData_vfunc_78();
if ((iVar2 != 0) && (0 < *(s16 *) (iVar2 + 0xe))) {
return 1;
}
@@ -2520,8 +2513,7 @@ unk8 MapManager::func_ov00_02085c60(Vec3p *param_2, unk32 *param_3, unk32 *param
u32 uVar7;
int iStack_10c;
int iStack_108;
- int iStack_104;
- int iStack_100;
+ Vec2p iStack_104;
Vec3p VStack_f0;
Vec3p VStack_e4;
Vec4p VStack_d8;
@@ -2536,16 +2528,16 @@ unk8 MapManager::func_ov00_02085c60(Vec3p *param_2, unk32 *param_3, unk32 *param
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;
+ unk8 uStack_3e;
+ unk8 uStack_3d;
+ unk8 uStack_3c;
+ unk8 uStack_3b;
+ unk8 uStack_34;
+ unk8 uStack_33;
+ unk8 uStack_32;
+ unk8 uStack_31;
+ unk8 uStack_30;
+ unk8 uStack_2f;
unk32 uStack_2c;
unk32 uStack_28;
@@ -2554,16 +2546,10 @@ unk8 MapManager::func_ov00_02085c60(Vec3p *param_2, unk32 *param_3, unk32 *param
}
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);
+ VStack_b0 = VStack_98;
+ VStack_bc = VStack_a4;
+ VStack_c8 = VStack_98;
+ Vec3p_Sub(&VStack_98, &VStack_a4, &VStack_c8);
lVar1 = (u64) param_5 * 0xc000 + 0x800;
uVar7 = (u32) lVar1 >> 0xc | (int) ((u64) lVar1 >> 0x20) * 0x100000;
iVar6 = Vec3p_Length(&VStack_c8);
@@ -2637,9 +2623,9 @@ unk8 MapManager::func_ov00_02085c60(Vec3p *param_2, unk32 *param_3, unk32 *param
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;
+ func_ov000_0207920c(data_027e0d3c, &VStack_e4, (unk32 *) &iStack_104, 0);
+ param_2[8].x = iStack_104.x;
+ param_2[8].y = iStack_104.y;
return 1;
}
VStack_bc.x = VStack_b0.x;
diff --git a/src/00_Core/Save/AdventureFlags.cpp b/src/00_Core/Save/AdventureFlags.cpp
index 687e6003..7851fd62 100644
--- a/src/00_Core/Save/AdventureFlags.cpp
+++ b/src/00_Core/Save/AdventureFlags.cpp
@@ -87,16 +87,16 @@ ARM unk32 AdventureFlags::func_ov00_02097968(unk32 param1) {
aStack_c0.mUnk_16 = data_027e0db0.mUnk_04 > 0;
FlagsUnk2 FStack_d8;
- FStack_d8.mUnk_00.mUnk_00 = 0x47;
- FStack_d8.mUnk_04.mUnk_00 = 0;
- FStack_d8.mUnk_04.mUnk_04 = 0;
- FStack_d8.mUnk_04.mUnk_08 = -2;
- FStack_d8.mUnk_04.mUnk_0c = 0;
- FStack_d8.mUnk_04.mUnk_0e = -1;
- FStack_d8.mUnk_04.mUnk_0f = 0;
- FStack_d8.mUnk_04.mUnk_10 = 0;
- FStack_d8.mUnk_04.mUnk_11 = 0;
- aStack_c0.mUnk_00 = param1;
+ FStack_d8.mUnk_00.mUnk_00 = 0x47;
+ FStack_d8.mUnk_04.mUnk_00.x = 0;
+ FStack_d8.mUnk_04.mUnk_00.y = 0;
+ FStack_d8.mUnk_04.mUnk_00.z = -2;
+ FStack_d8.mUnk_04.mUnk_0c = 0;
+ FStack_d8.mUnk_04.mUnk_0e = -1;
+ FStack_d8.mUnk_04.mUnk_0f = 0;
+ FStack_d8.mUnk_04.mUnk_10 = 0;
+ FStack_d8.mUnk_04.mUnk_11 = 0;
+ aStack_c0.mUnk_00 = param1;
aStack_c0.mUnk_0c = AdventureFlags::Get_FlagsUnk_00(param1, &FStack_d8);
gMapManager->func_ov000_02098d34(&FStack_d8);
@@ -173,28 +173,28 @@ ARM unk32 AdventureFlags::Get_FlagsUnk_30(s32 index) {
}
ARM bool AdventureFlags::Get_FlagsUnk_00(s32 index, FlagsUnk2 *result) {
- result->mUnk_00 = data_ov000_020e310c[index].mUnk_00.mUnk_00;
- result->mUnk_04.mUnk_00 = data_ov000_020e310c[index].mUnk_00.mUnk_04.mUnk_00;
- result->mUnk_04.mUnk_04 = data_ov000_020e310c[index].mUnk_00.mUnk_04.mUnk_04;
- result->mUnk_04.mUnk_08 = data_ov000_020e310c[index].mUnk_00.mUnk_04.mUnk_08;
- result->mUnk_04.mUnk_0c = data_ov000_020e310c[index].mUnk_00.mUnk_04.mUnk_0c;
- result->mUnk_04.mUnk_0e = data_ov000_020e310c[index].mUnk_00.mUnk_04.mUnk_0e;
- result->mUnk_04.mUnk_0f = data_ov000_020e310c[index].mUnk_00.mUnk_04.mUnk_0f;
- result->mUnk_04.mUnk_10 = data_ov000_020e310c[index].mUnk_00.mUnk_04.mUnk_10;
- result->mUnk_04.mUnk_11 = data_ov000_020e310c[index].mUnk_00.mUnk_04.mUnk_11;
+ result->mUnk_00 = data_ov000_020e310c[index].mUnk_00.mUnk_00;
+ result->mUnk_04.mUnk_00.x = data_ov000_020e310c[index].mUnk_00.mUnk_04.mUnk_00.x;
+ result->mUnk_04.mUnk_00.y = data_ov000_020e310c[index].mUnk_00.mUnk_04.mUnk_00.y;
+ result->mUnk_04.mUnk_00.z = data_ov000_020e310c[index].mUnk_00.mUnk_04.mUnk_00.z;
+ result->mUnk_04.mUnk_0c = data_ov000_020e310c[index].mUnk_00.mUnk_04.mUnk_0c;
+ result->mUnk_04.mUnk_0e = data_ov000_020e310c[index].mUnk_00.mUnk_04.mUnk_0e;
+ result->mUnk_04.mUnk_0f = data_ov000_020e310c[index].mUnk_00.mUnk_04.mUnk_0f;
+ result->mUnk_04.mUnk_10 = data_ov000_020e310c[index].mUnk_00.mUnk_04.mUnk_10;
+ result->mUnk_04.mUnk_11 = data_ov000_020e310c[index].mUnk_00.mUnk_04.mUnk_11;
return true;
}
ARM bool AdventureFlags::Get_FlagsUnk_18(s32 index, FlagsUnk2 *result) {
- result->mUnk_00 = data_ov000_020e310c[index].mUnk_18.mUnk_00;
- result->mUnk_04.mUnk_00 = data_ov000_020e310c[index].mUnk_18.mUnk_04.mUnk_00;
- result->mUnk_04.mUnk_04 = data_ov000_020e310c[index].mUnk_18.mUnk_04.mUnk_04;
- result->mUnk_04.mUnk_08 = data_ov000_020e310c[index].mUnk_18.mUnk_04.mUnk_08;
- result->mUnk_04.mUnk_0c = data_ov000_020e310c[index].mUnk_18.mUnk_04.mUnk_0c;
- result->mUnk_04.mUnk_0e = data_ov000_020e310c[index].mUnk_18.mUnk_04.mUnk_0e;
- result->mUnk_04.mUnk_0f = data_ov000_020e310c[index].mUnk_18.mUnk_04.mUnk_0f;
- result->mUnk_04.mUnk_10 = data_ov000_020e310c[index].mUnk_18.mUnk_04.mUnk_10;
- result->mUnk_04.mUnk_11 = data_ov000_020e310c[index].mUnk_18.mUnk_04.mUnk_11;
+ result->mUnk_00 = data_ov000_020e310c[index].mUnk_18.mUnk_00;
+ result->mUnk_04.mUnk_00.x = data_ov000_020e310c[index].mUnk_18.mUnk_04.mUnk_00.x;
+ result->mUnk_04.mUnk_00.y = data_ov000_020e310c[index].mUnk_18.mUnk_04.mUnk_00.y;
+ result->mUnk_04.mUnk_00.z = data_ov000_020e310c[index].mUnk_18.mUnk_04.mUnk_00.z;
+ result->mUnk_04.mUnk_0c = data_ov000_020e310c[index].mUnk_18.mUnk_04.mUnk_0c;
+ result->mUnk_04.mUnk_0e = data_ov000_020e310c[index].mUnk_18.mUnk_04.mUnk_0e;
+ result->mUnk_04.mUnk_0f = data_ov000_020e310c[index].mUnk_18.mUnk_04.mUnk_0f;
+ result->mUnk_04.mUnk_10 = data_ov000_020e310c[index].mUnk_18.mUnk_04.mUnk_10;
+ result->mUnk_04.mUnk_11 = data_ov000_020e310c[index].mUnk_18.mUnk_04.mUnk_11;
return true;
}
diff --git a/src/00_Core/Save/FlagsUnk.cpp b/src/00_Core/Save/FlagsUnk.cpp
index 0557c293..1145cd18 100644
--- a/src/00_Core/Save/FlagsUnk.cpp
+++ b/src/00_Core/Save/FlagsUnk.cpp
@@ -1,4 +1,5 @@
#include "Save/AdventureFlags.hpp"
FlagsUnk::~FlagsUnk() {}
-FlagsUnk2::~FlagsUnk2() {}
+// FlagsUnk2::~FlagsUnk2() {}
+void FlagsUnk::func_ov000_020980f8() {}
diff --git a/src/04_Load/Map/MapManager.cpp b/src/04_Load/Map/MapManager.cpp
index e171f8be..6c054053 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(unk32 *param1, unk32 param2, bool param3) {}
+void MapManager::func_ov004_021024c4(FlagsUnk2 *param1, bool param2, bool param3) {}
void MapManager::func_ov004_021025d8() {}
diff --git a/src/09_Adventure/Game/GameModeAdventure.cpp b/src/09_Adventure/Game/GameModeAdventure.cpp
index 4bfa2526..a7ae24be 100644
--- a/src/09_Adventure/Game/GameModeAdventure.cpp
+++ b/src/09_Adventure/Game/GameModeAdventure.cpp
@@ -46,15 +46,15 @@ THUMB GameModeAdventure::GameModeAdventure(unk32 param1) :
data_027e1044 = param1;
func_ov003_020f4510();
- local_28.mUnk_00.mUnk_00 = 0x47;
- local_28.mUnk_04.mUnk_00 = 0;
- local_28.mUnk_04.mUnk_04 = 0;
- local_28.mUnk_04.mUnk_08 = -2;
- local_28.mUnk_04.mUnk_0c = 0;
- local_28.mUnk_04.mUnk_0e = -1;
- local_28.mUnk_04.mUnk_0f = 0;
- local_28.mUnk_04.mUnk_10 = 0;
- local_28.mUnk_04.mUnk_11 = 0;
+ local_28.mUnk_00.mUnk_00 = 0x47;
+ local_28.mUnk_04.mUnk_00.x = 0;
+ local_28.mUnk_04.mUnk_00.y = 0;
+ local_28.mUnk_04.mUnk_00.z = -2;
+ local_28.mUnk_04.mUnk_0c = 0;
+ local_28.mUnk_04.mUnk_0e = -1;
+ local_28.mUnk_04.mUnk_0f = 0;
+ local_28.mUnk_04.mUnk_10 = 0;
+ local_28.mUnk_04.mUnk_11 = 0;
if (gGame.mUnk_102 != 0) {
AdventureFlags::Get_FlagsUnk_00(0x17, &local_28);
diff --git a/src/Main/Unknown/UnkStruct_020397f8.cpp b/src/Main/Unknown/UnkStruct_020397f8.cpp
index 941f5d0b..ac295c65 100644
--- a/src/Main/Unknown/UnkStruct_020397f8.cpp
+++ b/src/Main/Unknown/UnkStruct_020397f8.cpp
@@ -988,7 +988,7 @@ ARM bool UnkStruct_020397f8::func_0203c1a0() {
this->mUnk_584 = 1;
pVar1 = (s8 *) data_027e103c->func_ov000_020cef9c();
- iVar3 = data_027e0f7c.func_ov000_0209d90c(pVar1[0x24F], 0);
+ iVar3 = data_027e0f7c->func_ov000_0209d90c(pVar1[0x24F], 0);
data_027e1054->func_ov003_020f4760(iVar3[1], 0);
data_ov000_020eec9c.func_ov000_020d77e4(6);
data_027e103c->func_ov000_020cfb58();