pokeemerald/asm/fieldmap.s
2017-09-10 15:35:21 -04:00

2286 lines
36 KiB
ArmAsm

.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, =gMapHeader
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, =gMapHeader
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, =gUnknown_03005DC0
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, =gUnknown_02032318
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, =gUnknown_02032318
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, =gUnknown_02032318
ldr r2, =0x01001400
mov r0, sp
adds r1, r4, 0
bl CpuFastSet
ldr r2, =gUnknown_03005DC0
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, =gUnknown_03005DC0
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, =gUnknown_02037340
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, =gUnknown_03005DC0
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, =gUnknown_03005DC0
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, =gUnknown_03005DC0
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, =gUnknown_03005DC0
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, =gUnknown_03005DC0
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, =gUnknown_03005DC0
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, =gUnknown_03005DC0
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, =gUnknown_03005DC0
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, =gUnknown_03005DC0
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, =gUnknown_03005DC0
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, =gUnknown_03005DC0
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, =gMapHeader
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, =gUnknown_03005DC0
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, =gMapHeader
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, =gUnknown_03005DC0
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, =gMapHeader
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, =gMapHeader
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, =gUnknown_03005DC0
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, =gUnknown_03005DC0
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, =gMapHeader
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, =gMapHeader
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, =gSaveBlock1Ptr
ldr r1, [r0]
adds r4, r1, 0
adds r4, 0x34
ldr r0, =gUnknown_03005DC0
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, =gUnknown_02032318
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, =gSaveBlock1Ptr
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, =gSaveBlock1Ptr
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, =gSaveBlock1Ptr
ldr r0, [r4]
adds r7, r0, 0
adds r7, 0x34
bl sub_8088438
cmp r0, 0
bne _080885AC
ldr r0, =gUnknown_03005DC0
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, =gMapHeader
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, =gUnknown_02032318
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, =gMapHeader
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, =gSaveBlock1Ptr
ldr r1, [r0]
adds r0, r1, 0
adds r0, 0x34
str r0, [sp, 0x4]
ldr r0, =gUnknown_03005DC0
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, =gUnknown_02032318
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, =gUnknown_03005DC0
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, =gMapHeader
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, =gUnknown_03005DC0
ldr r0, [r1]
subs r0, 0x8
cmp r4, r0
blt _0808872C
ldr r0, =gUnknown_02037340
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, =gUnknown_02037340
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, =gUnknown_02037340
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, =gUnknown_02037340
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, =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 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, =gSaveBlock1Ptr
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, =gSaveBlock1Ptr
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, =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 _08088870
.pool
_0808884C:
ldr r0, =gSaveBlock1Ptr
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, =gSaveBlock1Ptr
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, =gCamera
ldrb r0, [r1]
movs r1, 0x2
negs r1, r1
ands r1, r0
ldr r2, =gCamera
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, =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 _08088932
.pool
_080888C4:
bl save_serialize_map
bl sub_81BE72C
ldr r1, =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_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, =gCamera
ldrb r0, [r1]
movs r1, 0x1
orrs r0, r1
ldr r2, =gCamera
strb r0, [r2]
ldr r0, =gSaveBlock1Ptr
ldr r1, [r0]
movs r2, 0
ldrsh r0, [r1, r2]
subs r5, r0
ldr r0, =gCamera
str r5, [r0, 0x4]
movs r2, 0x2
ldrsh r0, [r1, r2]
subs r6, r0
ldr r0, =gCamera
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, =gCamera
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, =gMapHeader
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, =gMapHeader
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, =gMapHeader
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, =gMapHeader
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, =gSaveBlock1Ptr
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, =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
.pool
thumb_func_end sav1_camera_get_focus_coords
thumb_func_start SetCameraCoords
@ void SetCameraCoords(u16 x, u16 y)
SetCameraCoords: @ 8088B70
ldr r2, =gSaveBlock1Ptr
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, =gSaveBlock1Ptr
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, =gUnknown_03005DC0
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 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 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 LoadPalette
lsrs r1, r6, 17
adds r0, r5, 0
bl nullsub_3
b _08088D42
_08088D32:
ldr r0, [r4, 0x8]
mov r1, r8
bl LoadCompressedPalette
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.