pokeruby/asm/field_effect.s
2017-05-21 20:21:00 +02:00

7739 lines
135 KiB
ArmAsm

.include "constants/gba_constants.inc"
.include "constants/species_constants.inc"
.include "asm/macros.inc"
.syntax unified
.text
thumb_func_start CreateTrainerSprite_BirchSpeech
CreateTrainerSprite_BirchSpeech: @ 80859BC
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x18
adds r4, r0, 0
adds r5, r1, 0
adds r6, r2, 0
mov r9, r3
ldr r7, [sp, 0x34]
lsls r4, 24
lsls r5, 16
lsrs r5, 16
lsls r6, 16
lsrs r6, 16
mov r0, r9
lsls r0, 24
lsrs r0, 24
mov r9, r0
lsrs r4, 21
ldr r3, _08085A44 @ =gTrainerFrontPicPaletteTable
mov r8, r3
add r8, r4
mov r0, r8
adds r1, r7, 0
bl LoadCompressedObjectPaletteOverrideBuffer
ldr r0, _08085A48 @ =gTrainerFrontPicTable
adds r4, r0
adds r0, r4, 0
adds r1, r7, 0
bl LoadCompressedObjectPicOverrideBuffer
mov r1, sp
ldrh r0, [r4, 0x6]
movs r2, 0
strh r0, [r1]
mov r3, r8
ldrh r0, [r3, 0x4]
strh r0, [r1, 0x2]
ldr r0, _08085A4C @ =gOamData_839F0F4
str r0, [sp, 0x4]
ldr r0, _08085A50 @ =gDummySpriteAnimTable
str r0, [sp, 0x8]
str r2, [sp, 0xC]
ldr r0, _08085A54 @ =gDummySpriteAffineAnimTable
str r0, [sp, 0x10]
ldr r0, _08085A58 @ =SpriteCallbackDummy
str r0, [sp, 0x14]
lsls r5, 16
asrs r5, 16
lsls r6, 16
asrs r6, 16
mov r0, sp
adds r1, r5, 0
adds r2, r6, 0
mov r3, r9
bl CreateSprite
lsls r0, 24
lsrs r0, 24
add sp, 0x18
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08085A44: .4byte gTrainerFrontPicPaletteTable
_08085A48: .4byte gTrainerFrontPicTable
_08085A4C: .4byte gOamData_839F0F4
_08085A50: .4byte gDummySpriteAnimTable
_08085A54: .4byte gDummySpriteAffineAnimTable
_08085A58: .4byte SpriteCallbackDummy
thumb_func_end CreateTrainerSprite_BirchSpeech
thumb_func_start LoadTrainerGfx_TrainerCard
LoadTrainerGfx_TrainerCard: @ 8085A5C
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
adds r1, r2, 0
lsls r4, 24
lsls r5, 16
lsrs r5, 16
ldr r0, _08085A8C @ =gTrainerFrontPicTable
lsrs r4, 21
adds r0, r4, r0
ldr r0, [r0]
bl LZDecompressVram
ldr r0, _08085A90 @ =gTrainerFrontPicPaletteTable
adds r4, r0
ldr r0, [r4]
adds r1, r5, 0
movs r2, 0x20
bl LoadCompressedPalette
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08085A8C: .4byte gTrainerFrontPicTable
_08085A90: .4byte gTrainerFrontPicPaletteTable
thumb_func_end LoadTrainerGfx_TrainerCard
thumb_func_start CreateBirchSprite
CreateBirchSprite: @ 8085A94
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, 24
lsrs r6, 24
ldr r0, _08085ACC @ =gUnknown_0839F114
bl LoadSpritePalette
ldr r0, _08085AD0 @ =gSpriteTemplate_839F128
lsls r4, 16
asrs r4, 16
lsls r5, 16
asrs r5, 16
adds r1, r4, 0
adds r2, r5, 0
adds r3, r6, 0
bl CreateSprite
lsls r0, 24
lsrs r0, 24
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08085ACC: .4byte gUnknown_0839F114
_08085AD0: .4byte gSpriteTemplate_839F128
thumb_func_end CreateBirchSprite
thumb_func_start CreateMonSprite_PicBox
CreateMonSprite_PicBox: @ 8085AD4
push {r4-r6,lr}
mov r6, r10
mov r5, r9
mov r4, r8
push {r4-r6}
sub sp, 0x8
adds r4, r0, 0
adds r6, r1, 0
mov r8, r2
mov r10, r3
lsls r4, 16
lsrs r4, 16
lsls r6, 16
lsrs r6, 16
mov r0, r8
lsls r0, 16
lsrs r0, 16
mov r8, r0
mov r0, r10
lsls r0, 24
lsrs r0, 24
mov r10, r0
lsls r0, r4, 3
mov r9, r0
ldr r0, _08085B74 @ =gMonFrontPicTable
add r0, r9
ldr r1, _08085B78 @ =gMonFrontPicCoords
lsls r2, r4, 2
adds r2, r1
ldrb r1, [r2]
ldrb r2, [r2, 0x1]
ldr r3, _08085B7C @ =gUnknown_081FAF4C
ldr r3, [r3, 0xC]
str r3, [sp]
str r4, [sp, 0x4]
bl DecompressPicFromTable_2
ldr r5, _08085B80 @ =gMonPaletteTable
add r9, r5
mov r0, r9
bl LoadCompressedObjectPalette
adds r0, r4, 0
movs r1, 0x3
bl GetMonSpriteTemplate_803C56C
ldr r4, _08085B84 @ =gUnknown_02024E8C
ldrh r0, [r5, 0x4]
strh r0, [r4, 0x2]
ldrh r0, [r5, 0x4]
bl IndexOfSpritePaletteTag
adds r0, 0x10
lsls r0, 24
lsrs r0, 24
bl sub_807DE38
lsls r6, 16
asrs r6, 16
mov r0, r8
lsls r0, 16
asrs r0, 16
mov r8, r0
adds r0, r4, 0
adds r1, r6, 0
mov r2, r8
mov r3, r10
bl CreateSprite
lsls r0, 24
lsrs r0, 24
add sp, 0x8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08085B74: .4byte gMonFrontPicTable
_08085B78: .4byte gMonFrontPicCoords
_08085B7C: .4byte gUnknown_081FAF4C
_08085B80: .4byte gMonPaletteTable
_08085B84: .4byte gUnknown_02024E8C
thumb_func_end CreateMonSprite_PicBox
thumb_func_start CreateMonSprite_FieldMove
CreateMonSprite_FieldMove: @ 8085B88
push {r4-r6,lr}
mov r6, r10
mov r5, r9
mov r4, r8
push {r4-r6}
sub sp, 0xC
adds r5, r0, 0
mov r10, r1
adds r4, r2, 0
adds r6, r3, 0
ldr r0, [sp, 0x28]
mov r8, r0
ldr r0, [sp, 0x2C]
mov r9, r0
lsls r5, 16
lsrs r5, 16
lsls r6, 16
lsrs r6, 16
mov r0, r8
lsls r0, 16
lsrs r0, 16
mov r8, r0
mov r0, r9
lsls r0, 24
lsrs r0, 24
mov r9, r0
lsls r0, r5, 3
ldr r1, _08085C34 @ =gMonFrontPicTable
adds r0, r1
ldr r1, _08085C38 @ =gMonFrontPicCoords
lsls r2, r5, 2
adds r2, r1
ldrb r1, [r2]
ldrb r2, [r2, 0x1]
ldr r3, _08085C3C @ =gUnknown_081FAF4C
ldr r3, [r3, 0xC]
str r3, [sp]
str r5, [sp, 0x4]
str r4, [sp, 0x8]
bl HandleLoadSpecialPokePic
adds r0, r5, 0
mov r1, r10
adds r2, r4, 0
bl sub_80409C8
adds r4, r0, 0
bl LoadCompressedObjectPalette
adds r0, r5, 0
movs r1, 0x3
bl GetMonSpriteTemplate_803C56C
ldr r5, _08085C40 @ =gUnknown_02024E8C
ldrh r0, [r4, 0x4]
strh r0, [r5, 0x2]
ldrh r0, [r4, 0x4]
bl IndexOfSpritePaletteTag
adds r0, 0x10
lsls r0, 24
lsrs r0, 24
bl sub_807DE38
lsls r6, 16
asrs r6, 16
mov r0, r8
lsls r0, 16
asrs r0, 16
mov r8, r0
adds r0, r5, 0
adds r1, r6, 0
mov r2, r8
mov r3, r9
bl CreateSprite
lsls r0, 24
lsrs r0, 24
add sp, 0xC
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08085C34: .4byte gMonFrontPicTable
_08085C38: .4byte gMonFrontPicCoords
_08085C3C: .4byte gUnknown_081FAF4C
_08085C40: .4byte gUnknown_02024E8C
thumb_func_end CreateMonSprite_FieldMove
thumb_func_start FreeResourcesAndDestroySprite
FreeResourcesAndDestroySprite: @ 8085C44
push {r4,lr}
adds r4, r0, 0
bl sub_807DE68
ldrb r0, [r4, 0x5]
lsrs r0, 4
bl GetSpritePaletteTagByPaletteNum
lsls r0, 16
lsrs r0, 16
bl FreeSpritePaletteByTag
ldrb r0, [r4, 0x1]
lsls r0, 30
cmp r0, 0
beq _08085C6E
ldrb r0, [r4, 0x3]
lsls r0, 26
lsrs r0, 27
bl FreeOamMatrix
_08085C6E:
adds r0, r4, 0
bl DestroySprite
pop {r4}
pop {r0}
bx r0
thumb_func_end FreeResourcesAndDestroySprite
thumb_func_start MultiplyInvertedPaletteRGBComponents
MultiplyInvertedPaletteRGBComponents: @ 8085C7C
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
lsls r0, 16
lsls r1, 24
lsrs r1, 24
lsls r2, 24
lsrs r2, 24
lsls r3, 24
lsrs r3, 24
ldr r4, _08085D00 @ =gPlttBufferUnfaded
lsrs r0, 15
adds r4, r0, r4
ldrh r4, [r4]
movs r5, 0x1F
mov r9, r5
mov r8, r4
mov r6, r8
ands r6, r5
mov r8, r6
movs r6, 0xF8
lsls r6, 2
ands r6, r4
lsrs r6, 5
movs r5, 0xF8
lsls r5, 7
ands r4, r5
lsrs r4, 10
mov r7, r9
mov r5, r8
subs r7, r5
mov r12, r7
mov r7, r12
muls r7, r1
adds r1, r7, 0
asrs r1, 4
add r8, r1
mov r5, r9
subs r1, r5, r6
muls r1, r2
asrs r1, 4
adds r6, r1
subs r5, r4
mov r9, r5
mov r1, r9
muls r1, r3
asrs r1, 4
adds r4, r1
mov r7, r8
lsls r7, 16
lsls r6, 21
orrs r6, r7
lsls r4, 26
orrs r4, r6
lsrs r4, 16
ldr r1, _08085D04 @ =gPlttBufferFaded
adds r0, r1
strh r4, [r0]
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08085D00: .4byte gPlttBufferUnfaded
_08085D04: .4byte gPlttBufferFaded
thumb_func_end MultiplyInvertedPaletteRGBComponents
thumb_func_start MultiplyPaletteRGBComponents
MultiplyPaletteRGBComponents: @ 8085D08
push {r4-r6,lr}
mov r6, r8
push {r6}
lsls r0, 16
lsls r1, 24
lsrs r1, 24
lsls r2, 24
lsrs r2, 24
lsls r3, 24
lsrs r3, 24
ldr r4, _08085D78 @ =gPlttBufferUnfaded
lsrs r0, 15
adds r4, r0, r4
ldrh r4, [r4]
movs r5, 0x1F
mov r8, r5
mov r6, r8
ands r6, r4
mov r8, r6
movs r5, 0xF8
lsls r5, 2
ands r5, r4
lsrs r5, 5
movs r6, 0xF8
lsls r6, 7
ands r4, r6
lsrs r4, 10
mov r6, r8
muls r6, r1
adds r1, r6, 0
asrs r1, 4
mov r6, r8
subs r6, r1
adds r1, r5, 0
muls r1, r2
asrs r1, 4
subs r5, r1
adds r1, r4, 0
muls r1, r3
asrs r1, 4
subs r4, r1
lsls r6, 16
lsls r5, 21
orrs r5, r6
lsls r4, 26
orrs r4, r5
lsrs r4, 16
ldr r1, _08085D7C @ =gPlttBufferFaded
adds r0, r1
strh r4, [r0]
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08085D78: .4byte gPlttBufferUnfaded
_08085D7C: .4byte gPlttBufferFaded
thumb_func_end MultiplyPaletteRGBComponents
thumb_func_start FldEff_PokecenterHeal
FldEff_PokecenterHeal: @ 8085D80
push {r4,lr}
bl CalculatePlayerPartyCount
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r0, _08085DBC @ =Task_PokecenterHeal
movs r1, 0xFF
bl CreateTask
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _08085DC0 @ =gTasks
adds r1, r0
strh r4, [r1, 0xA]
movs r0, 0x5D
strh r0, [r1, 0xC]
movs r0, 0x24
strh r0, [r1, 0xE]
movs r0, 0x7C
strh r0, [r1, 0x10]
movs r0, 0x18
strh r0, [r1, 0x12]
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08085DBC: .4byte Task_PokecenterHeal
_08085DC0: .4byte gTasks
thumb_func_end FldEff_PokecenterHeal
thumb_func_start Task_PokecenterHeal
Task_PokecenterHeal: @ 8085DC4
push {lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _08085DEC @ =gTasks
adds r1, r0
ldr r2, _08085DF0 @ =gUnknown_0839F268
movs r3, 0x8
ldrsh r0, [r1, r3]
lsls r0, 2
adds r0, r2
ldr r2, [r0]
adds r0, r1, 0
bl _call_via_r2
pop {r0}
bx r0
.align 2, 0
_08085DEC: .4byte gTasks
_08085DF0: .4byte gUnknown_0839F268
thumb_func_end Task_PokecenterHeal
thumb_func_start PokecenterHealEffect_0
PokecenterHealEffect_0: @ 8085DF4
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
movs r1, 0xA
ldrsh r0, [r4, r1]
movs r2, 0xC
ldrsh r1, [r4, r2]
movs r3, 0xE
ldrsh r2, [r4, r3]
movs r3, 0x1
bl CreatePokeballGlowSprite
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x14]
movs r1, 0x10
ldrsh r0, [r4, r1]
movs r2, 0x12
ldrsh r1, [r4, r2]
bl PokecenterHealEffectHelper
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x16]
pop {r4}
pop {r0}
bx r0
thumb_func_end PokecenterHealEffect_0
thumb_func_start PokecenterHealEffect_1
PokecenterHealEffect_1: @ 8085E30
push {r4,lr}
adds r2, r0, 0
ldr r3, _08085E68 @ =gSprites
movs r1, 0x14
ldrsh r0, [r2, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r3
movs r4, 0x2E
ldrsh r0, [r1, r4]
cmp r0, 0x1
ble _08085E62
movs r0, 0x16
ldrsh r1, [r2, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
ldrh r1, [r0, 0x2E]
adds r1, 0x1
strh r1, [r0, 0x2E]
ldrh r0, [r2, 0x8]
adds r0, 0x1
strh r0, [r2, 0x8]
_08085E62:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08085E68: .4byte gSprites
thumb_func_end PokecenterHealEffect_1
thumb_func_start PokecenterHealEffect_2
PokecenterHealEffect_2: @ 8085E6C
push {lr}
adds r3, r0, 0
ldr r2, _08085E90 @ =gSprites
movs r0, 0x14
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0x2E
ldrsh r0, [r0, r1]
cmp r0, 0x4
ble _08085E8C
ldrh r0, [r3, 0x8]
adds r0, 0x1
strh r0, [r3, 0x8]
_08085E8C:
pop {r0}
bx r0
.align 2, 0
_08085E90: .4byte gSprites
thumb_func_end PokecenterHealEffect_2
thumb_func_start PokecenterHealEffect_3
PokecenterHealEffect_3: @ 8085E94
push {lr}
ldr r2, _08085ECC @ =gSprites
movs r3, 0x14
ldrsh r1, [r0, r3]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r0, r2
movs r2, 0x2E
ldrsh r0, [r1, r2]
cmp r0, 0x6
ble _08085EC6
adds r0, r1, 0
bl DestroySprite
movs r0, 0x19
bl FieldEffectActiveListRemove
ldr r0, _08085ED0 @ =Task_PokecenterHeal
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
_08085EC6:
pop {r0}
bx r0
.align 2, 0
_08085ECC: .4byte gSprites
_08085ED0: .4byte Task_PokecenterHeal
thumb_func_end PokecenterHealEffect_3
thumb_func_start FldEff_HallOfFameRecord
FldEff_HallOfFameRecord: @ 8085ED4
push {r4,lr}
bl CalculatePlayerPartyCount
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r0, _08085F08 @ =Task_HallOfFameRecord
movs r1, 0xFF
bl CreateTask
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _08085F0C @ =gTasks
adds r1, r0
strh r4, [r1, 0xA]
movs r0, 0x75
strh r0, [r1, 0xC]
movs r0, 0x34
strh r0, [r1, 0xE]
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08085F08: .4byte Task_HallOfFameRecord
_08085F0C: .4byte gTasks
thumb_func_end FldEff_HallOfFameRecord
thumb_func_start Task_HallOfFameRecord
Task_HallOfFameRecord: @ 8085F10
push {lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _08085F38 @ =gTasks
adds r1, r0
ldr r2, _08085F3C @ =gUnknown_0839F278
movs r3, 0x8
ldrsh r0, [r1, r3]
lsls r0, 2
adds r0, r2
ldr r2, [r0]
adds r0, r1, 0
bl _call_via_r2
pop {r0}
bx r0
.align 2, 0
_08085F38: .4byte gTasks
_08085F3C: .4byte gUnknown_0839F278
thumb_func_end Task_HallOfFameRecord
thumb_func_start HallOfFameRecordEffect_0
HallOfFameRecordEffect_0: @ 8085F40
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
movs r1, 0xA
ldrsh r0, [r4, r1]
movs r2, 0xC
ldrsh r1, [r4, r2]
movs r3, 0xE
ldrsh r2, [r4, r3]
movs r3, 0
bl CreatePokeballGlowSprite
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x14]
ldr r0, _08085FB0 @ =Task_HallOfFameRecord
bl FindTaskIdByFunc
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
adds r0, r4, 0
movs r1, 0x78
movs r2, 0x18
movs r3, 0
bl HallOfFameRecordEffectHelper
adds r0, r4, 0
movs r1, 0x28
movs r2, 0x8
movs r3, 0x1
bl HallOfFameRecordEffectHelper
adds r0, r4, 0
movs r1, 0x48
movs r2, 0x8
movs r3, 0x1
bl HallOfFameRecordEffectHelper
adds r0, r4, 0
movs r1, 0xA8
movs r2, 0x8
movs r3, 0x1
bl HallOfFameRecordEffectHelper
adds r0, r4, 0
movs r1, 0xC8
movs r2, 0x8
movs r3, 0x1
bl HallOfFameRecordEffectHelper
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08085FB0: .4byte Task_HallOfFameRecord
thumb_func_end HallOfFameRecordEffect_0
thumb_func_start HallOfFameRecordEffect_1
HallOfFameRecordEffect_1: @ 8085FB4
push {lr}
adds r3, r0, 0
ldr r2, _08085FE0 @ =gSprites
movs r0, 0x14
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0x2E
ldrsh r0, [r0, r1]
cmp r0, 0x1
ble _08085FDA
ldrh r0, [r3, 0x26]
adds r0, 0x1
strh r0, [r3, 0x26]
ldrh r0, [r3, 0x8]
adds r0, 0x1
strh r0, [r3, 0x8]
_08085FDA:
pop {r0}
bx r0
.align 2, 0
_08085FE0: .4byte gSprites
thumb_func_end HallOfFameRecordEffect_1
thumb_func_start HallOfFameRecordEffect_2
HallOfFameRecordEffect_2: @ 8085FE4
push {lr}
adds r3, r0, 0
ldr r2, _08086008 @ =gSprites
movs r0, 0x14
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0x2E
ldrsh r0, [r0, r1]
cmp r0, 0x4
ble _08086004
ldrh r0, [r3, 0x8]
adds r0, 0x1
strh r0, [r3, 0x8]
_08086004:
pop {r0}
bx r0
.align 2, 0
_08086008: .4byte gSprites
thumb_func_end HallOfFameRecordEffect_2
thumb_func_start HallOfFameRecordEffect_3
HallOfFameRecordEffect_3: @ 808600C
push {lr}
ldr r2, _08086044 @ =gSprites
movs r3, 0x14
ldrsh r1, [r0, r3]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r0, r2
movs r2, 0x2E
ldrsh r0, [r1, r2]
cmp r0, 0x6
ble _0808603E
adds r0, r1, 0
bl DestroySprite
movs r0, 0x3E
bl FieldEffectActiveListRemove
ldr r0, _08086048 @ =Task_HallOfFameRecord
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
_0808603E:
pop {r0}
bx r0
.align 2, 0
_08086044: .4byte gSprites
_08086048: .4byte Task_HallOfFameRecord
thumb_func_end HallOfFameRecordEffect_3
thumb_func_start CreatePokeballGlowSprite
CreatePokeballGlowSprite: @ 808604C
push {r4-r6,lr}
mov r6, r8
push {r6}
mov r8, r0
adds r4, r1, 0
adds r5, r2, 0
adds r6, r3, 0
lsls r0, 16
lsrs r0, 16
mov r8, r0
lsls r4, 16
lsrs r4, 16
lsls r5, 16
lsrs r5, 16
lsls r6, 16
lsrs r6, 16
ldr r0, _08086098 @ =SpriteCB_PokeballGlowEffect
bl CreateInvisibleSprite
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
ldr r2, _0808609C @ =gSprites
adds r1, r2
strh r4, [r1, 0x24]
strh r5, [r1, 0x26]
strh r6, [r1, 0x38]
mov r2, r8
strh r2, [r1, 0x3A]
strh r0, [r1, 0x3C]
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08086098: .4byte SpriteCB_PokeballGlowEffect
_0808609C: .4byte gSprites
thumb_func_end CreatePokeballGlowSprite
thumb_func_start SpriteCB_PokeballGlowEffect
SpriteCB_PokeballGlowEffect: @ 80860A0
push {lr}
ldr r2, _080860B8 @ =gUnknown_0839F288
movs r3, 0x2E
ldrsh r1, [r0, r3]
lsls r1, 2
adds r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {r0}
bx r0
.align 2, 0
_080860B8: .4byte gUnknown_0839F288
thumb_func_end SpriteCB_PokeballGlowEffect
thumb_func_start PokeballGlowEffect_0
PokeballGlowEffect_0: @ 80860BC
push {r4,lr}
adds r4, r0, 0
ldrh r1, [r4, 0x30]
movs r2, 0x30
ldrsh r0, [r4, r2]
cmp r0, 0
beq _080860D4
subs r0, r1, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
cmp r0, 0
bne _08086130
_080860D4:
movs r0, 0x19
strh r0, [r4, 0x30]
ldr r0, _08086148 @ =gSpriteTemplate_839F208
ldr r1, _0808614C @ =gUnknown_0839F2A8
movs r2, 0x32
ldrsh r3, [r4, r2]
lsls r3, 2
adds r3, r1
ldrh r1, [r4, 0x24]
ldrh r2, [r3]
adds r1, r2
lsls r1, 16
asrs r1, 16
ldrh r2, [r4, 0x26]
ldrh r3, [r3, 0x2]
adds r2, r3
lsls r2, 16
asrs r2, 16
movs r3, 0
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r0, 24
ldr r2, _08086150 @ =gSprites
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
ldrb r2, [r1, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r2
movs r2, 0x8
orrs r0, r2
strb r0, [r1, 0x5]
ldrh r0, [r4, 0x3C]
strh r0, [r1, 0x2E]
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x3A]
subs r0, 0x1
strh r0, [r4, 0x3A]
movs r0, 0x17
bl PlaySE
_08086130:
movs r1, 0x3A
ldrsh r0, [r4, r1]
cmp r0, 0
bne _08086142
movs r0, 0x20
strh r0, [r4, 0x30]
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
_08086142:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08086148: .4byte gSpriteTemplate_839F208
_0808614C: .4byte gUnknown_0839F2A8
_08086150: .4byte gSprites
thumb_func_end PokeballGlowEffect_0
thumb_func_start PokeballGlowEffect_1
PokeballGlowEffect_1: @ 8086154
push {lr}
adds r1, r0, 0
ldrh r0, [r1, 0x30]
subs r0, 0x1
strh r0, [r1, 0x30]
lsls r0, 16
asrs r2, r0, 16
cmp r2, 0
bne _08086184
ldrh r0, [r1, 0x2E]
adds r0, 0x1
strh r0, [r1, 0x2E]
movs r0, 0x8
strh r0, [r1, 0x30]
strh r2, [r1, 0x32]
strh r2, [r1, 0x34]
movs r2, 0x38
ldrsh r0, [r1, r2]
cmp r0, 0
beq _08086184
movs r0, 0xB8
lsls r0, 1
bl PlayFanfare
_08086184:
pop {r0}
bx r0
thumb_func_end PokeballGlowEffect_1
thumb_func_start PokeballGlowEffect_2
PokeballGlowEffect_2: @ 8086188
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
adds r7, r0, 0
ldrh r0, [r7, 0x30]
subs r0, 0x1
strh r0, [r7, 0x30]
lsls r0, 16
cmp r0, 0
bne _080861B8
movs r0, 0x8
strh r0, [r7, 0x30]
ldrh r0, [r7, 0x32]
adds r0, 0x1
movs r1, 0x3
ands r0, r1
strh r0, [r7, 0x32]
cmp r0, 0
bne _080861B8
ldrh r0, [r7, 0x34]
adds r0, 0x1
strh r0, [r7, 0x34]
_080861B8:
ldrh r4, [r7, 0x32]
adds r4, 0x3
movs r0, 0x3
mov r8, r0
mov r1, r8
ands r4, r1
ldr r3, _080862B0 @ =0x00001007
mov r10, r3
mov r0, r10
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 4
movs r1, 0x84
lsls r1, 17
adds r0, r1
lsrs r0, 16
ldr r6, _080862B4 @ =gUnknown_0839F2C0
adds r1, r4, r6
ldrb r1, [r1]
ldr r5, _080862B8 @ =gUnknown_0839F2C4
adds r2, r4, r5
ldrb r2, [r2]
ldr r3, _080862BC @ =gUnknown_0839F2C8
mov r9, r3
add r4, r9
ldrb r3, [r4]
bl MultiplyInvertedPaletteRGBComponents
ldrh r4, [r7, 0x32]
adds r4, 0x2
mov r0, r8
ands r4, r0
mov r0, r10
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 4
movs r1, 0x83
lsls r1, 17
adds r0, r1
lsrs r0, 16
adds r1, r4, r6
ldrb r1, [r1]
adds r2, r4, r5
ldrb r2, [r2]
add r4, r9
ldrb r3, [r4]
bl MultiplyInvertedPaletteRGBComponents
ldrh r4, [r7, 0x32]
adds r4, 0x1
mov r3, r8
ands r4, r3
mov r0, r10
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 4
movs r1, 0x81
lsls r1, 17
adds r0, r1
lsrs r0, 16
adds r1, r4, r6
ldrb r1, [r1]
adds r2, r4, r5
ldrb r2, [r2]
add r4, r9
ldrb r3, [r4]
bl MultiplyInvertedPaletteRGBComponents
ldrh r4, [r7, 0x32]
lsls r4, 24
lsrs r4, 24
mov r0, r10
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 4
ldr r3, _080862C0 @ =0x01050000
adds r0, r3
lsrs r0, 16
adds r6, r4, r6
ldrb r6, [r6]
adds r5, r4, r5
ldrb r5, [r5]
add r4, r9
ldrb r4, [r4]
adds r1, r6, 0
adds r2, r5, 0
adds r3, r4, 0
bl MultiplyInvertedPaletteRGBComponents
mov r0, r10
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 4
ldr r1, _080862C4 @ =0x01030000
adds r0, r1
lsrs r0, 16
adds r1, r6, 0
adds r2, r5, 0
adds r3, r4, 0
bl MultiplyInvertedPaletteRGBComponents
movs r3, 0x34
ldrsh r0, [r7, r3]
cmp r0, 0x2
ble _080862A2
ldrh r0, [r7, 0x2E]
adds r0, 0x1
movs r1, 0
strh r0, [r7, 0x2E]
movs r0, 0x8
strh r0, [r7, 0x30]
strh r1, [r7, 0x32]
_080862A2:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080862B0: .4byte 0x00001007
_080862B4: .4byte gUnknown_0839F2C0
_080862B8: .4byte gUnknown_0839F2C4
_080862BC: .4byte gUnknown_0839F2C8
_080862C0: .4byte 0x01050000
_080862C4: .4byte 0x01030000
thumb_func_end PokeballGlowEffect_2
thumb_func_start PokeballGlowEffect_3
PokeballGlowEffect_3: @ 80862C8
push {r4-r6,lr}
mov r6, r8
push {r6}
adds r2, r0, 0
ldrh r0, [r2, 0x30]
subs r0, 0x1
strh r0, [r2, 0x30]
lsls r0, 16
cmp r0, 0
bne _080862F8
movs r0, 0x8
strh r0, [r2, 0x30]
ldrh r0, [r2, 0x32]
adds r0, 0x1
movs r1, 0x3
ands r0, r1
strh r0, [r2, 0x32]
cmp r0, 0x3
bne _080862F8
ldrh r0, [r2, 0x2E]
adds r0, 0x1
strh r0, [r2, 0x2E]
movs r0, 0x1E
strh r0, [r2, 0x30]
_080862F8:
ldrh r4, [r2, 0x32]
lsls r4, 24
lsrs r4, 24
ldr r0, _080863A4 @ =0x00001007
mov r8, r0
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 4
movs r1, 0x84
lsls r1, 17
adds r0, r1
lsrs r0, 16
ldr r1, _080863A8 @ =gUnknown_0839F2C0
adds r1, r4, r1
ldrb r6, [r1]
ldr r1, _080863AC @ =gUnknown_0839F2C4
adds r1, r4, r1
ldrb r5, [r1]
ldr r1, _080863B0 @ =gUnknown_0839F2C8
adds r4, r1
ldrb r4, [r4]
adds r1, r6, 0
adds r2, r5, 0
adds r3, r4, 0
bl MultiplyInvertedPaletteRGBComponents
mov r0, r8
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 4
movs r1, 0x83
lsls r1, 17
adds r0, r1
lsrs r0, 16
adds r1, r6, 0
adds r2, r5, 0
adds r3, r4, 0
bl MultiplyInvertedPaletteRGBComponents
mov r0, r8
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 4
movs r1, 0x81
lsls r1, 17
adds r0, r1
lsrs r0, 16
adds r1, r6, 0
adds r2, r5, 0
adds r3, r4, 0
bl MultiplyInvertedPaletteRGBComponents
mov r0, r8
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 4
ldr r1, _080863B4 @ =0x01050000
adds r0, r1
lsrs r0, 16
adds r1, r6, 0
adds r2, r5, 0
adds r3, r4, 0
bl MultiplyInvertedPaletteRGBComponents
mov r0, r8
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 4
ldr r1, _080863B8 @ =0x01030000
adds r0, r1
lsrs r0, 16
adds r1, r6, 0
adds r2, r5, 0
adds r3, r4, 0
bl MultiplyInvertedPaletteRGBComponents
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080863A4: .4byte 0x00001007
_080863A8: .4byte gUnknown_0839F2C0
_080863AC: .4byte gUnknown_0839F2C4
_080863B0: .4byte gUnknown_0839F2C8
_080863B4: .4byte 0x01050000
_080863B8: .4byte 0x01030000
thumb_func_end PokeballGlowEffect_3
thumb_func_start PokeballGlowEffect_4
PokeballGlowEffect_4: @ 80863BC
push {lr}
adds r1, r0, 0
ldrh r0, [r1, 0x30]
subs r0, 0x1
strh r0, [r1, 0x30]
lsls r0, 16
cmp r0, 0
bne _080863D2
ldrh r0, [r1, 0x2E]
adds r0, 0x1
strh r0, [r1, 0x2E]
_080863D2:
pop {r0}
bx r0
thumb_func_end PokeballGlowEffect_4
thumb_func_start PokeballGlowEffect_5
PokeballGlowEffect_5: @ 80863D8
ldrh r1, [r0, 0x2E]
adds r1, 0x1
strh r1, [r0, 0x2E]
bx lr
thumb_func_end PokeballGlowEffect_5
thumb_func_start PokeballGlowEffect_6
PokeballGlowEffect_6: @ 80863E0
push {r4,lr}
adds r4, r0, 0
movs r1, 0x38
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080863F6
bl IsFanfareTaskInactive
lsls r0, 24
cmp r0, 0
beq _080863FC
_080863F6:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
_080863FC:
pop {r4}
pop {r0}
bx r0
thumb_func_end PokeballGlowEffect_6
thumb_func_start PokeballGlowEffect_7
PokeballGlowEffect_7: @ 8086404
bx lr
thumb_func_end PokeballGlowEffect_7
thumb_func_start SpriteCB_PokeballGlow
SpriteCB_PokeballGlow: @ 8086408
push {lr}
adds r3, r0, 0
ldr r2, _0808642C @ =gSprites
movs r0, 0x2E
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0x2E
ldrsh r0, [r0, r1]
cmp r0, 0x4
ble _08086428
adds r0, r3, 0
bl FieldEffectFreeGraphicsResources
_08086428:
pop {r0}
bx r0
.align 2, 0
_0808642C: .4byte gSprites
thumb_func_end SpriteCB_PokeballGlow
thumb_func_start PokecenterHealEffectHelper
PokecenterHealEffectHelper: @ 8086430
push {r4,lr}
adds r3, r0, 0
adds r2, r1, 0
ldr r0, _08086480 @ =gSpriteTemplate_839F220
lsls r3, 16
asrs r3, 16
lsls r2, 16
asrs r2, 16
adds r1, r3, 0
movs r3, 0
bl CreateSpriteAtEnd
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
lsls r0, r4, 4
adds r0, r4
lsls r0, 2
ldr r1, _08086484 @ =gSprites
adds r0, r1
ldrb r2, [r0, 0x5]
movs r1, 0xD
negs r1, r1
ands r1, r2
movs r2, 0x8
orrs r1, r2
strb r1, [r0, 0x5]
adds r3, r0, 0
adds r3, 0x3E
ldrb r1, [r3]
movs r2, 0x4
orrs r1, r2
strb r1, [r3]
ldr r1, _08086488 @ =gUnknown_0839F1A0
bl SetSubspriteTables
adds r0, r4, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08086480: .4byte gSpriteTemplate_839F220
_08086484: .4byte gSprites
_08086488: .4byte gUnknown_0839F1A0
thumb_func_end PokecenterHealEffectHelper
thumb_func_start SpriteCB_PokecenterMonitor
SpriteCB_PokecenterMonitor: @ 808648C
push {r4,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080864B0
movs r0, 0
strh r0, [r4, 0x2E]
adds r2, r4, 0
adds r2, 0x3E
ldrb r1, [r2]
subs r0, 0x5
ands r0, r1
strb r0, [r2]
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAnim
_080864B0:
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080864C4
adds r0, r4, 0
bl FieldEffectFreeGraphicsResources
_080864C4:
pop {r4}
pop {r0}
bx r0
thumb_func_end SpriteCB_PokecenterMonitor
thumb_func_start HallOfFameRecordEffectHelper
HallOfFameRecordEffectHelper: @ 80864CC
push {r4,r5,lr}
lsls r0, 16
lsrs r5, r0, 16
lsls r1, 16
lsrs r1, 16
lsls r2, 16
lsrs r2, 16
lsls r3, 24
cmp r3, 0
bne _08086514
ldr r0, _08086508 @ =gSpriteTemplate_839F238
lsls r1, 16
asrs r1, 16
lsls r2, 16
asrs r2, 16
movs r3, 0
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r4, r0, 24
lsls r0, r4, 4
adds r0, r4
lsls r0, 2
ldr r1, _0808650C @ =gSprites
adds r0, r1
ldr r1, _08086510 @ =gUnknown_0839F1C8
bl SetSubspriteTables
b _08086528
.align 2, 0
_08086508: .4byte gSpriteTemplate_839F238
_0808650C: .4byte gSprites
_08086510: .4byte gUnknown_0839F1C8
_08086514:
ldr r0, _08086548 @ =gSpriteTemplate_839F250
lsls r1, 16
asrs r1, 16
lsls r2, 16
asrs r2, 16
movs r3, 0
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r4, r0, 24
_08086528:
ldr r1, _0808654C @ =gSprites
lsls r0, r4, 4
adds r0, r4
lsls r0, 2
adds r0, r1
adds r3, r0, 0
adds r3, 0x3E
ldrb r1, [r3]
movs r2, 0x4
orrs r1, r2
strb r1, [r3]
strh r5, [r0, 0x2E]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08086548: .4byte gSpriteTemplate_839F250
_0808654C: .4byte gSprites
thumb_func_end HallOfFameRecordEffectHelper
thumb_func_start SpriteCB_HallOfFameMonitor
SpriteCB_HallOfFameMonitor: @ 8086550
push {lr}
adds r3, r0, 0
ldr r2, _080865B8 @ =gTasks
movs r0, 0x2E
ldrsh r1, [r3, r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
movs r1, 0x26
ldrsh r0, [r0, r1]
cmp r0, 0
beq _080865A6
ldrh r1, [r3, 0x30]
movs r2, 0x30
ldrsh r0, [r3, r2]
cmp r0, 0
beq _0808657E
subs r0, r1, 0x1
strh r0, [r3, 0x30]
lsls r0, 16
cmp r0, 0
bne _080865A0
_0808657E:
movs r0, 0x10
strh r0, [r3, 0x30]
movs r0, 0x3E
adds r0, r3
mov r12, r0
ldrb r2, [r0]
lsls r0, r2, 29
lsrs r0, 31
movs r1, 0x1
eors r1, r0
lsls r1, 2
movs r0, 0x5
negs r0, r0
ands r0, r2
orrs r0, r1
mov r1, r12
strb r0, [r1]
_080865A0:
ldrh r0, [r3, 0x32]
adds r0, 0x1
strh r0, [r3, 0x32]
_080865A6:
movs r2, 0x32
ldrsh r0, [r3, r2]
cmp r0, 0x7F
ble _080865B4
adds r0, r3, 0
bl FieldEffectFreeGraphicsResources
_080865B4:
pop {r0}
bx r0
.align 2, 0
_080865B8: .4byte gTasks
thumb_func_end SpriteCB_HallOfFameMonitor
thumb_func_start sub_80865BC
sub_80865BC: @ 80865BC
push {lr}
ldr r0, _080865D0 @ =c2_exit_to_overworld_2_switch
bl SetMainCallback2
ldr r1, _080865D4 @ =gUnknown_0300485C
ldr r0, _080865D8 @ =mapldr_080842E8
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_080865D0: .4byte c2_exit_to_overworld_2_switch
_080865D4: .4byte gUnknown_0300485C
_080865D8: .4byte mapldr_080842E8
thumb_func_end sub_80865BC
thumb_func_start mapldr_080842E8
mapldr_080842E8: @ 80865DC
push {lr}
bl pal_fill_black
ldr r0, _080865FC @ =task00_8084310
movs r1, 0
bl CreateTask
bl ScriptContext2_Enable
bl FreezeMapObjects
ldr r1, _08086600 @ =gUnknown_0300485C
movs r0, 0
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_080865FC: .4byte task00_8084310
_08086600: .4byte gUnknown_0300485C
thumb_func_end mapldr_080842E8
thumb_func_start task00_8084310
task00_8084310: @ 8086604
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
ldr r1, _0808666C @ =gTasks
adds r4, r0, r1
movs r0, 0x8
ldrsh r5, [r4, r0]
cmp r5, 0
bne _08086640
bl sub_807D770
lsls r0, 24
cmp r0, 0
beq _08086666
ldr r1, _08086670 @ =gUnknown_0202FF84
ldr r0, _08086674 @ =gLastFieldPokeMenuOpened
ldrb r0, [r0]
str r0, [r1]
cmp r0, 0x5
ble _08086634
str r5, [r1]
_08086634:
movs r0, 0x1F
bl FieldEffectStart
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_08086640:
movs r0, 0x1F
bl FieldEffectActiveListContains
lsls r0, 24
cmp r0, 0
bne _08086666
bl flag_var_implications_of_teleport_
bl warp_in
ldr r0, _08086678 @ =CB2_LoadMap
bl SetMainCallback2
ldr r1, _0808667C @ =gUnknown_0300485C
ldr r0, _08086680 @ =mapldr_08084390
str r0, [r1]
adds r0, r6, 0
bl DestroyTask
_08086666:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0808666C: .4byte gTasks
_08086670: .4byte gUnknown_0202FF84
_08086674: .4byte gLastFieldPokeMenuOpened
_08086678: .4byte CB2_LoadMap
_0808667C: .4byte gUnknown_0300485C
_08086680: .4byte mapldr_08084390
thumb_func_end task00_8084310
thumb_func_start mapldr_08084390
mapldr_08084390: @ 8086684
push {r4,lr}
bl sub_8053E90
bl pal_fill_black
ldr r0, _080866DC @ =c3_080843F8
movs r1, 0
bl CreateTask
ldr r4, _080866E0 @ =gMapObjects
ldr r3, _080866E4 @ =gPlayerAvatar
ldrb r1, [r3, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
adds r0, r4
ldrb r1, [r0, 0x1]
movs r2, 0x20
orrs r1, r2
strb r1, [r0, 0x1]
ldrb r1, [r3]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _080866C6
ldrb r1, [r3, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
adds r0, r4
movs r1, 0x3
bl FieldObjectTurn
_080866C6:
bl ScriptContext2_Enable
bl FreezeMapObjects
ldr r1, _080866E8 @ =gUnknown_0300485C
movs r0, 0
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080866DC: .4byte c3_080843F8
_080866E0: .4byte gMapObjects
_080866E4: .4byte gPlayerAvatar
_080866E8: .4byte gUnknown_0300485C
thumb_func_end mapldr_08084390
thumb_func_start c3_080843F8
c3_080843F8: @ 80866EC
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
ldr r1, _08086740 @ =gTasks
adds r4, r0, r1
movs r1, 0x8
ldrsh r0, [r4, r1]
cmp r0, 0
bne _0808671E
ldr r0, _08086744 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _08086738
movs r0, 0x20
bl FieldEffectStart
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_0808671E:
movs r0, 0x20
bl FieldEffectActiveListContains
lsls r0, 24
cmp r0, 0
bne _08086738
bl ScriptContext2_Disable
bl UnfreezeMapObjects
adds r0, r5, 0
bl DestroyTask
_08086738:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08086740: .4byte gTasks
_08086744: .4byte gPaletteFade
thumb_func_end c3_080843F8
thumb_func_start sub_8086748
sub_8086748: @ 8086748
push {lr}
bl sub_8053E90
bl pal_fill_for_map_transition
bl ScriptContext2_Enable
bl FreezeMapObjects
ldr r0, _0808676C @ =sub_8086774
movs r1, 0
bl CreateTask
ldr r1, _08086770 @ =gUnknown_0300485C
movs r0, 0
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0808676C: .4byte sub_8086774
_08086770: .4byte gUnknown_0300485C
thumb_func_end sub_8086748
thumb_func_start sub_8086774
sub_8086774: @ 8086774
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _080867A4 @ =gTasks
adds r4, r1, r0
ldr r5, _080867A8 @ =gUnknown_0839F2CC
_08086786:
movs r1, 0x8
ldrsh r0, [r4, r1]
lsls r0, 2
adds r0, r5
ldr r1, [r0]
adds r0, r4, 0
bl _call_via_r1
lsls r0, 24
cmp r0, 0
bne _08086786
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080867A4: .4byte gTasks
_080867A8: .4byte gUnknown_0839F2CC
thumb_func_end sub_8086774
thumb_func_start sub_80867AC
sub_80867AC: @ 80867AC
push {r4-r6,lr}
mov r6, r9
mov r5, r8
push {r5,r6}
mov r9, r0
ldr r6, _08086848 @ =gPlayerAvatar
ldrb r0, [r6, 0x5]
lsls r5, r0, 3
adds r5, r0
lsls r5, 2
ldr r0, _0808684C @ =gMapObjects
mov r8, r0
add r5, r8
ldrb r0, [r6, 0x4]
lsls r4, r0, 4
adds r4, r0
lsls r4, 2
ldr r0, _08086850 @ =gSprites
adds r4, r0
bl CameraObjectReset2
ldrb r1, [r6, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
add r0, r8
ldrb r1, [r0, 0x1]
movs r2, 0x20
orrs r1, r2
strb r1, [r0, 0x1]
movs r0, 0x1
strb r0, [r6, 0x6]
bl player_get_direction_lower_nybble
lsls r0, 24
lsrs r0, 24
bl GetFaceDirectionAnimId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r5, 0
bl FieldObjectSetSpecialAnim
adds r3, r4, 0
adds r3, 0x42
ldrb r0, [r3]
lsrs r0, 6
mov r1, r9
strh r0, [r1, 0x10]
ldrb r0, [r5, 0x3]
movs r2, 0x4
orrs r0, r2
strb r0, [r5, 0x3]
ldrb r1, [r4, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r1
orrs r0, r2
strb r0, [r4, 0x5]
ldrb r1, [r3]
movs r0, 0x3F
ands r0, r1
movs r1, 0x80
orrs r0, r1
strb r0, [r3]
mov r1, r9
ldrh r0, [r1, 0x8]
adds r0, 0x1
strh r0, [r1, 0x8]
movs r0, 0x1
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08086848: .4byte gPlayerAvatar
_0808684C: .4byte gMapObjects
_08086850: .4byte gSprites
thumb_func_end sub_80867AC
thumb_func_start sub_8086854
sub_8086854: @ 8086854
push {r4,lr}
adds r4, r0, 0
bl sub_807D770
lsls r0, 24
cmp r0, 0
beq _08086868
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_08086868:
movs r0, 0
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8086854
thumb_func_start sub_8086870
sub_8086870: @ 8086870
push {r4-r6,lr}
adds r5, r0, 0
ldr r6, _080868D4 @ =gPlayerAvatar
ldrb r0, [r6, 0x4]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, _080868D8 @ =gSprites
adds r2, r0
adds r0, r2, 0
adds r0, 0x29
movs r4, 0
ldrsb r4, [r0, r4]
lsls r0, r4, 17
negs r0, r0
ldrh r1, [r2, 0x22]
ldr r3, _080868DC @ =gSpriteCoordOffsetY
adds r1, r4
ldrh r3, [r3]
adds r1, r3
asrs r0, 16
adds r0, r1
negs r0, r0
movs r1, 0
strh r0, [r2, 0x26]
movs r0, 0x1
strh r0, [r5, 0xA]
strh r1, [r5, 0xC]
ldr r2, _080868E0 @ =gMapObjects
ldrb r0, [r6, 0x5]
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
adds r1, r2
ldrb r2, [r1, 0x1]
movs r0, 0x21
negs r0, r0
ands r0, r2
strb r0, [r1, 0x1]
movs r0, 0x2B
bl PlaySE
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
movs r0, 0
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_080868D4: .4byte gPlayerAvatar
_080868D8: .4byte gSprites
_080868DC: .4byte gSpriteCoordOffsetY
_080868E0: .4byte gMapObjects
thumb_func_end sub_8086870
thumb_func_start sub_80868E4
sub_80868E4: @ 80868E4
push {r4-r6,lr}
adds r4, r0, 0
ldr r2, _08086990 @ =gPlayerAvatar
ldrb r1, [r2, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _08086994 @ =gMapObjects
adds r6, r0, r1
ldrb r1, [r2, 0x4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _08086998 @ =gSprites
adds r5, r0, r1
ldrh r0, [r4, 0xA]
ldrh r1, [r5, 0x26]
adds r0, r1
strh r0, [r5, 0x26]
ldrh r2, [r4, 0xA]
movs r1, 0xA
ldrsh r0, [r4, r1]
cmp r0, 0x7
bgt _08086926
ldrh r1, [r4, 0xC]
adds r0, r2, r1
strh r0, [r4, 0xC]
movs r1, 0xF
ands r0, r1
cmp r0, 0
beq _08086926
lsls r0, r2, 1
strh r0, [r4, 0xA]
_08086926:
ldrh r2, [r4, 0xE]
movs r1, 0xE
ldrsh r0, [r4, r1]
cmp r0, 0
bne _08086964
movs r0, 0x26
ldrsh r1, [r5, r0]
movs r0, 0x10
negs r0, r0
cmp r1, r0
blt _08086964
adds r0, r2, 0x1
strh r0, [r4, 0xE]
ldrb r1, [r6, 0x3]
movs r0, 0x5
negs r0, r0
ands r0, r1
strb r0, [r6, 0x3]
ldrb r1, [r4, 0x10]
adds r3, r5, 0
adds r3, 0x42
lsls r1, 6
ldrb r2, [r3]
movs r0, 0x3F
ands r0, r2
orrs r0, r1
strb r0, [r3]
ldrb r0, [r6]
movs r1, 0x4
orrs r0, r1
strb r0, [r6]
_08086964:
movs r1, 0x26
ldrsh r0, [r5, r1]
cmp r0, 0
blt _08086988
movs r0, 0xD6
bl PlaySE
ldrb r0, [r6]
movs r1, 0x8
orrs r0, r1
movs r1, 0x20
orrs r0, r1
strb r0, [r6]
movs r0, 0
strh r0, [r5, 0x26]
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_08086988:
movs r0, 0
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08086990: .4byte gPlayerAvatar
_08086994: .4byte gMapObjects
_08086998: .4byte gSprites
thumb_func_end sub_80868E4
thumb_func_start sub_808699C
sub_808699C: @ 808699C
push {lr}
ldrh r1, [r0, 0x8]
adds r1, 0x1
movs r2, 0
strh r1, [r0, 0x8]
movs r1, 0x4
strh r1, [r0, 0xA]
strh r2, [r0, 0xC]
movs r0, 0
bl SetCameraPanningCallback
movs r0, 0x1
pop {r1}
bx r1
thumb_func_end sub_808699C
thumb_func_start sub_80869B8
sub_80869B8: @ 80869B8
push {r4,lr}
adds r4, r0, 0
movs r0, 0xA
ldrsh r1, [r4, r0]
movs r0, 0
bl SetCameraPanning
ldrh r0, [r4, 0xA]
negs r2, r0
strh r2, [r4, 0xA]
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
movs r1, 0x3
ands r0, r1
cmp r0, 0
bne _080869E0
lsls r0, r2, 16
asrs r0, 17
strh r0, [r4, 0xA]
_080869E0:
movs r1, 0xA
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080869EE
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_080869EE:
movs r0, 0
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80869B8
thumb_func_start sub_80869F8
sub_80869F8: @ 80869F8
push {lr}
ldr r1, _08086A24 @ =gPlayerAvatar
movs r0, 0
strb r0, [r1, 0x6]
bl ScriptContext2_Disable
bl CameraObjectReset1
bl UnfreezeMapObjects
bl InstallCameraPanAheadCallback
ldr r0, _08086A28 @ =sub_8086774
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
movs r0, 0
pop {r1}
bx r1
.align 2, 0
_08086A24: .4byte gPlayerAvatar
_08086A28: .4byte sub_8086774
thumb_func_end sub_80869F8
thumb_func_start sub_8086A2C
sub_8086A2C: @ 8086A2C
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
lsls r1, 24
lsrs r1, 24
ldr r0, _08086A60 @ =sub_8086A68
bl CreateTask
lsls r0, 24
lsrs r0, 24
ldr r2, _08086A64 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
movs r0, 0
strh r0, [r1, 0xA]
cmp r4, 0x6A
bne _08086A58
movs r0, 0x1
strh r0, [r1, 0xA]
_08086A58:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08086A60: .4byte sub_8086A68
_08086A64: .4byte gTasks
thumb_func_end sub_8086A2C
thumb_func_start sub_8086A68
sub_8086A68: @ 8086A68
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _08086A98 @ =gTasks
adds r4, r1, r0
ldr r5, _08086A9C @ =gUnknown_0839F2E8
_08086A7A:
movs r1, 0x8
ldrsh r0, [r4, r1]
lsls r0, 2
adds r0, r5
ldr r1, [r0]
adds r0, r4, 0
bl _call_via_r1
lsls r0, 24
cmp r0, 0
bne _08086A7A
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08086A98: .4byte gTasks
_08086A9C: .4byte gUnknown_0839F2E8
thumb_func_end sub_8086A68
thumb_func_start sub_8086AA0
sub_8086AA0: @ 8086AA0
push {r4,lr}
adds r4, r0, 0
bl FreezeMapObjects
bl CameraObjectReset2
ldrb r0, [r4, 0xA]
bl sub_80B4824
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
movs r0, 0
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8086AA0
thumb_func_start sub_8086AC0
sub_8086AC0: @ 8086AC0
push {r4,r5,lr}
adds r5, r0, 0
ldr r0, _08086B28 @ =gPlayerAvatar
ldrb r1, [r0, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _08086B2C @ =gMapObjects
adds r4, r0, r1
adds r0, r4, 0
bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
lsls r0, 24
cmp r0, 0
beq _08086AEA
adds r0, r4, 0
bl FieldObjectClearAnimIfSpecialAnimFinished
lsls r0, 24
cmp r0, 0
beq _08086B1E
_08086AEA:
bl player_get_direction_lower_nybble
lsls r0, 24
lsrs r0, 24
bl GetFaceDirectionAnimId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl FieldObjectSetSpecialAnim
ldrh r0, [r5, 0x8]
adds r0, 0x1
movs r1, 0
strh r0, [r5, 0x8]
strh r1, [r5, 0xC]
strh r1, [r5, 0xE]
ldrb r0, [r5, 0xA]
cmp r0, 0
bne _08086B18
movs r0, 0x4
strh r0, [r5, 0x8]
_08086B18:
movs r0, 0x50
bl PlaySE
_08086B1E:
movs r0, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08086B28: .4byte gPlayerAvatar
_08086B2C: .4byte gMapObjects
thumb_func_end sub_8086AC0
thumb_func_start sub_8086B30
sub_8086B30: @ 8086B30
push {r4,lr}
adds r4, r0, 0
bl sub_8086B98
movs r1, 0xC
ldrsh r0, [r4, r1]
cmp r0, 0x3
ble _08086B4A
bl sub_8086C30
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_08086B4A:
movs r0, 0
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8086B30
thumb_func_start sub_8086B54
sub_8086B54: @ 8086B54
push {lr}
bl sub_8086B98
bl sub_8086C40
movs r0, 0
pop {r1}
bx r1
thumb_func_end sub_8086B54
thumb_func_start sub_8086B64
sub_8086B64: @ 8086B64
push {r4,lr}
adds r4, r0, 0
bl sub_8086BE4
movs r1, 0xC
ldrsh r0, [r4, r1]
cmp r0, 0x3
ble _08086B7E
bl sub_8086C30
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_08086B7E:
movs r0, 0
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8086B64
thumb_func_start sub_8086B88
sub_8086B88: @ 8086B88
push {lr}
bl sub_8086BE4
bl sub_8086C40
movs r0, 0
pop {r1}
bx r1
thumb_func_end sub_8086B88
thumb_func_start sub_8086B98
sub_8086B98: @ 8086B98
push {r4,r5,lr}
adds r5, r0, 0
ldr r0, _08086BDC @ =gPlayerAvatar
ldrb r0, [r0, 0x4]
lsls r4, r0, 4
adds r4, r0
lsls r4, 2
ldr r0, _08086BE0 @ =gSprites
adds r4, r0
movs r0, 0xC
ldrsh r1, [r5, r0]
movs r0, 0x84
bl Cos
strh r0, [r4, 0x24]
movs r0, 0xC
ldrsh r1, [r5, r0]
movs r0, 0x94
bl Sin
strh r0, [r4, 0x26]
ldrh r0, [r5, 0xE]
adds r0, 0x1
strh r0, [r5, 0xE]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _08086BD6
ldrh r0, [r5, 0xC]
adds r0, 0x1
strh r0, [r5, 0xC]
_08086BD6:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08086BDC: .4byte gPlayerAvatar
_08086BE0: .4byte gSprites
thumb_func_end sub_8086B98
thumb_func_start sub_8086BE4
sub_8086BE4: @ 8086BE4
push {r4,r5,lr}
adds r5, r0, 0
ldr r0, _08086C28 @ =gPlayerAvatar
ldrb r0, [r0, 0x4]
lsls r4, r0, 4
adds r4, r0
lsls r4, 2
ldr r0, _08086C2C @ =gSprites
adds r4, r0
movs r0, 0xC
ldrsh r1, [r5, r0]
movs r0, 0x7C
bl Cos
strh r0, [r4, 0x24]
movs r0, 0xC
ldrsh r1, [r5, r0]
movs r0, 0x76
bl Sin
strh r0, [r4, 0x26]
ldrh r0, [r5, 0xE]
adds r0, 0x1
strh r0, [r5, 0xE]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _08086C22
ldrh r0, [r5, 0xC]
adds r0, 0x1
strh r0, [r5, 0xC]
_08086C22:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08086C28: .4byte gPlayerAvatar
_08086C2C: .4byte gSprites
thumb_func_end sub_8086BE4
thumb_func_start sub_8086C30
sub_8086C30: @ 8086C30
push {lr}
bl sub_8053FF8
bl fade_8080918
pop {r0}
bx r0
thumb_func_end sub_8086C30
thumb_func_start sub_8086C40
sub_8086C40: @ 8086C40
push {lr}
ldr r0, _08086C80 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _08086C7C
bl sub_8054034
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _08086C7C
bl sub_80B483C
bl warp_in
ldr r1, _08086C84 @ =gUnknown_0300485C
ldr r0, _08086C88 @ =sub_8086C94
str r0, [r1]
ldr r0, _08086C8C @ =CB2_LoadMap
bl SetMainCallback2
ldr r0, _08086C90 @ =sub_8086A68
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
_08086C7C:
pop {r0}
bx r0
.align 2, 0
_08086C80: .4byte gPaletteFade
_08086C84: .4byte gUnknown_0300485C
_08086C88: .4byte sub_8086C94
_08086C8C: .4byte CB2_LoadMap
_08086C90: .4byte sub_8086A68
thumb_func_end sub_8086C40
thumb_func_start sub_8086C94
sub_8086C94: @ 8086C94
push {lr}
bl sub_8053E90
bl pal_fill_for_map_transition
bl ScriptContext2_Enable
ldr r0, _08086CB4 @ =sub_8086CBC
movs r1, 0
bl CreateTask
ldr r1, _08086CB8 @ =gUnknown_0300485C
movs r0, 0
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_08086CB4: .4byte sub_8086CBC
_08086CB8: .4byte gUnknown_0300485C
thumb_func_end sub_8086C94
thumb_func_start sub_8086CBC
sub_8086CBC: @ 8086CBC
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _08086CEC @ =gTasks
adds r4, r1, r0
ldr r5, _08086CF0 @ =gUnknown_0839F300
_08086CCE:
movs r1, 0x8
ldrsh r0, [r4, r1]
lsls r0, 2
adds r0, r5
ldr r1, [r0]
adds r0, r4, 0
bl _call_via_r1
lsls r0, 24
cmp r0, 0
bne _08086CCE
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08086CEC: .4byte gTasks
_08086CF0: .4byte gUnknown_0839F300
thumb_func_end sub_8086CBC
thumb_func_start sub_8086CF4
sub_8086CF4: @ 8086CF4
push {r4,r5,lr}
sub sp, 0x4
adds r5, r0, 0
bl CameraObjectReset2
ldr r0, _08086D54 @ =gPlayerAvatar
ldrb r0, [r0, 0x5]
lsls r4, r0, 3
adds r4, r0
lsls r4, 2
ldr r0, _08086D58 @ =gMapObjects
adds r4, r0
movs r0, 0x4
bl GetFaceDirectionAnimId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl FieldObjectSetSpecialAnim
mov r4, sp
adds r4, 0x2
mov r0, sp
adds r1, r4, 0
bl PlayerGetDestCoords
mov r0, sp
movs r1, 0
ldrsh r0, [r0, r1]
movs r2, 0
ldrsh r1, [r4, r2]
bl MapGridGetMetatileBehaviorAt
lsls r0, 24
lsrs r1, r0, 24
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
movs r0, 0x10
strh r0, [r5, 0xA]
cmp r1, 0x6B
bne _08086D5C
movs r1, 0x1
movs r0, 0x3
strh r0, [r5, 0x8]
b _08086D5E
.align 2, 0
_08086D54: .4byte gPlayerAvatar
_08086D58: .4byte gMapObjects
_08086D5C:
movs r1, 0
_08086D5E:
adds r0, r1, 0
bl sub_80B4824
movs r0, 0x1
add sp, 0x4
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_8086CF4
thumb_func_start sub_8086D70
sub_8086D70: @ 8086D70
push {r4,r5,lr}
adds r5, r0, 0
ldr r0, _08086DA8 @ =gPlayerAvatar
ldrb r0, [r0, 0x4]
lsls r4, r0, 4
adds r4, r0
lsls r4, 2
ldr r0, _08086DAC @ =gSprites
adds r4, r0
movs r0, 0xA
ldrsh r1, [r5, r0]
movs r0, 0x84
bl Cos
strh r0, [r4, 0x24]
movs r0, 0xA
ldrsh r1, [r5, r0]
movs r0, 0x94
bl Sin
strh r0, [r4, 0x26]
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
movs r0, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08086DA8: .4byte gPlayerAvatar
_08086DAC: .4byte gSprites
thumb_func_end sub_8086D70
thumb_func_start sub_8086DB0
sub_8086DB0: @ 8086DB0
push {r4,r5,lr}
adds r4, r0, 0
ldr r0, _08086E08 @ =gPlayerAvatar
ldrb r1, [r0, 0x4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _08086E0C @ =gSprites
adds r5, r0, r1
movs r0, 0xA
ldrsh r1, [r4, r0]
movs r0, 0x84
bl Cos
strh r0, [r5, 0x24]
movs r0, 0xA
ldrsh r1, [r4, r0]
movs r0, 0x94
bl Sin
strh r0, [r5, 0x26]
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _08086DEE
ldrh r0, [r4, 0xA]
subs r0, 0x1
strh r0, [r4, 0xA]
_08086DEE:
movs r1, 0xA
ldrsh r0, [r4, r1]
cmp r0, 0
bne _08086DFE
strh r0, [r5, 0x24]
strh r0, [r5, 0x26]
movs r0, 0x5
strh r0, [r4, 0x8]
_08086DFE:
movs r0, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08086E08: .4byte gPlayerAvatar
_08086E0C: .4byte gSprites
thumb_func_end sub_8086DB0
thumb_func_start sub_8086E10
sub_8086E10: @ 8086E10
push {r4,r5,lr}
adds r5, r0, 0
ldr r0, _08086E48 @ =gPlayerAvatar
ldrb r0, [r0, 0x4]
lsls r4, r0, 4
adds r4, r0
lsls r4, 2
ldr r0, _08086E4C @ =gSprites
adds r4, r0
movs r0, 0xA
ldrsh r1, [r5, r0]
movs r0, 0x7C
bl Cos
strh r0, [r4, 0x24]
movs r0, 0xA
ldrsh r1, [r5, r0]
movs r0, 0x76
bl Sin
strh r0, [r4, 0x26]
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
movs r0, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08086E48: .4byte gPlayerAvatar
_08086E4C: .4byte gSprites
thumb_func_end sub_8086E10
thumb_func_start sub_8086E50
sub_8086E50: @ 8086E50
push {r4,r5,lr}
adds r4, r0, 0
ldr r0, _08086EA8 @ =gPlayerAvatar
ldrb r1, [r0, 0x4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _08086EAC @ =gSprites
adds r5, r0, r1
movs r0, 0xA
ldrsh r1, [r4, r0]
movs r0, 0x7C
bl Cos
strh r0, [r5, 0x24]
movs r0, 0xA
ldrsh r1, [r4, r0]
movs r0, 0x76
bl Sin
strh r0, [r5, 0x26]
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _08086E8E
ldrh r0, [r4, 0xA]
subs r0, 0x1
strh r0, [r4, 0xA]
_08086E8E:
movs r1, 0xA
ldrsh r0, [r4, r1]
cmp r0, 0
bne _08086EA0
strh r0, [r5, 0x24]
strh r0, [r5, 0x26]
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_08086EA0:
movs r0, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08086EA8: .4byte gPlayerAvatar
_08086EAC: .4byte gSprites
thumb_func_end sub_8086E50
thumb_func_start sub_8086EB0
sub_8086EB0: @ 8086EB0
push {r4,lr}
adds r4, r0, 0
bl sub_80B4850
lsls r0, 24
cmp r0, 0
bne _08086ECC
bl sub_80B483C
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
movs r0, 0x1
b _08086ECE
_08086ECC:
movs r0, 0
_08086ECE:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8086EB0
thumb_func_start sub_8086ED4
sub_8086ED4: @ 8086ED4
push {r4,lr}
ldr r0, _08086F20 @ =gPlayerAvatar
ldrb r1, [r0, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _08086F24 @ =gMapObjects
adds r4, r0, r1
adds r0, r4, 0
bl FieldObjectClearAnimIfSpecialAnimFinished
lsls r0, 24
cmp r0, 0
beq _08086F18
bl CameraObjectReset1
bl ScriptContext2_Disable
movs r0, 0x4
bl GetGoSpeed0AnimId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl FieldObjectSetSpecialAnim
ldr r0, _08086F28 @ =sub_8086CBC
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
_08086F18:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08086F20: .4byte gPlayerAvatar
_08086F24: .4byte gMapObjects
_08086F28: .4byte sub_8086CBC
thumb_func_end sub_8086ED4
thumb_func_start FldEff_UseWaterfall
FldEff_UseWaterfall: @ 8086F2C
push {r4,lr}
ldr r4, _08086F58 @ =sub_8086F64
adds r0, r4, 0
movs r1, 0xFF
bl CreateTask
lsls r0, 24
lsrs r0, 24
ldr r2, _08086F5C @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
ldr r2, _08086F60 @ =gUnknown_0202FF84
ldr r2, [r2]
strh r2, [r1, 0xA]
bl _call_via_r4
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08086F58: .4byte sub_8086F64
_08086F5C: .4byte gTasks
_08086F60: .4byte gUnknown_0202FF84
thumb_func_end FldEff_UseWaterfall
thumb_func_start sub_8086F64
sub_8086F64: @ 8086F64
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
ldr r5, _08086FA0 @ =gUnknown_0839F31C
ldr r2, _08086FA4 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r4, r1, r2
_08086F76:
movs r0, 0x8
ldrsh r2, [r4, r0]
lsls r2, 2
adds r2, r5
ldr r0, _08086FA8 @ =gPlayerAvatar
ldrb r0, [r0, 0x5]
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
ldr r0, _08086FAC @ =gMapObjects
adds r1, r0
ldr r2, [r2]
adds r0, r4, 0
bl _call_via_r2
lsls r0, 24
cmp r0, 0
bne _08086F76
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08086FA0: .4byte gUnknown_0839F31C
_08086FA4: .4byte gTasks
_08086FA8: .4byte gPlayerAvatar
_08086FAC: .4byte gMapObjects
thumb_func_end sub_8086F64
thumb_func_start sub_8086FB0
sub_8086FB0: @ 8086FB0
push {r4,lr}
adds r4, r0, 0
bl ScriptContext2_Enable
ldr r1, _08086FCC @ =gPlayerAvatar
movs r0, 0x1
strb r0, [r1, 0x6]
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08086FCC: .4byte gPlayerAvatar
thumb_func_end sub_8086FB0
thumb_func_start waterfall_1_do_anim_probably
waterfall_1_do_anim_probably: @ 8086FD0
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
bl ScriptContext2_Enable
adds r0, r5, 0
bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
lsls r0, 24
cmp r0, 0
bne _08087000
adds r0, r5, 0
bl FieldObjectClearAnimIfSpecialAnimFinished
ldr r1, _08087008 @ =gUnknown_0202FF84
movs r2, 0xA
ldrsh r0, [r4, r2]
str r0, [r1]
movs r0, 0x3B
bl FieldEffectStart
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_08087000:
movs r0, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08087008: .4byte gUnknown_0202FF84
thumb_func_end waterfall_1_do_anim_probably
thumb_func_start waterfall_2_wait_anim_finish_probably
waterfall_2_wait_anim_finish_probably: @ 808700C
push {r4,lr}
adds r4, r0, 0
movs r0, 0x6
bl FieldEffectActiveListContains
lsls r0, 24
cmp r0, 0
bne _08087026
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
movs r0, 0x1
b _08087028
_08087026:
movs r0, 0
_08087028:
pop {r4}
pop {r1}
bx r1
thumb_func_end waterfall_2_wait_anim_finish_probably
thumb_func_start sub_8087030
sub_8087030: @ 8087030
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
movs r0, 0x2
bl GetSimpleGoAnimId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl FieldObjectSetSpecialAnim
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
movs r0, 0
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_8087030
thumb_func_start sub_8087058
sub_8087058: @ 8087058
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
adds r0, r4, 0
bl FieldObjectClearAnimIfSpecialAnimFinished
lsls r0, 24
cmp r0, 0
bne _0808706E
movs r0, 0
b _080870AA
_0808706E:
ldrb r0, [r4, 0x1E]
bl MetatileBehavior_IsWaterfall
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0
bne _080870A4
bl ScriptContext2_Disable
ldr r0, _0808709C @ =gPlayerAvatar
strb r4, [r0, 0x6]
ldr r0, _080870A0 @ =sub_8086F64
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
movs r0, 0x2B
bl FieldEffectActiveListRemove
movs r0, 0
b _080870AA
.align 2, 0
_0808709C: .4byte gPlayerAvatar
_080870A0: .4byte sub_8086F64
_080870A4:
movs r0, 0x3
strh r0, [r5, 0x8]
movs r0, 0x1
_080870AA:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_8087058
thumb_func_start FldEff_UseDive
FldEff_UseDive: @ 80870B0
push {r4,lr}
ldr r4, _080870E0 @ =Task_Dive
adds r0, r4, 0
movs r1, 0xFF
bl CreateTask
lsls r0, 24
lsrs r0, 24
ldr r2, _080870E4 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
ldr r3, _080870E8 @ =gUnknown_0202FF84
ldr r2, [r3]
strh r2, [r1, 0x26]
ldr r2, [r3, 0x4]
strh r2, [r1, 0x24]
bl _call_via_r4
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080870E0: .4byte Task_Dive
_080870E4: .4byte gTasks
_080870E8: .4byte gUnknown_0202FF84
thumb_func_end FldEff_UseDive
thumb_func_start Task_Dive
Task_Dive: @ 80870EC
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
ldr r5, _0808711C @ =gUnknown_0839F330
ldr r2, _08087120 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r4, r1, r2
_080870FE:
movs r1, 0x8
ldrsh r0, [r4, r1]
lsls r0, 2
adds r0, r5
ldr r1, [r0]
adds r0, r4, 0
bl _call_via_r1
lsls r0, 24
cmp r0, 0
bne _080870FE
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0808711C: .4byte gUnknown_0839F330
_08087120: .4byte gTasks
thumb_func_end Task_Dive
thumb_func_start sub_8087124
sub_8087124: @ 8087124
ldr r2, _08087134 @ =gPlayerAvatar
movs r1, 0x1
strb r1, [r2, 0x6]
ldrh r1, [r0, 0x8]
adds r1, 0x1
strh r1, [r0, 0x8]
movs r0, 0
bx lr
.align 2, 0
_08087134: .4byte gPlayerAvatar
thumb_func_end sub_8087124
thumb_func_start dive_2_unknown
dive_2_unknown: @ 8087138
push {r4,lr}
adds r4, r0, 0
bl ScriptContext2_Enable
ldr r1, _0808715C @ =gUnknown_0202FF84
movs r2, 0x26
ldrsh r0, [r4, r2]
str r0, [r1]
movs r0, 0x3B
bl FieldEffectStart
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0808715C: .4byte gUnknown_0202FF84
thumb_func_end dive_2_unknown
thumb_func_start dive_3_unknown
dive_3_unknown: @ 8087160
push {lr}
sub sp, 0x8
mov r1, sp
adds r1, 0x2
mov r0, sp
bl PlayerGetDestCoords
movs r0, 0x6
bl FieldEffectActiveListContains
lsls r0, 24
cmp r0, 0
bne _080871A4
ldr r2, _080871AC @ =gMapObjects
ldr r0, _080871B0 @ =gPlayerAvatar
ldrb r1, [r0, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0, 0x1E]
mov r0, sp
bl dive_warp
ldr r0, _080871B4 @ =Task_Dive
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
movs r0, 0x2C
bl FieldEffectActiveListRemove
_080871A4:
movs r0, 0
add sp, 0x8
pop {r1}
bx r1
.align 2, 0
_080871AC: .4byte gMapObjects
_080871B0: .4byte gPlayerAvatar
_080871B4: .4byte Task_Dive
thumb_func_end dive_3_unknown
thumb_func_start sub_80871B8
sub_80871B8: @ 80871B8
push {lr}
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r0, _080871CC @ =sub_80871D0
bl CreateTask
pop {r0}
bx r0
.align 2, 0
_080871CC: .4byte sub_80871D0
thumb_func_end sub_80871B8
thumb_func_start sub_80871D0
sub_80871D0: @ 80871D0
push {r4-r6,lr}
lsls r0, 24
lsrs r0, 24
ldr r6, _08087218 @ =gUnknown_0839F33C
ldr r2, _0808721C @ =gTasks
ldr r5, _08087220 @ =gPlayerAvatar
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r4, r1, r2
_080871E4:
movs r0, 0x8
ldrsh r3, [r4, r0]
lsls r3, 2
adds r3, r6
ldrb r0, [r5, 0x5]
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
ldr r0, _08087224 @ =gMapObjects
adds r1, r0
ldrb r0, [r5, 0x4]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, _08087228 @ =gSprites
adds r2, r0
ldr r3, [r3]
adds r0, r4, 0
bl _call_via_r3
lsls r0, 24
cmp r0, 0
bne _080871E4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08087218: .4byte gUnknown_0839F33C
_0808721C: .4byte gTasks
_08087220: .4byte gPlayerAvatar
_08087224: .4byte gMapObjects
_08087228: .4byte gSprites
thumb_func_end sub_80871D0
thumb_func_start sub_808722C
sub_808722C: @ 808722C
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
bl FreezeMapObjects
bl CameraObjectReset2
movs r0, 0
bl SetCameraPanningCallback
ldr r0, _08087260 @ =gPlayerAvatar
movs r2, 0x1
strb r2, [r0, 0x6]
ldrb r0, [r5, 0x3]
movs r1, 0x4
orrs r0, r1
strb r0, [r5, 0x3]
strh r2, [r4, 0xA]
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
movs r0, 0x1
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08087260: .4byte gPlayerAvatar
thumb_func_end sub_808722C
thumb_func_start sub_8087264
sub_8087264: @ 8087264
push {r4,lr}
adds r4, r0, 0
movs r0, 0xA
ldrsh r1, [r4, r0]
movs r0, 0
bl SetCameraPanning
ldrh r0, [r4, 0xA]
negs r0, r0
strh r0, [r4, 0xA]
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0x7
ble _08087290
movs r0, 0
strh r0, [r4, 0xC]
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_08087290:
movs r0, 0
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8087264
thumb_func_start sub_8087298
sub_8087298: @ 8087298
push {r4,r5,lr}
adds r4, r0, 0
movs r0, 0
strh r0, [r2, 0x26]
movs r0, 0x1
strh r0, [r4, 0xE]
ldr r3, _080872E0 @ =gUnknown_0202FF84
movs r5, 0x10
ldrsh r0, [r1, r5]
str r0, [r3]
movs r5, 0x12
ldrsh r0, [r1, r5]
str r0, [r3, 0x4]
adds r0, r2, 0
adds r0, 0x43
ldrb r0, [r0]
subs r0, 0x1
str r0, [r3, 0x8]
ldrb r0, [r2, 0x5]
lsls r0, 28
lsrs r0, 30
str r0, [r3, 0xC]
movs r0, 0x32
bl FieldEffectStart
movs r0, 0xB2
bl PlaySE
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
movs r0, 0x1
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_080872E0: .4byte gUnknown_0202FF84
thumb_func_end sub_8087298
thumb_func_start sub_80872E4
sub_80872E4: @ 80872E4
push {r4-r7,lr}
adds r4, r0, 0
adds r6, r1, 0
adds r5, r2, 0
movs r0, 0xA
ldrsh r1, [r4, r0]
movs r0, 0
bl SetCameraPanning
ldrh r0, [r4, 0xA]
negs r2, r0
strh r2, [r4, 0xA]
ldrh r0, [r4, 0xC]
adds r1, r0, 0x1
strh r1, [r4, 0xC]
lsls r0, r1, 16
asrs r0, 16
cmp r0, 0x11
bgt _0808731E
movs r0, 0x1
ands r1, r0
cmp r1, 0
bne _08087330
lsls r0, r2, 16
asrs r0, 16
cmp r0, 0x3
bgt _08087330
lsls r0, r2, 1
b _0808732E
_0808731E:
movs r0, 0x4
ands r1, r0
cmp r1, 0
bne _08087330
lsls r0, r2, 16
cmp r0, 0
ble _08087330
asrs r0, 17
_0808732E:
strh r0, [r4, 0xA]
_08087330:
movs r1, 0xC
ldrsh r0, [r4, r1]
cmp r0, 0x6
ble _0808737C
adds r0, r5, 0
adds r0, 0x29
movs r1, 0
ldrsb r1, [r0, r1]
lsls r2, r1, 17
negs r2, r2
movs r7, 0x26
ldrsh r3, [r5, r7]
movs r7, 0x22
ldrsh r0, [r5, r7]
adds r0, r1
ldr r1, _08087374 @ =gSpriteCoordOffsetY
movs r7, 0
ldrsh r1, [r1, r7]
adds r0, r1
asrs r2, 16
adds r0, r2
cmn r3, r0
ble _08087378
ldrh r0, [r5, 0x26]
ldrh r1, [r4, 0xE]
subs r0, r1
strh r0, [r5, 0x26]
lsls r0, r1, 16
asrs r0, 16
cmp r0, 0x7
bgt _0808737C
adds r0, r1, 0x1
strh r0, [r4, 0xE]
b _0808737C
.align 2, 0
_08087374: .4byte gSpriteCoordOffsetY
_08087378:
movs r0, 0x1
strh r0, [r4, 0x10]
_0808737C:
ldrh r2, [r4, 0x12]
movs r1, 0x12
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080873BA
movs r7, 0x26
ldrsh r1, [r5, r7]
movs r0, 0x10
negs r0, r0
cmp r1, r0
bge _080873BA
adds r0, r2, 0x1
strh r0, [r4, 0x12]
ldrb r0, [r6, 0x3]
movs r2, 0x4
orrs r0, r2
strb r0, [r6, 0x3]
ldrb r1, [r5, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r1
orrs r0, r2
strb r0, [r5, 0x5]
adds r2, r5, 0
adds r2, 0x42
ldrb r1, [r2]
movs r0, 0x3F
ands r0, r1
movs r1, 0x80
orrs r0, r1
strb r0, [r2]
_080873BA:
movs r1, 0xA
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080873D0
movs r7, 0x10
ldrsh r0, [r4, r7]
cmp r0, 0
beq _080873D0
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_080873D0:
movs r0, 0
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80872E4
thumb_func_start sub_80873D8
sub_80873D8: @ 80873D8
push {r4,lr}
adds r4, r0, 0
bl sub_8053FF8
bl fade_8080918
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
movs r0, 0
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80873D8
thumb_func_start sub_80873F4
sub_80873F4: @ 80873F4
push {lr}
ldr r0, _08087434 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _0808742C
bl sub_8054034
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0808742C
bl warp_in
ldr r1, _08087438 @ =gUnknown_0300485C
ldr r0, _0808743C @ =mapldr_080851BC
str r0, [r1]
ldr r0, _08087440 @ =CB2_LoadMap
bl SetMainCallback2
ldr r0, _08087444 @ =sub_80871D0
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
_0808742C:
movs r0, 0
pop {r1}
bx r1
.align 2, 0
_08087434: .4byte gPaletteFade
_08087438: .4byte gUnknown_0300485C
_0808743C: .4byte mapldr_080851BC
_08087440: .4byte CB2_LoadMap
_08087444: .4byte sub_80871D0
thumb_func_end sub_80873F4
thumb_func_start mapldr_080851BC
mapldr_080851BC: @ 8087448
push {lr}
bl sub_8053E90
bl pal_fill_for_map_transition
bl ScriptContext2_Enable
ldr r0, _08087468 @ =gUnknown_0300485C
movs r1, 0
str r1, [r0]
ldr r0, _0808746C @ =sub_8087470
bl CreateTask
pop {r0}
bx r0
.align 2, 0
_08087468: .4byte gUnknown_0300485C
_0808746C: .4byte sub_8087470
thumb_func_end mapldr_080851BC
thumb_func_start sub_8087470
sub_8087470: @ 8087470
push {r4-r6,lr}
lsls r0, 24
lsrs r0, 24
ldr r6, _080874B8 @ =gUnknown_0839F354
ldr r2, _080874BC @ =gTasks
ldr r5, _080874C0 @ =gPlayerAvatar
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r4, r1, r2
_08087484:
movs r0, 0x8
ldrsh r3, [r4, r0]
lsls r3, 2
adds r3, r6
ldrb r0, [r5, 0x5]
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
ldr r0, _080874C4 @ =gMapObjects
adds r1, r0
ldrb r0, [r5, 0x4]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, _080874C8 @ =gSprites
adds r2, r0
ldr r3, [r3]
adds r0, r4, 0
bl _call_via_r3
lsls r0, 24
cmp r0, 0
bne _08087484
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080874B8: .4byte gUnknown_0839F354
_080874BC: .4byte gTasks
_080874C0: .4byte gPlayerAvatar
_080874C4: .4byte gMapObjects
_080874C8: .4byte gSprites
thumb_func_end sub_8087470
thumb_func_start sub_80874CC
sub_80874CC: @ 80874CC
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
bl CameraObjectReset2
bl FreezeMapObjects
ldr r1, _080874F8 @ =gPlayerAvatar
movs r0, 0x1
strb r0, [r1, 0x6]
ldrb r0, [r4, 0x1]
movs r1, 0x20
orrs r0, r1
strb r0, [r4, 0x1]
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
movs r0, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_080874F8: .4byte gPlayerAvatar
thumb_func_end sub_80874CC
thumb_func_start sub_80874FC
sub_80874FC: @ 80874FC
push {r4-r6,lr}
adds r4, r0, 0
adds r5, r1, 0
adds r6, r2, 0
bl sub_807D770
lsls r0, 24
cmp r0, 0
beq _0808753C
ldr r1, _08087544 @ =gUnknown_0202FF84
movs r2, 0x10
ldrsh r0, [r5, r2]
str r0, [r1]
movs r2, 0x12
ldrsh r0, [r5, r2]
str r0, [r1, 0x4]
adds r0, r6, 0
adds r0, 0x43
ldrb r0, [r0]
subs r0, 0x1
str r0, [r1, 0x8]
ldrb r0, [r6, 0x5]
lsls r0, 28
lsrs r0, 30
str r0, [r1, 0xC]
movs r0, 0x31
bl FieldEffectStart
strh r0, [r4, 0xA]
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_0808753C:
movs r0, 0
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08087544: .4byte gUnknown_0202FF84
thumb_func_end sub_80874FC
thumb_func_start sub_8087548
sub_8087548: @ 8087548
push {r4,lr}
adds r2, r0, 0
adds r4, r1, 0
movs r0, 0xA
ldrsh r1, [r2, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _08087598 @ =gSprites
adds r0, r1
adds r0, 0x2B
ldrb r0, [r0]
cmp r0, 0x1
bls _08087590
ldrh r0, [r2, 0x8]
adds r0, 0x1
strh r0, [r2, 0x8]
ldrb r1, [r4, 0x1]
movs r0, 0x21
negs r0, r0
ands r0, r1
strb r0, [r4, 0x1]
bl CameraObjectReset1
movs r0, 0xAF
bl PlaySE
movs r0, 0x4
bl sub_80608A4
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl FieldObjectSetSpecialAnim
_08087590:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08087598: .4byte gSprites
thumb_func_end sub_8087548
thumb_func_start sub_808759C
sub_808759C: @ 808759C
push {lr}
adds r0, r1, 0
bl FieldObjectClearAnimIfSpecialAnimFinished
lsls r0, 24
cmp r0, 0
beq _080875C6
ldr r1, _080875CC @ =gPlayerAvatar
movs r0, 0
strb r0, [r1, 0x6]
bl ScriptContext2_Disable
bl UnfreezeMapObjects
ldr r0, _080875D0 @ =sub_8087470
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
_080875C6:
movs r0, 0
pop {r1}
bx r1
.align 2, 0
_080875CC: .4byte gPlayerAvatar
_080875D0: .4byte sub_8087470
thumb_func_end sub_808759C
thumb_func_start FldEff_LavaridgeGymWarp
FldEff_LavaridgeGymWarp: @ 80875D4
push {r4,lr}
ldr r4, _0808762C @ =gUnknown_0202FF84
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0x8
bl sub_8060470
ldr r0, _08087630 @ =gFieldEffectObjectTemplatePointers
adds r0, 0x84
ldr r0, [r0]
movs r2, 0
ldrsh r1, [r4, r2]
movs r3, 0x4
ldrsh r2, [r4, r3]
ldrb r3, [r4, 0x8]
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r0, 24
ldr r1, _08087634 @ =gSprites
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r1
movs r1, 0x3
ldrb r3, [r4, 0xC]
ands r3, r1
lsls r3, 2
ldrb r4, [r2, 0x5]
movs r1, 0xD
negs r1, r1
ands r1, r4
orrs r1, r3
strb r1, [r2, 0x5]
adds r2, 0x3E
ldrb r1, [r2]
movs r3, 0x2
orrs r1, r3
strb r1, [r2]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0808762C: .4byte gUnknown_0202FF84
_08087630: .4byte gFieldEffectObjectTemplatePointers
_08087634: .4byte gSprites
thumb_func_end FldEff_LavaridgeGymWarp
thumb_func_start sub_8087638
sub_8087638: @ 8087638
push {lr}
adds r2, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _08087650
adds r0, r2, 0
movs r1, 0x32
bl FieldEffectStop
_08087650:
pop {r0}
bx r0
thumb_func_end sub_8087638
thumb_func_start sub_8087654
sub_8087654: @ 8087654
push {lr}
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r0, _08087668 @ =sub_808766C
bl CreateTask
pop {r0}
bx r0
.align 2, 0
_08087668: .4byte sub_808766C
thumb_func_end sub_8087654
thumb_func_start sub_808766C
sub_808766C: @ 808766C
push {r4-r6,lr}
lsls r0, 24
lsrs r0, 24
ldr r6, _080876B4 @ =gUnknown_0839F364
ldr r2, _080876B8 @ =gTasks
ldr r5, _080876BC @ =gPlayerAvatar
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r4, r1, r2
_08087680:
movs r0, 0x8
ldrsh r3, [r4, r0]
lsls r3, 2
adds r3, r6
ldrb r0, [r5, 0x5]
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
ldr r0, _080876C0 @ =gMapObjects
adds r1, r0
ldrb r0, [r5, 0x4]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, _080876C4 @ =gSprites
adds r2, r0
ldr r3, [r3]
adds r0, r4, 0
bl _call_via_r3
lsls r0, 24
cmp r0, 0
bne _08087680
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080876B4: .4byte gUnknown_0839F364
_080876B8: .4byte gTasks
_080876BC: .4byte gPlayerAvatar
_080876C0: .4byte gMapObjects
_080876C4: .4byte gSprites
thumb_func_end sub_808766C
thumb_func_start sub_80876C8
sub_80876C8: @ 80876C8
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
bl FreezeMapObjects
bl CameraObjectReset2
ldr r1, _080876F4 @ =gPlayerAvatar
movs r0, 0x1
strb r0, [r1, 0x6]
ldrb r0, [r4, 0x3]
movs r1, 0x4
orrs r0, r1
strb r0, [r4, 0x3]
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
movs r0, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_080876F4: .4byte gPlayerAvatar
thumb_func_end sub_80876C8
thumb_func_start sub_80876F8
sub_80876F8: @ 80876F8
push {r4-r6,lr}
adds r5, r0, 0
adds r4, r1, 0
adds r6, r2, 0
adds r0, r4, 0
bl FieldObjectClearAnimIfSpecialAnimFinished
lsls r0, 24
cmp r0, 0
beq _0808776C
ldrh r1, [r5, 0xA]
movs r2, 0xA
ldrsh r0, [r5, r2]
cmp r0, 0x3
ble _0808774C
ldr r1, _08087748 @ =gUnknown_0202FF84
movs r2, 0x10
ldrsh r0, [r4, r2]
str r0, [r1]
movs r2, 0x12
ldrsh r0, [r4, r2]
str r0, [r1, 0x4]
adds r0, r6, 0
adds r0, 0x43
ldrb r0, [r0]
subs r0, 0x1
str r0, [r1, 0x8]
ldrb r0, [r6, 0x5]
lsls r0, 28
lsrs r0, 30
str r0, [r1, 0xC]
movs r0, 0x31
bl FieldEffectStart
strh r0, [r5, 0xA]
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
b _0808776C
.align 2, 0
_08087748: .4byte gUnknown_0202FF84
_0808774C:
adds r0, r1, 0x1
strh r0, [r5, 0xA]
ldrb r0, [r4, 0x18]
lsls r0, 28
lsrs r0, 28
bl GetStepInPlaceDelay4AnimId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl FieldObjectSetSpecialAnim
movs r0, 0x27
bl PlaySE
_0808776C:
movs r0, 0
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_80876F8
thumb_func_start sub_8087774
sub_8087774: @ 8087774
push {r4,lr}
adds r3, r0, 0
adds r4, r1, 0
ldr r2, _080877A8 @ =gSprites
movs r0, 0xA
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
adds r0, 0x2B
ldrb r0, [r0]
cmp r0, 0x2
bne _0808779E
ldrb r0, [r4, 0x1]
movs r1, 0x20
orrs r0, r1
strb r0, [r4, 0x1]
ldrh r0, [r3, 0x8]
adds r0, 0x1
strh r0, [r3, 0x8]
_0808779E:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080877A8: .4byte gSprites
thumb_func_end sub_8087774
thumb_func_start sub_80877AC
sub_80877AC: @ 80877AC
push {r4,lr}
adds r4, r0, 0
movs r0, 0x31
bl FieldEffectActiveListContains
lsls r0, 24
cmp r0, 0
bne _080877CA
bl sub_8053FF8
bl fade_8080918
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_080877CA:
movs r0, 0
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80877AC
thumb_func_start sub_80877D4
sub_80877D4: @ 80877D4
push {lr}
ldr r0, _08087814 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _0808780C
bl sub_8054034
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0808780C
bl warp_in
ldr r1, _08087818 @ =gUnknown_0300485C
ldr r0, _0808781C @ =sub_8086748
str r0, [r1]
ldr r0, _08087820 @ =CB2_LoadMap
bl SetMainCallback2
ldr r0, _08087824 @ =sub_808766C
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
_0808780C:
movs r0, 0
pop {r1}
bx r1
.align 2, 0
_08087814: .4byte gPaletteFade
_08087818: .4byte gUnknown_0300485C
_0808781C: .4byte sub_8086748
_08087820: .4byte CB2_LoadMap
_08087824: .4byte sub_808766C
thumb_func_end sub_80877D4
thumb_func_start FldEff_PopOutOfAsh
FldEff_PopOutOfAsh: @ 8087828
push {r4,lr}
ldr r4, _08087880 @ =gUnknown_0202FF84
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
movs r3, 0x8
bl sub_8060470
ldr r0, _08087884 @ =gFieldEffectObjectTemplatePointers
adds r0, 0x80
ldr r0, [r0]
movs r2, 0
ldrsh r1, [r4, r2]
movs r3, 0x4
ldrsh r2, [r4, r3]
ldrb r3, [r4, 0x8]
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r0, 24
ldr r1, _08087888 @ =gSprites
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r1
movs r1, 0x3
ldrb r3, [r4, 0xC]
ands r3, r1
lsls r3, 2
ldrb r4, [r2, 0x5]
movs r1, 0xD
negs r1, r1
ands r1, r4
orrs r1, r3
strb r1, [r2, 0x5]
adds r2, 0x3E
ldrb r1, [r2]
movs r3, 0x2
orrs r1, r3
strb r1, [r2]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08087880: .4byte gUnknown_0202FF84
_08087884: .4byte gFieldEffectObjectTemplatePointers
_08087888: .4byte gSprites
thumb_func_end FldEff_PopOutOfAsh
thumb_func_start sub_808788C
sub_808788C: @ 808788C
push {lr}
adds r2, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080878A4
adds r0, r2, 0
movs r1, 0x31
bl FieldEffectStop
_080878A4:
pop {r0}
bx r0
thumb_func_end sub_808788C
thumb_func_start sub_80878A8
sub_80878A8: @ 80878A8
push {lr}
bl ScriptContext2_Enable
bl FreezeMapObjects
ldr r0, _080878C0 @ =sub_80878C4
movs r1, 0x50
bl CreateTask
pop {r0}
bx r0
.align 2, 0
_080878C0: .4byte sub_80878C4
thumb_func_end sub_80878A8
thumb_func_start sub_80878C4
sub_80878C4: @ 80878C4
push {lr}
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r3, _080878EC @ =gUnknown_0839F378
ldr r2, _080878F0 @ =gTasks
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
movs r2, 0x8
ldrsh r1, [r0, r2]
lsls r1, 2
adds r1, r3
ldr r1, [r1]
bl _call_via_r1
pop {r0}
bx r0
.align 2, 0
_080878EC: .4byte gUnknown_0839F378
_080878F0: .4byte gTasks
thumb_func_end sub_80878C4
thumb_func_start sub_80878F4
sub_80878F4: @ 80878F4
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
movs r0, 0x40
strh r0, [r4, 0x24]
bl player_get_direction_lower_nybble
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80878F4
thumb_func_start sub_8087914
sub_8087914: @ 8087914
push {r4,r5,lr}
sub sp, 0x8
adds r4, r0, 0
ldr r1, _080879B8 @ =gUnknown_0839F380
mov r0, sp
movs r2, 0x5
bl memcpy
ldrh r1, [r4, 0x24]
movs r2, 0x24
ldrsh r0, [r4, r2]
cmp r0, 0
beq _08087940
subs r0, r1, 0x1
strh r0, [r4, 0x24]
lsls r0, 16
cmp r0, 0
bne _08087940
bl sub_8053FF8
bl fade_8080918
_08087940:
ldr r0, _080879BC @ =gPlayerAvatar
ldrb r1, [r0, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _080879C0 @ =gMapObjects
adds r5, r0, r1
adds r0, r5, 0
bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
lsls r0, 24
cmp r0, 0
beq _08087966
adds r0, r5, 0
bl FieldObjectClearAnimIfSpecialAnimFinished
lsls r0, 24
cmp r0, 0
beq _08087A20
_08087966:
movs r1, 0x24
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080879D8
ldr r0, _080879C4 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _080879D8
bl sub_8054034
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080879D8
ldrh r1, [r4, 0x26]
lsls r1, 24
lsrs r1, 24
adds r0, r5, 0
bl FieldObjectSetDirection
bl sub_8053678
bl warp_in
ldr r1, _080879C8 @ =gUnknown_0300485C
ldr r0, _080879CC @ =mapldr_080859D4
str r0, [r1]
ldr r0, _080879D0 @ =CB2_LoadMap
bl SetMainCallback2
ldr r0, _080879D4 @ =sub_80878C4
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
b _08087A20
.align 2, 0
_080879B8: .4byte gUnknown_0839F380
_080879BC: .4byte gPlayerAvatar
_080879C0: .4byte gMapObjects
_080879C4: .4byte gPaletteFade
_080879C8: .4byte gUnknown_0300485C
_080879CC: .4byte mapldr_080859D4
_080879D0: .4byte CB2_LoadMap
_080879D4: .4byte sub_80878C4
_080879D8:
ldrh r1, [r4, 0xA]
movs r2, 0xA
ldrsh r0, [r4, r2]
cmp r0, 0
beq _080879EC
subs r0, r1, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
cmp r0, 0
bne _08087A20
_080879EC:
ldrb r0, [r5, 0x18]
lsls r0, 28
lsrs r0, 28
add r0, sp
ldrb r0, [r0]
bl GetFaceDirectionAnimId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r5, 0
bl FieldObjectSetSpecialAnim
ldrh r1, [r4, 0xC]
movs r2, 0xC
ldrsh r0, [r4, r2]
cmp r0, 0xB
bgt _08087A14
adds r0, r1, 0x1
strh r0, [r4, 0xC]
_08087A14:
ldrh r1, [r4, 0xC]
lsls r1, 16
asrs r1, 18
movs r0, 0x8
asrs r0, r1
strh r0, [r4, 0xA]
_08087A20:
add sp, 0x8
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_8087914
thumb_func_start mapldr_080859D4
mapldr_080859D4: @ 8087A28
push {lr}
bl sub_8053E90
bl pal_fill_for_map_transition
bl ScriptContext2_Enable
bl FreezeMapObjects
ldr r1, _08087A64 @ =gUnknown_0300485C
movs r0, 0
str r0, [r1]
ldr r2, _08087A68 @ =gMapObjects
ldr r0, _08087A6C @ =gPlayerAvatar
ldrb r1, [r0, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0, 0x1]
movs r2, 0x20
orrs r1, r2
strb r1, [r0, 0x1]
ldr r0, _08087A70 @ =sub_8087A74
movs r1, 0
bl CreateTask
pop {r0}
bx r0
.align 2, 0
_08087A64: .4byte gUnknown_0300485C
_08087A68: .4byte gMapObjects
_08087A6C: .4byte gPlayerAvatar
_08087A70: .4byte sub_8087A74
thumb_func_end mapldr_080859D4
thumb_func_start sub_8087A74
sub_8087A74: @ 8087A74
push {lr}
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r3, _08087A9C @ =gUnknown_0839F388
ldr r2, _08087AA0 @ =gTasks
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
movs r2, 0x8
ldrsh r1, [r0, r2]
lsls r1, 2
adds r1, r3
ldr r1, [r1]
bl _call_via_r1
pop {r0}
bx r0
.align 2, 0
_08087A9C: .4byte gUnknown_0839F388
_08087AA0: .4byte gTasks
thumb_func_end sub_8087A74
thumb_func_start sub_8087AA4
sub_8087AA4: @ 8087AA4
push {r4,lr}
adds r4, r0, 0
bl sub_807D770
lsls r0, 24
cmp r0, 0
beq _08087AC2
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
bl player_get_direction_lower_nybble
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
_08087AC2:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8087AA4
thumb_func_start sub_8087AC8
sub_8087AC8: @ 8087AC8
push {r4-r6,lr}
sub sp, 0x8
adds r5, r0, 0
ldr r1, _08087B4C @ =gUnknown_0839F380
mov r0, sp
movs r2, 0x5
bl memcpy
ldr r0, _08087B50 @ =gPlayerAvatar
ldrb r1, [r0, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _08087B54 @ =gMapObjects
adds r6, r0, r1
ldrh r1, [r5, 0xA]
movs r2, 0xA
ldrsh r0, [r5, r2]
cmp r0, 0
beq _08087AFA
subs r0, r1, 0x1
strh r0, [r5, 0xA]
lsls r0, 16
cmp r0, 0
bne _08087B8C
_08087AFA:
adds r0, r6, 0
bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
lsls r0, 24
cmp r0, 0
beq _08087B12
adds r0, r6, 0
bl FieldObjectClearAnimIfSpecialAnimFinished
lsls r0, 24
cmp r0, 0
beq _08087BA0
_08087B12:
movs r1, 0xC
ldrsh r0, [r5, r1]
cmp r0, 0x1F
ble _08087B5C
movs r2, 0x26
ldrsh r4, [r5, r2]
bl player_get_direction_lower_nybble
lsls r0, 24
lsrs r0, 24
cmp r4, r0
bne _08087B5C
ldrb r1, [r6, 0x1]
movs r0, 0x21
negs r0, r0
ands r0, r1
strb r0, [r6, 0x1]
bl ScriptContext2_Disable
bl UnfreezeMapObjects
ldr r0, _08087B58 @ =sub_8087A74
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
b _08087BA0
.align 2, 0
_08087B4C: .4byte gUnknown_0839F380
_08087B50: .4byte gPlayerAvatar
_08087B54: .4byte gMapObjects
_08087B58: .4byte sub_8087A74
_08087B5C:
ldrb r0, [r6, 0x18]
lsls r0, 28
lsrs r0, 28
add r0, sp
ldrb r0, [r0]
bl GetFaceDirectionAnimId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r6, 0
bl FieldObjectSetSpecialAnim
ldrh r1, [r5, 0xC]
movs r2, 0xC
ldrsh r0, [r5, r2]
cmp r0, 0x1F
bgt _08087B84
adds r0, r1, 0x1
strh r0, [r5, 0xC]
_08087B84:
ldrh r0, [r5, 0xC]
lsls r0, 16
asrs r0, 18
strh r0, [r5, 0xA]
_08087B8C:
ldrb r2, [r6, 0x1]
lsls r1, r2, 26
lsrs r1, 31
movs r0, 0x1
eors r1, r0
lsls r1, 5
subs r0, 0x22
ands r0, r2
orrs r0, r1
strb r0, [r6, 0x1]
_08087BA0:
add sp, 0x8
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_8087AC8
thumb_func_start sub_8087BA8
sub_8087BA8: @ 8087BA8
push {lr}
ldr r0, _08087BB8 @ =sub_8087BBC
movs r1, 0
bl CreateTask
pop {r0}
bx r0
.align 2, 0
_08087BB8: .4byte sub_8087BBC
thumb_func_end sub_8087BA8
thumb_func_start sub_8087BBC
sub_8087BBC: @ 8087BBC
push {lr}
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r3, _08087BE4 @ =gUnknown_0839F390
ldr r2, _08087BE8 @ =gTasks
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
movs r2, 0x8
ldrsh r1, [r0, r2]
lsls r1, 2
adds r1, r3
ldr r1, [r1]
bl _call_via_r1
pop {r0}
bx r0
.align 2, 0
_08087BE4: .4byte gUnknown_0839F390
_08087BE8: .4byte gTasks
thumb_func_end sub_8087BBC
thumb_func_start sub_8087BEC
sub_8087BEC: @ 8087BEC
push {r4,lr}
adds r4, r0, 0
bl ScriptContext2_Enable
bl FreezeMapObjects
bl CameraObjectReset2
bl player_get_direction_lower_nybble
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8087BEC
thumb_func_start sub_8087C14
sub_8087C14: @ 8087C14
push {r4,r5,lr}
sub sp, 0x8
adds r4, r0, 0
ldr r1, _08087C98 @ =gUnknown_0839F380
mov r0, sp
movs r2, 0x5
bl memcpy
ldr r0, _08087C9C @ =gPlayerAvatar
ldrb r1, [r0, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _08087CA0 @ =gMapObjects
adds r5, r0, r1
ldrh r1, [r4, 0xA]
movs r2, 0xA
ldrsh r0, [r4, r2]
cmp r0, 0
beq _08087C46
subs r0, r1, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
cmp r0, 0
bne _08087C60
_08087C46:
ldrb r0, [r5, 0x18]
lsls r0, 28
lsrs r0, 28
add r0, sp
ldrb r1, [r0]
adds r0, r5, 0
bl FieldObjectTurn
movs r0, 0x8
strh r0, [r4, 0xA]
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
_08087C60:
movs r1, 0xC
ldrsh r0, [r4, r1]
cmp r0, 0x7
ble _08087C8E
movs r2, 0x26
ldrsh r1, [r4, r2]
ldrb r0, [r5, 0x18]
lsls r0, 28
lsrs r0, 28
cmp r1, r0
bne _08087C8E
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
movs r0, 0x4
strh r0, [r4, 0xA]
movs r0, 0x8
strh r0, [r4, 0xC]
movs r0, 0x1
strh r0, [r4, 0xE]
movs r0, 0x2D
bl PlaySE
_08087C8E:
add sp, 0x8
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08087C98: .4byte gUnknown_0839F380
_08087C9C: .4byte gPlayerAvatar
_08087CA0: .4byte gMapObjects
thumb_func_end sub_8087C14
thumb_func_start sub_8087CA4
sub_8087CA4: @ 8087CA4
push {r4,r5,lr}
sub sp, 0x8
adds r4, r0, 0
ldr r1, _08087D68 @ =gUnknown_0839F380
mov r0, sp
movs r2, 0x5
bl memcpy
ldr r2, _08087D6C @ =gPlayerAvatar
ldrb r1, [r2, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _08087D70 @ =gMapObjects
adds r3, r0, r1
ldrb r1, [r2, 0x4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _08087D74 @ =gSprites
adds r5, r0, r1
ldrh r0, [r4, 0xA]
subs r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
cmp r0, 0
bgt _08087CEE
movs r0, 0x4
strh r0, [r4, 0xA]
ldrb r0, [r3, 0x18]
lsls r0, 28
lsrs r0, 28
add r0, sp
ldrb r1, [r0]
adds r0, r3, 0
bl FieldObjectTurn
_08087CEE:
ldrh r0, [r5, 0x22]
ldrh r1, [r4, 0xE]
subs r0, r1
strh r0, [r5, 0x22]
ldrh r1, [r4, 0xE]
ldrh r2, [r4, 0x10]
adds r0, r1, r2
strh r0, [r4, 0x10]
ldrh r0, [r4, 0xC]
subs r0, 0x1
strh r0, [r4, 0xC]
lsls r0, 16
cmp r0, 0
bgt _08087D1A
movs r0, 0x4
strh r0, [r4, 0xC]
lsls r0, r1, 16
asrs r0, 16
cmp r0, 0x7
bgt _08087D1A
lsls r0, r1, 1
strh r0, [r4, 0xE]
_08087D1A:
movs r1, 0x10
ldrsh r0, [r4, r1]
cmp r0, 0x8
ble _08087D48
ldrb r1, [r5, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r1
movs r1, 0x4
orrs r0, r1
strb r0, [r5, 0x5]
adds r2, r5, 0
adds r2, 0x42
ldrb r1, [r2]
movs r0, 0xC0
ands r0, r1
cmp r0, 0
beq _08087D48
movs r0, 0x3F
ands r0, r1
movs r1, 0x80
orrs r0, r1
strb r0, [r2]
_08087D48:
movs r2, 0x10
ldrsh r0, [r4, r2]
cmp r0, 0xA7
ble _08087D5E
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
bl sub_8053FF8
bl fade_8080918
_08087D5E:
add sp, 0x8
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08087D68: .4byte gUnknown_0839F380
_08087D6C: .4byte gPlayerAvatar
_08087D70: .4byte gMapObjects
_08087D74: .4byte gSprites
thumb_func_end sub_8087CA4
thumb_func_start sub_8087D78
sub_8087D78: @ 8087D78
push {lr}
ldr r0, _08087DB8 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _08087DB4
bl sub_8054034
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _08087DB4
bl sub_8053570
bl warp_in
ldr r0, _08087DBC @ =CB2_LoadMap
bl SetMainCallback2
ldr r1, _08087DC0 @ =gUnknown_0300485C
ldr r0, _08087DC4 @ =mapldr_08085D88
str r0, [r1]
ldr r0, _08087DC8 @ =sub_8087BBC
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
_08087DB4:
pop {r0}
bx r0
.align 2, 0
_08087DB8: .4byte gPaletteFade
_08087DBC: .4byte CB2_LoadMap
_08087DC0: .4byte gUnknown_0300485C
_08087DC4: .4byte mapldr_08085D88
_08087DC8: .4byte sub_8087BBC
thumb_func_end sub_8087D78
thumb_func_start mapldr_08085D88
mapldr_08085D88: @ 8087DCC
push {lr}
bl sub_8053E90
bl pal_fill_for_map_transition
bl ScriptContext2_Enable
bl FreezeMapObjects
ldr r1, _08087E0C @ =gUnknown_0300485C
movs r0, 0
str r0, [r1]
ldr r2, _08087E10 @ =gMapObjects
ldr r0, _08087E14 @ =gPlayerAvatar
ldrb r1, [r0, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0, 0x1]
movs r2, 0x20
orrs r1, r2
strb r1, [r0, 0x1]
bl CameraObjectReset2
ldr r0, _08087E18 @ =sub_8087E1C
movs r1, 0
bl CreateTask
pop {r0}
bx r0
.align 2, 0
_08087E0C: .4byte gUnknown_0300485C
_08087E10: .4byte gMapObjects
_08087E14: .4byte gPlayerAvatar
_08087E18: .4byte sub_8087E1C
thumb_func_end mapldr_08085D88
thumb_func_start sub_8087E1C
sub_8087E1C: @ 8087E1C
push {lr}
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r3, _08087E44 @ =gUnknown_0839F3A0
ldr r2, _08087E48 @ =gTasks
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
movs r2, 0x8
ldrsh r1, [r0, r2]
lsls r1, 2
adds r1, r3
ldr r1, [r1]
bl _call_via_r1
pop {r0}
bx r0
.align 2, 0
_08087E44: .4byte gUnknown_0839F3A0
_08087E48: .4byte gTasks
thumb_func_end sub_8087E1C
thumb_func_start sub_8087E4C
sub_8087E4C: @ 8087E4C
push {r4-r6,lr}
adds r6, r0, 0
bl sub_807D770
lsls r0, 24
cmp r0, 0
beq _08087EC2
ldr r5, _08087EC8 @ =gPlayerAvatar
ldrb r0, [r5, 0x4]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, _08087ECC @ =gSprites
adds r2, r0
adds r0, r2, 0
adds r0, 0x29
movs r4, 0
ldrsb r4, [r0, r4]
lsls r0, r4, 17
negs r0, r0
ldrh r1, [r2, 0x22]
ldr r3, _08087ED0 @ =gSpriteCoordOffsetY
adds r1, r4
ldrh r3, [r3]
adds r1, r3
asrs r0, 16
adds r0, r1
negs r0, r0
strh r0, [r2, 0x26]
ldr r3, _08087ED4 @ =gMapObjects
ldrb r0, [r5, 0x5]
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
adds r1, r3
ldrb r3, [r1, 0x1]
movs r0, 0x21
negs r0, r0
ands r0, r3
strb r0, [r1, 0x1]
ldrh r0, [r6, 0x8]
adds r0, 0x1
strh r0, [r6, 0x8]
movs r0, 0x8
strh r0, [r6, 0xA]
movs r0, 0x1
strh r0, [r6, 0xC]
adds r2, 0x42
ldrb r0, [r2]
lsrs r0, 6
strh r0, [r6, 0x24]
bl player_get_direction_lower_nybble
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x26]
movs r0, 0x2D
bl PlaySE
_08087EC2:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08087EC8: .4byte gPlayerAvatar
_08087ECC: .4byte gSprites
_08087ED0: .4byte gSpriteCoordOffsetY
_08087ED4: .4byte gMapObjects
thumb_func_end sub_8087E4C
thumb_func_start sub_8087ED8
sub_8087ED8: @ 8087ED8
push {r4-r7,lr}
sub sp, 0x8
adds r4, r0, 0
ldr r1, _08087F40 @ =gUnknown_0839F380
mov r0, sp
movs r2, 0x5
bl memcpy
ldr r2, _08087F44 @ =gPlayerAvatar
ldrb r1, [r2, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _08087F48 @ =gMapObjects
adds r6, r0, r1
ldrb r1, [r2, 0x4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _08087F4C @ =gSprites
adds r5, r0, r1
ldrh r0, [r4, 0xA]
ldrh r1, [r5, 0x26]
adds r0, r1
strh r0, [r5, 0x26]
lsls r0, 16
asrs r0, 16
movs r1, 0x8
negs r1, r1
cmp r0, r1
blt _08087F50
ldrh r1, [r4, 0x22]
movs r2, 0x22
ldrsh r0, [r4, r2]
cmp r0, 0
bne _08087F76
adds r0, r1, 0x1
strh r0, [r4, 0x22]
ldrb r0, [r6]
movs r1, 0x4
orrs r0, r1
strb r0, [r6]
ldrh r1, [r4, 0x24]
adds r3, r5, 0
adds r3, 0x42
lsls r1, 6
ldrb r2, [r3]
movs r0, 0x3F
ands r0, r2
orrs r0, r1
strb r0, [r3]
b _08087F76
.align 2, 0
_08087F40: .4byte gUnknown_0839F380
_08087F44: .4byte gPlayerAvatar
_08087F48: .4byte gMapObjects
_08087F4C: .4byte gSprites
_08087F50:
ldrb r1, [r5, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r1
movs r1, 0x4
orrs r0, r1
strb r0, [r5, 0x5]
adds r2, r5, 0
adds r2, 0x42
ldrb r1, [r2]
movs r0, 0xC0
ands r0, r1
cmp r0, 0
beq _08087F76
movs r0, 0x3F
ands r0, r1
movs r1, 0x80
orrs r0, r1
strb r0, [r2]
_08087F76:
ldrh r2, [r5, 0x26]
movs r3, 0x26
ldrsh r1, [r5, r3]
movs r0, 0x30
negs r0, r0
cmp r1, r0
blt _08087F9A
ldrh r1, [r4, 0xA]
movs r3, 0xA
ldrsh r0, [r4, r3]
cmp r0, 0x1
ble _08087F9A
movs r0, 0x1
ands r0, r2
cmp r0, 0
bne _08087F9A
subs r0, r1, 0x1
strh r0, [r4, 0xA]
_08087F9A:
ldrh r0, [r4, 0xC]
subs r0, 0x1
movs r7, 0
strh r0, [r4, 0xC]
lsls r0, 16
cmp r0, 0
bne _08087FBC
movs r0, 0x4
strh r0, [r4, 0xC]
ldrb r0, [r6, 0x18]
lsls r0, 28
lsrs r0, 28
add r0, sp
ldrb r1, [r0]
adds r0, r6, 0
bl FieldObjectTurn
_08087FBC:
movs r1, 0x26
ldrsh r0, [r5, r1]
cmp r0, 0
blt _08087FD2
strh r7, [r5, 0x26]
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
movs r0, 0x1
strh r0, [r4, 0xA]
strh r7, [r4, 0xC]
_08087FD2:
add sp, 0x8
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8087ED8
thumb_func_start sub_8087FDC
sub_8087FDC: @ 8087FDC
push {r4,r5,lr}
sub sp, 0x8
adds r4, r0, 0
ldr r1, _08088058 @ =gUnknown_0839F380
mov r0, sp
movs r2, 0x5
bl memcpy
ldr r0, _0808805C @ =gPlayerAvatar
ldrb r1, [r0, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _08088060 @ =gMapObjects
adds r5, r0, r1
ldrh r0, [r4, 0xA]
subs r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
cmp r0, 0
bne _08088050
ldrb r0, [r5, 0x18]
lsls r0, 28
lsrs r0, 28
add r0, sp
ldrb r1, [r0]
adds r0, r5, 0
bl FieldObjectTurn
movs r0, 0x8
strh r0, [r4, 0xA]
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
ble _08088050
movs r0, 0x24
ldrsh r1, [r4, r0]
ldrb r0, [r5, 0x18]
lsls r0, 28
lsrs r0, 28
cmp r1, r0
bne _08088050
bl ScriptContext2_Disable
bl CameraObjectReset1
bl UnfreezeMapObjects
ldr r0, _08088064 @ =sub_8087E1C
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
_08088050:
add sp, 0x8
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08088058: .4byte gUnknown_0839F380
_0808805C: .4byte gPlayerAvatar
_08088060: .4byte gMapObjects
_08088064: .4byte sub_8087E1C
thumb_func_end sub_8087FDC
thumb_func_start FldEff_FieldMoveShowMon
FldEff_FieldMoveShowMon: @ 8088068
push {r4,lr}
bl sav1_map_get_light_level
lsls r0, 24
lsrs r0, 24
bl is_light_level_1_2_3_5_or_6
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _08088088
ldr r0, _08088084 @ =sub_8088120
b _0808808A
.align 2, 0
_08088084: .4byte sub_8088120
_08088088:
ldr r0, _080880B8 @ =sub_808847C
_0808808A:
movs r1, 0xFF
bl CreateTask
lsls r0, 24
lsrs r4, r0, 24
ldr r2, _080880BC @ =gUnknown_0202FF84
ldr r0, [r2]
ldr r1, [r2, 0x4]
ldr r2, [r2, 0x8]
bl sub_8088830
ldr r2, _080880C0 @ =gTasks
lsls r1, r4, 2
adds r1, r4
lsls r1, 3
adds r1, r2
lsls r0, 24
lsrs r0, 24
strh r0, [r1, 0x26]
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080880B8: .4byte sub_808847C
_080880BC: .4byte gUnknown_0202FF84
_080880C0: .4byte gTasks
thumb_func_end FldEff_FieldMoveShowMon
thumb_func_start FldEff_FieldMoveShowMonInit
FldEff_FieldMoveShowMonInit: @ 80880C4
push {r4-r6,lr}
ldr r5, _08088118 @ =gUnknown_0202FF84
ldr r0, [r5]
movs r6, 0x80
lsls r6, 24
ands r6, r0
lsls r0, 24
lsrs r0, 24
movs r1, 0x64
adds r4, r0, 0
muls r4, r1
ldr r0, _0808811C @ =gPlayerParty
adds r4, r0
adds r0, r4, 0
movs r1, 0xB
bl GetMonData
str r0, [r5]
adds r0, r4, 0
movs r1, 0x1
bl GetMonData
str r0, [r5, 0x4]
adds r0, r4, 0
movs r1, 0
bl GetMonData
str r0, [r5, 0x8]
ldr r0, [r5]
orrs r0, r6
str r0, [r5]
movs r0, 0x6
bl FieldEffectStart
movs r0, 0x3B
bl FieldEffectActiveListRemove
movs r0, 0
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08088118: .4byte gUnknown_0202FF84
_0808811C: .4byte gPlayerParty
thumb_func_end FldEff_FieldMoveShowMonInit
thumb_func_start sub_8088120
sub_8088120: @ 8088120
push {lr}
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r3, _08088148 @ =gUnknown_0839F3AC
ldr r2, _0808814C @ =gTasks
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
movs r2, 0x8
ldrsh r1, [r0, r2]
lsls r1, 2
adds r1, r3
ldr r1, [r1]
bl _call_via_r1
pop {r0}
bx r0
.align 2, 0
_08088148: .4byte gUnknown_0839F3AC
_0808814C: .4byte gTasks
thumb_func_end sub_8088120
thumb_func_start sub_8088150
sub_8088150: @ 8088150
push {r4-r6,lr}
adds r4, r0, 0
ldr r6, _080881A0 @ =REG_WININ
ldrh r0, [r6]
strh r0, [r4, 0x1E]
ldr r5, _080881A4 @ =REG_WINOUT
ldrh r0, [r5]
strh r0, [r4, 0x20]
adds r0, r4, 0
adds r0, 0x22
ldr r1, _080881A8 @ =gMain
ldr r1, [r1, 0xC]
bl StoreWordInTwoHalfwords
ldr r1, _080881AC @ =0x0000f0f1
strh r1, [r4, 0xA]
ldr r0, _080881B0 @ =0x00005051
strh r0, [r4, 0xC]
movs r0, 0x3F
strh r0, [r4, 0xE]
movs r0, 0x3E
strh r0, [r4, 0x10]
ldr r0, _080881B4 @ =REG_WIN0H
strh r1, [r0]
ldr r1, _080881B8 @ =REG_WIN0V
ldrh r0, [r4, 0xC]
strh r0, [r1]
ldrh r0, [r4, 0xE]
strh r0, [r6]
ldrh r0, [r4, 0x10]
strh r0, [r5]
ldr r0, _080881BC @ =sub_80883DC
bl SetVBlankCallback
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080881A0: .4byte REG_WININ
_080881A4: .4byte REG_WINOUT
_080881A8: .4byte gMain
_080881AC: .4byte 0x0000f0f1
_080881B0: .4byte 0x00005051
_080881B4: .4byte REG_WIN0H
_080881B8: .4byte REG_WIN0V
_080881BC: .4byte sub_80883DC
thumb_func_end sub_8088150
thumb_func_start sub_80881C0
sub_80881C0: @ 80881C0
push {r4-r6,lr}
sub sp, 0x4
adds r6, r0, 0
ldr r0, _08088218 @ =REG_BG0CNT
ldrh r1, [r0]
lsrs r1, 2
lsls r1, 30
lsrs r1, 16
ldrh r4, [r0]
lsrs r4, 8
lsls r4, 27
lsrs r4, 16
ldr r0, _0808821C @ =gFieldMoveStreaksTiles
movs r5, 0xC0
lsls r5, 19
adds r1, r5
movs r2, 0x80
lsls r2, 1
bl CpuSet
movs r0, 0
str r0, [sp]
adds r5, r4, r5
ldr r2, _08088220 @ =0x05000200
mov r0, sp
adds r1, r5, 0
bl CpuSet
ldr r0, _08088224 @ =gFieldMoveStreaksPalette
movs r1, 0xF0
movs r2, 0x20
bl LoadPalette
adds r0, r4, 0
bl sub_808843C
ldrh r0, [r6, 0x8]
adds r0, 0x1
strh r0, [r6, 0x8]
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08088218: .4byte REG_BG0CNT
_0808821C: .4byte gFieldMoveStreaksTiles
_08088220: .4byte 0x05000200
_08088224: .4byte gFieldMoveStreaksPalette
thumb_func_end sub_80881C0
thumb_func_start sub_8088228
sub_8088228: @ 8088228
push {r4-r7,lr}
adds r3, r0, 0
ldrh r0, [r3, 0x12]
subs r0, 0x10
strh r0, [r3, 0x12]
ldrh r6, [r3, 0xA]
ldrh r2, [r3, 0xC]
movs r7, 0xFF
lsrs r1, r6, 8
subs r1, 0x10
lsls r1, 16
lsrs r0, r2, 8
subs r0, 0x2
lsls r0, 16
lsrs r4, r0, 16
adds r0, r7, 0
ands r0, r2
adds r5, r0, 0x2
lsrs r2, r1, 16
cmp r1, 0
bge _08088254
movs r2, 0
_08088254:
lsls r0, r4, 16
asrs r0, 16
cmp r0, 0x27
bgt _0808825E
movs r4, 0x28
_0808825E:
cmp r5, 0x78
ble _08088264
movs r5, 0x78
_08088264:
lsls r2, 16
asrs r2, 16
lsls r1, r2, 8
adds r0, r7, 0
ands r0, r6
orrs r1, r0
strh r1, [r3, 0xA]
lsls r0, r4, 16
asrs r4, r0, 16
lsls r0, r4, 8
adds r1, r5, 0
orrs r0, r1
strh r0, [r3, 0xC]
cmp r2, 0
bne _080882A4
cmp r4, 0x28
bne _080882A4
cmp r1, 0x78
bne _080882A4
ldr r2, _080882AC @ =gSprites
movs r0, 0x26
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r2, 0x1C
adds r0, r2
ldr r1, _080882B0 @ =sub_8088890
str r1, [r0]
ldrh r0, [r3, 0x8]
adds r0, 0x1
strh r0, [r3, 0x8]
_080882A4:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080882AC: .4byte gSprites
_080882B0: .4byte sub_8088890
thumb_func_end sub_8088228
thumb_func_start sub_80882B4
sub_80882B4: @ 80882B4
push {lr}
adds r3, r0, 0
ldrh r0, [r3, 0x12]
subs r0, 0x10
strh r0, [r3, 0x12]
ldr r2, _080882E0 @ =gSprites
movs r0, 0x26
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0x3C
ldrsh r0, [r0, r1]
cmp r0, 0
beq _080882DA
ldrh r0, [r3, 0x8]
adds r0, 0x1
strh r0, [r3, 0x8]
_080882DA:
pop {r0}
bx r0
.align 2, 0
_080882E0: .4byte gSprites
thumb_func_end sub_80882B4
thumb_func_start sub_80882E4
sub_80882E4: @ 80882E4
push {r4,lr}
adds r3, r0, 0
ldrh r0, [r3, 0x12]
subs r0, 0x10
strh r0, [r3, 0x12]
ldrh r2, [r3, 0xC]
lsls r1, r2, 16
movs r0, 0xFF
asrs r1, 24
adds r1, 0x6
lsls r1, 16
ands r0, r2
subs r0, 0x6
lsls r0, 16
lsrs r2, r0, 16
lsrs r4, r1, 16
asrs r1, 16
cmp r1, 0x50
ble _0808830C
movs r4, 0x50
_0808830C:
lsls r0, r2, 16
asrs r0, 16
cmp r0, 0x50
bgt _08088316
movs r2, 0x51
_08088316:
lsls r0, r4, 16
asrs r0, 16
lsls r1, r0, 8
lsls r2, 16
asrs r2, 16
orrs r1, r2
strh r1, [r3, 0xC]
cmp r0, 0x50
bne _08088332
cmp r2, 0x51
bne _08088332
ldrh r0, [r3, 0x8]
adds r0, 0x1
strh r0, [r3, 0x8]
_08088332:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80882E4
thumb_func_start sub_8088338
sub_8088338: @ 8088338
push {r4,lr}
sub sp, 0x4
adds r4, r0, 0
ldr r0, _08088378 @ =REG_BG0CNT
ldrh r1, [r0]
lsrs r1, 8
lsls r1, 27
lsrs r1, 16
movs r0, 0
str r0, [sp]
movs r0, 0xC0
lsls r0, 19
adds r1, r0
ldr r2, _0808837C @ =0x05000200
mov r0, sp
bl CpuSet
movs r0, 0xF1
strh r0, [r4, 0xA]
movs r0, 0xA1
strh r0, [r4, 0xC]
ldrh r0, [r4, 0x1E]
strh r0, [r4, 0xE]
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x10]
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
add sp, 0x4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08088378: .4byte REG_BG0CNT
_0808837C: .4byte 0x05000200
thumb_func_end sub_8088338
thumb_func_start sub_8088380
sub_8088380: @ 8088380
push {r4,r5,lr}
sub sp, 0x4
adds r5, r0, 0
adds r0, 0x22
mov r1, sp
bl LoadWordFromTwoHalfwords
ldr r0, [sp]
bl SetVBlankCallback
ldr r4, _080883D0 @ =gWindowConfig_81E6CE4
adds r0, r4, 0
bl SetUpWindowConfig
adds r0, r4, 0
bl InitMenuWindow
movs r0, 0x26
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080883D4 @ =gSprites
adds r0, r1
bl FreeResourcesAndDestroySprite
movs r0, 0x6
bl FieldEffectActiveListRemove
ldr r0, _080883D8 @ =sub_8088120
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080883D0: .4byte gWindowConfig_81E6CE4
_080883D4: .4byte gSprites
_080883D8: .4byte sub_8088120
thumb_func_end sub_8088380
thumb_func_start sub_80883DC
sub_80883DC: @ 80883DC
push {r4,lr}
sub sp, 0x4
ldr r0, _08088430 @ =sub_8088120
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
lsls r4, r0, 2
adds r4, r0
lsls r4, 3
ldr r0, _08088434 @ =gTasks
adds r4, r0
adds r0, r4, 0
adds r0, 0x22
mov r1, sp
bl LoadWordFromTwoHalfwords
ldr r0, [sp]
bl _call_via_r0
ldr r1, _08088438 @ =REG_WIN0H
ldrh r0, [r4, 0xA]
strh r0, [r1]
adds r1, 0x4
ldrh r0, [r4, 0xC]
strh r0, [r1]
adds r1, 0x4
ldrh r0, [r4, 0xE]
strh r0, [r1]
adds r1, 0x2
ldrh r0, [r4, 0x10]
strh r0, [r1]
subs r1, 0x3A
ldrh r0, [r4, 0x12]
strh r0, [r1]
adds r1, 0x2
ldrh r0, [r4, 0x14]
strh r0, [r1]
add sp, 0x4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08088430: .4byte sub_8088120
_08088434: .4byte gTasks
_08088438: .4byte REG_WIN0H
thumb_func_end sub_80883DC
thumb_func_start sub_808843C
sub_808843C: @ 808843C
push {r4,r5,lr}
lsls r0, 16
lsrs r0, 16
ldr r1, _08088470 @ =0x06000140
adds r2, r0, r1
movs r1, 0
ldr r5, _08088474 @ =gFieldMoveStreaksTilemap
movs r0, 0xF0
lsls r0, 8
adds r4, r0, 0
ldr r3, _08088478 @ =0x0000013f
_08088452:
lsls r0, r1, 1
adds r0, r5
ldrh r0, [r0]
orrs r0, r4
strh r0, [r2]
adds r0, r1, 0x1
lsls r0, 16
lsrs r1, r0, 16
adds r2, 0x2
cmp r1, r3
bls _08088452
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08088470: .4byte 0x06000140
_08088474: .4byte gFieldMoveStreaksTilemap
_08088478: .4byte 0x0000013f
thumb_func_end sub_808843C
thumb_func_start sub_808847C
sub_808847C: @ 808847C
push {lr}
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r3, _080884A4 @ =gUnknown_0839F3C8
ldr r2, _080884A8 @ =gTasks
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
movs r2, 0x8
ldrsh r1, [r0, r2]
lsls r1, 2
adds r1, r3
ldr r1, [r1]
bl _call_via_r1
pop {r0}
bx r0
.align 2, 0
_080884A4: .4byte gUnknown_0839F3C8
_080884A8: .4byte gTasks
thumb_func_end sub_808847C
thumb_func_start sub_80884AC
sub_80884AC: @ 80884AC
push {r4,lr}
adds r4, r0, 0
ldr r1, _080884DC @ =REG_BG0HOFS
ldrh r0, [r4, 0xA]
strh r0, [r1]
adds r1, 0x2
ldrh r0, [r4, 0xC]
strh r0, [r1]
adds r0, r4, 0
adds r0, 0x22
ldr r1, _080884E0 @ =gMain
ldr r1, [r1, 0xC]
bl StoreWordInTwoHalfwords
ldr r0, _080884E4 @ =sub_80886B0
bl SetVBlankCallback
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080884DC: .4byte REG_BG0HOFS
_080884E0: .4byte gMain
_080884E4: .4byte sub_80886B0
thumb_func_end sub_80884AC
thumb_func_start sub_80884E8
sub_80884E8: @ 80884E8
push {r4-r6,lr}
mov r6, r8
push {r6}
sub sp, 0x4
adds r6, r0, 0
ldr r0, _08088544 @ =REG_BG0CNT
ldrh r1, [r0]
lsrs r1, 2
lsls r1, 30
lsrs r1, 16
ldrh r4, [r0]
lsrs r4, 8
lsls r4, 27
lsrs r4, 16
movs r0, 0
mov r8, r0
strh r4, [r6, 0x20]
ldr r0, _08088548 @ =gDarknessFieldMoveStreaksTiles
movs r5, 0xC0
lsls r5, 19
adds r1, r5
movs r2, 0x40
bl CpuSet
mov r0, r8
str r0, [sp]
adds r4, r5
ldr r2, _0808854C @ =0x05000200
mov r0, sp
adds r1, r4, 0
bl CpuSet
ldr r0, _08088550 @ =gDarknessFieldMoveStreaksPalette
movs r1, 0xF0
movs r2, 0x20
bl LoadPalette
ldrh r0, [r6, 0x8]
adds r0, 0x1
strh r0, [r6, 0x8]
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08088544: .4byte REG_BG0CNT
_08088548: .4byte gDarknessFieldMoveStreaksTiles
_0808854C: .4byte 0x05000200
_08088550: .4byte gDarknessFieldMoveStreaksPalette
thumb_func_end sub_80884E8
thumb_func_start sub_8088554
sub_8088554: @ 8088554
push {r4,lr}
adds r4, r0, 0
bl sub_8088708
lsls r0, 24
cmp r0, 0
beq _0808858A
ldr r1, _08088598 @ =REG_WIN1H
movs r0, 0xF0
strh r0, [r1]
adds r1, 0x4
ldr r2, _0808859C @ =0x00002878
adds r0, r2, 0
strh r0, [r1]
ldr r2, _080885A0 @ =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r2, 0x1C
adds r0, r2
ldr r1, _080885A4 @ =sub_8088890
str r1, [r0]
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_0808858A:
adds r0, r4, 0
bl sub_80886F8
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08088598: .4byte REG_WIN1H
_0808859C: .4byte 0x00002878
_080885A0: .4byte gSprites
_080885A4: .4byte sub_8088890
thumb_func_end sub_8088554
thumb_func_start sub_80885A8
sub_80885A8: @ 80885A8
push {r4,lr}
adds r4, r0, 0
bl sub_80886F8
ldr r2, _080885D4 @ =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0x3C
ldrsh r0, [r0, r1]
cmp r0, 0
beq _080885CC
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_080885CC:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080885D4: .4byte gSprites
thumb_func_end sub_80885A8
thumb_func_start sub_80885D8
sub_80885D8: @ 80885D8
push {r4,lr}
adds r4, r0, 0
bl sub_80886F8
ldrh r1, [r4, 0xA]
movs r0, 0x7
ands r0, r1
movs r1, 0
strh r0, [r4, 0xE]
strh r1, [r4, 0x10]
ldr r0, _08088604 @ =REG_WIN1H
ldr r2, _08088608 @ =0x0000ffff
adds r1, r2, 0
strh r1, [r0]
adds r0, 0x4
strh r1, [r0]
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08088604: .4byte REG_WIN1H
_08088608: .4byte 0x0000ffff
thumb_func_end sub_80885D8
thumb_func_start sub_808860C
sub_808860C: @ 808860C
push {r4,lr}
adds r4, r0, 0
bl sub_80886F8
adds r0, r4, 0
bl sub_80887C0
lsls r0, 24
cmp r0, 0
beq _08088626
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_08088626:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_808860C
thumb_func_start sub_808862C
sub_808862C: @ 808862C
push {r4,r5,lr}
sub sp, 0x8
adds r5, r0, 0
ldr r0, _0808869C @ =REG_BG0CNT
ldrh r1, [r0]
lsrs r1, 8
lsls r1, 27
lsrs r1, 16
movs r0, 0
str r0, [sp]
movs r0, 0xC0
lsls r0, 19
adds r1, r0
ldr r2, _080886A0 @ =0x05000200
mov r0, sp
bl CpuSet
adds r0, r5, 0
adds r0, 0x22
add r1, sp, 0x4
bl LoadWordFromTwoHalfwords
ldr r0, [sp, 0x4]
bl SetVBlankCallback
ldr r4, _080886A4 @ =gWindowConfig_81E6CE4
adds r0, r4, 0
bl SetUpWindowConfig
adds r0, r4, 0
bl InitMenuWindow
movs r0, 0x26
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080886A8 @ =gSprites
adds r0, r1
bl FreeResourcesAndDestroySprite
movs r0, 0x6
bl FieldEffectActiveListRemove
ldr r0, _080886AC @ =sub_808847C
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
add sp, 0x8
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0808869C: .4byte REG_BG0CNT
_080886A0: .4byte 0x05000200
_080886A4: .4byte gWindowConfig_81E6CE4
_080886A8: .4byte gSprites
_080886AC: .4byte sub_808847C
thumb_func_end sub_808862C
thumb_func_start sub_80886B0
sub_80886B0: @ 80886B0
push {r4,lr}
sub sp, 0x4
ldr r0, _080886EC @ =sub_808847C
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
lsls r4, r0, 2
adds r4, r0
lsls r4, 3
ldr r0, _080886F0 @ =gTasks
adds r4, r0
adds r0, r4, 0
adds r0, 0x22
mov r1, sp
bl LoadWordFromTwoHalfwords
ldr r0, [sp]
bl _call_via_r0
ldr r1, _080886F4 @ =REG_BG0HOFS
ldrh r0, [r4, 0xA]
strh r0, [r1]
adds r1, 0x2
ldrh r0, [r4, 0xC]
strh r0, [r1]
add sp, 0x4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080886EC: .4byte sub_808847C
_080886F0: .4byte gTasks
_080886F4: .4byte REG_BG0HOFS
thumb_func_end sub_80886B0
thumb_func_start sub_80886F8
sub_80886F8: @ 80886F8
ldrh r1, [r0, 0xA]
subs r1, 0x10
strh r1, [r0, 0xA]
ldrh r1, [r0, 0xE]
adds r1, 0x10
strh r1, [r0, 0xE]
bx lr
thumb_func_end sub_80886F8
thumb_func_start sub_8088708
sub_8088708: @ 8088708
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
adds r5, r0, 0
ldrh r2, [r5, 0x10]
movs r1, 0x10
ldrsh r0, [r5, r1]
cmp r0, 0x1F
ble _08088724
movs r0, 0x1
b _080887A8
_08088724:
ldrh r0, [r5, 0xE]
lsls r0, 16
asrs r3, r0, 19
movs r1, 0x1F
ands r3, r1
movs r4, 0x10
ldrsh r0, [r5, r4]
cmp r3, r0
blt _080887A6
movs r0, 0x20
subs r3, r0, r3
ands r3, r1
subs r0, r2
mov r12, r0
mov r7, r12
ands r7, r1
mov r12, r7
ldrh r0, [r5, 0x20]
ldr r1, _080887B8 @ =0x06000140
adds r1, r0
mov r8, r1
movs r4, 0
ldr r7, _080887BC @ =gDarknessFieldMoveStreaksTilemap
mov r10, r7
movs r0, 0xF0
lsls r0, 8
mov r9, r0
adds r1, r3, 0x1
movs r0, 0x1F
ands r1, r0
str r1, [sp]
mov r6, r12
adds r6, 0x1
ands r6, r0
_08088768:
lsls r1, r4, 5
adds r2, r1, r3
lsls r2, 1
add r2, r8
mov r7, r12
adds r0, r7, r1
lsls r0, 1
add r0, r10
ldrh r0, [r0]
mov r7, r9
orrs r0, r7
strh r0, [r2]
ldr r0, [sp]
adds r2, r1, r0
lsls r2, 1
add r2, r8
adds r1, r6, r1
lsls r1, 1
add r1, r10
ldrh r0, [r1]
mov r1, r9
orrs r0, r1
strh r0, [r2]
adds r0, r4, 0x1
lsls r0, 16
lsrs r4, r0, 16
cmp r4, 0x9
bls _08088768
ldrh r0, [r5, 0x10]
adds r0, 0x2
strh r0, [r5, 0x10]
_080887A6:
movs r0, 0
_080887A8:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080887B8: .4byte 0x06000140
_080887BC: .4byte gDarknessFieldMoveStreaksTilemap
thumb_func_end sub_8088708
thumb_func_start sub_80887C0
sub_80887C0: @ 80887C0
push {r4-r7,lr}
adds r5, r0, 0
movs r1, 0x10
ldrsh r0, [r5, r1]
cmp r0, 0x1F
ble _080887D0
movs r0, 0x1
b _08088824
_080887D0:
ldrh r0, [r5, 0xE]
lsls r0, 16
asrs r0, 19
lsls r0, 16
lsrs r2, r0, 16
movs r1, 0x10
ldrsh r0, [r5, r1]
cmp r2, r0
blt _08088822
ldrh r0, [r5, 0xA]
lsls r0, 16
asrs r2, r0, 19
movs r0, 0x1F
ands r2, r0
ldrh r0, [r5, 0x20]
ldr r1, _0808882C @ =0x06000140
adds r6, r0, r1
movs r3, 0
movs r0, 0xF0
lsls r0, 8
adds r7, r0, 0
adds r4, r2, 0x1
movs r0, 0x1F
ands r4, r0
_08088800:
lsls r0, r3, 5
adds r1, r0, r2
lsls r1, 1
adds r1, r6
strh r7, [r1]
adds r0, r4
lsls r0, 1
adds r0, r6
strh r7, [r0]
adds r0, r3, 0x1
lsls r0, 16
lsrs r3, r0, 16
cmp r3, 0x9
bls _08088800
ldrh r0, [r5, 0x10]
adds r0, 0x2
strh r0, [r5, 0x10]
_08088822:
movs r0, 0
_08088824:
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0808882C: .4byte 0x06000140
thumb_func_end sub_80887C0
thumb_func_start sub_8088830
sub_8088830: @ 8088830
push {r4-r6,lr}
sub sp, 0x8
adds r6, r0, 0
movs r5, 0x80
lsls r5, 24
ands r5, r6
lsrs r5, 16
lsls r5, 16
lsrs r5, 16
ldr r0, _08088884 @ =0x7fffffff
ands r6, r0
lsls r0, r6, 16
lsrs r0, 16
movs r3, 0xA0
lsls r3, 1
movs r4, 0x50
str r4, [sp]
movs r4, 0
str r4, [sp, 0x4]
bl CreateMonSprite_FieldMove
lsls r0, 24
lsrs r0, 24
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r1, _08088888 @ =gSprites
adds r2, r1
ldr r1, _0808888C @ =SpriteCallbackDummy
str r1, [r2, 0x1C]
ldrb r3, [r2, 0x5]
movs r1, 0xD
negs r1, r1
ands r1, r3
strb r1, [r2, 0x5]
strh r6, [r2, 0x2E]
strh r5, [r2, 0x3A]
add sp, 0x8
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08088884: .4byte 0x7fffffff
_08088888: .4byte gSprites
_0808888C: .4byte SpriteCallbackDummy
thumb_func_end sub_8088830
thumb_func_start sub_8088890
sub_8088890: @ 8088890
push {lr}
adds r1, r0, 0
ldrh r0, [r1, 0x20]
subs r0, 0x14
strh r0, [r1, 0x20]
lsls r0, 16
asrs r0, 16
cmp r0, 0x78
bgt _080888D0
movs r0, 0x78
strh r0, [r1, 0x20]
movs r0, 0x1E
strh r0, [r1, 0x30]
ldr r0, _080888C4 @ =sub_80888D4
str r0, [r1, 0x1C]
movs r2, 0x3A
ldrsh r0, [r1, r2]
cmp r0, 0
beq _080888C8
ldrh r0, [r1, 0x2E]
movs r1, 0
movs r2, 0x7D
movs r3, 0xA
bl PlayCry2
b _080888D0
.align 2, 0
_080888C4: .4byte sub_80888D4
_080888C8:
ldrh r0, [r1, 0x2E]
movs r1, 0
bl PlayCry1
_080888D0:
pop {r0}
bx r0
thumb_func_end sub_8088890
thumb_func_start sub_80888D4
sub_80888D4: @ 80888D4
push {lr}
adds r1, r0, 0
ldrh r0, [r1, 0x30]
subs r0, 0x1
strh r0, [r1, 0x30]
lsls r0, 16
cmp r0, 0
bne _080888E8
ldr r0, _080888EC @ =sub_80888F0
str r0, [r1, 0x1C]
_080888E8:
pop {r0}
bx r0
.align 2, 0
_080888EC: .4byte sub_80888F0
thumb_func_end sub_80888D4
thumb_func_start sub_80888F0
sub_80888F0: @ 80888F0
push {lr}
adds r2, r0, 0
ldrh r3, [r2, 0x20]
movs r0, 0x20
ldrsh r1, [r2, r0]
movs r0, 0x40
negs r0, r0
cmp r1, r0
bge _08088908
movs r0, 0x1
strh r0, [r2, 0x3C]
b _0808890E
_08088908:
adds r0, r3, 0
subs r0, 0x14
strh r0, [r2, 0x20]
_0808890E:
pop {r0}
bx r0
thumb_func_end sub_80888F0
thumb_func_start FldEff_UseSurf
FldEff_UseSurf: @ 8088914
push {lr}
ldr r0, _08088944 @ =sub_8088954
movs r1, 0xFF
bl CreateTask
lsls r0, 24
lsrs r0, 24
ldr r2, _08088948 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
ldr r0, _0808894C @ =gUnknown_0202FF84
ldr r0, [r0]
strh r0, [r1, 0x26]
bl sav1_reset_battle_music_maybe
ldr r0, _08088950 @ =0x0000016d
bl sub_8053FB0
movs r0, 0
pop {r1}
bx r1
.align 2, 0
_08088944: .4byte sub_8088954
_08088948: .4byte gTasks
_0808894C: .4byte gUnknown_0202FF84
_08088950: .4byte 0x0000016d
thumb_func_end FldEff_UseSurf
thumb_func_start sub_8088954
sub_8088954: @ 8088954
push {lr}
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r3, _0808897C @ =gUnknown_0839F3E4
ldr r2, _08088980 @ =gTasks
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
movs r2, 0x8
ldrsh r1, [r0, r2]
lsls r1, 2
adds r1, r3
ldr r1, [r1]
bl _call_via_r1
pop {r0}
bx r0
.align 2, 0
_0808897C: .4byte gUnknown_0839F3E4
_08088980: .4byte gTasks
thumb_func_end sub_8088954
thumb_func_start sub_8088984
sub_8088984: @ 8088984
push {r4-r6,lr}
mov r6, r8
push {r6}
adds r4, r0, 0
bl ScriptContext2_Enable
bl FreezeMapObjects
ldr r5, _080889DC @ =gPlayerAvatar
movs r0, 0x1
strb r0, [r5, 0x6]
movs r0, 0x8
bl SetPlayerAvatarStateMask
adds r6, r4, 0
adds r6, 0xA
movs r0, 0xC
adds r0, r4
mov r8, r0
adds r0, r6, 0
mov r1, r8
bl PlayerGetDestCoords
ldr r2, _080889E0 @ =gMapObjects
ldrb r1, [r5, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0, 0x18]
lsrs r0, 4
adds r1, r6, 0
mov r2, r8
bl MoveCoords
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080889DC: .4byte gPlayerAvatar
_080889E0: .4byte gMapObjects
thumb_func_end sub_8088984
thumb_func_start sub_80889E4
sub_80889E4: @ 80889E4
push {r4,r5,lr}
adds r5, r0, 0
ldr r0, _08088A28 @ =gPlayerAvatar
ldrb r1, [r0, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _08088A2C @ =gMapObjects
adds r4, r0, r1
adds r0, r4, 0
bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
lsls r0, 24
cmp r0, 0
beq _08088A0E
adds r0, r4, 0
bl FieldObjectClearAnimIfSpecialAnimFinished
lsls r0, 24
cmp r0, 0
beq _08088A20
_08088A0E:
bl sub_8059BF4
adds r0, r4, 0
movs r1, 0x39
bl FieldObjectSetSpecialAnim
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
_08088A20:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08088A28: .4byte gPlayerAvatar
_08088A2C: .4byte gMapObjects
thumb_func_end sub_80889E4
thumb_func_start sub_8088A30
sub_8088A30: @ 8088A30
push {r4,lr}
adds r4, r0, 0
ldr r0, _08088A6C @ =gPlayerAvatar
ldrb r1, [r0, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _08088A70 @ =gMapObjects
adds r0, r1
bl FieldObjectCheckIfSpecialAnimFinishedOrInactive
lsls r0, 24
cmp r0, 0
beq _08088A66
ldr r2, _08088A74 @ =gUnknown_0202FF84
movs r1, 0x26
ldrsh r0, [r4, r1]
movs r1, 0x80
lsls r1, 24
orrs r0, r1
str r0, [r2]
movs r0, 0x3B
bl FieldEffectStart
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_08088A66:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08088A6C: .4byte gPlayerAvatar
_08088A70: .4byte gMapObjects
_08088A74: .4byte gUnknown_0202FF84
thumb_func_end sub_8088A30
thumb_func_start sub_8088A78
sub_8088A78: @ 8088A78
push {r4-r6,lr}
adds r6, r0, 0
movs r0, 0x6
bl FieldEffectActiveListContains
lsls r0, 24
cmp r0, 0
bne _08088AE2
ldr r5, _08088AE8 @ =gPlayerAvatar
ldrb r0, [r5, 0x5]
lsls r4, r0, 3
adds r4, r0
lsls r4, 2
ldr r0, _08088AEC @ =gMapObjects
adds r4, r0
movs r0, 0x3
bl GetPlayerAvatarGraphicsIdByStateId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl sub_805B980
adds r0, r4, 0
bl FieldObjectClearAnimIfSpecialAnimFinished
ldrb r0, [r4, 0x18]
lsrs r0, 4
bl sub_80608D0
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl FieldObjectSetSpecialAnim
ldr r1, _08088AF0 @ =gUnknown_0202FF84
movs r2, 0xA
ldrsh r0, [r6, r2]
str r0, [r1]
movs r2, 0xC
ldrsh r0, [r6, r2]
str r0, [r1, 0x4]
ldrb r0, [r5, 0x5]
str r0, [r1, 0x8]
movs r0, 0x8
bl FieldEffectStart
strb r0, [r4, 0x1A]
ldrh r0, [r6, 0x8]
adds r0, 0x1
strh r0, [r6, 0x8]
_08088AE2:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08088AE8: .4byte gPlayerAvatar
_08088AEC: .4byte gMapObjects
_08088AF0: .4byte gUnknown_0202FF84
thumb_func_end sub_8088A78
thumb_func_start sub_8088AF4
sub_8088AF4: @ 8088AF4
push {r4,r5,lr}
ldr r5, _08088B5C @ =gPlayerAvatar
ldrb r1, [r5, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _08088B60 @ =gMapObjects
adds r4, r0, r1
adds r0, r4, 0
bl FieldObjectClearAnimIfSpecialAnimFinished
lsls r0, 24
cmp r0, 0
beq _08088B54
movs r0, 0
strb r0, [r5, 0x6]
ldrb r1, [r5]
movs r0, 0xDF
ands r0, r1
strb r0, [r5]
ldrb r0, [r4, 0x18]
lsrs r0, 4
bl GetFaceDirectionAnimId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl FieldObjectSetSpecialAnim
ldrb r0, [r4, 0x1A]
movs r1, 0x1
bl sub_8127ED0
bl UnfreezeMapObjects
bl ScriptContext2_Disable
movs r0, 0x9
bl FieldEffectActiveListRemove
ldr r0, _08088B64 @ =sub_8088954
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
_08088B54:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08088B5C: .4byte gPlayerAvatar
_08088B60: .4byte gMapObjects
_08088B64: .4byte sub_8088954
thumb_func_end sub_8088AF4
thumb_func_start FldEff_NPCFlyOut
FldEff_NPCFlyOut: @ 8088B68
push {r4,lr}
ldr r0, _08088BB4 @ =gFieldEffectObjectTemplatePointers
ldr r0, [r0, 0x68]
movs r1, 0x78
movs r2, 0
movs r3, 0x1
bl CreateSprite
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
lsls r2, r4, 4
adds r2, r4
lsls r2, 2
ldr r0, _08088BB8 @ =gSprites
adds r2, r0
ldrb r1, [r2, 0x5]
movs r0, 0xF
ands r0, r1
movs r1, 0xD
negs r1, r1
ands r0, r1
movs r1, 0x4
orrs r0, r1
strb r0, [r2, 0x5]
ldr r0, _08088BBC @ =sub_8088BC4
str r0, [r2, 0x1C]
ldr r0, _08088BC0 @ =gUnknown_0202FF84
ldr r0, [r0]
strh r0, [r2, 0x30]
movs r0, 0x9E
bl PlaySE
adds r0, r4, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08088BB4: .4byte gFieldEffectObjectTemplatePointers
_08088BB8: .4byte gSprites
_08088BBC: .4byte sub_8088BC4
_08088BC0: .4byte gUnknown_0202FF84
thumb_func_end FldEff_NPCFlyOut
thumb_func_start sub_8088BC4
sub_8088BC4: @ 8088BC4
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x32
ldrsh r0, [r4, r1]
movs r1, 0x8C
bl Cos
movs r5, 0
strh r0, [r4, 0x24]
movs r2, 0x32
ldrsh r0, [r4, r2]
movs r1, 0x48
bl Sin
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x32]
adds r0, 0x4
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x32]
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
beq _08088C26
movs r2, 0x30
ldrsh r0, [r4, r2]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
ldr r0, _08088C3C @ =gSprites
adds r1, r0
adds r3, r1, 0
adds r3, 0x3E
ldrb r2, [r3]
movs r0, 0x3
negs r0, r0
ands r0, r2
strb r0, [r3]
ldrh r0, [r4, 0x24]
ldrh r2, [r4, 0x20]
adds r0, r2
strh r0, [r1, 0x20]
ldrh r0, [r4, 0x26]
ldrh r2, [r4, 0x22]
adds r0, r2
subs r0, 0x8
strh r0, [r1, 0x22]
strh r5, [r1, 0x24]
strh r5, [r1, 0x26]
_08088C26:
movs r1, 0x32
ldrsh r0, [r4, r1]
cmp r0, 0x7F
ble _08088C36
adds r0, r4, 0
movs r1, 0x1E
bl FieldEffectStop
_08088C36:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08088C3C: .4byte gSprites
thumb_func_end sub_8088BC4
thumb_func_start FldEff_UseFly
FldEff_UseFly: @ 8088C40
push {lr}
ldr r0, _08088C64 @ =sub_8088C70
movs r1, 0xFE
bl CreateTask
lsls r0, 24
lsrs r0, 24
ldr r2, _08088C68 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
ldr r0, _08088C6C @ =gUnknown_0202FF84
ldr r0, [r0]
strh r0, [r1, 0xA]
movs r0, 0
pop {r1}
bx r1
.align 2, 0
_08088C64: .4byte sub_8088C70
_08088C68: .4byte gTasks
_08088C6C: .4byte gUnknown_0202FF84
thumb_func_end FldEff_UseFly
thumb_func_start sub_8088C70
sub_8088C70: @ 8088C70
push {lr}
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r3, _08088C98 @ =gUnknown_0839F3F8
ldr r2, _08088C9C @ =gTasks
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
movs r2, 0x8
ldrsh r1, [r0, r2]
lsls r1, 2
adds r1, r3
ldr r1, [r1]
bl _call_via_r1
pop {r0}
bx r0
.align 2, 0
_08088C98: .4byte gUnknown_0839F3F8
_08088C9C: .4byte gTasks
thumb_func_end sub_8088C70
thumb_func_start sub_8088CA0
sub_8088CA0: @ 8088CA0
push {r4-r6,lr}
adds r5, r0, 0
ldr r6, _08088CF0 @ =gPlayerAvatar
ldrb r1, [r6, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _08088CF4 @ =gMapObjects
adds r4, r0, r1
adds r0, r4, 0
bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
lsls r0, 24
cmp r0, 0
beq _08088CCA
adds r0, r4, 0
bl FieldObjectClearAnimIfSpecialAnimFinished
lsls r0, 24
cmp r0, 0
beq _08088CE8
_08088CCA:
ldrb r0, [r6]
strh r0, [r5, 0x26]
movs r0, 0x1
strb r0, [r6, 0x6]
bl SetPlayerAvatarStateMask
bl sub_8059BF4
adds r0, r4, 0
movs r1, 0x39
bl FieldObjectSetSpecialAnim
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
_08088CE8:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08088CF0: .4byte gPlayerAvatar
_08088CF4: .4byte gMapObjects
thumb_func_end sub_8088CA0
thumb_func_start sub_8088CF8
sub_8088CF8: @ 8088CF8
push {r4,lr}
adds r4, r0, 0
ldr r0, _08088D30 @ =gPlayerAvatar
ldrb r1, [r0, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _08088D34 @ =gMapObjects
adds r0, r1
bl FieldObjectClearAnimIfSpecialAnimFinished
lsls r0, 24
cmp r0, 0
beq _08088D28
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
ldr r1, _08088D38 @ =gUnknown_0202FF84
movs r2, 0xA
ldrsh r0, [r4, r2]
str r0, [r1]
movs r0, 0x3B
bl FieldEffectStart
_08088D28:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08088D30: .4byte gPlayerAvatar
_08088D34: .4byte gMapObjects
_08088D38: .4byte gUnknown_0202FF84
thumb_func_end sub_8088CF8
thumb_func_start sub_8088D3C
sub_8088D3C: @ 8088D3C
push {r4,r5,lr}
adds r4, r0, 0
movs r0, 0x6
bl FieldEffectActiveListContains
lsls r0, 24
cmp r0, 0
bne _08088D84
ldr r0, _08088D8C @ =gPlayerAvatar
ldrb r1, [r0, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _08088D90 @ =gMapObjects
adds r5, r0, r1
ldrh r1, [r4, 0x26]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _08088D74
ldrb r0, [r5, 0x1A]
movs r1, 0x2
bl sub_8127ED0
ldrb r0, [r5, 0x1A]
movs r1, 0
bl sub_8127EFC
_08088D74:
bl sub_8088F60
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0xA]
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_08088D84:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08088D8C: .4byte gPlayerAvatar
_08088D90: .4byte gMapObjects
thumb_func_end sub_8088D3C
thumb_func_start sub_8088D94
sub_8088D94: @ 8088D94
push {r4,lr}
adds r4, r0, 0
ldrb r0, [r4, 0xA]
bl sub_8088FA4
lsls r0, 24
cmp r0, 0
beq _08088DC8
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
movs r0, 0x10
strh r0, [r4, 0xC]
movs r0, 0x1
bl SetPlayerAvatarTransitionFlags
ldr r0, _08088DD0 @ =gPlayerAvatar
ldrb r1, [r0, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _08088DD4 @ =gMapObjects
adds r0, r1
movs r1, 0x2
bl FieldObjectSetSpecialAnim
_08088DC8:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08088DD0: .4byte gPlayerAvatar
_08088DD4: .4byte gMapObjects
thumb_func_end sub_8088D94
thumb_func_start sub_8088DD8
sub_8088DD8: @ 8088DD8
push {r4,lr}
adds r4, r0, 0
ldr r0, _08088E24 @ =gPlayerAvatar
ldrb r1, [r0, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _08088E28 @ =gMapObjects
adds r2, r0, r1
ldrh r1, [r4, 0xC]
movs r3, 0xC
ldrsh r0, [r4, r3]
cmp r0, 0
beq _08088DFE
subs r0, r1, 0x1
strh r0, [r4, 0xC]
lsls r0, 16
cmp r0, 0
bne _08088E1C
_08088DFE:
adds r0, r2, 0
bl FieldObjectClearAnimIfSpecialAnimFinished
lsls r0, 24
cmp r0, 0
beq _08088E1C
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
movs r0, 0x9E
bl PlaySE
ldrb r0, [r4, 0xA]
bl sub_8088FC0
_08088E1C:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08088E24: .4byte gPlayerAvatar
_08088E28: .4byte gMapObjects
thumb_func_end sub_8088DD8
thumb_func_start sub_8088E2C
sub_8088E2C: @ 8088E2C
push {r4-r6,lr}
adds r5, r0, 0
ldrh r0, [r5, 0xC]
adds r0, 0x1
strh r0, [r5, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0x7
ble _08088EA2
ldr r0, _08088EA8 @ =gPlayerAvatar
ldrb r1, [r0, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _08088EAC @ =gMapObjects
adds r4, r0, r1
movs r0, 0x3
bl GetPlayerAvatarGraphicsIdByStateId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl sub_805B980
ldrb r1, [r4, 0x4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r6, _08088EB0 @ =gSprites
adds r0, r6
movs r1, 0x16
bl StartSpriteAnim
ldrb r0, [r4, 0x1]
movs r1, 0x10
orrs r0, r1
strb r0, [r4, 0x1]
adds r0, r4, 0
movs r1, 0x48
bl FieldObjectSetSpecialAnim
ldrh r1, [r5, 0x26]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _08088E98
ldrb r1, [r4, 0x1A]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r6
bl DestroySprite
_08088E98:
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
movs r0, 0
strh r0, [r5, 0xC]
_08088EA2:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08088EA8: .4byte gPlayerAvatar
_08088EAC: .4byte gMapObjects
_08088EB0: .4byte gSprites
thumb_func_end sub_8088E2C
thumb_func_start sub_8088EB4
sub_8088EB4: @ 8088EB4
push {r4,r5,lr}
adds r5, r0, 0
ldrh r0, [r5, 0xC]
adds r0, 0x1
strh r0, [r5, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0x9
ble _08088F00
ldr r0, _08088F08 @ =gPlayerAvatar
ldrb r0, [r0, 0x5]
lsls r4, r0, 3
adds r4, r0
lsls r4, 2
ldr r0, _08088F0C @ =gMapObjects
adds r4, r0
adds r0, r4, 0
bl FieldObjectClearAnimIfSpecialAnimActive
ldrb r1, [r4, 0x1]
movs r0, 0x11
negs r0, r0
ands r0, r1
strb r0, [r4, 0x1]
ldrb r1, [r4, 0x2]
movs r0, 0x41
negs r0, r0
ands r0, r1
strb r0, [r4, 0x2]
ldrb r0, [r5, 0xA]
ldrb r1, [r4, 0x4]
bl sub_8088FFC
bl CameraObjectReset2
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
_08088F00:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08088F08: .4byte gPlayerAvatar
_08088F0C: .4byte gMapObjects
thumb_func_end sub_8088EB4
thumb_func_start sub_8088F10
sub_8088F10: @ 8088F10
push {r4,lr}
adds r4, r0, 0
ldrb r0, [r4, 0xA]
bl sub_8088FA4
lsls r0, 24
cmp r0, 0
beq _08088F2A
bl fade_8080918
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_08088F2A:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8088F10
thumb_func_start sub_8088F30
sub_8088F30: @ 8088F30
push {lr}
ldr r0, _08088F58 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _08088F52
movs r0, 0x1F
bl FieldEffectActiveListRemove
ldr r0, _08088F5C @ =sub_8088C70
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
_08088F52:
pop {r0}
bx r0
.align 2, 0
_08088F58: .4byte gPaletteFade
_08088F5C: .4byte sub_8088C70
thumb_func_end sub_8088F30
thumb_func_start sub_8088F60
sub_8088F60: @ 8088F60
push {lr}
ldr r0, _08088F98 @ =gFieldEffectObjectTemplatePointers
ldr r0, [r0, 0x68]
movs r1, 0xFF
movs r2, 0xB4
movs r3, 0x1
bl CreateSprite
lsls r0, 24
lsrs r0, 24
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r1, _08088F9C @ =gSprites
adds r2, r1
ldrb r3, [r2, 0x5]
movs r1, 0xF
ands r1, r3
movs r3, 0xD
negs r3, r3
ands r1, r3
movs r3, 0x4
orrs r1, r3
strb r1, [r2, 0x5]
ldr r1, _08088FA0 @ =sub_8089018
str r1, [r2, 0x1C]
pop {r1}
bx r1
.align 2, 0
_08088F98: .4byte gFieldEffectObjectTemplatePointers
_08088F9C: .4byte gSprites
_08088FA0: .4byte sub_8089018
thumb_func_end sub_8088F60
thumb_func_start sub_8088FA4
sub_8088FA4: @ 8088FA4
lsls r0, 24
lsrs r0, 24
ldr r2, _08088FBC @ =gSprites
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
ldrh r0, [r1, 0x3C]
lsls r0, 24
lsrs r0, 24
bx lr
.align 2, 0
_08088FBC: .4byte gSprites
thumb_func_end sub_8088FA4
thumb_func_start sub_8088FC0
sub_8088FC0: @ 8088FC0
push {r4,lr}
lsls r0, 24
lsrs r0, 24
lsls r4, r0, 4
adds r4, r0
lsls r4, 2
ldr r0, _08088FF4 @ =gSprites
adds r4, r0
ldr r0, _08088FF8 @ =sub_80890D8
str r0, [r4, 0x1C]
movs r1, 0
movs r0, 0x78
strh r0, [r4, 0x20]
strh r1, [r4, 0x22]
strh r1, [r4, 0x24]
strh r1, [r4, 0x26]
adds r0, r4, 0
adds r0, 0x2E
movs r2, 0x10
bl memset
movs r0, 0x40
strh r0, [r4, 0x3A]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08088FF4: .4byte gSprites
_08088FF8: .4byte sub_80890D8
thumb_func_end sub_8088FC0
thumb_func_start sub_8088FFC
sub_8088FFC: @ 8088FFC
lsls r0, 24
lsrs r0, 24
lsls r1, 24
lsrs r1, 24
ldr r3, _08089014 @ =gSprites
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r3
strh r1, [r2, 0x3A]
bx lr
.align 2, 0
_08089014: .4byte gSprites
thumb_func_end sub_8088FFC
thumb_func_start sub_8089018
sub_8089018: @ 8089018
push {r4,lr}
adds r4, r0, 0
movs r1, 0x3C
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080890C4
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
bne _0808905C
ldrb r0, [r4, 0x1]
movs r1, 0x3
orrs r0, r1
strb r0, [r4, 0x1]
ldr r0, _080890CC @ =gSpriteAffineAnimTable_0839F44C
str r0, [r4, 0x10]
adds r0, r4, 0
bl InitSpriteAffineAnim
adds r0, r4, 0
movs r1, 0
bl StartSpriteAffineAnim
movs r0, 0x76
strh r0, [r4, 0x20]
ldr r0, _080890D0 @ =0x0000ffd0
strh r0, [r4, 0x22]
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
movs r0, 0x40
strh r0, [r4, 0x30]
adds r0, 0xC0
strh r0, [r4, 0x32]
_0808905C:
ldrh r0, [r4, 0x32]
lsls r0, 16
asrs r0, 24
ldrh r1, [r4, 0x30]
adds r0, r1
strh r0, [r4, 0x30]
movs r1, 0x30
ldrsh r0, [r4, r1]
movs r1, 0x78
bl Cos
strh r0, [r4, 0x24]
movs r1, 0x30
ldrsh r0, [r4, r1]
movs r1, 0x78
bl Sin
strh r0, [r4, 0x26]
ldrh r2, [r4, 0x32]
movs r0, 0x32
ldrsh r1, [r4, r0]
ldr r0, _080890D4 @ =0x000007ff
cmp r1, r0
bgt _08089092
adds r0, r2, 0
adds r0, 0x60
strh r0, [r4, 0x32]
_08089092:
movs r1, 0x30
ldrsh r0, [r4, r1]
cmp r0, 0x81
ble _080890C4
ldrh r0, [r4, 0x3C]
adds r0, 0x1
strh r0, [r4, 0x3C]
ldrb r1, [r4, 0x1]
movs r0, 0x4
negs r0, r0
ands r0, r1
strb r0, [r4, 0x1]
ldrb r0, [r4, 0x3]
lsls r0, 26
lsrs r0, 27
bl FreeOamMatrix
ldrb r1, [r4, 0x1]
lsrs r1, 6
ldrb r2, [r4, 0x3]
lsrs r2, 6
adds r0, r4, 0
movs r3, 0
bl CalcCenterToCornerVec
_080890C4:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080890CC: .4byte gSpriteAffineAnimTable_0839F44C
_080890D0: .4byte 0x0000ffd0
_080890D4: .4byte 0x000007ff
thumb_func_end sub_8089018
thumb_func_start sub_80890D8
sub_80890D8: @ 80890D8
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x32
ldrsh r0, [r4, r1]
movs r1, 0x8C
bl Cos
movs r5, 0
strh r0, [r4, 0x24]
movs r2, 0x32
ldrsh r0, [r4, r2]
movs r1, 0x48
bl Sin
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x32]
adds r0, 0x4
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x32]
movs r1, 0x3A
ldrsh r0, [r4, r1]
cmp r0, 0x40
beq _08089136
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
ldr r0, _08089148 @ =gSprites
adds r1, r0
adds r3, r1, 0
adds r3, 0x3E
ldrb r2, [r3]
movs r0, 0x3
negs r0, r0
ands r0, r2
strb r0, [r3]
ldrh r0, [r4, 0x24]
ldrh r2, [r4, 0x20]
adds r0, r2
strh r0, [r1, 0x20]
ldrh r0, [r4, 0x26]
ldrh r2, [r4, 0x22]
adds r0, r2
subs r0, 0x8
strh r0, [r1, 0x22]
strh r5, [r1, 0x24]
strh r5, [r1, 0x26]
_08089136:
movs r1, 0x32
ldrsh r0, [r4, r1]
cmp r0, 0x7F
ble _08089142
movs r0, 0x1
strh r0, [r4, 0x3C]
_08089142:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08089148: .4byte gSprites
thumb_func_end sub_80890D8
thumb_func_start sub_808914C
sub_808914C: @ 808914C
push {r4,lr}
adds r4, r0, 0
movs r1, 0x3C
ldrsh r0, [r4, r1]
cmp r0, 0
bne _08089220
movs r2, 0x2E
ldrsh r0, [r4, r2]
cmp r0, 0
bne _08089196
ldrb r0, [r4, 0x1]
movs r1, 0x3
orrs r0, r1
strb r0, [r4, 0x1]
ldr r0, _08089228 @ =gSpriteAffineAnimTable_0839F44C
str r0, [r4, 0x10]
adds r0, r4, 0
bl InitSpriteAffineAnim
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAffineAnim
movs r0, 0x5E
strh r0, [r4, 0x20]
ldr r0, _0808922C @ =0x0000ffe0
strh r0, [r4, 0x22]
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
movs r0, 0xF0
strh r0, [r4, 0x30]
movs r0, 0x80
lsls r0, 4
strh r0, [r4, 0x32]
movs r0, 0x80
strh r0, [r4, 0x36]
_08089196:
ldrh r1, [r4, 0x32]
lsls r1, 16
asrs r1, 24
ldrh r2, [r4, 0x30]
adds r2, r1
ldrh r0, [r4, 0x34]
adds r0, r1
strh r0, [r4, 0x34]
movs r0, 0xFF
ands r2, r0
strh r2, [r4, 0x30]
movs r3, 0x30
ldrsh r0, [r4, r3]
movs r1, 0x20
bl Cos
strh r0, [r4, 0x24]
movs r1, 0x30
ldrsh r0, [r4, r1]
movs r1, 0x78
bl Sin
strh r0, [r4, 0x26]
ldrh r1, [r4, 0x32]
movs r2, 0x32
ldrsh r0, [r4, r2]
movs r2, 0x80
lsls r2, 1
cmp r0, r2
ble _080891D8
ldrh r0, [r4, 0x36]
subs r0, r1, r0
strh r0, [r4, 0x32]
_080891D8:
ldrh r1, [r4, 0x36]
movs r3, 0x36
ldrsh r0, [r4, r3]
cmp r0, 0xFF
bgt _080891E8
adds r0, r1, 0
adds r0, 0x18
strh r0, [r4, 0x36]
_080891E8:
movs r1, 0x32
ldrsh r0, [r4, r1]
cmp r0, 0xFF
bgt _080891F2
strh r2, [r4, 0x32]
_080891F2:
movs r2, 0x34
ldrsh r0, [r4, r2]
cmp r0, 0x3B
ble _08089220
ldrh r0, [r4, 0x3C]
adds r0, 0x1
strh r0, [r4, 0x3C]
ldrb r1, [r4, 0x1]
movs r0, 0x4
negs r0, r0
ands r0, r1
strb r0, [r4, 0x1]
ldrb r0, [r4, 0x3]
lsls r0, 26
lsrs r0, 27
bl FreeOamMatrix
adds r2, r4, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
_08089220:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08089228: .4byte gSpriteAffineAnimTable_0839F44C
_0808922C: .4byte 0x0000ffe0
thumb_func_end sub_808914C
thumb_func_start sub_8089230
sub_8089230: @ 8089230
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
adds r0, r4, 0
bl sub_8088FC0
ldr r1, _08089254 @ =gSprites
lsls r0, r4, 4
adds r0, r4
lsls r0, 2
adds r1, 0x1C
adds r0, r1
ldr r1, _08089258 @ =sub_808914C
str r1, [r0]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08089254: .4byte gSprites
_08089258: .4byte sub_808914C
thumb_func_end sub_8089230
thumb_func_start FldEff_FlyIn
FldEff_FlyIn: @ 808925C
push {lr}
ldr r0, _0808926C @ =sub_8089270
movs r1, 0xFE
bl CreateTask
movs r0, 0
pop {r1}
bx r1
.align 2, 0
_0808926C: .4byte sub_8089270
thumb_func_end FldEff_FlyIn
thumb_func_start sub_8089270
sub_8089270: @ 8089270
push {lr}
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r3, _08089298 @ =gUnknown_0839F454
ldr r2, _0808929C @ =gTasks
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
movs r2, 0x8
ldrsh r1, [r0, r2]
lsls r1, 2
adds r1, r3
ldr r1, [r1]
bl _call_via_r1
pop {r0}
bx r0
.align 2, 0
_08089298: .4byte gUnknown_0839F454
_0808929C: .4byte gTasks
thumb_func_end sub_8089270
thumb_func_start sub_80892A0
sub_80892A0: @ 80892A0
push {r4-r6,lr}
adds r5, r0, 0
ldr r6, _08089348 @ =gPlayerAvatar
ldrb r1, [r6, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _0808934C @ =gMapObjects
adds r4, r0, r1
adds r0, r4, 0
bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
lsls r0, 24
cmp r0, 0
beq _080892CA
adds r0, r4, 0
bl FieldObjectClearAnimIfSpecialAnimFinished
lsls r0, 24
cmp r0, 0
beq _08089342
_080892CA:
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
movs r0, 0x11
strh r0, [r5, 0xC]
ldrb r0, [r6]
strh r0, [r5, 0x26]
movs r0, 0x1
strb r0, [r6, 0x6]
bl SetPlayerAvatarStateMask
ldrh r1, [r5, 0x26]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _080892F2
ldrb r0, [r4, 0x1A]
movs r1, 0
bl sub_8127ED0
_080892F2:
movs r0, 0x3
bl GetPlayerAvatarGraphicsIdByStateId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl sub_805B980
bl CameraObjectReset2
adds r0, r4, 0
movs r1, 0x3
bl FieldObjectTurn
ldrb r1, [r4, 0x4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _08089350 @ =gSprites
adds r0, r1
movs r1, 0x16
bl StartSpriteAnim
ldrb r1, [r4, 0x1]
movs r0, 0x21
negs r0, r0
ands r0, r1
strb r0, [r4, 0x1]
bl sub_8088F60
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0xA]
bl sub_8088FC0
ldrb r0, [r5, 0xA]
ldrb r1, [r4, 0x4]
bl sub_8088FFC
_08089342:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08089348: .4byte gPlayerAvatar
_0808934C: .4byte gMapObjects
_08089350: .4byte gSprites
thumb_func_end sub_80892A0
thumb_func_start sub_8089354
sub_8089354: @ 8089354
push {r4,r5,lr}
adds r5, r0, 0
ldrh r1, [r5, 0xC]
movs r2, 0xC
ldrsh r0, [r5, r2]
cmp r0, 0
beq _0808936C
subs r0, r1, 0x1
strh r0, [r5, 0xC]
lsls r0, 16
cmp r0, 0
bne _080893AC
_0808936C:
ldr r0, _080893B4 @ =gPlayerAvatar
ldrb r1, [r0, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _080893B8 @ =gMapObjects
adds r0, r1
ldrb r0, [r0, 0x4]
lsls r4, r0, 4
adds r4, r0
lsls r4, 2
ldr r0, _080893BC @ =gSprites
adds r4, r0
ldrb r0, [r5, 0xA]
movs r1, 0x40
bl sub_8088FFC
ldrh r0, [r4, 0x24]
ldrh r1, [r4, 0x20]
adds r0, r1
movs r1, 0
strh r0, [r4, 0x20]
ldrh r0, [r4, 0x26]
ldrh r2, [r4, 0x22]
adds r0, r2
strh r0, [r4, 0x22]
strh r1, [r4, 0x24]
strh r1, [r4, 0x26]
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
strh r1, [r5, 0xC]
_080893AC:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080893B4: .4byte gPlayerAvatar
_080893B8: .4byte gMapObjects
_080893BC: .4byte gSprites
thumb_func_end sub_8089354
thumb_func_start sub_80893C0
sub_80893C0: @ 80893C0
push {r4,lr}
sub sp, 0x24
adds r4, r0, 0
ldr r1, _08089408 @ =gUnknown_0839F470
mov r0, sp
movs r2, 0x24
bl memcpy
ldr r0, _0808940C @ =gPlayerAvatar
ldrb r0, [r0, 0x4]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
ldr r0, _08089410 @ =gSprites
adds r1, r0
movs r2, 0xC
ldrsh r0, [r4, r2]
lsls r0, 1
add r0, sp
ldrh r0, [r0]
strh r0, [r1, 0x26]
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0x11
ble _080893FE
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_080893FE:
add sp, 0x24
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08089408: .4byte gUnknown_0839F470
_0808940C: .4byte gPlayerAvatar
_08089410: .4byte gSprites
thumb_func_end sub_80893C0
thumb_func_start sub_8089414
sub_8089414: @ 8089414
push {r4-r6,lr}
adds r6, r0, 0
ldrb r0, [r6, 0xA]
bl sub_8088FA4
lsls r0, 24
cmp r0, 0
beq _08089478
ldr r0, _08089480 @ =gPlayerAvatar
ldrb r0, [r0, 0x5]
lsls r5, r0, 3
adds r5, r0
lsls r5, 2
ldr r0, _08089484 @ =gMapObjects
adds r5, r0
ldrb r0, [r5, 0x4]
lsls r4, r0, 4
adds r4, r0
lsls r4, 2
ldr r0, _08089488 @ =gSprites
adds r4, r0
ldrb r1, [r5, 0x1]
movs r0, 0x11
negs r0, r0
ands r0, r1
strb r0, [r5, 0x1]
movs r0, 0x10
ldrsh r1, [r5, r0]
movs r0, 0x12
ldrsh r2, [r5, r0]
adds r0, r5, 0
bl sub_805C058
movs r0, 0
strh r0, [r4, 0x24]
strh r0, [r4, 0x26]
adds r4, 0x3E
ldrb r0, [r4]
movs r1, 0x2
orrs r0, r1
strb r0, [r4]
bl sub_8059BF4
adds r0, r5, 0
movs r1, 0x39
bl FieldObjectSetSpecialAnim
ldrh r0, [r6, 0x8]
adds r0, 0x1
strh r0, [r6, 0x8]
_08089478:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08089480: .4byte gPlayerAvatar
_08089484: .4byte gMapObjects
_08089488: .4byte gSprites
thumb_func_end sub_8089414
thumb_func_start sub_808948C
sub_808948C: @ 808948C
push {r4,lr}
adds r4, r0, 0
ldr r0, _080894BC @ =gPlayerAvatar
ldrb r1, [r0, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _080894C0 @ =gMapObjects
adds r0, r1
bl FieldObjectClearAnimIfSpecialAnimFinished
lsls r0, 24
cmp r0, 0
beq _080894B4
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
ldrb r0, [r4, 0xA]
bl sub_8089230
_080894B4:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080894BC: .4byte gPlayerAvatar
_080894C0: .4byte gMapObjects
thumb_func_end sub_808948C
thumb_func_start sub_80894C4
sub_80894C4: @ 80894C4
push {r4,lr}
adds r4, r0, 0
ldrb r0, [r4, 0xA]
bl sub_8088FA4
lsls r0, 24
cmp r0, 0
beq _080894F0
movs r0, 0xA
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080894F8 @ =gSprites
adds r0, r1
bl DestroySprite
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
movs r0, 0x10
strh r0, [r4, 0xA]
_080894F0:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080894F8: .4byte gSprites
thumb_func_end sub_80894C4
thumb_func_start fishE
fishE: @ 80894FC
push {r4-r7,lr}
adds r5, r0, 0
ldrh r0, [r5, 0xA]
subs r0, 0x1
strh r0, [r5, 0xA]
lsls r0, 16
cmp r0, 0
bne _08089566
ldr r6, _0808956C @ =gPlayerAvatar
ldrb r1, [r6, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _08089570 @ =gMapObjects
adds r4, r0, r1
movs r7, 0
ldrh r1, [r5, 0x26]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _08089530
movs r7, 0x3
ldrb r0, [r4, 0x1A]
movs r1, 0x1
bl sub_8127ED0
_08089530:
adds r0, r7, 0
bl GetPlayerAvatarGraphicsIdByStateId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl sub_805B980
adds r0, r4, 0
movs r1, 0x1
bl FieldObjectTurn
ldrh r0, [r5, 0x26]
strb r0, [r6]
movs r0, 0
strb r0, [r6, 0x6]
movs r0, 0x20
bl FieldEffectActiveListRemove
ldr r0, _08089574 @ =sub_8089270
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
_08089566:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0808956C: .4byte gPlayerAvatar
_08089570: .4byte gMapObjects
_08089574: .4byte sub_8089270
thumb_func_end fishE
.align 2, 0 @ Don't pad with nop.