mirror of
https://github.com/pret/pokefirered.git
synced 2026-05-19 19:38:00 -05:00
483 lines
7.9 KiB
ArmAsm
483 lines
7.9 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_8150454
|
|
sub_8150454: @ 8150454
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0x8
|
|
bhi _0815046A
|
|
ldr r0, _08150470 @ =gUnknown_8471EDC
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldr r0, [r1]
|
|
bl _call_via_r0
|
|
_0815046A:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08150470: .4byte gUnknown_8471EDC
|
|
thumb_func_end sub_8150454
|
|
|
|
thumb_func_start sub_8150474
|
|
sub_8150474: @ 8150474
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
ldr r0, _08150488 @ =gUnknown_3005E88
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x2
|
|
beq _0815048C
|
|
movs r0, 0
|
|
b _08150494
|
|
.align 2, 0
|
|
_08150488: .4byte gUnknown_3005E88
|
|
_0815048C:
|
|
adds r0, r1, 0
|
|
bl sub_8112720
|
|
movs r0, 0x1
|
|
_08150494:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8150474
|
|
|
|
thumb_func_start sub_8150498
|
|
sub_8150498: @ 8150498
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_8150454
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8150498
|
|
|
|
thumb_func_start sub_81504A8
|
|
sub_81504A8: @ 81504A8
|
|
push {r4,lr}
|
|
ldr r0, _081504E0 @ =gPlayerAvatar
|
|
ldrb r0, [r0, 0x5]
|
|
lsls r4, r0, 3
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
ldr r0, _081504E4 @ =gMapObjects
|
|
adds r4, r0
|
|
movs r0, 0
|
|
bl sub_805C808
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl sub_81507BC
|
|
ldrb r1, [r4, 0x18]
|
|
lsrs r1, 4
|
|
adds r0, r4, 0
|
|
bl FieldObjectTurn
|
|
movs r0, 0x1
|
|
bl SetPlayerAvatarStateMask
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081504E0: .4byte gPlayerAvatar
|
|
_081504E4: .4byte gMapObjects
|
|
thumb_func_end sub_81504A8
|
|
|
|
thumb_func_start sub_81504E8
|
|
sub_81504E8: @ 81504E8
|
|
push {r4,lr}
|
|
ldr r0, _08150528 @ =gPlayerAvatar
|
|
ldrb r0, [r0, 0x5]
|
|
lsls r4, r0, 3
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
ldr r0, _0815052C @ =gMapObjects
|
|
adds r4, r0
|
|
movs r0, 0x1
|
|
bl sub_805C808
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl sub_81507BC
|
|
ldrb r1, [r4, 0x18]
|
|
lsrs r1, 4
|
|
adds r0, r4, 0
|
|
bl FieldObjectTurn
|
|
movs r0, 0x2
|
|
bl SetPlayerAvatarStateMask
|
|
movs r0, 0
|
|
movs r1, 0
|
|
bl sub_80BD620
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08150528: .4byte gPlayerAvatar
|
|
_0815052C: .4byte gMapObjects
|
|
thumb_func_end sub_81504E8
|
|
|
|
thumb_func_start sub_8150530
|
|
sub_8150530: @ 8150530
|
|
push {r4-r6,lr}
|
|
ldr r6, _0815057C @ =gPlayerAvatar
|
|
ldrb r1, [r6, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08150580 @ =gMapObjects
|
|
adds r4, r0, r1
|
|
ldrb r1, [r4, 0x4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08150584 @ =gSprites
|
|
adds r5, r0, r1
|
|
ldr r0, _08150588 @ =gUnknown_3005E88
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1
|
|
beq _08150558
|
|
cmp r0, 0x3
|
|
bne _08150594
|
|
_08150558:
|
|
bl ScriptContext2_Enable
|
|
movs r4, 0
|
|
movs r0, 0x1
|
|
strb r0, [r6, 0x6]
|
|
ldr r0, _0815058C @ =sub_81505C4
|
|
movs r1, 0xFF
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _08150590 @ =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
strh r4, [r1, 0x8]
|
|
b _081505BC
|
|
.align 2, 0
|
|
_0815057C: .4byte gPlayerAvatar
|
|
_08150580: .4byte gMapObjects
|
|
_08150584: .4byte gSprites
|
|
_08150588: .4byte gUnknown_3005E88
|
|
_0815058C: .4byte sub_81505C4
|
|
_08150590: .4byte gTasks
|
|
_08150594:
|
|
movs r0, 0x4
|
|
bl sub_805C808
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl sub_81507BC
|
|
ldrb r0, [r4, 0x18]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
bl sub_80634F0
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r5, 0
|
|
bl StartSpriteAnim
|
|
_081505BC:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8150530
|
|
|
|
thumb_func_start sub_81505C4
|
|
sub_81505C4: @ 81505C4
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
ldr r0, _0815060C @ =gPlayerAvatar
|
|
mov r9, r0
|
|
ldrb r1, [r0, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08150610 @ =gMapObjects
|
|
adds r5, r0, r1
|
|
ldrb r1, [r5, 0x4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08150614 @ =gSprites
|
|
adds r7, r0, r1
|
|
ldr r1, _08150618 @ =gTasks
|
|
mov r2, r8
|
|
lsls r0, r2, 2
|
|
add r0, r8
|
|
lsls r0, 3
|
|
adds r4, r0, r1
|
|
movs r0, 0x8
|
|
ldrsh r6, [r4, r0]
|
|
cmp r6, 0x1
|
|
beq _08150666
|
|
cmp r6, 0x1
|
|
bgt _0815061C
|
|
cmp r6, 0
|
|
beq _08150626
|
|
b _081506FC
|
|
.align 2, 0
|
|
_0815060C: .4byte gPlayerAvatar
|
|
_08150610: .4byte gMapObjects
|
|
_08150614: .4byte gSprites
|
|
_08150618: .4byte gTasks
|
|
_0815061C:
|
|
cmp r6, 0x2
|
|
beq _0815067C
|
|
cmp r6, 0x3
|
|
beq _0815069C
|
|
b _081506FC
|
|
_08150626:
|
|
adds r0, r5, 0
|
|
bl FieldObjectClearAnimIfSpecialAnimActive
|
|
ldrb r0, [r5, 0x1]
|
|
movs r1, 0x8
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x1]
|
|
movs r0, 0x4
|
|
bl sub_805C808
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r5, 0
|
|
bl sub_81507BC
|
|
ldrb r0, [r5, 0x18]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
bl sub_80634F0
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r7, 0
|
|
bl StartSpriteAnim
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
strh r6, [r4, 0xA]
|
|
b _081506FC
|
|
_08150666:
|
|
adds r0, r7, 0
|
|
bl sub_805D9C4
|
|
ldrh r1, [r4, 0xA]
|
|
movs r2, 0xA
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x3B
|
|
bgt _08150694
|
|
adds r0, r1, 0x1
|
|
strh r0, [r4, 0xA]
|
|
b _081506FC
|
|
_0815067C:
|
|
bl player_get_direction_lower_nybble
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_8063500
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r7, 0
|
|
bl StartSpriteAnim
|
|
_08150694:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _081506FC
|
|
_0815069C:
|
|
adds r0, r7, 0
|
|
bl sub_805D9C4
|
|
adds r0, r7, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _081506FC
|
|
mov r0, r9
|
|
ldrb r1, [r0]
|
|
movs r0, 0x8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _081506D0
|
|
movs r0, 0
|
|
bl sub_805C808
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r5, 0
|
|
bl sub_81507BC
|
|
b _081506E2
|
|
_081506D0:
|
|
movs r0, 0x2
|
|
bl sub_805C808
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r5, 0
|
|
bl sub_81507BC
|
|
_081506E2:
|
|
ldrb r1, [r5, 0x18]
|
|
lsrs r1, 4
|
|
adds r0, r5, 0
|
|
bl FieldObjectTurn
|
|
movs r0, 0
|
|
strh r0, [r7, 0x24]
|
|
strh r0, [r7, 0x26]
|
|
bl ScriptContext2_Disable
|
|
mov r0, r8
|
|
bl DestroyTask
|
|
_081506FC:
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_81505C4
|
|
|
|
thumb_func_start sub_8150708
|
|
sub_8150708: @ 8150708
|
|
push {r4,r5,lr}
|
|
ldr r5, _08150770 @ =gPlayerAvatar
|
|
ldrb r1, [r5, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08150774 @ =gMapObjects
|
|
adds r4, r0, r1
|
|
ldrb r1, [r5]
|
|
movs r0, 0x8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08150768
|
|
movs r0, 0x2
|
|
bl sub_805C808
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl sub_81507BC
|
|
ldrb r1, [r4, 0x18]
|
|
lsrs r1, 4
|
|
adds r0, r4, 0
|
|
bl FieldObjectTurn
|
|
movs r0, 0x8
|
|
bl SetPlayerAvatarStateMask
|
|
ldr r1, _08150778 @ =gUnknown_20386E0
|
|
movs r2, 0x10
|
|
ldrsh r0, [r4, r2]
|
|
str r0, [r1]
|
|
movs r2, 0x12
|
|
ldrsh r0, [r4, r2]
|
|
str r0, [r1, 0x4]
|
|
ldrb r0, [r5, 0x5]
|
|
str r0, [r1, 0x8]
|
|
movs r0, 0x8
|
|
bl FieldEffectStart
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strb r0, [r4, 0x1A]
|
|
movs r1, 0x1
|
|
bl sub_80DC44C
|
|
_08150768:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08150770: .4byte gPlayerAvatar
|
|
_08150774: .4byte gMapObjects
|
|
_08150778: .4byte gUnknown_20386E0
|
|
thumb_func_end sub_8150708
|
|
|
|
thumb_func_start sub_815077C
|
|
sub_815077C: @ 815077C
|
|
push {lr}
|
|
movs r0, 0x41
|
|
bl FieldEffectStart
|
|
ldr r0, _08150790 @ =sub_8150794
|
|
movs r1, 0
|
|
bl CreateTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08150790: .4byte sub_8150794
|
|
thumb_func_end sub_815077C
|
|
|
|
thumb_func_start sub_8150794
|
|
sub_8150794: @ 8150794
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
movs r0, 0x41
|
|
bl FieldEffectActiveListContains
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _081507B4
|
|
bl UnfreezeMapObjects
|
|
bl ScriptContext2_Disable
|
|
adds r0, r4, 0
|
|
bl DestroyTask
|
|
_081507B4:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8150794
|
|
|
|
thumb_func_start sub_81507BC
|
|
sub_81507BC: @ 81507BC
|
|
push {lr}
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
bl sub_805F060
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_81507BC
|
|
|
|
thumb_func_start sub_81507CC
|
|
sub_81507CC: @ 81507CC
|
|
push {lr}
|
|
movs r0, 0x1
|
|
bl sub_805D154
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_81507CC
|
|
|
|
thumb_func_start sub_81507D8
|
|
sub_81507D8: @ 81507D8
|
|
push {lr}
|
|
movs r0, 0x2
|
|
bl sub_805D154
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_81507D8
|
|
|
|
thumb_func_start sub_81507E4
|
|
sub_81507E4: @ 81507E4
|
|
push {lr}
|
|
movs r0, 0x3
|
|
bl sub_805D154
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_81507E4
|
|
|
|
thumb_func_start sub_81507F0
|
|
sub_81507F0: @ 81507F0
|
|
push {lr}
|
|
movs r0, 0x4
|
|
bl sub_805D154
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_81507F0
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|