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