.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start FldEff_UseSurf FldEff_UseSurf: @ 8086944 push {r4,lr} ldr r0, _08086980 @ =Task_FldEffUseSurf movs r1, 0xFF bl CreateTask lsls r0, 24 lsrs r0, 24 ldr r2, _08086984 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 ldr r0, _08086988 @ =gFieldEffectArguments ldr r0, [r0] strh r0, [r1, 0x26] bl sav1_reset_battle_music_maybe ldr r4, _0808698C @ =0x00000131 @MUS_NAMINORI adds r0, r4, 0 bl sub_8056124 cmp r0, 0 beq _08086978 adds r0, r4, 0 bl Overworld_ChangeMusicTo _08086978: movs r0, 0 pop {r4} pop {r1} bx r1 .align 2, 0 _08086980: .4byte Task_FldEffUseSurf _08086984: .4byte gTasks _08086988: .4byte gFieldEffectArguments _0808698C: .4byte 0x00000131 @MUS_NAMINORI thumb_func_end FldEff_UseSurf thumb_func_start Task_FldEffUseSurf Task_FldEffUseSurf: @ 8086990 push {lr} adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldr r3, _080869B8 @ =sUseSurfEffectFuncs ldr r2, _080869BC @ =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 _080869B8: .4byte sUseSurfEffectFuncs _080869BC: .4byte gTasks thumb_func_end Task_FldEffUseSurf thumb_func_start UseSurfEffect_1 UseSurfEffect_1: @ 80869C0 push {r4-r6,lr} mov r6, r8 push {r6} adds r4, r0, 0 bl ScriptContext2_Enable bl FreezeObjectEvents ldr r5, _08086A18 @ =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, _08086A1C @ =gObjectEvents 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 _08086A18: .4byte gPlayerAvatar _08086A1C: .4byte gObjectEvents thumb_func_end UseSurfEffect_1 thumb_func_start UseSurfEffect_2 UseSurfEffect_2: @ 8086A20 push {r4,r5,lr} adds r5, r0, 0 ldr r0, _08086A64 @ =gPlayerAvatar ldrb r1, [r0, 0x5] lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _08086A68 @ =gObjectEvents adds r4, r0, r1 adds r0, r4, 0 bl ObjectEventIsMovementOverridden lsls r0, 24 cmp r0, 0 beq _08086A4A adds r0, r4, 0 bl ObjectEventClearHeldMovementIfFinished lsls r0, 24 cmp r0, 0 beq _08086A5C _08086A4A: bl sub_805CB70 adds r0, r4, 0 movs r1, 0x45 bl ObjectEventSetHeldMovement ldrh r0, [r5, 0x8] adds r0, 0x1 strh r0, [r5, 0x8] _08086A5C: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08086A64: .4byte gPlayerAvatar _08086A68: .4byte gObjectEvents thumb_func_end UseSurfEffect_2 thumb_func_start UseSurfEffect_3 UseSurfEffect_3: @ 8086A6C push {r4,lr} adds r4, r0, 0 ldr r0, _08086AA8 @ =gPlayerAvatar ldrb r1, [r0, 0x5] lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _08086AAC @ =gObjectEvents adds r0, r1 bl ObjectEventCheckHeldMovementStatus lsls r0, 24 cmp r0, 0 beq _08086AA2 ldr r2, _08086AB0 @ =gFieldEffectArguments 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] _08086AA2: pop {r4} pop {r0} bx r0 .align 2, 0 _08086AA8: .4byte gPlayerAvatar _08086AAC: .4byte gObjectEvents _08086AB0: .4byte gFieldEffectArguments thumb_func_end UseSurfEffect_3 thumb_func_start UseSurfEffect_4 UseSurfEffect_4: @ 8086AB4 push {r4-r6,lr} adds r6, r0, 0 movs r0, 0x6 bl FieldEffectActiveListContains lsls r0, 24 cmp r0, 0 bne _08086B1E ldr r5, _08086B24 @ =gPlayerAvatar ldrb r0, [r5, 0x5] lsls r4, r0, 3 adds r4, r0 lsls r4, 2 ldr r0, _08086B28 @ =gObjectEvents adds r4, r0 movs r0, 0x2 bl GetPlayerAvatarGraphicsIdByStateId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl ObjectEventSetGraphicsId adds r0, r4, 0 bl ObjectEventClearHeldMovementIfFinished ldrb r0, [r4, 0x18] lsrs r0, 4 bl sub_80641C0 adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl ObjectEventSetHeldMovement ldr r1, _08086B2C @ =gFieldEffectArguments 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] _08086B1E: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08086B24: .4byte gPlayerAvatar _08086B28: .4byte gObjectEvents _08086B2C: .4byte gFieldEffectArguments thumb_func_end UseSurfEffect_4 thumb_func_start UseSurfEffect_5 UseSurfEffect_5: @ 8086B30 push {r4,r5,lr} ldr r5, _08086B9C @ =gPlayerAvatar ldrb r1, [r5, 0x5] lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _08086BA0 @ =gObjectEvents adds r4, r0, r1 adds r0, r4, 0 bl ObjectEventClearHeldMovementIfFinished lsls r0, 24 cmp r0, 0 beq _08086B96 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 GetFaceDirectionMovementAction adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl ObjectEventSetHeldMovement ldrb r0, [r4, 0x1A] movs r1, 0x1 bl sub_80DC44C bl UnfreezeObjectEvents bl ScriptContext2_Disable movs r0, 0x9 bl FieldEffectActiveListRemove ldr r0, _08086BA4 @ =Task_FldEffUseSurf bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 bl DestroyTask movs r0, 0x16 bl HelpSystem_SetSomeVariable2 _08086B96: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08086B9C: .4byte gPlayerAvatar _08086BA0: .4byte gObjectEvents _08086BA4: .4byte Task_FldEffUseSurf thumb_func_end UseSurfEffect_5 thumb_func_start FldEff_Unk41 FldEff_Unk41: @ 8086BA8 push {lr} ldr r0, _08086BC8 @ =gQuestLogState ldrb r0, [r0] cmp r0, 0x1 bne _08086BBA movs r0, 0x8 movs r1, 0x59 bl sub_811278C _08086BBA: ldr r0, _08086BCC @ =Task_FldEffUnk41 movs r1, 0xFF bl CreateTask movs r0, 0 pop {r1} bx r1 .align 2, 0 _08086BC8: .4byte gQuestLogState _08086BCC: .4byte Task_FldEffUnk41 thumb_func_end FldEff_Unk41 thumb_func_start Task_FldEffUnk41 Task_FldEffUnk41: @ 8086BD0 push {lr} adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldr r3, _08086BF8 @ =sUnk41EffectFuncs ldr r2, _08086BFC @ =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 _08086BF8: .4byte sUnk41EffectFuncs _08086BFC: .4byte gTasks thumb_func_end Task_FldEffUnk41 thumb_func_start Unk41Effect_1 Unk41Effect_1: @ 8086C00 push {r4,lr} adds r4, r0, 0 bl ScriptContext2_Enable bl FreezeObjectEvents ldr r1, _08086C20 @ =gPlayerAvatar movs r0, 0x1 strb r0, [r1, 0x6] ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] pop {r4} pop {r0} bx r0 .align 2, 0 _08086C20: .4byte gPlayerAvatar thumb_func_end Unk41Effect_1 thumb_func_start Unk41Effect_2 Unk41Effect_2: @ 8086C24 push {r4,r5,lr} adds r5, r0, 0 ldr r0, _08086C68 @ =gPlayerAvatar ldrb r1, [r0, 0x5] lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _08086C6C @ =gObjectEvents adds r4, r0, r1 adds r0, r4, 0 bl ObjectEventIsMovementOverridden lsls r0, 24 cmp r0, 0 beq _08086C4E adds r0, r4, 0 bl ObjectEventClearHeldMovementIfFinished lsls r0, 24 cmp r0, 0 beq _08086C60 _08086C4E: bl sub_805CBE8 adds r0, r4, 0 movs r1, 0x45 bl ObjectEventSetHeldMovement ldrh r0, [r5, 0x8] adds r0, 0x1 strh r0, [r5, 0x8] _08086C60: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08086C68: .4byte gPlayerAvatar _08086C6C: .4byte gObjectEvents thumb_func_end Unk41Effect_2 thumb_func_start Unk41Effect_3 Unk41Effect_3: @ 8086C70 push {r4-r6,lr} adds r6, r0, 0 ldr r5, _08086C9C @ =gPlayerAvatar ldrb r1, [r5, 0x5] lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _08086CA0 @ =gObjectEvents adds r4, r0, r1 adds r0, r4, 0 bl ObjectEventClearHeldMovementIfFinished lsls r0, 24 cmp r0, 0 beq _08086CEE ldrb r1, [r5] movs r0, 0x6 ands r0, r1 cmp r0, 0 beq _08086CA4 movs r0, 0x1 b _08086CAE .align 2, 0 _08086C9C: .4byte gPlayerAvatar _08086CA0: .4byte gObjectEvents _08086CA4: movs r0, 0x8 ands r0, r1 cmp r0, 0 beq _08086CC0 movs r0, 0x2 _08086CAE: bl GetPlayerAvatarGraphicsIdByStateId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl ObjectEventSetGraphicsId b _08086CD2 _08086CC0: movs r0, 0 bl GetPlayerAvatarGraphicsIdByStateId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl ObjectEventSetGraphicsId _08086CD2: ldrb r0, [r4, 0x18] lsls r0, 28 lsrs r0, 28 bl GetFaceDirectionMovementAction adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl ObjectEventForceSetSpecialAnim ldrh r0, [r6, 0x8] adds r0, 0x1 strh r0, [r6, 0x8] _08086CEE: pop {r4-r6} pop {r0} bx r0 thumb_func_end Unk41Effect_3 thumb_func_start Unk41Effect_4 Unk41Effect_4: @ 8086CF4 push {r4,lr} ldr r4, _08086D2C @ =gPlayerAvatar ldrb r1, [r4, 0x5] lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _08086D30 @ =gObjectEvents adds r0, r1 bl ObjectEventClearHeldMovementIfFinished lsls r0, 24 cmp r0, 0 beq _08086D26 movs r0, 0 strb r0, [r4, 0x6] movs r0, 0x41 bl FieldEffectActiveListRemove ldr r0, _08086D34 @ =Task_FldEffUnk41 bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 bl DestroyTask _08086D26: pop {r4} pop {r0} bx r0 .align 2, 0 _08086D2C: .4byte gPlayerAvatar _08086D30: .4byte gObjectEvents _08086D34: .4byte Task_FldEffUnk41 thumb_func_end Unk41Effect_4 thumb_func_start sub_8086D38 sub_8086D38: @ 8086D38 push {r4,lr} ldr r0, _08086D84 @ =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, _08086D88 @ =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, _08086D8C @ =sub_8086D94 str r0, [r2, 0x1C] ldr r0, _08086D90 @ =gFieldEffectArguments ldr r0, [r0] strh r0, [r2, 0x30] movs r0, 0x97 bl PlaySE adds r0, r4, 0 pop {r4} pop {r1} bx r1 .align 2, 0 _08086D84: .4byte gFieldEffectObjectTemplatePointers _08086D88: .4byte gSprites _08086D8C: .4byte sub_8086D94 _08086D90: .4byte gFieldEffectArguments thumb_func_end sub_8086D38 thumb_func_start sub_8086D94 sub_8086D94: @ 8086D94 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 _08086DF6 movs r2, 0x30 ldrsh r0, [r4, r2] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 ldr r0, _08086E0C @ =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] _08086DF6: movs r1, 0x32 ldrsh r0, [r4, r1] cmp r0, 0x7F ble _08086E06 adds r0, r4, 0 movs r1, 0x1E bl FieldEffectStop _08086E06: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08086E0C: .4byte gSprites thumb_func_end sub_8086D94 thumb_func_start FldEff_UseFly FldEff_UseFly: @ 8086E10 push {lr} ldr r0, _08086E34 @ =sub_8086E40 movs r1, 0xFE bl CreateTask lsls r0, 24 lsrs r0, 24 ldr r2, _08086E38 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 ldr r0, _08086E3C @ =gFieldEffectArguments ldr r0, [r0] strh r0, [r1, 0xA] movs r0, 0 pop {r1} bx r1 .align 2, 0 _08086E34: .4byte sub_8086E40 _08086E38: .4byte gTasks _08086E3C: .4byte gFieldEffectArguments thumb_func_end FldEff_UseFly thumb_func_start sub_8086E40 sub_8086E40: @ 8086E40 push {lr} adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldr r3, _08086E68 @ =gUnknown_83CC178 ldr r2, _08086E6C @ =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 _08086E68: .4byte gUnknown_83CC178 _08086E6C: .4byte gTasks thumb_func_end sub_8086E40 thumb_func_start sub_8086E70 sub_8086E70: @ 8086E70 push {r4-r6,lr} adds r5, r0, 0 ldr r6, _08086EC0 @ =gPlayerAvatar ldrb r1, [r6, 0x5] lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _08086EC4 @ =gObjectEvents adds r4, r0, r1 adds r0, r4, 0 bl ObjectEventIsMovementOverridden lsls r0, 24 cmp r0, 0 beq _08086E9A adds r0, r4, 0 bl ObjectEventClearHeldMovementIfFinished lsls r0, 24 cmp r0, 0 beq _08086EB8 _08086E9A: ldrb r0, [r6] strh r0, [r5, 0x26] movs r0, 0x1 strb r0, [r6, 0x6] bl SetPlayerAvatarStateMask bl sub_805CB70 adds r0, r4, 0 movs r1, 0x45 bl ObjectEventSetHeldMovement ldrh r0, [r5, 0x8] adds r0, 0x1 strh r0, [r5, 0x8] _08086EB8: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08086EC0: .4byte gPlayerAvatar _08086EC4: .4byte gObjectEvents thumb_func_end sub_8086E70 thumb_func_start sub_8086EC8 sub_8086EC8: @ 8086EC8 push {r4,lr} adds r4, r0, 0 ldr r0, _08086F00 @ =gPlayerAvatar ldrb r1, [r0, 0x5] lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _08086F04 @ =gObjectEvents adds r0, r1 bl ObjectEventClearHeldMovementIfFinished lsls r0, 24 cmp r0, 0 beq _08086EF8 ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] ldr r1, _08086F08 @ =gFieldEffectArguments movs r2, 0xA ldrsh r0, [r4, r2] str r0, [r1] movs r0, 0x3B bl FieldEffectStart _08086EF8: pop {r4} pop {r0} bx r0 .align 2, 0 _08086F00: .4byte gPlayerAvatar _08086F04: .4byte gObjectEvents _08086F08: .4byte gFieldEffectArguments thumb_func_end sub_8086EC8 thumb_func_start sub_8086F0C sub_8086F0C: @ 8086F0C push {r4,r5,lr} adds r4, r0, 0 movs r0, 0x6 bl FieldEffectActiveListContains lsls r0, 24 cmp r0, 0 bne _08086F54 ldr r0, _08086F5C @ =gPlayerAvatar ldrb r1, [r0, 0x5] lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _08086F60 @ =gObjectEvents adds r5, r0, r1 ldrh r1, [r4, 0x26] movs r0, 0x8 ands r0, r1 cmp r0, 0 beq _08086F44 ldrb r0, [r5, 0x1A] movs r1, 0x2 bl sub_80DC44C ldrb r0, [r5, 0x1A] movs r1, 0 bl sub_80DC478 _08086F44: bl sub_8087168 lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0xA] ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] _08086F54: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08086F5C: .4byte gPlayerAvatar _08086F60: .4byte gObjectEvents thumb_func_end sub_8086F0C thumb_func_start sub_8086F64 sub_8086F64: @ 8086F64 push {r4,lr} adds r4, r0, 0 ldrb r0, [r4, 0xA] bl sub_80871AC lsls r0, 24 cmp r0, 0 beq _08086F98 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, _08086FA0 @ =gPlayerAvatar ldrb r1, [r0, 0x5] lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _08086FA4 @ =gObjectEvents adds r0, r1 movs r1, 0x2 bl ObjectEventSetHeldMovement _08086F98: pop {r4} pop {r0} bx r0 .align 2, 0 _08086FA0: .4byte gPlayerAvatar _08086FA4: .4byte gObjectEvents thumb_func_end sub_8086F64 thumb_func_start sub_8086FA8 sub_8086FA8: @ 8086FA8 push {r4,lr} adds r4, r0, 0 ldr r0, _08086FF4 @ =gPlayerAvatar ldrb r1, [r0, 0x5] lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _08086FF8 @ =gObjectEvents adds r2, r0, r1 ldrh r1, [r4, 0xC] movs r3, 0xC ldrsh r0, [r4, r3] cmp r0, 0 beq _08086FCE subs r0, r1, 0x1 strh r0, [r4, 0xC] lsls r0, 16 cmp r0, 0 bne _08086FEC _08086FCE: adds r0, r2, 0 bl ObjectEventClearHeldMovementIfFinished lsls r0, 24 cmp r0, 0 beq _08086FEC ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] movs r0, 0x97 bl PlaySE ldrb r0, [r4, 0xA] bl sub_80871C8 _08086FEC: pop {r4} pop {r0} bx r0 .align 2, 0 _08086FF4: .4byte gPlayerAvatar _08086FF8: .4byte gObjectEvents thumb_func_end sub_8086FA8 thumb_func_start sub_8086FFC sub_8086FFC: @ 8086FFC 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, 0x7 ble _0808705A ldr r0, _08087060 @ =gPlayerAvatar ldrb r0, [r0, 0x5] lsls r4, r0, 3 adds r4, r0 lsls r4, 2 ldr r0, _08087064 @ =gObjectEvents adds r4, r0 movs r0, 0x2 bl GetPlayerAvatarGraphicsIdByStateId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl ObjectEventSetGraphicsId ldrb r1, [r4, 0x4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _08087068 @ =gSprites adds r0, r1 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, 0x54 bl ObjectEventSetHeldMovement ldrh r0, [r5, 0x8] adds r0, 0x1 strh r0, [r5, 0x8] movs r0, 0 strh r0, [r5, 0xC] _0808705A: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08087060: .4byte gPlayerAvatar _08087064: .4byte gObjectEvents _08087068: .4byte gSprites thumb_func_end sub_8086FFC thumb_func_start sub_808706C sub_808706C: @ 808706C 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 _080870FC ldr r0, _08087104 @ =gPlayerAvatar ldrb r0, [r0, 0x5] lsls r4, r0, 3 adds r4, r0 lsls r4, 2 ldr r0, _08087108 @ =gObjectEvents adds r4, r0 adds r0, r4, 0 bl ObjectEventClearAnimIfSpecialAnimActive 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_8087204 movs r0, 0xA ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r4, _0808710C @ =gSprites adds r0, r4 ldr r1, _08087110 @ =gSaveBlock2Ptr ldr r1, [r1] ldrb r1, [r1, 0x8] lsls r1, 1 adds r1, 0x1 lsls r1, 24 lsrs r1, 24 bl StartSpriteAnim movs r0, 0xA ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 movs r1, 0 bl sub_80877FC movs r0, 0xA ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r4, 0x1C adds r0, r4 ldr r1, _08087114 @ =sub_8087828 str r1, [r0] bl CameraObjectReset2 ldrh r0, [r5, 0x8] adds r0, 0x1 strh r0, [r5, 0x8] _080870FC: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08087104: .4byte gPlayerAvatar _08087108: .4byte gObjectEvents _0808710C: .4byte gSprites _08087110: .4byte gSaveBlock2Ptr _08087114: .4byte sub_8087828 thumb_func_end sub_808706C thumb_func_start sub_8087118 sub_8087118: @ 8087118 push {r4,lr} adds r4, r0, 0 ldrb r0, [r4, 0xA] bl sub_80871AC lsls r0, 24 cmp r0, 0 beq _08087132 bl WarpFadeOutScreen ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] _08087132: pop {r4} pop {r0} bx r0 thumb_func_end sub_8087118 thumb_func_start sub_8087138 sub_8087138: @ 8087138 push {lr} ldr r0, _08087160 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0808715A movs r0, 0x1F bl FieldEffectActiveListRemove ldr r0, _08087164 @ =sub_8086E40 bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 bl DestroyTask _0808715A: pop {r0} bx r0 .align 2, 0 _08087160: .4byte gPaletteFade _08087164: .4byte sub_8086E40 thumb_func_end sub_8087138 thumb_func_start sub_8087168 sub_8087168: @ 8087168 push {lr} ldr r0, _080871A0 @ =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, _080871A4 @ =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, _080871A8 @ =sub_8087220 str r1, [r2, 0x1C] pop {r1} bx r1 .align 2, 0 _080871A0: .4byte gFieldEffectObjectTemplatePointers _080871A4: .4byte gSprites _080871A8: .4byte sub_8087220 thumb_func_end sub_8087168 thumb_func_start sub_80871AC sub_80871AC: @ 80871AC lsls r0, 24 lsrs r0, 24 ldr r2, _080871C4 @ =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 _080871C4: .4byte gSprites thumb_func_end sub_80871AC thumb_func_start sub_80871C8 sub_80871C8: @ 80871C8 push {r4,lr} lsls r0, 24 lsrs r0, 24 lsls r4, r0, 4 adds r4, r0 lsls r4, 2 ldr r0, _080871FC @ =gSprites adds r4, r0 ldr r0, _08087200 @ =sub_80872F0 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 _080871FC: .4byte gSprites _08087200: .4byte sub_80872F0 thumb_func_end sub_80871C8 thumb_func_start sub_8087204 sub_8087204: @ 8087204 lsls r0, 24 lsrs r0, 24 lsls r1, 24 lsrs r1, 24 ldr r3, _0808721C @ =gSprites lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r2, r3 strh r1, [r2, 0x3A] bx lr .align 2, 0 _0808721C: .4byte gSprites thumb_func_end sub_8087204 thumb_func_start sub_8087220 sub_8087220: @ 8087220 push {r4,lr} adds r4, r0, 0 movs r1, 0x3C ldrsh r0, [r4, r1] cmp r0, 0 bne _080872E2 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 bne _0808727A ldrb r0, [r4, 0x1] movs r1, 0x3 orrs r0, r1 strb r0, [r4, 0x1] ldr r0, _0808725C @ =gUnknown_83CC1CC str r0, [r4, 0x10] adds r0, r4, 0 bl InitSpriteAffineAnim adds r0, r4, 0 movs r1, 0 bl StartSpriteAffineAnim ldr r0, _08087260 @ =gSaveBlock2Ptr ldr r0, [r0] ldrb r0, [r0, 0x8] cmp r0, 0 bne _08087264 movs r0, 0x80 b _08087266 .align 2, 0 _0808725C: .4byte gUnknown_83CC1CC _08087260: .4byte gSaveBlock2Ptr _08087264: movs r0, 0x76 _08087266: strh r0, [r4, 0x20] ldr r0, _080872E8 @ =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] _0808727A: 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, _080872EC @ =0x000007ff cmp r1, r0 bgt _080872B0 adds r0, r2, 0 adds r0, 0x60 strh r0, [r4, 0x32] _080872B0: movs r1, 0x30 ldrsh r0, [r4, r1] cmp r0, 0x81 ble _080872E2 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 _080872E2: pop {r4} pop {r0} bx r0 .align 2, 0 _080872E8: .4byte 0x0000ffd0 _080872EC: .4byte 0x000007ff thumb_func_end sub_8087220 thumb_func_start sub_80872F0 sub_80872F0: @ 80872F0 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 _0808734E lsls r1, r0, 4 adds r1, r0 lsls r1, 2 ldr r0, _08087360 @ =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] _0808734E: movs r1, 0x32 ldrsh r0, [r4, r1] cmp r0, 0x7F ble _0808735A movs r0, 0x1 strh r0, [r4, 0x3C] _0808735A: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08087360: .4byte gSprites thumb_func_end sub_80872F0 thumb_func_start sub_8087364 sub_8087364: @ 8087364 push {r4,lr} adds r4, r0, 0 movs r1, 0x3C ldrsh r0, [r4, r1] cmp r0, 0 bne _0808744E movs r2, 0x2E ldrsh r0, [r4, r2] cmp r0, 0 bne _080873C4 ldrb r0, [r4, 0x1] movs r1, 0x3 orrs r0, r1 strb r0, [r4, 0x1] ldr r0, _080873A0 @ =gUnknown_83CC1CC str r0, [r4, 0x10] adds r0, r4, 0 bl InitSpriteAffineAnim adds r0, r4, 0 movs r1, 0x1 bl StartSpriteAffineAnim ldr r0, _080873A4 @ =gSaveBlock2Ptr ldr r0, [r0] ldrb r0, [r0, 0x8] cmp r0, 0 bne _080873A8 movs r0, 0x70 b _080873AA .align 2, 0 _080873A0: .4byte gUnknown_83CC1CC _080873A4: .4byte gSaveBlock2Ptr _080873A8: movs r0, 0x64 _080873AA: strh r0, [r4, 0x20] ldr r0, _08087454 @ =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] _080873C4: 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 _08087406 ldrh r0, [r4, 0x36] subs r0, r1, r0 strh r0, [r4, 0x32] _08087406: ldrh r1, [r4, 0x36] movs r3, 0x36 ldrsh r0, [r4, r3] cmp r0, 0xFF bgt _08087416 adds r0, r1, 0 adds r0, 0x18 strh r0, [r4, 0x36] _08087416: movs r1, 0x32 ldrsh r0, [r4, r1] cmp r0, 0xFF bgt _08087420 strh r2, [r4, 0x32] _08087420: movs r2, 0x34 ldrsh r0, [r4, r2] cmp r0, 0x3B ble _0808744E 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] _0808744E: pop {r4} pop {r0} bx r0 .align 2, 0 _08087454: .4byte 0x0000ffe0 thumb_func_end sub_8087364 thumb_func_start sub_8087458 sub_8087458: @ 8087458 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r4, 0 bl sub_80871C8 ldr r1, _0808747C @ =gSprites lsls r0, r4, 4 adds r0, r4 lsls r0, 2 adds r1, 0x1C adds r0, r1 ldr r1, _08087480 @ =sub_8087364 str r1, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 _0808747C: .4byte gSprites _08087480: .4byte sub_8087364 thumb_func_end sub_8087458 thumb_func_start FldEff_FlyIn FldEff_FlyIn: @ 8087484 push {lr} ldr r0, _08087494 @ =sub_8087498 movs r1, 0xFE bl CreateTask movs r0, 0 pop {r1} bx r1 .align 2, 0 _08087494: .4byte sub_8087498 thumb_func_end FldEff_FlyIn thumb_func_start sub_8087498 sub_8087498: @ 8087498 push {lr} adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldr r3, _080874C0 @ =gUnknown_83CC1D4 ldr r2, _080874C4 @ =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 _080874C0: .4byte gUnknown_83CC1D4 _080874C4: .4byte gTasks thumb_func_end sub_8087498 thumb_func_start sub_80874C8 sub_80874C8: @ 80874C8 push {r4-r6,lr} adds r6, r0, 0 ldr r4, _080875B4 @ =gPlayerAvatar ldrb r1, [r4, 0x5] lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _080875B8 @ =gObjectEvents adds r5, r0, r1 adds r0, r5, 0 bl ObjectEventIsMovementOverridden lsls r0, 24 cmp r0, 0 beq _080874F2 adds r0, r5, 0 bl ObjectEventClearHeldMovementIfFinished lsls r0, 24 cmp r0, 0 beq _080875AE _080874F2: ldrh r0, [r6, 0x8] adds r0, 0x1 strh r0, [r6, 0x8] movs r0, 0x21 strh r0, [r6, 0xC] ldrb r0, [r4] strh r0, [r6, 0x26] movs r0, 0x1 strb r0, [r4, 0x6] bl SetPlayerAvatarStateMask ldrh r1, [r6, 0x26] movs r0, 0x8 ands r0, r1 cmp r0, 0 beq _0808751A ldrb r0, [r5, 0x1A] movs r1, 0 bl sub_80DC44C _0808751A: movs r0, 0x2 bl GetPlayerAvatarGraphicsIdByStateId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r5, 0 bl ObjectEventSetGraphicsId bl CameraObjectReset2 adds r0, r5, 0 movs r1, 0x3 bl ObjectEventTurn ldrb r1, [r5, 0x4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r4, _080875BC @ =gSprites adds r0, r4 movs r1, 0x16 bl StartSpriteAnim ldrb r1, [r5, 0x1] movs r0, 0x21 negs r0, r0 ands r0, r1 strb r0, [r5, 0x1] bl sub_8087168 lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0xA] bl sub_80871C8 ldrb r0, [r6, 0xA] ldrb r1, [r5, 0x4] bl sub_8087204 movs r0, 0xA ldrsh r1, [r6, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 ldr r1, _080875C0 @ =gSaveBlock2Ptr ldr r1, [r1] ldrb r1, [r1, 0x8] lsls r1, 25 movs r2, 0x80 lsls r2, 18 adds r1, r2 lsrs r1, 24 bl StartSpriteAnim movs r0, 0xA ldrsh r1, [r6, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 movs r1, 0x1 bl sub_80877FC movs r2, 0xA ldrsh r1, [r6, r2] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r4, 0x1C adds r0, r4 ldr r1, _080875C4 @ =sub_8087828 str r1, [r0] _080875AE: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080875B4: .4byte gPlayerAvatar _080875B8: .4byte gObjectEvents _080875BC: .4byte gSprites _080875C0: .4byte gSaveBlock2Ptr _080875C4: .4byte sub_8087828 thumb_func_end sub_80874C8 thumb_func_start sub_80875C8 sub_80875C8: @ 80875C8 push {r4-r6,lr} adds r5, r0, 0 movs r0, 0xA ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r6, _08087638 @ =gSprites adds r0, r6 bl sub_80878C0 ldrh r1, [r5, 0xC] movs r2, 0xC ldrsh r0, [r5, r2] cmp r0, 0 beq _080875F2 subs r0, r1, 0x1 strh r0, [r5, 0xC] lsls r0, 16 cmp r0, 0 bne _08087630 _080875F2: ldr r0, _0808763C @ =gPlayerAvatar ldrb r1, [r0, 0x5] lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _08087640 @ =gObjectEvents adds r0, r1 ldrb r0, [r0, 0x4] lsls r4, r0, 4 adds r4, r0 lsls r4, 2 adds r4, r6 ldrb r0, [r5, 0xA] movs r1, 0x40 bl sub_8087204 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] _08087630: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08087638: .4byte gSprites _0808763C: .4byte gPlayerAvatar _08087640: .4byte gObjectEvents thumb_func_end sub_80875C8 thumb_func_start sub_8087644 sub_8087644: @ 8087644 push {r4,lr} sub sp, 0x24 adds r4, r0, 0 ldr r1, _0808768C @ =gUnknown_83CC1F0 mov r0, sp movs r2, 0x24 bl memcpy ldr r0, _08087690 @ =gPlayerAvatar ldrb r0, [r0, 0x4] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 ldr r0, _08087694 @ =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 _08087682 ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] _08087682: add sp, 0x24 pop {r4} pop {r0} bx r0 .align 2, 0 _0808768C: .4byte gUnknown_83CC1F0 _08087690: .4byte gPlayerAvatar _08087694: .4byte gSprites thumb_func_end sub_8087644 thumb_func_start sub_8087698 sub_8087698: @ 8087698 push {r4-r6,lr} adds r6, r0, 0 ldrb r0, [r6, 0xA] bl sub_80871AC lsls r0, 24 cmp r0, 0 beq _080876FC ldr r0, _08087704 @ =gPlayerAvatar ldrb r0, [r0, 0x5] lsls r5, r0, 3 adds r5, r0 lsls r5, 2 ldr r0, _08087708 @ =gObjectEvents adds r5, r0 ldrb r0, [r5, 0x4] lsls r4, r0, 4 adds r4, r0 lsls r4, 2 ldr r0, _0808770C @ =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_805F724 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_805CB70 adds r0, r5, 0 movs r1, 0x45 bl ObjectEventSetHeldMovement ldrh r0, [r6, 0x8] adds r0, 0x1 strh r0, [r6, 0x8] _080876FC: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08087704: .4byte gPlayerAvatar _08087708: .4byte gObjectEvents _0808770C: .4byte gSprites thumb_func_end sub_8087698 thumb_func_start sub_8087710 sub_8087710: @ 8087710 push {r4,lr} adds r4, r0, 0 ldr r0, _08087740 @ =gPlayerAvatar ldrb r1, [r0, 0x5] lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _08087744 @ =gObjectEvents adds r0, r1 bl ObjectEventClearHeldMovementIfFinished lsls r0, 24 cmp r0, 0 beq _08087738 ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] ldrb r0, [r4, 0xA] bl sub_8087458 _08087738: pop {r4} pop {r0} bx r0 .align 2, 0 _08087740: .4byte gPlayerAvatar _08087744: .4byte gObjectEvents thumb_func_end sub_8087710 thumb_func_start sub_8087748 sub_8087748: @ 8087748 push {r4,lr} adds r4, r0, 0 ldrb r0, [r4, 0xA] bl sub_80871AC lsls r0, 24 cmp r0, 0 beq _08087774 movs r0, 0xA ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _0808777C @ =gSprites adds r0, r1 bl DestroySprite ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] movs r0, 0x10 strh r0, [r4, 0xA] _08087774: pop {r4} pop {r0} bx r0 .align 2, 0 _0808777C: .4byte gSprites thumb_func_end sub_8087748 thumb_func_start fishE fishE: @ 8087780 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 _080877EA ldr r6, _080877F0 @ =gPlayerAvatar ldrb r1, [r6, 0x5] lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _080877F4 @ =gObjectEvents adds r4, r0, r1 movs r7, 0 ldrh r1, [r5, 0x26] movs r0, 0x8 ands r0, r1 cmp r0, 0 beq _080877B4 movs r7, 0x2 ldrb r0, [r4, 0x1A] movs r1, 0x1 bl sub_80DC44C _080877B4: adds r0, r7, 0 bl GetPlayerAvatarGraphicsIdByStateId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl ObjectEventSetGraphicsId adds r0, r4, 0 movs r1, 0x1 bl ObjectEventTurn ldrh r0, [r5, 0x26] strb r0, [r6] movs r0, 0 strb r0, [r6, 0x6] movs r0, 0x20 bl FieldEffectActiveListRemove ldr r0, _080877F8 @ =sub_8087498 bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 bl DestroyTask _080877EA: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080877F0: .4byte gPlayerAvatar _080877F4: .4byte gObjectEvents _080877F8: .4byte sub_8087498 thumb_func_end fishE thumb_func_start sub_80877FC sub_80877FC: @ 80877FC push {r4,r5,lr} adds r4, r0, 0 lsls r5, r1, 24 lsrs r5, 24 ldrb r0, [r4, 0x1] movs r1, 0x3 orrs r0, r1 strb r0, [r4, 0x1] ldr r0, _08087824 @ =gUnknown_83CC23C str r0, [r4, 0x10] adds r0, r4, 0 bl InitSpriteAffineAnim adds r0, r4, 0 adds r1, r5, 0 bl StartSpriteAffineAnim pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08087824: .4byte gUnknown_83CC23C thumb_func_end sub_80877FC thumb_func_start sub_8087828 sub_8087828: @ 8087828 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x32 ldrsh r0, [r4, r1] movs r1, 0xB4 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, 0x2 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x32] movs r1, 0x3A ldrsh r0, [r4, r1] cmp r0, 0x40 beq _08087886 lsls r1, r0, 4 adds r1, r0 lsls r1, 2 ldr r0, _080878BC @ =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] _08087886: movs r1, 0x32 ldrsh r0, [r4, r1] cmp r0, 0x7F ble _080878B4 movs r0, 0x1 strh r0, [r4, 0x3C] ldrb r1, [r4, 0x1] subs r0, 0x5 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 _080878B4: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080878BC: .4byte gSprites thumb_func_end sub_8087828 thumb_func_start sub_80878C0 sub_80878C0: @ 80878C0 push {r4-r6,lr} adds r4, r0, 0 ldrb r5, [r4, 0x1] lsls r0, r5, 30 cmp r0, 0 beq _08087916 ldr r1, _0808791C @ =gOamMatrices ldrb r0, [r4, 0x3] lsls r0, 26 lsrs r3, r0, 27 lsls r0, r3, 3 adds r1, r0, r1 movs r2, 0 ldrsh r0, [r1, r2] movs r2, 0x80 lsls r2, 1 cmp r0, r2 beq _080878EC movs r6, 0x6 ldrsh r0, [r1, r6] cmp r0, r2 bne _08087916 _080878EC: movs r0, 0x4 negs r0, r0 ands r0, r5 strb r0, [r4, 0x1] adds r0, r3, 0 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 adds r0, r4, 0 movs r1, 0 bl StartSpriteAnim ldr r0, _08087920 @ =sub_80872F0 str r0, [r4, 0x1C] _08087916: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0808791C: .4byte gOamMatrices _08087920: .4byte sub_80872F0 thumb_func_end sub_80878C0 thumb_func_start sub_8087924 sub_8087924: @ 8087924 push {r4-r7,lr} sub sp, 0x4 ldr r7, _080879C4 @ =gFieldEffectArguments ldrb r0, [r7] ldrb r1, [r7, 0x4] ldrb r2, [r7, 0x8] mov r3, sp bl TryGetObjectEventIdByLocalIdAndMap lsls r0, 24 cmp r0, 0 bne _080879BA mov r0, sp ldrb r0, [r0] lsls r4, r0, 3 adds r4, r0 lsls r4, 2 ldr r0, _080879C8 @ =gObjectEvents adds r4, r0 movs r0, 0x10 ldrsh r5, [r4, r0] subs r5, 0x7 movs r0, 0x12 ldrsh r6, [r4, r0] subs r6, 0x7 ldr r1, [r7, 0xC] subs r5, r1, r5 lsls r5, 4 ldr r2, [r7, 0x10] subs r6, r2, r6 lsls r6, 4 adds r1, 0x7 lsls r1, 16 asrs r1, 16 adds r2, 0x7 lsls r2, 16 asrs r2, 16 adds r0, r4, 0 bl npc_coords_shift ldr r0, _080879CC @ =sub_80879D8 movs r1, 0x50 bl CreateTask lsls r0, 24 lsrs r0, 24 ldr r1, _080879D0 @ =gTasks lsls r2, r0, 2 adds r2, r0 lsls r2, 3 adds r2, r1 ldrb r0, [r4, 0x4] strh r0, [r2, 0xA] ldr r3, _080879D4 @ =gSprites ldrb r1, [r4, 0x4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 ldrh r0, [r0, 0x20] adds r0, r5 strh r0, [r2, 0xC] ldrb r1, [r4, 0x4] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r3 ldrh r0, [r0, 0x22] adds r0, r6 strh r0, [r2, 0xE] ldr r0, [r7, 0x14] strh r0, [r2, 0x18] mov r0, sp ldrb r0, [r0] strh r0, [r2, 0x1A] _080879BA: movs r0, 0 add sp, 0x4 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _080879C4: .4byte gFieldEffectArguments _080879C8: .4byte gObjectEvents _080879CC: .4byte sub_80879D8 _080879D0: .4byte gTasks _080879D4: .4byte gSprites thumb_func_end sub_8087924 thumb_func_start sub_80879D8 sub_80879D8: @ 80879D8 push {r4-r7,lr} lsls r0, 24 lsrs r7, r0, 24 lsls r0, r7, 2 adds r0, r7 lsls r0, 3 ldr r1, _08087A04 @ =gTasks+0x8 adds r5, r0, r1 movs r0, 0x2 ldrsh r1, [r5, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _08087A08 @ =gSprites adds r6, r0, r1 movs r1, 0 ldrsh r0, [r5, r1] cmp r0, 0 beq _08087A0C cmp r0, 0x1 beq _08087A4A b _08087AA8 .align 2, 0 _08087A04: .4byte gTasks+0x8 _08087A08: .4byte gSprites _08087A0C: ldrh r0, [r6, 0x20] lsls r0, 4 strh r0, [r5, 0x8] ldrh r0, [r6, 0x22] lsls r0, 4 strh r0, [r5, 0xA] movs r2, 0x4 ldrsh r0, [r5, r2] lsls r0, 4 movs r2, 0x8 ldrsh r1, [r5, r2] subs r0, r1 movs r2, 0x10 ldrsh r1, [r5, r2] bl __divsi3 strh r0, [r5, 0xC] movs r1, 0x6 ldrsh r0, [r5, r1] lsls r0, 4 movs r2, 0xA ldrsh r1, [r5, r2] subs r0, r1 movs r2, 0x10 ldrsh r1, [r5, r2] bl __divsi3 strh r0, [r5, 0xE] ldrh r0, [r5] adds r0, 0x1 strh r0, [r5] _08087A4A: ldrh r1, [r5, 0x10] movs r2, 0x10 ldrsh r0, [r5, r2] cmp r0, 0 beq _08087A78 subs r0, r1, 0x1 strh r0, [r5, 0x10] ldrh r1, [r5, 0xC] ldrh r0, [r5, 0x8] adds r1, r0 strh r1, [r5, 0x8] ldrh r0, [r5, 0xE] ldrh r2, [r5, 0xA] adds r0, r2 strh r0, [r5, 0xA] lsls r1, 16 asrs r1, 20 strh r1, [r6, 0x20] ldrh r0, [r5, 0xA] lsls r0, 16 asrs r0, 20 strh r0, [r6, 0x22] b _08087AA8 _08087A78: movs r1, 0x12 ldrsh r0, [r5, r1] lsls r4, r0, 3 adds r4, r0 lsls r4, 2 ldr r0, _08087AB0 @ =gObjectEvents adds r4, r0 ldrh r0, [r5, 0x4] strh r0, [r6, 0x20] ldrh r0, [r5, 0x6] strh r0, [r6, 0x22] adds r0, r4, 0 bl npc_coords_shift_still ldrb r0, [r4] movs r1, 0x8 orrs r0, r1 strb r0, [r4] movs r0, 0x43 bl FieldEffectActiveListRemove adds r0, r7, 0 bl DestroyTask _08087AA8: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08087AB0: .4byte gObjectEvents thumb_func_end sub_80879D8 thumb_func_start sub_8087AB4 sub_8087AB4: @ 8087AB4 push {r4,lr} sub sp, 0x4 ldr r4, _08087AF8 @ =gFieldEffectArguments ldrb r0, [r4] ldrb r1, [r4, 0x4] ldrb r2, [r4, 0x8] mov r3, sp bl TryGetObjectEventIdByLocalIdAndMap lsls r0, 24 cmp r0, 0 bne _08087B04 ldr r0, _08087AFC @ =sub_8087BC0 movs r1, 0x50 bl CreateTask lsls r0, 24 lsrs r0, 24 ldr r2, _08087B00 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 mov r0, sp ldrb r0, [r0] strh r0, [r1, 0xC] ldr r0, [r4] strh r0, [r1, 0x14] ldr r0, [r4, 0x4] strh r0, [r1, 0x16] ldr r0, [r4, 0x8] strh r0, [r1, 0x18] b _08087B0A .align 2, 0 _08087AF8: .4byte gFieldEffectArguments _08087AFC: .4byte sub_8087BC0 _08087B00: .4byte gTasks _08087B04: movs r0, 0x44 bl FieldEffectActiveListRemove _08087B0A: movs r0, 0 add sp, 0x4 pop {r4} pop {r1} bx r1 thumb_func_end sub_8087AB4 thumb_func_start sub_8087B14 sub_8087B14: @ 8087B14 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 lsls r0, r5, 2 adds r0, r5 lsls r0, 3 ldr r1, _08087B4C @ =gTasks+0x8 adds r4, r0, r1 movs r1, 0xE ldrsh r0, [r4, r1] cmp r0, 0 beq _08087B50 ldrh r0, [r4, 0xC] adds r0, 0x1 strh r0, [r4, 0xC] lsls r0, 16 asrs r0, 16 cmp r0, 0x14 ble _08087B54 movs r0, 0 strh r0, [r4, 0xC] ldrh r1, [r4, 0xA] movs r2, 0xA ldrsh r0, [r4, r2] cmp r0, 0 beq _08087B54 subs r0, r1, 0x1 b _08087B52 .align 2, 0 _08087B4C: .4byte gTasks+0x8 _08087B50: movs r0, 0x4 _08087B52: strh r0, [r4, 0xA] _08087B54: ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] lsls r0, 16 asrs r0, 16 cmp r0, 0x1 ble _08087B8E movs r0, 0 strh r0, [r4] ldrh r0, [r4, 0x2] adds r0, 0x1 strh r0, [r4, 0x2] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _08087B84 ldrh r1, [r4, 0xA] negs r1, r1 lsls r1, 16 asrs r1, 16 movs r0, 0 bl SetCameraPanning b _08087B8E _08087B84: movs r0, 0xA ldrsh r1, [r4, r0] movs r0, 0 bl SetCameraPanning _08087B8E: bl UpdateCameraPanning movs r1, 0xA ldrsh r0, [r4, r1] cmp r0, 0 bne _08087BA0 adds r0, r5, 0 bl DestroyTask _08087BA0: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_8087B14 thumb_func_start sub_8087BA8 sub_8087BA8: @ 8087BA8 lsls r0, 24 lsrs r0, 24 ldr r2, _08087BBC @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 movs r0, 0x1 strh r0, [r1, 0x16] bx lr .align 2, 0 _08087BBC: .4byte gTasks thumb_func_end sub_8087BA8 thumb_func_start sub_8087BC0 sub_8087BC0: @ 8087BC0 push {r4,r5,lr} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 lsls r4, r5, 2 adds r4, r5 lsls r4, 3 ldr r0, _08087BF8 @ =gTasks+0x8 adds r4, r0 bl InstallCameraPanAheadCallback movs r0, 0 bl SetCameraPanningCallback ldr r1, _08087BFC @ =gUnknown_83CC244 movs r2, 0x2 ldrsh r0, [r4, r2] lsls r0, 2 adds r0, r1 ldr r2, [r0] adds r0, r4, 0 adds r1, r5, 0 bl _call_via_r2 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08087BF8: .4byte gTasks+0x8 _08087BFC: .4byte gUnknown_83CC244 thumb_func_end sub_8087BC0 thumb_func_start sub_8087C00 sub_8087C00: @ 8087C00 push {r4,r5,lr} adds r5, r0, 0 ldr r0, _08087C28 @ =sub_8087B14 movs r1, 0x5A bl CreateTask adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x51 bl PlaySE strh r4, [r5, 0xA] ldrh r0, [r5, 0x2] adds r0, 0x1 strh r0, [r5, 0x2] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08087C28: .4byte sub_8087B14 thumb_func_end sub_8087C00 thumb_func_start sub_8087C2C sub_8087C2C: @ 8087C2C push {r4-r7,lr} sub sp, 0x4 adds r7, r0, 0 ldrh r0, [r7, 0x6] adds r0, 0x1 strh r0, [r7, 0x6] lsls r0, 16 asrs r0, 16 cmp r0, 0x78 ble _08087C9A ldr r2, _08087CA4 @ =gObjectEvents movs r1, 0x4 ldrsh r0, [r7, r1] lsls r1, r0, 3 adds r1, r0 lsls r1, 2 adds r1, r2 ldrb r0, [r1, 0x4] lsls r4, r0, 4 adds r4, r0 lsls r4, 2 ldr r0, _08087CA8 @ =gSprites adds r4, r0 ldrb r0, [r1, 0x1] movs r2, 0x20 orrs r0, r2 strb r0, [r1, 0x1] ldr r6, _08087CAC @ =0x0000ffff ldr r5, _08087CB0 @ =0x00007fff adds r0, r6, 0 movs r1, 0x10 adds r2, r5, 0 bl BlendPalettes str r5, [sp] adds r0, r6, 0 movs r1, 0 movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade adds r0, r4, 0 bl sub_8087CFC movs r0, 0x50 bl PlaySE ldrb r0, [r7, 0xA] bl sub_8087BA8 movs r0, 0 strh r0, [r7, 0x6] ldrh r0, [r7, 0x2] adds r0, 0x1 strh r0, [r7, 0x2] _08087C9A: add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08087CA4: .4byte gObjectEvents _08087CA8: .4byte gSprites _08087CAC: .4byte 0x0000ffff _08087CB0: .4byte 0x00007fff thumb_func_end sub_8087C2C thumb_func_start sub_8087CB4 sub_8087CB4: @ 8087CB4 push {r4,r5,lr} adds r4, r0, 0 lsls r1, 24 lsrs r5, r1, 24 ldr r0, _08087CF4 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08087CEE ldr r0, _08087CF8 @ =sub_8087B14 bl FuncIsActiveTask lsls r0, 24 cmp r0, 0 bne _08087CEE bl InstallCameraPanAheadCallback ldrb r0, [r4, 0xC] ldrb r1, [r4, 0xE] ldrb r2, [r4, 0x10] bl RemoveObjectEventByLocalIdAndMap movs r0, 0x44 bl FieldEffectActiveListRemove adds r0, r5, 0 bl DestroyTask _08087CEE: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08087CF4: .4byte gPaletteFade _08087CF8: .4byte sub_8087B14 thumb_func_end sub_8087CB4 thumb_func_start sub_8087CFC sub_8087CFC: @ 8087CFC push {r4-r7,lr} mov r7, r8 push {r7} adds r6, r0, 0 ldr r0, _08087D80 @ =gUnknown_300506C movs r1, 0 ldrsh r2, [r0, r1] movs r3, 0x20 ldrsh r0, [r6, r3] adds r2, r0 movs r1, 0x24 ldrsh r0, [r6, r1] adds r2, r0 ldr r0, _08087D84 @ =gUnknown_3005068 movs r3, 0 ldrsh r0, [r0, r3] movs r3, 0x22 ldrsh r1, [r6, r3] adds r0, r1 movs r3, 0x26 ldrsh r1, [r6, r3] adds r0, r1 subs r0, 0x4 movs r5, 0 lsls r2, 16 mov r8, r2 lsls r7, r0, 16 _08087D32: ldr r0, _08087D88 @ =gUnknown_83CC2A0 mov r2, r8 asrs r1, r2, 16 asrs r2, r7, 16 movs r3, 0 bl CreateSprite lsls r0, 24 lsrs r0, 24 cmp r0, 0x40 beq _08087D6E lsls r4, r0, 4 adds r4, r0 lsls r4, 2 ldr r0, _08087D8C @ =gSprites adds r4, r0 lsls r1, r5, 24 lsrs r1, 24 adds r0, r4, 0 bl StartSpriteAnim strh r5, [r4, 0x2E] ldrb r1, [r6, 0x5] lsrs r1, 4 lsls r1, 4 ldrb r2, [r4, 0x5] movs r0, 0xF ands r0, r2 orrs r0, r1 strb r0, [r4, 0x5] _08087D6E: adds r5, 0x1 cmp r5, 0x3 ble _08087D32 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08087D80: .4byte gUnknown_300506C _08087D84: .4byte gUnknown_3005068 _08087D88: .4byte gUnknown_83CC2A0 _08087D8C: .4byte gSprites thumb_func_end sub_8087CFC thumb_func_start sub_8087D90 sub_8087D90: @ 8087D90 push {lr} adds r1, r0, 0 movs r2, 0x2E ldrsh r0, [r1, r2] cmp r0, 0x1 beq _08087DBC cmp r0, 0x1 bgt _08087DA6 cmp r0, 0 beq _08087DB0 b _08087DDA _08087DA6: cmp r0, 0x2 beq _08087DC8 cmp r0, 0x3 beq _08087DCE b _08087DDA _08087DB0: ldrh r0, [r1, 0x20] subs r0, 0x10 strh r0, [r1, 0x20] ldrh r0, [r1, 0x22] subs r0, 0xC b _08087DD8 _08087DBC: ldrh r0, [r1, 0x20] adds r0, 0x10 strh r0, [r1, 0x20] ldrh r0, [r1, 0x22] subs r0, 0xC b _08087DD8 _08087DC8: ldrh r0, [r1, 0x20] subs r0, 0x10 b _08087DD2 _08087DCE: ldrh r0, [r1, 0x20] adds r0, 0x10 _08087DD2: strh r0, [r1, 0x20] ldrh r0, [r1, 0x22] adds r0, 0xC _08087DD8: strh r0, [r1, 0x22] _08087DDA: ldrh r0, [r1, 0x20] adds r0, 0x4 lsls r0, 16 lsrs r0, 16 cmp r0, 0xF8 bhi _08087DF6 movs r0, 0x22 ldrsh r2, [r1, r0] movs r0, 0x4 negs r0, r0 cmp r2, r0 blt _08087DF6 cmp r2, 0xA4 ble _08087DFC _08087DF6: adds r0, r1, 0 bl DestroySprite _08087DFC: pop {r0} bx r0 thumb_func_end sub_8087D90 thumb_func_start sub_8087E00 sub_8087E00: @ 8087E00 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _08087E24 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08087E1E movs r0, 0x45 bl FieldEffectActiveListRemove adds r0, r4, 0 bl DestroyTask _08087E1E: pop {r4} pop {r0} bx r0 .align 2, 0 _08087E24: .4byte gPaletteFade thumb_func_end sub_8087E00 thumb_func_start sub_8087E28 sub_8087E28: @ 8087E28 push {r4,r5,lr} sub sp, 0x4 movs r4, 0x1 negs r4, r4 ldr r5, _08087E5C @ =0x00007fff adds r0, r4, 0 movs r1, 0x10 adds r2, r5, 0 bl BlendPalettes str r5, [sp] adds r0, r4, 0 adds r1, r4, 0 movs r2, 0xF movs r3, 0 bl BeginNormalPaletteFade ldr r0, _08087E60 @ =sub_8087E00 movs r1, 0x5A bl CreateTask add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08087E5C: .4byte 0x00007fff _08087E60: .4byte sub_8087E00 thumb_func_end sub_8087E28 .align 2, 0 @ Don't pad with nop.