mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-11-19 13:07:38 +01:00
2286 lines
36 KiB
ArmAsm
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.
|