summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAetias <aetias@outlook.com>2024-04-28 16:38:58 +0200
committerAetias <aetias@outlook.com>2024-04-28 16:38:58 +0200
commitdfea2bd522f9122e3fb7b3d3e778b80b0c7bbe3c (patch)
treecd304d3cca15e17a35fb57977c63629ea867b367
parent04b3812395e96ca9e113d5b928b61a5648168c82 (diff)
Remangle `Course`
-rw-r--r--asm/ov00/Map/Course.s372
-rw-r--r--asm/ov00/Map/MapManager.inc54
-rw-r--r--asm/ov00/Map/MapManager.s84
-rw-r--r--asm/ov00/ov00_0207da38.inc2
-rw-r--r--asm/ov00/ov00_0207da38.s2
-rw-r--r--asm/ov00/ov00_020980f4.inc2
-rw-r--r--asm/ov02.inc4
-rw-r--r--asm/ov04.inc12
-rw-r--r--asm/ov04.s30
-rw-r--r--asm/ov15.inc10
-rw-r--r--asm/ov15.s20
-rw-r--r--asm/ov18.inc4
-rw-r--r--asm/ov18.s4
-rw-r--r--asm/ov20.inc38
-rw-r--r--asm/ov28.inc2
-rw-r--r--asm/ov32.inc2
-rw-r--r--asm/ov38.inc10
-rw-r--r--asm/ov52.inc2
-rw-r--r--include/Map/Course.hpp117
-rw-r--r--include/Map/Course_Unk_c8.hpp19
-rw-r--r--include/Map/Course_Unk_cc.hpp28
-rw-r--r--include/lib/math.h6
-rw-r--r--src/00_Core/Map/Course.cpp90
23 files changed, 483 insertions, 431 deletions
diff --git a/asm/ov00/Map/Course.s b/asm/ov00/Map/Course.s
index 160e5e9d..8995602a 100644
--- a/asm/ov00/Map/Course.s
+++ b/asm/ov00/Map/Course.s
@@ -50,13 +50,13 @@ _ZN6Course13SetCourseNameEPc: ; 0x0207ca68
arm_func_end _ZN6Course13SetCourseNameEPc
_0207ca74: .word strcpy
- .global _ZN6Course18func_ov00_0207ca78Ev
- arm_func_start _ZN6Course18func_ov00_0207ca78Ev
-_ZN6Course18func_ov00_0207ca78Ev: ; 0x0207ca78
+ .global _ZN6Course18func_ov00_0207ca78Eici
+ arm_func_start _ZN6Course18func_ov00_0207ca78Eici
+_ZN6Course18func_ov00_0207ca78Eici: ; 0x0207ca78
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r2
- bl _ZN6Course18func_ov00_0207d9ccEi
+ bl _ZN6Course11Find_Unk_ccEj
movs r1, r0
ldmeqia sp!, {r3, r4, r5, pc}
strb r4, [r1]
@@ -65,11 +65,11 @@ _ZN6Course18func_ov00_0207ca78Ev: ; 0x0207ca78
mov r2, #1
bl func_ov00_020a3510
ldmia sp!, {r3, r4, r5, pc}
- arm_func_end _ZN6Course18func_ov00_0207ca78Ev
+ arm_func_end _ZN6Course18func_ov00_0207ca78Eici
- .global _ZN6Course18func_ov00_0207caa8Eiii
- arm_func_start _ZN6Course18func_ov00_0207caa8Eiii
-_ZN6Course18func_ov00_0207caa8Eiii: ; 0x0207caa8
+ .global _ZN6Course18func_ov00_0207caa8EiPiPc
+ arm_func_start _ZN6Course18func_ov00_0207caa8EiPiPc
+_ZN6Course18func_ov00_0207caa8EiPiPc: ; 0x0207caa8
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x10
cmp r1, #0
@@ -104,7 +104,7 @@ _ZN6Course18func_ov00_0207caa8Eiii: ; 0x0207caa8
strh r1, [r4, #6]
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, pc}
- arm_func_end _ZN6Course18func_ov00_0207caa8Eiii
+ arm_func_end _ZN6Course18func_ov00_0207caa8EiPiPc
.global _ZN6Course18func_ov00_0207cb30Ei
arm_func_start _ZN6Course18func_ov00_0207cb30Ei
@@ -131,9 +131,9 @@ _ZN6Course18func_ov00_0207cb30Ei: ; 0x0207cb30
arm_func_end _ZN6Course18func_ov00_0207cb30Ei
_0207cb78: .word 0x0000ffff
- .global _ZN6Course18func_ov00_0207cb7cEiPS_i
- arm_func_start _ZN6Course18func_ov00_0207cb7cEiPS_i
-_ZN6Course18func_ov00_0207cb7cEiPS_i: ; 0x0207cb7c
+ .global _ZN6Course14FindMapGridPosEP5Vec2bPS_j
+ arm_func_start _ZN6Course14FindMapGridPosEP5Vec2bPS_j
+_ZN6Course14FindMapGridPosEP5Vec2bPS_j: ; 0x0207cb7c
stmdb sp!, {r3, r4, r5, lr}
mov lr, #0
mov r5, r1
@@ -159,16 +159,16 @@ _0207cb90:
strb r1, [r0]
strb r2, [r0, #1]
ldmia sp!, {r3, r4, r5, pc}
- arm_func_end _ZN6Course18func_ov00_0207cb7cEiPS_i
+ arm_func_end _ZN6Course14FindMapGridPosEP5Vec2bPS_j
- .global _ZN6Course18func_ov00_0207cbd8Ei
- arm_func_start _ZN6Course18func_ov00_0207cbd8Ei
-_ZN6Course18func_ov00_0207cbd8Ei: ; 0x0207cbd8
+ .global _ZN6Course14Find_Unk_cc_14Ei
+ arm_func_start _ZN6Course14Find_Unk_cc_14Ei
+_ZN6Course14Find_Unk_cc_14Ei: ; 0x0207cbd8
stmdb sp!, {r3, lr}
- bl _ZN6Course18func_ov00_0207d9ccEi
+ bl _ZN6Course11Find_Unk_ccEj
add r0, r0, #0x14
ldmia sp!, {r3, pc}
- arm_func_end _ZN6Course18func_ov00_0207cbd8Ei
+ arm_func_end _ZN6Course14Find_Unk_cc_14Ei
.global _ZN6Course18func_ov00_0207cbe8Ei
arm_func_start _ZN6Course18func_ov00_0207cbe8Ei
@@ -213,16 +213,16 @@ _ZN6Course18func_ov00_0207cc24Ei: ; 0x0207cc24
ldmia sp!, {r3, pc}
arm_func_end _ZN6Course18func_ov00_0207cc24Ei
- .global _ZN6Course18func_ov00_0207cc6cEv
- arm_func_start _ZN6Course18func_ov00_0207cc6cEv
-_ZN6Course18func_ov00_0207cc6cEv: ; 0x0207cc6c
+ .global _ZN6Course14Find_Unk_cc_08Ev
+ arm_func_start _ZN6Course14Find_Unk_cc_08Ev
+_ZN6Course14Find_Unk_cc_08Ev: ; 0x0207cc6c
stmdb sp!, {r3, lr}
- bl _ZN6Course18func_ov00_0207d9ccEi
+ bl _ZN6Course11Find_Unk_ccEj
cmp r0, #0
moveq r0, #0
ldrne r0, [r0, #8]
ldmia sp!, {r3, pc}
- arm_func_end _ZN6Course18func_ov00_0207cc6cEv
+ arm_func_end _ZN6Course14Find_Unk_cc_08Ev
.global _ZN6Course14GetMCSFilePathEiii
arm_func_start _ZN6Course14GetMCSFilePathEiii
@@ -351,9 +351,9 @@ _0207ce14: .word data_ov00_020e211c
_0207ce18: .word data_027e0f7c
_0207ce1c: .word data_ov00_020e2134
- .global _ZN6Course18func_ov00_0207ce20Eiiii
- arm_func_start _ZN6Course18func_ov00_0207ce20Eiiii
-_ZN6Course18func_ov00_0207ce20Eiiii: ; 0x0207ce20
+ .global _ZN6Course18func_ov00_0207ce20EiiPci
+ arm_func_start _ZN6Course18func_ov00_0207ce20EiiPci
+_ZN6Course18func_ov00_0207ce20EiiPci: ; 0x0207ce20
stmdb sp!, {r3, lr}
sub sp, sp, #8
ldr ip, [sp, #0x10]
@@ -362,14 +362,14 @@ _ZN6Course18func_ov00_0207ce20Eiiii: ; 0x0207ce20
mov r3, r2
ldr r1, [r0]
mov r2, ip
- bl _ZN6Course18func_ov00_0207ce4cEccccii
+ bl _ZN6Course18func_ov00_0207ce4cEiiiPci
add sp, sp, #8
ldmia sp!, {r3, pc}
- arm_func_end _ZN6Course18func_ov00_0207ce20Eiiii
+ arm_func_end _ZN6Course18func_ov00_0207ce20EiiPci
- .global _ZN6Course18func_ov00_0207ce4cEccccii
- arm_func_start _ZN6Course18func_ov00_0207ce4cEccccii
-_ZN6Course18func_ov00_0207ce4cEccccii: ; 0x0207ce4c
+ .global _ZN6Course18func_ov00_0207ce4cEiiiPci
+ arm_func_start _ZN6Course18func_ov00_0207ce4cEiiiPci
+_ZN6Course18func_ov00_0207ce4cEiiiPci: ; 0x0207ce4c
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #8
ldr r4, _0207d3ac ; =data_027e0f7c
@@ -454,7 +454,7 @@ _0207cf38:
mov r4, #4
moveq r2, #0
str r4, [sp, #4]
- bl _ZN6Course18func_ov00_0207ce4cEccccii
+ bl _ZN6Course18func_ov00_0207ce4cEiiiPci
add sp, sp, #8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_0207cf98:
@@ -467,7 +467,7 @@ _0207cf98:
mov r2, r5
mov r3, r4
str r7, [sp]
- bl _ZN6Course18func_ov00_0207ce20Eiiii
+ bl _ZN6Course18func_ov00_0207ce20EiiPci
add sp, sp, #8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_0207cfc8:
@@ -737,7 +737,7 @@ _0207d364:
add sp, sp, #8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
- arm_func_end _ZN6Course18func_ov00_0207ce4cEccccii
+ arm_func_end _ZN6Course18func_ov00_0207ce4cEiiiPci
_0207d3ac: .word data_027e0f7c
_0207d3b0: .word 0x66666667
_0207d3b4: .word data_ov00_020e233c
@@ -790,26 +790,26 @@ _ZN6Course18func_ov00_0207d404Eiii: ; 0x0207d404
ldr r1, [sp, #8]
mov r0, r6
mov r3, r5
- bl _ZN6Course18func_ov00_0207ce4cEccccii
+ bl _ZN6Course18func_ov00_0207ce4cEiiiPci
mov r0, #1
add sp, sp, #0x18
ldmia sp!, {r4, r5, r6, pc}
arm_func_end _ZN6Course18func_ov00_0207d404Eiii
- .global _ZN6Course18func_ov00_0207d47cEv
- arm_func_start _ZN6Course18func_ov00_0207d47cEv
-_ZN6Course18func_ov00_0207d47cEv: ; 0x0207d47c
- ldr ip, _0207d48c ; =_ZN6Course18func_ov00_0207d490Eii
+ .global _ZN6Course22IsCurrentMapInMainGridEv
+ arm_func_start _ZN6Course22IsCurrentMapInMainGridEv
+_ZN6Course22IsCurrentMapInMainGridEv: ; 0x0207d47c
+ ldr ip, _0207d48c ; =_ZN6Course12IsInMainGridEii
ldrb r1, [r0, #0x1c]
ldrb r2, [r0, #0x1d]
bx ip
.align 2, 0
- arm_func_end _ZN6Course18func_ov00_0207d47cEv
-_0207d48c: .word _ZN6Course18func_ov00_0207d490Eii
+ arm_func_end _ZN6Course22IsCurrentMapInMainGridEv
+_0207d48c: .word _ZN6Course12IsInMainGridEii
- .global _ZN6Course18func_ov00_0207d490Eii
- arm_func_start _ZN6Course18func_ov00_0207d490Eii
-_ZN6Course18func_ov00_0207d490Eii: ; 0x0207d490
+ .global _ZN6Course12IsInMainGridEii
+ arm_func_start _ZN6Course12IsInMainGridEii
+_ZN6Course12IsInMainGridEii: ; 0x0207d490
ldrb r3, [r0, #0x25c]
cmp r3, #0
moveq r0, #1
@@ -832,29 +832,29 @@ _ZN6Course18func_ov00_0207d490Eii: ; 0x0207d490
_0207d4dc:
mov r0, #0
bx lr
- arm_func_end _ZN6Course18func_ov00_0207d490Eii
+ arm_func_end _ZN6Course12IsInMainGridEii
- .global _ZN6Course18func_ov00_0207d4e4Ei
- arm_func_start _ZN6Course18func_ov00_0207d4e4Ei
-_ZN6Course18func_ov00_0207d4e4Ei: ; 0x0207d4e4
+ .global _ZN6Course15IsMapInMainGridEj
+ arm_func_start _ZN6Course15IsMapInMainGridEj
+_ZN6Course15IsMapInMainGridEj: ; 0x0207d4e4
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r4, r0
mov r2, r1
add r0, sp, #0
mov r1, r4
- bl _ZN6Course18func_ov00_0207cb7cEiPS_i
+ bl _ZN6Course14FindMapGridPosEP5Vec2bPS_j
ldrb r1, [sp]
ldrb r2, [sp, #1]
mov r0, r4
- bl _ZN6Course18func_ov00_0207d490Eii
+ bl _ZN6Course12IsInMainGridEii
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
- arm_func_end _ZN6Course18func_ov00_0207d4e4Ei
+ arm_func_end _ZN6Course15IsMapInMainGridEj
- .global _ZN6Course18func_ov00_0207d518EiPiS0_
- arm_func_start _ZN6Course18func_ov00_0207d518EiPiS0_
-_ZN6Course18func_ov00_0207d518EiPiS0_: ; 0x0207d518
+ .global _ZN6Course15GetMapScreenPosEiPiS0_
+ arm_func_start _ZN6Course15GetMapScreenPosEiPiS0_
+_ZN6Course15GetMapScreenPosEiPiS0_: ; 0x0207d518
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r4, r1
mov r7, r0
@@ -866,11 +866,11 @@ _ZN6Course18func_ov00_0207d518EiPiS0_: ; 0x0207d518
add r0, sp, #0
mov r1, r7
mov r2, r4
- bl _ZN6Course18func_ov00_0207cb7cEiPS_i
+ bl _ZN6Course14FindMapGridPosEP5Vec2bPS_j
ldrb r1, [sp]
ldrb r2, [sp, #1]
mov r0, r7
- bl _ZN6Course18func_ov00_0207d490Eii
+ bl _ZN6Course12IsInMainGridEii
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
@@ -898,11 +898,11 @@ _ZN6Course18func_ov00_0207d518EiPiS0_: ; 0x0207d518
str r1, [r5]
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
- arm_func_end _ZN6Course18func_ov00_0207d518EiPiS0_
+ arm_func_end _ZN6Course15GetMapScreenPosEiPiS0_
- .global _ZN6Course18func_ov00_0207d5c4Ev
- arm_func_start _ZN6Course18func_ov00_0207d5c4Ev
-_ZN6Course18func_ov00_0207d5c4Ev: ; 0x0207d5c4
+ .global _ZN6Course21GetScreenMapCellSizeXEv
+ arm_func_start _ZN6Course21GetScreenMapCellSizeXEv
+_ZN6Course21GetScreenMapCellSizeXEv: ; 0x0207d5c4
stmdb sp!, {r3, lr}
ldrb r1, [r0, #0x86]
ldrb r0, [r0, #0x87]
@@ -914,11 +914,11 @@ _ZN6Course18func_ov00_0207d5c4Ev: ; 0x0207d5c4
mov r1, #0x40000
bl Divide
ldmia sp!, {r3, pc}
- arm_func_end _ZN6Course18func_ov00_0207d5c4Ev
+ arm_func_end _ZN6Course21GetScreenMapCellSizeXEv
- .global _ZN6Course18func_ov00_0207d5f0Ev
- arm_func_start _ZN6Course18func_ov00_0207d5f0Ev
-_ZN6Course18func_ov00_0207d5f0Ev: ; 0x0207d5f0
+ .global _ZN6Course21GetScreenMapCellSizeYEv
+ arm_func_start _ZN6Course21GetScreenMapCellSizeYEv
+_ZN6Course21GetScreenMapCellSizeYEv: ; 0x0207d5f0
stmdb sp!, {r3, lr}
ldrb r1, [r0, #0x87]
ldrb r0, [r0, #0x86]
@@ -930,27 +930,27 @@ _ZN6Course18func_ov00_0207d5f0Ev: ; 0x0207d5f0
mov r1, #0x30000
bl Divide
ldmia sp!, {r3, pc}
- arm_func_end _ZN6Course18func_ov00_0207d5f0Ev
+ arm_func_end _ZN6Course21GetScreenMapCellSizeYEv
- .global _ZN6Course18func_ov00_0207d61cEv
- arm_func_start _ZN6Course18func_ov00_0207d61cEv
-_ZN6Course18func_ov00_0207d61cEv: ; 0x0207d61c
+ .global _ZN6Course13Get_Unk_c8_00Ev
+ arm_func_start _ZN6Course13Get_Unk_c8_00Ev
+_ZN6Course13Get_Unk_c8_00Ev: ; 0x0207d61c
ldr r0, [r0, #0xc8]
ldr r0, [r0]
bx lr
- arm_func_end _ZN6Course18func_ov00_0207d61cEv
+ arm_func_end _ZN6Course13Get_Unk_c8_00Ev
- .global _ZN6Course15GetUnk_c8_Unk_4Ev
- arm_func_start _ZN6Course15GetUnk_c8_Unk_4Ev
-_ZN6Course15GetUnk_c8_Unk_4Ev: ; 0x0207d628
+ .global _ZN6Course13Get_Unk_c8_04Ev
+ arm_func_start _ZN6Course13Get_Unk_c8_04Ev
+_ZN6Course13Get_Unk_c8_04Ev: ; 0x0207d628
ldr r0, [r0, #0xc8]
ldr r0, [r0, #4]
bx lr
- arm_func_end _ZN6Course15GetUnk_c8_Unk_4Ev
+ arm_func_end _ZN6Course13Get_Unk_c8_04Ev
- .global _ZN6Course18func_ov00_0207d634Ei
- arm_func_start _ZN6Course18func_ov00_0207d634Ei
-_ZN6Course18func_ov00_0207d634Ei: ; 0x0207d634
+ .global _ZN6Course23IsAdjacentMapOnMainGridEi
+ arm_func_start _ZN6Course23IsAdjacentMapOnMainGridEi
+_ZN6Course23IsAdjacentMapOnMainGridEi: ; 0x0207d634
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldrb r4, [r6, #0x1c]
@@ -978,20 +978,20 @@ _0207d67c:
mov r0, r6
mov r1, r4
mov r2, r5
- bl _ZN6Course18func_ov00_0207d490Eii
+ bl _ZN6Course12IsInMainGridEii
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
mov r0, r6
mov r1, r4
mov r2, r5
- bl _ZN6Course18func_ov00_0207d6acEii
+ bl _ZN6Course10HasGridMapEii
ldmia sp!, {r4, r5, r6, pc}
- arm_func_end _ZN6Course18func_ov00_0207d634Ei
+ arm_func_end _ZN6Course23IsAdjacentMapOnMainGridEi
- .global _ZN6Course18func_ov00_0207d6acEii
- arm_func_start _ZN6Course18func_ov00_0207d6acEii
-_ZN6Course18func_ov00_0207d6acEii: ; 0x0207d6ac
+ .global _ZN6Course10HasGridMapEii
+ arm_func_start _ZN6Course10HasGridMapEii
+_ZN6Course10HasGridMapEii: ; 0x0207d6ac
cmp r1, #0
cmpge r2, #0
blt _0207d6c4
@@ -1010,35 +1010,35 @@ _0207d6cc:
movne r0, #1
moveq r0, #0
bx lr
- arm_func_end _ZN6Course18func_ov00_0207d6acEii
+ arm_func_end _ZN6Course10HasGridMapEii
- .global _ZN6Course18func_ov00_0207d6ecEv
- arm_func_start _ZN6Course18func_ov00_0207d6ecEv
-_ZN6Course18func_ov00_0207d6ecEv: ; 0x0207d6ec
+ .global _ZN6Course14GetAdjacentMapEi
+ arm_func_start _ZN6Course14GetAdjacentMapEi
+_ZN6Course14GetAdjacentMapEi: ; 0x0207d6ec
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
- bl _ZN6Course18func_ov00_0207d634Ei
+ bl _ZN6Course23IsAdjacentMapOnMainGridEi
cmp r0, #0
moveq r0, #0xff
ldmeqia sp!, {r4, r5, r6, pc}
mov r0, r6
mov r1, r5
- bl _ZN6Course18func_ov00_0207d758Ei
+ bl _ZN6Course15GetAdjacentMapYEi
mov r4, r0
mov r0, r6
mov r1, r5
- bl _ZN6Course18func_ov00_0207d738Ei
+ bl _ZN6Course15GetAdjacentMapXEi
mov r1, #0xa
mla r1, r0, r1, r6
add r0, r1, r4
ldrb r0, [r0, #0x20]
ldmia sp!, {r4, r5, r6, pc}
- arm_func_end _ZN6Course18func_ov00_0207d6ecEv
+ arm_func_end _ZN6Course14GetAdjacentMapEi
- .global _ZN6Course18func_ov00_0207d738Ei
- arm_func_start _ZN6Course18func_ov00_0207d738Ei
-_ZN6Course18func_ov00_0207d738Ei: ; 0x0207d738
+ .global _ZN6Course15GetAdjacentMapXEi
+ arm_func_start _ZN6Course15GetAdjacentMapXEi
+_ZN6Course15GetAdjacentMapXEi: ; 0x0207d738
cmp r1, #0
ldrb r0, [r0, #0x1c]
beq _0207d750
@@ -1048,11 +1048,11 @@ _ZN6Course18func_ov00_0207d738Ei: ; 0x0207d738
_0207d750:
add r0, r0, #1
bx lr
- arm_func_end _ZN6Course18func_ov00_0207d738Ei
+ arm_func_end _ZN6Course15GetAdjacentMapXEi
- .global _ZN6Course18func_ov00_0207d758Ei
- arm_func_start _ZN6Course18func_ov00_0207d758Ei
-_ZN6Course18func_ov00_0207d758Ei: ; 0x0207d758
+ .global _ZN6Course15GetAdjacentMapYEi
+ arm_func_start _ZN6Course15GetAdjacentMapYEi
+_ZN6Course15GetAdjacentMapYEi: ; 0x0207d758
cmp r1, #2
ldrb r0, [r0, #0x1d]
beq _0207d770
@@ -1062,46 +1062,46 @@ _ZN6Course18func_ov00_0207d758Ei: ; 0x0207d758
_0207d770:
add r0, r0, #1
bx lr
- arm_func_end _ZN6Course18func_ov00_0207d758Ei
+ arm_func_end _ZN6Course15GetAdjacentMapYEi
- .global _ZN6Course18func_ov00_0207d778Ev
- arm_func_start _ZN6Course18func_ov00_0207d778Ev
-_ZN6Course18func_ov00_0207d778Ev: ; 0x0207d778
+ .global _ZN6Course21FindCurrent_Unk_cc_04Ev
+ arm_func_start _ZN6Course21FindCurrent_Unk_cc_04Ev
+_ZN6Course21FindCurrent_Unk_cc_04Ev: ; 0x0207d778
stmdb sp!, {r3, lr}
- bl _ZN6Course18func_ov00_0207da14Ev
+ bl _ZN6Course18FindCurrent_Unk_ccEv
ldrh r0, [r0, #4]
ldmia sp!, {r3, pc}
- arm_func_end _ZN6Course18func_ov00_0207d778Ev
+ arm_func_end _ZN6Course21FindCurrent_Unk_cc_04Ev
- .global _ZN6Course18func_ov00_0207d788Ev
- arm_func_start _ZN6Course18func_ov00_0207d788Ev
-_ZN6Course18func_ov00_0207d788Ev: ; 0x0207d788
+ .global _ZN6Course14Find_Unk_cc_04Ei
+ arm_func_start _ZN6Course14Find_Unk_cc_04Ei
+_ZN6Course14Find_Unk_cc_04Ei: ; 0x0207d788
stmdb sp!, {r3, lr}
- bl _ZN6Course18func_ov00_0207d9ccEi
+ bl _ZN6Course11Find_Unk_ccEj
cmp r0, #0
ldreq r0, _0207d7a0 ; =0x0000ffff
ldrneh r0, [r0, #4]
ldmia sp!, {r3, pc}
.align 2, 0
- arm_func_end _ZN6Course18func_ov00_0207d788Ev
+ arm_func_end _ZN6Course14Find_Unk_cc_04Ei
_0207d7a0: .word 0x0000ffff
- .global _ZN6Course18func_ov00_0207d7a4Ev
- arm_func_start _ZN6Course18func_ov00_0207d7a4Ev
-_ZN6Course18func_ov00_0207d7a4Ev: ; 0x0207d7a4
+ .global _ZN6Course14Find_Unk_cc_0cEi
+ arm_func_start _ZN6Course14Find_Unk_cc_0cEi
+_ZN6Course14Find_Unk_cc_0cEi: ; 0x0207d7a4
stmdb sp!, {r3, lr}
- bl _ZN6Course18func_ov00_0207d9ccEi
+ bl _ZN6Course11Find_Unk_ccEj
cmp r0, #0
moveq r0, #0
ldrne r0, [r0, #0xc]
ldmia sp!, {r3, pc}
- arm_func_end _ZN6Course18func_ov00_0207d7a4Ev
+ arm_func_end _ZN6Course14Find_Unk_cc_0cEi
.global _ZN6Course18func_ov00_0207d7bcEv
arm_func_start _ZN6Course18func_ov00_0207d7bcEv
_ZN6Course18func_ov00_0207d7bcEv: ; 0x0207d7bc
stmdb sp!, {r3, lr}
- bl _ZN6Course18func_ov00_0207da14Ev
+ bl _ZN6Course18FindCurrent_Unk_ccEv
ldr r2, _0207d7d8 ; =data_027e103c
ldrh r1, [r0, #4]
ldr r0, [r2]
@@ -1111,9 +1111,9 @@ _ZN6Course18func_ov00_0207d7bcEv: ; 0x0207d7bc
arm_func_end _ZN6Course18func_ov00_0207d7bcEv
_0207d7d8: .word data_027e103c
- .global _ZN6Course18func_ov00_0207d7dcEii
- arm_func_start _ZN6Course18func_ov00_0207d7dcEii
-_ZN6Course18func_ov00_0207d7dcEii: ; 0x0207d7dc
+ .global _ZN6Course8SetFlag0Ejb
+ arm_func_start _ZN6Course8SetFlag0Ejb
+_ZN6Course8SetFlag0Ejb: ; 0x0207d7dc
cmp r2, #0
beq _0207d804
add ip, r0, #0x264
@@ -1134,11 +1134,11 @@ _0207d804:
and r0, r1, r0
str r0, [r3, r2, lsl #2]
bx lr
- arm_func_end _ZN6Course18func_ov00_0207d7dcEii
+ arm_func_end _ZN6Course8SetFlag0Ejb
- .global _ZN6Course18func_ov00_0207d828Ei
- arm_func_start _ZN6Course18func_ov00_0207d828Ei
-_ZN6Course18func_ov00_0207d828Ei: ; 0x0207d828
+ .global _ZN6Course8GetFlag0Ej
+ arm_func_start _ZN6Course8GetFlag0Ej
+_ZN6Course8GetFlag0Ej: ; 0x0207d828
mov r2, r1, lsr #0x5
add r0, r0, r2, lsl #2
ldr r2, [r0, #0x264]
@@ -1147,11 +1147,11 @@ _ZN6Course18func_ov00_0207d828Ei: ; 0x0207d828
tst r2, r0, lsl r1
moveq r0, #0
bx lr
- arm_func_end _ZN6Course18func_ov00_0207d828Ei
+ arm_func_end _ZN6Course8GetFlag0Ej
- .global _ZN6Course18func_ov00_0207d848Eii
- arm_func_start _ZN6Course18func_ov00_0207d848Eii
-_ZN6Course18func_ov00_0207d848Eii: ; 0x0207d848
+ .global _ZN6Course8SetFlag1Ejb
+ arm_func_start _ZN6Course8SetFlag1Ejb
+_ZN6Course8SetFlag1Ejb: ; 0x0207d848
cmp r2, #0
beq _0207d870
add ip, r0, #0x268
@@ -1172,11 +1172,11 @@ _0207d870:
and r0, r1, r0
str r0, [r3, r2, lsl #2]
bx lr
- arm_func_end _ZN6Course18func_ov00_0207d848Eii
+ arm_func_end _ZN6Course8SetFlag1Ejb
- .global _ZN6Course18func_ov00_0207d894Ei
- arm_func_start _ZN6Course18func_ov00_0207d894Ei
-_ZN6Course18func_ov00_0207d894Ei: ; 0x0207d894
+ .global _ZN6Course8SetFlag1Ej
+ arm_func_start _ZN6Course8SetFlag1Ej
+_ZN6Course8SetFlag1Ej: ; 0x0207d894
mov r2, r1, lsr #0x5
add r0, r0, r2, lsl #2
ldr r2, [r0, #0x268]
@@ -1185,131 +1185,131 @@ _ZN6Course18func_ov00_0207d894Ei: ; 0x0207d894
tst r2, r0, lsl r1
moveq r0, #0
bx lr
- arm_func_end _ZN6Course18func_ov00_0207d894Ei
+ arm_func_end _ZN6Course8SetFlag1Ej
- .global _ZN6Course18func_ov00_0207d8b4Ev
- arm_func_start _ZN6Course18func_ov00_0207d8b4Ev
-_ZN6Course18func_ov00_0207d8b4Ev: ; 0x0207d8b4
+ .global _ZN6Course15SetFlag0_Unk_ccEib
+ arm_func_start _ZN6Course15SetFlag0_Unk_ccEib
+_ZN6Course15SetFlag0_Unk_ccEib: ; 0x0207d8b4
stmdb sp!, {r3, r4, r5, lr}
mov r5, r1
mov r4, r2
- bl _ZN6Course18func_ov00_0207da14Ev
+ bl _ZN6Course18FindCurrent_Unk_ccEv
mov r1, r5
mov r2, r4
bl func_ov00_0209740c
ldmia sp!, {r3, r4, r5, pc}
- arm_func_end _ZN6Course18func_ov00_0207d8b4Ev
+ arm_func_end _ZN6Course15SetFlag0_Unk_ccEib
- .global _ZN6Course18func_ov00_0207d8d4Ei
- arm_func_start _ZN6Course18func_ov00_0207d8d4Ei
-_ZN6Course18func_ov00_0207d8d4Ei: ; 0x0207d8d4
+ .global _ZN6Course15GetFlag0_Unk_ccEi
+ arm_func_start _ZN6Course15GetFlag0_Unk_ccEi
+_ZN6Course15GetFlag0_Unk_ccEi: ; 0x0207d8d4
stmdb sp!, {r4, lr}
mov r4, r1
- bl _ZN6Course18func_ov00_0207da14Ev
+ bl _ZN6Course18FindCurrent_Unk_ccEv
mov r1, r4
bl func_ov00_02097458
ldmia sp!, {r4, pc}
- arm_func_end _ZN6Course18func_ov00_0207d8d4Ei
+ arm_func_end _ZN6Course15GetFlag0_Unk_ccEi
- .global _ZN6Course18func_ov00_0207d8ecEv
- arm_func_start _ZN6Course18func_ov00_0207d8ecEv
-_ZN6Course18func_ov00_0207d8ecEv: ; 0x0207d8ec
+ .global _ZN6Course15SetFlag1_Unk_ccEib
+ arm_func_start _ZN6Course15SetFlag1_Unk_ccEib
+_ZN6Course15SetFlag1_Unk_ccEib: ; 0x0207d8ec
stmdb sp!, {r3, r4, r5, lr}
mov r5, r1
mov r4, r2
- bl _ZN6Course18func_ov00_0207da14Ev
+ bl _ZN6Course18FindCurrent_Unk_ccEv
mov r1, r5
mov r2, r4
bl func_ov00_02097478
ldmia sp!, {r3, r4, r5, pc}
- arm_func_end _ZN6Course18func_ov00_0207d8ecEv
+ arm_func_end _ZN6Course15SetFlag1_Unk_ccEib
- .global _ZN6Course18func_ov00_0207d90cEi
- arm_func_start _ZN6Course18func_ov00_0207d90cEi
-_ZN6Course18func_ov00_0207d90cEi: ; 0x0207d90c
+ .global _ZN6Course15GetFlag1_Unk_ccEi
+ arm_func_start _ZN6Course15GetFlag1_Unk_ccEi
+_ZN6Course15GetFlag1_Unk_ccEi: ; 0x0207d90c
stmdb sp!, {r4, lr}
mov r4, r1
- bl _ZN6Course18func_ov00_0207da14Ev
+ bl _ZN6Course18FindCurrent_Unk_ccEv
mov r1, r4
bl func_ov00_020974c4
ldmia sp!, {r4, pc}
- arm_func_end _ZN6Course18func_ov00_0207d90cEi
+ arm_func_end _ZN6Course15GetFlag1_Unk_ccEi
- .global _ZN6Course18func_ov00_0207d924Ev
- arm_func_start _ZN6Course18func_ov00_0207d924Ev
-_ZN6Course18func_ov00_0207d924Ev: ; 0x0207d924
+ .global _ZN6Course15SetFlag2_Unk_ccEib
+ arm_func_start _ZN6Course15SetFlag2_Unk_ccEib
+_ZN6Course15SetFlag2_Unk_ccEib: ; 0x0207d924
stmdb sp!, {r3, r4, r5, lr}
mov r5, r1
mov r4, r2
- bl _ZN6Course18func_ov00_0207da14Ev
+ bl _ZN6Course18FindCurrent_Unk_ccEv
mov r1, r5
mov r2, r4
bl func_ov00_020974e4
ldmia sp!, {r3, r4, r5, pc}
- arm_func_end _ZN6Course18func_ov00_0207d924Ev
+ arm_func_end _ZN6Course15SetFlag2_Unk_ccEib
- .global _ZN6Course18func_ov00_0207d944Ei
- arm_func_start _ZN6Course18func_ov00_0207d944Ei
-_ZN6Course18func_ov00_0207d944Ei: ; 0x0207d944
+ .global _ZN6Course15GetFlag2_Unk_ccEi
+ arm_func_start _ZN6Course15GetFlag2_Unk_ccEi
+_ZN6Course15GetFlag2_Unk_ccEi: ; 0x0207d944
stmdb sp!, {r4, lr}
mov r4, r1
- bl _ZN6Course18func_ov00_0207da14Ev
+ bl _ZN6Course18FindCurrent_Unk_ccEv
mov r1, r4
bl func_ov00_02097530
ldmia sp!, {r4, pc}
- arm_func_end _ZN6Course18func_ov00_0207d944Ei
+ arm_func_end _ZN6Course15GetFlag2_Unk_ccEi
- .global _ZN6Course18func_ov00_0207d95cEv
- arm_func_start _ZN6Course18func_ov00_0207d95cEv
-_ZN6Course18func_ov00_0207d95cEv: ; 0x0207d95c
+ .global _ZN6Course15SetFlag3_Unk_ccEib
+ arm_func_start _ZN6Course15SetFlag3_Unk_ccEib
+_ZN6Course15SetFlag3_Unk_ccEib: ; 0x0207d95c
stmdb sp!, {r3, r4, r5, lr}
mov r5, r1
mov r4, r2
- bl _ZN6Course18func_ov00_0207da14Ev
+ bl _ZN6Course18FindCurrent_Unk_ccEv
mov r1, r5
mov r2, r4
bl func_ov00_02097550
ldmia sp!, {r3, r4, r5, pc}
- arm_func_end _ZN6Course18func_ov00_0207d95cEv
+ arm_func_end _ZN6Course15SetFlag3_Unk_ccEib
.global _ZN6Course18func_ov00_0207d97cEi
arm_func_start _ZN6Course18func_ov00_0207d97cEi
_ZN6Course18func_ov00_0207d97cEi: ; 0x0207d97c
stmdb sp!, {r4, lr}
mov r4, r1
- bl _ZN6Course18func_ov00_0207da14Ev
+ bl _ZN6Course18FindCurrent_Unk_ccEv
mov r1, r4
bl func_ov00_0209759c
ldmia sp!, {r4, pc}
arm_func_end _ZN6Course18func_ov00_0207d97cEi
- .global _ZN6Course18func_ov00_0207d994Ev
- arm_func_start _ZN6Course18func_ov00_0207d994Ev
-_ZN6Course18func_ov00_0207d994Ev: ; 0x0207d994
+ .global _ZN6Course18func_ov00_0207d994Eii
+ arm_func_start _ZN6Course18func_ov00_0207d994Eii
+_ZN6Course18func_ov00_0207d994Eii: ; 0x0207d994
stmdb sp!, {r3, r4, r5, lr}
mov r5, r1
mov r4, r2
- bl _ZN6Course18func_ov00_0207da14Ev
+ bl _ZN6Course18FindCurrent_Unk_ccEv
mov r1, r5
mov r2, r4
bl func_ov00_020975bc
ldmia sp!, {r3, r4, r5, pc}
- arm_func_end _ZN6Course18func_ov00_0207d994Ev
+ arm_func_end _ZN6Course18func_ov00_0207d994Eii
- .global _ZN6Course18func_ov00_0207d9b4Ei
- arm_func_start _ZN6Course18func_ov00_0207d9b4Ei
-_ZN6Course18func_ov00_0207d9b4Ei: ; 0x0207d9b4
+ .global _ZN6Course15GetFlag3_Unk_ccEi
+ arm_func_start _ZN6Course15GetFlag3_Unk_ccEi
+_ZN6Course15GetFlag3_Unk_ccEi: ; 0x0207d9b4
stmdb sp!, {r4, lr}
mov r4, r1
- bl _ZN6Course18func_ov00_0207da14Ev
+ bl _ZN6Course18FindCurrent_Unk_ccEv
mov r1, r4
bl func_ov00_02097608
ldmia sp!, {r4, pc}
- arm_func_end _ZN6Course18func_ov00_0207d9b4Ei
+ arm_func_end _ZN6Course15GetFlag3_Unk_ccEi
- .global _ZN6Course18func_ov00_0207d9ccEi
- arm_func_start _ZN6Course18func_ov00_0207d9ccEi
-_ZN6Course18func_ov00_0207d9ccEi: ; 0x0207d9cc
+ .global _ZN6Course11Find_Unk_ccEj
+ arm_func_start _ZN6Course11Find_Unk_ccEj
+_ZN6Course11Find_Unk_ccEj: ; 0x0207d9cc
ldrb r2, [r0, #0xb0]
mov ip, #0
cmp r2, #0
@@ -1331,22 +1331,22 @@ _0207d9fc:
_0207da0c:
mov r0, #0
bx lr
- arm_func_end _ZN6Course18func_ov00_0207d9ccEi
+ arm_func_end _ZN6Course11Find_Unk_ccEj
- .global _ZN6Course18func_ov00_0207da14Ev
- arm_func_start _ZN6Course18func_ov00_0207da14Ev
-_ZN6Course18func_ov00_0207da14Ev: ; 0x0207da14
+ .global _ZN6Course18FindCurrent_Unk_ccEv
+ arm_func_start _ZN6Course18FindCurrent_Unk_ccEv
+_ZN6Course18FindCurrent_Unk_ccEv: ; 0x0207da14
ldrb r3, [r0, #0x1c]
mov r1, #0xa
ldrb r2, [r0, #0x1d]
mla r1, r3, r1, r0
add r1, r1, r2
- ldr ip, _0207da34 ; =_ZN6Course18func_ov00_0207d9ccEi
+ ldr ip, _0207da34 ; =_ZN6Course11Find_Unk_ccEj
ldrb r1, [r1, #0x20]
bx ip
.align 2, 0
- arm_func_end _ZN6Course18func_ov00_0207da14Ev
-_0207da34: .word _ZN6Course18func_ov00_0207d9ccEi
+ arm_func_end _ZN6Course18FindCurrent_Unk_ccEv
+_0207da34: .word _ZN6Course11Find_Unk_ccEj
.data
.global data_ov00_020e2058
diff --git a/asm/ov00/Map/MapManager.inc b/asm/ov00/Map/MapManager.inc
index 9f6e5557..e6197a44 100644
--- a/asm/ov00/Map/MapManager.inc
+++ b/asm/ov00/Map/MapManager.inc
@@ -3,41 +3,41 @@
.extern _ZN12ActorManager13FindActorByIdEj
.extern _ZN12ActorManager18func_ov00_020c3ce8Eii
.extern _ZN14AdventureFlags18func_ov00_020976c8Ev
-.extern _ZN6Course15GetUnk_c8_Unk_4Ev
+.extern _ZN6Course13Get_Unk_c8_04Ev
.extern _ZN6Course18GetDungeonProgressEP14CourseProgress
.extern _ZN6Course18func_ov00_0207ca28Eiii
-.extern _ZN6Course18func_ov00_0207caa8Eiii
+.extern _ZN6Course18func_ov00_0207caa8EiPiPc
.extern _ZN6Course18func_ov00_0207cb30Ei
-.extern _ZN6Course18func_ov00_0207cb7cEiPS_i
-.extern _ZN6Course18func_ov00_0207cbd8Ei
+.extern _ZN6Course14FindMapGridPosEP5Vec2bPS_j
+.extern _ZN6Course14Find_Unk_cc_14Ei
.extern _ZN6Course18func_ov00_0207cbe8Ei
.extern _ZN6Course18func_ov00_0207cc24Ei
-.extern _ZN6Course18func_ov00_0207cc6cEv
-.extern _ZN6Course18func_ov00_0207ce20Eiiii
+.extern _ZN6Course14Find_Unk_cc_08Ev
+.extern _ZN6Course18func_ov00_0207ce20EiiPci
.extern _ZN6Course18func_ov00_0207d404Eiii
-.extern _ZN6Course18func_ov00_0207d47cEv
-.extern _ZN6Course18func_ov00_0207d4e4Ei
-.extern _ZN6Course18func_ov00_0207d518EiPiS0_
-.extern _ZN6Course18func_ov00_0207d5c4Ev
-.extern _ZN6Course18func_ov00_0207d5f0Ev
-.extern _ZN6Course18func_ov00_0207d61cEv
-.extern _ZN6Course18func_ov00_0207d778Ev
-.extern _ZN6Course18func_ov00_0207d788Ev
+.extern _ZN6Course22IsCurrentMapInMainGridEv
+.extern _ZN6Course15IsMapInMainGridEj
+.extern _ZN6Course15GetMapScreenPosEiPiS0_
+.extern _ZN6Course21GetScreenMapCellSizeXEv
+.extern _ZN6Course21GetScreenMapCellSizeYEv
+.extern _ZN6Course13Get_Unk_c8_00Ev
+.extern _ZN6Course21FindCurrent_Unk_cc_04Ev
+.extern _ZN6Course14Find_Unk_cc_04Ei
.extern _ZN6Course18func_ov00_0207d7bcEv
-.extern _ZN6Course18func_ov00_0207d7dcEii
-.extern _ZN6Course18func_ov00_0207d828Ei
-.extern _ZN6Course18func_ov00_0207d848Eii
-.extern _ZN6Course18func_ov00_0207d894Ei
-.extern _ZN6Course18func_ov00_0207d8b4Ev
-.extern _ZN6Course18func_ov00_0207d8d4Ei
-.extern _ZN6Course18func_ov00_0207d8ecEv
-.extern _ZN6Course18func_ov00_0207d90cEi
-.extern _ZN6Course18func_ov00_0207d924Ev
-.extern _ZN6Course18func_ov00_0207d944Ei
-.extern _ZN6Course18func_ov00_0207d95cEv
+.extern _ZN6Course8SetFlag0Ejb
+.extern _ZN6Course8GetFlag0Ej
+.extern _ZN6Course8SetFlag1Ejb
+.extern _ZN6Course8SetFlag1Ej
+.extern _ZN6Course15SetFlag0_Unk_ccEib
+.extern _ZN6Course15GetFlag0_Unk_ccEi
+.extern _ZN6Course15SetFlag1_Unk_ccEib
+.extern _ZN6Course15GetFlag1_Unk_ccEi
+.extern _ZN6Course15SetFlag2_Unk_ccEib
+.extern _ZN6Course15GetFlag2_Unk_ccEi
+.extern _ZN6Course15SetFlag3_Unk_ccEib
.extern _ZN6Course18func_ov00_0207d97cEi
-.extern _ZN6Course18func_ov00_0207d994Ev
-.extern _ZN6Course18func_ov00_0207d9b4Ei
+.extern _ZN6Course18func_ov00_0207d994Eii
+.extern _ZN6Course15GetFlag3_Unk_ccEi
.extern _ZN9SysObjectnwEmPjj
.extern __register_global_object
.extern data_027e077c
diff --git a/asm/ov00/Map/MapManager.s b/asm/ov00/Map/MapManager.s
index ce3dfbd3..983ea98f 100644
--- a/asm/ov00/Map/MapManager.s
+++ b/asm/ov00/Map/MapManager.s
@@ -468,7 +468,7 @@ _ZN10MapManager18func_ov00_02082614Eii: ; 0x02082614
mov r3, r1
mov r1, r2
mov r2, #0
- bl _ZN6Course18func_ov00_0207ce20Eiiii
+ bl _ZN6Course18func_ov00_0207ce20EiiPci
ldmia sp!, {r3, pc}
arm_func_end _ZN10MapManager18func_ov00_02082614Eii
@@ -926,7 +926,7 @@ _ZN10MapManager18func_ov00_02082b3cEi: ; 0x02082b3c
ldrb r2, [r5, #0x12]
ldr r1, [r6]
add r0, sp, #0
- bl _ZN6Course18func_ov00_0207cb7cEiPS_i
+ bl _ZN6Course14FindMapGridPosEP5Vec2bPS_j
mov r0, r6
bl _ZN10MapManager20GetCourseData_Unk_1cEv
ldrb r1, [sp]
@@ -981,11 +981,11 @@ _02082bac:
ldrb r7, [r5, #0x12]
ldr r0, [r6]
mov r4, #0
- bl _ZN6Course18func_ov00_0207d778Ev
+ bl _ZN6Course21FindCurrent_Unk_cc_04Ev
mov r1, r7
mov r7, r0
ldr r0, [r6]
- bl _ZN6Course18func_ov00_0207d788Ev
+ bl _ZN6Course14Find_Unk_cc_04Ei
cmp r7, r0
ldrb r2, [sp]
ldr r1, [r6]
@@ -1155,7 +1155,7 @@ _ZN10MapManager18func_ov00_02082e1cEPiS0_: ; 0x02082e1c
mov r6, r2
cmp r1, #0
beq _02083050
- bl _ZN6Course18func_ov00_0207d47cEv
+ bl _ZN6Course22IsCurrentMapInMainGridEv
cmp r0, #0
bne _02083038
mvn r1, #0xff
@@ -1219,18 +1219,18 @@ _02082f1c:
add r2, sp, #0xc
add r3, sp, #8
mov r1, r4
- bl _ZN6Course18func_ov00_0207d518EiPiS0_
+ bl _ZN6Course15GetMapScreenPosEiPiS0_
cmp r0, #0
ldr r0, [r8]
bne _02082fc0
add r2, sp, #0xc
add r3, sp, #8
mov r1, r5
- bl _ZN6Course18func_ov00_0207d518EiPiS0_
+ bl _ZN6Course15GetMapScreenPosEiPiS0_
ldr r1, [r8]
add r0, sp, #6
mov r2, r5
- bl _ZN6Course18func_ov00_0207cb7cEiPS_i
+ bl _ZN6Course14FindMapGridPosEP5Vec2bPS_j
ldrb r1, [sp, #7]
add r0, sp, #4
add r2, sp, #0x28
@@ -1239,7 +1239,7 @@ _02082f1c:
mov r1, r8
bl _ZN10MapManager18func_ov00_02083a54EiPS_iii
ldr r0, [r8]
- bl _ZN6Course18func_ov00_0207d5c4Ev
+ bl _ZN6Course21GetScreenMapCellSizeXEv
ldrb r1, [sp, #4]
ldr r3, [sp, #0xc]
mov r1, r1, lsl #0xc
@@ -1252,12 +1252,12 @@ _02082f1c:
add r0, r3, r0, asr #12
str r0, [r7]
ldr r0, [r8]
- bl _ZN6Course18func_ov00_0207d5f0Ev
+ bl _ZN6Course21GetScreenMapCellSizeYEv
ldrb r1, [sp, #5]
ldr r3, [sp, #8]
b _02083008
_02082fc0:
- bl _ZN6Course18func_ov00_0207d5c4Ev
+ bl _ZN6Course21GetScreenMapCellSizeXEv
ldr r2, [r8, #4]
ldr r1, [sp, #0xc]
ldrb r2, [r2, #0x1b]
@@ -1271,7 +1271,7 @@ _02082fc0:
add r0, r1, r0, asr #12
str r0, [r7]
ldr r0, [r8]
- bl _ZN6Course18func_ov00_0207d5f0Ev
+ bl _ZN6Course21GetScreenMapCellSizeYEv
ldr r1, [r8, #4]
ldr r3, [sp, #8]
ldrb r1, [r1, #0x1c]
@@ -1513,12 +1513,12 @@ _ZN10MapManager21GetCourseData_Unk_25cEv: ; 0x0208330c
.global _ZN10MapManager18func_ov00_02083318Ei
arm_func_start _ZN10MapManager18func_ov00_02083318Ei
_ZN10MapManager18func_ov00_02083318Ei: ; 0x02083318
- ldr ip, _02083324 ; =_ZN6Course18func_ov00_0207d4e4Ei
+ ldr ip, _02083324 ; =_ZN6Course15IsMapInMainGridEj
ldr r0, [r0]
bx ip
.align 2, 0
arm_func_end _ZN10MapManager18func_ov00_02083318Ei
-_02083324: .word _ZN6Course18func_ov00_0207d4e4Ei
+_02083324: .word _ZN6Course15IsMapInMainGridEj
.global _ZN10MapManager18func_ov00_02083328Ev
arm_func_start _ZN10MapManager18func_ov00_02083328Ev
@@ -1528,7 +1528,7 @@ _ZN10MapManager18func_ov00_02083328Ev: ; 0x02083328
bl _ZN10MapManager18func_ov00_02082d08Ev
mov r1, r0
ldr r0, [r4]
- bl _ZN6Course18func_ov00_0207d4e4Ei
+ bl _ZN6Course15IsMapInMainGridEj
ldmia sp!, {r4, pc}
arm_func_end _ZN10MapManager18func_ov00_02083328Ev
@@ -1738,7 +1738,7 @@ _ZN10MapManager18func_ov00_020834bcEP5Vec3pii: ; 0x020834bc
add r2, r4, r3
mov r4, r1
ldrb r1, [r2, #0x20]
- bl _ZN6Course18func_ov00_0207cbd8Ei
+ bl _ZN6Course14Find_Unk_cc_14Ei
ldr r1, [r0]
str r1, [r4]
ldr r1, [r0, #4]
@@ -1768,7 +1768,7 @@ _ZN10MapManager18func_ov00_02083524EP5Vec3pii: ; 0x02083524
add r2, ip, r3
mov r4, r1
ldrb r1, [r2, #0x20]
- bl _ZN6Course18func_ov00_0207cbd8Ei
+ bl _ZN6Course14Find_Unk_cc_14Ei
ldr r1, [r0]
str r1, [r4]
ldr r1, [r0, #4]
@@ -1781,12 +1781,12 @@ _ZN10MapManager18func_ov00_02083524EP5Vec3pii: ; 0x02083524
.global _ZN10MapManager18func_ov00_02083560EiPS_j
arm_func_start _ZN10MapManager18func_ov00_02083560EiPS_j
_ZN10MapManager18func_ov00_02083560EiPS_j: ; 0x02083560
- ldr ip, _0208356c ; =_ZN6Course18func_ov00_0207cb7cEiPS_i
+ ldr ip, _0208356c ; =_ZN6Course14FindMapGridPosEP5Vec2bPS_j
ldr r1, [r1]
bx ip
.align 2, 0
arm_func_end _ZN10MapManager18func_ov00_02083560EiPS_j
-_0208356c: .word _ZN6Course18func_ov00_0207cb7cEiPS_i
+_0208356c: .word _ZN6Course14FindMapGridPosEP5Vec2bPS_j
.global _ZN10MapManager18func_ov00_02083570Eii
arm_func_start _ZN10MapManager18func_ov00_02083570Eii
@@ -1807,29 +1807,29 @@ _ZN10MapManager18func_ov00_02083588Ev: ; 0x02083588
bl _ZN10MapManager18func_ov00_02082d08Ev
mov r1, r0
ldr r0, [r4]
- bl _ZN6Course18func_ov00_0207cc6cEv
+ bl _ZN6Course14Find_Unk_cc_08Ev
ldmia sp!, {r4, pc}
arm_func_end _ZN10MapManager18func_ov00_02083588Ev
.global _ZN10MapManager18func_ov00_020835a4Ev
arm_func_start _ZN10MapManager18func_ov00_020835a4Ev
_ZN10MapManager18func_ov00_020835a4Ev: ; 0x020835a4
- ldr ip, _020835b0 ; =_ZN6Course18func_ov00_0207d61cEv
+ ldr ip, _020835b0 ; =_ZN6Course13Get_Unk_c8_00Ev
ldr r0, [r0]
bx ip
.align 2, 0
arm_func_end _ZN10MapManager18func_ov00_020835a4Ev
-_020835b0: .word _ZN6Course18func_ov00_0207d61cEv
+_020835b0: .word _ZN6Course13Get_Unk_c8_00Ev
.global _ZN10MapManager18func_ov00_020835b4Ev
arm_func_start _ZN10MapManager18func_ov00_020835b4Ev
_ZN10MapManager18func_ov00_020835b4Ev: ; 0x020835b4
- ldr ip, _020835c0 ; =_ZN6Course15GetUnk_c8_Unk_4Ev
+ ldr ip, _020835c0 ; =_ZN6Course13Get_Unk_c8_04Ev
ldr r0, [r0]
bx ip
.align 2, 0
arm_func_end _ZN10MapManager18func_ov00_020835b4Ev
-_020835c0: .word _ZN6Course15GetUnk_c8_Unk_4Ev
+_020835c0: .word _ZN6Course13Get_Unk_c8_04Ev
.global _ZN10MapManager18func_ov00_020835c4Eii
arm_func_start _ZN10MapManager18func_ov00_020835c4Eii
@@ -1847,12 +1847,12 @@ _ZN10MapManager18func_ov00_020835c4Eii: ; 0x020835c4
.global _ZN10MapManager18func_ov00_020835e4EiPiS0_
arm_func_start _ZN10MapManager18func_ov00_020835e4EiPiS0_
_ZN10MapManager18func_ov00_020835e4EiPiS0_: ; 0x020835e4
- ldr ip, _020835f0 ; =_ZN6Course18func_ov00_0207caa8Eiii
+ ldr ip, _020835f0 ; =_ZN6Course18func_ov00_0207caa8EiPiPc
ldr r0, [r0]
bx ip
.align 2, 0
arm_func_end _ZN10MapManager18func_ov00_020835e4EiPiS0_
-_020835f0: .word _ZN6Course18func_ov00_0207caa8Eiii
+_020835f0: .word _ZN6Course18func_ov00_0207caa8EiPiPc
.global _ZN10MapManager18func_ov00_020835f4Ei
arm_func_start _ZN10MapManager18func_ov00_020835f4Ei
@@ -3579,7 +3579,7 @@ _ZN10MapManager18func_ov00_0208499cEv: ; 0x0208499c
movne r0, #0
ldmneia sp!, {r4, pc}
ldr r0, [r4]
- bl _ZN6Course18func_ov00_0207d47cEv
+ bl _ZN6Course22IsCurrentMapInMainGridEv
ldmia sp!, {r4, pc}
arm_func_end _ZN10MapManager18func_ov00_0208499cEv
@@ -3771,17 +3771,17 @@ _02084b8c:
_02084bb0:
ldr r0, [r0]
mov r2, r3
- bl _ZN6Course18func_ov00_0207d8b4Ev
+ bl _ZN6Course15SetFlag0_Unk_ccEib
ldmia sp!, {r3, pc}
_02084bc0:
ldr r0, [r0]
mov r2, r3
- bl _ZN6Course18func_ov00_0207d7dcEii
+ bl _ZN6Course8SetFlag0Ejb
ldmia sp!, {r3, pc}
_02084bd0:
ldr r0, [r0]
mov r2, r3
- bl _ZN6Course18func_ov00_0207d848Eii
+ bl _ZN6Course8SetFlag1Ejb
ldmia sp!, {r3, pc}
arm_func_end _ZN10MapManager18func_ov00_02084b38Eiii
@@ -3812,15 +3812,15 @@ _02084c0c:
ldmia sp!, {r3, pc}
_02084c30:
ldr r0, [r0]
- bl _ZN6Course18func_ov00_0207d8d4Ei
+ bl _ZN6Course15GetFlag0_Unk_ccEi
ldmia sp!, {r3, pc}
_02084c3c:
ldr r0, [r0]
- bl _ZN6Course18func_ov00_0207d828Ei
+ bl _ZN6Course8GetFlag0Ej
ldmia sp!, {r3, pc}
_02084c48:
ldr r0, [r0]
- bl _ZN6Course18func_ov00_0207d894Ei
+ bl _ZN6Course8SetFlag1Ej
ldmia sp!, {r3, pc}
_02084c54:
mov r0, #0
@@ -3830,22 +3830,22 @@ _02084c54:
.global _ZN10MapManager18func_ov00_02084c5cEii
arm_func_start _ZN10MapManager18func_ov00_02084c5cEii
_ZN10MapManager18func_ov00_02084c5cEii: ; 0x02084c5c
- ldr ip, _02084c68 ; =_ZN6Course18func_ov00_0207d8ecEv
+ ldr ip, _02084c68 ; =_ZN6Course15SetFlag1_Unk_ccEib
ldr r0, [r0]
bx ip
.align 2, 0
arm_func_end _ZN10MapManager18func_ov00_02084c5cEii
-_02084c68: .word _ZN6Course18func_ov00_0207d8ecEv
+_02084c68: .word _ZN6Course15SetFlag1_Unk_ccEib
.global _ZN10MapManager18func_ov00_02084c6cEi
arm_func_start _ZN10MapManager18func_ov00_02084c6cEi
_ZN10MapManager18func_ov00_02084c6cEi: ; 0x02084c6c
- ldr ip, _02084c78 ; =_ZN6Course18func_ov00_0207d90cEi
+ ldr ip, _02084c78 ; =_ZN6Course15GetFlag1_Unk_ccEi
ldr r0, [r0]
bx ip
.align 2, 0
arm_func_end _ZN10MapManager18func_ov00_02084c6cEi
-_02084c78: .word _ZN6Course18func_ov00_0207d90cEi
+_02084c78: .word _ZN6Course15GetFlag1_Unk_ccEi
.global _ZN10MapManager18func_ov00_02084c7cEi
arm_func_start _ZN10MapManager18func_ov00_02084c7cEi
@@ -3854,7 +3854,7 @@ _ZN10MapManager18func_ov00_02084c7cEi: ; 0x02084c7c
cmp r1, #0
ldmltia sp!, {r3, pc}
ldr r0, [r0]
- bl _ZN6Course18func_ov00_0207d924Ev
+ bl _ZN6Course15SetFlag2_Unk_ccEib
ldmia sp!, {r3, pc}
arm_func_end _ZN10MapManager18func_ov00_02084c7cEi
@@ -3866,7 +3866,7 @@ _ZN10MapManager18func_ov00_02084c94Ei: ; 0x02084c94
movlt r0, #0
ldmltia sp!, {r3, pc}
ldr r0, [r0]
- bl _ZN6Course18func_ov00_0207d944Ei
+ bl _ZN6Course15GetFlag2_Unk_ccEi
ldmia sp!, {r3, pc}
arm_func_end _ZN10MapManager18func_ov00_02084c94Ei
@@ -3877,7 +3877,7 @@ _ZN10MapManager18func_ov00_02084cb0Ei: ; 0x02084cb0
cmp r1, #0
ldmltia sp!, {r3, pc}
ldr r0, [r0]
- bl _ZN6Course18func_ov00_0207d95cEv
+ bl _ZN6Course15SetFlag3_Unk_ccEib
ldmia sp!, {r3, pc}
arm_func_end _ZN10MapManager18func_ov00_02084cb0Ei
@@ -3900,7 +3900,7 @@ _ZN10MapManager18func_ov00_02084ce4Ei: ; 0x02084ce4
cmp r1, #0
ldmltia sp!, {r3, pc}
ldr r0, [r0]
- bl _ZN6Course18func_ov00_0207d994Ev
+ bl _ZN6Course18func_ov00_0207d994Eii
ldmia sp!, {r3, pc}
arm_func_end _ZN10MapManager18func_ov00_02084ce4Ei
@@ -3912,7 +3912,7 @@ _ZN10MapManager18func_ov00_02084cfcEi: ; 0x02084cfc
movlt r0, #0
ldmltia sp!, {r3, pc}
ldr r0, [r0]
- bl _ZN6Course18func_ov00_0207d9b4Ei
+ bl _ZN6Course15GetFlag3_Unk_ccEi
ldmia sp!, {r3, pc}
arm_func_end _ZN10MapManager18func_ov00_02084cfcEi
diff --git a/asm/ov00/ov00_0207da38.inc b/asm/ov00/ov00_0207da38.inc
index 27c83372..2834f6a1 100644
--- a/asm/ov00/ov00_0207da38.inc
+++ b/asm/ov00/ov00_0207da38.inc
@@ -1,7 +1,7 @@
#pragma once
.extern Divide
.extern _ZN10MapManager18func_ov00_02083a1cEiPS_P5Vec3p
-.extern _ZN6Course18func_ov00_0207cbd8Ei
+.extern _ZN6Course14Find_Unk_cc_14Ei
.extern _ZN9SysObjectdlEPv
.extern _ZN9SysObjectnwEmPjj
.extern data_027e0618
diff --git a/asm/ov00/ov00_0207da38.s b/asm/ov00/ov00_0207da38.s
index 47c6c53d..c8342dc2 100644
--- a/asm/ov00/ov00_0207da38.s
+++ b/asm/ov00/ov00_0207da38.s
@@ -222,7 +222,7 @@ func_ov00_0207dce4: ; 0x0207dce4
mov r2, r3, lsl #0xc
str r5, [sp]
str r2, [sp, #4]
- bl _ZN6Course18func_ov00_0207cbd8Ei
+ bl _ZN6Course14Find_Unk_cc_14Ei
mov ip, r5
add r5, sp, #0x20
ldmia r0, {r0, r1, r2}
diff --git a/asm/ov00/ov00_020980f4.inc b/asm/ov00/ov00_020980f4.inc
index 3a4153df..04091b0a 100644
--- a/asm/ov00/ov00_020980f4.inc
+++ b/asm/ov00/ov00_020980f4.inc
@@ -95,7 +95,6 @@
.extern data_027e0d38
.extern data_027e0db0
.extern data_027e0de4
-.extern gMapManager
.extern data_027e0f64
.extern data_027e0f68
.extern data_027e0f78
@@ -360,6 +359,7 @@
.extern func_ov40_021833c4
.extern gAdventureFlags
.extern gItemManager
+.extern gMapManager
.extern gOverlayManager
.extern strcat
.extern strcmp
diff --git a/asm/ov02.inc b/asm/ov02.inc
index 3566fa97..2ede9c1d 100644
--- a/asm/ov02.inc
+++ b/asm/ov02.inc
@@ -1,6 +1,7 @@
#pragma once
.extern Divide
.extern LoadTreasureItemFanfare
+.extern _ZN10MapManager18func_ov00_020847e0Ev
.extern _ZN11ItemManager13EquipShipPartEjj
.extern _ZN14AdventureFlags3GetEj
.extern _ZN9SysObjectdlEPv
@@ -31,7 +32,6 @@
.extern data_027e0d0c
.extern data_027e0d44
.extern data_027e0d78
-.extern gMapManager
.extern data_027e0f88
.extern data_027e0f8c
.extern data_027e0fbc
@@ -115,7 +115,6 @@
.extern func_0204f614
.extern func_0204f754
.extern func_ov00_0207b1fc
-.extern _ZN10MapManager18func_ov00_020847e0Ev
.extern func_ov00_0208de04
.extern func_ov00_0208dec8
.extern func_ov00_0208def0
@@ -260,3 +259,4 @@
.extern func_ov45_0218db94
.extern gAdventureFlags
.extern gItemManager
+.extern gMapManager
diff --git a/asm/ov04.inc b/asm/ov04.inc
index 406a2295..df85ac98 100644
--- a/asm/ov04.inc
+++ b/asm/ov04.inc
@@ -57,16 +57,16 @@
.extern _ZN14OverlayManager6UnloadEj
.extern _ZN5ActorC2Ev
.extern _ZN5ActorD2Ev
+.extern _ZN6Course11Find_Unk_ccEj
.extern _ZN6Course13SetCourseNameEPc
+.extern _ZN6Course14FindMapGridPosEP5Vec2bPS_j
+.extern _ZN6Course14Find_Unk_cc_0cEi
.extern _ZN6Course14GetMCSFilePathEiii
.extern _ZN6Course14GetMRCFilePathEiii
-.extern _ZN6Course18func_ov00_0207ca78Ev
-.extern _ZN6Course18func_ov00_0207cb7cEiPS_i
-.extern _ZN6Course18func_ov00_0207ce20Eiiii
-.extern _ZN6Course18func_ov00_0207d4e4Ei
-.extern _ZN6Course18func_ov00_0207d7a4Ev
+.extern _ZN6Course15IsMapInMainGridEj
+.extern _ZN6Course18func_ov00_0207ca78Eici
+.extern _ZN6Course18func_ov00_0207ce20EiiPci
.extern _ZN6Course18func_ov00_0207d7bcEv
-.extern _ZN6Course18func_ov00_0207d9ccEi
.extern _ZN9ActorType13func_0203e7c8Ev
.extern _ZN9ActorType4FindEj
.extern _ZN9SysObjectdlEPv
diff --git a/asm/ov04.s b/asm/ov04.s
index f8aee019..5b66ffcb 100644
--- a/asm/ov04.s
+++ b/asm/ov04.s
@@ -3141,7 +3141,7 @@ func_ov04_02102264: ; 0x02102264
beq _021022fc
ldr r1, [r5]
add r0, sp, #0x18
- blx _ZN6Course18func_ov00_0207cb7cEiPS_i
+ blx _ZN6Course14FindMapGridPosEP5Vec2bPS_j
add r0, sp, #0x18
ldrb r2, [r0]
ldr r1, [r5]
@@ -23699,7 +23699,7 @@ _0210c218:
add r0, sp, #8
add r1, r4, #0
add r2, r6, #0
- blx _ZN6Course18func_ov00_0207cb7cEiPS_i
+ blx _ZN6Course14FindMapGridPosEP5Vec2bPS_j
strb r6, [r5, #0x13]
add r0, sp, #8
ldrb r1, [r0, #1]
@@ -23719,7 +23719,7 @@ _0210c218:
add r0, r4, #0
add r1, r6, #0
add r3, sp
- blx _ZN6Course18func_ov00_0207ce20Eiiii
+ blx _ZN6Course18func_ov00_0207ce20EiiPci
add r0, r5, #0
ldr r2, [r0]
ldr r1, _0210c3e4 ; =0x000004c0
@@ -23733,7 +23733,7 @@ _0210c218:
add r0, r4, #0
add r1, r6, #0
add r3, sp
- blx _ZN6Course18func_ov00_0207ce20Eiiii
+ blx _ZN6Course18func_ov00_0207ce20EiiPci
ldr r0, _0210c3ec ; =data_027e0f6c
ldr r1, _0210c3e8 ; =0x00000440
ldr r0, [r0]
@@ -23750,7 +23750,7 @@ _0210c218:
add r0, r4, #0
add r1, r6, #0
add r3, sp
- blx _ZN6Course18func_ov00_0207ce20Eiiii
+ blx _ZN6Course18func_ov00_0207ce20EiiPci
mov r0, #0
str r0, [sp, #0xc]
ldr r0, _0210c3d8 ; =0x00000540
@@ -23773,7 +23773,7 @@ _0210c218:
add r0, r4, #0
add r1, r6, #0
mov r2, #1
- blx _ZN6Course18func_ov00_0207ca78Ev
+ blx _ZN6Course18func_ov00_0207ca78Eici
add r0, r5, #0
ldr r1, [r0]
ldr r1, [r1, #0x14]
@@ -23802,7 +23802,7 @@ _0210c342:
add r0, r4, #0
add r1, r6, #0
add r3, sp
- blx _ZN6Course18func_ov00_0207ce20Eiiii
+ blx _ZN6Course18func_ov00_0207ce20EiiPci
ldr r0, _0210c3f0 ; =data_027e103c
ldr r1, _0210c3d8 ; =0x00000540
ldr r0, [r0]
@@ -23906,7 +23906,7 @@ func_ov04_0210c3fc: ; 0x0210c3fc
ldr r2, [r5, #0x24]
add r0, r6, #0
add r3, sp, #0x2c
- blx _ZN6Course18func_ov00_0207ce20Eiiii
+ blx _ZN6Course18func_ov00_0207ce20EiiPci
mov r2, #0
ldr r0, _0210c4f8 ; =data_02057878
str r2, [sp, #0x20]
@@ -23927,7 +23927,7 @@ func_ov04_0210c3fc: ; 0x0210c3fc
ldr r2, [r5, #0x24]
add r0, r6, #0
add r3, sp, #0x6c
- blx _ZN6Course18func_ov00_0207ce20Eiiii
+ blx _ZN6Course18func_ov00_0207ce20EiiPci
mov r1, #0
ldr r0, _0210c4f8 ; =data_02057878
str r1, [sp, #0xc]
@@ -24922,7 +24922,7 @@ func_ov04_0210cc20: ; 0x0210cc20
ldrb r1, [r4, #0x13]
ldr r2, [r4, #0x24]
add r3, sp, #0x10
- blx _ZN6Course18func_ov00_0207ce20Eiiii
+ blx _ZN6Course18func_ov00_0207ce20EiiPci
mov r0, #0
str r0, [sp, #0xc]
add r0, sp, #0x10
@@ -24951,7 +24951,7 @@ func_ov04_0210cc58: ; 0x0210cc58
bne _0210cc72
add r0, r1, #0
add r1, r2, #0
- blx _ZN6Course18func_ov00_0207d7a4Ev
+ blx _ZN6Course14Find_Unk_cc_0cEi
add r1, r0, #0
ldr r0, _0210cc78 ; =gOverlayManager
bl func_ov03_020faa64
@@ -29104,7 +29104,7 @@ func_ov04_0210f07c: ; 0x0210f07c
ldrb r1, [r4]
cmp r1, #0xff
beq _0210f0f4
- blx _ZN6Course18func_ov00_0207d9ccEi
+ blx _ZN6Course11Find_Unk_ccEj
cmp r0, #0
bne _0210f0f4
ldr r1, _0210f0f8 ; =data_027e0ce0
@@ -29296,20 +29296,20 @@ _0210f1ea:
add r0, #2
add r1, r5, #0
add r2, r7, #0
- blx _ZN6Course18func_ov00_0207cb7cEiPS_i
+ blx _ZN6Course14FindMapGridPosEP5Vec2bPS_j
add r0, sp, #0x18
ldrb r0, [r0, #2]
add r1, r5, #0
add r2, r7, #0
str r0, [sp, #4]
add r0, sp, #0x18
- blx _ZN6Course18func_ov00_0207cb7cEiPS_i
+ blx _ZN6Course14FindMapGridPosEP5Vec2bPS_j
add r0, sp, #0x18
ldrb r0, [r0, #1]
add r1, r7, #0
str r0, [sp]
add r0, r5, #0
- blx _ZN6Course18func_ov00_0207d4e4Ei
+ blx _ZN6Course15IsMapInMainGridEj
cmp r0, #0
beq _0210f284
add r1, r5, #0
diff --git a/asm/ov15.inc b/asm/ov15.inc
index d30b0cfd..9dc863fd 100644
--- a/asm/ov15.inc
+++ b/asm/ov15.inc
@@ -419,11 +419,11 @@
.extern func_ov00_0207c444
.extern func_ov00_0207c474
.extern func_ov00_0207c518
-.extern _ZN6Course18func_ov00_0207ca78Ev
-.extern _ZN6Course18func_ov00_0207cb7cEiPS_i
-.extern _ZN6Course18func_ov00_0207ce20Eiiii
-.extern _ZN6Course18func_ov00_0207d634Ei
-.extern _ZN6Course18func_ov00_0207d6ecEv
+.extern _ZN6Course18func_ov00_0207ca78Eici
+.extern _ZN6Course14FindMapGridPosEP5Vec2bPS_j
+.extern _ZN6Course18func_ov00_0207ce20EiiPci
+.extern _ZN6Course23IsAdjacentMapOnMainGridEi
+.extern _ZN6Course14GetAdjacentMapEi
.extern _ZN6Course18func_ov00_0207d7bcEv
.extern func_ov00_0207da38
.extern func_ov00_0207dce4
diff --git a/asm/ov15.s b/asm/ov15.s
index f59f499c..e0c51a1e 100644
--- a/asm/ov15.s
+++ b/asm/ov15.s
@@ -11705,7 +11705,7 @@ _02129058:
add r0, sp, #8
mov r1, r4
mov r2, r6
- bl _ZN6Course18func_ov00_0207cb7cEiPS_i
+ bl _ZN6Course14FindMapGridPosEP5Vec2bPS_j
strb r6, [r7, #0x13]
ldrb r3, [sp, #9]
ldrb r2, [sp, #8]
@@ -11724,7 +11724,7 @@ _02129058:
mov r0, r4
mov r1, r6
add r3, r3, #0xa8
- bl _ZN6Course18func_ov00_0207ce20Eiiii
+ bl _ZN6Course18func_ov00_0207ce20EiiPci
mov r0, #0
str r0, [sp, #0xc]
add r0, sp, #0x400
@@ -11749,7 +11749,7 @@ _02129058:
mov r0, r4
mov r1, r6
add r3, sp, #0x10
- bl _ZN6Course18func_ov00_0207ce20Eiiii
+ bl _ZN6Course18func_ov00_0207ce20EiiPci
ldr r0, _0212923c ; =data_027e0f6c
add r1, sp, #0x10
ldr r0, [r0]
@@ -11761,7 +11761,7 @@ _02129058:
mov r0, r4
mov r1, r6
mov r2, #1
- bl _ZN6Course18func_ov00_0207ca78Ev
+ bl _ZN6Course18func_ov00_0207ca78Eici
mov r0, r7
ldr r1, [r0]
ldr r1, [r1, #0x14]
@@ -11773,7 +11773,7 @@ _02129058:
mov r1, r6
mov r0, r4
add r3, r3, #0xa8
- bl _ZN6Course18func_ov00_0207ce20Eiiii
+ bl _ZN6Course18func_ov00_0207ce20EiiPci
ldr r0, _02129240 ; =data_027e103c
add r1, sp, #0x400
ldr r0, [r0]
@@ -11869,7 +11869,7 @@ func_ov15_0212925c: ; 0x0212925c
_02129300:
mov r0, r8
mov r1, r7
- bl _ZN6Course18func_ov00_0207d634Ei
+ bl _ZN6Course23IsAdjacentMapOnMainGridEi
cmp r0, #0
beq _021296ac
ldr r1, _021296c4 ; =data_027e0ce0
@@ -11895,7 +11895,7 @@ _0212935c:
str r0, [r1, #0x188]
mov r0, r8
mov r1, r7
- bl _ZN6Course18func_ov00_0207d6ecEv
+ bl _ZN6Course14GetAdjacentMapEi
mov r1, #0
str r1, [sp, #0x10]
mov r1, #0x47
@@ -11922,7 +11922,7 @@ _0212935c:
str r0, [sp, #0x18]
mov r0, r8
mov r1, r7
- bl _ZN6Course18func_ov00_0207d634Ei
+ bl _ZN6Course23IsAdjacentMapOnMainGridEi
cmp r0, #0
beq _021293f8
mov r0, r9
@@ -12044,7 +12044,7 @@ _0212953c:
_02129598:
mov r0, r8
mov r1, r7
- bl _ZN6Course18func_ov00_0207d634Ei
+ bl _ZN6Course23IsAdjacentMapOnMainGridEi
cmp r0, #0
beq _021295ec
mov r0, r9
@@ -12096,7 +12096,7 @@ _0212960c:
bl func_ov00_02093a5c
mov r0, r8
mov r1, r7
- bl _ZN6Course18func_ov00_0207d634Ei
+ bl _ZN6Course23IsAdjacentMapOnMainGridEi
cmp r0, #0
beq _0212969c
mov r0, r9
diff --git a/asm/ov18.inc b/asm/ov18.inc
index db3b770b..816f19af 100644
--- a/asm/ov18.inc
+++ b/asm/ov18.inc
@@ -231,8 +231,8 @@
.extern func_ov00_0207c2e8
.extern func_ov00_0207c444
.extern func_ov00_0207c474
-.extern _ZN6Course18func_ov00_0207d634Ei
-.extern _ZN6Course18func_ov00_0207d6ecEv
+.extern _ZN6Course23IsAdjacentMapOnMainGridEi
+.extern _ZN6Course14GetAdjacentMapEi
.extern func_ov00_0207da38
.extern func_ov00_0207ddf4
.extern func_ov00_0207e060
diff --git a/asm/ov18.s b/asm/ov18.s
index 97efd237..6bbccabc 100644
--- a/asm/ov18.s
+++ b/asm/ov18.s
@@ -345,7 +345,7 @@ func_ov18_0215b86c: ; 0x0215b86c
_0215b934:
mov r0, r8
mov r1, r7
- bl _ZN6Course18func_ov00_0207d634Ei
+ bl _ZN6Course23IsAdjacentMapOnMainGridEi
cmp r0, #0
beq _0215bd54
ldr r1, _0215bd74 ; =data_027e0ce0
@@ -371,7 +371,7 @@ _0215b990:
str r0, [r1, #0x190]
mov r0, r8
mov r1, r7
- bl _ZN6Course18func_ov00_0207d6ecEv
+ bl _ZN6Course14GetAdjacentMapEi
mov r1, #0
str r1, [sp, #0xc]
mov r1, #0x47
diff --git a/asm/ov20.inc b/asm/ov20.inc
index 5f5a1e50..5fc86e7f 100644
--- a/asm/ov20.inc
+++ b/asm/ov20.inc
@@ -1,6 +1,14 @@
#pragma once
.extern Approach_thunk
.extern Divide
+.extern _ZN10MapManager16MapData_vfunc_68Ev
+.extern _ZN10MapManager18Get_MapData_Unk_d0Ev
+.extern _ZN10MapManager18Get_MapData_Unk_d8Ev
+.extern _ZN10MapManager18func_ov00_020836bcEjPi
+.extern _ZN10MapManager18func_ov00_02083770Eji
+.extern _ZN10MapManager18func_ov00_02083a1cEiPS_P5Vec3p
+.extern _ZN10MapManager18func_ov00_02083c7cEP5Vec3pi
+.extern _ZN10MapManager18func_ov00_02083f44EP5Vec3p
.extern _ZN10PlayerBase10SetVisibleEb
.extern _ZN11ItemManager7AddItemEi
.extern _ZN12ActorManager12FilterActorsEP15ActorFilterBaseP9ActorList
@@ -11,6 +19,13 @@
.extern _ZN13LinkStateBase18func_ov00_020a8a4cEii
.extern _ZN13LinkStateBase18func_ov00_020a8d40Ev
.extern _ZN13LinkStateBase20GetPlayerControlDataEv
+.extern _ZN14AdventureFlags18func_Ov00_02097810Ei
+.extern _ZN14AdventureFlags18func_ov00_02097968Ei
+.extern _ZN14AdventureFlags18func_ov00_02097b9cEv
+.extern _ZN14AdventureFlags18func_ov00_02097bccEv
+.extern _ZN14AdventureFlags18func_ov00_0209809cEv
+.extern _ZN14AdventureFlags3GetEj
+.extern _ZN14AdventureFlags3SetEjb
.extern _ZN5Actor10GetAngleToEP5Vec3p
.extern _ZN5Actor10SetUnk_11bEv
.extern _ZN5Actor11SetVelocityEP5Vec3p
@@ -77,9 +92,12 @@
.extern _ZN5Actor9GetHitboxEP8Cylinder
.extern _ZN5ActorC2Ev
.extern _ZN5ActorD2Ev
+.extern _ZN9ActorTypeC1EjPFP5ActorvEPv
+.extern _ZN9ActorTypeD1Ev
.extern _ZN9SysObjectdlEPv
.extern _ZN9SysObjectnwEmPjj
.extern _ZNK11ItemManager19GetActiveFairyLevelEi
+.extern __register_global_object
.extern data_02050f54
.extern data_02056be4
.extern data_027e0764
@@ -89,7 +107,6 @@
.extern data_027e0d78
.extern data_027e0de4
.extern data_027e0e58
-.extern gMapManager
.extern data_027e0f64
.extern data_027e0f68
.extern data_027e0f84
@@ -146,14 +163,11 @@
.extern func_02036770
.extern func_02036edc
.extern func_020370d0
-.extern _ZN9ActorTypeC1EjPFP5ActorvEPv
-.extern _ZN9ActorTypeD1Ev
.extern func_0203eba8
.extern func_0203ebc8
.extern func_02042f68
.extern func_0204f614
.extern func_0204f754
-.extern __register_global_object
.extern func_ov00_02079e68
.extern func_ov00_02079eb4
.extern func_ov00_0207a1c8
@@ -167,14 +181,6 @@
.extern func_ov00_0207c444
.extern func_ov00_0207c474
.extern func_ov00_02081f4c
-.extern _ZN10MapManager18Get_MapData_Unk_d0Ev
-.extern _ZN10MapManager18Get_MapData_Unk_d8Ev
-.extern _ZN10MapManager18func_ov00_020836bcEjPi
-.extern _ZN10MapManager18func_ov00_02083770Eji
-.extern _ZN10MapManager18func_ov00_02083a1cEiPS_P5Vec3p
-.extern _ZN10MapManager18func_ov00_02083c7cEP5Vec3pi
-.extern _ZN10MapManager16MapData_vfunc_68Ev
-.extern _ZN10MapManager18func_ov00_02083f44EP5Vec3p
.extern func_ov00_02087d34
.extern func_ov00_02087d84
.extern func_ov00_02088000
@@ -218,13 +224,6 @@
.extern func_ov00_0208ccdc
.extern func_ov00_0208cd0c
.extern func_ov00_02094824
-.extern _ZN14AdventureFlags3GetEj
-.extern _ZN14AdventureFlags3SetEjb
-.extern _ZN14AdventureFlags18func_Ov00_02097810Ei
-.extern _ZN14AdventureFlags18func_ov00_02097968Ei
-.extern _ZN14AdventureFlags18func_ov00_02097b9cEv
-.extern _ZN14AdventureFlags18func_ov00_02097bccEv
-.extern _ZN14AdventureFlags18func_ov00_0209809cEv
.extern func_ov00_0209a4f4
.extern func_ov00_0209a508
.extern func_ov00_020a61ac
@@ -426,4 +425,5 @@
.extern func_ov17_021687f0
.extern gAdventureFlags
.extern gItemManager
+.extern gMapManager
.extern strncpy
diff --git a/asm/ov28.inc b/asm/ov28.inc
index 4f9adee9..a585d5dc 100644
--- a/asm/ov28.inc
+++ b/asm/ov28.inc
@@ -102,7 +102,6 @@
.extern data_027e0c68
.extern data_027e0ce0
.extern data_027e0e58
-.extern gMapManager
.extern data_027e0f64
.extern data_027e0f68
.extern data_027e0f6c
@@ -401,6 +400,7 @@
.extern func_ov14_0214aa2c
.extern gAdventureFlags
.extern gItemManager
+.extern gMapManager
.extern gOverlayManager
.extern strcat
.extern strcpy
diff --git a/asm/ov32.inc b/asm/ov32.inc
index cfd6bb1b..28d66cbe 100644
--- a/asm/ov32.inc
+++ b/asm/ov32.inc
@@ -90,7 +90,6 @@
.extern data_027e0d78
.extern data_027e0e58
.extern data_027e0e5c
-.extern gMapManager
.extern data_027e0f64
.extern data_027e0f68
.extern data_027e0f6c
@@ -347,4 +346,5 @@
.extern func_ov14_0213b984
.extern func_ov14_0213d480
.extern gAdventureFlags
+.extern gMapManager
.extern strncpy
diff --git a/asm/ov38.inc b/asm/ov38.inc
index 72eaa4fb..8ef6b033 100644
--- a/asm/ov38.inc
+++ b/asm/ov38.inc
@@ -1,6 +1,8 @@
#pragma once
.extern Approach_thunk
.extern Divide
+.extern _ZN10MapManager18func_ov00_02084b38Eiii
+.extern _ZN10MapManager18func_ov00_02084be0Eii
.extern _ZN12ActorManager15FindActorByTypeEP8ActorRefPS_j
.extern _ZN12ActorManager8GetActorEP8ActorRef
.extern _ZN14AdventureFlags18func_Ov00_02097810Ei
@@ -60,6 +62,8 @@
.extern _ZN5Actor9GetHitboxEP8Cylinder
.extern _ZN5ActorC2Ev
.extern _ZN5ActorD2Ev
+.extern _ZN9ActorTypeC1EjPFP5ActorvEPv
+.extern _ZN9ActorTypeD1Ev
.extern _ZN9SysObjectdlEPv
.extern _ZN9SysObjectnwEmPjj
.extern __register_global_object
@@ -75,7 +79,6 @@
.extern data_027e0d0c
.extern data_027e0e58
.extern data_027e0e5c
-.extern gMapManager
.extern data_027e0f64
.extern data_027e0f6c
.extern data_027e0f94
@@ -152,8 +155,6 @@
.extern func_0202e58c
.extern func_02036770
.extern func_02036ce4
-.extern _ZN9ActorTypeC1EjPFP5ActorvEPv
-.extern _ZN9ActorTypeD1Ev
.extern func_0204f614
.extern func_0204f754
.extern func_ov00_0207a1c8
@@ -162,8 +163,6 @@
.extern func_ov00_0207c358
.extern func_ov00_0207c444
.extern func_ov00_0207c7e8
-.extern _ZN10MapManager18func_ov00_02084b38Eiii
-.extern _ZN10MapManager18func_ov00_02084be0Eii
.extern func_ov00_02087d34
.extern func_ov00_02087d84
.extern func_ov00_02088000
@@ -273,4 +272,5 @@
.extern func_ov57_02199e24
.extern gAdventureFlags
.extern gItemManager
+.extern gMapManager
.extern strcpy
diff --git a/asm/ov52.inc b/asm/ov52.inc
index 31f5743a..68329ec3 100644
--- a/asm/ov52.inc
+++ b/asm/ov52.inc
@@ -73,7 +73,6 @@
.extern data_027e0ce0
.extern data_027e0d3c
.extern data_027e0e58
-.extern gMapManager
.extern data_027e0f68
.extern data_027e0f78
.extern data_027e0fa0
@@ -208,5 +207,6 @@
.extern func_ov14_0214a92c
.extern func_ov14_0214aa0c
.extern gAdventureFlags
+.extern gMapManager
.extern gOverlayManager
.extern strcpy
diff --git a/include/Map/Course.hpp b/include/Map/Course.hpp
index 3b51529b..917a5d09 100644
--- a/include/Map/Course.hpp
+++ b/include/Map/Course.hpp
@@ -3,6 +3,8 @@
#include "global.h"
#include "types.h"
+#include "Map/Course_Unk_c8.hpp"
+#include "Map/Course_Unk_cc.hpp"
#include "Physics/AABB.hpp"
#include "System/SysNew.hpp"
@@ -27,21 +29,18 @@ class Course : public SysObject {
/* 004 */ CourseType mType;
/* 008 */ unk32 mUnk_008;
/* 00c */ char mName[0x10];
- /* 01c */ unk8 mUnk_01c;
- /* 01d */ unk8 mUnk_01d;
+ /* 01c */ Vec2b mCurrMapPos; // position in the map grid
/* 01e */ unk8 mUnk_01e;
/* 01f */ unk8 mUnk_01f;
- /* 020 */ unk8 mUnk_020[10][10];
- /* 084 */ s8 mUnk_084;
- /* 084 */ s8 mUnk_085;
- /* 084 */ s8 mUnk_086;
- /* 084 */ s8 mUnk_087;
- /* 088 */ unk32 mUnk_088;
- /* 08c */ unk32 mUnk_08c;
+ /* 020 */ unk8 mMapGrid[10][10];
+ /* 084 */ Vec2b mMainGrid; // part of the grid where you can walk off screen to another map
+ /* 086 */ Vec2b mMainGridSize;
+ /* 088 */ s32 mScreenMapOffsetX;
+ /* 08c */ s32 mScreenMapOffsetY;
/* 090 */ unk32 mUnk_090;
/* 094 */ unk32 mUnk_094;
/* 098 */ AABB mBounds;
- /* 0b0 */ s8 mUnk_0b0;
+ /* 0b0 */ s8 mNumMaps;
/* 0b1 */ unk8 mUnk_0b1;
/* 0b2 */ unk8 mUnk_0b2;
/* 0b3 */ unk8 mUnk_0b3;
@@ -50,64 +49,64 @@ class Course : public SysObject {
/* 0bc */ unk32 mUnk_0bc;
/* 0c0 */ unk32 mUnk_0c0;
/* 0c4 */ unk32 mUnk_0c4;
- /* 0c8 */ void *mUnk_0c8;
- /* 0cc */ unk32 mUnk_0cc[100];
+ /* 0c8 */ Course_Unk_c8 *mUnk_0c8;
+ /* 0cc */ Course_Unk_cc *mUnk_0cc[100];
/* 25c */ bool mUnk_25c;
/* 25d */ bool mBlueWarpOpen;
/* 25e */ unk8 mUnk_25e;
/* 25f */ unk8 mUnk_25f;
/* 260 */ unk32 mNumKeys;
- /* 264 */ unk32 mUnk_264;
- /* 268 */ unk32 mFlags; // knows which doors are open in a dungeon
+ /* 260 */ unk32 mFlags0[1];
+ /* 268 */ unk32 mFlags1[1]; // knows which doors are open in a dungeon
/* 26c */
- unk8 GetDungeonProgress(CourseProgress *param_2);
- unk8 func_ov00_0207ca28(unk32 param_2, unk32 param_3, unk32 param_4);
- char * SetCourseName(char *src);
- static unk8 func_ov00_0207ca78();
- bool func_ov00_0207caa8(unk32 param_2, unk32 param_3, unk32 param_4);
- unk32 func_ov00_0207cb30(unk32 param_2);
- static unk8 func_ov00_0207cb7c(unk32 param_1, Course *param_2, unk32 param_3);
- Vec3p * func_ov00_0207cbd8(unk32 param_2);
- void func_ov00_0207cbe8(unk32 param_2);
- unk8 func_ov00_0207cc24(unk32 param_2);
- unk32 func_ov00_0207cc6c();
+ void GetDungeonProgress(CourseProgress *param_2);
+ void func_ov00_0207ca28(s32 param_2, unk32 param_3, unk32 param_4);
+ char* SetCourseName(char *src);
+ void func_ov00_0207ca78(unk32 param_2, unk8 param_3, unk32 param_4);
+ bool func_ov00_0207caa8(s32 param_2, unk32 *param_3, unk8 *param_4);
+ unk32 func_ov00_0207cb30(s32 param_2);
+ static void FindMapGridPos(Vec2b *pos, Course *param_2, u32 map);
+ Vec3p* Find_Unk_cc_14(unk32 param_2);
+ void func_ov00_0207cbe8(s32 param_2);
+ unk8 func_ov00_0207cc24(s32 param_2);
+ unk32 Find_Unk_cc_08();
void GetMCSFilePath(unk32 buf, s32 fileIndex, unk32 fileType);
void GetMRCFilePath(unk32 param_2, unk32 buf, unk32 param_4);
- unk8 func_ov00_0207ce20(unk32 param_2, unk32 param_3, unk32 param_4, unk32 param_5);
- static unk8 func_ov00_0207ce4c(unk8 param_1, unk8 param_2, unk8 param_3, unk8 param_4, unk32 param_5, unk32 param_6);
- bool func_ov00_0207d404(unk32 param_2, unk32 param_3, unk32 param_4);
- bool func_ov00_0207d47c();
- bool func_ov00_0207d490(unk32 param_2, unk32 param_3);
- bool func_ov00_0207d4e4(unk32 param_2);
- bool func_ov00_0207d518(s32 param_2, s32 *param_3, s32 *param_4);
- unk8 func_ov00_0207d5c4();
- unk8 func_ov00_0207d5f0();
- unk8 func_ov00_0207d61c();
- unk8 GetUnk_c8_Unk_4();
- bool func_ov00_0207d634(unk32 param_2);
- unk8 func_ov00_0207d6ac(unk32 param_2, unk32 param_3);
- static unk8 func_ov00_0207d6ec();
- unk8 func_ov00_0207d738(unk32 param_2);
- unk8 func_ov00_0207d758(unk32 param_2);
- static unk8 func_ov00_0207d778();
- static unk8 func_ov00_0207d788();
- static unk8 func_ov00_0207d7a4();
+ void func_ov00_0207ce20(unk32 param_2, unk32 param_3, char *param_4, unk32 param_5);
+ void func_ov00_0207ce4c(s32 param_2, s32 param_3, unk32 param_4, char *param_5, unk32 param_6);
+ bool func_ov00_0207d404(s32 param_2, unk32 param_3, unk32 param_4);
+ bool IsCurrentMapInMainGrid();
+ bool IsInMainGrid(s32 x, s32 y);
+ bool IsMapInMainGrid(u32 map);
+ bool GetMapScreenPos(s32 map, s32 *x, s32 *y);
+ u32 GetScreenMapCellSizeX();
+ u32 GetScreenMapCellSizeY();
+ unk32 Get_Unk_c8_00();
+ unk32 Get_Unk_c8_04();
+ bool IsAdjacentMapOnMainGrid(unk32 dir);
+ bool HasGridMap(s32 x, s32 y);
+ unk8 GetAdjacentMap(unk32 dir);
+ u32 GetAdjacentMapX(s32 ir);
+ u32 GetAdjacentMapY(s32 dir);
+ u16 FindCurrent_Unk_cc_04();
+ u32 Find_Unk_cc_04(unk32 param_2);
+ unk32 Find_Unk_cc_0c(unk32 map);
void func_ov00_0207d7bc();
- unk8 func_ov00_0207d7dc(unk32 param_2, unk32 param_3);
- unk8 func_ov00_0207d828(unk32 param_2);
- unk8 func_ov00_0207d848(unk32 param_2, unk32 param_3);
- unk8 func_ov00_0207d894(unk32 param_2);
- static unk8 func_ov00_0207d8b4();
- bool func_ov00_0207d8d4(unk32 param_2);
- static unk8 func_ov00_0207d8ec();
- bool func_ov00_0207d90c(unk32 param_2);
- static unk8 func_ov00_0207d924();
- bool func_ov00_0207d944(unk32 param_2);
- static unk8 func_ov00_0207d95c();
+ void SetFlag0(u32 index, bool value);
+ bool GetFlag0(u32 index);
+ void SetFlag1(u32 index, bool value);
+ bool SetFlag1(u32 index);
+ void SetFlag0_Unk_cc(unk32 index, bool value);
+ bool GetFlag0_Unk_cc(unk32 param_2);
+ void SetFlag1_Unk_cc(unk32 param_2, bool param_3);
+ bool GetFlag1_Unk_cc(unk32 param_2);
+ void SetFlag2_Unk_cc(unk32 param_2, bool param_3);
+ bool GetFlag2_Unk_cc(unk32 param_2);
+ void SetFlag3_Unk_cc(unk32 param_2, bool param_3);
bool func_ov00_0207d97c(unk32 param_2);
- static unk8 func_ov00_0207d994();
- bool func_ov00_0207d9b4(unk32 param_2);
- unk32 func_ov00_0207d9cc(unk32 param_2);
- s32 func_ov00_0207da14();
+ void func_ov00_0207d994(unk32 param_2, unk32 param_3);
+ bool GetFlag3_Unk_cc(unk32 param_2);
+ Course_Unk_cc* Find_Unk_cc(u32 map);
+ Course_Unk_cc* FindCurrent_Unk_cc();
};
diff --git a/include/Map/Course_Unk_c8.hpp b/include/Map/Course_Unk_c8.hpp
new file mode 100644
index 00000000..317f2b70
--- /dev/null
+++ b/include/Map/Course_Unk_c8.hpp
@@ -0,0 +1,19 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+#include "System/SysNew.hpp"
+
+class Course_Unk_c8 : public SysObject {
+public:
+ /* 00 */ unk32 mUnk_00;
+ /* 04 */ unk32 mUnk_04;
+ /* 08 */ unk32 mUnk_08;
+ /* 0c */ unk8 mUnk_0c;
+ /* 0d */ unk8 mUnk_0d[3];
+ /* 10 */ void *mUnk_10;
+ /* 14 */ s32 mUnk_14;
+ /* 18 */ u32 mUnk_18;
+ /* 1c */
+};
diff --git a/include/Map/Course_Unk_cc.hpp b/include/Map/Course_Unk_cc.hpp
new file mode 100644
index 00000000..86504f6f
--- /dev/null
+++ b/include/Map/Course_Unk_cc.hpp
@@ -0,0 +1,28 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+#include "lib/math.h"
+
+#include "System/SysNew.hpp"
+
+class Course_Unk_cc : public SysObject {
+public:
+ /* 00 */ char mUnk_00;
+ /* 01 */ s8 mMap;
+ /* 02 */ unk16 mUnk_02;
+ /* 04 */ u16 mUnk_04;
+ /* 06 */ unk8 mUnk_06[2];
+ /* 08 */ unk32 mUnk_08;
+ /* 0c */ unk32 mUnk_0c;
+ /* 10 */ unk8 mUnk_10[4];
+ /* 14 */ Vec3p mUnk_14;
+ /* 20 */ unk32 mFlags0[1];
+ /* 24 */ unk32 mFlags1[8];
+ /* 44 */ unk32 mFlags2[2];
+ /* 4c */ unk32 mFlags3[1];
+ /* 50 */ unk32 mUnk_50;
+ /* 54 */ unk32 mUnk_54;
+ /* 58 */
+};
diff --git a/include/lib/math.h b/include/lib/math.h
index 8790c9f6..b601dc71 100644
--- a/include/lib/math.h
+++ b/include/lib/math.h
@@ -14,6 +14,12 @@ typedef s16 q4;
#define ROUND_Q20(n) (((s32)(n) + 0x800) >> 12)
typedef struct {
+ /* 0 */ s8 x;
+ /* 1 */ s8 y;
+ /* 2 */
+} Vec2b;
+
+typedef struct {
/* 0 */ q20 x;
/* 4 */ q20 y;
/* 8 */ q20 z;
diff --git a/src/00_Core/Map/Course.cpp b/src/00_Core/Map/Course.cpp
index 27a4fe96..28fe2330 100644
--- a/src/00_Core/Map/Course.cpp
+++ b/src/00_Core/Map/Course.cpp
@@ -2,54 +2,54 @@
#ifdef STUBS
-unk8 Course::GetDungeonProgress(CourseProgress *param_2) {}
-unk8 Course::func_ov00_0207ca28(unk32 param_2, unk32 param_3, unk32 param_4) {}
-char * Course::SetCourseName(char *src) {}
-unk8 Course::func_ov00_0207ca78() {}
-bool Course::func_ov00_0207caa8(unk32 param_2, unk32 param_3, unk32 param_4) {}
-unk32 Course::func_ov00_0207cb30(unk32 param_2) {}
-unk8 Course::func_ov00_0207cb7c(unk32 param_1, Course *param_2, unk32 param_3) {}
-Vec3p * Course::func_ov00_0207cbd8(unk32 param_2) {}
-void Course::func_ov00_0207cbe8(unk32 param_2) {}
-unk8 Course::func_ov00_0207cc24(unk32 param_2) {}
-unk32 Course::func_ov00_0207cc6c() {}
+void Course::GetDungeonProgress(CourseProgress *param_2) {}
+void Course::func_ov00_0207ca28(s32 param_2, unk32 param_3, unk32 param_4) {}
+char* Course::SetCourseName(char *src) {}
+void Course::func_ov00_0207ca78(unk32 param_2, unk8 param_3, unk32 param_4) {}
+bool Course::func_ov00_0207caa8(s32 param_2, unk32 *param_3, unk8 *param_4) {}
+unk32 Course::func_ov00_0207cb30(s32 param_2) {}
+void Course::FindMapGridPos(Vec2b *pos, Course *param_2, u32 map) {}
+Vec3p* Course::Find_Unk_cc_14(unk32 param_2) {}
+void Course::func_ov00_0207cbe8(s32 param_2) {}
+unk8 Course::func_ov00_0207cc24(s32 param_2) {}
+unk32 Course::Find_Unk_cc_08() {}
void Course::GetMCSFilePath(unk32 buf, s32 fileIndex, unk32 fileType) {}
void Course::GetMRCFilePath(unk32 param_2, unk32 buf, unk32 param_4) {}
-unk8 Course::func_ov00_0207ce20(unk32 param_2, unk32 param_3, unk32 param_4, unk32 param_5) {}
-unk8 Course::func_ov00_0207ce4c(unk8 param_1, unk8 param_2, unk8 param_3, unk8 param_4, unk32 param_5, unk32 param_6) {}
-bool Course::func_ov00_0207d404(unk32 param_2, unk32 param_3, unk32 param_4) {}
-bool Course::func_ov00_0207d47c() {}
-bool Course::func_ov00_0207d490(unk32 param_2, unk32 param_3) {}
-bool Course::func_ov00_0207d4e4(unk32 param_2) {}
-bool Course::func_ov00_0207d518(s32 param_2, s32 *param_3, s32 *param_4) {}
-unk8 Course::func_ov00_0207d5c4() {}
-unk8 Course::func_ov00_0207d5f0() {}
-unk8 Course::func_ov00_0207d61c() {}
-unk8 Course::GetUnk_c8_Unk_4() {}
-bool Course::func_ov00_0207d634(unk32 param_2) {}
-unk8 Course::func_ov00_0207d6ac(unk32 param_2, unk32 param_3) {}
-unk8 Course::func_ov00_0207d6ec() {}
-unk8 Course::func_ov00_0207d738(unk32 param_2) {}
-unk8 Course::func_ov00_0207d758(unk32 param_2) {}
-unk8 Course::func_ov00_0207d778() {}
-unk8 Course::func_ov00_0207d788() {}
-unk8 Course::func_ov00_0207d7a4() {}
+void Course::func_ov00_0207ce20(unk32 param_2, unk32 param_3, char *param_4, unk32 param_5) {}
+void Course::func_ov00_0207ce4c(s32 param_2, s32 param_3, unk32 param_4, char *param_5, unk32 param_6) {}
+bool Course::func_ov00_0207d404(s32 param_2, unk32 param_3, unk32 param_4) {}
+bool Course::IsCurrentMapInMainGrid() {}
+bool Course::IsInMainGrid(s32 x, s32 y) {}
+bool Course::IsMapInMainGrid(u32 map) {}
+bool Course::GetMapScreenPos(s32 map, s32 *x, s32 *y) {}
+u32 Course::GetScreenMapCellSizeX() {}
+u32 Course::GetScreenMapCellSizeY() {}
+unk32 Course::Get_Unk_c8_00() {}
+unk32 Course::Get_Unk_c8_04() {}
+bool Course::IsAdjacentMapOnMainGrid(unk32 dir) {}
+bool Course::HasGridMap(s32 x, s32 y) {}
+unk8 Course::GetAdjacentMap(unk32 dir) {}
+u32 Course::GetAdjacentMapX(s32 ir) {}
+u32 Course::GetAdjacentMapY(s32 dir) {}
+u16 Course::FindCurrent_Unk_cc_04() {}
+u32 Course::Find_Unk_cc_04(unk32 param_2) {}
+unk32 Course::Find_Unk_cc_0c(unk32 map) {}
void Course::func_ov00_0207d7bc() {}
-unk8 Course::func_ov00_0207d7dc(unk32 param_2, unk32 param_3) {}
-unk8 Course::func_ov00_0207d828(unk32 param_2) {}
-unk8 Course::func_ov00_0207d848(unk32 param_2, unk32 param_3) {}
-unk8 Course::func_ov00_0207d894(unk32 param_2) {}
-unk8 Course::func_ov00_0207d8b4() {}
-bool Course::func_ov00_0207d8d4(unk32 param_2) {}
-unk8 Course::func_ov00_0207d8ec() {}
-bool Course::func_ov00_0207d90c(unk32 param_2) {}
-unk8 Course::func_ov00_0207d924() {}
-bool Course::func_ov00_0207d944(unk32 param_2) {}
-unk8 Course::func_ov00_0207d95c() {}
+void Course::SetFlag0(u32 index, bool value) {}
+bool Course::GetFlag0(u32 index) {}
+void Course::SetFlag1(u32 index, bool value) {}
+bool Course::SetFlag1(u32 index) {}
+void Course::SetFlag0_Unk_cc(unk32 index, bool value) {}
+bool Course::GetFlag0_Unk_cc(unk32 param_2) {}
+void Course::SetFlag1_Unk_cc(unk32 param_2, bool param_3) {}
+bool Course::GetFlag1_Unk_cc(unk32 param_2) {}
+void Course::SetFlag2_Unk_cc(unk32 param_2, bool param_3) {}
+bool Course::GetFlag2_Unk_cc(unk32 param_2) {}
+void Course::SetFlag3_Unk_cc(unk32 param_2, bool param_3) {}
bool Course::func_ov00_0207d97c(unk32 param_2) {}
-unk8 Course::func_ov00_0207d994() {}
-bool Course::func_ov00_0207d9b4(unk32 param_2) {}
-unk32 Course::func_ov00_0207d9cc(unk32 param_2) {}
-s32 Course::func_ov00_0207da14() {}
+void Course::func_ov00_0207d994(unk32 param_2, unk32 param_3) {}
+bool Course::GetFlag3_Unk_cc(unk32 param_2) {}
+Course_Unk_cc* Course::Find_Unk_cc(u32 map) {}
+Course_Unk_cc* Course::FindCurrent_Unk_cc() {}
#endif