summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/field_camera.s4
-rw-r--r--asm/field_control_avatar.s8
-rw-r--r--asm/field_door.s8
-rw-r--r--asm/field_effect_helpers.s8
-rw-r--r--asm/field_map_obj.s16
-rw-r--r--asm/field_tasks.s4
-rw-r--r--asm/fieldmap.s2400
-rw-r--r--asm/fldeff_cut.s2
-rw-r--r--asm/item_use.s2
-rw-r--r--asm/overworld.s36
-rw-r--r--asm/shop.s8
-rw-r--r--asm/start_menu.s2
-rw-r--r--asm/tileset_anims.s120
-rw-r--r--common_syms/fieldmap.txt1
-rw-r--r--data/data.s22
-rw-r--r--data/fieldmap.s6
-rw-r--r--include/fieldmap.h21
-rw-r--r--include/global.fieldmap.h14
-rw-r--r--include/global.h3
-rw-r--r--include/menu.h1
-rw-r--r--include/new_menu_helpers.h1
-rw-r--r--include/overworld.h3
-rw-r--r--include/palette.h2
-rw-r--r--include/quest_log.h1
-rw-r--r--ld_script.txt4
-rw-r--r--src/fieldmap.c1025
-rw-r--r--src/save.c4
-rw-r--r--sym_bss.txt12
-rw-r--r--sym_common.txt4
-rw-r--r--sym_ewram.txt12
30 files changed, 1187 insertions, 2567 deletions
diff --git a/asm/field_camera.s b/asm/field_camera.s
index 3d4ca0025..5541c6472 100644
--- a/asm/field_camera.s
+++ b/asm/field_camera.s
@@ -528,7 +528,7 @@ sub_805A948: @ 805A948
mov r8, r1
adds r0, r6, 0
adds r1, r7, 0
- bl sub_8058E48
+ bl MapGridGetMetatileIdAt
lsls r0, 16
lsrs r4, r0, 16
movs r0, 0x80
@@ -557,7 +557,7 @@ _0805A98C:
asrs r0, 16
lsls r1, r7, 16
asrs r1, 16
- bl sub_8058F8C
+ bl MapGridGetMetatileLayerTypeAt
lsls r0, 24
lsrs r0, 24
lsls r1, r4, 4
diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s
index 39055b8e9..d1d1a6812 100644
--- a/asm/field_control_avatar.s
+++ b/asm/field_control_avatar.s
@@ -884,7 +884,7 @@ sub_806CF38: @ 806CF38
ldrh r1, [r4, 0x2]
b _0806CF7E
_0806CF60:
- ldr r1, _0806CFA4 @ =gUnknown_826D2D8
+ ldr r1, _0806CFA4 @ =gDirectionToVectors
lsls r2, r6, 3
adds r0, r2, r1
ldr r3, [r0]
@@ -919,7 +919,7 @@ _0806CF9E:
movs r0, 0
b _0806CFDE
.align 2, 0
-_0806CFA4: .4byte gUnknown_826D2D8
+_0806CFA4: .4byte gDirectionToVectors
_0806CFA8: .4byte gMapObjects
_0806CFAC:
movs r4, 0
@@ -994,7 +994,7 @@ _0806D02A:
lsrs r0, 24
cmp r0, 0x1
bne _0806D092
- ldr r1, _0806D09C @ =gUnknown_826D2D8
+ ldr r1, _0806D09C @ =gDirectionToVectors
mov r0, r8
lsls r2, r0, 3
adds r0, r2, r1
@@ -1042,7 +1042,7 @@ _0806D092:
b _0806D0C8
.align 2, 0
_0806D098: .4byte gMapObjects
-_0806D09C: .4byte gUnknown_826D2D8
+_0806D09C: .4byte gDirectionToVectors
_0806D0A0:
ldr r0, _0806D0D4 @ =gSelectedEventObject
strb r5, [r0]
diff --git a/asm/field_door.s b/asm/field_door.s
index 4384531d0..bcb8a6082 100644
--- a/asm/field_door.s
+++ b/asm/field_door.s
@@ -337,7 +337,7 @@ sub_805B158: @ 805B158
adds r6, r2, 0
adds r0, r5, 0
adds r1, r6, 0
- bl sub_8058E48
+ bl MapGridGetMetatileIdAt
adds r1, r0, 0
lsls r1, 16
lsrs r1, 16
@@ -392,7 +392,7 @@ sub_805B1B8: @ 805B1B8
adds r6, r2, 0
adds r0, r5, 0
adds r1, r6, 0
- bl sub_8058E48
+ bl MapGridGetMetatileIdAt
adds r1, r0, 0
lsls r1, 16
lsrs r1, 16
@@ -439,7 +439,7 @@ sub_805B210: @ 805B210
adds r6, r2, 0
adds r0, r5, 0
adds r1, r6, 0
- bl sub_8058E48
+ bl MapGridGetMetatileIdAt
adds r1, r0, 0
lsls r1, 16
lsrs r1, 16
@@ -643,7 +643,7 @@ sub_805B388: @ 805B388
adds r4, r0, 0
adds r0, r1, 0
adds r1, r2, 0
- bl sub_8058E48
+ bl MapGridGetMetatileIdAt
adds r1, r0, 0
lsls r1, 16
lsrs r1, 16
diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s
index ed746de25..be79c3b21 100644
--- a/asm/field_effect_helpers.s
+++ b/asm/field_effect_helpers.s
@@ -845,7 +845,7 @@ unc_grass_normal: @ 80DB3EC
lsrs r4, r0, 8
lsls r0, 24
lsrs r7, r0, 24
- ldr r3, _080DB498 @ =gUnknown_2036E18
+ ldr r3, _080DB498 @ =gCamera
ldrb r1, [r3]
movs r0, 0x1
ands r0, r1
@@ -921,7 +921,7 @@ _080DB48C:
bl FieldEffectStop
b _080DB4E4
.align 2, 0
-_080DB498: .4byte gUnknown_2036E18
+_080DB498: .4byte gCamera
_080DB49C: .4byte gSaveBlock1Ptr
_080DB4A0:
mov r0, sp
@@ -1196,7 +1196,7 @@ unc_grass_tall: @ 80DB69C
lsrs r7, r0, 8
lsls r0, 24
lsrs r6, r0, 24
- ldr r3, _080DB748 @ =gUnknown_2036E18
+ ldr r3, _080DB748 @ =gCamera
ldrb r1, [r3]
movs r0, 0x1
ands r0, r1
@@ -1272,7 +1272,7 @@ _080DB73C:
bl FieldEffectStop
b _080DB786
.align 2, 0
-_080DB748: .4byte gUnknown_2036E18
+_080DB748: .4byte gCamera
_080DB74C: .4byte gSaveBlock1Ptr
_080DB750:
mov r0, sp
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s
index 14951c20c..ef1c75939 100644
--- a/asm/field_map_obj.s
+++ b/asm/field_map_obj.s
@@ -673,7 +673,7 @@ sub_805E2E8: @ 805E2E8
lsls r0, 24
cmp r0, 0
beq _0805E37C
- ldr r1, _0805E374 @ =gUnknown_3005040
+ ldr r1, _0805E374 @ =VMap
ldr r0, [r1]
adds r3, r0, 0
subs r3, 0x10
@@ -736,7 +736,7 @@ _0805E36A:
movs r0, 0
b _0805E37E
.align 2, 0
-_0805E374: .4byte gUnknown_3005040
+_0805E374: .4byte VMap
_0805E378: .4byte gSaveBlock1Ptr
_0805E37C:
movs r0, 0x1
@@ -3516,7 +3516,7 @@ npc_coords_shift_still: @ 805F818
thumb_func_start UpdateFieldObjectCoordsForCameraUpdate
UpdateFieldObjectCoordsForCameraUpdate: @ 805F82C
push {r4,r5,lr}
- ldr r2, _0805F88C @ =gUnknown_2036E18
+ ldr r2, _0805F88C @ =gCamera
ldrb r1, [r2]
movs r0, 0x1
ands r0, r1
@@ -3566,7 +3566,7 @@ _0805F884:
pop {r0}
bx r0
.align 2, 0
-_0805F88C: .4byte gUnknown_2036E18
+_0805F88C: .4byte gCamera
_0805F890: .4byte gMapObjects
thumb_func_end UpdateFieldObjectCoordsForCameraUpdate
@@ -12332,13 +12332,13 @@ npc_block_way: @ 80636AC
_080636E2:
adds r0, r5, 0
adds r1, r4, 0
- bl sub_8058DC4
+ bl MapGridIsImpassableAt
lsls r0, 24
cmp r0, 0
bne _08063724
adds r0, r5, 0
adds r1, r4, 0
- bl sub_8059334
+ bl GetMapBorderIdAt
movs r1, 0x1
negs r1, r1
cmp r0, r1
@@ -12432,13 +12432,13 @@ sub_8063770: @ 8063770
lsrs r4, r1, 31
adds r0, r6, 0
adds r1, r5, 0
- bl sub_8058DC4
+ bl MapGridIsImpassableAt
lsls r0, 24
cmp r0, 0
bne _080637E8
adds r0, r6, 0
adds r1, r5, 0
- bl sub_8059334
+ bl GetMapBorderIdAt
movs r1, 0x1
negs r1, r1
cmp r0, r1
diff --git a/asm/field_tasks.s b/asm/field_tasks.s
index 306b52940..b4106c021 100644
--- a/asm/field_tasks.s
+++ b/asm/field_tasks.s
@@ -490,7 +490,7 @@ _0806EB8E:
ldrsh r0, [r0, r3]
movs r2, 0
ldrsh r1, [r4, r2]
- bl sub_8058E48
+ bl MapGridGetMetatileIdAt
ldr r1, _0806EBDC @ =0x0000020a
cmp r0, r1
bne _0806EBE4
@@ -534,7 +534,7 @@ sub_806EC04: @ 806EC04
asrs r4, r1, 16
adds r0, r5, 0
adds r1, r4, 0
- bl sub_8058E48
+ bl MapGridGetMetatileIdAt
ldr r1, _0806EC38 @ =0x0000022f
ldr r2, _0806EC3C @ =0x00000237
cmp r0, r1
diff --git a/asm/fieldmap.s b/asm/fieldmap.s
deleted file mode 100644
index a8b2d36ee..000000000
--- a/asm/fieldmap.s
+++ /dev/null
@@ -1,2400 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start mapconnection_get_mapheader
-mapconnection_get_mapheader: @ 80589C4
- push {lr}
- ldrb r2, [r0, 0x8]
- ldrb r1, [r0, 0x9]
- adds r0, r2, 0
- bl get_mapheader_by_bank_and_number
- pop {r1}
- bx r1
- thumb_func_end mapconnection_get_mapheader
-
- thumb_func_start not_trainer_hill_battle_pyramid
-not_trainer_hill_battle_pyramid: @ 80589D4
- push {lr}
- ldr r0, _080589E4 @ =gMapHeader
- bl sub_8058A00
- bl mapheader_run_script_with_tag_x1
- pop {r0}
- bx r0
- .align 2, 0
-_080589E4: .4byte gMapHeader
- thumb_func_end not_trainer_hill_battle_pyramid
-
- thumb_func_start sub_80589E8
-sub_80589E8: @ 80589E8
- push {lr}
- ldr r0, _080589FC @ =gMapHeader
- bl sub_8058A00
- bl sub_80591C4
- bl mapheader_run_script_with_tag_x1
- pop {r0}
- bx r0
- .align 2, 0
-_080589FC: .4byte gMapHeader
- thumb_func_end sub_80589E8
-
- thumb_func_start sub_8058A00
-sub_8058A00: @ 8058A00
- push {r4-r6,lr}
- sub sp, 0x4
- adds r6, r0, 0
- ldr r5, [r6]
- ldr r0, _08058A58 @ =0x03ff03ff
- str r0, [sp]
- ldr r4, _08058A5C @ =gUnknown_2031DFC
- ldr r2, _08058A60 @ =0x01001400
- mov r0, sp
- adds r1, r4, 0
- bl CpuFastSet
- ldr r2, _08058A64 @ =gUnknown_3005040
- str r4, [r2, 0x8]
- ldr r1, [r5]
- adds r1, 0xF
- str r1, [r2]
- ldr r0, [r5, 0x4]
- adds r0, 0xE
- str r0, [r2, 0x4]
- muls r1, r0
- movs r0, 0xA0
- lsls r0, 6
- cmp r1, r0
- ble _08058A3E
- ldr r0, _08058A68 @ =gUnknown_8352F18 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/fieldmap.c"
- ldr r2, _08058A6C @ =gUnknown_8352F4C "VMap.Xsize * VMap.Ysize <= VIRTUAL_MAP_SIZE"
- movs r1, 0x9E
- movs r3, 0x1
- bl AGBAssert
-_08058A3E:
- ldr r0, [r5, 0xC]
- ldrh r1, [r5]
- ldrh r2, [r5, 0x4]
- bl map_copy_with_padding
- adds r0, r6, 0
- bl mapheader_copy_mapdata_of_adjacent_maps
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08058A58: .4byte 0x03ff03ff
-_08058A5C: .4byte gUnknown_2031DFC
-_08058A60: .4byte 0x01001400
-_08058A64: .4byte gUnknown_3005040
-_08058A68: .4byte gUnknown_8352F18
-_08058A6C: .4byte gUnknown_8352F4C
- thumb_func_end sub_8058A00
-
- thumb_func_start map_copy_with_padding
-map_copy_with_padding: @ 8058A70
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r7, r0, 0
- lsls r1, 16
- lsrs r1, 16
- mov r8, r1
- lsls r2, 16
- lsrs r2, 16
- ldr r0, _08058AC4 @ =gUnknown_3005040
- ldr r4, [r0, 0x8]
- ldr r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 1
- adds r0, 0xE
- adds r4, r0
- cmp r2, 0
- beq _08058AB8
- mov r0, r8
- lsls r6, r0, 1
- adds r5, r2, 0
- movs r0, 0x1E
- adds r0, r6
- mov r9, r0
-_08058AA4:
- adds r0, r7, 0
- adds r1, r4, 0
- mov r2, r8
- bl CpuSet
- add r4, r9
- adds r7, r6
- subs r5, 0x1
- cmp r5, 0
- bne _08058AA4
-_08058AB8:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08058AC4: .4byte gUnknown_3005040
- thumb_func_end map_copy_with_padding
-
- thumb_func_start mapheader_copy_mapdata_of_adjacent_maps
-mapheader_copy_mapdata_of_adjacent_maps: @ 8058AC8
- push {r4-r7,lr}
- adds r6, r0, 0
- ldr r2, _08058B00 @ =gUnknown_2036E24
- ldr r0, _08058B04 @ =gUnknown_8352EEC
- ldr r0, [r0]
- str r0, [r2]
- ldr r0, [r6, 0xC]
- cmp r0, 0
- beq _08058B4C
- ldr r1, [r0]
- ldr r5, [r0, 0x4]
- cmp r1, 0
- ble _08058B4C
- adds r4, r2, 0
- adds r7, r1, 0
-_08058AE6:
- adds r0, r5, 0
- bl mapconnection_get_mapheader
- adds r1, r0, 0
- ldr r2, [r5, 0x4]
- ldrb r0, [r5]
- cmp r0, 0x2
- beq _08058B1E
- cmp r0, 0x2
- bgt _08058B08
- cmp r0, 0x1
- beq _08058B12
- b _08058B44
- .align 2, 0
-_08058B00: .4byte gUnknown_2036E24
-_08058B04: .4byte gUnknown_8352EEC
-_08058B08:
- cmp r0, 0x3
- beq _08058B2A
- cmp r0, 0x4
- beq _08058B36
- b _08058B44
-_08058B12:
- adds r0, r6, 0
- bl fillSouthConnection
- ldrb r0, [r4]
- movs r1, 0x1
- b _08058B40
-_08058B1E:
- adds r0, r6, 0
- bl fillNorthConnection
- ldrb r0, [r4]
- movs r1, 0x2
- b _08058B40
-_08058B2A:
- adds r0, r6, 0
- bl fillWestConnection
- ldrb r0, [r4]
- movs r1, 0x4
- b _08058B40
-_08058B36:
- adds r0, r6, 0
- bl fillEastConnection
- ldrb r0, [r4]
- movs r1, 0x8
-_08058B40:
- orrs r0, r1
- strb r0, [r4]
-_08058B44:
- subs r7, 0x1
- adds r5, 0xC
- cmp r7, 0
- bne _08058AE6
-_08058B4C:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end mapheader_copy_mapdata_of_adjacent_maps
-
- thumb_func_start sub_8058B54
-sub_8058B54: @ 8058B54
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r5, [sp, 0x18]
- ldr r4, [r2]
- ldr r7, [r4]
- adds r2, r7, 0
- muls r2, r5
- adds r2, r3
- lsls r2, 1
- ldr r3, [r4, 0xC]
- adds r6, r3, r2
- ldr r3, _08058BB0 @ =gUnknown_3005040
- ldr r2, [r3]
- muls r1, r2
- adds r1, r0
- lsls r1, 1
- ldr r0, [r3, 0x8]
- adds r5, r0, r1
- ldr r0, [sp, 0x20]
- cmp r0, 0
- ble _08058BA6
- adds r4, r0, 0
- ldr r3, _08058BB4 @ =0x001fffff
- mov r8, r3
-_08058B86:
- adds r0, r6, 0
- adds r1, r5, 0
- ldr r2, [sp, 0x1C]
- mov r3, r8
- ands r2, r3
- bl CpuSet
- ldr r0, _08058BB0 @ =gUnknown_3005040
- ldr r0, [r0]
- lsls r0, 1
- adds r5, r0
- lsls r0, r7, 1
- adds r6, r0
- subs r4, 0x1
- cmp r4, 0
- bne _08058B86
-_08058BA6:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08058BB0: .4byte gUnknown_3005040
-_08058BB4: .4byte 0x001fffff
- thumb_func_end sub_8058B54
-
- thumb_func_start fillSouthConnection
-fillSouthConnection: @ 8058BB8
- push {r4-r7,lr}
- sub sp, 0xC
- adds r3, r0, 0
- adds r5, r1, 0
- cmp r5, 0
- beq _08058C12
- ldr r0, [r5]
- ldr r4, [r0]
- adds r2, 0x7
- ldr r0, [r3]
- ldr r0, [r0, 0x4]
- adds r7, r0, 0x7
- cmp r2, 0
- bge _08058BEC
- negs r6, r2
- adds r2, r4
- ldr r0, _08058BE8 @ =gUnknown_3005040
- ldr r3, [r0]
- cmp r2, r3
- bge _08058BE2
- adds r3, r2, 0
-_08058BE2:
- movs r2, 0
- b _08058BFC
- .align 2, 0
-_08058BE8: .4byte gUnknown_3005040
-_08058BEC:
- movs r6, 0
- adds r0, r2, r4
- ldr r1, _08058C1C @ =gUnknown_3005040
- ldr r1, [r1]
- subs r3, r1, r2
- cmp r0, r1
- bge _08058BFC
- adds r3, r4, 0
-_08058BFC:
- movs r0, 0
- str r0, [sp]
- str r3, [sp, 0x4]
- movs r0, 0x7
- str r0, [sp, 0x8]
- adds r0, r2, 0
- adds r1, r7, 0
- adds r2, r5, 0
- adds r3, r6, 0
- bl sub_8058B54
-_08058C12:
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08058C1C: .4byte gUnknown_3005040
- thumb_func_end fillSouthConnection
-
- thumb_func_start fillNorthConnection
-fillNorthConnection: @ 8058C20
- push {r4-r7,lr}
- sub sp, 0xC
- adds r5, r1, 0
- cmp r5, 0
- beq _08058C74
- ldr r0, [r5]
- ldr r4, [r0]
- ldr r0, [r0, 0x4]
- adds r2, 0x7
- subs r7, r0, 0x7
- cmp r2, 0
- bge _08058C50
- negs r6, r2
- adds r2, r4
- ldr r0, _08058C4C @ =gUnknown_3005040
- ldr r3, [r0]
- cmp r2, r3
- bge _08058C46
- adds r3, r2, 0
-_08058C46:
- movs r2, 0
- b _08058C60
- .align 2, 0
-_08058C4C: .4byte gUnknown_3005040
-_08058C50:
- movs r6, 0
- adds r0, r2, r4
- ldr r1, _08058C7C @ =gUnknown_3005040
- ldr r1, [r1]
- subs r3, r1, r2
- cmp r0, r1
- bge _08058C60
- adds r3, r4, 0
-_08058C60:
- str r7, [sp]
- str r3, [sp, 0x4]
- movs r0, 0x7
- str r0, [sp, 0x8]
- adds r0, r2, 0
- movs r1, 0
- adds r2, r5, 0
- adds r3, r6, 0
- bl sub_8058B54
-_08058C74:
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08058C7C: .4byte gUnknown_3005040
- thumb_func_end fillNorthConnection
-
- thumb_func_start fillWestConnection
-fillWestConnection: @ 8058C80
- push {r4-r7,lr}
- sub sp, 0xC
- adds r5, r1, 0
- cmp r5, 0
- beq _08058CD4
- ldr r0, [r5]
- ldr r1, [r0]
- ldr r4, [r0, 0x4]
- adds r2, 0x7
- subs r7, r1, 0x7
- cmp r2, 0
- bge _08058CB0
- negs r6, r2
- adds r1, r2, r4
- ldr r0, _08058CAC @ =gUnknown_3005040
- ldr r3, [r0, 0x4]
- cmp r1, r3
- bge _08058CA6
- adds r3, r1, 0
-_08058CA6:
- movs r2, 0
- b _08058CC0
- .align 2, 0
-_08058CAC: .4byte gUnknown_3005040
-_08058CB0:
- movs r6, 0
- adds r0, r2, r4
- ldr r1, _08058CDC @ =gUnknown_3005040
- ldr r1, [r1, 0x4]
- subs r3, r1, r2
- cmp r0, r1
- bge _08058CC0
- adds r3, r4, 0
-_08058CC0:
- str r6, [sp]
- movs r0, 0x7
- str r0, [sp, 0x4]
- str r3, [sp, 0x8]
- movs r0, 0
- adds r1, r2, 0
- adds r2, r5, 0
- adds r3, r7, 0
- bl sub_8058B54
-_08058CD4:
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08058CDC: .4byte gUnknown_3005040
- thumb_func_end fillWestConnection
-
- thumb_func_start fillEastConnection
-fillEastConnection: @ 8058CE0
- push {r4-r7,lr}
- sub sp, 0xC
- adds r3, r0, 0
- adds r5, r1, 0
- cmp r5, 0
- beq _08058D38
- ldr r0, [r5]
- ldr r4, [r0, 0x4]
- ldr r0, [r3]
- ldr r0, [r0]
- adds r7, r0, 0x7
- adds r2, 0x7
- cmp r2, 0
- bge _08058D14
- negs r6, r2
- adds r1, r2, r4
- ldr r0, _08058D10 @ =gUnknown_3005040
- ldr r3, [r0, 0x4]
- cmp r1, r3
- bge _08058D0A
- adds r3, r1, 0
-_08058D0A:
- movs r2, 0
- b _08058D24
- .align 2, 0
-_08058D10: .4byte gUnknown_3005040
-_08058D14:
- movs r6, 0
- adds r0, r2, r4
- ldr r1, _08058D40 @ =gUnknown_3005040
- ldr r1, [r1, 0x4]
- subs r3, r1, r2
- cmp r0, r1
- bge _08058D24
- adds r3, r4, 0
-_08058D24:
- str r6, [sp]
- movs r0, 0x8
- str r0, [sp, 0x4]
- str r3, [sp, 0x8]
- adds r0, r7, 0
- adds r1, r2, 0
- adds r2, r5, 0
- movs r3, 0
- bl sub_8058B54
-_08058D38:
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08058D40: .4byte gUnknown_3005040
- thumb_func_end fillEastConnection
-
- thumb_func_start MapGridGetZCoordAt
-MapGridGetZCoordAt: @ 8058D44
- push {r4-r7,lr}
- adds r2, r0, 0
- adds r7, r1, 0
- cmp r2, 0
- blt _08058D74
- ldr r1, _08058D70 @ =gUnknown_3005040
- ldr r3, [r1]
- cmp r2, r3
- bge _08058D74
- cmp r7, 0
- blt _08058D74
- ldr r0, [r1, 0x4]
- cmp r7, r0
- bge _08058D74
- adds r0, r3, 0
- muls r0, r7
- adds r0, r2, r0
- ldr r1, [r1, 0x8]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- b _08058DA8
- .align 2, 0
-_08058D70: .4byte gUnknown_3005040
-_08058D74:
- ldr r0, _08058DB4 @ =gMapHeader
- ldr r6, [r0]
- subs r0, r2, 0x7
- ldrb r5, [r6, 0x18]
- lsls r1, r5, 3
- adds r0, r1
- adds r1, r5, 0
- bl __modsi3
- adds r4, r0, 0
- subs r0, r7, 0x7
- ldrb r1, [r6, 0x19]
- lsls r2, r1, 3
- adds r0, r2
- bl __modsi3
- muls r0, r5
- adds r4, r0
- ldr r0, [r6, 0x8]
- lsls r4, 1
- adds r4, r0
- ldrh r1, [r4]
- movs r2, 0xC0
- lsls r2, 4
- adds r0, r2, 0
- orrs r1, r0
-_08058DA8:
- ldr r0, _08058DB8 @ =0x000003ff
- cmp r1, r0
- beq _08058DBC
- lsrs r0, r1, 12
- b _08058DBE
- .align 2, 0
-_08058DB4: .4byte gMapHeader
-_08058DB8: .4byte 0x000003ff
-_08058DBC:
- movs r0, 0
-_08058DBE:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end MapGridGetZCoordAt
-
- thumb_func_start sub_8058DC4
-sub_8058DC4: @ 8058DC4
- push {r4-r7,lr}
- adds r2, r0, 0
- adds r7, r1, 0
- cmp r2, 0
- blt _08058DF4
- ldr r1, _08058DF0 @ =gUnknown_3005040
- ldr r3, [r1]
- cmp r2, r3
- bge _08058DF4
- cmp r7, 0
- blt _08058DF4
- ldr r0, [r1, 0x4]
- cmp r7, r0
- bge _08058DF4
- adds r0, r3, 0
- muls r0, r7
- adds r0, r2, r0
- ldr r1, [r1, 0x8]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- b _08058E28
- .align 2, 0
-_08058DF0: .4byte gUnknown_3005040
-_08058DF4:
- ldr r0, _08058E38 @ =gMapHeader
- ldr r6, [r0]
- subs r0, r2, 0x7
- ldrb r5, [r6, 0x18]
- lsls r1, r5, 3
- adds r0, r1
- adds r1, r5, 0
- bl __modsi3
- adds r4, r0, 0
- subs r0, r7, 0x7
- ldrb r1, [r6, 0x19]
- lsls r2, r1, 3
- adds r0, r2
- bl __modsi3
- muls r0, r5
- adds r4, r0
- ldr r0, [r6, 0x8]
- lsls r4, 1
- adds r4, r0
- ldrh r1, [r4]
- movs r2, 0xC0
- lsls r2, 4
- adds r0, r2, 0
- orrs r1, r0
-_08058E28:
- ldr r0, _08058E3C @ =0x000003ff
- cmp r1, r0
- beq _08058E40
- movs r0, 0xC0
- lsls r0, 4
- ands r1, r0
- lsrs r0, r1, 10
- b _08058E42
- .align 2, 0
-_08058E38: .4byte gMapHeader
-_08058E3C: .4byte 0x000003ff
-_08058E40:
- movs r0, 0x1
-_08058E42:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8058DC4
-
- thumb_func_start sub_8058E48
-sub_8058E48: @ 8058E48
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r8, r0
- mov r9, r1
- cmp r0, 0
- blt _08058E80
- ldr r1, _08058E7C @ =gUnknown_3005040
- ldr r2, [r1]
- cmp r8, r2
- bge _08058E80
- mov r0, r9
- cmp r0, 0
- blt _08058E80
- ldr r0, [r1, 0x4]
- cmp r9, r0
- bge _08058E80
- mov r0, r9
- muls r0, r2
- add r0, r8
- ldr r1, [r1, 0x8]
- lsls r0, 1
- adds r0, r1
- ldrh r7, [r0]
- b _08058EBA
- .align 2, 0
-_08058E7C: .4byte gUnknown_3005040
-_08058E80:
- ldr r0, _08058EC8 @ =gMapHeader
- ldr r6, [r0]
- mov r0, r8
- subs r0, 0x7
- ldrb r5, [r6, 0x18]
- lsls r1, r5, 3
- adds r0, r1
- adds r1, r5, 0
- bl __modsi3
- adds r4, r0, 0
- mov r0, r9
- subs r0, 0x7
- ldrb r1, [r6, 0x19]
- lsls r2, r1, 3
- adds r0, r2
- bl __modsi3
- muls r0, r5
- adds r4, r0
- ldr r0, [r6, 0x8]
- lsls r4, 1
- adds r4, r0
- ldrh r1, [r4]
- movs r2, 0xC0
- lsls r2, 4
- adds r0, r2, 0
- adds r7, r0, 0
- orrs r7, r1
-_08058EBA:
- ldr r0, _08058ECC @ =0x000003ff
- cmp r7, r0
- beq _08058ED0
- ands r7, r0
- adds r0, r7, 0
- b _08058F0A
- .align 2, 0
-_08058EC8: .4byte gMapHeader
-_08058ECC: .4byte 0x000003ff
-_08058ED0:
- ldr r0, _08058F18 @ =gMapHeader
- ldr r6, [r0]
- mov r0, r8
- subs r0, 0x7
- ldrb r5, [r6, 0x18]
- lsls r1, r5, 3
- adds r0, r1
- adds r1, r5, 0
- bl __modsi3
- adds r4, r0, 0
- mov r0, r9
- subs r0, 0x7
- ldrb r1, [r6, 0x19]
- lsls r2, r1, 3
- adds r0, r2
- bl __modsi3
- muls r0, r5
- adds r4, r0
- ldr r0, [r6, 0x8]
- lsls r4, 1
- adds r4, r0
- ldrh r0, [r4]
- movs r2, 0xC0
- lsls r2, 4
- adds r1, r2, 0
- orrs r0, r1
- ands r0, r7
-_08058F0A:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08058F18: .4byte gMapHeader
- thumb_func_end sub_8058E48
-
- thumb_func_start sub_8058F1C
-sub_8058F1C: @ 8058F1C
- push {lr}
- adds r2, r0, 0
- lsls r1, 24
- lsrs r3, r1, 24
- cmp r3, 0x7
- bhi _08058F3A
- ldr r1, _08058F40 @ =gUnknown_8352EF0
- lsls r0, r3, 2
- adds r0, r1
- ldr r0, [r0]
- ands r2, r0
- ldr r0, _08058F44 @ =gUnknown_8352F10
- adds r0, r3, r0
- ldrb r0, [r0]
- lsrs r2, r0
-_08058F3A:
- adds r0, r2, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08058F40: .4byte gUnknown_8352EF0
-_08058F44: .4byte gUnknown_8352F10
- thumb_func_end sub_8058F1C
-
- thumb_func_start sub_8058F48
-sub_8058F48: @ 8058F48
- push {r4,lr}
- adds r4, r2, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- bl sub_8058E48
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r0, _08058F74 @ =gMapHeader
- ldr r0, [r0]
- adds r2, r4, 0
- bl sub_8059080
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08058F74: .4byte gMapHeader
- thumb_func_end sub_8058F48
-
- thumb_func_start MapGridGetMetatileBehaviorAt
-MapGridGetMetatileBehaviorAt: @ 8058F78
- push {lr}
- lsls r0, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- movs r2, 0
- bl sub_8058F48
- pop {r1}
- bx r1
- thumb_func_end MapGridGetMetatileBehaviorAt
-
- thumb_func_start sub_8058F8C
-sub_8058F8C: @ 8058F8C
- push {lr}
- lsls r0, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- movs r2, 0x6
- bl sub_8058F48
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_8058F8C
-
- thumb_func_start MapGridSetMetatileIdAt
-MapGridSetMetatileIdAt: @ 8058FA4
- push {r4,r5,lr}
- adds r3, r0, 0
- lsls r2, 16
- lsrs r5, r2, 16
- cmp r3, 0
- blt _08058FDC
- ldr r2, _08058FE4 @ =gUnknown_3005040
- ldr r4, [r2]
- cmp r3, r4
- bge _08058FDC
- cmp r1, 0
- blt _08058FDC
- ldr r0, [r2, 0x4]
- cmp r1, r0
- bge _08058FDC
- muls r1, r4
- adds r1, r3, r1
- ldr r0, [r2, 0x8]
- lsls r1, 1
- adds r1, r0
- ldrh r0, [r1]
- movs r2, 0xF0
- lsls r2, 8
- ands r2, r0
- ldr r0, _08058FE8 @ =0x00000fff
- ands r0, r5
- orrs r2, r0
- strh r2, [r1]
-_08058FDC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08058FE4: .4byte gUnknown_3005040
-_08058FE8: .4byte 0x00000fff
- thumb_func_end MapGridSetMetatileIdAt
-
- thumb_func_start MapGridSetMetatileEntryAt
-MapGridSetMetatileEntryAt: @ 8058FEC
- push {r4,r5,lr}
- adds r3, r0, 0
- lsls r2, 16
- lsrs r5, r2, 16
- cmp r3, 0
- blt _08059018
- ldr r2, _08059020 @ =gUnknown_3005040
- ldr r4, [r2]
- cmp r3, r4
- bge _08059018
- cmp r1, 0
- blt _08059018
- ldr r0, [r2, 0x4]
- cmp r1, r0
- bge _08059018
- adds r0, r4, 0
- muls r0, r1
- adds r0, r3, r0
- ldr r1, [r2, 0x8]
- lsls r0, 1
- adds r0, r1
- strh r5, [r0]
-_08059018:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08059020: .4byte gUnknown_3005040
- thumb_func_end MapGridSetMetatileEntryAt
-
- thumb_func_start sub_8059024
-sub_8059024: @ 8059024
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r3, r1, 0
- adds r5, r2, 0
- cmp r4, 0
- blt _08059076
- ldr r2, _08059060 @ =gUnknown_3005040
- ldr r1, [r2]
- cmp r4, r1
- bge _08059076
- cmp r3, 0
- blt _08059076
- ldr r0, [r2, 0x4]
- cmp r3, r0
- bge _08059076
- cmp r5, 0
- beq _08059064
- adds r0, r1, 0
- muls r0, r3
- adds r0, r4, r0
- ldr r1, [r2, 0x8]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r3, 0xC0
- lsls r3, 4
- adds r2, r3, 0
- orrs r1, r2
- strh r1, [r0]
- b _08059076
- .align 2, 0
-_08059060: .4byte gUnknown_3005040
-_08059064:
- muls r1, r3
- adds r1, r4, r1
- ldr r0, [r2, 0x8]
- lsls r1, 1
- adds r1, r0
- ldrh r2, [r1]
- ldr r0, _0805907C @ =0x0000f3ff
- ands r0, r2
- strh r0, [r1]
-_08059076:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0805907C: .4byte 0x0000f3ff
- thumb_func_end sub_8059024
-
- thumb_func_start sub_8059080
-sub_8059080: @ 8059080
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r3, r1, 16
- adds r5, r3, 0
- lsls r2, 24
- lsrs r2, 24
- adds r6, r2, 0
- ldr r0, _080590A4 @ =0x0000027f
- cmp r3, r0
- bhi _080590A8
- ldr r0, [r4, 0x10]
- ldr r1, [r0, 0x14]
- lsls r0, r3, 2
- adds r0, r1
- ldr r0, [r0]
- adds r1, r2, 0
- b _080590C8
- .align 2, 0
-_080590A4: .4byte 0x0000027f
-_080590A8:
- ldr r0, _080590B4 @ =0x000003ff
- cmp r3, r0
- bls _080590B8
- movs r0, 0xFF
- b _080590CC
- .align 2, 0
-_080590B4: .4byte 0x000003ff
-_080590B8:
- ldr r0, [r4, 0x14]
- ldr r1, [r0, 0x14]
- lsls r0, r5, 2
- adds r0, r1
- ldr r1, _080590D4 @ =0xfffff600
- adds r0, r1
- ldr r0, [r0]
- adds r1, r6, 0
-_080590C8:
- bl sub_8058F1C
-_080590CC:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080590D4: .4byte 0xfffff600
- thumb_func_end sub_8059080
-
- thumb_func_start sub_80590D8
-sub_80590D8: @ 80590D8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r0, _08059144 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _08059148 @ =0x00000898
- adds r4, r0, r1
- ldr r0, _0805914C @ =gUnknown_3005040
- ldr r0, [r0]
- mov r8, r0
- ldr r0, _08059150 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r2, 0
- ldrsh r6, [r0, r2]
- movs r1, 0x2
- ldrsh r0, [r0, r1]
- adds r1, r0, 0
- adds r1, 0xE
- cmp r0, r1
- bge _08059138
- mov r12, r1
- ldr r2, _08059154 @ =gUnknown_2031DFC
- mov r9, r2
- lsls r7, r6, 1
-_0805910A:
- adds r1, r6, 0
- adds r3, r1, 0
- adds r3, 0xF
- adds r5, r0, 0x1
- cmp r1, r3
- bge _08059132
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- lsls r0, 1
- add r0, r9
- adds r2, r7, r0
- subs r1, r3, r1
-_08059124:
- ldrh r0, [r2]
- strh r0, [r4]
- adds r4, 0x2
- adds r2, 0x2
- subs r1, 0x1
- cmp r1, 0
- bne _08059124
-_08059132:
- adds r0, r5, 0
- cmp r0, r12
- blt _0805910A
-_08059138:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08059144: .4byte gSaveBlock2Ptr
-_08059148: .4byte 0x00000898
-_0805914C: .4byte gUnknown_3005040
-_08059150: .4byte gSaveBlock1Ptr
-_08059154: .4byte gUnknown_2031DFC
- thumb_func_end sub_80590D8
-
- thumb_func_start sub_8059158
-sub_8059158: @ 8059158
- push {r4,lr}
- movs r2, 0
- movs r1, 0
- ldr r0, _08059184 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r4, _08059188 @ =0x00000898
- adds r3, r0, r4
- ldr r4, _0805918C @ =0x000001ff
-_08059168:
- lsls r0, r1, 1
- adds r0, r3, r0
- ldrh r0, [r0]
- orrs r2, r0
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, r4
- bls _08059168
- cmp r2, 0
- beq _08059190
- movs r0, 0
- b _08059192
- .align 2, 0
-_08059184: .4byte gSaveBlock2Ptr
-_08059188: .4byte 0x00000898
-_0805918C: .4byte 0x000001ff
-_08059190:
- movs r0, 0x1
-_08059192:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8059158
-
- thumb_func_start sub_8059198
-sub_8059198: @ 8059198
- push {lr}
- sub sp, 0x4
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080591B8 @ =gSaveBlock2Ptr
- ldr r1, [r0]
- ldr r0, _080591BC @ =0x00000898
- adds r1, r0
- ldr r2, _080591C0 @ =0x01000100
- mov r0, sp
- bl CpuSet
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080591B8: .4byte gSaveBlock2Ptr
-_080591BC: .4byte 0x00000898
-_080591C0: .4byte 0x01000100
- thumb_func_end sub_8059198
-
- thumb_func_start sub_80591C4
-sub_80591C4: @ 80591C4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r0, _0805923C @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _08059240 @ =0x00000898
- adds r4, r0, r1
- bl sub_8059158
- cmp r0, 0
- bne _08059230
- ldr r0, _08059244 @ =gUnknown_3005040
- ldr r0, [r0]
- mov r8, r0
- ldr r0, _08059248 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r2, 0
- ldrsh r6, [r0, r2]
- movs r1, 0x2
- ldrsh r0, [r0, r1]
- adds r1, r0, 0
- adds r1, 0xE
- cmp r0, r1
- bge _0805922C
- mov r12, r1
- ldr r2, _0805924C @ =gUnknown_2031DFC
- mov r9, r2
- lsls r7, r6, 1
-_080591FE:
- adds r1, r6, 0
- adds r3, r1, 0
- adds r3, 0xF
- adds r5, r0, 0x1
- cmp r1, r3
- bge _08059226
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- lsls r0, 1
- add r0, r9
- adds r2, r7, r0
- subs r1, r3, r1
-_08059218:
- ldrh r0, [r4]
- strh r0, [r2]
- adds r4, 0x2
- adds r2, 0x2
- subs r1, 0x1
- cmp r1, 0
- bne _08059218
-_08059226:
- adds r0, r5, 0
- cmp r0, r12
- blt _080591FE
-_0805922C:
- bl sub_8059198
-_08059230:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0805923C: .4byte gSaveBlock2Ptr
-_08059240: .4byte 0x00000898
-_08059244: .4byte gUnknown_3005040
-_08059248: .4byte gSaveBlock1Ptr
-_0805924C: .4byte gUnknown_2031DFC
- thumb_func_end sub_80591C4
-
- thumb_func_start sub_8059250
-sub_8059250: @ 8059250
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r1, r0, 24
- adds r2, r1, 0
- ldr r0, _0805929C @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r3, _080592A0 @ =0x00000898
- adds r3, r0, r3
- str r3, [sp, 0x4]
- ldr r0, _080592A4 @ =gUnknown_3005040
- ldr r0, [r0]
- str r0, [sp]
- movs r4, 0
- mov r9, r4
- mov r8, r4
- ldr r0, _080592A8 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r3, 0
- ldrsh r6, [r0, r3]
- str r6, [sp, 0x8]
- movs r4, 0x2
- ldrsh r5, [r0, r4]
- movs r7, 0xF
- movs r6, 0xE
- mov r12, r6
- cmp r1, 0x2
- beq _080592B6
- cmp r1, 0x2
- bgt _080592AC
- cmp r1, 0x1
- beq _080592BE
- b _080592D6
- .align 2, 0
-_0805929C: .4byte gSaveBlock2Ptr
-_080592A0: .4byte 0x00000898
-_080592A4: .4byte gUnknown_3005040
-_080592A8: .4byte gSaveBlock1Ptr
-_080592AC:
- cmp r2, 0x3
- beq _080592C8
- cmp r2, 0x4
- beq _080592D0
- b _080592D6
-_080592B6:
- adds r5, 0x1
- movs r0, 0xD
- mov r12, r0
- b _080592D6
-_080592BE:
- movs r1, 0x1
- mov r8, r1
- movs r3, 0xD
- mov r12, r3
- b _080592D6
-_080592C8:
- ldr r4, [sp, 0x8]
- adds r4, 0x1
- str r4, [sp, 0x8]
- b _080592D4
-_080592D0:
- movs r6, 0x1
- mov r9, r6
-_080592D4:
- movs r7, 0xE
-_080592D6:
- movs r1, 0
- cmp r1, r12
- bge _0805931A
- ldr r0, _08059330 @ =gUnknown_2031DFC
- mov r10, r0
-_080592E0:
- adds r4, r1, 0x1
- cmp r7, 0
- beq _08059314
- adds r0, r1, r5
- ldr r3, [sp]
- adds r2, r3, 0
- muls r2, r0
- add r1, r8
- lsls r0, r1, 4
- subs r0, r1
- add r0, r9
- ldr r6, [sp, 0x8]
- adds r2, r6, r2
- adds r3, r7, 0
- lsls r2, 1
- add r2, r10
- lsls r0, 1
- ldr r6, [sp, 0x4]
- adds r1, r0, r6
-_08059306:
- ldrh r0, [r1]
- strh r0, [r2]
- adds r1, 0x2
- adds r2, 0x2
- subs r3, 0x1
- cmp r3, 0
- bne _08059306
-_08059314:
- adds r1, r4, 0
- cmp r1, r12
- blt _080592E0
-_0805931A:
- bl sub_8059198
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08059330: .4byte gUnknown_2031DFC
- thumb_func_end sub_8059250
-
- thumb_func_start sub_8059334
-sub_8059334: @ 8059334
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- mov r8, r1
- cmp r7, 0
- blt _08059374
- ldr r1, _0805936C @ =gUnknown_3005040
- ldr r2, [r1]
- cmp r7, r2
- bge _08059374
- mov r0, r8
- cmp r0, 0
- blt _08059374
- ldr r0, [r1, 0x4]
- cmp r8, r0
- bge _08059374
- mov r0, r8
- muls r0, r2
- adds r0, r7, r0
- ldr r1, [r1, 0x8]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, _08059370 @ =0x000003ff
- cmp r1, r0
- beq _08059422
- b _080593B0
- .align 2, 0
-_0805936C: .4byte gUnknown_3005040
-_08059370: .4byte 0x000003ff
-_08059374:
- ldr r0, _080593CC @ =gMapHeader
- ldr r6, [r0]
- subs r0, r7, 0x7
- ldrb r5, [r6, 0x18]
- lsls r1, r5, 3
- adds r0, r1
- adds r1, r5, 0
- bl __modsi3
- adds r4, r0, 0
- mov r0, r8
- subs r0, 0x7
- ldrb r1, [r6, 0x19]
- lsls r2, r1, 3
- adds r0, r2
- bl __modsi3
- muls r0, r5
- adds r4, r0
- ldr r0, [r6, 0x8]
- lsls r4, 1
- adds r4, r0
- ldrh r1, [r4]
- movs r2, 0xC0
- lsls r2, 4
- adds r0, r2, 0
- orrs r0, r1
- ldr r1, _080593D0 @ =0x000003ff
- cmp r0, r1
- beq _08059422
-_080593B0:
- ldr r1, _080593D4 @ =gUnknown_3005040
- ldr r0, [r1]
- subs r0, 0x8
- cmp r7, r0
- blt _080593DC
- ldr r0, _080593D8 @ =gUnknown_2036E24
- ldrb r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _08059422
- movs r0, 0x4
- b _08059432
- .align 2, 0
-_080593CC: .4byte gMapHeader
-_080593D0: .4byte 0x000003ff
-_080593D4: .4byte gUnknown_3005040
-_080593D8: .4byte gUnknown_2036E24
-_080593DC:
- cmp r7, 0x6
- bgt _080593F4
- ldr r0, _080593F0 @ =gUnknown_2036E24
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08059422
- movs r0, 0x3
- b _08059432
- .align 2, 0
-_080593F0: .4byte gUnknown_2036E24
-_080593F4:
- ldr r0, [r1, 0x4]
- subs r0, 0x7
- cmp r8, r0
- blt _08059410
- ldr r0, _0805940C @ =gUnknown_2036E24
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08059422
- movs r0, 0x1
- b _08059432
- .align 2, 0
-_0805940C: .4byte gUnknown_2036E24
-_08059410:
- mov r0, r8
- cmp r0, 0x6
- bgt _08059430
- ldr r0, _08059428 @ =gUnknown_2036E24
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0805942C
-_08059422:
- movs r0, 0x1
- negs r0, r0
- b _08059432
- .align 2, 0
-_08059428: .4byte gUnknown_2036E24
-_0805942C:
- movs r0, 0x2
- b _08059432
-_08059430:
- movs r0, 0
-_08059432:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8059334
-
- thumb_func_start GetPostCameraMoveMapBorderId
-GetPostCameraMoveMapBorderId: @ 805943C
- push {r4,lr}
- adds r3, r1, 0
- ldr r1, _08059460 @ =gSaveBlock1Ptr
- ldr r1, [r1]
- movs r4, 0
- ldrsh r2, [r1, r4]
- adds r0, 0x7
- adds r2, r0
- movs r0, 0x2
- ldrsh r1, [r1, r0]
- adds r3, 0x7
- adds r1, r3
- adds r0, r2, 0
- bl sub_8059334
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08059460: .4byte gSaveBlock1Ptr
- thumb_func_end GetPostCameraMoveMapBorderId
-
- thumb_func_start CanCameraMoveInDirection
-CanCameraMoveInDirection: @ 8059464
- push {r4,r5,lr}
- ldr r1, _0805949C @ =gSaveBlock1Ptr
- ldr r4, [r1]
- movs r1, 0
- ldrsh r3, [r4, r1]
- ldr r2, _080594A0 @ =gUnknown_826D2D8
- lsls r0, 3
- adds r1, r0, r2
- ldr r1, [r1]
- adds r1, 0x7
- adds r3, r1
- movs r5, 0x2
- ldrsh r1, [r4, r5]
- adds r2, 0x4
- adds r0, r2
- ldr r0, [r0]
- adds r0, 0x7
- adds r1, r0
- adds r0, r3, 0
- bl sub_8059334
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080594A4
- movs r0, 0x1
- b _080594A6
- .align 2, 0
-_0805949C: .4byte gSaveBlock1Ptr
-_080594A0: .4byte gUnknown_826D2D8
-_080594A4:
- movs r0, 0
-_080594A6:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end CanCameraMoveInDirection
-
- thumb_func_start sub_80594AC
-sub_80594AC: @ 80594AC
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- adds r6, r2, 0
- adds r7, r3, 0
- bl mapconnection_get_mapheader
- adds r3, r0, 0
- cmp r4, 0x2
- beq _08059514
- cmp r4, 0x2
- bgt _080594CA
- cmp r4, 0x1
- beq _08059500
- b _08059526
-_080594CA:
- cmp r4, 0x3
- beq _080594E8
- cmp r4, 0x4
- bne _08059526
- ldr r0, _080594E4 @ =gSaveBlock1Ptr
- ldr r1, [r0]
- negs r0, r6
- strh r0, [r1]
- ldr r2, [r5, 0x4]
- ldrh r0, [r1, 0x2]
- subs r0, r2
- b _08059524
- .align 2, 0
-_080594E4: .4byte gSaveBlock1Ptr
-_080594E8:
- ldr r0, _080594FC @ =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r0, [r3]
- ldr r0, [r0]
- strh r0, [r1]
- ldr r2, [r5, 0x4]
- ldrh r0, [r1, 0x2]
- subs r0, r2
- b _08059524
- .align 2, 0
-_080594FC: .4byte gSaveBlock1Ptr
-_08059500:
- ldr r0, _08059510 @ =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r2, [r5, 0x4]
- ldrh r0, [r1]
- subs r0, r2
- strh r0, [r1]
- negs r0, r7
- b _08059524
- .align 2, 0
-_08059510: .4byte gSaveBlock1Ptr
-_08059514:
- ldr r0, _0805952C @ =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r2, [r5, 0x4]
- ldrh r0, [r1]
- subs r0, r2
- strh r0, [r1]
- ldr r0, [r3]
- ldr r0, [r0, 0x4]
-_08059524:
- strh r0, [r1, 0x2]
-_08059526:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0805952C: .4byte gSaveBlock1Ptr
- thumb_func_end sub_80594AC
-
- thumb_func_start CameraMove
-CameraMove: @ 8059530
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r10, r0
- mov r9, r1
- ldr r1, _08059570 @ =gUnknown_2036E18
- ldrb r0, [r1]
- movs r1, 0x2
- negs r1, r1
- ands r1, r0
- ldr r2, _08059570 @ =gUnknown_2036E18
- strb r1, [r2]
- mov r0, r10
- mov r1, r9
- bl GetPostCameraMoveMapBorderId
- adds r7, r0, 0
- adds r0, r7, 0x1
- cmp r0, 0x1
- bhi _08059578
- ldr r0, _08059574 @ =gSaveBlock1Ptr
- ldr r1, [r0]
- ldrh r0, [r1]
- add r0, r10
- strh r0, [r1]
- ldrh r0, [r1, 0x2]
- add r0, r9
- strh r0, [r1, 0x2]
- b _080595E2
- .align 2, 0
-_08059570: .4byte gUnknown_2036E18
-_08059574: .4byte gSaveBlock1Ptr
-_08059578:
- bl sub_80590D8
- ldr r1, _080595F8 @ =gSaveBlock1Ptr
- ldr r0, [r1]
- movs r2, 0
- ldrsh r5, [r0, r2]
- movs r1, 0x2
- ldrsh r6, [r0, r1]
- lsls r2, r7, 24
- lsrs r2, 24
- mov r8, r2
- mov r0, r8
- adds r1, r5, 0
- adds r2, r6, 0
- bl sub_8059600
- adds r4, r0, 0
- adds r1, r7, 0
- mov r2, r10
- mov r3, r9
- bl sub_80594AC
- ldrb r0, [r4, 0x8]
- ldrb r1, [r4, 0x9]
- bl sub_8055864
- ldr r1, _080595FC @ =gUnknown_2036E18
- ldrb r0, [r1]
- movs r1, 0x1
- orrs r0, r1
- ldr r2, _080595FC @ =gUnknown_2036E18
- strb r0, [r2]
- ldr r0, _080595F8 @ =gSaveBlock1Ptr
- ldr r1, [r0]
- movs r2, 0
- ldrsh r0, [r1, r2]
- subs r5, r0
- ldr r0, _080595FC @ =gUnknown_2036E18
- str r5, [r0, 0x4]
- movs r2, 0x2
- ldrsh r0, [r1, r2]
- subs r6, r0
- ldr r0, _080595FC @ =gUnknown_2036E18
- str r6, [r0, 0x8]
- ldrh r0, [r1]
- add r0, r10
- strh r0, [r1]
- ldrh r0, [r1, 0x2]
- add r0, r9
- strh r0, [r1, 0x2]
- mov r0, r8
- bl sub_8059250
-_080595E2:
- ldr r0, _080595FC @ =gUnknown_2036E18
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r0, 31
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080595F8: .4byte gSaveBlock1Ptr
-_080595FC: .4byte gUnknown_2036E18
- thumb_func_end CameraMove
-
- thumb_func_start sub_8059600
-sub_8059600: @ 8059600
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r9, r1
- mov r8, r2
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _0805963C @ =gMapHeader
- ldr r0, [r0, 0xC]
- ldr r7, [r0]
- ldr r4, [r0, 0x4]
- movs r5, 0
- cmp r5, r7
- bge _08059648
-_0805961E:
- ldrb r0, [r4]
- cmp r0, r6
- bne _08059640
- adds r0, r6, 0
- mov r1, r9
- mov r2, r8
- adds r3, r4, 0
- bl sub_8059658
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08059640
- adds r0, r4, 0
- b _0805964A
- .align 2, 0
-_0805963C: .4byte gMapHeader
-_08059640:
- adds r5, 0x1
- adds r4, 0xC
- cmp r5, r7
- blt _0805961E
-_08059648:
- movs r0, 0
-_0805964A:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8059600
-
- thumb_func_start sub_8059658
-sub_8059658: @ 8059658
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r1, 0
- mov r8, r2
- adds r5, r3, 0
- lsls r0, 24
- lsrs r4, r0, 24
- adds r6, r4, 0
- adds r0, r5, 0
- bl mapconnection_get_mapheader
- adds r2, r0, 0
- cmp r4, 0x1
- blt _080596B0
- cmp r4, 0x2
- bgt _08059690
- ldr r0, _0805968C @ =gMapHeader
- ldr r0, [r0]
- ldr r1, [r0]
- ldr r0, [r2]
- ldr r2, [r0]
- ldr r3, [r5, 0x4]
- adds r0, r7, 0
- b _080596A2
- .align 2, 0
-_0805968C: .4byte gMapHeader
-_08059690:
- cmp r6, 0x4
- bgt _080596B0
- ldr r0, _080596AC @ =gMapHeader
- ldr r0, [r0]
- ldr r1, [r0, 0x4]
- ldr r0, [r2]
- ldr r2, [r0, 0x4]
- ldr r3, [r5, 0x4]
- mov r0, r8
-_080596A2:
- bl sub_80596BC
- lsls r0, 24
- lsrs r0, 24
- b _080596B2
- .align 2, 0
-_080596AC: .4byte gMapHeader
-_080596B0:
- movs r0, 0
-_080596B2:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8059658
-
- thumb_func_start sub_80596BC
-sub_80596BC: @ 80596BC
- push {r4,lr}
- adds r4, r0, 0
- adds r0, r2, 0
- adds r2, r3, 0
- cmp r3, 0
- bge _080596CA
- movs r3, 0
-_080596CA:
- adds r2, r0, r2
- cmp r2, r1
- bge _080596D2
- adds r1, r2, 0
-_080596D2:
- cmp r3, r4
- bgt _080596DE
- cmp r4, r1
- bgt _080596DE
- movs r0, 0x1
- b _080596E0
-_080596DE:
- movs r0, 0
-_080596E0:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80596BC
-
- thumb_func_start sub_80596E8
-sub_80596E8: @ 80596E8
- push {lr}
- cmp r0, 0
- blt _080596F6
- cmp r0, r1
- bge _080596F6
- movs r0, 0x1
- b _080596F8
-_080596F6:
- movs r0, 0
-_080596F8:
- pop {r1}
- bx r1
- thumb_func_end sub_80596E8
-
- thumb_func_start sub_80596FC
-sub_80596FC: @ 80596FC
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- bl mapconnection_get_mapheader
- adds r1, r0, 0
- ldrb r0, [r4]
- cmp r0, 0x1
- blt _08059734
- cmp r0, 0x2
- bgt _08059722
- ldr r0, [r4, 0x4]
- subs r0, r5, r0
- ldr r1, [r1]
- ldr r1, [r1]
- bl sub_80596E8
- b _08059736
-_08059722:
- cmp r0, 0x4
- bgt _08059734
- ldr r0, [r4, 0x4]
- subs r0, r6, r0
- ldr r1, [r1]
- ldr r1, [r1, 0x4]
- bl sub_80596E8
- b _08059736
-_08059734:
- movs r0, 0
-_08059736:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80596FC
-
- thumb_func_start sub_805973C
-sub_805973C: @ 805973C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- lsls r1, 16
- lsrs r1, 16
- ldr r2, _0805975C @ =gMapHeader
- ldr r0, [r2, 0xC]
- cmp r0, 0
- bne _08059764
- b _080597DA
- .align 2, 0
-_0805975C: .4byte gMapHeader
-_08059760:
- adds r0, r4, 0
- b _080597DC
-_08059764:
- ldr r7, [r0]
- ldr r4, [r0, 0x4]
- movs r6, 0
- cmp r6, r7
- bge _080597DA
- lsls r0, r1, 16
- asrs r5, r0, 16
- mov r9, r2
- mov r1, r8
- lsls r0, r1, 16
- asrs r0, 16
- mov r10, r0
-_0805977C:
- ldrb r1, [r4]
- adds r3, r1, 0
- subs r0, r1, 0x5
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _080597D2
- cmp r1, 0x2
- bne _08059792
- cmp r5, 0x6
- bgt _080597D2
-_08059792:
- cmp r1, 0x1
- bne _080597A2
- mov r2, r9
- ldr r0, [r2]
- ldr r0, [r0, 0x4]
- adds r0, 0x7
- cmp r5, r0
- blt _080597D2
-_080597A2:
- mov r0, r8
- lsls r2, r0, 16
- cmp r1, 0x3
- bne _080597B0
- mov r1, r10
- cmp r1, 0x6
- bgt _080597D2
-_080597B0:
- cmp r3, 0x4
- bne _080597C2
- asrs r1, r2, 16
- mov r3, r9
- ldr r0, [r3]
- ldr r0, [r0]
- adds r0, 0x7
- cmp r1, r0
- blt _080597D2
-_080597C2:
- asrs r1, r2, 16
- subs r1, 0x7
- adds r0, r4, 0
- subs r2, r5, 0x7
- bl sub_80596FC
- cmp r0, 0x1
- beq _08059760
-_080597D2:
- adds r6, 0x1
- adds r4, 0xC
- cmp r6, r7
- blt _0805977C
-_080597DA:
- movs r0, 0
-_080597DC:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805973C
-
- thumb_func_start sub_80597EC
-sub_80597EC: @ 80597EC
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- ldr r2, _08059804 @ =gSaveBlock1Ptr
- ldr r2, [r2]
- subs r0, 0x7
- strh r0, [r2]
- subs r1, 0x7
- strh r1, [r2, 0x2]
- bx lr
- .align 2, 0
-_08059804: .4byte gSaveBlock1Ptr
- thumb_func_end sub_80597EC
-
- thumb_func_start sav1_camera_get_focus_coords
-sav1_camera_get_focus_coords: @ 8059808
- ldr r2, _0805981C @ =gSaveBlock1Ptr
- ldr r3, [r2]
- ldrh r2, [r3]
- adds r2, 0x7
- strh r2, [r0]
- ldrh r0, [r3, 0x2]
- adds r0, 0x7
- strh r0, [r1]
- bx lr
- .align 2, 0
-_0805981C: .4byte gSaveBlock1Ptr
- thumb_func_end sav1_camera_get_focus_coords
-
- thumb_func_start SetCameraCoords
-SetCameraCoords: @ 8059820
- ldr r2, _0805982C @ =gSaveBlock1Ptr
- ldr r2, [r2]
- strh r0, [r2]
- strh r1, [r2, 0x2]
- bx lr
- .align 2, 0
-_0805982C: .4byte gSaveBlock1Ptr
- thumb_func_end SetCameraCoords
-
- thumb_func_start GetCameraCoords
-GetCameraCoords: @ 8059830
- ldr r2, _08059840 @ =gSaveBlock1Ptr
- ldr r3, [r2]
- ldrh r2, [r3]
- strh r2, [r0]
- ldrh r0, [r3, 0x2]
- strh r0, [r1]
- bx lr
- .align 2, 0
-_08059840: .4byte gSaveBlock1Ptr
- thumb_func_end GetCameraCoords
-
- thumb_func_start copy_tileset_patterns_to_vram
-copy_tileset_patterns_to_vram: @ 8059844
- push {r4-r7,lr}
- sub sp, 0x4
- adds r3, r0, 0
- lsls r1, 16
- lsrs r4, r1, 16
- adds r6, r4, 0
- lsls r2, 16
- lsrs r5, r2, 16
- adds r7, r5, 0
- cmp r3, 0
- beq _08059880
- ldrb r0, [r3]
- cmp r0, 0
- bne _08059870
- ldr r1, [r3, 0x4]
- lsls r2, r4, 21
- lsrs r2, 16
- movs r0, 0x2
- adds r3, r5, 0
- bl LoadBgTiles
- b _08059880
-_08059870:
- ldr r1, [r3, 0x4]
- lsls r2, r6, 5
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- adds r3, r7, 0
- bl sub_80F68F0
-_08059880:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end copy_tileset_patterns_to_vram
-
- thumb_func_start copy_tileset_patterns_to_vram2
-copy_tileset_patterns_to_vram2: @ 8059888
- push {r4-r7,lr}
- sub sp, 0x4
- adds r3, r0, 0
- lsls r1, 16
- lsrs r4, r1, 16
- adds r6, r4, 0
- lsls r2, 16
- lsrs r5, r2, 16
- adds r7, r5, 0
- cmp r3, 0
- beq _080598C4
- ldrb r0, [r3]
- cmp r0, 0
- bne _080598B4
- ldr r1, [r3, 0x4]
- lsls r2, r4, 21
- lsrs r2, 16
- movs r0, 0x2
- adds r3, r5, 0
- bl LoadBgTiles
- b _080598C4
-_080598B4:
- ldr r1, [r3, 0x4]
- lsls r2, r6, 5
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- adds r3, r7, 0
- bl sub_80F69E8
-_080598C4:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end copy_tileset_patterns_to_vram2
-
- thumb_func_start sub_80598CC
-sub_80598CC: @ 80598CC
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r1, 16
- lsrs r5, r1, 16
- ldr r0, _080598EC @ =gUnknown_2036E28
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _080598F0
- cmp r0, 0x1
- ble _0805993A
- cmp r0, 0x2
- beq _08059904
- cmp r0, 0x3
- beq _08059918
- b _0805993A
- .align 2, 0
-_080598EC: .4byte gUnknown_2036E28
-_080598F0:
- lsls r4, 1
- ldr r0, _08059900 @ =gPlttBufferUnfaded
- adds r0, r4, r0
- adds r1, r5, 0
- bl TintPalette_GrayScale
- b _0805992C
- .align 2, 0
-_08059900: .4byte gPlttBufferUnfaded
-_08059904:
- lsls r4, 1
- ldr r0, _08059914 @ =gPlttBufferUnfaded
- adds r0, r4, r0
- adds r1, r5, 0
- bl TintPalette_SepiaTone
- b _0805992C
- .align 2, 0
-_08059914: .4byte gPlttBufferUnfaded
-_08059918:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8111F38
- lsls r4, 1
- ldr r0, _08059940 @ =gPlttBufferUnfaded
- adds r0, r4, r0
- adds r1, r5, 0
- bl TintPalette_GrayScale
-_0805992C:
- ldr r0, _08059940 @ =gPlttBufferUnfaded
- adds r0, r4, r0
- ldr r1, _08059944 @ =gPlttBufferFaded
- adds r1, r4, r1
- adds r2, r5, 0
- bl CpuSet
-_0805993A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08059940: .4byte gPlttBufferUnfaded
-_08059944: .4byte gPlttBufferFaded
- thumb_func_end sub_80598CC
-
- thumb_func_start sub_8059948
-sub_8059948: @ 8059948
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r6, r1, 24
- ldr r0, _08059968 @ =gUnknown_2036E28
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0805996C
- cmp r0, 0x1
- ble _080599B8
- cmp r0, 0x2
- beq _08059980
- cmp r0, 0x3
- beq _08059994
- b _080599B8
- .align 2, 0
-_08059968: .4byte gUnknown_2036E28
-_0805996C:
- lsls r4, 5
- ldr r0, _0805997C @ =gPlttBufferUnfaded
- adds r0, r4, r0
- lsls r1, r6, 4
- bl TintPalette_GrayScale
- b _080599AA
- .align 2, 0
-_0805997C: .4byte gPlttBufferUnfaded
-_08059980:
- lsls r4, 5
- ldr r0, _08059990 @ =gPlttBufferUnfaded
- adds r0, r4, r0
- lsls r1, r6, 4
- bl TintPalette_SepiaTone
- b _080599AA
- .align 2, 0
-_08059990: .4byte gPlttBufferUnfaded
-_08059994:
- lsls r0, r4, 4
- lsls r5, r6, 4
- adds r1, r5, 0
- bl sub_8111F38
- lsls r4, 5
- ldr r0, _080599C0 @ =gPlttBufferUnfaded
- adds r0, r4, r0
- adds r1, r5, 0
- bl TintPalette_GrayScale
-_080599AA:
- ldr r0, _080599C0 @ =gPlttBufferUnfaded
- adds r0, r4, r0
- ldr r1, _080599C4 @ =gPlttBufferFaded
- adds r1, r4, r1
- lsls r2, r6, 3
- bl CpuFastSet
-_080599B8:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080599C0: .4byte gPlttBufferUnfaded
-_080599C4: .4byte gPlttBufferFaded
- thumb_func_end sub_8059948
-
- thumb_func_start apply_map_tileset_palette
-apply_map_tileset_palette: @ 80599C8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r1, 16
- lsrs r5, r1, 16
- mov r8, r5
- lsls r6, r2, 16
- lsrs r7, r6, 16
- adds r2, r7, 0
- movs r1, 0
- mov r0, sp
- strh r1, [r0]
- cmp r4, 0
- beq _08059A46
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _08059A1C
- mov r0, sp
- adds r1, r5, 0
- movs r2, 0x2
- bl LoadPalette
- ldr r0, [r4, 0x8]
- adds r0, 0x2
- adds r5, 0x1
- lsls r5, 16
- lsrs r5, 16
- subs r4, r7, 0x2
- lsls r2, r4, 16
- lsrs r2, 16
- adds r1, r5, 0
- bl LoadPalette
- lsls r4, 15
- lsrs r4, 16
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80598CC
- b _08059A46
-_08059A1C:
- cmp r0, 0x1
- bne _08059A36
- ldr r0, [r4, 0x8]
- adds r0, 0xE0
- adds r1, r5, 0
- adds r2, r7, 0
- bl LoadPalette
- lsrs r1, r6, 17
- adds r0, r5, 0
- bl sub_80598CC
- b _08059A46
-_08059A36:
- ldr r0, [r4, 0x8]
- mov r1, r8
- bl LoadCompressedPalette
- lsrs r1, r6, 17
- mov r0, r8
- bl sub_80598CC
-_08059A46:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end apply_map_tileset_palette
-
- thumb_func_start sub_8059A54
-sub_8059A54: @ 8059A54
- push {lr}
- ldr r0, [r0, 0x10]
- movs r1, 0xA0
- lsls r1, 2
- movs r2, 0
- bl copy_tileset_patterns_to_vram
- pop {r0}
- bx r0
- thumb_func_end sub_8059A54
-
- thumb_func_start sub_8059A68
-sub_8059A68: @ 8059A68
- push {lr}
- ldr r0, [r0, 0x14]
- movs r1, 0xC0
- lsls r1, 1
- movs r2, 0xA0
- lsls r2, 2
- bl copy_tileset_patterns_to_vram
- pop {r0}
- bx r0
- thumb_func_end sub_8059A68
-
- thumb_func_start copy_map_tileset2_to_vram_2
-copy_map_tileset2_to_vram_2: @ 8059A7C
- push {lr}
- ldr r0, [r0, 0x14]
- movs r1, 0xC0
- lsls r1, 1
- movs r2, 0xA0
- lsls r2, 2
- bl copy_tileset_patterns_to_vram2
- pop {r0}
- bx r0
- thumb_func_end copy_map_tileset2_to_vram_2
-
- thumb_func_start sub_8059A90
-sub_8059A90: @ 8059A90
- push {lr}
- ldr r0, [r0, 0x10]
- movs r1, 0
- movs r2, 0xE0
- bl apply_map_tileset_palette
- pop {r0}
- bx r0
- thumb_func_end sub_8059A90
-
- thumb_func_start sub_8059AA0
-sub_8059AA0: @ 8059AA0
- push {lr}
- ldr r0, [r0, 0x14]
- movs r1, 0x70
- movs r2, 0xC0
- bl apply_map_tileset_palette
- pop {r0}
- bx r0
- thumb_func_end sub_8059AA0
-
- thumb_func_start copy_map_tileset1_tileset2_to_vram
-copy_map_tileset1_tileset2_to_vram: @ 8059AB0
- push {r4,r5,lr}
- adds r5, r0, 0
- cmp r5, 0
- beq _08059AD2
- ldr r0, [r5, 0x10]
- movs r4, 0xA0
- lsls r4, 2
- adds r1, r4, 0
- movs r2, 0
- bl copy_tileset_patterns_to_vram2
- ldr r0, [r5, 0x14]
- movs r1, 0xC0
- lsls r1, 1
- adds r2, r4, 0
- bl copy_tileset_patterns_to_vram2
-_08059AD2:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end copy_map_tileset1_tileset2_to_vram
-
- thumb_func_start apply_map_tileset1_tileset2_palette
-apply_map_tileset1_tileset2_palette: @ 8059AD8
- push {r4,lr}
- adds r4, r0, 0
- cmp r4, 0
- beq _08059AEA
- bl sub_8059A90
- adds r0, r4, 0
- bl sub_8059AA0
-_08059AEA:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end apply_map_tileset1_tileset2_palette
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/fldeff_cut.s b/asm/fldeff_cut.s
index 2497c695d..ac5ab0a72 100644
--- a/asm/fldeff_cut.s
+++ b/asm/fldeff_cut.s
@@ -380,7 +380,7 @@ sub_8097B50: @ 8097B50
asrs r0, 16
lsrs r7, r1, 16
asrs r1, 16
- bl sub_8058E48
+ bl MapGridGetMetatileIdAt
lsls r0, 16
lsrs r2, r0, 16
ldr r1, _08097B84 @ =gUnknown_83D4100
diff --git a/asm/item_use.s b/asm/item_use.s
index 0b6dacdd4..fce57bc88 100644
--- a/asm/item_use.s
+++ b/asm/item_use.s
@@ -544,7 +544,7 @@ _080A13D4:
ldrsh r0, [r0, r1]
movs r2, 0
ldrsh r1, [r4, r2]
- bl sub_8058DC4
+ bl MapGridIsImpassableAt
lsls r0, 24
cmp r0, 0
beq _080A13D0
diff --git a/asm/overworld.s b/asm/overworld.s
index 071cca7e6..679203034 100644
--- a/asm/overworld.s
+++ b/asm/overworld.s
@@ -1723,7 +1723,7 @@ sub_8055864: @ 8055864
ldr r0, [r4]
bl copy_map_tileset2_to_vram_2
ldr r0, [r4]
- bl sub_8059AA0
+ bl apply_map_tileset2_palette
movs r4, 0x7
_080558D4:
lsls r0, r4, 24
@@ -4024,14 +4024,14 @@ _08056AEE:
_08056AF4:
ldr r0, _08056B00 @ =gMapHeader
ldr r0, [r0]
- bl sub_8059A54
+ bl copy_map_tileset1_to_vram
b _08056B62
.align 2, 0
_08056B00: .4byte gMapHeader
_08056B04:
ldr r0, _08056B10 @ =gMapHeader
ldr r0, [r0]
- bl sub_8059A68
+ bl copy_map_tileset2_to_vram
b _08056B62
.align 2, 0
_08056B10: .4byte gMapHeader
@@ -4166,14 +4166,14 @@ _08056C2A:
_08056C30:
ldr r0, _08056C3C @ =gMapHeader
ldr r0, [r0]
- bl sub_8059A54
+ bl copy_map_tileset1_to_vram
b _08056CCA
.align 2, 0
_08056C3C: .4byte gMapHeader
_08056C40:
ldr r0, _08056C4C @ =gMapHeader
ldr r0, [r0]
- bl sub_8059A68
+ bl copy_map_tileset2_to_vram
b _08056CCA
.align 2, 0
_08056C4C: .4byte gMapHeader
@@ -4355,14 +4355,14 @@ _08056DCA:
_08056DD0:
ldr r0, _08056DDC @ =gMapHeader
ldr r0, [r0]
- bl sub_8059A54
+ bl copy_map_tileset1_to_vram
b _08056E3E
.align 2, 0
_08056DDC: .4byte gMapHeader
_08056DE0:
ldr r0, _08056DEC @ =gMapHeader
ldr r0, [r0]
- bl sub_8059A68
+ bl copy_map_tileset2_to_vram
b _08056E3E
.align 2, 0
_08056DEC: .4byte gMapHeader
@@ -4690,7 +4690,7 @@ mli4_mapscripts_and_other: @ 805709C
adds r4, 0x2
mov r0, sp
adds r1, r4, 0
- bl sav1_camera_get_focus_coords
+ bl GetCameraFocusCoords
bl sub_8055A6C
adds r5, r0, 0
mov r0, sp
@@ -4792,7 +4792,7 @@ sub_8057178: @ 8057178
adds r4, 0x2
mov r0, sp
adds r1, r4, 0
- bl sav1_camera_get_focus_coords
+ bl GetCameraFocusCoords
mov r2, sp
ldr r0, _080571A4 @ =gUnknown_300502C
ldrb r1, [r0]
@@ -4801,7 +4801,7 @@ sub_8057178: @ 8057178
lsls r0, 16
lsrs r0, 16
ldrh r1, [r4]
- bl sub_80597EC
+ bl SetCameraFocusCoords
add sp, 0x4
pop {r4}
pop {r0}
@@ -4820,7 +4820,7 @@ sub_80571A8: @ 80571A8
adds r4, 0x2
mov r0, sp
adds r1, r4, 0
- bl sav1_camera_get_focus_coords
+ bl GetCameraFocusCoords
mov r3, sp
mov r2, sp
ldr r0, _08057224 @ =gUnknown_300502C
@@ -5066,14 +5066,14 @@ _080573C2:
_080573C8:
ldr r0, _080573D4 @ =gMapHeader
ldr r0, [r0]
- bl sub_8059A54
+ bl copy_map_tileset1_to_vram
b _08057412
.align 2, 0
_080573D4: .4byte gMapHeader
_080573D8:
ldr r0, _080573E4 @ =gMapHeader
ldr r0, [r0]
- bl sub_8059A68
+ bl copy_map_tileset2_to_vram
b _08057412
.align 2, 0
_080573E4: .4byte gMapHeader
@@ -5415,14 +5415,14 @@ _080576CC:
_080576D2:
ldr r0, _080576DC @ =gMapHeader
ldr r0, [r0]
- bl sub_8059A54
+ bl copy_map_tileset1_to_vram
b _0805772A
.align 2, 0
_080576DC: .4byte gMapHeader
_080576E0:
ldr r0, _080576EC @ =gMapHeader
ldr r0, [r0]
- bl sub_8059A68
+ bl copy_map_tileset2_to_vram
b _0805772A
.align 2, 0
_080576EC: .4byte gMapHeader
@@ -6748,7 +6748,7 @@ _08058074:
ldr r1, [r4, 0x8]
str r0, [sp]
str r1, [sp, 0x4]
- ldr r3, _080580E4 @ =gUnknown_826D2D8
+ ldr r3, _080580E4 @ =gDirectionToVectors
ldrb r0, [r4, 0x3]
lsls r0, 3
adds r0, r3
@@ -6801,7 +6801,7 @@ _080580E0:
ldr r0, _080580F8 @ =gUnknown_81BB9A3
b _08058122
.align 2, 0
-_080580E4: .4byte gUnknown_826D2D8
+_080580E4: .4byte gDirectionToVectors
_080580E8: .4byte 0xffff0000
_080580EC: .4byte 0x0000ffff
_080580F0: .4byte 0xffffff00
@@ -7829,7 +7829,7 @@ _08058854:
bls _08058810
asrs r0, r3, 16
asrs r1, r5, 16
- bl sub_8058DC4
+ bl MapGridIsImpassableAt
lsls r0, 24
lsrs r0, 24
_0805886A:
diff --git a/asm/shop.s b/asm/shop.s
index 25a2311ce..aed90ff85 100644
--- a/asm/shop.s
+++ b/asm/shop.s
@@ -1632,7 +1632,7 @@ _0809B7B2:
movs r3, 0
ldrsh r1, [r2, r3]
adds r1, r7
- bl sub_8058E48
+ bl MapGridGetMetatileIdAt
lsls r0, 16
lsrs r5, r0, 16
mov r0, sp
@@ -1645,7 +1645,7 @@ _0809B7B2:
adds r1, r7, r1
lsls r1, 16
asrs r1, 16
- bl sub_8058F8C
+ bl MapGridGetMetatileLayerTypeAt
lsls r0, 24
lsrs r3, r0, 24
ldr r0, _0809B808 @ =0x0000027f
@@ -2940,7 +2940,7 @@ _0809C238:
adds r5, r1, r0
adds r0, r5, 0
adds r1, r6, 0
- bl sub_8058E48
+ bl MapGridGetMetatileIdAt
movs r2, 0
ldrsh r1, [r7, r2]
lsls r0, 16
@@ -3006,7 +3006,7 @@ _0809C2B8:
adds r5, r1, r0
adds r0, r5, 0
adds r1, r6, 0
- bl sub_8058E48
+ bl MapGridGetMetatileIdAt
movs r1, 0x2
subs r1, r7
lsls r1, 1
diff --git a/asm/start_menu.s b/asm/start_menu.s
index 4a58b11ad..cfd970001 100644
--- a/asm/start_menu.s
+++ b/asm/start_menu.s
@@ -1109,7 +1109,7 @@ _0806F61E:
thumb_func_start sub_806F624
sub_806F624: @ 806F624
push {lr}
- bl sub_80590D8
+ bl save_serialize_map
ldr r1, _0806F63C @ =gUnknown_3000FA4
ldr r0, _0806F640 @ =sub_806F7A8
str r0, [r1]
diff --git a/asm/tileset_anims.s b/asm/tileset_anims.s
index 37280ab70..693962d39 100644
--- a/asm/tileset_anims.s
+++ b/asm/tileset_anims.s
@@ -132,11 +132,11 @@ sub_806FFB0: @ 806FFB0
sub_806FFBC: @ 806FFBC
push {r4,lr}
bl ResetTilesetAnimBuffer
- ldr r2, _08070014 @ =gUnknown_3000FAE
+ ldr r2, _08070014 @ =sPrimaryTilesetCBCounter
ldrh r0, [r2]
adds r0, 0x1
strh r0, [r2]
- ldr r1, _08070018 @ =gUnknown_3000FB0
+ ldr r1, _08070018 @ =sPrimaryTilesetCBBufferSize
lsls r0, 16
lsrs r0, 16
ldrh r1, [r1]
@@ -145,11 +145,11 @@ sub_806FFBC: @ 806FFBC
movs r0, 0
strh r0, [r2]
_0806FFDA:
- ldr r4, _0807001C @ =gUnknown_3000FB2
+ ldr r4, _0807001C @ =sSecondaryTilesetCBCounter
ldrh r0, [r4]
adds r0, 0x1
strh r0, [r4]
- ldr r1, _08070020 @ =gUnknown_3000FB4
+ ldr r1, _08070020 @ =sSecondaryTilesetCBBufferSize
lsls r0, 16
lsrs r0, 16
ldrh r1, [r1]
@@ -158,14 +158,14 @@ _0806FFDA:
movs r0, 0
strh r0, [r4]
_0806FFF2:
- ldr r0, _08070024 @ =gUnknown_3000FB8
+ ldr r0, _08070024 @ =sPrimaryTilesetCB
ldr r1, [r0]
cmp r1, 0
beq _08070000
ldrh r0, [r2]
bl _call_via_r1
_08070000:
- ldr r0, _08070028 @ =gUnknown_3000FBC
+ ldr r0, _08070028 @ =sSecondaryTilesetCB
ldr r1, [r0]
cmp r1, 0
beq _0807000E
@@ -176,23 +176,23 @@ _0807000E:
pop {r0}
bx r0
.align 2, 0
-_08070014: .4byte gUnknown_3000FAE
-_08070018: .4byte gUnknown_3000FB0
-_0807001C: .4byte gUnknown_3000FB2
-_08070020: .4byte gUnknown_3000FB4
-_08070024: .4byte gUnknown_3000FB8
-_08070028: .4byte gUnknown_3000FBC
+_08070014: .4byte sPrimaryTilesetCBCounter
+_08070018: .4byte sPrimaryTilesetCBBufferSize
+_0807001C: .4byte sSecondaryTilesetCBCounter
+_08070020: .4byte sSecondaryTilesetCBBufferSize
+_08070024: .4byte sPrimaryTilesetCB
+_08070028: .4byte sSecondaryTilesetCB
thumb_func_end sub_806FFBC
thumb_func_start cur_mapheader_run_tileset1_func
cur_mapheader_run_tileset1_func: @ 807002C
push {lr}
- ldr r0, _08070058 @ =gUnknown_3000FAE
+ ldr r0, _08070058 @ =sPrimaryTilesetCBCounter
movs r1, 0
strh r1, [r0]
- ldr r0, _0807005C @ =gUnknown_3000FB0
+ ldr r0, _0807005C @ =sPrimaryTilesetCBBufferSize
strh r1, [r0]
- ldr r1, _08070060 @ =gUnknown_3000FB8
+ ldr r1, _08070060 @ =sPrimaryTilesetCB
movs r0, 0
str r0, [r1]
ldr r0, _08070064 @ =gMapHeader
@@ -208,21 +208,21 @@ _08070052:
pop {r0}
bx r0
.align 2, 0
-_08070058: .4byte gUnknown_3000FAE
-_0807005C: .4byte gUnknown_3000FB0
-_08070060: .4byte gUnknown_3000FB8
+_08070058: .4byte sPrimaryTilesetCBCounter
+_0807005C: .4byte sPrimaryTilesetCBBufferSize
+_08070060: .4byte sPrimaryTilesetCB
_08070064: .4byte gMapHeader
thumb_func_end cur_mapheader_run_tileset1_func
thumb_func_start cur_mapheader_run_tileset2_func
cur_mapheader_run_tileset2_func: @ 8070068
push {lr}
- ldr r0, _08070094 @ =gUnknown_3000FB2
+ ldr r0, _08070094 @ =sSecondaryTilesetCBCounter
movs r1, 0
strh r1, [r0]
- ldr r0, _08070098 @ =gUnknown_3000FB4
+ ldr r0, _08070098 @ =sSecondaryTilesetCBBufferSize
strh r1, [r0]
- ldr r1, _0807009C @ =gUnknown_3000FBC
+ ldr r1, _0807009C @ =sSecondaryTilesetCB
movs r0, 0
str r0, [r1]
ldr r0, _080700A0 @ =gMapHeader
@@ -238,9 +238,9 @@ _0807008E:
pop {r0}
bx r0
.align 2, 0
-_08070094: .4byte gUnknown_3000FB2
-_08070098: .4byte gUnknown_3000FB4
-_0807009C: .4byte gUnknown_3000FBC
+_08070094: .4byte sSecondaryTilesetCBCounter
+_08070098: .4byte sSecondaryTilesetCBBufferSize
+_0807009C: .4byte sSecondaryTilesetCB
_080700A0: .4byte gMapHeader
thumb_func_end cur_mapheader_run_tileset2_func
@@ -342,22 +342,22 @@ _0807014C:
thumb_func_start sub_8070154
sub_8070154: @ 8070154
- ldr r1, _0807016C @ =gUnknown_3000FAE
+ ldr r1, _0807016C @ =sPrimaryTilesetCBCounter
movs r0, 0
strh r0, [r1]
- ldr r1, _08070170 @ =gUnknown_3000FB0
+ ldr r1, _08070170 @ =sPrimaryTilesetCBBufferSize
movs r2, 0xA0
lsls r2, 2
adds r0, r2, 0
strh r0, [r1]
- ldr r1, _08070174 @ =gUnknown_3000FB8
+ ldr r1, _08070174 @ =sPrimaryTilesetCB
ldr r0, _08070178 @ =sub_8070120
str r0, [r1]
bx lr
.align 2, 0
-_0807016C: .4byte gUnknown_3000FAE
-_08070170: .4byte gUnknown_3000FB0
-_08070174: .4byte gUnknown_3000FB8
+_0807016C: .4byte sPrimaryTilesetCBCounter
+_08070170: .4byte sPrimaryTilesetCBBufferSize
+_08070174: .4byte sPrimaryTilesetCB
_08070178: .4byte sub_8070120
thumb_func_end sub_8070154
@@ -410,20 +410,20 @@ _080701D0:
thumb_func_start sub_80701D8
sub_80701D8: @ 80701D8
- ldr r1, _080701EC @ =gUnknown_3000FB2
+ ldr r1, _080701EC @ =sSecondaryTilesetCBCounter
movs r0, 0
strh r0, [r1]
- ldr r1, _080701F0 @ =gUnknown_3000FB4
+ ldr r1, _080701F0 @ =sSecondaryTilesetCBBufferSize
movs r0, 0x78
strh r0, [r1]
- ldr r1, _080701F4 @ =gUnknown_3000FBC
+ ldr r1, _080701F4 @ =sSecondaryTilesetCB
ldr r0, _080701F8 @ =sub_80701AC
str r0, [r1]
bx lr
.align 2, 0
-_080701EC: .4byte gUnknown_3000FB2
-_080701F0: .4byte gUnknown_3000FB4
-_080701F4: .4byte gUnknown_3000FBC
+_080701EC: .4byte sSecondaryTilesetCBCounter
+_080701F0: .4byte sSecondaryTilesetCBBufferSize
+_080701F4: .4byte sSecondaryTilesetCB
_080701F8: .4byte sub_80701AC
thumb_func_end sub_80701D8
@@ -474,20 +474,20 @@ _08070248:
thumb_func_start sub_8070250
sub_8070250: @ 8070250
- ldr r1, _08070264 @ =gUnknown_3000FB2
+ ldr r1, _08070264 @ =sSecondaryTilesetCBCounter
movs r0, 0
strh r0, [r1]
- ldr r1, _08070268 @ =gUnknown_3000FB4
+ ldr r1, _08070268 @ =sSecondaryTilesetCBBufferSize
movs r0, 0xA0
strh r0, [r1]
- ldr r1, _0807026C @ =gUnknown_3000FBC
+ ldr r1, _0807026C @ =sSecondaryTilesetCB
ldr r0, _08070270 @ =sub_8070224
str r0, [r1]
bx lr
.align 2, 0
-_08070264: .4byte gUnknown_3000FB2
-_08070268: .4byte gUnknown_3000FB4
-_0807026C: .4byte gUnknown_3000FBC
+_08070264: .4byte sSecondaryTilesetCBCounter
+_08070268: .4byte sSecondaryTilesetCBBufferSize
+_0807026C: .4byte sSecondaryTilesetCB
_08070270: .4byte sub_8070224
thumb_func_end sub_8070250
@@ -531,22 +531,22 @@ _080702B0:
thumb_func_start sub_80702B4
sub_80702B4: @ 80702B4
- ldr r1, _080702CC @ =gUnknown_3000FB2
+ ldr r1, _080702CC @ =sSecondaryTilesetCBCounter
movs r0, 0
strh r0, [r1]
- ldr r1, _080702D0 @ =gUnknown_3000FB4
+ ldr r1, _080702D0 @ =sSecondaryTilesetCBBufferSize
movs r2, 0x80
lsls r2, 1
adds r0, r2, 0
strh r0, [r1]
- ldr r1, _080702D4 @ =gUnknown_3000FBC
+ ldr r1, _080702D4 @ =sSecondaryTilesetCB
ldr r0, _080702D8 @ =sub_807029C
str r0, [r1]
bx lr
.align 2, 0
-_080702CC: .4byte gUnknown_3000FB2
-_080702D0: .4byte gUnknown_3000FB4
-_080702D4: .4byte gUnknown_3000FBC
+_080702CC: .4byte sSecondaryTilesetCBCounter
+_080702D0: .4byte sSecondaryTilesetCBBufferSize
+_080702D4: .4byte sSecondaryTilesetCB
_080702D8: .4byte sub_807029C
thumb_func_end sub_80702B4
@@ -589,20 +589,20 @@ _08070318:
thumb_func_start sub_807031C
sub_807031C: @ 807031C
- ldr r1, _08070330 @ =gUnknown_3000FB2
+ ldr r1, _08070330 @ =sSecondaryTilesetCBCounter
movs r0, 0
strh r0, [r1]
- ldr r1, _08070334 @ =gUnknown_3000FB4
+ ldr r1, _08070334 @ =sSecondaryTilesetCBBufferSize
movs r0, 0xF0
strh r0, [r1]
- ldr r1, _08070338 @ =gUnknown_3000FBC
+ ldr r1, _08070338 @ =sSecondaryTilesetCB
ldr r0, _0807033C @ =sub_8070304
str r0, [r1]
bx lr
.align 2, 0
-_08070330: .4byte gUnknown_3000FB2
-_08070334: .4byte gUnknown_3000FB4
-_08070338: .4byte gUnknown_3000FBC
+_08070330: .4byte sSecondaryTilesetCBCounter
+_08070334: .4byte sSecondaryTilesetCBBufferSize
+_08070338: .4byte sSecondaryTilesetCB
_0807033C: .4byte sub_8070304
thumb_func_end sub_807031C
@@ -645,22 +645,22 @@ _0807037C:
thumb_func_start sub_8070380
sub_8070380: @ 8070380
- ldr r1, _08070398 @ =gUnknown_3000FB2
+ ldr r1, _08070398 @ =sSecondaryTilesetCBCounter
movs r0, 0
strh r0, [r1]
- ldr r1, _0807039C @ =gUnknown_3000FB4
+ ldr r1, _0807039C @ =sSecondaryTilesetCBBufferSize
movs r2, 0x80
lsls r2, 1
adds r0, r2, 0
strh r0, [r1]
- ldr r1, _080703A0 @ =gUnknown_3000FBC
+ ldr r1, _080703A0 @ =sSecondaryTilesetCB
ldr r0, _080703A4 @ =sub_8070368
str r0, [r1]
bx lr
.align 2, 0
-_08070398: .4byte gUnknown_3000FB2
-_0807039C: .4byte gUnknown_3000FB4
-_080703A0: .4byte gUnknown_3000FBC
+_08070398: .4byte sSecondaryTilesetCBCounter
+_0807039C: .4byte sSecondaryTilesetCBBufferSize
+_080703A0: .4byte sSecondaryTilesetCB
_080703A4: .4byte sub_8070368
thumb_func_end sub_8070380
diff --git a/common_syms/fieldmap.txt b/common_syms/fieldmap.txt
new file mode 100644
index 000000000..b593fc3f2
--- /dev/null
+++ b/common_syms/fieldmap.txt
@@ -0,0 +1 @@
+VMap \ No newline at end of file
diff --git a/data/data.s b/data/data.s
index b02f4b451..dd692cb33 100644
--- a/data/data.s
+++ b/data/data.s
@@ -908,7 +908,7 @@ gUnknown_826D29E:: @ 826D29E
gUnknown_826D2B0:: @ 826D2B0
.incbin "baserom.gba", 0x26D2B0, 0x28
-gUnknown_826D2D8:: @ 826D2D8
+gDirectionToVectors:: @ 826D2D8
.incbin "baserom.gba", 0x26D2D8, 0x48
gUnknown_826D320:: @ 826D320
@@ -933,23 +933,3 @@ gUnknown_834EB8C:: @ 834EB8C
.incbin "baserom.gba", 0x34EB8C, 0x5FC
.include "data/maps/groups.inc"
-
-gUnknown_8352754:: @ 8352754
- .incbin "baserom.gba", 0x352754, 0x798
-
-gUnknown_8352EEC:: @ 8352EEC
- .incbin "baserom.gba", 0x352EEC, 0x4
-
-gUnknown_8352EF0:: @ 8352EF0
- .incbin "baserom.gba", 0x352EF0, 0x20
-
-gUnknown_8352F10:: @ 8352F10
- .incbin "baserom.gba", 0x352F10, 0x8
-
- .align 2
-gUnknown_8352F18:: @ 8352F18
- .asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/fieldmap.c"
-
- .align 2
-gUnknown_8352F4C:: @ 8352F4C
- .asciz "VMap.Xsize * VMap.Ysize <= VIRTUAL_MAP_SIZE"
diff --git a/data/fieldmap.s b/data/fieldmap.s
new file mode 100644
index 000000000..3b24a4f86
--- /dev/null
+++ b/data/fieldmap.s
@@ -0,0 +1,6 @@
+ .include "asm/macros.inc"
+
+ .section .rodata
+
+gUnknown_8352754:: @ 8352754
+ .incbin "baserom.gba", 0x352754, 0x798
diff --git a/include/fieldmap.h b/include/fieldmap.h
index c5abdb2e1..537626edc 100644
--- a/include/fieldmap.h
+++ b/include/fieldmap.h
@@ -3,19 +3,24 @@
#include "global.h"
-extern struct MapCoords {
- int width;
- int height;
-} gUnknown_03005DC0;
+#define NUM_TILES_IN_PRIMARY 640
+#define NUM_TILES_TOTAL 1024
+#define NUM_METATILES_IN_PRIMARY 640
+#define NUM_METATILES_TOTAL 1024
+#define NUM_PALS_IN_PRIMARY 7
+#define NUM_PALS_TOTAL 13
+#define VIRTUAL_MAP_SIZE 0x2800
+
+extern struct BackupMapData VMap;
u32 MapGridGetMetatileIdAt(int, int);
u32 MapGridGetMetatileBehaviorAt(int, int);
void MapGridSetMetatileIdAt(int, int, u16);
void MapGridSetMetatileEntryAt(int, int, u16);
void GetCameraCoords(u16*, u16*);
-bool8 MapGridIsImpassableAt(s16, s16);
-s32 GetMapBorderIdAt(s16, s16);
-bool32 CanCameraMoveInDirection(u8);
-u16 GetBehaviorByMetatileId(u16 metatileId);
+bool8 MapGridIsImpassableAt(s32, s32);
+s32 GetMapBorderIdAt(s32, s32);
+bool32 CanCameraMoveInDirection(s32);
+u32 GetBehaviorByMetatileIdAndMapData(struct MapData *mapData, u16 metatile, u8 attr);
#endif //GUARD_FIELDMAP_H
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index ed5054b7d..b602741a6 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -51,8 +51,8 @@ struct Tileset
/*0x04*/ void *tiles;
/*0x08*/ void *palettes;
/*0x0c*/ void *metatiles;
- /*0x10*/ void *metatileAttributes;
/*0x14*/ TilesetCB callback;
+ /*0x10*/ void *metatileAttributes;
};
struct MapData
@@ -63,12 +63,14 @@ struct MapData
/*0x0c*/ u16 *map;
/*0x10*/ struct Tileset *primaryTileset;
/*0x14*/ struct Tileset *secondaryTileset;
+ /*0x18*/ u8 unk18;
+ /*0x19*/ u8 unk19;
};
struct BackupMapData
{
- s32 width;
- s32 height;
+ s32 Xsize;
+ s32 Ysize;
u16 *map;
};
@@ -149,9 +151,9 @@ struct MapEvents
struct MapConnection
{
/*0x00*/ u8 direction;
- /*0x01*/ u32 offset;
- /*0x05*/ u8 mapGroup;
- /*0x06*/ u8 mapNum;
+ /*0x04*/ u32 offset;
+ /*0x08*/ u8 mapGroup;
+ /*0x09*/ u8 mapNum;
};
struct MapConnections
diff --git a/include/global.h b/include/global.h
index f418ff757..26ce4a8cc 100644
--- a/include/global.h
+++ b/include/global.h
@@ -328,7 +328,8 @@ struct SaveBlock2
/*0x0AC*/ u8 filler_AC[0x3F4];
/*0x4A0*/ u32 unk_4A0[0x2F];
/*0x55c*/ struct UnkSaveBlock2Substruct_55C unk_55C;
- /*0x574*/ u8 filler_574[0x524];
+ /*0x574*/ u8 filler_574[0x324];
+ /*0x898*/ u16 mapView[0x100];
/*0xA98*/ struct LinkBattleRecords linkBattleRecords;
/*0xAF0*/ struct BerryCrush berryCrush;
/*0xB00*/ u8 filler_B00[0x420];
diff --git a/include/menu.h b/include/menu.h
index b932693f7..b5078df5e 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -37,5 +37,6 @@ void clear_scheduled_bg_copies_to_vram(void);
void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const struct TextColor *color, s8 speed, const u8 *str);
void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a2, u16 a3);
void sub_810F4D8(u8 windowId, bool32 someBool);
+void *sub_80F68F0(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
#endif // GUARD_MENU_H
diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h
index ce8e8d697..32b46b552 100644
--- a/include/new_menu_helpers.h
+++ b/include/new_menu_helpers.h
@@ -22,5 +22,6 @@ void sub_80F6EE4(u8 windowId, bool8 transfer);
void sub_80F7974(const u8 *);
u8 GetStartMenuWindowId(void);
void sub_80F7998(void);
+void sub_80F69E8(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
#endif // GUARD_NEW_MENU_HELPERS_H
diff --git a/include/overworld.h b/include/overworld.h
index fbea3a4d9..b32d9cf48 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -24,6 +24,8 @@ struct UCoords32
u32 x, y;
};
+extern struct UCoords32 gDirectionToVectors[];
+
extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4];
extern MainCallback gFieldCallback;
@@ -96,5 +98,6 @@ extern u8 gUnknown_2036E28;
extern bool8 (* gUnknown_3005024)(void);
void SetLastHealLocationWarp(u8 healLocaionId);
+void sub_8055864(u8 mapGroup, u8 mapNum);
#endif //GUARD_ROM4_H
diff --git a/include/palette.h b/include/palette.h
index 3af0d5d7b..31c8ffefe 100644
--- a/include/palette.h
+++ b/include/palette.h
@@ -70,6 +70,8 @@ void BeginHardwarePaletteFade(u8, u8, u8, u8, u8);
void BlendPalettes(u32, u8, u16);
void BlendPalettesUnfaded(u32, u8, u16);
void sub_80716F8(const u16 *, u16 *, u16, u8);
+void TintPalette_GrayScale(u16 *, u16);
+void TintPalette_SepiaTone(u16 *, u16);
extern struct PaletteFadeControl gPaletteFade;
diff --git a/include/quest_log.h b/include/quest_log.h
index 31220b86c..7f4bafada 100644
--- a/include/quest_log.h
+++ b/include/quest_log.h
@@ -24,6 +24,7 @@ void sub_8113550(u16, const u16 *);
void sub_8115748(u16);
u8 sub_8112CAC(void);
bool8 sub_81119D4(void (*func)(void));
+void sub_8111F38(u16, u16);
extern u8 gUnknown_203ADFA;
diff --git a/ld_script.txt b/ld_script.txt
index 5bfe7f28c..7d2adefe7 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -91,7 +91,7 @@ SECTIONS {
asm/play_time.o(.text);
asm/new_game.o(.text);
asm/overworld.o(.text);
- asm/fieldmap.o(.text);
+ src/fieldmap.o(.text);
src/metatile_behavior.o(.text);
asm/field_camera.o(.text);
asm/field_door.o(.text);
@@ -367,6 +367,8 @@ SECTIONS {
src/bg_regs.o(.rodata);
src/string_util.o(.rodata);
data/data.o(.rodata);
+ data/fieldmap.o(.rodata);
+ src/fieldmap.o(.rodata);
src/metatile_behavior.o(.rodata);
data/metatile_behavior.o(.rodata);
data/data_835B488.o(.rodata);
diff --git a/src/fieldmap.c b/src/fieldmap.c
new file mode 100644
index 000000000..be5e1d54a
--- /dev/null
+++ b/src/fieldmap.c
@@ -0,0 +1,1025 @@
+#include "global.h"
+#include "bg.h"
+#include "palette.h"
+#include "overworld.h"
+#include "script.h"
+#include "menu.h"
+#include "new_menu_helpers.h"
+#include "quest_log.h"
+#include "fieldmap.h"
+
+struct ConnectionFlags
+{
+ u8 south:1;
+ u8 north:1;
+ u8 west:1;
+ u8 east:1;
+};
+
+void sub_8058A00(struct MapHeader *mapHeader);
+void map_copy_with_padding(u16 *map, u16 width, u16 height);
+void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader);
+void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
+void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
+void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
+void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
+void LoadSavedMapView(void);
+struct MapConnection *sub_8059600(u8 direction, s32 x, s32 y);
+bool8 sub_8059658(u8 direction, s32 x, s32 y, struct MapConnection *connection);
+bool8 sub_80596BC(s32 x, s32 src_width, s32 dest_width, s32 offset);
+
+struct BackupMapData VMap;
+EWRAM_DATA u16 gBackupMapData[VIRTUAL_MAP_SIZE] = {};
+EWRAM_DATA struct MapHeader gMapHeader = {};
+EWRAM_DATA struct Camera gCamera = {};
+EWRAM_DATA struct ConnectionFlags gMapConnectionFlags = {};
+
+const struct ConnectionFlags sDummyConnectionFlags = {};
+
+const u32 gUnknown_8352EF0[] = {
+ 0x1ff,
+ 0x3e00,
+ 0x3c000,
+ 0xfc0000,
+ 0x7000000,
+ 0x18000000,
+ 0x60000000,
+ 0x80000000
+};
+
+const u8 gUnknown_8352F10[] = {
+ 0,
+ 9,
+ 14,
+ 18,
+ 24,
+ 27,
+ 29,
+ 31
+};
+
+const struct MapHeader * mapconnection_get_mapheader(struct MapConnection * connection)
+{
+ return get_mapheader_by_bank_and_number(connection->mapGroup, connection->mapNum);
+}
+
+void not_trainer_hill_battle_pyramid(void)
+{
+ sub_8058A00(&gMapHeader);
+ mapheader_run_script_with_tag_x1();
+}
+
+void sub_80589E8(void)
+{
+ sub_8058A00(&gMapHeader);
+ LoadSavedMapView();
+ mapheader_run_script_with_tag_x1();
+}
+
+void sub_8058A00(struct MapHeader * mapHeader)
+{
+ const struct MapData * mapData = mapHeader->mapData;
+ CpuFastFill(0x03FF03FF, gBackupMapData, sizeof(gBackupMapData));
+ VMap.map = gBackupMapData;
+ VMap.Xsize = mapData->width + 15;
+ VMap.Ysize = mapData->height + 14;
+ AGB_ASSERT_EX(VMap.Xsize * VMap.Ysize <= VIRTUAL_MAP_SIZE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/fieldmap.c", 158);
+ map_copy_with_padding(mapData->map, mapData->width, mapData->height);
+ mapheader_copy_mapdata_of_adjacent_maps(mapHeader);
+}
+
+void map_copy_with_padding(u16 *map, u16 width, u16 height)
+{
+ s32 y;
+ u16 *dest = VMap.map;
+ dest += VMap.Xsize * 7 + 7;
+
+ for (y = 0; y < height; y++)
+ {
+ CpuCopy16(map, dest, width * sizeof(u16));
+ dest += width + 15;
+ map += width;
+ }
+}
+
+void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader)
+{
+ s32 count;
+ struct MapConnection *connection;
+ s32 i;
+
+ gMapConnectionFlags = sDummyConnectionFlags;
+
+ /*
+ * This null pointer check is new to FireRed. It was kept in
+ * Emerald, with the above struct assignment moved to after
+ * this check.
+ */
+ if (mapHeader->connections)
+ {
+ count = mapHeader->connections->count;
+ connection = mapHeader->connections->connections;
+ // Emerald puts this line here instead:
+ // gMapConnectionFlags = sDummyConnectionFlags;
+ for (i = 0; i < count; i++, connection++)
+ {
+ struct MapHeader const *cMap = mapconnection_get_mapheader(connection);
+ u32 offset = connection->offset;
+ switch (connection->direction)
+ {
+ case CONNECTION_SOUTH:
+ fillSouthConnection(mapHeader, cMap, offset);
+ gMapConnectionFlags.south = 1;
+ break;
+ case CONNECTION_NORTH:
+ fillNorthConnection(mapHeader, cMap, offset);
+ gMapConnectionFlags.north = 1;
+ break;
+ case CONNECTION_WEST:
+ fillWestConnection(mapHeader, cMap, offset);
+ gMapConnectionFlags.west = 1;
+ break;
+ case CONNECTION_EAST:
+ fillEastConnection(mapHeader, cMap, offset);
+ gMapConnectionFlags.east = 1;
+ break;
+ }
+ }
+ }
+}
+
+void sub_8058B54(s32 x, s32 y, const struct MapHeader *connectedMapHeader, s32 x2, s32 y2, s32 width, s32 height)
+{
+ s32 i;
+ u16 *src;
+ u16 *dest;
+ s32 mapWidth;
+
+ mapWidth = connectedMapHeader->mapData->width;
+ src = &connectedMapHeader->mapData->map[mapWidth * y2 + x2];
+ dest = &VMap.map[VMap.Xsize * y + x];
+
+ for (i = 0; i < height; i++)
+ {
+ CpuCopy16(src, dest, width * 2);
+ dest += VMap.Xsize;
+ src += mapWidth;
+ }
+}
+
+void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
+{
+ s32 x, y;
+ s32 x2;
+ s32 width;
+ s32 cWidth;
+
+ if (connectedMapHeader)
+ {
+ cWidth = connectedMapHeader->mapData->width;
+ x = offset + 7;
+ y = mapHeader->mapData->height + 7;
+ if (x < 0)
+ {
+ x2 = -x;
+ x += cWidth;
+ if (x < VMap.Xsize)
+ {
+ width = x;
+ }
+ else
+ {
+ width = VMap.Xsize;
+ }
+ x = 0;
+ }
+ else
+ {
+ x2 = 0;
+ if (x + cWidth < VMap.Xsize)
+ {
+ width = cWidth;
+ }
+ else
+ {
+ width = VMap.Xsize - x;
+ }
+ }
+
+ sub_8058B54(
+ x, y,
+ connectedMapHeader,
+ x2, /*y2*/ 0,
+ width, /*height*/ 7);
+ }
+}
+
+void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
+{
+ s32 x;
+ s32 x2, y2;
+ s32 width;
+ s32 cWidth, cHeight;
+
+ if (connectedMapHeader)
+ {
+ cWidth = connectedMapHeader->mapData->width;
+ cHeight = connectedMapHeader->mapData->height;
+ x = offset + 7;
+ y2 = cHeight - 7;
+ if (x < 0)
+ {
+ x2 = -x;
+ x += cWidth;
+ if (x < VMap.Xsize)
+ {
+ width = x;
+ }
+ else
+ {
+ width = VMap.Xsize;
+ }
+ x = 0;
+ }
+ else
+ {
+ x2 = 0;
+ if (x + cWidth < VMap.Xsize)
+ {
+ width = cWidth;
+ }
+ else
+ {
+ width = VMap.Xsize - x;
+ }
+ }
+
+ sub_8058B54(
+ x, /*y*/ 0,
+ connectedMapHeader,
+ x2, y2,
+ width, /*height*/ 7);
+
+ }
+}
+
+void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
+{
+ s32 y;
+ s32 x2, y2;
+ s32 height;
+ s32 cWidth, cHeight;
+ if (connectedMapHeader)
+ {
+ cWidth = connectedMapHeader->mapData->width;
+ cHeight = connectedMapHeader->mapData->height;
+ y = offset + 7;
+ x2 = cWidth - 7;
+ if (y < 0)
+ {
+ y2 = -y;
+ if (y + cHeight < VMap.Ysize)
+ {
+ height = y + cHeight;
+ }
+ else
+ {
+ height = VMap.Ysize;
+ }
+ y = 0;
+ }
+ else
+ {
+ y2 = 0;
+ if (y + cHeight < VMap.Ysize)
+ {
+ height = cHeight;
+ }
+ else
+ {
+ height = VMap.Ysize - y;
+ }
+ }
+
+ sub_8058B54(
+ /*x*/ 0, y,
+ connectedMapHeader,
+ x2, y2,
+ /*width*/ 7, height);
+ }
+}
+
+void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
+{
+ s32 x, y;
+ s32 y2;
+ s32 height;
+ s32 cHeight;
+ if (connectedMapHeader)
+ {
+ cHeight = connectedMapHeader->mapData->height;
+ x = mapHeader->mapData->width + 7;
+ y = offset + 7;
+ if (y < 0)
+ {
+ y2 = -y;
+ if (y + cHeight < VMap.Ysize)
+ {
+ height = y + cHeight;
+ }
+ else
+ {
+ height = VMap.Ysize;
+ }
+ y = 0;
+ }
+ else
+ {
+ y2 = 0;
+ if (y + cHeight < VMap.Ysize)
+ {
+ height = cHeight;
+ }
+ else
+ {
+ height = VMap.Ysize - y;
+ }
+ }
+
+ sub_8058B54(
+ x, y,
+ connectedMapHeader,
+ /*x2*/ 0, y2,
+ /*width*/ 8, height);
+ }
+}
+
+union Block
+{
+ struct
+ {
+ u16 block:10;
+ u16 collision:2;
+ u16 elevation:4;
+ } block;
+ u16 value;
+};
+
+#define MapGridGetBorderTileAt(x, y) ({ \
+ u16 block; \
+ s32 xprime; \
+ s32 yprime; \
+ \
+ struct MapData *mapData = gMapHeader.mapData; \
+ \
+ xprime = x - 7; \
+ xprime += 8 * mapData->unk18; \
+ xprime %= mapData->unk18; \
+ \
+ yprime = y - 7; \
+ yprime += 8 * mapData->unk19; \
+ yprime %= mapData->unk19; \
+ \
+ block = mapData->border[xprime + yprime * mapData->unk18]; \
+ block |= 0xC00; \
+ block; \
+})
+
+#define MapGridGetBorderTileAt2(x, y) ({ \
+ u16 block; \
+ s32 xprime; \
+ s32 yprime; \
+ \
+ struct MapData *mapData = gMapHeader.mapData; \
+ \
+ xprime = x - 7; \
+ xprime += 8 * mapData->unk18; \
+ xprime %= mapData->unk18; \
+ \
+ yprime = y - 7; \
+ yprime += 8 * mapData->unk19; \
+ yprime %= mapData->unk19; \
+ \
+ block = mapData->border[xprime + yprime * mapData->unk18] | 0xC00; \
+ block; \
+})
+
+#define AreCoordsWithinMapGridBounds(x, y) (x >= 0 && x < VMap.Xsize && y >= 0 && y < VMap.Ysize)
+
+#define MapGridGetTileAt(x, y) (AreCoordsWithinMapGridBounds(x, y) ? VMap.map[x + VMap.Xsize * y] : MapGridGetBorderTileAt2(x, y))
+
+u8 MapGridGetZCoordAt(s32 x, s32 y)
+{
+ u16 block = MapGridGetTileAt(x, y);
+
+ if (block == 0x3ff)
+ {
+ return 0;
+ }
+
+ return block >> 12;
+}
+
+u8 MapGridIsImpassableAt(s32 x, s32 y)
+{
+
+ u16 block = MapGridGetTileAt(x, y);
+
+ if (block == 0x3ff)
+ {
+ return 1;
+ }
+
+ return (block & 0xc00) >> 10;
+}
+
+u32 MapGridGetMetatileIdAt(s32 x, s32 y)
+{
+ u16 block = MapGridGetTileAt(x, y);
+
+ if (block == 0x3FF)
+ {
+ return MapGridGetBorderTileAt(x, y) & 0x3FF;
+ }
+ return block & 0x3FF;
+}
+
+u32 sub_8058F1C(u32 original, u8 bit)
+{
+ if (bit >= 8)
+ return original;
+
+ return (original & gUnknown_8352EF0[bit]) >> gUnknown_8352F10[bit];
+}
+
+u32 sub_8058F48(s16 x, s16 y, u8 z)
+{
+ u16 metatileId = MapGridGetMetatileIdAt(x, y);
+ return GetBehaviorByMetatileIdAndMapData(gMapHeader.mapData, metatileId, z);
+}
+
+u32 MapGridGetMetatileBehaviorAt(s32 x, s32 y)
+{
+ return sub_8058F48(x, y, 0);
+}
+
+u8 MapGridGetMetatileLayerTypeAt(s32 x, s32 y)
+{
+ return sub_8058F48(x, y, 6);
+}
+
+void MapGridSetMetatileIdAt(s32 x, s32 y, u16 metatile)
+{
+ s32 i;
+ if (x >= 0 && x < VMap.Xsize
+ && y >= 0 && y < VMap.Ysize)
+ {
+ i = x + y * VMap.Xsize;
+ VMap.map[i] = (VMap.map[i] & 0xf000) | (metatile & 0xfff);
+ }
+}
+
+void MapGridSetMetatileEntryAt(s32 x, s32 y, u16 metatile)
+{
+ s32 i;
+ if (x >= 0 && x < VMap.Xsize
+ && y >= 0 && y < VMap.Ysize)
+ {
+ i = x + VMap.Xsize * y;
+ VMap.map[i] = metatile;
+ }
+}
+
+void sub_8059024(s32 x, s32 y, bool32 arg2)
+{
+ if (x >= 0 && x < VMap.Xsize
+ && y >= 0 && y < VMap.Ysize)
+ {
+ if (arg2)
+ {
+ VMap.map[x + VMap.Xsize * y] |= 0x0C00;
+ }
+ else
+ {
+ VMap.map[x + VMap.Xsize * y] &= ~0x0C00;
+ }
+ }
+}
+
+u32 GetBehaviorByMetatileIdAndMapData(struct MapData *mapData, u16 metatile, u8 attr)
+{
+ u32 * attributes;
+
+ if (metatile < NUM_METATILES_IN_PRIMARY)
+ {
+ attributes = mapData->primaryTileset->metatileAttributes;
+ return sub_8058F1C(attributes[metatile], attr);
+ }
+ else if (metatile < 0x400)
+ {
+ attributes = mapData->secondaryTileset->metatileAttributes;
+ return sub_8058F1C(attributes[metatile - NUM_METATILES_IN_PRIMARY], attr);
+ }
+ else
+ {
+ return 0xFF;
+ }
+}
+
+void save_serialize_map(void)
+{
+ s32 i, j;
+ s32 x, y;
+ u16 *mapView;
+ s32 width;
+ mapView = gSaveBlock2Ptr->mapView;
+ width = VMap.Xsize;
+ x = gSaveBlock1Ptr->pos.x;
+ y = gSaveBlock1Ptr->pos.y;
+ for (i = y; i < y + 14; i++)
+ {
+ for (j = x; j < x + 15; j++)
+ {
+ *mapView++ = gBackupMapData[width * i + j];
+ }
+ }
+}
+
+bool32 SavedMapViewIsEmpty(void)
+{
+ u16 i;
+ u32 marker = 0;
+
+ // BUG: This loop extends past the bounds of the mapView array. Its size is only 0x100.
+ for (i = 0; i < 0x200; i++)
+ marker |= gSaveBlock2Ptr->mapView[i];
+
+ if (marker == 0)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void ClearSavedMapView(void)
+{
+ CpuFill16(0, gSaveBlock2Ptr->mapView, sizeof(gSaveBlock2Ptr->mapView));
+}
+
+void LoadSavedMapView(void)
+{
+ s32 i, j;
+ s32 x, y;
+ u16 *mapView;
+ s32 width;
+ mapView = gSaveBlock2Ptr->mapView;
+ if (!SavedMapViewIsEmpty())
+ {
+ width = VMap.Xsize;
+ x = gSaveBlock1Ptr->pos.x;
+ y = gSaveBlock1Ptr->pos.y;
+ for (i = y; i < y + 14; i++)
+ {
+ for (j = x; j < x + 15; j++)
+ {
+ gBackupMapData[j + width * i] = *mapView;
+ mapView++;
+ }
+ }
+ ClearSavedMapView();
+ }
+}
+
+void sub_8059250(u8 a1)
+{
+ s32 width;
+ u16 *mapView;
+ s32 x0, y0;
+ s32 x2, y2;
+ u16 *src, *dest;
+ s32 srci, desti;
+ s32 r9, r8;
+ s32 x, y;
+ s32 i, j;
+ mapView = gSaveBlock2Ptr->mapView;
+ width = VMap.Xsize;
+ r9 = 0;
+ r8 = 0;
+ x0 = gSaveBlock1Ptr->pos.x;
+ y0 = gSaveBlock1Ptr->pos.y;
+ x2 = 15;
+ y2 = 14;
+ switch (a1)
+ {
+ case CONNECTION_NORTH:
+ y0 += 1;
+ y2 = 13;
+ break;
+ case CONNECTION_SOUTH:
+ r8 = 1;
+ y2 = 13;
+ break;
+ case CONNECTION_WEST:
+ x0 += 1;
+ x2 = 14;
+ break;
+ case CONNECTION_EAST:
+ r9 = 1;
+ x2 = 14;
+ break;
+ }
+ for (y = 0; y < y2; y++)
+ {
+ i = 0;
+ j = 0;
+ for (x = 0; x < x2; x++)
+ {
+ desti = width * (y + y0);
+ srci = (y + r8) * 15 + r9;
+ src = &mapView[srci + i];
+ dest = &gBackupMapData[x0 + desti + j];
+ *dest = *src;
+ i++;
+ j++;
+ }
+ }
+ ClearSavedMapView();
+}
+
+s32 GetMapBorderIdAt(s32 x, s32 y)
+{
+ if (MapGridGetTileAt(x, y) == 0x3FF)
+ {
+ return -1;
+ }
+
+ if (x >= VMap.Xsize - 8)
+ {
+ if (!gMapConnectionFlags.east)
+ {
+ return -1;
+ }
+ return CONNECTION_EAST;
+ }
+
+ if (x < 7)
+ {
+ if (!gMapConnectionFlags.west)
+ {
+ return -1;
+ }
+ return CONNECTION_WEST;
+ }
+
+ if (y >= VMap.Ysize - 7)
+ {
+ if (!gMapConnectionFlags.south)
+ {
+ return -1;
+ }
+ return CONNECTION_SOUTH;
+ }
+
+ if (y < 7)
+ {
+ if (!gMapConnectionFlags.north)
+ {
+ return -1;
+ }
+ return CONNECTION_NORTH;
+ }
+
+ return 0;
+}
+
+s32 GetPostCameraMoveMapBorderId(s32 x, s32 y)
+{
+ return GetMapBorderIdAt(7 + gSaveBlock1Ptr->pos.x + x, 7 + gSaveBlock1Ptr->pos.y + y);
+}
+
+bool32 CanCameraMoveInDirection(s32 direction)
+{
+ s32 x, y;
+
+ x = gSaveBlock1Ptr->pos.x + 7 + gDirectionToVectors[direction].x;
+ y = gSaveBlock1Ptr->pos.y + 7 + gDirectionToVectors[direction].y;
+ if (GetMapBorderIdAt(x, y) == -1)
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void sub_80594AC(struct MapConnection *connection, int direction, s32 x, s32 y)
+{
+ struct MapHeader const *mapHeader;
+ mapHeader = mapconnection_get_mapheader(connection);
+ switch (direction)
+ {
+ case CONNECTION_EAST:
+ gSaveBlock1Ptr->pos.x = -x;
+ gSaveBlock1Ptr->pos.y -= connection->offset;
+ break;
+ case CONNECTION_WEST:
+ gSaveBlock1Ptr->pos.x = mapHeader->mapData->width;
+ gSaveBlock1Ptr->pos.y -= connection->offset;
+ break;
+ case CONNECTION_SOUTH:
+ gSaveBlock1Ptr->pos.x -= connection->offset;
+ gSaveBlock1Ptr->pos.y = -y;
+ break;
+ case CONNECTION_NORTH:
+ gSaveBlock1Ptr->pos.x -= connection->offset;
+ gSaveBlock1Ptr->pos.y = mapHeader->mapData->height;
+ break;
+ }
+}
+
+bool8 CameraMove(s32 x, s32 y)
+{
+ u32 direction;
+ struct MapConnection *connection;
+ s32 old_x, old_y;
+ gCamera.active = FALSE;
+ direction = GetPostCameraMoveMapBorderId(x, y);
+ if (direction + 1 <= 1)
+ {
+ gSaveBlock1Ptr->pos.x += x;
+ gSaveBlock1Ptr->pos.y += y;
+ }
+ else
+ {
+ save_serialize_map();
+ old_x = gSaveBlock1Ptr->pos.x;
+ old_y = gSaveBlock1Ptr->pos.y;
+ connection = sub_8059600(direction, gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y);
+ sub_80594AC(connection, direction, x, y);
+ sub_8055864(connection->mapGroup, connection->mapNum);
+ gCamera.active = TRUE;
+ gCamera.x = old_x - gSaveBlock1Ptr->pos.x;
+ gCamera.y = old_y - gSaveBlock1Ptr->pos.y;
+ gSaveBlock1Ptr->pos.x += x;
+ gSaveBlock1Ptr->pos.y += y;
+ sub_8059250(direction);
+ }
+ return gCamera.active;
+}
+
+struct MapConnection *sub_8059600(u8 direction, s32 x, s32 y)
+{
+ s32 count;
+ struct MapConnection *connection;
+ s32 i;
+ count = gMapHeader.connections->count;
+ connection = gMapHeader.connections->connections;
+ for (i = 0; i < count; i++, connection++)
+ {
+ if (connection->direction == direction && sub_8059658(direction, x, y, connection) == TRUE)
+ return connection;
+ }
+ return NULL;
+
+}
+
+bool8 sub_8059658(u8 direction, s32 x, s32 y, struct MapConnection *connection)
+{
+ struct MapHeader const *mapHeader;
+ mapHeader = mapconnection_get_mapheader(connection);
+ switch (direction)
+ {
+ case CONNECTION_SOUTH:
+ case CONNECTION_NORTH:
+ return sub_80596BC(x, gMapHeader.mapData->width, mapHeader->mapData->width, connection->offset);
+ case CONNECTION_WEST:
+ case CONNECTION_EAST:
+ return sub_80596BC(y, gMapHeader.mapData->height, mapHeader->mapData->height, connection->offset);
+ }
+ return FALSE;
+}
+
+bool8 sub_80596BC(s32 x, s32 src_width, s32 dest_width, s32 offset)
+{
+ s32 offset2 = max(offset, 0);
+
+ if (dest_width + offset < src_width)
+ src_width = dest_width + offset;
+
+ if (offset2 <= x && x <= src_width)
+ return TRUE;
+
+ return FALSE;
+}
+
+bool32 sub_80596E8(s32 x, s32 width)
+{
+ if (x >= 0 && x < width)
+ return TRUE;
+
+ return FALSE;
+}
+
+s32 sub_80596FC(struct MapConnection *connection, s32 x, s32 y)
+{
+ struct MapHeader const *mapHeader;
+ mapHeader = mapconnection_get_mapheader(connection);
+ switch (connection->direction)
+ {
+ case CONNECTION_SOUTH:
+ case CONNECTION_NORTH:
+ return sub_80596E8(x - connection->offset, mapHeader->mapData->width);
+ case CONNECTION_WEST:
+ case CONNECTION_EAST:
+ return sub_80596E8(y - connection->offset, mapHeader->mapData->height);
+ }
+ return FALSE;
+}
+
+struct MapConnection *sub_805973C(s16 x, s16 y)
+{
+ s32 count;
+ struct MapConnection *connection;
+ s32 i;
+ u8 direction;
+ if (!gMapHeader.connections)
+ {
+ return NULL;
+ }
+ else
+ {
+ count = gMapHeader.connections->count;
+ connection = gMapHeader.connections->connections;
+ for (i = 0; i < count; i++, connection++)
+ {
+ direction = connection->direction;
+ if ((direction == CONNECTION_DIVE || direction == CONNECTION_EMERGE)
+ || (direction == CONNECTION_NORTH && y > 6)
+ || (direction == CONNECTION_SOUTH && y < gMapHeader.mapData->height + 7)
+ || (direction == CONNECTION_WEST && x > 6)
+ || (direction == CONNECTION_EAST && x < gMapHeader.mapData->width + 7))
+ {
+ continue;
+ }
+ if (sub_80596FC(connection, x - 7, y - 7) == TRUE)
+ {
+ return connection;
+ }
+ }
+ }
+ return NULL;
+}
+
+void SetCameraFocusCoords(u16 x, u16 y)
+{
+ gSaveBlock1Ptr->pos.x = x - 7;
+ gSaveBlock1Ptr->pos.y = y - 7;
+}
+
+void GetCameraFocusCoords(u16 *x, u16 *y)
+{
+ *x = gSaveBlock1Ptr->pos.x + 7;
+ *y = gSaveBlock1Ptr->pos.y + 7;
+}
+
+void SetCameraCoords(u16 x, u16 y)
+{
+ gSaveBlock1Ptr->pos.x = x;
+ gSaveBlock1Ptr->pos.y = y;
+}
+
+void GetCameraCoords(u16 *x, u16 *y)
+{
+ *x = gSaveBlock1Ptr->pos.x;
+ *y = gSaveBlock1Ptr->pos.y;
+}
+void copy_tileset_patterns_to_vram(struct Tileset const *tileset, u16 numTiles, u16 offset)
+{
+ if (tileset)
+ {
+ if (!tileset->isCompressed)
+ LoadBgTiles(2, tileset->tiles, numTiles * 32, offset);
+ else
+ sub_80F68F0(2, tileset->tiles, numTiles * 32, offset, 0);
+ }
+}
+
+void copy_tileset_patterns_to_vram2(struct Tileset const *tileset, u16 numTiles, u16 offset)
+{
+ if (tileset)
+ {
+ if (!tileset->isCompressed)
+ LoadBgTiles(2, tileset->tiles, numTiles * 32, offset);
+ else
+ sub_80F69E8(2, tileset->tiles, numTiles * 32, offset, 0);
+ }
+}
+
+void sub_80598CC(u16 a0, u16 a1)
+{
+ switch (gUnknown_2036E28)
+ {
+ case 0:
+ return;
+ case 1:
+ TintPalette_GrayScale(gPlttBufferUnfaded + a0, a1);
+ break;
+ case 2:
+ TintPalette_SepiaTone(gPlttBufferUnfaded + a0, a1);
+ break;
+ case 3:
+ sub_8111F38(a0, a1);
+ TintPalette_GrayScale(gPlttBufferUnfaded + a0, a1);
+ break;
+ default:
+ return;
+ }
+ CpuCopy16(gPlttBufferUnfaded + a0, gPlttBufferFaded + a0, a1 * sizeof(u16));
+}
+
+void sub_8059948(u8 a0, u8 a1)
+{
+ switch (gUnknown_2036E28)
+ {
+ case 0:
+ return;
+ case 1:
+ TintPalette_GrayScale(gPlttBufferUnfaded + a0 * 16, a1 * 16);
+ break;
+ case 2:
+ TintPalette_SepiaTone(gPlttBufferUnfaded + a0 * 16, a1 * 16);
+ break;
+ case 3:
+ sub_8111F38(a0 * 16, a1 * 16);
+ TintPalette_GrayScale(gPlttBufferUnfaded + a0 * 16, a1 * 16);
+ break;
+ default:
+ return;
+ }
+ CpuFastCopy(gPlttBufferUnfaded + a0 * 16, gPlttBufferFaded + a0 * 16, a1 * 16 * sizeof(u16));
+}
+
+void apply_map_tileset_palette(struct Tileset const *tileset, u16 destOffset, u16 size)
+{
+ u16 black = RGB_BLACK;
+
+ if (tileset)
+ {
+ if (tileset->isSecondary == FALSE)
+ {
+ LoadPalette(&black, destOffset, 2);
+ LoadPalette(((u16*)tileset->palettes) + 1, destOffset + 1, size - 2);
+ sub_80598CC(destOffset + 1, (size - 2) >> 1);
+ }
+ else if (tileset->isSecondary == TRUE)
+ {
+ LoadPalette(((u16*)tileset->palettes) + (NUM_PALS_IN_PRIMARY * 16), destOffset, size);
+ sub_80598CC(destOffset, size >> 1);
+ }
+ else
+ {
+ LoadCompressedPalette((u32*)tileset->palettes, destOffset, size);
+ sub_80598CC(destOffset, size >> 1);
+ }
+ }
+}
+
+void copy_map_tileset1_to_vram(const struct MapData *mapData)
+{
+ copy_tileset_patterns_to_vram(mapData->primaryTileset, NUM_TILES_IN_PRIMARY, 0);
+}
+
+void copy_map_tileset2_to_vram(const struct MapData *mapData)
+{
+ copy_tileset_patterns_to_vram(mapData->secondaryTileset, NUM_TILES_TOTAL - NUM_TILES_IN_PRIMARY, NUM_TILES_IN_PRIMARY);
+}
+
+void copy_map_tileset2_to_vram_2(const struct MapData *mapData)
+{
+ copy_tileset_patterns_to_vram2(mapData->secondaryTileset, NUM_TILES_TOTAL - NUM_TILES_IN_PRIMARY, NUM_TILES_IN_PRIMARY);
+}
+
+void apply_map_tileset1_palette(const struct MapData *mapData)
+{
+ apply_map_tileset_palette(mapData->primaryTileset, 0, NUM_PALS_IN_PRIMARY * 16 * 2);
+}
+
+void apply_map_tileset2_palette(const struct MapData *mapData)
+{
+ apply_map_tileset_palette(mapData->secondaryTileset, NUM_PALS_IN_PRIMARY * 16, (NUM_PALS_TOTAL - NUM_PALS_IN_PRIMARY) * 16 * 2);
+}
+
+void copy_map_tileset1_tileset2_to_vram(struct MapData const *mapData)
+{
+ if (mapData)
+ {
+ copy_tileset_patterns_to_vram2(mapData->primaryTileset, NUM_TILES_IN_PRIMARY, 0);
+ copy_tileset_patterns_to_vram2(mapData->secondaryTileset, NUM_TILES_TOTAL - NUM_TILES_IN_PRIMARY, NUM_TILES_IN_PRIMARY);
+ }
+}
+
+void apply_map_tileset1_tileset2_palette(struct MapData const *mapData)
+{
+ if (mapData)
+ {
+ apply_map_tileset1_palette(mapData);
+ apply_map_tileset2_palette(mapData);
+ }
+} \ No newline at end of file
diff --git a/src/save.c b/src/save.c
index ef38d8b17..761e3c92d 100644
--- a/src/save.c
+++ b/src/save.c
@@ -69,7 +69,7 @@ const struct SaveSectionOffsets gSaveSectionOffsets[] =
extern void DoSaveFailedScreen(u8 saveType); // save_failed_screen
extern void sub_800AB9C(void); // link
extern bool8 sub_800A4BC(void); // link
-extern void sub_80590D8(void); // fieldmap
+extern void save_serialize_map(void); // fieldmap
extern void sub_804C1C0(void); // load_save
extern void sav2_gender2_inplace_and_xFE(void); // load_save
@@ -867,7 +867,7 @@ void sub_80DA634(u8 taskId)
case 2:
if (sub_800A4BC())
{
- sub_80590D8();
+ save_serialize_map();
gTasks[taskId].data[0] = 3;
}
break;
diff --git a/sym_bss.txt b/sym_bss.txt
index 20d8d561d..529460f3e 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -111,22 +111,22 @@ gUnknown_3000FA9: @ 3000FA9
gUnknown_3000FAC: @ 3000FAC
.space 0x2
-gUnknown_3000FAE: @ 3000FAE
+sPrimaryTilesetCBCounter: @ 3000FAE
.space 0x2
-gUnknown_3000FB0: @ 3000FB0
+sPrimaryTilesetCBBufferSize: @ 3000FB0
.space 0x2
-gUnknown_3000FB2: @ 3000FB2
+sSecondaryTilesetCBCounter: @ 3000FB2
.space 0x2
-gUnknown_3000FB4: @ 3000FB4
+sSecondaryTilesetCBBufferSize: @ 3000FB4
.space 0x4
-gUnknown_3000FB8: @ 3000FB8
+sPrimaryTilesetCB: @ 3000FB8
.space 0x4
-gUnknown_3000FBC: @ 3000FBC
+sSecondaryTilesetCB: @ 3000FBC
.space 0x4
.include "src/sound.o"
diff --git a/sym_common.txt b/sym_common.txt
index 333dae222..16c275b01 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -160,9 +160,9 @@ gUnknown_300502C: @ 300502C
gUnknown_3005030: @ 3005030
.space 0x10
-gUnknown_3005040: @ 3005040
- .space 0x10
+ .include "fieldmap.o"
+ .align 4
gUnknown_3005050: @ 3005050
.space 0x18
diff --git a/sym_ewram.txt b/sym_ewram.txt
index fbb152faa..b978e59c4 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -593,17 +593,7 @@ gUnknown_2031DEA: @ 2031DEA
gUnknown_2031DEC: @ 2031DEC
.space 0x10
-gUnknown_2031DFC: @ 2031DFC
- .space 0x5000
-
-gMapHeader: @ 2036DFC
- .space 0x1C
-
-gUnknown_2036E18: @ 2036E18
- .space 0xC
-
-gUnknown_2036E24: @ 2036E24
- .space 0x4
+ .include "src/fieldmap.o"
gUnknown_2036E28: @ 2036E28
.space 0x4