mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 19:54:21 +01:00
590 lines
8.8 KiB
ArmAsm
590 lines
8.8 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_80FB0B0
|
|
sub_80FB0B0: @ 80FB0B0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x78
|
|
bl __modsi3
|
|
cmp r0, 0
|
|
bne _080FB0C4
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
b _080FB0D6
|
|
_080FB0C4:
|
|
adds r0, r4, 0
|
|
movs r1, 0xA
|
|
bl __modsi3
|
|
cmp r0, 0x4
|
|
ble _080FB0D4
|
|
movs r0, 0
|
|
b _080FB0D6
|
|
_080FB0D4:
|
|
movs r0, 0x1
|
|
_080FB0D6:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80FB0B0
|
|
|
|
thumb_func_start sub_80FB0DC
|
|
sub_80FB0DC: @ 80FB0DC
|
|
push {lr}
|
|
adds r0, 0x78
|
|
movs r1, 0xB4
|
|
bl __modsi3
|
|
cmp r0, 0
|
|
beq _080FB0EE
|
|
movs r0, 0
|
|
b _080FB0F2
|
|
_080FB0EE:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
_080FB0F2:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80FB0DC
|
|
|
|
thumb_func_start sub_80FB0F8
|
|
sub_80FB0F8: @ 80FB0F8
|
|
push {r4,r5,lr}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, =gTasks + 0x8
|
|
adds r5, r1, r0
|
|
movs r1, 0
|
|
ldrsh r0, [r5, r1]
|
|
adds r0, 0x1E
|
|
bl sub_80FB0DC
|
|
ldr r4, =gSaveBlock1Ptr
|
|
ldr r2, [r4]
|
|
ldrb r1, [r2, 0x5]
|
|
ldrb r2, [r2, 0x4]
|
|
lsls r0, 18
|
|
movs r3, 0xC0
|
|
lsls r3, 10
|
|
orrs r0, r3
|
|
asrs r0, 16
|
|
str r0, [sp]
|
|
movs r0, 0x1
|
|
movs r3, 0x3
|
|
bl sub_808E82C
|
|
movs r3, 0
|
|
ldrsh r0, [r5, r3]
|
|
bl sub_80FB0DC
|
|
ldr r2, [r4]
|
|
ldrb r1, [r2, 0x5]
|
|
ldrb r2, [r2, 0x4]
|
|
lsls r0, 17
|
|
ldr r3, =0xfffd0000
|
|
adds r0, r3
|
|
asrs r0, 16
|
|
str r0, [sp]
|
|
movs r0, 0x2
|
|
movs r3, 0
|
|
bl sub_808E82C
|
|
movs r1, 0
|
|
ldrsh r0, [r5, r1]
|
|
bl sub_80FB0DC
|
|
ldr r2, [r4]
|
|
ldrb r1, [r2, 0x5]
|
|
ldrb r2, [r2, 0x4]
|
|
movs r4, 0
|
|
movs r3, 0x3
|
|
negs r3, r3
|
|
lsls r0, 18
|
|
asrs r0, 16
|
|
str r0, [sp]
|
|
movs r0, 0x3
|
|
bl sub_808E82C
|
|
ldrh r0, [r5]
|
|
adds r0, 0x1
|
|
strh r0, [r5]
|
|
lsls r0, 16
|
|
ldr r1, =0x75300000
|
|
cmp r0, r1
|
|
bne _080FB180
|
|
strh r4, [r5]
|
|
_080FB180:
|
|
movs r3, 0
|
|
ldrsh r0, [r5, r3]
|
|
bl sub_80FB0B0
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
movs r0, 0
|
|
bl SetCameraPanning
|
|
add sp, 0x4
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80FB0F8
|
|
|
|
thumb_func_start sub_80FB1AC
|
|
sub_80FB1AC: @ 80FB1AC
|
|
push {r4-r7,lr}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r3, r0, 3
|
|
ldr r4, =gTasks + 0x8
|
|
adds r7, r3, r4
|
|
ldrh r1, [r7]
|
|
adds r1, 0x1
|
|
strh r1, [r7]
|
|
ldrh r0, [r7, 0x4]
|
|
adds r0, 0x1
|
|
strh r0, [r7, 0x4]
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
cmp r1, 0x5
|
|
ble _080FB1DC
|
|
movs r0, 0
|
|
strh r0, [r7]
|
|
ldrh r0, [r7, 0x2]
|
|
adds r0, 0x1
|
|
strh r0, [r7, 0x2]
|
|
_080FB1DC:
|
|
ldrh r0, [r7, 0x2]
|
|
cmp r0, 0x13
|
|
bne _080FB1F0
|
|
adds r0, r2, 0
|
|
bl DestroyTask
|
|
b _080FB2A8
|
|
.pool
|
|
_080FB1F0:
|
|
ldr r2, =gUnknown_0858E898
|
|
movs r1, 0x2
|
|
ldrsh r0, [r7, r1]
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
cmp r0, 0x2
|
|
bne _080FB20C
|
|
adds r0, r4, 0
|
|
subs r0, 0x8
|
|
adds r0, r3, r0
|
|
ldr r1, =sub_80FB2C0
|
|
str r1, [r0]
|
|
_080FB20C:
|
|
movs r4, 0x2
|
|
ldrsh r0, [r7, r4]
|
|
adds r0, r2
|
|
movs r5, 0
|
|
ldrsb r5, [r0, r5]
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
movs r1, 0x4
|
|
ldrsh r0, [r7, r1]
|
|
bl sub_80FB0B0
|
|
adds r1, r0, 0
|
|
lsls r5, 16
|
|
asrs r5, 16
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
adds r0, r5, 0
|
|
bl SetCameraPanning
|
|
movs r4, 0x4
|
|
ldrsh r0, [r7, r4]
|
|
adds r0, 0x1E
|
|
bl sub_80FB0DC
|
|
ldr r6, =gSaveBlock1Ptr
|
|
ldr r2, [r6]
|
|
ldrb r1, [r2, 0x5]
|
|
ldrb r2, [r2, 0x4]
|
|
movs r3, 0x3
|
|
subs r3, r5
|
|
lsls r3, 16
|
|
asrs r3, 16
|
|
lsls r0, 18
|
|
movs r4, 0xC0
|
|
lsls r4, 10
|
|
orrs r0, r4
|
|
asrs r0, 16
|
|
str r0, [sp]
|
|
movs r0, 0x1
|
|
bl sub_808E82C
|
|
movs r1, 0x4
|
|
ldrsh r0, [r7, r1]
|
|
bl sub_80FB0DC
|
|
ldr r2, [r6]
|
|
ldrb r1, [r2, 0x5]
|
|
ldrb r2, [r2, 0x4]
|
|
negs r3, r5
|
|
lsls r3, 16
|
|
asrs r3, 16
|
|
lsls r0, 17
|
|
ldr r4, =0xfffd0000
|
|
adds r0, r4
|
|
asrs r0, 16
|
|
str r0, [sp]
|
|
movs r0, 0x2
|
|
bl sub_808E82C
|
|
movs r1, 0x4
|
|
ldrsh r0, [r7, r1]
|
|
bl sub_80FB0DC
|
|
ldr r2, [r6]
|
|
ldrb r1, [r2, 0x5]
|
|
ldrb r2, [r2, 0x4]
|
|
movs r4, 0x3
|
|
negs r4, r4
|
|
adds r3, r4, 0
|
|
subs r3, r5
|
|
lsls r3, 16
|
|
asrs r3, 16
|
|
lsls r0, 18
|
|
asrs r0, 16
|
|
str r0, [sp]
|
|
movs r0, 0x3
|
|
bl sub_808E82C
|
|
_080FB2A8:
|
|
add sp, 0x4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80FB1AC
|
|
|
|
thumb_func_start sub_80FB2C0
|
|
sub_80FB2C0: @ 80FB2C0
|
|
push {r4-r6,lr}
|
|
mov r6, r8
|
|
push {r6}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r3, r0, 0
|
|
lsls r0, r3, 2
|
|
adds r0, r3
|
|
lsls r0, 3
|
|
ldr r1, =gTasks + 0x8
|
|
adds r2, r0, r1
|
|
ldrh r0, [r2]
|
|
adds r0, 0x1
|
|
strh r0, [r2]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x5
|
|
ble _080FB2F0
|
|
movs r0, 0
|
|
strh r0, [r2]
|
|
ldrh r0, [r2, 0x2]
|
|
adds r0, 0x1
|
|
strh r0, [r2, 0x2]
|
|
_080FB2F0:
|
|
ldrh r0, [r2, 0x2]
|
|
cmp r0, 0x13
|
|
bne _080FB304
|
|
adds r0, r3, 0
|
|
bl DestroyTask
|
|
b _080FB358
|
|
.pool
|
|
_080FB304:
|
|
ldr r1, =gUnknown_0858E898
|
|
movs r3, 0x2
|
|
ldrsh r0, [r2, r3]
|
|
adds r0, r1
|
|
movs r1, 0
|
|
mov r8, r1
|
|
movs r6, 0
|
|
ldrsb r6, [r0, r6]
|
|
adds r0, r6, 0
|
|
bl SetCameraPanning
|
|
ldr r5, =gSaveBlock1Ptr
|
|
ldr r0, [r5]
|
|
ldrb r1, [r0, 0x5]
|
|
ldrb r2, [r0, 0x4]
|
|
movs r3, 0x3
|
|
subs r3, r6
|
|
movs r0, 0x3
|
|
str r0, [sp]
|
|
movs r0, 0x1
|
|
bl sub_808E82C
|
|
ldr r0, [r5]
|
|
ldrb r1, [r0, 0x5]
|
|
ldrb r2, [r0, 0x4]
|
|
negs r3, r6
|
|
mov r4, r8
|
|
subs r4, 0x3
|
|
str r4, [sp]
|
|
movs r0, 0x2
|
|
bl sub_808E82C
|
|
ldr r0, [r5]
|
|
ldrb r1, [r0, 0x5]
|
|
ldrb r2, [r0, 0x4]
|
|
subs r4, r6
|
|
mov r3, r8
|
|
str r3, [sp]
|
|
movs r0, 0x3
|
|
adds r3, r4, 0
|
|
bl sub_808E82C
|
|
_080FB358:
|
|
add sp, 0x4
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80FB2C0
|
|
|
|
thumb_func_start sub_80FB36C
|
|
sub_80FB36C: @ 80FB36C
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, =gTasks + 0x8
|
|
adds r4, r0, r1
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x5
|
|
bls _080FB386
|
|
b _080FB4D8
|
|
_080FB386:
|
|
lsls r0, 2
|
|
ldr r1, =_080FB398
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_080FB398:
|
|
.4byte _080FB3B0
|
|
.4byte _080FB3E8
|
|
.4byte _080FB404
|
|
.4byte _080FB450
|
|
.4byte _080FB474
|
|
.4byte _080FB492
|
|
_080FB3B0:
|
|
ldrh r0, [r4, 0x2]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x5A
|
|
beq _080FB3C0
|
|
b _080FB4D8
|
|
_080FB3C0:
|
|
movs r0, 0
|
|
bl SetCameraPanningCallback
|
|
movs r0, 0
|
|
strh r0, [r4, 0x2]
|
|
ldr r0, =sub_80FB0F8
|
|
movs r1, 0xA
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x4]
|
|
movs r0, 0x1
|
|
strh r0, [r4]
|
|
movs r0, 0x31
|
|
bl PlaySE
|
|
b _080FB4D8
|
|
.pool
|
|
_080FB3E8:
|
|
ldrh r0, [r4, 0x2]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x96
|
|
bne _080FB4D8
|
|
bl pal_fill_black
|
|
movs r0, 0
|
|
strh r0, [r4, 0x2]
|
|
movs r0, 0x2
|
|
strh r0, [r4]
|
|
b _080FB4D8
|
|
_080FB404:
|
|
ldrh r0, [r4, 0x2]
|
|
adds r3, r0, 0x1
|
|
strh r3, [r4, 0x2]
|
|
ldr r0, =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
cmp r2, 0
|
|
bne _080FB4D8
|
|
lsls r1, r3, 16
|
|
movs r0, 0x96
|
|
lsls r0, 17
|
|
cmp r1, r0
|
|
ble _080FB4D8
|
|
strh r2, [r4, 0x2]
|
|
ldrb r0, [r4, 0x4]
|
|
bl DestroyTask
|
|
ldr r0, =sub_80FB1AC
|
|
movs r1, 0xA
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x6]
|
|
movs r0, 0x3
|
|
strh r0, [r4]
|
|
movs r0, 0x32
|
|
bl PlaySE
|
|
b _080FB4D8
|
|
.pool
|
|
_080FB450:
|
|
ldr r2, =gTasks
|
|
movs r0, 0x6
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
ldrb r5, [r0, 0x4]
|
|
cmp r5, 0
|
|
bne _080FB4D8
|
|
bl InstallCameraPanAheadCallback
|
|
strh r5, [r4, 0x2]
|
|
movs r0, 0x4
|
|
strh r0, [r4]
|
|
b _080FB4D8
|
|
.pool
|
|
_080FB474:
|
|
ldrh r0, [r4, 0x2]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x5A
|
|
bne _080FB4D8
|
|
movs r0, 0x33
|
|
bl PlaySE
|
|
movs r0, 0
|
|
strh r0, [r4, 0x2]
|
|
movs r0, 0x5
|
|
strh r0, [r4]
|
|
b _080FB4D8
|
|
_080FB492:
|
|
ldrh r0, [r4, 0x2]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x78
|
|
bne _080FB4D8
|
|
movs r2, 0x82
|
|
lsls r2, 2
|
|
movs r0, 0xB
|
|
movs r1, 0x8
|
|
bl MapGridSetMetatileIdAt
|
|
movs r2, 0x84
|
|
lsls r2, 2
|
|
movs r0, 0xB
|
|
movs r1, 0x9
|
|
bl MapGridSetMetatileIdAt
|
|
movs r2, 0x86
|
|
lsls r2, 2
|
|
movs r0, 0xB
|
|
movs r1, 0xA
|
|
bl MapGridSetMetatileIdAt
|
|
bl DrawWholeMapView
|
|
movs r0, 0x34
|
|
bl PlaySE
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
bl script_env_2_disable
|
|
_080FB4D8:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80FB36C
|
|
|
|
thumb_func_start sub_80FB4E0
|
|
sub_80FB4E0: @ 80FB4E0
|
|
push {lr}
|
|
sub sp, 0x4
|
|
ldr r2, =0x0000020d
|
|
movs r0, 0xB
|
|
movs r1, 0x8
|
|
bl MapGridSetMetatileIdAt
|
|
ldr r2, =0x00000215
|
|
movs r0, 0xB
|
|
movs r1, 0x9
|
|
bl MapGridSetMetatileIdAt
|
|
ldr r2, =0x0000021d
|
|
movs r0, 0xB
|
|
movs r1, 0xA
|
|
bl MapGridSetMetatileIdAt
|
|
bl DrawWholeMapView
|
|
bl script_env_2_enable
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
ldr r1, =gPlttBufferFaded
|
|
ldr r2, =0x01000100
|
|
mov r0, sp
|
|
bl CpuFastSet
|
|
ldr r0, =sub_80FB36C
|
|
movs r1, 0xA
|
|
bl CreateTask
|
|
add sp, 0x4
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80FB4E0
|
|
|
|
thumb_func_start sub_80FB540
|
|
sub_80FB540: @ 80FB540
|
|
push {r4-r6,lr}
|
|
sub sp, 0x4
|
|
ldr r0, =sub_80FB36C
|
|
bl FuncIsActiveTask
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
cmp r6, 0
|
|
bne _080FB58A
|
|
ldr r4, =gSaveBlock1Ptr
|
|
ldr r0, [r4]
|
|
ldrb r1, [r0, 0x5]
|
|
ldrb r2, [r0, 0x4]
|
|
movs r0, 0x3
|
|
str r0, [sp]
|
|
movs r0, 0x1
|
|
movs r3, 0x3
|
|
bl sub_808E82C
|
|
ldr r0, [r4]
|
|
ldrb r1, [r0, 0x5]
|
|
ldrb r2, [r0, 0x4]
|
|
movs r5, 0x3
|
|
negs r5, r5
|
|
str r5, [sp]
|
|
movs r0, 0x2
|
|
movs r3, 0
|
|
bl sub_808E82C
|
|
ldr r0, [r4]
|
|
ldrb r1, [r0, 0x5]
|
|
ldrb r2, [r0, 0x4]
|
|
str r6, [sp]
|
|
movs r0, 0x3
|
|
adds r3, r5, 0
|
|
bl sub_808E82C
|
|
_080FB58A:
|
|
add sp, 0x4
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80FB540
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|