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 Case_4 : public MapBase { +class UnkStruct_02128dd8 : public MapBase { +public: + UnkStruct_02128dd8(u32 param1, u32 param2); + virtual ~UnkStruct_02128dd8() override; +}; + +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]; +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; - 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; 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; + 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[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); + + 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; +ARM bool MapManager::func_ov00_02082b3c(FlagsUnk2 *param_2) { + Vec2b mapGridPos; + u8 entranceId; + bool cmp; + ActorManager *actorManager; + u16 var1; + u32 var2; - 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 { + 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; + 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 { + param_2[0] = 0x80; + param_3[0] = 0x80; + return false; + } + } else { + param_2[0] = 0xC0; + param_3[0] = 0xC0; return false; } - if (!this->mCourse->IsCurrentMapInMainGrid()) { - local_44[0] = -0x100; - local_48 = -0x100; - bVar1 = this->mMap->mUnk_01a; - iVar5 = data_027e0d38->func_ov000_02078b40(); - if (iVar5 == 0) { - // bVar2 = *(u8 *) (*(s32 *) (*(s32 *) PTR_PTR_overlay_d_0__02083068 + 0x28) + 0x9a); - } else { - // bVar2 = *(u8 *) (*(s32 *) (*(s32 *) PTR_PTR_overlay_d_0__02083068 + 0x28) + 0x2e); - } - uVar7 = (u32) bVar2; - if (uVar7 == 0xff) { - uVar7 = (u32) (u8) this->mCourse->mMapGrid[(u8) this->mCourse->mUnk_01e][(u8) this->mCourse->mUnk_01f]; - } - // iVar5 = UnkStruct_027e0d38::FUN_overlay_d_0__02078b40(*(UnkStruct_027e0d38 **) PTR_PTR_overlay_d_0__02083068); - if (iVar5 == 0) { - // iVar5 = *(s32 *) (*(s32 *) PTR_PTR_overlay_d_0__02083068 + 0x28); - local_24 = *(unk32 *) (iVar5 + 0xa4); - local_20 = *(unk32 *) (iVar5 + 0xa8); - local_28 = *(unk32 *) (iVar5 + 0xa0); - } else { - // iVar5 = *(int *) (*(int *) PTR_PTR_overlay_d_0__02083068 + 0x28); - local_24 = *(unk32 *) (iVar5 + 0x3c); - local_20 = *(unk32 *) (iVar5 + 0x40); - local_28 = *(unk32 *) (iVar5 + 0x38); - } - if (this->mCourse->GetMapScreenPos((u32) bVar1, local_44, &local_48)) { - uVar7 = this->mCourse->GetScreenMapCellSizeX(); - lVar3 = (s64) (s32) ((u32) (u8) this->mMap->mUnk_01b << 0xc) * (s64) (s32) uVar7 + 0x800; - *param_2 = local_44[0] + ((s32) (((u32) lVar3 >> 0xc | (s32) ((u64) lVar3 >> 0x20) * 0x100000) + 0x800) >> 0xc); - uVar7 = this->mCourse->GetScreenMapCellSizeY(); - local_4b = this->mMap->mUnk_01c; - } else { - this->mCourse->GetMapScreenPos(uVar7, local_44, &local_48); - this->mCourse->FindMapGridPos(&local_4a, this->mCourse, uVar7); - // this->func_ov00_02083a54(&local_4c, this, &local_28, (u32) local_4a.x, (u32) local_4a.y); - uVar7 = this->mCourse->GetScreenMapCellSizeX(); - lVar3 = (s64) (s32) ((u32) local_4c << 0xc) * (s64) (s32) uVar7 + 0x800; - *param_2 = local_44[0] + ((s32) (((u32) lVar3 >> 0xc | (s32) ((u64) lVar3 >> 0x20) * 0x100000) + 0x800) >> 0xc); - uVar7 = this->mCourse->GetScreenMapCellSizeY(); - } - lVar3 = (s64) (s32) ((u32) local_4b << 0xc) * (s64) (s32) uVar7 + 0x800; - *param_3 = local_48 + ((s32) (((u32) lVar3 >> 0xc | (s32) ((u64) lVar3 >> 0x20) * 0x100000) + 0x800) >> 0xc); - return true; - } } ARM void MapManager::func_ov00_0208306c(s32 *param_2, s32 *param_3) { - MapManager *pMVar1; - s32 iVar2; - MapManager *pMVar3; Vec2b auStack_2c[18]; - s32 local_28; // This has to be a Vec3p, but uncertain as of now. - unk32 local_24; // Unused. - unk32 local_20; // Unused. Vec3p local_1c; + Vec3p local_28; + unk32 pMVar1; + UnkStruct_027e0d38_Unk28 *iVar2; + unk32 pMVar3; - pMVar3 = (MapManager *) this->mCourse->mUnk_008; - pMVar1 = this; // why - if (pMVar3 != (MapManager *) 0xfffffffd) { - pMVar1 = (MapManager *) 0xfffffffe; // I really don't get this + pMVar3 = this->mCourse->mUnk_008; + pMVar1 = -3; + if (pMVar3 != -3) { + pMVar1 = -2; } - 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; - u32 uVar5; - s32 *piVar6; - Vec3p local_38; - Vec3p local_2c; Vec3p VStack_20; + u32 uVar5; + Vec3p *piVar6; + Vec3p local_2c; + 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; + 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; } - if (param_4 != -1) { - piVar6 = param_5; - } - if (param_4 != -1 && piVar6 != (int *) 0xffffffff) { - uVar5 = (u32) * (u8 *) ((s32) piVar6 + (s32) (param_2->mCourse->mMapGrid + param_4)); - } else { - uVar5 = param_2->func_ov00_02082d08(); - } - bVar1 = param_2->IsMapInMainGrid(uVar5); - if (!bVar1) { - uVar2 = param_2->func_ov00_020839f8(param_3[2]); - uVar3 = param_2->func_ov00_020839d4(*param_3); - *param_1 = uVar3; - param_1[1] = uVar2; - return; - } - param_2->func_ov00_02083524(&VStack_20, param_4, *param_5); - local_38.x = *param_3; - local_38.y = param_3[1]; - local_38.z = param_3[2]; - Vec3p_Sub(&local_38, &VStack_20, &local_2c); - uVar2 = param_2->mMap->GetClampedTileY(local_2c.z); - uVar3 = param_2->mMap->GetClampedTileX(local_2c.x); - *param_1 = uVar3; - param_1[1] = uVar2; + 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(); - } - bVar1 = this->IsMapInMainGrid(uVar2); - if (bVar1) { - func_ov00_02083524(&local_2c, param_4, param_5); - param_2->x = local_2c.x + this->mMap->GetTileStartX(param_3 & 0xff) + 0x800; - param_2->z = local_2c.z + this->mMap->GetTileStartZ(param_3 >> 8 & 0xff) + 0x800; } else { - param_2->x = this->mMap->GetTileStartX(param_3 & 0xff) + 0x800; - param_2->z = this->mMap->GetTileStartZ(param_3 >> 8 & 0xff) + 0x800; + uVar2 = this->mCourse->mMapGrid[param_4][param_5]; + } + + if (this->IsMapInMainGrid(uVar2)) { + func_ov00_02083524(&local_2c, param_4, param_5); + 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.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[] = { - // 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; + 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; - unk32 local_1bc[108]; + Vec3p local_1c8; + UnkStruct_02084740 local_1bc; - // iVar2 = this->func_ov00_02084700(?); // what param? - // iVar3 = UnkStruct_027e0d38::FUN_overlay_d_0__02078b40(*(UnkStruct_027e0d38 **) PTR_PTR_overlay_d_0__020847d4); + 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 = *(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]; + // 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, + }; + unk32 bVar1; + int iVar2; + int iVar3; + unk32 uVar4; + unk32 uVar5; + unk32 uVar6; + unk32 uVar7; + Vec3p local_1c8; + unk32 local_1bc[108]; + + 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); + } + } + 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) { + case 0x59: + bVar5 = piVar1->mUnk_04.x == 4; + break; + case 0x42: + return 2; + case 0x1: + case 0x38: + break; + default: return 0; - } - bVar5 = piVar1[2] == 4; - } else { - if (iVar2 != 0x61) { - return 0; - } - if (piVar1[2] == 2) { - return 0; - } } } - iVar2 = this->func_ov00_020840a0(local_28.x, local_28.y); - if (iVar2 < 0x46) { - if (iVar2 < 0x2a) { - switch (iVar2) { - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 8: - case 9: - case 0x14: - case 0x16: - case 0x17: - case 0x19: - case 0x1d: - case 0x1e: - case 0x1f: - case 0x27: - case 0x28: - case 0x29: - return 0; - } - } else if (iVar2 == 0x37) { + 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 < 0x48) { - if (0x47 < iVar2) { - return 0; - } - if (iVar2 == 0x47) { - return 0; - } - } else if (iVar2 == 0x50) { + } + if (this->mMap->vfunc_58(&local_28, 5) != 0) { return 0; } - iVar2 = this->mMap->vfunc_58(&local_28, 5); - if (iVar2 != 0) { - return 0; - } - uStack_2c.y = local_28.y; - uStack_2c.x = local_28.x; - this->func_ov00_02083c7c(&VStack_20, uStack_2c); + 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();