mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-27 04:04:17 +01:00
2515 lines
39 KiB
ArmAsm
2515 lines
39 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_80F9BCC
|
|
sub_80F9BCC: @ 80F9BCC
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0
|
|
adds r3, r2, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
ldr r0, =sub_80F9C90
|
|
adds r1, r4, 0
|
|
adds r2, r5, 0
|
|
bl sub_80F9C44
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80F9BCC
|
|
|
|
thumb_func_start sub_80F9BF4
|
|
sub_80F9BF4: @ 80F9BF4
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0
|
|
adds r3, r2, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
ldr r0, =sub_80F9DFC
|
|
adds r1, r4, 0
|
|
adds r2, r5, 0
|
|
bl sub_80F9C44
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80F9BF4
|
|
|
|
thumb_func_start sub_80F9C1C
|
|
sub_80F9C1C: @ 80F9C1C
|
|
push {lr}
|
|
ldr r0, =sub_80F9C90
|
|
bl FuncIsActiveTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_80F9C1C
|
|
|
|
thumb_func_start sub_80F9C30
|
|
sub_80F9C30: @ 80F9C30
|
|
push {lr}
|
|
ldr r0, =sub_80F9DFC
|
|
bl FuncIsActiveTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_80F9C30
|
|
|
|
thumb_func_start sub_80F9C44
|
|
sub_80F9C44: @ 80F9C44
|
|
push {r4,r5,lr}
|
|
lsls r1, 16
|
|
lsrs r4, r1, 16
|
|
adds r5, r4, 0
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
adds r1, r3, 0
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r2, r0, 0
|
|
ldr r1, =gTasks
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
adds r1, r0, r1
|
|
movs r0, 0
|
|
strh r0, [r1, 0x8]
|
|
movs r0, 0x10
|
|
cmp r4, 0
|
|
beq _080F9C72
|
|
adds r0, r4, 0
|
|
_080F9C72:
|
|
strh r0, [r1, 0xA]
|
|
movs r0, 0x14
|
|
cmp r5, 0
|
|
beq _080F9C7C
|
|
adds r0, r5, 0
|
|
_080F9C7C:
|
|
strh r0, [r1, 0xC]
|
|
ldr r1, [r1]
|
|
adds r0, r2, 0
|
|
bl _call_via_r1
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80F9C44
|
|
|
|
thumb_func_start sub_80F9C90
|
|
sub_80F9C90: @ 80F9C90
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
beq _080F9D10
|
|
cmp r0, 0x1
|
|
bgt _080F9CB8
|
|
cmp r0, 0
|
|
beq _080F9CC2
|
|
b _080F9DDE
|
|
.pool
|
|
_080F9CB8:
|
|
cmp r0, 0x2
|
|
beq _080F9D32
|
|
cmp r0, 0x3
|
|
beq _080F9D94
|
|
b _080F9DDE
|
|
_080F9CC2:
|
|
movs r0, 0x78
|
|
strh r0, [r4, 0xE]
|
|
strh r0, [r4, 0x10]
|
|
movs r0, 0x50
|
|
strh r0, [r4, 0x12]
|
|
movs r0, 0x51
|
|
strh r0, [r4, 0x14]
|
|
movs r1, 0x80
|
|
lsls r1, 6
|
|
movs r0, 0
|
|
bl SetGpuRegBits
|
|
ldrh r1, [r4, 0xE]
|
|
lsls r1, 8
|
|
ldrh r0, [r4, 0x10]
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x40
|
|
bl SetGpuReg
|
|
ldrh r1, [r4, 0x12]
|
|
lsls r1, 8
|
|
ldrh r0, [r4, 0x14]
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x44
|
|
bl SetGpuReg
|
|
movs r0, 0x48
|
|
movs r1, 0x3F
|
|
bl SetGpuReg
|
|
movs r0, 0x4A
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
b _080F9DEE
|
|
_080F9D10:
|
|
movs r0, 0x50
|
|
bl GetGpuReg
|
|
strh r0, [r4, 0x16]
|
|
movs r0, 0x54
|
|
bl GetGpuReg
|
|
strh r0, [r4, 0x18]
|
|
movs r0, 0x50
|
|
movs r1, 0xBF
|
|
bl SetGpuReg
|
|
movs r0, 0x54
|
|
movs r1, 0x10
|
|
bl SetGpuReg
|
|
b _080F9DEE
|
|
_080F9D32:
|
|
ldrh r0, [r4, 0xE]
|
|
ldrh r1, [r4, 0xA]
|
|
subs r0, r1
|
|
movs r5, 0
|
|
strh r0, [r4, 0xE]
|
|
ldrh r2, [r4, 0x10]
|
|
adds r1, r2
|
|
strh r1, [r4, 0x10]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
ble _080F9D50
|
|
lsls r0, r1, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xEF
|
|
ble _080F9D76
|
|
_080F9D50:
|
|
strh r5, [r4, 0xE]
|
|
movs r0, 0xF0
|
|
strh r0, [r4, 0x10]
|
|
movs r0, 0x54
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
ldrh r1, [r4, 0x16]
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl BlendPalettes
|
|
ldr r0, =gPlttBufferFaded
|
|
strh r5, [r0]
|
|
_080F9D76:
|
|
ldrh r1, [r4, 0xE]
|
|
lsls r1, 8
|
|
ldrh r0, [r4, 0x10]
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x40
|
|
bl SetGpuReg
|
|
movs r1, 0xE
|
|
ldrsh r0, [r4, r1]
|
|
b _080F9DD8
|
|
.pool
|
|
_080F9D94:
|
|
ldrh r0, [r4, 0x12]
|
|
ldrh r1, [r4, 0xC]
|
|
subs r0, r1
|
|
strh r0, [r4, 0x12]
|
|
ldrh r2, [r4, 0x14]
|
|
adds r1, r2
|
|
strh r1, [r4, 0x14]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
ble _080F9DB0
|
|
lsls r0, r1, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x9F
|
|
ble _080F9DC2
|
|
_080F9DB0:
|
|
movs r0, 0
|
|
strh r0, [r4, 0x12]
|
|
movs r0, 0xA0
|
|
strh r0, [r4, 0x14]
|
|
movs r1, 0x80
|
|
lsls r1, 6
|
|
movs r0, 0
|
|
bl ClearGpuRegBits
|
|
_080F9DC2:
|
|
ldrh r1, [r4, 0x12]
|
|
lsls r1, 8
|
|
ldrh r0, [r4, 0x14]
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x44
|
|
bl SetGpuReg
|
|
movs r1, 0x12
|
|
ldrsh r0, [r4, r1]
|
|
_080F9DD8:
|
|
cmp r0, 0
|
|
bne _080F9DF4
|
|
b _080F9DEE
|
|
_080F9DDE:
|
|
ldrh r1, [r4, 0x16]
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
b _080F9DF4
|
|
_080F9DEE:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_080F9DF4:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80F9C90
|
|
|
|
thumb_func_start sub_80F9DFC
|
|
sub_80F9DFC: @ 80F9DFC
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, =gTasks
|
|
adds r4, r0, r1
|
|
movs r0, 0x8
|
|
ldrsh r1, [r4, r0]
|
|
cmp r1, 0x1
|
|
beq _080F9E38
|
|
cmp r1, 0x1
|
|
bgt _080F9E24
|
|
cmp r1, 0
|
|
beq _080F9E2E
|
|
b _080F9F2C
|
|
.pool
|
|
_080F9E24:
|
|
cmp r1, 0x2
|
|
beq _080F9E86
|
|
cmp r1, 0x3
|
|
beq _080F9ED8
|
|
b _080F9F2C
|
|
_080F9E2E:
|
|
ldr r0, =gPlttBufferFaded
|
|
strh r1, [r0]
|
|
b _080F9F4E
|
|
.pool
|
|
_080F9E38:
|
|
movs r1, 0
|
|
strh r1, [r4, 0xE]
|
|
movs r0, 0xF0
|
|
strh r0, [r4, 0x10]
|
|
strh r1, [r4, 0x12]
|
|
movs r0, 0xA0
|
|
strh r0, [r4, 0x14]
|
|
movs r1, 0x80
|
|
lsls r1, 6
|
|
movs r0, 0
|
|
bl SetGpuRegBits
|
|
ldrh r1, [r4, 0xE]
|
|
lsls r1, 8
|
|
ldrh r0, [r4, 0x10]
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x40
|
|
bl SetGpuReg
|
|
ldrh r1, [r4, 0x12]
|
|
lsls r1, 8
|
|
ldrh r0, [r4, 0x14]
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x44
|
|
bl SetGpuReg
|
|
movs r0, 0x48
|
|
movs r1, 0x3F
|
|
bl SetGpuReg
|
|
movs r0, 0x4A
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
b _080F9F4E
|
|
_080F9E86:
|
|
ldrh r0, [r4, 0xC]
|
|
ldrh r2, [r4, 0x12]
|
|
adds r1, r0, r2
|
|
strh r1, [r4, 0x12]
|
|
ldrh r2, [r4, 0x14]
|
|
subs r0, r2, r0
|
|
strh r0, [r4, 0x14]
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
cmp r1, 0x4F
|
|
bgt _080F9EA4
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x51
|
|
bgt _080F9EBC
|
|
_080F9EA4:
|
|
movs r0, 0x50
|
|
strh r0, [r4, 0x12]
|
|
movs r0, 0x51
|
|
strh r0, [r4, 0x14]
|
|
movs r0, 0x50
|
|
movs r1, 0xBF
|
|
bl SetGpuReg
|
|
movs r0, 0x54
|
|
movs r1, 0x10
|
|
bl SetGpuReg
|
|
_080F9EBC:
|
|
ldrh r1, [r4, 0x12]
|
|
lsls r1, 8
|
|
ldrh r0, [r4, 0x14]
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x44
|
|
bl SetGpuReg
|
|
movs r1, 0x12
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x50
|
|
bne _080F9F54
|
|
b _080F9F4E
|
|
_080F9ED8:
|
|
ldrh r0, [r4, 0xA]
|
|
ldrh r2, [r4, 0xE]
|
|
adds r1, r0, r2
|
|
strh r1, [r4, 0xE]
|
|
ldrh r2, [r4, 0x10]
|
|
subs r0, r2, r0
|
|
strh r0, [r4, 0x10]
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
cmp r1, 0x77
|
|
bgt _080F9EF6
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x78
|
|
bgt _080F9F0C
|
|
_080F9EF6:
|
|
movs r0, 0x78
|
|
strh r0, [r4, 0xE]
|
|
strh r0, [r4, 0x10]
|
|
subs r0, 0x79
|
|
movs r1, 0x10
|
|
movs r2, 0
|
|
bl BlendPalettes
|
|
ldr r1, =gPlttBufferFaded
|
|
movs r0, 0
|
|
strh r0, [r1]
|
|
_080F9F0C:
|
|
ldrh r1, [r4, 0xE]
|
|
lsls r1, 8
|
|
ldrh r0, [r4, 0x10]
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x40
|
|
bl SetGpuReg
|
|
movs r1, 0xE
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x78
|
|
bne _080F9F54
|
|
b _080F9F4E
|
|
.pool
|
|
_080F9F2C:
|
|
movs r1, 0x80
|
|
lsls r1, 6
|
|
movs r0, 0
|
|
bl ClearGpuRegBits
|
|
movs r0, 0x54
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
b _080F9F54
|
|
_080F9F4E:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_080F9F54:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80F9DFC
|
|
|
|
thumb_func_start sub_80F9F5C
|
|
sub_80F9F5C: @ 80F9F5C
|
|
push {lr}
|
|
ldr r0, =gPlayerFacingPosition
|
|
ldr r1, =gMapHeader
|
|
ldr r1, [r1, 0x4]
|
|
bl sub_80E9608
|
|
bl sub_80E8B6C
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80F9F5C
|
|
|
|
thumb_func_start sub_80F9F78
|
|
sub_80F9F78: @ 80F9F78
|
|
push {lr}
|
|
ldr r0, =gPlayerAvatar
|
|
ldrb r1, [r0]
|
|
movs r0, 0x6
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080F9FC0
|
|
ldr r1, =gFieldEffectArguments
|
|
ldr r0, [r1, 0x4]
|
|
cmp r0, 0x2
|
|
beq _080F9FAE
|
|
cmp r0, 0x2
|
|
bgt _080F9FA0
|
|
cmp r0, 0x1
|
|
beq _080F9FA6
|
|
b _080F9FFE
|
|
.pool
|
|
_080F9FA0:
|
|
cmp r0, 0x3
|
|
beq _080F9FB6
|
|
b _080F9FDC
|
|
_080F9FA6:
|
|
movs r0, 0x10
|
|
str r0, [r1, 0x14]
|
|
movs r0, 0x28
|
|
b _080F9FFC
|
|
_080F9FAE:
|
|
movs r0, 0x10
|
|
str r0, [r1, 0x14]
|
|
movs r0, 0x8
|
|
b _080F9FFC
|
|
_080F9FB6:
|
|
movs r0, 0x8
|
|
negs r0, r0
|
|
str r0, [r1, 0x14]
|
|
movs r0, 0x18
|
|
b _080F9FFC
|
|
_080F9FC0:
|
|
ldr r1, =gFieldEffectArguments
|
|
ldr r0, [r1, 0x4]
|
|
cmp r0, 0x2
|
|
beq _080F9FEA
|
|
cmp r0, 0x2
|
|
bgt _080F9FD8
|
|
cmp r0, 0x1
|
|
beq _080F9FE2
|
|
b _080F9FFE
|
|
.pool
|
|
_080F9FD8:
|
|
cmp r0, 0x3
|
|
beq _080F9FEE
|
|
_080F9FDC:
|
|
cmp r0, 0x4
|
|
beq _080F9FF8
|
|
b _080F9FFE
|
|
_080F9FE2:
|
|
movs r0, 0x8
|
|
str r0, [r1, 0x14]
|
|
movs r0, 0x28
|
|
b _080F9FFC
|
|
_080F9FEA:
|
|
movs r0, 0x8
|
|
b _080F9FFA
|
|
_080F9FEE:
|
|
movs r0, 0x8
|
|
negs r0, r0
|
|
str r0, [r1, 0x14]
|
|
movs r0, 0x18
|
|
b _080F9FFC
|
|
_080F9FF8:
|
|
movs r0, 0x18
|
|
_080F9FFA:
|
|
str r0, [r1, 0x14]
|
|
_080F9FFC:
|
|
str r0, [r1, 0x18]
|
|
_080F9FFE:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80F9F78
|
|
|
|
thumb_func_start sub_80FA004
|
|
sub_80FA004: @ 80FA004
|
|
push {r4,lr}
|
|
bl sub_80E8BC8
|
|
ldr r0, =gSpecialVar_Result
|
|
ldrh r0, [r0]
|
|
cmp r0, 0x1
|
|
beq _080FA0AE
|
|
bl GetPlayerFacingDirection
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x2
|
|
bne _080FA0AE
|
|
ldr r4, =gPlayerFacingPosition
|
|
adds r1, r4, 0x2
|
|
adds r0, r4, 0
|
|
bl GetXYCoordsOneStepInFrontOfPlayer
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x2
|
|
ldrsh r1, [r4, r2]
|
|
bl MapGridGetMetatileBehaviorAt
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r0, r4, 0
|
|
bl MetatileBehavior_IsSecretBaseCave
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080FA070
|
|
bl sub_80F9F5C
|
|
ldr r1, =gFieldCallback2
|
|
ldr r0, =FieldCallback_PrepareFadeInFromMenu
|
|
str r0, [r1]
|
|
ldr r1, =gPostMenuFieldCallback
|
|
ldr r0, =sub_80FA0DC
|
|
b _080FA0C0
|
|
.pool
|
|
_080FA070:
|
|
adds r0, r4, 0
|
|
bl MetatileBehavior_IsSecretBaseTree
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080FA0A0
|
|
bl sub_80F9F5C
|
|
ldr r1, =gFieldCallback2
|
|
ldr r0, =FieldCallback_PrepareFadeInFromMenu
|
|
str r0, [r1]
|
|
ldr r1, =gPostMenuFieldCallback
|
|
ldr r0, =sub_80FA1E8
|
|
b _080FA0C0
|
|
.pool
|
|
_080FA0A0:
|
|
adds r0, r4, 0
|
|
bl MetatileBehavior_IsSecretBaseShrub
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _080FA0B2
|
|
_080FA0AE:
|
|
movs r0, 0
|
|
b _080FA0C4
|
|
_080FA0B2:
|
|
bl sub_80F9F5C
|
|
ldr r1, =gFieldCallback2
|
|
ldr r0, =FieldCallback_PrepareFadeInFromMenu
|
|
str r0, [r1]
|
|
ldr r1, =gPostMenuFieldCallback
|
|
ldr r0, =sub_80FA34C
|
|
_080FA0C0:
|
|
str r0, [r1]
|
|
movs r0, 0x1
|
|
_080FA0C4:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_80FA004
|
|
|
|
thumb_func_start sub_80FA0DC
|
|
sub_80FA0DC: @ 80FA0DC
|
|
push {lr}
|
|
bl GetCursorSelectionMonId
|
|
ldr r1, =gFieldEffectArguments
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [r1]
|
|
ldr r0, =EventScript_275A86
|
|
bl ScriptContext1_SetupScript
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80FA0DC
|
|
|
|
thumb_func_start oei_sweet_scent
|
|
oei_sweet_scent: @ 80FA0FC
|
|
push {lr}
|
|
bl oei_task_add
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
ldr r2, =sub_80FA128
|
|
lsrs r0, r2, 16
|
|
strh r0, [r1, 0x18]
|
|
strh r2, [r1, 0x1A]
|
|
movs r0, 0
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end oei_sweet_scent
|
|
|
|
thumb_func_start sub_80FA128
|
|
sub_80FA128: @ 80FA128
|
|
push {lr}
|
|
movs r0, 0xB
|
|
bl FieldEffectActiveListRemove
|
|
movs r0, 0x37
|
|
bl FieldEffectStart
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80FA128
|
|
|
|
thumb_func_start sub_80FA13C
|
|
sub_80FA13C: @ 80FA13C
|
|
push {r4,lr}
|
|
bl sub_80F9F78
|
|
ldr r0, =gUnknown_0858E600
|
|
ldr r3, =gSprites
|
|
ldr r1, =gPlayerAvatar
|
|
ldrb r1, [r1, 0x4]
|
|
lsls r2, r1, 4
|
|
adds r2, r1
|
|
lsls r2, 2
|
|
adds r2, r3
|
|
ldrh r1, [r2, 0x2]
|
|
lsls r1, 23
|
|
lsrs r1, 23
|
|
ldr r4, =gFieldEffectArguments
|
|
ldr r3, [r4, 0x14]
|
|
adds r1, r3
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
ldrb r2, [r2]
|
|
ldr r3, [r4, 0x18]
|
|
adds r2, r3
|
|
lsls r2, 16
|
|
asrs r2, 16
|
|
movs r3, 0x94
|
|
bl CreateSprite
|
|
movs r0, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_80FA13C
|
|
|
|
thumb_func_start sub_80FA18C
|
|
sub_80FA18C: @ 80FA18C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x83
|
|
bl PlaySE
|
|
movs r0, 0
|
|
strh r0, [r4, 0x2E]
|
|
ldr r0, =sub_80FA1A8
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80FA18C
|
|
|
|
thumb_func_start sub_80FA1A8
|
|
sub_80FA1A8: @ 80FA1A8
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
ldrh r2, [r1, 0x2E]
|
|
movs r3, 0x2E
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0x27
|
|
bgt _080FA1C8
|
|
adds r0, r2, 0x1
|
|
strh r0, [r1, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x14
|
|
bne _080FA1D0
|
|
bl sub_80E8D4C
|
|
b _080FA1D0
|
|
_080FA1C8:
|
|
movs r0, 0
|
|
strh r0, [r1, 0x2E]
|
|
ldr r0, =sub_80FA1D8
|
|
str r0, [r1, 0x1C]
|
|
_080FA1D0:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80FA1A8
|
|
|
|
thumb_func_start sub_80FA1D8
|
|
sub_80FA1D8: @ 80FA1D8
|
|
push {lr}
|
|
movs r1, 0x37
|
|
bl FieldEffectStop
|
|
bl EnableBothScriptContexts
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80FA1D8
|
|
|
|
thumb_func_start sub_80FA1E8
|
|
sub_80FA1E8: @ 80FA1E8
|
|
push {lr}
|
|
bl GetCursorSelectionMonId
|
|
ldr r1, =gFieldEffectArguments
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [r1]
|
|
ldr r0, =EventScript_275ADF
|
|
bl ScriptContext1_SetupScript
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80FA1E8
|
|
|
|
thumb_func_start sub_80FA208
|
|
sub_80FA208: @ 80FA208
|
|
push {lr}
|
|
bl oei_task_add
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
ldr r2, =sub_80FA234
|
|
lsrs r0, r2, 16
|
|
strh r0, [r1, 0x18]
|
|
strh r2, [r1, 0x1A]
|
|
movs r0, 0
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_80FA208
|
|
|
|
thumb_func_start sub_80FA234
|
|
sub_80FA234: @ 80FA234
|
|
push {lr}
|
|
movs r0, 0x1A
|
|
bl FieldEffectActiveListRemove
|
|
movs r0, 0x38
|
|
bl FieldEffectStart
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80FA234
|
|
|
|
thumb_func_start sub_80FA248
|
|
sub_80FA248: @ 80FA248
|
|
push {r4,lr}
|
|
ldr r1, =gPlayerFacingPosition
|
|
movs r2, 0
|
|
ldrsh r0, [r1, r2]
|
|
movs r2, 0x2
|
|
ldrsh r1, [r1, r2]
|
|
bl MapGridGetMetatileBehaviorAt
|
|
adds r2, r0, 0
|
|
ldr r1, =0x00000fff
|
|
adds r0, r1, 0
|
|
ands r2, r0
|
|
cmp r2, 0x96
|
|
bne _080FA26A
|
|
ldr r1, =gFieldEffectArguments
|
|
movs r0, 0
|
|
str r0, [r1, 0x1C]
|
|
_080FA26A:
|
|
cmp r2, 0x9C
|
|
bne _080FA274
|
|
ldr r1, =gFieldEffectArguments
|
|
movs r0, 0x2
|
|
str r0, [r1, 0x1C]
|
|
_080FA274:
|
|
bl sub_80F9F78
|
|
ldr r0, =gUnknown_0858E618
|
|
ldr r3, =gSprites
|
|
ldr r1, =gPlayerAvatar
|
|
ldrb r1, [r1, 0x4]
|
|
lsls r2, r1, 4
|
|
adds r2, r1
|
|
lsls r2, 2
|
|
adds r2, r3
|
|
ldrh r1, [r2, 0x2]
|
|
lsls r1, 23
|
|
lsrs r1, 23
|
|
ldr r4, =gFieldEffectArguments
|
|
ldr r3, [r4, 0x14]
|
|
adds r1, r3
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
ldrb r2, [r2]
|
|
ldr r3, [r4, 0x18]
|
|
adds r2, r3
|
|
lsls r2, 16
|
|
asrs r2, 16
|
|
movs r3, 0x94
|
|
bl CreateSprite
|
|
ldr r0, [r4, 0x1C]
|
|
cmp r0, 0x1
|
|
beq _080FA2B2
|
|
cmp r0, 0x3
|
|
bne _080FA2B6
|
|
_080FA2B2:
|
|
bl sub_80E8D4C
|
|
_080FA2B6:
|
|
movs r0, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_80FA248
|
|
|
|
thumb_func_start sub_80FA2D8
|
|
sub_80FA2D8: @ 80FA2D8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x9B
|
|
bl PlaySE
|
|
ldr r0, =gFieldEffectArguments
|
|
ldr r1, [r0, 0x1C]
|
|
adds r2, r4, 0
|
|
adds r2, 0x2A
|
|
movs r0, 0
|
|
strb r1, [r2]
|
|
strh r0, [r4, 0x2E]
|
|
ldr r0, =sub_80FA304
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80FA2D8
|
|
|
|
thumb_func_start sub_80FA304
|
|
sub_80FA304: @ 80FA304
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x27
|
|
ble _080FA32E
|
|
ldr r0, =gFieldEffectArguments
|
|
ldr r0, [r0, 0x1C]
|
|
cmp r0, 0
|
|
beq _080FA322
|
|
cmp r0, 0x2
|
|
bne _080FA326
|
|
_080FA322:
|
|
bl sub_80E8D4C
|
|
_080FA326:
|
|
movs r0, 0
|
|
strh r0, [r4, 0x2E]
|
|
ldr r0, =sub_80FA33C
|
|
str r0, [r4, 0x1C]
|
|
_080FA32E:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80FA304
|
|
|
|
thumb_func_start sub_80FA33C
|
|
sub_80FA33C: @ 80FA33C
|
|
push {lr}
|
|
movs r1, 0x38
|
|
bl FieldEffectStop
|
|
bl EnableBothScriptContexts
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80FA33C
|
|
|
|
thumb_func_start sub_80FA34C
|
|
sub_80FA34C: @ 80FA34C
|
|
push {lr}
|
|
bl GetCursorSelectionMonId
|
|
ldr r1, =gFieldEffectArguments
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [r1]
|
|
ldr r0, =EventScript_275B38
|
|
bl ScriptContext1_SetupScript
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80FA34C
|
|
|
|
thumb_func_start sub_80FA36C
|
|
sub_80FA36C: @ 80FA36C
|
|
push {lr}
|
|
bl oei_task_add
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
ldr r2, =sub_80FA398
|
|
lsrs r0, r2, 16
|
|
strh r0, [r1, 0x18]
|
|
strh r2, [r1, 0x1A]
|
|
movs r0, 0
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_80FA36C
|
|
|
|
thumb_func_start sub_80FA398
|
|
sub_80FA398: @ 80FA398
|
|
push {lr}
|
|
movs r0, 0x1B
|
|
bl FieldEffectActiveListRemove
|
|
movs r0, 0x39
|
|
bl FieldEffectStart
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80FA398
|
|
|
|
thumb_func_start sub_80FA3AC
|
|
sub_80FA3AC: @ 80FA3AC
|
|
push {r4,lr}
|
|
bl sub_80F9F78
|
|
ldr r0, =gUnknown_0858E630
|
|
ldr r3, =gSprites
|
|
ldr r1, =gPlayerAvatar
|
|
ldrb r1, [r1, 0x4]
|
|
lsls r2, r1, 4
|
|
adds r2, r1
|
|
lsls r2, 2
|
|
adds r2, r3
|
|
ldrh r1, [r2, 0x2]
|
|
lsls r1, 23
|
|
lsrs r1, 23
|
|
ldr r4, =gFieldEffectArguments
|
|
ldr r3, [r4, 0x14]
|
|
adds r1, r3
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
ldrb r2, [r2]
|
|
ldr r3, [r4, 0x18]
|
|
adds r2, r3
|
|
lsls r2, 16
|
|
asrs r2, 16
|
|
movs r3, 0x94
|
|
bl CreateSprite
|
|
movs r0, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_80FA3AC
|
|
|
|
thumb_func_start sub_80FA3FC
|
|
sub_80FA3FC: @ 80FA3FC
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0xA9
|
|
bl PlaySE
|
|
movs r0, 0
|
|
strh r0, [r4, 0x2E]
|
|
ldr r0, =sub_80FA418
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80FA3FC
|
|
|
|
thumb_func_start sub_80FA418
|
|
sub_80FA418: @ 80FA418
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
ldrh r2, [r1, 0x2E]
|
|
movs r3, 0x2E
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0x27
|
|
bgt _080FA438
|
|
adds r0, r2, 0x1
|
|
strh r0, [r1, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x14
|
|
bne _080FA440
|
|
bl sub_80E8D4C
|
|
b _080FA440
|
|
_080FA438:
|
|
movs r0, 0
|
|
strh r0, [r1, 0x2E]
|
|
ldr r0, =sub_80FA448
|
|
str r0, [r1, 0x1C]
|
|
_080FA440:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80FA418
|
|
|
|
thumb_func_start sub_80FA448
|
|
sub_80FA448: @ 80FA448
|
|
push {lr}
|
|
movs r1, 0x39
|
|
bl FieldEffectStop
|
|
bl EnableBothScriptContexts
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80FA448
|
|
|
|
thumb_func_start sub_80FA458
|
|
sub_80FA458: @ 80FA458
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
mov r4, sp
|
|
adds r4, 0x2
|
|
mov r0, sp
|
|
adds r1, r4, 0
|
|
bl GetXYCoordsOneStepInFrontOfPlayer
|
|
ldr r0, =sub_80FA4A0
|
|
movs r1, 0
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
mov r0, sp
|
|
ldrh r0, [r0]
|
|
movs r2, 0
|
|
strh r0, [r1, 0x8]
|
|
ldrh r0, [r4]
|
|
strh r0, [r1, 0xA]
|
|
strh r2, [r1, 0xC]
|
|
movs r0, 0
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_80FA458
|
|
|
|
thumb_func_start sub_80FA4A0
|
|
sub_80FA4A0: @ 80FA4A0
|
|
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
|
|
ldrh r0, [r4, 0x4]
|
|
subs r0, 0x4
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x10
|
|
bhi _080FA56E
|
|
lsls r0, 2
|
|
ldr r1, =_080FA4D0
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_080FA4D0:
|
|
.4byte _080FA514
|
|
.4byte _080FA56E
|
|
.4byte _080FA56E
|
|
.4byte _080FA56E
|
|
.4byte _080FA522
|
|
.4byte _080FA56E
|
|
.4byte _080FA56E
|
|
.4byte _080FA56E
|
|
.4byte _080FA514
|
|
.4byte _080FA56E
|
|
.4byte _080FA56E
|
|
.4byte _080FA56E
|
|
.4byte _080FA522
|
|
.4byte _080FA56E
|
|
.4byte _080FA56E
|
|
.4byte _080FA56E
|
|
.4byte _080FA540
|
|
_080FA514:
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x2
|
|
ldrsh r1, [r4, r2]
|
|
movs r2, 0x89
|
|
lsls r2, 2
|
|
b _080FA52E
|
|
_080FA522:
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x2
|
|
ldrsh r1, [r4, r2]
|
|
movs r2, 0x88
|
|
lsls r2, 2
|
|
_080FA52E:
|
|
bl MapGridSetMetatileIdAt
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x2
|
|
ldrsh r1, [r4, r2]
|
|
bl CurrentMapDrawMetatileAt
|
|
b _080FA56E
|
|
_080FA540:
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x2
|
|
ldrsh r1, [r4, r2]
|
|
movs r2, 0x89
|
|
lsls r2, 2
|
|
bl MapGridSetMetatileIdAt
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x2
|
|
ldrsh r1, [r4, r2]
|
|
bl CurrentMapDrawMetatileAt
|
|
movs r0, 0x3D
|
|
bl FieldEffectActiveListRemove
|
|
bl EnableBothScriptContexts
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
b _080FA574
|
|
_080FA56E:
|
|
ldrh r0, [r4, 0x4]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x4]
|
|
_080FA574:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80FA4A0
|
|
|
|
thumb_func_start sub_80FA57C
|
|
sub_80FA57C: @ 80FA57C
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
mov r4, sp
|
|
adds r4, 0x2
|
|
mov r0, sp
|
|
adds r1, r4, 0
|
|
bl GetXYCoordsOneStepInFrontOfPlayer
|
|
movs r0, 0x3
|
|
bl PlaySE
|
|
ldr r0, =0x00004054
|
|
bl VarGet
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080FA5B8
|
|
mov r0, sp
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
movs r2, 0
|
|
ldrsh r1, [r4, r2]
|
|
movs r2, 0xE2
|
|
lsls r2, 4
|
|
bl MapGridSetMetatileIdAt
|
|
b _080FA5C8
|
|
.pool
|
|
_080FA5B8:
|
|
mov r0, sp
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
movs r2, 0
|
|
ldrsh r1, [r4, r2]
|
|
ldr r2, =0x00000e21
|
|
bl MapGridSetMetatileIdAt
|
|
_080FA5C8:
|
|
mov r0, sp
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
movs r2, 0
|
|
ldrsh r1, [r4, r2]
|
|
bl CurrentMapDrawMetatileAt
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80FA57C
|
|
|
|
thumb_func_start sub_80FA5E4
|
|
sub_80FA5E4: @ 80FA5E4
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0
|
|
adds r6, r2, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
lsls r6, 16
|
|
lsrs r6, 16
|
|
ldr r0, =sub_80FA62C
|
|
movs r1, 0
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
movs r0, 0
|
|
strh r4, [r1, 0x8]
|
|
strh r5, [r1, 0xA]
|
|
strh r6, [r1, 0xC]
|
|
strh r0, [r1, 0xE]
|
|
movs r0, 0x1
|
|
strh r0, [r1, 0x10]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80FA5E4
|
|
|
|
thumb_func_start sub_80FA62C
|
|
sub_80FA62C: @ 80FA62C
|
|
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
|
|
ldrh r1, [r4, 0x6]
|
|
movs r2, 0x6
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x6
|
|
bne _080FA650
|
|
movs r0, 0
|
|
b _080FA652
|
|
.pool
|
|
_080FA650:
|
|
adds r0, r1, 0x1
|
|
_080FA652:
|
|
strh r0, [r4, 0x6]
|
|
movs r3, 0x6
|
|
ldrsh r0, [r4, r3]
|
|
cmp r0, 0
|
|
bne _080FA6A4
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x2
|
|
bne _080FA66C
|
|
movs r2, 0
|
|
ldrsh r0, [r4, r2]
|
|
bl sub_80FA6AC
|
|
_080FA66C:
|
|
movs r3, 0x2
|
|
ldrsh r0, [r4, r3]
|
|
movs r2, 0x4
|
|
ldrsh r1, [r4, r2]
|
|
ldrh r2, [r4, 0x8]
|
|
ldrh r3, [r4]
|
|
adds r2, r3
|
|
lsls r2, 16
|
|
lsrs r2, 16
|
|
bl MapGridSetMetatileIdAt
|
|
movs r1, 0x2
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x4
|
|
ldrsh r1, [r4, r2]
|
|
bl CurrentMapDrawMetatileAt
|
|
ldrh r1, [r4, 0x8]
|
|
movs r3, 0x8
|
|
ldrsh r0, [r4, r3]
|
|
cmp r0, 0x3
|
|
bne _080FA6A0
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
b _080FA6A4
|
|
_080FA6A0:
|
|
adds r0, r1, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_080FA6A4:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80FA62C
|
|
|
|
thumb_func_start sub_80FA6AC
|
|
sub_80FA6AC: @ 80FA6AC
|
|
push {lr}
|
|
lsls r0, 16
|
|
asrs r1, r0, 16
|
|
movs r0, 0xCE
|
|
lsls r0, 2
|
|
cmp r1, r0
|
|
beq _080FA6D8
|
|
cmp r1, r0
|
|
bgt _080FA6C8
|
|
movs r0, 0x8A
|
|
lsls r0, 2
|
|
cmp r1, r0
|
|
beq _080FA6F0
|
|
b _080FA6F6
|
|
_080FA6C8:
|
|
movs r0, 0xCF
|
|
lsls r0, 2
|
|
cmp r1, r0
|
|
beq _080FA6E0
|
|
adds r0, 0x4
|
|
cmp r1, r0
|
|
beq _080FA6E8
|
|
b _080FA6F6
|
|
_080FA6D8:
|
|
movs r0, 0x4A
|
|
bl PlaySE
|
|
b _080FA6F6
|
|
_080FA6E0:
|
|
movs r0, 0x4B
|
|
bl PlaySE
|
|
b _080FA6F6
|
|
_080FA6E8:
|
|
movs r0, 0x4C
|
|
bl PlaySE
|
|
b _080FA6F6
|
|
_080FA6F0:
|
|
movs r0, 0x4E
|
|
bl PlaySE
|
|
_080FA6F6:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80FA6AC
|
|
|
|
thumb_func_start sub_80FA6FC
|
|
sub_80FA6FC: @ 80FA6FC
|
|
movs r0, 0
|
|
bx lr
|
|
thumb_func_end sub_80FA6FC
|
|
|
|
thumb_func_start sub_80FA700
|
|
sub_80FA700: @ 80FA700
|
|
movs r0, 0
|
|
bx lr
|
|
thumb_func_end sub_80FA700
|
|
|
|
thumb_func_start sub_80FA704
|
|
sub_80FA704: @ 80FA704
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
adds r4, r1, 0
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
movs r0, 0x4D
|
|
bl PlaySE
|
|
lsls r5, 16
|
|
asrs r5, 16
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
ldr r2, =0x00000276
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl MapGridSetMetatileIdAt
|
|
subs r6, r4, 0x1
|
|
ldr r2, =0x0000026e
|
|
adds r0, r5, 0
|
|
adds r1, r6, 0
|
|
bl MapGridSetMetatileIdAt
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl CurrentMapDrawMetatileAt
|
|
adds r0, r5, 0
|
|
adds r1, r6, 0
|
|
bl CurrentMapDrawMetatileAt
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80FA704
|
|
|
|
thumb_func_start sub_80FA754
|
|
sub_80FA754: @ 80FA754
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r1, =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r1, r0, r1
|
|
ldrh r2, [r1, 0x8]
|
|
movs r3, 0x8
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0x7
|
|
bne _080FA788
|
|
movs r2, 0xA
|
|
ldrsh r0, [r1, r2]
|
|
movs r3, 0xC
|
|
ldrsh r1, [r1, r3]
|
|
bl sub_80FA704
|
|
adds r0, r4, 0
|
|
bl DestroyTask
|
|
b _080FA78C
|
|
.pool
|
|
_080FA788:
|
|
adds r0, r2, 0x1
|
|
strh r0, [r1, 0x8]
|
|
_080FA78C:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80FA754
|
|
|
|
thumb_func_start sub_80FA794
|
|
sub_80FA794: @ 80FA794
|
|
push {r4-r7,lr}
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
adds r7, r5, 0
|
|
lsls r1, 16
|
|
lsrs r4, r1, 16
|
|
adds r6, r4, 0
|
|
bl GetPlayerFacingDirection
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080FA7BC
|
|
lsls r0, r5, 16
|
|
asrs r0, 16
|
|
lsls r1, r4, 16
|
|
asrs r1, 16
|
|
bl sub_80FA704
|
|
b _080FA7DE
|
|
_080FA7BC:
|
|
cmp r0, 0x2
|
|
bne _080FA7DE
|
|
ldr r0, =sub_80FA754
|
|
movs r1, 0x5
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
movs r0, 0
|
|
strh r0, [r1, 0x8]
|
|
strh r7, [r1, 0xA]
|
|
strh r6, [r1, 0xC]
|
|
_080FA7DE:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80FA794
|
|
|
|
thumb_func_start sub_80FA7EC
|
|
sub_80FA7EC: @ 80FA7EC
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r1, =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r1, r0, r1
|
|
ldrh r2, [r1, 0xA]
|
|
movs r3, 0xA
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0x7
|
|
beq _080FA808
|
|
b _080FA966
|
|
_080FA808:
|
|
ldr r2, =0xfffffd88
|
|
adds r0, r2, 0
|
|
ldrh r1, [r1, 0x8]
|
|
adds r0, r1
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x3B
|
|
bls _080FA81A
|
|
b _080FA95E
|
|
_080FA81A:
|
|
lsls r0, 2
|
|
ldr r1, =_080FA830
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_080FA830:
|
|
.4byte _080FA920
|
|
.4byte _080FA928
|
|
.4byte _080FA930
|
|
.4byte _080FA938
|
|
.4byte _080FA940
|
|
.4byte _080FA948
|
|
.4byte _080FA950
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA95E
|
|
.4byte _080FA958
|
|
_080FA920:
|
|
movs r0, 0x3E
|
|
bl PlaySE
|
|
b _080FA95E
|
|
_080FA928:
|
|
movs r0, 0x3F
|
|
bl PlaySE
|
|
b _080FA95E
|
|
_080FA930:
|
|
movs r0, 0x40
|
|
bl PlaySE
|
|
b _080FA95E
|
|
_080FA938:
|
|
movs r0, 0x41
|
|
bl PlaySE
|
|
b _080FA95E
|
|
_080FA940:
|
|
movs r0, 0x42
|
|
bl PlaySE
|
|
b _080FA95E
|
|
_080FA948:
|
|
movs r0, 0x43
|
|
bl PlaySE
|
|
b _080FA95E
|
|
_080FA950:
|
|
movs r0, 0x44
|
|
bl PlaySE
|
|
b _080FA95E
|
|
_080FA958:
|
|
movs r0, 0x45
|
|
bl PlaySE
|
|
_080FA95E:
|
|
adds r0, r4, 0
|
|
bl DestroyTask
|
|
b _080FA96A
|
|
_080FA966:
|
|
adds r0, r2, 0x1
|
|
strh r0, [r1, 0xA]
|
|
_080FA96A:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80FA7EC
|
|
|
|
thumb_func_start sub_80FA970
|
|
sub_80FA970: @ 80FA970
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
ldr r0, =sub_80FA7EC
|
|
movs r1, 0x5
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
movs r0, 0
|
|
strh r4, [r1, 0x8]
|
|
strh r0, [r1, 0xA]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80FA970
|
|
|
|
thumb_func_start sub_80FA9A4
|
|
sub_80FA9A4: @ 80FA9A4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x8
|
|
bne _080FA9BC
|
|
movs r0, 0xC3
|
|
bl PlaySE
|
|
_080FA9BC:
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1F
|
|
ble _080FA9CA
|
|
adds r0, r4, 0
|
|
bl DestroySprite
|
|
_080FA9CA:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80FA9A4
|
|
|
|
thumb_func_start sub_80FA9D0
|
|
sub_80FA9D0: @ 80FA9D0
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
ldr r3, =gEventObjects
|
|
ldr r2, =gPlayerAvatar
|
|
ldrb r1, [r2, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
ldrh r1, [r0, 0x10]
|
|
mov r0, sp
|
|
strh r1, [r0]
|
|
ldrb r1, [r2, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
ldrh r0, [r0, 0x12]
|
|
mov r4, sp
|
|
adds r4, 0x2
|
|
strh r0, [r4]
|
|
mov r0, sp
|
|
adds r1, r4, 0
|
|
movs r2, 0x8
|
|
movs r3, 0x4
|
|
bl sub_80930E0
|
|
ldr r0, =gFieldEffectObjectTemplatePointers
|
|
ldr r0, [r0, 0x58]
|
|
mov r1, sp
|
|
movs r2, 0
|
|
ldrsh r1, [r1, r2]
|
|
movs r3, 0
|
|
ldrsh r2, [r4, r3]
|
|
movs r3, 0
|
|
bl CreateSpriteAtEnd
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x40
|
|
beq _080FAA5E
|
|
ldr r3, =gSprites
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
adds r4, r2, r3
|
|
movs r0, 0x3E
|
|
adds r0, r4
|
|
mov r12, r0
|
|
ldrb r0, [r0]
|
|
movs r1, 0x2
|
|
orrs r0, r1
|
|
mov r1, r12
|
|
strb r0, [r1]
|
|
ldrb r1, [r4, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r1
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
movs r1, 0xF
|
|
ands r0, r1
|
|
movs r1, 0x50
|
|
orrs r0, r1
|
|
strb r0, [r4, 0x5]
|
|
adds r3, 0x1C
|
|
adds r2, r3
|
|
ldr r0, =sub_80FA9A4
|
|
str r0, [r2]
|
|
movs r0, 0
|
|
strh r0, [r4, 0x2E]
|
|
_080FAA5E:
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80FA9D0
|
|
|
|
thumb_func_start sub_80FAA7C
|
|
sub_80FAA7C: @ 80FAA7C
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
bl ScriptContext2_Enable
|
|
mov r4, sp
|
|
adds r4, 0x2
|
|
mov r0, sp
|
|
adds r1, r4, 0
|
|
bl GetXYCoordsOneStepInFrontOfPlayer
|
|
ldr r1, =gFieldEffectArguments
|
|
mov r0, sp
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
str r0, [r1, 0x14]
|
|
movs r3, 0
|
|
ldrsh r0, [r4, r3]
|
|
str r0, [r1, 0x18]
|
|
bl GetPlayerFacingDirection
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x2
|
|
beq _080FAAFC
|
|
cmp r0, 0x2
|
|
bgt _080FAABC
|
|
cmp r0, 0x1
|
|
beq _080FAAC6
|
|
b _080FAB8C
|
|
.pool
|
|
_080FAABC:
|
|
cmp r0, 0x3
|
|
beq _080FAB2C
|
|
cmp r0, 0x4
|
|
beq _080FAB64
|
|
b _080FAB8C
|
|
_080FAAC6:
|
|
ldr r0, =gUnknown_0858E68C
|
|
ldr r3, =gSprites
|
|
ldr r1, =gPlayerAvatar
|
|
ldrb r1, [r1, 0x4]
|
|
lsls r2, r1, 4
|
|
adds r2, r1
|
|
lsls r2, 2
|
|
adds r2, r3
|
|
ldrh r1, [r2, 0x2]
|
|
lsls r1, 23
|
|
lsrs r1, 7
|
|
movs r3, 0x80
|
|
lsls r3, 12
|
|
adds r1, r3
|
|
asrs r1, 16
|
|
ldrb r2, [r2]
|
|
adds r2, 0x20
|
|
movs r3, 0
|
|
bl CreateSprite
|
|
b _080FAB8C
|
|
.pool
|
|
_080FAAFC:
|
|
ldr r0, =gUnknown_0858E68C
|
|
ldr r3, =gSprites
|
|
ldr r1, =gPlayerAvatar
|
|
ldrb r1, [r1, 0x4]
|
|
lsls r2, r1, 4
|
|
adds r2, r1
|
|
lsls r2, 2
|
|
adds r2, r3
|
|
ldrh r1, [r2, 0x2]
|
|
lsls r1, 23
|
|
lsrs r1, 7
|
|
movs r3, 0x80
|
|
lsls r3, 12
|
|
adds r1, r3
|
|
asrs r1, 16
|
|
ldrb r2, [r2]
|
|
b _080FAB4C
|
|
.pool
|
|
_080FAB2C:
|
|
ldr r0, =gUnknown_0858E68C
|
|
ldr r3, =gSprites
|
|
ldr r1, =gPlayerAvatar
|
|
ldrb r1, [r1, 0x4]
|
|
lsls r2, r1, 4
|
|
adds r2, r1
|
|
lsls r2, 2
|
|
adds r2, r3
|
|
ldrh r1, [r2, 0x2]
|
|
lsls r1, 23
|
|
lsrs r1, 7
|
|
ldr r3, =0xfff80000
|
|
adds r1, r3
|
|
asrs r1, 16
|
|
ldrb r2, [r2]
|
|
adds r2, 0x10
|
|
_080FAB4C:
|
|
movs r3, 0x94
|
|
bl CreateSprite
|
|
b _080FAB8C
|
|
.pool
|
|
_080FAB64:
|
|
ldr r0, =gUnknown_0858E68C
|
|
ldr r3, =gSprites
|
|
ldr r1, =gPlayerAvatar
|
|
ldrb r1, [r1, 0x4]
|
|
lsls r2, r1, 4
|
|
adds r2, r1
|
|
lsls r2, 2
|
|
adds r2, r3
|
|
ldrh r1, [r2, 0x2]
|
|
lsls r1, 23
|
|
lsrs r1, 7
|
|
movs r3, 0xC0
|
|
lsls r3, 13
|
|
adds r1, r3
|
|
asrs r1, 16
|
|
ldrb r2, [r2]
|
|
adds r2, 0x10
|
|
movs r3, 0x94
|
|
bl CreateSprite
|
|
_080FAB8C:
|
|
movs r0, 0
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_80FAA7C
|
|
|
|
thumb_func_start door_restore_tilemap
|
|
door_restore_tilemap: @ 80FABA4
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
movs r0, 0x83
|
|
bl PlaySE
|
|
ldr r4, =gFieldEffectArguments
|
|
ldr r0, [r4, 0x14]
|
|
ldr r1, [r4, 0x18]
|
|
subs r1, 0x1
|
|
bl MapGridGetMetatileIdAt
|
|
ldr r1, =0x00000286
|
|
cmp r0, r1
|
|
bne _080FABDC
|
|
ldr r0, [r4, 0x14]
|
|
ldr r1, [r4, 0x18]
|
|
subs r1, 0x1
|
|
ldr r2, =0x00000e02
|
|
bl MapGridSetMetatileIdAt
|
|
b _080FABEA
|
|
.pool
|
|
_080FABDC:
|
|
ldr r0, [r4, 0x14]
|
|
ldr r1, [r4, 0x18]
|
|
subs r1, 0x1
|
|
movs r2, 0xA1
|
|
lsls r2, 2
|
|
bl MapGridSetMetatileIdAt
|
|
_080FABEA:
|
|
ldr r4, =gFieldEffectArguments
|
|
ldr r0, [r4, 0x14]
|
|
ldr r1, [r4, 0x18]
|
|
ldr r2, =0x0000020a
|
|
bl MapGridSetMetatileIdAt
|
|
ldr r0, [r4, 0x14]
|
|
ldr r1, [r4, 0x18]
|
|
subs r1, 0x1
|
|
bl CurrentMapDrawMetatileAt
|
|
ldr r0, [r4, 0x14]
|
|
ldr r1, [r4, 0x18]
|
|
bl CurrentMapDrawMetatileAt
|
|
movs r0, 0
|
|
strh r0, [r5, 0x2E]
|
|
ldr r0, =sub_80FAC24
|
|
str r0, [r5, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end door_restore_tilemap
|
|
|
|
thumb_func_start sub_80FAC24
|
|
sub_80FAC24: @ 80FAC24
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldrh r1, [r5, 0x2E]
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r5, r2]
|
|
cmp r0, 0x11
|
|
bgt _080FAC38
|
|
adds r0, r1, 0x1
|
|
strh r0, [r5, 0x2E]
|
|
b _080FAC54
|
|
_080FAC38:
|
|
ldr r4, =gFieldEffectArguments
|
|
ldr r0, [r4, 0x14]
|
|
ldr r1, [r4, 0x18]
|
|
ldr r2, =0x00000e8c
|
|
bl MapGridSetMetatileIdAt
|
|
ldr r0, [r4, 0x14]
|
|
ldr r1, [r4, 0x18]
|
|
bl CurrentMapDrawMetatileAt
|
|
movs r0, 0
|
|
strh r0, [r5, 0x2E]
|
|
ldr r0, =sub_80FAC68
|
|
str r0, [r5, 0x1C]
|
|
_080FAC54:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80FAC24
|
|
|
|
thumb_func_start sub_80FAC68
|
|
sub_80FAC68: @ 80FAC68
|
|
push {lr}
|
|
movs r1, 0x34
|
|
bl FieldEffectStop
|
|
bl EnableBothScriptContexts
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80FAC68
|
|
|
|
thumb_func_start sub_80FAC78
|
|
sub_80FAC78: @ 80FAC78
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
mov r4, sp
|
|
adds r4, 0x2
|
|
mov r0, sp
|
|
adds r1, r4, 0
|
|
bl GetXYCoordsOneStepInFrontOfPlayer
|
|
mov r0, sp
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
movs r2, 0
|
|
ldrsh r1, [r4, r2]
|
|
bl MapGridGetMetatileIdAt
|
|
adds r1, r0, 0
|
|
ldr r0, =0x000002f5
|
|
cmp r1, r0
|
|
beq _080FAD6C
|
|
cmp r1, r0
|
|
bgt _080FACB4
|
|
subs r0, 0x17
|
|
cmp r1, r0
|
|
beq _080FAD14
|
|
adds r0, 0x16
|
|
cmp r1, r0
|
|
beq _080FAD60
|
|
b _080FADCE
|
|
.pool
|
|
_080FACB4:
|
|
ldr r0, =0x000002f6
|
|
cmp r1, r0
|
|
beq _080FADA4
|
|
adds r0, 0x40
|
|
cmp r1, r0
|
|
beq _080FACC2
|
|
b _080FADCE
|
|
_080FACC2:
|
|
ldr r0, =gStringVar1
|
|
movs r1, 0x64
|
|
movs r2, 0
|
|
movs r3, 0x3
|
|
bl ConvertIntToDecimalStringN
|
|
ldr r0, =gStringVar2
|
|
ldr r1, =gText_Gold
|
|
bl StringCopy
|
|
ldr r1, =gSpecialVar_Result
|
|
movs r0, 0
|
|
strh r0, [r1]
|
|
ldr r0, =0x00004054
|
|
bl VarGet
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _080FADCE
|
|
ldr r4, =0x000040ee
|
|
adds r0, r4, 0
|
|
bl VarGet
|
|
adds r1, r0, 0
|
|
movs r0, 0x10
|
|
b _080FAD8A
|
|
.pool
|
|
_080FAD14:
|
|
ldr r0, =gStringVar1
|
|
movs r1, 0x32
|
|
movs r2, 0
|
|
movs r3, 0x2
|
|
bl ConvertIntToDecimalStringN
|
|
ldr r0, =gStringVar2
|
|
ldr r1, =gText_Silver
|
|
bl StringCopy
|
|
ldr r1, =gSpecialVar_Result
|
|
movs r0, 0
|
|
strh r0, [r1]
|
|
ldr r0, =0x00004054
|
|
bl VarGet
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _080FADCE
|
|
ldr r4, =0x000040ee
|
|
adds r0, r4, 0
|
|
bl VarGet
|
|
adds r1, r0, 0
|
|
movs r0, 0x20
|
|
b _080FAD8A
|
|
.pool
|
|
_080FAD60:
|
|
ldr r1, =gSpecialVar_Result
|
|
movs r0, 0x1
|
|
b _080FAD70
|
|
.pool
|
|
_080FAD6C:
|
|
ldr r1, =gSpecialVar_Result
|
|
movs r0, 0x2
|
|
_080FAD70:
|
|
strh r0, [r1]
|
|
ldr r0, =0x00004054
|
|
bl VarGet
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _080FADCE
|
|
ldr r4, =0x000040ee
|
|
adds r0, r4, 0
|
|
bl VarGet
|
|
adds r1, r0, 0
|
|
movs r0, 0x80
|
|
_080FAD8A:
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
adds r0, r4, 0
|
|
bl VarSet
|
|
b _080FADCE
|
|
.pool
|
|
_080FADA4:
|
|
ldr r1, =gSpecialVar_Result
|
|
movs r0, 0x3
|
|
strh r0, [r1]
|
|
ldr r0, =0x00004054
|
|
bl VarGet
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _080FADCE
|
|
ldr r4, =0x000040ee
|
|
adds r0, r4, 0
|
|
bl VarGet
|
|
adds r1, r0, 0
|
|
movs r0, 0x80
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
adds r0, r4, 0
|
|
bl VarSet
|
|
_080FADCE:
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80FAC78
|
|
|
|
thumb_func_start sub_80FADE4
|
|
sub_80FADE4: @ 80FADE4
|
|
push {r4-r6,lr}
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
adds r6, r4, 0
|
|
lsls r1, 24
|
|
lsrs r5, r1, 24
|
|
bl CurrentMapIsSecretBase
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080FAE28
|
|
cmp r5, 0
|
|
bne _080FAE1C
|
|
ldr r1, =0xfffffd7b
|
|
adds r0, r4, r1
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x1
|
|
bls _080FAE10
|
|
ldr r0, =0x00000237
|
|
cmp r4, r0
|
|
bne _080FAE28
|
|
_080FAE10:
|
|
movs r0, 0x1
|
|
b _080FAE2A
|
|
.pool
|
|
_080FAE1C:
|
|
ldr r0, =0x0000028d
|
|
cmp r4, r0
|
|
beq _080FAE10
|
|
ldr r0, =0x0000023f
|
|
cmp r6, r0
|
|
beq _080FAE10
|
|
_080FAE28:
|
|
movs r0, 0
|
|
_080FAE2A:
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_80FADE4
|
|
|
|
thumb_func_start task50_overworld_poison_effect
|
|
task50_overworld_poison_effect: @ 80FAE38
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
ldr r1, =gTasks + 0x8
|
|
adds r1, r0, r1
|
|
movs r3, 0
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0x1
|
|
beq _080FAE76
|
|
cmp r0, 0x1
|
|
bgt _080FAE60
|
|
cmp r0, 0
|
|
beq _080FAE66
|
|
b _080FAE92
|
|
.pool
|
|
_080FAE60:
|
|
cmp r0, 0x2
|
|
beq _080FAE8A
|
|
b _080FAE92
|
|
_080FAE66:
|
|
ldrh r0, [r1, 0x2]
|
|
adds r0, 0x2
|
|
strh r0, [r1, 0x2]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x8
|
|
ble _080FAE92
|
|
b _080FAE82
|
|
_080FAE76:
|
|
ldrh r0, [r1, 0x2]
|
|
subs r0, 0x2
|
|
strh r0, [r1, 0x2]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080FAE92
|
|
_080FAE82:
|
|
ldrh r0, [r1]
|
|
adds r0, 0x1
|
|
strh r0, [r1]
|
|
b _080FAE92
|
|
_080FAE8A:
|
|
adds r0, r2, 0
|
|
bl DestroyTask
|
|
b _080FAEA2
|
|
_080FAE92:
|
|
ldrh r0, [r1, 0x2]
|
|
lsls r1, r0, 4
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x4C
|
|
bl SetGpuReg
|
|
_080FAEA2:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end task50_overworld_poison_effect
|
|
|
|
thumb_func_start overworld_poison_effect
|
|
overworld_poison_effect: @ 80FAEA8
|
|
push {lr}
|
|
movs r0, 0x4F
|
|
bl PlaySE
|
|
ldr r0, =task50_overworld_poison_effect
|
|
movs r1, 0x50
|
|
bl CreateTask
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end overworld_poison_effect
|
|
|
|
thumb_func_start FieldPoisonEffectIsRunning
|
|
FieldPoisonEffectIsRunning: @ 80FAEC0
|
|
push {lr}
|
|
ldr r0, =task50_overworld_poison_effect
|
|
bl FuncIsActiveTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end FieldPoisonEffectIsRunning
|
|
|
|
thumb_func_start sub_80FAED4
|
|
sub_80FAED4: @ 80FAED4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
ldr r0, =sub_80FAEF0
|
|
str r0, [r1]
|
|
bx lr
|
|
.pool
|
|
thumb_func_end sub_80FAED4
|
|
|
|
thumb_func_start sub_80FAEF0
|
|
sub_80FAEF0: @ 80FAEF0
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r0, =gPlayerAvatar
|
|
ldrb r1, [r0, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, =gEventObjects
|
|
adds r4, r0, r1
|
|
adds r0, r4, 0
|
|
bl EventObjectIsMovementOverridden
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080FAF1C
|
|
adds r0, r4, 0
|
|
bl EventObjectClearHeldMovementIfFinished
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080FAF4E
|
|
_080FAF1C:
|
|
bl GetPlayerFacingDirection
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_808C228
|
|
bl GetPlayerFacingDirection
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetWalkInPlaceNormalMovementAction
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl EventObjectSetHeldMovement
|
|
ldr r1, =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, =sub_80FAF64
|
|
str r1, [r0]
|
|
_080FAF4E:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80FAEF0
|
|
|
|
thumb_func_start sub_80FAF64
|
|
sub_80FAF64: @ 80FAF64
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, =gPlayerAvatar
|
|
ldrb r1, [r0, 0x5]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, =gEventObjects
|
|
adds r5, r0, r1
|
|
adds r0, r5, 0
|
|
bl EventObjectClearHeldMovementIfFinished
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080FAFC8
|
|
ldr r1, =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r2, r0, r1
|
|
ldrh r0, [r2, 0xA]
|
|
adds r1, r0, 0x1
|
|
strh r1, [r2, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x9
|
|
bgt _080FAFC4
|
|
bl GetPlayerFacingDirection
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetWalkInPlaceNormalMovementAction
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r5, 0
|
|
bl EventObjectSetHeldMovement
|
|
b _080FAFC8
|
|
.pool
|
|
_080FAFC4:
|
|
ldr r0, =sub_80FAFD4
|
|
str r0, [r2]
|
|
_080FAFC8:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80FAF64
|
|
|
|
thumb_func_start sub_80FAFD4
|
|
sub_80FAFD4: @ 80FAFD4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
bl sub_808BCD0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl SetPlayerAvatarTransitionFlags
|
|
adds r0, r4, 0
|
|
bl DestroyTask
|
|
bl EnableBothScriptContexts
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80FAFD4
|
|
|
|
thumb_func_start sub_80FAFF8
|
|
sub_80FAFF8: @ 80FAFF8
|
|
push {lr}
|
|
ldr r0, =sub_80FAED4
|
|
movs r1, 0x50
|
|
bl CreateTask
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80FAFF8
|
|
|
|
thumb_func_start CreateRecordMixingSprite
|
|
CreateRecordMixingSprite: @ 80FB00C
|
|
push {r4,r5,lr}
|
|
ldr r0, =gUnknown_0858E864
|
|
bl LoadSpritePalette
|
|
ldr r0, =gUnknown_0858E880
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0x52
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r5, 0x40
|
|
beq _080FB06C
|
|
lsls r0, r5, 4
|
|
adds r0, r5
|
|
lsls r0, 2
|
|
ldr r1, =gSprites
|
|
adds r4, r0, r1
|
|
adds r2, r4, 0
|
|
adds r2, 0x20
|
|
adds r3, r4, 0
|
|
adds r3, 0x22
|
|
movs r0, 0x10
|
|
movs r1, 0xD
|
|
bl sub_8092FF0
|
|
adds r2, r4, 0
|
|
adds r2, 0x3E
|
|
ldrb r0, [r2]
|
|
movs r1, 0x2
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
ldrh r0, [r4, 0x20]
|
|
adds r0, 0x10
|
|
strh r0, [r4, 0x20]
|
|
ldrh r0, [r4, 0x22]
|
|
adds r0, 0x2
|
|
strh r0, [r4, 0x22]
|
|
adds r0, r5, 0
|
|
b _080FB06E
|
|
.pool
|
|
_080FB06C:
|
|
movs r0, 0x40
|
|
_080FB06E:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end CreateRecordMixingSprite
|
|
|
|
thumb_func_start DestroyRecordMixingSprite
|
|
DestroyRecordMixingSprite: @ 80FB074
|
|
push {r4-r7,lr}
|
|
ldr r4, =gSprites
|
|
adds r7, r4, 0
|
|
movs r6, 0
|
|
movs r5, 0x3F
|
|
_080FB07E:
|
|
adds r0, r7, 0
|
|
adds r0, 0x14
|
|
adds r0, r6, r0
|
|
ldr r1, [r0]
|
|
ldr r0, =gUnknown_0858E880
|
|
cmp r1, r0
|
|
bne _080FB098
|
|
adds r0, r4, 0
|
|
bl FreeSpritePalette
|
|
adds r0, r4, 0
|
|
bl DestroySprite
|
|
_080FB098:
|
|
adds r4, 0x44
|
|
adds r6, 0x44
|
|
subs r5, 0x1
|
|
cmp r5, 0
|
|
bge _080FB07E
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end DestroyRecordMixingSprite
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|