diff options
Diffstat (limited to 'asm/field_effect.s')
-rw-r--r-- | asm/field_effect.s | 7738 |
1 files changed, 7738 insertions, 0 deletions
diff --git a/asm/field_effect.s b/asm/field_effect.s new file mode 100644 index 000000000..4bcba42ce --- /dev/null +++ b/asm/field_effect.s @@ -0,0 +1,7738 @@ + .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 @ =gUnknown_03005CE0 + 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 gUnknown_03005CE0 +_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 @ =gUnknown_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 gUnknown_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 @ =gUnknown_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 gUnknown_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. |