pokeemerald/asm/fldeff_80F9BCC.s
2018-06-16 00:45:48 +02:00

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.