summaryrefslogtreecommitdiff
path: root/asm/fieldmap.s
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2016-11-01 10:08:48 -0700
committerYamaArashi <shadow962@live.com>2016-11-01 10:16:34 -0700
commit6f0e42a91aeeedd64725ce57e3dad6a38421d8e9 (patch)
treedcea69ec49430f004c17ff71b77587cafd78c69a /asm/fieldmap.s
parentfef81187dce23adc635d7f4b7fd82298eab09ec2 (diff)
split asm files
Diffstat (limited to 'asm/fieldmap.s')
-rw-r--r--asm/fieldmap.s2285
1 files changed, 2285 insertions, 0 deletions
diff --git a/asm/fieldmap.s b/asm/fieldmap.s
new file mode 100644
index 000000000..3da569a02
--- /dev/null
+++ b/asm/fieldmap.s
@@ -0,0 +1,2285 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start mapconnection_get_mapheader
+mapconnection_get_mapheader: @ 8087D44
+ 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: @ 8087D54
+ push {r4,lr}
+ ldr r4, =0x02037318
+ adds r0, r4, 0
+ bl mapheader_copy_mapdata_with_padding
+ ldr r0, [r4, 0x4]
+ bl sub_80E8EE0
+ bl mapheader_run_script_with_tag_x1
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end not_trainer_hill_battle_pyramid
+
+ thumb_func_start sub_8087D74
+sub_8087D74: @ 8087D74
+ push {r4,lr}
+ ldr r4, =0x02037318
+ adds r0, r4, 0
+ bl mapheader_copy_mapdata_with_padding
+ movs r0, 0
+ bl sub_80E9238
+ ldr r0, [r4, 0x4]
+ bl sub_80E8EE0
+ bl mapdata_from_sav2
+ bl mapheader_run_script_with_tag_x1
+ ldr r1, =0x03005dc0
+ ldr r0, [r1]
+ ldr r1, [r1, 0x4]
+ bl UpdateTVScreensOnMap
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8087D74
+
+ thumb_func_start battle_pyramid_map_load_related
+battle_pyramid_map_load_related: @ 8087DAC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, =0x03ff03ff
+ str r0, [sp]
+ ldr r5, =0x02032318
+ ldr r2, =0x01001400
+ mov r0, sp
+ adds r1, r5, 0
+ bl CpuFastSet
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_81AA078
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end battle_pyramid_map_load_related
+
+ thumb_func_start trainer_hill_map_load_related
+trainer_hill_map_load_related: @ 8087DE4
+ push {r4,lr}
+ sub sp, 0x4
+ ldr r0, =0x03ff03ff
+ str r0, [sp]
+ ldr r4, =0x02032318
+ ldr r2, =0x01001400
+ mov r0, sp
+ adds r1, r4, 0
+ bl CpuFastSet
+ adds r0, r4, 0
+ bl sub_81D5FB4
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end trainer_hill_map_load_related
+
+ thumb_func_start mapheader_copy_mapdata_with_padding
+@ void mapheader_copy_mapdata_with_padding(struct mapheader *mapHeader)
+mapheader_copy_mapdata_with_padding: @ 8087E14
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r6, r0, 0
+ ldr r5, [r6]
+ ldr r0, =0x03ff03ff
+ str r0, [sp]
+ ldr r4, =0x02032318
+ ldr r2, =0x01001400
+ mov r0, sp
+ adds r1, r4, 0
+ bl CpuFastSet
+ ldr r2, =0x03005dc0
+ 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
+ bgt _08087E56
+ 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
+_08087E56:
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end mapheader_copy_mapdata_with_padding
+
+ thumb_func_start map_copy_with_padding
+@ int map_copy_with_padding(void *src)
+map_copy_with_padding: @ 8087E70
+ 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, =0x03005dc0
+ 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 _08087EB8
+ mov r0, r8
+ lsls r6, r0, 1
+ adds r5, r2, 0
+ movs r0, 0x1E
+ adds r0, r6
+ mov r9, r0
+_08087EA4:
+ 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 _08087EA4
+_08087EB8:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end map_copy_with_padding
+
+ thumb_func_start mapheader_copy_mapdata_of_adjacent_maps
+@ void mapheader_copy_mapdata_of_adjacent_maps(struct mapheader *mapHeader)
+mapheader_copy_mapdata_of_adjacent_maps: @ 8087EC8
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ ldr r0, [r6, 0xC]
+ cmp r0, 0
+ beq _08087F4C
+ ldr r1, [r0]
+ ldr r5, [r0, 0x4]
+ ldr r2, =0x02037340
+ ldr r0, =gUnknown_08486EF8
+ ldr r0, [r0]
+ str r0, [r2]
+ cmp r1, 0
+ ble _08087F4C
+ adds r4, r2, 0
+ adds r7, r1, 0
+_08087EE6:
+ adds r0, r5, 0
+ bl mapconnection_get_mapheader
+ adds r1, r0, 0
+ ldr r2, [r5, 0x4]
+ ldrb r0, [r5]
+ cmp r0, 0x2
+ beq _08087F1E
+ cmp r0, 0x2
+ bgt _08087F08
+ cmp r0, 0x1
+ beq _08087F12
+ b _08087F44
+ .pool
+_08087F08:
+ cmp r0, 0x3
+ beq _08087F2A
+ cmp r0, 0x4
+ beq _08087F36
+ b _08087F44
+_08087F12:
+ adds r0, r6, 0
+ bl sub_8087FB8
+ ldrb r0, [r4]
+ movs r1, 0x1
+ b _08087F40
+_08087F1E:
+ adds r0, r6, 0
+ bl sub_8088020
+ ldrb r0, [r4]
+ movs r1, 0x2
+ b _08087F40
+_08087F2A:
+ adds r0, r6, 0
+ bl sub_8088080
+ ldrb r0, [r4]
+ movs r1, 0x4
+ b _08087F40
+_08087F36:
+ adds r0, r6, 0
+ bl sub_80880E0
+ ldrb r0, [r4]
+ movs r1, 0x8
+_08087F40:
+ orrs r0, r1
+ strb r0, [r4]
+_08087F44:
+ subs r7, 0x1
+ adds r5, 0xC
+ cmp r7, 0
+ bne _08087EE6
+_08087F4C:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end mapheader_copy_mapdata_of_adjacent_maps
+
+ thumb_func_start sub_8087F54
+sub_8087F54: @ 8087F54
+ 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, =0x03005dc0
+ 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 _08087FA6
+ adds r4, r0, 0
+ ldr r3, =0x001fffff
+ mov r8, r3
+_08087F86:
+ adds r0, r6, 0
+ adds r1, r5, 0
+ ldr r2, [sp, 0x1C]
+ mov r3, r8
+ ands r2, r3
+ bl CpuSet
+ ldr r0, =0x03005dc0
+ ldr r0, [r0]
+ lsls r0, 1
+ adds r5, r0
+ lsls r0, r7, 1
+ adds r6, r0
+ subs r4, 0x1
+ cmp r4, 0
+ bne _08087F86
+_08087FA6:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8087F54
+
+ thumb_func_start sub_8087FB8
+sub_8087FB8: @ 8087FB8
+ push {r4-r7,lr}
+ sub sp, 0xC
+ adds r3, r0, 0
+ adds r5, r1, 0
+ cmp r5, 0
+ beq _08088012
+ ldr r0, [r5]
+ ldr r4, [r0]
+ adds r2, 0x7
+ ldr r0, [r3]
+ ldr r0, [r0, 0x4]
+ adds r7, r0, 0x7
+ cmp r2, 0
+ bge _08087FEC
+ negs r6, r2
+ adds r2, r4
+ ldr r0, =0x03005dc0
+ ldr r3, [r0]
+ cmp r2, r3
+ bge _08087FE2
+ adds r3, r2, 0
+_08087FE2:
+ movs r2, 0
+ b _08087FFC
+ .pool
+_08087FEC:
+ movs r6, 0
+ adds r0, r2, r4
+ ldr r1, =0x03005dc0
+ ldr r1, [r1]
+ subs r3, r1, r2
+ cmp r0, r1
+ bge _08087FFC
+ adds r3, r4, 0
+_08087FFC:
+ 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_8087F54
+_08088012:
+ add sp, 0xC
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8087FB8
+
+ thumb_func_start sub_8088020
+sub_8088020: @ 8088020
+ push {r4-r7,lr}
+ sub sp, 0xC
+ adds r5, r1, 0
+ cmp r5, 0
+ beq _08088074
+ ldr r0, [r5]
+ ldr r4, [r0]
+ ldr r0, [r0, 0x4]
+ adds r2, 0x7
+ subs r7, r0, 0x7
+ cmp r2, 0
+ bge _08088050
+ negs r6, r2
+ adds r2, r4
+ ldr r0, =0x03005dc0
+ ldr r3, [r0]
+ cmp r2, r3
+ bge _08088046
+ adds r3, r2, 0
+_08088046:
+ movs r2, 0
+ b _08088060
+ .pool
+_08088050:
+ movs r6, 0
+ adds r0, r2, r4
+ ldr r1, =0x03005dc0
+ ldr r1, [r1]
+ subs r3, r1, r2
+ cmp r0, r1
+ bge _08088060
+ adds r3, r4, 0
+_08088060:
+ 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_8087F54
+_08088074:
+ add sp, 0xC
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8088020
+
+ thumb_func_start sub_8088080
+sub_8088080: @ 8088080
+ push {r4-r7,lr}
+ sub sp, 0xC
+ adds r5, r1, 0
+ cmp r5, 0
+ beq _080880D4
+ ldr r0, [r5]
+ ldr r1, [r0]
+ ldr r4, [r0, 0x4]
+ adds r2, 0x7
+ subs r7, r1, 0x7
+ cmp r2, 0
+ bge _080880B0
+ negs r6, r2
+ adds r1, r2, r4
+ ldr r0, =0x03005dc0
+ ldr r3, [r0, 0x4]
+ cmp r1, r3
+ bge _080880A6
+ adds r3, r1, 0
+_080880A6:
+ movs r2, 0
+ b _080880C0
+ .pool
+_080880B0:
+ movs r6, 0
+ adds r0, r2, r4
+ ldr r1, =0x03005dc0
+ ldr r1, [r1, 0x4]
+ subs r3, r1, r2
+ cmp r0, r1
+ bge _080880C0
+ adds r3, r4, 0
+_080880C0:
+ 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_8087F54
+_080880D4:
+ add sp, 0xC
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8088080
+
+ thumb_func_start sub_80880E0
+sub_80880E0: @ 80880E0
+ push {r4-r7,lr}
+ sub sp, 0xC
+ adds r3, r0, 0
+ adds r5, r1, 0
+ cmp r5, 0
+ beq _08088138
+ ldr r0, [r5]
+ ldr r4, [r0, 0x4]
+ ldr r0, [r3]
+ ldr r0, [r0]
+ adds r7, r0, 0x7
+ adds r2, 0x7
+ cmp r2, 0
+ bge _08088114
+ negs r6, r2
+ adds r1, r2, r4
+ ldr r0, =0x03005dc0
+ ldr r3, [r0, 0x4]
+ cmp r1, r3
+ bge _0808810A
+ adds r3, r1, 0
+_0808810A:
+ movs r2, 0
+ b _08088124
+ .pool
+_08088114:
+ movs r6, 0
+ adds r0, r2, r4
+ ldr r1, =0x03005dc0
+ ldr r1, [r1, 0x4]
+ subs r3, r1, r2
+ cmp r0, r1
+ bge _08088124
+ adds r3, r4, 0
+_08088124:
+ 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_8087F54
+_08088138:
+ add sp, 0xC
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80880E0
+
+ thumb_func_start MapGridGetZCoordAt
+@ u8 MapGridGetZCoordAt(s32 x, s32 y)
+MapGridGetZCoordAt: @ 8088144
+ push {r4,lr}
+ adds r2, r0, 0
+ adds r4, r1, 0
+ cmp r2, 0
+ blt _08088174
+ ldr r1, =0x03005dc0
+ ldr r3, [r1]
+ cmp r2, r3
+ bge _08088174
+ cmp r4, 0
+ blt _08088174
+ ldr r0, [r1, 0x4]
+ cmp r4, r0
+ bge _08088174
+ adds r0, r3, 0
+ muls r0, r4
+ adds r0, r2, r0
+ ldr r1, [r1, 0x8]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ b _08088196
+ .pool
+_08088174:
+ ldr r0, =0x02037318
+ ldr r3, [r0]
+ adds r1, r2, 0x1
+ movs r2, 0x1
+ ands r1, r2
+ adds r0, r4, 0x1
+ ands r0, r2
+ lsls r0, 1
+ adds r1, r0
+ ldr r0, [r3, 0x8]
+ lsls r1, 1
+ adds r1, r0
+ ldrh r1, [r1]
+ movs r2, 0xC0
+ lsls r2, 4
+ adds r0, r2, 0
+ orrs r1, r0
+_08088196:
+ ldr r0, =0x000003ff
+ cmp r1, r0
+ beq _080881A8
+ lsrs r0, r1, 12
+ b _080881AA
+ .pool
+_080881A8:
+ movs r0, 0
+_080881AA:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end MapGridGetZCoordAt
+
+ thumb_func_start MapGridIsImpassableAt
+@ u8 MapGridIsImpassableAt(s32 x, s32 y)
+MapGridIsImpassableAt: @ 80881B0
+ push {r4,lr}
+ adds r2, r0, 0
+ adds r4, r1, 0
+ cmp r2, 0
+ blt _080881E0
+ ldr r1, =0x03005dc0
+ ldr r3, [r1]
+ cmp r2, r3
+ bge _080881E0
+ cmp r4, 0
+ blt _080881E0
+ ldr r0, [r1, 0x4]
+ cmp r4, r0
+ bge _080881E0
+ adds r0, r3, 0
+ muls r0, r4
+ adds r0, r2, r0
+ ldr r1, [r1, 0x8]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ b _08088202
+ .pool
+_080881E0:
+ ldr r0, =0x02037318
+ ldr r3, [r0]
+ adds r1, r2, 0x1
+ movs r2, 0x1
+ ands r1, r2
+ adds r0, r4, 0x1
+ ands r0, r2
+ lsls r0, 1
+ adds r1, r0
+ ldr r0, [r3, 0x8]
+ lsls r1, 1
+ adds r1, r0
+ ldrh r1, [r1]
+ movs r2, 0xC0
+ lsls r2, 4
+ adds r0, r2, 0
+ orrs r1, r0
+_08088202:
+ ldr r0, =0x000003ff
+ cmp r1, r0
+ beq _0808821C
+ movs r0, 0xC0
+ lsls r0, 4
+ ands r1, r0
+ lsrs r0, r1, 10
+ b _0808821E
+ .pool
+_0808821C:
+ movs r0, 0x1
+_0808821E:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end MapGridIsImpassableAt
+
+ thumb_func_start MapGridGetMetatileIdAt
+@ u16 MapGridGetMetatileIdAt(s32 x, s32 y)
+MapGridGetMetatileIdAt: @ 8088224
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ adds r6, r1, 0
+ cmp r5, 0
+ blt _08088254
+ ldr r1, =0x03005dc0
+ ldr r2, [r1]
+ cmp r5, r2
+ bge _08088254
+ cmp r6, 0
+ blt _08088254
+ ldr r0, [r1, 0x4]
+ cmp r6, r0
+ bge _08088254
+ adds r0, r2, 0
+ muls r0, r6
+ adds r0, r5, r0
+ ldr r1, [r1, 0x8]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r4, [r0]
+ b _08088278
+ .pool
+_08088254:
+ ldr r0, =0x02037318
+ ldr r3, [r0]
+ adds r1, r5, 0x1
+ movs r2, 0x1
+ ands r1, r2
+ adds r0, r6, 0x1
+ ands r0, r2
+ lsls r0, 1
+ adds r1, r0
+ ldr r0, [r3, 0x8]
+ lsls r1, 1
+ adds r1, r0
+ ldrh r1, [r1]
+ movs r2, 0xC0
+ lsls r2, 4
+ adds r0, r2, 0
+ adds r4, r0, 0
+ orrs r4, r1
+_08088278:
+ ldr r0, =0x000003ff
+ cmp r4, r0
+ beq _0808828C
+ ands r4, r0
+ adds r0, r4, 0
+ b _080882B0
+ .pool
+_0808828C:
+ ldr r0, =0x02037318
+ ldr r3, [r0]
+ adds r1, r5, 0x1
+ movs r2, 0x1
+ ands r1, r2
+ adds r0, r6, 0x1
+ ands r0, r2
+ lsls r0, 1
+ adds r1, r0
+ ldr r0, [r3, 0x8]
+ lsls r1, 1
+ adds r1, r0
+ ldrh r0, [r1]
+ movs r2, 0xC0
+ lsls r2, 4
+ adds r1, r2, 0
+ orrs r0, r1
+ ands r0, r4
+_080882B0:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end MapGridGetMetatileIdAt
+
+ thumb_func_start MapGridGetMetatileBehaviorAt
+@ u8 MapGridGetMetatileBehaviorAt(s32 x, s32 y)
+MapGridGetMetatileBehaviorAt: @ 80882BC
+ push {lr}
+ bl MapGridGetMetatileIdAt
+ lsls r0, 16
+ lsrs r0, 16
+ bl GetBehaviorByMetatileId
+ adds r1, r0, 0
+ movs r0, 0xFF
+ ands r0, r1
+ pop {r1}
+ bx r1
+ thumb_func_end MapGridGetMetatileBehaviorAt
+
+ thumb_func_start MapGridGetMetatileLayerTypeAt
+@ u8 MapGridGetMetatileLayerTypeAt(s32 x, s32 y)
+MapGridGetMetatileLayerTypeAt: @ 80882D4
+ push {lr}
+ bl MapGridGetMetatileIdAt
+ lsls r0, 16
+ lsrs r0, 16
+ bl GetBehaviorByMetatileId
+ adds r1, r0, 0
+ movs r0, 0xF0
+ lsls r0, 8
+ ands r0, r1
+ lsrs r0, 12
+ pop {r1}
+ bx r1
+ thumb_func_end MapGridGetMetatileLayerTypeAt
+
+ thumb_func_start MapGridSetMetatileIdAt
+@ void MapGridSetMetatileIdAt(s32 x, s32 y, u16 metatileId)
+MapGridSetMetatileIdAt: @ 80882F0
+ push {r4,r5,lr}
+ adds r3, r0, 0
+ lsls r2, 16
+ lsrs r5, r2, 16
+ cmp r3, 0
+ blt _08088328
+ ldr r2, =0x03005dc0
+ ldr r4, [r2]
+ cmp r3, r4
+ bge _08088328
+ cmp r1, 0
+ blt _08088328
+ ldr r0, [r2, 0x4]
+ cmp r1, r0
+ bge _08088328
+ 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, =0x00000fff
+ ands r0, r5
+ orrs r2, r0
+ strh r2, [r1]
+_08088328:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end MapGridSetMetatileIdAt
+
+ thumb_func_start MapGridSetMetatileEntryAt
+@ void MapGridSetMetatileEntryAt(s32 x, s32 y, u16 metatileEntry)
+MapGridSetMetatileEntryAt: @ 8088338
+ push {r4,r5,lr}
+ adds r3, r0, 0
+ lsls r2, 16
+ lsrs r5, r2, 16
+ cmp r3, 0
+ blt _08088364
+ ldr r2, =0x03005dc0
+ ldr r4, [r2]
+ cmp r3, r4
+ bge _08088364
+ cmp r1, 0
+ blt _08088364
+ ldr r0, [r2, 0x4]
+ cmp r1, r0
+ bge _08088364
+ adds r0, r4, 0
+ muls r0, r1
+ adds r0, r3, r0
+ ldr r1, [r2, 0x8]
+ lsls r0, 1
+ adds r0, r1
+ strh r5, [r0]
+_08088364:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end MapGridSetMetatileEntryAt
+
+ thumb_func_start GetBehaviorByMetatileId
+@ u16 GetBehaviorByMetatileId(u16 metatileId)
+GetBehaviorByMetatileId: @ 8088370
+ push {lr}
+ lsls r0, 16
+ lsrs r2, r0, 16
+ adds r3, r2, 0
+ ldr r0, =0x000001ff
+ cmp r2, r0
+ bhi _08088394
+ ldr r0, =0x02037318
+ ldr r0, [r0]
+ ldr r0, [r0, 0x10]
+ ldr r1, [r0, 0x10]
+ lsls r0, r2, 1
+ b _080883B2
+ .pool
+_08088394:
+ ldr r0, =0x000003ff
+ cmp r2, r0
+ bls _080883A4
+ movs r0, 0xFF
+ b _080883B6
+ .pool
+_080883A4:
+ ldr r0, =0x02037318
+ ldr r0, [r0]
+ ldr r0, [r0, 0x14]
+ ldr r1, [r0, 0x10]
+ lsls r0, r3, 1
+ adds r0, r1
+ ldr r1, =0xfffffc00
+_080883B2:
+ adds r0, r1
+ ldrh r0, [r0]
+_080883B6:
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end GetBehaviorByMetatileId
+
+ thumb_func_start save_serialize_map
+save_serialize_map: @ 80883C4
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ ldr r0, =0x03005d8c
+ ldr r1, [r0]
+ adds r4, r1, 0
+ adds r4, 0x34
+ ldr r0, =0x03005dc0
+ ldr r0, [r0]
+ mov r8, r0
+ movs r0, 0
+ ldrsh r6, [r1, r0]
+ movs r2, 0x2
+ ldrsh r0, [r1, r2]
+ adds r1, r0, 0
+ adds r1, 0xE
+ cmp r0, r1
+ bge _08088420
+ mov r12, r1
+ ldr r1, =0x02032318
+ mov r9, r1
+ lsls r7, r6, 1
+_080883F2:
+ adds r1, r6, 0
+ adds r3, r1, 0
+ adds r3, 0xF
+ adds r5, r0, 0x1
+ cmp r1, r3
+ bge _0808841A
+ mov r2, r8
+ muls r2, r0
+ adds r0, r2, 0
+ lsls r0, 1
+ add r0, r9
+ adds r2, r7, r0
+ subs r1, r3, r1
+_0808840C:
+ ldrh r0, [r2]
+ strh r0, [r4]
+ adds r4, 0x2
+ adds r2, 0x2
+ subs r1, 0x1
+ cmp r1, 0
+ bne _0808840C
+_0808841A:
+ adds r0, r5, 0
+ cmp r0, r12
+ blt _080883F2
+_08088420:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end save_serialize_map
+
+ thumb_func_start sub_8088438
+sub_8088438: @ 8088438
+ push {r4,lr}
+ movs r2, 0
+ movs r1, 0
+ ldr r0, =0x03005d8c
+ ldr r0, [r0]
+ adds r3, r0, 0
+ adds r3, 0x34
+ ldr r4, =0x000001ff
+_08088448:
+ 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 _08088448
+ cmp r2, 0
+ beq _0808846C
+ movs r0, 0
+ b _0808846E
+ .pool
+_0808846C:
+ movs r0, 0x1
+_0808846E:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8088438
+
+ thumb_func_start sav2_mapdata_clear
+sav2_mapdata_clear: @ 8088474
+ push {lr}
+ sub sp, 0x4
+ mov r1, sp
+ movs r0, 0
+ strh r0, [r1]
+ ldr r0, =0x03005d8c
+ ldr r1, [r0]
+ adds r1, 0x34
+ ldr r2, =0x01000100
+ mov r0, sp
+ bl CpuSet
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sav2_mapdata_clear
+
+ thumb_func_start mapdata_from_sav2
+mapdata_from_sav2: @ 808849C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x10
+ ldr r4, =0x03005d8c
+ ldr r0, [r4]
+ adds r7, r0, 0
+ adds r7, 0x34
+ bl sub_8088438
+ cmp r0, 0
+ bne _080885AC
+ ldr r0, =0x03005dc0
+ ldr r0, [r0]
+ str r0, [sp]
+ ldr r0, [r4]
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ mov r10, r1
+ movs r2, 0x2
+ ldrsh r1, [r0, r2]
+ mov r8, r1
+ mov r6, r8
+ adds r0, r6, 0
+ adds r0, 0xE
+ cmp r6, r0
+ bge _0808855A
+_080884D6:
+ cmp r6, r8
+ bne _080884EC
+ cmp r6, 0
+ beq _080884EC
+ movs r0, 0
+ mov r9, r0
+ b _08088508
+ .pool
+_080884EC:
+ mov r0, r8
+ adds r0, 0xD
+ movs r1, 0xFF
+ mov r9, r1
+ cmp r6, r0
+ bne _08088508
+ ldr r0, =0x02037318
+ ldr r0, [r0]
+ ldr r0, [r0, 0x4]
+ subs r0, 0x1
+ cmp r6, r0
+ beq _08088508
+ movs r2, 0x1
+ mov r9, r2
+_08088508:
+ mov r5, r10
+ adds r0, r5, 0
+ adds r0, 0xF
+ mov r1, r8
+ adds r1, 0xE
+ str r1, [sp, 0x8]
+ adds r2, r6, 0x1
+ str r2, [sp, 0x4]
+ cmp r5, r0
+ bge _08088552
+ ldr r0, [sp]
+ lsls r3, r0, 16
+_08088520:
+ ldr r1, [sp]
+ adds r0, r1, 0
+ muls r0, r6
+ adds r0, r5, r0
+ lsls r0, 1
+ ldr r1, =0x02032318
+ adds r4, r0, r1
+ adds r0, r4, 0
+ lsrs r1, r3, 16
+ mov r2, r9
+ str r3, [sp, 0xC]
+ bl sub_8088BF0
+ lsls r0, 24
+ ldr r3, [sp, 0xC]
+ cmp r0, 0
+ bne _08088546
+ ldrh r0, [r7]
+ strh r0, [r4]
+_08088546:
+ adds r7, 0x2
+ adds r5, 0x1
+ mov r0, r10
+ adds r0, 0xF
+ cmp r5, r0
+ blt _08088520
+_08088552:
+ ldr r6, [sp, 0x4]
+ ldr r2, [sp, 0x8]
+ cmp r6, r2
+ blt _080884D6
+_0808855A:
+ mov r5, r10
+ adds r0, r5, 0
+ adds r0, 0xF
+ cmp r5, r0
+ bge _080885A8
+ mov r0, r8
+ subs r0, 0x1
+ lsls r0, 16
+ mov r9, r0
+ lsls r4, r5, 16
+ mov r0, r8
+ adds r0, 0xD
+ lsls r7, r0, 16
+_08088574:
+ mov r0, r8
+ cmp r0, 0
+ beq _08088584
+ asrs r0, r4, 16
+ mov r2, r9
+ asrs r1, r2, 16
+ bl sub_80D423C
+_08088584:
+ ldr r0, =0x02037318
+ ldr r0, [r0]
+ ldr r0, [r0, 0x4]
+ subs r0, 0x1
+ cmp r6, r0
+ bge _08088598
+ asrs r0, r4, 16
+ asrs r1, r7, 16
+ bl sub_80D42B8
+_08088598:
+ movs r0, 0x80
+ lsls r0, 9
+ adds r4, r0
+ adds r5, 0x1
+ mov r0, r10
+ adds r0, 0xF
+ cmp r5, r0
+ blt _08088574
+_080885A8:
+ bl sav2_mapdata_clear
+_080885AC:
+ add sp, 0x10
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end mapdata_from_sav2
+
+ thumb_func_start sub_80885C4
+sub_80885C4: @ 80885C4
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r3, r0, 24
+ adds r2, r3, 0
+ ldr r0, =0x03005d8c
+ ldr r1, [r0]
+ adds r0, r1, 0
+ adds r0, 0x34
+ str r0, [sp, 0x4]
+ ldr r0, =0x03005dc0
+ ldr r0, [r0]
+ str r0, [sp]
+ movs r4, 0
+ mov r9, r4
+ mov r8, r4
+ movs r0, 0
+ ldrsh r6, [r1, r0]
+ str r6, [sp, 0x8]
+ movs r4, 0x2
+ ldrsh r5, [r1, r4]
+ movs r7, 0xF
+ movs r6, 0xE
+ mov r12, r6
+ cmp r3, 0x2
+ beq _0808861E
+ cmp r3, 0x2
+ bgt _08088614
+ cmp r3, 0x1
+ beq _08088626
+ b _0808863E
+ .pool
+_08088614:
+ cmp r2, 0x3
+ beq _08088630
+ cmp r2, 0x4
+ beq _08088638
+ b _0808863E
+_0808861E:
+ adds r5, 0x1
+ movs r0, 0xD
+ mov r12, r0
+ b _0808863E
+_08088626:
+ movs r1, 0x1
+ mov r8, r1
+ movs r3, 0xD
+ mov r12, r3
+ b _0808863E
+_08088630:
+ ldr r4, [sp, 0x8]
+ adds r4, 0x1
+ str r4, [sp, 0x8]
+ b _0808863C
+_08088638:
+ movs r6, 0x1
+ mov r9, r6
+_0808863C:
+ movs r7, 0xE
+_0808863E:
+ movs r1, 0
+ cmp r1, r12
+ bge _08088682
+ ldr r0, =0x02032318
+ mov r10, r0
+_08088648:
+ adds r4, r1, 0x1
+ cmp r7, 0
+ beq _0808867C
+ 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
+_0808866E:
+ ldrh r0, [r1]
+ strh r0, [r2]
+ adds r1, 0x2
+ adds r2, 0x2
+ subs r3, 0x1
+ cmp r3, 0
+ bne _0808866E
+_0808867C:
+ adds r1, r4, 0
+ cmp r1, r12
+ blt _08088648
+_08088682:
+ bl sav2_mapdata_clear
+ add sp, 0xC
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80885C4
+
+ thumb_func_start GetMapBorderIdAt
+@ u32 GetMapBorderIdAt(s32 x, s32 y)
+GetMapBorderIdAt: @ 808869C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ cmp r4, 0
+ blt _080886D8
+ ldr r1, =0x03005dc0
+ ldr r2, [r1]
+ cmp r4, r2
+ bge _080886D8
+ cmp r5, 0
+ blt _080886D8
+ ldr r0, [r1, 0x4]
+ cmp r5, r0
+ bge _080886D8
+ adds r0, r2, 0
+ muls r0, r5
+ adds r0, r4, r0
+ ldr r1, [r1, 0x8]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ ldr r0, =0x000003ff
+ cmp r1, r0
+ beq _08088770
+ b _08088700
+ .pool
+_080886D8:
+ ldr r0, =0x02037318
+ ldr r3, [r0]
+ adds r1, r4, 0x1
+ movs r2, 0x1
+ ands r1, r2
+ adds r0, r5, 0x1
+ ands r0, r2
+ lsls r0, 1
+ adds r1, r0
+ ldr r0, [r3, 0x8]
+ lsls r1, 1
+ adds r1, r0
+ ldrh r1, [r1]
+ movs r2, 0xC0
+ lsls r2, 4
+ adds r0, r2, 0
+ orrs r0, r1
+ ldr r1, =0x000003ff
+ cmp r0, r1
+ beq _08088770
+_08088700:
+ ldr r1, =0x03005dc0
+ ldr r0, [r1]
+ subs r0, 0x8
+ cmp r4, r0
+ blt _0808872C
+ ldr r0, =0x02037340
+ ldrb r1, [r0]
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ beq _08088770
+ movs r0, 0x4
+ b _08088782
+ .pool
+_0808872C:
+ cmp r4, 0x6
+ bgt _08088744
+ ldr r0, =0x02037340
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _08088770
+ movs r0, 0x3
+ b _08088782
+ .pool
+_08088744:
+ ldr r0, [r1, 0x4]
+ subs r0, 0x7
+ cmp r5, r0
+ blt _08088760
+ ldr r0, =0x02037340
+ ldrb r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08088770
+ movs r0, 0x1
+ b _08088782
+ .pool
+_08088760:
+ cmp r5, 0x6
+ bgt _08088780
+ ldr r0, =0x02037340
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _0808877C
+_08088770:
+ movs r0, 0x1
+ negs r0, r0
+ b _08088782
+ .pool
+_0808877C:
+ movs r0, 0x2
+ b _08088782
+_08088780:
+ movs r0, 0
+_08088782:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end GetMapBorderIdAt
+
+ thumb_func_start GetPostCameraMoveMapBorderId
+@ u32 GetPostCameraMoveMapBorderId(s32 deltaX, s32 deltaY)
+GetPostCameraMoveMapBorderId: @ 8088788
+ push {r4,lr}
+ adds r3, r1, 0
+ ldr r1, =0x03005d8c
+ 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 GetMapBorderIdAt
+ pop {r4}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end GetPostCameraMoveMapBorderId
+
+ thumb_func_start CanCameraMoveInDirection
+@ bool32 CanCameraMoveInDirection(u8 direction)
+CanCameraMoveInDirection: @ 80887B0
+ push {r4,r5,lr}
+ ldr r1, =0x03005d8c
+ ldr r4, [r1]
+ movs r1, 0
+ ldrsh r3, [r4, r1]
+ ldr r2, =gUnknown_08339D64
+ 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 GetMapBorderIdAt
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ beq _080887F0
+ movs r0, 0x1
+ b _080887F2
+ .pool
+_080887F0:
+ movs r0, 0
+_080887F2:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end CanCameraMoveInDirection
+
+ thumb_func_start sub_80887F8
+sub_80887F8: @ 80887F8
+ 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 _08088860
+ cmp r4, 0x2
+ bgt _08088816
+ cmp r4, 0x1
+ beq _0808884C
+ b _08088872
+_08088816:
+ cmp r4, 0x3
+ beq _08088834
+ cmp r4, 0x4
+ bne _08088872
+ ldr r0, =0x03005d8c
+ ldr r1, [r0]
+ negs r0, r6
+ strh r0, [r1]
+ ldr r2, [r5, 0x4]
+ ldrh r0, [r1, 0x2]
+ subs r0, r2
+ b _08088870
+ .pool
+_08088834:
+ ldr r0, =0x03005d8c
+ ldr r1, [r0]
+ ldr r0, [r3]
+ ldr r0, [r0]
+ strh r0, [r1]
+ ldr r2, [r5, 0x4]
+ ldrh r0, [r1, 0x2]
+ subs r0, r2
+ b _08088870
+ .pool
+_0808884C:
+ ldr r0, =0x03005d8c
+ ldr r1, [r0]
+ ldr r2, [r5, 0x4]
+ ldrh r0, [r1]
+ subs r0, r2
+ strh r0, [r1]
+ negs r0, r7
+ b _08088870
+ .pool
+_08088860:
+ ldr r0, =0x03005d8c
+ ldr r1, [r0]
+ ldr r2, [r5, 0x4]
+ ldrh r0, [r1]
+ subs r0, r2
+ strh r0, [r1]
+ ldr r0, [r3]
+ ldr r0, [r0, 0x4]
+_08088870:
+ strh r0, [r1, 0x2]
+_08088872:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80887F8
+
+ thumb_func_start CameraMove
+@ u8 CameraMove(s32 deltaX, s32 deltaY)
+CameraMove: @ 808887C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ mov r10, r0
+ mov r9, r1
+ ldr r1, =0x02037334
+ ldrb r0, [r1]
+ movs r1, 0x2
+ negs r1, r1
+ ands r1, r0
+ ldr r2, =0x02037334
+ strb r1, [r2]
+ mov r0, r10
+ mov r1, r9
+ bl GetPostCameraMoveMapBorderId
+ adds r7, r0, 0
+ adds r0, r7, 0x1
+ cmp r0, 0x1
+ bhi _080888C4
+ ldr r0, =0x03005d8c
+ ldr r1, [r0]
+ ldrh r0, [r1]
+ add r0, r10
+ strh r0, [r1]
+ ldrh r0, [r1, 0x2]
+ add r0, r9
+ strh r0, [r1, 0x2]
+ b _08088932
+ .pool
+_080888C4:
+ bl save_serialize_map
+ bl sub_81BE72C
+ ldr r1, =0x03005d8c
+ 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_8088950
+ adds r4, r0, 0
+ adds r1, r7, 0
+ mov r2, r10
+ mov r3, r9
+ bl sub_80887F8
+ ldrb r0, [r4, 0x8]
+ ldrb r1, [r4, 0x9]
+ bl mliX_load_map
+ ldr r1, =0x02037334
+ ldrb r0, [r1]
+ movs r1, 0x1
+ orrs r0, r1
+ ldr r2, =0x02037334
+ strb r0, [r2]
+ ldr r0, =0x03005d8c
+ ldr r1, [r0]
+ movs r2, 0
+ ldrsh r0, [r1, r2]
+ subs r5, r0
+ ldr r0, =0x02037334
+ str r5, [r0, 0x4]
+ movs r2, 0x2
+ ldrsh r0, [r1, r2]
+ subs r6, r0
+ ldr r0, =0x02037334
+ 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_80885C4
+_08088932:
+ ldr r0, =0x02037334
+ 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
+ .pool
+ thumb_func_end CameraMove
+
+ thumb_func_start sub_8088950
+sub_8088950: @ 8088950
+ 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, =0x02037318
+ ldr r0, [r0, 0xC]
+ ldr r7, [r0]
+ ldr r4, [r0, 0x4]
+ movs r5, 0
+ cmp r5, r7
+ bge _08088998
+_0808896E:
+ ldrb r0, [r4]
+ cmp r0, r6
+ bne _08088990
+ adds r0, r6, 0
+ mov r1, r9
+ mov r2, r8
+ adds r3, r4, 0
+ bl sub_80889A8
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08088990
+ adds r0, r4, 0
+ b _0808899A
+ .pool
+_08088990:
+ adds r5, 0x1
+ adds r4, 0xC
+ cmp r5, r7
+ blt _0808896E
+_08088998:
+ movs r0, 0
+_0808899A:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8088950
+
+ thumb_func_start sub_80889A8
+sub_80889A8: @ 80889A8
+ 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 _08088A00
+ cmp r4, 0x2
+ bgt _080889E0
+ ldr r0, =0x02037318
+ ldr r0, [r0]
+ ldr r1, [r0]
+ ldr r0, [r2]
+ ldr r2, [r0]
+ ldr r3, [r5, 0x4]
+ adds r0, r7, 0
+ b _080889F2
+ .pool
+_080889E0:
+ cmp r6, 0x4
+ bgt _08088A00
+ ldr r0, =0x02037318
+ ldr r0, [r0]
+ ldr r1, [r0, 0x4]
+ ldr r0, [r2]
+ ldr r2, [r0, 0x4]
+ ldr r3, [r5, 0x4]
+ mov r0, r8
+_080889F2:
+ bl sub_8088A0C
+ lsls r0, 24
+ lsrs r0, 24
+ b _08088A02
+ .pool
+_08088A00:
+ movs r0, 0
+_08088A02:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80889A8
+
+ thumb_func_start sub_8088A0C
+sub_8088A0C: @ 8088A0C
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r0, r2, 0
+ adds r2, r3, 0
+ cmp r3, 0
+ bge _08088A1A
+ movs r3, 0
+_08088A1A:
+ adds r2, r0, r2
+ cmp r2, r1
+ bge _08088A22
+ adds r1, r2, 0
+_08088A22:
+ cmp r3, r4
+ bgt _08088A2E
+ cmp r4, r1
+ bgt _08088A2E
+ movs r0, 0x1
+ b _08088A30
+_08088A2E:
+ movs r0, 0
+_08088A30:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8088A0C
+
+ thumb_func_start sub_8088A38
+sub_8088A38: @ 8088A38
+ push {lr}
+ cmp r0, 0
+ blt _08088A46
+ cmp r0, r1
+ bge _08088A46
+ movs r0, 0x1
+ b _08088A48
+_08088A46:
+ movs r0, 0
+_08088A48:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8088A38
+
+ thumb_func_start sub_8088A4C
+sub_8088A4C: @ 8088A4C
+ 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 _08088A84
+ cmp r0, 0x2
+ bgt _08088A72
+ ldr r0, [r4, 0x4]
+ subs r0, r5, r0
+ ldr r1, [r1]
+ ldr r1, [r1]
+ bl sub_8088A38
+ b _08088A86
+_08088A72:
+ cmp r0, 0x4
+ bgt _08088A84
+ ldr r0, [r4, 0x4]
+ subs r0, r6, r0
+ ldr r1, [r1]
+ ldr r1, [r1, 0x4]
+ bl sub_8088A38
+ b _08088A86
+_08088A84:
+ movs r0, 0
+_08088A86:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8088A4C
+
+ thumb_func_start sub_8088A8C
+sub_8088A8C: @ 8088A8C
+ 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, =0x02037318
+ ldr r0, [r2, 0xC]
+ cmp r0, 0
+ bne _08088AB4
+ b _08088B2A
+ .pool
+_08088AB0:
+ adds r0, r4, 0
+ b _08088B2C
+_08088AB4:
+ ldr r7, [r0]
+ ldr r4, [r0, 0x4]
+ movs r6, 0
+ cmp r6, r7
+ bge _08088B2A
+ lsls r0, r1, 16
+ asrs r5, r0, 16
+ mov r9, r2
+ mov r1, r8
+ lsls r0, r1, 16
+ asrs r0, 16
+ mov r10, r0
+_08088ACC:
+ ldrb r1, [r4]
+ adds r3, r1, 0
+ subs r0, r1, 0x5
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bls _08088B22
+ cmp r1, 0x2
+ bne _08088AE2
+ cmp r5, 0x6
+ bgt _08088B22
+_08088AE2:
+ cmp r1, 0x1
+ bne _08088AF2
+ mov r2, r9
+ ldr r0, [r2]
+ ldr r0, [r0, 0x4]
+ adds r0, 0x7
+ cmp r5, r0
+ blt _08088B22
+_08088AF2:
+ mov r0, r8
+ lsls r2, r0, 16
+ cmp r1, 0x3
+ bne _08088B00
+ mov r1, r10
+ cmp r1, 0x6
+ bgt _08088B22
+_08088B00:
+ cmp r3, 0x4
+ bne _08088B12
+ asrs r1, r2, 16
+ mov r3, r9
+ ldr r0, [r3]
+ ldr r0, [r0]
+ adds r0, 0x7
+ cmp r1, r0
+ blt _08088B22
+_08088B12:
+ asrs r1, r2, 16
+ subs r1, 0x7
+ adds r0, r4, 0
+ subs r2, r5, 0x7
+ bl sub_8088A4C
+ cmp r0, 0x1
+ beq _08088AB0
+_08088B22:
+ adds r6, 0x1
+ adds r4, 0xC
+ cmp r6, r7
+ blt _08088ACC
+_08088B2A:
+ movs r0, 0
+_08088B2C:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8088A8C
+
+ thumb_func_start sub_8088B3C
+sub_8088B3C: @ 8088B3C
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r1, 16
+ lsrs r1, 16
+ ldr r2, =0x03005d8c
+ ldr r2, [r2]
+ subs r0, 0x7
+ strh r0, [r2]
+ subs r1, 0x7
+ strh r1, [r2, 0x2]
+ bx lr
+ .pool
+ thumb_func_end sub_8088B3C
+
+ thumb_func_start sav1_camera_get_focus_coords
+sav1_camera_get_focus_coords: @ 8088B58
+ ldr r2, =0x03005d8c
+ ldr r3, [r2]
+ ldrh r2, [r3]
+ adds r2, 0x7
+ strh r2, [r0]
+ ldrh r0, [r3, 0x2]
+ adds r0, 0x7
+ strh r0, [r1]
+ bx lr
+ .pool
+ thumb_func_end sav1_camera_get_focus_coords
+
+ thumb_func_start SetCameraCoords
+@ void SetCameraCoords(u16 x, u16 y)
+SetCameraCoords: @ 8088B70
+ ldr r2, =0x03005d8c
+ ldr r2, [r2]
+ strh r0, [r2]
+ strh r1, [r2, 0x2]
+ bx lr
+ .pool
+ thumb_func_end SetCameraCoords
+
+ thumb_func_start GetCameraCoords
+@ void GetCameraCoords(u16 *x, u16 *y)
+GetCameraCoords: @ 8088B80
+ ldr r2, =0x03005d8c
+ ldr r3, [r2]
+ ldrh r2, [r3]
+ strh r2, [r0]
+ ldrh r0, [r3, 0x2]
+ strh r0, [r1]
+ bx lr
+ .pool
+ thumb_func_end GetCameraCoords
+
+ thumb_func_start sub_8088B94
+sub_8088B94: @ 8088B94
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r3, r1, 0
+ adds r5, r2, 0
+ cmp r4, 0
+ blt _08088BE6
+ ldr r2, =0x03005dc0
+ ldr r1, [r2]
+ cmp r4, r1
+ bge _08088BE6
+ cmp r3, 0
+ blt _08088BE6
+ ldr r0, [r2, 0x4]
+ cmp r3, r0
+ bge _08088BE6
+ cmp r5, 0
+ beq _08088BD4
+ 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 _08088BE6
+ .pool
+_08088BD4:
+ muls r1, r3
+ adds r1, r4, r1
+ ldr r0, [r2, 0x8]
+ lsls r1, 1
+ adds r1, r0
+ ldrh r2, [r1]
+ ldr r0, =0x0000f3ff
+ ands r0, r2
+ strh r0, [r1]
+_08088BE6:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8088B94
+
+ thumb_func_start sub_8088BF0
+sub_8088BF0: @ 8088BF0
+ push {lr}
+ adds r3, r0, 0
+ lsls r1, 16
+ lsrs r0, r1, 16
+ adds r1, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ cmp r2, 0xFF
+ beq _08088C24
+ cmp r2, 0
+ bne _08088C0C
+ lsls r0, 1
+ subs r3, r0
+ b _08088C10
+_08088C0C:
+ lsls r0, r1, 1
+ adds r3, r0
+_08088C10:
+ ldrh r1, [r3]
+ ldr r0, =0x000003ff
+ ands r0, r1
+ adds r1, r2, 0
+ bl sub_80FADE4
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _08088C2C
+_08088C24:
+ movs r0, 0
+ b _08088C2E
+ .pool
+_08088C2C:
+ movs r0, 0x1
+_08088C2E:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8088BF0
+
+ thumb_func_start copy_tileset_patterns_to_vram
+@ void copy_tileset_patterns_to_vram(tileset *tileset, int num_tiles, int offset)
+copy_tileset_patterns_to_vram: @ 8088C34
+ 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 _08088C70
+ ldrb r0, [r3]
+ cmp r0, 0
+ bne _08088C60
+ ldr r1, [r3, 0x4]
+ lsls r2, r4, 21
+ lsrs r2, 16
+ movs r0, 0x2
+ adds r3, r5, 0
+ bl LoadBgTiles
+ b _08088C70
+_08088C60:
+ ldr r1, [r3, 0x4]
+ lsls r2, r6, 5
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x2
+ adds r3, r7, 0
+ bl decompress_and_copy_tile_data_to_vram
+_08088C70:
+ 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
+@ void copy_tileset_patterns_to_vram2(tileset *tileset, int num_tiles, int offset)
+copy_tileset_patterns_to_vram2: @ 8088C78
+ 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 _08088CB4
+ ldrb r0, [r3]
+ cmp r0, 0
+ bne _08088CA4
+ ldr r1, [r3, 0x4]
+ lsls r2, r4, 21
+ lsrs r2, 16
+ movs r0, 0x2
+ adds r3, r5, 0
+ bl LoadBgTiles
+ b _08088CB4
+_08088CA4:
+ ldr r1, [r3, 0x4]
+ lsls r2, r6, 5
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x2
+ adds r3, r7, 0
+ bl copy_decompressed_tile_data_to_vram_autofree
+_08088CB4:
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end copy_tileset_patterns_to_vram2
+
+ thumb_func_start nullsub_3
+nullsub_3: @ 8088CBC
+ bx lr
+ thumb_func_end nullsub_3
+
+ thumb_func_start nullsub_90
+nullsub_90: @ 8088CC0
+ bx lr
+ thumb_func_end nullsub_90
+
+ thumb_func_start apply_map_tileset_palette
+@ void apply_map_tileset_palette(tileset *tileset, int dest_offset, int size)
+apply_map_tileset_palette: @ 8088CC4
+ 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 _08088D42
+ ldrb r0, [r4, 0x1]
+ cmp r0, 0
+ bne _08088D18
+ mov r0, sp
+ adds r1, r5, 0
+ movs r2, 0x2
+ bl gpu_pal_apply
+ 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 gpu_pal_apply
+ lsls r4, 15
+ lsrs r4, 16
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl nullsub_3
+ b _08088D42
+_08088D18:
+ cmp r0, 0x1
+ bne _08088D32
+ ldr r0, [r4, 0x8]
+ adds r0, 0xC0
+ adds r1, r5, 0
+ adds r2, r7, 0
+ bl gpu_pal_apply
+ lsrs r1, r6, 17
+ adds r0, r5, 0
+ bl nullsub_3
+ b _08088D42
+_08088D32:
+ ldr r0, [r4, 0x8]
+ mov r1, r8
+ bl decompress_palette
+ lsrs r1, r6, 17
+ mov r0, r8
+ bl nullsub_3
+_08088D42:
+ 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 copy_map_tileset1_to_vram
+@ void copy_map_tileset1_to_vram(mapdata_header *a1)
+copy_map_tileset1_to_vram: @ 8088D50
+ push {lr}
+ ldr r0, [r0, 0x10]
+ movs r1, 0x80
+ lsls r1, 2
+ movs r2, 0
+ bl copy_tileset_patterns_to_vram
+ pop {r0}
+ bx r0
+ thumb_func_end copy_map_tileset1_to_vram
+
+ thumb_func_start copy_map_tileset2_to_vram
+@ void copy_map_tileset2_to_vram(mapdata_header *a1)
+copy_map_tileset2_to_vram: @ 8088D64
+ push {lr}
+ ldr r0, [r0, 0x14]
+ movs r2, 0x80
+ lsls r2, 2
+ adds r1, r2, 0
+ bl copy_tileset_patterns_to_vram
+ pop {r0}
+ bx r0
+ thumb_func_end copy_map_tileset2_to_vram
+
+ thumb_func_start copy_map_tileset2_to_vram_2
+@ void copy_map_tileset2_to_vram_2(mapdata_header *a1)
+copy_map_tileset2_to_vram_2: @ 8088D78
+ push {lr}
+ ldr r0, [r0, 0x14]
+ movs r2, 0x80
+ lsls r2, 2
+ adds r1, r2, 0
+ bl copy_tileset_patterns_to_vram2
+ pop {r0}
+ bx r0
+ thumb_func_end copy_map_tileset2_to_vram_2
+
+ thumb_func_start apply_map_tileset1_palette
+@ void apply_map_tileset1_palette(mapdata_header *a1)
+apply_map_tileset1_palette: @ 8088D8C
+ push {lr}
+ ldr r0, [r0, 0x10]
+ movs r1, 0
+ movs r2, 0xC0
+ bl apply_map_tileset_palette
+ pop {r0}
+ bx r0
+ thumb_func_end apply_map_tileset1_palette
+
+ thumb_func_start apply_map_tileset2_palette
+@ void apply_map_tileset2_palette(mapdata_header *a1)
+apply_map_tileset2_palette: @ 8088D9C
+ push {lr}
+ ldr r0, [r0, 0x14]
+ movs r1, 0x60
+ movs r2, 0xE0
+ bl apply_map_tileset_palette
+ pop {r0}
+ bx r0
+ thumb_func_end apply_map_tileset2_palette
+
+ thumb_func_start copy_map_tileset1_tileset2_to_vram
+@ void copy_map_tileset1_tileset2_to_vram(mapdata_header *a1)
+copy_map_tileset1_tileset2_to_vram: @ 8088DAC
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ cmp r5, 0
+ beq _08088DCC
+ ldr r0, [r5, 0x10]
+ movs r4, 0x80
+ lsls r4, 2
+ adds r1, r4, 0
+ movs r2, 0
+ bl copy_tileset_patterns_to_vram2
+ ldr r0, [r5, 0x14]
+ adds r1, r4, 0
+ adds r2, r4, 0
+ bl copy_tileset_patterns_to_vram2
+_08088DCC:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end copy_map_tileset1_tileset2_to_vram
+
+ thumb_func_start apply_map_tileset1_tileset2_palette
+@ void apply_map_tileset1_tileset2_palette(mapdata_header *a1)
+apply_map_tileset1_tileset2_palette: @ 8088DD4
+ push {r4,lr}
+ adds r4, r0, 0
+ cmp r4, 0
+ beq _08088DE6
+ bl apply_map_tileset1_palette
+ adds r0, r4, 0
+ bl apply_map_tileset2_palette
+_08088DE6:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end apply_map_tileset1_tileset2_palette
+
+ .align 2, 0 @ Don't pad with nop.