diff options
author | PikalaxALT <PikalaxALT@users.noreply.github.com> | 2019-12-07 20:20:57 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-12-07 20:20:57 -0500 |
commit | f21b113bc6caee136d696aadfe8dc13d6e8f3622 (patch) | |
tree | dfa380ca2de409279e0ee0c7ecc06d704a84858a | |
parent | 22a73c654b33878d8861109a3898bddc0d30c6b3 (diff) | |
parent | 88fae7ed40e47eff562b70cd0a504aeed5bb7102 (diff) |
Merge pull request #177 from ghoulslash/battle-anim
battle_anim*
56 files changed, 23585 insertions, 46944 deletions
diff --git a/asm/battle_anim.s b/asm/battle_anim.s deleted file mode 100644 index 42d099c4c..000000000 --- a/asm/battle_anim.s +++ /dev/null @@ -1,4107 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start ClearBattleAnimationVars -ClearBattleAnimationVars: @ 80724C0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _08072554 @ =gUnknown_2037EE0 - movs r1, 0 - strb r1, [r0] - ldr r0, _08072558 @ =gAnimScriptActive - strb r1, [r0] - ldr r0, _0807255C @ =gAnimVisualTaskCount - strb r1, [r0] - ldr r0, _08072560 @ =gUnknown_2037EE3 - strb r1, [r0] - ldr r0, _08072564 @ =gAnimDisableStructPtr - movs r1, 0 - str r1, [r0] - ldr r0, _08072568 @ =gAnimMoveDmg - str r1, [r0] - ldr r0, _0807256C @ =gAnimMovePower - movs r2, 0 - strh r1, [r0] - ldr r0, _08072570 @ =gAnimFriendship - strb r2, [r0] - ldr r4, _08072574 @ =gUnknown_2037F14 - ldr r5, _08072578 @ =gAnimMoveTurn - ldr r6, _0807257C @ =gUnknown_2037F17 - ldr r7, _08072580 @ =gUnknown_2037F18 - ldr r0, _08072584 @ =gBattleAnimAttacker - mov r12, r0 - ldr r1, _08072588 @ =gBattleAnimTarget - mov r8, r1 - ldr r0, _0807258C @ =gUnknown_2037F24 - mov r9, r0 - ldr r1, _08072590 @ =0x0000ffff - adds r3, r1, 0 - ldr r1, _08072594 @ =gUnknown_2037EEE - movs r2, 0x7 -_0807250A: - ldrh r0, [r1] - orrs r0, r3 - strh r0, [r1] - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _0807250A - ldr r1, _08072598 @ =gBattleAnimArgs - movs r2, 0 - adds r0, r1, 0 - adds r0, 0xE -_08072520: - strh r2, [r0] - subs r0, 0x2 - cmp r0, r1 - bge _08072520 - movs r1, 0 - movs r0, 0xFF - strb r0, [r4] - movs r0, 0x1 - negs r0, r0 - strb r0, [r4, 0x1] - strb r1, [r5] - strb r1, [r6] - movs r0, 0 - strh r1, [r7] - mov r1, r12 - strb r0, [r1] - mov r1, r8 - strb r0, [r1] - mov r1, r9 - strb r0, [r1] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08072554: .4byte gUnknown_2037EE0 -_08072558: .4byte gAnimScriptActive -_0807255C: .4byte gAnimVisualTaskCount -_08072560: .4byte gUnknown_2037EE3 -_08072564: .4byte gAnimDisableStructPtr -_08072568: .4byte gAnimMoveDmg -_0807256C: .4byte gAnimMovePower -_08072570: .4byte gAnimFriendship -_08072574: .4byte gUnknown_2037F14 -_08072578: .4byte gAnimMoveTurn -_0807257C: .4byte gUnknown_2037F17 -_08072580: .4byte gUnknown_2037F18 -_08072584: .4byte gBattleAnimAttacker -_08072588: .4byte gBattleAnimTarget -_0807258C: .4byte gUnknown_2037F24 -_08072590: .4byte 0x0000ffff -_08072594: .4byte gUnknown_2037EEE -_08072598: .4byte gBattleAnimArgs - thumb_func_end ClearBattleAnimationVars - - thumb_func_start DoMoveAnim -DoMoveAnim: @ 807259C - push {lr} - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - ldr r2, _080725C0 @ =gBattleAnimAttacker - ldr r0, _080725C4 @ =gBattlerAttacker - ldrb r0, [r0] - strb r0, [r2] - ldr r2, _080725C8 @ =gBattleAnimTarget - ldr r0, _080725CC @ =gBattlerTarget - ldrb r0, [r0] - strb r0, [r2] - ldr r0, _080725D0 @ =gBattleAnims_Moves - movs r2, 0x1 - bl LaunchBattleAnimation - pop {r0} - bx r0 - .align 2, 0 -_080725C0: .4byte gBattleAnimAttacker -_080725C4: .4byte gBattlerAttacker -_080725C8: .4byte gBattleAnimTarget -_080725CC: .4byte gBattlerTarget -_080725D0: .4byte gBattleAnims_Moves - thumb_func_end DoMoveAnim - - thumb_func_start LaunchBattleAnimation -LaunchBattleAnimation: @ 80725D4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - str r0, [sp] - lsls r1, 16 - lsrs r1, 16 - mov r8, r1 - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - bl sub_80767F0 - movs r0, 0 - bl UpdateOamPriorityInAllHealthboxes - movs r4, 0 - ldr r6, _08072618 @ =gBattlerPartyIndexes - movs r7, 0x64 - ldr r5, _0807261C @ =gAnimBattlerSpecies -_08072600: - lsls r0, r4, 24 - lsrs r0, 24 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08072624 - ldrh r0, [r6] - muls r0, r7 - ldr r1, _08072620 @ =gEnemyParty - b _0807262A - .align 2, 0 -_08072618: .4byte gBattlerPartyIndexes -_0807261C: .4byte gAnimBattlerSpecies -_08072620: .4byte gEnemyParty -_08072624: - ldrh r0, [r6] - muls r0, r7 - ldr r1, _0807264C @ =gPlayerParty -_0807262A: - adds r0, r1 - movs r1, 0xB - bl GetMonData - strh r0, [r5] - adds r6, 0x2 - adds r5, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _08072600 - mov r0, r9 - cmp r0, 0 - bne _08072654 - ldr r0, _08072650 @ =gUnknown_2037F18 - mov r1, r9 - b _08072658 - .align 2, 0 -_0807264C: .4byte gPlayerParty -_08072650: .4byte gUnknown_2037F18 -_08072654: - ldr r0, _080726C0 @ =gUnknown_2037F18 - mov r1, r8 -_08072658: - strh r1, [r0] - ldr r4, _080726C4 @ =gUnknown_2037F14 - ldr r5, _080726C8 @ =gUnknown_2037ED4 - mov r0, r8 - lsls r3, r0, 2 - ldr r6, _080726CC @ =gAnimScriptActive - ldr r1, _080726D0 @ =gUnknown_2037EE0 - mov r12, r1 - ldr r0, _080726D4 @ =gAnimScriptCallback - mov r10, r0 - ldr r7, _080726D8 @ =RunAnimScriptCommand - ldr r1, _080726DC @ =gBattleAnimArgs - movs r2, 0 - adds r0, r1, 0 - adds r0, 0xE -_08072676: - strh r2, [r0] - subs r0, 0x2 - cmp r0, r1 - bge _08072676 - movs r0, 0xFF - strb r0, [r4] - movs r0, 0x1 - negs r0, r0 - strb r0, [r4, 0x1] - ldr r1, [sp] - adds r0, r3, r1 - ldr r0, [r0] - str r0, [r5] - movs r0, 0x1 - strb r0, [r6] - movs r0, 0 - mov r1, r12 - strb r0, [r1] - mov r0, r10 - str r7, [r0] - ldr r1, _080726E0 @ =0x0000ffff - adds r2, r1, 0 - ldr r1, _080726E4 @ =gUnknown_2037EEE - movs r4, 0x7 -_080726A6: - ldrh r0, [r1] - orrs r0, r2 - strh r0, [r1] - adds r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _080726A6 - mov r0, r9 - cmp r0, 0 - beq _08072706 - movs r4, 0 - ldr r2, _080726E8 @ =gMovesWithQuietBGM - b _080726EE - .align 2, 0 -_080726C0: .4byte gUnknown_2037F18 -_080726C4: .4byte gUnknown_2037F14 -_080726C8: .4byte gUnknown_2037ED4 -_080726CC: .4byte gAnimScriptActive -_080726D0: .4byte gUnknown_2037EE0 -_080726D4: .4byte gAnimScriptCallback -_080726D8: .4byte RunAnimScriptCommand -_080726DC: .4byte gBattleAnimArgs -_080726E0: .4byte 0x0000ffff -_080726E4: .4byte gUnknown_2037EEE -_080726E8: .4byte gMovesWithQuietBGM -_080726EC: - adds r4, 0x1 -_080726EE: - lsls r0, r4, 1 - adds r0, r2 - ldrh r0, [r0] - ldr r1, _08072728 @ =0x0000ffff - cmp r0, r1 - beq _08072706 - cmp r8, r0 - bne _080726EC - ldr r0, _0807272C @ =gMPlayInfo_BGM - movs r2, 0x80 - bl m4aMPlayVolumeControl -_08072706: - ldr r0, _08072730 @ =gBattle_WIN0H - movs r1, 0 - strh r1, [r0] - ldr r0, _08072734 @ =gBattle_WIN0V - strh r1, [r0] - ldr r0, _08072738 @ =gBattle_WIN1H - strh r1, [r0] - ldr r0, _0807273C @ =gBattle_WIN1V - strh r1, [r0] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08072728: .4byte 0x0000ffff -_0807272C: .4byte gMPlayInfo_BGM -_08072730: .4byte gBattle_WIN0H -_08072734: .4byte gBattle_WIN0V -_08072738: .4byte gBattle_WIN1H -_0807273C: .4byte gBattle_WIN1V - thumb_func_end LaunchBattleAnimation - - thumb_func_start DestroyAnimSprite -DestroyAnimSprite: @ 8072740 - push {r4,lr} - adds r4, r0, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite - ldr r1, _0807275C @ =gAnimVisualTaskCount - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807275C: .4byte gAnimVisualTaskCount - thumb_func_end DestroyAnimSprite - - thumb_func_start DestroyAnimVisualTask -DestroyAnimVisualTask: @ 8072760 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - ldr r1, _08072778 @ =gAnimVisualTaskCount - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08072778: .4byte gAnimVisualTaskCount - thumb_func_end DestroyAnimVisualTask - - thumb_func_start DestroyAnimSoundTask -DestroyAnimSoundTask: @ 807277C - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - ldr r1, _08072794 @ =gUnknown_2037EE3 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08072794: .4byte gUnknown_2037EE3 - thumb_func_end DestroyAnimSoundTask - - thumb_func_start AddSpriteIndex -AddSpriteIndex: @ 8072798 - push {r4,lr} - lsls r0, 16 - lsrs r3, r0, 16 - movs r2, 0 - ldr r4, _080727B0 @ =0x0000ffff - ldr r1, _080727B4 @ =gUnknown_2037EEE -_080727A4: - ldrh r0, [r1] - cmp r0, r4 - bne _080727B8 - strh r3, [r1] - b _080727C0 - .align 2, 0 -_080727B0: .4byte 0x0000ffff -_080727B4: .4byte gUnknown_2037EEE -_080727B8: - adds r1, 0x2 - adds r2, 0x1 - cmp r2, 0x7 - ble _080727A4 -_080727C0: - pop {r4} - pop {r0} - bx r0 - thumb_func_end AddSpriteIndex - - thumb_func_start ClearSpriteIndex -ClearSpriteIndex: @ 80727C8 - push {r4,lr} - lsls r0, 16 - lsrs r3, r0, 16 - movs r2, 0 - ldr r0, _080727E4 @ =0x0000ffff - adds r4, r0, 0 - ldr r1, _080727E8 @ =gUnknown_2037EEE -_080727D6: - ldrh r0, [r1] - cmp r0, r3 - bne _080727EC - orrs r0, r4 - strh r0, [r1] - b _080727F4 - .align 2, 0 -_080727E4: .4byte 0x0000ffff -_080727E8: .4byte gUnknown_2037EEE -_080727EC: - adds r1, 0x2 - adds r2, 0x1 - cmp r2, 0x7 - ble _080727D6 -_080727F4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end ClearSpriteIndex - - thumb_func_start WaitAnimFrameCount -WaitAnimFrameCount: @ 80727FC - push {lr} - ldr r2, _08072814 @ =gUnknown_2037EE0 - ldrb r1, [r2] - movs r0, 0 - ldrsb r0, [r2, r0] - cmp r0, 0 - bgt _08072820 - ldr r0, _08072818 @ =gAnimScriptCallback - ldr r1, _0807281C @ =RunAnimScriptCommand - str r1, [r0] - movs r0, 0 - b _08072822 - .align 2, 0 -_08072814: .4byte gUnknown_2037EE0 -_08072818: .4byte gAnimScriptCallback -_0807281C: .4byte RunAnimScriptCommand -_08072820: - subs r0, r1, 0x1 -_08072822: - strb r0, [r2] - pop {r0} - bx r0 - thumb_func_end WaitAnimFrameCount - - thumb_func_start RunAnimScriptCommand -RunAnimScriptCommand: @ 8072828 - push {r4,lr} - ldr r4, _08072858 @ =gUnknown_83ADF5C -_0807282C: - ldr r0, _0807285C @ =gUnknown_2037ED4 - ldr r0, [r0] - ldrb r0, [r0] - lsls r0, 2 - adds r0, r4 - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _08072860 @ =gUnknown_2037EE0 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bne _08072850 - ldr r0, _08072864 @ =gAnimScriptActive - ldrb r0, [r0] - cmp r0, 0 - bne _0807282C -_08072850: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08072858: .4byte gUnknown_83ADF5C -_0807285C: .4byte gUnknown_2037ED4 -_08072860: .4byte gUnknown_2037EE0 -_08072864: .4byte gAnimScriptActive - thumb_func_end RunAnimScriptCommand - - thumb_func_start ScriptCmd_loadspritegfx -ScriptCmd_loadspritegfx: @ 8072868 - push {r4-r6,lr} - ldr r6, _080728B4 @ =gUnknown_2037ED4 - ldr r0, [r6] - adds r1, r0, 0x1 - str r1, [r6] - ldrb r4, [r0, 0x1] - ldrb r0, [r1, 0x1] - lsls r0, 8 - orrs r4, r0 - lsls r5, r4, 3 - ldr r0, _080728B8 @ =gUnknown_8399388 - adds r0, r5, r0 - bl LoadCompressedSpriteSheetUsingHeap - ldr r0, _080728BC @ =gUnknown_8399C90 - adds r5, r0 - adds r0, r5, 0 - bl LoadCompressedSpritePaletteUsingHeap - ldr r0, [r6] - adds r0, 0x2 - str r0, [r6] - ldr r0, _080728C0 @ =0xffffd8f0 - adds r4, r0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - bl AddSpriteIndex - ldr r1, _080728C4 @ =gUnknown_2037EE0 - movs r0, 0x1 - strb r0, [r1] - ldr r1, _080728C8 @ =gAnimScriptCallback - ldr r0, _080728CC @ =WaitAnimFrameCount - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080728B4: .4byte gUnknown_2037ED4 -_080728B8: .4byte gUnknown_8399388 -_080728BC: .4byte gUnknown_8399C90 -_080728C0: .4byte 0xffffd8f0 -_080728C4: .4byte gUnknown_2037EE0 -_080728C8: .4byte gAnimScriptCallback -_080728CC: .4byte WaitAnimFrameCount - thumb_func_end ScriptCmd_loadspritegfx - - thumb_func_start ScriptCmd_unloadspritegfx -ScriptCmd_unloadspritegfx: @ 80728D0 - push {r4-r6,lr} - ldr r6, _08072910 @ =gUnknown_2037ED4 - ldr r0, [r6] - adds r1, r0, 0x1 - str r1, [r6] - ldrb r4, [r0, 0x1] - ldrb r0, [r1, 0x1] - lsls r0, 8 - orrs r4, r0 - ldr r1, _08072914 @ =gUnknown_83ACC08 - ldr r0, _08072918 @ =0xffffd8f0 - adds r4, r0 - lsls r0, r4, 3 - adds r0, r1 - ldrh r5, [r0, 0x6] - adds r0, r5, 0 - bl FreeSpriteTilesByTag - adds r0, r5, 0 - bl FreeSpritePaletteByTag - ldr r0, [r6] - adds r0, 0x2 - str r0, [r6] - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - bl ClearSpriteIndex - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08072910: .4byte gUnknown_2037ED4 -_08072914: .4byte gUnknown_83ACC08 -_08072918: .4byte 0xffffd8f0 - thumb_func_end ScriptCmd_unloadspritegfx - - thumb_func_start ScriptCmd_createsprite -ScriptCmd_createsprite: @ 807291C - push {r4-r7,lr} - ldr r5, _08072984 @ =gUnknown_2037ED4 - ldr r1, [r5] - adds r3, r1, 0x1 - str r3, [r5] - ldrb r2, [r1, 0x1] - ldrb r0, [r3, 0x1] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r3, 0x2] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r3, 0x3] - lsls r0, 24 - adds r7, r2, r0 - adds r0, r1, 0x5 - str r0, [r5] - ldrb r4, [r1, 0x5] - adds r0, r1, 0x6 - str r0, [r5] - ldrb r0, [r1, 0x6] - adds r1, 0x7 - str r1, [r5] - cmp r0, 0 - beq _0807296C - adds r6, r5, 0 - ldr r5, _08072988 @ =gBattleAnimArgs - adds r3, r0, 0 -_08072954: - ldr r2, [r6] - ldrb r1, [r2] - ldrb r0, [r2, 0x1] - lsls r0, 8 - orrs r1, r0 - strh r1, [r5] - adds r2, 0x2 - str r2, [r6] - adds r5, 0x2 - subs r3, 0x1 - cmp r3, 0 - bne _08072954 -_0807296C: - movs r0, 0x80 - ands r0, r4 - cmp r0, 0 - beq _0807299C - movs r0, 0x80 - eors r4, r0 - cmp r4, 0x3F - bls _0807298C - adds r0, r4, 0 - subs r0, 0x40 - b _0807298E - .align 2, 0 -_08072984: .4byte gUnknown_2037ED4 -_08072988: .4byte gBattleAnimArgs -_0807298C: - negs r0, r4 -_0807298E: - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08072998 @ =gBattleAnimTarget - b _080729AE - .align 2, 0 -_08072998: .4byte gBattleAnimTarget -_0807299C: - cmp r4, 0x3F - bls _080729A6 - adds r0, r4, 0 - subs r0, 0x40 - b _080729A8 -_080729A6: - negs r0, r4 -_080729A8: - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08072A04 @ =gBattleAnimAttacker -_080729AE: - ldrb r0, [r0] - bl GetBattlerSpriteSubpriority - lsls r0, 24 - lsrs r0, 24 - lsls r1, r4, 24 - asrs r1, 24 - adds r0, r1 - lsls r0, 16 - lsrs r6, r0, 16 - lsls r0, r6, 16 - asrs r0, 16 - cmp r0, 0x2 - bgt _080729CC - movs r6, 0x3 -_080729CC: - ldr r5, _08072A08 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - lsls r3, r6, 24 - lsrs r3, 24 - adds r0, r7, 0 - adds r1, r4, 0 - bl CreateSpriteAndAnimate - ldr r1, _08072A0C @ =gAnimVisualTaskCount - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08072A04: .4byte gBattleAnimAttacker -_08072A08: .4byte gBattleAnimTarget -_08072A0C: .4byte gAnimVisualTaskCount - thumb_func_end ScriptCmd_createsprite - - thumb_func_start ScriptCmd_createvisualtask -ScriptCmd_createvisualtask: @ 8072A10 - push {r4-r7,lr} - ldr r4, _08072A80 @ =gUnknown_2037ED4 - ldr r1, [r4] - adds r3, r1, 0x1 - str r3, [r4] - ldrb r2, [r1, 0x1] - ldrb r0, [r3, 0x1] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r3, 0x2] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r3, 0x3] - lsls r0, 24 - adds r6, r2, r0 - adds r0, r1, 0x5 - str r0, [r4] - ldrb r7, [r1, 0x5] - adds r0, r1, 0x6 - str r0, [r4] - ldrb r0, [r1, 0x6] - adds r1, 0x7 - str r1, [r4] - cmp r0, 0 - beq _08072A60 - adds r5, r4, 0 - ldr r4, _08072A84 @ =gBattleAnimArgs - adds r3, r0, 0 -_08072A48: - ldr r2, [r5] - ldrb r1, [r2] - ldrb r0, [r2, 0x1] - lsls r0, 8 - orrs r1, r0 - strh r1, [r4] - adds r2, 0x2 - str r2, [r5] - adds r4, 0x2 - subs r3, 0x1 - cmp r3, 0 - bne _08072A48 -_08072A60: - adds r0, r6, 0 - adds r1, r7, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r6 - ldr r1, _08072A88 @ =gAnimVisualTaskCount - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08072A80: .4byte gUnknown_2037ED4 -_08072A84: .4byte gBattleAnimArgs -_08072A88: .4byte gAnimVisualTaskCount - thumb_func_end ScriptCmd_createvisualtask - - thumb_func_start ScriptCmd_delay -ScriptCmd_delay: @ 8072A8C - push {r4,lr} - ldr r1, _08072ABC @ =gUnknown_2037ED4 - ldr r0, [r1] - adds r2, r0, 0x1 - str r2, [r1] - ldr r3, _08072AC0 @ =gUnknown_2037EE0 - ldrb r0, [r0, 0x1] - strb r0, [r3] - lsls r0, 24 - cmp r0, 0 - bne _08072AAA - movs r4, 0x1 - negs r4, r4 - adds r0, r4, 0 - strb r0, [r3] -_08072AAA: - adds r0, r2, 0x1 - str r0, [r1] - ldr r1, _08072AC4 @ =gAnimScriptCallback - ldr r0, _08072AC8 @ =WaitAnimFrameCount - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08072ABC: .4byte gUnknown_2037ED4 -_08072AC0: .4byte gUnknown_2037EE0 -_08072AC4: .4byte gAnimScriptCallback -_08072AC8: .4byte WaitAnimFrameCount - thumb_func_end ScriptCmd_delay - - thumb_func_start sub_8072ACC -sub_8072ACC: @ 8072ACC - push {lr} - ldr r0, _08072AE4 @ =gAnimVisualTaskCount - ldrb r2, [r0] - cmp r2, 0 - bne _08072AF0 - ldr r0, _08072AE8 @ =gUnknown_2037ED4 - ldr r1, [r0] - adds r1, 0x1 - str r1, [r0] - ldr r0, _08072AEC @ =gUnknown_2037EE0 - strb r2, [r0] - b _08072AF6 - .align 2, 0 -_08072AE4: .4byte gAnimVisualTaskCount -_08072AE8: .4byte gUnknown_2037ED4 -_08072AEC: .4byte gUnknown_2037EE0 -_08072AF0: - ldr r1, _08072AFC @ =gUnknown_2037EE0 - movs r0, 0x1 - strb r0, [r1] -_08072AF6: - pop {r0} - bx r0 - .align 2, 0 -_08072AFC: .4byte gUnknown_2037EE0 - thumb_func_end sub_8072ACC - - thumb_func_start nullsub_41 -nullsub_41: @ 8072B00 - bx lr - thumb_func_end nullsub_41 - - thumb_func_start nullsub_42 -nullsub_42: @ 8072B04 - bx lr - thumb_func_end nullsub_42 - - thumb_func_start sub_8072B08 -sub_8072B08: @ 8072B08 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r0, 0 - mov r8, r0 - ldr r0, _08072B38 @ =gAnimVisualTaskCount - ldrb r0, [r0] - cmp r0, 0 - bne _08072B30 - ldr r0, _08072B3C @ =gUnknown_2037EE3 - ldrb r0, [r0] - cmp r0, 0 - bne _08072B30 - ldr r1, _08072B40 @ =gUnknown_2037F14 - ldrb r0, [r1] - cmp r0, 0xFF - bne _08072B30 - ldrb r0, [r1, 0x1] - cmp r0, 0xFF - beq _08072B48 -_08072B30: - ldr r1, _08072B44 @ =gUnknown_2037F12 - movs r0, 0 - strh r0, [r1] - b _08072B62 - .align 2, 0 -_08072B38: .4byte gAnimVisualTaskCount -_08072B3C: .4byte gUnknown_2037EE3 -_08072B40: .4byte gUnknown_2037F14 -_08072B44: .4byte gUnknown_2037F12 -_08072B48: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _08072B80 - ldr r1, _08072B6C @ =gUnknown_2037F12 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x5A - bhi _08072B74 -_08072B62: - ldr r1, _08072B70 @ =gUnknown_2037EE0 - movs r0, 0x1 - strb r0, [r1] - b _08072BDC - .align 2, 0 -_08072B6C: .4byte gUnknown_2037F12 -_08072B70: .4byte gUnknown_2037EE0 -_08072B74: - ldr r0, _08072BE8 @ =gMPlayInfo_SE1 - bl m4aMPlayStop - ldr r0, _08072BEC @ =gMPlayInfo_SE2 - bl m4aMPlayStop -_08072B80: - ldr r1, _08072BF0 @ =gUnknown_2037F12 - movs r0, 0 - strh r0, [r1] - movs r5, 0 - ldr r7, _08072BF4 @ =0x0000ffff - ldr r6, _08072BF8 @ =gUnknown_83ACC08 - ldr r4, _08072BFC @ =gUnknown_2037EEE -_08072B8E: - ldrh r0, [r4] - cmp r0, r7 - beq _08072BB2 - lsls r0, 3 - adds r0, r6 - ldrh r0, [r0, 0x6] - bl FreeSpriteTilesByTag - ldrh r0, [r4] - lsls r0, 3 - adds r0, r6 - ldrh r0, [r0, 0x6] - bl FreeSpritePaletteByTag - ldrh r1, [r4] - adds r0, r7, 0 - orrs r0, r1 - strh r0, [r4] -_08072BB2: - adds r4, 0x2 - adds r5, 0x1 - cmp r5, 0x7 - ble _08072B8E - mov r1, r8 - cmp r1, 0 - bne _08072BDC - ldr r0, _08072C00 @ =gMPlayInfo_BGM - ldr r1, _08072BF4 @ =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl - bl sub_80767F0 - movs r0, 0x1 - bl UpdateOamPriorityInAllHealthboxes - ldr r0, _08072C04 @ =gAnimScriptActive - mov r1, r8 - strb r1, [r0] -_08072BDC: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08072BE8: .4byte gMPlayInfo_SE1 -_08072BEC: .4byte gMPlayInfo_SE2 -_08072BF0: .4byte gUnknown_2037F12 -_08072BF4: .4byte 0x0000ffff -_08072BF8: .4byte gUnknown_83ACC08 -_08072BFC: .4byte gUnknown_2037EEE -_08072C00: .4byte gMPlayInfo_BGM -_08072C04: .4byte gAnimScriptActive - thumb_func_end sub_8072B08 - - thumb_func_start sub_8072C08 -sub_8072C08: @ 8072C08 - push {r4,lr} - ldr r4, _08072C2C @ =gUnknown_2037ED4 - ldr r0, [r4] - adds r1, r0, 0x1 - str r1, [r4] - ldrb r0, [r0, 0x1] - ldrb r1, [r1, 0x1] - lsls r1, 8 - orrs r0, r1 - bl PlaySE - ldr r0, [r4] - adds r0, 0x2 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08072C2C: .4byte gUnknown_2037ED4 - thumb_func_end sub_8072C08 - - thumb_func_start sub_8072C30 -sub_8072C30: @ 8072C30 - push {r4-r7,lr} - ldr r0, _08072C44 @ =gUnknown_2037ED4 - ldr r2, [r0] - adds r1, r2, 0x1 - str r1, [r0] - ldrb r6, [r2, 0x1] - cmp r6, 0 - bne _08072C48 - movs r6, 0x2 - b _08072C52 - .align 2, 0 -_08072C44: .4byte gUnknown_2037ED4 -_08072C48: - cmp r6, 0x1 - bne _08072C4E - movs r6, 0x3 -_08072C4E: - cmp r6, 0 - beq _08072C56 -_08072C52: - cmp r6, 0x2 - bne _08072C60 -_08072C56: - ldr r0, _08072C5C @ =gBattleAnimAttacker - b _08072C62 - .align 2, 0 -_08072C5C: .4byte gBattleAnimAttacker -_08072C60: - ldr r0, _08072CD8 @ =gBattleAnimTarget -_08072C62: - ldrb r5, [r0] - adds r0, r5, 0 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _08072D12 - adds r0, r5, 0 - bl GetBattlerPosition - lsls r0, 24 - movs r1, 0xFF - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - movs r7, 0x1 - cmp r0, 0x1 - bhi _08072C88 - movs r7, 0 -_08072C88: - adds r0, r5, 0 - adds r1, r7, 0 - bl MoveBattlerSpriteToBG - ldr r0, _08072CDC @ =gBattlerSpriteIds - adds r0, r5, r0 - ldrb r4, [r0] - ldr r0, _08072CE0 @ =task_pA_ma0A_obj_to_bg_pal - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _08072CE4 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r2, r0, r1 - strh r4, [r2, 0x8] - ldr r1, _08072CE8 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x24] - ldrh r4, [r0, 0x20] - adds r1, r4 - strh r1, [r2, 0xA] - ldrh r1, [r0, 0x26] - ldrh r0, [r0, 0x22] - adds r1, r0 - strh r1, [r2, 0xC] - cmp r7, 0 - bne _08072CF4 - ldr r0, _08072CEC @ =gBattle_BG1_X - ldrh r0, [r0] - strh r0, [r2, 0xE] - ldr r0, _08072CF0 @ =gBattle_BG1_Y - b _08072CFC - .align 2, 0 -_08072CD8: .4byte gBattleAnimTarget -_08072CDC: .4byte gBattlerSpriteIds -_08072CE0: .4byte task_pA_ma0A_obj_to_bg_pal -_08072CE4: .4byte gTasks -_08072CE8: .4byte gSprites -_08072CEC: .4byte gBattle_BG1_X -_08072CF0: .4byte gBattle_BG1_Y -_08072CF4: - ldr r0, _08072D8C @ =gBattle_BG2_X - ldrh r0, [r0] - strh r0, [r2, 0xE] - ldr r0, _08072D90 @ =gBattle_BG2_Y -_08072CFC: - ldrh r0, [r0] - strh r0, [r2, 0x10] - ldr r0, _08072D94 @ =gTasks - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 3 - adds r1, r0 - strh r7, [r1, 0x12] - strh r5, [r1, 0x14] - ldr r0, _08072D98 @ =gUnknown_2037F14 - strb r3, [r0] -_08072D12: - movs r0, 0x2 - eors r5, r0 - cmp r6, 0x1 - bls _08072DCE - adds r0, r5, 0 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _08072DCE - adds r0, r5, 0 - bl GetBattlerPosition - lsls r0, 24 - movs r1, 0xFF - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - movs r7, 0x1 - cmp r0, 0x1 - bhi _08072D3E - movs r7, 0 -_08072D3E: - adds r0, r5, 0 - adds r1, r7, 0 - bl MoveBattlerSpriteToBG - ldr r0, _08072D9C @ =gBattlerSpriteIds - adds r0, r5, r0 - ldrb r4, [r0] - ldr r0, _08072DA0 @ =task_pA_ma0A_obj_to_bg_pal - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _08072D94 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r2, r0, r1 - strh r4, [r2, 0x8] - ldr r1, _08072DA4 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x24] - ldrh r4, [r0, 0x20] - adds r1, r4 - strh r1, [r2, 0xA] - ldrh r1, [r0, 0x26] - ldrh r0, [r0, 0x22] - adds r1, r0 - strh r1, [r2, 0xC] - cmp r7, 0 - bne _08072DB0 - ldr r0, _08072DA8 @ =gBattle_BG1_X - ldrh r0, [r0] - strh r0, [r2, 0xE] - ldr r0, _08072DAC @ =gBattle_BG1_Y - b _08072DB8 - .align 2, 0 -_08072D8C: .4byte gBattle_BG2_X -_08072D90: .4byte gBattle_BG2_Y -_08072D94: .4byte gTasks -_08072D98: .4byte gUnknown_2037F14 -_08072D9C: .4byte gBattlerSpriteIds -_08072DA0: .4byte task_pA_ma0A_obj_to_bg_pal -_08072DA4: .4byte gSprites -_08072DA8: .4byte gBattle_BG1_X -_08072DAC: .4byte gBattle_BG1_Y -_08072DB0: - ldr r0, _08072DDC @ =gBattle_BG2_X - ldrh r0, [r0] - strh r0, [r2, 0xE] - ldr r0, _08072DE0 @ =gBattle_BG2_Y -_08072DB8: - ldrh r0, [r0] - strh r0, [r2, 0x10] - ldr r0, _08072DE4 @ =gTasks - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 3 - adds r1, r0 - strh r7, [r1, 0x12] - strh r5, [r1, 0x14] - ldr r0, _08072DE8 @ =gUnknown_2037F14 - strb r3, [r0, 0x1] -_08072DCE: - ldr r1, _08072DEC @ =gUnknown_2037ED4 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08072DDC: .4byte gBattle_BG2_X -_08072DE0: .4byte gBattle_BG2_Y -_08072DE4: .4byte gTasks -_08072DE8: .4byte gUnknown_2037F14 -_08072DEC: .4byte gUnknown_2037ED4 - thumb_func_end sub_8072C30 - - thumb_func_start IsBattlerSpriteVisible -IsBattlerSpriteVisible: @ 8072DF0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl IsBattlerSpritePresent - lsls r0, 24 - cmp r0, 0 - beq _08072E40 - ldr r0, _08072E34 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r4, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08072E30 - ldr r2, _08072E38 @ =gSprites - ldr r0, _08072E3C @ =gBattlerSpriteIds - adds r0, r4, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - blt _08072E40 -_08072E30: - movs r0, 0x1 - b _08072E42 - .align 2, 0 -_08072E34: .4byte gBattleSpritesDataPtr -_08072E38: .4byte gSprites -_08072E3C: .4byte gBattlerSpriteIds -_08072E40: - movs r0, 0 -_08072E42: - pop {r4} - pop {r1} - bx r1 - thumb_func_end IsBattlerSpriteVisible - - thumb_func_start MoveBattlerSpriteToBG -MoveBattlerSpriteToBG: @ 8072E48 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x28 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - cmp r4, 0 - beq _08072E5E - b _08072F84 -_08072E5E: - ldr r1, _08072F5C @ =0x06004000 - movs r2, 0x80 - lsls r2, 6 - movs r0, 0 - movs r3, 0x1 - bl RequestDma3Fill - ldr r1, _08072F60 @ =0x0600e000 - movs r2, 0x80 - lsls r2, 5 - movs r0, 0 - movs r3, 0x1 - bl RequestDma3Fill - add r0, sp, 0x10 - bl sub_80752A0 - add r0, sp, 0x20 - strh r4, [r0] - ldr r1, [sp, 0x10] - ldr r2, _08072F64 @ =0x01000800 - bl CpuSet - mov r0, sp - adds r0, 0x22 - strh r4, [r0] - ldr r1, [sp, 0x14] - ldr r2, _08072F68 @ =0x01000400 - bl CpuSet - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x2 - bl SetAnimBgAttribute - movs r0, 0x1 - movs r1, 0 - movs r2, 0x1 - bl SetAnimBgAttribute - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl SetAnimBgAttribute - ldr r2, _08072F6C @ =gBattlerSpriteIds - adds r2, r7, r2 - ldrb r0, [r2] - ldr r5, _08072F70 @ =gBattle_BG1_X - ldr r3, _08072F74 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrh r0, [r1, 0x24] - ldrh r4, [r1, 0x20] - adds r0, r4 - negs r0, r0 - adds r0, 0x20 - strh r0, [r5] - ldr r4, _08072F78 @ =gBattle_BG1_Y - ldrh r0, [r1, 0x26] - ldrh r1, [r1, 0x22] - adds r0, r1 - negs r0, r0 - adds r0, 0x20 - strh r0, [r4] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - ldrh r1, [r5] - movs r0, 0x14 - bl SetGpuReg - ldrh r1, [r4] - movs r0, 0x16 - bl SetGpuReg - lsls r4, r7, 5 - ldr r0, _08072F7C @ =gPlttBufferUnfaded + 0x200 - adds r4, r0 - add r0, sp, 0x10 - ldrb r1, [r0, 0x8] - lsls r1, 4 - adds r0, r4, 0 - movs r2, 0x20 - bl LoadPalette - add r0, sp, 0x10 - ldrb r1, [r0, 0x8] - lsls r1, 5 - movs r0, 0xA0 - lsls r0, 19 - adds r1, r0 - ldr r2, _08072F80 @ =0x04000008 - adds r0, r4, 0 - bl CpuSet - adds r0, r7, 0 - bl GetBattlerPosition - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - add r0, sp, 0x10 - ldrb r0, [r0, 0x8] - str r0, [sp] - ldr r0, [sp, 0x10] - str r0, [sp, 0x4] - ldr r0, [sp, 0x14] - str r0, [sp, 0x8] - add r0, sp, 0x10 - ldrh r0, [r0, 0xA] - str r0, [sp, 0xC] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl sub_80BCEF4 - b _08073086 - .align 2, 0 -_08072F5C: .4byte 0x06004000 -_08072F60: .4byte 0x0600e000 -_08072F64: .4byte 0x01000800 -_08072F68: .4byte 0x01000400 -_08072F6C: .4byte gBattlerSpriteIds -_08072F70: .4byte gBattle_BG1_X -_08072F74: .4byte gSprites -_08072F78: .4byte gBattle_BG1_Y -_08072F7C: .4byte gPlttBufferUnfaded + 0x200 -_08072F80: .4byte 0x04000008 -_08072F84: - ldr r1, _08073094 @ =0x06006000 - movs r2, 0x80 - lsls r2, 6 - movs r0, 0 - movs r3, 0x1 - bl RequestDma3Fill - ldr r1, _08073098 @ =0x0600f000 - movs r6, 0x80 - lsls r6, 5 - movs r0, 0 - adds r2, r6, 0 - movs r3, 0x1 - bl RequestDma3Fill - add r0, sp, 0x10 - movs r1, 0x2 - bl sub_80752C8 - add r0, sp, 0x24 - movs r4, 0 - strh r4, [r0] - ldr r1, [sp, 0x10] - adds r1, r6 - ldr r2, _0807309C @ =0x01000800 - bl CpuSet - mov r0, sp - adds r0, 0x26 - strh r4, [r0] - ldr r1, [sp, 0x14] - movs r2, 0x80 - lsls r2, 4 - mov r8, r2 - add r1, r8 - ldr r2, _080730A0 @ =0x01000400 - bl CpuSet - movs r0, 0x2 - movs r1, 0x4 - movs r2, 0x2 - bl SetAnimBgAttribute - movs r0, 0x2 - movs r1, 0 - movs r2, 0x1 - bl SetAnimBgAttribute - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0 - bl SetAnimBgAttribute - ldr r2, _080730A4 @ =gBattlerSpriteIds - adds r2, r7, r2 - ldrb r0, [r2] - ldr r5, _080730A8 @ =gBattle_BG2_X - ldr r3, _080730AC @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrh r0, [r1, 0x24] - ldrh r4, [r1, 0x20] - adds r0, r4 - negs r0, r0 - adds r0, 0x20 - strh r0, [r5] - ldr r4, _080730B0 @ =gBattle_BG2_Y - ldrh r0, [r1, 0x26] - ldrh r1, [r1, 0x22] - adds r0, r1 - negs r0, r0 - adds r0, 0x20 - strh r0, [r4] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - ldrh r1, [r5] - movs r0, 0x18 - bl SetGpuReg - ldrh r1, [r4] - movs r0, 0x1A - bl SetGpuReg - lsls r4, r7, 5 - ldr r0, _080730B4 @ =gPlttBufferUnfaded + 0x200 - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x90 - movs r2, 0x20 - bl LoadPalette - ldr r1, _080730B8 @ =0x05000120 - ldr r2, _080730BC @ =0x04000008 - adds r0, r4, 0 - bl CpuSet - adds r0, r7, 0 - bl GetBattlerPosition - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - add r0, sp, 0x10 - ldrb r0, [r0, 0x8] - str r0, [sp] - ldr r0, [sp, 0x10] - adds r0, r6 - str r0, [sp, 0x4] - ldr r0, [sp, 0x14] - add r0, r8 - str r0, [sp, 0x8] - add r0, sp, 0x10 - ldrh r0, [r0, 0xA] - str r0, [sp, 0xC] - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl sub_80BCEF4 -_08073086: - add sp, 0x28 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08073094: .4byte 0x06006000 -_08073098: .4byte 0x0600f000 -_0807309C: .4byte 0x01000800 -_080730A0: .4byte 0x01000400 -_080730A4: .4byte gBattlerSpriteIds -_080730A8: .4byte gBattle_BG2_X -_080730AC: .4byte gSprites -_080730B0: .4byte gBattle_BG2_Y -_080730B4: .4byte gPlttBufferUnfaded + 0x200 -_080730B8: .4byte 0x05000120 -_080730BC: .4byte 0x04000008 - thumb_func_end MoveBattlerSpriteToBG - - thumb_func_start sub_80730C0 -sub_80730C0: @ 80730C0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r12, r1 - adds r7, r2, 0 - lsls r0, 16 - lsrs r6, r0, 16 - lsls r3, 24 - movs r0, 0x40 - mov r9, r0 - cmp r3, 0 - bne _080730DE - movs r1, 0x20 - mov r9, r1 -_080730DE: - lsls r0, r6, 28 - lsrs r6, r0, 16 - movs r0, 0 - cmp r0, r9 - bcs _08073116 - ldr r1, _08073124 @ =0x00000fff - mov r8, r1 -_080730EC: - movs r3, 0 - adds r5, r0, 0x1 - lsls r4, r0, 5 -_080730F2: - adds r1, r4, r3 - lsls r1, 1 - add r1, r12 - ldrh r2, [r1] - mov r0, r8 - ands r0, r2 - orrs r0, r6 - adds r0, r7 - strh r0, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x1F - bls _080730F2 - lsls r0, r5, 24 - lsrs r0, 24 - cmp r0, r9 - bcc _080730EC -_08073116: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08073124: .4byte 0x00000fff - thumb_func_end sub_80730C0 - - thumb_func_start sub_8073128 -sub_8073128: @ 8073128 - push {r4,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r4, r0, 24 - mov r0, sp - bl sub_80752A0 - cmp r4, 0 - bne _08073154 - movs r0, 0x1 - bl sub_8075358 - ldr r0, _0807314C @ =gBattle_BG1_X - strh r4, [r0] - ldr r0, _08073150 @ =gBattle_BG1_Y - strh r4, [r0] - b _08073164 - .align 2, 0 -_0807314C: .4byte gBattle_BG1_X -_08073150: .4byte gBattle_BG1_Y -_08073154: - movs r0, 0x2 - bl sub_8075358 - ldr r0, _0807316C @ =gBattle_BG2_X - movs r1, 0 - strh r1, [r0] - ldr r0, _08073170 @ =gBattle_BG2_Y - strh r1, [r0] -_08073164: - add sp, 0x10 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807316C: .4byte gBattle_BG2_X -_08073170: .4byte gBattle_BG2_Y - thumb_func_end sub_8073128 - - thumb_func_start task_pA_ma0A_obj_to_bg_pal -task_pA_ma0A_obj_to_bg_pal: @ 8073174 - push {r4-r6,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080731F0 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r5, r1, r2 - ldrb r4, [r5, 0x8] - ldrb r6, [r5, 0x14] - mov r0, sp - bl sub_80752A0 - ldr r0, _080731F4 @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrh r2, [r1, 0x24] - ldrh r0, [r1, 0x20] - adds r2, r0 - ldrh r0, [r5, 0xA] - subs r0, r2 - lsls r0, 16 - lsrs r3, r0, 16 - ldrh r2, [r1, 0x26] - ldrh r1, [r1, 0x22] - adds r2, r1 - ldrh r0, [r5, 0xC] - subs r0, r2 - lsls r0, 16 - lsrs r2, r0, 16 - movs r1, 0x12 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _0807320C - ldr r1, _080731F8 @ =gBattle_BG1_X - lsls r0, r3, 16 - asrs r0, 16 - ldrh r3, [r5, 0xE] - adds r0, r3 - strh r0, [r1] - ldr r1, _080731FC @ =gBattle_BG1_Y - lsls r0, r2, 16 - asrs r0, 16 - ldrh r5, [r5, 0x10] - adds r0, r5 - strh r0, [r1] - lsls r0, r6, 5 - ldr r2, _08073200 @ =gPlttBufferFaded + 0x200 - adds r0, r2 - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 5 - ldr r3, _08073204 @ =0xfffffe00 - adds r2, r3 - adds r1, r2 - ldr r2, _08073208 @ =0x04000008 - bl CpuSet - b _08073232 - .align 2, 0 -_080731F0: .4byte gTasks -_080731F4: .4byte gSprites -_080731F8: .4byte gBattle_BG1_X -_080731FC: .4byte gBattle_BG1_Y -_08073200: .4byte gPlttBufferFaded + 0x200 -_08073204: .4byte 0xfffffe00 -_08073208: .4byte 0x04000008 -_0807320C: - ldr r1, _0807323C @ =gBattle_BG2_X - lsls r0, r3, 16 - asrs r0, 16 - ldrh r3, [r5, 0xE] - adds r0, r3 - strh r0, [r1] - ldr r1, _08073240 @ =gBattle_BG2_Y - lsls r0, r2, 16 - asrs r0, 16 - ldrh r5, [r5, 0x10] - adds r0, r5 - strh r0, [r1] - lsls r0, r6, 5 - ldr r1, _08073244 @ =gPlttBufferFaded + 0x200 - adds r0, r1 - subs r1, 0xE0 - ldr r2, _08073248 @ =0x04000008 - bl CpuSet -_08073232: - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807323C: .4byte gBattle_BG2_X -_08073240: .4byte gBattle_BG2_Y -_08073244: .4byte gPlttBufferFaded + 0x200 -_08073248: .4byte 0x04000008 - thumb_func_end task_pA_ma0A_obj_to_bg_pal - - thumb_func_start ScriptCmd_clearmonbg -ScriptCmd_clearmonbg: @ 807324C - push {r4,r5,lr} - ldr r0, _08073260 @ =gUnknown_2037ED4 - ldr r2, [r0] - adds r1, r2, 0x1 - str r1, [r0] - ldrb r4, [r2, 0x1] - cmp r4, 0 - bne _08073264 - movs r4, 0x2 - b _0807326E - .align 2, 0 -_08073260: .4byte gUnknown_2037ED4 -_08073264: - cmp r4, 0x1 - bne _0807326A - movs r4, 0x3 -_0807326A: - cmp r4, 0 - beq _08073272 -_0807326E: - cmp r4, 0x2 - bne _0807327C -_08073272: - ldr r0, _08073278 @ =gBattleAnimAttacker - b _0807327E - .align 2, 0 -_08073278: .4byte gBattleAnimAttacker -_0807327C: - ldr r0, _080732D4 @ =gBattleAnimTarget -_0807327E: - ldrb r5, [r0] - ldr r3, _080732D8 @ =gUnknown_2037F14 - ldrb r0, [r3] - cmp r0, 0xFF - beq _080732A4 - ldr r2, _080732DC @ =gSprites - ldr r0, _080732E0 @ =gBattlerSpriteIds - adds r0, r5, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] -_080732A4: - cmp r4, 0x1 - bls _080732E4 - ldrb r0, [r3, 0x1] - cmp r0, 0xFF - beq _080732E4 - ldr r3, _080732DC @ =gSprites - ldr r2, _080732E0 @ =gBattlerSpriteIds - movs r1, 0x2 - adds r0, r5, 0 - eors r0, r1 - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - b _080732E6 - .align 2, 0 -_080732D4: .4byte gBattleAnimTarget -_080732D8: .4byte gUnknown_2037F14 -_080732DC: .4byte gSprites -_080732E0: .4byte gBattlerSpriteIds -_080732E4: - movs r4, 0 -_080732E6: - ldr r0, _08073310 @ =sub_807331C - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08073314 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] - strh r5, [r1, 0xC] - ldr r1, _08073318 @ =gUnknown_2037ED4 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08073310: .4byte sub_807331C -_08073314: .4byte gTasks -_08073318: .4byte gUnknown_2037ED4 - thumb_func_end ScriptCmd_clearmonbg - - thumb_func_start sub_807331C -sub_807331C: @ 807331C - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - adds r7, r0, 0 - ldr r1, _08073394 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - beq _0807338E - ldrb r0, [r4, 0xC] - bl GetBattlerPosition - lsls r0, 24 - movs r1, 0xFF - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - movs r5, 0x1 - cmp r0, 0x1 - bhi _08073354 - movs r5, 0 -_08073354: - ldr r6, _08073398 @ =gUnknown_2037F14 - ldrb r0, [r6] - cmp r0, 0xFF - beq _0807336C - adds r0, r5, 0 - bl sub_8073128 - ldrb r0, [r6] - bl DestroyTask - movs r0, 0xFF - strb r0, [r6] -_0807336C: - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - ble _08073388 - movs r0, 0x1 - eors r5, r0 - adds r0, r5, 0 - bl sub_8073128 - ldrb r0, [r6, 0x1] - bl DestroyTask - movs r0, 0xFF - strb r0, [r6, 0x1] -_08073388: - adds r0, r7, 0 - bl DestroyTask -_0807338E: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08073394: .4byte gTasks -_08073398: .4byte gUnknown_2037F14 - thumb_func_end sub_807331C - - thumb_func_start sub_807339C -sub_807339C: @ 807339C - push {r4,r5,lr} - ldr r0, _080733B0 @ =gUnknown_2037ED4 - ldr r2, [r0] - adds r1, r2, 0x1 - str r1, [r0] - ldrb r5, [r2, 0x1] - cmp r5, 0 - bne _080733B4 - movs r5, 0x2 - b _080733BE - .align 2, 0 -_080733B0: .4byte gUnknown_2037ED4 -_080733B4: - cmp r5, 0x1 - bne _080733BA - movs r5, 0x3 -_080733BA: - cmp r5, 0 - beq _080733C2 -_080733BE: - cmp r5, 0x2 - bne _080733CC -_080733C2: - ldr r0, _080733C8 @ =gBattleAnimAttacker - b _080733CE - .align 2, 0 -_080733C8: .4byte gBattleAnimAttacker -_080733CC: - ldr r0, _08073474 @ =gBattleAnimTarget -_080733CE: - ldrb r4, [r0] - adds r0, r4, 0 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _08073416 - adds r0, r4, 0 - bl GetBattlerPosition - lsls r0, 24 - movs r1, 0xFF - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - movs r1, 0x1 - cmp r0, 0x1 - bhi _080733F4 - movs r1, 0 -_080733F4: - adds r0, r4, 0 - bl MoveBattlerSpriteToBG - ldr r2, _08073478 @ =gSprites - ldr r0, _0807347C @ =gBattlerSpriteIds - adds r0, r4, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] -_08073416: - movs r0, 0x2 - eors r4, r0 - cmp r5, 0x1 - bls _08073464 - adds r0, r4, 0 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _08073464 - adds r0, r4, 0 - bl GetBattlerPosition - lsls r0, 24 - movs r1, 0xFF - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - movs r1, 0x1 - cmp r0, 0x1 - bhi _08073442 - movs r1, 0 -_08073442: - adds r0, r4, 0 - bl MoveBattlerSpriteToBG - ldr r2, _08073478 @ =gSprites - ldr r0, _0807347C @ =gBattlerSpriteIds - adds r0, r4, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] -_08073464: - ldr r1, _08073480 @ =gUnknown_2037ED4 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08073474: .4byte gBattleAnimTarget -_08073478: .4byte gSprites -_0807347C: .4byte gBattlerSpriteIds -_08073480: .4byte gUnknown_2037ED4 - thumb_func_end sub_807339C - - thumb_func_start sub_8073484 -sub_8073484: @ 8073484 - push {r4-r6,lr} - ldr r0, _08073498 @ =gUnknown_2037ED4 - ldr r2, [r0] - adds r1, r2, 0x1 - str r1, [r0] - ldrb r5, [r2, 0x1] - cmp r5, 0 - bne _0807349C - movs r5, 0x2 - b _080734A6 - .align 2, 0 -_08073498: .4byte gUnknown_2037ED4 -_0807349C: - cmp r5, 0x1 - bne _080734A2 - movs r5, 0x3 -_080734A2: - cmp r5, 0 - beq _080734AA -_080734A6: - cmp r5, 0x2 - bne _080734B4 -_080734AA: - ldr r0, _080734B0 @ =gBattleAnimAttacker - b _080734B6 - .align 2, 0 -_080734B0: .4byte gBattleAnimAttacker -_080734B4: - ldr r0, _08073514 @ =gBattleAnimTarget -_080734B6: - ldrb r6, [r0] - adds r0, r6, 0 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080734E0 - ldr r2, _08073518 @ =gSprites - ldr r0, _0807351C @ =gBattlerSpriteIds - adds r0, r6, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] -_080734E0: - cmp r5, 0x1 - bls _08073520 - movs r0, 0x2 - adds r4, r6, 0 - eors r4, r0 - adds r0, r4, 0 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _08073520 - ldr r2, _08073518 @ =gSprites - ldr r0, _0807351C @ =gBattlerSpriteIds - adds r0, r4, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - b _08073522 - .align 2, 0 -_08073514: .4byte gBattleAnimTarget -_08073518: .4byte gSprites -_0807351C: .4byte gBattlerSpriteIds -_08073520: - movs r5, 0 -_08073522: - ldr r0, _0807354C @ =sub_8073558 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08073550 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r5, [r1, 0x8] - strh r6, [r1, 0xC] - ldr r1, _08073554 @ =gUnknown_2037ED4 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807354C: .4byte sub_8073558 -_08073550: .4byte gTasks -_08073554: .4byte gUnknown_2037ED4 - thumb_func_end sub_8073484 - - thumb_func_start sub_8073558 -sub_8073558: @ 8073558 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _080735DC @ =gTasks - lsls r0, 2 - add r0, r8 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - beq _080735D2 - ldrb r4, [r5, 0xC] - adds r6, r4, 0 - adds r0, r4, 0 - bl GetBattlerPosition - lsls r0, 24 - movs r1, 0xFF - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - movs r7, 0x1 - cmp r0, 0x1 - bhi _08073598 - movs r7, 0 -_08073598: - adds r0, r4, 0 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080735AA - adds r0, r7, 0 - bl sub_8073128 -_080735AA: - movs r2, 0x8 - ldrsh r0, [r5, r2] - cmp r0, 0x1 - ble _080735CC - movs r0, 0x2 - eors r6, r0 - adds r0, r6, 0 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080735CC - movs r0, 0x1 - eors r7, r0 - adds r0, r7, 0 - bl sub_8073128 -_080735CC: - mov r0, r8 - bl DestroyTask -_080735D2: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080735DC: .4byte gTasks - thumb_func_end sub_8073558 - - thumb_func_start ScriptCmd_setalpha -ScriptCmd_setalpha: @ 80735E0 - push {r4,r5,lr} - ldr r2, _08073614 @ =gUnknown_2037ED4 - ldr r0, [r2] - adds r1, r0, 0x1 - str r1, [r2] - ldrb r5, [r0, 0x1] - adds r0, r1, 0x1 - str r0, [r2] - ldrb r4, [r1, 0x1] - lsls r4, 8 - adds r0, 0x1 - str r0, [r2] - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - orrs r5, r4 - movs r0, 0x52 - adds r1, r5, 0 - bl SetGpuReg - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08073614: .4byte gUnknown_2037ED4 - thumb_func_end ScriptCmd_setalpha - - thumb_func_start ScriptCmd_setbldcnt -ScriptCmd_setbldcnt: @ 8073618 - push {lr} - ldr r3, _0807363C @ =gUnknown_2037ED4 - ldr r0, [r3] - adds r2, r0, 0x1 - str r2, [r3] - ldrb r1, [r0, 0x1] - adds r0, r2, 0x1 - str r0, [r3] - ldrb r2, [r2, 0x1] - lsls r2, 8 - adds r0, 0x1 - str r0, [r3] - orrs r1, r2 - movs r0, 0x50 - bl SetGpuReg - pop {r0} - bx r0 - .align 2, 0 -_0807363C: .4byte gUnknown_2037ED4 - thumb_func_end ScriptCmd_setbldcnt - - thumb_func_start ScriptCmd_blendoff -ScriptCmd_blendoff: @ 8073640 - push {lr} - ldr r1, _08073660 @ =gUnknown_2037ED4 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - pop {r0} - bx r0 - .align 2, 0 -_08073660: .4byte gUnknown_2037ED4 - thumb_func_end ScriptCmd_blendoff - - thumb_func_start ScriptCmd_call -ScriptCmd_call: @ 8073664 - push {r4,lr} - ldr r4, _08073690 @ =gUnknown_2037ED4 - ldr r1, [r4] - adds r3, r1, 0x1 - str r3, [r4] - ldr r2, _08073694 @ =gUnknown_2037ED8 - adds r0, r1, 0x5 - str r0, [r2] - ldrb r1, [r1, 0x1] - ldrb r0, [r3, 0x1] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r3, 0x2] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r3, 0x3] - lsls r0, 24 - adds r1, r0 - str r1, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08073690: .4byte gUnknown_2037ED4 -_08073694: .4byte gUnknown_2037ED8 - thumb_func_end ScriptCmd_call - - thumb_func_start sub_8073698 -sub_8073698: @ 8073698 - ldr r0, _080736A4 @ =gUnknown_2037ED4 - ldr r1, _080736A8 @ =gUnknown_2037ED8 - ldr r1, [r1] - str r1, [r0] - bx lr - .align 2, 0 -_080736A4: .4byte gUnknown_2037ED4 -_080736A8: .4byte gUnknown_2037ED8 - thumb_func_end sub_8073698 - - thumb_func_start ScriptCmd_setarg -ScriptCmd_setarg: @ 80736AC - push {r4,r5,lr} - ldr r5, _080736D8 @ =gUnknown_2037ED4 - ldr r1, [r5] - adds r0, r1, 0x1 - str r0, [r5] - ldrb r2, [r1, 0x1] - adds r3, r0, 0x1 - str r3, [r5] - ldrb r4, [r0, 0x1] - ldrb r0, [r3, 0x1] - lsls r0, 8 - orrs r4, r0 - adds r1, 0x4 - str r1, [r5] - ldr r0, _080736DC @ =gBattleAnimArgs - lsls r2, 1 - adds r2, r0 - strh r4, [r2] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080736D8: .4byte gUnknown_2037ED4 -_080736DC: .4byte gBattleAnimArgs - thumb_func_end ScriptCmd_setarg - - thumb_func_start ScriptCmd_choosetwoturnanim -ScriptCmd_choosetwoturnanim: @ 80736E0 - push {lr} - ldr r3, _08073718 @ =gUnknown_2037ED4 - ldr r2, [r3] - adds r0, r2, 0x1 - str r0, [r3] - ldr r0, _0807371C @ =gAnimMoveTurn - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080736FA - adds r0, r2, 0x5 - str r0, [r3] -_080736FA: - ldr r2, [r3] - ldrb r1, [r2] - ldrb r0, [r2, 0x1] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x2] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 24 - adds r1, r0 - str r1, [r3] - pop {r0} - bx r0 - .align 2, 0 -_08073718: .4byte gUnknown_2037ED4 -_0807371C: .4byte gAnimMoveTurn - thumb_func_end ScriptCmd_choosetwoturnanim - - thumb_func_start ScriptCmd_jumpifmoveturn -ScriptCmd_jumpifmoveturn: @ 8073720 - push {r4,r5,lr} - ldr r5, _08073750 @ =gUnknown_2037ED4 - ldr r4, [r5] - adds r2, r4, 0x1 - str r2, [r5] - ldrb r1, [r4, 0x1] - adds r3, r2, 0x1 - str r3, [r5] - ldr r0, _08073754 @ =gAnimMoveTurn - ldrb r0, [r0] - cmp r1, r0 - bne _08073758 - ldrb r1, [r2, 0x1] - ldrb r0, [r3, 0x1] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r3, 0x2] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r3, 0x3] - lsls r0, 24 - adds r1, r0 - str r1, [r5] - b _0807375C - .align 2, 0 -_08073750: .4byte gUnknown_2037ED4 -_08073754: .4byte gAnimMoveTurn -_08073758: - adds r0, r4, 0x6 - str r0, [r5] -_0807375C: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end ScriptCmd_jumpifmoveturn - - thumb_func_start ScriptCmd_jump -ScriptCmd_jump: @ 8073764 - ldr r3, _08073784 @ =gUnknown_2037ED4 - ldr r0, [r3] - adds r2, r0, 0x1 - str r2, [r3] - ldrb r1, [r0, 0x1] - ldrb r0, [r2, 0x1] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x2] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 24 - adds r1, r0 - str r1, [r3] - bx lr - .align 2, 0 -_08073784: .4byte gUnknown_2037ED4 - thumb_func_end ScriptCmd_jump - - thumb_func_start IsContest -IsContest: @ 8073788 - movs r0, 0 - bx lr - thumb_func_end IsContest - - thumb_func_start sub_807378C -sub_807378C: @ 807378C - push {lr} - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xC9 - beq _0807379A - movs r0, 0x1 - b _0807379C -_0807379A: - movs r0, 0 -_0807379C: - pop {r1} - bx r1 - thumb_func_end sub_807378C - - thumb_func_start sub_80737A0 -sub_80737A0: @ 80737A0 - push {r4,lr} - ldr r1, _080737D4 @ =gUnknown_2037ED4 - ldr r2, [r1] - adds r0, r2, 0x1 - str r0, [r1] - ldrb r4, [r2, 0x1] - adds r0, 0x1 - str r0, [r1] - ldr r0, _080737D8 @ =sub_8073850 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080737DC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] - ldr r1, _080737E0 @ =gUnknown_2037F17 - movs r0, 0x1 - strb r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080737D4: .4byte gUnknown_2037ED4 -_080737D8: .4byte sub_8073850 -_080737DC: .4byte gTasks -_080737E0: .4byte gUnknown_2037F17 - thumb_func_end sub_80737A0 - - thumb_func_start sub_80737E4 -sub_80737E4: @ 80737E4 - push {r4-r6,lr} - ldr r1, _08073820 @ =gUnknown_2037ED4 - ldr r0, [r1] - adds r2, r0, 0x1 - str r2, [r1] - ldrb r6, [r0, 0x1] - ldrb r5, [r2, 0x1] - adds r0, 0x4 - str r0, [r1] - ldr r0, _08073824 @ =sub_8073850 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08073828 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08073830 - ldr r1, _0807382C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - strh r5, [r0, 0x8] - b _0807383C - .align 2, 0 -_08073820: .4byte gUnknown_2037ED4 -_08073824: .4byte sub_8073850 -_08073828: .4byte gBattleAnimTarget -_0807382C: .4byte gTasks -_08073830: - ldr r1, _08073848 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - strh r6, [r0, 0x8] -_0807383C: - ldr r1, _0807384C @ =gUnknown_2037F17 - movs r0, 0x1 - strb r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08073848: .4byte gTasks -_0807384C: .4byte gUnknown_2037F17 - thumb_func_end sub_80737E4 - - thumb_func_start sub_8073850 -sub_8073850: @ 8073850 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _08073884 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r6, [r4, 0x1C] - movs r0, 0x1C - ldrsh r3, [r4, r0] - adds r7, r1, 0 - cmp r3, 0 - bne _08073888 - str r3, [sp] - movs r0, 0xE8 - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginHardwarePaletteFade - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - strh r0, [r4, 0x1C] - b _08073918 - .align 2, 0 -_08073884: .4byte gTasks -_08073888: - ldr r2, _080738A4 @ =gPaletteFade - ldrb r1, [r2, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08073918 - cmp r3, 0x1 - bne _080738AC - adds r0, r6, 0x1 - strh r0, [r4, 0x1C] - ldr r1, _080738A8 @ =gUnknown_2037F17 - movs r0, 0x2 - strb r0, [r1] - b _080738F0 - .align 2, 0 -_080738A4: .4byte gPaletteFade -_080738A8: .4byte gUnknown_2037F17 -_080738AC: - cmp r3, 0x2 - bne _080738F0 - ldrh r0, [r4, 0x8] - lsls r2, r0, 16 - asrs r1, r2, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _080738C4 - bl sub_807396C - b _080738CA -_080738C4: - lsrs r0, r2, 16 - bl sub_8073924 -_080738CA: - movs r0, 0x1 - str r0, [sp] - movs r0, 0xE8 - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginHardwarePaletteFade - ldr r1, _080738EC @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x1C] - adds r1, 0x1 - strh r1, [r0, 0x1C] - b _08073918 - .align 2, 0 -_080738EC: .4byte gTasks -_080738F0: - ldrb r1, [r2, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _08073918 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r7 - movs r1, 0x1C - ldrsh r0, [r0, r1] - cmp r0, 0x3 - bne _08073918 - adds r0, r5, 0 - bl DestroyTask - ldr r0, _08073920 @ =gUnknown_2037F17 - strb r4, [r0] -_08073918: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08073920: .4byte gUnknown_2037F17 - thumb_func_end sub_8073850 - - thumb_func_start sub_8073924 -sub_8073924: @ 8073924 - push {r4,r5,lr} - lsls r0, 16 - lsrs r0, 16 - ldr r5, _08073960 @ =gUnknown_83ADE18 - lsls r4, r0, 1 - adds r4, r0 - lsls r4, 2 - adds r0, r5, 0 - adds r0, 0x8 - adds r0, r4, r0 - ldr r0, [r0] - ldr r1, _08073964 @ =0x0600d000 - bl LZDecompressVram - adds r0, r4, r5 - ldr r0, [r0] - ldr r1, _08073968 @ =0x06008000 - bl LZDecompressVram - adds r5, 0x4 - adds r4, r5 - ldr r0, [r4] - movs r1, 0x20 - movs r2, 0x20 - bl LoadCompressedPalette - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08073960: .4byte gUnknown_83ADE18 -_08073964: .4byte 0x0600d000 -_08073968: .4byte 0x06008000 - thumb_func_end sub_8073924 - - thumb_func_start sub_807396C -sub_807396C: @ 807396C - push {lr} - bl sub_800F40C - pop {r0} - bx r0 - thumb_func_end sub_807396C - - thumb_func_start ScriptCmd_restorebg -ScriptCmd_restorebg: @ 8073978 - push {lr} - ldr r1, _080739A8 @ =gUnknown_2037ED4 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r0, _080739AC @ =sub_8073850 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080739B0 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r0, _080739B4 @ =0x0000ffff - strh r0, [r1, 0x8] - ldr r1, _080739B8 @ =gUnknown_2037F17 - movs r0, 0x1 - strb r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080739A8: .4byte gUnknown_2037ED4 -_080739AC: .4byte sub_8073850 -_080739B0: .4byte gTasks -_080739B4: .4byte 0x0000ffff -_080739B8: .4byte gUnknown_2037F17 - thumb_func_end ScriptCmd_restorebg - - thumb_func_start ScriptCmd_waitbgfadeout -ScriptCmd_waitbgfadeout: @ 80739BC - push {lr} - ldr r0, _080739D4 @ =gUnknown_2037F17 - ldrb r0, [r0] - cmp r0, 0x2 - bne _080739E0 - ldr r1, _080739D8 @ =gUnknown_2037ED4 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r1, _080739DC @ =gUnknown_2037EE0 - movs r0, 0 - b _080739E4 - .align 2, 0 -_080739D4: .4byte gUnknown_2037F17 -_080739D8: .4byte gUnknown_2037ED4 -_080739DC: .4byte gUnknown_2037EE0 -_080739E0: - ldr r1, _080739EC @ =gUnknown_2037EE0 - movs r0, 0x1 -_080739E4: - strb r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080739EC: .4byte gUnknown_2037EE0 - thumb_func_end ScriptCmd_waitbgfadeout - - thumb_func_start sub_80739F0 -sub_80739F0: @ 80739F0 - push {lr} - ldr r0, _08073A08 @ =gUnknown_2037F17 - ldrb r2, [r0] - cmp r2, 0 - bne _08073A14 - ldr r0, _08073A0C @ =gUnknown_2037ED4 - ldr r1, [r0] - adds r1, 0x1 - str r1, [r0] - ldr r0, _08073A10 @ =gUnknown_2037EE0 - strb r2, [r0] - b _08073A1A - .align 2, 0 -_08073A08: .4byte gUnknown_2037F17 -_08073A0C: .4byte gUnknown_2037ED4 -_08073A10: .4byte gUnknown_2037EE0 -_08073A14: - ldr r1, _08073A20 @ =gUnknown_2037EE0 - movs r0, 0x1 - strb r0, [r1] -_08073A1A: - pop {r0} - bx r0 - .align 2, 0 -_08073A20: .4byte gUnknown_2037EE0 - thumb_func_end sub_80739F0 - - thumb_func_start ScriptCmd_changebg -ScriptCmd_changebg: @ 8073A24 - push {r4,lr} - ldr r4, _08073A40 @ =gUnknown_2037ED4 - ldr r1, [r4] - adds r0, r1, 0x1 - str r0, [r4] - ldrb r0, [r1, 0x1] - bl sub_8073924 - ldr r0, [r4] - adds r0, 0x1 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08073A40: .4byte gUnknown_2037ED4 - thumb_func_end ScriptCmd_changebg - - thumb_func_start BattleAnimAdjustPanning -BattleAnimAdjustPanning: @ 8073A44 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08073A78 @ =gBattleSpritesDataPtr - ldr r1, [r0] - ldr r0, _08073A7C @ =gBattleAnimAttacker - ldrb r2, [r0] - ldr r1, [r1, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08073A80 - adds r0, r2, 0 - bl GetBattlerSide - lsls r0, 24 - movs r4, 0xC0 - cmp r0, 0 - beq _08073AE6 - movs r4, 0x3F - b _08073AE6 - .align 2, 0 -_08073A78: .4byte gBattleSpritesDataPtr -_08073A7C: .4byte gBattleAnimAttacker -_08073A80: - adds r0, r2, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08073ABA - ldr r0, _08073AA8 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08073AE6 - lsls r0, r4, 24 - asrs r1, r0, 24 - cmp r1, 0x3F - bne _08073AAC - movs r4, 0xC0 - b _08073AE6 - .align 2, 0 -_08073AA8: .4byte gBattleAnimTarget -_08073AAC: - movs r0, 0x40 - negs r0, r0 - cmp r1, r0 - beq _08073AE6 - negs r0, r1 - lsls r0, 24 - b _08073AE4 -_08073ABA: - ldr r0, _08073ADC @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08073AE0 - lsls r0, r4, 24 - asrs r0, 24 - movs r1, 0x40 - negs r1, r1 - cmp r0, r1 - bne _08073AE6 - movs r4, 0x3F - b _08073AE6 - .align 2, 0 -_08073ADC: .4byte gBattleAnimTarget -_08073AE0: - lsls r0, r4, 24 - negs r0, r0 -_08073AE4: - lsrs r4, r0, 24 -_08073AE6: - lsls r0, r4, 24 - asrs r1, r0, 24 - cmp r1, 0x3F - ble _08073AF2 - movs r4, 0x3F - b _08073AFC -_08073AF2: - movs r0, 0x40 - negs r0, r0 - cmp r1, r0 - bge _08073AFC - movs r4, 0xC0 -_08073AFC: - lsls r0, r4, 24 - asrs r0, 24 - pop {r4} - pop {r1} - bx r1 - thumb_func_end BattleAnimAdjustPanning - - thumb_func_start BattleAnimAdjustPanning2 -BattleAnimAdjustPanning2: @ 8073B08 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08073B3C @ =gBattleSpritesDataPtr - ldr r1, [r0] - ldr r0, _08073B40 @ =gBattleAnimAttacker - ldrb r2, [r0] - ldr r1, [r1, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08073B44 - adds r0, r2, 0 - bl GetBattlerSide - lsls r0, 24 - movs r4, 0xC0 - cmp r0, 0 - beq _08073B56 - movs r4, 0x3F - b _08073B56 - .align 2, 0 -_08073B3C: .4byte gBattleSpritesDataPtr -_08073B40: .4byte gBattleAnimAttacker -_08073B44: - adds r0, r2, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08073B56 - lsls r0, r4, 24 - negs r0, r0 - lsrs r4, r0, 24 -_08073B56: - lsls r0, r4, 24 - asrs r0, 24 - pop {r4} - pop {r1} - bx r1 - thumb_func_end BattleAnimAdjustPanning2 - - thumb_func_start KeepPanInRange -KeepPanInRange: @ 8073B60 - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - asrs r2, r0, 16 - cmp r2, 0x3F - ble _08073B70 - movs r1, 0x3F - b _08073B7A -_08073B70: - movs r0, 0x40 - negs r0, r0 - cmp r2, r0 - bge _08073B7A - ldr r1, _08073B84 @ =0x0000ffc0 -_08073B7A: - lsls r0, r1, 16 - asrs r0, 16 - pop {r1} - bx r1 - .align 2, 0 -_08073B84: .4byte 0x0000ffc0 - thumb_func_end KeepPanInRange - - thumb_func_start CalculatePanIncrement -CalculatePanIncrement: @ 8073B88 - push {lr} - lsls r2, 16 - lsrs r2, 16 - adds r3, r2, 0 - lsls r0, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - cmp r0, r1 - bge _08073BA6 - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0 - bge _08073BB6 - b _08073BB4 -_08073BA6: - cmp r0, r1 - ble _08073BBC - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, 0 - bge _08073BB4 - negs r0, r0 -_08073BB4: - negs r0, r0 -_08073BB6: - lsls r0, 16 - lsrs r0, 16 - b _08073BBE -_08073BBC: - movs r0, 0 -_08073BBE: - lsls r0, 16 - asrs r0, 16 - pop {r1} - bx r1 - thumb_func_end CalculatePanIncrement - - thumb_func_start ScriptCmd_playsewithpan -ScriptCmd_playsewithpan: @ 8073BC8 - push {r4,r5,lr} - ldr r5, _08073BFC @ =gUnknown_2037ED4 - ldr r0, [r5] - adds r1, r0, 0x1 - str r1, [r5] - ldrb r4, [r0, 0x1] - ldrb r0, [r1, 0x1] - lsls r0, 8 - orrs r4, r0 - movs r0, 0x2 - ldrsb r0, [r1, r0] - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - adds r0, r4, 0 - bl PlaySE12WithPanning - ldr r0, [r5] - adds r0, 0x3 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08073BFC: .4byte gUnknown_2037ED4 - thumb_func_end ScriptCmd_playsewithpan - - thumb_func_start ScriptCmd_setpan -ScriptCmd_setpan: @ 8073C00 - push {r4,lr} - ldr r4, _08073C28 @ =gUnknown_2037ED4 - ldr r1, [r4] - adds r0, r1, 0x1 - str r0, [r4] - movs r0, 0x1 - ldrsb r0, [r1, r0] - bl BattleAnimAdjustPanning - lsls r0, 24 - asrs r0, 24 - bl SE12PanpotControl - ldr r0, [r4] - adds r0, 0x1 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08073C28: .4byte gUnknown_2037ED4 - thumb_func_end ScriptCmd_setpan - - thumb_func_start ScriptCmd_panse_1B -ScriptCmd_panse_1B: @ 8073C2C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, _08073CDC @ =gUnknown_2037ED4 - mov r10, r0 - ldr r0, [r0] - adds r1, r0, 0x1 - mov r2, r10 - str r1, [r2] - ldrb r0, [r0, 0x1] - mov r9, r0 - ldrb r0, [r1, 0x1] - lsls r0, 8 - mov r2, r9 - orrs r2, r0 - mov r9, r2 - ldrb r4, [r1, 0x3] - ldrb r6, [r1, 0x4] - ldrb r7, [r1, 0x5] - movs r0, 0x2 - ldrsb r0, [r1, r0] - bl BattleAnimAdjustPanning - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, 24 - asrs r4, 24 - adds r0, r4, 0 - bl BattleAnimAdjustPanning - mov r8, r0 - lsls r5, 24 - asrs r5, 24 - mov r0, r8 - lsls r0, 24 - asrs r0, 24 - mov r8, r0 - lsls r6, 24 - asrs r6, 24 - adds r0, r5, 0 - mov r1, r8 - adds r2, r6, 0 - bl CalculatePanIncrement - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _08073CE0 @ =Task_PanFromInitialToTarget - movs r1, 0x1 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08073CE4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r5, [r1, 0x8] - mov r2, r8 - strh r2, [r1, 0xA] - lsls r4, 24 - asrs r4, 24 - strh r4, [r1, 0xC] - strh r7, [r1, 0xE] - strh r5, [r1, 0x10] - mov r0, r9 - adds r1, r5, 0 - bl PlaySE12WithPanning - ldr r1, _08073CE8 @ =gUnknown_2037EE3 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r1, r10 - ldr r0, [r1] - adds r0, 0x6 - str r0, [r1] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08073CDC: .4byte gUnknown_2037ED4 -_08073CE0: .4byte Task_PanFromInitialToTarget -_08073CE4: .4byte gTasks -_08073CE8: .4byte gUnknown_2037EE3 - thumb_func_end ScriptCmd_panse_1B - - thumb_func_start Task_PanFromInitialToTarget -Task_PanFromInitialToTarget: @ 8073CEC - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r7, 0 - ldr r1, _08073D30 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r2, r0, r1 - ldrh r0, [r2, 0x18] - adds r1, r0, 0x1 - strh r1, [r2, 0x18] - lsls r0, 16 - asrs r0, 16 - movs r3, 0xE - ldrsh r1, [r2, r3] - cmp r0, r1 - blt _08073D70 - strh r7, [r2, 0x18] - ldrh r6, [r2, 0x8] - ldrh r3, [r2, 0xA] - movs r4, 0x10 - ldrsh r0, [r2, r4] - movs r4, 0xC - ldrsh r1, [r2, r4] - adds r0, r1 - lsls r0, 16 - lsrs r4, r0, 16 - strh r4, [r2, 0x10] - cmp r1, 0 - bne _08073D34 - lsls r2, r3, 16 - b _08073D58 - .align 2, 0 -_08073D30: .4byte gTasks -_08073D34: - lsls r1, r6, 16 - lsls r0, r3, 16 - asrs r3, r0, 16 - adds r2, r0, 0 - cmp r1, r2 - bge _08073D4A - lsls r0, r4, 16 - asrs r0, 16 - cmp r0, r3 - blt _08073D54 - b _08073D58 -_08073D4A: - lsls r0, r4, 16 - asrs r0, 16 - cmp r0, r3 - bgt _08073D54 - movs r7, 0x1 -_08073D54: - cmp r7, 0 - beq _08073D68 -_08073D58: - lsrs r4, r2, 16 - adds r0, r5, 0 - bl DestroyTask - ldr r1, _08073D78 @ =gUnknown_2037EE3 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] -_08073D68: - lsls r0, r4, 24 - asrs r0, 24 - bl SE12PanpotControl -_08073D70: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08073D78: .4byte gUnknown_2037EE3 - thumb_func_end Task_PanFromInitialToTarget - - thumb_func_start ScriptCmd_panse_26 -ScriptCmd_panse_26: @ 8073D7C - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - ldr r0, _08073E00 @ =gUnknown_2037ED4 - mov r9, r0 - ldr r0, [r0] - adds r1, r0, 0x1 - mov r2, r9 - str r1, [r2] - ldrb r0, [r0, 0x1] - mov r8, r0 - ldrb r0, [r1, 0x1] - lsls r0, 8 - mov r2, r8 - orrs r2, r0 - mov r8, r2 - ldrb r4, [r1, 0x2] - ldrb r5, [r1, 0x3] - ldrb r6, [r1, 0x4] - ldrb r1, [r1, 0x5] - mov r10, r1 - ldr r0, _08073E04 @ =Task_PanFromInitialToTarget - movs r1, 0x1 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08073E08 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - lsls r4, 24 - asrs r4, 24 - strh r4, [r1, 0x8] - lsls r5, 24 - asrs r5, 24 - strh r5, [r1, 0xA] - lsls r6, 24 - asrs r6, 24 - strh r6, [r1, 0xC] - mov r0, r10 - strh r0, [r1, 0xE] - strh r4, [r1, 0x10] - mov r0, r8 - adds r1, r4, 0 - bl PlaySE12WithPanning - ldr r1, _08073E0C @ =gUnknown_2037EE3 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r1, r9 - ldr r0, [r1] - adds r0, 0x6 - str r0, [r1] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08073E00: .4byte gUnknown_2037ED4 -_08073E04: .4byte Task_PanFromInitialToTarget -_08073E08: .4byte gTasks -_08073E0C: .4byte gUnknown_2037EE3 - thumb_func_end ScriptCmd_panse_26 - - thumb_func_start ScriptCmd_panse_27 -ScriptCmd_panse_27: @ 8073E10 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, _08073EC0 @ =gUnknown_2037ED4 - mov r10, r0 - ldr r0, [r0] - adds r1, r0, 0x1 - mov r2, r10 - str r1, [r2] - ldrb r0, [r0, 0x1] - mov r9, r0 - ldrb r0, [r1, 0x1] - lsls r0, 8 - mov r2, r9 - orrs r2, r0 - mov r9, r2 - ldrb r4, [r1, 0x3] - ldrb r0, [r1, 0x4] - mov r8, r0 - ldrb r7, [r1, 0x5] - movs r0, 0x2 - ldrsb r0, [r1, r0] - bl BattleAnimAdjustPanning2 - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - lsls r4, 24 - asrs r4, 24 - adds r0, r4, 0 - bl BattleAnimAdjustPanning2 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - mov r1, r8 - lsls r1, 24 - asrs r1, 24 - mov r8, r1 - mov r0, r8 - bl BattleAnimAdjustPanning2 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _08073EC4 @ =Task_PanFromInitialToTarget - movs r1, 0x1 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08073EC8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - lsls r6, 24 - asrs r6, 24 - strh r6, [r1, 0x8] - lsls r5, 24 - asrs r5, 24 - strh r5, [r1, 0xA] - lsls r4, 24 - asrs r4, 24 - strh r4, [r1, 0xC] - strh r7, [r1, 0xE] - strh r6, [r1, 0x10] - mov r0, r9 - adds r1, r6, 0 - bl PlaySE12WithPanning - ldr r1, _08073ECC @ =gUnknown_2037EE3 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r2, r10 - ldr r0, [r2] - adds r0, 0x6 - str r0, [r2] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08073EC0: .4byte gUnknown_2037ED4 -_08073EC4: .4byte Task_PanFromInitialToTarget -_08073EC8: .4byte gTasks -_08073ECC: .4byte gUnknown_2037EE3 - thumb_func_end ScriptCmd_panse_27 - - thumb_func_start ScriptCmd_loopsewithpan -ScriptCmd_loopsewithpan: @ 8073ED0 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - ldr r6, _08073F48 @ =gUnknown_2037ED4 - ldr r0, [r6] - adds r1, r0, 0x1 - str r1, [r6] - ldrb r5, [r0, 0x1] - ldrb r0, [r1, 0x1] - lsls r0, 8 - orrs r5, r0 - ldrb r0, [r1, 0x3] - mov r8, r0 - ldrb r2, [r1, 0x4] - mov r9, r2 - movs r0, 0x2 - ldrsb r0, [r1, r0] - bl BattleAnimAdjustPanning - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _08073F4C @ =Task_LoopAndPlaySE - movs r1, 0x1 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08073F50 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r5, [r1, 0x8] - lsls r4, 24 - asrs r4, 24 - strh r4, [r1, 0xA] - mov r2, r8 - strh r2, [r1, 0xC] - mov r2, r9 - strh r2, [r1, 0xE] - mov r2, r8 - strh r2, [r1, 0x18] - ldr r1, [r1] - bl _call_via_r1 - ldr r1, _08073F54 @ =gUnknown_2037EE3 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x5 - str r0, [r6] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08073F48: .4byte gUnknown_2037ED4 -_08073F4C: .4byte Task_LoopAndPlaySE -_08073F50: .4byte gTasks -_08073F54: .4byte gUnknown_2037EE3 - thumb_func_end ScriptCmd_loopsewithpan - - thumb_func_start Task_LoopAndPlaySE -Task_LoopAndPlaySE: @ 8073F58 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _08073FAC @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r2, r0, r1 - ldrh r0, [r2, 0x18] - adds r1, r0, 0x1 - strh r1, [r2, 0x18] - lsls r0, 16 - asrs r0, 16 - movs r3, 0xC - ldrsh r1, [r2, r3] - cmp r0, r1 - blt _08073FA6 - movs r0, 0 - strh r0, [r2, 0x18] - ldrh r0, [r2, 0x8] - ldrb r1, [r2, 0xA] - ldrh r4, [r2, 0xE] - subs r4, 0x1 - strh r4, [r2, 0xE] - lsls r4, 24 - lsrs r4, 24 - lsls r1, 24 - asrs r1, 24 - bl PlaySE12WithPanning - cmp r4, 0 - bne _08073FA6 - adds r0, r5, 0 - bl DestroyTask - ldr r1, _08073FB0 @ =gUnknown_2037EE3 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] -_08073FA6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08073FAC: .4byte gTasks -_08073FB0: .4byte gUnknown_2037EE3 - thumb_func_end Task_LoopAndPlaySE - - thumb_func_start ScriptCmd_waitplaysewithpan -ScriptCmd_waitplaysewithpan: @ 8073FB4 - push {r4-r6,lr} - mov r6, r8 - push {r6} - ldr r6, _08074018 @ =gUnknown_2037ED4 - ldr r0, [r6] - adds r1, r0, 0x1 - str r1, [r6] - ldrb r5, [r0, 0x1] - ldrb r0, [r1, 0x1] - lsls r0, 8 - orrs r5, r0 - ldrb r0, [r1, 0x3] - mov r8, r0 - movs r0, 0x2 - ldrsb r0, [r1, r0] - bl BattleAnimAdjustPanning - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0807401C @ =Task_WaitAndPlaySE - movs r1, 0x1 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08074020 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r5, [r1, 0x8] - lsls r4, 24 - asrs r4, 24 - strh r4, [r1, 0xA] - mov r0, r8 - strh r0, [r1, 0xC] - ldr r1, _08074024 @ =gUnknown_2037EE3 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r6] - adds r0, 0x4 - str r0, [r6] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08074018: .4byte gUnknown_2037ED4 -_0807401C: .4byte Task_WaitAndPlaySE -_08074020: .4byte gTasks -_08074024: .4byte gUnknown_2037EE3 - thumb_func_end ScriptCmd_waitplaysewithpan - - thumb_func_start Task_WaitAndPlaySE -Task_WaitAndPlaySE: @ 8074028 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08074064 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r2, r0, r1 - ldrh r0, [r2, 0xC] - subs r1, r0, 0x1 - strh r1, [r2, 0xC] - lsls r0, 16 - cmp r0, 0 - bgt _0807405C - ldrh r0, [r2, 0x8] - movs r1, 0xA - ldrsb r1, [r2, r1] - bl PlaySE12WithPanning - adds r0, r4, 0 - bl DestroyTask - ldr r1, _08074068 @ =gUnknown_2037EE3 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] -_0807405C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08074064: .4byte gTasks -_08074068: .4byte gUnknown_2037EE3 - thumb_func_end Task_WaitAndPlaySE - - thumb_func_start ScriptCmd_createsoundtask -ScriptCmd_createsoundtask: @ 807406C - push {r4-r6,lr} - ldr r4, _080740D4 @ =gUnknown_2037ED4 - ldr r1, [r4] - adds r3, r1, 0x1 - str r3, [r4] - ldrb r2, [r1, 0x1] - ldrb r0, [r3, 0x1] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r3, 0x2] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r3, 0x3] - lsls r0, 24 - adds r6, r2, r0 - adds r0, r1, 0x5 - str r0, [r4] - ldrb r0, [r1, 0x5] - adds r1, 0x6 - str r1, [r4] - cmp r0, 0 - beq _080740B6 - adds r5, r4, 0 - ldr r4, _080740D8 @ =gBattleAnimArgs - adds r3, r0, 0 -_0807409E: - ldr r2, [r5] - ldrb r1, [r2] - ldrb r0, [r2, 0x1] - lsls r0, 8 - orrs r1, r0 - strh r1, [r4] - adds r2, 0x2 - str r2, [r5] - adds r4, 0x2 - subs r3, 0x1 - cmp r3, 0 - bne _0807409E -_080740B6: - adds r0, r6, 0 - movs r1, 0x1 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r6 - ldr r1, _080740DC @ =gUnknown_2037EE3 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080740D4: .4byte gUnknown_2037ED4 -_080740D8: .4byte gBattleAnimArgs -_080740DC: .4byte gUnknown_2037EE3 - thumb_func_end ScriptCmd_createsoundtask - - thumb_func_start ScriptCmd_waitsound -ScriptCmd_waitsound: @ 80740E0 - push {r4,r5,lr} - ldr r0, _08074118 @ =gUnknown_2037EE3 - ldrb r5, [r0] - cmp r5, 0 - bne _08074128 - bl IsSEPlaying - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _08074140 - ldr r4, _0807411C @ =gUnknown_2037F12 - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x5A - bls _0807412E - ldr r0, _08074120 @ =gMPlayInfo_SE1 - bl m4aMPlayStop - ldr r0, _08074124 @ =gMPlayInfo_SE2 - bl m4aMPlayStop - strh r5, [r4] - b _08074152 - .align 2, 0 -_08074118: .4byte gUnknown_2037EE3 -_0807411C: .4byte gUnknown_2037F12 -_08074120: .4byte gMPlayInfo_SE1 -_08074124: .4byte gMPlayInfo_SE2 -_08074128: - ldr r1, _08074138 @ =gUnknown_2037F12 - movs r0, 0 - strh r0, [r1] -_0807412E: - ldr r1, _0807413C @ =gUnknown_2037EE0 - movs r0, 0x1 - strb r0, [r1] - b _08074152 - .align 2, 0 -_08074138: .4byte gUnknown_2037F12 -_0807413C: .4byte gUnknown_2037EE0 -_08074140: - ldr r0, _08074158 @ =gUnknown_2037F12 - movs r2, 0 - strh r1, [r0] - ldr r1, _0807415C @ =gUnknown_2037ED4 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r0, _08074160 @ =gUnknown_2037EE0 - strb r2, [r0] -_08074152: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08074158: .4byte gUnknown_2037F12 -_0807415C: .4byte gUnknown_2037ED4 -_08074160: .4byte gUnknown_2037EE0 - thumb_func_end ScriptCmd_waitsound - - thumb_func_start ScriptCmd_jumpargeq -ScriptCmd_jumpargeq: @ 8074164 - push {r4-r6,lr} - ldr r5, _080741A4 @ =gUnknown_2037ED4 - ldr r4, [r5] - adds r3, r4, 0x1 - str r3, [r5] - ldrb r2, [r4, 0x1] - ldrb r1, [r3, 0x1] - ldrb r0, [r3, 0x2] - lsls r0, 8 - orrs r1, r0 - ldr r0, _080741A8 @ =gBattleAnimArgs - lsls r2, 1 - adds r2, r0 - lsls r1, 16 - asrs r1, 16 - movs r6, 0 - ldrsh r0, [r2, r6] - cmp r1, r0 - bne _080741AC - ldrb r1, [r3, 0x3] - ldrb r0, [r3, 0x4] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r3, 0x5] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r3, 0x6] - lsls r0, 24 - adds r1, r0 - str r1, [r5] - b _080741B2 - .align 2, 0 -_080741A4: .4byte gUnknown_2037ED4 -_080741A8: .4byte gBattleAnimArgs -_080741AC: - adds r0, r4, 0 - adds r0, 0x8 - str r0, [r5] -_080741B2: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end ScriptCmd_jumpargeq - - thumb_func_start sub_80741B8 -sub_80741B8: @ 80741B8 - ldr r1, _080741C4 @ =gUnknown_2037ED4 - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - bx lr - .align 2, 0 -_080741C4: .4byte gUnknown_2037ED4 - thumb_func_end sub_80741B8 - - thumb_func_start sub_80741C8 -sub_80741C8: @ 80741C8 - push {lr} - ldr r0, _080741DC @ =gUnknown_2037ED4 - ldr r1, [r0] - ldrb r2, [r1, 0x1] - adds r1, 0x2 - str r1, [r0] - cmp r2, 0 - beq _080741E4 - ldr r0, _080741E0 @ =gBattleAnimTarget - b _080741E6 - .align 2, 0 -_080741DC: .4byte gUnknown_2037ED4 -_080741E0: .4byte gBattleAnimTarget -_080741E4: - ldr r0, _08074210 @ =gBattleAnimAttacker -_080741E6: - ldrb r0, [r0] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _080741F8 - cmp r0, 0x3 - bne _0807420C -_080741F8: - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - movs r0, 0x2 - movs r1, 0x4 - movs r2, 0x2 - bl SetAnimBgAttribute -_0807420C: - pop {r0} - bx r0 - .align 2, 0 -_08074210: .4byte gBattleAnimAttacker - thumb_func_end sub_80741C8 - - thumb_func_start sub_8074214 -sub_8074214: @ 8074214 - push {lr} - ldr r1, _08074238 @ =gUnknown_2037ED4 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - movs r0, 0x2 - movs r1, 0x4 - movs r2, 0x2 - bl SetAnimBgAttribute - pop {r0} - bx r0 - .align 2, 0 -_08074238: .4byte gUnknown_2037ED4 - thumb_func_end sub_8074214 - - thumb_func_start sub_807423C -sub_807423C: @ 807423C - push {r4-r7,lr} - ldr r1, _0807426C @ =gUnknown_2037ED4 - ldr r0, [r1] - ldrb r6, [r0, 0x1] - adds r0, 0x2 - str r0, [r1] - ldr r7, _08074270 @ =gBattleAnimAttacker - ldrb r0, [r7] - bl GetBattlerSide - adds r4, r0, 0 - ldr r5, _08074274 @ =gBattleAnimTarget - ldrb r0, [r5] - bl GetBattlerSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _0807429E - cmp r6, 0 - beq _08074278 - ldrb r0, [r5] - b _0807427A - .align 2, 0 -_0807426C: .4byte gUnknown_2037ED4 -_08074270: .4byte gBattleAnimAttacker -_08074274: .4byte gBattleAnimTarget -_08074278: - ldrb r0, [r7] -_0807427A: - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0807428A - cmp r0, 0x3 - bne _0807429E -_0807428A: - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - movs r0, 0x2 - movs r1, 0x4 - movs r2, 0x2 - bl SetAnimBgAttribute -_0807429E: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_807423C - - thumb_func_start ScriptCmd_invisible -ScriptCmd_invisible: @ 80742A4 - push {r4,lr} - ldr r4, _080742D8 @ =gUnknown_2037ED4 - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - beq _080742CC - ldr r1, _080742DC @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080742CC: - ldr r0, [r4] - adds r0, 0x2 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080742D8: .4byte gUnknown_2037ED4 -_080742DC: .4byte gSprites - thumb_func_end ScriptCmd_invisible - - thumb_func_start ScriptCmd_visible -ScriptCmd_visible: @ 80742E0 - push {r4,lr} - ldr r4, _08074318 @ =gUnknown_2037ED4 - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - beq _0807430A - ldr r1, _0807431C @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] -_0807430A: - ldr r0, [r4] - adds r0, 0x2 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08074318: .4byte gUnknown_2037ED4 -_0807431C: .4byte gSprites - thumb_func_end ScriptCmd_visible - - thumb_func_start sub_8074320 -sub_8074320: @ 8074320 - push {r4-r7,lr} - ldr r1, _08074364 @ =gUnknown_2037ED4 - ldr r0, [r1] - ldrb r7, [r0, 0x1] - adds r0, 0x2 - str r0, [r1] - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080743C2 - ldr r6, _08074368 @ =gBattleAnimAttacker - ldrb r0, [r6] - bl GetBattlerSide - adds r4, r0, 0 - ldr r5, _0807436C @ =gBattleAnimTarget - ldrb r0, [r5] - bl GetBattlerSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _080743C2 - cmp r7, 0 - bne _08074370 - ldrb r0, [r6] - bl GetBattlerSpriteBGPriorityRank - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0 - b _0807437C - .align 2, 0 -_08074364: .4byte gUnknown_2037ED4 -_08074368: .4byte gBattleAnimAttacker -_0807436C: .4byte gBattleAnimTarget -_08074370: - ldrb r0, [r5] - bl GetBattlerSpriteBGPriorityRank - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x1 -_0807437C: - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - beq _080743C2 - ldr r1, _080743B8 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r2, r0, r1 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - cmp r4, 0x2 - bne _080743AC - ldrb r0, [r2, 0x5] - movs r1, 0xC - orrs r0, r1 - strb r0, [r2, 0x5] -_080743AC: - cmp r4, 0x1 - bne _080743BC - movs r0, 0 - bl sub_8073128 - b _080743C2 - .align 2, 0 -_080743B8: .4byte gSprites -_080743BC: - movs r0, 0x1 - bl sub_8073128 -_080743C2: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8074320 - - thumb_func_start sub_80743C8 -sub_80743C8: @ 80743C8 - push {r4-r7,lr} - ldr r1, _0807440C @ =gUnknown_2037ED4 - ldr r0, [r1] - ldrb r7, [r0, 0x1] - adds r0, 0x2 - str r0, [r1] - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0807444C - ldr r6, _08074410 @ =gBattleAnimAttacker - ldrb r0, [r6] - bl GetBattlerSide - adds r4, r0, 0 - ldr r5, _08074414 @ =gBattleAnimTarget - ldrb r0, [r5] - bl GetBattlerSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _0807444C - cmp r7, 0 - bne _08074418 - ldrb r0, [r6] - bl GetBattlerSpriteBGPriorityRank - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0 - b _08074424 - .align 2, 0 -_0807440C: .4byte gUnknown_2037ED4 -_08074410: .4byte gBattleAnimAttacker -_08074414: .4byte gBattleAnimTarget -_08074418: - ldrb r0, [r5] - bl GetBattlerSpriteBGPriorityRank - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x1 -_08074424: - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - beq _0807444C - cmp r4, 0x2 - bne _0807444C - ldr r1, _08074454 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - 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] -_0807444C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08074454: .4byte gSprites - thumb_func_end sub_80743C8 - - thumb_func_start sub_8074458 -sub_8074458: @ 8074458 - push {lr} - ldr r0, _08074474 @ =gMPlayInfo_SE1 - bl m4aMPlayStop - ldr r0, _08074478 @ =gMPlayInfo_SE2 - bl m4aMPlayStop - ldr r1, _0807447C @ =gUnknown_2037ED4 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08074474: .4byte gMPlayInfo_SE1 -_08074478: .4byte gMPlayInfo_SE2 -_0807447C: .4byte gUnknown_2037ED4 - thumb_func_end sub_8074458 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_effects_1.s b/asm/battle_anim_effects_1.s deleted file mode 100644 index 42b3517f2..000000000 --- a/asm/battle_anim_effects_1.s +++ /dev/null @@ -1,9882 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80A22E8 -sub_80A22E8: @ 80A22E8 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080A231C @ =gBattleAnimArgs - ldrh r0, [r5] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x30] - ldr r0, _080A2320 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A2324 - ldrh r0, [r5, 0x8] - negs r0, r0 - b _080A2326 - .align 2, 0 -_080A231C: .4byte gBattleAnimArgs -_080A2320: .4byte gBattleAnimAttacker -_080A2324: - ldrh r0, [r5, 0x8] -_080A2326: - strh r0, [r4, 0x34] - ldr r0, _080A2338 @ =gBattleAnimArgs - ldrh r0, [r0, 0xA] - strh r0, [r4, 0x36] - ldr r0, _080A233C @ =sub_80A2340 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A2338: .4byte gBattleAnimArgs -_080A233C: .4byte sub_80A2340 - thumb_func_end sub_80A22E8 - - thumb_func_start sub_80A2340 -sub_80A2340: @ 80A2340 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080A237C - subs r0, r1, 0x1 - strh r0, [r4, 0x2E] - ldrh r1, [r4, 0x32] - lsls r0, r1, 16 - asrs r0, 24 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r1, r0 - strh r1, [r4, 0x32] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r2, 0x34 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x36] - ldrh r1, [r4, 0x38] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - b _080A2382 -_080A237C: - adds r0, r4, 0 - bl DestroyAnimSprite -_080A2382: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A2340 - - thumb_func_start sub_80A2388 -sub_80A2388: @ 80A2388 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl InitSpritePosToAnimAttacker - ldr r0, _080A23C8 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x2E] - ldr r5, _080A23CC @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - ldr r0, _080A23D0 @ =StartAnimLinearTranslation - str r0, [r4, 0x1C] - ldr r1, _080A23D4 @ =DestroySpriteAndMatrix - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A23C8: .4byte gBattleAnimArgs -_080A23CC: .4byte gBattleAnimAttacker -_080A23D0: .4byte StartAnimLinearTranslation -_080A23D4: .4byte DestroySpriteAndMatrix - thumb_func_end sub_80A2388 - - thumb_func_start sub_80A23D8 -sub_80A23D8: @ 80A23D8 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl InitSpritePosToAnimAttacker - ldr r5, _080A2420 @ =gBattleAnimArgs - ldrb r1, [r5, 0x6] - adds r0, r4, 0 - bl StartSpriteAnim - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x2E] - ldr r5, _080A2424 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - ldr r0, _080A2428 @ =StartAnimLinearTranslation - str r0, [r4, 0x1C] - ldr r1, _080A242C @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A2420: .4byte gBattleAnimArgs -_080A2424: .4byte gBattleAnimTarget -_080A2428: .4byte StartAnimLinearTranslation -_080A242C: .4byte DestroyAnimSprite - thumb_func_end sub_80A23D8 - - thumb_func_start sub_80A2430 -sub_80A2430: @ 80A2430 - push {r4-r6,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl InitSpritePosToAnimAttacker - ldr r6, _080A2480 @ =gBattleAnimArgs - ldrh r0, [r6, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldr r5, _080A2484 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl InitAnimLinearTranslation - ldrh r0, [r6, 0x6] - strh r0, [r4, 0x38] - ldr r1, _080A2488 @ =sub_80A248C - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A2480: .4byte gBattleAnimArgs -_080A2484: .4byte gBattleAnimTarget -_080A2488: .4byte sub_80A248C - thumb_func_end sub_80A2430 - - thumb_func_start sub_80A248C -sub_80A248C: @ 80A248C - push {r4,lr} - adds r4, r0, 0 - bl AnimTranslateLinear - lsls r0, 24 - cmp r0, 0 - beq _080A24A2 - adds r0, r4, 0 - bl DestroySprite - b _080A24F6 -_080A24A2: - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x7F - ble _080A24BC - ldr r0, _080A24B8 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSpriteSubpriority - adds r0, 0x1 - b _080A24C6 - .align 2, 0 -_080A24B8: .4byte gBattleAnimTarget -_080A24BC: - ldr r0, _080A24FC @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSpriteSubpriority - adds r0, 0x6 -_080A24C6: - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x5 - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0xE - bl Cos - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x38] - adds r0, 0xF - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] -_080A24F6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A24FC: .4byte gBattleAnimTarget - thumb_func_end sub_80A248C - - thumb_func_start sub_80A2500 -sub_80A2500: @ 80A2500 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - ldr r1, _080A2570 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0x8] - subs r0, 0x1 - movs r2, 0 - strh r0, [r5, 0x8] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080A255A - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - movs r0, 0x6 - strh r0, [r5, 0x8] - ldr r1, _080A2574 @ =gBattleAnimArgs - movs r0, 0xF - strh r0, [r1] - strh r2, [r1, 0x2] - movs r0, 0x50 - strh r0, [r1, 0x4] - strh r2, [r1, 0x6] - ldr r4, _080A2578 @ =gUnknown_83E2A88 - ldr r0, _080A257C @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSpriteSubpriority - adds r3, r0, 0 - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0 - bl CreateSpriteAndAnimate -_080A255A: - movs r1, 0xA - ldrsh r0, [r5, r1] - cmp r0, 0xF - bne _080A2568 - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080A2568: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A2570: .4byte gTasks -_080A2574: .4byte gBattleAnimArgs -_080A2578: .4byte gUnknown_83E2A88 -_080A257C: .4byte gBattleAnimTarget - thumb_func_end sub_80A2500 - - thumb_func_start sub_80A2580 -sub_80A2580: @ 80A2580 - push {r4-r6,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl InitSpritePosToAnimTarget - ldr r6, _080A25C4 @ =gBattleAnimArgs - ldrh r0, [r6, 0x6] - strh r0, [r4, 0x2E] - ldr r5, _080A25C8 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - ldrh r0, [r6, 0x4] - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl InitAnimArcTranslation - ldr r0, _080A25CC @ =sub_80A25D0 - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A25C4: .4byte gBattleAnimArgs -_080A25C8: .4byte gBattleAnimAttacker -_080A25CC: .4byte sub_80A25D0 - thumb_func_end sub_80A2580 - - thumb_func_start sub_80A25D0 -sub_80A25D0: @ 80A25D0 - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimHorizontalArc - lsls r0, 24 - cmp r0, 0 - beq _080A25E4 - adds r0, r4, 0 - bl DestroyAnimSprite -_080A25E4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A25D0 - - thumb_func_start sub_80A25EC -sub_80A25EC: @ 80A25EC - push {r4,r5,lr} - adds r5, r0, 0 - bl Random - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x7 - ands r1, r0 - adds r0, r5, 0 - bl StartSpriteAnim - ldr r4, _080A2634 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A2638 - ldrh r0, [r5, 0x20] - subs r0, 0x14 - b _080A263C - .align 2, 0 -_080A2634: .4byte gBattleAnimAttacker -_080A2638: - ldrh r0, [r5, 0x20] - adds r0, 0x14 -_080A263C: - strh r0, [r5, 0x20] - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1F - ands r0, r1 - adds r0, 0x40 - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x30] - ldr r4, _080A269C @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x22] - strh r0, [r5, 0x34] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - adds r0, r5, 0 - bl InitAnimFastLinearTranslationWithSpeed - bl Random - movs r1, 0xFF - ands r1, r0 - strh r1, [r5, 0x38] - adds r0, r5, 0 - adds r0, 0x43 - ldrb r0, [r0] - strh r0, [r5, 0x3A] - ldr r1, _080A26A0 @ =sub_80A26A4 - str r1, [r5, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A269C: .4byte gBattleAnimTarget -_080A26A0: .4byte sub_80A26A4 - thumb_func_end sub_80A25EC - - thumb_func_start sub_80A26A4 -sub_80A26A4: @ 80A26A4 - push {r4,lr} - adds r4, r0, 0 - bl AnimFastTranslateLinear - lsls r0, 24 - cmp r0, 0 - beq _080A26BA - adds r0, r4, 0 - bl DestroyAnimSprite - b _080A26EA -_080A26BA: - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0xC - bl Cos - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x7E - bgt _080A26D6 - ldrh r0, [r4, 0x3A] - b _080A26DA -_080A26D6: - ldrh r0, [r4, 0x3A] - adds r0, 0x1 -_080A26DA: - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrh r0, [r4, 0x38] - adds r0, 0x18 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] -_080A26EA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A26A4 - - thumb_func_start sub_80A26F0 -sub_80A26F0: @ 80A26F0 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x1 - bl InitSpritePosToAnimAttacker - ldr r0, _080A2750 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A2710 - ldr r1, _080A2754 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_080A2710: - ldr r4, _080A2754 @ =gBattleAnimArgs - ldrh r0, [r4, 0x8] - strh r0, [r6, 0x2E] - ldr r5, _080A2758 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x4] - adds r0, r1 - strh r0, [r6, 0x32] - ldrb r0, [r5] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x6] - adds r0, r1 - strh r0, [r6, 0x36] - ldrh r0, [r4, 0xA] - strh r0, [r6, 0x38] - adds r0, r6, 0 - bl InitAnimArcTranslation - ldr r0, _080A275C @ =sub_80A2760 - str r0, [r6, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A2750: .4byte gBattleAnimAttacker -_080A2754: .4byte gBattleAnimArgs -_080A2758: .4byte gBattleAnimTarget -_080A275C: .4byte sub_80A2760 - thumb_func_end sub_80A26F0 - - thumb_func_start sub_80A2760 -sub_80A2760: @ 80A2760 - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimHorizontalArc - lsls r0, 24 - cmp r0, 0 - beq _080A278A - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - movs r0, 0xA - strh r0, [r4, 0x2E] - ldr r0, _080A2790 @ =WaitAnimForDuration - str r0, [r4, 0x1C] - ldr r1, _080A2794 @ =sub_80A2798 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 -_080A278A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A2790: .4byte WaitAnimForDuration -_080A2794: .4byte sub_80A2798 - thumb_func_end sub_80A2760 - - thumb_func_start sub_80A2798 -sub_80A2798: @ 80A2798 - push {r4,lr} - adds r4, r0, 0 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - movs r0, 0x3C - strh r0, [r4, 0x2E] - ldr r0, _080A27C8 @ =WaitAnimForDuration - str r0, [r4, 0x1C] - ldr r1, _080A27CC @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A27C8: .4byte WaitAnimForDuration -_080A27CC: .4byte DestroyAnimSprite - thumb_func_end sub_80A2798 - - thumb_func_start sub_80A27D0 -sub_80A27D0: @ 80A27D0 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl InitSpritePosToAnimTarget - ldr r5, _080A2814 @ =gBattleAnimArgs - ldrb r1, [r5, 0x8] - adds r0, r4, 0 - bl StartSpriteAnim - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - bne _080A27FA - ldrb r0, [r4, 0x1] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r4, 0x1] -_080A27FA: - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x2E] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x30] - ldr r1, _080A2818 @ =sub_80A281C - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A2814: .4byte gBattleAnimArgs -_080A2818: .4byte sub_80A281C - thumb_func_end sub_80A27D0 - - thumb_func_start sub_80A281C -sub_80A281C: @ 80A281C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x20 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x3 - negs r1, r1 - bl Cos - ldrh r1, [r4, 0x32] - adds r1, 0x18 - strh r1, [r4, 0x32] - lsls r1, 16 - asrs r1, 24 - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - subs r0, 0x40 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x7F - bhi _080A2870 - ldr r0, _080A286C @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSpriteBGPriority - movs r1, 0x3 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r4, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - b _080A2894 - .align 2, 0 -_080A286C: .4byte gBattleAnimTarget -_080A2870: - ldr r0, _080A28C0 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSpriteBGPriority - adds r0, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _080A2884 - movs r2, 0x3 -_080A2884: - movs r0, 0x3 - ands r2, r0 - lsls r2, 2 - ldrb r1, [r4, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - orrs r0, r2 -_080A2894: - strb r0, [r4, 0x5] - ldrh r0, [r4, 0x30] - adds r0, 0x2 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080A28B8 - adds r0, r4, 0 - bl DestroyAnimSprite -_080A28B8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A28C0: .4byte gBattleAnimTarget - thumb_func_end sub_80A281C - - thumb_func_start sub_80A28C4 -sub_80A28C4: @ 80A28C4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A28DE - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _080A28E6 -_080A28DE: - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _080A2918 -_080A28E6: - ldr r0, _080A2904 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSpriteBGPriorityRank - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A2908 - movs r0, 0x2 - movs r1, 0x4 - movs r2, 0x3 - bl SetAnimBgAttribute - b _080A2912 - .align 2, 0 -_080A2904: .4byte gBattleAnimTarget -_080A2908: - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute -_080A2912: - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080A2918: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A28C4 - - thumb_func_start sub_80A2920 -sub_80A2920: @ 80A2920 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0 - bl InitSpritePosToAnimAttacker - ldr r5, _080A2968 @ =gBattleAnimArgs - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - ldr r0, _080A296C @ =gBattleAnimAttacker - ldrb r0, [r0] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r5, [r5, 0x4] - adds r0, r5 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl InitAnimLinearTranslation - movs r0, 0x40 - strh r0, [r4, 0x38] - ldr r1, _080A2970 @ =sub_80A2974 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A2968: .4byte gBattleAnimArgs -_080A296C: .4byte gBattleAnimAttacker -_080A2970: .4byte sub_80A2974 - thumb_func_end sub_80A2920 - - thumb_func_start sub_80A2974 -sub_80A2974: @ 80A2974 - push {r4,lr} - adds r4, r0, 0 - bl AnimTranslateLinear - lsls r0, 24 - cmp r0, 0 - bne _080A29E0 - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x20 - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x5 - negs r1, r1 - bl Cos - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x38] - subs r0, 0x40 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x7F - bhi _080A29C0 - ldr r0, _080A29BC @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSpriteSubpriority - subs r0, 0x1 - b _080A29CA - .align 2, 0 -_080A29BC: .4byte gBattleAnimAttacker -_080A29C0: - ldr r0, _080A29DC @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSpriteSubpriority - adds r0, 0x1 -_080A29CA: - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrh r0, [r4, 0x38] - adds r0, 0x5 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - b _080A29E6 - .align 2, 0 -_080A29DC: .4byte gBattleAnimAttacker -_080A29E0: - adds r0, r4, 0 - bl DestroyAnimSprite -_080A29E6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A2974 - - thumb_func_start sub_80A29EC -sub_80A29EC: @ 80A29EC - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl InitSpritePosToAnimAttacker - ldr r5, _080A2A34 @ =gBattleAnimArgs - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - ldr r0, _080A2A38 @ =gBattleAnimAttacker - ldrb r0, [r0] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r5, [r5, 0x4] - adds r0, r5 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl InitAnimLinearTranslation - movs r0, 0x40 - strh r0, [r4, 0x38] - ldr r1, _080A2A3C @ =sub_80A2A40 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A2A34: .4byte gBattleAnimArgs -_080A2A38: .4byte gBattleAnimAttacker -_080A2A3C: .4byte sub_80A2A40 - thumb_func_end sub_80A29EC - - thumb_func_start sub_80A2A40 -sub_80A2A40: @ 80A2A40 - push {r4,lr} - adds r4, r0, 0 - bl AnimTranslateLinear - lsls r0, 24 - cmp r0, 0 - bne _080A2A98 - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x8 - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - ldrh r1, [r4, 0x38] - adds r0, r1, 0 - subs r0, 0x3B - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x4 - bls _080A2A78 - adds r0, r1, 0 - subs r0, 0xBB - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x4 - bhi _080A2A8C -_080A2A78: - ldrb r2, [r4, 0x3] - lsls r1, r2, 26 - lsrs r1, 27 - movs r0, 0x8 - eors r1, r0 - lsls r1, 1 - subs r0, 0x47 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x3] -_080A2A8C: - ldrh r0, [r4, 0x38] - adds r0, 0x5 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - b _080A2A9E -_080A2A98: - adds r0, r4, 0 - bl DestroyAnimSprite -_080A2A9E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A2A40 - - thumb_func_start sub_80A2AA4 -sub_80A2AA4: @ 80A2AA4 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080A2AE0 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - ldr r1, _080A2AE4 @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x32] - ldr r0, _080A2AE8 @ =sub_80A2AEC - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A2AE0: .4byte gBattleAnimAttacker -_080A2AE4: .4byte gBattleAnimArgs -_080A2AE8: .4byte sub_80A2AEC - thumb_func_end sub_80A2AA4 - - thumb_func_start sub_80A2AEC -sub_80A2AEC: @ 80A2AEC - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x32] - movs r2, 0x32 - ldrsh r3, [r1, r2] - cmp r3, 0 - bne _080A2B20 - ldrh r0, [r1, 0x30] - movs r2, 0x1 - ands r2, r0 - cmp r2, 0 - beq _080A2B0E - movs r0, 0x80 - strh r0, [r1, 0x2E] - strh r3, [r1, 0x30] - strh r3, [r1, 0x32] - b _080A2B14 -_080A2B0E: - strh r2, [r1, 0x2E] - strh r2, [r1, 0x30] - strh r2, [r1, 0x32] -_080A2B14: - ldr r0, _080A2B1C @ =sub_80A2B38 - str r0, [r1, 0x1C] - b _080A2B34 - .align 2, 0 -_080A2B1C: .4byte sub_80A2B38 -_080A2B20: - subs r0, 0x1 - strh r0, [r1, 0x32] - ldrh r0, [r1, 0x2E] - ldrh r2, [r1, 0x20] - adds r0, r2 - strh r0, [r1, 0x20] - ldrh r0, [r1, 0x30] - ldrh r2, [r1, 0x22] - adds r0, r2 - strh r0, [r1, 0x22] -_080A2B34: - pop {r0} - bx r0 - thumb_func_end sub_80A2AEC - - thumb_func_start sub_80A2B38 -sub_80A2B38: @ 80A2B38 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080A2B58 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A2B5C - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x19 - bl Sin - negs r0, r0 - b _080A2B66 - .align 2, 0 -_080A2B58: .4byte gBattleAnimAttacker -_080A2B5C: - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x19 - bl Sin -_080A2B66: - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x2E] - adds r0, 0x2 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080A2B86 - ldrh r0, [r4, 0x26] - adds r0, 0x1 - strh r0, [r4, 0x26] -_080A2B86: - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x50 - ble _080A2B94 - adds r0, r4, 0 - bl DestroyAnimSprite -_080A2B94: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A2B38 - - thumb_func_start sub_80A2B9C -sub_80A2B9C: @ 80A2B9C - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0x1 - bl InitSpritePosToAnimAttacker - ldr r0, _080A2BF0 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A2BBC - ldr r1, _080A2BF4 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_080A2BBC: - ldr r6, _080A2BF4 @ =gBattleAnimArgs - ldrh r0, [r6, 0x8] - strh r0, [r5, 0x2E] - movs r1, 0xC - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080A2BFC - ldr r4, _080A2BF8 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6, 0x4] - adds r0, r1 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x6] - adds r0, r6 - b _080A2C1C - .align 2, 0 -_080A2BF0: .4byte gBattleAnimAttacker -_080A2BF4: .4byte gBattleAnimArgs -_080A2BF8: .4byte gBattleAnimTarget -_080A2BFC: - ldr r0, _080A2C48 @ =gBattleAnimTarget - ldrb r0, [r0] - adds r2, r5, 0 - adds r2, 0x32 - adds r3, r5, 0 - adds r3, 0x36 - movs r1, 0x1 - bl SetAverageBattlerPositions - ldrh r0, [r6, 0x4] - ldrh r1, [r5, 0x32] - adds r0, r1 - strh r0, [r5, 0x32] - ldrh r0, [r6, 0x6] - ldrh r1, [r5, 0x36] - adds r0, r1 -_080A2C1C: - strh r0, [r5, 0x36] - ldr r0, _080A2C4C @ =gBattleAnimArgs - ldrh r0, [r0, 0xA] - strh r0, [r5, 0x38] - adds r0, r5, 0 - bl InitAnimArcTranslation - ldr r0, _080A2C50 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - adds r4, r0, 0 - ldr r0, _080A2C48 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _080A2C54 - movs r0, 0x1 - b _080A2C56 - .align 2, 0 -_080A2C48: .4byte gBattleAnimTarget -_080A2C4C: .4byte gBattleAnimArgs -_080A2C50: .4byte gBattleAnimAttacker -_080A2C54: - movs r0, 0 -_080A2C56: - strh r0, [r5, 0x2E] - ldr r0, _080A2C64 @ =sub_80A2C68 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A2C64: .4byte sub_80A2C68 - thumb_func_end sub_80A2B9C - - thumb_func_start sub_80A2C68 -sub_80A2C68: @ 80A2C68 - push {r4-r7,lr} - adds r6, r0, 0 - movs r7, 0 - ldrh r5, [r6, 0x2E] - ldrh r4, [r6, 0x3C] - movs r0, 0x1 - strh r0, [r6, 0x2E] - adds r0, r6, 0 - bl TranslateAnimHorizontalArc - ldrh r0, [r6, 0x3C] - strh r5, [r6, 0x2E] - lsls r4, 16 - asrs r4, 16 - cmp r4, 0xC8 - ble _080A2C9A - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x37 - bgt _080A2C9A - ldrh r0, [r6, 0x6] - cmp r0, 0 - bne _080A2CA0 - adds r0, 0x1 - strh r0, [r6, 0x6] -_080A2C9A: - ldrh r0, [r6, 0x6] - cmp r0, 0 - beq _080A2CD2 -_080A2CA0: - movs r1, 0x2E - ldrsh r0, [r6, r1] - cmp r0, 0 - beq _080A2CD2 - adds r3, r6, 0 - adds r3, 0x3E - ldrb r2, [r3] - 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 - strb r0, [r3] - ldrh r0, [r6, 0x6] - adds r0, 0x1 - strh r0, [r6, 0x6] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1E - bne _080A2CD2 - movs r7, 0x1 -_080A2CD2: - movs r2, 0x20 - ldrsh r0, [r6, r2] - movs r2, 0x24 - ldrsh r1, [r6, r2] - adds r0, r1 - adds r0, 0x10 - movs r1, 0x88 - lsls r1, 1 - cmp r0, r1 - bhi _080A2CFC - movs r0, 0x22 - ldrsh r1, [r6, r0] - movs r2, 0x26 - ldrsh r0, [r6, r2] - adds r1, r0 - cmp r1, 0xA0 - bgt _080A2CFC - movs r0, 0x10 - negs r0, r0 - cmp r1, r0 - bge _080A2CFE -_080A2CFC: - movs r7, 0x1 -_080A2CFE: - cmp r7, 0 - beq _080A2D08 - adds r0, r6, 0 - bl DestroyAnimSprite -_080A2D08: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80A2C68 - - thumb_func_start AnimMoveTwisterParticle -AnimMoveTwisterParticle: @ 80A2D10 - push {r4,lr} - adds r4, r0, 0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A2D3C - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A2D3C - ldr r0, _080A2D64 @ =gBattleAnimTarget - ldrb r0, [r0] - adds r2, r4, 0 - adds r2, 0x20 - adds r3, r4, 0 - adds r3, 0x22 - movs r1, 0x1 - bl SetAverageBattlerPositions -_080A2D3C: - ldrh r0, [r4, 0x22] - adds r0, 0x20 - strh r0, [r4, 0x22] - ldr r1, _080A2D68 @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x32] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x34] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x36] - ldr r0, _080A2D6C @ =sub_80A2D70 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A2D64: .4byte gBattleAnimTarget -_080A2D68: .4byte gBattleAnimArgs -_080A2D6C: .4byte sub_80A2D70 - thumb_func_end AnimMoveTwisterParticle - - thumb_func_start sub_80A2D70 -sub_80A2D70: @ 80A2D70 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x30] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0xFF - bne _080A2D86 - ldrh r0, [r4, 0x22] - subs r0, 0x2 - strh r0, [r4, 0x22] - b _080A2D94 -_080A2D86: - cmp r0, 0 - ble _080A2D94 - ldrh r0, [r4, 0x22] - subs r0, 0x2 - strh r0, [r4, 0x22] - subs r0, r1, 0x2 - strh r0, [r4, 0x30] -_080A2D94: - ldrh r3, [r4, 0x32] - ldrh r5, [r4, 0x38] - adds r2, r3, r5 - strh r2, [r4, 0x38] - movs r0, 0x2E - ldrsh r1, [r4, r0] - movs r5, 0x36 - ldrsh r0, [r4, r5] - cmp r1, r0 - bge _080A2DAC - adds r0, r2, r3 - strh r0, [r4, 0x38] -_080A2DAC: - ldrh r1, [r4, 0x38] - movs r0, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r2, 0x34 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x24] - movs r5, 0x38 - ldrsh r0, [r4, r5] - movs r1, 0x5 - bl Sin - strh r0, [r4, 0x26] - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x7F - bgt _080A2DEC - ldr r0, _080A2DE8 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSpriteBGPriority - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - b _080A2DFA - .align 2, 0 -_080A2DE8: .4byte gBattleAnimTarget -_080A2DEC: - ldr r0, _080A2E24 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSpriteBGPriority - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1 -_080A2DFA: - movs r1, 0x3 - ands r0, r1 - lsls r0, 2 - ldrb r2, [r4, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x5] - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _080A2E1E - adds r0, r4, 0 - bl DestroyAnimSprite -_080A2E1E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A2E24: .4byte gBattleAnimTarget - thumb_func_end sub_80A2D70 - - thumb_func_start sub_80A2E28 -sub_80A2E28: @ 80A2E28 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0 - bl InitSpritePosToAnimTarget - adds r2, r5, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r4, _080A2E5C @ =gBattleAnimArgs - ldrb r1, [r4, 0x4] - adds r0, r5, 0 - bl StartSpriteAffineAnim - ldrh r0, [r4, 0x4] - strh r0, [r5, 0x3A] - ldrh r0, [r4, 0x6] - strh r0, [r5, 0x3C] - ldr r0, _080A2E60 @ =sub_80A2E64 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A2E5C: .4byte gBattleAnimArgs -_080A2E60: .4byte sub_80A2E64 - thumb_func_end sub_80A2E28 - - thumb_func_start sub_80A2E64 -sub_80A2E64: @ 80A2E64 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080A2E94 @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080A2E98 @ =0x0000ffff - cmp r1, r0 - bne _080A2E8E - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - movs r0, 0x1 - bl GetAnimBattlerSpriteId - movs r0, 0x80 - lsls r0, 1 - strh r0, [r4, 0x2E] - ldr r0, _080A2E9C @ =sub_80A2EA0 - str r0, [r4, 0x1C] -_080A2E8E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A2E94: .4byte gBattleAnimArgs -_080A2E98: .4byte 0x0000ffff -_080A2E9C: .4byte sub_80A2EA0 - thumb_func_end sub_80A2E64 - - thumb_func_start sub_80A2EA0 -sub_80A2EA0: @ 80A2EA0 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x1 - bl GetAnimBattlerSpriteId - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A2EB8 - ldrh r0, [r4, 0x2E] - adds r0, 0xB - b _080A2EBC -_080A2EB8: - ldrh r0, [r4, 0x2E] - subs r0, 0xB -_080A2EBC: - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - bne _080A2ED8 - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x32] - movs r1, 0x1 - eors r0, r1 - strh r0, [r4, 0x32] -_080A2ED8: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080A2F06 - ldrh r0, [r4, 0x3C] - subs r0, 0x1 - strh r0, [r4, 0x3C] - lsls r0, 16 - cmp r0, 0 - ble _080A2F00 - ldrh r1, [r4, 0x3A] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAffineAnim - b _080A2F06 -_080A2F00: - adds r0, r4, 0 - bl DestroyAnimSprite -_080A2F06: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A2EA0 - - thumb_func_start sub_80A2F0C -sub_80A2F0C: @ 80A2F0C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x1 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080A2F38 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - bge _080A2F3C - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _080A2F62 - .align 2, 0 -_080A2F38: .4byte gSprites -_080A2F3C: - adds r0, r2, 0 - movs r1, 0x1 - bl PrepareBattlerSpriteForRotScale - ldr r1, _080A2F68 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r2, _080A2F6C @ =gBattleAnimArgs - ldrh r1, [r2] - strh r1, [r0, 0x8] - ldrh r1, [r2, 0x2] - strh r1, [r0, 0xA] - movs r1, 0x80 - lsls r1, 1 - strh r1, [r0, 0x1E] - ldr r1, _080A2F70 @ =sub_80A2F74 - str r1, [r0] -_080A2F62: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A2F68: .4byte gTasks -_080A2F6C: .4byte gBattleAnimArgs -_080A2F70: .4byte sub_80A2F74 - thumb_func_end sub_80A2F0C - - thumb_func_start sub_80A2F74 -sub_80A2F74: @ 80A2F74 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - ldr r1, _080A2FF4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r1 - ldrh r1, [r4, 0x8] - ldrh r0, [r4, 0x1C] - adds r1, r0 - strh r1, [r4, 0x1C] - ldr r2, _080A2FF8 @ =gSprites - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r5, r0, r2 - lsls r1, 16 - asrs r1, 24 - strh r1, [r5, 0x24] - ldr r0, _080A2FFC @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A2FBE - ldrh r0, [r5, 0x24] - negs r0, r0 - strh r0, [r5, 0x24] -_080A2FBE: - ldrh r0, [r4, 0x1E] - adds r0, 0x10 - strh r0, [r4, 0x1E] - movs r0, 0x1E - ldrsh r2, [r4, r0] - adds r0, r6, 0 - adds r1, r2, 0 - movs r3, 0 - bl SetSpriteRotScale - adds r0, r6, 0 - bl SetBattlerSpriteYOffsetFromYScale - ldrh r0, [r4, 0xA] - subs r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bne _080A2FEC - strh r0, [r4, 0x8] - ldr r0, _080A3000 @ =sub_80A3004 - str r0, [r4] -_080A2FEC: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A2FF4: .4byte gTasks -_080A2FF8: .4byte gSprites -_080A2FFC: .4byte gBattleAnimTarget -_080A3000: .4byte sub_80A3004 - thumb_func_end sub_80A2F74 - - thumb_func_start sub_80A3004 -sub_80A3004: @ 80A3004 - push {r4-r6,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, _080A3050 @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080A3054 @ =0x0000ffff - cmp r1, r0 - bne _080A3060 - ldr r0, _080A3058 @ =gTasks - lsls r2, r3, 2 - adds r1, r2, r3 - lsls r1, 3 - adds r6, r1, r0 - movs r1, 0x8 - ldrsh r5, [r6, r1] - adds r4, r0, 0 - cmp r5, 0 - bne _080A3074 - movs r0, 0x1 - bl GetAnimBattlerSpriteId - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl ResetSpriteRotScale - ldr r1, _080A305C @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - strh r5, [r0, 0x24] - strh r5, [r0, 0x26] - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] - b _080A308E - .align 2, 0 -_080A3050: .4byte gBattleAnimArgs -_080A3054: .4byte 0x0000ffff -_080A3058: .4byte gTasks -_080A305C: .4byte gSprites -_080A3060: - ldr r1, _080A3094 @ =gTasks - lsls r2, r3, 2 - adds r0, r2, r3 - lsls r0, 3 - adds r0, r1 - movs r4, 0x8 - ldrsh r0, [r0, r4] - adds r4, r1, 0 - cmp r0, 0 - beq _080A308E -_080A3074: - adds r1, r2, r3 - lsls r1, 3 - adds r1, r4 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080A308E - adds r0, r3, 0 - bl DestroyAnimVisualTask -_080A308E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A3094: .4byte gTasks - thumb_func_end sub_80A3004 - - thumb_func_start sub_80A3098 -sub_80A3098: @ 80A3098 - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _080A30AA - cmp r0, 0x1 - beq _080A3104 - b _080A3156 -_080A30AA: - ldr r6, _080A30FC @ =gBattleAnimTarget - ldrb r0, [r6] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A30C2 - ldr r1, _080A3100 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1] -_080A30C2: - ldrb r0, [r6] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r4, _080A3100 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r6] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x2] - adds r0, r4 - strh r0, [r5, 0x22] - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - b _080A3156 - .align 2, 0 -_080A30FC: .4byte gBattleAnimTarget -_080A3100: .4byte gBattleAnimArgs -_080A3104: - adds r2, r5, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080A3156 - adds r0, r5, 0 - movs r1, 0x1 - bl ChangeSpriteAffineAnim - movs r0, 0x19 - strh r0, [r5, 0x2E] - ldr r4, _080A315C @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - ldr r0, _080A3160 @ =InitAndRunAnimFastLinearTranslation - str r0, [r5, 0x1C] - ldr r1, _080A3164 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 -_080A3156: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A315C: .4byte gBattleAnimAttacker -_080A3160: .4byte InitAndRunAnimFastLinearTranslation -_080A3164: .4byte DestroyAnimSprite - thumb_func_end sub_80A3098 - - thumb_func_start sub_80A3168 -sub_80A3168: @ 80A3168 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080A31D4 - ldr r4, _080A31E0 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r4, _080A31E4 @ =gBattleAnimArgs - ldrh r0, [r4] - strh r0, [r5, 0x24] - ldrh r0, [r4, 0x2] - strh r0, [r5, 0x26] - ldrb r0, [r4, 0x4] - adds r0, 0x1E - adds r1, r5, 0 - adds r1, 0x43 - strb r0, [r1] - ldrb r1, [r4, 0x6] - adds r0, r5, 0 - bl StartSpriteAnim - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - movs r2, 0x22 - ldrsh r0, [r5, r2] - movs r2, 0x26 - ldrsh r1, [r5, r2] - adds r0, r1 - cmp r0, 0x78 - ble _080A31D4 - ldrh r0, [r5, 0x22] - adds r1, r0, 0 - subs r1, 0x78 - ldrh r2, [r5, 0x26] - adds r0, r2 - adds r1, r0 - strh r1, [r5, 0x22] -_080A31D4: - ldr r0, _080A31E8 @ =sub_80A32DC - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A31E0: .4byte gBattleAnimAttacker -_080A31E4: .4byte gBattleAnimArgs -_080A31E8: .4byte sub_80A32DC - thumb_func_end sub_80A3168 - - thumb_func_start sub_80A31EC -sub_80A31EC: @ 80A31EC - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x4 - mov r9, r0 - ldr r4, _080A32C8 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - mov r8, r0 - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r6, _080A32CC @ =gBattleAnimTarget - ldrb r0, [r6] - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldrb r0, [r6] - movs r1, 0x3 - bl GetBattlerSpriteCoord - adds r2, r0, 0 - lsls r2, 24 - subs r4, r5 - lsls r4, 16 - lsrs r2, 24 - mov r1, r8 - subs r2, r1 - lsls r2, 16 - lsrs r2, 16 - lsrs r3, r4, 16 - mov r10, r3 - asrs r4, 16 - ldr r6, _080A32D0 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r6, r1] - muls r0, r4 - movs r1, 0x64 - str r2, [sp] - bl __divsi3 - adds r5, r0 - mov r3, r9 - strh r5, [r3, 0x20] - ldr r2, [sp] - lsls r0, r2, 16 - asrs r0, 16 - movs r3, 0 - ldrsh r1, [r6, r3] - muls r0, r1 - movs r1, 0x64 - bl __divsi3 - add r8, r0 - mov r1, r8 - mov r0, r9 - strh r1, [r0, 0x22] - ldrh r0, [r6, 0x2] - mov r3, r9 - strh r0, [r3, 0x24] - ldrh r0, [r6, 0x4] - strh r0, [r3, 0x26] - ldrb r0, [r6, 0x6] - adds r0, 0x1E - mov r1, r9 - adds r1, 0x43 - strb r0, [r1] - ldrb r1, [r6, 0x8] - mov r0, r9 - bl StartSpriteAnim - ldrh r0, [r6, 0xA] - mov r1, r9 - strh r0, [r1, 0x32] - ldr r0, _080A32D4 @ =sub_80A32DC - str r0, [r1, 0x1C] - ldr r1, _080A32D8 @ =gUnknown_203999C - mov r3, r9 - ldrh r0, [r3, 0x20] - strh r0, [r1] - ldrh r0, [r3, 0x22] - strh r0, [r1, 0x2] - mov r0, r10 - strh r0, [r1, 0x4] - ldr r2, [sp] - strh r2, [r1, 0x6] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A32C8: .4byte gBattleAnimAttacker -_080A32CC: .4byte gBattleAnimTarget -_080A32D0: .4byte gBattleAnimArgs -_080A32D4: .4byte sub_80A32DC -_080A32D8: .4byte gUnknown_203999C - thumb_func_end sub_80A31EC - - thumb_func_start sub_80A32DC -sub_80A32DC: @ 80A32DC - push {lr} - adds r3, r0, 0 - ldrh r1, [r3, 0x2E] - adds r1, 0x1 - strh r1, [r3, 0x2E] - lsls r1, 16 - asrs r1, 16 - movs r2, 0x32 - ldrsh r0, [r3, r2] - subs r0, 0xA - cmp r1, r0 - ble _080A331C - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - movs r2, 0x3E - adds r2, r3 - mov r12, r2 - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] -_080A331C: - movs r2, 0x2E - ldrsh r1, [r3, r2] - movs r2, 0x32 - ldrsh r0, [r3, r2] - cmp r1, r0 - ble _080A332E - adds r0, r3, 0 - bl DestroyAnimSprite -_080A332E: - pop {r0} - bx r0 - thumb_func_end sub_80A32DC - - thumb_func_start sub_80A3334 -sub_80A3334: @ 80A3334 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x2E - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080A3374 - ldr r5, _080A33B0 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r4, _080A33B4 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r2, [r4] - adds r0, r2 - strh r0, [r6, 0x20] - ldrb r0, [r5] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r6, 0x22] - ldrh r0, [r4, 0x4] - strh r0, [r6, 0x30] - ldrh r0, [r4, 0x6] - strh r0, [r6, 0x32] - ldrh r0, [r4, 0x8] - strh r0, [r6, 0x34] -_080A3374: - ldrh r0, [r6, 0x2E] - adds r0, 0x1 - strh r0, [r6, 0x2E] - ldrh r1, [r6, 0x30] - muls r0, r1 - strh r0, [r6, 0x24] - movs r2, 0x2E - ldrsh r1, [r6, r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - movs r1, 0xFF - ands r0, r1 - movs r2, 0x32 - ldrsh r1, [r6, r2] - bl Sin - strh r0, [r6, 0x26] - movs r0, 0x2E - ldrsh r1, [r6, r0] - movs r2, 0x34 - ldrsh r0, [r6, r2] - cmp r1, r0 - ble _080A33AA - adds r0, r6, 0 - bl DestroyAnimSprite -_080A33AA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A33B0: .4byte gBattleAnimAttacker -_080A33B4: .4byte gBattleAnimArgs - thumb_func_end sub_80A3334 - - thumb_func_start sub_80A33B8 -sub_80A33B8: @ 80A33B8 - push {r4,r5,lr} - movs r2, 0x20 - ldrsh r4, [r0, r2] - lsls r4, 8 - movs r3, 0x22 - ldrsh r2, [r0, r3] - orrs r4, r2 - movs r5, 0x3A - ldrsh r2, [r0, r5] - lsls r2, 8 - movs r5, 0x3C - ldrsh r3, [r0, r5] - orrs r2, r3 - lsls r1, 8 - strh r4, [r0, 0x38] - strh r2, [r0, 0x3A] - strh r1, [r0, 0x3C] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A33B8 - - thumb_func_start sub_80A33E0 -sub_80A33E0: @ 80A33E0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r8, r0 - ldrh r0, [r0, 0x38] - lsrs r1, r0, 8 - mov r10, r1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - mov r1, r8 - ldrh r0, [r1, 0x3A] - lsrs r2, r0, 8 - lsls r0, 24 - lsrs r4, r0, 24 - ldrh r1, [r1, 0x3C] - lsls r0, r1, 16 - asrs r0, 24 - lsls r0, 16 - lsrs r6, r0, 16 - movs r3, 0xFF - ands r3, r1 - cmp r2, 0 - bne _080A341A - movs r2, 0x20 - negs r2, r2 - b _080A3422 -_080A341A: - cmp r2, 0xFF - bne _080A3422 - movs r2, 0x88 - lsls r2, 1 -_080A3422: - mov r0, r9 - subs r4, r0 - lsls r4, 16 - lsrs r4, 16 - mov r1, r10 - subs r0, r2, r1 - lsls r5, r3, 16 - asrs r5, 16 - muls r0, r5 - lsls r1, r6, 16 - asrs r7, r1, 16 - adds r1, r7, 0 - bl __divsi3 - adds r6, r0, 0 - lsls r4, 16 - asrs r4, 16 - adds r0, r4, 0 - muls r0, r5 - adds r1, r7, 0 - bl __divsi3 - add r6, r10 - mov r1, r8 - strh r6, [r1, 0x20] - add r0, r9 - strh r0, [r1, 0x22] - adds r5, 0x1 - lsls r5, 16 - lsrs r3, r5, 16 - asrs r5, 16 - cmp r5, r7 - beq _080A3474 - lsls r1, r7, 8 - lsls r0, r3, 16 - asrs r0, 16 - orrs r0, r1 - mov r1, r8 - strh r0, [r1, 0x3C] - movs r0, 0 - b _080A3476 -_080A3474: - movs r0, 0x1 -_080A3476: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80A33E0 - - thumb_func_start sub_80A3484 -sub_80A3484: @ 80A3484 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0xA - bne _080A3498 - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_080A3498: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x32 - ble _080A34AC - adds r0, r4, 0 - bl DestroyAnimSprite -_080A34AC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A3484 - - thumb_func_start sub_80A34B4 -sub_80A34B4: @ 80A34B4 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - lsls r0, 7 - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl __divsi3 - ldrh r1, [r4, 0x2E] - adds r1, r0 - movs r5, 0 - strh r1, [r4, 0x2E] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7F - ble _080A34DE - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - strh r5, [r4, 0x2E] -_080A34DE: - ldrh r0, [r4, 0x2E] - adds r0, 0x80 - lsls r0, 16 - asrs r0, 16 - movs r1, 0x30 - ldrsh r2, [r4, r1] - lsls r2, 3 - movs r1, 0x1E - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl Sin - strh r0, [r4, 0x26] - adds r0, r4, 0 - bl sub_80A33E0 - lsls r0, 24 - cmp r0, 0 - beq _080A350E - strh r5, [r4, 0x26] - strh r5, [r4, 0x2E] - ldr r0, _080A3514 @ =sub_80A3484 - str r0, [r4, 0x1C] -_080A350E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A3514: .4byte sub_80A3484 - thumb_func_end sub_80A34B4 - - thumb_func_start sub_80A3518 -sub_80A3518: @ 80A3518 - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0 - bl InitSpritePosToAnimAttacker - ldr r4, _080A3560 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080A3564 @ =gBattleAnimAttacker - ldrb r1, [r0] - movs r0, 0x2 - eors r0, r1 - ldrb r4, [r4] - cmp r0, r4 - bne _080A3568 - strh r6, [r5, 0x3A] - adds r0, r2, 0 - adds r0, 0xA - strh r0, [r5, 0x3C] - adds r0, r5, 0 - movs r1, 0x3C - bl sub_80A33B8 - movs r0, 0x1 - b _080A357A - .align 2, 0 -_080A3560: .4byte gBattleAnimTarget -_080A3564: .4byte gBattleAnimAttacker -_080A3568: - strh r6, [r5, 0x3A] - adds r0, r2, 0 - adds r0, 0xA - strh r0, [r5, 0x3C] - adds r0, r5, 0 - movs r1, 0x3C - bl sub_80A33B8 - movs r0, 0x3 -_080A357A: - strh r0, [r5, 0x34] - movs r0, 0x3C - strh r0, [r5, 0x36] - ldr r0, _080A358C @ =sub_80A34B4 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A358C: .4byte sub_80A34B4 - thumb_func_end sub_80A3518 - - thumb_func_start sub_80A3590 -sub_80A3590: @ 80A3590 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - lsls r0, 7 - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl __divsi3 - ldrh r1, [r4, 0x2E] - adds r1, r0 - movs r5, 0 - strh r1, [r4, 0x2E] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7F - ble _080A35BA - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - strh r5, [r4, 0x2E] -_080A35BA: - ldrh r0, [r4, 0x2E] - adds r0, 0x80 - lsls r0, 16 - asrs r0, 16 - movs r1, 0x30 - ldrsh r2, [r4, r1] - lsls r2, 3 - movs r1, 0x1E - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl Sin - strh r0, [r4, 0x26] - adds r0, r4, 0 - bl sub_80A33E0 - lsls r0, 24 - cmp r0, 0 - beq _080A35EC - strh r5, [r4, 0x26] - strh r5, [r4, 0x2E] - adds r0, r4, 0 - bl DestroyAnimSprite -_080A35EC: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A3590 - - thumb_func_start sub_80A35F4 -sub_80A35F4: @ 80A35F4 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r4, _080A3630 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080A3638 - strh r0, [r5, 0x3A] - adds r0, r6, 0 - adds r0, 0xA - strh r0, [r5, 0x3C] - adds r0, r5, 0 - movs r1, 0x28 - bl sub_80A33B8 - movs r0, 0x3 - strh r0, [r5, 0x34] - movs r0, 0x3C - strh r0, [r5, 0x36] - ldr r0, _080A3634 @ =sub_80A34B4 - b _080A3662 - .align 2, 0 -_080A3630: .4byte gBattleAnimTarget -_080A3634: .4byte sub_80A34B4 -_080A3638: - movs r0, 0xFF - strh r0, [r5, 0x3A] - adds r0, r6, 0 - adds r0, 0xA - strh r0, [r5, 0x3C] - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A3650 - movs r0, 0 - strh r0, [r5, 0x3A] -_080A3650: - adds r0, r5, 0 - movs r1, 0x28 - bl sub_80A33B8 - movs r0, 0x3 - strh r0, [r5, 0x34] - movs r0, 0x3C - strh r0, [r5, 0x36] - ldr r0, _080A366C @ =sub_80A3590 -_080A3662: - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A366C: .4byte sub_80A3590 - thumb_func_end sub_80A35F4 - - thumb_func_start sub_80A3670 -sub_80A3670: @ 80A3670 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A368A - adds r0, r4, 0 - movs r1, 0 - bl InitSpritePosToAnimTarget - ldr r0, _080A36B0 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x30] -_080A368A: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - ldrh r1, [r4, 0x30] - muls r0, r1 - strh r0, [r4, 0x26] - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080A36AA - adds r0, r4, 0 - bl DestroyAnimSprite -_080A36AA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A36B0: .4byte gBattleAnimArgs - thumb_func_end sub_80A3670 - - thumb_func_start sub_80A36B4 -sub_80A36B4: @ 80A36B4 - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0 - bl InitSpritePosToAnimTarget - ldr r4, _080A36FC @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080A3700 @ =gBattleAnimTarget - ldrb r1, [r0] - movs r0, 0x2 - eors r0, r1 - ldrb r4, [r4] - cmp r0, r4 - bne _080A3704 - strh r6, [r5, 0x3A] - adds r0, r2, 0 - adds r0, 0xA - strh r0, [r5, 0x3C] - adds r0, r5, 0 - movs r1, 0x3C - bl sub_80A33B8 - movs r0, 0x1 - b _080A3716 - .align 2, 0 -_080A36FC: .4byte gBattleAnimAttacker -_080A3700: .4byte gBattleAnimTarget -_080A3704: - strh r6, [r5, 0x3A] - adds r0, r2, 0 - adds r0, 0xA - strh r0, [r5, 0x3C] - adds r0, r5, 0 - movs r1, 0x3C - bl sub_80A33B8 - movs r0, 0x3 -_080A3716: - strh r0, [r5, 0x34] - movs r0, 0x3C - strh r0, [r5, 0x36] - ldr r0, _080A3728 @ =sub_80A372C - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A3728: .4byte sub_80A372C - thumb_func_end sub_80A36B4 - - thumb_func_start sub_80A372C -sub_80A372C: @ 80A372C - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - lsls r0, 7 - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl __divsi3 - ldrh r1, [r4, 0x2E] - adds r1, r0 - movs r5, 0 - strh r1, [r4, 0x2E] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7F - ble _080A3756 - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - strh r5, [r4, 0x2E] -_080A3756: - ldrh r0, [r4, 0x2E] - adds r0, 0x80 - lsls r0, 16 - asrs r0, 16 - movs r1, 0x30 - ldrsh r2, [r4, r1] - lsls r2, 3 - movs r1, 0x1E - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl Sin - strh r0, [r4, 0x26] - lsls r0, 16 - cmp r0, 0 - bne _080A378A - movs r0, 0x3F - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x76 - bl PlaySE12WithPanning -_080A378A: - adds r0, r4, 0 - bl sub_80A33E0 - lsls r0, 24 - cmp r0, 0 - beq _080A37B2 - strh r5, [r4, 0x26] - strh r5, [r4, 0x2E] - ldr r0, _080A37B8 @ =sub_80A3484 - str r0, [r4, 0x1C] - movs r0, 0x40 - negs r0, r0 - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x76 - bl PlaySE12WithPanning -_080A37B2: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A37B8: .4byte sub_80A3484 - thumb_func_end sub_80A372C - - thumb_func_start sub_80A37BC -sub_80A37BC: @ 80A37BC - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A3850 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A37E4 - ldr r0, _080A37E0 @ =gBattleAnimArgs - ldrh r1, [r0, 0x2] - strh r1, [r4, 0x30] - movs r1, 0x78 - strh r1, [r4, 0x20] - adds r5, r0, 0 - b _080A3806 - .align 2, 0 -_080A37E0: .4byte gBattleAnimArgs -_080A37E4: - ldr r0, _080A3840 @ =gBattleAnimArgs - movs r1, 0x2 - ldrsh r3, [r0, r1] - adds r1, r3, 0 - subs r1, 0x20 - adds r2, r1, 0 - adds r5, r0, 0 - cmp r1, 0 - bge _080A37FA - adds r2, r3, 0 - adds r2, 0xDF -_080A37FA: - asrs r0, r2, 8 - lsls r0, 8 - subs r0, r1, r0 - strh r0, [r4, 0x30] - movs r0, 0x46 - strh r0, [r4, 0x20] -_080A3806: - ldrh r0, [r5] - strh r0, [r4, 0x22] - strh r0, [r4, 0x32] - movs r0, 0x14 - strh r0, [r4, 0x36] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x3C - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x14 - bl Sin - strh r0, [r4, 0x26] - ldr r0, _080A3844 @ =sub_80A3858 - str r0, [r4, 0x1C] - ldrh r0, [r4, 0x30] - subs r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xBE - bhi _080A3848 - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1F - b _080A384E - .align 2, 0 -_080A3840: .4byte gBattleAnimArgs -_080A3844: .4byte sub_80A3858 -_080A3848: - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1D -_080A384E: - strb r0, [r1] -_080A3850: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A37BC - - thumb_func_start sub_80A3858 -sub_80A3858: @ 80A3858 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080A386A - cmp r0, 0x1 - beq _080A389A - b _080A38BA -_080A386A: - ldrh r5, [r4, 0x32] - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0x4E - ble _080A3882 - movs r0, 0x1 - strh r0, [r4, 0x34] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - b _080A38BA -_080A3882: - movs r1, 0x36 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl __divsi3 - adds r0, r5, r0 - strh r0, [r4, 0x32] - ldrh r1, [r4, 0x36] - adds r1, 0x3 - strh r1, [r4, 0x36] - strh r0, [r4, 0x22] - b _080A38BA -_080A389A: - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080A38BA - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080A38BA - movs r0, 0 - strh r0, [r4, 0x2E] - strh r0, [r4, 0x32] - ldr r0, _080A38C0 @ =sub_80A38C4 - str r0, [r4, 0x1C] -_080A38BA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A38C0: .4byte sub_80A38C4 - thumb_func_end sub_80A3858 - - thumb_func_start sub_80A38C4 -sub_80A38C4: @ 80A38C4 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r5, _080A3908 @ =gUnknown_83E2F78 - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 1 - adds r3, r0, r1 - adds r0, r5, 0x1 - adds r0, r3, r0 - ldrh r2, [r4, 0x32] - movs r6, 0x32 - ldrsh r1, [r4, r6] - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r1, r0 - bne _080A3910 - adds r0, r5, 0x2 - adds r0, r3, r0 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x7F - bne _080A38FC - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r0, _080A390C @ =sub_80A397C - str r0, [r4, 0x1C] -_080A38FC: - movs r0, 0 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080A3976 - .align 2, 0 -_080A3908: .4byte gUnknown_83E2F78 -_080A390C: .4byte sub_80A397C -_080A3910: - adds r0, r2, 0x1 - strh r0, [r4, 0x32] - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 1 - adds r0, r1 - adds r1, r0, r5 - movs r2, 0 - ldrsb r2, [r1, r2] - adds r1, r5, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - muls r0, r2 - ldrh r1, [r4, 0x30] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A395E - ldrh r0, [r4, 0x30] - subs r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xBE - bhi _080A3956 - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1F - b _080A395C -_080A3956: - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1D -_080A395C: - strb r0, [r1] -_080A395E: - movs r6, 0x30 - ldrsh r0, [r4, r6] - movs r1, 0x3C - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x14 - bl Sin - strh r0, [r4, 0x26] -_080A3976: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80A38C4 - - thumb_func_start sub_80A397C -sub_80A397C: @ 80A397C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x14 - ble _080A398E - adds r0, r4, 0 - bl DestroyAnimSprite -_080A398E: - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A397C - - thumb_func_start sub_80A39C0 -sub_80A39C0: @ 80A39C0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080A3B14 @ =gTasks - adds r5, r0, r1 - ldr r4, _080A3B18 @ =gBattleAnimTarget - ldrb r0, [r4] - bl GetBattlerSpriteSubpriority - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - strh r0, [r5, 0x10] - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x14] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x16] - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoordAttr - strh r0, [r5, 0x1C] - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoordAttr - strh r0, [r5, 0x1E] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x1 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0x1 - bne _080A3A28 - movs r1, 0x1 -_080A3A28: - strh r1, [r5, 0x12] - movs r3, 0x12 - ldrsh r0, [r5, r3] - lsls r0, 6 - movs r1, 0x38 - subs r1, r0 - strh r1, [r5, 0x1A] - ldrh r0, [r5, 0x16] - subs r0, r1 - ldrh r1, [r5, 0x14] - adds r0, r1 - strh r0, [r5, 0x18] - ldr r0, _080A3B1C @ =gUnknown_83E2FF0 - movs r2, 0x18 - ldrsh r1, [r5, r2] - movs r3, 0x1A - ldrsh r2, [r5, r3] - ldrb r3, [r5, 0x10] - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0xC] - cmp r0, 0x40 - bne _080A3A60 - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080A3A60: - ldr r4, _080A3B20 @ =gSprites - movs r0, 0xC - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xA - strh r1, [r0, 0x2E] - movs r2, 0xC - ldrsh r1, [r5, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r5, 0x18] - strh r1, [r0, 0x30] - movs r3, 0xC - ldrsh r0, [r5, r3] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r4 - movs r1, 0x1C - ldrsh r0, [r5, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r3, 0x12 - ldrsh r1, [r5, r3] - muls r1, r0 - ldrh r0, [r5, 0x14] - subs r0, r1 - strh r0, [r2, 0x32] - movs r0, 0xC - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r5, 0x1A] - strh r1, [r0, 0x34] - movs r1, 0xC - ldrsh r0, [r5, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - movs r2, 0x1E - ldrsh r0, [r5, r2] - lsrs r2, r0, 31 - adds r0, r2 - asrs r0, 1 - adds r0, 0xA - movs r3, 0x12 - ldrsh r2, [r5, r3] - muls r0, r2 - ldrh r2, [r5, 0x16] - adds r0, r2 - strh r0, [r1, 0x36] - movs r3, 0xC - ldrsh r1, [r5, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl sub_80A3F04 - movs r1, 0xC - ldrsh r2, [r5, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - strh r0, [r1, 0x38] - movs r2, 0xC - ldrsh r1, [r5, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl InitAnimArcTranslation - ldr r0, _080A3B24 @ =sub_80A3B28 - str r0, [r5] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A3B14: .4byte gTasks -_080A3B18: .4byte gBattleAnimTarget -_080A3B1C: .4byte gUnknown_83E2FF0 -_080A3B20: .4byte gSprites -_080A3B24: .4byte sub_80A3B28 - thumb_func_end sub_80A39C0 - - thumb_func_start sub_80A3B28 -sub_80A3B28: @ 80A3B28 - push {r4-r6,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080A3B6C @ =gTasks - adds r6, r0, r1 - movs r0, 0xC - ldrsh r1, [r6, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080A3B70 @ =gSprites - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r5, [r6, r1] - cmp r5, 0x7 - bne _080A3B50 - b _080A3D80 -_080A3B50: - cmp r5, 0x7 - bgt _080A3B9E - cmp r5, 0x3 - bne _080A3B5A - b _080A3C72 -_080A3B5A: - cmp r5, 0x3 - bgt _080A3B74 - cmp r5, 0x1 - beq _080A3C04 - cmp r5, 0x1 - bgt _080A3C54 - cmp r5, 0 - beq _080A3BE6 - b _080A3EFC - .align 2, 0 -_080A3B6C: .4byte gTasks -_080A3B70: .4byte gSprites -_080A3B74: - cmp r5, 0x5 - bne _080A3B7A - b _080A3CE8 -_080A3B7A: - cmp r5, 0x5 - ble _080A3B80 - b _080A3D62 -_080A3B80: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_80A3F24 - adds r0, r4, 0 - bl TranslateAnimHorizontalArc - lsls r0, 24 - cmp r0, 0 - bne _080A3B96 - b _080A3EFC -_080A3B96: - movs r0, 0x5 - strh r0, [r6, 0x26] - movs r0, 0xFF - b _080A3EFA -_080A3B9E: - cmp r5, 0xB - bne _080A3BA4 - b _080A3E64 -_080A3BA4: - cmp r5, 0xB - bgt _080A3BD2 - cmp r5, 0x9 - bne _080A3BAE - b _080A3DD2 -_080A3BAE: - cmp r5, 0x9 - ble _080A3BB4 - b _080A3E48 -_080A3BB4: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_80A3F24 - adds r0, r4, 0 - bl TranslateAnimHorizontalArc - lsls r0, 24 - cmp r0, 0 - bne _080A3BCA - b _080A3EFC -_080A3BCA: - movs r0, 0x9 - strh r0, [r6, 0x26] - movs r0, 0xFF - b _080A3EFA -_080A3BD2: - cmp r5, 0xD - bne _080A3BD8 - b _080A3ED6 -_080A3BD8: - cmp r5, 0xD - bge _080A3BDE - b _080A3EB6 -_080A3BDE: - cmp r5, 0xFF - bne _080A3BE4 - b _080A3EE6 -_080A3BE4: - b _080A3EFC -_080A3BE6: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_80A3F24 - adds r0, r4, 0 - bl TranslateAnimHorizontalArc - lsls r0, 24 - cmp r0, 0 - bne _080A3BFC - b _080A3EFC -_080A3BFC: - movs r0, 0x1 - strh r0, [r6, 0x26] - movs r0, 0xFF - b _080A3EFA -_080A3C04: - ldrh r2, [r4, 0x24] - ldrh r3, [r4, 0x20] - adds r2, r3 - movs r0, 0 - strh r2, [r4, 0x20] - ldrh r1, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r1, r3 - strh r1, [r4, 0x22] - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - movs r0, 0xA - strh r0, [r4, 0x2E] - strh r2, [r4, 0x30] - ldrh r0, [r6, 0x14] - strh r0, [r4, 0x32] - strh r1, [r4, 0x34] - ldrh r0, [r6, 0x16] - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_80A3F04 - strh r0, [r4, 0x38] - ldrh r0, [r6, 0x10] - adds r0, 0x2 - strh r0, [r6, 0x10] - strh r5, [r6, 0xE] - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl InitAnimArcTranslation - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _080A3EFA -_080A3C54: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_80A3F24 - adds r0, r4, 0 - bl TranslateAnimHorizontalArc - lsls r0, 24 - cmp r0, 0 - bne _080A3C6A - b _080A3EFC -_080A3C6A: - movs r0, 0x3 - strh r0, [r6, 0x26] - movs r0, 0xFF - b _080A3EFA -_080A3C72: - ldrh r1, [r4, 0x24] - ldrh r0, [r4, 0x20] - adds r1, r0 - movs r0, 0 - strh r1, [r4, 0x20] - ldrh r2, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r2, r3 - strh r2, [r4, 0x22] - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - movs r0, 0xA - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] - movs r1, 0x1C - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r3, 0x12 - ldrsh r1, [r6, r3] - muls r1, r0 - ldrh r0, [r6, 0x14] - subs r0, r1 - strh r0, [r4, 0x32] - strh r2, [r4, 0x34] - movs r1, 0x1E - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r2, 0x12 - ldrsh r1, [r6, r2] - muls r1, r0 - ldrh r0, [r6, 0x16] - subs r0, r1 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_80A3F04 - strh r0, [r4, 0x38] - movs r0, 0x2 - strh r0, [r6, 0xE] - ldrh r0, [r6, 0x10] - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl InitAnimArcTranslation - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _080A3EFA -_080A3CE8: - ldrh r1, [r4, 0x24] - ldrh r3, [r4, 0x20] - adds r1, r3 - movs r0, 0 - strh r1, [r4, 0x20] - ldrh r2, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r2, r3 - strh r2, [r4, 0x22] - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - movs r0, 0xA - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] - movs r1, 0x1C - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r3, 0x12 - ldrsh r1, [r6, r3] - muls r0, r1 - ldrh r1, [r6, 0x14] - adds r0, r1 - strh r0, [r4, 0x32] - strh r2, [r4, 0x34] - movs r2, 0x1E - ldrsh r0, [r6, r2] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r3, 0x12 - ldrsh r1, [r6, r3] - muls r0, r1 - ldrh r1, [r6, 0x16] - adds r0, r1 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_80A3F04 - strh r0, [r4, 0x38] - ldrh r1, [r6, 0x10] - subs r1, 0x2 - strh r1, [r6, 0x10] - movs r0, 0x3 - strh r0, [r6, 0xE] - adds r0, r4, 0 - adds r0, 0x43 - strb r1, [r0] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl InitAnimArcTranslation - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _080A3EFA -_080A3D62: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_80A3F24 - adds r0, r4, 0 - bl TranslateAnimHorizontalArc - lsls r0, 24 - cmp r0, 0 - bne _080A3D78 - b _080A3EFC -_080A3D78: - movs r0, 0x7 - strh r0, [r6, 0x26] - movs r0, 0xFF - b _080A3EFA -_080A3D80: - ldrh r2, [r4, 0x24] - ldrh r3, [r4, 0x20] - adds r2, r3 - movs r0, 0 - strh r2, [r4, 0x20] - ldrh r1, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r1, r3 - strh r1, [r4, 0x22] - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - movs r0, 0xA - strh r0, [r4, 0x2E] - strh r2, [r4, 0x30] - ldrh r0, [r6, 0x14] - strh r0, [r4, 0x32] - strh r1, [r4, 0x34] - ldrh r0, [r6, 0x16] - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_80A3F04 - strh r0, [r4, 0x38] - ldrh r1, [r6, 0x10] - adds r1, 0x2 - strh r1, [r6, 0x10] - movs r0, 0x4 - strh r0, [r6, 0xE] - adds r0, r4, 0 - adds r0, 0x43 - strb r1, [r0] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl InitAnimArcTranslation - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _080A3EFA -_080A3DD2: - ldrh r1, [r4, 0x24] - ldrh r0, [r4, 0x20] - adds r1, r0 - movs r0, 0 - strh r1, [r4, 0x20] - ldrh r2, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r2, r3 - strh r2, [r4, 0x22] - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - movs r0, 0xA - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] - movs r1, 0x1C - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r3, 0x12 - ldrsh r1, [r6, r3] - muls r1, r0 - ldrh r0, [r6, 0x14] - subs r0, r1 - strh r0, [r4, 0x32] - strh r2, [r4, 0x34] - movs r1, 0x1E - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r2, 0x12 - ldrsh r1, [r6, r2] - muls r0, r1 - ldrh r3, [r6, 0x16] - adds r0, r3 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_80A3F04 - strh r0, [r4, 0x38] - movs r0, 0x5 - strh r0, [r6, 0xE] - ldrh r0, [r6, 0x10] - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl InitAnimArcTranslation - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _080A3EFA -_080A3E48: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_80A3F24 - adds r0, r4, 0 - bl TranslateAnimHorizontalArc - lsls r0, 24 - cmp r0, 0 - beq _080A3EFC - movs r0, 0xB - strh r0, [r6, 0x26] - movs r0, 0xFF - b _080A3EFA -_080A3E64: - ldrh r2, [r4, 0x24] - ldrh r0, [r4, 0x20] - adds r2, r0 - movs r0, 0 - strh r2, [r4, 0x20] - ldrh r1, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r1, r3 - strh r1, [r4, 0x22] - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - movs r0, 0xA - strh r0, [r4, 0x2E] - strh r2, [r4, 0x30] - ldrh r0, [r6, 0x18] - strh r0, [r4, 0x32] - strh r1, [r4, 0x34] - ldrh r0, [r6, 0x1A] - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_80A3F04 - strh r0, [r4, 0x38] - ldrh r1, [r6, 0x10] - subs r1, 0x2 - strh r1, [r6, 0x10] - movs r0, 0x6 - strh r0, [r6, 0xE] - adds r0, r4, 0 - adds r0, 0x43 - strb r1, [r0] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl InitAnimArcTranslation - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _080A3EFA -_080A3EB6: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_80A3F24 - adds r0, r4, 0 - bl TranslateAnimHorizontalArc - lsls r0, 24 - cmp r0, 0 - beq _080A3EFC - adds r0, r4, 0 - bl DestroySprite - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _080A3EFA -_080A3ED6: - movs r1, 0x20 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080A3EFC - adds r0, r2, 0 - bl DestroyAnimVisualTask - b _080A3EFC -_080A3EE6: - ldrh r0, [r6, 0xA] - adds r0, 0x1 - strh r0, [r6, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _080A3EFC - movs r0, 0 - strh r0, [r6, 0xA] - ldrh r0, [r6, 0x26] -_080A3EFA: - strh r0, [r6, 0x8] -_080A3EFC: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80A3B28 - - thumb_func_start sub_80A3F04 -sub_80A3F04: @ 80A3F04 - push {lr} - movs r2, 0x8 - movs r3, 0x36 - ldrsh r1, [r0, r3] - movs r3, 0x22 - ldrsh r0, [r0, r3] - cmp r1, r0 - bge _080A3F1A - negs r0, r2 - lsls r0, 16 - lsrs r2, r0, 16 -_080A3F1A: - lsls r0, r2, 16 - asrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_80A3F04 - - thumb_func_start sub_80A3F24 -sub_80A3F24: @ 80A3F24 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - lsls r1, 24 - lsrs r7, r1, 24 - ldrh r0, [r6, 0x24] - adds r0, 0x1 - strh r0, [r6, 0x24] - lsls r0, 16 - cmp r0, 0 - ble _080A3FBA - movs r0, 0 - strh r0, [r6, 0x24] - ldr r0, _080A3FC4 @ =gSprites - mov r8, r0 - movs r2, 0xC - ldrsh r1, [r6, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - ldrh r1, [r0, 0x24] - ldrh r2, [r0, 0x20] - adds r1, r2 - ldrh r2, [r0, 0x26] - ldrh r0, [r0, 0x22] - adds r2, r0 - ldr r0, _080A3FC8 @ =gUnknown_83E2FF0 - lsls r1, 16 - asrs r1, 16 - lsls r2, 16 - asrs r2, 16 - ldrb r3, [r6, 0x10] - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _080A3FBA - lsls r5, r0, 4 - adds r5, r0 - lsls r5, 2 - mov r0, r8 - adds r4, r5, r0 - strh r7, [r4, 0x3A] - movs r0, 0xC - strh r0, [r4, 0x3C] - ldr r0, _080A3FCC @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - ldrh r2, [r6, 0x22] - movs r0, 0x1 - ands r0, r2 - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x22] - adds r0, 0x1 - strh r0, [r1, 0x22] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - ldrh r0, [r6, 0x10] - adds r4, 0x43 - strb r0, [r4] - mov r0, r8 - adds r0, 0x1C - adds r5, r0 - ldr r0, _080A3FD0 @ =sub_80A3FD4 - str r0, [r5] -_080A3FBA: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A3FC4: .4byte gSprites -_080A3FC8: .4byte gUnknown_83E2FF0 -_080A3FCC: .4byte gTasks -_080A3FD0: .4byte sub_80A3FD4 - thumb_func_end sub_80A3F24 - - thumb_func_start sub_80A3FD4 -sub_80A3FD4: @ 80A3FD4 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A4036 - movs r0, 0 - strh r0, [r4, 0x2E] - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - 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 - strb r0, [r3] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _080A4036 - ldr r3, _080A403C @ =gTasks - movs r0, 0x3C - ldrsh r1, [r4, r0] - lsls r1, 1 - movs r0, 0x3A - ldrsh r2, [r4, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r3, 0x8 - adds r1, r3 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - adds r0, r4, 0 - bl DestroySprite -_080A4036: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A403C: .4byte gTasks - thumb_func_end sub_80A3FD4 - - thumb_func_start sub_80A4040 -sub_80A4040: @ 80A4040 - push {r4-r7,lr} - adds r4, r0, 0 - ldr r0, _080A4054 @ =gBattleAnimArgs - movs r1, 0xC - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A405C - ldr r0, _080A4058 @ =gBattleAnimAttacker - b _080A405E - .align 2, 0 -_080A4054: .4byte gBattleAnimArgs -_080A4058: .4byte gBattleAnimAttacker -_080A405C: - ldr r0, _080A407C @ =gBattleAnimTarget -_080A405E: - ldrb r6, [r0] - adds r0, r6, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A4088 - movs r0, 0 - strh r0, [r4, 0x36] - ldr r1, _080A4080 @ =gBattleAnimArgs - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x32] - ldr r0, _080A4084 @ =0x0000fff0 - b _080A4098 - .align 2, 0 -_080A407C: .4byte gBattleAnimTarget -_080A4080: .4byte gBattleAnimArgs -_080A4084: .4byte 0x0000fff0 -_080A4088: - movs r0, 0x1 - strh r0, [r4, 0x36] - ldr r1, _080A40BC @ =gBattleAnimArgs - ldrh r0, [r1, 0x6] - negs r0, r0 - strh r0, [r4, 0x32] - movs r0, 0x80 - lsls r0, 1 -_080A4098: - strh r0, [r4, 0x20] - adds r7, r1, 0 - adds r5, r7, 0 - ldrh r0, [r5, 0x2] - strh r0, [r4, 0x30] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r5, 0x8] - strh r0, [r4, 0x34] - movs r1, 0xA - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080A40CE - cmp r0, 0x1 - bgt _080A40C0 - cmp r0, 0 - beq _080A40CA - b _080A4138 - .align 2, 0 -_080A40BC: .4byte gBattleAnimArgs -_080A40C0: - cmp r0, 0x2 - beq _080A40D4 - cmp r0, 0x3 - beq _080A4100 - b _080A4138 -_080A40CA: - ldrh r0, [r5] - b _080A40E4 -_080A40CE: - ldrh r0, [r5] - strh r0, [r4, 0x22] - b _080A411A -_080A40D4: - adds r0, r6, 0 - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r5, [r5] - adds r0, r5 -_080A40E4: - strh r0, [r4, 0x22] - adds r0, r6, 0 - bl GetBattlerSpriteBGPriority - movs r1, 0x3 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r4, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x5] - b _080A4138 -_080A4100: - ldr r0, _080A4144 @ =gBattleAnimTarget - ldrb r0, [r0] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r7, [r7] - adds r0, r7 - strh r0, [r4, 0x22] - movs r0, 0x1 - bl GetAnimBattlerSpriteId -_080A411A: - adds r0, r6, 0 - bl GetBattlerSpriteBGPriority - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1 - movs r1, 0x3 - ands r0, r1 - lsls r0, 2 - ldrb r2, [r4, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x5] -_080A4138: - ldr r0, _080A4148 @ =sub_80A414C - str r0, [r4, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A4144: .4byte gBattleAnimTarget -_080A4148: .4byte sub_80A414C - thumb_func_end sub_80A4040 - - thumb_func_start sub_80A414C -sub_80A414C: @ 80A414C - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x3C - ldrsh r3, [r4, r0] - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - strh r0, [r4, 0x3C] - movs r1, 0x30 - ldrsh r2, [r4, r1] - ldr r1, _080A41A0 @ =gSineTable - movs r5, 0x2E - ldrsh r0, [r4, r5] - lsls r0, 1 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - muls r0, r2 - asrs r0, 8 - strh r0, [r4, 0x26] - movs r2, 0x32 - ldrsh r0, [r4, r2] - muls r0, r3 - strh r0, [r4, 0x24] - movs r5, 0x34 - ldrsh r0, [r4, r5] - muls r0, r3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - movs r1, 0x36 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A41A4 - movs r2, 0x24 - ldrsh r0, [r4, r2] - movs r5, 0x20 - ldrsh r1, [r4, r5] - adds r0, r1 - cmp r0, 0xF7 - ble _080A41BC - b _080A41B6 - .align 2, 0 -_080A41A0: .4byte gSineTable -_080A41A4: - movs r1, 0x24 - ldrsh r0, [r4, r1] - movs r2, 0x20 - ldrsh r1, [r4, r2] - adds r0, r1 - movs r1, 0x10 - negs r1, r1 - cmp r0, r1 - bgt _080A41BC -_080A41B6: - adds r0, r4, 0 - bl DestroySpriteAndMatrix -_080A41BC: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A414C - - thumb_func_start sub_80A41C4 -sub_80A41C4: @ 80A41C4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080A41E4 @ =gTasks - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _080A41E8 - cmp r0, 0x1 - beq _080A421C - b _080A4276 - .align 2, 0 -_080A41E4: .4byte gTasks -_080A41E8: - ldr r0, _080A4214 @ =0x0000274f - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 20 - movs r2, 0x80 - lsls r2, 1 - adds r4, r2, 0 - adds r0, r4 - strh r0, [r5, 0x18] - ldr r0, _080A4218 @ =0x000027b0 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 20 - adds r0, r4 - strh r0, [r5, 0x20] - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _080A4276 - .align 2, 0 -_080A4214: .4byte 0x0000274f -_080A4218: .4byte 0x000027b0 -_080A421C: - ldrh r0, [r5, 0x1A] - adds r0, 0x1 - movs r7, 0 - strh r0, [r5, 0x1A] - lsls r0, 16 - cmp r0, 0 - blt _080A4276 - strh r7, [r5, 0x1A] - ldrh r0, [r5, 0x18] - ldrb r2, [r5, 0x1C] - ldr r4, _080A4290 @ =gUnknown_83E30F0 - movs r3, 0x1E - ldrsh r1, [r5, r3] - lsls r1, 1 - adds r1, r4 - ldrh r3, [r1] - movs r1, 0x10 - bl BlendPalette - ldrh r0, [r5, 0x20] - ldrb r2, [r5, 0x1C] - movs r3, 0x1E - ldrsh r1, [r5, r3] - lsls r1, 1 - adds r1, r4 - ldrh r3, [r1] - movs r1, 0x10 - bl BlendPalette - ldrh r0, [r5, 0x1C] - adds r0, 0x1 - strh r0, [r5, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x11 - bne _080A4276 - strh r7, [r5, 0x1C] - ldrh r0, [r5, 0x1E] - adds r0, 0x1 - strh r0, [r5, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - bne _080A4276 - strh r7, [r5, 0x1E] -_080A4276: - ldr r0, _080A4294 @ =gBattleAnimArgs - movs r2, 0xE - ldrsh r1, [r0, r2] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _080A428A - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080A428A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A4290: .4byte gUnknown_83E30F0 -_080A4294: .4byte gBattleAnimArgs - thumb_func_end sub_80A41C4 - - thumb_func_start sub_80A4298 -sub_80A4298: @ 80A4298 - push {r4-r7,lr} - sub sp, 0x4 - adds r6, r0, 0 - ldr r1, _080A42B0 @ =gBattleAnimArgs - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080A42B4 - adds r0, r6, 0 - bl DestroyAnimSprite - b _080A438E - .align 2, 0 -_080A42B0: .4byte gBattleAnimArgs -_080A42B4: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _080A42C4 - ldr r4, _080A42C0 @ =gBattleAnimAttacker - b _080A42C6 - .align 2, 0 -_080A42C0: .4byte gBattleAnimAttacker -_080A42C4: - ldr r4, _080A4300 @ =gBattleAnimTarget -_080A42C6: - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080A4304 @ =gBattleAnimArgs - ldrh r1, [r0, 0x8] - strh r1, [r6, 0x2E] - movs r3, 0x2 - ldrsh r1, [r0, r3] - adds r7, r0, 0 - cmp r1, 0 - bne _080A4308 - ldrh r0, [r7, 0x4] - adds r0, r5 - strh r0, [r6, 0x20] - ldrh r0, [r7, 0x6] - adds r0, r2 - strh r0, [r6, 0x22] - strh r5, [r6, 0x38] - strh r2, [r6, 0x3A] - b _080A4318 - .align 2, 0 -_080A4300: .4byte gBattleAnimTarget -_080A4304: .4byte gBattleAnimArgs -_080A4308: - strh r5, [r6, 0x20] - strh r2, [r6, 0x22] - ldrh r0, [r7, 0x4] - adds r0, r5 - strh r0, [r6, 0x38] - ldrh r0, [r7, 0x6] - adds r0, r2 - strh r0, [r6, 0x3A] -_080A4318: - ldrh r4, [r6, 0x20] - lsls r0, r4, 4 - strh r0, [r6, 0x30] - ldrh r5, [r6, 0x22] - lsls r0, r5, 4 - strh r0, [r6, 0x32] - movs r1, 0x38 - ldrsh r0, [r6, r1] - movs r2, 0x20 - ldrsh r1, [r6, r2] - subs r0, r1 - lsls r0, 4 - movs r3, 0x8 - ldrsh r1, [r7, r3] - bl __divsi3 - strh r0, [r6, 0x34] - movs r1, 0x3A - ldrsh r0, [r6, r1] - movs r2, 0x22 - ldrsh r1, [r6, r2] - subs r0, r1 - lsls r0, 4 - movs r3, 0x8 - ldrsh r1, [r7, r3] - bl __divsi3 - strh r0, [r6, 0x36] - ldrh r0, [r6, 0x38] - subs r0, r4 - lsls r0, 16 - asrs r0, 16 - ldrh r1, [r6, 0x3A] - subs r1, r5 - lsls r1, 16 - asrs r1, 16 - bl ArcTan2Neg - lsls r0, 16 - lsrs r4, r0, 16 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A437A - ldr r1, _080A4398 @ =0xffff8000 - adds r0, r4, r1 - lsls r0, 16 - lsrs r4, r0, 16 -_080A437A: - movs r3, 0x80 - lsls r3, 1 - str r4, [sp] - adds r0, r6, 0 - movs r1, 0 - adds r2, r3, 0 - bl TrySetSpriteRotScale - ldr r0, _080A439C @ =sub_80A43A0 - str r0, [r6, 0x1C] -_080A438E: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A4398: .4byte 0xffff8000 -_080A439C: .4byte sub_80A43A0 - thumb_func_end sub_80A4298 - - thumb_func_start sub_80A43A0 -sub_80A43A0: @ 80A43A0 - push {r4,lr} - adds r2, r0, 0 - ldrh r3, [r2, 0x2E] - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0 - beq _080A43D0 - ldrh r0, [r2, 0x34] - ldrh r4, [r2, 0x30] - adds r0, r4 - strh r0, [r2, 0x30] - ldrh r1, [r2, 0x36] - ldrh r4, [r2, 0x32] - adds r1, r4 - strh r1, [r2, 0x32] - lsls r0, 16 - asrs r0, 20 - strh r0, [r2, 0x20] - lsls r1, 16 - asrs r1, 20 - strh r1, [r2, 0x22] - subs r0, r3, 0x1 - strh r0, [r2, 0x2E] - b _080A43D6 -_080A43D0: - adds r0, r2, 0 - bl DestroySpriteAndMatrix -_080A43D6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A43A0 - - thumb_func_start sub_80A43DC -sub_80A43DC: @ 80A43DC - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080A43F2 - adds r0, r2, 0 - bl DestroyAnimSprite -_080A43F2: - pop {r0} - bx r0 - thumb_func_end sub_80A43DC - - thumb_func_start sub_80A43F8 -sub_80A43F8: @ 80A43F8 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080A4418 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A4420 - ldr r2, _080A441C @ =gBattleAnimArgs - ldrh r0, [r4, 0x20] - ldrh r1, [r2] - subs r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r2, 0x2] - b _080A442C - .align 2, 0 -_080A4418: .4byte gBattleAnimAttacker -_080A441C: .4byte gBattleAnimArgs -_080A4420: - ldr r0, _080A4444 @ =gBattleAnimArgs - ldrh r1, [r0] - ldrh r2, [r4, 0x20] - adds r1, r2 - strh r1, [r4, 0x20] - ldrh r0, [r0, 0x2] -_080A442C: - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r0, _080A4448 @ =RunStoredCallbackWhenAnimEnds - str r0, [r4, 0x1C] - ldr r1, _080A444C @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A4444: .4byte gBattleAnimArgs -_080A4448: .4byte RunStoredCallbackWhenAnimEnds -_080A444C: .4byte DestroyAnimSprite - thumb_func_end sub_80A43F8 - - thumb_func_start sub_80A4450 -sub_80A4450: @ 80A4450 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080A4488 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A446A - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAnim -_080A446A: - ldr r0, _080A448C @ =sub_80A43DC - str r0, [r5, 0x1C] - ldr r4, _080A4490 @ =gBattleAnimArgs - movs r0, 0 - ldrsh r1, [r4, r0] - adds r0, r5, 0 - bl SetAnimSpriteInitialXOffset - ldrh r0, [r4, 0x2] - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A4488: .4byte gBattleAnimAttacker -_080A448C: .4byte sub_80A43DC -_080A4490: .4byte gBattleAnimArgs - thumb_func_end sub_80A4450 - - thumb_func_start sub_80A4494 -sub_80A4494: @ 80A4494 - push {r4,lr} - adds r4, r0, 0 - ldr r1, _080A44D4 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x2] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x34] - ldrh r0, [r1, 0xA] - strh r0, [r4, 0x38] - ldrb r1, [r1, 0xC] - adds r0, r4, 0 - bl StartSpriteAffineAnim - ldr r1, _080A44D8 @ =DestroySpriteAndMatrix - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A44DC @ =TranslateSpriteLinearAndFlicker - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A44D4: .4byte gBattleAnimArgs -_080A44D8: .4byte DestroySpriteAndMatrix -_080A44DC: .4byte TranslateSpriteLinearAndFlicker - thumb_func_end sub_80A4494 - - thumb_func_start sub_80A44E0 -sub_80A44E0: @ 80A44E0 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080A4530 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A4514 - ldrh r0, [r5, 0x22] - adds r0, 0x8 - strh r0, [r5, 0x22] -_080A4514: - ldr r0, _080A4534 @ =sub_80A46CC - str r0, [r5, 0x1C] - ldr r0, _080A4538 @ =gBattleAnimArgs - movs r2, 0x4 - ldrsh r1, [r0, r2] - adds r3, r0, 0 - cmp r1, 0 - bne _080A453C - ldrh r0, [r3] - ldrh r1, [r5, 0x20] - adds r0, r1 - strh r0, [r5, 0x20] - b _080A4550 - .align 2, 0 -_080A4530: .4byte gBattleAnimTarget -_080A4534: .4byte sub_80A46CC -_080A4538: .4byte gBattleAnimArgs -_080A453C: - ldrh r0, [r5, 0x20] - ldrh r1, [r3] - subs r0, r1 - strh r0, [r5, 0x20] - adds r2, r5, 0 - adds r2, 0x3F - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] -_080A4550: - ldrh r0, [r3, 0x2] - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - ldr r1, _080A4584 @ =0xfffffc00 - adds r0, r1, 0 - ldrh r2, [r5, 0x30] - adds r1, r0, r2 - strh r1, [r5, 0x30] - movs r2, 0x80 - lsls r2, 3 - adds r0, r2, 0 - ldrh r2, [r5, 0x32] - adds r0, r2 - strh r0, [r5, 0x32] - ldrh r0, [r3, 0x4] - strh r0, [r5, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080A457E - negs r0, r1 - strh r0, [r5, 0x30] -_080A457E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A4584: .4byte 0xfffffc00 - thumb_func_end sub_80A44E0 - - thumb_func_start sub_80A4588 -sub_80A4588: @ 80A4588 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - ldr r0, _080A45A4 @ =gBattleAnimArgs - movs r1, 0x6 - ldrsh r0, [r0, r1] - cmp r0, 0x1 - beq _080A45A8 - cmp r0, 0x1 - ble _080A4624 - cmp r0, 0x2 - beq _080A45C8 - b _080A4624 - .align 2, 0 -_080A45A4: .4byte gBattleAnimArgs -_080A45A8: - ldr r5, _080A45C4 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r4, 0x2 - eors r0, r4 - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r7, r0, 24 - ldrb r0, [r5] - eors r4, r0 - adds r0, r4, 0 - b _080A4634 - .align 2, 0 -_080A45C4: .4byte gBattleAnimTarget -_080A45C8: - ldr r5, _080A4620 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r7, r0, 24 - ldrb r0, [r5] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r0, [r5] - movs r2, 0x2 - mov r8, r2 - mov r1, r8 - eors r0, r1 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080A463E - ldrb r0, [r5] - mov r2, r8 - eors r0, r2 - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, r7 - lsrs r7, r0, 1 - ldrb r0, [r5] - mov r1, r8 - eors r0, r1 - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - lsrs r4, r0, 1 - b _080A463E - .align 2, 0 -_080A4620: .4byte gBattleAnimTarget -_080A4624: - ldr r4, _080A4670 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r7, r0, 24 - ldrb r0, [r4] -_080A4634: - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r4, r0, 24 -_080A463E: - strh r7, [r6, 0x20] - strh r4, [r6, 0x22] - ldr r0, _080A4670 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A4656 - ldrh r0, [r6, 0x22] - adds r0, 0x8 - strh r0, [r6, 0x22] -_080A4656: - ldr r0, _080A4674 @ =sub_80A46CC - str r0, [r6, 0x1C] - ldr r0, _080A4678 @ =gBattleAnimArgs - movs r2, 0x4 - ldrsh r1, [r0, r2] - adds r3, r0, 0 - cmp r1, 0 - bne _080A467C - ldrh r0, [r3] - ldrh r1, [r6, 0x20] - adds r0, r1 - strh r0, [r6, 0x20] - b _080A4690 - .align 2, 0 -_080A4670: .4byte gBattleAnimTarget -_080A4674: .4byte sub_80A46CC -_080A4678: .4byte gBattleAnimArgs -_080A467C: - ldrh r0, [r6, 0x20] - ldrh r1, [r3] - subs r0, r1 - strh r0, [r6, 0x20] - adds r2, r6, 0 - adds r2, 0x3F - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] -_080A4690: - ldrh r0, [r3, 0x2] - ldrh r2, [r6, 0x22] - adds r0, r2 - strh r0, [r6, 0x22] - ldr r1, _080A46C8 @ =0xfffffc00 - adds r0, r1, 0 - ldrh r2, [r6, 0x30] - adds r1, r0, r2 - strh r1, [r6, 0x30] - movs r2, 0x80 - lsls r2, 3 - adds r0, r2, 0 - ldrh r2, [r6, 0x32] - adds r0, r2 - strh r0, [r6, 0x32] - ldrh r0, [r3, 0x4] - strh r0, [r6, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080A46BE - negs r0, r1 - strh r0, [r6, 0x30] -_080A46BE: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A46C8: .4byte 0xfffffc00 - thumb_func_end sub_80A4588 - - thumb_func_start sub_80A46CC -sub_80A46CC: @ 80A46CC - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x30] - ldrh r2, [r4, 0x34] - adds r0, r1, r2 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x36] - adds r0, r2 - strh r0, [r4, 0x36] - movs r2, 0x38 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080A46EE - adds r0, r1, 0 - adds r0, 0x18 - b _080A46F2 -_080A46EE: - adds r0, r1, 0 - subs r0, 0x18 -_080A46F2: - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x32] - subs r0, 0x18 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - bne _080A4728 - ldr r1, _080A4730 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - movs r0, 0x3 - strh r0, [r4, 0x2E] - ldr r0, _080A4734 @ =WaitAnimForDuration - str r0, [r4, 0x1C] -_080A4728: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A4730: .4byte DestroyAnimSprite -_080A4734: .4byte WaitAnimForDuration - thumb_func_end sub_80A46CC - - thumb_func_start sub_80A4738 -sub_80A4738: @ 80A4738 - push {r4,r5,lr} - adds r5, r0, 0 - ldrh r1, [r5, 0x32] - movs r2, 0x32 - ldrsh r0, [r5, r2] - cmp r0, 0x1 - ble _080A47DC - ldrh r1, [r5, 0x34] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A4794 - adds r3, r5, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r2, 0x5 - negs r2, r2 - adds r0, r2, 0 - ands r0, r1 - strb r0, [r3] - ldr r4, _080A4790 @ =gSprites - movs r0, 0x2E - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r3, [r0] - adds r1, r2, 0 - ands r1, r3 - strb r1, [r0] - movs r0, 0x30 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - ands r2, r1 - strb r2, [r0] - b _080A47CA - .align 2, 0 -_080A4790: .4byte gSprites -_080A4794: - adds r1, r5, 0 - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - ldr r3, _080A47D8 @ =gSprites - movs r0, 0x2E - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r2 - strb r1, [r0] - movs r0, 0x30 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r2 - strb r1, [r0] -_080A47CA: - movs r0, 0 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] - b _080A47E0 - .align 2, 0 -_080A47D8: .4byte gSprites -_080A47DC: - adds r0, r1, 0x1 - strh r0, [r5, 0x32] -_080A47E0: - movs r1, 0x34 - ldrsh r0, [r5, r1] - cmp r0, 0xA - bne _080A4810 - movs r2, 0x2E - ldrsh r1, [r5, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _080A4818 @ =gSprites - adds r0, r4 - bl DestroySprite - movs r0, 0x30 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - adds r0, r5, 0 - bl DestroyAnimSprite -_080A4810: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A4818: .4byte gSprites - thumb_func_end sub_80A4738 - - thumb_func_start sub_80A481C -sub_80A481C: @ 80A481C - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080A483C @ =gBattleAnimArgs - ldrh r0, [r4, 0x4] - strh r0, [r5, 0x2E] - ldr r0, _080A4840 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A4844 - ldrh r0, [r5, 0x20] - ldrh r1, [r4] - subs r0, r1 - b _080A484A - .align 2, 0 -_080A483C: .4byte gBattleAnimArgs -_080A4840: .4byte gBattleAnimAttacker -_080A4844: - ldrh r0, [r4] - ldrh r1, [r5, 0x20] - adds r0, r1 -_080A484A: - strh r0, [r5, 0x20] - ldr r4, _080A4878 @ =gBattleAnimArgs - ldrb r1, [r4, 0xA] - adds r0, r5, 0 - bl StartSpriteAnim - ldrh r0, [r4, 0x6] - negs r0, r0 - strh r0, [r5, 0x30] - ldrh r0, [r4, 0x2] - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x34] - ldr r1, _080A487C @ =sub_80A4880 - str r1, [r5, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A4878: .4byte gBattleAnimArgs -_080A487C: .4byte sub_80A4880 - thumb_func_end sub_80A481C - - thumb_func_start sub_80A4880 -sub_80A4880: @ 80A4880 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x64 - bl Cos - strh r0, [r4, 0x24] - movs r2, 0x2E - ldrsh r0, [r4, r2] - movs r1, 0x14 - bl Sin - strh r0, [r4, 0x26] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x7F - bgt _080A48AC - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0 - b _080A48B2 -_080A48AC: - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0xE -_080A48B2: - strb r0, [r1] - ldrh r0, [r4, 0x30] - ldrh r2, [r4, 0x2E] - adds r0, r2 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x38] - adds r0, 0x82 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 24 - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x34 - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _080A48E8 - adds r0, r4, 0 - bl DestroyAnimSprite -_080A48E8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A4880 - - thumb_func_start sub_80A48F0 -sub_80A48F0: @ 80A48F0 - push {r4-r6,lr} - adds r5, r0, 0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A4906 - ldr r1, _080A4964 @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - adds r0, 0x8 - strh r0, [r1, 0x2] -_080A4906: - ldr r6, _080A4968 @ =gBattleAnimAttacker - ldrb r0, [r6] - movs r1, 0 - bl GetBattlerSpriteCoord2 - lsls r0, 24 - ldr r4, _080A4964 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r6] - movs r1, 0x1 - bl GetBattlerSpriteCoord2 - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x2] - adds r0, r4 - strh r0, [r5, 0x22] - ldrb r0, [r6] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A4944 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A496C -_080A4944: - ldrb r0, [r6] - bl GetBattlerSpriteBGPriority - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1 - movs r1, 0x3 - ands r0, r1 - lsls r0, 2 - ldrb r2, [r5, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x5] - b _080A4984 - .align 2, 0 -_080A4964: .4byte gBattleAnimArgs -_080A4968: .4byte gBattleAnimAttacker -_080A496C: - ldrb r0, [r6] - bl GetBattlerSpriteBGPriority - movs r1, 0x3 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r5, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x5] -_080A4984: - ldr r0, _080A49C8 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r5, 0x2E] - ldr r0, _080A49CC @ =0x00002828 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 20 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - strh r0, [r5, 0x32] - movs r4, 0x10 - movs r0, 0x10 - strh r0, [r5, 0x3C] - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - ldrh r0, [r5, 0x3C] - lsls r1, r0, 8 - subs r4, r0 - orrs r1, r4 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - ldr r0, _080A49D0 @ =sub_80A49D4 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A49C8: .4byte gBattleAnimArgs -_080A49CC: .4byte 0x00002828 -_080A49D0: .4byte sub_80A49D4 - thumb_func_end sub_80A48F0 - - thumb_func_start sub_80A49D4 -sub_80A49D4: @ 80A49D4 - push {r4-r6,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x38] - adds r0, 0x60 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 24 - negs r0, r0 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A4A32 - movs r0, 0 - strh r0, [r4, 0x30] - ldr r1, _080A4A7C @ =gPlttBufferFaded - movs r2, 0x32 - ldrsh r0, [r4, r2] - adds r0, 0x1 - lsls r0, 1 - adds r0, r1 - ldrh r5, [r0] - movs r2, 0 - adds r6, r1, 0 - adds r3, r6, 0 -_080A4A0C: - movs r1, 0x32 - ldrsh r0, [r4, r1] - adds r2, 0x1 - adds r0, r2 - lsls r1, r0, 1 - adds r1, r3 - adds r0, 0x1 - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - strh r0, [r1] - cmp r2, 0x5 - ble _080A4A0C - movs r2, 0x32 - ldrsh r0, [r4, r2] - adds r0, 0x7 - lsls r0, 1 - adds r0, r6 - strh r5, [r0] -_080A4A32: - ldrh r2, [r4, 0x3C] - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0x6 - ble _080A4A6C - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - ble _080A4A80 - ldrh r0, [r4, 0x3A] - adds r0, 0x1 - strh r0, [r4, 0x3A] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A4A6C - movs r0, 0 - strh r0, [r4, 0x3A] - subs r2, 0x1 - strh r2, [r4, 0x3C] - lsls r1, r2, 8 - movs r0, 0x10 - subs r0, r2 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg -_080A4A6C: - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080A4A80 - subs r0, r1, 0x1 - strh r0, [r4, 0x2E] - b _080A4AC2 - .align 2, 0 -_080A4A7C: .4byte gPlttBufferFaded -_080A4A80: - ldrh r0, [r4, 0x3A] - adds r0, 0x1 - strh r0, [r4, 0x3A] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A4AC2 - movs r0, 0 - strh r0, [r4, 0x3A] - ldrh r2, [r4, 0x3C] - adds r2, 0x1 - strh r2, [r4, 0x3C] - lsls r1, r2, 8 - movs r0, 0x10 - subs r0, r2 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _080A4AC2 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080A4AC8 @ =DestroyAnimSpriteAndDisableBlend - str r0, [r4, 0x1C] -_080A4AC2: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A4AC8: .4byte DestroyAnimSpriteAndDisableBlend - thumb_func_end sub_80A49D4 - - thumb_func_start sub_80A4ACC -sub_80A4ACC: @ 80A4ACC - push {r4-r6,lr} - adds r4, r0, 0 - ldr r6, _080A4B2C @ =gBattleAnimTarget - ldrb r0, [r6] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - movs r5, 0 - strh r0, [r4, 0x20] - ldrb r0, [r6] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080A4B30 @ =0x0000ffe8 - adds r0, r1 - strh r0, [r4, 0x22] - strh r5, [r4, 0x2E] - strh r5, [r4, 0x30] - strh r5, [r4, 0x32] - strh r5, [r4, 0x34] - strh r5, [r4, 0x36] - strh r5, [r4, 0x3A] - movs r0, 0x10 - strh r0, [r4, 0x3C] - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - ldrh r1, [r4, 0x3C] - lsls r1, 8 - ldrh r0, [r4, 0x3A] - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - ldr r0, _080A4B34 @ =sub_80A4B38 - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A4B2C: .4byte gBattleAnimTarget -_080A4B30: .4byte 0x0000ffe8 -_080A4B34: .4byte sub_80A4B38 - thumb_func_end sub_80A4ACC - - thumb_func_start sub_80A4B38 -sub_80A4B38: @ 80A4B38 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bls _080A4B46 - b _080A4C90 -_080A4B46: - lsls r0, 2 - ldr r1, _080A4B50 @ =_080A4B54 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080A4B50: .4byte _080A4B54 - .align 2, 0 -_080A4B54: - .4byte _080A4B68 - .4byte _080A4BCC - .4byte _080A4BE8 - .4byte _080A4C66 - .4byte _080A4C7A -_080A4B68: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - cmp r0, 0 - bgt _080A4B76 - b _080A4C90 -_080A4B76: - movs r0, 0 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A4B98 - ldrh r1, [r4, 0x3A] - movs r2, 0x3A - ldrsh r0, [r4, r2] - cmp r0, 0xF - bgt _080A4BA6 - adds r0, r1, 0x1 - strh r0, [r4, 0x3A] - b _080A4BA6 -_080A4B98: - ldrh r1, [r4, 0x3C] - movs r2, 0x3C - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080A4BA6 - subs r0, r1, 0x1 - strh r0, [r4, 0x3C] -_080A4BA6: - ldrh r1, [r4, 0x3C] - lsls r1, 8 - ldrh r0, [r4, 0x3A] - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x3A - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _080A4C90 - movs r2, 0x3C - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080A4C90 - strh r0, [r4, 0x30] - b _080A4C72 -_080A4BCC: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _080A4C90 - movs r0, 0 - strh r0, [r4, 0x30] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - b _080A4C72 -_080A4BE8: - adds r0, r4, 0 - movs r1, 0x10 - movs r2, 0x4 - bl sub_80A4C98 - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080A4C0A - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - adds r0, 0x1 - strh r0, [r4, 0x22] -_080A4C0A: - ldrh r0, [r4, 0x32] - adds r1, r0, 0x1 - strh r1, [r4, 0x32] - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0x1D - ble _080A4C90 - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - beq _080A4C30 - ldrh r1, [r4, 0x3A] - movs r2, 0x3A - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080A4C3E - subs r0, r1, 0x1 - strh r0, [r4, 0x3A] - b _080A4C3E -_080A4C30: - ldrh r1, [r4, 0x3C] - movs r2, 0x3C - ldrsh r0, [r4, r2] - cmp r0, 0xF - bgt _080A4C3E - adds r0, r1, 0x1 - strh r0, [r4, 0x3C] -_080A4C3E: - ldrh r1, [r4, 0x3C] - lsls r1, 8 - ldrh r0, [r4, 0x3A] - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x3A - ldrsh r1, [r4, r0] - cmp r1, 0 - bne _080A4C90 - movs r2, 0x3C - ldrsh r0, [r4, r2] - cmp r0, 0x10 - bne _080A4C90 - strh r1, [r4, 0x30] - strh r1, [r4, 0x32] - b _080A4C72 -_080A4C66: - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_080A4C72: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080A4C90 -_080A4C7A: - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r4, 0 - bl DestroyAnimSprite -_080A4C90: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A4B38 - - thumb_func_start sub_80A4C98 -sub_80A4C98: @ 80A4C98 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0xB - bgt _080A4CAA - ldrh r0, [r4, 0x36] - adds r0, 0x2 - strh r0, [r4, 0x36] -_080A4CAA: - ldrh r5, [r4, 0x34] - adds r0, r5, 0 - subs r0, 0x12 - lsls r0, 16 - lsrs r0, 16 - adds r1, r5, 0 - cmp r0, 0x17 - bhi _080A4CC0 - ldrh r0, [r4, 0x36] - subs r0, 0x2 - strh r0, [r4, 0x36] -_080A4CC0: - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0x2F - ble _080A4CCE - ldrh r0, [r4, 0x36] - adds r0, 0x2 - strh r0, [r4, 0x36] -_080A4CCE: - movs r1, 0x36 - ldrsh r0, [r4, r1] - movs r1, 0x9 - bl __divsi3 - strh r0, [r4, 0x24] - movs r1, 0x36 - ldrsh r0, [r4, r1] - movs r1, 0xE - bl __divsi3 - strh r0, [r4, 0x26] - lsls r0, 16 - cmp r0, 0 - bge _080A4CF4 - movs r1, 0x26 - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4, 0x26] -_080A4CF4: - adds r0, r5, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3B - ble _080A4D04 - movs r0, 0 - strh r0, [r4, 0x34] -_080A4D04: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A4C98 - - thumb_func_start sub_80A4D0C -sub_80A4D0C: @ 80A4D0C - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080A4D50 @ =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080A4D20 - adds r0, r4, 0 - bl SetSpriteCoordsToAnimAttackerCoords -_080A4D20: - movs r0, 0 - ldrsh r1, [r5, r0] - adds r0, r4, 0 - bl SetAnimSpriteInitialXOffset - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldrh r0, [r5, 0xA] - strh r0, [r4, 0x2E] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x30] - ldrh r0, [r5, 0x8] - strh r0, [r4, 0x32] - ldr r1, _080A4D54 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A4D58 @ =TranslateSpriteLinearFixedPoint - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A4D50: .4byte gBattleAnimArgs -_080A4D54: .4byte DestroyAnimSprite -_080A4D58: .4byte TranslateSpriteLinearFixedPoint - thumb_func_end sub_80A4D0C - - thumb_func_start sub_80A4D5C -sub_80A4D5C: @ 80A4D5C - push {r4-r6,lr} - adds r5, r0, 0 - ldr r0, _080A4D70 @ =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A4D78 - ldr r0, _080A4D74 @ =gBattleAnimAttacker - b _080A4D7A - .align 2, 0 -_080A4D70: .4byte gBattleAnimArgs -_080A4D74: .4byte gBattleAnimAttacker -_080A4D78: - ldr r0, _080A4DBC @ =gBattleAnimTarget -_080A4D7A: - ldrb r6, [r0] - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080A4DC4 - movs r1, 0x2 - adds r0, r6, 0 - eors r0, r1 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080A4DC4 - ldr r4, _080A4DC0 @ =gBattleAnimArgs - ldrb r1, [r4, 0xC] - adds r2, r5, 0 - adds r2, 0x20 - adds r3, r5, 0 - adds r3, 0x22 - adds r0, r6, 0 - bl SetAverageBattlerPositions - movs r2, 0 - ldrsh r1, [r4, r2] - adds r0, r5, 0 - bl SetAnimSpriteInitialXOffset - ldrh r0, [r4, 0x2] - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - b _080A4E14 - .align 2, 0 -_080A4DBC: .4byte gBattleAnimTarget -_080A4DC0: .4byte gBattleAnimArgs -_080A4DC4: - ldr r4, _080A4DE4 @ =gBattleAnimArgs - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080A4DE8 - adds r0, r6, 0 - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - adds r0, r6, 0 - movs r1, 0x1 - b _080A4DFA - .align 2, 0 -_080A4DE4: .4byte gBattleAnimArgs -_080A4DE8: - adds r0, r6, 0 - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - adds r0, r6, 0 - movs r1, 0x3 -_080A4DFA: - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x2] - adds r0, r4 - strh r0, [r5, 0x22] - ldr r0, _080A4E34 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r1, [r0, r2] - adds r0, r5, 0 - bl SetAnimSpriteInitialXOffset -_080A4E14: - ldr r1, _080A4E34 @ =gBattleAnimArgs - ldrh r0, [r1, 0xA] - strh r0, [r5, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r5, 0x30] - ldrh r0, [r1, 0x8] - strh r0, [r5, 0x32] - ldr r1, _080A4E38 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A4E3C @ =TranslateSpriteLinearFixedPoint - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A4E34: .4byte gBattleAnimArgs -_080A4E38: .4byte DestroyAnimSprite -_080A4E3C: .4byte TranslateSpriteLinearFixedPoint - thumb_func_end sub_80A4D5C - - thumb_func_start sub_80A4E40 -sub_80A4E40: @ 80A4E40 - push {r4,lr} - adds r4, r0, 0 - bl SetSpriteCoordsToAnimAttackerCoords - ldr r0, _080A4E6C @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A4E74 - ldr r0, _080A4E70 @ =gBattleAnimArgs - ldrh r1, [r0] - ldrh r2, [r4, 0x20] - adds r1, r2 - strh r1, [r4, 0x20] - ldrh r0, [r0, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - b _080A4E8E - .align 2, 0 -_080A4E6C: .4byte gBattleAnimAttacker -_080A4E70: .4byte gBattleAnimArgs -_080A4E74: - ldr r2, _080A4E98 @ =gBattleAnimArgs - ldrh r0, [r4, 0x20] - ldrh r1, [r2] - subs r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r2, 0x2] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim -_080A4E8E: - ldr r0, _080A4E9C @ =sub_80A4EA0 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A4E98: .4byte gBattleAnimArgs -_080A4E9C: .4byte sub_80A4EA0 - thumb_func_end sub_80A4E40 - - thumb_func_start sub_80A4EA0 -sub_80A4EA0: @ 80A4EA0 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1E - ble _080A4ED8 - movs r0, 0x2E - ldrsh r1, [r4, r0] - movs r0, 0x1E - subs r0, r1 - movs r1, 0x3 - bl __divsi3 - strh r0, [r4, 0x26] - movs r1, 0x30 - ldrsh r0, [r4, r1] - lsls r0, 18 - asrs r0, 16 - movs r1, 0x3 - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] -_080A4ED8: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080A4EEC - adds r0, r4, 0 - bl DestroyAnimSprite -_080A4EEC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A4EA0 - - thumb_func_start sub_80A4EF4 -sub_80A4EF4: @ 80A4EF4 - push {r4,lr} - adds r4, r0, 0 - bl SetSpriteCoordsToAnimAttackerCoords - ldr r0, _080A4F24 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A4F2C - ldr r1, _080A4F28 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - movs r0, 0x1 - strh r0, [r4, 0x34] - b _080A4F4A - .align 2, 0 -_080A4F24: .4byte gBattleAnimAttacker -_080A4F28: .4byte gBattleAnimArgs -_080A4F2C: - ldr r2, _080A4F54 @ =gBattleAnimArgs - ldrh r0, [r4, 0x20] - ldrh r1, [r2] - subs r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r2, 0x2] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - ldr r0, _080A4F58 @ =0x0000ffff - strh r0, [r4, 0x34] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_080A4F4A: - ldr r0, _080A4F5C @ =sub_80A4F60 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A4F54: .4byte gBattleAnimArgs -_080A4F58: .4byte 0x0000ffff -_080A4F5C: .4byte sub_80A4F60 - thumb_func_end sub_80A4EF4 - - thumb_func_start sub_80A4F60 -sub_80A4F60: @ 80A4F60 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x28 - bl __divsi3 - negs r0, r0 - strh r0, [r4, 0x26] - movs r2, 0x36 - ldrsh r0, [r4, r2] - movs r1, 0xA - bl __divsi3 - strh r0, [r4, 0x24] - movs r1, 0x34 - ldrsh r0, [r4, r1] - lsls r0, 1 - ldrh r2, [r4, 0x36] - adds r0, r2 - strh r0, [r4, 0x36] - ldrh r0, [r4, 0x30] - ldrh r2, [r4, 0x2E] - adds r1, r0, r2 - strh r1, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3C - ble _080A4FA4 - adds r0, r4, 0 - bl DestroySpriteAndMatrix -_080A4FA4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A4F60 - - thumb_func_start sub_80A4FAC -sub_80A4FAC: @ 80A4FAC - push {lr} - ldrh r1, [r0, 0x20] - subs r1, 0x20 - strh r1, [r0, 0x20] - ldrh r1, [r0, 0x22] - subs r1, 0x20 - strh r1, [r0, 0x22] - movs r1, 0x14 - strh r1, [r0, 0x2E] - ldr r1, _080A4FCC @ =WaitAnimForDuration - str r1, [r0, 0x1C] - ldr r1, _080A4FD0 @ =sub_80A4FD4 - bl StoreSpriteCallbackInData6 - pop {r0} - bx r0 - .align 2, 0 -_080A4FCC: .4byte WaitAnimForDuration -_080A4FD0: .4byte sub_80A4FD4 - thumb_func_end sub_80A4FAC - - thumb_func_start sub_80A4FD4 -sub_80A4FD4: @ 80A4FD4 - push {r4-r6,lr} - adds r5, r0, 0 - ldrh r6, [r5, 0x38] - movs r1, 0x1 - adds r0, r1, 0 - ands r0, r6 - cmp r0, 0 - beq _080A4FEA - cmp r0, 0x1 - beq _080A5004 - b _080A506A -_080A4FEA: - strh r1, [r5, 0x2E] - ldr r0, _080A4FFC @ =WaitAnimForDuration - str r0, [r5, 0x1C] - ldr r1, _080A5000 @ =sub_80A4FD4 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - b _080A506A - .align 2, 0 -_080A4FFC: .4byte WaitAnimForDuration -_080A5000: .4byte sub_80A4FD4 -_080A5004: - ldrh r3, [r5, 0x24] - ldrh r0, [r5, 0x20] - adds r3, r0 - movs r0, 0 - strh r3, [r5, 0x20] - ldrh r4, [r5, 0x26] - ldrh r1, [r5, 0x22] - adds r4, r1 - strh r4, [r5, 0x22] - strh r0, [r5, 0x26] - strh r0, [r5, 0x24] - movs r0, 0x8 - strh r0, [r5, 0x2E] - ldr r2, _080A5078 @ =gUnknown_83E3548 - lsls r0, r6, 16 - asrs r0, 24 - lsls r0, 1 - adds r1, r0, r2 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - adds r3, r1 - strh r3, [r5, 0x32] - adds r2, 0x1 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r4, r0 - strh r4, [r5, 0x36] - ldr r0, _080A507C @ =StartAnimLinearTranslation - str r0, [r5, 0x1C] - ldr r1, _080A5080 @ =sub_80A5084 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1, 0 - ldrh r1, [r5, 0x38] - adds r0, r1 - strh r0, [r5, 0x38] - movs r0, 0x3F - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xCB - bl PlaySE12WithPanning -_080A506A: - ldrh r0, [r5, 0x38] - movs r1, 0x1 - eors r0, r1 - strh r0, [r5, 0x38] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A5078: .4byte gUnknown_83E3548 -_080A507C: .4byte StartAnimLinearTranslation -_080A5080: .4byte sub_80A5084 - thumb_func_end sub_80A4FD4 - - thumb_func_start sub_80A5084 -sub_80A5084: @ 80A5084 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x38] - lsls r0, 16 - asrs r0, 24 - cmp r0, 0x4 - bne _080A50AC - movs r0, 0xA - strh r0, [r2, 0x2E] - ldr r0, _080A50A4 @ =WaitAnimForDuration - str r0, [r2, 0x1C] - ldr r1, _080A50A8 @ =sub_80A50B8 - adds r0, r2, 0 - bl StoreSpriteCallbackInData6 - b _080A50B0 - .align 2, 0 -_080A50A4: .4byte WaitAnimForDuration -_080A50A8: .4byte sub_80A50B8 -_080A50AC: - ldr r0, _080A50B4 @ =sub_80A4FD4 - str r0, [r2, 0x1C] -_080A50B0: - pop {r0} - bx r0 - .align 2, 0 -_080A50B4: .4byte sub_80A4FD4 - thumb_func_end sub_80A5084 - - thumb_func_start sub_80A50B8 -sub_80A50B8: @ 80A50B8 - push {r4-r7,lr} - adds r5, r0, 0 - ldrh r1, [r5, 0x6] - cmp r1, 0 - bne _080A50E0 - movs r0, 0x3 - strh r0, [r5, 0x2E] - strh r1, [r5, 0x30] - strh r1, [r5, 0x32] - ldr r0, _080A50D8 @ =WaitAnimForDuration - str r0, [r5, 0x1C] - ldr r1, _080A50DC @ =sub_80A5174 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - b _080A5160 - .align 2, 0 -_080A50D8: .4byte WaitAnimForDuration -_080A50DC: .4byte sub_80A5174 -_080A50E0: - ldrh r0, [r5, 0x6] - cmp r0, 0x2 - beq _080A5100 - cmp r0, 0x2 - bgt _080A50F0 - cmp r0, 0x1 - beq _080A50F6 - b _080A5114 -_080A50F0: - cmp r0, 0x3 - beq _080A5108 - b _080A5114 -_080A50F6: - ldr r6, _080A50FC @ =0x0000fff8 - adds r7, r6, 0 - b _080A5118 - .align 2, 0 -_080A50FC: .4byte 0x0000fff8 -_080A5100: - ldr r7, _080A5104 @ =0x0000fff8 - b _080A5116 - .align 2, 0 -_080A5104: .4byte 0x0000fff8 -_080A5108: - movs r7, 0x8 - ldr r6, _080A5110 @ =0x0000fff8 - b _080A5118 - .align 2, 0 -_080A5110: .4byte 0x0000fff8 -_080A5114: - movs r7, 0x8 -_080A5116: - movs r6, 0x8 -_080A5118: - ldrh r0, [r5, 0x24] - ldrh r1, [r5, 0x20] - adds r0, r1 - movs r1, 0 - strh r0, [r5, 0x20] - ldrh r0, [r5, 0x26] - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - strh r1, [r5, 0x26] - strh r1, [r5, 0x24] - movs r0, 0x6 - strh r0, [r5, 0x2E] - ldr r4, _080A5168 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, r7 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, r6 - strh r0, [r5, 0x36] - ldr r0, _080A516C @ =StartAnimLinearTranslation - str r0, [r5, 0x1C] - ldr r1, _080A5170 @ =sub_80A5220 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 -_080A5160: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A5168: .4byte gBattleAnimTarget -_080A516C: .4byte StartAnimLinearTranslation -_080A5170: .4byte sub_80A5220 - thumb_func_end sub_80A50B8 - - thumb_func_start sub_80A5174 -sub_80A5174: @ 80A5174 - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A5194 - ldrh r0, [r4, 0x30] - adds r0, 0x3 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080A51A4 - movs r0, 0x10 - b _080A51A2 -_080A5194: - ldrh r0, [r4, 0x30] - subs r0, 0x3 - strh r0, [r4, 0x30] - lsls r0, 16 - cmp r0, 0 - bge _080A51A4 - movs r0, 0 -_080A51A2: - strh r0, [r4, 0x30] -_080A51A4: - movs r0, 0x1 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0x1 - movs r3, 0x1 - bl sub_8075BE8 - ldrh r1, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080A5200 @ =0x00007fff - bl BlendPalettes - movs r3, 0x30 - ldrsh r0, [r4, r3] - cmp r0, 0x10 - bne _080A520C - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - ldrb r1, [r4, 0x5] - lsrs r1, 4 - lsls r0, r1, 5 - ldr r2, _080A5204 @ =gPlttBufferUnfaded + 0x210 - adds r0, r2 - lsls r1, 4 - ldr r3, _080A5208 @ =0x00000101 - adds r2, r3, 0 - orrs r1, r2 - movs r2, 0x4 - bl LoadPalette - movs r0, 0x3F - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xB9 - bl PlaySE12WithPanning - b _080A5214 - .align 2, 0 -_080A5200: .4byte 0x00007fff -_080A5204: .4byte gPlttBufferUnfaded + 0x210 -_080A5208: .4byte 0x00000101 -_080A520C: - cmp r0, 0 - bne _080A5214 - ldr r0, _080A521C @ =sub_80A5220 - str r0, [r4, 0x1C] -_080A5214: - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A521C: .4byte sub_80A5220 - thumb_func_end sub_80A5174 - - thumb_func_start sub_80A5220 -sub_80A5220: @ 80A5220 - push {lr} - adds r2, r0, 0 - ldr r0, _080A523C @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080A5240 @ =0x0000ffff - cmp r1, r0 - bne _080A5238 - movs r0, 0 - strh r0, [r2, 0x30] - strh r0, [r2, 0x2E] - ldr r0, _080A5244 @ =sub_80A5248 - str r0, [r2, 0x1C] -_080A5238: - pop {r0} - bx r0 - .align 2, 0 -_080A523C: .4byte gBattleAnimArgs -_080A5240: .4byte 0x0000ffff -_080A5244: .4byte sub_80A5248 - thumb_func_end sub_80A5220 - - thumb_func_start sub_80A5248 -sub_80A5248: @ 80A5248 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x3 - bl __modsi3 - lsls r0, 16 - cmp r0, 0 - bne _080A527C - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - 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 - strb r0, [r3] -_080A527C: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x8 - bne _080A5290 - adds r0, r4, 0 - bl DestroyAnimSprite -_080A5290: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A5248 - - thumb_func_start sub_80A5298 -sub_80A5298: @ 80A5298 - push {r4,lr} - adds r3, r0, 0 - ldr r0, _080A52B8 @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r3, 0x6] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080A52BC - ldrh r0, [r3, 0x20] - subs r0, 0x18 - strh r0, [r3, 0x20] - ldrh r0, [r3, 0x22] - subs r0, 0x18 - strh r0, [r3, 0x22] - b _080A530E - .align 2, 0 -_080A52B8: .4byte gBattleAnimArgs -_080A52BC: - cmp r0, 0x2 - bne _080A52D8 - ldrh r0, [r3, 0x20] - subs r0, 0x18 - strh r0, [r3, 0x20] - ldrh r0, [r3, 0x22] - adds r0, 0x18 - strh r0, [r3, 0x22] - ldrb r1, [r3, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x20 - b _080A530A -_080A52D8: - cmp r0, 0x3 - bne _080A52F4 - ldrh r0, [r3, 0x20] - adds r0, 0x18 - strh r0, [r3, 0x20] - ldrh r0, [r3, 0x22] - subs r0, 0x18 - strh r0, [r3, 0x22] - ldrb r1, [r3, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x10 - b _080A530A -_080A52F4: - ldrh r0, [r3, 0x20] - adds r0, 0x18 - strh r0, [r3, 0x20] - ldrh r0, [r3, 0x22] - adds r0, 0x18 - strh r0, [r3, 0x22] - ldrb r1, [r3, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x30 -_080A530A: - orrs r0, r1 - strb r0, [r3, 0x3] -_080A530E: - ldrh r2, [r3, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x10 - ldr r4, _080A5334 @ =0x000003ff - adds r0, r4, 0 - ands r1, r0 - ldr r0, _080A5338 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r3, 0x4] - ldr r1, _080A533C @ =sub_80A4FAC - str r1, [r3, 0x1C] - adds r0, r3, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A5334: .4byte 0x000003ff -_080A5338: .4byte 0xfffffc00 -_080A533C: .4byte sub_80A4FAC - thumb_func_end sub_80A5298 - - thumb_func_start sub_80A5340 -sub_80A5340: @ 80A5340 - push {lr} - adds r3, r0, 0 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - movs r0, 0 - strh r0, [r3, 0x2E] - ldr r0, _080A5368 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0x1 - beq _080A537C - cmp r0, 0x1 - bgt _080A536C - cmp r0, 0 - beq _080A5372 - b _080A538C - .align 2, 0 -_080A5368: .4byte gBattleAnimArgs -_080A536C: - cmp r0, 0x2 - beq _080A5384 - b _080A538C -_080A5372: - ldr r0, _080A5378 @ =sub_80A5398 - b _080A538E - .align 2, 0 -_080A5378: .4byte sub_80A5398 -_080A537C: - ldr r0, _080A5380 @ =sub_80A5474 - b _080A538E - .align 2, 0 -_080A5380: .4byte sub_80A5474 -_080A5384: - ldr r0, _080A5388 @ =sub_80A54C4 - b _080A538E - .align 2, 0 -_080A5388: .4byte sub_80A54C4 -_080A538C: - ldr r0, _080A5394 @ =sub_80A5584 -_080A538E: - str r0, [r3, 0x1C] - pop {r0} - bx r0 - .align 2, 0 -_080A5394: .4byte sub_80A5584 - thumb_func_end sub_80A5340 - - thumb_func_start sub_80A5398 -sub_80A5398: @ 80A5398 - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x6 - strh r0, [r4, 0x2E] - ldr r5, _080A53D8 @ =gBattleAnimAttacker - ldrb r0, [r5] - bl GetBattlerSide - lsls r0, 24 - movs r2, 0x2 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0 - beq _080A53B6 - movs r1, 0x2 -_080A53B6: - strh r1, [r4, 0x30] - movs r0, 0 - strh r0, [r4, 0x32] - ldr r1, _080A53DC @ =gBattlerSpriteIds - ldrb r0, [r5] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r4, 0x34] - ldr r1, _080A53E0 @ =sub_80A53E8 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A53E4 @ =TranslateMonSpriteLinear - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A53D8: .4byte gBattleAnimAttacker -_080A53DC: .4byte gBattlerSpriteIds -_080A53E0: .4byte sub_80A53E8 -_080A53E4: .4byte TranslateMonSpriteLinear - thumb_func_end sub_80A5398 - - thumb_func_start sub_80A53E8 -sub_80A53E8: @ 80A53E8 - push {r4-r6,lr} - adds r5, r0, 0 - movs r0, 0x2E - ldrsh r6, [r5, r0] - cmp r6, 0 - bne _080A5424 - ldr r1, _080A5464 @ =gBattlerSpriteIds - ldr r4, _080A5468 @ =gBattleAnimAttacker - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r5, 0x34] - movs r1, 0 - bl PrepareBattlerSpriteForRotScale - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x3A] - ldr r2, _080A546C @ =0xfffffd00 - adds r1, r2, 0 - cmp r0, 0 - beq _080A5420 - movs r0, 0xC0 - lsls r0, 2 - adds r1, r0, 0 -_080A5420: - strh r1, [r5, 0x36] - strh r6, [r5, 0x38] -_080A5424: - ldrh r0, [r5, 0x36] - ldrh r1, [r5, 0x38] - adds r0, r1 - strh r0, [r5, 0x38] - ldrh r0, [r5, 0x34] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r5, 0x38] - adds r1, r2, 0 - bl SetSpriteRotScale - ldrh r0, [r5, 0x34] - lsls r0, 24 - lsrs r0, 24 - bl SetBattlerSpriteYOffsetFromRotation - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080A545E - movs r0, 0 - strh r0, [r5, 0x2E] - ldr r0, _080A5470 @ =sub_80A5584 - str r0, [r5, 0x1C] -_080A545E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A5464: .4byte gBattlerSpriteIds -_080A5468: .4byte gBattleAnimAttacker -_080A546C: .4byte 0xfffffd00 -_080A5470: .4byte sub_80A5584 - thumb_func_end sub_80A53E8 - - thumb_func_start sub_80A5474 -sub_80A5474: @ 80A5474 - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x4 - strh r0, [r4, 0x2E] - ldr r5, _080A54B4 @ =gBattleAnimAttacker - ldrb r0, [r5] - bl GetBattlerSide - lsls r0, 24 - movs r1, 0x3 - cmp r0, 0 - beq _080A5492 - movs r0, 0x3 - negs r0, r0 - adds r1, r0, 0 -_080A5492: - strh r1, [r4, 0x30] - movs r0, 0 - strh r0, [r4, 0x32] - ldr r1, _080A54B8 @ =gBattlerSpriteIds - ldrb r0, [r5] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r4, 0x34] - ldr r1, _080A54BC @ =sub_80A5584 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A54C0 @ =TranslateMonSpriteLinear - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A54B4: .4byte gBattleAnimAttacker -_080A54B8: .4byte gBattlerSpriteIds -_080A54BC: .4byte sub_80A5584 -_080A54C0: .4byte TranslateMonSpriteLinear - thumb_func_end sub_80A5474 - - thumb_func_start sub_80A54C4 -sub_80A54C4: @ 80A54C4 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _080A54DE - movs r0, 0 - strh r0, [r1, 0x2E] - ldr r0, _080A54E4 @ =sub_80A54E8 - str r0, [r1, 0x1C] -_080A54DE: - pop {r0} - bx r0 - .align 2, 0 -_080A54E4: .4byte sub_80A54E8 - thumb_func_end sub_80A54C4 - - thumb_func_start sub_80A54E8 -sub_80A54E8: @ 80A54E8 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080A5538 - ldr r1, _080A5524 @ =gBattlerSpriteIds - ldr r4, _080A5528 @ =gBattleAnimAttacker - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r5, 0x34] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x3A] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A552C - movs r0, 0xFC - lsls r0, 8 - strh r0, [r5, 0x36] - movs r0, 0xC0 - lsls r0, 4 - b _080A5536 - .align 2, 0 -_080A5524: .4byte gBattlerSpriteIds -_080A5528: .4byte gBattleAnimAttacker -_080A552C: - movs r0, 0x80 - lsls r0, 3 - strh r0, [r5, 0x36] - movs r0, 0xF4 - lsls r0, 8 -_080A5536: - strh r0, [r5, 0x38] -_080A5538: - ldrh r0, [r5, 0x36] - ldrh r1, [r5, 0x38] - adds r0, r1 - strh r0, [r5, 0x38] - ldrh r0, [r5, 0x34] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r5, 0x38] - adds r1, r2, 0 - bl SetSpriteRotScale - ldrh r0, [r5, 0x34] - lsls r0, 24 - lsrs r0, 24 - bl SetBattlerSpriteYOffsetFromRotation - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080A5578 - ldrh r0, [r5, 0x34] - lsls r0, 24 - lsrs r0, 24 - bl ResetSpriteRotScale - ldr r0, _080A5580 @ =sub_80A5584 - str r0, [r5, 0x1C] -_080A5578: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A5580: .4byte sub_80A5584 - thumb_func_end sub_80A54E8 - - thumb_func_start sub_80A5584 -sub_80A5584: @ 80A5584 - push {lr} - bl DestroyAnimSprite - pop {r0} - bx r0 - thumb_func_end sub_80A5584 - - thumb_func_start sub_80A5590 -sub_80A5590: @ 80A5590 - movs r1, 0 - strh r1, [r0, 0x2E] - ldr r1, _080A559C @ =sub_80A55A0 - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_080A559C: .4byte sub_80A55A0 - thumb_func_end sub_80A5590 - - thumb_func_start sub_80A55A0 -sub_80A55A0: @ 80A55A0 - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x2E - ldrsh r5, [r4, r0] - cmp r5, 0x1 - beq _080A55FA - cmp r5, 0x1 - bgt _080A55B6 - cmp r5, 0 - beq _080A55BC - b _080A568E -_080A55B6: - cmp r5, 0x2 - beq _080A564C - b _080A568E -_080A55BC: - strh r5, [r4, 0x30] - ldr r1, _080A5640 @ =gBattlerSpriteIds - ldr r2, _080A5644 @ =gBattleAnimAttacker - ldrb r0, [r2] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r4, 0x32] - ldrb r0, [r2] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x34] - ldr r2, _080A5648 @ =0xfffffe00 - adds r1, r2, 0 - cmp r0, 0 - beq _080A55E4 - movs r0, 0x80 - lsls r0, 2 - adds r1, r0, 0 -_080A55E4: - strh r1, [r4, 0x36] - strh r5, [r4, 0x38] - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl PrepareBattlerSpriteForRotScale - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] -_080A55FA: - ldrh r0, [r4, 0x36] - ldrh r1, [r4, 0x38] - adds r0, r1 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r4, 0x38] - adds r1, r2, 0 - bl SetSpriteRotScale - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - bl SetBattlerSpriteYOffsetFromRotation - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080A568E - movs r0, 0 - strh r0, [r4, 0x30] - movs r2, 0x36 - ldrsh r0, [r4, r2] - negs r0, r0 - strh r0, [r4, 0x36] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080A568E - .align 2, 0 -_080A5640: .4byte gBattlerSpriteIds -_080A5644: .4byte gBattleAnimAttacker -_080A5648: .4byte 0xfffffe00 -_080A564C: - ldrh r0, [r4, 0x36] - ldrh r1, [r4, 0x38] - adds r0, r1 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r4, 0x38] - adds r1, r2, 0 - bl SetSpriteRotScale - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - bl SetBattlerSpriteYOffsetFromRotation - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080A568E - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - bl ResetSpriteRotScale - adds r0, r4, 0 - bl DestroyAnimSprite -_080A568E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A55A0 - - thumb_func_start sub_80A5694 -sub_80A5694: @ 80A5694 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080A56D8 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - ldr r1, _080A56DC @ =gBattlerSpriteIds - ldr r2, _080A56E0 @ =gBattleAnimAttacker - ldrb r0, [r2] - adds r0, r1 - ldrb r0, [r0] - movs r4, 0 - strh r0, [r5, 0x8] - ldrb r0, [r2] - bl GetBattlerSide - lsls r0, 24 - lsrs r2, r0, 24 - strh r2, [r5, 0xA] - strh r4, [r5, 0xC] - ldr r0, _080A56E4 @ =gBattleAnimArgs - movs r3, 0 - ldrsh r1, [r0, r3] - cmp r1, 0 - beq _080A56E8 - cmp r1, 0x1 - beq _080A5704 - adds r0, r6, 0 - bl DestroyAnimVisualTask - b _080A5722 - .align 2, 0 -_080A56D8: .4byte gTasks -_080A56DC: .4byte gBattlerSpriteIds -_080A56E0: .4byte gBattleAnimAttacker -_080A56E4: .4byte gBattleAnimArgs -_080A56E8: - strh r1, [r5, 0xC] - movs r0, 0x8 - strh r0, [r5, 0xE] - strh r1, [r5, 0x10] - movs r0, 0x3 - strh r0, [r5, 0x12] - cmp r2, 0 - bne _080A56FC - negs r0, r0 - strh r0, [r5, 0x12] -_080A56FC: - ldr r0, _080A5700 @ =sub_80A572C - b _080A5720 - .align 2, 0 -_080A5700: .4byte sub_80A572C -_080A5704: - movs r0, 0x8 - strh r0, [r5, 0xE] - movs r0, 0xC0 - lsls r0, 3 - strh r0, [r5, 0x10] - movs r1, 0xC0 - strh r1, [r5, 0x12] - cmp r2, 0 - bne _080A571E - negs r0, r0 - strh r0, [r5, 0x10] - negs r0, r1 - strh r0, [r5, 0x12] -_080A571E: - ldr r0, _080A5728 @ =sub_80A58EC -_080A5720: - str r0, [r5] -_080A5722: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A5728: .4byte sub_80A58EC - thumb_func_end sub_80A5694 - - thumb_func_start sub_80A572C -sub_80A572C: @ 80A572C - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080A5750 @ =gTasks - adds r4, r0, r1 - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bls _080A5746 - b _080A58E6 -_080A5746: - lsls r0, 2 - ldr r1, _080A5754 @ =_080A5758 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080A5750: .4byte gTasks -_080A5754: .4byte _080A5758 - .align 2, 0 -_080A5758: - .4byte _080A576C - .4byte _080A579E - .4byte _080A57F8 - .4byte _080A5870 - .4byte _080A58B4 -_080A576C: - movs r2, 0xE - ldrsh r1, [r4, r2] - cmp r1, 0 - beq _080A577C - ldrh r2, [r4, 0x12] - ldrh r3, [r4, 0x10] - adds r2, r3 - b _080A58C2 -_080A577C: - movs r0, 0x8 - strh r0, [r4, 0xE] - strh r1, [r4, 0x10] - movs r1, 0xA - ldrsh r0, [r4, r1] - movs r1, 0xC0 - cmp r0, 0 - bne _080A5792 - movs r2, 0xC0 - negs r2, r2 - adds r1, r2, 0 -_080A5792: - strh r1, [r4, 0x12] - ldrb r0, [r4, 0x8] - movs r1, 0 - bl PrepareBattlerSpriteForRotScale - b _080A58A8 -_080A579E: - movs r3, 0xE - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _080A57C4 - ldrh r0, [r4, 0x12] - ldrh r1, [r4, 0x10] - adds r0, r1 - strh r0, [r4, 0x10] - ldrb r0, [r4, 0x8] - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r4, 0x10] - adds r1, r2, 0 - bl SetSpriteRotScale - ldrb r0, [r4, 0x8] - bl SetBattlerSpriteYOffsetFromRotation - b _080A58D4 -_080A57C4: - movs r0, 0x8 - strh r0, [r4, 0xE] - ldr r2, _080A57F4 @ =gSprites - movs r3, 0x8 - ldrsh r1, [r4, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x24] - strh r0, [r4, 0x10] - movs r1, 0xA - ldrsh r0, [r4, r1] - movs r2, 0x2 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0 - bne _080A57EA - movs r1, 0x2 -_080A57EA: - strh r1, [r4, 0x12] - movs r0, 0x1 - strh r0, [r4, 0x14] - b _080A58A8 - .align 2, 0 -_080A57F4: .4byte gSprites -_080A57F8: - ldrh r2, [r4, 0xE] - movs r3, 0xE - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _080A5854 - ldrh r1, [r4, 0x14] - movs r3, 0x14 - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _080A5812 - subs r0, r1, 0x1 - strh r0, [r4, 0x14] - b _080A58E6 -_080A5812: - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - beq _080A5834 - ldr r2, _080A5830 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0x12] - ldrh r2, [r4, 0x10] - adds r1, r2 - b _080A5848 - .align 2, 0 -_080A5830: .4byte gSprites -_080A5834: - ldr r2, _080A5850 @ =gSprites - movs r3, 0x8 - ldrsh r1, [r4, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0x10] - ldrh r2, [r4, 0x12] - subs r1, r2 -_080A5848: - strh r1, [r0, 0x24] - movs r0, 0x1 - strh r0, [r4, 0x14] - b _080A58D4 - .align 2, 0 -_080A5850: .4byte gSprites -_080A5854: - ldr r2, _080A586C @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0x10] - strh r1, [r0, 0x24] - movs r0, 0xC - strh r0, [r4, 0xE] - b _080A58A8 - .align 2, 0 -_080A586C: .4byte gSprites -_080A5870: - ldrh r1, [r4, 0xE] - movs r2, 0xE - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080A5880 - subs r0, r1, 0x1 - strh r0, [r4, 0xE] - b _080A58E6 -_080A5880: - movs r0, 0x3 - strh r0, [r4, 0xE] - ldr r2, _080A58B0 @ =gSprites - movs r3, 0x8 - ldrsh r1, [r4, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x24] - strh r0, [r4, 0x10] - movs r1, 0xA - ldrsh r0, [r4, r1] - movs r2, 0x8 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0 - bne _080A58A6 - movs r1, 0x8 -_080A58A6: - strh r1, [r4, 0x12] -_080A58A8: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - b _080A58E6 - .align 2, 0 -_080A58B0: .4byte gSprites -_080A58B4: - movs r3, 0xE - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _080A58E0 - ldrh r2, [r4, 0x12] - ldrh r0, [r4, 0x10] - adds r2, r0 -_080A58C2: - strh r2, [r4, 0x10] - ldr r3, _080A58DC @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - strh r2, [r0, 0x24] -_080A58D4: - ldrh r0, [r4, 0xE] - subs r0, 0x1 - strh r0, [r4, 0xE] - b _080A58E6 - .align 2, 0 -_080A58DC: .4byte gSprites -_080A58E0: - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080A58E6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A572C - - thumb_func_start sub_80A58EC -sub_80A58EC: @ 80A58EC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080A5928 @ =gTasks - adds r4, r0, r1 - movs r1, 0xE - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080A592C - ldrh r0, [r4, 0x10] - ldrh r1, [r4, 0x12] - subs r0, r1 - strh r0, [r4, 0x10] - ldrb r0, [r4, 0x8] - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r4, 0x10] - adds r1, r2, 0 - bl SetSpriteRotScale - ldrb r0, [r4, 0x8] - bl SetBattlerSpriteYOffsetFromRotation - ldrh r0, [r4, 0xE] - subs r0, 0x1 - strh r0, [r4, 0xE] - b _080A5938 - .align 2, 0 -_080A5928: .4byte gTasks -_080A592C: - ldrb r0, [r4, 0x8] - bl ResetSpriteRotScale - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080A5938: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A58EC - - thumb_func_start sub_80A5940 -sub_80A5940: @ 80A5940 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _080A5954 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080A595C - ldr r4, _080A5958 @ =gBattleAnimAttacker - b _080A595E - .align 2, 0 -_080A5954: .4byte gBattleAnimArgs -_080A5958: .4byte gBattleAnimAttacker -_080A595C: - ldr r4, _080A599C @ =gBattleAnimTarget -_080A595E: - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6, 0x2] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x4] - adds r0, r6 - strh r0, [r5, 0x22] - movs r0, 0 - strh r0, [r5, 0x2E] - strh r0, [r5, 0x30] - ldr r1, _080A59A0 @ =sub_80A5A8C - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A59A4 @ =RunStoredCallbackWhenAnimEnds - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A599C: .4byte gBattleAnimTarget -_080A59A0: .4byte sub_80A5A8C -_080A59A4: .4byte RunStoredCallbackWhenAnimEnds - thumb_func_end sub_80A5940 - - thumb_func_start sub_80A59A8 -sub_80A59A8: @ 80A59A8 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080A59E0 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080A59E4 @ =0x0000ffd0 - adds r0, r1 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - ldr r1, _080A59E8 @ =sub_80A5A44 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A59EC @ =RunStoredCallbackWhenAnimEnds - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A59E0: .4byte gBattleAnimTarget -_080A59E4: .4byte 0x0000ffd0 -_080A59E8: .4byte sub_80A5A44 -_080A59EC: .4byte RunStoredCallbackWhenAnimEnds - thumb_func_end sub_80A59A8 - - thumb_func_start sub_80A59F0 -sub_80A59F0: @ 80A59F0 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r5, _080A5A34 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080A5A38 @ =gBattleAnimArgs - ldr r2, _080A5A3C @ =0x0000ffd0 - adds r0, r2 - ldrh r1, [r1] - adds r0, r1 - movs r6, 0 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - strh r6, [r4, 0x2E] - strh r6, [r4, 0x30] - ldr r0, _080A5A40 @ =sub_80A5A8C - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A5A34: .4byte gBattleAnimTarget -_080A5A38: .4byte gBattleAnimArgs -_080A5A3C: .4byte 0x0000ffd0 -_080A5A40: .4byte sub_80A5A8C - thumb_func_end sub_80A59F0 - - thumb_func_start sub_80A5A44 -sub_80A5A44: @ 80A5A44 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _080A5A6E - movs r0, 0xC - strh r0, [r4, 0x2E] - movs r0, 0x8 - strh r0, [r4, 0x30] - movs r0, 0 - strh r0, [r4, 0x32] - ldr r1, _080A5A74 @ =sub_80A5A7C - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A5A78 @ =TranslateSpriteLinear - str r0, [r4, 0x1C] -_080A5A6E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A5A74: .4byte sub_80A5A7C -_080A5A78: .4byte TranslateSpriteLinear - thumb_func_end sub_80A5A44 - - thumb_func_start sub_80A5A7C -sub_80A5A7C: @ 80A5A7C - movs r1, 0 - strh r1, [r0, 0x2E] - strh r1, [r0, 0x30] - ldr r1, _080A5A88 @ =sub_80A5A8C - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_080A5A88: .4byte sub_80A5A8C - thumb_func_end sub_80A5A7C - - thumb_func_start sub_80A5A8C -sub_80A5A8C: @ 80A5A8C - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A5AD4 - movs r0, 0 - strh r0, [r3, 0x2E] - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - ldrb r2, [r0] - lsrs r1, r2, 2 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _080A5AD4 - adds r0, r3, 0 - bl DestroyAnimSprite -_080A5AD4: - pop {r0} - bx r0 - thumb_func_end sub_80A5A8C - - thumb_func_start sub_80A5AD8 -sub_80A5AD8: @ 80A5AD8 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _080A5AEC @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080A5AF4 - ldr r4, _080A5AF0 @ =gBattleAnimAttacker - b _080A5AF6 - .align 2, 0 -_080A5AEC: .4byte gBattleAnimArgs -_080A5AF0: .4byte gBattleAnimAttacker -_080A5AF4: - ldr r4, _080A5B30 @ =gBattleAnimTarget -_080A5AF6: - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6, 0x2] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x4] - adds r0, r6 - strh r0, [r5, 0x22] - movs r0, 0 - strh r0, [r5, 0x2E] - ldr r0, _080A5B34 @ =gBattleAnimArgs - ldrh r0, [r0, 0x6] - strh r0, [r5, 0x30] - ldr r0, _080A5B38 @ =sub_80A5B3C - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A5B30: .4byte gBattleAnimTarget -_080A5B34: .4byte gBattleAnimArgs -_080A5B38: .4byte sub_80A5B3C - thumb_func_end sub_80A5AD8 - - thumb_func_start sub_80A5B3C -sub_80A5B3C: @ 80A5B3C - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x30 - ldrsh r1, [r2, r3] - cmp r0, r1 - ble _080A5B5C - movs r0, 0 - strh r0, [r2, 0x2E] - ldrh r0, [r2, 0x22] - subs r0, 0x1 - strh r0, [r2, 0x22] -_080A5B5C: - ldrh r0, [r2, 0x22] - ldrh r1, [r2, 0x2E] - subs r0, r1 - strh r0, [r2, 0x22] - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080A5B78 - adds r0, r2, 0 - bl DestroyAnimSprite -_080A5B78: - pop {r0} - bx r0 - thumb_func_end sub_80A5B3C - - thumb_func_start sub_80A5B7C -sub_80A5B7C: @ 80A5B7C - push {r4-r6,lr} - adds r4, r0, 0 - ldr r6, _080A5BC4 @ =gBattleAnimAttacker - ldrb r0, [r6] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - movs r5, 0 - strh r0, [r4, 0x20] - ldrb r0, [r6] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - subs r0, 0xC - strh r0, [r4, 0x22] - strh r5, [r4, 0x2E] - movs r0, 0x2 - strh r0, [r4, 0x30] - strh r5, [r4, 0x32] - strh r5, [r4, 0x34] - strh r5, [r4, 0x36] - subs r0, 0x42 - bl BattleAnimAdjustPanning - lsls r0, 24 - asrs r0, 24 - strh r0, [r4, 0x38] - ldr r0, _080A5BC8 @ =sub_80A5BCC - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A5BC4: .4byte gBattleAnimAttacker -_080A5BC8: .4byte sub_80A5BCC - thumb_func_end sub_80A5B7C - - thumb_func_start sub_80A5BCC -sub_80A5BCC: @ 80A5BCC - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x30 - ldrsh r1, [r4, r2] - cmp r0, r1 - blt _080A5C38 - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsrs r1, r2, 2 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - movs r1, 0x4 - ands r0, r1 - cmp r0, 0 - bne _080A5C1E - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080A5C1E - ldrh r1, [r4, 0x38] - lsls r1, 24 - asrs r1, 24 - movs r0, 0xBB - bl PlaySE12WithPanning -_080A5C1E: - movs r1, 0 - strh r1, [r4, 0x2E] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A5C38 - strh r1, [r4, 0x32] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] -_080A5C38: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080A5C62 - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x10 - ble _080A5C62 - adds r0, r4, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080A5C62 - adds r0, r4, 0 - bl DestroyAnimSprite -_080A5C62: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A5BCC - - thumb_func_start sub_80A5C68 -sub_80A5C68: @ 80A5C68 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x2E - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080A5CB2 - ldr r4, _080A5CC8 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r5, _080A5CCC @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r5] - adds r0, r1 - strh r0, [r6, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r5, [r5, 0x2] - adds r0, r5 - strh r0, [r6, 0x22] - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A5CAC - ldrh r0, [r6, 0x22] - adds r0, 0xA - strh r0, [r6, 0x22] -_080A5CAC: - ldrh r0, [r6, 0x2E] - adds r0, 0x1 - strh r0, [r6, 0x2E] -_080A5CB2: - ldr r0, _080A5CCC @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080A5CD0 @ =0x0000ffff - cmp r1, r0 - bne _080A5CC2 - adds r0, r6, 0 - bl DestroyAnimSprite -_080A5CC2: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A5CC8: .4byte gBattleAnimAttacker -_080A5CCC: .4byte gBattleAnimArgs -_080A5CD0: .4byte 0x0000ffff - thumb_func_end sub_80A5C68 - - thumb_func_start sub_80A5CD4 -sub_80A5CD4: @ 80A5CD4 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080A5CF4 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _080A5D00 - ldr r1, _080A5CF8 @ =gBattleAnimArgs - ldr r0, _080A5CFC @ =0x0000ffff - strh r0, [r1, 0xE] - b _080A5D3E - .align 2, 0 -_080A5CF4: .4byte gTasks -_080A5CF8: .4byte gBattleAnimArgs -_080A5CFC: .4byte 0x0000ffff -_080A5D00: - cmp r0, 0x2 - bne _080A5D0C - adds r0, r2, 0 - bl DestroyAnimVisualTask - b _080A5D44 -_080A5D0C: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080A5D44 - movs r0, 0 - strh r0, [r4, 0x8] - ldrh r2, [r4, 0xA] - adds r2, 0x1 - strh r2, [r4, 0xA] - lsls r1, r2, 8 - movs r0, 0x10 - subs r0, r2 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _080A5D44 -_080A5D3E: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] -_080A5D44: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A5CD4 - - thumb_func_start sub_80A5D4C -sub_80A5D4C: @ 80A5D4C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl InitSpritePosToAnimTarget - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080A5D74 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x2E] - ldr r0, _080A5D78 @ =sub_80A5D7C - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A5D74: .4byte gBattleAnimArgs -_080A5D78: .4byte sub_80A5D7C - thumb_func_end sub_80A5D4C - - thumb_func_start sub_80A5D7C -sub_80A5D7C: @ 80A5D7C - push {r4,r5,lr} - adds r5, r0, 0 - ldrh r1, [r5, 0x2E] - movs r2, 0x2E - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _080A5D90 - subs r0, r1, 0x1 - strh r0, [r5, 0x2E] - b _080A5DCC -_080A5D90: - adds r2, r5, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - movs r0, 0x1E - strh r0, [r5, 0x2E] - ldr r4, _080A5DD4 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - ldr r0, _080A5DD8 @ =StartAnimLinearTranslation - str r0, [r5, 0x1C] - ldr r1, _080A5DDC @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 -_080A5DCC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A5DD4: .4byte gBattleAnimAttacker -_080A5DD8: .4byte StartAnimLinearTranslation -_080A5DDC: .4byte DestroyAnimSprite - thumb_func_end sub_80A5D7C - - thumb_func_start sub_80A5DE0 -sub_80A5DE0: @ 80A5DE0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080A5E30 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080A5E28 - movs r0, 0 - strh r0, [r4, 0x8] - ldrh r1, [r4, 0xA] - adds r1, 0x1 - strh r1, [r4, 0xA] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _080A5E28 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080A5E28: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A5E30: .4byte gTasks - thumb_func_end sub_80A5DE0 - - thumb_func_start sub_80A5E34 -sub_80A5E34: @ 80A5E34 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - movs r4, 0 - ldr r0, _080A5E9C @ =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - bcs _080A5E90 - ldr r6, _080A5EA0 @ =gBattleAnimArgs - ldr r5, _080A5EA4 @ =gHealthboxSpriteIds -_080A5E48: - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0x1 - bne _080A5E64 - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A5E64 - adds r0, r4, r5 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible -_080A5E64: - movs r1, 0x2 - ldrsh r0, [r6, r1] - cmp r0, 0x1 - bne _080A5E82 - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A5E82 - adds r0, r4, r5 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible -_080A5E82: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080A5E9C @ =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - bcc _080A5E48 -_080A5E90: - adds r0, r7, 0 - bl DestroyAnimVisualTask - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A5E9C: .4byte gBattlersCount -_080A5EA0: .4byte gBattleAnimArgs -_080A5EA4: .4byte gHealthboxSpriteIds - thumb_func_end sub_80A5E34 - - thumb_func_start sub_80A5EA8 -sub_80A5EA8: @ 80A5EA8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - b _080A5EC2 -_080A5EB2: - ldr r0, _080A5ED8 @ =gHealthboxSpriteIds - adds r0, r4, r0 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_080A5EC2: - ldr r0, _080A5EDC @ =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - bcc _080A5EB2 - adds r0, r5, 0 - bl DestroyAnimVisualTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A5ED8: .4byte gHealthboxSpriteIds -_080A5EDC: .4byte gBattlersCount - thumb_func_end sub_80A5EA8 - - thumb_func_start sub_80A5EE0 -sub_80A5EE0: @ 80A5EE0 - push {r4,lr} - adds r4, r0, 0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A5EF6 - movs r0, 0x30 - strh r0, [r4, 0x20] - movs r0, 0x28 - b _080A5EFE -_080A5EF6: - ldr r0, _080A5F20 @ =gBattleAnimArgs - ldrh r1, [r0] - strh r1, [r4, 0x20] - ldrh r0, [r0, 0x2] -_080A5EFE: - strh r0, [r4, 0x22] - ldrb r1, [r4, 0x1] - movs r0, 0x3F - ands r0, r1 - strb r0, [r4, 0x1] - ldrb r0, [r4, 0x3] - movs r1, 0xC0 - orrs r0, r1 - strb r0, [r4, 0x3] - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r0, _080A5F24 @ =sub_80A5F28 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A5F20: .4byte gBattleAnimArgs -_080A5F24: .4byte sub_80A5F28 - thumb_func_end sub_80A5EE0 - - thumb_func_start sub_80A5F28 -sub_80A5F28: @ 80A5F28 - push {lr} - adds r1, r0, 0 - movs r2, 0x2E - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _080A5F3A - adds r0, r1, 0 - bl DestroyAnimSprite -_080A5F3A: - pop {r0} - bx r0 - thumb_func_end sub_80A5F28 - - thumb_func_start sub_80A5F40 -sub_80A5F40: @ 80A5F40 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080A5F78 @ =gBattleAnimAttacker - ldrb r0, [r0] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r2, _080A5F7C @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r2] - adds r0, r1 - movs r1, 0 - strh r0, [r4, 0x20] - ldrh r0, [r2, 0x2] - strh r0, [r4, 0x22] - strh r1, [r4, 0x2E] - strh r1, [r4, 0x30] - strh r1, [r4, 0x32] - strh r1, [r4, 0x34] - movs r0, 0x1 - strh r0, [r4, 0x36] - ldr r0, _080A5F80 @ =sub_80A5F84 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A5F78: .4byte gBattleAnimAttacker -_080A5F7C: .4byte gBattleAnimArgs -_080A5F80: .4byte sub_80A5F84 - thumb_func_end sub_80A5F40 - - thumb_func_start sub_80A5F84 -sub_80A5F84: @ 80A5F84 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x30] - adds r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A5FAE - movs r0, 0 - strh r0, [r1, 0x30] - ldrh r2, [r1, 0x32] - movs r3, 0x32 - ldrsh r0, [r1, r3] - cmp r0, 0x77 - bgt _080A5FAE - ldrh r0, [r1, 0x22] - adds r0, 0x1 - strh r0, [r1, 0x22] - adds r0, r2, 0x1 - strh r0, [r1, 0x32] -_080A5FAE: - movs r2, 0x2E - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _080A5FBC - adds r0, r1, 0 - bl DestroyAnimSprite -_080A5FBC: - pop {r0} - bx r0 - thumb_func_end sub_80A5F84 - - thumb_func_start sub_80A5FC0 -sub_80A5FC0: @ 80A5FC0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r0, 24 - lsrs r7, r0, 24 - movs r4, 0 - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_8075BE8 - mov r8, r0 - ldr r0, _080A6090 @ =0x0000ffff - mov r1, r8 - ands r1, r0 - mov r8, r1 - ldr r0, _080A6094 @ =gTasks - mov r9, r0 - lsls r5, r7, 2 - adds r5, r7 - lsls r5, 3 - adds r6, r5, r0 - strh r4, [r6, 0x8] - strh r4, [r6, 0xA] - strh r4, [r6, 0xC] - strh r1, [r6, 0xE] - strh r4, [r6, 0x10] - strh r4, [r6, 0x12] - strh r4, [r6, 0x14] - movs r0, 0xD - strh r0, [r6, 0x16] - movs r0, 0xE - strh r0, [r6, 0x18] - movs r0, 0xF - strh r0, [r6, 0x1A] - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0x1 - movs r3, 0x1 - bl sub_8075CB8 - mov r10, r0 - mov r1, r8 - orrs r1, r0 - mov r8, r1 - movs r0, 0x8 - add r9, r0 - add r5, r9 - adds r0, r5, 0 - adds r0, 0x1C - adds r5, 0x1E - adds r1, r5, 0 - mov r2, r8 - bl StorePointerInVars - ldr r0, _080A6098 @ =0x000027d2 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - movs r4, 0x80 - lsls r4, 9 - adds r1, r4, 0 - lsls r1, r0 - mov r0, r10 - orrs r0, r1 - mov r10, r0 - ldr r0, _080A609C @ =0x000027d3 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0 - mov r1, r10 - orrs r4, r1 - ldr r0, _080A60A0 @ =0x00007fbb - str r0, [sp] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _080A60A4 @ =sub_80A60A8 - str r1, [r6] - adds r0, r7, 0 - bl _call_via_r1 - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A6090: .4byte 0x0000ffff -_080A6094: .4byte gTasks -_080A6098: .4byte 0x000027d2 -_080A609C: .4byte 0x000027d3 -_080A60A0: .4byte 0x00007fbb -_080A60A4: .4byte sub_80A60A8 - thumb_func_end sub_80A5FC0 - - thumb_func_start sub_80A60A8 -sub_80A60A8: @ 80A60A8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080A60D0 @ =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r1, [r4, r0] - cmp r1, 0x1 - beq _080A6194 - cmp r1, 0x1 - bgt _080A60D4 - cmp r1, 0 - beq _080A60E2 - b _080A6232 - .align 2, 0 -_080A60D0: .4byte gTasks -_080A60D4: - cmp r1, 0x2 - bne _080A60DA - b _080A61EC -_080A60DA: - cmp r1, 0x3 - bne _080A60E0 - b _080A6220 -_080A60E0: - b _080A6232 -_080A60E2: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - cmp r0, 0 - bgt _080A60F0 - b _080A6232 -_080A60F0: - strh r1, [r4, 0xA] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - bgt _080A613C - ldrh r0, [r4, 0x16] - ldrh r1, [r4, 0x10] - adds r0, r1 - strh r0, [r4, 0x10] - ldrh r2, [r4, 0x18] - ldrh r3, [r4, 0x12] - adds r2, r3 - strh r2, [r4, 0x12] - ldrh r1, [r4, 0x1A] - ldrh r5, [r4, 0x14] - adds r1, r5 - strh r1, [r4, 0x14] - lsls r0, 16 - asrs r0, 19 - lsls r0, 16 - lsrs r0, 16 - lsls r2, 16 - asrs r2, 19 - lsls r2, 16 - lsls r1, 16 - asrs r1, 19 - lsls r1, 16 - lsrs r2, 11 - orrs r0, r2 - lsrs r1, 6 - orrs r0, r1 - lsls r0, 16 - lsrs r0, 16 - mov r12, r0 - b _080A6146 -_080A613C: - ldr r7, _080A618C @ =0x00007fbb - mov r12, r7 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_080A6146: - movs r2, 0x1 - movs r3, 0 - movs r1, 0 -_080A614C: - movs r5, 0xE - ldrsh r0, [r4, r5] - ands r0, r2 - lsls r5, r2, 17 - adds r6, r3, 0 - adds r6, 0x10 - adds r1, 0x1 - mov r8, r1 - cmp r0, 0 - beq _080A6178 - movs r1, 0x1 - ldr r2, _080A6190 @ =gPlttBufferFaded -_080A6164: - adds r0, r3, r1 - lsls r0, 1 - adds r0, r2 - mov r7, r12 - strh r7, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0xF - bls _080A6164 -_080A6178: - lsrs r2, r5, 16 - lsls r0, r6, 16 - lsrs r3, r0, 16 - mov r1, r8 - lsls r0, r1, 16 - lsrs r1, r0, 16 - cmp r1, 0xF - bls _080A614C - b _080A6232 - .align 2, 0 -_080A618C: .4byte 0x00007fbb -_080A6190: .4byte gPlttBufferFaded -_080A6194: - ldr r0, _080A61DC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080A6232 - movs r2, 0 - ldr r3, _080A61E0 @ =gSprites - movs r5, 0x14 - adds r5, r3 - mov r12, r5 - ldr r7, _080A61E4 @ =gUnknown_83E3734 - mov r8, r7 - ldr r6, _080A61E8 @ =gUnknown_83E3764 - movs r5, 0x1 -_080A61B2: - lsls r0, r2, 4 - adds r0, r2 - lsls r1, r0, 2 - mov r7, r12 - adds r0, r1, r7 - ldr r0, [r0] - cmp r0, r8 - beq _080A61C6 - cmp r0, r6 - bne _080A61CA -_080A61C6: - adds r0, r1, r3 - strh r5, [r0, 0x2E] -_080A61CA: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3F - bls _080A61B2 - movs r0, 0 - strh r0, [r4, 0xA] - b _080A6214 - .align 2, 0 -_080A61DC: .4byte gPaletteFade -_080A61E0: .4byte gSprites -_080A61E4: .4byte gUnknown_83E3734 -_080A61E8: .4byte gUnknown_83E3764 -_080A61EC: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1E - ble _080A6232 - movs r1, 0x24 - ldrsh r0, [r4, r1] - movs r2, 0x26 - ldrsh r1, [r4, r2] - bl LoadPointerFromVars - ldr r1, _080A621C @ =0x00007fbb - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_080A6214: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080A6232 - .align 2, 0 -_080A621C: .4byte 0x00007fbb -_080A6220: - ldr r0, _080A6240 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080A6232 - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080A6232: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A6240: .4byte gPaletteFade - thumb_func_end sub_80A60A8 - - thumb_func_start sub_80A6244 -sub_80A6244: @ 80A6244 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _080A62C8 @ =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r6, r1] - cmp r0, 0x1 - bgt _080A6256 - movs r0, 0x2 - strh r0, [r6, 0x4] -_080A6256: - movs r1, 0x4 - ldrsh r0, [r6, r1] - cmp r0, 0x7F - ble _080A6262 - movs r0, 0x7F - strh r0, [r6, 0x4] -_080A6262: - movs r0, 0 - strh r0, [r5, 0x2E] - ldrh r0, [r6, 0x4] - strh r0, [r5, 0x30] - ldr r4, _080A62CC @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x2] - adds r0, r6 - strh r0, [r5, 0x22] - ldrh r1, [r5, 0x20] - strh r1, [r5, 0x3A] - strh r0, [r5, 0x3C] - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A62D4 - ldrb r1, [r5, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x10 - orrs r0, r1 - strb r0, [r5, 0x3] - ldrh r0, [r5, 0x20] - adds r0, 0x28 - strh r0, [r5, 0x20] - ldrh r4, [r5, 0x22] - adds r4, 0x14 - strh r4, [r5, 0x22] - lsls r0, 7 - strh r0, [r5, 0x32] - movs r0, 0x30 - ldrsh r1, [r5, r0] - ldr r0, _080A62D0 @ =0xffffec00 - b _080A62FA - .align 2, 0 -_080A62C8: .4byte gBattleAnimArgs -_080A62CC: .4byte gBattleAnimTarget -_080A62D0: .4byte 0xffffec00 -_080A62D4: - ldr r0, _080A6314 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A631C - ldrh r0, [r5, 0x20] - subs r0, 0x28 - strh r0, [r5, 0x20] - ldrh r4, [r5, 0x22] - adds r4, 0x14 - strh r4, [r5, 0x22] - lsls r0, 7 - strh r0, [r5, 0x32] - movs r0, 0x30 - ldrsh r1, [r5, r0] - movs r0, 0xA0 - lsls r0, 5 -_080A62FA: - bl __divsi3 - strh r0, [r5, 0x34] - lsls r4, 7 - strh r4, [r5, 0x36] - movs r0, 0x30 - ldrsh r1, [r5, r0] - ldr r0, _080A6318 @ =0xfffff600 - bl __divsi3 - strh r0, [r5, 0x38] - b _080A6358 - .align 2, 0 -_080A6314: .4byte gBattleAnimAttacker -_080A6318: .4byte 0xfffff600 -_080A631C: - ldrh r0, [r5, 0x20] - adds r0, 0x28 - strh r0, [r5, 0x20] - ldrh r4, [r5, 0x22] - subs r4, 0x14 - strh r4, [r5, 0x22] - lsls r0, 7 - strh r0, [r5, 0x32] - movs r0, 0x30 - ldrsh r1, [r5, r0] - ldr r0, _080A6364 @ =0xffffec00 - bl __divsi3 - strh r0, [r5, 0x34] - lsls r4, 7 - strh r4, [r5, 0x36] - movs r0, 0x30 - ldrsh r1, [r5, r0] - movs r0, 0xA0 - lsls r0, 4 - bl __divsi3 - strh r0, [r5, 0x38] - ldrb r1, [r5, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x30 - orrs r0, r1 - strb r0, [r5, 0x3] -_080A6358: - ldr r0, _080A6368 @ =sub_80A636C - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A6364: .4byte 0xffffec00 -_080A6368: .4byte sub_80A636C - thumb_func_end sub_80A6244 - - thumb_func_start sub_80A636C -sub_80A636C: @ 80A636C - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x34] - ldrh r1, [r2, 0x32] - adds r0, r1 - strh r0, [r2, 0x32] - ldrh r1, [r2, 0x38] - ldrh r3, [r2, 0x36] - adds r1, r3 - strh r1, [r2, 0x36] - lsls r0, 16 - asrs r0, 23 - strh r0, [r2, 0x20] - lsls r1, 16 - asrs r1, 23 - strh r1, [r2, 0x22] - ldrh r0, [r2, 0x30] - subs r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080A63A2 - ldrh r0, [r2, 0x3A] - strh r0, [r2, 0x20] - ldrh r0, [r2, 0x3C] - strh r0, [r2, 0x22] -_080A63A2: - movs r1, 0x30 - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _080A63B0 - adds r0, r2, 0 - bl DestroyAnimSprite -_080A63B0: - pop {r0} - bx r0 - thumb_func_end sub_80A636C - - thumb_func_start sub_80A63B4 -sub_80A63B4: @ 80A63B4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r0, 2 - add r0, r8 - lsls r0, 3 - ldr r1, _080A6444 @ =gTasks - adds r6, r0, r1 - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x8] - ldr r0, _080A6448 @ =0x00002771 - bl AllocSpritePalette - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0xA] - movs r1, 0xA - ldrsh r0, [r6, r1] - lsls r0, 20 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r3, r0, 16 - ldr r2, _080A644C @ =gSprites - movs r0, 0x8 - ldrsh r1, [r6, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x5] - lsrs r0, 4 - adds r0, 0x10 - lsls r4, r0, 4 - movs r5, 0x1 - ldr r2, _080A6450 @ =gPlttBufferUnfaded -_080A640C: - adds r1, r3, r5 - lsls r1, 1 - adds r1, r2 - adds r0, r4, r5 - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0xF - bls _080A640C - adds r0, r3, 0 - movs r1, 0x10 - movs r2, 0xB - movs r3, 0 - bl BlendPalette - movs r0, 0 - strh r0, [r6, 0xE] - movs r5, 0 - ldr r7, _080A644C @ =gSprites - movs r1, 0x1C - adds r1, r7 - mov r9, r1 - b _080A6488 - .align 2, 0 -_080A6444: .4byte gTasks -_080A6448: .4byte 0x00002771 -_080A644C: .4byte gSprites -_080A6450: .4byte gPlttBufferUnfaded -_080A6454: - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r4, r2, r7 - ldrb r1, [r6, 0xA] - lsls r1, 4 - ldrb r3, [r4, 0x5] - movs r0, 0xF - ands r0, r3 - orrs r0, r1 - strb r0, [r4, 0x5] - movs r0, 0 - strh r0, [r4, 0x2E] - lsls r0, r5, 7 - strh r0, [r4, 0x30] - mov r0, r8 - strh r0, [r4, 0x32] - add r2, r9 - ldr r0, _080A64BC @ =sub_80A653C - str r0, [r2] - ldrh r0, [r6, 0xE] - adds r0, 0x1 - strh r0, [r6, 0xE] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 -_080A6488: - cmp r5, 0x1 - bhi _080A649A - movs r0, 0 - bl CloneBattlerSpriteWithBlend - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080A6454 -_080A649A: - ldr r0, _080A64C0 @ =sub_80A64E0 - str r0, [r6] - ldr r0, _080A64C4 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSpriteBGPriorityRank - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A64C8 - movs r1, 0x80 - lsls r1, 2 - movs r0, 0 - bl ClearGpuRegBits - b _080A64D2 - .align 2, 0 -_080A64BC: .4byte sub_80A653C -_080A64C0: .4byte sub_80A64E0 -_080A64C4: .4byte gBattleAnimAttacker -_080A64C8: - movs r1, 0x80 - lsls r1, 3 - movs r0, 0 - bl ClearGpuRegBits -_080A64D2: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80A63B4 - - thumb_func_start sub_80A64E0 -sub_80A64E0: @ 80A64E0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080A6514 @ =gTasks - adds r0, r1 - movs r1, 0xE - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A6532 - ldr r0, _080A6518 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSpriteBGPriorityRank - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A651C - movs r1, 0x80 - lsls r1, 2 - movs r0, 0 - bl SetGpuRegBits - b _080A6526 - .align 2, 0 -_080A6514: .4byte gTasks -_080A6518: .4byte gBattleAnimAttacker -_080A651C: - movs r1, 0x80 - lsls r1, 3 - movs r0, 0 - bl SetGpuRegBits -_080A6526: - ldr r0, _080A6538 @ =0x00002771 - bl FreeSpritePaletteByTag - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080A6532: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A6538: .4byte 0x00002771 - thumb_func_end sub_80A64E0 - - thumb_func_start sub_80A653C -sub_80A653C: @ 80A653C - push {r4,r5,lr} - adds r5, r0, 0 - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A6558 - movs r0, 0 - strh r0, [r5, 0x34] - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] -_080A6558: - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0x40 - ble _080A6580 - ldr r2, _080A657C @ =gTasks - movs r0, 0x32 - ldrsh r1, [r5, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrh r1, [r0, 0xE] - subs r1, 0x1 - strh r1, [r0, 0xE] - adds r0, r5, 0 - bl obj_delete_but_dont_free_vram - b _080A65C2 - .align 2, 0 -_080A657C: .4byte gTasks -_080A6580: - ldr r4, _080A65C8 @ =gSineTable - movs r1, 0x2E - ldrsh r0, [r5, r1] - lsls r0, 1 - adds r0, r4 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r1, 0x6 - bl __divsi3 - strh r0, [r5, 0x36] - movs r1, 0x2E - ldrsh r0, [r5, r1] - lsls r0, 1 - adds r0, r4 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r1, 0xD - bl __divsi3 - strh r0, [r5, 0x38] - ldrh r1, [r5, 0x30] - adds r1, r0 - movs r0, 0xFF - ands r1, r0 - strh r1, [r5, 0x30] - movs r1, 0x30 - ldrsh r0, [r5, r1] - movs r2, 0x36 - ldrsh r1, [r5, r2] - bl Sin - strh r0, [r5, 0x24] -_080A65C2: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A65C8: .4byte gSineTable - thumb_func_end sub_80A653C - - thumb_func_start sub_80A65CC -sub_80A65CC: @ 80A65CC - push {r4,lr} - adds r4, r0, 0 - ldr r1, _080A65E0 @ =DestroyAnimSprite - bl StoreSpriteCallbackInData6 - ldr r0, _080A65E4 @ =RunStoredCallbackWhenAnimEnds - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A65E0: .4byte DestroyAnimSprite -_080A65E4: .4byte RunStoredCallbackWhenAnimEnds - thumb_func_end sub_80A65CC - - thumb_func_start sub_80A65E8 -sub_80A65E8: @ 80A65E8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r4, _080A6698 @ =gUnknown_83E3898 - ldrh r0, [r4] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0xFF - beq _080A662C - lsls r0, r3, 20 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r3, r0, 16 - movs r2, 0x1 - ldr r5, _080A669C @ =gPlttBufferFaded -_080A6614: - adds r1, r3, r2 - lsls r1, 1 - adds r1, r5 - lsls r0, r2, 1 - adds r0, r4 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x5 - bls _080A6614 -_080A662C: - movs r4, 0x1 - ldr r0, _080A6698 @ =gUnknown_83E3898 - mov r8, r0 -_080A6632: - lsls r0, r4, 1 - adds r0, r4 - lsls r5, r0, 2 - mov r1, r8 - adds r0, r5, r1 - ldrh r0, [r0] - bl AllocSpritePalette - lsls r0, 24 - lsrs r3, r0, 24 - adds r4, 0x1 - mov r12, r4 - cmp r3, 0xFF - beq _080A667A - lsls r0, r3, 20 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r3, r0, 16 - movs r2, 0x1 - ldr r7, _080A669C @ =gPlttBufferFaded - ldr r6, _080A6698 @ =gUnknown_83E3898 - adds r4, r5, 0 -_080A6660: - adds r1, r3, r2 - lsls r1, 1 - adds r1, r7 - lsls r0, r2, 1 - adds r0, r4 - adds r0, r6 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x5 - bls _080A6660 -_080A667A: - mov r1, r12 - lsls r0, r1, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _080A6632 - mov r0, r9 - bl DestroyAnimVisualTask - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A6698: .4byte gUnknown_83E3898 -_080A669C: .4byte gPlttBufferFaded - thumb_func_end sub_80A65E8 - - thumb_func_start sub_80A66A0 -sub_80A66A0: @ 80A66A0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0x1 - ldr r6, _080A66D0 @ =gUnknown_83E3898 -_080A66AA: - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r0, r6 - ldrh r0, [r0] - bl FreeSpritePaletteByTag - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _080A66AA - adds r0, r5, 0 - bl DestroyAnimVisualTask - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A66D0: .4byte gUnknown_83E3898 - thumb_func_end sub_80A66A0 - - thumb_func_start sub_80A66D4 -sub_80A66D4: @ 80A66D4 - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r0, 0 - bl SetSpriteCoordsToAnimAttackerCoords - ldr r4, _080A672C @ =gBattleAnimArgs - ldrb r1, [r4] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r2, _080A6730 @ =gUnknown_83E3898 - movs r0, 0x2 - ldrsh r1, [r4, r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _080A6710 - lsls r2, r0, 4 - ldrb r1, [r5, 0x5] - movs r0, 0xF - ands r0, r1 - orrs r0, r2 - strb r0, [r5, 0x5] -_080A6710: - ldrh r0, [r4, 0x2] - movs r1, 0 - strh r0, [r5, 0x30] - strh r1, [r5, 0x32] - ldrh r0, [r4, 0x4] - strh r0, [r5, 0x34] - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A6734 - movs r6, 0x30 - movs r3, 0x28 - b _080A674E - .align 2, 0 -_080A672C: .4byte gBattleAnimArgs -_080A6730: .4byte gUnknown_83E3898 -_080A6734: - ldr r4, _080A6784 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r3, r0, 24 -_080A674E: - ldrh r0, [r5, 0x20] - lsls r1, r0, 4 - strh r1, [r5, 0x36] - ldrh r1, [r5, 0x22] - lsls r2, r1, 4 - strh r2, [r5, 0x38] - subs r0, r6, r0 - lsls r0, 16 - asrs r0, 16 - subs r1, r3, r1 - lsls r1, 16 - asrs r1, 16 - adds r2, r5, 0 - adds r2, 0x3A - adds r3, r5, 0 - adds r3, 0x3C - movs r4, 0x28 - str r4, [sp] - bl sub_80A678C - ldr r0, _080A6788 @ =sub_80A67E4 - str r0, [r5, 0x1C] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A6784: .4byte gBattleAnimTarget -_080A6788: .4byte sub_80A67E4 - thumb_func_end sub_80A66D4 - - thumb_func_start sub_80A678C -sub_80A678C: @ 80A678C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r2, 0 - mov r8, r3 - ldr r2, [sp, 0x18] - lsls r1, 16 - lsrs r6, r1, 16 - lsls r2, 24 - lsrs r1, r2, 24 - lsls r0, 16 - asrs r2, r0, 16 - cmp r2, 0 - bge _080A67AE - lsls r0, r1, 24 - negs r0, r0 - lsrs r1, r0, 24 -_080A67AE: - lsls r5, r2, 8 - lsls r1, 24 - asrs r1, 24 - adds r0, r5, 0 - bl __divsi3 - adds r4, r0, 0 - cmp r4, 0 - bne _080A67C2 - movs r4, 0x1 -_080A67C2: - adds r0, r5, 0 - adds r1, r4, 0 - bl __divsi3 - strh r0, [r7] - lsls r0, r6, 16 - asrs r0, 8 - adds r1, r4, 0 - bl __divsi3 - mov r1, r8 - strh r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80A678C - - thumb_func_start sub_80A67E4 -sub_80A67E4: @ 80A67E4 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - movs r5, 0 - strh r0, [r4, 0x2E] - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r1, r0, r1 - adds r0, r1, 0 - cmp r1, 0 - bge _080A6800 - adds r0, 0xFF -_080A6800: - asrs r0, 8 - lsls r0, 8 - subs r0, r1, r0 - ldrh r1, [r4, 0x3A] - ldrh r2, [r4, 0x36] - adds r1, r2 - strh r1, [r4, 0x36] - ldrh r2, [r4, 0x3C] - ldrh r3, [r4, 0x38] - adds r2, r3 - strh r2, [r4, 0x38] - lsls r1, 16 - asrs r1, 20 - strh r1, [r4, 0x20] - lsls r2, 16 - asrs r2, 20 - strh r2, [r4, 0x22] - lsls r0, 16 - asrs r0, 16 - movs r1, 0xF - bl Sin - strh r0, [r4, 0x26] - ldrh r2, [r4, 0x22] - ldrh r0, [r4, 0x20] - adds r0, 0x10 - lsls r0, 16 - movs r1, 0x88 - lsls r1, 17 - cmp r0, r1 - bhi _080A684E - lsls r0, r2, 16 - asrs r1, r0, 16 - movs r0, 0x10 - negs r0, r0 - cmp r1, r0 - blt _080A684E - cmp r1, 0x80 - ble _080A6856 -_080A684E: - adds r0, r4, 0 - bl DestroySpriteAndMatrix - b _080A68A6 -_080A6856: - movs r0, 0x34 - ldrsh r1, [r4, r0] - cmp r1, 0 - beq _080A68A6 - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, r1 - ble _080A68A6 - strh r5, [r4, 0x32] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080A687E - strh r5, [r4, 0x30] -_080A687E: - ldr r2, _080A68AC @ =gUnknown_83E3898 - movs r3, 0x30 - ldrsh r1, [r4, r3] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _080A68A6 - lsls r2, r0, 4 - ldrb r1, [r4, 0x5] - movs r0, 0xF - ands r0, r1 - orrs r0, r2 - strb r0, [r4, 0x5] -_080A68A6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A68AC: .4byte gUnknown_83E3898 - thumb_func_end sub_80A67E4 - - thumb_func_start sub_80A68B0 -sub_80A68B0: @ 80A68B0 - push {r4-r7,lr} - adds r6, r0, 0 - ldr r7, _080A6934 @ =gBattleAnimAttacker - ldrb r0, [r7] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A68CE - ldr r1, _080A6938 @ =gBattleAnimArgs - movs r2, 0x2 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1, 0x2] -_080A68CE: - ldrb r0, [r7] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r4, _080A6938 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - movs r5, 0 - strh r0, [r6, 0x20] - ldrb r0, [r7] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r2, [r4, 0x4] - adds r0, r2 - strh r0, [r6, 0x22] - ldrb r1, [r4] - adds r0, r6, 0 - bl StartSpriteAnim - strh r5, [r6, 0x32] - strh r5, [r6, 0x34] - ldrh r0, [r6, 0x20] - lsls r0, 4 - strh r0, [r6, 0x36] - ldrh r0, [r6, 0x22] - lsls r0, 4 - strh r0, [r6, 0x38] - movs r1, 0x2 - ldrsh r0, [r4, r1] - lsls r0, 4 - movs r1, 0x5 - bl __divsi3 - strh r0, [r6, 0x3A] - movs r2, 0x4 - ldrsh r0, [r4, r2] - lsls r0, 7 - movs r1, 0x5 - bl __divsi3 - strh r0, [r6, 0x3C] - ldr r0, _080A693C @ =sub_80A6940 - str r0, [r6, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A6934: .4byte gBattleAnimAttacker -_080A6938: .4byte gBattleAnimArgs -_080A693C: .4byte sub_80A6940 - thumb_func_end sub_80A68B0 - - thumb_func_start sub_80A6940 -sub_80A6940: @ 80A6940 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x36] - adds r0, r1 - strh r0, [r4, 0x36] - ldrh r1, [r4, 0x3C] - ldrh r2, [r4, 0x38] - adds r1, r2 - strh r1, [r4, 0x38] - lsls r0, 16 - asrs r0, 20 - strh r0, [r4, 0x20] - lsls r1, 16 - asrs r1, 20 - strh r1, [r4, 0x22] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x5 - ble _080A699E - movs r2, 0x34 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080A699E - ldrh r0, [r4, 0x32] - adds r0, 0x10 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x32] - movs r1, 0x32 - ldrsh r0, [r4, r1] - movs r1, 0x12 - bl Cos - strh r0, [r4, 0x24] - movs r2, 0x32 - ldrsh r0, [r4, r2] - movs r1, 0x12 - bl Sin - strh r0, [r4, 0x26] - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A699E - movs r0, 0x1 - strh r0, [r4, 0x34] -_080A699E: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x30 - bne _080A69B2 - adds r0, r4, 0 - bl DestroySpriteAndMatrix -_080A69B2: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A6940 - - thumb_func_start sub_80A69B8 -sub_80A69B8: @ 80A69B8 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r0, _080A69D8 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0x1 - bne _080A69DC - ldrb r0, [r5, 0x3] - movs r1, 0x3F - negs r1, r1 - ands r1, r0 - movs r0, 0x10 - orrs r1, r0 - strb r1, [r5, 0x3] - movs r6, 0x10 - b _080A69DE - .align 2, 0 -_080A69D8: .4byte gBattleAnimArgs -_080A69DC: - ldr r6, _080A6A18 @ =0x0000fff0 -_080A69DE: - ldr r4, _080A6A1C @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, r6 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x8 - strh r0, [r5, 0x22] - movs r0, 0x8 - strh r0, [r5, 0x2E] - ldr r0, _080A6A20 @ =WaitAnimForDuration - str r0, [r5, 0x1C] - ldr r1, _080A6A24 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A6A18: .4byte 0x0000fff0 -_080A6A1C: .4byte gBattleAnimAttacker -_080A6A20: .4byte WaitAnimForDuration -_080A6A24: .4byte DestroyAnimSprite - thumb_func_end sub_80A69B8 - - thumb_func_start sub_80A6A28 -sub_80A6A28: @ 80A6A28 - push {r4,r5,lr} - adds r4, r0, 0 - bl SetSpriteCoordsToAnimAttackerCoords - ldrh r0, [r4, 0x22] - adds r0, 0x8 - strh r0, [r4, 0x22] - ldr r5, _080A6AA0 @ =gBattleAnimArgs - ldrb r1, [r5, 0x2] - adds r0, r4, 0 - bl StartSpriteAnim - ldr r2, _080A6AA4 @ =gUnknown_83E3898 - movs r0, 0x4 - ldrsh r1, [r5, r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _080A6A68 - lsls r2, r0, 4 - ldrb r1, [r4, 0x5] - movs r0, 0xF - ands r0, r1 - orrs r0, r2 - strb r0, [r4, 0x5] -_080A6A68: - movs r1, 0 - ldrsh r0, [r5, r1] - movs r2, 0x20 - cmp r0, 0 - bne _080A6A74 - ldr r2, _080A6AA8 @ =0x0000ffe0 -_080A6A74: - movs r0, 0x28 - strh r0, [r4, 0x2E] - ldrh r1, [r4, 0x20] - strh r1, [r4, 0x30] - lsls r0, r2, 16 - asrs r0, 16 - adds r0, r1 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - subs r0, 0x28 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl InitAnimLinearTranslation - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x38] - ldr r0, _080A6AAC @ =sub_80A6AB0 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A6AA0: .4byte gBattleAnimArgs -_080A6AA4: .4byte gUnknown_83E3898 -_080A6AA8: .4byte 0x0000ffe0 -_080A6AAC: .4byte sub_80A6AB0 - thumb_func_end sub_80A6A28 - - thumb_func_start sub_80A6AB0 -sub_80A6AB0: @ 80A6AB0 - push {r4,lr} - adds r4, r0, 0 - bl AnimTranslateLinear - lsls r0, 24 - cmp r0, 0 - bne _080A6B00 - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x8 - bl Sin - lsls r0, 16 - lsrs r1, r0, 16 - ldrh r2, [r4, 0x24] - movs r3, 0x24 - ldrsh r0, [r4, r3] - cmp r0, 0 - bge _080A6ADC - lsls r0, r1, 16 - negs r0, r0 - lsrs r1, r0, 16 -_080A6ADC: - lsls r0, r1, 16 - asrs r0, 16 - adds r0, r2 - strh r0, [r4, 0x24] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x4 - bl Sin - ldrh r3, [r4, 0x26] - adds r0, r3 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x38] - adds r0, 0x8 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - b _080A6B06 -_080A6B00: - adds r0, r4, 0 - bl DestroyAnimSprite -_080A6B06: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A6AB0 - - thumb_func_start sub_80A6B0C -sub_80A6B0C: @ 80A6B0C - push {r4-r6,lr} - adds r6, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A6B2C - adds r0, r5, 0 - movs r1, 0x5 - bl GetBattlerSpriteCoordAttr - adds r0, 0x8 - b _080A6B36 -_080A6B2C: - adds r0, r5, 0 - movs r1, 0x4 - bl GetBattlerSpriteCoordAttr - subs r0, 0x8 -_080A6B36: - strh r0, [r6, 0x20] - adds r0, r5, 0 - movs r1, 0x3 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - adds r0, r5, 0 - movs r1, 0 - bl GetBattlerSpriteCoordAttr - lsls r4, 24 - lsrs r4, 24 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080A6B58 - adds r0, 0x3 -_080A6B58: - asrs r0, 2 - subs r0, r4, r0 - strh r0, [r6, 0x22] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80A6B0C - - thumb_func_start sub_80A6B64 -sub_80A6B64: @ 80A6B64 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080A6B78 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A6B80 - ldr r0, _080A6B7C @ =gBattleAnimAttacker - b _080A6B82 - .align 2, 0 -_080A6B78: .4byte gBattleAnimArgs -_080A6B7C: .4byte gBattleAnimAttacker -_080A6B80: - ldr r0, _080A6BC0 @ =gBattleAnimTarget -_080A6B82: - ldrb r4, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80A6B0C - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - negs r1, r0 - orrs r1, r0 - lsrs r1, 31 - ldr r0, _080A6BC4 @ =gBattleAnimArgs - ldrh r0, [r0, 0x2] - strh r0, [r5, 0x2E] - adds r0, r1, 0x2 - strh r0, [r5, 0x30] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r1, _080A6BC8 @ =sub_80A6BD0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A6BCC @ =RunStoredCallbackWhenAnimEnds - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A6BC0: .4byte gBattleAnimTarget -_080A6BC4: .4byte gBattleAnimArgs -_080A6BC8: .4byte sub_80A6BD0 -_080A6BCC: .4byte RunStoredCallbackWhenAnimEnds - thumb_func_end sub_80A6B64 - - thumb_func_start sub_80A6BD0 -sub_80A6BD0: @ 80A6BD0 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _080A6BF8 - ldr r1, _080A6C00 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldrh r1, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - ldr r0, _080A6C04 @ =RunStoredCallbackWhenAnimEnds - str r0, [r4, 0x1C] -_080A6BF8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A6C00: .4byte DestroyAnimSprite -_080A6C04: .4byte RunStoredCallbackWhenAnimEnds - thumb_func_end sub_80A6BD0 - - thumb_func_start sub_80A6C08 -sub_80A6C08: @ 80A6C08 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080A6C1C @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A6C24 - ldr r0, _080A6C20 @ =gBattleAnimAttacker - b _080A6C26 - .align 2, 0 -_080A6C1C: .4byte gBattleAnimArgs -_080A6C20: .4byte gBattleAnimAttacker -_080A6C24: - ldr r0, _080A6C44 @ =gBattleAnimTarget -_080A6C26: - ldrb r0, [r0] - adds r1, r4, 0 - bl sub_80A6B0C - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r1, _080A6C48 @ =sub_80A6C50 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A6C4C @ =RunStoredCallbackWhenAffineAnimEnds - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A6C44: .4byte gBattleAnimTarget -_080A6C48: .4byte sub_80A6C50 -_080A6C4C: .4byte RunStoredCallbackWhenAffineAnimEnds - thumb_func_end sub_80A6C08 - - thumb_func_start sub_80A6C50 -sub_80A6C50: @ 80A6C50 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080A6C76 - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r1, _080A6C7C @ =DestroySpriteAndMatrix - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A6C80 @ =RunStoredCallbackWhenAffineAnimEnds - str r0, [r4, 0x1C] -_080A6C76: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A6C7C: .4byte DestroySpriteAndMatrix -_080A6C80: .4byte RunStoredCallbackWhenAffineAnimEnds - thumb_func_end sub_80A6C50 - - thumb_func_start sub_80A6C84 -sub_80A6C84: @ 80A6C84 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r0, _080A6C98 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A6CA0 - ldr r0, _080A6C9C @ =gBattleAnimAttacker - b _080A6CA2 - .align 2, 0 -_080A6C98: .4byte gBattleAnimArgs -_080A6C9C: .4byte gBattleAnimAttacker -_080A6CA0: - ldr r0, _080A6CF4 @ =gBattleAnimTarget -_080A6CA2: - ldrb r5, [r0] - adds r0, r5, 0 - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - movs r6, 0 - strh r0, [r4, 0x20] - adds r0, r5, 0 - movs r1, 0x2 - bl GetBattlerSpriteCoordAttr - strh r0, [r4, 0x22] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - bgt _080A6CCA - movs r0, 0xA - strh r0, [r4, 0x22] -_080A6CCA: - movs r0, 0x1 - strh r0, [r4, 0x2E] - strh r6, [r4, 0x30] - adds r1, r4, 0 - adds r1, 0x43 - ldrb r0, [r1] - strh r0, [r4, 0x32] - ldrb r0, [r1] - adds r0, 0x4 - strh r0, [r4, 0x34] - strh r6, [r4, 0x36] - ldr r1, _080A6CF8 @ =sub_80A6D00 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A6CFC @ =RunStoredCallbackWhenAffineAnimEnds - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A6CF4: .4byte gBattleAnimTarget -_080A6CF8: .4byte sub_80A6D00 -_080A6CFC: .4byte RunStoredCallbackWhenAffineAnimEnds - thumb_func_end sub_80A6C84 - - thumb_func_start sub_80A6D00 -sub_80A6D00: @ 80A6D00 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x36] - adds r0, 0x1 - strh r0, [r1, 0x36] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xC - ble _080A6D16 - ldr r0, _080A6D1C @ =sub_80A6D20 - str r0, [r1, 0x1C] -_080A6D16: - pop {r0} - bx r0 - .align 2, 0 -_080A6D1C: .4byte sub_80A6D20 - thumb_func_end sub_80A6D00 - - thumb_func_start sub_80A6D20 -sub_80A6D20: @ 80A6D20 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x30] - adds r1, r0, 0x4 - strh r1, [r2, 0x30] - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xFE - ble _080A6D52 - ldrh r0, [r2, 0x2E] - subs r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bne _080A6D4C - strh r0, [r2, 0x24] - ldr r0, _080A6D48 @ =sub_80A6C50 - str r0, [r2, 0x1C] - b _080A6D88 - .align 2, 0 -_080A6D48: .4byte sub_80A6C50 -_080A6D4C: - movs r0, 0xFF - ands r1, r0 - strh r1, [r2, 0x30] -_080A6D52: - movs r1, 0x30 - ldrsh r0, [r2, r1] - cmp r0, 0x4F - ble _080A6D62 - ldrh r0, [r2, 0x34] - adds r1, r2, 0 - adds r1, 0x43 - strb r0, [r1] -_080A6D62: - movs r3, 0x30 - ldrsh r0, [r2, r3] - cmp r0, 0x9F - ble _080A6D72 - ldrh r0, [r2, 0x32] - adds r1, r2, 0 - adds r1, 0x43 - strb r0, [r1] -_080A6D72: - ldr r1, _080A6D8C @ =gSineTable - movs r3, 0x30 - ldrsh r0, [r2, r3] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 19 - asrs r1, r0, 1 - adds r0, r1 - strh r0, [r2, 0x24] -_080A6D88: - pop {r0} - bx r0 - .align 2, 0 -_080A6D8C: .4byte gSineTable - thumb_func_end sub_80A6D20 - - thumb_func_start sub_80A6D90 -sub_80A6D90: @ 80A6D90 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080A6DA4 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A6DAC - ldr r0, _080A6DA8 @ =gBattleAnimAttacker - b _080A6DAE - .align 2, 0 -_080A6DA4: .4byte gBattleAnimArgs -_080A6DA8: .4byte gBattleAnimAttacker -_080A6DAC: - ldr r0, _080A6DD0 @ =gBattleAnimTarget -_080A6DAE: - ldrb r4, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80A6B0C - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A6DD4 - adds r0, r5, 0 - movs r1, 0 - bl StartSpriteAnim - movs r0, 0x2 - b _080A6DDE - .align 2, 0 -_080A6DD0: .4byte gBattleAnimTarget -_080A6DD4: - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAnim - movs r0, 0x3 -_080A6DDE: - strh r0, [r5, 0x2E] - ldr r0, _080A6DEC @ =sub_80A6DF0 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A6DEC: .4byte sub_80A6DF0 - thumb_func_end sub_80A6D90 - - thumb_func_start sub_80A6DF0 -sub_80A6DF0: @ 80A6DF0 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - ble _080A6E1E - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x2E] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - ldr r1, _080A6E24 @ =sub_80A6E2C - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A6E28 @ =RunStoredCallbackWhenAnimEnds - str r0, [r4, 0x1C] -_080A6E1E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A6E24: .4byte sub_80A6E2C -_080A6E28: .4byte RunStoredCallbackWhenAnimEnds - thumb_func_end sub_80A6DF0 - - thumb_func_start sub_80A6E2C -sub_80A6E2C: @ 80A6E2C - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x30] - adds r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _080A6E44 - adds r0, r1, 0 - bl DestroyAnimSprite -_080A6E44: - pop {r0} - bx r0 - thumb_func_end sub_80A6E2C - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_effects_2.s b/asm/battle_anim_effects_2.s deleted file mode 100644 index 24921239f..000000000 --- a/asm/battle_anim_effects_2.s +++ /dev/null @@ -1,7946 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80A6E48 -sub_80A6E48: @ 80A6E48 - push {r4,r5,lr} - adds r4, r0, 0 - bl SetSpriteCoordsToAnimAttackerCoords - ldr r5, _080A6E8C @ =gBattleAnimArgs - movs r0, 0 - ldrsh r1, [r5, r0] - adds r0, r4, 0 - bl SetAnimSpriteInitialXOffset - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x30] - ldrh r0, [r5, 0x8] - strh r0, [r4, 0x32] - ldrh r0, [r5, 0xA] - strh r0, [r4, 0x34] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x36] - ldr r1, _080A6E90 @ =DestroySpriteAndMatrix - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r1, _080A6E94 @ =TranslateSpriteInEllipseOverDuration - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A6E8C: .4byte gBattleAnimArgs -_080A6E90: .4byte DestroySpriteAndMatrix -_080A6E94: .4byte TranslateSpriteInEllipseOverDuration - thumb_func_end sub_80A6E48 - - thumb_func_start sub_80A6E98 -sub_80A6E98: @ 80A6E98 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080A6EAC @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A6EB4 - ldr r0, _080A6EB0 @ =gBattleAnimAttacker - b _080A6EB6 - .align 2, 0 -_080A6EAC: .4byte gBattleAnimArgs -_080A6EB0: .4byte gBattleAnimAttacker -_080A6EB4: - ldr r0, _080A6ED0 @ =gBattleAnimTarget -_080A6EB6: - ldrb r0, [r0] - adds r1, r4, 0 - bl sub_80A6B0C - movs r0, 0 - strh r0, [r4, 0x2E] - strh r0, [r4, 0x30] - ldr r0, _080A6ED4 @ =sub_80A6ED8 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A6ED0: .4byte gBattleAnimTarget -_080A6ED4: .4byte sub_80A6ED8 - thumb_func_end sub_80A6E98 - - thumb_func_start sub_80A6ED8 -sub_80A6ED8: @ 80A6ED8 - push {lr} - adds r1, r0, 0 - movs r2, 0x2E - ldrsh r0, [r1, r2] - cmp r0, 0x1 - beq _080A6F0A - cmp r0, 0x1 - bgt _080A6EEE - cmp r0, 0 - beq _080A6EF4 - b _080A6F38 -_080A6EEE: - cmp r0, 0x2 - beq _080A6F24 - b _080A6F38 -_080A6EF4: - ldrh r0, [r1, 0x26] - subs r0, 0x3 - strh r0, [r1, 0x26] - ldrh r0, [r1, 0x30] - adds r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - bne _080A6F38 - b _080A6F1C -_080A6F0A: - ldrh r0, [r1, 0x26] - adds r0, 0x3 - strh r0, [r1, 0x26] - ldrh r0, [r1, 0x30] - subs r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - cmp r0, 0 - bne _080A6F38 -_080A6F1C: - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - b _080A6F38 -_080A6F24: - ldrh r0, [r1, 0x30] - adds r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x40 - bne _080A6F38 - adds r0, r1, 0 - bl DestroyAnimSprite -_080A6F38: - pop {r0} - bx r0 - thumb_func_end sub_80A6ED8 - - thumb_func_start sub_80A6F3C -sub_80A6F3C: @ 80A6F3C - push {r4,lr} - adds r4, r0, 0 - ldr r3, _080A6F88 @ =gSprites - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r4, 0x30] - ldrh r2, [r0, 0x24] - adds r1, r2 - strh r1, [r0, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4, 0x30] - movs r0, 0x2E - ldrsh r2, [r4, r0] - cmp r2, 0 - bne _080A6F7A - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - strh r2, [r0, 0x24] - adds r0, r4, 0 - bl DestroySpriteAndMatrix -_080A6F7A: - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A6F88: .4byte gSprites - thumb_func_end sub_80A6F3C - - thumb_func_start sub_80A6F8C -sub_80A6F8C: @ 80A6F8C - push {r4-r6,lr} - adds r5, r0, 0 - ldr r4, _080A6FD4 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r1, _080A6FD8 @ =gBattlerSpriteIds - ldr r0, _080A6FDC @ =gBattleAnimTarget - ldrb r0, [r0] - adds r0, r1 - ldrb r6, [r0] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A6FE4 - ldr r0, _080A6FE0 @ =gBattleAnimArgs - ldrh r1, [r5, 0x20] - ldrh r2, [r0] - subs r1, r2 - strh r1, [r5, 0x20] - adds r1, r0, 0 - b _080A6FEE - .align 2, 0 -_080A6FD4: .4byte gBattleAnimAttacker -_080A6FD8: .4byte gBattlerSpriteIds -_080A6FDC: .4byte gBattleAnimTarget -_080A6FE0: .4byte gBattleAnimArgs -_080A6FE4: - ldr r1, _080A7018 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r5, 0x20] - adds r0, r2 - strh r0, [r5, 0x20] -_080A6FEE: - ldrh r0, [r1, 0x2] - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - ldrh r0, [r1, 0x4] - strh r0, [r5, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r5, 0x30] - strh r6, [r5, 0x32] - ldr r0, _080A701C @ =sub_80A6F3C - str r0, [r5, 0x1C] - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A7018: .4byte gBattleAnimArgs -_080A701C: .4byte sub_80A6F3C - thumb_func_end sub_80A6F8C - - thumb_func_start sub_80A7020 -sub_80A7020: @ 80A7020 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl InitSpritePosToAnimAttacker - ldr r1, _080A704C @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x38] - ldr r0, _080A7050 @ =WaitAnimForDuration - str r0, [r4, 0x1C] - ldr r1, _080A7054 @ =sub_80A7058 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A704C: .4byte gBattleAnimArgs -_080A7050: .4byte WaitAnimForDuration -_080A7054: .4byte sub_80A7058 - thumb_func_end sub_80A7020 - - thumb_func_start sub_80A7058 -sub_80A7058: @ 80A7058 - push {lr} - ldrh r1, [r0, 0x30] - strh r1, [r0, 0x2E] - ldrh r1, [r0, 0x20] - strh r1, [r0, 0x32] - ldrh r1, [r0, 0x22] - adds r1, 0xF - strh r1, [r0, 0x36] - ldr r1, _080A7078 @ =StartAnimLinearTranslation - str r1, [r0, 0x1C] - ldr r1, _080A707C @ =sub_80A7080 - bl StoreSpriteCallbackInData6 - pop {r0} - bx r0 - .align 2, 0 -_080A7078: .4byte StartAnimLinearTranslation -_080A707C: .4byte sub_80A7080 - thumb_func_end sub_80A7058 - - thumb_func_start sub_80A7080 -sub_80A7080: @ 80A7080 - push {lr} - adds r1, r0, 0 - ldrh r2, [r1, 0x38] - movs r3, 0x38 - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _080A7096 - adds r0, r1, 0 - bl DestroyAnimSprite - b _080A709A -_080A7096: - subs r0, r2, 0x1 - strh r0, [r1, 0x38] -_080A709A: - pop {r0} - bx r0 - thumb_func_end sub_80A7080 - - thumb_func_start sub_80A70A0 -sub_80A70A0: @ 80A70A0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _080A70CC @ =gBattlerSpriteIds - ldr r0, _080A70D0 @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl PrepareBattlerSpriteForRotScale - ldr r1, _080A70D4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080A70D8 @ =sub_80A70DC - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A70CC: .4byte gBattlerSpriteIds -_080A70D0: .4byte gBattleAnimAttacker -_080A70D4: .4byte gTasks -_080A70D8: .4byte sub_80A70DC - thumb_func_end sub_80A70A0 - - thumb_func_start sub_80A70DC -sub_80A70DC: @ 80A70DC - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080A710C @ =gBattlerSpriteIds - ldr r0, _080A7110 @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r1, r0, r1 - ldrb r4, [r1] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A7118 - ldr r1, _080A7114 @ =gTasks - lsls r2, r5, 2 - adds r0, r2, r5 - lsls r0, 3 - adds r0, r1 - ldrh r0, [r0, 0x8] - negs r0, r0 - lsls r0, 16 - lsrs r3, r0, 16 - adds r6, r2, 0 - b _080A7126 - .align 2, 0 -_080A710C: .4byte gBattlerSpriteIds -_080A7110: .4byte gBattleAnimAttacker -_080A7114: .4byte gTasks -_080A7118: - ldr r2, _080A7158 @ =gTasks - lsls r1, r5, 2 - adds r0, r1, r5 - lsls r0, 3 - adds r0, r2 - ldrh r3, [r0, 0x8] - adds r6, r1, 0 -_080A7126: - movs r2, 0x80 - lsls r2, 1 - adds r0, r4, 0 - adds r1, r2, 0 - bl SetSpriteRotScale - ldr r1, _080A7158 @ =gTasks - adds r0, r6, r5 - lsls r0, 3 - adds r1, r0, r1 - movs r2, 0xA - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080A7160 - ldrh r0, [r1, 0x8] - adds r0, 0xB0 - strh r0, [r1, 0x8] - ldr r1, _080A715C @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x26] - adds r1, 0x1 - b _080A718A - .align 2, 0 -_080A7158: .4byte gTasks -_080A715C: .4byte gSprites -_080A7160: - cmp r0, 0x1 - bne _080A7176 - ldrh r0, [r1, 0xE] - adds r0, 0x1 - strh r0, [r1, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1E - bne _080A71D0 - movs r0, 0x2 - b _080A71CE -_080A7176: - ldrh r0, [r1, 0x8] - subs r0, 0xB0 - strh r0, [r1, 0x8] - ldr r1, _080A71C4 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x26] - subs r1, 0x1 -_080A718A: - strh r1, [r0, 0x26] - adds r0, r4, 0 - bl SetBattlerSpriteYOffsetFromRotation - ldr r0, _080A71C8 @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - movs r3, 0x8 - ldrsh r2, [r1, r3] - movs r0, 0xF2 - lsls r0, 4 - cmp r2, r0 - beq _080A71AA - cmp r2, 0 - bne _080A71D0 -_080A71AA: - ldrh r2, [r1, 0xA] - movs r3, 0xA - ldrsh r0, [r1, r3] - cmp r0, 0x2 - bne _080A71CC - adds r0, r4, 0 - bl ResetSpriteRotScale - adds r0, r5, 0 - bl DestroyAnimVisualTask - b _080A71D0 - .align 2, 0 -_080A71C4: .4byte gSprites -_080A71C8: .4byte gTasks -_080A71CC: - adds r0, r2, 0x1 -_080A71CE: - strh r0, [r1, 0xA] -_080A71D0: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80A70DC - - thumb_func_start sub_80A71D8 -sub_80A71D8: @ 80A71D8 - push {r4,r5,lr} - adds r4, r0, 0 - bl SetSpriteCoordsToAnimAttackerCoords - ldr r0, _080A71FC @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A7204 - ldr r0, _080A7200 @ =gBattleAnimArgs - ldrh r1, [r4, 0x20] - ldrh r2, [r0] - subs r1, r2 - strh r1, [r4, 0x20] - adds r5, r0, 0 - b _080A7210 - .align 2, 0 -_080A71FC: .4byte gBattleAnimAttacker -_080A7200: .4byte gBattleAnimArgs -_080A7204: - ldr r1, _080A7244 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - adds r5, r1, 0 -_080A7210: - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r0, _080A7248 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A724C - adds r3, r4, 0 - adds r3, 0x3F - ldrb r0, [r3] - movs r1, 0x1 - adds r2, r0, 0 - orrs r2, r1 - strb r2, [r3] - movs r1, 0x4 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _080A7260 - movs r0, 0x2 - orrs r2, r0 - strb r2, [r3] - b _080A7260 - .align 2, 0 -_080A7244: .4byte gBattleAnimArgs -_080A7248: .4byte gBattleAnimAttacker -_080A724C: - movs r2, 0x4 - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _080A7260 - adds r2, r4, 0 - adds r2, 0x3F - ldrb r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2] -_080A7260: - ldr r0, _080A7274 @ =RunStoredCallbackWhenAnimEnds - str r0, [r4, 0x1C] - ldr r1, _080A7278 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A7274: .4byte RunStoredCallbackWhenAnimEnds -_080A7278: .4byte DestroyAnimSprite - thumb_func_end sub_80A71D8 - - thumb_func_start sub_80A727C -sub_80A727C: @ 80A727C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl InitSpritePosToAnimAttacker - ldr r0, _080A7298 @ =RunStoredCallbackWhenAffineAnimEnds - str r0, [r4, 0x1C] - ldr r1, _080A729C @ =sub_80A72A0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A7298: .4byte RunStoredCallbackWhenAffineAnimEnds -_080A729C: .4byte sub_80A72A0 - thumb_func_end sub_80A727C - - thumb_func_start sub_80A72A0 -sub_80A72A0: @ 80A72A0 - push {lr} - movs r1, 0x6 - strh r1, [r0, 0x2E] - ldrh r1, [r0, 0x20] - strh r1, [r0, 0x32] - ldrh r1, [r0, 0x22] - subs r1, 0x20 - strh r1, [r0, 0x36] - ldr r1, _080A72C0 @ =StartAnimLinearTranslation - str r1, [r0, 0x1C] - ldr r1, _080A72C4 @ =DestroyAnimSprite - bl StoreSpriteCallbackInData6 - pop {r0} - bx r0 - .align 2, 0 -_080A72C0: .4byte StartAnimLinearTranslation -_080A72C4: .4byte DestroyAnimSprite - thumb_func_end sub_80A72A0 - - thumb_func_start sub_80A72C8 -sub_80A72C8: @ 80A72C8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r5, r0, 0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A72EC - ldr r1, _080A72E8 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] - b _080A730E - .align 2, 0 -_080A72E8: .4byte gBattleAnimArgs -_080A72EC: - ldr r0, _080A73B4 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A730E - ldr r1, _080A73B8 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] - ldrh r0, [r1, 0x2] - negs r0, r0 - strh r0, [r1, 0x2] - ldrh r0, [r1, 0x6] - negs r0, r0 - strh r0, [r1, 0x6] -_080A730E: - adds r0, r5, 0 - movs r1, 0x1 - bl InitSpritePosToAnimAttacker - ldr r4, _080A73BC @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r6, _080A73B8 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r6, 0x4] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r2, [r6, 0x6] - adds r0, r2 - lsls r0, 16 - lsrs r0, 16 - adds r7, r0, 0 - ldrh r1, [r5, 0x20] - mov r2, r8 - lsls r0, r2, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 16 - asrs r0, 16 - ldrh r2, [r5, 0x22] - lsls r1, r7, 16 - asrs r1, 16 - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl ArcTan2Neg - lsls r0, 16 - movs r1, 0xF0 - lsls r1, 24 - adds r0, r1 - lsrs r4, r0, 16 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A7380 - ldr r2, _080A73C0 @ =0xffffa000 - adds r0, r4, r2 - lsls r0, 16 - lsrs r4, r0, 16 -_080A7380: - movs r3, 0x80 - lsls r3, 1 - str r4, [sp] - adds r0, r5, 0 - movs r1, 0 - adds r2, r3, 0 - bl TrySetSpriteRotScale - ldrh r0, [r6, 0x8] - strh r0, [r5, 0x2E] - mov r0, r8 - strh r0, [r5, 0x32] - strh r7, [r5, 0x36] - ldr r0, _080A73C4 @ =StartAnimLinearTranslation - str r0, [r5, 0x1C] - ldr r1, _080A73C8 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A73B4: .4byte gBattleAnimAttacker -_080A73B8: .4byte gBattleAnimArgs -_080A73BC: .4byte gBattleAnimTarget -_080A73C0: .4byte 0xffffa000 -_080A73C4: .4byte StartAnimLinearTranslation -_080A73C8: .4byte DestroyAnimSprite - thumb_func_end sub_80A72C8 - - thumb_func_start sub_80A73CC -sub_80A73CC: @ 80A73CC - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x2E] - subs r1, r0, 0x1 - strh r1, [r3, 0x2E] - lsls r0, 16 - cmp r0, 0 - bgt _080A73F6 - ldr r2, _080A73FC @ =gTasks - movs r0, 0x3C - ldrsh r1, [r3, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrh r1, [r0, 0xA] - subs r1, 0x1 - strh r1, [r0, 0xA] - adds r0, r3, 0 - bl DestroySprite -_080A73F6: - pop {r0} - bx r0 - .align 2, 0 -_080A73FC: .4byte gTasks - thumb_func_end sub_80A73CC - - thumb_func_start sub_80A7400 -sub_80A7400: @ 80A7400 - push {r4,lr} - adds r2, r0, 0 - movs r0, 0x3C - ldrsh r1, [r2, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - ldr r1, _080A7430 @ =gTasks - adds r4, r0, r1 - movs r3, 0x2E - ldrsh r1, [r2, r3] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - ble _080A7434 - ldrh r0, [r2, 0x34] - ldrh r1, [r2, 0x38] - adds r0, r1 - strh r0, [r2, 0x38] - ldrh r0, [r2, 0x36] - ldrh r3, [r2, 0x3A] - adds r0, r3 - b _080A7442 - .align 2, 0 -_080A7430: .4byte gTasks -_080A7434: - ldrh r0, [r2, 0x38] - ldrh r1, [r2, 0x34] - subs r0, r1 - strh r0, [r2, 0x38] - ldrh r0, [r2, 0x3A] - ldrh r1, [r2, 0x36] - subs r0, r1 -_080A7442: - strh r0, [r2, 0x3A] - ldrh r0, [r2, 0x38] - ldrh r1, [r2, 0x30] - adds r3, r0, r1 - strh r3, [r2, 0x30] - ldrh r0, [r2, 0x3A] - ldrh r1, [r2, 0x32] - adds r0, r1 - strh r0, [r2, 0x32] - ldrh r1, [r4, 0x16] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A7466 - lsls r0, r3, 16 - lsrs r0, 24 - negs r0, r0 - b _080A746A -_080A7466: - lsls r0, r3, 16 - lsrs r0, 24 -_080A746A: - strh r0, [r2, 0x24] - ldrh r1, [r4, 0x18] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A747E - ldrh r0, [r2, 0x32] - lsrs r0, 8 - negs r0, r0 - b _080A7482 -_080A747E: - ldrh r0, [r2, 0x32] - lsrs r0, 8 -_080A7482: - strh r0, [r2, 0x26] - ldrh r0, [r2, 0x2E] - subs r1, r0, 0x1 - strh r1, [r2, 0x2E] - lsls r0, 16 - cmp r0, 0 - bgt _080A7498 - movs r0, 0x1E - strh r0, [r2, 0x2E] - ldr r0, _080A74A0 @ =sub_80A73CC - str r0, [r2, 0x1C] -_080A7498: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A74A0: .4byte sub_80A73CC - thumb_func_end sub_80A7400 - - thumb_func_start sub_80A74A4 -sub_80A74A4: @ 80A74A4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - movs r0, 0x3C - ldrsh r1, [r7, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - ldr r1, _080A74E8 @ =gTasks - adds r6, r0, r1 - ldrh r2, [r6, 0x16] - movs r1, 0x2 - negs r1, r1 - adds r0, r1, 0 - ands r0, r2 - ldrh r3, [r7, 0x30] - adds r2, r0, r3 - strh r2, [r7, 0x30] - ldrh r0, [r6, 0x18] - ands r1, r0 - ldrh r0, [r7, 0x32] - adds r1, r0 - strh r1, [r7, 0x32] - ldrh r1, [r6, 0x16] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A74EC - lsls r0, r2, 16 - lsrs r0, 24 - negs r0, r0 - b _080A74F0 - .align 2, 0 -_080A74E8: .4byte gTasks -_080A74EC: - lsls r0, r2, 16 - lsrs r0, 24 -_080A74F0: - strh r0, [r7, 0x24] - ldrh r1, [r6, 0x18] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A7504 - ldrh r0, [r7, 0x32] - lsrs r0, 8 - negs r0, r0 - b _080A7508 -_080A7504: - ldrh r0, [r7, 0x32] - lsrs r0, 8 -_080A7508: - strh r0, [r7, 0x26] - ldrh r0, [r7, 0x2E] - subs r1, r0, 0x1 - strh r1, [r7, 0x2E] - lsls r0, 16 - cmp r0, 0 - bgt _080A75D4 - movs r4, 0 - movs r0, 0x8 - strh r0, [r7, 0x2E] - movs r0, 0x4 - strh r0, [r6, 0x12] - movs r0, 0x80 - lsls r0, 5 - bl sub_80D8B90 - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r0, [r7, 0x24] - ldrh r1, [r7, 0x20] - adds r2, r0, r1 - strh r2, [r7, 0x20] - ldrh r0, [r7, 0x26] - ldrh r3, [r7, 0x22] - adds r0, r3 - strh r0, [r7, 0x22] - strh r4, [r7, 0x26] - strh r4, [r7, 0x24] - ldrh r3, [r6, 0x1E] - movs r0, 0x1E - ldrsh r1, [r6, r0] - lsls r0, r2, 16 - asrs r0, 16 - cmp r1, r0 - blt _080A7552 - subs r0, r3, r2 - b _080A7554 -_080A7552: - subs r0, r2, r3 -_080A7554: - lsls r0, 24 - lsrs r4, r0, 16 - ldrh r3, [r6, 0x20] - movs r0, 0x20 - ldrsh r1, [r6, r0] - ldrh r2, [r7, 0x22] - movs r6, 0x22 - ldrsh r0, [r7, r6] - cmp r1, r0 - blt _080A756C - subs r0, r3, r2 - b _080A756E -_080A756C: - subs r0, r2, r3 -_080A756E: - lsls r0, 24 - lsrs r0, 16 - mov r8, r0 - movs r0, 0 - strh r0, [r7, 0x32] - strh r0, [r7, 0x30] - strh r0, [r7, 0x3A] - strh r0, [r7, 0x38] - lsls r0, r4, 16 - asrs r0, 16 - lsls r5, 16 - asrs r5, 16 - adds r1, r5, 0 - bl sub_80D8AA0 - adds r4, r0, 0 - lsls r4, 16 - asrs r4, 16 - movs r6, 0xE0 - lsls r6, 1 - adds r0, r6, 0 - bl sub_80D8B90 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_80D8AA0 - strh r0, [r7, 0x34] - mov r1, r8 - lsls r0, r1, 16 - asrs r0, 16 - adds r1, r5, 0 - bl sub_80D8AA0 - adds r4, r0, 0 - lsls r4, 16 - asrs r4, 16 - adds r0, r6, 0 - bl sub_80D8B90 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_80D8AA0 - strh r0, [r7, 0x36] - ldr r0, _080A75E0 @ =sub_80A7400 - str r0, [r7, 0x1C] -_080A75D4: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A75E0: .4byte sub_80A7400 - thumb_func_end sub_80A74A4 - - thumb_func_start sub_80A75E4 -sub_80A75E4: @ 80A75E4 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080A7608 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - movs r1, 0xA - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A7602 - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080A7602: - pop {r0} - bx r0 - .align 2, 0 -_080A7608: .4byte gTasks - thumb_func_end sub_80A75E4 - - thumb_func_start sub_80A760C -sub_80A760C: @ 80A760C - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _080A7660 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0x8] - subs r1, r0, 0x1 - strh r1, [r5, 0x8] - lsls r0, 16 - cmp r0, 0 - bgt _080A76E0 - ldr r0, _080A7664 @ =gUnknown_83E3C28 - movs r2, 0x1A - ldrsh r1, [r5, r2] - movs r3, 0x1C - ldrsh r2, [r5, r3] - ldrb r3, [r5, 0xC] - ldrb r4, [r5, 0xA] - subs r3, r4 - lsls r3, 24 - lsrs r3, 24 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - lsls r0, 4 - add r0, r12 - lsls r0, 2 - ldr r1, _080A7668 @ =gSprites - adds r6, r0, r1 - movs r1, 0x10 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080A766C - cmp r0, 0x2 - beq _080A7682 - b _080A7690 - .align 2, 0 -_080A7660: .4byte gTasks -_080A7664: .4byte gUnknown_83E3C28 -_080A7668: .4byte gSprites -_080A766C: - ldrb r2, [r6, 0x3] - lsls r1, r2, 26 - lsrs r1, 27 - movs r0, 0x18 - orrs r1, r0 - lsls r1, 1 - subs r0, 0x57 - ands r0, r2 - orrs r0, r1 - strb r0, [r6, 0x3] - b _080A7690 -_080A7682: - ldrb r0, [r6, 0x3] - movs r1, 0x3F - negs r1, r1 - ands r1, r0 - movs r0, 0x10 - orrs r1, r0 - strb r1, [r6, 0x3] -_080A7690: - ldr r3, _080A76E8 @ =gTasks - lsls r2, r7, 2 - adds r2, r7 - lsls r2, 3 - adds r4, r2, r3 - ldrh r0, [r4, 0x12] - ldrh r1, [r4, 0x14] - subs r0, r1 - strh r0, [r6, 0x2E] - strh r7, [r6, 0x3C] - movs r1, 0xA - ldrsh r0, [r4, r1] - adds r0, 0xD - lsls r0, 1 - adds r0, r2 - adds r3, 0x8 - adds r0, r3 - mov r2, r12 - strh r2, [r0] - ldrh r0, [r4, 0xE] - strh r0, [r4, 0x8] - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - movs r0, 0x3F - negs r0, r0 - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x93 - bl PlaySE12WithPanning - movs r3, 0xA - ldrsh r0, [r4, r3] - cmp r0, 0x2 - ble _080A76E0 - ldr r0, _080A76EC @ =sub_80A75E4 - str r0, [r4] -_080A76E0: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A76E8: .4byte gTasks -_080A76EC: .4byte sub_80A75E4 - thumb_func_end sub_80A760C - - thumb_func_start sub_80A76F0 -sub_80A76F0: @ 80A76F0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r7, r0, 24 - movs r0, 0 - mov r9, r0 - movs r5, 0 - mov r0, sp - mov r1, r9 - strh r1, [r0] - mov r4, sp - adds r4, 0x2 - strh r1, [r4] - bl IsContest - lsls r0, 24 - mov r10, r4 - cmp r0, 0 - beq _080A775C - ldr r1, _080A774C @ =gTasks - lsls r2, r7, 2 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - movs r1, 0x2 - strh r1, [r0, 0x10] - ldr r3, _080A7750 @ =gBattleAnimArgs - ldrh r0, [r3] - negs r0, r0 - strh r0, [r3] - ldrh r1, [r3, 0x4] - movs r0, 0x1 - ands r0, r1 - mov r8, r2 - cmp r0, 0 - beq _080A7754 - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strh r0, [r3, 0x4] - b _080A77B6 - .align 2, 0 -_080A774C: .4byte gTasks -_080A7750: .4byte gBattleAnimArgs -_080A7754: - movs r0, 0x1 - orrs r0, r1 - strh r0, [r3, 0x4] - b _080A77B6 -_080A775C: - ldr r1, _080A77A0 @ =gBattlerPositions - ldr r0, _080A77A4 @ =gBattleAnimTarget - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - lsls r2, r7, 2 - mov r8, r2 - cmp r0, 0 - bne _080A77B6 - ldr r1, _080A77A8 @ =gTasks - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - strh r3, [r0, 0x10] - ldr r2, _080A77AC @ =gBattleAnimArgs - ldrh r0, [r2] - negs r0, r0 - strh r0, [r2] - ldrh r0, [r2, 0x2] - negs r0, r0 - strh r0, [r2, 0x2] - ldrh r1, [r2, 0x4] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080A77B0 - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - b _080A77B4 - .align 2, 0 -_080A77A0: .4byte gBattlerPositions -_080A77A4: .4byte gBattleAnimTarget -_080A77A8: .4byte gTasks -_080A77AC: .4byte gBattleAnimArgs -_080A77B0: - movs r0, 0x1 - orrs r0, r1 -_080A77B4: - strh r0, [r2, 0x4] -_080A77B6: - ldr r5, _080A7810 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoord - ldr r1, _080A7814 @ =gTasks - mov r3, r8 - adds r4, r3, r7 - lsls r4, 3 - adds r4, r1 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1A] - adds r6, r0, 0 - ldrb r0, [r5] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1C] - mov r9, r0 - ldr r0, _080A7818 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A7820 - ldr r4, _080A781C @ =gBattleAnimTarget - ldrb r1, [r4] - movs r0, 0x2 - eors r0, r1 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080A7820 - ldrb r0, [r4] - movs r1, 0 - mov r2, sp - mov r3, r10 - bl SetAverageBattlerPositions - b _080A7842 - .align 2, 0 -_080A7810: .4byte gBattleAnimAttacker -_080A7814: .4byte gTasks -_080A7818: .4byte gBattleTypeFlags -_080A781C: .4byte gBattleAnimTarget -_080A7820: - mov r5, sp - ldr r4, _080A787C @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5] - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - mov r1, r10 - strh r0, [r1] -_080A7842: - mov r4, sp - ldr r0, _080A7880 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - mov r2, sp - ldr r3, _080A7884 @ =gBattleAnimArgs - ldrh r0, [r3] - ldrh r2, [r2] - adds r0, r2 - strh r0, [r1, 0x1E] - strh r0, [r4] - ldrh r0, [r3, 0x2] - mov r3, r10 - ldrh r3, [r3] - adds r0, r3 - strh r0, [r1, 0x20] - mov r1, r10 - strh r0, [r1] - mov r0, sp - ldrh r2, [r0] - movs r3, 0 - ldrsh r0, [r0, r3] - adds r1, r6, 0 - cmp r0, r1 - blt _080A7888 - subs r0, r2, r1 - b _080A788A - .align 2, 0 -_080A787C: .4byte gBattleAnimTarget -_080A7880: .4byte gTasks -_080A7884: .4byte gBattleAnimArgs -_080A7888: - subs r0, r1, r2 -_080A788A: - lsls r0, 16 - lsrs r0, 16 - lsls r4, r0, 16 - asrs r4, 16 - ldr r5, _080A7900 @ =gBattleAnimArgs - ldrh r1, [r5, 0x4] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - lsls r0, 16 - asrs r0, 16 - bl sub_80D8B90 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_80D8AA0 - ldr r2, _080A7904 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r6, r1, r2 - strh r0, [r6, 0x12] - movs r1, 0x12 - ldrsh r0, [r6, r1] - movs r1, 0x80 - bl sub_80D8AA0 - strh r0, [r6, 0x14] - ldrh r0, [r5, 0x4] - strh r0, [r6, 0x16] - mov r2, r10 - ldrh r1, [r2] - movs r3, 0 - ldrsh r0, [r2, r3] - mov r4, r9 - cmp r0, r4 - blt _080A7908 - subs r4, r1, r4 - lsls r4, 16 - asrs r4, 16 - movs r1, 0x12 - ldrsh r0, [r6, r1] - bl sub_80D8B90 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_80D8AA0 - movs r1, 0x2 - negs r1, r1 - ands r1, r0 - strh r1, [r6, 0x18] - b _080A7928 - .align 2, 0 -_080A7900: .4byte gBattleAnimArgs -_080A7904: .4byte gTasks -_080A7908: - subs r4, r1 - lsls r4, 16 - asrs r4, 16 - movs r2, 0x12 - ldrsh r0, [r6, r2] - bl sub_80D8B90 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_80D8AA0 - movs r1, 0x1 - orrs r0, r1 - strh r0, [r6, 0x18] -_080A7928: - ldr r1, _080A7968 @ =gTasks - mov r3, r8 - adds r0, r3, r7 - lsls r0, 3 - adds r5, r0, r1 - ldr r4, _080A796C @ =gBattleAnimArgs - ldrh r0, [r4, 0x6] - strh r0, [r5, 0xE] - ldrh r1, [r4, 0x8] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080A7978 - movs r0, 0x80 - eors r0, r1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3F - ble _080A79A0 - ldr r0, _080A7970 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSpriteSubpriority - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080A7974 @ =0x0000ffc0 - adds r1, r2, 0 - ldrh r4, [r4, 0x8] - adds r1, r4 - adds r0, r1 - b _080A79B0 - .align 2, 0 -_080A7968: .4byte gTasks -_080A796C: .4byte gBattleAnimArgs -_080A7970: .4byte gBattleAnimTarget -_080A7974: .4byte 0x0000ffc0 -_080A7978: - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0x3F - ble _080A79A0 - ldr r0, _080A7998 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSpriteSubpriority - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080A799C @ =0x0000ffc0 - adds r1, r3, 0 - ldrh r4, [r4, 0x8] - adds r1, r4 - adds r0, r1 - b _080A79B0 - .align 2, 0 -_080A7998: .4byte gBattleAnimTarget -_080A799C: .4byte 0x0000ffc0 -_080A79A0: - ldr r0, _080A79DC @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSpriteSubpriority - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x8] - subs r0, r1 -_080A79B0: - strh r0, [r5, 0xC] - ldr r0, _080A79E0 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0x2 - bgt _080A79C8 - movs r0, 0x3 - strh r0, [r1, 0xC] -_080A79C8: - ldr r0, _080A79E4 @ =sub_80A760C - str r0, [r1] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A79DC: .4byte gBattleAnimTarget -_080A79E0: .4byte gTasks -_080A79E4: .4byte sub_80A760C - thumb_func_end sub_80A76F0 - - thumb_func_start sub_80A79E8 -sub_80A79E8: @ 80A79E8 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl InitSpritePosToAnimAttacker - ldr r0, _080A7A10 @ =gUnknown_83E3D18 - ldrh r0, [r0, 0x2] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 20 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - strh r0, [r4, 0x2E] - ldr r0, _080A7A14 @ =sub_80A7A18 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A7A10: .4byte gUnknown_83E3D18 -_080A7A14: .4byte sub_80A7A18 - thumb_func_end sub_80A79E8 - - thumb_func_start sub_80A7A18 -sub_80A7A18: @ 80A7A18 - push {r4-r7,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080A7A7C - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r5, [r4, 0x2E] - ldr r1, _080A7A84 @ =gPlttBufferFaded - adds r0, r5, 0 - adds r0, 0x8 - lsls r0, 1 - adds r0, r1 - ldrh r7, [r0] - adds r6, r1, 0 - adds r1, r5, 0 - adds r1, 0x9 - lsls r0, r5, 1 - adds r0, r6 - adds r2, r0, 0 - adds r2, 0x10 - movs r3, 0x7 - lsls r1, 1 - adds r1, r6 -_080A7A50: - ldrh r0, [r1] - strh r0, [r2] - adds r1, 0x2 - adds r2, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _080A7A50 - adds r0, r5, 0 - adds r0, 0xF - lsls r0, 1 - adds r0, r6 - strh r7, [r0] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x18 - bne _080A7A7C - adds r0, r4, 0 - bl DestroyAnimSprite -_080A7A7C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A7A84: .4byte gPlttBufferFaded - thumb_func_end sub_80A7A18 - - thumb_func_start sub_80A7A88 -sub_80A7A88: @ 80A7A88 - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - movs r1, 0x1 - bl InitSpritePosToAnimAttacker - ldr r4, _080A7B28 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r4, _080A7B2C @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4, 0x6] - adds r0, r1 - lsls r0, 16 - lsrs r7, r0, 16 - ldr r0, _080A7B30 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A7ACC - ldrh r0, [r4, 0x4] - negs r0, r0 - strh r0, [r4, 0x4] -_080A7ACC: - lsls r0, r6, 16 - asrs r0, 16 - ldrh r1, [r4, 0x4] - adds r0, r1 - lsls r0, 16 - ldrh r1, [r5, 0x20] - lsrs r6, r0, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 16 - asrs r0, 16 - ldrh r2, [r5, 0x22] - lsls r1, r7, 16 - asrs r1, 16 - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl ArcTan2Neg - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 24 - adds r0, r1 - lsrs r0, 16 - movs r3, 0x80 - lsls r3, 1 - str r0, [sp] - adds r0, r5, 0 - movs r1, 0 - adds r2, r3, 0 - bl TrySetSpriteRotScale - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x2E] - strh r6, [r5, 0x32] - strh r7, [r5, 0x36] - ldr r0, _080A7B34 @ =sub_80756A4 - str r0, [r5, 0x1C] - ldr r1, _080A7B38 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A7B28: .4byte gBattleAnimTarget -_080A7B2C: .4byte gBattleAnimArgs -_080A7B30: .4byte gBattleAnimAttacker -_080A7B34: .4byte sub_80756A4 -_080A7B38: .4byte DestroyAnimSprite - thumb_func_end sub_80A7A88 - - thumb_func_start sub_80A7B3C -sub_80A7B3C: @ 80A7B3C - ldr r1, _080A7B4C @ =0x0000fff0 - strh r1, [r0, 0x32] - ldrh r1, [r0, 0x22] - adds r1, 0x8 - strh r1, [r0, 0x22] - ldr r1, _080A7B50 @ =sub_80A7B54 - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_080A7B4C: .4byte 0x0000fff0 -_080A7B50: .4byte sub_80A7B54 - thumb_func_end sub_80A7B3C - - thumb_func_start sub_80A7B54 -sub_80A7B54: @ 80A7B54 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x80 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - ldr r0, _080A7BC0 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A7B78 - ldrh r0, [r4, 0x24] - negs r0, r0 - strh r0, [r4, 0x24] -_080A7B78: - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x5 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7E - ble _080A7BB8 - movs r0, 0 - strh r0, [r4, 0x30] - movs r1, 0x32 - ldrsh r0, [r4, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080A7BB8 - adds r0, r4, 0 - bl DestroyAnimSprite -_080A7BB8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A7BC0: .4byte gBattleAnimAttacker - thumb_func_end sub_80A7B54 - - thumb_func_start sub_80A7BC4 -sub_80A7BC4: @ 80A7BC4 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl InitSpritePosToAnimAttacker - movs r0, 0x14 - strh r0, [r4, 0x2E] - ldr r5, _080A7C10 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - ldr r0, _080A7C14 @ =StartAnimLinearTranslation - str r0, [r4, 0x1C] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, _080A7C18 @ =sub_80A7C1C - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A7C10: .4byte gBattleAnimTarget -_080A7C14: .4byte StartAnimLinearTranslation -_080A7C18: .4byte sub_80A7C1C - thumb_func_end sub_80A7BC4 - - thumb_func_start sub_80A7C1C -sub_80A7C1C: @ 80A7C1C - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x3F - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x9F - bl PlaySE12WithPanning - 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, 0x26] - strh r1, [r4, 0x24] - movs r2, 0 - movs r1, 0x7 - adds r0, r4, 0 - adds r0, 0x3C -_080A7C50: - strh r2, [r0] - subs r0, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _080A7C50 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x7 - ands r0, r1 - ldr r2, _080A7C98 @ =0x0000fff4 - adds r1, r2, 0 - subs r1, r0 - strh r1, [r4, 0x3A] - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA0 - bl __umodsi3 - adds r0, 0xA0 - strh r0, [r4, 0x3C] - ldr r0, _080A7C9C @ =sub_80A7CA0 - str r0, [r4, 0x1C] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A7C98: .4byte 0x0000fff4 -_080A7C9C: .4byte sub_80A7CA0 - thumb_func_end sub_80A7C1C - - thumb_func_start sub_80A7CA0 -sub_80A7CA0: @ 80A7CA0 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x3C] - ldrh r2, [r4, 0x2E] - adds r0, r1, r2 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r2, r0, 24 - strh r2, [r4, 0x24] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A7CBE - negs r0, r2 - strh r0, [r4, 0x24] -_080A7CBE: - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r2, 0x3A - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x8 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7E - ble _080A7CFE - movs r0, 0 - strh r0, [r4, 0x30] - movs r1, 0x32 - ldrsh r0, [r4, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080A7CFE - adds r0, r4, 0 - bl DestroyAnimSprite -_080A7CFE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A7CA0 - - thumb_func_start sub_80A7D04 -sub_80A7D04: @ 80A7D04 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl InitSpritePosToAnimAttacker - ldr r0, _080A7D54 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A7D22 - ldrh r0, [r4, 0x22] - adds r0, 0x10 - strh r0, [r4, 0x22] -_080A7D22: - ldr r1, _080A7D58 @ =gBattleAnimArgs - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0xA] - strh r0, [r4, 0x32] - ldrh r0, [r1, 0xC] - strh r0, [r4, 0x34] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x36] - ldr r0, _080A7D5C @ =TranslateSpriteInCircleOverDuration - str r0, [r4, 0x1C] - ldr r1, _080A7D60 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A7D54: .4byte gBattleAnimAttacker -_080A7D58: .4byte gBattleAnimArgs -_080A7D5C: .4byte TranslateSpriteInCircleOverDuration -_080A7D60: .4byte DestroyAnimSprite - thumb_func_end sub_80A7D04 - - thumb_func_start sub_80A7D64 -sub_80A7D64: @ 80A7D64 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - movs r7, 0x20 - ldr r4, _080A7DE0 @ =0x0000ffe0 - movs r0, 0x10 - mov r8, r0 - ldr r6, _080A7DE4 @ =0x0000fff0 - ldr r0, _080A7DE8 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _080A7D90 - adds r7, r4, 0 - movs r4, 0x20 - mov r8, r6 - movs r6, 0x10 - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAnim -_080A7D90: - lsls r0, r7, 16 - asrs r0, 16 - ldrh r1, [r5, 0x20] - adds r0, r1 - strh r0, [r5, 0x20] - lsls r0, r4, 16 - asrs r0, 16 - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - movs r0, 0x6 - strh r0, [r5, 0x2E] - ldr r4, _080A7DEC @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - add r0, r8 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, r6 - strh r0, [r5, 0x36] - ldr r0, _080A7DF0 @ =StartAnimLinearTranslation - str r0, [r5, 0x1C] - ldr r1, _080A7DF4 @ =sub_80A7DF8 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A7DE0: .4byte 0x0000ffe0 -_080A7DE4: .4byte 0x0000fff0 -_080A7DE8: .4byte gBattleAnimArgs -_080A7DEC: .4byte gBattleAnimTarget -_080A7DF0: .4byte StartAnimLinearTranslation -_080A7DF4: .4byte sub_80A7DF8 - thumb_func_end sub_80A7D64 - - thumb_func_start sub_80A7DF8 -sub_80A7DF8: @ 80A7DF8 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080A7E0E - adds r0, r2, 0 - bl DestroyAnimSprite -_080A7E0E: - pop {r0} - bx r0 - thumb_func_end sub_80A7DF8 - - thumb_func_start sub_80A7E14 -sub_80A7E14: @ 80A7E14 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r5, r0, 0 - movs r0, 0x20 - mov r8, r0 - ldr r4, _080A7EA8 @ =0x0000ffe0 - movs r2, 0x10 - mov r9, r2 - ldr r6, _080A7EAC @ =0x0000fff0 - ldr r7, _080A7EB0 @ =gBattleAnimArgs - ldrh r1, [r7] - movs r2, 0 - ldrsh r0, [r7, r2] - cmp r0, 0 - beq _080A7E48 - mov r8, r4 - movs r4, 0x20 - mov r9, r6 - movs r6, 0x10 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl StartSpriteAnim -_080A7E48: - mov r0, r8 - lsls r1, r0, 16 - asrs r1, 16 - ldrh r2, [r5, 0x20] - adds r1, r2 - strh r1, [r5, 0x20] - lsls r0, r4, 16 - asrs r0, 16 - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - movs r0, 0x6 - strh r0, [r5, 0x2E] - strh r1, [r5, 0x30] - ldr r4, _080A7EB4 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - add r0, r9 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x22] - strh r0, [r5, 0x34] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, r6 - strh r0, [r5, 0x36] - adds r0, r5, 0 - bl InitAnimLinearTranslation - ldrh r0, [r7] - strh r0, [r5, 0x38] - ldrh r0, [r5, 0x2E] - strh r0, [r5, 0x3A] - ldr r0, _080A7EB8 @ =sub_80A7EBC - str r0, [r5, 0x1C] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A7EA8: .4byte 0x0000ffe0 -_080A7EAC: .4byte 0x0000fff0 -_080A7EB0: .4byte gBattleAnimArgs -_080A7EB4: .4byte gBattleAnimTarget -_080A7EB8: .4byte sub_80A7EBC - thumb_func_end sub_80A7E14 - - thumb_func_start sub_80A7EBC -sub_80A7EBC: @ 80A7EBC - push {r4,lr} - adds r4, r0, 0 - bl AnimTranslateLinear - lsls r0, 24 - cmp r0, 0 - beq _080A7F20 - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080A7F20 - adds r0, r4, 0 - movs r1, 0 - bl SeekSpriteAnim - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - movs r2, 0 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x26] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - movs r0, 0x2 - strh r0, [r4, 0x24] - ldr r0, _080A7F28 @ =0x0000fffe - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3A] - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x30] - movs r1, 0x1 - eors r0, r1 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x32] - eors r0, r1 - strh r0, [r4, 0x32] - strh r2, [r4, 0x36] - strh r2, [r4, 0x34] - ldr r0, _080A7F2C @ =sub_80A7F30 - str r0, [r4, 0x1C] -_080A7F20: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A7F28: .4byte 0x0000fffe -_080A7F2C: .4byte sub_80A7F30 - thumb_func_end sub_80A7EBC - - thumb_func_start sub_80A7F30 -sub_80A7F30: @ 80A7F30 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080A7F48 - ldrh r0, [r4, 0x24] - negs r0, r0 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x26] - negs r0, r0 - strh r0, [r4, 0x26] -_080A7F48: - ldrh r0, [r4, 0x34] - movs r1, 0x1 - eors r0, r1 - movs r1, 0 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x33 - bne _080A7F8A - strh r1, [r4, 0x26] - strh r1, [r4, 0x24] - strh r1, [r4, 0x36] - strh r1, [r4, 0x34] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldrh r0, [r4, 0x38] - movs r1, 0x1 - eors r1, r0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - ldr r0, _080A7F90 @ =sub_80A7F94 - str r0, [r4, 0x1C] -_080A7F8A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A7F90: .4byte sub_80A7F94 - thumb_func_end sub_80A7F30 - - thumb_func_start sub_80A7F94 -sub_80A7F94: @ 80A7F94 - push {r4,lr} - adds r4, r0, 0 - bl AnimTranslateLinear - lsls r0, 24 - cmp r0, 0 - beq _080A7FA8 - adds r0, r4, 0 - bl DestroyAnimSprite -_080A7FA8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A7F94 - - thumb_func_start sub_80A7FB0 -sub_80A7FB0: @ 80A7FB0 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0x1 - bl GetAnimBattlerSpriteId - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0x1 - bl PrepareBattlerSpriteForRotScale - adds r0, r4, 0 - movs r1, 0xD0 - movs r2, 0xD0 - movs r3, 0 - bl SetSpriteRotScale - ldr r1, _080A8008 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x5] - lsrs r0, 4 - adds r0, 0x10 - movs r1, 0 - bl SetGreyscaleOrOriginalPalette - ldr r1, _080A800C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0x50 - strh r1, [r0, 0x8] - ldr r1, _080A8010 @ =sub_80A8014 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A8008: .4byte gSprites -_080A800C: .4byte gTasks -_080A8010: .4byte sub_80A8014 - thumb_func_end sub_80A7FB0 - - thumb_func_start sub_80A8014 -sub_80A8014: @ 80A8014 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080A806C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x8] - subs r1, 0x1 - strh r1, [r0, 0x8] - lsls r1, 16 - asrs r1, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _080A8064 - movs r0, 0x1 - bl GetAnimBattlerSpriteId - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl ResetSpriteRotScale - ldr r1, _080A8070 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x5] - lsrs r0, 4 - adds r0, 0x10 - movs r1, 0x1 - bl SetGreyscaleOrOriginalPalette - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080A8064: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A806C: .4byte gTasks -_080A8070: .4byte gSprites - thumb_func_end sub_80A8014 - - thumb_func_start sub_80A8074 -sub_80A8074: @ 80A8074 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080A80C0 @ =gTasks - adds r4, r0 - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - movs r5, 0 - strh r0, [r4, 0x8] - movs r1, 0 - bl PrepareBattlerSpriteForRotScale - strh r5, [r4, 0xA] - strh r5, [r4, 0xC] - strh r5, [r4, 0xE] - movs r0, 0x80 - lsls r0, 1 - strh r0, [r4, 0x10] - strh r5, [r4, 0x12] - strh r5, [r4, 0x14] - ldr r0, _080A80C4 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSpriteSubpriority - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x16] - ldr r0, _080A80C8 @ =sub_80A80CC - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A80C0: .4byte gTasks -_080A80C4: .4byte gBattleAnimAttacker -_080A80C8: .4byte sub_80A80CC - thumb_func_end sub_80A8074 - - thumb_func_start sub_80A80CC -sub_80A80CC: @ 80A80CC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080A80F0 @ =gTasks - adds r4, r0, r1 - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0x5 - bls _080A80E6 - b _080A81F6 -_080A80E6: - lsls r0, 2 - ldr r1, _080A80F4 @ =_080A80F8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080A80F0: .4byte gTasks -_080A80F4: .4byte _080A80F8 - .align 2, 0 -_080A80F8: - .4byte _080A8110 - .4byte _080A8158 - .4byte _080A818E - .4byte _080A8194 - .4byte _080A81A4 - .4byte _080A81D8 -_080A8110: - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080A8120 - cmp r0, 0x3 - beq _080A8120 - cmp r0, 0x6 - bne _080A8128 -_080A8120: - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80A8200 -_080A8128: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x10] - adds r0, 0x28 - strh r0, [r4, 0x10] - ldrb r0, [r4, 0x8] - movs r1, 0x10 - ldrsh r2, [r4, r1] - adds r1, r2, 0 - movs r3, 0 - bl SetSpriteRotScale - ldrb r0, [r4, 0x8] - bl SetBattlerSpriteYOffsetFromYScale - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0x20 - bne _080A81F6 - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] - b _080A81D0 -_080A8158: - movs r1, 0x14 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A81F6 - movs r2, 0x12 - ldrsh r1, [r4, r2] - cmp r1, 0x3 - bne _080A816E - strh r0, [r4, 0xC] - strh r1, [r4, 0xA] - b _080A81F6 -_080A816E: - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - movs r2, 0x80 - lsls r2, 1 - strh r2, [r4, 0x10] - ldrb r0, [r4, 0x8] - adds r1, r2, 0 - movs r3, 0 - bl SetSpriteRotScale - ldrb r0, [r4, 0x8] - bl SetBattlerSpriteYOffsetFromYScale - movs r0, 0x2 - strh r0, [r4, 0xA] - b _080A81F6 -_080A818E: - movs r0, 0 - strh r0, [r4, 0xA] - b _080A81F6 -_080A8194: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x20 - ble _080A81F6 - b _080A81CC -_080A81A4: - ldrh r0, [r4, 0xC] - adds r0, 0x2 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x10] - subs r0, 0x50 - strh r0, [r4, 0x10] - ldrb r0, [r4, 0x8] - movs r1, 0x10 - ldrsh r2, [r4, r1] - adds r1, r2, 0 - movs r3, 0 - bl SetSpriteRotScale - ldrb r0, [r4, 0x8] - bl SetBattlerSpriteYOffsetFromYScale - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0x20 - bne _080A81F6 -_080A81CC: - movs r0, 0 - strh r0, [r4, 0xC] -_080A81D0: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - b _080A81F6 -_080A81D8: - ldrb r0, [r4, 0x8] - bl ResetSpriteRotScale - ldr r2, _080A81FC @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x26] - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080A81F6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A81FC: .4byte gSprites - thumb_func_end sub_80A80CC - - thumb_func_start sub_80A8200 -sub_80A8200: @ 80A8200 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - movs r0, 0 - bl CloneBattlerSpriteWithBlend - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r0, 16 - asrs r4, r0, 16 - cmp r4, 0 - blt _080A82DA - bl AllocOamMatrix - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0xFF - bne _080A8244 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _080A8240 @ =gSprites - adds r0, r1 - bl obj_delete_but_dont_free_vram - b _080A82DA - .align 2, 0 -_080A8240: .4byte gSprites -_080A8244: - ldr r5, _080A82E8 @ =gSprites - lsls r3, r4, 4 - adds r3, r4 - lsls r3, 2 - adds r4, r3, r5 - ldrb r1, [r4, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - movs r1, 0x3 - orrs r0, r1 - strb r0, [r4, 0x1] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x1F - ands r6, r0 - lsls r2, r6, 1 - ldrb r1, [r4, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, 0x3] - ldrb r0, [r7, 0x16] - ldrb r1, [r7, 0xE] - subs r0, r1 - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrh r0, [r7, 0xE] - adds r0, 0x1 - strh r0, [r7, 0xE] - ldrh r0, [r7, 0x14] - adds r0, 0x1 - strh r0, [r7, 0x14] - movs r0, 0x10 - strh r0, [r4, 0x2E] - mov r0, r9 - strh r0, [r4, 0x30] - movs r0, 0x6 - strh r0, [r4, 0x32] - adds r5, 0x1C - adds r3, r5 - ldr r0, _080A82EC @ =sub_80A82F0 - str r0, [r3] - mov r1, r8 - lsls r0, r1, 24 - lsrs r0, 24 - movs r1, 0x10 - ldrsh r2, [r7, r1] - adds r1, r2, 0 - movs r3, 0 - bl SetSpriteRotScale - ldrb r0, [r4, 0x1] - movs r3, 0x4 - negs r3, r3 - ands r3, r0 - movs r0, 0x1 - orrs r3, r0 - strb r3, [r4, 0x1] - lsrs r1, r3, 6 - ldrb r2, [r4, 0x3] - lsrs r2, 6 - lsls r3, 30 - lsrs r3, 30 - adds r0, r4, 0 - bl CalcCenterToCornerVec -_080A82DA: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A82E8: .4byte gSprites -_080A82EC: .4byte sub_80A82F0 - thumb_func_end sub_80A8200 - - thumb_func_start sub_80A82F0 -sub_80A82F0: @ 80A82F0 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _080A832E - ldr r3, _080A8334 @ =gTasks - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsls r1, 1 - movs r0, 0x30 - ldrsh r2, [r4, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r3, 0x8 - adds r1, r3 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - adds r0, r4, 0 - bl obj_delete_but_dont_free_vram -_080A832E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A8334: .4byte gTasks - thumb_func_end sub_80A82F0 - - thumb_func_start sub_80A8338 -sub_80A8338: @ 80A8338 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080A835C @ =gTasks - adds r4, r0, r1 - ldr r5, _080A8360 @ =gBattleAnimArgs - movs r1, 0x2 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080A8364 - adds r0, r2, 0 - bl DestroyAnimVisualTask - b _080A838A - .align 2, 0 -_080A835C: .4byte gTasks -_080A8360: .4byte gBattleAnimArgs -_080A8364: - ldrb r0, [r5] - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r2, 0 - strh r1, [r4, 0x8] - strh r2, [r4, 0xA] - ldrh r0, [r5, 0x2] - strh r0, [r4, 0xC] - strh r2, [r4, 0xE] - strh r2, [r4, 0x10] - ldr r2, _080A8390 @ =gUnknown_83E3E60 - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldr r0, _080A8394 @ =sub_80A8398 - str r0, [r4] -_080A838A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A8390: .4byte gUnknown_83E3E60 -_080A8394: .4byte sub_80A8398 - thumb_func_end sub_80A8338 - - thumb_func_start sub_80A8398 -sub_80A8398: @ 80A8398 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080A83BC @ =gTasks - adds r4, r0, r1 - movs r0, 0xA - ldrsh r5, [r4, r0] - cmp r5, 0x1 - beq _080A8400 - cmp r5, 0x1 - bgt _080A83C0 - cmp r5, 0 - beq _080A83CA - b _080A84A8 - .align 2, 0 -_080A83BC: .4byte gTasks -_080A83C0: - cmp r5, 0x2 - beq _080A8434 - cmp r5, 0x3 - beq _080A8464 - b _080A84A8 -_080A83CA: - adds r0, r4, 0 - bl RunAffineAnimFromTaskData - ldrh r2, [r4, 0x10] - adds r2, 0x3 - strh r2, [r4, 0x10] - ldr r3, _080A83FC @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x26] - adds r1, r2 - strh r1, [r0, 0x26] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _080A84A8 - strh r5, [r4, 0xE] - b _080A845C - .align 2, 0 -_080A83FC: .4byte gSprites -_080A8400: - adds r0, r4, 0 - bl RunAffineAnimFromTaskData - ldr r2, _080A8430 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0x10] - ldrh r2, [r0, 0x26] - adds r1, r2 - strh r1, [r0, 0x26] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _080A84A8 - movs r0, 0 - strh r0, [r4, 0xE] - b _080A845C - .align 2, 0 -_080A8430: .4byte gSprites -_080A8434: - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080A845C - ldr r2, _080A8458 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x26] - subs r1, 0x2 - strh r1, [r0, 0x26] - ldrh r0, [r4, 0x10] - subs r0, 0x2 - strh r0, [r4, 0x10] - b _080A84A8 - .align 2, 0 -_080A8458: .4byte gSprites -_080A845C: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - b _080A84A8 -_080A8464: - adds r0, r4, 0 - bl RunAffineAnimFromTaskData - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _080A84A8 - ldrh r0, [r4, 0xC] - subs r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - cmp r0, 0 - bne _080A849C - ldr r2, _080A8498 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r5, [r0, 0x26] - adds r0, r6, 0 - bl DestroyAnimVisualTask - b _080A84A8 - .align 2, 0 -_080A8498: .4byte gSprites -_080A849C: - ldrb r1, [r4, 0x8] - ldr r2, _080A84B0 @ =gUnknown_83E3E60 - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - strh r5, [r4, 0xA] -_080A84A8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A84B0: .4byte gUnknown_83E3E60 - thumb_func_end sub_80A8398 - - thumb_func_start sub_80A84B4 -sub_80A84B4: @ 80A84B4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080A84E4 @ =gTasks - adds r4, r0 - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080A84E8 @ =gUnknown_83E3E80 - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldr r0, _080A84EC @ =sub_80A84F0 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A84E4: .4byte gTasks -_080A84E8: .4byte gUnknown_83E3E80 -_080A84EC: .4byte sub_80A84F0 - thumb_func_end sub_80A84B4 - - thumb_func_start sub_80A84F0 -sub_80A84F0: @ 80A84F0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080A8518 @ =gTasks - adds r0, r1 - bl RunAffineAnimFromTaskData - lsls r0, 24 - cmp r0, 0 - bne _080A8510 - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080A8510: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A8518: .4byte gTasks - thumb_func_end sub_80A84F0 - - thumb_func_start sub_80A851C -sub_80A851C: @ 80A851C - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080A854C @ =gBattleAnimAttacker - ldrb r0, [r5] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A8550 - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnim - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x20 - strh r0, [r4, 0x20] - movs r0, 0x40 - b _080A856A - .align 2, 0 -_080A854C: .4byte gBattleAnimAttacker -_080A8550: - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x20 - strh r0, [r4, 0x20] - ldr r0, _080A859C @ =0x0000ffc0 -_080A856A: - strh r0, [r4, 0x30] - ldr r0, _080A85A0 @ =gBattleAnimAttacker - ldrb r0, [r0] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - strh r0, [r4, 0x22] - movs r0, 0x34 - strh r0, [r4, 0x2E] - strh r1, [r4, 0x32] - strh r1, [r4, 0x34] - strh r1, [r4, 0x36] - ldr r1, _080A85A4 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A85A8 @ =TranslateSpriteLinearFixedPoint - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A859C: .4byte 0x0000ffc0 -_080A85A0: .4byte gBattleAnimAttacker -_080A85A4: .4byte DestroyAnimSprite -_080A85A8: .4byte TranslateSpriteLinearFixedPoint - thumb_func_end sub_80A851C - - thumb_func_start sub_80A85AC -sub_80A85AC: @ 80A85AC - push {r4-r6,lr} - adds r6, r0, 0 - ldr r0, _080A85C0 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A85C8 - ldr r0, _080A85C4 @ =gBattleAnimAttacker - b _080A85CA - .align 2, 0 -_080A85C0: .4byte gBattleAnimArgs -_080A85C4: .4byte gBattleAnimAttacker -_080A85C8: - ldr r0, _080A8628 @ =gBattleAnimTarget -_080A85CA: - ldrb r5, [r0] - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A85E4 - ldr r1, _080A862C @ =gBattleAnimArgs - movs r2, 0x2 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1, 0x2] -_080A85E4: - adds r0, r5, 0 - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r4, _080A862C @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r6, 0x20] - adds r0, r5, 0 - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x4] - adds r0, r4 - strh r0, [r6, 0x22] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - bgt _080A8616 - movs r0, 0x8 - strh r0, [r6, 0x22] -_080A8616: - ldr r1, _080A8630 @ =DestroySpriteAndMatrix - adds r0, r6, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A8634 @ =RunStoredCallbackWhenAffineAnimEnds - str r0, [r6, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A8628: .4byte gBattleAnimTarget -_080A862C: .4byte gBattleAnimArgs -_080A8630: .4byte DestroySpriteAndMatrix -_080A8634: .4byte RunStoredCallbackWhenAffineAnimEnds - thumb_func_end sub_80A85AC - - thumb_func_start sub_80A8638 -sub_80A8638: @ 80A8638 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080A866C @ =gTasks - adds r4, r0 - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0 - strh r1, [r4, 0x8] - strh r0, [r4, 0xA] - ldr r2, _080A8670 @ =gUnknown_83E3F1C - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldr r0, _080A8674 @ =sub_80A8678 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A866C: .4byte gTasks -_080A8670: .4byte gUnknown_83E3F1C -_080A8674: .4byte sub_80A8678 - thumb_func_end sub_80A8638 - - thumb_func_start sub_80A8678 -sub_80A8678: @ 80A8678 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080A86A0 @ =gTasks - adds r0, r1 - bl RunAffineAnimFromTaskData - lsls r0, 24 - cmp r0, 0 - bne _080A8698 - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080A8698: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A86A0: .4byte gTasks - thumb_func_end sub_80A8678 - - thumb_func_start sub_80A86A4 -sub_80A86A4: @ 80A86A4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080A8718 @ =gTasks - adds r4, r1, r0 - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - movs r2, 0 - strh r0, [r4, 0x8] - strh r2, [r4, 0xA] - movs r0, 0x4 - strh r0, [r4, 0xC] - movs r0, 0x7 - strh r0, [r4, 0xE] - movs r0, 0x3 - strh r0, [r4, 0x10] - ldr r3, _080A871C @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0, 0x20] - strh r0, [r4, 0x12] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0, 0x22] - strh r0, [r4, 0x14] - strh r2, [r4, 0x16] - strh r2, [r4, 0x18] - movs r0, 0x2 - strh r0, [r4, 0x1A] - ldr r0, _080A8720 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A870E - movs r1, 0xC - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4, 0xC] -_080A870E: - ldr r0, _080A8724 @ =sub_80A8728 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A8718: .4byte gTasks -_080A871C: .4byte gSprites -_080A8720: .4byte gBattleAnimAttacker -_080A8724: .4byte sub_80A8728 - thumb_func_end sub_80A86A4 - - thumb_func_start sub_80A8728 -sub_80A8728: @ 80A8728 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080A8770 @ =gTasks - adds r3, r0, r1 - ldrh r0, [r3, 0x16] - adds r0, 0x1 - strh r0, [r3, 0x16] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080A878E - movs r0, 0 - strh r0, [r3, 0x16] - ldrh r0, [r3, 0x18] - adds r0, 0x1 - strh r0, [r3, 0x18] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A8778 - ldr r2, _080A8774 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x1A] - ldrh r2, [r0, 0x22] - adds r1, r2 - b _080A878C - .align 2, 0 -_080A8770: .4byte gTasks -_080A8774: .4byte gSprites -_080A8778: - ldr r2, _080A87A0 @ =gSprites - movs r5, 0x8 - ldrsh r1, [r3, r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - ldrh r2, [r3, 0x1A] - subs r1, r2 -_080A878C: - strh r1, [r0, 0x22] -_080A878E: - movs r1, 0xA - ldrsh r0, [r3, r1] - cmp r0, 0x1 - beq _080A87DC - cmp r0, 0x1 - bgt _080A87A4 - cmp r0, 0 - beq _080A87AA - b _080A886C - .align 2, 0 -_080A87A0: .4byte gSprites -_080A87A4: - cmp r0, 0x2 - beq _080A880C - b _080A886C -_080A87AA: - ldr r2, _080A87D8 @ =gSprites - movs r5, 0x8 - ldrsh r1, [r3, r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0xC] - ldrh r2, [r0, 0x20] - adds r1, r2 - strh r1, [r0, 0x20] - ldrh r0, [r3, 0xE] - subs r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _080A886C - movs r0, 0xE - strh r0, [r3, 0xE] - movs r0, 0x1 - strh r0, [r3, 0xA] - b _080A886C - .align 2, 0 -_080A87D8: .4byte gSprites -_080A87DC: - ldr r2, _080A8808 @ =gSprites - movs r5, 0x8 - ldrsh r1, [r3, r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x20] - ldrh r2, [r3, 0xC] - subs r1, r2 - strh r1, [r0, 0x20] - ldrh r0, [r3, 0xE] - subs r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _080A886C - movs r0, 0x7 - strh r0, [r3, 0xE] - movs r0, 0x2 - strh r0, [r3, 0xA] - b _080A886C - .align 2, 0 -_080A8808: .4byte gSprites -_080A880C: - ldr r2, _080A8844 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0xC] - ldrh r5, [r0, 0x20] - adds r1, r5 - strh r1, [r0, 0x20] - ldrh r0, [r3, 0xE] - subs r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0 - bne _080A886C - ldrh r0, [r3, 0x10] - subs r0, 0x1 - strh r0, [r3, 0x10] - lsls r0, 16 - cmp r0, 0 - beq _080A8848 - movs r0, 0x7 - strh r0, [r3, 0xE] - strh r1, [r3, 0xA] - b _080A886C - .align 2, 0 -_080A8844: .4byte gSprites -_080A8848: - ldrh r1, [r3, 0x18] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A8866 - movs r0, 0x8 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - ldrh r2, [r3, 0x1A] - subs r1, r2 - strh r1, [r0, 0x22] -_080A8866: - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080A886C: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A8728 - - thumb_func_start sub_80A8874 -sub_80A8874: @ 80A8874 - push {r4-r6,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080A88C4 @ =gTasks - adds r5, r1, r0 - ldr r4, _080A88C8 @ =gBattleAnimTarget - ldrb r0, [r4] - bl GetBattlerYCoordWithElevation - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x20 - movs r1, 0 - strh r0, [r5, 0x8] - movs r0, 0x4 - strh r0, [r5, 0xA] - strh r1, [r5, 0xC] - strh r1, [r5, 0xE] - strh r1, [r5, 0x10] - strh r1, [r5, 0x12] - ldrb r0, [r4] - bl GetBattlerSpriteCoordAttr - strh r0, [r5, 0x26] - ldrb r0, [r4] - bl GetBattlerSpriteBGPriorityRank - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A88D4 - ldr r0, _080A88CC @ =gBattle_BG1_X - ldrh r0, [r0] - strh r0, [r5, 0x14] - ldr r0, _080A88D0 @ =0x04000014 - b _080A88DC - .align 2, 0 -_080A88C4: .4byte gTasks -_080A88C8: .4byte gBattleAnimTarget -_080A88CC: .4byte gBattle_BG1_X -_080A88D0: .4byte 0x04000014 -_080A88D4: - ldr r0, _080A8940 @ =gBattle_BG2_X - ldrh r0, [r0] - strh r0, [r5, 0x14] - ldr r0, _080A8944 @ =0x04000018 -_080A88DC: - str r0, [sp] - ldrh r0, [r5, 0x8] - adds r1, r0, 0 - subs r1, 0x40 - lsls r2, r1, 16 - lsls r0, 16 - cmp r2, r0 - bgt _080A891A - ldr r4, _080A8948 @ =gScanlineEffectRegBuffers - movs r0, 0xF0 - lsls r0, 3 - adds r6, r4, r0 -_080A88F4: - asrs r3, r2, 16 - cmp r3, 0 - blt _080A890C - lsls r1, r3, 1 - adds r2, r1, r4 - ldrh r0, [r5, 0x14] - adds r0, 0xF0 - strh r0, [r2] - adds r1, r6 - ldrh r0, [r5, 0x14] - adds r0, 0xF0 - strh r0, [r1] -_080A890C: - adds r0, r3, 0x1 - lsls r2, r0, 16 - asrs r1, r2, 16 - movs r3, 0x8 - ldrsh r0, [r5, r3] - cmp r1, r0 - ble _080A88F4 -_080A891A: - ldr r0, _080A894C @ =0xa2600001 - str r0, [sp, 0x4] - mov r1, sp - movs r2, 0 - movs r0, 0x1 - strb r0, [r1, 0x8] - mov r0, sp - strb r2, [r0, 0x9] - ldr r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - bl ScanlineEffect_SetParams - ldr r0, _080A8950 @ =sub_80A8954 - str r0, [r5] - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A8940: .4byte gBattle_BG2_X -_080A8944: .4byte 0x04000018 -_080A8948: .4byte gScanlineEffectRegBuffers -_080A894C: .4byte 0xa2600001 -_080A8950: .4byte sub_80A8954 - thumb_func_end sub_80A8874 - - thumb_func_start sub_80A8954 -sub_80A8954: @ 80A8954 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080A8974 @ =gTasks - adds r3, r0, r1 - movs r1, 0x10 - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _080A8978 - cmp r0, 0x1 - beq _080A898E - b _080A8A0E - .align 2, 0 -_080A8974: .4byte gTasks -_080A8978: - ldrh r0, [r3, 0x12] - adds r0, 0x1 - strh r0, [r3, 0x12] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080A8A0E - ldrh r0, [r3, 0x10] - adds r0, 0x1 - strh r0, [r3, 0x10] - b _080A8A0E -_080A898E: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080A8A0E - movs r0, 0 - strh r0, [r3, 0xA] - ldrh r1, [r3, 0xE] - movs r0, 0x3 - ands r0, r1 - strh r0, [r3, 0xC] - ldrh r0, [r3, 0x8] - subs r0, r1 - strh r0, [r3, 0x12] - movs r2, 0xC - ldrsh r1, [r3, r2] - cmp r1, 0x1 - beq _080A89C4 - cmp r1, 0x1 - ble _080A89CC - cmp r1, 0x2 - beq _080A89C8 - cmp r1, 0x3 - beq _080A89C8 - b _080A89CC -_080A89C4: - subs r0, 0x2 - b _080A89CA -_080A89C8: - adds r0, 0x1 -_080A89CA: - strh r0, [r3, 0x12] -_080A89CC: - movs r1, 0x12 - ldrsh r0, [r3, r1] - cmp r0, 0 - blt _080A89F0 - ldr r2, _080A8A14 @ =gScanlineEffectRegBuffers - lsls r0, 1 - adds r0, r2 - ldrh r1, [r3, 0x14] - strh r1, [r0] - movs r1, 0x12 - ldrsh r0, [r3, r1] - lsls r0, 1 - movs r1, 0xF0 - lsls r1, 3 - adds r2, r1 - adds r0, r2 - ldrh r1, [r3, 0x14] - strh r1, [r0] -_080A89F0: - ldrh r0, [r3, 0xE] - adds r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x26 - ldrsh r1, [r3, r2] - cmp r0, r1 - blt _080A8A0E - ldr r1, _080A8A18 @ =gScanlineEffect - movs r0, 0x3 - strb r0, [r1, 0x15] - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080A8A0E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A8A14: .4byte gScanlineEffectRegBuffers -_080A8A18: .4byte gScanlineEffect - thumb_func_end sub_80A8954 - - thumb_func_start sub_80A8A1C -sub_80A8A1C: @ 80A8A1C - push {r4-r6,lr} - adds r4, r0, 0 - ldr r6, _080A8A70 @ =gBattleAnimTarget - ldrb r0, [r6] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x10 - movs r5, 0 - strh r0, [r4, 0x20] - ldrb r0, [r6] - bl GetBattlerYCoordWithElevation - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x10 - strh r0, [r4, 0x22] - strh r5, [r4, 0x2E] - strh r5, [r4, 0x30] - strh r5, [r4, 0x32] - movs r0, 0x10 - strh r0, [r4, 0x34] - strh r5, [r4, 0x36] - ldrb r0, [r6] - movs r1, 0 - bl GetBattlerSpriteCoordAttr - adds r0, 0x2 - strh r0, [r4, 0x38] - movs r0, 0x3F - bl BattleAnimAdjustPanning - lsls r0, 24 - asrs r0, 24 - strh r0, [r4, 0x3A] - ldr r0, _080A8A74 @ =sub_80A8A78 - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A8A70: .4byte gBattleAnimTarget -_080A8A74: .4byte sub_80A8A78 - thumb_func_end sub_80A8A1C - - thumb_func_start sub_80A8A78 -sub_80A8A78: @ 80A8A78 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x2E - ldrsh r1, [r4, r0] - cmp r1, 0x1 - beq _080A8ADC - cmp r1, 0x1 - bgt _080A8A8E - cmp r1, 0 - beq _080A8A94 - b _080A8BBC -_080A8A8E: - cmp r1, 0x2 - beq _080A8B6E - b _080A8BBC -_080A8A94: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A8ABE - strh r1, [r4, 0x32] - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsrs r1, r2, 2 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080A8ABE: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080A8BBC - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x5 - negs r1, r1 - ands r1, r0 - strb r1, [r2] - b _080A8B66 -_080A8ADC: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080A8B22 - ldrh r2, [r4, 0x32] - movs r3, 0x32 - ldrsh r1, [r4, r3] - movs r3, 0x38 - ldrsh r0, [r4, r3] - cmp r1, r0 - bge _080A8B22 - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - subs r0, 0x1 - strh r0, [r4, 0x22] - adds r0, r2, 0x1 - strh r0, [r4, 0x32] - movs r1, 0x32 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl __modsi3 - lsls r0, 16 - cmp r0, 0 - bne _080A8B22 - ldrh r1, [r4, 0x3A] - lsls r1, 24 - asrs r1, 24 - movs r0, 0xC6 - bl PlaySE12WithPanning -_080A8B22: - ldrh r0, [r4, 0x34] - ldrh r2, [r4, 0x36] - adds r1, r0, r2 - strh r1, [r4, 0x36] - lsls r0, r1, 16 - asrs r2, r0, 16 - cmp r2, 0x1F - ble _080A8B36 - movs r0, 0x40 - b _080A8B44 -_080A8B36: - movs r0, 0x20 - negs r0, r0 - cmp r2, r0 - bgt _080A8B50 - movs r2, 0x40 - negs r2, r2 - adds r0, r2, 0 -_080A8B44: - subs r0, r1 - strh r0, [r4, 0x36] - movs r3, 0x34 - ldrsh r0, [r4, r3] - negs r0, r0 - strh r0, [r4, 0x34] -_080A8B50: - ldrh r0, [r4, 0x36] - movs r2, 0 - strh r0, [r4, 0x24] - movs r0, 0x38 - ldrsh r1, [r4, r0] - movs r3, 0x32 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _080A8BBC - strh r2, [r4, 0x30] - strh r2, [r4, 0x32] -_080A8B66: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080A8BBC -_080A8B6E: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A8B9A - movs r0, 0 - strh r0, [r4, 0x32] - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsrs r1, r2, 2 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080A8B9A: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080A8BBC - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r0, r4, 0 - bl DestroyAnimSprite -_080A8BBC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A8A78 - - thumb_func_start sub_80A8BC4 -sub_80A8BC4: @ 80A8BC4 - push {r4-r7,lr} - sub sp, 0x4 - adds r6, r0, 0 - movs r5, 0 - mov r0, sp - strh r5, [r0] - mov r1, sp - adds r1, 0x2 - strh r5, [r1] - ldr r0, _080A8BE8 @ =gBattleAnimArgs - movs r3, 0x4 - ldrsh r2, [r0, r3] - adds r7, r1, 0 - adds r1, r0, 0 - cmp r2, 0 - bne _080A8BF0 - ldr r0, _080A8BEC @ =gBattleAnimAttacker - b _080A8BF2 - .align 2, 0 -_080A8BE8: .4byte gBattleAnimArgs -_080A8BEC: .4byte gBattleAnimAttacker -_080A8BF0: - ldr r0, _080A8C2C @ =gBattleAnimTarget -_080A8BF2: - ldrb r5, [r0] - ldrb r1, [r1, 0x6] - movs r0, 0x1 - adds r4, r0, 0 - eors r4, r1 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080A8C6A - movs r1, 0x2 - adds r0, r5, 0 - eors r0, r1 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080A8C6A - adds r0, r5, 0 - adds r1, r4, 0 - mov r2, sp - adds r3, r7, 0 - bl SetAverageBattlerPositions - cmp r4, 0 - bne _080A8C30 - adds r0, r5, 0 - movs r1, 0 - b _080A8C34 - .align 2, 0 -_080A8C2C: .4byte gBattleAnimTarget -_080A8C30: - adds r0, r5, 0 - movs r1, 0x2 -_080A8C34: - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A8C60 - ldr r2, _080A8C5C @ =gBattleAnimArgs - mov r0, sp - ldrh r1, [r0] - subs r1, r4 - ldrh r0, [r2] - subs r1, r0 - subs r0, r1 - strh r0, [r2] - b _080A8C6A - .align 2, 0 -_080A8C5C: .4byte gBattleAnimArgs -_080A8C60: - ldr r1, _080A8C7C @ =gBattleAnimArgs - mov r0, sp - ldrh r0, [r0] - subs r0, r4 - strh r0, [r1] -_080A8C6A: - ldr r1, _080A8C80 @ =AnimSpriteOnMonPos - str r1, [r6, 0x1C] - adds r0, r6, 0 - bl _call_via_r1 - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A8C7C: .4byte gBattleAnimArgs -_080A8C80: .4byte AnimSpriteOnMonPos - thumb_func_end sub_80A8BC4 - - thumb_func_start sub_80A8C84 -sub_80A8C84: @ 80A8C84 - push {r4,lr} - adds r4, r0, 0 - bl AnimTranslateLinear - lsls r0, 24 - cmp r0, 0 - beq _080A8C9E - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroyAnimSprite -_080A8C9E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A8C84 - - thumb_func_start sub_80A8CA4 -sub_80A8CA4: @ 80A8CA4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r5, r0, 0 - movs r6, 0 - mov r0, sp - strh r6, [r0] - mov r1, sp - adds r1, 0x2 - strh r6, [r1] - ldr r0, _080A8CD0 @ =gBattleAnimArgs - movs r2, 0xA - ldrsh r0, [r0, r2] - cmp r0, 0 - bne _080A8CDC - ldr r0, _080A8CD4 @ =gBattleAnimAttacker - ldrb r7, [r0] - ldr r0, _080A8CD8 @ =gBattleAnimTarget - b _080A8CE2 - .align 2, 0 -_080A8CD0: .4byte gBattleAnimArgs -_080A8CD4: .4byte gBattleAnimAttacker -_080A8CD8: .4byte gBattleAnimTarget -_080A8CDC: - ldr r0, _080A8CFC @ =gBattleAnimTarget - ldrb r7, [r0] - ldr r0, _080A8D00 @ =gBattleAnimAttacker -_080A8CE2: - ldrb r0, [r0] - mov r8, r0 - ldr r0, _080A8D04 @ =gBattleAnimArgs - movs r3, 0xC - ldrsh r0, [r0, r3] - cmp r0, 0 - bne _080A8D08 - movs r0, 0 - mov r10, r0 - movs r1, 0x1 - str r1, [sp, 0x4] - b _080A8D10 - .align 2, 0 -_080A8CFC: .4byte gBattleAnimTarget -_080A8D00: .4byte gBattleAnimAttacker -_080A8D04: .4byte gBattleAnimArgs -_080A8D08: - movs r2, 0x2 - mov r10, r2 - movs r3, 0x3 - str r3, [sp, 0x4] -_080A8D10: - adds r0, r7, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A8D6C - adds r0, r7, 0 - mov r1, r10 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r1, _080A8D50 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - movs r0, 0x2 - mov r4, r8 - eors r4, r0 - adds r0, r4, 0 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080A8D5C - ldr r2, _080A8D54 @ =gSprites - ldr r0, _080A8D58 @ =gBattlerSpriteIds - adds r0, r4, r0 - b _080A8DEA - .align 2, 0 -_080A8D50: .4byte gBattleAnimArgs -_080A8D54: .4byte gSprites -_080A8D58: .4byte gBattlerSpriteIds -_080A8D5C: - ldr r2, _080A8D64 @ =gSprites - ldr r0, _080A8D68 @ =gBattlerSpriteIds - add r0, r8 - b _080A8DEA - .align 2, 0 -_080A8D64: .4byte gSprites -_080A8D68: .4byte gBattlerSpriteIds -_080A8D6C: - adds r0, r7, 0 - mov r1, r10 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080A8DD4 @ =gBattleAnimArgs - ldrh r1, [r1] - subs r0, r1 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A8DE4 - movs r0, 0x2 - adds r4, r7, 0 - eors r4, r0 - adds r0, r4, 0 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080A8DE4 - ldr r3, _080A8DD8 @ =gSprites - ldr r2, _080A8DDC @ =gBattlerSpriteIds - adds r0, r7, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r6, r0, r3 - adds r2, r4, r2 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r3 - movs r0, 0x20 - ldrsh r1, [r6, r0] - movs r3, 0x20 - ldrsh r0, [r2, r3] - cmp r1, r0 - bge _080A8DE0 - adds r0, r2, 0 - adds r0, 0x43 - ldrb r0, [r0] - adds r0, 0x1 - b _080A8DFA - .align 2, 0 -_080A8DD4: .4byte gBattleAnimArgs -_080A8DD8: .4byte gSprites -_080A8DDC: .4byte gBattlerSpriteIds -_080A8DE0: - adds r0, r6, 0 - b _080A8DF4 -_080A8DE4: - ldr r2, _080A8E40 @ =gSprites - ldr r0, _080A8E44 @ =gBattlerSpriteIds - adds r0, r7, r0 -_080A8DEA: - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 -_080A8DF4: - adds r0, 0x43 - ldrb r0, [r0] - subs r0, 0x1 -_080A8DFA: - adds r1, r5, 0 - adds r1, 0x43 - strb r0, [r1] - adds r0, r7, 0 - ldr r1, [sp, 0x4] - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r4, _080A8E48 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - lsls r0, 16 - lsrs r6, r0, 16 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A8E4C - movs r1, 0x2 - mov r0, r8 - eors r0, r1 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080A8E4C - ldrb r1, [r4, 0xC] - mov r0, r8 - mov r2, sp - mov r3, sp - adds r3, 0x2 - bl SetAverageBattlerPositions - b _080A8E6C - .align 2, 0 -_080A8E40: .4byte gSprites -_080A8E44: .4byte gBattlerSpriteIds -_080A8E48: .4byte gBattleAnimArgs -_080A8E4C: - mov r4, sp - mov r0, r8 - mov r1, r10 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - mov r0, r8 - ldr r1, [sp, 0x4] - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - mov r2, sp - strh r0, [r2, 0x2] -_080A8E6C: - mov r0, r8 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A8E90 - mov r3, sp - mov r2, sp - ldr r1, _080A8E8C @ =gBattleAnimArgs - ldrh r0, [r1, 0x6] - ldrh r2, [r2] - adds r0, r2 - strh r0, [r3] - adds r2, r1, 0 - b _080A8E9E - .align 2, 0 -_080A8E8C: .4byte gBattleAnimArgs -_080A8E90: - mov r3, sp - mov r0, sp - ldr r2, _080A8EE0 @ =gBattleAnimArgs - ldrh r0, [r0] - ldrh r1, [r2, 0x6] - subs r0, r1 - strh r0, [r3] -_080A8E9E: - ldrh r1, [r2, 0x8] - mov r3, sp - ldrh r3, [r3, 0x2] - adds r1, r3 - mov r0, sp - strh r1, [r0, 0x2] - mov r3, r9 - strh r3, [r5, 0x30] - strh r3, [r5, 0x20] - strh r6, [r5, 0x34] - strh r6, [r5, 0x22] - ldrh r0, [r0] - strh r0, [r5, 0x32] - strh r1, [r5, 0x36] - ldrh r0, [r2] - strh r0, [r5, 0x2E] - adds r0, r5, 0 - bl InitAnimLinearTranslation - ldr r1, _080A8EE4 @ =sub_80A8C84 - str r1, [r5, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A8EE0: .4byte gBattleAnimArgs -_080A8EE4: .4byte sub_80A8C84 - thumb_func_end sub_80A8CA4 - - thumb_func_start sub_80A8EE8 -sub_80A8EE8: @ 80A8EE8 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080A8F28 @ =0x000027db - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _080A8F0E - lsls r0, 20 - ldr r1, _080A8F2C @ =0x01010000 - adds r0, r1 - lsrs r0, 16 - ldr r1, _080A8F30 @ =gBattleAnimArgs - ldrb r2, [r1, 0xA] - ldrh r3, [r1, 0x8] - movs r1, 0xF - bl BlendPalette -_080A8F0E: - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r1, _080A8F34 @ =AnimSpriteOnMonPos - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A8F28: .4byte 0x000027db -_080A8F2C: .4byte 0x01010000 -_080A8F30: .4byte gBattleAnimArgs -_080A8F34: .4byte AnimSpriteOnMonPos - thumb_func_end sub_80A8EE8 - - thumb_func_start sub_80A8F38 -sub_80A8F38: @ 80A8F38 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl InitSpritePosToAnimAttacker - ldr r0, _080A8F6C @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - movs r1, 0xA0 - cmp r0, 0 - beq _080A8F54 - ldr r1, _080A8F70 @ =0x0000ff60 -_080A8F54: - movs r0, 0xE0 - lsls r0, 2 - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] - ldr r0, _080A8F74 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x3C] - ldr r0, _080A8F78 @ =sub_80A8F7C - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A8F6C: .4byte gBattleAnimAttacker -_080A8F70: .4byte 0x0000ff60 -_080A8F74: .4byte gBattleAnimArgs -_080A8F78: .4byte sub_80A8F7C - thumb_func_end sub_80A8F38 - - thumb_func_start sub_80A8F7C -sub_80A8F7C: @ 80A8F7C - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x2E] - lsls r0, r2, 16 - asrs r0, 24 - ldrh r1, [r4, 0x26] - subs r1, r0 - movs r5, 0 - strh r1, [r4, 0x26] - ldrh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - subs r2, 0x20 - strh r2, [r4, 0x2E] - ldr r0, _080A8FE8 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - movs r1, 0xA0 - cmp r0, 0 - beq _080A8FAC - ldr r1, _080A8FEC @ =0x0000ff60 -_080A8FAC: - lsls r0, r1, 16 - asrs r0, 16 - ldrh r1, [r4, 0x30] - adds r0, r1 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x26] - movs r2, 0x26 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080A8FE0 - ldrh r2, [r4, 0x22] - adds r0, r1, r2 - strh r0, [r4, 0x22] - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - strh r5, [r4, 0x26] - strh r5, [r4, 0x24] - strh r5, [r4, 0x2E] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r0, _080A8FF0 @ =sub_80A8FF4 - str r0, [r4, 0x1C] -_080A8FE0: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A8FE8: .4byte gBattleAnimAttacker -_080A8FEC: .4byte 0x0000ff60 -_080A8FF0: .4byte sub_80A8FF4 - thumb_func_end sub_80A8F7C - - thumb_func_start sub_80A8FF4 -sub_80A8FF4: @ 80A8FF4 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r1, r0, 0x1 - strh r1, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _080A9012 - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAffineAnim - ldr r0, _080A9018 @ =sub_80A901C - str r0, [r4, 0x1C] -_080A9012: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A9018: .4byte sub_80A901C - thumb_func_end sub_80A8FF4 - - thumb_func_start sub_80A901C -sub_80A901C: @ 80A901C - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080A9082 - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - movs r0, 0 - strh r0, [r4, 0x2E] - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A9068 - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x10 - ldr r3, _080A905C @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080A9060 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - ldr r0, _080A9064 @ =sub_80A9094 - b _080A9080 - .align 2, 0 -_080A905C: .4byte 0x000003ff -_080A9060: .4byte 0xfffffc00 -_080A9064: .4byte sub_80A9094 -_080A9068: - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x20 - ldr r3, _080A9088 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080A908C @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - ldr r0, _080A9090 @ =sub_80A911C -_080A9080: - str r0, [r4, 0x1C] -_080A9082: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A9088: .4byte 0x000003ff -_080A908C: .4byte 0xfffffc00 -_080A9090: .4byte sub_80A911C - thumb_func_end sub_80A901C - - thumb_func_start sub_80A9094 -sub_80A9094: @ 80A9094 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x26] - subs r0, 0x2 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - bne _080A90CA - movs r0, 0x10 - strh r0, [r4, 0x2E] - movs r0, 0 - strh r0, [r4, 0x30] - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - ldrh r1, [r4, 0x2E] - movs r0, 0x52 - bl SetGpuReg - ldr r0, _080A90D0 @ =sub_80A90D4 - str r0, [r4, 0x1C] -_080A90CA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A90D0: .4byte sub_80A90D4 - thumb_func_end sub_80A9094 - - thumb_func_start sub_80A90D4 -sub_80A90D4: @ 80A90D4 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - adds r1, r0, 0x1 - strh r1, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x3 - bl __modsi3 - lsls r0, 16 - cmp r0, 0 - bne _080A9112 - ldrh r1, [r4, 0x2E] - subs r1, 0x1 - strh r1, [r4, 0x2E] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A9112 - ldr r0, _080A9118 @ =sub_80A911C - str r0, [r4, 0x1C] -_080A9112: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A9118: .4byte sub_80A911C - thumb_func_end sub_80A90D4 - - thumb_func_start sub_80A911C -sub_80A911C: @ 80A911C - push {lr} - adds r3, r0, 0 - ldr r0, _080A9144 @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080A9148 @ =0x0000ffff - cmp r1, r0 - bne _080A9154 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - movs r1, 0x3C - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _080A9150 - ldr r0, _080A914C @ =sub_80A915C - b _080A9152 - .align 2, 0 -_080A9144: .4byte gBattleAnimArgs -_080A9148: .4byte 0x0000ffff -_080A914C: .4byte sub_80A915C -_080A9150: - ldr r0, _080A9158 @ =DestroyAnimSprite -_080A9152: - str r0, [r3, 0x1C] -_080A9154: - pop {r0} - bx r0 - .align 2, 0 -_080A9158: .4byte DestroyAnimSprite - thumb_func_end sub_80A911C - - thumb_func_start sub_80A915C -sub_80A915C: @ 80A915C - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r4, 0 - bl DestroyAnimSprite - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A915C - - thumb_func_start sub_80A917C -sub_80A917C: @ 80A917C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080A91AC @ =gTasks - adds r4, r0 - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - strh r1, [r4, 0x8] - ldr r2, _080A91B0 @ =gUnknown_83E4128 - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldr r0, _080A91B4 @ =sub_80A91B8 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A91AC: .4byte gTasks -_080A91B0: .4byte gUnknown_83E4128 -_080A91B4: .4byte sub_80A91B8 - thumb_func_end sub_80A917C - - thumb_func_start sub_80A91B8 -sub_80A91B8: @ 80A91B8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080A9208 @ =gTasks - adds r4, r0, r1 - adds r0, r4, 0 - bl RunAffineAnimFromTaskData - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - bne _080A9202 - ldr r2, _080A920C @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r3, [r0, 0x26] - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080A9202: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A9208: .4byte gTasks -_080A920C: .4byte gSprites - thumb_func_end sub_80A91B8 - - thumb_func_start sub_80A9210 -sub_80A9210: @ 80A9210 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080A9244 @ =gTasks - adds r4, r1, r0 - movs r0, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - movs r0, 0x3 - strh r0, [r4, 0x20] - ldr r0, _080A9248 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A9250 - ldr r0, _080A924C @ =0x0000ffff - strh r0, [r4, 0x22] - movs r0, 0x8 - b _080A9256 - .align 2, 0 -_080A9244: .4byte gTasks -_080A9248: .4byte gBattleAnimTarget -_080A924C: .4byte 0x0000ffff -_080A9250: - movs r0, 0x1 - strh r0, [r4, 0x22] - ldr r0, _080A9270 @ =0x0000fff8 -_080A9256: - strh r0, [r4, 0x24] - movs r0, 0x1 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - ldr r0, _080A9274 @ =sub_80A9278 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A9270: .4byte 0x0000fff8 -_080A9274: .4byte sub_80A9278 - thumb_func_end sub_80A9210 - - thumb_func_start sub_80A9278 -sub_80A9278: @ 80A9278 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080A929C @ =gTasks - adds r3, r0, r1 - movs r0, 0x8 - ldrsh r4, [r3, r0] - cmp r4, 0x1 - beq _080A92CC - cmp r4, 0x1 - bgt _080A92A0 - cmp r4, 0 - beq _080A92AA - b _080A9392 - .align 2, 0 -_080A929C: .4byte gTasks -_080A92A0: - cmp r4, 0x2 - beq _080A9348 - cmp r4, 0x3 - beq _080A9362 - b _080A9392 -_080A92AA: - ldr r2, _080A92C8 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x24] - ldrh r2, [r0, 0x24] - adds r1, r2 - strh r1, [r0, 0x24] - strh r4, [r3, 0xA] - strh r4, [r3, 0xC] - strh r4, [r3, 0xE] - b _080A935A - .align 2, 0 -_080A92C8: .4byte gSprites -_080A92CC: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A9392 - movs r0, 0 - strh r0, [r3, 0xA] - ldrh r0, [r3, 0xC] - adds r0, 0x1 - strh r0, [r3, 0xC] - ands r0, r4 - lsls r0, 16 - cmp r0, 0 - beq _080A9304 - ldr r2, _080A9300 @ =gSprites - movs r4, 0x26 - ldrsh r1, [r3, r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x24] - adds r1, 0x6 - b _080A9316 - .align 2, 0 -_080A9300: .4byte gSprites -_080A9304: - ldr r2, _080A9344 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x24] - subs r1, 0x6 -_080A9316: - strh r1, [r0, 0x24] - ldrh r0, [r3, 0xE] - adds r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _080A9392 - ldrh r1, [r3, 0xC] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A935A - movs r1, 0x26 - ldrsh r0, [r3, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r1, 0x24] - subs r0, 0x6 - strh r0, [r1, 0x24] - b _080A935A - .align 2, 0 -_080A9344: .4byte gSprites -_080A9348: - ldrh r0, [r3, 0x20] - subs r0, 0x1 - strh r0, [r3, 0x20] - lsls r0, 16 - cmp r0, 0 - beq _080A935A - movs r0, 0 - strh r0, [r3, 0x8] - b _080A9392 -_080A935A: - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] - b _080A9392 -_080A9362: - ldr r2, _080A9398 @ =gSprites - movs r4, 0x26 - ldrsh r1, [r3, r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x22] - ldrh r4, [r0, 0x24] - adds r1, r4 - strh r1, [r0, 0x24] - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x24 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A9392 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080A9392: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A9398: .4byte gSprites - thumb_func_end sub_80A9278 - - thumb_func_start sub_80A939C -sub_80A939C: @ 80A939C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080A93D8 @ =gTasks - adds r4, r0 - movs r0, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - movs r0, 0x1 - strh r0, [r4, 0x10] - movs r0, 0xE - strh r0, [r4, 0x22] - movs r0, 0x2 - strh r0, [r4, 0x24] - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - ldr r0, _080A93DC @ =sub_80A93E0 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A93D8: .4byte gTasks -_080A93DC: .4byte sub_80A93E0 - thumb_func_end sub_80A939C - - thumb_func_start sub_80A93E0 -sub_80A93E0: @ 80A93E0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080A9434 @ =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r2, [r4, r0] - cmp r2, 0 - bne _080A94A6 - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x10 - ldrsh r1, [r4, r3] - cmp r0, r1 - ble _080A94A6 - strh r2, [r4, 0xA] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A943C - ldr r3, _080A9438 @ =gSprites - movs r6, 0x26 - ldrsh r1, [r4, r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - b _080A9452 - .align 2, 0 -_080A9434: .4byte gTasks -_080A9438: .4byte gSprites -_080A943C: - ldr r3, _080A9484 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 -_080A9452: - strb r1, [r0] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - movs r2, 0 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - movs r6, 0x22 - ldrsh r1, [r4, r6] - cmp r0, r1 - blt _080A94A6 - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - movs r6, 0x24 - ldrsh r1, [r4, r6] - cmp r0, r1 - bge _080A9488 - strh r2, [r4, 0xA] - strh r2, [r4, 0xC] - strh r2, [r4, 0xE] - b _080A94A6 - .align 2, 0 -_080A9484: .4byte gSprites -_080A9488: - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080A94A6: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80A93E0 - - thumb_func_start sub_80A94AC -sub_80A94AC: @ 80A94AC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080A94FC @ =gTasks - adds r4, r0 - movs r0, 0 - strh r0, [r4, 0x8] - movs r1, 0x4 - strh r1, [r4, 0xA] - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - strh r0, [r4, 0x10] - strh r0, [r4, 0x12] - strh r0, [r4, 0x14] - strh r0, [r4, 0x16] - strh r0, [r4, 0x18] - strh r0, [r4, 0x22] - ldr r5, _080A9500 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x24] - ldrb r0, [r5] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - ldr r0, _080A9504 @ =sub_80A9508 - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A94FC: .4byte gTasks -_080A9500: .4byte gBattleAnimAttacker -_080A9504: .4byte sub_80A9508 - thumb_func_end sub_80A94AC - - thumb_func_start sub_80A9508 -sub_80A9508: @ 80A9508 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080A952C @ =gTasks - adds r4, r0, r1 - movs r0, 0x18 - ldrsh r2, [r4, r0] - cmp r2, 0x1 - beq _080A9574 - cmp r2, 0x1 - bgt _080A9530 - cmp r2, 0 - beq _080A9536 - b _080A9590 - .align 2, 0 -_080A952C: .4byte gTasks -_080A9530: - cmp r2, 0x2 - beq _080A958C - b _080A9590 -_080A9536: - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A9590 - strh r2, [r4, 0x10] - ldrh r0, [r4, 0x12] - adds r0, 0x1 - movs r1, 0x1 - ands r0, r1 - strh r0, [r4, 0x12] - ldrh r0, [r4, 0x14] - adds r0, 0x1 - strh r0, [r4, 0x14] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080A9590 - movs r1, 0x16 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A956E - strh r2, [r4, 0x14] - movs r0, 0x1 - strh r0, [r4, 0x18] - b _080A9590 -_080A956E: - movs r0, 0x2 - strh r0, [r4, 0x18] - b _080A9590 -_080A9574: - movs r1, 0 - strh r1, [r4, 0x12] - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080A9590 - strh r2, [r4, 0x16] - strh r1, [r4, 0x18] - b _080A9590 -_080A958C: - movs r0, 0x1 - strh r0, [r4, 0x12] -_080A9590: - movs r2, 0x8 - ldrsh r5, [r4, r2] - cmp r5, 0 - beq _080A959E - cmp r5, 0x1 - beq _080A9634 - b _080A9642 -_080A959E: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _080A9642 - strh r5, [r4, 0xA] - ldr r0, _080A9628 @ =gUnknown_83E4154 - movs r3, 0x24 - ldrsh r1, [r4, r3] - movs r3, 0x26 - ldrsh r2, [r4, r3] - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x40 - beq _080A9642 - ldr r0, _080A962C @ =gSprites - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - strh r6, [r1, 0x2E] - movs r0, 0xD - strh r0, [r1, 0x30] - ldr r2, _080A9630 @ =gUnknown_83E416C - movs r3, 0xC - ldrsh r0, [r4, r3] - lsls r0, 1 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - strh r0, [r1, 0x24] - movs r3, 0xC - ldrsh r0, [r4, r3] - lsls r0, 1 - adds r2, 0x1 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - strh r0, [r1, 0x26] - ldrh r0, [r4, 0x22] - adds r0, 0x1 - strh r0, [r4, 0x22] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080A9642 - strh r5, [r4, 0xC] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _080A9642 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080A9642 - .align 2, 0 -_080A9628: .4byte gUnknown_83E4154 -_080A962C: .4byte gSprites -_080A9630: .4byte gUnknown_83E416C -_080A9634: - movs r1, 0x22 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A9642 - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080A9642: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80A9508 - - thumb_func_start sub_80A9648 -sub_80A9648: @ 80A9648 - push {r4,lr} - adds r3, r0, 0 - ldr r4, _080A96B0 @ =gTasks - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r4 - movs r1, 0x3E - adds r1, r3 - mov r12, r1 - movs r2, 0x1 - ldrb r1, [r0, 0x12] - ands r1, r2 - lsls r1, 2 - mov r0, r12 - ldrb r2, [r0] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - adds r0, r3, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080A96AA - movs r0, 0x30 - ldrsh r1, [r3, r0] - lsls r1, 1 - movs r0, 0x2E - ldrsh r2, [r3, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r0, r4, 0 - adds r0, 0x8 - adds r1, r0 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - adds r0, r3, 0 - bl DestroySprite -_080A96AA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A96B0: .4byte gTasks - thumb_func_end sub_80A9648 - - thumb_func_start sub_80A96B4 -sub_80A96B4: @ 80A96B4 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _080A9750 @ =0x000027de - bl IndexOfSpritePaletteTag - mov r1, sp - strb r0, [r1] - movs r4, 0x1 - ldr r0, _080A9754 @ =0x00002710 - adds r5, r0, 0 -_080A96CC: - subs r0, r5, r4 - lsls r0, 16 - lsrs r0, 16 - bl AllocSpritePalette - mov r2, sp - adds r1, r2, r4 - strb r0, [r1] - adds r4, 0x1 - cmp r4, 0x2 - ble _080A96CC - movs r0, 0x80 - lsls r0, 6 - bl AllocZeroed - adds r1, r0, 0 - ldr r0, _080A9758 @ =gMonSpritesGfxPtr - ldr r0, [r0] - movs r2, 0xBE - lsls r2, 1 - adds r0, r2 - str r1, [r0] - ldr r0, _080A975C @ =gFile_graphics_battle_anims_sprites_206_palette - bl LZDecompressWram - movs r4, 0 -_080A9700: - ldr r5, _080A9758 @ =gMonSpritesGfxPtr - ldr r0, [r5] - movs r1, 0xBE - lsls r1, 1 - adds r0, r1 - lsls r1, r4, 6 - ldr r0, [r0] - adds r0, r1 - mov r2, sp - adds r1, r2, r4 - ldrb r1, [r1] - lsls r1, 20 - movs r2, 0x80 - lsls r2, 17 - adds r1, r2 - lsrs r1, 16 - movs r2, 0x20 - bl LoadPalette - adds r4, 0x1 - cmp r4, 0x2 - ble _080A9700 - ldr r0, [r5] - movs r4, 0xBE - lsls r4, 1 - adds r0, r4 - ldr r0, [r0] - bl Free - ldr r0, [r5] - adds r0, r4 - movs r1, 0 - str r1, [r0] - adds r0, r6, 0 - bl DestroyAnimVisualTask - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A9750: .4byte 0x000027de -_080A9754: .4byte 0x00002710 -_080A9758: .4byte gMonSpritesGfxPtr -_080A975C: .4byte gFile_graphics_battle_anims_sprites_206_palette - thumb_func_end sub_80A96B4 - - thumb_func_start sub_80A9760 -sub_80A9760: @ 80A9760 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r5, _080A9784 @ =gUnknown_83E41C8 - movs r4, 0x2 -_080A976A: - ldrh r0, [r5] - bl FreeSpritePaletteByTag - adds r5, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _080A976A - adds r0, r6, 0 - bl DestroyAnimVisualTask - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A9784: .4byte gUnknown_83E41C8 - thumb_func_end sub_80A9760 - - thumb_func_start sub_80A9788 -sub_80A9788: @ 80A9788 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r1, 24 - lsls r2, 24 - lsrs r3, r2, 24 - movs r0, 0x1 - ands r3, r0 - negs r0, r3 - orrs r0, r3 - asrs r0, 31 - movs r3, 0x20 - ands r0, r3 - ldrh r4, [r5, 0x4] - lsls r3, r4, 22 - lsrs r3, 22 - lsrs r1, 22 - adds r0, r1 - adds r3, r0 - ldr r1, _080A97DC @ =0x000003ff - adds r0, r1, 0 - ands r3, r0 - ldr r0, _080A97E0 @ =0xfffffc00 - ands r0, r4 - orrs r0, r3 - strh r0, [r5, 0x4] - ldr r0, _080A97E4 @ =gUnknown_83E41C8 - lsrs r2, 25 - lsls r2, 1 - adds r2, r0 - ldrh r0, [r2] - bl IndexOfSpritePaletteTag - lsls r0, 4 - ldrb r2, [r5, 0x5] - movs r1, 0xF - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A97DC: .4byte 0x000003ff -_080A97E0: .4byte 0xfffffc00 -_080A97E4: .4byte gUnknown_83E41C8 - thumb_func_end sub_80A9788 - - thumb_func_start sub_80A97E8 -sub_80A97E8: @ 80A97E8 - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0 - bl InitSpritePosToAnimAttacker - ldr r6, _080A9850 @ =gBattleAnimAttacker - ldrb r0, [r6] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A9808 - ldr r1, _080A9854 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_080A9808: - ldr r4, _080A9854 @ =gBattleAnimArgs - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x2E] - ldrb r0, [r6] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x4] - adds r0, r1 - strh r0, [r5, 0x32] - ldrb r0, [r6] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x6] - adds r0, r1 - strh r0, [r5, 0x36] - ldr r0, _080A9858 @ =StartAnimLinearTranslation - str r0, [r5, 0x1C] - ldr r1, _080A985C @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldrb r1, [r4, 0xA] - ldrb r2, [r4, 0xC] - adds r0, r5, 0 - bl sub_80A9788 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A9850: .4byte gBattleAnimAttacker -_080A9854: .4byte gBattleAnimArgs -_080A9858: .4byte StartAnimLinearTranslation -_080A985C: .4byte DestroyAnimSprite - thumb_func_end sub_80A97E8 - - thumb_func_start sub_80A9860 -sub_80A9860: @ 80A9860 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080A987A - adds r0, r4, 0 - movs r1, 0 - bl InitSpritePosToAnimAttacker -_080A987A: - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x8 - bl Sin - strh r0, [r4, 0x24] - ldrh r2, [r4, 0x32] - lsls r0, r2, 16 - asrs r0, 24 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x7 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - subs r2, 0x80 - strh r2, [r4, 0x32] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x3C - bne _080A98AA - adds r0, r4, 0 - bl DestroyAnimSprite -_080A98AA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A9860 - - thumb_func_start sub_80A98B0 -sub_80A98B0: @ 80A98B0 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - bl IsContest - lsls r0, 24 - movs r6, 0xF0 - cmp r0, 0 - beq _080A98C4 - movs r6, 0x98 -_080A98C4: - movs r5, 0 - ldr r1, _080A9918 @ =gBattle_WIN0H - strh r6, [r1] - ldr r4, _080A991C @ =gBattle_WIN0V - movs r0, 0xA0 - strh r0, [r4] - ldrh r1, [r1] - movs r0, 0x40 - bl SetGpuReg - ldrh r1, [r4] - movs r0, 0x44 - bl SetGpuReg - ldr r1, _080A9920 @ =0x00003f1f - movs r0, 0x48 - bl SetGpuReg - ldr r1, _080A9924 @ =0x00003f3f - movs r0, 0x4A - bl SetGpuReg - movs r0, 0x50 - movs r1, 0xC8 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0x10 - bl SetGpuReg - ldr r1, _080A9928 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - strh r5, [r0, 0x8] - strh r6, [r0, 0xA] - ldr r1, _080A992C @ =sub_80A9930 - str r1, [r0] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A9918: .4byte gBattle_WIN0H -_080A991C: .4byte gBattle_WIN0V -_080A9920: .4byte 0x00003f1f -_080A9924: .4byte 0x00003f3f -_080A9928: .4byte gTasks -_080A992C: .4byte sub_80A9930 - thumb_func_end sub_80A98B0 - - thumb_func_start sub_80A9930 -sub_80A9930: @ 80A9930 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080A9964 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r3, r1, r2 - ldrh r0, [r3, 0x8] - adds r4, r0, 0 - adds r4, 0xD - strh r4, [r3, 0x8] - ldrh r0, [r3, 0xA] - adds r2, r0, 0 - subs r2, 0xD - strh r2, [r3, 0xA] - lsls r1, r4, 16 - lsls r0, r2, 16 - cmp r1, r0 - blt _080A9970 - ldr r0, _080A9968 @ =gBattle_WIN0H - movs r1, 0 - strh r1, [r0] - ldr r0, _080A996C @ =sub_80A9984 - str r0, [r3] - b _080A9978 - .align 2, 0 -_080A9964: .4byte gTasks -_080A9968: .4byte gBattle_WIN0H -_080A996C: .4byte sub_80A9984 -_080A9970: - ldr r1, _080A9980 @ =gBattle_WIN0H - lsls r0, r4, 8 - orrs r2, r0 - strh r2, [r1] -_080A9978: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A9980: .4byte gBattle_WIN0H - thumb_func_end sub_80A9930 - - thumb_func_start sub_80A9984 -sub_80A9984: @ 80A9984 - push {r4,r5,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _080A99D0 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r1, r0, r1 - ldrh r0, [r1, 0x1C] - adds r0, 0x1 - movs r4, 0 - strh r0, [r1, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _080A99D8 - movs r0, 0x88 - strh r0, [r1, 0x1E] - movs r0, 0x50 - movs r1, 0x88 - bl SetGpuReg - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_8075BE8 - ldr r2, _080A99D4 @ =0x00007fff - movs r1, 0x10 - bl BlendPalettes - b _080A9A0C - .align 2, 0 -_080A99D0: .4byte gTasks -_080A99D4: .4byte 0x00007fff -_080A99D8: - cmp r0, 0x4 - ble _080A9A0C - ldr r0, _080A9A14 @ =gBattle_WIN0H - strh r4, [r0] - ldr r0, _080A9A18 @ =gBattle_WIN0V - strh r4, [r0] - ldr r4, _080A9A1C @ =0x00003f3f - movs r0, 0x48 - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x4A - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080A9A0C: - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A9A14: .4byte gBattle_WIN0H -_080A9A18: .4byte gBattle_WIN0V -_080A9A1C: .4byte 0x00003f3f - thumb_func_end sub_80A9984 - - thumb_func_start sub_80A9A20 -sub_80A9A20: @ 80A9A20 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - movs r0, 0x1 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080A9A70 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080A9A7C - movs r0, 0x1 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080A9A74 @ =gUnknown_83E4200 - adds r0, r5, 0 - bl PrepareAffineAnimInTaskData - ldr r1, _080A9A78 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - movs r1, 0x4 - strh r1, [r0, 0x24] - b _080A9AA4 - .align 2, 0 -_080A9A70: .4byte gTasks -_080A9A74: .4byte gUnknown_83E4200 -_080A9A78: .4byte gSprites -_080A9A7C: - ldr r1, _080A9AAC @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r4, r0, r1 - ldrh r0, [r4, 0x24] - negs r0, r0 - strh r0, [r4, 0x24] - adds r0, r5, 0 - bl RunAffineAnimFromTaskData - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080A9AA4 - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080A9AA4: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A9AAC: .4byte gSprites - thumb_func_end sub_80A9A20 - - thumb_func_start sub_80A9AB0 -sub_80A9AB0: @ 80A9AB0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080A9B00 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080A9B0C - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080A9B04 @ =gUnknown_83E4200 - adds r0, r5, 0 - bl PrepareAffineAnimInTaskData - ldr r1, _080A9B08 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - movs r1, 0x4 - strh r1, [r0, 0x24] - b _080A9B34 - .align 2, 0 -_080A9B00: .4byte gTasks -_080A9B04: .4byte gUnknown_83E4200 -_080A9B08: .4byte gSprites -_080A9B0C: - ldr r1, _080A9B3C @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r4, r0, r1 - ldrh r0, [r4, 0x24] - negs r0, r0 - strh r0, [r4, 0x24] - adds r0, r5, 0 - bl RunAffineAnimFromTaskData - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080A9B34 - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080A9B34: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A9B3C: .4byte gSprites - thumb_func_end sub_80A9AB0 - - thumb_func_start sub_80A9B40 -sub_80A9B40: @ 80A9B40 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl InitSpritePosToAnimAttacker - movs r0, 0x5F - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldr r5, _080A9B84 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl InitAnimLinearTranslation - ldr r0, _080A9B88 @ =sub_80A9B8C - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A9B84: .4byte gBattleAnimTarget -_080A9B88: .4byte sub_80A9B8C - thumb_func_end sub_80A9B40 - - thumb_func_start sub_80A9B8C -sub_80A9B8C: @ 80A9B8C - push {r4,lr} - adds r4, r0, 0 - bl AnimTranslateLinear - lsls r0, 24 - cmp r0, 0 - bne _080A9BB6 - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0xE - bl Sin - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x38] - adds r0, 0x4 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - b _080A9BBC -_080A9BB6: - adds r0, r4, 0 - bl DestroyAnimSprite -_080A9BBC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A9B8C - - thumb_func_start sub_80A9BC4 -sub_80A9BC4: @ 80A9BC4 - push {r4,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A9BE8 - ldr r1, _080A9BE4 @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x32] - adds r0, r2, 0x1 - strh r0, [r4, 0x2E] - b _080A9C44 - .align 2, 0 -_080A9BE4: .4byte gBattleAnimArgs -_080A9BE8: - ldrh r0, [r4, 0x30] - ldrh r2, [r4, 0x36] - adds r0, r2 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x34] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - cmp r0, 0x64 - ble _080A9C36 - movs r0, 0x34 - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080A9C36: - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0x78 - ble _080A9C44 - adds r0, r4, 0 - bl DestroyAnimSprite -_080A9C44: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A9BC4 - - thumb_func_start sub_80A9C4C -sub_80A9C4C: @ 80A9C4C - push {lr} - ldr r2, _080A9C70 @ =gBattleAnimArgs - ldrh r1, [r2] - strh r1, [r0, 0x20] - movs r1, 0xA0 - strh r1, [r0, 0x22] - ldrh r1, [r2, 0x4] - strh r1, [r0, 0x2E] - ldrh r1, [r2, 0x2] - strh r1, [r0, 0x30] - ldr r1, _080A9C74 @ =WaitAnimForDuration - str r1, [r0, 0x1C] - ldr r1, _080A9C78 @ =sub_80A9C7C - bl StoreSpriteCallbackInData6 - pop {r0} - bx r0 - .align 2, 0 -_080A9C70: .4byte gBattleAnimArgs -_080A9C74: .4byte WaitAnimForDuration -_080A9C78: .4byte sub_80A9C7C - thumb_func_end sub_80A9C4C - - thumb_func_start sub_80A9C7C -sub_80A9C7C: @ 80A9C7C - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x32] - adds r0, r1 - strh r0, [r4, 0x32] - lsls r0, 16 - lsrs r0, 24 - negs r0, r0 - strh r0, [r4, 0x26] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r1, 0x4 - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x34] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x26] - ldrh r1, [r4, 0x22] - adds r0, r1 - lsls r0, 16 - asrs r5, r0, 16 - cmp r5, 0x48 - bgt _080A9CE2 - movs r0, 0x34 - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - cmp r5, 0x40 - bgt _080A9CE2 - adds r0, r4, 0 - bl DestroyAnimSprite -_080A9CE2: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A9C7C - - thumb_func_start sub_80A9CE8 -sub_80A9CE8: @ 80A9CE8 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080A9DA0 @ =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 5 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x3 - bl SetAnimBgAttribute - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl SetAnimBgAttribute - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A9D2A - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0x1 - bl SetAnimBgAttribute -_080A9D2A: - ldr r0, _080A9DA4 @ =gBattle_BG1_X - movs r1, 0 - strh r1, [r0] - ldr r4, _080A9DA8 @ =gBattle_BG1_Y - strh r1, [r4] - movs r0, 0x14 - movs r1, 0 - bl SetGpuReg - ldrh r1, [r4] - movs r0, 0x16 - bl SetGpuReg - mov r0, sp - bl sub_80752A0 - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080A9DAC @ =gFile_graphics_battle_anims_backgrounds_attract_tilemap - bl AnimLoadCompressedBgTilemap - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080A9DB0 @ =gFile_graphics_battle_anims_backgrounds_attract_sheet - mov r2, sp - ldrh r2, [r2, 0xA] - bl AnimLoadCompressedBgGfx - ldr r0, _080A9DB4 @ =gFile_graphics_battle_anims_backgrounds_attract_palette - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A9D88 - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80730C0 -_080A9D88: - ldr r0, _080A9DB8 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080A9DBC @ =sub_80A9DC0 - str r0, [r1] - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A9DA0: .4byte 0x00003f42 -_080A9DA4: .4byte gBattle_BG1_X -_080A9DA8: .4byte gBattle_BG1_Y -_080A9DAC: .4byte gFile_graphics_battle_anims_backgrounds_attract_tilemap -_080A9DB0: .4byte gFile_graphics_battle_anims_backgrounds_attract_sheet -_080A9DB4: .4byte gFile_graphics_battle_anims_backgrounds_attract_palette -_080A9DB8: .4byte gTasks -_080A9DBC: .4byte sub_80A9DC0 - thumb_func_end sub_80A9CE8 - - thumb_func_start sub_80A9DC0 -sub_80A9DC0: @ 80A9DC0 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080A9DE8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0x20 - ldrsh r0, [r0, r2] - adds r2, r1, 0 - cmp r0, 0x4 - bls _080A9DDE - b _080A9F08 -_080A9DDE: - lsls r0, 2 - ldr r1, _080A9DEC @ =_080A9DF0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080A9DE8: .4byte gTasks -_080A9DEC: .4byte _080A9DF0 - .align 2, 0 -_080A9DF0: - .4byte _080A9E04 - .4byte _080A9E48 - .4byte _080A9E6A - .4byte _080A9EAE - .4byte _080A9ED4 -_080A9E04: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r2 - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - movs r5, 0 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080A9F08 - strh r5, [r4, 0x1C] - ldrh r1, [r4, 0x1E] - adds r1, 0x1 - strh r1, [r4, 0x1E] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x1E - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _080A9F08 - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - strh r5, [r4, 0x1E] - b _080A9F08 -_080A9E48: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r2 - ldrh r0, [r1, 0x1E] - adds r0, 0x1 - strh r0, [r1, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8D - bne _080A9F08 - movs r0, 0x10 - strh r0, [r1, 0x1E] - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - b _080A9F08 -_080A9E6A: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r2 - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080A9F08 - movs r0, 0 - strh r0, [r4, 0x1C] - ldrh r1, [r4, 0x1E] - subs r1, 0x1 - strh r1, [r4, 0x1E] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r2, 0x1E - ldrsh r1, [r4, r2] - cmp r1, 0 - bne _080A9F08 - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - strh r1, [r4, 0x1E] - b _080A9F08 -_080A9EAE: - mov r0, sp - bl sub_80752A0 - mov r0, sp - ldrb r0, [r0, 0x9] - bl sub_8075358 - ldr r1, _080A9ED0 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x20] - adds r1, 0x1 - strh r1, [r0, 0x20] - b _080A9F08 - .align 2, 0 -_080A9ED0: .4byte gTasks -_080A9ED4: - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A9EE8 - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - bl SetAnimBgAttribute -_080A9EE8: - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080A9F08: - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A9DC0 - - thumb_func_start sub_80A9F10 -sub_80A9F10: @ 80A9F10 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080A9F88 @ =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 5 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl SetAnimBgAttribute - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A9F52 - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0x1 - bl SetAnimBgAttribute -_080A9F52: - ldr r0, _080A9F8C @ =gBattle_BG1_X - movs r1, 0 - strh r1, [r0] - ldr r4, _080A9F90 @ =gBattle_BG1_Y - strh r1, [r4] - movs r0, 0x14 - movs r1, 0 - bl SetGpuReg - ldrh r1, [r4] - movs r0, 0x16 - bl SetGpuReg - mov r0, sp - bl sub_80752A0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A9F98 - ldr r0, _080A9F94 @ =gFile_graphics_battle_anims_backgrounds_scary_face_contest_tilemap - ldr r1, [sp, 0x4] - bl LZDecompressVram - b _080A9FC6 - .align 2, 0 -_080A9F88: .4byte 0x00003f42 -_080A9F8C: .4byte gBattle_BG1_X -_080A9F90: .4byte gBattle_BG1_Y -_080A9F94: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_contest_tilemap -_080A9F98: - ldr r0, _080A9FB4 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A9FBC - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080A9FB8 @ =gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap - bl AnimLoadCompressedBgTilemap - b _080A9FC6 - .align 2, 0 -_080A9FB4: .4byte gBattleAnimTarget -_080A9FB8: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap -_080A9FBC: - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080AA010 @ =gFile_graphics_battle_anims_backgrounds_scary_face_opponent_tilemap - bl AnimLoadCompressedBgTilemap -_080A9FC6: - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080AA014 @ =gFile_graphics_battle_anims_backgrounds_scary_face_sheet - mov r2, sp - ldrh r2, [r2, 0xA] - bl AnimLoadCompressedBgGfx - ldr r0, _080AA018 @ =gFile_graphics_battle_anims_backgrounds_scary_face_palette - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A9FFA - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80730C0 -_080A9FFA: - ldr r0, _080AA01C @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080AA020 @ =sub_80AA024 - str r0, [r1] - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA010: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_opponent_tilemap -_080AA014: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_sheet -_080AA018: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_palette -_080AA01C: .4byte gTasks -_080AA020: .4byte sub_80AA024 - thumb_func_end sub_80A9F10 - - thumb_func_start sub_80AA024 -sub_80AA024: @ 80AA024 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080AA04C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0x20 - ldrsh r0, [r0, r2] - adds r2, r1, 0 - cmp r0, 0x4 - bls _080AA042 - b _080AA168 -_080AA042: - lsls r0, 2 - ldr r1, _080AA050 @ =_080AA054 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080AA04C: .4byte gTasks -_080AA050: .4byte _080AA054 - .align 2, 0 -_080AA054: - .4byte _080AA068 - .4byte _080AA0AC - .4byte _080AA0CE - .4byte _080AA112 - .4byte _080AA134 -_080AA068: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r2 - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - movs r5, 0 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080AA168 - strh r5, [r4, 0x1C] - ldrh r1, [r4, 0x1E] - adds r1, 0x1 - strh r1, [r4, 0x1E] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x1E - ldrsh r0, [r4, r1] - cmp r0, 0xE - bne _080AA168 - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - strh r5, [r4, 0x1E] - b _080AA168 -_080AA0AC: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r2 - ldrh r0, [r1, 0x1E] - adds r0, 0x1 - strh r0, [r1, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x15 - bne _080AA168 - movs r0, 0xE - strh r0, [r1, 0x1E] - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - b _080AA168 -_080AA0CE: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r2 - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080AA168 - movs r0, 0 - strh r0, [r4, 0x1C] - ldrh r1, [r4, 0x1E] - subs r1, 0x1 - strh r1, [r4, 0x1E] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r2, 0x1E - ldrsh r1, [r4, r2] - cmp r1, 0 - bne _080AA168 - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - strh r1, [r4, 0x1E] - b _080AA168 -_080AA112: - mov r0, sp - bl sub_80752A0 - movs r0, 0x1 - bl sub_8075358 - movs r0, 0x2 - bl sub_8075358 - ldr r0, _080AA170 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] -_080AA134: - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080AA148 - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - bl SetAnimBgAttribute -_080AA148: - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080AA168: - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA170: .4byte gTasks - thumb_func_end sub_80AA024 - - thumb_func_start sub_80AA174 -sub_80AA174: @ 80AA174 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080AA1C8 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, _080AA1CC @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x30] - ldrb r0, [r5] - bl GetBattlerSpriteSubpriority - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x3C] - ldr r1, _080AA1D0 @ =sub_80AA1D4 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA1C8: .4byte gBattleAnimAttacker -_080AA1CC: .4byte gBattleAnimArgs -_080AA1D0: .4byte sub_80AA1D4 - thumb_func_end sub_80AA174 - - thumb_func_start sub_80AA1D4 -sub_80AA1D4: @ 80AA1D4 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - subs r0, 0x40 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x7F - bhi _080AA1EA - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - b _080AA1EE -_080AA1EA: - ldrh r0, [r4, 0x3C] - subs r0, 0x1 -_080AA1EE: - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - movs r1, 0x30 - ldrsh r0, [r4, r1] - ldrh r1, [r4, 0x32] - lsls r1, 16 - asrs r1, 24 - bl Sin - strh r0, [r4, 0x24] - movs r2, 0x30 - ldrsh r0, [r4, r2] - ldrh r1, [r4, 0x34] - lsls r1, 16 - asrs r1, 24 - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x9 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - movs r3, 0x38 - ldrsh r2, [r4, r3] - cmp r2, 0 - beq _080AA260 - cmp r2, 0x1 - bne _080AA290 - ldr r1, _080AA258 @ =0xfffffc00 - adds r0, r1, 0 - ldrh r2, [r4, 0x32] - adds r0, r2 - strh r0, [r4, 0x32] - ldr r3, _080AA25C @ =0xffffff00 - adds r0, r3, 0 - ldrh r1, [r4, 0x34] - adds r0, r1 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x2E - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _080AA290 - movs r0, 0x2 - strh r0, [r4, 0x38] - b _080AA2A0 - .align 2, 0 -_080AA258: .4byte 0xfffffc00 -_080AA25C: .4byte 0xffffff00 -_080AA260: - movs r3, 0x80 - lsls r3, 3 - adds r0, r3, 0 - ldrh r1, [r4, 0x32] - adds r0, r1 - strh r0, [r4, 0x32] - movs r3, 0x80 - lsls r3, 1 - adds r0, r3, 0 - ldrh r1, [r4, 0x34] - adds r0, r1 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x2E - ldrsh r1, [r4, r3] - cmp r0, r1 - bne _080AA290 - strh r2, [r4, 0x36] - movs r0, 0x1 - strh r0, [r4, 0x38] -_080AA290: - ldr r0, _080AA2A8 @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080AA2AC @ =0x0000ffff - cmp r1, r0 - bne _080AA2A0 - adds r0, r4, 0 - bl DestroyAnimSprite -_080AA2A0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AA2A8: .4byte gBattleAnimArgs -_080AA2AC: .4byte 0x0000ffff - thumb_func_end sub_80AA1D4 - - thumb_func_start sub_80AA2B0 -sub_80AA2B0: @ 80AA2B0 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080AA2F8 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r4, _080AA2FC @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl Sin - strh r0, [r5, 0x2E] - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0x7 - bl Cos - strh r0, [r5, 0x30] - ldr r0, _080AA300 @ =sub_80AA304 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA2F8: .4byte gBattleAnimAttacker -_080AA2FC: .4byte gBattleAnimArgs -_080AA300: .4byte sub_80AA304 - thumb_func_end sub_80AA2B0 - - thumb_func_start sub_80AA304 -sub_80AA304: @ 80AA304 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x30] - ldrh r3, [r2, 0x26] - adds r0, r3 - strh r0, [r2, 0x26] - movs r1, 0x20 - ldrsh r0, [r2, r1] - movs r3, 0x24 - ldrsh r1, [r2, r3] - adds r0, r1 - adds r0, 0x10 - movs r1, 0x88 - lsls r1, 1 - cmp r0, r1 - bhi _080AA342 - movs r0, 0x22 - ldrsh r1, [r2, r0] - movs r3, 0x26 - ldrsh r0, [r2, r3] - adds r1, r0 - cmp r1, 0xA0 - bgt _080AA342 - movs r0, 0x10 - negs r0, r0 - cmp r1, r0 - bge _080AA348 -_080AA342: - adds r0, r2, 0 - bl DestroyAnimSprite -_080AA348: - pop {r0} - bx r0 - thumb_func_end sub_80AA304 - - thumb_func_start sub_80AA34C -sub_80AA34C: @ 80AA34C - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x30] - ldrh r3, [r2, 0x26] - adds r0, r3 - strh r0, [r2, 0x26] - ldrh r0, [r2, 0x34] - adds r1, r0, 0x1 - strh r1, [r2, 0x34] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x32 - ldrsh r1, [r2, r3] - cmp r0, r1 - blt _080AA378 - adds r0, r2, 0 - bl DestroyAnimSprite -_080AA378: - pop {r0} - bx r0 - thumb_func_end sub_80AA34C - - thumb_func_start sub_80AA37C -sub_80AA37C: @ 80AA37C - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080AA3C8 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r4, _080AA3CC @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl Sin - strh r0, [r5, 0x2E] - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0x7 - bl Cos - strh r0, [r5, 0x30] - ldrh r0, [r4, 0x2] - strh r0, [r5, 0x32] - ldr r0, _080AA3D0 @ =sub_80AA34C - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA3C8: .4byte gBattleAnimAttacker -_080AA3CC: .4byte gBattleAnimArgs -_080AA3D0: .4byte sub_80AA34C - thumb_func_end sub_80AA37C - - thumb_func_start sub_80AA3D4 -sub_80AA3D4: @ 80AA3D4 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080AA3EA - adds r0, r2, 0 - bl DestroyAnimSprite -_080AA3EA: - pop {r0} - bx r0 - thumb_func_end sub_80AA3D4 - - thumb_func_start sub_80AA3F0 -sub_80AA3F0: @ 80AA3F0 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl InitSpritePosToAnimAttacker - ldr r0, _080AA404 @ =sub_80AA3D4 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AA404: .4byte sub_80AA3D4 - thumb_func_end sub_80AA3F0 - - thumb_func_start sub_80AA408 -sub_80AA408: @ 80AA408 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080AA426 - ldr r0, _080AA498 @ =gBattleAnimArgs - ldrh r1, [r0] - ldrh r2, [r4, 0x20] - adds r1, r2 - strh r1, [r4, 0x20] - ldrh r0, [r0, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] -_080AA426: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r2, 0x2E - ldrsh r1, [r4, r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r5, r0, 1 - movs r0, 0xFF - ands r5, r0 - adds r0, r5, 0 - movs r1, 0x50 - bl Sin - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x4F - bgt _080AA46A - adds r0, r5, 0 - movs r1, 0x50 - bl Cos - movs r2, 0x2E - ldrsh r1, [r4, r2] - lsrs r2, r1, 31 - adds r1, r2 - asrs r1, 1 - lsls r0, 16 - asrs r0, 24 - adds r1, r0 - strh r1, [r4, 0x26] -_080AA46A: - movs r0, 0x2E - ldrsh r2, [r4, r0] - cmp r2, 0x5A - ble _080AA488 - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - ldrh r0, [r4, 0x24] - subs r0, r1 - strh r0, [r4, 0x24] -_080AA488: - cmp r2, 0x64 - ble _080AA492 - adds r0, r4, 0 - bl DestroyAnimSprite -_080AA492: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA498: .4byte gBattleAnimArgs - thumb_func_end sub_80AA408 - - thumb_func_start sub_80AA49C -sub_80AA49C: @ 80AA49C - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r1, 0x5 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x38 - ldrsh r0, [r4, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x34] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x14 - ble _080AA4F2 - adds r1, r0, 0 - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080AA4F2: - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x1E - ble _080AA500 - adds r0, r4, 0 - bl DestroyAnimSprite -_080AA500: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AA49C - - thumb_func_start sub_80AA508 -sub_80AA508: @ 80AA508 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080AA52C - ldr r1, _080AA528 @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x32] - adds r0, r2, 0x1 - strh r0, [r4, 0x2E] - b _080AA580 - .align 2, 0 -_080AA528: .4byte gBattleAnimArgs -_080AA52C: - ldrh r0, [r4, 0x30] - ldrh r2, [r4, 0x36] - adds r0, r2 - movs r5, 0 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Sin - adds r2, r0, 0 - strh r2, [r4, 0x26] - ldrh r0, [r4, 0x34] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - cmp r0, 0x46 - ble _080AA580 - ldr r0, _080AA588 @ =sub_80AA49C - str r0, [r4, 0x1C] - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r1, [r4, 0x22] - adds r0, r2, r1 - strh r0, [r4, 0x22] - strh r5, [r4, 0x24] - strh r5, [r4, 0x26] - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xB4 - bl __umodsi3 - strh r0, [r4, 0x34] -_080AA580: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA588: .4byte sub_80AA49C - thumb_func_end sub_80AA508 - - thumb_func_start sub_80AA58C -sub_80AA58C: @ 80AA58C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080AA5C6 - ldr r1, _080AA688 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnim - ldr r0, _080AA68C @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSpriteSubpriority - subs r0, 0x1 - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - movs r0, 0x1 - strh r0, [r4, 0x32] -_080AA5C6: - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x2E] - adds r0, r2 - strh r0, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - lsls r1, r0, 2 - adds r0, r1, 0 - cmp r1, 0 - bge _080AA5DC - adds r0, 0xFF -_080AA5DC: - asrs r0, 8 - lsls r0, 8 - subs r0, r1, r0 - strh r0, [r4, 0x30] - lsls r0, 16 - cmp r0, 0 - bge _080AA5EE - movs r0, 0 - strh r0, [r4, 0x30] -_080AA5EE: - movs r0, 0x30 - ldrsh r2, [r4, r0] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _080AA5FC - adds r0, 0x3 -_080AA5FC: - asrs r0, 2 - movs r1, 0x1E - subs r1, r0 - adds r0, r2, 0 - bl Cos - strh r0, [r4, 0x24] - movs r0, 0x30 - ldrsh r2, [r4, r0] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _080AA618 - adds r0, 0x7 -_080AA618: - asrs r0, 3 - movs r1, 0xA - subs r1, r0 - adds r0, r2, 0 - bl Sin - strh r0, [r4, 0x26] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0x80 - ble _080AA63C - ldrh r1, [r4, 0x32] - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080AA63C - ldr r0, _080AA690 @ =0x0000ffff - strh r0, [r4, 0x32] -_080AA63C: - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080AA650 - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r0, 0 - bge _080AA650 - movs r0, 0x1 - strh r0, [r4, 0x32] -_080AA650: - ldrh r0, [r4, 0x34] - adds r1, r0, 0x1 - strh r1, [r4, 0x34] - subs r0, 0x9 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x46 - bls _080AA694 - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - b _080AA6A2 - .align 2, 0 -_080AA688: .4byte gBattleAnimArgs -_080AA68C: .4byte gBattleAnimTarget -_080AA690: .4byte 0x0000ffff -_080AA694: - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080AA6A2: - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0x5A - ble _080AA6B0 - adds r0, r4, 0 - bl DestroyAnimSprite -_080AA6B0: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AA58C - - thumb_func_start sub_80AA6B8 -sub_80AA6B8: @ 80AA6B8 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080AA6EC - ldr r1, _080AA6E8 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x2] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - ldrb r1, [r1, 0x4] - adds r0, r4, 0 - bl StartSpriteAnim - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080AA700 - .align 2, 0 -_080AA6E8: .4byte gBattleAnimArgs -_080AA6EC: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080AA700 - adds r0, r4, 0 - bl DestroyAnimSprite -_080AA700: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AA6B8 - - thumb_func_start sub_80AA708 -sub_80AA708: @ 80AA708 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r1, _080AA720 @ =gBattleAnimArgs - movs r2, 0x4 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080AA724 - adds r0, r5, 0 - bl DestroyAnimSprite - b _080AA788 - .align 2, 0 -_080AA720: .4byte gBattleAnimArgs -_080AA724: - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080AA734 - ldr r4, _080AA730 @ =gBattleAnimAttacker - b _080AA736 - .align 2, 0 -_080AA730: .4byte gBattleAnimAttacker -_080AA734: - ldr r4, _080AA764 @ =gBattleAnimTarget -_080AA736: - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r0, _080AA768 @ =gBattleAnimArgs - movs r2, 0x2 - ldrsh r1, [r0, r2] - adds r2, r0, 0 - cmp r1, 0 - bne _080AA76C - ldrh r0, [r5, 0x20] - adds r0, 0x20 - b _080AA770 - .align 2, 0 -_080AA764: .4byte gBattleAnimTarget -_080AA768: .4byte gBattleAnimArgs -_080AA76C: - ldrh r0, [r5, 0x20] - subs r0, 0x20 -_080AA770: - strh r0, [r5, 0x20] - ldrh r0, [r2, 0x4] - strh r0, [r5, 0x2E] - ldrh r1, [r2, 0x2] - strh r1, [r5, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl StartSpriteAnim - ldr r0, _080AA790 @ =sub_80AA794 - str r0, [r5, 0x1C] -_080AA788: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA790: .4byte sub_80AA794 - thumb_func_end sub_80AA708 - - thumb_func_start sub_80AA794 -sub_80AA794: @ 80AA794 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080AA7C4 - ldrh r0, [r2, 0x2E] - subs r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - cmp r0, 0 - beq _080AA7BE - ldrh r1, [r2, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r2, 0 - bl StartSpriteAnim - b _080AA7C4 -_080AA7BE: - adds r0, r2, 0 - bl DestroyAnimSprite -_080AA7C4: - pop {r0} - bx r0 - thumb_func_end sub_80AA794 - - thumb_func_start sub_80AA7C8 -sub_80AA7C8: @ 80AA7C8 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _080AA7FC @ =gBattleAnimArgs - ldrb r0, [r0] - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - ldr r0, _080AA800 @ =gTasks - adds r4, r0 - ldr r2, _080AA804 @ =gUnknown_83E4410 - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldr r0, _080AA808 @ =sub_80AA80C - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA7FC: .4byte gBattleAnimArgs -_080AA800: .4byte gTasks -_080AA804: .4byte gUnknown_83E4410 -_080AA808: .4byte sub_80AA80C - thumb_func_end sub_80AA7C8 - - thumb_func_start sub_80AA80C -sub_80AA80C: @ 80AA80C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080AA834 @ =gTasks - adds r0, r1 - bl RunAffineAnimFromTaskData - lsls r0, 24 - cmp r0, 0 - bne _080AA82C - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080AA82C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AA834: .4byte gTasks - thumb_func_end sub_80AA80C - - thumb_func_start sub_80AA838 -sub_80AA838: @ 80AA838 - push {r4-r7,lr} - adds r5, r0, 0 - ldr r0, _080AA84C @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080AA854 - ldr r0, _080AA850 @ =gBattleAnimAttacker - b _080AA856 - .align 2, 0 -_080AA84C: .4byte gBattleAnimArgs -_080AA850: .4byte gBattleAnimAttacker -_080AA854: - ldr r0, _080AA8EC @ =gBattleAnimTarget -_080AA856: - ldrb r6, [r0] - adds r0, r6, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080AA870 - ldr r1, _080AA8F0 @ =gBattleAnimArgs - movs r2, 0x2 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1, 0x2] -_080AA870: - adds r0, r6, 0 - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r7, _080AA8F0 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r3, [r7, 0x2] - adds r0, r3 - movs r4, 0 - strh r0, [r5, 0x20] - adds r0, r6, 0 - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r7, 0x4] - adds r0, r1 - strh r0, [r5, 0x22] - strh r4, [r5, 0x2E] - ldrh r1, [r5, 0x20] - lsls r1, 3 - strh r1, [r5, 0x30] - lsls r0, 3 - strh r0, [r5, 0x32] - movs r2, 0x2 - ldrsh r0, [r7, r2] - lsls r0, 3 - cmp r0, 0 - bge _080AA8B0 - adds r0, 0x7 -_080AA8B0: - asrs r0, 3 - strh r0, [r5, 0x34] - movs r3, 0x4 - ldrsh r0, [r7, r3] - lsls r0, 3 - cmp r0, 0 - bge _080AA8C0 - adds r0, 0x7 -_080AA8C0: - asrs r0, 3 - strh r0, [r5, 0x36] - ldrh r2, [r5, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - movs r3, 0x6 - ldrsh r0, [r7, r3] - lsls r0, 4 - adds r1, r0 - ldr r3, _080AA8F4 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080AA8F8 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x4] - ldr r0, _080AA8FC @ =sub_80AA900 - str r0, [r5, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AA8EC: .4byte gBattleAnimTarget -_080AA8F0: .4byte gBattleAnimArgs -_080AA8F4: .4byte 0x000003ff -_080AA8F8: .4byte 0xfffffc00 -_080AA8FC: .4byte sub_80AA900 - thumb_func_end sub_80AA838 - - thumb_func_start sub_80AA900 -sub_80AA900: @ 80AA900 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x34] - ldrh r1, [r2, 0x30] - adds r0, r1 - strh r0, [r2, 0x30] - ldrh r1, [r2, 0x36] - ldrh r3, [r2, 0x32] - adds r1, r3 - strh r1, [r2, 0x32] - lsls r0, 16 - asrs r0, 19 - strh r0, [r2, 0x20] - lsls r1, 16 - asrs r1, 19 - strh r1, [r2, 0x22] - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080AA934 - adds r0, r2, 0 - bl DestroyAnimSprite -_080AA934: - pop {r0} - bx r0 - thumb_func_end sub_80AA900 - - thumb_func_start sub_80AA938 -sub_80AA938: @ 80AA938 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080AA95A - ldr r0, _080AA994 @ =gBattleAnimArgs - ldrh r1, [r0] - movs r0, 0x78 - subs r0, r1 - strh r0, [r4, 0x30] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_080AA95A: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x30 - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _080AA978 - ldrb r0, [r4, 0x5] - lsrs r0, 4 - adds r0, 0x10 - movs r1, 0 - bl SetGreyscaleOrOriginalPalette -_080AA978: - movs r0, 0x2E - ldrsh r1, [r4, r0] - movs r2, 0x30 - ldrsh r0, [r4, r2] - adds r0, 0x50 - cmp r1, r0 - bne _080AA98C - adds r0, r4, 0 - bl DestroyAnimSprite -_080AA98C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AA994: .4byte gBattleAnimArgs - thumb_func_end sub_80AA938 - - thumb_func_start sub_80AA998 -sub_80AA998: @ 80AA998 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x2E - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080AA9C6 - movs r5, 0x78 - strh r5, [r6, 0x20] - ldr r4, _080AAA48 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r0, [r4, r2] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - subs r0, 0xF - strh r0, [r6, 0x22] - ldrb r1, [r4, 0x2] - adds r0, r6, 0 - bl StartSpriteAnim - strh r5, [r6, 0x38] - ldrh r0, [r4, 0x4] - strh r0, [r6, 0x34] -_080AA9C6: - ldrh r0, [r6, 0x2E] - adds r0, 0x1 - movs r5, 0 - strh r0, [r6, 0x2E] - movs r1, 0x2E - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r6, 0x30] - movs r2, 0x2E - ldrsh r0, [r6, r2] - lsls r4, r0, 1 - adds r4, r0 - ldrh r0, [r6, 0x34] - adds r4, r0 - movs r2, 0xFF - ldrh r0, [r6, 0x3A] - adds r0, 0xA - movs r1, 0xFF - ands r0, r1 - strh r0, [r6, 0x3A] - ands r4, r2 - adds r0, r4, 0 - movs r1, 0x64 - bl Cos - strh r0, [r6, 0x24] - adds r0, r4, 0 - movs r1, 0xA - bl Sin - adds r4, r0, 0 - movs r1, 0x3A - ldrsh r0, [r6, r1] - movs r1, 0x4 - bl Cos - ldrh r2, [r6, 0x30] - adds r4, r2 - adds r0, r4 - strh r0, [r6, 0x26] - movs r0, 0x2E - ldrsh r1, [r6, r0] - movs r2, 0x38 - ldrsh r0, [r6, r2] - cmp r1, r0 - ble _080AAA42 - ldr r0, _080AAA4C @ =sub_80AAA50 - str r0, [r6, 0x1C] - strh r5, [r6, 0x2E] - adds r0, r6, 0 - bl SetSpritePrimaryCoordsFromSecondaryCoords - movs r0, 0x5 - strh r0, [r6, 0x32] - strh r5, [r6, 0x36] - strh r5, [r6, 0x34] - adds r0, r6, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_080AAA42: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AAA48: .4byte gBattleAnimArgs -_080AAA4C: .4byte sub_80AAA50 - thumb_func_end sub_80AA998 - - thumb_func_start sub_80AAA50 -sub_80AAA50: @ 80AAA50 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - ble _080AAA6A - movs r0, 0 - strh r0, [r1, 0x2E] - ldr r0, _080AAA70 @ =sub_80AAA74 - str r0, [r1, 0x1C] -_080AAA6A: - pop {r0} - bx r0 - .align 2, 0 -_080AAA70: .4byte sub_80AAA74 - thumb_func_end sub_80AAA50 - - thumb_func_start sub_80AAA74 -sub_80AAA74: @ 80AAA74 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x32] - ldrh r2, [r4, 0x34] - adds r0, r1, r2 - strh r0, [r4, 0x34] - strh r0, [r4, 0x26] - adds r1, 0x1 - strh r1, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x30 - ble _080AAA9E - lsls r0, r1, 16 - cmp r0, 0 - ble _080AAA9E - ldrh r0, [r4, 0x36] - subs r1, r0, 0x5 - strh r1, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x36] -_080AAA9E: - movs r1, 0x36 - ldrsh r0, [r4, r1] - cmp r0, 0x3 - ble _080AAAD0 - movs r2, 0x32 - ldrsh r1, [r4, r2] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - adds r0, r4, 0 - bl DestroyAnimSprite -_080AAAD0: - movs r1, 0x36 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bne _080AAADE - adds r0, r4, 0 - bl DestroyAnimSprite -_080AAADE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AAA74 - - thumb_func_start sub_80AAAE4 -sub_80AAAE4: @ 80AAAE4 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080AAB28 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080AAB30 - ldr r4, _080AAB2C @ =gBattleAnimAttacker - ldrb r1, [r4] - movs r0, 0x2 - eors r0, r1 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080AAB30 - ldrb r0, [r4] - adds r2, r5, 0 - adds r2, 0x20 - adds r3, r5, 0 - adds r3, 0x22 - movs r1, 0 - bl SetAverageBattlerPositions - ldrh r0, [r5, 0x22] - adds r0, 0x28 - strh r0, [r5, 0x22] - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - b _080AAB50 - .align 2, 0 -_080AAB28: .4byte gBattleTypeFlags -_080AAB2C: .4byte gBattleAnimAttacker -_080AAB30: - ldr r4, _080AAB70 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x28 - strh r0, [r5, 0x22] -_080AAB50: - movs r0, 0xD - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x22] - subs r0, 0x48 - strh r0, [r5, 0x36] - ldr r0, _080AAB74 @ =StartAnimLinearTranslation - str r0, [r5, 0x1C] - ldr r1, _080AAB78 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AAB70: .4byte gBattleAnimAttacker -_080AAB74: .4byte StartAnimLinearTranslation -_080AAB78: .4byte DestroyAnimSprite - thumb_func_end sub_80AAAE4 - - thumb_func_start sub_80AAB7C -sub_80AAB7C: @ 80AAB7C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080AAB98 @ =gBattleAnimArgs - ldr r1, _080AAB9C @ =gAnimDisableStructPtr - ldr r1, [r1] - ldrb r2, [r1, 0x10] - movs r1, 0x1 - ands r1, r2 - strh r1, [r3, 0xE] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080AAB98: .4byte gBattleAnimArgs -_080AAB9C: .4byte gAnimDisableStructPtr - thumb_func_end sub_80AAB7C - - thumb_func_start update_fury_cutter_counter_copy -update_fury_cutter_counter_copy: @ 80AABA0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080AABB8 @ =gBattleAnimArgs - ldr r1, _080AABBC @ =gAnimDisableStructPtr - ldr r1, [r1] - ldrb r1, [r1, 0x10] - strh r1, [r2, 0xE] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080AABB8: .4byte gBattleAnimArgs -_080AABBC: .4byte gAnimDisableStructPtr - thumb_func_end update_fury_cutter_counter_copy - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_effects_3.s b/asm/battle_anim_effects_3.s deleted file mode 100644 index 9c98d7f36..000000000 --- a/asm/battle_anim_effects_3.s +++ /dev/null @@ -1,12857 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80DE2C0 -sub_80DE2C0: @ 80DE2C0 - push {lr} - adds r2, r0, 0 - ldr r1, _080DE2E4 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r3, [r2, 0x20] - adds r0, r3 - strh r0, [r2, 0x20] - ldrh r0, [r1, 0x2] - ldrh r3, [r2, 0x22] - adds r0, r3 - strh r0, [r2, 0x22] - movs r3, 0x6 - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _080DE2E8 - ldrh r0, [r1, 0x4] - b _080DE2EC - .align 2, 0 -_080DE2E4: .4byte gBattleAnimArgs -_080DE2E8: - ldrh r0, [r1, 0x4] - negs r0, r0 -_080DE2EC: - strh r0, [r2, 0x2E] - ldrh r0, [r1, 0x8] - strh r0, [r2, 0x30] - ldr r0, _080DE2FC @ =sub_80DE300 - str r0, [r2, 0x1C] - pop {r0} - bx r0 - .align 2, 0 -_080DE2FC: .4byte sub_80DE300 - thumb_func_end sub_80DE2C0 - - thumb_func_start sub_80DE300 -sub_80DE300: @ 80DE300 - push {lr} - adds r3, r0, 0 - movs r1, 0x30 - ldrsh r0, [r3, r1] - cmp r0, 0 - ble _080DE340 - ldrh r1, [r3, 0x32] - lsls r0, r1, 16 - asrs r0, 24 - strh r0, [r3, 0x24] - ldrh r0, [r3, 0x2E] - adds r1, r0 - strh r1, [r3, 0x32] - 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] - ldrh r0, [r3, 0x30] - subs r0, 0x1 - strh r0, [r3, 0x30] - b _080DE346 -_080DE340: - adds r0, r3, 0 - bl DestroyAnimSprite -_080DE346: - pop {r0} - bx r0 - thumb_func_end sub_80DE300 - - thumb_func_start sub_80DE34C -sub_80DE34C: @ 80DE34C - push {r4-r6,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r6, _080DE398 @ =gBattleAnimTarget - ldrb r0, [r6] - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 8 - movs r0, 0x80 - lsls r0, 12 - adds r4, r0 - asrs r4, 16 - ldrb r0, [r6] - movs r1, 0x3 - bl GetBattlerSpriteCoord - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 8 - movs r0, 0x80 - lsls r0, 12 - adds r1, r0 - asrs r1, 16 - adds r0, r4, 0 - movs r2, 0 - bl sub_804A76C - adds r0, r5, 0 - bl DestroyAnimVisualTask - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DE398: .4byte gBattleAnimTarget - thumb_func_end sub_80DE34C - - thumb_func_start sub_80DE39C -sub_80DE39C: @ 80DE39C - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x5A - strh r0, [r4, 0x2E] - ldr r0, _080DE3D8 @ =WaitAnimForDuration - str r0, [r4, 0x1C] - movs r0, 0x7 - strh r0, [r4, 0x30] - ldr r1, _080DE3DC @ =sub_80DE3E0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - ldrh r0, [r4, 0x30] - movs r1, 0x10 - subs r1, r0 - lsls r1, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DE3D8: .4byte WaitAnimForDuration -_080DE3DC: .4byte sub_80DE3E0 - thumb_func_end sub_80DE39C - - thumb_func_start sub_80DE3E0 -sub_80DE3E0: @ 80DE3E0 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - movs r1, 0x10 - subs r1, r0 - lsls r1, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - ldrh r0, [r4, 0x30] - subs r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - cmp r0, 0 - bge _080DE414 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080DE41C @ =sub_80DE420 - str r0, [r4, 0x1C] -_080DE414: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DE41C: .4byte sub_80DE420 - thumb_func_end sub_80DE3E0 - - thumb_func_start sub_80DE420 -sub_80DE420: @ 80DE420 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r4, 0 - bl DestroyAnimSprite - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DE420 - - thumb_func_start sub_80DE440 -sub_80DE440: @ 80DE440 - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - ldr r4, _080DE4CC @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r7, r0, 0 - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - adds r0, r5, 0 - movs r1, 0x1 - bl InitSpritePosToAnimTarget - ldrh r0, [r5, 0x20] - subs r0, r7 - lsls r0, 16 - asrs r0, 16 - ldrh r1, [r5, 0x22] - subs r1, r6 - lsls r1, 16 - asrs r1, 16 - bl ArcTan2Neg - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 23 - adds r0, r1 - lsrs r4, r0, 16 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080DE49E - movs r1, 0x80 - lsls r1, 7 - adds r0, r4, r1 - lsls r0, 16 - lsrs r4, r0, 16 -_080DE49E: - movs r3, 0x80 - lsls r3, 1 - str r4, [sp] - adds r0, r5, 0 - movs r1, 0 - adds r2, r3, 0 - bl TrySetSpriteRotScale - ldr r0, _080DE4D0 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r5, 0x2E] - strh r7, [r5, 0x32] - strh r6, [r5, 0x36] - ldr r0, _080DE4D4 @ =StartAnimLinearTranslation - str r0, [r5, 0x1C] - ldr r1, _080DE4D8 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DE4CC: .4byte gBattleAnimTarget -_080DE4D0: .4byte gBattleAnimArgs -_080DE4D4: .4byte StartAnimLinearTranslation -_080DE4D8: .4byte DestroyAnimSprite - thumb_func_end sub_80DE440 - - thumb_func_start sub_80DE4DC -sub_80DE4DC: @ 80DE4DC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 5 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x4 - strh r0, [r4, 0x2E] - ldr r0, _080DE504 @ =sub_80DE508 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DE504: .4byte sub_80DE508 - thumb_func_end sub_80DE4DC - - thumb_func_start sub_80DE508 -sub_80DE508: @ 80DE508 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - movs r1, 0x10 - subs r1, r0 - lsls r1, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080DE52E - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - b _080DE532 -_080DE52E: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 -_080DE532: - strh r0, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0xF - beq _080DE540 - cmp r0, 0x4 - bne _080DE548 -_080DE540: - ldrh r0, [r4, 0x30] - movs r1, 0x1 - eors r0, r1 - strh r0, [r4, 0x30] -_080DE548: - ldrh r0, [r4, 0x32] - adds r1, r0, 0x1 - strh r1, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x46 - ble _080DE58C - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - movs r0, 0 - strh r0, [r4, 0x32] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - subs r2, 0x12 - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080DE594 @ =sub_80DE598 - str r0, [r4, 0x1C] -_080DE58C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DE594: .4byte sub_80DE598 - thumb_func_end sub_80DE508 - - thumb_func_start sub_80DE598 -sub_80DE598: @ 80DE598 - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x32] - adds r1, r0, 0x1 - strh r1, [r3, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - ble _080DE5D4 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - subs r2, 0x12 - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - adds r0, r3, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080DE5D4 - ldr r0, _080DE5D8 @ =sub_80DE5DC - str r0, [r3, 0x1C] -_080DE5D4: - pop {r0} - bx r0 - .align 2, 0 -_080DE5D8: .4byte sub_80DE5DC - thumb_func_end sub_80DE598 - - thumb_func_start sub_80DE5DC -sub_80DE5DC: @ 80DE5DC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0x6 - bhi _080DE634 - lsls r0, 2 - ldr r1, _080DE5F4 @ =_080DE5F8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080DE5F4: .4byte _080DE5F8 - .align 2, 0 -_080DE5F8: - .4byte _080DE614 - .4byte _080DE614 - .4byte _080DE61E - .4byte _080DE61E - .4byte _080DE62C - .4byte _080DE62C - .4byte _080DE634 -_080DE614: - movs r1, 0 - movs r0, 0x1 - strh r0, [r4, 0x24] - strh r1, [r4, 0x26] - b _080DE63C -_080DE61E: - ldr r0, _080DE628 @ =0x0000ffff - strh r0, [r4, 0x24] - movs r0, 0 - b _080DE63A - .align 2, 0 -_080DE628: .4byte 0x0000ffff -_080DE62C: - movs r0, 0 - strh r0, [r4, 0x24] - movs r0, 0x1 - b _080DE63A -_080DE634: - movs r0, 0 - strh r0, [r4, 0x24] - ldr r0, _080DE680 @ =0x0000ffff -_080DE63A: - strh r0, [r4, 0x26] -_080DE63C: - ldrh r0, [r4, 0x34] - adds r0, 0x1 - movs r2, 0 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _080DE64E - strh r2, [r4, 0x34] -_080DE64E: - ldrh r0, [r4, 0x36] - adds r1, r0, 0x1 - strh r1, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - ble _080DE678 - movs r0, 0x10 - strh r0, [r4, 0x2E] - strh r2, [r4, 0x30] - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - ldrh r1, [r4, 0x2E] - movs r0, 0x52 - bl SetGpuReg - ldr r0, _080DE684 @ =sub_80DE688 - str r0, [r4, 0x1C] -_080DE678: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DE680: .4byte 0x0000ffff -_080DE684: .4byte sub_80DE688 - thumb_func_end sub_80DE5DC - - thumb_func_start sub_80DE688 -sub_80DE688: @ 80DE688 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - movs r1, 0x10 - subs r1, r0 - lsls r1, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - ldrh r0, [r4, 0x30] - adds r1, r0, 0x1 - strh r1, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080DE6B8 - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - movs r1, 0 - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] -_080DE6B8: - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080DE6CC - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_080DE6CC: - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _080DE6EA - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r4, 0 - bl DestroyAnimSprite -_080DE6EA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DE688 - - thumb_func_start sub_80DE6F0 -sub_80DE6F0: @ 80DE6F0 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080DE70C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r0, _080DE710 @ =sub_80DE718 - str r0, [r1] - ldr r1, _080DE714 @ =gAnimVisualTaskCount - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - bx lr - .align 2, 0 -_080DE70C: .4byte gTasks -_080DE710: .4byte sub_80DE718 -_080DE714: .4byte gAnimVisualTaskCount - thumb_func_end sub_80DE6F0 - - thumb_func_start sub_80DE718 -sub_80DE718: @ 80DE718 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_8075454 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r7, _080DE7A4 @ =gTasks - lsls r5, r4, 2 - adds r1, r5, r4 - lsls r1, 3 - adds r1, r7 - ldrh r0, [r1, 0x12] - adds r0, 0x1 - strh r0, [r1, 0x12] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080DE788 - ldr r0, _080DE7A8 @ =gPlttBufferFaded - lsls r2, r6, 4 - adds r1, r2, 0 - adds r1, 0xB - lsls r1, 1 - adds r1, r0 - ldrh r3, [r1] - mov r8, r3 - movs r3, 0xA - mov r9, r7 - adds r7, r5, 0 - mov r12, r0 - adds r5, r2, 0 - lsls r0, r6, 5 - add r0, r12 - adds r2, r0, 0 - adds r2, 0x14 -_080DE766: - ldrh r0, [r2] - strh r0, [r1] - subs r2, 0x2 - subs r1, 0x2 - subs r3, 0x1 - cmp r3, 0 - bgt _080DE766 - adds r0, r5, 0x1 - lsls r0, 1 - add r0, r12 - movs r1, 0 - mov r2, r8 - strh r2, [r0] - adds r0, r7, r4 - lsls r0, 3 - add r0, r9 - strh r1, [r0, 0x12] -_080DE788: - ldr r0, _080DE7AC @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080DE7B0 @ =0x0000ffff - cmp r1, r0 - bne _080DE798 - adds r0, r4, 0 - bl DestroyTask -_080DE798: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DE7A4: .4byte gTasks -_080DE7A8: .4byte gPlttBufferFaded -_080DE7AC: .4byte gBattleAnimArgs -_080DE7B0: .4byte 0x0000ffff - thumb_func_end sub_80DE718 - - thumb_func_start sub_80DE7B4 -sub_80DE7B4: @ 80DE7B4 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080DE7D0 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r0, _080DE7D4 @ =sub_80DE7DC - str r0, [r1] - ldr r1, _080DE7D8 @ =gAnimVisualTaskCount - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - bx lr - .align 2, 0 -_080DE7D0: .4byte gTasks -_080DE7D4: .4byte sub_80DE7DC -_080DE7D8: .4byte gAnimVisualTaskCount - thumb_func_end sub_80DE7B4 - - thumb_func_start sub_80DE7DC -sub_80DE7DC: @ 80DE7DC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - bl sub_8075454 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r5, _080DE89C @ =gTasks - mov r0, r8 - lsls r3, r0, 2 - adds r1, r3, r0 - lsls r1, 3 - adds r1, r5 - ldrh r0, [r1, 0x12] - adds r0, 0x1 - strh r0, [r1, 0x12] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080DE87E - ldr r0, _080DE8A0 @ =gPlttBufferFaded - lsls r2, r7, 4 - adds r1, r2, 0 - adds r1, 0xB - lsls r1, 1 - adds r1, r0 - ldrh r6, [r1] - movs r4, 0xA - mov r10, r3 - mov r9, r0 - adds r5, r2, 0 - ldr r2, _080DE8A4 @ =gPlttBufferUnfaded - mov r12, r2 - lsls r0, r7, 5 - add r0, r9 - adds r3, r0, 0 - adds r3, 0x14 -_080DE830: - ldrh r0, [r3] - strh r0, [r1] - subs r3, 0x2 - subs r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bgt _080DE830 - adds r0, r5, 0x1 - lsls r0, 1 - add r0, r9 - strh r6, [r0] - adds r1, r5, 0 - adds r1, 0xB - lsls r1, 1 - add r1, r12 - ldrh r6, [r1] - movs r4, 0xA - lsls r0, r7, 5 - add r0, r12 - adds r2, r0, 0 - adds r2, 0x14 -_080DE85A: - ldrh r0, [r2] - strh r0, [r1] - subs r2, 0x2 - subs r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bgt _080DE85A - adds r0, r5, 0x1 - lsls r0, 1 - add r0, r12 - movs r1, 0 - strh r6, [r0] - mov r0, r10 - add r0, r8 - lsls r0, 3 - ldr r2, _080DE89C @ =gTasks - adds r0, r2 - strh r1, [r0, 0x12] -_080DE87E: - ldr r0, _080DE8A8 @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080DE8AC @ =0x0000ffff - cmp r1, r0 - bne _080DE88E - mov r0, r8 - bl DestroyTask -_080DE88E: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DE89C: .4byte gTasks -_080DE8A0: .4byte gPlttBufferFaded -_080DE8A4: .4byte gPlttBufferUnfaded -_080DE8A8: .4byte gBattleAnimArgs -_080DE8AC: .4byte 0x0000ffff - thumb_func_end sub_80DE7DC - - thumb_func_start sub_80DE8B0 -sub_80DE8B0: @ 80DE8B0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - movs r1, 0x1 - bl InitSpritePosToAnimAttacker - ldr r0, _080DE914 @ =gBattleAnimTarget - ldrb r0, [r0] - mov r5, sp - adds r5, 0x2 - movs r1, 0 - mov r2, sp - adds r3, r5, 0 - bl SetAverageBattlerPositions - ldr r0, _080DE918 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080DE8E4 - ldr r1, _080DE91C @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_080DE8E4: - ldr r1, _080DE91C @ =gBattleAnimArgs - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x2E] - mov r2, sp - ldrh r0, [r1, 0x4] - ldrh r2, [r2] - adds r0, r2 - strh r0, [r4, 0x32] - ldrh r0, [r1, 0x6] - ldrh r5, [r5] - adds r0, r5 - strh r0, [r4, 0x36] - ldr r0, _080DE920 @ =0x0000ffce - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl InitAnimArcTranslation - ldr r0, _080DE924 @ =sub_80DE928 - str r0, [r4, 0x1C] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DE914: .4byte gBattleAnimTarget -_080DE918: .4byte gBattleAnimAttacker -_080DE91C: .4byte gBattleAnimArgs -_080DE920: .4byte 0x0000ffce -_080DE924: .4byte sub_80DE928 - thumb_func_end sub_80DE8B0 - - thumb_func_start sub_80DE928 -sub_80DE928: @ 80DE928 - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimHorizontalArc - lsls r0, 24 - cmp r0, 0 - beq _080DE94A - movs r1, 0 - movs r0, 0x1E - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] - ldr r0, _080DE950 @ =WaitAnimForDuration - str r0, [r4, 0x1C] - ldr r1, _080DE954 @ =sub_80DE958 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 -_080DE94A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DE950: .4byte WaitAnimForDuration -_080DE954: .4byte sub_80DE958 - thumb_func_end sub_80DE928 - - thumb_func_start sub_80DE958 -sub_80DE958: @ 80DE958 - push {lr} - adds r3, r0, 0 - ldrh r1, [r3, 0x30] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080DE984 - 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] -_080DE984: - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - bne _080DE998 - adds r0, r3, 0 - bl DestroyAnimSprite -_080DE998: - pop {r0} - bx r0 - thumb_func_end sub_80DE958 - - thumb_func_start sub_80DE99C -sub_80DE99C: @ 80DE99C - push {r4,r5,lr} - adds r4, r0, 0 - bl SetSpriteCoordsToAnimAttackerCoords - ldr r5, _080DE9CC @ =gBattleAnimArgs - movs r0, 0 - ldrsh r1, [r5, r0] - adds r0, r4, 0 - bl SetAnimSpriteInitialXOffset - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r0, _080DE9D0 @ =RunStoredCallbackWhenAnimEnds - str r0, [r4, 0x1C] - ldr r1, _080DE9D4 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DE9CC: .4byte gBattleAnimArgs -_080DE9D0: .4byte RunStoredCallbackWhenAnimEnds -_080DE9D4: .4byte DestroyAnimSprite - thumb_func_end sub_80DE99C - - thumb_func_start sub_80DE9D8 -sub_80DE9D8: @ 80DE9D8 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080DEA38 - adds r0, r4, 0 - bl SetSpriteCoordsToAnimAttackerCoords - ldr r5, _080DEA14 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r1, [r5, r2] - adds r0, r4, 0 - bl SetAnimSpriteInitialXOffset - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080DEA2C - ldr r0, _080DEA18 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080DEA1C - ldrh r0, [r5, 0x4] - b _080DEA32 - .align 2, 0 -_080DEA14: .4byte gBattleAnimArgs -_080DEA18: .4byte gBattleAnimAttacker -_080DEA1C: - movs r1, 0x4 - ldrsh r0, [r5, r1] - negs r0, r0 - strh r0, [r4, 0x30] - movs r2, 0x6 - ldrsh r0, [r5, r2] - negs r0, r0 - b _080DEA36 -_080DEA2C: - movs r1, 0x4 - ldrsh r0, [r5, r1] - negs r0, r0 -_080DEA32: - strh r0, [r4, 0x30] - ldrh r0, [r5, 0x6] -_080DEA36: - strh r0, [r4, 0x32] -_080DEA38: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r2, 0x2E - ldrsh r1, [r4, r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - movs r3, 0xFF - ldrh r1, [r4, 0x30] - ldrh r2, [r4, 0x34] - adds r1, r2 - strh r1, [r4, 0x34] - ldrh r1, [r4, 0x32] - ldrh r2, [r4, 0x36] - adds r1, r2 - strh r1, [r4, 0x36] - movs r2, 0x34 - ldrsh r1, [r4, r2] - lsrs r2, r1, 31 - adds r1, r2 - asrs r1, 1 - strh r1, [r4, 0x24] - ands r0, r3 - movs r1, 0x5 - bl Sin - movs r2, 0x36 - ldrsh r1, [r4, r2] - lsrs r2, r1, 31 - adds r1, r2 - asrs r1, 1 - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xF0 - bls _080DEA90 - adds r0, r4, 0 - bl DestroyAnimSprite -_080DEA90: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80DE9D8 - - thumb_func_start sub_80DEA98 -sub_80DEA98: @ 80DEA98 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080DEAAE - adds r0, r2, 0 - bl DestroyAnimSprite -_080DEAAE: - pop {r0} - bx r0 - thumb_func_end sub_80DEA98 - - thumb_func_start sub_80DEAB4 -sub_80DEAB4: @ 80DEAB4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080DEAD0 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080DEAD8 - ldr r1, _080DEAD4 @ =gBattleAnimArgs - movs r0, 0 - b _080DEADC - .align 2, 0 -_080DEAD0: .4byte gBattleAnimTarget -_080DEAD4: .4byte gBattleAnimArgs -_080DEAD8: - ldr r1, _080DEAEC @ =gBattleAnimArgs - movs r0, 0x1 -_080DEADC: - strh r0, [r1, 0xE] - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DEAEC: .4byte gBattleAnimArgs - thumb_func_end sub_80DEAB4 - - thumb_func_start sub_80DEAF0 -sub_80DEAF0: @ 80DEAF0 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080DEB04 @ =gAnimMoveDmg - ldr r0, [r0] - cmp r0, 0 - ble _080DEB0C - ldr r1, _080DEB08 @ =gBattleAnimArgs - movs r0, 0 - b _080DEB10 - .align 2, 0 -_080DEB04: .4byte gAnimMoveDmg -_080DEB08: .4byte gBattleAnimArgs -_080DEB0C: - ldr r1, _080DEB1C @ =gBattleAnimArgs - movs r0, 0x1 -_080DEB10: - strh r0, [r1, 0xE] - adds r0, r2, 0 - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080DEB1C: .4byte gBattleAnimArgs - thumb_func_end sub_80DEAF0 - - thumb_func_start sub_80DEB20 -sub_80DEB20: @ 80DEB20 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r1, _080DEB7C @ =0x00001f3f - movs r0, 0x4A - bl SetGpuReg - movs r1, 0x80 - lsls r1, 8 - movs r0, 0 - bl SetGpuRegBits - ldr r0, _080DEB80 @ =gBattle_WIN0H - movs r1, 0 - strh r1, [r0] - ldr r4, _080DEB84 @ =gBattle_WIN0V - strh r1, [r4] - movs r0, 0x40 - movs r1, 0 - bl SetGpuReg - ldrh r1, [r4] - movs r0, 0x44 - bl SetGpuReg - adds r0, r5, 0 - movs r1, 0 - bl InitSpritePosToAnimTarget - ldrb r1, [r5, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x8 - orrs r0, r1 - strb r0, [r5, 0x1] - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080DEB88 @ =sub_80DEB8C - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DEB7C: .4byte 0x00001f3f -_080DEB80: .4byte gBattle_WIN0H -_080DEB84: .4byte gBattle_WIN0V -_080DEB88: .4byte sub_80DEB8C - thumb_func_end sub_80DEB20 - - thumb_func_start sub_80DEB8C -sub_80DEB8C: @ 80DEB8C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x5 - bhi _080DEC4C - lsls r0, 2 - ldr r1, _080DEBA4 @ =_080DEBA8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080DEBA4: .4byte _080DEBA8 - .align 2, 0 -_080DEBA8: - .4byte _080DEBC0 - .4byte _080DEBDE - .4byte _080DEBFE - .4byte _080DEBDE - .4byte _080DEC1E - .4byte _080DEC2E -_080DEBC0: - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080DEC4C - b _080DEC26 -_080DEBDE: - ldrh r0, [r4, 0x30] - adds r0, 0x75 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x15 - bne _080DEC4C - movs r0, 0 - strh r0, [r4, 0x32] - b _080DEC26 -_080DEBFE: - ldrh r0, [r4, 0x30] - subs r0, 0x75 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x29 - bne _080DEC4C - movs r0, 0 - strh r0, [r4, 0x32] - b _080DEC26 -_080DEC1E: - adds r0, r4, 0 - movs r1, 0x1 - bl ChangeSpriteAffineAnim -_080DEC26: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080DEC4C -_080DEC2E: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080DEC4C - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080DEC54 @ =sub_80DEC58 - str r0, [r4, 0x1C] -_080DEC4C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DEC54: .4byte sub_80DEC58 - thumb_func_end sub_80DEB8C - - thumb_func_start sub_80DEC58 -sub_80DEC58: @ 80DEC58 - push {r4,lr} - adds r4, r0, 0 - ldr r1, _080DEC8C @ =0x00003f3f - movs r0, 0x4A - bl SetGpuReg - movs r0, 0 - bl GetGpuReg - adds r1, r0, 0 - movs r2, 0x80 - lsls r2, 8 - adds r0, r2, 0 - eors r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0 - bl SetGpuReg - adds r0, r4, 0 - bl DestroyAnimSprite - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DEC8C: .4byte 0x00003f3f - thumb_func_end sub_80DEC58 - - thumb_func_start sub_80DEC90 -sub_80DEC90: @ 80DEC90 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _080DED04 @ =gBattleAnimArgs - movs r1, 0x6 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080DECBC - ldr r4, _080DED08 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] -_080DECBC: - ldrh r0, [r6] - ldrh r2, [r5, 0x20] - adds r0, r2 - movs r3, 0 - strh r0, [r5, 0x20] - ldrh r0, [r6, 0x2] - ldrh r4, [r5, 0x22] - adds r0, r4 - strh r0, [r5, 0x22] - ldrh r2, [r5, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x10 - ldr r4, _080DED0C @ =0x000003ff - adds r0, r4, 0 - ands r1, r0 - ldr r0, _080DED10 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x4] - movs r1, 0x4 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080DED18 - ldrb r1, [r5, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x10 - orrs r0, r1 - strb r0, [r5, 0x3] - ldr r0, _080DED14 @ =0x0000fff4 - strh r0, [r5, 0x24] - movs r0, 0x2 - b _080DED1E - .align 2, 0 -_080DED04: .4byte gBattleAnimArgs -_080DED08: .4byte gBattleAnimAttacker -_080DED0C: .4byte 0x000003ff -_080DED10: .4byte 0xfffffc00 -_080DED14: .4byte 0x0000fff4 -_080DED18: - movs r0, 0xC - strh r0, [r5, 0x24] - ldr r0, _080DED3C @ =0x0000fffe -_080DED1E: - strh r0, [r5, 0x30] - ldr r1, _080DED40 @ =gBattleAnimArgs - ldrh r0, [r1, 0x8] - strh r0, [r5, 0x2E] - movs r2, 0x34 - ldrsh r0, [r5, r2] - cmp r0, 0xFF - beq _080DED32 - ldrh r0, [r1, 0x4] - strh r0, [r5, 0x34] -_080DED32: - ldr r0, _080DED44 @ =sub_80DED48 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DED3C: .4byte 0x0000fffe -_080DED40: .4byte gBattleAnimArgs -_080DED44: .4byte sub_80DED48 - thumb_func_end sub_80DEC90 - - thumb_func_start sub_80DED48 -sub_80DED48: @ 80DED48 - push {r4,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x32] - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080DED86 - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - lsls r0, 16 - cmp r0, 0 - bne _080DEDA6 - adds r0, r2, 0x1 - strh r0, [r4, 0x32] - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080DEDA6 - movs r0, 0x40 - negs r0, r0 - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xD7 - bl PlaySE1WithPanning - b _080DEDA6 -_080DED86: - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x30] - subs r0, r1 - strh r0, [r4, 0x24] - movs r1, 0x24 - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _080DED98 - negs r0, r0 -_080DED98: - cmp r0, 0xC - bne _080DEDA6 - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - subs r0, r2, 0x1 - strh r0, [r4, 0x32] -_080DEDA6: - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080DEDB4 - adds r0, r4, 0 - bl DestroyAnimSprite -_080DEDB4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DED48 - - thumb_func_start sub_80DEDBC -sub_80DEDBC: @ 80DEDBC - push {lr} - ldrb r2, [r0, 0x1] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - movs r2, 0x8 - orrs r1, r2 - strb r1, [r0, 0x1] - movs r1, 0xFF - strh r1, [r0, 0x34] - bl sub_80DEC90 - pop {r0} - bx r0 - thumb_func_end sub_80DEDBC - - thumb_func_start sub_80DEDD8 -sub_80DEDD8: @ 80DEDD8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080DEE2C - ldr r1, _080DEE14 @ =0x00001f3f - movs r0, 0x48 - bl SetGpuReg - ldr r1, _080DEE18 @ =gBattle_WIN1H - ldr r2, _080DEE1C @ =0x000098f0 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _080DEE20 @ =gBattle_WIN1V - movs r0, 0xA0 - strh r0, [r1] - ldr r0, _080DEE24 @ =gBattle_WIN0H - ldrh r1, [r0] - movs r0, 0x42 - bl SetGpuReg - ldr r0, _080DEE28 @ =gBattle_WIN0V - ldrh r1, [r0] - movs r0, 0x46 - bl SetGpuReg - b _080DEE5C - .align 2, 0 -_080DEE14: .4byte 0x00001f3f -_080DEE18: .4byte gBattle_WIN1H -_080DEE1C: .4byte 0x000098f0 -_080DEE20: .4byte gBattle_WIN1V -_080DEE24: .4byte gBattle_WIN0H -_080DEE28: .4byte gBattle_WIN0V -_080DEE2C: - ldr r1, _080DEE68 @ =0x00001f3f - movs r0, 0x48 - bl SetGpuReg - ldr r1, _080DEE6C @ =gBattle_WIN1H - movs r0, 0xF0 - strh r0, [r1] - ldr r4, _080DEE70 @ =gBattle_WIN1V - ldr r1, _080DEE74 @ =0x000078a0 - adds r0, r1, 0 - strh r0, [r4] - movs r0, 0x42 - movs r1, 0xF0 - bl SetGpuReg - ldrh r1, [r4] - movs r0, 0x46 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 7 - movs r0, 0 - bl SetGpuRegBits -_080DEE5C: - adds r0, r5, 0 - bl DestroyAnimVisualTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DEE68: .4byte 0x00001f3f -_080DEE6C: .4byte gBattle_WIN1H -_080DEE70: .4byte gBattle_WIN1V -_080DEE74: .4byte 0x000078a0 - thumb_func_end sub_80DEDD8 - - thumb_func_start sub_80DEE78 -sub_80DEE78: @ 80DEE78 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080DEEB0 @ =0x00003f3f - movs r0, 0x48 - bl SetGpuReg - ldr r0, _080DEEB4 @ =gBattle_WIN1H - movs r1, 0 - strh r1, [r0] - ldr r0, _080DEEB8 @ =gBattle_WIN1V - strh r1, [r0] - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080DEEA4 - movs r1, 0x80 - lsls r1, 7 - movs r0, 0 - bl ClearGpuRegBits -_080DEEA4: - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DEEB0: .4byte 0x00003f3f -_080DEEB4: .4byte gBattle_WIN1H -_080DEEB8: .4byte gBattle_WIN1V - thumb_func_end sub_80DEE78 - - thumb_func_start sub_80DEEBC -sub_80DEEBC: @ 80DEEBC - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _080DEED0 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080DEED8 - ldr r4, _080DEED4 @ =gBattleAnimAttacker - b _080DEEDA - .align 2, 0 -_080DEED0: .4byte gBattleAnimArgs -_080DEED4: .4byte gBattleAnimAttacker -_080DEED8: - ldr r4, _080DEF2C @ =gBattleAnimTarget -_080DEEDA: - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x2] - adds r0, r6 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r2, _080DEF30 @ =gBattleAnimArgs - ldrh r0, [r2, 0x4] - strh r0, [r5, 0x26] - movs r3, 0 - lsls r0, 16 - asrs r0, 16 - ldrh r4, [r2, 0x6] - movs r6, 0x6 - ldrsh r1, [r2, r6] - cmp r0, r1 - ble _080DEF12 - movs r3, 0x1 -_080DEF12: - strh r3, [r5, 0x2E] - movs r0, 0 - strh r0, [r5, 0x30] - ldrh r0, [r2, 0x8] - strh r0, [r5, 0x32] - ldrh r0, [r2, 0xA] - strh r0, [r5, 0x34] - strh r4, [r5, 0x36] - ldr r0, _080DEF34 @ =sub_80DEF38 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DEF2C: .4byte gBattleAnimTarget -_080DEF30: .4byte gBattleAnimArgs -_080DEF34: .4byte sub_80DEF38 - thumb_func_end sub_80DEEBC - - thumb_func_start sub_80DEF38 -sub_80DEF38: @ 80DEF38 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x32] - ldrh r1, [r2, 0x30] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r2, 0x30] - ldr r1, _080DEF80 @ =gSineTable - movs r3, 0x30 - ldrsh r0, [r2, r3] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 20 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x34] - ldrh r3, [r2, 0x26] - adds r1, r0, r3 - strh r1, [r2, 0x26] - movs r3, 0x2E - ldrsh r0, [r2, r3] - cmp r0, 0 - beq _080DEF84 - lsls r0, r1, 16 - asrs r0, 16 - movs r3, 0x36 - ldrsh r1, [r2, r3] - cmp r0, r1 - bge _080DEF96 - adds r0, r2, 0 - bl DestroyAnimSprite - b _080DEF96 - .align 2, 0 -_080DEF80: .4byte gSineTable -_080DEF84: - lsls r0, r1, 16 - asrs r0, 16 - movs r3, 0x36 - ldrsh r1, [r2, r3] - cmp r0, r1 - ble _080DEF96 - adds r0, r2, 0 - bl DestroyAnimSprite -_080DEF96: - pop {r0} - bx r0 - thumb_func_end sub_80DEF38 - - thumb_func_start sub_80DEF9C -sub_80DEF9C: @ 80DEF9C - push {r4-r7,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080DEFBC @ =gTasks - adds r5, r1, r0 - ldr r0, _080DEFC0 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080DEFC8 - ldr r4, _080DEFC4 @ =gBattleAnimAttacker - b _080DEFCA - .align 2, 0 -_080DEFBC: .4byte gTasks -_080DEFC0: .4byte gBattleAnimArgs -_080DEFC4: .4byte gBattleAnimAttacker -_080DEFC8: - ldr r4, _080DF010 @ =gBattleAnimTarget -_080DEFCA: - ldrb r0, [r4] - bl GetBattlerYCoordWithElevation - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - bl GetBattlerSpriteBGPriorityRank - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r6, 0 - adds r1, r0, 0 - adds r1, 0x24 - movs r2, 0 - strh r1, [r5, 0x8] - strh r1, [r5, 0xA] - subs r0, 0x21 - strh r0, [r5, 0xC] - cmp r0, 0 - bge _080DEFF4 - strh r2, [r5, 0xC] -_080DEFF4: - ldrh r0, [r5, 0x8] - strh r0, [r5, 0xE] - movs r0, 0x8 - strh r0, [r5, 0x10] - ldr r1, _080DF014 @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - strh r0, [r5, 0x12] - strh r2, [r5, 0x14] - strh r2, [r5, 0x16] - cmp r7, 0x1 - bne _080DF01C - ldr r0, _080DF018 @ =gBattle_BG1_X - b _080DF01E - .align 2, 0 -_080DF010: .4byte gBattleAnimTarget -_080DF014: .4byte gBattleAnimArgs -_080DF018: .4byte gBattle_BG1_X -_080DF01C: - ldr r0, _080DF03C @ =gBattle_BG2_X -_080DF01E: - ldrh r2, [r0] - strh r2, [r5, 0x18] - adds r3, r2, 0 - adds r3, 0xF0 - strh r3, [r5, 0x1A] - ldrh r0, [r1, 0x4] - strh r0, [r5, 0x1C] - movs r4, 0x4 - ldrsh r0, [r1, r4] - cmp r0, 0 - bne _080DF040 - strh r3, [r5, 0x1E] - ldrh r3, [r5, 0x18] - b _080DF044 - .align 2, 0 -_080DF03C: .4byte gBattle_BG2_X -_080DF040: - strh r2, [r5, 0x1E] - ldrh r3, [r5, 0x1A] -_080DF044: - movs r0, 0 - strh r0, [r5, 0x26] - ldrh r1, [r5, 0xC] - lsls r2, r1, 16 - asrs r1, r2, 16 - movs r6, 0xE - ldrsh r0, [r5, r6] - cmp r1, r0 - bgt _080DF07A - ldr r4, _080DF084 @ =gScanlineEffectRegBuffers - movs r0, 0xF0 - lsls r0, 3 - adds r0, r4 - mov r12, r0 -_080DF060: - asrs r2, 16 - lsls r1, r2, 1 - adds r0, r1, r4 - strh r3, [r0] - add r1, r12 - strh r3, [r1] - adds r2, 0x1 - lsls r2, 16 - asrs r1, r2, 16 - movs r6, 0xE - ldrsh r0, [r5, r6] - cmp r1, r0 - ble _080DF060 -_080DF07A: - cmp r7, 0x1 - bne _080DF08C - ldr r0, _080DF088 @ =0x04000014 - b _080DF08E - .align 2, 0 -_080DF084: .4byte gScanlineEffectRegBuffers -_080DF088: .4byte 0x04000014 -_080DF08C: - ldr r0, _080DF0B8 @ =0x04000018 -_080DF08E: - str r0, [sp] - ldr r0, _080DF0BC @ =0xa2600001 - str r0, [sp, 0x4] - mov r1, sp - movs r2, 0 - movs r0, 0x1 - strb r0, [r1, 0x8] - mov r0, sp - strb r2, [r0, 0x9] - ldr r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - bl ScanlineEffect_SetParams - ldr r0, _080DF0C0 @ =sub_80DF0C4 - str r0, [r5] - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DF0B8: .4byte 0x04000018 -_080DF0BC: .4byte 0xa2600001 -_080DF0C0: .4byte sub_80DF0C4 - thumb_func_end sub_80DEF9C - - thumb_func_start sub_80DF0C4 -sub_80DF0C4: @ 80DF0C4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - ldr r1, _080DF114 @ =gTasks - adds r4, r0, r1 - ldrh r0, [r4, 0x8] - ldrh r1, [r4, 0x12] - subs r0, r1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - ldrh r2, [r4, 0xC] - movs r3, 0xC - ldrsh r1, [r4, r3] - cmp r0, r1 - bge _080DF0EC - strh r2, [r4, 0x8] -_080DF0EC: - ldrh r1, [r4, 0x10] - movs r2, 0x10 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080DF118 - ldrh r0, [r4, 0xA] - ldrh r1, [r4, 0x12] - subs r0, r1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - ldrh r2, [r4, 0xC] - movs r3, 0xC - ldrsh r1, [r4, r3] - cmp r0, r1 - bge _080DF11C - strh r2, [r4, 0xA] - movs r0, 0x1 - strh r0, [r4, 0x26] - b _080DF11C - .align 2, 0 -_080DF114: .4byte gTasks -_080DF118: - subs r0, r1, 0x1 - strh r0, [r4, 0x10] -_080DF11C: - ldrh r0, [r4, 0x14] - adds r0, 0x1 - strh r0, [r4, 0x14] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080DF148 - movs r0, 0 - strh r0, [r4, 0x14] - movs r1, 0 - movs r2, 0x16 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080DF13A - movs r1, 0x1 -_080DF13A: - strh r1, [r4, 0x16] - cmp r1, 0 - beq _080DF144 - ldrh r0, [r4, 0x18] - b _080DF146 -_080DF144: - ldrh r0, [r4, 0x1A] -_080DF146: - strh r0, [r4, 0x20] -_080DF148: - ldrh r1, [r4, 0x8] - lsls r3, r1, 16 - asrs r1, r3, 16 - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r1, r0 - bge _080DF17C - ldr r5, _080DF1D4 @ =gScanlineEffectRegBuffers - movs r0, 0xF0 - lsls r0, 3 - adds r6, r5, r0 -_080DF15E: - asrs r3, 16 - lsls r1, r3, 1 - adds r2, r1, r5 - ldrh r0, [r4, 0x20] - strh r0, [r2] - adds r1, r6 - ldrh r0, [r4, 0x20] - strh r0, [r1] - adds r3, 0x1 - lsls r3, 16 - asrs r1, r3, 16 - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r1, r0 - blt _080DF15E -_080DF17C: - ldrh r1, [r4, 0xA] - lsls r3, r1, 16 - asrs r1, r3, 16 - movs r2, 0xE - ldrsh r0, [r4, r2] - cmp r1, r0 - bgt _080DF1B0 - ldr r5, _080DF1D4 @ =gScanlineEffectRegBuffers - movs r0, 0xF0 - lsls r0, 3 - adds r6, r5, r0 -_080DF192: - asrs r3, 16 - lsls r1, r3, 1 - adds r2, r1, r5 - ldrh r0, [r4, 0x1E] - strh r0, [r2] - adds r1, r6 - ldrh r0, [r4, 0x1E] - strh r0, [r1] - adds r3, 0x1 - lsls r3, 16 - asrs r1, r3, 16 - movs r2, 0xE - ldrsh r0, [r4, r2] - cmp r1, r0 - ble _080DF192 -_080DF1B0: - movs r3, 0x26 - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _080DF1CC - movs r1, 0x1C - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080DF1C6 - ldr r1, _080DF1D8 @ =gScanlineEffect - movs r0, 0x3 - strb r0, [r1, 0x15] -_080DF1C6: - adds r0, r7, 0 - bl DestroyAnimVisualTask -_080DF1CC: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DF1D4: .4byte gScanlineEffectRegBuffers -_080DF1D8: .4byte gScanlineEffect - thumb_func_end sub_80DF0C4 - - thumb_func_start sub_80DF1DC -sub_80DF1DC: @ 80DF1DC - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080DF230 @ =gTasks - adds r4, r0 - movs r5, 0 - strh r5, [r4, 0x8] - strh r5, [r4, 0xA] - ldr r6, _080DF234 @ =gBattleAnimAttacker - ldrb r0, [r6] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0xC] - ldrb r0, [r6] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0xE] - movs r0, 0x20 - strh r0, [r4, 0x10] - ldr r0, _080DF238 @ =0x0000ffec - strh r0, [r4, 0x12] - strh r5, [r4, 0x14] - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - ldr r0, _080DF23C @ =sub_80DF240 - str r0, [r4] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DF230: .4byte gTasks -_080DF234: .4byte gBattleAnimAttacker -_080DF238: .4byte 0x0000ffec -_080DF23C: .4byte sub_80DF240 - thumb_func_end sub_80DF1DC - - thumb_func_start sub_80DF240 -sub_80DF240: @ 80DF240 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080DF26C @ =gTasks - adds r6, r0, r1 - movs r1, 0x8 - ldrsh r0, [r6, r1] - cmp r0, 0x5 - bls _080DF260 - b _080DF41A -_080DF260: - lsls r0, 2 - ldr r1, _080DF270 @ =_080DF274 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080DF26C: .4byte gTasks -_080DF270: .4byte _080DF274 - .align 2, 0 -_080DF274: - .4byte _080DF28C - .4byte _080DF34C - .4byte _080DF37A - .4byte _080DF38E - .4byte _080DF3A4 - .4byte _080DF40C -_080DF28C: - movs r0, 0xC - ldrsh r2, [r6, r0] - ldrh r1, [r6, 0xA] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080DF2A2 - movs r1, 0x10 - ldrsh r0, [r6, r1] - subs r0, r2, r0 - b _080DF2A8 -_080DF2A2: - movs r1, 0x10 - ldrsh r0, [r6, r1] - adds r0, r2, r0 -_080DF2A8: - lsls r0, 16 - lsrs r1, r0, 16 - ldrh r2, [r6, 0x12] - ldrh r0, [r6, 0xE] - adds r2, r0 - ldr r0, _080DF33C @ =gUnknown_83E398C - lsls r1, 16 - asrs r1, 16 - lsls r2, 16 - asrs r2, 16 - ldrb r4, [r6, 0xA] - movs r3, 0x6 - subs r3, r4 - lsls r3, 24 - lsrs r3, 24 - bl CreateSprite - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x40 - negs r0, r0 - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xB3 - bl PlaySE12WithPanning - cmp r4, 0x40 - beq _080DF30C - ldr r5, _080DF340 @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r3, r1, r5 - ldrh r0, [r6, 0xA] - movs r2, 0x1 - ands r2, r0 - adds r3, 0x3F - ldrb r4, [r3] - movs r0, 0x2 - negs r0, r0 - ands r0, r4 - orrs r0, r2 - strb r0, [r3] - adds r5, 0x1C - adds r1, r5 - ldr r0, _080DF344 @ =SpriteCallbackDummy - str r0, [r1] -_080DF30C: - ldrh r1, [r6, 0xA] - movs r4, 0x1 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _080DF324 - ldrh r0, [r6, 0x10] - subs r0, 0x6 - strh r0, [r6, 0x10] - ldrh r0, [r6, 0x12] - subs r0, 0x6 - strh r0, [r6, 0x12] -_080DF324: - ldrh r1, [r6, 0x26] - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080DF348 @ =gUnknown_83FF080 - adds r0, r6, 0 - bl PrepareAffineAnimInTaskData - ldrh r0, [r6, 0xA] - adds r0, 0x1 - strh r0, [r6, 0xA] - strh r4, [r6, 0x8] - b _080DF41A - .align 2, 0 -_080DF33C: .4byte gUnknown_83E398C -_080DF340: .4byte gSprites -_080DF344: .4byte SpriteCallbackDummy -_080DF348: .4byte gUnknown_83FF080 -_080DF34C: - adds r0, r6, 0 - bl RunAffineAnimFromTaskData - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080DF41A - movs r2, 0xA - ldrsh r1, [r6, r2] - cmp r1, 0x6 - bne _080DF36C - movs r0, 0x8 - strh r0, [r6, 0x14] - movs r0, 0x3 - strh r0, [r6, 0x8] - b _080DF41A -_080DF36C: - cmp r1, 0x2 - bgt _080DF372 - movs r0, 0xA -_080DF372: - strh r0, [r6, 0x14] - movs r0, 0x2 - strh r0, [r6, 0x8] - b _080DF41A -_080DF37A: - ldrh r0, [r6, 0x14] - movs r2, 0x14 - ldrsh r1, [r6, r2] - cmp r1, 0 - beq _080DF38A - subs r0, 0x1 - strh r0, [r6, 0x14] - b _080DF41A -_080DF38A: - strh r1, [r6, 0x8] - b _080DF41A -_080DF38E: - ldrh r1, [r6, 0x14] - movs r2, 0x14 - ldrsh r0, [r6, r2] - cmp r0, 0 - beq _080DF39E - subs r0, r1, 0x1 - strh r0, [r6, 0x14] - b _080DF41A -_080DF39E: - movs r0, 0x4 - strh r0, [r6, 0x8] - b _080DF41A -_080DF3A4: - movs r5, 0 - movs r7, 0 - ldr r3, _080DF400 @ =gSprites - movs r0, 0x1C - adds r0, r3 - mov r8, r0 -_080DF3B0: - lsls r0, r5, 4 - adds r0, r5 - lsls r4, r0, 2 - adds r0, r3, 0 - adds r0, 0x14 - adds r0, r4, r0 - ldr r1, [r0] - ldr r0, _080DF404 @ =gUnknown_83E398C - cmp r1, r0 - bne _080DF3EC - adds r0, r4, r3 - strh r2, [r0, 0x2E] - movs r1, 0x6 - strh r1, [r0, 0x30] - movs r1, 0x2 - str r2, [sp] - str r3, [sp, 0x4] - bl StartSpriteAnim - mov r0, r8 - adds r1, r4, r0 - ldr r0, _080DF408 @ =sub_80DF428 - str r0, [r1] - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - ldr r2, [sp] - ldr r3, [sp, 0x4] - cmp r7, 0x6 - beq _080DF3F6 -_080DF3EC: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x3F - bls _080DF3B0 -_080DF3F6: - strh r7, [r6, 0x14] - movs r0, 0x5 - strh r0, [r6, 0x8] - b _080DF41A - .align 2, 0 -_080DF400: .4byte gSprites -_080DF404: .4byte gUnknown_83E398C -_080DF408: .4byte sub_80DF428 -_080DF40C: - movs r1, 0x14 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080DF41A - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080DF41A: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80DF240 - - thumb_func_start sub_80DF428 -sub_80DF428: @ 80DF428 - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080DF45C - ldr r3, _080DF464 @ =gTasks - movs r0, 0x30 - ldrsh r1, [r4, r0] - lsls r1, 1 - movs r0, 0x2E - ldrsh r2, [r4, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r3, 0x8 - adds r1, r3 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - adds r0, r4, 0 - bl DestroySprite -_080DF45C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DF464: .4byte gTasks - thumb_func_end sub_80DF428 - - thumb_func_start sub_80DF468 -sub_80DF468: @ 80DF468 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080DF47C - adds r0, r5, 0 - movs r1, 0 - bl InitSpritePosToAnimAttacker -_080DF47C: - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x27 - bgt _080DF4AE - ldrh r0, [r5, 0x2E] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080DF4A0 - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - b _080DF4AC -_080DF4A0: - adds r2, r5, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 -_080DF4AC: - strb r0, [r2] -_080DF4AE: - movs r2, 0x2E - ldrsh r0, [r5, r2] - cmp r0, 0x1E - ble _080DF4C4 - adds r2, r5, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080DF4C4: - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0x3D - bne _080DF510 - ldr r1, _080DF518 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldrh r0, [r5, 0x24] - ldrh r2, [r5, 0x20] - adds r0, r2 - movs r1, 0 - strh r0, [r5, 0x20] - ldrh r0, [r5, 0x26] - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - strh r1, [r5, 0x24] - strh r1, [r5, 0x26] - movs r0, 0x14 - strh r0, [r5, 0x2E] - ldr r4, _080DF51C @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - ldr r0, _080DF520 @ =StartAnimLinearTranslation - str r0, [r5, 0x1C] -_080DF510: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DF518: .4byte DestroyAnimSprite -_080DF51C: .4byte gBattleAnimTarget -_080DF520: .4byte StartAnimLinearTranslation - thumb_func_end sub_80DF468 - - thumb_func_start sub_80DF524 -sub_80DF524: @ 80DF524 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080DF544 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080DF548 - cmp r0, 0x1 - beq _080DF568 - b _080DF57A - .align 2, 0 -_080DF544: .4byte gTasks -_080DF548: - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080DF564 @ =gUnknown_83FF130 - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080DF57A - .align 2, 0 -_080DF564: .4byte gUnknown_83FF130 -_080DF568: - adds r0, r4, 0 - bl RunAffineAnimFromTaskData - lsls r0, 24 - cmp r0, 0 - bne _080DF57A - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080DF57A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80DF524 - - thumb_func_start sub_80DF580 -sub_80DF580: @ 80DF580 - push {r4-r6,lr} - adds r5, r0, 0 - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r6, r0, 24 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080DF5E0 - cmp r0, 0x1 - bgt _080DF5A0 - cmp r0, 0 - beq _080DF5AA - b _080DF682 -_080DF5A0: - cmp r0, 0x2 - beq _080DF610 - cmp r0, 0x3 - beq _080DF664 - b _080DF682 -_080DF5AA: - ldr r4, _080DF5DC @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - adds r0, r6, 0 - movs r1, 0 - bl PrepareBattlerSpriteForRotScale - movs r0, 0x80 - lsls r0, 1 - strh r0, [r5, 0x30] - strh r0, [r5, 0x32] - b _080DF658 - .align 2, 0 -_080DF5DC: .4byte gBattleAnimAttacker -_080DF5E0: - ldrh r0, [r5, 0x30] - adds r0, 0x60 - strh r0, [r5, 0x30] - ldrh r0, [r5, 0x32] - subs r0, 0x1A - strh r0, [r5, 0x32] - movs r2, 0x30 - ldrsh r1, [r5, r2] - movs r0, 0x32 - ldrsh r2, [r5, r0] - adds r0, r6, 0 - movs r3, 0 - bl SetSpriteRotScale - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _080DF610 - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] -_080DF610: - ldrh r0, [r5, 0x30] - adds r0, 0x60 - strh r0, [r5, 0x30] - ldrh r0, [r5, 0x32] - adds r0, 0x30 - strh r0, [r5, 0x32] - movs r2, 0x30 - ldrsh r1, [r5, r2] - movs r0, 0x32 - ldrsh r2, [r5, r0] - adds r0, r6, 0 - movs r3, 0 - bl SetSpriteRotScale - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - bne _080DF682 - movs r0, 0 - strh r0, [r5, 0x34] - ldr r1, _080DF660 @ =gSprites - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - adds r0, r6, 0 - bl ResetSpriteRotScale -_080DF658: - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - b _080DF682 - .align 2, 0 -_080DF660: .4byte gSprites -_080DF664: - ldrh r0, [r5, 0x26] - subs r0, 0x6 - strh r0, [r5, 0x26] - movs r1, 0x22 - ldrsh r0, [r5, r1] - movs r2, 0x26 - ldrsh r1, [r5, r2] - adds r0, r1 - movs r1, 0x20 - negs r1, r1 - cmp r0, r1 - bge _080DF682 - adds r0, r5, 0 - bl DestroyAnimSprite -_080DF682: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80DF580 - - thumb_func_start sub_80DF688 -sub_80DF688: @ 80DF688 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080DF6A0 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080DF6A8 - ldr r0, _080DF6A4 @ =0x0000fff0 - b _080DF6AC - .align 2, 0 -_080DF6A0: .4byte gBattleAnimAttacker -_080DF6A4: .4byte 0x0000fff0 -_080DF6A8: - movs r0, 0x80 - lsls r0, 1 -_080DF6AC: - strh r0, [r4, 0x20] - movs r0, 0 - strh r0, [r4, 0x22] - ldr r0, _080DF6BC @ =sub_80DF6C0 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DF6BC: .4byte sub_80DF6C0 - thumb_func_end sub_80DF688 - - thumb_func_start sub_80DF6C0 -sub_80DF6C0: @ 80DF6C0 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x48 - strh r0, [r4, 0x2E] - ldr r0, _080DF6E0 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080DF6E4 - ldrh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 20 - b _080DF6EC - .align 2, 0 -_080DF6E0: .4byte gBattleAnimAttacker -_080DF6E4: - ldrh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 20 - negs r0, r0 -_080DF6EC: - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x30] - adds r0, 0x10 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 24 - ldrh r1, [r4, 0x26] - adds r5, r0, r1 - strh r5, [r4, 0x26] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x3 - bl __modsi3 - lsls r0, 16 - cmp r0, 0 - bne _080DF738 - ldr r0, _080DF758 @ =gUnknown_83FF180 - ldrh r1, [r4, 0x24] - ldrh r2, [r4, 0x20] - adds r1, r2 - lsls r1, 16 - asrs r1, 16 - ldrh r2, [r4, 0x22] - adds r2, r5 - lsls r2, 16 - asrs r2, 16 - adds r3, r4, 0 - adds r3, 0x43 - ldrb r3, [r3] - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - bl CreateSpriteAndAnimate -_080DF738: - movs r1, 0x20 - ldrsh r0, [r4, r1] - movs r2, 0x24 - ldrsh r1, [r4, r2] - adds r0, r1 - adds r0, 0x20 - movs r1, 0x98 - lsls r1, 1 - cmp r0, r1 - bls _080DF752 - adds r0, r4, 0 - bl DestroyAnimSprite -_080DF752: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DF758: .4byte gUnknown_83FF180 - thumb_func_end sub_80DF6C0 - - thumb_func_start sub_80DF75C -sub_80DF75C: @ 80DF75C - push {r4,lr} - adds r4, r0, 0 - bl Random - movs r1, 0x3 - ands r0, r1 - cmp r0, 0 - bne _080DF776 - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x4 - b _080DF77E -_080DF776: - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x5 -_080DF77E: - ldr r3, _080DF7B0 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080DF7B4 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - bl Random - movs r1, 0x7 - ands r0, r1 - adds r1, r0, 0 - cmp r1, 0x3 - ble _080DF7A0 - negs r0, r1 - lsls r0, 24 - lsrs r0, 24 -_080DF7A0: - lsls r0, 24 - asrs r0, 24 - strh r0, [r4, 0x26] - ldr r0, _080DF7B8 @ =sub_80DF7BC - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DF7B0: .4byte 0x000003ff -_080DF7B4: .4byte 0xfffffc00 -_080DF7B8: .4byte sub_80DF7BC - thumb_func_end sub_80DF75C - - thumb_func_start sub_80DF7BC -sub_80DF7BC: @ 80DF7BC - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1D - bgt _080DF7FE - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080DF832 - 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] - movs r0, 0 - b _080DF830 -_080DF7FE: - movs r1, 0x30 - ldrsh r0, [r3, r1] - cmp r0, 0x2 - bne _080DF814 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080DF814: - movs r1, 0x30 - ldrsh r0, [r3, r1] - cmp r0, 0x3 - bne _080DF82C - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080DF844 @ =0x0000ffff - strh r0, [r3, 0x30] -_080DF82C: - ldrh r0, [r3, 0x30] - adds r0, 0x1 -_080DF830: - strh r0, [r3, 0x30] -_080DF832: - movs r1, 0x2E - ldrsh r0, [r3, r1] - cmp r0, 0x3C - ble _080DF840 - adds r0, r3, 0 - bl DestroySprite -_080DF840: - pop {r0} - bx r0 - .align 2, 0 -_080DF844: .4byte 0x0000ffff - thumb_func_end sub_80DF7BC - - thumb_func_start sub_80DF848 -sub_80DF848: @ 80DF848 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _080DF880 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080DF888 - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080DF884 @ =gUnknown_83FF198 - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080DF89A - .align 2, 0 -_080DF880: .4byte gTasks -_080DF884: .4byte gUnknown_83FF198 -_080DF888: - adds r0, r4, 0 - bl RunAffineAnimFromTaskData - lsls r0, 24 - cmp r0, 0 - bne _080DF89A - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080DF89A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80DF848 - - thumb_func_start sub_80DF8A0 -sub_80DF8A0: @ 80DF8A0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _080DF8D8 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080DF8E0 - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080DF8DC @ =gUnknown_83FF1C0 - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080DF8F2 - .align 2, 0 -_080DF8D8: .4byte gTasks -_080DF8DC: .4byte gUnknown_83FF1C0 -_080DF8E0: - adds r0, r4, 0 - bl RunAffineAnimFromTaskData - lsls r0, 24 - cmp r0, 0 - bne _080DF8F2 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080DF8F2: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80DF8A0 - - thumb_func_start sub_80DF8F8 -sub_80DF8F8: @ 80DF8F8 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080DF90A - cmp r0, 0x1 - beq _080DF934 - b _080DF95C -_080DF90A: - adds r0, r4, 0 - movs r1, 0 - bl InitSpritePosToAnimAttacker - movs r0, 0x90 - lsls r0, 4 - strh r0, [r4, 0x30] - ldr r0, _080DF930 @ =gBattleAnimAttacker - ldrb r0, [r0] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080DF95C - .align 2, 0 -_080DF930: .4byte gBattleAnimAttacker -_080DF934: - ldrh r2, [r4, 0x30] - lsls r1, r2, 16 - asrs r1, 24 - ldrh r0, [r4, 0x26] - subs r0, r1 - strh r0, [r4, 0x26] - subs r2, 0x60 - strh r2, [r4, 0x30] - movs r2, 0x22 - ldrsh r0, [r4, r2] - movs r2, 0x26 - ldrsh r1, [r4, r2] - adds r0, r1 - movs r2, 0x32 - ldrsh r1, [r4, r2] - cmp r0, r1 - ble _080DF95C - adds r0, r4, 0 - bl DestroyAnimSprite -_080DF95C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DF8F8 - - thumb_func_start sub_80DF964 -sub_80DF964: @ 80DF964 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _080DF99C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080DF9A4 - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080DF9A0 @ =gUnknown_83FF210 - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080DF9B6 - .align 2, 0 -_080DF99C: .4byte gTasks -_080DF9A0: .4byte gUnknown_83FF210 -_080DF9A4: - adds r0, r4, 0 - bl RunAffineAnimFromTaskData - lsls r0, 24 - cmp r0, 0 - bne _080DF9B6 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080DF9B6: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80DF964 - - thumb_func_start sub_80DF9BC -sub_80DF9BC: @ 80DF9BC - push {r4-r6,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080DF9E4 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r3, r1, 0 - cmp r0, 0x4 - bls _080DF9DA - b _080DFBCE -_080DF9DA: - lsls r0, 2 - ldr r1, _080DF9E8 @ =_080DF9EC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080DF9E4: .4byte gTasks -_080DF9E8: .4byte _080DF9EC - .align 2, 0 -_080DF9EC: - .4byte _080DFA00 - .4byte _080DFA4C - .4byte _080DFA86 - .4byte _080DFB1C - .4byte _080DFB58 -_080DFA00: - movs r0, 0x4C - movs r1, 0 - bl SetGpuReg - ldr r0, _080DFA24 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSpriteBGPriorityRank - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080DFA28 - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0x1 - bl SetAnimBgAttribute - b _080DFA32 - .align 2, 0 -_080DFA24: .4byte gBattleAnimAttacker -_080DFA28: - movs r0, 0x2 - movs r1, 0x2 - movs r2, 0x1 - bl SetAnimBgAttribute -_080DFA32: - ldr r0, _080DFA44 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080DFA48 @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r1, 0x1C] - b _080DFB00 - .align 2, 0 -_080DFA44: .4byte gTasks -_080DFA48: .4byte gBattleAnimArgs -_080DFA4C: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r5, r0, r3 - ldrh r0, [r5, 0xC] - adds r1, r0, 0x1 - strh r1, [r5, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bgt _080DFA64 - b _080DFBCE -_080DFA64: - movs r0, 0 - strh r0, [r5, 0xC] - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - ldrh r4, [r5, 0xA] - lsls r1, r4, 4 - orrs r1, r4 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x4C - bl SetGpuReg - cmp r4, 0xF - beq _080DFA84 - b _080DFBCE -_080DFA84: - b _080DFB50 -_080DFA86: - ldr r6, _080DFAB4 @ =gBattleAnimAttacker - ldrb r0, [r6] - ldr r1, _080DFAB8 @ =gBattleAnimTarget - ldrb r1, [r1] - lsls r4, r5, 2 - adds r2, r4, r5 - lsls r2, 3 - adds r2, r3 - ldrb r2, [r2, 0x1C] - bl HandleSpeciesGfxDataChange - ldrb r1, [r6] - mov r0, sp - bl sub_8075300 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080DFABC - movs r1, 0 - b _080DFAC6 - .align 2, 0 -_080DFAB4: .4byte gBattleAnimAttacker -_080DFAB8: .4byte gBattleAnimTarget -_080DFABC: - ldrb r0, [r6] - bl GetBattlerPosition - lsls r0, 24 - lsrs r1, r0, 24 -_080DFAC6: - ldr r0, _080DFB08 @ =gMonSpritesGfxPtr - ldr r2, [r0] - lsls r0, r1, 2 - adds r2, 0x4 - adds r2, r0 - ldr r1, _080DFB0C @ =gBattleMonForms - ldr r0, _080DFB10 @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r1, 11 - ldr r0, [r2] - adds r0, r1 - ldr r1, [sp] - ldr r2, _080DFB14 @ =0x04000200 - bl CpuSet - ldr r1, [sp] - movs r2, 0x80 - lsls r2, 4 - mov r0, sp - ldrh r3, [r0, 0xA] - movs r0, 0x1 - bl LoadBgTiles - ldr r0, _080DFB18 @ =gTasks - adds r1, r4, r5 - lsls r1, 3 - adds r1, r0 -_080DFB00: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _080DFBCE - .align 2, 0 -_080DFB08: .4byte gMonSpritesGfxPtr -_080DFB0C: .4byte gBattleMonForms -_080DFB10: .4byte gBattleAnimAttacker -_080DFB14: .4byte 0x04000200 -_080DFB18: .4byte gTasks -_080DFB1C: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r5, r0, r3 - ldrh r0, [r5, 0xC] - adds r1, r0, 0x1 - strh r1, [r5, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080DFBCE - movs r0, 0 - strh r0, [r5, 0xC] - ldrh r0, [r5, 0xA] - subs r0, 0x1 - strh r0, [r5, 0xA] - ldrh r4, [r5, 0xA] - lsls r1, r4, 4 - orrs r1, r4 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x4C - bl SetGpuReg - cmp r4, 0 - bne _080DFBCE -_080DFB50: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _080DFBCE -_080DFB58: - movs r0, 0x4C - movs r1, 0 - bl SetGpuReg - ldr r0, _080DFB7C @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSpriteBGPriorityRank - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080DFB80 - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0 - bl SetAnimBgAttribute - b _080DFB8A - .align 2, 0 -_080DFB7C: .4byte gBattleAnimAttacker -_080DFB80: - movs r0, 0x2 - movs r1, 0x2 - movs r2, 0 - bl SetAnimBgAttribute -_080DFB8A: - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080DFBC8 - ldr r4, _080DFBD8 @ =gBattleAnimAttacker - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080DFBC8 - ldr r0, _080DFBDC @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - movs r2, 0x1C - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080DFBC8 - ldrb r0, [r4] - ldr r1, _080DFBE0 @ =gBattleSpritesDataPtr - ldr r1, [r1] - ldr r2, [r1] - lsls r1, r0, 2 - adds r1, r2 - ldrh r1, [r1, 0x2] - bl SetBattlerShadowSpriteCallback -_080DFBC8: - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080DFBCE: - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DFBD8: .4byte gBattleAnimAttacker -_080DFBDC: .4byte gTasks -_080DFBE0: .4byte gBattleSpritesDataPtr - thumb_func_end sub_80DF9BC - - thumb_func_start c3_80DFBE4 -c3_80DFBE4: @ 80DFBE4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r4, _080DFC14 @ =gBattleAnimArgs - ldr r3, _080DFC18 @ =gSprites - ldr r2, _080DFC1C @ =gBattlerSpriteIds - ldr r1, _080DFC20 @ =gBattleAnimAttacker - ldrb r1, [r1] - adds r1, r2 - ldrb r2, [r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r3 - adds r1, 0x3E - ldrb r1, [r1] - lsls r1, 29 - lsrs r1, 31 - strh r1, [r4, 0xE] - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DFC14: .4byte gBattleAnimArgs -_080DFC18: .4byte gSprites -_080DFC1C: .4byte gBattlerSpriteIds -_080DFC20: .4byte gBattleAnimAttacker - thumb_func_end c3_80DFBE4 - - thumb_func_start sub_80DFC24 -sub_80DFC24: @ 80DFC24 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080DFC48 @ =gBattleAnimAttacker - ldrb r0, [r0] - ldr r1, _080DFC4C @ =gBattleAnimTarget - ldrb r1, [r1] - movs r2, 0x1 - bl HandleSpeciesGfxDataChange - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DFC48: .4byte gBattleAnimAttacker -_080DFC4C: .4byte gBattleAnimTarget - thumb_func_end sub_80DFC24 - - thumb_func_start sub_80DFC50 -sub_80DFC50: @ 80DFC50 - push {r4,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080DFC78 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r2, r1, 0 - cmp r0, 0x4 - bls _080DFC6E - b _080DFECA -_080DFC6E: - lsls r0, 2 - ldr r1, _080DFC7C @ =_080DFC80 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080DFC78: .4byte gTasks -_080DFC7C: .4byte _080DFC80 - .align 2, 0 -_080DFC80: - .4byte _080DFC94 - .4byte _080DFD90 - .4byte _080DFDE0 - .4byte _080DFE4A - .4byte _080DFE7E -_080DFC94: - ldr r1, _080DFD18 @ =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 5 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl SetAnimBgAttribute - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080DFCCE - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0x1 - bl SetAnimBgAttribute -_080DFCCE: - mov r0, sp - bl sub_80752A0 - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080DFD1C @ =gFile_graphics_battle_anims_masks_morning_sun_tilemap - bl AnimLoadCompressedBgTilemap - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080DFD20 @ =gFile_graphics_battle_anims_masks_morning_sun_sheet - mov r2, sp - ldrh r2, [r2, 0xA] - bl AnimLoadCompressedBgGfx - ldr r0, _080DFD24 @ =gFile_graphics_battle_anims_masks_morning_sun_palette - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080DFD30 - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80730C0 - ldr r1, _080DFD28 @ =gBattle_BG1_X - ldr r3, _080DFD2C @ =0x0000ffc8 - b _080DFD58 - .align 2, 0 -_080DFD18: .4byte 0x00003f42 -_080DFD1C: .4byte gFile_graphics_battle_anims_masks_morning_sun_tilemap -_080DFD20: .4byte gFile_graphics_battle_anims_masks_morning_sun_sheet -_080DFD24: .4byte gFile_graphics_battle_anims_masks_morning_sun_palette -_080DFD28: .4byte gBattle_BG1_X -_080DFD2C: .4byte 0x0000ffc8 -_080DFD30: - ldr r0, _080DFD48 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080DFD54 - ldr r1, _080DFD4C @ =gBattle_BG1_X - ldr r2, _080DFD50 @ =0x0000ff79 - adds r0, r2, 0 - b _080DFD5A - .align 2, 0 -_080DFD48: .4byte gBattleAnimAttacker -_080DFD4C: .4byte gBattle_BG1_X -_080DFD50: .4byte 0x0000ff79 -_080DFD54: - ldr r1, _080DFD80 @ =gBattle_BG1_X - ldr r3, _080DFD84 @ =0x0000fff6 -_080DFD58: - adds r0, r3, 0 -_080DFD5A: - strh r0, [r1] - ldr r1, _080DFD88 @ =gBattle_BG1_Y - movs r0, 0 - strh r0, [r1] - ldr r0, _080DFD8C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080DFD80 @ =gBattle_BG1_X - ldrh r0, [r0] - strh r0, [r1, 0x1C] - ldr r0, _080DFD88 @ =gBattle_BG1_Y - ldrh r0, [r0] - strh r0, [r1, 0x1E] - ldrh r0, [r1, 0x8] - adds r0, 0x1 - b _080DFE66 - .align 2, 0 -_080DFD80: .4byte gBattle_BG1_X -_080DFD84: .4byte 0x0000fff6 -_080DFD88: .4byte gBattle_BG1_Y -_080DFD8C: .4byte gTasks -_080DFD90: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r2 - ldrh r0, [r4, 0x10] - adds r1, r0, 0x1 - strh r1, [r4, 0x10] - lsls r0, 16 - cmp r0, 0 - bgt _080DFDA6 - b _080DFECA -_080DFDA6: - movs r0, 0 - strh r0, [r4, 0x10] - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xC - ble _080DFDBC - movs r0, 0xC - strh r0, [r4, 0xA] -_080DFDBC: - ldrh r0, [r4, 0xA] - movs r1, 0x10 - subs r1, r0 - lsls r1, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0xC - bne _080DFECA - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080DFECA -_080DFDE0: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r2 - ldrh r0, [r4, 0xA] - subs r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - cmp r0, 0 - bge _080DFDF8 - movs r0, 0 - strh r0, [r4, 0xA] -_080DFDF8: - ldrh r0, [r4, 0xA] - movs r1, 0x10 - subs r1, r0 - lsls r1, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080DFECA - ldr r2, _080DFE3C @ =gBattle_BG1_X - ldr r1, _080DFE40 @ =gUnknown_83FF240 - movs r3, 0xC - ldrsh r0, [r4, r3] - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldrh r1, [r4, 0x1C] - adds r0, r1 - strh r0, [r2] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080DFE44 - strh r0, [r4, 0x8] - b _080DFECA - .align 2, 0 -_080DFE3C: .4byte gBattle_BG1_X -_080DFE40: .4byte gUnknown_83FF240 -_080DFE44: - movs r0, 0x3 - strh r0, [r4, 0x8] - b _080DFECA -_080DFE4A: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r2 - ldrh r0, [r1, 0xE] - adds r0, 0x1 - strh r0, [r1, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080DFECA - movs r0, 0 - strh r0, [r1, 0xE] - movs r0, 0x1 -_080DFE66: - strh r0, [r1, 0x8] - movs r0, 0x40 - negs r0, r0 - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xDD - bl PlaySE12WithPanning - b _080DFECA -_080DFE7E: - mov r0, sp - bl sub_80752A0 - mov r0, sp - ldrb r0, [r0, 0x9] - bl sub_8075358 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080DFEA0 - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - bl SetAnimBgAttribute -_080DFEA0: - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - ldr r0, _080DFED4 @ =gBattle_BG1_X - movs r1, 0 - strh r1, [r0] - ldr r0, _080DFED8 @ =gBattle_BG1_Y - strh r1, [r0] - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080DFECA: - add sp, 0x10 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DFED4: .4byte gBattle_BG1_X -_080DFED8: .4byte gBattle_BG1_Y - thumb_func_end sub_80DFC50 - - thumb_func_start sub_80DFEDC -sub_80DFEDC: @ 80DFEDC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r7, r0, 0 - bl Random - lsls r0, 16 - movs r1, 0xFC - lsls r1, 14 - ands r1, r0 - lsrs r5, r1, 16 - adds r1, r5, 0 - cmp r1, 0x1F - ble _080DFF06 - movs r0, 0x20 - subs r0, r1 - lsls r0, 16 - lsrs r5, r0, 16 -_080DFF06: - ldr r4, _080E0000 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, r5 - strh r0, [r7, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x20 - strh r0, [r7, 0x22] - ldr r1, _080E0004 @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r7, 0x30] - ldrh r0, [r1, 0x2] - strh r0, [r7, 0x32] - ldr r4, _080E0008 @ =gUnknown_83FF26C - movs r0, 0x20 - ldrsh r1, [r7, r0] - movs r0, 0x22 - ldrsh r2, [r7, r0] - adds r5, r7, 0 - adds r5, 0x43 - ldrb r3, [r5] - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - bl CreateSprite - mov r9, r0 - mov r1, r9 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - movs r0, 0x20 - ldrsh r1, [r7, r0] - movs r0, 0x22 - ldrsh r2, [r7, r0] - ldrb r3, [r5] - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - bl CreateSprite - mov r8, r0 - mov r1, r8 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - mov r0, r9 - lsls r2, r0, 4 - add r2, r9 - lsls r2, 2 - ldr r1, _080E000C @ =gSprites - mov r10, r1 - adds r5, r2, r1 - adds r0, r5, 0 - movs r1, 0x1 - str r2, [sp] - bl StartSpriteAnim - mov r0, r8 - lsls r6, r0, 4 - add r6, r8 - lsls r6, 2 - mov r1, r10 - adds r4, r6, r1 - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAnim - ldr r1, _080E0004 @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r5, 0x30] - ldrh r0, [r1, 0x2] - strh r0, [r5, 0x32] - ldrh r0, [r1] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x32] - ldr r0, _080E0010 @ =0x0000ffff - strh r0, [r5, 0x3C] - movs r0, 0x1 - negs r0, r0 - strh r0, [r4, 0x3C] - adds r5, 0x3E - ldrb r0, [r5] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r5] - adds r4, 0x3E - ldrb r0, [r4] - orrs r0, r1 - strb r0, [r4] - movs r0, 0x1C - add r10, r0 - ldr r2, [sp] - add r2, r10 - ldr r0, _080E0014 @ =sub_80E0128 - str r0, [r2] - add r6, r10 - str r0, [r6] - mov r1, r9 - strh r1, [r7, 0x3A] - mov r0, r8 - strh r0, [r7, 0x3C] - ldr r0, _080E0018 @ =sub_80E001C - str r0, [r7, 0x1C] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E0000: .4byte gBattleAnimAttacker -_080E0004: .4byte gBattleAnimArgs -_080E0008: .4byte gUnknown_83FF26C -_080E000C: .4byte gSprites -_080E0010: .4byte 0x0000ffff -_080E0014: .4byte sub_80E0128 -_080E0018: .4byte sub_80E001C - thumb_func_end sub_80DFEDC - - thumb_func_start sub_80E001C -sub_80E001C: @ 80E001C - push {lr} - adds r3, r0, 0 - ldrh r2, [r3, 0x32] - ldrh r0, [r3, 0x34] - adds r2, r0 - lsls r0, r2, 16 - asrs r0, 24 - ldrh r1, [r3, 0x26] - subs r1, r0 - strh r1, [r3, 0x26] - movs r0, 0xFF - ands r2, r0 - strh r2, [r3, 0x34] - movs r2, 0x36 - ldrsh r0, [r3, r2] - cmp r0, 0 - bne _080E006A - lsls r0, r1, 16 - asrs r0, 16 - movs r1, 0x8 - negs r1, r1 - cmp r0, r1 - bge _080E006A - ldr r2, _080E00C4 @ =gSprites - movs r0, 0x3A - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldrh r0, [r3, 0x36] - adds r0, 0x1 - strh r0, [r3, 0x36] -_080E006A: - movs r1, 0x36 - ldrsh r0, [r3, r1] - cmp r0, 0x1 - bne _080E009E - movs r2, 0x26 - ldrsh r1, [r3, r2] - movs r0, 0x10 - negs r0, r0 - cmp r1, r0 - bge _080E009E - ldr r2, _080E00C4 @ =gSprites - movs r0, 0x3C - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldrh r0, [r3, 0x36] - adds r0, 0x1 - strh r0, [r3, 0x36] -_080E009E: - ldrh r0, [r3, 0x30] - subs r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080E00C0 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080E00C8 @ =sub_80E00CC - str r0, [r3, 0x1C] -_080E00C0: - pop {r0} - bx r0 - .align 2, 0 -_080E00C4: .4byte gSprites -_080E00C8: .4byte sub_80E00CC - thumb_func_end sub_80E001C - - thumb_func_start sub_80E00CC -sub_80E00CC: @ 80E00CC - push {r4-r6,lr} - adds r4, r0, 0 - ldr r5, _080E0120 @ =gSprites - movs r0, 0x3A - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r3, r0, 2 - adds r6, r5, 0 - adds r6, 0x1C - adds r0, r3, r6 - ldr r2, [r0] - ldr r0, _080E0124 @ =SpriteCallbackDummy - cmp r2, r0 - bne _080E0118 - movs r1, 0x3C - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldr r0, [r1] - cmp r0, r2 - bne _080E0118 - adds r0, r3, r5 - bl DestroySprite - movs r0, 0x3C - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - bl DestroySprite - adds r0, r4, 0 - bl DestroyAnimSprite -_080E0118: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E0120: .4byte gSprites -_080E0124: .4byte SpriteCallbackDummy - thumb_func_end sub_80E00CC - - thumb_func_start sub_80E0128 -sub_80E0128: @ 80E0128 - push {lr} - adds r3, r0, 0 - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _080E0174 - ldrh r2, [r3, 0x32] - ldrh r1, [r3, 0x34] - adds r2, r1 - lsls r1, r2, 16 - asrs r1, 24 - ldrh r0, [r3, 0x26] - subs r0, r1 - strh r0, [r3, 0x26] - movs r0, 0xFF - ands r2, r0 - strh r2, [r3, 0x34] - ldrh r0, [r3, 0x30] - subs r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080E0174 - mov r1, r12 - ldrb r0, [r1] - movs r1, 0x4 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - ldr r0, _080E0178 @ =SpriteCallbackDummy - str r0, [r3, 0x1C] -_080E0174: - pop {r0} - bx r0 - .align 2, 0 -_080E0178: .4byte SpriteCallbackDummy - thumb_func_end sub_80E0128 - - thumb_func_start sub_80E017C -sub_80E017C: @ 80E017C - push {r4-r6,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080E01A4 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r4, r1, 0 - cmp r0, 0x5 - bls _080E019A - b _080E0476 -_080E019A: - lsls r0, 2 - ldr r1, _080E01A8 @ =_080E01AC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E01A4: .4byte gTasks -_080E01A8: .4byte _080E01AC - .align 2, 0 -_080E01AC: - .4byte _080E01C4 - .4byte _080E0304 - .4byte _080E038C - .4byte _080E03C2 - .4byte _080E03F0 - .4byte _080E042A -_080E01C4: - ldr r1, _080E0248 @ =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - ldr r1, _080E024C @ =0x00000d03 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl SetAnimBgAttribute - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080E01FC - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0x1 - bl SetAnimBgAttribute -_080E01FC: - mov r0, sp - bl sub_80752A0 - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080E0250 @ =gFile_graphics_battle_anims_masks_morning_sun_tilemap - bl AnimLoadCompressedBgTilemap - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080E0254 @ =gFile_graphics_battle_anims_masks_morning_sun_sheet - mov r2, sp - ldrh r2, [r2, 0xA] - bl AnimLoadCompressedBgGfx - ldr r0, _080E0258 @ =gFile_graphics_battle_anims_masks_morning_sun_palette - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080E0264 - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80730C0 - ldr r1, _080E025C @ =gBattle_BG1_X - ldr r3, _080E0260 @ =0x0000ffc8 - adds r0, r3, 0 - b _080E02CE - .align 2, 0 -_080E0248: .4byte 0x00003f42 -_080E024C: .4byte 0x00000d03 -_080E0250: .4byte gFile_graphics_battle_anims_masks_morning_sun_tilemap -_080E0254: .4byte gFile_graphics_battle_anims_masks_morning_sun_sheet -_080E0258: .4byte gFile_graphics_battle_anims_masks_morning_sun_palette -_080E025C: .4byte gBattle_BG1_X -_080E0260: .4byte 0x0000ffc8 -_080E0264: - ldr r0, _080E02A4 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerPosition - lsls r0, 24 - lsrs r4, r0, 24 - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E02B8 - ldr r1, _080E02A8 @ =gBattle_BG1_X - cmp r4, 0x1 - bne _080E0288 - ldr r2, _080E02AC @ =0x0000ff65 - adds r0, r2, 0 - strh r0, [r1] -_080E0288: - cmp r4, 0x3 - bne _080E0292 - ldr r3, _080E02B0 @ =0x0000ff8d - adds r0, r3, 0 - strh r0, [r1] -_080E0292: - cmp r4, 0 - bne _080E029A - movs r0, 0xE - strh r0, [r1] -_080E029A: - cmp r4, 0x2 - bne _080E02D0 - ldr r1, _080E02A8 @ =gBattle_BG1_X - ldr r2, _080E02B4 @ =0x0000ffec - b _080E02CC - .align 2, 0 -_080E02A4: .4byte gBattleAnimTarget -_080E02A8: .4byte gBattle_BG1_X -_080E02AC: .4byte 0x0000ff65 -_080E02B0: .4byte 0x0000ff8d -_080E02B4: .4byte 0x0000ffec -_080E02B8: - cmp r4, 0x1 - bne _080E02C4 - ldr r1, _080E02F0 @ =gBattle_BG1_X - ldr r3, _080E02F4 @ =0x0000ff79 - adds r0, r3, 0 - strh r0, [r1] -_080E02C4: - cmp r4, 0 - bne _080E02D0 - ldr r1, _080E02F0 @ =gBattle_BG1_X - ldr r2, _080E02F8 @ =0x0000fff6 -_080E02CC: - adds r0, r2, 0 -_080E02CE: - strh r0, [r1] -_080E02D0: - ldr r1, _080E02FC @ =gBattle_BG1_Y - movs r0, 0 - strh r0, [r1] - ldr r0, _080E0300 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _080E02F0 @ =gBattle_BG1_X - ldrh r0, [r0] - strh r0, [r1, 0x1C] - ldr r0, _080E02FC @ =gBattle_BG1_Y - ldrh r0, [r0] - strh r0, [r1, 0x1E] - b _080E0384 - .align 2, 0 -_080E02F0: .4byte gBattle_BG1_X -_080E02F4: .4byte 0x0000ff79 -_080E02F8: .4byte 0x0000fff6 -_080E02FC: .4byte gBattle_BG1_Y -_080E0300: .4byte gTasks -_080E0304: - ldr r1, _080E0338 @ =gTasks - lsls r4, r6, 2 - adds r0, r4, r6 - lsls r0, 3 - adds r5, r0, r1 - movs r0, 0 - strh r0, [r5, 0xE] - ldr r0, _080E033C @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E0348 - ldr r2, _080E0340 @ =gBattle_BG1_X - ldr r1, _080E0344 @ =gUnknown_83FF284 - movs r3, 0xC - ldrsh r0, [r5, r3] - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldrh r5, [r5, 0x1C] - adds r0, r5 - b _080E035A - .align 2, 0 -_080E0338: .4byte gTasks -_080E033C: .4byte gBattleAnimTarget -_080E0340: .4byte gBattle_BG1_X -_080E0344: .4byte gUnknown_83FF284 -_080E0348: - ldr r2, _080E0378 @ =gBattle_BG1_X - ldr r1, _080E037C @ =gUnknown_83FF284 - movs r3, 0xC - ldrsh r0, [r5, r3] - adds r0, r1 - movs r1, 0 - ldrsb r1, [r0, r1] - ldrh r0, [r5, 0x1C] - subs r0, r1 -_080E035A: - strh r0, [r2] - ldr r0, _080E0380 @ =gTasks - adds r1, r4, r6 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0xC] - adds r0, 0x1 - strh r0, [r1, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _080E0384 - strh r0, [r1, 0x8] - b _080E0476 - .align 2, 0 -_080E0378: .4byte gBattle_BG1_X -_080E037C: .4byte gUnknown_83FF284 -_080E0380: .4byte gTasks -_080E0384: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _080E0476 -_080E038C: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r4 - ldrh r0, [r4, 0xA] - subs r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bgt _080E03A6 - movs r0, 0x5 - strh r0, [r4, 0xA] -_080E03A6: - ldrh r1, [r4, 0xA] - lsls r1, 8 - movs r0, 0x3 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0x5 - bne _080E0476 - b _080E03E2 -_080E03C2: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r4 - ldrh r1, [r4, 0xE] - adds r1, 0x1 - strh r1, [r4, 0xE] - lsls r1, 16 - asrs r1, 16 - ldr r2, _080E03EC @ =gUnknown_83FF288 - movs r3, 0xC - ldrsh r0, [r4, r3] - adds r0, r2 - ldrb r0, [r0] - cmp r1, r0 - ble _080E0476 -_080E03E2: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E0476 - .align 2, 0 -_080E03EC: .4byte gUnknown_83FF288 -_080E03F0: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r4 - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xD - ble _080E040A - movs r0, 0xD - strh r0, [r4, 0xA] -_080E040A: - ldrh r1, [r4, 0xA] - lsls r1, 8 - movs r0, 0x3 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0xD - bne _080E0476 - movs r0, 0x1 - strh r0, [r4, 0x8] - b _080E0476 -_080E042A: - mov r0, sp - bl sub_80752A0 - mov r0, sp - ldrb r0, [r0, 0x9] - bl sub_8075358 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080E044C - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - bl SetAnimBgAttribute -_080E044C: - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - ldr r0, _080E0480 @ =gBattle_BG1_X - movs r1, 0 - strh r1, [r0] - ldr r0, _080E0484 @ =gBattle_BG1_Y - strh r1, [r0] - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080E0476: - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E0480: .4byte gBattle_BG1_X -_080E0484: .4byte gBattle_BG1_Y - thumb_func_end sub_80E017C - - thumb_func_start sub_80E0488 -sub_80E0488: @ 80E0488 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _080E04C0 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080E04C8 - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080E04C4 @ =gUnknown_83FF290 - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E04DA - .align 2, 0 -_080E04C0: .4byte gTasks -_080E04C4: .4byte gUnknown_83FF290 -_080E04C8: - adds r0, r4, 0 - bl RunAffineAnimFromTaskData - lsls r0, 24 - cmp r0, 0 - bne _080E04DA - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080E04DA: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80E0488 - - thumb_func_start sub_80E04E0 -sub_80E04E0: @ 80E04E0 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - movs r2, 0x2E - ldrsh r1, [r4, r2] - cmp r1, 0 - bne _080E04FE - adds r0, r4, 0 - movs r1, 0 - bl InitSpritePosToAnimAttacker - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080E0552 -_080E04FE: - adds r0, 0x1 - strh r0, [r4, 0x2E] - cmp r1, 0x14 - ble _080E0552 - ldrh r0, [r4, 0x30] - adds r0, 0xA0 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x32] - adds r0, 0x80 - strh r0, [r4, 0x32] - ldr r0, _080E052C @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080E0530 - ldrh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 24 - negs r0, r0 - b _080E0536 - .align 2, 0 -_080E052C: .4byte gBattleAnimAttacker -_080E0530: - ldrh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 24 -_080E0536: - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 24 - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x40 - ble _080E0552 - adds r0, r4, 0 - bl DestroyAnimSprite -_080E0552: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80E04E0 - - thumb_func_start sub_80E0558 -sub_80E0558: @ 80E0558 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080E057C @ =gTasks - adds r4, r0, r1 - ldr r5, _080E0580 @ =gBattleAnimArgs - movs r1, 0x2 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080E0584 - adds r0, r2, 0 - bl DestroyAnimVisualTask - b _080E0618 - .align 2, 0 -_080E057C: .4byte gTasks -_080E0580: .4byte gBattleAnimArgs -_080E0584: - movs r1, 0x4 - ldrsh r0, [r5, r1] - cmp r0, 0 - bge _080E0590 - movs r0, 0 - strh r0, [r5, 0x4] -_080E0590: - movs r1, 0x4 - ldrsh r0, [r5, r1] - cmp r0, 0x2 - ble _080E059C - movs r0, 0x2 - strh r0, [r5, 0x4] -_080E059C: - movs r0, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] - strh r0, [r4, 0xC] - movs r0, 0x4 - ldrsh r1, [r5, r0] - lsls r1, 1 - movs r0, 0x8 - subs r0, r1 - strh r0, [r4, 0xE] - movs r1, 0x4 - ldrsh r0, [r5, r1] - lsls r0, 7 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - strh r0, [r4, 0x10] - ldrh r0, [r5, 0x4] - adds r0, 0x2 - strh r0, [r4, 0x12] - ldrh r0, [r5, 0x2] - subs r0, 0x1 - strh r0, [r4, 0x14] - ldrb r0, [r5] - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080E05E8 - ldr r0, _080E05E4 @ =gBattleAnimAttacker - b _080E05EA - .align 2, 0 -_080E05E4: .4byte gBattleAnimAttacker -_080E05E8: - ldr r0, _080E0620 @ =gBattleAnimTarget -_080E05EA: - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E0608 - movs r1, 0x10 - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4, 0x10] - movs r1, 0x12 - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4, 0x12] -_080E0608: - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl PrepareBattlerSpriteForRotScale - ldr r0, _080E0624 @ =sub_80E0628 - str r0, [r4] -_080E0618: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E0620: .4byte gBattleAnimTarget -_080E0624: .4byte sub_80E0628 - thumb_func_end sub_80E0558 - - thumb_func_start sub_80E0628 -sub_80E0628: @ 80E0628 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080E064C @ =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r6, [r4, r0] - cmp r6, 0x1 - beq _080E06B0 - cmp r6, 0x1 - bgt _080E0650 - cmp r6, 0 - beq _080E065C - b _080E0788 - .align 2, 0 -_080E064C: .4byte gTasks -_080E0650: - cmp r6, 0x2 - beq _080E0708 - cmp r6, 0x3 - bne _080E065A - b _080E0778 -_080E065A: - b _080E0788 -_080E065C: - ldr r2, _080E06AC @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0x12] - ldrh r2, [r0, 0x24] - adds r1, r2 - strh r1, [r0, 0x24] - ldrh r0, [r4, 0xC] - ldrh r1, [r4, 0x10] - subs r0, r1 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r4, 0xC] - adds r1, r2, 0 - bl SetSpriteRotScale - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl SetBattlerSpriteYOffsetFromRotation - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - movs r2, 0xE - ldrsh r1, [r4, r2] - cmp r0, r1 - blt _080E0788 - strh r6, [r4, 0xA] - b _080E0770 - .align 2, 0 -_080E06AC: .4byte gSprites -_080E06B0: - ldr r2, _080E0704 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x24] - ldrh r2, [r4, 0x12] - subs r1, r2 - strh r1, [r0, 0x24] - ldrh r0, [r4, 0x10] - ldrh r1, [r4, 0xC] - adds r0, r1 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r4, 0xC] - adds r1, r2, 0 - bl SetSpriteRotScale - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl SetBattlerSpriteYOffsetFromRotation - ldrh r1, [r4, 0xA] - adds r1, 0x1 - strh r1, [r4, 0xA] - lsls r1, 16 - asrs r1, 16 - movs r2, 0xE - ldrsh r0, [r4, r2] - lsls r0, 1 - cmp r1, r0 - blt _080E0788 - movs r0, 0 - strh r0, [r4, 0xA] - b _080E0770 - .align 2, 0 -_080E0704: .4byte gSprites -_080E0708: - ldr r2, _080E076C @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0x12] - ldrh r2, [r0, 0x24] - adds r1, r2 - movs r5, 0 - strh r1, [r0, 0x24] - ldrh r0, [r4, 0xC] - ldrh r1, [r4, 0x10] - subs r0, r1 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r4, 0xC] - adds r1, r2, 0 - bl SetSpriteRotScale - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl SetBattlerSpriteYOffsetFromRotation - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - movs r2, 0xE - ldrsh r1, [r4, r2] - cmp r0, r1 - blt _080E0788 - ldrh r1, [r4, 0x14] - movs r2, 0x14 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080E0770 - subs r0, r1, 0x1 - strh r0, [r4, 0x14] - strh r5, [r4, 0xA] - strh r5, [r4, 0x8] - b _080E0788 - .align 2, 0 -_080E076C: .4byte gSprites -_080E0770: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E0788 -_080E0778: - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl ResetSpriteRotScale - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080E0788: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80E0628 - - thumb_func_start sub_80E0790 -sub_80E0790: @ 80E0790 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080E07AC @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080E07B4 - strh r0, [r4, 0x20] - ldr r1, _080E07B0 @ =gBattleAnimArgs - ldrh r0, [r1] - b _080E07BE - .align 2, 0 -_080E07AC: .4byte gBattleAnimAttacker -_080E07B0: .4byte gBattleAnimArgs -_080E07B4: - movs r0, 0xF0 - strh r0, [r4, 0x20] - ldr r1, _080E07D8 @ =gBattleAnimArgs - ldrh r0, [r1] - subs r0, 0x1E -_080E07BE: - strh r0, [r4, 0x22] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x32] - ldrb r1, [r1, 0x2] - adds r0, r4, 0 - bl StartSpriteAnim - ldr r0, _080E07DC @ =sub_80E07E0 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E07D8: .4byte gBattleAnimArgs -_080E07DC: .4byte sub_80E07E0 - thumb_func_end sub_80E0790 - - thumb_func_start sub_80E07E0 -sub_80E07E0: @ 80E07E0 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x3 - strh r0, [r4, 0x2E] - ldr r0, _080E0820 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080E0824 - ldrh r1, [r4, 0x20] - adds r1, 0x5 - strh r1, [r4, 0x20] - ldrh r0, [r4, 0x22] - subs r0, 0x1 - strh r0, [r4, 0x22] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0xF0 - ble _080E0812 - adds r0, r4, 0 - bl DestroyAnimSprite -_080E0812: - ldrh r1, [r4, 0x2E] - movs r0, 0xFF - ands r0, r1 - movs r1, 0x10 - bl Sin - b _080E0848 - .align 2, 0 -_080E0820: .4byte gBattleAnimAttacker -_080E0824: - ldrh r1, [r4, 0x20] - subs r1, 0x5 - strh r1, [r4, 0x20] - ldrh r0, [r4, 0x22] - adds r0, 0x1 - strh r0, [r4, 0x22] - lsls r1, 16 - cmp r1, 0 - bge _080E083C - adds r0, r4, 0 - bl DestroyAnimSprite -_080E083C: - ldrh r1, [r4, 0x2E] - movs r0, 0xFF - ands r0, r1 - movs r1, 0x10 - bl Cos -_080E0848: - strh r0, [r4, 0x26] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80E07E0 - - thumb_func_start sub_80E0850 -sub_80E0850: @ 80E0850 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080E0898 @ =gTasks - adds r4, r0 - movs r0, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - movs r0, 0x20 - strh r0, [r4, 0x20] - movs r0, 0x40 - strh r0, [r4, 0x22] - movs r0, 0x80 - lsls r0, 4 - strh r0, [r4, 0x24] - ldr r0, _080E089C @ =gBattleAnimArgs - ldrb r0, [r0] - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - movs r1, 0 - bl PrepareBattlerSpriteForRotScale - ldr r0, _080E08A0 @ =sub_80E08A4 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E0898: .4byte gTasks -_080E089C: .4byte gBattleAnimArgs -_080E08A0: .4byte sub_80E08A4 - thumb_func_end sub_80E0850 - - thumb_func_start sub_80E08A4 -sub_80E08A4: @ 80E08A4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080E08D0 @ =gTasks - adds r7, r0, r1 - movs r1, 0x8 - ldrsh r0, [r7, r1] - mov r8, r0 - cmp r0, 0x1 - beq _080E0940 - cmp r0, 0x1 - bgt _080E08D4 - cmp r0, 0 - beq _080E08DC - b _080E09BA - .align 2, 0 -_080E08D0: .4byte gTasks -_080E08D4: - mov r2, r8 - cmp r2, 0x2 - beq _080E09A8 - b _080E09BA -_080E08DC: - movs r3, 0x80 - lsls r3, 2 - adds r0, r3, 0 - ldrh r1, [r7, 0xC] - adds r2, r0, r1 - strh r2, [r7, 0xC] - lsls r0, r2, 16 - asrs r0, 16 - ldrh r3, [r7, 0x24] - mov r8, r3 - movs r3, 0x24 - ldrsh r1, [r7, r3] - cmp r0, r1 - blt _080E09BA - mov r0, r8 - subs r5, r0, r2 - lsls r5, 16 - asrs r5, 16 - adds r6, r1, 0 - lsls r6, 1 - adds r0, r5, 0 - adds r1, r6, 0 - bl __divsi3 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - adds r1, r6, 0 - bl __modsi3 - lsls r0, 16 - lsrs r0, 16 - lsls r4, 16 - asrs r4, 16 - movs r1, 0x1 - ands r4, r1 - cmp r4, 0 - bne _080E0934 - lsls r0, 16 - asrs r0, 16 - mov r2, r8 - subs r0, r2, r0 - b _080E0992 -_080E0934: - lsls r0, 16 - asrs r0, 16 - mov r3, r8 - subs r0, r3 - strh r0, [r7, 0xC] - b _080E09BA -_080E0940: - ldr r1, _080E0998 @ =0xfffffe00 - adds r0, r1, 0 - ldrh r2, [r7, 0xC] - adds r1, r0, r2 - strh r1, [r7, 0xC] - movs r3, 0xC - ldrsh r0, [r7, r3] - movs r2, 0x24 - ldrsh r6, [r7, r2] - cmn r0, r6 - bgt _080E09BA - ldrh r3, [r7, 0x24] - mov r9, r3 - mov r0, r9 - subs r4, r0, r1 - lsls r4, 16 - asrs r4, 16 - lsls r6, 1 - adds r0, r4, 0 - adds r1, r6, 0 - bl __divsi3 - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - adds r1, r6, 0 - bl __modsi3 - lsls r0, 16 - lsrs r2, r0, 16 - mov r1, r8 - ands r1, r5 - lsls r0, r1, 16 - asrs r1, r0, 16 - cmp r1, 0 - bne _080E099C - lsls r0, r2, 16 - asrs r0, 16 - mov r2, r9 - subs r0, r2 -_080E0992: - strh r0, [r7, 0xC] - strh r1, [r7, 0x8] - b _080E09BA - .align 2, 0 -_080E0998: .4byte 0xfffffe00 -_080E099C: - lsls r0, r2, 16 - asrs r0, 16 - mov r3, r9 - subs r0, r3, r0 - strh r0, [r7, 0xC] - b _080E09BA -_080E09A8: - ldrh r0, [r7, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl ResetSpriteRotScale - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _080E0A30 -_080E09BA: - ldrh r0, [r7, 0x26] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r7, 0xC] - adds r1, r2, 0 - bl SetSpriteRotScale - ldrh r0, [r7, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl SetBattlerSpriteYOffsetFromRotation - ldr r2, _080E0A28 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - movs r2, 0xC - ldrsh r0, [r7, r2] - cmp r0, 0 - bge _080E09EE - adds r0, 0x3F -_080E09EE: - asrs r0, 6 - negs r0, r0 - strh r0, [r1, 0x24] - ldrh r0, [r7, 0xA] - adds r0, 0x1 - strh r0, [r7, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _080E0A30 - ldrh r1, [r7, 0x20] - movs r3, 0x20 - ldrsh r0, [r7, r3] - cmp r0, 0 - beq _080E0A2C - subs r0, r1, 0x1 - strh r0, [r7, 0x20] - ldrh r0, [r7, 0x24] - ldrh r1, [r7, 0x22] - subs r0, r1 - strh r0, [r7, 0x24] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - bgt _080E0A30 - movs r0, 0x10 - strh r0, [r7, 0x24] - b _080E0A30 - .align 2, 0 -_080E0A28: .4byte gSprites -_080E0A2C: - movs r0, 0x2 - strh r0, [r7, 0x8] -_080E0A30: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80E08A4 - - thumb_func_start sub_80E0A3C -sub_80E0A3C: @ 80E0A3C - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080E0A9C - ldr r6, _080E0A94 @ =gBattleAnimArgs - movs r2, 0x4 - ldrsh r0, [r6, r2] - cmp r0, 0 - bne _080E0A70 - ldr r4, _080E0A98 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] -_080E0A70: - ldrh r0, [r6] - ldrh r1, [r5, 0x20] - adds r0, r1 - strh r0, [r5, 0x20] - ldrh r1, [r6, 0x2] - ldrh r2, [r5, 0x22] - adds r0, r1, r2 - strh r0, [r5, 0x22] - movs r0, 0x80 - strh r0, [r5, 0x30] - movs r0, 0xC0 - lsls r0, 2 - strh r0, [r5, 0x32] - strh r1, [r5, 0x34] - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - b _080E0AFA - .align 2, 0 -_080E0A94: .4byte gBattleAnimArgs -_080E0A98: .4byte gBattleAnimAttacker -_080E0A9C: - ldrh r1, [r5, 0x30] - lsls r0, r1, 16 - asrs r0, 24 - strh r0, [r5, 0x24] - ldrh r0, [r5, 0x32] - lsls r0, 16 - asrs r0, 24 - ldrh r2, [r5, 0x26] - adds r0, r2 - strh r0, [r5, 0x26] - movs r2, 0x36 - ldrsh r0, [r5, r2] - adds r4, r1, 0 - cmp r0, 0 - bne _080E0ADA - movs r0, 0x26 - ldrsh r1, [r5, r0] - movs r2, 0x34 - ldrsh r0, [r5, r2] - cmn r1, r0 - ble _080E0ADA - movs r0, 0x1 - strh r0, [r5, 0x36] - movs r1, 0x32 - ldrsh r0, [r5, r1] - negs r0, r0 - movs r1, 0x3 - bl __divsi3 - lsls r0, 1 - strh r0, [r5, 0x32] -_080E0ADA: - adds r0, r4, 0 - adds r0, 0xC0 - strh r0, [r5, 0x30] - ldrh r0, [r5, 0x32] - adds r0, 0x80 - strh r0, [r5, 0x32] - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080E0AFA - adds r0, r5, 0 - bl DestroyAnimSprite -_080E0AFA: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80E0A3C - - thumb_func_start sub_80E0B00 -sub_80E0B00: @ 80E0B00 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - adds r7, r0, 0 - ldr r1, _080E0B30 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r2, r0, r1 - movs r1, 0x8 - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _080E0C0C - ldr r0, _080E0B34 @ =gBattleAnimArgs - movs r3, 0 - ldrsh r1, [r0, r3] - mov r8, r0 - cmp r1, 0 - bne _080E0B3C - ldr r0, _080E0B38 @ =gBattleAnimAttacker - b _080E0B3E - .align 2, 0 -_080E0B30: .4byte gTasks -_080E0B34: .4byte gBattleAnimArgs -_080E0B38: .4byte gBattleAnimAttacker -_080E0B3C: - ldr r0, _080E0B78 @ =gBattleAnimTarget -_080E0B3E: - ldrb r0, [r0] - strh r0, [r2, 0x1E] - mov r1, r8 - ldrb r0, [r1] - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080E0B7C @ =gTasks - lsls r4, r7, 2 - adds r0, r4, r7 - lsls r0, 3 - adds r6, r0, r1 - strh r5, [r6, 0x1C] - adds r0, r5, 0 - movs r1, 0 - bl PrepareBattlerSpriteForRotScale - mov r2, r8 - movs r3, 0x2 - ldrsh r0, [r2, r3] - cmp r0, 0x1 - beq _080E0BA0 - cmp r0, 0x1 - bgt _080E0B80 - cmp r0, 0 - beq _080E0B88 - lsls r2, r5, 4 - b _080E0BE8 - .align 2, 0 -_080E0B78: .4byte gBattleAnimTarget -_080E0B7C: .4byte gTasks -_080E0B80: - cmp r0, 0x2 - beq _080E0BAA - lsls r2, r5, 4 - b _080E0BE8 -_080E0B88: - movs r2, 0xA0 - lsls r2, 1 - adds r0, r5, 0 - movs r1, 0xE0 - movs r3, 0 - bl SetSpriteRotScale - adds r0, r5, 0 - bl SetBattlerSpriteYOffsetFromYScale - lsls r2, r5, 4 - b _080E0BE8 -_080E0BA0: - movs r2, 0x98 - lsls r2, 1 - movs r3, 0xF0 - lsls r3, 4 - b _080E0BB2 -_080E0BAA: - movs r2, 0x98 - lsls r2, 1 - movs r3, 0xF1 - lsls r3, 8 -_080E0BB2: - adds r0, r5, 0 - movs r1, 0xD0 - bl SetSpriteRotScale - adds r0, r5, 0 - bl SetBattlerSpriteYOffsetFromYScale - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080E0BD8 - ldrb r0, [r6, 0x1E] - bl GetBattlerSide - lsls r0, 24 - lsls r2, r5, 4 - cmp r0, 0 - bne _080E0BE8 -_080E0BD8: - ldr r0, _080E0C04 @ =gSprites - lsls r2, r5, 4 - adds r1, r2, r5 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0x26] - adds r0, 0x10 - strh r0, [r1, 0x26] -_080E0BE8: - ldr r1, _080E0C04 @ =gSprites - adds r0, r2, r5 - lsls r0, 2 - adds r0, r1 - movs r1, 0x2 - strh r1, [r0, 0x24] - ldr r0, _080E0C08 @ =gTasks - adds r1, r4, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _080E0C58 - .align 2, 0 -_080E0C04: .4byte gSprites -_080E0C08: .4byte gTasks -_080E0C0C: - ldrb r5, [r2, 0x1C] - ldrh r0, [r2, 0xC] - adds r0, 0x1 - movs r4, 0 - strh r0, [r2, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080E0C30 - strh r4, [r2, 0xC] - ldr r0, _080E0C64 @ =gSprites - lsls r1, r5, 4 - adds r1, r5 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0x24] - negs r0, r0 - strh r0, [r1, 0x24] -_080E0C30: - ldrh r0, [r2, 0xA] - adds r0, 0x1 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xD - bne _080E0C58 - adds r0, r5, 0 - bl ResetSpriteRotScale - ldr r1, _080E0C64 @ =gSprites - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - adds r0, r1 - strh r4, [r0, 0x24] - strh r4, [r0, 0x26] - adds r0, r7, 0 - bl DestroyAnimVisualTask -_080E0C58: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E0C64: .4byte gSprites - thumb_func_end sub_80E0B00 - - thumb_func_start sub_80E0C68 -sub_80E0C68: @ 80E0C68 - push {r4,r5,lr} - adds r4, r0, 0 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xC - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, r0 - ldr r3, _080E0CB4 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080E0CB8 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - bl Random - ldr r5, _080E0CBC @ =0x000001ff - ands r5, r0 - bl Random - movs r1, 0xFF - ands r1, r0 - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _080E0CC0 - movs r2, 0xBC - lsls r2, 3 - adds r0, r5, r2 - b _080E0CC8 - .align 2, 0 -_080E0CB4: .4byte 0x000003ff -_080E0CB8: .4byte 0xfffffc00 -_080E0CBC: .4byte 0x000001ff -_080E0CC0: - movs r3, 0xBC - lsls r3, 3 - adds r0, r3, 0 - subs r0, r5 -_080E0CC8: - strh r0, [r4, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080E0CDA - movs r2, 0x90 - lsls r2, 3 - adds r0, r1, r2 - b _080E0CE2 -_080E0CDA: - movs r3, 0x90 - lsls r3, 3 - adds r0, r3, 0 - subs r0, r1 -_080E0CE2: - strh r0, [r4, 0x30] - ldr r0, _080E0CF4 @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r4, 0x32] - lsls r0, 16 - cmp r0, 0 - bne _080E0CFC - ldr r0, _080E0CF8 @ =0x0000fff8 - b _080E0CFE - .align 2, 0 -_080E0CF4: .4byte gBattleAnimArgs -_080E0CF8: .4byte 0x0000fff8 -_080E0CFC: - movs r0, 0xF8 -_080E0CFE: - strh r0, [r4, 0x20] - movs r0, 0x68 - strh r0, [r4, 0x22] - ldr r0, _080E0D10 @ =sub_80E0D14 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E0D10: .4byte sub_80E0D14 - thumb_func_end sub_80E0C68 - - thumb_func_start sub_80E0D14 -sub_80E0D14: @ 80E0D14 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080E0D2C - ldrh r3, [r4, 0x2E] - lsls r0, r3, 16 - asrs r0, 24 - ldrh r1, [r4, 0x24] - adds r0, r1 - b _080E0D36 -_080E0D2C: - ldrh r3, [r4, 0x2E] - lsls r1, r3, 16 - asrs r1, 24 - ldrh r0, [r4, 0x24] - subs r0, r1 -_080E0D36: - strh r0, [r4, 0x24] - ldrh r2, [r4, 0x30] - lsls r1, r2, 16 - asrs r1, 24 - ldrh r0, [r4, 0x26] - subs r0, r1 - strh r0, [r4, 0x26] - adds r0, r3, 0 - subs r0, 0x16 - strh r0, [r4, 0x2E] - adds r1, r2, 0 - subs r1, 0x30 - strh r1, [r4, 0x30] - lsls r0, 16 - cmp r0, 0 - bge _080E0D5A - movs r0, 0 - strh r0, [r4, 0x2E] -_080E0D5A: - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1F - bne _080E0D6E - adds r0, r4, 0 - bl DestroyAnimSprite -_080E0D6E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80E0D14 - - thumb_func_start sub_80E0D74 -sub_80E0D74: @ 80E0D74 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r1, _080E0DD8 @ =0x00001f3f - movs r0, 0x4A - bl SetGpuReg - movs r1, 0x80 - lsls r1, 8 - movs r0, 0 - bl SetGpuRegBits - ldr r0, _080E0DDC @ =gBattle_WIN0H - movs r1, 0 - strh r1, [r0] - ldr r4, _080E0DE0 @ =gBattle_WIN0V - strh r1, [r4] - movs r0, 0x40 - movs r1, 0 - bl SetGpuReg - ldrh r1, [r4] - movs r0, 0x44 - bl SetGpuReg - ldr r0, _080E0DE4 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r5, 0x2E] - adds r0, r5, 0 - movs r1, 0 - bl InitSpritePosToAnimTarget - ldrb r1, [r5, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x8 - orrs r0, r1 - strb r0, [r5, 0x1] - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080E0DE8 @ =sub_80E0DEC - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E0DD8: .4byte 0x00001f3f -_080E0DDC: .4byte gBattle_WIN0H -_080E0DE0: .4byte gBattle_WIN0V -_080E0DE4: .4byte gBattleAnimArgs -_080E0DE8: .4byte sub_80E0DEC - thumb_func_end sub_80E0D74 - - thumb_func_start sub_80E0DEC -sub_80E0DEC: @ 80E0DEC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080E0E2A - cmp r0, 0x1 - bgt _080E0E02 - cmp r0, 0 - beq _080E0E0C - b _080E0E8A -_080E0E02: - cmp r0, 0x2 - beq _080E0E40 - cmp r0, 0x3 - beq _080E0E62 - b _080E0E8A -_080E0E0C: - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080E0E8A - b _080E0E5A -_080E0E2A: - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _080E0E8A - adds r0, r4, 0 - movs r1, 0x1 - bl ChangeSpriteAffineAnim - b _080E0E5A -_080E0E40: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080E0E8A - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_080E0E5A: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - b _080E0E8A -_080E0E62: - ldr r1, _080E0E90 @ =0x00003f3f - movs r0, 0x4A - bl SetGpuReg - movs r0, 0 - bl GetGpuReg - adds r1, r0, 0 - movs r2, 0x80 - lsls r2, 8 - adds r0, r2, 0 - eors r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0 - bl SetGpuReg - adds r0, r4, 0 - bl DestroyAnimSprite -_080E0E8A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E0E90: .4byte 0x00003f3f - thumb_func_end sub_80E0DEC - - thumb_func_start sub_80E0E94 -sub_80E0E94: @ 80E0E94 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080E0ED0 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - ldr r1, _080E0ED4 @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x30] - ldr r1, _080E0ED8 @ =sub_80E0EDC - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E0ED0: .4byte gBattleAnimAttacker -_080E0ED4: .4byte gBattleAnimArgs -_080E0ED8: .4byte sub_80E0EDC - thumb_func_end sub_80E0E94 - - thumb_func_start sub_80E0EDC -sub_80E0EDC: @ 80E0EDC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x30 - ldrsh r0, [r4, r1] - ldrh r1, [r4, 0x32] - lsls r1, 16 - asrs r1, 24 - bl Sin - strh r0, [r4, 0x24] - movs r2, 0x30 - ldrsh r0, [r4, r2] - ldrh r1, [r4, 0x34] - lsls r1, 16 - asrs r1, 24 - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x9 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - lsls r1, r0, 16 - cmp r0, 0x3F - bls _080E0F16 - asrs r0, r1, 16 - cmp r0, 0xC3 - ble _080E0F28 -_080E0F16: - ldr r0, _080E0F24 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSpriteSubpriority - subs r0, 0x1 - b _080E0F32 - .align 2, 0 -_080E0F24: .4byte gBattleAnimAttacker -_080E0F28: - ldr r0, _080E0F74 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSpriteSubpriority - adds r0, 0x1 -_080E0F32: - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - movs r3, 0x38 - ldrsh r2, [r4, r3] - cmp r2, 0 - bne _080E0F78 - movs r1, 0x80 - lsls r1, 3 - adds r0, r1, 0 - ldrh r3, [r4, 0x32] - adds r0, r3 - strh r0, [r4, 0x32] - movs r1, 0x80 - lsls r1, 1 - adds r0, r1, 0 - ldrh r3, [r4, 0x34] - adds r0, r3 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x2E - ldrsh r1, [r4, r3] - cmp r0, r1 - bne _080E0FA8 - strh r2, [r4, 0x36] - movs r0, 0x1 - strh r0, [r4, 0x38] - b _080E0FA8 - .align 2, 0 -_080E0F74: .4byte gBattleAnimAttacker -_080E0F78: - cmp r2, 0x1 - bne _080E0FA8 - ldr r1, _080E0FB0 @ =0xfffffc00 - adds r0, r1, 0 - ldrh r2, [r4, 0x32] - adds r0, r2 - strh r0, [r4, 0x32] - ldr r3, _080E0FB4 @ =0xffffff00 - adds r0, r3, 0 - ldrh r1, [r4, 0x34] - adds r0, r1 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x2E - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _080E0FA8 - adds r0, r4, 0 - bl DestroyAnimSprite -_080E0FA8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E0FB0: .4byte 0xfffffc00 -_080E0FB4: .4byte 0xffffff00 - thumb_func_end sub_80E0EDC - - thumb_func_start sub_80E0FB8 -sub_80E0FB8: @ 80E0FB8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x18] - movs r0, 0 - bl GetAnimBattlerSpriteId - ldr r0, _080E1040 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080E107C - movs r0, 0 - str r0, [sp, 0x1C] - ldr r6, _080E1044 @ =gBattlerPartyIndexes - ldr r4, _080E1048 @ =gBattleAnimTarget - ldrb r0, [r4] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - movs r5, 0x64 - muls r0, r5 - ldr r7, _080E104C @ =gPlayerParty - adds r0, r7 - movs r1, 0 - bl GetMonData - mov r10, r0 - ldrb r0, [r4] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - muls r0, r5 - adds r0, r7 - movs r1, 0x1 - bl GetMonData - mov r9, r0 - ldr r0, _080E1050 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldrb r2, [r4] - ldr r1, [r0] - lsls r0, r2, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _080E1074 - adds r0, r2, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080E1054 - ldrb r0, [r4] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - muls r0, r5 - adds r0, r7 - b _080E1062 - .align 2, 0 -_080E1040: .4byte gBattleAnimAttacker -_080E1044: .4byte gBattlerPartyIndexes -_080E1048: .4byte gBattleAnimTarget -_080E104C: .4byte gPlayerParty -_080E1050: .4byte gBattleSpritesDataPtr -_080E1054: - ldrb r0, [r4] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - muls r0, r5 - ldr r1, _080E1070 @ =gEnemyParty - adds r0, r1 -_080E1062: - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - b _080E1076 - .align 2, 0 -_080E1070: .4byte gEnemyParty -_080E1074: - ldrh r6, [r1, 0x2] -_080E1076: - movs r1, 0x14 - mov r8, r1 - b _080E1112 -_080E107C: - movs r2, 0x1 - str r2, [sp, 0x1C] - ldr r6, _080E10E0 @ =gBattlerPartyIndexes - ldr r4, _080E10E4 @ =gBattleAnimTarget - ldrb r0, [r4] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - movs r5, 0x64 - muls r0, r5 - ldr r7, _080E10E8 @ =gEnemyParty - adds r0, r7 - movs r1, 0 - bl GetMonData - mov r10, r0 - ldrb r0, [r4] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - muls r0, r5 - adds r0, r7 - movs r1, 0x1 - bl GetMonData - mov r9, r0 - ldr r0, _080E10EC @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldrb r2, [r4] - ldr r1, [r0] - lsls r0, r2, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _080E110C - adds r0, r2, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080E10F4 - ldrb r0, [r4] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - muls r0, r5 - ldr r1, _080E10F0 @ =gPlayerParty - adds r0, r1 - b _080E1100 - .align 2, 0 -_080E10E0: .4byte gBattlerPartyIndexes -_080E10E4: .4byte gBattleAnimTarget -_080E10E8: .4byte gEnemyParty -_080E10EC: .4byte gBattleSpritesDataPtr -_080E10F0: .4byte gPlayerParty -_080E10F4: - ldrb r0, [r4] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - muls r0, r5 - adds r0, r7 -_080E1100: - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - b _080E110E -_080E110C: - ldrh r6, [r1, 0x2] -_080E110E: - ldr r3, _080E11FC @ =0x0000ffec - mov r8, r3 -_080E1112: - ldr r0, _080E1200 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSpriteBGPriority - lsls r0, 24 - lsrs r7, r0, 24 - ldr r5, _080E1200 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldrb r0, [r5] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - mov r2, r8 - lsls r1, r2, 16 - asrs r1, 16 - adds r4, r1 - lsls r4, 16 - asrs r4, 16 - lsrs r0, 24 - str r0, [sp] - movs r0, 0x5 - str r0, [sp, 0x4] - mov r3, r10 - str r3, [sp, 0x8] - mov r0, r9 - str r0, [sp, 0xC] - ldr r0, _080E1204 @ =gBattleAnimTarget - ldrb r0, [r0] - str r0, [sp, 0x10] - movs r0, 0x1 - str r0, [sp, 0x14] - adds r0, r6, 0 - ldr r1, [sp, 0x1C] - movs r2, 0 - adds r3, r4, 0 - bl sub_80768D0 - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - ldr r0, _080E1208 @ =gSprites - lsls r5, r6, 4 - adds r5, r6 - lsls r5, 2 - adds r5, r0 - movs r0, 0x3 - ands r7, r0 - lsls r7, 2 - mov r8, r7 - ldrb r0, [r5, 0x5] - movs r4, 0xD - negs r4, r4 - adds r1, r4, 0 - ands r1, r0 - mov r2, r8 - orrs r1, r2 - strb r1, [r5, 0x5] - ldrb r2, [r5, 0x1] - adds r0, r4, 0 - ands r0, r2 - movs r2, 0x4 - orrs r0, r2 - strb r0, [r5, 0x1] - ldr r0, _080E120C @ =0x00007fff - lsrs r1, 4 - lsls r1, 4 - movs r3, 0x80 - lsls r3, 1 - adds r2, r3, 0 - orrs r1, r2 - movs r2, 0x20 - bl FillPalette - ldrb r0, [r5, 0x5] - ands r4, r0 - mov r0, r8 - orrs r4, r0 - strb r4, [r5, 0x5] - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - ldr r0, _080E1210 @ =gTasks - ldr r1, [sp, 0x18] - lsls r4, r1, 2 - adds r4, r1 - lsls r4, 3 - adds r4, r0 - ldrh r0, [r4, 0xA] - movs r1, 0x10 - subs r1, r0 - lsls r1, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - strh r6, [r4, 0x8] - ldr r0, _080E1214 @ =sub_80E1218 - str r0, [r4] - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E11FC: .4byte 0x0000ffec -_080E1200: .4byte gBattleAnimAttacker -_080E1204: .4byte gBattleAnimTarget -_080E1208: .4byte gSprites -_080E120C: .4byte 0x00007fff -_080E1210: .4byte gTasks -_080E1214: .4byte sub_80E1218 - thumb_func_end sub_80E0FB8 - - thumb_func_start sub_80E1218 -sub_80E1218: @ 80E1218 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080E126C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 - ldrh r0, [r4, 0x1C] - adds r1, r0, 0x1 - strh r1, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E1266 - movs r0, 0 - strh r0, [r4, 0x1C] - ldrh r1, [r4, 0xA] - adds r1, 0x1 - strh r1, [r4, 0xA] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0xA - bne _080E1266 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r4, 0x1C] - strh r0, [r4, 0x1E] - ldr r0, _080E1270 @ =sub_80E1274 - str r0, [r4] -_080E1266: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E126C: .4byte gTasks -_080E1270: .4byte sub_80E1274 - thumb_func_end sub_80E1218 - - thumb_func_start sub_80E1274 -sub_80E1274: @ 80E1274 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080E12EC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r5, r1, r2 - ldrb r2, [r5, 0x8] - ldrh r0, [r5, 0x1C] - subs r0, 0x10 - movs r4, 0 - strh r0, [r5, 0x1C] - ldrh r0, [r5, 0x1E] - adds r0, 0x80 - strh r0, [r5, 0x1E] - ldr r1, _080E12F0 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r6, r0, r1 - ldrb r2, [r6, 0x1] - lsls r1, r2, 30 - lsrs r1, 30 - movs r0, 0x2 - orrs r1, r0 - subs r0, 0x6 - ands r0, r2 - orrs r0, r1 - strb r0, [r6, 0x1] - movs r0, 0x1C - ldrsh r2, [r5, r0] - movs r0, 0x1E - ldrsh r3, [r5, r0] - str r4, [sp] - adds r0, r6, 0 - movs r1, 0x1 - bl TrySetSpriteRotScale - ldrh r0, [r5, 0x20] - adds r0, 0x1 - strh r0, [r5, 0x20] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - bne _080E12E2 - adds r0, r6, 0 - bl sub_8075AD8 - adds r0, r6, 0 - bl DestroySpriteAndFreeResources_ - ldr r0, _080E12F4 @ =DestroyAnimVisualTaskAndDisableBlend - str r0, [r5] -_080E12E2: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E12EC: .4byte gTasks -_080E12F0: .4byte gSprites -_080E12F4: .4byte DestroyAnimVisualTaskAndDisableBlend - thumb_func_end sub_80E1274 - - thumb_func_start sub_80E12F8 -sub_80E12F8: @ 80E12F8 - push {r4-r7,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080E1318 @ =gTasks - adds r4, r1, r0 - ldr r0, _080E131C @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080E1324 - ldr r0, _080E1320 @ =gBattleAnimAttacker - b _080E1326 - .align 2, 0 -_080E1318: .4byte gTasks -_080E131C: .4byte gBattleAnimArgs -_080E1320: .4byte gBattleAnimAttacker -_080E1324: - ldr r0, _080E13A4 @ =gBattleAnimTarget -_080E1326: - ldrb r5, [r0] - movs r6, 0 - strh r6, [r4, 0x8] - strh r6, [r4, 0xA] - strh r6, [r4, 0xC] - movs r0, 0x10 - strh r0, [r4, 0xE] - strh r6, [r4, 0x10] - strh r5, [r4, 0x12] - movs r0, 0x20 - strh r0, [r4, 0x14] - strh r6, [r4, 0x16] - movs r0, 0x18 - strh r0, [r4, 0x18] - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E1358 - movs r1, 0x18 - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4, 0x18] -_080E1358: - adds r0, r5, 0 - bl GetBattlerYCoordWithElevation - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x22 - strh r0, [r4, 0x22] - cmp r0, 0 - bge _080E136C - strh r6, [r4, 0x22] -_080E136C: - ldrh r0, [r4, 0x22] - adds r0, 0x42 - strh r0, [r4, 0x24] - ldr r0, _080E13A8 @ =gBattleAnimArgs - ldrb r0, [r0] - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - adds r0, r5, 0 - bl GetBattlerSpriteBGPriorityRank - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E13BC - ldr r0, _080E13AC @ =0x04000014 - str r0, [sp] - ldr r1, _080E13B0 @ =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - ldr r0, _080E13B4 @ =gBattle_BG1_X - ldrh r5, [r0] - ldr r0, _080E13B8 @ =gBattle_BG1_Y - b _080E13CE - .align 2, 0 -_080E13A4: .4byte gBattleAnimTarget -_080E13A8: .4byte gBattleAnimArgs -_080E13AC: .4byte 0x04000014 -_080E13B0: .4byte 0x00003f42 -_080E13B4: .4byte gBattle_BG1_X -_080E13B8: .4byte gBattle_BG1_Y -_080E13BC: - ldr r0, _080E1434 @ =0x04000018 - str r0, [sp] - ldr r1, _080E1438 @ =0x00003f44 - movs r0, 0x50 - bl SetGpuReg - ldr r0, _080E143C @ =gBattle_BG2_X - ldrh r5, [r0] - ldr r0, _080E1440 @ =gBattle_BG2_Y -_080E13CE: - ldrh r3, [r0] - movs r7, 0 - movs r2, 0 - ldr r6, _080E1444 @ =gScanlineEffectRegBuffers - movs r0, 0xF0 - lsls r0, 3 - adds r0, r6 - mov r12, r0 -_080E13DE: - lsls r2, 16 - asrs r2, 16 - lsls r1, r2, 1 - adds r0, r1, r6 - strh r5, [r0] - add r1, r12 - strh r5, [r1] - adds r0, r2, 0x1 - lsls r0, 1 - adds r1, r0, r6 - strh r3, [r1] - add r0, r12 - strh r3, [r0] - lsls r0, r7, 16 - movs r1, 0x80 - lsls r1, 9 - adds r0, r1 - adds r2, 0x2 - lsls r2, 16 - lsrs r2, 16 - lsrs r7, r0, 16 - asrs r0, 16 - cmp r0, 0x9F - ble _080E13DE - ldr r0, _080E1448 @ =0xa6600001 - str r0, [sp, 0x4] - mov r1, sp - movs r2, 0 - movs r0, 0x1 - strb r0, [r1, 0x8] - mov r0, sp - strb r2, [r0, 0x9] - ldr r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - bl ScanlineEffect_SetParams - ldr r0, _080E144C @ =sub_80E1450 - str r0, [r4] - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E1434: .4byte 0x04000018 -_080E1438: .4byte 0x00003f44 -_080E143C: .4byte gBattle_BG2_X -_080E1440: .4byte gBattle_BG2_Y -_080E1444: .4byte gScanlineEffectRegBuffers -_080E1448: .4byte 0xa6600001 -_080E144C: .4byte sub_80E1450 - thumb_func_end sub_80E12F8 - - thumb_func_start sub_80E1450 -sub_80E1450: @ 80E1450 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080E1484 @ =gTasks - adds r6, r0, r1 - ldrb r0, [r6, 0x12] - bl GetBattlerSpriteBGPriorityRank - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E1490 - ldr r0, _080E1488 @ =gBattle_BG1_X - ldrh r0, [r0] - str r0, [sp, 0x4] - ldr r0, _080E148C @ =gBattle_BG1_Y - b _080E1498 - .align 2, 0 -_080E1484: .4byte gTasks -_080E1488: .4byte gBattle_BG1_X -_080E148C: .4byte gBattle_BG1_Y -_080E1490: - ldr r0, _080E14B0 @ =gBattle_BG2_X - ldrh r0, [r0] - str r0, [sp, 0x4] - ldr r0, _080E14B4 @ =gBattle_BG2_Y -_080E1498: - ldrh r0, [r0] - str r0, [sp, 0x8] - movs r1, 0x8 - ldrsh r0, [r6, r1] - cmp r0, 0x1 - bne _080E14A6 - b _080E1684 -_080E14A6: - cmp r0, 0x1 - bgt _080E14B8 - cmp r0, 0 - beq _080E14C6 - b _080E16F4 - .align 2, 0 -_080E14B0: .4byte gBattle_BG2_X -_080E14B4: .4byte gBattle_BG2_Y -_080E14B8: - cmp r0, 0x2 - bne _080E14BE - b _080E16A4 -_080E14BE: - cmp r0, 0x3 - bne _080E14C4 - b _080E16EE -_080E14C4: - b _080E16F4 -_080E14C6: - movs r2, 0x24 - ldrsh r0, [r6, r2] - lsls r0, 17 - lsrs r5, r0, 16 - movs r3, 0 - str r3, [sp] - mov r9, r3 - movs r4, 0 - ldrh r0, [r6, 0xA] - adds r0, 0x2 - movs r1, 0xFF - ands r0, r1 - strh r0, [r6, 0xA] - ldrh r7, [r6, 0xA] - mov r8, r7 - movs r0, 0x14 - ldrsh r1, [r6, r0] - movs r0, 0xFC - lsls r0, 3 - bl __divsi3 - strh r0, [r6, 0x1A] - movs r1, 0x16 - ldrsh r0, [r6, r1] - lsls r0, 1 - movs r2, 0x1A - ldrsh r1, [r6, r2] - bl __divsi3 - negs r0, r0 - strh r0, [r6, 0x1C] - ldrh r0, [r6, 0x16] - strh r0, [r6, 0x1E] - lsls r0, 16 - asrs r0, 21 - lsls r0, 16 - lsrs r7, r0, 16 - strh r7, [r6, 0x20] - ldrh r2, [r6, 0x24] - lsls r3, r2, 16 - mov r12, r3 - asrs r1, r3, 16 - movs r3, 0x22 - ldrsh r0, [r6, r3] - cmp r1, r0 - ble _080E15E6 - ldr r0, _080E163C @ =gScanlineEffect - mov r10, r0 - ldr r1, [sp, 0x4] - lsls r0, r1, 16 - asrs r0, 16 - str r0, [sp, 0x10] - ldr r2, [sp, 0x8] - lsls r0, r2, 16 - asrs r0, 16 - str r0, [sp, 0xC] -_080E1536: - lsls r5, 16 - asrs r5, 16 - adds r2, r5, 0x1 - lsls r2, 1 - mov r3, r10 - ldrb r1, [r3, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - ldr r0, _080E1640 @ =gScanlineEffectRegBuffers - adds r2, r0 - lsls r4, 16 - asrs r4, 16 - mov r1, r9 - lsls r0, r1, 16 - asrs r0, 16 - subs r0, r4, r0 - ldr r3, [sp, 0xC] - adds r0, r3, r0 - strh r0, [r2] - lsls r3, r5, 1 - mov r0, r10 - ldrb r1, [r0, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r3, r0 - ldr r1, _080E1640 @ =gScanlineEffectRegBuffers - adds r3, r1 - lsls r1, r7, 16 - asrs r1, 16 - ldr r2, [sp, 0x10] - adds r1, r2, r1 - mov r7, r8 - lsls r2, r7, 16 - asrs r2, 16 - lsls r0, r2, 1 - ldr r7, _080E1644 @ =gSineTable - adds r0, r7 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 21 - adds r1, r0 - strh r1, [r3] - adds r2, 0xA - mov r8, r2 - movs r0, 0xFF - mov r1, r8 - ands r1, r0 - mov r8, r1 - ldrh r0, [r6, 0x1C] - ldrh r2, [r6, 0x1E] - adds r0, r2 - strh r0, [r6, 0x1E] - lsls r0, 16 - asrs r0, 21 - lsls r0, 16 - lsrs r7, r0, 16 - strh r7, [r6, 0x20] - adds r4, 0x1 - lsls r4, 16 - lsrs r4, 16 - subs r5, 0x2 - lsls r5, 16 - lsrs r5, 16 - ldr r3, [sp] - lsls r0, r3, 16 - asrs r0, 16 - ldrh r1, [r6, 0x14] - adds r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 - str r2, [sp] - asrs r0, 21 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - ldr r0, _080E1648 @ =0xffff0000 - add r0, r12 - lsrs r2, r0, 16 - lsls r3, r2, 16 - mov r12, r3 - asrs r1, r3, 16 - movs r3, 0x22 - ldrsh r0, [r6, r3] - cmp r1, r0 - bgt _080E1536 -_080E15E6: - lsls r1, r2, 17 - cmp r1, 0 - blt _080E1612 - ldr r4, _080E1640 @ =gScanlineEffectRegBuffers - ldr r7, [sp, 0x4] - lsls r0, r7, 16 - asrs r0, 16 - adds r3, r0, 0 - adds r3, 0xF0 - movs r0, 0xF0 - lsls r0, 3 - adds r5, r4, r0 -_080E15FE: - asrs r2, r1, 16 - lsls r1, r2, 1 - adds r0, r1, r4 - strh r3, [r0] - adds r1, r5 - strh r3, [r1] - subs r2, 0x2 - lsls r1, r2, 16 - cmp r1, 0 - bge _080E15FE -_080E1612: - ldrh r0, [r6, 0x14] - adds r0, 0x1 - strh r0, [r6, 0x14] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3F - ble _080E167A - movs r0, 0x40 - strh r0, [r6, 0x14] - ldrh r0, [r6, 0xC] - adds r0, 0x1 - strh r0, [r6, 0xC] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080E164C - ldrh r0, [r6, 0xE] - subs r0, 0x1 - strh r0, [r6, 0xE] - b _080E1652 - .align 2, 0 -_080E163C: .4byte gScanlineEffect -_080E1640: .4byte gScanlineEffectRegBuffers -_080E1644: .4byte gSineTable -_080E1648: .4byte 0xffff0000 -_080E164C: - ldrh r0, [r6, 0x10] - adds r0, 0x1 - strh r0, [r6, 0x10] -_080E1652: - ldrh r1, [r6, 0x10] - lsls r1, 8 - ldrh r0, [r6, 0xE] - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r2, 0xE - ldrsh r1, [r6, r2] - cmp r1, 0 - bne _080E16F4 - movs r3, 0x10 - ldrsh r0, [r6, r3] - cmp r0, 0x10 - bne _080E16F4 - strh r1, [r6, 0xC] - strh r1, [r6, 0xE] - b _080E16E6 -_080E167A: - ldrh r0, [r6, 0x18] - ldrh r7, [r6, 0x16] - adds r0, r7 - strh r0, [r6, 0x16] - b _080E16F4 -_080E1684: - ldrh r0, [r6, 0xC] - adds r0, 0x1 - strh r0, [r6, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xC - ble _080E16F4 - ldr r1, _080E16A0 @ =gScanlineEffect - movs r0, 0x3 - strb r0, [r1, 0x15] - movs r0, 0 - strh r0, [r6, 0xC] - b _080E16E6 - .align 2, 0 -_080E16A0: .4byte gScanlineEffect -_080E16A4: - ldrh r0, [r6, 0xC] - adds r0, 0x1 - strh r0, [r6, 0xC] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080E16BA - ldrh r0, [r6, 0xE] - adds r0, 0x1 - strh r0, [r6, 0xE] - b _080E16C0 -_080E16BA: - ldrh r0, [r6, 0x10] - subs r0, 0x1 - strh r0, [r6, 0x10] -_080E16C0: - ldrh r1, [r6, 0x10] - lsls r1, 8 - ldrh r0, [r6, 0xE] - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0xE - ldrsh r0, [r6, r1] - cmp r0, 0x10 - bne _080E16F4 - movs r2, 0x10 - ldrsh r0, [r6, r2] - cmp r0, 0 - bne _080E16F4 - strh r0, [r6, 0xC] - strh r0, [r6, 0xE] -_080E16E6: - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] - b _080E16F4 -_080E16EE: - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080E16F4: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80E1450 - - thumb_func_start sub_80E1704 -sub_80E1704: @ 80E1704 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080E173C @ =gTasks - adds r4, r0 - movs r0, 0 - strh r0, [r4, 0x8] - ldr r0, _080E1740 @ =gBattleAnimArgs - ldrb r0, [r0] - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - strh r1, [r4, 0x26] - ldr r2, _080E1744 @ =gUnknown_83FF3D0 - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldr r0, _080E1748 @ =sub_80E174C - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E173C: .4byte gTasks -_080E1740: .4byte gBattleAnimArgs -_080E1744: .4byte gUnknown_83FF3D0 -_080E1748: .4byte sub_80E174C - thumb_func_end sub_80E1704 - - thumb_func_start sub_80E174C -sub_80E174C: @ 80E174C - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r2, _080E17A4 @ =gTasks - adds r3, r0, r2 - ldrh r0, [r3, 0x8] - adds r1, r0, 0x1 - movs r5, 0 - strh r1, [r3, 0x8] - subs r0, 0x14 - lsls r0, 16 - lsrs r0, 16 - adds r6, r2, 0 - cmp r0, 0x16 - bhi _080E17B0 - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E17C0 - strh r5, [r3, 0xA] - ldrh r0, [r3, 0xC] - adds r0, 0x1 - strh r0, [r3, 0xC] - movs r5, 0x1 - ands r0, r5 - cmp r0, 0 - bne _080E17B0 - ldr r2, _080E17A8 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _080E17AC @ =0x0000ffff - strh r1, [r0, 0x24] - b _080E17C0 - .align 2, 0 -_080E17A4: .4byte gTasks -_080E17A8: .4byte gSprites -_080E17AC: .4byte 0x0000ffff -_080E17B0: - ldr r2, _080E17E0 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r5, [r0, 0x24] -_080E17C0: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r6 - bl RunAffineAnimFromTaskData - lsls r0, 24 - cmp r0, 0 - bne _080E17D8 - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080E17D8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E17E0: .4byte gSprites - thumb_func_end sub_80E174C - - thumb_func_start sub_80E17E4 -sub_80E17E4: @ 80E17E4 - push {r4-r6,lr} - mov r6, r8 - push {r6} - mov r8, r0 - adds r5, r2, 0 - adds r0, r3, 0 - ldr r4, [sp, 0x14] - ldr r6, [sp, 0x18] - lsls r1, 16 - lsrs r1, 16 - lsls r5, 16 - lsrs r5, 16 - lsls r4, 16 - lsrs r4, 16 - lsls r6, 16 - lsrs r6, 16 - mov r2, r8 - strh r1, [r2, 0x20] - strh r5, [r2, 0x22] - lsls r1, 16 - asrs r1, 16 - lsls r2, r1, 4 - mov r3, r8 - strh r2, [r3, 0x36] - lsls r5, 16 - asrs r5, 16 - lsls r2, r5, 4 - strh r2, [r3, 0x38] - lsls r0, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 4 - adds r1, r6, 0 - bl __divsi3 - mov r1, r8 - strh r0, [r1, 0x3A] - lsls r4, 16 - asrs r4, 16 - subs r4, r5 - lsls r4, 4 - adds r0, r4, 0 - adds r1, r6, 0 - bl __divsi3 - mov r2, r8 - strh r0, [r2, 0x3C] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80E17E4 - - thumb_func_start sub_80E184C -sub_80E184C: @ 80E184C - ldrh r1, [r0, 0x3A] - ldrh r2, [r0, 0x36] - adds r1, r2 - strh r1, [r0, 0x36] - ldrh r2, [r0, 0x3C] - ldrh r3, [r0, 0x38] - adds r2, r3 - strh r2, [r0, 0x38] - lsls r1, 16 - asrs r1, 20 - strh r1, [r0, 0x20] - lsls r2, 16 - asrs r2, 20 - strh r2, [r0, 0x22] - bx lr - thumb_func_end sub_80E184C - - thumb_func_start sub_80E186C -sub_80E186C: @ 80E186C - push {r4-r6,lr} - sub sp, 0x8 - adds r4, r0, 0 - ldrh r6, [r4, 0x20] - ldrh r5, [r4, 0x22] - bl SetSpriteCoordsToAnimAttackerCoords - ldr r0, _080E18B4 @ =gBattleAnimArgs - ldrb r1, [r0] - adds r0, r4, 0 - bl StartSpriteAffineAnim - movs r0, 0x20 - ldrsh r1, [r4, r0] - movs r0, 0x22 - ldrsh r2, [r4, r0] - lsls r6, 16 - asrs r6, 16 - lsls r5, 16 - asrs r5, 16 - str r5, [sp] - movs r0, 0x40 - str r0, [sp, 0x4] - adds r0, r4, 0 - adds r3, r6, 0 - bl sub_80E17E4 - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r0, _080E18B8 @ =sub_80E18BC - str r0, [r4, 0x1C] - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E18B4: .4byte gBattleAnimArgs -_080E18B8: .4byte sub_80E18BC - thumb_func_end sub_80E186C - - thumb_func_start sub_80E18BC -sub_80E18BC: @ 80E18BC - push {r4,r5,lr} - adds r5, r0, 0 - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - movs r0, 0x2E - ldrsh r4, [r5, r0] - lsls r4, 3 - movs r0, 0xFF - ands r4, r0 - adds r0, r5, 0 - bl sub_80E184C - adds r0, r4, 0 - movs r1, 0x8 - bl Sin - strh r0, [r5, 0x26] - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0x3A - ble _080E1922 - ldrh r0, [r5, 0x30] - adds r0, 0x1 - strh r0, [r5, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E1922 - movs r0, 0 - strh r0, [r5, 0x30] - ldrh r1, [r5, 0x32] - adds r1, 0x1 - strh r1, [r5, 0x32] - movs r0, 0x1 - ands r1, r0 - adds r3, r5, 0 - adds r3, 0x3E - lsls r1, 2 - ldrb r2, [r3] - subs r0, 0x6 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - movs r1, 0x32 - ldrsh r0, [r5, r1] - cmp r0, 0x3 - ble _080E1922 - adds r0, r5, 0 - bl DestroySpriteAndMatrix -_080E1922: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80E18BC - - thumb_func_start sub_80E1928 -sub_80E1928: @ 80E1928 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _080E1980 @ =gBattleAnimArgs - ldrh r0, [r6, 0x6] - strh r0, [r5, 0x2E] - ldrb r1, [r6] - adds r0, r5, 0 - bl StartSpriteAffineAnim - ldr r0, _080E1984 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080E194E - ldrh r0, [r6, 0x2] - negs r0, r0 - strh r0, [r6, 0x2] -_080E194E: - ldr r4, _080E1988 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6, 0x2] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x4] - adds r0, r6 - strh r0, [r5, 0x22] - ldr r0, _080E198C @ =sub_80B1D3C - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E1980: .4byte gBattleAnimArgs -_080E1984: .4byte gBattleAnimTarget -_080E1988: .4byte gBattleAnimAttacker -_080E198C: .4byte sub_80B1D3C - thumb_func_end sub_80E1928 - - thumb_func_start sub_80E1990 -sub_80E1990: @ 80E1990 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r5, r0, 24 - movs r7, 0 - ldr r2, _080E19E0 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r3, r0, r2 - ldrh r0, [r3, 0x8] - subs r0, 0x1 - strh r0, [r3, 0x8] - movs r1, 0x14 - ldrsh r0, [r3, r1] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - mov r8, r2 - cmp r0, 0 - beq _080E1A12 - ldrh r0, [r3, 0xA] - subs r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080E1A12 - movs r2, 0x1A - ldrsh r0, [r3, r2] - cmp r0, 0 - bne _080E19E4 - ldrh r0, [r3, 0x10] - strh r0, [r3, 0x1A] - negs r0, r0 - strh r0, [r3, 0x10] - b _080E19E6 - .align 2, 0 -_080E19E0: .4byte gTasks -_080E19E4: - strh r7, [r3, 0x1A] -_080E19E6: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - mov r2, r8 - adds r1, r0, r2 - movs r2, 0x1C - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080E1A02 - ldrh r0, [r1, 0x12] - strh r0, [r1, 0x1C] - negs r0, r0 - strh r0, [r1, 0x12] - b _080E1A06 -_080E1A02: - movs r0, 0 - strh r0, [r1, 0x1C] -_080E1A06: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - add r0, r8 - ldrh r1, [r0, 0x22] - strh r1, [r0, 0xA] -_080E1A12: - lsls r2, r5, 2 - adds r0, r2, r5 - lsls r0, 3 - mov r1, r8 - adds r4, r0, r1 - ldrh r6, [r4, 0x16] - ldrh r7, [r4, 0x18] - movs r1, 0xC - ldrsh r0, [r4, r1] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - mov r12, r2 - cmp r0, 0 - beq _080E1A50 - ldr r3, _080E1A4C @ =gSprites - movs r2, 0x26 - ldrsh r0, [r4, r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - lsrs r2, r6, 8 - ldrh r0, [r4, 0x1A] - subs r0, r2 - strh r0, [r1, 0x24] - adds r2, r3, 0 - b _080E1A66 - .align 2, 0 -_080E1A4C: .4byte gSprites -_080E1A50: - ldr r2, _080E1A94 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - lsrs r1, r6, 8 - ldrh r4, [r4, 0x1A] - adds r1, r4 - strh r1, [r0, 0x24] -_080E1A66: - mov r1, r12 - adds r0, r1, r5 - lsls r0, 3 - mov r1, r8 - adds r4, r0, r1 - movs r1, 0xE - ldrsh r0, [r4, r1] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _080E1A98 - movs r1, 0x26 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - lsrs r2, r7, 8 - ldrh r0, [r4, 0x1C] - subs r0, r2 - b _080E1AAA - .align 2, 0 -_080E1A94: .4byte gSprites -_080E1A98: - movs r1, 0x26 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - lsrs r0, r7, 8 - ldrh r4, [r4, 0x1C] - adds r0, r4 -_080E1AAA: - strh r0, [r1, 0x26] - mov r2, r12 - adds r0, r2, r5 - lsls r0, 3 - add r0, r8 - movs r1, 0x8 - ldrsh r0, [r0, r1] - cmp r0, 0 - bgt _080E1ACA - adds r0, r5, 0 - bl DestroyTask - ldr r1, _080E1AD4 @ =gAnimVisualTaskCount - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] -_080E1ACA: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E1AD4: .4byte gAnimVisualTaskCount - thumb_func_end sub_80E1990 - - thumb_func_start sub_80E1AD8 -sub_80E1AD8: @ 80E1AD8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r6, r0, 24 - movs r7, 0 - ldr r2, _080E1B2C @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r3, r0, r2 - ldrh r0, [r3, 0x8] - subs r0, 0x1 - strh r0, [r3, 0x8] - movs r1, 0x14 - ldrsh r0, [r3, r1] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - mov r8, r2 - cmp r0, 0 - beq _080E1B5E - ldrh r0, [r3, 0xA] - subs r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080E1B5E - movs r2, 0x1A - ldrsh r0, [r3, r2] - cmp r0, 0 - bne _080E1B30 - ldrh r0, [r3, 0x10] - strh r0, [r3, 0x1A] - negs r0, r0 - strh r0, [r3, 0x10] - b _080E1B32 - .align 2, 0 -_080E1B2C: .4byte gTasks -_080E1B30: - strh r7, [r3, 0x1A] -_080E1B32: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - mov r2, r8 - adds r1, r0, r2 - movs r2, 0x1C - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080E1B4E - ldrh r0, [r1, 0x12] - strh r0, [r1, 0x1C] - negs r0, r0 - strh r0, [r1, 0x12] - b _080E1B52 -_080E1B4E: - movs r0, 0 - strh r0, [r1, 0x1C] -_080E1B52: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - add r0, r8 - ldrh r1, [r0, 0x22] - strh r1, [r0, 0xA] -_080E1B5E: - lsls r3, r6, 2 - adds r0, r3, r6 - lsls r0, 3 - mov r1, r8 - adds r4, r0, r1 - ldrh r2, [r4, 0xC] - ldr r1, _080E1BB0 @ =0x00007fff - adds r0, r1, 0 - ands r0, r2 - ldrh r2, [r4, 0x16] - adds r0, r2 - lsls r5, r0, 16 - lsrs r0, r5, 16 - mov r9, r0 - ldrh r0, [r4, 0xE] - ands r1, r0 - ldrh r2, [r4, 0x18] - adds r1, r2 - lsls r1, 16 - lsrs r7, r1, 16 - movs r1, 0xC - ldrsh r0, [r4, r1] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - mov r12, r3 - cmp r0, 0 - beq _080E1BB8 - ldr r3, _080E1BB4 @ =gSprites - movs r2, 0x26 - ldrsh r0, [r4, r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - lsrs r2, r5, 24 - ldrh r0, [r4, 0x1A] - subs r0, r2 - strh r0, [r1, 0x24] - adds r2, r3, 0 - b _080E1BCE - .align 2, 0 -_080E1BB0: .4byte 0x00007fff -_080E1BB4: .4byte gSprites -_080E1BB8: - ldr r2, _080E1BFC @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - lsrs r1, r5, 24 - ldrh r4, [r4, 0x1A] - adds r1, r4 - strh r1, [r0, 0x24] -_080E1BCE: - mov r1, r12 - adds r0, r1, r6 - lsls r0, 3 - mov r1, r8 - adds r4, r0, r1 - movs r1, 0xE - ldrsh r0, [r4, r1] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _080E1C00 - movs r1, 0x26 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - lsrs r2, r7, 8 - ldrh r0, [r4, 0x1C] - subs r0, r2 - b _080E1C12 - .align 2, 0 -_080E1BFC: .4byte gSprites -_080E1C00: - movs r1, 0x26 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - lsrs r0, r7, 8 - ldrh r4, [r4, 0x1C] - adds r0, r4 -_080E1C12: - strh r0, [r1, 0x26] - mov r2, r12 - adds r0, r2, r6 - lsls r0, 3 - mov r1, r8 - adds r2, r0, r1 - mov r0, r9 - strh r0, [r2, 0x16] - strh r7, [r2, 0x18] - movs r1, 0x8 - ldrsh r0, [r2, r1] - cmp r0, 0 - bgt _080E1C38 - movs r0, 0x1E - strh r0, [r2, 0x8] - movs r0, 0 - strh r0, [r2, 0x22] - ldr r0, _080E1C44 @ =sub_80E1990 - str r0, [r2] -_080E1C38: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E1C44: .4byte sub_80E1990 - thumb_func_end sub_80E1AD8 - - thumb_func_start sub_80E1C48 -sub_80E1C48: @ 80E1C48 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _080E1CA8 @ =gTasks - mov r8, r0 - lsls r7, r6, 2 - adds r0, r7, r6 - lsls r0, 3 - mov r1, r8 - adds r4, r0, r1 - ldr r1, _080E1CAC @ =gBattlerSpriteIds - ldr r2, _080E1CB0 @ =gBattleAnimAttacker - ldrb r0, [r2] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r4, 0x26] - ldr r5, _080E1CB4 @ =gBattleAnimArgs - ldrh r0, [r5] - strh r0, [r4, 0x24] - ldrh r0, [r5] - strh r0, [r4, 0x8] - ldrh r0, [r5, 0xC] - strh r0, [r4, 0x22] - movs r3, 0x6 - ldrsh r0, [r5, r3] - cmp r0, 0 - beq _080E1C8C - ldrh r0, [r4, 0x14] - ldr r3, _080E1CB8 @ =0xffff8000 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r4, 0x14] -_080E1C8C: - ldrb r0, [r2] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080E1CBC - ldrh r0, [r5, 0x2] - strh r0, [r4, 0xC] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0xE] - mov r3, r8 - adds r4, r7, 0 - b _080E1D2C - .align 2, 0 -_080E1CA8: .4byte gTasks -_080E1CAC: .4byte gBattlerSpriteIds -_080E1CB0: .4byte gBattleAnimAttacker -_080E1CB4: .4byte gBattleAnimArgs -_080E1CB8: .4byte 0xffff8000 -_080E1CBC: - movs r7, 0x2 - ldrsh r0, [r5, r7] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _080E1CD8 - ldrh r1, [r5, 0x2] - ldr r0, _080E1CD4 @ =0x00007fff - ands r0, r1 - b _080E1CE0 - .align 2, 0 -_080E1CD4: .4byte 0x00007fff -_080E1CD8: - ldrh r0, [r5, 0x2] - ldr r2, _080E1D08 @ =0xffff8000 - adds r1, r2, 0 - orrs r0, r1 -_080E1CE0: - strh r0, [r4, 0xC] - ldr r0, _080E1D0C @ =gBattleAnimArgs - movs r3, 0x4 - ldrsh r1, [r0, r3] - movs r2, 0x80 - lsls r2, 8 - ands r1, r2 - adds r5, r0, 0 - cmp r1, 0 - beq _080E1D18 - ldr r3, _080E1D10 @ =gTasks - lsls r4, r6, 2 - adds r1, r4, r6 - lsls r1, 3 - adds r1, r3 - ldrh r2, [r5, 0x4] - ldr r0, _080E1D14 @ =0x00007fff - ands r0, r2 - b _080E1D2A - .align 2, 0 -_080E1D08: .4byte 0xffff8000 -_080E1D0C: .4byte gBattleAnimArgs -_080E1D10: .4byte gTasks -_080E1D14: .4byte 0x00007fff -_080E1D18: - ldr r3, _080E1D50 @ =gTasks - lsls r4, r6, 2 - adds r1, r4, r6 - lsls r1, 3 - adds r1, r3 - ldrh r2, [r5, 0x4] - ldr r7, _080E1D54 @ =0xffff8000 - adds r0, r7, 0 - orrs r0, r2 -_080E1D2A: - strh r0, [r1, 0xE] -_080E1D2C: - adds r0, r4, r6 - lsls r0, 3 - adds r0, r3 - movs r1, 0 - strh r1, [r0, 0x18] - strh r1, [r0, 0x16] - ldrh r1, [r5, 0x8] - strh r1, [r0, 0x10] - ldrh r1, [r5, 0xA] - strh r1, [r0, 0x12] - ldr r1, _080E1D58 @ =sub_80E1AD8 - str r1, [r0] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E1D50: .4byte gTasks -_080E1D54: .4byte 0xffff8000 -_080E1D58: .4byte sub_80E1AD8 - thumb_func_end sub_80E1C48 - - thumb_func_start sub_80E1D5C -sub_80E1D5C: @ 80E1D5C - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080E1D94 @ =gTasks - adds r5, r0, r1 - ldr r4, _080E1D98 @ =gBattleAnimArgs - movs r1, 0x2 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080E1D7C - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080E1D7C: - movs r0, 0 - strh r0, [r5, 0x8] - strh r0, [r5, 0xA] - strh r0, [r5, 0xC] - ldrh r0, [r4, 0x2] - strh r0, [r5, 0xE] - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080E1DA0 - ldr r0, _080E1D9C @ =gBattleAnimAttacker - b _080E1DA2 - .align 2, 0 -_080E1D94: .4byte gTasks -_080E1D98: .4byte gBattleAnimArgs -_080E1D9C: .4byte gBattleAnimAttacker -_080E1DA0: - ldr r0, _080E1DF0 @ =gBattleAnimTarget -_080E1DA2: - ldrb r4, [r0] - adds r0, r4, 0 - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x10] - adds r0, r4, 0 - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x12] - adds r0, r4, 0 - bl GetBattlerSpriteSubpriority - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x14] - ldr r0, _080E1DF4 @ =gBattleAnimArgs - ldrb r0, [r0] - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - strh r1, [r5, 0x26] - ldr r2, _080E1DF8 @ =gUnknown_83FF52C - adds r0, r5, 0 - bl PrepareAffineAnimInTaskData - ldr r0, _080E1DFC @ =sub_80E1E00 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E1DF0: .4byte gBattleAnimTarget -_080E1DF4: .4byte gBattleAnimArgs -_080E1DF8: .4byte gUnknown_83FF52C -_080E1DFC: .4byte sub_80E1E00 - thumb_func_end sub_80E1D5C - - thumb_func_start sub_80E1E00 -sub_80E1E00: @ 80E1E00 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080E1E20 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080E1E24 - cmp r0, 0x1 - beq _080E1E84 - b _080E1E92 - .align 2, 0 -_080E1E20: .4byte gTasks -_080E1E24: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - bne _080E1E3A - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80E1E98 -_080E1E3A: - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0x12 - bne _080E1E4A - adds r0, r5, 0 - movs r1, 0 - bl sub_80E1E98 -_080E1E4A: - adds r0, r4, 0 - bl RunAffineAnimFromTaskData - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080E1E92 - ldrh r0, [r4, 0xE] - subs r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _080E1E6C - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E1E92 -_080E1E6C: - strh r1, [r4, 0xA] - ldrh r1, [r4, 0x26] - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080E1E80 @ =gUnknown_83FF52C - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - b _080E1E92 - .align 2, 0 -_080E1E80: .4byte gUnknown_83FF52C -_080E1E84: - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080E1E92 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080E1E92: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80E1E00 - - thumb_func_start sub_80E1E98 -sub_80E1E98: @ 80E1E98 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r2, _080E1EBC @ =gTasks - adds r4, r0, r2 - cmp r1, 0 - bne _080E1EC0 - movs r1, 0x12 - movs r3, 0xEC - b _080E1EC4 - .align 2, 0 -_080E1EBC: .4byte gTasks -_080E1EC0: - movs r1, 0x1E - movs r3, 0x14 -_080E1EC4: - mov r2, sp - ldrh r0, [r4, 0x10] - subs r0, r1 - strh r0, [r2] - ldrh r0, [r4, 0x10] - subs r0, r1 - subs r0, 0x4 - strh r0, [r2, 0x2] - ldrh r0, [r4, 0x10] - adds r0, r1 - strh r0, [r2, 0x4] - ldrh r0, [r4, 0x10] - adds r0, r1 - adds r0, 0x4 - strh r0, [r2, 0x6] - add r2, sp, 0x8 - lsls r1, r3, 24 - asrs r1, 24 - ldrh r0, [r4, 0x12] - adds r0, r1 - strh r0, [r2] - ldrh r0, [r4, 0x12] - adds r0, r1 - adds r0, 0x6 - strh r0, [r2, 0x2] - movs r5, 0 - mov r8, r2 - ldr r7, _080E1F68 @ =gSprites -_080E1EFC: - lsls r0, r5, 1 - add r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0x1 - ands r0, r5 - lsls r0, 1 - add r0, r8 - movs r3, 0 - ldrsh r2, [r0, r3] - ldrb r3, [r4, 0x14] - subs r3, 0x5 - lsls r3, 24 - lsrs r3, 24 - ldr r0, _080E1F6C @ =gUnknown_83FF54C - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _080E1F50 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r7 - movs r0, 0 - strh r0, [r1, 0x2E] - movs r0, 0x2 - cmp r5, 0x1 - bhi _080E1F3E - movs r2, 0x2 - negs r2, r2 - adds r0, r2, 0 -_080E1F3E: - strh r0, [r1, 0x30] - ldr r0, _080E1F70 @ =0x0000ffff - strh r0, [r1, 0x32] - strh r6, [r1, 0x34] - movs r0, 0x2 - strh r0, [r1, 0x36] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] -_080E1F50: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _080E1EFC - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E1F68: .4byte gSprites -_080E1F6C: .4byte gUnknown_83FF54C -_080E1F70: .4byte 0x0000ffff - thumb_func_end sub_80E1E98 - - thumb_func_start sub_80E1F74 -sub_80E1F74: @ 80E1F74 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x32] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - ble _080E1FBA - ldr r3, _080E1FC0 @ =gTasks - movs r0, 0x36 - ldrsh r1, [r4, r0] - lsls r1, 1 - movs r0, 0x34 - ldrsh r2, [r4, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r3, 0x8 - adds r1, r3 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - adds r0, r4, 0 - bl DestroySprite -_080E1FBA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E1FC0: .4byte gTasks - thumb_func_end sub_80E1F74 - - thumb_func_start sub_80E1FC4 -sub_80E1FC4: @ 80E1FC4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080E200C @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - movs r0, 0 - strh r0, [r4, 0x8] - ldr r1, _080E2010 @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - strh r0, [r4, 0xA] - ldrb r0, [r1] - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080E2014 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0x5] - lsrs r0, 4 - lsls r0, 4 - movs r2, 0x80 - lsls r2, 1 - adds r1, r2, 0 - adds r0, r1 - strh r0, [r4, 0xC] - ldr r0, _080E2018 @ =sub_80E201C - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E200C: .4byte gTasks -_080E2010: .4byte gBattleAnimArgs -_080E2014: .4byte gSprites -_080E2018: .4byte sub_80E201C - thumb_func_end sub_80E1FC4 - - thumb_func_start sub_80E201C -sub_80E201C: @ 80E201C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080E2064 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080E206C - ldrh r0, [r4, 0xC] - ldr r2, _080E2068 @ =gUnknown_83FF564 - movs r3, 0x8 - ldrsh r1, [r4, r3] - lsls r1, 1 - adds r1, r2 - ldrh r3, [r1] - movs r1, 0x10 - movs r2, 0x8 - bl BlendPalette - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x17 - ble _080E205C - movs r0, 0 - strh r0, [r4, 0x8] -_080E205C: - ldrh r0, [r4, 0xA] - subs r0, 0x1 - strh r0, [r4, 0xA] - b _080E207E - .align 2, 0 -_080E2064: .4byte gTasks -_080E2068: .4byte gUnknown_83FF564 -_080E206C: - ldrh r0, [r4, 0xC] - movs r1, 0x10 - movs r2, 0 - movs r3, 0 - bl BlendPalette - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080E207E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80E201C - - thumb_func_start sub_80E2084 -sub_80E2084: @ 80E2084 - push {lr} - sub sp, 0x1C - lsls r0, 24 - lsrs r0, 24 - movs r2, 0xD0 - lsls r2, 1 - ldr r1, _080E20C0 @ =gBattleAnimAttacker - ldrb r3, [r1] - ldr r1, _080E20C4 @ =gBattleAnimArgs - ldrb r1, [r1] - str r1, [sp] - movs r1, 0xA - str r1, [sp, 0x4] - movs r1, 0x2 - str r1, [sp, 0x8] - movs r1, 0x1E - str r1, [sp, 0xC] - ldr r1, _080E20C8 @ =gFile_graphics_battle_anims_masks_cure_bubbles_sheet - str r1, [sp, 0x10] - ldr r1, _080E20CC @ =gFile_graphics_battle_anims_masks_cure_bubbles_tilemap - str r1, [sp, 0x14] - ldr r1, _080E20D0 @ =gFile_graphics_battle_anims_masks_cure_bubbles_palette - str r1, [sp, 0x18] - movs r1, 0 - bl sub_80BBA20 - add sp, 0x1C - pop {r0} - bx r0 - .align 2, 0 -_080E20C0: .4byte gBattleAnimAttacker -_080E20C4: .4byte gBattleAnimArgs -_080E20C8: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_sheet -_080E20CC: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_tilemap -_080E20D0: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_palette - thumb_func_end sub_80E2084 - - thumb_func_start sub_80E20D4 -sub_80E20D4: @ 80E20D4 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _080E212C @ =gBattleAnimAttacker - ldrb r0, [r6] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E20F0 - ldr r1, _080E2130 @ =gBattleAnimArgs - ldrh r0, [r1] - negs r0, r0 - strh r0, [r1] -_080E20F0: - ldrb r0, [r6] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r4, _080E2130 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r6] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r5, 0x22] - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080E2138 - movs r0, 0xA0 - lsls r0, 2 - strh r0, [r5, 0x2E] - ldr r0, _080E2134 @ =0x0000fd80 - strh r0, [r5, 0x30] - b _080E2160 - .align 2, 0 -_080E212C: .4byte gBattleAnimAttacker -_080E2130: .4byte gBattleAnimArgs -_080E2134: .4byte 0x0000fd80 -_080E2138: - cmp r0, 0x1 - bne _080E2152 - adds r2, r5, 0 - adds r2, 0x3F - ldrb r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2] - movs r0, 0xA0 - lsls r0, 2 - strh r0, [r5, 0x2E] - strh r0, [r5, 0x30] - b _080E2160 -_080E2152: - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAnim - movs r0, 0xA0 - lsls r0, 2 - strh r0, [r5, 0x2E] -_080E2160: - ldr r0, _080E218C @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080E2180 - ldrh r0, [r5, 0x2E] - negs r0, r0 - strh r0, [r5, 0x2E] - adds r2, r5, 0 - adds r2, 0x3F - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] -_080E2180: - ldr r0, _080E2190 @ =sub_80E2194 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E218C: .4byte gBattleAnimAttacker -_080E2190: .4byte sub_80E2194 - thumb_func_end sub_80E20D4 - - thumb_func_start sub_80E2194 -sub_80E2194: @ 80E2194 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x3A] - adds r0, r1 - strh r0, [r2, 0x3A] - ldrh r1, [r2, 0x30] - ldrh r3, [r2, 0x3C] - adds r1, r3 - strh r1, [r2, 0x3C] - lsls r0, 16 - asrs r0, 24 - strh r0, [r2, 0x24] - lsls r1, 16 - asrs r1, 24 - strh r1, [r2, 0x26] - ldrh r0, [r2, 0x38] - adds r0, 0x1 - strh r0, [r2, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xE - bne _080E21C8 - adds r0, r2, 0 - bl DestroyAnimSprite -_080E21C8: - pop {r0} - bx r0 - thumb_func_end sub_80E2194 - - thumb_func_start sub_80E21CC -sub_80E21CC: @ 80E21CC - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080E221C @ =gTasks - adds r6, r1, r0 - movs r1, 0 - movs r0, 0xC - strh r0, [r6, 0x12] - movs r0, 0x3 - strh r0, [r6, 0x14] - strh r1, [r6, 0x16] - ldr r5, _080E2220 @ =gBattleAnimAttacker - ldrb r0, [r5] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080E2224 - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoordAttr - lsls r4, 24 - lsrs r4, 24 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080E2216 - adds r0, 0x3 -_080E2216: - asrs r0, 2 - adds r0, r4, r0 - b _080E2248 - .align 2, 0 -_080E221C: .4byte gTasks -_080E2220: .4byte gBattleAnimAttacker -_080E2224: - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoordAttr - lsls r4, 24 - lsrs r4, 24 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080E2244 - adds r0, 0x3 -_080E2244: - asrs r0, 2 - subs r0, r4, r0 -_080E2248: - strh r0, [r6, 0x1E] - ldr r5, _080E229C @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoordAttr - lsls r4, 24 - lsrs r4, 24 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080E226C - adds r0, 0x3 -_080E226C: - asrs r0, 2 - subs r0, r4, r0 - strh r0, [r6, 0x20] - ldr r4, _080E22A0 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x22] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x24] - ldr r0, _080E22A4 @ =sub_80E22A8 - str r0, [r6] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E229C: .4byte gBattleAnimAttacker -_080E22A0: .4byte gBattleAnimTarget -_080E22A4: .4byte sub_80E22A8 - thumb_func_end sub_80E21CC - - thumb_func_start sub_80E22A8 -sub_80E22A8: @ 80E22A8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - ldr r1, _080E22D0 @ =gTasks - adds r5, r0, r1 - movs r0, 0x8 - ldrsh r1, [r5, r0] - cmp r1, 0 - beq _080E22D4 - cmp r1, 0x1 - bne _080E22CC - b _080E23CC -_080E22CC: - b _080E23DA - .align 2, 0 -_080E22D0: .4byte gTasks -_080E22D4: - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080E23DA - strh r1, [r5, 0xA] - movs r1, 0x1E - ldrsh r0, [r5, r1] - movs r2, 0x20 - ldrsh r1, [r5, r2] - movs r3, 0x22 - ldrsh r2, [r5, r3] - movs r4, 0x24 - ldrsh r3, [r5, r4] - ldrb r4, [r5, 0x12] - str r4, [sp] - ldrb r4, [r5, 0xC] - str r4, [sp, 0x4] - add r4, sp, 0x10 - str r4, [sp, 0x8] - adds r4, 0x2 - str r4, [sp, 0xC] - bl sub_80E23E8 - movs r6, 0 - mov r8, r4 - ldr r4, _080E2348 @ =gSprites -_080E230E: - add r0, sp, 0x10 - movs r2, 0 - ldrsh r1, [r0, r2] - mov r3, r8 - movs r0, 0 - ldrsh r2, [r3, r0] - ldr r0, _080E234C @ =gUnknown_83FF5CC - movs r3, 0x23 - bl CreateSprite - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x40 - beq _080E23A2 - movs r1, 0x16 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080E2362 - cmp r6, 0 - bne _080E2350 - lsls r2, r3, 4 - adds r1, r2, r3 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r5, 0x14] - negs r0, r0 - strh r0, [r1, 0x26] - strh r0, [r1, 0x24] - b _080E238A - .align 2, 0 -_080E2348: .4byte gSprites -_080E234C: .4byte gUnknown_83FF5CC -_080E2350: - lsls r2, r3, 4 - adds r1, r2, r3 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r5, 0x14] - strh r0, [r1, 0x26] - ldrh r0, [r5, 0x14] - strh r0, [r1, 0x24] - b _080E238A -_080E2362: - cmp r6, 0 - bne _080E2378 - lsls r2, r3, 4 - adds r1, r2, r3 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r5, 0x14] - negs r0, r0 - strh r0, [r1, 0x24] - ldrh r0, [r5, 0x14] - b _080E2388 -_080E2378: - lsls r2, r3, 4 - adds r1, r2, r3 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r5, 0x14] - strh r0, [r1, 0x24] - ldrh r0, [r5, 0x14] - negs r0, r0 -_080E2388: - strh r0, [r1, 0x26] -_080E238A: - ldr r1, _080E23C8 @ =gSprites - adds r0, r2, r3 - lsls r0, 2 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x2E] - strh r7, [r0, 0x30] - movs r1, 0xA - strh r1, [r0, 0x32] - ldrh r0, [r5, 0x1C] - adds r0, 0x1 - strh r0, [r5, 0x1C] -_080E23A2: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x1 - bls _080E230E - ldrh r2, [r5, 0xC] - movs r3, 0xC - ldrsh r1, [r5, r3] - movs r4, 0x12 - ldrsh r0, [r5, r4] - cmp r1, r0 - bne _080E23C0 - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] -_080E23C0: - adds r0, r2, 0x1 - strh r0, [r5, 0xC] - b _080E23DA - .align 2, 0 -_080E23C8: .4byte gSprites -_080E23CC: - movs r1, 0x1C - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080E23DA - adds r0, r7, 0 - bl DestroyAnimVisualTask -_080E23DA: - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80E22A8 - - thumb_func_start sub_80E23E8 -sub_80E23E8: @ 80E23E8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - ldr r4, [sp, 0x28] - ldr r5, [sp, 0x2C] - ldr r6, [sp, 0x30] - mov r9, r6 - ldr r6, [sp, 0x34] - mov r10, r6 - lsls r0, 16 - lsrs r0, 16 - mov r12, r0 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - lsls r2, 16 - lsrs r2, 16 - adds r7, r2, 0 - lsls r3, 16 - lsrs r3, 16 - str r3, [sp, 0x4] - lsls r4, 24 - lsrs r6, r4, 24 - lsls r5, 24 - lsrs r5, 24 - mov r8, r5 - cmp r5, 0 - bne _080E2430 - mov r2, r9 - strh r0, [r2] - mov r6, r10 - strh r1, [r6] - b _080E248E -_080E2430: - cmp r5, r6 - bcc _080E243E - mov r0, r9 - strh r2, [r0] - mov r1, r10 - strh r3, [r1] - b _080E248E -_080E243E: - subs r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - mov r2, r12 - lsls r1, r2, 16 - asrs r1, 16 - lsls r5, r1, 8 - lsls r0, r7, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 8 - adds r1, r6, 0 - bl __divsi3 - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r5, r0 - ldr r2, [sp] - lsls r1, r2, 16 - asrs r1, 16 - lsls r4, r1, 8 - ldr r2, [sp, 0x4] - lsls r0, r2, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 8 - adds r1, r6, 0 - bl __divsi3 - mov r6, r8 - muls r6, r0 - adds r0, r6, 0 - adds r4, r0 - asrs r5, 8 - mov r0, r9 - strh r5, [r0] - asrs r4, 8 - mov r1, r10 - strh r4, [r1] -_080E248E: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80E23E8 - - thumb_func_start sub_80E24A0 -sub_80E24A0: @ 80E24A0 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x24 - ble _080E24D6 - ldr r3, _080E24DC @ =gTasks - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsls r1, 1 - movs r0, 0x30 - ldrsh r2, [r4, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r3, 0x8 - adds r1, r3 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - adds r0, r4, 0 - bl DestroySprite -_080E24D6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E24DC: .4byte gTasks - thumb_func_end sub_80E24A0 - - thumb_func_start sub_80E24E0 -sub_80E24E0: @ 80E24E0 - push {r4,lr} - adds r4, r0, 0 - ldr r1, _080E250C @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x22] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x32] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x36] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x2E] - ldr r1, _080E2510 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080E2514 @ =InitAndRunAnimFastLinearTranslation - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E250C: .4byte gBattleAnimArgs -_080E2510: .4byte DestroyAnimSprite -_080E2514: .4byte InitAndRunAnimFastLinearTranslation - thumb_func_end sub_80E24E0 - - thumb_func_start sub_80E2518 -sub_80E2518: @ 80E2518 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r0, 2 - add r0, r9 - lsls r0, 3 - ldr r1, _080E2638 @ =gTasks - adds r7, r0, r1 - ldr r0, _080E263C @ =gBattleAnimAttacker - mov r10, r0 - ldrb r0, [r0] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r7, 0x1E] - mov r1, r10 - ldrb r0, [r1] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r7, 0x20] - ldr r0, _080E2640 @ =gBattleAnimTarget - mov r8, r0 - ldrb r0, [r0] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r7, 0x22] - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x3 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - mov r1, r8 - ldrb r0, [r1] - movs r1, 0 - bl GetBattlerSpriteCoordAttr - lsls r4, 24 - lsrs r4, 24 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080E258A - adds r0, 0x3 -_080E258A: - asrs r0, 2 - adds r0, r4, r0 - strh r0, [r7, 0x24] - ldr r4, _080E2644 @ =gUnknown_83FF62C - movs r0, 0x1E - ldrsh r5, [r7, r0] - movs r1, 0x20 - ldrsh r6, [r7, r1] - mov r1, r8 - ldrb r0, [r1] - bl GetBattlerSpriteSubpriority - adds r3, r0, 0 - subs r3, 0x5 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - strh r0, [r7, 0x26] - cmp r0, 0x40 - beq _080E2654 - ldr r4, _080E2648 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x10 - strh r1, [r0, 0x2E] - movs r0, 0x26 - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r7, 0x22] - strh r1, [r0, 0x32] - movs r0, 0x26 - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r7, 0x24] - strh r1, [r0, 0x36] - movs r0, 0x26 - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _080E264C @ =0x0000ffe0 - strh r1, [r0, 0x38] - movs r0, 0x26 - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl InitAnimArcTranslation - mov r1, r10 - ldrb r0, [r1] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E2632 - movs r0, 0x26 - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x1 - bl StartSpriteAffineAnim -_080E2632: - ldr r0, _080E2650 @ =sub_80E2668 - str r0, [r7] - b _080E265A - .align 2, 0 -_080E2638: .4byte gTasks -_080E263C: .4byte gBattleAnimAttacker -_080E2640: .4byte gBattleAnimTarget -_080E2644: .4byte gUnknown_83FF62C -_080E2648: .4byte gSprites -_080E264C: .4byte 0x0000ffe0 -_080E2650: .4byte sub_80E2668 -_080E2654: - mov r0, r9 - bl DestroyAnimVisualTask -_080E265A: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80E2518 - - thumb_func_start sub_80E2668 -sub_80E2668: @ 80E2668 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080E268C @ =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r1, [r4, r0] - cmp r1, 0x1 - beq _080E26D0 - cmp r1, 0x1 - bgt _080E2690 - cmp r1, 0 - beq _080E269A - b _080E276E - .align 2, 0 -_080E268C: .4byte gTasks -_080E2690: - cmp r1, 0x2 - beq _080E26F4 - cmp r1, 0x3 - beq _080E2768 - b _080E276E -_080E269A: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E276E - strh r1, [r4, 0xA] - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080E26CC @ =gSprites - adds r0, r1 - bl TranslateAnimHorizontalArc - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _080E276E - b _080E275A - .align 2, 0 -_080E26CC: .4byte gSprites -_080E26D0: - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080E26F0 @ =gSprites - adds r0, r1 - bl TranslateAnimHorizontalArc - lsls r0, 24 - cmp r0, 0 - beq _080E276E - movs r0, 0 - strh r0, [r4, 0xA] - strh r0, [r4, 0xC] - b _080E275A - .align 2, 0 -_080E26F0: .4byte gSprites -_080E26F4: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E276E - movs r0, 0 - strh r0, [r4, 0xA] - ldrh r2, [r4, 0xC] - adds r2, 0x1 - strh r2, [r4, 0xC] - ldr r5, _080E2764 @ =gSprites - movs r1, 0x26 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - movs r0, 0x1 - ands r2, r0 - adds r1, 0x3E - lsls r2, 2 - ldrb r3, [r1] - subs r0, 0x6 - ands r0, r3 - orrs r0, r2 - strb r0, [r1] - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _080E276E - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r0, [r0, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - bl DestroySprite -_080E275A: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E276E - .align 2, 0 -_080E2764: .4byte gSprites -_080E2768: - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080E276E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80E2668 - - thumb_func_start sub_80E2774 -sub_80E2774: @ 80E2774 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r0, _080E2788 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r1, [r0, r2] - adds r6, r0, 0 - cmp r1, 0 - bne _080E2790 - ldr r0, _080E278C @ =gBattleAnimAttacker - b _080E2792 - .align 2, 0 -_080E2788: .4byte gBattleAnimArgs -_080E278C: .4byte gBattleAnimAttacker -_080E2790: - ldr r0, _080E27F8 @ =gBattleAnimTarget -_080E2792: - ldrb r5, [r0] - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x10 - ldr r3, _080E27FC @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080E2800 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - adds r1, r6, 0 - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x3A] - movs r2, 0x2 - ldrsh r0, [r1, r2] - movs r1, 0x1 - cmp r0, 0 - bne _080E27C0 - movs r3, 0x1 - negs r3, r3 - adds r1, r3, 0 -_080E27C0: - strh r1, [r4, 0x3C] - adds r0, r5, 0 - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - movs r1, 0x2 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080E2804 - ldrb r2, [r4, 0x3] - lsls r1, r2, 26 - lsrs r1, 27 - movs r0, 0x8 - orrs r1, r0 - lsls r1, 1 - subs r0, 0x47 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x3] - adds r0, r5, 0 - movs r1, 0x4 - bl GetBattlerSpriteCoordAttr - subs r0, 0x8 - b _080E280E - .align 2, 0 -_080E27F8: .4byte gBattleAnimTarget -_080E27FC: .4byte 0x000003ff -_080E2800: .4byte 0xfffffc00 -_080E2804: - adds r0, r5, 0 - movs r1, 0x5 - bl GetBattlerSpriteCoordAttr - adds r0, 0x8 -_080E280E: - strh r0, [r4, 0x20] - ldr r0, _080E281C @ =sub_80E2820 - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E281C: .4byte sub_80E2820 - thumb_func_end sub_80E2774 - - thumb_func_start sub_80E2820 -sub_80E2820: @ 80E2820 - push {lr} - adds r2, r0, 0 - movs r0, 0x2E - ldrsh r1, [r2, r0] - cmp r1, 0x1 - beq _080E2868 - cmp r1, 0x1 - bgt _080E2836 - cmp r1, 0 - beq _080E2840 - b _080E28D8 -_080E2836: - cmp r1, 0x2 - beq _080E2878 - cmp r1, 0x3 - beq _080E289E - b _080E28D8 -_080E2840: - ldrh r0, [r2, 0x30] - adds r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E28D8 - strh r1, [r2, 0x30] - ldrh r0, [r2, 0x3C] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x32] - adds r0, 0x1 - strh r0, [r2, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xC - bne _080E28D8 - b _080E2896 -_080E2868: - ldrh r0, [r2, 0x30] - adds r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - bne _080E28D8 - b _080E2892 -_080E2878: - movs r0, 0x3C - ldrsh r1, [r2, r0] - lsls r1, 2 - ldrh r0, [r2, 0x24] - subs r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x30] - adds r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - bne _080E28D8 -_080E2892: - movs r0, 0 - strh r0, [r2, 0x30] -_080E2896: - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - b _080E28D8 -_080E289E: - movs r0, 0x3C - ldrsh r1, [r2, r0] - lsls r0, r1, 1 - adds r0, r1 - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x30] - adds r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - bne _080E28D8 - ldrh r0, [r2, 0x3A] - subs r0, 0x1 - strh r0, [r2, 0x3A] - lsls r0, 16 - cmp r0, 0 - beq _080E28D2 - movs r0, 0 - strh r0, [r2, 0x30] - ldrh r0, [r2, 0x2E] - subs r0, 0x1 - strh r0, [r2, 0x2E] - b _080E28D8 -_080E28D2: - adds r0, r2, 0 - bl DestroyAnimSprite -_080E28D8: - pop {r0} - bx r0 - thumb_func_end sub_80E2820 - - thumb_func_start sub_80E28DC -sub_80E28DC: @ 80E28DC - push {r4,lr} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r2, _080E28F4 @ =gBattleAnimArgs - movs r3, 0 - ldrsh r0, [r2, r3] - cmp r0, 0 - bne _080E28F8 - adds r0, r1, 0 - bl DestroyAnimVisualTask - b _080E2920 - .align 2, 0 -_080E28F4: .4byte gBattleAnimArgs -_080E28F8: - ldr r0, _080E2928 @ =gTasks - lsls r4, r1, 2 - adds r4, r1 - lsls r4, 3 - adds r4, r0 - ldrh r0, [r2, 0x2] - strh r0, [r4, 0x8] - ldrb r0, [r2] - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - strh r1, [r4, 0x26] - ldr r2, _080E292C @ =gUnknown_83FF65C - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldr r0, _080E2930 @ =sub_80E2934 - str r0, [r4] -_080E2920: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E2928: .4byte gTasks -_080E292C: .4byte gUnknown_83FF65C -_080E2930: .4byte sub_80E2934 - thumb_func_end sub_80E28DC - - thumb_func_start sub_80E2934 -sub_80E2934: @ 80E2934 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080E2974 @ =gTasks - adds r4, r0, r1 - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E298E - movs r0, 0 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xC] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080E297C - ldr r2, _080E2978 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x2 - b _080E298C - .align 2, 0 -_080E2974: .4byte gTasks -_080E2978: .4byte gSprites -_080E297C: - ldr r2, _080E29D4 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _080E29D8 @ =0x0000fffe -_080E298C: - strh r1, [r0, 0x24] -_080E298E: - adds r0, r4, 0 - bl RunAffineAnimFromTaskData - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _080E29EA - ldr r2, _080E29D4 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r5, [r0, 0x24] - ldrh r0, [r4, 0x8] - subs r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - cmp r0, 0 - beq _080E29E4 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080E29DC @ =gTasks - adds r0, r1 - ldrh r1, [r0, 0x26] - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080E29E0 @ =gUnknown_83FF65C - bl PrepareAffineAnimInTaskData - strh r5, [r4, 0xA] - strh r5, [r4, 0xC] - b _080E29EA - .align 2, 0 -_080E29D4: .4byte gSprites -_080E29D8: .4byte 0x0000fffe -_080E29DC: .4byte gTasks -_080E29E0: .4byte gUnknown_83FF65C -_080E29E4: - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080E29EA: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80E2934 - - thumb_func_start sub_80E29F0 -sub_80E29F0: @ 80E29F0 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080E2A04 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080E2A0C - ldr r4, _080E2A08 @ =gBattleAnimAttacker - b _080E2A0E - .align 2, 0 -_080E2A04: .4byte gBattleAnimArgs -_080E2A08: .4byte gBattleAnimAttacker -_080E2A0C: - ldr r4, _080E2A4C @ =gBattleAnimTarget -_080E2A0E: - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoordAttr - strh r0, [r5, 0x22] - movs r1, 0x22 - ldrsh r0, [r5, r1] - cmp r0, 0x7 - bgt _080E2A32 - movs r0, 0x8 - strh r0, [r5, 0x22] -_080E2A32: - movs r2, 0 - strh r2, [r5, 0x2E] - ldr r1, _080E2A50 @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - strh r0, [r5, 0x30] - strh r2, [r5, 0x32] - ldrh r0, [r1, 0x4] - strh r0, [r5, 0x34] - ldr r0, _080E2A54 @ =sub_80E2A58 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E2A4C: .4byte gBattleAnimTarget -_080E2A50: .4byte gBattleAnimArgs -_080E2A54: .4byte sub_80E2A58 - thumb_func_end sub_80E29F0 - - thumb_func_start sub_80E2A58 -sub_80E2A58: @ 80E2A58 - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x30 - ldrsh r1, [r3, r2] - cmp r0, r1 - blt _080E2AAC - movs r0, 0 - strh r0, [r3, 0x2E] - ldrh r1, [r3, 0x32] - adds r1, 0x1 - movs r0, 0x1 - ands r1, r0 - strh r1, [r3, 0x32] - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - lsls r1, 2 - ldrb r2, [r0] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - movs r2, 0x32 - ldrsh r0, [r3, r2] - cmp r0, 0 - beq _080E2AAC - ldrh r0, [r3, 0x34] - subs r0, 0x1 - strh r0, [r3, 0x34] - lsls r0, 16 - cmp r0, 0 - bne _080E2AAC - adds r0, r3, 0 - bl DestroyAnimSprite -_080E2AAC: - pop {r0} - bx r0 - thumb_func_end sub_80E2A58 - - thumb_func_start sub_80E2AB0 -sub_80E2AB0: @ 80E2AB0 - push {lr} - adds r3, r0, 0 - ldr r0, _080E2ADC @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080E2AE0 - ldrb r2, [r3, 0x3] - lsls r1, r2, 26 - lsrs r1, 27 - movs r0, 0x8 - orrs r1, r0 - lsls r1, 1 - subs r0, 0x47 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x3] - movs r0, 0x64 - strh r0, [r3, 0x20] - movs r0, 0x1 - b _080E2AE6 - .align 2, 0 -_080E2ADC: .4byte gBattleAnimArgs -_080E2AE0: - movs r0, 0x8C - strh r0, [r3, 0x20] - ldr r0, _080E2AF4 @ =0x0000ffff -_080E2AE6: - strh r0, [r3, 0x3C] - movs r0, 0x38 - strh r0, [r3, 0x22] - ldr r0, _080E2AF8 @ =sub_80E2AFC - str r0, [r3, 0x1C] - pop {r0} - bx r0 - .align 2, 0 -_080E2AF4: .4byte 0x0000ffff -_080E2AF8: .4byte sub_80E2AFC - thumb_func_end sub_80E2AB0 - - thumb_func_start sub_80E2AFC -sub_80E2AFC: @ 80E2AFC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x8 - bls _080E2B0A - b _080E2CDC -_080E2B0A: - lsls r0, 2 - ldr r1, _080E2B14 @ =_080E2B18 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E2B14: .4byte _080E2B18 - .align 2, 0 -_080E2B18: - .4byte _080E2B3C - .4byte _080E2B6E - .4byte _080E2B80 - .4byte _080E2BC0 - .4byte _080E2BD2 - .4byte _080E2C10 - .4byte _080E2C74 - .4byte _080E2C94 - .4byte _080E2CBA -_080E2B3C: - movs r3, 0x3C - ldrsh r0, [r4, r3] - lsls r0, 1 - ldrh r1, [r4, 0x22] - subs r1, r0 - strh r1, [r4, 0x22] - ldrh r2, [r4, 0x30] - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - beq _080E2B5E - movs r0, 0x3C - ldrsh r1, [r4, r0] - lsls r1, 1 - ldrh r0, [r4, 0x20] - subs r0, r1 - strh r0, [r4, 0x20] -_080E2B5E: - adds r0, r2, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - beq _080E2B6C - b _080E2CDC -_080E2B6C: - b _080E2CAE -_080E2B6E: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - beq _080E2B7E - b _080E2CDC -_080E2B7E: - b _080E2CAE -_080E2B80: - ldrh r2, [r4, 0x30] - adds r2, 0x1 - strh r2, [r4, 0x30] - movs r3, 0x3C - ldrsh r1, [r4, r3] - lsls r0, r1, 1 - adds r0, r1 - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r3, _080E2BBC @ =gSineTable - movs r0, 0x30 - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 19 - ldrh r1, [r4, 0x3C] - muls r0, r1 - strh r0, [r4, 0x24] - lsls r2, 16 - asrs r2, 16 - cmp r2, 0xC - beq _080E2BB8 - b _080E2CDC -_080E2BB8: - b _080E2CAE - .align 2, 0 -_080E2BBC: .4byte gSineTable -_080E2BC0: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - beq _080E2BD0 - b _080E2CDC -_080E2BD0: - b _080E2CAE -_080E2BD2: - ldrh r2, [r4, 0x30] - adds r2, 0x1 - strh r2, [r4, 0x30] - movs r1, 0x3C - ldrsh r0, [r4, r1] - lsls r1, r0, 1 - adds r1, r0 - ldrh r0, [r4, 0x22] - subs r0, r1 - strh r0, [r4, 0x22] - ldr r3, _080E2C0C @ =gSineTable - movs r0, 0x30 - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 19 - ldrh r1, [r4, 0x3C] - muls r0, r1 - strh r0, [r4, 0x24] - lsls r2, 16 - asrs r2, 16 - cmp r2, 0xC - bne _080E2CDC - b _080E2CB2 - .align 2, 0 -_080E2C0C: .4byte gSineTable -_080E2C10: - ldrh r2, [r4, 0x30] - adds r2, 0x1 - strh r2, [r4, 0x30] - movs r3, 0x3C - ldrsh r1, [r4, r3] - lsls r0, r1, 1 - adds r0, r1 - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r3, _080E2C68 @ =gSineTable - movs r0, 0x30 - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 19 - ldrh r1, [r4, 0x3C] - muls r0, r1 - strh r0, [r4, 0x24] - lsls r2, 16 - asrs r2, 16 - cmp r2, 0xF - bne _080E2C5C - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x10 - ldr r3, _080E2C6C @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080E2C70 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] -_080E2C5C: - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x12 - bne _080E2CDC - b _080E2CAE - .align 2, 0 -_080E2C68: .4byte gSineTable -_080E2C6C: .4byte 0x000003ff -_080E2C70: .4byte 0xfffffc00 -_080E2C74: - movs r3, 0x3C - ldrsh r0, [r4, r3] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 1 - ldrh r0, [r4, 0x20] - adds r1, r0 - strh r1, [r4, 0x20] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - bne _080E2CDC - b _080E2CAE -_080E2C94: - movs r1, 0x3C - ldrsh r0, [r4, r1] - lsls r0, 1 - ldrh r3, [r4, 0x20] - adds r0, r3 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080E2CDC -_080E2CAE: - movs r0, 0 - strh r0, [r4, 0x30] -_080E2CB2: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080E2CDC -_080E2CBA: - movs r1, 0x3C - ldrsh r0, [r4, r1] - lsls r1, r0, 1 - adds r1, r0 - ldrh r0, [r4, 0x20] - subs r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _080E2CDC - adds r0, r4, 0 - bl DestroyAnimSprite -_080E2CDC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80E2AFC - - thumb_func_start sub_80E2CE4 -sub_80E2CE4: @ 80E2CE4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080E2D34 @ =gTasks - adds r6, r1, r0 - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x26] - bl IsDoubleBattle - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x1 - bne _080E2D44 - ldr r5, _080E2D38 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldrb r1, [r5] - movs r0, 0x2 - eors r0, r1 - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - ble _080E2D3C - strh r7, [r6, 0x24] - b _080E2D64 - .align 2, 0 -_080E2D34: .4byte gTasks -_080E2D38: .4byte gBattleAnimAttacker -_080E2D3C: - ldr r0, _080E2D40 @ =0x0000ffff - b _080E2D62 - .align 2, 0 -_080E2D40: .4byte 0x0000ffff -_080E2D44: - ldr r0, _080E2D58 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080E2D60 - ldr r0, _080E2D5C @ =0x0000ffff - b _080E2D62 - .align 2, 0 -_080E2D58: .4byte gBattleAnimAttacker -_080E2D5C: .4byte 0x0000ffff -_080E2D60: - movs r0, 0x1 -_080E2D62: - strh r0, [r6, 0x24] -_080E2D64: - ldr r0, _080E2D70 @ =sub_80E2D74 - str r0, [r6] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E2D70: .4byte sub_80E2D74 - thumb_func_end sub_80E2CE4 - - thumb_func_start sub_80E2D74 -sub_80E2D74: @ 80E2D74 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080E2D98 @ =gTasks - adds r3, r0, r1 - movs r1, 0x8 - ldrsh r0, [r3, r1] - cmp r0, 0x8 - bls _080E2D8E - b _080E2F08 -_080E2D8E: - lsls r0, 2 - ldr r1, _080E2D9C @ =_080E2DA0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E2D98: .4byte gTasks -_080E2D9C: .4byte _080E2DA0 - .align 2, 0 -_080E2DA0: - .4byte _080E2DC4 - .4byte _080E2DD6 - .4byte _080E2E08 - .4byte _080E2E38 - .4byte _080E2E5E - .4byte _080E2E88 - .4byte _080E2E98 - .4byte _080E2EB8 - .4byte _080E2EF0 -_080E2DC4: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xD - beq _080E2DD4 - b _080E2F08 -_080E2DD4: - b _080E2EE0 -_080E2DD6: - ldr r2, _080E2E04 @ =gSprites - movs r1, 0x26 - ldrsh r0, [r3, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r2, 0x24 - ldrsh r0, [r3, r2] - lsls r2, r0, 1 - adds r2, r0 - ldrh r0, [r1, 0x24] - subs r0, r2 - strh r0, [r1, 0x24] - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - beq _080E2E02 - b _080E2F08 -_080E2E02: - b _080E2EE0 - .align 2, 0 -_080E2E04: .4byte gSprites -_080E2E08: - ldr r2, _080E2E34 @ =gSprites - movs r1, 0x26 - ldrsh r0, [r3, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0x24 - ldrsh r2, [r3, r0] - lsls r0, r2, 1 - adds r0, r2 - ldrh r2, [r1, 0x24] - adds r0, r2 - strh r0, [r1, 0x24] - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - bne _080E2F08 - b _080E2EE0 - .align 2, 0 -_080E2E34: .4byte gSprites -_080E2E38: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080E2F08 - movs r0, 0 - strh r0, [r3, 0xA] - ldrh r1, [r3, 0xC] - movs r2, 0xC - ldrsh r0, [r3, r2] - cmp r0, 0 - bne _080E2EE4 - adds r0, r1, 0x1 - strh r0, [r3, 0xC] - movs r0, 0x1 - strh r0, [r3, 0x8] - b _080E2F08 -_080E2E5E: - ldr r2, _080E2E84 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x24] - ldrh r2, [r0, 0x24] - adds r1, r2 - strh r1, [r0, 0x24] - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080E2F08 - b _080E2EE0 - .align 2, 0 -_080E2E84: .4byte gSprites -_080E2E88: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - bne _080E2F08 - b _080E2EE0 -_080E2E98: - ldr r2, _080E2EB4 @ =gSprites - movs r1, 0x26 - ldrsh r0, [r3, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0x24 - ldrsh r2, [r3, r0] - lsls r2, 2 - ldrh r0, [r1, 0x24] - subs r0, r2 - b _080E2ED0 - .align 2, 0 -_080E2EB4: .4byte gSprites -_080E2EB8: - ldr r2, _080E2EEC @ =gSprites - movs r1, 0x26 - ldrsh r0, [r3, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r2, 0x24 - ldrsh r0, [r3, r2] - lsls r0, 2 - ldrh r2, [r1, 0x24] - adds r0, r2 -_080E2ED0: - strh r0, [r1, 0x24] - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _080E2F08 -_080E2EE0: - movs r0, 0 - strh r0, [r3, 0xA] -_080E2EE4: - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] - b _080E2F08 - .align 2, 0 -_080E2EEC: .4byte gSprites -_080E2EF0: - ldr r2, _080E2F10 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x24] - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080E2F08: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E2F10: .4byte gSprites - thumb_func_end sub_80E2D74 - - thumb_func_start sub_80E2F14 -sub_80E2F14: @ 80E2F14 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080E2F30 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080E2F38 - adds r0, r4, 0 - movs r1, 0x1 - bl InitSpritePosToAnimAttacker - ldr r0, _080E2F34 @ =gBattleAnimAttacker - b _080E2F3A - .align 2, 0 -_080E2F30: .4byte gBattleAnimArgs -_080E2F34: .4byte gBattleAnimAttacker -_080E2F38: - ldr r0, _080E2F90 @ =gBattleAnimTarget -_080E2F3A: - ldrb r0, [r0] - strh r0, [r4, 0x3C] - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E2F5E - ldrb r0, [r4, 0x3] - movs r1, 0x3F - negs r1, r1 - ands r1, r0 - movs r0, 0x10 - orrs r1, r0 - strb r1, [r4, 0x3] -_080E2F5E: - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerSpriteBGPriority - movs r2, 0x3 - ands r2, r0 - lsls r2, 2 - ldrb r3, [r4, 0x5] - movs r1, 0xD - negs r1, r1 - adds r0, r1, 0 - ands r0, r3 - orrs r0, r2 - strb r0, [r4, 0x5] - ldrb r0, [r4, 0x1] - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r4, 0x1] - ldr r0, _080E2F94 @ =sub_80E2F98 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E2F90: .4byte gBattleAnimTarget -_080E2F94: .4byte sub_80E2F98 - thumb_func_end sub_80E2F14 - - thumb_func_start sub_80E2F98 -sub_80E2F98: @ 80E2F98 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bls _080E2FA6 - b _080E3196 -_080E2FA6: - lsls r0, 2 - ldr r1, _080E2FB0 @ =_080E2FB4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E2FB0: .4byte _080E2FB4 - .align 2, 0 -_080E2FB4: - .4byte _080E2FC8 - .4byte _080E30C8 - .4byte _080E3130 - .4byte _080E3144 - .4byte _080E3190 -_080E2FC8: - movs r2, 0x3A - ldrsh r0, [r4, r2] - cmp r0, 0x5 - bhi _080E2FF8 - lsls r0, 2 - ldr r1, _080E2FDC @ =_080E2FE0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E2FDC: .4byte _080E2FE0 - .align 2, 0 -_080E2FE0: - .4byte _080E2FFC - .4byte _080E3018 - .4byte _080E303A - .4byte _080E3056 - .4byte _080E2FFC - .4byte _080E307C -_080E2FF8: - movs r0, 0 - strh r0, [r4, 0x3A] -_080E2FFC: - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x5 - bl GetBattlerSpriteCoordAttr - subs r0, 0x4 - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x3 - b _080E3070 -_080E3018: - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x5 - bl GetBattlerSpriteCoordAttr - subs r0, 0x4 - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl GetBattlerSpriteCoordAttr - adds r0, 0x4 - b _080E3076 -_080E303A: - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x4 - bl GetBattlerSpriteCoordAttr - adds r0, 0x4 - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x3 - b _080E3070 -_080E3056: - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x4 - bl GetBattlerSpriteCoordAttr - adds r0, 0x4 - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 -_080E3070: - bl GetBattlerSpriteCoordAttr - subs r0, 0x4 -_080E3076: - lsls r0, 16 - lsrs r1, r0, 16 - b _080E309C -_080E307C: - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r5, r0, 24 - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r1, r0, 24 -_080E309C: - movs r2, 0x3A - ldrsh r0, [r4, r2] - cmp r0, 0x4 - bne _080E30A8 - movs r0, 0x18 - b _080E30B2 -_080E30A8: - cmp r0, 0x5 - bne _080E30B0 - movs r0, 0x6 - b _080E30B2 -_080E30B0: - movs r0, 0xC -_080E30B2: - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - strh r5, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - strh r1, [r4, 0x36] - adds r0, r4, 0 - bl InitAnimLinearTranslation - b _080E3188 -_080E30C8: - adds r0, r4, 0 - bl AnimTranslateLinear - lsls r0, 24 - cmp r0, 0 - beq _080E3196 - movs r1, 0x3A - ldrsh r0, [r4, r1] - cmp r0, 0x4 - beq _080E3100 - cmp r0, 0x5 - beq _080E3120 - ldrh r0, [r4, 0x24] - ldrh r2, [r4, 0x20] - adds r0, r2 - 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, 0x26] - strh r1, [r4, 0x24] - strh r1, [r4, 0x2E] - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - b _080E3118 -_080E3100: - 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, 0x26] - strh r1, [r4, 0x24] - strh r1, [r4, 0x38] -_080E3118: - ldrh r0, [r4, 0x3A] - adds r0, 0x1 - strh r0, [r4, 0x3A] - b _080E3196 -_080E3120: - movs r0, 0 - strh r0, [r4, 0x2E] - movs r1, 0x10 - strh r1, [r4, 0x30] - strh r0, [r4, 0x32] - movs r0, 0x3 - strh r0, [r4, 0x38] - b _080E3196 -_080E3130: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080E3196 - movs r0, 0 - strh r0, [r4, 0x38] - b _080E3196 -_080E3144: - ldrh r1, [r4, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080E3156 - ldrh r0, [r4, 0x30] - subs r0, 0x1 - strh r0, [r4, 0x30] - b _080E315C -_080E3156: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] -_080E315C: - ldrh r1, [r4, 0x32] - lsls r1, 8 - ldrh r0, [r4, 0x30] - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x20 - bne _080E3196 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_080E3188: - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - b _080E3196 -_080E3190: - adds r0, r4, 0 - bl DestroyAnimSprite -_080E3196: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80E2F98 - - thumb_func_start sub_80E319C -sub_80E319C: @ 80E319C - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x32 - ldrsh r0, [r4, r1] - movs r2, 0x2E - ldrsh r1, [r4, r2] - subs r0, r1 - movs r2, 0x38 - ldrsh r1, [r4, r2] - muls r0, r1 - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl __divsi3 - adds r5, r0, 0 - strh r5, [r4, 0x24] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r2, 0x30 - ldrsh r1, [r4, r2] - subs r0, r1 - movs r2, 0x38 - ldrsh r1, [r4, r2] - muls r0, r1 - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl __divsi3 - adds r3, r0, 0 - strh r3, [r4, 0x26] - ldrh r1, [r4, 0x38] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080E31FA - ldr r0, _080E3218 @ =gUnknown_83FF180 - ldrh r1, [r4, 0x20] - adds r1, r5 - lsls r1, 16 - asrs r1, 16 - ldrh r2, [r4, 0x22] - adds r2, r3 - lsls r2, 16 - asrs r2, 16 - movs r3, 0x5 - bl CreateSprite -_080E31FA: - movs r0, 0x38 - ldrsh r1, [r4, r0] - movs r2, 0x36 - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _080E320C - adds r0, r4, 0 - bl DestroyAnimSprite -_080E320C: - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E3218: .4byte gUnknown_83FF180 - thumb_func_end sub_80E319C - - thumb_func_start sub_80E321C -sub_80E321C: @ 80E321C - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080E3250 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080E3258 - ldr r2, _080E3254 @ =gBattleAnimArgs - ldrh r1, [r5, 0x20] - ldrh r0, [r2] - subs r0, r1, r0 - strh r0, [r5, 0x2E] - ldrh r0, [r2, 0x4] - subs r1, r0 - b _080E3266 - .align 2, 0 -_080E3250: .4byte gBattleAnimTarget -_080E3254: .4byte gBattleAnimArgs -_080E3258: - ldr r2, _080E328C @ =gBattleAnimArgs - ldrh r1, [r5, 0x20] - ldrh r0, [r2] - adds r0, r1, r0 - strh r0, [r5, 0x2E] - ldrh r0, [r2, 0x4] - adds r1, r0 -_080E3266: - strh r1, [r5, 0x32] - adds r3, r2, 0 - ldrh r1, [r5, 0x22] - ldrh r2, [r3, 0x2] - adds r2, r1, r2 - strh r2, [r5, 0x30] - ldrh r0, [r3, 0x6] - adds r1, r0 - strh r1, [r5, 0x34] - ldrh r0, [r3, 0x8] - strh r0, [r5, 0x36] - ldrh r0, [r5, 0x2E] - strh r0, [r5, 0x20] - strh r2, [r5, 0x22] - ldr r0, _080E3290 @ =sub_80E319C - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E328C: .4byte gBattleAnimArgs -_080E3290: .4byte sub_80E319C - thumb_func_end sub_80E321C - - thumb_func_start sub_80E3294 -sub_80E3294: @ 80E3294 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r6, r0, 24 - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r5, r0, 24 - adds r2, r5, 0 - ldr r0, _080E32D8 @ =gTasks - mov r9, r0 - lsls r7, r6, 2 - adds r0, r7, r6 - lsls r0, 3 - mov r8, r0 - mov r4, r8 - add r4, r9 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080E32DC - adds r0, r5, 0 - movs r1, 0 - bl PrepareBattlerSpriteForRotScale - movs r0, 0x80 - lsls r0, 1 - strh r0, [r4, 0xA] - strh r0, [r4, 0xC] - b _080E3328 - .align 2, 0 -_080E32D8: .4byte gTasks -_080E32DC: - cmp r0, 0x1 - bne _080E3334 - ldrh r0, [r4, 0xA] - adds r0, 0x60 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xC] - subs r0, 0xD - strh r0, [r4, 0xC] - movs r2, 0xA - ldrsh r1, [r4, r2] - movs r0, 0xC - ldrsh r2, [r4, r0] - adds r0, r5, 0 - movs r3, 0 - bl SetSpriteRotScale - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - bne _080E3360 - movs r0, 0 - strh r0, [r4, 0xE] - adds r0, r5, 0 - bl ResetSpriteRotScale - ldr r1, _080E3330 @ =gSprites - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080E3328: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E3360 - .align 2, 0 -_080E3330: .4byte gSprites -_080E3334: - ldr r0, _080E336C @ =gBattleAnimAttacker - ldrb r0, [r0] - movs r1, 0 - bl LoadBattleMonGfxAndAnimate - adds r3, r7, 0 - mov r4, r9 - movs r1, 0xF - mov r2, r8 - adds r0, r4, r2 - adds r0, 0x26 - movs r2, 0 -_080E334C: - strh r2, [r0] - subs r0, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _080E334C - adds r0, r3, r6 - lsls r0, 3 - adds r0, r4 - ldr r1, _080E3370 @ =sub_80E3374 - str r1, [r0] -_080E3360: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E336C: .4byte gBattleAnimAttacker -_080E3370: .4byte sub_80E3374 - thumb_func_end sub_80E3294 - - thumb_func_start sub_80E3374 -sub_80E3374: @ 80E3374 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _080E33A0 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r5, [r4, r0] - cmp r5, 0x1 - beq _080E33D8 - cmp r5, 0x1 - bgt _080E33A4 - cmp r5, 0 - beq _080E33AE - b _080E34C6 - .align 2, 0 -_080E33A0: .4byte gTasks -_080E33A4: - cmp r5, 0x2 - beq _080E3444 - cmp r5, 0x3 - beq _080E3480 - b _080E34C6 -_080E33AE: - ldr r0, _080E33D0 @ =gSprites - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - adds r1, r0 - ldr r0, _080E33D4 @ =0x0000ff38 - strh r0, [r1, 0x26] - movs r0, 0xC8 - strh r0, [r1, 0x24] - adds r1, 0x3E - ldrb r2, [r1] - subs r0, 0xCD - ands r0, r2 - strb r0, [r1] - strh r5, [r4, 0x1C] - b _080E3472 - .align 2, 0 -_080E33D0: .4byte gSprites -_080E33D4: .4byte 0x0000ff38 -_080E33D8: - ldrh r1, [r4, 0x1C] - adds r1, 0x70 - movs r5, 0 - strh r1, [r4, 0x1C] - ldr r2, _080E343C @ =gSprites - lsls r0, r3, 4 - adds r0, r3 - lsls r0, 2 - adds r2, r0, r2 - lsls r1, 16 - asrs r1, 24 - ldrh r3, [r2, 0x26] - adds r1, r3 - strh r1, [r2, 0x26] - movs r1, 0x22 - ldrsh r0, [r2, r1] - movs r3, 0x26 - ldrsh r1, [r2, r3] - adds r0, r1 - movs r1, 0x20 - negs r1, r1 - cmp r0, r1 - blt _080E3408 - strh r5, [r2, 0x24] -_080E3408: - movs r1, 0x26 - ldrsh r0, [r2, r1] - cmp r0, 0 - ble _080E3412 - strh r5, [r2, 0x26] -_080E3412: - movs r3, 0x26 - ldrsh r0, [r2, r3] - cmp r0, 0 - bne _080E34C6 - movs r0, 0x40 - negs r0, r0 - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x76 - bl PlaySE12WithPanning - ldr r1, _080E3440 @ =0xfffff800 - adds r0, r1, 0 - ldrh r2, [r4, 0x1C] - adds r0, r2 - strh r0, [r4, 0x1C] - b _080E3472 - .align 2, 0 -_080E343C: .4byte gSprites -_080E3440: .4byte 0xfffff800 -_080E3444: - ldrh r0, [r4, 0x1C] - subs r0, 0x70 - strh r0, [r4, 0x1C] - lsls r0, 16 - cmp r0, 0 - bge _080E3454 - movs r0, 0 - strh r0, [r4, 0x1C] -_080E3454: - ldr r0, _080E347C @ =gSprites - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - adds r1, r0 - ldrh r2, [r4, 0x1C] - lsls r2, 16 - asrs r2, 24 - ldrh r0, [r1, 0x26] - subs r0, r2 - strh r0, [r1, 0x26] - movs r3, 0x1C - ldrsh r0, [r4, r3] - cmp r0, 0 - bne _080E34C6 -_080E3472: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E34C6 - .align 2, 0 -_080E347C: .4byte gSprites -_080E3480: - ldrh r0, [r4, 0x1C] - adds r0, 0x70 - strh r0, [r4, 0x1C] - ldr r2, _080E34CC @ =gSprites - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - adds r1, r2 - lsls r0, 16 - asrs r0, 24 - ldrh r2, [r1, 0x26] - adds r0, r2 - strh r0, [r1, 0x26] - lsls r0, 16 - cmp r0, 0 - ble _080E34A4 - movs r0, 0 - strh r0, [r1, 0x26] -_080E34A4: - movs r3, 0x26 - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _080E34C6 - movs r0, 0x40 - negs r0, r0 - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x76 - bl PlaySE12WithPanning - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080E34C6: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E34CC: .4byte gSprites - thumb_func_end sub_80E3374 - - thumb_func_start sub_80E34D0 -sub_80E34D0: @ 80E34D0 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080E34F4 @ =gBattleAnimTarget - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080E34FC - ldrb r0, [r4] - bl GetBattlerSpriteSubpriority - subs r0, 0x2 - adds r1, r5, 0 - adds r1, 0x43 - strb r0, [r1] - ldr r4, _080E34F8 @ =0x0000ff70 - b _080E350C - .align 2, 0 -_080E34F4: .4byte gBattleAnimTarget -_080E34F8: .4byte 0x0000ff70 -_080E34FC: - ldrb r0, [r4] - bl GetBattlerSpriteSubpriority - adds r0, 0x2 - adds r1, r5, 0 - adds r1, 0x43 - strb r0, [r1] - ldr r4, _080E3528 @ =0x0000ffa0 -_080E350C: - ldr r0, _080E352C @ =gBattleAnimTarget - ldrb r0, [r0] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - strh r4, [r5, 0x26] - ldr r0, _080E3530 @ =sub_80E3534 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E3528: .4byte 0x0000ffa0 -_080E352C: .4byte gBattleAnimTarget -_080E3530: .4byte sub_80E3534 - thumb_func_end sub_80E34D0 - - thumb_func_start sub_80E3534 -sub_80E3534: @ 80E3534 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bls _080E3542 - b _080E365E -_080E3542: - lsls r0, 2 - ldr r1, _080E354C @ =_080E3550 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E354C: .4byte _080E3550 - .align 2, 0 -_080E3550: - .4byte _080E3564 - .4byte _080E3588 - .4byte _080E35C8 - .4byte _080E35F8 - .4byte _080E3624 -_080E3564: - ldrh r0, [r4, 0x26] - adds r0, 0xA - strh r0, [r4, 0x26] - lsls r0, 16 - cmp r0, 0 - blt _080E365E - movs r0, 0x3F - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xC6 - bl PlaySE12WithPanning - movs r0, 0 - strh r0, [r4, 0x26] - b _080E361C -_080E3588: - ldrh r1, [r4, 0x30] - adds r1, 0x4 - movs r5, 0 - strh r1, [r4, 0x30] - ldr r2, _080E35C4 @ =gSineTable - movs r3, 0x30 - ldrsh r0, [r4, r3] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 19 - negs r0, r0 - strh r0, [r4, 0x26] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7F - ble _080E365E - movs r0, 0x3F - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xC6 - bl PlaySE12WithPanning - strh r5, [r4, 0x30] - strh r5, [r4, 0x26] - b _080E361C - .align 2, 0 -_080E35C4: .4byte gSineTable -_080E35C8: - ldrh r1, [r4, 0x30] - adds r1, 0x6 - movs r3, 0 - strh r1, [r4, 0x30] - ldr r2, _080E35F4 @ =gSineTable - movs r5, 0x30 - ldrsh r0, [r4, r5] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 20 - negs r0, r0 - strh r0, [r4, 0x26] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7F - ble _080E365E - strh r3, [r4, 0x30] - strh r3, [r4, 0x26] - b _080E361C - .align 2, 0 -_080E35F4: .4byte gSineTable -_080E35F8: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _080E365E - movs r0, 0x3F - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xB9 - bl PlaySE12WithPanning - movs r0, 0 - strh r0, [r4, 0x30] -_080E361C: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080E365E -_080E3624: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _080E365E - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x32] - adds r1, 0x1 - strh r1, [r4, 0x32] - movs r0, 0x1 - ands r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - lsls r1, 2 - ldrb r2, [r3] - subs r0, 0x6 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0x7 - bne _080E365E - adds r0, r4, 0 - bl DestroyAnimSprite -_080E365E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80E3534 - - thumb_func_start sub_80E3664 -sub_80E3664: @ 80E3664 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r7, r0, 24 - movs r0, 0x1 - bl CloneBattlerSpriteWithBlend - lsls r0, 16 - lsrs r1, r0, 16 - str r1, [sp] - asrs r6, r0, 16 - cmp r6, 0 - blt _080E36A6 - movs r0, 0x1 - bl CloneBattlerSpriteWithBlend - lsls r0, 16 - lsrs r1, r0, 16 - mov r9, r1 - asrs r1, r0, 16 - cmp r1, 0 - bge _080E36B4 - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - ldr r1, _080E36B0 @ =gSprites - adds r0, r1 - bl obj_delete_but_dont_free_vram -_080E36A6: - adds r0, r7, 0 - bl DestroyAnimVisualTask - b _080E37BA - .align 2, 0 -_080E36B0: .4byte gSprites -_080E36B4: - ldr r4, _080E3744 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r5, r0, r4 - ldrh r0, [r5, 0x24] - adds r0, 0x18 - movs r1, 0 - strh r0, [r5, 0x24] - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r6, r0, r4 - ldrh r0, [r6, 0x24] - subs r0, 0x18 - strh r0, [r6, 0x24] - strh r1, [r5, 0x2E] - strh r1, [r6, 0x2E] - strh r1, [r5, 0x30] - strh r1, [r6, 0x30] - strh r1, [r5, 0x32] - strh r1, [r6, 0x32] - movs r0, 0x10 - strh r0, [r5, 0x34] - ldr r0, _080E3748 @ =0x0000fff0 - strh r0, [r6, 0x34] - strh r1, [r5, 0x36] - movs r0, 0x80 - strh r0, [r6, 0x36] - movs r0, 0x18 - strh r0, [r5, 0x38] - strh r0, [r6, 0x38] - strh r7, [r5, 0x3A] - strh r7, [r6, 0x3A] - strh r1, [r5, 0x3C] - strh r1, [r6, 0x3C] - ldr r2, _080E374C @ =gTasks - lsls r3, r7, 2 - adds r0, r3, r7 - lsls r0, 3 - adds r0, r2 - movs r1, 0x2 - strh r1, [r0, 0x8] - ldr r0, _080E3750 @ =gBattleSpritesDataPtr - ldr r1, [r0] - ldr r0, _080E3754 @ =gBattleAnimTarget - ldrb r0, [r0] - ldr r1, [r1] - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - mov r12, r4 - mov r10, r2 - mov r8, r3 - cmp r0, 0 - bne _080E3758 - adds r2, r5, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r2, r6, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - b _080E376E - .align 2, 0 -_080E3744: .4byte gSprites -_080E3748: .4byte 0x0000fff0 -_080E374C: .4byte gTasks -_080E3750: .4byte gBattleSpritesDataPtr -_080E3754: .4byte gBattleAnimTarget -_080E3758: - adds r1, r5, 0 - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - adds r1, r6, 0 - adds r1, 0x3E - ldrb r0, [r1] - orrs r0, r2 - strb r0, [r1] -_080E376E: - mov r1, r9 - lsls r0, r1, 16 - asrs r0, 16 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - mov r0, r12 - adds r4, r2, r0 - ldrb r1, [r4, 0x1] - movs r3, 0xD - negs r3, r3 - adds r0, r3, 0 - ands r0, r1 - strb r0, [r4, 0x1] - ldr r1, [sp] - lsls r0, r1, 16 - asrs r0, 16 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - mov r0, r12 - adds r4, r1, r0 - ldrb r0, [r4, 0x1] - ands r3, r0 - strb r3, [r4, 0x1] - mov r3, r12 - adds r3, 0x1C - adds r2, r3 - ldr r0, _080E37CC @ =sub_80E37FC - str r0, [r2] - adds r1, r3 - str r0, [r1] - mov r1, r8 - adds r0, r1, r7 - lsls r0, 3 - add r0, r10 - ldr r1, _080E37D0 @ =sub_80E37D4 - str r1, [r0] -_080E37BA: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E37CC: .4byte sub_80E37FC -_080E37D0: .4byte sub_80E37D4 - thumb_func_end sub_80E3664 - - thumb_func_start sub_80E37D4 -sub_80E37D4: @ 80E37D4 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080E37F8 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - movs r1, 0x8 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080E37F2 - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080E37F2: - pop {r0} - bx r0 - .align 2, 0 -_080E37F8: .4byte gTasks - thumb_func_end sub_80E37D4 - - thumb_func_start sub_80E37FC -sub_80E37FC: @ 80E37FC - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E3846 - movs r0, 0 - strh r0, [r4, 0x30] - ldr r0, _080E3870 @ =gBattleSpritesDataPtr - ldr r1, [r0] - ldr r0, _080E3874 @ =gBattleAnimTarget - ldrb r0, [r0] - ldr r1, [r1] - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080E3846 - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsls r1, r2, 29 - lsrs r1, 31 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080E3846: - ldrh r0, [r4, 0x34] - ldrh r1, [r4, 0x36] - adds r0, r1 - movs r5, 0 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x36] - movs r2, 0x36 - ldrsh r0, [r4, r2] - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080E3878 - cmp r0, 0x1 - beq _080E3890 - b _080E38CE - .align 2, 0 -_080E3870: .4byte gBattleSpritesDataPtr -_080E3874: .4byte gBattleAnimTarget -_080E3878: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3C - bne _080E38CE - strh r5, [r4, 0x32] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080E38CE -_080E3890: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - cmp r0, 0 - ble _080E38CE - strh r5, [r4, 0x32] - ldrh r0, [r4, 0x38] - subs r0, 0x2 - strh r0, [r4, 0x38] - lsls r0, 16 - cmp r0, 0 - bge _080E38CE - ldr r3, _080E38D4 @ =gTasks - movs r2, 0x3C - ldrsh r1, [r4, r2] - lsls r1, 1 - movs r0, 0x3A - ldrsh r2, [r4, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r3, 0x8 - adds r1, r3 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - adds r0, r4, 0 - bl obj_delete_but_dont_free_vram -_080E38CE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E38D4: .4byte gTasks - thumb_func_end sub_80E37FC - - thumb_func_start sub_80E38D8 -sub_80E38D8: @ 80E38D8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r3, _080E3924 @ =gBattleAnimArgs - movs r2, 0 - strh r2, [r3, 0xE] - ldr r1, _080E3928 @ =gAnimFriendship - ldrb r0, [r1] - ldrb r1, [r1] - adds r0, r1, 0 - subs r0, 0x3D - lsls r0, 24 - lsrs r0, 24 - adds r2, r1, 0 - cmp r0, 0x1E - bhi _080E38FC - movs r0, 0x1 - strh r0, [r3, 0xE] -_080E38FC: - adds r0, r2, 0 - subs r0, 0x5C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6C - bhi _080E390C - movs r0, 0x2 - strh r0, [r3, 0xE] -_080E390C: - lsls r0, r1, 24 - lsrs r0, 24 - cmp r0, 0xC8 - bls _080E3918 - movs r0, 0x3 - strh r0, [r3, 0xE] -_080E3918: - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E3924: .4byte gBattleAnimArgs -_080E3928: .4byte gAnimFriendship - thumb_func_end sub_80E38D8 - - thumb_func_start sub_80E392C -sub_80E392C: @ 80E392C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _080E395C @ =gTasks - lsls r0, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - movs r1, 0x8 - ldrsh r0, [r0, r1] - cmp r0, 0x4 - bls _080E3952 - b _080E3E6C -_080E3952: - lsls r0, 2 - ldr r1, _080E3960 @ =_080E3964 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E395C: .4byte gTasks -_080E3960: .4byte _080E3964 - .align 2, 0 -_080E3964: - .4byte _080E3978 - .4byte _080E3A2C - .4byte _080E3BEC - .4byte _080E3D0C - .4byte _080E3D90 -_080E3978: - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _080E39C4 @ =gTasks - mov r2, r8 - lsls r4, r2, 2 - adds r0, r4, r2 - lsls r0, 3 - adds r6, r0, r1 - movs r3, 0x80 - lsls r3, 4 - adds r0, r3, 0 - ldrh r1, [r6, 0xA] - adds r0, r1 - strh r0, [r6, 0xA] - ldr r0, _080E39C8 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - mov r9, r4 - cmp r0, 0 - bne _080E39D0 - ldr r2, _080E39CC @ =gSprites - lsls r3, r7, 4 - adds r1, r3, r7 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r6, 0xA] - lsls r0, 16 - asrs r0, 24 - ldrh r4, [r1, 0x24] - adds r0, r4 - strh r0, [r1, 0x24] - b _080E39EA - .align 2, 0 -_080E39C4: .4byte gTasks -_080E39C8: .4byte gBattleAnimAttacker -_080E39CC: .4byte gSprites -_080E39D0: - ldr r3, _080E3A24 @ =gSprites - lsls r4, r7, 4 - adds r2, r4, r7 - lsls r2, 2 - adds r2, r3 - ldrh r1, [r6, 0xA] - lsls r1, 16 - asrs r1, 24 - ldrh r0, [r2, 0x24] - subs r0, r1 - strh r0, [r2, 0x24] - adds r2, r3, 0 - adds r3, r4, 0 -_080E39EA: - ldr r1, _080E3A28 @ =gTasks - mov r0, r9 - add r0, r8 - lsls r0, 3 - adds r4, r0, r1 - ldrb r0, [r4, 0xA] - strh r0, [r4, 0xA] - adds r1, r3, r7 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r1, 0x24] - ldrh r1, [r1, 0x20] - adds r0, r1 - lsls r0, 16 - movs r1, 0x80 - lsls r1, 14 - adds r0, r1 - movs r1, 0x98 - lsls r1, 17 - cmp r0, r1 - bhi _080E3A16 - b _080E3E6C -_080E3A16: - movs r0, 0 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E3E6C - .align 2, 0 -_080E3A24: .4byte gSprites -_080E3A28: .4byte gTasks -_080E3A2C: - ldr r4, _080E3A90 @ =gBattleAnimAttacker - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080E3ACC - ldr r7, _080E3A94 @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - movs r6, 0x64 - muls r0, r6 - ldr r5, _080E3A98 @ =gPlayerParty - adds r0, r5 - movs r1, 0 - bl GetMonData - mov r10, r0 - ldrb r0, [r4] - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - muls r0, r6 - adds r0, r5 - movs r1, 0x1 - bl GetMonData - mov r9, r0 - ldr r0, _080E3A9C @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldrb r2, [r4] - ldr r1, [r0] - lsls r0, r2, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _080E3AA0 - lsls r0, r2, 1 - adds r0, r7 - ldrh r0, [r0] - muls r0, r6 - adds r0, r5 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - b _080E3AA2 - .align 2, 0 -_080E3A90: .4byte gBattleAnimAttacker -_080E3A94: .4byte gBattlerPartyIndexes -_080E3A98: .4byte gPlayerParty -_080E3A9C: .4byte gBattleSpritesDataPtr -_080E3AA0: - ldrh r5, [r1, 0x2] -_080E3AA2: - movs r0, 0x1 - bl GetAnimBattlerSpriteId - ldr r2, _080E3AC8 @ =gSprites - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r1, 0x43 - ldrb r0, [r1] - adds r0, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - movs r7, 0 - movs r6, 0x88 - lsls r6, 1 - b _080E3B54 - .align 2, 0 -_080E3AC8: .4byte gSprites -_080E3ACC: - ldr r7, _080E3B24 @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - movs r6, 0x64 - muls r0, r6 - ldr r5, _080E3B28 @ =gEnemyParty - adds r0, r5 - movs r1, 0 - bl GetMonData - mov r10, r0 - ldrb r0, [r4] - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - muls r0, r6 - adds r0, r5 - movs r1, 0x1 - bl GetMonData - mov r9, r0 - ldr r0, _080E3B2C @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldrb r2, [r4] - ldr r1, [r0] - lsls r0, r2, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _080E3B30 - lsls r0, r2, 1 - adds r0, r7 - ldrh r0, [r0] - muls r0, r6 - adds r0, r5 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - b _080E3B32 - .align 2, 0 -_080E3B24: .4byte gBattlerPartyIndexes -_080E3B28: .4byte gEnemyParty -_080E3B2C: .4byte gBattleSpritesDataPtr -_080E3B30: - ldrh r5, [r1, 0x2] -_080E3B32: - movs r0, 0x1 - bl GetAnimBattlerSpriteId - ldr r2, _080E3BD0 @ =gSprites - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r1, 0x43 - ldrb r0, [r1] - subs r0, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - movs r7, 0x1 - ldr r6, _080E3BD4 @ =0x0000ffe0 -_080E3B54: - ldr r0, _080E3BD8 @ =gBattleAnimTarget - ldrb r0, [r0] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - lsls r3, r6, 16 - asrs r3, 16 - str r0, [sp] - str r4, [sp, 0x4] - mov r2, r10 - str r2, [sp, 0x8] - mov r4, r9 - str r4, [sp, 0xC] - ldr r4, _080E3BDC @ =gBattleAnimAttacker - ldrb r0, [r4] - str r0, [sp, 0x10] - movs r0, 0 - str r0, [sp, 0x14] - adds r0, r5, 0 - adds r1, r7, 0 - movs r2, 0 - bl sub_80768D0 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080E3BE0 @ =gBattleSpritesDataPtr - ldr r1, [r0] - ldrb r0, [r4] - ldr r1, [r1] - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x2] - cmp r0, 0 - beq _080E3BBE - ldr r1, _080E3BD0 @ =gSprites - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x5] - lsrs r0, 4 - lsls r0, 4 - movs r2, 0x80 - lsls r2, 1 - adds r1, r2, 0 - orrs r0, r1 - ldr r3, _080E3BE4 @ =0x00007fff - movs r1, 0x10 - movs r2, 0x6 - bl BlendPalette -_080E3BBE: - ldr r0, _080E3BE8 @ =gTasks - mov r3, r8 - lsls r1, r3, 2 - add r1, r8 - lsls r1, 3 - adds r1, r0 - strh r5, [r1, 0x26] - b _080E3D82 - .align 2, 0 -_080E3BD0: .4byte gSprites -_080E3BD4: .4byte 0x0000ffe0 -_080E3BD8: .4byte gBattleAnimTarget -_080E3BDC: .4byte gBattleAnimAttacker -_080E3BE0: .4byte gBattleSpritesDataPtr -_080E3BE4: .4byte 0x00007fff -_080E3BE8: .4byte gTasks -_080E3BEC: - ldr r1, _080E3C38 @ =gTasks - mov r0, r8 - lsls r4, r0, 2 - adds r0, r4, r0 - lsls r0, 3 - adds r6, r0, r1 - ldrh r0, [r6, 0x26] - lsls r0, 24 - lsrs r5, r0, 24 - movs r1, 0x80 - lsls r1, 4 - adds r0, r1, 0 - ldrh r2, [r6, 0xA] - adds r0, r2 - strh r0, [r6, 0xA] - ldr r0, _080E3C3C @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - mov r9, r4 - cmp r0, 0 - bne _080E3C44 - ldr r3, _080E3C40 @ =gSprites - lsls r4, r5, 4 - adds r2, r4, r5 - lsls r2, 2 - adds r2, r3 - ldrh r1, [r6, 0xA] - lsls r1, 16 - asrs r1, 24 - ldrh r0, [r2, 0x24] - subs r0, r1 - strh r0, [r2, 0x24] - adds r2, r3, 0 - adds r3, r4, 0 - b _080E3C5A - .align 2, 0 -_080E3C38: .4byte gTasks -_080E3C3C: .4byte gBattleAnimAttacker -_080E3C40: .4byte gSprites -_080E3C44: - ldr r2, _080E3CA8 @ =gSprites - lsls r3, r5, 4 - adds r1, r3, r5 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r6, 0xA] - lsls r0, 16 - asrs r0, 24 - ldrh r4, [r1, 0x24] - adds r0, r4 - strh r0, [r1, 0x24] -_080E3C5A: - ldr r1, _080E3CAC @ =gTasks - mov r0, r9 - add r0, r8 - lsls r0, 3 - adds r6, r0, r1 - ldrb r0, [r6, 0xA] - strh r0, [r6, 0xA] - adds r1, r3, r5 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r1, 0x24] - ldrh r1, [r1, 0x20] - adds r0, r1 - lsls r0, 16 - lsrs r5, r0, 16 - movs r1, 0x24 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080E3CDA - ldr r0, _080E3CB0 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080E3CB8 - lsls r4, r5, 16 - asrs r4, 16 - ldr r0, _080E3CB4 @ =gBattleAnimTarget - ldrb r0, [r0] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bge _080E3CDA - b _080E3CCE - .align 2, 0 -_080E3CA8: .4byte gSprites -_080E3CAC: .4byte gTasks -_080E3CB0: .4byte gBattleAnimAttacker -_080E3CB4: .4byte gBattleAnimTarget -_080E3CB8: - lsls r4, r5, 16 - asrs r4, 16 - ldr r0, _080E3CFC @ =gBattleAnimTarget - ldrb r0, [r0] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - ble _080E3CDA -_080E3CCE: - ldrh r0, [r6, 0x24] - adds r0, 0x1 - strh r0, [r6, 0x24] - ldr r1, _080E3D00 @ =gBattleAnimArgs - ldr r0, _080E3D04 @ =0x0000ffff - strh r0, [r1, 0xE] -_080E3CDA: - lsls r0, r5, 16 - movs r2, 0x80 - lsls r2, 14 - adds r0, r2 - movs r1, 0x98 - lsls r1, 17 - cmp r0, r1 - bhi _080E3CEC - b _080E3E6C -_080E3CEC: - ldr r0, _080E3D08 @ =gTasks - mov r1, r9 - add r1, r8 - lsls r1, 3 - adds r1, r0 - movs r0, 0 - strh r0, [r1, 0xA] - b _080E3D82 - .align 2, 0 -_080E3CFC: .4byte gBattleAnimTarget -_080E3D00: .4byte gBattleAnimArgs -_080E3D04: .4byte 0x0000ffff -_080E3D08: .4byte gTasks -_080E3D0C: - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _080E3D58 @ =gTasks - mov r3, r8 - lsls r4, r3, 2 - adds r0, r4, r3 - lsls r0, 3 - adds r0, r1 - ldrh r0, [r0, 0x26] - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - ldr r5, _080E3D5C @ =gSprites - adds r0, r5 - bl DestroySpriteAndFreeResources_ - ldr r0, _080E3D60 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - mov r9, r4 - cmp r0, 0 - bne _080E3D64 - lsls r1, r7, 4 - adds r1, r7 - lsls r1, 2 - adds r1, r5 - ldrh r0, [r1, 0x20] - negs r0, r0 - subs r0, 0x20 - strh r0, [r1, 0x24] - b _080E3D78 - .align 2, 0 -_080E3D58: .4byte gTasks -_080E3D5C: .4byte gSprites -_080E3D60: .4byte gBattleAnimAttacker -_080E3D64: - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - adds r0, r5 - ldrh r2, [r0, 0x20] - movs r4, 0x88 - lsls r4, 1 - adds r1, r4, 0 - subs r1, r2 - strh r1, [r0, 0x24] -_080E3D78: - ldr r0, _080E3D8C @ =gTasks - mov r1, r9 - add r1, r8 - lsls r1, 3 - adds r1, r0 -_080E3D82: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _080E3E6C - .align 2, 0 -_080E3D8C: .4byte gTasks -_080E3D90: - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _080E3E04 @ =gTasks - mov r0, r8 - lsls r4, r0, 2 - adds r0, r4, r0 - lsls r0, 3 - adds r2, r0, r1 - movs r1, 0x80 - lsls r1, 4 - adds r0, r1, 0 - ldrh r3, [r2, 0xA] - adds r0, r3 - strh r0, [r2, 0xA] - ldr r0, _080E3E08 @ =gBattleAnimAttacker - mov r10, r0 - ldrb r0, [r0] - str r2, [sp, 0x18] - bl GetBattlerSide - lsls r0, 24 - mov r9, r4 - ldr r2, [sp, 0x18] - cmp r0, 0 - bne _080E3E10 - ldr r1, _080E3E0C @ =gSprites - lsls r5, r7, 4 - adds r0, r5, r7 - lsls r0, 2 - adds r6, r0, r1 - ldrh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 24 - ldrh r1, [r6, 0x24] - adds r0, r1 - strh r0, [r6, 0x24] - movs r2, 0x24 - ldrsh r4, [r6, r2] - movs r3, 0x20 - ldrsh r0, [r6, r3] - adds r4, r0 - mov r1, r10 - ldrb r0, [r1] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r3, r5, 0 - cmp r4, r0 - blt _080E3E48 - movs r2, 0 - strh r2, [r6, 0x24] - b _080E3E48 - .align 2, 0 -_080E3E04: .4byte gTasks -_080E3E08: .4byte gBattleAnimAttacker -_080E3E0C: .4byte gSprites -_080E3E10: - ldr r1, _080E3E7C @ =gSprites - lsls r5, r7, 4 - adds r0, r5, r7 - lsls r0, 2 - adds r6, r0, r1 - ldrh r1, [r2, 0xA] - lsls r1, 16 - asrs r1, 24 - ldrh r0, [r6, 0x24] - subs r0, r1 - strh r0, [r6, 0x24] - movs r3, 0x24 - ldrsh r4, [r6, r3] - movs r1, 0x20 - ldrsh r0, [r6, r1] - adds r4, r0 - mov r2, r10 - ldrb r0, [r2] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r3, r5, 0 - cmp r4, r0 - bgt _080E3E48 - movs r4, 0 - strh r4, [r6, 0x24] -_080E3E48: - ldr r1, _080E3E80 @ =gTasks - mov r0, r9 - add r0, r8 - lsls r0, 3 - adds r0, r1 - ldrb r1, [r0, 0xA] - strh r1, [r0, 0xA] - ldr r1, _080E3E7C @ =gSprites - adds r0, r3, r7 - lsls r0, 2 - adds r0, r1 - movs r1, 0x24 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080E3E6C - mov r0, r8 - bl DestroyAnimVisualTask -_080E3E6C: - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E3E7C: .4byte gSprites -_080E3E80: .4byte gTasks - thumb_func_end sub_80E392C - - thumb_func_start sub_80E3E84 -sub_80E3E84: @ 80E3E84 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080E3E96 - cmp r0, 0x1 - beq _080E3F36 - b _080E3FB8 -_080E3E96: - ldr r0, _080E3F14 @ =gBattleAnimArgs - movs r2, 0xE - ldrsh r1, [r0, r2] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _080E3F28 - movs r0, 0x3F - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x73 - bl PlaySE12WithPanning - ldr r0, _080E3F18 @ =gBattleAnimTarget - ldrb r0, [r0] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x10 - strh r0, [r4, 0x22] - ldr r0, _080E3F1C @ =0x0000ffe0 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - strh r0, [r4, 0x3C] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldr r0, _080E3F20 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E3FB8 - movs r0, 0x1 - bl GetAnimBattlerSpriteId - ldr r2, _080E3F24 @ =gSprites - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r1, 0x43 - ldrb r0, [r1] - subs r0, 0x1 - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - b _080E3FB8 - .align 2, 0 -_080E3F14: .4byte gBattleAnimArgs -_080E3F18: .4byte gBattleAnimTarget -_080E3F1C: .4byte 0x0000ffe0 -_080E3F20: .4byte gBattleAnimAttacker -_080E3F24: .4byte gSprites -_080E3F28: - adds r0, r4, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - b _080E3FB8 -_080E3F36: - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r2, 0x2E - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r2, [r4, 0x30] - adds r0, r2, 0x5 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7F - ble _080E3F6A - movs r1, 0x2E - ldrsh r0, [r4, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - adds r0, r2, 0 - subs r0, 0x7A - strh r0, [r4, 0x30] -_080E3F6A: - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - ldrh r1, [r4, 0x32] - adds r0, r1 - strh r0, [r4, 0x32] - ldr r0, _080E3F94 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080E3F98 - ldrh r2, [r4, 0x32] - lsls r1, r2, 16 - asrs r1, 24 - ldrh r0, [r4, 0x24] - subs r0, r1 - strh r0, [r4, 0x24] - adds r1, r2, 0 - b _080E3FA4 - .align 2, 0 -_080E3F94: .4byte gBattleAnimAttacker -_080E3F98: - ldrh r1, [r4, 0x32] - lsls r0, r1, 16 - asrs r0, 24 - ldrh r2, [r4, 0x24] - adds r0, r2 - strh r0, [r4, 0x24] -_080E3FA4: - movs r0, 0xFF - ands r0, r1 - strh r0, [r4, 0x32] - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0x2 - bne _080E3FB8 - adds r0, r4, 0 - bl DestroyAnimSprite -_080E3FB8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80E3E84 - - thumb_func_start sub_80E3FC0 -sub_80E3FC0: @ 80E3FC0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080E3FE8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0x26 - ldrsh r0, [r0, r2] - adds r3, r1, 0 - cmp r0, 0x4 - bls _080E3FDC - b _080E412E -_080E3FDC: - lsls r0, 2 - ldr r1, _080E3FEC @ =_080E3FF0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E3FE8: .4byte gTasks -_080E3FEC: .4byte _080E3FF0 - .align 2, 0 -_080E3FF0: - .4byte _080E4004 - .4byte _080E4054 - .4byte _080E40B0 - .4byte _080E40C8 - .4byte _080E412E -_080E4004: - ldr r0, _080E4048 @ =gBattleAnimAttacker - ldrb r0, [r0] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r0, _080E404C @ =gBattleAnimTarget - ldrb r0, [r0] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r2, r0, 0 - ldr r1, _080E4050 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r1 - movs r0, 0x6 - strh r0, [r1, 0x8] - cmp r5, r2 - ble _080E403A - negs r0, r0 - strh r0, [r1, 0x8] -_080E403A: - strh r5, [r1, 0xA] - strh r2, [r1, 0xC] - ldrh r0, [r1, 0x26] - adds r0, 0x1 - strh r0, [r1, 0x26] - b _080E414C - .align 2, 0 -_080E4048: .4byte gBattleAnimAttacker -_080E404C: .4byte gBattleAnimTarget -_080E4050: .4byte gTasks -_080E4054: - ldr r1, _080E4090 @ =gBattlerSpriteIds - ldr r0, _080E4094 @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r0, r1 - ldrb r2, [r0] - ldr r1, _080E4098 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r1, r0, r1 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r2, r0, r3 - ldrh r0, [r2, 0x8] - ldrh r3, [r1, 0x24] - adds r0, r3 - strh r0, [r1, 0x24] - movs r3, 0x8 - ldrsh r0, [r2, r3] - cmp r0, 0 - ble _080E409C - movs r3, 0x20 - ldrsh r0, [r1, r3] - movs r3, 0x24 - ldrsh r1, [r1, r3] - adds r0, r1 - movs r3, 0xC - ldrsh r1, [r2, r3] - b _080E4122 - .align 2, 0 -_080E4090: .4byte gBattlerSpriteIds -_080E4094: .4byte gBattleAnimAttacker -_080E4098: .4byte gSprites -_080E409C: - movs r3, 0x20 - ldrsh r0, [r1, r3] - movs r3, 0x24 - ldrsh r1, [r1, r3] - adds r0, r1 - movs r3, 0xC - ldrsh r1, [r2, r3] - cmp r0, r1 - bgt _080E414C - b _080E4126 -_080E40B0: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r3 - movs r2, 0x8 - ldrsh r1, [r0, r2] - negs r1, r1 - strh r1, [r0, 0x8] - ldrh r1, [r0, 0x26] - adds r1, 0x1 - strh r1, [r0, 0x26] - b _080E414C -_080E40C8: - ldr r1, _080E4108 @ =gBattlerSpriteIds - ldr r0, _080E410C @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r0, r1 - ldrb r2, [r0] - ldr r1, _080E4110 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r1, r0, r1 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r2, r0, r3 - ldrh r0, [r2, 0x8] - ldrh r3, [r1, 0x24] - adds r0, r3 - strh r0, [r1, 0x24] - movs r3, 0x8 - ldrsh r0, [r2, r3] - cmp r0, 0 - bge _080E4114 - movs r3, 0x20 - ldrsh r0, [r1, r3] - movs r3, 0x24 - ldrsh r1, [r1, r3] - adds r0, r1 - movs r3, 0xA - ldrsh r1, [r2, r3] - cmp r0, r1 - bgt _080E414C - b _080E4126 - .align 2, 0 -_080E4108: .4byte gBattlerSpriteIds -_080E410C: .4byte gBattleAnimAttacker -_080E4110: .4byte gSprites -_080E4114: - movs r3, 0x20 - ldrsh r0, [r1, r3] - movs r3, 0x24 - ldrsh r1, [r1, r3] - adds r0, r1 - movs r3, 0xA - ldrsh r1, [r2, r3] -_080E4122: - cmp r0, r1 - blt _080E414C -_080E4126: - ldrh r0, [r2, 0x26] - adds r0, 0x1 - strh r0, [r2, 0x26] - b _080E414C -_080E412E: - ldr r1, _080E4154 @ =gBattlerSpriteIds - ldr r0, _080E4158 @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r0, r1 - ldrb r2, [r0] - ldr r1, _080E415C @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x24] - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080E414C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E4154: .4byte gBattlerSpriteIds -_080E4158: .4byte gBattleAnimAttacker -_080E415C: .4byte gSprites - thumb_func_end sub_80E3FC0 - - thumb_func_start sub_80E4160 -sub_80E4160: @ 80E4160 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080E41C8 @ =gTasks - adds r4, r1, r0 - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - movs r5, 0 - strh r0, [r4, 0xE] - ldr r0, _080E41CC @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - movs r2, 0x1 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0 - bne _080E4194 - movs r1, 0x1 -_080E4194: - strh r1, [r4, 0x10] - ldr r2, _080E41D0 @ =gSprites - movs r0, 0xE - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x22] - strh r0, [r4, 0x14] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x20] - strh r0, [r4, 0x12] - strh r5, [r4, 0x1A] - strh r5, [r4, 0x1E] - movs r0, 0x1 - strh r0, [r4, 0x1C] - strh r5, [r4, 0x20] - ldr r0, _080E41D4 @ =sub_80E41D8 - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E41C8: .4byte gTasks -_080E41CC: .4byte gBattleAnimAttacker -_080E41D0: .4byte gSprites -_080E41D4: .4byte sub_80E41D8 - thumb_func_end sub_80E4160 - - thumb_func_start sub_80E41D8 -sub_80E41D8: @ 80E41D8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080E41FC @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080E4280 - cmp r0, 0x1 - bgt _080E4200 - cmp r0, 0 - beq _080E4206 - b _080E42D6 - .align 2, 0 -_080E41FC: .4byte gTasks -_080E4200: - cmp r0, 0x2 - beq _080E42D0 - b _080E42D6 -_080E4206: - ldrh r0, [r4, 0x1E] - adds r0, 0x8 - movs r2, 0xFF - ands r0, r2 - strh r0, [r4, 0x1E] - ldr r5, _080E4278 @ =gSprites - movs r6, 0xE - ldrsh r0, [r4, r6] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldr r3, _080E427C @ =gSineTable - movs r6, 0x1E - ldrsh r0, [r4, r6] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 21 - strh r0, [r1, 0x24] - ldrh r0, [r4, 0x1A] - adds r0, 0x2 - ands r0, r2 - strh r0, [r4, 0x1A] - movs r1, 0xE - ldrsh r0, [r4, r1] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r5 - movs r6, 0x1A - ldrsh r0, [r4, r6] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 19 - ldrh r1, [r4, 0x10] - muls r0, r1 - ldrh r1, [r4, 0x12] - adds r0, r1 - strh r0, [r2, 0x20] - movs r6, 0x1A - ldrsh r0, [r4, r6] - cmp r0, 0 - bne _080E42D6 - movs r0, 0xE - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrh r1, [r4, 0x12] - strh r1, [r0, 0x20] - b _080E42C0 - .align 2, 0 -_080E4278: .4byte gSprites -_080E427C: .4byte gSineTable -_080E4280: - ldrh r0, [r4, 0x1E] - adds r0, 0x8 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x1E] - ldr r3, _080E42C8 @ =gSprites - movs r1, 0xE - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldr r2, _080E42CC @ =gSineTable - movs r5, 0x1E - ldrsh r0, [r4, r5] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 21 - strh r0, [r1, 0x24] - movs r6, 0x1E - ldrsh r2, [r4, r6] - cmp r2, 0 - bne _080E42D6 - movs r1, 0xE - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - strh r2, [r1, 0x24] -_080E42C0: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E42D6 - .align 2, 0 -_080E42C8: .4byte gSprites -_080E42CC: .4byte gSineTable -_080E42D0: - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080E42D6: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80E41D8 - - thumb_func_start sub_80E42DC -sub_80E42DC: @ 80E42DC - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080E4330 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - ldrh r0, [r4, 0x2E] - ldrh r1, [r4, 0x30] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x14 - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x14 - bl Sin - strh r0, [r4, 0x26] - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080E4322 - adds r0, r4, 0 - bl DestroyAnimSprite -_080E4322: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E4330: .4byte gBattleAnimTarget - thumb_func_end sub_80E42DC - - thumb_func_start sub_80E4334 -sub_80E4334: @ 80E4334 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080E436C @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080E4378 - ldr r2, _080E4370 @ =gBattleAnimArgs - ldrh r0, [r4, 0x20] - ldrh r1, [r2] - subs r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r2, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r0, _080E4374 @ =0x0000fff5 - strh r0, [r4, 0x2E] - movs r0, 0xC0 - strh r0, [r4, 0x30] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - b _080E4392 - .align 2, 0 -_080E436C: .4byte gBattleAnimTarget -_080E4370: .4byte gBattleAnimArgs -_080E4374: .4byte 0x0000fff5 -_080E4378: - movs r0, 0xB - strh r0, [r4, 0x2E] - movs r0, 0xC0 - strh r0, [r4, 0x30] - ldr r1, _080E439C @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] -_080E4392: - ldr r0, _080E43A0 @ =sub_80E42DC - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E439C: .4byte gBattleAnimArgs -_080E43A0: .4byte sub_80E42DC - thumb_func_end sub_80E4334 - - thumb_func_start sub_80E43A4 -sub_80E43A4: @ 80E43A4 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080E43E8 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoordAttr - strh r0, [r5, 0x22] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - bgt _080E43CE - movs r0, 0x10 - strh r0, [r5, 0x22] -_080E43CE: - movs r0, 0 - strh r0, [r5, 0x3A] - movs r1, 0x10 - strh r1, [r5, 0x3C] - ldr r0, _080E43EC @ =sub_80E43F0 - str r0, [r5, 0x1C] - lsls r1, 8 - movs r0, 0x52 - bl SetGpuReg - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E43E8: .4byte gBattleAnimAttacker -_080E43EC: .4byte sub_80E43F0 - thumb_func_end sub_80E43A4 - - thumb_func_start sub_80E43F0 -sub_80E43F0: @ 80E43F0 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x32 - ldrsh r1, [r4, r0] - cmp r1, 0x1 - beq _080E4468 - cmp r1, 0x1 - bgt _080E4406 - cmp r1, 0 - beq _080E4410 - b _080E44E4 -_080E4406: - cmp r1, 0x2 - beq _080E447E - cmp r1, 0x3 - beq _080E44DE - b _080E44E4 -_080E4410: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E44E4 - strh r1, [r4, 0x2E] - ldrh r1, [r4, 0x30] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080E443A - ldrh r2, [r4, 0x3A] - movs r3, 0x3A - ldrsh r0, [r4, r3] - cmp r0, 0xF - bgt _080E4448 - adds r0, r2, 0x1 - strh r0, [r4, 0x3A] - b _080E4448 -_080E443A: - ldrh r2, [r4, 0x3C] - movs r3, 0x3C - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _080E4448 - subs r0, r2, 0x1 - strh r0, [r4, 0x3C] -_080E4448: - adds r0, r1, 0x1 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x3C] - lsls r1, 8 - ldrh r0, [r4, 0x3A] - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080E44E4 - b _080E44D6 -_080E4468: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - movs r1, 0 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _080E44E4 - strh r1, [r4, 0x2E] - strh r1, [r4, 0x30] - b _080E44D6 -_080E447E: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E44E4 - movs r0, 0 - strh r0, [r4, 0x2E] - ldrh r1, [r4, 0x30] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080E44AA - ldrh r2, [r4, 0x3A] - movs r3, 0x3A - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _080E44B8 - subs r0, r2, 0x1 - strh r0, [r4, 0x3A] - b _080E44B8 -_080E44AA: - ldrh r2, [r4, 0x3C] - movs r3, 0x3C - ldrsh r0, [r4, r3] - cmp r0, 0xF - bgt _080E44B8 - adds r0, r2, 0x1 - strh r0, [r4, 0x3C] -_080E44B8: - adds r0, r1, 0x1 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x3C] - lsls r1, 8 - ldrh r0, [r4, 0x3A] - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _080E44E4 -_080E44D6: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - b _080E44E4 -_080E44DE: - adds r0, r4, 0 - bl DestroySpriteAndMatrix -_080E44E4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80E43F0 - - thumb_func_start sub_80E44EC -sub_80E44EC: @ 80E44EC - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r2, _080E4508 @ =gBattleAnimArgs - movs r0, 0 - strh r0, [r2, 0xE] - ldr r0, _080E450C @ =gWeatherMoveAnim - ldrh r1, [r0] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _080E4510 - movs r0, 0x1 - b _080E4532 - .align 2, 0 -_080E4508: .4byte gBattleAnimArgs -_080E450C: .4byte gWeatherMoveAnim -_080E4510: - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - beq _080E451C - movs r0, 0x2 - b _080E4532 -_080E451C: - movs r0, 0x18 - ands r0, r1 - cmp r0, 0 - beq _080E4528 - movs r0, 0x3 - b _080E4532 -_080E4528: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080E4534 - movs r0, 0x4 -_080E4532: - strh r0, [r2, 0xE] -_080E4534: - adds r0, r3, 0 - bl DestroyAnimVisualTask - pop {r0} - bx r0 - thumb_func_end sub_80E44EC - - thumb_func_start sub_80E4540 -sub_80E4540: @ 80E4540 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080E4578 @ =gTasks - adds r4, r0 - movs r0, 0 - strh r0, [r4, 0x8] - ldr r0, _080E457C @ =gBattleAnimArgs - ldrb r0, [r0] - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - strh r1, [r4, 0x26] - ldr r2, _080E4580 @ =gUnknown_83FF7A8 - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldr r0, _080E4584 @ =sub_80E4588 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E4578: .4byte gTasks -_080E457C: .4byte gBattleAnimArgs -_080E4580: .4byte gUnknown_83FF7A8 -_080E4584: .4byte sub_80E4588 - thumb_func_end sub_80E4540 - - thumb_func_start sub_80E4588 -sub_80E4588: @ 80E4588 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r2, _080E45E0 @ =gTasks - adds r3, r0, r2 - ldrh r0, [r3, 0x8] - adds r1, r0, 0x1 - movs r5, 0 - strh r1, [r3, 0x8] - subs r0, 0x10 - lsls r0, 16 - lsrs r0, 16 - adds r6, r2, 0 - cmp r0, 0x16 - bhi _080E45EC - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080E45FC - strh r5, [r3, 0xA] - ldrh r0, [r3, 0xC] - adds r0, 0x1 - strh r0, [r3, 0xC] - movs r5, 0x1 - ands r0, r5 - cmp r0, 0 - bne _080E45EC - ldr r2, _080E45E4 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _080E45E8 @ =0x0000ffff - strh r1, [r0, 0x24] - b _080E45FC - .align 2, 0 -_080E45E0: .4byte gTasks -_080E45E4: .4byte gSprites -_080E45E8: .4byte 0x0000ffff -_080E45EC: - ldr r2, _080E461C @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r5, [r0, 0x24] -_080E45FC: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r6 - bl RunAffineAnimFromTaskData - lsls r0, 24 - cmp r0, 0 - bne _080E4614 - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080E4614: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E461C: .4byte gSprites - thumb_func_end sub_80E4588 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_special.s b/asm/battle_anim_special.s deleted file mode 100644 index 3f56279eb..000000000 --- a/asm/battle_anim_special.s +++ /dev/null @@ -1,6299 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80EEC0C -sub_80EEC0C: @ 80EEC0C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x10] - ldr r0, _080EEDB4 @ =gBattleAnimAttacker - ldrb r4, [r0] - ldr r0, _080EEDB8 @ =gBattle_WIN0H - movs r1, 0 - strh r1, [r0] - ldr r0, _080EEDBC @ =gBattle_WIN0V - strh r1, [r0] - ldr r1, _080EEDC0 @ =0x00003f3f - movs r0, 0x48 - bl SetGpuReg - ldr r1, _080EEDC4 @ =0x00003f3d - movs r0, 0x4A - bl SetGpuReg - movs r1, 0x80 - lsls r1, 8 - movs r0, 0 - bl SetGpuRegBits - ldr r1, _080EEDC8 @ =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 5 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0 - bl SetAnimBgAttribute - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl SetAnimBgAttribute - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0x1 - bl SetAnimBgAttribute - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0x1 - bl SetAnimBgAttribute - ldr r0, _080EEDCC @ =gHealthboxSpriteIds - adds r4, r0 - ldrb r0, [r4] - ldr r1, _080EEDD0 @ =gSprites - mov r9, r1 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - add r4, r9 - ldrb r7, [r4, 0x6] - ldrh r6, [r4, 0x38] - lsls r6, 24 - lsrs r6, 24 - ldr r0, _080EEDD4 @ =SpriteCallbackDummy - bl CreateInvisibleSpriteWithCallback - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x14] - ldr r0, _080EEDD4 @ =SpriteCallbackDummy - bl CreateInvisibleSpriteWithCallback - mov r10, r0 - mov r2, r10 - lsls r2, 24 - lsrs r2, 24 - mov r10, r2 - ldrb r1, [r4, 0x5] - movs r3, 0xD - negs r3, r3 - adds r0, r3, 0 - ands r0, r1 - movs r1, 0x4 - mov r8, r1 - mov r2, r8 - orrs r0, r2 - strb r0, [r4, 0x5] - lsls r5, r7, 4 - adds r5, r7 - lsls r5, 2 - add r5, r9 - ldrb r1, [r5, 0x5] - adds r0, r3, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r5, 0x5] - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - add r1, r9 - ldrb r2, [r1, 0x5] - adds r0, r3, 0 - ands r0, r2 - mov r2, r8 - orrs r0, r2 - strb r0, [r1, 0x5] - ldr r0, [sp, 0x14] - lsls r6, r0, 4 - adds r6, r0 - lsls r6, 2 - mov r1, r9 - adds r7, r6, r1 - adds r0, r7, 0 - adds r1, r4, 0 - movs r2, 0x44 - str r3, [sp, 0x18] - bl memcpy - mov r2, r10 - lsls r4, r2, 4 - add r4, r10 - lsls r4, 2 - adds r0, r4, 0 - add r0, r9 - mov r8, r0 - adds r1, r5, 0 - movs r2, 0x44 - bl memcpy - ldrb r1, [r7, 0x1] - ldr r3, [sp, 0x18] - adds r0, r3, 0 - ands r0, r1 - movs r1, 0x8 - orrs r0, r1 - strb r0, [r7, 0x1] - mov r2, r8 - ldrb r0, [r2, 0x1] - ands r3, r0 - orrs r3, r1 - strb r3, [r2, 0x1] - movs r0, 0x1C - add r9, r0 - add r6, r9 - ldr r1, _080EEDD4 @ =SpriteCallbackDummy - str r1, [r6] - add r4, r9 - str r1, [r4] - mov r0, sp - bl sub_80752A0 - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080EEDD8 @ =gFile_graphics_battle_anims_masks_unknown_D2EC24_tilemap - bl AnimLoadCompressedBgTilemap - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080EEDDC @ =gFile_graphics_battle_anims_masks_unknown_D2EC24_sheet - mov r2, sp - ldrh r2, [r2, 0xA] - bl AnimLoadCompressedBgGfx - ldr r0, _080EEDE0 @ =gFile_graphics_battle_anims_masks_cure_bubbles_palette - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - ldr r1, _080EEDE4 @ =gBattle_BG1_X - ldrh r0, [r7, 0x20] - negs r0, r0 - adds r0, 0x20 - strh r0, [r1] - ldr r1, _080EEDE8 @ =gBattle_BG1_Y - ldrh r0, [r7, 0x22] - negs r0, r0 - subs r0, 0x20 - strh r0, [r1] - ldr r1, _080EEDEC @ =gTasks - ldr r2, [sp, 0x10] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - movs r1, 0xA0 - lsls r1, 2 - strh r1, [r0, 0xA] - mov r1, sp - ldrh r1, [r1, 0x14] - strh r1, [r0, 0x8] - mov r2, r10 - strh r2, [r0, 0xC] - ldr r1, _080EEDF0 @ =sub_80EEDF4 - str r1, [r0] - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EEDB4: .4byte gBattleAnimAttacker -_080EEDB8: .4byte gBattle_WIN0H -_080EEDBC: .4byte gBattle_WIN0V -_080EEDC0: .4byte 0x00003f3f -_080EEDC4: .4byte 0x00003f3d -_080EEDC8: .4byte 0x00003f42 -_080EEDCC: .4byte gHealthboxSpriteIds -_080EEDD0: .4byte gSprites -_080EEDD4: .4byte SpriteCallbackDummy -_080EEDD8: .4byte gFile_graphics_battle_anims_masks_unknown_D2EC24_tilemap -_080EEDDC: .4byte gFile_graphics_battle_anims_masks_unknown_D2EC24_sheet -_080EEDE0: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_palette -_080EEDE4: .4byte gBattle_BG1_X -_080EEDE8: .4byte gBattle_BG1_Y -_080EEDEC: .4byte gTasks -_080EEDF0: .4byte sub_80EEDF4 - thumb_func_end sub_80EEC0C - - thumb_func_start sub_80EEDF4 -sub_80EEDF4: @ 80EEDF4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _080EEE3C @ =gBattleAnimAttacker - ldrb r0, [r0] - mov r8, r0 - ldr r1, _080EEE40 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r5, r0, r1 - ldrh r1, [r5, 0xA] - ldrh r0, [r5, 0x22] - adds r1, r0 - movs r3, 0 - strh r1, [r5, 0x22] - ldr r2, _080EEE44 @ =gBattle_BG1_Y - lsls r0, r1, 16 - lsrs r0, 24 - ldrh r4, [r2] - adds r0, r4 - strh r0, [r2] - movs r0, 0xFF - ands r1, r0 - strh r1, [r5, 0x22] - movs r1, 0x26 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080EEE84 - cmp r0, 0x1 - bgt _080EEE48 - cmp r0, 0 - beq _080EEE4E - b _080EEFA8 - .align 2, 0 -_080EEE3C: .4byte gBattleAnimAttacker -_080EEE40: .4byte gTasks -_080EEE44: .4byte gBattle_BG1_Y -_080EEE48: - cmp r0, 0x2 - beq _080EEE9C - b _080EEFA8 -_080EEE4E: - ldrh r0, [r5, 0x1E] - adds r1, r0, 0x1 - strh r1, [r5, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bgt _080EEE5E - b _080EEFA8 -_080EEE5E: - strh r3, [r5, 0x1E] - ldrh r1, [r5, 0x20] - adds r1, 0x1 - strh r1, [r5, 0x20] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r2, 0x20 - ldrsh r0, [r5, r2] - cmp r0, 0x8 - beq _080EEE82 - b _080EEFA8 -_080EEE82: - b _080EEE94 -_080EEE84: - ldrh r0, [r5, 0x1C] - adds r0, 0x1 - strh r0, [r5, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1E - beq _080EEE94 - b _080EEFA8 -_080EEE94: - ldrh r0, [r5, 0x26] - adds r0, 0x1 - strh r0, [r5, 0x26] - b _080EEFA8 -_080EEE9C: - ldrh r0, [r5, 0x1E] - adds r1, r0, 0x1 - strh r1, [r5, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080EEFA8 - strh r3, [r5, 0x1E] - ldrh r1, [r5, 0x20] - subs r1, 0x1 - strh r1, [r5, 0x20] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x20 - ldrsh r4, [r5, r0] - cmp r4, 0 - bne _080EEFA8 - movs r0, 0 - bl sub_8073128 - ldr r0, _080EEFB4 @ =gBattle_WIN0H - strh r4, [r0] - ldr r0, _080EEFB8 @ =gBattle_WIN0V - strh r4, [r0] - ldr r4, _080EEFBC @ =0x00003f3f - movs r0, 0x48 - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x4A - adds r1, r4, 0 - bl SetGpuReg - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080EEF00 - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - bl SetAnimBgAttribute -_080EEF00: - movs r0, 0 - bl GetGpuReg - adds r1, r0, 0 - movs r2, 0x80 - lsls r2, 8 - adds r0, r2, 0 - eors r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r4, 0x8 - ldrsh r1, [r5, r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r6, _080EEFC0 @ =gSprites - adds r0, r6 - bl DestroySprite - movs r0, 0xC - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - bl DestroySprite - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl SetAnimBgAttribute - ldr r0, _080EEFC4 @ =gHealthboxSpriteIds - add r0, r8 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r2, [r1, 0x6] - mov r8, r2 - ldrh r4, [r1, 0x38] - lsls r4, 24 - lsrs r4, 24 - ldrb r3, [r1, 0x5] - movs r2, 0xD - negs r2, r2 - adds r0, r2, 0 - ands r0, r3 - movs r5, 0x4 - orrs r0, r5 - strb r0, [r1, 0x5] - mov r0, r8 - lsls r1, r0, 4 - add r1, r8 - lsls r1, 2 - adds r1, r6 - ldrb r3, [r1, 0x5] - adds r0, r2, 0 - ands r0, r3 - orrs r0, r5 - strb r0, [r1, 0x5] - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r0, 0x5] - ands r2, r1 - orrs r2, r5 - strb r2, [r0, 0x5] - adds r0, r7, 0 - bl DestroyAnimVisualTask -_080EEFA8: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EEFB4: .4byte gBattle_WIN0H -_080EEFB8: .4byte gBattle_WIN0V -_080EEFBC: .4byte 0x00003f3f -_080EEFC0: .4byte gSprites -_080EEFC4: .4byte gHealthboxSpriteIds - thumb_func_end sub_80EEDF4 - - thumb_func_start sub_80EEFC8 -sub_80EEFC8: @ 80EEFC8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r9, r0 - adds r7, r1, 0 - lsls r2, 24 - lsrs r2, 24 - ldr r0, _080EF0A0 @ =gHealthboxSpriteIds - adds r2, r0 - ldrb r0, [r2] - lsls r5, r0, 4 - adds r5, r0 - lsls r5, 2 - ldr r0, _080EF0A4 @ =gSprites - adds r5, r0 - ldrb r1, [r5, 0x6] - mov r10, r1 - ldrh r4, [r5, 0x38] - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080EF0A8 @ =0x0000d709 - bl AllocSpritePalette - mov r2, r9 - strb r0, [r2] - ldr r0, _080EF0AC @ =0x0000d70a - bl AllocSpritePalette - strb r0, [r7] - ldrb r0, [r5, 0x5] - lsrs r0, 4 - lsls r0, 4 - movs r1, 0x80 - lsls r1, 1 - adds r3, r1, 0 - orrs r0, r3 - lsls r6, r4, 4 - adds r6, r4 - lsls r6, 2 - ldr r2, _080EF0A4 @ =gSprites - adds r6, r2 - ldrb r4, [r6, 0x5] - lsrs r4, 4 - lsls r4, 4 - orrs r4, r3 - lsls r0, 1 - ldr r1, _080EF0B0 @ =gPlttBufferUnfaded - mov r8, r1 - add r0, r8 - mov r2, r9 - ldrb r1, [r2] - lsls r1, 4 - adds r1, r3, r1 - movs r2, 0x20 - str r3, [sp] - bl LoadPalette - lsls r4, 1 - add r4, r8 - ldrb r0, [r7] - lsls r0, 4 - ldr r3, [sp] - adds r3, r0 - adds r0, r4, 0 - adds r1, r3, 0 - movs r2, 0x20 - bl LoadPalette - mov r0, r9 - ldrb r1, [r0] - lsls r1, 4 - ldrb r2, [r5, 0x5] - movs r3, 0xF - adds r0, r3, 0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x5] - mov r2, r10 - lsls r1, r2, 4 - add r1, r10 - lsls r1, 2 - ldr r0, _080EF0A4 @ =gSprites - adds r1, r0 - mov r0, r9 - ldrb r2, [r0] - lsls r2, 4 - ldrb r4, [r1, 0x5] - adds r0, r3, 0 - ands r0, r4 - orrs r0, r2 - strb r0, [r1, 0x5] - ldrb r0, [r7] - lsls r0, 4 - ldrb r1, [r6, 0x5] - ands r3, r1 - orrs r3, r0 - strb r3, [r6, 0x5] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EF0A0: .4byte gHealthboxSpriteIds -_080EF0A4: .4byte gSprites -_080EF0A8: .4byte 0x0000d709 -_080EF0AC: .4byte 0x0000d70a -_080EF0B0: .4byte gPlttBufferUnfaded - thumb_func_end sub_80EEFC8 - - thumb_func_start sub_80EF0B4 -sub_80EF0B4: @ 80EF0B4 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - mov r1, sp - adds r1, 0x1 - ldr r0, _080EF0DC @ =gBattleAnimAttacker - ldrb r2, [r0] - mov r0, sp - bl sub_80EEFC8 - adds r0, r4, 0 - bl DestroyAnimVisualTask - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EF0DC: .4byte gBattleAnimAttacker - thumb_func_end sub_80EF0B4 - - thumb_func_start sub_80EF0E0 -sub_80EF0E0: @ 80EF0E0 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080EF168 @ =gHealthboxSpriteIds - adds r0, r1 - ldrb r0, [r0] - ldr r1, _080EF16C @ =gSprites - mov r8, r1 - lsls r5, r0, 4 - adds r5, r0 - lsls r5, 2 - add r5, r8 - ldrb r0, [r5, 0x6] - mov r9, r0 - ldrh r6, [r5, 0x38] - lsls r6, 24 - lsrs r6, 24 - ldr r0, _080EF170 @ =0x0000d709 - bl FreeSpritePaletteByTag - ldr r0, _080EF174 @ =0x0000d70a - bl FreeSpritePaletteByTag - ldr r0, _080EF178 @ =0x0000d6ff - bl IndexOfSpritePaletteTag - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080EF17C @ =0x0000d704 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsls r4, 4 - ldrb r2, [r5, 0x5] - movs r3, 0xF - adds r1, r3, 0 - ands r1, r2 - orrs r1, r4 - strb r1, [r5, 0x5] - mov r1, r9 - lsls r2, r1, 4 - add r2, r9 - lsls r2, 2 - add r2, r8 - ldrb r5, [r2, 0x5] - adds r1, r3, 0 - ands r1, r5 - orrs r1, r4 - strb r1, [r2, 0x5] - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - add r1, r8 - lsrs r0, 20 - ldrb r2, [r1, 0x5] - ands r3, r2 - orrs r3, r0 - strb r3, [r1, 0x5] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EF168: .4byte gHealthboxSpriteIds -_080EF16C: .4byte gSprites -_080EF170: .4byte 0x0000d709 -_080EF174: .4byte 0x0000d70a -_080EF178: .4byte 0x0000d6ff -_080EF17C: .4byte 0x0000d704 - thumb_func_end sub_80EF0E0 - - thumb_func_start sub_80EF180 -sub_80EF180: @ 80EF180 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080EF19C @ =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_80EF0E0 - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EF19C: .4byte gBattleAnimAttacker - thumb_func_end sub_80EF180 - - thumb_func_start sub_80EF1A0 -sub_80EF1A0: @ 80EF1A0 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080EF1C0 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r2, _080EF1C4 @ =gBattleAnimArgs - ldrh r0, [r2] - strh r0, [r1, 0x1C] - ldrh r0, [r2, 0x2] - strh r0, [r1, 0x1E] - ldr r0, _080EF1C8 @ =sub_80EF1CC - str r0, [r1] - bx lr - .align 2, 0 -_080EF1C0: .4byte gTasks -_080EF1C4: .4byte gBattleAnimArgs -_080EF1C8: .4byte sub_80EF1CC - thumb_func_end sub_80EF1A0 - - thumb_func_start sub_80EF1CC -sub_80EF1CC: @ 80EF1CC - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080EF218 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - movs r6, 0 - adds r1, r0, 0x1 - strh r1, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x1E - ldrsh r1, [r4, r2] - cmp r0, r1 - blt _080EF28C - strh r6, [r4, 0x8] - ldr r0, _080EF21C @ =0x0000d709 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r2, r0, 24 - movs r3, 0x1C - ldrsh r0, [r4, r3] - movs r1, 0x2 - cmp r0, 0 - bne _080EF20A - movs r1, 0x6 -_080EF20A: - movs r3, 0xA - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _080EF220 - cmp r0, 0x1 - beq _080EF25C - b _080EF28C - .align 2, 0 -_080EF218: .4byte gTasks -_080EF21C: .4byte 0x0000d709 -_080EF220: - ldrh r0, [r4, 0xC] - adds r0, 0x2 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080EF232 - movs r0, 0x10 - strh r0, [r4, 0xC] -_080EF232: - lsls r0, r2, 4 - movs r2, 0x80 - lsls r2, 1 - adds r0, r2 - orrs r0, r1 - ldrb r2, [r4, 0xC] - ldr r3, _080EF258 @ =0x00007f74 - movs r1, 0x1 - bl BlendPalette - movs r3, 0xC - ldrsh r0, [r4, r3] - cmp r0, 0x10 - bne _080EF28C - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - b _080EF28C - .align 2, 0 -_080EF258: .4byte 0x00007f74 -_080EF25C: - ldrh r0, [r4, 0xC] - subs r0, 0x2 - strh r0, [r4, 0xC] - lsls r0, 16 - cmp r0, 0 - bge _080EF26A - strh r6, [r4, 0xC] -_080EF26A: - lsls r0, r2, 4 - movs r2, 0x80 - lsls r2, 1 - adds r0, r2 - orrs r0, r1 - ldrb r2, [r4, 0xC] - ldr r3, _080EF294 @ =0x00007f74 - movs r1, 0x1 - bl BlendPalette - movs r3, 0xC - ldrsh r0, [r4, r3] - cmp r0, 0 - bne _080EF28C - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080EF28C: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EF294: .4byte 0x00007f74 - thumb_func_end sub_80EF1CC - - thumb_func_start sub_80EF298 -sub_80EF298: @ 80EF298 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080EF2C4 @ =gBattlerSpriteIds - ldr r0, _080EF2C8 @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r0, r1 - ldrb r5, [r0] - ldr r1, _080EF2CC @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080EF2E6 - cmp r0, 0x1 - bgt _080EF2D0 - cmp r0, 0 - beq _080EF2D6 - b _080EF338 - .align 2, 0 -_080EF2C4: .4byte gBattlerSpriteIds -_080EF2C8: .4byte gBattleAnimAttacker -_080EF2CC: .4byte gTasks -_080EF2D0: - cmp r0, 0x2 - beq _080EF318 - b _080EF338 -_080EF2D6: - adds r0, r5, 0 - movs r1, 0 - bl PrepareBattlerSpriteForRotScale - movs r0, 0x80 - lsls r0, 1 - strh r0, [r4, 0x1C] - b _080EF30A -_080EF2E6: - ldrh r0, [r4, 0x1C] - adds r0, 0x30 - strh r0, [r4, 0x1C] - movs r0, 0x1C - ldrsh r2, [r4, r0] - adds r0, r5, 0 - adds r1, r2, 0 - movs r3, 0 - bl SetSpriteRotScale - adds r0, r5, 0 - bl SetBattlerSpriteYOffsetFromYScale - movs r0, 0x1C - ldrsh r1, [r4, r0] - ldr r0, _080EF314 @ =0x000002cf - cmp r1, r0 - ble _080EF338 -_080EF30A: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080EF338 - .align 2, 0 -_080EF314: .4byte 0x000002cf -_080EF318: - adds r0, r5, 0 - bl ResetSpriteRotScale - ldr r1, _080EF340 @ =gSprites - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080EF338: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EF340: .4byte gSprites - thumb_func_end sub_80EF298 - - thumb_func_start sub_80EF344 -sub_80EF344: @ 80EF344 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080EF37C @ =gBattlerSpriteIds - ldr r4, _080EF380 @ =gBattleAnimAttacker - ldrb r0, [r4] - adds r1, r0, r1 - ldrb r1, [r1] - mov r9, r1 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080EF38C - ldr r1, _080EF384 @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080EF388 @ =gPlayerParty - b _080EF39C - .align 2, 0 -_080EF37C: .4byte gBattlerSpriteIds -_080EF380: .4byte gBattleAnimAttacker -_080EF384: .4byte gBattlerPartyIndexes -_080EF388: .4byte gPlayerParty -_080EF38C: - ldr r1, _080EF3CC @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080EF3D0 @ =gEnemyParty -_080EF39C: - adds r0, r1 - movs r1, 0x26 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - bl ItemIdToBallId - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r2, _080EF3D4 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r6, r0, r2 - movs r0, 0x8 - ldrsh r7, [r6, r0] - cmp r7, 0 - beq _080EF3D8 - cmp r7, 0x1 - beq _080EF458 - b _080EF482 - .align 2, 0 -_080EF3CC: .4byte gBattlerPartyIndexes -_080EF3D0: .4byte gEnemyParty -_080EF3D4: .4byte gTasks -_080EF3D8: - ldr r5, _080EF450 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldrb r0, [r5] - movs r1, 0x1 - bl GetBattlerSpriteCoord - adds r1, r0, 0 - lsls r1, 24 - ldr r2, _080EF454 @ =gSprites - mov r3, r9 - lsls r0, r3, 4 - add r0, r9 - lsls r0, 2 - adds r0, r2 - ldrb r2, [r0, 0x5] - lsls r2, 28 - lsrs r2, 30 - adds r0, 0x43 - ldrb r3, [r0] - movs r0, 0x80 - lsls r0, 22 - adds r1, r0 - lsrs r1, 24 - mov r0, r8 - str r0, [sp] - adds r0, r4, 0 - bl LaunchBallStarsTask - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x1C] - str r7, [sp] - str r7, [sp, 0x4] - str r7, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_8075BE8 - adds r2, r0, 0 - ldrb r1, [r5] - movs r0, 0 - mov r3, r8 - bl LaunchBallFadeMonTask - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x1E] - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] - b _080EF482 - .align 2, 0 -_080EF450: .4byte gBattleAnimAttacker -_080EF454: .4byte gSprites -_080EF458: - movs r1, 0x1C - ldrsh r0, [r6, r1] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrb r0, [r1, 0x4] - cmp r0, 0 - bne _080EF482 - movs r3, 0x1E - ldrsh r0, [r6, r3] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrb r0, [r1, 0x4] - cmp r0, 0 - bne _080EF482 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080EF482: - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80EF344 - - thumb_func_start sub_80EF490 -sub_80EF490: @ 80EF490 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080EF4B4 @ =gLastUsedItem - ldrh r0, [r0] - bl ItemIdToBallId - lsls r0, 24 - lsrs r0, 24 - bl LoadBallGfx - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EF4B4: .4byte gLastUsedItem - thumb_func_end sub_80EF490 - - thumb_func_start sub_80EF4B8 -sub_80EF4B8: @ 80EF4B8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080EF4DC @ =gLastUsedItem - ldrh r0, [r0] - bl ItemIdToBallId - lsls r0, 24 - lsrs r0, 24 - bl FreeBallGfx - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EF4DC: .4byte gLastUsedItem - thumb_func_end sub_80EF4B8 - - thumb_func_start sub_80EF4E0 -sub_80EF4E0: @ 80EF4E0 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080EF4FC @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x8] - cmp r0, 0x5 - beq _080EF504 - cmp r0, 0x6 - beq _080EF514 - ldr r1, _080EF500 @ =gBattleAnimArgs - movs r0, 0 - b _080EF518 - .align 2, 0 -_080EF4FC: .4byte gBattleSpritesDataPtr -_080EF500: .4byte gBattleAnimArgs -_080EF504: - ldr r1, _080EF50C @ =gBattleAnimArgs - ldr r0, _080EF510 @ =0x0000ffff - b _080EF518 - .align 2, 0 -_080EF50C: .4byte gBattleAnimArgs -_080EF510: .4byte 0x0000ffff -_080EF514: - ldr r1, _080EF524 @ =gBattleAnimArgs - ldr r0, _080EF528 @ =0x0000fffe -_080EF518: - strh r0, [r1, 0xE] - adds r0, r2, 0 - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080EF524: .4byte gBattleAnimArgs -_080EF528: .4byte 0x0000fffe - thumb_func_end sub_80EF4E0 - - thumb_func_start ItemIdToBallId -ItemIdToBallId: @ 80EF52C - push {lr} - lsls r0, 16 - lsrs r0, 16 - subs r0, 0x1 - cmp r0, 0xB - bhi _080EF5A4 - lsls r0, 2 - ldr r1, _080EF544 @ =_080EF548 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080EF544: .4byte _080EF548 - .align 2, 0 -_080EF548: - .4byte _080EF578 - .4byte _080EF57C - .4byte _080EF580 - .4byte _080EF5A4 - .4byte _080EF584 - .4byte _080EF588 - .4byte _080EF58C - .4byte _080EF590 - .4byte _080EF594 - .4byte _080EF598 - .4byte _080EF59C - .4byte _080EF5A0 -_080EF578: - movs r0, 0x4 - b _080EF5A6 -_080EF57C: - movs r0, 0x3 - b _080EF5A6 -_080EF580: - movs r0, 0x1 - b _080EF5A6 -_080EF584: - movs r0, 0x2 - b _080EF5A6 -_080EF588: - movs r0, 0x5 - b _080EF5A6 -_080EF58C: - movs r0, 0x6 - b _080EF5A6 -_080EF590: - movs r0, 0x7 - b _080EF5A6 -_080EF594: - movs r0, 0x8 - b _080EF5A6 -_080EF598: - movs r0, 0x9 - b _080EF5A6 -_080EF59C: - movs r0, 0xA - b _080EF5A6 -_080EF5A0: - movs r0, 0xB - b _080EF5A6 -_080EF5A4: - movs r0, 0 -_080EF5A6: - pop {r1} - bx r1 - thumb_func_end ItemIdToBallId - - thumb_func_start sub_80EF5AC -sub_80EF5AC: @ 80EF5AC - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - mov r10, r0 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r0, _080EF674 @ =gLastUsedItem - ldrh r0, [r0] - bl ItemIdToBallId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - ldr r1, _080EF678 @ =gBallSpriteTemplates - adds r0, r1 - movs r1, 0x20 - movs r2, 0x50 - movs r3, 0x1D - bl CreateSprite - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r1, _080EF67C @ =gSprites - mov r9, r1 - lsls r4, r5, 4 - adds r4, r5 - lsls r4, 2 - adds r6, r4, r1 - movs r0, 0x22 - strh r0, [r6, 0x2E] - ldr r2, _080EF680 @ =gBattleAnimTarget - mov r8, r2 - ldrb r0, [r2] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x30] - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x10 - strh r0, [r6, 0x32] - mov r0, r9 - adds r0, 0x1C - adds r4, r0 - ldr r0, _080EF684 @ =sub_80EF8C0 - str r0, [r4] - ldr r0, _080EF688 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r3, [r0, 0x8] - ldr r1, _080EF68C @ =gBattlerSpriteIds - mov r2, r8 - ldrb r0, [r2] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r9 - adds r0, 0x3E - ldrb r1, [r0] - lsls r1, 29 - lsrs r1, 31 - lsls r1, 1 - ldrb r2, [r3, 0x9] - movs r0, 0x3 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x9] - ldr r1, _080EF690 @ =gTasks - mov r2, r10 - lsls r0, r2, 2 - add r0, r10 - lsls r0, 3 - adds r0, r1 - strh r5, [r0, 0x8] - ldr r1, _080EF694 @ =sub_80EF698 - str r1, [r0] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EF674: .4byte gLastUsedItem -_080EF678: .4byte gBallSpriteTemplates -_080EF67C: .4byte gSprites -_080EF680: .4byte gBattleAnimTarget -_080EF684: .4byte sub_80EF8C0 -_080EF688: .4byte gBattleSpritesDataPtr -_080EF68C: .4byte gBattlerSpriteIds -_080EF690: .4byte gTasks -_080EF694: .4byte sub_80EF698 - thumb_func_end sub_80EF5AC - - thumb_func_start sub_80EF698 -sub_80EF698: @ 80EF698 - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _080EF6C8 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - ldrb r1, [r0, 0x8] - ldr r2, _080EF6CC @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x2E] - ldr r0, _080EF6D0 @ =0x0000ffff - cmp r1, r0 - bne _080EF6C2 - adds r0, r3, 0 - bl DestroyAnimVisualTask -_080EF6C2: - pop {r0} - bx r0 - .align 2, 0 -_080EF6C8: .4byte gTasks -_080EF6CC: .4byte gSprites -_080EF6D0: .4byte 0x0000ffff - thumb_func_end sub_80EF698 - - thumb_func_start sub_80EF6D4 -sub_80EF6D4: @ 80EF6D4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _080EF6F4 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 2 - ands r0, r1 - cmp r0, 0 - beq _080EF6F8 - movs r5, 0x1C - movs r6, 0xB - b _080EF708 - .align 2, 0 -_080EF6F4: .4byte gBattleTypeFlags -_080EF6F8: - movs r5, 0x17 - movs r6, 0xB - ldr r0, _080EF7C4 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - cmp r0, 0x1 - bne _080EF708 - movs r6, 0xD -_080EF708: - ldr r0, _080EF7C8 @ =gLastUsedItem - ldrh r0, [r0] - bl ItemIdToBallId - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerSpriteSubpriority - adds r3, r0, 0 - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 3 - ldr r1, _080EF7CC @ =gBallSpriteTemplates - adds r0, r1 - movs r1, 0x20 - orrs r5, r1 - movs r1, 0x50 - orrs r6, r1 - adds r1, r5, 0 - adds r2, r6, 0 - bl CreateSprite - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _080EF7D0 @ =gSprites - mov r9, r0 - lsls r4, r5, 4 - adds r4, r5 - lsls r4, 2 - adds r6, r4, r0 - movs r0, 0x22 - strh r0, [r6, 0x2E] - ldr r1, _080EF7D4 @ =gBattleAnimTarget - mov r8, r1 - ldrb r0, [r1] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x30] - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x10 - strh r0, [r6, 0x32] - movs r0, 0x1C - add r9, r0 - add r4, r9 - ldr r0, _080EF7D8 @ =SpriteCallbackDummy - str r0, [r4] - movs r0, 0 - bl GetBattlerAtPosition - ldr r1, _080EF7DC @ =gBattlerSpriteIds - lsls r0, 24 - lsrs r0, 24 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r9 - ldr r1, _080EF7E0 @ =sub_8012354 - str r1, [r0] - ldr r1, _080EF7E4 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - strh r5, [r0, 0x8] - ldr r1, _080EF7E8 @ =sub_80EF7EC - str r1, [r0] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EF7C4: .4byte gSaveBlock2Ptr -_080EF7C8: .4byte gLastUsedItem -_080EF7CC: .4byte gBallSpriteTemplates -_080EF7D0: .4byte gSprites -_080EF7D4: .4byte gBattleAnimTarget -_080EF7D8: .4byte SpriteCallbackDummy -_080EF7DC: .4byte gBattlerSpriteIds -_080EF7E0: .4byte sub_8012354 -_080EF7E4: .4byte gTasks -_080EF7E8: .4byte sub_80EF7EC - thumb_func_end sub_80EF6D4 - - thumb_func_start sub_80EF7EC -sub_80EF7EC: @ 80EF7EC - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r6, _080EF84C @ =gSprites - movs r0, 0 - bl GetBattlerAtPosition - ldr r1, _080EF850 @ =gBattlerSpriteIds - lsls r0, 24 - lsrs r0, 24 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - adds r0, 0x2B - ldrb r0, [r0] - cmp r0, 0x1 - bne _080EF846 - movs r0, 0x36 - movs r1, 0 - bl PlaySE12WithPanning - ldr r0, _080EF854 @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r0 - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r6, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _080EF858 @ =sub_80EF8C0 - str r1, [r0] - ldr r0, _080EF85C @ =sub_80EF864 - movs r1, 0xA - bl CreateTask - ldr r0, _080EF860 @ =sub_80EF698 - str r0, [r4] -_080EF846: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EF84C: .4byte gSprites -_080EF850: .4byte gBattlerSpriteIds -_080EF854: .4byte gTasks -_080EF858: .4byte sub_80EF8C0 -_080EF85C: .4byte sub_80EF864 -_080EF860: .4byte sub_80EF698 - thumb_func_end sub_80EF7EC - - thumb_func_start sub_80EF864 -sub_80EF864: @ 80EF864 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r6, _080EF8B8 @ =gSprites - movs r0, 0 - bl GetBattlerAtPosition - ldr r4, _080EF8BC @ =gBattlerSpriteIds - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 27 - cmp r0, 0 - bge _080EF8B0 - movs r0, 0 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0 - bl StartSpriteAnim - adds r0, r5, 0 - bl DestroyTask -_080EF8B0: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EF8B8: .4byte gSprites -_080EF8BC: .4byte gBattlerSpriteIds - thumb_func_end sub_80EF864 - - thumb_func_start sub_80EF8C0 -sub_80EF8C0: @ 80EF8C0 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x30] - ldrh r2, [r4, 0x32] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - strh r1, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - strh r2, [r4, 0x36] - ldr r0, _080EF8E8 @ =0x0000ffd8 - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl InitAnimArcTranslation - ldr r0, _080EF8EC @ =sub_80EF8F0 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EF8E8: .4byte 0x0000ffd8 -_080EF8EC: .4byte sub_80EF8F0 - thumb_func_end sub_80EF8C0 - - thumb_func_start sub_80EF8F0 -sub_80EF8F0: @ 80EF8F0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - bl TranslateAnimHorizontalArc - lsls r0, 24 - cmp r0, 0 - beq _080EF99E - ldr r0, _080EF914 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x8] - cmp r0, 0x5 - bne _080EF91C - ldr r0, _080EF918 @ =sub_80F0478 - str r0, [r4, 0x1C] - b _080EF99E - .align 2, 0 -_080EF914: .4byte gBattleSpritesDataPtr -_080EF918: .4byte sub_80F0478 -_080EF91C: - cmp r0, 0x6 - bne _080EF92C - ldr r0, _080EF928 @ =sub_80F052C - str r0, [r4, 0x1C] - b _080EF99E - .align 2, 0 -_080EF928: .4byte sub_80F052C -_080EF92C: - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - 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] - adds r1, r4, 0 - adds r1, 0x2E - movs r2, 0 - adds r0, r4, 0 - adds r0, 0x3C -_080EF954: - strh r2, [r0] - subs r0, 0x2 - cmp r0, r1 - bge _080EF954 - movs r0, 0 - strh r0, [r4, 0x38] - ldr r0, _080EF9A8 @ =sub_80EF9B4 - str r0, [r4, 0x1C] - ldr r0, _080EF9AC @ =gLastUsedItem - ldrh r0, [r0] - bl ItemIdToBallId - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xB - bgt _080EF99E - cmp r5, 0 - blt _080EF99E - ldrh r0, [r4, 0x20] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x22] - subs r1, 0x5 - lsls r1, 24 - lsrs r1, 24 - str r5, [sp] - movs r2, 0x1 - movs r3, 0x1C - bl LaunchBallStarsTask - ldr r0, _080EF9B0 @ =gBattleAnimTarget - ldrb r1, [r0] - movs r0, 0 - movs r2, 0xE - adds r3, r5, 0 - bl LaunchBallFadeMonTask -_080EF99E: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EF9A8: .4byte sub_80EF9B4 -_080EF9AC: .4byte gLastUsedItem -_080EF9B0: .4byte gBattleAnimTarget - thumb_func_end sub_80EF8F0 - - thumb_func_start sub_80EF9B4 -sub_80EF9B4: @ 80EF9B4 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _080EF9F0 - ldr r0, _080EF9F8 @ =TaskDummy - movs r1, 0x32 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x38] - ldr r0, _080EF9FC @ =sub_80EFA0C - str r0, [r4, 0x1C] - ldr r2, _080EFA00 @ =gSprites - ldr r1, _080EFA04 @ =gBattlerSpriteIds - ldr r0, _080EFA08 @ =gBattleAnimTarget - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x30] -_080EF9F0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EF9F8: .4byte TaskDummy -_080EF9FC: .4byte sub_80EFA0C -_080EFA00: .4byte gSprites -_080EFA04: .4byte gBattlerSpriteIds -_080EFA08: .4byte gBattleAnimTarget - thumb_func_end sub_80EF9B4 - - thumb_func_start sub_80EFA0C -sub_80EFA0C: @ 80EFA0C - push {r4-r7,lr} - adds r7, r0, 0 - ldr r1, _080EFA50 @ =gBattlerSpriteIds - ldr r0, _080EFA54 @ =gBattleAnimTarget - ldrb r0, [r0] - adds r0, r1 - ldrb r4, [r0] - ldrh r0, [r7, 0x38] - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080EFA58 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB - bne _080EFA3E - movs r0, 0x35 - bl PlaySE -_080EFA3E: - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080EFAB4 - cmp r0, 0x1 - bgt _080EFA5C - cmp r0, 0 - beq _080EFA62 - b _080EFB20 - .align 2, 0 -_080EFA50: .4byte gBattlerSpriteIds -_080EFA54: .4byte gBattleAnimTarget -_080EFA58: .4byte gTasks -_080EFA5C: - cmp r0, 0x2 - beq _080EFAF8 - b _080EFB20 -_080EFA62: - adds r0, r4, 0 - movs r1, 0 - bl PrepareBattlerSpriteForRotScale - movs r0, 0x80 - lsls r0, 1 - strh r0, [r5, 0x1C] - ldr r1, _080EFAA4 @ =gUnknown_3005424 - movs r0, 0x1C - str r0, [r1] - ldr r2, _080EFAA8 @ =gUnknown_300542C - ldr r1, _080EFAAC @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x26] - ldrh r0, [r0, 0x22] - adds r1, r0 - ldrh r0, [r7, 0x26] - ldrh r7, [r7, 0x22] - adds r0, r7 - subs r1, r0 - strh r1, [r2] - ldr r4, _080EFAB0 @ =gUnknown_3005428 - ldrh r0, [r2] - lsls r0, 8 - movs r1, 0x1C - bl __udivsi3 - strh r0, [r4] - strh r0, [r5, 0xC] - b _080EFB12 - .align 2, 0 -_080EFAA4: .4byte gUnknown_3005424 -_080EFAA8: .4byte gUnknown_300542C -_080EFAAC: .4byte gSprites -_080EFAB0: .4byte gUnknown_3005428 -_080EFAB4: - ldrh r0, [r5, 0x1C] - adds r0, 0x20 - strh r0, [r5, 0x1C] - movs r0, 0x1C - ldrsh r2, [r5, r0] - adds r0, r4, 0 - adds r1, r2, 0 - movs r3, 0 - bl SetSpriteRotScale - ldrh r0, [r5, 0xC] - ldrh r1, [r5, 0xE] - adds r0, r1 - strh r0, [r5, 0xE] - ldr r0, _080EFAF0 @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - movs r2, 0xE - ldrsh r0, [r5, r2] - negs r0, r0 - asrs r0, 8 - strh r0, [r1, 0x26] - movs r0, 0x1C - ldrsh r1, [r5, r0] - ldr r0, _080EFAF4 @ =0x0000047f - cmp r1, r0 - ble _080EFB48 - b _080EFB12 - .align 2, 0 -_080EFAF0: .4byte gSprites -_080EFAF4: .4byte 0x0000047f -_080EFAF8: - adds r0, r4, 0 - bl ResetSpriteRotScale - ldr r1, _080EFB1C @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080EFB12: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _080EFB48 - .align 2, 0 -_080EFB1C: .4byte gSprites -_080EFB20: - ldr r0, _080EFB50 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - movs r2, 0xA - ldrsh r0, [r1, r2] - cmp r0, 0xA - ble _080EFB48 - adds r0, r6, 0 - bl DestroyTask - adds r0, r7, 0 - movs r1, 0x2 - bl StartSpriteAnim - movs r0, 0 - strh r0, [r7, 0x38] - ldr r0, _080EFB54 @ =sub_80EFB58 - str r0, [r7, 0x1C] -_080EFB48: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EFB50: .4byte gTasks -_080EFB54: .4byte sub_80EFB58 - thumb_func_end sub_80EFA0C - - thumb_func_start sub_80EFB58 -sub_80EFB58: @ 80EFB58 - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080EFB92 - movs r1, 0 - strh r1, [r4, 0x34] - movs r0, 0x28 - strh r0, [r4, 0x36] - strh r1, [r4, 0x38] - movs r0, 0 - movs r1, 0x28 - bl Cos - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - movs r0, 0x36 - ldrsh r1, [r4, r0] - movs r0, 0 - bl Cos - negs r0, r0 - strh r0, [r4, 0x26] - ldr r0, _080EFB98 @ =sub_80EFB9C - str r0, [r4, 0x1C] -_080EFB92: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EFB98: .4byte sub_80EFB9C - thumb_func_end sub_80EFB58 - - thumb_func_start sub_80EFB9C -sub_80EFB9C: @ 80EFB9C - push {r4,r5,lr} - adds r4, r0, 0 - movs r5, 0 - ldrh r0, [r4, 0x34] - movs r1, 0xFF - ands r1, r0 - cmp r1, 0 - beq _080EFBB2 - cmp r1, 0x1 - beq _080EFC26 - b _080EFC52 -_080EFBB2: - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl Cos - negs r0, r0 - strh r0, [r4, 0x26] - ldrh r1, [r4, 0x38] - adds r1, 0x4 - ldrh r2, [r4, 0x34] - lsls r0, r2, 16 - asrs r0, 24 - adds r1, r0 - strh r1, [r4, 0x38] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x3F - ble _080EFC52 - ldrh r0, [r4, 0x36] - subs r0, 0xA - strh r0, [r4, 0x36] - ldr r1, _080EFBFC @ =0x00000101 - adds r0, r2, r1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 24 - cmp r0, 0x4 - bne _080EFBEE - movs r5, 0x1 -_080EFBEE: - cmp r0, 0x2 - beq _080EFC0E - cmp r0, 0x2 - bgt _080EFC00 - cmp r0, 0x1 - beq _080EFC06 - b _080EFC1E - .align 2, 0 -_080EFBFC: .4byte 0x00000101 -_080EFC00: - cmp r0, 0x3 - beq _080EFC16 - b _080EFC1E -_080EFC06: - movs r0, 0x31 - bl PlaySE - b _080EFC52 -_080EFC0E: - movs r0, 0x32 - bl PlaySE - b _080EFC52 -_080EFC16: - movs r0, 0x33 - bl PlaySE - b _080EFC52 -_080EFC1E: - movs r0, 0x34 - bl PlaySE - b _080EFC52 -_080EFC26: - movs r2, 0x38 - ldrsh r0, [r4, r2] - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl Cos - negs r0, r0 - strh r0, [r4, 0x26] - ldrh r1, [r4, 0x38] - subs r1, 0x4 - ldrh r2, [r4, 0x34] - lsls r0, r2, 16 - asrs r0, 24 - subs r1, r0 - strh r1, [r4, 0x38] - lsls r1, 16 - cmp r1, 0 - bgt _080EFC52 - strh r5, [r4, 0x38] - ldr r0, _080EFC80 @ =0xffffff00 - ands r0, r2 - strh r0, [r4, 0x34] -_080EFC52: - cmp r5, 0 - beq _080EFC96 - movs r5, 0 - strh r5, [r4, 0x34] - movs r0, 0x40 - movs r1, 0x28 - bl Cos - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - strh r5, [r4, 0x26] - ldr r0, _080EFC84 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _080EFC8C - strh r5, [r4, 0x38] - ldr r0, _080EFC88 @ =sub_80EFF80 - str r0, [r4, 0x1C] - b _080EFC96 - .align 2, 0 -_080EFC80: .4byte 0xffffff00 -_080EFC84: .4byte gBattleSpritesDataPtr -_080EFC88: .4byte sub_80EFF80 -_080EFC8C: - ldr r0, _080EFC9C @ =sub_80EFCA0 - str r0, [r4, 0x1C] - movs r0, 0x1 - strh r0, [r4, 0x36] - strh r5, [r4, 0x38] -_080EFC96: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EFC9C: .4byte sub_80EFCA0 - thumb_func_end sub_80EFB9C - - thumb_func_start sub_80EFCA0 -sub_80EFCA0: @ 80EFCA0 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x34] - adds r0, 0x1 - movs r5, 0 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1F - bne _080EFCDC - strh r5, [r4, 0x34] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r0, _080EFCE4 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - strh r5, [r0, 0xC] - ldr r0, _080EFCE8 @ =sub_80EFCEC - str r0, [r4, 0x1C] - movs r0, 0x17 - bl PlaySE -_080EFCDC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EFCE4: .4byte gBattleSpritesDataPtr -_080EFCE8: .4byte sub_80EFCEC - thumb_func_end sub_80EFCA0 - - thumb_func_start sub_80EFCEC -sub_80EFCEC: @ 80EFCEC - push {r4-r6,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x34] - movs r1, 0xFF - ands r1, r0 - cmp r1, 0x6 - bls _080EFCFC - b _080EFF34 -_080EFCFC: - lsls r0, r1, 2 - ldr r1, _080EFD08 @ =_080EFD0C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080EFD08: .4byte _080EFD0C - .align 2, 0 -_080EFD0C: - .4byte _080EFD28 - .4byte _080EFD7A - .4byte _080EFDC0 - .4byte _080EFE20 - .4byte _080EFE70 - .4byte _080EFED4 - .4byte _080EFF34 -_080EFD28: - ldr r1, _080EFD4C @ =gBattleSpritesDataPtr - ldr r5, [r1] - ldr r2, [r5, 0x8] - ldrh r3, [r2, 0xC] - movs r6, 0xC - ldrsh r0, [r2, r6] - adds r6, r1, 0 - cmp r0, 0xFF - ble _080EFD50 - ldrh r0, [r4, 0x36] - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - ldr r1, [r5, 0x8] - ldrb r0, [r1, 0xC] - strh r0, [r1, 0xC] - b _080EFD56 - .align 2, 0 -_080EFD4C: .4byte gBattleSpritesDataPtr -_080EFD50: - adds r0, r3, 0 - adds r0, 0xB0 - strh r0, [r2, 0xC] -_080EFD56: - ldrh r0, [r4, 0x38] - adds r0, 0x1 - movs r3, 0 - strh r0, [r4, 0x38] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - ldrh r0, [r4, 0x38] - adds r0, 0x7 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xE - bhi _080EFD78 - b _080EFF7A -_080EFD78: - b _080EFE10 -_080EFD7A: - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080EFE2C - movs r0, 0 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x36] - negs r0, r0 - strh r0, [r4, 0x36] - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - movs r6, 0x36 - ldrsh r0, [r4, r6] - cmp r0, 0 - bge _080EFDB6 - adds r0, r4, 0 - movs r1, 0x2 - bl ChangeSpriteAffineAnim - b _080EFF7A -_080EFDB6: - adds r0, r4, 0 - movs r1, 0x1 - bl ChangeSpriteAffineAnim - b _080EFF7A -_080EFDC0: - ldr r1, _080EFDE4 @ =gBattleSpritesDataPtr - ldr r5, [r1] - ldr r2, [r5, 0x8] - ldrh r3, [r2, 0xC] - movs r6, 0xC - ldrsh r0, [r2, r6] - adds r6, r1, 0 - cmp r0, 0xFF - ble _080EFDE8 - ldrh r0, [r4, 0x36] - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - ldr r1, [r5, 0x8] - ldrb r0, [r1, 0xC] - strh r0, [r1, 0xC] - b _080EFDEE - .align 2, 0 -_080EFDE4: .4byte gBattleSpritesDataPtr -_080EFDE8: - adds r0, r3, 0 - adds r0, 0xB0 - strh r0, [r2, 0xC] -_080EFDEE: - ldrh r0, [r4, 0x38] - adds r0, 0x1 - movs r3, 0 - strh r0, [r4, 0x38] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - ldrh r0, [r4, 0x38] - adds r0, 0xC - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x18 - bhi _080EFE10 - b _080EFF7A -_080EFE10: - ldr r0, [r6] - ldr r0, [r0, 0x8] - strh r3, [r0, 0xC] - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - strh r3, [r4, 0x38] - b _080EFF7A -_080EFE20: - ldrh r0, [r4, 0x38] - adds r1, r0, 0x1 - strh r1, [r4, 0x38] - lsls r0, 16 - cmp r0, 0 - bge _080EFE3A -_080EFE2C: - adds r0, r4, 0 - adds r0, 0x2C - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] - b _080EFF7A -_080EFE3A: - movs r0, 0 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x36] - negs r0, r0 - strh r0, [r4, 0x36] - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - movs r6, 0x36 - ldrsh r0, [r4, r6] - cmp r0, 0 - bge _080EFE68 - adds r0, r4, 0 - movs r1, 0x2 - bl ChangeSpriteAffineAnim - b _080EFE70 -_080EFE68: - adds r0, r4, 0 - movs r1, 0x1 - bl ChangeSpriteAffineAnim -_080EFE70: - ldr r1, _080EFE94 @ =gBattleSpritesDataPtr - ldr r5, [r1] - ldr r2, [r5, 0x8] - ldrh r3, [r2, 0xC] - movs r6, 0xC - ldrsh r0, [r2, r6] - adds r6, r1, 0 - cmp r0, 0xFF - ble _080EFE98 - ldrh r0, [r4, 0x36] - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - ldr r1, [r5, 0x8] - ldrb r0, [r1, 0xC] - strh r0, [r1, 0xC] - b _080EFE9E - .align 2, 0 -_080EFE94: .4byte gBattleSpritesDataPtr -_080EFE98: - adds r0, r3, 0 - adds r0, 0xB0 - strh r0, [r2, 0xC] -_080EFE9E: - ldrh r0, [r4, 0x38] - adds r0, 0x1 - movs r3, 0 - strh r0, [r4, 0x38] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - ldrh r0, [r4, 0x38] - adds r0, 0x4 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x8 - bls _080EFF7A - ldr r0, [r6] - ldr r0, [r0, 0x8] - strh r3, [r0, 0xC] - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - strh r3, [r4, 0x38] - ldrh r0, [r4, 0x36] - negs r0, r0 - strh r0, [r4, 0x36] - b _080EFF7A -_080EFED4: - movs r6, 0x80 - lsls r6, 1 - adds r0, r6, 0 - ldrh r1, [r4, 0x34] - adds r0, r1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r1, r0, 24 - ldr r0, _080EFF04 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x8] - cmp r1, r0 - bne _080EFF0C - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080EFF08 @ =sub_80EFF80 - str r0, [r4, 0x1C] - b _080EFF7A - .align 2, 0 -_080EFF04: .4byte gBattleSpritesDataPtr -_080EFF08: .4byte sub_80EFF80 -_080EFF0C: - cmp r0, 0x4 - bne _080EFF20 - cmp r1, 0x3 - bne _080EFF20 - ldr r0, _080EFF1C @ =sub_80EFFA4 - str r0, [r4, 0x1C] - b _080EFF26 - .align 2, 0 -_080EFF1C: .4byte sub_80EFFA4 -_080EFF20: - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] -_080EFF26: - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - b _080EFF7A -_080EFF34: - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1F - bne _080EFF7A - movs r0, 0 - strh r0, [r4, 0x38] - ldrh r1, [r4, 0x34] - ldr r0, _080EFF68 @ =0xffffff00 - ands r0, r1 - strh r0, [r4, 0x34] - adds r0, r4, 0 - movs r1, 0x3 - bl StartSpriteAffineAnim - movs r6, 0x36 - ldrsh r0, [r4, r6] - cmp r0, 0 - bge _080EFF6C - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAffineAnim - b _080EFF74 - .align 2, 0 -_080EFF68: .4byte 0xffffff00 -_080EFF6C: - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_080EFF74: - movs r0, 0x17 - bl PlaySE -_080EFF7A: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80EFCEC - - thumb_func_start sub_80EFF80 -sub_80EFF80: @ 80EFF80 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x38] - adds r0, 0x1 - strh r0, [r1, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1F - bne _080EFF9A - movs r0, 0 - strh r0, [r1, 0x38] - ldr r0, _080EFFA0 @ =sub_80F02B0 - str r0, [r1, 0x1C] -_080EFF9A: - pop {r0} - bx r0 - .align 2, 0 -_080EFFA0: .4byte sub_80F02B0 - thumb_func_end sub_80EFF80 - - thumb_func_start sub_80EFFA4 -sub_80EFFA4: @ 80EFFA4 - adds r3, r0, 0 - adds r3, 0x2C - ldrb r1, [r3] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r3] - ldr r1, _080EFFC0 @ =sub_80EFFC4 - str r1, [r0, 0x1C] - movs r1, 0 - strh r1, [r0, 0x34] - strh r1, [r0, 0x36] - strh r1, [r0, 0x38] - bx lr - .align 2, 0 -_080EFFC0: .4byte sub_80EFFC4 - thumb_func_end sub_80EFFA4 - - thumb_func_start sub_80EFFC4 -sub_80EFFC4: @ 80EFFC4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r6, r0, 0 - ldr r7, _080F0004 @ =gBattleAnimTarget - ldrh r0, [r6, 0x36] - adds r0, 0x1 - movs r1, 0 - mov r8, r1 - strh r0, [r6, 0x36] - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0x28 - bne _080F0008 - movs r0, 0xF7 - bl PlaySE - ldrb r1, [r6, 0x5] - lsrs r1, 4 - movs r0, 0x80 - lsls r0, 9 - lsls r0, r1 - movs r1, 0x6 - movs r2, 0 - bl BlendPalettes - adds r0, r6, 0 - bl sub_80F01B8 - b _080F0088 - .align 2, 0 -_080F0004: .4byte gBattleAnimTarget -_080F0008: - cmp r1, 0x3C - bne _080F0026 - ldrb r1, [r6, 0x5] - lsrs r1, 4 - movs r0, 0x80 - lsls r0, 9 - lsls r0, r1 - mov r1, r8 - str r1, [sp] - movs r1, 0x2 - movs r2, 0x6 - movs r3, 0 - bl BeginNormalPaletteFade - b _080F0088 -_080F0026: - cmp r1, 0x5F - bne _080F004C - ldr r0, _080F0044 @ =gDoingBattleAnim - movs r1, 0 - strb r1, [r0] - movs r0, 0x1 - bl UpdateOamPriorityInAllHealthboxes - bl m4aMPlayAllStop - ldr r0, _080F0048 @ =0x0000013f - bl PlaySE - b _080F0088 - .align 2, 0 -_080F0044: .4byte gDoingBattleAnim -_080F0048: .4byte 0x0000013f -_080F004C: - ldr r0, _080F0094 @ =0x0000013b - cmp r1, r0 - bne _080F0088 - ldr r5, _080F0098 @ =gSprites - ldr r4, _080F009C @ =gBattlerSpriteIds - ldrb r0, [r7] - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r0, [r0, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldrb r0, [r7] - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - bl DestroySprite - mov r0, r8 - strh r0, [r6, 0x2E] - ldr r0, _080F00A0 @ =sub_80F00A4 - str r0, [r6, 0x1C] -_080F0088: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F0094: .4byte 0x0000013b -_080F0098: .4byte gSprites -_080F009C: .4byte gBattlerSpriteIds -_080F00A0: .4byte sub_80F00A4 - thumb_func_end sub_80EFFC4 - - thumb_func_start sub_80F00A4 -sub_80F00A4: @ 80F00A4 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080F0110 - cmp r0, 0x1 - bgt _080F00BC - cmp r0, 0 - beq _080F00C2 - b _080F0156 -_080F00BC: - cmp r0, 0x2 - beq _080F0142 - b _080F0156 -_080F00C2: - strh r0, [r4, 0x30] - strh r0, [r4, 0x32] - ldrb r1, [r4, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - strb r0, [r4, 0x1] - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0x10 - bl SetGpuReg - ldr r0, [r4, 0x14] - ldrh r0, [r0, 0x2] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x10 - movs r1, 0x1 - lsls r1, r0 - ldr r0, _080F010C @ =0x00007fff - str r0, [sp] - adds r0, r1, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _080F014E - .align 2, 0 -_080F010C: .4byte 0x00007fff -_080F0110: - ldrh r0, [r4, 0x30] - adds r1, r0, 0x1 - strh r1, [r4, 0x30] - lsls r0, 16 - cmp r0, 0 - ble _080F017C - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r2, [r4, 0x32] - adds r2, 0x1 - strh r2, [r4, 0x32] - lsls r1, r2, 8 - movs r0, 0x10 - subs r0, r2 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _080F017C - b _080F014E -_080F0142: - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_080F014E: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080F017C -_080F0156: - ldr r0, _080F0184 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _080F017C - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - strh r5, [r4, 0x2E] - ldr r0, _080F0188 @ =sub_80F018C - str r0, [r4, 0x1C] -_080F017C: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F0184: .4byte gPaletteFade -_080F0188: .4byte sub_80F018C - thumb_func_end sub_80F00A4 - - thumb_func_start sub_80F018C -sub_80F018C: @ 80F018C - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080F01A4 - ldr r0, _080F01A0 @ =0x0000ffff - strh r0, [r4, 0x2E] - b _080F01B0 - .align 2, 0 -_080F01A0: .4byte 0x0000ffff -_080F01A4: - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite -_080F01B0: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80F018C - - thumb_func_start sub_80F01B8 -sub_80F01B8: @ 80F01B8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r6, r0, 0 - adds r1, r6, 0 - adds r1, 0x43 - ldrb r0, [r1] - cmp r0, 0 - beq _080F01D8 - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - b _080F01E0 -_080F01D8: - movs r0, 0 - mov r8, r0 - movs r0, 0x1 - strb r0, [r1] -_080F01E0: - movs r0, 0x4 - bl sub_80F05B4 - movs r7, 0 - ldr r2, _080F0264 @ =gSprites - mov r9, r2 - movs r0, 0x1C - add r0, r9 - mov r10, r0 -_080F01F2: - movs r2, 0x20 - ldrsh r1, [r6, r2] - movs r0, 0x22 - ldrsh r2, [r6, r0] - ldr r0, _080F0268 @ =gUnknown_840C104 - mov r3, r8 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _080F024E - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - mov r2, r9 - adds r5, r4, r2 - movs r0, 0x18 - strh r0, [r5, 0x2E] - ldr r0, _080F026C @ =gUnknown_840BF3C - lsls r1, r7, 2 - adds r1, r0 - movs r0, 0 - ldrsb r0, [r1, r0] - ldrh r2, [r6, 0x20] - adds r0, r2 - strh r0, [r5, 0x32] - movs r0, 0x1 - ldrsb r0, [r1, r0] - ldrh r2, [r6, 0x22] - adds r0, r2 - strh r0, [r5, 0x36] - movs r0, 0x2 - ldrsb r0, [r1, r0] - strh r0, [r5, 0x38] - adds r0, r5, 0 - bl InitAnimArcTranslation - add r4, r10 - ldr r0, _080F0270 @ =sub_80F0278 - str r0, [r4] - ldr r0, _080F0274 @ =gUnknown_840C068 - ldrb r1, [r0, 0x4] - adds r0, r5, 0 - bl StartSpriteAnim -_080F024E: - adds r7, 0x1 - cmp r7, 0x2 - bls _080F01F2 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F0264: .4byte gSprites -_080F0268: .4byte gUnknown_840C104 -_080F026C: .4byte gUnknown_840BF3C -_080F0270: .4byte sub_80F0278 -_080F0274: .4byte gUnknown_840C068 - thumb_func_end sub_80F01B8 - - thumb_func_start sub_80F0278 -sub_80F0278: @ 80F0278 - push {r4,lr} - adds r4, r0, 0 - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsrs r1, r2, 2 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - adds r0, r4, 0 - bl TranslateAnimHorizontalArc - lsls r0, 24 - cmp r0, 0 - beq _080F02A8 - adds r0, r4, 0 - bl DestroySprite -_080F02A8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80F0278 - - thumb_func_start sub_80F02B0 -sub_80F02B0: @ 80F02B0 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - movs r1, 0x1 - bl StartSpriteAnim - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAffineAnim - ldr r0, _080F0364 @ =sub_80F0378 - str r0, [r4, 0x1C] - ldr r0, _080F0368 @ =gLastUsedItem - ldrh r0, [r0] - bl ItemIdToBallId - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xB - bgt _080F0302 - cmp r5, 0 - blt _080F0302 - ldrh r0, [r4, 0x20] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x22] - subs r1, 0x5 - lsls r1, 24 - lsrs r1, 24 - str r5, [sp] - movs r2, 0x1 - movs r3, 0x1C - bl LaunchBallStarsTask - ldr r0, _080F036C @ =gBattleAnimTarget - ldrb r1, [r0] - movs r0, 0x1 - movs r2, 0xE - adds r3, r5, 0 - bl LaunchBallFadeMonTask -_080F0302: - ldr r6, _080F0370 @ =gSprites - ldr r5, _080F0374 @ =gBattlerSpriteIds - ldr r4, _080F036C @ =gBattleAnimTarget - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - bl AnimateSprite - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x80 - lsls r1, 5 - strh r1, [r0, 0x30] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F0364: .4byte sub_80F0378 -_080F0368: .4byte gLastUsedItem -_080F036C: .4byte gBattleAnimTarget -_080F0370: .4byte gSprites -_080F0374: .4byte gBattlerSpriteIds - thumb_func_end sub_80F02B0 - - thumb_func_start sub_80F0378 -sub_80F0378: @ 80F0378 - push {r4-r7,lr} - adds r7, r0, 0 - movs r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080F0396 - adds r2, r7, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_080F0396: - ldr r4, _080F03C4 @ =gSprites - ldr r3, _080F03C8 @ =gBattlerSpriteIds - ldr r2, _080F03CC @ =gBattleAnimTarget - ldrb r0, [r2] - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r4 - adds r0, r1, 0 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 26 - cmp r0, 0 - bge _080F03D0 - adds r0, r1, 0 - movs r1, 0 - bl StartSpriteAffineAnim - movs r5, 0x1 - b _080F03F0 - .align 2, 0 -_080F03C4: .4byte gSprites -_080F03C8: .4byte gBattlerSpriteIds -_080F03CC: .4byte gBattleAnimTarget -_080F03D0: - ldr r6, _080F045C @ =0xfffffee0 - adds r0, r6, 0 - ldrh r6, [r1, 0x30] - adds r0, r6 - strh r0, [r1, 0x30] - ldrb r0, [r2] - adds r0, r3 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 24 - strh r0, [r1, 0x26] -_080F03F0: - adds r0, r7, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080F0456 - cmp r5, 0 - beq _080F0456 - ldr r4, _080F0460 @ =gSprites - ldr r3, _080F0464 @ =gBattlerSpriteIds - ldr r2, _080F0468 @ =gBattleAnimTarget - ldrb r0, [r2] - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r6, 0 - movs r5, 0 - strh r5, [r0, 0x26] - ldrb r0, [r2] - adds r0, r3 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r4 - ldr r0, _080F046C @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r1, [r0, 0x9] - lsls r1, 30 - adds r2, 0x3E - lsrs r1, 31 - lsls r1, 2 - ldrb r3, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - strh r5, [r7, 0x2E] - ldr r0, _080F0470 @ =sub_80F018C - str r0, [r7, 0x1C] - ldr r0, _080F0474 @ =gDoingBattleAnim - strb r6, [r0] - movs r0, 0x1 - bl UpdateOamPriorityInAllHealthboxes -_080F0456: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F045C: .4byte 0xfffffee0 -_080F0460: .4byte gSprites -_080F0464: .4byte gBattlerSpriteIds -_080F0468: .4byte gBattleAnimTarget -_080F046C: .4byte gBattleSpritesDataPtr -_080F0470: .4byte sub_80F018C -_080F0474: .4byte gDoingBattleAnim - thumb_func_end sub_80F0378 - - thumb_func_start sub_80F0478 -sub_80F0478: @ 80F0478 - push {r4,lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x24] - ldrh r1, [r2, 0x20] - adds r0, r1 - movs r1, 0 - strh r0, [r2, 0x20] - ldrh r0, [r2, 0x26] - ldrh r3, [r2, 0x22] - adds r0, r3 - strh r0, [r2, 0x22] - strh r1, [r2, 0x26] - strh r1, [r2, 0x24] - ldr r4, _080F04B0 @ =sub_80F04B4 - movs r3, 0 - movs r1, 0x5 - adds r0, r2, 0 - adds r0, 0x38 -_080F049C: - strh r3, [r0] - subs r0, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _080F049C - str r4, [r2, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F04B0: .4byte sub_80F04B4 - thumb_func_end sub_80F0478 - - thumb_func_start sub_80F04B4 -sub_80F04B4: @ 80F04B4 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x80 - lsls r0, 4 - adds r2, r0, 0 - ldrh r1, [r4, 0x2E] - adds r2, r1 - movs r0, 0xD0 - lsls r0, 3 - adds r3, r0, 0 - ldrh r1, [r4, 0x30] - adds r3, r1 - lsls r1, r3, 16 - asrs r1, 24 - ldrh r0, [r4, 0x24] - subs r0, r1 - strh r0, [r4, 0x24] - lsls r0, r2, 16 - asrs r0, 24 - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - movs r0, 0xFF - ands r2, r0 - strh r2, [r4, 0x2E] - ands r3, r0 - strh r3, [r4, 0x30] - movs r2, 0x22 - ldrsh r0, [r4, r2] - movs r2, 0x26 - ldrsh r1, [r4, r2] - adds r0, r1 - cmp r0, 0xA0 - bgt _080F050A - movs r1, 0x20 - ldrsh r0, [r4, r1] - movs r2, 0x24 - ldrsh r1, [r4, r2] - adds r0, r1 - movs r1, 0x8 - negs r1, r1 - cmp r0, r1 - bge _080F051E -_080F050A: - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r0, _080F0524 @ =sub_80F018C - str r0, [r4, 0x1C] - ldr r1, _080F0528 @ =gDoingBattleAnim - movs r0, 0 - strb r0, [r1] - movs r0, 0x1 - bl UpdateOamPriorityInAllHealthboxes -_080F051E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F0524: .4byte sub_80F018C -_080F0528: .4byte gDoingBattleAnim - thumb_func_end sub_80F04B4 - - thumb_func_start sub_80F052C -sub_80F052C: @ 80F052C - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x24] - ldrh r0, [r4, 0x20] - adds r1, r0 - movs r0, 0 - strh r1, [r4, 0x20] - ldrh r2, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r2, r3 - strh r2, [r4, 0x22] - strh r0, [r4, 0x26] - strh r0, [r4, 0x24] - movs r0, 0x22 - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] - subs r1, 0x8 - strh r1, [r4, 0x32] - strh r2, [r4, 0x34] - movs r0, 0x90 - strh r0, [r4, 0x36] - movs r0, 0x20 - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl InitAnimArcTranslation - adds r0, r4, 0 - bl TranslateAnimVerticalArc - ldr r0, _080F0570 @ =sub_80F0574 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F0570: .4byte sub_80F0574 - thumb_func_end sub_80F052C - - thumb_func_start sub_80F0574 -sub_80F0574: @ 80F0574 - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimVerticalArc - lsls r0, 24 - cmp r0, 0 - bne _080F0590 - movs r1, 0x22 - ldrsh r0, [r4, r1] - movs r2, 0x26 - ldrsh r1, [r4, r2] - adds r0, r1 - cmp r0, 0x40 - ble _080F05A4 -_080F0590: - movs r1, 0 - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r0, _080F05AC @ =sub_80F018C - str r0, [r4, 0x1C] - ldr r0, _080F05B0 @ =gDoingBattleAnim - strb r1, [r0] - movs r0, 0x1 - bl UpdateOamPriorityInAllHealthboxes -_080F05A4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F05AC: .4byte sub_80F018C -_080F05B0: .4byte gDoingBattleAnim - thumb_func_end sub_80F0574 - - thumb_func_start sub_80F05B4 -sub_80F05B4: @ 80F05B4 - push {r4,r5,lr} - lsls r0, 24 - ldr r1, _080F05E0 @ =gUnknown_840BF48 - lsrs r5, r0, 21 - adds r4, r5, r1 - ldrh r0, [r4, 0x6] - bl GetSpriteTileStartByTag - lsls r0, 16 - ldr r1, _080F05E4 @ =0xffff0000 - cmp r0, r1 - bne _080F05DA - adds r0, r4, 0 - bl LoadCompressedSpriteSheetUsingHeap - ldr r0, _080F05E8 @ =gUnknown_840BFA8 - adds r0, r5, r0 - bl LoadCompressedSpritePaletteUsingHeap -_080F05DA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F05E0: .4byte gUnknown_840BF48 -_080F05E4: .4byte 0xffff0000 -_080F05E8: .4byte gUnknown_840BFA8 - thumb_func_end sub_80F05B4 - - thumb_func_start LaunchBallStarsTask -LaunchBallStarsTask: @ 80F05EC - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - adds r6, r0, 0 - mov r8, r1 - mov r9, r2 - mov r10, r3 - ldr r5, [sp, 0x1C] - lsls r6, 24 - lsrs r6, 24 - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - mov r1, r9 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - mov r0, r10 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - lsls r5, 24 - lsrs r5, 24 - adds r0, r5, 0 - bl sub_80F05B4 - ldr r1, _080F066C @ =gUnknown_840C074 - lsls r0, r5, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x5 - bl CreateTask - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _080F0670 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - strh r6, [r0, 0xA] - mov r1, r8 - strh r1, [r0, 0xC] - mov r1, r9 - strh r1, [r0, 0xE] - mov r1, r10 - strh r1, [r0, 0x10] - strh r5, [r0, 0x26] - movs r0, 0xF - bl PlaySE - adds r0, r4, 0 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080F066C: .4byte gUnknown_840C074 -_080F0670: .4byte gTasks - thumb_func_end LaunchBallStarsTask - - thumb_func_start sub_80F0674 -sub_80F0674: @ 80F0674 - push {lr} - ldr r0, _080F0698 @ =gMain - ldr r1, _080F069C @ =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080F0692 - ldr r0, _080F06A0 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x8] - ldrb r0, [r1, 0xA] - adds r0, 0x1 - strb r0, [r1, 0xA] -_080F0692: - pop {r0} - bx r0 - .align 2, 0 -_080F0698: .4byte gMain -_080F069C: .4byte 0x00000439 -_080F06A0: .4byte gBattleSpritesDataPtr - thumb_func_end sub_80F0674 - - thumb_func_start sub_80F06A4 -sub_80F06A4: @ 80F06A4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _080F0780 @ =gTasks - lsls r0, 2 - add r0, r8 - lsls r0, 3 - adds r6, r0, r1 - ldrh r0, [r6, 0x26] - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - movs r2, 0x8 - ldrsh r0, [r6, r2] - adds r2, r1, 0 - cmp r0, 0xF - bgt _080F079C - ldrb r1, [r6, 0xA] - ldrb r2, [r6, 0xC] - ldrb r4, [r6, 0xE] - mov r9, r4 - ldrb r3, [r6, 0x10] - ldr r4, [sp] - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 3 - ldr r4, _080F0784 @ =gUnknown_840C0A4 - adds r0, r4 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - cmp r0, 0x40 - beq _080F0740 - bl sub_80F0674 - mov r0, r10 - lsls r4, r0, 4 - add r4, r10 - lsls r4, 2 - ldr r5, _080F0788 @ =gSprites - adds r7, r4, r5 - ldr r0, _080F078C @ =gUnknown_840C068 - ldr r1, [sp] - adds r0, r1, r0 - ldrb r1, [r0] - adds r0, r7, 0 - bl StartSpriteAnim - adds r5, 0x1C - adds r4, r5 - ldr r0, _080F0790 @ =sub_80F07BC - str r0, [r4] - movs r0, 0x3 - mov r2, r9 - ands r2, r0 - lsls r2, 2 - ldrb r1, [r7, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - orrs r0, r2 - strb r0, [r7, 0x5] - ldrb r0, [r6, 0x8] - cmp r0, 0x7 - bls _080F073C - subs r0, 0x8 - lsls r0, 24 - lsrs r0, 24 -_080F073C: - lsls r0, 5 - strh r0, [r7, 0x2E] -_080F0740: - ldr r0, _080F0780 @ =gTasks - mov r4, r8 - lsls r1, r4, 2 - add r1, r8 - lsls r1, 3 - adds r1, r0 - movs r2, 0x8 - ldrsh r1, [r1, r2] - adds r2, r0, 0 - cmp r1, 0xF - bne _080F079C - ldr r0, _080F0794 @ =gMain - ldr r4, _080F0798 @ =0x00000439 - adds r0, r4 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080F0776 - ldr r0, _080F0788 @ =gSprites - mov r2, r10 - lsls r1, r2, 4 - add r1, r10 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_080F0776: - mov r0, r8 - bl DestroyTask - b _080F07AC - .align 2, 0 -_080F0780: .4byte gTasks -_080F0784: .4byte gUnknown_840C0A4 -_080F0788: .4byte gSprites -_080F078C: .4byte gUnknown_840C068 -_080F0790: .4byte sub_80F07BC -_080F0794: .4byte gMain -_080F0798: .4byte 0x00000439 -_080F079C: - mov r4, r8 - lsls r0, r4, 2 - add r0, r8 - lsls r0, 3 - adds r0, r2 - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] -_080F07AC: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80F06A4 - - thumb_func_start sub_80F07BC -sub_80F07BC: @ 80F07BC - push {lr} - adds r1, r0, 0 - ldrh r2, [r1, 0x30] - movs r3, 0x30 - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _080F07D4 - ldr r0, _080F07D0 @ =sub_80F07DC - str r0, [r1, 0x1C] - b _080F07D8 - .align 2, 0 -_080F07D0: .4byte sub_80F07DC -_080F07D4: - subs r0, r2, 0x1 - strh r0, [r1, 0x30] -_080F07D8: - pop {r0} - bx r0 - thumb_func_end sub_80F07BC - - thumb_func_start sub_80F07DC -sub_80F07DC: @ 80F07DC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r2, 0x30 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r2, 0x30 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x2 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x32 - bne _080F0810 - adds r0, r4, 0 - bl sub_80F1198 -_080F0810: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80F07DC - - thumb_func_start sub_80F0818 -sub_80F0818: @ 80F0818 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r0, _080F08FC @ =gTasks - mov r2, r9 - lsls r1, r2, 2 - add r1, r9 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldrb r3, [r1, 0xA] - str r3, [sp] - ldrb r0, [r1, 0xC] - str r0, [sp, 0x4] - ldrb r2, [r1, 0xE] - str r2, [sp, 0x8] - ldrb r1, [r1, 0x10] - str r1, [sp, 0xC] - movs r7, 0 - ldr r3, _080F0900 @ =gSprites - mov r10, r3 - mov r1, r8 - lsls r0, r1, 1 - add r0, r8 - lsls r0, 3 - str r0, [sp, 0x10] -_080F085E: - ldr r0, _080F0904 @ =gUnknown_840C0A4 - ldr r2, [sp, 0x10] - adds r0, r2, r0 - ldr r1, [sp] - ldr r2, [sp, 0x4] - ldr r3, [sp, 0xC] - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x40 - beq _080F08BE - bl sub_80F0674 - lsls r4, r6, 4 - adds r4, r6 - lsls r4, 2 - mov r3, r10 - adds r5, r4, r3 - ldr r0, _080F0908 @ =gUnknown_840C068 - add r0, r8 - ldrb r1, [r0] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r0, _080F090C @ =gSprites + 0x1C - adds r4, r0 - ldr r0, _080F0910 @ =sub_80F0D5C - str r0, [r4] - movs r0, 0x3 - ldr r2, [sp, 0x8] - ands r2, r0 - lsls r2, 2 - ldrb r0, [r5, 0x5] - movs r3, 0xD - negs r3, r3 - adds r1, r3, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r5, 0x5] - lsls r0, r7, 5 - strh r0, [r5, 0x2E] - movs r0, 0xA - strh r0, [r5, 0x36] - movs r0, 0x2 - strh r0, [r5, 0x38] - movs r0, 0x1 - strh r0, [r5, 0x3A] -_080F08BE: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x7 - bls _080F085E - ldr r0, _080F0914 @ =gMain - ldr r1, _080F0918 @ =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080F08E6 - ldr r0, _080F0900 @ =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_080F08E6: - mov r0, r9 - bl DestroyTask - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F08FC: .4byte gTasks -_080F0900: .4byte gSprites -_080F0904: .4byte gUnknown_840C0A4 -_080F0908: .4byte gUnknown_840C068 -_080F090C: .4byte gSprites + 0x1C -_080F0910: .4byte sub_80F0D5C -_080F0914: .4byte gMain -_080F0918: .4byte 0x00000439 - thumb_func_end sub_80F0818 - - thumb_func_start sub_80F091C -sub_80F091C: @ 80F091C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r0, _080F0A00 @ =gTasks - mov r2, r9 - lsls r1, r2, 2 - add r1, r9 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldrb r3, [r1, 0xA] - str r3, [sp] - ldrb r0, [r1, 0xC] - str r0, [sp, 0x4] - ldrb r2, [r1, 0xE] - str r2, [sp, 0x8] - ldrb r1, [r1, 0x10] - str r1, [sp, 0xC] - movs r7, 0 - ldr r3, _080F0A04 @ =gSprites - mov r10, r3 - mov r1, r8 - lsls r0, r1, 1 - add r0, r8 - lsls r0, 3 - str r0, [sp, 0x10] -_080F0962: - ldr r0, _080F0A08 @ =gUnknown_840C0A4 - ldr r2, [sp, 0x10] - adds r0, r2, r0 - ldr r1, [sp] - ldr r2, [sp, 0x4] - ldr r3, [sp, 0xC] - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x40 - beq _080F09C2 - bl sub_80F0674 - lsls r4, r6, 4 - adds r4, r6 - lsls r4, 2 - mov r3, r10 - adds r5, r4, r3 - ldr r0, _080F0A0C @ =gUnknown_840C068 - add r0, r8 - ldrb r1, [r0] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r0, _080F0A10 @ =gSprites + 0x1C - adds r4, r0 - ldr r0, _080F0A14 @ =sub_80F0D5C - str r0, [r4] - movs r0, 0x3 - ldr r2, [sp, 0x8] - ands r2, r0 - lsls r2, 2 - ldrb r0, [r5, 0x5] - movs r3, 0xD - negs r3, r3 - adds r1, r3, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r5, 0x5] - lsls r0, r7, 5 - strh r0, [r5, 0x2E] - movs r0, 0xA - strh r0, [r5, 0x36] - movs r0, 0x1 - strh r0, [r5, 0x38] - movs r0, 0x2 - strh r0, [r5, 0x3A] -_080F09C2: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x7 - bls _080F0962 - ldr r0, _080F0A18 @ =gMain - ldr r1, _080F0A1C @ =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080F09EA - ldr r0, _080F0A04 @ =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_080F09EA: - mov r0, r9 - bl DestroyTask - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F0A00: .4byte gTasks -_080F0A04: .4byte gSprites -_080F0A08: .4byte gUnknown_840C0A4 -_080F0A0C: .4byte gUnknown_840C068 -_080F0A10: .4byte gSprites + 0x1C -_080F0A14: .4byte sub_80F0D5C -_080F0A18: .4byte gMain -_080F0A1C: .4byte 0x00000439 - thumb_func_end sub_80F091C - - thumb_func_start sub_80F0A20 -sub_80F0A20: @ 80F0A20 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r1, _080F0B00 @ =gTasks - lsls r0, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x26] - lsls r1, 24 - lsrs r1, 24 - ldrb r2, [r0, 0xA] - str r2, [sp] - ldrb r3, [r0, 0xC] - str r3, [sp, 0x4] - ldrb r2, [r0, 0xE] - str r2, [sp, 0x8] - ldrb r0, [r0, 0x10] - str r0, [sp, 0xC] - movs r7, 0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - str r0, [sp, 0x10] - ldr r3, _080F0B04 @ =gSprites - mov r8, r3 - ldr r0, _080F0B08 @ =gUnknown_840C068 - adds r1, r0 - mov r10, r1 -_080F0A66: - ldr r0, _080F0B0C @ =gUnknown_840C0A4 - ldr r1, [sp, 0x10] - adds r0, r1, r0 - ldr r1, [sp] - ldr r2, [sp, 0x4] - ldr r3, [sp, 0xC] - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x40 - beq _080F0AC2 - bl sub_80F0674 - lsls r4, r6, 4 - adds r4, r6 - lsls r4, 2 - mov r2, r8 - adds r5, r4, r2 - mov r3, r10 - ldrb r1, [r3] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r0, _080F0B10 @ =gSprites + 0x1C - adds r4, r0 - ldr r0, _080F0B14 @ =sub_80F0D5C - str r0, [r4] - movs r0, 0x3 - ldr r2, [sp, 0x8] - ands r2, r0 - lsls r2, 2 - ldrb r0, [r5, 0x5] - movs r3, 0xD - negs r3, r3 - adds r1, r3, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r5, 0x5] - lsls r0, r7, 5 - strh r0, [r5, 0x2E] - movs r0, 0x4 - strh r0, [r5, 0x36] - movs r0, 0x1 - strh r0, [r5, 0x38] - strh r0, [r5, 0x3A] -_080F0AC2: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x7 - bls _080F0A66 - ldr r0, _080F0B18 @ =gMain - ldr r1, _080F0B1C @ =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080F0AEA - ldr r0, _080F0B04 @ =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_080F0AEA: - mov r0, r9 - bl DestroyTask - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F0B00: .4byte gTasks -_080F0B04: .4byte gSprites -_080F0B08: .4byte gUnknown_840C068 -_080F0B0C: .4byte gUnknown_840C0A4 -_080F0B10: .4byte gSprites + 0x1C -_080F0B14: .4byte sub_80F0D5C -_080F0B18: .4byte gMain -_080F0B1C: .4byte 0x00000439 - thumb_func_end sub_80F0A20 - - thumb_func_start sub_80F0B20 -sub_80F0B20: @ 80F0B20 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r0, _080F0C08 @ =gTasks - mov r2, r9 - lsls r1, r2, 2 - add r1, r9 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldrb r3, [r1, 0xA] - str r3, [sp] - ldrb r0, [r1, 0xC] - str r0, [sp, 0x4] - ldrb r2, [r1, 0xE] - str r2, [sp, 0x8] - ldrb r1, [r1, 0x10] - str r1, [sp, 0xC] - movs r7, 0 - ldr r3, _080F0C0C @ =gSprites - mov r10, r3 - mov r1, r8 - lsls r0, r1, 1 - add r0, r8 - lsls r0, 3 - str r0, [sp, 0x10] -_080F0B66: - ldr r0, _080F0C10 @ =gUnknown_840C0A4 - ldr r2, [sp, 0x10] - adds r0, r2, r0 - ldr r1, [sp] - ldr r2, [sp, 0x4] - ldr r3, [sp, 0xC] - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x40 - beq _080F0BCA - bl sub_80F0674 - lsls r4, r6, 4 - adds r4, r6 - lsls r4, 2 - mov r3, r10 - adds r5, r4, r3 - ldr r0, _080F0C14 @ =gUnknown_840C068 - add r0, r8 - ldrb r1, [r0] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r0, _080F0C18 @ =gSprites + 0x1C - adds r4, r0 - ldr r0, _080F0C1C @ =sub_80F0D5C - str r0, [r4] - movs r0, 0x3 - ldr r2, [sp, 0x8] - ands r2, r0 - lsls r2, 2 - ldrb r0, [r5, 0x5] - movs r3, 0xD - negs r3, r3 - adds r1, r3, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r5, 0x5] - lsls r0, r7, 1 - adds r0, r7 - lsls r0, 3 - adds r0, r7 - strh r0, [r5, 0x2E] - movs r0, 0x5 - strh r0, [r5, 0x36] - movs r0, 0x1 - strh r0, [r5, 0x38] - strh r0, [r5, 0x3A] -_080F0BCA: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x9 - bls _080F0B66 - ldr r0, _080F0C20 @ =gMain - ldr r1, _080F0C24 @ =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080F0BF2 - ldr r0, _080F0C0C @ =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_080F0BF2: - mov r0, r9 - bl DestroyTask - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F0C08: .4byte gTasks -_080F0C0C: .4byte gSprites -_080F0C10: .4byte gUnknown_840C0A4 -_080F0C14: .4byte gUnknown_840C068 -_080F0C18: .4byte gSprites + 0x1C -_080F0C1C: .4byte sub_80F0D5C -_080F0C20: .4byte gMain -_080F0C24: .4byte 0x00000439 - thumb_func_end sub_80F0B20 - - thumb_func_start sub_80F0C28 -sub_80F0C28: @ 80F0C28 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _080F0C54 @ =gTasks - lsls r2, r0, 2 - adds r0, r2, r0 - lsls r0, 3 - adds r3, r0, r1 - ldrh r1, [r3, 0x16] - movs r4, 0x16 - ldrsh r0, [r3, r4] - cmp r0, 0 - beq _080F0C58 - subs r0, r1, 0x1 - strh r0, [r3, 0x16] - b _080F0D2A - .align 2, 0 -_080F0C54: .4byte gTasks -_080F0C58: - ldrh r0, [r3, 0x26] - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r3, 0xA] - str r1, [sp] - ldrb r4, [r3, 0xC] - str r4, [sp, 0x4] - ldrb r1, [r3, 0xE] - str r1, [sp, 0x8] - ldrb r3, [r3, 0x10] - str r3, [sp, 0xC] - movs r7, 0 - str r2, [sp, 0x14] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - str r1, [sp, 0x10] - ldr r3, _080F0D3C @ =gSprites - mov r9, r3 - ldr r1, _080F0D40 @ =gUnknown_840C068 - adds r0, r1 - mov r10, r0 -_080F0C84: - ldr r0, _080F0D44 @ =gUnknown_840C0A4 - ldr r4, [sp, 0x10] - adds r0, r4, r0 - ldr r1, [sp] - ldr r2, [sp, 0x4] - ldr r3, [sp, 0xC] - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x40 - beq _080F0CE0 - bl sub_80F0674 - lsls r4, r6, 4 - adds r4, r6 - lsls r4, 2 - mov r0, r9 - adds r5, r4, r0 - mov r3, r10 - ldrb r1, [r3] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r0, _080F0D48 @ =gSprites + 0x1C - adds r4, r0 - ldr r0, _080F0D4C @ =sub_80F0D5C - str r0, [r4] - movs r0, 0x3 - ldr r2, [sp, 0x8] - ands r2, r0 - lsls r2, 2 - ldrb r0, [r5, 0x5] - movs r3, 0xD - negs r3, r3 - adds r1, r3, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r5, 0x5] - lsls r0, r7, 5 - strh r0, [r5, 0x2E] - movs r0, 0x8 - strh r0, [r5, 0x36] - movs r0, 0x2 - strh r0, [r5, 0x38] - strh r0, [r5, 0x3A] -_080F0CE0: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x7 - bls _080F0C84 - ldr r0, _080F0D50 @ =gTasks - ldr r1, [sp, 0x14] - add r1, r8 - lsls r1, 3 - adds r1, r0 - movs r0, 0x8 - strh r0, [r1, 0x16] - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - lsls r0, 16 - asrs r2, r0, 16 - cmp r2, 0x2 - bne _080F0D2A - ldr r0, _080F0D54 @ =gMain - ldr r4, _080F0D58 @ =0x00000439 - adds r0, r4 - ldrb r1, [r0] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _080F0D24 - ldr r0, _080F0D3C @ =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_080F0D24: - mov r0, r8 - bl DestroyTask -_080F0D2A: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F0D3C: .4byte gSprites -_080F0D40: .4byte gUnknown_840C068 -_080F0D44: .4byte gUnknown_840C0A4 -_080F0D48: .4byte gSprites + 0x1C -_080F0D4C: .4byte sub_80F0D5C -_080F0D50: .4byte gTasks -_080F0D54: .4byte gMain -_080F0D58: .4byte 0x00000439 - thumb_func_end sub_80F0C28 - - thumb_func_start sub_80F0D5C -sub_80F0D5C: @ 80F0D5C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r2, 0x30 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x36] - ldrh r1, [r4, 0x2E] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x38] - ldrh r2, [r4, 0x30] - adds r0, r2 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x32] - adds r0, r1 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x33 - bne _080F0DAC - adds r0, r4, 0 - bl sub_80F1198 -_080F0DAC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80F0D5C - - thumb_func_start sub_80F0DB4 -sub_80F0DB4: @ 80F0DB4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r1, _080F0E90 @ =gTasks - lsls r0, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x26] - lsls r1, 24 - lsrs r1, 24 - ldrb r2, [r0, 0xA] - str r2, [sp] - ldrb r3, [r0, 0xC] - str r3, [sp, 0x4] - ldrb r2, [r0, 0xE] - str r2, [sp, 0x8] - ldrb r0, [r0, 0x10] - str r0, [sp, 0xC] - movs r7, 0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - str r0, [sp, 0x10] - ldr r3, _080F0E94 @ =gSprites - mov r8, r3 - ldr r0, _080F0E98 @ =gUnknown_840C068 - adds r1, r0 - mov r10, r1 -_080F0DFA: - ldr r0, _080F0E9C @ =gUnknown_840C0A4 - ldr r1, [sp, 0x10] - adds r0, r1, r0 - ldr r1, [sp] - ldr r2, [sp, 0x4] - ldr r3, [sp, 0xC] - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x40 - beq _080F0E52 - bl sub_80F0674 - lsls r4, r6, 4 - adds r4, r6 - lsls r4, 2 - mov r2, r8 - adds r5, r4, r2 - mov r3, r10 - ldrb r1, [r3] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r0, _080F0EA0 @ =gSprites + 0x1C - adds r4, r0 - ldr r0, _080F0EA4 @ =sub_80F0EB0 - str r0, [r4] - movs r0, 0x3 - ldr r2, [sp, 0x8] - ands r2, r0 - lsls r2, 2 - ldrb r0, [r5, 0x5] - movs r3, 0xD - negs r3, r3 - adds r1, r3, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r5, 0x5] - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 2 - adds r0, r7 - strh r0, [r5, 0x2E] -_080F0E52: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0xB - bls _080F0DFA - ldr r0, _080F0EA8 @ =gMain - ldr r1, _080F0EAC @ =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080F0E7A - ldr r0, _080F0E94 @ =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_080F0E7A: - mov r0, r9 - bl DestroyTask - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F0E90: .4byte gTasks -_080F0E94: .4byte gSprites -_080F0E98: .4byte gUnknown_840C068 -_080F0E9C: .4byte gUnknown_840C0A4 -_080F0EA0: .4byte gSprites + 0x1C -_080F0EA4: .4byte sub_80F0EB0 -_080F0EA8: .4byte gMain -_080F0EAC: .4byte 0x00000439 - thumb_func_end sub_80F0DB4 - - thumb_func_start sub_80F0EB0 -sub_80F0EB0: @ 80F0EB0 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - movs r2, 0x30 - ldrsh r1, [r5, r2] - bl Sin - strh r0, [r5, 0x24] - movs r0, 0x2E - ldrsh r4, [r5, r0] - movs r2, 0x32 - ldrsh r1, [r5, r2] - adds r0, r4, 0 - bl Sin - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl Cos - strh r0, [r5, 0x26] - ldrh r0, [r5, 0x2E] - adds r0, 0x6 - movs r1, 0xFF - ands r0, r1 - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x30] - adds r0, 0x1 - strh r0, [r5, 0x30] - ldrh r0, [r5, 0x32] - adds r0, 0x1 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x33 - bne _080F0F08 - adds r0, r5, 0 - bl sub_80F1198 -_080F0F08: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80F0EB0 - - thumb_func_start sub_80F0F10 -sub_80F0F10: @ 80F0F10 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - ldr r0, _080F0FC4 @ =gTasks - ldr r2, [sp] - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldrb r3, [r1, 0xA] - str r3, [sp, 0x4] - ldrb r0, [r1, 0xC] - str r0, [sp, 0x8] - ldrb r2, [r1, 0xE] - str r2, [sp, 0xC] - ldrb r1, [r1, 0x10] - str r1, [sp, 0x10] - movs r3, 0 - mov r8, r3 - mov r1, r9 - lsls r0, r1, 1 - add r0, r9 - lsls r0, 3 - str r0, [sp, 0x14] -_080F0F54: - movs r7, 0 - movs r2, 0x1 - add r2, r8 - mov r10, r2 -_080F0F5C: - ldr r0, _080F0FC8 @ =gUnknown_840C0A4 - ldr r3, [sp, 0x14] - adds r0, r3, r0 - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - ldr r3, [sp, 0x10] - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x40 - beq _080F0FE4 - bl sub_80F0674 - lsls r4, r6, 4 - adds r4, r6 - lsls r4, 2 - ldr r0, _080F0FCC @ =gSprites - adds r5, r4, r0 - ldr r0, _080F0FD0 @ =gUnknown_840C068 - add r0, r9 - ldrb r1, [r0] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r1, _080F0FD4 @ =gSprites + 0x1C - adds r4, r1 - ldr r0, _080F0FD8 @ =sub_80F0D5C - str r0, [r4] - movs r0, 0x3 - ldr r1, [sp, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r0, [r5, 0x5] - movs r3, 0xD - negs r3, r3 - adds r2, r3, 0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x5] - lsls r0, r7, 5 - strh r0, [r5, 0x2E] - movs r0, 0x8 - strh r0, [r5, 0x36] - mov r0, r8 - cmp r0, 0 - bne _080F0FDC - movs r0, 0x2 - strh r0, [r5, 0x38] - movs r0, 0x1 - b _080F0FE2 - .align 2, 0 -_080F0FC4: .4byte gTasks -_080F0FC8: .4byte gUnknown_840C0A4 -_080F0FCC: .4byte gSprites -_080F0FD0: .4byte gUnknown_840C068 -_080F0FD4: .4byte gSprites + 0x1C -_080F0FD8: .4byte sub_80F0D5C -_080F0FDC: - movs r0, 0x1 - strh r0, [r5, 0x38] - movs r0, 0x2 -_080F0FE2: - strh r0, [r5, 0x3A] -_080F0FE4: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x7 - bls _080F0F5C - mov r1, r10 - lsls r0, r1, 24 - lsrs r0, 24 - mov r8, r0 - cmp r0, 0x1 - bls _080F0F54 - ldr r0, _080F1030 @ =gMain - ldr r2, _080F1034 @ =0x00000439 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080F1018 - ldr r0, _080F1038 @ =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_080F1018: - ldr r0, [sp] - bl DestroyTask - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F1030: .4byte gMain -_080F1034: .4byte 0x00000439 -_080F1038: .4byte gSprites - thumb_func_end sub_80F0F10 - - thumb_func_start sub_80F103C -sub_80F103C: @ 80F103C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r1, _080F1114 @ =gTasks - lsls r0, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x26] - lsls r1, 24 - lsrs r1, 24 - ldrb r2, [r0, 0xA] - str r2, [sp] - ldrb r3, [r0, 0xC] - str r3, [sp, 0x4] - ldrb r2, [r0, 0xE] - str r2, [sp, 0x8] - ldrb r0, [r0, 0x10] - str r0, [sp, 0xC] - movs r7, 0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - str r0, [sp, 0x10] - ldr r3, _080F1118 @ =gSprites - mov r8, r3 - ldr r0, _080F111C @ =gUnknown_840C068 - adds r1, r0 - mov r10, r1 -_080F1082: - ldr r0, _080F1120 @ =gUnknown_840C0A4 - ldr r1, [sp, 0x10] - adds r0, r1, r0 - ldr r1, [sp] - ldr r2, [sp, 0x4] - ldr r3, [sp, 0xC] - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x40 - beq _080F10D4 - bl sub_80F0674 - lsls r4, r6, 4 - adds r4, r6 - lsls r4, 2 - mov r2, r8 - adds r5, r4, r2 - mov r3, r10 - ldrb r1, [r3] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r0, _080F1124 @ =gSprites + 0x1C - adds r4, r0 - ldr r0, _080F1128 @ =sub_80F1134 - str r0, [r4] - movs r0, 0x3 - ldr r2, [sp, 0x8] - ands r2, r0 - lsls r2, 2 - ldrb r0, [r5, 0x5] - movs r3, 0xD - negs r3, r3 - adds r1, r3, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r5, 0x5] - lsls r0, r7, 5 - strh r0, [r5, 0x2E] -_080F10D4: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x7 - bls _080F1082 - ldr r0, _080F112C @ =gMain - ldr r1, _080F1130 @ =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080F10FC - ldr r0, _080F1118 @ =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_080F10FC: - mov r0, r9 - bl DestroyTask - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F1114: .4byte gTasks -_080F1118: .4byte gSprites -_080F111C: .4byte gUnknown_840C068 -_080F1120: .4byte gUnknown_840C0A4 -_080F1124: .4byte gSprites + 0x1C -_080F1128: .4byte sub_80F1134 -_080F112C: .4byte gMain -_080F1130: .4byte 0x00000439 - thumb_func_end sub_80F103C - - thumb_func_start sub_80F1134 -sub_80F1134: @ 80F1134 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - movs r2, 0x30 - ldrsh r1, [r5, r2] - bl Sin - strh r0, [r5, 0x24] - movs r0, 0x2E - ldrsh r4, [r5, r0] - ldrh r1, [r5, 0x2E] - movs r0, 0x3F - ands r0, r1 - movs r2, 0x32 - ldrsh r1, [r5, r2] - bl Sin - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl Cos - strh r0, [r5, 0x26] - ldrh r0, [r5, 0x2E] - adds r0, 0xA - movs r1, 0xFF - ands r0, r1 - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x30] - adds r0, 0x1 - strh r0, [r5, 0x30] - ldrh r0, [r5, 0x32] - adds r0, 0x1 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x33 - bne _080F1190 - adds r0, r5, 0 - bl sub_80F1198 -_080F1190: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80F1134 - - thumb_func_start sub_80F1198 -sub_80F1198: @ 80F1198 - push {r4-r7,lr} - adds r7, r0, 0 - ldr r0, _080F11BC @ =gMain - ldr r1, _080F11C0 @ =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080F11C4 - movs r1, 0x3C - ldrsh r0, [r7, r1] - cmp r0, 0x1 - bne _080F11F6 - adds r0, r7, 0 - bl DestroySpriteAndFreeResources - b _080F1212 - .align 2, 0 -_080F11BC: .4byte gMain -_080F11C0: .4byte 0x00000439 -_080F11C4: - ldr r2, _080F1200 @ =gBattleSpritesDataPtr - ldr r0, [r2] - ldr r1, [r0, 0x8] - ldrb r0, [r1, 0xA] - subs r0, 0x1 - strb r0, [r1, 0xA] - ldr r0, [r2] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0xA] - cmp r0, 0 - bne _080F120C - movs r6, 0 - ldr r5, _080F1204 @ =gUnknown_840BF48 - ldr r4, _080F1208 @ =gUnknown_840BFA8 -_080F11E0: - ldrh r0, [r5, 0x6] - bl FreeSpriteTilesByTag - ldrh r0, [r4, 0x4] - bl FreeSpritePaletteByTag - adds r5, 0x8 - adds r4, 0x8 - adds r6, 0x1 - cmp r6, 0xB - ble _080F11E0 -_080F11F6: - adds r0, r7, 0 - bl DestroySprite - b _080F1212 - .align 2, 0 -_080F1200: .4byte gBattleSpritesDataPtr -_080F1204: .4byte gUnknown_840BF48 -_080F1208: .4byte gUnknown_840BFA8 -_080F120C: - adds r0, r7, 0 - bl DestroySprite -_080F1212: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80F1198 - - thumb_func_start LaunchBallFadeMonTask -LaunchBallFadeMonTask: @ 80F1218 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - adds r4, r0, 0 - mov r9, r2 - lsls r4, 24 - lsrs r4, 24 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r3, 24 - lsrs r7, r3, 24 - ldr r0, _080F127C @ =sub_80F12E0 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _080F1280 @ =gTasks - lsls r0, 2 - add r0, r8 - lsls r0, 3 - adds r5, r0, r1 - strh r7, [r5, 0x26] - strh r6, [r5, 0xE] - mov r0, r9 - strh r0, [r5, 0x1C] - mov r1, r9 - lsrs r0, r1, 16 - strh r0, [r5, 0x1E] - cmp r4, 0 - bne _080F1288 - lsls r0, r6, 20 - movs r2, 0x80 - lsls r2, 17 - adds r0, r2 - lsrs r0, 16 - ldr r2, _080F1284 @ =gUnknown_840C1C4 - lsls r1, r7, 1 - adds r1, r2 - ldrh r3, [r1] - movs r1, 0x10 - movs r2, 0 - bl BlendPalette - movs r0, 0x1 - strh r0, [r5, 0xA] - b _080F12AE - .align 2, 0 -_080F127C: .4byte sub_80F12E0 -_080F1280: .4byte gTasks -_080F1284: .4byte gUnknown_840C1C4 -_080F1288: - lsls r0, r6, 20 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r0, 16 - ldr r2, _080F12D0 @ =gUnknown_840C1C4 - lsls r1, r7, 1 - adds r1, r2 - ldrh r3, [r1] - movs r1, 0x10 - movs r2, 0x10 - bl BlendPalette - movs r0, 0x10 - strh r0, [r5, 0x8] - ldr r0, _080F12D4 @ =0x0000ffff - strh r0, [r5, 0xA] - ldr r0, _080F12D8 @ =sub_80F1370 - str r0, [r5] -_080F12AE: - ldr r0, _080F12DC @ =0x00007fff - str r0, [sp] - mov r0, r9 - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - mov r0, r8 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080F12D0: .4byte gUnknown_840C1C4 -_080F12D4: .4byte 0x0000ffff -_080F12D8: .4byte sub_80F1370 -_080F12DC: .4byte 0x00007fff - thumb_func_end LaunchBallFadeMonTask - - thumb_func_start sub_80F12E0 -sub_80F12E0: @ 80F12E0 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _080F1330 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r1, r0, 24 - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0x10 - bgt _080F1338 - movs r2, 0xE - ldrsh r0, [r4, r2] - lsls r0, 20 - movs r2, 0x80 - lsls r2, 17 - adds r0, r2 - lsrs r0, 16 - ldrb r2, [r4, 0x8] - ldr r3, _080F1334 @ =gUnknown_840C1C4 - lsls r1, 1 - adds r1, r3 - ldrh r3, [r1] - movs r1, 0x10 - bl BlendPalette - ldrh r0, [r4, 0xA] - ldrh r1, [r4, 0x8] - adds r0, r1 - strh r0, [r4, 0x8] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - b _080F1360 - .align 2, 0 -_080F1330: .4byte gTasks -_080F1334: .4byte gUnknown_840C1C4 -_080F1338: - ldr r0, _080F1368 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080F1360 - ldrh r0, [r4, 0x1C] - ldrh r1, [r4, 0x1E] - lsls r1, 16 - orrs r0, r1 - ldr r1, _080F136C @ =0x00007fff - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - adds r0, r5, 0 - bl DestroyTask -_080F1360: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F1368: .4byte gPaletteFade -_080F136C: .4byte 0x00007fff - thumb_func_end sub_80F12E0 - - thumb_func_start sub_80F1370 -sub_80F1370: @ 80F1370 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080F13B0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080F13A8 - ldr r0, _080F13B4 @ =gTasks - lsls r4, r2, 2 - adds r4, r2 - lsls r4, 3 - adds r4, r0 - ldrh r0, [r4, 0x1C] - ldrh r1, [r4, 0x1E] - lsls r1, 16 - orrs r0, r1 - ldr r1, _080F13B8 @ =0x00007fff - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, _080F13BC @ =sub_80F13C0 - str r0, [r4] -_080F13A8: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F13B0: .4byte gPaletteFade -_080F13B4: .4byte gTasks -_080F13B8: .4byte 0x00007fff -_080F13BC: .4byte sub_80F13C0 - thumb_func_end sub_80F1370 - - thumb_func_start sub_80F13C0 -sub_80F13C0: @ 80F13C0 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080F140C @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r1, r0, 24 - movs r3, 0xC - ldrsh r0, [r4, r3] - cmp r0, 0x10 - bgt _080F1414 - movs r2, 0xE - ldrsh r0, [r4, r2] - lsls r0, 20 - movs r3, 0x80 - lsls r3, 17 - adds r0, r3 - lsrs r0, 16 - ldrb r2, [r4, 0x8] - ldr r3, _080F1410 @ =gUnknown_840C1C4 - lsls r1, 1 - adds r1, r3 - ldrh r3, [r1] - movs r1, 0x10 - bl BlendPalette - ldrh r0, [r4, 0xA] - ldrh r1, [r4, 0x8] - adds r0, r1 - strh r0, [r4, 0x8] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - b _080F141A - .align 2, 0 -_080F140C: .4byte gTasks -_080F1410: .4byte gUnknown_840C1C4 -_080F1414: - adds r0, r2, 0 - bl DestroyTask -_080F141A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80F13C0 - - thumb_func_start sub_80F1420 -sub_80F1420: @ 80F1420 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r7, r0, 24 - movs r0, 0 - mov r8, r0 - ldr r0, _080F1454 @ =gBattlerSpriteIds - ldr r3, _080F1458 @ =gBattleAnimAttacker - ldrb r2, [r3] - adds r0, r2, r0 - ldrb r6, [r0] - ldr r1, _080F145C @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r5, r0, r1 - movs r1, 0x1C - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080F14F8 - cmp r0, 0x1 - bgt _080F1460 - cmp r0, 0 - beq _080F1466 - b _080F15BA - .align 2, 0 -_080F1454: .4byte gBattlerSpriteIds -_080F1458: .4byte gBattleAnimAttacker -_080F145C: .4byte gTasks -_080F1460: - cmp r0, 0x2 - beq _080F150A - b _080F15BA -_080F1466: - ldr r0, _080F14A0 @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r5, 0x1E] - movs r2, 0xA0 - lsls r2, 3 - adds r0, r2, 0 - ldrh r4, [r5, 0x8] - adds r0, r4 - strh r0, [r5, 0x8] - ldrb r0, [r3] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080F14A8 - ldr r2, _080F14A4 @ =gSprites - lsls r3, r6, 4 - adds r1, r3, r6 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r5, 0x8] - lsls r0, 16 - asrs r0, 24 - ldrh r4, [r1, 0x24] - adds r0, r4 - strh r0, [r1, 0x24] - adds r4, r3, 0 - b _080F14C0 - .align 2, 0 -_080F14A0: .4byte gBattleAnimArgs -_080F14A4: .4byte gSprites -_080F14A8: - ldr r3, _080F14F0 @ =gSprites - lsls r4, r6, 4 - adds r2, r4, r6 - lsls r2, 2 - adds r2, r3 - ldrh r1, [r5, 0x8] - lsls r1, 16 - asrs r1, 24 - ldrh r0, [r2, 0x24] - subs r0, r1 - strh r0, [r2, 0x24] - adds r2, r3, 0 -_080F14C0: - ldr r1, _080F14F4 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r3, r0, r1 - ldrb r0, [r3, 0x8] - strh r0, [r3, 0x8] - adds r0, r4, r6 - lsls r0, 2 - adds r0, r2 - movs r2, 0x20 - ldrsh r1, [r0, r2] - movs r4, 0x24 - ldrsh r0, [r0, r4] - adds r1, r0 - adds r1, 0x20 - movs r0, 0x98 - lsls r0, 1 - cmp r1, r0 - bls _080F15BA - ldrh r0, [r3, 0x1C] - adds r0, 0x1 - strh r0, [r3, 0x1C] - b _080F15BA - .align 2, 0 -_080F14F0: .4byte gSprites -_080F14F4: .4byte gTasks -_080F14F8: - ldrb r1, [r5, 0x1E] - adds r0, r2, 0 - adds r2, r6, 0 - bl LoadBattleMonGfxAndAnimate - ldrh r0, [r5, 0x1C] - adds r0, 0x1 - strh r0, [r5, 0x1C] - b _080F15BA -_080F150A: - movs r1, 0xA0 - lsls r1, 3 - adds r0, r1, 0 - ldrh r2, [r5, 0x8] - adds r0, r2 - strh r0, [r5, 0x8] - ldrb r0, [r3] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080F1540 - ldr r0, _080F153C @ =gSprites - lsls r3, r6, 4 - adds r2, r3, r6 - lsls r2, 2 - adds r2, r0 - ldrh r1, [r5, 0x8] - lsls r1, 16 - asrs r1, 24 - ldrh r0, [r2, 0x24] - subs r0, r1 - strh r0, [r2, 0x24] - adds r4, r3, 0 - b _080F1558 - .align 2, 0 -_080F153C: .4byte gSprites -_080F1540: - ldr r0, _080F158C @ =gSprites - lsls r2, r6, 4 - adds r1, r2, r6 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r5, 0x8] - lsls r0, 16 - asrs r0, 24 - ldrh r3, [r1, 0x24] - adds r0, r3 - strh r0, [r1, 0x24] - adds r4, r2, 0 -_080F1558: - ldr r1, _080F1590 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldrb r1, [r0, 0x8] - strh r1, [r0, 0x8] - ldr r0, _080F1594 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _080F1598 - ldr r0, _080F158C @ =gSprites - adds r1, r4, r6 - lsls r1, 2 - adds r1, r0 - movs r4, 0x24 - ldrsh r0, [r1, r4] - cmp r0, 0 - bgt _080F15AE - movs r0, 0 - strh r0, [r1, 0x24] - b _080F15B4 - .align 2, 0 -_080F158C: .4byte gSprites -_080F1590: .4byte gTasks -_080F1594: .4byte gBattleAnimAttacker -_080F1598: - ldr r0, _080F15C4 @ =gSprites - adds r1, r4, r6 - lsls r1, 2 - adds r1, r0 - movs r3, 0x24 - ldrsh r0, [r1, r3] - cmp r0, 0 - blt _080F15AE - strh r2, [r1, 0x24] - movs r4, 0x1 - mov r8, r4 -_080F15AE: - mov r0, r8 - cmp r0, 0 - beq _080F15BA -_080F15B4: - adds r0, r7, 0 - bl DestroyAnimVisualTask -_080F15BA: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F15C4: .4byte gSprites - thumb_func_end sub_80F1420 - - thumb_func_start sub_80F15C8 -sub_80F15C8: @ 80F15C8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080F15EC @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x26 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080F1644 - cmp r0, 0x1 - bgt _080F15F0 - cmp r0, 0 - beq _080F15F6 - b _080F16B4 - .align 2, 0 -_080F15EC: .4byte gTasks -_080F15F0: - cmp r0, 0x2 - beq _080F167E - b _080F16B4 -_080F15F6: - ldr r0, _080F1610 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSpriteBGPriorityRank - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080F1618 - ldr r1, _080F1614 @ =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - b _080F1620 - .align 2, 0 -_080F1610: .4byte gBattleAnimAttacker -_080F1614: .4byte 0x00003f42 -_080F1618: - ldr r1, _080F163C @ =0x00003f44 - movs r0, 0x50 - bl SetGpuReg -_080F1620: - movs r0, 0x52 - movs r1, 0x10 - bl SetGpuReg - ldr r0, _080F1640 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - adds r0, 0x1 - strh r0, [r1, 0x26] - b _080F16B4 - .align 2, 0 -_080F163C: .4byte 0x00003f44 -_080F1640: .4byte gTasks -_080F1644: - ldrh r0, [r4, 0xA] - adds r1, r0, 0x1 - strh r1, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080F16B4 - movs r0, 0 - strh r0, [r4, 0xA] - ldrh r2, [r4, 0x8] - adds r2, 0x1 - strh r2, [r4, 0x8] - lsls r1, r2, 8 - movs r0, 0x10 - subs r0, r2 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _080F16B4 - ldrh r0, [r4, 0x26] - adds r0, 0x1 - strh r0, [r4, 0x26] - b _080F16B4 -_080F167E: - ldr r1, _080F16BC @ =gBattlerSpriteIds - ldr r4, _080F16C0 @ =gBattleAnimAttacker - ldrb r0, [r4] - adds r0, r1 - ldrb r1, [r0] - ldr r2, _080F16C4 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x4] - lsls r1, 22 - lsrs r1, 17 - ldr r0, _080F16C8 @ =0x06010000 - adds r1, r0 - movs r2, 0x80 - lsls r2, 4 - movs r0, 0 - movs r3, 0x1 - bl RequestDma3Fill - ldrb r0, [r4] - bl ClearBehindSubstituteBit - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080F16B4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F16BC: .4byte gBattlerSpriteIds -_080F16C0: .4byte gBattleAnimAttacker -_080F16C4: .4byte gSprites -_080F16C8: .4byte 0x06010000 - thumb_func_end sub_80F15C8 - - thumb_func_start sub_80F16CC -sub_80F16CC: @ 80F16CC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080F16F4 @ =gBattleAnimArgs - ldr r1, _080F16F8 @ =gBattleSpritesDataPtr - ldr r2, [r1] - ldr r1, _080F16FC @ =gBattleAnimAttacker - ldrb r1, [r1] - ldr r2, [r2] - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - lsls r1, 29 - lsrs r1, 31 - strh r1, [r3, 0xE] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080F16F4: .4byte gBattleAnimArgs -_080F16F8: .4byte gBattleSpritesDataPtr -_080F16FC: .4byte gBattleAnimAttacker - thumb_func_end sub_80F16CC - - thumb_func_start sub_80F1700 -sub_80F1700: @ 80F1700 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080F1718 @ =gBattleAnimTarget - ldr r1, _080F171C @ =gEffectBattler - ldrb r1, [r1] - strb r1, [r2] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080F1718: .4byte gBattleAnimTarget -_080F171C: .4byte gEffectBattler - thumb_func_end sub_80F1700 - - thumb_func_start sub_80F1720 -sub_80F1720: @ 80F1720 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r1, 0 - lsls r0, 24 - lsrs r6, r0, 24 - movs r0, 0 - mov r8, r0 - ldr r0, _080F17DC @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x4] - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - adds r5, r0, 0 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - adds r4, r0, 0 - adds r0, r6, 0 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080F17F8 - lsrs r0, r5, 16 - ldr r7, _080F17E0 @ =0x0000ffff - ands r5, r7 - eors r0, r5 - lsrs r1, r4, 16 - eors r0, r1 - ands r4, r7 - eors r0, r4 - cmp r0, 0x7 - bhi _080F177E - movs r0, 0x1 - mov r8, r0 -_080F177E: - mov r0, r8 - cmp r0, 0 - beq _080F17F8 - ldr r0, _080F17E4 @ =0x000027f9 - bl GetSpriteTileStartByTag - lsls r0, 16 - lsrs r0, 16 - cmp r0, r7 - bne _080F179E - ldr r0, _080F17E8 @ =gUnknown_83AD350 - bl LoadCompressedSpriteSheetUsingHeap - ldr r0, _080F17EC @ =gUnknown_83ADC58 - bl LoadCompressedSpritePaletteUsingHeap -_080F179E: - ldr r5, _080F17F0 @ =sub_80F181C - adds r0, r5, 0 - movs r1, 0xA - bl CreateTask - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080F17F4 @ =gTasks - lsls r2, r4, 2 - adds r2, r4 - lsls r2, 3 - adds r2, r3 - movs r4, 0 - strh r6, [r2, 0x8] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r3 - strh r6, [r1, 0x8] - strh r4, [r2, 0xA] - movs r0, 0x1 - strh r0, [r1, 0xA] - b _080F180E - .align 2, 0 -_080F17DC: .4byte gBattleSpritesDataPtr -_080F17E0: .4byte 0x0000ffff -_080F17E4: .4byte 0x000027f9 -_080F17E8: .4byte gUnknown_83AD350 -_080F17EC: .4byte gUnknown_83ADC58 -_080F17F0: .4byte sub_80F181C -_080F17F4: .4byte gTasks -_080F17F8: - ldr r0, _080F1818 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x4] - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x1] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0, 0x1] -_080F180E: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F1818: .4byte gBattleSpritesDataPtr - thumb_func_end sub_80F1720 - - thumb_func_start sub_80F181C -sub_80F181C: @ 80F181C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _080F1844 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r4, r0, r1 - ldrh r1, [r4, 0x22] - movs r2, 0x22 - ldrsh r0, [r4, r2] - cmp r0, 0x3B - bgt _080F1848 - adds r0, r1, 0x1 - strh r0, [r4, 0x22] - b _080F19C0 - .align 2, 0 -_080F1844: .4byte gTasks -_080F1848: - ldr r0, _080F189C @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0xA] - cmp r0, 0 - beq _080F1856 - b _080F19C0 -_080F1856: - ldrh r0, [r4, 0x1C] - adds r1, r0, 0x1 - strh r1, [r4, 0x1C] - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - cmp r1, 0 - beq _080F186A - b _080F19C0 -_080F186A: - ldrb r0, [r4, 0x8] - mov r8, r0 - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r5, r0, 24 - mov r0, r8 - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r2, r0, 24 - movs r1, 0x1E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080F18A4 - ldr r0, _080F18A0 @ =gUnknown_83FF168 - adds r1, r5, 0 - movs r3, 0x5 - bl CreateSprite - lsls r0, 24 - lsrs r5, r0, 24 - b _080F1906 - .align 2, 0 -_080F189C: .4byte gBattleSpritesDataPtr -_080F18A0: .4byte gUnknown_83FF168 -_080F18A4: - cmp r0, 0 - blt _080F18D8 - cmp r0, 0x3 - bgt _080F18D8 - ldr r0, _080F18D0 @ =gUnknown_83FF180 - adds r1, r5, 0 - movs r3, 0x5 - bl CreateSprite - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080F18D4 @ =gSprites - lsls r2, r5, 4 - adds r2, r5 - lsls r2, 2 - adds r2, r0 - ldrh r3, [r2, 0x4] - lsls r1, r3, 22 - lsrs r1, 22 - adds r1, 0x4 - b _080F18F8 - .align 2, 0 -_080F18D0: .4byte gUnknown_83FF180 -_080F18D4: .4byte gSprites -_080F18D8: - ldr r0, _080F1930 @ =gUnknown_83FF180 - adds r1, r5, 0 - movs r3, 0x5 - bl CreateSprite - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080F1934 @ =gSprites - lsls r2, r5, 4 - adds r2, r5 - lsls r2, 2 - adds r2, r0 - ldrh r3, [r2, 0x4] - lsls r1, r3, 22 - lsrs r1, 22 - adds r1, 0x5 -_080F18F8: - ldr r4, _080F1938 @ =0x000003ff - adds r0, r4, 0 - ands r1, r0 - ldr r0, _080F193C @ =0xfffffc00 - ands r0, r3 - orrs r0, r1 - strh r0, [r2, 0x4] -_080F1906: - ldr r2, _080F1940 @ =gTasks - lsls r1, r7, 2 - adds r0, r1, r7 - lsls r0, 3 - adds r6, r0, r2 - movs r2, 0xA - ldrsh r0, [r6, r2] - mov r9, r1 - cmp r0, 0 - bne _080F1948 - ldr r1, _080F1934 @ =gSprites - lsls r2, r5, 4 - adds r0, r2, r5 - lsls r0, 2 - adds r1, 0x1C - adds r0, r1 - ldr r1, _080F1944 @ =sub_80F1A2C - str r1, [r0] - adds r4, r2, 0 - b _080F1990 - .align 2, 0 -_080F1930: .4byte gUnknown_83FF180 -_080F1934: .4byte gSprites -_080F1938: .4byte 0x000003ff -_080F193C: .4byte 0xfffffc00 -_080F1940: .4byte gTasks -_080F1944: .4byte sub_80F1A2C -_080F1948: - ldr r3, _080F19CC @ =gSprites - lsls r4, r5, 4 - adds r1, r4, r5 - lsls r1, 2 - adds r0, r3, 0 - adds r0, 0x1C - adds r0, r1, r0 - ldr r2, _080F19D0 @ =sub_80F1A80 - str r2, [r0] - adds r1, r3 - ldr r0, _080F19D4 @ =0x0000ffe0 - strh r0, [r1, 0x24] - movs r0, 0x20 - strh r0, [r1, 0x26] - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - movs r1, 0x1E - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080F1990 - mov r0, r8 - bl GetBattlerSide - lsls r0, 24 - movs r1, 0x3F - cmp r0, 0 - bne _080F1986 - movs r1, 0xC0 -_080F1986: - lsls r1, 24 - asrs r1, 24 - movs r0, 0x5F - bl PlaySE12WithPanning -_080F1990: - ldr r1, _080F19CC @ =gSprites - adds r0, r4, r5 - lsls r0, 2 - adds r0, r1 - strh r7, [r0, 0x2E] - ldr r1, _080F19D8 @ =gTasks - mov r2, r9 - adds r0, r2, r7 - lsls r0, 3 - adds r1, r0, r1 - ldrh r0, [r1, 0x1E] - adds r0, 0x1 - strh r0, [r1, 0x1E] - cmp r5, 0x40 - beq _080F19B4 - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] -_080F19B4: - movs r4, 0x1E - ldrsh r0, [r1, r4] - cmp r0, 0x5 - bne _080F19C0 - ldr r0, _080F19DC @ =sub_80F19E0 - str r0, [r1] -_080F19C0: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F19CC: .4byte gSprites -_080F19D0: .4byte sub_80F1A80 -_080F19D4: .4byte 0x0000ffe0 -_080F19D8: .4byte gTasks -_080F19DC: .4byte sub_80F19E0 - thumb_func_end sub_80F181C - - thumb_func_start sub_80F19E0 -sub_80F19E0: @ 80F19E0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - adds r3, r0, 0 - ldr r1, _080F1A24 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r1, r0, r1 - movs r2, 0x20 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080F1A20 - movs r2, 0xA - ldrsh r0, [r1, r2] - cmp r0, 0x1 - bne _080F1A1A - ldrb r1, [r1, 0x8] - ldr r0, _080F1A28 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x1] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0, 0x1] -_080F1A1A: - adds r0, r3, 0 - bl DestroyTask -_080F1A20: - pop {r0} - bx r0 - .align 2, 0 -_080F1A24: .4byte gTasks -_080F1A28: .4byte gBattleSpritesDataPtr - thumb_func_end sub_80F19E0 - - thumb_func_start sub_80F1A2C -sub_80F1A2C: @ 80F1A2C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x18 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x18 - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0xC - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _080F1A76 - ldr r2, _080F1A7C @ =gTasks - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrh r1, [r0, 0x20] - subs r1, 0x1 - strh r1, [r0, 0x20] - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite -_080F1A76: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F1A7C: .4byte gTasks - thumb_func_end sub_80F1A2C - - thumb_func_start sub_80F1A80 -sub_80F1A80: @ 80F1A80 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x30] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0x3 - bgt _080F1A94 - adds r0, r1, 0x1 - strh r0, [r4, 0x30] - b _080F1AD6 -_080F1A94: - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldrh r1, [r4, 0x24] - adds r1, 0x5 - strh r1, [r4, 0x24] - ldrh r0, [r4, 0x26] - subs r0, 0x5 - strh r0, [r4, 0x26] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x20 - ble _080F1AD6 - ldr r2, _080F1ADC @ =gTasks - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrh r1, [r0, 0x20] - subs r1, 0x1 - strh r1, [r0, 0x20] - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite -_080F1AD6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F1ADC: .4byte gTasks - thumb_func_end sub_80F1A80 - - thumb_func_start sub_80F1AE0 -sub_80F1AE0: @ 80F1AE0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080F1B08 @ =gUnknown_83AD470 - bl LoadCompressedSpriteSheetUsingHeap - ldr r0, _080F1B0C @ =gUnknown_83ADD78 - bl LoadCompressedSpritePaletteUsingHeap - ldr r0, _080F1B10 @ =0x0000281d - bl IndexOfSpritePaletteTag - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F1B08: .4byte gUnknown_83AD470 -_080F1B0C: .4byte gUnknown_83ADD78 -_080F1B10: .4byte 0x0000281d - thumb_func_end sub_80F1AE0 - - thumb_func_start sub_80F1B14 -sub_80F1B14: @ 80F1B14 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _080F1B38 @ =0x0000281d - adds r0, r5, 0 - bl FreeSpriteTilesByTag - adds r0, r5, 0 - bl FreeSpritePaletteByTag - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F1B38: .4byte 0x0000281d - thumb_func_end sub_80F1B14 - - thumb_func_start sub_80F1B3C -sub_80F1B3C: @ 80F1B3C - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0 - bl InitSpritePosToAnimAttacker - movs r0, 0x1E - strh r0, [r4, 0x2E] - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r5, _080F1BB0 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r5, 0x4] - adds r0, r1 - strh r0, [r4, 0x32] - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r5, [r5, 0x6] - adds r0, r5 - strh r0, [r4, 0x36] - ldr r0, _080F1BB4 @ =0x0000ffe0 - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl InitAnimArcTranslation - ldr r2, _080F1BB8 @ =gSprites - ldr r1, _080F1BBC @ =gBattlerSpriteIds - ldr r0, _080F1BC0 @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _080F1BC4 @ =sub_8012354 - str r1, [r0] - ldr r0, _080F1BC8 @ =sub_80F1BCC - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F1BB0: .4byte gBattleAnimArgs -_080F1BB4: .4byte 0x0000ffe0 -_080F1BB8: .4byte gSprites -_080F1BBC: .4byte gBattlerSpriteIds -_080F1BC0: .4byte gBattleAnimAttacker -_080F1BC4: .4byte sub_8012354 -_080F1BC8: .4byte sub_80F1BCC - thumb_func_end sub_80F1B3C - - thumb_func_start sub_80F1BCC -sub_80F1BCC: @ 80F1BCC - push {lr} - adds r3, r0, 0 - ldr r2, _080F1BF4 @ =gSprites - ldr r1, _080F1BF8 @ =gBattlerSpriteIds - ldr r0, _080F1BFC @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x2B - ldrb r0, [r0] - cmp r0, 0x1 - bne _080F1BF0 - ldr r0, _080F1C00 @ =sub_80F1C04 - str r0, [r3, 0x1C] -_080F1BF0: - pop {r0} - bx r0 - .align 2, 0 -_080F1BF4: .4byte gSprites -_080F1BF8: .4byte gBattlerSpriteIds -_080F1BFC: .4byte gBattleAnimAttacker -_080F1C00: .4byte sub_80F1C04 - thumb_func_end sub_80F1BCC - - thumb_func_start sub_80F1C04 -sub_80F1C04: @ 80F1C04 - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimHorizontalArc - lsls r0, 24 - cmp r0, 0 - beq _080F1C26 - movs r0, 0 - strh r0, [r4, 0x2E] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080F1C2C @ =sub_80F1C30 - str r0, [r4, 0x1C] -_080F1C26: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F1C2C: .4byte sub_80F1C30 - thumb_func_end sub_80F1C04 - - thumb_func_start sub_80F1C30 -sub_80F1C30: @ 80F1C30 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080F1C80 @ =gSprites - ldr r3, _080F1C84 @ =gBattlerSpriteIds - ldr r2, _080F1C88 @ =gBattleAnimAttacker - ldrb r0, [r2] - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 27 - cmp r0, 0 - bge _080F1C78 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - ble _080F1C78 - ldrb r0, [r2] - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl DestroyAnimSprite -_080F1C78: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F1C80: .4byte gSprites -_080F1C84: .4byte gBattlerSpriteIds -_080F1C88: .4byte gBattleAnimAttacker - thumb_func_end sub_80F1C30 - - thumb_func_start sub_80F1C8C -sub_80F1C8C: @ 80F1C8C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080F1CA4 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _080F1CA8 - cmp r0, 0x1 - beq _080F1CBC - b _080F1CD0 - .align 2, 0 -_080F1CA4: .4byte gBattleAnimArgs -_080F1CA8: - movs r0, 0 - bl GetBattlerAtPosition - ldr r1, _080F1CB8 @ =gBattleAnimAttacker - strb r0, [r1] - movs r0, 0x1 - b _080F1CC8 - .align 2, 0 -_080F1CB8: .4byte gBattleAnimAttacker -_080F1CBC: - movs r0, 0x1 - bl GetBattlerAtPosition - ldr r1, _080F1CDC @ =gBattleAnimAttacker - strb r0, [r1] - movs r0, 0 -_080F1CC8: - bl GetBattlerAtPosition - ldr r1, _080F1CE0 @ =gBattleAnimTarget - strb r0, [r1] -_080F1CD0: - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F1CDC: .4byte gBattleAnimAttacker -_080F1CE0: .4byte gBattleAnimTarget - thumb_func_end sub_80F1C8C - - thumb_func_start sub_80F1CE4 -sub_80F1CE4: @ 80F1CE4 - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r2, _080F1CF8 @ =gBattleCommunication - ldrb r0, [r2, 0x5] - cmp r0, 0x2 - bls _080F1D00 - ldr r1, _080F1CFC @ =gBattleAnimArgs - movs r0, 0 - b _080F1D04 - .align 2, 0 -_080F1CF8: .4byte gBattleCommunication -_080F1CFC: .4byte gBattleAnimArgs -_080F1D00: - ldr r1, _080F1D10 @ =gBattleAnimArgs - ldrb r0, [r2, 0x5] -_080F1D04: - strh r0, [r1, 0xE] - adds r0, r3, 0 - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080F1D10: .4byte gBattleAnimArgs - thumb_func_end sub_80F1CE4 - - thumb_func_start sub_80F1D14 -sub_80F1D14: @ 80F1D14 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080F1D2C @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrh r1, [r0] - cmp r1, 0x53 - bne _080F1D34 - ldr r1, _080F1D30 @ =gBattleAnimArgs - movs r0, 0x1 - b _080F1D6C - .align 2, 0 -_080F1D2C: .4byte gBattleSpritesDataPtr -_080F1D30: .4byte gBattleAnimArgs -_080F1D34: - cmp r1, 0xFA - bne _080F1D44 - ldr r1, _080F1D40 @ =gBattleAnimArgs - movs r0, 0x2 - b _080F1D6C - .align 2, 0 -_080F1D40: .4byte gBattleAnimArgs -_080F1D44: - cmp r1, 0x80 - bne _080F1D54 - ldr r1, _080F1D50 @ =gBattleAnimArgs - movs r0, 0x3 - b _080F1D6C - .align 2, 0 -_080F1D50: .4byte gBattleAnimArgs -_080F1D54: - movs r0, 0xA4 - lsls r0, 1 - cmp r1, r0 - bne _080F1D68 - ldr r1, _080F1D64 @ =gBattleAnimArgs - movs r0, 0x4 - b _080F1D6C - .align 2, 0 -_080F1D64: .4byte gBattleAnimArgs -_080F1D68: - ldr r1, _080F1D78 @ =gBattleAnimArgs - movs r0, 0 -_080F1D6C: - strh r0, [r1] - adds r0, r2, 0 - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080F1D78: .4byte gBattleAnimArgs - thumb_func_end sub_80F1D14 - - thumb_func_start sub_80F1D7C -sub_80F1D7C: @ 80F1D7C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080F1DA0 @ =gBattleAnimAttacker - ldr r1, _080F1DA4 @ =gBattleSpritesDataPtr - ldr r2, [r1] - ldr r1, [r2, 0x8] - ldrh r1, [r1] - strb r1, [r3] - ldr r3, _080F1DA8 @ =gBattleAnimTarget - ldr r1, [r2, 0x8] - ldrh r1, [r1] - lsrs r1, 8 - strb r1, [r3] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080F1DA0: .4byte gBattleAnimAttacker -_080F1DA4: .4byte gBattleSpritesDataPtr -_080F1DA8: .4byte gBattleAnimTarget - thumb_func_end sub_80F1D7C - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_status_effects.s b/asm/battle_anim_status_effects.s deleted file mode 100644 index c8b1ddbf5..000000000 --- a/asm/battle_anim_status_effects.s +++ /dev/null @@ -1,977 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8078178 -sub_8078178: @ 8078178 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _0807821C @ =gBattlerSpriteIds - adds r0, r4, r0 - ldrb r6, [r0] - ldr r0, _08078220 @ =sub_80782BC - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, _08078224 @ =gUnknown_83AD048 - bl LoadCompressedSpriteSheetUsingHeap - ldr r0, _08078228 @ =gUnknown_83AD950 - bl LoadCompressedSpritePaletteUsingHeap - ldr r1, _0807822C @ =gTasks - mov r2, r8 - lsls r0, r2, 2 - add r0, r8 - lsls r0, 3 - adds r1, r0, r1 - strh r4, [r1, 0x8] - cmp r5, 0 - beq _08078238 - movs r0, 0x1F - strh r0, [r1, 0xA] - movs r5, 0 - lsls r0, r6, 4 - ldr r7, _08078230 @ =gSprites - adds r0, r6 - lsls r0, 2 - adds r6, r0, r7 -_080781CC: - movs r0, 0x20 - ldrsh r1, [r6, r0] - ldrh r2, [r6, 0x22] - adds r2, 0x20 - lsls r2, 16 - asrs r2, 16 - ldr r0, _08078234 @ =gUnknown_83BF574 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r3, r0, r7 - lsls r0, r5, 1 - adds r0, r5 - lsls r1, r0, 4 - adds r0, r1 - strh r0, [r3, 0x2E] - movs r0, 0xFF - lsls r0, 8 - strh r0, [r3, 0x30] - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - cmp r5, 0x4 - bls _08078210 - movs r0, 0x15 - strh r0, [r3, 0x3A] -_08078210: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x9 - bls _080781CC - b _08078298 - .align 2, 0 -_0807821C: .4byte gBattlerSpriteIds -_08078220: .4byte sub_80782BC -_08078224: .4byte gUnknown_83AD048 -_08078228: .4byte gUnknown_83AD950 -_0807822C: .4byte gTasks -_08078230: .4byte gSprites -_08078234: .4byte gUnknown_83BF574 -_08078238: - movs r0, 0xF8 - lsls r0, 7 - strh r0, [r1, 0xA] - movs r5, 0 - lsls r0, r6, 4 - ldr r7, _080782B4 @ =gSprites - adds r0, r6 - lsls r0, 2 - adds r6, r0, r7 -_0807824A: - movs r2, 0x20 - ldrsh r1, [r6, r2] - ldrh r2, [r6, 0x22] - subs r2, 0x20 - lsls r2, 16 - asrs r2, 16 - ldr r0, _080782B8 @ =gUnknown_83BF574 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r3, r0, r7 - lsls r0, r5, 1 - adds r0, r5 - lsls r1, r0, 4 - adds r0, r1 - strh r0, [r3, 0x2E] - movs r0, 0x80 - lsls r0, 1 - strh r0, [r3, 0x30] - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - cmp r5, 0x4 - bls _0807828E - movs r0, 0x15 - strh r0, [r3, 0x3A] -_0807828E: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x9 - bls _0807824A -_08078298: - ldr r0, _080782B4 @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] - mov r0, r8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080782B4: .4byte gSprites -_080782B8: .4byte gUnknown_83BF574 - thumb_func_end sub_8078178 - - thumb_func_start sub_80782BC -sub_80782BC: @ 80782BC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _08078314 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r1, [r4, 0xC] - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0x2 - bne _08078342 - movs r0, 0 - strh r0, [r4, 0xC] - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 20 - movs r2, 0x80 - lsls r2, 17 - adds r0, r2 - lsrs r0, 16 - ldrb r2, [r4, 0x10] - ldrh r3, [r4, 0xA] - movs r1, 0x10 - bl BlendPalette - ldrh r2, [r4, 0x12] - movs r1, 0x12 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08078318 - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _08078346 - movs r0, 0x1 - eors r0, r2 - strh r0, [r4, 0x12] - b _08078346 - .align 2, 0 -_08078314: .4byte gTasks -_08078318: - ldrh r1, [r4, 0x10] - subs r0, r1, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - cmp r0, 0 - bge _08078346 - strh r1, [r4, 0x10] - movs r0, 0x1 - eors r0, r2 - strh r0, [r4, 0x12] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _08078346 - adds r0, r5, 0 - bl DestroyTask - b _08078346 -_08078342: - adds r0, r1, 0x1 - strh r0, [r4, 0xC] -_08078346: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80782BC - - thumb_func_start sub_807834C -sub_807834C: @ 807834C - push {lr} - adds r2, r0, 0 - ldrh r1, [r2, 0x3A] - movs r3, 0x3A - ldrsh r0, [r2, r3] - cmp r0, 0 - bne _08078378 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x5 - negs r1, r1 - ands r1, r0 - strb r1, [r3] - ldr r1, _08078374 @ =sub_8078380 - str r1, [r2, 0x1C] - adds r0, r2, 0 - bl _call_via_r1 - b _0807837C - .align 2, 0 -_08078374: .4byte sub_8078380 -_08078378: - subs r0, r1, 0x1 - strh r0, [r2, 0x3A] -_0807837C: - pop {r0} - bx r0 - thumb_func_end sub_807834C - - thumb_func_start sub_8078380 -sub_8078380: @ 8078380 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x20 - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x8 - bl Sin - strh r0, [r4, 0x26] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x7F - bgt _080783AC - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1D - b _080783B2 -_080783AC: - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1F -_080783B2: - strb r0, [r1] - ldrh r0, [r4, 0x2E] - adds r0, 0x8 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x38] - adds r0, r1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 24 - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x34 - bne _080783F4 - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080783EE - adds r0, r4, 0 - bl DestroySpriteAndFreeResources - b _080783F4 -_080783EE: - adds r0, r4, 0 - bl DestroySprite -_080783F4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8078380 - - thumb_func_start sub_80783FC -sub_80783FC: @ 80783FC - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r4, _080784AC @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 8 - ldr r1, _080784B0 @ =0xffe00000 - adds r0, r1 - lsrs r5, r0, 16 - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 8 - ldr r1, _080784B4 @ =0xffdc0000 - adds r0, r1 - lsrs r4, r0, 16 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _0807843A - lsls r0, r5, 16 - ldr r1, _080784B8 @ =0xfffa0000 - adds r0, r1 - lsrs r5, r0, 16 -_0807843A: - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 5 - movs r0, 0x52 - bl SetGpuReg - ldr r0, _080784BC @ =gUnknown_83BF55C - lsls r1, r5, 16 - asrs r1, 16 - lsls r2, r4, 16 - asrs r2, 16 - movs r3, 0x4 - bl CreateSprite - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080784C0 @ =0x0000271a - bl GetSpriteTileStartByTag - lsls r0, 16 - ldr r1, _080784C4 @ =0xffff0000 - cmp r0, r1 - bne _08078484 - ldr r1, _080784C8 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_08078484: - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _080784C8 @ =gSprites - adds r0, r1 - ldr r1, _080784CC @ =gUnknown_83BF554 - bl SetSubspriteTables - ldr r1, _080784D0 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - strh r4, [r0, 0x26] - ldr r1, _080784D4 @ =sub_80784D8 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080784AC: .4byte gBattleAnimTarget -_080784B0: .4byte 0xffe00000 -_080784B4: .4byte 0xffdc0000 -_080784B8: .4byte 0xfffa0000 -_080784BC: .4byte gUnknown_83BF55C -_080784C0: .4byte 0x0000271a -_080784C4: .4byte 0xffff0000 -_080784C8: .4byte gSprites -_080784CC: .4byte gUnknown_83BF554 -_080784D0: .4byte gTasks -_080784D4: .4byte sub_80784D8 - thumb_func_end sub_80783FC - - thumb_func_start sub_80784D8 -sub_80784D8: @ 80784D8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08078504 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrh r0, [r1, 0xA] - adds r0, 0x1 - adds r2, r0, 0 - strh r0, [r1, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _0807850C - ldr r0, _08078508 @ =sub_8078528 - str r0, [r1] - movs r0, 0 - strh r0, [r1, 0xA] - b _08078522 - .align 2, 0 -_08078504: .4byte gTasks -_08078508: .4byte sub_8078528 -_0807850C: - lsls r0, r2, 24 - lsrs r0, 24 - movs r1, 0x10 - subs r1, r0 - lsls r1, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg -_08078522: - pop {r0} - bx r0 - thumb_func_end sub_80784D8 - - thumb_func_start sub_8078528 -sub_8078528: @ 8078528 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080785C0 @ =0x0000271a - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080785C4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0xA] - adds r1, r0, 0x1 - strh r1, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xD - ble _080785B8 - ldrh r0, [r5, 0xC] - adds r0, 0x1 - movs r6, 0 - strh r0, [r5, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080785B8 - ldr r3, _080785C8 @ =gPlttBufferFaded - lsls r2, 4 - mov r12, r2 - ldr r1, _080785CC @ =0x0000010d - add r1, r12 - lsls r1, 1 - adds r1, r3 - ldrh r4, [r1] - movs r2, 0x87 - lsls r2, 1 - add r2, r12 - lsls r2, 1 - adds r2, r3 - ldrh r0, [r2] - strh r0, [r1] - ldr r0, _080785D0 @ =0x0000010f - add r0, r12 - lsls r0, 1 - adds r0, r3 - ldrh r1, [r0] - strh r1, [r2] - strh r4, [r0] - strh r6, [r5, 0xC] - ldrh r0, [r5, 0xE] - adds r0, 0x1 - strh r0, [r5, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080785B8 - strh r6, [r5, 0xE] - strh r6, [r5, 0xA] - ldrh r0, [r5, 0x10] - adds r0, 0x1 - strh r0, [r5, 0x10] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080785B8 - movs r0, 0x9 - strh r0, [r5, 0xA] - ldr r0, _080785D4 @ =sub_80785D8 - str r0, [r5] -_080785B8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080785C0: .4byte 0x0000271a -_080785C4: .4byte gTasks -_080785C8: .4byte gPlttBufferFaded -_080785CC: .4byte 0x0000010d -_080785D0: .4byte 0x0000010f -_080785D4: .4byte sub_80785D8 - thumb_func_end sub_8078528 - - thumb_func_start sub_80785D8 -sub_80785D8: @ 80785D8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08078608 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r2, r1, r2 - ldrh r0, [r2, 0xA] - subs r0, 0x1 - adds r3, r0, 0 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _08078610 - ldr r0, _0807860C @ =sub_807862C - str r0, [r2] - movs r0, 0 - strh r0, [r2, 0xA] - b _08078626 - .align 2, 0 -_08078608: .4byte gTasks -_0807860C: .4byte sub_807862C -_08078610: - lsls r0, r3, 24 - lsrs r0, 24 - movs r1, 0x10 - subs r1, r0 - lsls r1, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg -_08078626: - pop {r0} - bx r0 - thumb_func_end sub_80785D8 - - thumb_func_start sub_807862C -sub_807862C: @ 807862C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - adds r4, r0, 0 - ldr r1, _0807866C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r1 - ldrh r0, [r1, 0xA] - adds r0, 0x1 - strh r0, [r1, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x25 - bne _08078674 - ldrh r0, [r1, 0x26] - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - ldr r0, _08078670 @ =gSprites - adds r4, r0 - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite - b _0807868E - .align 2, 0 -_0807866C: .4byte gTasks -_08078670: .4byte gSprites -_08078674: - cmp r0, 0x27 - bne _0807868E - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r4, 0 - bl DestroyAnimVisualTask -_0807868E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_807862C - - thumb_func_start sub_8078694 -sub_8078694: @ 8078694 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r3, 0 - ldr r0, _080786B8 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrh r0, [r0] - subs r0, 0xF - cmp r0, 0x2B - bls _080786AC - b _08078830 -_080786AC: - lsls r0, 2 - ldr r1, _080786BC @ =_080786C0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080786B8: .4byte gBattleSpritesDataPtr -_080786BC: .4byte _080786C0 - .align 2, 0 -_080786C0: - .4byte _08078770 - .4byte _08078776 - .4byte _0807877C - .4byte _08078782 - .4byte _08078788 - .4byte _0807878E - .4byte _08078794 - .4byte _0807879A - .4byte _080787A0 - .4byte _080787A6 - .4byte _080787AC - .4byte _080787B2 - .4byte _080787B8 - .4byte _080787BE - .4byte _08078830 - .4byte _08078830 - .4byte _08078830 - .4byte _08078830 - .4byte _08078830 - .4byte _08078830 - .4byte _08078830 - .4byte _08078830 - .4byte _08078830 - .4byte _08078830 - .4byte _080787C4 - .4byte _080787C8 - .4byte _080787CC - .4byte _080787D0 - .4byte _080787D4 - .4byte _080787D8 - .4byte _080787DC - .4byte _080787E0 - .4byte _080787E8 - .4byte _080787F0 - .4byte _080787F8 - .4byte _08078800 - .4byte _08078808 - .4byte _08078810 - .4byte _08078830 - .4byte _08078830 - .4byte _08078818 - .4byte _0807881C - .4byte _08078820 - .4byte _08078828 -_08078770: - movs r5, 0 - movs r2, 0 - b _08078838 -_08078776: - movs r5, 0 - movs r2, 0x1 - b _08078838 -_0807877C: - movs r5, 0 - movs r2, 0x3 - b _08078838 -_08078782: - movs r5, 0 - movs r2, 0x5 - b _08078838 -_08078788: - movs r5, 0 - movs r2, 0x6 - b _08078838 -_0807878E: - movs r5, 0 - movs r2, 0x2 - b _08078838 -_08078794: - movs r5, 0 - movs r2, 0x4 - b _08078838 -_0807879A: - movs r5, 0x1 - movs r2, 0 - b _08078838 -_080787A0: - movs r5, 0x1 - movs r2, 0x1 - b _08078838 -_080787A6: - movs r5, 0x1 - movs r2, 0x3 - b _08078838 -_080787AC: - movs r5, 0x1 - movs r2, 0x5 - b _08078838 -_080787B2: - movs r5, 0x1 - movs r2, 0x6 - b _08078838 -_080787B8: - movs r5, 0x1 - movs r2, 0x2 - b _08078838 -_080787BE: - movs r5, 0x1 - movs r2, 0x4 - b _08078838 -_080787C4: - movs r5, 0 - b _080787E2 -_080787C8: - movs r5, 0 - b _080787EA -_080787CC: - movs r5, 0 - b _080787F2 -_080787D0: - movs r5, 0 - b _080787FA -_080787D4: - movs r5, 0 - b _08078802 -_080787D8: - movs r5, 0 - b _0807880A -_080787DC: - movs r5, 0 - b _08078812 -_080787E0: - movs r5, 0x1 -_080787E2: - movs r2, 0 - movs r3, 0x1 - b _08078838 -_080787E8: - movs r5, 0x1 -_080787EA: - movs r2, 0x1 - movs r3, 0x1 - b _08078838 -_080787F0: - movs r5, 0x1 -_080787F2: - movs r2, 0x3 - movs r3, 0x1 - b _08078838 -_080787F8: - movs r5, 0x1 -_080787FA: - movs r2, 0x5 - movs r3, 0x1 - b _08078838 -_08078800: - movs r5, 0x1 -_08078802: - movs r2, 0x6 - movs r3, 0x1 - b _08078838 -_08078808: - movs r5, 0x1 -_0807880A: - movs r2, 0x2 - movs r3, 0x1 - b _08078838 -_08078810: - movs r5, 0x1 -_08078812: - movs r2, 0x4 - movs r3, 0x1 - b _08078838 -_08078818: - movs r5, 0 - b _08078822 -_0807881C: - movs r5, 0 - b _0807882A -_08078820: - movs r5, 0x1 -_08078822: - movs r2, 0xFF - movs r3, 0 - b _08078838 -_08078828: - movs r5, 0x1 -_0807882A: - movs r2, 0xFF - movs r3, 0x1 - b _08078838 -_08078830: - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _0807885A -_08078838: - ldr r0, _08078860 @ =gBattleAnimArgs - movs r1, 0 - strh r5, [r0] - strh r2, [r0, 0x2] - strh r1, [r0, 0x4] - strh r1, [r0, 0x6] - strh r3, [r0, 0x8] - ldr r1, _08078864 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08078868 @ =sub_80BB088 - str r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 -_0807885A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08078860: .4byte gBattleAnimArgs -_08078864: .4byte gTasks -_08078868: .4byte sub_80BB088 - thumb_func_end sub_8078694 - - thumb_func_start LaunchStatusAnimation -LaunchStatusAnimation: @ 807886C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r0, _080788A8 @ =gBattleAnimAttacker - strb r4, [r0] - ldr r0, _080788AC @ =gBattleAnimTarget - strb r4, [r0] - ldr r0, _080788B0 @ =gBattleAnims_StatusConditions - movs r2, 0 - bl LaunchBattleAnimation - ldr r0, _080788B4 @ =task0A_80788BC - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080788B8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080788A8: .4byte gBattleAnimAttacker -_080788AC: .4byte gBattleAnimTarget -_080788B0: .4byte gBattleAnims_StatusConditions -_080788B4: .4byte task0A_80788BC -_080788B8: .4byte gTasks - thumb_func_end LaunchStatusAnimation - - thumb_func_start task0A_80788BC -task0A_80788BC: @ 80788BC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08078904 @ =gAnimScriptCallback - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _08078908 @ =gAnimScriptActive - ldrb r0, [r0] - cmp r0, 0 - bne _080788FE - ldr r0, _0807890C @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r1, _08078910 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0x8 - ldrsh r0, [r0, r1] - ldr r2, [r2, 0x4] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - adds r0, r4, 0 - bl DestroyTask -_080788FE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08078904: .4byte gAnimScriptCallback -_08078908: .4byte gAnimScriptActive -_0807890C: .4byte gBattleSpritesDataPtr -_08078910: .4byte gTasks - thumb_func_end task0A_80788BC - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_bg.s b/asm/battle_bg.s index 79479a49c..96f33cb3c 100644 --- a/asm/battle_bg.s +++ b/asm/battle_bg.s @@ -280,8 +280,8 @@ _0800F404: .4byte gBattleTypeFlags _0800F408: .4byte 0x00010010 thumb_func_end LoadBattleMenuWindowGfx - thumb_func_start sub_800F40C -sub_800F40C: @ 800F40C + thumb_func_start DrawMainBattleBackground +DrawMainBattleBackground: @ 800F40C push {lr} bl sub_800FC2C lsls r0, 24 @@ -289,7 +289,7 @@ sub_800F40C: @ 800F40C bl sub_800F260 pop {r0} bx r0 - thumb_func_end sub_800F40C + thumb_func_end DrawMainBattleBackground thumb_func_start LoadBattleTextboxAndBackground LoadBattleTextboxAndBackground: @ 800F420 @@ -310,7 +310,7 @@ LoadBattleTextboxAndBackground: @ 800F420 movs r2, 0x40 bl LoadCompressedPalette bl LoadBattleMenuWindowGfx - bl sub_800F40C + bl DrawMainBattleBackground pop {r0} bx r0 .align 2, 0 diff --git a/asm/smokescreen.s b/asm/smokescreen.s index 2a350c911..e0d137767 100644 --- a/asm/smokescreen.s +++ b/asm/smokescreen.s @@ -5,8 +5,8 @@ .text - thumb_func_start sub_804A76C -sub_804A76C: @ 804A76C + thumb_func_start SmokescreenImpact +SmokescreenImpact: @ 804A76C push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -156,7 +156,7 @@ _0804A8B0: .4byte sub_804A8C0 _0804A8B4: .4byte gSprites _0804A8B8: .4byte gUnknown_82509F4 _0804A8BC: .4byte 0xfff00000 - thumb_func_end sub_804A76C + thumb_func_end SmokescreenImpact thumb_func_start sub_804A8C0 sub_804A8C0: @ 804A8C0 diff --git a/asm/water.s b/asm/water.s index a2918ec33..89fcfa3c8 100644 --- a/asm/water.s +++ b/asm/water.s @@ -3493,8 +3493,8 @@ _080AC6D0: bx r0 thumb_func_end sub_80AC698 - thumb_func_start sub_80AC6D8 -sub_80AC6D8: @ 80AC6D8 + thumb_func_start AnimWaterPulseRing +AnimWaterPulseRing: @ 80AC6D8 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x1 @@ -3526,7 +3526,7 @@ sub_80AC6D8: @ 80AC6D8 _080AC714: .4byte gBattleAnimTarget _080AC718: .4byte gBattleAnimArgs _080AC71C: .4byte sub_80AC720 - thumb_func_end sub_80AC6D8 + thumb_func_end AnimWaterPulseRing thumb_func_start sub_80AC720 sub_80AC720: @ 80AC720 diff --git a/common_syms/battle_anim_special.txt b/common_syms/battle_anim_special.txt new file mode 100644 index 000000000..7e68496a0 --- /dev/null +++ b/common_syms/battle_anim_special.txt @@ -0,0 +1,3 @@ +sUnknown_3005424 +sUnknown_3005428 +sUnknown_300542C diff --git a/data/battle_anim.s b/data/battle_anim.s deleted file mode 100644 index 472ea2710..000000000 --- a/data/battle_anim.s +++ /dev/null @@ -1,891 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - .section .rodata - .align 2 -gOamData_83AC9C8:: - .4byte 0x00000000, 0x00000800 - -gOamData_83AC9D0:: - .4byte 0x40000000, 0x00000800 - -gOamData_83AC9D8:: - .4byte 0x80000000, 0x00000800 - -gOamData_83AC9E0:: - .4byte 0xc0000000, 0x00000800 - -gOamData_83AC9E8:: - .4byte 0x00004000, 0x00000800 - -gOamData_83AC9F0:: - .4byte 0x40004000, 0x00000800 - -gOamData_83AC9F8:: - .4byte 0x80004000, 0x00000800 - -gOamData_83ACA00:: - .4byte 0xc0004000, 0x00000800 - -gOamData_83ACA08:: - .4byte 0x00008000, 0x00000800 - -gOamData_83ACA10:: - .4byte 0x40008000, 0x00000800 - -gOamData_83ACA18:: - .4byte 0x80008000, 0x00000800 - -gOamData_83ACA20:: - .4byte 0xc0008000, 0x00000800 - -gOamData_83ACA28:: - .4byte 0x00000100, 0x00000800 - -gOamData_83ACA30:: - .4byte 0x40000100, 0x00000800 - -gOamData_83ACA38:: - .4byte 0x80000100, 0x00000800 - -gOamData_83ACA40:: - .4byte 0xc0000100, 0x00000800 - -gOamData_83ACA48:: - .4byte 0x00004100, 0x00000800 - -gOamData_83ACA50:: - .4byte 0x40004100, 0x00000800 - -gOamData_83ACA58:: - .4byte 0x80004100, 0x00000800 - -gOamData_83ACA60:: - .4byte 0xc0004100, 0x00000800 - -gOamData_83ACA68:: - .4byte 0x00008100, 0x00000800 - -gOamData_83ACA70:: - .4byte 0x40008100, 0x00000800 - -gOamData_83ACA78:: - .4byte 0x80008100, 0x00000800 - -gOamData_83ACA80:: - .4byte 0xc0008100, 0x00000800 - -gOamData_83ACA88:: - .4byte 0x00000300, 0x00000800 - -gOamData_83ACA90:: - .4byte 0x40000300, 0x00000800 - -gOamData_83ACA98:: - .4byte 0x80000300, 0x00000800 - -gOamData_83ACAA0:: - .4byte 0xc0000300, 0x00000800 - -gOamData_83ACAA8:: - .4byte 0x00004300, 0x00000800 - -gOamData_83ACAB0:: - .4byte 0x40004300, 0x00000800 - -gOamData_83ACAB8:: - .4byte 0x80004300, 0x00000800 - -gOamData_83ACAC0:: - .4byte 0xc0004300, 0x00000800 - -gOamData_83ACAC8:: - .4byte 0x00008300, 0x00000800 - -gOamData_83ACAD0:: - .4byte 0x40008300, 0x00000800 - -gOamData_83ACAD8:: - .4byte 0x80008300, 0x00000800 - -gOamData_83ACAE0:: - .4byte 0xc0008300, 0x00000800 - -gOamData_83ACAE8:: - .4byte 0x00000400, 0x00000800 - -gOamData_83ACAF0:: - .4byte 0x40000400, 0x00000800 - -gOamData_83ACAF8:: - .4byte 0x80000400, 0x00000800 - -gOamData_83ACB00:: - .4byte 0xc0000400, 0x00000800 - -gOamData_83ACB08:: - .4byte 0x00004400, 0x00000800 - -gOamData_83ACB10:: - .4byte 0x40004400, 0x00000800 - -gOamData_83ACB18:: - .4byte 0x80004400, 0x00000800 - -gOamData_83ACB20:: - .4byte 0xc0004400, 0x00000800 - -gOamData_83ACB28:: - .4byte 0x00008400, 0x00000800 - -gOamData_83ACB30:: - .4byte 0x40008400, 0x00000800 - -gOamData_83ACB38:: - .4byte 0x80008400, 0x00000800 - -gOamData_83ACB40:: - .4byte 0xc0008400, 0x00000800 - -gOamData_83ACB48:: - .4byte 0x00000500, 0x00000800 - -gOamData_83ACB50:: - .4byte 0x40000500, 0x00000800 - -gOamData_83ACB58:: - .4byte 0x80000500, 0x00000800 - -gOamData_83ACB60:: - .4byte 0xc0000500, 0x00000800 - -gOamData_83ACB68:: - .4byte 0x00004500, 0x00000800 - -gOamData_83ACB70:: - .4byte 0x40004500, 0x00000800 - -gOamData_83ACB78:: - .4byte 0x80004500, 0x00000800 - -gOamData_83ACB80:: - .4byte 0xc0004500, 0x00000800 - -gOamData_83ACB88:: - .4byte 0x00008500, 0x00000800 - -gOamData_83ACB90:: - .4byte 0x40008500, 0x00000800 - -gOamData_83ACB98:: - .4byte 0x80008500, 0x00000800 - -gOamData_83ACBA0:: - .4byte 0xc0008500, 0x00000800 - -gOamData_83ACBA8:: - .4byte 0x00000700, 0x00000800 - -gOamData_83ACBB0:: - .4byte 0x40000700, 0x00000800 - -gOamData_83ACBB8:: - .4byte 0x80000700, 0x00000800 - -gOamData_83ACBC0:: - .4byte 0xc0000700, 0x00000800 - -gOamData_83ACBC8:: - .4byte 0x00004700, 0x00000800 - -gOamData_83ACBD0:: - .4byte 0x40004700, 0x00000800 - -gOamData_83ACBD8:: - .4byte 0x80004700, 0x00000800 - -gOamData_83ACBE0:: - .4byte 0xc0004700, 0x00000800 - -gOamData_83ACBE8:: - .4byte 0x00008700, 0x00000800 - -gOamData_83ACBF0:: - .4byte 0x40008700, 0x00000800 - -gOamData_83ACBF8:: - .4byte 0x80008700, 0x00000800 - -gOamData_83ACC00:: - .4byte 0xc0008700, 0x00000800 - -gUnknown_83ACC08:: @ 83ACC08 - obj_tiles gFile_graphics_battle_anims_sprites_000_sheet, 0x0200, 10000 - obj_tiles gFile_graphics_battle_anims_sprites_001_sheet, 0x0300, 10001 - obj_tiles gFile_graphics_battle_anims_sprites_002_sheet, 0x0200, 10002 - obj_tiles gFile_graphics_battle_anims_sprites_003_sheet, 0x0100, 10003 - obj_tiles gFile_graphics_battle_anims_sprites_004_sheet, 0x0200, 10004 - obj_tiles gFile_graphics_battle_anims_sprites_005_sheet, 0x0400, 10005 - obj_tiles gFile_graphics_battle_anims_sprites_006_sheet, 0x0180, 10006 - obj_tiles gFile_graphics_battle_anims_sprites_007_sheet, 0x0800, 10007 - obj_tiles gFile_graphics_battle_anims_sprites_008_sheet, 0x0020, 10008 - obj_tiles gFile_graphics_battle_anims_sprites_009_sheet, 0x0400, 10009 - obj_tiles gFile_graphics_battle_anims_sprites_010_sheet, 0x1200, 10010 - obj_tiles gFile_graphics_battle_anims_sprites_011_sheet, 0x0180, 10011 - obj_tiles gFile_graphics_battle_anims_sprites_012_sheet, 0x0080, 10012 - obj_tiles gFile_graphics_battle_anims_sprites_013_sheet, 0x0080, 10013 - obj_tiles gFile_graphics_battle_anims_sprites_014_sheet, 0x0280, 10014 - obj_tiles gFile_graphics_battle_anims_sprites_015_sheet, 0x0080, 10015 - obj_tiles gFile_graphics_battle_anims_sprites_016_sheet, 0x0100, 10016 - obj_tiles gFile_graphics_battle_anims_sprites_017_sheet, 0x0020, 10017 - obj_tiles gFile_graphics_battle_anims_sprites_018_sheet, 0x0080, 10018 - obj_tiles gFile_graphics_battle_anims_sprites_019_sheet, 0x0400, 10019 - obj_tiles gFile_graphics_battle_anims_sprites_020_sheet, 0x0200, 10020 - obj_tiles gFile_graphics_battle_anims_sprites_021_sheet, 0x0a00, 10021 - obj_tiles gFile_graphics_battle_anims_sprites_021_sheet, 0x0a00, 10022 - obj_tiles gFile_graphics_battle_anims_sprites_023_sheet, 0x0380, 10023 - obj_tiles gFile_graphics_battle_anims_sprites_024_sheet, 0x0300, 10024 - obj_tiles gFile_graphics_battle_anims_sprites_025_sheet, 0x0a00, 10025 - obj_tiles gFile_graphics_battle_anims_sprites_026_sheet, 0x0a00, 10026 - obj_tiles gFile_graphics_battle_anims_sprites_027_sheet, 0x0a00, 10027 - obj_tiles gFile_graphics_battle_anims_sprites_028_sheet, 0x0a00, 10028 - obj_tiles gFile_graphics_battle_anims_sprites_029_sheet, 0x0a00, 10029 - obj_tiles gFile_graphics_battle_anims_sprites_030_sheet, 0x0a00, 10030 - obj_tiles gFile_graphics_battle_anims_sprites_031_sheet, 0x0e00, 10031 - obj_tiles gFile_graphics_battle_anims_sprites_032_sheet, 0x0380, 10032 - obj_tiles gFile_graphics_battle_anims_sprites_033_sheet, 0x1000, 10033 - obj_tiles gFile_graphics_battle_anims_sprites_034_sheet, 0x0800, 10034 - obj_tiles gFile_graphics_battle_anims_sprites_035_sheet, 0x0a00, 10035 - obj_tiles gFile_graphics_battle_anims_sprites_036_sheet, 0x0800, 10036 - obj_tiles gFile_graphics_battle_anims_sprites_037_sheet, 0x0a00, 10037 - obj_tiles gFile_graphics_battle_anims_sprites_038_sheet, 0x0a00, 10038 - obj_tiles gFile_graphics_battle_anims_sprites_039_sheet, 0x0a00, 10039 - obj_tiles gFile_graphics_battle_anims_sprites_040_sheet, 0x0a00, 10040 - obj_tiles gFile_graphics_battle_anims_sprites_041_sheet, 0x0a00, 10041 - obj_tiles gFile_graphics_battle_anims_sprites_042_sheet, 0x0a00, 10042 - obj_tiles gFile_graphics_battle_anims_sprites_043_sheet, 0x0a00, 10043 - obj_tiles gFile_graphics_battle_anims_sprites_044_sheet, 0x0a00, 10044 - obj_tiles gFile_graphics_battle_anims_sprites_045_sheet, 0x0a00, 10045 - obj_tiles gFile_graphics_battle_anims_sprites_046, 0x1000, 10046 - obj_tiles gFile_graphics_battle_anims_sprites_046, 0x1000, 10047 - obj_tiles gFile_graphics_battle_anims_sprites_048_sheet, 0x1000, 10048 - obj_tiles gFile_graphics_battle_anims_sprites_048_sheet, 0x1000, 10049 - obj_tiles gFile_graphics_battle_anims_sprites_050_sheet, 0x0200, 10050 - obj_tiles gFile_graphics_battle_anims_sprites_051_sheet, 0x0200, 10051 - obj_tiles gFile_graphics_battle_anims_sprites_052_sheet, 0x0200, 10052 - obj_tiles gFile_graphics_battle_anims_sprites_053_sheet, 0x0800, 10053 - obj_tiles gFile_graphics_battle_anims_sprites_054_sheet, 0x0080, 10054 - obj_tiles gFile_graphics_battle_anims_sprites_055_sheet, 0x0200, 10055 - obj_tiles gFile_graphics_battle_anims_sprites_056_sheet, 0x1000, 10056 - obj_tiles gFile_graphics_battle_anims_sprites_057_sheet, 0x0180, 10057 - obj_tiles gFile_graphics_battle_anims_sprites_058_sheet, 0x0c00, 10058 - obj_tiles gFile_graphics_battle_anims_sprites_059_sheet, 0x0100, 10059 - obj_tiles gFile_graphics_battle_anims_sprites_060_sheet, 0x0040, 10060 - obj_tiles gFile_graphics_battle_anims_sprites_061_sheet, 0x0180, 10061 - obj_tiles gFile_graphics_battle_anims_sprites_062_sheet, 0x0800, 10062 - obj_tiles gFile_graphics_battle_anims_sprites_063_sheet, 0x0480, 10063 - obj_tiles gFile_graphics_battle_anims_sprites_064_sheet, 0x0200, 10064 - obj_tiles gFile_graphics_battle_anims_sprites_065_sheet, 0x0200, 10065 - obj_tiles gFile_graphics_battle_anims_sprites_066_sheet, 0x0100, 10066 - obj_tiles gFile_graphics_battle_anims_sprites_065_sheet, 0x0200, 10067 - obj_tiles gFile_graphics_battle_anims_sprites_065_sheet, 0x0200, 10068 - obj_tiles gFile_graphics_battle_anims_sprites_065_sheet, 0x0200, 10069 - obj_tiles gFile_graphics_battle_anims_sprites_070_sheet, 0x0200, 10070 - obj_tiles gFile_graphics_battle_anims_sprites_071_sheet, 0x0a00, 10071 - obj_tiles gFile_graphics_battle_anims_sprites_072_sheet, 0x0300, 10072 - obj_tiles gFile_graphics_battle_anims_sprites_073_sheet, 0x0180, 10073 - obj_tiles gFile_graphics_battle_anims_sprites_074_sheet, 0x00a0, 10074 - obj_tiles gFile_graphics_battle_anims_sprites_075_sheet, 0x0700, 10075 - obj_tiles gFile_graphics_battle_anims_sprites_076_sheet, 0x0400, 10076 - obj_tiles gFile_graphics_battle_anims_sprites_077_sheet, 0x0200, 10077 - obj_tiles gFile_graphics_battle_anims_sprites_078_sheet, 0x0300, 10078 - obj_tiles gFile_graphics_battle_anims_sprites_079_sheet, 0x0c00, 10079 - obj_tiles gFile_graphics_battle_anims_sprites_080_sheet, 0x0a00, 10080 - obj_tiles gFile_graphics_battle_anims_sprites_081_sheet, 0x0080, 10081 - obj_tiles gFile_graphics_battle_anims_sprites_082_sheet, 0x0040, 10082 - obj_tiles gFile_graphics_battle_anims_sprites_083_sheet, 0x0e00, 10083 - obj_tiles gFile_graphics_battle_anims_sprites_084_sheet, 0x0e00, 10084 - obj_tiles gFile_graphics_battle_anims_sprites_085_sheet, 0x0280, 10085 - obj_tiles gFile_graphics_battle_anims_sprites_086_sheet, 0x0200, 10086 - obj_tiles gFile_graphics_battle_anims_sprites_087_sheet, 0x0080, 10087 - obj_tiles gFile_graphics_battle_anims_sprites_088_sheet, 0x00c0, 10088 - obj_tiles gFile_graphics_battle_anims_sprites_089_sheet, 0x0a00, 10089 - obj_tiles gFile_graphics_battle_anims_sprites_090_sheet, 0x0200, 10090 - obj_tiles gFile_graphics_battle_anims_sprites_091_sheet, 0x0180, 10091 - obj_tiles gFile_graphics_battle_anims_sprites_092_sheet, 0x0080, 10092 - obj_tiles gFile_graphics_battle_anims_sprites_093_sheet, 0x1000, 10093 - obj_tiles gFile_graphics_battle_anims_sprites_094_sheet, 0x0a00, 10094 - obj_tiles gFile_graphics_battle_anims_sprites_095_sheet, 0x0180, 10095 - obj_tiles gFile_graphics_battle_anims_sprites_096_sheet, 0x0380, 10096 - obj_tiles gFile_graphics_battle_anims_sprites_097_sheet, 0x0c00, 10097 - obj_tiles gFile_graphics_battle_anims_sprites_098_sheet, 0x0200, 10098 - obj_tiles gFile_graphics_battle_anims_sprites_099_sheet, 0x0200, 10099 - obj_tiles gFile_graphics_battle_anims_sprites_100_sheet, 0x0200, 10100 - obj_tiles gFile_graphics_battle_anims_sprites_101_sheet, 0x0200, 10101 - obj_tiles gFile_graphics_battle_anims_sprites_102_sheet, 0x0400, 10102 - obj_tiles gFile_graphics_battle_anims_sprites_103_sheet, 0x0080, 10103 - obj_tiles gFile_graphics_battle_anims_sprites_104_sheet, 0x0400, 10104 - obj_tiles gFile_graphics_battle_anims_sprites_105_sheet, 0x0c00, 10105 - obj_tiles gFile_graphics_battle_anims_sprites_106_sheet, 0x0200, 10106 - obj_tiles gFile_graphics_battle_anims_sprites_107_sheet, 0x1000, 10107 - obj_tiles gFile_graphics_battle_anims_sprites_108_sheet, 0x0a00, 10108 - obj_tiles gFile_graphics_battle_anims_sprites_109_sheet, 0x0020, 10109 - obj_tiles gFile_graphics_battle_anims_sprites_110_sheet, 0x0e00, 10110 - obj_tiles gFile_graphics_battle_anims_sprites_111_sheet, 0x0080, 10111 - obj_tiles gFile_graphics_battle_anims_sprites_112_sheet, 0x0a00, 10112 - obj_tiles gFile_graphics_battle_anims_sprites_113_sheet, 0x0400, 10113 - obj_tiles gFile_graphics_battle_anims_sprites_114_sheet, 0x0200, 10114 - obj_tiles gFile_graphics_battle_anims_sprites_115_sheet, 0x0700, 10115 - obj_tiles gFile_graphics_battle_anims_sprites_116_sheet, 0x0800, 10116 - obj_tiles gFile_graphics_battle_anims_sprites_117_sheet, 0x0a00, 10117 - obj_tiles gFile_graphics_battle_anims_sprites_118_sheet, 0x0600, 10118 - obj_tiles gFile_graphics_battle_anims_sprites_119_sheet, 0x0800, 10119 - obj_tiles gFile_graphics_battle_anims_sprites_120_sheet, 0x0200, 10120 - obj_tiles gFile_graphics_battle_anims_sprites_121_sheet, 0x0040, 10121 - obj_tiles gFile_graphics_battle_anims_sprites_122_sheet, 0x0180, 10122 - obj_tiles gFile_graphics_battle_anims_sprites_123_sheet, 0x0600, 10123 - obj_tiles gFile_graphics_battle_anims_sprites_124_sheet, 0x0600, 10124 - obj_tiles gFile_graphics_battle_anims_sprites_125_sheet, 0x0200, 10125 - obj_tiles gFile_graphics_battle_anims_sprites_126_sheet, 0x0080, 10126 - obj_tiles gFile_graphics_battle_anims_sprites_127_sheet, 0x0200, 10127 - obj_tiles gFile_graphics_battle_anims_sprites_128_sheet, 0x0800, 10128 - obj_tiles gFile_graphics_battle_anims_sprites_129_sheet, 0x0080, 10129 - obj_tiles gFile_graphics_battle_anims_sprites_130_sheet, 0x0a00, 10130 - obj_tiles gFile_graphics_battle_anims_sprites_131_sheet, 0x0280, 10131 - obj_tiles gFile_graphics_battle_anims_sprites_132_sheet, 0x0280, 10132 - obj_tiles gFile_graphics_battle_anims_sprites_133_sheet, 0x0100, 10133 - obj_tiles gFile_graphics_battle_anims_sprites_134_sheet, 0x0200, 10134 - obj_tiles gFile_graphics_battle_anims_sprites_135_sheet, 0x0200, 10135 - -gUnknown_83AD048:: @ 83AD048 - obj_tiles gFile_graphics_battle_anims_sprites_136_sheet, 0x0020, 10136 - obj_tiles gFile_graphics_battle_anims_sprites_137_sheet, 0x0a00, 10137 - obj_tiles gFile_graphics_battle_anims_sprites_138_sheet, 0x0800, 10138 - obj_tiles gFile_graphics_battle_anims_sprites_139_sheet, 0x0800, 10139 - obj_tiles gFile_graphics_battle_anims_sprites_140_sheet, 0x00c0, 10140 - obj_tiles gFile_graphics_battle_anims_sprites_141_sheet, 0x01c0, 10141 - obj_tiles gFile_graphics_battle_anims_sprites_142_sheet, 0x0100, 10142 - obj_tiles gFile_graphics_battle_anims_sprites_143_sheet, 0x0800, 10143 - obj_tiles gFile_graphics_battle_anims_sprites_144_sheet, 0x0200, 10144 - obj_tiles gFile_graphics_battle_anims_sprites_145_sheet, 0x0800, 10145 - obj_tiles gFile_graphics_battle_anims_sprites_146_sheet, 0x0180, 10146 - obj_tiles gFile_graphics_battle_anims_sprites_147_sheet, 0x0180, 10147 - obj_tiles gFile_graphics_battle_anims_sprites_148_sheet, 0x0200, 10148 - obj_tiles gFile_graphics_battle_anims_sprites_149_sheet, 0x0200, 10149 - obj_tiles gFile_graphics_battle_anims_sprites_150_sheet, 0x0180, 10150 - obj_tiles gFile_graphics_battle_anims_sprites_151_sheet, 0x0400, 10151 - obj_tiles gFile_graphics_battle_anims_sprites_152_sheet, 0x0080, 10152 - obj_tiles gFile_graphics_battle_anims_sprites_153_sheet, 0x0100, 10153 - obj_tiles gFile_graphics_battle_anims_sprites_154_sheet, 0x0100, 10154 - obj_tiles gFile_graphics_battle_anims_sprites_155_sheet, 0x0140, 10155 - obj_tiles gFile_graphics_battle_anims_sprites_156_sheet, 0x0800, 10156 - obj_tiles gFile_graphics_battle_anims_sprites_157_sheet, 0x0200, 10157 - obj_tiles gFile_graphics_battle_anims_sprites_158_sheet, 0x0100, 10158 - obj_tiles gFile_graphics_battle_anims_sprites_159_sheet, 0x00a0, 10159 - obj_tiles gFile_graphics_battle_anims_sprites_160_sheet, 0x0100, 10160 - obj_tiles gFile_graphics_battle_anims_sprites_161_sheet, 0x0080, 10161 - obj_tiles gFile_graphics_battle_anims_sprites_162_sheet, 0x0300, 10162 - obj_tiles gFile_graphics_battle_anims_sprites_163_sheet, 0x0100, 10163 - obj_tiles gFile_graphics_battle_anims_sprites_163_sheet, 0x0100, 10164 - obj_tiles gFile_graphics_battle_anims_sprites_163_sheet, 0x0100, 10165 - obj_tiles gFile_graphics_battle_anims_sprites_166_sheet, 0x0800, 10166 - obj_tiles gFile_graphics_battle_anims_sprites_166_sheet, 0x0800, 10167 - obj_tiles gFile_graphics_battle_anims_sprites_166_sheet, 0x0800, 10168 - obj_tiles gFile_graphics_battle_anims_sprites_166_sheet, 0x0800, 10169 - obj_tiles gFile_graphics_battle_anims_sprites_166_sheet, 0x0800, 10170 - obj_tiles gFile_graphics_battle_anims_sprites_171_sheet, 0x0080, 10171 - obj_tiles gFile_graphics_battle_anims_sprites_144_sheet, 0x0200, 10172 - obj_tiles gFile_graphics_battle_anims_sprites_173_sheet, 0x0200, 10173 - obj_tiles gFile_graphics_battle_anims_sprites_174_sheet, 0x0200, 10174 - obj_tiles gFile_graphics_battle_anims_sprites_175_sheet, 0x0080, 10175 - obj_tiles gFile_graphics_battle_anims_sprites_176_sheet, 0x0200, 10176 - obj_tiles gFile_graphics_battle_anims_sprites_177_sheet, 0x0500, 10177 - obj_tiles gFile_graphics_battle_anims_sprites_178_sheet, 0x0800, 10178 - obj_tiles gFile_graphics_battle_anims_sprites_179_sheet, 0x0400, 10179 - obj_tiles gFile_graphics_battle_anims_sprites_180_sheet, 0x0020, 10180 - obj_tiles gFile_graphics_battle_anims_sprites_181_sheet, 0x0800, 10181 - obj_tiles gFile_graphics_battle_anims_sprites_182_sheet, 0x0100, 10182 - obj_tiles gFile_graphics_battle_anims_sprites_183_sheet, 0x0800, 10183 - obj_tiles gFile_graphics_battle_anims_sprites_184_sheet, 0x0400, 10184 - obj_tiles gFile_graphics_battle_anims_sprites_185_sheet, 0x0a00, 10185 - obj_tiles gFile_graphics_battle_anims_sprites_186_sheet, 0x1000, 10186 - obj_tiles gFile_graphics_battle_anims_sprites_187_sheet, 0x0800, 10187 - obj_tiles gFile_graphics_battle_anims_sprites_188_sheet, 0x0400, 10188 - obj_tiles gFile_graphics_battle_anims_sprites_189_sheet, 0x0200, 10189 - obj_tiles gFile_graphics_battle_anims_sprites_190_sheet, 0x0800, 10190 - obj_tiles gFile_graphics_battle_anims_sprites_191_sheet, 0x0800, 10191 - obj_tiles gFile_graphics_battle_anims_sprites_192_sheet, 0x0800, 10192 - obj_tiles gFile_graphics_battle_anims_sprites_193_sheet, 0x0200, 10193 - obj_tiles gFile_graphics_battle_anims_sprites_194_sheet, 0x0800, 10194 - obj_tiles gFile_graphics_battle_anims_sprites_195_sheet, 0x0200, 10195 - obj_tiles gFile_graphics_battle_anims_sprites_196_sheet, 0x0800, 10196 - obj_tiles gFile_graphics_battle_anims_sprites_197_sheet, 0x0200, 10197 - obj_tiles gFile_graphics_battle_anims_sprites_198_sheet, 0x0800, 10198 - obj_tiles gFile_graphics_battle_anims_sprites_199_sheet, 0x0400, 10199 - obj_tiles gFile_graphics_battle_anims_sprites_200_sheet, 0x0200, 10200 - obj_tiles gFile_graphics_battle_anims_sprites_201_sheet, 0x0a80, 10201 - obj_tiles gFile_graphics_battle_anims_sprites_202_sheet, 0x0600, 10202 - obj_tiles gFile_graphics_battle_anims_sprites_203_sheet, 0x0800, 10203 - obj_tiles gFile_graphics_battle_anims_sprites_204_sheet, 0x0200, 10204 - obj_tiles gFile_graphics_battle_anims_sprites_205_sheet, 0x0600, 10205 - obj_tiles gFile_graphics_battle_anims_sprites_206_sheet, 0x0800, 10206 - obj_tiles gFile_graphics_battle_anims_sprites_207_sheet, 0x0180, 10207 - obj_tiles gFile_graphics_battle_anims_sprites_208_sheet, 0x0800, 10208 - obj_tiles gFile_graphics_battle_anims_sprites_209_sheet, 0x0800, 10209 - obj_tiles gFile_graphics_battle_anims_sprites_210_sheet, 0x0080, 10210 - obj_tiles gFile_graphics_battle_anims_sprites_211_sheet, 0x0080, 10211 - obj_tiles gFile_graphics_battle_anims_sprites_212_sheet, 0x0800, 10212 - obj_tiles gFile_graphics_battle_anims_sprites_213_sheet, 0x0800, 10213 - obj_tiles gFile_graphics_battle_anims_sprites_214_sheet, 0x0600, 10214 - obj_tiles gFile_graphics_battle_anims_sprites_215_sheet, 0x0600, 10215 - obj_tiles gFile_graphics_battle_anims_sprites_210_sheet, 0x0080, 10216 - obj_tiles gFile_graphics_battle_anims_sprites_217_sheet, 0x0080, 10217 - obj_tiles gFile_graphics_battle_anims_sprites_218_sheet, 0x0180, 10218 - obj_tiles gFile_graphics_battle_anims_sprites_210_sheet, 0x0080, 10219 - obj_tiles gFile_graphics_battle_anims_sprites_220_sheet, 0x0200, 10220 - obj_tiles gFile_graphics_battle_anims_sprites_221_sheet, 0x0400, 10221 - obj_tiles gFile_graphics_battle_anims_sprites_222_sheet, 0x0a00, 10222 - obj_tiles gFile_graphics_battle_anims_sprites_223_sheet, 0x0800, 10223 - obj_tiles gFile_graphics_battle_anims_sprites_224_sheet, 0x0200, 10224 - obj_tiles gFile_graphics_battle_anims_sprites_225_sheet, 0x0400, 10225 - obj_tiles gFile_graphics_battle_anims_sprites_226_sheet, 0x0080, 10226 - obj_tiles gFile_graphics_battle_anims_sprites_227_sheet, 0x0800, 10227 - obj_tiles gFile_graphics_battle_anims_sprites_228_sheet, 0x0200, 10228 - obj_tiles gFile_graphics_battle_anims_sprites_229_sheet, 0x0300, 10229 - obj_tiles gFile_graphics_battle_anims_sprites_230_sheet, 0x0800, 10230 - obj_tiles gFile_graphics_battle_anims_sprites_231_sheet, 0x0380, 10231 - obj_tiles gFile_graphics_battle_anims_sprites_232_sheet, 0x0800, 10232 - -gUnknown_83AD350:: @ 83AD350 - obj_tiles gFile_graphics_battle_anims_sprites_233_sheet, 0x00c0, 10233 - obj_tiles gFile_graphics_battle_anims_sprites_234_sheet, 0x0800, 10234 - obj_tiles gFile_graphics_battle_anims_sprites_235_sheet, 0x0060, 10235 - obj_tiles gFile_graphics_battle_anims_sprites_235_sheet, 0x0060, 10236 - obj_tiles gFile_graphics_battle_anims_sprites_235_sheet, 0x0060, 10237 - obj_tiles gFile_graphics_battle_anims_sprites_238_sheet, 0x0080, 10238 - obj_tiles gFile_graphics_battle_anims_sprites_239_sheet, 0x0180, 10239 - obj_tiles gFile_graphics_battle_anims_sprites_240_sheet, 0x0180, 10240 - obj_tiles gFile_graphics_battle_anims_sprites_241_sheet, 0x0200, 10241 - obj_tiles gFile_graphics_battle_anims_sprites_242_sheet, 0x0200, 10242 - obj_tiles gFile_graphics_battle_anims_sprites_243_sheet, 0x0020, 10243 - obj_tiles gFile_graphics_battle_anims_sprites_244_sheet, 0x0400, 10244 - obj_tiles gFile_graphics_battle_anims_sprites_245_sheet, 0x0600, 10245 - obj_tiles gFile_graphics_battle_anims_sprites_246_sheet, 0x1000, 10246 - obj_tiles gFile_graphics_battle_anims_sprites_247_sheet, 0x0400, 10247 - obj_tiles gFile_graphics_battle_anims_sprites_248_sheet, 0x0020, 10248 - obj_tiles gFile_graphics_battle_anims_sprites_249_sheet, 0x0080, 10249 - obj_tiles gFile_graphics_battle_anims_sprites_250_sheet, 0x0800, 10250 - obj_tiles gFile_graphics_battle_anims_sprites_251_sheet, 0x0080, 10251 - obj_tiles gFile_graphics_battle_anims_sprites_252_sheet, 0x0200, 10252 - obj_tiles gFile_graphics_battle_anims_sprites_253_sheet, 0x0400, 10253 - obj_tiles gFile_graphics_battle_anims_sprites_254_sheet, 0x0200, 10254 - obj_tiles gFile_graphics_battle_anims_sprites_255_sheet, 0x0200, 10255 - obj_tiles gFile_graphics_battle_anims_sprites_256_sheet, 0x0800, 10256 - obj_tiles gFile_graphics_battle_anims_sprites_257_sheet, 0x0280, 10257 - obj_tiles gFile_graphics_battle_anims_sprites_258_sheet, 0x0200, 10258 - obj_tiles gFile_graphics_battle_anims_sprites_149_sheet, 0x0200, 10259 - obj_tiles gFile_graphics_battle_anims_sprites_260_sheet, 0x0400, 10260 - obj_tiles gFile_graphics_battle_anims_sprites_261_sheet, 0x0200, 10261 - obj_tiles gFile_graphics_battle_anims_sprites_262_sheet, 0x0200, 10262 - obj_tiles gFile_graphics_battle_anims_sprites_263_sheet, 0x0080, 10263 - obj_tiles gFile_graphics_battle_anims_sprites_264_sheet, 0x0020, 10264 - obj_tiles gFile_graphics_battle_anims_sprites_264_sheet, 0x0020, 10265 - obj_tiles gFile_graphics_battle_anims_sprites_266_sheet, 0x0080, 10266 - obj_tiles gFile_graphics_battle_anims_sprites_212_sheet, 0x0800, 10267 - obj_tiles gFile_graphics_battle_anims_sprites_264_sheet, 0x0020, 10268 - -gUnknown_83AD470:: @ 83AD470 - obj_tiles gFile_graphics_battle_anims_sprites_269_sheet, 0x0080, 10269 - obj_tiles gFile_graphics_battle_anims_sprites_270_sheet, 0x0400, 10270 - obj_tiles gFile_graphics_battle_anims_sprites_271_sheet, 0x0080, 10271 - obj_tiles gFile_graphics_battle_anims_sprites_272_sheet, 0x0800, 10272 - obj_tiles gFile_graphics_battle_anims_sprites_273_sheet, 0x0020, 10273 - obj_tiles gFile_graphics_battle_anims_sprites_274_sheet, 0x0800, 10274 - obj_tiles gFile_graphics_battle_anims_sprites_275_sheet, 0x0800, 10275 - obj_tiles gFile_graphics_battle_anims_sprites_276_sheet, 0x0800, 10276 - obj_tiles gFile_graphics_battle_anims_sprites_277_sheet, 0x1000, 10277 - obj_tiles gFile_graphics_battle_anims_sprites_278_sheet, 0x0800, 10278 - obj_tiles gFile_graphics_battle_anims_sprites_279_sheet, 0x00a0, 10279 - obj_tiles gFile_graphics_battle_anims_sprites_280_sheet, 0x0800, 10280 - obj_tiles gFile_graphics_battle_anims_sprites_281_sheet, 0x0200, 10281 - obj_tiles gFile_graphics_battle_anims_sprites_282_sheet, 0x0600, 10282 - obj_tiles gFile_graphics_battle_anims_sprites_283_sheet, 0x0200, 10283 - obj_tiles gFile_graphics_battle_anims_sprites_284_sheet, 0x0800, 10284 - obj_tiles gFile_graphics_battle_anims_sprites_285_sheet, 0x0200, 10285 - obj_tiles gFile_graphics_battle_anims_sprites_183_sheet, 0x0800, 10286 - obj_tiles gFile_graphics_battle_anims_sprites_056_sheet, 0x1000, 10287 - obj_tiles gFile_graphics_battle_anims_sprites_163_sheet, 0x0100, 10288 - - obj_pal gFile_graphics_battle_anims_sprites_000_palette, 10000 - obj_pal gFile_graphics_battle_anims_sprites_001_palette, 10001 - obj_pal gFile_graphics_battle_anims_sprites_002_palette, 10002 - obj_pal gFile_graphics_battle_anims_sprites_003_palette, 10003 - obj_pal gFile_graphics_battle_anims_sprites_004_palette, 10004 - obj_pal gFile_graphics_battle_anims_sprites_005_palette, 10005 - obj_pal gFile_graphics_battle_anims_sprites_006_palette, 10006 - obj_pal gFile_graphics_battle_anims_sprites_007_palette, 10007 - obj_pal gFile_graphics_battle_anims_sprites_008_palette, 10008 - obj_pal gFile_graphics_battle_anims_sprites_009_palette, 10009 - obj_pal gFile_graphics_battle_anims_sprites_010_palette, 10010 - obj_pal gFile_graphics_battle_anims_sprites_011_palette, 10011 - obj_pal gFile_graphics_battle_anims_sprites_012_palette, 10012 - obj_pal gFile_graphics_battle_anims_sprites_013_palette, 10013 - obj_pal gFile_graphics_battle_anims_sprites_014_palette, 10014 - obj_pal gFile_graphics_battle_anims_sprites_015_palette, 10015 - obj_pal gFile_graphics_battle_anims_sprites_016_palette, 10016 - obj_pal gFile_graphics_battle_anims_sprites_016_palette, 10017 - obj_pal gFile_graphics_battle_anims_sprites_018_palette, 10018 - obj_pal gFile_graphics_battle_anims_sprites_019_palette, 10019 - obj_pal gFile_graphics_battle_anims_sprites_020_palette, 10020 - obj_pal gFile_graphics_battle_anims_sprites_021_palette, 10021 - obj_pal gFile_graphics_battle_anims_sprites_022_palette, 10022 - obj_pal gFile_graphics_battle_anims_sprites_023_palette, 10023 - obj_pal gFile_graphics_battle_anims_sprites_024_palette, 10024 - obj_pal gFile_graphics_battle_anims_sprites_025_palette, 10025 - obj_pal gFile_graphics_battle_anims_sprites_026_palette, 10026 - obj_pal gFile_graphics_battle_anims_sprites_027_palette, 10027 - obj_pal gFile_graphics_battle_anims_sprites_028_palette, 10028 - obj_pal gFile_graphics_battle_anims_sprites_029_palette, 10029 - obj_pal gFile_graphics_battle_anims_sprites_030_palette, 10030 - obj_pal gFile_graphics_battle_anims_sprites_031_palette, 10031 - obj_pal gFile_graphics_battle_anims_sprites_032_palette, 10032 - obj_pal gFile_graphics_battle_anims_sprites_033_palette, 10033 - obj_pal gFile_graphics_battle_anims_sprites_033_palette, 10034 - obj_pal gFile_graphics_battle_anims_sprites_033_palette, 10035 - obj_pal gFile_graphics_battle_anims_sprites_036_palette, 10036 - obj_pal gFile_graphics_battle_anims_sprites_036_palette, 10037 - obj_pal gFile_graphics_battle_anims_sprites_038_palette, 10038 - obj_pal gFile_graphics_battle_anims_sprites_039_palette, 10039 - obj_pal gFile_graphics_battle_anims_sprites_038_palette, 10040 - obj_pal gFile_graphics_battle_anims_sprites_038_palette, 10041 - obj_pal gFile_graphics_battle_anims_sprites_042_palette, 10042 - obj_pal gFile_graphics_battle_anims_sprites_043_palette, 10043 - obj_pal gFile_graphics_battle_anims_sprites_044_palette, 10044 - obj_pal gFile_graphics_battle_anims_sprites_045_palette, 10045 - obj_pal gFile_graphics_battle_anims_sprites_046_palette, 10046 - obj_pal gFile_graphics_battle_anims_sprites_047_palette, 10046 - obj_pal gFile_graphics_battle_anims_sprites_048_palette, 10048 - obj_pal gFile_graphics_battle_anims_sprites_049_palette, 10049 - obj_pal gFile_graphics_battle_anims_sprites_050_palette, 10050 - obj_pal gFile_graphics_battle_anims_sprites_050_palette, 10051 - obj_pal gFile_graphics_battle_anims_sprites_050_palette, 10052 - obj_pal gFile_graphics_battle_anims_sprites_026_palette, 10053 - obj_pal gFile_graphics_battle_anims_sprites_054_palette, 10054 - obj_pal gFile_graphics_battle_anims_sprites_050_palette, 10055 - obj_pal gFile_graphics_battle_anims_sprites_056_palette, 10056 - obj_pal gFile_graphics_battle_anims_sprites_057_palette, 10057 - obj_pal gFile_graphics_battle_anims_sprites_058_palette, 10058 - obj_pal gFile_graphics_battle_anims_sprites_059_palette, 10059 - obj_pal gFile_graphics_battle_anims_sprites_060_palette, 10060 - obj_pal gFile_graphics_battle_anims_sprites_061_palette, 10061 - obj_pal gFile_graphics_battle_anims_sprites_062_palette, 10062 - obj_pal gFile_graphics_battle_anims_sprites_063_palette, 10063 - obj_pal gFile_graphics_battle_anims_sprites_064_palette, 10064 - obj_pal gFile_graphics_battle_anims_sprites_065_palette, 10065 - obj_pal gFile_graphics_battle_anims_sprites_066_palette, 10066 - obj_pal gFile_graphics_battle_anims_sprites_067_palette, 10067 - obj_pal gFile_graphics_battle_anims_sprites_068_palette, 10068 - obj_pal gFile_graphics_battle_anims_sprites_065_palette, 10069 - obj_pal gFile_graphics_battle_anims_sprites_070_palette, 10070 - obj_pal gFile_graphics_battle_anims_sprites_070_palette, 10071 - obj_pal gFile_graphics_battle_anims_sprites_072_palette, 10072 - obj_pal gFile_graphics_battle_anims_sprites_073_palette, 10073 - obj_pal gFile_graphics_battle_anims_sprites_074_palette, 10074 - obj_pal gFile_graphics_battle_anims_sprites_075_palette, 10075 - obj_pal gFile_graphics_battle_anims_sprites_076_palette, 10076 - obj_pal gFile_graphics_battle_anims_sprites_076_palette, 10077 - obj_pal gFile_graphics_battle_anims_sprites_078_palette, 10078 - obj_pal gFile_graphics_battle_anims_sprites_078_palette, 10079 - obj_pal gFile_graphics_battle_anims_sprites_080_palette, 10080 - obj_pal gFile_graphics_battle_anims_sprites_081_palette, 10081 - obj_pal gFile_graphics_battle_anims_sprites_082_palette, 10082 - obj_pal gFile_graphics_battle_anims_sprites_083_palette, 10083 - obj_pal gFile_graphics_battle_anims_sprites_084_palette, 10084 - obj_pal gFile_graphics_battle_anims_sprites_085_palette, 10085 - obj_pal gFile_graphics_battle_anims_sprites_086_palette, 10086 - obj_pal gFile_graphics_battle_anims_sprites_087_palette, 10087 - obj_pal gFile_graphics_battle_anims_sprites_088_palette, 10088 - obj_pal gFile_graphics_battle_anims_sprites_089_palette, 10089 - obj_pal gFile_graphics_battle_anims_sprites_090_palette, 10090 - obj_pal gFile_graphics_battle_anims_sprites_091_palette, 10091 - obj_pal gFile_graphics_battle_anims_sprites_092_palette, 10092 - obj_pal gFile_graphics_battle_anims_sprites_093_palette, 10093 - obj_pal gFile_graphics_battle_anims_sprites_094_palette, 10094 - obj_pal gFile_graphics_battle_anims_sprites_095_palette, 10095 - obj_pal gFile_graphics_battle_anims_sprites_096_palette, 10096 - obj_pal gFile_graphics_battle_anims_sprites_097_palette, 10097 - obj_pal gFile_graphics_battle_anims_sprites_094_palette, 10098 - obj_pal gFile_graphics_battle_anims_sprites_099_palette, 10099 - obj_pal gFile_graphics_battle_anims_sprites_100_palette, 10100 - obj_pal gFile_graphics_battle_anims_sprites_101_palette, 10101 - obj_pal gFile_graphics_battle_anims_sprites_101_palette, 10102 - obj_pal gFile_graphics_battle_anims_sprites_103_palette, 10103 - obj_pal gFile_graphics_battle_anims_sprites_104_palette, 10104 - obj_pal gFile_graphics_battle_anims_sprites_105_palette, 10105 - obj_pal gFile_graphics_battle_anims_sprites_105_palette, 10106 - obj_pal gFile_graphics_battle_anims_sprites_107_palette, 10107 - obj_pal gFile_graphics_battle_anims_sprites_107_palette, 10108 - obj_pal gFile_graphics_battle_anims_sprites_109_palette, 10109 - obj_pal gFile_graphics_battle_anims_sprites_109_palette, 10110 - obj_pal gFile_graphics_battle_anims_sprites_111_palette, 10111 - obj_pal gFile_graphics_battle_anims_sprites_112_palette, 10112 - obj_pal gFile_graphics_battle_anims_sprites_113_palette, 10113 - obj_pal gFile_graphics_battle_anims_sprites_114_palette, 10114 - obj_pal gFile_graphics_battle_anims_sprites_115_palette, 10115 - obj_pal gFile_graphics_battle_anims_sprites_116_palette, 10116 - obj_pal gFile_graphics_battle_anims_sprites_117_palette, 10117 - obj_pal gFile_graphics_battle_anims_sprites_118_palette, 10118 - obj_pal gFile_graphics_battle_anims_sprites_119_palette, 10119 - obj_pal gFile_graphics_battle_anims_sprites_120_palette, 10120 - obj_pal gFile_graphics_battle_anims_sprites_121_palette, 10121 - obj_pal gFile_graphics_battle_anims_sprites_122_palette, 10122 - obj_pal gFile_graphics_battle_anims_sprites_122_palette, 10123 - obj_pal gFile_graphics_battle_anims_sprites_124_palette, 10124 - obj_pal gFile_graphics_battle_anims_sprites_125_palette, 10125 - obj_pal gFile_graphics_battle_anims_sprites_126_palette, 10126 - obj_pal gFile_graphics_battle_anims_sprites_127_palette, 10127 - obj_pal gFile_graphics_battle_anims_sprites_128_palette, 10128 - obj_pal gFile_graphics_battle_anims_sprites_128_palette, 10129 - obj_pal gFile_graphics_battle_anims_sprites_130_palette, 10130 - obj_pal gFile_graphics_battle_anims_sprites_130_palette, 10131 - obj_pal gFile_graphics_battle_anims_sprites_132_palette, 10132 - obj_pal gFile_graphics_battle_anims_sprites_133_palette, 10133 - obj_pal gFile_graphics_battle_anims_sprites_133_palette, 10134 - obj_pal gFile_graphics_battle_anims_sprites_135_palette, 10135 - -gUnknown_83AD950:: @ 83AD950 - obj_pal gFile_graphics_battle_anims_sprites_136_palette, 10136 - obj_pal gFile_graphics_battle_anims_sprites_135_palette, 10137 - obj_pal gFile_graphics_battle_anims_sprites_135_palette, 10138 - obj_pal gFile_graphics_battle_anims_sprites_139_palette, 10139 - obj_pal gFile_graphics_battle_anims_sprites_140_palette, 10140 - obj_pal gFile_graphics_battle_anims_sprites_141_palette, 10141 - obj_pal gFile_graphics_battle_anims_sprites_141_palette, 10142 - obj_pal gFile_graphics_battle_anims_sprites_143_palette, 10143 - obj_pal gFile_graphics_battle_anims_sprites_144_palette, 10144 - obj_pal gFile_graphics_battle_anims_sprites_139_palette, 10145 - obj_pal gFile_graphics_battle_anims_sprites_115_palette, 10146 - obj_pal gFile_graphics_battle_anims_sprites_147_palette, 10147 - obj_pal gFile_graphics_battle_anims_sprites_148_palette, 10148 - obj_pal gFile_graphics_battle_anims_sprites_148_palette, 10149 - obj_pal gFile_graphics_battle_anims_sprites_150_palette, 10150 - obj_pal gFile_graphics_battle_anims_sprites_150_palette, 10151 - obj_pal gFile_graphics_battle_anims_sprites_152_palette, 10152 - obj_pal gFile_graphics_battle_anims_sprites_153_palette, 10153 - obj_pal gFile_graphics_battle_anims_sprites_154_palette, 10154 - obj_pal gFile_graphics_battle_anims_sprites_155_palette, 10155 - obj_pal gFile_graphics_battle_anims_sprites_156_palette, 10156 - obj_pal gFile_graphics_battle_anims_sprites_157_palette, 10157 - obj_pal gFile_graphics_battle_anims_sprites_158_palette, 10158 - obj_pal gFile_graphics_battle_anims_sprites_159_palette, 10159 - obj_pal gFile_graphics_battle_anims_sprites_160_palette, 10160 - obj_pal gFile_graphics_battle_anims_sprites_161_palette, 10161 - obj_pal gFile_graphics_battle_anims_sprites_162_palette, 10162 - obj_pal gFile_graphics_battle_anims_sprites_163_palette, 10163 - obj_pal gFile_graphics_battle_anims_sprites_164_palette, 10164 - obj_pal gFile_graphics_battle_anims_sprites_165_palette, 10165 - obj_pal gFile_graphics_battle_anims_sprites_166_palette, 10166 - obj_pal gFile_graphics_battle_anims_sprites_167_palette, 10167 - obj_pal gFile_graphics_battle_anims_sprites_168_palette, 10168 - obj_pal gFile_graphics_battle_anims_sprites_169_palette, 10169 - obj_pal gFile_graphics_battle_anims_sprites_170_palette, 10170 - obj_pal gFile_graphics_battle_anims_sprites_171_palette, 10171 - obj_pal gFile_graphics_battle_anims_sprites_172_palette, 10172 - obj_pal gFile_graphics_battle_anims_sprites_001_palette, 10173 - obj_pal gFile_graphics_battle_anims_sprites_174_palette, 10174 - obj_pal gFile_graphics_battle_anims_sprites_175_palette, 10175 - obj_pal gFile_graphics_battle_anims_sprites_176_palette, 10176 - obj_pal gFile_graphics_battle_anims_sprites_177_palette, 10177 - obj_pal gFile_graphics_battle_anims_sprites_178_palette, 10178 - obj_pal gFile_graphics_battle_anims_sprites_179_palette, 10179 - obj_pal gFile_graphics_battle_anims_sprites_179_palette, 10180 - obj_pal gFile_graphics_battle_anims_sprites_179_palette, 10181 - obj_pal gFile_graphics_battle_anims_sprites_182_palette, 10182 - obj_pal gFile_graphics_battle_anims_sprites_183_palette, 10183 - obj_pal gFile_graphics_battle_anims_sprites_184_palette, 10184 - obj_pal gFile_graphics_battle_anims_sprites_185_palette, 10185 - obj_pal gFile_graphics_battle_anims_sprites_186_palette, 10186 - obj_pal gFile_graphics_battle_anims_sprites_187_palette, 10187 - obj_pal gFile_graphics_battle_anims_sprites_188_palette, 10188 - obj_pal gFile_graphics_battle_anims_sprites_189_palette, 10189 - obj_pal gFile_graphics_battle_anims_sprites_190_palette, 10190 - obj_pal gFile_graphics_battle_anims_sprites_191_palette, 10191 - obj_pal gFile_graphics_battle_anims_sprites_192_palette, 10192 - obj_pal gFile_graphics_battle_anims_sprites_193_palette, 10193 - obj_pal gFile_graphics_battle_anims_sprites_194_palette, 10194 - obj_pal gFile_graphics_battle_anims_sprites_195_palette, 10195 - obj_pal gFile_graphics_battle_anims_sprites_196_palette, 10196 - obj_pal gFile_graphics_battle_anims_sprites_197_palette, 10197 - obj_pal gFile_graphics_battle_anims_sprites_198_palette, 10198 - obj_pal gFile_graphics_battle_anims_sprites_199_palette, 10199 - obj_pal gFile_graphics_battle_anims_sprites_200_palette, 10200 - obj_pal gFile_graphics_battle_anims_sprites_201_palette, 10201 - obj_pal gFile_graphics_battle_anims_sprites_202_palette, 10202 - obj_pal gFile_graphics_battle_anims_sprites_203_palette, 10203 - obj_pal gFile_graphics_battle_anims_sprites_204_palette, 10204 - obj_pal gFile_graphics_battle_anims_sprites_205_palette, 10205 - obj_pal gFile_graphics_battle_anims_sprites_206_palette, 10206 - obj_pal gFile_graphics_battle_anims_sprites_207_palette, 10207 - obj_pal gFile_graphics_battle_anims_sprites_167_palette, 10208 - obj_pal gFile_graphics_battle_anims_sprites_209_palette, 10209 - obj_pal gFile_graphics_battle_anims_sprites_210_palette, 10210 - obj_pal gFile_graphics_battle_anims_sprites_211_palette, 10211 - obj_pal gFile_graphics_battle_anims_sprites_211_palette, 10212 - obj_pal gFile_graphics_battle_anims_sprites_211_palette, 10213 - obj_pal gFile_graphics_battle_anims_sprites_064_palette, 10214 - obj_pal gFile_graphics_battle_anims_sprites_215_palette, 10215 - obj_pal gFile_graphics_battle_anims_sprites_216_palette, 10216 - obj_pal gFile_graphics_battle_anims_sprites_217_palette, 10217 - obj_pal gFile_graphics_battle_anims_sprites_218_palette, 10218 - obj_pal gFile_graphics_battle_anims_sprites_219_palette, 10219 - obj_pal gFile_graphics_battle_anims_sprites_220_palette, 10220 - obj_pal gFile_graphics_battle_anims_sprites_221_palette, 10221 - obj_pal gFile_graphics_battle_anims_sprites_222_palette, 10222 - obj_pal gFile_graphics_battle_anims_sprites_223_palette, 10223 - obj_pal gFile_graphics_battle_anims_sprites_224_palette, 10224 - obj_pal gFile_graphics_battle_anims_sprites_225_palette, 10225 - obj_pal gFile_graphics_battle_anims_sprites_226_palette, 10226 - obj_pal gFile_graphics_battle_anims_sprites_226_palette, 10227 - obj_pal gFile_graphics_battle_anims_sprites_228_palette, 10228 - obj_pal gFile_graphics_battle_anims_sprites_229_palette, 10229 - obj_pal gFile_graphics_battle_anims_sprites_230_palette, 10230 - obj_pal gFile_graphics_battle_anims_sprites_231_palette, 10231 - obj_pal gFile_graphics_battle_anims_sprites_231_palette, 10232 - -gUnknown_83ADC58:: @ 83ADC58 - obj_pal gFile_graphics_battle_anims_sprites_233_palette, 10233 - obj_pal gFile_graphics_battle_anims_sprites_234_palette, 10234 - obj_pal gFile_graphics_battle_anims_sprites_235_palette, 10235 - obj_pal gFile_graphics_battle_anims_sprites_236_palette, 10236 - obj_pal gFile_graphics_battle_anims_sprites_237_palette, 10237 - obj_pal gFile_graphics_battle_anims_sprites_238_palette, 10238 - obj_pal gFile_graphics_battle_anims_sprites_239_palette, 10239 - obj_pal gFile_graphics_battle_anims_sprites_240_palette, 10240 - obj_pal gFile_graphics_battle_anims_sprites_241_palette, 10241 - obj_pal gFile_graphics_battle_anims_sprites_242_palette, 10242 - obj_pal gFile_graphics_battle_anims_sprites_243_palette, 10243 - obj_pal gFile_graphics_battle_anims_sprites_244_palette, 10244 - obj_pal gFile_graphics_battle_anims_sprites_245_palette, 10245 - obj_pal gFile_graphics_battle_anims_sprites_245_palette, 10246 - obj_pal gFile_graphics_battle_anims_sprites_064_palette, 10247 - obj_pal gFile_graphics_battle_anims_sprites_248_palette, 10248 - obj_pal gFile_graphics_battle_anims_sprites_249_palette, 10249 - obj_pal gFile_graphics_battle_anims_sprites_249_palette, 10250 - obj_pal gFile_graphics_battle_anims_sprites_251_palette, 10251 - obj_pal gFile_graphics_battle_anims_sprites_252_palette, 10252 - obj_pal gFile_graphics_battle_anims_sprites_253_palette, 10253 - obj_pal gFile_graphics_battle_anims_sprites_254_palette, 10254 - obj_pal gFile_graphics_battle_anims_sprites_255_palette, 10255 - obj_pal gFile_graphics_battle_anims_sprites_256_palette, 10256 - obj_pal gFile_graphics_battle_anims_sprites_257_palette, 10257 - obj_pal gFile_graphics_battle_anims_sprites_258_palette, 10258 - obj_pal gFile_graphics_battle_anims_sprites_259_palette, 10259 - obj_pal gFile_graphics_battle_anims_sprites_260_palette, 10260 - obj_pal gBattleAnimSpritePal_FlyingDirt, 10261 - obj_pal gFile_graphics_battle_anims_sprites_262_palette, 10262 - obj_pal gFile_graphics_battle_anims_sprites_263_palette, 10263 - obj_pal gFile_graphics_battle_anims_sprites_264_palette, 10264 - obj_pal gFile_graphics_battle_anims_sprites_265_palette, 10265 - obj_pal gFile_graphics_battle_anims_sprites_266_palette, 10266 - obj_pal gFile_graphics_battle_anims_sprites_267_palette, 10267 - obj_pal gFile_graphics_battle_anims_sprites_268_palette, 10268 - -gUnknown_83ADD78:: @ 83ADD78 - obj_pal gFile_graphics_battle_anims_sprites_269_palette, 10269 - obj_pal gFile_graphics_battle_anims_sprites_270_palette, 10270 - obj_pal gFile_graphics_battle_anims_sprites_271_palette, 10271 - obj_pal gFile_graphics_battle_anims_sprites_272_palette, 10272 - obj_pal gFile_graphics_battle_anims_sprites_272_palette, 10273 - obj_pal gFile_graphics_battle_anims_sprites_274_palette, 10274 - obj_pal gFile_graphics_battle_anims_sprites_274_palette, 10275 - obj_pal gFile_graphics_battle_anims_sprites_274_palette, 10276 - obj_pal gFile_graphics_battle_anims_sprites_277_palette, 10277 - obj_pal gFile_graphics_battle_anims_sprites_278_palette, 10278 - obj_pal gFile_graphics_battle_anims_sprites_279_palette, 10279 - obj_pal gFile_graphics_battle_anims_sprites_280_palette, 10280 - obj_pal gFile_graphics_battle_anims_sprites_281_palette, 10281 - obj_pal gFile_graphics_battle_anims_sprites_282_palette, 10282 - obj_pal gFile_graphics_battle_anims_sprites_283_palette, 10283 - obj_pal gFile_graphics_battle_anims_sprites_284_palette, 10284 - obj_pal gFile_graphics_battle_anims_sprites_285_palette, 10285 - obj_pal gFile_graphics_battle_anims_sprites_286_palette, 10286 - obj_pal gFile_graphics_battle_anims_sprites_287_palette, 10287 - obj_pal gFile_graphics_battle_anims_sprites_288_palette, 10288 - -gUnknown_83ADE18:: @ 83ADE18 - .4byte gFile_graphics_battle_anims_backgrounds_00_sheet, gFile_graphics_battle_anims_backgrounds_00_palette, gFile_graphics_battle_anims_backgrounds_00_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_00_sheet, gFile_graphics_battle_anims_backgrounds_00_palette, gFile_graphics_battle_anims_backgrounds_00_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_02_sheet, gFile_graphics_battle_anims_backgrounds_02_palette, gFile_graphics_battle_anims_backgrounds_02_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_03_sheet, gFile_graphics_battle_anims_backgrounds_03_palette, gFile_graphics_battle_anims_backgrounds_03_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_04_sheet, gFile_graphics_battle_anims_backgrounds_04_palette, gFile_graphics_battle_anims_backgrounds_04_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_04_sheet, gFile_graphics_battle_anims_backgrounds_04_palette, gFile_graphics_battle_anims_backgrounds_05_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_04_sheet, gFile_graphics_battle_anims_backgrounds_04_palette, gFile_graphics_battle_anims_backgrounds_06_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_07_sheet, gFile_graphics_battle_anims_backgrounds_07_palette, gFile_graphics_battle_anims_backgrounds_07_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_07_sheet, gFile_graphics_battle_anims_backgrounds_07_palette, gFile_graphics_battle_anims_backgrounds_08_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_09_sheet, gFile_graphics_battle_anims_backgrounds_09_palette, gFile_graphics_battle_anims_backgrounds_09_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_09_sheet, gFile_graphics_battle_anims_backgrounds_09_palette, gFile_graphics_battle_anims_backgrounds_10_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_11_sheet, gFile_graphics_battle_anims_backgrounds_11_palette, gFile_graphics_battle_anims_backgrounds_11_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_12_sheet, gFile_graphics_battle_anims_backgrounds_12_palette, gFile_graphics_battle_anims_backgrounds_12_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_12_sheet, gFile_graphics_battle_anims_backgrounds_12_palette, gFile_graphics_battle_anims_backgrounds_13_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_12_sheet, gFile_graphics_battle_anims_backgrounds_12_palette, gFile_graphics_battle_anims_backgrounds_14_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_15_sheet, gFile_graphics_battle_anims_backgrounds_15_palette, gFile_graphics_battle_anims_backgrounds_15_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_16_sheet, gFile_graphics_battle_anims_backgrounds_16_palette, gFile_graphics_battle_anims_backgrounds_16_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_17_sheet, gFile_graphics_battle_anims_backgrounds_17_palette, gFile_graphics_battle_anims_backgrounds_17_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_07_sheet, gFile_graphics_battle_anims_backgrounds_18_palette, gFile_graphics_battle_anims_backgrounds_07_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_07_sheet, gFile_graphics_battle_anims_backgrounds_18_palette, gFile_graphics_battle_anims_backgrounds_08_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_20_sheet, gFile_graphics_battle_anims_backgrounds_20_palette, gFile_graphics_battle_anims_backgrounds_20_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_21_sheet, gFile_graphics_battle_anims_backgrounds_21_palette, gFile_graphics_battle_anims_backgrounds_21_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_09_sheet, gFile_graphics_battle_anims_backgrounds_22_palette, gFile_graphics_battle_anims_backgrounds_09_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_09_sheet, gFile_graphics_battle_anims_backgrounds_22_palette, gFile_graphics_battle_anims_backgrounds_10_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_04_sheet, gFile_graphics_battle_anims_backgrounds_24_palette, gFile_graphics_battle_anims_backgrounds_04_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_04_sheet, gFile_graphics_battle_anims_backgrounds_24_palette, gFile_graphics_battle_anims_backgrounds_05_tilemap - .4byte gFile_graphics_battle_anims_backgrounds_04_sheet, gFile_graphics_battle_anims_backgrounds_24_palette, gFile_graphics_battle_anims_backgrounds_06_tilemap - -gUnknown_83ADF5C:: @ 83ADF5C - .4byte ScriptCmd_loadspritegfx - .4byte ScriptCmd_unloadspritegfx - .4byte ScriptCmd_createsprite - .4byte ScriptCmd_createvisualtask - .4byte ScriptCmd_delay - .4byte sub_8072ACC - .4byte nullsub_41 - .4byte nullsub_42 - .4byte sub_8072B08 - .4byte sub_8072C08 - .4byte sub_8072C30 - .4byte ScriptCmd_clearmonbg - .4byte ScriptCmd_setalpha - .4byte ScriptCmd_blendoff - .4byte ScriptCmd_call - .4byte sub_8073698 - .4byte ScriptCmd_setarg - .4byte ScriptCmd_choosetwoturnanim - .4byte ScriptCmd_jumpifmoveturn - .4byte ScriptCmd_jump - .4byte sub_80737A0 - .4byte ScriptCmd_restorebg - .4byte ScriptCmd_waitbgfadeout - .4byte sub_80739F0 - .4byte ScriptCmd_changebg - .4byte ScriptCmd_playsewithpan - .4byte ScriptCmd_setpan - .4byte ScriptCmd_panse_1B - .4byte ScriptCmd_loopsewithpan - .4byte ScriptCmd_waitplaysewithpan - .4byte ScriptCmd_setbldcnt - .4byte ScriptCmd_createsoundtask - .4byte ScriptCmd_waitsound - .4byte ScriptCmd_jumpargeq - .4byte sub_807339C - .4byte sub_8073484 - .4byte sub_80741B8 - .4byte sub_80737E4 - .4byte ScriptCmd_panse_26 - .4byte ScriptCmd_panse_27 - .4byte sub_80741C8 - .4byte sub_8074214 - .4byte sub_807423C - .4byte ScriptCmd_invisible - .4byte ScriptCmd_visible - .4byte sub_8074320 - .4byte sub_80743C8 - .4byte sub_8074458 diff --git a/data/battle_anim_effects_3.s b/data/battle_anim_effects_3.s deleted file mode 100644 index ebd42dfb5..000000000 --- a/data/battle_anim_effects_3.s +++ /dev/null @@ -1,181 +0,0 @@ -#include "constants/region_map.h" -#include "constants/flags.h" -#include "constants/moves.h" - .include "asm/macros.inc" - .include "constants/constants.inc" - .section .rodata - .align 2 - -gUnknown_83FEDE4:: @ 83FEDE4 - .incbin "baserom.gba", 0x3FEDE4, 0x1C - -gUnknown_83FEE00:: - .incbin "baserom.gba", 0x3FEE00, 0x18 - -gUnknown_83FEE18:: - .incbin "baserom.gba", 0x3FEE18, 0x18 - -gUnknown_83FEE30:: - .incbin "baserom.gba", 0x3FEE30, 0x2C - -gUnknown_83FEE5C:: - .incbin "baserom.gba", 0x3FEE5C, 0x18 - -gUnknown_83FEE74:: - .incbin "baserom.gba", 0x3FEE74, 0x18 - -gUnknown_83FEE8C:: - .incbin "baserom.gba", 0x3FEE8C, 0x58 - -gUnknown_83FEEE4:: - .incbin "baserom.gba", 0x3FEEE4, 0x18 - -gUnknown_83FEEFC:: - .incbin "baserom.gba", 0x3FEEFC, 0x34 - -gUnknown_83FEF30:: - .incbin "baserom.gba", 0x3FEF30, 0x40 - -gUnknown_83FEF70:: - .incbin "baserom.gba", 0x3FEF70, 0x4C - -gUnknown_83FEFBC:: - .incbin "baserom.gba", 0x3FEFBC, 0x50 - -gUnknown_83FF00C:: - .incbin "baserom.gba", 0x3FF00C, 0x18 - -gUnknown_83FF024:: - .incbin "baserom.gba", 0x3FF024, 0x18 - -gUnknown_83FF03C:: - .incbin "baserom.gba", 0x3FF03C, 0x2C - -gUnknown_83FF068:: - .incbin "baserom.gba", 0x3FF068, 0x18 - -gUnknown_83FF080:: @ 83FF080 - .incbin "baserom.gba", 0x3FF080, 0x58 - -gUnknown_83FF0D8:: - .incbin "baserom.gba", 0x3FF0D8, 0x40 - -gUnknown_83FF118:: - .incbin "baserom.gba", 0x3FF118, 0x18 - -gUnknown_83FF130:: @ 83FF130 - .incbin "baserom.gba", 0x3FF130, 0x20 - -gUnknown_83FF150:: - .incbin "baserom.gba", 0x3FF150, 0x18 - -gUnknown_83FF168:: @ 83FF168 - .incbin "baserom.gba", 0x3FF168, 0x18 - -gUnknown_83FF180:: @ 83FF180 - .incbin "baserom.gba", 0x3FF180, 0x18 - -gUnknown_83FF198:: @ 83FF198 - .incbin "baserom.gba", 0x3FF198, 0x28 - -gUnknown_83FF1C0:: @ 83FF1C0 - .incbin "baserom.gba", 0x3FF1C0, 0x38 - -gUnknown_83FF1F8:: - .incbin "baserom.gba", 0x3FF1F8, 0x18 - -gUnknown_83FF210:: @ 83FF210 - .incbin "baserom.gba", 0x3FF210, 0x30 - -gUnknown_83FF240:: @ 83FF240 - .incbin "baserom.gba", 0x3FF240, 0x2C - -gUnknown_83FF26C:: @ 83FF26C - .incbin "baserom.gba", 0x3FF26C, 0x18 - -gUnknown_83FF284:: @ 83FF284 - .incbin "baserom.gba", 0x3FF284, 0x4 - -gUnknown_83FF288:: @ 83FF288 - .incbin "baserom.gba", 0x3FF288, 0x8 - -gUnknown_83FF290:: @ 83FF290 - .incbin "baserom.gba", 0x3FF290, 0x20 - -gUnknown_83FF2B0:: - .incbin "baserom.gba", 0x3FF2B0, 0x74 - -gUnknown_83FF324:: - .incbin "baserom.gba", 0x3FF324, 0x4C - -gUnknown_83FF370:: - .incbin "baserom.gba", 0x3FF370, 0x18 - -gUnknown_83FF388:: - .incbin "baserom.gba", 0x3FF388, 0x18 - -gUnknown_83FF3A0:: - .incbin "baserom.gba", 0x3FF3A0, 0x18 - -gUnknown_83FF3B8:: - .incbin "baserom.gba", 0x3FF3B8, 0x18 - -gUnknown_83FF3D0:: @ 83FF3D0 - .incbin "baserom.gba", 0x3FF3D0, 0x9C - -gUnknown_83FF46C:: - .incbin "baserom.gba", 0x3FF46C, 0xA8 - -gUnknown_83FF514:: - .incbin "baserom.gba", 0x3FF514, 0x18 - -gUnknown_83FF52C:: @ 83FF52C - .incbin "baserom.gba", 0x3FF52C, 0x20 - -gUnknown_83FF54C:: @ 83FF54C - .incbin "baserom.gba", 0x3FF54C, 0x18 - -gUnknown_83FF564:: @ 83FF564 - .incbin "baserom.gba", 0x3FF564, 0x50 - -gUnknown_83FF5B4:: - .incbin "baserom.gba", 0x3FF5B4, 0x18 - -gUnknown_83FF5CC:: @ 83FF5CC - .incbin "baserom.gba", 0x3FF5CC, 0x18 - -gUnknown_83FF5E4:: - .incbin "baserom.gba", 0x3FF5E4, 0x48 - -gUnknown_83FF62C:: @ 83FF62C - .incbin "baserom.gba", 0x3FF62C, 0x18 - -gUnknown_83FF644:: - .incbin "baserom.gba", 0x3FF644, 0x18 - -gUnknown_83FF65C:: @ 83FF65C - .incbin "baserom.gba", 0x3FF65C, 0x18 - -gUnknown_83FF674:: - .incbin "baserom.gba", 0x3FF674, 0x18 - -gUnknown_83FF68C:: - .incbin "baserom.gba", 0x3FF68C, 0x18 - -gUnknown_83FF6A4:: - .incbin "baserom.gba", 0x3FF6A4, 0x18 - -gUnknown_83FF6BC:: - .incbin "baserom.gba", 0x3FF6BC, 0x30 - -gUnknown_83FF6EC:: - .incbin "baserom.gba", 0x3FF6EC, 0x78 - -gUnknown_83FF764:: - .incbin "baserom.gba", 0x3FF764, 0x2C - -gUnknown_83FF790:: - .incbin "baserom.gba", 0x3FF790, 0x18 - -gUnknown_83FF7A8:: @ 83FF7A8 - .incbin "baserom.gba", 0x3FF7A8, 0x30 diff --git a/data/battle_anim_effects_misc.s b/data/battle_anim_effects_misc.s index ff14e90a4..c6cb89e24 100644 --- a/data/battle_anim_effects_misc.s +++ b/data/battle_anim_effects_misc.s @@ -6,1664 +6,6 @@ .section .rodata .align 2 -gUnknown_83E2964:: @ 83E2964 - .byte 0x02, 0x04, 0x01, 0x03 - -gUnknown_83E2968:: @ 83E2968 - obj_image_anim_frame 0x0000, 5 - obj_image_anim_frame 0x0002, 5 - obj_image_anim_frame 0x0004, 5 - obj_image_anim_frame 0x0006, 5 - obj_image_anim_frame 0x0008, 5 - obj_image_anim_frame 0x000a, 5 - obj_image_anim_frame 0x000c, 5 - obj_image_anim_frame 0x000e, 5 - obj_image_anim_jump 0x0000 - -gUnknown_83E298C:: @ 83E298C - .4byte gUnknown_83E2968 - -gUnknown_83E2990:: @ 83E2990 - spr_template 10067, 10067, gOamData_83ACA08, gUnknown_83E298C, NULL, gDummySpriteAffineAnimTable, sub_80A22E8 - -gUnknown_83E29A8:: @ 83E29A8 - spr_template 10068, 10068, gOamData_83ACA08, gUnknown_83E298C, NULL, gDummySpriteAffineAnimTable, sub_80A22E8 - -gUnknown_83E29C0:: @ 83E29C0 - spr_template 10065, 10065, gOamData_83ACA08, gUnknown_83E298C, NULL, gDummySpriteAffineAnimTable, sub_80A22E8 - -gAnimCmd_83E29D8:: @ 83E29D8 - obj_image_anim_frame 0, 1 - obj_image_anim_end - -gAnimCmd_83E29E0:: @ 83E29E0 - obj_image_anim_frame 1, 1 - obj_image_anim_end - -gAnimCmd_83E29E8:: @ 83E29E8 - obj_image_anim_frame 2, 1 - obj_image_anim_end - -gAnimCmd_83E29F0:: @ 83E29F0 - obj_image_anim_frame 3, 1 - obj_image_anim_end - -gAnimCmd_83E29F8:: @ 83E29F8 - obj_image_anim_frame 4, 1 - obj_image_anim_end - -gAnimCmd_83E2A00:: @ 83E2A00 - obj_image_anim_frame 5, 1 - obj_image_anim_end - -gAnimCmd_83E2A08:: @ 83E2A08 - obj_image_anim_frame 6, 1 - obj_image_anim_end - -gAnimCmd_83E2A10:: @ 83E2A10 - obj_image_anim_frame 7, 1 - obj_image_anim_end - -gAnimCmd_83E2A18:: @ 83E2A18 - obj_image_anim_frame 8, 1 - obj_image_anim_end - -gSpriteAnimTable_83E2A20:: @ 83E2A20 - .4byte gAnimCmd_83E29D8 - .4byte gAnimCmd_83E29E0 - .4byte gAnimCmd_83E29E8 - .4byte gAnimCmd_83E29F0 - .4byte gAnimCmd_83E29F8 - .4byte gAnimCmd_83E2A00 - .4byte gAnimCmd_83E2A08 - -gSpriteAnimTable_83E2A3C:: @ 83E2A3C - .4byte gAnimCmd_83E2A10 - -gSpriteAnimTable_83E2A40:: @ 83E2A40 - .4byte gAnimCmd_83E2A18 - -gAffineAnimCmd_83E2A44:: @ 83E2A44 - obj_rot_scal_anim_frame -5, -5, 0, 1 - obj_rot_scal_anim_jump 0 - -gSpriteAffineAnimTable_83E2A54:: @ 83E2A54 - .4byte gAffineAnimCmd_83E2A44 - -gUnknown_83E2A58:: @ 83E2A58 - spr_template 10147, 10147, gOamData_83ACB50, gSpriteAnimTable_83E2A40, NULL, gSpriteAffineAnimTable_83E2A54, sub_80A2388 - -gUnknown_83E2A70:: @ 83E2A70 - spr_template 10147, 10147, gOamData_83AC9C8, gSpriteAnimTable_83E2A20, NULL, gDummySpriteAffineAnimTable, sub_80A23D8 - -gUnknown_83E2A88:: @ 83E2A88 - spr_template 10147, 10147, gOamData_83AC9C8, gSpriteAnimTable_83E2A3C, NULL, gDummySpriteAffineAnimTable, sub_80A2430 - -gUnknown_83E2AA0:: @ 83E2AA0 - obj_rot_scal_anim_frame 320, 320, 0, 0 - obj_rot_scal_anim_frame -14, -14, 0, 1 - obj_rot_scal_anim_jump 1 - -gUnknown_83E2AB8:: @ 83E2AB8 - .4byte gUnknown_83E2AA0 - -gUnknown_83E2ABC:: @ 83E2ABC - spr_template 10235, 10235, gOamData_83ACA88, gDummySpriteAnimTable, NULL, gUnknown_83E2AB8, sub_80A2388 - -gUnknown_83E2AD4:: @ 83E2AD4 - obj_rot_scal_anim_frame -5, -5, 0, 1 - obj_rot_scal_anim_jump 0 - -gUnknown_83E2AE4:: @ 83E2AE4 - .4byte gUnknown_83E2AD4 - -gUnknown_83E2AE8:: @ 83E2AE8 - spr_template 10147, 10147, gOamData_83ACB50, gSpriteAnimTable_83E2A40, NULL, gUnknown_83E2AE4, sub_80A2580 - -gUnknown_83E2B00:: @ 83E2B00 - spr_template 10147, 10147, gOamData_83AC9C8, gSpriteAnimTable_83E2A20, NULL, gDummySpriteAffineAnimTable, sub_80A25EC - -gUnknown_83E2B18:: @ 83E2B18 - obj_image_anim_frame 0, 1 - obj_image_anim_end - -gUnknown_83E2B20:: @ 83E2B20 - obj_image_anim_frame 4, 7 - obj_image_anim_frame 8, 7 - obj_image_anim_jump 0 - -gUnknown_83E2B2C:: @ 83E2B2C - .4byte gUnknown_83E2B18 - .4byte gUnknown_83E2B20 - -gUnknown_83E2B34:: @ 83E2B34 - spr_template 10006, 10006, gOamData_83AC9D0, gUnknown_83E2B2C, NULL, gDummySpriteAffineAnimTable, sub_80A26F0 - -gUnknown_83E2B4C:: @ 83E2B4C - obj_image_anim_frame 0, 1 - obj_image_anim_end - -gUnknown_83E2B54:: @ 83E2B54 - obj_image_anim_frame 4, 7 - obj_image_anim_end - -gUnknown_83E2B5C:: @ 83E2B5C - .4byte gUnknown_83E2B4C - .4byte gUnknown_83E2B54 - -gUnknown_83E2B64:: @ 83E2B64 - spr_template 10158, 10158, gOamData_83AC9D0, gUnknown_83E2B5C, NULL, gDummySpriteAffineAnimTable, sub_80A27D0 - -gUnknown_83E2B7C:: @ 83E2B7C - obj_image_anim_frame 0, 1 - obj_image_anim_end - -gUnknown_83E2B84:: @ 83E2B84 - obj_image_anim_frame 4, 1 - obj_image_anim_end - -gUnknown_83E2B8C:: @ 83E2B8C - .4byte gUnknown_83E2B7C - -gUnknown_83E2B90:: @ 83E2B90 - .4byte gUnknown_83E2B84 - -gUnknown_83E2B94:: @ 83E2B94 - spr_template 10159, 10159, gOamData_83AC9D0, gUnknown_83E2B8C, NULL, gDummySpriteAffineAnimTable, sub_80A2920 - -gUnknown_83E2BAC:: @ 83E2BAC - spr_template 10159, 10159, gOamData_83AC9C8, gUnknown_83E2B90, NULL, gDummySpriteAffineAnimTable, sub_80A29EC - -gUnknown_83E2BC4:: @ 83E2BC4 - obj_image_anim_frame 0, 5 - obj_image_anim_frame 4, 5 - obj_image_anim_frame 8, 5 - obj_image_anim_frame 12, 5 - obj_image_anim_frame 16, 5 - obj_image_anim_frame 20, 5 - obj_image_anim_frame 16, 5 - obj_image_anim_frame 12, 5 - obj_image_anim_frame 8, 5 - obj_image_anim_frame 4, 5 - obj_image_anim_jump 0 - -gUnknown_83E2BF0:: @ 83E2BF0 - obj_image_anim_frame 24, 5 - obj_image_anim_frame 28, 5 - obj_image_anim_frame 32, 5 - obj_image_anim_end - -gUnknown_83E2C00:: @ 83E2C00 - .4byte gUnknown_83E2BC4 - .4byte gUnknown_83E2BF0 - -gUnknown_83E2C08:: @ 83E2C08 - spr_template 10063, 10063, gOamData_83AC9D0, gUnknown_83E2C00, NULL, gDummySpriteAffineAnimTable, sub_80A2AA4 - -gUnknown_83E2C20:: @ 83E2C20 - spr_template 10063, 10063, gOamData_83AC9D0, gUnknown_83E2C00, NULL, gDummySpriteAffineAnimTable, AnimMoveTwisterParticle - -gUnknown_83E2C38:: @ 83E2C38 - obj_image_anim_frame 0, 3 - obj_image_anim_frame 0, 3, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 0, 3, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 0, 3, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_jump 0 - -gUnknown_83E2C4C:: @ 83E2C4C - .4byte gUnknown_83E2C38 - -gUnknown_83E2C50:: @ 83E2C50 - spr_template 10160, 10160, gOamData_83AC9F8, gUnknown_83E2C4C, NULL, gDummySpriteAffineAnimTable, sub_80A2B9C - -gUnknown_83E2C68:: @ 83E2C68 - obj_rot_scal_anim_frame 0, 0, 0, 1 - obj_rot_scal_anim_jump 0 - -gUnknown_83E2C78:: @ 83E2C78 - .4byte gUnknown_83E2C68 - -gUnknown_83E2C7C:: @ 83E2C7C - spr_template 10174, 10174, gOamData_83ACA38, gDummySpriteAnimTable, NULL, gUnknown_83E2C78, sub_80A2B9C - -gUnknown_83E2C94:: @ 83E2C94 - obj_image_anim_frame 0, 4 - obj_image_anim_frame 32, 4 - obj_image_anim_frame 64, 4 - obj_image_anim_frame 96, 4 - obj_image_anim_end - -gUnknown_83E2CA8:: @ 83E2CA8 - obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 32, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 64, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 96, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - -gUnknown_83E2CBC:: @ 83E2CBC - .4byte gUnknown_83E2C94 - .4byte gUnknown_83E2CA8 - -gUnknown_83E2CC4:: @ 83E2CC4 - obj_rot_scal_anim_frame 256, 256, 0, 0 - obj_rot_scal_anim_frame -11, 0, 0, 6 - obj_rot_scal_anim_frame 11, 0, 0, 6 - obj_rot_scal_anim_end - -gUnknown_83E2CE4:: @ 83E2CE4 - obj_rot_scal_anim_frame -256, 256, 0, 0 - obj_rot_scal_anim_frame 11, 0, 0, 6 - obj_rot_scal_anim_frame -11, 0, 0, 6 - obj_rot_scal_anim_end - -gUnknown_83E2D04:: @ 83E2D04 - .4byte gUnknown_83E2CC4 - .4byte gUnknown_83E2CE4 - -gUnknown_83E2D0C:: @ 83E2D0C - spr_template 10186, 10186, gOamData_83ACA60, gUnknown_83E2CBC, NULL, gUnknown_83E2D04, sub_80A2E28 - -gUnknown_83E2D24:: @ 83E2D24 - obj_rot_scal_anim_frame 0, 0, 0, 0 - obj_rot_scal_anim_frame 48, 48, 0, 14 - obj_rot_scal_anim_end - -gUnknown_83E2D3C:: @ 83E2D3C - obj_rot_scal_anim_frame -16, -16, 0, 1 - obj_rot_scal_anim_jump 0 - -gUnknown_83E2D4C:: @ 83E2D4C - .4byte gUnknown_83E2D24 - .4byte gUnknown_83E2D3C - -gUnknown_83E2D54:: @ 83E2D54 - spr_template 10147, 10147, gOamData_83ACA90, gSpriteAnimTable_83E2A40, NULL, gUnknown_83E2D4C, sub_80A3098 - -gUnknown_83E2D6C:: @ 83E2D6C - obj_image_anim_frame 0, 7 - obj_image_anim_frame 16, 7 - obj_image_anim_frame 32, 7 - obj_image_anim_frame 48, 7 - obj_image_anim_end - -gUnknown_83E2D80:: @ 83E2D80 - obj_image_anim_frame 0, 7, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 16, 7, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 32, 7, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 48, 7, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - -gUnknown_83E2D94:: @ 83E2D94 - obj_image_anim_frame 0, 7 - obj_image_anim_frame 16, 7 - obj_image_anim_frame 32, 7 - obj_image_anim_end - -gUnknown_83E2DA4:: @ 83E2DA4 - obj_image_anim_frame 0, 7, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 16, 7, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 32, 7, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - -gUnknown_83E2DB4:: @ 83E2DB4 - .4byte gUnknown_83E2D6C - .4byte gUnknown_83E2D80 - .4byte gUnknown_83E2D94 - .4byte gUnknown_83E2DA4 - -gUnknown_83E2DC4:: @ 83E2DC4 - spr_template 10223, 10223, gOamData_83AC9D8, gUnknown_83E2DB4, NULL, gDummySpriteAffineAnimTable, sub_80A3168 - -gUnknown_83E2DDC:: @ 83E2DDC - spr_template 10223, 10223, gOamData_83AC9D8, gUnknown_83E2DB4, NULL, gDummySpriteAffineAnimTable, sub_80A31EC - -gUnknown_83E2DF4:: @ 83E2DF4 - obj_image_anim_frame 3, 3 - obj_image_anim_frame 0, 5 - obj_image_anim_jump 0 - -gUnknown_83E2E00:: @ 83E2E00 - .4byte gUnknown_83E2DF4 - -gUnknown_83E2E04:: @ 83E2E04 - spr_template 10147, 10147, gOamData_83AC9C8, gUnknown_83E2E00, NULL, gDummySpriteAffineAnimTable, sub_80A3334 - -gUnknown_83E2E1C:: @ 83E2E1C - obj_image_anim_frame 0, 30 - obj_image_anim_end - -gUnknown_83E2E24:: @ 83E2E24 - .4byte gUnknown_83E2E1C - -gUnknown_83E2E28:: @ 83E2E28 - obj_rot_scal_anim_frame 0, 0, 252, 10 - obj_rot_scal_anim_frame 0, 0, 4, 20 - obj_rot_scal_anim_frame 0, 0, 252, 10 - obj_rot_scal_anim_end - -gUnknown_83E2E48:: @ 83E2E48 - obj_rot_scal_anim_frame 0, 0, 255, 2 - obj_rot_scal_anim_frame 0, 0, 1, 4 - obj_rot_scal_anim_frame 0, 0, 255, 4 - obj_rot_scal_anim_frame 0, 0, 1, 4 - obj_rot_scal_anim_frame 0, 0, 255, 4 - obj_rot_scal_anim_frame 0, 0, 1, 2 - obj_rot_scal_anim_end - -gUnknown_83E2E80:: @ 83E2E80 - .4byte gUnknown_83E2E28 - .4byte gUnknown_83E2E48 - -gUnknown_83E2E88:: @ 83E2E88 - spr_template 10224, 10224, gOamData_83ACA38, gUnknown_83E2E24, NULL, gUnknown_83E2E80, sub_80A3518 - -gUnknown_83E2EA0:: @ 83E2EA0 - spr_template 10224, 10224, gOamData_83ACA38, gUnknown_83E2E24, NULL, gUnknown_83E2E80, sub_80A35F4 - -gUnknown_83E2EB8:: @ 83E2EB8 - obj_image_anim_frame 0, 4 - obj_image_anim_frame 4, 4 - obj_image_anim_frame 8, 4 - obj_image_anim_frame 12, 4 - obj_image_anim_end - -gUnknown_83E2ECC:: @ 83E2ECC - .4byte gUnknown_83E2EB8 - -gUnknown_83E2ED0:: @ 83E2ED0 - spr_template 10195, 10195, gOamData_83AC9D0, gUnknown_83E2ECC, NULL, gDummySpriteAffineAnimTable, sub_80A3670 - -gUnknown_83E2EE8:: @ 83E2EE8 - spr_template 10224, 10224, gOamData_83ACA38, gUnknown_83E2E24, NULL, gUnknown_83E2E80, sub_80A36B4 - -gUnknown_83E2F00:: @ 83E2F00 - obj_rot_scal_anim_frame 0, 0, 0, 3 - obj_rot_scal_anim_end - -gUnknown_83E2F10:: @ 83E2F10 - obj_rot_scal_anim_frame 0, -10, 0, 3 - obj_rot_scal_anim_frame 0, -6, 0, 3 - obj_rot_scal_anim_frame 0, -2, 0, 3 - obj_rot_scal_anim_frame 0, 0, 0, 3 - obj_rot_scal_anim_frame 0, 2, 0, 3 - obj_rot_scal_anim_frame 0, 6, 0, 3 - obj_rot_scal_anim_frame 0, 10, 0, 3 - obj_rot_scal_anim_end - -gUnknown_83E2F50:: @ 83E2F50 - .4byte gUnknown_83E2F00 - .4byte gUnknown_83E2F10 - .4byte gUnknown_83E2E28 - .4byte gUnknown_83E2E48 - -gUnknown_83E2F60:: @ 83E2F60 - spr_template 10224, 10224, gOamData_83ACA38, gUnknown_83E2E24, NULL, gUnknown_83E2F50, sub_80A37BC - -gUnknown_83E2F78:: @ 83E2F78 - .byte 0x05, 0x18, 0x01, 0x00, 0x04, 0x00, 0x08, 0x10, 0xff, 0x00, 0x02, 0x00, 0x08, 0x10, 0x01, 0x00, 0x02, 0x00, 0x08, 0x10, 0x01, 0x00, 0x02, 0x00, 0x08, 0x10, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00 - .byte 0x7f, 0x00, 0x00, 0x00 - -gUnknown_83E2F9C:: @ 83E2F9C - obj_image_anim_frame 28, 1 - obj_image_anim_end - -gUnknown_83E2FA4:: @ 83E2FA4 - obj_image_anim_frame 32, 1 - obj_image_anim_end - -gUnknown_83E2FAC:: @ 83E2FAC - obj_image_anim_frame 20, 1 - obj_image_anim_end - -gUnknown_83E2FB4:: @ 83E2FB4 - obj_image_anim_frame 28, 1, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - -gUnknown_83E2FBC:: @ 83E2FBC - obj_image_anim_frame 16, 1 - obj_image_anim_end - -gUnknown_83E2FC4:: @ 83E2FC4 - obj_image_anim_frame 16, 1, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - -gUnknown_83E2FCC:: @ 83E2FCC - obj_image_anim_frame 28, 1 - obj_image_anim_end - -gUnknown_83E2FD4:: @ 83E2FD4 - .4byte gUnknown_83E2F9C - .4byte gUnknown_83E2FA4 - .4byte gUnknown_83E2FAC - .4byte gUnknown_83E2FB4 - .4byte gUnknown_83E2FBC - .4byte gUnknown_83E2FC4 - .4byte gUnknown_83E2FCC - -gUnknown_83E2FF0:: @ 83E2FF0 - spr_template 10063, 10063, gOamData_83AC9D0, gUnknown_83E2FD4, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_83E3008:: @ 83E3008 - obj_rot_scal_anim_frame 256, 256, 0, 0 - obj_rot_scal_anim_frame 0, 0, 4, 1 - obj_rot_scal_anim_jump 1 - -gUnknown_83E3020:: @ 83E3020 - .4byte gUnknown_83E3008 - -gUnknown_83E3024:: @ 83E3024 - spr_template 10159, 10159, gOamData_83AC9C8, gUnknown_83E2B90, NULL, gDummySpriteAffineAnimTable, sub_80A4040 - -gUnknown_83E303C:: @ 83E303C - spr_template 10159, 10159, gOamData_83ACA30, gUnknown_83E2B8C, NULL, gUnknown_83E3020, sub_80A4040 - -gUnknown_83E3054:: @ 83E3054 - obj_rot_scal_anim_frame 256, 256, 0, 0 - obj_rot_scal_anim_frame 0, 0, 246, 1 - obj_rot_scal_anim_jump 1 - -gUnknown_83E306C:: @ 83E306C - obj_rot_scal_anim_frame 192, 192, 0, 0 - obj_rot_scal_anim_frame 0, 0, 244, 1 - obj_rot_scal_anim_jump 1 - -gUnknown_83E3084:: @ 83E3084 - obj_rot_scal_anim_frame 143, 143, 0, 0 - obj_rot_scal_anim_frame 0, 0, 241, 1 - obj_rot_scal_anim_jump 1 - -gUnknown_83E309C:: @ 83E309C - .4byte gUnknown_83E3054 - -gUnknown_83E30A0:: @ 83E30A0 - .4byte gUnknown_83E306C - -gUnknown_83E30A4:: @ 83E30A4 - .4byte gUnknown_83E3084 - -gUnknown_83E30A8:: @ 83E30A8 - spr_template 10271, 10271, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gUnknown_83E309C, sub_80A4040 - -gUnknown_83E30C0:: @ 83E30C0 - spr_template 10271, 10271, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gUnknown_83E30A0, sub_80A4040 - -gUnknown_83E30D8:: @ 83E30D8 - spr_template 10271, 10271, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gUnknown_83E30A4, sub_80A4040 - -gUnknown_83E30F0:: @ 83E30F0 - .2byte 0x001f, 0x027f, 0x03ff, 0x03e0, 0x7dc5, 0x7d56, 0x7eb6, 0x0000 - -gUnknown_83E3100:: @ 83E3100 - spr_template 10266, 10266, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A4298 - -gUnknown_83E3118:: @ 83E3118 - obj_image_anim_frame 64, 3 - obj_image_anim_frame 80, 3 - obj_image_anim_frame 96, 3 - obj_image_anim_frame 112, 6 - obj_image_anim_end - -gUnknown_83E312C:: @ 83E312C - obj_image_anim_frame 64, 3, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 80, 3, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 96, 3, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 112, 6, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - -gUnknown_83E3140:: @ 83E3140 - .4byte gUnknown_83E3118 - .4byte gUnknown_83E312C - -gUnknown_83E3148:: @ 83E3148 - spr_template 10056, 10056, gOamData_83AC9D8, gUnknown_83E3140, NULL, gDummySpriteAffineAnimTable, sub_80A4450 - -gUnknown_83E3160:: @ 83E3160 - spr_template 10287, 10287, gOamData_83AC9D8, gUnknown_83E3140, NULL, gDummySpriteAffineAnimTable, sub_80A4450 - -gUnknown_83E3178:: @ 83E3178 - obj_image_anim_frame 0x0000, 4 - obj_image_anim_frame 0x0010, 4 - obj_image_anim_frame 0x0020, 4 - obj_image_anim_frame 0x0030, 4 - obj_image_anim_frame 0x0040, 5 - obj_image_anim_end - -gUnknown_83E3190:: @ 83E3190 - .4byte gUnknown_83E3178 - -gUnknown_83E3194:: @ 83E3194 - spr_template 10021, 10021, gOamData_83AC9D8, gUnknown_83E3190, NULL, gDummySpriteAffineAnimTable, sub_80A43F8 - -gUnknown_83E31AC:: @ 83E31AC - spr_template 10022, 10022, gOamData_83AC9D8, gUnknown_83E3190, NULL, gDummySpriteAffineAnimTable, sub_80A43F8 - -gUnknown_83E31C4:: @ 83E31C4 - obj_rot_scal_anim_frame 256, 256, 0, 0 - obj_rot_scal_anim_end - -gUnknown_83E31D4:: - obj_rot_scal_anim_frame 256, 256, 32, 0 - obj_rot_scal_anim_end - -gUnknown_83E31E4:: - obj_rot_scal_anim_frame 256, 256, 64, 0 - obj_rot_scal_anim_end - -gUnknown_83E31F4:: - obj_rot_scal_anim_frame 256, 256, 96, 0 - obj_rot_scal_anim_end - -gUnknown_83E3204:: - obj_rot_scal_anim_frame 256, 256, 128, 0 - obj_rot_scal_anim_end - -gUnknown_83E3214:: - obj_rot_scal_anim_frame 256, 256, 160, 0 - obj_rot_scal_anim_end - -gUnknown_83E3224:: - obj_rot_scal_anim_frame 256, 256, 192, 0 - obj_rot_scal_anim_end - -gUnknown_83E3234:: - obj_rot_scal_anim_frame 256, 256, 224, 0 - obj_rot_scal_anim_end - -gUnknown_83E3244:: - .4byte gUnknown_83E31C4 - .4byte gUnknown_83E31D4 - .4byte gUnknown_83E31E4 - .4byte gUnknown_83E31F4 - .4byte gUnknown_83E3204 - .4byte gUnknown_83E3214 - .4byte gUnknown_83E3224 - .4byte gUnknown_83E3234 - -gUnknown_83E3264:: - spr_template 10143, 10143, gOamData_83ACA38, gDummySpriteAnimTable, NULL, gUnknown_83E3244, sub_80A4494 - -gUnknown_83E327C:: @ 83E327C - obj_image_anim_frame 0, 5 - obj_image_anim_frame 16, 5 - obj_image_anim_frame 32, 5 - obj_image_anim_frame 48, 5 - obj_image_anim_end - -gUnknown_83E3290:: @ 83E3290 - .4byte gUnknown_83E327C - -gUnknown_83E3294:: @ 83E3294 - spr_template 10138, 10138, gOamData_83ACAF8, gUnknown_83E3290, NULL, gDummySpriteAffineAnimTable, sub_80A44E0 - -gUnknown_83E32AC:: @ 83E32AC - spr_template 10138, 10138, gOamData_83ACAF8, gUnknown_83E3290, NULL, gDummySpriteAffineAnimTable, sub_80A4588 - -gUnknown_83E32C4:: @ 83E32C4 - obj_image_anim_frame 0x0000, 1 - obj_image_anim_end - -gUnknown_83E32CC:: - obj_image_anim_frame 0x0004, 1 - obj_image_anim_end - -gUnknown_83E32D4:: - obj_image_anim_frame 0x0008, 1 - obj_image_anim_end - -gUnknown_83E32DC:: - obj_image_anim_frame 0x000c, 1 - obj_image_anim_end - -gUnknown_83E32E4:: - obj_image_anim_frame 0x0010, 1 - obj_image_anim_end - -gUnknown_83E32EC:: - obj_image_anim_frame 0x0014, 1 - obj_image_anim_end - -gUnknown_83E32F4:: - obj_image_anim_frame 0x0000, 1, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - -gUnknown_83E32FC:: - obj_image_anim_frame 0x0004, 1, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - -gUnknown_83E3304:: - obj_image_anim_frame 0x0008, 1, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - -gUnknown_83E330C:: - obj_image_anim_frame 0x000c, 1, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - -gUnknown_83E3314:: - .4byte gUnknown_83E32C4 - .4byte gUnknown_83E32CC - .4byte gUnknown_83E32D4 - .4byte gUnknown_83E32DC - .4byte gUnknown_83E32E4 - .4byte gUnknown_83E32EC - .4byte gUnknown_83E32F4 - .4byte gUnknown_83E32FC - .4byte gUnknown_83E3304 - .4byte gUnknown_83E330C - -gUnknown_83E333C:: - spr_template 10072, 10072, gOamData_83AC9D0, gUnknown_83E3314, NULL, gDummySpriteAffineAnimTable, sub_80A481C - -gUnknown_83E3354:: @ 83E3354 - spr_template 10280, 10280, gOamData_83ACB00, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A48F0 - -gUnknown_83E336C:: @ 83E336C - obj_rot_scal_anim_frame 256, 256, 0, 0 - obj_rot_scal_anim_end - -gUnknown_83E337C:: @ 83E337C - obj_rot_scal_anim_frame 0, 0, 2, 12 - obj_rot_scal_anim_frame 0, 0, 0, 6 - obj_rot_scal_anim_frame 0, 0, 254, 24 - obj_rot_scal_anim_frame 0, 0, 0, 6 - obj_rot_scal_anim_frame 0, 0, 2, 12 - obj_rot_scal_anim_jump 0 - -gUnknown_83E33AC:: @ 83E33AC - .4byte gUnknown_83E336C - .4byte gUnknown_83E337C - -gUnknown_83E33B4:: @ 83E33B4 - spr_template 10099, 10099, gOamData_83ACB58, gDummySpriteAnimTable, NULL, gUnknown_83E33AC, sub_80A4ACC - -gUnknown_83E33CC:: @ 83E33CC - obj_image_anim_frame 0, 7 - obj_image_anim_frame 16, 7 - obj_image_anim_frame 32, 7 - obj_image_anim_frame 48, 7 - obj_image_anim_frame 64, 7 - obj_image_anim_frame 80, 7 - obj_image_anim_frame 96, 7 - obj_image_anim_frame 112, 7 - obj_image_anim_jump 0 - -gUnknown_83E33F0:: @ 83E33F0 - .4byte gUnknown_83E33CC - -gUnknown_83E33F4:: @ 83E33F4 - spr_template 10049, 10049, gOamData_83AC9D8, gUnknown_83E33F0, NULL, gDummySpriteAffineAnimTable, sub_80A4D0C - -gUnknown_83E340C:: @ 83E340C - spr_template 10049, 10049, gOamData_83AC9D8, gUnknown_83E33F0, NULL, gDummySpriteAffineAnimTable, sub_80A4D5C - -gUnknown_83E3424:: @ 83E3424 - obj_image_anim_frame 0x0000, 10 - obj_image_anim_frame 0x0004, 10 - obj_image_anim_frame 0x0008, 10 - obj_image_anim_frame 0x000c, 10 - obj_image_anim_frame 0x0010, 26 - obj_image_anim_frame 0x0010, 5 - obj_image_anim_frame 0x0014, 5 - obj_image_anim_frame 0x0018, 15 - obj_image_anim_end - -gUnknown_83E3448:: - obj_image_anim_frame 0x0000, 10, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 0x0004, 10, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 0x0008, 10, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 0x000c, 10, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 0x0010, 26, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 0x0010, 5, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 0x0014, 5, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 0x0018, 15, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - -gUnknown_83E346C:: - .4byte gUnknown_83E3424 - .4byte gUnknown_83E3448 - -gUnknown_83E3474:: - spr_template 10032, 10032, gOamData_83AC9D0, gUnknown_83E346C, NULL, gDummySpriteAffineAnimTable, sub_80A4E40 - -gUnknown_83E348C:: @ 83E348C - obj_image_anim_frame 0, 40 - obj_image_anim_end - -gUnknown_83E3494:: @ 83E3494 - .4byte gUnknown_83E348C - -gUnknown_83E3498:: @ 83E3498 - obj_rot_scal_anim_frame 20, 20, 226, 0 - obj_rot_scal_anim_frame 8, 8, 1, 24 - obj_rot_scal_anim_end - -gUnknown_83E34B0:: @ 83E34B0 - obj_rot_scal_anim_loop 0 - obj_rot_scal_anim_frame 0, 0, 1, 24 - obj_rot_scal_anim_loop 10 - -gUnknown_83E34C8:: @ 83E34C8 - obj_rot_scal_anim_frame 20, 20, 30, 0 - obj_rot_scal_anim_frame 8, 8, 255, 24 - obj_rot_scal_anim_end - -gUnknown_83E34E0:: @ 83E34E0 - obj_rot_scal_anim_loop 0 - obj_rot_scal_anim_frame 0, 0, 255, 24 - obj_rot_scal_anim_loop 10 - -gUnknown_83E34F8:: @ 83E34F8 - .4byte gUnknown_83E3498 - .4byte gUnknown_83E34C8 - -gUnknown_83E3500:: @ 83E3500 - spr_template 10228, 10228, gOamData_83ACA38, gUnknown_83E3494, NULL, gUnknown_83E34F8, sub_80A4EF4 - -gUnknown_83E3518:: @ 83E3518 - spr_template 10014, 10014, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A4FAC - -gUnknown_83E3530:: @ 83E3530 - spr_template 10014, 10014, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A5298 - -gUnknown_83E3548:: @ 83E3548 - .byte 0x40, 0x40, 0x00, 0xc0, 0xc0, 0x40, 0x20, 0xe0 - -gUnknown_83E3550:: @ 83E3550 - spr_template 0, 0, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A5340 - spr_template 0, 0, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A5590 - -gUnknown_83E3580:: @ 83E3580 - obj_image_anim_frame 0, 4 - obj_image_anim_frame 16, 4 - obj_image_anim_frame 32, 4 - obj_image_anim_frame 48, 4 - obj_image_anim_end - -gUnknown_83E3594:: @ 83E3594 - obj_image_anim_frame 48, 4 - obj_image_anim_end - -gUnknown_83E359C:: @ 83E359C - .4byte gUnknown_83E3580 - .4byte gUnknown_83E3594 - -gUnknown_83E35A4:: @ 83E35A4 - spr_template 10183, 10183, gOamData_83AC9D8, gUnknown_83E359C, NULL, gDummySpriteAffineAnimTable, sub_80A5940 - -gUnknown_83E35BC:: @ 83E35BC - spr_template 10286, 10286, gOamData_83AC9D8, gUnknown_83E359C, NULL, gDummySpriteAffineAnimTable, sub_80A59A8 - -gUnknown_83E35D4:: @ 83E35D4 - spr_template 10286, 10286, gOamData_83AC9D8, gUnknown_83E359C, NULL, gDummySpriteAffineAnimTable, sub_80A59F0 - -gUnknown_83E35EC:: @ 83E35EC - obj_image_anim_frame 0, 4 - obj_image_anim_frame 8, 12 - obj_image_anim_frame 16, 4 - obj_image_anim_frame 24, 4 - obj_image_anim_end - -gUnknown_83E3600:: @ 83E3600 - .4byte gUnknown_83E35EC - -gUnknown_83E3604:: @ 83E3604 - spr_template 10184, 10184, gOamData_83ACA18, gUnknown_83E3600, NULL, gDummySpriteAffineAnimTable, sub_80A5AD8 - -gUnknown_83E361C:: @ 83E361C - obj_image_anim_frame 0, 18 - obj_image_anim_frame 0, 6 - obj_image_anim_frame 16, 18 - obj_image_anim_frame 0, 6 - obj_image_anim_frame 16, 6 - obj_image_anim_frame 32, 18 - obj_image_anim_frame 16, 6 - obj_image_anim_frame 32, 6 - obj_image_anim_frame 48, 18 - obj_image_anim_frame 32, 6 - obj_image_anim_frame 48, 6 - obj_image_anim_frame 64, 18 - obj_image_anim_frame 48, 6 - obj_image_anim_frame 64, 54 - obj_image_anim_end - -gUnknown_83E3658:: @ 83E3658 - .4byte gUnknown_83E361C - -gUnknown_83E365C:: @ 83E365C - spr_template 10185, 10185, gOamData_83AC9D8, gUnknown_83E3658, NULL, gDummySpriteAffineAnimTable, sub_80A5B7C - -gUnknown_83E3674:: @ 83E3674 - spr_template 10017, 10017, gOamData_83AC9C8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, TranslateAnimSpriteToTargetMonLocation - -gUnknown_83E368C:: @ 83E368C - obj_image_anim_frame 0, 3 - obj_image_anim_frame 16, 3 - obj_image_anim_frame 32, 3 - obj_image_anim_frame 48, 3 - obj_image_anim_frame 64, 3 - obj_image_anim_end - -gUnknown_83E36A4:: @ 83E36A4 - .4byte gUnknown_83E368C - -gUnknown_83E36A8:: @ 83E36A8 - spr_template 10030, 10030, gOamData_83AC9D8, gUnknown_83E36A4, NULL, gDummySpriteAffineAnimTable, AnimSpriteOnMonPos - -gUnknown_83E36C0:: @ 83E36C0 - obj_image_anim_frame 3, 5 - obj_image_anim_frame 2, 5 - obj_image_anim_frame 1, 5 - obj_image_anim_frame 0, 5 - obj_image_anim_end - -gUnknown_83E36D4:: @ 83E36D4 - .4byte gUnknown_83E36C0 - -gUnknown_83E36D8:: @ 83E36D8 - obj_rot_scal_anim_frame 512, 512, 0, 0 - obj_rot_scal_anim_end - -gUnknown_83E36E8:: @ 83E36E8 - .4byte gUnknown_83E36D8 - -gUnknown_83E36EC:: @ 83E36EC - spr_template 10018, 10018, gOamData_83ACBA8, gUnknown_83E36D4, NULL, gUnknown_83E36E8, sub_80A5C68 - -gUnknown_83E3704:: @ 83E3704 - obj_image_anim_frame 0, 5 - obj_image_anim_frame 1, 5 - obj_image_anim_frame 2, 5 - obj_image_anim_frame 3, 5 - obj_image_anim_end - -gUnknown_83E3718:: @ 83E3718 - .4byte gUnknown_83E3704 - -gUnknown_83E371C:: @ 83E371C - spr_template 10018, 10018, gOamData_83ACBA8, gUnknown_83E3718, NULL, gUnknown_83E36E8, sub_80A5D4C - -gUnknown_83E3734:: @ 83E3734 - spr_template 10194, 10194, gOamData_83ACB00, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A5EE0 - -gUnknown_83E374C:: @ 83E374C - obj_image_anim_frame 0, 8 - obj_image_anim_frame 4, 8 - obj_image_anim_frame 8, 8 - obj_image_anim_frame 12, 8 - obj_image_anim_jump 0 - -gUnknown_83E3760:: @ 83E3760 - .4byte gUnknown_83E374C - -gUnknown_83E3764:: @ 83E3764 - spr_template 10195, 10195, gOamData_83AC9D0, gUnknown_83E3760, NULL, gDummySpriteAffineAnimTable, sub_80A5F40 - -gUnknown_83E377C:: @ 83E377C - obj_image_anim_frame 0, 2 - obj_image_anim_frame 16, 2 - obj_image_anim_frame 32, 2 - obj_image_anim_frame 48, 3 - obj_image_anim_frame 64, 5 - obj_image_anim_frame 80, 3 - obj_image_anim_frame 96, 2 - obj_image_anim_frame 0, 2 - obj_image_anim_end - -gUnknown_83E37A0:: @ 83E37A0 - .4byte gUnknown_83E377C - -gUnknown_83E37A4:: @ 83E37A4 - spr_template 10031, 10031, gOamData_83AC9D8, gUnknown_83E37A0, NULL, gDummySpriteAffineAnimTable, AnimSpriteOnMonPos - -gUnknown_83E37BC:: @ 83E37BC - spr_template 10020, 10020, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A6244 - -gUnknown_83E37D4:: @ 83E37D4 - obj_image_anim_frame 0, 2 - obj_image_anim_frame 16, 2 - obj_image_anim_frame 32, 2 - obj_image_anim_frame 48, 2 - obj_image_anim_end - -gUnknown_83E37E8:: @ 83E37E8 - .4byte gUnknown_83E37D4 - -gUnknown_83E37EC:: @ 83E37EC - spr_template 10192, 10192, gOamData_83AC9D8, gUnknown_83E37E8, NULL, gDummySpriteAffineAnimTable, sub_80A65CC - -gUnknown_83E3804:: @ 83E3804 - obj_image_anim_frame 0x0000, 10 - obj_image_anim_end - -gOamData_83E380C:: - obj_image_anim_frame 0x0004, 10 - obj_image_anim_end - -gUnknown_83E3814:: @ 83E3814 - obj_image_anim_frame 0x0008, 41 - obj_image_anim_end - -gUnknown_83E381C:: @ 83E381C - obj_image_anim_frame 0x000c, 10 - obj_image_anim_end - -gUnknown_83E3824:: @ 83E3824 - obj_image_anim_frame 0x0010, 10 - obj_image_anim_end - -gUnknown_83E382C:: @ 83E382C - obj_image_anim_frame 0x0014, 10 - obj_image_anim_end - obj_image_anim_frame 0x0000, 10, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - obj_image_anim_frame 0x0004, 10, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - -gUnknown_83E3844:: @ 83E3844 - spr_template 14340, 2110, gOamData_83E380C, gUnknown_83E3814, gUnknown_83E381C, gUnknown_83E3824, gUnknown_83E382C - -gUnknown_83E385C:: @ 83E385C - .4byte 0x83e3834 - .4byte 0x83e383c - -gUnknown_83E3864:: @ 83E3864 - obj_rot_scal_anim_frame 12, 12, 0, 16 - obj_rot_scal_anim_frame -12, -12, 0, 16 - obj_rot_scal_anim_jump 0 - -gUnknown_83E387C:: @ 83E387C - .4byte gUnknown_83E3864 - -gUnknown_83E3880:: @ 83E3880 - spr_template 10072, 10072, gOamData_83ACA90, gUnknown_83E3844, NULL, gUnknown_83E387C, sub_80A66D4 - -gUnknown_83E3898:: @ 83E3898 - .2byte 0x2758, 0x7fff, 0x735f, 0x6adf, 0x623f, 0x59bf, 0x2771, 0x7fff, 0x6bf9, 0x57f4, 0x43ef, 0x33ea, 0x27c9, 0x7fff, 0x63ff, 0x47ff - .2byte 0x2bff, 0x0fff, 0x27bf, 0x7fff, 0x7f9a, 0x7f55, 0x7f10, 0x7ecc - -gUnknown_83E38C8:: @ 83E38C8 - spr_template 10072, 10072, gOamData_83ACA90, gUnknown_83E3844, NULL, gUnknown_83E387C, sub_80A68B0 - -gUnknown_83E38E0:: @ 83E38E0 - spr_template 10193, 10193, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A69B8 - -gUnknown_83E38F8:: @ 83E38F8 - obj_rot_scal_anim_frame 160, 160, 0, 0 - obj_rot_scal_anim_frame 4, 4, 0, 1 - obj_rot_scal_anim_jump 1 - -gUnknown_83E3910:: @ 83E3910 - .4byte gUnknown_83E38F8 - -gUnknown_83E3914:: @ 83E3914 - spr_template 10072, 10072, gOamData_83ACA90, gUnknown_83E3844, NULL, gUnknown_83E3910, sub_80A6A28 - -gUnknown_83E392C:: @ 83E392C - obj_image_anim_frame 0, 2, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 16, 2, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 32, 2, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 48, 2, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - -gUnknown_83E3940:: @ 83E3940 - obj_image_anim_frame 48, 2, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 32, 2, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 16, 2, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 0, 2, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - -gUnknown_83E3954:: @ 83E3954 - obj_image_anim_frame 0, 2 - obj_image_anim_frame 16, 2 - obj_image_anim_frame 32, 2 - obj_image_anim_frame 48, 2 - obj_image_anim_end - -gUnknown_83E3968:: @ 83E3968 - obj_image_anim_frame 48, 2 - obj_image_anim_frame 32, 2 - obj_image_anim_frame 16, 2 - obj_image_anim_frame 0, 2 - obj_image_anim_end - -gUnknown_83E397C:: @ 83E397C - .4byte gUnknown_83E392C - .4byte gUnknown_83E3954 - .4byte gUnknown_83E3940 - .4byte gUnknown_83E3968 - -gUnknown_83E398C:: @ 83E398C - spr_template 10209, 10209, gOamData_83AC9D8, gUnknown_83E397C, NULL, gDummySpriteAffineAnimTable, sub_80A6B64 - -gUnknown_83E39A4:: @ 83E39A4 - obj_rot_scal_anim_frame 16, 16, 0, 0 - obj_rot_scal_anim_frame 30, 30, 0, 8 - obj_rot_scal_anim_end - -gUnknown_83E39BC:: @ 83E39BC - obj_rot_scal_anim_frame 0, 0, 4, 11 - obj_rot_scal_anim_frame 0, 0, 252, 11 - obj_rot_scal_anim_loop 2 - obj_rot_scal_anim_frame -30, -30, 0, 8 - obj_rot_scal_anim_end - -gUnknown_83E39E4:: @ 83E39E4 - obj_rot_scal_anim_frame 16, 16, 0, 0 - obj_rot_scal_anim_frame 30, 30, 0, 8 - obj_rot_scal_anim_frame 0, 0, 0, 16 - obj_rot_scal_anim_loop 0 - obj_rot_scal_anim_frame 0, 0, 4, 11 - obj_rot_scal_anim_frame 0, 0, 252, 11 - obj_rot_scal_anim_loop 2 - obj_rot_scal_anim_frame -30, -30, 0, 8 - obj_rot_scal_anim_end - -gUnknown_83E3A2C:: @ 83E3A2C - .4byte gUnknown_83E39A4 - .4byte gUnknown_83E39BC - -gUnknown_83E3A34:: @ 83E3A34 - spr_template 10064, 10064, gOamData_83ACA98, gDummySpriteAnimTable, NULL, gUnknown_83E3A2C, sub_80A6C08 - -gUnknown_83E3A4C:: @ 83E3A4C - spr_template 10064, 10064, gOamData_83ACA38, gDummySpriteAnimTable, NULL, gUnknown_83E3A2C, sub_80A6C84 - -gUnknown_83E3A64:: @ 83E3A64 - obj_image_anim_frame 0, 1 - obj_image_anim_end - -gUnknown_83E3A6C:: @ 83E3A6C - obj_image_anim_frame 0, 1, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - -gUnknown_83E3A74:: @ 83E3A74 - obj_image_anim_frame 0, 4 - obj_image_anim_frame 16, 4 - obj_image_anim_frame 32, 4 - obj_image_anim_frame 16, 4 - obj_image_anim_frame 0, 4 - obj_image_anim_frame 16, 4 - obj_image_anim_frame 32, 4 - obj_image_anim_end - -gUnknown_83E3A94:: @ 83E3A94 - obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 16, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 32, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 16, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 16, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 32, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - -gUnknown_83E3AB4:: @ 83E3AB4 - .4byte gUnknown_83E3A64 - .4byte gUnknown_83E3A6C - .4byte gUnknown_83E3A74 - .4byte gUnknown_83E3A94 - -gUnknown_83E3AC4:: @ 83E3AC4 - spr_template 10214, 10214, gOamData_83AC9D8, gUnknown_83E3AB4, NULL, gDummySpriteAffineAnimTable, sub_80A6D90 - -gUnknown_83E3ADC:: - spr_template 10064, 10064, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A6E48 - -gUnknown_83E3AF4:: @ 83E3AF4 - obj_image_anim_frame 0x0004, 1 - obj_image_anim_end - -gUnknown_83E3AFC:: - .4byte gUnknown_83E3AF4 - -gUnknown_83E3B00:: - spr_template 10072, 10072, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A6E98 - -gUnknown_83E3B18:: - spr_template 0, 0, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A6F8C - -gUnknown_83E3B30:: - spr_template 10145, 10145, gOamData_83ACB60, gDummySpriteAnimTable, NULL, gUnknown_83E7910, sub_80A7020 - -gUnknown_83E3B48:: - obj_image_anim_frame 0x0000, 9 - obj_image_anim_frame 0x0010, 3 - obj_image_anim_frame 0x0020, 3 - obj_image_anim_frame 0x0030, 3 - obj_image_anim_end - -gUnknown_83E3B5C:: - .4byte gUnknown_83E3B48 - -gUnknown_83E3B60:: - obj_rot_scal_anim_frame 80, 80, 0, 0 - obj_rot_scal_anim_frame 9, 9, 0, 18 - obj_rot_scal_anim_end - -gUnknown_83E3B78:: - .4byte gUnknown_83E3B60 - -gUnknown_83E3B7C:: - spr_template 10007, 10007, gOamData_83ACA38, gUnknown_83E3B5C, NULL, gUnknown_83E3B78, AnimSpriteOnMonPos - -gUnknown_83E3B94:: @ 83E3B94 - obj_image_anim_frame 0, 3, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 8, 3, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 16, 3, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 24, 3, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 32, 3, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 40, 3, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 48, 3, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_loop 1 - obj_image_anim_end - -gUnknown_83E3BB8:: @ 83E3BB8 - .4byte gUnknown_83E3B94 - -gUnknown_83E3BBC:: @ 83E3BBC - spr_template 10075, 10075, gOamData_83AC9F8, gUnknown_83E3BB8, NULL, gDummySpriteAffineAnimTable, sub_80A71D8 - -gUnknown_83E3BD4:: @ 83E3BD4 - obj_rot_scal_anim_frame 16, 256, 0, 0 - obj_rot_scal_anim_frame 20, 0, 0, 12 - obj_rot_scal_anim_frame 0, 0, 0, 32 - obj_rot_scal_anim_end - -gUnknown_83E3BF4:: @ 83E3BF4 - .4byte gUnknown_83E3BD4 - -gUnknown_83E3BF8:: @ 83E3BF8 - spr_template 10005, 10005, gOamData_83ACBA0, gDummySpriteAnimTable, NULL, gUnknown_83E3BF4, sub_80A727C - -gUnknown_83E3C10:: @ 83E3C10 - spr_template 10003, 10003, gOamData_83ACBD8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A72C8 - -gUnknown_83E3C28:: @ 83E3C28 - spr_template 10003, 10003, gOamData_83ACB18, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A74A4 - -gUnknown_83E3C40:: @ 83E3C40 - obj_rot_scal_anim_frame 32, 32, 0, 0 - obj_rot_scal_anim_frame 7, 7, 0, 200 - obj_rot_scal_anim_end - -gUnknown_83E3C58:: @ 83E3C58 - obj_rot_scal_anim_frame 5, 5, 0, 10 - obj_rot_scal_anim_frame -10, -10, 0, 10 - obj_rot_scal_anim_frame 10, 10, 0, 10 - obj_rot_scal_anim_frame -10, -10, 0, 10 - obj_rot_scal_anim_frame 10, 10, 0, 10 - obj_rot_scal_anim_frame -10, -10, 0, 10 - obj_rot_scal_anim_frame 10, 10, 0, 10 - obj_rot_scal_anim_end - -gUnknown_83E3C98:: @ 83E3C98 - .4byte gUnknown_83E3C40 - -gUnknown_83E3C9C:: @ 83E3C9C - .4byte gUnknown_83E3C58 - -gUnknown_83E3CA0:: @ 83E3CA0 - spr_template 10163, 10163, gOamData_83ACAD8, gDummySpriteAnimTable, NULL, gUnknown_83E3C98, TranslateAnimSpriteToTargetMonLocation - -gUnknown_83E3CB8:: @ 83E3CB8 - spr_template 10164, 10164, gOamData_83ACAD8, gDummySpriteAnimTable, NULL, gUnknown_83E3C98, TranslateAnimSpriteToTargetMonLocation - -gUnknown_83E3CD0:: @ 83E3CD0 - spr_template 10260, 10260, gOamData_83ACAE0, gDummySpriteAnimTable, NULL, gUnknown_83E3C98, TranslateAnimSpriteToTargetMonLocation - -gUnknown_83E3CE8:: @ 83E3CE8 - spr_template 10288, 10288, gOamData_83ACAD8, gDummySpriteAnimTable, NULL, gUnknown_83E3C9C, sub_80AC6D8 - -gUnknown_83E3D00:: @ 83E3D00 - spr_template 10175, 10175, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, AnimThrowProjectile - -gUnknown_83E3D18:: @ 83E3D18 - spr_template 10178, 10178, gOamData_83ACB00, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A79E8 - -gUnknown_83E3D30:: @ 83E3D30 - obj_image_anim_frame 8, 1 - obj_image_anim_end - -gUnknown_83E3D38:: @ 83E3D38 - .4byte gUnknown_83E3D30 - -gUnknown_83E3D3C:: @ 83E3D3C - obj_rot_scal_anim_frame 0, 0, 10, 1 - obj_rot_scal_anim_jump 0 - -gUnknown_83E3D4C:: @ 83E3D4C - .4byte gUnknown_83E3D3C - -gUnknown_83E3D50:: @ 83E3D50 - spr_template 10100, 10100, gOamData_83ACA30, gUnknown_83E3D38, NULL, gDummySpriteAffineAnimTable, sub_80A7A88 - -gUnknown_83E3D68:: @ 83E3D68 - spr_template 10100, 10100, gOamData_83ACA30, gUnknown_83E3D38, NULL, gUnknown_83E3D4C, sub_80A7B3C - -gUnknown_83E3D80:: @ 83E3D80 - obj_rot_scal_anim_frame 0, 0, 20, 1 - obj_rot_scal_anim_jump 0 - -gUnknown_83E3D90:: @ 83E3D90 - .4byte gUnknown_83E3D80 - -gUnknown_83E3D94:: @ 83E3D94 - spr_template 10006, 10006, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gUnknown_83E3D90, sub_80A7BC4 - -gUnknown_83E3DAC:: @ 83E3DAC - obj_rot_scal_anim_frame 16, 256, 0, 0 - obj_rot_scal_anim_frame 4, 0, 0, 40 - obj_rot_scal_anim_end - -gUnknown_83E3DC4:: @ 83E3DC4 - .4byte gUnknown_83E3DAC - -gUnknown_83E3DC8:: @ 83E3DC8 - spr_template 10009, 10009, gOamData_83ACA80, gDummySpriteAnimTable, NULL, gUnknown_83E3DC4, sub_80A7D04 - -gUnknown_83E3DE0:: @ 83E3DE0 - obj_image_anim_frame 0, 3 - obj_image_anim_frame 16, 3 - obj_image_anim_frame 32, 20 - obj_image_anim_end - -gUnknown_83E3DF0:: @ 83E3DF0 - obj_image_anim_frame 0, 3, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 16, 3, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 32, 20, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - -gUnknown_83E3E00:: @ 83E3E00 - .4byte gUnknown_83E3DE0 - .4byte gUnknown_83E3DF0 - -gUnknown_83E3E08:: @ 83E3E08 - spr_template 10138, 10138, gOamData_83ACAF8, gUnknown_83E3E00, NULL, gDummySpriteAffineAnimTable, sub_80A7D64 - -gUnknown_83E3E20:: @ 83E3E20 - obj_image_anim_frame 0, 2 - obj_image_anim_frame 16, 2 - obj_image_anim_frame 32, 1 - obj_image_anim_end - -gUnknown_83E3E30:: @ 83E3E30 - obj_image_anim_frame 0, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 16, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 32, 1, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - -gUnknown_83E3E40:: @ 83E3E40 - .4byte gUnknown_83E3E20 - .4byte gUnknown_83E3E30 - -gUnknown_83E3E48:: @ 83E3E48 - spr_template 10138, 10138, gOamData_83ACAF8, gUnknown_83E3E40, NULL, gDummySpriteAffineAnimTable, sub_80A7E14 - -gUnknown_83E3E60:: @ 83E3E60 - obj_rot_scal_anim_frame -6, 4, 0, 8 - obj_rot_scal_anim_frame 10, -10, 0, 8 - obj_rot_scal_anim_frame -4, 6, 0, 8 - obj_rot_scal_anim_end - -gUnknown_83E3E80:: @ 83E3E80 - obj_rot_scal_anim_frame -4, -5, 0, 12 - obj_rot_scal_anim_frame 0, 0, 0, 24 - obj_rot_scal_anim_frame 4, 5, 0, 12 - obj_rot_scal_anim_end - -gUnknown_83E3EA0:: @ 83E3EA0 - obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 4, 40, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 12, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - -gUnknown_83E3EB4:: @ 83E3EB4 - obj_image_anim_frame 0, 4 - obj_image_anim_frame 4, 40 - obj_image_anim_frame 8, 4 - obj_image_anim_frame 12, 4 - obj_image_anim_end - -gUnknown_83E3EC8:: @ 83E3EC8 - .4byte gUnknown_83E3EA0 - .4byte gUnknown_83E3EB4 - -gUnknown_83E3ED0:: @ 83E3ED0 - spr_template 10086, 10086, gOamData_83AC9D0, gUnknown_83E3EC8, NULL, gDummySpriteAffineAnimTable, sub_80A851C - -gUnknown_83E3EE8:: @ 83E3EE8 - obj_rot_scal_anim_frame 11, 11, 0, 8 - obj_rot_scal_anim_frame -11, -11, 0, 8 - obj_rot_scal_anim_end - -gUnknown_83E3F00:: @ 83E3F00 - .4byte gUnknown_83E3EE8 - -gUnknown_83E3F04:: @ 83E3F04 - spr_template 10087, 10087, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gUnknown_83E3F00, sub_80A85AC - -gUnknown_83E3F1C:: @ 83E3F1C - obj_rot_scal_anim_frame -10, 9, 0, 7 - obj_rot_scal_anim_frame 20, -20, 0, 7 - obj_rot_scal_anim_frame -20, 20, 0, 7 - obj_rot_scal_anim_frame 10, -9, 0, 7 - obj_rot_scal_anim_loop 2 - obj_rot_scal_anim_end - -gUnknown_83E3F4C:: @ 83E3F4C - spr_template 10002, 10002, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A8A1C - -gUnknown_83E3F64:: @ 83E3F64 - spr_template 10197, 10197, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, AnimSnoreZ - -gUnknown_83E3F7C:: @ 83E3F7C - obj_image_anim_frame 0, 5 - obj_image_anim_frame 16, 5 - obj_image_anim_frame 32, 5 - obj_image_anim_frame 48, 5 - obj_image_anim_end - -gUnknown_83E3F90:: @ 83E3F90 - .4byte gUnknown_83E3F7C - -gUnknown_83E3F94:: @ 83E3F94 - spr_template 10198, 10198, gOamData_83AC9D8, gUnknown_83E3F90, NULL, gDummySpriteAffineAnimTable, AnimSpriteOnMonPos - -gUnknown_83E3FAC:: @ 83E3FAC - obj_rot_scal_anim_frame 0, 0, 248, 2 - obj_rot_scal_anim_frame 0, 0, 8, 4 - obj_rot_scal_anim_frame 0, 0, 248, 2 - obj_rot_scal_anim_jump 0 - -gUnknown_83E3FCC:: @ 83E3FCC - obj_rot_scal_anim_frame 256, 256, 0, 0 - obj_rot_scal_anim_end - -gUnknown_83E3FDC:: @ 83E3FDC - obj_rot_scal_anim_frame -8, 4, 0, 8 - obj_rot_scal_anim_loop 0 - obj_rot_scal_anim_frame 16, -8, 0, 8 - obj_rot_scal_anim_frame -16, 8, 0, 8 - obj_rot_scal_anim_loop 1 - obj_rot_scal_anim_frame 256, 256, 0, 0 - obj_rot_scal_anim_frame 0, 0, 0, 15 - obj_rot_scal_anim_end - -gUnknown_83E401C:: @ 83E401C - .4byte gUnknown_83E3FAC - .4byte gUnknown_83E3FCC - .4byte gUnknown_83E3FDC - -gUnknown_83E4028:: @ 83E4028 - spr_template 10202, 10202, gOamData_83ACBB8, gDummySpriteAnimTable, NULL, gUnknown_83E401C, sub_80A8F38 - -gUnknown_83E4040:: @ 83E4040 - obj_rot_scal_anim_frame 16, 16, 0, 0 - obj_rot_scal_anim_frame 16, 16, 0, 30 - obj_rot_scal_anim_end 1 - -gUnknown_83E4058:: @ 83E4058 - obj_rot_scal_anim_frame 16, 16, 0, 0 - obj_rot_scal_anim_frame 32, 32, 0, 15 - obj_rot_scal_anim_end 1 - -gUnknown_83E4070:: @ 83E4070 - obj_rot_scal_anim_frame 16, 16, 0, 0 - obj_rot_scal_anim_frame 11, 11, 0, 45 - obj_rot_scal_anim_end 1 - -gUnknown_83E4088:: @ 83E4088 - .4byte gUnknown_83E4040 - .4byte gUnknown_83E4058 - -gUnknown_83E4090:: @ 83E4090 - .4byte gUnknown_83E4070 - -gUnknown_83E4094:: @ 83E4094 - spr_template 10203, 10203, gOamData_83ACAA0, gDummySpriteAnimTable, NULL, gUnknown_83E4088, AnimSpriteOnMonPos - -gUnknown_83E40AC:: @ 83E40AC - obj_rot_scal_anim_frame 512, 512, 0, 0 - obj_rot_scal_anim_frame -16, -16, 0, 30 - obj_rot_scal_anim_end 1 - -gUnknown_83E40C4:: @ 83E40C4 - .4byte gUnknown_83E40AC - -gUnknown_83E40C8:: @ 83E40C8 - spr_template 10203, 10203, gOamData_83ACBC0, gDummySpriteAnimTable, NULL, gUnknown_83E40C4, AnimSpriteOnMonPos - -gUnknown_83E40E0:: @ 83E40E0 - spr_template 10203, 10203, gOamData_83ACBC0, gDummySpriteAnimTable, NULL, gUnknown_83E4088, sub_80A8BC4 - -gUnknown_83E40F8:: @ 83E40F8 - spr_template 10203, 10203, gOamData_83ACBC0, gDummySpriteAnimTable, NULL, gUnknown_83E4090, sub_80A8CA4 - -gUnknown_83E4110:: @ 83E4110 - spr_template 10203, 10203, gOamData_83ACBC0, gDummySpriteAnimTable, NULL, gUnknown_83E4088, sub_80A8EE8 - -gUnknown_83E4128:: @ 83E4128 - obj_rot_scal_anim_frame 96, -13, 0, 8 - obj_rot_scal_anim_end - -gUnknown_83E4138:: @ 83E4138 - obj_image_anim_frame 0, 3 - obj_image_anim_frame 4, 3 - obj_image_anim_frame 8, 3 - obj_image_anim_frame 4, 3 - obj_image_anim_frame 0, 3 - obj_image_anim_end - -gUnknown_83E4150:: @ 83E4150 - .4byte gUnknown_83E4138 - -gUnknown_83E4154:: @ 83E4154 - spr_template 10207, 10207, gOamData_83AC9D0, gUnknown_83E4150, NULL, gDummySpriteAffineAnimTable, sub_80A9648 - -gUnknown_83E416C:: @ 83E416C - .byte 0x1e, 0x1c, 0xec, 0x18, 0x10, 0x1a, 0xf6, 0x1c - -gUnknown_83E4174:: @ 83E4174 - obj_image_anim_frame 0, 6 - obj_image_anim_frame 16, 6 - obj_image_anim_frame 32, 15 - obj_image_anim_frame 16, 6 - obj_image_anim_frame 0, 6 - obj_image_anim_frame 16, 6, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 32, 15, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 16, 6, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 0, 6 - obj_image_anim_frame 16, 6 - obj_image_anim_frame 32, 15 - obj_image_anim_frame 16, 6 - obj_image_anim_frame 0, 6 - obj_image_anim_end - -gUnknown_83E41AC:: @ 83E41AC - .4byte gUnknown_83E4174 - -gUnknown_83E41B0:: @ 83E41B0 - spr_template 10205, 10205, gOamData_83AC9D8, gUnknown_83E41AC, NULL, gDummySpriteAffineAnimTable, AnimSpriteOnMonPos - -gUnknown_83E41C8:: @ 83E41C8 - .2byte 10206, 9999, 9998 - - .align 2 -gUnknown_83E41D0:: @ 83E41D0 - spr_template 10206, 10206, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A97E8 - -gUnknown_83E41E8:: @ 83E41E8 - spr_template 10210, 10210, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A9860 - -gUnknown_83E4200:: @ 83E4200 - obj_rot_scal_anim_frame 10, -13, 0, 10 - obj_rot_scal_anim_frame -10, 13, 0, 10 - obj_rot_scal_anim_end - -gUnknown_83E4218:: @ 83E4218 - spr_template 10216, 10216, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A9B40 - -gUnknown_83E4230:: @ 83E4230 - spr_template 10216, 10216, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A9BC4 - -gUnknown_83E4248:: @ 83E4248 - spr_template 10216, 10216, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A9C4C - -gUnknown_83E4260:: @ 83E4260 - obj_rot_scal_anim_frame 128, 128, 0, 0 - obj_rot_scal_anim_frame 8, 8, 0, 1 - obj_rot_scal_anim_jump 1 - -gUnknown_83E4278:: @ 83E4278 - .4byte gUnknown_83E4260 - -gUnknown_83E427C:: @ 83E427C - spr_template 10217, 10217, gOamData_83ACA30, gDummySpriteAnimTable, NULL, gUnknown_83E4278, sub_80AA174 - -gUnknown_83E4294:: @ 83E4294 - spr_template 10217, 10217, gOamData_83ACA90, gDummySpriteAnimTable, NULL, gUnknown_83E4278, sub_80AA2B0 - -gUnknown_83E42AC:: @ 83E42AC - obj_rot_scal_anim_frame 128, 128, 0, 0 - obj_rot_scal_anim_frame 8, 8, 0, 1 - obj_rot_scal_anim_jump 1 - -gUnknown_83E42C4:: @ 83E42C4 - .4byte gUnknown_83E42AC - -gUnknown_83E42C8:: @ 83E42C8 - spr_template 10237, 10237, gOamData_83ACA88, gDummySpriteAnimTable, NULL, gUnknown_83E42C4, sub_80AA37C - -gUnknown_83E42E0:: @ 83E42E0 - obj_image_anim_frame 0, 4 - obj_image_anim_frame 4, 4 - obj_image_anim_frame 8, 4 - obj_image_anim_frame 4, 4 - obj_image_anim_frame 0, 4 - obj_image_anim_end - -gUnknown_83E42F8:: @ 83E42F8 - .4byte gUnknown_83E42E0 - -gUnknown_83E42FC:: @ 83E42FC - spr_template 10218, 10218, gOamData_83AC9D0, gUnknown_83E42F8, NULL, gDummySpriteAffineAnimTable, sub_80AA3F0 - -gUnknown_83E4314:: @ 83E4314 - obj_image_anim_frame 0, 24 - obj_image_anim_end - -gUnknown_83E431C:: @ 83E431C - .4byte gUnknown_83E4314 - -gUnknown_83E4320:: @ 83E4320 - spr_template 10220, 10220, gOamData_83AC9D8, gUnknown_83E431C, NULL, gDummySpriteAffineAnimTable, sub_80AA408 - -gUnknown_83E4338:: @ 83E4338 - spr_template 10219, 10219, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AA508 - -gUnknown_83E4350:: @ 83E4350 - obj_image_anim_frame 0, 3 - obj_image_anim_jump 0 - -gUnknown_83E4358:: @ 83E4358 - obj_image_anim_frame 16, 3 - obj_image_anim_jump 0 - -gUnknown_83E4360:: @ 83E4360 - .4byte gUnknown_83E4350 - .4byte gUnknown_83E4358 - -gUnknown_83E4368:: @ 83E4368 - spr_template 10221, 10221, gOamData_83AC9D8, gUnknown_83E4360, NULL, gDummySpriteAffineAnimTable, sub_80AA58C - -gUnknown_83E4380:: @ 83E4380 - obj_image_anim_frame 0, 4 - obj_image_anim_frame 16, 4 - obj_image_anim_frame 32, 4 - obj_image_anim_frame 48, 4 - obj_image_anim_end - -gUnknown_83E4394:: @ 83E4394 - obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 16, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 32, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 48, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - -gUnknown_83E43A8:: @ 83E43A8 - .4byte gUnknown_83E4380 - .4byte gUnknown_83E4394 - -gUnknown_83E43B0:: @ 83E43B0 - spr_template 10222, 10222, gOamData_83AC9D8, gUnknown_83E43A8, NULL, gDummySpriteAffineAnimTable, sub_80AA6B8 - -gUnknown_83E43C8:: @ 83E43C8 - obj_image_anim_frame 0, 8 - obj_image_anim_frame 16, 8 - obj_image_anim_frame 32, 8 - obj_image_anim_frame 16, 8 - obj_image_anim_end - -gUnknown_83E43DC:: @ 83E43DC - obj_image_anim_frame 16, 8, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 32, 8, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 16, 8, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 0, 8, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - -gUnknown_83E43F0:: @ 83E43F0 - .4byte gUnknown_83E43C8 - .4byte gUnknown_83E43DC - -gUnknown_83E43F8:: @ 83E43F8 - spr_template 10215, 10215, gOamData_83AC9D8, gUnknown_83E43F0, NULL, gDummySpriteAffineAnimTable, sub_80AA708 - -gUnknown_83E4410:: @ 83E4410 - obj_rot_scal_anim_frame -12, 8, 0, 4 - obj_rot_scal_anim_frame 20, -20, 0, 4 - obj_rot_scal_anim_frame -8, 12, 0, 4 - obj_rot_scal_anim_end - -gUnknown_83E4430:: @ 83E4430 - spr_template 10225, 10225, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AA838 - -gUnknown_83E4448:: @ 83E4448 - obj_rot_scal_anim_frame 0, 0, 0, 5 - obj_rot_scal_anim_end - -gUnknown_83E4458:: @ 83E4458 - obj_rot_scal_anim_frame 0, 0, 248, 16 - obj_rot_scal_anim_end 1 - -gUnknown_83E4468:: @ 83E4468 - obj_rot_scal_anim_frame 0, 0, 8, 16 - obj_rot_scal_anim_end 1 - -gUnknown_83E4478:: @ 83E4478 - .4byte gUnknown_83E4448 - .4byte gUnknown_83E4458 - .4byte gUnknown_83E4468 - -gUnknown_83E4484:: @ 83E4484 - spr_template 10206, 10206, gOamData_83ACA30, gUnknown_83E3844, NULL, gUnknown_83E4478, sub_80AA998 - -gUnknown_83E449C:: @ 83E449C - spr_template 10206, 10206, gOamData_83ACA30, gUnknown_83E3844, NULL, gUnknown_83E4478, sub_80AA938 - -gUnknown_83E44B4:: @ 83E44B4 - obj_rot_scal_anim_frame 256, 256, 0, 0 - obj_rot_scal_anim_end - -gUnknown_83E44C4:: @ 83E44C4 - obj_rot_scal_anim_frame 512, 256, 0, 0 - obj_rot_scal_anim_end - -gUnknown_83E44D4:: @ 83E44D4 - .4byte gUnknown_83E44B4 - .4byte gUnknown_83E44C4 - -gUnknown_83E44DC:: @ 83E44DC - spr_template 10244, 10244, gOamData_83ACBE0, gDummySpriteAnimTable, NULL, gUnknown_83E44D4, sub_80AAAE4 - gUnknown_83E44F4:: @ 83E44F4 .incbin "graphics/battle_anims/unk_83E4874.4bpp" @@ -1684,7 +26,7 @@ gUnknown_83E5894:: @ 83E5894 .4byte gUnknown_83E5874 gUnknown_83E5898:: @ 83E5898 - spr_template 10115, 10115, gOamData_83ACA18, gUnknown_83E5894, NULL, gDummySpriteAffineAnimTable, sub_80AAC54 + spr_template 10115, 10115, gOamData_AffineOff_ObjNormal_16x32, gUnknown_83E5894, NULL, gDummySpriteAffineAnimTable, sub_80AAC54 gUnknown_83E58B0:: @ 83E58B0 obj_rot_scal_anim_frame -5, -5, 0, 10 @@ -1704,7 +46,7 @@ gUnknown_83E58DC:: @ 83E58DC .4byte gUnknown_83E58CC gUnknown_83E58E0:: @ 83E58E0 - spr_template 10146, 10146, gOamData_83ACB50, gUnknown_83E58DC, NULL, gUnknown_83E58C8, sub_80AAC98 + spr_template 10146, 10146, gOamData_AffineNormal_ObjBlend_16x16, gUnknown_83E58DC, NULL, gUnknown_83E58C8, sub_80AAC98 gUnknown_83E58F8:: @ 83E58F8 obj_image_anim_frame 0, 1 @@ -1727,7 +69,7 @@ gUnknown_83E5928:: @ 83E5928 .4byte gUnknown_83E5910 gUnknown_83E592C:: @ 83E592C - spr_template 10140, 10140, gOamData_83ACAC8, gUnknown_83E5908, NULL, gUnknown_83E5928, sub_80AAE84 + spr_template 10140, 10140, gOamData_AffineDouble_ObjNormal_8x16, gUnknown_83E5908, NULL, gUnknown_83E5928, sub_80AAE84 gUnknown_83E5944:: @ 83E5944 obj_image_anim_frame 0, 1 @@ -1740,16 +82,16 @@ gUnknown_83E5958:: @ 83E5958 .4byte gUnknown_83E5944 gUnknown_83E595C:: @ 83E595C - spr_template 10149, 10149, gOamData_83ACAF0, gUnknown_83E5958, NULL, gDummySpriteAffineAnimTable, sub_80AB024 + spr_template 10149, 10149, gOamData_AffineOff_ObjBlend_16x16, gUnknown_83E5958, NULL, gDummySpriteAffineAnimTable, sub_80AB024 gUnknown_83E5974:: @ 83E5974 - spr_template 10259, 10259, gOamData_83ACAF0, gUnknown_83E5958, NULL, gDummySpriteAffineAnimTable, sub_80AB024 + spr_template 10259, 10259, gOamData_AffineOff_ObjBlend_16x16, gUnknown_83E5958, NULL, gDummySpriteAffineAnimTable, sub_80AB024 gUnknown_83E598C:: @ 83E598C - spr_template 10264, 10264, gOamData_83AC9C8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AB024 + spr_template 10264, 10264, gOamData_AffineOff_ObjNormal_8x8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AB024 gUnknown_83E59A4:: @ 83E59A4 - spr_template 10265, 10265, gOamData_83AC9C8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AB024 + spr_template 10265, 10265, gOamData_AffineOff_ObjNormal_8x8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80AB024 gUnknown_83E59BC:: @ 83E59BC obj_image_anim_frame 16, 2 @@ -1761,10 +103,10 @@ gUnknown_83E59CC:: @ 83E59CC .4byte gUnknown_83E59BC gUnknown_83E59D0:: @ 83E59D0 - spr_template 10029, 10029, gOamData_83AC9D8, gUnknown_83E59CC, NULL, gDummySpriteAffineAnimTable, sub_80AB024 + spr_template 10029, 10029, gOamData_AffineOff_ObjNormal_32x32, gUnknown_83E59CC, NULL, gDummySpriteAffineAnimTable, sub_80AB024 gUnknown_83E59E8:: @ 83E59E8 - spr_template 10165, 10165, gOamData_83ACAD8, gDummySpriteAnimTable, NULL, gUnknown_83E3C98, sub_80AB024 + spr_template 10165, 10165, gOamData_AffineDouble_ObjNormal_16x32, gDummySpriteAnimTable, NULL, gGrowingRingAffineAnimTable, sub_80AB024 gUnknown_83E5A00:: @ 83E5A00 obj_rot_scal_anim_frame 3, 3, 10, 50 @@ -1783,10 +125,10 @@ gUnknown_83E5A34:: @ 83E5A34 .4byte gUnknown_83E5A20 gUnknown_83E5A38:: @ 83E5A38 - spr_template 10149, 10149, gOamData_83ACBB0, gUnknown_83E5958, NULL, gUnknown_83E5A30, sub_80AB168 + spr_template 10149, 10149, gOamData_AffineDouble_ObjBlend_16x16, gUnknown_83E5958, NULL, gUnknown_83E5A30, sub_80AB168 gUnknown_83E5A50:: @ 83E5A50 - spr_template 10149, 10149, gOamData_83ACBB0, gUnknown_83E5958, NULL, gUnknown_83E5A34, sub_80AB1F8 + spr_template 10149, 10149, gOamData_AffineDouble_ObjBlend_16x16, gUnknown_83E5958, NULL, gUnknown_83E5A34, sub_80AB1F8 gUnknown_83E5A68:: @ 83E5A68 obj_image_anim_frame 0, 1 @@ -1803,19 +145,19 @@ gUnknown_83E5A7C:: @ 83E5A7C .4byte gUnknown_83E5A70 gUnknown_83E5A80:: @ 83E5A80 - spr_template 10155, 10155, gOamData_83ACAF0, gUnknown_83E5A78, NULL, gDummySpriteAffineAnimTable, AnimThrowProjectile + spr_template 10155, 10155, gOamData_AffineOff_ObjBlend_16x16, gUnknown_83E5A78, NULL, gDummySpriteAffineAnimTable, AnimThrowProjectile gUnknown_83E5A98:: @ 83E5A98 - spr_template 10155, 10155, gOamData_83ACBB0, gUnknown_83E5A7C, NULL, gUnknown_83E6A80, sub_80AB2CC + spr_template 10155, 10155, gOamData_AffineDouble_ObjBlend_16x16, gUnknown_83E5A7C, NULL, gUnknown_83E6A80, sub_80AB2CC gUnknown_83E5AB0:: @ 83E5AB0 - spr_template 10141, 10141, gOamData_83AC9C8, gUnknown_83E6330, NULL, gDummySpriteAffineAnimTable, sub_80AB308 + spr_template 10141, 10141, gOamData_AffineOff_ObjNormal_8x8, gUnknown_83E6330, NULL, gDummySpriteAffineAnimTable, sub_80AB308 gUnknown_83E5AC8:: @ 83E5AC8 - spr_template 10155, 10155, gOamData_83AC9C8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80ABA78 + spr_template 10155, 10155, gOamData_AffineOff_ObjNormal_8x8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80ABA78 gUnknown_83E5AE0:: @ 83E5AE0 - spr_template 10268, 10268, gOamData_83AC9C8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80ABF60 + spr_template 10268, 10268, gOamData_AffineOff_ObjNormal_8x8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80ABF60 gUnknown_83E5AF8:: @ 83E5AF8 obj_image_anim_frame 8, 1 @@ -1859,10 +201,10 @@ gUnknown_83E5B6C:: @ 83E5B6C .4byte gUnknown_83E5B4C gUnknown_83E5B70:: @ 83E5B70 - spr_template 10155, 10155, gOamData_83AC9C8, gUnknown_83E5B10, NULL, gDummySpriteAffineAnimTable, sub_80AC624 + spr_template 10155, 10155, gOamData_AffineOff_ObjNormal_8x8, gUnknown_83E5B10, NULL, gDummySpriteAffineAnimTable, sub_80AC624 gUnknown_83E5B88:: @ 83E5B88 - spr_template 10155, 10155, gOamData_83ACA28, gUnknown_83E5B10, NULL, gUnknown_83E5B64, sub_80AC698 + spr_template 10155, 10155, gOamData_AffineNormal_ObjNormal_8x8, gUnknown_83E5B10, NULL, gUnknown_83E5B64, sub_80AC698 gUnknown_83E5BA0:: @ 83E5BA0 - spr_template 10155, 10155, gOamData_83ACA30, gUnknown_83E5B18, NULL, gUnknown_83E5B6C, sub_8077350 + spr_template 10155, 10155, gOamData_AffineNormal_ObjNormal_16x16, gUnknown_83E5B18, NULL, gUnknown_83E5B6C, sub_8077350 diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index cf4cf25cb..4cc93f85e 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -460,72 +460,72 @@ Move_POISON_POWDER:: @ 81C6FB8 loadspritegfx 10065 loadspritegfx 10150 loopsewithpan SE_W077, 63, 10, 6 - createsprite gUnknown_83E29C0, ANIM_TARGET, 2, -30, -22, 117, 80, 5, 1 - createsprite gUnknown_83E29C0, ANIM_TARGET, 2, 10, -22, 117, 80, -5, 1 - createsprite gUnknown_83E29C0, ANIM_TARGET, 2, -25, -22, 117, 112, 5, 3 + createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, -30, -22, 117, 80, 5, 1 + createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, 10, -22, 117, 80, -5, 1 + createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, -25, -22, 117, 112, 5, 3 delay 15 - createsprite gUnknown_83E29C0, ANIM_TARGET, 2, -5, -22, 117, 80, -5, 1 - createsprite gUnknown_83E29C0, ANIM_TARGET, 2, 5, -22, 117, 96, 5, 1 - createsprite gUnknown_83E29C0, ANIM_TARGET, 2, 0, -22, 117, 69, -5, 1 - createsprite gUnknown_83E29C0, ANIM_TARGET, 2, -15, -22, 117, 112, 5, 2 + createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, -5, -22, 117, 80, -5, 1 + createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, 5, -22, 117, 96, 5, 1 + createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, 0, -22, 117, 69, -5, 1 + createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, -15, -22, 117, 112, 5, 2 delay 30 - createsprite gUnknown_83E29C0, ANIM_TARGET, 2, -15, -22, 117, 112, 5, 2 - createsprite gUnknown_83E29C0, ANIM_TARGET, 2, 15, -22, 117, 80, -5, 1 - createsprite gUnknown_83E29C0, ANIM_TARGET, 2, -10, -22, 117, 96, 7, 2 - createsprite gUnknown_83E29C0, ANIM_TARGET, 2, -5, -22, 117, 90, -8, 0 + createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, -15, -22, 117, 112, 5, 2 + createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, 15, -22, 117, 80, -5, 1 + createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, -10, -22, 117, 96, 7, 2 + createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, -5, -22, 117, 90, -8, 0 delay 20 - createsprite gUnknown_83E29C0, ANIM_TARGET, 2, -10, -22, 117, 80, -5, 1 - createsprite gUnknown_83E29C0, ANIM_TARGET, 2, 0, -22, 117, 89, 5, 2 - createsprite gUnknown_83E29C0, ANIM_TARGET, 2, 20, -22, 117, 112, -8, 2 - createsprite gUnknown_83E29C0, ANIM_TARGET, 2, 5, -22, 117, 80, 5, 1 + createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, -10, -22, 117, 80, -5, 1 + createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, 0, -22, 117, 89, 5, 2 + createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, 20, -22, 117, 112, -8, 2 + createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, 5, -22, 117, 80, 5, 1 waitforvisualfinish end Move_STUN_SPORE:: @ 81C70E9 loadspritegfx 10068 loopsewithpan SE_W077, 63, 10, 6 - createsprite gUnknown_83E29A8, ANIM_TARGET, 2, -30, -22, 117, 80, 5, 1 - createsprite gUnknown_83E29A8, ANIM_TARGET, 2, 10, -22, 117, 80, -5, 1 - createsprite gUnknown_83E29A8, ANIM_TARGET, 2, -25, -22, 117, 112, 5, 3 + createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, -30, -22, 117, 80, 5, 1 + createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, 10, -22, 117, 80, -5, 1 + createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, -25, -22, 117, 112, 5, 3 delay 15 - createsprite gUnknown_83E29A8, ANIM_TARGET, 2, -5, -22, 117, 80, -5, 1 - createsprite gUnknown_83E29A8, ANIM_TARGET, 2, 5, -22, 117, 96, 5, 1 - createsprite gUnknown_83E29A8, ANIM_TARGET, 2, 0, -22, 117, 69, -5, 1 - createsprite gUnknown_83E29A8, ANIM_TARGET, 2, -15, -22, 117, 112, 5, 2 + createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, -5, -22, 117, 80, -5, 1 + createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, 5, -22, 117, 96, 5, 1 + createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, 0, -22, 117, 69, -5, 1 + createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, -15, -22, 117, 112, 5, 2 delay 30 - createsprite gUnknown_83E29A8, ANIM_TARGET, 2, -15, -22, 117, 112, 5, 2 - createsprite gUnknown_83E29A8, ANIM_TARGET, 2, 15, -22, 117, 80, -5, 1 - createsprite gUnknown_83E29A8, ANIM_TARGET, 2, -10, -22, 117, 96, 7, 2 - createsprite gUnknown_83E29A8, ANIM_TARGET, 2, -5, -22, 117, 90, -8, 0 + createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, -15, -22, 117, 112, 5, 2 + createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, 15, -22, 117, 80, -5, 1 + createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, -10, -22, 117, 96, 7, 2 + createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, -5, -22, 117, 90, -8, 0 delay 20 - createsprite gUnknown_83E29A8, ANIM_TARGET, 2, -10, -22, 117, 80, -5, 1 - createsprite gUnknown_83E29A8, ANIM_TARGET, 2, 0, -22, 117, 89, 5, 2 - createsprite gUnknown_83E29A8, ANIM_TARGET, 2, 20, -22, 117, 112, -8, 2 - createsprite gUnknown_83E29A8, ANIM_TARGET, 2, 5, -22, 117, 80, 5, 1 + createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, -10, -22, 117, 80, -5, 1 + createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, 0, -22, 117, 89, 5, 2 + createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, 20, -22, 117, 112, -8, 2 + createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, 5, -22, 117, 80, 5, 1 waitforvisualfinish end Move_SLEEP_POWDER:: @ 81C7217 loadspritegfx 10067 loopsewithpan SE_W077, 63, 10, 6 - createsprite gUnknown_83E2990, ANIM_TARGET, 2, -30, -22, 117, 80, 5, 1 - createsprite gUnknown_83E2990, ANIM_TARGET, 2, 10, -22, 117, 80, -5, 1 - createsprite gUnknown_83E2990, ANIM_TARGET, 2, -25, -22, 117, 112, 5, 3 + createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, -30, -22, 117, 80, 5, 1 + createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, 10, -22, 117, 80, -5, 1 + createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, -25, -22, 117, 112, 5, 3 delay 15 - createsprite gUnknown_83E2990, ANIM_TARGET, 2, -5, -22, 117, 80, -5, 1 - createsprite gUnknown_83E2990, ANIM_TARGET, 2, 5, -22, 117, 96, 5, 1 - createsprite gUnknown_83E2990, ANIM_TARGET, 2, 0, -22, 117, 69, -5, 1 - createsprite gUnknown_83E2990, ANIM_TARGET, 2, -15, -22, 117, 112, 5, 2 + createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, -5, -22, 117, 80, -5, 1 + createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, 5, -22, 117, 96, 5, 1 + createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, 0, -22, 117, 69, -5, 1 + createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, -15, -22, 117, 112, 5, 2 delay 30 - createsprite gUnknown_83E2990, ANIM_TARGET, 2, -15, -22, 117, 112, 5, 2 - createsprite gUnknown_83E2990, ANIM_TARGET, 2, 15, -22, 117, 80, -5, 1 - createsprite gUnknown_83E2990, ANIM_TARGET, 2, -10, -22, 117, 96, 7, 2 - createsprite gUnknown_83E2990, ANIM_TARGET, 2, -5, -22, 117, 90, -8, 0 + createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, -15, -22, 117, 112, 5, 2 + createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, 15, -22, 117, 80, -5, 1 + createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, -10, -22, 117, 96, 7, 2 + createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, -5, -22, 117, 90, -8, 0 delay 20 - createsprite gUnknown_83E2990, ANIM_TARGET, 2, -10, -22, 117, 80, -5, 1 - createsprite gUnknown_83E2990, ANIM_TARGET, 2, 0, -22, 117, 89, 5, 2 - createsprite gUnknown_83E2990, ANIM_TARGET, 2, 20, -22, 117, 112, -8, 2 - createsprite gUnknown_83E2990, ANIM_TARGET, 2, 5, -22, 117, 80, 5, 1 + createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, -10, -22, 117, 80, -5, 1 + createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, 0, -22, 117, 89, 5, 2 + createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, 20, -22, 117, 112, -8, 2 + createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, 5, -22, 117, 80, 5, 1 waitforvisualfinish end @@ -535,21 +535,21 @@ Move_SWIFT:: @ 81C7345 monbg 3 setalpha 12, 8 playsewithpan SE_W129, 192 - createsprite gUnknown_83E2C7C, ANIM_TARGET, 3, 20, -10, 20, 0, 22, 20, 1 + createsprite gSwiftStarSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 22, 20, 1 delay 5 playsewithpan SE_W129, 192 - createsprite gUnknown_83E2C7C, ANIM_TARGET, 3, 20, -10, 20, 5, 22, -18, 1 + createsprite gSwiftStarSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 5, 22, -18, 1 delay 5 playsewithpan SE_W129, 192 - createsprite gUnknown_83E2C7C, ANIM_TARGET, 3, 20, -10, 20, -10, 22, 15, 1 + createsprite gSwiftStarSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, -10, 22, 15, 1 createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 18, 1 createvisualtask AnimTask_ShakeMon2, 2, 3, 2, 0, 18, 1 delay 5 playsewithpan SE_W129, 192 - createsprite gUnknown_83E2C7C, ANIM_TARGET, 3, 20, -10, 20, 0, 22, -20, 1 + createsprite gSwiftStarSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 22, -20, 1 delay 5 playsewithpan SE_W129, 192 - createsprite gUnknown_83E2C7C, ANIM_TARGET, 3, 20, -10, 20, 0, 22, 12, 1 + createsprite gSwiftStarSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 22, 12, 1 delay 5 waitforvisualfinish clearmonbg 3 @@ -641,7 +641,7 @@ Move_SUPERSONIC:: @ 81C755D gUnknown_81C759B:: @ 81C759B playsewithpan SE_W048, 192 - createsprite gUnknown_83E3CA0, ANIM_TARGET, 2, 16, 0, 0, 0, 30, 0 + createsprite gSupersonicWaveSpriteTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 30, 0 delay 2 return @@ -657,7 +657,7 @@ Move_SCREECH:: @ 81C75B5 gUnknown_81C75E8:: @ 81C75E8 playsewithpan SE_W103, 192 - createsprite gUnknown_83E3CB8, ANIM_TARGET, 2, 16, 0, 0, 0, 30, 0 + createsprite gScreechWaveSpriteTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 30, 0 delay 2 return @@ -909,13 +909,13 @@ gUnknown_81C7BCD:: @ 81C7BCD Move_LEECH_SEED:: @ 81C7C23 loadspritegfx 10006 playsewithpan SE_W077, 192 - createsprite gUnknown_83E2B34, ANIM_TARGET, 2, 15, 0, 0, 24, 35, -32 + createsprite gLeechSeedSpriteTemplate, ANIM_TARGET, 2, 15, 0, 0, 24, 35, -32 delay 8 playsewithpan SE_W077, 192 - createsprite gUnknown_83E2B34, ANIM_TARGET, 2, 15, 0, -16, 24, 35, -40 + createsprite gLeechSeedSpriteTemplate, ANIM_TARGET, 2, 15, 0, -16, 24, 35, -40 delay 8 playsewithpan SE_W077, 192 - createsprite gUnknown_83E2B34, ANIM_TARGET, 2, 15, 0, 16, 24, 35, -37 + createsprite gLeechSeedSpriteTemplate, ANIM_TARGET, 2, 15, 0, 16, 24, 35, -37 delay 12 loopsewithpan SE_W039, 63, 10, 8 waitforvisualfinish @@ -970,7 +970,7 @@ gUnknown_81C7D89:: @ 81C7D89 delay 2 createvisualtask AnimTask_IsContest, 2, jumpargeq 7, 1, gUnknown_81C7DC0 - createvisualtask sub_80DEAB4, 2, + createvisualtask AnimTask_IsTargetPlayerSide, 2, jumpargeq 7, 0, gUnknown_81C7DB2 jumpargeq 7, 1, gUnknown_81C7DB9 @@ -1057,7 +1057,7 @@ Move_SONIC_BOOM:: @ 81C7EDB gUnknown_81C7F12:: @ 81C7F12 playsewithpan SE_W013B, 192 - createsprite gUnknown_83E3C10, ANIM_TARGET, 2, 16, 0, 0, 0, 15 + createsprite gSonicBoomSpriteTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 15 delay 4 return @@ -1221,7 +1221,7 @@ Move_CUT:: @ 81C832A monbg 1 setalpha 12, 8 playsewithpan SE_W015, 63 - createsprite gUnknown_83E3294, ANIM_ATTACKER, 2, 40, -32, 0 + createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 0 delay 5 createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 10, 1 waitforvisualfinish @@ -1240,24 +1240,24 @@ Move_HIDDEN_POWER:: @ 81C835C delay 4 createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, 0, 0 playsewithpan SE_W179, 192 - createsprite gUnknown_83E427C, ANIM_ATTACKER, 2, 26, 0 - createsprite gUnknown_83E427C, ANIM_ATTACKER, 2, 26, 42 - createsprite gUnknown_83E427C, ANIM_ATTACKER, 2, 26, 84 - createsprite gUnknown_83E427C, ANIM_ATTACKER, 2, 26, 126 - createsprite gUnknown_83E427C, ANIM_ATTACKER, 2, 26, 168 - createsprite gUnknown_83E427C, ANIM_ATTACKER, 2, 26, 210 + createsprite gHiddenPowerOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 0 + createsprite gHiddenPowerOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 42 + createsprite gHiddenPowerOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 84 + createsprite gHiddenPowerOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 126 + createsprite gHiddenPowerOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 168 + createsprite gHiddenPowerOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 210 delay 52 setarg 7, 65535 playsewithpan SE_W115, 192 createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, 0, 0 - createsprite gUnknown_83E4294, ANIM_TARGET, 2, 0 - createsprite gUnknown_83E4294, ANIM_TARGET, 2, 32 - createsprite gUnknown_83E4294, ANIM_TARGET, 2, 64 - createsprite gUnknown_83E4294, ANIM_TARGET, 2, 96 - createsprite gUnknown_83E4294, ANIM_TARGET, 2, 128 - createsprite gUnknown_83E4294, ANIM_TARGET, 2, 160 - createsprite gUnknown_83E4294, ANIM_TARGET, 2, 192 - createsprite gUnknown_83E4294, ANIM_TARGET, 2, 224 + createsprite gHiddenPowerOrbScatterSpriteTemplate, ANIM_TARGET, 2, 0 + createsprite gHiddenPowerOrbScatterSpriteTemplate, ANIM_TARGET, 2, 32 + createsprite gHiddenPowerOrbScatterSpriteTemplate, ANIM_TARGET, 2, 64 + createsprite gHiddenPowerOrbScatterSpriteTemplate, ANIM_TARGET, 2, 96 + createsprite gHiddenPowerOrbScatterSpriteTemplate, ANIM_TARGET, 2, 128 + createsprite gHiddenPowerOrbScatterSpriteTemplate, ANIM_TARGET, 2, 160 + createsprite gHiddenPowerOrbScatterSpriteTemplate, ANIM_TARGET, 2, 192 + createsprite gHiddenPowerOrbScatterSpriteTemplate, ANIM_TARGET, 2, 224 end Move_REVERSAL:: @ 81C8445 @@ -1271,12 +1271,12 @@ Move_REVERSAL:: @ 81C8445 createvisualtask sub_80B9BDC, 2, 31, 3, 2, 0, 10, 32767 delay 10 playsewithpan SE_W179, 192 - createsprite gUnknown_83FF3B8, ANIM_ATTACKER, 2, 26, 0 - createsprite gUnknown_83FF3B8, ANIM_ATTACKER, 2, 26, 42 - createsprite gUnknown_83FF3B8, ANIM_ATTACKER, 2, 26, 84 - createsprite gUnknown_83FF3B8, ANIM_ATTACKER, 2, 26, 126 - createsprite gUnknown_83FF3B8, ANIM_ATTACKER, 2, 26, 168 - createsprite gUnknown_83FF3B8, ANIM_ATTACKER, 2, 26, 210 + createsprite gReversalOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 0 + createsprite gReversalOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 42 + createsprite gReversalOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 84 + createsprite gReversalOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 126 + createsprite gReversalOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 168 + createsprite gReversalOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 210 waitforvisualfinish delay 20 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 @@ -1348,7 +1348,7 @@ Move_SWORDS_DANCE:: @ 81C8644 setalpha 12, 8 playsewithpan SE_W014, 192 createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 16, 6, 1, 4 - createsprite gUnknown_83E3BF8, ANIM_ATTACKER, 2, 0, 0 + createsprite gSwordsDanceBladeSpriteTemplate, ANIM_ATTACKER, 2, 0, 0 delay 22 createvisualtask sub_80B9F6C, 2, 10005, 2, 2, 32754, 16, 0, 0 waitforvisualfinish @@ -1444,12 +1444,12 @@ Move_FURY_CUTTER:: @ 81C88EA monbg 1 setalpha 12, 8 playsewithpan SE_W013, 63 - createvisualtask sub_80AAB7C, 2, + createvisualtask AnimTask_IsFuryCutterHitRight, 2, jumpargeq 7, 0, gUnknown_81C8947 goto gUnknown_81C8959 gUnknown_81C890A:: @ 81C890A - createvisualtask update_fury_cutter_counter_copy, 2, + createvisualtask AnimTask_GetFuryCutterHitCount, 2, jumpargeq 7, 1, gUnknown_81C892E jumpargeq 7, 2, gUnknown_81C896B jumpargeq 7, 3, gUnknown_81C8985 @@ -1465,11 +1465,11 @@ gUnknown_81C892E:: @ 81C892E end gUnknown_81C8947:: @ 81C8947 - createsprite gUnknown_83E3294, ANIM_ATTACKER, 2, 40, -32, 0 + createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 0 goto gUnknown_81C890A gUnknown_81C8959:: @ 81C8959 - createsprite gUnknown_83E3294, ANIM_ATTACKER, 2, 40, -32, 1 + createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 1 goto gUnknown_81C890A gUnknown_81C896B:: @ 81C896B @@ -1500,19 +1500,19 @@ Move_SELF_DESTRUCT:: @ 81C89B9 gUnknown_81C8A3F:: @ 81C8A3F playsewithpan SE_W120, 192 - createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 0, 0, 0, 1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 1 delay 6 playsewithpan SE_W120, 192 - createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 24, -24, 0, 1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 24, -24, 0, 1 delay 6 playsewithpan SE_W120, 192 - createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, -16, 16, 0, 1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -16, 16, 0, 1 delay 6 playsewithpan SE_W120, 192 - createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, -24, -12, 0, 1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, -12, 0, 1 delay 6 playsewithpan SE_W120, 192 - createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 16, 16, 0, 1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, 0, 1 delay 6 return @@ -1524,7 +1524,7 @@ Move_SLAM:: @ 81C8AA9 playsewithpan SE_W004, 192 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 3, 0, 4 delay 1 - createsprite gUnknown_83E3148, ANIM_ATTACKER, 2, 0, 0 + createsprite gSlamHitSpriteTemplate, ANIM_ATTACKER, 2, 0, 0 delay 3 playsewithpan SE_W025B, 63 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 @@ -1546,7 +1546,7 @@ Move_VINE_WHIP:: @ 81C8B31 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6 delay 6 playsewithpan SE_W010, 63 - createsprite gUnknown_83E3160, ANIM_TARGET, 2, 0, 0 + createsprite gVineWhipSpriteTemplate, ANIM_TARGET, 2, 0, 0 delay 6 createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 6, 1 end @@ -1554,17 +1554,17 @@ Move_VINE_WHIP:: @ 81C8B31 Move_DRILL_PECK:: @ 81C8B68 loadspritegfx 10135 loadspritegfx 10162 - createsprite gUnknown_83E3550, ANIM_ATTACKER, 2, 0 + createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0 playsewithpan SE_W029, 192 waitforvisualfinish delay 2 - createsprite gUnknown_83E3550, ANIM_ATTACKER, 2, 1 + createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 1 delay 2 loopsewithpan SE_W030, 63, 4, 8 createvisualtask sub_80B2868, 5, createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 18, 1 waitforvisualfinish - createsprite gUnknown_83E3550, ANIM_ATTACKER, 2, 2 + createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 2 waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 6 waitforvisualfinish @@ -1669,19 +1669,19 @@ Move_EXPLOSION:: @ 81C8E15 gUnknown_81C8EB2:: @ 81C8EB2 playsewithpan SE_W153, 192 - createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 0, 0, 0, 1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 1 delay 6 playsewithpan SE_W153, 192 - createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 24, -24, 0, 1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 24, -24, 0, 1 delay 6 playsewithpan SE_W153, 192 - createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, -16, 16, 0, 1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -16, 16, 0, 1 delay 6 playsewithpan SE_W153, 192 - createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, -24, -12, 0, 1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, -12, 0, 1 delay 6 playsewithpan SE_W153, 192 - createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 16, 16, 0, 1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, 0, 1 delay 6 return @@ -1689,9 +1689,9 @@ Move_DEFENSE_CURL:: @ 81C8F1C loadspritegfx 10234 loopsewithpan SE_W161, 192, 18, 3 createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 0, 0 - createvisualtask sub_80DF524, 5, + createvisualtask AnimTask_DefenseCurlDeformMon, 5, waitforvisualfinish - createsprite gUnknown_83FF118, ANIM_ATTACKER, 2, 0, 6, 0, 1 + createsprite gEclipsingOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, 6, 0, 1 waitforvisualfinish createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 0, 1 waitforvisualfinish @@ -1702,7 +1702,7 @@ Move_PROTECT:: @ 81C8F55 monbg 2 monbgprio_28 0 waitplaysewithpan SE_W115, 192, 16 - createsprite gUnknown_83E3354, ANIM_ATTACKER, 2, 24, 0, 90 + createsprite gProtectWallSpriteTemplate, ANIM_ATTACKER, 2, 24, 0, 90 waitforvisualfinish clearmonbg 2 end @@ -1746,10 +1746,10 @@ gUnknown_81C9004:: @ 81C9004 waitforvisualfinish delay 20 playsewithpan SE_W207B, 192 - createsprite gUnknown_83E3F04, ANIM_ATTACKER, 2, 0, 20, -28 + createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28 waitforvisualfinish playsewithpan SE_W207B, 192 - createsprite gUnknown_83E3F04, ANIM_ATTACKER, 2, 0, 20, -28 + createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28 waitforvisualfinish delay 10 createvisualtask AnimTask_SwayMon, 5, 0, 16, 6144, 8, 0 @@ -1783,10 +1783,10 @@ gUnknown_81C910A:: @ 81C910A waitforvisualfinish delay 20 playsewithpan SE_W207B, 192 - createsprite gUnknown_83E3F04, ANIM_ATTACKER, 2, 0, 20, -28 + createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28 waitforvisualfinish delay 5 - createvisualtask sub_80E0488, 5, + createvisualtask AnimTask_StrongFrustrationGrowAndShrink, 5, delay 7 playsewithpan SE_W004, 63 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 8, 1, 1 @@ -1805,7 +1805,7 @@ gUnknown_81C910A:: @ 81C910A gUnknown_81C91D7:: @ 81C91D7 playsewithpan SE_W207B, 192 - createsprite gUnknown_83E3F04, ANIM_ATTACKER, 2, 0, 20, -28 + createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28 waitforvisualfinish delay 5 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 @@ -1822,7 +1822,7 @@ gUnknown_81C91D7:: @ 81C91D7 goto gUnknown_81C8FFF gUnknown_81C9253:: @ 81C9253 - createsprite gUnknown_83FF2B0, ANIM_ATTACKER, 2, 20, -28 + createsprite gWeakFrustrationAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 20, -28 waitforvisualfinish delay 10 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 10, 2 @@ -1837,11 +1837,11 @@ Move_SAFEGUARD:: @ 81C9297 monbg 2 setalpha 8, 8 playsewithpan SE_W208, 192 - createsprite gUnknown_83E44DC, ANIM_ATTACKER, 2, + createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2, delay 4 - createsprite gUnknown_83E44DC, ANIM_ATTACKER, 2, + createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2, delay 4 - createsprite gUnknown_83E44DC, ANIM_ATTACKER, 2, + createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2, waitforvisualfinish playsewithpan SE_REAPOKE, 192 createvisualtask sub_80B9BDC, 2, 10, 0, 2, 0, 10, 32767 @@ -1852,26 +1852,26 @@ Move_SAFEGUARD:: @ 81C9297 Move_PAIN_SPLIT:: @ 81C92D9 loadspritegfx 10239 - createsprite gUnknown_83FF370, ANIM_ATTACKER, 2, -8, -42, 0 - createsprite gUnknown_83FF370, ANIM_TARGET, 2, -8, -42, 1 + createsprite gPainSplitProjectileSpriteTemplate, ANIM_ATTACKER, 2, -8, -42, 0 + createsprite gPainSplitProjectileSpriteTemplate, ANIM_TARGET, 2, -8, -42, 1 delay 10 playsewithpan SE_W207B, 0 - createvisualtask sub_80E0B00, 2, 0, 0 - createvisualtask sub_80E0B00, 2, 1, 0 + createvisualtask AnimTask_PainSplitMovement, 2, 0, 0 + createvisualtask AnimTask_PainSplitMovement, 2, 1, 0 waitforvisualfinish - createsprite gUnknown_83FF370, ANIM_ATTACKER, 2, -24, -42, 0 - createsprite gUnknown_83FF370, ANIM_TARGET, 2, -24, -42, 1 + createsprite gPainSplitProjectileSpriteTemplate, ANIM_ATTACKER, 2, -24, -42, 0 + createsprite gPainSplitProjectileSpriteTemplate, ANIM_TARGET, 2, -24, -42, 1 delay 10 playsewithpan SE_W207B, 0 - createvisualtask sub_80E0B00, 2, 0, 1 - createvisualtask sub_80E0B00, 2, 1, 1 + createvisualtask AnimTask_PainSplitMovement, 2, 0, 1 + createvisualtask AnimTask_PainSplitMovement, 2, 1, 1 waitforvisualfinish - createsprite gUnknown_83FF370, ANIM_ATTACKER, 2, 8, -42, 0 - createsprite gUnknown_83FF370, ANIM_TARGET, 2, 8, -42, 1 + createsprite gPainSplitProjectileSpriteTemplate, ANIM_ATTACKER, 2, 8, -42, 0 + createsprite gPainSplitProjectileSpriteTemplate, ANIM_TARGET, 2, 8, -42, 1 delay 10 playsewithpan SE_W207B, 0 - createvisualtask sub_80E0B00, 2, 0, 2 - createvisualtask sub_80E0B00, 2, 1, 2 + createvisualtask AnimTask_PainSplitMovement, 2, 0, 2 + createvisualtask AnimTask_PainSplitMovement, 2, 1, 2 end Move_VICE_GRIP:: @ 81C9381 @@ -1880,8 +1880,8 @@ Move_VICE_GRIP:: @ 81C9381 monbg 3 setalpha 12, 8 playsewithpan SE_W011, 63 - createsprite gUnknown_83E3E08, ANIM_ATTACKER, 2, 0 - createsprite gUnknown_83E3E08, ANIM_ATTACKER, 2, 1 + createsprite gViceGripSpriteTemplate, ANIM_ATTACKER, 2, 0 + createsprite gViceGripSpriteTemplate, ANIM_ATTACKER, 2, 1 delay 9 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, 1, 2 createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 5, 1 @@ -1898,8 +1898,8 @@ Move_GUILLOTINE:: @ 81C93C9 fadetobgfromset 12, 13, 14 waitbgfadein playsewithpan SE_W011, 63 - createsprite gUnknown_83E3E48, ANIM_ATTACKER, 2, 0 - createsprite gUnknown_83E3E48, ANIM_ATTACKER, 2, 1 + createsprite gGuillotineSpriteTemplate, ANIM_ATTACKER, 2, 0 + createsprite gGuillotineSpriteTemplate, ANIM_ATTACKER, 2, 1 createvisualtask sub_80BA7F8, 10, 4, 2, 0, 16, 0 delay 9 createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 23, 1 @@ -1922,11 +1922,11 @@ Move_PAY_DAY:: @ 81C9455 monbgprio_28 1 setalpha 12, 8 playsewithpan SE_W013B, 192 - createsprite gUnknown_83E3D50, ANIM_ATTACKER, 2, 20, 0, 0, 0, 1152 + createsprite gCoinThrowSpriteTemplate, ANIM_ATTACKER, 2, 20, 0, 0, 0, 1152 waitforvisualfinish playsewithpan SE_W006, 63 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, 1, 2 - createsprite gUnknown_83E3D68, ANIM_ATTACKER, 2, + createsprite gFallingCoinSpriteTemplate, ANIM_ATTACKER, 2, createvisualtask AnimTask_ShakeMon2, 2, 1, 1, 0, 6, 1 waitforvisualfinish clearmonbg 1 @@ -2030,26 +2030,26 @@ Move_ATTRACT:: @ 81C985A loopsewithpan SE_W204, 192, 12, 3 createvisualtask AnimTask_SwayMon, 5, 0, 12, 4096, 4, 0 delay 15 - createsprite gUnknown_83E4218, ANIM_TARGET, 3, 20, -8 + createsprite gRedHeartProjectileSpriteTemplate, ANIM_TARGET, 3, 20, -8 waitforvisualfinish playsewithpan SE_W213, 63 - createsprite gUnknown_83E4230, ANIM_TARGET, 3, 160, -32 - createsprite gUnknown_83E4230, ANIM_TARGET, 3, -256, -40 - createsprite gUnknown_83E4230, ANIM_TARGET, 3, 128, -16 - createsprite gUnknown_83E4230, ANIM_TARGET, 3, 416, -38 - createsprite gUnknown_83E4230, ANIM_TARGET, 3, -128, -22 - createsprite gUnknown_83E4230, ANIM_TARGET, 3, -384, -31 + createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, 160, -32 + createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, -256, -40 + createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, 128, -16 + createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, 416, -38 + createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, -128, -22 + createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, -384, -31 waitforvisualfinish waitplaysewithpan SE_W213B, 0, 15 - createvisualtask sub_80A9CE8, 5, - createsprite gUnknown_83E4248, ANIM_ATTACKER, 40, 16, 256, 0 - createsprite gUnknown_83E4248, ANIM_ATTACKER, 40, 224, 240, 15 - createsprite gUnknown_83E4248, ANIM_ATTACKER, 40, 126, 272, 30 - createsprite gUnknown_83E4248, ANIM_ATTACKER, 40, 80, 224, 45 - createsprite gUnknown_83E4248, ANIM_ATTACKER, 40, 170, 272, 60 - createsprite gUnknown_83E4248, ANIM_ATTACKER, 40, 40, 256, 75 - createsprite gUnknown_83E4248, ANIM_ATTACKER, 40, 112, 256, 90 - createsprite gUnknown_83E4248, ANIM_ATTACKER, 40, 200, 272, 90 + createvisualtask AnimTask_HeartsBackground, 5, + createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 16, 256, 0 + createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 224, 240, 15 + createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 126, 272, 30 + createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 80, 224, 45 + createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 170, 272, 60 + createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 40, 256, 75 + createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 112, 256, 90 + createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 200, 272, 90 delay 75 createvisualtask sub_80B9BDC, 2, 4, 4, 4, 0, 10, 28479 end @@ -2108,11 +2108,11 @@ Move_CONFUSE_RAY:: @ 81C9A31 Move_LOCK_ON:: @ 81C9A84 loadspritegfx 10014 - createsprite gUnknown_83E3518, ANIM_ATTACKER, 40, - createsprite gUnknown_83E3530, ANIM_ATTACKER, 40, 1 - createsprite gUnknown_83E3530, ANIM_ATTACKER, 40, 2 - createsprite gUnknown_83E3530, ANIM_ATTACKER, 40, 3 - createsprite gUnknown_83E3530, ANIM_ATTACKER, 40, 4 + createsprite gLockOnTargetSpriteTemplate, ANIM_ATTACKER, 40, + createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 1 + createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 2 + createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 3 + createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 4 delay 120 setarg 7, 65535 waitforvisualfinish @@ -2125,7 +2125,7 @@ Move_MEAN_LOOK:: @ 81C9ABA createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 16, 0 loopsewithpan SE_W109, 63, 15, 4 waitplaysewithpan SE_W043, 63, 85 - createsprite gUnknown_83FEEE4, ANIM_ATTACKER, 2, + createsprite gMeanLookEyeSpriteTemplate, ANIM_ATTACKER, 2, delay 120 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, 0 delay 30 @@ -2305,23 +2305,23 @@ Move_SMOKESCREEN:: @ 81C9EB0 loadspritegfx 10016 loadspritegfx 10017 playsewithpan SE_W104, 192 - createsprite gUnknown_83FEE30, ANIM_TARGET, 2, 20, 0, 0, 0, 35, -25 + createsprite gBlackBallSpriteTemplate, ANIM_TARGET, 2, 20, 0, 0, 0, 35, -25 waitforvisualfinish - createvisualtask sub_80DE34C, 2, + createvisualtask AnimTask_SmokescreenImpact, 2, delay 2 playsewithpan SE_W028, 63 - createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, -12, 104, 0, 75 - createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, -12, 72, 1, 75 - createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, -6, 56, 1, 75 - createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, -6, 88, 0, 75 - createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, 0, 56, 0, 75 - createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, 0, 88, 1, 75 - createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, 6, 72, 0, 75 - createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, 6, 104, 1, 75 - createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, 12, 72, 0, 75 - createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, 12, 56, 1, 75 - createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, 18, 80, 0, 75 - createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, 18, 72, 1, 75 + createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, -12, 104, 0, 75 + createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, -12, 72, 1, 75 + createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, -6, 56, 1, 75 + createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, -6, 88, 0, 75 + createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, 0, 56, 0, 75 + createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, 0, 88, 1, 75 + createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, 6, 72, 0, 75 + createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, 6, 104, 1, 75 + createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, 12, 72, 0, 75 + createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, 12, 56, 1, 75 + createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, 18, 80, 0, 75 + createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, 18, 72, 1, 75 waitforvisualfinish end @@ -2332,45 +2332,45 @@ Move_CONVERSION:: @ 81C9FA9 setalpha 16, 0 delay 0 playsewithpan SE_W129, 192 - createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, -24, -24 + createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, -24, -24 delay 3 - createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, -8, -24 + createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, -8, -24 delay 3 - createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, 8, -24 + createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, 8, -24 delay 3 - createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, 24, -24 + createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, 24, -24 delay 3 playsewithpan SE_W129, 192 - createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, -24, -8 + createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, -24, -8 delay 3 - createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, -8, -8 + createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, -8, -8 delay 3 - createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, 8, -8 + createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, 8, -8 delay 3 - createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, 24, -8 + createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, 24, -8 delay 3 playsewithpan SE_W129, 192 - createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, -24, 8 + createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, -24, 8 delay 3 - createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, -8, 8 + createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, -8, 8 delay 3 - createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, 8, 8 + createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, 8, 8 delay 3 - createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, 24, 8 + createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, 24, 8 delay 3 playsewithpan SE_W129, 192 - createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, -24, 24 + createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, -24, 24 delay 3 - createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, -8, 24 + createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, -8, 24 delay 3 - createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, 8, 24 + createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, 8, 24 delay 3 - createsprite gUnknown_83E36EC, ANIM_ATTACKER, 2, 24, 24 + createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, 24, 24 delay 20 playsewithpan SE_W112, 192 createvisualtask sub_80B9F6C, 2, 10018, 1, 1, 14335, 12, 0, 0 delay 6 - createvisualtask sub_80A5CD4, 5, + createvisualtask AnimTask_ConversionAlphaBlend, 5, waitforvisualfinish delay 1 clearmonbg 2 @@ -2384,23 +2384,23 @@ Move_CONVERSION_2:: @ 81CA0BE setalpha 0, 16 delay 0 playsewithpan SE_W112, 63 - createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, -24, -24, 60 - createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, -8, -24, 65 - createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, 8, -24, 70 - createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, 24, -24, 75 - createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, -24, -8, 80 - createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, -8, -8, 85 - createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, 8, -8, 90 - createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, 24, -8, 95 - createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, -24, 8, 100 - createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, -8, 8, 105 - createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, 8, 8, 110 - createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, 24, 8, 115 - createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, -24, 24, 120 - createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, -8, 24, 125 - createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, 8, 24, 130 - createsprite gUnknown_83E371C, ANIM_ATTACKER, 2, 24, 24, 135 - createvisualtask sub_80A5DE0, 5, + createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, -24, -24, 60 + createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, -8, -24, 65 + createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, 8, -24, 70 + createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, 24, -24, 75 + createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, -24, -8, 80 + createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, -8, -8, 85 + createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, 8, -8, 90 + createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, 24, -8, 95 + createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, -24, 8, 100 + createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, -8, 8, 105 + createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, 8, 8, 110 + createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, 24, 8, 115 + createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, -24, 24, 120 + createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, -8, 24, 125 + createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, 8, 24, 130 + createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, 24, 24, 135 + createvisualtask AnimTask_Conversion2AlphaBlend, 5, delay 60 playsewithpan SE_W129, 63 delay 10 @@ -2446,15 +2446,15 @@ Move_ROLLING_KICK:: @ 81CA1DA Move_HEADBUTT:: @ 81CA25D loadspritegfx 10135 - createsprite gUnknown_83E3550, ANIM_ATTACKER, 2, 0 + createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0 playsewithpan SE_W029, 192 waitforvisualfinish delay 2 - createsprite gUnknown_83E3550, ANIM_ATTACKER, 2, 1 + createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 1 waitforvisualfinish createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 2, 0, 4, 1 createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1 - createsprite gUnknown_83E3550, ANIM_ATTACKER, 2, 2 + createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 2 createsprite gUnknown_83E7C98, ANIM_TARGET, 3, 0, 0, 1, 1 playsewithpan SE_W233B, 63 waitforvisualfinish @@ -2463,16 +2463,16 @@ Move_HEADBUTT:: @ 81CA25D Move_HORN_ATTACK:: @ 81CA2BA loadspritegfx 10135 loadspritegfx 10020 - createsprite gUnknown_83E3550, ANIM_ATTACKER, 2, 0 + createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0 playsewithpan SE_W029, 192 waitforvisualfinish delay 2 - createsprite gUnknown_83E3550, ANIM_ATTACKER, 2, 1 - createsprite gUnknown_83E37BC, ANIM_TARGET, 4, 0, 0, 10 + createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 1 + createsprite gHornHitSpriteTemplate, ANIM_TARGET, 4, 0, 0, 10 waitforvisualfinish createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 2, 0, 4, 1 createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1 - createsprite gUnknown_83E3550, ANIM_ATTACKER, 2, 2 + createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 2 createsprite gUnknown_83E7C98, ANIM_TARGET, 3, 0, 0, 1, 1 playsewithpan SE_W030, 63 waitforvisualfinish @@ -2490,14 +2490,14 @@ gUnknown_81CA345:: @ 81CA345 end gUnknown_81CA358:: @ 81CA358 - createsprite gUnknown_83E37BC, ANIM_TARGET, 4, 8, 8, 10 + createsprite gHornHitSpriteTemplate, ANIM_TARGET, 4, 8, 8, 10 waitforvisualfinish createsprite gUnknown_83E7C98, ANIM_TARGET, 3, 0, 0, 1, 1 playsewithpan SE_W030, 63 goto gUnknown_81CA345 gUnknown_81CA37E:: @ 81CA37E - createsprite gUnknown_83E37BC, ANIM_TARGET, 4, -8, -8, 10 + createsprite gHornHitSpriteTemplate, ANIM_TARGET, 4, -8, -8, 10 waitforvisualfinish createsprite gUnknown_83E7C98, ANIM_TARGET, 3, 0, 0, 1, 1 playsewithpan SE_W030, 63 @@ -2514,12 +2514,12 @@ Move_HORN_DRILL:: @ 81CA3A4 gUnknown_81CA3C1:: @ 81CA3C1 waitbgfadein setalpha 12, 8 - createsprite gUnknown_83E3550, ANIM_ATTACKER, 2, 0 + createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0 playsewithpan SE_W029, 192 waitforvisualfinish delay 2 - createsprite gUnknown_83E3550, ANIM_ATTACKER, 2, 1 - createsprite gUnknown_83E37BC, ANIM_TARGET, 4, 0, 0, 12 + createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 1 + createsprite gHornHitSpriteTemplate, ANIM_TARGET, 4, 0, 0, 12 waitforvisualfinish playse SE_BAN createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 2, 0, 40, 1 @@ -2557,7 +2557,7 @@ gUnknown_81CA3C1:: @ 81CA3C1 createsprite gUnknown_83E7C98, ANIM_TARGET, 3, 32, 0, 1, 2 playsewithpan SE_W030, 63 delay 4 - createsprite gUnknown_83E3550, ANIM_ATTACKER, 2, 2 + createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 2 waitforvisualfinish restorebg waitbgfadeout @@ -2574,8 +2574,8 @@ gUnknown_81CA50A:: @ 81CA50A Move_THRASH:: @ 81CA521 loadspritegfx 10135 loadspritegfx 10143 - createvisualtask sub_80A8638, 2, - createvisualtask sub_80A86A4, 2, + createvisualtask AnimTask_ThrashMoveMonHorizontal, 2, + createvisualtask AnimTask_ThrashMoveMonVertical, 2, createsprite gUnknown_83E6728, ANIM_TARGET, 3, 1, 10, 0 createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 4, 0, 7, 1 playsewithpan SE_W004, 63 @@ -2592,36 +2592,36 @@ Move_THRASH:: @ 81CA521 Move_SING:: @ 81CA5A0 loadspritegfx 10072 monbg 3 - createvisualtask sub_80A65E8, 2, + createvisualtask AnimTask_MusicNotesRainbowBlend, 2, waitforvisualfinish panse_1B SE_W047, 192, 63, 2, 0 - createsprite gUnknown_83E3880, ANIM_TARGET, 2, 7, 0, 12 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 7, 0, 12 delay 5 - createsprite gUnknown_83E3880, ANIM_TARGET, 2, 6, 1, 12 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 6, 1, 12 delay 5 - createsprite gUnknown_83E3880, ANIM_TARGET, 2, 1, 2, 12 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 1, 2, 12 delay 5 - createsprite gUnknown_83E3880, ANIM_TARGET, 2, 2, 3, 12 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 2, 3, 12 delay 5 - createsprite gUnknown_83E3880, ANIM_TARGET, 2, 3, 0, 12 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 3, 0, 12 delay 4 - createsprite gUnknown_83E3880, ANIM_TARGET, 2, 2, 1, 12 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 2, 1, 12 delay 4 - createsprite gUnknown_83E3880, ANIM_TARGET, 2, 5, 2, 12 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 5, 2, 12 delay 4 - createsprite gUnknown_83E3880, ANIM_TARGET, 2, 6, 3, 12 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 6, 3, 12 delay 4 - createsprite gUnknown_83E3880, ANIM_TARGET, 2, 2, 0, 12 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 2, 0, 12 delay 4 - createsprite gUnknown_83E3880, ANIM_TARGET, 2, 2, 1, 12 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 2, 1, 12 delay 4 - createsprite gUnknown_83E3880, ANIM_TARGET, 2, 1, 2, 12 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 1, 2, 12 delay 4 - createsprite gUnknown_83E3880, ANIM_TARGET, 2, 5, 3, 12 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 5, 3, 12 delay 4 waitforvisualfinish clearmonbg 3 - createvisualtask sub_80A66A0, 2, + createvisualtask AnimTask_MusicNotesClearRainbowBlend, 2, waitforvisualfinish end @@ -2797,10 +2797,10 @@ Move_RAGE:: @ 81CAA1C monbg 1 setalpha 12, 8 createvisualtask AnimTask_BlendMonInAndOut, 3, 0, 31, 10, 0, 2 - createsprite gUnknown_83E3F04, ANIM_ATTACKER, 2, 0, -20, -28 + createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, -20, -28 playsewithpan SE_W207B, 192 delay 20 - createsprite gUnknown_83E3F04, ANIM_ATTACKER, 2, 0, 20, -28 + createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28 playsewithpan SE_W207B, 192 waitforvisualfinish createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6 @@ -2824,7 +2824,7 @@ Move_TELEPORT:: @ 81CAA92 Move_DOUBLE_TEAM:: @ 81CAAAB monbg 2 setalpha 12, 8 - createvisualtask sub_80A63B4, 2, + createvisualtask AnimTask_DoubleTeam, 2, playsewithpan SE_W104, 192 delay 32 playsewithpan SE_W104, 192 @@ -2850,7 +2850,7 @@ Move_DOUBLE_TEAM:: @ 81CAAAB Move_MINIMIZE:: @ 81CAAF2 setalpha 10, 8 - createvisualtask sub_80A8074, 2, + createvisualtask AnimTask_Minimize, 2, loopsewithpan SE_W107, 192, 34, 3 waitforvisualfinish blendoff @@ -2859,10 +2859,10 @@ Move_MINIMIZE:: @ 81CAAF2 Move_METRONOME:: @ 81CAB05 loadspritegfx 10064 loadspritegfx 10209 - createsprite gUnknown_83E398C, ANIM_ATTACKER, 11, 0, 100 + createsprite gThoughtBubbleSpriteTemplate, ANIM_ATTACKER, 11, 0, 100 playsewithpan SE_W118, 192 delay 6 - createsprite gUnknown_83E3A34, ANIM_ATTACKER, 12, 0 + createsprite gMetronomeFingerSpriteTemplate, ANIM_ATTACKER, 12, 0 delay 24 loopsewithpan SE_W039, 192, 22, 3 waitforvisualfinish @@ -2892,7 +2892,7 @@ gUnknown_81CAB49:: @ 81CAB49 gUnknown_81CAB86:: @ 81CAB86 loadspritegfx 10135 - createvisualtask sub_80A5694, 2, 0 + createvisualtask AnimTask_SkullBashPosition, 2, 0 playsewithpan SE_W036, 192 waitforvisualfinish playse SE_BAN @@ -2902,7 +2902,7 @@ gUnknown_81CAB86:: @ 81CAB86 createsprite gUnknown_83E7C98, ANIM_TARGET, 4, 0, 0, 1, 0 loopsewithpan SE_W025B, 63, 8, 3 waitforvisualfinish - createvisualtask sub_80A5694, 2, 1 + createvisualtask AnimTask_SkullBashPosition, 2, 1 goto gUnknown_81CAB38 Move_AMNESIA:: @ 81CABF5 @@ -2923,8 +2923,8 @@ Move_KINESIS:: @ 81CAC19 playsewithpan SE_W060, 192 call gUnknown_81D59BB createsprite gUnknown_83E6F8C, ANIM_ATTACKER, 20, - createsprite gUnknown_83E3BBC, ANIM_ATTACKER, 19, 32, -8, 0 - createsprite gUnknown_83E3BBC, ANIM_ATTACKER, 19, 32, 16, 1 + createsprite gKinesisZapEnergySpriteTemplate, ANIM_ATTACKER, 19, 32, -8, 0 + createsprite gKinesisZapEnergySpriteTemplate, ANIM_ATTACKER, 19, 32, 16, 1 loopsewithpan SE_W109, 192, 21, 2 delay 60 playsewithpan SE_W146, 192 @@ -2939,14 +2939,14 @@ Move_KINESIS:: @ 81CAC19 Move_GLARE:: @ 81CAC6A loadspritegfx 10248 loadspritegfx 10218 - createvisualtask sub_80E21CC, 5, 0 + createvisualtask AnimTask_GlareEyeDots, 5, 0 playsewithpan SE_W060B, 192 waitforvisualfinish createvisualtask sub_80BA7F8, 5, 1, 0, 0, 16, 0 waitforvisualfinish - createsprite gUnknown_83E42FC, ANIM_ATTACKER, 0, -16, -8 - createsprite gUnknown_83E42FC, ANIM_ATTACKER, 0, 16, -8 - createvisualtask sub_80A9F10, 5, + createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, -16, -8 + createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, 16, -8 + createvisualtask AnimTask_ScaryFace, 5, playsewithpan SE_W043, 192 delay 2 createvisualtask sub_80ADAD8, 3, 20, 1, 0 @@ -2956,7 +2956,7 @@ Move_GLARE:: @ 81CAC6A Move_BARRAGE:: @ 81CACD3 loadspritegfx 10254 - createvisualtask sub_80E2518, 3, + createvisualtask AnimTask_BarrageBall, 3, playsewithpan SE_W207, 192 delay 24 createsprite gUnknown_83E7B88, ANIM_ATTACKER, 2, 8, 1, 40, 1 @@ -3043,7 +3043,7 @@ Move_FLASH:: @ 81CAEB3 end Move_SPLASH:: @ 81CAEC0 - createvisualtask sub_80A8338, 2, 0, 3 + createvisualtask AnimTask_Splash, 2, 0, 3 delay 8 loopsewithpan SE_W039, 192, 38, 3 waitforvisualfinish @@ -3052,7 +3052,7 @@ Move_SPLASH:: @ 81CAEC0 Move_ACID_ARMOR:: @ 81CAED5 monbg 0 setalpha 15, 0 - createvisualtask sub_80E12F8, 2, 0 + createvisualtask AnimTask_AcidArmor, 2, 0 playsewithpan SE_W151, 192 waitforvisualfinish blendoff @@ -3062,7 +3062,7 @@ Move_ACID_ARMOR:: @ 81CAED5 Move_SHARPEN:: @ 81CAEEE loadspritegfx 10185 - createsprite gUnknown_83E365C, ANIM_ATTACKER, 2, + createsprite gSharpenSphereSpriteTemplate, ANIM_ATTACKER, 2, waitforvisualfinish end @@ -3077,7 +3077,7 @@ Move_SUPER_FANG:: @ 81CAEFA delay 20 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 4 - createsprite gUnknown_83E37EC, ANIM_TARGET, 2, + createsprite gSuperFangSpriteTemplate, ANIM_TARGET, 2, playsewithpan SE_W044, 63 delay 8 createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, 2143, 14, 32767, 14 @@ -3088,10 +3088,10 @@ Move_SUPER_FANG:: @ 81CAEFA Move_SLASH:: @ 81CAF7B loadspritegfx 10183 - createsprite gUnknown_83E35A4, ANIM_TARGET, 2, 1, -8, 0 + createsprite gSlashSliceSpriteTemplate, ANIM_TARGET, 2, 1, -8, 0 playsewithpan SE_W013, 63 delay 4 - createsprite gUnknown_83E35A4, ANIM_TARGET, 2, 1, 8, 0 + createsprite gSlashSliceSpriteTemplate, ANIM_TARGET, 2, 1, 8, 0 createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 18, 1 playsewithpan SE_W013, 63 waitforvisualfinish @@ -3103,8 +3103,8 @@ Move_STRUGGLE:: @ 81CAFB5 monbg 1 setalpha 12, 8 createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 3, 0, 12, 4 - createsprite gUnknown_83E43F8, ANIM_ATTACKER, 2, 0, 0, 2 - createsprite gUnknown_83E43F8, ANIM_ATTACKER, 2, 0, 1, 2 + createsprite gMovementWavesSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 2 + createsprite gMovementWavesSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 2 loopsewithpan SE_W029, 192, 12, 4 waitforvisualfinish createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2 @@ -3119,10 +3119,10 @@ Move_SKETCH:: @ 81CB01B loadspritegfx 10002 monbg 1 createvisualtask sub_80A8874, 2, - createsprite gUnknown_83E3F4C, ANIM_TARGET, 2, + createsprite gPencilSpriteTemplate, ANIM_TARGET, 2, waitforvisualfinish clearmonbg 1 - createvisualtask sub_80A8338, 2, 0, 2 + createvisualtask AnimTask_Splash, 2, 0, 2 loopsewithpan SE_W039, 192, 38, 2 end @@ -3153,7 +3153,7 @@ Move_FLAIL:: @ 81CB099 loadspritegfx 10135 monbg 1 setalpha 12, 8 - createvisualtask sub_80E0850, 2, 0 + createvisualtask AnimTask_FlailMovement, 2, 0 loopsewithpan SE_W029, 192, 8, 2 waitforvisualfinish createsprite gUnknown_83E7C50, ANIM_TARGET, 3, 1, 3 @@ -3217,7 +3217,7 @@ Move_FORESIGHT:: @ 81CB18D monbg 3 monbgprio_28 1 setalpha 16, 0 - createsprite gUnknown_83FF6A4, ANIM_TARGET, 2, 1 + createsprite gForesightMagnifyingGlassSpriteTemplate, ANIM_TARGET, 2, 1 delay 17 loopsewithpan SE_W166, 63, 16, 4 delay 48 @@ -3265,27 +3265,27 @@ Move_ENDURE:: @ 81CB227 end gUnknown_81CB267:: @ 81CB267 - createsprite gUnknown_83E3604, ANIM_ATTACKER, 2, 0, -24, 26, 2 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2 delay 4 - createsprite gUnknown_83E3604, ANIM_ATTACKER, 2, 0, 14, 28, 1 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1 delay 4 - createsprite gUnknown_83E3604, ANIM_ATTACKER, 2, 0, -5, 10, 2 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2 delay 4 - createsprite gUnknown_83E3604, ANIM_ATTACKER, 2, 0, 28, 26, 3 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 26, 3 delay 4 - createsprite gUnknown_83E3604, ANIM_ATTACKER, 2, 0, -12, 0, 1 + createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -12, 0, 1 return Move_CHARM:: @ 81CB2BB loadspritegfx 10210 - createvisualtask sub_80E0558, 5, 0, 2, 0 - createsprite gUnknown_83E41E8, ANIM_ATTACKER, 3, 0, 20 + createvisualtask AnimTask_RockMonBackAndForth, 5, 0, 2, 0 + createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 0, 20 playsewithpan SE_W204, 192 delay 15 - createsprite gUnknown_83E41E8, ANIM_ATTACKER, 3, -20, 20 + createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, -20, 20 playsewithpan SE_W204, 192 delay 15 - createsprite gUnknown_83E41E8, ANIM_ATTACKER, 3, 20, 20 + createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 20, 20 playsewithpan SE_W204, 192 waitforvisualfinish end @@ -3310,23 +3310,23 @@ Move_ROLLOUT:: @ 81CB2FE Move_FALSE_SWIPE:: @ 81CB33F loadspritegfx 10286 loadspritegfx 10135 - createsprite gUnknown_83E35BC, ANIM_TARGET, 2, + createsprite gFalseSwipeSliceSpriteTemplate, ANIM_TARGET, 2, playsewithpan SE_W233, 63 delay 16 - createsprite gUnknown_83E35D4, ANIM_TARGET, 2, 0 + createsprite gFalseSwipePositionedSliceSpriteTemplate, ANIM_TARGET, 2, 0 playsewithpan SE_W104, 63 delay 2 - createsprite gUnknown_83E35D4, ANIM_TARGET, 2, 16 + createsprite gFalseSwipePositionedSliceSpriteTemplate, ANIM_TARGET, 2, 16 delay 2 - createsprite gUnknown_83E35D4, ANIM_TARGET, 2, 32 + createsprite gFalseSwipePositionedSliceSpriteTemplate, ANIM_TARGET, 2, 32 playsewithpan SE_W104, 63 delay 2 - createsprite gUnknown_83E35D4, ANIM_TARGET, 2, 48 + createsprite gFalseSwipePositionedSliceSpriteTemplate, ANIM_TARGET, 2, 48 delay 2 - createsprite gUnknown_83E35D4, ANIM_TARGET, 2, 64 + createsprite gFalseSwipePositionedSliceSpriteTemplate, ANIM_TARGET, 2, 64 playsewithpan SE_W104, 63 delay 2 - createsprite gUnknown_83E35D4, ANIM_TARGET, 2, 80 + createsprite gFalseSwipePositionedSliceSpriteTemplate, ANIM_TARGET, 2, 80 delay 2 waitforvisualfinish createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1 @@ -3337,17 +3337,17 @@ Move_FALSE_SWIPE:: @ 81CB33F Move_SWAGGER:: @ 81CB3C6 loadspritegfx 10086 loadspritegfx 10087 - createvisualtask sub_80A84B4, 2, + createvisualtask AnimTask_GrowAndShrink, 2, playsewithpan SE_W207, 192 waitforvisualfinish - createsprite gUnknown_83E3ED0, ANIM_ATTACKER, 2, + createsprite gBreathPuffSpriteTemplate, ANIM_ATTACKER, 2, loopsewithpan SE_W207, 192, 4, 2 waitforvisualfinish delay 24 - createsprite gUnknown_83E3F04, ANIM_TARGET, 2, 1, -20, -28 + createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, -20, -28 playsewithpan SE_W207B, 63 delay 12 - createsprite gUnknown_83E3F04, ANIM_TARGET, 2, 1, 20, -28 + createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, 20, -28 playsewithpan SE_W207B, 63 waitforvisualfinish end @@ -3357,7 +3357,7 @@ Move_MILK_DRINK:: @ 81CB40E loadspritegfx 10203 loadspritegfx 10031 monbg 1 - createsprite gUnknown_83E33B4, ANIM_ATTACKER, 2, + createsprite gMilkBottleSpriteTemplate, ANIM_ATTACKER, 2, delay 40 playsewithpan SE_W152, 192 delay 12 @@ -3365,7 +3365,7 @@ Move_MILK_DRINK:: @ 81CB40E delay 20 playsewithpan SE_W152, 192 waitforvisualfinish - createsprite gUnknown_83E4094, ANIM_ATTACKER, 3, 0, 0, 1, 0 + createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0 playsewithpan SE_W208, 192 waitforvisualfinish clearmonbg 1 @@ -3402,8 +3402,8 @@ Move_RAPID_SPIN:: @ 81CB4E1 loadspritegfx 10135 loadspritegfx 10229 monbg 0 - createsprite gUnknown_83FF068, ANIM_ATTACKER, 2, 0, 0, 32, -32, 40, -2 - createvisualtask sub_80DEF9C, 2, 0, 2, 0 + createsprite gRapidSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 32, -32, 40, -2 + createvisualtask AnimTask_RapinSpinMonElevation, 2, 0, 2, 0 loopsewithpan SE_W013B, 192, 8, 4 waitforvisualfinish createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 2 @@ -3411,7 +3411,7 @@ Move_RAPID_SPIN:: @ 81CB4E1 playsewithpan SE_W003, 63 waitforvisualfinish delay 8 - createvisualtask sub_80DEF9C, 2, 0, 2, 1 + createvisualtask AnimTask_RapinSpinMonElevation, 2, 0, 2, 1 loopsewithpan SE_W013B, 192, 8, 4 waitforvisualfinish clearmonbg 0 @@ -3424,21 +3424,21 @@ Move_MOONLIGHT:: @ 81CB54E setalpha 0, 16 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 16, 0 waitforvisualfinish - createsprite gUnknown_83E3734, ANIM_ATTACKER, 2, 120, 56 + createsprite gMoonSpriteTemplate, ANIM_ATTACKER, 2, 120, 56 createvisualtask sub_8076048, 3, 0, 16, 16, 0, 1 playsewithpan SE_W236, 0 delay 30 - createsprite gUnknown_83E3764, ANIM_ATTACKER, 40, -12, 0 + createsprite gMoonlightSparkleSpriteTemplate, ANIM_ATTACKER, 40, -12, 0 delay 30 - createsprite gUnknown_83E3764, ANIM_ATTACKER, 40, -24, 0 + createsprite gMoonlightSparkleSpriteTemplate, ANIM_ATTACKER, 40, -24, 0 delay 30 - createsprite gUnknown_83E3764, ANIM_ATTACKER, 40, 21, 0 + createsprite gMoonlightSparkleSpriteTemplate, ANIM_ATTACKER, 40, 21, 0 delay 30 - createsprite gUnknown_83E3764, ANIM_ATTACKER, 40, 0, 0 + createsprite gMoonlightSparkleSpriteTemplate, ANIM_ATTACKER, 40, 0, 0 delay 30 - createsprite gUnknown_83E3764, ANIM_ATTACKER, 40, 10, 0 + createsprite gMoonlightSparkleSpriteTemplate, ANIM_ATTACKER, 40, 10, 0 delay 20 - createvisualtask sub_80A5FC0, 2, + createvisualtask AnimTask_FadeScreenBlue, 2, waitforvisualfinish call gUnknown_81D56C9 waitforvisualfinish @@ -3455,7 +3455,7 @@ gUnknown_81CB5F5:: @ 81CB5F5 waitbgfadeout createvisualtask sub_80BB82C, 5, -2304, 0, 1, -1 waitbgfadein - createvisualtask sub_80A917C, 2, + createvisualtask AnimTask_StretchAttacker, 2, loopsewithpan SE_W013B, 192, 8, 3 waitforvisualfinish delay 1 @@ -3463,7 +3463,7 @@ gUnknown_81CB5F5:: @ 81CB5F5 monbg 1 setalpha 12, 8 delay 18 - createvisualtask sub_80A9210, 2, + createvisualtask AnimTask_ExtremeSpeedImpact, 2, delay 2 playsewithpan SE_W004, 63 createsprite gUnknown_83E7C68, ANIM_TARGET, 2, 1, 0, -12, 3 @@ -3474,9 +3474,9 @@ gUnknown_81CB5F5:: @ 81CB5F5 playsewithpan SE_W233B, 63 createsprite gUnknown_83E7C68, ANIM_TARGET, 2, 1, 0, 0, 3 waitforvisualfinish - createvisualtask sub_80A94AC, 2, + createvisualtask AnimTask_SpeedDust, 2, delay 10 - createvisualtask sub_80A939C, 2, + createvisualtask AnimTask_ExtremeSpeedMonReappear, 2, loopsewithpan SE_W104, 192, 8, 4 waitforvisualfinish restorebg @@ -3498,23 +3498,23 @@ Move_UPROAR:: @ 81CB69C loadspritegfx 10225 loadspritegfx 10203 monbg 3 - createvisualtask sub_80AA7C8, 2, 0 - createsprite gUnknown_83E4110, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8 + createvisualtask AnimTask_UproarDistortion, 2, 0 + createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8 playsewithpan SE_W253, 192 - createsprite gUnknown_83E4430, ANIM_ATTACKER, 2, 0, 29, -12, 0 - createsprite gUnknown_83E4430, ANIM_ATTACKER, 2, 0, -12, -29, 1 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 29, -12, 0 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, -12, -29, 1 delay 16 - createvisualtask sub_80AA7C8, 2, 0 - createsprite gUnknown_83E4110, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8 + createvisualtask AnimTask_UproarDistortion, 2, 0 + createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8 playsewithpan SE_W253, 192 - createsprite gUnknown_83E4430, ANIM_ATTACKER, 2, 0, 12, -29, 1 - createsprite gUnknown_83E4430, ANIM_ATTACKER, 2, 0, -29, -12, 0 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 12, -29, 1 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, -29, -12, 0 delay 16 - createvisualtask sub_80AA7C8, 2, 0 - createsprite gUnknown_83E4110, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8 + createvisualtask AnimTask_UproarDistortion, 2, 0 + createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8 playsewithpan SE_W253, 192 - createsprite gUnknown_83E4430, ANIM_ATTACKER, 2, 0, 24, -24, 1 - createsprite gUnknown_83E4430, ANIM_ATTACKER, 2, 0, -24, -24, 0 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, -24, 1 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, -24, 0 waitforvisualfinish clearmonbg 3 end @@ -3557,13 +3557,13 @@ Move_HAIL:: @ 81CB816 Move_TORMENT:: @ 81CB84E loadspritegfx 10087 loadspritegfx 10209 - createvisualtask sub_80DF1DC, 2, + createvisualtask AnimTask_TormentAttacker, 2, waitforvisualfinish createvisualtask AnimTask_BlendMonInAndOut, 2, 1, 31, 10, 1, 1 - createsprite gUnknown_83E3F04, ANIM_TARGET, 2, 1, -20, -28 + createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, -20, -28 playsewithpan SE_W207B, 63 delay 20 - createsprite gUnknown_83E3F04, ANIM_TARGET, 2, 1, 20, -28 + createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, 20, -28 playsewithpan SE_W207B, 63 end @@ -3593,29 +3593,29 @@ Move_MEMENTO:: @ 81CB892 Move_FACADE:: @ 81CB8D6 loadspritegfx 10243 - createvisualtask sub_80E1D5C, 2, 0, 3 - createvisualtask sub_80E1FC4, 2, 0, 72 + createvisualtask AnimTask_SquishAndSweatDroplets, 2, 0, 3 + createvisualtask AnimTask_FacadeColorBlend, 2, 0, 72 loopsewithpan SE_W207, 192, 24, 3 end Move_SMELLING_SALT:: @ 81CB8F6 loadspritegfx 10247 loadspritegfx 10255 - createsprite gUnknown_83FF644, ANIM_TARGET, 2, 1, 0, 2 - createsprite gUnknown_83FF644, ANIM_TARGET, 2, 1, 1, 2 + createsprite gSmellingSaltsHandSpriteTemplate, ANIM_TARGET, 2, 1, 0, 2 + createsprite gSmellingSaltsHandSpriteTemplate, ANIM_TARGET, 2, 1, 1, 2 delay 32 - createvisualtask sub_80E28DC, 3, 1, 2 + createvisualtask AnimTask_SmellingSaltsSquish, 3, 1, 2 loopsewithpan SE_W003, 63, 12, 2 waitforvisualfinish delay 4 createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 6, 2 - createsprite gUnknown_83FF674, ANIM_TARGET, 2, 1, 8, 3 + createsprite gSmellingSaltExclamationSpriteTemplate, ANIM_TARGET, 2, 1, 8, 3 loopsewithpan SE_W207B, 63, 16, 3 end Move_FOLLOW_ME:: @ 81CB951 loadspritegfx 10064 - createsprite gUnknown_83E3A4C, ANIM_ATTACKER, 2, 0 + createsprite gFollowMeFingerSpriteTemplate, ANIM_ATTACKER, 2, 0 playsewithpan SE_W039, 192 delay 18 playsewithpan SE_W213, 192 @@ -3662,27 +3662,27 @@ Move_TAUNT:: @ 81CBA0B loadspritegfx 10214 loadspritegfx 10209 loadspritegfx 10087 - createsprite gUnknown_83E398C, ANIM_ATTACKER, 11, 0, 45 + createsprite gThoughtBubbleSpriteTemplate, ANIM_ATTACKER, 11, 0, 45 playsewithpan SE_W118, 192 delay 6 - createsprite gUnknown_83E3AC4, ANIM_ATTACKER, 12, 0 + createsprite gTauntFingerSpriteTemplate, ANIM_ATTACKER, 12, 0 delay 4 loopsewithpan SE_W039, 192, 16, 2 waitforvisualfinish delay 8 - createsprite gUnknown_83E3F04, ANIM_TARGET, 2, 1, -20, -28 + createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, -20, -28 playsewithpan SE_W207B, 63 waitforvisualfinish delay 12 - createsprite gUnknown_83E3F04, ANIM_TARGET, 2, 1, 20, -28 + createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, 20, -28 playsewithpan SE_W207B, 63 end Move_HELPING_HAND:: @ 81CBA5F loadspritegfx 10247 - createvisualtask sub_80E2CE4, 5, - createsprite gUnknown_83FF68C, ANIM_ATTACKER, 40, 0 - createsprite gUnknown_83FF68C, ANIM_ATTACKER, 40, 1 + createvisualtask AnimTask_HelpingHandAttackerMovement, 5, + createsprite gHelpingHandClapSpriteTemplate, ANIM_ATTACKER, 40, 0 + createsprite gHelpingHandClapSpriteTemplate, ANIM_ATTACKER, 40, 1 delay 19 playsewithpan SE_W227, 0 createvisualtask AnimTask_ShakeMon2, 2, 2, 2, 0, 5, 1 @@ -3697,18 +3697,18 @@ Move_HELPING_HAND:: @ 81CBA5F Move_ASSIST:: @ 81CBAD2 loadspritegfx 10252 - createsprite gUnknown_83FF5E4, ANIM_ATTACKER, 50, 112, -16, 140, 128, 36 + createsprite gAssistPawprintSpriteTemplate, ANIM_ATTACKER, 50, 112, -16, 140, 128, 36 delay 2 - createsprite gUnknown_83FF5E4, ANIM_ATTACKER, 50, 208, 128, -16, 48, 36 + createsprite gAssistPawprintSpriteTemplate, ANIM_ATTACKER, 50, 208, 128, -16, 48, 36 playsewithpan SE_W010, 0 delay 2 - createsprite gUnknown_83FF5E4, ANIM_ATTACKER, 50, -16, 112, 256, -16, 36 + createsprite gAssistPawprintSpriteTemplate, ANIM_ATTACKER, 50, -16, 112, 256, -16, 36 playsewithpan SE_W010, 0 delay 2 - createsprite gUnknown_83FF5E4, ANIM_ATTACKER, 50, 108, 128, 84, -16, 36 + createsprite gAssistPawprintSpriteTemplate, ANIM_ATTACKER, 50, 108, 128, 84, -16, 36 playsewithpan SE_W010, 0 delay 2 - createsprite gUnknown_83FF5E4, ANIM_ATTACKER, 50, -16, 56, 256, 56, 36 + createsprite gAssistPawprintSpriteTemplate, ANIM_ATTACKER, 50, -16, 56, 256, 56, 36 playsewithpan SE_W010, 0 end @@ -3751,7 +3751,7 @@ Move_RECYCLE:: @ 81CBBFE monbg 0 setalpha 0, 16 delay 1 - createsprite gUnknown_83FF790, ANIM_ATTACKER, 2, + createsprite gRecycleSpriteTemplate, ANIM_ATTACKER, 2, loopsewithpan SE_W036, 192, 24, 3 waitforvisualfinish createvisualtask AnimTask_BlendMonInAndOut, 5, 0, 32767, 12, 2, 1 @@ -3834,24 +3834,24 @@ gUnknown_81CBD16:: @ 81CBD16 Move_YAWN:: @ 81CBE37 loadspritegfx 10242 - createvisualtask sub_80E1704, 2, 0 + createvisualtask AnimTask_DeepInhale, 2, 0 playsewithpan SE_W281, 192 waitforvisualfinish - createsprite gUnknown_83FF46C, ANIM_TARGET, 5, 2 + createsprite gYawnCloudSpriteTemplate, ANIM_TARGET, 5, 2 playsewithpan SE_W255, 192 delay 4 - createsprite gUnknown_83FF46C, ANIM_TARGET, 5, 1 + createsprite gYawnCloudSpriteTemplate, ANIM_TARGET, 5, 1 delay 4 - createsprite gUnknown_83FF46C, ANIM_TARGET, 5, 0 + createsprite gYawnCloudSpriteTemplate, ANIM_TARGET, 5, 0 waitforvisualfinish - createvisualtask sub_80E1704, 2, 1 + createvisualtask AnimTask_DeepInhale, 2, 1 playsewithpan SE_W281, 63 end Move_ENDEAVOR:: @ 81CBE7A loadspritegfx 10243 loadspritegfx 10135 - createvisualtask sub_80E1D5C, 2, 0, 2 + createvisualtask AnimTask_SquishAndSweatDroplets, 2, 0, 2 loopsewithpan SE_W039, 192, 24, 2 createvisualtask AnimTask_BlendMonInAndOut, 5, 0, 703, 12, 1, 2 delay 6 @@ -3976,7 +3976,7 @@ Move_LUSTER_PURGE:: @ 81CC0FB loadspritegfx 10135 fadetobg 3 waitbgfadeout - createvisualtask sub_80DE7B4, 5, + createvisualtask AnimTask_FadeScreenToWhite, 5, waitbgfadein monbg 0 setalpha 12, 8 @@ -4059,26 +4059,26 @@ Move_FEATHER_DANCE:: @ 81CC2A1 Move_TEETER_DANCE:: @ 81CC371 loadspritegfx 10072 loadspritegfx 10073 - createvisualtask sub_80E4160, 5, - createsprite gUnknown_83E38C8, ANIM_ATTACKER, 2, 0, 16, -2 + createvisualtask AnimTask_TeeterDanceMovement, 5, + createsprite gFastFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, -2 playsewithpan SE_W298, 192 delay 24 - createsprite gUnknown_83E38C8, ANIM_ATTACKER, 2, 0, 0, -2 + createsprite gFastFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, -2 playsewithpan SE_W298, 192 delay 24 - createsprite gUnknown_83E38C8, ANIM_ATTACKER, 2, 0, -16, -2 + createsprite gFastFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, -16, -2 playsewithpan SE_W298, 192 delay 24 - createsprite gUnknown_83E38C8, ANIM_ATTACKER, 2, 1, -8, -2 + createsprite gFastFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 1, -8, -2 playsewithpan SE_W298, 192 delay 24 - createsprite gUnknown_83E38C8, ANIM_ATTACKER, 2, 2, 8, -2 + createsprite gFastFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 2, 8, -2 playsewithpan SE_W298, 192 end Move_MUD_SPORT:: @ 81CC3DC loadspritegfx 10074 - createvisualtask sub_80A8338, 2, 0, 6 + createvisualtask AnimTask_Splash, 2, 0, 6 delay 24 createsprite gUnknown_83E7A94, ANIM_TARGET, 2, 0, -4, -16 createsprite gUnknown_83E7A94, ANIM_TARGET, 2, 0, 4, -12 @@ -4128,47 +4128,47 @@ Move_NEEDLE_ARM:: @ 81CC513 loadspritegfx 10135 loadspritegfx 10143 loopsewithpan SE_W030, 63, 2, 16 - createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 0, 0, -32, 16 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 0, -32, 16 delay 2 - createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 0, 22, -22, 16 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 22, -22, 16 delay 2 - createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 0, 30, 0, 16 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 30, 0, 16 delay 2 - createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 0, 20, 20, 16 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 20, 20, 16 delay 2 - createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 0, 0, 28, 16 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 0, 28, 16 delay 2 - createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 0, -19, 19, 16 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 0, -19, 19, 16 delay 2 - createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 0, -27, 0, 16 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 0, -27, 0, 16 delay 2 - createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 0, -18, -18, 16 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 0, -18, -18, 16 delay 2 - createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 0, 0, -25, 16 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 0, -25, 16 delay 2 - createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 0, 17, -17, 16 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 17, -17, 16 delay 2 - createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 0, 23, 0, 16 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 23, 0, 16 delay 2 - createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 0, 16, 16, 16 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 16, 16, 16 waitforvisualfinish createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 18, 1 createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 8, 1, 0 playsewithpan SE_W233B, 63 - createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 1, 0, -24, 10 - createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 1, 17, -17, 10 - createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 1, 24, 0, 10 - createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 1, 17, 17, 10 - createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 1, 0, 24, 10 - createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 1, -17, 17, 10 - createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 1, -24, 0, 10 - createsprite gUnknown_83E3100, ANIM_TARGET, 2, 1, 1, -17, -17, 10 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 1, 0, -24, 10 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 1, 17, -17, 10 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 1, 24, 0, 10 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 1, 17, 17, 10 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 1, 0, 24, 10 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 1, -17, 17, 10 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 1, -24, 0, 10 + createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 1, -17, -17, 10 end Move_SLACK_OFF:: @ 81CC6C3 loadspritegfx 10031 - createvisualtask sub_80E4540, 2, 0 + createvisualtask AnimTask_SlackOffSquish, 2, 0 playsewithpan SE_W281, 192 waitforvisualfinish call gUnknown_81D56C9 @@ -4206,17 +4206,17 @@ Move_AROMATHERAPY:: @ 81CC74B delay 1 monbg 0 delay 1 - createsprite gUnknown_83E3024, ANIM_ATTACKER, 0, 24, 16, 0, 2, 2, 0, 0 - createsprite gUnknown_83E3024, ANIM_ATTACKER, 66, 64, 24, 0, 3, 1, 1, 0 - createsprite gUnknown_83E303C, ANIM_ATTACKER, 0, 16, 24, 0, 2, 1, 0, 0 + createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 0, 24, 16, 0, 2, 2, 0, 0 + createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 66, 64, 24, 0, 3, 1, 1, 0 + createsprite gAromatherapyBigFlowerSpriteTemplate, ANIM_ATTACKER, 0, 16, 24, 0, 2, 1, 0, 0 delay 20 - createsprite gUnknown_83E3024, ANIM_ATTACKER, 66, 48, 12, 0, 4, 3, 1, 0 - createsprite gUnknown_83E3024, ANIM_ATTACKER, 0, 100, 16, 0, 3, 2, 0, 0 - createsprite gUnknown_83E3024, ANIM_ATTACKER, 0, 74, 24, 180, 3, 2, 0, 0 + createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 66, 48, 12, 0, 4, 3, 1, 0 + createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 0, 100, 16, 0, 3, 2, 0, 0 + createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 0, 74, 24, 180, 3, 2, 0, 0 delay 10 - createsprite gUnknown_83E3024, ANIM_ATTACKER, 66, 80, 30, 0, 4, 1, 1, 0 - createsprite gUnknown_83E3024, ANIM_ATTACKER, 0, 128, 12, 0, 3, 3, 0, 0 - createsprite gUnknown_83E303C, ANIM_ATTACKER, 0, 90, 16, 0, 2, 1, 0, 0 + createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 66, 80, 30, 0, 4, 1, 1, 0 + createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 0, 128, 12, 0, 3, 3, 0, 0 + createsprite gAromatherapyBigFlowerSpriteTemplate, ANIM_ATTACKER, 0, 90, 16, 0, 2, 1, 0, 0 waitforvisualfinish clearmonbg 0 delay 1 @@ -4226,13 +4226,13 @@ Move_AROMATHERAPY:: @ 81CC74B createvisualtask sub_80E2084, 2, 1 waitforvisualfinish playsewithpan SE_W234, 192 - createsprite gUnknown_83E340C, ANIM_ATTACKER, 16, -15, 0, 0, 0, 32, 60, 1 + createsprite gSparklingStarsSpriteTemplate, ANIM_ATTACKER, 16, -15, 0, 0, 0, 32, 60, 1 delay 8 - createsprite gUnknown_83E340C, ANIM_ATTACKER, 16, 12, -5, 0, 0, 32, 60, 1 + createsprite gSparklingStarsSpriteTemplate, ANIM_ATTACKER, 16, 12, -5, 0, 0, 32, 60, 1 waitforvisualfinish playsewithpan SE_REAPOKE, 192 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 43, 3, 10, 0, 13293 - createsprite gUnknown_83E40E0, ANIM_ATTACKER, 16, 0, 0, 0, 1 + createsprite gBlendThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 16, 0, 0, 0, 1 waitforvisualfinish end @@ -4242,7 +4242,7 @@ Move_FAKE_TEARS:: @ 81CC8AD loadspritegfx 10072 createvisualtask AnimTask_BlendParticle, 5, 10155, 0, 4, 4, 32108 waitforvisualfinish - createvisualtask sub_80E0558, 5, 0, 2, 1 + createvisualtask AnimTask_RockMonBackAndForth, 5, 0, 2, 1 loopsewithpan SE_W039, 192, 12, 4 delay 8 createsprite gUnknown_83E7998, ANIM_ATTACKER, 2, 0, 0 @@ -4267,10 +4267,10 @@ Move_AIR_CUTTER:: @ 81CC93D monbg 3 setalpha 12, 8 delay 0 - createvisualtask sub_80A76F0, 2, 32, -24, 1536, 2, 128 + createvisualtask AnimTask_AirCutterProjectile, 2, 32, -24, 1536, 2, 128 waitforvisualfinish playsewithpan SE_W015, 63 - createsprite gUnknown_83E32AC, ANIM_ATTACKER, 2, 40, -32, 0, 2 + createsprite gAirCutterSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 0, 2 delay 5 createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 createvisualtask AnimTask_ShakeMon2, 2, 3, 2, 0, 8, 1 @@ -4282,7 +4282,7 @@ Move_AIR_CUTTER:: @ 81CC93D Move_ODOR_SLEUTH:: @ 81CC99F monbg 1 - createvisualtask sub_80E3664, 5, + createvisualtask AnimTask_OdorSleuthMovement, 5, delay 24 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 3, 4 playsewithpan SE_W207, 192 @@ -4300,35 +4300,35 @@ Move_GRASS_WHISTLE:: @ 81CC9E9 loadspritegfx 10072 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, 13298 waitforvisualfinish - createvisualtask sub_80A65E8, 2, + createvisualtask AnimTask_MusicNotesRainbowBlend, 2, waitforvisualfinish panse_1B SE_W320, 192, 63, 2, 0 - createsprite gUnknown_83E3880, ANIM_TARGET, 2, 7, 1, 0 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 7, 1, 0 delay 5 - createsprite gUnknown_83E3880, ANIM_TARGET, 2, 6, 1, 0 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 6, 1, 0 delay 5 - createsprite gUnknown_83E3880, ANIM_TARGET, 2, 1, 1, 0 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 1, 1, 0 delay 5 - createsprite gUnknown_83E3880, ANIM_TARGET, 2, 2, 1, 0 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 2, 1, 0 delay 5 - createsprite gUnknown_83E3880, ANIM_TARGET, 2, 3, 1, 0 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 3, 1, 0 delay 4 - createsprite gUnknown_83E3880, ANIM_TARGET, 2, 2, 1, 0 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 2, 1, 0 delay 4 - createsprite gUnknown_83E3880, ANIM_TARGET, 2, 5, 1, 0 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 5, 1, 0 delay 4 - createsprite gUnknown_83E3880, ANIM_TARGET, 2, 6, 1, 0 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 6, 1, 0 delay 4 - createsprite gUnknown_83E3880, ANIM_TARGET, 2, 2, 1, 0 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 2, 1, 0 delay 4 - createsprite gUnknown_83E3880, ANIM_TARGET, 2, 2, 1, 0 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 2, 1, 0 delay 4 - createsprite gUnknown_83E3880, ANIM_TARGET, 2, 1, 1, 0 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 1, 1, 0 delay 4 - createsprite gUnknown_83E3880, ANIM_TARGET, 2, 5, 1, 0 + createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 5, 1, 0 delay 4 waitforvisualfinish - createvisualtask sub_80A66A0, 2, + createvisualtask AnimTask_MusicNotesClearRainbowBlend, 2, createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 4, 0, 13298 waitforvisualfinish end @@ -4337,8 +4337,8 @@ Move_TICKLE:: @ 81CCADC loadspritegfx 10218 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 0, 16, 0 waitforvisualfinish - createsprite gUnknown_83E42FC, ANIM_ATTACKER, 0, -16, -8 - createsprite gUnknown_83E42FC, ANIM_ATTACKER, 0, 16, -8 + createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, -16, -8 + createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, 16, -8 playsewithpan SE_W197, 192 waitforvisualfinish createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 16, 0, 0 @@ -4346,7 +4346,7 @@ Move_TICKLE:: @ 81CCADC delay 20 createvisualtask AnimTask_SwayMon, 3, 0, 6, 1280, 3, 0 delay 12 - createvisualtask sub_80E0558, 3, 1, 6, 2 + createvisualtask AnimTask_RockMonBackAndForth, 3, 1, 6, 2 loopsewithpan SE_W039, 63, 8, 8 waitforvisualfinish end @@ -4416,7 +4416,7 @@ Move_AERIAL_ACE:: @ 81CCC39 setalpha 12, 8 createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 24, 6, 1, 5 createvisualtask sub_80BAB98, 2, 0, 4, 7, 3 - createsprite gUnknown_83E3294, ANIM_ATTACKER, 2, 40, -32, 0 + createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 0 playsewithpan SE_W013B, 192 delay 5 createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 10, 1 @@ -4436,13 +4436,13 @@ Move_IRON_DEFENSE:: @ 81CCCA3 Move_BLOCK:: @ 81CCCCD loadspritegfx 10250 - createsprite gUnknown_83FF6EC, ANIM_TARGET, 66, + createsprite gBlockXSpriteTemplate, ANIM_TARGET, 66, playsewithpan SE_W207, 63 end Move_HOWL:: @ 81CCCDC loadspritegfx 10053 - createvisualtask sub_80E1704, 2, 0 + createvisualtask AnimTask_DeepInhale, 2, 0 delay 12 call gUnknown_81CDB06 createvisualtask sub_80DD06C, 2, 0, 3 @@ -4452,10 +4452,10 @@ Move_HOWL:: @ 81CCCDC Move_BULK_UP:: @ 81CCCFE loadspritegfx 10086 - createvisualtask sub_80A84B4, 2, + createvisualtask AnimTask_GrowAndShrink, 2, playsewithpan SE_W207, 192 waitforvisualfinish - createsprite gUnknown_83E3ED0, ANIM_ATTACKER, 2, + createsprite gBreathPuffSpriteTemplate, ANIM_ATTACKER, 2, loopsewithpan SE_W207, 192, 4, 2 waitforvisualfinish end @@ -4463,14 +4463,14 @@ Move_BULK_UP:: @ 81CCCFE Move_COVET:: @ 81CCD1C loadspritegfx 10210 loadspritegfx 10224 - createvisualtask sub_80E0558, 5, 0, 2, 0 - createsprite gUnknown_83E41E8, ANIM_ATTACKER, 3, 0, 20 + createvisualtask AnimTask_RockMonBackAndForth, 5, 0, 2, 0 + createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 0, 20 playsewithpan SE_W204, 192 delay 15 - createsprite gUnknown_83E41E8, ANIM_ATTACKER, 3, -20, 20 + createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, -20, 20 playsewithpan SE_W204, 192 delay 15 - createsprite gUnknown_83E41E8, ANIM_ATTACKER, 3, 20, 20 + createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 20, 20 playsewithpan SE_W204, 192 waitforvisualfinish createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 @@ -4544,13 +4544,13 @@ Move_CALM_MIND:: @ 81CCE97 waitforvisualfinish createvisualtask sub_80BB9B0, 5, 1 waitforvisualfinish - createsprite gUnknown_83E40C8, ANIM_ATTACKER, 40, 0, 0, 0, 0 + createsprite gThinRingShrinkingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0 playsewithpan SE_W048, 192 delay 14 - createsprite gUnknown_83E40C8, ANIM_ATTACKER, 40, 0, 0, 0, 0 + createsprite gThinRingShrinkingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0 playsewithpan SE_W048, 192 delay 14 - createsprite gUnknown_83E40C8, ANIM_ATTACKER, 40, 0, 0, 0, 0 + createsprite gThinRingShrinkingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0 playsewithpan SE_W048, 192 waitforvisualfinish createvisualtask sub_80BB9B0, 5, 0 @@ -4564,7 +4564,7 @@ Move_CALM_MIND:: @ 81CCE97 Move_LEAF_BLADE:: @ 81CCF17 loadspritegfx 10063 loadspritegfx 10285 - createvisualtask sub_80A39C0, 5, + createvisualtask AnimTask_LeafBlade, 5, delay 2 createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 playsewithpan SE_W015, 63 @@ -4649,43 +4649,43 @@ Move_HARDEN:: @ 81CD0AB Move_BELLY_DRUM:: @ 81CD0C0 loadspritegfx 10072 loadspritegfx 10193 - createvisualtask sub_80A65E8, 2, + createvisualtask AnimTask_MusicNotesRainbowBlend, 2, waitforvisualfinish call gUnknown_81CD18D - createsprite gUnknown_83E3914, ANIM_ATTACKER, 2, 0, 0, 0, 0 + createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 0 playsewithpan SE_W187, 192 delay 15 call gUnknown_81CD172 - createsprite gUnknown_83E3914, ANIM_ATTACKER, 2, 1, 1, 1, 0 + createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 1, 0 playsewithpan SE_W187, 192 delay 15 call gUnknown_81CD18D - createsprite gUnknown_83E3914, ANIM_ATTACKER, 2, 0, 3, 3, 128 + createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, 3, 3, 128 playsewithpan SE_W187, 192 delay 7 call gUnknown_81CD172 - createsprite gUnknown_83E3914, ANIM_ATTACKER, 2, 1, 2, 0, 128 + createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 128 playsewithpan SE_W187, 192 delay 7 call gUnknown_81CD18D - createsprite gUnknown_83E3914, ANIM_ATTACKER, 2, 0, 1, 1, 0 + createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 1, 0 playsewithpan SE_W187, 192 delay 7 call gUnknown_81CD172 - createsprite gUnknown_83E3914, ANIM_ATTACKER, 2, 1, 0, 3, 0 + createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 3, 0 playsewithpan SE_W187, 192 waitforvisualfinish - createvisualtask sub_80A66A0, 2, + createvisualtask AnimTask_MusicNotesClearRainbowBlend, 2, waitforvisualfinish end gUnknown_81CD172:: @ 81CD172 - createsprite gUnknown_83E38E0, ANIM_ATTACKER, 3, 0 + createsprite gBellyDrumHandSpriteTemplate, ANIM_ATTACKER, 3, 0 createvisualtask AnimTask_ShakeMon, 2, 0, 0, 8, 2, 1 return gUnknown_81CD18D:: @ 81CD18D - createsprite gUnknown_83E38E0, ANIM_ATTACKER, 3, 1 + createsprite gBellyDrumHandSpriteTemplate, ANIM_ATTACKER, 3, 1 createvisualtask AnimTask_ShakeMon, 2, 0, 0, 8, 2, 1 return @@ -4695,8 +4695,8 @@ Move_MIND_READER:: @ 81CD1A8 loadspritegfx 10191 monbg 4 playsewithpan SE_W109, 63 - createsprite gUnknown_83FEE5C, ANIM_ATTACKER, 5, 0, 0, 1, 0 - createsprite gUnknown_83FEE74, ANIM_ATTACKER, 5, + createsprite gOpeningEyeSpriteTemplate, ANIM_ATTACKER, 5, 0, 0, 1, 0 + createsprite gWhiteHaloSpriteTemplate, ANIM_ATTACKER, 5, delay 40 playsewithpan SE_W043, 63 createvisualtask sub_80B9BDC, 2, 1, 1, 2, 0, 10, 0 @@ -4706,26 +4706,26 @@ Move_MIND_READER:: @ 81CD1A8 end gUnknown_81CD1EF:: @ 81CD1EF - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 70, 0, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 40, 40, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 10, -60, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, -50, -40, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, -40, 40, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 50, -50, 6 - delay 2 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 50, -30, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 60, 10, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 0, 60, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 0, -40, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, -60, 20, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, -60, -30, 6 - delay 2 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, -50, 50, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, -60, 20, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, -40, -40, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 20, -60, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 50, -50, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 35, 40, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 70, 0, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 40, 40, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 10, -60, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, -50, -40, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, -40, 40, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 50, -50, 6 + delay 2 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 50, -30, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 60, 10, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0, 60, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0, -40, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, -60, 20, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, -60, -30, 6 + delay 2 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, -50, 50, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, -60, 20, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, -40, -40, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 20, -60, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 50, -50, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 35, 40, 6 delay 2 return @@ -4769,11 +4769,11 @@ Move_ICE_PUNCH:: @ 81CD2E0 Move_REST:: @ 81CD3CB playsewithpan SE_W173, 192 loadspritegfx 10228 - createsprite gUnknown_83E3500, ANIM_ATTACKER, 2, 4, -10, 16, 0, 0 + createsprite gSleepLetterZSpriteTemplate, ANIM_ATTACKER, 2, 4, -10, 16, 0, 0 delay 20 - createsprite gUnknown_83E3500, ANIM_ATTACKER, 2, 4, -10, 16, 0, 0 + createsprite gSleepLetterZSpriteTemplate, ANIM_ATTACKER, 2, 4, -10, 16, 0, 0 delay 20 - createsprite gUnknown_83E3500, ANIM_ATTACKER, 2, 4, -10, 16, 0, 0 + createsprite gSleepLetterZSpriteTemplate, ANIM_ATTACKER, 2, 4, -10, 16, 0, 0 waitforvisualfinish end @@ -5000,7 +5000,7 @@ Move_SCRATCH:: @ 81CD97A monbg 1 setalpha 12, 8 playsewithpan SE_W010, 63 - createsprite gUnknown_83FEE00, ANIM_ATTACKER, 2, 0, 0, 1, 0 + createsprite gScratchSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0 createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 waitforvisualfinish clearmonbg 1 @@ -5061,13 +5061,13 @@ Move_ROAR:: @ 81CDAC0 end gUnknown_81CDB06:: @ 81CDB06 - createsprite gUnknown_83FF5B4, ANIM_ATTACKER, 2, 24, -8, 0 - createsprite gUnknown_83FF5B4, ANIM_ATTACKER, 2, 24, 0, 2 - createsprite gUnknown_83FF5B4, ANIM_ATTACKER, 2, 24, 8, 1 + createsprite gRoarNoiseLineSpriteTemplate, ANIM_ATTACKER, 2, 24, -8, 0 + createsprite gRoarNoiseLineSpriteTemplate, ANIM_ATTACKER, 2, 24, 0, 2 + createsprite gRoarNoiseLineSpriteTemplate, ANIM_ATTACKER, 2, 24, 8, 1 delay 15 - createsprite gUnknown_83FF5B4, ANIM_ATTACKER, 2, 24, -8, 0 - createsprite gUnknown_83FF5B4, ANIM_ATTACKER, 2, 24, 0, 2 - createsprite gUnknown_83FF5B4, ANIM_ATTACKER, 2, 24, 8, 1 + createsprite gRoarNoiseLineSpriteTemplate, ANIM_ATTACKER, 2, 24, -8, 0 + createsprite gRoarNoiseLineSpriteTemplate, ANIM_ATTACKER, 2, 24, 0, 2 + createsprite gRoarNoiseLineSpriteTemplate, ANIM_ATTACKER, 2, 24, 8, 1 return Move_GROWL:: @ 81CDB57 @@ -5099,9 +5099,9 @@ gUnknown_81CDBB1:: @ 81CDBB1 createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 7, 0, 1 createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 7, 1 createsprite gUnknown_83E7B88, ANIM_ATTACKER, 2, 6, 1, 14, 0, 0 - createsprite gUnknown_83E3F64, ANIM_ATTACKER, 2, 0, 0, -42, -38, 24, 0, 0 - createsprite gUnknown_83E3F64, ANIM_ATTACKER, 2, 0, 0, 0, -42, 24, 0, 0 - createsprite gUnknown_83E3F64, ANIM_ATTACKER, 2, 0, 0, 42, -38, 24, 0, 0 + createsprite gSnoreZSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, -42, -38, 24, 0, 0 + createsprite gSnoreZSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0, -42, 24, 0, 0 + createsprite gSnoreZSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 42, -38, 24, 0, 0 return Move_LIGHT_SCREEN:: @ 81CDC28 @@ -5479,7 +5479,7 @@ gUnknown_81CE3FC:: @ 81CE3FC Move_WITHDRAW:: @ 81CE432 playsewithpan SE_W029, 192 - createvisualtask sub_80A70A0, 5, + createvisualtask AnimTask_Withdraw, 5, waitforvisualfinish end @@ -5540,55 +5540,55 @@ gUnknown_81CE521:: @ 81CE521 goto gUnknown_81CE51F gUnknown_81CE54B:: @ 81CE54B - createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, 40, 40, 16 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 40, 40, 16 delay 2 - createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, -40, -40, 16 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -40, -40, 16 delay 2 - createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, 0, 40, 16 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, 40, 16 delay 2 - createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, 0, -40, 16 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, -40, 16 delay 2 - createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, 40, -20, 16 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 40, -20, 16 delay 2 - createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, 40, 20, 16 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 40, 20, 16 delay 2 - createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, -40, -20, 16 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -40, -20, 16 delay 2 - createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, -40, 20, 16 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -40, 20, 16 delay 2 - createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, -20, 30, 16 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -20, 30, 16 delay 2 - createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, 20, -30, 16 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 20, -30, 16 delay 2 - createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, -20, -30, 16 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -20, -30, 16 delay 2 - createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, 20, 30, 16 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 20, 30, 16 delay 2 - createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, -40, 0, 16 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -40, 0, 16 delay 2 - createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, 40, 0, 16 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 40, 0, 16 delay 2 return gUnknown_81CE61E:: @ 81CE61E call gUnknown_81D5A07 panse_1B SE_W076, 192, 63, 2, 0 - createvisualtask sub_80A2500, 5, - createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 0 + createvisualtask AnimTask_CreateSmallSolarbeamOrbs, 5, + createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 0 delay 4 - createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 1 + createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 1 delay 4 createvisualtask sub_80BA7F8, 10, 4, 1, 0, 10, 1017 - createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 2 + createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 2 delay 4 createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 65, 1 - createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 3 + createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 3 delay 4 - createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 4 + createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 4 delay 4 - createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 5 + createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 5 delay 4 - createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 6 + createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 6 delay 4 call gUnknown_81CE6F0 call gUnknown_81CE6F0 @@ -5598,19 +5598,19 @@ gUnknown_81CE61E:: @ 81CE61E goto gUnknown_81CE51F gUnknown_81CE6F0:: @ 81CE6F0 - createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 0 + createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 0 delay 4 - createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 1 + createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 1 delay 4 - createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 2 + createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 2 delay 4 - createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 3 + createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 3 delay 4 - createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 4 + createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 4 delay 4 - createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 5 + createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 5 delay 4 - createsprite gUnknown_83E2A70, ANIM_TARGET, 3, 15, 0, 20, 6 + createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 6 delay 4 return @@ -5823,28 +5823,28 @@ Move_ABSORB:: @ 81CEBD5 gUnknown_81CEC44:: @ 81CEC44 playsewithpan SE_W152, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 delay 4 playsewithpan SE_W152, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 delay 4 playsewithpan SE_W152, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -5, 15, 16, 33 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 delay 4 playsewithpan SE_W152, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, -15, -16, 36 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36 delay 4 playsewithpan SE_W152, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 delay 4 playsewithpan SE_W152, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 delay 4 playsewithpan SE_W152, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -10, 20, 20, 39 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39 delay 4 playsewithpan SE_W152, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 5, -18, -20, 35 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -20, 35 delay 4 return @@ -5876,36 +5876,36 @@ Move_MEGA_DRAIN:: @ 81CECED gUnknown_81CED5C:: @ 81CED5C playsewithpan SE_W145C, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 5, -18, -20, 35 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -20, 35 delay 4 playsewithpan SE_W145C, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -10, 20, 20, 39 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39 delay 4 playsewithpan SE_W145C, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -5, 15, 16, 33 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 delay 4 playsewithpan SE_W145C, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, -15, -16, 36 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 delay 4 playsewithpan SE_W145C, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, -15, -16, 36 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36 delay 4 playsewithpan SE_W145C, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -5, 15, 16, 33 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 delay 4 playsewithpan SE_W145C, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -10, 20, 20, 39 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 delay 4 playsewithpan SE_W145C, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 5, -18, -20, 35 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -20, 35 delay 4 return @@ -5937,44 +5937,44 @@ Move_GIGA_DRAIN:: @ 81CEE7D gUnknown_81CEEEC:: @ 81CEEEC playsewithpan SE_W202, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 5, -18, -40, 35 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -10, 20, 20, 39 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -40, 35 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39 delay 4 playsewithpan SE_W202, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 28, 26 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -10, 20, 40, 39 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 28, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 40, 39 delay 4 playsewithpan SE_W202, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -5, 15, 16, 33 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -32, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -32, 26 delay 4 playsewithpan SE_W202, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, -15, -16, 36 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 delay 4 playsewithpan SE_W202, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -5, 15, 16, 33 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, -15, -16, 36 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 delay 4 playsewithpan SE_W202, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -5, 15, 16, 33 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -40, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -40, 26 delay 4 playsewithpan SE_W202, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -5, 15, 36, 33 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -10, 20, 20, 39 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 36, 33 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39 delay 4 playsewithpan SE_W202, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 5, -18, -20, 35 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -20, 35 delay 4 return @@ -6192,14 +6192,14 @@ Move_SPIKES:: @ 81CF503 monbg 3 playsewithpan SE_W026, 192 waitplaysewithpan SE_W030, 63, 28 - createsprite gUnknown_83FEEFC, ANIM_TARGET, 2, 20, 0, 0, 24, 30 + createsprite gSpikesSpriteTemplate, ANIM_TARGET, 2, 20, 0, 0, 24, 30 delay 10 playsewithpan SE_W026, 192 waitplaysewithpan SE_W030, 63, 28 - createsprite gUnknown_83FEEFC, ANIM_TARGET, 2, 20, 0, -24, 24, 30 + createsprite gSpikesSpriteTemplate, ANIM_TARGET, 2, 20, 0, -24, 24, 30 delay 10 waitplaysewithpan SE_W030, 63, 28 - createsprite gUnknown_83FEEFC, ANIM_TARGET, 2, 20, 0, 24, 24, 30 + createsprite gSpikesSpriteTemplate, ANIM_TARGET, 2, 20, 0, 24, 24, 30 waitforvisualfinish clearmonbg 3 end @@ -6694,19 +6694,19 @@ Move_DYNAMIC_PUNCH:: @ 81CFF92 waitsound playsewithpan SE_W120, 63 createvisualtask AnimTask_ShakeMon2, 5, 1, 5, 0, 28, 1 - createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 0, 0, 1, 1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 delay 6 playsewithpan SE_W120, 63 - createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 24, -24, 1, 1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 24, -24, 1, 1 delay 6 playsewithpan SE_W120, 63 - createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, -16, 16, 1, 1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -16, 16, 1, 1 delay 6 playsewithpan SE_W120, 63 - createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, -24, -12, 1, 1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, -12, 1, 1 delay 6 playsewithpan SE_W120, 63 - createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 16, 16, 1, 1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, 1, 1 waitforvisualfinish clearmonbg 3 blendoff @@ -6863,11 +6863,11 @@ Move_COTTON_SPORE:: @ 81D0395 end gUnknown_81D03B5:: @ 81D03B5 - createsprite gUnknown_83E2B64, ANIM_ATTACKER, 2, 0, -20, 85, 80, 0 + createsprite gSporeParticleSpriteTemplate, ANIM_ATTACKER, 2, 0, -20, 85, 80, 0 delay 12 - createsprite gUnknown_83E2B64, ANIM_ATTACKER, 2, 0, -10, 170, 80, 0 + createsprite gSporeParticleSpriteTemplate, ANIM_ATTACKER, 2, 0, -10, 170, 80, 0 delay 12 - createsprite gUnknown_83E2B64, ANIM_ATTACKER, 2, 0, -15, 0, 80, 0 + createsprite gSporeParticleSpriteTemplate, ANIM_ATTACKER, 2, 0, -15, 0, 80, 0 delay 12 return @@ -6875,7 +6875,7 @@ Move_SPORE:: @ 81D03EF loadspritegfx 10158 monbg 3 setalpha 12, 8 - createvisualtask sub_80A28C4, 2, + createvisualtask AnimTask_SporeDoubleBattle, 2, loopsewithpan SE_W077, 63, 16, 11 call gUnknown_81D041A call gUnknown_81D041A @@ -6887,11 +6887,11 @@ Move_SPORE:: @ 81D03EF end gUnknown_81D041A:: @ 81D041A - createsprite gUnknown_83E2B64, ANIM_TARGET, 2, 0, -20, 85, 80, 1 + createsprite gSporeParticleSpriteTemplate, ANIM_TARGET, 2, 0, -20, 85, 80, 1 delay 12 - createsprite gUnknown_83E2B64, ANIM_TARGET, 2, 0, -10, 170, 80, 1 + createsprite gSporeParticleSpriteTemplate, ANIM_TARGET, 2, 0, -10, 170, 80, 1 delay 12 - createsprite gUnknown_83E2B64, ANIM_TARGET, 2, 0, -15, 0, 80, 1 + createsprite gSporeParticleSpriteTemplate, ANIM_TARGET, 2, 0, -15, 0, 80, 1 delay 12 return @@ -6902,23 +6902,23 @@ Move_PETAL_DANCE:: @ 81D0454 setalpha 12, 8 playsewithpan SE_W080, 192 createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 12, 6, 6, 3 - createsprite gUnknown_83E2B94, ANIM_ATTACKER, 2, 0, -24, 8, 140 - createsprite gUnknown_83E2BAC, ANIM_ATTACKER, 2, 16, -24, 8, 100 - createsprite gUnknown_83E2BAC, ANIM_ATTACKER, 2, -16, -24, 8, 100 + createsprite gPetalDanceBigFlowerSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140 + createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 16, -24, 8, 100 + createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, -16, -24, 8, 100 delay 15 - createsprite gUnknown_83E2B94, ANIM_ATTACKER, 2, 0, -24, 8, 140 - createsprite gUnknown_83E2BAC, ANIM_ATTACKER, 2, 32, -24, 8, 100 - createsprite gUnknown_83E2BAC, ANIM_ATTACKER, 2, -32, -24, 8, 100 + createsprite gPetalDanceBigFlowerSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140 + createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 32, -24, 8, 100 + createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, -32, -24, 8, 100 delay 15 - createsprite gUnknown_83E2B94, ANIM_ATTACKER, 2, 0, -24, 8, 140 - createsprite gUnknown_83E2BAC, ANIM_ATTACKER, 2, 24, -24, 8, 100 - createsprite gUnknown_83E2BAC, ANIM_ATTACKER, 2, -24, -24, 8, 100 + createsprite gPetalDanceBigFlowerSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140 + createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 24, -24, 8, 100 + createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, -24, -24, 8, 100 delay 30 - createsprite gUnknown_83E2BAC, ANIM_ATTACKER, 2, 16, -24, 0, 100 - createsprite gUnknown_83E2BAC, ANIM_ATTACKER, 2, -16, -24, 0, 100 + createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 16, -24, 0, 100 + createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, -16, -24, 0, 100 delay 30 - createsprite gUnknown_83E2BAC, ANIM_ATTACKER, 2, 20, -16, 14, 80 - createsprite gUnknown_83E2BAC, ANIM_ATTACKER, 2, -20, -14, 16, 80 + createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 20, -16, 14, 80 + createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, -20, -14, 16, 80 waitforvisualfinish createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 5 delay 3 @@ -6941,29 +6941,29 @@ Move_RAZOR_LEAF:: @ 81D058C setalpha 12, 8 delay 1 loopsewithpan SE_W077, 192, 10, 5 - createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, -3, -2, 10 + createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -2, 10 delay 2 - createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, -1, -1, 15 + createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -1, -1, 15 delay 2 - createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, -4, -4, 7 + createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -4, -4, 7 delay 2 - createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, 3, -3, 11 + createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, 3, -3, 11 delay 2 - createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, -1, -6, 8 + createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -1, -6, 8 delay 2 - createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, 2, -1, 12 + createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, 2, -1, 12 delay 2 - createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, -3, -4, 13 + createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -4, 13 delay 2 - createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, 4, -5, 7 + createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, 4, -5, 7 delay 2 - createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, 2, -6, 11 + createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, 2, -6, 11 delay 2 - createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, -3, -5, 8 + createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -5, 8 delay 60 playsewithpan SE_W013B, 192 - createsprite gUnknown_83E2C50, ANIM_TARGET, 3, 20, -10, 20, 0, 22, 20, 1 - createsprite gUnknown_83E2C50, ANIM_TARGET, 3, 20, -10, 20, 0, 22, -20, 1 + createsprite gRazorLeafCutterSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 22, 20, 1 + createsprite gRazorLeafCutterSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 22, -20, 1 delay 20 playsewithpan SE_W013, 63 createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 @@ -7010,16 +7010,16 @@ Move_OCTAZOOKA:: @ 81D07BB loadspritegfx 10030 loadspritegfx 10017 playsewithpan SE_W025B, 192 - createsprite gUnknown_83E3674, ANIM_TARGET, 2, 20, 0, 0, 0, 20, 0 + createsprite gOctazookaBallSpriteTemplate, ANIM_TARGET, 2, 20, 0, 0, 0, 20, 0 waitforvisualfinish playsewithpan SE_W120, 63 - createsprite gUnknown_83E36A8, ANIM_TARGET, 2, 8, 8, 1, 0 + createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 2, 8, 8, 1, 0 delay 2 - createsprite gUnknown_83E36A8, ANIM_TARGET, 2, -8, -8, 1, 0 + createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 2, -8, -8, 1, 0 delay 2 - createsprite gUnknown_83E36A8, ANIM_TARGET, 2, 8, -8, 1, 0 + createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 2, 8, -8, 1, 0 delay 2 - createsprite gUnknown_83E36A8, ANIM_TARGET, 2, -8, 8, 1, 0 + createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 2, -8, 8, 1, 0 waitforvisualfinish end @@ -7099,7 +7099,7 @@ Move_LEER:: @ 81D09C8 monbgprio_28 0 setalpha 8, 8 playsewithpan SE_W043, 192 - createsprite gUnknown_83FEF30, ANIM_ATTACKER, 2, 24, -12 + createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 24, -12 createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, 0, 1 waitforvisualfinish delay 10 @@ -7139,44 +7139,44 @@ Move_DREAM_EATER:: @ 81D0A1F gUnknown_81D0A89:: @ 81D0A89 playsewithpan SE_W207, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 5, -18, -40, 35 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -10, 20, 20, 39 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -40, 35 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39 delay 4 playsewithpan SE_W207, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 28, 26 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -10, 20, 40, 39 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 28, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 40, 39 delay 4 playsewithpan SE_W207, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -5, 15, 16, 33 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -32, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -32, 26 delay 4 playsewithpan SE_W207, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, -15, -16, 36 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 delay 4 playsewithpan SE_W207, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -5, 15, 16, 33 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, -15, -16, 36 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 delay 4 playsewithpan SE_W207, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -5, 15, 16, 33 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -40, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -40, 26 delay 4 playsewithpan SE_W207, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -5, 15, 36, 33 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 10, -5, -8, 26 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, -10, 20, 20, 39 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 36, 33 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39 delay 4 playsewithpan SE_W207, 63 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gUnknown_83E2AE8, ANIM_ATTACKER, 3, 5, -18, -20, 35 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 + createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -20, 35 delay 4 return @@ -7438,22 +7438,22 @@ Move_EGG_BOMB:: @ 81D1203 loadspritegfx 10198 loadspritegfx 10175 playsewithpan SE_W039, 192 - createsprite gUnknown_83E3D00, ANIM_TARGET, 2, 10, 0, 0, 0, 25, -32 + createsprite gEggThrowSpriteTemplate, ANIM_TARGET, 2, 10, 0, 0, 0, 25, -32 waitforvisualfinish createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 16, 1 - createsprite gUnknown_83E3F94, ANIM_TARGET, 4, 6, 5, 1, 0 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 4, 6, 5, 1, 0 playsewithpan SE_W120, 63 delay 3 - createsprite gUnknown_83E3F94, ANIM_TARGET, 4, -16, -15, 1, 0 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 4, -16, -15, 1, 0 playsewithpan SE_W120, 63 delay 3 - createsprite gUnknown_83E3F94, ANIM_TARGET, 4, 16, -5, 1, 0 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 4, 16, -5, 1, 0 playsewithpan SE_W120, 63 delay 3 - createsprite gUnknown_83E3F94, ANIM_TARGET, 4, -12, 18, 1, 0 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 4, -12, 18, 1, 0 playsewithpan SE_W120, 63 delay 3 - createsprite gUnknown_83E3F94, ANIM_TARGET, 4, 0, 5, 1, 0 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 4, 0, 5, 1, 0 playsewithpan SE_W120, 63 delay 3 waitforvisualfinish @@ -7629,9 +7629,9 @@ gUnknown_81D15C2:: @ 81D15C2 gUnknown_81D15C4:: @ 81D15C4 loadspritegfx 10009 playsewithpan SE_W016, 192 - createsprite gUnknown_83E3DC8, ANIM_ATTACKER, 2, 32, 0, 16, 16, 0, 7, 40 - createsprite gUnknown_83E3DC8, ANIM_ATTACKER, 2, 32, 0, 16, 16, 85, 7, 40 - createsprite gUnknown_83E3DC8, ANIM_ATTACKER, 2, 32, 0, 16, 16, 170, 7, 40 + createsprite gRazorWindTornadoSpriteTemplate, ANIM_ATTACKER, 2, 32, 0, 16, 16, 0, 7, 40 + createsprite gRazorWindTornadoSpriteTemplate, ANIM_ATTACKER, 2, 32, 0, 16, 16, 85, 7, 40 + createsprite gRazorWindTornadoSpriteTemplate, ANIM_ATTACKER, 2, 32, 0, 16, 16, 170, 7, 40 waitforvisualfinish playsewithpan SE_W016B, 192 goto gUnknown_81D15C2 @@ -7666,7 +7666,7 @@ Move_DISABLE:: @ 81D169F playsewithpan SE_W197, 192 createsprite gSpriteTemplate_83BF480, ANIM_ATTACKER, 13, 24, -16 waitforvisualfinish - createvisualtask sub_80A7FB0, 5, + createvisualtask AnimTask_GrowAndGreyscale, 5, loopsewithpan SE_W020, 63, 15, 4 waitforvisualfinish delay 1 @@ -7693,19 +7693,19 @@ Move_RECOVER:: @ 81D16CD end gUnknown_81D170D:: @ 81D170D - createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, 40, -10, 13 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 40, -10, 13 delay 3 - createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, -35, -10, 13 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -35, -10, 13 delay 3 - createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, 15, -40, 13 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 15, -40, 13 delay 3 - createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, -10, -32, 13 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -10, -32, 13 delay 3 - createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, 25, -20, 13 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 25, -20, 13 delay 3 - createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, -40, -20, 13 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -40, -20, 13 delay 3 - createsprite gUnknown_83E2A58, ANIM_ATTACKER, 2, 5, -40, 13 + createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 5, -40, 13 delay 3 return @@ -7716,7 +7716,7 @@ Move_MIMIC:: @ 81D1777 panse_1B SE_W107, 63, 192, 253, 0 createvisualtask sub_80A2F0C, 5, 128, 24 delay 15 - createsprite gUnknown_83E2D54, ANIM_TARGET, 2, -12, 24 + createsprite gMimicOrbSpriteTemplate, ANIM_TARGET, 2, -12, 24 delay 10 setarg 7, 65535 waitforvisualfinish @@ -7730,12 +7730,12 @@ Move_MIMIC:: @ 81D1777 Move_CONSTRICT:: @ 81D17C1 loadspritegfx 10186 loopsewithpan SE_W010, 63, 6, 4 - createsprite gUnknown_83E2D0C, ANIM_TARGET, 4, 0, 16, 0, 2 + createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 4, 0, 16, 0, 2 delay 7 - createsprite gUnknown_83E2D0C, ANIM_TARGET, 3, 0, 0, 0, 2 - createsprite gUnknown_83E2D0C, ANIM_TARGET, 2, 0, 8, 1, 2 + createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 3, 0, 0, 0, 2 + createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 2, 0, 8, 1, 2 delay 7 - createsprite gUnknown_83E2D0C, ANIM_TARGET, 3, 0, -8, 1, 2 + createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 3, 0, -8, 1, 2 delay 8 createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 6, 1 delay 20 @@ -7800,15 +7800,15 @@ Move_SOFT_BOILED:: @ 81D18E9 monbg 2 playsewithpan SE_W039, 192 createvisualtask AnimTask_ShakeMon, 2, 0, 0, 2, 6, 1 - createsprite gUnknown_83E4028, ANIM_ATTACKER, 4, 0, 16, 0 - createsprite gUnknown_83E4028, ANIM_ATTACKER, 4, 0, 16, 1 + createsprite gSoftBoiledEggSpriteTemplate, ANIM_ATTACKER, 4, 0, 16, 0 + createsprite gSoftBoiledEggSpriteTemplate, ANIM_ATTACKER, 4, 0, 16, 1 delay 120 delay 7 playsewithpan SE_W030, 192 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 10, 0, 31500 - createsprite gUnknown_83E4094, ANIM_ATTACKER, 3, 31, 16, 0, 1 + createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 31, 16, 0, 1 delay 8 - createsprite gUnknown_83E4094, ANIM_ATTACKER, 3, 31, 16, 0, 1 + createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 31, 16, 0, 1 delay 60 setarg 7, 65535 waitforvisualfinish @@ -7823,24 +7823,24 @@ Move_HEAL_BELL:: @ 81D196B createvisualtask sub_80BA7F8, 10, 10, 0, 0, 10, 32767 waitforvisualfinish createvisualtask sub_80A96B4, 5, - createsprite gUnknown_83E41B0, ANIM_ATTACKER, 2, 0, -24, 0, 1 + createsprite gBellSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 0, 1 delay 12 - createsprite gUnknown_83E41D0, ANIM_ATTACKER, 40, 0, -24, 48, -18, 35, 0, 0 - createsprite gUnknown_83E41D0, ANIM_ATTACKER, 40, 0, -24, -48, 20, 30, 1, 1 - createsprite gUnknown_83E41D0, ANIM_ATTACKER, 40, 0, -24, -38, -29, 30, 2, 2 - createsprite gUnknown_83E41D0, ANIM_ATTACKER, 40, 0, -24, 36, 18, 30, 3, 3 + createsprite gHealBellMusicNoteSpriteTemplate, ANIM_ATTACKER, 40, 0, -24, 48, -18, 35, 0, 0 + createsprite gHealBellMusicNoteSpriteTemplate, ANIM_ATTACKER, 40, 0, -24, -48, 20, 30, 1, 1 + createsprite gHealBellMusicNoteSpriteTemplate, ANIM_ATTACKER, 40, 0, -24, -38, -29, 30, 2, 2 + createsprite gHealBellMusicNoteSpriteTemplate, ANIM_ATTACKER, 40, 0, -24, 36, 18, 30, 3, 3 call gUnknown_81D1B2F delay 33 - createsprite gUnknown_83E41D0, ANIM_ATTACKER, 40, 0, -24, 19, 26, 35, 4, 4 - createsprite gUnknown_83E41D0, ANIM_ATTACKER, 40, 0, -24, -34, -12, 30, 5, 5 - createsprite gUnknown_83E41D0, ANIM_ATTACKER, 40, 0, -24, 41, -20, 34, 6, 2 - createsprite gUnknown_83E41D0, ANIM_ATTACKER, 40, 0, -24, -15, 26, 32, 7, 0 + createsprite gHealBellMusicNoteSpriteTemplate, ANIM_ATTACKER, 40, 0, -24, 19, 26, 35, 4, 4 + createsprite gHealBellMusicNoteSpriteTemplate, ANIM_ATTACKER, 40, 0, -24, -34, -12, 30, 5, 5 + createsprite gHealBellMusicNoteSpriteTemplate, ANIM_ATTACKER, 40, 0, -24, 41, -20, 34, 6, 2 + createsprite gHealBellMusicNoteSpriteTemplate, ANIM_ATTACKER, 40, 0, -24, -15, 26, 32, 7, 0 call gUnknown_81D1B2F delay 33 - createsprite gUnknown_83E41D0, ANIM_ATTACKER, 40, 0, -24, -48, 18, 31, 0, 2 - createsprite gUnknown_83E41D0, ANIM_ATTACKER, 40, 0, -24, 48, -20, 30, 2, 5 - createsprite gUnknown_83E41D0, ANIM_ATTACKER, 40, 0, -24, 38, 29, 33, 4, 3 - createsprite gUnknown_83E41D0, ANIM_ATTACKER, 40, 0, -24, -36, -18, 30, 6, 1 + createsprite gHealBellMusicNoteSpriteTemplate, ANIM_ATTACKER, 40, 0, -24, -48, 18, 31, 0, 2 + createsprite gHealBellMusicNoteSpriteTemplate, ANIM_ATTACKER, 40, 0, -24, 48, -20, 30, 2, 5 + createsprite gHealBellMusicNoteSpriteTemplate, ANIM_ATTACKER, 40, 0, -24, 38, 29, 33, 4, 3 + createsprite gHealBellMusicNoteSpriteTemplate, ANIM_ATTACKER, 40, 0, -24, -36, -18, 30, 6, 1 call gUnknown_81D1B2F waitforvisualfinish createvisualtask sub_80A9760, 5, @@ -7850,28 +7850,28 @@ Move_HEAL_BELL:: @ 81D196B unloadspritegfx 10203 loadspritegfx 10049 playsewithpan SE_W234, 192 - createsprite gUnknown_83E340C, ANIM_ATTACKER, 16, -15, 0, 0, 0, 32, 60, 1 + createsprite gSparklingStarsSpriteTemplate, ANIM_ATTACKER, 16, -15, 0, 0, 0, 32, 60, 1 delay 8 - createsprite gUnknown_83E340C, ANIM_ATTACKER, 16, 12, -5, 0, 0, 32, 60, 1 + createsprite gSparklingStarsSpriteTemplate, ANIM_ATTACKER, 16, 12, -5, 0, 0, 32, 60, 1 waitforvisualfinish unloadspritegfx 10049 loadspritegfx 10203 playsewithpan SE_REAPOKE, 192 createvisualtask sub_80BA83C, 10, 4, 3, 10, 0, 31500 createvisualtask sub_80BA7F8, 10, 10, 3, 10, 0, 32767 - createsprite gUnknown_83E40E0, ANIM_ATTACKER, 16, 0, 0, 0, 1 + createsprite gBlendThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 16, 0, 0, 0, 1 end gUnknown_81D1B2F:: @ 81D1B2F createvisualtask sub_80BA83C, 10, 4, 3, 8, 0, 31500 createvisualtask sub_80BA7F8, 10, 10, 3, 2, 10, 32767 - createsprite gUnknown_83E4094, ANIM_ATTACKER, 40, 0, -24, 0, 1 + createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 40, 0, -24, 0, 1 playsewithpan SE_W215, 192 return Move_FAKE_OUT:: @ 81D1B65 playsewithpan SE_W260, 0 - createvisualtask sub_80A98B0, 5, + createvisualtask AnimTask_FakeOut, 5, waitforvisualfinish playsewithpan SE_W166, 63 createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 5, 1 @@ -7887,10 +7887,10 @@ Move_SCARY_FACE:: @ 81D1BA0 waitforvisualfinish delay 10 playsewithpan SE_W043, 192 - createvisualtask sub_80A9F10, 5, + createvisualtask AnimTask_ScaryFace, 5, delay 13 - createsprite gUnknown_83E42FC, ANIM_ATTACKER, 0, -16, -8 - createsprite gUnknown_83E42FC, ANIM_ATTACKER, 0, 16, -8 + createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, -16, -8 + createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, 16, -8 waitforvisualfinish createvisualtask sub_80ADAD8, 3, 20, 1, 0 playsewithpan SE_W081B, 63 @@ -7901,33 +7901,33 @@ Move_SCARY_FACE:: @ 81D1BA0 Move_SWEET_KISS:: @ 81D1C03 loadspritegfx 10216 loadspritegfx 10220 - createsprite gUnknown_83E4320, ANIM_TARGET, 2, 16, -48 + createsprite gAngelSpriteTemplate, ANIM_TARGET, 2, 16, -48 playsewithpan SE_W215, 63 delay 23 playsewithpan SE_W215, 63 delay 23 playsewithpan SE_W215, 63 waitforvisualfinish - createsprite gUnknown_83E4230, ANIM_TARGET, 3, 160, -30 + createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, 160, -30 playsewithpan SE_W213, 63 - createsprite gUnknown_83E4230, ANIM_TARGET, 3, -256, -42 - createsprite gUnknown_83E4230, ANIM_TARGET, 3, 128, -14 - createsprite gUnknown_83E4230, ANIM_TARGET, 3, 416, -38 - createsprite gUnknown_83E4230, ANIM_TARGET, 3, -128, -22 - createsprite gUnknown_83E4230, ANIM_TARGET, 3, -384, -31 + createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, -256, -42 + createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, 128, -14 + createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, 416, -38 + createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, -128, -22 + createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, -384, -31 end Move_LOVELY_KISS:: @ 81D1C6C loadspritegfx 10219 loadspritegfx 10221 - createsprite gUnknown_83E4368, ANIM_TARGET, 2, 0, -24 + createsprite gDevilSpriteTemplate, ANIM_TARGET, 2, 0, -24 playsewithpan SE_W060B, 63 waitforvisualfinish playsewithpan SE_W213, 63 - createsprite gUnknown_83E4338, ANIM_TARGET, 3, -256, -42 - createsprite gUnknown_83E4338, ANIM_TARGET, 3, 128, -14 - createsprite gUnknown_83E4338, ANIM_TARGET, 3, 416, -38 - createsprite gUnknown_83E4338, ANIM_TARGET, 3, -128, -22 + createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, -256, -42 + createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 128, -14 + createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 416, -38 + createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, -128, -22 end Move_FURY_SWIPES:: @ 81D1CB3 @@ -7935,41 +7935,41 @@ Move_FURY_SWIPES:: @ 81D1CB3 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 5, 5 delay 4 playsewithpan SE_W010, 63 - createsprite gUnknown_83E43B0, ANIM_TARGET, 2, 16, 0, 1 + createsprite gFurySwipesSpriteTemplate, ANIM_TARGET, 2, 16, 0, 1 createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 5, 1 delay 10 createsprite gHorizontalLungeSpriteTemplate, ANIM_TARGET, 2, 5, 5 delay 4 playsewithpan SE_W010, 63 - createsprite gUnknown_83E43B0, ANIM_TARGET, 2, -16, 0, 0 + createsprite gFurySwipesSpriteTemplate, ANIM_TARGET, 2, -16, 0, 0 createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 7, 1 end Move_INGRAIN:: @ 81D1D17 loadspritegfx 10223 loadspritegfx 10147 - createsprite gUnknown_83E2DC4, ANIM_ATTACKER, 2, 16, 26, -1, 2, 150 + createsprite gIngrainRootSpriteTemplate, ANIM_ATTACKER, 2, 16, 26, -1, 2, 150 playsewithpan SE_W010, 192 delay 10 - createsprite gUnknown_83E2DC4, ANIM_ATTACKER, 2, -32, 20, 1, 1, 140 + createsprite gIngrainRootSpriteTemplate, ANIM_ATTACKER, 2, -32, 20, 1, 1, 140 playsewithpan SE_W010, 192 delay 10 - createsprite gUnknown_83E2DC4, ANIM_ATTACKER, 2, 32, 22, 1, 0, 130 + createsprite gIngrainRootSpriteTemplate, ANIM_ATTACKER, 2, 32, 22, 1, 0, 130 playsewithpan SE_W010, 192 delay 10 - createsprite gUnknown_83E2DC4, ANIM_ATTACKER, 2, -16, 25, -1, 3, 120 + createsprite gIngrainRootSpriteTemplate, ANIM_ATTACKER, 2, -16, 25, -1, 3, 120 playsewithpan SE_W010, 192 delay 40 - createsprite gUnknown_83E2E04, ANIM_ATTACKER, 3, 32, 26, -1, 3, 30 + createsprite gIngrainOrbSpriteTemplate, ANIM_ATTACKER, 3, 32, 26, -1, 3, 30 delay 5 playsewithpan SE_W145C, 192 delay 5 - createsprite gUnknown_83E2E04, ANIM_ATTACKER, 3, -48, 20, 1, 2, 30 + createsprite gIngrainOrbSpriteTemplate, ANIM_ATTACKER, 3, -48, 20, 1, 2, 30 playsewithpan SE_W145C, 192 delay 5 playsewithpan SE_W145C, 192 delay 5 - createsprite gUnknown_83E2E04, ANIM_ATTACKER, 3, 48, 26, -2, 3, 18 + createsprite gIngrainOrbSpriteTemplate, ANIM_ATTACKER, 3, 48, 26, -2, 3, 18 playsewithpan SE_W145C, 192 delay 10 waitforvisualfinish @@ -7977,8 +7977,8 @@ Move_INGRAIN:: @ 81D1D17 Move_PRESENT:: @ 81D1DC8 loadspritegfx 10224 - createvisualtask sub_80DEAF0, 2, - createsprite gUnknown_83E2E88, ANIM_TARGET, 2, 0, -5, 10, 2, -1 + createvisualtask AnimTask_IsHealingMove, 2, + createsprite gPresentSpriteTemplate, ANIM_TARGET, 2, 0, -5, 10, 2, -1 playsewithpan SE_W039, 192 delay 14 playsewithpan SE_W145B, 192 @@ -7994,42 +7994,42 @@ Move_PRESENT:: @ 81D1DC8 gUnknown_81D1E0B:: @ 81D1E0B loadspritegfx 10198 playsewithpan SE_W120, 63 - createsprite gUnknown_83E3F94, ANIM_TARGET, 3, 0, 0, 1, 1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 delay 6 playsewithpan SE_W120, 63 - createsprite gUnknown_83E3F94, ANIM_TARGET, 3, 24, -24, 1, 1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 24, -24, 1, 1 delay 6 playsewithpan SE_W120, 63 - createsprite gUnknown_83E3F94, ANIM_TARGET, 3, -16, 16, 1, 1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, -16, 16, 1, 1 delay 6 playsewithpan SE_W120, 63 - createsprite gUnknown_83E3F94, ANIM_TARGET, 3, -24, -12, 1, 1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, -24, -12, 1, 1 delay 6 playsewithpan SE_W120, 63 - createsprite gUnknown_83E3F94, ANIM_TARGET, 3, 16, 16, 1, 1 + createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 16, 16, 1, 1 end gUnknown_81D1E76:: @ 81D1E76 loadspritegfx 10195 loadspritegfx 10031 playsewithpan SE_W234, 63 - createsprite gUnknown_83E2ED0, ANIM_TARGET, 4, -16, 32, -3, 1 + createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, -16, 32, -3, 1 delay 3 - createsprite gUnknown_83E2ED0, ANIM_TARGET, 4, 16, 32, -3, -1 + createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, 16, 32, -3, -1 delay 3 - createsprite gUnknown_83E2ED0, ANIM_TARGET, 4, 32, 32, -3, 1 + createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, 32, 32, -3, 1 delay 3 - createsprite gUnknown_83E2ED0, ANIM_TARGET, 4, -32, 32, -3, 1 + createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, -32, 32, -3, 1 delay 3 - createsprite gUnknown_83E2ED0, ANIM_TARGET, 4, 0, 32, -3, 1 + createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, 0, 32, -3, 1 delay 3 - createsprite gUnknown_83E2ED0, ANIM_TARGET, 4, -8, 32, -3, 1 + createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, -8, 32, -3, 1 delay 3 - createsprite gUnknown_83E2ED0, ANIM_TARGET, 4, -8, 32, -3, 1 + createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, -8, 32, -3, 1 delay 3 - createsprite gUnknown_83E2ED0, ANIM_TARGET, 4, 24, 32, -3, 1 + createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, 24, 32, -3, 1 delay 3 - createsprite gUnknown_83E2ED0, ANIM_TARGET, 4, -24, 32, -3, 1 + createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, -24, 32, -3, 1 waitforvisualfinish waitsound call gUnknown_81D5712 @@ -8039,28 +8039,28 @@ Move_BATON_PASS:: @ 81D1F1F loadspritegfx 10226 playsewithpan SE_W226, 192 createvisualtask sub_80B9BDC, 2, 31, 1, 2, 0, 11, 31455 - createsprite gUnknown_83FF150, ANIM_ATTACKER, 2, + createsprite gBatonPassPokeballSpriteTemplate, ANIM_ATTACKER, 2, end Move_PERISH_SONG:: @ 81D1F41 loadspritegfx 10206 - createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 0, 0, 0 - createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 1, 1, 16 - createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 2, 1, 32 - createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 3, 2, 48 - createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 4, 2, 64 - createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 5, 0, 80 - createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 6, 0, 96 - createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 7, 1, 112 - createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 8, 2, 128 - createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 9, 0, 144 - createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 10, 2, 160 - createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 11, 0, 176 - createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 12, 1, 192 - createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 13, 3, 208 - createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 14, 3, 224 - createsprite gUnknown_83E4484, ANIM_ATTACKER, 4, 15, 0, 240 - createsprite gUnknown_83E449C, ANIM_ATTACKER, 4, 15, 0, 0 + createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 0 + createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 1, 1, 16 + createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 2, 1, 32 + createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 3, 2, 48 + createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 4, 2, 64 + createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 5, 0, 80 + createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 6, 0, 96 + createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 7, 1, 112 + createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 8, 2, 128 + createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 9, 0, 144 + createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 10, 2, 160 + createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 11, 0, 176 + createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 12, 1, 192 + createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 13, 3, 208 + createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 14, 3, 224 + createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 15, 0, 240 + createsprite gPerishSongMusicNote2SpriteTemplate, ANIM_ATTACKER, 4, 15, 0, 0 delay 20 panse_1B SE_W195, 192, 63, 2, 0 delay 80 @@ -8082,26 +8082,26 @@ Move_SLEEP_TALK:: @ 81D20AA loadspritegfx 10228 createvisualtask AnimTask_SwayMon, 5, 0, 4, 4096, 2, 0 delay 20 - createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -1 + createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -1 playsewithpan SE_W173, 192 delay 6 - createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -1 + createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -1 delay 6 - createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -1 + createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -1 delay 20 - createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -5 + createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -5 playsewithpan SE_W173, 192 delay 6 - createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -5 + createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -5 delay 6 - createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -5 + createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -5 delay 20 - createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -3 + createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -3 playsewithpan SE_W173, 192 delay 6 - createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -3 + createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -3 delay 6 - createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -3 + createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -3 waitforvisualfinish end @@ -8112,13 +8112,13 @@ Move_HYPER_FANG:: @ 81D2165 delay 2 createvisualtask AnimTask_IsContest, 2, jumpargeq 7, 1, gUnknown_81D21C5 - createvisualtask sub_80DEAB4, 2, + createvisualtask AnimTask_IsTargetPlayerSide, 2, jumpargeq 7, 0, gUnknown_81D21B7 goto gUnknown_81D21BE gUnknown_81D2193:: @ 81D2193 waitbgfadeout - createsprite gUnknown_83FEFBC, ANIM_TARGET, 2, + createsprite gFangSpriteTemplate, ANIM_TARGET, 2, waitbgfadein createvisualtask AnimTask_ShakeMon, 3, 1, 0, 10, 10, 1 playsewithpan SE_W043, 63 @@ -8142,7 +8142,7 @@ gUnknown_81D21C5:: @ 81D21C5 Move_TRI_ATTACK:: @ 81D21CC loadspritegfx 10230 - createsprite gUnknown_83FF0D8, ANIM_TARGET, 2, 16, 0 + createsprite gTriAttackTriangleSpriteTemplate, ANIM_TARGET, 2, 16, 0 playsewithpan SE_W161, 192 delay 20 playsewithpan SE_W161, 192 @@ -8223,28 +8223,28 @@ Move_WILL_O_WISP:: @ 81D2340 Move_ENCORE:: @ 81D23FE loadspritegfx 10227 loadspritegfx 10247 - createvisualtask sub_80DEDD8, 2, + createvisualtask AnimTask_CreateSpotlight, 2, createvisualtask sub_80BAB38, 2, 248, 3, 0, 10, 0 waitforvisualfinish - createsprite gUnknown_83FF00C, ANIM_TARGET, 2, 0, -8 - createsprite gUnknown_83FF024, ANIM_ATTACKER, 2, -2, 0, 0, 0, 9 - createsprite gUnknown_83FF024, ANIM_ATTACKER, 2, 2, 0, 1, 0, 9 - createsprite gUnknown_83FF03C, ANIM_ATTACKER, 3, -2, 0, 0, 0, 9 - createsprite gUnknown_83FF03C, ANIM_ATTACKER, 3, 2, 0, 1, 0, 9 + createsprite gSpotlightSpriteTemplate, ANIM_TARGET, 2, 0, -8 + createsprite gClappingHandSpriteTemplate, ANIM_ATTACKER, 2, -2, 0, 0, 0, 9 + createsprite gClappingHandSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 1, 0, 9 + createsprite gClappingHand2SpriteTemplate, ANIM_ATTACKER, 3, -2, 0, 0, 0, 9 + createsprite gClappingHand2SpriteTemplate, ANIM_ATTACKER, 3, 2, 0, 1, 0, 9 delay 16 createvisualtask sub_80DD410, 5, 216, 63 createvisualtask AnimTask_SwayMon, 5, 1, 8, 1536, 5, 1 waitforvisualfinish createvisualtask sub_80BAB38, 2, 248, 3, 10, 0, 1 waitforvisualfinish - createvisualtask sub_80DEE78, 2, + createvisualtask AnimTask_RemoveSpotlight, 2, end Move_TRICK:: @ 81D24A5 loadspritegfx 10224 loadspritegfx 10207 - createsprite gUnknown_83E2F60, ANIM_ATTACKER, 2, -40, 80 - createsprite gUnknown_83E2F60, ANIM_ATTACKER, 2, -40, 208 + createsprite gTrickBagSpriteTemplate, ANIM_ATTACKER, 2, -40, 80 + createsprite gTrickBagSpriteTemplate, ANIM_ATTACKER, 2, -40, 208 delay 16 playsewithpan SE_W166, 0 createvisualtask sub_80A9A20, 3, @@ -8274,7 +8274,7 @@ Move_WISH:: @ 81D2523 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 10, 0 waitforvisualfinish panse_27 SE_W115, 63, 192, 253, 0 - createsprite gUnknown_83FF168, ANIM_ATTACKER, 40, + createsprite gWishStarSpriteTemplate, ANIM_ATTACKER, 40, waitforvisualfinish delay 60 loopsewithpan SE_W215, 192, 16, 3 @@ -8288,7 +8288,7 @@ Move_STOCKPILE:: @ 81D256B loadspritegfx 10235 playsewithpan SE_W025, 192 createvisualtask sub_80B9BDC, 2, 2, 8, 1, 0, 12, 32767 - createvisualtask sub_80DF848, 5, + createvisualtask AnimTask_StockpileDeformMon, 5, call gUnknown_81D25A9 call gUnknown_81D25A9 waitforvisualfinish @@ -8296,21 +8296,21 @@ Move_STOCKPILE:: @ 81D256B end gUnknown_81D25A9:: @ 81D25A9 - createsprite gUnknown_83E2ABC, ANIM_ATTACKER, 2, 55, 55, 13 + createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 55, 55, 13 delay 1 - createsprite gUnknown_83E2ABC, ANIM_ATTACKER, 2, -55, -55, 13 + createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -55, -55, 13 delay 1 - createsprite gUnknown_83E2ABC, ANIM_ATTACKER, 2, 0, 55, 13 + createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, 55, 13 delay 1 - createsprite gUnknown_83E2ABC, ANIM_ATTACKER, 2, 0, -55, 13 + createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, -55, 13 delay 1 - createsprite gUnknown_83E2ABC, ANIM_ATTACKER, 2, 55, -34, 13 + createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 55, -34, 13 delay 1 - createsprite gUnknown_83E2ABC, ANIM_ATTACKER, 2, 55, 34, 13 + createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 55, 34, 13 delay 1 - createsprite gUnknown_83E2ABC, ANIM_ATTACKER, 2, -55, -34, 13 + createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -55, -34, 13 delay 1 - createsprite gUnknown_83E2ABC, ANIM_ATTACKER, 2, -55, 34, 13 + createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -55, 34, 13 delay 1 return @@ -8318,19 +8318,19 @@ Move_SPIT_UP:: @ 81D2622 loadspritegfx 10237 loadspritegfx 10135 playsewithpan SE_W036, 192 - createvisualtask sub_80DF8A0, 5, + createvisualtask AnimTask_SpitUpDeformMon, 5, createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 8, 2 delay 45 playsewithpan SE_W255, 192 delay 3 - createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 0, 12 - createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 32, 12 - createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 64, 12 - createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 96, 12 - createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 128, 12 - createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 160, 12 - createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 192, 12 - createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 224, 12 + createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, 12 + createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 32, 12 + createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 64, 12 + createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 96, 12 + createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 128, 12 + createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 160, 12 + createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 192, 12 + createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 224, 12 delay 5 jumpifmoveturn 2, gUnknown_81D26EF jumpifmoveturn 3, gUnknown_81D2718 @@ -8347,28 +8347,28 @@ gUnknown_81D26B2:: @ 81D26B2 end gUnknown_81D26EF:: @ 81D26EF - createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 16 - createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 80 - createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 144 - createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 208 + createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 16 + createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 80 + createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 144 + createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 208 goto gUnknown_81D26B2 gUnknown_81D2718:: @ 81D2718 - createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 16 - createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 48 - createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 80 - createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 112 - createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 144 - createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 176 - createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 208 - createsprite gUnknown_83E42C8, ANIM_ATTACKER, 2, 240 + createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 16 + createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 48 + createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 80 + createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 112 + createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 144 + createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 176 + createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 208 + createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 240 goto gUnknown_81D26B2 Move_SWALLOW:: @ 81D2765 loadspritegfx 10236 loadspritegfx 10031 playsewithpan SE_W036, 192 - createvisualtask sub_80DF964, 5, + createvisualtask AnimTask_SwallowDeformMon, 5, createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 8, 2 delay 38 playsewithpan SE_W255, 192 @@ -8383,15 +8383,15 @@ gUnknown_81D27AF:: @ 81D27AF end gUnknown_81D27B6:: @ 81D27B6 - createsprite gUnknown_83FF1F8, ANIM_ATTACKER, 2, 0, -8 + createsprite gSwallowBlueOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, -8 delay 1 - createsprite gUnknown_83FF1F8, ANIM_ATTACKER, 2, -24, -8 + createsprite gSwallowBlueOrbSpriteTemplate, ANIM_ATTACKER, 2, -24, -8 delay 1 - createsprite gUnknown_83FF1F8, ANIM_ATTACKER, 2, 16, -8 + createsprite gSwallowBlueOrbSpriteTemplate, ANIM_ATTACKER, 2, 16, -8 delay 1 - createsprite gUnknown_83FF1F8, ANIM_ATTACKER, 2, -16, -8 + createsprite gSwallowBlueOrbSpriteTemplate, ANIM_ATTACKER, 2, -16, -8 delay 1 - createsprite gUnknown_83FF1F8, ANIM_ATTACKER, 2, 24, -8 + createsprite gSwallowBlueOrbSpriteTemplate, ANIM_ATTACKER, 2, 24, -8 delay 1 return @@ -8408,7 +8408,7 @@ Move_TRANSFORM:: @ 81D2811 monbg 0 playsewithpan SE_W100, 192 waitplaysewithpan SE_W107, 192, 48 - createvisualtask sub_80DF9BC, 2, 0 + createvisualtask AnimTask_TransformMon, 2, 0 waitforvisualfinish clearmonbg 0 end @@ -8416,7 +8416,7 @@ Move_TRANSFORM:: @ 81D2811 Move_MORNING_SUN:: @ 81D2829 loadspritegfx 10241 loadspritegfx 10031 - createvisualtask sub_80DFC50, 5, + createvisualtask AnimTask_MorningSunLightBeam, 5, delay 8 createvisualtask sub_80BA7F8, 10, 1921, 8, 0, 12, 32767 delay 14 @@ -8442,18 +8442,18 @@ Move_MORNING_SUN:: @ 81D2829 end gUnknown_81D28AF:: @ 81D28AF - createsprite gUnknown_83FF26C, ANIM_ATTACKER, 2, 30, 640 + createsprite gGreenStarSpriteTemplate, ANIM_ATTACKER, 2, 30, 640 delay 5 return Move_SWEET_SCENT:: @ 81D28BD loadspritegfx 10238 playsewithpan SE_W230, 192 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 100, 0, 100 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 100, 0, 100 delay 25 setpan 0 call gUnknown_81D2901 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 55, 0 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 55, 0 setpan 63 createvisualtask sub_80B9BDC, 2, 20, 1, 5, 5, 13, 22207 call gUnknown_81D2901 @@ -8461,27 +8461,27 @@ Move_SWEET_SCENT:: @ 81D28BD end gUnknown_81D2901:: @ 81D2901 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 70, 1, 64 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 70, 1, 64 delay 2 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 60, 0, 64 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 60, 0, 64 delay 5 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 80, 1, 64 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 80, 1, 64 delay 2 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 58, 0, 120 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 58, 0, 120 delay 2 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 100, 0, 120 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 100, 0, 120 delay 2 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 90, 0, 64 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 90, 0, 64 delay 2 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 48, 0, 64 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 48, 0, 64 delay 2 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 95, 1, 80 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 95, 1, 80 delay 2 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 100, 0, 120 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 100, 0, 120 delay 2 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 75, 1, 64 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 75, 1, 64 delay 2 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 85, 0, 120 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 85, 0, 120 delay 2 return @@ -8531,8 +8531,8 @@ Move_HYPER_BEAM:: @ 81D29A7 end gUnknown_81D2AD8:: @ 81D2AD8 - createsprite gUnknown_83E2B00, ANIM_TARGET, 2, - createsprite gUnknown_83E2B00, ANIM_TARGET, 2, + createsprite gHyperBeamOrbSpriteTemplate, ANIM_TARGET, 2, + createsprite gHyperBeamOrbSpriteTemplate, ANIM_TARGET, 2, delay 1 return @@ -8540,10 +8540,10 @@ Move_FLATTER:: @ 81D2AE9 loadspritegfx 10227 loadspritegfx 10240 createvisualtask sub_80DD410, 5, 216, 63 - createvisualtask sub_80DEDD8, 2, + createvisualtask AnimTask_CreateSpotlight, 2, createvisualtask sub_80BAB38, 2, 248, 3, 0, 10, 0 waitforvisualfinish - createsprite gUnknown_83FF3A0, ANIM_TARGET, 2, 0, -8, 80 + createsprite gFlatterSpotlightSpriteTemplate, ANIM_TARGET, 2, 0, -8, 80 delay 0 createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 5, 2, 1 delay 10 @@ -8574,12 +8574,12 @@ Move_FLATTER:: @ 81D2AE9 waitforvisualfinish createvisualtask sub_80BAB38, 2, 248, 3, 10, 0, 1 waitforvisualfinish - createvisualtask sub_80DEE78, 2, + createvisualtask AnimTask_RemoveSpotlight, 2, end gUnknown_81D2BD2:: @ 81D2BD2 - createsprite gUnknown_83FF388, ANIM_ATTACKER, 40, 0 - createsprite gUnknown_83FF388, ANIM_ATTACKER, 40, 1 + createsprite gFlatterConfettiSpriteTemplate, ANIM_ATTACKER, 40, 0 + createsprite gFlatterConfettiSpriteTemplate, ANIM_ATTACKER, 40, 1 return Move_ROLE_PLAY:: @ 81D2BE5 @@ -8589,7 +8589,7 @@ Move_ROLE_PLAY:: @ 81D2BE5 waitforvisualfinish playsewithpan SE_W161, 192 waitplaysewithpan SE_W197, 192, 30 - createvisualtask sub_80E0FB8, 2, + createvisualtask AnimTask_RolePlaySilhouette, 2, waitforvisualfinish clearmonbg 2 createvisualtask sub_80BA7F8, 10, 4, 2, 16, 0, 32767 @@ -8608,7 +8608,7 @@ Move_REFRESH:: @ 81D2C42 waitforvisualfinish playsewithpan SE_REAPOKE, 192 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 10, 0, 31500 - createsprite gUnknown_83E4094, ANIM_ATTACKER, 3, 0, 0, 0, 0 + createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0 end Move_BLAZE_KICK:: @ 81D2C85 @@ -8645,7 +8645,7 @@ gUnknown_81D2D1F:: @ 81D2D1F createvisualtask sub_80DD334, 5, createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 8, 0, 1023 createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 5, 0, 0 - createsprite gUnknown_83E40F8, ANIM_ATTACKER, 0, 45, 0, 0, 0, 0, 0, 1 + createsprite gHyperVoiceRingSpriteTemplate, ANIM_ATTACKER, 0, 45, 0, 0, 0, 0, 0, 1 createvisualtask AnimTask_ShakeMon2, 2, 1, 1, 0, 6, 1 createvisualtask AnimTask_ShakeMon2, 2, 3, 1, 0, 6, 1 createvisualtask sub_80BA47C, 2, 1, 0, 6, 1 @@ -8736,26 +8736,26 @@ Move_MUDDY_WATER:: @ 81D2F28 Move_BULLET_SEED:: @ 81D2F3A loadspritegfx 10006 - createsprite gUnknown_83E3D94, ANIM_TARGET, 2, 20, 0 + createsprite gBulletSeedSpriteTemplate, ANIM_TARGET, 2, 20, 0 delay 5 - createsprite gUnknown_83E3D94, ANIM_TARGET, 2, 20, 0 + createsprite gBulletSeedSpriteTemplate, ANIM_TARGET, 2, 20, 0 delay 5 - createsprite gUnknown_83E3D94, ANIM_TARGET, 2, 20, 0 + createsprite gBulletSeedSpriteTemplate, ANIM_TARGET, 2, 20, 0 delay 5 createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 30, 1 - createsprite gUnknown_83E3D94, ANIM_TARGET, 2, 20, 0 + createsprite gBulletSeedSpriteTemplate, ANIM_TARGET, 2, 20, 0 delay 5 - createsprite gUnknown_83E3D94, ANIM_TARGET, 2, 20, 0 + createsprite gBulletSeedSpriteTemplate, ANIM_TARGET, 2, 20, 0 delay 5 - createsprite gUnknown_83E3D94, ANIM_TARGET, 2, 20, 0 + createsprite gBulletSeedSpriteTemplate, ANIM_TARGET, 2, 20, 0 delay 5 - createsprite gUnknown_83E3D94, ANIM_TARGET, 2, 20, 0 + createsprite gBulletSeedSpriteTemplate, ANIM_TARGET, 2, 20, 0 delay 5 - createsprite gUnknown_83E3D94, ANIM_TARGET, 2, 20, 0 + createsprite gBulletSeedSpriteTemplate, ANIM_TARGET, 2, 20, 0 delay 5 - createsprite gUnknown_83E3D94, ANIM_TARGET, 2, 20, 0 + createsprite gBulletSeedSpriteTemplate, ANIM_TARGET, 2, 20, 0 delay 5 - createsprite gUnknown_83E3D94, ANIM_TARGET, 2, 20, 0 + createsprite gBulletSeedSpriteTemplate, ANIM_TARGET, 2, 20, 0 waitforvisualfinish end @@ -8861,12 +8861,12 @@ Move_METEOR_MASH:: @ 81D32D6 fadetobg 16 waitbgfadein waitforvisualfinish - createsprite gUnknown_83FF6BC, ANIM_TARGET, 3, -48, -64, 72, 32, 30 + createsprite gMeteorMashStarSpriteTemplate, ANIM_TARGET, 3, -48, -64, 72, 32, 30 delay 10 - createsprite gUnknown_83FF6BC, ANIM_TARGET, 3, -112, -64, 8, 32, 30 + createsprite gMeteorMashStarSpriteTemplate, ANIM_TARGET, 3, -112, -64, 8, 32, 30 delay 40 createsprite gUnknown_83E678C, ANIM_TARGET, 3, 0, 0, 0, 30 - createsprite gUnknown_83FF6BC, ANIM_TARGET, 3, -80, -64, 40, 32, 30 + createsprite gMeteorMashStarSpriteTemplate, ANIM_TARGET, 3, -80, -64, 40, 32, 30 delay 20 playsewithpan SE_W233B, 63 createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 @@ -8911,7 +8911,7 @@ Move_POISON_FANG:: @ 81D33F4 loadspritegfx 10192 loadspritegfx 10150 playsewithpan SE_W044, 63 - createsprite gUnknown_83FEFBC, ANIM_TARGET, 2, + createsprite gFangSpriteTemplate, ANIM_TARGET, 2, delay 10 createvisualtask AnimTask_ShakeMon, 3, 1, 3, 0, 10, 1 waitforvisualfinish @@ -8922,7 +8922,7 @@ Move_POISON_FANG:: @ 81D33F4 Move_SUBSTITUTE:: @ 81D3433 playsewithpan SE_W213, 192 - createvisualtask sub_80E3294, 2, + createvisualtask AnimTask_MonToSubstitute, 2, end Move_FRENZY_PLANT:: @ 81D343F @@ -8933,31 +8933,31 @@ Move_FRENZY_PLANT:: @ 81D343F setalpha 12, 8 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 2, 0, 5, 0 waitforvisualfinish - createsprite gUnknown_83E2DDC, ANIM_ATTACKER, 2, 10, 8, 2, 0, 0, 100 + createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 10, 8, 2, 0, 0, 100 playsewithpan SE_W010, 192 delay 5 - createsprite gUnknown_83E2DDC, ANIM_ATTACKER, 2, 20, -8, -2, 0, 1, 95 + createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, -2, 0, 1, 95 playsewithpan SE_W010, 213 delay 5 - createsprite gUnknown_83E2DDC, ANIM_ATTACKER, 2, 30, 8, -4, 0, 0, 90 + createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 30, 8, -4, 0, 0, 90 playsewithpan SE_W010, 234 delay 5 - createsprite gUnknown_83E2DDC, ANIM_ATTACKER, 2, 40, -8, 4, 0, 1, 85 + createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 40, -8, 4, 0, 1, 85 playsewithpan SE_W010, 0 delay 5 - createsprite gUnknown_83E2DDC, ANIM_ATTACKER, 2, 50, 8, 0, 0, 0, 85 + createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 50, 8, 0, 0, 0, 85 playsewithpan SE_W010, 21 delay 5 - createsprite gUnknown_83E2DDC, ANIM_ATTACKER, 2, 60, -8, -2, 0, 1, 85 + createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 60, -8, -2, 0, 1, 85 playsewithpan SE_W010, 42 delay 5 - createsprite gUnknown_83E2DDC, ANIM_ATTACKER, 2, 75, 8, 0, 0, 0, 85 + createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 75, 8, 0, 0, 0, 85 playsewithpan SE_W010, 63 delay 5 - createsprite gUnknown_83E2DDC, ANIM_ATTACKER, 2, 85, 16, 6, 0, 3, 80 + createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 85, 16, 6, 0, 3, 80 playsewithpan SE_W010, 63 delay 5 - createsprite gUnknown_83E2DDC, ANIM_ATTACKER, 2, 85, -16, -6, 0, 2, 75 + createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 85, -16, -6, 0, 2, 75 playsewithpan SE_W010, 63 delay 5 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -10, 1, 3 @@ -9002,7 +9002,7 @@ Move_METAL_SOUND:: @ 81D35E3 gUnknown_81D3616:: @ 81D3616 panse_1B SE_W103, 192, 63, 2, 0 - createsprite gUnknown_83E3CD0, ANIM_TARGET, 2, 16, 0, 0, 0, 30, 0 + createsprite gMetalSoundSpriteTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 30, 0 delay 2 return @@ -9019,7 +9019,7 @@ gUnknown_81D363A:: @ 81D363A delay 1 createvisualtask AnimTask_IsContest, 2, jumpargeq 7, 1, gUnknown_81D36F3 - createvisualtask sub_80DEAB4, 2, + createvisualtask AnimTask_IsTargetPlayerSide, 2, jumpargeq 7, 0, gUnknown_81D36E5 jumpargeq 7, 1, gUnknown_81D36EC @@ -9064,7 +9064,7 @@ Move_RETURN:: @ 81D36FA loadspritegfx 10135 monbg 3 setalpha 12, 8 - createvisualtask sub_80E38D8, 2, + createvisualtask AnimTask_GetReturnPowerLevel, 2, delay 2 jumpargeq 7, 0, gUnknown_81D3730 jumpargeq 7, 1, gUnknown_81D3782 @@ -9215,9 +9215,9 @@ Move_COSMIC_POWER:: @ 81D3B89 waitbgfadein delay 70 createvisualtask sub_80DD3DC, 5, 221, -64 - createsprite gUnknown_83E33F4, ANIM_ATTACKER, 2, -15, 0, 0, 0, 32, 60 + createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, -15, 0, 0, 0, 32, 60 delay 8 - createsprite gUnknown_83E33F4, ANIM_ATTACKER, 2, 12, -5, 0, 0, 32, 60 + createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 12, -5, 0, 0, 32, 60 delay 40 createvisualtask sub_80BB7DC, 2, 0, 15, 0, 0 waitforvisualfinish @@ -9324,29 +9324,29 @@ gUnknown_81D3F7E:: @ 81D3F7E delay 0 createvisualtask sub_80BA7F8, 10, 1, 0, 4, 4, 0 waitbgfadein - createsprite gUnknown_83E30A8, ANIM_TARGET, 66, -32, 16, 0, 6, 2, 3, 1 - createsprite gUnknown_83E30A8, ANIM_TARGET, 66, -8, 18, 64, 3, 2, 2, 1 - createsprite gUnknown_83E30A8, ANIM_ATTACKER, 120, -24, 18, 90, 5, 1, 2, 1 - createsprite gUnknown_83E30A8, ANIM_ATTACKER, 120, -40, 14, 128, 4, 1, 2, 1 + createsprite gSilverWindBigSparkSpriteTemplate, ANIM_TARGET, 66, -32, 16, 0, 6, 2, 3, 1 + createsprite gSilverWindBigSparkSpriteTemplate, ANIM_TARGET, 66, -8, 18, 64, 3, 2, 2, 1 + createsprite gSilverWindBigSparkSpriteTemplate, ANIM_ATTACKER, 120, -24, 18, 90, 5, 1, 2, 1 + createsprite gSilverWindBigSparkSpriteTemplate, ANIM_ATTACKER, 120, -40, 14, 128, 4, 1, 2, 1 delay 0 - createsprite gUnknown_83E30C0, ANIM_TARGET, 66, -32, 16, 0, 6, 2, 3, 1 - createsprite gUnknown_83E30C0, ANIM_TARGET, 66, -8, 18, 64, 3, 2, 2, 1 - createsprite gUnknown_83E30C0, ANIM_ATTACKER, 120, -24, 18, 90, 5, 1, 2, 1 - createsprite gUnknown_83E30C0, ANIM_ATTACKER, 120, -40, 14, 128, 4, 1, 2, 1 + createsprite gSilverWindMediumSparkSpriteTemplate, ANIM_TARGET, 66, -32, 16, 0, 6, 2, 3, 1 + createsprite gSilverWindMediumSparkSpriteTemplate, ANIM_TARGET, 66, -8, 18, 64, 3, 2, 2, 1 + createsprite gSilverWindMediumSparkSpriteTemplate, ANIM_ATTACKER, 120, -24, 18, 90, 5, 1, 2, 1 + createsprite gSilverWindMediumSparkSpriteTemplate, ANIM_ATTACKER, 120, -40, 14, 128, 4, 1, 2, 1 delay 0 - createsprite gUnknown_83E30D8, ANIM_TARGET, 66, -32, 16, 0, 6, 2, 3, 1 - createsprite gUnknown_83E30D8, ANIM_TARGET, 66, -8, 18, 64, 3, 2, 2, 1 - createsprite gUnknown_83E30D8, ANIM_ATTACKER, 120, -24, 18, 90, 5, 1, 2, 1 - createsprite gUnknown_83E30D8, ANIM_ATTACKER, 120, -40, 14, 128, 4, 1, 2, 1 + createsprite gSilverWindSmallSparkSpriteTemplate, ANIM_TARGET, 66, -32, 16, 0, 6, 2, 3, 1 + createsprite gSilverWindSmallSparkSpriteTemplate, ANIM_TARGET, 66, -8, 18, 64, 3, 2, 2, 1 + createsprite gSilverWindSmallSparkSpriteTemplate, ANIM_ATTACKER, 120, -24, 18, 90, 5, 1, 2, 1 + createsprite gSilverWindSmallSparkSpriteTemplate, ANIM_ATTACKER, 120, -40, 14, 128, 4, 1, 2, 1 delay 6 - createsprite gUnknown_83E30A8, ANIM_TARGET, 66, -4, 16, 0, 6, 1, 2, 1 - createsprite gUnknown_83E30A8, ANIM_TARGET, 66, -16, 12, 192, 5, 2, 3, 1 + createsprite gSilverWindBigSparkSpriteTemplate, ANIM_TARGET, 66, -4, 16, 0, 6, 1, 2, 1 + createsprite gSilverWindBigSparkSpriteTemplate, ANIM_TARGET, 66, -16, 12, 192, 5, 2, 3, 1 delay 0 - createsprite gUnknown_83E30C0, ANIM_TARGET, 66, -4, 16, 0, 6, 1, 2, 1 - createsprite gUnknown_83E30C0, ANIM_TARGET, 66, -16, 12, 192, 5, 2, 3, 1 + createsprite gSilverWindMediumSparkSpriteTemplate, ANIM_TARGET, 66, -4, 16, 0, 6, 1, 2, 1 + createsprite gSilverWindMediumSparkSpriteTemplate, ANIM_TARGET, 66, -16, 12, 192, 5, 2, 3, 1 delay 0 - createsprite gUnknown_83E30D8, ANIM_TARGET, 66, -4, 16, 0, 6, 1, 2, 1 - createsprite gUnknown_83E30D8, ANIM_TARGET, 66, -16, 12, 192, 5, 2, 3, 1 + createsprite gSilverWindSmallSparkSpriteTemplate, ANIM_TARGET, 66, -4, 16, 0, 6, 1, 2, 1 + createsprite gSilverWindSmallSparkSpriteTemplate, ANIM_TARGET, 66, -16, 12, 192, 5, 2, 3, 1 waitforvisualfinish playsewithpan SE_W016B, 63 clearmonbg 3 @@ -9672,13 +9672,13 @@ Move_WATER_PULSE:: @ 81D48A6 playsewithpan SE_W145C, 63 waitforvisualfinish playsewithpan SE_W202, 192 - createsprite gUnknown_83E3CE8, ANIM_TARGET, 2, 0, 0, 40, 15 + createsprite gWaterPulseRingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 40, 15 delay 5 playsewithpan SE_W202, 192 - createsprite gUnknown_83E3CE8, ANIM_TARGET, 2, 0, 0, 40, 15 + createsprite gWaterPulseRingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 40, 15 delay 5 playsewithpan SE_W202, 192 - createsprite gUnknown_83E3CE8, ANIM_TARGET, 2, 0, 0, 40, 15 + createsprite gWaterPulseRingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 40, 15 delay 13 createvisualtask AnimTask_ShakeMon, 2, 1, 0, 8, 18, 1 waitforvisualfinish @@ -9692,7 +9692,7 @@ Move_PSYCHO_BOOST:: @ 81D499B monbg 2 fadetobg 3 waitbgfadeout - createvisualtask sub_80DE7B4, 5, + createvisualtask AnimTask_FadeScreenToWhite, 5, waitbgfadein delay 6 createvisualtask sub_80B9BDC, 2, 1, 2, 8, 0, 10, 0 @@ -9720,7 +9720,7 @@ Move_KNOCK_OFF:: @ 81D4A0F createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6 delay 4 playsewithpan SE_W233, 63 - createsprite gUnknown_83FF764, ANIM_TARGET, 2, -16, -16 + createsprite gKnockOffStrikeSpriteTemplate, ANIM_TARGET, 2, -16, -16 delay 8 createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 5, 1, 32767, 10, 0, 0 createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 2 @@ -9757,7 +9757,7 @@ Move_DOOM_DESIRE:: @ 81D4A9F createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 16, 32767 waitforvisualfinish delay 10 - createvisualtask sub_80E017C, 5, + createvisualtask AnimTask_DoomDesireLightBeam, 5, delay 5 playsewithpan SE_W109, 192 delay 10 @@ -9767,19 +9767,19 @@ Move_DOOM_DESIRE:: @ 81D4A9F delay 23 createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 10, 0, 20, 1 playsewithpan SE_W120, 63 - createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 0, 0, 1, 1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 delay 6 playsewithpan SE_W120, 63 - createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 24, -24, 1, 1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 24, -24, 1, 1 delay 6 playsewithpan SE_W120, 63 - createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, -16, 16, 1, 1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -16, 16, 1, 1 delay 6 playsewithpan SE_W120, 63 - createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, -24, -12, 1, 1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, -12, 1, 1 delay 6 playsewithpan SE_W120, 63 - createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 16, 16, 1, 1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, 1, 1 waitforvisualfinish createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 16, 0, 32767 waitforvisualfinish @@ -9849,26 +9849,26 @@ Move_TWISTER:: @ 81D4D0E monbg 3 monbgprio_28 1 playsewithpan SE_W239, 63 - createsprite gUnknown_83E2C20, ANIM_TARGET, 2, 120, 70, 5, 70, 30 + createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 120, 70, 5, 70, 30 delay 1 - createsprite gUnknown_83E2C20, ANIM_TARGET, 2, 115, 55, 6, 60, 25 + createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 115, 55, 6, 60, 25 delay 1 - createsprite gUnknown_83E2C20, ANIM_TARGET, 2, 115, 60, 7, 60, 30 - createsprite gUnknown_83E2C20, ANIM_TARGET, 2, 115, 55, 10, 60, 30 + createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 115, 60, 7, 60, 30 + createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 115, 55, 10, 60, 30 delay 3 createsprite gUnknown_83E7578, ANIM_TARGET, 2, 100, 50, 4, 50, 26 delay 1 - createsprite gUnknown_83E2C20, ANIM_TARGET, 2, 105, 25, 8, 60, 20 + createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 105, 25, 8, 60, 20 delay 1 - createsprite gUnknown_83E2C20, ANIM_TARGET, 2, 115, 40, 10, 48, 30 + createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 115, 40, 10, 48, 30 delay 3 createsprite gUnknown_83E7578, ANIM_TARGET, 2, 120, 30, 6, 45, 25 - createsprite gUnknown_83E2C20, ANIM_TARGET, 2, 115, 35, 10, 60, 30 + createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 115, 35, 10, 60, 30 delay 3 createsprite gUnknown_83E7578, ANIM_TARGET, 2, 105, 20, 8, 40, 0 delay 3 - createsprite gUnknown_83E2C20, ANIM_TARGET, 2, 20, 255, 15, 32, 0 - createsprite gUnknown_83E2C20, ANIM_TARGET, 2, 110, 10, 8, 32, 20 + createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 20, 255, 15, 32, 0 + createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 110, 10, 8, 32, 20 waitforvisualfinish createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -32, -16, 1, 3 playsewithpan SE_W004, 63 @@ -9897,29 +9897,29 @@ Move_MAGICAL_LEAF:: @ 81D4E6D delay 1 loopsewithpan SE_W077, 192, 10, 5 createvisualtask sub_80A41C4, 5, - createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, -3, -2, 10 + createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -2, 10 delay 2 - createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, -1, -1, 15 + createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -1, -1, 15 delay 2 - createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, -4, -4, 7 + createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -4, -4, 7 delay 2 - createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, 3, -3, 11 + createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, 3, -3, 11 delay 2 - createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, -1, -6, 8 + createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -1, -6, 8 delay 2 - createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, 2, -1, 12 + createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, 2, -1, 12 delay 2 - createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, -3, -4, 13 + createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -4, 13 delay 2 - createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, 4, -5, 7 + createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, 4, -5, 7 delay 2 - createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, 2, -6, 11 + createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, 2, -6, 11 delay 2 - createsprite gUnknown_83E2C08, ANIM_ATTACKER, 2, -3, -5, 8 + createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -5, 8 delay 60 playsewithpan SE_W013B, 192 - createsprite gUnknown_83E2C50, ANIM_TARGET, 3, 20, -10, 20, 0, 32, 20, 0 - createsprite gUnknown_83E2C50, ANIM_TARGET, 3, 20, -10, 20, 0, 32, -20, 0 + createsprite gRazorLeafCutterSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 32, 20, 0 + createsprite gRazorLeafCutterSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 32, -20, 0 delay 30 playsewithpan SE_W013, 63 createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, -4, 1, 2 @@ -10044,7 +10044,7 @@ Move_WEATHER_BALL:: @ 81D515D playsewithpan SE_W197, 0 createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 5, 1, 32767, 10, 0, 0 waitforvisualfinish - createvisualtask sub_80E44EC, 2, + createvisualtask AnimTask_GetWeather, 2, delay 1 jumpargeq 7, 0, gUnknown_81D51C8 jumpargeq 7, 1, gUnknown_81D5205 @@ -10241,33 +10241,33 @@ gUnknown_81D55E2:: @ 81D55E2 return gUnknown_81D569E:: @ 81D569E - createsprite gUnknown_83E33F4, ANIM_ATTACKER, 2, -15, 0, 0, 0, 32, 60 + createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, -15, 0, 0, 0, 32, 60 delay 8 - createsprite gUnknown_83E33F4, ANIM_ATTACKER, 2, 12, -5, 0, 0, 32, 60 + createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 12, -5, 0, 0, 32, 60 delay 8 return gUnknown_81D56C9:: @ 81D56C9 playsewithpan SE_W071B, 192 - createsprite gUnknown_83E37A4, ANIM_ATTACKER, 2, 0, -5, 0, 0 + createsprite gHealingBlueStarSpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 0, 0 delay 7 - createsprite gUnknown_83E37A4, ANIM_ATTACKER, 2, -15, 10, 0, 0 + createsprite gHealingBlueStarSpriteTemplate, ANIM_ATTACKER, 2, -15, 10, 0, 0 delay 7 - createsprite gUnknown_83E37A4, ANIM_ATTACKER, 2, -15, -15, 0, 0 + createsprite gHealingBlueStarSpriteTemplate, ANIM_ATTACKER, 2, -15, -15, 0, 0 delay 7 - createsprite gUnknown_83E37A4, ANIM_ATTACKER, 2, 10, -5, 0, 0 + createsprite gHealingBlueStarSpriteTemplate, ANIM_ATTACKER, 2, 10, -5, 0, 0 delay 7 return gUnknown_81D5712:: @ 81D5712 playsewithpan SE_W071B, 63 - createsprite gUnknown_83E37A4, ANIM_TARGET, 2, 0, -5, 1, 0 + createsprite gHealingBlueStarSpriteTemplate, ANIM_TARGET, 2, 0, -5, 1, 0 delay 7 - createsprite gUnknown_83E37A4, ANIM_TARGET, 2, -15, 10, 1, 0 + createsprite gHealingBlueStarSpriteTemplate, ANIM_TARGET, 2, -15, 10, 1, 0 delay 7 - createsprite gUnknown_83E37A4, ANIM_TARGET, 2, -15, -15, 1, 0 + createsprite gHealingBlueStarSpriteTemplate, ANIM_TARGET, 2, -15, -15, 1, 0 delay 7 - createsprite gUnknown_83E37A4, ANIM_TARGET, 2, 10, -5, 1, 0 + createsprite gHealingBlueStarSpriteTemplate, ANIM_TARGET, 2, 10, -5, 1, 0 delay 7 return @@ -10368,7 +10368,7 @@ gUnknown_81D595F:: @ 81D595F gUnknown_81D59BB:: @ 81D59BB fadetobg 3 waitbgfadeout - createvisualtask sub_80DE6F0, 5, + createvisualtask AnimTask_SetPsychicBackground, 5, waitbgfadein return @@ -10405,7 +10405,7 @@ gUnknown_81D59FF:: @ 81D59FF gUnknown_81D5A07:: @ 81D5A07 createvisualtask AnimTask_IsContest, 2, jumpargeq 7, 1, gUnknown_81D5A2C - createvisualtask sub_80DEAB4, 2, + createvisualtask AnimTask_IsTargetPlayerSide, 2, jumpargeq 7, 0, gUnknown_81D5A3A goto gUnknown_81D5A33 @@ -10458,21 +10458,21 @@ gUnknown_81D5A90:: @ 81D5A90 Status_Infatuation:: @ 81D5AA8 loadspritegfx 10210 playsewithpan SE_W204, 192 - createsprite gUnknown_83E41E8, ANIM_ATTACKER, 3, 0, 20 + createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 0, 20 delay 15 playsewithpan SE_W204, 192 - createsprite gUnknown_83E41E8, ANIM_ATTACKER, 3, -20, 20 + createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, -20, 20 delay 15 playsewithpan SE_W204, 192 - createsprite gUnknown_83E41E8, ANIM_ATTACKER, 3, 20, 20 + createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 20, 20 end Status_Sleep:: @ 81D5ADD loadspritegfx 10228 playsewithpan SE_W173, 192 - createsprite gUnknown_83E3500, ANIM_ATTACKER, 2, 4, -10, 16, 0, 0 + createsprite gSleepLetterZSpriteTemplate, ANIM_ATTACKER, 2, 4, -10, 16, 0, 0 delay 30 - createsprite gUnknown_83E3500, ANIM_ATTACKER, 2, 4, -10, 16, 0, 0 + createsprite gSleepLetterZSpriteTemplate, ANIM_ATTACKER, 2, 4, -10, 16, 0, 0 end Status_Paralysis:: @ 81D5B09 @@ -10513,7 +10513,7 @@ Status_Nightmare:: @ 81D5B63 end General_CastformChange:: @ 81D5B88 - createvisualtask c3_80DFBE4, 2, + createvisualtask AnimTask_IsMonInvisible, 2, jumpargeq 7, 1, gUnknown_81D5BB4 goto gUnknown_81D5B9C @@ -10521,17 +10521,17 @@ gUnknown_81D5B9C:: @ 81D5B9C monbg 0 playsewithpan SE_W100, 192 waitplaysewithpan SE_W107, 192, 48 - createvisualtask sub_80DF9BC, 2, 1 + createvisualtask AnimTask_TransformMon, 2, 1 waitforvisualfinish clearmonbg 0 end gUnknown_81D5BB4:: @ 81D5BB4 - createvisualtask sub_80DFC24, 2, 1 + createvisualtask AnimTask_CastformGfxChange, 2, 1 end General_StatsChange:: @ 81D5BBE - createvisualtask sub_8078694, 5, + createvisualtask AnimTask_StatsChange, 5, waitforvisualfinish end @@ -10549,29 +10549,29 @@ General_SubstituteFade:: @ 81D5BC7 end General_SubstituteAppear:: @ 81D5C04 - createvisualtask sub_80E3294, 2, + createvisualtask AnimTask_MonToSubstitute, 2, end General_PokeblockThrow:: @ 81D5C0C createvisualtask sub_80F1C8C, 2, 0 - createvisualtask sub_80F1AE0, 2, + createvisualtask AnimTask_LoadPokeblockGfx, 2, delay 0 waitplaysewithpan SE_W026, 192, 22 - createsprite gUnknown_840C1EC, ANIM_TARGET, 3, -18, 12, 0, 32 + createsprite gPokeblockSpriteTemplate, ANIM_TARGET, 3, -18, 12, 0, 32 delay 50 loopsewithpan SE_W039, 63, 19, 2 createvisualtask AnimTask_SwayMon, 5, 1, 8, 1536, 2, 1 waitforvisualfinish - createvisualtask sub_80F1B14, 2, + createvisualtask AnimTask_FreePokeblockGfx, 2, end General_ItemKnockoff:: @ 81D5C54 loadspritegfx 10224 - createsprite gUnknown_83E2EA0, ANIM_TARGET, 2, + createsprite gKnockOffItemSpriteTemplate, ANIM_TARGET, 2, end General_TurnTrap:: @ 81D5C5F - createvisualtask sub_80F1D14, 5, + createvisualtask AnimTask_GetTrappedMoveAnimId, 5, jumpargeq 0, 1, gUnknown_81D5CD3 jumpargeq 0, 2, gUnknown_81D5CF8 jumpargeq 0, 3, gUnknown_81D5D4C @@ -10581,9 +10581,9 @@ General_TurnTrap:: @ 81D5C5F gUnknown_81D5C8B:: @ 81D5C8B loadspritegfx 10186 loopsewithpan SE_W010, 63, 6, 2 - createsprite gUnknown_83E2D0C, ANIM_TARGET, 4, 0, 16, 0, 1 + createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 4, 0, 16, 0, 1 delay 7 - createsprite gUnknown_83E2D0C, ANIM_TARGET, 2, 0, 8, 1, 1 + createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 2, 0, 8, 1, 1 delay 3 createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 delay 20 @@ -10668,7 +10668,7 @@ General_ItemEffect:: @ 81D5DF2 waitforvisualfinish playsewithpan SE_REAPOKE, 192 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 3, 7, 0, 26609 - createsprite gUnknown_83E4094, ANIM_ATTACKER, 3, 0, 0, 0, 0 + createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0 waitforvisualfinish end @@ -10678,31 +10678,31 @@ General_SmokeballEscape:: @ 81D5E66 setalpha 12, 4 delay 0 playsewithpan SE_BOWA2, 63 - createsprite gUnknown_83FF514, ANIM_TARGET, 0, 0, 32, 28, 30 + createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_TARGET, 0, 0, 32, 28, 30 delay 4 playsewithpan SE_BOWA2, 63 - createsprite gUnknown_83FF514, ANIM_ATTACKER, 127, 2, 12, 20, 30 + createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 127, 2, 12, 20, 30 delay 12 playsewithpan SE_BOWA2, 63 - createsprite gUnknown_83FF514, ANIM_ATTACKER, 126, 2, -28, 4, 30 + createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 126, 2, -28, 4, 30 delay 12 playsewithpan SE_BOWA2, 63 - createsprite gUnknown_83FF514, ANIM_ATTACKER, 124, 2, 14, -20, 30 + createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 124, 2, 14, -20, 30 delay 4 playsewithpan SE_BOWA2, 63 createvisualtask sub_80B78E0, 2, 2 - createsprite gUnknown_83FF514, ANIM_ATTACKER, 123, 3, 4, 4, 30 + createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 123, 3, 4, 4, 30 delay 14 playsewithpan SE_BOWA2, 63 - createsprite gUnknown_83FF514, ANIM_ATTACKER, 122, 3, -14, 18, 46 + createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 122, 3, -14, 18, 46 delay 0 - createsprite gUnknown_83FF514, ANIM_ATTACKER, 121, 3, 14, -14, 46 + createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 121, 3, 14, -14, 46 delay 0 - createsprite gUnknown_83FF514, ANIM_ATTACKER, 120, 3, -12, -10, 46 + createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 120, 3, -12, -10, 46 delay 0 - createsprite gUnknown_83FF514, ANIM_ATTACKER, 119, 3, 14, 14, 46 + createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 119, 3, 14, 14, 46 delay 0 - createsprite gUnknown_83FF514, ANIM_ATTACKER, 118, 3, 0, 0, 46 + createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 118, 3, 0, 0, 46 waitforvisualfinish clearmonbg 0 invisible 0 @@ -10744,7 +10744,7 @@ General_Hail:: @ 81D5FE2 goto Move_HAIL General_LeechSeedDrain:: @ 81D5FE7 - createvisualtask sub_80F1D7C, 5, + createvisualtask AnimTask_GetBattlersFromArg, 5, delay 0 goto Move_ABSORB @@ -10763,9 +10763,9 @@ General_MonHit:: @ 81D5FF5 General_ItemSteal:: @ 81D6026 loadspritegfx 10224 createvisualtask sub_80BC0FC, 2, - createvisualtask sub_80F1700, 2, + createvisualtask AnimTask_TargetToEffectBattler, 2, delay 1 - createsprite gUnknown_83E2EE8, ANIM_ATTACKER, 2, 0, -5, 10, 2, -1 + createsprite gItemStealSpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2, -1 end General_SnatchMove:: @ 81D604B @@ -10786,12 +10786,12 @@ gUnknown_81D6082:: @ 81D6082 gUnknown_81D6089:: @ 81D6089 playsewithpan SE_W104, 192 - createvisualtask sub_80E392C, 2, + createvisualtask AnimTask_SnatchOpposingMonMove, 2, goto gUnknown_81D6082 gUnknown_81D6099:: @ 81D6099 playsewithpan SE_W104, 192 - createvisualtask sub_80E3FC0, 2, + createvisualtask AnimTask_SnatchPartnerMove, 2, goto gUnknown_81D6082 General_FutureSightHit:: @ 81D60A9 @@ -10820,7 +10820,7 @@ General_DoomDesireHit:: @ 81D6108 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 16, 32767 waitforvisualfinish delay 10 - createvisualtask sub_80E017C, 5, + createvisualtask AnimTask_DoomDesireLightBeam, 5, delay 9 playsewithpan SE_W109, 192 delay 9 @@ -10830,19 +10830,19 @@ General_DoomDesireHit:: @ 81D6108 delay 25 createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 10, 0, 20, 1 playsewithpan SE_W120, 63 - createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 0, 0, 1, 1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 delay 6 playsewithpan SE_W120, 63 - createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 24, -24, 1, 1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 24, -24, 1, 1 delay 6 playsewithpan SE_W120, 63 - createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, -16, 16, 1, 1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -16, 16, 1, 1 delay 6 playsewithpan SE_W120, 63 - createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, -24, -12, 1, 1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, -12, 1, 1 delay 6 playsewithpan SE_W120, 63 - createsprite gUnknown_83E3F94, ANIM_ATTACKER, 3, 16, 16, 1, 1 + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, 1, 1 waitforvisualfinish createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 16, 0, 32767 waitforvisualfinish @@ -10939,7 +10939,7 @@ gUnknown_81D637B:: @ 81D637B monbg 0 playsewithpan SE_W100, 192 waitplaysewithpan SE_W107, 192, 48 - createvisualtask sub_80DF9BC, 2, 255 + createvisualtask AnimTask_TransformMon, 2, 255 waitsound waitforvisualfinish clearmonbg 0 @@ -10983,11 +10983,11 @@ gUnknown_81D63FD:: @ 81D63FD gUnknown_81D6425:: @ 81D6425 loadspritegfx 10087 - createsprite gUnknown_83E3F04, ANIM_TARGET, 2, 1, 20, -20 + createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, 20, -20 playsewithpan SE_W207B, 63 waitforvisualfinish delay 12 - createsprite gUnknown_83E3F04, ANIM_TARGET, 2, 1, -20, -20 + createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, -20, -20 playsewithpan SE_W207B, 63 end @@ -11000,7 +11000,7 @@ gUnknown_81D644E:: @ 81D644E end gUnknown_81D6476:: @ 81D6476 - createvisualtask sub_80F16CC, 2, + createvisualtask AnimTask_IsAttackerBehindSubstitute, 2, jumpargeq 7, 1, gUnknown_81D6487 gUnknown_81D6485:: @ 81D6485 @@ -11013,7 +11013,7 @@ gUnknown_81D6487:: @ 81D6487 goto gUnknown_81D6485 gUnknown_81D6496:: @ 81D6496 - createvisualtask sub_80F16CC, 2, + createvisualtask AnimTask_IsAttackerBehindSubstitute, 2, jumpargeq 7, 1, gUnknown_81D64A7 gUnknown_81D64A5:: @ 81D64A5 @@ -11051,7 +11051,7 @@ Special_BallThrow:: @ 81D64F9 delay 0 playsewithpan SE_NAGERU, 0 createvisualtask sub_80EF5AC, 2, - createvisualtask sub_80EF4E0, 2, + createvisualtask AnimTask_IsBallBlockedByTrainerOrDodged, 2, jumpargeq 7, 65535, gUnknown_81D652D jumpargeq 7, 65534, gUnknown_81D6555 diff --git a/data/battle_anim_special.s b/data/battle_anim_special.s deleted file mode 100644 index 967e27674..000000000 --- a/data/battle_anim_special.s +++ /dev/null @@ -1,148 +0,0 @@ -#include "constants/region_map.h" -#include "constants/flags.h" -#include "constants/moves.h" -#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10)) - .include "asm/macros.inc" - .include "constants/constants.inc" - .section .rodata - .align 2 - -gUnknown_840BF3C:: @ 840BF3C - .byte 10, 2, -3, 0 - .byte 15, 0, -4, 0 - .byte -10, 2, -4, 0 - -gUnknown_840BF48:: @ 840BF48 - obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55020 - obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55021 - obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55022 - obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55023 - obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55024 - obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55025 - obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55026 - obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55027 - obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55028 - obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55029 - obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55030 - obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55031 - -gUnknown_840BFA8:: @ 840BFA8 - obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55020 - obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55021 - obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55022 - obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55023 - obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55024 - obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55025 - obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55026 - obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55027 - obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55028 - obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55029 - obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55030 - obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55031 - -gAnimCmd_840C008:: @ 840C008 - obj_image_anim_frame 0x0000, 1 - obj_image_anim_frame 0x0001, 1 - obj_image_anim_frame 0x0002, 1 - obj_image_anim_frame 0x0000, 1, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 0x0002, 1 - obj_image_anim_frame 0x0001, 1 - obj_image_anim_jump 0x0000 - -gAnimCmd_840C024:: @ 840C024 - obj_image_anim_frame 0x0003, 1 - obj_image_anim_end - -gAnimCmd_840C02C:: @ 840C02C - obj_image_anim_frame 0x0004, 1 - obj_image_anim_end - -gAnimCmd_840C034:: @ 840C034 - obj_image_anim_frame 0x0005, 1 - obj_image_anim_end - -gAnimCmd_840C03C:: @ 840C03C - obj_image_anim_frame 0x0006, 4 - obj_image_anim_frame 0x0007, 4 - obj_image_anim_jump 0x0000 - -gAnimCmd_840C048:: @ 840C048 - obj_image_anim_frame 0x0007, 4 - obj_image_anim_end - -gSpriteAnimTable_840C050:: - .4byte gAnimCmd_840C008 - .4byte gAnimCmd_840C024 - .4byte gAnimCmd_840C02C - .4byte gAnimCmd_840C034 - .4byte gAnimCmd_840C03C - .4byte gAnimCmd_840C048 - -gUnknown_840C068:: @ 840C068 - .byte 0x00, 0x00, 0x00, 0x05, 0x01, 0x02, 0x02, 0x03, 0x05, 0x05, 0x04, 0x04 - -gUnknown_840C074:: @ 840C074 - .4byte sub_80F06A4 - .4byte sub_80F0C28 - .4byte sub_80F0A20 - .4byte sub_80F0B20 - .4byte sub_80F0F10 - .4byte sub_80F0A20 - .4byte sub_80F091C - .4byte sub_80F0B20 - .4byte sub_80F0DB4 - .4byte sub_80F0818 - .4byte sub_80F0C28 - .4byte sub_80F103C - -gUnknown_840C0A4:: @ 840C0A4 - spr_template 55020, 55020, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_840C0BC:: - spr_template 55021, 55021, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - spr_template 55022, 55022, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - spr_template 55023, 55023, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_840C104:: @ 840C104 - spr_template 55024, 55024, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - spr_template 55025, 55025, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - spr_template 55026, 55026, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - spr_template 55027, 55027, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - spr_template 55028, 55028, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - spr_template 55029, 55029, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - spr_template 55030, 55030, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - spr_template 55031, 55031, gOamData_83AC9C8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_840C1C4:: @ 840C1C4 - .2byte RGB(31, 22, 30) - .2byte RGB(16, 23, 30) - .2byte RGB(23, 30, 20) - .2byte RGB(31, 31, 15) - .2byte RGB(23, 20, 28) - .2byte RGB(21, 31, 25) - .2byte RGB(12, 25, 30) - .2byte RGB(30, 27, 10) - .2byte RGB(31, 24, 16) - .2byte RGB(29, 30, 30) - .2byte RGB(31, 17, 10) - .2byte RGB(31, 9, 10) - -gUnknown_840C1DC:: @ 840C1DC - .byte 0x00, 0x00, 0x01, 0x02, 0x03 - .byte 0x04, 0x01, 0x01, 0x00, 0x01 - .byte 0x03, 0x05, 0x06, 0x05, 0x04 - - .align 2 -gUnknown_840C1EC:: - spr_template 10269, 10269, gOamData_83AC9D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80F1B3C - -gUnknown_840C204:: - obj_image_anim_frame 0x0040, 1 - obj_image_anim_end - -gSpriteAnimTable_840C20C:: - .4byte gUnknown_840C204 - -gUnknown_840C210:: - spr_template 10058, 10058, gOamData_83AC9D8, gSpriteAnimTable_840C20C, NULL, gDummySpriteAffineAnimTable, sub_80F1B3C - diff --git a/data/battle_anim_status_effects.s b/data/battle_anim_status_effects.s deleted file mode 100644 index 6e8952131..000000000 --- a/data/battle_anim_status_effects.s +++ /dev/null @@ -1,110 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - .section .rodata - .align 2 - -gUnknown_83BF3E0:: @ 83BF3DC - obj_image_anim_frame 0, 3 - obj_image_anim_frame 4, 3 - obj_image_anim_frame 8, 3 - obj_image_anim_frame 12, 3 - obj_image_anim_jump 0 - -gSpriteAnimTable_83BF3F4:: @ 83BF3F4 - .4byte gUnknown_83BF3E0 - -gSpriteTemplate_83BF3F8:: @ 83BF3F8 - spr_template 10004, 10004, gOamData_83AC9D0, gSpriteAnimTable_83BF3F4, NULL, gDummySpriteAffineAnimTable, sub_8076F58 - -gSpriteTemplate_83BF410:: @ 83BF410 - spr_template 10004, 10004, gOamData_83AC9D0, gSpriteAnimTable_83BF3F4, NULL, gDummySpriteAffineAnimTable, sub_8076ED8 - -gUnknown_83BF428:: @ 83BF428 - obj_image_anim_frame 0x0000, 3 - obj_image_anim_jump 0x0000 - -gSpriteAnimTable_83BF430:: @ 83BF430 - .4byte gUnknown_83BF428 - -gSpriteTemplate_83BF434:: @ 83BF434 - spr_template 10283, 10283, gOamData_83AC9D8, gSpriteAnimTable_83BF430, NULL, gDummySpriteAffineAnimTable, sub_807729C - -gSpriteTemplate_83BF44C:: @ 83BF44C - spr_template 10283, 10283, gOamData_83AC9D8, gSpriteAnimTable_83BF430, NULL, gDummySpriteAffineAnimTable, sub_8077350 - -gUnknown_83BF464:: @ 83BF464 - obj_image_anim_frame 0x0000, 3 - obj_image_anim_frame 0x0010, 3 - obj_image_anim_frame 0x0020, 3 - obj_image_anim_frame 0x0030, 3 - obj_image_anim_frame 0x0040, 3 - obj_image_anim_end - -gSpriteAnimTable_83BF47C:: @ 83BF47C - .4byte gUnknown_83BF464 - -gSpriteTemplate_83BF480:: @ 83BF480 - spr_template 10071, 10071, gOamData_83AC9D8, gSpriteAnimTable_83BF47C, NULL, gDummySpriteAffineAnimTable, sub_8076FD0 - -gSpriteTemplate_83BF498:: @ 83BF498 - spr_template 10051, 10051, gOamData_83AC9D8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8076F58 - -gUnknown_83BF4B0:: @ 83BF4B0 - obj_image_anim_frame 0x0000, 5 - obj_image_anim_jump 0x0000 - -gUnknown_83BF4B8:: @ 83BF4B8 - obj_image_anim_frame 0x0000, 5 - obj_image_anim_jump 0x0000 - -gUnknown_83BF4C0:: @ 83BF4C0 - obj_image_anim_frame 0x0000, 5 - obj_image_anim_jump 0x0000 - -gSpriteAniimTable_83BF4C8:: @ 83BF4C8 - .4byte gUnknown_83BF4B0 - .4byte gUnknown_83BF4B8 - .4byte gUnknown_83BF4C0 - -gSpriteTemplate_83BF4D4:: @ 83BF4D4 - spr_template 10135, 10135, gOamData_83AC9D8, gSpriteAniimTable_83BF4C8, NULL, gDummySpriteAffineAnimTable, sub_8076F58 - -gUnknown_83BF4EC:: @ 83BF4EC - obj_image_anim_frame 0x0000, 15 - obj_image_anim_jump 0x0000 - -gSpriteAnimTable_83BF4F4:: @ 83BF4F4 - .4byte gUnknown_83BF4EC - -gUnknown_83BF4F8:: @ 83BF4F8 - obj_rot_scal_anim_frame 0x0060, 0x0060, 0x00, 0 - obj_rot_scal_anim_frame 0x0002, 0x0002, 0x00, 1 - obj_rot_scal_anim_jump 0x0001 - -gSpriteAffineAnimTable_83BF510:: @ 83BF510 - .4byte gUnknown_83BF4F8 - -gSpriteTemplate_83BF514:: @ 83BF514 - spr_template 10004, 10004, gOamData_83ACA90, gSpriteAnimTable_83BF4F4, NULL, gSpriteAffineAnimTable_83BF510, sub_8076ED8 - -gUnknown_83BF52C:: @ 83BF52C - .string "TASK OVER\n" - .string "タスクがオーバーしました$" - - .align 2 -gSubsprites_83BF544:: @ 83BF544 - subsprite 240, 240, 2, 0x00, 64x64 - subsprite 240, 48, 2, 0x40, 64x32 - subsprite 48, 240, 2, 0x60, 32x64 - subsprite 48, 48, 2, 0x80, 32x32 - -gUnknown_83BF554:: @ 83BF554 - .byte 4 - .align 2 - .4byte gSubsprites_83BF544 - -gUnknown_83BF55C:: @ 83BF55C - spr_template 10010, 10010, gOamData_83ACB00, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_83BF574:: @ 83BF574 - spr_template 10136, 10136, gOamData_83AC9C8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_807834C diff --git a/data/berry_crush.s b/data/berry_crush.s index 8ca6e6a0c..cc7ae23fd 100644 --- a/data/berry_crush.s +++ b/data/berry_crush.s @@ -325,19 +325,19 @@ gUnknown_846F408:: .4byte gUnknown_846F3D4 gUnknown_846F410:: @ 846F410 - spr_template 1, 1, gOamData_83AC9E0, gUnknown_846F3EC, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 1, 1, gOamData_AffineOff_ObjNormal_64x64, gUnknown_846F3EC, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy gUnknown_846F428:: @ 846F428 - spr_template 2, 2, gOamData_83AC9D8, gUnknown_846F3F0, NULL, gDummySpriteAffineAnimTable, sub_814EFD0 + spr_template 2, 2, gOamData_AffineOff_ObjNormal_32x32, gUnknown_846F3F0, NULL, gDummySpriteAffineAnimTable, sub_814EFD0 gUnknown_846F440:: @ 846F440 - spr_template 3, 2, gOamData_83AC9D0, gUnknown_846F3F8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 3, 2, gOamData_AffineOff_ObjNormal_16x16, gUnknown_846F3F8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy gUnknown_846F458:: @ 846F458 - spr_template 4, 4, gOamData_83ACA08, gUnknown_846F400, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 4, 4, gOamData_AffineOff_ObjNormal_8x16, gUnknown_846F400, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy gUnknown_846F470:: @ 846F470 - spr_template 5, 5, gOamData_83ACA98, gUnknown_846F404, NULL, gUnknown_846F408, SpriteCallbackDummy + spr_template 5, 5, gOamData_AffineDouble_ObjNormal_32x32, gUnknown_846F404, NULL, gUnknown_846F408, SpriteCallbackDummy gUnknown_846F488:: @ 846F488 struct UnkStruct3? perhaps not .byte 9, 2, 8 diff --git a/data/field_weather.s b/data/field_weather.s index 356ec81a5..890f0fef6 100644 --- a/data/field_weather.s +++ b/data/field_weather.s @@ -389,7 +389,7 @@ gUnknown_83C68B8:: .4byte gUnknown_83C68AC gUnknown_83C68BC:: @ 83C68BC - spr_template 4613, 4608, gOamData_83AC9C8, gUnknown_83C68B8, NULL, gDummySpriteAffineAnimTable, unc_0807DAB4 + spr_template 4613, 4608, gOamData_AffineOff_ObjNormal_8x8, gUnknown_83C68B8, NULL, gDummySpriteAffineAnimTable, unc_0807DAB4 gUnknown_83C68D4:: @ 83C68D4 .2byte 0x00c8, 0x0048, 0x0038, 0x0028, 0x0018, 0x0000 diff --git a/data/graphics.s b/data/graphics.s index fd0c35c7a..c5eae9753 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -153,143 +153,143 @@ gBlankGfxCompressed:: @ 8D02364 .incbin "graphics/interface/blank.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_146_sheet:: @ 8D02460 +gBattleAnimSpriteGfx_Bubble:: @ 8D02460 .incbin "graphics/battle_anims/sprites/146.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_000_sheet:: @ 8D02520 +gBattleAnimSpriteGfx_Bone:: @ 8D02520 .incbin "graphics/battle_anims/sprites/000.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_003_sheet:: @ 8D025D0 +gBattleAnimSpriteGfx_AirWave:: @ 8D025D0 .incbin "graphics/battle_anims/sprites/003.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_004_sheet:: @ 8D02644 +gBattleAnimSpriteGfx_Orb:: @ 8D02644 .incbin "graphics/battle_anims/sprites/004.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_005_sheet:: @ 8D026F4 +gBattleAnimSpriteGfx_Sword:: @ 8D026F4 .incbin "graphics/battle_anims/sprites/005.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_006_sheet:: @ 8D027C8 +gBattleAnimSpriteGfx_Seed:: @ 8D027C8 .incbin "graphics/battle_anims/sprites/006.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_115_palette:: @ 8D02894 +gBattleAnimSpritePal_RainDrops:: @ 8D02894 .incbin "graphics/battle_anims/sprites/115.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_000_palette:: @ 8D028B4 +gBattleAnimSpritePal_Bone:: @ 8D028B4 .incbin "graphics/battle_anims/sprites/000.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_003_palette:: @ 8D028D8 +gBattleAnimSpritePal_AirWave:: @ 8D028D8 .incbin "graphics/battle_anims/sprites/003.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_004_palette:: @ 8D02900 +gBattleAnimSpritePal_Orb:: @ 8D02900 .incbin "graphics/battle_anims/sprites/004.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_005_palette:: @ 8D02914 +gBattleAnimSpritePal_Sword:: @ 8D02914 .incbin "graphics/battle_anims/sprites/005.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_006_palette:: @ 8D0293C +gBattleAnimSpritePal_Seed:: @ 8D0293C .incbin "graphics/battle_anims/sprites/006.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_161_sheet:: @ 8D02964 +gBattleAnimSpriteGfx_Needle:: @ 8D02964 .incbin "graphics/battle_anims/sprites/161.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_161_palette:: @ 8D0298C +gBattleAnimSpritePal_Needle:: @ 8D0298C .incbin "graphics/battle_anims/sprites/161.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_007_sheet:: @ 8D029B4 +gBattleAnimSpriteGfx_Explosion6:: @ 8D029B4 .incbin "graphics/battle_anims/sprites/007.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_007_palette:: @ 8D02B30 +gBattleAnimSpritePal_Explosion6:: @ 8D02B30 .incbin "graphics/battle_anims/sprites/007.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_008_sheet:: @ 8D02B50 +gBattleAnimSpriteGfx_PinkOrb:: @ 8D02B50 .incbin "graphics/battle_anims/sprites/008.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_008_palette:: @ 8D02B70 +gBattleAnimSpritePal_PinkOrb:: @ 8D02B70 .incbin "graphics/battle_anims/sprites/008.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_010_palette:: @ 8D02B8C +gBattleAnimSpritePal_IceCube:: @ 8D02B8C .incbin "graphics/battle_anims/sprites/010.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_010_sheet:: @ 8D02BAC +gBattleAnimSpriteGfx_IceCube:: @ 8D02BAC .incbin "graphics/battle_anims/sprites/010.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_009_sheet:: @ 8D02F8C +gBattleAnimSpriteGfx_Gust:: @ 8D02F8C .incbin "graphics/battle_anims/sprites/009.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_009_palette:: @ 8D03274 +gBattleAnimSpritePal_Gust:: @ 8D03274 .incbin "graphics/battle_anims/sprites/009.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_011_sheet:: @ 8D03294 +gBattleAnimSpriteGfx_Spark2:: @ 8D03294 .incbin "graphics/battle_anims/sprites/011.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_011_palette:: @ 8D0330C +gBattleAnimSpritePal_Spark2:: @ 8D0330C .incbin "graphics/battle_anims/sprites/011.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_012_sheet:: @ 8D03334 +gBattleAnimSpriteGfx_Orange:: @ 8D03334 .incbin "graphics/battle_anims/sprites/012.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_012_palette:: @ 8D0339C +gBattleAnimSpritePal_Orange:: @ 8D0339C .incbin "graphics/battle_anims/sprites/012.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_152_sheet:: @ 8D033B4 +gBattleAnimSpriteGfx_Spikes:: @ 8D033B4 .incbin "graphics/battle_anims/sprites/152.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_152_palette:: @ 8D033FC +gBattleAnimSpritePal_Spikes:: @ 8D033FC .incbin "graphics/battle_anims/sprites/152.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_013_sheet:: @ 8D03420 +gBattleAnimSpriteGfx_YellowBall:: @ 8D03420 .incbin "graphics/battle_anims/sprites/013.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_013_palette:: @ 8D03454 +gBattleAnimSpritePal_YellowBall:: @ 8D03454 .incbin "graphics/battle_anims/sprites/013.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_015_sheet:: @ 8D0346C +gBattleAnimSpriteGfx_TiedBag:: @ 8D0346C .incbin "graphics/battle_anims/sprites/015.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_015_palette:: @ 8D034D8 +gBattleAnimSpritePal_TiedBag:: @ 8D034D8 .incbin "graphics/battle_anims/sprites/015.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_016_sheet:: @ 8D03500 +gBattleAnimSpriteGfx_BlackSmoke:: @ 8D03500 .incbin "graphics/battle_anims/sprites/016.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_016_palette:: @ 8D03570 +gBattleAnimSpritePal_BlackSmoke:: @ 8D03570 .incbin "graphics/battle_anims/sprites/016.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_017_sheet:: @ 8D03580 +gBattleAnimSpriteGfx_BlackBall:: @ 8D03580 .incbin "graphics/battle_anims/sprites/017.4bpp.lz" .align 2 @@ -297,27 +297,27 @@ gFile_graphics_unknown_Unknown_8D035A0_sheet:: @ 8D035A0 .incbin "graphics/unknown/unknown_D035A0.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_019_palette:: @ 8D035C4 +gBattleAnimSpritePal_Glass:: @ 8D035C4 .incbin "graphics/battle_anims/sprites/019.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_019_sheet:: @ 8D035E0 +gBattleAnimSpriteGfx_Glass:: @ 8D035E0 .incbin "graphics/battle_anims/sprites/019.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_020_sheet:: @ 8D036A0 +gBattleAnimSpriteGfx_HornHit:: @ 8D036A0 .incbin "graphics/battle_anims/sprites/020.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_020_palette:: @ 8D0376C +gBattleAnimSpritePal_HornHit:: @ 8D0376C .incbin "graphics/battle_anims/sprites/020.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_023_palette:: @ 8D03794 +gBattleAnimSpritePal_BlueShards:: @ 8D03794 .incbin "graphics/battle_anims/sprites/023.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_023_sheet:: @ 8D037BC +gBattleAnimSpriteGfx_BlueShards:: @ 8D037BC .incbin "graphics/battle_anims/sprites/023.4bpp.lz" .align 2 @@ -329,115 +329,115 @@ gFile_graphics_unused_music_notes_sheet:: @ 8D038EC .incbin "graphics/unused/music_notes.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_021_palette:: @ 8D039E8 +gBattleAnimSpritePal_Hit:: @ 8D039E8 .incbin "graphics/battle_anims/sprites/021.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_021_sheet:: @ 8D03A10 +gBattleAnimSpriteGfx_Hit:: @ 8D03A10 .incbin "graphics/battle_anims/sprites/021.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_022_palette:: @ 8D03D48 +gBattleAnimSpritePal_Hit2:: @ 8D03D48 .incbin "graphics/battle_anims/sprites/022.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_025_palette:: @ 8D03D70 +gBattleAnimSpritePal_WavingHand:: @ 8D03D70 .incbin "graphics/battle_anims/sprites/025.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_025_sheet:: @ 8D03D98 +gBattleAnimSpriteGfx_WavingHand:: @ 8D03D98 .incbin "graphics/battle_anims/sprites/025.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_024_sheet:: @ 8D03E88 +gBattleAnimSpriteGfx_ClosingEye:: @ 8D03E88 .incbin "graphics/battle_anims/sprites/024.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_024_palette:: @ 8D03F54 +gBattleAnimSpritePal_ClosingEye:: @ 8D03F54 .incbin "graphics/battle_anims/sprites/024.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_031_sheet:: @ 8D03F68 +gBattleAnimSpriteGfx_BlueStar:: @ 8D03F68 .incbin "graphics/battle_anims/sprites/031.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_031_palette:: @ 8D04348 +gBattleAnimSpritePal_BlueStar:: @ 8D04348 .incbin "graphics/battle_anims/sprites/031.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_032_palette:: @ 8D04368 +gBattleAnimSpritePal_BubbleBurst:: @ 8D04368 .incbin "graphics/battle_anims/sprites/032.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_032_sheet:: @ 8D04390 +gBattleAnimSpriteGfx_BubbleBurst:: @ 8D04390 .incbin "graphics/battle_anims/sprites/032.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_026_sheet:: @ 8D0447C +gBattleAnimSpriteGfx_HitDuplicate:: @ 8D0447C .incbin "graphics/battle_anims/sprites/026.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_026_palette:: @ 8D047B4 +gBattleAnimSpritePal_HitDuplicate:: @ 8D047B4 .incbin "graphics/battle_anims/sprites/026.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_027_palette:: @ 8D047DC +gBattleAnimSpritePal_Leer:: @ 8D047DC .incbin "graphics/battle_anims/sprites/027.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_027_sheet:: @ 8D04804 +gBattleAnimSpriteGfx_Leer:: @ 8D04804 .incbin "graphics/battle_anims/sprites/027.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_028_palette:: @ 8D04B00 +gBattleAnimSpritePal_BlueBurst:: @ 8D04B00 .incbin "graphics/battle_anims/sprites/028.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_028_sheet:: @ 8D04B28 +gBattleAnimSpriteGfx_BlueBurst:: @ 8D04B28 .incbin "graphics/battle_anims/sprites/028.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_029_sheet:: @ 8D04E78 +gBattleAnimSpriteGfx_SmallEmber:: @ 8D04E78 .incbin "graphics/battle_anims/sprites/029.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_029_palette:: @ 8D05130 +gBattleAnimSpritePal_SmallEmber:: @ 8D05130 .incbin "graphics/battle_anims/sprites/029.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_030_sheet:: @ 8D05158 +gBattleAnimSpriteGfx_GraySmoke:: @ 8D05158 .incbin "graphics/battle_anims/sprites/030.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_030_palette:: @ 8D05518 +gBattleAnimSpritePal_GraySmoke:: @ 8D05518 .incbin "graphics/battle_anims/sprites/030.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_033_palette:: @ 8D0553C +gBattleAnimSpritePal_Fire:: @ 8D0553C .incbin "graphics/battle_anims/sprites/033.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_033_sheet:: @ 8D05564 +gBattleAnimSpriteGfx_Fire:: @ 8D05564 .incbin "graphics/battle_anims/sprites/033.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_034_sheet:: @ 8D05ED4 +gBattleAnimSpriteGfx_SpinningFire:: @ 8D05ED4 .incbin "graphics/battle_anims/sprites/034.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_035_sheet:: @ 8D062A0 +gBattleAnimSpriteGfx_FirePlume:: @ 8D062A0 .incbin "graphics/battle_anims/sprites/035.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_036_palette:: @ 8D06638 +gBattleAnimSpritePal_Lightning2:: @ 8D06638 .incbin "graphics/battle_anims/sprites/036.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_036_sheet:: @ 8D06660 +gBattleAnimSpriteGfx_Lightning2:: @ 8D06660 .incbin "graphics/battle_anims/sprites/036.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_037_sheet:: @ 8D06A34 +gBattleAnimSpriteGfx_Lightning:: @ 8D06A34 .incbin "graphics/battle_anims/sprites/037.4bpp.lz" .align 2 @@ -477,27 +477,27 @@ gFile_graphics_unused_old_battle_interface_tilemap:: @ 8D077EC .incbin "graphics/unused/old_battle_interface_tilemap.bin.lz" .align 2 -gFile_graphics_battle_anims_sprites_038_palette:: @ 8D078FC +gBattleAnimSpritePal_ClawSlash2:: @ 8D078FC .incbin "graphics/battle_anims/sprites/038.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_039_palette:: @ 8D07924 +gBattleAnimSpritePal_ClawSlash:: @ 8D07924 .incbin "graphics/battle_anims/sprites/039.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_038_sheet:: @ 8D0794C +gBattleAnimSpriteGfx_ClawSlash2:: @ 8D0794C .incbin "graphics/battle_anims/sprites/038.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_039_sheet:: @ 8D07B70 +gBattleAnimSpriteGfx_ClawSlash:: @ 8D07B70 .incbin "graphics/battle_anims/sprites/039.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_040_sheet:: @ 8D07E6C +gBattleAnimSpriteGfx_Scratch3:: @ 8D07E6C .incbin "graphics/battle_anims/sprites/040.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_041_sheet:: @ 8D08078 +gBattleAnimSpriteGfx_Scratch2:: @ 8D08078 .incbin "graphics/battle_anims/sprites/041.4bpp.lz" .align 2 @@ -505,35 +505,35 @@ gFile_graphics_interface_party_menu_hpbar_sheet:: @ 8D08218 .incbin "graphics/interface/party_menu_hpbar.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_042_sheet:: @ 8D082AC +gBattleAnimSpriteGfx_BubbleBurst2:: @ 8D082AC .incbin "graphics/battle_anims/sprites/042.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_042_palette:: @ 8D0857C +gBattleAnimSpritePal_BubbleBurst2:: @ 8D0857C .incbin "graphics/battle_anims/sprites/042.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_043_sheet:: @ 8D085A4 +gBattleAnimSpriteGfx_IceChunk:: @ 8D085A4 .incbin "graphics/battle_anims/sprites/043.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_043_palette:: @ 8D089A4 +gBattleAnimSpritePal_IceChunk:: @ 8D089A4 .incbin "graphics/battle_anims/sprites/043.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_044_palette:: @ 8D089CC +gBattleAnimSpritePal_Glass2:: @ 8D089CC .incbin "graphics/battle_anims/sprites/044.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_044_sheet:: @ 8D089F4 +gBattleAnimSpriteGfx_Glass2:: @ 8D089F4 .incbin "graphics/battle_anims/sprites/044.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_045_palette:: @ 8D08C60 +gBattleAnimSpritePal_PinkHeart2:: @ 8D08C60 .incbin "graphics/battle_anims/sprites/045.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_045_sheet:: @ 8D08C88 +gBattleAnimSpriteGfx_PinkHeart2:: @ 8D08C88 .incbin "graphics/battle_anims/sprites/045.4bpp.lz" .align 2 @@ -549,15 +549,15 @@ gFile_graphics_interface_hp_numbers:: @ 8D093D8 .incbin "graphics/interface/hp_numbers.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_046:: @ 8D095EC +gBattleAnimSpriteGfx_SapDrip:: @ 8D095EC .incbin "graphics/battle_anims/sprites/046.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_046_palette:: @ 8D099CC +gBattleAnimSpritePal_SapDrip:: @ 8D099CC .incbin "graphics/battle_anims/sprites/046.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_047_palette:: @ 8D099EC +gBattleAnimSpritePal_SapDrip2:: @ 8D099EC .incbin "graphics/battle_anims/sprites/047.gbapal.lz" .align 2 @@ -569,31 +569,31 @@ gFile_graphics_battle_interface_unused_window2bar_sheet:: @ 8D09CAC .incbin "graphics/battle_interface/unused_window2bar.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_048_sheet:: @ 8D09CD8 +gBattleAnimSpriteGfx_Sparkle1:: @ 8D09CD8 .incbin "graphics/battle_anims/sprites/048.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_048_palette:: @ 8D09F70 +gBattleAnimSpritePal_Sparkle1:: @ 8D09F70 .incbin "graphics/battle_anims/sprites/048.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_049_palette:: @ 8D09F98 +gBattleAnimSpritePal_Sparkle2:: @ 8D09F98 .incbin "graphics/battle_anims/sprites/049.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_050_palette:: @ 8D09FC0 +gBattleAnimSpritePal_HumanoidFoot:: @ 8D09FC0 .incbin "graphics/battle_anims/sprites/050.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_050_sheet:: @ 8D09FE4 +gBattleAnimSpriteGfx_HumanoidFoot:: @ 8D09FE4 .incbin "graphics/battle_anims/sprites/050.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_051_sheet:: @ 8D0A084 +gBattleAnimSpriteGfx_MonsterFoot:: @ 8D0A084 .incbin "graphics/battle_anims/sprites/051.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_052_sheet:: @ 8D0A130 +gBattleAnimSpriteGfx_HumanoidHand:: @ 8D0A130 .incbin "graphics/battle_anims/sprites/052.4bpp.lz" .align 2 @@ -605,79 +605,79 @@ gFile_graphics_unused_line_sketch_palette:: @ 8D0A380 .incbin "graphics/unused/line_sketch.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_054_sheet:: @ 8D0A390 +gBattleAnimSpriteGfx_YellowUnk:: @ 8D0A390 .incbin "graphics/battle_anims/sprites/054.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_054_palette:: @ 8D0A3BC +gBattleAnimSpritePal_YellowUnk:: @ 8D0A3BC .incbin "graphics/battle_anims/sprites/054.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_056_sheet:: @ 8D0A3D4 +gBattleAnimSpriteGfx_SlamHit:: @ 8D0A3D4 .incbin "graphics/battle_anims/sprites/056.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_056_palette:: @ 8D0A87C +gBattleAnimSpritePal_SlamHit:: @ 8D0A87C .incbin "graphics/battle_anims/sprites/056.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_055_sheet:: @ 8D0A8A4 +gBattleAnimSpriteGfx_RedFist:: @ 8D0A8A4 .incbin "graphics/battle_anims/sprites/055.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_057_sheet:: @ 8D0A968 +gBattleAnimSpriteGfx_Ring:: @ 8D0A968 .incbin "graphics/battle_anims/sprites/057.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_057_palette:: @ 8D0A9F0 +gBattleAnimSpritePal_Ring:: @ 8D0A9F0 .incbin "graphics/battle_anims/sprites/057.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_058_sheet:: @ 8D0AA14 +gBattleAnimSpriteGfx_Rocks:: @ 8D0AA14 .incbin "graphics/battle_anims/sprites/058.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_058_palette:: @ 8D0AE7C +gBattleAnimSpritePal_Rocks:: @ 8D0AE7C .incbin "graphics/battle_anims/sprites/058.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_059_sheet:: @ 8D0AEA4 +gBattleAnimSpriteGfx_Z:: @ 8D0AEA4 .incbin "graphics/battle_anims/sprites/059.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_059_palette:: @ 8D0AF04 +gBattleAnimSpritePal_Z:: @ 8D0AF04 .incbin "graphics/battle_anims/sprites/059.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_060_sheet:: @ 8D0AF20 +gBattleAnimSpriteGfx_YellowUnk2:: @ 8D0AF20 .incbin "graphics/battle_anims/sprites/060.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_060_palette:: @ 8D0AF48 +gBattleAnimSpritePal_YellowUnk2:: @ 8D0AF48 .incbin "graphics/battle_anims/sprites/060.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_061_sheet:: @ 8D0AF64 +gBattleAnimSpriteGfx_AirSlash:: @ 8D0AF64 .incbin "graphics/battle_anims/sprites/061.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_061_palette:: @ 8D0B014 +gBattleAnimSpritePal_AirSlash:: @ 8D0B014 .incbin "graphics/battle_anims/sprites/061.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_062_sheet:: @ 8D0B034 +gBattleAnimSpriteGfx_SpinningGreenOrbs:: @ 8D0B034 .incbin "graphics/battle_anims/sprites/062.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_062_palette:: @ 8D0B404 +gBattleAnimSpritePal_SpinningGreenOrbs:: @ 8D0B404 .incbin "graphics/battle_anims/sprites/062.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_063_sheet:: @ 8D0B42C +gBattleAnimSpriteGfx_Leaf:: @ 8D0B42C .incbin "graphics/battle_anims/sprites/063.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_063_palette:: @ 8D0B5E8 +gBattleAnimSpritePal_Leaf:: @ 8D0B5E8 .incbin "graphics/battle_anims/sprites/063.gbapal.lz" .align 2 @@ -685,87 +685,87 @@ gFile_graphics_unused_metronome_hand_small_sheet:: @ 8D0B610 .incbin "graphics/unused/metronome_hand_small.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_091_palette:: @ 8D0B680 +gBattleAnimSpritePal_Clapping:: @ 8D0B680 .incbin "graphics/battle_anims/sprites/091.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_065_sheet:: @ 8D0B6A4 +gBattleAnimSpriteGfx_PoisonPowder:: @ 8D0B6A4 .incbin "graphics/battle_anims/sprites/065.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_065_palette:: @ 8D0B7B8 +gBattleAnimSpritePal_PoisonPowder:: @ 8D0B7B8 .incbin "graphics/battle_anims/sprites/065.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_066_sheet:: @ 8D0B7D8 +gBattleAnimSpriteGfx_BrownTriangle:: @ 8D0B7D8 .incbin "graphics/battle_anims/sprites/066.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_066_palette:: @ 8D0B824 +gBattleAnimSpritePal_BrownTriangle:: @ 8D0B824 .incbin "graphics/battle_anims/sprites/066.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_070_sheet:: @ 8D0B84C +gBattleAnimSpriteGfx_Sparkle3:: @ 8D0B84C .incbin "graphics/battle_anims/sprites/070.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_070_palette:: @ 8D0B8CC +gBattleAnimSpritePal_Sparkle3:: @ 8D0B8CC .incbin "graphics/battle_anims/sprites/070.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_071_sheet:: @ 8D0B8F4 +gBattleAnimSpriteGfx_Sparkle4:: @ 8D0B8F4 .incbin "graphics/battle_anims/sprites/071.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_072_sheet:: @ 8D0BB20 +gBattleAnimSpriteGfx_MusicNotes:: @ 8D0BB20 .incbin "graphics/battle_anims/sprites/072.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_072_palette:: @ 8D0BBF0 +gBattleAnimSpritePal_MusicNotes:: @ 8D0BBF0 .incbin "graphics/battle_anims/sprites/072.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_073_sheet:: @ 8D0BC08 +gBattleAnimSpriteGfx_Duck:: @ 8D0BC08 .incbin "graphics/battle_anims/sprites/073.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_073_palette:: @ 8D0BD24 +gBattleAnimSpritePal_Duck:: @ 8D0BD24 .incbin "graphics/battle_anims/sprites/073.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_075_sheet:: @ 8D0BD44 +gBattleAnimSpriteGfx_Alert:: @ 8D0BD44 .incbin "graphics/battle_anims/sprites/075.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_075_palette:: @ 8D0BFC0 +gBattleAnimSpritePal_Alert:: @ 8D0BFC0 .incbin "graphics/battle_anims/sprites/075.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_078_sheet:: @ 8D0BFE4 +gBattleAnimSpriteGfx_Shock4:: @ 8D0BFE4 .incbin "graphics/battle_anims/sprites/078.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_078_palette:: @ 8D0C17C +gBattleAnimSpritePal_Shock4:: @ 8D0C17C .incbin "graphics/battle_anims/sprites/078.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_079_sheet:: @ 8D0C1A4 +gBattleAnimSpriteGfx_Shock:: @ 8D0C1A4 .incbin "graphics/battle_anims/sprites/079.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_080_sheet:: @ 8D0C5D4 +gBattleAnimSpriteGfx_Bell2:: @ 8D0C5D4 .incbin "graphics/battle_anims/sprites/080.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_080_palette:: @ 8D0C938 +gBattleAnimSpritePal_Bell2:: @ 8D0C938 .incbin "graphics/battle_anims/sprites/080.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_081_sheet:: @ 8D0C95C +gBattleAnimSpriteGfx_PinkGlove:: @ 8D0C95C .incbin "graphics/battle_anims/sprites/081.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_081_palette:: @ 8D0C9E0 +gBattleAnimSpritePal_PinkGlove:: @ 8D0C9E0 .incbin "graphics/battle_anims/sprites/081.gbapal.lz" .align 2 @@ -793,51 +793,51 @@ gFile_graphics_unused_line_sketch_2_tilemap:: @ 8D0CAE8 .incbin "graphics/unused/line_sketch_2.bin.lz" .align 2 -gFile_graphics_battle_anims_sprites_082_sheet:: @ 8D0CB78 +gBattleAnimSpriteGfx_BlueLines:: @ 8D0CB78 .incbin "graphics/battle_anims/sprites/082.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_082_palette:: @ 8D0CB9C +gBattleAnimSpritePal_BlueLines:: @ 8D0CB9C .incbin "graphics/battle_anims/sprites/082.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_083_palette:: @ 8D0CBB0 +gBattleAnimSpritePal_Impact3:: @ 8D0CBB0 .incbin "graphics/battle_anims/sprites/083.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_084_palette:: @ 8D0CBD8 +gBattleAnimSpritePal_Impact2:: @ 8D0CBD8 .incbin "graphics/battle_anims/sprites/084.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_085_palette:: @ 8D0CC00 +gBattleAnimSpritePal_Reticle:: @ 8D0CC00 .incbin "graphics/battle_anims/sprites/085.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_086_palette:: @ 8D0CC18 +gBattleAnimSpritePal_Breath:: @ 8D0CC18 .incbin "graphics/battle_anims/sprites/086.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_088_palette:: @ 8D0CC40 +gBattleAnimSpritePal_Snowball:: @ 8D0CC40 .incbin "graphics/battle_anims/sprites/088.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_089_palette:: @ 8D0CC5C +gBattleAnimSpritePal_Vine:: @ 8D0CC5C .incbin "graphics/battle_anims/sprites/089.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_090_palette:: @ 8D0CC84 +gBattleAnimSpritePal_Sword2:: @ 8D0CC84 .incbin "graphics/battle_anims/sprites/090.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_092_palette:: @ 8D0CCA8 +gBattleAnimSpritePal_RedTube:: @ 8D0CCA8 .incbin "graphics/battle_anims/sprites/092.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_093_palette:: @ 8D0CCC4 +gBattleAnimSpritePal_Amnesia:: @ 8D0CCC4 .incbin "graphics/battle_anims/sprites/093.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_094_palette:: @ 8D0CCEC +gBattleAnimSpritePal_String2:: @ 8D0CCEC .incbin "graphics/battle_anims/sprites/094.gbapal.lz" .align 2 @@ -845,179 +845,179 @@ gFile_graphics_unknown_unknown_D0CD0C:: @ 8D0CD0C .incbin "graphics/unknown/unknown_D0CD0C.bin.lz" .align 2 -gFile_graphics_battle_anims_sprites_095_palette:: @ 8D0CD2C +gBattleAnimSpritePal_Pencil2:: @ 8D0CD2C .incbin "graphics/battle_anims/sprites/095.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_096_palette:: @ 8D0CD54 +gBattleAnimSpritePal_Petal:: @ 8D0CD54 .incbin "graphics/battle_anims/sprites/096.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_097_palette:: @ 8D0CD70 +gBattleAnimSpritePal_BentSpoon:: @ 8D0CD70 .incbin "graphics/battle_anims/sprites/097.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_100_palette:: @ 8D0CD98 +gBattleAnimSpritePal_Coin:: @ 8D0CD98 .incbin "graphics/battle_anims/sprites/100.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_101_palette:: @ 8D0CDB4 +gBattleAnimSpritePal_CrackedEgg:: @ 8D0CDB4 .incbin "graphics/battle_anims/sprites/101.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_103_palette:: @ 8D0CDDC +gBattleAnimSpritePal_FreshEgg:: @ 8D0CDDC .incbin "graphics/battle_anims/sprites/103.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_083_sheet:: @ 8D0CE00 +gBattleAnimSpriteGfx_Impact3:: @ 8D0CE00 .incbin "graphics/battle_anims/sprites/083.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_084_sheet:: @ 8D0D2A4 +gBattleAnimSpriteGfx_Impact2:: @ 8D0D2A4 .incbin "graphics/battle_anims/sprites/084.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_085_sheet:: @ 8D0D668 +gBattleAnimSpriteGfx_Reticle:: @ 8D0D668 .incbin "graphics/battle_anims/sprites/085.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_086_sheet:: @ 8D0D720 +gBattleAnimSpriteGfx_Breath:: @ 8D0D720 .incbin "graphics/battle_anims/sprites/086.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_088_sheet:: @ 8D0D890 +gBattleAnimSpriteGfx_Snowball:: @ 8D0D890 .incbin "graphics/battle_anims/sprites/088.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_089_sheet:: @ 8D0D8E0 +gBattleAnimSpriteGfx_Vine:: @ 8D0D8E0 .incbin "graphics/battle_anims/sprites/089.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_090_sheet:: @ 8D0DB54 +gBattleAnimSpriteGfx_Sword2:: @ 8D0DB54 .incbin "graphics/battle_anims/sprites/090.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_091_sheet:: @ 8D0DBE4 +gBattleAnimSpriteGfx_Clapping:: @ 8D0DBE4 .incbin "graphics/battle_anims/sprites/091.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_092_sheet:: @ 8D0DD18 +gBattleAnimSpriteGfx_RedTube:: @ 8D0DD18 .incbin "graphics/battle_anims/sprites/092.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_093_sheet:: @ 8D0DD94 +gBattleAnimSpriteGfx_Amnesia:: @ 8D0DD94 .incbin "graphics/battle_anims/sprites/093.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_094_sheet:: @ 8D0E464 +gBattleAnimSpriteGfx_String2:: @ 8D0E464 .incbin "graphics/battle_anims/sprites/094.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_095_sheet:: @ 8D0E608 +gBattleAnimSpriteGfx_Pencil2:: @ 8D0E608 .incbin "graphics/battle_anims/sprites/095.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_096_sheet:: @ 8D0E6B8 +gBattleAnimSpriteGfx_Petal:: @ 8D0E6B8 .incbin "graphics/battle_anims/sprites/096.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_097_sheet:: @ 8D0E828 +gBattleAnimSpriteGfx_BentSpoon:: @ 8D0E828 .incbin "graphics/battle_anims/sprites/097.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_098_sheet:: @ 8D0EA08 +gBattleAnimSpriteGfx_Web:: @ 8D0EA08 .incbin "graphics/battle_anims/sprites/098.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_100_sheet:: @ 8D0EB40 +gBattleAnimSpriteGfx_Coin:: @ 8D0EB40 .incbin "graphics/battle_anims/sprites/100.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_101_sheet:: @ 8D0EC40 +gBattleAnimSpriteGfx_CrackedEgg:: @ 8D0EC40 .incbin "graphics/battle_anims/sprites/101.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_102_sheet:: @ 8D0ED70 +gBattleAnimSpriteGfx_HatchedEgg:: @ 8D0ED70 .incbin "graphics/battle_anims/sprites/102.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_103_sheet:: @ 8D0EF08 +gBattleAnimSpriteGfx_FreshEgg:: @ 8D0EF08 .incbin "graphics/battle_anims/sprites/103.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_104_sheet:: @ 8D0EF74 +gBattleAnimSpriteGfx_Fangs:: @ 8D0EF74 .incbin "graphics/battle_anims/sprites/104.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_104_palette:: @ 8D0F134 +gBattleAnimSpritePal_Fangs:: @ 8D0F134 .incbin "graphics/battle_anims/sprites/104.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_105_sheet:: @ 8D0F15C +gBattleAnimSpriteGfx_Explosion2:: @ 8D0F15C .incbin "graphics/battle_anims/sprites/105.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_105_palette:: @ 8D0F6E0 +gBattleAnimSpritePal_Explosion2:: @ 8D0F6E0 .incbin "graphics/battle_anims/sprites/105.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_106_sheet:: @ 8D0F708 +gBattleAnimSpriteGfx_Explosion3:: @ 8D0F708 .incbin "graphics/battle_anims/sprites/106.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_107_sheet:: @ 8D0F7F8 +gBattleAnimSpriteGfx_WaterDroplet:: @ 8D0F7F8 .incbin "graphics/battle_anims/sprites/107.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_107_palette:: @ 8D0FBA4 +gBattleAnimSpritePal_WaterDroplet:: @ 8D0FBA4 .incbin "graphics/battle_anims/sprites/107.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_108_sheet:: @ 8D0FBCC +gBattleAnimSpriteGfx_WaterDroplet2:: @ 8D0FBCC .incbin "graphics/battle_anims/sprites/108.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_109_sheet:: @ 8D0FF50 +gBattleAnimSpriteGfx_Seed2:: @ 8D0FF50 .incbin "graphics/battle_anims/sprites/109.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_109_palette:: @ 8D0FF78 +gBattleAnimSpritePal_Seed2:: @ 8D0FF78 .incbin "graphics/battle_anims/sprites/109.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_110_sheet:: @ 8D0FFA0 +gBattleAnimSpriteGfx_Sprout:: @ 8D0FFA0 .incbin "graphics/battle_anims/sprites/110.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_111_sheet:: @ 8D10384 +gBattleAnimSpriteGfx_RedWand:: @ 8D10384 .incbin "graphics/battle_anims/sprites/111.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_111_palette:: @ 8D103C8 +gBattleAnimSpritePal_RedWand:: @ 8D103C8 .incbin "graphics/battle_anims/sprites/111.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_112_sheet:: @ 8D103EC +gBattleAnimSpriteGfx_PurpleGreenUnk:: @ 8D103EC .incbin "graphics/battle_anims/sprites/112.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_112_palette:: @ 8D10714 +gBattleAnimSpritePal_PurpleGreenUnk:: @ 8D10714 .incbin "graphics/battle_anims/sprites/112.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_113_sheet:: @ 8D1073C +gBattleAnimSpriteGfx_WaterColumn:: @ 8D1073C .incbin "graphics/battle_anims/sprites/113.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_113_palette:: @ 8D109A8 +gBattleAnimSpritePal_WaterColumn:: @ 8D109A8 .incbin "graphics/battle_anims/sprites/113.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_114_sheet:: @ 8D109D0 +gBattleAnimSpriteGfx_MudUnk:: @ 8D109D0 .incbin "graphics/battle_anims/sprites/114.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_114_palette:: @ 8D10AC4 +gBattleAnimSpritePal_MudUnk:: @ 8D10AC4 .incbin "graphics/battle_anims/sprites/114.gbapal.lz" .align 2 @@ -1037,7 +1037,7 @@ gFile_graphics_unused_color_frames_palette:: @ 8D115A4 .incbin "graphics/unused/color_frames.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_115_sheet:: @ 8D115CC +gBattleAnimSpriteGfx_RainDrops:: @ 8D115CC .incbin "graphics/battle_anims/sprites/115.4bpp.lz" .align 2 @@ -1132,151 +1132,151 @@ gFile_graphics_battle_interface_unused_window4_sheet:: @ 8D12C00 .incbin "graphics/battle_interface/unused_window4.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_116_sheet:: @ 8D12EB0 +gBattleAnimSpriteGfx_FurySwipes:: @ 8D12EB0 .incbin "graphics/battle_anims/sprites/116.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_116_palette:: @ 8D1315C +gBattleAnimSpritePal_FurySwipes:: @ 8D1315C .incbin "graphics/battle_anims/sprites/116.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_117_sheet:: @ 8D13184 +gBattleAnimSpriteGfx_Vine2:: @ 8D13184 .incbin "graphics/battle_anims/sprites/117.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_117_palette:: @ 8D133C0 +gBattleAnimSpritePal_Vine2:: @ 8D133C0 .incbin "graphics/battle_anims/sprites/117.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_118_sheet:: @ 8D133DC +gBattleAnimSpriteGfx_Teeth:: @ 8D133DC .incbin "graphics/battle_anims/sprites/118.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_118_palette:: @ 8D13574 +gBattleAnimSpritePal_Teeth:: @ 8D13574 .incbin "graphics/battle_anims/sprites/118.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_119_sheet:: @ 8D13590 +gBattleAnimSpriteGfx_Bone2:: @ 8D13590 .incbin "graphics/battle_anims/sprites/119.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_119_palette:: @ 8D13820 +gBattleAnimSpritePal_Bone2:: @ 8D13820 .incbin "graphics/battle_anims/sprites/119.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_120_sheet:: @ 8D13848 +gBattleAnimSpriteGfx_WhiteBag:: @ 8D13848 .incbin "graphics/battle_anims/sprites/120.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_120_palette:: @ 8D1393C +gBattleAnimSpritePal_WhiteBag:: @ 8D1393C .incbin "graphics/battle_anims/sprites/120.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_121_sheet:: @ 8D13964 +gBattleAnimSpriteGfx_Unknown:: @ 8D13964 .incbin "graphics/battle_anims/sprites/121.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_121_palette:: @ 8D13990 +gBattleAnimSpritePal_Unknown:: @ 8D13990 .incbin "graphics/battle_anims/sprites/121.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_122_sheet:: @ 8D139B4 +gBattleAnimSpriteGfx_PurpleCoral:: @ 8D139B4 .incbin "graphics/battle_anims/sprites/122.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_122_palette:: @ 8D13AB0 +gBattleAnimSpritePal_PurpleCoral:: @ 8D13AB0 .incbin "graphics/battle_anims/sprites/122.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_123_sheet:: @ 8D13ACC +gBattleAnimSpriteGfx_PurpleDroplet:: @ 8D13ACC .incbin "graphics/battle_anims/sprites/123.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_124_sheet:: @ 8D13C08 +gBattleAnimSpriteGfx_Shock2:: @ 8D13C08 .incbin "graphics/battle_anims/sprites/124.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_124_palette:: @ 8D13EA0 +gBattleAnimSpritePal_Shock2:: @ 8D13EA0 .incbin "graphics/battle_anims/sprites/124.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_125_sheet:: @ 8D13EC8 +gBattleAnimSpriteGfx_ClosingEye2:: @ 8D13EC8 .incbin "graphics/battle_anims/sprites/125.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_125_palette:: @ 8D13FB4 +gBattleAnimSpritePal_ClosingEye2:: @ 8D13FB4 .incbin "graphics/battle_anims/sprites/125.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_126_sheet:: @ 8D13FDC +gBattleAnimSpriteGfx_MetalBall:: @ 8D13FDC .incbin "graphics/battle_anims/sprites/126.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_126_palette:: @ 8D14044 +gBattleAnimSpritePal_MetalBall:: @ 8D14044 .incbin "graphics/battle_anims/sprites/126.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_127_sheet:: @ 8D14064 +gBattleAnimSpriteGfx_MonsterDoll:: @ 8D14064 .incbin "graphics/battle_anims/sprites/127.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_127_palette:: @ 8D14204 +gBattleAnimSpritePal_MonsterDoll:: @ 8D14204 .incbin "graphics/battle_anims/sprites/127.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_128_sheet:: @ 8D14228 +gBattleAnimSpriteGfx_Whirlwind:: @ 8D14228 .incbin "graphics/battle_anims/sprites/128.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_128_palette:: @ 8D14494 +gBattleAnimSpritePal_Whirlwind:: @ 8D14494 .incbin "graphics/battle_anims/sprites/128.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_129_sheet:: @ 8D144B4 +gBattleAnimSpriteGfx_Whirlwind2:: @ 8D144B4 .incbin "graphics/battle_anims/sprites/129.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_130_sheet:: @ 8D14518 +gBattleAnimSpriteGfx_Explosion4:: @ 8D14518 .incbin "graphics/battle_anims/sprites/130.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_130_palette:: @ 8D148E8 +gBattleAnimSpritePal_Explosion4:: @ 8D148E8 .incbin "graphics/battle_anims/sprites/130.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_131_sheet:: @ 8D14910 +gBattleAnimSpriteGfx_Explosion5:: @ 8D14910 .incbin "graphics/battle_anims/sprites/131.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_132_sheet:: @ 8D14A80 +gBattleAnimSpriteGfx_Tongue:: @ 8D14A80 .incbin "graphics/battle_anims/sprites/132.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_132_palette:: @ 8D14B80 +gBattleAnimSpritePal_Tongue:: @ 8D14B80 .incbin "graphics/battle_anims/sprites/132.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_133_sheet:: @ 8D14BA0 +gBattleAnimSpriteGfx_Smoke:: @ 8D14BA0 .incbin "graphics/battle_anims/sprites/133.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_133_palette:: @ 8D14C1C +gBattleAnimSpritePal_Smoke:: @ 8D14C1C .incbin "graphics/battle_anims/sprites/133.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_134_sheet:: @ 8D14C44 +gBattleAnimSpriteGfx_Smoke2:: @ 8D14C44 .incbin "graphics/battle_anims/sprites/134.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_076_sheet:: @ 8D14D14 +gBattleAnimSpriteGfx_BlueFlames:: @ 8D14D14 .incbin "graphics/battle_anims/sprites/076.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_076_palette:: @ 8D14F50 +gBattleAnimSpritePal_BlueFlames:: @ 8D14F50 .incbin "graphics/battle_anims/sprites/076.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_077_sheet:: @ 8D14F78 +gBattleAnimSpriteGfx_BlueFlames2:: @ 8D14F78 .incbin "graphics/battle_anims/sprites/077.4bpp.lz" .align 2 @@ -1384,63 +1384,63 @@ gFile_graphics_contest_misc_2_palette:: @ 8D1A42C .incbin "graphics/contest/misc_2.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_135_sheet:: @ 8D1A518 +gBattleAnimSpriteGfx_Impact:: @ 8D1A518 .incbin "graphics/battle_anims/sprites/135.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_135_palette:: @ 8D1A5F0 +gBattleAnimSpritePal_Impact:: @ 8D1A5F0 .incbin "graphics/battle_anims/sprites/135.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_particles_sheet:: @ 8D1A608 +gBattleAnimSpriteGfx_Particles:: @ 8D1A608 .incbin "graphics/battle_anims/sprites/particles.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_136_sheet:: @ 8D1A6B8 +gBattleAnimSpriteGfx_CircleImpact:: @ 8D1A6B8 .incbin "graphics/battle_anims/sprites/136.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_136_palette:: @ 8D1A6DC +gBattleAnimSpritePal_CircleImpact:: @ 8D1A6DC .incbin "graphics/battle_anims/sprites/136.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_137_sheet:: @ 8D1A704 +gBattleAnimSpriteGfx_Scratch:: @ 8D1A704 .incbin "graphics/battle_anims/sprites/137.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_139_sheet:: @ 8D1A908 +gBattleAnimSpriteGfx_SharpTeeth:: @ 8D1A908 .incbin "graphics/battle_anims/sprites/139.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_139_palette:: @ 8D1AAF8 +gBattleAnimSpritePal_SharpTeeth:: @ 8D1AAF8 .incbin "graphics/battle_anims/sprites/139.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_145_sheet:: @ 8D1AB18 +gBattleAnimSpriteGfx_Clamp:: @ 8D1AB18 .incbin "graphics/battle_anims/sprites/145.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_138_sheet:: @ 8D1ACB8 +gBattleAnimSpriteGfx_Cut:: @ 8D1ACB8 .incbin "graphics/battle_anims/sprites/138.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_140_sheet:: @ 8D1AE04 +gBattleAnimSpriteGfx_RainbowRings:: @ 8D1AE04 .incbin "graphics/battle_anims/sprites/140.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_140_palette:: @ 8D1AE84 +gBattleAnimSpritePal_RainbowRings:: @ 8D1AE84 .incbin "graphics/battle_anims/sprites/140.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_141_sheet:: @ 8D1AEA4 +gBattleAnimSpriteGfx_IceCrystals:: @ 8D1AEA4 .incbin "graphics/battle_anims/sprites/141.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_141_palette:: @ 8D1AFAC +gBattleAnimSpritePal_IceCrystals:: @ 8D1AFAC .incbin "graphics/battle_anims/sprites/141.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_142_sheet:: @ 8D1AFCC +gBattleAnimSpriteGfx_IceSpikes:: @ 8D1AFCC .incbin "graphics/battle_anims/sprites/142.4bpp.lz" .align 2 @@ -1452,119 +1452,119 @@ gFile_graphics_unused_old_beatup_palette:: @ 8D1B0C8 .incbin "graphics/unused/old_beatup.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_147_sheet:: @ 8D1B0E4 +gBattleAnimSpriteGfx_Orbs:: @ 8D1B0E4 .incbin "graphics/battle_anims/sprites/147.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_147_palette:: @ 8D1B1F8 +gBattleAnimSpritePal_Orbs:: @ 8D1B1F8 .incbin "graphics/battle_anims/sprites/147.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_149_sheet:: @ 8D1B220 +gBattleAnimSpriteGfx_WaterOrb:: @ 8D1B220 .incbin "graphics/battle_anims/sprites/149.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_148_sheet:: @ 8D1B2F0 +gBattleAnimSpriteGfx_WaterImpact:: @ 8D1B2F0 .incbin "graphics/battle_anims/sprites/148.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_148_palette:: @ 8D1B3D4 +gBattleAnimSpritePal_WaterImpact:: @ 8D1B3D4 .incbin "graphics/battle_anims/sprites/148.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_259_palette:: @ 8D1B3F4 +gBattleAnimSpritePal_BrownOrb:: @ 8D1B3F4 .incbin "graphics/battle_anims/sprites/259.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_074_sheet:: @ 8D1B414 +gBattleAnimSpriteGfx_MudSand:: @ 8D1B414 .incbin "graphics/battle_anims/sprites/074.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_074_palette:: @ 8D1B47C +gBattleAnimSpritePal_MudSand:: @ 8D1B47C .incbin "graphics/battle_anims/sprites/074.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_150_sheet:: @ 8D1B4A0 +gBattleAnimSpriteGfx_PoisonBubble:: @ 8D1B4A0 .incbin "graphics/battle_anims/sprites/150.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_150_palette:: @ 8D1B574 +gBattleAnimSpritePal_PoisonBubble:: @ 8D1B574 .incbin "graphics/battle_anims/sprites/150.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_151_sheet:: @ 8D1B590 +gBattleAnimSpriteGfx_ToxicBubble:: @ 8D1B590 .incbin "graphics/battle_anims/sprites/151.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_153_sheet:: @ 8D1B688 +gBattleAnimSpriteGfx_HornHit2:: @ 8D1B688 .incbin "graphics/battle_anims/sprites/153.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_153_palette:: @ 8D1B6F4 +gBattleAnimSpritePal_HornHit2:: @ 8D1B6F4 .incbin "graphics/battle_anims/sprites/153.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_154_sheet:: @ 8D1B70C +gBattleAnimSpriteGfx_AirWave2:: @ 8D1B70C .incbin "graphics/battle_anims/sprites/154.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_154_palette:: @ 8D1B7B8 +gBattleAnimSpritePal_AirWave2:: @ 8D1B7B8 .incbin "graphics/battle_anims/sprites/154.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_155_sheet:: @ 8D1B7D8 +gBattleAnimSpriteGfx_SmallBubbles:: @ 8D1B7D8 .incbin "graphics/battle_anims/sprites/155.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_155_palette:: @ 8D1B8A0 +gBattleAnimSpritePal_SmallBubbles:: @ 8D1B8A0 .incbin "graphics/battle_anims/sprites/155.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_156_sheet:: @ 8D1B8C0 +gBattleAnimSpriteGfx_RoundShadow:: @ 8D1B8C0 .incbin "graphics/battle_anims/sprites/156.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_156_palette:: @ 8D1BAD8 +gBattleAnimSpritePal_RoundShadow:: @ 8D1BAD8 .incbin "graphics/battle_anims/sprites/156.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_157_sheet:: @ 8D1BB00 +gBattleAnimSpriteGfx_Sunlight:: @ 8D1BB00 .incbin "graphics/battle_anims/sprites/157.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_157_palette:: @ 8D1BB64 +gBattleAnimSpritePal_Sunlight:: @ 8D1BB64 .incbin "graphics/battle_anims/sprites/157.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_158_sheet:: @ 8D1BB7C +gBattleAnimSpriteGfx_Spore:: @ 8D1BB7C .incbin "graphics/battle_anims/sprites/158.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_158_palette:: @ 8D1BC44 +gBattleAnimSpritePal_Spore:: @ 8D1BC44 .incbin "graphics/battle_anims/sprites/158.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_159_sheet:: @ 8D1BC68 +gBattleAnimSpriteGfx_Flower:: @ 8D1BC68 .incbin "graphics/battle_anims/sprites/159.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_159_palette:: @ 8D1BCE4 +gBattleAnimSpritePal_Flower:: @ 8D1BCE4 .incbin "graphics/battle_anims/sprites/159.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_160_sheet:: @ 8D1BD0C +gBattleAnimSpriteGfx_RazorLeaf:: @ 8D1BD0C .incbin "graphics/battle_anims/sprites/160.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_160_palette:: @ 8D1BDB4 +gBattleAnimSpritePal_RazorLeaf:: @ 8D1BDB4 .incbin "graphics/battle_anims/sprites/160.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_144_sheet:: @ 8D1BDDC +gBattleAnimSpriteGfx_MistCloud:: @ 8D1BDDC .incbin "graphics/battle_anims/sprites/144.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_144_palette:: @ 8D1BE54 +gBattleAnimSpritePal_MistCloud:: @ 8D1BE54 .incbin "graphics/battle_anims/sprites/144.gbapal.lz" .align 2 @@ -1580,67 +1580,67 @@ gFile_graphics_unknown_unknown_D1BE74_tilemap:: @ 8D1BEB4 .incbin "graphics/unknown/unknown_D1BE74.bin.lz" .align 2 -gFile_graphics_battle_anims_sprites_162_sheet:: @ 8D1BFB8 +gBattleAnimSpriteGfx_WhirlwindLines:: @ 8D1BFB8 .incbin "graphics/battle_anims/sprites/162.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_162_palette:: @ 8D1C03C +gBattleAnimSpritePal_WhirlwindLines:: @ 8D1C03C .incbin "graphics/battle_anims/sprites/162.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_163_sheet:: @ 8D1C05C +gBattleAnimSpriteGfx_GoldRing:: @ 8D1C05C .incbin "graphics/battle_anims/sprites/163.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_163_palette:: @ 8D1C0BC +gBattleAnimSpritePal_GoldRing:: @ 8D1C0BC .incbin "graphics/battle_anims/sprites/163.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_288_palette:: @ 8D1C0D4 +gBattleAnimSpritePal_BlueRing2:: @ 8D1C0D4 .incbin "graphics/battle_anims/sprites/288.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_164_palette:: @ 8D1C0EC +gBattleAnimSpritePal_PurpleRing:: @ 8D1C0EC .incbin "graphics/battle_anims/sprites/164.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_165_palette:: @ 8D1C104 +gBattleAnimSpritePal_BlueRing:: @ 8D1C104 .incbin "graphics/battle_anims/sprites/165.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_166_sheet:: @ 8D1C11C +gBattleAnimSpriteGfx_GreenLightWall:: @ 8D1C11C .incbin "graphics/battle_anims/sprites/166.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_166_palette:: @ 8D1C428 +gBattleAnimSpritePal_GreenLightWall:: @ 8D1C428 .incbin "graphics/battle_anims/sprites/166.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_167_palette:: @ 8D1C448 +gBattleAnimSpritePal_BlueLightWall:: @ 8D1C448 .incbin "graphics/battle_anims/sprites/167.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_168_palette:: @ 8D1C468 +gBattleAnimSpritePal_RedLightWall:: @ 8D1C468 .incbin "graphics/battle_anims/sprites/168.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_169_palette:: @ 8D1C488 +gBattleAnimSpritePal_GrayLightWall:: @ 8D1C488 .incbin "graphics/battle_anims/sprites/169.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_170_palette:: @ 8D1C4A8 +gBattleAnimSpritePal_OrangeLightWall:: @ 8D1C4A8 .incbin "graphics/battle_anims/sprites/170.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_171_sheet:: @ 8D1C4C8 +gBattleAnimSpriteGfx_BlackBall2:: @ 8D1C4C8 .incbin "graphics/battle_anims/sprites/171.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_171_palette:: @ 8D1C514 +gBattleAnimSpritePal_BlackBall2:: @ 8D1C514 .incbin "graphics/battle_anims/sprites/171.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_172_palette:: @ 8D1C53C +gBattleAnimSpritePal_PurpleGasCloud:: @ 8D1C53C .incbin "graphics/battle_anims/sprites/172.gbapal.lz" .align 2 @@ -1652,27 +1652,27 @@ gFile_graphics_contest_judge_palette:: @ 8D1C830 .incbin "graphics/contest/judge.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_001_sheet:: @ 8D1C858 +gBattleAnimSpriteGfx_Spark:: @ 8D1C858 .incbin "graphics/battle_anims/sprites/001.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_001_palette:: @ 8D1C90C +gBattleAnimSpritePal_Spark:: @ 8D1C90C .incbin "graphics/battle_anims/sprites/001.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_173_sheet:: @ 8D1C934 +gBattleAnimSpriteGfx_SparkH:: @ 8D1C934 .incbin "graphics/battle_anims/sprites/173.4bpp.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_00_sheet:: @ 8D1C9BC +gBattleAnimBgImage_Dark:: @ 8D1C9BC .incbin "graphics/battle_anims/backgrounds/00.4bpp.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_00_palette:: @ 8D1CFB4 +gBattleAnimBgPalette_Dark:: @ 8D1CFB4 .incbin "graphics/battle_anims/backgrounds/00.gbapal.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_00_tilemap:: @ 8D1CFD4 +gBattleAnimBgTilemap_Dark:: @ 8D1CFD4 .incbin "graphics/battle_anims/backgrounds/00.bin.lz" .align 2 @@ -1700,119 +1700,119 @@ gFile_graphics_unused_goosuto_tilemap:: @ 8D1D624 .incbin "graphics/unused/goosuto.bin.lz" .align 2 -gFile_graphics_battle_anims_sprites_174_sheet:: @ 8D1D774 +gBattleAnimSpriteGfx_YellowStar:: @ 8D1D774 .incbin "graphics/battle_anims/sprites/174.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_174_palette:: @ 8D1D814 +gBattleAnimSpritePal_YellowStar:: @ 8D1D814 .incbin "graphics/battle_anims/sprites/174.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_175_sheet:: @ 8D1D83C +gBattleAnimSpriteGfx_LargeFreshEgg:: @ 8D1D83C .incbin "graphics/battle_anims/sprites/175.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_175_palette:: @ 8D1D8A0 +gBattleAnimSpritePal_LargeFreshEgg:: @ 8D1D8A0 .incbin "graphics/battle_anims/sprites/175.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_176_sheet:: @ 8D1D8C8 +gBattleAnimSpriteGfx_ShadowBall:: @ 8D1D8C8 .incbin "graphics/battle_anims/sprites/176.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_176_palette:: @ 8D1DA20 +gBattleAnimSpritePal_ShadowBall:: @ 8D1DA20 .incbin "graphics/battle_anims/sprites/176.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_177_sheet:: @ 8D1DA48 +gBattleAnimSpriteGfx_Lick:: @ 8D1DA48 .incbin "graphics/battle_anims/sprites/177.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_177_palette:: @ 8D1DB0C +gBattleAnimSpritePal_Lick:: @ 8D1DB0C .incbin "graphics/battle_anims/sprites/177.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_178_sheet:: @ 8D1DB24 +gBattleAnimSpriteGfx_VoidLines:: @ 8D1DB24 .incbin "graphics/battle_anims/sprites/178.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_178_palette:: @ 8D1DC8C +gBattleAnimSpritePal_VoidLines:: @ 8D1DC8C .incbin "graphics/battle_anims/sprites/178.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_179_palette:: @ 8D1DCB4 +gBattleAnimSpritePal_String:: @ 8D1DCB4 .incbin "graphics/battle_anims/sprites/179.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_179_sheet:: @ 8D1DCDC +gBattleAnimSpriteGfx_String:: @ 8D1DCDC .incbin "graphics/battle_anims/sprites/179.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_180_sheet:: @ 8D1DDB8 +gBattleAnimSpriteGfx_WebThread:: @ 8D1DDB8 .incbin "graphics/battle_anims/sprites/180.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_181_sheet:: @ 8D1DDD0 +gBattleAnimSpriteGfx_SpiderWeb:: @ 8D1DDD0 .incbin "graphics/battle_anims/sprites/181.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_182_sheet:: @ 8D1E160 +gBattleAnimSpriteGfx_Lightbulb:: @ 8D1E160 .incbin "graphics/battle_anims/sprites/182.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_182_palette:: @ 8D1E204 +gBattleAnimSpritePal_Lightbulb:: @ 8D1E204 .incbin "graphics/battle_anims/sprites/182.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_183_sheet:: @ 8D1E22C +gBattleAnimSpriteGfx_Slash:: @ 8D1E22C .incbin "graphics/battle_anims/sprites/183.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_183_palette:: @ 8D1E4A4 +gBattleAnimSpritePal_Slash:: @ 8D1E4A4 .incbin "graphics/battle_anims/sprites/183.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_184_sheet:: @ 8D1E4CC +gBattleAnimSpriteGfx_FocusEnergy:: @ 8D1E4CC .incbin "graphics/battle_anims/sprites/184.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_184_palette:: @ 8D1E620 +gBattleAnimSpritePal_FocusEnergy:: @ 8D1E620 .incbin "graphics/battle_anims/sprites/184.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_185_sheet:: @ 8D1E648 +gBattleAnimSpriteGfx_SphereToCube:: @ 8D1E648 .incbin "graphics/battle_anims/sprites/185.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_185_palette:: @ 8D1EA5C +gBattleAnimSpritePal_SphereToCube:: @ 8D1EA5C .incbin "graphics/battle_anims/sprites/185.gbapal.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_03_sheet:: @ 8D1EA84 +gBattleAnimBgImage_Psychic:: @ 8D1EA84 .incbin "graphics/battle_anims/backgrounds/03.4bpp.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_03_palette:: @ 8D1EC54 +gBattleAnimBgPalette_Psychic:: @ 8D1EC54 .incbin "graphics/battle_anims/backgrounds/03.gbapal.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_03_tilemap:: @ 8D1EC78 +gBattleAnimBgTilemap_Psychic:: @ 8D1EC78 .incbin "graphics/battle_anims/backgrounds/03.bin.lz" .align 2 -gFile_graphics_battle_anims_sprites_187_sheet:: @ 8D1ED40 +gBattleAnimSpriteGfx_Eye:: @ 8D1ED40 .incbin "graphics/battle_anims/sprites/187.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_187_palette:: @ 8D1EF30 +gBattleAnimSpritePal_Eye:: @ 8D1EF30 .incbin "graphics/battle_anims/sprites/187.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_186_sheet:: @ 8D1EF50 +gBattleAnimSpriteGfx_Tendrils:: @ 8D1EF50 .incbin "graphics/battle_anims/sprites/186.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_186_palette:: @ 8D1F31C +gBattleAnimSpritePal_Tendrils:: @ 8D1F31C .incbin "graphics/battle_anims/sprites/186.gbapal.lz" .align 2 @@ -1844,51 +1844,51 @@ gFile_graphics_unused_shadow_palette:: @ 8D1FD94 .incbin "graphics/unused/shadow.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_014_sheet:: @ 8D1FDA8 +gBattleAnimSpriteGfx_LockOn:: @ 8D1FDA8 .incbin "graphics/battle_anims/sprites/014.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_014_palette:: @ 8D1FE3C +gBattleAnimSpritePal_LockOn:: @ 8D1FE3C .incbin "graphics/battle_anims/sprites/014.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_190_sheet:: @ 8D1FE58 +gBattleAnimSpriteGfx_OpeningEye:: @ 8D1FE58 .incbin "graphics/battle_anims/sprites/190.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_190_palette:: @ 8D200B4 +gBattleAnimSpritePal_OpeningEye:: @ 8D200B4 .incbin "graphics/battle_anims/sprites/190.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_191_sheet:: @ 8D200D8 +gBattleAnimSpriteGfx_RoundWhiteHalo:: @ 8D200D8 .incbin "graphics/battle_anims/sprites/191.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_191_palette:: @ 8D20344 +gBattleAnimSpritePal_RoundWhiteHalo:: @ 8D20344 .incbin "graphics/battle_anims/sprites/191.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_189_sheet:: @ 8D2036C +gBattleAnimSpriteGfx_TealAlert:: @ 8D2036C .incbin "graphics/battle_anims/sprites/189.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_189_palette:: @ 8D203F0 +gBattleAnimSpritePal_TealAlert:: @ 8D203F0 .incbin "graphics/battle_anims/sprites/189.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_192_sheet:: @ 8D20410 +gBattleAnimSpriteGfx_FangAttack:: @ 8D20410 .incbin "graphics/battle_anims/sprites/192.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_192_palette:: @ 8D20690 +gBattleAnimSpritePal_FangAttack:: @ 8D20690 .incbin "graphics/battle_anims/sprites/192.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_193_sheet:: @ 8D206B8 +gBattleAnimSpriteGfx_PurpleHandOutline:: @ 8D206B8 .incbin "graphics/battle_anims/sprites/193.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_193_palette:: @ 8D20814 +gBattleAnimSpritePal_PurpleHandOutline:: @ 8D20814 .incbin "graphics/battle_anims/sprites/193.gbapal.lz" .align 2 @@ -1900,523 +1900,523 @@ gFile_graphics_battle_anims_masks_curse_tilemap:: @ 8D20858 .incbin "graphics/battle_anims/masks/curse.bin.lz" .align 2 -gFile_graphics_battle_anims_sprites_002_sheet:: @ 8D20958 +gBattleAnimSpriteGfx_Pencil:: @ 8D20958 .incbin "graphics/battle_anims/sprites/002.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_002_palette:: @ 8D20A3C +gBattleAnimSpritePal_Pencil:: @ 8D20A3C .incbin "graphics/battle_anims/sprites/002.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_196_sheet:: @ 8D20A64 +gBattleAnimSpriteGfx_Spiral:: @ 8D20A64 .incbin "graphics/battle_anims/sprites/196.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_196_palette:: @ 8D20E08 +gBattleAnimSpritePal_Spiral:: @ 8D20E08 .incbin "graphics/battle_anims/sprites/196.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_194_sheet:: @ 8D20E20 +gBattleAnimSpriteGfx_Moon:: @ 8D20E20 .incbin "graphics/battle_anims/sprites/194.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_194_palette:: @ 8D21158 +gBattleAnimSpritePal_Moon:: @ 8D21158 .incbin "graphics/battle_anims/sprites/194.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_195_sheet:: @ 8D21180 +gBattleAnimSpriteGfx_GreenSparkle:: @ 8D21180 .incbin "graphics/battle_anims/sprites/195.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_195_palette:: @ 8D21238 +gBattleAnimSpritePal_GreenSparkle:: @ 8D21238 .incbin "graphics/battle_anims/sprites/195.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_197_sheet:: @ 8D21258 +gBattleAnimSpriteGfx_SnoreZ:: @ 8D21258 .incbin "graphics/battle_anims/sprites/197.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_197_palette:: @ 8D213C8 +gBattleAnimSpritePal_SnoreZ:: @ 8D213C8 .incbin "graphics/battle_anims/sprites/197.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_198_sheet:: @ 8D213F0 +gBattleAnimSpriteGfx_Explosion:: @ 8D213F0 .incbin "graphics/battle_anims/sprites/198.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_198_palette:: @ 8D217E0 +gBattleAnimSpritePal_Explosion:: @ 8D217E0 .incbin "graphics/battle_anims/sprites/198.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_199_sheet:: @ 8D21808 +gBattleAnimSpriteGfx_Nail:: @ 8D21808 .incbin "graphics/battle_anims/sprites/199.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_199_palette:: @ 8D218D0 +gBattleAnimSpritePal_Nail:: @ 8D218D0 .incbin "graphics/battle_anims/sprites/199.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_200_sheet:: @ 8D218EC +gBattleAnimSpriteGfx_GhostlySpirit:: @ 8D218EC .incbin "graphics/battle_anims/sprites/200.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_200_palette:: @ 8D21A2C +gBattleAnimSpritePal_GhostlySpirit:: @ 8D21A2C .incbin "graphics/battle_anims/sprites/200.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_201_sheet:: @ 8D21A48 +gBattleAnimSpriteGfx_WarmRock:: @ 8D21A48 .incbin "graphics/battle_anims/sprites/201.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_201_palette:: @ 8D220B8 +gBattleAnimSpritePal_WarmRock:: @ 8D220B8 .incbin "graphics/battle_anims/sprites/201.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_204_sheet:: @ 8D220E0 +gBattleAnimSpriteGfx_PunchImpact:: @ 8D220E0 .incbin "graphics/battle_anims/sprites/204.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_204_palette:: @ 8D22254 +gBattleAnimSpritePal_PunchImpact:: @ 8D22254 .incbin "graphics/battle_anims/sprites/204.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_202_sheet:: @ 8D2227C +gBattleAnimSpriteGfx_BreakingEgg:: @ 8D2227C .incbin "graphics/battle_anims/sprites/202.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_202_palette:: @ 8D223E4 +gBattleAnimSpritePal_BreakingEgg:: @ 8D223E4 .incbin "graphics/battle_anims/sprites/202.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_203_sheet:: @ 8D22408 +gBattleAnimSpriteGfx_ThinRing:: @ 8D22408 .incbin "graphics/battle_anims/sprites/203.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_203_palette:: @ 8D225B4 +gBattleAnimSpritePal_ThinRing:: @ 8D225B4 .incbin "graphics/battle_anims/sprites/203.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_206_sheet:: @ 8D225D8 +gBattleAnimSpriteGfx_MusicNotes2:: @ 8D225D8 .incbin "graphics/battle_anims/sprites/206.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_206_palette:: @ 8D227E4 +gBattleAnimSpritePal_MusicNotes2:: @ 8D227E4 .incbin "graphics/battle_anims/sprites/206.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_205_sheet:: @ 8D22878 +gBattleAnimSpriteGfx_Bell:: @ 8D22878 .incbin "graphics/battle_anims/sprites/205.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_205_palette:: @ 8D22AAC +gBattleAnimSpritePal_Bell:: @ 8D22AAC .incbin "graphics/battle_anims/sprites/205.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_207_sheet:: @ 8D22AD0 +gBattleAnimSpriteGfx_SpeedDust:: @ 8D22AD0 .incbin "graphics/battle_anims/sprites/207.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_207_palette:: @ 8D22B9C +gBattleAnimSpritePal_SpeedDust:: @ 8D22B9C .incbin "graphics/battle_anims/sprites/207.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_208_sheet:: @ 8D22BC0 +gBattleAnimSpriteGfx_TornMetal:: @ 8D22BC0 .incbin "graphics/battle_anims/sprites/208.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_209_sheet:: @ 8D22FB0 +gBattleAnimSpriteGfx_ThoughtBubble:: @ 8D22FB0 .incbin "graphics/battle_anims/sprites/209.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_209_palette:: @ 8D232B8 +gBattleAnimSpritePal_ThoughtBubble:: @ 8D232B8 .incbin "graphics/battle_anims/sprites/209.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_064_sheet:: @ 8D232D8 +gBattleAnimSpriteGfx_Finger:: @ 8D232D8 .incbin "graphics/battle_anims/sprites/064.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_064_palette:: @ 8D233C8 +gBattleAnimSpritePal_Finger:: @ 8D233C8 .incbin "graphics/battle_anims/sprites/064.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_210_sheet:: @ 8D233EC +gBattleAnimSpriteGfx_MagentaHeart:: @ 8D233EC .incbin "graphics/battle_anims/sprites/210.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_219_palette:: @ 8D23454 +gBattleAnimSpritePal_PinkHeart:: @ 8D23454 .incbin "graphics/battle_anims/sprites/219.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_210_palette:: @ 8D23474 +gBattleAnimSpritePal_MagentaHeart:: @ 8D23474 .incbin "graphics/battle_anims/sprites/210.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_216_palette:: @ 8D23494 +gBattleAnimSpritePal_RedHeart:: @ 8D23494 .incbin "graphics/battle_anims/sprites/216.gbapal.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_attract_sheet:: @ 8D234B4 +gBattleAnimBg_AttractGfx:: @ 8D234B4 .incbin "graphics/battle_anims/backgrounds/attract.4bpp.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_attract_palette:: @ 8D23F24 +gBattleAnimBg_AttractPal:: @ 8D23F24 .incbin "graphics/battle_anims/backgrounds/attract.gbapal.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_attract_tilemap:: @ 8D23F4C +gBattleAnimBg_AttractTilemap:: @ 8D23F4C .incbin "graphics/battle_anims/backgrounds/attract.bin.lz" .align 2 -gFile_graphics_battle_anims_sprites_217_sheet:: @ 8D241C8 +gBattleAnimSpriteGfx_RedOrb:: @ 8D241C8 .incbin "graphics/battle_anims/sprites/217.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_217_palette:: @ 8D24230 +gBattleAnimSpritePal_RedOrb:: @ 8D24230 .incbin "graphics/battle_anims/sprites/217.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_212_sheet:: @ 8D24250 +gBattleAnimSpriteGfx_CircleOfLight:: @ 8D24250 .incbin "graphics/battle_anims/sprites/212.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_211_sheet:: @ 8D24484 +gBattleAnimSpriteGfx_ElectricOrbs:: @ 8D24484 .incbin "graphics/battle_anims/sprites/211.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_213_sheet:: @ 8D244D4 +gBattleAnimSpriteGfx_Electricity:: @ 8D244D4 .incbin "graphics/battle_anims/sprites/213.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_211_palette:: @ 8D24740 +gBattleAnimSpritePal_ElectricOrbs:: @ 8D24740 .incbin "graphics/battle_anims/sprites/211.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_214_sheet:: @ 8D24764 +gBattleAnimSpriteGfx_Finger2:: @ 8D24764 .incbin "graphics/battle_anims/sprites/214.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_215_sheet:: @ 8D249F4 +gBattleAnimSpriteGfx_MovementWaves:: @ 8D249F4 .incbin "graphics/battle_anims/sprites/215.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_215_palette:: @ 8D24B80 +gBattleAnimSpritePal_MovementWaves:: @ 8D24B80 .incbin "graphics/battle_anims/sprites/215.gbapal.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_scary_face_palette:: @ 8D24BA4 +gBattleAnim_ScaryFacePal:: @ 8D24BA4 .incbin "graphics/battle_anims/backgrounds/scary_face.gbapal.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_scary_face_sheet:: @ 8D24BCC +gBattleAnim_ScaryFaceGfx:: @ 8D24BCC .incbin "graphics/battle_anims/backgrounds/scary_face.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_218_palette:: @ 8D24DFC +gBattleAnimSpritePal_EyeSparkle:: @ 8D24DFC .incbin "graphics/battle_anims/sprites/218.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_218_sheet:: @ 8D24E24 +gBattleAnimSpriteGfx_EyeSparkle:: @ 8D24E24 .incbin "graphics/battle_anims/sprites/218.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_087_sheet:: @ 8D24ED0 +gBattleAnimSpriteGfx_Anger:: @ 8D24ED0 .incbin "graphics/battle_anims/sprites/087.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_087_palette:: @ 8D24F28 +gBattleAnimSpritePal_Anger:: @ 8D24F28 .incbin "graphics/battle_anims/sprites/087.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_018_sheet:: @ 8D24F50 +gBattleAnimSpriteGfx_Conversion:: @ 8D24F50 .incbin "graphics/battle_anims/sprites/018.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_018_palette:: @ 8D24F8C +gBattleAnimSpritePal_Conversion:: @ 8D24F8C .incbin "graphics/battle_anims/sprites/018.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_220_palette:: @ 8D24FA8 +gBattleAnimSpritePal_Angel:: @ 8D24FA8 .incbin "graphics/battle_anims/sprites/220.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_220_sheet:: @ 8D24FD0 +gBattleAnimSpriteGfx_Angel:: @ 8D24FD0 .incbin "graphics/battle_anims/sprites/220.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_221_palette:: @ 8D250FC +gBattleAnimSpritePal_Devil:: @ 8D250FC .incbin "graphics/battle_anims/sprites/221.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_221_sheet:: @ 8D2511C +gBattleAnimSpriteGfx_Devil:: @ 8D2511C .incbin "graphics/battle_anims/sprites/221.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_222_sheet:: @ 8D25380 +gBattleAnimSpriteGfx_Swipe:: @ 8D25380 .incbin "graphics/battle_anims/sprites/222.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_222_palette:: @ 8D2566C +gBattleAnimSpritePal_Swipe:: @ 8D2566C .incbin "graphics/battle_anims/sprites/222.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_223_palette:: @ 8D25694 +gBattleAnimSpritePal_Roots:: @ 8D25694 .incbin "graphics/battle_anims/sprites/223.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_223_sheet:: @ 8D256B4 +gBattleAnimSpriteGfx_Roots:: @ 8D256B4 .incbin "graphics/battle_anims/sprites/223.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_224_palette:: @ 8D25948 +gBattleAnimSpritePal_ItemBag:: @ 8D25948 .incbin "graphics/battle_anims/sprites/224.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_224_sheet:: @ 8D25968 +gBattleAnimSpriteGfx_ItemBag:: @ 8D25968 .incbin "graphics/battle_anims/sprites/224.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_230_palette:: @ 8D25A64 +gBattleAnimSpritePal_TriForceTriangle:: @ 8D25A64 .incbin "graphics/battle_anims/sprites/230.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_230_sheet:: @ 8D25A8C +gBattleAnimSpriteGfx_TriForceTriangle:: @ 8D25A8C .incbin "graphics/battle_anims/sprites/230.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_228_palette:: @ 8D25CD0 +gBattleAnimSpritePal_LetterZ:: @ 8D25CD0 .incbin "graphics/battle_anims/sprites/228.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_228_sheet:: @ 8D25CF0 +gBattleAnimSpriteGfx_LetterZ:: @ 8D25CF0 .incbin "graphics/battle_anims/sprites/228.4bpp.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_04_palette:: @ 8D25D98 +gBattleAnimBgPalette_Impact:: @ 8D25D98 .incbin "graphics/battle_anims/backgrounds/04.gbapal.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_04_sheet:: @ 8D25DC0 +gBattleAnimBgImage_Impact:: @ 8D25DC0 .incbin "graphics/battle_anims/backgrounds/04.4bpp.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_04_tilemap:: @ 8D26B2C +gBattleAnimBgTilemap_ImpactOpponent:: @ 8D26B2C .incbin "graphics/battle_anims/backgrounds/04.bin.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_05_tilemap:: @ 8D27028 +gBattleAnimBgTilemap_ImpactPlayer:: @ 8D27028 .incbin "graphics/battle_anims/backgrounds/05.bin.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_06_tilemap:: @ 8D274F8 +gBattleAnimBgTilemap_ImpactContests:: @ 8D274F8 .incbin "graphics/battle_anims/backgrounds/06.bin.lz" .align 2 -gFile_graphics_battle_anims_sprites_225_sheet:: @ 8D27938 +gBattleAnimSpriteGfx_JaggedMusicNote:: @ 8D27938 .incbin "graphics/battle_anims/sprites/225.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_225_palette:: @ 8D27ABC +gBattleAnimSpritePal_JaggedMusicNote:: @ 8D27ABC .incbin "graphics/battle_anims/sprites/225.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_227_sheet:: @ 8D27AE4 +gBattleAnimSpriteGfx_Spotlight:: @ 8D27AE4 .incbin "graphics/battle_anims/sprites/227.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_226_sheet:: @ 8D27C2C +gBattleAnimSpriteGfx_Pokeball:: @ 8D27C2C .incbin "graphics/battle_anims/sprites/226.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_226_palette:: @ 8D27CB8 +gBattleAnimSpritePal_Pokeball:: @ 8D27CB8 .incbin "graphics/battle_anims/sprites/226.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_229_sheet:: @ 8D27CDC +gBattleAnimSpriteGfx_RapidSpin:: @ 8D27CDC .incbin "graphics/battle_anims/sprites/229.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_229_palette:: @ 8D27E98 +gBattleAnimSpritePal_RapidSpin:: @ 8D27E98 .incbin "graphics/battle_anims/sprites/229.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_099_sheet:: @ 8D27EC0 +gBattleAnimSpriteGfx_MilkBottle:: @ 8D27EC0 .incbin "graphics/battle_anims/sprites/099.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_099_palette:: @ 8D27FE0 +gBattleAnimSpritePal_MilkBottle:: @ 8D27FE0 .incbin "graphics/battle_anims/sprites/099.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_232_sheet:: @ 8D28008 +gBattleAnimSpriteGfx_WispFire:: @ 8D28008 .incbin "graphics/battle_anims/sprites/232.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_231_palette:: @ 8D28540 +gBattleAnimSpritePal_WispOrb:: @ 8D28540 .incbin "graphics/battle_anims/sprites/231.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_231_sheet:: @ 8D28568 +gBattleAnimSpriteGfx_WispOrb:: @ 8D28568 .incbin "graphics/battle_anims/sprites/231.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_233_sheet:: @ 8D28738 +gBattleAnimSpriteGfx_GoldStars:: @ 8D28738 .incbin "graphics/battle_anims/sprites/233.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_233_palette:: @ 8D287BC +gBattleAnimSpritePal_GoldStars:: @ 8D287BC .incbin "graphics/battle_anims/sprites/233.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_234_sheet:: @ 8D287E4 +gBattleAnimSpriteGfx_EclipsingOrb:: @ 8D287E4 .incbin "graphics/battle_anims/sprites/234.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_234_palette:: @ 8D289A4 +gBattleAnimSpritePal_EclipsingOrb:: @ 8D289A4 .incbin "graphics/battle_anims/sprites/234.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_238_sheet:: @ 8D289C8 +gBattleAnimSpriteGfx_PinkPetal:: @ 8D289C8 .incbin "graphics/battle_anims/sprites/238.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_238_palette:: @ 8D28A30 +gBattleAnimSpritePal_PinkPetal:: @ 8D28A30 .incbin "graphics/battle_anims/sprites/238.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_235_sheet:: @ 8D28A54 +gBattleAnimSpriteGfx_GrayOrb:: @ 8D28A54 .incbin "graphics/battle_anims/sprites/235.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_235_palette:: @ 8D28AA4 +gBattleAnimSpritePal_GrayOrb:: @ 8D28AA4 .incbin "graphics/battle_anims/sprites/235.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_236_palette:: @ 8D28AC0 +gBattleAnimSpritePal_BlueOrb:: @ 8D28AC0 .incbin "graphics/battle_anims/sprites/236.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_237_palette:: @ 8D28ADC +gBattleAnimSpritePal_RedOrb2:: @ 8D28ADC .incbin "graphics/battle_anims/sprites/237.gbapal.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_07_sheet:: @ 8D28AF8 +gBattleAnimBgImage_Drill:: @ 8D28AF8 .incbin "graphics/battle_anims/backgrounds/07.4bpp.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_07_palette:: @ 8D28CA0 +gBattleAnimBgPalette_Drill:: @ 8D28CA0 .incbin "graphics/battle_anims/backgrounds/07.gbapal.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_18_palette:: @ 8D28CC8 +gBattleAnimBgPalette_Sky:: @ 8D28CC8 .incbin "graphics/battle_anims/backgrounds/18.gbapal.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_07_tilemap:: @ 8D28CF0 +gBattleAnimBgTilemap_Drill:: @ 8D28CF0 .incbin "graphics/battle_anims/backgrounds/07.bin.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_08_tilemap:: @ 8D28E80 +gBattleAnimBgTilemap_DrillContests:: @ 8D28E80 .incbin "graphics/battle_anims/backgrounds/08.bin.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_20_sheet:: @ 8D2900C +gBattleAnimBgImage_Aurora:: @ 8D2900C .incbin "graphics/battle_anims/backgrounds/20.4bpp.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_20_palette:: @ 8D29A34 +gBattleAnimBgPalette_Aurora:: @ 8D29A34 .incbin "graphics/battle_anims/backgrounds/20.gbapal.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_20_tilemap:: @ 8D29A54 +gBattleAnimBgTilemap_Aurora:: @ 8D29A54 .incbin "graphics/battle_anims/backgrounds/20.bin.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_09_tilemap:: @ 8D29C58 +gBattleAnimBgTilemap_HighspeedOpponent:: @ 8D29C58 .incbin "graphics/battle_anims/backgrounds/09.bin.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_09_palette:: @ 8D29F50 +gBattleAnimBgPalette_Highspeed:: @ 8D29F50 .incbin "graphics/battle_anims/backgrounds/09.gbapal.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_22_palette:: @ 8D29F70 +gBattleAnimBgPalette_Bug:: @ 8D29F70 .incbin "graphics/battle_anims/backgrounds/22.gbapal.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_09_sheet:: @ 8D29F90 +gBattleAnimBgImage_Highspeed:: @ 8D29F90 .incbin "graphics/battle_anims/backgrounds/09.4bpp.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_10_tilemap:: @ 8D2A510 +gBattleAnimBgTilemap_HighspeedPlayer:: @ 8D2A510 .incbin "graphics/battle_anims/backgrounds/10.bin.lz" .align 2 -gFile_graphics_battle_anims_masks_morning_sun_sheet:: @ 8D2A808 +gBattleAnim_MorningSunGfx:: @ 8D2A808 .incbin "graphics/battle_anims/masks/morning_sun.4bpp.lz" .align 2 -gFile_graphics_battle_anims_masks_morning_sun_palette:: @ 8D2A8A8 +gBattleAnim_MorningSunPal:: @ 8D2A8A8 .incbin "graphics/battle_anims/masks/morning_sun.gbapal.lz" .align 2 -gFile_graphics_battle_anims_masks_morning_sun_tilemap:: @ 8D2A8C0 +gBattleAnim_MorningSunTilemap:: @ 8D2A8C0 .incbin "graphics/battle_anims/masks/morning_sun.bin.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_12_tilemap:: @ 8D2A9DC +gBattleAnimBgTilemap_GuillotineOpponent:: @ 8D2A9DC .incbin "graphics/battle_anims/backgrounds/12.bin.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_13_tilemap:: @ 8D2ACA4 +gBattleAnimBgTilemap_GuillotinePlayer:: @ 8D2ACA4 .incbin "graphics/battle_anims/backgrounds/13.bin.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_14_tilemap:: @ 8D2AFA0 +gBattleAnimBgTilemap_GuillotineContests:: @ 8D2AFA0 .incbin "graphics/battle_anims/backgrounds/14.bin.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_12_sheet:: @ 8D2B230 +gBattleAnimBgImage_Guillotine:: @ 8D2B230 .incbin "graphics/battle_anims/backgrounds/12.4bpp.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_12_palette:: @ 8D2BF98 +gBattleAnimBgPalette_Guillotine:: @ 8D2BF98 .incbin "graphics/battle_anims/backgrounds/12.gbapal.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_11_sheet:: @ 8D2BFB8 +gBattleAnimBgImage_Thunder:: @ 8D2BFB8 .incbin "graphics/battle_anims/backgrounds/11.4bpp.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_11_palette:: @ 8D2C954 +gBattleAnimBgPalette_Thunder:: @ 8D2C954 .incbin "graphics/battle_anims/backgrounds/11.gbapal.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_11_tilemap:: @ 8D2C97C +gBattleAnimBgTilemap_Thunder:: @ 8D2C97C .incbin "graphics/battle_anims/backgrounds/11.bin.lz" .align 2 -gFile_graphics_battle_anims_sprites_239_sheet:: @ 8D2CC74 +gBattleAnimSpriteGfx_PainSplit:: @ 8D2CC74 .incbin "graphics/battle_anims/sprites/239.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_239_palette:: @ 8D2CD58 +gBattleAnimSpritePal_PainSplit:: @ 8D2CD58 .incbin "graphics/battle_anims/sprites/239.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_143_sheet:: @ 8D2CD80 +gBattleAnimSpriteGfx_HandsAndFeet:: @ 8D2CD80 .incbin "graphics/battle_anims/sprites/143.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_143_palette:: @ 8D2CFB0 +gBattleAnimSpritePal_HandsAndFeet:: @ 8D2CFB0 .incbin "graphics/battle_anims/sprites/143.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_240_sheet:: @ 8D2CFC8 +gBattleAnimSpriteGfx_Confetti:: @ 8D2CFC8 .incbin "graphics/battle_anims/sprites/240.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_240_palette:: @ 8D2D068 +gBattleAnimSpritePal_Confetti:: @ 8D2D068 .incbin "graphics/battle_anims/sprites/240.gbapal.lz" .align 2 @@ -2432,11 +2432,11 @@ gSubstituteDollTilemap:: @ 8D2D2F4 .incbin "graphics/battle_anims/sprites/substitute.bin.lz" .align 2 -gFile_graphics_battle_anims_sprites_241_sheet:: @ 8D2D51C +gBattleAnimSpriteGfx_GreenStar:: @ 8D2D51C .incbin "graphics/battle_anims/sprites/241.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_241_palette:: @ 8D2D5E0 +gBattleAnimSpritePal_GreenStar:: @ 8D2D5E0 .incbin "graphics/battle_anims/sprites/241.gbapal.lz" .align 2 @@ -2448,19 +2448,19 @@ gFile_graphics_misc_confetti_palette:: @ 8D2D71C .incbin "graphics/misc/confetti.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_242_sheet:: @ 8D2D744 +gBattleAnimSpriteGfx_PinkCloud:: @ 8D2D744 .incbin "graphics/battle_anims/sprites/242.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_242_palette:: @ 8D2D880 +gBattleAnimSpritePal_PinkCloud:: @ 8D2D880 .incbin "graphics/battle_anims/sprites/242.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_243_sheet:: @ 8D2D8A4 +gBattleAnimSpriteGfx_SweatDrop:: @ 8D2D8A4 .incbin "graphics/battle_anims/sprites/243.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_243_palette:: @ 8D2D8CC +gBattleAnimSpritePal_SweatDrop:: @ 8D2D8CC .incbin "graphics/battle_anims/sprites/243.gbapal.lz" .align 2 @@ -2508,135 +2508,135 @@ gBattleStatMask8_Pal:: @ 8D2DE1C .incbin "graphics/battle_anims/masks/stat8.gbapal.lz" .align 2 -gFile_graphics_battle_anims_masks_cure_bubbles_sheet:: @ 8D2DE3C +gCureBubblesGfx:: @ 8D2DE3C .incbin "graphics/battle_anims/masks/cure_bubbles.4bpp.lz" .align 2 -gFile_graphics_battle_anims_masks_cure_bubbles_palette:: @ 8D2DF78 +gCureBubblesPal:: @ 8D2DF78 .incbin "graphics/battle_anims/masks/cure_bubbles.gbapal.lz" .align 2 -gFile_graphics_battle_anims_masks_cure_bubbles_tilemap:: @ 8D2DF98 +gCureBubblesTilemap:: @ 8D2DF98 .incbin "graphics/battle_anims/masks/cure_bubbles.bin.lz" .align 2 -gFile_graphics_battle_anims_sprites_245_palette:: @ 8D2E0B4 +gBattleAnimSpritePal_PurpleScratch:: @ 8D2E0B4 .incbin "graphics/battle_anims/sprites/245.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_245_sheet:: @ 8D2E0DC +gBattleAnimSpriteGfx_PurpleScratch:: @ 8D2E0DC .incbin "graphics/battle_anims/sprites/245.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_246_sheet:: @ 8D2E280 +gBattleAnimSpriteGfx_PurpleSwipe:: @ 8D2E280 .incbin "graphics/battle_anims/sprites/246.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_244_sheet:: @ 8D2E728 +gBattleAnimSpriteGfx_GuardRing:: @ 8D2E728 .incbin "graphics/battle_anims/sprites/244.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_244_palette:: @ 8D2E804 +gBattleAnimSpritePal_GuardRing:: @ 8D2E804 .incbin "graphics/battle_anims/sprites/244.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_247_sheet:: @ 8D2E820 +gBattleAnimSpriteGfx_TagHand:: @ 8D2E820 .incbin "graphics/battle_anims/sprites/247.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_053_sheet:: @ 8D2EA04 +gBattleAnimSpriteGfx_NoiseLine:: @ 8D2EA04 .incbin "graphics/battle_anims/sprites/053.4bpp.lz" .align 2 -gFile_graphics_battle_anims_masks_unknown_D2EC24_sheet:: @ 8D2EC24 +gUnknown_D2EC24_Gfx:: @ 8D2EC24 .incbin "graphics/battle_anims/masks/unknown_D2EC24.4bpp.lz" .align 2 -gFile_graphics_battle_anims_masks_unknown_D2EC24_tilemap:: @ 8D2EC70 +gUnknown_D2EC24_Tilemap:: @ 8D2EC70 .incbin "graphics/battle_anims/masks/unknown_D2EC24.bin.lz" .align 2 -gFile_graphics_battle_anims_sprites_248_sheet:: @ 8D2ED78 +gBattleAnimSpriteGfx_SmallRedEye:: @ 8D2ED78 .incbin "graphics/battle_anims/sprites/248.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_248_palette:: @ 8D2ED90 +gBattleAnimSpritePal_SmallRedEye:: @ 8D2ED90 .incbin "graphics/battle_anims/sprites/248.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_249_sheet:: @ 8D2EDA8 +gBattleAnimSpriteGfx_HollowOrb:: @ 8D2EDA8 .incbin "graphics/battle_anims/sprites/249.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_249_palette:: @ 8D2EDF8 +gBattleAnimSpritePal_HollowOrb:: @ 8D2EDF8 .incbin "graphics/battle_anims/sprites/249.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_250_sheet:: @ 8D2EE18 +gBattleAnimSpriteGfx_XSign:: @ 8D2EE18 .incbin "graphics/battle_anims/sprites/250.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_251_sheet:: @ 8D2F00C +gBattleAnimSpriteGfx_BluegreenOrb:: @ 8D2F00C .incbin "graphics/battle_anims/sprites/251.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_251_palette:: @ 8D2F070 +gBattleAnimSpritePal_BluegreenOrb:: @ 8D2F070 .incbin "graphics/battle_anims/sprites/251.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_252_sheet:: @ 8D2F088 +gBattleAnimSpriteGfx_PawPrint:: @ 8D2F088 .incbin "graphics/battle_anims/sprites/252.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_252_palette:: @ 8D2F1A0 +gBattleAnimSpritePal_PawPrint:: @ 8D2F1A0 .incbin "graphics/battle_anims/sprites/252.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_253_sheet:: @ 8D2F1C4 +gBattleAnimSpriteGfx_PurpleFlame:: @ 8D2F1C4 .incbin "graphics/battle_anims/sprites/253.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_253_palette:: @ 8D2F3A0 +gBattleAnimSpritePal_PurpleFlame:: @ 8D2F3A0 .incbin "graphics/battle_anims/sprites/253.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_254_sheet:: @ 8D2F3C8 +gBattleAnimSpriteGfx_RedBall:: @ 8D2F3C8 .incbin "graphics/battle_anims/sprites/254.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_254_palette:: @ 8D2F500 +gBattleAnimSpritePal_RedBall:: @ 8D2F500 .incbin "graphics/battle_anims/sprites/254.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_255_sheet:: @ 8D2F528 +gBattleAnimSpriteGfx_SmellingsaltEffect:: @ 8D2F528 .incbin "graphics/battle_anims/sprites/255.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_255_palette:: @ 8D2F5A0 +gBattleAnimSpritePal_SmellingsaltEffect:: @ 8D2F5A0 .incbin "graphics/battle_anims/sprites/255.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_258_sheet:: @ 8D2F5B4 +gBattleAnimSpriteGfx_MagnifyingGlass:: @ 8D2F5B4 .incbin "graphics/battle_anims/sprites/258.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_258_palette:: @ 8D2F69C +gBattleAnimSpritePal_MagnifyingGlass:: @ 8D2F69C .incbin "graphics/battle_anims/sprites/258.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_256_sheet:: @ 8D2F6C4 +gBattleAnimSpriteGfx_Meteor:: @ 8D2F6C4 .incbin "graphics/battle_anims/sprites/256.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_256_palette:: @ 8D2FA50 +gBattleAnimSpritePal_Meteor:: @ 8D2FA50 .incbin "graphics/battle_anims/sprites/256.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_257_sheet:: @ 8D2FA78 +gBattleAnimSpriteGfx_FlatRock:: @ 8D2FA78 .incbin "graphics/battle_anims/sprites/257.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_257_palette:: @ 8D2FB94 +gBattleAnimSpritePal_FlatRock:: @ 8D2FB94 .incbin "graphics/battle_anims/sprites/257.gbapal.lz" .align 2 @@ -13594,7 +13594,7 @@ gFile_graphics_battle_terrain_building_anim_map_tilemap:: @ 8E790C4 .incbin "graphics/battle_terrain/building/anim_map.bin.lz" .align 2 -gFile_graphics_battle_anims_sprites_261_sheet:: @ 8E791E8 +gBattleAnimSpriteGfx_FlyingDirt:: @ 8E791E8 .incbin "graphics/battle_anims/sprites/261.4bpp.lz" .align 2 @@ -13610,31 +13610,31 @@ gBattleAnimSpritePal_FlyingDirt:: @ 8E799FC .incbin "graphics/battle_anims/sprites/261.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_260_sheet:: @ 8E79A24 +gBattleAnimSpriteGfx_MetalSoundWaves:: @ 8E79A24 .incbin "graphics/battle_anims/sprites/260.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_260_palette:: @ 8E79BE0 +gBattleAnimSpritePal_MetalSoundWaves:: @ 8E79BE0 .incbin "graphics/battle_anims/sprites/260.gbapal.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_15_sheet:: @ 8E79BF8 +gBattleAnimBgImage_Ice:: @ 8E79BF8 .incbin "graphics/battle_anims/backgrounds/15.4bpp.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_15_palette:: @ 8E7A568 +gBattleAnimBgPalette_Ice:: @ 8E7A568 .incbin "graphics/battle_anims/backgrounds/15.gbapal.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_15_tilemap:: @ 8E7A58C +gBattleAnimBgTilemap_Ice:: @ 8E7A58C .incbin "graphics/battle_anims/backgrounds/15.bin.lz" .align 2 -gFile_graphics_battle_anims_sprites_262_sheet:: @ 8E7A784 +gBattleAnimSpriteGfx_IcicleSpear:: @ 8E7A784 .incbin "graphics/battle_anims/sprites/262.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_262_palette:: @ 8E7A858 +gBattleAnimSpritePal_IcicleSpear:: @ 8E7A858 .incbin "graphics/battle_anims/sprites/262.gbapal.lz" .align 2 @@ -13650,23 +13650,23 @@ gFile_graphics_contest_nextturn_random:: @ 8E7A95C .incbin "graphics/contest/next_turn_random.4bpp" .align 2 -gFile_graphics_battle_anims_sprites_264_sheet:: @ 8E7A97C +gBattleAnimSpriteGfx_GlowyRedOrb:: @ 8E7A97C .incbin "graphics/battle_anims/sprites/264.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_264_palette:: @ 8E7A99C +gBattleAnimSpritePal_GlowyRedOrb:: @ 8E7A99C .incbin "graphics/battle_anims/sprites/264.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_265_palette:: @ 8E7A9B4 +gBattleAnimSpritePal_GlowyGreenOrb:: @ 8E7A9B4 .incbin "graphics/battle_anims/sprites/265.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_067_palette:: @ 8E7A9CC +gBattleAnimSpritePal_SleepPowder:: @ 8E7A9CC .incbin "graphics/battle_anims/sprites/067.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_068_palette:: @ 8E7A9EC +gBattleAnimSpritePal_StunSpore:: @ 8E7A9EC .incbin "graphics/battle_anims/sprites/068.gbapal.lz" .align 2 @@ -13682,59 +13682,59 @@ gFile_graphics_contest_nextturn:: @ 8E7ABB8 .incbin "graphics/contest/next_turn.gbapal" .align 2 -gFile_graphics_battle_anims_sprites_272_sheet:: @ 8E7ABD8 +gBattleAnimSpriteGfx_Splash:: @ 8E7ABD8 .incbin "graphics/battle_anims/sprites/272.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_272_palette:: @ 8E7ADF4 +gBattleAnimSpritePal_Splash:: @ 8E7ADF4 .incbin "graphics/battle_anims/sprites/272.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_273_sheet:: @ 8E7AE18 +gBattleAnimSpriteGfx_SweatBead:: @ 8E7AE18 .incbin "graphics/battle_anims/sprites/273.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_269_sheet:: @ 8E7AE40 +gBattleAnimSpriteGfx_Pokeblock:: @ 8E7AE40 .incbin "graphics/battle_anims/sprites/269.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_269_palette:: @ 8E7AE94 +gBattleAnimSpritePal_Pokeblock:: @ 8E7AE94 .incbin "graphics/battle_anims/sprites/269.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_274_sheet:: @ 8E7AEAC +gBattleAnimSpriteGfx_Gem1:: @ 8E7AEAC .incbin "graphics/battle_anims/sprites/274.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_275_sheet:: @ 8E7B02C +gBattleAnimSpriteGfx_Gem2:: @ 8E7B02C .incbin "graphics/battle_anims/sprites/275.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_276_sheet:: @ 8E7B198 +gBattleAnimSpriteGfx_Gem3:: @ 8E7B198 .incbin "graphics/battle_anims/sprites/276.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_274_palette:: @ 8E7B300 +gBattleAnimSpritePal_Gem1:: @ 8E7B300 .incbin "graphics/battle_anims/sprites/274.gbapal.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_17_sheet:: @ 8E7B328 +gBattleAnimBgImage_InAir:: @ 8E7B328 .incbin "graphics/battle_anims/backgrounds/17.4bpp.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_17_palette:: @ 8E7B484 +gBattleAnimBgPalette_InAir:: @ 8E7B484 .incbin "graphics/battle_anims/backgrounds/17.gbapal.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_17_tilemap:: @ 8E7B4AC +gBattleAnimBgTilemap_InAir:: @ 8E7B4AC .incbin "graphics/battle_anims/backgrounds/17.bin.lz" .align 2 -gFile_graphics_battle_anims_sprites_280_sheet:: @ 8E7B694 +gBattleAnimSpriteGfx_Protect:: @ 8E7B694 .incbin "graphics/battle_anims/sprites/280.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_280_palette:: @ 8E7BA90 +gBattleAnimSpritePal_Protect:: @ 8E7BA90 .incbin "graphics/battle_anims/sprites/280.gbapal.lz" .align 2 @@ -13754,23 +13754,23 @@ gMonIcon_Egg:: @ 8E7BB88 .incbin "graphics/pokemon/egg/icon.4bpp" .align 2 -gFile_graphics_battle_anims_backgrounds_02_sheet:: @ 8E7BF88 +gBattleAnimBgImage_Ghost:: @ 8E7BF88 .incbin "graphics/battle_anims/backgrounds/02.4bpp.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_02_palette:: @ 8E7CC50 +gBattleAnimBgPalette_Ghost:: @ 8E7CC50 .incbin "graphics/battle_anims/backgrounds/02.gbapal.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_02_tilemap:: @ 8E7CC6C +gBattleAnimBgTilemap_Ghost:: @ 8E7CC6C .incbin "graphics/battle_anims/backgrounds/02.bin.lz" .align 2 -gFile_graphics_battle_anims_sprites_287_palette:: @ 8E7CF60 +gBattleAnimSpritePal_WhipHit:: @ 8E7CF60 .incbin "graphics/battle_anims/sprites/287.gbapal.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_24_palette:: @ 8E7CF88 +gBattleAnimBgPalette_Solarbeam:: @ 8E7CF88 .incbin "graphics/battle_anims/backgrounds/24.gbapal.lz" .align 2 @@ -13790,23 +13790,23 @@ gFile_graphics_berry_blender_outer_map_tilemap:: @ 8E7E700 .incbin "graphics/berry_blender/outer_map.bin.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_16_palette:: @ 8E7EA14 +gBattleAnimBgPalette_Cosmic:: @ 8E7EA14 .incbin "graphics/battle_anims/backgrounds/16.gbapal.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_16_sheet:: @ 8E7EA3C +gBattleAnimBgImage_Cosmic:: @ 8E7EA3C .incbin "graphics/battle_anims/backgrounds/16.4bpp.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_16_tilemap:: @ 8E7EC9C +gBattleAnimBgTilemap_Cosmic:: @ 8E7EC9C .incbin "graphics/battle_anims/backgrounds/16.bin.lz" .align 2 -gFile_graphics_battle_anims_sprites_277_palette:: @ 8E7EDD8 +gBattleAnimSpritePal_SlamHit2:: @ 8E7EDD8 .incbin "graphics/battle_anims/sprites/277.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_277_sheet:: @ 8E7EE00 +gBattleAnimSpriteGfx_SlamHit2:: @ 8E7EE00 .incbin "graphics/battle_anims/sprites/277.4bpp.lz" .align 2 @@ -13814,99 +13814,99 @@ gBattleAnimFogTilemap:: @ 8E7F1F4 .incbin "graphics/battle_anims/backgrounds/fog.bin.lz" .align 2 -gFile_graphics_battle_anims_sprites_283_palette:: @ 8E7F36C +gBattleAnimSpritePal_WeatherBall:: @ 8E7F36C .incbin "graphics/battle_anims/sprites/283.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_283_sheet:: @ 8E7F388 +gBattleAnimSpriteGfx_WeatherBall:: @ 8E7F388 .incbin "graphics/battle_anims/sprites/283.4bpp.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap:: @ 8E7F4AC +gBattleAnimBgTilemap_ScaryFacePlayer:: @ 8E7F4AC .incbin "graphics/battle_anims/backgrounds/scary_face_player.bin.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_scary_face_opponent_tilemap:: @ 8E7F690 +gBattleAnimBgTilemap_ScaryFaceOpponent:: @ 8E7F690 .incbin "graphics/battle_anims/backgrounds/scary_face_opponent.bin.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_scary_face_contest_tilemap:: @ 8E7F874 +gBattleAnimBgTilemap_ScaryFaceContest:: @ 8E7F874 .incbin "graphics/battle_anims/backgrounds/scary_face_contest.bin.lz" .align 2 -gFile_graphics_battle_anims_sprites_263_sheet:: @ 8E7FA58 +gBattleAnimSpriteGfx_Hail:: @ 8E7FA58 .incbin "graphics/battle_anims/sprites/263.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_263_palette:: @ 8E7FA98 +gBattleAnimSpritePal_Hail:: @ 8E7FA98 .incbin "graphics/battle_anims/sprites/263.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_266_sheet:: @ 8E7FAB0 +gBattleAnimSpriteGfx_GreenSpike:: @ 8E7FAB0 .incbin "graphics/battle_anims/sprites/266.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_266_palette:: @ 8E7FAF0 +gBattleAnimSpritePal_GreenSpike:: @ 8E7FAF0 .incbin "graphics/battle_anims/sprites/266.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_267_palette:: @ 8E7FB08 +gBattleAnimSpritePal_WhiteCircleOfLight:: @ 8E7FB08 .incbin "graphics/battle_anims/sprites/267.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_268_palette:: @ 8E7FB20 +gBattleAnimSpritePal_GlowyBlueOrb:: @ 8E7FB20 .incbin "graphics/battle_anims/sprites/268.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_278_sheet:: @ 8E7FB38 +gBattleAnimSpriteGfx_Recycle:: @ 8E7FB38 .incbin "graphics/battle_anims/sprites/278.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_278_palette:: @ 8E7FD44 +gBattleAnimSpritePal_Recycle:: @ 8E7FD44 .incbin "graphics/battle_anims/sprites/278.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_279_sheet:: @ 8E7FD60 +gBattleAnimSpriteGfx_RedParticles:: @ 8E7FD60 .incbin "graphics/battle_anims/sprites/279.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_279_palette:: @ 8E7FDAC +gBattleAnimSpritePal_RedParticles:: @ 8E7FDAC .incbin "graphics/battle_anims/sprites/279.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_281_sheet:: @ 8E7FDC8 +gBattleAnimSpriteGfx_DirtMound:: @ 8E7FDC8 .incbin "graphics/battle_anims/sprites/281.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_281_palette:: @ 8E7FF50 +gBattleAnimSpritePal_DirtMound:: @ 8E7FF50 .incbin "graphics/battle_anims/sprites/281.gbapal.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_21_sheet:: @ 8E7FF70 +gBattleAnimBgImage_Fissure:: @ 8E7FF70 .incbin "graphics/battle_anims/backgrounds/21.4bpp.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_21_palette:: @ 8E80264 +gBattleAnimBgPalette_Fissure:: @ 8E80264 .incbin "graphics/battle_anims/backgrounds/21.gbapal.lz" .align 2 -gFile_graphics_battle_anims_backgrounds_21_tilemap:: @ 8E80280 +gBattleAnimBgTilemap_Fissure:: @ 8E80280 .incbin "graphics/battle_anims/backgrounds/21.bin.lz" .align 2 -gFile_graphics_battle_anims_sprites_284_sheet:: @ 8E8056C +gBattleAnimSpriteGfx_Bird:: @ 8E8056C .incbin "graphics/battle_anims/sprites/284.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_284_palette:: @ 8E808E8 +gBattleAnimSpritePal_Bird:: @ 8E808E8 .incbin "graphics/battle_anims/sprites/284.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_285_sheet:: @ 8E80904 +gBattleAnimSpriteGfx_CrossImpact:: @ 8E80904 .incbin "graphics/battle_anims/sprites/285.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_285_palette:: @ 8E809A4 +gBattleAnimSpritePal_CrossImpact:: @ 8E809A4 .incbin "graphics/battle_anims/sprites/285.gbapal.lz" .align 2 @@ -13930,15 +13930,15 @@ gFile_graphics_unknown_unknown_E822B8_tilemap:: @ 8E822B8 .incbin "graphics/unknown/unknown_E822B8.bin.lz" .align 2 -gFile_graphics_battle_anims_sprites_286_palette:: @ 8E825AC +gBattleAnimSpritePal_Slash2:: @ 8E825AC .incbin "graphics/battle_anims/sprites/286.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_188_sheet:: @ 8E825D4 +gBattleAnimSpriteGfx_WhiteShadow:: @ 8E825D4 .incbin "graphics/battle_anims/sprites/188.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_188_palette:: @ 8E826E8 +gBattleAnimSpritePal_WhiteShadow:: @ 8E826E8 .incbin "graphics/battle_anims/sprites/188.gbapal.lz" .align 2 @@ -15958,27 +15958,27 @@ gFile_graphics_items_icon_palettes_sapphire_palette:: @ 8E93720 .incbin "graphics/items/icon_palettes/sapphire.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_282_palette:: @ 8E93748 +gBattleAnimSpritePal_Shock3:: @ 8E93748 .incbin "graphics/battle_anims/sprites/282.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_282_sheet:: @ 8E93770 +gBattleAnimSpriteGfx_Shock3:: @ 8E93770 .incbin "graphics/battle_anims/sprites/282.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_270_palette:: @ 8E93958 +gBattleAnimSpritePal_WhiteFeather:: @ 8E93958 .incbin "graphics/battle_anims/sprites/270.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_270_sheet:: @ 8E93974 +gBattleAnimSpriteGfx_WhiteFeather:: @ 8E93974 .incbin "graphics/battle_anims/sprites/270.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_271_palette:: @ 8E93A9C +gBattleAnimSpritePal_Sparkle6:: @ 8E93A9C .incbin "graphics/battle_anims/sprites/271.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_271_sheet:: @ 8E93AB4 +gBattleAnimSpriteGfx_Sparkle6:: @ 8E93AB4 .incbin "graphics/battle_anims/sprites/271.4bpp.lz" .align 2 diff --git a/data/pokemon_jump.s b/data/pokemon_jump.s index 3d01bf64f..8f37f94e0 100644 --- a/data/pokemon_jump.s +++ b/data/pokemon_jump.s @@ -51,7 +51,7 @@ gUnknown_846B47C:: .4byte gUnknown_846B474 gUnknown_846B494:: @ 846B494 - spr_template 0x2000, 0x2000, gOamData_83AC9D8, gUnknown_846B47C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 0x2000, 0x2000, gOamData_AffineOff_ObjNormal_32x32, gUnknown_846B47C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy gUnknown_846B4AC:: @ 846B4AC @ This is a 2D array with one row. diff --git a/graphics/battle_anims/unk_83FF33C.pal b/graphics/battle_anims/unk_83FF33C.pal new file mode 100644 index 000000000..1d83a2018 --- /dev/null +++ b/graphics/battle_anims/unk_83FF33C.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 0 49 +131 131 41 +156 197 32 +172 0 32 +189 0 24 +180 197 8 +156 0 8 +131 65 0 +90 0 0 +49 65 0 +32 0 8 +8 197 8 +0 0 24 +16 65 32 +32 197 32 +65 131 41 diff --git a/include/battle.h b/include/battle.h index 54aef5106..bed12204f 100644 --- a/include/battle.h +++ b/include/battle.h @@ -520,12 +520,12 @@ enum struct BattleSpriteInfo { - u16 invisible : 1; // 0x1 - u16 lowHpSong : 1; // 0x2 - u16 behindSubstitute : 1; // 0x4 - u16 flag_x8 : 1; // 0x8 - u16 hpNumbersNoBars : 1; // 0x10 - u16 transformSpecies; + /*0x0*/ u16 invisible : 1; // 0x1 + u16 lowHpSong : 1; // 0x2 + u16 behindSubstitute : 1; // 0x4 + u16 flag_x8 : 1; // 0x8 + u16 hpNumbersNoBars : 1; // 0x10 + /*0x2*/ u16 transformSpecies; }; struct BattleAnimationInfo @@ -546,8 +546,7 @@ struct BattleAnimationInfo u8 field_9_x80 : 1; u8 field_A; u8 field_B; - u8 field_C; - u8 field_D; + s16 field_C; u8 field_E; u8 field_F; }; diff --git a/include/battle_anim.h b/include/battle_anim.h index ad1a0fed8..f568d0f97 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -36,9 +36,6 @@ struct BattleAnimBackground #define ANIM_ARGS_COUNT 8 -#define PAN_SIDE_PLAYER -64 -#define PAN_SIDE_OPPONENT 63 - extern void (*gAnimScriptCallback)(void); extern bool8 gAnimScriptActive; extern u8 gAnimVisualTaskCount; @@ -52,46 +49,85 @@ extern u8 gAnimMoveTurn; extern u8 gBattleAnimAttacker; extern u8 gBattleAnimTarget; extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT]; -extern u16 gAnimMovePower; extern s32 gAnimMoveDmg; extern u16 gAnimBattlerSpecies[MAX_BATTLERS_COUNT]; extern u8 gUnknown_2037F24; -extern const struct OamData gOamData_83AC9C8; -extern const struct OamData gOamData_83AC9D0; -extern const struct OamData gOamData_83AC9D8; -extern const struct OamData gOamData_83AC9E0; -extern const struct OamData gOamData_83AC9F8; -extern const struct OamData gOamData_83ACA00; -extern const struct OamData gOamData_83ACA18; -extern const struct OamData gOamData_83ACA20; -extern const struct OamData gOamData_83ACA30; -extern const struct OamData gOamData_83ACA38; -extern const struct OamData gOamData_83ACA40; -extern const struct OamData gOamData_83ACA80; -extern const struct OamData gOamData_83ACA90; -extern const struct OamData gOamData_83ACA98; -extern const struct OamData gOamData_83ACAA0; -extern const struct OamData gOamData_83ACAB8; -extern const struct OamData gOamData_83ACAC8; -extern const struct OamData gOamData_83ACAE8; -extern const struct OamData gOamData_83ACAF0; -extern const struct OamData gOamData_83ACAF8; -extern const struct OamData gOamData_83ACB00; -extern const struct OamData gOamData_83ACB10; -extern const struct OamData gOamData_83ACB18; -extern const struct OamData gOamData_83ACB20; -extern const struct OamData gOamData_83ACB28; -extern const struct OamData gOamData_83ACB38; -extern const struct OamData gOamData_83ACB48; -extern const struct OamData gOamData_83ACB50; -extern const struct OamData gOamData_83ACB58; -extern const struct OamData gOamData_83ACB60; -extern const struct OamData gOamData_83ACB88; -extern const struct OamData gOamData_83ACBC0; -extern const struct OamData gOamData_83ACBE8; - -// battle_anim.s +// battle_anim.c +extern const struct OamData gOamData_AffineOff_ObjNormal_8x8; +extern const struct OamData gOamData_AffineOff_ObjNormal_16x16; +extern const struct OamData gOamData_AffineOff_ObjNormal_32x32; +extern const struct OamData gOamData_AffineOff_ObjNormal_64x64; +extern const struct OamData gOamData_AffineOff_ObjNormal_16x8; +extern const struct OamData gOamData_AffineOff_ObjNormal_32x8; +extern const struct OamData gOamData_AffineOff_ObjNormal_32x16; +extern const struct OamData gOamData_AffineOff_ObjNormal_64x32; +extern const struct OamData gOamData_AffineOff_ObjNormal_8x16; +extern const struct OamData gOamData_AffineOff_ObjNormal_8x32; +extern const struct OamData gOamData_AffineOff_ObjNormal_16x32; +extern const struct OamData gOamData_AffineOff_ObjNormal_32x64; +extern const struct OamData gOamData_AffineNormal_ObjNormal_8x8; +extern const struct OamData gOamData_AffineNormal_ObjNormal_16x16; +extern const struct OamData gOamData_AffineNormal_ObjNormal_32x32; +extern const struct OamData gOamData_AffineNormal_ObjNormal_64x64; +extern const struct OamData gOamData_AffineNormal_ObjNormal_16x8; +extern const struct OamData gOamData_AffineNormal_ObjNormal_32x8; +extern const struct OamData gOamData_AffineNormal_ObjNormal_32x16; +extern const struct OamData gOamData_AffineNormal_ObjNormal_64x32; +extern const struct OamData gOamData_AffineNormal_ObjNormal_8x16; +extern const struct OamData gOamData_AffineNormal_ObjNormal_8x32; +extern const struct OamData gOamData_AffineNormal_ObjNormal_16x32; +extern const struct OamData gOamData_AffineNormal_ObjNormal_32x64; +extern const struct OamData gOamData_AffineDouble_ObjNormal_8x8; +extern const struct OamData gOamData_AffineDouble_ObjNormal_16x16; +extern const struct OamData gOamData_AffineDouble_ObjNormal_32x32; +extern const struct OamData gOamData_AffineDouble_ObjNormal_64x64; +extern const struct OamData gOamData_AffineDouble_ObjNormal_16x8; +extern const struct OamData gOamData_AffineDouble_ObjNormal_32x8; +extern const struct OamData gOamData_AffineDouble_ObjNormal_32x16; +extern const struct OamData gOamData_AffineDouble_ObjNormal_64x32; +extern const struct OamData gOamData_AffineDouble_ObjNormal_8x16; +extern const struct OamData gOamData_AffineDouble_ObjNormal_8x32; +extern const struct OamData gOamData_AffineDouble_ObjNormal_16x32; +extern const struct OamData gOamData_AffineDouble_ObjNormal_32x64; +extern const struct OamData gOamData_AffineOff_ObjBlend_8x8; +extern const struct OamData gOamData_AffineOff_ObjBlend_16x16; +extern const struct OamData gOamData_AffineOff_ObjBlend_32x32; +extern const struct OamData gOamData_AffineOff_ObjBlend_64x64; +extern const struct OamData gOamData_AffineOff_ObjBlend_16x8; +extern const struct OamData gOamData_AffineOff_ObjBlend_32x8; +extern const struct OamData gOamData_AffineOff_ObjBlend_32x16; +extern const struct OamData gOamData_AffineOff_ObjBlend_64x32; +extern const struct OamData gOamData_AffineOff_ObjBlend_8x16; +extern const struct OamData gOamData_AffineOff_ObjBlend_8x32; +extern const struct OamData gOamData_AffineOff_ObjBlend_16x32; +extern const struct OamData gOamData_AffineOff_ObjBlend_32x64; +extern const struct OamData gOamData_AffineNormal_ObjBlend_8x8; +extern const struct OamData gOamData_AffineNormal_ObjBlend_16x16; +extern const struct OamData gOamData_AffineNormal_ObjBlend_32x32; +extern const struct OamData gOamData_AffineNormal_ObjBlend_64x64; +extern const struct OamData gOamData_AffineNormal_ObjBlend_16x8; +extern const struct OamData gOamData_AffineNormal_ObjBlend_32x8; +extern const struct OamData gOamData_AffineNormal_ObjBlend_32x16; +extern const struct OamData gOamData_AffineNormal_ObjBlend_64x32; +extern const struct OamData gOamData_AffineNormal_ObjBlend_8x16; +extern const struct OamData gOamData_AffineNormal_ObjBlend_8x32; +extern const struct OamData gOamData_AffineNormal_ObjBlend_16x32; +extern const struct OamData gOamData_AffineNormal_ObjBlend_32x64; +extern const struct OamData gOamData_AffineDouble_ObjBlend_8x8; +extern const struct OamData gOamData_AffineDouble_ObjBlend_16x16; +extern const struct OamData gOamData_AffineDouble_ObjBlend_32x32; +extern const struct OamData gOamData_AffineDouble_ObjBlend_64x64; +extern const struct OamData gOamData_AffineDouble_ObjBlend_16x8; +extern const struct OamData gOamData_AffineDouble_ObjBlend_32x8; +extern const struct OamData gOamData_AffineDouble_ObjBlend_32x16; +extern const struct OamData gOamData_AffineDouble_ObjBlend_64x32; +extern const struct OamData gOamData_AffineDouble_ObjBlend_8x16; +extern const struct OamData gOamData_AffineDouble_ObjBlend_8x32; +extern const struct OamData gOamData_AffineDouble_ObjBlend_16x32; +extern const struct OamData gOamData_AffineDouble_ObjBlend_32x64; +extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; +extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; void MoveBattlerSpriteToBG(u8 battlerId, u8); void sub_8073128(u8); void ClearBattleAnimationVars(void); @@ -100,14 +136,13 @@ void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMo void DestroyAnimSprite(struct Sprite *sprite); void DestroyAnimVisualTask(u8 taskId); void DestroyAnimSoundTask(u8 taskId); -bool8 IsAnimBankSpriteVisible(u8 battlerId); bool8 IsContest(void); s8 BattleAnimAdjustPanning(s8 pan); s8 BattleAnimAdjustPanning2(s8 pan); s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan); bool8 IsBattlerSpriteVisible(u8 battlerId); s16 KeepPanInRange(s16 a, s32 oldPan); -void sub_80730C0(u16, const u16 *, s32, u8); +void sub_80730C0(u16, u16 *, s32, u8); // battle_intro.c void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value); @@ -116,11 +151,166 @@ void HandleIntroSlide(u8 terrain); void sub_80BC41C(u8 taskId); void sub_80BCEF4(s32 bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *arg5, u16 *arg6, u16 tilesOffset); -// battle_anim_special.s +// battle_anim_effects_1.c +extern const union AnimCmd *const gMusicNotesAnimTable[]; +extern const struct SpriteTemplate gThoughtBubbleSpriteTemplate; +void AnimMovePowderParticle(struct Sprite *); +void AnimPowerAbsorptionOrb(struct Sprite *); +void AnimSolarbeamBigOrb(struct Sprite *); +void AnimSolarbeamSmallOrb(struct Sprite *); +void AnimAbsorptionOrb(struct Sprite *); +void AnimHyperBeamOrb(struct Sprite *); +void AnimSporeParticle(struct Sprite *); +void AnimPetalDanceBigFlower(struct Sprite *); +void AnimPetalDanceSmallFlower(struct Sprite *); +void AnimRazorLeafParticle(struct Sprite *); +void AnimLeechSeed(struct Sprite *); +void AnimTranslateLinearSingleSineWave(struct Sprite *); +void AnimMoveTwisterParticle(struct Sprite *); +void AnimConstrictBinding(struct Sprite *); +void AnimMimicOrb(struct Sprite *); +void AnimIngrainRoot(struct Sprite *); +void AnimFrenzyPlantRoot(struct Sprite *); +void AnimIngrainOrb(struct Sprite *); +void AnimPresent(struct Sprite *); +void AnimKnockOffItem(struct Sprite *); +void AnimPresentHealParticle(struct Sprite *); +void AnimItemSteal(struct Sprite *); +void AnimTrickBag(struct Sprite *); +void AnimFlyingParticle(struct Sprite *); +void AnimNeedleArmSpike(struct Sprite *); +void sub_80A43F8(struct Sprite *); +void AnimWhipHit(struct Sprite *); +void sub_80A4494(struct Sprite *); +void AnimCuttingSlice(struct Sprite *); +void AnimAirCutterSlice(struct Sprite *); +void sub_80A481C(struct Sprite *); +void AnimProtect(struct Sprite *); +void AnimMilkBottle(struct Sprite *); +void AnimGrantingStars(struct Sprite *); +void AnimSparkingStars(struct Sprite *); +void sub_80A4E40(struct Sprite *); +void AnimSleepLetterZ(struct Sprite *); +void AnimLockOnTarget(struct Sprite *); +void AnimLockOnMoveTarget(struct Sprite *); +void AnimBowMon(struct Sprite *); +void sub_80A5590(struct Sprite *); +void AnimSlashSlice(struct Sprite *); +void AnimFalseSwipeSlice(struct Sprite *); +void AnimFalseSwipePositionedSlice(struct Sprite *); +void AnimEndureEnergy(struct Sprite *); +void AnimSharpenSphere(struct Sprite *); +void AnimConversion(struct Sprite *); +void AnimConversion2(struct Sprite *); +void AnimMoon(struct Sprite *); +void AnimMoonlightSparkle(struct Sprite *); +void AnimHornHit(struct Sprite *); +void AnimSuperFang(struct Sprite *); +void AnimWavyMusicNotes(struct Sprite *); +void AnimFlyingMusicNotes(struct Sprite *); +void AnimBellyDrumHand(struct Sprite *); +void AnimSlowFlyingMusicNotes(struct Sprite *); +void AnimThoughtBubble(struct Sprite *); +void AnimMetronomeFinger(struct Sprite *); +void AnimFollowMeFinger(struct Sprite *); +void AnimTauntFinger(struct Sprite *); +void SetSpriteNextToMonHead(u8 battler, struct Sprite* sprite); +void sub_80A2F0C(u8 taskId); + +// battle_anim_effects_2.c +void sub_80A6E48(struct Sprite *); +void sub_80A6E98(struct Sprite *); +void sub_80A6F8C(struct Sprite *); +void sub_80A7020(struct Sprite *); +void Anim_KinesisZapEnergy(struct Sprite *); +void Anim_SwordsDanceBlade(struct Sprite *); +void AnimSonicBoomProjectile(struct Sprite *); +void AnimAirWaveProjectile(struct Sprite *); +void sub_80A79E8(struct Sprite *); +void AnimCoinThrow(struct Sprite *); +void AnimFallingCoin(struct Sprite *); +void AnimBulletSeed(struct Sprite *); +void AnimRazorWindTornado(struct Sprite *); +void AnimViceGripPincer(struct Sprite *); +void AnimGuillotinePincer(struct Sprite *); +void AnimBreathPuff(struct Sprite *); +void AnimAngerMark(struct Sprite *); +void AnimPencil(struct Sprite *); +void AnimBlendThinRing(struct Sprite *); +void AnimHyperVoiceRing(struct Sprite *); +void AnimUproarRing(struct Sprite *); +void AnimSoftBoiledEgg(struct Sprite *); +void AnimSpeedDust(struct Sprite *); +void AnimHealBellMusicNote(struct Sprite *); +void AnimMagentaHeart(struct Sprite *); +void AnimRedHeartProjectile(struct Sprite *); +void AnimParticuleBurst(struct Sprite *); +void AnimRedHeartRising(struct Sprite *); +void AnimOrbitFast(struct Sprite *); +void AnimOrbitScatter(struct Sprite *); +void AnimSpitUpOrb(struct Sprite *); +void AnimEyeSparkle(struct Sprite *); +void AnimAngel(struct Sprite *); +void AnimPinkHeart(struct Sprite *); +void AnimDevil(struct Sprite *); +void AnimFurySwipes(struct Sprite *); +void AnimMovementWaves(struct Sprite *); +void AnimJaggedMusicNote(struct Sprite *); +void AnimPerishSongMusicNote2(struct Sprite *); +void AnimPerishSongMusicNote(struct Sprite *); +void AnimGuardRing(struct Sprite *); + +// battle_anim_effects_3.c +extern const struct SpriteTemplate gWishStarSpriteTemplate; +extern const struct SpriteTemplate gMiniTwinklingStarSpriteTemplate; +void AnimBlackSmoke(struct Sprite *); +void AnimWhiteHalo(struct Sprite *); +void AnimTealAlert(struct Sprite *); +void AnimMeanLookEye(struct Sprite *); +void AnimSpikes(struct Sprite *); +void AnimLeer(struct Sprite *); +void AnimLetterZ(struct Sprite *); +void AnimFang(struct Sprite *); +void AnimSpotlight(struct Sprite *); +void AnimClappingHand(struct Sprite *); +void AnimClappingHand2(struct Sprite *); +void AnimRapidSpin(struct Sprite *); +void AnimTriAttackTriangle(struct Sprite *); +void AnimBatonPassPokeball(struct Sprite *); +void AnimWishStar(struct Sprite *); +void AnimMiniTwinklingStar(struct Sprite *); +void AnimSwallowBlueOrb(struct Sprite *); +void AnimGreenStar(struct Sprite *); +void AnimWeakFrustrationAngerMark(struct Sprite *); +void AnimSweetScentPetal(struct Sprite *); +void AnimPainSplitProjectile(struct Sprite *); +void AnimFlatterConfetti(struct Sprite *); +void AnimFlatterSpotlight(struct Sprite *); +void AnimReversalOrb(struct Sprite *); +void AnimYawnCloud(struct Sprite *); +void AnimSmokeBallEscapeCloud(struct Sprite *); +void AnimFacadeSweatDrop(struct Sprite *); +void AnimRoarNoiseLine(struct Sprite *); +void AnimGlareEyeDot(struct Sprite *); +void AnimAssistPawprint(struct Sprite *); +void AnimSmellingSaltsHand(struct Sprite *); +void AnimSmellingSaltExclamation(struct Sprite *); +void AnimHelpingHandClap(struct Sprite *); +void AnimForesightMagnifyingGlass(struct Sprite *); +void AnimMeteorMashStar(struct Sprite *); +void AnimBlockX(struct Sprite *); +void sub_80E3E84(struct Sprite *); +void AnimParticuleBurst(struct Sprite *); +void AnimKnockOffStrike(struct Sprite *); +void AnimRecycle(struct Sprite *); + +// battle_anim_special.c void sub_80F1720(u8 battler, struct Pokemon *mon); - -// battle_anim_effects_1.s -void AnimMoveTwisterParticle(struct Sprite *sprite); +u8 ItemIdToBallId(u16 itemId); +u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId); +u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId); +void sub_80EEFC8(u8 *, u8 *, u8 battlerId); +void sub_80EF0E0(u8 batterId); enum { @@ -151,14 +341,7 @@ enum #define STAT_ANIM_MULTIPLE_PLUS2 56 #define STAT_ANIM_MULTIPLE_MINUS1 57 #define STAT_ANIM_MULTIPLE_MINUS2 58 -void LaunchStatusAnimation(u8 bank, u8 statusAnimId); - -// battle_anim_special.s -u8 ItemIdToBallId(u16 itemId); -u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId); -u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId); -void sub_80EEFC8(u8 *, u8 *, u8 battlerId); -void sub_80EF0E0(u8 batterId); +void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId); // battle_anim_mons.c extern const struct MonCoords gCastformFrontSpriteCoords[]; @@ -206,7 +389,7 @@ void sub_8075358(u32 bgId); void AnimLoadCompressedBgGfx(u32 bgId, const u32 *src, u32 tilesOffset); void InitAnimBgTilemapBuffer(u32 bgId, const void *src); void AnimLoadCompressedBgTilemap(u32 bgId, const u32 *src); -u8 sub_8075454(void); +u8 GetBattleBgPaletteNum(void); void sub_8075458(bool8 arg0); void sub_8075490(struct Sprite *sprite); void InitSpriteDataForLinearTranslation(struct Sprite *sprite); @@ -284,7 +467,6 @@ void sub_8099BD4(u8 taskId); // normal.c extern const struct SpriteTemplate gUnknown_83E7C98; extern const struct SpriteTemplate gBasicHitSplatSpriteTemplate; - u32 UnpackSelectedBattleAnimPalettes(s16 selector); void sub_80B9BDC(u8 taskId); void sub_80B9CE4(u8 taskId); @@ -328,6 +510,7 @@ void sub_80B3A58(u8 taskId); void sub_80B3C78(u8 taskId); // dark.c +extern const union AffineAnimCmd *const gUnknown_83E7910[]; void sub_80B78E0(u8 taskId); void sub_80B79DC(u8 taskId); void sub_80B7A80(u8 taskId); @@ -372,6 +555,10 @@ void sub_80AD800(u8 taskId); // water.s extern const union AnimCmd *const gUnknown_83E5958[]; extern const union AnimCmd *const gUnknown_83E5A78[]; +void AnimWaterPulseRing(struct Sprite *sprite); + +// smokescreen.s +u8 SmokescreenImpact(s16 x, s16 y, u8 a3); // battle_anim_utility_funcs.c void sub_80BA7F8(u8 taskId); @@ -403,4 +590,9 @@ void sub_80BC0DC(u8 taskId); void sub_80BC0FC(u8 taskId); void sub_80BC12C(u8 taskId); +// battle_anim_scripts.s +extern const u8 *const gBattleAnims_StatusConditions[]; +extern const u16 gMovesWithQuietBGM[]; +extern const u8 *const gBattleAnims_Moves[]; + #endif // GUARD_BATTLE_ANIM_H diff --git a/include/battle_bg.h b/include/battle_bg.h index 61c106b64..60a6de8f5 100644 --- a/include/battle_bg.h +++ b/include/battle_bg.h @@ -11,5 +11,6 @@ void sub_800F6FC(u8 taskId); void LoadBattleMenuWindowGfx(void); void LoadBattleTextboxAndBackground(void); void sub_800F324(void); +void DrawMainBattleBackground(void); #endif // GUARD_BATTLE_BG_H diff --git a/include/gba/defines.h b/include/gba/defines.h index 8c92d7b64..9e822358a 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -73,10 +73,18 @@ #define TOTAL_OBJ_TILE_COUNT 1024 #define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10)) +#define RGB2(r, g, b) (((b) << 10) | ((g) << 5) | (r)) +#define _RGB(r, g, b) ((((b) & 0x1F) << 10) + (((g) & 0x1F) << 5) + ((r) & 0x1F)) #define RGB_BLACK RGB(0, 0, 0) #define RGB_WHITE RGB(31, 31, 31) -#define RGB_WHITEALPHA (0xFFFF) +#define RGB_RED RGB(31, 0, 0) +#define RGB_GREEN RGB(0, 31, 0) +#define RGB_BLUE RGB(0, 0, 31) +#define RGB_YELLOW RGB(31, 31, 0) +#define RGB_MAGENTA RGB(31, 0, 31) +#define RGB_CYAN RGB(0, 31, 31) +#define RGB_WHITEALPHA (RGB_WHITE | 0x8000) #define NAKED __attribute__((naked)) #define UNUSED __attribute__((unused)) diff --git a/include/graphics.h b/include/graphics.h index 09b72d37d..bb501ffb0 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -3691,6 +3691,596 @@ extern const u32 gBattleStatMask8_Pal[]; extern const u32 gBattleStatMask1_Tilemap[]; extern const u32 gBattleStatMask2_Tilemap[]; +// battle anim particle gfx +extern const u32 gBattleAnimSpriteGfx_Bone[]; +extern const u32 gBattleAnimSpriteGfx_Spark[]; +extern const u32 gBattleAnimSpriteGfx_Pencil[]; +extern const u32 gBattleAnimSpriteGfx_AirWave[]; +extern const u32 gBattleAnimSpriteGfx_Orb[]; +extern const u32 gBattleAnimSpriteGfx_Sword[]; +extern const u32 gBattleAnimSpriteGfx_Seed[]; +extern const u32 gBattleAnimSpriteGfx_Explosion6[]; +extern const u32 gBattleAnimSpriteGfx_PinkOrb[]; +extern const u32 gBattleAnimSpriteGfx_Gust[]; +extern const u32 gBattleAnimSpriteGfx_IceCube[]; +extern const u32 gBattleAnimSpriteGfx_Spark2[]; +extern const u32 gBattleAnimSpriteGfx_Orange[]; +extern const u32 gBattleAnimSpriteGfx_YellowBall[]; +extern const u32 gBattleAnimSpriteGfx_LockOn[]; +extern const u32 gBattleAnimSpriteGfx_TiedBag[]; +extern const u32 gBattleAnimSpriteGfx_BlackSmoke[]; +extern const u32 gBattleAnimSpriteGfx_BlackBall[]; +extern const u32 gBattleAnimSpriteGfx_Conversion[]; +extern const u32 gBattleAnimSpriteGfx_Glass[]; +extern const u32 gBattleAnimSpriteGfx_HornHit[]; +extern const u32 gBattleAnimSpriteGfx_Hit[]; +extern const u32 gBattleAnimSpriteGfx_BlueShards[]; +extern const u32 gBattleAnimSpriteGfx_ClosingEye[]; +extern const u32 gBattleAnimSpriteGfx_WavingHand[]; +extern const u32 gBattleAnimSpriteGfx_HitDuplicate[]; +extern const u32 gBattleAnimSpriteGfx_Leer[]; +extern const u32 gBattleAnimSpriteGfx_BlueBurst[]; +extern const u32 gBattleAnimSpriteGfx_SmallEmber[]; +extern const u32 gBattleAnimSpriteGfx_GraySmoke[]; +extern const u32 gBattleAnimSpriteGfx_BlueStar[]; +extern const u32 gBattleAnimSpriteGfx_BubbleBurst[]; +extern const u32 gBattleAnimSpriteGfx_Fire[]; +extern const u32 gBattleAnimSpriteGfx_SpinningFire[]; +extern const u32 gBattleAnimSpriteGfx_FirePlume[]; +extern const u32 gBattleAnimSpriteGfx_Lightning2[]; +extern const u32 gBattleAnimSpriteGfx_Lightning[]; +extern const u32 gBattleAnimSpriteGfx_ClawSlash2[]; +extern const u32 gBattleAnimSpriteGfx_ClawSlash[]; +extern const u32 gBattleAnimSpriteGfx_Scratch3[]; +extern const u32 gBattleAnimSpriteGfx_Scratch2[]; +extern const u32 gBattleAnimSpriteGfx_BubbleBurst2[]; +extern const u32 gBattleAnimSpriteGfx_IceChunk[]; +extern const u32 gBattleAnimSpriteGfx_Glass2[]; +extern const u32 gBattleAnimSpriteGfx_PinkHeart2[]; +extern const u32 gBattleAnimSpriteGfx_SapDrip[]; +extern const u32 gBattleAnimSpriteGfx_SapDrip[]; +extern const u32 gBattleAnimSpriteGfx_Sparkle1[]; +extern const u32 gBattleAnimSpriteGfx_Sparkle1[]; +extern const u32 gBattleAnimSpriteGfx_HumanoidFoot[]; +extern const u32 gBattleAnimSpriteGfx_MonsterFoot[]; +extern const u32 gBattleAnimSpriteGfx_HumanoidHand[]; +extern const u32 gBattleAnimSpriteGfx_NoiseLine[]; +extern const u32 gBattleAnimSpriteGfx_YellowUnk[]; +extern const u32 gBattleAnimSpriteGfx_RedFist[]; +extern const u32 gBattleAnimSpriteGfx_SlamHit[]; +extern const u32 gBattleAnimSpriteGfx_Ring[]; +extern const u32 gBattleAnimSpriteGfx_Rocks[]; +extern const u32 gBattleAnimSpriteGfx_Z[]; +extern const u32 gBattleAnimSpriteGfx_YellowUnk2[]; +extern const u32 gBattleAnimSpriteGfx_AirSlash[]; +extern const u32 gBattleAnimSpriteGfx_SpinningGreenOrbs[]; +extern const u32 gBattleAnimSpriteGfx_Leaf[]; +extern const u32 gBattleAnimSpriteGfx_Finger[]; +extern const u32 gBattleAnimSpriteGfx_PoisonPowder[]; +extern const u32 gBattleAnimSpriteGfx_BrownTriangle[]; +extern const u32 gBattleAnimSpriteGfx_Sparkle3[]; +extern const u32 gBattleAnimSpriteGfx_Sparkle4[]; +extern const u32 gBattleAnimSpriteGfx_MusicNotes[]; +extern const u32 gBattleAnimSpriteGfx_Duck[]; +extern const u32 gBattleAnimSpriteGfx_MudSand[]; +extern const u32 gBattleAnimSpriteGfx_Alert[]; +extern const u32 gBattleAnimSpriteGfx_BlueFlames[]; +extern const u32 gBattleAnimSpriteGfx_BlueFlames2[]; +extern const u32 gBattleAnimSpriteGfx_Shock4[]; +extern const u32 gBattleAnimSpriteGfx_Shock[]; +extern const u32 gBattleAnimSpriteGfx_Bell2[]; +extern const u32 gBattleAnimSpriteGfx_PinkGlove[]; +extern const u32 gBattleAnimSpriteGfx_BlueLines[]; +extern const u32 gBattleAnimSpriteGfx_Impact3[]; +extern const u32 gBattleAnimSpriteGfx_Impact2[]; +extern const u32 gBattleAnimSpriteGfx_Reticle[]; +extern const u32 gBattleAnimSpriteGfx_Breath[]; +extern const u32 gBattleAnimSpriteGfx_Anger[]; +extern const u32 gBattleAnimSpriteGfx_Snowball[]; +extern const u32 gBattleAnimSpriteGfx_Vine[]; +extern const u32 gBattleAnimSpriteGfx_Sword2[]; +extern const u32 gBattleAnimSpriteGfx_Clapping[]; +extern const u32 gBattleAnimSpriteGfx_RedTube[]; +extern const u32 gBattleAnimSpriteGfx_Amnesia[]; +extern const u32 gBattleAnimSpriteGfx_String2[]; +extern const u32 gBattleAnimSpriteGfx_Pencil2[]; +extern const u32 gBattleAnimSpriteGfx_Petal[]; +extern const u32 gBattleAnimSpriteGfx_BentSpoon[]; +extern const u32 gBattleAnimSpriteGfx_Web[]; +extern const u32 gBattleAnimSpriteGfx_MilkBottle[]; +extern const u32 gBattleAnimSpriteGfx_Coin[]; +extern const u32 gBattleAnimSpriteGfx_CrackedEgg[]; +extern const u32 gBattleAnimSpriteGfx_HatchedEgg[]; +extern const u32 gBattleAnimSpriteGfx_FreshEgg[]; +extern const u32 gBattleAnimSpriteGfx_Fangs[]; +extern const u32 gBattleAnimSpriteGfx_Explosion2[]; +extern const u32 gBattleAnimSpriteGfx_Explosion3[]; +extern const u32 gBattleAnimSpriteGfx_WaterDroplet[]; +extern const u32 gBattleAnimSpriteGfx_WaterDroplet2[]; +extern const u32 gBattleAnimSpriteGfx_Seed2[]; +extern const u32 gBattleAnimSpriteGfx_Sprout[]; +extern const u32 gBattleAnimSpriteGfx_RedWand[]; +extern const u32 gBattleAnimSpriteGfx_PurpleGreenUnk[]; +extern const u32 gBattleAnimSpriteGfx_WaterColumn[]; +extern const u32 gBattleAnimSpriteGfx_MudUnk[]; +extern const u32 gBattleAnimSpriteGfx_RainDrops[]; +extern const u32 gBattleAnimSpriteGfx_FurySwipes[]; +extern const u32 gBattleAnimSpriteGfx_Vine2[]; +extern const u32 gBattleAnimSpriteGfx_Teeth[]; +extern const u32 gBattleAnimSpriteGfx_Bone2[]; +extern const u32 gBattleAnimSpriteGfx_WhiteBag[]; +extern const u32 gBattleAnimSpriteGfx_Unknown[]; +extern const u32 gBattleAnimSpriteGfx_PurpleCoral[]; +extern const u32 gBattleAnimSpriteGfx_PurpleDroplet[]; +extern const u32 gBattleAnimSpriteGfx_Shock2[]; +extern const u32 gBattleAnimSpriteGfx_ClosingEye2[]; +extern const u32 gBattleAnimSpriteGfx_MetalBall[]; +extern const u32 gBattleAnimSpriteGfx_MonsterDoll[]; +extern const u32 gBattleAnimSpriteGfx_Whirlwind[]; +extern const u32 gBattleAnimSpriteGfx_Whirlwind2[]; +extern const u32 gBattleAnimSpriteGfx_Explosion4[]; +extern const u32 gBattleAnimSpriteGfx_Explosion5[]; +extern const u32 gBattleAnimSpriteGfx_Tongue[]; +extern const u32 gBattleAnimSpriteGfx_Smoke[]; +extern const u32 gBattleAnimSpriteGfx_Smoke2[]; +extern const u32 gBattleAnimSpriteGfx_Impact[]; +extern const u32 gBattleAnimSpriteGfx_Particles[]; +extern const u32 gBattleAnimSpriteGfx_CircleImpact[]; +extern const u32 gBattleAnimSpriteGfx_Scratch[]; +extern const u32 gBattleAnimSpriteGfx_Cut[]; +extern const u32 gBattleAnimSpriteGfx_SharpTeeth[]; +extern const u32 gBattleAnimSpriteGfx_RainbowRings[]; +extern const u32 gBattleAnimSpriteGfx_IceCrystals[]; +extern const u32 gBattleAnimSpriteGfx_IceSpikes[]; +extern const u32 gBattleAnimSpriteGfx_HandsAndFeet[]; +extern const u32 gBattleAnimSpriteGfx_MistCloud[]; +extern const u32 gBattleAnimSpriteGfx_Clamp[]; +extern const u32 gBattleAnimSpriteGfx_Bubble[]; +extern const u32 gBattleAnimSpriteGfx_Orbs[]; +extern const u32 gBattleAnimSpriteGfx_WaterImpact[]; +extern const u32 gBattleAnimSpriteGfx_WaterOrb[]; +extern const u32 gBattleAnimSpriteGfx_PoisonBubble[]; +extern const u32 gBattleAnimSpriteGfx_ToxicBubble[]; +extern const u32 gBattleAnimSpriteGfx_Spikes[]; +extern const u32 gBattleAnimSpriteGfx_HornHit2[]; +extern const u32 gBattleAnimSpriteGfx_AirWave2[]; +extern const u32 gBattleAnimSpriteGfx_SmallBubbles[]; +extern const u32 gBattleAnimSpriteGfx_RoundShadow[]; +extern const u32 gBattleAnimSpriteGfx_Sunlight[]; +extern const u32 gBattleAnimSpriteGfx_Spore[]; +extern const u32 gBattleAnimSpriteGfx_Flower[]; +extern const u32 gBattleAnimSpriteGfx_RazorLeaf[]; +extern const u32 gBattleAnimSpriteGfx_Needle[]; +extern const u32 gBattleAnimSpriteGfx_WhirlwindLines[]; +extern const u32 gBattleAnimSpriteGfx_GoldRing[]; +extern const u32 gBattleAnimSpriteGfx_GreenLightWall[]; +extern const u32 gBattleAnimSpriteGfx_BlackBall2[]; +extern const u32 gBattleAnimSpriteGfx_SparkH[]; +extern const u32 gBattleAnimSpriteGfx_YellowStar[]; +extern const u32 gBattleAnimSpriteGfx_LargeFreshEgg[]; +extern const u32 gBattleAnimSpriteGfx_ShadowBall[]; +extern const u32 gBattleAnimSpriteGfx_Lick[]; +extern const u32 gBattleAnimSpriteGfx_VoidLines[]; +extern const u32 gBattleAnimSpriteGfx_String[]; +extern const u32 gBattleAnimSpriteGfx_WebThread[]; +extern const u32 gBattleAnimSpriteGfx_SpiderWeb[]; +extern const u32 gBattleAnimSpriteGfx_Lightbulb[]; +extern const u32 gBattleAnimSpriteGfx_Slash[]; +extern const u32 gBattleAnimSpriteGfx_FocusEnergy[]; +extern const u32 gBattleAnimSpriteGfx_SphereToCube[]; +extern const u32 gBattleAnimSpriteGfx_Tendrils[]; +extern const u32 gBattleAnimSpriteGfx_Eye[]; +extern const u32 gBattleAnimSpriteGfx_WhiteShadow[]; +extern const u32 gBattleAnimSpriteGfx_TealAlert[]; +extern const u32 gBattleAnimSpriteGfx_OpeningEye[]; +extern const u32 gBattleAnimSpriteGfx_RoundWhiteHalo[]; +extern const u32 gBattleAnimSpriteGfx_FangAttack[]; +extern const u32 gBattleAnimSpriteGfx_PurpleHandOutline[]; +extern const u32 gBattleAnimSpriteGfx_Moon[]; +extern const u32 gBattleAnimSpriteGfx_GreenSparkle[]; +extern const u32 gBattleAnimSpriteGfx_Spiral[]; +extern const u32 gBattleAnimSpriteGfx_SnoreZ[]; +extern const u32 gBattleAnimSpriteGfx_Explosion[]; +extern const u32 gBattleAnimSpriteGfx_Nail[]; +extern const u32 gBattleAnimSpriteGfx_GhostlySpirit[]; +extern const u32 gBattleAnimSpriteGfx_WarmRock[]; +extern const u32 gBattleAnimSpriteGfx_BreakingEgg[]; +extern const u32 gBattleAnimSpriteGfx_ThinRing[]; +extern const u32 gBattleAnimSpriteGfx_PunchImpact[]; +extern const u32 gBattleAnimSpriteGfx_Bell[]; +extern const u32 gBattleAnimSpriteGfx_MusicNotes2[]; +extern const u32 gBattleAnimSpriteGfx_SpeedDust[]; +extern const u32 gBattleAnimSpriteGfx_TornMetal[]; +extern const u32 gBattleAnimSpriteGfx_ThoughtBubble[]; +extern const u32 gBattleAnimSpriteGfx_MagentaHeart[]; +extern const u32 gBattleAnimSpriteGfx_ElectricOrbs[]; +extern const u32 gBattleAnimSpriteGfx_CircleOfLight[]; +extern const u32 gBattleAnimSpriteGfx_Electricity[]; +extern const u32 gBattleAnimSpriteGfx_Finger2[]; +extern const u32 gBattleAnimSpriteGfx_MovementWaves[]; +extern const u32 gBattleAnimSpriteGfx_MagentaHeart[]; +extern const u32 gBattleAnimSpriteGfx_RedOrb[]; +extern const u32 gBattleAnimSpriteGfx_EyeSparkle[]; +extern const u32 gBattleAnimSpriteGfx_MagentaHeart[]; +extern const u32 gBattleAnimSpriteGfx_Angel[]; +extern const u32 gBattleAnimSpriteGfx_Devil[]; +extern const u32 gBattleAnimSpriteGfx_Swipe[]; +extern const u32 gBattleAnimSpriteGfx_Roots[]; +extern const u32 gBattleAnimSpriteGfx_ItemBag[]; +extern const u32 gBattleAnimSpriteGfx_JaggedMusicNote[]; +extern const u32 gBattleAnimSpriteGfx_Pokeball[]; +extern const u32 gBattleAnimSpriteGfx_Spotlight[]; +extern const u32 gBattleAnimSpriteGfx_LetterZ[]; +extern const u32 gBattleAnimSpriteGfx_RapidSpin[]; +extern const u32 gBattleAnimSpriteGfx_TriForceTriangle[]; +extern const u32 gBattleAnimSpriteGfx_WispOrb[]; +extern const u32 gBattleAnimSpriteGfx_WispFire[]; +extern const u32 gBattleAnimSpriteGfx_GoldStars[]; +extern const u32 gBattleAnimSpriteGfx_EclipsingOrb[]; +extern const u32 gBattleAnimSpriteGfx_GrayOrb[]; +extern const u32 gBattleAnimSpriteGfx_GrayOrb[]; +extern const u32 gBattleAnimSpriteGfx_GrayOrb[]; +extern const u32 gBattleAnimSpriteGfx_PinkPetal[]; +extern const u32 gBattleAnimSpriteGfx_PainSplit[]; +extern const u32 gBattleAnimSpriteGfx_Confetti[]; +extern const u32 gBattleAnimSpriteGfx_GreenStar[]; +extern const u32 gBattleAnimSpriteGfx_PinkCloud[]; +extern const u32 gBattleAnimSpriteGfx_SweatDrop[]; +extern const u32 gBattleAnimSpriteGfx_GuardRing[]; +extern const u32 gBattleAnimSpriteGfx_PurpleScratch[]; +extern const u32 gBattleAnimSpriteGfx_PurpleSwipe[]; +extern const u32 gBattleAnimSpriteGfx_TagHand[]; +extern const u32 gBattleAnimSpriteGfx_SmallRedEye[]; +extern const u32 gBattleAnimSpriteGfx_HollowOrb[]; +extern const u32 gBattleAnimSpriteGfx_XSign[]; +extern const u32 gBattleAnimSpriteGfx_BluegreenOrb[]; +extern const u32 gBattleAnimSpriteGfx_PawPrint[]; +extern const u32 gBattleAnimSpriteGfx_PurpleFlame[]; +extern const u32 gBattleAnimSpriteGfx_RedBall[]; +extern const u32 gBattleAnimSpriteGfx_SmellingsaltEffect[]; +extern const u32 gBattleAnimSpriteGfx_Meteor[]; +extern const u32 gBattleAnimSpriteGfx_FlatRock[]; +extern const u32 gBattleAnimSpriteGfx_MagnifyingGlass[]; +extern const u32 gBattleAnimSpriteGfx_MetalSoundWaves[]; +extern const u32 gBattleAnimSpriteGfx_FlyingDirt[]; +extern const u32 gBattleAnimSpriteGfx_IcicleSpear[]; +extern const u32 gBattleAnimSpriteGfx_Hail[]; +extern const u32 gBattleAnimSpriteGfx_GlowyRedOrb[]; +extern const u32 gBattleAnimSpriteGfx_GreenSpike[]; +extern const u32 gBattleAnimSpriteGfx_Pokeblock[]; +extern const u32 gBattleAnimSpriteGfx_WhiteFeather[]; +extern const u32 gBattleAnimSpriteGfx_Sparkle6[]; +extern const u32 gBattleAnimSpriteGfx_Splash[]; +extern const u32 gBattleAnimSpriteGfx_SweatBead[]; +extern const u32 gBattleAnimSpriteGfx_Gem1[]; +extern const u32 gBattleAnimSpriteGfx_Gem2[]; +extern const u32 gBattleAnimSpriteGfx_Gem3[]; +extern const u32 gBattleAnimSpriteGfx_SlamHit2[]; +extern const u32 gBattleAnimSpriteGfx_Recycle[]; +extern const u32 gBattleAnimSpriteGfx_RedParticles[]; +extern const u32 gBattleAnimSpriteGfx_Protect[]; +extern const u32 gBattleAnimSpriteGfx_DirtMound[]; +extern const u32 gBattleAnimSpriteGfx_Shock3[]; +extern const u32 gBattleAnimSpriteGfx_WeatherBall[]; +extern const u32 gBattleAnim_ScaryFaceGfx[]; +extern const u32 gBattleAnim_ScaryFacePal[]; +extern const u32 gBattleAnimBgTilemap_ScaryFacePlayer[]; +extern const u32 gBattleAnimBgTilemap_ScaryFaceOpponent[]; +extern const u32 gBattleAnimBgTilemap_ScaryFaceContest[]; +extern const u32 gBattleAnimSpriteGfx_Bird[]; +extern const u32 gBattleAnimSpriteGfx_CrossImpact[]; + +// battle anim particle pals +extern const u32 gBattleAnimSpritePal_Bone[]; +extern const u32 gBattleAnimSpritePal_Spark[]; +extern const u32 gBattleAnimSpritePal_Pencil[]; +extern const u32 gBattleAnimSpritePal_AirWave[]; +extern const u32 gBattleAnimSpritePal_Orb[]; +extern const u32 gBattleAnimSpritePal_Sword[]; +extern const u32 gBattleAnimSpritePal_Seed[]; +extern const u32 gBattleAnimSpritePal_Explosion6[]; +extern const u32 gBattleAnimSpritePal_PinkOrb[]; +extern const u32 gBattleAnimSpritePal_Gust[]; +extern const u32 gBattleAnimSpritePal_IceCube[]; +extern const u32 gBattleAnimSpritePal_Spark2[]; +extern const u32 gBattleAnimSpritePal_Orange[]; +extern const u32 gBattleAnimSpritePal_YellowBall[]; +extern const u32 gBattleAnimSpritePal_LockOn[]; +extern const u32 gBattleAnimSpritePal_TiedBag[]; +extern const u32 gBattleAnimSpritePal_BlackSmoke[]; +extern const u32 gBattleAnimSpritePal_Conversion[]; +extern const u32 gBattleAnimSpritePal_Glass[]; +extern const u32 gBattleAnimSpritePal_HornHit[]; +extern const u32 gBattleAnimSpritePal_Hit[]; +extern const u32 gBattleAnimSpritePal_Hit2[]; +extern const u32 gBattleAnimSpritePal_BlueShards[]; +extern const u32 gBattleAnimSpritePal_ClosingEye[]; +extern const u32 gBattleAnimSpritePal_WavingHand[]; +extern const u32 gBattleAnimSpritePal_HitDuplicate[]; +extern const u32 gBattleAnimSpritePal_Leer[]; +extern const u32 gBattleAnimSpritePal_BlueBurst[]; +extern const u32 gBattleAnimSpritePal_SmallEmber[]; +extern const u32 gBattleAnimSpritePal_GraySmoke[]; +extern const u32 gBattleAnimSpritePal_BlueStar[]; +extern const u32 gBattleAnimSpritePal_BubbleBurst[]; +extern const u32 gBattleAnimSpritePal_Fire[]; +extern const u32 gBattleAnimSpritePal_Lightning2[]; +extern const u32 gBattleAnimSpritePal_ClawSlash2[]; +extern const u32 gBattleAnimSpritePal_ClawSlash[]; +extern const u32 gBattleAnimSpritePal_BubbleBurst2[]; +extern const u32 gBattleAnimSpritePal_IceChunk[]; +extern const u32 gBattleAnimSpritePal_Glass2[]; +extern const u32 gBattleAnimSpritePal_PinkHeart2[]; +extern const u32 gBattleAnimSpritePal_SapDrip[]; +extern const u32 gBattleAnimSpritePal_SapDrip2[]; +extern const u32 gBattleAnimSpritePal_Sparkle1[]; +extern const u32 gBattleAnimSpritePal_Sparkle2[]; +extern const u32 gBattleAnimSpritePal_HumanoidFoot[]; +extern const u32 gBattleAnimSpritePal_HitDuplicate[]; +extern const u32 gBattleAnimSpritePal_YellowUnk[]; +extern const u32 gBattleAnimSpritePal_SlamHit[]; +extern const u32 gBattleAnimSpritePal_Ring[]; +extern const u32 gBattleAnimSpritePal_Rocks[]; +extern const u32 gBattleAnimSpritePal_Z[]; +extern const u32 gBattleAnimSpritePal_YellowUnk2[]; +extern const u32 gBattleAnimSpritePal_AirSlash[]; +extern const u32 gBattleAnimSpritePal_SpinningGreenOrbs[]; +extern const u32 gBattleAnimSpritePal_Leaf[]; +extern const u32 gBattleAnimSpritePal_Finger[]; +extern const u32 gBattleAnimSpritePal_PoisonPowder[]; +extern const u32 gBattleAnimSpritePal_BrownTriangle[]; +extern const u32 gBattleAnimSpritePal_SleepPowder[]; +extern const u32 gBattleAnimSpritePal_StunSpore[]; +extern const u32 gBattleAnimSpritePal_PoisonPowder[]; +extern const u32 gBattleAnimSpritePal_Sparkle3[]; +extern const u32 gBattleAnimSpritePal_MusicNotes[]; +extern const u32 gBattleAnimSpritePal_Duck[]; +extern const u32 gBattleAnimSpritePal_MudSand[]; +extern const u32 gBattleAnimSpritePal_Alert[]; +extern const u32 gBattleAnimSpritePal_BlueFlames[]; +extern const u32 gBattleAnimSpritePal_Shock4[]; +extern const u32 gBattleAnimSpritePal_Bell2[]; +extern const u32 gBattleAnimSpritePal_PinkGlove[]; +extern const u32 gBattleAnimSpritePal_BlueLines[]; +extern const u32 gBattleAnimSpritePal_Impact3[]; +extern const u32 gBattleAnimSpritePal_Impact2[]; +extern const u32 gBattleAnimSpritePal_Reticle[]; +extern const u32 gBattleAnimSpritePal_Breath[]; +extern const u32 gBattleAnimSpritePal_Anger[]; +extern const u32 gBattleAnimSpritePal_Snowball[]; +extern const u32 gBattleAnimSpritePal_Vine[]; +extern const u32 gBattleAnimSpritePal_Sword2[]; +extern const u32 gBattleAnimSpritePal_Clapping[]; +extern const u32 gBattleAnimSpritePal_RedTube[]; +extern const u32 gBattleAnimSpritePal_Amnesia[]; +extern const u32 gBattleAnimSpritePal_String2[]; +extern const u32 gBattleAnimSpritePal_Pencil2[]; +extern const u32 gBattleAnimSpritePal_Petal[]; +extern const u32 gBattleAnimSpritePal_BentSpoon[]; +extern const u32 gBattleAnimSpritePal_MilkBottle[]; +extern const u32 gBattleAnimSpritePal_Coin[]; +extern const u32 gBattleAnimSpritePal_CrackedEgg[]; +extern const u32 gBattleAnimSpritePal_FreshEgg[]; +extern const u32 gBattleAnimSpritePal_Fangs[]; +extern const u32 gBattleAnimSpritePal_Explosion2[]; +extern const u32 gBattleAnimSpritePal_WaterDroplet[]; +extern const u32 gBattleAnimSpritePal_Seed2[]; +extern const u32 gBattleAnimSpritePal_RedWand[]; +extern const u32 gBattleAnimSpritePal_PurpleGreenUnk[]; +extern const u32 gBattleAnimSpritePal_WaterColumn[]; +extern const u32 gBattleAnimSpritePal_MudUnk[]; +extern const u32 gBattleAnimSpritePal_RainDrops[]; +extern const u32 gBattleAnimSpritePal_FurySwipes[]; +extern const u32 gBattleAnimSpritePal_Vine2[]; +extern const u32 gBattleAnimSpritePal_Teeth[]; +extern const u32 gBattleAnimSpritePal_Bone2[]; +extern const u32 gBattleAnimSpritePal_WhiteBag[]; +extern const u32 gBattleAnimSpritePal_Unknown[]; +extern const u32 gBattleAnimSpritePal_PurpleCoral[]; +extern const u32 gBattleAnimSpritePal_Shock2[]; +extern const u32 gBattleAnimSpritePal_ClosingEye2[]; +extern const u32 gBattleAnimSpritePal_MetalBall[]; +extern const u32 gBattleAnimSpritePal_MonsterDoll[]; +extern const u32 gBattleAnimSpritePal_Whirlwind[]; +extern const u32 gBattleAnimSpritePal_Explosion4[]; +extern const u32 gBattleAnimSpritePal_Tongue[]; +extern const u32 gBattleAnimSpritePal_Smoke[]; +extern const u32 gBattleAnimSpritePal_Impact[]; +extern const u32 gBattleAnimSpritePal_CircleImpact[]; +extern const u32 gBattleAnimSpritePal_SharpTeeth[]; +extern const u32 gBattleAnimSpritePal_RainbowRings[]; +extern const u32 gBattleAnimSpritePal_IceCrystals[]; +extern const u32 gBattleAnimSpritePal_HandsAndFeet[]; +extern const u32 gBattleAnimSpritePal_MistCloud[]; +extern const u32 gBattleAnimSpritePal_Orbs[]; +extern const u32 gBattleAnimSpritePal_WaterImpact[]; +extern const u32 gBattleAnimSpritePal_PoisonBubble[]; +extern const u32 gBattleAnimSpritePal_Spikes[]; +extern const u32 gBattleAnimSpritePal_HornHit2[]; +extern const u32 gBattleAnimSpritePal_AirWave2[]; +extern const u32 gBattleAnimSpritePal_SmallBubbles[]; +extern const u32 gBattleAnimSpritePal_RoundShadow[]; +extern const u32 gBattleAnimSpritePal_Sunlight[]; +extern const u32 gBattleAnimSpritePal_Spore[]; +extern const u32 gBattleAnimSpritePal_Flower[]; +extern const u32 gBattleAnimSpritePal_RazorLeaf[]; +extern const u32 gBattleAnimSpritePal_Needle[]; +extern const u32 gBattleAnimSpritePal_WhirlwindLines[]; +extern const u32 gBattleAnimSpritePal_GoldRing[]; +extern const u32 gBattleAnimSpritePal_PurpleRing[]; +extern const u32 gBattleAnimSpritePal_BlueRing[]; +extern const u32 gBattleAnimSpritePal_GreenLightWall[]; +extern const u32 gBattleAnimSpritePal_BlueLightWall[]; +extern const u32 gBattleAnimSpritePal_RedLightWall[]; +extern const u32 gBattleAnimSpritePal_GrayLightWall[]; +extern const u32 gBattleAnimSpritePal_OrangeLightWall[]; +extern const u32 gBattleAnimSpritePal_BlackBall2[]; +extern const u32 gBattleAnimSpritePal_PurpleGasCloud[]; +extern const u32 gBattleAnimSpritePal_YellowStar[]; +extern const u32 gBattleAnimSpritePal_LargeFreshEgg[]; +extern const u32 gBattleAnimSpritePal_ShadowBall[]; +extern const u32 gBattleAnimSpritePal_Lick[]; +extern const u32 gBattleAnimSpritePal_VoidLines[]; +extern const u32 gBattleAnimSpritePal_String[]; +extern const u32 gBattleAnimSpritePal_Lightbulb[]; +extern const u32 gBattleAnimSpritePal_Slash[]; +extern const u32 gBattleAnimSpritePal_FocusEnergy[]; +extern const u32 gBattleAnimSpritePal_SphereToCube[]; +extern const u32 gBattleAnimSpritePal_Tendrils[]; +extern const u32 gBattleAnimSpritePal_Eye[]; +extern const u32 gBattleAnimSpritePal_WhiteShadow[]; +extern const u32 gBattleAnimSpritePal_TealAlert[]; +extern const u32 gBattleAnimSpritePal_OpeningEye[]; +extern const u32 gBattleAnimSpritePal_RoundWhiteHalo[]; +extern const u32 gBattleAnimSpritePal_FangAttack[]; +extern const u32 gBattleAnimSpritePal_PurpleHandOutline[]; +extern const u32 gBattleAnimSpritePal_Moon[]; +extern const u32 gBattleAnimSpritePal_GreenSparkle[]; +extern const u32 gBattleAnimSpritePal_Spiral[]; +extern const u32 gBattleAnimSpritePal_SnoreZ[]; +extern const u32 gBattleAnimSpritePal_Explosion[]; +extern const u32 gBattleAnimSpritePal_Nail[]; +extern const u32 gBattleAnimSpritePal_GhostlySpirit[]; +extern const u32 gBattleAnimSpritePal_WarmRock[]; +extern const u32 gBattleAnimSpritePal_BreakingEgg[]; +extern const u32 gBattleAnimSpritePal_ThinRing[]; +extern const u32 gBattleAnimSpritePal_PunchImpact[]; +extern const u32 gBattleAnimSpritePal_Bell[]; +extern const u32 gBattleAnimSpritePal_MusicNotes2[]; +extern const u32 gBattleAnimSpritePal_SpeedDust[]; +extern const u32 gBattleAnimSpritePal_ThoughtBubble[]; +extern const u32 gBattleAnimSpritePal_MagentaHeart[]; +extern const u32 gBattleAnimSpritePal_ElectricOrbs[]; +extern const u32 gBattleAnimSpritePal_MovementWaves[]; +extern const u32 gBattleAnimSpritePal_RedHeart[]; +extern const u32 gBattleAnimSpritePal_RedOrb[]; +extern const u32 gBattleAnimSpritePal_EyeSparkle[]; +extern const u32 gBattleAnimSpritePal_PinkHeart[]; +extern const u32 gBattleAnimSpritePal_Angel[]; +extern const u32 gBattleAnimSpritePal_Devil[]; +extern const u32 gBattleAnimSpritePal_Swipe[]; +extern const u32 gBattleAnimSpritePal_Roots[]; +extern const u32 gBattleAnimSpritePal_ItemBag[]; +extern const u32 gBattleAnimSpritePal_JaggedMusicNote[]; +extern const u32 gBattleAnimSpritePal_Pokeball[]; +extern const u32 gBattleAnimSpritePal_LetterZ[]; +extern const u32 gBattleAnimSpritePal_RapidSpin[]; +extern const u32 gBattleAnimSpritePal_TriForceTriangle[]; +extern const u32 gBattleAnimSpritePal_WispOrb[]; +extern const u32 gBattleAnimSpritePal_GoldStars[]; +extern const u32 gBattleAnimSpritePal_EclipsingOrb[]; +extern const u32 gBattleAnimSpritePal_GrayOrb[]; +extern const u32 gBattleAnimSpritePal_BlueOrb[]; +extern const u32 gBattleAnimSpritePal_RedOrb2[]; +extern const u32 gBattleAnimSpritePal_PinkPetal[]; +extern const u32 gBattleAnimSpritePal_PainSplit[]; +extern const u32 gBattleAnimSpritePal_Confetti[]; +extern const u32 gBattleAnimSpritePal_GreenStar[]; +extern const u32 gBattleAnimSpritePal_PinkCloud[]; +extern const u32 gBattleAnimSpritePal_SweatDrop[]; +extern const u32 gBattleAnimSpritePal_GuardRing[]; +extern const u32 gBattleAnimSpritePal_PurpleScratch[]; +extern const u32 gBattleAnimSpritePal_SmallRedEye[]; +extern const u32 gBattleAnimSpritePal_HollowOrb[]; +extern const u32 gBattleAnimSpritePal_BluegreenOrb[]; +extern const u32 gBattleAnimSpritePal_PawPrint[]; +extern const u32 gBattleAnimSpritePal_PurpleFlame[]; +extern const u32 gBattleAnimSpritePal_RedBall[]; +extern const u32 gBattleAnimSpritePal_SmellingsaltEffect[]; +extern const u32 gBattleAnimSpritePal_Meteor[]; +extern const u32 gBattleAnimSpritePal_FlatRock[]; +extern const u32 gBattleAnimSpritePal_MagnifyingGlass[]; +extern const u32 gBattleAnimSpritePal_BrownOrb[]; +extern const u32 gBattleAnimSpritePal_MetalSoundWaves[]; +extern const u32 gBattleAnimSpritePal_FlyingDirt[]; +extern const u32 gBattleAnimSpritePal_IcicleSpear[]; +extern const u32 gBattleAnimSpritePal_Hail[]; +extern const u32 gBattleAnimSpritePal_GlowyRedOrb[]; +extern const u32 gBattleAnimSpritePal_GlowyGreenOrb[]; +extern const u32 gBattleAnimSpritePal_GreenSpike[]; +extern const u32 gBattleAnimSpritePal_WhiteCircleOfLight[]; +extern const u32 gBattleAnimSpritePal_GlowyBlueOrb[]; +extern const u32 gBattleAnimSpritePal_Pokeblock[]; +extern const u32 gBattleAnimSpritePal_WhiteFeather[]; +extern const u32 gBattleAnimSpritePal_Sparkle6[]; +extern const u32 gBattleAnimSpritePal_Splash[]; +extern const u32 gBattleAnimSpritePal_Gem1[]; +extern const u32 gBattleAnimSpritePal_SlamHit2[]; +extern const u32 gBattleAnimSpritePal_Recycle[]; +extern const u32 gBattleAnimSpritePal_RedParticles[]; +extern const u32 gBattleAnimSpritePal_Protect[]; +extern const u32 gBattleAnimSpritePal_DirtMound[]; +extern const u32 gBattleAnimSpritePal_Shock3[]; +extern const u32 gBattleAnimSpritePal_WeatherBall[]; +extern const u32 gBattleAnimSpritePal_Bird[]; +extern const u32 gBattleAnimSpritePal_CrossImpact[]; +extern const u32 gBattleAnimSpritePal_Slash2[]; +extern const u32 gBattleAnimSpritePal_WhipHit[]; +extern const u32 gBattleAnimSpritePal_BlueRing2[]; + +// battle anim task +extern const u32 gUnknown_D2EC24_Gfx[]; +extern const u32 gUnknown_D2EC24_Tilemap[]; +extern const u32 gCureBubblesGfx[]; +extern const u32 gCureBubblesPal[]; +extern const u32 gCureBubblesTilemap[]; +extern const u32 gBattleAnimBg_AttractGfx[]; +extern const u32 gBattleAnimBg_AttractTilemap[]; +extern const u32 gBattleAnimBg_AttractPal[]; +extern const u32 gBattleAnim_MorningSunGfx[]; +extern const u32 gBattleAnim_MorningSunTilemap[]; +extern const u32 gBattleAnim_MorningSunPal[]; + +// battle bg +extern const u32 gBattleAnimBgImage_Dark[]; +extern const u32 gBattleAnimBgImage_Ghost[]; +extern const u32 gBattleAnimBgImage_Psychic[]; +extern const u32 gBattleAnimBgImage_Impact[]; +extern const u32 gBattleAnimBgImage_Drill[]; +extern const u32 gBattleAnimBgImage_Highspeed[]; +extern const u32 gBattleAnimBgImage_Thunder[]; +extern const u32 gBattleAnimBgImage_Guillotine[]; +extern const u32 gBattleAnimBgImage_Ice[]; +extern const u32 gBattleAnimBgImage_Cosmic[]; +extern const u32 gBattleAnimBgImage_InAir[]; +extern const u32 gBattleAnimBgImage_Aurora[]; +extern const u32 gBattleAnimBgImage_Fissure[]; +extern const u32 gBattleAnimBgPalette_Dark[]; +extern const u32 gBattleAnimBgPalette_Ghost[]; +extern const u32 gBattleAnimBgPalette_Psychic[]; +extern const u32 gBattleAnimBgPalette_Impact[]; +extern const u32 gBattleAnimBgPalette_Drill[]; +extern const u32 gBattleAnimBgPalette_Highspeed[]; +extern const u32 gBattleAnimBgPalette_Thunder[]; +extern const u32 gBattleAnimBgPalette_Guillotine[]; +extern const u32 gBattleAnimBgPalette_Ice[]; +extern const u32 gBattleAnimBgPalette_Cosmic[]; +extern const u32 gBattleAnimBgPalette_InAir[]; +extern const u32 gBattleAnimBgPalette_Sky[]; +extern const u32 gBattleAnimBgPalette_Aurora[]; +extern const u32 gBattleAnimBgPalette_Fissure[]; +extern const u32 gBattleAnimBgPalette_Bug[]; +extern const u32 gBattleAnimBgPalette_Solarbeam[]; +extern const u32 gBattleAnimBgTilemap_Dark[]; +extern const u32 gBattleAnimBgTilemap_Ghost[]; +extern const u32 gBattleAnimBgTilemap_Psychic[]; +extern const u32 gBattleAnimBgTilemap_ImpactOpponent[]; +extern const u32 gBattleAnimBgTilemap_ImpactPlayer[]; +extern const u32 gBattleAnimBgTilemap_ImpactContests[]; +extern const u32 gBattleAnimBgTilemap_Drill[]; +extern const u32 gBattleAnimBgTilemap_DrillContests[]; +extern const u32 gBattleAnimBgTilemap_HighspeedOpponent[]; +extern const u32 gBattleAnimBgTilemap_HighspeedPlayer[]; +extern const u32 gBattleAnimBgTilemap_Thunder[]; +extern const u32 gBattleAnimBgTilemap_GuillotineOpponent[]; +extern const u32 gBattleAnimBgTilemap_GuillotinePlayer[]; +extern const u32 gBattleAnimBgTilemap_GuillotineContests[]; +extern const u32 gBattleAnimBgTilemap_Ice[]; +extern const u32 gBattleAnimBgTilemap_Cosmic[]; +extern const u32 gBattleAnimBgTilemap_InAir[]; +extern const u32 gBattleAnimBgTilemap_Aurora[]; +extern const u32 gBattleAnimBgTilemap_Fissure[]; + // dark extern const u32 gMetalShineGfx[]; extern const u32 gMetalShinePalette[]; diff --git a/include/math_util.h b/include/math_util.h index 74dbbe98e..473be5d45 100644 --- a/include/math_util.h +++ b/include/math_util.h @@ -2,5 +2,6 @@ #define GUARD_MATH_UTIL_H s16 sub_80D8B90(s16 y); +s16 sub_80D8AA0(s16 x, s16 y); #endif //GUARD_MATH_UTIL_H diff --git a/include/pokeball.h b/include/pokeball.h index 0e941f9ed..1c2241246 100644 --- a/include/pokeball.h +++ b/include/pokeball.h @@ -20,6 +20,8 @@ enum POKEBALL_COUNT }; +extern const struct SpriteTemplate gBallSpriteTemplates[]; + #define POKEBALL_PLAYER_SENDOUT 0xFF #define POKEBALL_OPPONENT_SENDOUT 0xFE diff --git a/ld_script.txt b/ld_script.txt index 0e7cbca77..f4678a1b0 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -111,11 +111,11 @@ SECTIONS { src/tileset_anims.o(.text); src/palette.o(.text); src/sound.o(.text); - asm/battle_anim.o(.text); + src/battle_anim.o(.text); src/battle_anim_mons.o(.text); src/task.o(.text); src/reshow_battle_screen.o(.text); - asm/battle_anim_status_effects.o(.text); + src/battle_anim_status_effects.o(.text); src/title_screen.o(.text); src/reset_save_heap.o(.text); asm/field_weather.o(.text); @@ -155,8 +155,8 @@ SECTIONS { src/field_special_scene.o(.text); src/safari_zone.o(.text); src/item_use.o(.text); - asm/battle_anim_effects_1.o(.text); - asm/battle_anim_effects_2.o(.text); + src/battle_anim_effects_1.o(.text); + src/battle_anim_effects_2.o(.text); asm/water.o(.text); src/fire.o(.text); src/electric.o(.text); @@ -206,14 +206,14 @@ SECTIONS { src/battle_anim_sound_tasks.o(.text); src/battle_controller_safari.o(.text); src/fldeff_sweetscent.o(.text); - asm/battle_anim_effects_3.o(.text); + src/battle_anim_effects_3.o(.text); src/learn_move.o(.text); src/fldeff_softboiled.o(.text); src/battle_tower.o(.text); src/battle_controller_oak_old_man.o(.text); src/player_pc.o(.text); src/intro.o(.text); - asm/battle_anim_special.o(.text); + src/battle_anim_special.o(.text); src/hall_of_fame.o(.text); src/credits.o(.text); src/diploma.o(.text); @@ -421,10 +421,10 @@ SECTIONS { src/tileset_anims.o(.rodata); src/palette.o(.rodata); src/sound.o(.rodata); - data/battle_anim.o(.rodata); + src/battle_anim.o(.rodata); src/battle_anim_mons.o(.rodata); data/map_events.o(.rodata); - data/battle_anim_status_effects.o(.rodata); + src/battle_anim_status_effects.o(.rodata); src/title_screen.o(.rodata); data/field_weather.o(.rodata); data/field_screen_effect.o(.rodata); @@ -449,6 +449,8 @@ SECTIONS { data/naming_screen.o(.rodata); src/pokemon_size_record.o(.rodata); src/item_use.o(.rodata); + src/battle_anim_effects_1.o(.rodata); + src/battle_anim_effects_2.o(.rodata); data/battle_anim_effects_misc.o(.rodata); src/fire.o(.rodata); src/electric.o(.rodata); @@ -483,13 +485,13 @@ SECTIONS { src/save.o(.rodata); data/field_effect_helpers.o(.rodata); src/battle_controller_safari.o(.rodata); - data/battle_anim_effects_3.o(.rodata); + src/battle_anim_effects_3.o(.rodata); src/learn_move.o(.rodata); src/battle_tower.o(.rodata); src/battle_controller_oak_old_man.o(.rodata); src/player_pc.o(.rodata); src/intro.o(.rodata); - data/battle_anim_special.o(.rodata); + src/battle_anim_special.o(.rodata); src/hall_of_fame.o(.rodata); src/credits.o(.rodata); src/diploma.o(.rodata); diff --git a/src/battle_anim.c b/src/battle_anim.c new file mode 100644 index 000000000..0cb88219a --- /dev/null +++ b/src/battle_anim.c @@ -0,0 +1,3347 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "battle_controllers.h" +#include "battle_interface.h" +#include "battle_bg.h" +#include "bg.h" +#include "decompress.h" +#include "dma3.h" +#include "gpu_regs.h" +#include "graphics.h" +#include "main.h" +#include "m4a.h" +#include "palette.h" +#include "pokemon.h" +#include "sound.h" +#include "sprite.h" +#include "task.h" +#include "constants/battle_anim.h" + +#define ANIM_SPRITE_INDEX_COUNT 8 + +// RAM +EWRAM_DATA static const u8 *sBattleAnimScriptPtr = NULL; +EWRAM_DATA static const u8 *sBattleAnimScriptRetAddr = NULL; +EWRAM_DATA void (*gAnimScriptCallback)(void) = NULL; +EWRAM_DATA static s8 sAnimFramesToWait = 0; +EWRAM_DATA bool8 gAnimScriptActive = FALSE; +EWRAM_DATA u8 gAnimVisualTaskCount = 0; +EWRAM_DATA u8 gAnimSoundTaskCount = 0; +EWRAM_DATA struct DisableStruct *gAnimDisableStructPtr = NULL; +EWRAM_DATA s32 gAnimMoveDmg = 0; +EWRAM_DATA u16 gAnimMovePower = 0; +EWRAM_DATA static u16 sAnimSpriteIndexArray[ANIM_SPRITE_INDEX_COUNT] = {0}; +EWRAM_DATA u8 gAnimFriendship = 0; +EWRAM_DATA u16 gWeatherMoveAnim = 0; +EWRAM_DATA s16 gBattleAnimArgs[ANIM_ARGS_COUNT] = {0}; +EWRAM_DATA static u16 sSoundAnimFramesToWait = 0; +EWRAM_DATA static u8 sMonAnimTaskIdArray[2] = {0}; +EWRAM_DATA u8 gAnimMoveTurn = 0; +EWRAM_DATA static u8 sAnimBackgroundFadeState = 0; +EWRAM_DATA static u16 sAnimMoveIndex = 0; +EWRAM_DATA u8 gBattleAnimAttacker = 0; +EWRAM_DATA u8 gBattleAnimTarget = 0; +EWRAM_DATA u16 gAnimBattlerSpecies[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u8 gUnknown_2037F24 = 0; + +// Function Declarations +static void AddSpriteIndex(u16 index); +static void ClearSpriteIndex(u16 index); +static void WaitAnimFrameCount(void); +static void RunAnimScriptCommand(void); +static void sub_8073558(u8 taskId); +static void Task_FadeToBg(u8 taskId); +static void Task_PanFromInitialToTarget(u8 taskId); +static void task_pA_ma0A_obj_to_bg_pal(u8 taskId); +static void LoadMoveBg(u16 bgId); +static void LoadDefaultBg(void); +static void Task_LoopAndPlaySE(u8 taskId); +static void Task_WaitAndPlaySE(u8 taskId); +static void sub_807331C(u8 taskId); + +static void ScriptCmd_loadspritegfx(void); +static void ScriptCmd_unloadspritegfx(void); +static void ScriptCmd_createsprite(void); +static void ScriptCmd_createvisualtask(void); +static void ScriptCmd_delay(void); +static void ScriptCmd_waitforvisualfinish(void); +static void ScriptCmd_hang1(void); +static void ScriptCmd_hang2(void); +static void ScriptCmd_end(void); +static void ScriptCmd_playse(void); +static void ScriptCmd_monbg(void); +static void ScriptCmd_clearmonbg(void); +static void ScriptCmd_setalpha(void); +static void ScriptCmd_blendoff(void); +static void ScriptCmd_call(void); +static void ScriptCmd_return(void); +static void ScriptCmd_setarg(void); +static void ScriptCmd_choosetwoturnanim(void); +static void ScriptCmd_jumpifmoveturn(void); +static void ScriptCmd_goto(void); +static void ScriptCmd_fadetobg(void); +static void ScriptCmd_restorebg(void); +static void ScriptCmd_waitbgfadeout(void); +static void ScriptCmd_waitbgfadein(void); +static void ScriptCmd_changebg(void); +static void ScriptCmd_playsewithpan(void); +static void ScriptCmd_setpan(void); +static void ScriptCmd_panse_1B(void); +static void ScriptCmd_loopsewithpan(void); +static void ScriptCmd_waitplaysewithpan(void); +static void ScriptCmd_setbldcnt(void); +static void ScriptCmd_createsoundtask(void); +static void ScriptCmd_waitsound(void); +static void ScriptCmd_jumpargeq(void); +static void ScriptCmd_monbg_22(void); +static void ScriptCmd_clearmonbg_23(void); +static void ScriptCmd_jumpifcontest(void); +static void ScriptCmd_fadetobgfromset(void); +static void ScriptCmd_panse_26(void); +static void ScriptCmd_panse_27(void); +static void ScriptCmd_monbgprio_28(void); +static void ScriptCmd_monbgprio_29(void); +static void ScriptCmd_monbgprio_2A(void); +static void ScriptCmd_invisible(void); +static void ScriptCmd_visible(void); +static void ScriptCmd_doublebattle_2D(void); +static void ScriptCmd_doublebattle_2E(void); +static void ScriptCmd_stopsound(void); + +// Data +const struct OamData gOamData_AffineOff_ObjNormal_8x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x8), + .x = 0, + .size = SPRITE_SIZE(8x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_16x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_32x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x32), + .x = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_64x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x64), + .x = 0, + .size = SPRITE_SIZE(64x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_16x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x8), + .x = 0, + .size = SPRITE_SIZE(16x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_32x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x8), + .x = 0, + .size = SPRITE_SIZE(32x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_32x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x16), + .x = 0, + .size = SPRITE_SIZE(32x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_64x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x32), + .x = 0, + .size = SPRITE_SIZE(64x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_8x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x16), + .x = 0, + .size = SPRITE_SIZE(8x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_8x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x32), + .x = 0, + .size = SPRITE_SIZE(8x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_16x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x32), + .x = 0, + .size = SPRITE_SIZE(16x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_32x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x64), + .x = 0, + .size = SPRITE_SIZE(32x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_8x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x8), + .x = 0, + .size = SPRITE_SIZE(8x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_16x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_32x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x32), + .x = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_64x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x64), + .x = 0, + .size = SPRITE_SIZE(64x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_16x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x8), + .x = 0, + .size = SPRITE_SIZE(16x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_32x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x8), + .x = 0, + .size = SPRITE_SIZE(32x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_32x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x16), + .x = 0, + .size = SPRITE_SIZE(32x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_64x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x32), + .x = 0, + .size = SPRITE_SIZE(64x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_8x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x16), + .x = 0, + .size = SPRITE_SIZE(8x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_8x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x32), + .x = 0, + .size = SPRITE_SIZE(8x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_16x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x32), + .x = 0, + .size = SPRITE_SIZE(16x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_32x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x64), + .x = 0, + .size = SPRITE_SIZE(32x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_8x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x8), + .x = 0, + .size = SPRITE_SIZE(8x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_16x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_32x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x32), + .x = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_64x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x64), + .x = 0, + .size = SPRITE_SIZE(64x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_16x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x8), + .x = 0, + .size = SPRITE_SIZE(16x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_32x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x8), + .x = 0, + .size = SPRITE_SIZE(32x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_32x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x16), + .x = 0, + .size = SPRITE_SIZE(32x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_64x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x32), + .x = 0, + .size = SPRITE_SIZE(64x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_8x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x16), + .x = 0, + .size = SPRITE_SIZE(8x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_8x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x32), + .x = 0, + .size = SPRITE_SIZE(8x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_16x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x32), + .x = 0, + .size = SPRITE_SIZE(16x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_32x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x64), + .x = 0, + .size = SPRITE_SIZE(32x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_8x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x8), + .x = 0, + .size = SPRITE_SIZE(8x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_16x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_32x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x32), + .x = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_64x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x64), + .x = 0, + .size = SPRITE_SIZE(64x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_16x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x8), + .x = 0, + .size = SPRITE_SIZE(16x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_32x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x8), + .x = 0, + .size = SPRITE_SIZE(32x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_32x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x16), + .x = 0, + .size = SPRITE_SIZE(32x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_64x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x32), + .x = 0, + .size = SPRITE_SIZE(64x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_8x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x16), + .x = 0, + .size = SPRITE_SIZE(8x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_8x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x32), + .x = 0, + .size = SPRITE_SIZE(8x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_16x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x32), + .x = 0, + .size = SPRITE_SIZE(16x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_32x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x64), + .x = 0, + .size = SPRITE_SIZE(32x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_8x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x8), + .x = 0, + .size = SPRITE_SIZE(8x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_16x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_32x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x32), + .x = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_64x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x64), + .x = 0, + .size = SPRITE_SIZE(64x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_16x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x8), + .x = 0, + .size = SPRITE_SIZE(16x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_32x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x8), + .x = 0, + .size = SPRITE_SIZE(32x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_32x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x16), + .x = 0, + .size = SPRITE_SIZE(32x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_64x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x32), + .x = 0, + .size = SPRITE_SIZE(64x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_8x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x16), + .x = 0, + .size = SPRITE_SIZE(8x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_8x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x32), + .x = 0, + .size = SPRITE_SIZE(8x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_16x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x32), + .x = 0, + .size = SPRITE_SIZE(16x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_32x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x64), + .x = 0, + .size = SPRITE_SIZE(32x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_8x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x8), + .x = 0, + .size = SPRITE_SIZE(8x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_16x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_32x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x32), + .x = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_64x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x64), + .x = 0, + .size = SPRITE_SIZE(64x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_16x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x8), + .x = 0, + .size = SPRITE_SIZE(16x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_32x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x8), + .x = 0, + .size = SPRITE_SIZE(32x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_32x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x16), + .x = 0, + .size = SPRITE_SIZE(32x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_64x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x32), + .x = 0, + .size = SPRITE_SIZE(64x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_8x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x16), + .x = 0, + .size = SPRITE_SIZE(8x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_8x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x32), + .x = 0, + .size = SPRITE_SIZE(8x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_16x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x32), + .x = 0, + .size = SPRITE_SIZE(16x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_32x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x64), + .x = 0, + .size = SPRITE_SIZE(32x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct CompressedSpriteSheet gBattleAnimPicTable[] = +{ + {gBattleAnimSpriteGfx_Bone, 0x0200, ANIM_TAG_BONE}, + {gBattleAnimSpriteGfx_Spark, 0x0300, ANIM_TAG_SPARK}, + {gBattleAnimSpriteGfx_Pencil, 0x0200, ANIM_TAG_PENCIL}, + {gBattleAnimSpriteGfx_AirWave, 0x0100, ANIM_TAG_AIR_WAVE}, + {gBattleAnimSpriteGfx_Orb, 0x0200, ANIM_TAG_ORB}, + {gBattleAnimSpriteGfx_Sword, 0x0400, ANIM_TAG_SWORD}, + {gBattleAnimSpriteGfx_Seed, 0x0180, ANIM_TAG_SEED}, + {gBattleAnimSpriteGfx_Explosion6, 0x0800, ANIM_TAG_EXPLOSION_6}, + {gBattleAnimSpriteGfx_PinkOrb, 0x0020, ANIM_TAG_PINK_ORB}, + {gBattleAnimSpriteGfx_Gust, 0x0400, ANIM_TAG_GUST}, + {gBattleAnimSpriteGfx_IceCube, 0x1200, ANIM_TAG_ICE_CUBE}, + {gBattleAnimSpriteGfx_Spark2, 0x0180, ANIM_TAG_SPARK_2}, + {gBattleAnimSpriteGfx_Orange, 0x0080, ANIM_TAG_ORANGE}, + {gBattleAnimSpriteGfx_YellowBall, 0x0080, ANIM_TAG_YELLOW_BALL}, + {gBattleAnimSpriteGfx_LockOn, 0x0280, ANIM_TAG_LOCK_ON}, + {gBattleAnimSpriteGfx_TiedBag, 0x0080, ANIM_TAG_TIED_BAG}, + {gBattleAnimSpriteGfx_BlackSmoke, 0x0100, ANIM_TAG_BLACK_SMOKE}, + {gBattleAnimSpriteGfx_BlackBall, 0x0020, ANIM_TAG_BLACK_BALL}, + {gBattleAnimSpriteGfx_Conversion, 0x0080, ANIM_TAG_CONVERSION}, + {gBattleAnimSpriteGfx_Glass, 0x0400, ANIM_TAG_GLASS}, + {gBattleAnimSpriteGfx_HornHit, 0x0200, ANIM_TAG_HORN_HIT}, + {gBattleAnimSpriteGfx_Hit, 0x0A00, ANIM_TAG_HIT}, + {gBattleAnimSpriteGfx_Hit, 0x0A00, ANIM_TAG_HIT_2}, + {gBattleAnimSpriteGfx_BlueShards, 0x0380, ANIM_TAG_BLUE_SHARDS}, + {gBattleAnimSpriteGfx_ClosingEye, 0x0300, ANIM_TAG_CLOSING_EYE}, + {gBattleAnimSpriteGfx_WavingHand, 0x0A00, ANIM_TAG_WAVING_HAND}, + {gBattleAnimSpriteGfx_HitDuplicate, 0x0A00, ANIM_TAG_HIT_DUPLICATE}, + {gBattleAnimSpriteGfx_Leer, 0x0A00, ANIM_TAG_LEER}, + {gBattleAnimSpriteGfx_BlueBurst, 0x0A00, ANIM_TAG_BLUE_BURST}, + {gBattleAnimSpriteGfx_SmallEmber, 0x0A00, ANIM_TAG_SMALL_EMBER}, + {gBattleAnimSpriteGfx_GraySmoke, 0x0A00, ANIM_TAG_GRAY_SMOKE}, + {gBattleAnimSpriteGfx_BlueStar, 0x0E00, ANIM_TAG_BLUE_STAR}, + {gBattleAnimSpriteGfx_BubbleBurst, 0x0380, ANIM_TAG_BUBBLE_BURST}, + {gBattleAnimSpriteGfx_Fire, 0x1000, ANIM_TAG_FIRE}, + {gBattleAnimSpriteGfx_SpinningFire, 0x0800, ANIM_TAG_SPINNING_FIRE}, + {gBattleAnimSpriteGfx_FirePlume, 0x0A00, ANIM_TAG_FIRE_PLUME}, + {gBattleAnimSpriteGfx_Lightning2, 0x0800, ANIM_TAG_LIGHTNING_2}, + {gBattleAnimSpriteGfx_Lightning, 0x0A00, ANIM_TAG_LIGHTNING}, + {gBattleAnimSpriteGfx_ClawSlash2, 0x0A00, ANIM_TAG_CLAW_SLASH_2}, + {gBattleAnimSpriteGfx_ClawSlash, 0x0A00, ANIM_TAG_CLAW_SLASH}, + {gBattleAnimSpriteGfx_Scratch3, 0x0A00, ANIM_TAG_SCRATCH_3}, + {gBattleAnimSpriteGfx_Scratch2, 0x0A00, ANIM_TAG_SCRATCH_2}, + {gBattleAnimSpriteGfx_BubbleBurst2, 0x0A00, ANIM_TAG_BUBBLE_BURST_2}, + {gBattleAnimSpriteGfx_IceChunk, 0x0A00, ANIM_TAG_ICE_CHUNK}, + {gBattleAnimSpriteGfx_Glass2, 0x0A00, ANIM_TAG_GLASS_2}, + {gBattleAnimSpriteGfx_PinkHeart2, 0x0A00, ANIM_TAG_PINK_HEART_2}, + {gBattleAnimSpriteGfx_SapDrip, 0x1000, ANIM_TAG_SAP_DRIP}, + {gBattleAnimSpriteGfx_SapDrip, 0x1000, ANIM_TAG_SAP_DRIP_2}, + {gBattleAnimSpriteGfx_Sparkle1, 0x1000, ANIM_TAG_SPARKLE_1}, + {gBattleAnimSpriteGfx_Sparkle1, 0x1000, ANIM_TAG_SPARKLE_2}, + {gBattleAnimSpriteGfx_HumanoidFoot, 0x0200, ANIM_TAG_HUMANOID_FOOT}, + {gBattleAnimSpriteGfx_MonsterFoot, 0x0200, ANIM_TAG_MONSTER_FOOT}, + {gBattleAnimSpriteGfx_HumanoidHand, 0x0200, ANIM_TAG_HUMANOID_HAND}, + {gBattleAnimSpriteGfx_NoiseLine, 0x0800, ANIM_TAG_NOISE_LINE}, + {gBattleAnimSpriteGfx_YellowUnk, 0x0080, ANIM_TAG_YELLOW_UNK}, + {gBattleAnimSpriteGfx_RedFist, 0x0200, ANIM_TAG_RED_FIST}, + {gBattleAnimSpriteGfx_SlamHit, 0x1000, ANIM_TAG_SLAM_HIT}, + {gBattleAnimSpriteGfx_Ring, 0x0180, ANIM_TAG_RING}, + {gBattleAnimSpriteGfx_Rocks, 0x0C00, ANIM_TAG_ROCKS}, + {gBattleAnimSpriteGfx_Z, 0x0100, ANIM_TAG_Z}, + {gBattleAnimSpriteGfx_YellowUnk2, 0x0040, ANIM_TAG_YELLOW_UNK_2}, + {gBattleAnimSpriteGfx_AirSlash, 0x0180, ANIM_TAG_AIR_SLASH}, + {gBattleAnimSpriteGfx_SpinningGreenOrbs, 0x0800, ANIM_TAG_SPINNING_GREEN_ORBS}, + {gBattleAnimSpriteGfx_Leaf, 0x0480, ANIM_TAG_LEAF}, + {gBattleAnimSpriteGfx_Finger, 0x0200, ANIM_TAG_FINGER}, + {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_POISON_POWDER}, + {gBattleAnimSpriteGfx_BrownTriangle, 0x0100, ANIM_TAG_BROWN_TRIANGLE}, + {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_SLEEP_POWDER}, + {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_STUN_SPORE}, + {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_POWDER}, + {gBattleAnimSpriteGfx_Sparkle3, 0x0200, ANIM_TAG_SPARKLE_3}, + {gBattleAnimSpriteGfx_Sparkle4, 0x0A00, ANIM_TAG_SPARKLE_4}, + {gBattleAnimSpriteGfx_MusicNotes, 0x0300, ANIM_TAG_MUSIC_NOTES}, + {gBattleAnimSpriteGfx_Duck, 0x0180, ANIM_TAG_DUCK}, + {gBattleAnimSpriteGfx_MudSand, 0x00A0, ANIM_TAG_MUD_SAND}, + {gBattleAnimSpriteGfx_Alert, 0x0700, ANIM_TAG_ALERT}, + {gBattleAnimSpriteGfx_BlueFlames, 0x0400, ANIM_TAG_BLUE_FLAMES}, + {gBattleAnimSpriteGfx_BlueFlames2, 0x0200, ANIM_TAG_BLUE_FLAMES_2}, + {gBattleAnimSpriteGfx_Shock4, 0x0300, ANIM_TAG_SHOCK_4}, + {gBattleAnimSpriteGfx_Shock, 0x0C00, ANIM_TAG_SHOCK}, + {gBattleAnimSpriteGfx_Bell2, 0x0A00, ANIM_TAG_BELL_2}, + {gBattleAnimSpriteGfx_PinkGlove, 0x0080, ANIM_TAG_PINK_GLOVE}, + {gBattleAnimSpriteGfx_BlueLines, 0x0040, ANIM_TAG_BLUE_LINES}, + {gBattleAnimSpriteGfx_Impact3, 0x0E00, ANIM_TAG_IMPACT_3}, + {gBattleAnimSpriteGfx_Impact2, 0x0E00, ANIM_TAG_IMPACT_2}, + {gBattleAnimSpriteGfx_Reticle, 0x0280, ANIM_TAG_RETICLE}, + {gBattleAnimSpriteGfx_Breath, 0x0200, ANIM_TAG_BREATH}, + {gBattleAnimSpriteGfx_Anger, 0x0080, ANIM_TAG_ANGER}, + {gBattleAnimSpriteGfx_Snowball, 0x00C0, ANIM_TAG_SNOWBALL}, + {gBattleAnimSpriteGfx_Vine, 0x0A00, ANIM_TAG_VINE}, + {gBattleAnimSpriteGfx_Sword2, 0x0200, ANIM_TAG_SWORD_2}, + {gBattleAnimSpriteGfx_Clapping, 0x0180, ANIM_TAG_CLAPPING}, + {gBattleAnimSpriteGfx_RedTube, 0x0080, ANIM_TAG_RED_TUBE}, + {gBattleAnimSpriteGfx_Amnesia, 0x1000, ANIM_TAG_AMNESIA}, + {gBattleAnimSpriteGfx_String2, 0x0A00, ANIM_TAG_STRING_2}, + {gBattleAnimSpriteGfx_Pencil2, 0x0180, ANIM_TAG_PENCIL_2}, + {gBattleAnimSpriteGfx_Petal, 0x0380, ANIM_TAG_PETAL}, + {gBattleAnimSpriteGfx_BentSpoon, 0x0C00, ANIM_TAG_BENT_SPOON}, + {gBattleAnimSpriteGfx_Web, 0x0200, ANIM_TAG_WEB}, + {gBattleAnimSpriteGfx_MilkBottle, 0x0200, ANIM_TAG_MILK_BOTTLE}, + {gBattleAnimSpriteGfx_Coin, 0x0200, ANIM_TAG_COIN}, + {gBattleAnimSpriteGfx_CrackedEgg, 0x0200, ANIM_TAG_CRACKED_EGG}, + {gBattleAnimSpriteGfx_HatchedEgg, 0x0400, ANIM_TAG_HATCHED_EGG}, + {gBattleAnimSpriteGfx_FreshEgg, 0x0080, ANIM_TAG_FRESH_EGG}, + {gBattleAnimSpriteGfx_Fangs, 0x0400, ANIM_TAG_FANGS}, + {gBattleAnimSpriteGfx_Explosion2, 0x0c00, ANIM_TAG_EXPLOSION_2}, + {gBattleAnimSpriteGfx_Explosion3, 0x0200, ANIM_TAG_EXPLOSION_3}, + {gBattleAnimSpriteGfx_WaterDroplet, 0x1000, ANIM_TAG_WATER_DROPLET}, + {gBattleAnimSpriteGfx_WaterDroplet2, 0x0a00, ANIM_TAG_WATER_DROPLET_2}, + {gBattleAnimSpriteGfx_Seed2, 0x0020, ANIM_TAG_SEED_2}, + {gBattleAnimSpriteGfx_Sprout, 0x0e00, ANIM_TAG_SPROUT}, + {gBattleAnimSpriteGfx_RedWand, 0x0080, ANIM_TAG_RED_WAND}, + {gBattleAnimSpriteGfx_PurpleGreenUnk, 0x0a00, ANIM_TAG_PURPLE_GREEN_UNK}, + {gBattleAnimSpriteGfx_WaterColumn, 0x0400, ANIM_TAG_WATER_COLUMN}, + {gBattleAnimSpriteGfx_MudUnk, 0x0200, ANIM_TAG_MUD_UNK}, + {gBattleAnimSpriteGfx_RainDrops, 0x0700, ANIM_TAG_RAIN_DROPS}, + {gBattleAnimSpriteGfx_FurySwipes, 0x0800, ANIM_TAG_FURY_SWIPES}, + {gBattleAnimSpriteGfx_Vine2, 0x0a00, ANIM_TAG_VINE_2}, + {gBattleAnimSpriteGfx_Teeth, 0x0600, ANIM_TAG_TEETH}, + {gBattleAnimSpriteGfx_Bone2, 0x0800, ANIM_TAG_BONE_2}, + {gBattleAnimSpriteGfx_WhiteBag, 0x0200, ANIM_TAG_WHITE_BAG}, + {gBattleAnimSpriteGfx_Unknown, 0x0040, ANIM_TAG_UNKNOWN}, + {gBattleAnimSpriteGfx_PurpleCoral, 0x0180, ANIM_TAG_PURPLE_CORAL}, + {gBattleAnimSpriteGfx_PurpleDroplet, 0x0600, ANIM_TAG_PURPLE_DROPLET}, + {gBattleAnimSpriteGfx_Shock2, 0x0600, ANIM_TAG_SHOCK_2}, + {gBattleAnimSpriteGfx_ClosingEye2, 0x0200, ANIM_TAG_CLOSING_EYE_2}, + {gBattleAnimSpriteGfx_MetalBall, 0x0080, ANIM_TAG_METAL_BALL}, + {gBattleAnimSpriteGfx_MonsterDoll, 0x0200, ANIM_TAG_MONSTER_DOLL}, + {gBattleAnimSpriteGfx_Whirlwind, 0x0800, ANIM_TAG_WHIRLWIND}, + {gBattleAnimSpriteGfx_Whirlwind2, 0x0080, ANIM_TAG_WHIRLWIND_2}, + {gBattleAnimSpriteGfx_Explosion4, 0x0a00, ANIM_TAG_EXPLOSION_4}, + {gBattleAnimSpriteGfx_Explosion5, 0x0280, ANIM_TAG_EXPLOSION_5}, + {gBattleAnimSpriteGfx_Tongue, 0x0280, ANIM_TAG_TONGUE}, + {gBattleAnimSpriteGfx_Smoke, 0x0100, ANIM_TAG_SMOKE}, + {gBattleAnimSpriteGfx_Smoke2, 0x0200, ANIM_TAG_SMOKE_2}, + {gBattleAnimSpriteGfx_Impact, 0x0200, ANIM_TAG_IMPACT}, + {gBattleAnimSpriteGfx_CircleImpact, 0x0020, ANIM_TAG_CIRCLE_IMPACT}, + {gBattleAnimSpriteGfx_Scratch, 0x0a00, ANIM_TAG_SCRATCH}, + {gBattleAnimSpriteGfx_Cut, 0x0800, ANIM_TAG_CUT}, + {gBattleAnimSpriteGfx_SharpTeeth, 0x0800, ANIM_TAG_SHARP_TEETH}, + {gBattleAnimSpriteGfx_RainbowRings, 0x00c0, ANIM_TAG_RAINBOW_RINGS}, + {gBattleAnimSpriteGfx_IceCrystals, 0x01c0, ANIM_TAG_ICE_CRYSTALS}, + {gBattleAnimSpriteGfx_IceSpikes, 0x0100, ANIM_TAG_ICE_SPIKES}, + {gBattleAnimSpriteGfx_HandsAndFeet, 0x0800, ANIM_TAG_HANDS_AND_FEET}, + {gBattleAnimSpriteGfx_MistCloud, 0x0200, ANIM_TAG_MIST_CLOUD}, + {gBattleAnimSpriteGfx_Clamp, 0x0800, ANIM_TAG_CLAMP}, + {gBattleAnimSpriteGfx_Bubble, 0x0180, ANIM_TAG_BUBBLE}, + {gBattleAnimSpriteGfx_Orbs, 0x0180, ANIM_TAG_ORBS}, + {gBattleAnimSpriteGfx_WaterImpact, 0x0200, ANIM_TAG_WATER_IMPACT}, + {gBattleAnimSpriteGfx_WaterOrb, 0x0200, ANIM_TAG_WATER_ORB}, + {gBattleAnimSpriteGfx_PoisonBubble, 0x0180, ANIM_TAG_POISON_BUBBLE}, + {gBattleAnimSpriteGfx_ToxicBubble, 0x0400, ANIM_TAG_TOXIC_BUBBLE}, + {gBattleAnimSpriteGfx_Spikes, 0x0080, ANIM_TAG_SPIKES}, + {gBattleAnimSpriteGfx_HornHit2, 0x0100, ANIM_TAG_HORN_HIT_2}, + {gBattleAnimSpriteGfx_AirWave2, 0x0100, ANIM_TAG_AIR_WAVE_2}, + {gBattleAnimSpriteGfx_SmallBubbles, 0x0140, ANIM_TAG_SMALL_BUBBLES}, + {gBattleAnimSpriteGfx_RoundShadow, 0x0800, ANIM_TAG_ROUND_SHADOW}, + {gBattleAnimSpriteGfx_Sunlight, 0x0200, ANIM_TAG_SUNLIGHT}, + {gBattleAnimSpriteGfx_Spore, 0x0100, ANIM_TAG_SPORE}, + {gBattleAnimSpriteGfx_Flower, 0x00a0, ANIM_TAG_FLOWER}, + {gBattleAnimSpriteGfx_RazorLeaf, 0x0100, ANIM_TAG_RAZOR_LEAF}, + {gBattleAnimSpriteGfx_Needle, 0x0080, ANIM_TAG_NEEDLE}, + {gBattleAnimSpriteGfx_WhirlwindLines, 0x0300, ANIM_TAG_WHIRLWIND_LINES}, + {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_GOLD_RING}, + {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_PURPLE_RING}, + {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_BLUE_RING}, + {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_GREEN_LIGHT_WALL}, + {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_BLUE_LIGHT_WALL}, + {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_RED_LIGHT_WALL}, + {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_GRAY_LIGHT_WALL}, + {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_ORANGE_LIGHT_WALL}, + {gBattleAnimSpriteGfx_BlackBall2, 0x0080, ANIM_TAG_BLACK_BALL_2}, + {gBattleAnimSpriteGfx_MistCloud, 0x0200, ANIM_TAG_PURPLE_GAS_CLOUD}, + {gBattleAnimSpriteGfx_SparkH, 0x0200, ANIM_TAG_SPARK_H}, + {gBattleAnimSpriteGfx_YellowStar, 0x0200, ANIM_TAG_YELLOW_STAR}, + {gBattleAnimSpriteGfx_LargeFreshEgg, 0x0080, ANIM_TAG_LARGE_FRESH_EGG}, + {gBattleAnimSpriteGfx_ShadowBall, 0x0200, ANIM_TAG_SHADOW_BALL}, + {gBattleAnimSpriteGfx_Lick, 0x0500, ANIM_TAG_LICK}, + {gBattleAnimSpriteGfx_VoidLines, 0x0800, ANIM_TAG_VOID_LINES}, + {gBattleAnimSpriteGfx_String, 0x0400, ANIM_TAG_STRING}, + {gBattleAnimSpriteGfx_WebThread, 0x0020, ANIM_TAG_WEB_THREAD}, + {gBattleAnimSpriteGfx_SpiderWeb, 0x0800, ANIM_TAG_SPIDER_WEB}, + {gBattleAnimSpriteGfx_Lightbulb, 0x0100, ANIM_TAG_LIGHTBULB}, + {gBattleAnimSpriteGfx_Slash, 0x0800, ANIM_TAG_SLASH}, + {gBattleAnimSpriteGfx_FocusEnergy, 0x0400, ANIM_TAG_FOCUS_ENERGY}, + {gBattleAnimSpriteGfx_SphereToCube, 0x0a00, ANIM_TAG_SPHERE_TO_CUBE}, + {gBattleAnimSpriteGfx_Tendrils, 0x1000, ANIM_TAG_TENDRILS}, + {gBattleAnimSpriteGfx_Eye, 0x0800, ANIM_TAG_EYE}, + {gBattleAnimSpriteGfx_WhiteShadow, 0x0400, ANIM_TAG_WHITE_SHADOW}, + {gBattleAnimSpriteGfx_TealAlert, 0x0200, ANIM_TAG_TEAL_ALERT}, + {gBattleAnimSpriteGfx_OpeningEye, 0x0800, ANIM_TAG_OPENING_EYE}, + {gBattleAnimSpriteGfx_RoundWhiteHalo, 0x0800, ANIM_TAG_ROUND_WHITE_HALO}, + {gBattleAnimSpriteGfx_FangAttack, 0x0800, ANIM_TAG_FANG_ATTACK}, + {gBattleAnimSpriteGfx_PurpleHandOutline, 0x0200, ANIM_TAG_PURPLE_HAND_OUTLINE}, + {gBattleAnimSpriteGfx_Moon, 0x0800, ANIM_TAG_MOON}, + {gBattleAnimSpriteGfx_GreenSparkle, 0x0200, ANIM_TAG_GREEN_SPARKLE}, + {gBattleAnimSpriteGfx_Spiral, 0x0800, ANIM_TAG_SPIRAL}, + {gBattleAnimSpriteGfx_SnoreZ, 0x0200, ANIM_TAG_SNORE_Z}, + {gBattleAnimSpriteGfx_Explosion, 0x0800, ANIM_TAG_EXPLOSION}, + {gBattleAnimSpriteGfx_Nail, 0x0400, ANIM_TAG_NAIL}, + {gBattleAnimSpriteGfx_GhostlySpirit, 0x0200, ANIM_TAG_GHOSTLY_SPIRIT}, + {gBattleAnimSpriteGfx_WarmRock, 0x0a80, ANIM_TAG_WARM_ROCK}, + {gBattleAnimSpriteGfx_BreakingEgg, 0x0600, ANIM_TAG_BREAKING_EGG}, + {gBattleAnimSpriteGfx_ThinRing, 0x0800, ANIM_TAG_THIN_RING}, + {gBattleAnimSpriteGfx_PunchImpact, 0x0200, ANIM_TAG_PUNCH_IMPACT}, + {gBattleAnimSpriteGfx_Bell, 0x0600, ANIM_TAG_BELL}, + {gBattleAnimSpriteGfx_MusicNotes2, 0x0800, ANIM_TAG_MUSIC_NOTES_2}, + {gBattleAnimSpriteGfx_SpeedDust, 0x0180, ANIM_TAG_SPEED_DUST}, + {gBattleAnimSpriteGfx_TornMetal, 0x0800, ANIM_TAG_TORN_METAL}, + {gBattleAnimSpriteGfx_ThoughtBubble, 0x0800, ANIM_TAG_THOUGHT_BUBBLE}, + {gBattleAnimSpriteGfx_MagentaHeart, 0x0080, ANIM_TAG_MAGENTA_HEART}, + {gBattleAnimSpriteGfx_ElectricOrbs, 0x0080, ANIM_TAG_ELECTRIC_ORBS}, + {gBattleAnimSpriteGfx_CircleOfLight, 0x0800, ANIM_TAG_CIRCLE_OF_LIGHT}, + {gBattleAnimSpriteGfx_Electricity, 0x0800, ANIM_TAG_ELECTRICITY}, + {gBattleAnimSpriteGfx_Finger2, 0x0600, ANIM_TAG_FINGER_2}, + {gBattleAnimSpriteGfx_MovementWaves, 0x0600, ANIM_TAG_MOVEMENT_WAVES}, + {gBattleAnimSpriteGfx_MagentaHeart, 0x0080, ANIM_TAG_RED_HEART}, + {gBattleAnimSpriteGfx_RedOrb, 0x0080, ANIM_TAG_RED_ORB}, + {gBattleAnimSpriteGfx_EyeSparkle, 0x0180, ANIM_TAG_EYE_SPARKLE}, + {gBattleAnimSpriteGfx_MagentaHeart, 0x0080, ANIM_TAG_PINK_HEART}, + {gBattleAnimSpriteGfx_Angel, 0x0200, ANIM_TAG_ANGEL}, + {gBattleAnimSpriteGfx_Devil, 0x0400, ANIM_TAG_DEVIL}, + {gBattleAnimSpriteGfx_Swipe, 0x0a00, ANIM_TAG_SWIPE}, + {gBattleAnimSpriteGfx_Roots, 0x0800, ANIM_TAG_ROOTS}, + {gBattleAnimSpriteGfx_ItemBag, 0x0200, ANIM_TAG_ITEM_BAG}, + {gBattleAnimSpriteGfx_JaggedMusicNote, 0x0400, ANIM_TAG_JAGGED_MUSIC_NOTE}, + {gBattleAnimSpriteGfx_Pokeball, 0x0080, ANIM_TAG_POKEBALL}, + {gBattleAnimSpriteGfx_Spotlight, 0x0800, ANIM_TAG_SPOTLIGHT}, + {gBattleAnimSpriteGfx_LetterZ, 0x0200, ANIM_TAG_LETTER_Z}, + {gBattleAnimSpriteGfx_RapidSpin, 0x0300, ANIM_TAG_RAPID_SPIN}, + {gBattleAnimSpriteGfx_TriForceTriangle, 0x0800, ANIM_TAG_TRI_FORCE_TRIANGLE}, + {gBattleAnimSpriteGfx_WispOrb, 0x0380, ANIM_TAG_WISP_ORB}, + {gBattleAnimSpriteGfx_WispFire, 0x0800, ANIM_TAG_WISP_FIRE}, + {gBattleAnimSpriteGfx_GoldStars, 0x00c0, ANIM_TAG_GOLD_STARS}, + {gBattleAnimSpriteGfx_EclipsingOrb, 0x0800, ANIM_TAG_ECLIPSING_ORB}, + {gBattleAnimSpriteGfx_GrayOrb, 0x0060, ANIM_TAG_GRAY_ORB}, + {gBattleAnimSpriteGfx_GrayOrb, 0x0060, ANIM_TAG_BLUE_ORB}, + {gBattleAnimSpriteGfx_GrayOrb, 0x0060, ANIM_TAG_RED_ORB_2}, + {gBattleAnimSpriteGfx_PinkPetal, 0x0080, ANIM_TAG_PINK_PETAL}, + {gBattleAnimSpriteGfx_PainSplit, 0x0180, ANIM_TAG_PAIN_SPLIT}, + {gBattleAnimSpriteGfx_Confetti, 0x0180, ANIM_TAG_CONFETTI}, + {gBattleAnimSpriteGfx_GreenStar, 0x0200, ANIM_TAG_GREEN_STAR}, + {gBattleAnimSpriteGfx_PinkCloud, 0x0200, ANIM_TAG_PINK_CLOUD}, + {gBattleAnimSpriteGfx_SweatDrop, 0x0020, ANIM_TAG_SWEAT_DROP}, + {gBattleAnimSpriteGfx_GuardRing, 0x0400, ANIM_TAG_GUARD_RING}, + {gBattleAnimSpriteGfx_PurpleScratch, 0x0600, ANIM_TAG_PURPLE_SCRATCH}, + {gBattleAnimSpriteGfx_PurpleSwipe, 0x1000, ANIM_TAG_PURPLE_SWIPE}, + {gBattleAnimSpriteGfx_TagHand, 0x0400, ANIM_TAG_TAG_HAND}, + {gBattleAnimSpriteGfx_SmallRedEye, 0x0020, ANIM_TAG_SMALL_RED_EYE}, + {gBattleAnimSpriteGfx_HollowOrb, 0x0080, ANIM_TAG_HOLLOW_ORB}, + {gBattleAnimSpriteGfx_XSign, 0x0800, ANIM_TAG_X_SIGN}, + {gBattleAnimSpriteGfx_BluegreenOrb, 0x0080, ANIM_TAG_BLUEGREEN_ORB}, + {gBattleAnimSpriteGfx_PawPrint, 0x0200, ANIM_TAG_PAW_PRINT}, + {gBattleAnimSpriteGfx_PurpleFlame, 0x0400, ANIM_TAG_PURPLE_FLAME}, + {gBattleAnimSpriteGfx_RedBall, 0x0200, ANIM_TAG_RED_BALL}, + {gBattleAnimSpriteGfx_SmellingsaltEffect, 0x0200, ANIM_TAG_SMELLINGSALT_EFFECT}, + {gBattleAnimSpriteGfx_Meteor, 0x0800, ANIM_TAG_METEOR}, + {gBattleAnimSpriteGfx_FlatRock, 0x0280, ANIM_TAG_FLAT_ROCK}, + {gBattleAnimSpriteGfx_MagnifyingGlass, 0x0200, ANIM_TAG_MAGNIFYING_GLASS}, + {gBattleAnimSpriteGfx_WaterOrb, 0x0200, ANIM_TAG_BROWN_ORB}, + {gBattleAnimSpriteGfx_MetalSoundWaves, 0x0400, ANIM_TAG_METAL_SOUND_WAVES}, + {gBattleAnimSpriteGfx_FlyingDirt, 0x0200, ANIM_TAG_FLYING_DIRT}, + {gBattleAnimSpriteGfx_IcicleSpear, 0x0200, ANIM_TAG_ICICLE_SPEAR}, + {gBattleAnimSpriteGfx_Hail, 0x0080, ANIM_TAG_HAIL}, + {gBattleAnimSpriteGfx_GlowyRedOrb, 0x0020, ANIM_TAG_GLOWY_RED_ORB}, + {gBattleAnimSpriteGfx_GlowyRedOrb, 0x0020, ANIM_TAG_GLOWY_GREEN_ORB}, + {gBattleAnimSpriteGfx_GreenSpike, 0x0080, ANIM_TAG_GREEN_SPIKE}, + {gBattleAnimSpriteGfx_CircleOfLight, 0x0800, ANIM_TAG_WHITE_CIRCLE_OF_LIGHT}, + {gBattleAnimSpriteGfx_GlowyRedOrb, 0x0020, ANIM_TAG_GLOWY_BLUE_ORB}, + {gBattleAnimSpriteGfx_Pokeblock, 0x0080, ANIM_TAG_POKEBLOCK}, + {gBattleAnimSpriteGfx_WhiteFeather, 0x0400, ANIM_TAG_WHITE_FEATHER}, + {gBattleAnimSpriteGfx_Sparkle6, 0x0080, ANIM_TAG_SPARKLE_6}, + {gBattleAnimSpriteGfx_Splash, 0x0800, ANIM_TAG_SPLASH}, + {gBattleAnimSpriteGfx_SweatBead, 0x0020, ANIM_TAG_SWEAT_BEAD}, + {gBattleAnimSpriteGfx_Gem1, 0x0800, ANIM_TAG_GEM_1}, + {gBattleAnimSpriteGfx_Gem2, 0x0800, ANIM_TAG_GEM_2}, + {gBattleAnimSpriteGfx_Gem3, 0x0800, ANIM_TAG_GEM_3}, + {gBattleAnimSpriteGfx_SlamHit2, 0x1000, ANIM_TAG_SLAM_HIT_2}, + {gBattleAnimSpriteGfx_Recycle, 0x0800, ANIM_TAG_RECYCLE}, + {gBattleAnimSpriteGfx_RedParticles, 0x00a0, ANIM_TAG_RED_PARTICLES}, + {gBattleAnimSpriteGfx_Protect, 0x0800, ANIM_TAG_PROTECT}, + {gBattleAnimSpriteGfx_DirtMound, 0x0200, ANIM_TAG_DIRT_MOUND}, + {gBattleAnimSpriteGfx_Shock3, 0x0600, ANIM_TAG_SHOCK_3}, + {gBattleAnimSpriteGfx_WeatherBall, 0x0200, ANIM_TAG_WEATHER_BALL}, + {gBattleAnimSpriteGfx_Bird, 0x0800, ANIM_TAG_BIRD}, + {gBattleAnimSpriteGfx_CrossImpact, 0x0200, ANIM_TAG_CROSS_IMPACT}, + {gBattleAnimSpriteGfx_Slash, 0x0800, ANIM_TAG_SLASH_2}, + {gBattleAnimSpriteGfx_SlamHit, 0x1000, ANIM_TAG_WHIP_HIT}, + {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_BLUE_RING_2}, +}; + +const struct CompressedSpritePalette gBattleAnimPaletteTable[] = +{ + {gBattleAnimSpritePal_Bone, ANIM_TAG_BONE}, + {gBattleAnimSpritePal_Spark, ANIM_TAG_SPARK}, + {gBattleAnimSpritePal_Pencil, ANIM_TAG_PENCIL}, + {gBattleAnimSpritePal_AirWave, ANIM_TAG_AIR_WAVE}, + {gBattleAnimSpritePal_Orb, ANIM_TAG_ORB}, + {gBattleAnimSpritePal_Sword, ANIM_TAG_SWORD}, + {gBattleAnimSpritePal_Seed, ANIM_TAG_SEED}, + {gBattleAnimSpritePal_Explosion6, ANIM_TAG_EXPLOSION_6}, + {gBattleAnimSpritePal_PinkOrb, ANIM_TAG_PINK_ORB}, + {gBattleAnimSpritePal_Gust, ANIM_TAG_GUST}, + {gBattleAnimSpritePal_IceCube, ANIM_TAG_ICE_CUBE}, + {gBattleAnimSpritePal_Spark2, ANIM_TAG_SPARK_2}, + {gBattleAnimSpritePal_Orange, ANIM_TAG_ORANGE}, + {gBattleAnimSpritePal_YellowBall, ANIM_TAG_YELLOW_BALL}, + {gBattleAnimSpritePal_LockOn, ANIM_TAG_LOCK_ON}, + {gBattleAnimSpritePal_TiedBag, ANIM_TAG_TIED_BAG}, + {gBattleAnimSpritePal_BlackSmoke, ANIM_TAG_BLACK_SMOKE}, + {gBattleAnimSpritePal_BlackSmoke, ANIM_TAG_BLACK_BALL}, + {gBattleAnimSpritePal_Conversion, ANIM_TAG_CONVERSION}, + {gBattleAnimSpritePal_Glass, ANIM_TAG_GLASS}, + {gBattleAnimSpritePal_HornHit, ANIM_TAG_HORN_HIT}, + {gBattleAnimSpritePal_Hit, ANIM_TAG_HIT}, + {gBattleAnimSpritePal_Hit2, ANIM_TAG_HIT_2}, + {gBattleAnimSpritePal_BlueShards, ANIM_TAG_BLUE_SHARDS}, + {gBattleAnimSpritePal_ClosingEye, ANIM_TAG_CLOSING_EYE}, + {gBattleAnimSpritePal_WavingHand, ANIM_TAG_WAVING_HAND}, + {gBattleAnimSpritePal_HitDuplicate, ANIM_TAG_HIT_DUPLICATE}, + {gBattleAnimSpritePal_Leer, ANIM_TAG_LEER}, + {gBattleAnimSpritePal_BlueBurst, ANIM_TAG_BLUE_BURST}, + {gBattleAnimSpritePal_SmallEmber, ANIM_TAG_SMALL_EMBER}, + {gBattleAnimSpritePal_GraySmoke, ANIM_TAG_GRAY_SMOKE}, + {gBattleAnimSpritePal_BlueStar, ANIM_TAG_BLUE_STAR}, + {gBattleAnimSpritePal_BubbleBurst, ANIM_TAG_BUBBLE_BURST}, + {gBattleAnimSpritePal_Fire, ANIM_TAG_FIRE}, + {gBattleAnimSpritePal_Fire, ANIM_TAG_SPINNING_FIRE}, + {gBattleAnimSpritePal_Fire, ANIM_TAG_FIRE_PLUME}, + {gBattleAnimSpritePal_Lightning2, ANIM_TAG_LIGHTNING_2}, + {gBattleAnimSpritePal_Lightning2, ANIM_TAG_LIGHTNING}, + {gBattleAnimSpritePal_ClawSlash2, ANIM_TAG_CLAW_SLASH_2}, + {gBattleAnimSpritePal_ClawSlash, ANIM_TAG_CLAW_SLASH}, + {gBattleAnimSpritePal_ClawSlash2, ANIM_TAG_SCRATCH_3}, + {gBattleAnimSpritePal_ClawSlash2, ANIM_TAG_SCRATCH_2}, + {gBattleAnimSpritePal_BubbleBurst2, ANIM_TAG_BUBBLE_BURST_2}, + {gBattleAnimSpritePal_IceChunk, ANIM_TAG_ICE_CHUNK}, + {gBattleAnimSpritePal_Glass2, ANIM_TAG_GLASS_2}, + {gBattleAnimSpritePal_PinkHeart2, ANIM_TAG_PINK_HEART_2}, + {gBattleAnimSpritePal_SapDrip, ANIM_TAG_SAP_DRIP}, + {gBattleAnimSpritePal_SapDrip2, ANIM_TAG_SAP_DRIP}, + {gBattleAnimSpritePal_Sparkle1, ANIM_TAG_SPARKLE_1}, + {gBattleAnimSpritePal_Sparkle2, ANIM_TAG_SPARKLE_2}, + {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_HUMANOID_FOOT}, + {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_MONSTER_FOOT}, + {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_HUMANOID_HAND}, + {gBattleAnimSpritePal_HitDuplicate, ANIM_TAG_NOISE_LINE}, + {gBattleAnimSpritePal_YellowUnk, ANIM_TAG_YELLOW_UNK}, + {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_RED_FIST}, + {gBattleAnimSpritePal_SlamHit, ANIM_TAG_SLAM_HIT}, + {gBattleAnimSpritePal_Ring, ANIM_TAG_RING}, + {gBattleAnimSpritePal_Rocks, ANIM_TAG_ROCKS}, + {gBattleAnimSpritePal_Z, ANIM_TAG_Z}, + {gBattleAnimSpritePal_YellowUnk2, ANIM_TAG_YELLOW_UNK_2}, + {gBattleAnimSpritePal_AirSlash, ANIM_TAG_AIR_SLASH}, + {gBattleAnimSpritePal_SpinningGreenOrbs, ANIM_TAG_SPINNING_GREEN_ORBS}, + {gBattleAnimSpritePal_Leaf, ANIM_TAG_LEAF}, + {gBattleAnimSpritePal_Finger, ANIM_TAG_FINGER}, + {gBattleAnimSpritePal_PoisonPowder, ANIM_TAG_POISON_POWDER}, + {gBattleAnimSpritePal_BrownTriangle, ANIM_TAG_BROWN_TRIANGLE}, + {gBattleAnimSpritePal_SleepPowder, ANIM_TAG_SLEEP_POWDER}, + {gBattleAnimSpritePal_StunSpore, ANIM_TAG_STUN_SPORE}, + {gBattleAnimSpritePal_PoisonPowder, ANIM_TAG_POWDER}, + {gBattleAnimSpritePal_Sparkle3, ANIM_TAG_SPARKLE_3}, + {gBattleAnimSpritePal_Sparkle3, ANIM_TAG_SPARKLE_4}, + {gBattleAnimSpritePal_MusicNotes, ANIM_TAG_MUSIC_NOTES}, + {gBattleAnimSpritePal_Duck, ANIM_TAG_DUCK}, + {gBattleAnimSpritePal_MudSand, ANIM_TAG_MUD_SAND}, + {gBattleAnimSpritePal_Alert, ANIM_TAG_ALERT}, + {gBattleAnimSpritePal_BlueFlames, ANIM_TAG_BLUE_FLAMES}, + {gBattleAnimSpritePal_BlueFlames, ANIM_TAG_BLUE_FLAMES_2}, + {gBattleAnimSpritePal_Shock4, ANIM_TAG_SHOCK_4}, + {gBattleAnimSpritePal_Shock4, ANIM_TAG_SHOCK}, + {gBattleAnimSpritePal_Bell2, ANIM_TAG_BELL_2}, + {gBattleAnimSpritePal_PinkGlove, ANIM_TAG_PINK_GLOVE}, + {gBattleAnimSpritePal_BlueLines, ANIM_TAG_BLUE_LINES}, + {gBattleAnimSpritePal_Impact3, ANIM_TAG_IMPACT_3}, + {gBattleAnimSpritePal_Impact2, ANIM_TAG_IMPACT_2}, + {gBattleAnimSpritePal_Reticle, ANIM_TAG_RETICLE}, + {gBattleAnimSpritePal_Breath, ANIM_TAG_BREATH}, + {gBattleAnimSpritePal_Anger, ANIM_TAG_ANGER}, + {gBattleAnimSpritePal_Snowball, ANIM_TAG_SNOWBALL}, + {gBattleAnimSpritePal_Vine, ANIM_TAG_VINE}, + {gBattleAnimSpritePal_Sword2, ANIM_TAG_SWORD_2}, + {gBattleAnimSpritePal_Clapping, ANIM_TAG_CLAPPING}, + {gBattleAnimSpritePal_RedTube, ANIM_TAG_RED_TUBE}, + {gBattleAnimSpritePal_Amnesia, ANIM_TAG_AMNESIA}, + {gBattleAnimSpritePal_String2, ANIM_TAG_STRING_2}, + {gBattleAnimSpritePal_Pencil2, ANIM_TAG_PENCIL_2}, + {gBattleAnimSpritePal_Petal, ANIM_TAG_PETAL}, + {gBattleAnimSpritePal_BentSpoon, ANIM_TAG_BENT_SPOON}, + {gBattleAnimSpritePal_String2, ANIM_TAG_WEB}, + {gBattleAnimSpritePal_MilkBottle, ANIM_TAG_MILK_BOTTLE}, + {gBattleAnimSpritePal_Coin, ANIM_TAG_COIN}, + {gBattleAnimSpritePal_CrackedEgg, ANIM_TAG_CRACKED_EGG}, + {gBattleAnimSpritePal_CrackedEgg, ANIM_TAG_HATCHED_EGG}, + {gBattleAnimSpritePal_FreshEgg, ANIM_TAG_FRESH_EGG}, + {gBattleAnimSpritePal_Fangs, ANIM_TAG_FANGS}, + {gBattleAnimSpritePal_Explosion2, ANIM_TAG_EXPLOSION_2}, + {gBattleAnimSpritePal_Explosion2, ANIM_TAG_EXPLOSION_3}, + {gBattleAnimSpritePal_WaterDroplet, ANIM_TAG_WATER_DROPLET}, + {gBattleAnimSpritePal_WaterDroplet, ANIM_TAG_WATER_DROPLET_2}, + {gBattleAnimSpritePal_Seed2, ANIM_TAG_SEED_2}, + {gBattleAnimSpritePal_Seed2, ANIM_TAG_SPROUT}, + {gBattleAnimSpritePal_RedWand, ANIM_TAG_RED_WAND}, + {gBattleAnimSpritePal_PurpleGreenUnk, ANIM_TAG_PURPLE_GREEN_UNK}, + {gBattleAnimSpritePal_WaterColumn, ANIM_TAG_WATER_COLUMN}, + {gBattleAnimSpritePal_MudUnk, ANIM_TAG_MUD_UNK}, + {gBattleAnimSpritePal_RainDrops, ANIM_TAG_RAIN_DROPS}, + {gBattleAnimSpritePal_FurySwipes, ANIM_TAG_FURY_SWIPES}, + {gBattleAnimSpritePal_Vine2, ANIM_TAG_VINE_2}, + {gBattleAnimSpritePal_Teeth, ANIM_TAG_TEETH}, + {gBattleAnimSpritePal_Bone2, ANIM_TAG_BONE_2}, + {gBattleAnimSpritePal_WhiteBag, ANIM_TAG_WHITE_BAG}, + {gBattleAnimSpritePal_Unknown, ANIM_TAG_UNKNOWN}, + {gBattleAnimSpritePal_PurpleCoral, ANIM_TAG_PURPLE_CORAL}, + {gBattleAnimSpritePal_PurpleCoral, ANIM_TAG_PURPLE_DROPLET}, + {gBattleAnimSpritePal_Shock2, ANIM_TAG_SHOCK_2}, + {gBattleAnimSpritePal_ClosingEye2, ANIM_TAG_CLOSING_EYE_2}, + {gBattleAnimSpritePal_MetalBall, ANIM_TAG_METAL_BALL}, + {gBattleAnimSpritePal_MonsterDoll, ANIM_TAG_MONSTER_DOLL}, + {gBattleAnimSpritePal_Whirlwind, ANIM_TAG_WHIRLWIND}, + {gBattleAnimSpritePal_Whirlwind, ANIM_TAG_WHIRLWIND_2}, + {gBattleAnimSpritePal_Explosion4, ANIM_TAG_EXPLOSION_4}, + {gBattleAnimSpritePal_Explosion4, ANIM_TAG_EXPLOSION_5}, + {gBattleAnimSpritePal_Tongue, ANIM_TAG_TONGUE}, + {gBattleAnimSpritePal_Smoke, ANIM_TAG_SMOKE}, + {gBattleAnimSpritePal_Smoke, ANIM_TAG_SMOKE_2}, + {gBattleAnimSpritePal_Impact, ANIM_TAG_IMPACT}, + {gBattleAnimSpritePal_CircleImpact, ANIM_TAG_CIRCLE_IMPACT}, + {gBattleAnimSpritePal_Impact, ANIM_TAG_SCRATCH}, + {gBattleAnimSpritePal_Impact, ANIM_TAG_CUT}, + {gBattleAnimSpritePal_SharpTeeth, ANIM_TAG_SHARP_TEETH}, + {gBattleAnimSpritePal_RainbowRings, ANIM_TAG_RAINBOW_RINGS}, + {gBattleAnimSpritePal_IceCrystals, ANIM_TAG_ICE_CRYSTALS}, + {gBattleAnimSpritePal_IceCrystals, ANIM_TAG_ICE_SPIKES}, + {gBattleAnimSpritePal_HandsAndFeet, ANIM_TAG_HANDS_AND_FEET}, + {gBattleAnimSpritePal_MistCloud, ANIM_TAG_MIST_CLOUD}, + {gBattleAnimSpritePal_SharpTeeth, ANIM_TAG_CLAMP}, + {gBattleAnimSpritePal_RainDrops, ANIM_TAG_BUBBLE}, + {gBattleAnimSpritePal_Orbs, ANIM_TAG_ORBS}, + {gBattleAnimSpritePal_WaterImpact, ANIM_TAG_WATER_IMPACT}, + {gBattleAnimSpritePal_WaterImpact, ANIM_TAG_WATER_ORB}, + {gBattleAnimSpritePal_PoisonBubble, ANIM_TAG_POISON_BUBBLE}, + {gBattleAnimSpritePal_PoisonBubble, ANIM_TAG_TOXIC_BUBBLE}, + {gBattleAnimSpritePal_Spikes, ANIM_TAG_SPIKES}, + {gBattleAnimSpritePal_HornHit2, ANIM_TAG_HORN_HIT_2}, + {gBattleAnimSpritePal_AirWave2, ANIM_TAG_AIR_WAVE_2}, + {gBattleAnimSpritePal_SmallBubbles, ANIM_TAG_SMALL_BUBBLES}, + {gBattleAnimSpritePal_RoundShadow, ANIM_TAG_ROUND_SHADOW}, + {gBattleAnimSpritePal_Sunlight, ANIM_TAG_SUNLIGHT}, + {gBattleAnimSpritePal_Spore, ANIM_TAG_SPORE}, + {gBattleAnimSpritePal_Flower, ANIM_TAG_FLOWER}, + {gBattleAnimSpritePal_RazorLeaf, ANIM_TAG_RAZOR_LEAF}, + {gBattleAnimSpritePal_Needle, ANIM_TAG_NEEDLE}, + {gBattleAnimSpritePal_WhirlwindLines, ANIM_TAG_WHIRLWIND_LINES}, + {gBattleAnimSpritePal_GoldRing, ANIM_TAG_GOLD_RING}, + {gBattleAnimSpritePal_PurpleRing, ANIM_TAG_PURPLE_RING}, + {gBattleAnimSpritePal_BlueRing, ANIM_TAG_BLUE_RING}, + {gBattleAnimSpritePal_GreenLightWall, ANIM_TAG_GREEN_LIGHT_WALL}, + {gBattleAnimSpritePal_BlueLightWall, ANIM_TAG_BLUE_LIGHT_WALL}, + {gBattleAnimSpritePal_RedLightWall, ANIM_TAG_RED_LIGHT_WALL}, + {gBattleAnimSpritePal_GrayLightWall, ANIM_TAG_GRAY_LIGHT_WALL}, + {gBattleAnimSpritePal_OrangeLightWall, ANIM_TAG_ORANGE_LIGHT_WALL}, + {gBattleAnimSpritePal_BlackBall2, ANIM_TAG_BLACK_BALL_2}, + {gBattleAnimSpritePal_PurpleGasCloud, ANIM_TAG_PURPLE_GAS_CLOUD}, + {gBattleAnimSpritePal_Spark, ANIM_TAG_SPARK_H}, + {gBattleAnimSpritePal_YellowStar, ANIM_TAG_YELLOW_STAR}, + {gBattleAnimSpritePal_LargeFreshEgg, ANIM_TAG_LARGE_FRESH_EGG}, + {gBattleAnimSpritePal_ShadowBall, ANIM_TAG_SHADOW_BALL}, + {gBattleAnimSpritePal_Lick, ANIM_TAG_LICK}, + {gBattleAnimSpritePal_VoidLines, ANIM_TAG_VOID_LINES}, + {gBattleAnimSpritePal_String, ANIM_TAG_STRING}, + {gBattleAnimSpritePal_String, ANIM_TAG_WEB_THREAD}, + {gBattleAnimSpritePal_String, ANIM_TAG_SPIDER_WEB}, + {gBattleAnimSpritePal_Lightbulb, ANIM_TAG_LIGHTBULB}, + {gBattleAnimSpritePal_Slash, ANIM_TAG_SLASH}, + {gBattleAnimSpritePal_FocusEnergy, ANIM_TAG_FOCUS_ENERGY}, + {gBattleAnimSpritePal_SphereToCube, ANIM_TAG_SPHERE_TO_CUBE}, + {gBattleAnimSpritePal_Tendrils, ANIM_TAG_TENDRILS}, + {gBattleAnimSpritePal_Eye, ANIM_TAG_EYE}, + {gBattleAnimSpritePal_WhiteShadow, ANIM_TAG_WHITE_SHADOW}, + {gBattleAnimSpritePal_TealAlert, ANIM_TAG_TEAL_ALERT}, + {gBattleAnimSpritePal_OpeningEye, ANIM_TAG_OPENING_EYE}, + {gBattleAnimSpritePal_RoundWhiteHalo, ANIM_TAG_ROUND_WHITE_HALO}, + {gBattleAnimSpritePal_FangAttack, ANIM_TAG_FANG_ATTACK}, + {gBattleAnimSpritePal_PurpleHandOutline, ANIM_TAG_PURPLE_HAND_OUTLINE}, + {gBattleAnimSpritePal_Moon, ANIM_TAG_MOON}, + {gBattleAnimSpritePal_GreenSparkle, ANIM_TAG_GREEN_SPARKLE}, + {gBattleAnimSpritePal_Spiral, ANIM_TAG_SPIRAL}, + {gBattleAnimSpritePal_SnoreZ, ANIM_TAG_SNORE_Z}, + {gBattleAnimSpritePal_Explosion, ANIM_TAG_EXPLOSION}, + {gBattleAnimSpritePal_Nail, ANIM_TAG_NAIL}, + {gBattleAnimSpritePal_GhostlySpirit, ANIM_TAG_GHOSTLY_SPIRIT}, + {gBattleAnimSpritePal_WarmRock, ANIM_TAG_WARM_ROCK}, + {gBattleAnimSpritePal_BreakingEgg, ANIM_TAG_BREAKING_EGG}, + {gBattleAnimSpritePal_ThinRing, ANIM_TAG_THIN_RING}, + {gBattleAnimSpritePal_PunchImpact, ANIM_TAG_PUNCH_IMPACT}, + {gBattleAnimSpritePal_Bell, ANIM_TAG_BELL}, + {gBattleAnimSpritePal_MusicNotes2, ANIM_TAG_MUSIC_NOTES_2}, + {gBattleAnimSpritePal_SpeedDust, ANIM_TAG_SPEED_DUST}, + {gBattleAnimSpritePal_BlueLightWall, ANIM_TAG_TORN_METAL}, + {gBattleAnimSpritePal_ThoughtBubble, ANIM_TAG_THOUGHT_BUBBLE}, + {gBattleAnimSpritePal_MagentaHeart, ANIM_TAG_MAGENTA_HEART}, + {gBattleAnimSpritePal_ElectricOrbs, ANIM_TAG_ELECTRIC_ORBS}, + {gBattleAnimSpritePal_ElectricOrbs, ANIM_TAG_CIRCLE_OF_LIGHT}, + {gBattleAnimSpritePal_ElectricOrbs, ANIM_TAG_ELECTRICITY}, + {gBattleAnimSpritePal_Finger, ANIM_TAG_FINGER_2}, + {gBattleAnimSpritePal_MovementWaves, ANIM_TAG_MOVEMENT_WAVES}, + {gBattleAnimSpritePal_RedHeart, ANIM_TAG_RED_HEART}, + {gBattleAnimSpritePal_RedOrb, ANIM_TAG_RED_ORB}, + {gBattleAnimSpritePal_EyeSparkle, ANIM_TAG_EYE_SPARKLE}, + {gBattleAnimSpritePal_PinkHeart, ANIM_TAG_PINK_HEART}, + {gBattleAnimSpritePal_Angel, ANIM_TAG_ANGEL}, + {gBattleAnimSpritePal_Devil, ANIM_TAG_DEVIL}, + {gBattleAnimSpritePal_Swipe, ANIM_TAG_SWIPE}, + {gBattleAnimSpritePal_Roots, ANIM_TAG_ROOTS}, + {gBattleAnimSpritePal_ItemBag, ANIM_TAG_ITEM_BAG}, + {gBattleAnimSpritePal_JaggedMusicNote, ANIM_TAG_JAGGED_MUSIC_NOTE}, + {gBattleAnimSpritePal_Pokeball, ANIM_TAG_POKEBALL}, + {gBattleAnimSpritePal_Pokeball, ANIM_TAG_SPOTLIGHT}, + {gBattleAnimSpritePal_LetterZ, ANIM_TAG_LETTER_Z}, + {gBattleAnimSpritePal_RapidSpin, ANIM_TAG_RAPID_SPIN}, + {gBattleAnimSpritePal_TriForceTriangle, ANIM_TAG_TRI_FORCE_TRIANGLE}, + {gBattleAnimSpritePal_WispOrb, ANIM_TAG_WISP_ORB}, + {gBattleAnimSpritePal_WispOrb, ANIM_TAG_WISP_FIRE}, + {gBattleAnimSpritePal_GoldStars, ANIM_TAG_GOLD_STARS}, + {gBattleAnimSpritePal_EclipsingOrb, ANIM_TAG_ECLIPSING_ORB}, + {gBattleAnimSpritePal_GrayOrb, ANIM_TAG_GRAY_ORB}, + {gBattleAnimSpritePal_BlueOrb, ANIM_TAG_BLUE_ORB}, + {gBattleAnimSpritePal_RedOrb2, ANIM_TAG_RED_ORB_2}, + {gBattleAnimSpritePal_PinkPetal, ANIM_TAG_PINK_PETAL}, + {gBattleAnimSpritePal_PainSplit, ANIM_TAG_PAIN_SPLIT}, + {gBattleAnimSpritePal_Confetti, ANIM_TAG_CONFETTI}, + {gBattleAnimSpritePal_GreenStar, ANIM_TAG_GREEN_STAR}, + {gBattleAnimSpritePal_PinkCloud, ANIM_TAG_PINK_CLOUD}, + {gBattleAnimSpritePal_SweatDrop, ANIM_TAG_SWEAT_DROP}, + {gBattleAnimSpritePal_GuardRing, ANIM_TAG_GUARD_RING}, + {gBattleAnimSpritePal_PurpleScratch, ANIM_TAG_PURPLE_SCRATCH}, + {gBattleAnimSpritePal_PurpleScratch, ANIM_TAG_PURPLE_SWIPE}, + {gBattleAnimSpritePal_Finger, ANIM_TAG_TAG_HAND}, + {gBattleAnimSpritePal_SmallRedEye, ANIM_TAG_SMALL_RED_EYE}, + {gBattleAnimSpritePal_HollowOrb, ANIM_TAG_HOLLOW_ORB}, + {gBattleAnimSpritePal_HollowOrb, ANIM_TAG_X_SIGN}, + {gBattleAnimSpritePal_BluegreenOrb, ANIM_TAG_BLUEGREEN_ORB}, + {gBattleAnimSpritePal_PawPrint, ANIM_TAG_PAW_PRINT}, + {gBattleAnimSpritePal_PurpleFlame, ANIM_TAG_PURPLE_FLAME}, + {gBattleAnimSpritePal_RedBall, ANIM_TAG_RED_BALL}, + {gBattleAnimSpritePal_SmellingsaltEffect, ANIM_TAG_SMELLINGSALT_EFFECT}, + {gBattleAnimSpritePal_Meteor, ANIM_TAG_METEOR}, + {gBattleAnimSpritePal_FlatRock, ANIM_TAG_FLAT_ROCK}, + {gBattleAnimSpritePal_MagnifyingGlass, ANIM_TAG_MAGNIFYING_GLASS}, + {gBattleAnimSpritePal_BrownOrb, ANIM_TAG_BROWN_ORB}, + {gBattleAnimSpritePal_MetalSoundWaves, ANIM_TAG_METAL_SOUND_WAVES}, + {gBattleAnimSpritePal_FlyingDirt, ANIM_TAG_FLYING_DIRT}, + {gBattleAnimSpritePal_IcicleSpear, ANIM_TAG_ICICLE_SPEAR}, + {gBattleAnimSpritePal_Hail, ANIM_TAG_HAIL}, + {gBattleAnimSpritePal_GlowyRedOrb, ANIM_TAG_GLOWY_RED_ORB}, + {gBattleAnimSpritePal_GlowyGreenOrb, ANIM_TAG_GLOWY_GREEN_ORB}, + {gBattleAnimSpritePal_GreenSpike, ANIM_TAG_GREEN_SPIKE}, + {gBattleAnimSpritePal_WhiteCircleOfLight, ANIM_TAG_WHITE_CIRCLE_OF_LIGHT}, + {gBattleAnimSpritePal_GlowyBlueOrb, ANIM_TAG_GLOWY_BLUE_ORB}, + {gBattleAnimSpritePal_Pokeblock, ANIM_TAG_POKEBLOCK}, + {gBattleAnimSpritePal_WhiteFeather, ANIM_TAG_WHITE_FEATHER}, + {gBattleAnimSpritePal_Sparkle6, ANIM_TAG_SPARKLE_6}, + {gBattleAnimSpritePal_Splash, ANIM_TAG_SPLASH}, + {gBattleAnimSpritePal_Splash, ANIM_TAG_SWEAT_BEAD}, + {gBattleAnimSpritePal_Gem1, ANIM_TAG_GEM_1}, + {gBattleAnimSpritePal_Gem1, ANIM_TAG_GEM_2}, + {gBattleAnimSpritePal_Gem1, ANIM_TAG_GEM_3}, + {gBattleAnimSpritePal_SlamHit2, ANIM_TAG_SLAM_HIT_2}, + {gBattleAnimSpritePal_Recycle, ANIM_TAG_RECYCLE}, + {gBattleAnimSpritePal_RedParticles, ANIM_TAG_RED_PARTICLES}, + {gBattleAnimSpritePal_Protect, ANIM_TAG_PROTECT}, + {gBattleAnimSpritePal_DirtMound, ANIM_TAG_DIRT_MOUND}, + {gBattleAnimSpritePal_Shock3, ANIM_TAG_SHOCK_3}, + {gBattleAnimSpritePal_WeatherBall, ANIM_TAG_WEATHER_BALL}, + {gBattleAnimSpritePal_Bird, ANIM_TAG_BIRD}, + {gBattleAnimSpritePal_CrossImpact, ANIM_TAG_CROSS_IMPACT}, + {gBattleAnimSpritePal_Slash2, ANIM_TAG_SLASH_2}, + {gBattleAnimSpritePal_WhipHit, ANIM_TAG_WHIP_HIT}, + {gBattleAnimSpritePal_BlueRing2, ANIM_TAG_BLUE_RING_2}, +}; + +const struct BattleAnimBackground gBattleAnimBackgroundTable[] = +{ + [BG_DARK_] = {gBattleAnimBgImage_Dark, gBattleAnimBgPalette_Dark, gBattleAnimBgTilemap_Dark}, + [BG_DARK] = {gBattleAnimBgImage_Dark, gBattleAnimBgPalette_Dark, gBattleAnimBgTilemap_Dark}, + [BG_GHOST] = {gBattleAnimBgImage_Ghost, gBattleAnimBgPalette_Ghost, gBattleAnimBgTilemap_Ghost}, + [BG_PSYCHIC] = {gBattleAnimBgImage_Psychic, gBattleAnimBgPalette_Psychic, gBattleAnimBgTilemap_Psychic}, + [BG_IMPACT_OPPONENT] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Impact, gBattleAnimBgTilemap_ImpactOpponent}, + [BG_IMPACT_PLAYER] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Impact, gBattleAnimBgTilemap_ImpactPlayer}, + [BG_IMPACT_CONTESTS] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Impact, gBattleAnimBgTilemap_ImpactContests}, + [BG_DRILL] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Drill, gBattleAnimBgTilemap_Drill}, + [BG_DRILL_CONTESTS] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Drill, gBattleAnimBgTilemap_DrillContests}, + [BG_HIGHSPEED_OPPONENT] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Highspeed, gBattleAnimBgTilemap_HighspeedOpponent}, + [BG_HIGHSPEED_PLAYER] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Highspeed, gBattleAnimBgTilemap_HighspeedPlayer}, + [BG_THUNDER] = {gBattleAnimBgImage_Thunder, gBattleAnimBgPalette_Thunder, gBattleAnimBgTilemap_Thunder}, + [BG_GUILLOTINE_OPPONENT] = {gBattleAnimBgImage_Guillotine, gBattleAnimBgPalette_Guillotine, gBattleAnimBgTilemap_GuillotineOpponent}, + [BG_GUILLOTINE_PLAYER] = {gBattleAnimBgImage_Guillotine, gBattleAnimBgPalette_Guillotine, gBattleAnimBgTilemap_GuillotinePlayer}, + [BG_GUILLOTINE_CONTESTS] = {gBattleAnimBgImage_Guillotine, gBattleAnimBgPalette_Guillotine, gBattleAnimBgTilemap_GuillotineContests}, + [BG_ICE] = {gBattleAnimBgImage_Ice, gBattleAnimBgPalette_Ice, gBattleAnimBgTilemap_Ice}, + [BG_COSMIC] = {gBattleAnimBgImage_Cosmic, gBattleAnimBgPalette_Cosmic, gBattleAnimBgTilemap_Cosmic}, + [BG_IN_AIR] = {gBattleAnimBgImage_InAir, gBattleAnimBgPalette_InAir, gBattleAnimBgTilemap_InAir}, + [BG_SKY] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Sky, gBattleAnimBgTilemap_Drill}, + [BG_SKY_CONTESTS] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Sky, gBattleAnimBgTilemap_DrillContests}, + [BG_AURORA] = {gBattleAnimBgImage_Aurora, gBattleAnimBgPalette_Aurora, gBattleAnimBgTilemap_Aurora}, + [BG_FISSURE] = {gBattleAnimBgImage_Fissure, gBattleAnimBgPalette_Fissure, gBattleAnimBgTilemap_Fissure}, + [BG_BUG_OPPONENT] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Bug, gBattleAnimBgTilemap_HighspeedOpponent}, + [BG_BUG_PLAYER] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Bug, gBattleAnimBgTilemap_HighspeedPlayer}, + [BG_SOLARBEAM_OPPONENT] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Solarbeam, gBattleAnimBgTilemap_ImpactOpponent}, + [BG_SOLARBEAM_PLAYER] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Solarbeam, gBattleAnimBgTilemap_ImpactPlayer}, + [BG_SOLARBEAM_CONTESTS] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Solarbeam, gBattleAnimBgTilemap_ImpactContests}, +}; + +static void (*const sScriptCmdTable[])(void) = +{ + ScriptCmd_loadspritegfx, + ScriptCmd_unloadspritegfx, + ScriptCmd_createsprite, + ScriptCmd_createvisualtask, + ScriptCmd_delay, + ScriptCmd_waitforvisualfinish, + ScriptCmd_hang1, + ScriptCmd_hang2, + ScriptCmd_end, + ScriptCmd_playse, + ScriptCmd_monbg, + ScriptCmd_clearmonbg, + ScriptCmd_setalpha, + ScriptCmd_blendoff, + ScriptCmd_call, + ScriptCmd_return, + ScriptCmd_setarg, + ScriptCmd_choosetwoturnanim, + ScriptCmd_jumpifmoveturn, + ScriptCmd_goto, + ScriptCmd_fadetobg, + ScriptCmd_restorebg, + ScriptCmd_waitbgfadeout, + ScriptCmd_waitbgfadein, + ScriptCmd_changebg, + ScriptCmd_playsewithpan, + ScriptCmd_setpan, + ScriptCmd_panse_1B, + ScriptCmd_loopsewithpan, + ScriptCmd_waitplaysewithpan, + ScriptCmd_setbldcnt, + ScriptCmd_createsoundtask, + ScriptCmd_waitsound, + ScriptCmd_jumpargeq, + ScriptCmd_monbg_22, + ScriptCmd_clearmonbg_23, + ScriptCmd_jumpifcontest, + ScriptCmd_fadetobgfromset, + ScriptCmd_panse_26, + ScriptCmd_panse_27, + ScriptCmd_monbgprio_28, + ScriptCmd_monbgprio_29, + ScriptCmd_monbgprio_2A, + ScriptCmd_invisible, + ScriptCmd_visible, + ScriptCmd_doublebattle_2D, + ScriptCmd_doublebattle_2E, + ScriptCmd_stopsound +}; + +// Functions +void ClearBattleAnimationVars(void) +{ + s32 i; + + sAnimFramesToWait = 0; + gAnimScriptActive = FALSE; + gAnimVisualTaskCount = 0; + gAnimSoundTaskCount = 0; + gAnimDisableStructPtr = NULL; + gAnimMoveDmg = 0; + gAnimMovePower = 0; + gAnimFriendship = 0; + + // Clear index array. + for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++) + sAnimSpriteIndexArray[i] |= 0xFFFF; + + // Clear anim args. + for (i = 0; i < ANIM_ARGS_COUNT; i++) + gBattleAnimArgs[i] = 0; + + sMonAnimTaskIdArray[0] = 0xFF; + sMonAnimTaskIdArray[1] = (s8)0xFF; + gAnimMoveTurn = 0; + sAnimBackgroundFadeState = 0; + sAnimMoveIndex = 0; + gBattleAnimAttacker = 0; + gBattleAnimTarget = 0; + gUnknown_2037F24 = 0; +} + +void DoMoveAnim(u16 move) +{ + gBattleAnimAttacker = gBattlerAttacker; + gBattleAnimTarget = gBattlerTarget; + LaunchBattleAnimation(gBattleAnims_Moves, move, TRUE); +} + +void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMoveAnim) +{ + s32 i; + + sub_80767F0(); + UpdateOamPriorityInAllHealthboxes(0); + for (i = 0; i < MAX_BATTLERS_COUNT; i++) + { + if (GetBattlerSide(i) != B_SIDE_PLAYER) + gAnimBattlerSpecies[i] = GetMonData(&gEnemyParty[gBattlerPartyIndexes[i]], MON_DATA_SPECIES); + else + gAnimBattlerSpecies[i] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_SPECIES); + } + + if (!isMoveAnim) + sAnimMoveIndex = 0; + else + sAnimMoveIndex = tableId; + + for (i = 0; i < ANIM_ARGS_COUNT; i++) + gBattleAnimArgs[i] = 0; + + sMonAnimTaskIdArray[0] = 0xFF; + sMonAnimTaskIdArray[1] = (s8)-1; + sBattleAnimScriptPtr = animsTable[tableId]; + gAnimScriptActive = TRUE; + sAnimFramesToWait = 0; + gAnimScriptCallback = RunAnimScriptCommand; + + for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++) + sAnimSpriteIndexArray[i] = 0xFFFF; + + if (isMoveAnim) + { + for (i = 0; gMovesWithQuietBGM[i] != 0xFFFF; i++) + { + if (tableId == gMovesWithQuietBGM[i]) + { + m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 128); + break; + } + } + } + + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + gBattle_WIN1H = 0; + gBattle_WIN1V = 0; +} + +void DestroyAnimSprite(struct Sprite *sprite) +{ + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + gAnimVisualTaskCount--; +} + +void DestroyAnimVisualTask(u8 taskId) +{ + DestroyTask(taskId); + gAnimVisualTaskCount--; +} + +void DestroyAnimSoundTask(u8 taskId) +{ + DestroyTask(taskId); + gAnimSoundTaskCount--; +} + +static void AddSpriteIndex(u16 index) +{ + s32 i; + + for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++) + { + if (sAnimSpriteIndexArray[i] == 0xFFFF) + { + sAnimSpriteIndexArray[i] = index; + return; + } + } +} + +static void ClearSpriteIndex(u16 index) +{ + s32 i; + + for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++) + { + if (sAnimSpriteIndexArray[i] == index) + { + sAnimSpriteIndexArray[i] = 0xFFFF; + return; + } + } +} + +static void WaitAnimFrameCount(void) +{ + if (sAnimFramesToWait <= 0) + { + gAnimScriptCallback = RunAnimScriptCommand; + sAnimFramesToWait = 0; + } + else + { + sAnimFramesToWait--; + } +} + +static void RunAnimScriptCommand(void) +{ + do + { + sScriptCmdTable[sBattleAnimScriptPtr[0]](); + } while (sAnimFramesToWait == 0 && gAnimScriptActive); +} + +static void ScriptCmd_loadspritegfx(void) +{ + u16 index; + + sBattleAnimScriptPtr++; + index = T1_READ_16(sBattleAnimScriptPtr); + LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)]); + LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(index)]); + sBattleAnimScriptPtr += 2; + AddSpriteIndex(GET_TRUE_SPRITE_INDEX(index)); + sAnimFramesToWait = 1; + gAnimScriptCallback = WaitAnimFrameCount; +} + +static void ScriptCmd_unloadspritegfx(void) +{ + u16 index; + + sBattleAnimScriptPtr++; + index = T1_READ_16(sBattleAnimScriptPtr); + FreeSpriteTilesByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)].tag); + FreeSpritePaletteByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)].tag); + sBattleAnimScriptPtr += 2; + ClearSpriteIndex(GET_TRUE_SPRITE_INDEX(index)); +} + +static void ScriptCmd_createsprite(void) +{ + s32 i; + const struct SpriteTemplate *template; + u8 argVar; + u8 argsCount; + s16 subpriority; + + sBattleAnimScriptPtr++; + template = (const struct SpriteTemplate *)(T2_READ_32(sBattleAnimScriptPtr)); + sBattleAnimScriptPtr += 4; + + argVar = sBattleAnimScriptPtr[0]; + sBattleAnimScriptPtr++; + + argsCount = sBattleAnimScriptPtr[0]; + sBattleAnimScriptPtr++; + for (i = 0; i < argsCount; i++) + { + gBattleAnimArgs[i] = T1_READ_16(sBattleAnimScriptPtr); + sBattleAnimScriptPtr += 2; + } + + if (argVar & 0x80) + { + argVar ^= 0x80; + if (argVar >= 0x40) + argVar -= 0x40; + else + argVar *= -1; + + subpriority = GetBattlerSpriteSubpriority(gBattleAnimTarget) + (s8)(argVar); + } + else + { + if (argVar >= 0x40) + argVar -= 0x40; + else + argVar *= -1; + + subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) + (s8)(argVar); + } + + if (subpriority < 3) + subpriority = 3; + + CreateSpriteAndAnimate( + template, + GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2), + GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET), + subpriority); + gAnimVisualTaskCount++; +} + +static void ScriptCmd_createvisualtask(void) +{ + TaskFunc taskFunc; + u8 taskPriority; + u8 taskId; + u8 numArgs; + s32 i; + + sBattleAnimScriptPtr++; + + taskFunc = (TaskFunc)T2_READ_32(sBattleAnimScriptPtr); + sBattleAnimScriptPtr += 4; + + taskPriority = sBattleAnimScriptPtr[0]; + sBattleAnimScriptPtr++; + + numArgs = sBattleAnimScriptPtr[0]; + sBattleAnimScriptPtr++; + + for (i = 0; i < numArgs; i++) + { + gBattleAnimArgs[i] = T1_READ_16(sBattleAnimScriptPtr); + sBattleAnimScriptPtr += 2; + } + + taskId = CreateTask(taskFunc, taskPriority); + taskFunc(taskId); + gAnimVisualTaskCount++; +} + +static void ScriptCmd_delay(void) +{ + sBattleAnimScriptPtr++; + sAnimFramesToWait = sBattleAnimScriptPtr[0]; + if (sAnimFramesToWait == 0) + sAnimFramesToWait = -1; + sBattleAnimScriptPtr++; + gAnimScriptCallback = WaitAnimFrameCount; +} + +static void ScriptCmd_waitforvisualfinish(void) +{ + if (gAnimVisualTaskCount == 0) + { + sBattleAnimScriptPtr++; + sAnimFramesToWait = 0; + } + else + { + sAnimFramesToWait = 1; + } +} + +static void ScriptCmd_hang1(void) +{ +} + +static void ScriptCmd_hang2(void) +{ +} + +static void ScriptCmd_end(void) +{ + s32 i; + bool32 continuousAnim = FALSE; + + // Keep waiting as long as there are animations to be done. + if (gAnimVisualTaskCount != 0 || gAnimSoundTaskCount != 0 + || sMonAnimTaskIdArray[0] != 0xFF || sMonAnimTaskIdArray[1] != 0xFF) + { + sSoundAnimFramesToWait = 0; + sAnimFramesToWait = 1; + return; + } + + // Finish the sound effects. + if (IsSEPlaying()) + { + if (++sSoundAnimFramesToWait <= 90) // Wait 90 frames, then halt the sound effect. + { + sAnimFramesToWait = 1; + return; + } + else + { + m4aMPlayStop(&gMPlayInfo_SE1); + m4aMPlayStop(&gMPlayInfo_SE2); + } + } + + // The SE has halted, so set the SE Frame Counter to 0 and continue. + sSoundAnimFramesToWait = 0; + + for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++) + { + if (sAnimSpriteIndexArray[i] != 0xFFFF) + { + FreeSpriteTilesByTag(gBattleAnimPicTable[sAnimSpriteIndexArray[i]].tag); + FreeSpritePaletteByTag(gBattleAnimPicTable[sAnimSpriteIndexArray[i]].tag); + sAnimSpriteIndexArray[i] = 0xFFFF; // set terminator. + } + } + + if (!continuousAnim) + { + m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 256); + sub_80767F0(); + UpdateOamPriorityInAllHealthboxes(1); + gAnimScriptActive = FALSE; + } +} + +static void ScriptCmd_playse(void) +{ + sBattleAnimScriptPtr++; + PlaySE(T1_READ_16(sBattleAnimScriptPtr)); + sBattleAnimScriptPtr += 2; +} + +#define t1_MONBG_BATTLER 0 +#define t1_MON_IN_BG2 1 +#define t1_CREATE_ANOTHER_TASK 2 +#define t1_IS_SECONDMON_BG 3 + +#define t2_BATTLER_SPRITE_ID 0 +#define t2_MON_IN_BG2 5 +#define t2_MONBG_BATTLER 6 + +static void ScriptCmd_monbg(void) +{ + bool8 toBG_2; + u8 taskId; + u8 battlerId; + u8 animBattler; + u8 position; + u8 spriteId; + + sBattleAnimScriptPtr++; + animBattler = sBattleAnimScriptPtr[0]; + if (animBattler == ANIM_ATTACKER) + animBattler = ANIM_ATK_PARTNER; + else if (animBattler == ANIM_TARGET) + animBattler = ANIM_DEF_PARTNER; + + if (animBattler == ANIM_ATTACKER || animBattler == ANIM_ATK_PARTNER) + battlerId = gBattleAnimAttacker; + else + battlerId = gBattleAnimTarget; + + if (IsBattlerSpriteVisible(battlerId)) + { + position = GetBattlerPosition(battlerId); + if (position == B_POSITION_OPPONENT_LEFT || position == B_POSITION_PLAYER_RIGHT) + toBG_2 = FALSE; + else + toBG_2 = TRUE; + + MoveBattlerSpriteToBG(battlerId, toBG_2); + spriteId = gBattlerSpriteIds[battlerId]; + taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10); + gTasks[taskId].data[t1_MONBG_BATTLER] = spriteId; + gTasks[taskId].data[1] = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x; + gTasks[taskId].data[2] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y; + if (!toBG_2) + { + gTasks[taskId].data[3] = gBattle_BG1_X; + gTasks[taskId].data[4] = gBattle_BG1_Y; + } + else + { + gTasks[taskId].data[3] = gBattle_BG2_X; + gTasks[taskId].data[4] = gBattle_BG2_Y; + } + + gTasks[taskId].data[5] = toBG_2; + gTasks[taskId].data[6] = battlerId; + sMonAnimTaskIdArray[0] = taskId; + } + + battlerId ^= BIT_FLANK; + if (animBattler > ANIM_TARGET && IsBattlerSpriteVisible(battlerId)) + { + position = GetBattlerPosition(battlerId); + if (position == B_POSITION_OPPONENT_LEFT || position == B_POSITION_PLAYER_RIGHT) + toBG_2 = FALSE; + else + toBG_2 = TRUE; + + MoveBattlerSpriteToBG(battlerId, toBG_2); + spriteId = gBattlerSpriteIds[battlerId]; + taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10); + gTasks[taskId].data[t1_MONBG_BATTLER] = spriteId; + gTasks[taskId].data[1] = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x; + gTasks[taskId].data[2] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y; + if (!toBG_2) + { + gTasks[taskId].data[3] = gBattle_BG1_X; + gTasks[taskId].data[4] = gBattle_BG1_Y; + } + else + { + gTasks[taskId].data[3] = gBattle_BG2_X; + gTasks[taskId].data[4] = gBattle_BG2_Y; + } + + gTasks[taskId].data[5] = toBG_2; + gTasks[taskId].data[6] = battlerId; + sMonAnimTaskIdArray[1] = taskId; + } + + sBattleAnimScriptPtr++; +} + +bool8 IsBattlerSpriteVisible(u8 battlerId) +{ + u8 battler = battlerId; + + if (!IsBattlerSpritePresent(battler)) + return FALSE; + + if (!gBattleSpritesDataPtr->battlerData[battler].invisible || !gSprites[gBattlerSpriteIds[battler]].invisible) + return TRUE; + + return FALSE; +} + +void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2) +{ + struct BattleAnimBgData animBg; + u8 battlerSpriteId; + struct Sprite *sprite; + + if (!toBG_2) + { + + RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(8)), 0x2000, 1); + RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(28)), 0x1000, 1); + sub_80752A0(&animBg); + CpuFill16(toBG_2, animBg.bgTiles, 0x1000); + CpuFill16(toBG_2, animBg.bgTilemap, 0x800); + + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 2); + SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 1); + SetAnimBgAttribute(1, BG_ANIM_AREA_OVERFLOW_MODE, 0); + + battlerSpriteId = gBattlerSpriteIds[battlerId]; + gBattle_BG1_X = -(gSprites[battlerSpriteId].pos1.x + gSprites[battlerSpriteId].pos2.x) + 0x20; + gBattle_BG1_Y = -(gSprites[battlerSpriteId].pos1.y + gSprites[battlerSpriteId].pos2.y) + 0x20; + gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE; + + SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X); + SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); + + LoadPalette(&gPlttBufferUnfaded[0x100 + battlerId * 16], animBg.paletteId * 16, 0x20); + CpuCopy32(&gPlttBufferUnfaded[0x100 + battlerId * 16], (void*)(BG_PLTT + animBg.paletteId * 32), 0x20); + + sub_80BCEF4(1, 0, 0, GetBattlerPosition(battlerId), animBg.paletteId, animBg.bgTiles, animBg.bgTilemap, animBg.tilesOffset); + } + else + { + RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(12)), 0x2000, 1); + RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(30)), 0x1000, 1); + sub_80752C8(&animBg, 2); + CpuFill16(0, animBg.bgTiles + 0x1000, 0x1000); + CpuFill16(0, animBg.bgTilemap + 0x400, 0x800); + SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 2); + SetAnimBgAttribute(2, BG_ANIM_SCREEN_SIZE, 1); + SetAnimBgAttribute(2, BG_ANIM_AREA_OVERFLOW_MODE, 0); + + battlerSpriteId = gBattlerSpriteIds[battlerId]; + gBattle_BG2_X = -(gSprites[battlerSpriteId].pos1.x + gSprites[battlerSpriteId].pos2.x) + 0x20; + gBattle_BG2_Y = -(gSprites[battlerSpriteId].pos1.y + gSprites[battlerSpriteId].pos2.y) + 0x20; + gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE; + + SetGpuReg(REG_OFFSET_BG2HOFS, gBattle_BG2_X); + SetGpuReg(REG_OFFSET_BG2VOFS, gBattle_BG2_Y); + + LoadPalette(&gPlttBufferUnfaded[0x100 + battlerId * 16], 0x90, 0x20); + CpuCopy32(&gPlttBufferUnfaded[0x100 + battlerId * 16], (void*)(BG_PLTT + 0x120), 0x20); + + sub_80BCEF4(2, 0, 0, GetBattlerPosition(battlerId), animBg.paletteId, animBg.bgTiles + 0x1000, animBg.bgTilemap + 0x400, animBg.tilesOffset); + } +} + +void sub_80730C0(u16 a, u16 *b, s32 c, u8 d) +{ + u8 i, j; + u32 var; + + if (d == 0) + var = 32; + else + var = 64; + + a <<= 12; + for (i = 0; i < var; i++) + { + for (j = 0; j < 32; j++) + { + b[32 * i + j] = ((b[32 * i + j] & 0xFFF) | a) + c; + } + } +} + +void sub_8073128(bool8 to_BG2) +{ + struct BattleAnimBgData animBg; + sub_80752A0(&animBg); + + if (!to_BG2) + { + sub_8075358(1); + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + } + else + { + sub_8075358(2); + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + } +} + +static void task_pA_ma0A_obj_to_bg_pal(u8 taskId) +{ + u8 spriteId, palIndex; + s16 x, y; + struct BattleAnimBgData animBg; + + spriteId = gTasks[taskId].data[0]; + palIndex = gTasks[taskId].data[6]; + sub_80752A0(&animBg); + x = gTasks[taskId].data[1] - (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x); + y = gTasks[taskId].data[2] - (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y); + + if (gTasks[taskId].data[5] == 0) + { + u16 *src; + u16 *dst; + + gBattle_BG1_X = x + gTasks[taskId].data[3]; + gBattle_BG1_Y = y + gTasks[taskId].data[4]; + src = gPlttBufferFaded + 0x100 + palIndex * 16; + dst = gPlttBufferFaded + 0x100 + animBg.paletteId * 16 - 256; + CpuCopy32(src, dst, 0x20); + } + else + { + u16 *src; + u16 *dst; + + gBattle_BG2_X = x + gTasks[taskId].data[3]; + gBattle_BG2_Y = y + gTasks[taskId].data[4]; + src = gPlttBufferFaded + 0x100 + palIndex * 16; + dst = gPlttBufferFaded + 0x100 - 112; + CpuCopy32(src, dst, 0x20); + } +} + +static void ScriptCmd_clearmonbg(void) +{ + u8 animBattlerId; + u8 battlerId; + u8 taskId; + + sBattleAnimScriptPtr++; + animBattlerId = sBattleAnimScriptPtr[0]; + if (animBattlerId == ANIM_ATTACKER) + animBattlerId = ANIM_ATK_PARTNER; + else if (animBattlerId == ANIM_TARGET) + animBattlerId = ANIM_DEF_PARTNER; + + if (animBattlerId == ANIM_ATTACKER || animBattlerId == ANIM_ATK_PARTNER) + battlerId = gBattleAnimAttacker; + else + battlerId = gBattleAnimTarget; + + if (sMonAnimTaskIdArray[0] != 0xFF) + gSprites[gBattlerSpriteIds[battlerId]].invisible = FALSE; + if (animBattlerId > ANIM_TARGET && sMonAnimTaskIdArray[1] != 0xFF) + gSprites[gBattlerSpriteIds[battlerId ^ BIT_FLANK]].invisible = FALSE; + else + animBattlerId = ANIM_ATTACKER; + + taskId = CreateTask(sub_807331C, 5); + gTasks[taskId].data[0] = animBattlerId; + gTasks[taskId].data[2] = battlerId; + + sBattleAnimScriptPtr++; +} + +static void sub_807331C(u8 taskId) +{ + u8 toBG_2; + u8 position; + + gTasks[taskId].data[1]++; + if (gTasks[taskId].data[1] != 1) + { + position = GetBattlerPosition((u8)gTasks[taskId].data[2]); + if (position == B_POSITION_OPPONENT_LEFT || position == B_POSITION_PLAYER_RIGHT) + toBG_2 = FALSE; + else + toBG_2 = TRUE; + + if (sMonAnimTaskIdArray[0] != 0xFF) + { + sub_8073128(toBG_2); + DestroyTask(sMonAnimTaskIdArray[0]); + sMonAnimTaskIdArray[0] = 0xFF; + } + if (gTasks[taskId].data[0] > 1) + { + sub_8073128(toBG_2 ^ 1); + DestroyTask(sMonAnimTaskIdArray[1]); + sMonAnimTaskIdArray[1] = 0xFF; + } + DestroyTask(taskId); + } +} + +static void ScriptCmd_monbg_22(void) +{ + bool8 toBG_2; + u8 battlerId; + u8 animBattlerId; + u8 position; + + sBattleAnimScriptPtr++; + animBattlerId = sBattleAnimScriptPtr[0]; + if (animBattlerId == ANIM_ATTACKER) + animBattlerId = ANIM_ATK_PARTNER; + else if (animBattlerId == ANIM_TARGET) + animBattlerId = ANIM_DEF_PARTNER; + + if (animBattlerId == ANIM_ATTACKER || animBattlerId == ANIM_ATK_PARTNER) + battlerId = gBattleAnimAttacker; + else + battlerId = gBattleAnimTarget; + + if (IsBattlerSpriteVisible(battlerId)) + { + position = GetBattlerPosition(battlerId); + if (position == B_POSITION_OPPONENT_LEFT || position == B_POSITION_PLAYER_RIGHT) + toBG_2 = FALSE; + else + toBG_2 = TRUE; + + MoveBattlerSpriteToBG(battlerId, toBG_2); + gSprites[gBattlerSpriteIds[battlerId]].invisible = FALSE; + } + + battlerId ^= BIT_FLANK; + if (animBattlerId > ANIM_TARGET && IsBattlerSpriteVisible(battlerId)) + { + position = GetBattlerPosition(battlerId); + if (position == B_POSITION_OPPONENT_LEFT || position == B_POSITION_PLAYER_RIGHT) + toBG_2 = FALSE; + else + toBG_2 = TRUE; + + MoveBattlerSpriteToBG(battlerId, toBG_2); + gSprites[gBattlerSpriteIds[battlerId]].invisible = FALSE; + } + + sBattleAnimScriptPtr++; +} + +static void ScriptCmd_clearmonbg_23(void) +{ + u8 animBattlerId; + u8 battlerId; + u8 taskId; + + sBattleAnimScriptPtr++; + animBattlerId = sBattleAnimScriptPtr[0]; + + if (animBattlerId == ANIM_ATTACKER) + animBattlerId = ANIM_ATK_PARTNER; + else if (animBattlerId == ANIM_TARGET) + animBattlerId = ANIM_DEF_PARTNER; + + if (animBattlerId == ANIM_ATTACKER || animBattlerId == ANIM_ATK_PARTNER) + battlerId = gBattleAnimAttacker; + else + battlerId = gBattleAnimTarget; + + if (IsBattlerSpriteVisible(battlerId)) + gSprites[gBattlerSpriteIds[battlerId]].invisible = FALSE; + if (animBattlerId > ANIM_TARGET && IsBattlerSpriteVisible(battlerId ^ BIT_FLANK)) + gSprites[gBattlerSpriteIds[battlerId ^ BIT_FLANK]].invisible = FALSE; + else + animBattlerId = ANIM_ATTACKER; + + taskId = CreateTask(sub_8073558, 5); + gTasks[taskId].data[0] = animBattlerId; + gTasks[taskId].data[2] = battlerId; + + sBattleAnimScriptPtr++; +} + +static void sub_8073558(u8 taskId) +{ + bool8 to_BG2; + u8 position; + u8 battlerId; + + gTasks[taskId].data[1]++; + if (gTasks[taskId].data[1] != 1) + { + bool8 toBG_2; + battlerId = gTasks[taskId].data[2]; + position = GetBattlerPosition(battlerId); + if (position == B_POSITION_OPPONENT_LEFT || position == B_POSITION_PLAYER_RIGHT) + toBG_2 = FALSE; + else + toBG_2 = TRUE; + + if (IsBattlerSpriteVisible(battlerId)) + sub_8073128(toBG_2); + + if (gTasks[taskId].data[0] > 1 && IsBattlerSpriteVisible(battlerId ^ BIT_FLANK)) + sub_8073128(toBG_2 ^ 1); + + DestroyTask(taskId); + } +} + +#undef t1_MONBG_BATTLER +#undef t1_MON_IN_BG2 +#undef t1_CREATE_ANOTHER_TASK +#undef t1_IS_SECONDMON_BG + +#undef t2_BATTLER_SPRITE_ID +#undef t2_MON_IN_BG2 +#undef t2_MONBG_BATTLER + +static void ScriptCmd_setalpha(void) +{ + u16 half1, half2; + + sBattleAnimScriptPtr++; + half1 = *(sBattleAnimScriptPtr++); + half2 = *(sBattleAnimScriptPtr++) << 8; + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); + SetGpuReg(REG_OFFSET_BLDALPHA, half1 | half2); +} + +static void ScriptCmd_setbldcnt(void) +{ + u16 half1, half2; + + sBattleAnimScriptPtr++; + half1 = *(sBattleAnimScriptPtr++); + half2 = *(sBattleAnimScriptPtr++) << 8; + SetGpuReg(REG_OFFSET_BLDCNT, half1 | half2); +} + +static void ScriptCmd_blendoff(void) +{ + sBattleAnimScriptPtr++; + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); +} + +static void ScriptCmd_call(void) +{ + sBattleAnimScriptPtr++; + sBattleAnimScriptRetAddr = sBattleAnimScriptPtr + 4; + sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr); +} + +static void ScriptCmd_return(void) +{ + sBattleAnimScriptPtr = sBattleAnimScriptRetAddr; +} + +static void ScriptCmd_setarg(void) +{ + const u8 *addr = sBattleAnimScriptPtr; + u16 value; + u8 argId; + + sBattleAnimScriptPtr++; + argId = sBattleAnimScriptPtr[0]; + sBattleAnimScriptPtr++; + value = T1_READ_16(sBattleAnimScriptPtr); + sBattleAnimScriptPtr = addr + 4; + gBattleAnimArgs[argId] = value; +} + +static void ScriptCmd_choosetwoturnanim(void) +{ + sBattleAnimScriptPtr++; + if (gAnimMoveTurn & 1) + sBattleAnimScriptPtr += 4; + sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr); +} + +static void ScriptCmd_jumpifmoveturn(void) +{ + u8 toCheck; + + sBattleAnimScriptPtr++; + toCheck = sBattleAnimScriptPtr[0]; + sBattleAnimScriptPtr++; + + if (toCheck == gAnimMoveTurn) + sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr); + else + sBattleAnimScriptPtr += 4; +} + +static void ScriptCmd_goto(void) +{ + sBattleAnimScriptPtr++; + sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr); +} + +bool8 IsContest(void) +{ + return FALSE; +} + +// Unused +static bool8 sub_807378C(u16 a) +{ + if (a == 0xC9) + return FALSE; + else + return TRUE; +} + +#define tBackgroundId data[0] +#define tState data[10] + +static void ScriptCmd_fadetobg(void) +{ + u8 backgroundId; + u8 taskId; + + sBattleAnimScriptPtr++; + backgroundId = sBattleAnimScriptPtr[0]; + sBattleAnimScriptPtr++; + taskId = CreateTask(Task_FadeToBg, 5); + gTasks[taskId].tBackgroundId = backgroundId; + sAnimBackgroundFadeState = 1; +} + +static void ScriptCmd_fadetobgfromset(void) +{ + u8 bg1, bg2, bg3; + u8 taskId; + + sBattleAnimScriptPtr++; + bg1 = sBattleAnimScriptPtr[0]; + bg2 = sBattleAnimScriptPtr[1]; + bg3 = sBattleAnimScriptPtr[2]; + sBattleAnimScriptPtr += 3; + taskId = CreateTask(Task_FadeToBg, 5); + + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + gTasks[taskId].tBackgroundId = bg2; + else + gTasks[taskId].tBackgroundId = bg1; + + sAnimBackgroundFadeState = 1; +} + +static void Task_FadeToBg(u8 taskId) +{ + if (gTasks[taskId].tState == 0) + { + BeginHardwarePaletteFade(0xE8, 0, 0, 16, 0); + gTasks[taskId].tState++; + return; + } + if (gPaletteFade.active) + return; + if (gTasks[taskId].tState == 1) + { + gTasks[taskId].tState++; + sAnimBackgroundFadeState = 2; + } + else if (gTasks[taskId].tState == 2) + { + s16 bgId = gTasks[taskId].tBackgroundId; + + if (bgId == -1) + LoadDefaultBg(); + else + LoadMoveBg(bgId); + + BeginHardwarePaletteFade(0xE8, 0, 16, 0, 1); + gTasks[taskId].tState++; + return; + } + if (gPaletteFade.active) + return; + if (gTasks[taskId].tState == 3) + { + DestroyTask(taskId); + sAnimBackgroundFadeState = 0; + } +} + +static void LoadMoveBg(u16 bgId) +{ + LZDecompressVram(gBattleAnimBackgroundTable[bgId].tilemap, (void *)(BG_SCREEN_ADDR(26))); + LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(BG_CHAR_ADDR(2))); + LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, 32, 32); +} + +static void LoadDefaultBg(void) +{ + DrawMainBattleBackground(); +} + +static void ScriptCmd_restorebg(void) +{ + u8 taskId; + + sBattleAnimScriptPtr++; + taskId = CreateTask(Task_FadeToBg, 5); + gTasks[taskId].tBackgroundId = -1; + sAnimBackgroundFadeState = 1; +} + +#undef tBackgroundId +#undef tState + +static void ScriptCmd_waitbgfadeout(void) +{ + if (sAnimBackgroundFadeState == 2) + { + sBattleAnimScriptPtr++; + sAnimFramesToWait = 0; + } + else + { + sAnimFramesToWait = 1; + } +} + +static void ScriptCmd_waitbgfadein(void) +{ + if (sAnimBackgroundFadeState == 0) + { + sBattleAnimScriptPtr++; + sAnimFramesToWait = 0; + } + else + { + sAnimFramesToWait = 1; + } +} + +static void ScriptCmd_changebg(void) +{ + sBattleAnimScriptPtr++; + LoadMoveBg(sBattleAnimScriptPtr[0]); + sBattleAnimScriptPtr++; +} + +s8 BattleAnimAdjustPanning(s8 pan) +{ + if (gBattleSpritesDataPtr->healthBoxesData[gBattleAnimAttacker].statusAnimActive) + { + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + pan = SOUND_PAN_TARGET; + else + pan = SOUND_PAN_ATTACKER; + } + else if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + { + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + { + if (pan == SOUND_PAN_TARGET) + pan = SOUND_PAN_ATTACKER; + else if (pan != SOUND_PAN_ATTACKER) + pan *= -1; + } + } + else if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT) + { + if (pan == SOUND_PAN_ATTACKER) + pan = SOUND_PAN_TARGET; + } + else + { + pan *= -1; + } + + if (pan > SOUND_PAN_TARGET) + pan = SOUND_PAN_TARGET; + else if (pan < SOUND_PAN_ATTACKER) + pan = SOUND_PAN_ATTACKER; + + return pan; +} + +s8 BattleAnimAdjustPanning2(s8 pan) +{ + if (gBattleSpritesDataPtr->healthBoxesData[gBattleAnimAttacker].statusAnimActive) + { + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + pan = SOUND_PAN_TARGET; + else + pan = SOUND_PAN_ATTACKER; + } + else + { + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + pan = -pan; + } + return pan; +} + +s16 KeepPanInRange(s16 panArg, int oldPan) +{ + s16 pan = panArg; + + if (pan > SOUND_PAN_TARGET) + pan = SOUND_PAN_TARGET; + else if (pan < SOUND_PAN_ATTACKER) + pan = SOUND_PAN_ATTACKER; + + return pan; +} + +s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan) +{ + s16 ret; + + if (sourcePan < targetPan) + ret = ((incrementPan < 0) ? -incrementPan : incrementPan); + else if (sourcePan > targetPan) + ret = -((incrementPan < 0) ? -incrementPan : incrementPan); + else + ret = 0; + + return ret; +} + +static void ScriptCmd_playsewithpan(void) +{ + u16 songId; + s8 pan; + + sBattleAnimScriptPtr++; + songId = T1_READ_16(sBattleAnimScriptPtr); + pan = sBattleAnimScriptPtr[2]; + PlaySE12WithPanning(songId, BattleAnimAdjustPanning(pan)); + sBattleAnimScriptPtr += 3; +} + +static void ScriptCmd_setpan(void) +{ + s8 pan; + + sBattleAnimScriptPtr++; + pan = sBattleAnimScriptPtr[0]; + SE12PanpotControl(BattleAnimAdjustPanning(pan)); + sBattleAnimScriptPtr++; +} + +#define tInitialPan data[0] +#define tTargetPan data[1] +#define tIncrementPan data[2] +#define tFramesToWait data[3] +#define tCurrentPan data[4] +#define tFrameCounter data[8] + +static void ScriptCmd_panse_1B(void) +{ + u16 songNum; + s8 currentPanArg, incrementPan, incrementPanArg, currentPan, targetPan; + u8 framesToWait; + u8 taskId; + + sBattleAnimScriptPtr++; + songNum = T1_READ_16(sBattleAnimScriptPtr); + currentPanArg = sBattleAnimScriptPtr[2]; + incrementPan = sBattleAnimScriptPtr[3]; + incrementPanArg = sBattleAnimScriptPtr[4]; + framesToWait = sBattleAnimScriptPtr[5]; + + currentPan = BattleAnimAdjustPanning(currentPanArg); + targetPan = BattleAnimAdjustPanning(incrementPan); + incrementPan = CalculatePanIncrement(currentPan, targetPan, incrementPanArg); + taskId = CreateTask(Task_PanFromInitialToTarget, 1); + gTasks[taskId].tInitialPan = currentPan; + gTasks[taskId].tTargetPan = targetPan; + gTasks[taskId].tIncrementPan = incrementPan; + gTasks[taskId].tFramesToWait = framesToWait; + gTasks[taskId].tCurrentPan = currentPan; + + PlaySE12WithPanning(songNum, currentPan); + + gAnimSoundTaskCount++; + sBattleAnimScriptPtr += 6; +} + +static void Task_PanFromInitialToTarget(u8 taskId) +{ + bool32 destroyTask = FALSE; + if (gTasks[taskId].tFrameCounter++ >= gTasks[taskId].tFramesToWait) + { + s16 pan; + s16 initialPanning, targetPanning, currentPan, incrementPan; + + gTasks[taskId].tFrameCounter = 0; + initialPanning = gTasks[taskId].tInitialPan; + targetPanning = gTasks[taskId].tTargetPan; + currentPan = gTasks[taskId].tCurrentPan; + incrementPan = gTasks[taskId].tIncrementPan; + pan = currentPan + incrementPan; + gTasks[taskId].tCurrentPan = pan; + + if (incrementPan == 0) + { + destroyTask = TRUE; + } + else if (initialPanning < targetPanning) + { + if (pan >= targetPanning) + destroyTask = TRUE; + } + else // Panning decreasing. + { + if (pan <= targetPanning) + destroyTask = TRUE; + } + + if (destroyTask) + { + pan = targetPanning; + DestroyTask(taskId); + gAnimSoundTaskCount--; + } + + SE12PanpotControl(pan); + } +} + +static void ScriptCmd_panse_26(void) +{ + u16 songId; + s8 currentPan, targetPan, incrementPan; + u8 framesToWait; + u8 taskId; + + sBattleAnimScriptPtr++; + songId = T1_READ_16(sBattleAnimScriptPtr); + currentPan = sBattleAnimScriptPtr[2]; + targetPan = sBattleAnimScriptPtr[3]; + incrementPan = sBattleAnimScriptPtr[4]; + framesToWait = sBattleAnimScriptPtr[5]; + + taskId = CreateTask(Task_PanFromInitialToTarget, 1); + gTasks[taskId].tInitialPan = currentPan; + gTasks[taskId].tTargetPan = targetPan; + gTasks[taskId].tIncrementPan = incrementPan; + gTasks[taskId].tFramesToWait = framesToWait; + gTasks[taskId].tCurrentPan = currentPan; + + PlaySE12WithPanning(songId, currentPan); + + gAnimSoundTaskCount++; + sBattleAnimScriptPtr += 6; +} + +static void ScriptCmd_panse_27(void) +{ + u16 songId; + s8 targetPanArg, incrementPanArg, currentPanArg, currentPan, targetPan, incrementPan; + u8 framesToWait; + u8 taskId; + + sBattleAnimScriptPtr++; + songId = T1_READ_16(sBattleAnimScriptPtr); + currentPanArg = sBattleAnimScriptPtr[2]; + targetPanArg = sBattleAnimScriptPtr[3]; + incrementPanArg = sBattleAnimScriptPtr[4]; + framesToWait = sBattleAnimScriptPtr[5]; + + currentPan = BattleAnimAdjustPanning2(currentPanArg); + targetPan = BattleAnimAdjustPanning2(targetPanArg); + incrementPan = BattleAnimAdjustPanning2(incrementPanArg); + + taskId = CreateTask(Task_PanFromInitialToTarget, 1); + gTasks[taskId].tInitialPan = currentPan; + gTasks[taskId].tTargetPan = targetPan; + gTasks[taskId].tIncrementPan = incrementPan; + gTasks[taskId].tFramesToWait = framesToWait; + gTasks[taskId].tCurrentPan = currentPan; + + PlaySE12WithPanning(songId, currentPan); + + gAnimSoundTaskCount++; + sBattleAnimScriptPtr += 6; +} + +#undef tInitialPan +#undef tTargetPan +#undef tIncrementPan +#undef tFramesToWait +#undef tCurrentPan +#undef tFrameCounter + +#define tSongId data[0] +#define tPanning data[1] +#define tFramesToWait data[2] +#define tNumberOfPlays data[3] +#define tFrameCounter data[8] + +static void ScriptCmd_loopsewithpan(void) +{ + u16 songId; + s8 panningArg, panning; + u8 framesToWait, numberOfPlays; + u8 taskId; + + sBattleAnimScriptPtr++; + songId = T1_READ_16(sBattleAnimScriptPtr); + panningArg = sBattleAnimScriptPtr[2]; + framesToWait = sBattleAnimScriptPtr[3]; + numberOfPlays = sBattleAnimScriptPtr[4]; + panning = BattleAnimAdjustPanning(panningArg); + + taskId = CreateTask(Task_LoopAndPlaySE, 1); + gTasks[taskId].tSongId = songId; + gTasks[taskId].tPanning = panning; + gTasks[taskId].tFramesToWait = framesToWait; + gTasks[taskId].tNumberOfPlays = numberOfPlays; + gTasks[taskId].tFrameCounter = framesToWait; + gTasks[taskId].func(taskId); + + gAnimSoundTaskCount++; + sBattleAnimScriptPtr += 5; +} + +static void Task_LoopAndPlaySE(u8 taskId) +{ + if (gTasks[taskId].tFrameCounter++ >= gTasks[taskId].tFramesToWait) + { + u16 songId; + s8 panning; + u8 numberOfPlays; + + gTasks[taskId].tFrameCounter = 0; + songId = gTasks[taskId].tSongId; + panning = gTasks[taskId].tPanning; + numberOfPlays = --gTasks[taskId].tNumberOfPlays; + PlaySE12WithPanning(songId, panning); + if (numberOfPlays == 0) + { + DestroyTask(taskId); + gAnimSoundTaskCount--; + } + } +} + +#undef tSongId +#undef tPanning +#undef tFramesToWait +#undef tNumberOfPlays +#undef tFrameCounter + +#define tSongId data[0] +#define tPanning data[1] +#define tFramesToWait data[2] + +static void ScriptCmd_waitplaysewithpan(void) +{ + u16 songId; + s8 panningArg, panning; + u8 framesToWait; + u8 taskId; + + sBattleAnimScriptPtr++; + songId = T1_READ_16(sBattleAnimScriptPtr); + panningArg = sBattleAnimScriptPtr[2]; + framesToWait = sBattleAnimScriptPtr[3]; + panning = BattleAnimAdjustPanning(panningArg); + + taskId = CreateTask(Task_WaitAndPlaySE, 1); + gTasks[taskId].tSongId = songId; + gTasks[taskId].tPanning = panning; + gTasks[taskId].tFramesToWait = framesToWait; + + gAnimSoundTaskCount++; + sBattleAnimScriptPtr += 4; +} + +static void Task_WaitAndPlaySE(u8 taskId) +{ + if (gTasks[taskId].tFramesToWait-- <= 0) + { + PlaySE12WithPanning(gTasks[taskId].tSongId, gTasks[taskId].tPanning); + DestroyTask(taskId); + gAnimSoundTaskCount--; + } +} + +#undef tSongId +#undef tPanning +#undef tFramesToWait + +static void ScriptCmd_createsoundtask(void) +{ + TaskFunc func; + u8 numArgs, taskId; + s32 i; + + sBattleAnimScriptPtr++; + func = (TaskFunc)T2_READ_32(sBattleAnimScriptPtr); + sBattleAnimScriptPtr += 4; + numArgs = sBattleAnimScriptPtr[0]; + sBattleAnimScriptPtr++; + for (i = 0; i < numArgs; i++) + { + gBattleAnimArgs[i] = T1_READ_16(sBattleAnimScriptPtr); + sBattleAnimScriptPtr += 2; + } + taskId = CreateTask(func, 1); + func(taskId); + gAnimSoundTaskCount++; +} + +static void ScriptCmd_waitsound(void) +{ + if (gAnimSoundTaskCount != 0) + { + sSoundAnimFramesToWait = 0; + sAnimFramesToWait = 1; + } + else if (IsSEPlaying()) + { + if (++sSoundAnimFramesToWait > 90) + { + m4aMPlayStop(&gMPlayInfo_SE1); + m4aMPlayStop(&gMPlayInfo_SE2); + sSoundAnimFramesToWait = 0; + } + else + { + sAnimFramesToWait = 1; + } + } + else + { + sSoundAnimFramesToWait = 0; + sBattleAnimScriptPtr++; + sAnimFramesToWait = 0; + } +} + +static void ScriptCmd_jumpargeq(void) +{ + u8 argId; + s16 valueToCheck; + + sBattleAnimScriptPtr++; + argId = sBattleAnimScriptPtr[0]; + valueToCheck = T1_READ_16(sBattleAnimScriptPtr + 1); + + if (valueToCheck == gBattleAnimArgs[argId]) + sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr + 3); + else + sBattleAnimScriptPtr += 7; +} + +static void ScriptCmd_jumpifcontest(void) +{ + sBattleAnimScriptPtr += 5; +} + +static void ScriptCmd_monbgprio_28(void) +{ + u8 wantedBattler; + u8 battlerId; + u8 battlerPosition; + + wantedBattler = sBattleAnimScriptPtr[1]; + sBattleAnimScriptPtr += 2; + + if (wantedBattler != ANIM_ATTACKER) + battlerId = gBattleAnimTarget; + else + battlerId = gBattleAnimAttacker; + + battlerPosition = GetBattlerPosition(battlerId); + if (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_OPPONENT_RIGHT) + { + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); + SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 2); + } +} + +static void ScriptCmd_monbgprio_29(void) +{ + sBattleAnimScriptPtr++; + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); + SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 2); +} + +static void ScriptCmd_monbgprio_2A(void) +{ + u8 wantedBattler; + u8 battlerPosition; + u8 battlerId; + + wantedBattler = sBattleAnimScriptPtr[1]; + sBattleAnimScriptPtr += 2; + if (GetBattlerSide(gBattleAnimAttacker) != GetBattlerSide(gBattleAnimTarget)) + { + if (wantedBattler != ANIM_ATTACKER) + battlerId = gBattleAnimTarget; + else + battlerId = gBattleAnimAttacker; + + battlerPosition = GetBattlerPosition(battlerId); + if (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_OPPONENT_RIGHT) + { + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); + SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 2); + } + } +} + +static void ScriptCmd_invisible(void) +{ + u8 spriteId; + + spriteId = GetAnimBattlerSpriteId(sBattleAnimScriptPtr[1]); + if (spriteId != 0xFF) + gSprites[spriteId].invisible = TRUE; + + sBattleAnimScriptPtr += 2; +} + +static void ScriptCmd_visible(void) +{ + u8 spriteId; + + spriteId = GetAnimBattlerSpriteId(sBattleAnimScriptPtr[1]); + if (spriteId != 0xFF) + gSprites[spriteId].invisible = FALSE; + + sBattleAnimScriptPtr += 2; +} + +static void ScriptCmd_doublebattle_2D(void) +{ + u8 wantedBattler; + u8 priority; + u8 spriteId; + + wantedBattler = sBattleAnimScriptPtr[1]; + sBattleAnimScriptPtr += 2; + if (IsDoubleBattle() + && GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget)) + { + if (wantedBattler == ANIM_ATTACKER) + { + priority = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker); + spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + } + else + { + priority = GetBattlerSpriteBGPriorityRank(gBattleAnimTarget); + spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); + } + if (spriteId != 0xFF) + { + gSprites[spriteId].invisible = FALSE; + if (priority == 2) + gSprites[spriteId].oam.priority = 3; + + if (priority == 1) + sub_8073128(FALSE); + else + sub_8073128(TRUE); + } + } +} + +static void ScriptCmd_doublebattle_2E(void) +{ + u8 wantedBattler; + u8 priority; + u8 spriteId; + + wantedBattler = sBattleAnimScriptPtr[1]; + sBattleAnimScriptPtr += 2; + if (IsDoubleBattle() + && GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget)) + { + if (wantedBattler == ANIM_ATTACKER) + { + priority = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker); + spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + } + else + { + priority = GetBattlerSpriteBGPriorityRank(gBattleAnimTarget); + spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); + } + + if (spriteId != 0xFF && priority == 2) + gSprites[spriteId].oam.priority = 2; + } +} + +static void ScriptCmd_stopsound(void) +{ + m4aMPlayStop(&gMPlayInfo_SE1); + m4aMPlayStop(&gMPlayInfo_SE2); + sBattleAnimScriptPtr++; +} diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c new file mode 100644 index 000000000..647d2f367 --- /dev/null +++ b/src/battle_anim_effects_1.c @@ -0,0 +1,5619 @@ +#include "global.h" +#include "malloc.h" +#include "battle_anim.h" +#include "battle_interface.h" +#include "decompress.h" +#include "gpu_regs.h" +#include "graphics.h" +#include "main.h" +#include "math_util.h" +#include "palette.h" +#include "random.h" +#include "scanline_effect.h" +#include "sound.h" +#include "trig.h" +#include "util.h" +#include "constants/songs.h" + +// RAM +EWRAM_DATA static s16 gUnknown_203999C[4] = {0}; + +// Function Declarations +static void AnimMovePowderParticleStep(struct Sprite *); +static void AnimSolarbeamSmallOrbStep(struct Sprite *); +static void AnimAbsorptionOrbStep(struct Sprite *); +static void AnimHyperBeamOrbStep(struct Sprite *); +static void AnimLeechSeedStep(struct Sprite *); +static void AnimLeechSeedSprouts(struct Sprite *); +static void AnimSporeParticleStep(struct Sprite *); +static void AnimPetalDanceBigFlowerStep(struct Sprite *); +static void AnimPetalDanceSmallFlowerStep(struct Sprite *); +static void AnimRazorLeafParticleStep1(struct Sprite *); +static void AnimRazorLeafParticleStep2(struct Sprite *); +static void AnimTranslateLinearSingleSineWaveStep(struct Sprite *); +static void AnimMoveTwisterParticleStep(struct Sprite *); +static void AnimConstrictBindingStep1(struct Sprite *); +static void AnimConstrictBindingStep2(struct Sprite *); +static void AnimTask_DuplicateAndShrinkToPosStep1(u8); +static void AnimTask_DuplicateAndShrinkToPosStep2(u8); +static void AnimItemStealStep3(struct Sprite *); +static void AnimRootFlickerOut(struct Sprite *); +static void AnimTrickBagStep1(struct Sprite *); +static void AnimTrickBagStep2(struct Sprite *); +static void AnimTrickBagStep3(struct Sprite *); +static void AnimTask_LeafBladeStep(u8); +static s16 LeafBladeGetPosFactor(struct Sprite *); +static void AnimTask_LeafBladeStep2(struct Task *, u8); +static void AnimTask_LeafBladeStep2_Callback(struct Sprite *); +static void AnimFlyingParticleStep(struct Sprite *); +static void AnimNeedleArmSpikeStep(struct Sprite *); +static void AnimSliceStep(struct Sprite *); +static void sub_80A4880(struct Sprite *); +static void AnimProtectStep(struct Sprite *); +static void AnimMilkBottleStep1(struct Sprite *); +static void AnimMilkBottleStep2(struct Sprite *, int, int); +static void sub_80A4EA0(struct Sprite *); +static void AnimSleepLetterZStep(struct Sprite *); +static void AnimLockOnTargetStep1(struct Sprite *); +static void AnimLockOnTargetStep2(struct Sprite *); +static void AnimLockOnTargetStep3(struct Sprite *); +static void AnimLockOnTargetStep4(struct Sprite *); +static void AnimLockOnTargetStep5(struct Sprite *); +static void AnimLockOnTargetStep6(struct Sprite *); +static void AnimBowMonStep1(struct Sprite *); +static void AnimBowMonStep1_Callback(struct Sprite *); +static void AnimBowMonStep2(struct Sprite *); +static void AnimBowMonStep3(struct Sprite *); +static void AnimBowMonStep4(struct Sprite *); +static void AnimBowMonStep3_Callback(struct Sprite *); +static void sub_80A55A0(struct Sprite *); +static void AnimTask_SkullBashPositionSet(u8); +static void AnimTask_SkullBashPositionReset(u8); +static void AnimFalseSwipeSliceStep1(struct Sprite *); +static void AnimFalseSwipeSliceStep2(struct Sprite *); +static void AnimFalseSwipeSliceStep3(struct Sprite *); +static void AnimEndureEnergyStep(struct Sprite *); +static void AnimSharpenSphereStep(struct Sprite *); +static void AnimConversion2Step(struct Sprite *); +static void AnimMoonStep(struct Sprite *); +static void AnimMoonlightSparkleStep(struct Sprite *); +static void AnimHornHitStep(struct Sprite *); +static void AnimTask_DoubleTeamStep(u8); +static void AnimTask_DoubleTeamCallback(struct Sprite *); +static void AnimWavyMusicNotesGetNextPos(s16, s16, s16 *, s16 *, s8); +static void AnimWavyMusicNotesStep(struct Sprite *); +static void AnimFlyingMusicNotesStep(struct Sprite *); +static void AnimSlowFlyingMusicNotesStep(struct Sprite *); +static void AnimThoughtBubbleStep(struct Sprite *); +static void AnimMetronomeFingerStep(struct Sprite *); +static void AnimFollowMeFingerStep1(struct Sprite *); +static void AnimFollowMeFingerStep2(struct Sprite *); +static void AnimTauntFingerStep1(struct Sprite *); +static void AnimTauntFingerStep2(struct Sprite *); + +// Unused +static const u8 sUnknown_83E2964[] = {0x02, 0x04, 0x01, 0x03}; + +static const union AnimCmd sPowderParticlesAnimCmds[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(2, 5), + ANIMCMD_FRAME(4, 5), + ANIMCMD_FRAME(6, 5), + ANIMCMD_FRAME(8, 5), + ANIMCMD_FRAME(10, 5), + ANIMCMD_FRAME(12, 5), + ANIMCMD_FRAME(14, 5), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd *const sPowderParticlesAnimTable[] = +{ + sPowderParticlesAnimCmds, +}; + +const struct SpriteTemplate gSleepPowderParticleSpriteTemplate = +{ + .tileTag = ANIM_TAG_SLEEP_POWDER, + .paletteTag = ANIM_TAG_SLEEP_POWDER, + .oam = &gOamData_AffineOff_ObjNormal_8x16, + .anims = sPowderParticlesAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMovePowderParticle, +}; + +const struct SpriteTemplate gStunSporeParticleSpriteTemplate = +{ + .tileTag = ANIM_TAG_STUN_SPORE, + .paletteTag = ANIM_TAG_STUN_SPORE, + .oam = &gOamData_AffineOff_ObjNormal_8x16, + .anims = sPowderParticlesAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMovePowderParticle, +}; + +const struct SpriteTemplate gPoisonPowderParticleSpriteTemplate = +{ + .tileTag = ANIM_TAG_POISON_POWDER, + .paletteTag = ANIM_TAG_POISON_POWDER, + .oam = &gOamData_AffineOff_ObjNormal_8x16, + .anims = sPowderParticlesAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMovePowderParticle, +}; + +static const union AnimCmd sSolarbeamBigOrbAnimCmds1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sSolarbeamBigOrbAnimCmds2[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sSolarbeamBigOrbAnimCmds3[] = +{ + ANIMCMD_FRAME(2, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sSolarbeamBigOrbAnimCmds4[] = +{ + ANIMCMD_FRAME(3, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sSolarbeamBigOrbAnimCmds5[] = +{ + ANIMCMD_FRAME(4, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sSolarbeamBigOrbAnimCmds6[] = +{ + ANIMCMD_FRAME(5, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sSolarbeamBigOrbAnimCmds7[] = +{ + ANIMCMD_FRAME(6, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sSolarbeamSmallOrbAnimCms[] = +{ + ANIMCMD_FRAME(7, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sPowerAbsorptionOrbAnimCmds[] = +{ + ANIMCMD_FRAME(8, 1), + ANIMCMD_END, +}; + +static const union AnimCmd *const sSolarbeamBigOrbAnimTable[] = +{ + sSolarbeamBigOrbAnimCmds1, + sSolarbeamBigOrbAnimCmds2, + sSolarbeamBigOrbAnimCmds3, + sSolarbeamBigOrbAnimCmds4, + sSolarbeamBigOrbAnimCmds5, + sSolarbeamBigOrbAnimCmds6, + sSolarbeamBigOrbAnimCmds7, +}; + +static const union AnimCmd *const sSolarbeamSmallOrbAnimTable[] = +{ + sSolarbeamSmallOrbAnimCms, +}; + +static const union AnimCmd *const sPowerAbsorptionOrbAnimTable[] = +{ + sPowerAbsorptionOrbAnimCmds, +}; + +static const union AffineAnimCmd sPowerAbsorptionOrbAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(-5, -5, 0, 1), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd *const sPowerAbsorptionOrbAffineAnimTable[] = +{ + sPowerAbsorptionOrbAffineAnimCmds, +}; + +const struct SpriteTemplate gPowerAbsorptionOrbSpriteTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_ORBS, + .oam = &gOamData_AffineNormal_ObjBlend_16x16, + .anims = sPowerAbsorptionOrbAnimTable, + .images = NULL, + .affineAnims = sPowerAbsorptionOrbAffineAnimTable, + .callback = AnimPowerAbsorptionOrb, +}; + +const struct SpriteTemplate gSolarbeamBigOrbSpriteTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_ORBS, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = sSolarbeamBigOrbAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSolarbeamBigOrb, +}; + +const struct SpriteTemplate gSolarbeamSmallOrbSpriteTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_ORBS, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = sSolarbeamSmallOrbAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSolarbeamSmallOrb, +}; + +static const union AffineAnimCmd sStockpileAbsorptionOrbAffineCmds[] = +{ + AFFINEANIMCMD_FRAME(320, 320, 0, 0), + AFFINEANIMCMD_FRAME(-14, -14, 0, 1), + AFFINEANIMCMD_JUMP(1), +}; + +static const union AffineAnimCmd *const sStockpileAbsorptionOrbAffineAnimTable[] = +{ + sStockpileAbsorptionOrbAffineCmds, +}; + +const struct SpriteTemplate gStockpileAbsorptionOrbSpriteTemplate = +{ + .tileTag = ANIM_TAG_GRAY_ORB, + .paletteTag = ANIM_TAG_GRAY_ORB, + .oam = &gOamData_AffineDouble_ObjNormal_8x8, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sStockpileAbsorptionOrbAffineAnimTable, + .callback = AnimPowerAbsorptionOrb, +}; + +static const union AffineAnimCmd sAbsorptionOrbAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(-5, -5, 0, 1), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd *const sAbsorptionOrbAffineAnimTable[] = +{ + sAbsorptionOrbAffineAnimCmds, +}; + +const struct SpriteTemplate gAbsorptionOrbSpriteTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_ORBS, + .oam = &gOamData_AffineNormal_ObjBlend_16x16, + .anims = sPowerAbsorptionOrbAnimTable, + .images = NULL, + .affineAnims = sAbsorptionOrbAffineAnimTable, + .callback = AnimAbsorptionOrb, +}; + +const struct SpriteTemplate gHyperBeamOrbSpriteTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_ORBS, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = sSolarbeamBigOrbAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimHyperBeamOrb, +}; + +static const union AnimCmd sLeechSeedAnimCmds1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sLeechSeedAnimCmds2[] = +{ + ANIMCMD_FRAME(4, 7), + ANIMCMD_FRAME(8, 7), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd *const sLeechSeedAnimTable[] = +{ + sLeechSeedAnimCmds1, + sLeechSeedAnimCmds2, +}; + +const struct SpriteTemplate gLeechSeedSpriteTemplate = +{ + .tileTag = ANIM_TAG_SEED, + .paletteTag = ANIM_TAG_SEED, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = sLeechSeedAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimLeechSeed, +}; + +static const union AnimCmd sSporeParticleAnimCmds1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sSporeParticleAnimCmds2[] = +{ + ANIMCMD_FRAME(4, 7), + ANIMCMD_END, +}; + +static const union AnimCmd *const sSporeParticleAnimTable[] = +{ + sSporeParticleAnimCmds1, + sSporeParticleAnimCmds2, +}; + +const struct SpriteTemplate gSporeParticleSpriteTemplate = +{ + .tileTag = ANIM_TAG_SPORE, + .paletteTag = ANIM_TAG_SPORE, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = sSporeParticleAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSporeParticle, +}; + +static const union AnimCmd sPetalDanceBigFlowerAnimCmds[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sPetalDanceSmallFlowerAnimCmds[] = +{ + ANIMCMD_FRAME(4, 1), + ANIMCMD_END, +}; + +static const union AnimCmd *const sPetalDanceBigFlowerAnimTable[] = +{ + sPetalDanceBigFlowerAnimCmds, +}; + +static const union AnimCmd *const sPetalDanceSmallFlowerAnimTable[] = +{ + sPetalDanceSmallFlowerAnimCmds, +}; + +const struct SpriteTemplate gPetalDanceBigFlowerSpriteTemplate = +{ + .tileTag = ANIM_TAG_FLOWER, + .paletteTag = ANIM_TAG_FLOWER, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = sPetalDanceBigFlowerAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimPetalDanceBigFlower, +}; + +const struct SpriteTemplate gPetalDanceSmallFlowerSpriteTemplate = +{ + .tileTag = ANIM_TAG_FLOWER, + .paletteTag = ANIM_TAG_FLOWER, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = sPetalDanceSmallFlowerAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimPetalDanceSmallFlower, +}; + +static const union AnimCmd sRazorLeafParticleAnimCmds1[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(4, 5), + ANIMCMD_FRAME(8, 5), + ANIMCMD_FRAME(12, 5), + ANIMCMD_FRAME(16, 5), + ANIMCMD_FRAME(20, 5), + ANIMCMD_FRAME(16, 5), + ANIMCMD_FRAME(12, 5), + ANIMCMD_FRAME(8, 5), + ANIMCMD_FRAME(4, 5), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sRazorLeafParticleAnimCmds2[] = +{ + ANIMCMD_FRAME(24, 5), + ANIMCMD_FRAME(28, 5), + ANIMCMD_FRAME(32, 5), + ANIMCMD_END, +}; + +static const union AnimCmd *const sRazorLeafParticleAnimTable[] = +{ + sRazorLeafParticleAnimCmds1, + sRazorLeafParticleAnimCmds2, +}; + +const struct SpriteTemplate gRazorLeafParticleSpriteTemplate = +{ + .tileTag = ANIM_TAG_LEAF, + .paletteTag = ANIM_TAG_LEAF, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = sRazorLeafParticleAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimRazorLeafParticle, +}; + +const struct SpriteTemplate gTwisterLeafParticleSpriteTemplate = +{ + .tileTag = ANIM_TAG_LEAF, + .paletteTag = ANIM_TAG_LEAF, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = sRazorLeafParticleAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMoveTwisterParticle, +}; + +static const union AnimCmd sRazorLeafCutterAnimCmds[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(0, 3, .hFlip = TRUE), + ANIMCMD_FRAME(0, 3, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(0, 3, .vFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd *const sRazorLeafCutterAnimTable[] = +{ + sRazorLeafCutterAnimCmds, +}; + +const struct SpriteTemplate gRazorLeafCutterSpriteTemplate = +{ + .tileTag = ANIM_TAG_RAZOR_LEAF, + .paletteTag = ANIM_TAG_RAZOR_LEAF, + .oam = &gOamData_AffineOff_ObjNormal_32x16, + .anims = sRazorLeafCutterAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimTranslateLinearSingleSineWave, +}; + +static const union AffineAnimCmd sSwiftStarAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 0, 1), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd *const sSwiftStarAffineAnimTable[] = +{ + sSwiftStarAffineAnimCmds, +}; + +const struct SpriteTemplate gSwiftStarSpriteTemplate = +{ + .tileTag = ANIM_TAG_YELLOW_STAR, + .paletteTag = ANIM_TAG_YELLOW_STAR, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sSwiftStarAffineAnimTable, + .callback = AnimTranslateLinearSingleSineWave, +}; + +static const union AnimCmd sConstrictBindingAnimCmds1[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(32, 4), + ANIMCMD_FRAME(64, 4), + ANIMCMD_FRAME(96, 4), + ANIMCMD_END, +}; + +static const union AnimCmd sConstrictBindingAnimCmds2[] = +{ + ANIMCMD_FRAME(0, 4, .hFlip = TRUE), + ANIMCMD_FRAME(32, 4, .hFlip = TRUE), + ANIMCMD_FRAME(64, 4, .hFlip = TRUE), + ANIMCMD_FRAME(96, 4, .hFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd *const sConstrictBindingAnimTable[] = +{ + sConstrictBindingAnimCmds1, + sConstrictBindingAnimCmds2, +}; + +static const union AffineAnimCmd sConstrictBindingAffineAnimCmds1[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(-11, 0, 0, 6), + AFFINEANIMCMD_FRAME(11, 0, 0, 6), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sConstrictBindingAffineAnimCmds2[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(11, 0, 0, 6), + AFFINEANIMCMD_FRAME(-11, 0, 0, 6), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const sConstrictBindingAffineAnimTable[] = +{ + sConstrictBindingAffineAnimCmds1, + sConstrictBindingAffineAnimCmds2, +}; + +const struct SpriteTemplate gConstrictBindingSpriteTemplate = +{ + .tileTag = ANIM_TAG_TENDRILS, + .paletteTag = ANIM_TAG_TENDRILS, + .oam = &gOamData_AffineNormal_ObjNormal_64x32, + .anims = sConstrictBindingAnimTable, + .images = NULL, + .affineAnims = sConstrictBindingAffineAnimTable, + .callback = AnimConstrictBinding, +}; + +static const union AffineAnimCmd sMimicOrbAffineAnimCmds1[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 0, 0), + AFFINEANIMCMD_FRAME(48, 48, 0, 14), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sMimicOrbAffineAnimCmds2[] = +{ + AFFINEANIMCMD_FRAME(-16, -16, 0, 1), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd *const sMimicOrbAffineAnimTable[] = +{ + sMimicOrbAffineAnimCmds1, + sMimicOrbAffineAnimCmds2, +}; + +const struct SpriteTemplate gMimicOrbSpriteTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_ORBS, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = sPowerAbsorptionOrbAnimTable, + .images = NULL, + .affineAnims = sMimicOrbAffineAnimTable, + .callback = AnimMimicOrb, +}; + +static const union AnimCmd sIngrainRootAnimCmds1[] = +{ + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(16, 7), + ANIMCMD_FRAME(32, 7), + ANIMCMD_FRAME(48, 7), + ANIMCMD_END, +}; + +static const union AnimCmd sIngrainRootAnimCmds2[] = +{ + ANIMCMD_FRAME(0, 7, .hFlip = TRUE), + ANIMCMD_FRAME(16, 7, .hFlip = TRUE), + ANIMCMD_FRAME(32, 7, .hFlip = TRUE), + ANIMCMD_FRAME(48, 7, .hFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd sIngrainRootAnimCmds3[] = +{ + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(16, 7), + ANIMCMD_FRAME(32, 7), + ANIMCMD_END, +}; + +static const union AnimCmd sIngrainRootAnimCmds4[] = +{ + ANIMCMD_FRAME(0, 7, .hFlip = TRUE), + ANIMCMD_FRAME(16, 7, .hFlip = TRUE), + ANIMCMD_FRAME(32, 7, .hFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd *const sIngrainRootAnimTable[] = +{ + sIngrainRootAnimCmds1, + sIngrainRootAnimCmds2, + sIngrainRootAnimCmds3, + sIngrainRootAnimCmds4, +}; + +const struct SpriteTemplate gIngrainRootSpriteTemplate = +{ + .tileTag = ANIM_TAG_ROOTS, + .paletteTag = ANIM_TAG_ROOTS, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sIngrainRootAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimIngrainRoot, +}; + +const struct SpriteTemplate gFrenzyPlantRootSpriteTemplate = +{ + .tileTag = ANIM_TAG_ROOTS, + .paletteTag = ANIM_TAG_ROOTS, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sIngrainRootAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimFrenzyPlantRoot, +}; + +static const union AnimCmd sIngrainOrbAnimCmds[] = +{ + ANIMCMD_FRAME(3, 3), + ANIMCMD_FRAME(0, 5), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd *const sIngrainOrbAnimTable[] = +{ + sIngrainOrbAnimCmds, +}; + +const struct SpriteTemplate gIngrainOrbSpriteTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_ORBS, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = sIngrainOrbAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimIngrainOrb, +}; + +static const union AnimCmd sFallingBagAnimCmds[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_END, +}; + +static const union AnimCmd *const sFallingBagAnimTable[] = +{ + sFallingBagAnimCmds, +}; + +static const union AffineAnimCmd sFallingBagAffineAnimCmds1[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -4, 10), + AFFINEANIMCMD_FRAME(0, 0, 4, 20), + AFFINEANIMCMD_FRAME(0, 0, -4, 10), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sFallingBagAffineAnimCmds2[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -1, 2), + AFFINEANIMCMD_FRAME(0, 0, 1, 4), + AFFINEANIMCMD_FRAME(0, 0, -1, 4), + AFFINEANIMCMD_FRAME(0, 0, 1, 4), + AFFINEANIMCMD_FRAME(0, 0, -1, 4), + AFFINEANIMCMD_FRAME(0, 0, 1, 2), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const sFallingBagAffineAnimTable[] = +{ + sFallingBagAffineAnimCmds1, + sFallingBagAffineAnimCmds2, +}; + +const struct SpriteTemplate gPresentSpriteTemplate = +{ + .tileTag = ANIM_TAG_ITEM_BAG, + .paletteTag = ANIM_TAG_ITEM_BAG, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = sFallingBagAnimTable, + .images = NULL, + .affineAnims = sFallingBagAffineAnimTable, + .callback = AnimPresent, +}; + +const struct SpriteTemplate gKnockOffItemSpriteTemplate = +{ + .tileTag = ANIM_TAG_ITEM_BAG, + .paletteTag = ANIM_TAG_ITEM_BAG, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = sFallingBagAnimTable, + .images = NULL, + .affineAnims = sFallingBagAffineAnimTable, + .callback = AnimKnockOffItem, +}; + +static const union AnimCmd sPresentHealParticleAnimCmds[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(8, 4), + ANIMCMD_FRAME(12, 4), + ANIMCMD_END, +}; + +static const union AnimCmd *const sPresentHealParticleAnimTable[] = +{ + sPresentHealParticleAnimCmds, +}; + +const struct SpriteTemplate gPresentHealParticleSpriteTemplate = +{ + .tileTag = ANIM_TAG_GREEN_SPARKLE, + .paletteTag = ANIM_TAG_GREEN_SPARKLE, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = sPresentHealParticleAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimPresentHealParticle, +}; + +const struct SpriteTemplate gItemStealSpriteTemplate = +{ + .tileTag = ANIM_TAG_ITEM_BAG, + .paletteTag = ANIM_TAG_ITEM_BAG, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = sFallingBagAnimTable, + .images = NULL, + .affineAnims = sFallingBagAffineAnimTable, + .callback = AnimItemSteal, +}; + +static const union AffineAnimCmd sTrickBagAffineAnimCmds1[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 0, 3), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sTrickBagAffineAnimCmds2[] = +{ + AFFINEANIMCMD_FRAME(0, -10, 0, 3), + AFFINEANIMCMD_FRAME(0, -6, 0, 3), + AFFINEANIMCMD_FRAME(0, -2, 0, 3), + AFFINEANIMCMD_FRAME(0, 0, 0, 3), + AFFINEANIMCMD_FRAME(0, 2, 0, 3), + AFFINEANIMCMD_FRAME(0, 6, 0, 3), + AFFINEANIMCMD_FRAME(0, 10, 0, 3), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const sTrickBagAffineAnimTable[] = +{ + sTrickBagAffineAnimCmds1, + sTrickBagAffineAnimCmds2, + sFallingBagAffineAnimCmds1, + sFallingBagAffineAnimCmds2, +}; + +const struct SpriteTemplate gTrickBagSpriteTemplate = +{ + .tileTag = ANIM_TAG_ITEM_BAG, + .paletteTag = ANIM_TAG_ITEM_BAG, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = sFallingBagAnimTable, + .images = NULL, + .affineAnims = sTrickBagAffineAnimTable, + .callback = AnimTrickBag, +}; + +static const s8 gTrickBagCoordinates[][3] = +{ + {5, 24, 1}, + {0, 4, 0}, + {8, 16, -1}, + {0, 2, 0}, + {8, 16, 1}, + {0, 2, 0}, + {8, 16, 1}, + {0, 2, 0}, + {8, 16, 1}, + {0, 16, 0}, + {0, 0, 127}, +}; + +static const union AnimCmd sLeafBladeAnimCmds1[] = +{ + ANIMCMD_FRAME(28, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sLeafBladeAnimCmds2[] = +{ + ANIMCMD_FRAME(32, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sLeafBladeAnimCmds3[] = +{ + ANIMCMD_FRAME(20, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sLeafBladeAnimCmds4[] = +{ + ANIMCMD_FRAME(28, 1, .hFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd sLeafBladeAnimCmds5[] = +{ + ANIMCMD_FRAME(16, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sLeafBladeAnimCmds6[] = +{ + ANIMCMD_FRAME(16, 1, .hFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd sLeafBladeAnimCmds7[] = +{ + ANIMCMD_FRAME(28, 1), + ANIMCMD_END, +}; + +static const union AnimCmd *const sLeafBladeAnimTable[] = +{ + sLeafBladeAnimCmds1, + sLeafBladeAnimCmds2, + sLeafBladeAnimCmds3, + sLeafBladeAnimCmds4, + sLeafBladeAnimCmds5, + sLeafBladeAnimCmds6, + sLeafBladeAnimCmds7, +}; + +const struct SpriteTemplate gLeafBladeSpriteTemplate = +{ + .tileTag = ANIM_TAG_LEAF, + .paletteTag = ANIM_TAG_LEAF, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = sLeafBladeAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +static const union AffineAnimCmd sAromatherapyBigFlowerAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(256, 256, 0, 0), + AFFINEANIMCMD_FRAME(0, 0, 4, 1), + AFFINEANIMCMD_JUMP(1), +}; + +static const union AffineAnimCmd *const sAromatherapyBigFlowerAffineAnimTable[] = +{ + sAromatherapyBigFlowerAffineAnimCmds, +}; + +const struct SpriteTemplate gAromatherapySmallFlowerSpriteTemplate = +{ + .tileTag = ANIM_TAG_FLOWER, + .paletteTag = ANIM_TAG_FLOWER, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = sPetalDanceSmallFlowerAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimFlyingParticle, +}; + +const struct SpriteTemplate gAromatherapyBigFlowerSpriteTemplate = +{ + .tileTag = ANIM_TAG_FLOWER, + .paletteTag = ANIM_TAG_FLOWER, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = sPetalDanceBigFlowerAnimTable, + .images = NULL, + .affineAnims = sAromatherapyBigFlowerAffineAnimTable, + .callback = AnimFlyingParticle, +}; + +static const union AffineAnimCmd sSilverWindBigSparkAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(256, 256, 0, 0), + AFFINEANIMCMD_FRAME(0, 0, -10, 1), + AFFINEANIMCMD_JUMP(1), +}; + +static const union AffineAnimCmd sSilverWindMediumSparkAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(192, 192, 0, 0), + AFFINEANIMCMD_FRAME(0, 0, -12, 1), + AFFINEANIMCMD_JUMP(1), +}; + +static const union AffineAnimCmd sSilverWindSmallSparkAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(143, 143, 0, 0), + AFFINEANIMCMD_FRAME(0, 0, -15, 1), + AFFINEANIMCMD_JUMP(1), +}; + +static const union AffineAnimCmd *const sSilverWindBigSparkAffineAnimTable[] = +{ + sSilverWindBigSparkAffineAnimCmds, +}; + +static const union AffineAnimCmd *const sSilverWindMediumSparkAffineAnimTable[] = +{ + sSilverWindMediumSparkAffineAnimCmds, +}; + +static const union AffineAnimCmd *const sSilverWindSmallSparkAffineAnimTable[] = +{ + sSilverWindSmallSparkAffineAnimCmds, +}; + +const struct SpriteTemplate gSilverWindBigSparkSpriteTemplate = +{ + .tileTag = ANIM_TAG_SPARKLE_6, + .paletteTag = ANIM_TAG_SPARKLE_6, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sSilverWindBigSparkAffineAnimTable, + .callback = AnimFlyingParticle, +}; + +const struct SpriteTemplate gSilverWindMediumSparkSpriteTemplate = +{ + .tileTag = ANIM_TAG_SPARKLE_6, + .paletteTag = ANIM_TAG_SPARKLE_6, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sSilverWindMediumSparkAffineAnimTable, + .callback = AnimFlyingParticle, +}; + +const struct SpriteTemplate gSilverWindSmallSparkSpriteTemplate = +{ + .tileTag = ANIM_TAG_SPARKLE_6, + .paletteTag = ANIM_TAG_SPARKLE_6, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sSilverWindSmallSparkAffineAnimTable, + .callback = AnimFlyingParticle, +}; + +static const u16 sMagicalLeafBlendColors[] = +{ + RGB(31, 0, 0), + RGB(31, 19, 0), + RGB(31, 31, 0), + RGB(0, 31, 0), + RGB(5, 14, 31), + RGB(22, 10, 31), + RGB(22, 21, 31), +}; + +const struct SpriteTemplate gNeedleArmSpikeSpriteTemplate = +{ + .tileTag = ANIM_TAG_GREEN_SPIKE, + .paletteTag = ANIM_TAG_GREEN_SPIKE, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimNeedleArmSpike, +}; + +static const union AnimCmd sWhipAnimCmds1[] = +{ + ANIMCMD_FRAME(64, 3), + ANIMCMD_FRAME(80, 3), + ANIMCMD_FRAME(96, 3), + ANIMCMD_FRAME(112, 6), + ANIMCMD_END, +}; + +static const union AnimCmd sWhipAnimCmds2[] = +{ + ANIMCMD_FRAME(64, 3, .hFlip = TRUE), + ANIMCMD_FRAME(80, 3, .hFlip = TRUE), + ANIMCMD_FRAME(96, 3, .hFlip = TRUE), + ANIMCMD_FRAME(112, 6, .hFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd *const sWhipAnimTable[] = +{ + sWhipAnimCmds1, + sWhipAnimCmds2, +}; + +const struct SpriteTemplate gSlamHitSpriteTemplate = +{ + .tileTag = ANIM_TAG_SLAM_HIT, + .paletteTag = ANIM_TAG_SLAM_HIT, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sWhipAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimWhipHit, +}; + +const struct SpriteTemplate gVineWhipSpriteTemplate = +{ + .tileTag = ANIM_TAG_WHIP_HIT, + .paletteTag = ANIM_TAG_WHIP_HIT, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sWhipAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimWhipHit, +}; + +static const union AnimCmd sUnknown_83E3178[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(16, 4), + ANIMCMD_FRAME(32, 4), + ANIMCMD_FRAME(48, 4), + ANIMCMD_FRAME(64, 5), + ANIMCMD_END, +}; + +// Unused +static const union AnimCmd *const sUnknown_83E3190[] = +{ + sUnknown_83E3178, +}; + +// Unused +static const struct SpriteTemplate sUnknown_83E3194 = +{ + .tileTag = ANIM_TAG_HIT, + .paletteTag = ANIM_TAG_HIT, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sUnknown_83E3190, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A43F8, +}; + +// Unused +static const struct SpriteTemplate sUnknown_83E31AC = +{ + .tileTag = ANIM_TAG_HIT_2, + .paletteTag = ANIM_TAG_HIT_2, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sUnknown_83E3190, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A43F8, +}; + +static const union AffineAnimCmd sUnknown_83E31C4[] = +{ + AFFINEANIMCMD_FRAME(256, 256, 0, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sUnknown_83E31D4[] = +{ + AFFINEANIMCMD_FRAME(256, 256, 32, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sUnknown_83E31E4[] = +{ + AFFINEANIMCMD_FRAME(256, 256, 64, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sUnknown_83E31F4[] = +{ + AFFINEANIMCMD_FRAME(256, 256, 96, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sUnknown_83E3204[] = +{ + AFFINEANIMCMD_FRAME(256, 256, -128, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sUnknown_83E3214[] = +{ + AFFINEANIMCMD_FRAME(256, 256, -96, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sUnknown_83E3224[] = +{ + AFFINEANIMCMD_FRAME(256, 256, -64, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sUnknown_83E3234[] = +{ + AFFINEANIMCMD_FRAME(256, 256, -32, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const sUnknown_83E3244[] = +{ + sUnknown_83E31C4, + sUnknown_83E31D4, + sUnknown_83E31E4, + sUnknown_83E31F4, + sUnknown_83E3204, + sUnknown_83E3214, + sUnknown_83E3224, + sUnknown_83E3234, +}; + +// Unused +static const struct SpriteTemplate sUnknown_83E3264 = +{ + .tileTag = ANIM_TAG_HANDS_AND_FEET, + .paletteTag = ANIM_TAG_HANDS_AND_FEET, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sUnknown_83E3244, + .callback = sub_80A4494, +}; + +static const union AnimCmd sCuttingSliceAnimCmds[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(16, 5), + ANIMCMD_FRAME(32, 5), + ANIMCMD_FRAME(48, 5), + ANIMCMD_END, +}; + +static const union AnimCmd *const sCuttingSliceAnimTable[] = +{ + sCuttingSliceAnimCmds, +}; + +const struct SpriteTemplate gCuttingSliceSpriteTemplate = +{ + .tileTag = ANIM_TAG_CUT, + .paletteTag = ANIM_TAG_CUT, + .oam = &gOamData_AffineOff_ObjBlend_32x32, + .anims = sCuttingSliceAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimCuttingSlice, +}; + +const struct SpriteTemplate gAirCutterSliceSpriteTemplate = +{ + .tileTag = ANIM_TAG_CUT, + .paletteTag = ANIM_TAG_CUT, + .oam = &gOamData_AffineOff_ObjBlend_32x32, + .anims = sCuttingSliceAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimAirCutterSlice, +}; + +static const union AnimCmd sUnknown_83E32C4[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sUnknown_83E32CC[] = +{ + ANIMCMD_FRAME(4, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sUnknown_83E32D4[] = +{ + ANIMCMD_FRAME(8, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sUnknown_83E32DC[] = +{ + ANIMCMD_FRAME(12, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sUnknown_83E32E4[] = +{ + ANIMCMD_FRAME(16, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sUnknown_83E32EC[] = +{ + ANIMCMD_FRAME(20, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sUnknown_83E32F4[] = +{ + ANIMCMD_FRAME(0, 1, .vFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd sUnknown_83E32FC[] = +{ + ANIMCMD_FRAME(4, 1, .vFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd sUnknown_83E3304[] = +{ + ANIMCMD_FRAME(8, 1, .vFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd sUnknown_83E330C[] = +{ + ANIMCMD_FRAME(12, 1, .vFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd *const sUnknown_83E3314[] = +{ + sUnknown_83E32C4, + sUnknown_83E32CC, + sUnknown_83E32D4, + sUnknown_83E32DC, + sUnknown_83E32E4, + sUnknown_83E32EC, + sUnknown_83E32F4, + sUnknown_83E32FC, + sUnknown_83E3304, + sUnknown_83E330C, +}; + +// Unused +static const struct SpriteTemplate sUnknown_83E333C = +{ + .tileTag = ANIM_TAG_MUSIC_NOTES, + .paletteTag = ANIM_TAG_MUSIC_NOTES, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = sUnknown_83E3314, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A481C, +}; + +const struct SpriteTemplate gProtectWallSpriteTemplate = +{ + .tileTag = ANIM_TAG_PROTECT, + .paletteTag = ANIM_TAG_PROTECT, + .oam = &gOamData_AffineOff_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimProtect, +}; + +static const union AffineAnimCmd sMilkBottleAffineAnimCmds1[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sMilkBottleAffineAnimCmds2[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 2, 12), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 6), + AFFINEANIMCMD_FRAME(0x0, 0x0, -2, 24), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 6), + AFFINEANIMCMD_FRAME(0x0, 0x0, 2, 12), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd *const sMilkBottleAffineAnimTable[] = +{ + sMilkBottleAffineAnimCmds1, + sMilkBottleAffineAnimCmds2, +}; + +const struct SpriteTemplate gMilkBottleSpriteTemplate = +{ + .tileTag = ANIM_TAG_MILK_BOTTLE, + .paletteTag = ANIM_TAG_MILK_BOTTLE, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sMilkBottleAffineAnimTable, + .callback = AnimMilkBottle, +}; + +static const union AnimCmd sGrantingStarsAnimCmds[] = +{ + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(16, 7), + ANIMCMD_FRAME(32, 7), + ANIMCMD_FRAME(48, 7), + ANIMCMD_FRAME(64, 7), + ANIMCMD_FRAME(80, 7), + ANIMCMD_FRAME(96, 7), + ANIMCMD_FRAME(112, 7), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd *const sGrantingStarsAnimTable[] = +{ + sGrantingStarsAnimCmds, +}; + +const struct SpriteTemplate gGrantingStarsSpriteTemplate = +{ + .tileTag = ANIM_TAG_SPARKLE_2, + .paletteTag = ANIM_TAG_SPARKLE_2, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sGrantingStarsAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimGrantingStars, +}; + +const struct SpriteTemplate gSparklingStarsSpriteTemplate = +{ + .tileTag = ANIM_TAG_SPARKLE_2, + .paletteTag = ANIM_TAG_SPARKLE_2, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sGrantingStarsAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSparkingStars, +}; + +static const union AnimCmd sUnknown_83E3424[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(4, 10), + ANIMCMD_FRAME(8, 10), + ANIMCMD_FRAME(12, 10), + ANIMCMD_FRAME(16, 26), + ANIMCMD_FRAME(16, 5), + ANIMCMD_FRAME(20, 5), + ANIMCMD_FRAME(24, 15), + ANIMCMD_END, +}; + +static const union AnimCmd sUnknown_83E3448[] = +{ + ANIMCMD_FRAME(0, 10, .hFlip = TRUE), + ANIMCMD_FRAME(4, 10, .hFlip = TRUE), + ANIMCMD_FRAME(8, 10, .hFlip = TRUE), + ANIMCMD_FRAME(12, 10, .hFlip = TRUE), + ANIMCMD_FRAME(16, 26, .hFlip = TRUE), + ANIMCMD_FRAME(16, 5, .hFlip = TRUE), + ANIMCMD_FRAME(20, 5, .hFlip = TRUE), + ANIMCMD_FRAME(24, 15, .hFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd *const sUnknown_83E346C[] = +{ + sUnknown_83E3424, + sUnknown_83E3448, +}; + +// Unused +static const struct SpriteTemplate sUnknown_83E3474 = +{ + .tileTag = ANIM_TAG_BUBBLE_BURST, + .paletteTag = ANIM_TAG_BUBBLE_BURST, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = sUnknown_83E346C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A4E40, +}; + +static const union AnimCmd sSleepLetterZAnimCmds[] = +{ + ANIMCMD_FRAME(0, 40), + ANIMCMD_END, +}; + +static const union AnimCmd *const sSleepLetterZAnimTable[] = +{ + sSleepLetterZAnimCmds, +}; + +static const union AffineAnimCmd sSleepLetterZAffineAnimCmds1[] = +{ + AFFINEANIMCMD_FRAME(0x14, 0x14, -30, 0), + AFFINEANIMCMD_FRAME(0x8, 0x8, 1, 24), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sSleepLetterZAffineAnimCmds1_2[] = +{ + AFFINEANIMCMD_LOOP(0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 24), + AFFINEANIMCMD_LOOP(10), +}; + +static const union AffineAnimCmd sSleepLetterZAffineAnimCmds2[] = +{ + AFFINEANIMCMD_FRAME(0x14, 0x14, 30, 0), + AFFINEANIMCMD_FRAME(0x8, 0x8, -1, 24), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sSleepLetterZAffineAnimCmds2_2[] = +{ + AFFINEANIMCMD_LOOP(0), + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 24), + AFFINEANIMCMD_LOOP(10), +}; + +static const union AffineAnimCmd *const sSleepLetterZAffineAnimTable[] = +{ + sSleepLetterZAffineAnimCmds1, + sSleepLetterZAffineAnimCmds2, +}; + +const struct SpriteTemplate gSleepLetterZSpriteTemplate = +{ + .tileTag = ANIM_TAG_LETTER_Z, + .paletteTag = ANIM_TAG_LETTER_Z, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = sSleepLetterZAnimTable, + .images = NULL, + .affineAnims = sSleepLetterZAffineAnimTable, + .callback = AnimSleepLetterZ, +}; + +const struct SpriteTemplate gLockOnTargetSpriteTemplate = +{ + .tileTag = ANIM_TAG_LOCK_ON, + .paletteTag = ANIM_TAG_LOCK_ON, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimLockOnTarget, +}; + +const struct SpriteTemplate gLockOnMoveTargetSpriteTemplate = +{ + .tileTag = ANIM_TAG_LOCK_ON, + .paletteTag = ANIM_TAG_LOCK_ON, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimLockOnMoveTarget, +}; + +static const s8 sInclineMonCoordTable[][2] = +{ + { 64, 64}, + { 0, -64}, + {-64, 64}, + { 32, -32}, +}; + +const struct SpriteTemplate gBowMonSpriteTemplate = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimBowMon, +}; + +// Unused +static const struct SpriteTemplate sUnknown_83E3568 = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A5590, +}; + +static const union AnimCmd sSlashSliceAnimCmds1[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(16, 4), + ANIMCMD_FRAME(32, 4), + ANIMCMD_FRAME(48, 4), + ANIMCMD_END, +}; + +static const union AnimCmd sSlashSliceAnimCmds2[] = +{ + ANIMCMD_FRAME(48, 4), + ANIMCMD_END, +}; + +static const union AnimCmd *const sSlashSliceAnimTable[] = +{ + sSlashSliceAnimCmds1, + sSlashSliceAnimCmds2, +}; + +const struct SpriteTemplate gSlashSliceSpriteTemplate = +{ + .tileTag = ANIM_TAG_SLASH, + .paletteTag = ANIM_TAG_SLASH, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sSlashSliceAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSlashSlice, +}; + +const struct SpriteTemplate gFalseSwipeSliceSpriteTemplate = +{ + .tileTag = ANIM_TAG_SLASH_2, + .paletteTag = ANIM_TAG_SLASH_2, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sSlashSliceAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimFalseSwipeSlice, +}; + +const struct SpriteTemplate gFalseSwipePositionedSliceSpriteTemplate = +{ + .tileTag = ANIM_TAG_SLASH_2, + .paletteTag = ANIM_TAG_SLASH_2, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sSlashSliceAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimFalseSwipePositionedSlice, +}; + +static const union AnimCmd sEndureEnergyAnimCmds[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(8, 12), + ANIMCMD_FRAME(16, 4), + ANIMCMD_FRAME(24, 4), + ANIMCMD_END, +}; + +static const union AnimCmd *const sEndureEnergyAnimTable[] = +{ + sEndureEnergyAnimCmds, +}; + +const struct SpriteTemplate gEndureEnergySpriteTemplate = +{ + .tileTag = ANIM_TAG_FOCUS_ENERGY, + .paletteTag = ANIM_TAG_FOCUS_ENERGY, + .oam = &gOamData_AffineOff_ObjNormal_16x32, + .anims = sEndureEnergyAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimEndureEnergy, +}; + +static const union AnimCmd sSharpenSphereAnimCmds[] = +{ + ANIMCMD_FRAME(0, 18), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(16, 18), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(16, 6), + ANIMCMD_FRAME(32, 18), + ANIMCMD_FRAME(16, 6), + ANIMCMD_FRAME(32, 6), + ANIMCMD_FRAME(48, 18), + ANIMCMD_FRAME(32, 6), + ANIMCMD_FRAME(48, 6), + ANIMCMD_FRAME(64, 18), + ANIMCMD_FRAME(48, 6), + ANIMCMD_FRAME(64, 54), + ANIMCMD_END, +}; + +static const union AnimCmd *const sSharpenSphereAnimTable[] = +{ + sSharpenSphereAnimCmds, +}; + +const struct SpriteTemplate gSharpenSphereSpriteTemplate = +{ + .tileTag = ANIM_TAG_SPHERE_TO_CUBE, + .paletteTag = ANIM_TAG_SPHERE_TO_CUBE, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sSharpenSphereAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSharpenSphere, +}; + +const struct SpriteTemplate gOctazookaBallSpriteTemplate = +{ + .tileTag = ANIM_TAG_BLACK_BALL, + .paletteTag = ANIM_TAG_BLACK_BALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = TranslateAnimSpriteToTargetMonLocation, +}; + +static const union AnimCmd sOctazookaAnimCmds[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(48, 3), + ANIMCMD_FRAME(64, 3), + ANIMCMD_END, +}; + +static const union AnimCmd *const sOctazookaAnimTable[] = +{ + sOctazookaAnimCmds, +}; + +const struct SpriteTemplate gOctazookaSmokeSpriteTemplate = +{ + .tileTag = ANIM_TAG_GRAY_SMOKE, + .paletteTag = ANIM_TAG_GRAY_SMOKE, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sOctazookaAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSpriteOnMonPos, +}; + +static const union AnimCmd sConversionAnimCmds[] = +{ + ANIMCMD_FRAME(3, 5), + ANIMCMD_FRAME(2, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +static const union AnimCmd *const sConversionAnimTable[] = +{ + sConversionAnimCmds, +}; + +static const union AffineAnimCmd sConversionAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const sConversionAffineAnimTable[] = +{ + sConversionAffineAnimCmds, +}; + +const struct SpriteTemplate gConversionSpriteTemplate = +{ + .tileTag = ANIM_TAG_CONVERSION, + .paletteTag = ANIM_TAG_CONVERSION, + .oam = &gOamData_AffineDouble_ObjBlend_8x8, + .anims = sConversionAnimTable, + .images = NULL, + .affineAnims = sConversionAffineAnimTable, + .callback = AnimConversion, +}; + +static const union AnimCmd sConversion2AnimCmds[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(2, 5), + ANIMCMD_FRAME(3, 5), + ANIMCMD_END, +}; + +static const union AnimCmd *const sConversion2AnimTable[] = +{ + sConversion2AnimCmds, +}; + +const struct SpriteTemplate gConversion2SpriteTemplate = +{ + .tileTag = ANIM_TAG_CONVERSION, + .paletteTag = ANIM_TAG_CONVERSION, + .oam = &gOamData_AffineDouble_ObjBlend_8x8, + .anims = sConversion2AnimTable, + .images = NULL, + .affineAnims = sConversionAffineAnimTable, + .callback = AnimConversion2, +}; + +const struct SpriteTemplate gMoonSpriteTemplate = +{ + .tileTag = ANIM_TAG_MOON, + .paletteTag = ANIM_TAG_MOON, + .oam = &gOamData_AffineOff_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMoon, +}; + +static const union AnimCmd sMoonlightSparkleAnimCmds[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(4, 8), + ANIMCMD_FRAME(8, 8), + ANIMCMD_FRAME(12, 8), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd *const sMoonlightSparkleAnimTable[] = +{ + sMoonlightSparkleAnimCmds, +}; + +const struct SpriteTemplate gMoonlightSparkleSpriteTemplate = +{ + .tileTag = ANIM_TAG_GREEN_SPARKLE, + .paletteTag = ANIM_TAG_GREEN_SPARKLE, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = sMoonlightSparkleAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMoonlightSparkle, +}; + +static const union AnimCmd sHealingBlueStarAnimCmds[] = +{ + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(16, 2), + ANIMCMD_FRAME(32, 2), + ANIMCMD_FRAME(48, 3), + ANIMCMD_FRAME(64, 5), + ANIMCMD_FRAME(80, 3), + ANIMCMD_FRAME(96, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_END, +}; + +static const union AnimCmd *const sHealingBlueStarAnimTable[] = +{ + sHealingBlueStarAnimCmds, +}; + +const struct SpriteTemplate gHealingBlueStarSpriteTemplate = +{ + .tileTag = ANIM_TAG_BLUE_STAR, + .paletteTag = ANIM_TAG_BLUE_STAR, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sHealingBlueStarAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSpriteOnMonPos, +}; + +const struct SpriteTemplate gHornHitSpriteTemplate = +{ + .tileTag = ANIM_TAG_HORN_HIT, + .paletteTag = ANIM_TAG_HORN_HIT, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimHornHit, +}; + +static const union AnimCmd sSuperFangAnimCmds[] = +{ + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(16, 2), + ANIMCMD_FRAME(32, 2), + ANIMCMD_FRAME(48, 2), + ANIMCMD_END, +}; + +static const union AnimCmd *const sSuperFangAnimTable[] = +{ + sSuperFangAnimCmds, +}; + +const struct SpriteTemplate gSuperFangSpriteTemplate = +{ + .tileTag = ANIM_TAG_FANG_ATTACK, + .paletteTag = ANIM_TAG_FANG_ATTACK, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sSuperFangAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSuperFang, +}; + +static const union AnimCmd sWavyMusicNotesAnimCmds1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +static const union AnimCmd sWavyMusicNotesAnimCmds2[] = +{ + ANIMCMD_FRAME(4, 10), + ANIMCMD_END, +}; + +static const union AnimCmd sWavyMusicNotesAnimCmds3[] = +{ + ANIMCMD_FRAME(8, 41), + ANIMCMD_END, +}; + +static const union AnimCmd sWavyMusicNotesAnimCmds4[] = +{ + ANIMCMD_FRAME(12, 10), + ANIMCMD_END, +}; + +static const union AnimCmd sWavyMusicNotesAnimCmds5[] = +{ + ANIMCMD_FRAME(16, 10), + ANIMCMD_END, +}; + +static const union AnimCmd sWavyMusicNotesAnimCmds6[] = +{ + ANIMCMD_FRAME(20, 10), + ANIMCMD_END, +}; + +static const union AnimCmd sWavyMusicNotesAnimCmds7[] = +{ + ANIMCMD_FRAME(0, 10, .vFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd sWavyMusicNotesAnimCmds8[] = +{ + ANIMCMD_FRAME(4, 10, .vFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd *const gMusicNotesAnimTable[] = +{ + sWavyMusicNotesAnimCmds1, + sWavyMusicNotesAnimCmds2, + sWavyMusicNotesAnimCmds3, + sWavyMusicNotesAnimCmds4, + sWavyMusicNotesAnimCmds5, + sWavyMusicNotesAnimCmds6, + sWavyMusicNotesAnimCmds7, + sWavyMusicNotesAnimCmds8, +}; + +static const union AffineAnimCmd sWavyMusicNotesAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(0xC, 0xC, 0, 16), + AFFINEANIMCMD_FRAME(0xFFF4, 0xFFF4, 0, 16), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd *const sMusicNotesAffineAnimTable[] = +{ + sWavyMusicNotesAffineAnimCmds, +}; + +const struct SpriteTemplate gWavyMusicNotesSpriteTemplate = +{ + .tileTag = ANIM_TAG_MUSIC_NOTES, + .paletteTag = ANIM_TAG_MUSIC_NOTES, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = gMusicNotesAnimTable, + .images = NULL, + .affineAnims = sMusicNotesAffineAnimTable, + .callback = AnimWavyMusicNotes, +}; + +static const u16 sParticlesColorBlendTable[][6] = +{ + {ANIM_TAG_MUSIC_NOTES, RGB_WHITE, RGB(31, 26, 28), RGB(31, 22, 26), RGB(31, 17, 24), RGB(31, 13, 22)}, + {ANIM_TAG_BENT_SPOON, RGB_WHITE, RGB(25, 31, 26), RGB(20, 31, 21), RGB(15, 31, 16), RGB(10, 31, 12)}, + {ANIM_TAG_SPHERE_TO_CUBE, RGB_WHITE, RGB(31, 31, 24), RGB(31, 31, 17), RGB(31, 31, 10), RGB(31, 31, 3)}, + {ANIM_TAG_LARGE_FRESH_EGG, RGB_WHITE, RGB(26, 28, 31), RGB(21, 26, 31), RGB(16, 24, 31), RGB(12, 22, 31)}, +}; + +const struct SpriteTemplate gFastFlyingMusicNotesSpriteTemplate = +{ + .tileTag = ANIM_TAG_MUSIC_NOTES, + .paletteTag = ANIM_TAG_MUSIC_NOTES, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = gMusicNotesAnimTable, + .images = NULL, + .affineAnims = sMusicNotesAffineAnimTable, + .callback = AnimFlyingMusicNotes, +}; + +const struct SpriteTemplate gBellyDrumHandSpriteTemplate = +{ + .tileTag = ANIM_TAG_PURPLE_HAND_OUTLINE, + .paletteTag = ANIM_TAG_PURPLE_HAND_OUTLINE, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimBellyDrumHand, +}; + +static const union AffineAnimCmd sSlowFlyingMusicNotesAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(0xA0, 0xA0, 0, 0), + AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 1), + AFFINEANIMCMD_JUMP(1), +}; + +static const union AffineAnimCmd *const sSlowFlyinsMusicNotesAffineAnimTable[] = +{ + sSlowFlyingMusicNotesAffineAnimCmds, +}; + +const struct SpriteTemplate gSlowFlyingMusicNotesSpriteTemplate = +{ + .tileTag = ANIM_TAG_MUSIC_NOTES, + .paletteTag = ANIM_TAG_MUSIC_NOTES, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = gMusicNotesAnimTable, + .images = NULL, + .affineAnims = sSlowFlyinsMusicNotesAffineAnimTable, + .callback = AnimSlowFlyingMusicNotes, +}; + +static const union AnimCmd sMetronomeThroughtBubbleAnimCmds1[] = +{ + ANIMCMD_FRAME(0, 2, .hFlip = TRUE), + ANIMCMD_FRAME(16, 2, .hFlip = TRUE), + ANIMCMD_FRAME(32, 2, .hFlip = TRUE), + ANIMCMD_FRAME(48, 2, .hFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd sMetronomeThroughtBubbleAnimCmds3[] = +{ + ANIMCMD_FRAME(48, 2, .hFlip = TRUE), + ANIMCMD_FRAME(32, 2, .hFlip = TRUE), + ANIMCMD_FRAME(16, 2, .hFlip = TRUE), + ANIMCMD_FRAME(0, 2, .hFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd sMetronomeThroughtBubbleAnimCmds2[] = +{ + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(16, 2), + ANIMCMD_FRAME(32, 2), + ANIMCMD_FRAME(48, 2), + ANIMCMD_END, +}; + +static const union AnimCmd sMetronomeThroughtBubbleAnimCmds4[] = +{ + ANIMCMD_FRAME(48, 2), + ANIMCMD_FRAME(32, 2), + ANIMCMD_FRAME(16, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_END, +}; + +static const union AnimCmd *const sMetronomeThroughtBubbleAnimTable[] = +{ + sMetronomeThroughtBubbleAnimCmds1, + sMetronomeThroughtBubbleAnimCmds2, + sMetronomeThroughtBubbleAnimCmds3, + sMetronomeThroughtBubbleAnimCmds4, +}; + +const struct SpriteTemplate gThoughtBubbleSpriteTemplate = +{ + .tileTag = ANIM_TAG_THOUGHT_BUBBLE, + .paletteTag = ANIM_TAG_THOUGHT_BUBBLE, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sMetronomeThroughtBubbleAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimThoughtBubble, +}; + +static const union AffineAnimCmd sMetronomeFingerAffineAnimCmds1[] = +{ + AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0), + AFFINEANIMCMD_FRAME(0x1E, 0x1E, 0, 8), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sMetronomeFingerAffineAnimCmds2[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 11), + AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 11), + AFFINEANIMCMD_LOOP(2), + AFFINEANIMCMD_FRAME(-0x1E, -0x1E, 0, 8), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sMetronomeFingerAffineAnimCmds2_2[] = +{ + AFFINEANIMCMD_FRAME(16, 16, 0, 0), + AFFINEANIMCMD_FRAME(30, 30, 0, 8), + AFFINEANIMCMD_FRAME(0, 0, 0, 16), + AFFINEANIMCMD_LOOP(0), + AFFINEANIMCMD_FRAME(0, 0, 4, 11), + AFFINEANIMCMD_FRAME(0, 0, -4, 11), + AFFINEANIMCMD_LOOP(2), + AFFINEANIMCMD_FRAME(-30, -30, 0, 8), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const sMetronomeFingerAffineAnimTable[] = +{ + sMetronomeFingerAffineAnimCmds1, + sMetronomeFingerAffineAnimCmds2, +}; + +const struct SpriteTemplate gMetronomeFingerSpriteTemplate = +{ + .tileTag = ANIM_TAG_FINGER, + .paletteTag = ANIM_TAG_FINGER, + .oam = &gOamData_AffineDouble_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sMetronomeFingerAffineAnimTable, + .callback = AnimMetronomeFinger, +}; + +const struct SpriteTemplate gFollowMeFingerSpriteTemplate = +{ + .tileTag = ANIM_TAG_FINGER, + .paletteTag = ANIM_TAG_FINGER, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sMetronomeFingerAffineAnimTable, + .callback = AnimFollowMeFinger, +}; + +static const union AnimCmd sTauntFingerAnimCmds1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sTauntFingerAnimCmds2[] = +{ + ANIMCMD_FRAME(0, 1, .hFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd sTauntFingerAnimCmds3[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(16, 4), + ANIMCMD_FRAME(32, 4), + ANIMCMD_FRAME(16, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(16, 4), + ANIMCMD_FRAME(32, 4), + ANIMCMD_END, +}; + +static const union AnimCmd sTauntFingerAnimCmds4[] = +{ + ANIMCMD_FRAME(0, 4, .hFlip = TRUE), + ANIMCMD_FRAME(16, 4, .hFlip = TRUE), + ANIMCMD_FRAME(32, 4, .hFlip = TRUE), + ANIMCMD_FRAME(16, 4, .hFlip = TRUE), + ANIMCMD_FRAME(0, 4, .hFlip = TRUE), + ANIMCMD_FRAME(16, 4, .hFlip = TRUE), + ANIMCMD_FRAME(32, 4, .hFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd *const sTauntFingerAnimTable[] = +{ + sTauntFingerAnimCmds1, + sTauntFingerAnimCmds2, + sTauntFingerAnimCmds3, + sTauntFingerAnimCmds4, +}; + +const struct SpriteTemplate gTauntFingerSpriteTemplate = +{ + .tileTag = ANIM_TAG_FINGER_2, + .paletteTag = ANIM_TAG_FINGER_2, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sTauntFingerAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimTauntFinger, +}; + +// Functions +// Animates the falling particles that horizontally wave back and forth. +// Used by Sleep Powder, Stun Spore, and Poison Powder. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: total duration in frames +// arg 3: vertical movement speed (sub-pixel value) +// arg 4: wave amplitude +// arg 5: wave speed +void AnimMovePowderParticle(struct Sprite* sprite) +{ + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[3]; + + if (GetBattlerSide(gBattleAnimAttacker)) + { + sprite->data[3] = -gBattleAnimArgs[4]; + } + else + { + sprite->data[3] = gBattleAnimArgs[4]; + } + + sprite->data[4] = gBattleAnimArgs[5]; + sprite->callback = AnimMovePowderParticleStep; +} + +static void AnimMovePowderParticleStep(struct Sprite* sprite) +{ + if (sprite->data[0] > 0) + { + sprite->data[0]--; + sprite->pos2.y = sprite->data[2] >> 8; + sprite->data[2] += sprite->data[1]; + sprite->pos2.x = Sin(sprite->data[5], sprite->data[3]); + sprite->data[5] = (sprite->data[5] + sprite->data[4]) & 0xFF; + } + else + { + DestroyAnimSprite(sprite); + } +} + +// Moves an energy orb towards the center of the mon. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: duration +void AnimPowerAbsorptionOrb(struct Sprite* sprite) +{ + InitSpritePosToAnimAttacker(sprite, TRUE); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); +} + +// Moves an orb in a straight line towards the target mon. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: duration +// arg 3: sprite anim number +void AnimSolarbeamBigOrb(struct Sprite* sprite) +{ + InitSpritePosToAnimAttacker(sprite, TRUE); + StartSpriteAnim(sprite, gBattleAnimArgs[3]); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +// Moves a small orb in a wavy pattern towards the target mon. +// The small orb "circles" the big orbs in AnimSolarbeamBigOrb. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: duration +// arg 3: initial wave offset +void AnimSolarbeamSmallOrb(struct Sprite* sprite) +{ + InitSpritePosToAnimAttacker(sprite, TRUE); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + InitAnimLinearTranslation(sprite); + sprite->data[5] = gBattleAnimArgs[3]; + sprite->callback = AnimSolarbeamSmallOrbStep; + sprite->callback(sprite); +} + +static void AnimSolarbeamSmallOrbStep(struct Sprite* sprite) +{ + if (AnimTranslateLinear(sprite)) + { + DestroySprite(sprite); + } + else + { + if (sprite->data[5] > 0x7F) + sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimTarget) + 1; + else + sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimTarget) + 6; + + sprite->pos2.x += Sin(sprite->data[5], 5); + sprite->pos2.y += Cos(sprite->data[5], 14); + sprite->data[5] = (sprite->data[5] + 15) & 0xFF; + } +} + +// Creates 15 small secondary orbs used in the solarbeam anim effect. +// There is a 7-frame delay between each of them. +// No args. +void AnimTask_CreateSmallSolarbeamOrbs(u8 taskId) +{ + if (--gTasks[taskId].data[0] == -1) + { + gTasks[taskId].data[1]++; + gTasks[taskId].data[0] = 6; + gBattleAnimArgs[0] = 15; + gBattleAnimArgs[1] = 0; + gBattleAnimArgs[2] = 80; + gBattleAnimArgs[3] = 0; + CreateSpriteAndAnimate(&gSolarbeamSmallOrbSpriteTemplate, 0, 0, GetBattlerSpriteSubpriority(gBattleAnimTarget) + 1); + } + + if (gTasks[taskId].data[1] == 15) + DestroyAnimVisualTask(taskId); +} + +// Moves an orb from the target mon to the attacking mon in an arc-like fashion. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: wave amplitude +// arg 3: wave period (lower means faster wave) +void AnimAbsorptionOrb(struct Sprite* sprite) +{ + InitSpritePosToAnimTarget(sprite, TRUE); + sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + sprite->data[5] = gBattleAnimArgs[2]; + InitAnimArcTranslation(sprite); + sprite->callback = AnimAbsorptionOrbStep; +} + +static void AnimAbsorptionOrbStep(struct Sprite* sprite) +{ + if (TranslateAnimHorizontalArc(sprite)) + DestroyAnimSprite(sprite); +} + +// Moves an orb in a wave-like fashion towards the target mon. The wave's +// properties and the sprite anim are randomly determined. +void AnimHyperBeamOrb(struct Sprite* sprite) +{ + u16 speed; + u16 animNum = Random(); + + StartSpriteAnim(sprite, animNum % 8); + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + sprite->pos1.x -= 20; + else + sprite->pos1.x += 20; + + speed = Random(); + sprite->data[0] = (speed & 31) + 64; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + InitAnimFastLinearTranslationWithSpeed(sprite); + sprite->data[5] = Random() & 0xFF; + sprite->data[6] = sprite->subpriority; + sprite->callback = AnimHyperBeamOrbStep; + sprite->callback(sprite); +} + +static void AnimHyperBeamOrbStep(struct Sprite* sprite) +{ + if (AnimFastTranslateLinear(sprite)) + { + DestroyAnimSprite(sprite); + } + else + { + sprite->pos2.y += Cos(sprite->data[5], 12); + if (sprite->data[5] < 0x7F) + sprite->subpriority = sprite->data[6]; + else + sprite->subpriority = sprite->data[6] + 1; + + sprite->data[5] += 24; + sprite->data[5] &= 0xFF; + } +} + +// seed (sprouts a sapling from a seed.) +// Used by Leech Seed. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: target x pixel offset +// arg 3: target y pixel offset +// arg 4: duration +// arg 5: wave amplitude +void AnimLeechSeed(struct Sprite* sprite) +{ + InitSpritePosToAnimAttacker(sprite, TRUE); + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + gBattleAnimArgs[3]; + sprite->data[5] = gBattleAnimArgs[5]; + InitAnimArcTranslation(sprite); + sprite->callback = AnimLeechSeedStep; +} + +static void AnimLeechSeedStep(struct Sprite* sprite) +{ + if (TranslateAnimHorizontalArc(sprite)) + { + sprite->invisible = TRUE; + sprite->data[0] = 10; + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, AnimLeechSeedSprouts); + } +} + +static void AnimLeechSeedSprouts(struct Sprite* sprite) +{ + sprite->invisible = FALSE; + StartSpriteAnim(sprite, 1); + sprite->data[0] = 60; + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +// Moves a spore particle in a halo around the target mon. +// The sprite's priority is updated to give the effect of going +// behind the mon's sprite. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: initial wave offset +// arg 3: duration +// arg 4: blend (0 = off, 1 = on) +void AnimSporeParticle(struct Sprite* sprite) +{ + InitSpritePosToAnimTarget(sprite, TRUE); + StartSpriteAnim(sprite, gBattleAnimArgs[4]); + if (gBattleAnimArgs[4] == 1) + sprite->oam.objMode = ST_OAM_OBJ_BLEND; + + sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[1] = gBattleAnimArgs[2]; + sprite->callback = AnimSporeParticleStep; + sprite->callback(sprite); +} + +static void AnimSporeParticleStep(struct Sprite* sprite) +{ + sprite->pos2.x = Sin(sprite->data[1], 32); + sprite->pos2.y = Cos(sprite->data[1], -3) + ((sprite->data[2] += 24) >> 8); + if ((u16)(sprite->data[1] - 0x40) < 0x80) + { + sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget); + } + else + { + u8 priority = GetBattlerSpriteBGPriority(gBattleAnimTarget) + 1; + if (priority > 3) + priority = 3; + + sprite->oam.priority = priority; + } + + sprite->data[1] += 2; + sprite->data[1] &= 0xFF; + if (--sprite->data[0] == -1) + DestroyAnimSprite(sprite); +} + +// In a double battle, Updates the mon sprite background priorities to allow +// the circling effect controlled by AnimSporeParticle. +// No args. +void AnimTask_SporeDoubleBattle(u8 taskId) +{ + if (IsContest() || !IsDoubleBattle()) + { + DestroyAnimVisualTask(taskId); + } + else + { + if (GetBattlerSpriteBGPriorityRank(gBattleAnimTarget) == 1) + SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 3); + else + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); + + DestroyAnimVisualTask(taskId); + } +} + +// Rotates a big flower around the attacking mon, and slowly floats +// downward. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: target y pixel offset +// arg 3: duration +void AnimPetalDanceBigFlower(struct Sprite* sprite) +{ + InitSpritePosToAnimAttacker(sprite, FALSE); + sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sprite->pos1.x; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2]; + InitAnimLinearTranslation(sprite); + sprite->data[5] = 0x40; + sprite->callback = AnimPetalDanceBigFlowerStep; + sprite->callback(sprite); +} + +static void AnimPetalDanceBigFlowerStep(struct Sprite* sprite) +{ + if (!AnimTranslateLinear(sprite)) + { + sprite->pos2.x += Sin(sprite->data[5], 32); + sprite->pos2.y += Cos(sprite->data[5], -5); + if ((u16)(sprite->data[5] - 0x40) < 0x80) + sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 1; + else + sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) + 1; + + sprite->data[5] = (sprite->data[5] + 5) & 0xFF; + } + else + { + DestroyAnimSprite(sprite); + } +} + +// Slowly floats a small flower downard, while swaying from right to left. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: target y pixel offset +// arg 3: duration +void AnimPetalDanceSmallFlower(struct Sprite* sprite) +{ + InitSpritePosToAnimAttacker(sprite, TRUE); + sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sprite->pos1.x; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2]; + InitAnimLinearTranslation(sprite); + sprite->data[5] = 0x40; + sprite->callback = AnimPetalDanceSmallFlowerStep; + sprite->callback(sprite); +} + +static void AnimPetalDanceSmallFlowerStep(struct Sprite* sprite) +{ + if (!AnimTranslateLinear(sprite)) + { + sprite->pos2.x += Sin(sprite->data[5], 8); + if ((u16)(sprite->data[5] - 59) < 5 || (u16)(sprite->data[5] - 187) < 5) + sprite->oam.matrixNum ^= ST_OAM_HFLIP; + + sprite->data[5] += 5; + sprite->data[5] &= 0xFF; + } + else + { + DestroyAnimSprite(sprite); + } +} + +// Shoots a leaf upward, then floats it downward while swaying back and forth. +// arg 0: upward x delta per frame +// arg 1: upward y delta per frame +// arg 2: upward duration +void AnimRazorLeafParticle(struct Sprite* sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + sprite->data[0] = gBattleAnimArgs[0]; + sprite->data[1] = gBattleAnimArgs[1]; + sprite->data[2] = gBattleAnimArgs[2]; + sprite->callback = AnimRazorLeafParticleStep1; +} + +static void AnimRazorLeafParticleStep1(struct Sprite* sprite) +{ + if (!sprite->data[2]) + { + if (sprite->data[1] & 1) + { + sprite->data[0] = 0x80; + sprite->data[1] = 0; + sprite->data[2] = 0; + } + else + { + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2] = 0; + } + sprite->callback = AnimRazorLeafParticleStep2; + } + else + { + sprite->data[2]--; + sprite->pos1.x += sprite->data[0]; + sprite->pos1.y += sprite->data[1]; + } +} + +static void AnimRazorLeafParticleStep2(struct Sprite* sprite) +{ + if (GetBattlerSide(gBattleAnimAttacker)) + sprite->pos2.x = -Sin(sprite->data[0], 25); + else + sprite->pos2.x = Sin(sprite->data[0], 25); + + sprite->data[0] += 2; + sprite->data[0] &= 0xFF; + sprite->data[1]++; + if (!(sprite->data[1] & 1)) + sprite->pos2.y++; + + if (sprite->data[1] > 80) + DestroyAnimSprite(sprite); +} + +// Animates a sprite that moves linearly from one location to another, with a +// single-cycle sine wave added to the y position along the way. +// Used by Razor Leaf and Magical Leaf. +// arg 0: initial x offset +// arg 1: initial y offset +// arg 2: target x offset +// arg 3: target y offset +// arg 4: translation duration +// arg 5: wave amplitude +// arg 6: target between double battle opponents (boolean) +void AnimTranslateLinearSingleSineWave(struct Sprite* sprite) +{ + InitSpritePosToAnimAttacker(sprite, TRUE); + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + + sprite->data[0] = gBattleAnimArgs[4]; + if (!gBattleAnimArgs[6]) + { + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; + } + else + { + SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->data[2], &sprite->data[4]); + sprite->data[2] += gBattleAnimArgs[2]; + sprite->data[4] += gBattleAnimArgs[3]; + } + + sprite->data[5] = gBattleAnimArgs[5]; + InitAnimArcTranslation(sprite); + if (GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget)) + sprite->data[0] = 1; + else + sprite->data[0] = 0; + + sprite->callback = AnimTranslateLinearSingleSineWaveStep; +} + +static void AnimTranslateLinearSingleSineWaveStep(struct Sprite* sprite) +{ + bool8 destroy = FALSE; + s16 a = sprite->data[0]; + s16 b = sprite->data[7]; + s16 r0; + + sprite->data[0] = 1; + TranslateAnimHorizontalArc(sprite); + r0 = sprite->data[7]; + sprite->data[0] = a; + if (b > 200 && r0 < 56 && sprite->oam.affineParam == 0) + sprite->oam.affineParam++; + + if (sprite->oam.affineParam != 0 && sprite->data[0] != 0) + { + sprite->invisible ^= 1; + sprite->oam.affineParam++; + if (sprite->oam.affineParam == 30) + destroy = TRUE; + } + + if (sprite->pos1.x + sprite->pos2.x > 256 + || sprite->pos1.x + sprite->pos2.x < -16 + || sprite->pos1.y + sprite->pos2.y > 160 + || sprite->pos1.y + sprite->pos2.y < -16) + destroy = TRUE; + + if (destroy) + DestroyAnimSprite(sprite); +} + +// Animates particles in the Twister move animation. +// arg 0: duration +// arg 1: total y delta (the particles rise upward) +// arg 2: wave period (higher means faster wave) +// arg 3: wave amplitude +// arg 4: speedup frame (particles move faster at the end of the animation) +void AnimMoveTwisterParticle(struct Sprite* sprite) +{ + if (!IsContest() && IsDoubleBattle() == TRUE) + SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->pos1.x, &sprite->pos1.y); + + sprite->pos1.y += 32; + sprite->data[0] = gBattleAnimArgs[0]; + sprite->data[1] = gBattleAnimArgs[1]; + sprite->data[2] = gBattleAnimArgs[2]; + sprite->data[3] = gBattleAnimArgs[3]; + sprite->data[4] = gBattleAnimArgs[4]; + sprite->callback = AnimMoveTwisterParticleStep; +} + +static void AnimMoveTwisterParticleStep(struct Sprite* sprite) +{ + if (sprite->data[1] == 0xFF) + { + sprite->pos1.y -= 2; + } + else if (sprite->data[1] > 0) + { + sprite->pos1.y -= 2; + sprite->data[1] -= 2; + } + + sprite->data[5] += sprite->data[2]; + if (sprite->data[0] < sprite->data[4]) + sprite->data[5] += sprite->data[2]; + + sprite->data[5] &= 0xFF; + sprite->pos2.x = Cos(sprite->data[5], sprite->data[3]); + sprite->pos2.y = Sin(sprite->data[5], 5); + if (sprite->data[5] < 0x80) + sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget) - 1; + else + sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget) + 1; + + if (--sprite->data[0] == 0) + DestroyAnimSprite(sprite); +} + +// Squeezes a constricting "rope" several times via affine animations. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: affine anim num +// arg 3: num squeezes +void AnimConstrictBinding(struct Sprite* sprite) +{ + InitSpritePosToAnimTarget(sprite, FALSE); + sprite->affineAnimPaused = TRUE; + StartSpriteAffineAnim(sprite, gBattleAnimArgs[2]); + sprite->data[6] = gBattleAnimArgs[2]; + sprite->data[7] = gBattleAnimArgs[3]; + sprite->callback = AnimConstrictBindingStep1; +} + +static void AnimConstrictBindingStep1(struct Sprite* sprite) +{ + u8 spriteId; + + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + { + sprite->affineAnimPaused = FALSE; + spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); + sprite->data[0] = 0x100; + sprite->callback = AnimConstrictBindingStep2; + } +} + +static void AnimConstrictBindingStep2(struct Sprite* sprite) +{ + u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); + + if (!sprite->data[2]) + sprite->data[0] += 11; + else + sprite->data[0] -= 11; + + if (++sprite->data[1] == 6) + { + sprite->data[1] = 0; + sprite->data[2] ^= 1; + } + + if (sprite->affineAnimEnded) + { + if (--sprite->data[7] > 0) + StartSpriteAffineAnim(sprite, sprite->data[6]); + else + DestroyAnimSprite(sprite); + } +} + +void sub_80A2F0C(u8 taskId) +{ + u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); + + if (gSprites[spriteId].invisible) + { + DestroyAnimVisualTask(taskId); + } + else + { + PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_BLEND); + gTasks[taskId].data[0] = gBattleAnimArgs[0]; + gTasks[taskId].data[1] = gBattleAnimArgs[1]; + gTasks[taskId].data[11] = 0x100; + gTasks[taskId].func = AnimTask_DuplicateAndShrinkToPosStep1; + } +} + +static void AnimTask_DuplicateAndShrinkToPosStep1(u8 taskId) +{ + u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); + + gTasks[taskId].data[10] += gTasks[taskId].data[0]; + gSprites[spriteId].pos2.x = gTasks[taskId].data[10] >> 8; + if (GetBattlerSide(gBattleAnimTarget) != B_SIDE_PLAYER) + gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x; + + gTasks[taskId].data[11] += 16; + SetSpriteRotScale(spriteId, gTasks[taskId].data[11], gTasks[taskId].data[11], 0); + SetBattlerSpriteYOffsetFromYScale(spriteId); + if (--gTasks[taskId].data[1] == 0) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = AnimTask_DuplicateAndShrinkToPosStep2; + } +} + +static void AnimTask_DuplicateAndShrinkToPosStep2(u8 taskId) +{ + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + { + if (gTasks[taskId].data[0] == 0) + { + u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); + ResetSpriteRotScale(spriteId); + gSprites[spriteId].pos2.y = gSprites[spriteId].pos2.x = 0; + gTasks[taskId].data[0]++; + return; + } + } + else + { + if (gTasks[taskId].data[0] == 0) + return; + } + + gTasks[taskId].data[0]++; + if (gTasks[taskId].data[0] == 3) + DestroyAnimVisualTask(taskId); +} + +// Moves an orb from the target mon to the attacking mon. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +void AnimMimicOrb(struct Sprite* sprite) +{ + switch (sprite->data[0]) + { + case 0: + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + gBattleAnimArgs[0] *= -1; + + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + gBattleAnimArgs[0]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + gBattleAnimArgs[1]; + sprite->invisible = TRUE; + sprite->data[0]++; + break; + case 1: + sprite->invisible = FALSE; + if (sprite->affineAnimEnded) + { + ChangeSpriteAffineAnim(sprite, 1); + sprite->data[0] = 25; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + sprite->callback = InitAndRunAnimFastLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + break; + } + } +} + +// Animates a root that flickers away after some time. +// arg 0: x pixel offset +// arg 1: y pixel offset +// arg 2: sprite subpriority offset +// arg 3: sprite anim num +// arg 4: duration +void AnimIngrainRoot(struct Sprite* sprite) +{ + if (!sprite->data[0]) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y); + sprite->pos2.x = gBattleAnimArgs[0]; + sprite->pos2.y = gBattleAnimArgs[1]; + sprite->subpriority = gBattleAnimArgs[2] + 30; + StartSpriteAnim(sprite, gBattleAnimArgs[3]); + sprite->data[2] = gBattleAnimArgs[4]; + sprite->data[0]++; + if (sprite->pos1.y + sprite->pos2.y > 120) + sprite->pos1.y += sprite->pos2.y + sprite->pos1.y - 120; + } + sprite->callback = AnimRootFlickerOut; +} + +// Places a root on the path to the target mon that flickers away after some time. +// arg 0: percent along the path to the target mon +// arg 1: x pixel offset +// arg 2: y pixel offset +// arg 3: sprite subpriority offset +// arg 4: sprite anum num +// arg 5: duration +void AnimFrenzyPlantRoot(struct Sprite *sprite) +{ + s16 attackerX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + s16 attackerY = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + s16 targetX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + s16 targetY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + + targetX -= attackerX; + targetY -= attackerY; + sprite->pos1.x = attackerX + targetX * gBattleAnimArgs[0] / 100; + sprite->pos1.y = attackerY + targetY * gBattleAnimArgs[0] / 100; + sprite->pos2.x = gBattleAnimArgs[1]; + sprite->pos2.y = gBattleAnimArgs[2]; + sprite->subpriority = gBattleAnimArgs[3] + 30; + StartSpriteAnim(sprite, gBattleAnimArgs[4]); + sprite->data[2] = gBattleAnimArgs[5]; + sprite->callback = AnimRootFlickerOut; + gUnknown_203999C[0] = sprite->pos1.x; + gUnknown_203999C[1] = sprite->pos1.y; + gUnknown_203999C[2] = targetX; + gUnknown_203999C[3] = targetY; +} + +static void AnimRootFlickerOut(struct Sprite* sprite) +{ + if (++sprite->data[0] > (sprite->data[2] - 10)) + sprite->invisible = sprite->data[0] % 2; + + if (sprite->data[0] > sprite->data[2]) + DestroyAnimSprite(sprite); +} + +// Moves an orb in a fast wavy path. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: horizontal velocity +// arg 3: wave amplitude +// arg 4: duration +void AnimIngrainOrb(struct Sprite* sprite) +{ + if (!sprite->data[0]) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[0]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + gBattleAnimArgs[1]; + sprite->data[1] = gBattleAnimArgs[2]; + sprite->data[2] = gBattleAnimArgs[3]; + sprite->data[3] = gBattleAnimArgs[4]; + } + + sprite->data[0]++; + sprite->pos2.x = sprite->data[1] * sprite->data[0]; + sprite->pos2.y = Sin((sprite->data[0] * 20) & 0xFF, sprite->data[2]); + if (sprite->data[0] > sprite->data[3]) + DestroyAnimSprite(sprite); +} + +static void sub_80A33B8(struct Sprite* sprite, s16 c) +{ + int a = (sprite->pos1.x << 8) | sprite->pos1.y; + int b = (sprite->data[6] << 8) | sprite->data[7]; + c <<= 8; + sprite->data[5] = a; + sprite->data[6] = b; + sprite->data[7] = c; +} + +bool8 MoveAlongLinearPath(struct Sprite* sprite) +{ + u16 xStartPos = (u8)(sprite->data[5] >> 8); + u16 yStartPos = (u8)sprite->data[5]; + s32 xEndPos = (u8)(sprite->data[6] >> 8); + s32 yEndPos = (u8)sprite->data[6]; + s16 totalTime = sprite->data[7] >> 8; + s16 currentTime = sprite->data[7] & 0xFF; + s16 yEndPos_2; + s16 r0; + s32 var1; + s32 vaxEndPos; + + if (xEndPos == 0) + xEndPos = -32; + else if (xEndPos == 255) + xEndPos = 272; + + yEndPos_2 = yEndPos - yStartPos; + r0 = xEndPos - xStartPos; + var1 = r0 * currentTime / totalTime; + vaxEndPos = yEndPos_2 * currentTime / totalTime; + sprite->pos1.x = var1 + xStartPos; + sprite->pos1.y = vaxEndPos + yStartPos; + if (++currentTime == totalTime) + return TRUE; + + sprite->data[7] = (totalTime << 8) | currentTime; + return FALSE; +} + +void AnimItemStealStep2(struct Sprite* sprite) +{ + if (sprite->data[0] == 10) + StartSpriteAffineAnim(sprite, 1); + + sprite->data[0]++; + if (sprite->data[0] > 50) + DestroyAnimSprite(sprite); +} + +static void AnimItemStealStep1(struct Sprite* sprite) +{ + sprite->data[0] += sprite->data[3] * 128 / sprite->data[4]; + if (sprite->data[0] >= 128) + { + sprite->data[1]++; + sprite->data[0] = 0; + } + + sprite->pos2.y = Sin(sprite->data[0] + 128, 30 - sprite->data[1] * 8); + if (MoveAlongLinearPath(sprite)) + { + sprite->pos2.y = 0; + sprite->data[0] = 0; + sprite->callback = AnimItemStealStep2; + } +} + +void AnimPresent(struct Sprite* sprite) +{ + s16 targetX; + s16 targetY; + + InitSpritePosToAnimAttacker(sprite, FALSE); + targetX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + targetY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y); + if (BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget) + { + sprite->data[6] = targetX; + sprite->data[7] = targetY + 10; + sub_80A33B8(sprite, 60); + sprite->data[3] = 1; + } + else + { + sprite->data[6] = targetX; + sprite->data[7] = targetY + 10; + sub_80A33B8(sprite, 60); + sprite->data[3] = 3; + } + + sprite->data[4] = 60; + sprite->callback = AnimItemStealStep1; +} + +static void sub_80A3590(struct Sprite* sprite) +{ + int zero; + + sprite->data[0] += ((sprite->data[3] * 128) / sprite->data[4]); + zero = 0; + if (sprite->data[0] > 0x7F) + { + sprite->data[1]++; + sprite->data[0] = zero; + } + + sprite->pos2.y = Sin(sprite->data[0] + 0x80, 30 - sprite->data[1] * 8); + if (MoveAlongLinearPath(sprite)) + { + sprite->pos2.y = zero; + sprite->data[0] = zero; + DestroyAnimSprite(sprite); + } +} + +void AnimKnockOffItem(struct Sprite* sprite) +{ + s16 targetY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y); + + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + { + sprite->data[6] = 0; + sprite->data[7] = targetY + 10; + sub_80A33B8(sprite, 40); + sprite->data[3] = 3; + sprite->data[4] = 60; + sprite->callback = AnimItemStealStep1; + } + else + { + sprite->data[6] = 255; + sprite->data[7] = targetY + 10; + if (IsContest()) + sprite->data[6] = 0; + + sub_80A33B8(sprite, 40); + sprite->data[3] = 3; + sprite->data[4] = 60; + sprite->callback = sub_80A3590; + } +} + +// Animates a heal particle upward. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: vertical velocity +// arg 3: unused +void AnimPresentHealParticle(struct Sprite* sprite) +{ + if (!sprite->data[0]) + { + InitSpritePosToAnimTarget(sprite, FALSE); + sprite->data[1] = gBattleAnimArgs[2]; + } + + sprite->data[0]++; + sprite->pos2.y = sprite->data[1] * sprite->data[0]; + if (sprite->animEnded) + DestroyAnimSprite(sprite); +} + +void AnimItemSteal(struct Sprite* sprite) +{ + s16 attackerX; + s16 attackerY; + + InitSpritePosToAnimTarget(sprite, FALSE); + attackerX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + attackerY = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y); + if (BATTLE_PARTNER(gBattleAnimTarget) == gBattleAnimAttacker) + { + sprite->data[6] = attackerX; + sprite->data[7] = attackerY + 10; + sub_80A33B8(sprite, 60); + sprite->data[3] = 1; + } + else + { + sprite->data[6] = attackerX; + sprite->data[7] = attackerY + 10; + sub_80A33B8(sprite, 60); + sprite->data[3] = 3; + } + + sprite->data[4] = 60; + sprite->callback = AnimItemStealStep3; +} + +static void AnimItemStealStep3(struct Sprite* sprite) +{ + int zero; + + sprite->data[0] += ((sprite->data[3] * 128) / sprite->data[4]); + zero = 0; + if (sprite->data[0] > 127) + { + sprite->data[1]++; + sprite->data[0] = zero; + } + + sprite->pos2.y = Sin(sprite->data[0] + 0x80, 30 - sprite->data[1] * 8); + if (sprite->pos2.y == 0) + PlaySE12WithPanning(SE_W145B, BattleAnimAdjustPanning(SOUND_PAN_TARGET)); + + if (MoveAlongLinearPath(sprite)) + { + sprite->pos2.y = 0; + sprite->data[0] = 0; + sprite->callback = AnimItemStealStep2; + PlaySE12WithPanning(SE_W145B, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER)); + } +} + +// Moves a bag in a circular motion. +// arg 0: y position +// arg 1: initial wave offset +void AnimTrickBag(struct Sprite* sprite) +{ + int a; + int b; + + if (!sprite->data[0]) + { + if (!IsContest()) + { + sprite->data[1] = gBattleAnimArgs[1]; + sprite->pos1.x = 120; + } + else + { + a = gBattleAnimArgs[1] - 32; + if (a < 0) + b = gBattleAnimArgs[1] + 0xDF; + else + b = a; + + sprite->data[1] = a - ((b >> 8) << 8); + sprite->pos1.x = 70; + } + + sprite->pos1.y = gBattleAnimArgs[0]; + sprite->data[2] = gBattleAnimArgs[0]; + sprite->data[4] = 20; + sprite->pos2.x = Cos(sprite->data[1], 60); + sprite->pos2.y = Sin(sprite->data[1], 20); + sprite->callback = AnimTrickBagStep1; + if (sprite->data[1] > 0 && sprite->data[1] < 192) + sprite->subpriority = 31; + else + sprite->subpriority = 29; + } +} + +static void AnimTrickBagStep1(struct Sprite* sprite) +{ + switch (sprite->data[3]) + { + case 0: + if (sprite->data[2] > 78) + { + sprite->data[3] = 1; + StartSpriteAffineAnim(sprite, 1); + break; + } + else + { + sprite->data[2] += sprite->data[4] / 10; + sprite->data[4] += 3; + sprite->pos1.y = sprite->data[2]; + break; + } + break; + case 1: + if (sprite->data[3] && sprite->affineAnimEnded) + { + sprite->data[0] = 0; + sprite->data[2] = 0; + sprite->callback = AnimTrickBagStep2; + } + break; + } +} + +static void AnimTrickBagStep2(struct Sprite* sprite) +{ + if (sprite->data[2] == gTrickBagCoordinates[sprite->data[0]][1]) + { + if (gTrickBagCoordinates[sprite->data[0]][2] == 127) + { + sprite->data[0] = 0; + sprite->callback = AnimTrickBagStep3; + } + + sprite->data[2] = 0; + sprite->data[0]++; + } + else + { + sprite->data[2]++; + sprite->data[1] = (gTrickBagCoordinates[sprite->data[0]][0] * gTrickBagCoordinates[sprite->data[0]][2] + sprite->data[1]) & 0xFF; + if (!IsContest()) + { + if ((u16)(sprite->data[1] - 1) < 191) + sprite->subpriority = 31; + else + sprite->subpriority = 29; + } + + sprite->pos2.x = Cos(sprite->data[1], 60); + sprite->pos2.y = Sin(sprite->data[1], 20); + } +} + +static void AnimTrickBagStep3(struct Sprite* sprite) +{ + if (sprite->data[0] > 20) + DestroyAnimSprite(sprite); + + sprite->invisible = sprite->data[0] % 2; + sprite->data[0]++; +} + +void AnimTask_LeafBlade(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + task->data[4] = GetBattlerSpriteSubpriority(gBattleAnimTarget) - 1; + task->data[6] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + task->data[7] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + task->data[10] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_WIDTH); + task->data[11] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_HEIGHT); + task->data[5] = (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT) ? 1 : -1; + task->data[9] = 56 - (task->data[5] * 64); + task->data[8] = task->data[7] - task->data[9] + task->data[6]; + task->data[2] = CreateSprite(&gLeafBladeSpriteTemplate, task->data[8], task->data[9], task->data[4]); + if (task->data[2] == MAX_SPRITES) + DestroyAnimVisualTask(taskId); + + gSprites[task->data[2]].data[0] = 10; + gSprites[task->data[2]].data[1] = task->data[8]; + gSprites[task->data[2]].data[2] = task->data[6] - (task->data[10] / 2 + 10) * task->data[5]; + gSprites[task->data[2]].data[3] = task->data[9]; + gSprites[task->data[2]].data[4] = task->data[7] + (task->data[11] / 2 + 10) * task->data[5]; + gSprites[task->data[2]].data[5] = LeafBladeGetPosFactor(&gSprites[task->data[2]]); + InitAnimArcTranslation(&gSprites[task->data[2]]); + task->func = AnimTask_LeafBladeStep; +} + +static void AnimTask_LeafBladeStep(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + struct Sprite* sprite = &gSprites[task->data[2]]; + int a = task->data[0]; + + switch (a) + { + case 4: + AnimTask_LeafBladeStep2(task, taskId); + if (TranslateAnimHorizontalArc(sprite)) + { + task->data[15] = 5; + task->data[0] = 0xFF; + } + break; + case 8: + AnimTask_LeafBladeStep2(task, taskId); + if (TranslateAnimHorizontalArc(sprite)) + { + task->data[15] = 9; + task->data[0] = 0xFF; + } + break; + case 0: + AnimTask_LeafBladeStep2(task, taskId); + if (TranslateAnimHorizontalArc(sprite)) + { + task->data[15] = 1; + task->data[0] = 0xFF; + } + break; + case 1: + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[0] = 10; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = task->data[6]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = task->data[7]; + sprite->data[5] = LeafBladeGetPosFactor(sprite); + task->data[4] += 2; + task->data[3] = a; + sprite->subpriority = task->data[4]; + StartSpriteAnim(sprite, task->data[3]); + InitAnimArcTranslation(sprite); + task->data[0]++; + break; + case 2: + AnimTask_LeafBladeStep2(task, taskId); + if (TranslateAnimHorizontalArc(sprite)) + { + task->data[15] = 3; + task->data[0] = 0xFF; + } + break; + case 3: + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[0] = 10; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = task->data[6] - ((task->data[10] / 2) + 10) * task->data[5]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = task->data[7] - ((task->data[11] / 2) + 10) * task->data[5]; + sprite->data[5] = LeafBladeGetPosFactor(sprite); + task->data[3] = 2; + sprite->subpriority = task->data[4]; + StartSpriteAnim(sprite, task->data[3]); + InitAnimArcTranslation(sprite); + task->data[0]++; + break; + case 5: + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[0] = 10; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = task->data[6] + ((task->data[10] / 2) + 10) * task->data[5]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = task->data[7] + ((task->data[11] / 2) + 10) * task->data[5]; + sprite->data[5] = LeafBladeGetPosFactor(sprite); + task->data[4] -= 2; + task->data[3] = 3; + sprite->subpriority = task->data[4]; + StartSpriteAnim(sprite, task->data[3]); + InitAnimArcTranslation(sprite); + task->data[0]++; + break; + case 6: + AnimTask_LeafBladeStep2(task, taskId); + if (TranslateAnimHorizontalArc(sprite)) + { + task->data[15] = 7; + task->data[0] = 0xFF; + } + break; + case 7: + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[0] = 10; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = task->data[6]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = task->data[7]; + sprite->data[5] = LeafBladeGetPosFactor(sprite); + task->data[4] += 2; + task->data[3] = 4; + sprite->subpriority = task->data[4]; + StartSpriteAnim(sprite, task->data[3]); + InitAnimArcTranslation(sprite); + task->data[0]++; + break; + case 9: + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[0] = 10; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = task->data[6] - ((task->data[10] / 2) + 10) * task->data[5]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = task->data[7] + ((task->data[11] / 2) + 10) * task->data[5]; + sprite->data[5] = LeafBladeGetPosFactor(sprite); + task->data[3] = 5; + sprite->subpriority = task->data[4]; + StartSpriteAnim(sprite, task->data[3]); + InitAnimArcTranslation(sprite); + task->data[0]++; + break; + case 10: + AnimTask_LeafBladeStep2(task, taskId); + if (TranslateAnimHorizontalArc(sprite)) + { + task->data[15] = 11; + task->data[0] = 0xFF; + } + break; + case 11: + { + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[0] = 10; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = task->data[8]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = task->data[9]; + sprite->data[5] = LeafBladeGetPosFactor(sprite); + task->data[4] -= 2; + task->data[3] = 6; + sprite->subpriority = task->data[4]; + StartSpriteAnim(sprite, task->data[3]); + InitAnimArcTranslation(sprite); + task->data[0]++; + break; + } + case 12: + AnimTask_LeafBladeStep2(task, taskId); + if (TranslateAnimHorizontalArc(sprite)) + { + DestroySprite(sprite); + task->data[0]++; + } + break; + case 13: + if (task->data[12] == 0) + DestroyAnimVisualTask(taskId); + break; + case 0xFF: + if (++task->data[1] > 5) + { + task->data[1] = 0; + task->data[0] = task->data[15]; + } + break; + } +} + +static s16 LeafBladeGetPosFactor(struct Sprite* sprite) +{ + s16 var = 8; + + if (sprite->data[4] < sprite->pos1.y) + var = -var; + + return var; +} + +static void AnimTask_LeafBladeStep2(struct Task* task, u8 taskId) +{ + task->data[14]++; + if (task->data[14] > 0) + { + u8 spriteId; + s16 spriteX; + s16 spriteY; + task->data[14] = 0; + spriteX = gSprites[task->data[2]].pos1.x + gSprites[task->data[2]].pos2.x; + spriteY = gSprites[task->data[2]].pos1.y + gSprites[task->data[2]].pos2.y; + spriteId = CreateSprite(&gLeafBladeSpriteTemplate, spriteX, spriteY, task->data[4]); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].data[6] = taskId; + gSprites[spriteId].data[7] = 12; + gTasks[taskId].data[12]++; + gSprites[spriteId].data[0] = task->data[13] & 1; + gTasks[taskId].data[13]++; + StartSpriteAnim(&gSprites[spriteId], task->data[3]); + gSprites[spriteId].subpriority = task->data[4]; + gSprites[spriteId].callback = AnimTask_LeafBladeStep2_Callback; + } + } +} + +static void AnimTask_LeafBladeStep2_Callback(struct Sprite* sprite) +{ + sprite->data[0]++; + if (sprite->data[0] > 1) + { + sprite->data[0] = 0; + sprite->invisible ^= 1; + sprite->data[1]++; + if (sprite->data[1] > 8) + { + gTasks[sprite->data[6]].data[sprite->data[7]]--; + DestroySprite(sprite); + } + } +} + +void AnimFlyingParticle(struct Sprite* sprite) +{ + u8 battler; + + if (!gBattleAnimArgs[6]) + battler = gBattleAnimAttacker; + else + battler = gBattleAnimTarget; + + if (GetBattlerSide(battler) != B_SIDE_PLAYER) + { + sprite->data[4] = 0; + sprite->data[2] = gBattleAnimArgs[3]; + sprite->pos1.x = 0xFFF0; + } + else + { + sprite->data[4] = 1; + sprite->data[2] = -gBattleAnimArgs[3]; + sprite->pos1.x = 0x100; + } + + sprite->data[1] = gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[3] = gBattleAnimArgs[4]; + switch (gBattleAnimArgs[5]) + { + case 0: + sprite->pos1.y = gBattleAnimArgs[0]; + sprite->oam.priority = GetBattlerSpriteBGPriority(battler); + break; + case 1: + sprite->pos1.y = gBattleAnimArgs[0]; + sprite->oam.priority = GetBattlerSpriteBGPriority(battler) + 1; + break; + case 2: + sprite->pos1.y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[0]; + sprite->oam.priority = GetBattlerSpriteBGPriority(battler); + break; + case 3: + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[0]; + GetAnimBattlerSpriteId(ANIM_TARGET); + sprite->oam.priority = GetBattlerSpriteBGPriority(battler) + 1; + break; + } + + sprite->callback = AnimFlyingParticleStep; +} + +static void AnimFlyingParticleStep(struct Sprite* sprite) +{ + int a = sprite->data[7]; + + sprite->data[7]++; + sprite->pos2.y = (sprite->data[1] * gSineTable[sprite->data[0]]) >> 8; + sprite->pos2.x = sprite->data[2] * a; + sprite->data[0] = (sprite->data[3] * a) & 0xFF; + if (!sprite->data[4]) + { + if (sprite->pos2.x + sprite->pos1.x <= 0xF7) + return; + } + else + { + if (sprite->pos2.x + sprite->pos1.x > -16) + return; + } + + DestroySpriteAndMatrix(sprite); +} + +void sub_80A41C4(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + task->data[8] = IndexOfSpritePaletteTag(ANIM_TAG_LEAF) * 16 + 256; + task->data[12] = IndexOfSpritePaletteTag(ANIM_TAG_RAZOR_LEAF) * 16 + 256; + task->data[0]++; + break; + case 1: + if (++task->data[9] >= 0) + { + task->data[9] = 0; + BlendPalette(task->data[8], 16, task->data[10], sMagicalLeafBlendColors[task->data[11]]); + BlendPalette(task->data[12], 16, task->data[10], sMagicalLeafBlendColors[task->data[11]]); + if (++task->data[10] == 17) + { + task->data[10] = 0; + if (++task->data[11] == 7) + task->data[11] = 0; + } + } + break; + } + + if (gBattleAnimArgs[7] == -1) + DestroyAnimVisualTask(taskId); +} + +void AnimNeedleArmSpike(struct Sprite* sprite) +{ + u8 a; + u8 b; + u16 c; + u16 x; + u16 y; + + if (gBattleAnimArgs[4] == 0) + { + DestroyAnimSprite(sprite); + } + else + { + if (gBattleAnimArgs[0] == 0) + { + a = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + b = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + } + else + { + a = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + b = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + } + + sprite->data[0] = gBattleAnimArgs[4]; + if (gBattleAnimArgs[1] == 0) + { + sprite->pos1.x = gBattleAnimArgs[2] + a; + sprite->pos1.y = gBattleAnimArgs[3] + b; + sprite->data[5] = a; + sprite->data[6] = b; + } + else + { + sprite->pos1.x = a; + sprite->pos1.y = b; + sprite->data[5] = gBattleAnimArgs[2] + a; + sprite->data[6] = gBattleAnimArgs[3] + b; + } + + x = sprite->pos1.x; + sprite->data[1] = x * 16; + y = sprite->pos1.y; + sprite->data[2] = y * 16; + sprite->data[3] = (sprite->data[5] - sprite->pos1.x) * 16 / gBattleAnimArgs[4]; + sprite->data[4] = (sprite->data[6] - sprite->pos1.y) * 16 / gBattleAnimArgs[4]; + c = ArcTan2Neg(sprite->data[5] - x, sprite->data[6] - y); + if (IsContest()) + c -= 0x8000; + + TrySetSpriteRotScale(sprite, 0, 0x100, 0x100, c); + sprite->callback = AnimNeedleArmSpikeStep; + } +} + +static void AnimNeedleArmSpikeStep(struct Sprite* sprite) +{ + if (sprite->data[0]) + { + sprite->data[1] += sprite->data[3]; + sprite->data[2] += sprite->data[4]; + sprite->pos1.x = sprite->data[1] >> 4 ; + sprite->pos1.y = sprite->data[2] >> 4 ; + sprite->data[0]--; + } + else + { + DestroySpriteAndMatrix(sprite); + } +} + +static void sub_80A43DC(struct Sprite* sprite) +{ + if (sprite->animEnded) + DestroyAnimSprite(sprite); +} + +void sub_80A43F8(struct Sprite* sprite) +{ + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + { + sprite->pos1.x -= gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + } + else + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + } + + sprite->callback = RunStoredCallbackWhenAnimEnds; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +void AnimWhipHit(struct Sprite* sprite) +{ + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + StartSpriteAnim(sprite, 1); + + sprite->callback = sub_80A43DC; + SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; +} + +void sub_80A4494(struct Sprite* sprite) +{ + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[3] = gBattleAnimArgs[4]; + sprite->data[5] = gBattleAnimArgs[5]; + StartSpriteAffineAnim(sprite, gBattleAnimArgs[6]); + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); + sprite->callback = TranslateSpriteLinearAndFlicker; +} + +// Moves the sprite in a diagonally slashing motion across the target mon. +// Used by moves such as MOVE_CUT and MOVE_AERIAL_ACE. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: slice direction; 0 = right-to-left, 1 = left-to-right +void AnimCuttingSlice(struct Sprite* sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y); + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + sprite->pos1.y += 8; + + sprite->callback = AnimSliceStep; + if (gBattleAnimArgs[2] == 0) + { + sprite->pos1.x += gBattleAnimArgs[0]; + } + else + { + sprite->pos1.x -= gBattleAnimArgs[0]; + sprite->hFlip = 1; + } + + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[1] -= 0x400; + sprite->data[2] += 0x400; + sprite->data[5] = gBattleAnimArgs[2]; + if (sprite->data[5] == 1) + sprite->data[1] = -sprite->data[1]; +} + +void AnimAirCutterSlice(struct Sprite* sprite) +{ + u8 a; + u8 b; + + switch (gBattleAnimArgs[3]) + { + case 1: + a = GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimTarget), BATTLER_COORD_X); + b = GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimTarget), BATTLER_COORD_Y); + break; + case 2: + a = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + b = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y); + if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimTarget))) + { + a = (GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimTarget), 0) + a) / 2; + b = (GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimTarget), 1) + b) / 2; + } + break; + case 0: + default: + a = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + b = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y); + break; + } + + sprite->pos1.x = a; + sprite->pos1.y = b; + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + sprite->pos1.y += 8; + + sprite->callback = AnimSliceStep; + if (gBattleAnimArgs[2] == 0) + { + sprite->pos1.x += gBattleAnimArgs[0]; + } + else + { + sprite->pos1.x -= gBattleAnimArgs[0]; + sprite->hFlip = 1; + } + + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[1] -= 0x400; + sprite->data[2] += 0x400; + sprite->data[5] = gBattleAnimArgs[2]; + if (sprite->data[5] == 1) + sprite->data[1] = -sprite->data[1]; +} + +static void AnimSliceStep(struct Sprite* sprite) +{ + sprite->data[3] += sprite->data[1]; + sprite->data[4] += sprite->data[2]; + if (sprite->data[5] == 0) + sprite->data[1] += 0x18; + else + sprite->data[1] -= 0x18; + + sprite->data[2] -= 0x18; + sprite->pos2.x = sprite->data[3] >> 8; + sprite->pos2.y = sprite->data[4] >> 8; + sprite->data[0]++; + if (sprite->data[0] == 20) + { + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + sprite->data[0] = 3; + sprite->callback = WaitAnimForDuration; + } +} + +void sub_80A4738(struct Sprite* sprite) +{ + if (sprite->data[2] > 1) + { + if (sprite->data[3] & 1) + { + sprite->invisible = FALSE; + gSprites[sprite->data[0]].invisible = FALSE; + gSprites[sprite->data[1]].invisible = FALSE; + } + else + { + sprite->invisible = TRUE; + gSprites[sprite->data[0]].invisible = TRUE; + gSprites[sprite->data[1]].invisible = TRUE; + } + + sprite->data[2] = 0; + sprite->data[3]++; + } + else + { + sprite->data[2]++; + } + + if (sprite->data[3] == 10) + { + DestroySprite(&gSprites[sprite->data[0]]); + DestroySprite(&gSprites[sprite->data[1]]); + DestroyAnimSprite(sprite); + } +} + +void sub_80A481C(struct Sprite* sprite) +{ + sprite->data[0] = gBattleAnimArgs[2]; + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + sprite->pos1.x -= gBattleAnimArgs[0]; + else + sprite->pos1.x += gBattleAnimArgs[0]; + + StartSpriteAnim(sprite, gBattleAnimArgs[5]); + sprite->data[1] = -gBattleAnimArgs[3]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[3] = gBattleAnimArgs[4]; + sprite->callback = sub_80A4880; + sprite->callback(sprite); +} + +static void sub_80A4880(struct Sprite* sprite) +{ + sprite->pos2.x = Cos(sprite->data[0], 100); + sprite->pos2.y = Sin(sprite->data[0], 20); + if (sprite->data[0] < 128) + sprite->subpriority = 0; + else + sprite->subpriority = 14; + + sprite->data[0] = (sprite->data[0] + sprite->data[1]) & 0xFF; + sprite->data[5] += 0x82; + sprite->pos2.y += sprite->data[5] >> 8; + sprite->data[2]++; + if (sprite->data[2] == sprite->data[3]) + DestroyAnimSprite(sprite); +} + +void AnimProtect(struct Sprite* sprite) +{ + if (IsContest()) + gBattleAnimArgs[1] += 8; + + sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_X) + gBattleAnimArgs[0]; + sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_Y) + gBattleAnimArgs[1]; + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER || IsContest()) + sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker) + 1; + else + sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker); + + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[2] = (IndexOfSpritePaletteTag(ANIM_TAG_PROTECT) << 4) + 0x100; + sprite->data[7] = 16; + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - sprite->data[7], sprite->data[7])); + sprite->callback = AnimProtectStep; +} + +static void AnimProtectStep(struct Sprite *sprite) +{ + int a; + int i; + + sprite->data[5] += 96; + sprite->pos2.x = -(sprite->data[5] >> 8); + if (++sprite->data[1] > 1) + { + sprite->data[1] = 0; + a = gPlttBufferFaded[sprite->data[2] + 1]; + i = 0; + do + { + gPlttBufferFaded[sprite->data[2] + ++i] = gPlttBufferFaded[sprite->data[2] + i + 1]; + } while (i < 6); + + gPlttBufferFaded[sprite->data[2] + 7] = a; + } + + if (sprite->data[7] > 6 && sprite->data[0] >0 && ++sprite->data[6] > 1) + { + sprite->data[6] = 0; + sprite->data[7] -= 1; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - sprite->data[7], sprite->data[7])); + } + + if (sprite->data[0] > 0) + { + sprite->data[0] -= 1; + } + else if (++sprite->data[6] > 1) + { + sprite->data[6] = 0; + sprite->data[7]++; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - sprite->data[7], sprite->data[7])); + if (sprite->data[7] == 16) + { + sprite->invisible = TRUE; + sprite->callback = DestroyAnimSpriteAndDisableBlend; + } + } +} + +void AnimMilkBottle(struct Sprite* sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + 0xFFE8; + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->data[3] = 0; + sprite->data[4] = 0; + sprite->data[6] = 0; + sprite->data[7] = 16; + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[6], sprite->data[7])); + sprite->callback = AnimMilkBottleStep1; +} + +static void AnimMilkBottleStep1(struct Sprite* sprite) +{ + switch (sprite->data[0]) + { + case 0: + if (++sprite->data[2] > 0) + { + sprite->data[2] = 0; + if (((++sprite->data[1]) & 1) != 0) + { + if (sprite->data[6] <= 15) + sprite->data[6]++; + } + else if (sprite->data[7] > 0) + sprite->data[7]--; + + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[6], sprite->data[7])); + if (sprite->data[6] == 16 && sprite->data[7] == 0) + { + sprite->data[1] = 0; + sprite->data[0]++; + } + } + break; + case 1: + if (++sprite->data[1] > 8) + { + sprite->data[1] = 0; + StartSpriteAffineAnim(sprite, 1); + sprite->data[0]++; + } + break; + case 2: + AnimMilkBottleStep2(sprite, 16, 4); + if (++sprite->data[1] > 2) + { + sprite->data[1] = 0; + sprite->pos1.y++; + } + + if (++sprite->data[2] <= 29) + break; + + if (sprite->data[2] & 1) + { + if (sprite->data[6] > 0) + sprite->data[6]--; + } + else if (sprite->data[7] <= 15) + { + sprite->data[7]++; + } + + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[6], sprite->data[7])); + if (sprite->data[6] == 0 && sprite->data[7] == 16) + { + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->data[0]++; + } + break; + case 3: + sprite->invisible = TRUE; + sprite->data[0]++; + break; + case 4: + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0)); + DestroyAnimSprite(sprite); + break; + } +} + +static void AnimMilkBottleStep2(struct Sprite* sprite, int unk1, int unk2) +{ + if (sprite->data[3] <= 11) + sprite->data[4] += 2; + + if ((u16)(sprite->data[3] - 0x12) <= 0x17) + sprite->data[4] -= 2; + + if ((sprite->data[3]) > 0x2F) + sprite->data[4] += 2; + + sprite->pos2.x = sprite->data[4] / 9; + sprite->pos2.y = sprite->data[4] / 14; + if (sprite->pos2.y < 0) + sprite->pos2.y *= -1; + + sprite->data[3]++; + if (sprite->data[3] > 0x3B) + sprite->data[3] = 0; +} + +void AnimGrantingStars(struct Sprite* sprite) +{ + if (!gBattleAnimArgs[2]) + SetSpriteCoordsToAnimAttackerCoords(sprite); + + SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[5]; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[2] = gBattleAnimArgs[4]; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + sprite->callback = TranslateSpriteLinearFixedPoint; +} + +void AnimSparkingStars(struct Sprite* sprite) +{ + u8 battler; + + if (!gBattleAnimArgs[2]) + battler = gBattleAnimAttacker; + else + battler = gBattleAnimTarget; + + if (IsDoubleBattle() && IsBattlerSpriteVisible(BATTLE_PARTNER(battler))) + { + SetAverageBattlerPositions(battler, gBattleAnimArgs[6], &sprite->pos1.x, &sprite->pos1.y); + SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; + } + else + { + if (!gBattleAnimArgs[6]) + { + sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X); + sprite->pos1.y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y) + gBattleAnimArgs[1]; + } + else + { + sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1]; + } + + SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); + } + + sprite->data[0] = gBattleAnimArgs[5]; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[2] = gBattleAnimArgs[4]; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + sprite->callback = TranslateSpriteLinearFixedPoint; +} + +void sub_80A4E40(struct Sprite* sprite) +{ + SetSpriteCoordsToAnimAttackerCoords(sprite); + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + } + else + { + sprite->pos1.x -= gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + StartSpriteAnim(sprite, 1); + } + + sprite->callback = sub_80A4EA0; +} + +static void sub_80A4EA0(struct Sprite* sprite) +{ + if (++sprite->data[0] > 30) + { + sprite->pos2.y = (30 - sprite->data[0]) / 3; + sprite->pos2.x = Sin(sprite->data[1] * 4, 3); + sprite->data[1]++; + } + + if (sprite->animEnded) + DestroyAnimSprite(sprite); +} + +void AnimSleepLetterZ(struct Sprite* sprite) +{ + SetSpriteCoordsToAnimAttackerCoords(sprite); + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[3] = 1; + } + else + { + sprite->pos1.x -= gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[3] = 0xFFFF; + StartSpriteAffineAnim(sprite, 1); + } + + sprite->callback = AnimSleepLetterZStep; +} + +static void AnimSleepLetterZStep(struct Sprite* sprite) +{ + sprite->pos2.y = -(sprite->data[0] / 0x28); + sprite->pos2.x = sprite->data[4] / 10; + sprite->data[4] += sprite->data[3] * 2; + sprite->data[0] += sprite->data[1]; + if (++sprite->data[1] > 60) + DestroySpriteAndMatrix(sprite); +} + +void AnimLockOnTarget(struct Sprite* sprite) +{ + sprite->pos1.x -= 32; + sprite->pos1.y -= 32; + sprite->data[0] = 20; + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, AnimLockOnTargetStep1); +} + +static void AnimLockOnTargetStep1(struct Sprite* sprite) +{ + switch (sprite->data[5] & 1) + { + case 0: + sprite->data[0] = 1; + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, AnimLockOnTargetStep1); + break; + case 1: + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->data[0] = 8; + sprite->data[2] = sprite->pos1.x + sInclineMonCoordTable[sprite->data[5] >> 8][0]; + sprite->data[4] = sprite->pos1.y + sInclineMonCoordTable[sprite->data[5] >> 8][1]; + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, AnimLockOnTargetStep2); + sprite->data[5] += 0x100; + PlaySE12WithPanning(SE_W199, BattleAnimAdjustPanning(SOUND_PAN_TARGET)); + break; + } + + sprite->data[5] ^= 1; +} + +static void AnimLockOnTargetStep2(struct Sprite* sprite) +{ + if ((sprite->data[5] >> 8) == 4) + { + sprite->data[0] = 10; + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, AnimLockOnTargetStep3); + } + else + { + sprite->callback = AnimLockOnTargetStep1; + } +} + +static void AnimLockOnTargetStep3(struct Sprite* sprite) +{ + s16 a; + s16 b; + + if (sprite->oam.affineParam == 0) + { + sprite->data[0] = 3; + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, AnimLockOnTargetStep4); + } + else + { + switch (sprite->oam.affineParam) + { + case 1: + a = -8; + b = -8; + break; + case 2: + a = -8; + b = 8; + break; + case 3: + a = 8; + b = -8; + break; + default: + a = 8; + b = 8; + break; + } + + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->data[0] = 6; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + a; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + b; + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, AnimLockOnTargetStep5); + } +} + +static void AnimLockOnTargetStep4(struct Sprite* sprite) +{ + if (sprite->data[2] == 0) + { + if ((sprite->data[1] += 3) > 16) + sprite->data[1] = 16; + } + else if ((sprite->data[1] -= 3) < 0) + { + sprite->data[1] = 0; + } + + BlendPalettes(sub_8075BE8(1, 1, 1, 1, 1, 0, 0), sprite->data[1], RGB_WHITE); + if (sprite->data[1] == 16) + { + int pal; + sprite->data[2]++; + pal = sprite->oam.paletteNum; + LoadPalette(&gPlttBufferUnfaded[0x108 + pal * 16], pal * 16 | 0x101, 4); + PlaySE12WithPanning(SE_W043, BattleAnimAdjustPanning(SOUND_PAN_TARGET)); + } + else if (sprite->data[1] == 0) + { + sprite->callback = AnimLockOnTargetStep5; + } +} + +static void AnimLockOnTargetStep5(struct Sprite* sprite) +{ + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + { + sprite->data[1] = 0; + sprite->data[0] = 0; + sprite->callback = AnimLockOnTargetStep6; + } +} + +static void AnimLockOnTargetStep6(struct Sprite* sprite) +{ + if (sprite->data[0] % 3 == 0) + { + sprite->data[1]++; + sprite->invisible ^= 1; + } + + sprite->data[0]++; + if (sprite->data[1] == 8) + DestroyAnimSprite(sprite); +} + +void AnimLockOnMoveTarget(struct Sprite* sprite) +{ + sprite->oam.affineParam = gBattleAnimArgs[0]; + if ((s16)sprite->oam.affineParam == 1) + { + sprite->pos1.x -= 0x18; + sprite->pos1.y -= 0x18; + } + else if ((s16)sprite->oam.affineParam == 2) + { + sprite->pos1.x -= 0x18; + sprite->pos1.y += 0x18; + sprite->oam.matrixNum = ST_OAM_VFLIP; + } + else if ((s16)sprite->oam.affineParam == 3) + { + sprite->pos1.x += 0x18; + sprite->pos1.y -= 0x18; + sprite->oam.matrixNum = ST_OAM_HFLIP; + } + else + { + sprite->pos1.x += 0x18; + sprite->pos1.y += 0x18; + sprite->oam.matrixNum = ST_OAM_HFLIP | ST_OAM_VFLIP; + } + + sprite->oam.tileNum = (sprite->oam.tileNum + 16); + sprite->callback = AnimLockOnTarget; + sprite->callback(sprite); +} + +void AnimBowMon(struct Sprite* sprite) +{ + sprite->invisible = TRUE; + sprite->data[0] = 0; + switch (gBattleAnimArgs[0]) + { + case 0: + sprite->callback = AnimBowMonStep1; + break; + case 1: + sprite->callback = AnimBowMonStep2; + break; + case 2: + sprite->callback = AnimBowMonStep3; + break; + default: + sprite->callback = AnimBowMonStep4; + break; + } +} + +static void AnimBowMonStep1(struct Sprite* sprite) +{ + sprite->data[0] = 6; + sprite->data[1] = (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) ? 2 : -2; + sprite->data[2] = 0; + sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker]; + StoreSpriteCallbackInData6(sprite, AnimBowMonStep1_Callback); + sprite->callback = TranslateMonSpriteLinear; +} + +static void AnimBowMonStep1_Callback(struct Sprite* sprite) +{ + if (sprite->data[0] == 0) + { + sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker]; + PrepareBattlerSpriteForRotScale(sprite->data[3], ST_OAM_OBJ_NORMAL); + sprite->data[4] = (sprite->data[6] = GetBattlerSide(gBattleAnimAttacker)) ? 0x300 : 0xFFFFFD00; + sprite->data[5] = 0; + } + + sprite->data[5] += sprite->data[4]; + SetSpriteRotScale(sprite->data[3], 0x100, 0x100, sprite->data[5]); + SetBattlerSpriteYOffsetFromRotation(sprite->data[3]); + if (++sprite->data[0] > 3) + { + sprite->data[0] = 0; + sprite->callback = AnimBowMonStep4; + } +} + +static void AnimBowMonStep2(struct Sprite* sprite) +{ + sprite->data[0] = 4; + sprite->data[1] = (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) ? -3 : 3; + sprite->data[2] = 0; + sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker]; + StoreSpriteCallbackInData6(sprite, AnimBowMonStep4); + sprite->callback = TranslateMonSpriteLinear; +} + +static void AnimBowMonStep3(struct Sprite* sprite) +{ + if (++sprite->data[0] > 8) + { + sprite->data[0] = 0; + sprite->callback = AnimBowMonStep3_Callback; + } +} + +static void AnimBowMonStep3_Callback(struct Sprite* sprite) +{ + if (sprite->data[0] == 0) + { + sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker]; + sprite->data[6] = GetBattlerSide(gBattleAnimAttacker); + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + { + sprite->data[4] = 0xFC00; + sprite->data[5] = 0xC00; + } + else + { + sprite->data[4] = 0x400; + sprite->data[5] = 0xF400; + } + } + + sprite->data[5] += sprite->data[4]; + SetSpriteRotScale(sprite->data[3], 0x100, 0x100, sprite->data[5]); + SetBattlerSpriteYOffsetFromRotation(sprite->data[3]); + if (++sprite->data[0] > 2) + { + ResetSpriteRotScale(sprite->data[3]); + sprite->callback = AnimBowMonStep4; + } +} + +static void AnimBowMonStep4(struct Sprite* sprite) +{ + DestroyAnimSprite(sprite); +} + +void sub_80A5590(struct Sprite *sprite) +{ + sprite->data[0] = 0; + sprite->callback = sub_80A55A0; +} + +static void sub_80A55A0(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->data[1] = 0; + sprite->data[2] = gBattlerSpriteIds[gBattleAnimAttacker]; + sprite->data[3] = GetBattlerSide(gBattleAnimAttacker); + sprite->data[4] = (sprite->data[3] != B_SIDE_PLAYER) ? 0x200 : -0x200; + sprite->data[5] = 0; + PrepareBattlerSpriteForRotScale(sprite->data[2], ST_OAM_OBJ_NORMAL); + sprite->data[0]++; + // fall through + case 1: + sprite->data[5] += sprite->data[4]; + SetSpriteRotScale(sprite->data[2], 0x100, 0x100, sprite->data[5]); + SetBattlerSpriteYOffsetFromRotation(sprite->data[2]); + if (++sprite->data[1] > 3) + { + sprite->data[1] = 0; + sprite->data[4] *= -1; + sprite->data[0]++; + } + break; + case 2: + sprite->data[5] += sprite->data[4]; + SetSpriteRotScale(sprite->data[2], 0x100, 0x100, sprite->data[5]); + SetBattlerSpriteYOffsetFromRotation(sprite->data[2]); + if (++sprite->data[1] > 3) + { + ResetSpriteRotScale(sprite->data[2]); + DestroyAnimSprite(sprite); + } + break; + } +} + +void AnimTask_SkullBashPosition(u8 taskId) +{ + u8 side; + + gTasks[taskId].data[0] = gBattlerSpriteIds[gBattleAnimAttacker]; + side = GetBattlerSide(gBattleAnimAttacker); + gTasks[taskId].data[1] = side; + gTasks[taskId].data[2] = 0; + switch (gBattleAnimArgs[0]) + { + default: + DestroyAnimVisualTask(taskId); + break; + case 0: + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = 8; + gTasks[taskId].data[4] = 0; + gTasks[taskId].data[5] = 3; + if (side == B_SIDE_PLAYER) + gTasks[taskId].data[5] *= -1; + + gTasks[taskId].func = AnimTask_SkullBashPositionSet; + break; + case 1: + gTasks[taskId].data[3] = 8; + gTasks[taskId].data[4] = 0x600; + gTasks[taskId].data[5] = 0xC0; + if (side == B_SIDE_PLAYER) + { + gTasks[taskId].data[4] = -gTasks[taskId].data[4]; + gTasks[taskId].data[5] = -gTasks[taskId].data[5]; + } + + gTasks[taskId].func = AnimTask_SkullBashPositionReset; + break; + } +} + +static void AnimTask_SkullBashPositionSet(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[2]) + { + case 0: + if (task->data[3]) + { + task->data[4] += task->data[5]; + gSprites[task->data[0]].pos2.x = task->data[4]; + task->data[3]--; + } + else + { + task->data[3] = 8; + task->data[4] = 0; + task->data[5] = (task->data[1] == 0) ? -0xC0 : 0xC0; + PrepareBattlerSpriteForRotScale(task->data[0], ST_OAM_OBJ_NORMAL); + task->data[2]++; + } + break; + case 1: + if (task->data[3]) + { + task->data[4] += task->data[5]; + SetSpriteRotScale(task->data[0], 0x100, 0x100, task->data[4]); + SetBattlerSpriteYOffsetFromRotation(task->data[0]); + task->data[3]--; + } + else + { + task->data[3] = 8; + task->data[4] = gSprites[task->data[0]].pos2.x; + task->data[5] = (task->data[1] == 0) ? 0x2 : -0x2; + task->data[6] = 1; + task->data[2]++; + } + break; + case 2: + if (task->data[3]) + { + if (task->data[6]) + { + task->data[6]--; + } + else + { + if (task->data[3] & 1) + gSprites[task->data[0]].pos2.x = task->data[4] + task->data[5]; + else + gSprites[task->data[0]].pos2.x = task->data[4] - task->data[5]; + + task->data[6] = 1; + task->data[3]--; + } + } + else + { + gSprites[task->data[0]].pos2.x = task->data[4]; + task->data[3] = 12; + task->data[2]++; + } + break; + case 3: + if (task->data[3]) + { + task->data[3]--; + } + else + { + task->data[3] = 3; + task->data[4] = gSprites[task->data[0]].pos2.x; + task->data[5] = (task->data[1] == 0) ? 8 : -8; + task->data[2]++; + } + break; + case 4: + if (task->data[3]) + { + task->data[4] += task->data[5]; + gSprites[task->data[0]].pos2.x = task->data[4]; + task->data[3]--; + } + else + { + DestroyAnimVisualTask(taskId); + } + break; + } +} + +static void AnimTask_SkullBashPositionReset(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + if (task->data[3]) + { + task->data[4] -= task->data[5]; + SetSpriteRotScale(task->data[0], 0x100, 0x100, task->data[4]); + SetBattlerSpriteYOffsetFromRotation(task->data[0]); + task->data[3]--; + } + else + { + ResetSpriteRotScale(task->data[0]); + DestroyAnimVisualTask(taskId); + } +} + +void AnimSlashSlice(struct Sprite* sprite) +{ + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[1]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2]; + } + else + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[1]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2]; + } + + sprite->data[0] = 0; + sprite->data[1] = 0; + StoreSpriteCallbackInData6(sprite, AnimFalseSwipeSliceStep3); + sprite->callback = RunStoredCallbackWhenAnimEnds; +} + +void AnimFalseSwipeSlice(struct Sprite* sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + 0xFFD0; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + StoreSpriteCallbackInData6(sprite, AnimFalseSwipeSliceStep1); + sprite->callback = RunStoredCallbackWhenAnimEnds; +} + +void AnimFalseSwipePositionedSlice(struct Sprite* sprite) +{ + sprite->pos1.x = sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + 0xFFD0 + gBattleAnimArgs[0]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + StartSpriteAnim(sprite, 1); + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->callback = AnimFalseSwipeSliceStep3; +} + +static void AnimFalseSwipeSliceStep1(struct Sprite* sprite) +{ + if (++sprite->data[0] > 8) + { + sprite->data[0] = 12; + sprite->data[1] = 8; + sprite->data[2] = 0; + StoreSpriteCallbackInData6(sprite, AnimFalseSwipeSliceStep2); + sprite->callback = TranslateSpriteLinear; + } +} + +static void AnimFalseSwipeSliceStep2(struct Sprite* sprite) +{ + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->callback = AnimFalseSwipeSliceStep3; +} + +static void AnimFalseSwipeSliceStep3(struct Sprite* sprite) +{ + if (++sprite->data[0] > 1) + { + sprite->data[0] = 0; + sprite->invisible = !sprite->invisible; + if (++sprite->data[1] > 8) + DestroyAnimSprite(sprite); + } +} + +void AnimEndureEnergy(struct Sprite* sprite) +{ + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X) + gBattleAnimArgs[1]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + gBattleAnimArgs[2]; + } + else + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + gBattleAnimArgs[1]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + gBattleAnimArgs[2]; + } + + sprite->data[0] = 0; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->callback = AnimEndureEnergyStep; +} + +static void AnimEndureEnergyStep(struct Sprite* sprite) +{ + if (++sprite->data[0] > sprite->data[1]) + { + sprite->data[0] = 0; + sprite->pos1.y--; + } + + sprite->pos1.y -= sprite->data[0]; + if (sprite->animEnded) + DestroyAnimSprite(sprite); +} + +void AnimSharpenSphere(struct Sprite* sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) - 12; + sprite->data[0] = 0; + sprite->data[1] = 2; + sprite->data[2] = 0; + sprite->data[3] = 0; + sprite->data[4] = 0; + sprite->data[5] = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER); + sprite->callback = AnimSharpenSphereStep; +} + +static void AnimSharpenSphereStep(struct Sprite* sprite) +{ + if (++sprite->data[0] >= sprite->data[1]) + { + sprite->invisible = !sprite->invisible; + if (!sprite->invisible) + { + sprite->data[4]++; + if (!(sprite->data[4] & 1)) + PlaySE12WithPanning(SE_W207B, sprite->data[5]); + } + + sprite->data[0] = 0; + if (++sprite->data[2] > 1) + { + sprite->data[2] = 0; + sprite->data[1]++; + } + } + + if (sprite->animEnded && sprite->data[1] > 16 && sprite->invisible) + DestroyAnimSprite(sprite); +} + +void AnimConversion(struct Sprite* sprite) +{ + if (sprite->data[0] == 0) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X) + gBattleAnimArgs[0]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + gBattleAnimArgs[1]; + if (IsContest()) + sprite->pos1.y += 10; + + sprite->data[0]++; + } + + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + DestroyAnimSprite(sprite); +} + +void AnimTask_ConversionAlphaBlend(u8 taskId) +{ + if (gTasks[taskId].data[2] == 1) + { + gBattleAnimArgs[7] = 0xFFFF; + gTasks[taskId].data[2]++; + } + else if (gTasks[taskId].data[2] == 2) + { + DestroyAnimVisualTask(taskId); + } + else + { + if (++gTasks[taskId].data[0] == 4) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1]++; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - gTasks[taskId].data[1], gTasks[taskId].data[1])); + if (gTasks[taskId].data[1] == 16) + gTasks[taskId].data[2]++; + } + } +} + +void AnimConversion2(struct Sprite* sprite) +{ + InitSpritePosToAnimTarget(sprite, FALSE); + sprite->animPaused = TRUE; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->callback = AnimConversion2Step; +} + +static void AnimConversion2Step(struct Sprite* sprite) +{ + if (sprite->data[0]) + { + sprite->data[0]--; + } + else + { + sprite->animPaused = FALSE; + sprite->data[0] = 30; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + } +} + +void AnimTask_Conversion2AlphaBlend(u8 taskId) +{ + if (++gTasks[taskId].data[0] == 4) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1]++; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[1], 16 - gTasks[taskId].data[1])); + if (gTasks[taskId].data[1] == 16) + DestroyAnimVisualTask(taskId); + } +} + +void sub_80A5E34(u8 taskId) +{ + u8 i; + + for (i = 0; i < gBattlersCount; i++) + { + if (gBattleAnimArgs[0] == 1 && GetBattlerSide(i) == B_SIDE_PLAYER) + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[i]); + + if (gBattleAnimArgs[1] == 1 && GetBattlerSide(i) == B_SIDE_OPPONENT) + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[i]); + } + + DestroyAnimVisualTask(taskId); +} + +void sub_80A5EA8(u8 taskId) +{ + u8 i; + + for (i = 0; i < gBattlersCount; i++) + SetHealthboxSpriteVisible(gHealthboxSpriteIds[i]); + + DestroyAnimVisualTask(taskId); +} + +void AnimMoon(struct Sprite* sprite) +{ + if (IsContest()) + { + sprite->pos1.x = 48; + sprite->pos1.y = 40; + } + else + { + sprite->pos1.x = gBattleAnimArgs[0]; + sprite->pos1.y = gBattleAnimArgs[1]; + } + + sprite->oam.shape = SPRITE_SHAPE(8x8); + sprite->oam.size = SPRITE_SIZE(64x32); + sprite->data[0] = 0; + sprite->callback = AnimMoonStep; +} + +static void AnimMoonStep(struct Sprite* sprite) +{ + if (sprite->data[0]) + DestroyAnimSprite(sprite); +} + +void AnimMoonlightSparkle(struct Sprite* sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[0]; + sprite->pos1.y = gBattleAnimArgs[1]; + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->data[3] = 0; + sprite->data[4] = 1; + sprite->callback = AnimMoonlightSparkleStep; +} + +static void AnimMoonlightSparkleStep(struct Sprite* sprite) +{ + if (++sprite->data[1] > 1) + { + sprite->data[1] = 0; + if (sprite->data[2] < 120) + { + sprite->pos1.y++; + sprite->data[2]++; + } + } + + if (sprite->data[0]) + DestroyAnimSprite(sprite); +} + +void AnimTask_FadeScreenBlueStep(u8); + + +void AnimTask_FadeScreenBlue(u8 taskId) +{ + int a = sub_8075BE8(1, 0, 0, 0, 0, 0, 0) & 0xFFFF; + int b; + int c; + int d; + + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = a; + gTasks[taskId].data[4] = 0; + gTasks[taskId].data[5] = 0; + gTasks[taskId].data[6] = 0; + gTasks[taskId].data[7] = 13; + gTasks[taskId].data[8] = 14; + gTasks[taskId].data[9] = 15; + b = sub_8075CB8(1, 1, 1, 1); + c = a | b; + StorePointerInVars(&gTasks[taskId].data[14], &gTasks[taskId].data[15], (void*)c); + b = b | (0x10000 << IndexOfSpritePaletteTag(ANIM_TAG_MOON)); + d = IndexOfSpritePaletteTag(ANIM_TAG_GREEN_SPARKLE); + BeginNormalPaletteFade((0x10000 << d) | b, 0, 0, 16, RGB(27, 29, 31)); + gTasks[taskId].func = AnimTask_FadeScreenBlueStep; + gTasks[taskId].func(taskId); +} + +void AnimTask_FadeScreenBlueStep(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + if (++task->data[1] > 0) + { + u16 color; + u16 bitmask; + u16 r3; + u16 i; + u16 j; + task->data[1] = 0; + if (++task->data[2] <= 15) + { + u16 red; + u16 green; + u16 blue; + task->data[4] += task->data[7]; + task->data[5] += task->data[8]; + task->data[6] += task->data[9]; + red = task->data[4] >> 3; + green = task->data[5] >> 3; + blue = task->data[6] >> 3; + color = RGB(red, green, blue); + } + else + { + color = RGB(27, 29, 31); + task->data[0]++; + } + + bitmask = 1; + r3 = 0; + for (i = 0; i <= 15; i++) + { + if (task->data[3] & bitmask) + { + for (j = 1; j <= 15; j++) + { + gPlttBufferFaded[r3 + j] = color; + } + } + + bitmask <<= 1; + r3 += 16; + } + } + break; + case 1: + if (!gPaletteFade.active) + { + u8 spriteId; + for (spriteId = 0; spriteId < MAX_SPRITES; spriteId++) + { + if (gSprites[spriteId].template == &gMoonSpriteTemplate || gSprites[spriteId].template == &gMoonlightSparkleSpriteTemplate) + gSprites[spriteId].data[0] = 1; + } + + task->data[1] = 0; + task->data[0]++; + } + break; + case 2: + if (++task->data[1] > 30) + { + BeginNormalPaletteFade((u32)LoadPointerFromVars(task->data[14], task->data[15]), 0, 16, 0, RGB(27, 29, 31)); + task->data[0]++; + } + break; + case 3: + if (!gPaletteFade.active) + DestroyAnimVisualTask(taskId); + break; + } +} + +void AnimHornHit(struct Sprite* sprite) +{ + if (gBattleAnimArgs[2] < 2) + gBattleAnimArgs[2] = 2; + + if (gBattleAnimArgs[2] > 0x7F) + gBattleAnimArgs[2] = 0x7F; + + sprite->data[0] = 0; + sprite->data[1] = gBattleAnimArgs[2]; + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[0]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1]; + sprite->data[6] = sprite->pos1.x; + sprite->data[7] = sprite->pos1.y; + if (IsContest()) + { + sprite->oam.matrixNum = ST_OAM_HFLIP; + sprite->pos1.x += 40; + sprite->pos1.y += 20; + sprite->data[2] = sprite->pos1.x << 7; + sprite->data[3] = -0x1400 / sprite->data[1]; + sprite->data[4] = sprite->pos1.y << 7; + sprite->data[5] = -0xA00 / sprite->data[1]; + } + else if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + { + sprite->pos1.x -= 40; + sprite->pos1.y += 20; + sprite->data[2] = sprite->pos1.x << 7; + sprite->data[3] = 0x1400 / sprite->data[1]; + sprite->data[4] = sprite->pos1.y << 7; + sprite->data[5] = -0xA00 / sprite->data[1]; + } + else + { + sprite->pos1.x += 40; + sprite->pos1.y -= 20; + sprite->data[2] = sprite->pos1.x << 7; + sprite->data[3] = -0x1400 / sprite->data[1]; + sprite->data[4] = sprite->pos1.y << 7; + sprite->data[5] = 0xA00 / sprite->data[1]; + sprite->oam.matrixNum = (ST_OAM_HFLIP | ST_OAM_VFLIP); + } + + sprite->callback = AnimHornHitStep; +} + +static void AnimHornHitStep(struct Sprite* sprite) +{ + sprite->data[2] += sprite->data[3]; + sprite->data[4] += sprite->data[5]; + sprite->pos1.x = sprite->data[2] >> 7; + sprite->pos1.y = sprite->data[4] >> 7; + if (--sprite->data[1] == 1) + { + sprite->pos1.x = sprite->data[6]; + sprite->pos1.y = sprite->data[7]; + } + + if (sprite->data[1] == 0) + DestroyAnimSprite(sprite); +} + +void AnimTask_DoubleTeam(u8 taskId) +{ + u16 i; + int obj; + u16 r3; + u16 r4; + struct Task* task = &gTasks[taskId]; + + task->data[0] = GetAnimBattlerSpriteId(ANIM_ATTACKER); + task->data[1] = AllocSpritePalette(ANIM_TAG_BENT_SPOON); + r3 = (task->data[1] * 16) + 0x100; + r4 = (gSprites[task->data[0]].oam.paletteNum + 16) << 4; + for (i = 1; i < 16; i++) + gPlttBufferUnfaded[r3 + i] = gPlttBufferUnfaded[r4 + i]; + + BlendPalette(r3, 16, 11, RGB_BLACK); + task->data[3] = 0; + i = 0; + while (i < 2 && (obj = CloneBattlerSpriteWithBlend(0)) >= 0) + { + gSprites[obj].oam.paletteNum = task->data[1]; + gSprites[obj].data[0] = 0; + gSprites[obj].data[1] = i << 7; + gSprites[obj].data[2] = taskId; + gSprites[obj].callback = AnimTask_DoubleTeamCallback; + task->data[3]++; + i++; + } + + task->func = AnimTask_DoubleTeamStep; + if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1) + ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG1_ON); + else + ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON); +} + +static void AnimTask_DoubleTeamStep(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + if (!task->data[3]) + { + if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1) + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG1_ON); + else + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON); + + FreeSpritePaletteByTag(ANIM_TAG_BENT_SPOON); + DestroyAnimVisualTask(taskId); + } +} + +static void AnimTask_DoubleTeamCallback(struct Sprite* sprite) +{ + if (++sprite->data[3] > 1) + { + sprite->data[3] = 0; + sprite->data[0]++; + } + + if (sprite->data[0] > 64) + { + gTasks[sprite->data[2]].data[3]--; + obj_delete_but_dont_free_vram(sprite); + } + else + { + sprite->data[4] = gSineTable[sprite->data[0]] / 6; + sprite->data[5] = gSineTable[sprite->data[0]] / 13; + sprite->data[1] = (sprite->data[1] + sprite->data[5]) & 0xFF; + sprite->pos2.x = Sin(sprite->data[1], sprite->data[4]); + } +} + +void AnimSuperFang(struct Sprite* sprite) +{ + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + sprite->callback = RunStoredCallbackWhenAnimEnds; +} + +void AnimTask_MusicNotesRainbowBlend(u8 taskId) +{ + u16 i; + u16 j; + u16 index; + + index = IndexOfSpritePaletteTag(sParticlesColorBlendTable[0][0]); + if (index != 0xFF) + { + index = (index << 4) + 0x100; + for (i = 1; i < NELEMS(sParticlesColorBlendTable[0]); i++) + gPlttBufferFaded[index + i] = sParticlesColorBlendTable[0][i]; + } + + for (j = 1; j < NELEMS(sParticlesColorBlendTable); j++) + { + index = AllocSpritePalette(sParticlesColorBlendTable[j][0]); + if (index != 0xFF) + { + index = (index << 4) + 0x100; + for (i = 1; i < NELEMS(sParticlesColorBlendTable[0]); i++) + gPlttBufferFaded[index + i] = sParticlesColorBlendTable[j][i]; + } + } + DestroyAnimVisualTask(taskId); +} + +// clears the rainbow effect for musical notes. +void AnimTask_MusicNotesClearRainbowBlend(u8 taskId) +{ + u16 i; + + for (i = 1; i < NELEMS(sParticlesColorBlendTable); i++) + FreeSpritePaletteByTag(sParticlesColorBlendTable[i][0]); + + DestroyAnimVisualTask(taskId); +} + +void AnimWavyMusicNotes(struct Sprite* sprite) +{ + u8 index; + u8 a; + u8 b; + + SetSpriteCoordsToAnimAttackerCoords(sprite); + StartSpriteAnim(sprite, gBattleAnimArgs[0]); + if ((index = IndexOfSpritePaletteTag(sParticlesColorBlendTable[gBattleAnimArgs[1]][0])) != 0xFF) + sprite->oam.paletteNum = index; + + sprite->data[1] = gBattleAnimArgs[1]; + sprite->data[2] = 0; + sprite->data[3] = gBattleAnimArgs[2]; + if (IsContest()) + { + a = 48; + b = 40; + } + else + { + a = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + b = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + } + + sprite->data[4] = sprite->pos1.x << 4; + sprite->data[5] = sprite->pos1.y << 4; + AnimWavyMusicNotesGetNextPos(a - sprite->pos1.x, b - sprite->pos1.y, &sprite->data[6], &sprite->data[7], 40); + sprite->callback = AnimWavyMusicNotesStep; +} + +static void AnimWavyMusicNotesGetNextPos(s16 a, s16 b, s16* c, s16* d, s8 e) +{ + int f; + int g; + + if (a < 0) + e = -e; + + f = a << 8; + g = f / e; + if (g == 0) + g = 1; + + *c = f / g; + *d = (b << 8) / g; +} + +static void AnimWavyMusicNotesStep(struct Sprite* sprite) +{ + s16 y, yDelta; + u8 index; + + sprite->data[0]++; + yDelta = sprite->data[0] * 5 - ((sprite->data[0] * 5 / 256) << 8); + sprite->data[4] += sprite->data[6]; + sprite->data[5] += sprite->data[7]; + sprite->pos1.x = sprite->data[4] >> 4; + sprite->pos1.y = sprite->data[5] >> 4; + sprite->pos2.y = Sin(yDelta, 15); + + y = sprite->pos1.y; + if (sprite->pos1.x < -16 || sprite->pos1.x > 256 || y < -16 || y > 128) + { + DestroySpriteAndMatrix(sprite); + } + else + { + if (sprite->data[3] && ++sprite->data[2] > sprite->data[3]) + { + sprite->data[2] = 0; + if (++sprite->data[1] > 3) + sprite->data[1] = 0; + + index = IndexOfSpritePaletteTag(sParticlesColorBlendTable[sprite->data[1]][0]); + if (index != 0xFF) + sprite->oam.paletteNum = index; + } + } +} + +void AnimFlyingMusicNotes(struct Sprite* sprite) +{ + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + gBattleAnimArgs[1] *= -1; + + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[1]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2]; + StartSpriteAnim(sprite, gBattleAnimArgs[0]); + sprite->data[2] = 0; + sprite->data[3] = 0; + sprite->data[4] = sprite->pos1.x << 4; + sprite->data[5] = sprite->pos1.y << 4; + sprite->data[6] = (gBattleAnimArgs[1] << 4) / 5; + sprite->data[7] = (gBattleAnimArgs[2] << 7) / 5; + sprite->callback = AnimFlyingMusicNotesStep; +} + +static void AnimFlyingMusicNotesStep(struct Sprite* sprite) +{ + sprite->data[4] += sprite->data[6]; + sprite->data[5] += sprite->data[7]; + sprite->pos1.x = sprite->data[4] >> 4; + sprite->pos1.y = sprite->data[5] >> 4; + if (sprite->data[0] > 5 && sprite->data[3] == 0) + { + sprite->data[2] = (sprite->data[2] + 16) & 0xFF; + sprite->pos2.x = Cos(sprite->data[2], 18); + sprite->pos2.y = Sin(sprite->data[2], 18); + if (sprite->data[2] == 0) + sprite->data[3] = 1; + } + + if (++sprite->data[0] == 48) + DestroySpriteAndMatrix(sprite); +} + +void AnimBellyDrumHand(struct Sprite* sprite) +{ + s16 a; + + if (gBattleAnimArgs[0] == 1) + { + sprite->oam.matrixNum = ST_OAM_HFLIP; + a = 16; + } + else + { + a = -16; + } + + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + a; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + 8; + sprite->data[0] = 8; + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +void AnimSlowFlyingMusicNotes(struct Sprite* sprite) +{ + s16 xDiff; + u8 index; + + SetSpriteCoordsToAnimAttackerCoords(sprite); + sprite->pos1.y += 8; + StartSpriteAnim(sprite, gBattleAnimArgs[1]); + index = IndexOfSpritePaletteTag(sParticlesColorBlendTable[gBattleAnimArgs[2]][0]); + if (index != 0xFF) + sprite->oam.paletteNum = index; + + xDiff = (gBattleAnimArgs[0] == 0) ? -32 : 32; + sprite->data[0] = 40; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = xDiff + sprite->data[1]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sprite->data[3] - 40; + InitAnimLinearTranslation(sprite); + sprite->data[5] = gBattleAnimArgs[3]; + sprite->callback = AnimSlowFlyingMusicNotesStep; +} + +static void AnimSlowFlyingMusicNotesStep(struct Sprite* sprite) +{ + if (!AnimTranslateLinear(sprite)) + { + s16 xDiff; + + xDiff = Sin(sprite->data[5], 8); + if (sprite->pos2.x < 0) + xDiff = -xDiff; + + sprite->pos2.x += xDiff; + sprite->pos2.y += Sin(sprite->data[5], 4); + sprite->data[5] = (sprite->data[5] + 8) & 0xFF; + } + else + { + DestroyAnimSprite(sprite); + } +} + +void SetSpriteNextToMonHead(u8 battler, struct Sprite* sprite) +{ + if (GetBattlerSide(battler) == B_SIDE_PLAYER) + sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_RIGHT) + 8; + else + sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_LEFT) - 8; + + sprite->pos1.y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) - (s16)GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_HEIGHT) / 4; +} + +void AnimThoughtBubble(struct Sprite* sprite) +{ + u8 a; + u8 battler; + + if (gBattleAnimArgs[0] == 0) + battler = gBattleAnimAttacker; + else + battler = gBattleAnimTarget; + + SetSpriteNextToMonHead(battler, sprite); + a = (GetBattlerSide(battler) == B_SIDE_PLAYER) ? 0 : 1; + sprite->data[0] = gBattleAnimArgs[1]; + sprite->data[1] = a + 2; + StartSpriteAnim(sprite, a); + StoreSpriteCallbackInData6(sprite, AnimThoughtBubbleStep); + sprite->callback = RunStoredCallbackWhenAnimEnds; +} + +static void AnimThoughtBubbleStep(struct Sprite* sprite) +{ + if (--sprite->data[0] == 0) + { + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + StartSpriteAnim(sprite, sprite->data[1]); + sprite->callback = RunStoredCallbackWhenAnimEnds; + } +} + +void AnimMetronomeFinger(struct Sprite* sprite) +{ + u8 battler; + + if (gBattleAnimArgs[0] == 0) + battler = gBattleAnimAttacker; + else + battler = gBattleAnimTarget; + + SetSpriteNextToMonHead(battler, sprite); + sprite->data[0] = 0; + StoreSpriteCallbackInData6(sprite, AnimMetronomeFingerStep); + sprite->callback = RunStoredCallbackWhenAffineAnimEnds; +} + +static void AnimMetronomeFingerStep(struct Sprite* sprite) +{ + if (++sprite->data[0] > 16) + { + StartSpriteAffineAnim(sprite, 1); + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); + sprite->callback = RunStoredCallbackWhenAffineAnimEnds; + } +} + +void AnimFollowMeFinger(struct Sprite* sprite) +{ + u8 battler; + + if (gBattleAnimArgs[0] == 0) + battler = gBattleAnimAttacker; + else + battler = gBattleAnimTarget; + + sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X); + sprite->pos1.y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP); + if (sprite->pos1.y <= 9) + sprite->pos1.y = 10; + + sprite->data[0] = 1; + sprite->data[1] = 0; + sprite->data[2] = sprite->subpriority; + sprite->data[3] = sprite->subpriority + 4; + sprite->data[4] = 0; + StoreSpriteCallbackInData6(sprite, AnimFollowMeFingerStep1); + sprite->callback = RunStoredCallbackWhenAffineAnimEnds; +} + +static void AnimFollowMeFingerStep1(struct Sprite* sprite) +{ + if (++sprite->data[4] > 12) + sprite->callback = AnimFollowMeFingerStep2; +} + +static void AnimFollowMeFingerStep2(struct Sprite* sprite) +{ + s16 x1, x2; + + sprite->data[1] += 4; + if (sprite->data[1] > 254) + { + if (--sprite->data[0] == 0) + { + sprite->pos2.x = 0; + sprite->callback = AnimMetronomeFingerStep; + return; + } + else + { + sprite->data[1] &= 0xFF; + } + } + + if (sprite->data[1] > 0x4F) + sprite->subpriority = sprite->data[3]; + + if (sprite->data[1] > 0x9F) + sprite->subpriority = sprite->data[2]; + + x1 = gSineTable[sprite->data[1]]; + x2 = x1 >> 3; + sprite->pos2.x = (x1 >> 3) + (x2 >> 1); +} + +void AnimTauntFinger(struct Sprite* sprite) +{ + u8 battler; + + if (gBattleAnimArgs[0] == 0) + battler = gBattleAnimAttacker; + else + battler = gBattleAnimTarget; + + SetSpriteNextToMonHead(battler, sprite); + if (GetBattlerSide(battler) == B_SIDE_PLAYER) + { + StartSpriteAnim(sprite, 0); + sprite->data[0] = 2; + } + else + { + StartSpriteAnim(sprite, 1); + sprite->data[0] = 3; + } + + sprite->callback = AnimTauntFingerStep1; +} + +static void AnimTauntFingerStep1(struct Sprite* sprite) +{ + if (++sprite->data[1] > 10) + { + sprite->data[1] = 0; + StartSpriteAnim(sprite, sprite->data[0]); + StoreSpriteCallbackInData6(sprite, AnimTauntFingerStep2); + sprite->callback = RunStoredCallbackWhenAnimEnds; + } +} + +static void AnimTauntFingerStep2(struct Sprite* sprite) +{ + if (++sprite->data[1] > 5) + DestroyAnimSprite(sprite); +} + diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c new file mode 100644 index 000000000..23be07785 --- /dev/null +++ b/src/battle_anim_effects_2.c @@ -0,0 +1,3824 @@ +#include "global.h" +#include "malloc.h" +#include "battle_anim.h" +#include "battle_interface.h" +#include "decompress.h" +#include "gpu_regs.h" +#include "graphics.h" +#include "main.h" +#include "math_util.h" +#include "palette.h" +#include "random.h" +#include "scanline_effect.h" +#include "sound.h" +#include "trig.h" +#include "util.h" +#include "constants/songs.h" + +static void sub_80A6ED8(struct Sprite *); +static void sub_80A7058(struct Sprite *); +static void sub_80A7080(struct Sprite *); +static void AnimTask_WithdrawStep(u8); +static void AnimSwordsDanceBladeStep(struct Sprite *); +static void sub_80A7A18(struct Sprite *); +static void AnimFallingCoin_Step(struct Sprite *); +static void AnimBulletSeed_Step1(struct Sprite *); +static void AnimBulletSeed_Step2(struct Sprite *); +static void AnimViceGripPincerStep(struct Sprite *); +static void AnimGuillotinePincerStep1(struct Sprite *); +static void AnimGuillotinePincerStep2(struct Sprite *); +static void AnimGuillotinePincerStep3(struct Sprite *); +static void AnimTask_GrowAndGreyscaleStep(u8); +static void AnimTask_MinimizeStep1(u8); +static void CreateMinimizeSprite(struct Task *, u8); +static void ClonedMinizeSprite_Step(struct Sprite *); +static void AnimTask_SplashStep(u8); +static void AnimTask_GrowAndShrinkStep(u8); +static void ThrashMoveMonStep(u8); +static void ThrashMoveMon(u8); +static void AnimTask_SketchDrawMon(u8); +static void AnimPencil_Step(struct Sprite *); +static void AnimSoftBoiledEgg_Step1(struct Sprite *); +static void AnimSoftBoiledEgg_Step2(struct Sprite *); +static void AnimSoftBoiledEgg_Step3(struct Sprite *); +static void AnimSoftBoiledEgg_Step3_Callback1(struct Sprite *); +static void AnimSoftBoiledEgg_Step3_Callback2(struct Sprite *); +static void AnimSoftBoiledEgg_Step4(struct Sprite *); +static void AnimSoftBoiledEgg_Step4_Callback(struct Sprite *); +static void StretchAttacker_Step(u8); +static void ExtremeSpeedImpact_Step(u8); +static void ExtremeSpeedMonReappear_Step(u8); +static void SpeedDust_Step1(u8); +static void FakeOutStep1(u8); +static void FakeOutStep2(u8); +static void AnimRedHeartProjectile_Step(struct Sprite *); +static void AnimRedHeartRising_Step(struct Sprite *); +static void HeartsBackground_Step(u8); +static void ScaryFace_Step(u8); +static void AnimOrbitFastStep(struct Sprite *); +static void AnimOrbitScatterStep(struct Sprite *); +static void AnimMovementWaves_Step(struct Sprite *); +static void UproarDistortion_Step(u8); +static void AnimJaggedMusicNote_Step(struct Sprite *); +static void AnimPerishSongMusicNote_Step1(struct Sprite *); +static void AnimPerishSongMusicNote_Step2(struct Sprite *); + +// Data +// Unused +static const struct SpriteTemplate sUnknown_83E3ADC = +{ + .tileTag = ANIM_TAG_FINGER, + .paletteTag = ANIM_TAG_FINGER, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A6E48, +}; + +static const union AnimCmd sUnknown_83E3AF4[] = +{ + ANIMCMD_FRAME(4, 1), + ANIMCMD_END, +}; + +static const union AnimCmd *const sUnknown_83E3AFC[] = +{ + sUnknown_83E3AF4, +}; + +// Unused +static const struct SpriteTemplate sUnknown_83E3B00 = +{ + .tileTag = ANIM_TAG_MUSIC_NOTES, + .paletteTag = ANIM_TAG_MUSIC_NOTES, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A6E98, +}; + +// Unused +static const struct SpriteTemplate sUnknown_83E3B18 = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A6F8C, +}; + +// Unused +static const struct SpriteTemplate sUnknown_83E3B30 = +{ + .tileTag = ANIM_TAG_CLAMP, + .paletteTag = ANIM_TAG_CLAMP, + .oam = &gOamData_AffineNormal_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_83E7910, + .callback = sub_80A7020, +}; + +static const union AnimCmd sUnknown_83E3B48[] = +{ + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(48, 3), + ANIMCMD_END, +}; + +static const union AnimCmd *const sUnknown_83E3B5C[] = +{ + sUnknown_83E3B48, +}; + +static const union AffineAnimCmd sUnknown_83E3B60[] = +{ + AFFINEANIMCMD_FRAME(80, 80, 0, 0), + AFFINEANIMCMD_FRAME(9, 9, 0, 18), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const sUnknown_83E3B78[] = +{ + sUnknown_83E3B60, +}; + +// Unused +static const struct SpriteTemplate sUnknown_83E3B7C = +{ + .tileTag = ANIM_TAG_EXPLOSION_6, + .paletteTag = ANIM_TAG_EXPLOSION_6, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = sUnknown_83E3B5C, + .images = NULL, + .affineAnims = sUnknown_83E3B78, + .callback = AnimSpriteOnMonPos, +}; + +static const union AnimCmd sKinesisZapEnergyAnimCmds[] = +{ + ANIMCMD_FRAME(0, 3, .hFlip = TRUE), + ANIMCMD_FRAME(8, 3, .hFlip = TRUE), + ANIMCMD_FRAME(16, 3, .hFlip = TRUE), + ANIMCMD_FRAME(24, 3, .hFlip = TRUE), + ANIMCMD_FRAME(32, 3, .hFlip = TRUE), + ANIMCMD_FRAME(40, 3, .hFlip = TRUE), + ANIMCMD_FRAME(48, 3, .hFlip = TRUE), + ANIMCMD_LOOP(1), + ANIMCMD_END, +}; + +static const union AnimCmd *const sKinesisZapEnergyAnimTable[] = +{ + sKinesisZapEnergyAnimCmds, +}; + +const struct SpriteTemplate gKinesisZapEnergySpriteTemplate = +{ + .tileTag = ANIM_TAG_ALERT, + .paletteTag = ANIM_TAG_ALERT, + .oam = &gOamData_AffineOff_ObjNormal_32x16, + .anims = sKinesisZapEnergyAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = Anim_KinesisZapEnergy, +}; + +static const union AffineAnimCmd sSwordsDanceBladeAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(16, 256, 0, 0), + AFFINEANIMCMD_FRAME(20, 0, 0, 12), + AFFINEANIMCMD_FRAME(0, 0, 0, 32), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const sSwordsDanceBladeAffineAnimTable[] = +{ + sSwordsDanceBladeAffineAnimCmds, +}; + +const struct SpriteTemplate gSwordsDanceBladeSpriteTemplate = +{ + .tileTag = ANIM_TAG_SWORD, + .paletteTag = ANIM_TAG_SWORD, + .oam = &gOamData_AffineNormal_ObjBlend_32x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sSwordsDanceBladeAffineAnimTable, + .callback = Anim_SwordsDanceBlade, +}; + +const struct SpriteTemplate gSonicBoomSpriteTemplate = +{ + .tileTag = ANIM_TAG_AIR_WAVE, + .paletteTag = ANIM_TAG_AIR_WAVE, + .oam = &gOamData_AffineDouble_ObjBlend_32x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSonicBoomProjectile, +}; + +const struct SpriteTemplate gAirWaveProjectileSpriteTemplate = +{ + .tileTag = ANIM_TAG_AIR_WAVE, + .paletteTag = ANIM_TAG_AIR_WAVE, + .oam = &gOamData_AffineOff_ObjBlend_32x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimAirWaveProjectile, +}; + +static const union AffineAnimCmd sGrowingRingAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(32, 32, 0, 0), + AFFINEANIMCMD_FRAME(7, 7, 0, -56), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sWaterPulseRingAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(5, 5, 0, 10), + AFFINEANIMCMD_FRAME(-10, -10, 0, 10), + AFFINEANIMCMD_FRAME(10, 10, 0, 10), + AFFINEANIMCMD_FRAME(-10, -10, 0, 10), + AFFINEANIMCMD_FRAME(10, 10, 0, 10), + AFFINEANIMCMD_FRAME(-10, -10, 0, 10), + AFFINEANIMCMD_FRAME(10, 10, 0, 10), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gGrowingRingAffineAnimTable[] = +{ + sGrowingRingAffineAnimCmds, +}; + +static const union AffineAnimCmd *const sWaterPulseRingAffineAnimTable[] = +{ + sWaterPulseRingAffineAnimCmds, +}; + +const struct SpriteTemplate gSupersonicWaveSpriteTemplate = +{ + .tileTag = ANIM_TAG_GOLD_RING, + .paletteTag = ANIM_TAG_GOLD_RING, + .oam = &gOamData_AffineDouble_ObjNormal_16x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gGrowingRingAffineAnimTable, + .callback = TranslateAnimSpriteToTargetMonLocation, +}; + +const struct SpriteTemplate gScreechWaveSpriteTemplate = +{ + .tileTag = ANIM_TAG_PURPLE_RING, + .paletteTag = ANIM_TAG_PURPLE_RING, + .oam = &gOamData_AffineDouble_ObjNormal_16x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gGrowingRingAffineAnimTable, + .callback = TranslateAnimSpriteToTargetMonLocation, +}; + +const struct SpriteTemplate gMetalSoundSpriteTemplate = +{ + .tileTag = ANIM_TAG_METAL_SOUND_WAVES, + .paletteTag = ANIM_TAG_METAL_SOUND_WAVES, + .oam = &gOamData_AffineDouble_ObjNormal_32x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gGrowingRingAffineAnimTable, + .callback = TranslateAnimSpriteToTargetMonLocation, +}; + +const struct SpriteTemplate gWaterPulseRingSpriteTemplate = +{ + .tileTag = ANIM_TAG_BLUE_RING_2, + .paletteTag = ANIM_TAG_BLUE_RING_2, + .oam = &gOamData_AffineDouble_ObjNormal_16x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sWaterPulseRingAffineAnimTable, + .callback = AnimWaterPulseRing, +}; + +const struct SpriteTemplate gEggThrowSpriteTemplate = +{ + .tileTag = ANIM_TAG_LARGE_FRESH_EGG, + .paletteTag = ANIM_TAG_LARGE_FRESH_EGG, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimThrowProjectile, +}; + +static const struct SpriteTemplate sUnknown_83E3D18 = +{ + .tileTag = ANIM_TAG_VOID_LINES, + .paletteTag = ANIM_TAG_VOID_LINES, + .oam = &gOamData_AffineOff_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A79E8, +}; + +static const union AnimCmd sCoinAnimCmds[] = +{ + ANIMCMD_FRAME(8, 1), + ANIMCMD_END, +}; + +static const union AnimCmd *const sCoinAnimTable[] = +{ + sCoinAnimCmds, +}; + +static const union AffineAnimCmd sFallingCoinAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 10, 1), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd *const sFallingCoinAffineAnimTable[] = +{ + sFallingCoinAffineAnimCmds, +}; + +const struct SpriteTemplate gCoinThrowSpriteTemplate = +{ + .tileTag = ANIM_TAG_COIN, + .paletteTag = ANIM_TAG_COIN, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = sCoinAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimCoinThrow, +}; + +const struct SpriteTemplate gFallingCoinSpriteTemplate = +{ + .tileTag = ANIM_TAG_COIN, + .paletteTag = ANIM_TAG_COIN, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = sCoinAnimTable, + .images = NULL, + .affineAnims = sFallingCoinAffineAnimTable, + .callback = AnimFallingCoin, +}; + +static const union AffineAnimCmd sBulletSeedAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 20, 1), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd *const sBulletSeedAffineAnimTable[] = +{ + sBulletSeedAffineAnimCmds, +}; + +const struct SpriteTemplate gBulletSeedSpriteTemplate = +{ + .tileTag = ANIM_TAG_SEED, + .paletteTag = ANIM_TAG_SEED, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sBulletSeedAffineAnimTable, + .callback = AnimBulletSeed, +}; + +static const union AffineAnimCmd sRazorWindTornadoAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(16, 256, 0, 0), + AFFINEANIMCMD_FRAME(4, 0, 0, 40), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const sRazorWindTornadoAffineAnimTable[] = +{ + sRazorWindTornadoAffineAnimCmds, +}; + +const struct SpriteTemplate gRazorWindTornadoSpriteTemplate = +{ + .tileTag = ANIM_TAG_GUST, + .paletteTag = ANIM_TAG_GUST, + .oam = &gOamData_AffineNormal_ObjNormal_32x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sRazorWindTornadoAffineAnimTable, + .callback = AnimRazorWindTornado, +}; + +static const union AnimCmd sViceGripAnimCmds1[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(32, 20), + ANIMCMD_END, +}; + +static const union AnimCmd sViceGripAnimCmds2[] = +{ + ANIMCMD_FRAME(0, 3, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(16, 3, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(32, 20, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd *const sViceGripAnimTable[] = +{ + sViceGripAnimCmds1, + sViceGripAnimCmds2, +}; + +const struct SpriteTemplate gViceGripSpriteTemplate = +{ + .tileTag = ANIM_TAG_CUT, + .paletteTag = ANIM_TAG_CUT, + .oam = &gOamData_AffineOff_ObjBlend_32x32, + .anims = sViceGripAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimViceGripPincer, +}; + +static const union AnimCmd sGuillotineAnimCmds1[] = +{ + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(16, 2), + ANIMCMD_FRAME(32, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sGuillotineAnimCmds2[] = +{ + ANIMCMD_FRAME(0, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(16, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(32, 1, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd *const sGuillotineAnimTable[] = +{ + sGuillotineAnimCmds1, + sGuillotineAnimCmds2, +}; + +const struct SpriteTemplate gGuillotineSpriteTemplate = +{ + .tileTag = ANIM_TAG_CUT, + .paletteTag = ANIM_TAG_CUT, + .oam = &gOamData_AffineOff_ObjBlend_32x32, + .anims = sGuillotineAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimGuillotinePincer, +}; + +static const union AffineAnimCmd sSplashEffectAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(-6, 4, 0, 8), + AFFINEANIMCMD_FRAME(10, -10, 0, 8), + AFFINEANIMCMD_FRAME(-4, 6, 0, 8), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sGrowAndShrinkAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(-4, -5, 0, 12), + AFFINEANIMCMD_FRAME(0, 0, 0, 24), + AFFINEANIMCMD_FRAME(4, 5, 0, 12), + AFFINEANIMCMD_END, +}; + +static const union AnimCmd sBreathPuffAnimCmds1[] = +{ + ANIMCMD_FRAME(0, 4, .hFlip = TRUE), + ANIMCMD_FRAME(4, 40, .hFlip = TRUE), + ANIMCMD_FRAME(8, 4, .hFlip = TRUE), + ANIMCMD_FRAME(12, 4, .hFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd sBreathPuffAnimCmds2[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(4, 40), + ANIMCMD_FRAME(8, 4), + ANIMCMD_FRAME(12, 4), + ANIMCMD_END, +}; + +static const union AnimCmd *const sBreathPuffAnimTable[] = +{ + sBreathPuffAnimCmds1, + sBreathPuffAnimCmds2, +}; + +const struct SpriteTemplate gBreathPuffSpriteTemplate = +{ + .tileTag = ANIM_TAG_BREATH, + .paletteTag = ANIM_TAG_BREATH, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = sBreathPuffAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimBreathPuff, +}; + +static const union AffineAnimCmd sAngerMarkAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(11, 11, 0, 8), + AFFINEANIMCMD_FRAME(-11, -11, 0, 8), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const sAngerMarkAffineAnimTable[] = +{ + sAngerMarkAffineAnimCmds, +}; + +const struct SpriteTemplate gAngerMarkSpriteTemplate = +{ + .tileTag = ANIM_TAG_ANGER, + .paletteTag = ANIM_TAG_ANGER, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sAngerMarkAffineAnimTable, + .callback = AnimAngerMark, +}; + +static const union AffineAnimCmd sThrashMoveMonAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(-10, 9, 0, 7), + AFFINEANIMCMD_FRAME(20, -20, 0, 7), + AFFINEANIMCMD_FRAME(-20, 20, 0, 7), + AFFINEANIMCMD_FRAME(10, -9, 0, 7), + AFFINEANIMCMD_LOOP(2), + AFFINEANIMCMD_END, +}; + +const struct SpriteTemplate gPencilSpriteTemplate = +{ + .tileTag = ANIM_TAG_PENCIL, + .paletteTag = ANIM_TAG_PENCIL, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimPencil, +}; + +const struct SpriteTemplate gSnoreZSpriteTemplate = +{ + .tileTag = ANIM_TAG_SNORE_Z, + .paletteTag = ANIM_TAG_SNORE_Z, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSnoreZ, +}; + +static const union AnimCmd sExplosionAnimCmds[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(16, 5), + ANIMCMD_FRAME(32, 5), + ANIMCMD_FRAME(48, 5), + ANIMCMD_END, +}; + +static const union AnimCmd *const sExplosionAnimTable[] = +{ + sExplosionAnimCmds, +}; + +const struct SpriteTemplate gExplosionSpriteTemplate = +{ + .tileTag = ANIM_TAG_EXPLOSION, + .paletteTag = ANIM_TAG_EXPLOSION, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sExplosionAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSpriteOnMonPos, +}; + +static const union AffineAnimCmd sSoftBoiledEggAffineAnimCmds1[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -8, 2), + AFFINEANIMCMD_FRAME(0, 0, 8, 4), + AFFINEANIMCMD_FRAME(0, 0, -8, 2), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd sSoftBoiledEggAffineAnimCmds2[] = +{ + AFFINEANIMCMD_FRAME(256, 256, 0, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sSoftBoiledEggAffineAnimCmds3[] = +{ + AFFINEANIMCMD_FRAME(-8, 4, 0, 8), + AFFINEANIMCMD_LOOP(0), + AFFINEANIMCMD_FRAME(16, -8, 0, 8), + AFFINEANIMCMD_FRAME(-16, 8, 0, 8), + AFFINEANIMCMD_LOOP(1), + AFFINEANIMCMD_FRAME(256, 256, 0, 0), + AFFINEANIMCMD_FRAME(0, 0, 0, 15), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const sSoftBoiledEggAffineAnimTable[] = +{ + sSoftBoiledEggAffineAnimCmds1, + sSoftBoiledEggAffineAnimCmds2, + sSoftBoiledEggAffineAnimCmds3, +}; + +const struct SpriteTemplate gSoftBoiledEggSpriteTemplate = +{ + .tileTag = ANIM_TAG_BREAKING_EGG, + .paletteTag = ANIM_TAG_BREAKING_EGG, + .oam = &gOamData_AffineDouble_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sSoftBoiledEggAffineAnimTable, + .callback = AnimSoftBoiledEgg, +}; + +static const union AffineAnimCmd sThinRingExpandingAffineAnimCmds1[] = +{ + AFFINEANIMCMD_FRAME(16, 16, 0, 0), + AFFINEANIMCMD_FRAME(16, 16, 0, 30), + AFFINEANIMCMD_END_ALT(1), +}; + +static const union AffineAnimCmd sThinRingExpandingAffineAnimCmds2[] = +{ + AFFINEANIMCMD_FRAME(16, 16, 0, 0), + AFFINEANIMCMD_FRAME(32, 32, 0, 15), + AFFINEANIMCMD_END_ALT(1), +}; + +static const union AffineAnimCmd sHyperVoiceRingAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(16, 16, 0, 0), + AFFINEANIMCMD_FRAME(11, 11, 0, 45), + AFFINEANIMCMD_END_ALT(1), +}; + +static const union AffineAnimCmd *const sThinRingExpandingAffineAnimTable[] = +{ + sThinRingExpandingAffineAnimCmds1, + sThinRingExpandingAffineAnimCmds2, +}; + +static const union AffineAnimCmd *const sHyperVoiceRingAffineAnimTable[] = +{ + sHyperVoiceRingAffineAnimCmds, +}; + +const struct SpriteTemplate gThinRingExpandingSpriteTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_THIN_RING, + .oam = &gOamData_AffineDouble_ObjNormal_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sThinRingExpandingAffineAnimTable, + .callback = AnimSpriteOnMonPos, +}; + +static const union AffineAnimCmd sThinRingShrinkingAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(512, 512, 0, 0), + AFFINEANIMCMD_FRAME(-16, -16, 0, 30), + AFFINEANIMCMD_END_ALT(1), +}; + +static const union AffineAnimCmd *const sThinRingShrinkingAffineAnimTable[] = +{ + sThinRingShrinkingAffineAnimCmds, +}; + +const struct SpriteTemplate gThinRingShrinkingSpriteTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_THIN_RING, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sThinRingShrinkingAffineAnimTable, + .callback = AnimSpriteOnMonPos, +}; + +const struct SpriteTemplate gBlendThinRingExpandingSpriteTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_THIN_RING, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sThinRingExpandingAffineAnimTable, + .callback = AnimBlendThinRing, +}; + +const struct SpriteTemplate gHyperVoiceRingSpriteTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_THIN_RING, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sHyperVoiceRingAffineAnimTable, + .callback = AnimHyperVoiceRing, +}; + +const struct SpriteTemplate gUproarRingSpriteTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_THIN_RING, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sThinRingExpandingAffineAnimTable, + .callback = AnimUproarRing, +}; + +static const union AffineAnimCmd sStretchAttackerAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(96, -13, 0, 8), + AFFINEANIMCMD_END, +}; + +static const union AnimCmd sSpeedDustAnimCmds[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(4, 3), + ANIMCMD_FRAME(8, 3), + ANIMCMD_FRAME(4, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_END, +}; + +static const union AnimCmd *const sSpeedDustAnimTable[] = +{ + sSpeedDustAnimCmds, +}; + +const struct SpriteTemplate gSpeedDustSpriteTemplate = +{ + .tileTag = ANIM_TAG_SPEED_DUST, + .paletteTag = ANIM_TAG_SPEED_DUST, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = sSpeedDustAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSpeedDust, +}; + +static const s8 sSpeedDustPosTable[][2] = +{ + {30, 28}, + {-20, 24}, + {16, 26}, + {-10, 28}, +}; + +static const union AnimCmd sBellAnimCmds[] = +{ + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(16, 6), + ANIMCMD_FRAME(32, 15), + ANIMCMD_FRAME(16, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(16, 6, .hFlip = TRUE), + ANIMCMD_FRAME(32, 15, .hFlip = TRUE), + ANIMCMD_FRAME(16, 6, .hFlip = TRUE), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(16, 6), + ANIMCMD_FRAME(32, 15), + ANIMCMD_FRAME(16, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_END, +}; + +static const union AnimCmd *const sBellAnimTable[] = +{ + sBellAnimCmds, +}; + +const struct SpriteTemplate gBellSpriteTemplate = +{ + .tileTag = ANIM_TAG_BELL, + .paletteTag = ANIM_TAG_BELL, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sBellAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSpriteOnMonPos, +}; + +const u16 gMusicNotePaletteTagsTable[] = +{ + ANIM_TAG_MUSIC_NOTES_2, + ANIM_SPRITES_START - 1, + ANIM_SPRITES_START - 2, +}; + +const struct SpriteTemplate gHealBellMusicNoteSpriteTemplate = +{ + .tileTag = ANIM_TAG_MUSIC_NOTES_2, + .paletteTag = ANIM_TAG_MUSIC_NOTES_2, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimHealBellMusicNote, +}; + +const struct SpriteTemplate gMagentaHeartSpriteTemplate = +{ + .tileTag = ANIM_TAG_MAGENTA_HEART, + .paletteTag = ANIM_TAG_MAGENTA_HEART, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMagentaHeart, +}; + +static const union AffineAnimCmd sUnknown_83E4200[] = +{ + AFFINEANIMCMD_FRAME(10, -13, 0, 10), + AFFINEANIMCMD_FRAME(-10, 13, 0, 10), + AFFINEANIMCMD_END, +}; + +const struct SpriteTemplate gRedHeartProjectileSpriteTemplate = +{ + .tileTag = ANIM_TAG_RED_HEART, + .paletteTag = ANIM_TAG_RED_HEART, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimRedHeartProjectile, +}; + +const struct SpriteTemplate gRedHeartBurstSpriteTemplate = +{ + .tileTag = ANIM_TAG_RED_HEART, + .paletteTag = ANIM_TAG_RED_HEART, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimParticuleBurst, +}; + +const struct SpriteTemplate gRedHeartRisingSpriteTemplate = +{ + .tileTag = ANIM_TAG_RED_HEART, + .paletteTag = ANIM_TAG_RED_HEART, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimRedHeartRising, +}; + +static const union AffineAnimCmd sHiddenPowerOrbAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(128, 128, 0, 0), + AFFINEANIMCMD_FRAME(8, 8, 0, 1), + AFFINEANIMCMD_JUMP(1), +}; + +static const union AffineAnimCmd *const sHiddenPowerOrbAffineAnimTable[] = +{ + sHiddenPowerOrbAffineAnimCmds, +}; + +const struct SpriteTemplate gHiddenPowerOrbSpriteTemplate = +{ + .tileTag = ANIM_TAG_RED_ORB, + .paletteTag = ANIM_TAG_RED_ORB, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sHiddenPowerOrbAffineAnimTable, + .callback = AnimOrbitFast, +}; + +const struct SpriteTemplate gHiddenPowerOrbScatterSpriteTemplate = +{ + .tileTag = ANIM_TAG_RED_ORB, + .paletteTag = ANIM_TAG_RED_ORB, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sHiddenPowerOrbAffineAnimTable, + .callback = AnimOrbitScatter, +}; + +static const union AffineAnimCmd sSpitUpOrbAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(128, 128, 0, 0), + AFFINEANIMCMD_FRAME(8, 8, 0, 1), + AFFINEANIMCMD_JUMP(1), +}; + +static const union AffineAnimCmd *const sSpitUpOrbAffineAnimTable[] = +{ + sSpitUpOrbAffineAnimCmds, +}; + +const struct SpriteTemplate gSpitUpOrbSpriteTemplate = +{ + .tileTag = ANIM_TAG_RED_ORB_2, + .paletteTag = ANIM_TAG_RED_ORB_2, + .oam = &gOamData_AffineDouble_ObjNormal_8x8, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sSpitUpOrbAffineAnimTable, + .callback = AnimSpitUpOrb, +}; + +static const union AnimCmd sEyeSparkleAnimCmds[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(8, 4), + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_END, +}; + +static const union AnimCmd *const sEyeSparkleAnimTable[] = +{ + sEyeSparkleAnimCmds, +}; + +const struct SpriteTemplate gEyeSparkleSpriteTemplate = +{ + .tileTag = ANIM_TAG_EYE_SPARKLE, + .paletteTag = ANIM_TAG_EYE_SPARKLE, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = sEyeSparkleAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimEyeSparkle, +}; + +static const union AnimCmd sAngelSpriteAnimCmds[] = +{ + ANIMCMD_FRAME(0, 24), + ANIMCMD_END, +}; + +static const union AnimCmd *const sAngelSpriteAnimTable[] = +{ + sAngelSpriteAnimCmds, +}; + +const struct SpriteTemplate gAngelSpriteTemplate = +{ + .tileTag = ANIM_TAG_ANGEL, + .paletteTag = ANIM_TAG_ANGEL, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sAngelSpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimAngel, +}; + +const struct SpriteTemplate gPinkHeartSpriteTemplate = +{ + .tileTag = ANIM_TAG_PINK_HEART, + .paletteTag = ANIM_TAG_PINK_HEART, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimPinkHeart, +}; + +static const union AnimCmd sDevilAnimCmds1[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sDevilAnimCmds2[] = +{ + ANIMCMD_FRAME(16, 3), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd *const sDevilAnimTable[] = +{ + sDevilAnimCmds1, + sDevilAnimCmds2, +}; + +const struct SpriteTemplate gDevilSpriteTemplate = +{ + .tileTag = ANIM_TAG_DEVIL, + .paletteTag = ANIM_TAG_DEVIL, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sDevilAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimDevil, +}; + +static const union AnimCmd sFurySwipesAnimCmd1[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(16, 4), + ANIMCMD_FRAME(32, 4), + ANIMCMD_FRAME(48, 4), + ANIMCMD_END, +}; + +static const union AnimCmd sFurySwipesAnimCmd2[] = +{ + ANIMCMD_FRAME(0, 4, .hFlip = TRUE), + ANIMCMD_FRAME(16, 4, .hFlip = TRUE), + ANIMCMD_FRAME(32, 4, .hFlip = TRUE), + ANIMCMD_FRAME(48, 4, .hFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd *const sFurySwipesAnimTable[] = +{ + sFurySwipesAnimCmd1, + sFurySwipesAnimCmd2, +}; + +const struct SpriteTemplate gFurySwipesSpriteTemplate = +{ + .tileTag = ANIM_TAG_SWIPE, + .paletteTag = ANIM_TAG_SWIPE, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sFurySwipesAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimFurySwipes, +}; + +static const union AnimCmd sMovementWavesAnimCmds1[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(16, 8), + ANIMCMD_FRAME(32, 8), + ANIMCMD_FRAME(16, 8), + ANIMCMD_END, +}; + +static const union AnimCmd sMovementWavesAnimCmds2[] = +{ + ANIMCMD_FRAME(16, 8, .hFlip = TRUE), + ANIMCMD_FRAME(32, 8, .hFlip = TRUE), + ANIMCMD_FRAME(16, 8, .hFlip = TRUE), + ANIMCMD_FRAME(0, 8, .hFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd *const sMovementWavesAnimTable[] = +{ + sMovementWavesAnimCmds1, + sMovementWavesAnimCmds2, +}; + +const struct SpriteTemplate gMovementWavesSpriteTemplate = +{ + .tileTag = ANIM_TAG_MOVEMENT_WAVES, + .paletteTag = ANIM_TAG_MOVEMENT_WAVES, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sMovementWavesAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMovementWaves, +}; + +static const union AffineAnimCmd sUproarAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(-12, 8, 0, 4), + AFFINEANIMCMD_FRAME(20, -20, 0, 4), + AFFINEANIMCMD_FRAME(-8, 12, 0, 4), + AFFINEANIMCMD_END, +}; + +const struct SpriteTemplate gJaggedMusicNoteSpriteTemplate = +{ + .tileTag = ANIM_TAG_JAGGED_MUSIC_NOTE, + .paletteTag = ANIM_TAG_JAGGED_MUSIC_NOTE, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimJaggedMusicNote, +}; + +static const union AffineAnimCmd sPerishSongMusicNoteAffineAnimCmds1[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 0, 5), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sPerishSongMusicNoteAffineAnimCmds2[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -8, 16), + AFFINEANIMCMD_END_ALT(1), +}; + +static const union AffineAnimCmd sPerishSongMusicNoteAffineAnimCmds3[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 8, 16), + AFFINEANIMCMD_END_ALT(1), +}; + +static const union AffineAnimCmd *const sPerishSongMusicNoteAffineAnimTable[] = +{ + sPerishSongMusicNoteAffineAnimCmds1, + sPerishSongMusicNoteAffineAnimCmds2, + sPerishSongMusicNoteAffineAnimCmds3, +}; + +const struct SpriteTemplate gPerishSongMusicNoteSpriteTemplate = +{ + .tileTag = ANIM_TAG_MUSIC_NOTES_2, + .paletteTag = ANIM_TAG_MUSIC_NOTES_2, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gMusicNotesAnimTable, + .images = NULL, + .affineAnims = sPerishSongMusicNoteAffineAnimTable, + .callback = AnimPerishSongMusicNote, +}; + +const struct SpriteTemplate gPerishSongMusicNote2SpriteTemplate = +{ + .tileTag = ANIM_TAG_MUSIC_NOTES_2, + .paletteTag = ANIM_TAG_MUSIC_NOTES_2, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gMusicNotesAnimTable, + .images = NULL, + .affineAnims = sPerishSongMusicNoteAffineAnimTable, + .callback = AnimPerishSongMusicNote2, +}; + +static const union AffineAnimCmd sGuardRingAffineAnimCmds1[] = +{ + AFFINEANIMCMD_FRAME(256, 256, 0, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sGuardRingAffineAnimCmds2[] = +{ + AFFINEANIMCMD_FRAME(512, 256, 0, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const sGuardRingAffineAnimTable[] = +{ + sGuardRingAffineAnimCmds1, + sGuardRingAffineAnimCmds2, +}; + +const struct SpriteTemplate gGuardRingSpriteTemplate = +{ + .tileTag = ANIM_TAG_GUARD_RING, + .paletteTag = ANIM_TAG_GUARD_RING, + .oam = &gOamData_AffineDouble_ObjBlend_64x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sGuardRingAffineAnimTable, + .callback = AnimGuardRing, +}; + +// Functions +void sub_80A6E48(struct Sprite *sprite) +{ + SetSpriteCoordsToAnimAttackerCoords(sprite); + SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[1] = gBattleAnimArgs[2]; + sprite->data[2] = gBattleAnimArgs[4]; + sprite->data[3] = gBattleAnimArgs[5]; + sprite->data[4] = gBattleAnimArgs[3]; + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); + sprite->callback = TranslateSpriteInEllipseOverDuration; + sprite->callback(sprite); +} + +void sub_80A6E98(struct Sprite *sprite) +{ + u8 battler; + + if (gBattleAnimArgs[0] == 0) + battler = gBattleAnimAttacker; + else + battler = gBattleAnimTarget; + + SetSpriteNextToMonHead(battler, sprite); + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->callback = sub_80A6ED8; +} + +static void sub_80A6ED8(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->pos2.y -= 3; + if (++sprite->data[1] == 6) + sprite->data[0]++; + break; + case 1: + sprite->pos2.y += 3; + if (--sprite->data[1] == 0) + sprite->data[0]++; + break; + case 2: + if (++sprite->data[1] == 64) + DestroyAnimSprite(sprite); + break; + } +} + +static void sub_80A6F3C(struct Sprite *sprite) +{ + s16 temp; + + gSprites[sprite->data[2]].pos2.x += sprite->data[1]; + temp = sprite->data[1]; + sprite->data[1] = -temp; + if (sprite->data[0] == 0) + { + gSprites[sprite->data[2]].pos2.x = 0; + DestroySpriteAndMatrix(sprite); + } + + sprite->data[0]--; +} + +void sub_80A6F8C(struct Sprite *sprite) +{ + u8 spriteId; + + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + spriteId = gBattlerSpriteIds[gBattleAnimTarget]; + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + sprite->pos1.x -= gBattleAnimArgs[0]; + else + sprite->pos1.x += gBattleAnimArgs[0]; + + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[2] = spriteId; + sprite->callback = sub_80A6F3C; + sprite->invisible = TRUE; +} + +void sub_80A7020(struct Sprite *sprite) +{ + InitSpritePosToAnimAttacker(sprite, TRUE); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[5] = gBattleAnimArgs[4]; + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, sub_80A7058); +} + +static void sub_80A7058(struct Sprite *sprite) +{ + sprite->data[0] = sprite->data[1]; + sprite->data[2] = sprite->pos1.x; + sprite->data[4] = sprite->pos1.y + 15; + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, sub_80A7080); +} + +static void sub_80A7080(struct Sprite *sprite) +{ + if (sprite->data[5] == 0) + DestroyAnimSprite(sprite); + else + sprite->data[5]--; +} + +// Rotates the attacking mon sprite downwards and then back upwards to its original position. +// No args. +void AnimTask_Withdraw(u8 taskId) +{ + PrepareBattlerSpriteForRotScale(gBattlerSpriteIds[gBattleAnimAttacker], ST_OAM_OBJ_NORMAL); + gTasks[taskId].func = AnimTask_WithdrawStep; +} + +static void AnimTask_WithdrawStep(u8 taskId) +{ + u8 spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; + s16 rotation; + + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + rotation = -gTasks[taskId].data[0]; + else + rotation = gTasks[taskId].data[0]; + + SetSpriteRotScale(spriteId, 0x100, 0x100, rotation); + if (gTasks[taskId].data[1] == 0) + { + gTasks[taskId].data[0] += 0xB0; + // this y position update gets overwritten by SetBattlerSpriteYOffsetFromRotation() + gSprites[spriteId].pos2.y++; + } + else if (gTasks[taskId].data[1] == 1) + { + if (++gTasks[taskId].data[3] == 30) + gTasks[taskId].data[1] = 2; + + return; + } + else + { + gTasks[taskId].data[0] -= 0xB0; + // this y position update gets overwritten by SetBattlerSpriteYOffsetFromRotation() + gSprites[spriteId].pos2.y--; + } + + SetBattlerSpriteYOffsetFromRotation(spriteId); + if (gTasks[taskId].data[0] == 0xF20 || gTasks[taskId].data[0] == 0) + { + if (gTasks[taskId].data[1] == 2) + { + ResetSpriteRotScale(spriteId); + DestroyAnimVisualTask(taskId); + } + else + { + gTasks[taskId].data[1]++; + } + } +} + +// Animates a "zap of energy" used in KINESIS. +// arg 0: x pixel offset +// arg 1: y pixel offset +// arg 2: vertical flip +void Anim_KinesisZapEnergy(struct Sprite *sprite) +{ + SetSpriteCoordsToAnimAttackerCoords(sprite); + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + sprite->pos1.x -= gBattleAnimArgs[0]; + else + sprite->pos1.x += gBattleAnimArgs[0]; + + sprite->pos1.y += gBattleAnimArgs[1]; + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + { + sprite->hFlip = TRUE; + if (gBattleAnimArgs[2]) + sprite->vFlip = TRUE; + } + else + { + if (gBattleAnimArgs[2]) + sprite->vFlip = TRUE; + } + + sprite->callback = RunStoredCallbackWhenAnimEnds; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +// Animates a sword that rises into the air after a brief pause. +// arg 0: x pixel offset +// arg 1: y pixel offset +void Anim_SwordsDanceBlade(struct Sprite *sprite) +{ + InitSpritePosToAnimAttacker(sprite, FALSE); + sprite->callback = RunStoredCallbackWhenAffineAnimEnds; + StoreSpriteCallbackInData6(sprite, AnimSwordsDanceBladeStep); +} + +static void AnimSwordsDanceBladeStep(struct Sprite *sprite) +{ + sprite->data[0] = 6; + sprite->data[2] = sprite->pos1.x; + sprite->data[4] = sprite->pos1.y - 32; + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +// Moves a projectile towards the target mon. The sprite is rotated to be pointing +// in the same direction it's moving. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: target x pixel offset +// arg 3: target y pixel offset +// arg 4: duration +void AnimSonicBoomProjectile(struct Sprite *sprite) +{ + s16 targetXPos; + s16 targetYPos; + u16 rotation; + + if (IsContest()) + { + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + } + else if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + { + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + gBattleAnimArgs[3] = -gBattleAnimArgs[3]; + } + + InitSpritePosToAnimAttacker(sprite, TRUE); + targetXPos = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; + targetYPos = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; + rotation = ArcTan2Neg(targetXPos - sprite->pos1.x, targetYPos - sprite->pos1.y); + rotation += 0xF000; + if (IsContest()) + rotation -= 0x6000; + + TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rotation); + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = targetXPos; + sprite->data[4] = targetYPos; + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +static void AnimAirWaveProjectile_Step2(struct Sprite *sprite) +{ + if (sprite->data[0]-- <= 0) + { + gTasks[sprite->data[7]].data[1]--; + DestroySprite(sprite); + } +} + +static void AnimAirWaveProjectile_Step1(struct Sprite *sprite) +{ + struct Task* task = &gTasks[sprite->data[7]]; + + if (sprite->data[0] > task->data[5]) + { + sprite->data[5] += sprite->data[3]; + sprite->data[6] += sprite->data[4]; + } + else + { + sprite->data[5] -= sprite->data[3]; + sprite->data[6] -= sprite->data[4]; + } + + sprite->data[1] += sprite->data[5]; + sprite->data[2] += sprite->data[6]; + if (1 & task->data[7]) + sprite->pos2.x = ((u16)sprite->data[1] >> 8) * -1; + else + sprite->pos2.x = (u16)sprite->data[1] >> 8; + + if (1 & task->data[8]) + sprite->pos2.y = ((u16)sprite->data[2] / 256u) * -1; + else + sprite->pos2.y = (u16)sprite->data[2] / 256u; + + if (sprite->data[0]-- <= 0) + { + sprite->data[0] = 30; + sprite->callback = AnimAirWaveProjectile_Step2; + } +} + +void AnimAirWaveProjectile(struct Sprite *sprite) +{ + s16 a; + s16 b; + s16 c; + + struct Task* task = &gTasks[sprite->data[7]]; + + sprite->data[1] += (-2 & task->data[7]); + sprite->data[2] += (-2 & task->data[8]); + if (1 & task->data[7]) + sprite->pos2.x = ((u16)sprite->data[1] >> 8) * -1; + else + sprite->pos2.x = (u16)sprite->data[1] >> 8; + + if (1 & task->data[8]) + sprite->pos2.y = ((u16)sprite->data[2] / 256u) * -1; + else + sprite->pos2.y = (u16)sprite->data[2] / 256u; + + if (sprite->data[0]-- <= 0) + { + sprite->data[0] = 8; + task->data[5] = 4; + a = sub_80D8B90(0x1000); + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + if (task->data[11] >= sprite->pos1.x) + b = (task->data[11] - sprite->pos1.x) << 8; + else + b = (sprite->pos1.x - task->data[11]) << 8; + + if (task->data[12] >= sprite->pos1.y) + c = (task->data[12] - sprite->pos1.y) << 8; + else + c = (sprite->pos1.y - task->data[12]) << 8; + + sprite->data[2] = 0; + sprite->data[1] = 0; + sprite->data[6] = 0; + sprite->data[5] = 0; + sprite->data[3] = sub_80D8AA0(sub_80D8AA0(b, a), sub_80D8B90(0x1C0)); + sprite->data[4] = sub_80D8AA0(sub_80D8AA0(c, a), sub_80D8B90(0x1C0)); + sprite->callback = AnimAirWaveProjectile_Step1; + } +} + +static void AirCutterProjectileStep2(u8 taskId) +{ + if (gTasks[taskId].data[1] == 0) + DestroyAnimVisualTask(taskId); +} + +static void AirCutterProjectileStep1(u8 taskId) +{ + if (gTasks[taskId].data[0]-- <= 0) + { + u8 spriteId; + struct Sprite *sprite; + spriteId = CreateSprite(&gAirWaveProjectileSpriteTemplate, gTasks[taskId].data[9], gTasks[taskId].data[10], gTasks[taskId].data[2] - gTasks[taskId].data[1]); + sprite = &gSprites[spriteId]; + switch (gTasks[taskId].data[4]) + { + case 1: + sprite->oam.matrixNum |= (ST_OAM_HFLIP | ST_OAM_VFLIP); + break; + case 2: + sprite->oam.matrixNum = ST_OAM_HFLIP; + break; + } + + sprite->data[0] = gTasks[taskId].data[5] - gTasks[taskId].data[6]; + sprite->data[7] = taskId; + gTasks[taskId].data[gTasks[taskId].data[1] + 13] = spriteId; + gTasks[taskId].data[0] = gTasks[taskId].data[3]; + gTasks[taskId].data[1]++; + PlaySE12WithPanning(SE_W059B, BattleAnimAdjustPanning(-SOUND_PAN_TARGET)); + if (gTasks[taskId].data[1] > 2) + gTasks[taskId].func = AirCutterProjectileStep2; + } +} + +void AnimTask_AirCutterProjectile(u8 taskId) +{ + s16 attackerY = 0; + s16 attackerX = 0; + s16 targetX = 0; + s16 targetY = 0; + s16 xDiff, yDiff; + + if (IsContest()) + { + gTasks[taskId].data[4] = 2; + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + if (gBattleAnimArgs[2] & 1) + gBattleAnimArgs[2] &= ~1; + else + gBattleAnimArgs[2] |= 1; + } + else + { + if ((gBattlerPositions[gBattleAnimTarget] & BIT_SIDE) == B_SIDE_PLAYER) + { + gTasks[taskId].data[4] = 1; + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + if (gBattleAnimArgs[2] & 1) + gBattleAnimArgs[2] &= ~1; + else + gBattleAnimArgs[2] |= 1; + } + } + + attackerX = gTasks[taskId].data[9] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + attackerY = gTasks[taskId].data[10] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y); + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + && IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimTarget))) + { + SetAverageBattlerPositions(gBattleAnimTarget, 0, &targetX, &targetY); + } + else + { + targetX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + targetY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y); + } + + targetX = gTasks[taskId].data[11] = targetX + gBattleAnimArgs[0]; + targetY = gTasks[taskId].data[12] = targetY + gBattleAnimArgs[1]; + if (targetX >= attackerX) + xDiff = targetX - attackerX; + else + xDiff = attackerX - targetX; + + gTasks[taskId].data[5] = sub_80D8AA0(xDiff, sub_80D8B90(gBattleAnimArgs[2] & ~1)); + gTasks[taskId].data[6] = sub_80D8AA0(gTasks[taskId].data[5], 0x80); + gTasks[taskId].data[7] = gBattleAnimArgs[2]; + if (targetY >= attackerY) + { + yDiff = targetY - attackerY; + gTasks[taskId].data[8] = sub_80D8AA0(yDiff, sub_80D8B90(gTasks[taskId].data[5])) & ~1; + } + else + { + yDiff = attackerY - targetY; + gTasks[taskId].data[8] = sub_80D8AA0(yDiff, sub_80D8B90(gTasks[taskId].data[5])) | 1; + } + + gTasks[taskId].data[3] = gBattleAnimArgs[3]; + if (gBattleAnimArgs[4] & 0x80) + { + gBattleAnimArgs[4] ^= 0x80; + if (gBattleAnimArgs[4] >= 64) + { + u16 var = GetBattlerSpriteSubpriority(gBattleAnimTarget) + (gBattleAnimArgs[4] - 64); + gTasks[taskId].data[2] = var; + } + else + { + u16 var = GetBattlerSpriteSubpriority(gBattleAnimTarget) - gBattleAnimArgs[4]; + gTasks[taskId].data[2] = var; + } + } + else + { + if (gBattleAnimArgs[4] >= 64) + { + u16 var = GetBattlerSpriteSubpriority(gBattleAnimTarget) + (gBattleAnimArgs[4] - 64); + gTasks[taskId].data[2] = var; + } + else + { + u16 var = GetBattlerSpriteSubpriority(gBattleAnimTarget) - gBattleAnimArgs[4]; + gTasks[taskId].data[2] = var; + } + } + + if (gTasks[taskId].data[2] < 3) + gTasks[taskId].data[2] = 3; + + gTasks[taskId].func = AirCutterProjectileStep1; +} + +void sub_80A79E8(struct Sprite *sprite) +{ + InitSpritePosToAnimAttacker(sprite, FALSE); + sprite->data[0] = 0x100 + (IndexOfSpritePaletteTag(sUnknown_83E3D18.paletteTag) << 4); + sprite->callback = sub_80A7A18; +} + +static void sub_80A7A18(struct Sprite *sprite) +{ + u16 id, val; + int i; + + if (++sprite->data[1] == 2) + { + sprite->data[1] = 0; + id = sprite->data[0]; + val = gPlttBufferFaded[8 + id]; + for (i = 8; i < 16; i++) + gPlttBufferFaded[i + id] = gPlttBufferFaded[i + id + 1]; + + gPlttBufferFaded[id + 15] = val; + + if (++sprite->data[2] == 24) + DestroyAnimSprite(sprite); + } +} + +void AnimCoinThrow(struct Sprite *sprite) +{ + s16 r6; + s16 r7; + u16 var; + + InitSpritePosToAnimAttacker(sprite, TRUE); + r6 = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + r7 = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + + r6 += gBattleAnimArgs[2]; + var = ArcTan2Neg(r6 - sprite->pos1.x, r7 - sprite->pos1.y); + var += 0xC000; + TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, var); + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = r6; + sprite->data[4] = r7; + sprite->callback = sub_80756A4; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +void AnimFallingCoin(struct Sprite *sprite) +{ + sprite->data[2] = -16; + sprite->pos1.y += 8; + sprite->callback = AnimFallingCoin_Step; +} + +static void AnimFallingCoin_Step(struct Sprite *sprite) +{ + sprite->data[0] += 0x80; + sprite->pos2.x = sprite->data[0] >> 8; + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + sprite->pos2.x = -sprite->pos2.x; + + sprite->pos2.y = Sin(sprite->data[1], sprite->data[2]); + sprite->data[1] += 5; + if (sprite->data[1] > 126) + { + sprite->data[1] = 0; + sprite->data[2] /= 2; + if (++sprite->data[3] == 2) + DestroyAnimSprite(sprite); + } +} + +void AnimBulletSeed(struct Sprite *sprite) +{ + InitSpritePosToAnimAttacker(sprite, TRUE); + sprite->data[0] = 20; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + sprite->callback = StartAnimLinearTranslation; + sprite->affineAnimPaused = TRUE; + StoreSpriteCallbackInData6(sprite, AnimBulletSeed_Step1); +} + +static void AnimBulletSeed_Step1(struct Sprite *sprite) +{ + int i; + u16 rand; + s16* ptr; + + PlaySE12WithPanning(SE_W030, BattleAnimAdjustPanning(SOUND_PAN_TARGET)); + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + ptr = &sprite->data[7]; + for (i = 0; i < 8; i++) + ptr[i - 7] = 0; + + rand = Random(); + sprite->data[6] = 0xFFF4 - (rand & 7); + rand = Random(); + sprite->data[7] = (rand % 0xA0) + 0xA0; + sprite->callback = AnimBulletSeed_Step2; + sprite->affineAnimPaused = FALSE; +} + +static void AnimBulletSeed_Step2(struct Sprite *sprite) +{ + sprite->data[0] += sprite->data[7]; + sprite->pos2.x = sprite->data[0] >> 8; + if (sprite->data[7] & 1) + sprite->pos2.x = -sprite->pos2.x; + + sprite->pos2.y = Sin(sprite->data[1], sprite->data[6]); + sprite->data[1] += 8; + if (sprite->data[1] > 126) + { + sprite->data[1] = 0; + sprite->data[2] /= 2; + if (++sprite->data[3] == 1) + DestroyAnimSprite(sprite); + } +} + +// Moves a tornado in a circlular motion. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: wave amplitude +// arg 3: unused +// arg 4: initial wave offset +// arg 5: wave period (higher means faster wave) +// arg 6: duration +void AnimRazorWindTornado(struct Sprite *sprite) +{ + InitSpritePosToAnimAttacker(sprite, FALSE); + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + sprite->pos1.y += 16; + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[1] = gBattleAnimArgs[2]; + sprite->data[2] = gBattleAnimArgs[5]; + sprite->data[3] = gBattleAnimArgs[6]; + sprite->data[4] = gBattleAnimArgs[3]; + sprite->callback = TranslateSpriteInCircleOverDuration; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + sprite->callback(sprite); +} + +// Animates a single pincer line that extends towards the center of the target mon. +// arg 0: invert +void AnimViceGripPincer(struct Sprite *sprite) +{ + s16 startXOffset = 32; + s16 startYOffset = -32; + s16 endXOffset = 16; + s16 endYOffset = -16; + + if (gBattleAnimArgs[0]) + { + startXOffset = -32; + startYOffset = 32; + endXOffset = -16; + endYOffset = 16; + StartSpriteAnim(sprite, 1); + } + + sprite->pos1.x += startXOffset; + sprite->pos1.y += startYOffset; + sprite->data[0] = 6; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + endXOffset; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + endYOffset; + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, AnimViceGripPincerStep); +} + +static void AnimViceGripPincerStep(struct Sprite *sprite) +{ + if (sprite->animEnded) + DestroyAnimSprite(sprite); +} + +// Animates a single pincer line that extends towards the center of the target mon, and then back out. +// arg 0: animation id +void AnimGuillotinePincer(struct Sprite *sprite) +{ + s16 startXOffset = 32; + s16 startYOffset = -32; + s16 endXOffset = 16; + s16 endYOffset = -16; + + if (gBattleAnimArgs[0]) + { + startXOffset = -32; + startYOffset = 32; + endXOffset = -16; + endYOffset = 16; + StartSpriteAnim(sprite, gBattleAnimArgs[0]); + } + + sprite->pos1.x += startXOffset; + sprite->pos1.y += startYOffset; + sprite->data[0] = 6; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + endXOffset; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + endYOffset; + InitAnimLinearTranslation(sprite); + sprite->data[5] = gBattleAnimArgs[0]; + sprite->data[6] = sprite->data[0]; + sprite->callback = AnimGuillotinePincerStep1; +} + +static void AnimGuillotinePincerStep1(struct Sprite *sprite) +{ + if (AnimTranslateLinear(sprite) && sprite->animEnded) + { + SeekSpriteAnim(sprite, 0); + sprite->animPaused = TRUE; + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 2; + sprite->pos2.y = -2; + sprite->data[0] = sprite->data[6]; + sprite->data[1] ^= 1; + sprite->data[2] ^= 1; + sprite->data[4] = 0; + sprite->data[3] = 0; + sprite->callback = AnimGuillotinePincerStep2; + } +} + +static void AnimGuillotinePincerStep2(struct Sprite *sprite) +{ + if (sprite->data[3]) + { + sprite->pos2.x = -sprite->pos2.x; + sprite->pos2.y = -sprite->pos2.y; + } + + sprite->data[3] ^= 1; + if (++sprite->data[4] == 51) + { + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->data[4] = 0; + sprite->data[3] = 0; + sprite->animPaused = FALSE; + StartSpriteAnim(sprite, sprite->data[5] ^ 1); + sprite->callback = AnimGuillotinePincerStep3; + } +} + +static void AnimGuillotinePincerStep3(struct Sprite *sprite) +{ + if (AnimTranslateLinear(sprite)) + DestroyAnimSprite(sprite); +} + +// Scales up the target mon sprite, and sets the palette to greyscale. +// Used in MOVE_DISABLE. +// No args. +void AnimTask_GrowAndGreyscale(u8 taskId) +{ + u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); + + PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_BLEND); + SetSpriteRotScale(spriteId, 0xD0, 0xD0, 0); + SetGreyscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, FALSE); + gTasks[taskId].data[0] = 80; + gTasks[taskId].func = AnimTask_GrowAndGreyscaleStep; +} + +static void AnimTask_GrowAndGreyscaleStep(u8 taskId) +{ + if (--gTasks[taskId].data[0] == -1) + { + u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); + ResetSpriteRotScale(spriteId); + SetGreyscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, TRUE); + DestroyAnimVisualTask(taskId); + } +} + +// Shrinks and grows the attacking mon several times. Also creates transparent versions of the +// mon's sprite while it is shrinking. +// No args. +void AnimTask_Minimize(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + + task->data[0] = spriteId; + PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL); + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[4] = 0x100; + task->data[5] = 0; + task->data[6] = 0; + task->data[7] = GetBattlerSpriteSubpriority(gBattleAnimAttacker); + task->func = AnimTask_MinimizeStep1; +} + +static void AnimTask_MinimizeStep1(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + switch (task->data[1]) + { + case 0: + if (task->data[2] == 0 || task->data[2] == 3 || task->data[2] == 6) + CreateMinimizeSprite(task, taskId); + task->data[2]++; + task->data[4] += 0x28; + SetSpriteRotScale(task->data[0], task->data[4], task->data[4], 0); + SetBattlerSpriteYOffsetFromYScale(task->data[0]); + if (task->data[2] == 32) + { + task->data[5]++; + task->data[1]++; + } + break; + case 1: + if (task->data[6] == 0) + { + if (task->data[5] == 3) + { + task->data[2] = 0; + task->data[1] = 3; + } + else + { + task->data[2] = 0; + task->data[3] = 0; + task->data[4] = 0x100; + SetSpriteRotScale(task->data[0], task->data[4], task->data[4], 0); + SetBattlerSpriteYOffsetFromYScale(task->data[0]); + task->data[1] = 2; + } + } + break; + case 2: + task->data[1] = 0; + break; + case 3: + if (++task->data[2] > 32) + { + task->data[2] = 0; + task->data[1]++; + } + break; + case 4: + task->data[2] += 2; + task->data[4] -= 0x50; + SetSpriteRotScale(task->data[0], task->data[4], task->data[4], 0); + SetBattlerSpriteYOffsetFromYScale(task->data[0]); + if (task->data[2] == 32) + { + task->data[2] = 0; + task->data[1]++; + } + break; + case 5: + ResetSpriteRotScale(task->data[0]); + gSprites[task->data[15]].pos2.y = 0; + DestroyAnimVisualTask(taskId); + break; + } +} + +static void CreateMinimizeSprite(struct Task* task, u8 taskId) +{ + u16 matrixNum; + s16 spriteId = CloneBattlerSpriteWithBlend(ANIM_ATTACKER); + + if (spriteId >= 0) + { + if ((matrixNum = AllocOamMatrix()) == 0xFF) + { + obj_delete_but_dont_free_vram(&gSprites[spriteId]); + } + else + { + gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_DOUBLE; + gSprites[spriteId].affineAnimPaused = TRUE; + gSprites[spriteId].oam.matrixNum = matrixNum; + gSprites[spriteId].subpriority = task->data[7] - task->data[3]; + task->data[3]++; + task->data[6]++; + gSprites[spriteId].data[0] = 16; + gSprites[spriteId].data[1] = taskId; + gSprites[spriteId].data[2] = 6; + gSprites[spriteId].callback = ClonedMinizeSprite_Step; + SetSpriteRotScale(spriteId, task->data[4], task->data[4], 0); + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + CalcCenterToCornerVec(&gSprites[spriteId], gSprites[spriteId].oam.shape, gSprites[spriteId].oam.size, gSprites[spriteId].oam.affineMode); + } + } +} + +static void ClonedMinizeSprite_Step(struct Sprite *sprite) +{ + if (--sprite->data[0] == 0) + { + gTasks[sprite->data[1]].data[sprite->data[2]]--; + FreeOamMatrix(sprite->oam.matrixNum); + obj_delete_but_dont_free_vram(sprite); + } +} + +// Task to facilitate expanding and hopping effect seen in Splash. +// arg 0: anim battler +// arg 1: num hops +void AnimTask_Splash(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + if (gBattleAnimArgs[1] == 0) + { + DestroyAnimVisualTask(taskId); + } + else + { + u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + task->data[0] = spriteId; + task->data[1] = 0; + task->data[2] = gBattleAnimArgs[1]; + task->data[3] = 0; + task->data[4] = 0; + PrepareAffineAnimInTaskData(task, spriteId, sSplashEffectAffineAnimCmds); + task->func = AnimTask_SplashStep; + } +} + +static void AnimTask_SplashStep(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + switch (task->data[1]) + { + case 0: + RunAffineAnimFromTaskData(task); + task->data[4] += 3; + gSprites[task->data[0]].pos2.y += task->data[4]; + if (++task->data[3] > 7) + { + task->data[3] = 0; + task->data[1]++; + } + break; + case 1: + RunAffineAnimFromTaskData(task); + gSprites[task->data[0]].pos2.y += task->data[4]; + if (++task->data[3] > 7) + { + task->data[3] = 0; + task->data[1]++; + } + break; + case 2: + if (task->data[4] != 0) + { + gSprites[task->data[0]].pos2.y -= 2; + task->data[4] -= 2; + } + else + task->data[1]++; + break; + case 3: + if (!RunAffineAnimFromTaskData(task)) + { + if (--task->data[2] == 0) + { + gSprites[task->data[0]].pos2.y = 0; + DestroyAnimVisualTask(taskId); + } + else + { + PrepareAffineAnimInTaskData(task, task->data[0], sSplashEffectAffineAnimCmds); + task->data[1] = 0; + } + } + break; + } +} + +// Grows, pauses, then shrinks the attacking mon. +// Used by MOVE_SWAGGER and MOVE_BULK_UP +// No args. +void AnimTask_GrowAndShrink(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + + PrepareAffineAnimInTaskData(task, spriteId, sGrowAndShrinkAffineAnimCmds); + task->func = AnimTask_GrowAndShrinkStep; +} + +static void AnimTask_GrowAndShrinkStep(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + if (!RunAffineAnimFromTaskData(task)) + DestroyAnimVisualTask(taskId); +} + +// Animates a little puff of the mon's breath. +// Used by MOVE_SWAGGER and MOVE_BULK_UP +// No args. +void AnimBreathPuff(struct Sprite *sprite) +{ + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + { + StartSpriteAnim(sprite, 0); + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + 32; + sprite->data[1] = 64; + } + else + { + StartSpriteAnim(sprite, 1); + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - 32; + sprite->data[1] = -64; + } + + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + sprite->data[0] = 52; + sprite->data[2] = 0; + sprite->data[3] = 0; + sprite->data[4] = 0; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + sprite->callback = TranslateSpriteLinearFixedPoint; +} + +// Animates an "angry" mark above a mon's head. +// arg 0: target mon (0 = attacker, 1 = target) +// arg 1: x pixel offset +// arg 2: y pixel offset +void AnimAngerMark(struct Sprite *sprite) +{ + u8 battler; + + if (!gBattleAnimArgs[0]) + battler = gBattleAnimAttacker; + else + battler = gBattleAnimTarget; + + if (GetBattlerSide(battler) == B_SIDE_OPPONENT) + gBattleAnimArgs[1] *= -1; + + sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + gBattleAnimArgs[1]; + sprite->pos1.y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2]; + if (sprite->pos1.y < 8) + sprite->pos1.y = 8; + + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); + sprite->callback = RunStoredCallbackWhenAffineAnimEnds; +} + +// left/right movements +void AnimTask_ThrashMoveMonHorizontal(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + + task->data[0] = spriteId; + task->data[1] = 0; + PrepareAffineAnimInTaskData(task, spriteId, sThrashMoveMonAffineAnimCmds); + task->func = ThrashMoveMonStep; +} + +static void ThrashMoveMonStep(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + if (!RunAffineAnimFromTaskData(task)) + DestroyAnimVisualTask(taskId); +} + +// up/down movements +void AnimTask_ThrashMoveMonVertical(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + task->data[0] = GetAnimBattlerSpriteId(ANIM_ATTACKER); + task->data[1] = 0; + task->data[2] = 4; + task->data[3] = 7; + task->data[4] = 3; + task->data[5] = gSprites[task->data[0]].pos1.x; + task->data[6] = gSprites[task->data[0]].pos1.y; + task->data[7] = 0; + task->data[8] = 0; + task->data[9] = 2; + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + task->data[2] *= -1; + + task->func = ThrashMoveMon; +} + +static void ThrashMoveMon(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + if (++task->data[7] > 2) + { + task->data[7] = 0; + task->data[8]++; + if (task->data[8] & 1) + gSprites[task->data[0]].pos1.y += task->data[9]; + else + gSprites[task->data[0]].pos1.y -= task->data[9]; + } + switch (task->data[1]) + { + case 0: + gSprites[task->data[0]].pos1.x += task->data[2]; + if (--task->data[3] == 0) + { + task->data[3] = 14; + task->data[1] = 1; + } + break; + case 1: + gSprites[task->data[0]].pos1.x -= task->data[2]; + if (--task->data[3] == 0) + { + task->data[3] = 7; + task->data[1] = 2; + } + break; + case 2: + gSprites[task->data[0]].pos1.x += task->data[2]; + if (--task->data[3] == 0) + { + if (--task->data[4] != 0) + { + task->data[3] = 7; + task->data[1] = 0; + } + else + { + if ((task->data[8] & 1) != 0) + gSprites[task->data[0]].pos1.y -= task->data[9]; + + DestroyAnimVisualTask(taskId); + } + } + break; + } +} + +void sub_80A8874(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + struct ScanlineEffectParams params; + s16 i; + + task->data[0] = GetBattlerYCoordWithElevation(gBattleAnimTarget) + 32; + task->data[1] = 4; + task->data[2] = 0; + task->data[3] = 0; + task->data[4] = 0; + task->data[5] = 0; + task->data[15] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_HEIGHT); + + if (GetBattlerSpriteBGPriorityRank(gBattleAnimTarget) == 1) + { + task->data[6] = gBattle_BG1_X; + params.dmaDest = (u16 *)REG_ADDR_BG1HOFS; + } + else + { + task->data[6] = gBattle_BG2_X; + params.dmaDest = (u16 *)REG_ADDR_BG2HOFS; + } + + for (i = task->data[0] - 0x40; i <= task->data[0]; i++) + { + if (i >= 0) + { + gScanlineEffectRegBuffers[0][i] = task->data[6] + 0xF0; + gScanlineEffectRegBuffers[1][i] = task->data[6] + 0xF0; + } + } + + params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; + params.initState = 1; + params.unused9 = 0; + ScanlineEffect_SetParams(params); + task->func = AnimTask_SketchDrawMon; +} + +static void AnimTask_SketchDrawMon(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + switch (task->data[4]) + { + case 0: + if (++task->data[5] > 20) + task->data[4]++; + break; + case 1: + if (++task->data[1] > 3) + { + task->data[1] = 0; + task->data[2] = task->data[3] & 3; + task->data[5] = task->data[0] - task->data[3]; + switch (task->data[2]) + { + case 0: + break; + case 1: + task->data[5] -= 2; + break; + case 2: + task->data[5] += 1; + break; + case 3: + task->data[5] += 1; + break; + } + + if (task->data[5] >= 0) + { + gScanlineEffectRegBuffers[0][task->data[5]] = task->data[6]; + gScanlineEffectRegBuffers[1][task->data[5]] = task->data[6]; + } + + if (++task->data[3] >= task->data[15]) + { + gScanlineEffect.state = 3; + DestroyAnimVisualTask(taskId); + } + } + break; + } +} + +void AnimPencil(struct Sprite *sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) - 16; + sprite->pos1.y = GetBattlerYCoordWithElevation(gBattleAnimTarget) + 16; + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->data[3] = 16; + sprite->data[4] = 0; + sprite->data[5] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_HEIGHT) + 2; + sprite->data[6] = BattleAnimAdjustPanning(SOUND_PAN_TARGET); + sprite->callback = AnimPencil_Step; +} + +static void AnimPencil_Step(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + if (++sprite->data[2] > 1) + { + sprite->data[2] = 0; + sprite->invisible = !sprite->invisible; + } + if (++sprite->data[1] > 16) + { + sprite->invisible = FALSE; + sprite->data[0]++; + } + break; + case 1: + if (++sprite->data[1] > 3 && sprite->data[2] < sprite->data[5]) + { + sprite->data[1] = 0; + sprite->pos1.y -= 1; + sprite->data[2]++; + if (sprite->data[2] % 10 == 0) + PlaySE12WithPanning(SE_W166, sprite->data[6]); + } + sprite->data[4] += sprite->data[3]; + if (sprite->data[4] > 31) + { + sprite->data[4] = 0x40 - sprite->data[4]; + sprite->data[3] *= -1; + } + else if (sprite->data[4] <= -32) + { + sprite->data[4] = -0x40 - sprite->data[4]; + sprite->data[3] *= -1; + } + sprite->pos2.x = sprite->data[4]; + if (sprite->data[5] == sprite->data[2]) + { + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->data[0]++; + } + break; + case 2: + if (++sprite->data[2] > 1) + { + sprite->data[2] = 0; + sprite->invisible = !sprite->invisible; + } + if (++sprite->data[1] > 16) + { + sprite->invisible = FALSE; + DestroyAnimSprite(sprite); + } + break; + } +} + +void AnimBlendThinRing(struct Sprite *sprite) +{ + u8 battler = 0; + u16 sp0 = 0; + u16 sp1 = 0; + u8 r4; + + if (gBattleAnimArgs[2] == 0) + battler = gBattleAnimAttacker; + else + battler = gBattleAnimTarget; + + r4 = gBattleAnimArgs[3] ^ 1; + if (IsDoubleBattle() && IsBattlerSpriteVisible(BATTLE_PARTNER(battler))) + { + SetAverageBattlerPositions(battler, r4, &sp0, &sp1); + if (r4 == 0) + r4 = GetBattlerSpriteCoord(battler, BATTLER_COORD_X); + else + r4 = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2); + + if (GetBattlerSide(battler) != B_SIDE_PLAYER) + gBattleAnimArgs[0] -= (sp0 - r4) - gBattleAnimArgs[0]; + else + gBattleAnimArgs[0] = sp0 - r4; + } + + sprite->callback = AnimSpriteOnMonPos; + sprite->callback(sprite); +} + +void sub_80A8C84(struct Sprite *sprite) +{ + if (AnimTranslateLinear(sprite)) + { + FreeSpriteOamMatrix(sprite); + DestroyAnimSprite(sprite); + } +} + +void AnimHyperVoiceRing(struct Sprite *sprite) +{ + u16 r9 = 0; + u16 r6 = 0; + s16 sp0 = 0; + s16 sp1 = 0; + u8 sp4; + u8 battler1; + u8 battler2; + u8 r10; + + if (gBattleAnimArgs[5] == 0) + { + battler1 = gBattleAnimAttacker; + battler2 = gBattleAnimTarget; + } + else + { + battler1 = gBattleAnimTarget; + battler2 = gBattleAnimAttacker; + } + + if (!gBattleAnimArgs[6]) + { + r10 = 0; + sp4 = 1; + } + else + { + r10 = 2; + sp4 = 3; + } + + if (GetBattlerSide(battler1) != B_SIDE_PLAYER) + { + r9 = GetBattlerSpriteCoord(battler1, r10) + gBattleAnimArgs[0]; + if (IsBattlerSpriteVisible(BATTLE_PARTNER(battler2))) + sprite->subpriority = gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battler2)]].subpriority - 1; + else + sprite->subpriority = gSprites[gBattlerSpriteIds[battler2]].subpriority - 1; + } + else + { + r9 = GetBattlerSpriteCoord(battler1, r10) - gBattleAnimArgs[0]; + if (!IsContest() && IsBattlerSpriteVisible(BATTLE_PARTNER(battler1))) + { + if (gSprites[gBattlerSpriteIds[battler1]].pos1.x < gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battler1)]].pos1.x) + sprite->subpriority = gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battler1)]].subpriority + 1; + else + sprite->subpriority = gSprites[gBattlerSpriteIds[battler1]].subpriority - 1; + } + else + { + sprite->subpriority = gSprites[gBattlerSpriteIds[battler1]].subpriority - 1; + } + + } + + r6 = GetBattlerSpriteCoord(battler1, sp4) + gBattleAnimArgs[1]; + if (!IsContest() && IsBattlerSpriteVisible(BATTLE_PARTNER(battler2))) + { + SetAverageBattlerPositions(battler2, gBattleAnimArgs[6], &sp0, &sp1); + } + else + { + sp0 = GetBattlerSpriteCoord(battler2, r10); + sp1 = GetBattlerSpriteCoord(battler2, sp4); + } + + if (GetBattlerSide(battler2) != B_SIDE_PLAYER) + sp0 += gBattleAnimArgs[3]; + else + sp0 -= gBattleAnimArgs[3]; + + sp1 += gBattleAnimArgs[4]; + sprite->pos1.x = sprite->data[1] = r9; + sprite->pos1.y = sprite->data[3] = r6; + sprite->data[2] = sp0; + sprite->data[4] = sp1; + sprite->data[0] = gBattleAnimArgs[0]; + InitAnimLinearTranslation(sprite); + sprite->callback = sub_80A8C84; + sprite->callback(sprite); +} + +void AnimUproarRing(struct Sprite *sprite) +{ + u8 index = IndexOfSpritePaletteTag(ANIM_TAG_THIN_RING); + + if (index != 0xFF) + { + BlendPalette(((index << 20) + 0x1010000) >> 16, 15, gBattleAnimArgs[5], gBattleAnimArgs[4]); + } + + StartSpriteAffineAnim(sprite, 1); + sprite->callback = AnimSpriteOnMonPos; + sprite->callback(sprite); +} + +void AnimSoftBoiledEgg(struct Sprite *sprite) +{ + s16 r1; + + InitSpritePosToAnimAttacker(sprite, FALSE); + r1 = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? -160 : 160; + sprite->data[0] = 0x380; + sprite->data[1] = r1; + sprite->data[7] = gBattleAnimArgs[2]; + sprite->callback = AnimSoftBoiledEgg_Step1; +} + +static void AnimSoftBoiledEgg_Step1(struct Sprite *sprite) +{ + s16 add; + + sprite->pos2.y -= (sprite->data[0] >> 8); + sprite->pos2.x = sprite->data[1] >> 8; + sprite->data[0] -= 32; + add = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? -160 : 160; + sprite->data[1] += add; + if (sprite->pos2.y > 0) + { + sprite->pos1.y += sprite->pos2.y; + sprite->pos1.x += sprite->pos2.x; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->data[0] = 0; + StartSpriteAffineAnim(sprite, 1); + sprite->callback = AnimSoftBoiledEgg_Step2; + } +} + +static void AnimSoftBoiledEgg_Step2(struct Sprite *sprite) +{ + if (sprite->data[0]++ > 19) + { + StartSpriteAffineAnim(sprite, 2); + sprite->callback = AnimSoftBoiledEgg_Step3; + } +} + +static void AnimSoftBoiledEgg_Step3(struct Sprite *sprite) +{ + if (sprite->affineAnimEnded) + { + StartSpriteAffineAnim(sprite, 1); + sprite->data[0] = 0; + if (sprite->data[7] == 0) + { + sprite->oam.tileNum += 16; + sprite->callback = AnimSoftBoiledEgg_Step3_Callback1; + } + else + { + sprite->oam.tileNum += 32; + sprite->callback = AnimSoftBoiledEgg_Step4; + } + } +} + +static void AnimSoftBoiledEgg_Step3_Callback1(struct Sprite *sprite) +{ + sprite->pos2.y -= 2; + if (++sprite->data[0] == 9) + { + sprite->data[0] = 16; + sprite->data[1] = 0; + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND((u16)sprite->data[0], 0)); + sprite->callback = AnimSoftBoiledEgg_Step3_Callback2; + } +} + +static void AnimSoftBoiledEgg_Step3_Callback2(struct Sprite *sprite) +{ + if (sprite->data[1]++ % 3 == 0) + { + sprite->data[0]--; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[0], 16 - sprite->data[0])); + if (sprite->data[0] == 0) + sprite->callback = AnimSoftBoiledEgg_Step4; + } +} + +static void AnimSoftBoiledEgg_Step4(struct Sprite *sprite) +{ + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + { + sprite->invisible = TRUE; + if (sprite->data[7] == 0) + sprite->callback = AnimSoftBoiledEgg_Step4_Callback; + else + sprite->callback = DestroyAnimSprite; + } +} + +static void AnimSoftBoiledEgg_Step4_Callback(struct Sprite *sprite) +{ + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + DestroyAnimSprite(sprite); +} + +void AnimTask_StretchAttacker(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + + task->data[0] = spriteId; + PrepareAffineAnimInTaskData(task, spriteId, sStretchAttackerAffineAnimCmds); + task->func = StretchAttacker_Step; +} + +static void StretchAttacker_Step(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + if (!RunAffineAnimFromTaskData(task)) + { + gSprites[task->data[0]].pos2.y = 0; + gSprites[task->data[0]].invisible = TRUE; + DestroyAnimVisualTask(taskId); + } +} + +void AnimTask_ExtremeSpeedImpact(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + task->data[0] = 0; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[12] = 3; + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + { + task->data[13] = 0xFFFF; + task->data[14] = 8; + } + else + { + task->data[13] = 1; + task->data[14] = -8; + } + + task->data[15] = GetAnimBattlerSpriteId(ANIM_TARGET); + task->func = ExtremeSpeedImpact_Step; +} + +static void ExtremeSpeedImpact_Step(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + gSprites[task->data[15]].pos2.x += task->data[14]; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[0]++; + break; + case 1: + if (++task->data[1] > 1) + { + task->data[1] = 0; + task->data[2]++; + if (task->data[2] & 1) + gSprites[task->data[15]].pos2.x += 6; + else + gSprites[task->data[15]].pos2.x -= 6; + + if (++task->data[3] > 4) + { + if (task->data[2] & 1) + gSprites[task->data[15]].pos2.x -= 6; + + task->data[0]++; + } + } + break; + case 2: + if (--task->data[12] != 0) + task->data[0] = 0; + else + task->data[0]++; + break; + case 3: + gSprites[task->data[15]].pos2.x += task->data[13]; + if (gSprites[task->data[15]].pos2.x == 0) + DestroyAnimVisualTask(taskId); + break; + } +} + +void AnimTask_ExtremeSpeedMonReappear(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + task->data[0] = 0; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[4] = 1; + task->data[13] = 14; + task->data[14] = 2; + task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER); + task->func = ExtremeSpeedMonReappear_Step; +} + +static void ExtremeSpeedMonReappear_Step(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + if (task->data[0] == 0 && ++task->data[1] > task->data[4]) + { + task->data[1] = 0; + if (++task->data[2] & 1) + gSprites[task->data[15]].invisible = FALSE; + else + gSprites[task->data[15]].invisible = TRUE; + + if (++task->data[3] >= task->data[13]) + { + if (++task->data[4] < task->data[14]) + { + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + } + else + { + gSprites[task->data[15]].invisible = FALSE; + DestroyAnimVisualTask(taskId); + } + } + } +} + +void AnimTask_SpeedDust(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + task->data[0] = 0; + task->data[1] = 4; + task->data[2] = 0; + task->data[3] = 0; + task->data[4] = 0; + task->data[5] = 0; + task->data[6] = 0; + task->data[7] = 0; + task->data[8] = 0; + task->data[13] = 0; + task->data[14] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + task->data[15] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y); + task->func = SpeedDust_Step1; +} + +static void SpeedDust_Step1(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + switch (task->data[8]) + { + case 0: + if (++task->data[4] > 1) + { + task->data[4] = 0; + task->data[5] = (task->data[5] + 1) & 1; + if (++task->data[6] > 20) + { + if (task->data[7] == 0) + { + task->data[6] = 0; + task->data[8] = 1; + } + else + task->data[8] = 2; + } + } + break; + case 1: + task->data[5] = 0; + if (++task->data[4] > 20) + { + task->data[7] = 1; + task->data[8] = 0; + } + break; + case 2: + task->data[5] = 1; + break; + } + + switch (task->data[0]) + { + case 0: + if (++task->data[1] > 4) + { + u8 spriteId; + task->data[1] = 0; + spriteId = CreateSprite(&gSpeedDustSpriteTemplate, task->data[14], task->data[15], 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].data[1] = 13; + gSprites[spriteId].pos2.x = sSpeedDustPosTable[task->data[2]][0]; + gSprites[spriteId].pos2.y = sSpeedDustPosTable[task->data[2]][1]; + task->data[13]++; + if (++task->data[2] > 3) + { + task->data[2] = 0; + if (++task->data[3] > 5) + task->data[0]++; + } + } + } + break; + case 1: + if (task->data[13] == 0) + DestroyAnimVisualTask(taskId); + break; + } +} + +void AnimSpeedDust(struct Sprite *sprite) +{ + sprite->invisible = gTasks[sprite->data[0]].data[5]; + if (sprite->animEnded) + { + gTasks[sprite->data[0]].data[sprite->data[1]]--; + DestroySprite(sprite); + } +} + +void sub_80A96B4(u8 taskId) +{ + int i; + u8 paletteNums[3]; + + paletteNums[0] = IndexOfSpritePaletteTag(ANIM_TAG_MUSIC_NOTES_2); + for (i = 1; i < 3; i++) + paletteNums[i] = AllocSpritePalette(ANIM_SPRITES_START - i); + + gMonSpritesGfxPtr->field_17C = AllocZeroed(0x2000); + LZDecompressWram(gBattleAnimSpritePal_MusicNotes2, gMonSpritesGfxPtr->field_17C); + for (i = 0; i < 3; i++) + LoadPalette(&gMonSpritesGfxPtr->field_17C[i * 32], (u16)((paletteNums[i] << 4) + 0x100), 32); + + FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_17C); + DestroyAnimVisualTask(taskId); +} + +void sub_80A9760(u8 taskId) +{ + int i; + + for (i = 0; i < 3; i++) + FreeSpritePaletteByTag(gMusicNotePaletteTagsTable[i]); + + DestroyAnimVisualTask(taskId); +} + +static void SetMusicNotePalette(struct Sprite *sprite, u8 a, u8 b) +{ + u8 tile; + + tile = (b & 1); + tile = ((-tile | tile) >> 31) & 32; + sprite->oam.tileNum += tile + (a << 2); + sprite->oam.paletteNum = IndexOfSpritePaletteTag(gMusicNotePaletteTagsTable[b >> 1]); +} + +void AnimHealBellMusicNote(struct Sprite *sprite) +{ + InitSpritePosToAnimAttacker(sprite, FALSE); + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + gBattleAnimArgs[3]; + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + SetMusicNotePalette(sprite, gBattleAnimArgs[5], gBattleAnimArgs[6]); +} + +void AnimMagentaHeart(struct Sprite *sprite) +{ + if (++sprite->data[0] == 1) + InitSpritePosToAnimAttacker(sprite, FALSE); + + sprite->pos2.x = Sin(sprite->data[1], 8); + sprite->pos2.y = sprite->data[2] >> 8; + sprite->data[1] = (sprite->data[1] + 7) & 0xFF; + sprite->data[2] -= 0x80; + if (sprite->data[0] == 60) + DestroyAnimSprite(sprite); +} + +void AnimTask_FakeOut(u8 taskId) +{ + u16 win0h = IsContest() ? 0x98 : 0xF0; + u16 win0v = 0; + + gBattle_WIN0H = win0h; + gBattle_WIN0V = 0xA0; + SetGpuReg(REG_OFFSET_WIN0H, gBattle_WIN0H); + SetGpuReg(REG_OFFSET_WIN0V, gBattle_WIN0V); + SetGpuReg(REG_OFFSET_WININ, WININ_WIN1_CLR | WININ_WIN1_OBJ | WININ_WIN1_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_BG_ALL); + SetGpuReg(REG_OFFSET_WINOUT, WININ_WIN1_CLR | WININ_WIN1_OBJ | WININ_WIN1_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ | WININ_WIN0_BG_ALL); + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_DARKEN); + SetGpuReg(REG_OFFSET_BLDY, BLDCNT_TGT1_OBJ); + gTasks[taskId].data[0] = win0v; + gTasks[taskId].data[1] = win0h; + gTasks[taskId].func = FakeOutStep1; +} + +static void FakeOutStep1(u8 taskId) +{ + gTasks[taskId].data[0] += 13; + gTasks[taskId].data[1] -= 13; + if (gTasks[taskId].data[0] >= gTasks[taskId].data[1]) + { + gBattle_WIN0H = 0; + gTasks[taskId].func = FakeOutStep2; + } + else + { + gBattle_WIN0H = gTasks[taskId].data[1] | (gTasks[taskId].data[0] << 8); + } +} + +static void FakeOutStep2(u8 taskId) +{ + if (++gTasks[taskId].data[10] == 5) + { + gTasks[taskId].data[11] = 0x88; + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_LIGHTEN); + BlendPalettes(sub_8075BE8(1, 0, 0, 0, 0, 0, 0), 16, RGB_WHITE); + } + else if (gTasks[taskId].data[10] > 4) + { + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + DestroyAnimVisualTask(taskId); + } +} + +void sub_80A9A20(u8 taskId) +{ + u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); + + if (++gTasks[taskId].data[0] == 1) + { + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_TARGET), sUnknown_83E4200); + gSprites[spriteId].pos2.x = 4; + } + else + { + gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x; + if (!RunAffineAnimFromTaskData(&gTasks[taskId])) + { + gSprites[spriteId].pos2.x = 0; + gSprites[spriteId].pos2.y = 0; + DestroyAnimVisualTask(taskId); + } + } +} + +void sub_80A9AB0(u8 taskId) +{ + u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + + if (++gTasks[taskId].data[0] == 1) + { + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), sUnknown_83E4200); + gSprites[spriteId].pos2.x = 4; + } + else + { + gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x; + if (!RunAffineAnimFromTaskData(&gTasks[taskId])) + { + gSprites[spriteId].pos2.x = 0; + gSprites[spriteId].pos2.y = 0; + DestroyAnimVisualTask(taskId); + } + } +} + +void AnimRedHeartProjectile(struct Sprite *sprite) +{ + InitSpritePosToAnimAttacker(sprite, TRUE); + sprite->data[0] = 95; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + InitAnimLinearTranslation(sprite); + sprite->callback = AnimRedHeartProjectile_Step; +} + +static void AnimRedHeartProjectile_Step(struct Sprite *sprite) +{ + if (!AnimTranslateLinear(sprite)) + { + sprite->pos2.y += Sin(sprite->data[5], 14); + sprite->data[5] = (sprite->data[5] + 4) & 0xFF; + } + else + { + DestroyAnimSprite(sprite); + } +} + +void AnimParticuleBurst(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + { + sprite->data[1] = gBattleAnimArgs[0]; + sprite->data[2] = gBattleAnimArgs[1]; + sprite->data[0]++; + } + else + { + sprite->data[4] += sprite->data[1]; + sprite->pos2.x = sprite->data[4] >> 8; + sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]); + sprite->data[3] = (sprite->data[3] + 3) & 0xFF; + if (sprite->data[3] > 100) + sprite->invisible = sprite->data[3] % 2; + + if (sprite->data[3] > 120) + DestroyAnimSprite(sprite); + } +} + +void AnimRedHeartRising(struct Sprite *sprite) +{ + sprite->pos1.x = gBattleAnimArgs[0]; + sprite->pos1.y = 160; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[1]; + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, AnimRedHeartRising_Step); +} + +static void AnimRedHeartRising_Step(struct Sprite *sprite) +{ + s16 y; + + sprite->data[2] += sprite->data[1]; + sprite->pos2.y = -((u16)sprite->data[2] >> 8); + sprite->pos2.x = Sin(sprite->data[3], 4); + sprite->data[3] = (sprite->data[3] + 3) & 0xFF; + y = sprite->pos1.y + sprite->pos2.y; + if (y <= 72) + { + sprite->invisible = sprite->data[3] % 2; + if (y <= 64) + DestroyAnimSprite(sprite); + } +} + +void AnimTask_HeartsBackground(u8 taskId) +{ + struct BattleAnimBgData animBg; + + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16)); + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 3); + SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0); + if (!IsContest()) + SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1); + + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X); + SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); + sub_80752A0(&animBg); + AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnimBg_AttractTilemap); + AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBg_AttractGfx, animBg.tilesOffset); + LoadCompressedPalette(gBattleAnimBg_AttractPal, animBg.paletteId * 16, 32); + if (IsContest()) + sub_80730C0(animBg.paletteId, animBg.bgTilemap, 0, 0); + + gTasks[taskId].func = HeartsBackground_Step; +} + +static void HeartsBackground_Step(u8 taskId) +{ + struct BattleAnimBgData animBg; + + switch (gTasks[taskId].data[12]) + { + case 0: + if (++gTasks[taskId].data[10] == 4) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]++; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11])); + if (gTasks[taskId].data[11] == 16) + { + gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; + } + } + break; + case 1: + if (++gTasks[taskId].data[11] == 141) + { + gTasks[taskId].data[11] = 16; + gTasks[taskId].data[12]++; + } + break; + case 2: + if (++gTasks[taskId].data[10] == 4) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]--; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11])); + if (gTasks[taskId].data[11] == 0) + { + gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; + } + } + break; + case 3: + sub_80752A0(&animBg); + sub_8075358(animBg.bgId); + gTasks[taskId].data[12]++; + break; + case 4: + if (!IsContest()) + SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0); + + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); + DestroyAnimVisualTask(taskId); + break; + } +} + +void AnimTask_ScaryFace(u8 taskId) +{ + struct BattleAnimBgData animBg; + + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16)); + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); + SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0); + if (!IsContest()) + SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1); + + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X); + SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); + sub_80752A0(&animBg); + + if (IsContest()) + LZDecompressVram(gBattleAnimBgTilemap_ScaryFaceContest, animBg.bgTilemap); + else if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT) + AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnimBgTilemap_ScaryFacePlayer); + else + AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnimBgTilemap_ScaryFaceOpponent); + + AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnim_ScaryFaceGfx, animBg.tilesOffset); + LoadCompressedPalette(gBattleAnim_ScaryFacePal, animBg.paletteId * 16, 32); + if (IsContest()) + sub_80730C0(animBg.paletteId, animBg.bgTilemap, 0, 0); + + gTasks[taskId].func = ScaryFace_Step; +} + +static void ScaryFace_Step(u8 taskId) +{ + struct BattleAnimBgData animBg; + + switch (gTasks[taskId].data[12]) + { + case 0: + if (++gTasks[taskId].data[10] == 2) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]++; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11])); + if (gTasks[taskId].data[11] == 14) + { + gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; + } + } + break; + case 1: + if (++gTasks[taskId].data[11] == 21) + { + gTasks[taskId].data[11] = 14; + gTasks[taskId].data[12]++; + } + break; + case 2: + if (++gTasks[taskId].data[10] == 2) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]--; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11])); + if (gTasks[taskId].data[11] == 0) + { + gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; + } + } + break; + case 3: + sub_80752A0(&animBg); + sub_8075358(1); + sub_8075358(2); + gTasks[taskId].data[12]++; + // fall through + case 4: + if (!IsContest()) + SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0); + + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); + DestroyAnimVisualTask(taskId); + break; + } +} + +// Orbits a sphere in an ellipse around the mon. +// Used by MOVE_HIDDEN_POWER +// arg 0: duration +// arg 1: initial wave offset +void AnimOrbitFast(struct Sprite *sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + sprite->affineAnimPaused = TRUE; + sprite->data[0] = gBattleAnimArgs[0]; + sprite->data[1] = gBattleAnimArgs[1]; + sprite->data[7] = GetBattlerSpriteSubpriority(gBattleAnimAttacker); + sprite->callback = AnimOrbitFastStep; + sprite->callback(sprite); +} + +static void AnimOrbitFastStep(struct Sprite *sprite) +{ + if (sprite->data[1] >= 64 && sprite->data[1] <= 191) + sprite->subpriority = sprite->data[7] + 1; + else + sprite->subpriority = sprite->data[7] - 1; + + sprite->pos2.x = Sin(sprite->data[1], sprite->data[2] >> 8); + sprite->pos2.y = Cos(sprite->data[1], sprite->data[3] >> 8); + sprite->data[1] = (sprite->data[1] + 9) & 0xFF; + switch (sprite->data[5]) + { + case 1: + sprite->data[2] -= 0x400; + sprite->data[3] -= 0x100; + if (++sprite->data[4] == sprite->data[0]) + { + sprite->data[5] = 2; + return; + } + break; + case 0: + sprite->data[2] += 0x400; + sprite->data[3] += 0x100; + if (++sprite->data[4] == sprite->data[0]) + { + sprite->data[4] = 0; + sprite->data[5] = 1; + } + break; + } + + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + DestroyAnimSprite(sprite); +} + +// Moves orbs away from the mon, based on where they are in their orbit. +// Used in MOVE_HIDDEN_POWER. +// arg 0: initial wave offset +void AnimOrbitScatter(struct Sprite *sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + sprite->data[0] = Sin(gBattleAnimArgs[0], 10); + sprite->data[1] = Cos(gBattleAnimArgs[0], 7); + sprite->callback = AnimOrbitScatterStep; +} + +static void AnimOrbitScatterStep(struct Sprite *sprite) +{ + sprite->pos2.x += sprite->data[0]; + sprite->pos2.y += sprite->data[1]; + if (sprite->pos1.x + sprite->pos2.x + 16 > 272u || sprite->pos1.y + sprite->pos2.y > 160 || sprite->pos1.y + sprite->pos2.y < -16) + DestroyAnimSprite(sprite); +} + +static void AnimSpitUpOrb_Step(struct Sprite *sprite) +{ + sprite->pos2.x += sprite->data[0]; + sprite->pos2.y += sprite->data[1]; + if (sprite->data[3]++ >= sprite->data[2]) + DestroyAnimSprite(sprite); +} + +void AnimSpitUpOrb(struct Sprite *sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + sprite->data[0] = Sin(gBattleAnimArgs[0], 10); + sprite->data[1] = Cos(gBattleAnimArgs[0], 7); + sprite->data[2] = gBattleAnimArgs[1]; + sprite->callback = AnimSpitUpOrb_Step; +} + +static void sub_80AA3D4(struct Sprite *sprite) +{ + if (sprite->animEnded) + DestroyAnimSprite(sprite); +} + +void AnimEyeSparkle(struct Sprite *sprite) +{ + InitSpritePosToAnimAttacker(sprite, TRUE); + sprite->callback = sub_80AA3D4; +} + +void AnimAngel(struct Sprite *sprite) +{ + s16 var0; + + if (!sprite->data[0]) + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + } + + sprite->data[0]++; + var0 = (sprite->data[0] * 10) & 0xFF; + sprite->pos2.x = Sin(var0, 80) >> 8; + if (sprite->data[0] < 80) + sprite->pos2.y = (sprite->data[0] / 2) + (Cos(var0, 80) >> 8); + + if (sprite->data[0] > 90) + { + sprite->data[2]++; + sprite->pos2.x -= sprite->data[2] / 2; + } + + if (sprite->data[0] > 100) + DestroyAnimSprite(sprite); +} + +static void sub_80AA49C(struct Sprite *sprite) +{ + sprite->data[5]++; + sprite->pos2.x = Sin(sprite->data[3], 5); + sprite->pos2.y = sprite->data[5] / 2; + sprite->data[3] = (sprite->data[3] + 3) & 0xFF; + if (sprite->data[5] > 20) + sprite->invisible = sprite->data[5] % 2; + + if (sprite->data[5] > 30) + DestroyAnimSprite(sprite); +} + +void AnimPinkHeart(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + { + sprite->data[1] = gBattleAnimArgs[0]; + sprite->data[2] = gBattleAnimArgs[1]; + sprite->data[0]++; + } + else + { + sprite->data[4] += sprite->data[1]; + sprite->pos2.x = sprite->data[4] >> 8; + sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]); + sprite->data[3] = (sprite->data[3] + 3) & 0xFF; + if (sprite->data[3] > 70) + { + sprite->callback = sub_80AA49C; + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[3] = Random() % 180; + } + } +} + +void AnimDevil(struct Sprite *sprite) +{ + if (sprite->data[3] == 0) + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + StartSpriteAnim(sprite, 0); + sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimTarget) - 1; + sprite->data[2] = 1; + } + sprite->data[0] += sprite->data[2]; + sprite->data[1] = (sprite->data[0] * 4) % 256; + if (sprite->data[1] < 0) + sprite->data[1] = 0; + sprite->pos2.x = Cos(sprite->data[1], 30 - sprite->data[0] / 4); + sprite->pos2.y = Sin(sprite->data[1], 10 - sprite->data[0] / 8); + if (sprite->data[1] > 128 && sprite->data[2] > 0) + sprite->data[2] = -1; + if (sprite->data[1] == 0 && sprite->data[2] < 0) + sprite->data[2] = 1; + sprite->data[3]++; + if (sprite->data[3] < 10 || sprite->data[3] > 80) + sprite->invisible = sprite->data[0] % 2; + else + sprite->invisible = FALSE; + if (sprite->data[3] > 90) + DestroyAnimSprite(sprite); +} + +void AnimFurySwipes(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + StartSpriteAnim(sprite, gBattleAnimArgs[2]); + sprite->data[0]++; + } + else if (sprite->animEnded) + { + DestroyAnimSprite(sprite); + } +} + +void AnimMovementWaves(struct Sprite *sprite) +{ + if (!gBattleAnimArgs[2]) + { + DestroyAnimSprite(sprite); + } + else + { + if (!gBattleAnimArgs[0]) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + } + else + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + } + + if (!gBattleAnimArgs[1]) + sprite->pos1.x += 32; + else + sprite->pos1.x -= 32; + + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[1]; + StartSpriteAnim(sprite, sprite->data[1]); + sprite->callback = AnimMovementWaves_Step; + } +} + +static void AnimMovementWaves_Step(struct Sprite *sprite) +{ + if (sprite->animEnded) + { + if (--sprite->data[0]) + StartSpriteAnim(sprite, sprite->data[1]); + else + DestroyAnimSprite(sprite); + } +} + +void AnimTask_UproarDistortion(u8 taskId) +{ + u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + + PrepareAffineAnimInTaskData(&gTasks[taskId], spriteId, sUproarAffineAnimCmds); + gTasks[taskId].func = UproarDistortion_Step; +} + +static void UproarDistortion_Step(u8 taskId) +{ + if (!RunAffineAnimFromTaskData(&gTasks[taskId])) + DestroyAnimVisualTask(taskId); +} + +void AnimJaggedMusicNote(struct Sprite *sprite) +{ + int var1; + u8 battler = !gBattleAnimArgs[0] ? gBattleAnimAttacker : gBattleAnimTarget; + + if (GetBattlerSide(battler) == B_SIDE_OPPONENT) + gBattleAnimArgs[1] *= -1; + + sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + gBattleAnimArgs[1]; + sprite->pos1.y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2]; + sprite->data[0] = 0; + sprite->data[1] = (u16)sprite->pos1.x << 3; + sprite->data[2] = (u16)sprite->pos1.y << 3; + + var1 = gBattleAnimArgs[1] << 3; + if (var1 < 0) + var1 += 7; + sprite->data[3] = var1 >> 3; + + var1 = gBattleAnimArgs[2] << 3; + if (var1 < 0) + var1 += 7; + sprite->data[4] = var1 >> 3; + + sprite->oam.tileNum += gBattleAnimArgs[3] * 16; + sprite->callback = AnimJaggedMusicNote_Step; +} + +static void AnimJaggedMusicNote_Step(struct Sprite *sprite) +{ + sprite->data[1] += sprite->data[3]; + sprite->data[2] += sprite->data[4]; + sprite->pos1.x = sprite->data[1] >> 3; + sprite->pos1.y = sprite->data[2] >> 3; + if (++sprite->data[0] > 16) + DestroyAnimSprite(sprite); +} + +void AnimPerishSongMusicNote2(struct Sprite *sprite) +{ + if (!sprite->data[0]) + { + sprite->data[1] = 120 - gBattleAnimArgs[0]; + sprite->invisible = TRUE; + } + + if (++sprite->data[0] == sprite->data[1]) + SetGreyscaleOrOriginalPalette(sprite->oam.paletteNum + 16, 0); + + if (sprite->data[0] == sprite->data[1] + 80) + DestroyAnimSprite(sprite); +} + +void AnimPerishSongMusicNote(struct Sprite *sprite) +{ + int index; + int var2; + + if (!sprite->data[0]) + { + sprite->pos1.x = 120; + sprite->pos1.y = (gBattleAnimArgs[0] + (((u16)gBattleAnimArgs[0]) >> 31)) / 2 - 15; + + StartSpriteAnim(sprite, gBattleAnimArgs[1]); + + sprite->data[5] = 120; + sprite->data[3] = gBattleAnimArgs[2]; + } + + sprite->data[0]++; + + sprite->data[1] = (sprite->data[0] + ((u16)sprite->data[0] >> 31)) / 2; + index = ((sprite->data[0] * 3) + (u16)sprite->data[3]); + var2 = 0xFF; + sprite->data[6] = (sprite->data[6] + 10) & 0xFF; + + index &= var2; + sprite->pos2.x = Cos(index, 100); + + sprite->pos2.y = sprite->data[1] + Sin(index, 10) + Cos(sprite->data[6], 4); + + if (sprite->data[0] > sprite->data[5]) + { + sprite->callback = AnimPerishSongMusicNote_Step1; + + sprite->data[0] = 0; + SetSpritePrimaryCoordsFromSecondaryCoords(sprite); + sprite->data[2] = 5; + sprite->data[4] = 0; + sprite->data[3] = 0; + + StartSpriteAffineAnim(sprite, 1); + } +} + +static void AnimPerishSongMusicNote_Step1(struct Sprite *sprite) +{ + if (++sprite->data[0] > 10) + { + sprite->data[0] = 0; + sprite->callback = AnimPerishSongMusicNote_Step2; + } +} + +static void AnimPerishSongMusicNote_Step2(struct Sprite *sprite) +{ + sprite->data[3] += sprite->data[2]; + sprite->pos2.y = sprite->data[3]; + + sprite->data[2]++; + + if (sprite->data[3] > 48 && sprite->data[2] > 0) + { + sprite->data[2] = sprite->data[4] - 5; + sprite->data[4]++; + } + + if (sprite->data[4] > 3) + { + int var1 = sprite->data[2]; + sprite->invisible = var1 - (((s32)(var1 + ((u32)var1 >> 31)) >> 1) << 1); + DestroyAnimSprite(sprite); + } + + if (sprite->data[4] == 4) + { + DestroyAnimSprite(sprite); + } +} + +void AnimGuardRing(struct Sprite *sprite) +{ + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker))) + { + SetAverageBattlerPositions(gBattleAnimAttacker, 0, &sprite->pos1.x, &sprite->pos1.y); + sprite->pos1.y += 40; + + StartSpriteAffineAnim(sprite, 1); + } + else + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + 40; + } + + sprite->data[0] = 13; + sprite->data[2] = sprite->pos1.x; + sprite->data[4] = sprite->pos1.y - 72; + + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +void AnimTask_IsFuryCutterHitRight(u8 taskId) +{ + gBattleAnimArgs[7] = gAnimDisableStructPtr->furyCutterCounter & 1; + DestroyAnimVisualTask(taskId); +} + +void AnimTask_GetFuryCutterHitCount(u8 taskId) +{ + gBattleAnimArgs[7] = gAnimDisableStructPtr->furyCutterCounter; + DestroyAnimVisualTask(taskId); +} diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c new file mode 100644 index 000000000..69bae2c6f --- /dev/null +++ b/src/battle_anim_effects_3.c @@ -0,0 +1,5320 @@ +#include "global.h" +#include "malloc.h" +#include "battle.h" +#include "battle_anim.h" +#include "bg.h" +#include "data.h" +#include "decompress.h" +#include "dma3.h" +#include "gpu_regs.h" +#include "graphics.h" +#include "palette.h" +#include "pokemon_icon.h" +#include "random.h" +#include "scanline_effect.h" +#include "sound.h" +#include "sprite.h" +#include "task.h" +#include "trig.h" +#include "util.h" +#include "constants/battle_anim.h" +#include "constants/songs.h" +#include "constants/species.h" +#include "constants/weather.h" + +// Function Declarations +static void AnimBlackSmokeStep(struct Sprite *); +static void AnimWhiteHalo_Step1(struct Sprite *); +static void AnimWhiteHalo_Step2(struct Sprite *); +static void AnimMeanLookEye_Step1(struct Sprite *); +static void AnimMeanLookEye_Step2(struct Sprite *); +static void AnimMeanLookEye_Step3(struct Sprite *); +static void AnimMeanLookEye_Step4(struct Sprite *); +static void SetPsychicBackground_Step(u8); +static void FadeScreenToWhite_Step(u8); +static void AnimSpikes_Step1(struct Sprite *); +static void AnimSpikes_Step2(struct Sprite *); +static void AnimSpotlight_Step1(struct Sprite *); +static void AnimSpotlight_Step2(struct Sprite *); +static void AnimClappingHand_Step(struct Sprite *); +static void AnimRapidSpin_Step(struct Sprite *); +static void RapinSpinMonElevation_Step(u8); +static void TormentAttacker_Step(u8); +static void TormentAttacker_Callback(struct Sprite *); +static void AnimWishStar_Step(struct Sprite *); +static void AnimMiniTwinklingStar_Step(struct Sprite *); +static void AnimGreenStar_Step1(struct Sprite *); +static void AnimGreenStar_Step2(struct Sprite *); +static void AnimGreenStar_Callback(struct Sprite *); +static void AnimTask_RockMonBackAndForthStep(u8); +static void AnimSweetScentPetalStep(struct Sprite *); +static void AnimTask_FlailMovementStep(u8); +static void AnimFlatterConfettiStep(struct Sprite *); +static void AnimFlatterSpotlightStep(struct Sprite *); +static void AnimReversalOrbStep(struct Sprite *); +static void AnimTask_RolePlaySilhouetteStep1(u8); +static void AnimTask_RolePlaySilhouetteStep2(u8); +static void AnimTask_AcidArmorStep(u8); +static void AnimTask_DeepInhaleStep(u8); +static void AnimYawnCloudStep(struct Sprite *); +static void AnimTask_SquishAndSweatDropletsStep(u8); +static void CreateSweatDroplets(u8, bool8); +static void AnimTask_FacadeColorBlendStep(u8); +static void AnimRoarNoiseLineStep(struct Sprite *); +static void AnimTask_GlareEyeDotsStep(u8); +static void GetGlareEyeDotCoords(s16, s16, s16, s16, u8, u8, s16 *, s16 *); +static void AnimTask_BarrageBallStep(u8); +static void AnimSmellingSaltsHand_Step(struct Sprite *); +static void AnimTask_SmellingSaltsSquishStep(u8); +static void AnimSmellingSaltExclamationStep(struct Sprite *); +static void AnimHelpingHandClapStep(struct Sprite *); +static void AnimTask_HelpingHandAttackerMovementStep(u8); +static void AnimForesightMagnifyingGlassStep(struct Sprite *); +static void AnimTask_MonToSubstituteDoll(u8); +static void AnimBlockXStep(struct Sprite *); +static void AnimTask_OdorSleuthMovementWaitFinish(u8); +static void MoveOdorSleuthClone(struct Sprite *); +static void AnimTask_TeeterDanceMovementStep(u8); +static void AnimRecycleStep(struct Sprite *); +static void AnimTask_SlackOffSquishStep(u8); + +// Data +static const union AnimCmd sScratchAnimCmds[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(16, 4), + ANIMCMD_FRAME(32, 4), + ANIMCMD_FRAME(48, 4), + ANIMCMD_FRAME(64, 4), + ANIMCMD_END, +}; + +static const union AnimCmd *const sScratchAnimTable[] = +{ + sScratchAnimCmds, +}; + +const struct SpriteTemplate gScratchSpriteTemplate = +{ + .tileTag = ANIM_TAG_SCRATCH, + .paletteTag = ANIM_TAG_SCRATCH, + .oam = &gOamData_AffineOff_ObjBlend_32x32, + .anims = sScratchAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSpriteOnMonPos, +}; + +const struct SpriteTemplate gBlackSmokeSpriteTemplate = +{ + .tileTag = ANIM_TAG_BLACK_SMOKE, + .paletteTag = ANIM_TAG_BLACK_SMOKE, + .oam = &gOamData_AffineOff_ObjNormal_32x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimBlackSmoke, +}; + +const struct SpriteTemplate gBlackBallSpriteTemplate = +{ + .tileTag = ANIM_TAG_BLACK_BALL, + .paletteTag = ANIM_TAG_BLACK_BALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimThrowProjectile, +}; + +static const union AnimCmd sOpeningEyeAnimCmds[] = +{ + ANIMCMD_FRAME(0, 40), + ANIMCMD_FRAME(16, 8), + ANIMCMD_FRAME(32, 40), + ANIMCMD_END, +}; + +static const union AnimCmd *const sOpeningEyeAnimTable[] = +{ + sOpeningEyeAnimCmds, +}; + +const struct SpriteTemplate gOpeningEyeSpriteTemplate = +{ + .tileTag = ANIM_TAG_OPENING_EYE, + .paletteTag = ANIM_TAG_OPENING_EYE, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sOpeningEyeAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSpriteOnMonPos, +}; + +const struct SpriteTemplate gWhiteHaloSpriteTemplate = +{ + .tileTag = ANIM_TAG_ROUND_WHITE_HALO, + .paletteTag = ANIM_TAG_ROUND_WHITE_HALO, + .oam = &gOamData_AffineOff_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimWhiteHalo, +}; + +const struct SpriteTemplate gTealAlertSpriteTemplate = +{ + .tileTag = ANIM_TAG_TEAL_ALERT, + .paletteTag = ANIM_TAG_TEAL_ALERT, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimTealAlert, +}; + +static const union AffineAnimCmd sMeanLookEyeAffineAnimCmds1[] = +{ + AFFINEANIMCMD_FRAME(0x180, 0x180, 0, 0), + AFFINEANIMCMD_FRAME(-0x20, 0x18, 0, 5), + AFFINEANIMCMD_FRAME(0x18, -0x20, 0, 5), + AFFINEANIMCMD_JUMP(1), +}; + +static const union AffineAnimCmd sMeanLookEyeAffineAnimCmds2[] = +{ + AFFINEANIMCMD_FRAME(0x30, 0x30, 0, 0), + AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 6), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const sMeanLookEyeAffineAnimTable[] = +{ + sMeanLookEyeAffineAnimCmds1, + sMeanLookEyeAffineAnimCmds2, +}; + +const struct SpriteTemplate gMeanLookEyeSpriteTemplate = +{ + .tileTag = ANIM_TAG_EYE, + .paletteTag = ANIM_TAG_EYE, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sMeanLookEyeAffineAnimTable, + .callback = AnimMeanLookEye, +}; + +const struct SpriteTemplate gSpikesSpriteTemplate = +{ + .tileTag = ANIM_TAG_SPIKES, + .paletteTag = ANIM_TAG_SPIKES, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSpikes, +}; + +static const union AnimCmd sLeerAnimCmds[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(48, 3), + ANIMCMD_FRAME(64, 3), + ANIMCMD_END, +}; + +static const union AnimCmd *const sLeerAnimTable[] = +{ + sLeerAnimCmds, +}; + +const struct SpriteTemplate gLeerSpriteTemplate = +{ + .tileTag = ANIM_TAG_LEER, + .paletteTag = ANIM_TAG_LEER, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sLeerAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimLeer, +}; + +static const union AnimCmd sLetterZAnimCmds[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_END, +}; + +static const union AnimCmd *const sLetterZAnimTable[] = +{ + sLetterZAnimCmds, +}; + +static const union AffineAnimCmd sLetterZAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(-7, -7, -3, 16), + AFFINEANIMCMD_FRAME(7, 7, 3, 16), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd *const sLetterZAffineAnimTable[] = +{ + sLetterZAffineAnimCmds, +}; + +const struct SpriteTemplate gLetterZSpriteTemplate = +{ + .tileTag = ANIM_TAG_LETTER_Z, + .paletteTag = ANIM_TAG_LETTER_Z, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = sLetterZAnimTable, + .images = NULL, + .affineAnims = sLetterZAffineAnimTable, + .callback = AnimLetterZ, +}; + +static const union AnimCmd sFangAnimCmds[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(16, 16), + ANIMCMD_FRAME(32, 4), + ANIMCMD_FRAME(48, 4), + ANIMCMD_END, +}; + +static const union AnimCmd *const sFangAnimTable[] = +{ + sFangAnimCmds, +}; + +static const union AffineAnimCmd sFangAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0), + AFFINEANIMCMD_FRAME(-0x20, -0x20, 0, 8), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const sFangAffineAnimTable[] = +{ + sFangAffineAnimCmds, +}; + +const struct SpriteTemplate gFangSpriteTemplate = +{ + .tileTag = ANIM_TAG_FANG_ATTACK, + .paletteTag = ANIM_TAG_FANG_ATTACK, + .oam = &gOamData_AffineDouble_ObjNormal_32x32, + .anims = sFangAnimTable, + .images = NULL, + .affineAnims = sFangAffineAnimTable, + .callback = AnimFang, +}; + +static const union AffineAnimCmd sSpotlightAffineAnimCmds1[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x180, 0, 0), + AFFINEANIMCMD_FRAME(0x10, 0x0, 0, 20), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sSpotlightAffineAnimCmds2[] = +{ + AFFINEANIMCMD_FRAME(0x140, 0x180, 0, 0), + AFFINEANIMCMD_FRAME(-0x10, 0x0, 0, 19), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const sSpotlightAffineAnimTable[] = +{ + sSpotlightAffineAnimCmds1, + sSpotlightAffineAnimCmds2, +}; + +const struct SpriteTemplate gSpotlightSpriteTemplate = +{ + .tileTag = ANIM_TAG_SPOTLIGHT, + .paletteTag = ANIM_TAG_SPOTLIGHT, + .oam = &gOamData_AffineDouble_ObjNormal_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sSpotlightAffineAnimTable, + .callback = AnimSpotlight, +}; + +const struct SpriteTemplate gClappingHandSpriteTemplate = +{ + .tileTag = ANIM_TAG_TAG_HAND, + .paletteTag = ANIM_TAG_TAG_HAND, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimClappingHand, +}; + +const struct SpriteTemplate gClappingHand2SpriteTemplate = +{ + .tileTag = ANIM_TAG_TAG_HAND, + .paletteTag = ANIM_TAG_TAG_HAND, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimClappingHand2, +}; + +static const union AnimCmd sRapidSpinAnimCmds[] = +{ + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(8, 2), + ANIMCMD_FRAME(16, 2), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd *const sRapidSpinAnimTable[] = +{ + sRapidSpinAnimCmds, +}; + +const struct SpriteTemplate gRapidSpinSpriteTemplate = +{ + .tileTag = ANIM_TAG_RAPID_SPIN, + .paletteTag = ANIM_TAG_RAPID_SPIN, + .oam = &gOamData_AffineOff_ObjNormal_32x16, + .anims = sRapidSpinAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimRapidSpin, +}; + +static const union AffineAnimCmd sUnknown_83FF080[] = +{ + AFFINEANIMCMD_FRAME(-12, 8, 0, 4), + AFFINEANIMCMD_FRAME(20, -20, 0, 4), + AFFINEANIMCMD_FRAME(-8, 12, 0, 4), + AFFINEANIMCMD_END, +}; + +static const union AnimCmd sTriAttackTriangleAnimCmds[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_END, +}; + +static const union AnimCmd *const sTriAttackTriangleAnimTable[] = +{ + sTriAttackTriangleAnimCmds, +}; + +static const union AffineAnimCmd sTriAttackTriangleAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 5, 40), + AFFINEANIMCMD_FRAME(0, 0, 10, 10), + AFFINEANIMCMD_FRAME(0, 0, 15, 10), + AFFINEANIMCMD_FRAME(0, 0, 20, 40), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd *const sTriAttackTriangleAffineAnimTable[] = +{ + sTriAttackTriangleAffineAnimCmds, +}; + +const struct SpriteTemplate gTriAttackTriangleSpriteTemplate = +{ + .tileTag = ANIM_TAG_TRI_FORCE_TRIANGLE, + .paletteTag = ANIM_TAG_TRI_FORCE_TRIANGLE, + .oam = &gOamData_AffineDouble_ObjNormal_64x64, + .anims = sTriAttackTriangleAnimTable, + .images = NULL, + .affineAnims = sTriAttackTriangleAffineAnimTable, + .callback = AnimTriAttackTriangle, +}; + +static const union AnimCmd sEclipsingOrbAnimCmds[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(48, 3), + ANIMCMD_FRAME(32, 3, .hFlip = TRUE), + ANIMCMD_FRAME(16, 3, .hFlip = TRUE), + ANIMCMD_FRAME(0, 3, .hFlip = TRUE), + ANIMCMD_LOOP(1), + ANIMCMD_END, +}; + +static const union AnimCmd *const sEclipsingOrbAnimTable[] = +{ + sEclipsingOrbAnimCmds, +}; + +const struct SpriteTemplate gEclipsingOrbSpriteTemplate = +{ + .tileTag = ANIM_TAG_ECLIPSING_ORB, + .paletteTag = ANIM_TAG_ECLIPSING_ORB, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sEclipsingOrbAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSpriteOnMonPos, +}; + +static const union AffineAnimCmd DefenseCurlDeformMonAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(-12, 20, 0, 8), + AFFINEANIMCMD_FRAME(12, -20, 0, 8), + AFFINEANIMCMD_LOOP(2), + AFFINEANIMCMD_END, +}; + +const struct SpriteTemplate gBatonPassPokeballSpriteTemplate = +{ + .tileTag = ANIM_TAG_POKEBALL, + .paletteTag = ANIM_TAG_POKEBALL, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimBatonPassPokeball, +}; + +const struct SpriteTemplate gWishStarSpriteTemplate = +{ + .tileTag = ANIM_TAG_GOLD_STARS, + .paletteTag = ANIM_TAG_GOLD_STARS, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimWishStar, +}; + +const struct SpriteTemplate gMiniTwinklingStarSpriteTemplate = +{ + .tileTag = ANIM_TAG_GOLD_STARS, + .paletteTag = ANIM_TAG_GOLD_STARS, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMiniTwinklingStar, +}; + +static const union AffineAnimCmd sStockpileDeformMonAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(8, -8, 0, 12), + AFFINEANIMCMD_FRAME(-16, 16, 0, 12), + AFFINEANIMCMD_FRAME(8, -8, 0, 12), + AFFINEANIMCMD_LOOP(1), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sSpitUpDeformMonAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(0, 6, 0, 20), + AFFINEANIMCMD_FRAME(0, 0, 0, 20), + AFFINEANIMCMD_FRAME(0, -18, 0, 6), + AFFINEANIMCMD_FRAME(-18, -18, 0, 3), + AFFINEANIMCMD_FRAME(0, 0, 0, 15), + AFFINEANIMCMD_FRAME(4, 4, 0, 13), + AFFINEANIMCMD_END, +}; + +const struct SpriteTemplate gSwallowBlueOrbSpriteTemplate = +{ + .tileTag = ANIM_TAG_BLUE_ORB, + .paletteTag = ANIM_TAG_BLUE_ORB, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSwallowBlueOrb, +}; + +static const union AffineAnimCmd sSwallowDeformMonAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(0, 6, 0, 20), + AFFINEANIMCMD_FRAME(0, 0, 0, 20), + AFFINEANIMCMD_FRAME(7, -30, 0, 6), + AFFINEANIMCMD_FRAME(0, 0, 0, 20), + AFFINEANIMCMD_FRAME(-2, 3, 0, 20), + AFFINEANIMCMD_END, +}; + +static const s8 sMorningSunLightBeamCoordsTable[] = +{ + 0xE8, + 0x18, + 0xFC, + 0x00, +}; + +static const union AnimCmd sGreenStarAnimCmds1[] = +{ + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(4, 6), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sGreenStarAnimCmds2[] = +{ + ANIMCMD_FRAME(8, 6), + ANIMCMD_END, +}; + +static const union AnimCmd sGreenStarAnimCmds3[] = +{ + ANIMCMD_FRAME(12, 6), + ANIMCMD_END, +}; + +static const union AnimCmd *const sGreenStarAnimTable[] = +{ + sGreenStarAnimCmds1, + sGreenStarAnimCmds2, + sGreenStarAnimCmds3, +}; + +const struct SpriteTemplate gGreenStarSpriteTemplate = +{ + .tileTag = ANIM_TAG_GREEN_STAR, + .paletteTag = ANIM_TAG_GREEN_STAR, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = sGreenStarAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimGreenStar, +}; + +static const s8 sDoomDesireLightBeamCoordTable[] = +{ + 0x78, + 0x50, + 0x28, + 0x00, +}; + +static const u8 sDoomDesireLightBeamDelayTable[] = +{ + 0, + 0, + 0, + 0, + 50, +}; + +static const union AffineAnimCmd sStrongFrustrationAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(0, -15, 0, 7), + AFFINEANIMCMD_FRAME(0, 15, 0, 7), + AFFINEANIMCMD_LOOP(2), + AFFINEANIMCMD_END, +}; + +const struct SpriteTemplate gWeakFrustrationAngerMarkSpriteTemplate = +{ + .tileTag = ANIM_TAG_ANGER, + .paletteTag = ANIM_TAG_ANGER, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimWeakFrustrationAngerMark, +}; + +static const union AnimCmd sSweetScentPetalAnimCmds1[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(3, 8), + ANIMCMD_FRAME(3, 8, .vFlip = TRUE), + ANIMCMD_FRAME(2, 8, .vFlip = TRUE), + ANIMCMD_FRAME(0, 8, .vFlip = TRUE), + ANIMCMD_FRAME(1, 8, .vFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sSweetScentPetalAnimCmds2[] = +{ + ANIMCMD_FRAME(0, 8, .hFlip = TRUE), + ANIMCMD_FRAME(1, 8, .hFlip = TRUE), + ANIMCMD_FRAME(2, 8, .hFlip = TRUE), + ANIMCMD_FRAME(3, 8, .hFlip = TRUE), + ANIMCMD_FRAME(3, 8, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(2, 8, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(0, 8, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(1, 8, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sSweetScentPetalAnimCmds3[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_END, +}; + +static const union AnimCmd *const sSweetScentPetalAnimCmdTable[] = +{ + sSweetScentPetalAnimCmds1, + sSweetScentPetalAnimCmds2, + sSweetScentPetalAnimCmds3, +}; + +const struct SpriteTemplate gSweetScentPetalSpriteTemplate = +{ + .tileTag = ANIM_TAG_PINK_PETAL, + .paletteTag = ANIM_TAG_PINK_PETAL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = sSweetScentPetalAnimCmdTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSweetScentPetal, +}; + +static const u16 sUnknown_83FF33C[] = INCBIN_U16("graphics/battle_anims/unk_83FF33C.gbapal"); //Unused + +static const union AnimCmd sPainSplitAnimCmds[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(4, 9), + ANIMCMD_FRAME(8, 5), + ANIMCMD_END, +}; + +static const union AnimCmd *const sPainSplitAnimCmdTable[] = +{ + sPainSplitAnimCmds, +}; + +const struct SpriteTemplate gPainSplitProjectileSpriteTemplate = +{ + .tileTag = ANIM_TAG_PAIN_SPLIT, + .paletteTag = ANIM_TAG_PAIN_SPLIT, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = sPainSplitAnimCmdTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimPainSplitProjectile, +}; + +const struct SpriteTemplate gFlatterConfettiSpriteTemplate = +{ + .tileTag = ANIM_TAG_CONFETTI, + .paletteTag = ANIM_TAG_CONFETTI, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimFlatterConfetti, +}; + +const struct SpriteTemplate gFlatterSpotlightSpriteTemplate = +{ + .tileTag = ANIM_TAG_SPOTLIGHT, + .paletteTag = ANIM_TAG_SPOTLIGHT, + .oam = &gOamData_AffineDouble_ObjNormal_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sSpotlightAffineAnimTable, + .callback = AnimFlatterSpotlight, +}; + +const struct SpriteTemplate gReversalOrbSpriteTemplate = +{ + .tileTag = ANIM_TAG_BLUE_ORB, + .paletteTag = ANIM_TAG_BLUE_ORB, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimReversalOrb, +}; + +static const union AffineAnimCmd sDeepInhaleAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(16, 0, 0, 4), + AFFINEANIMCMD_FRAME(0, -3, 0, 16), + AFFINEANIMCMD_FRAME(4, 0, 0, 4), + AFFINEANIMCMD_FRAME(0, 0, 0, 24), + AFFINEANIMCMD_FRAME(-5, 3, 0, 16), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sYawnCloudAffineAnimCmds1[] = +{ + AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0), + AFFINEANIMCMD_FRAME(-8, -8, 0, 8), + AFFINEANIMCMD_FRAME(8, 8, 0, 8), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd sYawnCloudAffineAnimCmds2[] = +{ + AFFINEANIMCMD_FRAME(0xC0, 0xC0, 0, 0), + AFFINEANIMCMD_FRAME(8, 8, 0, 8), + AFFINEANIMCMD_FRAME(-8, -8, 0, 8), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd sYawnCloudAffineAnimCmds3[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(8, 8, 0, 8), + AFFINEANIMCMD_FRAME(-8, -8, 0, 8), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd *const sYawnCloudAffineAnimTable[] = +{ + sYawnCloudAffineAnimCmds1, + sYawnCloudAffineAnimCmds2, + sYawnCloudAffineAnimCmds3, +}; + +const struct SpriteTemplate gYawnCloudSpriteTemplate = +{ + .tileTag = ANIM_TAG_PINK_CLOUD, + .paletteTag = ANIM_TAG_PINK_CLOUD, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sYawnCloudAffineAnimTable, + .callback = AnimYawnCloud, +}; + +static const union AffineAnimCmd sSmokeBallEscapeCloudAffineAnimCmds1[] = +{ + AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0), + AFFINEANIMCMD_FRAME(-4, -6, 0, 16), + AFFINEANIMCMD_FRAME(4, 6, 0, 16), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd sSmokeBallEscapeCloudAffineAnimCmds2[] = +{ + AFFINEANIMCMD_FRAME(0xC0, 0xC0, 0, 0), + AFFINEANIMCMD_FRAME(4, 6, 0, 16), + AFFINEANIMCMD_FRAME(-4, -6, 0, 16), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd sSmokeBallEscapeCloudAffineAnimCmds3[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(4, 6, 0, 16), + AFFINEANIMCMD_FRAME(-4, -6, 0, 16), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd sSmokeBallEscapeCloudAffineAnimCmds4[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(8, 10, 0, 30), + AFFINEANIMCMD_FRAME(-8, -10, 0, 16), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd *const sSmokeBallEscapeCloudAffineAnimTable[] = +{ + sSmokeBallEscapeCloudAffineAnimCmds1, + sSmokeBallEscapeCloudAffineAnimCmds2, + sSmokeBallEscapeCloudAffineAnimCmds3, + sSmokeBallEscapeCloudAffineAnimCmds4, +}; + +const struct SpriteTemplate gSmokeBallEscapeCloudSpriteTemplate = +{ + .tileTag = ANIM_TAG_PINK_CLOUD, + .paletteTag = ANIM_TAG_PINK_CLOUD, + .oam = &gOamData_AffineDouble_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sSmokeBallEscapeCloudAffineAnimTable, + .callback = AnimSmokeBallEscapeCloud, +}; + +static const union AffineAnimCmd sFacadeSquishAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(-16, 16, 0, 6), + AFFINEANIMCMD_FRAME(16, -16, 0, 12), + AFFINEANIMCMD_FRAME(-16, 16, 0, 6), + AFFINEANIMCMD_END, +}; + +const struct SpriteTemplate gFacadeSweatDropSpriteTemplate = +{ + .tileTag = ANIM_TAG_SWEAT_DROP, + .paletteTag = ANIM_TAG_SWEAT_DROP, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimFacadeSweatDrop, +}; + +static const u16 sFacadeBlendColors[] = +{ + RGB(28, 25, 1), + RGB(28, 21, 5), + RGB(27, 18, 8), + RGB(27, 14, 11), + RGB(26, 10, 15), + RGB(26, 7, 18), + RGB(25, 3, 21), + RGB(25, 0, 25), + RGB(25, 0, 23), + RGB(25, 0, 20), + RGB(25, 0, 16), + RGB(25, 0, 13), + RGB(26, 0, 10), + RGB(26, 0, 6), + RGB(26, 0, 3), + RGB(27, 0, 0), + RGB(27, 1, 0), + RGB(27, 5, 0), + RGB(27, 9, 0), + RGB(27, 12, 0), + RGB(28, 16, 0), + RGB(28, 19, 0), + RGB(28, 23, 0), + RGB(29, 27, 0), +}; + +static const union AnimCmd sRoarNoiseLineAnimCmds1[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(16, 3), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sRoarNoiseLineAnimCmds2[] = +{ + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(48, 3), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd *const sRoarNoiseLineAnimTable[] = +{ + sRoarNoiseLineAnimCmds1, + sRoarNoiseLineAnimCmds2, +}; + +const struct SpriteTemplate gRoarNoiseLineSpriteTemplate = +{ + .tileTag = ANIM_TAG_NOISE_LINE, + .paletteTag = ANIM_TAG_NOISE_LINE, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sRoarNoiseLineAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimRoarNoiseLine, +}; + +const struct SpriteTemplate gGlareEyeDotSpriteTemplate = +{ + .tileTag = ANIM_TAG_SMALL_RED_EYE, + .paletteTag = ANIM_TAG_SMALL_RED_EYE, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimGlareEyeDot, +}; + +const struct SpriteTemplate gAssistPawprintSpriteTemplate = +{ + .tileTag = ANIM_TAG_PAW_PRINT, + .paletteTag = ANIM_TAG_PAW_PRINT, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimAssistPawprint, +}; + +static const union AffineAnimCmd sBarrageBallAffineAnimCmds1[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -4, 24), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sBarrageBallAffineAnimCmds2[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), + AFFINEANIMCMD_FRAME(0, 0, 4, 24), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const sBarrageBallAffineAnimTable[] = +{ + sBarrageBallAffineAnimCmds1, + sBarrageBallAffineAnimCmds2, +}; + +const struct SpriteTemplate gBarrageBallSpriteTemplate = +{ + .tileTag = ANIM_TAG_RED_BALL, + .paletteTag = ANIM_TAG_RED_BALL, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sBarrageBallAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +const struct SpriteTemplate gSmellingSaltsHandSpriteTemplate = +{ + .tileTag = ANIM_TAG_TAG_HAND, + .paletteTag = ANIM_TAG_TAG_HAND, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSmellingSaltsHand, +}; + +static const union AffineAnimCmd sSmellingSaltsSquishAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(0, -16, 0, 6), + AFFINEANIMCMD_FRAME(0, 16, 0, 6), + AFFINEANIMCMD_END, +}; + +const struct SpriteTemplate gSmellingSaltExclamationSpriteTemplate = +{ + .tileTag = ANIM_TAG_SMELLINGSALT_EFFECT, + .paletteTag = ANIM_TAG_SMELLINGSALT_EFFECT, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSmellingSaltExclamation, +}; + +const struct SpriteTemplate gHelpingHandClapSpriteTemplate = +{ + .tileTag = ANIM_TAG_TAG_HAND, + .paletteTag = ANIM_TAG_TAG_HAND, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimHelpingHandClap, +}; + +const struct SpriteTemplate gForesightMagnifyingGlassSpriteTemplate = +{ + .tileTag = ANIM_TAG_MAGNIFYING_GLASS, + .paletteTag = ANIM_TAG_MAGNIFYING_GLASS, + .oam = &gOamData_AffineOff_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimForesightMagnifyingGlass, +}; + +const struct SpriteTemplate gMeteorMashStarSpriteTemplate = +{ + .tileTag = ANIM_TAG_GOLD_STARS, + .paletteTag = ANIM_TAG_GOLD_STARS, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMeteorMashStar, +}; + +const struct SpriteTemplate gUnknown_83FF6D4 = +{ + .tileTag = ANIM_TAG_GOLD_STARS, + .paletteTag = ANIM_TAG_GOLD_STARS, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimParticuleBurst, +}; + +const struct SpriteTemplate gBlockXSpriteTemplate = +{ + .tileTag = ANIM_TAG_X_SIGN, + .paletteTag = ANIM_TAG_X_SIGN, + .oam = &gOamData_AffineOff_ObjNormal_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimBlockX, +}; + +const struct SpriteTemplate gUnknown_83FF704 = +{ + .tileTag = ANIM_TAG_ITEM_BAG, + .paletteTag = ANIM_TAG_ITEM_BAG, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80E3E84, +}; + +static const union AnimCmd sKnockOffStrikeAnimCmds[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(64, 4), + ANIMCMD_END, +}; + +static const union AnimCmd *const sKnockOffStrikeAnimTable[] = +{ + sKnockOffStrikeAnimCmds, +}; + +static const union AffineAnimCmd sKnockOffStrikeAffineanimCmds1[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0, 0, -4, 8), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sKnockOffStrikeAffineanimCmds2[] = +{ + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0, 0, 4, 8), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const sKnockOffStrikeAffineAnimTable[] = +{ + sKnockOffStrikeAffineanimCmds1, + sKnockOffStrikeAffineanimCmds2, +}; + +const struct SpriteTemplate gKnockOffStrikeSpriteTemplate = +{ + .tileTag = ANIM_TAG_SLAM_HIT_2, + .paletteTag = ANIM_TAG_SLAM_HIT_2, + .oam = &gOamData_AffineNormal_ObjNormal_64x64, + .anims = sKnockOffStrikeAnimTable, + .images = NULL, + .affineAnims = sKnockOffStrikeAffineAnimTable, + .callback = AnimKnockOffStrike, +}; + +static const union AffineAnimCmd sRecycleSpriteAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -4, 64), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd *const sRecycleSpriteAffineAnimTable[] = +{ + sRecycleSpriteAffineAnimCmds, +}; + +const struct SpriteTemplate gRecycleSpriteTemplate = +{ + .tileTag = ANIM_TAG_RECYCLE, + .paletteTag = ANIM_TAG_RECYCLE, + .oam = &gOamData_AffineNormal_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sRecycleSpriteAffineAnimTable, + .callback = AnimRecycle, +}; + +static const union AffineAnimCmd sSlackOffSquishAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(0, 16, 0, 4), + AFFINEANIMCMD_FRAME(-2, 0, 0, 8), + AFFINEANIMCMD_FRAME(0, 4, 0, 4), + AFFINEANIMCMD_FRAME(0, 0, 0, 24), + AFFINEANIMCMD_FRAME(1, -5, 0, 16), + AFFINEANIMCMD_END, +}; + +// Functions +void AnimBlackSmoke(struct Sprite *sprite) +{ + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + if (!gBattleAnimArgs[3]) + sprite->data[0] = gBattleAnimArgs[2]; + else + sprite->data[0] = -gBattleAnimArgs[2]; + + sprite->data[1] = gBattleAnimArgs[4]; + sprite->callback = AnimBlackSmokeStep; +} + +static void AnimBlackSmokeStep(struct Sprite *sprite) +{ + if (sprite->data[1] > 0) + { + sprite->pos2.x = sprite->data[2] >> 8; + sprite->data[2] += sprite->data[0]; + sprite->invisible ^= 1; + sprite->data[1]--; + } + else + { + DestroyAnimSprite(sprite); + } +} + +void AnimTask_SmokescreenImpact(u8 taskId) +{ + SmokescreenImpact(GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + 8, GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + 8, 0); + DestroyAnimVisualTask(taskId); +} + +void AnimWhiteHalo(struct Sprite *sprite) +{ + sprite->data[0] = 90; + sprite->callback = WaitAnimForDuration; + sprite->data[1] = 7; + StoreSpriteCallbackInData6(sprite, AnimWhiteHalo_Step1); + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[1], 16 - sprite->data[1])); +} + +static void AnimWhiteHalo_Step1(struct Sprite *sprite) +{ + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[1], 16 - sprite->data[1])); + if (--sprite->data[1] < 0) + { + sprite->invisible = TRUE; + sprite->callback = AnimWhiteHalo_Step2; + } +} + +static void AnimWhiteHalo_Step2(struct Sprite *sprite) +{ + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + DestroyAnimSprite(sprite); +} + +void AnimTealAlert(struct Sprite *sprite) +{ + u16 rotation; + u8 x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + u8 y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + + InitSpritePosToAnimTarget(sprite, TRUE); + rotation = ArcTan2Neg(sprite->pos1.x - x, sprite->pos1.y - y); + rotation += 0x6000; + if (IsContest()) + rotation += 0x4000; + + TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rotation); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[2] = x; + sprite->data[4] = y; + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +void AnimMeanLookEye(struct Sprite *sprite) +{ + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16)); + sprite->data[0] = 4; + sprite->callback = AnimMeanLookEye_Step1; +} + +static void AnimMeanLookEye_Step1(struct Sprite *sprite) +{ + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[0], 16 - sprite->data[0])); + if (sprite->data[1]) + sprite->data[0]--; + else + sprite->data[0]++; + + if (sprite->data[0] == 15 || sprite->data[0] == 4) + sprite->data[1] ^= 1; + + if (sprite->data[2]++ > 70) + { + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + StartSpriteAffineAnim(sprite, 1); + sprite->data[2] = 0; + sprite->invisible = TRUE; + sprite->affineAnimPaused = TRUE; + sprite->callback = AnimMeanLookEye_Step2; + } +} + +static void AnimMeanLookEye_Step2(struct Sprite *sprite) +{ + if (sprite->data[2]++ > 9) + { + sprite->invisible = FALSE; + sprite->affineAnimPaused = FALSE; + if (sprite->affineAnimEnded) + sprite->callback = AnimMeanLookEye_Step3; + } +} + +static void AnimMeanLookEye_Step3(struct Sprite *sprite) +{ + switch (sprite->data[3]) + { + case 0: + case 1: + sprite->pos2.x = 1; + sprite->pos2.y = 0; + break; + case 2: + case 3: + sprite->pos2.x = -1; + sprite->pos2.y = 0; + break; + case 4: + case 5: + sprite->pos2.x = 0; + sprite->pos2.y = 1; + break; + case 6: + default: + sprite->pos2.x = 0; + sprite->pos2.y = -1; + break; + } + + if (++sprite->data[3] > 7) + sprite->data[3] = 0; + + if (sprite->data[4]++ > 15) + { + sprite->data[0] = 16; + sprite->data[1] = 0; + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[0], 0)); + sprite->callback = AnimMeanLookEye_Step4; + } +} + +static void AnimMeanLookEye_Step4(struct Sprite *sprite) +{ + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[0], 16 - sprite->data[0])); + if (sprite->data[1]++ > 1) + { + sprite->data[0]--; + sprite->data[1] = 0; + } + + if (sprite->data[0] == 0) + sprite->invisible = TRUE; + + if (sprite->data[0] < 0) + { + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + DestroyAnimSprite(sprite); + } +} + +void AnimTask_SetPsychicBackground(u8 taskId) +{ + gTasks[taskId].func = SetPsychicBackground_Step; + gAnimVisualTaskCount--; +} + +static void SetPsychicBackground_Step(u8 taskId) +{ + int i; + u16 lastColor; + u8 paletteIndex = GetBattleBgPaletteNum(); + + if (++gTasks[taskId].data[5] == 4) + { + lastColor = gPlttBufferFaded[paletteIndex * 16 + 11]; + for (i = 10; i > 0; i--) + gPlttBufferFaded[paletteIndex * 16 + i + 1] = gPlttBufferFaded[paletteIndex * 16 + i]; + + gPlttBufferFaded[paletteIndex * 16 + 1] = lastColor; + gTasks[taskId].data[5] = 0; + } + + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + DestroyTask(taskId); +} + +void AnimTask_FadeScreenToWhite(u8 taskId) +{ + gTasks[taskId].func = FadeScreenToWhite_Step; + gAnimVisualTaskCount--; +} + +static void FadeScreenToWhite_Step(u8 taskId) +{ + int i; + u16 lastColor; + u8 paletteIndex = GetBattleBgPaletteNum(); + + if (++gTasks[taskId].data[5] == 4) + { + lastColor = gPlttBufferFaded[paletteIndex * 16 + 11]; + for (i = 10; i > 0; i--) + gPlttBufferFaded[paletteIndex * 16 + i + 1] = gPlttBufferFaded[paletteIndex * 16 + i]; + gPlttBufferFaded[paletteIndex * 16 + 1] = lastColor; + + lastColor = gPlttBufferUnfaded[paletteIndex * 16 + 11]; + for (i = 10; i > 0; i--) + gPlttBufferUnfaded[paletteIndex * 16 + i + 1] = gPlttBufferUnfaded[paletteIndex * 16 + i]; + gPlttBufferUnfaded[paletteIndex * 16 + 1] = lastColor; + + gTasks[taskId].data[5] = 0; + } + + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + DestroyTask(taskId); +} + +void AnimSpikes(struct Sprite *sprite) +{ + u16 x; + u16 y; + + InitSpritePosToAnimAttacker(sprite, TRUE); + SetAverageBattlerPositions(gBattleAnimTarget, FALSE, &x, &y); + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = x + gBattleAnimArgs[2]; + sprite->data[4] = y + gBattleAnimArgs[3]; + sprite->data[5] = -50; + InitAnimArcTranslation(sprite); + sprite->callback = AnimSpikes_Step1; +} + +static void AnimSpikes_Step1(struct Sprite *sprite) +{ + if (TranslateAnimHorizontalArc(sprite)) + { + sprite->data[0] = 30; + sprite->data[1] = 0; + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, AnimSpikes_Step2); + } +} + +static void AnimSpikes_Step2(struct Sprite *sprite) +{ + if (sprite->data[1] & 1) + sprite->invisible ^= 1; + + if (++sprite->data[1] == 16) + DestroyAnimSprite(sprite); +} + +void AnimLeer(struct Sprite *sprite) +{ + SetSpriteCoordsToAnimAttackerCoords(sprite); + SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->callback = RunStoredCallbackWhenAnimEnds; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +void AnimLetterZ(struct Sprite *sprite) +{ + int var0; + + if (sprite->data[0] == 0) + { + SetSpriteCoordsToAnimAttackerCoords(sprite); + SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); + if (!IsContest()) + { + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + { + sprite->data[1] = gBattleAnimArgs[2]; + sprite->data[2] = gBattleAnimArgs[3]; + } + else + { + sprite->data[1] = -1 * gBattleAnimArgs[2]; + sprite->data[2] = -1 * gBattleAnimArgs[3]; + } + } + else + { + sprite->data[1] = -1 * gBattleAnimArgs[2]; + sprite->data[2] = gBattleAnimArgs[3]; + } + } + + sprite->data[0]++; + var0 = (sprite->data[0] * 20) & 0xFF; + sprite->data[3] += sprite->data[1]; + sprite->data[4] += sprite->data[2]; + sprite->pos2.x = sprite->data[3] / 2; + sprite->pos2.y = Sin(var0 & 0xFF, 5) + (sprite->data[4] / 2); + if ((u16)(sprite->pos1.x + sprite->pos2.x) > 240) + DestroyAnimSprite(sprite); +} + +void AnimFang(struct Sprite *sprite) +{ + if (sprite->animEnded) + DestroyAnimSprite(sprite); +} + +void AnimTask_IsTargetPlayerSide(u8 taskId) +{ + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT) + gBattleAnimArgs[7] = 0; + else + gBattleAnimArgs[7] = 1; + + DestroyAnimVisualTask(taskId); +} + +void AnimTask_IsHealingMove(u8 taskId) +{ + if (gAnimMoveDmg > 0) + gBattleAnimArgs[7] = 0; + else + gBattleAnimArgs[7] = 1; + + DestroyAnimVisualTask(taskId); +} + +void AnimSpotlight(struct Sprite *sprite) +{ + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON); + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + SetGpuReg(REG_OFFSET_WIN0H, gBattle_WIN0H); + SetGpuReg(REG_OFFSET_WIN0V, gBattle_WIN0V); + InitSpritePosToAnimTarget(sprite, FALSE); + sprite->oam.objMode = ST_OAM_OBJ_WINDOW; + sprite->invisible = TRUE; + sprite->callback = AnimSpotlight_Step1; +} + +static void AnimSpotlight_Step1(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->invisible = FALSE; + if (sprite->affineAnimEnded) + sprite->data[0]++; + break; + case 1: + case 3: + sprite->data[1] += 117; + sprite->pos2.x = sprite->data[1] >> 8; + if (++sprite->data[2] == 21) + { + sprite->data[2] = 0; + sprite->data[0]++; + } + break; + case 2: + sprite->data[1] -= 117; + sprite->pos2.x = sprite->data[1] >> 8; + if (++sprite->data[2] == 41) + { + sprite->data[2] = 0; + sprite->data[0]++; + } + break; + case 4: + ChangeSpriteAffineAnim(sprite, 1); + sprite->data[0]++; + break; + case 5: + if (sprite->affineAnimEnded) + { + sprite->invisible = TRUE; + sprite->callback = AnimSpotlight_Step2; + } + break; + } +} + +static void AnimSpotlight_Step2(struct Sprite *sprite) +{ + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR); + SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) ^ DISPCNT_OBJWIN_ON); + DestroyAnimSprite(sprite); +} + +void AnimClappingHand(struct Sprite *sprite) +{ + if (gBattleAnimArgs[3] == 0) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y); + } + + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->oam.tileNum += 16; + if (gBattleAnimArgs[2] == 0) + { + sprite->oam.matrixNum = ST_OAM_HFLIP; + sprite->pos2.x = -12; + sprite->data[1] = 2; + } + else + { + sprite->pos2.x = 12; + sprite->data[1] = -2; + } + + sprite->data[0] = gBattleAnimArgs[4]; + if (sprite->data[3] != 255) + sprite->data[3] = gBattleAnimArgs[2]; + + sprite->callback = AnimClappingHand_Step; +} + +static void AnimClappingHand_Step(struct Sprite *sprite) +{ + if (sprite->data[2] == 0) + { + sprite->pos2.x += sprite->data[1]; + if (sprite->pos2.x == 0) + { + sprite->data[2]++; + if (sprite->data[3] == 0) + { + PlaySE1WithPanning(SE_W227, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER)); + } + } + } + else + { + sprite->pos2.x -= sprite->data[1]; + if (abs(sprite->pos2.x) == 12) + { + sprite->data[0]--; + sprite->data[2]--; + } + + } + + if (sprite->data[0] == 0) + DestroyAnimSprite(sprite); +} + +void AnimClappingHand2(struct Sprite *sprite) +{ + sprite->oam.objMode = ST_OAM_OBJ_WINDOW; + sprite->data[3] = 255; + AnimClappingHand(sprite); +} + +void AnimTask_CreateSpotlight(u8 taskId) +{ + if (IsContest()) + { + SetGpuReg(REG_OFFSET_WININ, WININ_WIN1_OBJ | WININ_WIN1_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ | WININ_WIN0_BG_ALL); + gBattle_WIN1H = WININ_WIN1_OBJ | WININ_WIN1_BG3 | WIN_RANGE(0, 0xF0) | WIN_RANGE(0x80, 0x0); + gBattle_WIN1V = WININ_WIN0_CLR | WIN_RANGE(0, 0x80); + SetGpuReg(REG_OFFSET_WIN1H, gBattle_WIN0H); + SetGpuReg(REG_OFFSET_WIN1V, gBattle_WIN0V); + } + else + { + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ); + gBattle_WIN1H = WIN_RANGE(0, 0xF0); + gBattle_WIN1V = WININ_WIN0_CLR | WIN_RANGE(0, 0x80) | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR | WIN_RANGE(0x40, 0); + SetGpuReg(REG_OFFSET_WIN1H, WIN_RANGE(0, 0xF0)); + SetGpuReg(REG_OFFSET_WIN1V, gBattle_WIN1V); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN1_ON); + } + + DestroyAnimVisualTask(taskId); +} + +void AnimTask_RemoveSpotlight(u8 taskId) +{ + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); + gBattle_WIN1H = 0; + gBattle_WIN1V = 0; + if (!IsContest()) + ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN1_ON); + + DestroyAnimVisualTask(taskId); +} + +void AnimRapidSpin(struct Sprite *sprite) +{ + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X) + gBattleAnimArgs[1]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y); + } + else + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + gBattleAnimArgs[1]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y); + } + + sprite->pos2.y = gBattleAnimArgs[2]; + sprite->data[0] = (sprite->pos2.y > gBattleAnimArgs[3]); + sprite->data[1] = 0; + sprite->data[2] = gBattleAnimArgs[4]; + sprite->data[3] = gBattleAnimArgs[5]; + sprite->data[4] = gBattleAnimArgs[3]; + sprite->callback = AnimRapidSpin_Step; +} + +static void AnimRapidSpin_Step(struct Sprite *sprite) +{ + sprite->data[1] = (sprite->data[1] + sprite->data[2]) & 0xFF; + sprite->pos2.x = gSineTable[sprite->data[1]] >> 4; + sprite->pos2.y += sprite->data[3]; + if (sprite->data[0]) + { + if (sprite->pos2.y < sprite->data[4]) + DestroyAnimSprite(sprite); + } + else + { + if (sprite->pos2.y > sprite->data[4]) + DestroyAnimSprite(sprite); + } +} + +void AnimTask_RapinSpinMonElevation(u8 taskId) +{ + s16 var0; + u8 toBG2; + s16 var2; + int var3; + int var4; + s16 i; + struct ScanlineEffectParams scanlineParams; + struct Task *task = &gTasks[taskId]; + + if (!gBattleAnimArgs[0]) + { + var0 = GetBattlerYCoordWithElevation(gBattleAnimAttacker); + toBG2 = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker); + } + else + { + var0 = GetBattlerYCoordWithElevation(gBattleAnimTarget); + toBG2 = GetBattlerSpriteBGPriorityRank(gBattleAnimTarget); + } + + task->data[0] = var0 + 36; + task->data[1] = task->data[0]; + task->data[2] = var0 - 33; + if (task->data[2] < 0) + task->data[2] = 0; + + task->data[3] = task->data[0]; + task->data[4] = 8; + task->data[5] = gBattleAnimArgs[1]; + task->data[6] = 0; + task->data[7] = 0; + if (toBG2 == 1) + { + var3 = gBattle_BG1_X; + task->data[8] = var3; + var4 = var3 + 240; + } + else + { + var3 = gBattle_BG2_X; + task->data[8] = var3; + var4 = var3 + 240; + } + + task->data[9] = var4; + task->data[10] = gBattleAnimArgs[2]; + if (!gBattleAnimArgs[2]) + { + task->data[11] = var4; + var2 = task->data[8]; + } + else + { + task->data[11] = var3; + var2 = task->data[9]; + } + + task->data[15] = 0; + i = task->data[2]; + while (i <= task->data[3]) + { + gScanlineEffectRegBuffers[0][i] = var2; + gScanlineEffectRegBuffers[1][i] = var2; + i++; + } + + if (toBG2 == 1) + scanlineParams.dmaDest = ®_BG1HOFS; + else + scanlineParams.dmaDest = ®_BG2HOFS; + + scanlineParams.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; + scanlineParams.initState = 1; + scanlineParams.unused9 = 0; + ScanlineEffect_SetParams(scanlineParams); + + task->func = RapinSpinMonElevation_Step; +} + +static void RapinSpinMonElevation_Step(u8 taskId) +{ + s16 i; + struct Task *task = &gTasks[taskId]; + + task->data[0] -= task->data[5]; + if (task->data[0] < task->data[2]) + task->data[0] = task->data[2]; + + if (task->data[4] == 0) + { + task->data[1] -= task->data[5]; + if (task->data[1] < task->data[2]) + { + task->data[1] = task->data[2]; + task->data[15] = 1; + } + } + else + { + task->data[4]--; + } + + if (++task->data[6] > 1) + { + task->data[6] = 0; + task->data[7] = task->data[7] == 0 ? 1 : 0; + + if (task->data[7]) + task->data[12] = task->data[8]; + else + task->data[12] = task->data[9]; + } + + i = task->data[0]; + while (i < task->data[1]) + { + gScanlineEffectRegBuffers[0][i] = task->data[12]; + gScanlineEffectRegBuffers[1][i] = task->data[12]; + i++; + } + + i = task->data[1]; + while (i <= task->data[3]) + { + gScanlineEffectRegBuffers[0][i] = task->data[11]; + gScanlineEffectRegBuffers[1][i] = task->data[11]; + i++; + } + + if (task->data[15]) + { + if (task->data[10]) + gScanlineEffect.state = 3; + + DestroyAnimVisualTask(taskId); + } +} + +void AnimTask_TormentAttacker(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + task->data[0] = 0; + task->data[1] = 0; + task->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + task->data[3] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + task->data[4] = 32; + task->data[5] = -20; + task->data[6] = 0; + task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER); + task->func = TormentAttacker_Step; +} + +static void TormentAttacker_Step(u8 taskId) +{ + int var0, var1; + s16 x, y; + u16 i, j; + u8 spriteId; + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + var0 = task->data[2]; + if (task->data[1] & 1) + { + var1 = task->data[4]; + x = var0 - var1; + } + else + { + var1 = task->data[4]; + x = var0 + var1; + } + + y = task->data[3] + task->data[5]; + spriteId = CreateSprite(&gThoughtBubbleSpriteTemplate, x, y, 6 - task->data[1]); + PlaySE12WithPanning(SE_W118, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER)); + + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].hFlip = task->data[1] & 1; + gSprites[spriteId].callback = SpriteCallbackDummy; + } + + if (task->data[1] & 1) + { + task->data[4] -= 6; + task->data[5] -= 6; + } + + PrepareAffineAnimInTaskData(task, task->data[15], sUnknown_83FF080); + task->data[1]++; + task->data[0] = 1; + break; + case 1: + if (!RunAffineAnimFromTaskData(task)) + { + if (task->data[1] == 6) + { + task->data[6] = 8; + task->data[0] = 3; + } + else + { + if (task->data[1] <= 2) + task->data[6] = 10; + else + task->data[6] = 0; + + task->data[0] = 2; + } + } + break; + case 2: + if (task->data[6] != 0) + task->data[6]--; + else + task->data[0] = 0; + break; + case 3: + if (task->data[6] != 0) + task->data[6]--; + else + task->data[0] = 4; + break; + case 4: + for (i = 0, j = 0; i < MAX_SPRITES; i++) + { + if (gSprites[i].template == &gThoughtBubbleSpriteTemplate) + { + gSprites[i].data[0] = taskId; + gSprites[i].data[1] = 6; + StartSpriteAnim(&gSprites[i], 2); + gSprites[i].callback = TormentAttacker_Callback; + if (++j == 6) + break; + } + } + + task->data[6] = j; + task->data[0] = 5; + break; + case 5: + if (task->data[6] == 0) + DestroyAnimVisualTask(taskId); + break; + } +} + +static void TormentAttacker_Callback(struct Sprite *sprite) +{ + if (sprite->animEnded) + { + gTasks[sprite->data[0]].data[sprite->data[1]]--; + DestroySprite(sprite); + } +} + +void AnimTriAttackTriangle(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + InitSpritePosToAnimAttacker(sprite, FALSE); + + if (++sprite->data[0] < 40) + { + u16 var = sprite->data[0]; + if ((var & 1) == 0) + sprite->invisible = TRUE; + else + sprite->invisible = FALSE; + } + + if (sprite->data[0] > 30) + sprite->invisible = FALSE; + + if (sprite->data[0] == 61) + { + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[0] = 20; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + sprite->callback = StartAnimLinearTranslation; + } +} + +void AnimTask_DefenseCurlDeformMon(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), DefenseCurlDeformMonAffineAnimCmds); + gTasks[taskId].data[0]++; + break; + case 1: + if (!RunAffineAnimFromTaskData(&gTasks[taskId])) + DestroyAnimVisualTask(taskId); + break; + } +} + +void AnimBatonPassPokeball(struct Sprite *sprite) +{ + u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + + switch (sprite->data[0]) + { + case 0: + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL); + sprite->data[1] = 256; + sprite->data[2] = 256; + sprite->data[0]++; + break; + case 1: + sprite->data[1] += 96; + sprite->data[2] -= 26; + SetSpriteRotScale(spriteId, sprite->data[1], sprite->data[2], 0); + + if (++sprite->data[3] == 5) + sprite->data[0]++; + // fall through + case 2: + sprite->data[1] += 96; + sprite->data[2] += 48; + SetSpriteRotScale(spriteId, sprite->data[1], sprite->data[2], 0); + + if (++sprite->data[3] == 9) + { + sprite->data[3] = 0; + gSprites[spriteId].invisible = TRUE; + ResetSpriteRotScale(spriteId); + sprite->data[0]++; + } + break; + case 3: + sprite->pos2.y -= 6; + if (sprite->pos1.y + sprite->pos2.y < -32) + DestroyAnimSprite(sprite); + break; + } +} + +void AnimWishStar(struct Sprite *sprite) +{ + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + sprite->pos1.x = -16; + else + sprite->pos1.x = 256; + + sprite->pos1.y = 0; + sprite->callback = AnimWishStar_Step; +} + +static void AnimWishStar_Step(struct Sprite *sprite) +{ + u32 newX; + + sprite->data[0] += 72; + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + sprite->pos2.x = sprite->data[0] >> 4; + else + sprite->pos2.x = -(sprite->data[0] >> 4); + + sprite->data[1] += 16; + sprite->pos2.y += sprite->data[1] >> 8; + + if (++sprite->data[2] % 3 == 0) + { + CreateSpriteAndAnimate( + &gMiniTwinklingStarSpriteTemplate, + sprite->pos1.x + sprite->pos2.x, + sprite->pos1.y + sprite->pos2.y, + sprite->subpriority + 1); + } + + newX = sprite->pos1.x + sprite->pos2.x + 32; + if (newX > 304) + DestroyAnimSprite(sprite); +} + +void AnimMiniTwinklingStar(struct Sprite *sprite) +{ + u8 rand; + s8 y; + + rand = Random() & 3; + if (rand == 0) + sprite->oam.tileNum += 4; + else + sprite->oam.tileNum += 5; + + y = Random() & 7; + if (y > 3) + y = -y; + + sprite->pos2.y = y; + sprite->callback = AnimMiniTwinklingStar_Step; +} + +static void AnimMiniTwinklingStar_Step(struct Sprite *sprite) +{ + if (++sprite->data[0] < 30) + { + if (++sprite->data[1] == 2) + { + sprite->invisible ^= 1; + sprite->data[1] = 0; + } + } + else + { + if (sprite->data[1] == 2) + sprite->invisible = FALSE; + + if (sprite->data[1] == 3) + { + sprite->invisible = TRUE; + sprite->data[1] = -1; + } + + sprite->data[1]++; + } + + if (sprite->data[0] > 60) + DestroySprite(sprite); +} + +void AnimTask_StockpileDeformMon(u8 taskId) +{ + if (!gTasks[taskId].data[0]) + { + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), sStockpileDeformMonAffineAnimCmds); + gTasks[taskId].data[0]++; + } + else + { + if (!RunAffineAnimFromTaskData(&gTasks[taskId])) + DestroyAnimVisualTask(taskId); + } +} + +void AnimTask_SpitUpDeformMon(u8 taskId) +{ + if (!gTasks[taskId].data[0]) + { + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), sSpitUpDeformMonAffineAnimCmds); + gTasks[taskId].data[0]++; + } + else + { + if (!RunAffineAnimFromTaskData(&gTasks[taskId])) + DestroyAnimVisualTask(taskId); + } +} + +void AnimSwallowBlueOrb(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + InitSpritePosToAnimAttacker(sprite, FALSE); + sprite->data[1] = 0x900; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + sprite->data[0]++; + break; + case 1: + sprite->pos2.y -= sprite->data[1] >> 8; + sprite->data[1] -= 96; + if (sprite->pos1.y + sprite->pos2.y > sprite->data[2]) + DestroyAnimSprite(sprite); + break; + } +} + +void AnimTask_SwallowDeformMon(u8 taskId) +{ + if (!gTasks[taskId].data[0]) + { + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), sSwallowDeformMonAffineAnimCmds); + gTasks[taskId].data[0]++; + } + else + { + if (!RunAffineAnimFromTaskData(&gTasks[taskId])) + DestroyAnimVisualTask(taskId); + } +} + +void AnimTask_TransformMon(u8 taskId) +{ + int i, j; + u8 position; + struct BattleAnimBgData animBg; + u8 *dest; + u8 *src; + u16 *bgTilemap; + u16 stretch; + + switch (gTasks[taskId].data[0]) + { + case 0: + SetGpuReg(REG_OFFSET_MOSAIC, 0); + if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1) + SetAnimBgAttribute(1, BG_ANIM_MOSAIC, 1); + else + SetAnimBgAttribute(2, BG_ANIM_MOSAIC, 1); + + gTasks[taskId].data[10] = gBattleAnimArgs[0]; + gTasks[taskId].data[0]++; + break; + case 1: + if (gTasks[taskId].data[2]++ > 1) + { + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[1]++; + stretch = gTasks[taskId].data[1]; + SetGpuReg(REG_OFFSET_MOSAIC, (stretch << 4) | stretch); + if (stretch == 15) + gTasks[taskId].data[0]++; + } + break; + case 2: + HandleSpeciesGfxDataChange(gBattleAnimAttacker, gBattleAnimTarget, gTasks[taskId].data[10]); + sub_8075300(&animBg, gBattleAnimAttacker); + if (IsContest()) + position = 0; + else + position = GetBattlerPosition(gBattleAnimAttacker); + + src = gMonSpritesGfxPtr->sprites[position] + (gBattleMonForms[gBattleAnimAttacker] << 11); + dest = animBg.bgTiles; + CpuCopy32(src, dest, 0x800); + LoadBgTiles(1, animBg.bgTiles, 0x800, animBg.tilesOffset); + gTasks[taskId].data[0]++; + break; + case 3: + if (gTasks[taskId].data[2]++ > 1) + { + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[1]--; + stretch = gTasks[taskId].data[1]; + SetGpuReg(REG_OFFSET_MOSAIC, (stretch << 4) | stretch); + + if (stretch == 0) + gTasks[taskId].data[0]++; + } + break; + case 4: + SetGpuReg(REG_OFFSET_MOSAIC, 0); + if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1) + SetAnimBgAttribute(1, BG_ANIM_MOSAIC, 0); + else + SetAnimBgAttribute(2, BG_ANIM_MOSAIC, 0); + + if (!IsContest()) + { + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + { + if (gTasks[taskId].data[10] == 0) + SetBattlerShadowSpriteCallback(gBattleAnimAttacker, gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies); + } + } + + DestroyAnimVisualTask(taskId); + break; + } +} + +void AnimTask_IsMonInvisible(u8 taskId) +{ + gBattleAnimArgs[7] = gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].invisible; + DestroyAnimVisualTask(taskId); +} + +void AnimTask_CastformGfxChange(u8 taskId) +{ + HandleSpeciesGfxDataChange(gBattleAnimAttacker, gBattleAnimTarget, TRUE); + DestroyAnimVisualTask(taskId); +} + +void AnimTask_MorningSunLightBeam(u8 taskId) +{ + struct BattleAnimBgData animBg; + + switch (gTasks[taskId].data[0]) + { + case 0: + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16)); + SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0); + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); + if (!IsContest()) + SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1); + + sub_80752A0(&animBg); + AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnim_MorningSunTilemap); + AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnim_MorningSunGfx, animBg.tilesOffset); + LoadCompressedPalette(gBattleAnim_MorningSunPal, animBg.paletteId * 16, 32); + if (IsContest()) + { + sub_80730C0(animBg.paletteId, animBg.bgTilemap, 0, 0); + gBattle_BG1_X = -56; + gBattle_BG1_Y = 0; + } + else + { + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + gBattle_BG1_X = -135; + else + gBattle_BG1_X = -10; + + gBattle_BG1_Y = 0; + } + + gTasks[taskId].data[10] = gBattle_BG1_X; + gTasks[taskId].data[11] = gBattle_BG1_Y; + + gTasks[taskId].data[0]++; + PlaySE12WithPanning(SE_W234, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER)); + break; + case 1: + if (gTasks[taskId].data[4]++ > 0) + { + gTasks[taskId].data[4] = 0; + if (++gTasks[taskId].data[1] > 12) + gTasks[taskId].data[1] = 12; + + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[1], 16 - gTasks[taskId].data[1])); + if (gTasks[taskId].data[1] == 12) + gTasks[taskId].data[0]++; + } + break; + case 2: + if (--gTasks[taskId].data[1] < 0) + gTasks[taskId].data[1] = 0; + + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[1], 16 - gTasks[taskId].data[1])); + if (!gTasks[taskId].data[1]) + { + gBattle_BG1_X = sMorningSunLightBeamCoordsTable[gTasks[taskId].data[2]] + gTasks[taskId].data[10]; + if (++gTasks[taskId].data[2] == 4) + gTasks[taskId].data[0] = 4; + else + gTasks[taskId].data[0] = 3; + } + break; + case 3: + if (++gTasks[taskId].data[3] == 4) + { + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[0] = 1; + PlaySE12WithPanning(SE_W234, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER)); + } + break; + case 4: + sub_80752A0(&animBg); + sub_8075358(animBg.bgId); + if (!IsContest()) + SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0); + + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + DestroyAnimVisualTask(taskId); + break; + } +} + +void AnimGreenStar(struct Sprite *sprite) +{ + s16 xOffset; + u8 spriteId1; + u8 spriteId2; + + xOffset = Random(); + xOffset &= 0x3F; + if (xOffset > 31) + xOffset = 32 - xOffset; + + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X) + xOffset; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + 32; + sprite->data[1] = gBattleAnimArgs[0]; + sprite->data[2] = gBattleAnimArgs[1]; + + spriteId1 = CreateSprite(&gGreenStarSpriteTemplate, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1); + spriteId2 = CreateSprite(&gGreenStarSpriteTemplate, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1); + StartSpriteAnim(&gSprites[spriteId1], 1); + StartSpriteAnim(&gSprites[spriteId2], 2); + + gSprites[spriteId1].data[1] = gBattleAnimArgs[0]; + gSprites[spriteId1].data[2] = gBattleAnimArgs[1]; + gSprites[spriteId2].data[1] = gBattleAnimArgs[0]; + gSprites[spriteId2].data[2] = gBattleAnimArgs[1]; + gSprites[spriteId1].data[7] = -1; + gSprites[spriteId2].data[7] = -1; + gSprites[spriteId1].invisible = TRUE; + gSprites[spriteId2].invisible = TRUE; + gSprites[spriteId1].callback = AnimGreenStar_Callback; + gSprites[spriteId2].callback = AnimGreenStar_Callback; + + sprite->data[6] = spriteId1; + sprite->data[7] = spriteId2; + sprite->callback = AnimGreenStar_Step1; +} + +static void AnimGreenStar_Step1(struct Sprite *sprite) +{ + s16 delta = sprite->data[3] + sprite->data[2]; + + sprite->pos2.y -= delta >> 8; + sprite->data[3] += sprite->data[2]; + sprite->data[3] &= 0xFF; + if (sprite->data[4] == 0 && sprite->pos2.y < -8) + { + gSprites[sprite->data[6]].invisible = FALSE; + sprite->data[4]++; + } + + if (sprite->data[4] == 1 && sprite->pos2.y < -16) + { + gSprites[sprite->data[7]].invisible = FALSE; + sprite->data[4]++; + } + + if (--sprite->data[1] == -1) + { + sprite->invisible = TRUE; + sprite->callback = AnimGreenStar_Step2; + } +} + +static void AnimGreenStar_Step2(struct Sprite *sprite) +{ + if (gSprites[sprite->data[6]].callback == SpriteCallbackDummy + && gSprites[sprite->data[7]].callback == SpriteCallbackDummy) + { + DestroySprite(&gSprites[sprite->data[6]]); + DestroySprite(&gSprites[sprite->data[7]]); + DestroyAnimSprite(sprite); + } +} + +static void AnimGreenStar_Callback(struct Sprite *sprite) +{ + if (!sprite->invisible) + { + s16 delta = sprite->data[3] + sprite->data[2]; + sprite->pos2.y -= delta >> 8; + sprite->data[3] += sprite->data[2]; + sprite->data[3] &= 0xFF; + if (--sprite->data[1] == -1) + { + sprite->invisible = TRUE; + sprite->callback = SpriteCallbackDummy; + } + } +} + +void AnimTask_DoomDesireLightBeam(u8 taskId) +{ + struct BattleAnimBgData animBg; + + switch (gTasks[taskId].data[0]) + { + case 0: + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(3, 13)); + SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0); + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); + if (!IsContest()) + SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1); + + sub_80752A0(&animBg); + AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnim_MorningSunTilemap); + AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnim_MorningSunGfx, animBg.tilesOffset); + LoadCompressedPalette(gBattleAnim_MorningSunPal, animBg.paletteId * 16, 32); + + if (IsContest()) + { + sub_80730C0(animBg.paletteId, animBg.bgTilemap, 0, 0); + gBattle_BG1_X = -56; + gBattle_BG1_Y = 0; + } + else + { + u8 position = GetBattlerPosition(gBattleAnimTarget); + if (IsDoubleBattle() == TRUE) + { + if (position == B_POSITION_OPPONENT_LEFT) + gBattle_BG1_X = -155; + if (position == B_POSITION_OPPONENT_RIGHT) + gBattle_BG1_X = -115; + if (position == B_POSITION_PLAYER_LEFT) + gBattle_BG1_X = 14; + if (position == B_POSITION_PLAYER_RIGHT) + gBattle_BG1_X = -20; + } + else + { + if (position == B_POSITION_OPPONENT_LEFT) + gBattle_BG1_X = -135; + if (position == B_POSITION_PLAYER_LEFT) + gBattle_BG1_X = -10; + } + + gBattle_BG1_Y = 0; + } + + gTasks[taskId].data[10] = gBattle_BG1_X; + gTasks[taskId].data[11] = gBattle_BG1_Y; + gTasks[taskId].data[0]++; + break; + case 1: + gTasks[taskId].data[3] = 0; + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT) + gBattle_BG1_X = gTasks[taskId].data[10] + sDoomDesireLightBeamCoordTable[gTasks[taskId].data[2]]; + else + gBattle_BG1_X = gTasks[taskId].data[10] - sDoomDesireLightBeamCoordTable[gTasks[taskId].data[2]]; + + if (++gTasks[taskId].data[2] == 5) + gTasks[taskId].data[0] = 5; + else + gTasks[taskId].data[0]++; + break; + case 2: + if (--gTasks[taskId].data[1] <= 4) + gTasks[taskId].data[1] = 5; + + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(3, gTasks[taskId].data[1])); + if (gTasks[taskId].data[1] == 5) + gTasks[taskId].data[0]++; + break; + case 3: + if (++gTasks[taskId].data[3] > sDoomDesireLightBeamDelayTable[gTasks[taskId].data[2]]) + gTasks[taskId].data[0]++; + break; + case 4: + if (++gTasks[taskId].data[1] > 13) + gTasks[taskId].data[1] = 13; + + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(3, gTasks[taskId].data[1])); + if (gTasks[taskId].data[1] == 13) + gTasks[taskId].data[0] = 1; + break; + case 5: + sub_80752A0(&animBg); + sub_8075358(animBg.bgId); + if (!IsContest()) + SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0); + + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + DestroyAnimVisualTask(taskId); + break; + } +} + +// Briefly vertically grows and shrinks the attacking mon's sprite. +// No args. +void AnimTask_StrongFrustrationGrowAndShrink(u8 taskId) +{ + if (gTasks[taskId].data[0] == 0) + { + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), sStrongFrustrationAffineAnimCmds); + gTasks[taskId].data[0]++; + } + else + { + if (!RunAffineAnimFromTaskData(&gTasks[taskId])) + DestroyAnimVisualTask(taskId); + } +} + +// Animates an anger mark near the mon's head. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +void AnimWeakFrustrationAngerMark(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + { + InitSpritePosToAnimAttacker(sprite, 0); + sprite->data[0]++; + } + else if (sprite->data[0]++ > 20) + { + sprite->data[1] += 160; + sprite->data[2] += 128; + + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + sprite->pos2.x = -(sprite->data[1] >> 8); + else + sprite->pos2.x = sprite->data[1] >> 8; + + sprite->pos2.y += sprite->data[2] >> 8; + if (sprite->pos2.y > 64) + DestroyAnimSprite(sprite); + } +} + +// Rocks the mon back and forth. This is done on a pivot so it is done via rotation. +// arg 0: which battler +// arg 1: number of rocks +// arg 2: rotation speed increase +void AnimTask_RockMonBackAndForth(u8 taskId) +{ + u8 side; + struct Task *task = &gTasks[taskId]; + + if (!gBattleAnimArgs[1]) + { + DestroyAnimVisualTask(taskId); + return; + } + + if (gBattleAnimArgs[2] < 0) + gBattleAnimArgs[2] = 0; + if (gBattleAnimArgs[2] > 2) + gBattleAnimArgs[2] = 2; + + task->data[0] = 0; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 8 - (2 * gBattleAnimArgs[2]); + task->data[4] = 0x100 + (gBattleAnimArgs[2] * 128); + task->data[5] = gBattleAnimArgs[2] + 2; + task->data[6] = gBattleAnimArgs[1] - 1; + task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + + if (gBattleAnimArgs[0] == ANIM_ATTACKER) + side = GetBattlerSide(gBattleAnimAttacker); + else + side = GetBattlerSide(gBattleAnimTarget); + + if (side == B_SIDE_OPPONENT) + { + task->data[4] *= -1; + task->data[5] *= -1; + } + + PrepareBattlerSpriteForRotScale(task->data[15], ST_OAM_OBJ_NORMAL); + task->func = AnimTask_RockMonBackAndForthStep; +} + +static void AnimTask_RockMonBackAndForthStep(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + gSprites[task->data[15]].pos2.x += task->data[5]; + task->data[2] -= task->data[4]; + SetSpriteRotScale(task->data[15], 0x100, 0x100, task->data[2]); + SetBattlerSpriteYOffsetFromRotation(task->data[15]); + if (++task->data[1] >= task->data[3]) + { + task->data[1] = 0; + task->data[0]++; + } + break; + case 1: + gSprites[task->data[15]].pos2.x -= task->data[5]; + task->data[2] += task->data[4]; + SetSpriteRotScale(task->data[15], 0x100, 0x100, task->data[2]); + SetBattlerSpriteYOffsetFromRotation(task->data[15]); + if (++task->data[1] >= task->data[3] * 2) + { + task->data[1] = 0; + task->data[0]++; + } + break; + case 2: + gSprites[task->data[15]].pos2.x += task->data[5]; + task->data[2] -= task->data[4]; + SetSpriteRotScale(task->data[15], 0x100, 0x100, task->data[2]); + SetBattlerSpriteYOffsetFromRotation(task->data[15]); + if (++task->data[1] >= task->data[3]) + { + if (task->data[6]) + { + task->data[6]--; + task->data[1] = 0; + task->data[0] = 0; + } + else + { + task->data[0]++; + } + } + break; + case 3: + ResetSpriteRotScale(task->data[15]); + DestroyAnimVisualTask(taskId); + break; + } +} + +// Floats a petal across the screen towards the target mon's side. +// arg 0: initial y pixel offset +// arg 1: sprite anim num +// arg 2: unused +void AnimSweetScentPetal(struct Sprite *sprite) +{ + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + { + sprite->pos1.x = 0; + sprite->pos1.y = gBattleAnimArgs[0]; + } + else + { + sprite->pos1.x = 240; + sprite->pos1.y = gBattleAnimArgs[0] - 30; + } + + sprite->data[2] = gBattleAnimArgs[2]; + StartSpriteAnim(sprite, gBattleAnimArgs[1]); + sprite->callback = AnimSweetScentPetalStep; +} + +static void AnimSweetScentPetalStep(struct Sprite *sprite) +{ + sprite->data[0] += 3; + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + { + sprite->pos1.x += 5; + sprite->pos1.y -= 1; + + if (sprite->pos1.x > 240) + DestroyAnimSprite(sprite); + + sprite->pos2.y = Sin(sprite->data[0] & 0xFF, 16); + } + else + { + sprite->pos1.x -= 5; + sprite->pos1.y += 1; + + if (sprite->pos1.x < 0) + DestroyAnimSprite(sprite); + + sprite->pos2.y = Cos(sprite->data[0] & 0xFF, 16); + } +} + +// Moves the mon sprite in a flailing back-and-forth motion. +// arg 0: which battler +void AnimTask_FlailMovement(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + task->data[0] = 0; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[12] = 0x20; + task->data[13] = 0x40; + task->data[14] = 0x800; + task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + + PrepareBattlerSpriteForRotScale(task->data[15], ST_OAM_OBJ_NORMAL); + task->func = AnimTask_FlailMovementStep; +} + +static void AnimTask_FlailMovementStep(u8 taskId) +{ + int temp; + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + task->data[2] += 0x200; + if (task->data[2] >= task->data[14]) + { + s16 diff = task->data[14] - task->data[2]; + s16 div = diff / (task->data[14] * 2); + s16 mod = diff % (task->data[14] * 2); + + if ((div & 1) == 0) + { + task->data[2] = task->data[14] - mod; + task->data[0] = 1; + } + else + { + task->data[2] = mod - task->data[14]; + } + } + break; + case 1: + task->data[2] -= 0x200; + if (task->data[2] <= -task->data[14]) + { + s16 diff = task->data[14] - task->data[2]; + s16 div = diff / (task->data[14] * 2); + s16 mod = diff % (task->data[14] * 2); + + if ((1 & div) == 0) + { + task->data[2] = mod - task->data[14]; + task->data[0] = 0; + } + else + { + task->data[2] = task->data[14] - mod; + } + } + break; + case 2: + ResetSpriteRotScale(task->data[15]); + DestroyAnimVisualTask(taskId); + return; + } + + SetSpriteRotScale(task->data[15], 0x100, 0x100, task->data[2]); + SetBattlerSpriteYOffsetFromRotation(task->data[15]); + gSprites[task->data[15]].pos2.x = -(((temp = task->data[2]) >= 0 ? task->data[2] : temp + 63) >> 6); + if (++task->data[1] > 8) + { + if (task->data[12]) + { + task->data[12]--; + task->data[14] -= task->data[13]; + if (task->data[14] < 16) + task->data[14] = 16; + } + else + { + task->data[0] = 2; + } + } +} + +// Makes a spark-like projectile fall on top of the mon. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: which battler +void AnimPainSplitProjectile(struct Sprite *sprite) +{ + if (!sprite->data[0]) + { + if (gBattleAnimArgs[2] == ANIM_ATTACKER) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + } + + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[1] = 0x80; + sprite->data[2] = 0x300; + sprite->data[3] = gBattleAnimArgs[1]; + sprite->data[0]++; + } + else + { + sprite->pos2.x = sprite->data[1] >> 8; + sprite->pos2.y += sprite->data[2] >> 8; + if (sprite->data[4] == 0 && sprite->pos2.y > -sprite->data[3]) + { + sprite->data[4] = 1; + sprite->data[2] = (-sprite->data[2] / 3) * 2; + } + + sprite->data[1] += 192; + sprite->data[2] += 128; + if (sprite->animEnded) + DestroyAnimSprite(sprite); + } +} + +// Performs one of several affine transformations on the mon sprite. +// arg 0: which battler +// arg 1: which transformation +void AnimTask_PainSplitMovement(u8 taskId) +{ + u8 spriteId; + + if (gTasks[taskId].data[0] == 0) + { + if (gBattleAnimArgs[0] == ANIM_ATTACKER) + gTasks[taskId].data[11] = gBattleAnimAttacker; + else + gTasks[taskId].data[11] = gBattleAnimTarget; + + spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + gTasks[taskId].data[10] = spriteId; + PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL); + + switch (gBattleAnimArgs[1]) + { + case 0: + SetSpriteRotScale(spriteId, 0xE0, 0x140, 0); + SetBattlerSpriteYOffsetFromYScale(spriteId); + break; + case 1: + SetSpriteRotScale(spriteId, 0xD0, 0x130, 0xF00); + SetBattlerSpriteYOffsetFromYScale(spriteId); + if (IsContest() || GetBattlerSide(gTasks[taskId].data[11]) == B_SIDE_PLAYER) + gSprites[spriteId].pos2.y += 16; + break; + case 2: + SetSpriteRotScale(spriteId, 0xD0, 0x130, 0xF100); + SetBattlerSpriteYOffsetFromYScale(spriteId); + if (IsContest() || GetBattlerSide(gTasks[taskId].data[11]) == B_SIDE_PLAYER) + gSprites[spriteId].pos2.y += 16; + break; + } + + gSprites[spriteId].pos2.x = 2; + gTasks[taskId].data[0]++; + } + else + { + spriteId = gTasks[taskId].data[10]; + if (++gTasks[taskId].data[2] == 3) + { + gTasks[taskId].data[2] = 0; + gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x; + } + + if (++gTasks[taskId].data[1] == 13) + { + ResetSpriteRotScale(spriteId); + gSprites[spriteId].pos2.x = 0; + gSprites[spriteId].pos2.y = 0; + DestroyAnimVisualTask(taskId); + } + } +} + +// Move a piece of confetti in a slightly-random speed across the screen. +// arg 0: which battler the confetti starts from +void AnimFlatterConfetti(struct Sprite *sprite) +{ + u8 tileOffset; + int rand1; + int rand2; + + tileOffset = Random() % 12; + sprite->oam.tileNum += tileOffset; + rand1 = Random() & 0x1FF; + rand2 = Random() & 0xFF; + + if (rand1 & 1) + sprite->data[0] = 0x5E0 + rand1; + else + sprite->data[0] = 0x5E0 - rand1; + + if (rand2 & 1) + sprite->data[1] = 0x480 + rand2; + else + sprite->data[1] = 0x480 - rand2; + + sprite->data[2] = gBattleAnimArgs[0]; + if (sprite->data[2] == ANIM_ATTACKER) + sprite->pos1.x = -8; + else + sprite->pos1.x = 248; + + sprite->pos1.y = 104; + sprite->callback = AnimFlatterConfettiStep; +} + +static void AnimFlatterConfettiStep(struct Sprite *sprite) +{ + if (sprite->data[2] == 0) + { + sprite->pos2.x += sprite->data[0] >> 8; + sprite->pos2.y -= sprite->data[1] >> 8; + } + else + { + sprite->pos2.x -= sprite->data[0] >> 8; + sprite->pos2.y -= sprite->data[1] >> 8; + } + + sprite->data[0] -= 22; + sprite->data[1] -= 48; + if (sprite->data[0] < 0) + sprite->data[0] = 0; + + if (++sprite->data[3] == 31) + DestroyAnimSprite(sprite); +} + +// Uses a spotlight sprite as a light mask to illuminate the target mon. The spotlight grows and shrinks. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: duration of fully-opened spotlight +void AnimFlatterSpotlight(struct Sprite *sprite) +{ + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON); + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + SetGpuReg(REG_OFFSET_WIN0H, gBattle_WIN0H); + SetGpuReg(REG_OFFSET_WIN0V, gBattle_WIN0V); + sprite->data[0] = gBattleAnimArgs[2]; + InitSpritePosToAnimTarget(sprite, FALSE); + sprite->oam.objMode = ST_OAM_OBJ_WINDOW; + sprite->invisible = TRUE; + sprite->callback = AnimFlatterSpotlightStep; +} + +static void AnimFlatterSpotlightStep(struct Sprite *sprite) +{ + switch (sprite->data[1]) + { + case 0: + sprite->invisible = FALSE; + if (sprite->affineAnimEnded) + sprite->data[1]++; + break; + case 1: + if (--sprite->data[0] == 0) + { + ChangeSpriteAffineAnim(sprite, 1); + sprite->data[1]++; + } + break; + case 2: + if (sprite->affineAnimEnded) + { + sprite->invisible = TRUE; + sprite->data[1]++; + } + break; + case 3: + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR); + SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) ^ DISPCNT_OBJWIN_ON); + DestroyAnimSprite(sprite); + break; + } +} + +// Spins an orb around the attacking mon, while its path radius grows and shrinks. +// arg 0: duration +// arg 1: initial wave offset +void AnimReversalOrb(struct Sprite *sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + sprite->data[0] = gBattleAnimArgs[0]; + sprite->data[1] = gBattleAnimArgs[1]; + sprite->callback = AnimReversalOrbStep; + sprite->callback(sprite); +} + +static void AnimReversalOrbStep(struct Sprite *sprite) +{ + sprite->pos2.x = Sin(sprite->data[1], sprite->data[2] >> 8); + sprite->pos2.y = Cos(sprite->data[1], sprite->data[3] >> 8); + sprite->data[1] = (sprite->data[1] + 9) & 0xFF; + + if ((u16)sprite->data[1] < 64 || sprite->data[1] > 195) + sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 1; + else + sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) + 1; + + if (!sprite->data[5]) + { + sprite->data[2] += 0x400; + sprite->data[3] += 0x100; + sprite->data[4]++; + if (sprite->data[4] == sprite->data[0]) + { + sprite->data[4] = 0; + sprite->data[5] = 1; + } + } + else if (sprite->data[5] == 1) + { + sprite->data[2] -= 0x400; + sprite->data[3] -= 0x100; + sprite->data[4]++; + if (sprite->data[4] == sprite->data[0]) + DestroyAnimSprite(sprite); + } +} + +// Copies the target mon's sprite, and makes a white silhouette that shrinks away. +void AnimTask_RolePlaySilhouette(u8 taskId) +{ + bool8 isBackPic; + u32 personality; + u32 otId; + u16 species; + s16 xOffset; + u32 priority; + u8 spriteId; + s16 coord1, coord2; + + GetAnimBattlerSpriteId(ANIM_ATTACKER); + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + { + isBackPic = FALSE; + personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY); + otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_OT_ID); + if (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies == SPECIES_NONE) + { + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES); + else + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES); + } + else + { + species = gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies; + } + + xOffset = 20; + priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker); + } + else + { + isBackPic = TRUE; + personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY); + otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_OT_ID); + if (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies == SPECIES_NONE) + { + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES); + else + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES); + } + else + { + species = gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies; + } + + xOffset = -20; + priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker); + } + + coord1 = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + coord2 = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y); + spriteId = sub_80768D0(species, isBackPic, 0, coord1 + xOffset, coord2, 5, personality, otId, gBattleAnimTarget, 1); + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND; + FillPalette(RGB_WHITE, (gSprites[spriteId].oam.paletteNum << 4) + 0x100, 32); + gSprites[spriteId].oam.priority = priority; + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[1], 16 - gTasks[taskId].data[1])); + gTasks[taskId].data[0] = spriteId; + gTasks[taskId].func = AnimTask_RolePlaySilhouetteStep1; +} + +static void AnimTask_RolePlaySilhouetteStep1(u8 taskId) +{ + if (gTasks[taskId].data[10]++ > 1) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[1]++; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[1], 16 - gTasks[taskId].data[1])); + if (gTasks[taskId].data[1] == 10) + { + gTasks[taskId].data[10] = 256; + gTasks[taskId].data[11] = 256; + gTasks[taskId].func = AnimTask_RolePlaySilhouetteStep2; + } + } +} + +static void AnimTask_RolePlaySilhouetteStep2(u8 taskId) +{ + u8 spriteId = gTasks[taskId].data[0]; + + gTasks[taskId].data[10] -= 16; + gTasks[taskId].data[11] += 128; + gSprites[spriteId].oam.affineMode |= ST_OAM_AFFINE_DOUBLE_MASK; + TrySetSpriteRotScale(&gSprites[spriteId], TRUE, gTasks[taskId].data[10], gTasks[taskId].data[11], 0); + if (++gTasks[taskId].data[12] == 9) + { + sub_8075AD8(&gSprites[spriteId]); + DestroySpriteAndFreeResources_(&gSprites[spriteId]); + gTasks[taskId].func = DestroyAnimVisualTaskAndDisableBlend; + } +} + +// Performs a wavy transformation on the mon's sprite, and fades out. +// arg 0: which battler +void AnimTask_AcidArmor(u8 taskId) +{ + u8 battler; + u16 bgX, bgY; + s16 y, i; + struct ScanlineEffectParams scanlineParams; + struct Task *task = &gTasks[taskId]; + + if (gBattleAnimArgs[0] == ANIM_ATTACKER) + battler = gBattleAnimAttacker; + else + battler = gBattleAnimTarget; + + task->data[0] = 0; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 16; + task->data[4] = 0; + task->data[5] = battler; + task->data[6] = 32; + task->data[7] = 0; + task->data[8] = 24; + + if (GetBattlerSide(battler) == B_SIDE_OPPONENT) + task->data[8] *= -1; + + task->data[13] = GetBattlerYCoordWithElevation(battler) - 34; + if (task->data[13] < 0) + task->data[13] = 0; + + task->data[14] = task->data[13] + 66; + task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + if (GetBattlerSpriteBGPriorityRank(battler) == 1) + { + scanlineParams.dmaDest = ®_BG1HOFS; + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1); + bgX = gBattle_BG1_X; + bgY = gBattle_BG1_Y; + } + else + { + scanlineParams.dmaDest = ®_BG2HOFS; + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG2); + bgX = gBattle_BG2_X; + bgY = gBattle_BG2_Y; + } + + for (y = 0, i = 0; y < 160; y++, i += 2) + { + gScanlineEffectRegBuffers[0][i] = bgX; + gScanlineEffectRegBuffers[1][i] = bgX; + gScanlineEffectRegBuffers[0][i + 1] = bgY; + gScanlineEffectRegBuffers[1][i + 1] = bgY; + } + + scanlineParams.dmaControl = SCANLINE_EFFECT_DMACNT_32BIT; + scanlineParams.initState = 1; + scanlineParams.unused9 = 0; + ScanlineEffect_SetParams(scanlineParams); + task->func = AnimTask_AcidArmorStep; +} + +static void AnimTask_AcidArmorStep(u8 taskId) +{ + struct Task *task; + s16 var1; + s16 var2; + s16 bgX, bgY; + s16 offset; + s16 var0; + s16 i; + s16 sineIndex; + s16 var3; + + task = &gTasks[taskId]; + if (GetBattlerSpriteBGPriorityRank(task->data[5]) == 1) + { + bgX = gBattle_BG1_X; + bgY = gBattle_BG1_Y; + } + else + { + bgX = gBattle_BG2_X; + bgY = gBattle_BG2_Y; + } + + switch (task->data[0]) + { + case 0: + offset = task->data[14] * 2; + var1 = 0; + var2 = 0; + i = 0; + task->data[1] = (task->data[1] + 2) & 0xFF; + sineIndex = task->data[1]; + task->data[9] = 0x7E0 / task->data[6]; + task->data[10] = -((task->data[7] * 2) / task->data[9]); + task->data[11] = task->data[7]; + var3 = task->data[11] >> 5; + task->data[12] = var3; + var0 = task->data[14]; + while (var0 > task->data[13]) + { + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][offset + 1] = (i - var2) + bgY; + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][offset] = bgX + var3 + (gSineTable[sineIndex] >> 5); + sineIndex = (sineIndex + 10) & 0xFF; + task->data[11] += task->data[10]; + var3 = task->data[11] >> 5; + task->data[12] = var3; + + i++; + offset -= 2; + var1 += task->data[6]; + var2 = var1 >> 5; + var0--; + } + + var0 *= 2; + while (var0 >= 0) + { + gScanlineEffectRegBuffers[0][var0] = bgX + 240; + gScanlineEffectRegBuffers[1][var0] = bgX + 240; + var0 -= 2; + } + + if (++task->data[6] > 63) + { + task->data[6] = 64; + task->data[2]++; + if (task->data[2] & 1) + task->data[3]--; + else + task->data[4]++; + + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[3], task->data[4])); + if (task->data[3] == 0 && task->data[4] == 16) + { + task->data[2] = 0; + task->data[3] = 0; + task->data[0]++; + } + } + else + { + task->data[7] += task->data[8]; + } + break; + case 1: + if (++task->data[2] > 12) + { + gScanlineEffect.state = 3; + task->data[2] = 0; + task->data[0]++; + } + break; + case 2: + task->data[2]++; + if (task->data[2] & 1) + task->data[3]++; + else + task->data[4]--; + + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[3], task->data[4])); + if (task->data[3] == 16 && task->data[4] == 0) + { + task->data[2] = 0; + task->data[3] = 0; + task->data[0]++; + } + break; + case 3: + DestroyAnimVisualTask(taskId); + break; + } +} + +// Runs an affine animation that makes it look like the mon is inhaling deeply. +// arg 0: which battler +void AnimTask_DeepInhale(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + task->data[0] = 0; + task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + PrepareAffineAnimInTaskData(&gTasks[taskId], task->data[15], sDeepInhaleAffineAnimCmds); + task->func = AnimTask_DeepInhaleStep; +} + +static void AnimTask_DeepInhaleStep(u8 taskId) +{ + u16 var0; + struct Task *task = &gTasks[taskId]; + + var0 = task->data[0]; + task->data[0]++; + var0 -= 20; + if (var0 < 23) + { + if (++task->data[1] > 1) + { + task->data[1] = 0; + task->data[2]++; + if (task->data[2] & 1) + gSprites[task->data[15]].pos2.x = 1; + else + gSprites[task->data[15]].pos2.x = -1; + } + } + else + { + gSprites[task->data[15]].pos2.x = 0; + } + + if (!RunAffineAnimFromTaskData(&gTasks[taskId])) + DestroyAnimVisualTask(taskId); +} + +static void InitYawnCloudPosition(struct Sprite *sprite, s16 startX, s16 startY, s16 destX, s16 destY, u16 duration) +{ + sprite->pos1.x = startX; + sprite->pos1.y = startY; + sprite->data[4] = startX << 4; + sprite->data[5] = startY << 4; + sprite->data[6] = ((destX - startX) << 4) / duration; + sprite->data[7] = ((destY - startY) << 4) / duration; +} + +static void UpdateYawnCloudPosition(struct Sprite *sprite) +{ + sprite->data[4] += sprite->data[6]; + sprite->data[5] += sprite->data[7]; + sprite->pos1.x = sprite->data[4] >> 4; + sprite->pos1.y = sprite->data[5] >> 4; +} + +// Drifts a cloud in a wavy path towards the target mon. +// arg 0: which affine anim +void AnimYawnCloud(struct Sprite *sprite) +{ + s16 destX = sprite->pos1.x; + s16 destY = sprite->pos1.y; + + SetSpriteCoordsToAnimAttackerCoords(sprite); + StartSpriteAffineAnim(sprite, gBattleAnimArgs[0]); + InitYawnCloudPosition(sprite, sprite->pos1.x, sprite->pos1.y, destX, destY, 64); + sprite->data[0] = 0; + sprite->callback = AnimYawnCloudStep; +} + +static void AnimYawnCloudStep(struct Sprite *sprite) +{ + int index; + + sprite->data[0]++; + index = (sprite->data[0] * 8) & 0xFF; + UpdateYawnCloudPosition(sprite); + sprite->pos2.y = Sin(index, 8); + if (sprite->data[0] > 58) + { + if (++sprite->data[1] > 1) + { + sprite->data[1] = 0; + sprite->data[2]++; + sprite->invisible = sprite->data[2] & 1; + if (sprite->data[2] > 3) + DestroySpriteAndMatrix(sprite); + } + } +} + +// Animates a cloud coming from the smoke ball. +// arg 0: ? +// arg 1: initial x pixel offset +// arg 2: initial y pixel offset +// arg 3: ? +void AnimSmokeBallEscapeCloud(struct Sprite *sprite) +{ + sprite->data[0] = gBattleAnimArgs[3]; + StartSpriteAffineAnim(sprite, gBattleAnimArgs[0]); + if (GetBattlerSide(gBattleAnimTarget) != B_SIDE_PLAYER) + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[1]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2]; + sprite->callback = sub_80B1D3C; +} + +static void sub_80E1990(u8 taskId) +{ + u16 var0 = 0; + u16 var1 = 0; + + gTasks[taskId].data[0]--; + if ((gTasks[taskId].data[6] & 0x8000) && (--gTasks[taskId].data[1] == -1)) + { + if (gTasks[taskId].data[9] == 0) + { + gTasks[taskId].data[9] = gTasks[taskId].data[4]; + gTasks[taskId].data[4] = -gTasks[taskId].data[4]; + } + else + { + gTasks[taskId].data[9] = 0; + } + + if (gTasks[taskId].data[10] == 0) + { + gTasks[taskId].data[10] = gTasks[taskId].data[5]; + gTasks[taskId].data[5] = -gTasks[taskId].data[5]; + } + else + { + gTasks[taskId].data[10] = 0; + } + + gTasks[taskId].data[1] = gTasks[taskId].data[13]; + } + + var0 = gTasks[taskId].data[7]; + var1 = gTasks[taskId].data[8]; + if (gTasks[taskId].data[2] & 0x8000) + gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] - (var0 >> 8); + else + gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] + (var0 >> 8); + + if (gTasks[taskId].data[3] & 0x8000) + gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] - (var1 >> 8); + else + gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] + (var1 >> 8); + + if (gTasks[taskId].data[0] < 1) + { + DestroyTask(taskId); + gAnimVisualTaskCount--; + } +} + +static void sub_80E1AD8(u8 taskId) +{ + u16 var0 = 0; + u16 var1 = 0; + + gTasks[taskId].data[0]--; + if ((gTasks[taskId].data[6] & 0x8000) && (--gTasks[taskId].data[1] == -1)) + { + if (gTasks[taskId].data[9] == 0) + { + gTasks[taskId].data[9] = gTasks[taskId].data[4]; + gTasks[taskId].data[4] = -gTasks[taskId].data[4]; + } + else + { + gTasks[taskId].data[9] = var0; + } + + if (gTasks[taskId].data[10] == 0) + { + gTasks[taskId].data[10] = gTasks[taskId].data[5]; + gTasks[taskId].data[5] = -gTasks[taskId].data[5]; + } + else + { + gTasks[taskId].data[10] = 0; + } + + gTasks[taskId].data[1] = gTasks[taskId].data[13]; + } + + var0 = (gTasks[taskId].data[2] & 0x7FFF) + gTasks[taskId].data[7]; + var1 = (gTasks[taskId].data[3] & 0x7FFF) + gTasks[taskId].data[8]; + if (gTasks[taskId].data[2] & 0x8000) + gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] - (var0 >> 8); + else + gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] + (var0 >> 8); + + if (gTasks[taskId].data[3] & 0x8000) + gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] - (var1 >> 8); + else + gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] + (var1 >> 8); + + gTasks[taskId].data[7] = var0; + gTasks[taskId].data[8] = var1; + if (gTasks[taskId].data[0] < 1) + { + gTasks[taskId].data[0] = 30; + gTasks[taskId].data[13] = 0; + gTasks[taskId].func = sub_80E1990; + } +} + +void sub_80E1C48(u8 taskId) +{ + gTasks[taskId].data[15] = gBattlerSpriteIds[gBattleAnimAttacker]; + gTasks[taskId].data[14] = gBattleAnimArgs[0]; + gTasks[taskId].data[0] = gBattleAnimArgs[0]; + gTasks[taskId].data[13] = gBattleAnimArgs[6]; + if (gBattleAnimArgs[3]) + gTasks[taskId].data[6] = gTasks[taskId].data[6] | -0x8000; + + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + { + gTasks[taskId].data[2] = gBattleAnimArgs[1]; + gTasks[taskId].data[3] = gBattleAnimArgs[2]; + } + else + { + if (gBattleAnimArgs[1] & 0x8000) + gTasks[taskId].data[2] = gBattleAnimArgs[1] & 0x7FFF; + else + gTasks[taskId].data[2] = gBattleAnimArgs[1] | -0x8000; + + if (gBattleAnimArgs[2] & 0x8000) + gTasks[taskId].data[3] = gBattleAnimArgs[2] & 0x7FFF; + else + gTasks[taskId].data[3] = gBattleAnimArgs[2] | -0x8000; + } + + gTasks[taskId].data[8] = 0; + gTasks[taskId].data[7] = 0; + gTasks[taskId].data[4] = gBattleAnimArgs[4]; + gTasks[taskId].data[5] = gBattleAnimArgs[5]; + gTasks[taskId].func = sub_80E1AD8; +} + +// Squishes the mon vertically and emits sweat droplets a few times. +// arg 0: battler +// arg 1: num squishes +void AnimTask_SquishAndSweatDroplets(u8 taskId) +{ + u8 battler; + struct Task *task = &gTasks[taskId]; + + if (!gBattleAnimArgs[1]) + DestroyAnimVisualTask(taskId); + + task->data[0] = 0; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = gBattleAnimArgs[1]; + if (gBattleAnimArgs[0] == ANIM_ATTACKER) + battler = gBattleAnimAttacker; + else + battler = gBattleAnimTarget; + + task->data[4] = GetBattlerSpriteCoord(battler, BATTLER_COORD_X); + task->data[5] = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y); + task->data[6] = GetBattlerSpriteSubpriority(battler); + task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + PrepareAffineAnimInTaskData(task, task->data[15], sFacadeSquishAffineAnimCmds); + task->func = AnimTask_SquishAndSweatDropletsStep; +} + +static void AnimTask_SquishAndSweatDropletsStep(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + task->data[1]++; + if (task->data[1] == 6) + CreateSweatDroplets(taskId, TRUE); + + if (task->data[1] == 18) + CreateSweatDroplets(taskId, FALSE); + + if (!RunAffineAnimFromTaskData(task)) + { + if (--task->data[3] == 0) + { + task->data[0]++; + } + else + { + task->data[1] = 0; + PrepareAffineAnimInTaskData(task, task->data[15], sFacadeSquishAffineAnimCmds); + } + } + break; + case 1: + if (task->data[2] == 0) + DestroyAnimVisualTask(taskId); + break; + } +} + +static void CreateSweatDroplets(u8 taskId, bool8 arg1) +{ + u8 i; + s8 xOffset, yOffset; + struct Task *task; + s16 xCoords[4]; + s16 yCoords[2]; + + task = &gTasks[taskId]; + if (!arg1) + { + xOffset = 18; + yOffset = -20; + } + else + { + xOffset = 30; + yOffset = 20; + } + + xCoords[0] = task->data[4] - xOffset; + xCoords[1] = task->data[4] - xOffset - 4; + xCoords[2] = task->data[4] + xOffset; + xCoords[3] = task->data[4] + xOffset + 4; + yCoords[0] = task->data[5] + yOffset; + yCoords[1] = task->data[5] + yOffset + 6; + + for (i = 0; i < 4; i++) + { + u8 spriteId = CreateSprite(&gFacadeSweatDropSpriteTemplate, xCoords[i], yCoords[i & 1], task->data[6] - 5); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[1] = i < 2 ? -2 : 2; + gSprites[spriteId].data[2] = -1; + gSprites[spriteId].data[3] = taskId; + gSprites[spriteId].data[4] = 2; + task->data[2]++; + } + } +} + +void AnimFacadeSweatDrop(struct Sprite *sprite) +{ + sprite->pos1.x += sprite->data[1]; + sprite->pos1.y += sprite->data[2]; + if (++sprite->data[0] > 6) + { + gTasks[sprite->data[3]].data[sprite->data[4]]--; + DestroySprite(sprite); + } +} + +// Blends the mon sprite's color with a rotating set of colors. +// arg 0: battler +// arg 1: duration +void AnimTask_FacadeColorBlend(u8 taskId) +{ + u8 spriteId; + + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = gBattleAnimArgs[1]; + spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + gTasks[taskId].data[2] = 0x100 + gSprites[spriteId].oam.paletteNum * 16; + gTasks[taskId].func = AnimTask_FacadeColorBlendStep; +} + +static void AnimTask_FacadeColorBlendStep(u8 taskId) +{ + if (gTasks[taskId].data[1]) + { + BlendPalette(gTasks[taskId].data[2], 16, 8, sFacadeBlendColors[gTasks[taskId].data[0]]); + if (++gTasks[taskId].data[0] > 23) + gTasks[taskId].data[0] = 0; + + gTasks[taskId].data[1]--; + } + else + { + BlendPalette(gTasks[taskId].data[2], 16, 0, RGB_BLACK); + DestroyAnimVisualTask(taskId); + } +} + +void sub_80E2084(u8 taskId) +{ + sub_80BBA20(taskId, 0, 0x1A0, gBattleAnimAttacker, gBattleAnimArgs[0], 10, 2, 30, gCureBubblesGfx, gCureBubblesTilemap, gCureBubblesPal); +} + +// Moves a noise line from the mon. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: which direction (0 = upward, 1 = downward, 2 = horizontal) +void AnimRoarNoiseLine(struct Sprite *sprite) +{ + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X) + gBattleAnimArgs[0]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + gBattleAnimArgs[1]; + if (gBattleAnimArgs[2] == 0) + { + sprite->data[0] = 0x280; + sprite->data[1] = -0x280; + } + else if (gBattleAnimArgs[2] == 1) + { + sprite->vFlip = TRUE; + sprite->data[0] = 0x280; + sprite->data[1] = 0x280; + } + else + { + StartSpriteAnim(sprite, 1); + sprite->data[0] = 0x280; + } + + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + { + sprite->data[0] = -sprite->data[0]; + sprite->hFlip = TRUE; + } + + sprite->callback = AnimRoarNoiseLineStep; +} + +static void AnimRoarNoiseLineStep(struct Sprite *sprite) +{ + sprite->data[6] += sprite->data[0]; + sprite->data[7] += sprite->data[1]; + sprite->pos2.x = sprite->data[6] >> 8; + sprite->pos2.y = sprite->data[7] >> 8; + if (++sprite->data[5] == 14) + DestroyAnimSprite(sprite); +} + +// Makes a series of dots in a trail from the attacker to the target. +// arg 0: unused +void AnimTask_GlareEyeDots(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + task->data[5] = 12; + task->data[6] = 3; + task->data[7] = 0; + + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; + else + task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; + + task->data[12] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; + task->data[13] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + task->data[14] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + task->func = AnimTask_GlareEyeDotsStep; +} + +static void AnimTask_GlareEyeDotsStep(u8 taskId) +{ + u8 i; + s16 x, y; + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + if (++task->data[1] > 3) + { + task->data[1] = 0; + GetGlareEyeDotCoords( + task->data[11], + task->data[12], + task->data[13], + task->data[14], + task->data[5], + task->data[2], + &x, + &y); + + for (i = 0; i < 2; i++) + { + u8 spriteId = CreateSprite(&gGlareEyeDotSpriteTemplate, x, y, 35); + if (spriteId != MAX_SPRITES) + { + if (task->data[7] == 0) + { + if (i == 0) + gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = -task->data[6]; + else + gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = task->data[6]; + } + else + { + if (i == 0) + { + gSprites[spriteId].pos2.x = -task->data[6]; + gSprites[spriteId].pos2.y = task->data[6]; + } + else + { + gSprites[spriteId].pos2.x = task->data[6]; + gSprites[spriteId].pos2.y = -task->data[6]; + } + } + + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[1] = taskId; + gSprites[spriteId].data[2] = 10; + task->data[10]++; + } + } + + if (task->data[2] == task->data[5]) + task->data[0]++; + + task->data[2]++; + } + break; + case 1: + if (task->data[10] == 0) + DestroyAnimVisualTask(taskId); + break; + } +} + +static void GetGlareEyeDotCoords(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, s16 *x, s16 *y) +{ + int x2; + int y2; + + if (arg5 == 0) + { + *x = arg0; + *y = arg1; + return; + } + + if (arg5 >= arg4) + { + *x = arg2; + *y = arg3; + return; + } + + arg4--; + x2 = (arg0 << 8) + arg5 * (((arg2 - arg0) << 8) / arg4); + y2 = (arg1 << 8) + arg5 * (((arg3 - arg1) << 8) / arg4); + *x = x2 >> 8; + *y = y2 >> 8; +} + +void AnimGlareEyeDot(struct Sprite *sprite) +{ + if (++sprite->data[0] > 36) + { + gTasks[sprite->data[1]].data[sprite->data[2]]--; + DestroySprite(sprite); + } +} + +// Moves a pawprint in a straight line. +// arg 0: initial x position +// arg 1: initial y position +// arg 2: destination x position +// arg 3: destination y position +// arg 4: duration +void AnimAssistPawprint(struct Sprite *sprite) +{ + sprite->pos1.x = gBattleAnimArgs[0]; + sprite->pos1.y = gBattleAnimArgs[1]; + sprite->data[2] = gBattleAnimArgs[2]; + sprite->data[4] = gBattleAnimArgs[3]; + sprite->data[0] = gBattleAnimArgs[4]; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + sprite->callback = InitAndRunAnimFastLinearTranslation; +} + +// Moves a ball in an arc twoards the target, and rotates the ball while arcing. +// No args. +void AnimTask_BarrageBall(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + task->data[12] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + task->data[13] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + task->data[14] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_HEIGHT) / 4; + task->data[15] = CreateSprite(&gBarrageBallSpriteTemplate, task->data[11], task->data[12], GetBattlerSpriteSubpriority(gBattleAnimTarget) - 5); + if (task->data[15] != MAX_SPRITES) + { + gSprites[task->data[15]].data[0] = 16; + gSprites[task->data[15]].data[2] = task->data[13]; + gSprites[task->data[15]].data[4] = task->data[14]; + gSprites[task->data[15]].data[5] = -32; + InitAnimArcTranslation(&gSprites[task->data[15]]); + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + StartSpriteAffineAnim(&gSprites[task->data[15]], 1); + + task->func = AnimTask_BarrageBallStep; + } + else + { + DestroyAnimVisualTask(taskId); + } +} + +static void AnimTask_BarrageBallStep(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + if (++task->data[1] > 1) + { + task->data[1] = 0; + TranslateAnimHorizontalArc(&gSprites[task->data[15]]); + if (++task->data[2] > 7) + task->data[0]++; + } + break; + case 1: + if (TranslateAnimHorizontalArc(&gSprites[task->data[15]])) + { + task->data[1] = 0; + task->data[2] = 0; + task->data[0]++; + } + break; + case 2: + if (++task->data[1] > 1) + { + task->data[1] = 0; + task->data[2]++; + gSprites[task->data[15]].invisible = task->data[2] & 1; + if (task->data[2] == 16) + { + FreeOamMatrix(gSprites[task->data[15]].oam.matrixNum); + DestroySprite(&gSprites[task->data[15]]); + task->data[0]++; + } + } + break; + case 3: + DestroyAnimVisualTask(taskId); + break; + } +} + +// Moves a hand back and forth in a squishing motion. +// arg 0: which battler +// arg 1: horizontal flip +// arg 2: num squishes +void AnimSmellingSaltsHand(struct Sprite *sprite) +{ + u8 battler; + + if (gBattleAnimArgs[0] == ANIM_ATTACKER) + battler = gBattleAnimAttacker; + else + battler = gBattleAnimTarget; + + sprite->oam.tileNum += 16; + sprite->data[6] = gBattleAnimArgs[2]; + sprite->data[7] = gBattleAnimArgs[1] == 0 ? -1 : 1; + sprite->pos1.y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET); + if (gBattleAnimArgs[1] == 0) + { + sprite->oam.matrixNum |= ST_OAM_HFLIP; + sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_LEFT) - 8; + } + else + { + sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_RIGHT) + 8; + } + + sprite->callback = AnimSmellingSaltsHand_Step; +} + +static void AnimSmellingSaltsHand_Step(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + if (++sprite->data[1] > 1) + { + sprite->data[1] = 0; + sprite->pos2.x += sprite->data[7]; + if (++sprite->data[2] == 12) + sprite->data[0]++; + } + break; + case 1: + if (++sprite->data[1] == 8) + { + sprite->data[1] = 0; + sprite->data[0]++; + } + break; + case 2: + sprite->pos2.x -= sprite->data[7] * 4; + if (++sprite->data[1] == 6) + { + sprite->data[1] = 0; + sprite->data[0]++; + } + break; + case 3: + sprite->pos2.x += sprite->data[7] * 3; + if (++sprite->data[1] == 8) + { + if (--sprite->data[6]) + { + sprite->data[1] = 0; + sprite->data[0]--; + } + else + { + DestroyAnimSprite(sprite); + } + } + break; + } +} + +// Squishes the mon horizontally a few times. +// arg 0: which mon +// arg 1: number of squishes +void AnimTask_SmellingSaltsSquish(u8 taskId) +{ + if (gBattleAnimArgs[0] == ANIM_ATTACKER) + { + DestroyAnimVisualTask(taskId); + } + else + { + gTasks[taskId].data[0] = gBattleAnimArgs[1]; + gTasks[taskId].data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + PrepareAffineAnimInTaskData(&gTasks[taskId], gTasks[taskId].data[15], sSmellingSaltsSquishAffineAnimCmds); + gTasks[taskId].func = AnimTask_SmellingSaltsSquishStep; + } +} + +static void AnimTask_SmellingSaltsSquishStep(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + if (++task->data[1] > 1) + { + task->data[1] = 0; + if (!(task->data[2] & 1)) + gSprites[task->data[15]].pos2.x = 2; + else + gSprites[task->data[15]].pos2.x = -2; + } + + if (!RunAffineAnimFromTaskData(task)) + { + gSprites[task->data[15]].pos2.x = 0; + if (--task->data[0]) + { + PrepareAffineAnimInTaskData(&gTasks[taskId], gTasks[taskId].data[15], sSmellingSaltsSquishAffineAnimCmds); + task->data[1] = 0; + task->data[2] = 0; + } + else + { + DestroyAnimVisualTask(taskId); + } + } +} + +// Blinks an exclamation image over the mon a few times. +// arg 0: which mon +// arg 1: blink delay +// arg 2: number of blinks +void AnimSmellingSaltExclamation(struct Sprite *sprite) +{ + if (gBattleAnimArgs[0] == ANIM_ATTACKER) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_TOP); + } + else + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_TOP); + } + + if (sprite->pos1.y < 8) + sprite->pos1.y = 8; + + sprite->data[0] = 0; + sprite->data[1] = gBattleAnimArgs[1]; + sprite->data[2] = 0; + sprite->data[3] = gBattleAnimArgs[2]; + sprite->callback = AnimSmellingSaltExclamationStep; +} + +static void AnimSmellingSaltExclamationStep(struct Sprite *sprite) +{ + if (++sprite->data[0] >= sprite->data[1]) + { + sprite->data[0] = 0; + sprite->data[2] = (sprite->data[2] + 1) & 1; + sprite->invisible = sprite->data[2]; + if (sprite->data[2] && --sprite->data[3] == 0) + DestroyAnimSprite(sprite); + } +} + +// Claps a hand several times. +// arg 0: which hand +// arg 1: +void AnimHelpingHandClap(struct Sprite *sprite) +{ + if (gBattleAnimArgs[0] == 0) + { + sprite->oam.matrixNum |= ST_OAM_HFLIP; + sprite->pos1.x = 100; + sprite->data[7] = 1; + } + else + { + sprite->pos1.x = 140; + sprite->data[7] = -1; + } + + sprite->pos1.y = 56; + sprite->callback = AnimHelpingHandClapStep; +} + +static void AnimHelpingHandClapStep(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->pos1.y -= sprite->data[7] * 2; + if (sprite->data[1] & 1) + sprite->pos1.x -= sprite->data[7] * 2; + + if (++sprite->data[1] == 9) + { + sprite->data[1] = 0; + sprite->data[0]++; + } + break; + case 1: + if (++sprite->data[1] == 4) + { + sprite->data[1] = 0; + sprite->data[0]++; + } + break; + case 2: + sprite->data[1]++; + sprite->pos1.y += sprite->data[7] * 3; + sprite->pos2.x = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3); + if (sprite->data[1] == 12) + { + sprite->data[1] = 0; + sprite->data[0]++; + } + break; + case 3: + if (++sprite->data[1] == 2) + { + sprite->data[1] = 0; + sprite->data[0]++; + } + break; + case 4: + sprite->data[1]++; + sprite->pos1.y -= sprite->data[7] * 3; + sprite->pos2.x = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3); + if (sprite->data[1] == 12) + sprite->data[0]++; + break; + case 5: + sprite->data[1]++; + sprite->pos1.y += sprite->data[7] * 3; + sprite->pos2.x = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3); + if (sprite->data[1] == 15) + sprite->oam.tileNum += 16; + + if (sprite->data[1] == 18) + { + sprite->data[1] = 0; + sprite->data[0]++; + } + break; + case 6: + sprite->pos1.x += sprite->data[7] * 6; + if (++sprite->data[1] == 9) + { + sprite->data[1] = 0; + sprite->data[0]++; + } + break; + case 7: + sprite->pos1.x += sprite->data[7] * 2; + if (++sprite->data[1] == 1) + { + sprite->data[1] = 0; + sprite->data[0]++; + } + break; + case 8: + sprite->pos1.x -= sprite->data[7] * 3; + if (++sprite->data[1] == 5) + DestroyAnimSprite(sprite); + break; + } +} + +// Repeatedly moves the attacking mon in a horizontal lunging motion. +// No args. +void AnimTask_HelpingHandAttackerMovement(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER); + if (IsDoubleBattle() == TRUE) + { + int x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + int y = GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimAttacker), BATTLER_COORD_X); + if (x > y) + task->data[14] = 1; + else + task->data[14] = -1; + } + else + { + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + task->data[14] = -1; + else + task->data[14] = 1; + } + + task->func = AnimTask_HelpingHandAttackerMovementStep; +} + +static void AnimTask_HelpingHandAttackerMovementStep(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + if (++task->data[1] == 13) + { + task->data[1] = 0; + task->data[0]++; + } + break; + case 1: + gSprites[task->data[15]].pos2.x -= task->data[14] * 3; + if (++task->data[1] == 6) + { + task->data[1] = 0; + task->data[0]++; + } + break; + case 2: + gSprites[task->data[15]].pos2.x += task->data[14] * 3; + if (++task->data[1] == 6) + { + task->data[1] = 0; + task->data[0]++; + } + break; + case 3: + if (++task->data[1] == 2) + { + task->data[1] = 0; + if (task->data[2] == 0) + { + task->data[2]++; + task->data[0] = 1; + } + else + { + task->data[0]++; + } + } + break; + case 4: + gSprites[task->data[15]].pos2.x += task->data[14]; + if (++task->data[1] == 3) + { + task->data[1] = 0; + task->data[0]++; + } + break; + case 5: + if (++task->data[1] == 6) + { + task->data[1] = 0; + task->data[0]++; + } + break; + case 6: + gSprites[task->data[15]].pos2.x -= task->data[14] * 4; + if (++task->data[1] == 5) + { + task->data[1] = 0; + task->data[0]++; + } + break; + case 7: + gSprites[task->data[15]].pos2.x += task->data[14] * 4; + if (++task->data[1] == 5) + { + task->data[1] = 0; + task->data[0]++; + } + break; + case 8: + gSprites[task->data[15]].pos2.x = 0; + DestroyAnimVisualTask(taskId); + break; + } +} + +// Moves a magnifying glass around in straight lines. +// arg 0: magnifying glass target mon +void AnimForesightMagnifyingGlass(struct Sprite *sprite) +{ + if (gBattleAnimArgs[0] == ANIM_ATTACKER) + { + InitSpritePosToAnimAttacker(sprite, TRUE); + sprite->data[7] = gBattleAnimAttacker; + } + else + { + sprite->data[7] = gBattleAnimTarget; + } + + if (GetBattlerSide(sprite->data[7]) == B_SIDE_OPPONENT) + sprite->oam.matrixNum = ST_OAM_HFLIP; + + sprite->oam.priority = GetBattlerSpriteBGPriority(sprite->data[7]); + sprite->oam.objMode = ST_OAM_OBJ_BLEND; + sprite->callback = AnimForesightMagnifyingGlassStep; +} + +static void AnimForesightMagnifyingGlassStep(struct Sprite *sprite) +{ + u16 x, y; + + switch (sprite->data[5]) + { + case 0: + switch (sprite->data[6]) + { + default: + sprite->data[6] = 0; + case 0: + case 4: + x = GetBattlerSpriteCoordAttr(sprite->data[7], BATTLER_COORD_ATTR_RIGHT) - 4; + y = GetBattlerSpriteCoordAttr(sprite->data[7], BATTLER_COORD_ATTR_BOTTOM) - 4; + break; + case 1: + x = GetBattlerSpriteCoordAttr(sprite->data[7], BATTLER_COORD_ATTR_RIGHT) - 4; + y = GetBattlerSpriteCoordAttr(sprite->data[7], BATTLER_COORD_ATTR_TOP) + 4; + break; + case 2: + x = GetBattlerSpriteCoordAttr(sprite->data[7], BATTLER_COORD_ATTR_LEFT) + 4; + y = GetBattlerSpriteCoordAttr(sprite->data[7], BATTLER_COORD_ATTR_BOTTOM) - 4; + break; + case 3: + x = GetBattlerSpriteCoordAttr(sprite->data[7], BATTLER_COORD_ATTR_LEFT) + 4; + y = GetBattlerSpriteCoordAttr(sprite->data[7], BATTLER_COORD_ATTR_TOP) - 4; + break; + case 5: + x = GetBattlerSpriteCoord(sprite->data[7], BATTLER_COORD_X_2); + y = GetBattlerSpriteCoord(sprite->data[7], BATTLER_COORD_Y_PIC_OFFSET); + break; + } + + if (sprite->data[6] == 4) + sprite->data[0] = 24; + else if (sprite->data[6] == 5) + sprite->data[0] = 6; + else + sprite->data[0] = 12; + + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = x; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = y; + InitAnimLinearTranslation(sprite); + sprite->data[5]++; + break; + case 1: + if (AnimTranslateLinear(sprite)) + { + switch (sprite->data[6]) + { + default: + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->data[0] = 0; + sprite->data[5]++; + sprite->data[6]++; + break; + case 4: + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->data[5] = 0; + sprite->data[6]++; + break; + case 5: + sprite->data[0] = 0; + sprite->data[1] = 16; + sprite->data[2] = 0; + sprite->data[5] = 3; + break; + } + } + break; + case 2: + if (++sprite->data[0] == 4) + sprite->data[5] = 0; + break; + case 3: + if (!(sprite->data[0] & 1)) + sprite->data[1]--; + else + sprite->data[2]++; + + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[1], sprite->data[2])); + if (++sprite->data[0] == 32) + { + sprite->invisible = TRUE; + sprite->data[5]++; + } + break; + case 4: + DestroyAnimSprite(sprite); + break; + } +} + +static void AnimMeteorMashStarStep(struct Sprite *sprite) +{ + sprite->pos2.x = ((sprite->data[2] - sprite->data[0]) * sprite->data[5]) / sprite->data[4]; + sprite->pos2.y = ((sprite->data[3] - sprite->data[1]) * sprite->data[5]) / sprite->data[4]; + if (!(sprite->data[5] & 1)) + { + CreateSprite( + &gMiniTwinklingStarSpriteTemplate, + sprite->pos1.x + sprite->pos2.x, + sprite->pos1.y + sprite->pos2.y, 5); + } + + if (sprite->data[5] == sprite->data[4]) + DestroyAnimSprite(sprite); + + sprite->data[5]++; +} + +// Moves a shooting star across the screen that leaves little twinkling stars behind its path. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: destination x pixel offset +// arg 3: destination y pixel offset +// arg 4: duration +void AnimMeteorMashStar(struct Sprite *sprite) +{ + s16 y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + s16 x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + { + sprite->data[0] = sprite->pos1.x - gBattleAnimArgs[0]; + sprite->data[2] = sprite->pos1.x - gBattleAnimArgs[2]; + } + else + { + sprite->data[0] = sprite->pos1.x + gBattleAnimArgs[0]; + sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2]; + } + + sprite->data[1] = sprite->pos1.y + gBattleAnimArgs[1]; + sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[3]; + sprite->data[4] = gBattleAnimArgs[4]; + sprite->pos1.x = sprite->data[0]; + sprite->pos1.y = sprite->data[1]; + sprite->callback = AnimMeteorMashStarStep; +} + +void AnimTask_MonToSubstitute(u8 taskId) +{ + int i; + u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + + if (gTasks[taskId].data[0] == 0) + { + PrepareBattlerSpriteForRotScale(spriteId, FALSE); + gTasks[taskId].data[1] = 0x100; + gTasks[taskId].data[2] = 0x100; + gTasks[taskId].data[0]++; + } + else if (gTasks[taskId].data[0] == 1) + { + gTasks[taskId].data[1] += 0x60; + gTasks[taskId].data[2] -= 0xD; + SetSpriteRotScale(spriteId, gTasks[taskId].data[1], gTasks[taskId].data[2], 0); + if (++gTasks[taskId].data[3] == 9) + { + gTasks[taskId].data[3] = 0; + ResetSpriteRotScale(spriteId); + gSprites[spriteId].invisible = TRUE; + gTasks[taskId].data[0]++; + } + } + else + { + LoadBattleMonGfxAndAnimate(gBattleAnimAttacker, 0, spriteId); + for (i = 0; i < 16; i++) + gTasks[taskId].data[i] = 0; + + gTasks[taskId].func = AnimTask_MonToSubstituteDoll; + } +} + +static void AnimTask_MonToSubstituteDoll(u8 taskId) +{ + u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + + switch (gTasks[taskId].data[0]) + { + case 0: + gSprites[spriteId].pos2.y = -200; + gSprites[spriteId].pos2.x = 200; + gSprites[spriteId].invisible = FALSE; + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0]++; + break; + case 1: + gTasks[taskId].data[10] += 112; + gSprites[spriteId].pos2.y += gTasks[taskId].data[10] >> 8; + if (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y >= -32) + gSprites[spriteId].pos2.x = 0; + + if (gSprites[spriteId].pos2.y > 0) + gSprites[spriteId].pos2.y = 0; + + if (gSprites[spriteId].pos2.y == 0) + { + PlaySE12WithPanning(SE_W145B, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER)); + gTasks[taskId].data[10] -= 0x800; + gTasks[taskId].data[0]++; + } + break; + case 2: + gTasks[taskId].data[10] -= 112; + if (gTasks[taskId].data[10] < 0) + gTasks[taskId].data[10] = 0; + + gSprites[spriteId].pos2.y -= gTasks[taskId].data[10] >> 8; + if (gTasks[taskId].data[10] == 0) + gTasks[taskId].data[0]++; + break; + case 3: + gTasks[taskId].data[10] += 112; + gSprites[spriteId].pos2.y += gTasks[taskId].data[10] >> 8; + if (gSprites[spriteId].pos2.y > 0) + gSprites[spriteId].pos2.y = 0; + + if (gSprites[spriteId].pos2.y == 0) + { + PlaySE12WithPanning(SE_W145B, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER)); + DestroyAnimVisualTask(taskId); + } + break; + } +} + +// Moves down an X that flickers and disappears. +// No args. +void AnimBlockX(struct Sprite *sprite) +{ + s16 y; + + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + { + sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimTarget) - 2; + y = -144; + } + else + { + sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimTarget) + 2; + y = -96; + } + + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + sprite->pos2.y = y; + sprite->callback = AnimBlockXStep; +} + +static void AnimBlockXStep(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->pos2.y += 10; + if (sprite->pos2.y >= 0) + { + PlaySE12WithPanning(SE_W166, BattleAnimAdjustPanning(SOUND_PAN_TARGET)); + sprite->pos2.y = 0; + sprite->data[0]++; + } + break; + case 1: + sprite->data[1] += 4; + sprite->pos2.y = -(gSineTable[sprite->data[1]] >> 3); + if (sprite->data[1] > 0x7F) + { + PlaySE12WithPanning(SE_W166, BattleAnimAdjustPanning(SOUND_PAN_TARGET)); + sprite->data[1] = 0; + sprite->pos2.y = 0; + sprite->data[0]++; + } + break; + case 2: + sprite->data[1] += 6; + sprite->pos2.y = -(gSineTable[sprite->data[1]] >> 4); + if (sprite->data[1] > 0x7F) + { + sprite->data[1] = 0; + sprite->pos2.y = 0; + sprite->data[0]++; + } + break; + case 3: + if (++sprite->data[1] > 8) + { + PlaySE12WithPanning(SE_W043, BattleAnimAdjustPanning(SOUND_PAN_TARGET)); + sprite->data[1] = 0; + sprite->data[0]++; + } + break; + case 4: + if (++sprite->data[1] > 8) + { + sprite->data[1] = 0; + sprite->data[2]++; + sprite->invisible = sprite->data[2] & 1; + if (sprite->data[2] == 7) + DestroyAnimSprite(sprite); + } + break; + } +} + +// Quickly moves two clones of the target mon back and forth. +// No args. +void AnimTask_OdorSleuthMovement(u8 taskId) +{ + s16 spriteId1, spriteId2; + + spriteId1 = CloneBattlerSpriteWithBlend(ANIM_TARGET); + if (spriteId1 < 0) + { + DestroyAnimVisualTask(taskId); + return; + } + + spriteId2 = CloneBattlerSpriteWithBlend(ANIM_TARGET); + if (spriteId2 < 0) + { + obj_delete_but_dont_free_vram(&gSprites[spriteId1]); + DestroyAnimVisualTask(taskId); + return; + } + + gSprites[spriteId2].pos2.x += 24; + gSprites[spriteId1].pos2.x -= 24; + gSprites[spriteId2].data[0] = 0; + gSprites[spriteId1].data[0] = 0; + gSprites[spriteId2].data[1] = 0; + gSprites[spriteId1].data[1] = 0; + gSprites[spriteId2].data[2] = 0; + gSprites[spriteId1].data[2] = 0; + gSprites[spriteId2].data[3] = 16; + gSprites[spriteId1].data[3] = -16; + gSprites[spriteId2].data[4] = 0; + gSprites[spriteId1].data[4] = 128; + gSprites[spriteId2].data[5] = 24; + gSprites[spriteId1].data[5] = 24; + gSprites[spriteId2].data[6] = taskId; + gSprites[spriteId1].data[6] = taskId; + gSprites[spriteId2].data[7] = 0; + gSprites[spriteId1].data[7] = 0; + gTasks[taskId].data[0] = 2; + + if (!gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].invisible) + { + gSprites[spriteId2].invisible = FALSE; + gSprites[spriteId1].invisible = TRUE; + } + else + { + gSprites[spriteId2].invisible = TRUE; + gSprites[spriteId1].invisible = TRUE; + } + + gSprites[spriteId2].oam.objMode = ST_OAM_OBJ_NORMAL; + gSprites[spriteId1].oam.objMode = ST_OAM_OBJ_NORMAL; + gSprites[spriteId2].callback = MoveOdorSleuthClone; + gSprites[spriteId1].callback = MoveOdorSleuthClone; + gTasks[taskId].func = AnimTask_OdorSleuthMovementWaitFinish; +} + +static void AnimTask_OdorSleuthMovementWaitFinish(u8 taskId) +{ + if (gTasks[taskId].data[0] == 0) + DestroyAnimVisualTask(taskId); +} + +static void MoveOdorSleuthClone(struct Sprite *sprite) +{ + int zero = 0; + + if (++sprite->data[1] > 1) + { + sprite->data[1] = 0; + if (!gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].invisible) + sprite->invisible ^= 1; + } + + sprite->data[4] = sprite->data[4] + sprite->data[3]; + sprite->data[4] &= 0xFF; + sprite->pos2.x = Cos(sprite->data[4], sprite->data[5]); + switch (sprite->data[0]) + { + case 0: + if (++sprite->data[2] == 60) + { + sprite->data[2] = 0; + sprite->data[0]++; + } + break; + case 1: + if (++sprite->data[2] > 0) + { + sprite->data[2] = 0; + sprite->data[5] -= 2; + if (sprite->data[5] < 0) + { + gTasks[sprite->data[6]].data[sprite->data[7]]--; + obj_delete_but_dont_free_vram(sprite); + } + } + break; + } +} + +void AnimTask_GetReturnPowerLevel(u8 taskId) +{ + gBattleAnimArgs[7] = 0; + if (gAnimFriendship < 60) + gBattleAnimArgs[7] = 0; + if (gAnimFriendship > 60 && gAnimFriendship < 92) + gBattleAnimArgs[7] = 1; + if (gAnimFriendship > 91 && gAnimFriendship < 201) + gBattleAnimArgs[7] = 2; + if (gAnimFriendship > 200) + gBattleAnimArgs[7] = 3; + + DestroyAnimVisualTask(taskId); +} + +// Makes the mon run out of screen, run past the opposing mon, and return to its original position. +// No args. +void AnimTask_SnatchOpposingMonMove(u8 taskId) +{ + u8 spriteId, spriteId2; + u32 personality; + u32 otId; + u16 species; + u8 subpriority; + bool8 isBackPic; + s16 x; + + switch (gTasks[taskId].data[0]) + { + case 0: + spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + gTasks[taskId].data[1] += 0x800; + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + gSprites[spriteId].pos2.x += (gTasks[taskId].data[1] >> 8); + else + gSprites[spriteId].pos2.x -= (gTasks[taskId].data[1] >> 8); + + gTasks[taskId].data[1] &= 0xFF; + x = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x; + if ((u16)(x + 32) > 304) + { + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[0]++; + } + break; + case 1: + { + s16 x; + + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + { + personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_PERSONALITY); + otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_OT_ID); + if (gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies == SPECIES_NONE) + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES); + else + species = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies; + + subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority + 1; + isBackPic = FALSE; + x = 272; + } + else + { + personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_PERSONALITY); + otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_OT_ID); + if (gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies == SPECIES_NONE) + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES); + else + species = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies; + + subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority - 1; + isBackPic = TRUE; + x = -32; + } + + spriteId2 = sub_80768D0(species, isBackPic, 0, x, GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y), subpriority, personality, otId, gBattleAnimAttacker, 0); + + if (gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies != SPECIES_NONE) + BlendPalette((gSprites[spriteId2].oam.paletteNum * 16) | 0x100, 16, 6, RGB_WHITE); + gTasks[taskId].data[15] = spriteId2; + gTasks[taskId].data[0]++; + break; + } + case 2: + spriteId2 = gTasks[taskId].data[15]; + gTasks[taskId].data[1] += 0x800; + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + gSprites[spriteId2].pos2.x -= (gTasks[taskId].data[1] >> 8); + else + gSprites[spriteId2].pos2.x += (gTasks[taskId].data[1] >> 8); + + gTasks[taskId].data[1] &= 0xFF; + x = gSprites[spriteId2].pos1.x + gSprites[spriteId2].pos2.x; + if (gTasks[taskId].data[14] == 0) + { + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + { + if (x < GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X)) + { + gTasks[taskId].data[14]++; + gBattleAnimArgs[7] = 0xFFFF; + } + } + else + { + if (x > GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X)) + { + gTasks[taskId].data[14]++; + gBattleAnimArgs[7] = 0xFFFF; + } + } + } + if ((u16)(x + 32) > 304) + { + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[0]++; + } + break; + case 3: + spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + spriteId2 = gTasks[taskId].data[15]; + DestroySpriteAndFreeResources_(&gSprites[spriteId2]); + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + gSprites[spriteId].pos2.x = -gSprites[spriteId].pos1.x - 32; + else + gSprites[spriteId].pos2.x = 272 - gSprites[spriteId].pos1.x; + + gTasks[taskId].data[0]++; + break; + case 4: + spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + gTasks[taskId].data[1] += 0x800; + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + { + gSprites[spriteId].pos2.x += (gTasks[taskId].data[1] >> 8); + if (gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x >= GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X)) + gSprites[spriteId].pos2.x = 0; + } + else + { + gSprites[spriteId].pos2.x -= (gTasks[taskId].data[1] >> 8); + if (gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x <= GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X)) + gSprites[spriteId].pos2.x = 0; + } + + gTasks[taskId].data[1] = (u8)gTasks[taskId].data[1]; + if (gSprites[spriteId].pos2.x == 0) + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_80E3E84(struct Sprite *sprite) +{ + switch (sprite->data[7]) + { + case 0: + if (gBattleAnimArgs[7] == -1) + { + PlaySE12WithPanning(SE_W233, BattleAnimAdjustPanning(SOUND_PAN_TARGET)); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 16; + sprite->data[0] = -32; + sprite->data[7]++; + sprite->invisible = FALSE; + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + sprite->subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority - 1; + } + else + { + sprite->invisible = TRUE; + } + break; + case 1: + sprite->pos2.y = Sin(sprite->data[1], sprite->data[0]); + sprite->data[1] += 5; + if (sprite->data[1] > 0x7F) + { + sprite->data[0] = sprite->data[0] / 2; + sprite->data[3]++; + sprite->data[1] -= 0x7F; + } + + sprite->data[2] += 0x100; + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + sprite->pos2.x -= (sprite->data[2] >> 8); + else + sprite->pos2.x += (sprite->data[2] >> 8); + + sprite->data[2] &= 0xFF; + if (sprite->data[3] == 2) + DestroyAnimSprite(sprite); + break; + } +} + +// Quickly moves the mon towards its partner and back. +// No args. +void AnimTask_SnatchPartnerMove(u8 taskId) +{ + s16 attackerX, targetX; + u8 spriteId; + + switch (gTasks[taskId].data[15]) + { + case 0: + attackerX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + targetX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + gTasks[taskId].data[0] = 6; + if (attackerX > targetX) + gTasks[taskId].data[0] *= -1; + + gTasks[taskId].data[1] = attackerX; + gTasks[taskId].data[2] = targetX; + gTasks[taskId].data[15]++; + break; + case 1: + spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; + gSprites[spriteId].pos2.x += gTasks[taskId].data[0]; + if (gTasks[taskId].data[0] > 0) + { + if (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x >= gTasks[taskId].data[2]) + gTasks[taskId].data[15]++; + } + else + { + if (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x <= gTasks[taskId].data[2]) + gTasks[taskId].data[15]++; + } + break; + case 2: + gTasks[taskId].data[0] *= -1; + gTasks[taskId].data[15]++; + break; + case 3: + spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; + gSprites[spriteId].pos2.x += gTasks[taskId].data[0]; + if (gTasks[taskId].data[0] < 0) + { + if (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x <= gTasks[taskId].data[1]) + gTasks[taskId].data[15]++; + } + else + { + if (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x >= gTasks[taskId].data[1]) + gTasks[taskId].data[15]++; + } + break; + case 4: + default: + spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; + gSprites[spriteId].pos2.x = 0; + DestroyAnimVisualTask(taskId); + break; + } +} + +// Moves the mon's sprite back and forth in an unpredictable swaying motion. +// No args. +void AnimTask_TeeterDanceMovement(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + task->data[3] = GetAnimBattlerSpriteId(ANIM_ATTACKER); + task->data[4] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER ? 1 : -1; + task->data[6] = gSprites[task->data[3]].pos1.y; + task->data[5] = gSprites[task->data[3]].pos1.x; + task->data[9] = 0; + task->data[11] = 0; + task->data[10] = 1; + task->data[12] = 0; + task->func = AnimTask_TeeterDanceMovementStep; +} + +static void AnimTask_TeeterDanceMovementStep(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + task->data[11] += 8; + task->data[11] &= 0xFF; + gSprites[task->data[3]].pos2.x = gSineTable[task->data[11]] >> 5; + task->data[9] += 2; + task->data[9] &= 0xFF; + gSprites[task->data[3]].pos1.x = (gSineTable[task->data[9]] >> 3) * task->data[4] + task->data[5]; + if (task->data[9] == 0) + { + gSprites[task->data[3]].pos1.x = task->data[5]; + task->data[0]++; + } + break; + case 1: + task->data[11] += 8; + task->data[11] &= 0xFF; + gSprites[task->data[3]].pos2.x = gSineTable[task->data[11]] >> 5; + if (task->data[11] == 0) + { + gSprites[task->data[3]].pos2.x = 0; + task->data[0]++; + } + break; + case 2: + DestroyAnimVisualTask(taskId); + break; + } +} + +static void AnimKnockOffStrikeStep(struct Sprite *sprite) +{ + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + { + sprite->data[1] += sprite->data[0]; + sprite->data[1] &= 0xFF; + } + else + { + sprite->data[1] += sprite->data[0]; + sprite->data[1] &= 0xFF; + } + + sprite->pos2.x = Cos(sprite->data[1], 20); + sprite->pos2.y = Sin(sprite->data[1], 20); + if (sprite->animEnded) + DestroyAnimSprite(sprite); + + sprite->data[2]++; +} + +// Animates a strike that swipes downard at the target mon. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +void AnimKnockOffStrike(struct Sprite *sprite) +{ + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + { + sprite->pos1.x -= gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = -11; + sprite->data[1] = 192; + StartSpriteAffineAnim(sprite, 1); + } + else + { + sprite->data[0] = 11; + sprite->data[1] = 192; + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + } + + sprite->callback = AnimKnockOffStrikeStep; +} + +// Gradually fades a rotating recyle arrow sprite in and back out. +// No args. +void AnimRecycle(struct Sprite *sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_TOP); + if (sprite->pos1.y < 16) + sprite->pos1.y = 16; + + sprite->data[6] = 0; + sprite->data[7] = 16; + sprite->callback = AnimRecycleStep; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[6], sprite->data[7])); +} + +static void AnimRecycleStep(struct Sprite *sprite) +{ + switch (sprite->data[2]) + { + case 0: + if (++sprite->data[0] > 1) + { + sprite->data[0] = 0; + if (!(sprite->data[1] & 1)) + { + if (sprite->data[6] < 16) + sprite->data[6]++; + } + else + { + if (sprite->data[7] != 0) + sprite->data[7]--; + } + + sprite->data[1]++; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[6], sprite->data[7])); + if (sprite->data[7] == 0) + sprite->data[2]++; + } + break; + case 1: + if (++sprite->data[0] == 10) + { + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2]++; + } + break; + case 2: + if (++sprite->data[0] > 1) + { + sprite->data[0] = 0; + if (!(sprite->data[1] & 1)) + { + if (sprite->data[6] != 0) + sprite->data[6]--; + } + else + { + if (sprite->data[7] < 16) + sprite->data[7]++; + } + + sprite->data[1]++; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[6], sprite->data[7])); + if (sprite->data[7] == 16) + sprite->data[2]++; + } + break; + case 3: + DestroySpriteAndMatrix(sprite); + break; + } +} + +void AnimTask_GetWeather(u8 taskId) +{ + gBattleAnimArgs[7] = ANIM_WEATHER_NONE; + if (gWeatherMoveAnim & WEATHER_SUN_ANY) + gBattleAnimArgs[7] = ANIM_WEATHER_SUN; + else if (gWeatherMoveAnim & WEATHER_RAIN_ANY) + gBattleAnimArgs[7] = ANIM_WEATHER_RAIN; + else if (gWeatherMoveAnim & WEATHER_SANDSTORM_ANY) + gBattleAnimArgs[7] = ANIM_WEATHER_SANDSTORM; + else if (gWeatherMoveAnim & WEATHER_HAIL_ANY) + gBattleAnimArgs[7] = ANIM_WEATHER_HAIL; + + DestroyAnimVisualTask(taskId); +} + +// Squishes the mon sprite vertically, and shakes it back and forth. +// arg 0: which battler +void AnimTask_SlackOffSquish(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + task->data[0] = 0; + task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + PrepareAffineAnimInTaskData(task, task->data[15], sSlackOffSquishAffineAnimCmds); + task->func = AnimTask_SlackOffSquishStep; +} + +static void AnimTask_SlackOffSquishStep(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + gTasks[taskId].data[0]++; + if (gTasks[taskId].data[0] > 16 && gTasks[taskId].data[0] < 40) + { + if (++task->data[1] > 2) + { + task->data[1] = 0; + task->data[2]++; + if (!(task->data[2] & 1)) + gSprites[task->data[15]].pos2.x = -1; + else + gSprites[task->data[15]].pos2.x = 1; + } + } + else + { + gSprites[task->data[15]].pos2.x = 0; + } + + if (!RunAffineAnimFromTaskData(&gTasks[taskId])) + DestroyAnimVisualTask(taskId); +} diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index a3bd26898..7f3516670 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -88,7 +88,7 @@ static const struct SpriteTemplate gUnknown_83AE054[] = { .tileTag = 0xD755, .paletteTag = 0xD755, - .oam = &gOamData_83ACA40, + .oam = &gOamData_AffineNormal_ObjNormal_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -97,7 +97,7 @@ static const struct SpriteTemplate gUnknown_83AE054[] = { .tileTag = 0xD756, .paletteTag = 0xD756, - .oam = &gOamData_83ACA40, + .oam = &gOamData_AffineNormal_ObjNormal_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -884,7 +884,7 @@ void AnimLoadCompressedBgTilemap(u32 bgId, const u32 *src) CopyBgTilemapBufferToVram(bgId); } -u8 sub_8075454(void) +u8 GetBattleBgPaletteNum(void) { return 2; } diff --git a/src/battle_anim_special.c b/src/battle_anim_special.c new file mode 100644 index 000000000..7590c0e58 --- /dev/null +++ b/src/battle_anim_special.c @@ -0,0 +1,2318 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "battle_main.h" +#include "battle_controllers.h" +#include "battle_interface.h" +#include "decompress.h" +#include "dma3.h" +#include "gpu_regs.h" +#include "graphics.h" +#include "m4a.h" +#include "main.h" +#include "palette.h" +#include "pokeball.h" +#include "sound.h" +#include "sprite.h" +#include "task.h" +#include "trig.h" +#include "util.h" +#include "constants/items.h" +#include "constants/moves.h" +#include "constants/songs.h" +#include "constants/pokemon.h" + +// Defines +#define TAG_PARTICLES_POKEBALL 55020 +#define TAG_PARTICLES_GREATBALL 55021 +#define TAG_PARTICLES_SAFARIBALL 55022 +#define TAG_PARTICLES_ULTRABALL 55023 +#define TAG_PARTICLES_MASTERBALL 55024 +#define TAG_PARTICLES_NETBALL 55025 +#define TAG_PARTICLES_DIVEBALL 55026 +#define TAG_PARTICLES_NESTBALL 55027 +#define TAG_PARTICLES_REPEATBALL 55028 +#define TAG_PARTICLES_TIMERBALL 55029 +#define TAG_PARTICLES_LUXURYBALL 55030 +#define TAG_PARTICLES_PREMIERBALL 55031 + +#define HIHALF(n) (((n) & 0xFFFF0000) >> 16) +#define LOHALF(n) ((n) & 0xFFFF) + +// RAM +int sUnknown_3005424; +u16 sUnknown_3005428; +u16 sUnknown_300542C; + +// Function Declarations +static void sub_80EEDF4(u8); +static void sub_80EF1CC(u8); +static void sub_80EF698(u8); +static void sub_80EF8C0(struct Sprite *); +static void sub_80EF7EC(u8); +static void sub_80EF864(u8); +static void sub_80EF8F0(struct Sprite *); +static void sub_80F0478(struct Sprite *); +static void sub_80EF9B4(struct Sprite *); +static void sub_80EFA0C(struct Sprite *); +static void sub_80EFB58(struct Sprite *); +static void sub_80EFB9C(struct Sprite *); +static void sub_80EFF80(struct Sprite *); +static void sub_80EFCA0(struct Sprite *); +static void sub_80EFCEC(struct Sprite *); +static void sub_80EFFA4(struct Sprite *); +static void sub_80F02B0(struct Sprite *); +static void sub_80EFFC4(struct Sprite *); +static void sub_80F01B8(struct Sprite *); +static void sub_80F00A4(struct Sprite *); +static void sub_80F018C(struct Sprite *); +static void sub_80F05B4(u8); +static void sub_80F0278(struct Sprite *); +static void sub_80F0378(struct Sprite *); +static void sub_80F04B4(struct Sprite *); +static void GhostBallDodge(struct Sprite *sprite); +static void sub_80F0574(struct Sprite *sprite); +static void PokeBallOpenParticleAnimation_Step1(struct Sprite *); +static void PokeBallOpenParticleAnimation_Step2(struct Sprite *); +static void DestroyBallOpenAnimationParticle(struct Sprite *); +static void FanOutBallOpenParticles_Step1(struct Sprite *); +static void RepeatBallOpenParticleAnimation_Step1(struct Sprite *); +static void PremierBallOpenParticleAnimation_Step1(struct Sprite *); +static void sub_80F12E0(u8); +static void sub_80F1370(u8); +static void sub_80F13C0(u8); +static void sub_80F181C(u8); +static void sub_80F1A2C(struct Sprite *); +static void sub_80F1A80(struct Sprite *); +static void sub_80F19E0(u8); +static void sub_80F1BCC(struct Sprite *); +static void sub_80F1C04(struct Sprite *); +static void sub_80F1C30(struct Sprite *); +static void PokeBallOpenParticleAnimation(u8); +static void GreatBallOpenParticleAnimation(u8); +static void SafariBallOpenParticleAnimation(u8); +static void UltraBallOpenParticleAnimation(u8); +static void MasterBallOpenParticleAnimation(u8); +static void DiveBallOpenParticleAnimation(u8); +static void RepeatBallOpenParticleAnimation(u8); +static void TimerBallOpenParticleAnimation(u8); +static void PremierBallOpenParticleAnimation(u8); +static void sub_80F1B3C(struct Sprite *); + +// Data +struct BallCaptureSuccessStarData +{ + s8 xOffset; + s8 yOffset; + s8 unk2; +}; + +static const struct BallCaptureSuccessStarData sBallCaptureSuccessStarData[] = +{ + { + .xOffset = 10, + .yOffset = 2, + .unk2 = -3, + }, + { + .xOffset = 15, + .yOffset = 0, + .unk2 = -4, + }, + { + .xOffset = -10, + .yOffset = 2, + .unk2 = -4, + }, +}; + +const struct CompressedSpriteSheet gBallParticleSpritesheets[] = +{ + {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_POKEBALL}, + {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_GREATBALL}, + {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_SAFARIBALL}, + {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_ULTRABALL}, + {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_MASTERBALL}, + {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_NETBALL}, + {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_DIVEBALL}, + {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_NESTBALL}, + {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_REPEATBALL}, + {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_TIMERBALL}, + {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_LUXURYBALL}, + {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_PREMIERBALL}, +}; + +const struct CompressedSpritePalette gBallParticlePalettes[] = +{ + {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_POKEBALL}, + {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_GREATBALL}, + {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_SAFARIBALL}, + {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_ULTRABALL}, + {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_MASTERBALL}, + {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_NETBALL}, + {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_DIVEBALL}, + {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_NESTBALL}, + {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_REPEATBALL}, + {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_TIMERBALL}, + {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_LUXURYBALL}, + {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_PREMIERBALL}, +}; + +static const union AnimCmd sAnim_RegularBall[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(0, 1, .hFlip = TRUE), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_MasterBall[] = +{ + ANIMCMD_FRAME(3, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_NetDiveBall[] = +{ + ANIMCMD_FRAME(4, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_NestBall[] = +{ + ANIMCMD_FRAME(5, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_LuxuryPremierBall[] = +{ + ANIMCMD_FRAME(6, 4), + ANIMCMD_FRAME(7, 4), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_UltraRepeatTimerBall[] = +{ + ANIMCMD_FRAME(7, 4), + ANIMCMD_END, +}; + +static const union AnimCmd *const sAnims_BallParticles[] = +{ + sAnim_RegularBall, + sAnim_MasterBall, + sAnim_NetDiveBall, + sAnim_NestBall, + sAnim_LuxuryPremierBall, + sAnim_UltraRepeatTimerBall, +}; + +static const u8 sBallParticleAnimNums[] = +{ + [BALL_POKE] = 0, + [BALL_GREAT] = 0, + [BALL_SAFARI] = 0, + [BALL_ULTRA] = 5, + [BALL_MASTER] = 1, + [BALL_NET] = 2, + [BALL_DIVE] = 2, + [BALL_NEST] = 3, + [BALL_REPEAT] = 5, + [BALL_TIMER] = 5, + [BALL_LUXURY] = 4, + [BALL_PREMIER] = 4, +}; + +static const TaskFunc sBallParticleAnimationFuncs[] = +{ + PokeBallOpenParticleAnimation, + GreatBallOpenParticleAnimation, + SafariBallOpenParticleAnimation, + UltraBallOpenParticleAnimation, + MasterBallOpenParticleAnimation, + SafariBallOpenParticleAnimation, + DiveBallOpenParticleAnimation, + UltraBallOpenParticleAnimation, + RepeatBallOpenParticleAnimation, + TimerBallOpenParticleAnimation, + GreatBallOpenParticleAnimation, + PremierBallOpenParticleAnimation, +}; + +static const struct SpriteTemplate sBallParticlesSpriteTemplates[] = +{ + { + .tileTag = TAG_PARTICLES_POKEBALL, + .paletteTag = TAG_PARTICLES_POKEBALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = sAnims_BallParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = TAG_PARTICLES_GREATBALL, + .paletteTag = TAG_PARTICLES_GREATBALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = sAnims_BallParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = TAG_PARTICLES_SAFARIBALL, + .paletteTag = TAG_PARTICLES_SAFARIBALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = sAnims_BallParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = TAG_PARTICLES_ULTRABALL, + .paletteTag = TAG_PARTICLES_ULTRABALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = sAnims_BallParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = TAG_PARTICLES_MASTERBALL, + .paletteTag = TAG_PARTICLES_MASTERBALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = sAnims_BallParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = TAG_PARTICLES_NETBALL, + .paletteTag = TAG_PARTICLES_NETBALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = sAnims_BallParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = TAG_PARTICLES_DIVEBALL, + .paletteTag = TAG_PARTICLES_DIVEBALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = sAnims_BallParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = TAG_PARTICLES_NESTBALL, + .paletteTag = TAG_PARTICLES_NESTBALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = sAnims_BallParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = TAG_PARTICLES_REPEATBALL, + .paletteTag = TAG_PARTICLES_REPEATBALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = sAnims_BallParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = TAG_PARTICLES_TIMERBALL, + .paletteTag = TAG_PARTICLES_TIMERBALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = sAnims_BallParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = TAG_PARTICLES_LUXURYBALL, + .paletteTag = TAG_PARTICLES_LUXURYBALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = sAnims_BallParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = TAG_PARTICLES_PREMIERBALL, + .paletteTag = TAG_PARTICLES_PREMIERBALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = sAnims_BallParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, +}; + +static const u16 sBallOpenFadeColors[] = +{ + [BALL_POKE] = RGB(31, 22, 30), + [BALL_GREAT] = RGB(16, 23, 30), + [BALL_SAFARI] = RGB(23, 30, 20), + [BALL_ULTRA] = RGB(31, 31, 15), + [BALL_MASTER] = RGB(23, 20, 28), + [BALL_NET] = RGB(21, 31, 25), + [BALL_DIVE] = RGB(12, 25, 30), + [BALL_NEST] = RGB(30, 27, 10), + [BALL_REPEAT] = RGB(31, 24, 16), + [BALL_TIMER] = RGB(29, 30, 30), + [BALL_LUXURY] = RGB(31, 17, 10), + [BALL_PREMIER] = RGB(31, 9, 10), + + // Unused + RGB_BLACK, + RGB(1, 16, 0), + RGB(3, 0, 1), + RGB(1, 8, 0), + RGB(0, 8, 0), + RGB(3, 8, 1), + RGB(6, 8, 1), + RGB(4, 0, 0), +}; + +const struct SpriteTemplate gPokeblockSpriteTemplate = +{ + .tileTag = ANIM_TAG_POKEBLOCK, + .paletteTag = ANIM_TAG_POKEBLOCK, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80F1B3C, +}; + +static const union AnimCmd sUnknown_840C204[] = +{ + ANIMCMD_FRAME(64, 1), + ANIMCMD_END, +}; + +static const union AnimCmd *const sSpriteAnimTable_840C20C[] = +{ + sUnknown_840C204, +}; + +const struct SpriteTemplate gUnknown_840C210 = +{ + .tileTag = ANIM_TAG_ROCKS, + .paletteTag = ANIM_TAG_ROCKS, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sSpriteAnimTable_840C20C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80F1B3C, +}; + +// Functions +void sub_80EEC0C(u8 taskId) +{ + struct BattleAnimBgData unknownStruct; + u8 healthBoxSpriteId; + u8 battler; + u8 spriteId1, spriteId2, spriteId3, spriteId4; + + battler = gBattleAnimAttacker; + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON); + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16)); + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 0); + SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0); + SetAnimBgAttribute(1, BG_ANIM_AREA_OVERFLOW_MODE, 1); + SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1); + healthBoxSpriteId = gHealthboxSpriteIds[battler]; + spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam; + spriteId2 = gSprites[healthBoxSpriteId].data[5]; + spriteId3 = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy); + spriteId4 = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy); + gSprites[healthBoxSpriteId].oam.priority = 1; + gSprites[spriteId1].oam.priority = 1; + gSprites[spriteId2].oam.priority = 1; + gSprites[spriteId3] = gSprites[healthBoxSpriteId]; + gSprites[spriteId4] = gSprites[spriteId1]; + gSprites[spriteId3].oam.objMode = ST_OAM_OBJ_WINDOW; + gSprites[spriteId4].oam.objMode = ST_OAM_OBJ_WINDOW; + gSprites[spriteId3].callback = SpriteCallbackDummy; + gSprites[spriteId4].callback = SpriteCallbackDummy; + sub_80752A0(&unknownStruct); + AnimLoadCompressedBgTilemap(unknownStruct.bgId, gUnknown_D2EC24_Tilemap); + AnimLoadCompressedBgGfx(unknownStruct.bgId, gUnknown_D2EC24_Gfx, unknownStruct.tilesOffset); + LoadCompressedPalette(gCureBubblesPal, unknownStruct.paletteId << 4, 32); + gBattle_BG1_X = -gSprites[spriteId3].pos1.x + 32; + gBattle_BG1_Y = -gSprites[spriteId3].pos1.y - 32; + gTasks[taskId].data[1] = 640; + gTasks[taskId].data[0] = spriteId3; + gTasks[taskId].data[2] = spriteId4; + gTasks[taskId].func = sub_80EEDF4; +} + +static void sub_80EEDF4(u8 taskId) +{ + u8 spriteId1, spriteId2; + u8 battler; + + battler = gBattleAnimAttacker; + gTasks[taskId].data[13] += gTasks[taskId].data[1]; + gBattle_BG1_Y += (u16)gTasks[taskId].data[13] >> 8; + gTasks[taskId].data[13] &= 0xFF; + + switch (gTasks[taskId].data[15]) + { + case 0: + if (gTasks[taskId].data[11]++ > 1) + { + gTasks[taskId].data[11] = 0; + gTasks[taskId].data[12]++; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12])); + if (gTasks[taskId].data[12] == 8) + gTasks[taskId].data[15]++; + } + break; + case 1: + if (++gTasks[taskId].data[10] == 30) + gTasks[taskId].data[15]++; + break; + case 2: + if (gTasks[taskId].data[11]++ > 1) + { + gTasks[taskId].data[11] = 0; + gTasks[taskId].data[12]--; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12])); + if (gTasks[taskId].data[12] == 0) + { + sub_8073128(0); + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR); + if (!IsContest()) + SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0); + + SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) ^ DISPCNT_OBJWIN_ON); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0)); + DestroySprite(&gSprites[gTasks[taskId].data[0]]); + DestroySprite(&gSprites[gTasks[taskId].data[2]]); + SetAnimBgAttribute(1, BG_ANIM_AREA_OVERFLOW_MODE, 0); + spriteId1 = gSprites[gHealthboxSpriteIds[battler]].oam.affineParam; + spriteId2 = gSprites[gHealthboxSpriteIds[battler]].data[5]; + gSprites[gHealthboxSpriteIds[battler]].oam.priority = 1; + gSprites[spriteId1].oam.priority = 1; + gSprites[spriteId2].oam.priority = 1; + DestroyAnimVisualTask(taskId); + } + } + break; + } +} + +void sub_80EEFC8(u8 *paletteId1, u8 *paletteId2, u8 battler) +{ + u8 healthBoxSpriteId; + u8 spriteId1, spriteId2; + u16 offset1, offset2; + + healthBoxSpriteId = gHealthboxSpriteIds[battler]; + spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam; + spriteId2 = gSprites[healthBoxSpriteId].data[5]; + *paletteId1 = AllocSpritePalette(0xD709); + *paletteId2 = AllocSpritePalette(0xD70A); + offset1 = (gSprites[healthBoxSpriteId].oam.paletteNum * 16) + 0x100; + offset2 = (gSprites[spriteId2].oam.paletteNum * 16) + 0x100; + LoadPalette(&gPlttBufferUnfaded[offset1], *paletteId1 * 16 + 0x100, 0x20); + LoadPalette(&gPlttBufferUnfaded[offset2], *paletteId2 * 16 + 0x100, 0x20); + gSprites[healthBoxSpriteId].oam.paletteNum = *paletteId1; + gSprites[spriteId1].oam.paletteNum = *paletteId1; + gSprites[spriteId2].oam.paletteNum = *paletteId2; +} + +void sub_80EF0B4(u8 taskId) +{ + u8 paletteId1, paletteId2; + + sub_80EEFC8(&paletteId1, &paletteId2, gBattleAnimAttacker); + DestroyAnimVisualTask(taskId); +} + +void sub_80EF0E0(u8 battler) +{ + u8 healthBoxSpriteId; + u8 spriteId1, spriteId2; + u8 paletteId1, paletteId2; + + healthBoxSpriteId = gHealthboxSpriteIds[battler]; + spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam; + spriteId2 = gSprites[healthBoxSpriteId].data[5]; + FreeSpritePaletteByTag(0xD709); + FreeSpritePaletteByTag(0xD70A); + paletteId1 = IndexOfSpritePaletteTag(0xD6FF); + paletteId2 = IndexOfSpritePaletteTag(0xD704); + gSprites[healthBoxSpriteId].oam.paletteNum = paletteId1; + gSprites[spriteId1].oam.paletteNum = paletteId1; + gSprites[spriteId2].oam.paletteNum = paletteId2; +} + +void sub_80EF180(u8 taskId) +{ + sub_80EF0E0(gBattleAnimAttacker); + DestroyAnimVisualTask(taskId); +} + +void sub_80EF1A0(u8 taskId) +{ + gTasks[taskId].data[10] = gBattleAnimArgs[0]; + gTasks[taskId].data[11] = gBattleAnimArgs[1]; + gTasks[taskId].func = sub_80EF1CC; +} + +static void sub_80EF1CC(u8 taskId) +{ + u8 paletteNum; + int paletteOffset, colorOffset; + + gTasks[taskId].data[0]++; + if (gTasks[taskId].data[0]++ >= gTasks[taskId].data[11]) + { + gTasks[taskId].data[0] = 0; + paletteNum = IndexOfSpritePaletteTag(0xD709); + colorOffset = gTasks[taskId].data[10] == 0 ? 6 : 2; + switch (gTasks[taskId].data[1]) + { + case 0: + gTasks[taskId].data[2] += 2; + if (gTasks[taskId].data[2] > 16) + gTasks[taskId].data[2] = 16; + + paletteOffset = paletteNum * 16 + 0x100; + BlendPalette(paletteOffset + colorOffset, 1, gTasks[taskId].data[2], RGB(20, 27, 31)); + if (gTasks[taskId].data[2] == 16) + gTasks[taskId].data[1]++; + break; + case 1: + gTasks[taskId].data[2] -= 2; + if (gTasks[taskId].data[2] < 0) + gTasks[taskId].data[2] = 0; + + paletteOffset = paletteNum * 16 + 0x100; + BlendPalette(paletteOffset + colorOffset, 1, gTasks[taskId].data[2], RGB(20, 27, 31)); + if (gTasks[taskId].data[2] == 0) + DestroyAnimVisualTask(taskId); + break; + } + } +} + +void sub_80EF298(u8 taskId) +{ + u8 spriteId; + + spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; + switch (gTasks[taskId].data[0]) + { + case 0: + PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL); + gTasks[taskId].data[10] = 0x100; + gTasks[taskId].data[0]++; + break; + case 1: + gTasks[taskId].data[10] += 0x30; + SetSpriteRotScale(spriteId, gTasks[taskId].data[10], gTasks[taskId].data[10], 0); + SetBattlerSpriteYOffsetFromYScale(spriteId); + if (gTasks[taskId].data[10] >= 0x2D0) + gTasks[taskId].data[0]++; + break; + case 2: + ResetSpriteRotScale(spriteId); + gSprites[spriteId].invisible = TRUE; + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_80EF344(u8 taskId) +{ + u8 spriteId; + u16 ball; + u8 ballId; + u8 x, y; + u8 priority, subpriority; + u32 selectedPalettes; + + spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + ball = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_POKEBALL); + else + ball = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_POKEBALL); + + ballId = ItemIdToBallId(ball); + switch (gTasks[taskId].data[0]) + { + case 0: + x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y); + priority = gSprites[spriteId].oam.priority; + subpriority = gSprites[spriteId].subpriority; + gTasks[taskId].data[10] = LaunchBallStarsTask(x, y + 32, priority, subpriority, ballId); + selectedPalettes = sub_8075BE8(1, 0, 0, 0, 0, 0, 0); + gTasks[taskId].data[11] = LaunchBallFadeMonTask(0, gBattleAnimAttacker, selectedPalettes, ballId); + gTasks[taskId].data[0]++; + break; + case 1: + if (!gTasks[gTasks[taskId].data[10]].isActive && !gTasks[gTasks[taskId].data[11]].isActive) + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_80EF490(u8 taskId) +{ + u8 ballId = ItemIdToBallId(gLastUsedItem); + + LoadBallGfx(ballId); + DestroyAnimVisualTask(taskId); +} + +void sub_80EF4B8(u8 taskId) +{ + u8 ballId = ItemIdToBallId(gLastUsedItem); + + FreeBallGfx(ballId); + DestroyAnimVisualTask(taskId); +} + +void AnimTask_IsBallBlockedByTrainerOrDodged(u8 taskId) +{ + switch (gBattleSpritesDataPtr->animationData->ballThrowCaseId) + { + case BALL_TRAINER_BLOCK: + gBattleAnimArgs[ARG_RET_ID] = -1; + break; + case BALL_GHOST_DODGE: + gBattleAnimArgs[ARG_RET_ID] = -2; + break; + default: + gBattleAnimArgs[ARG_RET_ID] = 0; + break; + } + + DestroyAnimVisualTask(taskId); +} + +u8 ItemIdToBallId(u16 ballItem) +{ + switch (ballItem) + { + case ITEM_MASTER_BALL: + return BALL_MASTER; + case ITEM_ULTRA_BALL: + return BALL_ULTRA; + case ITEM_GREAT_BALL: + return BALL_GREAT; + case ITEM_SAFARI_BALL: + return BALL_SAFARI; + case ITEM_NET_BALL: + return BALL_NET; + case ITEM_DIVE_BALL: + return BALL_DIVE; + case ITEM_NEST_BALL: + return BALL_NEST; + case ITEM_REPEAT_BALL: + return BALL_REPEAT; + case ITEM_TIMER_BALL: + return BALL_TIMER; + case ITEM_LUXURY_BALL: + return BALL_LUXURY; + case ITEM_PREMIER_BALL: + return BALL_PREMIER; + case ITEM_POKE_BALL: + default: + return BALL_POKE; + } +} + +void sub_80EF5AC(u8 taskId) +{ + u8 ballId; + u8 spriteId; + + ballId = ItemIdToBallId(gLastUsedItem); + spriteId = CreateSprite(&gBallSpriteTemplates[ballId], 32, 80, 29); + gSprites[spriteId].data[0] = 34; + gSprites[spriteId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) - 16; + gSprites[spriteId].callback = sub_80EF8C0; + gBattleSpritesDataPtr->animationData->field_9_x2 = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible; + gTasks[taskId].data[0] = spriteId; + gTasks[taskId].func = sub_80EF698; +} + +static void sub_80EF698(u8 taskId) +{ + u8 spriteId = gTasks[taskId].data[0]; + + if ((u16)gSprites[spriteId].data[0] == 0xFFFF) + DestroyAnimVisualTask(taskId); +} + +void sub_80EF6D4(u8 taskId) +{ + int x, y; + u8 ballId; + u8 subpriority; + u8 spriteId; + + if (gBattleTypeFlags & BATTLE_TYPE_OLD_MAN_TUTORIAL) + { + x = 28; + y = 11; + } + else + { + x = 23; + y = 11; + if (gSaveBlock2Ptr->playerGender == FEMALE) + y = 13; + } + + ballId = ItemIdToBallId(gLastUsedItem); + subpriority = GetBattlerSpriteSubpriority(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)) + 1; + spriteId = CreateSprite(&gBallSpriteTemplates[ballId], x | 32, y | 80, subpriority); + gSprites[spriteId].data[0] = 34; + gSprites[spriteId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) - 16; + gSprites[spriteId].callback = SpriteCallbackDummy; + gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].callback = sub_8012354; + gTasks[taskId].data[0] = spriteId; + gTasks[taskId].func = sub_80EF7EC; +} + +static void sub_80EF7EC(u8 taskId) +{ + if (gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].animCmdIndex == 1) + { + PlaySE12WithPanning(SE_NAGERU, 0); + gSprites[gTasks[taskId].data[0]].callback = sub_80EF8C0; + CreateTask(sub_80EF864, 10); + gTasks[taskId].func = sub_80EF698; + } +} + +static void sub_80EF864(u8 taskId) +{ + if (gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].animEnded) + { + StartSpriteAnim(&gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]], 0); + DestroyTask(taskId); + } +} + +static void sub_80EF8C0(struct Sprite *sprite) +{ + u16 temp = sprite->data[1]; + u16 temp2 = sprite->data[2]; + + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = temp; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = temp2; + sprite->data[5] = -40; + InitAnimArcTranslation(sprite); + sprite->callback = sub_80EF8F0; +} + +static void sub_80EF8F0(struct Sprite *sprite) +{ + int i; + u8 ballId; + + if (TranslateAnimHorizontalArc(sprite)) + { + if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_TRAINER_BLOCK) + { + sprite->callback = sub_80F0478; + } + else if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_GHOST_DODGE) + { + sprite->callback = GhostBallDodge; + } + else + { + StartSpriteAnim(sprite, 1); + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + + for (i = 0; i < 8; i++) + sprite->data[i] = 0; + + sprite->data[5] = 0; + sprite->callback = sub_80EF9B4; + + ballId = ItemIdToBallId(gLastUsedItem); + switch (ballId) + { + case 0 ... POKEBALL_COUNT - 1: + LaunchBallStarsTask(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballId); + LaunchBallFadeMonTask(0, gBattleAnimTarget, 14, ballId); + break; + } + } + } +} + +static void sub_80EF9B4(struct Sprite *sprite) +{ + if (++sprite->data[5] == 10) + { + sprite->data[5] = CreateTask(TaskDummy, 50); + sprite->callback = sub_80EFA0C; + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] = 0; + } +} + +static void sub_80EFA0C(struct Sprite *sprite) +{ + u8 spriteId; + u8 taskId; + + spriteId = gBattlerSpriteIds[gBattleAnimTarget]; + taskId = sprite->data[5]; + if (++gTasks[taskId].data[1] == 11) + PlaySE(SE_SUIKOMU); + + switch (gTasks[taskId].data[0]) + { + case 0: + PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL); + gTasks[taskId].data[10] = 256; + sUnknown_3005424 = 28; + sUnknown_300542C = (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) - (sprite->pos1.y + sprite->pos2.y); + sUnknown_3005428 = (u32)(sUnknown_300542C * 256) / 28; + gTasks[taskId].data[2] = sUnknown_3005428; + gTasks[taskId].data[0]++; + break; + case 1: + gTasks[taskId].data[10] += 0x20; + SetSpriteRotScale(spriteId, gTasks[taskId].data[10], gTasks[taskId].data[10], 0); + gTasks[taskId].data[3] += gTasks[taskId].data[2]; + gSprites[spriteId].pos2.y = -gTasks[taskId].data[3] >> 8; + if (gTasks[taskId].data[10] >= 0x480) + gTasks[taskId].data[0]++; + break; + case 2: + ResetSpriteRotScale(spriteId); + gSprites[spriteId].invisible = TRUE; + gTasks[taskId].data[0]++; + break; + default: + if (gTasks[taskId].data[1] > 10) + { + DestroyTask(taskId); + StartSpriteAnim(sprite, 2); + sprite->data[5] = 0; + sprite->callback = sub_80EFB58; + } + break; + } +} + +static void sub_80EFB58(struct Sprite *sprite) +{ + int angle; + + if (sprite->animEnded) + { + sprite->data[3] = 0; + sprite->data[4] = 40; + sprite->data[5] = 0; + angle = 0; + sprite->pos1.y += Cos(angle, 40); + sprite->pos2.y = -Cos(angle, sprite->data[4]); + sprite->callback = sub_80EFB9C; + } +} + +static void sub_80EFB9C(struct Sprite *sprite) +{ + bool8 lastBounce; + int bounceCount; + + lastBounce = FALSE; + switch (sprite->data[3] & 0xFF) + { + case 0: + sprite->pos2.y = -Cos(sprite->data[5], sprite->data[4]); + sprite->data[5] += (sprite->data[3] >> 8) + 4; + if (sprite->data[5] >= 64) + { + sprite->data[4] -= 10; + sprite->data[3] += 257; + + bounceCount = sprite->data[3] >> 8; + if (bounceCount == 4) + lastBounce = TRUE; + + // Play a different sound effect for each pokeball bounce. + switch (bounceCount) + { + case 1: + PlaySE(SE_KON); + break; + case 2: + PlaySE(SE_KON2); + break; + case 3: + PlaySE(SE_KON3); + break; + default: + PlaySE(SE_KON4); + break; + } + } + break; + case 1: + sprite->pos2.y = -Cos(sprite->data[5], sprite->data[4]); + sprite->data[5] -= (sprite->data[3] >> 8) + 4; + if (sprite->data[5] <= 0) + { + sprite->data[5] = 0; + sprite->data[3] &= -0x100; + } + break; + } + + if (lastBounce) + { + sprite->data[3] = 0; + sprite->pos1.y += Cos(64, 40); + sprite->pos2.y = 0; + if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_NO_SHAKES) + { + sprite->data[5] = 0; + sprite->callback = sub_80EFF80; + } + else + { + sprite->callback = sub_80EFCA0; + sprite->data[4] = 1; + sprite->data[5] = 0; + } + } +} + +static void sub_80EFCA0(struct Sprite *sprite) +{ + if (++sprite->data[3] == 31) + { + sprite->data[3] = 0; + sprite->affineAnimPaused = TRUE; + StartSpriteAffineAnim(sprite, 1); + gBattleSpritesDataPtr->animationData->field_C = 0; + sprite->callback = sub_80EFCEC; + PlaySE(SE_BOWA); + } +} + +static void sub_80EFCEC(struct Sprite *sprite) +{ + s8 state; + u16 var0; + + switch (sprite->data[3] & 0xFF) + { + case 0: + if (gBattleSpritesDataPtr->animationData->field_C > 0xFF) + { + sprite->pos2.x += sprite->data[4]; + gBattleSpritesDataPtr->animationData->field_C &= 0xFF; + } + else + { + gBattleSpritesDataPtr->animationData->field_C += 0xB0; + } + + sprite->data[5]++; + sprite->affineAnimPaused = FALSE; + var0 = sprite->data[5] + 7; + if (var0 > 14) + { + gBattleSpritesDataPtr->animationData->field_C = 0; + sprite->data[3]++; + sprite->data[5] = 0; + } + break; + case 1: + if (++sprite->data[5] == 1) + { + sprite->data[5] = 0; + sprite->data[4] = -sprite->data[4]; + sprite->data[3]++; + sprite->affineAnimPaused = FALSE; + if (sprite->data[4] < 0) + ChangeSpriteAffineAnim(sprite, 2); + else + ChangeSpriteAffineAnim(sprite, 1); + } + else + { + sprite->affineAnimPaused = TRUE; + } + break; + case 2: + if (gBattleSpritesDataPtr->animationData->field_C > 0xFF) + { + sprite->pos2.x += sprite->data[4]; + gBattleSpritesDataPtr->animationData->field_C &= 0xFF; + } + else + { + gBattleSpritesDataPtr->animationData->field_C += 0xB0; + } + + sprite->data[5]++; + sprite->affineAnimPaused = FALSE; + var0 = sprite->data[5] + 12; + if (var0 > 24) + { + gBattleSpritesDataPtr->animationData->field_C = 0; + sprite->data[3]++; + sprite->data[5] = 0; + } + break; + case 3: + if (sprite->data[5]++ < 0) + { + sprite->affineAnimPaused = TRUE; + break; + } + + sprite->data[5] = 0; + sprite->data[4] = -sprite->data[4]; + sprite->data[3]++; + sprite->affineAnimPaused = FALSE; + if (sprite->data[4] < 0) + ChangeSpriteAffineAnim(sprite, 2); + else + ChangeSpriteAffineAnim(sprite, 1); + // fall through + case 4: + if (gBattleSpritesDataPtr->animationData->field_C > 0xFF) + { + sprite->pos2.x += sprite->data[4]; + gBattleSpritesDataPtr->animationData->field_C &= 0xFF; + } + else + { + gBattleSpritesDataPtr->animationData->field_C += 0xB0; + } + + sprite->data[5]++; + sprite->affineAnimPaused = FALSE; + var0 = sprite->data[5] + 4; + if (var0 > 8) + { + gBattleSpritesDataPtr->animationData->field_C = 0; + sprite->data[3]++; + sprite->data[5] = 0; + sprite->data[4] = -sprite->data[4]; + } + break; + case 5: + sprite->data[3] += 0x100; + state = sprite->data[3] >> 8; + if (state == gBattleSpritesDataPtr->animationData->ballThrowCaseId) + { + sprite->affineAnimPaused = TRUE; + sprite->callback = sub_80EFF80; + } + else + { + if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_3_SHAKES_SUCCESS && state == 3) + { + sprite->callback = sub_80EFFA4; + sprite->affineAnimPaused = TRUE; + } + else + { + sprite->data[3]++; + sprite->affineAnimPaused = TRUE; + } + } + break; + case 6: + default: + if (++sprite->data[5] == 31) + { + sprite->data[5] = 0; + sprite->data[3] &= -0x100; + StartSpriteAffineAnim(sprite, 3); + if (sprite->data[4] < 0) + StartSpriteAffineAnim(sprite, 2); + else + StartSpriteAffineAnim(sprite, 1); + + PlaySE(SE_BOWA); + } + break; + } +} + +static void sub_80EFF80(struct Sprite *sprite) +{ + if (++sprite->data[5] == 31) + { + sprite->data[5] = 0; + sprite->callback = sub_80F02B0; + } +} + +static void sub_80EFFA4(struct Sprite *sprite) +{ + sprite->animPaused = TRUE; + sprite->callback = sub_80EFFC4; + sprite->data[3] = 0; + sprite->data[4] = 0; + sprite->data[5] = 0; +} + +static void sub_80EFFC4(struct Sprite *sprite) +{ + u8 *battler = &gBattleAnimTarget; + + sprite->data[4]++; + if (sprite->data[4] == 40) + { + PlaySE(SE_GETTING); + BlendPalettes(0x10000 << sprite->oam.paletteNum, 6, RGB_BLACK); + sub_80F01B8(sprite); + } + else if (sprite->data[4] == 60) + { + BeginNormalPaletteFade(0x10000 << sprite->oam.paletteNum, 2, 6, 0, RGB_BLACK); + } + else if (sprite->data[4] == 95) + { + gDoingBattleAnim = FALSE; + UpdateOamPriorityInAllHealthboxes(1); + m4aMPlayAllStop(); + PlaySE(MUS_FAN6); + } + else if (sprite->data[4] == 315) + { + FreeOamMatrix(gSprites[gBattlerSpriteIds[*battler]].oam.matrixNum); + DestroySprite(&gSprites[gBattlerSpriteIds[*battler]]); + sprite->data[0] = 0; + sprite->callback = sub_80F00A4; + } +} + +static void sub_80F00A4(struct Sprite *sprite) +{ + u8 paletteIndex; + + switch (sprite->data[0]) + { + case 0: + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->oam.objMode = ST_OAM_OBJ_BLEND; + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0)); + paletteIndex = IndexOfSpritePaletteTag(sprite->template->paletteTag); + BeginNormalPaletteFade(1 << (paletteIndex + 0x10), 0, 0, 16, RGB_WHITE); + sprite->data[0]++; + break; + case 1: + if (sprite->data[1]++ > 0) + { + sprite->data[1] = 0; + sprite->data[2]++; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - sprite->data[2], sprite->data[2])); + if (sprite->data[2] == 16) + sprite->data[0]++; + } + break; + case 2: + sprite->invisible = TRUE; + sprite->data[0]++; + break; + default: + if (!gPaletteFade.active) + { + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + sprite->data[0] = 0; + sprite->callback = sub_80F018C; + } + break; + } +} + +static void sub_80F018C(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + { + sprite->data[0] = -1; + } + else + { + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + } +} + +static void sub_80F01B8(struct Sprite *sprite) +{ + u32 i; + u8 subpriority; + + if (sprite->subpriority) + { + subpriority = sprite->subpriority - 1; + } + else + { + subpriority = 0; + sprite->subpriority = 1; + } + + sub_80F05B4(4); + for (i = 0; i < 3; i++) + { + u8 spriteId = CreateSprite(&sBallParticlesSpriteTemplates[4], sprite->pos1.x, sprite->pos1.y, subpriority); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].data[0] = 24; + gSprites[spriteId].data[2] = sprite->pos1.x + sBallCaptureSuccessStarData[i].xOffset; + gSprites[spriteId].data[4] = sprite->pos1.y + sBallCaptureSuccessStarData[i].yOffset; + gSprites[spriteId].data[5] = sBallCaptureSuccessStarData[i].unk2; + InitAnimArcTranslation(&gSprites[spriteId]); + gSprites[spriteId].callback = sub_80F0278; + StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[4]); + } + } +} + +static void sub_80F0278(struct Sprite *sprite) +{ + sprite->invisible = !sprite->invisible; + if (TranslateAnimHorizontalArc(sprite)) + DestroySprite(sprite); +} + +static void sub_80F02B0(struct Sprite *sprite) +{ + u8 ballId; + + StartSpriteAnim(sprite, 1); + StartSpriteAffineAnim(sprite, 0); + sprite->callback = sub_80F0378; + ballId = ItemIdToBallId(gLastUsedItem); + switch (ballId) + { + case 0 ... POKEBALL_COUNT - 1: + LaunchBallStarsTask(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballId); + LaunchBallFadeMonTask(1, gBattleAnimTarget, 14, ballId); + break; + } + + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = FALSE; + StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]], 1); + AnimateSprite(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]]); + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] = 0x1000; +} + +static void sub_80F0378(struct Sprite *sprite) +{ + bool32 next = FALSE; + + if (sprite->animEnded) + sprite->invisible = TRUE; + + if (gSprites[gBattlerSpriteIds[gBattleAnimTarget]].affineAnimEnded) + { + StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]], 0); + next = TRUE; + } + else + { + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] -= 288; + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].pos2.y = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] >> 8; + } + + if (sprite->animEnded && next) + { + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].pos2.y = 0; + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = gBattleSpritesDataPtr->animationData->field_9_x2; + sprite->data[0] = 0; + sprite->callback = sub_80F018C; + gDoingBattleAnim = FALSE; + UpdateOamPriorityInAllHealthboxes(1); + } +} + +static void sub_80F0478(struct Sprite *sprite) +{ + int i; + + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = sprite->pos2.y = 0; + for (i = 0; i < 6; i++) + sprite->data[i] = 0; + + sprite->callback = sub_80F04B4; +} + +static void sub_80F04B4(struct Sprite *sprite) +{ + s16 var0 = sprite->data[0] + 0x800; + s16 var1 = sprite->data[1] + 0x680; + + sprite->pos2.x -= var1 >> 8; + sprite->pos2.y += var0 >> 8; + sprite->data[0] = (sprite->data[0] + 0x800) & 0xFF; + sprite->data[1] = (sprite->data[1] + 0x680) & 0xFF; + if (sprite->pos1.y + sprite->pos2.y > 160 + || sprite->pos1.x + sprite->pos2.x < -8) + { + sprite->data[0] = 0; + sprite->callback = sub_80F018C; + gDoingBattleAnim = FALSE; + UpdateOamPriorityInAllHealthboxes(1); + } +} + +static void GhostBallDodge(struct Sprite *sprite) +{ + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = sprite->pos2.y = 0; + sprite->data[0] = 0x22; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sprite->pos1.x - 8; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = 0x90; + sprite->data[5] = 0x20; + InitAnimArcTranslation(sprite); + TranslateAnimVerticalArc(sprite); + sprite->callback = sub_80F0574; +} + +static void sub_80F0574(struct Sprite *sprite) +{ + if (!TranslateAnimVerticalArc(sprite)) + { + if ((sprite->pos1.y + sprite->pos2.y) < 65) + return; + } + + sprite->data[0] = 0; + sprite->callback = sub_80F018C; + gDoingBattleAnim = FALSE; + UpdateOamPriorityInAllHealthboxes(1); +} + +static void sub_80F05B4(u8 ballId) +{ + u8 taskId; + + if (GetSpriteTileStartByTag(gBallParticleSpritesheets[ballId].tag) == 0xFFFF) + { + LoadCompressedSpriteSheetUsingHeap(&gBallParticleSpritesheets[ballId]); + LoadCompressedSpritePaletteUsingHeap(&gBallParticlePalettes[ballId]); + } +} + +u8 LaunchBallStarsTask(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId) +{ + u8 taskId; + + sub_80F05B4(ballId); + taskId = CreateTask(sBallParticleAnimationFuncs[ballId], 5); + gTasks[taskId].data[1] = x; + gTasks[taskId].data[2] = y; + gTasks[taskId].data[3] = priority; + gTasks[taskId].data[4] = subpriority; + gTasks[taskId].data[15] = ballId; + PlaySE(SE_BOWA2); + return taskId; +} + +void sub_80F0674(void) +{ + if (gMain.inBattle) + gBattleSpritesDataPtr->animationData->field_A++; +} + +static void PokeBallOpenParticleAnimation(u8 taskId) +{ + u8 spriteId; + u8 x, y; + u8 priority, subpriority; + u8 ballId; + u8 var0; + + ballId = gTasks[taskId].data[15]; + if (gTasks[taskId].data[0] < 16) + { + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_80F0674(); + StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]); + gSprites[spriteId].callback = PokeBallOpenParticleAnimation_Step1; + gSprites[spriteId].oam.priority = priority; + + var0 = (u8)gTasks[taskId].data[0]; + if (var0 >= 8) + var0 -= 8; + + gSprites[spriteId].data[0] = var0 * 32; + } + + if (gTasks[taskId].data[0] == 15) + { + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); + return; + } + } + + gTasks[taskId].data[0]++; +} + +static void PokeBallOpenParticleAnimation_Step1(struct Sprite *sprite) +{ + if (sprite->data[1] == 0) + sprite->callback = PokeBallOpenParticleAnimation_Step2; + else + sprite->data[1]--; +} + +static void PokeBallOpenParticleAnimation_Step2(struct Sprite *sprite) +{ + sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); + sprite->pos2.y = Cos(sprite->data[0], sprite->data[1]); + sprite->data[1] += 2; + if (sprite->data[1] == 50) + DestroyBallOpenAnimationParticle(sprite); +} + +static void TimerBallOpenParticleAnimation(u8 taskId) +{ + u8 i; + u8 x, y, priority, subpriority, ballId; + u8 spriteId; + + ballId = gTasks[taskId].data[15]; + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + for (i = 0; i < 8; i++) + { + spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_80F0674(); + StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]); + gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].data[0] = i * 32; + gSprites[spriteId].data[4] = 10; + gSprites[spriteId].data[5] = 2; + gSprites[spriteId].data[6] = 1; + } + } + + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); +} + +static void DiveBallOpenParticleAnimation(u8 taskId) +{ + u8 i; + u8 x, y, priority, subpriority, ballId; + u8 spriteId; + + ballId = gTasks[taskId].data[15]; + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + for (i = 0; i < 8; i++) + { + spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_80F0674(); + StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]); + gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].data[0] = i * 32; + gSprites[spriteId].data[4] = 10; + gSprites[spriteId].data[5] = 1; + gSprites[spriteId].data[6] = 2; + } + } + + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); +} + +// Also used for Net Ball +static void SafariBallOpenParticleAnimation(u8 taskId) +{ + u8 i; + u8 x, y, priority, subpriority, ballId; + u8 spriteId; + + ballId = gTasks[taskId].data[15]; + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + for (i = 0; i < 8; i++) + { + spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_80F0674(); + StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]); + gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].data[0] = i * 32; + gSprites[spriteId].data[4] = 4; + gSprites[spriteId].data[5] = 1; + gSprites[spriteId].data[6] = 1; + } + } + + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); +} + +// Also used for Nest Ball +static void UltraBallOpenParticleAnimation(u8 taskId) +{ + u8 i; + u8 x, y, priority, subpriority, ballId; + u8 spriteId; + + ballId = gTasks[taskId].data[15]; + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + for (i = 0; i < 10; i++) + { + spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_80F0674(); + StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]); + gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].data[0] = i * 25; + gSprites[spriteId].data[4] = 5; + gSprites[spriteId].data[5] = 1; + gSprites[spriteId].data[6] = 1; + } + } + + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); +} + +// Also used for Luxury Ball +static void GreatBallOpenParticleAnimation(u8 taskId) +{ + u8 i; + u8 x, y, priority, subpriority, ballId; + u8 spriteId; + + if (gTasks[taskId].data[7]) + { + gTasks[taskId].data[7]--; + } + else + { + ballId = gTasks[taskId].data[15]; + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + for (i = 0; i < 8; i++) + { + spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_80F0674(); + StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]); + gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].data[0] = i * 32; + gSprites[spriteId].data[4] = 8; + gSprites[spriteId].data[5] = 2; + gSprites[spriteId].data[6] = 2; + } + } + + gTasks[taskId].data[7] = 8; + if (++gTasks[taskId].data[0] == 2) + { + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); + } + } +} + +static void FanOutBallOpenParticles_Step1(struct Sprite *sprite) +{ + sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); + sprite->pos2.y = Cos(sprite->data[0], sprite->data[2]); + sprite->data[0] = (sprite->data[0] + sprite->data[4]) & 0xFF; + sprite->data[1] += sprite->data[5]; + sprite->data[2] += sprite->data[6]; + if (++sprite->data[3] == 51) + DestroyBallOpenAnimationParticle(sprite); +} + +static void RepeatBallOpenParticleAnimation(u8 taskId) +{ + u8 i; + u8 x, y, priority, subpriority, ballId; + u8 spriteId; + + ballId = gTasks[taskId].data[15]; + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + for (i = 0; i < POKEBALL_COUNT; i++) + { + spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_80F0674(); + StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]); + gSprites[spriteId].callback = RepeatBallOpenParticleAnimation_Step1; + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].data[0] = i * 21; + } + } + + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); +} + +static void RepeatBallOpenParticleAnimation_Step1(struct Sprite *sprite) +{ + sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); + sprite->pos2.y = Cos(sprite->data[0], Sin(sprite->data[0], sprite->data[2])); + sprite->data[0] = (sprite->data[0] + 6) & 0xFF; + sprite->data[1]++; + sprite->data[2]++; + if (++sprite->data[3] == 51) + DestroyBallOpenAnimationParticle(sprite); +} + +static void MasterBallOpenParticleAnimation(u8 taskId) +{ + u8 i, j; + u8 x, y, priority, subpriority, ballId; + u8 spriteId; + + ballId = gTasks[taskId].data[15]; + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + for (j = 0; j < 2; j++) + { + for (i = 0; i < 8; i++) + { + spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_80F0674(); + StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]); + gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].data[0] = i * 32; + gSprites[spriteId].data[4] = 8; + + if (j == 0) + { + gSprites[spriteId].data[5] = 2; + gSprites[spriteId].data[6] = 1; + } + else + { + gSprites[spriteId].data[5] = 1; + gSprites[spriteId].data[6] = 2; + } + } + } + } + + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); +} + +static void PremierBallOpenParticleAnimation(u8 taskId) +{ + u8 i; + u8 x, y, priority, subpriority, ballId; + u8 spriteId; + + ballId = gTasks[taskId].data[15]; + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + for (i = 0; i < 8; i++) + { + spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_80F0674(); + StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]); + gSprites[spriteId].callback = PremierBallOpenParticleAnimation_Step1; + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].data[0] = i * 32; + } + } + + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); +} + +static void PremierBallOpenParticleAnimation_Step1(struct Sprite *sprite) +{ + sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); + sprite->pos2.y = Cos(sprite->data[0], Sin(sprite->data[0] & 0x3F, sprite->data[2])); + sprite->data[0] = (sprite->data[0] + 10) & 0xFF; + sprite->data[1]++; + sprite->data[2]++; + if (++sprite->data[3] == 51) + DestroyBallOpenAnimationParticle(sprite); +} + +static void DestroyBallOpenAnimationParticle(struct Sprite *sprite) +{ + int i, j; + + if (!gMain.inBattle) + { + if (sprite->data[7] == 1) + DestroySpriteAndFreeResources(sprite); + else + DestroySprite(sprite); + } + else + { + gBattleSpritesDataPtr->animationData->field_A--; + if (gBattleSpritesDataPtr->animationData->field_A == 0) + { + for (j = 0; j < POKEBALL_COUNT; j++) + { + FreeSpriteTilesByTag(gBallParticleSpritesheets[j].tag); + FreeSpritePaletteByTag(gBallParticlePalettes[j].tag); + } + + DestroySprite(sprite); + } + else + { + DestroySprite(sprite); + } + } +} + +u8 LaunchBallFadeMonTask(bool8 unfadeLater, u8 battler, u32 selectedPalettes, u8 ballId) +{ + u8 taskId; + + taskId = CreateTask(sub_80F12E0, 5); + gTasks[taskId].data[15] = ballId; + gTasks[taskId].data[3] = battler; + gTasks[taskId].data[10] = selectedPalettes; + gTasks[taskId].data[11] = selectedPalettes >> 16; + + if (!unfadeLater) + { + BlendPalette(battler * 16 + 0x100, 16, 0, sBallOpenFadeColors[ballId]); + gTasks[taskId].data[1] = 1; + } + else + { + BlendPalette(battler * 16 + 0x100, 16, 16, sBallOpenFadeColors[ballId]); + gTasks[taskId].data[0] = 16; + gTasks[taskId].data[1] = -1; + gTasks[taskId].func = sub_80F1370; + } + + BeginNormalPaletteFade(selectedPalettes, 0, 0, 16, RGB_WHITE); + return taskId; +} + +static void sub_80F12E0(u8 taskId) +{ + u8 ballId = gTasks[taskId].data[15]; + + if (gTasks[taskId].data[2] <= 16) + { + BlendPalette(gTasks[taskId].data[3] * 16 + 0x100, 16, gTasks[taskId].data[0], sBallOpenFadeColors[ballId]); + gTasks[taskId].data[0] += gTasks[taskId].data[1]; + gTasks[taskId].data[2]++; + } + else if (!gPaletteFade.active) + { + u32 selectedPalettes = (u16)gTasks[taskId].data[10] | ((u16)gTasks[taskId].data[11] << 16); + BeginNormalPaletteFade(selectedPalettes, 0, 16, 0, RGB_WHITE); + DestroyTask(taskId); + } +} + +static void sub_80F1370(u8 taskId) +{ + if (!gPaletteFade.active) + { + u32 selectedPalettes = (u16)gTasks[taskId].data[10] | ((u16)gTasks[taskId].data[11] << 16); + BeginNormalPaletteFade(selectedPalettes, 0, 16, 0, RGB_WHITE); + gTasks[taskId].func = sub_80F13C0; + } +} + +static void sub_80F13C0(u8 taskId) +{ + u8 ballId = gTasks[taskId].data[15]; + + if (gTasks[taskId].data[2] <= 16) + { + BlendPalette(gTasks[taskId].data[3] * 16 + 0x100, 16, gTasks[taskId].data[0], sBallOpenFadeColors[ballId]); + gTasks[taskId].data[0] += gTasks[taskId].data[1]; + gTasks[taskId].data[2]++; + } + else + { + DestroyTask(taskId); + } +} + +void sub_80F1420(u8 taskId) +{ + u8 spriteId; + u32 x; + bool32 done = FALSE; + + spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; + switch (gTasks[taskId].data[10]) + { + case 0: + gTasks[taskId].data[11] = gBattleAnimArgs[0]; + gTasks[taskId].data[0] += 0x500; + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + gSprites[spriteId].pos2.x += gTasks[taskId].data[0] >> 8; + else + gSprites[spriteId].pos2.x -= gTasks[taskId].data[0] >> 8; + + gTasks[taskId].data[0] &= 0xFF; + x = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x + 32; + if (x > 304) + gTasks[taskId].data[10]++; + break; + case 1: + LoadBattleMonGfxAndAnimate(gBattleAnimAttacker, gTasks[taskId].data[11], spriteId); + gTasks[taskId].data[10]++; + break; + case 2: + gTasks[taskId].data[0] += 0x500; + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + gSprites[spriteId].pos2.x -= gTasks[taskId].data[0] >> 8; + else + gSprites[spriteId].pos2.x += gTasks[taskId].data[0] >> 8; + + gTasks[taskId].data[0] &= 0xFF; + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + { + if (gSprites[spriteId].pos2.x <= 0) + { + gSprites[spriteId].pos2.x = 0; + done = TRUE; + } + } + else + { + if (gSprites[spriteId].pos2.x >= 0) + { + gSprites[spriteId].pos2.x = 0; + done = TRUE; + } + } + + if (done) + DestroyAnimVisualTask(taskId); + + break; + } +} + +void sub_80F15C8(u8 taskId) +{ + u8 spriteId; + + switch (gTasks[taskId].data[15]) + { + case 0: + if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == B_POSITION_OPPONENT_LEFT) + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); + else + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); + + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0)); + gTasks[taskId].data[15]++; + break; + case 1: + if (gTasks[taskId].data[1]++ > 1) + { + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[0]++; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - gTasks[taskId].data[0], gTasks[taskId].data[0])); + if (gTasks[taskId].data[0] == 16) + gTasks[taskId].data[15]++; + } + break; + case 2: + spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; + RequestDma3Fill(0, (void *)OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * TILE_SIZE_4BPP, 0x800, 1); + ClearBehindSubstituteBit(gBattleAnimAttacker); + DestroyAnimVisualTask(taskId); + break; + } +} + +void AnimTask_IsAttackerBehindSubstitute(u8 taskId) +{ + gBattleAnimArgs[ARG_RET_ID] = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].behindSubstitute; + DestroyAnimVisualTask(taskId); +} + +void AnimTask_TargetToEffectBattler(u8 taskId) +{ + gBattleAnimTarget = gEffectBattler; + DestroyAnimVisualTask(taskId); +} + +void sub_80F1720(u8 battler, struct Pokemon *mon) +{ + bool32 isShiny; + u32 otId, personality; + u32 shinyValue; + u8 taskId1, taskId2; + + isShiny = FALSE; + gBattleSpritesDataPtr->healthBoxesData[battler].flag_x80 = 1; + otId = GetMonData(mon, MON_DATA_OT_ID); + personality = GetMonData(mon, MON_DATA_PERSONALITY); + + if (IsBattlerSpriteVisible(battler)) + { + shinyValue = HIHALF(otId) ^ LOHALF(otId) ^ HIHALF(personality) ^ LOHALF(personality); + if (shinyValue < SHINY_ODDS) + isShiny = TRUE; + + if (isShiny) + { + if (GetSpriteTileStartByTag(ANIM_TAG_GOLD_STARS) == 0xFFFF) + { + LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[ANIM_TAG_GOLD_STARS - ANIM_SPRITES_START]); + LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[ANIM_TAG_GOLD_STARS - ANIM_SPRITES_START]); + } + + taskId1 = CreateTask(sub_80F181C, 10); + taskId2 = CreateTask(sub_80F181C, 10); + gTasks[taskId1].data[0] = battler; + gTasks[taskId2].data[0] = battler; + gTasks[taskId1].data[1] = 0; + gTasks[taskId2].data[1] = 1; + return; + } + } + + gBattleSpritesDataPtr->healthBoxesData[battler].field_1_x1 = 1; +} + +static void sub_80F181C(u8 taskId) +{ + u8 battler; + u8 x, y; + u8 spriteId; + u16 counter; + s16 state; + u8 pan; + + if (gTasks[taskId].data[13] < 60) + { + gTasks[taskId].data[13]++; + return; + } + + if (gBattleSpritesDataPtr->animationData->field_A) + return; + + counter = gTasks[taskId].data[10]++; + if (counter & 3) + return; + + battler = gTasks[taskId].data[0]; + x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X); + y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y); + state = gTasks[taskId].data[11]; + if (state == 0) + { + spriteId = CreateSprite(&gWishStarSpriteTemplate, x, y, 5); + } + else if (state >= 0 && gTasks[taskId].data[11] < 4) + { + spriteId = CreateSprite(&gMiniTwinklingStarSpriteTemplate, x, y, 5); + gSprites[spriteId].oam.tileNum += 4; + } + else + { + spriteId = CreateSprite(&gMiniTwinklingStarSpriteTemplate, x, y, 5); + gSprites[spriteId].oam.tileNum += 5; + } + + if (gTasks[taskId].data[1] == FALSE) + { + gSprites[spriteId].callback = sub_80F1A2C; + } + else + { + gSprites[spriteId].callback = sub_80F1A80; + gSprites[spriteId].pos2.x = -32; + gSprites[spriteId].pos2.y = 32; + gSprites[spriteId].invisible = TRUE; + if (gTasks[taskId].data[11] == FALSE) + { + if (GetBattlerSide(battler) == B_SIDE_PLAYER) + pan = SOUND_PAN_ATTACKER; + else + pan = SOUND_PAN_TARGET; + + PlaySE12WithPanning(SE_REAPOKE, pan); + } + } + + gSprites[spriteId].data[0] = taskId; + gTasks[taskId].data[11]++; + if (spriteId != MAX_SPRITES) + gTasks[taskId].data[12]++; + + if (gTasks[taskId].data[11] == 5) + gTasks[taskId].func = sub_80F19E0; +} + +static void sub_80F19E0(u8 taskId) +{ + u8 battler; + + if (gTasks[taskId].data[12] == FALSE) + { + if (gTasks[taskId].data[1] == TRUE) + { + battler = gTasks[taskId].data[0]; + gBattleSpritesDataPtr->healthBoxesData[battler].field_1_x1 = 1; + } + + DestroyTask(taskId); + } +} + +static void sub_80F1A2C(struct Sprite *sprite) +{ + sprite->pos2.x = Sin(sprite->data[1], 24); + sprite->pos2.y = Cos(sprite->data[1], 24); + sprite->data[1] += 12; + if (sprite->data[1] > 0xFF) + { + gTasks[sprite->data[0]].data[12]--; + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + } +} + +static void sub_80F1A80(struct Sprite *sprite) +{ + if (sprite->data[1] < 4) + { + sprite->data[1]++; + } + else + { + sprite->invisible = FALSE; + sprite->pos2.x += 5; + sprite->pos2.y -= 5; + if (sprite->pos2.x > 32) + { + gTasks[sprite->data[0]].data[12]--; + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + } + } +} + +void AnimTask_LoadPokeblockGfx(u8 taskId) +{ + u8 paletteIndex; + + LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[ANIM_TAG_POKEBLOCK - ANIM_SPRITES_START]); + LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[ANIM_TAG_POKEBLOCK - ANIM_SPRITES_START]); + paletteIndex = IndexOfSpritePaletteTag(ANIM_TAG_POKEBLOCK); + DestroyAnimVisualTask(taskId); +} + +void AnimTask_FreePokeblockGfx(u8 taskId) +{ + FreeSpriteTilesByTag(ANIM_TAG_POKEBLOCK); + FreeSpritePaletteByTag(ANIM_TAG_POKEBLOCK); + DestroyAnimVisualTask(taskId); +} + +static void sub_80F1B3C(struct Sprite *sprite) +{ + InitSpritePosToAnimAttacker(sprite, 0); + sprite->data[0] = 30; + sprite->data[2] = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), BATTLER_COORD_X) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), BATTLER_COORD_Y) + gBattleAnimArgs[3]; + sprite->data[5] = -32; + InitAnimArcTranslation(sprite); + gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].callback = sub_8012354; + sprite->callback = sub_80F1BCC; +} + +static void sub_80F1BCC(struct Sprite *sprite) +{ + if (gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].animCmdIndex == 1) + sprite->callback = sub_80F1C04; +} + +static void sub_80F1C04(struct Sprite *sprite) +{ + if (TranslateAnimHorizontalArc(sprite)) + { + sprite->data[0] = 0; + sprite->invisible = TRUE; + sprite->callback = sub_80F1C30; + } +} + +static void sub_80F1C30(struct Sprite *sprite) +{ + if (gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].animEnded) + { + if (++sprite->data[0] > 0) + { + StartSpriteAnim(&gSprites[gBattlerSpriteIds[gBattleAnimAttacker]], 0); + DestroyAnimSprite(sprite); + } + } +} + +void sub_80F1C8C(u8 taskId) +{ + switch (gBattleAnimArgs[0]) + { + case 0: + gBattleAnimAttacker = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + gBattleAnimTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + break; + case 1: + gBattleAnimAttacker = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + gBattleAnimTarget = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + break; + } + + DestroyAnimVisualTask(taskId); +} + +void sub_80F1CE4(u8 taskId) +{ + if (gBattleCommunication[MULTISTRING_CHOOSER] > 2) + gBattleAnimArgs[7] = 0; + else + gBattleAnimArgs[7] = gBattleCommunication[MULTISTRING_CHOOSER]; + + DestroyAnimVisualTask(taskId); +} + +void AnimTask_GetTrappedMoveAnimId(u8 taskId) +{ + if (gBattleSpritesDataPtr->animationData->animArg == MOVE_FIRE_SPIN) + gBattleAnimArgs[0] = TRAP_ANIM_FIRE_SPIN; + else if (gBattleSpritesDataPtr->animationData->animArg == MOVE_WHIRLPOOL) + gBattleAnimArgs[0] = TRAP_ANIM_WHIRLPOOL; + else if (gBattleSpritesDataPtr->animationData->animArg == MOVE_CLAMP) + gBattleAnimArgs[0] = TRAP_ANIM_CLAMP; + else if (gBattleSpritesDataPtr->animationData->animArg == MOVE_SAND_TOMB) + gBattleAnimArgs[0] = TRAP_ANIM_SAND_TOMB; + else + gBattleAnimArgs[0] = TRAP_ANIM_BIND; + + DestroyAnimVisualTask(taskId); +} + +void AnimTask_GetBattlersFromArg(u8 taskId) +{ + gBattleAnimAttacker = gBattleSpritesDataPtr->animationData->animArg; + gBattleAnimTarget = gBattleSpritesDataPtr->animationData->animArg >> 8; + DestroyAnimVisualTask(taskId); +} diff --git a/src/battle_anim_status_effects.c b/src/battle_anim_status_effects.c new file mode 100644 index 000000000..2e7f30ff1 --- /dev/null +++ b/src/battle_anim_status_effects.c @@ -0,0 +1,533 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "decompress.h" +#include "gpu_regs.h" +#include "palette.h" +#include "sprite.h" +#include "task.h" +#include "trig.h" +#include "util.h" +#include "constants/battle_anim.h" +#include "constants/pokemon.h" + +// Function Declarations +static u8 sub_8078178(u8 battlerId, bool8 b); +static void sub_80782BC(u8 taskId); +static void sub_80784D8(u8 taskId); +static void sub_8078528(u8 taskId); +static void sub_80785D8(u8 taskId); +static void sub_807862C(u8 taskId); +static void Task_DoStatusAnimation(u8 taskId); +static void sub_807834C(struct Sprite *sprite); +static void sub_8078380(struct Sprite *sprite); + +// Data +static const union AnimCmd sUnknown_83BF3E0[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(4, 3), + ANIMCMD_FRAME(8, 3), + ANIMCMD_FRAME(12, 3), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd *const sSpriteAnimTable_83BF3F4[] = +{ + sUnknown_83BF3E0 +}; + +const struct SpriteTemplate gSpriteTemplate_83BF3F8 = +{ + .tileTag = ANIM_TAG_ORB, + .paletteTag = ANIM_TAG_ORB, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = sSpriteAnimTable_83BF3F4, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8076F58, +}; + +const struct SpriteTemplate gSpriteTemplate_83BF410 = +{ + .tileTag = ANIM_TAG_ORB, + .paletteTag = ANIM_TAG_ORB, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = sSpriteAnimTable_83BF3F4, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8076ED8, +}; + +static const union AnimCmd sUnknown_83BF428[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd *const sSpriteAnimTable_83BF430[] = +{ + sUnknown_83BF428 +}; + +const struct SpriteTemplate gSpriteTemplate_83BF434 = +{ + .tileTag = ANIM_TAG_WEATHER_BALL, + .paletteTag = ANIM_TAG_WEATHER_BALL, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sSpriteAnimTable_83BF430, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_807729C, +}; + +const struct SpriteTemplate gSpriteTemplate_83BF44C = +{ + .tileTag = ANIM_TAG_WEATHER_BALL, + .paletteTag = ANIM_TAG_WEATHER_BALL, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sSpriteAnimTable_83BF430, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8077350, +}; + +static const union AnimCmd sUnknown_83BF464[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(48, 3), + ANIMCMD_FRAME(64, 3), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_83BF47C[] = +{ + sUnknown_83BF464 +}; + +const struct SpriteTemplate gSpriteTemplate_83BF480 = +{ + .tileTag = ANIM_TAG_SPARKLE_4, + .paletteTag = ANIM_TAG_SPARKLE_4, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sSpriteAnimTable_83BF47C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8076FD0, +}; + +const struct SpriteTemplate gSpriteTemplate_83BF498 = +{ + .tileTag = ANIM_TAG_MONSTER_FOOT, + .paletteTag = ANIM_TAG_MONSTER_FOOT, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8076F58, +}; + +static const union AnimCmd sUnknown_83BF4B0[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sUnknown_83BF4B8[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sUnknown_83BF4C0[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd *const sSpriteAniimTable_83BF4C8[] = +{ + sUnknown_83BF4B0, + sUnknown_83BF4B8, + sUnknown_83BF4C0 +}; + +const struct SpriteTemplate gSpriteTemplate_83BF4D4 = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_IMPACT, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sSpriteAniimTable_83BF4C8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8076F58, +}; + +static const union AnimCmd sUnknown_83BF4EC[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd *const sSpriteAnimTable_83BF4F4[] = +{ + sUnknown_83BF4EC +}; + +static const union AffineAnimCmd sUnknown_83BF4F8[] = +{ + AFFINEANIMCMD_FRAME(96, 96, 0, 0), + AFFINEANIMCMD_FRAME(2, 2, 0, 1), + AFFINEANIMCMD_JUMP(1) +}; + +static const union AffineAnimCmd *const sSpriteAffineAnimTable_83BF510[] = +{ + sUnknown_83BF4F8 +}; + +const struct SpriteTemplate gSpriteTemplate_83BF514 = +{ + .tileTag = ANIM_TAG_ORB, + .paletteTag = ANIM_TAG_ORB, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = sSpriteAnimTable_83BF4F4, + .images = NULL, + .affineAnims = sSpriteAffineAnimTable_83BF510, + .callback = sub_8076ED8, +}; + +static const u8 sUnknown_83BF52C[] = _("TASK OVER\nタスクがオ-バ-しました"); + +static const struct Subsprite sSubsprites_83BF544[] = +{ + {.x = -16, .y = -16, .shape = SPRITE_SHAPE(8x8), .size = 3, .tileOffset = 0, .priority = 2}, + {.x = -16, .y = 48, .shape = SPRITE_SHAPE(16x8), .size = 3, .tileOffset = 64, .priority = 2}, + {.x = 48, .y = -16, .shape = SPRITE_SHAPE(8x16), .size = 3, .tileOffset = 96, .priority = 2}, + {.x = 48, .y = 48, .shape = SPRITE_SHAPE(8x8), .size = 2, .tileOffset = 128, .priority = 2}, +}; + +static const struct SubspriteTable sUnknown_83BF554[] = +{ + {NELEMS(sSubsprites_83BF544), sSubsprites_83BF544}, +}; + +static const struct SpriteTemplate sUnknown_83BF55C = +{ + .tileTag = ANIM_TAG_ICE_CUBE, + .paletteTag = ANIM_TAG_ICE_CUBE, + .oam = &gOamData_AffineOff_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +static const struct SpriteTemplate sUnknown_83BF574 = +{ + .tileTag = ANIM_TAG_CIRCLE_IMPACT, + .paletteTag = ANIM_TAG_CIRCLE_IMPACT, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_807834C, +}; + +// Functions +static u8 sub_8078178(u8 battlerId, bool8 b) +{ + u8 battlerSpriteId = gBattlerSpriteIds[battlerId]; + u8 taskId = CreateTask(sub_80782BC, 10); + u8 spriteId2; + u8 i; + + LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_CIRCLE_IMPACT)]); + LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_CIRCLE_IMPACT)]); + gTasks[taskId].data[0] = battlerId; + if (b) + { + gTasks[taskId].data[1] = RGB_RED; + for (i = 0; i < 10; i++) + { + spriteId2 = CreateSprite(&sUnknown_83BF574, gSprites[battlerSpriteId].pos1.x, gSprites[battlerSpriteId].pos1.y + 32, 0); + gSprites[spriteId2].data[0] = i * 51; + gSprites[spriteId2].data[1] = -256; + gSprites[spriteId2].invisible = TRUE; + if (i > 4) + gSprites[spriteId2].data[6] = 21; + } + } + else + { + gTasks[taskId].data[1] = RGB_BLUE; + for (i = 0; i < 10; i++) + { + spriteId2 = CreateSprite(&sUnknown_83BF574, gSprites[battlerSpriteId].pos1.x, gSprites[battlerSpriteId].pos1.y - 32, 0); + gSprites[spriteId2].data[0] = i * 51; + gSprites[spriteId2].data[1] = 256; + gSprites[spriteId2].invisible = TRUE; + if (i > 4) + gSprites[spriteId2].data[6] = 21; + } + } + gSprites[spriteId2].data[7] = 1; + return taskId; +} + +static void sub_80782BC(u8 taskId) +{ + if (gTasks[taskId].data[2] == 2) + { + gTasks[taskId].data[2] = 0; + BlendPalette(0x100 + gTasks[taskId].data[0] * 16, 16, gTasks[taskId].data[4], gTasks[taskId].data[1]); + if (gTasks[taskId].data[5] == 0) + { + gTasks[taskId].data[4]++; + if (gTasks[taskId].data[4] > 8) + gTasks[taskId].data[5] ^= 1; + } + else + { + u16 var = gTasks[taskId].data[4]; + + gTasks[taskId].data[4]--; + if (gTasks[taskId].data[4] < 0) + { + gTasks[taskId].data[4] = var; + gTasks[taskId].data[5] ^= 1; + gTasks[taskId].data[3]++; + if (gTasks[taskId].data[3] == 2) + DestroyTask(taskId); + } + } + } + else + { + gTasks[taskId].data[2]++; + } +} + +static void sub_807834C(struct Sprite *sprite) +{ + if (sprite->data[6] == 0) + { + sprite->invisible = FALSE; + sprite->callback = sub_8078380; + sub_8078380(sprite); + } + else + { + sprite->data[6]--; + } +} + +static void sub_8078380(struct Sprite *sprite) +{ + sprite->pos2.x = Cos(sprite->data[0], 32); + sprite->pos2.y = Sin(sprite->data[0], 8); + if (sprite->data[0] < 128) + sprite->subpriority = 29; + else + sprite->subpriority = 31; + sprite->data[0] = (sprite->data[0] + 8) & 0xFF; + sprite->data[5] += sprite->data[1]; + sprite->pos2.y += sprite->data[5] >> 8; + sprite->data[2]++; + if (sprite->data[2] == 52) + { + if (sprite->data[7]) + DestroySpriteAndFreeResources(sprite); + else + DestroySprite(sprite); + } +} + +void sub_80783FC(u8 taskId) +{ + s16 x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) - 32; + s16 y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) - 36; + u8 spriteId; + + if (IsContest()) + x -= 6; + + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16)); + spriteId = CreateSprite(&sUnknown_83BF55C, x, y, 4); + if (GetSpriteTileStartByTag(ANIM_TAG_ICE_CUBE) == SPRITE_INVALID_TAG) + gSprites[spriteId].invisible = TRUE; + + SetSubspriteTables(&gSprites[spriteId], sUnknown_83BF554); + gTasks[taskId].data[15] = spriteId; + gTasks[taskId].func = sub_80784D8; +} + +static void sub_80784D8(u8 taskId) +{ + gTasks[taskId].data[1]++; + if (gTasks[taskId].data[1] == 10) + { + gTasks[taskId].func = sub_8078528; + gTasks[taskId].data[1] = 0; + } + else + { + u8 var = gTasks[taskId].data[1]; + + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(var, 16 - var)); + } +} + +static void sub_8078528(u8 taskId) +{ + u8 palIndex = IndexOfSpritePaletteTag(ANIM_TAG_ICE_CUBE); + + if (gTasks[taskId].data[1]++ > 13) + { + gTasks[taskId].data[2]++; + if (gTasks[taskId].data[2] == 3) + { + u16 temp; + + temp = gPlttBufferFaded[0x100 + palIndex * 16 + 13]; + gPlttBufferFaded[0x100 + palIndex * 16 + 13] = gPlttBufferFaded[0x100 + palIndex * 16 + 14]; + gPlttBufferFaded[0x100 + palIndex * 16 + 14] = gPlttBufferFaded[0x100 + palIndex * 16 + 15]; + gPlttBufferFaded[0x100 + palIndex * 16 + 15] = temp; + + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3]++; + if (gTasks[taskId].data[3] == 3) + { + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[4]++; + if (gTasks[taskId].data[4] == 2) + { + gTasks[taskId].data[1] = 9; + gTasks[taskId].func = sub_80785D8; + } + } + } + } +} + +static void sub_80785D8(u8 taskId) +{ + gTasks[taskId].data[1]--; + if (gTasks[taskId].data[1] == -1) + { + gTasks[taskId].func = sub_807862C; + gTasks[taskId].data[1] = 0; + } + else + { + u8 var = gTasks[taskId].data[1]; + + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(var, 16 - var)); + } +} + +static void sub_807862C(u8 taskId) +{ + gTasks[taskId].data[1]++; + if (gTasks[taskId].data[1] == 37) + { + u8 spriteId = gTasks[taskId].data[15]; + + FreeSpriteOamMatrix(&gSprites[spriteId]); + DestroySprite(&gSprites[spriteId]); + } + else if (gTasks[taskId].data[1] == 39) + { + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + DestroyAnimVisualTask(taskId); + } +} + +#define CASE(by, stat) case (STAT_ANIM_##by + stat - 1) + +void AnimTask_StatsChange(u8 taskId) +{ + bool16 goesDown = FALSE; + s16 animStatId = 0; + bool16 sharply = FALSE; + + switch (gBattleSpritesDataPtr->animationData->animArg) + { + CASE(PLUS1, STAT_ATK): goesDown = FALSE; animStatId = 0; break; + CASE(PLUS1, STAT_DEF): goesDown = FALSE; animStatId = 1; break; + CASE(PLUS1, STAT_SPEED): goesDown = FALSE; animStatId = 3; break; + CASE(PLUS1, STAT_SPATK): goesDown = FALSE; animStatId = 5; break; + CASE(PLUS1, STAT_SPDEF): goesDown = FALSE; animStatId = 6; break; + CASE(PLUS1, STAT_ACC): goesDown = FALSE; animStatId = 2; break; + CASE(PLUS1, STAT_EVASION): goesDown = FALSE; animStatId = 4; break; + + CASE(MINUS1, STAT_ATK): goesDown = TRUE; animStatId = 0; break; + CASE(MINUS1, STAT_DEF): goesDown = TRUE; animStatId = 1; break; + CASE(MINUS1, STAT_SPEED): goesDown = TRUE; animStatId = 3; break; + CASE(MINUS1, STAT_SPATK): goesDown = TRUE; animStatId = 5; break; + CASE(MINUS1, STAT_SPDEF): goesDown = TRUE; animStatId = 6; break; + CASE(MINUS1, STAT_ACC): goesDown = TRUE; animStatId = 2; break; + CASE(MINUS1, STAT_EVASION): goesDown = TRUE; animStatId = 4; break; + + CASE(PLUS2, STAT_ATK): goesDown = FALSE; animStatId = 0; sharply = TRUE; break; + CASE(PLUS2, STAT_DEF): goesDown = FALSE; animStatId = 1; sharply = TRUE; break; + CASE(PLUS2, STAT_SPEED): goesDown = FALSE; animStatId = 3; sharply = TRUE; break; + CASE(PLUS2, STAT_SPATK): goesDown = FALSE; animStatId = 5; sharply = TRUE; break; + CASE(PLUS2, STAT_SPDEF): goesDown = FALSE; animStatId = 6; sharply = TRUE; break; + CASE(PLUS2, STAT_ACC): goesDown = FALSE; animStatId = 2; sharply = TRUE; break; + CASE(PLUS2, STAT_EVASION): goesDown = FALSE; animStatId = 4; sharply = TRUE; break; + + CASE(MINUS2, STAT_ATK): goesDown = TRUE; animStatId = 0; sharply = TRUE; break; + CASE(MINUS2, STAT_DEF): goesDown = TRUE; animStatId = 1; sharply = TRUE; break; + CASE(MINUS2, STAT_SPEED): goesDown = TRUE; animStatId = 3; sharply = TRUE; break; + CASE(MINUS2, STAT_SPATK): goesDown = TRUE; animStatId = 5; sharply = TRUE; break; + CASE(MINUS2, STAT_SPDEF): goesDown = TRUE; animStatId = 6; sharply = TRUE; break; + CASE(MINUS2, STAT_ACC): goesDown = TRUE; animStatId = 2; sharply = TRUE; break; + CASE(MINUS2, STAT_EVASION): goesDown = TRUE; animStatId = 4; sharply = TRUE; break; + + case STAT_ANIM_MULTIPLE_PLUS1: goesDown = FALSE; animStatId = 0xFF; sharply = FALSE; break; + case STAT_ANIM_MULTIPLE_PLUS2: goesDown = FALSE; animStatId = 0xFF; sharply = TRUE; break; + case STAT_ANIM_MULTIPLE_MINUS1: goesDown = TRUE; animStatId = 0xFF; sharply = FALSE; break; + case STAT_ANIM_MULTIPLE_MINUS2: goesDown = TRUE; animStatId = 0xFF; sharply = TRUE; break; + + default: + DestroyAnimVisualTask(taskId); + return; + } + + gBattleAnimArgs[0] = goesDown; + gBattleAnimArgs[1] = animStatId; + gBattleAnimArgs[2] = 0; + gBattleAnimArgs[3] = 0; + gBattleAnimArgs[4] = sharply; + gTasks[taskId].func = sub_80BB088; + sub_80BB088(taskId); +} + +#undef CASE + +void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId) +{ + u8 taskId; + + gBattleAnimAttacker = battlerId; + gBattleAnimTarget = battlerId; + LaunchBattleAnimation(gBattleAnims_StatusConditions, statusAnimId, 0); + taskId = CreateTask(Task_DoStatusAnimation, 10); + gTasks[taskId].data[0] = battlerId; +} + +static void Task_DoStatusAnimation(u8 taskId) +{ + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].data[0]].statusAnimActive = FALSE; + DestroyTask(taskId); + } +} diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index d9a6754c7..df4a8243b 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -496,9 +496,9 @@ static void sub_80BB2A0(u8 taskId) gTasks[taskId].data[7] = gBattlerSpriteIds[sAnimStatsChangeData->battler2]; gTasks[taskId].func = sub_80BB4B8; if (sAnimStatsChangeData->data[0] == 0) - PlaySE12WithPanning(SE_W287, BattleAnimAdjustPanning2(PAN_SIDE_PLAYER)); + PlaySE12WithPanning(SE_W287, BattleAnimAdjustPanning2(SOUND_PAN_ATTACKER)); else - PlaySE12WithPanning(SE_W287B, BattleAnimAdjustPanning2(PAN_SIDE_PLAYER)); + PlaySE12WithPanning(SE_W287B, BattleAnimAdjustPanning2(SOUND_PAN_ATTACKER)); } static void sub_80BB4B8(u8 taskId) @@ -46,7 +46,7 @@ const struct SpriteTemplate gUnknown_83E7224 = { .tileTag = ANIM_TAG_HORN_HIT_2, .paletteTag = ANIM_TAG_HORN_HIT_2, - .oam = &gOamData_83ACAB8, + .oam = &gOamData_AffineDouble_ObjNormal_32x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E7218, @@ -82,7 +82,7 @@ const struct SpriteTemplate gUnknown_83E7278 = { .tileTag = ANIM_TAG_NEEDLE, .paletteTag = ANIM_TAG_NEEDLE, - .oam = &gOamData_83ACA30, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E726C, @@ -93,7 +93,7 @@ const struct SpriteTemplate gWebThreadSpriteTemplate = { .tileTag = ANIM_TAG_WEB_THREAD, .paletteTag = ANIM_TAG_WEB_THREAD, - .oam = &gOamData_83AC9C8, + .oam = &gOamData_AffineOff_ObjNormal_8x8, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -104,7 +104,7 @@ const struct SpriteTemplate gUnknown_83E72A8 = { .tileTag = ANIM_TAG_STRING, .paletteTag = ANIM_TAG_STRING, - .oam = &gOamData_83ACA00, + .oam = &gOamData_AffineOff_ObjNormal_64x32, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -127,7 +127,7 @@ const struct SpriteTemplate gSpiderWebSpriteTemplate = { .tileTag = ANIM_TAG_SPIDER_WEB, .paletteTag = ANIM_TAG_SPIDER_WEB, - .oam = &gOamData_83ACBC0, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E72D8, @@ -138,7 +138,7 @@ const struct SpriteTemplate gLinearStingerSpriteTemplate = { .tileTag = ANIM_TAG_NEEDLE, .paletteTag = ANIM_TAG_NEEDLE, - .oam = &gOamData_83ACA30, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -149,7 +149,7 @@ const struct SpriteTemplate gPinMissileSpriteTemplate = { .tileTag = ANIM_TAG_NEEDLE, .paletteTag = ANIM_TAG_NEEDLE, - .oam = &gOamData_83ACA30, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -160,7 +160,7 @@ const struct SpriteTemplate gIcicleSpearSpriteTemplate = { .tileTag = ANIM_TAG_ICICLE_SPEAR, .paletteTag = ANIM_TAG_ICICLE_SPEAR, - .oam = &gOamData_83ACA38, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -187,7 +187,7 @@ const struct SpriteTemplate gUnknown_83E7378 = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT, - .oam = &gOamData_83ACB60, + .oam = &gOamData_AffineNormal_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E7374, diff --git a/src/dark.c b/src/dark.c index 368f5cbd5..e13227316 100644 --- a/src/dark.c +++ b/src/dark.c @@ -27,7 +27,7 @@ const struct SpriteTemplate gUnknown_83E7878 = { .tileTag = ANIM_TAG_TIED_BAG, .paletteTag = ANIM_TAG_TIED_BAG, - .oam = &gOamData_83AC9D0, + .oam = &gOamData_AffineOff_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -98,7 +98,7 @@ const struct SpriteTemplate gUnknown_83E7930 = { .tileTag = ANIM_TAG_SHARP_TEETH, .paletteTag = ANIM_TAG_SHARP_TEETH, - .oam = &gOamData_83ACB60, + .oam = &gOamData_AffineNormal_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E7910, @@ -109,7 +109,7 @@ const struct SpriteTemplate gUnknown_83E7948 = { .tileTag = ANIM_TAG_CLAMP, .paletteTag = ANIM_TAG_CLAMP, - .oam = &gOamData_83ACB60, + .oam = &gOamData_AffineNormal_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E7910, @@ -140,7 +140,7 @@ const struct SpriteTemplate gUnknown_83E7998 = { .tileTag = ANIM_TAG_SMALL_BUBBLES, .paletteTag = ANIM_TAG_SMALL_BUBBLES, - .oam = &gOamData_83ACA30, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E7990, @@ -177,7 +177,7 @@ const struct SpriteTemplate gUnknown_83E79E8 = { .tileTag = ANIM_TAG_CLAW_SLASH, .paletteTag = ANIM_TAG_CLAW_SLASH, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E79E0, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, diff --git a/src/dragon.c b/src/dragon.c index 34f97ba74..d18cf25df 100644 --- a/src/dragon.c +++ b/src/dragon.c @@ -35,7 +35,7 @@ const struct SpriteTemplate gUnknown_83E772C = { .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E7728, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -88,7 +88,7 @@ const struct SpriteTemplate gUnknown_83E77A4 = { .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, - .oam = &gOamData_83ACA98, + .oam = &gOamData_AffineDouble_ObjNormal_32x32, .anims = gUnknown_83E7764, .images = NULL, .affineAnims = gUnknown_83E779C, @@ -114,7 +114,7 @@ const struct SpriteTemplate gUnknown_83E77D8 = { .tileTag = ANIM_TAG_FIRE_PLUME, .paletteTag = ANIM_TAG_FIRE_PLUME, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E77D4, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -157,7 +157,7 @@ const struct SpriteTemplate gUnknown_83E7830 = { .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, - .oam = &gOamData_83ACA98, + .oam = &gOamData_AffineDouble_ObjNormal_32x32, .anims = gUnknown_83E7800, .images = NULL, .affineAnims = gUnknown_83E7828, @@ -168,7 +168,7 @@ const struct SpriteTemplate gUnknown_83E7848 = { .tileTag = ANIM_TAG_HOLLOW_ORB, .paletteTag = ANIM_TAG_HOLLOW_ORB, - .oam = &gOamData_83AC9D0, + .oam = &gOamData_AffineOff_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -179,7 +179,7 @@ const struct SpriteTemplate gUnknown_83E7860 = { .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E7728, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, diff --git a/src/electric.c b/src/electric.c index 025eac48b..908ce60a4 100644 --- a/src/electric.c +++ b/src/electric.c @@ -53,7 +53,7 @@ const struct SpriteTemplate gUnknown_83E5F38 = { .tileTag = ANIM_TAG_LIGHTNING, .paletteTag = ANIM_TAG_LIGHTNING, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E5F34, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -77,7 +77,7 @@ const struct SpriteTemplate gUnknown_83E5F74 = { .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, - .oam = &gOamData_83ACA38, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E5F70, @@ -104,7 +104,7 @@ const struct SpriteTemplate gUnknown_83E5FAC = { .tileTag = ANIM_TAG_SHOCK, .paletteTag = ANIM_TAG_SHOCK, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E5FA8, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -115,7 +115,7 @@ const struct SpriteTemplate gUnknown_83E5FC4 = { .tileTag = ANIM_TAG_SPARK_2, .paletteTag = ANIM_TAG_SPARK_2, - .oam = &gOamData_83ACA30, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -126,7 +126,7 @@ const struct SpriteTemplate gUnknown_83E5FDC = { .tileTag = ANIM_TAG_BLACK_BALL_2, .paletteTag = ANIM_TAG_BLACK_BALL_2, - .oam = &gOamData_83AC9D0, + .oam = &gOamData_AffineOff_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -148,7 +148,7 @@ const struct SpriteTemplate gUnknown_83E6008 = { .tileTag = ANIM_TAG_SPARK_2, .paletteTag = ANIM_TAG_SPARK_2, - .oam = &gOamData_83ACA30, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E6004, @@ -185,7 +185,7 @@ const struct SpriteTemplate gUnknown_83E6058 = { .tileTag = ANIM_TAG_SHOCK_3, .paletteTag = ANIM_TAG_SHOCK_3, - .oam = &gOamData_83ACA38, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = gUnknown_83E6030, .images = NULL, .affineAnims = gUnknown_83E6054, @@ -196,7 +196,7 @@ const struct SpriteTemplate gUnknown_83E6070 = { .tileTag = ANIM_TAG_SPARK_2, .paletteTag = ANIM_TAG_SPARK_2, - .oam = &gOamData_83ACA30, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E6004, @@ -207,7 +207,7 @@ const struct SpriteTemplate gElectricitySpriteTemplate = { .tileTag = ANIM_TAG_SPARK_2, .paletteTag = ANIM_TAG_SPARK_2, - .oam = &gOamData_83AC9D0, + .oam = &gOamData_AffineOff_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -218,7 +218,7 @@ static const struct SpriteTemplate gUnknown_83E60A0 = { .tileTag = ANIM_TAG_SPARK, .paletteTag = ANIM_TAG_SPARK, - .oam = &gOamData_83AC9C8, + .oam = &gOamData_AffineOff_ObjNormal_8x8, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -229,7 +229,7 @@ const struct SpriteTemplate gUnknown_83E60B8 = { .tileTag = ANIM_TAG_SPARK_H, .paletteTag = ANIM_TAG_SPARK_H, - .oam = &gOamData_83AC9F8, + .oam = &gOamData_AffineOff_ObjNormal_32x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -284,7 +284,7 @@ static const struct SpriteTemplate gUnknown_83E6120 = { .tileTag = ANIM_TAG_ELECTRIC_ORBS, .paletteTag = ANIM_TAG_ELECTRIC_ORBS, - .oam = &gOamData_83AC9C8, + .oam = &gOamData_AffineOff_ObjNormal_8x8, .anims = gUnknown_83E6118, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -332,7 +332,7 @@ const struct SpriteTemplate gUnknown_83E61D4 = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT, - .oam = &gOamData_83ACB60, + .oam = &gOamData_AffineNormal_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E61C8, @@ -357,7 +357,7 @@ const struct SpriteTemplate gUnknown_83E6204 = { .tileTag = ANIM_TAG_ELECTRICITY, .paletteTag = ANIM_TAG_ELECTRICITY, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E6200, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -368,7 +368,7 @@ const struct SpriteTemplate gUnknown_83E621C = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT, - .oam = &gOamData_83ACB60, + .oam = &gOamData_AffineNormal_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E61C8, @@ -422,7 +422,7 @@ static const struct SpriteTemplate gUnknown_83E6278 = { .tileTag = ANIM_TAG_SPARK, .paletteTag = ANIM_TAG_SPARK, - .oam = &gOamData_83ACAC8, + .oam = &gOamData_AffineDouble_ObjNormal_8x16, .anims = gUnknown_83E6254, .images = NULL, .affineAnims = gUnknown_83E6274, @@ -433,7 +433,7 @@ const struct SpriteTemplate gUnknown_83E6290 = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT, - .oam = &gOamData_83ACB60, + .oam = &gOamData_AffineNormal_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E61C8, @@ -444,7 +444,7 @@ static const struct SpriteTemplate gUnknown_83E62A8 = { .tileTag = ANIM_TAG_SPARK, .paletteTag = ANIM_TAG_SPARK, - .oam = &gOamData_83AC9C8, + .oam = &gOamData_AffineOff_ObjNormal_8x8, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, diff --git a/src/fighting.c b/src/fighting.c index 496f752ef..7b826594d 100644 --- a/src/fighting.c +++ b/src/fighting.c @@ -39,7 +39,7 @@ const struct SpriteTemplate gUnknown_83E668C = { .tileTag = ANIM_TAG_HUMANOID_FOOT, .paletteTag = ANIM_TAG_HUMANOID_FOOT, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -97,7 +97,7 @@ const struct SpriteTemplate gUnknown_83E66E0 = { .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E66CC, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -108,7 +108,7 @@ const struct SpriteTemplate gUnknown_83E66F8 = { .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E66CC, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -119,7 +119,7 @@ const struct SpriteTemplate gFistFootSpriteTemplate = { .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E66CC, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -130,7 +130,7 @@ const struct SpriteTemplate gUnknown_83E6728 = { .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E66CC, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -141,7 +141,7 @@ const struct SpriteTemplate gUnknown_83E6740 = { .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E66D8, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -152,7 +152,7 @@ const struct SpriteTemplate gUnknown_83E6758 = { .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E66D0, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -175,7 +175,7 @@ const struct SpriteTemplate gUnknown_83E678C = { .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, - .oam = &gOamData_83ACA98, + .oam = &gOamData_AffineDouble_ObjNormal_32x32, .anims = gUnknown_83E66CC, .images = NULL, .affineAnims = gUnknown_83E6788, @@ -198,7 +198,7 @@ const struct SpriteTemplate gMegaPunchKickSpriteTemplate = { .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, - .oam = &gOamData_83ACA98, + .oam = &gOamData_AffineDouble_ObjNormal_32x32, .anims = gUnknown_83E66CC, .images = NULL, .affineAnims = gUnknown_83E67BC, @@ -209,7 +209,7 @@ const struct SpriteTemplate gUnknown_83E67D8 = { .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E66D0, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -220,7 +220,7 @@ const struct SpriteTemplate gUnknown_83E67F0 = { .tileTag = ANIM_TAG_DUCK, .paletteTag = ANIM_TAG_DUCK, - .oam = &gOamData_83AC9D0, + .oam = &gOamData_AffineOff_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -231,7 +231,7 @@ const struct SpriteTemplate gUnknown_83E6808 = { .tileTag = ANIM_TAG_BLUE_LIGHT_WALL, .paletteTag = ANIM_TAG_BLUE_LIGHT_WALL, - .oam = &gOamData_83ACB00, + .oam = &gOamData_AffineOff_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -242,7 +242,7 @@ const struct SpriteTemplate gUnknown_83E6820 = { .tileTag = ANIM_TAG_TORN_METAL, .paletteTag = ANIM_TAG_TORN_METAL, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -267,7 +267,7 @@ const struct SpriteTemplate gUnknown_83E6864 = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT, - .oam = &gOamData_83ACBC0, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E6860, @@ -278,7 +278,7 @@ const struct SpriteTemplate gUnknown_83E687C = { .tileTag = ANIM_TAG_FLAT_ROCK, .paletteTag = ANIM_TAG_FLAT_ROCK, - .oam = &gOamData_83AC9D0, + .oam = &gOamData_AffineOff_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -289,7 +289,7 @@ const struct SpriteTemplate gUnknown_83E6894 = { .tileTag = ANIM_TAG_METEOR, .paletteTag = ANIM_TAG_METEOR, - .oam = &gOamData_83AC9E0, + .oam = &gOamData_AffineOff_ObjNormal_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -300,7 +300,7 @@ const struct SpriteTemplate gUnknown_83E68AC = { .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E66CC, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -342,7 +342,7 @@ const struct SpriteTemplate gUnknown_83E6900 = { .tileTag = ANIM_TAG_PURPLE_SCRATCH, .paletteTag = ANIM_TAG_PURPLE_SCRATCH, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E68F4, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -381,7 +381,7 @@ const struct SpriteTemplate gUnknown_83E6948 = { .tileTag = ANIM_TAG_PURPLE_SWIPE, .paletteTag = ANIM_TAG_PURPLE_SWIPE, - .oam = &gOamData_83AC9E0, + .oam = &gOamData_AffineOff_ObjNormal_64x64, .anims = gUnknown_83E693C, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -404,7 +404,7 @@ const struct SpriteTemplate gUnknown_83E697C = { .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, - .oam = &gOamData_83ACA98, + .oam = &gOamData_AffineDouble_ObjNormal_32x32, .anims = gUnknown_83E66CC, .images = NULL, .affineAnims = gUnknown_83E6978, diff --git a/src/fire.c b/src/fire.c index 014413f5b..a5a2ee5f6 100644 --- a/src/fire.c +++ b/src/fire.c @@ -64,7 +64,7 @@ const struct SpriteTemplate gUnknown_83E5BE0 = { .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E5BD8, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -75,7 +75,7 @@ const struct SpriteTemplate gUnknown_83E5BF8 = { .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E5BD8, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -131,7 +131,7 @@ const struct SpriteTemplate gUnknown_83E5C70 = { .tileTag = ANIM_TAG_FIRE, .paletteTag = ANIM_TAG_FIRE, - .oam = &gOamData_83ACA38, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = gUnknown_83E5C34, .images = NULL, .affineAnims = gUnknown_83E5C6C, @@ -142,7 +142,7 @@ const struct SpriteTemplate gUnknown_83E5C88 = { .tileTag = ANIM_TAG_FIRE, .paletteTag = ANIM_TAG_FIRE, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E5C34, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -153,7 +153,7 @@ const struct SpriteTemplate gUnknown_83E5CA0 = { .tileTag = ANIM_TAG_FIRE_PLUME, .paletteTag = ANIM_TAG_FIRE_PLUME, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E5C50, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -164,7 +164,7 @@ const struct SpriteTemplate gUnknown_83E5CB8 = { .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E5C50, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -188,7 +188,7 @@ const struct SpriteTemplate gUnknown_83E5CE4 = { .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E5CE0, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -211,7 +211,7 @@ const struct SpriteTemplate gUnknown_83E5D18 = { .tileTag = ANIM_TAG_SUNLIGHT, .paletteTag = ANIM_TAG_SUNLIGHT, - .oam = &gOamData_83ACB58, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E5D14, @@ -237,7 +237,7 @@ const struct SpriteTemplate gEmberSpriteTemplate = { .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -248,7 +248,7 @@ const struct SpriteTemplate gEmberFlareSpriteTemplate = { .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E5D48, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -259,7 +259,7 @@ const struct SpriteTemplate gUnknown_83E5D7C = { .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E5D48, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -270,7 +270,7 @@ const struct SpriteTemplate gUnknown_83E5D94 = { .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E5D48, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -311,7 +311,7 @@ const struct SpriteTemplate gUnknown_83E5DE4 = { .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E5DB8, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -322,7 +322,7 @@ const struct SpriteTemplate gUnknown_83E5DFC = { .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E5D48, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -333,7 +333,7 @@ const struct SpriteTemplate gUnknown_83E5E14 = { .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E5D48, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -344,7 +344,7 @@ static const struct SpriteTemplate gUnknown_83E5E2C = { .tileTag = ANIM_TAG_WARM_ROCK, .paletteTag = ANIM_TAG_WARM_ROCK, - .oam = &gOamData_83AC9D0, + .oam = &gOamData_AffineOff_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -366,7 +366,7 @@ const struct SpriteTemplate gUnknown_83E5E60 = { .tileTag = ANIM_TAG_WARM_ROCK, .paletteTag = ANIM_TAG_WARM_ROCK, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -412,7 +412,7 @@ const struct SpriteTemplate gUnknown_83E5EB4 = { .tileTag = ANIM_TAG_WISP_ORB, .paletteTag = ANIM_TAG_WISP_ORB, - .oam = &gOamData_83AC9D0, + .oam = &gOamData_AffineOff_ObjNormal_16x16, .anims = gUnknown_83E5EA4, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -437,7 +437,7 @@ const struct SpriteTemplate gUnknown_83E5EE4 = { .tileTag = ANIM_TAG_WISP_FIRE, .paletteTag = ANIM_TAG_WISP_FIRE, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E5EE0, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, diff --git a/src/flying.c b/src/flying.c index 59378c2f1..6d4a1eb56 100644 --- a/src/flying.c +++ b/src/flying.c @@ -39,7 +39,7 @@ const struct SpriteTemplate gUnknown_83E6AE8 = { .tileTag = ANIM_TAG_GUST, .paletteTag = ANIM_TAG_GUST, - .oam = &gOamData_83ACA20, + .oam = &gOamData_AffineOff_ObjNormal_32x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -62,7 +62,7 @@ const struct SpriteTemplate gUnknown_83E6B1C = { .tileTag = ANIM_TAG_GUST, .paletteTag = ANIM_TAG_GUST, - .oam = &gOamData_83ACA80, + .oam = &gOamData_AffineNormal_ObjNormal_32x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E6B18, @@ -87,7 +87,7 @@ const struct SpriteTemplate gUnknown_83E6B4C = { .tileTag = ANIM_TAG_AIR_WAVE_2, .paletteTag = ANIM_TAG_AIR_WAVE_2, - .oam = &gOamData_83AC9F8, + .oam = &gOamData_AffineOff_ObjNormal_32x16, .anims = gUnknown_83E6B48, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -130,7 +130,7 @@ const struct SpriteTemplate gUnknown_83E6BB8 = { .tileTag = ANIM_TAG_ROUND_SHADOW, .paletteTag = ANIM_TAG_ROUND_SHADOW, - .oam = &gOamData_83ACAA0, + .oam = &gOamData_AffineDouble_ObjNormal_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E6B8C, @@ -141,7 +141,7 @@ const struct SpriteTemplate gUnknown_83E6BD0 = { .tileTag = ANIM_TAG_ROUND_SHADOW, .paletteTag = ANIM_TAG_ROUND_SHADOW, - .oam = &gOamData_83ACA40, + .oam = &gOamData_AffineNormal_ObjNormal_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E6BB0, @@ -170,7 +170,7 @@ const struct SpriteTemplate gUnknown_83E6C00 = { .tileTag = ANIM_TAG_WHITE_FEATHER, .paletteTag = ANIM_TAG_WHITE_FEATHER, - .oam = &gOamData_83ACA38, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = gUnknown_83E6BF8, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -184,7 +184,7 @@ const struct SpriteTemplate gUnknown_83E6C38 = { .tileTag = ANIM_TAG_SMALL_BUBBLES, .paletteTag = ANIM_TAG_SMALL_BUBBLES, - .oam = &gOamData_83AC9D0, + .oam = &gOamData_AffineOff_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -195,7 +195,7 @@ const struct SpriteTemplate gUnknown_83E6C50 = { .tileTag = ANIM_TAG_WHITE_FEATHER, .paletteTag = ANIM_TAG_WHITE_FEATHER, - .oam = &gOamData_83ACA38, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = gUnknown_83E6BF8, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -221,7 +221,7 @@ const struct SpriteTemplate gUnknown_83E6C84 = { .tileTag = ANIM_TAG_WHIRLWIND_LINES, .paletteTag = ANIM_TAG_WHIRLWIND_LINES, - .oam = &gOamData_83AC9F8, + .oam = &gOamData_AffineOff_ObjNormal_32x16, .anims = gUnknown_83E6C80, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -247,7 +247,7 @@ const struct SpriteTemplate gUnknown_83E6CD0 = { .tileTag = ANIM_TAG_ROUND_SHADOW, .paletteTag = ANIM_TAG_ROUND_SHADOW, - .oam = &gOamData_83ACAA0, + .oam = &gOamData_AffineDouble_ObjNormal_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E6CCC, @@ -269,7 +269,7 @@ const struct SpriteTemplate gUnknown_83E6CFC = { .tileTag = ANIM_TAG_ROUND_SHADOW, .paletteTag = ANIM_TAG_ROUND_SHADOW, - .oam = &gOamData_83ACAA0, + .oam = &gOamData_AffineDouble_ObjNormal_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E6CF8, @@ -294,7 +294,7 @@ const struct SpriteTemplate gUnknown_83E6D40 = { .tileTag = ANIM_TAG_ROUND_SHADOW, .paletteTag = ANIM_TAG_ROUND_SHADOW, - .oam = &gOamData_83ACAA0, + .oam = &gOamData_AffineDouble_ObjNormal_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E6D3C, @@ -320,7 +320,7 @@ const struct SpriteTemplate gUnknown_83E6D7C = { .tileTag = ANIM_TAG_SPLASH, .paletteTag = ANIM_TAG_SPLASH, - .oam = &gOamData_83ACAA0, + .oam = &gOamData_AffineDouble_ObjNormal_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -331,7 +331,7 @@ const struct SpriteTemplate gUnknown_83E6D94 = { .tileTag = ANIM_TAG_SWEAT_BEAD, .paletteTag = ANIM_TAG_SWEAT_BEAD, - .oam = &gOamData_83AC9C8, + .oam = &gOamData_AffineOff_ObjNormal_8x8, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -342,7 +342,7 @@ const struct SpriteTemplate gUnknown_83E6DAC = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT, - .oam = &gOamData_83ACB00, + .oam = &gOamData_AffineOff_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -353,7 +353,7 @@ const struct SpriteTemplate gUnknown_83E6DB4 = { .tileTag = ANIM_TAG_BIRD, .paletteTag = ANIM_TAG_BIRD, - .oam = &gOamData_83ACAA0, + .oam = &gOamData_AffineDouble_ObjNormal_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, diff --git a/src/ghost.c b/src/ghost.c index 30430309e..793c9838c 100644 --- a/src/ghost.c +++ b/src/ghost.c @@ -63,7 +63,7 @@ const struct SpriteTemplate gUnknown_83E75C4 = { .tileTag = ANIM_TAG_YELLOW_BALL, .paletteTag = ANIM_TAG_YELLOW_BALL, - .oam = &gOamData_83ACA90, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E75C0, @@ -74,7 +74,7 @@ const struct SpriteTemplate gUnknown_83E75DC = { .tileTag = ANIM_TAG_YELLOW_BALL, .paletteTag = ANIM_TAG_YELLOW_BALL, - .oam = &gOamData_83ACAF0, + .oam = &gOamData_AffineOff_ObjBlend_16x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -96,7 +96,7 @@ const struct SpriteTemplate gShadowBallSpriteTemplate = { .tileTag = ANIM_TAG_SHADOW_BALL, .paletteTag = ANIM_TAG_SHADOW_BALL, - .oam = &gOamData_83ACA38, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E7604, @@ -122,7 +122,7 @@ const struct SpriteTemplate gUnknown_83E763C = { .tileTag = ANIM_TAG_LICK, .paletteTag = ANIM_TAG_LICK, - .oam = &gOamData_83ACA18, + .oam = &gOamData_AffineOff_ObjNormal_16x32, .anims = gUnknown_83E7638, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -146,7 +146,7 @@ const struct SpriteTemplate gUnknown_83E7668 = { .tileTag = ANIM_TAG_WHITE_SHADOW, .paletteTag = ANIM_TAG_WHITE_SHADOW, - .oam = &gOamData_83ACB20, + .oam = &gOamData_AffineOff_ObjBlend_64x32, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -157,7 +157,7 @@ const struct SpriteTemplate gUnknown_83E7680 = { .tileTag = ANIM_TAG_NAIL, .paletteTag = ANIM_TAG_NAIL, - .oam = &gOamData_83ACB18, + .oam = &gOamData_AffineOff_ObjBlend_32x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -168,7 +168,7 @@ const struct SpriteTemplate gUnknown_83E7698 = { .tileTag = ANIM_TAG_GHOSTLY_SPIRIT, .paletteTag = ANIM_TAG_GHOSTLY_SPIRIT, - .oam = &gOamData_83ACAF8, + .oam = &gOamData_AffineOff_ObjBlend_32x32, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -179,7 +179,7 @@ const struct SpriteTemplate gUnknown_83E76B0 = { .tileTag = ANIM_TAG_DEVIL, .paletteTag = ANIM_TAG_DEVIL, - .oam = &gOamData_83ACAF8, + .oam = &gOamData_AffineOff_ObjBlend_32x32, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -204,7 +204,7 @@ const struct SpriteTemplate gUnknown_83E76E0 = { .tileTag = ANIM_TAG_PURPLE_FLAME, .paletteTag = ANIM_TAG_PURPLE_FLAME, - .oam = &gOamData_83ACB38, + .oam = &gOamData_AffineOff_ObjBlend_16x32, .anims = gUnknown_83E76DC, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -1319,13 +1319,13 @@ static void sub_80B6BE4(u8 taskId) SetGpuReg(REG_OFFSET_BG2HOFS, gBattle_BG2_X); SetGpuReg(REG_OFFSET_BG2VOFS, gBattle_BG2_Y); sub_80752C8(&animBgData, 2); - AnimLoadCompressedBgGfx(animBgData.bgId, gFile_graphics_battle_anims_backgrounds_scary_face_sheet, animBgData.tilesOffset); - LoadCompressedPalette(gFile_graphics_battle_anims_backgrounds_scary_face_palette, 16 * animBgData.paletteId, 0x20); + AnimLoadCompressedBgGfx(animBgData.bgId, gBattleAnim_ScaryFaceGfx, animBgData.tilesOffset); + LoadCompressedPalette(gBattleAnim_ScaryFacePal, 16 * animBgData.paletteId, 0x20); break; case 3: sub_80752C8(&animBgData, 2); gMonSpritesGfxPtr->field_17C = AllocZeroed(0x2000); - LZDecompressWram(gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap, gMonSpritesGfxPtr->field_17C); + LZDecompressWram(gBattleAnimBgTilemap_ScaryFacePlayer, gMonSpritesGfxPtr->field_17C); sub_80730C0(animBgData.paletteId, gMonSpritesGfxPtr->field_17C, 256, 0); CopyToBgTilemapBufferRect_ChangePalette(animBgData.bgId, gMonSpritesGfxPtr->field_17C, 0, 0, 0x20, 0x20, 0x11); CopyBgTilemapBufferToVram(2); diff --git a/src/ground.c b/src/ground.c index 7ab6b6e95..423671112 100644 --- a/src/ground.c +++ b/src/ground.c @@ -52,7 +52,7 @@ const struct SpriteTemplate gUnknown_83E7A28 = { .tileTag = ANIM_TAG_BONE, .paletteTag = ANIM_TAG_BONE, - .oam = &gOamData_83ACA38, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E7A20, @@ -63,7 +63,7 @@ const struct SpriteTemplate gUnknown_83E7A40 = { .tileTag = ANIM_TAG_BONE, .paletteTag = ANIM_TAG_BONE, - .oam = &gOamData_83ACA38, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E7A24, @@ -74,7 +74,7 @@ const struct SpriteTemplate gUnknown_83E7A58 = { .tileTag = ANIM_TAG_MUD_SAND, .paletteTag = ANIM_TAG_MUD_SAND, - .oam = &gOamData_83AC9C8, + .oam = &gOamData_AffineOff_ObjNormal_8x8, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -96,7 +96,7 @@ const struct SpriteTemplate gUnknown_83E7A7C = { .tileTag = ANIM_TAG_MUD_SAND, .paletteTag = ANIM_TAG_MUD_SAND, - .oam = &gOamData_83AC9D0, + .oam = &gOamData_AffineOff_ObjNormal_16x16, .anims = gUnknown_83E7A78, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -107,7 +107,7 @@ const struct SpriteTemplate gUnknown_83E7A94 = { .tileTag = ANIM_TAG_MUD_SAND, .paletteTag = ANIM_TAG_MUD_SAND, - .oam = &gOamData_83AC9D0, + .oam = &gOamData_AffineOff_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -118,7 +118,7 @@ const struct SpriteTemplate gUnknown_83E7AAC = { .tileTag = ANIM_TAG_MUD_SAND, .paletteTag = ANIM_TAG_MUD_SAND, - .oam = &gOamData_83AC9C8, + .oam = &gOamData_AffineOff_ObjNormal_8x8, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -129,7 +129,7 @@ const struct SpriteTemplate gUnknown_83E7AC4 = { .tileTag = ANIM_TAG_DIRT_MOUND, .paletteTag = ANIM_TAG_DIRT_MOUND, - .oam = &gOamData_83AC9F8, + .oam = &gOamData_AffineOff_ObjNormal_32x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -66,7 +66,7 @@ static const struct SpriteTemplate gUnknown_83E62D0 = { .tileTag = ANIM_TAG_ICE_CRYSTALS, .paletteTag = ANIM_TAG_ICE_CRYSTALS, - .oam = &gOamData_83AC9C8, + .oam = &gOamData_AffineOff_ObjNormal_8x8, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -155,7 +155,7 @@ const struct SpriteTemplate gUnknown_83E6348 = { .tileTag = ANIM_TAG_ICE_CRYSTALS, .paletteTag = ANIM_TAG_ICE_CRYSTALS, - .oam = &gOamData_83ACBE8, + .oam = &gOamData_AffineDouble_ObjBlend_8x16, .anims = gUnknown_83E6320, .images = NULL, .affineAnims = gUnknown_83E6344, @@ -166,7 +166,7 @@ const struct SpriteTemplate gUnknown_83E6360 = { .tileTag = ANIM_TAG_ICE_CRYSTALS, .paletteTag = ANIM_TAG_ICE_CRYSTALS, - .oam = &gOamData_83ACAE8, + .oam = &gOamData_AffineOff_ObjBlend_8x8, .anims = gUnknown_83E6324, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -188,7 +188,7 @@ const struct SpriteTemplate gUnknown_83E638C = { .tileTag = ANIM_TAG_ICE_CRYSTALS, .paletteTag = ANIM_TAG_ICE_CRYSTALS, - .oam = &gOamData_83ACB88, + .oam = &gOamData_AffineNormal_ObjBlend_8x16, .anims = gUnknown_83E6320, .images = NULL, .affineAnims = gUnknown_83E6388, @@ -199,7 +199,7 @@ const struct SpriteTemplate gUnknown_83E63A4 = { .tileTag = ANIM_TAG_ICE_CRYSTALS, .paletteTag = ANIM_TAG_ICE_CRYSTALS, - .oam = &gOamData_83ACAE8, + .oam = &gOamData_AffineOff_ObjBlend_8x8, .anims = gUnknown_83E6324, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -223,7 +223,7 @@ const struct SpriteTemplate gUnknown_83E63E0 = { .tileTag = ANIM_TAG_ICE_CRYSTALS, .paletteTag = ANIM_TAG_ICE_CRYSTALS, - .oam = &gOamData_83ACB88, + .oam = &gOamData_AffineNormal_ObjBlend_8x16, .anims = gUnknown_83E6320, .images = NULL, .affineAnims = gUnknown_83E63DC, @@ -234,7 +234,7 @@ const struct SpriteTemplate gUnknown_83E63F8 = { .tileTag = ANIM_TAG_ICE_CRYSTALS, .paletteTag = ANIM_TAG_ICE_CRYSTALS, - .oam = &gOamData_83ACB48, + .oam = &gOamData_AffineNormal_ObjBlend_8x8, .anims = gUnknown_83E6324, .images = NULL, .affineAnims = gUnknown_83E63DC, @@ -245,7 +245,7 @@ const struct SpriteTemplate gUnknown_83E6410 = { .tileTag = ANIM_TAG_ICE_CRYSTALS, .paletteTag = ANIM_TAG_ICE_CRYSTALS, - .oam = &gOamData_83AC9C8, + .oam = &gOamData_AffineOff_ObjNormal_8x8, .anims = gUnknown_83E6328, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -256,7 +256,7 @@ const struct SpriteTemplate gUnknown_83E6428 = { .tileTag = ANIM_TAG_ICE_CRYSTALS, .paletteTag = ANIM_TAG_ICE_CRYSTALS, - .oam = &gOamData_83AC9D0, + .oam = &gOamData_AffineOff_ObjNormal_16x16, .anims = gUnknown_83E632C, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -267,7 +267,7 @@ const struct SpriteTemplate gUnknown_83E6440 = { .tileTag = ANIM_TAG_ICE_CRYSTALS, .paletteTag = ANIM_TAG_ICE_CRYSTALS, - .oam = &gOamData_83AC9C8, + .oam = &gOamData_AffineOff_ObjNormal_8x8, .anims = gUnknown_83E6328, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -295,7 +295,7 @@ const struct SpriteTemplate gUnknown_83E647C = { .tileTag = ANIM_TAG_ICE_SPIKES, .paletteTag = ANIM_TAG_ICE_SPIKES, - .oam = &gOamData_83ACB28, + .oam = &gOamData_AffineOff_ObjBlend_8x16, .anims = gUnknown_83E6478, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -318,7 +318,7 @@ const struct SpriteTemplate gUnknown_83E64A4 = { .tileTag = ANIM_TAG_MIST_CLOUD, .paletteTag = ANIM_TAG_MIST_CLOUD, - .oam = &gOamData_83ACB18, + .oam = &gOamData_AffineOff_ObjBlend_32x16, .anims = gUnknown_83E64A0, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -329,7 +329,7 @@ const struct SpriteTemplate gUnknown_83E64BC = { .tileTag = ANIM_TAG_PURPLE_GAS_CLOUD, .paletteTag = ANIM_TAG_PURPLE_GAS_CLOUD, - .oam = &gOamData_83ACB18, + .oam = &gOamData_AffineOff_ObjBlend_32x16, .anims = gUnknown_83E64A0, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -345,7 +345,7 @@ const struct SpriteTemplate gUnknown_83E64E8 = { .tileTag = ANIM_TAG_SMALL_BUBBLES, .paletteTag = ANIM_TAG_SMALL_BUBBLES, - .oam = &gOamData_83AC9D0, + .oam = &gOamData_AffineOff_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -361,7 +361,7 @@ const struct SpriteTemplate gUnknown_83E6514 = { .tileTag = ANIM_TAG_PURPLE_GAS_CLOUD, .paletteTag = ANIM_TAG_PURPLE_GAS_CLOUD, - .oam = &gOamData_83ACB18, + .oam = &gOamData_AffineOff_ObjBlend_32x16, .anims = gUnknown_83E64A0, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -422,7 +422,7 @@ static const struct SpriteTemplate gUnknown_83E65A4 = { .tileTag = ANIM_TAG_HAIL, .paletteTag = ANIM_TAG_HAIL, - .oam = &gOamData_83ACA30, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E6594, @@ -433,7 +433,7 @@ const struct SpriteTemplate gUnknown_83E65BC = { .tileTag = ANIM_TAG_HAIL, .paletteTag = ANIM_TAG_HAIL, - .oam = &gOamData_83ACA30, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E65A0, @@ -504,7 +504,7 @@ const struct SpriteTemplate gUnknown_83E665C = { .tileTag = ANIM_TAG_ICE_CHUNK, .paletteTag = ANIM_TAG_ICE_CHUNK, - .oam = &gOamData_83ACA98, + .oam = &gOamData_AffineDouble_ObjNormal_32x32, .anims = gUnknown_83E65F0, .images = NULL, .affineAnims = gUnknown_83E6648, @@ -515,7 +515,7 @@ const struct SpriteTemplate gUnknown_83E6674 = { .tileTag = ANIM_TAG_ICE_CRYSTALS, .paletteTag = ANIM_TAG_ICE_CRYSTALS, - .oam = &gOamData_83AC9C8, + .oam = &gOamData_AffineOff_ObjNormal_8x8, .anims = gUnknown_83E6324, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c index 44a40c6ec..3de09ab44 100644 --- a/src/mevent_8145654.c +++ b/src/mevent_8145654.c @@ -13,6 +13,7 @@ #include "string_util.h" #include "link_rfu.h" #include "mevent.h" +#include "battle_anim.h" struct UnkStruct_8467FB8 { @@ -59,8 +60,6 @@ void sub_8145D18(u8 whichWindow); void sub_8146060(void); void sub_81461D8(void); -extern const struct OamData gOamData_83AC9F8; - const u8 gUnknown_8467068[][3] = { {0, 2, 3}, {0, 1, 2} @@ -114,7 +113,7 @@ const struct SpritePalette gUnknown_8467F60[] = { {gUnknown_8467ED4, 0x8000} }; const struct SpriteTemplate gUnknown_8467FA0 = { - 0x8000, 0x8000, &gOamData_83AC9F8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + 0x8000, 0x8000, &gOamData_AffineOff_ObjNormal_32x16, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; const struct UnkStruct_8467FB8 gUnknown_8467FB8[8] = { {1, 0, 0, 0, gUnknown_846718C, gUnknown_8467288, gUnknown_846708C}, diff --git a/src/normal.c b/src/normal.c index 4d86b55a6..4e045340f 100644 --- a/src/normal.c +++ b/src/normal.c @@ -63,7 +63,7 @@ const struct SpriteTemplate gConfusionDuckSpriteTemplate = { .tileTag = ANIM_TAG_DUCK, .paletteTag = ANIM_TAG_DUCK, - .oam = &gOamData_83AC9D0, + .oam = &gOamData_AffineOff_ObjNormal_16x16, .anims = gUnknown_83E7B04, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -111,7 +111,7 @@ const struct SpriteTemplate gUnknown_83E7B70 = { .tileTag = ANIM_TAG_SPARKLE_4, .paletteTag = ANIM_TAG_SPARKLE_4, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E7B6C, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -168,7 +168,7 @@ const struct SpriteTemplate gBasicHitSplatSpriteTemplate = { .tileTag = ANIM_TAG_IMPACT, .paletteTag = ANIM_TAG_IMPACT, - .oam = &gOamData_83ACB58, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E7BF8, @@ -179,7 +179,7 @@ const struct SpriteTemplate gUnknown_83E7C20 = { .tileTag = ANIM_TAG_IMPACT, .paletteTag = ANIM_TAG_IMPACT, - .oam = &gOamData_83ACB58, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E7BF8, @@ -190,7 +190,7 @@ const struct SpriteTemplate gUnknown_83E7C38 = { .tileTag = ANIM_TAG_WATER_IMPACT, .paletteTag = ANIM_TAG_WATER_IMPACT, - .oam = &gOamData_83ACB58, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E7BF8, @@ -201,7 +201,7 @@ const struct SpriteTemplate gUnknown_83E7C50 = { .tileTag = ANIM_TAG_IMPACT, .paletteTag = ANIM_TAG_IMPACT, - .oam = &gOamData_83ACB58, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E7BF8, @@ -212,7 +212,7 @@ const struct SpriteTemplate gUnknown_83E7C68 = { .tileTag = ANIM_TAG_IMPACT, .paletteTag = ANIM_TAG_IMPACT, - .oam = &gOamData_83ACB58, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E7BF8, @@ -223,7 +223,7 @@ const struct SpriteTemplate gUnknown_83E7C80 = { .tileTag = ANIM_TAG_CROSS_IMPACT, .paletteTag = ANIM_TAG_CROSS_IMPACT, - .oam = &gOamData_83ACAF8, + .oam = &gOamData_AffineOff_ObjBlend_32x32, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -234,7 +234,7 @@ const struct SpriteTemplate gUnknown_83E7C98 = { .tileTag = ANIM_TAG_IMPACT, .paletteTag = ANIM_TAG_IMPACT, - .oam = &gOamData_83ACA38, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E7BF8, @@ -245,7 +245,7 @@ const struct SpriteTemplate gUnknown_83E7CB0 = { .tileTag = ANIM_TAG_IMPACT, .paletteTag = ANIM_TAG_IMPACT, - .oam = &gOamData_83ACB58, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E7BF8, diff --git a/src/oak_speech.c b/src/oak_speech.c index 3f946e13f..79f8b18c7 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -328,12 +328,12 @@ static const union AnimCmd *const sGrassPlatformAnims3[] = { sGrassPlatformAnim3 }; -extern const struct OamData gOamData_83ACAF8; +extern const struct OamData gOamData_AffineOff_ObjBlend_32x32; static const struct SpriteTemplate sOakSpeech_GrassPlatformSpriteTemplates[3] = { - { 0x1000, 0x1000, &gOamData_83ACAF8, sGrassPlatformAnims1, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, - { 0x1000, 0x1000, &gOamData_83ACAF8, sGrassPlatformAnims2, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, - { 0x1000, 0x1000, &gOamData_83ACAF8, sGrassPlatformAnims3, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, + { 0x1000, 0x1000, &gOamData_AffineOff_ObjBlend_32x32, sGrassPlatformAnims1, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, + { 0x1000, 0x1000, &gOamData_AffineOff_ObjBlend_32x32, sGrassPlatformAnims2, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, + { 0x1000, 0x1000, &gOamData_AffineOff_ObjBlend_32x32, sGrassPlatformAnims3, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, }; static const union AnimCmd sPikaAnim1[] = { @@ -389,14 +389,14 @@ static const union AnimCmd *const sPikaAnims3[] = { sPikaAnim3 }; -extern const struct OamData gOamData_83AC9D8; -extern const struct OamData gOamData_83AC9F8; -extern const struct OamData gOamData_83AC9E8; +extern const struct OamData gOamData_AffineOff_ObjNormal_32x32; +extern const struct OamData gOamData_AffineOff_ObjNormal_32x16; +extern const struct OamData gOamData_AffineOff_ObjNormal_16x8; static const struct SpriteTemplate sOakSpeech_PikaSpriteTemplates[3] = { - { 0x1001, 0x1001, &gOamData_83AC9D8, sPikaAnims1, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, - { 0x1002, 0x1001, &gOamData_83AC9F8, sPikaAnims2, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, - { 0x1003, 0x1001, &gOamData_83AC9E8, sPikaAnims3, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy } + { 0x1001, 0x1001, &gOamData_AffineOff_ObjNormal_32x32, sPikaAnims1, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, + { 0x1002, 0x1001, &gOamData_AffineOff_ObjNormal_32x16, sPikaAnims2, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }, + { 0x1003, 0x1001, &gOamData_AffineOff_ObjNormal_16x8, sPikaAnims3, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy } }; static const u8 *const sHelpDocsPtrs[] = { diff --git a/src/poison.c b/src/poison.c index 7a0788c29..af7f8ee86 100644 --- a/src/poison.c +++ b/src/poison.c @@ -30,7 +30,7 @@ const struct SpriteTemplate gUnknown_83E69AC = { .tileTag = ANIM_TAG_TOXIC_BUBBLE, .paletteTag = ANIM_TAG_TOXIC_BUBBLE, - .oam = &gOamData_83ACA18, + .oam = &gOamData_AffineOff_ObjNormal_16x32, .anims = gUnknown_83E69A8, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -98,7 +98,7 @@ const struct SpriteTemplate gUnknown_83E6A20 = { .tileTag = ANIM_TAG_POISON_BUBBLE, .paletteTag = ANIM_TAG_POISON_BUBBLE, - .oam = &gOamData_83ACA90, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, .anims = gUnknown_83E69DC, .images = NULL, .affineAnims = gUnknown_83E6A18, @@ -109,7 +109,7 @@ const struct SpriteTemplate gUnknown_83E6A38 = { .tileTag = ANIM_TAG_POISON_BUBBLE, .paletteTag = ANIM_TAG_POISON_BUBBLE, - .oam = &gOamData_83ACA90, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, .anims = gUnknown_83E69DC, .images = NULL, .affineAnims = gUnknown_83E6A18, @@ -120,7 +120,7 @@ const struct SpriteTemplate gUnknown_83E6A50 = { .tileTag = ANIM_TAG_POISON_BUBBLE, .paletteTag = ANIM_TAG_POISON_BUBBLE, - .oam = &gOamData_83ACA30, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, .anims = gUnknown_83E69E4, .images = NULL, .affineAnims = gUnknown_83E6A1C, @@ -143,7 +143,7 @@ const struct SpriteTemplate gUnknown_83E6A84 = { .tileTag = ANIM_TAG_POISON_BUBBLE, .paletteTag = ANIM_TAG_POISON_BUBBLE, - .oam = &gOamData_83ACA90, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, .anims = gUnknown_83E69E0, .images = NULL, .affineAnims = gUnknown_83E6A80, @@ -166,7 +166,7 @@ const struct SpriteTemplate gPoisonBubbleSpriteTemplate = { .tileTag = ANIM_TAG_POISON_BUBBLE, .paletteTag = ANIM_TAG_POISON_BUBBLE, - .oam = &gOamData_83ACA30, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, .anims = gUnknown_83E69DC, .images = NULL, .affineAnims = gUnknown_83E6AB4, @@ -177,7 +177,7 @@ const struct SpriteTemplate gWaterBubbleSpriteTemplate = { .tileTag = ANIM_TAG_SMALL_BUBBLES, .paletteTag = ANIM_TAG_SMALL_BUBBLES, - .oam = &gOamData_83ACB50, + .oam = &gOamData_AffineNormal_ObjBlend_16x16, .anims = gUnknown_83E5A78, .images = NULL, .affineAnims = gUnknown_83E6AB4, diff --git a/src/psychic.c b/src/psychic.c index bbb6c3ed5..722ea014f 100644 --- a/src/psychic.c +++ b/src/psychic.c @@ -43,7 +43,7 @@ const struct SpriteTemplate gUnknown_83E6DF8 = { .tileTag = ANIM_TAG_SPIRAL, .paletteTag = ANIM_TAG_SPIRAL, - .oam = &gOamData_83ACB60, + .oam = &gOamData_AffineNormal_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E6DF4, @@ -54,7 +54,7 @@ const struct SpriteTemplate gUnknown_83E6E10 = { .tileTag = ANIM_TAG_GREEN_LIGHT_WALL, .paletteTag = ANIM_TAG_GREEN_LIGHT_WALL, - .oam = &gOamData_83ACB00, + .oam = &gOamData_AffineOff_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -65,7 +65,7 @@ const struct SpriteTemplate gUnknown_83E6E28 = { .tileTag = ANIM_TAG_BLUE_LIGHT_WALL, .paletteTag = ANIM_TAG_BLUE_LIGHT_WALL, - .oam = &gOamData_83ACB00, + .oam = &gOamData_AffineOff_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -76,7 +76,7 @@ const struct SpriteTemplate gUnknown_83E6E40 = { .tileTag = ANIM_TAG_RED_LIGHT_WALL, .paletteTag = ANIM_TAG_RED_LIGHT_WALL, - .oam = &gOamData_83ACB00, + .oam = &gOamData_AffineOff_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -87,7 +87,7 @@ const struct SpriteTemplate gUnknown_83E6E58 = { .tileTag = ANIM_TAG_GRAY_LIGHT_WALL, .paletteTag = ANIM_TAG_GRAY_LIGHT_WALL, - .oam = &gOamData_83ACB00, + .oam = &gOamData_AffineOff_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -98,7 +98,7 @@ const struct SpriteTemplate gUnknown_83E6E70 = { .tileTag = ANIM_TAG_ORANGE_LIGHT_WALL, .paletteTag = ANIM_TAG_ORANGE_LIGHT_WALL, - .oam = &gOamData_83ACB00, + .oam = &gOamData_AffineOff_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -124,7 +124,7 @@ const struct SpriteTemplate gUnknown_83E6EA4 = { .tileTag = ANIM_TAG_SPARKLE_4, .paletteTag = ANIM_TAG_SPARKLE_4, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E6EA0, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -149,7 +149,7 @@ const struct SpriteTemplate gUnknown_83E6ED4 = { .tileTag = ANIM_TAG_SPARKLE_3, .paletteTag = ANIM_TAG_SPARKLE_3, - .oam = &gOamData_83AC9D0, + .oam = &gOamData_AffineOff_ObjNormal_16x16, .anims = gUnknown_83E6ED0, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -160,7 +160,7 @@ const struct SpriteTemplate gUnknown_83E6EEC = { .tileTag = ANIM_TAG_GOLD_RING, .paletteTag = ANIM_TAG_GOLD_RING, - .oam = &gOamData_83ACA18, + .oam = &gOamData_AffineOff_ObjNormal_16x32, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -217,7 +217,7 @@ const struct SpriteTemplate gUnknown_83E6F8C = { .tileTag = ANIM_TAG_BENT_SPOON, .paletteTag = ANIM_TAG_BENT_SPOON, - .oam = &gOamData_83ACA18, + .oam = &gOamData_AffineOff_ObjNormal_16x32, .anims = gUnknown_83E6F84, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -259,7 +259,7 @@ const struct SpriteTemplate gUnknown_83E6FF4 = { .tileTag = ANIM_TAG_AMNESIA, .paletteTag = ANIM_TAG_AMNESIA, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E6FC4, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -285,7 +285,7 @@ static const struct SpriteTemplate gUnknown_83E7044 = { .tileTag = ANIM_TAG_HOLLOW_ORB, .paletteTag = ANIM_TAG_HOLLOW_ORB, - .oam = &gOamData_83ACAF0, + .oam = &gOamData_AffineOff_ObjBlend_16x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -296,7 +296,7 @@ const struct SpriteTemplate gUnknown_83E705C = { .tileTag = 0x280A, .paletteTag = 0x280A, - .oam = &gOamData_83AC9E0, + .oam = &gOamData_AffineOff_ObjNormal_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -349,7 +349,7 @@ static const struct SpriteTemplate gUnknown_83E7114 = { .tileTag = ANIM_TAG_BLUEGREEN_ORB, .paletteTag = ANIM_TAG_BLUEGREEN_ORB, - .oam = &gOamData_83ACA30, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E7104, @@ -372,7 +372,7 @@ const struct SpriteTemplate gUnknown_83E7148 = { .tileTag = ANIM_TAG_WHITE_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_WHITE_CIRCLE_OF_LIGHT, - .oam = &gOamData_83ACBC0, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E7144, @@ -410,7 +410,7 @@ const struct SpriteTemplate gUnknown_83E71D0 = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT, - .oam = &gOamData_83ACBC0, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_83E71C8, diff --git a/src/rock.c b/src/rock.c index c4b668941..082f3b655 100644 --- a/src/rock.c +++ b/src/rock.c @@ -55,7 +55,7 @@ const struct SpriteTemplate gUnknown_83E73B4 = { .tileTag = ANIM_TAG_ROCKS, .paletteTag = ANIM_TAG_ROCKS, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E73A8, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -66,7 +66,7 @@ const struct SpriteTemplate gUnknown_83E73CC = { .tileTag = ANIM_TAG_ROCKS, .paletteTag = ANIM_TAG_ROCKS, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E73A8, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -77,7 +77,7 @@ const struct SpriteTemplate gUnknown_83E73E4 = { .tileTag = ANIM_TAG_MUD_SAND, .paletteTag = ANIM_TAG_MUD_SAND, - .oam = &gOamData_83AC9C8, + .oam = &gOamData_AffineOff_ObjNormal_8x8, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -101,7 +101,7 @@ const struct SpriteTemplate gUnknown_83E7420 = { .tileTag = ANIM_TAG_WATER_ORB, .paletteTag = ANIM_TAG_WATER_ORB, - .oam = &gOamData_83ACB50, + .oam = &gOamData_AffineNormal_ObjBlend_16x16, .anims = gUnknown_83E5958, .images = NULL, .affineAnims = gUnknown_83E741C, @@ -112,7 +112,7 @@ const struct SpriteTemplate gUnknown_83E7438 = { .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E5D48, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -123,7 +123,7 @@ const struct SpriteTemplate gUnknown_83E7450 = { .tileTag = ANIM_TAG_FLYING_DIRT, .paletteTag = ANIM_TAG_FLYING_DIRT, - .oam = &gOamData_83AC9F8, + .oam = &gOamData_AffineOff_ObjNormal_32x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -213,7 +213,7 @@ const struct SpriteTemplate gUnknown_83E74C0 = { .tileTag = ANIM_TAG_ROCKS, .paletteTag = ANIM_TAG_ROCKS, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E74A8, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -224,7 +224,7 @@ const struct SpriteTemplate gUnknown_83E74D8 = { .tileTag = ANIM_TAG_MUD_SAND, .paletteTag = ANIM_TAG_MUD_SAND, - .oam = &gOamData_83AC9C8, + .oam = &gOamData_AffineOff_ObjNormal_8x8, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -235,7 +235,7 @@ const struct SpriteTemplate gUnknown_83E74F0 = { .tileTag = ANIM_TAG_ROCKS, .paletteTag = ANIM_TAG_ROCKS, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -246,7 +246,7 @@ const struct SpriteTemplate gUnknown_83E7508 = { .tileTag = ANIM_TAG_ROCKS, .paletteTag = ANIM_TAG_ROCKS, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E74A8, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -275,7 +275,7 @@ const struct SpriteTemplate gUnknown_83E7548 = { .tileTag = ANIM_TAG_ROCKS, .paletteTag = ANIM_TAG_ROCKS, - .oam = &gOamData_83ACA38, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = gUnknown_83E74A8, .images = NULL, .affineAnims = gUnknown_83E7540, @@ -286,7 +286,7 @@ const struct SpriteTemplate gUnknown_83E7560 = { .tileTag = ANIM_TAG_ROCKS, .paletteTag = ANIM_TAG_ROCKS, - .oam = &gOamData_83ACA38, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = gUnknown_83E74A8, .images = NULL, .affineAnims = gUnknown_83E7540, @@ -297,7 +297,7 @@ const struct SpriteTemplate gUnknown_83E7578 = { .tileTag = ANIM_TAG_ROCKS, .paletteTag = ANIM_TAG_ROCKS, - .oam = &gOamData_83AC9D8, + .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = gUnknown_83E74B8, .images = NULL, .affineAnims = gUnknown_83E7540, @@ -308,7 +308,7 @@ const struct SpriteTemplate gUnknown_83E7590 = { .tileTag = ANIM_TAG_ROCKS, .paletteTag = ANIM_TAG_ROCKS, - .oam = &gOamData_83ACA38, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = gUnknown_83E74B0, .images = NULL, .affineAnims = gUnknown_83E7540, @@ -583,8 +583,8 @@ void sub_80B4BD0(u8 taskId) task->data[5] = ((var3 - var1) * 8) / task->data[8]; task->data[6] = 0; task->data[7] = 0; - pan1 = BattleAnimAdjustPanning(PAN_SIDE_PLAYER); - pan2 = BattleAnimAdjustPanning(PAN_SIDE_OPPONENT); + pan1 = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER); + pan2 = BattleAnimAdjustPanning(SOUND_PAN_TARGET); task->data[13] = pan1; task->data[14] = (pan2 - pan1) / task->data[8]; task->data[1] = var4; diff --git a/src/text.c b/src/text.c index b61713ee2..93a35a07d 100644 --- a/src/text.c +++ b/src/text.c @@ -15,7 +15,7 @@ #include "constants/songs.h" extern u8 gGlyphInfo[0x90]; -extern const struct OamData gOamData_83AC9D0; +extern const struct OamData gOamData_AffineOff_ObjNormal_16x16; static void DecompressGlyphFont3(u16 glyphId, bool32 isJapanese); static void DecompressGlyphFont4(u16 glyphId, bool32 isJapanese); @@ -59,7 +59,7 @@ const struct SpriteTemplate gUnknown_81EA6B4 = { .tileTag = 0x8000, .paletteTag = 0x8000, - .oam = &gOamData_83AC9D0, + .oam = &gOamData_AffineOff_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, diff --git a/sym_common.txt b/sym_common.txt index 9a64a9d0f..345829a24 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -98,16 +98,8 @@ gUnknown_3005354: @ 3005354 .include "evolution_scene.o" .align 2 .include "save.o" - .align 2 -gUnknown_3005424: @ 3005424 - .space 0x4 - -gUnknown_3005428: @ 3005428 - .space 0x4 - -gUnknown_300542C: @ 300542C - .space 0x4 + .include "battle_anim_special.o" gUnknown_3005430: @ 3005430 .space 0x10 diff --git a/sym_ewram.txt b/sym_ewram.txt index d2c5b4543..973b74ec4 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -119,77 +119,8 @@ gUnknown_203709C: @ 203709C .include "src/palette.o" .align 2 .include "src/sound.o" - .align 2 -gUnknown_2037ED4: @ 2037ED4 - .space 0x4 - -gUnknown_2037ED8: @ 2037ED8 - .space 0x4 - -gAnimScriptCallback: @ 2037EDC - .space 0x4 - -gUnknown_2037EE0: @ 2037EE0 - .space 0x1 - -gAnimScriptActive: @ 2037EE1 - .space 0x1 - -gAnimVisualTaskCount: @ 2037EE2 - .space 0x1 - -gUnknown_2037EE3: @ 2037EE3 - .space 0x1 - -gAnimDisableStructPtr: @ 2037EE4 - .space 0x4 - -gAnimMoveDmg: @ 2037EE8 - .space 0x4 - -gAnimMovePower: @ 2037EEC - .space 0x2 - -gUnknown_2037EEE: @ 2037EEE - .space 0x10 - -gAnimFriendship: @ 2037EFE - .space 0x2 - -gWeatherMoveAnim: @ 2037F00 - .space 0x2 - -gBattleAnimArgs: @ 2037F02 - .space 0x10 - -gUnknown_2037F12: @ 2037F12 - .space 0x2 - -gUnknown_2037F14: @ 2037F14 - .space 0x2 - -gAnimMoveTurn: @ 2037F16 - .space 0x1 - -gUnknown_2037F17: @ 2037F17 - .space 0x1 - -gUnknown_2037F18: @ 2037F18 - .space 0x2 - -gBattleAnimAttacker: @ 2037F1A - .space 0x1 - -gBattleAnimTarget: @ 2037F1B - .space 0x1 - -gAnimBattlerSpecies: @ 2037F1C - .space 0x8 - -gUnknown_2037F24: @ 2037F24 - .space 0x4 - + .include "src/battle_anim.o" .align 2 .include "src/battle_anim_mons.o" .align 2 @@ -324,11 +255,8 @@ gUnknown_203998C: @ 203998C .include "src/safari_zone.o" .align 2 .include "src/item_use.o" - .align 2 -gUnknown_203999C: @ 203999C - .space 0x8 - + .include "src/battle_anim_effects_1.o" .align 2 .include "src/dragon.o" .align 2 |