summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lsf2
-rw-r--r--arm9/asm/unk_020343A8.s481
-rw-r--r--arm9/asm/unk_02035068.s4
-rw-r--r--arm9/asm/unk_020372D4.s4
-rw-r--r--arm9/asm/unk_020476CC.s4
-rw-r--r--arm9/asm/unk_02048904.s6
-rw-r--r--arm9/asm/unk_0204A368.s6
-rw-r--r--arm9/asm/unk_0204A498.s8
-rw-r--r--arm9/asm/unk_0205CE48.s8
-rw-r--r--arm9/asm/unk_0205DD18.s2
-rw-r--r--arm9/asm/unk_0205F7A0.s4
-rw-r--r--arm9/asm/unk_0206367C.s2
-rw-r--r--arm9/asm/unk_02063948.s2
-rw-r--r--arm9/asm/unk_0207550C.s2
-rw-r--r--arm9/global.inc50
-rw-r--r--arm9/modules/05/asm/mod05_021D74E0.s4
-rw-r--r--arm9/modules/05/asm/mod05_021D80E8.s8
-rw-r--r--arm9/modules/05/asm/module_05.s20
-rw-r--r--arm9/modules/06/asm/module_06.s14
-rw-r--r--arm9/modules/07/asm/module_07.s2
-rw-r--r--arm9/modules/18/asm/module_18.s4
-rw-r--r--arm9/modules/42/asm/module_42.s4
-rw-r--r--arm9/modules/43/asm/module_43.s4
-rw-r--r--arm9/modules/66/asm/module_66.s8
-rw-r--r--arm9/src/map_header.c100
-rw-r--r--arm9/src/map_matrix.c231
-rw-r--r--include/map_header.h26
-rw-r--r--include/map_matrix.h54
28 files changed, 442 insertions, 622 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 8b49cc27..0153f5e3 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -140,7 +140,7 @@ Static arm9
Object unk_02033B68.o
Object unk_02033F50.o
Object wfc_user_info_warning.o
- Object unk_020343A8.o
+ Object map_matrix.o
Object map_header.o
Object unk_02034A28.o
Object unk_02034D7C.o
diff --git a/arm9/asm/unk_020343A8.s b/arm9/asm/unk_020343A8.s
deleted file mode 100644
index 38e95c4f..00000000
--- a/arm9/asm/unk_020343A8.s
+++ /dev/null
@@ -1,481 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_020343A8
-FUN_020343A8: ; 0x020343A8
- push {r4-r7, lr}
- sub sp, #0xc
- add r4, r0, #0x0
- str r2, [sp, #0x0]
- mov r2, #0x0
- strb r2, [r4, #0x1]
- mov r0, #0xe1
- ldr r7, _02034488 ; =0x0000070A
- ldr r6, _0203448C ; =0x00000A8E
- mov r12, r1
- strb r2, [r4, #0x0]
- add r3, r4, #0x0
- add r5, r2, #0x0
- lsl r0, r0, #0x2
-_020343C4:
- add r1, r4, r2
- strh r5, [r3, #0x2]
- strb r5, [r1, r7]
- strh r5, [r3, r6]
- add r2, r2, #0x1
- add r3, r3, #0x2
- cmp r2, r0
- blt _020343C4
- ldr r0, _02034490 ; =0x00001196
- mov r2, #0x0
-_020343D8:
- add r1, r4, r5
- add r5, r5, #0x1
- strb r2, [r1, r0]
- cmp r5, #0x10
- blt _020343D8
- mov r0, #0x29
- mov r1, r12
- mov r2, #0xb
- bl AllocAtEndAndReadWholeNarcMemberByIdPair
- add r6, r0, #0x0
- ldrb r0, [r6, #0x0]
- add r5, r6, #0x5
- strb r0, [r4, #0x1]
- ldrb r0, [r6, #0x1]
- strb r0, [r4, #0x0]
- ldrb r0, [r6, #0x2]
- str r0, [sp, #0x8]
- ldrb r0, [r6, #0x3]
- str r0, [sp, #0x4]
- ldrb r7, [r6, #0x4]
- cmp r7, #0x10
- bls _0203440A
- bl GF_AssertFail
-_0203440A:
- ldr r1, _02034490 ; =0x00001196
- add r0, r5, #0x0
- add r1, r4, r1
- add r2, r7, #0x0
- bl MI_CpuCopy8
- ldr r0, [sp, #0x8]
- add r5, r5, r7
- cmp r0, #0x0
- beq _0203443A
- ldrb r3, [r4, #0x1]
- ldrb r2, [r4, #0x0]
- add r0, r5, #0x0
- add r1, r4, #0x2
- mul r2, r3
- lsl r2, r2, #0x1
- bl MI_CpuCopy8
- ldrb r1, [r4, #0x1]
- ldrb r0, [r4, #0x0]
- mul r0, r1
- lsl r0, r0, #0x1
- add r5, r5, r0
- b _0203444E
-_0203443A:
- ldrb r3, [r4, #0x1]
- ldrb r2, [r4, #0x0]
- ldr r0, [sp, #0x0]
- add r1, r4, #0x2
- lsl r0, r0, #0x10
- mul r2, r3
- lsr r0, r0, #0x10
- lsl r2, r2, #0x1
- bl MIi_CpuClear16
-_0203444E:
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- beq _0203446C
- ldrb r3, [r4, #0x1]
- ldrb r2, [r4, #0x0]
- ldr r1, _02034488 ; =0x0000070A
- add r0, r5, #0x0
- add r1, r4, r1
- mul r2, r3
- bl MI_CpuCopy8
- ldrb r1, [r4, #0x1]
- ldrb r0, [r4, #0x0]
- mul r0, r1
- add r5, r5, r0
-_0203446C:
- ldrb r3, [r4, #0x1]
- ldrb r2, [r4, #0x0]
- ldr r1, _0203448C ; =0x00000A8E
- add r0, r5, #0x0
- mul r2, r3
- add r1, r4, r1
- lsl r2, r2, #0x1
- bl MI_CpuCopy8
- add r0, r6, #0x0
- bl FreeToHeap
- add sp, #0xc
- pop {r4-r7, pc}
- .balign 4
-_02034488: .word 0x0000070A
-_0203448C: .word 0x00000A8E
-_02034490: .word 0x00001196
-
- thumb_func_start FUN_02034494
-FUN_02034494: ; 0x02034494
- push {r3, lr}
- ldr r1, _020344A8 ; =0x000011AA
- mov r0, #0xb
- bl AllocFromHeap
- mov r1, #0x0
- strb r1, [r0, #0x0]
- strb r1, [r0, #0x1]
- strb r1, [r0, #0x2]
- pop {r3, pc}
- .balign 4
-_020344A8: .word 0x000011AA
-
- thumb_func_start FUN_020344AC
-FUN_020344AC: ; 0x020344AC
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- bl MapHeader_GetMatrixId
- add r6, r0, #0x0
- add r0, r4, #0x4
- add r1, r6, #0x0
- add r2, r5, #0x0
- bl FUN_020343A8
- strb r6, [r4, #0x2]
- ldrb r0, [r4, #0x4]
- strb r0, [r4, #0x1]
- ldrb r0, [r4, #0x5]
- strb r0, [r4, #0x0]
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_020344D0
-FUN_020344D0: ; 0x020344D0
- ldr r3, _020344D4 ; =FreeToHeap
- bx r3
- .balign 4
-_020344D4: .word FreeToHeap
-
- thumb_func_start FUN_020344D8
-FUN_020344D8: ; 0x020344D8
- push {r3-r5, lr}
- add r4, r1, #0x0
- add r5, r0, #0x0
- ldrb r1, [r4, #0x0]
- ldrb r0, [r4, #0x1]
- mul r0, r1
- cmp r5, r0
- blt _020344EC
- bl GF_AssertFail
-_020344EC:
- lsl r0, r5, #0x1
- add r1, r4, r0
- ldr r0, _020344F8 ; =0x00000A92
- ldrh r0, [r1, r0]
- pop {r3-r5, pc}
- nop
-_020344F8: .word 0x00000A92
-
- thumb_func_start FUN_020344FC
-FUN_020344FC: ; 0x020344FC
- push {r4, lr}
- add r4, r0, #0x0
- bne _02034506
- bl GF_AssertFail
-_02034506:
- ldrb r0, [r4, #0x0]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0203450C
-FUN_0203450C: ; 0x0203450C
- push {r4, lr}
- add r4, r0, #0x0
- bne _02034516
- bl GF_AssertFail
-_02034516:
- ldrb r0, [r4, #0x1]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0203451C
-FUN_0203451C: ; 0x0203451C
- push {r3-r7, lr}
- add r7, r0, #0x0
- ldrb r0, [r7, #0x1]
- add r5, r1, #0x0
- add r4, r2, #0x0
- ldrb r6, [r7, #0x0]
- str r0, [sp, #0x0]
- cmp r5, #0x0
- blt _02034532
- cmp r5, r6
- blt _02034536
-_02034532:
- bl GF_AssertFail
-_02034536:
- cmp r4, #0x0
- blt _02034540
- ldr r0, [sp, #0x0]
- cmp r4, r0
- blt _02034544
-_02034540:
- bl GF_AssertFail
-_02034544:
- add r0, r4, #0x0
- mul r0, r6
- add r0, r5, r0
- lsl r0, r0, #0x1
- add r0, r7, r0
- ldrh r0, [r0, #0x6]
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02034554
-FUN_02034554: ; 0x02034554
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- ldrb r1, [r5, #0x0]
- ldrb r0, [r5, #0x1]
- mul r0, r1
- cmp r4, #0x0
- blt _02034568
- cmp r4, r0
- blt _0203456C
-_02034568:
- bl GF_AssertFail
-_0203456C:
- lsl r0, r4, #0x1
- add r0, r5, r0
- ldrh r0, [r0, #0x6]
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02034574
-FUN_02034574: ; 0x02034574
- ldrb r0, [r0, #0x2]
- bx lr
-
- thumb_func_start FUN_02034578
-FUN_02034578: ; 0x02034578
- push {r4-r6, lr}
- add r5, r0, #0x0
- ldr r0, [sp, #0x10]
- add r4, r2, #0x0
- add r6, r3, #0x0
- cmp r4, r0
- blt _0203458A
- bl GF_AssertFail
-_0203458A:
- ldr r0, [sp, #0x10]
- mul r0, r6
- add r4, r4, r0
- mov r0, #0xe1
- lsl r0, r0, #0x2
- cmp r4, r0
- blt _0203459C
- bl GF_AssertFail
-_0203459C:
- ldr r0, _020345A4 ; =0x0000070E
- add r1, r5, r4
- ldrb r0, [r1, r0]
- pop {r4-r6, pc}
- .balign 4
-_020345A4: .word 0x0000070E
-
- thumb_func_start FUN_020345A8
-FUN_020345A8: ; 0x020345A8
- push {r3-r5, lr}
- ldr r1, _020345D8 ; =0x00000708
- add r4, r0, #0x0
- bl AllocFromHeap
- add r5, r0, #0x0
- mov r0, #0x29
- mov r1, #0x0
- add r2, r4, #0x0
- bl AllocAtEndAndReadWholeNarcMemberByIdPair
- add r4, r0, #0x0
- ldrb r1, [r4, #0x4]
- add r0, r4, #0x5
- ldr r2, _020345D8 ; =0x00000708
- add r0, r0, r1
- add r1, r5, #0x0
- bl MI_CpuCopy8
- add r0, r4, #0x0
- bl FreeToHeap
- add r0, r5, #0x0
- pop {r3-r5, pc}
- .balign 4
-_020345D8: .word 0x00000708
-
- thumb_func_start FUN_020345DC
-FUN_020345DC: ; 0x020345DC
- push {r4, lr}
- add r4, r0, #0x0
- bne _020345E6
- bl GF_AssertFail
-_020345E6:
- add r0, r4, #0x0
- bl FreeToHeap
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_020345F0
-FUN_020345F0: ; 0x020345F0
- mov r3, #0x1e
- mul r3, r2
- add r1, r1, r3
- lsl r1, r1, #0x1
- ldrh r0, [r0, r1]
- bx lr
-
- thumb_func_start FUN_020345FC
-FUN_020345FC: ; 0x020345FC
- push {r3-r5, lr}
- sub sp, #0x1fc
- sub sp, #0x1fc
- sub sp, #0x1fc
- sub sp, #0x1fc
- sub sp, #0x1fc
- sub sp, #0x1fc
- sub sp, #0x1fc
- sub sp, #0x1fc
- sub sp, #0x1c8
- add r3, r0, #0x0
- add r5, r1, #0x0
- lsl r1, r3, #0x10
- add r4, r2, #0x0
- add r0, sp, #0x0
- lsr r1, r1, #0x10
- mov r2, #0x0
- bl FUN_020343A8
- add r0, sp, #0x0
- ldrb r0, [r0, #0x1]
- cmp r5, r0
- blt _0203462E
- bl GF_AssertFail
-_0203462E:
- add r0, sp, #0x0
- ldrb r0, [r0, #0x0]
- cmp r4, r0
- blt _0203463A
- bl GF_AssertFail
-_0203463A:
- add r0, sp, #0x0
- ldrb r0, [r0, #0x1]
- mul r0, r4
- add r0, r5, r0
- lsl r1, r0, #0x1
- add r0, sp, #0x0
- add r0, #0x2
- ldrh r0, [r0, r1]
- add sp, #0x1fc
- add sp, #0x1fc
- add sp, #0x1fc
- add sp, #0x1fc
- add sp, #0x1fc
- add sp, #0x1fc
- add sp, #0x1fc
- add sp, #0x1fc
- add sp, #0x1c8
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02034660
-FUN_02034660: ; 0x02034660
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- bne _0203466C
- bl GF_AssertFail
-_0203466C:
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_020344D8
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02034678
-FUN_02034678: ; 0x02034678
- push {r4-r7}
- ldr r1, _020346C4 ; =0x00000A92
- ldrb r7, [r0, #0x0]
- add r2, r0, r1
- ldr r1, _020346C8 ; =0x0000070E
- add r1, r0, r1
- ldrb r0, [r0, #0x2]
- cmp r0, #0x0
- bne _020346BE
- mov r0, #0x15
- add r6, r7, #0x0
- mul r6, r0
- add r5, r6, #0x0
- add r5, #0x17
- mov r4, #0xb0
- lsl r0, r5, #0x1
- add r6, #0x18
- strh r4, [r2, r0]
- lsl r0, r6, #0x1
- strh r4, [r2, r0]
- mov r0, #0x16
- add r3, r7, #0x0
- mul r3, r0
- add r0, r3, #0x0
- add r0, #0x17
- lsl r7, r0, #0x1
- add r3, #0x18
- strh r4, [r2, r7]
- lsl r7, r3, #0x1
- strh r4, [r2, r7]
- mov r2, #0x2
- strb r2, [r1, r5]
- strb r2, [r1, r6]
- strb r2, [r1, r0]
- strb r2, [r1, r3]
-_020346BE:
- pop {r4-r7}
- bx lr
- nop
-_020346C4: .word 0x00000A92
-_020346C8: .word 0x0000070E
-
- thumb_func_start FUN_020346CC
-FUN_020346CC: ; 0x020346CC
- push {r3-r4}
- ldr r1, _0203470C ; =0x00000A92
- add r2, r0, r1
- ldrb r1, [r0, #0x0]
- ldrb r0, [r0, #0x2]
- cmp r0, #0x0
- bne _02034706
- mov r0, #0xf
- mul r0, r1
- add r0, #0x1c
- mov r3, #0x77
- lsl r0, r0, #0x1
- strh r3, [r2, r0]
- lsl r0, r1, #0x4
- add r3, r0, #0x0
- add r3, #0x1b
- mov r4, #0x78
- lsl r3, r3, #0x1
- strh r4, [r2, r3]
- add r3, r0, #0x0
- add r3, #0x1c
- add r0, r1, r0
- add r0, #0x1b
- mov r4, #0x79
- lsl r3, r3, #0x1
- strh r4, [r2, r3]
- mov r3, #0x7a
- lsl r0, r0, #0x1
- strh r3, [r2, r0]
-_02034706:
- pop {r3-r4}
- bx lr
- nop
-_0203470C: .word 0x00000A92
diff --git a/arm9/asm/unk_02035068.s b/arm9/asm/unk_02035068.s
index f2ef44dc..94c65983 100644
--- a/arm9/asm/unk_02035068.s
+++ b/arm9/asm/unk_02035068.s
@@ -341,7 +341,7 @@ _0203529A:
_020352AC:
ldr r0, [r5, #0x1c]
ldr r0, [r0, #0x0]
- bl FUN_020349CC
+ bl MapHeader_MapIsAmitySquare
cmp r0, #0x1
bne _020352BC
mov r0, #0x6
@@ -2145,7 +2145,7 @@ _02036170:
add r7, r0, #0x0
ldr r0, [r5, #0x1c]
ldr r0, [r0, #0x0]
- bl FUN_02034A04
+ bl MapHeader_GetMapEvolutionMethod
strh r0, [r7, #0x2]
mov r0, #0x0
strb r0, [r7, #0x1]
diff --git a/arm9/asm/unk_020372D4.s b/arm9/asm/unk_020372D4.s
index 88845239..42b6d930 100644
--- a/arm9/asm/unk_020372D4.s
+++ b/arm9/asm/unk_020372D4.s
@@ -227,7 +227,7 @@ FUN_02037400: ; 0x02037400
bl FUN_02034E30
bl FUN_02034DC0
str r0, [r4, #0x1c]
- bl FUN_02034494
+ bl MapMatrix_New
str r0, [r4, #0x28]
add r0, r4, #0x0
mov r1, #0xb
@@ -262,7 +262,7 @@ FUN_020374B0: ; 0x020374B0
bl OverlayManager_GetData
add r4, r0, #0x0
ldr r0, [r4, #0x28]
- bl FUN_020344D0
+ bl MapMatrix_Free
add r0, r4, #0x0
bl FUN_02034A48
add r0, r4, #0x0
diff --git a/arm9/asm/unk_020476CC.s b/arm9/asm/unk_020476CC.s
index be2b4770..cfbae230 100644
--- a/arm9/asm/unk_020476CC.s
+++ b/arm9/asm/unk_020476CC.s
@@ -536,7 +536,7 @@ FUN_02047A78: ; 0x02047A78
str r0, [r5, r1]
ldr r0, [r4, #0x1c]
ldr r0, [r0, #0x0]
- bl FUN_02034A04
+ bl MapHeader_GetMapEvolutionMethod
mov r1, #0x59
lsl r1, r1, #0x2
str r0, [r5, r1]
@@ -1161,7 +1161,7 @@ FUN_0204806C: ; 0x0204806C
add r6, r0, #0x0
ldr r0, [r4, #0x1c]
ldr r0, [r0, #0x0]
- bl MapHeader_GetField17_0
+ bl MapHeader_GetBattleBg
mov r1, #0x15
lsl r1, r1, #0x4
str r0, [r5, r1]
diff --git a/arm9/asm/unk_02048904.s b/arm9/asm/unk_02048904.s
index 597444e9..8cf0ee61 100644
--- a/arm9/asm/unk_02048904.s
+++ b/arm9/asm/unk_02048904.s
@@ -346,7 +346,7 @@ _02048BA2:
ldr r0, [r4, #0x1c]
ldr r1, [r4, #0x28]
ldr r0, [r0, #0x0]
- bl FUN_020344AC
+ bl MapMatrix_Load
ldr r0, [r4, #0xc]
bl SavArray_Flags_get
mov r1, #0x3
@@ -506,7 +506,7 @@ FUN_02048CDC: ; 0x02048CDC
add r4, r0, #0x0
ldr r0, [r4, #0x1c]
ldr r0, [r0, #0x0]
- bl FUN_020349E4
+ bl MapHeader_MapIsPokemonCenterSecondFloor
cmp r0, #0x0
beq _02048CFE
ldr r1, [r4, #0x1c]
@@ -860,7 +860,7 @@ FUN_02048FC8: ; 0x02048FC8
add r4, r0, #0x0
ldr r0, [r4, #0x1c]
ldr r0, [r0, #0x0]
- bl FUN_02034998
+ bl MapHeader_MapIsUnionRoom
cmp r0, #0x0
bne _02049000
add r0, r4, #0x0
diff --git a/arm9/asm/unk_0204A368.s b/arm9/asm/unk_0204A368.s
index 4b9f5a98..dee2d54b 100644
--- a/arm9/asm/unk_0204A368.s
+++ b/arm9/asm/unk_0204A368.s
@@ -56,10 +56,10 @@ FUN_0204A3B0: ; 0x0204A3B0
mov r2, #0x0
add r1, sp, #0x18
strb r2, [r1, #0x0]
- bl FUN_020344FC
+ bl MapMatrix_GetWidth
add r6, r0, #0x0
ldr r0, [sp, #0x4]
- bl FUN_0203450C
+ bl MapMatrix_GetHeight
str r0, [sp, #0x10]
mov r0, #0x0
str r0, [sp, #0x14]
@@ -77,7 +77,7 @@ _0204A3E0:
lsr r4, r0, #0x10
ldr r1, [sp, #0x4]
add r0, r4, #0x0
- bl FUN_020344D8
+ bl MapMatrix_GetMapData
add r1, sp, #0x18
add r1, #0x2
add r2, sp, #0x18
diff --git a/arm9/asm/unk_0204A498.s b/arm9/asm/unk_0204A498.s
index 3e0580b3..6b7e034d 100644
--- a/arm9/asm/unk_0204A498.s
+++ b/arm9/asm/unk_0204A498.s
@@ -39,7 +39,7 @@ FUN_0204A4A4: ; 0x0204A4A4
str r1, [sp, #0x4]
str r0, [sp, #0x8]
ldr r0, [r5, #0x28]
- bl FUN_020344FC
+ bl MapMatrix_GetWidth
str r0, [sp, #0x24]
lsl r0, r0, #0x5
str r0, [sp, #0xc]
@@ -247,7 +247,7 @@ FUN_0204A640: ; 0x0204A640
add r4, r2, #0x0
add r5, r1, #0x0
add r7, r3, #0x0
- bl FUN_020344FC
+ bl MapMatrix_GetWidth
asr r2, r4, #0x4
asr r1, r5, #0x4
lsr r2, r2, #0x1b
@@ -617,7 +617,7 @@ _0204A8D4:
add r4, r0, #0x0
ldr r0, [sp, #0x0]
ldr r0, [r0, #0x28]
- bl FUN_020344FC
+ bl MapMatrix_GetWidth
add r1, r0, #0x0
add r0, r4, #0x0
add r2, sp, #0x10
@@ -685,7 +685,7 @@ _0204A95C:
add r6, r0, #0x0
ldr r0, [sp, #0x0]
ldr r0, [r0, #0x28]
- bl FUN_020344FC
+ bl MapMatrix_GetWidth
add r1, r0, #0x0
add r0, r6, #0x0
add r2, sp, #0x10
diff --git a/arm9/asm/unk_0205CE48.s b/arm9/asm/unk_0205CE48.s
index ba92a404..ccff7b32 100644
--- a/arm9/asm/unk_0205CE48.s
+++ b/arm9/asm/unk_0205CE48.s
@@ -440,7 +440,7 @@ FUN_0205D170: ; 0x0205D170
pop {r3-r5, pc}
_0205D184:
ldr r0, [r5, #0x0]
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #0x0
bne _0205D194
mov r0, #0x0
@@ -1178,7 +1178,7 @@ _0205D730: .word 0x000022F6
FUN_0205D734: ; 0x0205D734
push {r3, lr}
ldr r0, [r0, #0x0]
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #0x0
beq _0205D744
mov r0, #0x0
@@ -1595,7 +1595,7 @@ _0205DA8E:
cmp r0, #0x1
bne _0205DAA6
ldr r0, [r4, #0x0]
- bl MapHeader_GetField17_6
+ bl MapHeader_IsEscapeRopeAllowed
cmp r0, #0x1
bne _0205DAA6
mov r0, #0x0
@@ -1675,7 +1675,7 @@ _0205DB1A:
pop {r3-r5, pc}
_0205DB30:
ldr r0, [r4, #0x0]
- bl FUN_020349D8
+ bl MapHeader_MapIsSpearPillar
cmp r0, #0x0
beq _0205DB3E
mov r0, #0x0
diff --git a/arm9/asm/unk_0205DD18.s b/arm9/asm/unk_0205DD18.s
index 5f01125f..b5431d9c 100644
--- a/arm9/asm/unk_0205DD18.s
+++ b/arm9/asm/unk_0205DD18.s
@@ -622,7 +622,7 @@ _0205E180:
ldr r0, [r7, #0x28]
asr r1, r1, #0x5
asr r2, r2, #0x5
- bl FUN_0203451C
+ bl MapMatrix_GetMapHeader
ldr r1, [r7, #0x1c]
ldr r1, [r1, #0x0]
cmp r1, r0
diff --git a/arm9/asm/unk_0205F7A0.s b/arm9/asm/unk_0205F7A0.s
index 60706108..67b26aea 100644
--- a/arm9/asm/unk_0205F7A0.s
+++ b/arm9/asm/unk_0205F7A0.s
@@ -54,8 +54,8 @@ FUN_0205F7A0: ; 0x0205F7A0
ldr r0, [r0, #0x28]
asr r1, r1, #0x5
asr r2, r2, #0x5
- bl FUN_0203451C
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapMatrix_GetMapHeader
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #0x0
beq _0205F806
str r4, [r5, #0x0]
diff --git a/arm9/asm/unk_0206367C.s b/arm9/asm/unk_0206367C.s
index b475c1e5..3a92648f 100644
--- a/arm9/asm/unk_0206367C.s
+++ b/arm9/asm/unk_0206367C.s
@@ -122,7 +122,7 @@ _0206377C:
_02063786:
ldr r0, [r5, #0x1c]
ldr r0, [r0, #0x0]
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #0x0
beq _020637A6
ldr r0, [r5, #0xc]
diff --git a/arm9/asm/unk_02063948.s b/arm9/asm/unk_02063948.s
index 1b2bc0a5..632e129d 100644
--- a/arm9/asm/unk_02063948.s
+++ b/arm9/asm/unk_02063948.s
@@ -1129,7 +1129,7 @@ _020641BE:
cmp r0, #0x1
bne _020641D2
ldr r0, [r4, #0x0]
- bl MapHeader_GetField17_6
+ bl MapHeader_IsEscapeRopeAllowed
cmp r0, #0x1
beq _020641D6
_020641D2:
diff --git a/arm9/asm/unk_0207550C.s b/arm9/asm/unk_0207550C.s
index ee3ba62f..0ad8aad2 100644
--- a/arm9/asm/unk_0207550C.s
+++ b/arm9/asm/unk_0207550C.s
@@ -2248,7 +2248,7 @@ _02076814:
ldr r0, [r0, #0x1c]
ldr r0, [r0, #0x1c]
ldr r0, [r0, #0x0]
- bl FUN_02034A04
+ bl MapHeader_GetMapEvolutionMethod
add r3, r0, #0x0
ldr r0, _02076878 ; =0x000005A4
lsl r3, r3, #0x10
diff --git a/arm9/global.inc b/arm9/global.inc
index 284d26bf..da12b3fd 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -2473,21 +2473,21 @@
.extern FUN_02033F20
.extern FUN_02033F70
.extern ShowWFCUserInfoWarning
-.extern FUN_02034494
-.extern FUN_020344AC
-.extern FUN_020344D0
-.extern FUN_020344D8
-.extern FUN_020344FC
-.extern FUN_0203450C
-.extern FUN_0203451C
-.extern FUN_02034554
-.extern FUN_02034574
-.extern FUN_02034578
-.extern FUN_020345A8
-.extern FUN_020345DC
-.extern FUN_020345F0
-.extern FUN_020345FC
-.extern FUN_02034660
+.extern MapMatrix_New
+.extern MapMatrix_Load
+.extern MapMatrix_Free
+.extern MapMatrix_GetMapData
+.extern MapMatrix_GetWidth
+.extern MapMatrix_GetHeight
+.extern MapMatrix_GetMapHeader
+.extern MapMatrix_GetMapHeaderFromID
+.extern MapMatrix_GetMatrixID
+.extern MapMatrix_GetMapAltitude
+.extern MapMatrix_MapData_New
+.extern MapMatrix_MapData_Free
+.extern MapMatrix_MapData_GetData
+.extern GetMapHeader
+.extern GetMapData
.extern FUN_02034678
.extern FUN_020346CC
.extern MapHeader_GetAreaDataBank
@@ -2504,23 +2504,23 @@
.extern MapHeader_GetMapSec
.extern MapHeader_GetWeatherType
.extern MapHeader_GetCameraType
-.extern MapHeader_GetField17_0
-.extern MapHeader_GetField17_6
+.extern MapHeader_GetBattleBg
+.extern MapHeader_IsEscapeRopeAllowed
.extern MapHeader_IsFlyAllowed
.extern MapHeader_IsBikeAllowed
.extern FUN_020348E4
-.extern MapHeader_MapIsOnOverworldMatrix
+.extern MapHeader_MapIsOnMainMatrix
.extern FUN_02034930
.extern FUN_02034944
.extern FUN_02034964
.extern FUN_02034984
-.extern FUN_02034998
-.extern FUN_020349AC
-.extern FUN_020349B8
-.extern FUN_020349CC
-.extern FUN_020349D8
-.extern FUN_020349E4
-.extern FUN_02034A04
+.extern MapHeader_MapIsUnionRoom
+.extern MapHeader_MapIsMtCoronetFeebasRoom
+.extern MapHeader_MapIsTrophyGarden
+.extern MapHeader_MapIsAmitySquare
+.extern MapHeader_MapIsSpearPillar
+.extern MapHeader_MapIsPokemonCenterSecondFloor
+.extern MapHeader_GetMapEvolutionMethod
.extern FUN_02034A28
.extern FUN_02034A48
.extern FUN_02034A60
diff --git a/arm9/modules/05/asm/mod05_021D74E0.s b/arm9/modules/05/asm/mod05_021D74E0.s
index 9cea7a32..1aad5cc7 100644
--- a/arm9/modules/05/asm/mod05_021D74E0.s
+++ b/arm9/modules/05/asm/mod05_021D74E0.s
@@ -424,7 +424,7 @@ MOD05_021D7894: ; 0x021D7894
asr r2, r1, #5
ldr r0, [r5, #0x28]
add r1, r4, #0
- bl FUN_0203451C
+ bl MapMatrix_GetMapHeader
add r4, r0, #0
ldr r0, [r5, #0x1c]
ldr r6, [r0]
@@ -542,7 +542,7 @@ MOD05_021D79B4: ; 0x021D79B4
add r5, r0, #0
ldr r0, [r5, #0x1c]
ldr r0, [r0]
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #0
beq _021D79FE
ldr r0, [r5, #0xc]
diff --git a/arm9/modules/05/asm/mod05_021D80E8.s b/arm9/modules/05/asm/mod05_021D80E8.s
index bda94277..7af8c0ec 100644
--- a/arm9/modules/05/asm/mod05_021D80E8.s
+++ b/arm9/modules/05/asm/mod05_021D80E8.s
@@ -2216,11 +2216,11 @@ MOD05_021D9290: ; 0x021D9290
beq _021D92DA
ldr r0, [r4, #0x1c]
ldr r0, [r0]
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #1
bne _021D931C
ldr r0, [sp, #8]
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #0
bne _021D931C
ldr r0, [r4, #0x38]
@@ -2246,11 +2246,11 @@ _021D92DA:
beq _021D931C
ldr r0, [r4, #0x1c]
ldr r0, [r0]
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #1
bne _021D931C
ldr r0, [sp, #8]
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #0
bne _021D931C
ldr r0, [r4, #0x38]
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s
index 0157aedb..36143bb3 100644
--- a/arm9/modules/05/asm/module_05.s
+++ b/arm9/modules/05/asm/module_05.s
@@ -11251,7 +11251,7 @@ MOD05_021EE114: ; 0x021EE114
cmp r0, r1
bge _021EE1D0
add r1, r2, #0
- bl FUN_02034660
+ bl GetMapData
add r1, r0, #0
ldr r0, _021EE1D4 ; =0x0000FFFF
cmp r1, r0
@@ -11356,7 +11356,7 @@ MOD05_021EE1E4: ; 0x021EE1E4
mul r3, r2
cmp r0, r3
bge _021EE286
- bl FUN_02034660
+ bl GetMapData
add r1, r0, #0
ldr r0, _021EE298 ; =0x0000FFFF
cmp r1, r0
@@ -11440,7 +11440,7 @@ MOD05_021EE2A4: ; 0x021EE2A4
cmp r1, r5
bge _021EE37A
add r1, r3, #0
- bl FUN_02034660
+ bl GetMapData
add r1, r0, #0
ldr r0, _021EE380 ; =0x0000FFFF
cmp r1, r0
@@ -11556,7 +11556,7 @@ MOD05_021EE38C: ; 0x021EE38C
cmp r1, r2
bge _021EE43E
add r1, r3, #0
- bl FUN_02034660
+ bl GetMapData
add r1, r0, #0
ldr r0, _021EE450 ; =0x0000FFFF
cmp r1, r0
@@ -13633,17 +13633,17 @@ MOD05_021EF300: ; 0x021EF300
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, r7, #0
- bl FUN_020344FC
+ bl MapMatrix_GetWidth
str r0, [sp, #8]
add r0, r7, #0
- bl FUN_02034574
+ bl MapMatrix_GetMatrixID
add r1, r0, #0
ldr r0, [sp, #8]
add r2, r6, #0
str r0, [sp]
add r0, r7, #0
add r3, r4, #0
- bl FUN_02034578
+ bl MapMatrix_GetMapAltitude
lsl r0, r0, #0xf
str r0, [r5, #4]
ldr r1, [r5]
@@ -13707,12 +13707,12 @@ _021EF3AE:
add r0, #0xbc
str r5, [r0]
add r0, r5, #0
- bl FUN_020344FC
+ bl MapMatrix_GetWidth
add r1, r4, #0
add r1, #0xc0
str r0, [r1]
add r0, r5, #0
- bl FUN_0203450C
+ bl MapMatrix_GetHeight
add r1, r4, #0
add r1, #0xc4
str r0, [r1]
@@ -25857,7 +25857,7 @@ MOD05_021F5068: ; 0x021F5068
ldr r0, [r5, #0x28]
add r7, r1, #0
add r1, r2, #0
- bl FUN_02034554
+ bl MapMatrix_GetMapHeaderFromID
bl MOD05_021F50FC
add r4, r0, #0
cmp r4, #0x15
diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s
index 0701bc8c..5567f4d2 100644
--- a/arm9/modules/06/asm/module_06.s
+++ b/arm9/modules/06/asm/module_06.s
@@ -4775,7 +4775,7 @@ MOD06_0223B9A8: ; 0x0223B9A8
ldr r0, [r0]
add r6, r2, #0
add r7, r3, #0
- bl FUN_020349B8
+ bl MapHeader_MapIsTrophyGarden
cmp r0, #0
beq _0223B9FC
add r1, sp, #0
@@ -5248,7 +5248,7 @@ _0223BD8A:
ldr r0, [sp, #8]
ldr r0, [r0, #0x1c]
ldr r0, [r0]
- bl FUN_020349AC
+ bl MapHeader_MapIsMtCoronetFeebasRoom
cmp r0, #0
beq _0223BDFC
ldr r0, [sp, #8]
@@ -23774,7 +23774,7 @@ MOD06_02245198: ; 0x02245198
lsl r2, r2, #0xb
lsr r1, r1, #0x10
lsr r2, r2, #0x10
- bl FUN_020345FC
+ bl GetMapHeader
b _022451D6
_022451BA:
cmp r5, #5
@@ -23790,7 +23790,7 @@ _022451C2:
ldr r0, [r0, #0x28]
lsr r1, r1, #5
lsr r2, r2, #5
- bl FUN_0203451C
+ bl MapMatrix_GetMapHeader
_022451D6:
lsl r3, r5, #2
add r1, r4, r3
@@ -38544,7 +38544,7 @@ MOD06_0224C27C: ; 0x0224C27C
strb r0, [r4, #0xe]
strb r0, [r4, #0xf]
ldr r0, [r5, #0x28]
- bl FUN_020344FC
+ bl MapMatrix_GetWidth
add r1, r0, #0
ldr r0, [sp]
add r2, sp, #0x14
@@ -39797,7 +39797,7 @@ _0224CC80:
add r2, sp, #0x14
bl FUN_020572B8
ldr r0, [r5, #0x28]
- bl FUN_020344FC
+ bl MapMatrix_GetWidth
str r0, [sp]
mov r0, #0
str r0, [sp, #4]
@@ -42943,7 +42943,7 @@ MOD06_0224E554: ; 0x0224E554
strb r0, [r4, #0xe]
strb r0, [r4, #0xf]
ldr r0, [r5, #0x28]
- bl FUN_020344FC
+ bl MapMatrix_GetWidth
add r1, r0, #0
ldr r0, [sp]
add r2, sp, #0x14
diff --git a/arm9/modules/07/asm/module_07.s b/arm9/modules/07/asm/module_07.s
index dbf02f8d..6e4f14c2 100644
--- a/arm9/modules/07/asm/module_07.s
+++ b/arm9/modules/07/asm/module_07.s
@@ -5037,7 +5037,7 @@ MOD07_02214720: ; 0x02214720
mov r0, #0x57
lsl r0, r0, #2
ldr r0, [r1, r0]
- bl FUN_02034998
+ bl MapHeader_MapIsUnionRoom
cmp r0, #1
bne _0221479C
mov r0, #1
diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s
index 074ed1e0..85c8a425 100644
--- a/arm9/modules/18/asm/module_18.s
+++ b/arm9/modules/18/asm/module_18.s
@@ -405,7 +405,7 @@ MOD18_02239994: ; 0x02239994
ldr r0, [r0]
ldr r0, [r0]
ldr r0, [r0, #0x28]
- bl FUN_020344FC
+ bl MapMatrix_GetWidth
sub r0, r0, #2
lsl r0, r0, #0x15
lsr r6, r0, #0x10
@@ -413,7 +413,7 @@ MOD18_02239994: ; 0x02239994
ldr r0, [r0]
ldr r0, [r0]
ldr r0, [r0, #0x28]
- bl FUN_0203450C
+ bl MapMatrix_GetHeight
sub r0, r0, #2
lsl r0, r0, #0x15
lsr r4, r0, #0x10
diff --git a/arm9/modules/42/asm/module_42.s b/arm9/modules/42/asm/module_42.s
index 9e502906..3a2eb2e3 100644
--- a/arm9/modules/42/asm/module_42.s
+++ b/arm9/modules/42/asm/module_42.s
@@ -139,7 +139,7 @@ _02254932:
add r6, r0, #0
ldr r0, [r4, #0x1c]
ldr r0, [r0]
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #0
beq _02254984
ldr r0, [r4, #0x1c]
@@ -527,7 +527,7 @@ MOD42_02254C04: ; 0x02254C04
add r6, r0, #0
ldr r0, [r4, #0x1c]
ldr r0, [r0]
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #0
beq _02254C3C
ldr r1, [r4, #0x1c]
diff --git a/arm9/modules/43/asm/module_43.s b/arm9/modules/43/asm/module_43.s
index 59f7e81d..cb9d4f4d 100644
--- a/arm9/modules/43/asm/module_43.s
+++ b/arm9/modules/43/asm/module_43.s
@@ -62,7 +62,7 @@ MOD43_0225489C: ; 0x0225489C
add r6, r0, #0
ldr r0, [r4, #0x1c]
ldr r0, [r0]
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #0
beq _022548E0
ldr r0, [r4, #0x1c]
@@ -395,7 +395,7 @@ MOD43_02254AF8: ; 0x02254AF8
add r7, r0, #0
ldr r0, [r4, #0x1c]
ldr r0, [r0]
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #0
beq _02254B36
ldr r1, [r4, #0x1c]
diff --git a/arm9/modules/66/asm/module_66.s b/arm9/modules/66/asm/module_66.s
index 95660bd2..ca8faeb0 100644
--- a/arm9/modules/66/asm/module_66.s
+++ b/arm9/modules/66/asm/module_66.s
@@ -259,7 +259,7 @@ _021D7694:
add r1, #0x88
str r0, [r1]
ldr r0, [r4, #4]
- bl FUN_020345A8
+ bl MapMatrix_MapData_New
str r0, [r4, #0x30]
ldr r0, _021D7744 ; =0x021D9AA0
ldr r1, [r4, #4]
@@ -345,7 +345,7 @@ _021D7782:
ldr r0, [r5, #0x40]
bl MOD66_021D9544
ldr r0, [r5, #0x30]
- bl FUN_020345DC
+ bl MapMatrix_MapData_Free
add r0, r5, #0
add r0, #0x88
ldr r0, [r0]
@@ -1648,7 +1648,7 @@ MOD66_021D818C: ; 0x021D818C
ldr r0, [r5, #0x30]
ldr r1, [r4, #0x18]
ldr r2, [r4, #0x1c]
- bl FUN_020345F0
+ bl MapMatrix_MapData_GetData
str r0, [r4, #0x20]
ldrh r3, [r5, #2]
ldr r0, [r5, #0x40]
@@ -1932,7 +1932,7 @@ MOD66_021D8380: ; 0x021D8380
ldr r0, [r6, #0x30]
ldr r1, [sp, #4]
add r2, r7, #0
- bl FUN_020345F0
+ bl MapMatrix_MapData_GetData
add r1, r5, #0
add r2, r0, #0
ldr r3, [sp, #4]
diff --git a/arm9/src/map_header.c b/arm9/src/map_header.c
index 644a590b..49f8e986 100644
--- a/arm9/src/map_header.c
+++ b/arm9/src/map_header.c
@@ -1,39 +1,55 @@
#include "global.h"
#include "map_header.h"
#include "constants/map_sections.h"
+#include "pokemon.h"
#pragma thumb on
// Static decls
u32 MapNumberBoundsCheck(u32 mapno);
-const u16 UNK_020EED54[] = {
- 0x01A5, 0x01AD, 0x01B4, 0x01BC, 0x01C5, 0x01CC, 0x0007, 0x0025,
- 0x0031, 0x01EF, 0x0046, 0x0066, 0x007C, 0x0087, 0x0098, 0x00A9,
- 0x00AE, 0x00BE
+static const u16 sPokemonCenterSecondFloorMaps[] = {
+ 421,
+ 429,
+ 436,
+ 444,
+ 453,
+ 460,
+ 7,
+ 37,
+ 49,
+ 495,
+ 70,
+ 102,
+ 124,
+ 135,
+ 152,
+ 169,
+ 174,
+ 190
};
-const u16 UNK_020EED78[] = {
- 0x0181, 0x001A,
- 0x00CB, 0x0019,
- 0x00CF, 0x0018,
- 0x00D0, 0x0018,
- 0x00D1, 0x0018,
- 0x00D2, 0x0018,
- 0x00D3, 0x0018,
- 0x00D4, 0x0018,
- 0x00D5, 0x0018,
- 0x00D6, 0x0018,
- 0x00D7, 0x0018,
- 0x00D8, 0x0018,
- 0x00D9, 0x0018,
- 0x00DA, 0x0018,
- 0x00DB, 0x0018,
- 0x00DC, 0x0018,
- 0x00DD, 0x0018,
+static const u16 sMapEvolutionMethods[] = {
+ 385, EVO_ROUTE217,
+ 203, EVO_ETERNA,
+ 207, EVO_CORONET,
+ 208, EVO_CORONET,
+ 209, EVO_CORONET,
+ 210, EVO_CORONET,
+ 211, EVO_CORONET,
+ 212, EVO_CORONET,
+ 213, EVO_CORONET,
+ 214, EVO_CORONET,
+ 215, EVO_CORONET,
+ 216, EVO_CORONET,
+ 217, EVO_CORONET,
+ 218, EVO_CORONET,
+ 219, EVO_CORONET,
+ 220, EVO_CORONET,
+ 221, EVO_CORONET,
};
-const struct MapHeader sMapHeaders[] = {
+static const struct MapHeader sMapHeaders[] = {
{ 0x0, 0x0, 0x0, 0x170, 0x33b, 0x12, 0x3e8, 0x3e8, 0xffff, 0x0, MAPSEC_MYSTERY_ZONE, 0x0, 0x0, 0x2, 3, TRUE, TRUE, TRUE, FALSE },
{ 0x0, 0x0, 0x0, 0x170, 0x33b, 0x12, 0x3e8, 0x3e8, 0xffff, 0x0, MAPSEC_MYSTERY_ZONE, 0x0, 0x0, 0x0, 3, FALSE, FALSE, FALSE, FALSE },
{ 0x2, 0x2, 0x2, 0x413, 0x3ca, 0x236, 0x424, 0x424, 0xffff, 0x1, MAPSEC_MYSTERY_ZONE, 0x0, 0x0, 0x6, 3, FALSE, FALSE, FALSE, FALSE },
@@ -694,16 +710,16 @@ u8 MapHeader_GetCameraType(u32 mapno)
return sMapHeaders[mapno].camera_type;
}
-u8 MapHeader_GetField17_0(u32 mapno)
+u8 MapHeader_GetBattleBg(u32 mapno)
{
mapno = MapNumberBoundsCheck(mapno);
- return sMapHeaders[mapno].unk17_0;
+ return sMapHeaders[mapno].battle_bg;
}
-u8 MapHeader_GetField17_6(u32 mapno)
+u8 MapHeader_IsEscapeRopeAllowed(u32 mapno)
{
mapno = MapNumberBoundsCheck(mapno);
- return sMapHeaders[mapno].unk17_6;
+ return sMapHeaders[mapno].is_escape_rope_allowed;
}
u8 MapHeader_IsFlyAllowed(u32 mapno)
@@ -733,7 +749,7 @@ BOOL FUN_020348E4(u32 mapno)
return FALSE;
}
-BOOL MapHeader_MapIsOnOverworldMatrix(u32 mapno)
+BOOL MapHeader_MapIsOnMainMatrix(u32 mapno)
{
return MapHeader_GetMatrixId(mapno) == 0;
}
@@ -760,56 +776,56 @@ BOOL FUN_02034964(u32 mapno)
BOOL FUN_02034984(u32 mapno)
{
- return !!FUN_0203491C(mapno);
+ return FUN_0203491C(mapno) != FALSE;
}
-BOOL FUN_02034998(u32 mapno)
+BOOL MapHeader_MapIsUnionRoom(u32 mapno)
{
return mapno == 466;
}
-BOOL FUN_020349AC(u32 mapno)
+BOOL MapHeader_MapIsMtCoronetFeebasRoom(u32 mapno)
{
return mapno == 219;
}
-BOOL FUN_020349B8(u32 mapno)
+BOOL MapHeader_MapIsTrophyGarden(u32 mapno)
{
return mapno == 287;
}
-BOOL FUN_020349CC(u32 mapno)
+BOOL MapHeader_MapIsAmitySquare(u32 mapno)
{
return mapno == 253;
}
-BOOL FUN_020349D8(u32 mapno)
+BOOL MapHeader_MapIsSpearPillar(u32 mapno)
{
return mapno == 220;
}
-BOOL FUN_020349E4(u16 a0)
+BOOL MapHeader_MapIsPokemonCenterSecondFloor(u32 mapno)
{
int i;
- for (i = 0; i < NELEMS(UNK_020EED54); i++)
+ for (i = 0; i < NELEMS(sPokemonCenterSecondFloorMaps); i++)
{
- if (a0 == UNK_020EED54[i])
+ if (mapno == sPokemonCenterSecondFloorMaps[i])
return TRUE;
}
return FALSE;
}
-u16 FUN_02034A04(u16 a0)
+u16 MapHeader_GetMapEvolutionMethod(u32 mapno)
{
int i;
- for (i = 0; i < NELEMS(UNK_020EED78); i += 2)
+ for (i = 0; i < NELEMS(sMapEvolutionMethods); i += 2)
{
- if (a0 == UNK_020EED78[i + 0])
- return UNK_020EED78[i + 1];
+ if (mapno == sMapEvolutionMethods[i + 0])
+ return sMapEvolutionMethods[i + 1];
}
- return 0;
+ return EVO_NONE;
}
diff --git a/arm9/src/map_matrix.c b/arm9/src/map_matrix.c
new file mode 100644
index 00000000..1808d82c
--- /dev/null
+++ b/arm9/src/map_matrix.c
@@ -0,0 +1,231 @@
+#include "global.h"
+#include "map_matrix.h"
+#include "MI_memory.h"
+#include "filesystem.h"
+#include "heap.h"
+#include "map_header.h"
+
+THUMB_FUNC static void MapMatrix_MapMatrixData_Load(
+ struct MapMatrixData *map_matrix, u16 file_id, u32 map_id)
+{
+ map_matrix->width = 0;
+ map_matrix->height = 0;
+
+ s32 i;
+ for (i = 0; i < MAP_MATRIX_MAX_SIZE; i++)
+ {
+ map_matrix->headers[i] = 0;
+ map_matrix->altitudes[i] = 0;
+ map_matrix->maps.data[i] = 0;
+ }
+
+ for (i = 0; i < MAP_MATRIX_MAX_NAME_LENGTH; i++)
+ {
+ map_matrix->name[i] = 0;
+ }
+
+ void *buffer =
+ AllocAtEndAndReadWholeNarcMemberByIdPair(NARC_FIELDDATA_MAPMATRIX_MAP_MATRIX, file_id, 11);
+ u8 *cursor = (u8 *)buffer;
+
+ map_matrix->width = *(cursor++);
+ map_matrix->height = *(cursor++);
+ u8 has_headers_section = *(cursor++);
+ u8 has_altitudes_section = *(cursor++);
+ u8 name_length = *(cursor++);
+
+ GF_ASSERT(name_length <= MAP_MATRIX_MAX_NAME_LENGTH);
+
+ MI_CpuCopy8(cursor, &map_matrix->name, name_length);
+ cursor += name_length;
+
+ if (has_headers_section != 0)
+ {
+ MI_CpuCopy8(
+ cursor, &map_matrix->headers, map_matrix->width * map_matrix->height * sizeof(u16));
+ cursor += map_matrix->width * map_matrix->height * sizeof(u16);
+ }
+ else
+ {
+ MIi_CpuClear16((u16)map_id,
+ &map_matrix->headers,
+ map_matrix->width * map_matrix->height * sizeof(u16));
+ }
+
+ if (has_altitudes_section != 0)
+ {
+ MI_CpuCopy8(
+ cursor, &map_matrix->altitudes, map_matrix->width * map_matrix->height * sizeof(u8));
+ cursor += map_matrix->width * map_matrix->height * sizeof(u8);
+ }
+
+ MI_CpuCopy8(
+ cursor, map_matrix->maps.data, map_matrix->width * map_matrix->height * sizeof(u16));
+ FreeToHeap(buffer);
+}
+
+THUMB_FUNC struct MapMatrix *MapMatrix_New(void)
+{
+ struct MapMatrix *map_matrix = AllocFromHeap(11, sizeof(struct MapMatrix));
+
+ map_matrix->width = 0;
+ map_matrix->height = 0;
+ map_matrix->matrix_id = 0;
+
+ return map_matrix;
+}
+
+THUMB_FUNC void MapMatrix_Load(u16 map_id, struct MapMatrix *map_matrix)
+{
+ u16 matrix_id = MapHeader_GetMatrixId(map_id);
+
+ MapMatrix_MapMatrixData_Load(&map_matrix->data, matrix_id, map_id);
+
+ map_matrix->matrix_id = (u8)matrix_id;
+ map_matrix->height = map_matrix->data.height;
+ map_matrix->width = map_matrix->data.width;
+}
+
+THUMB_FUNC void MapMatrix_Free(struct MapMatrix *map_matrix)
+{
+ FreeToHeap(map_matrix);
+}
+
+THUMB_FUNC u16 MapMatrix_GetMapData(s32 map_id, struct MapMatrix *map_matrix)
+{
+ GF_ASSERT(map_id < map_matrix->width * map_matrix->height);
+
+ return map_matrix->data.maps.data[map_id];
+}
+
+THUMB_FUNC u8 MapMatrix_GetWidth(struct MapMatrix *map_matrix)
+{
+ GF_ASSERT(map_matrix != NULL);
+
+ return map_matrix->width;
+}
+
+THUMB_FUNC u8 MapMatrix_GetHeight(struct MapMatrix *map_matrix)
+{
+ GF_ASSERT(map_matrix != NULL);
+
+ return map_matrix->height;
+}
+
+THUMB_FUNC u16 MapMatrix_GetMapHeader(struct MapMatrix *map_matrix, s32 x, s32 y)
+{
+ s32 width = map_matrix->width;
+ s32 height = map_matrix->height;
+
+ GF_ASSERT(x >= 0 && x < width);
+ GF_ASSERT(y >= 0 && y < height);
+
+ return map_matrix->data.headers[y * width + x];
+}
+
+THUMB_FUNC u16 MapMatrix_GetMapHeaderFromID(struct MapMatrix *map_matrix, s32 map_id)
+{
+ s32 max_map_id = map_matrix->width * map_matrix->height;
+
+ GF_ASSERT(0 <= map_id && map_id < max_map_id);
+
+ return map_matrix->data.headers[map_id];
+}
+
+THUMB_FUNC u8 MapMatrix_GetMatrixID(struct MapMatrix *map_matrix)
+{
+ return map_matrix->matrix_id;
+}
+
+THUMB_FUNC u32 MapMatrix_GetMapAltitude(
+ struct MapMatrix *map_matrix, u8 param1, s16 x, s16 y, int matrix_width)
+{
+#pragma unused(param1)
+ GF_ASSERT(x < matrix_width);
+ GF_ASSERT(y * matrix_width + x < MAP_MATRIX_MAX_SIZE);
+
+ return map_matrix->data.altitudes[y * matrix_width + x];
+}
+
+THUMB_FUNC struct MapData *MapMatrix_MapData_New(u32 heap_id)
+{
+ struct MapData *map_data = AllocFromHeap(heap_id, sizeof(struct MapData));
+ void *buffer =
+ AllocAtEndAndReadWholeNarcMemberByIdPair(NARC_FIELDDATA_MAPMATRIX_MAP_MATRIX, 0, heap_id);
+ u8 *cursor = (u8 *)buffer;
+
+ cursor += 4;
+ u8 name_length = *cursor;
+ cursor++;
+ cursor += name_length;
+
+ MI_CpuCopy8(cursor, map_data, sizeof(struct MapData));
+ FreeToHeap(buffer);
+
+ return map_data;
+}
+
+THUMB_FUNC void MapMatrix_MapData_Free(struct MapData *map_data)
+{
+ GF_ASSERT(map_data != NULL);
+ FreeToHeap(map_data);
+}
+
+THUMB_FUNC u16 MapMatrix_MapData_GetData(struct MapData *map_data, s32 x, s32 y)
+{
+ return map_data->data[MAP_MATRIX_MAX_WIDTH * y + x];
+}
+
+THUMB_FUNC u16 GetMapHeader(u32 file_id, u16 x, u16 y)
+{
+ struct MapMatrixData map_matrix;
+
+ MapMatrix_MapMatrixData_Load(&map_matrix, (u16)file_id, 0);
+ GF_ASSERT(x < map_matrix.width);
+ GF_ASSERT(y < map_matrix.height);
+
+ return map_matrix.headers[y * map_matrix.width + x];
+}
+
+THUMB_FUNC u16 GetMapData(s32 map_id, struct MapMatrix *map_matrix)
+{
+ GF_ASSERT(map_matrix != NULL);
+ return MapMatrix_GetMapData(map_id, map_matrix);
+}
+
+THUMB_FUNC void FUN_02034678(struct MapMatrix *map_matrix)
+{
+ u16 *maps = map_matrix->data.maps.data;
+ u8 *altitudes = map_matrix->data.altitudes;
+ u8 width = map_matrix->width;
+
+ if (map_matrix->matrix_id != 0)
+ {
+ return;
+ }
+
+ maps[width * 0x15 + 0x17] = 0xB0;
+ maps[width * 0x15 + 0x18] = 0xB0;
+ maps[width * 0x16 + 0x17] = 0xB0;
+ maps[width * 0x16 + 0x18] = 0xB0;
+ altitudes[width * 0x15 + 0x17] = 2;
+ altitudes[width * 0x15 + 0x18] = 2;
+ altitudes[width * 0x16 + 0x17] = 2;
+ altitudes[width * 0x16 + 0x18] = 2;
+}
+
+THUMB_FUNC void FUN_020346CC(struct MapMatrix *map_matrix)
+{
+ u16 *maps = map_matrix->data.maps.data;
+ u8 width = map_matrix->width;
+
+ if (map_matrix->matrix_id != 0)
+ {
+ return;
+ }
+
+ maps[width * 0x0F + 0x1C] = 0x77;
+ maps[width * 0x10 + 0x1B] = 0x78;
+ maps[width * 0x10 + 0x1C] = 0x79;
+ maps[width * 0x11 + 0x1B] = 0x7A;
+}
diff --git a/include/map_header.h b/include/map_header.h
index 20677025..60c8baaf 100644
--- a/include/map_header.h
+++ b/include/map_header.h
@@ -17,10 +17,10 @@ struct MapHeader
u8 weather_type;
u8 camera_type;
u8 unk16;
- u8 unk17_0:4;
+ u8 battle_bg:4;
u8 is_bike_allowed:1;
- u8 unk17_5:1;
- u8 unk17_6:1;
+ u8 is_running_allowed:1; // unused
+ u8 is_escape_rope_allowed:1;
u8 is_fly_allowed:1;
};
@@ -38,24 +38,24 @@ u16 MapHeader_GetEventsBank(u32 mapno);
u16 MapHeader_GetMapSec(u32 mapno);
u8 MapHeader_GetWeatherType(u32 mapno);
u8 MapHeader_GetCameraType(u32 mapno);
-u8 MapHeader_GetField17_0(u32 mapno);
-u8 MapHeader_GetField17_6(u32 mapno);
+u8 MapHeader_GetBattleBg(u32 mapno);
+u8 MapHeader_IsEscapeRopeAllowed(u32 mapno);
u8 MapHeader_IsFlyAllowed(u32 mapno);
u8 MapHeader_IsBikeAllowed(u32 mapno);
u8 MapHeader_GetField16(u32 mapno);
BOOL FUN_020348E4(u32 mapno);
-BOOL MapHeader_MapIsOnOverworldMatrix(u32 mapno);
+BOOL MapHeader_MapIsOnMainMatrix(u32 mapno);
BOOL FUN_0203491C(u32 mapno);
BOOL FUN_02034930(u32 mapno);
BOOL FUN_02034944(u32 mapno);
BOOL FUN_02034964(u32 mapno);
BOOL FUN_02034984(u32 mapno);
-BOOL FUN_02034998(u32 mapno);
-BOOL FUN_020349AC(u32 mapno);
-BOOL FUN_020349B8(u32 mapno);
-BOOL FUN_020349CC(u32 mapno);
-BOOL FUN_020349D8(u32 mapno);
-BOOL FUN_020349E4(u16 a0);
-u16 FUN_02034A04(u16 a0);
+BOOL MapHeader_MapIsUnionRoom(u32 mapno);
+BOOL MapHeader_MapIsMtCoronetFeebasRoom(u32 mapno);
+BOOL MapHeader_MapIsTrophyGarden(u32 mapno);
+BOOL MapHeader_MapIsAmitySquare(u32 mapno);
+BOOL MapHeader_MapIsSpearPillar(u32 mapno);
+BOOL MapHeader_MapIsPokemonCenterSecondFloor(u32 mapno);
+u16 MapHeader_GetMapEvolutionMethod(u32 mapno);
#endif //POKEDIAMOND_MAP_HEADER_H
diff --git a/include/map_matrix.h b/include/map_matrix.h
new file mode 100644
index 00000000..87e732dc
--- /dev/null
+++ b/include/map_matrix.h
@@ -0,0 +1,54 @@
+#ifndef POKEDIAMOND_MAP_MATRIX_H
+#define POKEDIAMOND_MAP_MATRIX_H
+
+#define MAP_MATRIX_MAX_WIDTH 30
+#define MAP_MATRIX_MAX_HEIGHT 30
+#define MAP_MATRIX_MAX_SIZE (MAP_MATRIX_MAX_WIDTH * MAP_MATRIX_MAX_HEIGHT)
+
+#define MAP_MATRIX_MAX_NAME_LENGTH 16
+
+struct MapData
+{
+ u16 data[MAP_MATRIX_MAX_SIZE];
+};
+
+struct MapMatrixData
+{
+ u8 height;
+ u8 width;
+ u16 headers[MAP_MATRIX_MAX_SIZE];
+ u8 altitudes[MAP_MATRIX_MAX_SIZE];
+ struct MapData maps;
+ u8 name[MAP_MATRIX_MAX_NAME_LENGTH];
+};
+
+struct MapMatrix
+{
+ u8 width;
+ u8 height;
+ u8 matrix_id;
+ struct MapMatrixData data;
+};
+
+struct MapMatrix *MapMatrix_New(void);
+void MapMatrix_Load(u16 map_id, struct MapMatrix *map_matrix);
+void MapMatrix_Free(struct MapMatrix *map_matrix);
+u16 MapMatrix_GetMapData(s32 map_id, struct MapMatrix *map_matrix);
+u8 MapMatrix_GetWidth(struct MapMatrix *map_matrix);
+u8 MapMatrix_GetHeight(struct MapMatrix *map_matrix);
+u16 MapMatrix_GetMapHeader(struct MapMatrix *map_matrix, s32 x, s32 y);
+u16 MapMatrix_GetMapHeaderFromID(struct MapMatrix *map_matrix, s32 map_id);
+u8 MapMatrix_GetMatrixID(struct MapMatrix *map_matrix);
+u32 MapMatrix_GetMapAltitude(
+ struct MapMatrix *map_matrix, u8 param1, s16 x, s16 y, int matrix_width);
+
+struct MapData *MapMatrix_MapData_New(u32 heap_id);
+void MapMatrix_MapData_Free(struct MapData *map_data);
+u16 MapMatrix_MapData_GetData(struct MapData *map_data, s32 x, s32 y);
+
+u16 GetMapHeader(u32 file_id, u16 x, u16 y);
+u16 GetMapData(s32 map_id, struct MapMatrix *map_matrix);
+void FUN_02034678(struct MapMatrix *map_matrix);
+void FUN_020346CC(struct MapMatrix *map_matrix);
+
+#endif // POKEDIAMOND_MAP_MATRIX_H