Files
2019-09-27 01:42:56 -04:00

2357 lines
39 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.text
.syntax unified
thumb_func_start mapconnection_get_mapheader
mapconnection_get_mapheader: @ 0x080876A8
push {lr}
ldrb r2, [r0, #8]
ldrb r1, [r0, #9]
adds r0, r2, #0
bl Overworld_GetMapHeaderByGroupAndId
pop {r1}
bx r1
thumb_func_end mapconnection_get_mapheader
thumb_func_start InitMap
InitMap: @ 0x080876B8
push {r4, lr}
ldr r4, _080876D4
adds r0, r4, #0
bl InitMapLayoutData
ldr r0, [r4, #4]
bl SetOccupiedSecretBaseEntranceMetatiles
bl RunOnLoadMapScript
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080876D4: .4byte 0x02036FB8
thumb_func_end InitMap
thumb_func_start InitMapFromSavedGame
InitMapFromSavedGame: @ 0x080876D8
push {r4, lr}
ldr r4, _08087708
adds r0, r4, #0
bl InitMapLayoutData
movs r0, #0
bl InitSecretBaseAppearance
ldr r0, [r4, #4]
bl SetOccupiedSecretBaseEntranceMetatiles
bl LoadSavedMapView
bl RunOnLoadMapScript
ldr r1, _0808770C
ldr r0, [r1]
ldr r1, [r1, #4]
bl UpdateTVScreensOnMap
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08087708: .4byte 0x02036FB8
_0808770C: .4byte 0x03005B20
thumb_func_end InitMapFromSavedGame
thumb_func_start InitBattlePyramidMap
InitBattlePyramidMap: @ 0x08087710
push {r4, r5, lr}
sub sp, #4
adds r4, r0, #0
lsls r4, r4, #0x18
lsrs r4, r4, #0x18
ldr r0, _0808773C
str r0, [sp]
ldr r5, _08087740
ldr r2, _08087744
mov r0, sp
adds r1, r5, #0
bl CpuFastSet
adds r0, r5, #0
adds r1, r4, #0
bl GenerateBattlePyramidFloorLayout
add sp, #4
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0808773C: .4byte 0x03FF03FF
_08087740: .4byte 0x02031FB8
_08087744: .4byte 0x01001400
thumb_func_end InitBattlePyramidMap
thumb_func_start InitTrainerHillMap
InitTrainerHillMap: @ 0x08087748
push {r4, lr}
sub sp, #4
ldr r0, _0808776C
str r0, [sp]
ldr r4, _08087770
ldr r2, _08087774
mov r0, sp
adds r1, r4, #0
bl CpuFastSet
adds r0, r4, #0
bl sub_081D590C
add sp, #4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0808776C: .4byte 0x03FF03FF
_08087770: .4byte 0x02031FB8
_08087774: .4byte 0x01001400
thumb_func_end InitTrainerHillMap
thumb_func_start InitMapLayoutData
InitMapLayoutData: @ 0x08087778
push {r4, r5, r6, lr}
sub sp, #4
adds r6, r0, #0
ldr r5, [r6]
ldr r0, _080877C4
str r0, [sp]
ldr r4, _080877C8
ldr r2, _080877CC
mov r0, sp
adds r1, r4, #0
bl CpuFastSet
ldr r2, _080877D0
str r4, [r2, #8]
ldr r1, [r5]
adds r1, #0xf
str r1, [r2]
ldr r0, [r5, #4]
adds r0, #0xe
str r0, [r2, #4]
muls r1, r0, r1
movs r0, #0xa0
lsls r0, r0, #6
cmp r1, r0
bgt _080877BA
ldr r0, [r5, #0xc]
ldrh r1, [r5]
ldrh r2, [r5, #4]
bl InitBackupMapLayoutData
adds r0, r6, #0
bl InitBackupMapLayoutConnections
_080877BA:
add sp, #4
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_080877C4: .4byte 0x03FF03FF
_080877C8: .4byte 0x02031FB8
_080877CC: .4byte 0x01001400
_080877D0: .4byte 0x03005B20
thumb_func_end InitMapLayoutData
thumb_func_start InitBackupMapLayoutData
InitBackupMapLayoutData: @ 0x080877D4
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r7, r0, #0
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
mov r8, r1
lsls r2, r2, #0x10
lsrs r2, r2, #0x10
ldr r0, _08087828
ldr r4, [r0, #8]
ldr r1, [r0]
lsls r0, r1, #3
subs r0, r0, r1
lsls r0, r0, #1
adds r0, #0xe
adds r4, r4, r0
cmp r2, #0
beq _0808781C
mov r0, r8
lsls r6, r0, #1
adds r5, r2, #0
movs r0, #0x1e
adds r0, r0, r6
mov sb, r0
_08087808:
adds r0, r7, #0
adds r1, r4, #0
mov r2, r8
bl CpuSet
add r4, sb
adds r7, r7, r6
subs r5, #1
cmp r5, #0
bne _08087808
_0808781C:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08087828: .4byte 0x03005B20
thumb_func_end InitBackupMapLayoutData
thumb_func_start InitBackupMapLayoutConnections
InitBackupMapLayoutConnections: @ 0x0808782C
push {r4, r5, r6, r7, lr}
adds r6, r0, #0
ldr r0, [r6, #0xc]
cmp r0, #0
beq _080878B0
ldr r1, [r0]
ldr r5, [r0, #4]
ldr r2, _08087864
ldr r0, _08087868
ldr r0, [r0]
str r0, [r2]
cmp r1, #0
ble _080878B0
adds r4, r2, #0
adds r7, r1, #0
_0808784A:
adds r0, r5, #0
bl mapconnection_get_mapheader
adds r1, r0, #0
ldr r2, [r5, #4]
ldrb r0, [r5]
cmp r0, #2
beq _08087882
cmp r0, #2
bgt _0808786C
cmp r0, #1
beq _08087876
b _080878A8
.align 2, 0
_08087864: .4byte 0x02036FE0
_08087868: .4byte 0x0845F318
_0808786C:
cmp r0, #3
beq _0808788E
cmp r0, #4
beq _0808789A
b _080878A8
_08087876:
adds r0, r6, #0
bl FillSouthConnection
ldrb r0, [r4]
movs r1, #1
b _080878A4
_08087882:
adds r0, r6, #0
bl FillNorthConnection
ldrb r0, [r4]
movs r1, #2
b _080878A4
_0808788E:
adds r0, r6, #0
bl FillWestConnection
ldrb r0, [r4]
movs r1, #4
b _080878A4
_0808789A:
adds r0, r6, #0
bl FillEastConnection
ldrb r0, [r4]
movs r1, #8
_080878A4:
orrs r0, r1
strb r0, [r4]
_080878A8:
subs r7, #1
adds r5, #0xc
cmp r7, #0
bne _0808784A
_080878B0:
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
thumb_func_end InitBackupMapLayoutConnections
thumb_func_start sub_080878B8
sub_080878B8: @ 0x080878B8
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
ldr r5, [sp, #0x18]
ldr r4, [r2]
ldr r7, [r4]
adds r2, r7, #0
muls r2, r5, r2
adds r2, r2, r3
lsls r2, r2, #1
ldr r3, [r4, #0xc]
adds r6, r3, r2
ldr r3, _08087914
ldr r2, [r3]
muls r1, r2, r1
adds r1, r1, r0
lsls r1, r1, #1
ldr r0, [r3, #8]
adds r5, r0, r1
ldr r0, [sp, #0x20]
cmp r0, #0
ble _0808790A
adds r4, r0, #0
ldr r3, _08087918
mov r8, r3
_080878EA:
adds r0, r6, #0
adds r1, r5, #0
ldr r2, [sp, #0x1c]
mov r3, r8
ands r2, r3
bl CpuSet
ldr r0, _08087914
ldr r0, [r0]
lsls r0, r0, #1
adds r5, r5, r0
lsls r0, r7, #1
adds r6, r6, r0
subs r4, #1
cmp r4, #0
bne _080878EA
_0808790A:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08087914: .4byte 0x03005B20
_08087918: .4byte 0x001FFFFF
thumb_func_end sub_080878B8
thumb_func_start FillSouthConnection
FillSouthConnection: @ 0x0808791C
push {r4, r5, r6, r7, lr}
sub sp, #0xc
adds r3, r0, #0
adds r5, r1, #0
cmp r5, #0
beq _08087976
ldr r0, [r5]
ldr r4, [r0]
adds r2, #7
ldr r0, [r3]
ldr r0, [r0, #4]
adds r7, r0, #7
cmp r2, #0
bge _08087950
rsbs r6, r2, #0
adds r2, r2, r4
ldr r0, _0808794C
ldr r3, [r0]
cmp r2, r3
bge _08087946
adds r3, r2, #0
_08087946:
movs r2, #0
b _08087960
.align 2, 0
_0808794C: .4byte 0x03005B20
_08087950:
movs r6, #0
adds r0, r2, r4
ldr r1, _08087980
ldr r1, [r1]
subs r3, r1, r2
cmp r0, r1
bge _08087960
adds r3, r4, #0
_08087960:
movs r0, #0
str r0, [sp]
str r3, [sp, #4]
movs r0, #7
str r0, [sp, #8]
adds r0, r2, #0
adds r1, r7, #0
adds r2, r5, #0
adds r3, r6, #0
bl sub_080878B8
_08087976:
add sp, #0xc
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08087980: .4byte 0x03005B20
thumb_func_end FillSouthConnection
thumb_func_start FillNorthConnection
FillNorthConnection: @ 0x08087984
push {r4, r5, r6, r7, lr}
sub sp, #0xc
adds r5, r1, #0
cmp r5, #0
beq _080879D8
ldr r0, [r5]
ldr r4, [r0]
ldr r0, [r0, #4]
adds r2, #7
subs r7, r0, #7
cmp r2, #0
bge _080879B4
rsbs r6, r2, #0
adds r2, r2, r4
ldr r0, _080879B0
ldr r3, [r0]
cmp r2, r3
bge _080879AA
adds r3, r2, #0
_080879AA:
movs r2, #0
b _080879C4
.align 2, 0
_080879B0: .4byte 0x03005B20
_080879B4:
movs r6, #0
adds r0, r2, r4
ldr r1, _080879E0
ldr r1, [r1]
subs r3, r1, r2
cmp r0, r1
bge _080879C4
adds r3, r4, #0
_080879C4:
str r7, [sp]
str r3, [sp, #4]
movs r0, #7
str r0, [sp, #8]
adds r0, r2, #0
movs r1, #0
adds r2, r5, #0
adds r3, r6, #0
bl sub_080878B8
_080879D8:
add sp, #0xc
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_080879E0: .4byte 0x03005B20
thumb_func_end FillNorthConnection
thumb_func_start FillWestConnection
FillWestConnection: @ 0x080879E4
push {r4, r5, r6, r7, lr}
sub sp, #0xc
adds r5, r1, #0
cmp r5, #0
beq _08087A38
ldr r0, [r5]
ldr r1, [r0]
ldr r4, [r0, #4]
adds r2, #7
subs r7, r1, #7
cmp r2, #0
bge _08087A14
rsbs r6, r2, #0
adds r1, r2, r4
ldr r0, _08087A10
ldr r3, [r0, #4]
cmp r1, r3
bge _08087A0A
adds r3, r1, #0
_08087A0A:
movs r2, #0
b _08087A24
.align 2, 0
_08087A10: .4byte 0x03005B20
_08087A14:
movs r6, #0
adds r0, r2, r4
ldr r1, _08087A40
ldr r1, [r1, #4]
subs r3, r1, r2
cmp r0, r1
bge _08087A24
adds r3, r4, #0
_08087A24:
str r6, [sp]
movs r0, #7
str r0, [sp, #4]
str r3, [sp, #8]
movs r0, #0
adds r1, r2, #0
adds r2, r5, #0
adds r3, r7, #0
bl sub_080878B8
_08087A38:
add sp, #0xc
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08087A40: .4byte 0x03005B20
thumb_func_end FillWestConnection
thumb_func_start FillEastConnection
FillEastConnection: @ 0x08087A44
push {r4, r5, r6, r7, lr}
sub sp, #0xc
adds r3, r0, #0
adds r5, r1, #0
cmp r5, #0
beq _08087A9C
ldr r0, [r5]
ldr r4, [r0, #4]
ldr r0, [r3]
ldr r0, [r0]
adds r7, r0, #7
adds r2, #7
cmp r2, #0
bge _08087A78
rsbs r6, r2, #0
adds r1, r2, r4
ldr r0, _08087A74
ldr r3, [r0, #4]
cmp r1, r3
bge _08087A6E
adds r3, r1, #0
_08087A6E:
movs r2, #0
b _08087A88
.align 2, 0
_08087A74: .4byte 0x03005B20
_08087A78:
movs r6, #0
adds r0, r2, r4
ldr r1, _08087AA4
ldr r1, [r1, #4]
subs r3, r1, r2
cmp r0, r1
bge _08087A88
adds r3, r4, #0
_08087A88:
str r6, [sp]
movs r0, #8
str r0, [sp, #4]
str r3, [sp, #8]
adds r0, r7, #0
adds r1, r2, #0
adds r2, r5, #0
movs r3, #0
bl sub_080878B8
_08087A9C:
add sp, #0xc
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08087AA4: .4byte 0x03005B20
thumb_func_end FillEastConnection
thumb_func_start MapGridGetZCoordAt
MapGridGetZCoordAt: @ 0x08087AA8
push {r4, lr}
adds r2, r0, #0
adds r4, r1, #0
cmp r2, #0
blt _08087AD8
ldr r1, _08087AD4
ldr r3, [r1]
cmp r2, r3
bge _08087AD8
cmp r4, #0
blt _08087AD8
ldr r0, [r1, #4]
cmp r4, r0
bge _08087AD8
adds r0, r3, #0
muls r0, r4, r0
adds r0, r2, r0
ldr r1, [r1, #8]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r1, [r0]
b _08087AFA
.align 2, 0
_08087AD4: .4byte 0x03005B20
_08087AD8:
ldr r0, _08087B04
ldr r3, [r0]
adds r1, r2, #1
movs r2, #1
ands r1, r2
adds r0, r4, #1
ands r0, r2
lsls r0, r0, #1
adds r1, r1, r0
ldr r0, [r3, #8]
lsls r1, r1, #1
adds r1, r1, r0
ldrh r1, [r1]
movs r2, #0xc0
lsls r2, r2, #4
adds r0, r2, #0
orrs r1, r0
_08087AFA:
ldr r0, _08087B08
cmp r1, r0
beq _08087B0C
lsrs r0, r1, #0xc
b _08087B0E
.align 2, 0
_08087B04: .4byte 0x02036FB8
_08087B08: .4byte 0x000003FF
_08087B0C:
movs r0, #0
_08087B0E:
pop {r4}
pop {r1}
bx r1
thumb_func_end MapGridGetZCoordAt
thumb_func_start MapGridIsImpassableAt
MapGridIsImpassableAt: @ 0x08087B14
push {r4, lr}
adds r2, r0, #0
adds r4, r1, #0
cmp r2, #0
blt _08087B44
ldr r1, _08087B40
ldr r3, [r1]
cmp r2, r3
bge _08087B44
cmp r4, #0
blt _08087B44
ldr r0, [r1, #4]
cmp r4, r0
bge _08087B44
adds r0, r3, #0
muls r0, r4, r0
adds r0, r2, r0
ldr r1, [r1, #8]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r1, [r0]
b _08087B66
.align 2, 0
_08087B40: .4byte 0x03005B20
_08087B44:
ldr r0, _08087B78
ldr r3, [r0]
adds r1, r2, #1
movs r2, #1
ands r1, r2
adds r0, r4, #1
ands r0, r2
lsls r0, r0, #1
adds r1, r1, r0
ldr r0, [r3, #8]
lsls r1, r1, #1
adds r1, r1, r0
ldrh r1, [r1]
movs r2, #0xc0
lsls r2, r2, #4
adds r0, r2, #0
orrs r1, r0
_08087B66:
ldr r0, _08087B7C
cmp r1, r0
beq _08087B80
movs r0, #0xc0
lsls r0, r0, #4
ands r1, r0
lsrs r0, r1, #0xa
b _08087B82
.align 2, 0
_08087B78: .4byte 0x02036FB8
_08087B7C: .4byte 0x000003FF
_08087B80:
movs r0, #1
_08087B82:
pop {r4}
pop {r1}
bx r1
thumb_func_end MapGridIsImpassableAt
thumb_func_start MapGridGetMetatileIdAt
MapGridGetMetatileIdAt: @ 0x08087B88
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r6, r1, #0
cmp r5, #0
blt _08087BB8
ldr r1, _08087BB4
ldr r2, [r1]
cmp r5, r2
bge _08087BB8
cmp r6, #0
blt _08087BB8
ldr r0, [r1, #4]
cmp r6, r0
bge _08087BB8
adds r0, r2, #0
muls r0, r6, r0
adds r0, r5, r0
ldr r1, [r1, #8]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r4, [r0]
b _08087BDC
.align 2, 0
_08087BB4: .4byte 0x03005B20
_08087BB8:
ldr r0, _08087BE8
ldr r3, [r0]
adds r1, r5, #1
movs r2, #1
ands r1, r2
adds r0, r6, #1
ands r0, r2
lsls r0, r0, #1
adds r1, r1, r0
ldr r0, [r3, #8]
lsls r1, r1, #1
adds r1, r1, r0
ldrh r1, [r1]
movs r2, #0xc0
lsls r2, r2, #4
adds r0, r2, #0
adds r4, r0, #0
orrs r4, r1
_08087BDC:
ldr r0, _08087BEC
cmp r4, r0
beq _08087BF0
ands r4, r0
adds r0, r4, #0
b _08087C14
.align 2, 0
_08087BE8: .4byte 0x02036FB8
_08087BEC: .4byte 0x000003FF
_08087BF0:
ldr r0, _08087C1C
ldr r3, [r0]
adds r1, r5, #1
movs r2, #1
ands r1, r2
adds r0, r6, #1
ands r0, r2
lsls r0, r0, #1
adds r1, r1, r0
ldr r0, [r3, #8]
lsls r1, r1, #1
adds r1, r1, r0
ldrh r0, [r1]
movs r2, #0xc0
lsls r2, r2, #4
adds r1, r2, #0
orrs r0, r1
ands r0, r4
_08087C14:
pop {r4, r5, r6}
pop {r1}
bx r1
.align 2, 0
_08087C1C: .4byte 0x02036FB8
thumb_func_end MapGridGetMetatileIdAt
thumb_func_start MapGridGetMetatileBehaviorAt
MapGridGetMetatileBehaviorAt: @ 0x08087C20
push {lr}
bl MapGridGetMetatileIdAt
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
bl GetBehaviorByMetatileId
adds r1, r0, #0
movs r0, #0xff
ands r0, r1
pop {r1}
bx r1
thumb_func_end MapGridGetMetatileBehaviorAt
thumb_func_start MapGridGetMetatileLayerTypeAt
MapGridGetMetatileLayerTypeAt: @ 0x08087C38
push {lr}
bl MapGridGetMetatileIdAt
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
bl GetBehaviorByMetatileId
adds r1, r0, #0
movs r0, #0xf0
lsls r0, r0, #8
ands r0, r1
lsrs r0, r0, #0xc
pop {r1}
bx r1
thumb_func_end MapGridGetMetatileLayerTypeAt
thumb_func_start MapGridSetMetatileIdAt
MapGridSetMetatileIdAt: @ 0x08087C54
push {r4, r5, lr}
adds r3, r0, #0
lsls r2, r2, #0x10
lsrs r5, r2, #0x10
cmp r3, #0
blt _08087C8C
ldr r2, _08087C94
ldr r4, [r2]
cmp r3, r4
bge _08087C8C
cmp r1, #0
blt _08087C8C
ldr r0, [r2, #4]
cmp r1, r0
bge _08087C8C
muls r1, r4, r1
adds r1, r3, r1
ldr r0, [r2, #8]
lsls r1, r1, #1
adds r1, r1, r0
ldrh r0, [r1]
movs r2, #0xf0
lsls r2, r2, #8
ands r2, r0
ldr r0, _08087C98
ands r0, r5
orrs r2, r0
strh r2, [r1]
_08087C8C:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08087C94: .4byte 0x03005B20
_08087C98: .4byte 0x00000FFF
thumb_func_end MapGridSetMetatileIdAt
thumb_func_start MapGridSetMetatileEntryAt
MapGridSetMetatileEntryAt: @ 0x08087C9C
push {r4, r5, lr}
adds r3, r0, #0
lsls r2, r2, #0x10
lsrs r5, r2, #0x10
cmp r3, #0
blt _08087CC8
ldr r2, _08087CD0
ldr r4, [r2]
cmp r3, r4
bge _08087CC8
cmp r1, #0
blt _08087CC8
ldr r0, [r2, #4]
cmp r1, r0
bge _08087CC8
adds r0, r4, #0
muls r0, r1, r0
adds r0, r3, r0
ldr r1, [r2, #8]
lsls r0, r0, #1
adds r0, r0, r1
strh r5, [r0]
_08087CC8:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08087CD0: .4byte 0x03005B20
thumb_func_end MapGridSetMetatileEntryAt
thumb_func_start GetBehaviorByMetatileId
GetBehaviorByMetatileId: @ 0x08087CD4
push {lr}
lsls r0, r0, #0x10
lsrs r2, r0, #0x10
adds r3, r2, #0
ldr r0, _08087CF0
cmp r2, r0
bhi _08087CF8
ldr r0, _08087CF4
ldr r0, [r0]
ldr r0, [r0, #0x10]
ldr r1, [r0, #0x10]
lsls r0, r2, #1
b _08087D16
.align 2, 0
_08087CF0: .4byte 0x000001FF
_08087CF4: .4byte 0x02036FB8
_08087CF8:
ldr r0, _08087D04
cmp r2, r0
bls _08087D08
movs r0, #0xff
b _08087D1A
.align 2, 0
_08087D04: .4byte 0x000003FF
_08087D08:
ldr r0, _08087D20
ldr r0, [r0]
ldr r0, [r0, #0x14]
ldr r1, [r0, #0x10]
lsls r0, r3, #1
adds r0, r0, r1
ldr r1, _08087D24
_08087D16:
adds r0, r0, r1
ldrh r0, [r0]
_08087D1A:
pop {r1}
bx r1
.align 2, 0
_08087D20: .4byte 0x02036FB8
_08087D24: .4byte 0xFFFFFC00
thumb_func_end GetBehaviorByMetatileId
thumb_func_start save_serialize_map
save_serialize_map: @ 0x08087D28
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
ldr r0, _08087D90
ldr r1, [r0]
adds r4, r1, #0
adds r4, #0x34
ldr r0, _08087D94
ldr r0, [r0]
mov r8, r0
movs r0, #0
ldrsh r6, [r1, r0]
movs r2, #2
ldrsh r0, [r1, r2]
adds r1, r0, #0
adds r1, #0xe
cmp r0, r1
bge _08087D84
mov ip, r1
ldr r1, _08087D98
mov sb, r1
lsls r7, r6, #1
_08087D56:
adds r1, r6, #0
adds r3, r1, #0
adds r3, #0xf
adds r5, r0, #1
cmp r1, r3
bge _08087D7E
mov r2, r8
muls r2, r0, r2
adds r0, r2, #0
lsls r0, r0, #1
add r0, sb
adds r2, r7, r0
subs r1, r3, r1
_08087D70:
ldrh r0, [r2]
strh r0, [r4]
adds r4, #2
adds r2, #2
subs r1, #1
cmp r1, #0
bne _08087D70
_08087D7E:
adds r0, r5, #0
cmp r0, ip
blt _08087D56
_08087D84:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08087D90: .4byte 0x03005AEC
_08087D94: .4byte 0x03005B20
_08087D98: .4byte 0x02031FB8
thumb_func_end save_serialize_map
thumb_func_start SavedMapViewIsEmpty
SavedMapViewIsEmpty: @ 0x08087D9C
push {r4, lr}
movs r2, #0
movs r1, #0
ldr r0, _08087DC8
ldr r0, [r0]
adds r3, r0, #0
adds r3, #0x34
ldr r4, _08087DCC
_08087DAC:
lsls r0, r1, #1
adds r0, r3, r0
ldrh r0, [r0]
orrs r2, r0
adds r0, r1, #1
lsls r0, r0, #0x10
lsrs r1, r0, #0x10
cmp r1, r4
bls _08087DAC
cmp r2, #0
beq _08087DD0
movs r0, #0
b _08087DD2
.align 2, 0
_08087DC8: .4byte 0x03005AEC
_08087DCC: .4byte 0x000001FF
_08087DD0:
movs r0, #1
_08087DD2:
pop {r4}
pop {r1}
bx r1
thumb_func_end SavedMapViewIsEmpty
thumb_func_start ClearSavedMapView
ClearSavedMapView: @ 0x08087DD8
push {lr}
sub sp, #4
mov r1, sp
movs r0, #0
strh r0, [r1]
ldr r0, _08087DF8
ldr r1, [r0]
adds r1, #0x34
ldr r2, _08087DFC
mov r0, sp
bl CpuSet
add sp, #4
pop {r0}
bx r0
.align 2, 0
_08087DF8: .4byte 0x03005AEC
_08087DFC: .4byte 0x01000100
thumb_func_end ClearSavedMapView
thumb_func_start LoadSavedMapView
LoadSavedMapView: @ 0x08087E00
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0x10
ldr r4, _08087E48
ldr r0, [r4]
adds r7, r0, #0
adds r7, #0x34
bl SavedMapViewIsEmpty
cmp r0, #0
bne _08087F10
ldr r0, _08087E4C
ldr r0, [r0]
str r0, [sp]
ldr r0, [r4]
movs r2, #0
ldrsh r1, [r0, r2]
mov sl, r1
movs r2, #2
ldrsh r1, [r0, r2]
mov r8, r1
mov r6, r8
adds r0, r6, #0
adds r0, #0xe
cmp r6, r0
bge _08087EBE
_08087E3A:
cmp r6, r8
bne _08087E50
cmp r6, #0
beq _08087E50
movs r0, #0
mov sb, r0
b _08087E6C
.align 2, 0
_08087E48: .4byte 0x03005AEC
_08087E4C: .4byte 0x03005B20
_08087E50:
mov r0, r8
adds r0, #0xd
movs r1, #0xff
mov sb, r1
cmp r6, r0
bne _08087E6C
ldr r0, _08087F20
ldr r0, [r0]
ldr r0, [r0, #4]
subs r0, #1
cmp r6, r0
beq _08087E6C
movs r2, #1
mov sb, r2
_08087E6C:
mov r5, sl
adds r0, r5, #0
adds r0, #0xf
mov r1, r8
adds r1, #0xe
str r1, [sp, #8]
adds r2, r6, #1
str r2, [sp, #4]
cmp r5, r0
bge _08087EB6
ldr r0, [sp]
lsls r3, r0, #0x10
_08087E84:
ldr r1, [sp]
adds r0, r1, #0
muls r0, r6, r0
adds r0, r5, r0
lsls r0, r0, #1
ldr r1, _08087F24
adds r4, r0, r1
adds r0, r4, #0
lsrs r1, r3, #0x10
mov r2, sb
str r3, [sp, #0xc]
bl SkipCopyingMetatileFromSavedMap
lsls r0, r0, #0x18
ldr r3, [sp, #0xc]
cmp r0, #0
bne _08087EAA
ldrh r0, [r7]
strh r0, [r4]
_08087EAA:
adds r7, #2
adds r5, #1
mov r0, sl
adds r0, #0xf
cmp r5, r0
blt _08087E84
_08087EB6:
ldr r6, [sp, #4]
ldr r2, [sp, #8]
cmp r6, r2
blt _08087E3A
_08087EBE:
mov r5, sl
adds r0, r5, #0
adds r0, #0xf
cmp r5, r0
bge _08087F0C
mov r0, r8
subs r0, #1
lsls r0, r0, #0x10
mov sb, r0
lsls r4, r5, #0x10
mov r0, r8
adds r0, #0xd
lsls r7, r0, #0x10
_08087ED8:
mov r0, r8
cmp r0, #0
beq _08087EE8
asrs r0, r4, #0x10
mov r2, sb
asrs r1, r2, #0x10
bl FixLongGrassMetatilesWindowTop
_08087EE8:
ldr r0, _08087F20
ldr r0, [r0]
ldr r0, [r0, #4]
subs r0, #1
cmp r6, r0
bge _08087EFC
asrs r0, r4, #0x10
asrs r1, r7, #0x10
bl FixLongGrassMetatilesWindowBottom
_08087EFC:
movs r0, #0x80
lsls r0, r0, #9
adds r4, r4, r0
adds r5, #1
mov r0, sl
adds r0, #0xf
cmp r5, r0
blt _08087ED8
_08087F0C:
bl ClearSavedMapView
_08087F10:
add sp, #0x10
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08087F20: .4byte 0x02036FB8
_08087F24: .4byte 0x02031FB8
thumb_func_end LoadSavedMapView
thumb_func_start sub_08087F28
sub_08087F28: @ 0x08087F28
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0xc
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
adds r2, r3, #0
ldr r0, _08087F70
ldr r1, [r0]
adds r0, r1, #0
adds r0, #0x34
str r0, [sp, #4]
ldr r0, _08087F74
ldr r0, [r0]
str r0, [sp]
movs r4, #0
mov sb, r4
mov r8, r4
movs r0, #0
ldrsh r6, [r1, r0]
str r6, [sp, #8]
movs r4, #2
ldrsh r5, [r1, r4]
movs r7, #0xf
movs r6, #0xe
mov ip, r6
cmp r3, #2
beq _08087F82
cmp r3, #2
bgt _08087F78
cmp r3, #1
beq _08087F8A
b _08087FA2
.align 2, 0
_08087F70: .4byte 0x03005AEC
_08087F74: .4byte 0x03005B20
_08087F78:
cmp r2, #3
beq _08087F94
cmp r2, #4
beq _08087F9C
b _08087FA2
_08087F82:
adds r5, #1
movs r0, #0xd
mov ip, r0
b _08087FA2
_08087F8A:
movs r1, #1
mov r8, r1
movs r3, #0xd
mov ip, r3
b _08087FA2
_08087F94:
ldr r4, [sp, #8]
adds r4, #1
str r4, [sp, #8]
b _08087FA0
_08087F9C:
movs r6, #1
mov sb, r6
_08087FA0:
movs r7, #0xe
_08087FA2:
movs r1, #0
cmp r1, ip
bge _08087FE6
ldr r0, _08087FFC
mov sl, r0
_08087FAC:
adds r4, r1, #1
cmp r7, #0
beq _08087FE0
adds r0, r1, r5
ldr r3, [sp]
adds r2, r3, #0
muls r2, r0, r2
add r1, r8
lsls r0, r1, #4
subs r0, r0, r1
add r0, sb
ldr r6, [sp, #8]
adds r2, r6, r2
adds r3, r7, #0
lsls r2, r2, #1
add r2, sl
lsls r0, r0, #1
ldr r6, [sp, #4]
adds r1, r0, r6
_08087FD2:
ldrh r0, [r1]
strh r0, [r2]
adds r1, #2
adds r2, #2
subs r3, #1
cmp r3, #0
bne _08087FD2
_08087FE0:
adds r1, r4, #0
cmp r1, ip
blt _08087FAC
_08087FE6:
bl ClearSavedMapView
add sp, #0xc
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08087FFC: .4byte 0x02031FB8
thumb_func_end sub_08087F28
thumb_func_start GetMapBorderIdAt
GetMapBorderIdAt: @ 0x08088000
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
cmp r4, #0
blt _0808803C
ldr r1, _08088034
ldr r2, [r1]
cmp r4, r2
bge _0808803C
cmp r5, #0
blt _0808803C
ldr r0, [r1, #4]
cmp r5, r0
bge _0808803C
adds r0, r2, #0
muls r0, r5, r0
adds r0, r4, r0
ldr r1, [r1, #8]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r1, [r0]
ldr r0, _08088038
cmp r1, r0
beq _080880D4
b _08088064
.align 2, 0
_08088034: .4byte 0x03005B20
_08088038: .4byte 0x000003FF
_0808803C:
ldr r0, _08088080
ldr r3, [r0]
adds r1, r4, #1
movs r2, #1
ands r1, r2
adds r0, r5, #1
ands r0, r2
lsls r0, r0, #1
adds r1, r1, r0
ldr r0, [r3, #8]
lsls r1, r1, #1
adds r1, r1, r0
ldrh r1, [r1]
movs r2, #0xc0
lsls r2, r2, #4
adds r0, r2, #0
orrs r0, r1
ldr r1, _08088084
cmp r0, r1
beq _080880D4
_08088064:
ldr r1, _08088088
ldr r0, [r1]
subs r0, #8
cmp r4, r0
blt _08088090
ldr r0, _0808808C
ldrb r1, [r0]
movs r0, #8
ands r0, r1
cmp r0, #0
beq _080880D4
movs r0, #4
b _080880E6
.align 2, 0
_08088080: .4byte 0x02036FB8
_08088084: .4byte 0x000003FF
_08088088: .4byte 0x03005B20
_0808808C: .4byte 0x02036FE0
_08088090:
cmp r4, #6
bgt _080880A8
ldr r0, _080880A4
ldrb r1, [r0]
movs r0, #4
ands r0, r1
cmp r0, #0
beq _080880D4
movs r0, #3
b _080880E6
.align 2, 0
_080880A4: .4byte 0x02036FE0
_080880A8:
ldr r0, [r1, #4]
subs r0, #7
cmp r5, r0
blt _080880C4
ldr r0, _080880C0
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _080880D4
movs r0, #1
b _080880E6
.align 2, 0
_080880C0: .4byte 0x02036FE0
_080880C4:
cmp r5, #6
bgt _080880E4
ldr r0, _080880DC
ldrb r1, [r0]
movs r0, #2
ands r0, r1
cmp r0, #0
bne _080880E0
_080880D4:
movs r0, #1
rsbs r0, r0, #0
b _080880E6
.align 2, 0
_080880DC: .4byte 0x02036FE0
_080880E0:
movs r0, #2
b _080880E6
_080880E4:
movs r0, #0
_080880E6:
pop {r4, r5}
pop {r1}
bx r1
thumb_func_end GetMapBorderIdAt
thumb_func_start GetPostCameraMoveMapBorderId
GetPostCameraMoveMapBorderId: @ 0x080880EC
push {r4, lr}
adds r3, r1, #0
ldr r1, _08088110
ldr r1, [r1]
movs r4, #0
ldrsh r2, [r1, r4]
adds r0, #7
adds r2, r2, r0
movs r0, #2
ldrsh r1, [r1, r0]
adds r3, #7
adds r1, r1, r3
adds r0, r2, #0
bl GetMapBorderIdAt
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08088110: .4byte 0x03005AEC
thumb_func_end GetPostCameraMoveMapBorderId
thumb_func_start CanCameraMoveInDirection
CanCameraMoveInDirection: @ 0x08088114
push {r4, r5, lr}
ldr r1, _0808814C
ldr r4, [r1]
movs r1, #0
ldrsh r3, [r4, r1]
ldr r2, _08088150
lsls r0, r0, #3
adds r1, r0, r2
ldr r1, [r1]
adds r1, #7
adds r3, r3, r1
movs r5, #2
ldrsh r1, [r4, r5]
adds r2, #4
adds r0, r0, r2
ldr r0, [r0]
adds r0, #7
adds r1, r1, r0
adds r0, r3, #0
bl GetMapBorderIdAt
movs r1, #1
rsbs r1, r1, #0
cmp r0, r1
beq _08088154
movs r0, #1
b _08088156
.align 2, 0
_0808814C: .4byte 0x03005AEC
_08088150: .4byte 0x0830FCB0
_08088154:
movs r0, #0
_08088156:
pop {r4, r5}
pop {r1}
bx r1
thumb_func_end CanCameraMoveInDirection
thumb_func_start sub_0808815C
sub_0808815C: @ 0x0808815C
push {r4, r5, r6, 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, #2
beq _080881C4
cmp r4, #2
bgt _0808817A
cmp r4, #1
beq _080881B0
b _080881D6
_0808817A:
cmp r4, #3
beq _08088198
cmp r4, #4
bne _080881D6
ldr r0, _08088194
ldr r1, [r0]
rsbs r0, r6, #0
strh r0, [r1]
ldr r2, [r5, #4]
ldrh r0, [r1, #2]
subs r0, r0, r2
b _080881D4
.align 2, 0
_08088194: .4byte 0x03005AEC
_08088198:
ldr r0, _080881AC
ldr r1, [r0]
ldr r0, [r3]
ldr r0, [r0]
strh r0, [r1]
ldr r2, [r5, #4]
ldrh r0, [r1, #2]
subs r0, r0, r2
b _080881D4
.align 2, 0
_080881AC: .4byte 0x03005AEC
_080881B0:
ldr r0, _080881C0
ldr r1, [r0]
ldr r2, [r5, #4]
ldrh r0, [r1]
subs r0, r0, r2
strh r0, [r1]
rsbs r0, r7, #0
b _080881D4
.align 2, 0
_080881C0: .4byte 0x03005AEC
_080881C4:
ldr r0, _080881DC
ldr r1, [r0]
ldr r2, [r5, #4]
ldrh r0, [r1]
subs r0, r0, r2
strh r0, [r1]
ldr r0, [r3]
ldr r0, [r0, #4]
_080881D4:
strh r0, [r1, #2]
_080881D6:
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_080881DC: .4byte 0x03005AEC
thumb_func_end sub_0808815C
thumb_func_start CameraMove
CameraMove: @ 0x080881E0
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
mov sl, r0
mov sb, r1
ldr r1, _08088220
ldrb r0, [r1]
movs r1, #2
rsbs r1, r1, #0
ands r1, r0
ldr r2, _08088220
strb r1, [r2]
mov r0, sl
mov r1, sb
bl GetPostCameraMoveMapBorderId
adds r7, r0, #0
adds r0, r7, #1
cmp r0, #1
bhi _08088228
ldr r0, _08088224
ldr r1, [r0]
ldrh r0, [r1]
add r0, sl
strh r0, [r1]
ldrh r0, [r1, #2]
add r0, sb
strh r0, [r1, #2]
b _08088296
.align 2, 0
_08088220: .4byte 0x02036FD4
_08088224: .4byte 0x03005AEC
_08088228:
bl save_serialize_map
bl ClearMirageTowerPulseBlendEffect
ldr r1, _080882AC
ldr r0, [r1]
movs r2, #0
ldrsh r5, [r0, r2]
movs r1, #2
ldrsh r6, [r0, r1]
lsls r2, r7, #0x18
lsrs r2, r2, #0x18
mov r8, r2
mov r0, r8
adds r1, r5, #0
adds r2, r6, #0
bl sub_080882B4
adds r4, r0, #0
adds r1, r7, #0
mov r2, sl
mov r3, sb
bl sub_0808815C
ldrb r0, [r4, #8]
ldrb r1, [r4, #9]
bl LoadMapFromCameraTransition
ldr r1, _080882B0
ldrb r0, [r1]
movs r1, #1
orrs r0, r1
ldr r2, _080882B0
strb r0, [r2]
ldr r0, _080882AC
ldr r1, [r0]
movs r2, #0
ldrsh r0, [r1, r2]
subs r5, r5, r0
ldr r0, _080882B0
str r5, [r0, #4]
movs r2, #2
ldrsh r0, [r1, r2]
subs r6, r6, r0
ldr r0, _080882B0
str r6, [r0, #8]
ldrh r0, [r1]
add r0, sl
strh r0, [r1]
ldrh r0, [r1, #2]
add r0, sb
strh r0, [r1, #2]
mov r0, r8
bl sub_08087F28
_08088296:
ldr r0, _080882B0
ldrb r0, [r0]
lsls r0, r0, #0x1f
lsrs r0, r0, #0x1f
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
_080882AC: .4byte 0x03005AEC
_080882B0: .4byte 0x02036FD4
thumb_func_end CameraMove
thumb_func_start sub_080882B4
sub_080882B4: @ 0x080882B4
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
mov sb, r1
mov r8, r2
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
ldr r0, _080882F0
ldr r0, [r0, #0xc]
ldr r7, [r0]
ldr r4, [r0, #4]
movs r5, #0
cmp r5, r7
bge _080882FC
_080882D2:
ldrb r0, [r4]
cmp r0, r6
bne _080882F4
adds r0, r6, #0
mov r1, sb
mov r2, r8
adds r3, r4, #0
bl sub_0808830C
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _080882F4
adds r0, r4, #0
b _080882FE
.align 2, 0
_080882F0: .4byte 0x02036FB8
_080882F4:
adds r5, #1
adds r4, #0xc
cmp r5, r7
blt _080882D2
_080882FC:
movs r0, #0
_080882FE:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
thumb_func_end sub_080882B4
thumb_func_start sub_0808830C
sub_0808830C: @ 0x0808830C
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r7, r1, #0
mov r8, r2
adds r5, r3, #0
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
adds r6, r4, #0
adds r0, r5, #0
bl mapconnection_get_mapheader
adds r2, r0, #0
cmp r4, #1
blt _08088364
cmp r4, #2
bgt _08088344
ldr r0, _08088340
ldr r0, [r0]
ldr r1, [r0]
ldr r0, [r2]
ldr r2, [r0]
ldr r3, [r5, #4]
adds r0, r7, #0
b _08088356
.align 2, 0
_08088340: .4byte 0x02036FB8
_08088344:
cmp r6, #4
bgt _08088364
ldr r0, _08088360
ldr r0, [r0]
ldr r1, [r0, #4]
ldr r0, [r2]
ldr r2, [r0, #4]
ldr r3, [r5, #4]
mov r0, r8
_08088356:
bl sub_08088370
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
b _08088366
.align 2, 0
_08088360: .4byte 0x02036FB8
_08088364:
movs r0, #0
_08088366:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r1}
bx r1
thumb_func_end sub_0808830C
thumb_func_start sub_08088370
sub_08088370: @ 0x08088370
push {r4, lr}
adds r4, r0, #0
adds r0, r2, #0
adds r2, r3, #0
cmp r3, #0
bge _0808837E
movs r3, #0
_0808837E:
adds r2, r0, r2
cmp r2, r1
bge _08088386
adds r1, r2, #0
_08088386:
cmp r3, r4
bgt _08088392
cmp r4, r1
bgt _08088392
movs r0, #1
b _08088394
_08088392:
movs r0, #0
_08088394:
pop {r4}
pop {r1}
bx r1
.align 2, 0
thumb_func_end sub_08088370
thumb_func_start sub_0808839C
sub_0808839C: @ 0x0808839C
push {lr}
cmp r0, #0
blt _080883AA
cmp r0, r1
bge _080883AA
movs r0, #1
b _080883AC
_080883AA:
movs r0, #0
_080883AC:
pop {r1}
bx r1
thumb_func_end sub_0808839C
thumb_func_start sub_080883B0
sub_080883B0: @ 0x080883B0
push {r4, r5, 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, #1
blt _080883E8
cmp r0, #2
bgt _080883D6
ldr r0, [r4, #4]
subs r0, r5, r0
ldr r1, [r1]
ldr r1, [r1]
bl sub_0808839C
b _080883EA
_080883D6:
cmp r0, #4
bgt _080883E8
ldr r0, [r4, #4]
subs r0, r6, r0
ldr r1, [r1]
ldr r1, [r1, #4]
bl sub_0808839C
b _080883EA
_080883E8:
movs r0, #0
_080883EA:
pop {r4, r5, r6}
pop {r1}
bx r1
thumb_func_end sub_080883B0
thumb_func_start sub_080883F0
sub_080883F0: @ 0x080883F0
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
mov r8, r0
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
ldr r2, _08088410
ldr r0, [r2, #0xc]
cmp r0, #0
bne _08088418
b _0808848E
.align 2, 0
_08088410: .4byte 0x02036FB8
_08088414:
adds r0, r4, #0
b _08088490
_08088418:
ldr r7, [r0]
ldr r4, [r0, #4]
movs r6, #0
cmp r6, r7
bge _0808848E
lsls r0, r1, #0x10
asrs r5, r0, #0x10
mov sb, r2
mov r1, r8
lsls r0, r1, #0x10
asrs r0, r0, #0x10
mov sl, r0
_08088430:
ldrb r1, [r4]
adds r3, r1, #0
subs r0, r1, #5
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bls _08088486
cmp r1, #2
bne _08088446
cmp r5, #6
bgt _08088486
_08088446:
cmp r1, #1
bne _08088456
mov r2, sb
ldr r0, [r2]
ldr r0, [r0, #4]
adds r0, #7
cmp r5, r0
blt _08088486
_08088456:
mov r0, r8
lsls r2, r0, #0x10
cmp r1, #3
bne _08088464
mov r1, sl
cmp r1, #6
bgt _08088486
_08088464:
cmp r3, #4
bne _08088476
asrs r1, r2, #0x10
mov r3, sb
ldr r0, [r3]
ldr r0, [r0]
adds r0, #7
cmp r1, r0
blt _08088486
_08088476:
asrs r1, r2, #0x10
subs r1, #7
adds r0, r4, #0
subs r2, r5, #7
bl sub_080883B0
cmp r0, #1
beq _08088414
_08088486:
adds r6, #1
adds r4, #0xc
cmp r6, r7
blt _08088430
_0808848E:
movs r0, #0
_08088490:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
thumb_func_end sub_080883F0
thumb_func_start sub_080884A0
sub_080884A0: @ 0x080884A0
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
ldr r2, _080884B8
ldr r2, [r2]
subs r0, #7
strh r0, [r2]
subs r1, #7
strh r1, [r2, #2]
bx lr
.align 2, 0
_080884B8: .4byte 0x03005AEC
thumb_func_end sub_080884A0
thumb_func_start GetCameraFocusCoords
GetCameraFocusCoords: @ 0x080884BC
ldr r2, _080884D0
ldr r3, [r2]
ldrh r2, [r3]
adds r2, #7
strh r2, [r0]
ldrh r0, [r3, #2]
adds r0, #7
strh r0, [r1]
bx lr
.align 2, 0
_080884D0: .4byte 0x03005AEC
thumb_func_end GetCameraFocusCoords
thumb_func_start SetPlayerCoords
SetPlayerCoords: @ 0x080884D4
ldr r2, _080884E0
ldr r2, [r2]
strh r0, [r2]
strh r1, [r2, #2]
bx lr
.align 2, 0
_080884E0: .4byte 0x03005AEC
thumb_func_end SetPlayerCoords
thumb_func_start GetCameraCoords
GetCameraCoords: @ 0x080884E4
ldr r2, _080884F4
ldr r3, [r2]
ldrh r2, [r3]
strh r2, [r0]
ldrh r0, [r3, #2]
strh r0, [r1]
bx lr
.align 2, 0
_080884F4: .4byte 0x03005AEC
thumb_func_end GetCameraCoords
thumb_func_start sub_080884F8
sub_080884F8: @ 0x080884F8
push {r4, r5, lr}
adds r4, r0, #0
adds r3, r1, #0
adds r5, r2, #0
cmp r4, #0
blt _0808854A
ldr r2, _08088534
ldr r1, [r2]
cmp r4, r1
bge _0808854A
cmp r3, #0
blt _0808854A
ldr r0, [r2, #4]
cmp r3, r0
bge _0808854A
cmp r5, #0
beq _08088538
adds r0, r1, #0
muls r0, r3, r0
adds r0, r4, r0
ldr r1, [r2, #8]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r1, [r0]
movs r3, #0xc0
lsls r3, r3, #4
adds r2, r3, #0
orrs r1, r2
strh r1, [r0]
b _0808854A
.align 2, 0
_08088534: .4byte 0x03005B20
_08088538:
muls r1, r3, r1
adds r1, r4, r1
ldr r0, [r2, #8]
lsls r1, r1, #1
adds r1, r1, r0
ldrh r2, [r1]
ldr r0, _08088550
ands r0, r2
strh r0, [r1]
_0808854A:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08088550: .4byte 0x0000F3FF
thumb_func_end sub_080884F8
thumb_func_start SkipCopyingMetatileFromSavedMap
SkipCopyingMetatileFromSavedMap: @ 0x08088554
push {lr}
adds r3, r0, #0
lsls r1, r1, #0x10
lsrs r0, r1, #0x10
adds r1, r0, #0
lsls r2, r2, #0x18
lsrs r2, r2, #0x18
cmp r2, #0xff
beq _08088588
cmp r2, #0
bne _08088570
lsls r0, r0, #1
subs r3, r3, r0
b _08088574
_08088570:
lsls r0, r1, #1
adds r3, r3, r0
_08088574:
ldrh r1, [r3]
ldr r0, _0808858C
ands r0, r1
adds r1, r2, #0
bl sub_080FB654
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
beq _08088590
_08088588:
movs r0, #0
b _08088592
.align 2, 0
_0808858C: .4byte 0x000003FF
_08088590:
movs r0, #1
_08088592:
pop {r1}
bx r1
.align 2, 0
thumb_func_end SkipCopyingMetatileFromSavedMap
thumb_func_start copy_tileset_patterns_to_vram
copy_tileset_patterns_to_vram: @ 0x08088598
push {r4, r5, r6, r7, lr}
sub sp, #4
adds r3, r0, #0
lsls r1, r1, #0x10
lsrs r4, r1, #0x10
adds r6, r4, #0
lsls r2, r2, #0x10
lsrs r5, r2, #0x10
adds r7, r5, #0
cmp r3, #0
beq _080885D4
ldrb r0, [r3]
cmp r0, #0
bne _080885C4
ldr r1, [r3, #4]
lsls r2, r4, #0x15
lsrs r2, r2, #0x10
movs r0, #2
adds r3, r5, #0
bl LoadBgTiles
b _080885D4
_080885C4:
ldr r1, [r3, #4]
lsls r2, r6, #5
movs r0, #0
str r0, [sp]
movs r0, #2
adds r3, r7, #0
bl decompress_and_copy_tile_data_to_vram
_080885D4:
add sp, #4
pop {r4, r5, r6, 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: @ 0x080885DC
push {r4, r5, r6, r7, lr}
sub sp, #4
adds r3, r0, #0
lsls r1, r1, #0x10
lsrs r4, r1, #0x10
adds r6, r4, #0
lsls r2, r2, #0x10
lsrs r5, r2, #0x10
adds r7, r5, #0
cmp r3, #0
beq _08088618
ldrb r0, [r3]
cmp r0, #0
bne _08088608
ldr r1, [r3, #4]
lsls r2, r4, #0x15
lsrs r2, r2, #0x10
movs r0, #2
adds r3, r5, #0
bl LoadBgTiles
b _08088618
_08088608:
ldr r1, [r3, #4]
lsls r2, r6, #5
movs r0, #0
str r0, [sp]
movs r0, #2
adds r3, r7, #0
bl DecompressAndLoadBgGfxUsingHeap
_08088618:
add sp, #4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
thumb_func_end copy_tileset_patterns_to_vram2
thumb_func_start nullsub_90
nullsub_90: @ 0x08088620
bx lr
.align 2, 0
thumb_func_end nullsub_90
thumb_func_start nullsub_3
nullsub_3: @ 0x08088624
bx lr
.align 2, 0
thumb_func_end nullsub_3
thumb_func_start apply_map_tileset_palette
apply_map_tileset_palette: @ 0x08088628
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
sub sp, #4
adds r4, r0, #0
lsls r1, r1, #0x10
lsrs r5, r1, #0x10
mov r8, r5
lsls r6, r2, #0x10
lsrs r7, r6, #0x10
adds r2, r7, #0
movs r1, #0
mov r0, sp
strh r1, [r0]
cmp r4, #0
beq _080886A6
ldrb r0, [r4, #1]
cmp r0, #0
bne _0808867C
mov r0, sp
adds r1, r5, #0
movs r2, #2
bl LoadPalette
ldr r0, [r4, #8]
adds r0, #2
adds r5, #1
lsls r5, r5, #0x10
lsrs r5, r5, #0x10
subs r4, r7, #2
lsls r2, r4, #0x10
lsrs r2, r2, #0x10
adds r1, r5, #0
bl LoadPalette
lsls r4, r4, #0xf
lsrs r4, r4, #0x10
adds r0, r5, #0
adds r1, r4, #0
bl nullsub_90
b _080886A6
_0808867C:
cmp r0, #1
bne _08088696
ldr r0, [r4, #8]
adds r0, #0xc0
adds r1, r5, #0
adds r2, r7, #0
bl LoadPalette
lsrs r1, r6, #0x11
adds r0, r5, #0
bl nullsub_90
b _080886A6
_08088696:
ldr r0, [r4, #8]
mov r1, r8
bl LoadCompressedPalette
lsrs r1, r6, #0x11
mov r0, r8
bl nullsub_90
_080886A6:
add sp, #4
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
thumb_func_end apply_map_tileset_palette
thumb_func_start copy_map_tileset1_to_vram
copy_map_tileset1_to_vram: @ 0x080886B4
push {lr}
ldr r0, [r0, #0x10]
movs r1, #0x80
lsls r1, r1, #2
movs r2, #0
bl copy_tileset_patterns_to_vram
pop {r0}
bx r0
.align 2, 0
thumb_func_end copy_map_tileset1_to_vram
thumb_func_start copy_map_tileset2_to_vram
copy_map_tileset2_to_vram: @ 0x080886C8
push {lr}
ldr r0, [r0, #0x14]
movs r2, #0x80
lsls r2, r2, #2
adds r1, r2, #0
bl copy_tileset_patterns_to_vram
pop {r0}
bx r0
.align 2, 0
thumb_func_end copy_map_tileset2_to_vram
thumb_func_start copy_map_tileset2_to_vram_2
copy_map_tileset2_to_vram_2: @ 0x080886DC
push {lr}
ldr r0, [r0, #0x14]
movs r2, #0x80
lsls r2, r2, #2
adds r1, r2, #0
bl copy_tileset_patterns_to_vram2
pop {r0}
bx r0
.align 2, 0
thumb_func_end copy_map_tileset2_to_vram_2
thumb_func_start apply_map_tileset1_palette
apply_map_tileset1_palette: @ 0x080886F0
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
apply_map_tileset2_palette: @ 0x08088700
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
copy_map_tileset1_tileset2_to_vram: @ 0x08088710
push {r4, r5, lr}
adds r5, r0, #0
cmp r5, #0
beq _08088730
ldr r0, [r5, #0x10]
movs r4, #0x80
lsls r4, 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
_08088730:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
thumb_func_end copy_map_tileset1_tileset2_to_vram
thumb_func_start apply_map_tileset1_tileset2_palette
apply_map_tileset1_tileset2_palette: @ 0x08088738
push {r4, lr}
adds r4, r0, #0
cmp r4, #0
beq _0808874A
bl apply_map_tileset1_palette
adds r0, r4, #0
bl apply_map_tileset2_palette
_0808874A:
pop {r4}
pop {r0}
bx r0
thumb_func_end apply_map_tileset1_tileset2_palette