summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorultima-soul <akshayjhanji@hotmail.com>2019-04-07 14:19:02 -0700
committerhuderlem <huderlem@gmail.com>2019-04-07 16:36:15 -0500
commit0a16dd0df08213b58a804b0711a7fdeb79377ce6 (patch)
treee55162aca184cb88ed0e47e95a35a4b343e2c4ea
parent963d165e06f4428605fca5c1369c9f417e8e7156 (diff)
Decompile/port rest of battle_anim plus fix 1 NONMATCHING.
-rw-r--r--asm/battle_anim_812C144.s1714
-rw-r--r--data/battle_anim_scripts.s14
-rw-r--r--include/battle_anim.h20
-rw-r--r--include/constants/battle_constants.h11
-rw-r--r--include/gba/io_reg.h2
-rw-r--r--include/rom_8077ABC.h14
-rw-r--r--ld_script.txt1
-rw-r--r--src/battle/anim/anger.c2
-rw-r--r--src/battle/anim/beta_beat_up.c2
-rw-r--r--src/battle/anim/bubble.c2
-rw-r--r--src/battle/anim/bug.c2
-rw-r--r--src/battle/anim/current.c6
-rw-r--r--src/battle/anim/dark.c24
-rw-r--r--src/battle/anim/dragon.c10
-rw-r--r--src/battle/anim/draw.c4
-rw-r--r--src/battle/anim/espeed.c4
-rw-r--r--src/battle/anim/fight.c14
-rw-r--r--src/battle/anim/finger.c4
-rw-r--r--src/battle/anim/fire.c4
-rw-r--r--src/battle/anim/flying.c14
-rw-r--r--src/battle/anim/flying_path.c4
-rw-r--r--src/battle/anim/flying_petals.c10
-rw-r--r--src/battle/anim/ghost.c12
-rw-r--r--src/battle/anim/ground.c2
-rw-r--r--src/battle/anim/grow.c4
-rw-r--r--src/battle/anim/homing.c2
-rw-r--r--src/battle/anim/ice.c26
-rw-r--r--src/battle/anim/leaf.c4
-rw-r--r--src/battle/anim/musical.c4
-rw-r--r--src/battle/anim/normal.c6
-rw-r--r--src/battle/anim/orbit.c4
-rw-r--r--src/battle/anim/orbs.c2
-rw-r--r--src/battle/anim/psychic.c50
-rw-r--r--src/battle/anim/rock.c4
-rw-r--r--src/battle/anim/shield.c4
-rw-r--r--src/battle/anim/shock.c4
-rw-r--r--src/battle/anim/sleep.c2
-rw-r--r--src/battle/anim/splash.c10
-rw-r--r--src/battle/anim/startle.c8
-rw-r--r--src/battle/anim/thought.c6
-rw-r--r--src/battle/anim/thrashing.c4
-rw-r--r--src/battle/anim/unused_1.c2
-rw-r--r--src/battle/anim/unused_5.c2
-rw-r--r--src/battle/anim/unused_7.c2
-rw-r--r--src/battle/anim/uproar.c4
-rw-r--r--src/battle/anim/wisp_fire.c4
-rw-r--r--src/battle/anim/wisp_orb.c2
-rw-r--r--src/battle/battle_anim_812C144.c1570
-rw-r--r--src/rom_8077ABC.c22
49 files changed, 1411 insertions, 2237 deletions
diff --git a/asm/battle_anim_812C144.s b/asm/battle_anim_812C144.s
deleted file mode 100644
index 45ab2de2a..000000000
--- a/asm/battle_anim_812C144.s
+++ /dev/null
@@ -1,1714 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "include/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_81318F0
-sub_81318F0: @ 81318F0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r3, _0813193C @ =gBattleAnimArgs
- movs r2, 0
- strh r2, [r3, 0xE]
- ldr r1, _08131940 @ =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 _08131914
- movs r0, 0x1
- strh r0, [r3, 0xE]
-_08131914:
- adds r0, r2, 0
- subs r0, 0x5C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x6C
- bhi _08131924
- movs r0, 0x2
- strh r0, [r3, 0xE]
-_08131924:
- lsls r0, r1, 24
- lsrs r0, 24
- cmp r0, 0xC8
- bls _08131930
- movs r0, 0x3
- strh r0, [r3, 0xE]
-_08131930:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813193C: .4byte gBattleAnimArgs
-_08131940: .4byte gAnimFriendship
- thumb_func_end sub_81318F0
-
- thumb_func_start sub_8131944
-sub_8131944: @ 8131944
- 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 r8, r0
- ldr r1, _08131974 @ =gTasks
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0x4
- bls _0813196A
- b _08131EA0
-_0813196A:
- lsls r0, 2
- ldr r1, _08131978 @ =_0813197C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08131974: .4byte gTasks
-_08131978: .4byte _0813197C
- .align 2, 0
-_0813197C:
- .4byte _08131990
- .4byte _08131A44
- .4byte _08131C20
- .4byte _08131D40
- .4byte _08131DC4
-_08131990:
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, _081319DC @ =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, _081319E0 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- mov r9, r4
- cmp r0, 0
- bne _081319E8
- ldr r2, _081319E4 @ =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 _08131A02
- .align 2, 0
-_081319DC: .4byte gTasks
-_081319E0: .4byte gBattleAnimAttacker
-_081319E4: .4byte gSprites
-_081319E8:
- ldr r3, _08131A3C @ =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
-_08131A02:
- ldr r1, _08131A40 @ =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 _08131A2E
- b _08131EA0
-_08131A2E:
- movs r0, 0
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08131EA0
- .align 2, 0
-_08131A3C: .4byte gSprites
-_08131A40: .4byte gTasks
-_08131A44:
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _08131A74
- ldr r0, _08131A6C @ =gSharedMem + 0x19348
- ldr r2, [r0, 0x8]
- mov r10, r2
- ldr r3, [r0, 0xC]
- mov r9, r3
- ldrh r5, [r0]
- ldr r0, _08131A70 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSubpriority
- lsls r0, 24
- lsrs r4, r0, 24
- movs r7, 0
- b _08131B92
- .align 2, 0
-_08131A6C: .4byte gSharedMem + 0x19348
-_08131A70: .4byte gBattleAnimAttacker
-_08131A74:
- ldr r4, _08131AD4 @ =gBattleAnimAttacker
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08131B10
- ldr r7, _08131AD8 @ =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _08131ADC @ =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
- ldrb r2, [r4]
- lsls r1, r2, 2
- ldr r0, _08131AE0 @ =gSharedMem + 0x17800
- adds r1, r0
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _08131AE4
- 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 _08131AE6
- .align 2, 0
-_08131AD4: .4byte gBattleAnimAttacker
-_08131AD8: .4byte gBattlerPartyIndexes
-_08131ADC: .4byte gPlayerParty
-_08131AE0: .4byte gSharedMem + 0x17800
-_08131AE4:
- ldrh r5, [r1, 0x2]
-_08131AE6:
- movs r0, 0x1
- bl GetAnimBattlerSpriteId
- ldr r2, _08131B0C @ =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 _08131B94
- .align 2, 0
-_08131B0C: .4byte gSprites
-_08131B10:
- ldr r7, _08131B64 @ =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _08131B68 @ =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
- ldrb r2, [r4]
- lsls r1, r2, 2
- ldr r0, _08131B6C @ =gSharedMem + 0x17800
- adds r1, r0
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _08131B70
- 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 _08131B72
- .align 2, 0
-_08131B64: .4byte gBattlerPartyIndexes
-_08131B68: .4byte gEnemyParty
-_08131B6C: .4byte gSharedMem + 0x17800
-_08131B70:
- ldrh r5, [r1, 0x2]
-_08131B72:
- movs r0, 0x1
- bl GetAnimBattlerSpriteId
- ldr r2, _08131C04 @ =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
-_08131B92:
- ldr r6, _08131C08 @ =0x0000ffe0
-_08131B94:
- ldr r0, _08131C0C @ =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 r4, r10
- str r4, [sp, 0x8]
- mov r0, r9
- str r0, [sp, 0xC]
- adds r0, r5, 0
- adds r1, r7, 0
- movs r2, 0
- bl sub_8079F44
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _08131C10 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- lsls r0, 2
- ldr r1, _08131C14 @ =gSharedMem + 0x17800
- adds r0, r1
- ldrh r0, [r0, 0x2]
- cmp r0, 0
- beq _08131BF2
- ldr r1, _08131C04 @ =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, _08131C18 @ =0x00007fff
- movs r1, 0x10
- movs r2, 0x6
- bl BlendPalette
-_08131BF2:
- ldr r0, _08131C1C @ =gTasks
- mov r3, r8
- lsls r1, r3, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- strh r5, [r1, 0x26]
- b _08131DB6
- .align 2, 0
-_08131C04: .4byte gSprites
-_08131C08: .4byte 0x0000ffe0
-_08131C0C: .4byte gBattleAnimTarget
-_08131C10: .4byte gBattleAnimAttacker
-_08131C14: .4byte gSharedMem + 0x17800
-_08131C18: .4byte 0x00007fff
-_08131C1C: .4byte gTasks
-_08131C20:
- ldr r1, _08131C6C @ =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, _08131C70 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- mov r9, r4
- cmp r0, 0
- bne _08131C78
- ldr r3, _08131C74 @ =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 _08131C8E
- .align 2, 0
-_08131C6C: .4byte gTasks
-_08131C70: .4byte gBattleAnimAttacker
-_08131C74: .4byte gSprites
-_08131C78:
- ldr r2, _08131CDC @ =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]
-_08131C8E:
- ldr r1, _08131CE0 @ =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 _08131D0E
- ldr r0, _08131CE4 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08131CEC
- lsls r4, r5, 16
- asrs r4, 16
- ldr r0, _08131CE8 @ =gBattleAnimTarget
- ldrb r0, [r0]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bge _08131D0E
- b _08131D02
- .align 2, 0
-_08131CDC: .4byte gSprites
-_08131CE0: .4byte gTasks
-_08131CE4: .4byte gBattleAnimAttacker
-_08131CE8: .4byte gBattleAnimTarget
-_08131CEC:
- lsls r4, r5, 16
- asrs r4, 16
- ldr r0, _08131D30 @ =gBattleAnimTarget
- ldrb r0, [r0]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- ble _08131D0E
-_08131D02:
- ldrh r0, [r6, 0x24]
- adds r0, 0x1
- strh r0, [r6, 0x24]
- ldr r1, _08131D34 @ =gBattleAnimArgs
- ldr r0, _08131D38 @ =0x0000ffff
- strh r0, [r1, 0xE]
-_08131D0E:
- lsls r0, r5, 16
- movs r2, 0x80
- lsls r2, 14
- adds r0, r2
- movs r1, 0x98
- lsls r1, 17
- cmp r0, r1
- bhi _08131D20
- b _08131EA0
-_08131D20:
- ldr r0, _08131D3C @ =gTasks
- mov r1, r9
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r0, 0
- strh r0, [r1, 0xA]
- b _08131DB6
- .align 2, 0
-_08131D30: .4byte gBattleAnimTarget
-_08131D34: .4byte gBattleAnimArgs
-_08131D38: .4byte 0x0000ffff
-_08131D3C: .4byte gTasks
-_08131D40:
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, _08131D8C @ =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, _08131D90 @ =gSprites
- adds r0, r5
- bl sub_807A0F4
- ldr r0, _08131D94 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- mov r9, r4
- cmp r0, 0
- bne _08131D98
- 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 _08131DAC
- .align 2, 0
-_08131D8C: .4byte gTasks
-_08131D90: .4byte gSprites
-_08131D94: .4byte gBattleAnimAttacker
-_08131D98:
- 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]
-_08131DAC:
- ldr r0, _08131DC0 @ =gTasks
- mov r1, r9
- add r1, r8
- lsls r1, 3
- adds r1, r0
-_08131DB6:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _08131EA0
- .align 2, 0
-_08131DC0: .4byte gTasks
-_08131DC4:
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, _08131E38 @ =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, _08131E3C @ =gBattleAnimAttacker
- mov r10, r0
- ldrb r0, [r0]
- str r2, [sp, 0x10]
- bl GetBattlerSide
- lsls r0, 24
- mov r9, r4
- ldr r2, [sp, 0x10]
- cmp r0, 0
- bne _08131E44
- ldr r1, _08131E40 @ =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 _08131E7C
- movs r2, 0
- strh r2, [r6, 0x24]
- b _08131E7C
- .align 2, 0
-_08131E38: .4byte gTasks
-_08131E3C: .4byte gBattleAnimAttacker
-_08131E40: .4byte gSprites
-_08131E44:
- ldr r1, _08131EB0 @ =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 _08131E7C
- movs r4, 0
- strh r4, [r6, 0x24]
-_08131E7C:
- ldr r1, _08131EB4 @ =gTasks
- mov r0, r9
- add r0, r8
- lsls r0, 3
- adds r0, r1
- ldrb r1, [r0, 0xA]
- strh r1, [r0, 0xA]
- ldr r1, _08131EB0 @ =gSprites
- adds r0, r3, r7
- lsls r0, 2
- adds r0, r1
- movs r1, 0x24
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _08131EA0
- mov r0, r8
- bl DestroyAnimVisualTask
-_08131EA0:
- 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
-_08131EB0: .4byte gSprites
-_08131EB4: .4byte gTasks
- thumb_func_end sub_8131944
-
- thumb_func_start sub_8131EB8
-sub_8131EB8: @ 8131EB8
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08131ECA
- cmp r0, 0x1
- beq _08131F72
- b _08131FF4
-_08131ECA:
- ldr r0, _08131F50 @ =gBattleAnimArgs
- movs r2, 0xE
- ldrsh r1, [r0, r2]
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _08131F64
- movs r0, 0x3F
- bl BattleAnimAdjustPanning
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x7A
- bl PlaySE12WithPanning
- ldr r0, _08131F54 @ =gBattleAnimTarget
- ldrb r0, [r0]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x10
- strh r0, [r4, 0x22]
- ldr r0, _08131F58 @ =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, _08131F5C @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08131FF4
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _08131FF4
- movs r0, 0x1
- bl GetAnimBattlerSpriteId
- ldr r2, _08131F60 @ =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 _08131FF4
- .align 2, 0
-_08131F50: .4byte gBattleAnimArgs
-_08131F54: .4byte gBattleAnimTarget
-_08131F58: .4byte 0x0000ffe0
-_08131F5C: .4byte gBattleAnimAttacker
-_08131F60: .4byte gSprites
-_08131F64:
- adds r0, r4, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- b _08131FF4
-_08131F72:
- 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 _08131FA6
- 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]
-_08131FA6:
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- ldrh r1, [r4, 0x32]
- adds r0, r1
- strh r0, [r4, 0x32]
- ldr r0, _08131FD0 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08131FD4
- 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 _08131FE0
- .align 2, 0
-_08131FD0: .4byte gBattleAnimAttacker
-_08131FD4:
- ldrh r1, [r4, 0x32]
- lsls r0, r1, 16
- asrs r0, 24
- ldrh r2, [r4, 0x24]
- adds r0, r2
- strh r0, [r4, 0x24]
-_08131FE0:
- movs r0, 0xFF
- ands r0, r1
- strh r0, [r4, 0x32]
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0x2
- bne _08131FF4
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08131FF4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8131EB8
-
- thumb_func_start sub_8131FFC
-sub_8131FFC: @ 8131FFC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08132024 @ =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 _08132018
- b _0813216A
-_08132018:
- lsls r0, 2
- ldr r1, _08132028 @ =_0813202C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08132024: .4byte gTasks
-_08132028: .4byte _0813202C
- .align 2, 0
-_0813202C:
- .4byte _08132040
- .4byte _08132090
- .4byte _081320EC
- .4byte _08132104
- .4byte _0813216A
-_08132040:
- ldr r0, _08132084 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r0, _08132088 @ =gBattleAnimTarget
- ldrb r0, [r0]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r2, r0, 0
- ldr r1, _0813208C @ =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 _08132076
- negs r0, r0
- strh r0, [r1, 0x8]
-_08132076:
- strh r5, [r1, 0xA]
- strh r2, [r1, 0xC]
- ldrh r0, [r1, 0x26]
- adds r0, 0x1
- strh r0, [r1, 0x26]
- b _08132188
- .align 2, 0
-_08132084: .4byte gBattleAnimAttacker
-_08132088: .4byte gBattleAnimTarget
-_0813208C: .4byte gTasks
-_08132090:
- ldr r1, _081320CC @ =gBankSpriteIds
- ldr r0, _081320D0 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- adds r0, r1
- ldrb r2, [r0]
- ldr r1, _081320D4 @ =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 _081320D8
- 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 _0813215E
- .align 2, 0
-_081320CC: .4byte gBankSpriteIds
-_081320D0: .4byte gBattleAnimAttacker
-_081320D4: .4byte gSprites
-_081320D8:
- 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 _08132188
- b _08132162
-_081320EC:
- 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 _08132188
-_08132104:
- ldr r1, _08132144 @ =gBankSpriteIds
- ldr r0, _08132148 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- adds r0, r1
- ldrb r2, [r0]
- ldr r1, _0813214C @ =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 _08132150
- 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 _08132188
- b _08132162
- .align 2, 0
-_08132144: .4byte gBankSpriteIds
-_08132148: .4byte gBattleAnimAttacker
-_0813214C: .4byte gSprites
-_08132150:
- movs r3, 0x20
- ldrsh r0, [r1, r3]
- movs r3, 0x24
- ldrsh r1, [r1, r3]
- adds r0, r1
- movs r3, 0xA
- ldrsh r1, [r2, r3]
-_0813215E:
- cmp r0, r1
- blt _08132188
-_08132162:
- ldrh r0, [r2, 0x26]
- adds r0, 0x1
- strh r0, [r2, 0x26]
- b _08132188
-_0813216A:
- ldr r1, _08132190 @ =gBankSpriteIds
- ldr r0, _08132194 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- adds r0, r1
- ldrb r2, [r0]
- ldr r1, _08132198 @ =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
-_08132188:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08132190: .4byte gBankSpriteIds
-_08132194: .4byte gBattleAnimAttacker
-_08132198: .4byte gSprites
- thumb_func_end sub_8131FFC
-
- thumb_func_start sub_813219C
-sub_813219C: @ 813219C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _08132204 @ =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, _08132208 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- movs r2, 0x1
- negs r2, r2
- adds r1, r2, 0
- cmp r0, 0
- bne _081321D0
- movs r1, 0x1
-_081321D0:
- strh r1, [r4, 0x10]
- ldr r2, _0813220C @ =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, _08132210 @ =sub_8132214
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08132204: .4byte gTasks
-_08132208: .4byte gBattleAnimAttacker
-_0813220C: .4byte gSprites
-_08132210: .4byte sub_8132214
- thumb_func_end sub_813219C
-
- thumb_func_start sub_8132214
-sub_8132214: @ 8132214
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _08132238 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _081322BC
- cmp r0, 0x1
- bgt _0813223C
- cmp r0, 0
- beq _08132242
- b _08132312
- .align 2, 0
-_08132238: .4byte gTasks
-_0813223C:
- cmp r0, 0x2
- beq _0813230C
- b _08132312
-_08132242:
- ldrh r0, [r4, 0x1E]
- adds r0, 0x8
- movs r2, 0xFF
- ands r0, r2
- strh r0, [r4, 0x1E]
- ldr r5, _081322B4 @ =gSprites
- movs r6, 0xE
- ldrsh r0, [r4, r6]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldr r3, _081322B8 @ =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 _08132312
- 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 _081322FC
- .align 2, 0
-_081322B4: .4byte gSprites
-_081322B8: .4byte gSineTable
-_081322BC:
- ldrh r0, [r4, 0x1E]
- adds r0, 0x8
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x1E]
- ldr r3, _08132304 @ =gSprites
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldr r2, _08132308 @ =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 _08132312
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- strh r2, [r1, 0x24]
-_081322FC:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08132312
- .align 2, 0
-_08132304: .4byte gSprites
-_08132308: .4byte gSineTable
-_0813230C:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_08132312:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8132214
-
- thumb_func_start sub_8132318
-sub_8132318: @ 8132318
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _0813236C @ =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 _0813235E
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0813235E:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813236C: .4byte gBattleAnimTarget
- thumb_func_end sub_8132318
-
- thumb_func_start sub_8132370
-sub_8132370: @ 8132370
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _081323A8 @ =gBattleAnimTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _081323B4
- ldr r2, _081323AC @ =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, _081323B0 @ =0x0000fff5
- strh r0, [r4, 0x2E]
- movs r0, 0xC0
- strh r0, [r4, 0x30]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- b _081323CE
- .align 2, 0
-_081323A8: .4byte gBattleAnimTarget
-_081323AC: .4byte gBattleAnimArgs
-_081323B0: .4byte 0x0000fff5
-_081323B4:
- movs r0, 0xB
- strh r0, [r4, 0x2E]
- movs r0, 0xC0
- strh r0, [r4, 0x30]
- ldr r1, _081323D8 @ =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]
-_081323CE:
- ldr r0, _081323DC @ =sub_8132318
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081323D8: .4byte gBattleAnimArgs
-_081323DC: .4byte sub_8132318
- thumb_func_end sub_8132370
-
- thumb_func_start sub_81323E0
-sub_81323E0: @ 81323E0
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _08132424 @ =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 sub_807A100
- strh r0, [r5, 0x22]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- bgt _0813240A
- movs r0, 0x10
- strh r0, [r5, 0x22]
-_0813240A:
- movs r0, 0
- strh r0, [r5, 0x3A]
- movs r1, 0x10
- strh r1, [r5, 0x3C]
- ldr r0, _08132428 @ =sub_8132430
- str r0, [r5, 0x1C]
- ldr r0, _0813242C @ =REG_BLDALPHA
- lsls r1, 8
- strh r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08132424: .4byte gBattleAnimAttacker
-_08132428: .4byte sub_8132430
-_0813242C: .4byte REG_BLDALPHA
- thumb_func_end sub_81323E0
-
- thumb_func_start sub_8132430
-sub_8132430: @ 8132430
- push {r4,lr}
- adds r3, r0, 0
- movs r0, 0x32
- ldrsh r1, [r3, r0]
- cmp r1, 0x1
- beq _081324A8
- cmp r1, 0x1
- bgt _08132446
- cmp r1, 0
- beq _08132450
- b _08132522
-_08132446:
- cmp r1, 0x2
- beq _081324BE
- cmp r1, 0x3
- beq _0813251C
- b _08132522
-_08132450:
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _08132522
- strh r1, [r3, 0x2E]
- ldrh r1, [r3, 0x30]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0813247A
- ldrh r2, [r3, 0x3A]
- movs r4, 0x3A
- ldrsh r0, [r3, r4]
- cmp r0, 0xF
- bgt _08132488
- adds r0, r2, 0x1
- strh r0, [r3, 0x3A]
- b _08132488
-_0813247A:
- ldrh r2, [r3, 0x3C]
- movs r4, 0x3C
- ldrsh r0, [r3, r4]
- cmp r0, 0
- beq _08132488
- subs r0, r2, 0x1
- strh r0, [r3, 0x3C]
-_08132488:
- adds r0, r1, 0x1
- strh r0, [r3, 0x30]
- ldr r2, _081324A4 @ =REG_BLDALPHA
- ldrh r0, [r3, 0x3C]
- lsls r0, 8
- ldrh r1, [r3, 0x3A]
- orrs r0, r1
- strh r0, [r2]
- movs r1, 0x3C
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _08132522
- b _08132510
- .align 2, 0
-_081324A4: .4byte REG_BLDALPHA
-_081324A8:
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _08132522
- strh r1, [r3, 0x2E]
- strh r1, [r3, 0x30]
- b _08132510
-_081324BE:
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _08132522
- movs r0, 0
- strh r0, [r3, 0x2E]
- ldrh r1, [r3, 0x30]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _081324EA
- ldrh r2, [r3, 0x3A]
- movs r4, 0x3A
- ldrsh r0, [r3, r4]
- cmp r0, 0
- beq _081324F8
- subs r0, r2, 0x1
- strh r0, [r3, 0x3A]
- b _081324F8
-_081324EA:
- ldrh r2, [r3, 0x3C]
- movs r4, 0x3C
- ldrsh r0, [r3, r4]
- cmp r0, 0xF
- bgt _081324F8
- adds r0, r2, 0x1
- strh r0, [r3, 0x3C]
-_081324F8:
- adds r0, r1, 0x1
- strh r0, [r3, 0x30]
- ldr r2, _08132518 @ =REG_BLDALPHA
- ldrh r0, [r3, 0x3C]
- lsls r0, 8
- ldrh r1, [r3, 0x3A]
- orrs r0, r1
- strh r0, [r2]
- movs r1, 0x3C
- ldrsh r0, [r3, r1]
- cmp r0, 0x10
- bne _08132522
-_08132510:
- ldrh r0, [r3, 0x32]
- adds r0, 0x1
- strh r0, [r3, 0x32]
- b _08132522
- .align 2, 0
-_08132518: .4byte REG_BLDALPHA
-_0813251C:
- adds r0, r3, 0
- bl move_anim_8074EE0
-_08132522:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8132430
-
- thumb_func_start sub_8132528
-sub_8132528: @ 8132528
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r2, _08132544 @ =gBattleAnimArgs
- movs r0, 0
- strh r0, [r2, 0xE]
- ldr r0, _08132548 @ =gWeatherMoveAnim
- ldrh r1, [r0]
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- beq _0813254C
- movs r0, 0x1
- b _0813256E
- .align 2, 0
-_08132544: .4byte gBattleAnimArgs
-_08132548: .4byte gWeatherMoveAnim
-_0813254C:
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- beq _08132558
- movs r0, 0x2
- b _0813256E
-_08132558:
- movs r0, 0x18
- ands r0, r1
- cmp r0, 0
- beq _08132564
- movs r0, 0x3
- b _0813256E
-_08132564:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08132570
- movs r0, 0x4
-_0813256E:
- strh r0, [r2, 0xE]
-_08132570:
- adds r0, r3, 0
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- thumb_func_end sub_8132528
-
- thumb_func_start sub_813257C
-sub_813257C: @ 813257C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _081325B4 @ =gTasks
- adds r4, r0
- movs r0, 0
- strh r0, [r4, 0x8]
- ldr r0, _081325B8 @ =gBattleAnimArgs
- ldrb r0, [r0]
- bl GetAnimBattlerSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- strh r1, [r4, 0x26]
- ldr r2, _081325BC @ =gUnknown_08402B28
- adds r0, r4, 0
- bl sub_80798F4
- ldr r0, _081325C0 @ =sub_81325C4
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081325B4: .4byte gTasks
-_081325B8: .4byte gBattleAnimArgs
-_081325BC: .4byte gUnknown_08402B28
-_081325C0: .4byte sub_81325C4
- thumb_func_end sub_813257C
-
- thumb_func_start sub_81325C4
-sub_81325C4: @ 81325C4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r2, _0813261C @ =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 _08132628
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _08132638
- 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 _08132628
- ldr r2, _08132620 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _08132624 @ =0x0000ffff
- strh r1, [r0, 0x24]
- b _08132638
- .align 2, 0
-_0813261C: .4byte gTasks
-_08132620: .4byte gSprites
-_08132624: .4byte 0x0000ffff
-_08132628:
- ldr r2, _08132658 @ =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]
-_08132638:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r6
- bl sub_807992C
- lsls r0, 24
- cmp r0, 0
- bne _08132650
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_08132650:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08132658: .4byte gSprites
- thumb_func_end sub_81325C4
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s
index 335780d75..e6b21f543 100644
--- a/data/battle_anim_scripts.s
+++ b/data/battle_anim_scripts.s
@@ -3986,7 +3986,7 @@ Move_FEATHER_DANCE: @ 81CCB01
Move_TEETER_DANCE: @ 81CCBD1
loadspritegfx ANIM_TAG_MUSIC_NOTES
loadspritegfx ANIM_TAG_DUCK
- createvisualtask sub_813219C, 5
+ createvisualtask AnimTask_TeeterDanceMovement, 5
createsprite gBattleAnimSpriteTemplate_83D715C, ANIM_BATTLER_ATTACKER, 2, 0, 16, -2
playsewithpan SE_W298, SOUND_PAN_ATTACKER
delay 24
@@ -4095,7 +4095,7 @@ Move_NEEDLE_ARM: @ 81CCD73
Move_SLACK_OFF: @ 81CCF23
loadspritegfx ANIM_TAG_BLUE_STAR
- createvisualtask sub_813257C, 2, 0
+ createvisualtask AnimTask_SlackOffSquish, 2, 0
playsewithpan SE_W281, SOUND_PAN_ATTACKER
waitforvisualfinish
call Unknown_81D5EF5
@@ -8422,7 +8422,7 @@ Move_ROLE_PLAY: @ 81D3428
waitforvisualfinish
playsewithpan SE_W161, SOUND_PAN_ATTACKER
waitplaysewithpan SE_W197, SOUND_PAN_ATTACKER, 30
- createvisualtask sub_812EFC8, 2
+ createvisualtask AnimTask_RolePlaySilhouette, 2
waitforvisualfinish
clearmonbg ANIM_BATTLER_ATK_PARTNER
createvisualtask sub_80E2A38, 10, 4, 2, 16, 0, 32767
@@ -8884,7 +8884,7 @@ Move_RETURN: @ 81D3F36
loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_BATTLER_DEF_PARTNER
setalpha 12, 8
- createvisualtask sub_81318F0, 2
+ createvisualtask AnimTask_GetReturnPowerLevel, 2
delay 2
jumpargeq 7, 0, _81D3F6C
jumpargeq 7, 1, _81D3FBE
@@ -9832,7 +9832,7 @@ Move_WEATHER_BALL: @ 81D5989
playsewithpan SE_W197, 0
createsprite gBattleAnimSpriteTemplate_83DB3DC, ANIM_BATTLER_ATTACKER, 2, 31, 5, 1, 32767, 10, 0, 0
waitforvisualfinish
- createvisualtask sub_8132528, 2
+ createvisualtask AnimTask_GetWeather, 2
delay 1
jumpargeq 7, 0, _81D59F4
jumpargeq 7, 1, _81D5A31
@@ -10560,11 +10560,11 @@ _81D68AE:
end
_81D68B5:
playsewithpan SE_W104, SOUND_PAN_ATTACKER
- createvisualtask sub_8131944, 2
+ createvisualtask AnimTask_SnatchOpposingMonMove, 2
goto _81D68AE
_81D68C5:
playsewithpan SE_W104, SOUND_PAN_ATTACKER
- createvisualtask sub_8131FFC, 2
+ createvisualtask AnimTask_SnatchPartnerMove, 2
goto _81D68AE
General_FutureSightHit: @ 81D68D5
diff --git a/include/battle_anim.h b/include/battle_anim.h
index d355d9954..4f79dfc93 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -11,6 +11,26 @@
#define REG_BG2CNT_BITFIELD REG_BGnCNT_BITFIELD(2)
#define REG_BG3CNT_BITFIELD REG_BGnCNT_BITFIELD(3)
+enum
+{
+ BATTLER_COORD_X,
+ BATTLER_COORD_Y,
+ BATTLER_COORD_X_2,
+ BATTLER_COORD_Y_PIC_OFFSET,
+ BATTLER_COORD_Y_PIC_OFFSET_DEFAULT,
+};
+
+enum
+{
+ BATTLER_COORD_ATTR_HEIGHT,
+ BATTLER_COORD_ATTR_WIDTH,
+ BATTLER_COORD_ATTR_TOP,
+ BATTLER_COORD_ATTR_BOTTOM,
+ BATTLER_COORD_ATTR_LEFT,
+ BATTLER_COORD_ATTR_RIGHT,
+ BATTLER_COORD_ATTR_RAW_BOTTOM,
+};
+
struct BattleAnimBackground
{
void *image;
diff --git a/include/constants/battle_constants.h b/include/constants/battle_constants.h
index 65f44d8aa..3d55bde0b 100644
--- a/include/constants/battle_constants.h
+++ b/include/constants/battle_constants.h
@@ -241,17 +241,20 @@
#define MAX_TRAINER_ITEMS 4
#define MAX_MON_MOVES 4
+// Battle Weather flags
#define WEATHER_RAIN_TEMPORARY (1 << 0)
-#define WEATHER_RAIN_DOWNPOUR (1 << 1)
+#define WEATHER_RAIN_DOWNPOUR (1 << 1) // unused
#define WEATHER_RAIN_PERMANENT (1 << 2)
-#define WEATHER_RAIN_ANY ((WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_DOWNPOUR | WEATHER_RAIN_PERMANENT))
+#define WEATHER_RAIN_ANY (WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_DOWNPOUR | WEATHER_RAIN_PERMANENT)
#define WEATHER_SANDSTORM_TEMPORARY (1 << 3)
#define WEATHER_SANDSTORM_PERMANENT (1 << 4)
-#define WEATHER_SANDSTORM_ANY ((WEATHER_SANDSTORM_TEMPORARY | WEATHER_SANDSTORM_PERMANENT))
+#define WEATHER_SANDSTORM_ANY (WEATHER_SANDSTORM_TEMPORARY | WEATHER_SANDSTORM_PERMANENT)
#define WEATHER_SUN_TEMPORARY (1 << 5)
#define WEATHER_SUN_PERMANENT (1 << 6)
-#define WEATHER_SUN_ANY ((WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT))
+#define WEATHER_SUN_ANY (WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT)
#define WEATHER_HAIL (1 << 7)
+#define WEATHER_HAIL_ANY (WEATHER_HAIL)
+#define WEATHER_ANY (WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_SUN_ANY | WEATHER_HAIL_ANY)
#define MOVE_TARGET_SELECTED 0x0
#define MOVE_TARGET_DEPENDS 0x1
diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h
index 6dbe5e8ed..4208a7a14 100644
--- a/include/gba/io_reg.h
+++ b/include/gba/io_reg.h
@@ -546,6 +546,7 @@
#define BLDCNT_TGT1_BG3 (1 << 3)
#define BLDCNT_TGT1_OBJ (1 << 4)
#define BLDCNT_TGT1_BD (1 << 5)
+#define BLDCNT_TGT1_ALL (BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD)
// Bits 6-7 select the special effect
#define BLDCNT_EFFECT_NONE (0 << 6) // no special effect
#define BLDCNT_EFFECT_BLEND (1 << 6) // 1st+2nd targets mixed (controlled by BLDALPHA)
@@ -558,6 +559,7 @@
#define BLDCNT_TGT2_BG3 (1 << 11)
#define BLDCNT_TGT2_OBJ (1 << 12)
#define BLDCNT_TGT2_BD (1 << 13)
+#define BLDCNT_TGT2_ALL (BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD)
// BLDALPHA
#define BLDALPHA_BLEND(target1, target2) (((target2) << 8) | (target1))
diff --git a/include/rom_8077ABC.h b/include/rom_8077ABC.h
index 595e38f31..4f49885bf 100644
--- a/include/rom_8077ABC.h
+++ b/include/rom_8077ABC.h
@@ -90,8 +90,8 @@ void sub_8078114(struct Sprite *sprite);
void sub_8078174(struct Sprite *sprite);
void sub_80793C4(struct Sprite *sprite);
void SetAverageBattlerPositions(u8 slot, u8 a2, s16 *a3, s16 *a4);
-u8 sub_8079ED4(u8 slot);
-s16 sub_807A100(u8 slot, u8 a2);
+u8 GetBattlerSpriteBGPriority(u8 slot);
+s16 GetBattlerSpriteCoordAttr(u8 slot, u8 a2);
u16 ArcTan2Neg(s16 a, s16 b);
void sub_8078FDC(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 rotation);
void sub_807867C(struct Sprite *sprite, s16 a2);
@@ -101,10 +101,10 @@ u32 sub_80792C0(u8 a1, u8 a2, u8 a3, u8 a4);
s16 duplicate_obj_of_side_rel2move_in_transparent_mode(u8 a1);
void obj_delete_but_dont_free_vram(struct Sprite *sprite);
void sub_8079108(u16 a1, bool8 a2);
-void sub_80798F4(struct Task *task, u8 a2, const void *a3);
-bool8 sub_807992C(struct Task *task);
+void PrepareAffineAnimInTaskData(struct Task *task, u8 a2, const void *a3);
+bool8 RunAffineAnimFromTaskData(struct Task *task);
u8 sub_8077FC0(u8 slot);
-void move_anim_8074EE0(struct Sprite *sprite);
+void DestroySpriteAndMatrix(struct Sprite *sprite);
bool8 TranslateAnimArc(struct Sprite *sprite);
bool8 sub_8078CE8(struct Sprite *sprite);
void oamt_add_pos2_onto_pos1(struct Sprite *sprite);
@@ -116,9 +116,9 @@ u8 sub_807A4A0(int bank, u8 sprite, int species);
void sub_80794A8(struct Sprite *sprite);
void sub_807A9BC(struct Sprite *sprite);
void sub_8078954(struct Struct_sub_8078914*, u8);
-u8 sub_8079F44(u16 species, u8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7, u32 a8);
+u8 sub_8079F44(u16 species, bool8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7, u32 a8);
void sub_8079098(struct Sprite *sprite);
-void sub_807A0F4(struct Sprite *sprite);
+void DestroySpriteAndFreeResources_(struct Sprite *sprite);
void sub_8078634(u8 task);
u8 sub_80793A8(u8);
diff --git a/ld_script.txt b/ld_script.txt
index aaafe34ed..eba7eb57f 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -346,7 +346,6 @@ SECTIONS {
src/battle/battle_controller_safari.o(.text);
src/fldeff_sweetscent.o(.text);
src/battle/battle_anim_812C144.o(.text);
- asm/battle_anim_812C144.o(.text);
src/move_tutor_menu.o(.text);
src/fldeff_softboiled.o(.text);
src/decoration_inventory.o(.text);
diff --git a/src/battle/anim/anger.c b/src/battle/anim/anger.c
index 6ed40ad3c..041d35803 100644
--- a/src/battle/anim/anger.c
+++ b/src/battle/anim/anger.c
@@ -54,6 +54,6 @@ void sub_80D09C0(struct Sprite* sprite)
if (sprite->pos1.y <= 7)
sprite->pos1.y = 8;
- StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
sprite->callback = sub_80785E4;
}
diff --git a/src/battle/anim/beta_beat_up.c b/src/battle/anim/beta_beat_up.c
index 5671755b8..be712e87a 100644
--- a/src/battle/anim/beta_beat_up.c
+++ b/src/battle/anim/beta_beat_up.c
@@ -54,6 +54,6 @@ static void sub_80D6278(struct Sprite *sprite)
{
if (sprite->affineAnimEnded)
{
- move_anim_8074EE0(sprite);
+ DestroySpriteAndMatrix(sprite);
}
}
diff --git a/src/battle/anim/bubble.c b/src/battle/anim/bubble.c
index 1870b786d..168a65d88 100644
--- a/src/battle/anim/bubble.c
+++ b/src/battle/anim/bubble.c
@@ -135,5 +135,5 @@ static void sub_80D3398(struct Sprite *sprite)
{
sprite->data[0] = 10;
sprite->callback = WaitAnimForDuration;
- StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
}
diff --git a/src/battle/anim/bug.c b/src/battle/anim/bug.c
index 65b45b6cc..e693541bc 100644
--- a/src/battle/anim/bug.c
+++ b/src/battle/anim/bug.c
@@ -494,6 +494,6 @@ void sub_80DCE40(struct Sprite *sprite)
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 18;
}
- StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
sprite->callback = sub_80785E4;
}
diff --git a/src/battle/anim/current.c b/src/battle/anim/current.c
index 8621ca523..9b447ce5a 100644
--- a/src/battle/anim/current.c
+++ b/src/battle/anim/current.c
@@ -913,7 +913,7 @@ void sub_80D6D18(struct Sprite *sprite)
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
}
- StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
sprite->callback = sub_80785E4;
}
@@ -963,7 +963,7 @@ static void sub_80D6E38(struct Sprite *sprite)
gSprites[sprite->data[6]].pos2.x += sprite->data[7];
if ((u16)(sprite->pos1.x + 80) > 400)
{
- move_anim_8074EE0(sprite);
+ DestroySpriteAndMatrix(sprite);
}
break;
}
@@ -1154,7 +1154,7 @@ void sub_80D727C(struct Sprite *sprite)
break;
case 1:
if (sprite->affineAnimEnded)
- move_anim_8074EE0(sprite);
+ DestroySpriteAndMatrix(sprite);
break;
}
}
diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c
index 45ef7b831..47f86b744 100644
--- a/src/battle/anim/dark.c
+++ b/src/battle/anim/dark.c
@@ -357,7 +357,7 @@ static void sub_80DFF98(struct Sprite *sprite)
sprite->pos2.y = sprite->data[5] >> 8;
if (--sprite->data[3] == 0)
- move_anim_8074EE0(sprite);
+ DestroySpriteAndMatrix(sprite);
}
void sub_80DFFD0(struct Sprite *sprite)
@@ -376,22 +376,22 @@ void sub_80DFFD0(struct Sprite *sprite)
switch (gBattleAnimArgs[1])
{
case 0:
- sprite->pos1.x = sub_807A100(bank, 5) - 8;
- sprite->pos1.y = sub_807A100(bank, 2) + 8;
+ sprite->pos1.x = GetBattlerSpriteCoordAttr(bank, 5) - 8;
+ sprite->pos1.y = GetBattlerSpriteCoordAttr(bank, 2) + 8;
break;
case 1:
- sprite->pos1.x = sub_807A100(bank, 5) - 14;
- sprite->pos1.y = sub_807A100(bank, 2) + 16;
+ sprite->pos1.x = GetBattlerSpriteCoordAttr(bank, 5) - 14;
+ sprite->pos1.y = GetBattlerSpriteCoordAttr(bank, 2) + 16;
break;
case 2:
- sprite->pos1.x = sub_807A100(bank, 4) + 8;
- sprite->pos1.y = sub_807A100(bank, 2) + 8;
+ sprite->pos1.x = GetBattlerSpriteCoordAttr(bank, 4) + 8;
+ sprite->pos1.y = GetBattlerSpriteCoordAttr(bank, 2) + 8;
StartSpriteAffineAnim(sprite, 1);
xOffset = -20;
break;
case 3:
- sprite->pos1.x = sub_807A100(bank, 4) + 14;
- sprite->pos1.y = sub_807A100(bank, 2) + 16;
+ sprite->pos1.x = GetBattlerSpriteCoordAttr(bank, 4) + 14;
+ sprite->pos1.y = GetBattlerSpriteCoordAttr(bank, 2) + 16;
StartSpriteAffineAnim(sprite, 1);
xOffset = -20;
break;
@@ -409,7 +409,7 @@ void sub_80DFFD0(struct Sprite *sprite)
static void sub_80E00D0(struct Sprite *sprite)
{
if (TranslateAnimArc(sprite))
- move_anim_8074EE0(sprite);
+ DestroySpriteAndMatrix(sprite);
}
void sub_80E00EC(u8 taskId)
@@ -422,7 +422,7 @@ void sub_80E00EC(u8 taskId)
struct Task *task = &gTasks[taskId];
task->data[7] = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 31;
- task->data[6] = sub_807A100(gBattleAnimAttacker, 2) - 7;
+ task->data[6] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 2) - 7;
task->data[5] = task->data[7];
task->data[4] = task->data[6];
task->data[13] = (task->data[7] - task->data[6]) << 8;
@@ -600,7 +600,7 @@ void sub_80E03BC(u8 taskId)
break;
case 2:
task->data[7] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 31;
- task->data[6] = sub_807A100(gBattleAnimTarget, 2) - 7;
+ task->data[6] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 2) - 7;
task->data[13] = (task->data[7] - task->data[6]) << 8;
pos = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
task->data[14] = pos - 4;
diff --git a/src/battle/anim/dragon.c b/src/battle/anim/dragon.c
index cfb7576d6..b59e8aff4 100644
--- a/src/battle/anim/dragon.c
+++ b/src/battle/anim/dragon.c
@@ -215,7 +215,7 @@ void sub_80DF5A0(struct Sprite *sprite)
sprite->data[3] = gBattleAnimArgs[4];
sprite->data[5] = gBattleAnimArgs[5];
sprite->invisible = 1;
- StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
sprite->callback = sub_8078504;
}
@@ -243,7 +243,7 @@ void sub_80DF63C(struct Sprite *sprite)
}
sprite->data[0] = gBattleAnimArgs[4];
sprite->callback = StartAnimLinearTranslation;
- StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
}
// Dragon Rage
@@ -263,7 +263,7 @@ void sub_80DF6F0(struct Sprite *sprite)
sub_807867C(sprite, gBattleAnimArgs[1]);
sprite->pos1.y += gBattleAnimArgs[2];
sprite->callback = sub_8078600;
- StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
}
// Dragon Breath init
@@ -286,8 +286,8 @@ void sub_80DF78C(struct Sprite *sprite)
sprite->data[4] = 0;
sprite->data[5] = 1;
sprite->data[6] = gBattleAnimArgs[0];
- r5 = sub_807A100(gBankAttacker, 0);
- r0 = sub_807A100(gBankAttacker, 1);
+ r5 = GetBattlerSpriteCoordAttr(gBankAttacker, 0);
+ r0 = GetBattlerSpriteCoordAttr(gBankAttacker, 1);
if (r5 > r0)
sprite->data[7] = r5 / 2;
else
diff --git a/src/battle/anim/draw.c b/src/battle/anim/draw.c
index 90a27eae6..34f661f6a 100644
--- a/src/battle/anim/draw.c
+++ b/src/battle/anim/draw.c
@@ -42,7 +42,7 @@ void sub_80D0C88(u8 taskId)
task->data[3] = 0;
task->data[4] = 0;
task->data[5] = 0;
- task->data[15] = sub_807A100(gBattleAnimTarget, 0);
+ task->data[15] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 0);
if (GetBattlerPosition_permutated(gBattleAnimTarget) == 1)
{
@@ -127,7 +127,7 @@ void sub_80D0E30(struct Sprite* sprite)
sprite->data[2] = 0;
sprite->data[3] = 16;
sprite->data[4] = 0;
- sprite->data[5] = sub_807A100(gBattleAnimTarget, 0) + 2;
+ sprite->data[5] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 0) + 2;
sprite->data[6] = BattleAnimAdjustPanning(SOUND_PAN_TARGET);
sprite->callback = sub_80D0E8C;
}
diff --git a/src/battle/anim/espeed.c b/src/battle/anim/espeed.c
index 143510f3f..cd3b70542 100644
--- a/src/battle/anim/espeed.c
+++ b/src/battle/anim/espeed.c
@@ -63,14 +63,14 @@ void sub_80D15A4(u8 taskId)
struct Task* task = &gTasks[taskId];
u8 spriteId = GetAnimBattlerSpriteId(0);
task->data[0] = spriteId;
- sub_80798F4(task, spriteId, &gSpriteAffineAnim_83D79BC);
+ PrepareAffineAnimInTaskData(task, spriteId, &gSpriteAffineAnim_83D79BC);
task->func = sub_80D15E0;
}
void sub_80D15E0(u8 taskId)
{
struct Task* task = &gTasks[taskId];
- if (sub_807992C(task) == 0)
+ if (RunAffineAnimFromTaskData(task) == 0)
{
gSprites[task->data[0]].pos2.y = 0;
gSprites[task->data[0]].invisible = 1;
diff --git a/src/battle/anim/fight.c b/src/battle/anim/fight.c
index 499cb0c98..f51a5c56c 100644
--- a/src/battle/anim/fight.c
+++ b/src/battle/anim/fight.c
@@ -505,8 +505,8 @@ void sub_80D90F4(struct Sprite *sprite)
sprite->pos1.x = GetBattlerSpriteCoord(bank, 2);
sprite->pos1.y = GetBattlerSpriteCoord(bank, 3);
- xMod = sub_807A100(bank, 1) / 2;
- yMod = sub_807A100(bank, 0) / 4;
+ xMod = GetBattlerSpriteCoordAttr(bank, 1) / 2;
+ yMod = GetBattlerSpriteCoordAttr(bank, 0) / 4;
x = Random() % xMod;
y = Random() % yMod;
@@ -819,12 +819,12 @@ void sub_80D97CC(struct Sprite *sprite)
{
sprite->pos1.x = GetBattlerSpriteCoord(gBankAttacker, 2);
sprite->pos1.y = GetBattlerSpriteCoord(gBankAttacker, 3);
- sprite->oam.priority = sub_8079ED4(gBattleAnimAttacker);
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
sprite->data[7] = gBattleAnimTarget;
}
else
{
- sprite->oam.priority = sub_8079ED4(gBattleAnimTarget);
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
sprite->data[7] = gBattleAnimAttacker;
}
@@ -847,7 +847,7 @@ static void sub_80D986C(struct Sprite *sprite)
sprite->data[4] = GetBattlerSpriteCoord(sprite->data[7], 3);
InitAnimLinearTranslation(sprite);
- StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
sprite->callback = TranslateAnimLinearUntil;
}
}
@@ -922,12 +922,12 @@ void sub_80D9A38(struct Sprite *sprite)
sprite->pos1.x = GetBattlerSpriteCoord(gBankAttacker, 2);
sprite->pos1.y = GetBattlerSpriteCoord(gBankAttacker, 3);
bank = gBattleAnimTarget;
- sprite->oam.priority = sub_8079ED4(gBattleAnimAttacker);
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
}
else
{
bank = gBattleAnimAttacker;
- sprite->oam.priority = sub_8079ED4(gBattleAnimTarget);
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
}
if (IsContest())
diff --git a/src/battle/anim/finger.c b/src/battle/anim/finger.c
index 46e493de0..95e33ece5 100644
--- a/src/battle/anim/finger.c
+++ b/src/battle/anim/finger.c
@@ -153,7 +153,7 @@ static void sub_80CF088(struct Sprite* sprite)
if (++sprite->data[0] > 16)
{
StartSpriteAffineAnim(sprite, 1);
- StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
sprite->callback = sub_80785E4;
}
}
@@ -167,7 +167,7 @@ void sub_80CF0BC(struct Sprite* sprite)
bank = gBattleAnimTarget;
sprite->pos1.x = GetBattlerSpriteCoord(bank, 0);
- sprite->pos1.y = sub_807A100(bank, 2);
+ sprite->pos1.y = GetBattlerSpriteCoordAttr(bank, 2);
if (sprite->pos1.y <= 9)
sprite->pos1.y = 10;
diff --git a/src/battle/anim/fire.c b/src/battle/anim/fire.c
index 09e83813b..795f68d8d 100644
--- a/src/battle/anim/fire.c
+++ b/src/battle/anim/fire.c
@@ -253,7 +253,7 @@ static void sub_80D5038(struct Sprite *sprite)
}
if (sprite->data[0] == sprite->data[1])
- move_anim_8074EE0(sprite);
+ DestroySpriteAndMatrix(sprite);
}
void sub_80D5074(struct Sprite *sprite)
@@ -303,6 +303,6 @@ static void sub_80D50E8(struct Sprite *sprite)
}
else
{
- move_anim_8074EE0(sprite);
+ DestroySpriteAndMatrix(sprite);
}
}
diff --git a/src/battle/anim/flying.c b/src/battle/anim/flying.c
index f9f328283..1f36c933a 100644
--- a/src/battle/anim/flying.c
+++ b/src/battle/anim/flying.c
@@ -627,11 +627,11 @@ void sub_80DA4D8(struct Sprite *sprite)
{
if (gMain.inBattle)
{
- sprite->oam.priority = sub_8079ED4(slot) + 1;
+ sprite->oam.priority = GetBattlerSpriteBGPriority(slot) + 1;
}
else
{
- sprite->oam.priority = sub_8079ED4(slot);
+ sprite->oam.priority = GetBattlerSpriteBGPriority(slot);
}
((u8 *) data)[14] = data[7] & -2;
@@ -647,7 +647,7 @@ void sub_80DA4D8(struct Sprite *sprite)
}
else
{
- sprite->oam.priority = sub_8079ED4(slot);
+ sprite->oam.priority = GetBattlerSpriteBGPriority(slot);
((u8 *) data)[14] |= 1;
if (data[2] & 0x8000)
@@ -1881,7 +1881,7 @@ _080DAD2C: .4byte sub_80DA48C\n");
void sub_80DAD30(struct Sprite *sprite)
{
- sprite->oam.priority = sub_8079ED4(gBattleAnimTarget);
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
sprite->callback = TranslateAnimSpriteToTargetMonLocation;
@@ -1911,12 +1911,12 @@ void sub_80DAD84(struct Sprite * sprite)
if (gBattleAnimArgs[4])
{
- sprite->oam.priority = sub_8079ED4(gBattleAnimTarget) + 1;
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget) + 1;
// 080dae24
}
else
{
- sprite->oam.priority = sub_8079ED4(gBattleAnimTarget);
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
}
}
else
@@ -2655,7 +2655,7 @@ void sub_80DB6A0(struct Sprite *sprite)
if ((u16) (sprite->pos1.x + 0x2d) > 0x14a || sprite->pos1.y > 0x9d || sprite->pos1.y < -0x2d)
{
- move_anim_8074EE0(sprite);
+ DestroySpriteAndMatrix(sprite);
}
}
diff --git a/src/battle/anim/flying_path.c b/src/battle/anim/flying_path.c
index 6e7dd03f1..989cb598c 100644
--- a/src/battle/anim/flying_path.c
+++ b/src/battle/anim/flying_path.c
@@ -87,8 +87,8 @@ void sub_80CBDF4(u8 taskId)
task->data[4] = GetBattlerSubpriority(gBattleAnimTarget) - 1;
task->data[6] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
task->data[7] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
- task->data[10] = sub_807A100(gBattleAnimTarget, 1);
- task->data[11] = sub_807A100(gBattleAnimTarget, 0);
+ task->data[10] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 1);
+ task->data[11] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 0);
task->data[5] = (GetBattlerSide(gBattleAnimTarget) == 1) ? 1 : -1;
task->data[9] = 0x38 - (task->data[5] * 64);
task->data[8] = task->data[7] - task->data[9] + task->data[6];
diff --git a/src/battle/anim/flying_petals.c b/src/battle/anim/flying_petals.c
index 4d06b994e..7c70cc158 100644
--- a/src/battle/anim/flying_petals.c
+++ b/src/battle/anim/flying_petals.c
@@ -139,20 +139,20 @@ void sub_80CC474(struct Sprite* sprite)
{
case 0:
sprite->pos1.y = gBattleAnimArgs[0];
- sprite->oam.priority = sub_8079ED4(bank);
+ sprite->oam.priority = GetBattlerSpriteBGPriority(bank);
break;
case 1:
sprite->pos1.y = gBattleAnimArgs[0];
- sprite->oam.priority = sub_8079ED4(bank) + 1;
+ sprite->oam.priority = GetBattlerSpriteBGPriority(bank) + 1;
break;
case 2:
sprite->pos1.y = GetBattlerSpriteCoord(bank, 3) + gBattleAnimArgs[0];
- sprite->oam.priority = sub_8079ED4(bank);
+ sprite->oam.priority = GetBattlerSpriteBGPriority(bank);
break;
case 3:
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[0];
GetAnimBattlerSpriteId(1);
- sprite->oam.priority = sub_8079ED4(bank) + 1;
+ sprite->oam.priority = GetBattlerSpriteBGPriority(bank) + 1;
break;
}
@@ -177,5 +177,5 @@ static void sub_80CC580(struct Sprite* sprite)
return;
}
- move_anim_8074EE0(sprite);
+ DestroySpriteAndMatrix(sprite);
}
diff --git a/src/battle/anim/ghost.c b/src/battle/anim/ghost.c
index 6ff44ed15..0fc4f1dfe 100644
--- a/src/battle/anim/ghost.c
+++ b/src/battle/anim/ghost.c
@@ -461,7 +461,7 @@ static void AnimShadowBallStep(struct Sprite *sprite)
sprite->data[0] += 1;
break;
case 3:
- move_anim_8074EE0(sprite);
+ DestroySpriteAndMatrix(sprite);
break;
}
}
@@ -852,7 +852,7 @@ void sub_80DE918(u8 taskId)
task->data[10] = gBattleAnimArgs[0];
baseX = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- baseY = sub_807A100(gBattleAnimAttacker, 3);
+ baseY = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 3);
if (!IsContest())
{
for (battler = 0; battler < 4; battler++)
@@ -865,7 +865,7 @@ void sub_80DE918(u8 taskId)
if (spriteId != MAX_SPRITES)
{
x = GetBattlerSpriteCoord(battler, 2);
- y = sub_807A100(battler, 3);
+ y = GetBattlerSpriteCoordAttr(battler, 3);
gSprites[spriteId].data[0] = baseX << 4;
gSprites[spriteId].data[1] = baseY << 4;
gSprites[spriteId].data[2] = ((x - baseX) << 4) / gBattleAnimArgs[1];
@@ -1216,9 +1216,9 @@ void sub_80DF1A4(u8 taskId)
task->data[1] = 16;
task->data[9] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
task->data[10] = sub_8077FC0(gBattleAnimAttacker);
- task->data[11] = (sub_807A100(gBattleAnimAttacker, 1) / 2) + 8;
+ task->data[11] = (GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 1) / 2) + 8;
task->data[7] = 0;
- task->data[5] = sub_8079ED4(gBattleAnimAttacker);
+ task->data[5] = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
task->data[6] = GetBattlerSubpriority(gBattleAnimAttacker) - 2;
task->data[3] = 0;
task->data[4] = 16;
@@ -1370,6 +1370,6 @@ static void sub_80DF4F4(struct Sprite *sprite)
gSprites[sprite->data[5]].pos2.x = 0;
gSprites[sprite->data[5]].pos2.y = 0;
gSprites[sprite->data[5]].pos1.y -= 8;
- sprite->callback = move_anim_8074EE0;
+ sprite->callback = DestroySpriteAndMatrix;
}
}
diff --git a/src/battle/anim/ground.c b/src/battle/anim/ground.c
index 8c8e1d2a7..2828be7be 100644
--- a/src/battle/anim/ground.c
+++ b/src/battle/anim/ground.c
@@ -234,7 +234,7 @@ static void AnimDirtScatter(struct Sprite *sprite)
sprite->data[2] = targetXPos + xOffset;
sprite->data[4] = targetYPos + yOffset;
sprite->callback = StartAnimLinearTranslation;
- StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
}
// Moves a particle of dirt in the Mud Sport animation.
diff --git a/src/battle/anim/grow.c b/src/battle/anim/grow.c
index aeaeb2c30..65a1ce745 100644
--- a/src/battle/anim/grow.c
+++ b/src/battle/anim/grow.c
@@ -25,13 +25,13 @@ void sub_80D08C8(u8 taskId)
{
struct Task* task = &gTasks[taskId];
u8 spriteId = GetAnimBattlerSpriteId(0);
- sub_80798F4(task, spriteId, &gSpriteAffineAnim_83D7714);
+ PrepareAffineAnimInTaskData(task, spriteId, &gSpriteAffineAnim_83D7714);
task->func = sub_80D0904;
}
static void sub_80D0904(u8 taskId)
{
struct Task* task = &gTasks[taskId];
- if (!sub_807992C(task))
+ if (!RunAffineAnimFromTaskData(task))
DestroyAnimVisualTask(taskId);
}
diff --git a/src/battle/anim/homing.c b/src/battle/anim/homing.c
index 874b9ea4e..1b71ebd7a 100644
--- a/src/battle/anim/homing.c
+++ b/src/battle/anim/homing.c
@@ -93,6 +93,6 @@ static void sub_80CC7D4(struct Sprite* sprite)
}
else
{
- move_anim_8074EE0(sprite);
+ DestroySpriteAndMatrix(sprite);
}
}
diff --git a/src/battle/anim/ice.c b/src/battle/anim/ice.c
index b9f8f2f2c..fed21ebe9 100644
--- a/src/battle/anim/ice.c
+++ b/src/battle/anim/ice.c
@@ -872,7 +872,7 @@ static void AnimFlickerIceEffectParticle(struct Sprite *sprite)
sprite->invisible ^= 1;
sprite->data[0] += 1;
if (sprite->data[0] == 20)
- move_anim_8074EE0(sprite);
+ DestroySpriteAndMatrix(sprite);
}
// Animates the small snowballs that swirl around the target in Blizzard and Icy Wind.
@@ -1192,9 +1192,9 @@ static void AnimSwirlingFogAnim(struct Sprite *sprite)
sprite->pos2.y += Cos(sprite->data[5], -6);
if ((u16)(sprite->data[5] - 64) <= 0x7F)
- sprite->oam.priority = sub_8079ED4(sprite->data[7]);
+ sprite->oam.priority = GetBattlerSpriteBGPriority(sprite->data[7]);
else
- sprite->oam.priority = sub_8079ED4(sprite->data[7]) + 1;
+ sprite->oam.priority = GetBattlerSpriteBGPriority(sprite->data[7]) + 1;
sprite->data[5] = (sprite->data[5] + 3) & 0xFF;
}
@@ -1438,7 +1438,7 @@ static void InitPoisonGasCloudAnim(struct Sprite *sprite)
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[3];
sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[2];
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[4];
- sprite->data[7] |= sub_8079ED4(gBattleAnimTarget) << 8;
+ sprite->data[7] |= GetBattlerSpriteBGPriority(gBattleAnimTarget) << 8;
}
else
{
@@ -1446,7 +1446,7 @@ static void InitPoisonGasCloudAnim(struct Sprite *sprite)
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[3];
sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[2];
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[4];
- sprite->data[7] |= sub_8079ED4(gBattleAnimTarget) << 8;
+ sprite->data[7] |= GetBattlerSpriteBGPriority(gBattleAnimTarget) << 8;
}
if (IsContest())
@@ -1968,13 +1968,13 @@ bool8 sub_80D8BA8(u8 a1, u8 a2, u8 a3, u8 a4)//(u8 spriteId, u8 taskId, u8 a3)//
{
case 0:
//
- r7 -= sub_807A100(GetBattlerAtPosition(gUnknown_083D9DC4[a1][2]), 1) / 6;
- r6 -= sub_807A100(GetBattlerAtPosition(gUnknown_083D9DC4[a1][2]), 0) / 6;
+ r7 -= GetBattlerSpriteCoordAttr(GetBattlerAtPosition(gUnknown_083D9DC4[a1][2]), 1) / 6;
+ r6 -= GetBattlerSpriteCoordAttr(GetBattlerAtPosition(gUnknown_083D9DC4[a1][2]), 0) / 6;
break;
case 1:
//
- r7 += sub_807A100(GetBattlerAtPosition(gUnknown_083D9DC4[a1][2]), 1) / 6;
- r6 += sub_807A100(GetBattlerAtPosition(gUnknown_083D9DC4[a1][2]), 0) / 6;
+ r7 += GetBattlerSpriteCoordAttr(GetBattlerAtPosition(gUnknown_083D9DC4[a1][2]), 1) / 6;
+ r6 += GetBattlerSpriteCoordAttr(GetBattlerAtPosition(gUnknown_083D9DC4[a1][2]), 0) / 6;
}
}
@@ -2072,7 +2072,7 @@ NAKED bool8 sub_80D8BA8(u8 a1, u8 a2, u8 a3, u8 a4)
"_080D8C24:\n"
"\tadds r0, r5, 0\n"
"\tmovs r1, 0x1\n"
- "\tbl sub_807A100\n"
+ "\tbl GetBattlerSpriteCoordAttr\n"
"\tlsls r0, 16\n"
"\tasrs r0, 16\n"
"\tmovs r1, 0x6\n"
@@ -2084,7 +2084,7 @@ NAKED bool8 sub_80D8BA8(u8 a1, u8 a2, u8 a3, u8 a4)
"\tlsrs r7, r1, 16\n"
"\tadds r0, r5, 0\n"
"\tmovs r1, 0\n"
- "\tbl sub_807A100\n"
+ "\tbl GetBattlerSpriteCoordAttr\n"
"\tlsls r0, 16\n"
"\tasrs r0, 16\n"
"\tmovs r1, 0x6\n"
@@ -2096,7 +2096,7 @@ NAKED bool8 sub_80D8BA8(u8 a1, u8 a2, u8 a3, u8 a4)
"_080D8C5A:\n"
"\tadds r0, r5, 0\n"
"\tmovs r1, 0x1\n"
- "\tbl sub_807A100\n"
+ "\tbl GetBattlerSpriteCoordAttr\n"
"\tlsls r0, 16\n"
"\tasrs r0, 16\n"
"\tmovs r1, 0x6\n"
@@ -2108,7 +2108,7 @@ NAKED bool8 sub_80D8BA8(u8 a1, u8 a2, u8 a3, u8 a4)
"\tlsrs r7, r1, 16\n"
"\tadds r0, r5, 0\n"
"\tmovs r1, 0\n"
- "\tbl sub_807A100\n"
+ "\tbl GetBattlerSpriteCoordAttr\n"
"\tlsls r0, 16\n"
"\tasrs r0, 16\n"
"\tmovs r1, 0x6\n"
diff --git a/src/battle/anim/leaf.c b/src/battle/anim/leaf.c
index 5f7f9d288..5b4c75080 100644
--- a/src/battle/anim/leaf.c
+++ b/src/battle/anim/leaf.c
@@ -295,11 +295,11 @@ static void AnimMoveTwisterParticleStep(struct Sprite* sprite)
sprite->pos2.y = Sin(sprite->data[5], 5);
if (sprite->data[5] <= 0x7F)
{
- sprite->oam.priority = sub_8079ED4(gBattleAnimTarget) - 1;
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget) - 1;
}
else
{
- sprite->oam.priority = sub_8079ED4(gBattleAnimTarget) + 1;
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget) + 1;
}
sprite->data[0]--;
diff --git a/src/battle/anim/musical.c b/src/battle/anim/musical.c
index 5e4e3e97b..1e559d975 100644
--- a/src/battle/anim/musical.c
+++ b/src/battle/anim/musical.c
@@ -265,7 +265,7 @@ static void sub_80CEC1C(struct Sprite* sprite)
if ((u32)((c + 16) << 16) > (0x110) << 16 || a < -16 || a > 0x80)
{
- move_anim_8074EE0(sprite);
+ DestroySpriteAndMatrix(sprite);
}
else
{
@@ -322,7 +322,7 @@ static void sub_80CED78(struct Sprite* sprite)
}
if (++sprite->data[0] == 0x30)
- move_anim_8074EE0(sprite);
+ DestroySpriteAndMatrix(sprite);
}
// drum (using hands to slap the Pokemon's belly in a rhythm.)
diff --git a/src/battle/anim/normal.c b/src/battle/anim/normal.c
index d42549fc7..4ac8737ad 100644
--- a/src/battle/anim/normal.c
+++ b/src/battle/anim/normal.c
@@ -457,7 +457,7 @@ static void sub_80E1F3C(struct Sprite *sprite)
sprite->data[3] = 40;
sprite->data[4] = 112;
sprite->data[5] = 0;
- StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
sprite->callback = sub_8078174;
sprite->callback(sprite);
}
@@ -895,7 +895,7 @@ static void sub_80E2870(struct Sprite *sprite)
sprite->pos2.x += (Random() % 48) - 24;
sprite->pos2.y += (Random() % 24) - 12;
- StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
sprite->callback = sub_80785E4;
}
@@ -907,7 +907,7 @@ static void sub_80E2908(struct Sprite *sprite)
sprite->pos2.x = gBattleAnimArgs[1];
sprite->pos2.y = gBattleAnimArgs[2];
StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
- StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
sprite->callback = sub_80785E4;
}
diff --git a/src/battle/anim/orbit.c b/src/battle/anim/orbit.c
index 4d937a114..3f72d9246 100644
--- a/src/battle/anim/orbit.c
+++ b/src/battle/anim/orbit.c
@@ -110,11 +110,11 @@ static void sub_80CAC44(struct Sprite* sprite)
sprite->pos2.y = Cos(sprite->data[1], -3) + ((sprite->data[2] += 24) >> 8);
if ((u16)(sprite->data[1] - 0x40) < 0x80)
{
- sprite->oam.priority = (sub_8079ED4(gBattleAnimTarget) & 3);
+ sprite->oam.priority = (GetBattlerSpriteBGPriority(gBattleAnimTarget) & 3);
}
else
{
- var1 = sub_8079ED4(gBattleAnimTarget) + 1;
+ var1 = GetBattlerSpriteBGPriority(gBattleAnimTarget) + 1;
if (var1 > 3)
{
var1 = 3;
diff --git a/src/battle/anim/orbs.c b/src/battle/anim/orbs.c
index 80cf97a5c..d0a5d26dc 100644
--- a/src/battle/anim/orbs.c
+++ b/src/battle/anim/orbs.c
@@ -197,7 +197,7 @@ void sub_80CA7B0(struct Sprite* sprite)
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
sprite->callback = StartAnimLinearTranslation;
- StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
}
void sub_80CA800(struct Sprite* sprite)
diff --git a/src/battle/anim/psychic.c b/src/battle/anim/psychic.c
index 42a2ce387..84673097e 100644
--- a/src/battle/anim/psychic.c
+++ b/src/battle/anim/psychic.c
@@ -592,7 +592,7 @@ void sub_80DBA4C(struct Sprite *sprite)
else
{
if (sprite->animEnded || sprite->affineAnimEnded)
- move_anim_8074EE0(sprite);
+ DestroySpriteAndMatrix(sprite);
}
}
@@ -621,8 +621,8 @@ void sub_80DBAF4(struct Sprite *sprite)
void sub_80DBB70(struct Sprite *sprite)
{
- s16 x = sub_807A100(gBattleAnimAttacker, 1) / 2;
- s16 y = sub_807A100(gBattleAnimAttacker, 0) / -2;
+ s16 x = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 1) / 2;
+ s16 y = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 0) / -2;
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
{
@@ -677,13 +677,13 @@ void sub_80DBC94(u8 taskId)
struct Task *task = &gTasks[taskId];
u8 spriteId = GetAnimBattlerSpriteId(0);
task->data[0] = spriteId;
- sub_80798F4(task, spriteId, &gSpriteAffineAnim_083DA8A4);
+ PrepareAffineAnimInTaskData(task, spriteId, &gSpriteAffineAnim_083DA8A4);
task->func = sub_80DBCD0;
}
static void sub_80DBCD0(u8 taskId)
{
- if (!sub_807992C(&gTasks[taskId]))
+ if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
{
DestroyAnimVisualTask(taskId);
}
@@ -698,7 +698,7 @@ void sub_80DBCFC(u8 taskId)
task->data[2] = 0;
task->data[3] = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? 4 : 8;
- sub_80798F4(task, task->data[0], &gSpriteAffineAnim_083DA8C4);
+ PrepareAffineAnimInTaskData(task, task->data[0], &gSpriteAffineAnim_083DA8C4);
task->func = sub_80DBD58;
}
@@ -709,7 +709,7 @@ static void sub_80DBD58(u8 taskId)
switch (task->data[1])
{
case 0:
- sub_807992C(task);
+ RunAffineAnimFromTaskData(task);
if (++task->data[2] > 19)
task->data[1]++;
break;
@@ -741,8 +741,8 @@ void sub_80DBE00(u8 taskId)
task->data[13] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
task->data[14] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
- var0 = sub_807A100(gBattleAnimAttacker, 1) / 3;
- var1 = sub_807A100(gBattleAnimAttacker, 0) / 3;
+ var0 = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 1) / 3;
+ var1 = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 0) / 3;
task->data[12] = var0 > var1 ? var0 : var1;
REG_BLDCNT = 0x3F40;
@@ -855,18 +855,18 @@ void sub_80DC0B0(u8 taskId)
if (gBattleAnimArgs[0] == 1)
{
task->data[10] = -10;
- task->data[11] = sub_807A100(gBattleAnimTarget, 5) - 8;
- task->data[12] = sub_807A100(gBattleAnimTarget, 2) + 8;
- task->data[13] = sub_807A100(gBattleAnimAttacker, 5) - 8;
- task->data[14] = sub_807A100(gBattleAnimAttacker, 2) + 8;
+ task->data[11] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 5) - 8;
+ task->data[12] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 2) + 8;
+ task->data[13] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 5) - 8;
+ task->data[14] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 2) + 8;
}
else
{
task->data[10] = 10;
- task->data[11] = sub_807A100(gBattleAnimAttacker, 4) + 8;
- task->data[12] = sub_807A100(gBattleAnimAttacker, 3) - 8;
- task->data[13] = sub_807A100(gBattleAnimTarget, 4) + 8;
- task->data[14] = sub_807A100(gBattleAnimTarget, 3) - 8;
+ task->data[11] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 4) + 8;
+ task->data[12] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 3) - 8;
+ task->data[13] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 4) + 8;
+ task->data[14] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 3) - 8;
}
}
else
@@ -874,18 +874,18 @@ void sub_80DC0B0(u8 taskId)
if (gBattleAnimArgs[0] == 1)
{
task->data[10] = -10;
- task->data[11] = sub_807A100(gBattleAnimTarget, 4) + 8;
- task->data[12] = sub_807A100(gBattleAnimTarget, 2) + 8;
- task->data[13] = sub_807A100(gBattleAnimAttacker, 4) + 8;
- task->data[14] = sub_807A100(gBattleAnimAttacker, 2) + 8;
+ task->data[11] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 4) + 8;
+ task->data[12] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 2) + 8;
+ task->data[13] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 4) + 8;
+ task->data[14] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 2) + 8;
}
else
{
task->data[10] = 10;
- task->data[11] = sub_807A100(gBattleAnimAttacker, 5) - 8;
- task->data[12] = sub_807A100(gBattleAnimAttacker, 3) - 8;
- task->data[13] = sub_807A100(gBattleAnimTarget, 5) - 8;
- task->data[14] = sub_807A100(gBattleAnimTarget, 3) - 8;
+ task->data[11] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 5) - 8;
+ task->data[12] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 3) - 8;
+ task->data[13] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 5) - 8;
+ task->data[14] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 3) - 8;
}
}
diff --git a/src/battle/anim/rock.c b/src/battle/anim/rock.c
index 386ddfac7..d97076e89 100644
--- a/src/battle/anim/rock.c
+++ b/src/battle/anim/rock.c
@@ -351,7 +351,7 @@ static void sub_80DCF1C(struct Sprite *sprite)
sprite->data[3] = 32;
sprite->data[4] = -24;
- StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
sprite->callback = sub_8078278;
sprite->callback(sprite);
}
@@ -379,7 +379,7 @@ void sub_80DCF60(struct Sprite *sprite)
sprite->data[4] = 0;
sprite->callback = sub_8078394;
- StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
}
void sub_80DCFE4(struct Sprite *sprite)
diff --git a/src/battle/anim/shield.c b/src/battle/anim/shield.c
index 9500d66c9..6e601efa3 100644
--- a/src/battle/anim/shield.c
+++ b/src/battle/anim/shield.c
@@ -36,9 +36,9 @@ void sub_80CCD24(struct Sprite* sprite)
sprite->pos1.x = sub_8077EE4(gBattleAnimAttacker, 0) + gBattleAnimArgs[0];
sprite->pos1.y = sub_8077EE4(gBattleAnimAttacker, 1) + gBattleAnimArgs[1];
if (GetBattlerSide(gBattleAnimAttacker) == 0 || IsContest())
- sprite->oam.priority = sub_8079ED4(gBattleAnimAttacker) + 1;
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker) + 1;
else
- sprite->oam.priority = sub_8079ED4(gBattleAnimAttacker);
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[2] = (IndexOfSpritePaletteTag(0x2828) << 4) + 0x100;
diff --git a/src/battle/anim/shock.c b/src/battle/anim/shock.c
index 4459e43b8..c6dfd09cc 100644
--- a/src/battle/anim/shock.c
+++ b/src/battle/anim/shock.c
@@ -85,7 +85,7 @@ void sub_80D6294(struct Sprite *sprite)
sprite->data[2] = gBattleAnimArgs[3];
sprite->data[3] = gBattleAnimArgs[4];
- StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
sprite->callback = sub_8078114;
}
@@ -142,7 +142,7 @@ void sub_80D6328(struct Sprite *sprite)
if (gBattleAnimArgs[6] & 1)
{
- sprite->oam.priority = sub_8079ED4(slot) + 1;
+ sprite->oam.priority = GetBattlerSpriteBGPriority(slot) + 1;
}
matrixNum = sprite->oam.matrixNum;
diff --git a/src/battle/anim/sleep.c b/src/battle/anim/sleep.c
index 82822c931..7e202b8bb 100644
--- a/src/battle/anim/sleep.c
+++ b/src/battle/anim/sleep.c
@@ -97,5 +97,5 @@ static void sub_80CD394(struct Sprite* sprite)
sprite->data[4] += sprite->data[3] * 2;
sprite->data[0] += sprite->data[1];
if (++sprite->data[1] > 0x3C)
- move_anim_8074EE0(sprite);
+ DestroySpriteAndMatrix(sprite);
}
diff --git a/src/battle/anim/splash.c b/src/battle/anim/splash.c
index 6bf59bc54..ad0fddd3f 100644
--- a/src/battle/anim/splash.c
+++ b/src/battle/anim/splash.c
@@ -39,7 +39,7 @@ void AnimTask_Splash(u8 taskId)
task->data[2] = gBattleAnimArgs[1];
task->data[3] = 0;
task->data[4] = 0;
- sub_80798F4(task, spriteId, &gSpriteAffineAnim_83D76F4);
+ PrepareAffineAnimInTaskData(task, spriteId, &gSpriteAffineAnim_83D76F4);
task->func = AnimTask_SplashStep;
}
}
@@ -50,7 +50,7 @@ void AnimTask_SplashStep(u8 taskId)
switch (task->data[1])
{
case 0:
- sub_807992C(task);
+ RunAffineAnimFromTaskData(task);
task->data[4] += 3;
gSprites[task->data[0]].pos2.y += task->data[4];
if (++task->data[3] > 7)
@@ -60,7 +60,7 @@ void AnimTask_SplashStep(u8 taskId)
}
break;
case 1:
- sub_807992C(task);
+ RunAffineAnimFromTaskData(task);
gSprites[task->data[0]].pos2.y += task->data[4];
if (++task->data[3] > 7)
{
@@ -78,7 +78,7 @@ void AnimTask_SplashStep(u8 taskId)
task->data[1]++;
break;
case 3:
- if (!sub_807992C(task))
+ if (!RunAffineAnimFromTaskData(task))
{
if (--task->data[2] == 0)
{
@@ -87,7 +87,7 @@ void AnimTask_SplashStep(u8 taskId)
}
else
{
- sub_80798F4(task, task->data[0], &gSpriteAffineAnim_83D76F4);
+ PrepareAffineAnimInTaskData(task, task->data[0], &gSpriteAffineAnim_83D76F4);
task->data[1] = 0;
}
}
diff --git a/src/battle/anim/startle.c b/src/battle/anim/startle.c
index fb1e0f375..c9a692318 100644
--- a/src/battle/anim/startle.c
+++ b/src/battle/anim/startle.c
@@ -24,13 +24,13 @@ void sub_80D1E38(u8 taskId)
u8 spriteId = GetAnimBattlerSpriteId(1);
if (++gTasks[taskId].data[0] == 1)
{
- sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(1), &gSpriteAffineAnim_83D7A98);
+ PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(1), &gSpriteAffineAnim_83D7A98);
gSprites[spriteId].pos2.x = 4;
}
else
{
gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x;
- if (sub_807992C(&gTasks[taskId]) == 0)
+ if (RunAffineAnimFromTaskData(&gTasks[taskId]) == 0)
{
gSprites[spriteId].pos2.x = 0;
gSprites[spriteId].pos2.y = 0;
@@ -45,13 +45,13 @@ void sub_80D1EC8(u8 taskId)
u8 spriteId = GetAnimBattlerSpriteId(0);
if (++gTasks[taskId].data[0] == 1)
{
- sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gSpriteAffineAnim_83D7A98);
+ PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gSpriteAffineAnim_83D7A98);
gSprites[spriteId].pos2.x = 4;
}
else
{
gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x;
- if (sub_807992C(&gTasks[taskId]) == 0)
+ if (RunAffineAnimFromTaskData(&gTasks[taskId]) == 0)
{
gSprites[spriteId].pos2.x = 0;
gSprites[spriteId].pos2.y = 0;
diff --git a/src/battle/anim/thought.c b/src/battle/anim/thought.c
index ee387040f..ff5b62181 100644
--- a/src/battle/anim/thought.c
+++ b/src/battle/anim/thought.c
@@ -72,11 +72,11 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7220 =
void sub_80CEF44(u8 bank, struct Sprite* sprite)
{
if (GetBattlerSide(bank) == 0)
- sprite->pos1.x = sub_807A100(bank, 5) + 8;
+ sprite->pos1.x = GetBattlerSpriteCoordAttr(bank, 5) + 8;
else
- sprite->pos1.x = sub_807A100(bank, 4) - 8;
+ sprite->pos1.x = GetBattlerSpriteCoordAttr(bank, 4) - 8;
- sprite->pos1.y = GetBattlerSpriteCoord(bank, 3) - (s16)sub_807A100(bank, 0) / 4;
+ sprite->pos1.y = GetBattlerSpriteCoord(bank, 3) - (s16)GetBattlerSpriteCoordAttr(bank, 0) / 4;
}
void sub_80CEF9C(struct Sprite* sprite)
diff --git a/src/battle/anim/thrashing.c b/src/battle/anim/thrashing.c
index 2f00b1acc..f73c7e9bf 100644
--- a/src/battle/anim/thrashing.c
+++ b/src/battle/anim/thrashing.c
@@ -31,14 +31,14 @@ void sub_80D0A4C(u8 taskId)
u8 spriteId = GetAnimBattlerSpriteId(0);
task->data[0] = spriteId;
task->data[1] = 0;
- sub_80798F4(task, spriteId, &gSpriteAffineAnim_83D77B0);
+ PrepareAffineAnimInTaskData(task, spriteId, &gSpriteAffineAnim_83D77B0);
task->func = sub_80D0A8C;
}
static void sub_80D0A8C(u8 taskId)
{
struct Task* task = &gTasks[taskId];
- if (!sub_807992C(task))
+ if (!RunAffineAnimFromTaskData(task))
DestroyAnimVisualTask(taskId);
}
diff --git a/src/battle/anim/unused_1.c b/src/battle/anim/unused_1.c
index c9712de8f..b4af9fc00 100644
--- a/src/battle/anim/unused_1.c
+++ b/src/battle/anim/unused_1.c
@@ -84,6 +84,6 @@ void sub_80CC8C8(struct Sprite* sprite)
sprite->data[3] = gBattleAnimArgs[4];
sprite->data[5] = gBattleAnimArgs[5];
StartSpriteAffineAnim(sprite, gBattleAnimArgs[6]);
- StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
sprite->callback = sub_8078504;
}
diff --git a/src/battle/anim/unused_5.c b/src/battle/anim/unused_5.c
index 98cd62bd0..9f7ce35ff 100644
--- a/src/battle/anim/unused_5.c
+++ b/src/battle/anim/unused_5.c
@@ -32,7 +32,7 @@ void sub_80CF280(struct Sprite* sprite)
sprite->data[2] = gBattleAnimArgs[4];
sprite->data[3] = gBattleAnimArgs[5];
sprite->data[4] = gBattleAnimArgs[3];
- StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
sprite->callback = sub_8078278;
sub_8078278(sprite);
}
diff --git a/src/battle/anim/unused_7.c b/src/battle/anim/unused_7.c
index d2ce1f0a8..f4acbbf7e 100644
--- a/src/battle/anim/unused_7.c
+++ b/src/battle/anim/unused_7.c
@@ -34,7 +34,7 @@ static void sub_80CF374(struct Sprite* sprite)
if (sprite->data[0] == 0)
{
gSprites[sprite->data[2]].pos2.x = 0;
- move_anim_8074EE0(sprite);
+ DestroySpriteAndMatrix(sprite);
}
sprite->data[0]--;
diff --git a/src/battle/anim/uproar.c b/src/battle/anim/uproar.c
index c78f89fef..b074cd729 100644
--- a/src/battle/anim/uproar.c
+++ b/src/battle/anim/uproar.c
@@ -20,12 +20,12 @@ void sub_80D2CF8(u8 taskId)
{
u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
- sub_80798F4(&gTasks[taskId], spriteId, gSpriteAffineAnim_83D7CA8);
+ PrepareAffineAnimInTaskData(&gTasks[taskId], spriteId, gSpriteAffineAnim_83D7CA8);
gTasks[taskId].func = sub_80D2D3C;
}
static void sub_80D2D3C(u8 taskId)
{
- if (!sub_807992C(&gTasks[taskId]))
+ if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
DestroyAnimVisualTask(taskId);
}
diff --git a/src/battle/anim/wisp_fire.c b/src/battle/anim/wisp_fire.c
index 714f59d71..f089c799a 100644
--- a/src/battle/anim/wisp_fire.c
+++ b/src/battle/anim/wisp_fire.c
@@ -68,9 +68,9 @@ void sub_80D5CC0(struct Sprite *sprite)
if (gMain.inBattle)
{
if (sprite->data[1] < 64 || sprite->data[1] > 195)
- sprite->oam.priority = sub_8079ED4(gBattleAnimTarget);
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
else
- sprite->oam.priority = sub_8079ED4(gBattleAnimTarget) + 1;
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget) + 1;
}
else
{
diff --git a/src/battle/anim/wisp_orb.c b/src/battle/anim/wisp_orb.c
index dd04e258c..d1f25c09d 100644
--- a/src/battle/anim/wisp_orb.c
+++ b/src/battle/anim/wisp_orb.c
@@ -81,7 +81,7 @@ void sub_80D5B0C(struct Sprite *sprite)
sprite->data[4] = -4;
}
- sprite->oam.priority = sub_8079ED4(gBattleAnimTarget);
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
sprite->data[0]++;
break;
case 1:
diff --git a/src/battle/battle_anim_812C144.c b/src/battle/battle_anim_812C144.c
index 4a5533dce..90e7d8e2c 100644
--- a/src/battle/battle_anim_812C144.c
+++ b/src/battle/battle_anim_812C144.c
@@ -29,6 +29,7 @@ extern u16 gBattle_BG1_X;
extern u16 gBattle_BG1_Y;
extern u16 gBattle_BG2_X;
extern u16 gBattle_BG2_Y;
+extern u16 gWeatherMoveAnim;
extern const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7220;
extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7C18[];
@@ -76,7 +77,7 @@ static void sub_812E8B4(u8 taskId);
static void sub_812ED24(struct Sprite *sprite);
static void sub_812EE00(struct Sprite *sprite);
static void sub_812EEEC(struct Sprite *sprite);
-/*static*/ void sub_812F238(u8 taskId);
+static void AnimTask_RolePlaySilhouetteStep1(u8 taskId);
static void sub_812F290(u8 taskId);
static void sub_812F474(u8 taskId);
static void sub_812F76C(u8 taskId);
@@ -135,10 +136,13 @@ static void sub_8130F5C(struct Sprite *sprite);
static void sub_8131264(struct Sprite *sprite);
extern void sub_80D1FDC(struct Sprite *sprite);// kiss_fountain.c
static void sub_8131564(struct Sprite *sprite);
+static void AnimTask_TeeterDanceMovementStep(u8);
/*static*/ void sub_8131EB8(struct Sprite *sprite);// rest not yet decompiled
-/*static*/ void sub_8132370(struct Sprite *sprite);
-/*static*/ void sub_81323E0(struct Sprite *sprite);
+void AnimKnockOffStrike(struct Sprite *sprite);
+void AnimRecycle(struct Sprite *sprite);
+static void AnimRecycleStep(struct Sprite *sprite);
+static void AnimTask_SlackOffSquishStep(u8 taskId);
const union AnimCmd gSpriteAnim_8402164[] =
{
@@ -1142,7 +1146,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_8402AE4 =
.anims = gSpriteAnimTable_8402AA8,
.images = NULL,
.affineAnims = gSpriteAffineAnimTable_8402ADC,
- .callback = sub_8132370,
+ .callback = AnimKnockOffStrike,
};
const union AffineAnimCmd gSpriteAffineAnim_8402AFC[] =
@@ -1164,10 +1168,10 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_8402B10 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gSpriteAffineAnimTable_8402B0C,
- .callback = sub_81323E0,
+ .callback = AnimRecycle,
};
-const union AffineAnimCmd gUnknown_08402B28[] =
+const union AffineAnimCmd gSlackOffSquishAffineAnimCmds[] =
{
AFFINEANIMCMD_FRAME(0, 16, 0, 4),
AFFINEANIMCMD_FRAME(-2, 0, 0, 8),
@@ -1945,12 +1949,12 @@ static void sub_812D06C(u8 taskId)
task->data[5] -= 6;
}
- sub_80798F4(task, task->data[15], gUnknown_08402400);
+ PrepareAffineAnimInTaskData(task, task->data[15], gUnknown_08402400);
task->data[1]++;
task->data[0] = 1;
break;
case 1:
- if (sub_807992C(task) == 0)
+ if (RunAffineAnimFromTaskData(task) == 0)
{
if (task->data[1] == 6)
{
@@ -2051,11 +2055,11 @@ void sub_812D350(u8 taskId)
switch (gTasks[taskId].data[0])
{
case 0:
- sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_084024B0);
+ PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_084024B0);
gTasks[taskId].data[0]++;
break;
case 1:
- if (sub_807992C(&gTasks[taskId]) == 0)
+ if (RunAffineAnimFromTaskData(&gTasks[taskId]) == 0)
DestroyAnimVisualTask(taskId);
break;
}
@@ -2193,12 +2197,12 @@ void sub_812D674(u8 taskId)
{
if (gTasks[taskId].data[0] == 0)
{
- sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402518);
+ PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402518);
gTasks[taskId].data[0]++;
}
else
{
- if (sub_807992C(&gTasks[taskId]) == 0)
+ if (RunAffineAnimFromTaskData(&gTasks[taskId]) == 0)
DestroyAnimVisualTask(taskId);
}
}
@@ -2207,12 +2211,12 @@ void sub_812D6CC(u8 taskId)
{
if (gTasks[taskId].data[0] == 0)
{
- sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402540);
+ PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402540);
gTasks[taskId].data[0]++;
}
else
{
- if (sub_807992C(&gTasks[taskId]) == 0)
+ if (RunAffineAnimFromTaskData(&gTasks[taskId]) == 0)
DestroyAnimVisualTask(taskId);
}
}
@@ -2240,12 +2244,12 @@ void sub_812D790(u8 taskId)
{
if (gTasks[taskId].data[0] == 0)
{
- sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402590);
+ PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402590);
gTasks[taskId].data[0]++;
}
else
{
- if (sub_807992C(&gTasks[taskId]) == 0)
+ if (RunAffineAnimFromTaskData(&gTasks[taskId]) == 0)
DestroyAnimVisualTask(taskId);
}
}
@@ -2682,12 +2686,12 @@ void sub_812E498(u8 taskId)
{
if (gTasks[taskId].data[0] == 0)
{
- sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402610);
+ PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402610);
gTasks[taskId].data[0]++;
}
else
{
- if (!sub_807992C(&gTasks[taskId]))
+ if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
{
DestroyAnimVisualTask(taskId);
}
@@ -3175,8 +3179,8 @@ static void sub_812EEEC(struct Sprite *sprite)
}
}
-#ifdef NONMATCHING // functionally equivalent, but seems to be missing a temporary variable
-void sub_812EFC8(u8 taskId)
+// Copies the target mon's sprite, and makes a white silhouette that shrinks away.
+void AnimTask_RolePlaySilhouette(u8 taskId)
{
u8 isBackPic;
u32 personality;
@@ -3187,7 +3191,7 @@ void sub_812EFC8(u8 taskId)
u8 spriteId;
s16 coord1, coord2;
- GetAnimBattlerSpriteId(0);
+ GetAnimBattlerSpriteId(ANIM_BATTLER_ATTACKER);
if (IsContest())
{
isBackPic = 1;
@@ -3195,6 +3199,7 @@ void sub_812EFC8(u8 taskId)
otId = eWRAM_19348Struct->otId;
species = eWRAM_19348Struct->species;
xOffset = 20;
+ priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
}
else
{
@@ -3216,6 +3221,7 @@ void sub_812EFC8(u8 taskId)
}
xOffset = 20;
+ priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
}
else
{
@@ -3235,325 +3241,26 @@ void sub_812EFC8(u8 taskId)
}
xOffset = -20;
+ priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
}
}
- priority = sub_8079ED4(gBattleAnimAttacker);
coord1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
coord2 = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
spriteId = sub_8079F44(species, isBackPic, 0, coord1 + xOffset, coord2, 5, personality, otId);
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
- FillPalette(RGB(31, 31, 31), (gSprites[spriteId].oam.paletteNum << 4) + 0x100, 32);
+ FillPalette(RGB_WHITE, (gSprites[spriteId].oam.paletteNum << 4) + 0x100, 32);
gSprites[spriteId].oam.priority = priority;
- REG_BLDCNT = 0x3F40;
- REG_BLDALPHA = ((16 - gTasks[taskId].data[1]) << 8) | gTasks[taskId].data[1];
+ REG_BLDCNT = BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL;
+ REG_BLDALPHA = BLDALPHA_BLEND(gTasks[taskId].data[1], 16 - gTasks[taskId].data[1]);
gTasks[taskId].data[0] = spriteId;
- gTasks[taskId].func = sub_812F238;
+ gTasks[taskId].func = AnimTask_RolePlaySilhouetteStep1;
}
-#else
-NAKED
-void sub_812EFC8(u8 taskId)
-{
- asm(".syntax unified\n\
- .equ REG_BLDCNT, 0x4000050\n\
- .equ REG_BLDALPHA, 0x4000052\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x18\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x10]\n\
- movs r0, 0\n\
- bl GetAnimBattlerSpriteId\n\
- bl IsContest\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0812F004\n\
- movs r0, 0x1\n\
- str r0, [sp, 0x14]\n\
- ldr r0, _0812F000 @ =gSharedMem + 0x19348\n\
- ldr r1, [r0, 0x10]\n\
- mov r9, r1\n\
- ldr r2, [r0, 0xC]\n\
- mov r8, r2\n\
- ldrh r6, [r0, 0x2]\n\
- movs r3, 0x14\n\
- b _0812F13C\n\
- .align 2, 0\n\
-_0812F000: .4byte gSharedMem + 0x19348\n\
-_0812F004:\n\
- ldr r0, _0812F070 @ =gBattleAnimAttacker\n\
- ldrb r0, [r0]\n\
- bl GetBattlerSide\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0812F0AC\n\
- movs r0, 0\n\
- str r0, [sp, 0x14]\n\
- ldr r6, _0812F074 @ =gBattlerPartyIndexes\n\
- ldr r4, _0812F078 @ =gBattleAnimTarget\n\
- ldrb r0, [r4]\n\
- lsls r0, 1\n\
- adds r0, r6\n\
- ldrh r0, [r0]\n\
- movs r5, 0x64\n\
- muls r0, r5\n\
- ldr r7, _0812F07C @ =gPlayerParty\n\
- adds r0, r7\n\
- movs r1, 0\n\
- bl GetMonData\n\
- mov r9, r0\n\
- ldrb r0, [r4]\n\
- lsls r0, 1\n\
- adds r0, r6\n\
- ldrh r0, [r0]\n\
- muls r0, r5\n\
- adds r0, r7\n\
- movs r1, 0x1\n\
- bl GetMonData\n\
- mov r8, r0\n\
- ldrb r2, [r4]\n\
- lsls r1, r2, 2\n\
- ldr r0, _0812F080 @ =gSharedMem + 0x17800\n\
- adds r1, r0\n\
- ldrh r0, [r1, 0x2]\n\
- cmp r0, 0\n\
- bne _0812F0A4\n\
- adds r0, r2, 0\n\
- bl GetBattlerSide\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0812F084\n\
- ldrb r0, [r4]\n\
- lsls r0, 1\n\
- adds r0, r6\n\
- ldrh r0, [r0]\n\
- muls r0, r5\n\
- adds r0, r7\n\
- b _0812F092\n\
- .align 2, 0\n\
-_0812F070: .4byte gBattleAnimAttacker\n\
-_0812F074: .4byte gBattlerPartyIndexes\n\
-_0812F078: .4byte gBattleAnimTarget\n\
-_0812F07C: .4byte gPlayerParty\n\
-_0812F080: .4byte gSharedMem + 0x17800\n\
-_0812F084:\n\
- ldrb r0, [r4]\n\
- lsls r0, 1\n\
- adds r0, r6\n\
- ldrh r0, [r0]\n\
- muls r0, r5\n\
- ldr r1, _0812F0A0 @ =gEnemyParty\n\
- adds r0, r1\n\
-_0812F092:\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
- b _0812F0A6\n\
- .align 2, 0\n\
-_0812F0A0: .4byte gEnemyParty\n\
-_0812F0A4:\n\
- ldrh r6, [r1, 0x2]\n\
-_0812F0A6:\n\
- movs r1, 0x14\n\
- mov r10, r1\n\
- b _0812F13E\n\
-_0812F0AC:\n\
- movs r2, 0x1\n\
- str r2, [sp, 0x14]\n\
- ldr r6, _0812F10C @ =gBattlerPartyIndexes\n\
- ldr r4, _0812F110 @ =gBattleAnimTarget\n\
- ldrb r0, [r4]\n\
- lsls r0, 1\n\
- adds r0, r6\n\
- ldrh r0, [r0]\n\
- movs r5, 0x64\n\
- muls r0, r5\n\
- ldr r7, _0812F114 @ =gEnemyParty\n\
- adds r0, r7\n\
- movs r1, 0\n\
- bl GetMonData\n\
- mov r9, r0\n\
- ldrb r0, [r4]\n\
- lsls r0, 1\n\
- adds r0, r6\n\
- ldrh r0, [r0]\n\
- muls r0, r5\n\
- adds r0, r7\n\
- movs r1, 0x1\n\
- bl GetMonData\n\
- mov r8, r0\n\
- ldrb r2, [r4]\n\
- lsls r1, r2, 2\n\
- ldr r0, _0812F118 @ =gSharedMem + 0x17800\n\
- adds r1, r0\n\
- ldrh r0, [r1, 0x2]\n\
- cmp r0, 0\n\
- bne _0812F138\n\
- adds r0, r2, 0\n\
- bl GetBattlerSide\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0812F120\n\
- ldrb r0, [r4]\n\
- lsls r0, 1\n\
- adds r0, r6\n\
- ldrh r0, [r0]\n\
- muls r0, r5\n\
- ldr r1, _0812F11C @ =gPlayerParty\n\
- adds r0, r1\n\
- b _0812F12C\n\
- .align 2, 0\n\
-_0812F10C: .4byte gBattlerPartyIndexes\n\
-_0812F110: .4byte gBattleAnimTarget\n\
-_0812F114: .4byte gEnemyParty\n\
-_0812F118: .4byte gSharedMem + 0x17800\n\
-_0812F11C: .4byte gPlayerParty\n\
-_0812F120:\n\
- ldrb r0, [r4]\n\
- lsls r0, 1\n\
- adds r0, r6\n\
- ldrh r0, [r0]\n\
- muls r0, r5\n\
- adds r0, r7\n\
-_0812F12C:\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
- b _0812F13A\n\
-_0812F138:\n\
- ldrh r6, [r1, 0x2]\n\
-_0812F13A:\n\
- ldr r3, _0812F218 @ =0x0000ffec\n\
-_0812F13C:\n\
- mov r10, r3\n\
-_0812F13E:\n\
- ldr r0, _0812F21C @ =gBattleAnimAttacker\n\
- ldrb r0, [r0]\n\
- bl sub_8079ED4\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- ldr r5, _0812F21C @ =gBattleAnimAttacker\n\
- ldrb r0, [r5]\n\
- movs r1, 0\n\
- bl GetBattlerSpriteCoord\n\
- adds r4, r0, 0\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- ldrb r0, [r5]\n\
- movs r1, 0x1\n\
- bl GetBattlerSpriteCoord\n\
- lsls r0, 24\n\
- mov r2, r10\n\
- lsls r1, r2, 16\n\
- asrs r1, 16\n\
- adds r4, r1\n\
- lsls r4, 16\n\
- asrs r4, 16\n\
- lsrs r0, 24\n\
- str r0, [sp]\n\
- movs r0, 0x5\n\
- str r0, [sp, 0x4]\n\
- mov r3, r9\n\
- str r3, [sp, 0x8]\n\
- mov r0, r8\n\
- str r0, [sp, 0xC]\n\
- adds r0, r6, 0\n\
- ldr r1, [sp, 0x14]\n\
- movs r2, 0\n\
- adds r3, r4, 0\n\
- bl sub_8079F44\n\
- adds r6, r0, 0\n\
- lsls r6, 24\n\
- lsrs r6, 24\n\
- ldr r0, _0812F220 @ =gSprites\n\
- lsls r5, r6, 4\n\
- adds r5, r6\n\
- lsls r5, 2\n\
- adds r5, r0\n\
- movs r0, 0x3\n\
- ands r7, r0\n\
- lsls r7, 2\n\
- mov r8, r7\n\
- ldrb r0, [r5, 0x5]\n\
- movs r4, 0xD\n\
- negs r4, r4\n\
- adds r1, r4, 0\n\
- ands r1, r0\n\
- mov r2, r8\n\
- orrs r1, r2\n\
- strb r1, [r5, 0x5]\n\
- ldrb r2, [r5, 0x1]\n\
- adds r0, r4, 0\n\
- ands r0, r2\n\
- movs r2, 0x4\n\
- orrs r0, r2\n\
- strb r0, [r5, 0x1]\n\
- ldr r0, _0812F224 @ =0x00007fff\n\
- lsrs r1, 4\n\
- lsls r1, 4\n\
- movs r3, 0x80\n\
- lsls r3, 1\n\
- adds r2, r3, 0\n\
- orrs r1, r2\n\
- movs r2, 0x20\n\
- bl FillPalette\n\
- ldrb r0, [r5, 0x5]\n\
- ands r4, r0\n\
- mov r0, r8\n\
- orrs r4, r0\n\
- strb r4, [r5, 0x5]\n\
- ldr r1, _0812F228 @ =REG_BLDCNT\n\
- movs r2, 0xFD\n\
- lsls r2, 6\n\
- adds r0, r2, 0\n\
- strh r0, [r1]\n\
- ldr r3, _0812F22C @ =REG_BLDALPHA\n\
- ldr r0, _0812F230 @ =gTasks\n\
- ldr r2, [sp, 0x10]\n\
- lsls r1, r2, 2\n\
- adds r1, r2\n\
- lsls r1, 3\n\
- adds r1, r0\n\
- ldrh r2, [r1, 0xA]\n\
- movs r0, 0x10\n\
- subs r0, r2\n\
- lsls r0, 8\n\
- orrs r0, r2\n\
- strh r0, [r3]\n\
- strh r6, [r1, 0x8]\n\
- ldr r0, _0812F234 @ =sub_812F238\n\
- str r0, [r1]\n\
- add sp, 0x18\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0812F218: .4byte 0x0000ffec\n\
-_0812F21C: .4byte gBattleAnimAttacker\n\
-_0812F220: .4byte gSprites\n\
-_0812F224: .4byte 0x00007fff\n\
-_0812F228: .4byte REG_BLDCNT\n\
-_0812F22C: .4byte REG_BLDALPHA\n\
-_0812F230: .4byte gTasks\n\
-_0812F234: .4byte sub_812F238\n\
- .syntax divided\n");
-}
-#endif // NONMATCHING
-/*static*/ void sub_812F238(u8 taskId)
+static void AnimTask_RolePlaySilhouetteStep1(u8 taskId)
{
if (gTasks[taskId].data[10]++ > 1)
{
@@ -3579,7 +3286,7 @@ static void sub_812F290(u8 taskId)
if (++gTasks[taskId].data[12] == 9)
{
sub_8079098(&gSprites[spriteId]);
- sub_807A0F4(&gSprites[spriteId]);
+ DestroySpriteAndFreeResources_(&gSprites[spriteId]);
gTasks[taskId].func = sub_8078634;
}
}
@@ -3765,7 +3472,7 @@ void sub_812F724(u8 taskId)
struct Task *task = &gTasks[taskId];
task->data[0] = 0;
task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
- sub_80798F4(&gTasks[taskId], task->data[15], &gUnknown_08402750);
+ PrepareAffineAnimInTaskData(&gTasks[taskId], task->data[15], &gUnknown_08402750);
task->func = sub_812F76C;
}
@@ -3794,7 +3501,7 @@ static void sub_812F76C(u8 taskId)
gSprites[task->data[15]].pos2.x = 0;
}
- if (!sub_807992C(&gTasks[taskId]))
+ if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
DestroyAnimVisualTask(taskId);
}
@@ -3844,7 +3551,7 @@ static void sub_812F8DC(struct Sprite *sprite)
sprite->data[2]++;
sprite->invisible = sprite->data[2] & 1;
if (sprite->data[2] > 3)
- move_anim_8074EE0(sprite);
+ DestroySpriteAndMatrix(sprite);
}
}
}
@@ -4019,7 +3726,7 @@ void sub_812FD7C(u8 taskId)
task->data[5] = GetBattlerSpriteCoord(battler, 1);
task->data[6] = GetBattlerSubpriority(battler);
task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
- sub_80798F4(task, task->data[15], &gUnknown_084028AC);
+ PrepareAffineAnimInTaskData(task, task->data[15], &gUnknown_084028AC);
task->func = sub_812FE20;
}
@@ -4036,7 +3743,7 @@ static void sub_812FE20(u8 taskId)
if (task->data[1] == 18)
sub_812FEB8(taskId, FALSE);
- if (!sub_807992C(task))
+ if (!RunAffineAnimFromTaskData(task))
{
if (--task->data[3] == 0)
{
@@ -4045,7 +3752,7 @@ static void sub_812FE20(u8 taskId)
else
{
task->data[1] = 0;
- sub_80798F4(task, task->data[15], &gUnknown_084028AC);
+ PrepareAffineAnimInTaskData(task, task->data[15], &gUnknown_084028AC);
}
}
break;
@@ -4214,11 +3921,11 @@ void sub_81301EC(u8 taskId)
}
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
- task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + sub_807A100(gBattleAnimAttacker, 0) / 4;
+ task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 0) / 4;
else
- task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) - sub_807A100(gBattleAnimAttacker, 0) / 4;
+ task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 0) / 4;
- task->data[12] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) - sub_807A100(gBattleAnimAttacker, 0) / 4;
+ task->data[12] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 0) / 4;
task->data[13] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
task->data[14] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
task->func = sub_81302E4;
@@ -4345,7 +4052,7 @@ void sub_8130554(u8 taskId)
task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
task->data[12] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
task->data[13] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- task->data[14] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + sub_807A100(gBattleAnimTarget, 0) / 4;
+ task->data[14] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + GetBattlerSpriteCoordAttr(gBattleAnimTarget, 0) / 4;
task->data[15] = CreateSprite(&gSpriteTemplate_84029AC, task->data[11], task->data[12], GetBattlerSubpriority(gBattleAnimTarget) - 5);
if (task->data[15] != MAX_SPRITES)
{
@@ -4424,11 +4131,11 @@ static void sub_81307B0(struct Sprite *sprite)
if (gBattleAnimArgs[1] == 0)
{
sprite->oam.matrixNum |= 0x8;
- sprite->pos1.x = sub_807A100(battler, 4) - 8;
+ sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, 4) - 8;
}
else
{
- sprite->pos1.x = sub_807A100(battler, 5) + 8;
+ sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, 5) + 8;
}
sprite->callback = sub_813085C;
@@ -4490,7 +4197,7 @@ void sub_8130918(u8 taskId)
{
gTasks[taskId].data[0] = gBattleAnimArgs[1];
gTasks[taskId].data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
- sub_80798F4(&gTasks[taskId], gTasks[taskId].data[15], &gUnknown_084029DC);
+ PrepareAffineAnimInTaskData(&gTasks[taskId], gTasks[taskId].data[15], &gUnknown_084029DC);
gTasks[taskId].func = sub_8130970;
}
}
@@ -4508,12 +4215,12 @@ static void sub_8130970(u8 taskId)
gSprites[task->data[15]].pos2.x = -2;
}
- if (!sub_807992C(task))
+ if (!RunAffineAnimFromTaskData(task))
{
gSprites[task->data[15]].pos2.x = 0;
if (--task->data[0])
{
- sub_80798F4(&gTasks[taskId], gTasks[taskId].data[15], &gUnknown_084029DC);
+ PrepareAffineAnimInTaskData(&gTasks[taskId], gTasks[taskId].data[15], &gUnknown_084029DC);
task->data[1] = 0;
task->data[2] = 0;
}
@@ -4529,12 +4236,12 @@ static void sub_8130A2C(struct Sprite *sprite)
if (gBattleAnimArgs[0] == 0)
{
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = sub_807A100(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 2);
}
else
{
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->pos1.y = sub_807A100(gBattleAnimTarget, 2);
+ sprite->pos1.y = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 2);
}
if (sprite->pos1.y < 8)
@@ -4789,7 +4496,7 @@ static void sub_8130F5C(struct Sprite *sprite)
if (GetBattlerSide(sprite->data[7]) == B_SIDE_OPPONENT)
sprite->oam.matrixNum = 8;
- sprite->oam.priority = sub_8079ED4(sprite->data[7]);
+ sprite->oam.priority = GetBattlerSpriteBGPriority(sprite->data[7]);
sprite->oam.objMode = ST_OAM_OBJ_BLEND;
sprite->callback = sub_8130FE0;
}
@@ -4807,20 +4514,20 @@ static void sub_8130FE0(struct Sprite *sprite)
sprite->data[6] = 0;
case 0:
case 4:
- x = sub_807A100(sprite->data[7], 5) - 4;
- y = sub_807A100(sprite->data[7], 3) - 4;
+ x = GetBattlerSpriteCoordAttr(sprite->data[7], 5) - 4;
+ y = GetBattlerSpriteCoordAttr(sprite->data[7], 3) - 4;
break;
case 1:
- x = sub_807A100(sprite->data[7], 5) - 4;
- y = sub_807A100(sprite->data[7], 2) + 4;
+ x = GetBattlerSpriteCoordAttr(sprite->data[7], 5) - 4;
+ y = GetBattlerSpriteCoordAttr(sprite->data[7], 2) + 4;
break;
case 2:
- x = sub_807A100(sprite->data[7], 4) + 4;
- y = sub_807A100(sprite->data[7], 3) - 4;
+ x = GetBattlerSpriteCoordAttr(sprite->data[7], 4) + 4;
+ y = GetBattlerSpriteCoordAttr(sprite->data[7], 3) - 4;
break;
case 3:
- x = sub_807A100(sprite->data[7], 4) + 4;
- y = sub_807A100(sprite->data[7], 2) - 4;
+ x = GetBattlerSpriteCoordAttr(sprite->data[7], 4) + 4;
+ y = GetBattlerSpriteCoordAttr(sprite->data[7], 2) - 4;
break;
case 5:
x = GetBattlerSpriteCoord(sprite->data[7], 2);
@@ -5199,3 +4906,1160 @@ static void sub_8131838(struct Sprite *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);
+}
+
+#ifdef NONMATCHING
+// 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;
+ u8 isBackPic;
+ s16 x;
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ spriteId = GetAnimBattlerSpriteId(ANIM_BATTLER_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:
+ if (IsContest())
+ {
+ personality = eWRAM_19348Struct->personality;
+ otId = eWRAM_19348Struct->otId;
+ species = eWRAM_19348Struct->species;
+ subpriority = GetBattlerSubpriority(gBattleAnimAttacker);
+ isBackPic = 0;
+ x = -32;
+ }
+ else
+ {
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ {
+ personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_PERSONALITY);
+ otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_OT_ID);
+ if (eTransformStatuses[gBattleAnimTarget].species == SPECIES_NONE)
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
+ else
+ species = eTransformStatuses[gBattleAnimTarget].species;
+
+ subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_BATTLER_TARGET)].subpriority + 1;
+ isBackPic = 0;
+ x = 272;
+ }
+ else
+ {
+ personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_PERSONALITY);
+ otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_OT_ID);
+ if (eTransformStatuses[gBattleAnimTarget].species == SPECIES_NONE)
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
+ else
+ species = eTransformStatuses[gBattleAnimTarget].species;
+
+ subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_BATTLER_TARGET)].subpriority - 1;
+ isBackPic = 1;
+ x = -32;
+ }
+ }
+
+ spriteId2 = sub_8079F44(species, isBackPic, 0, x, GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y), subpriority, personality, otId);
+ if (eTransformStatuses[gBattleAnimTarget].species != 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_BATTLER_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_BATTLER_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;
+ }
+}
+#else
+NAKED
+void AnimTask_SnatchOpposingMonMove(u8 taskId)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x14\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+ ldr r1, _08131974 @ =gTasks\n\
+ lsls r0, 2\n\
+ add r0, r8\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ movs r1, 0x8\n\
+ ldrsh r0, [r0, r1]\n\
+ cmp r0, 0x4\n\
+ bls _0813196A\n\
+ b _08131EA0\n\
+_0813196A:\n\
+ lsls r0, 2\n\
+ ldr r1, _08131978 @ =_0813197C\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_08131974: .4byte gTasks\n\
+_08131978: .4byte _0813197C\n\
+ .align 2, 0\n\
+_0813197C:\n\
+ .4byte _08131990\n\
+ .4byte _08131A44\n\
+ .4byte _08131C20\n\
+ .4byte _08131D40\n\
+ .4byte _08131DC4\n\
+_08131990:\n\
+ movs r0, 0\n\
+ bl GetAnimBattlerSpriteId\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+ ldr r1, _081319DC @ =gTasks\n\
+ mov r2, r8\n\
+ lsls r4, r2, 2\n\
+ adds r0, r4, r2\n\
+ lsls r0, 3\n\
+ adds r6, r0, r1\n\
+ movs r3, 0x80\n\
+ lsls r3, 4\n\
+ adds r0, r3, 0\n\
+ ldrh r1, [r6, 0xA]\n\
+ adds r0, r1\n\
+ strh r0, [r6, 0xA]\n\
+ ldr r0, _081319E0 @ =gBattleAnimAttacker\n\
+ ldrb r0, [r0]\n\
+ bl GetBattlerSide\n\
+ lsls r0, 24\n\
+ mov r9, r4\n\
+ cmp r0, 0\n\
+ bne _081319E8\n\
+ ldr r2, _081319E4 @ =gSprites\n\
+ lsls r3, r7, 4\n\
+ adds r1, r3, r7\n\
+ lsls r1, 2\n\
+ adds r1, r2\n\
+ ldrh r0, [r6, 0xA]\n\
+ lsls r0, 16\n\
+ asrs r0, 24\n\
+ ldrh r4, [r1, 0x24]\n\
+ adds r0, r4\n\
+ strh r0, [r1, 0x24]\n\
+ b _08131A02\n\
+ .align 2, 0\n\
+_081319DC: .4byte gTasks\n\
+_081319E0: .4byte gBattleAnimAttacker\n\
+_081319E4: .4byte gSprites\n\
+_081319E8:\n\
+ ldr r3, _08131A3C @ =gSprites\n\
+ lsls r4, r7, 4\n\
+ adds r2, r4, r7\n\
+ lsls r2, 2\n\
+ adds r2, r3\n\
+ ldrh r1, [r6, 0xA]\n\
+ lsls r1, 16\n\
+ asrs r1, 24\n\
+ ldrh r0, [r2, 0x24]\n\
+ subs r0, r1\n\
+ strh r0, [r2, 0x24]\n\
+ adds r2, r3, 0\n\
+ adds r3, r4, 0\n\
+_08131A02:\n\
+ ldr r1, _08131A40 @ =gTasks\n\
+ mov r0, r9\n\
+ add r0, r8\n\
+ lsls r0, 3\n\
+ adds r4, r0, r1\n\
+ ldrb r0, [r4, 0xA]\n\
+ strh r0, [r4, 0xA]\n\
+ adds r1, r3, r7\n\
+ lsls r1, 2\n\
+ adds r1, r2\n\
+ ldrh r0, [r1, 0x24]\n\
+ ldrh r1, [r1, 0x20]\n\
+ adds r0, r1\n\
+ lsls r0, 16\n\
+ movs r1, 0x80\n\
+ lsls r1, 14\n\
+ adds r0, r1\n\
+ movs r1, 0x98\n\
+ lsls r1, 17\n\
+ cmp r0, r1\n\
+ bhi _08131A2E\n\
+ b _08131EA0\n\
+_08131A2E:\n\
+ movs r0, 0\n\
+ strh r0, [r4, 0xA]\n\
+ ldrh r0, [r4, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x8]\n\
+ b _08131EA0\n\
+ .align 2, 0\n\
+_08131A3C: .4byte gSprites\n\
+_08131A40: .4byte gTasks\n\
+_08131A44:\n\
+ bl IsContest\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08131A74\n\
+ ldr r0, _08131A6C @ =gSharedMem + 0x19348\n\
+ ldr r2, [r0, 0x8]\n\
+ mov r10, r2\n\
+ ldr r3, [r0, 0xC]\n\
+ mov r9, r3\n\
+ ldrh r5, [r0]\n\
+ ldr r0, _08131A70 @ =gBattleAnimAttacker\n\
+ ldrb r0, [r0]\n\
+ bl GetBattlerSubpriority\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ movs r7, 0\n\
+ b _08131B92\n\
+ .align 2, 0\n\
+_08131A6C: .4byte gSharedMem + 0x19348\n\
+_08131A70: .4byte gBattleAnimAttacker\n\
+_08131A74:\n\
+ ldr r4, _08131AD4 @ =gBattleAnimAttacker\n\
+ ldrb r0, [r4]\n\
+ bl GetBattlerSide\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _08131B10\n\
+ ldr r7, _08131AD8 @ =gBattlerPartyIndexes\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 1\n\
+ adds r0, r7\n\
+ ldrh r0, [r0]\n\
+ movs r6, 0x64\n\
+ muls r0, r6\n\
+ ldr r5, _08131ADC @ =gPlayerParty\n\
+ adds r0, r5\n\
+ movs r1, 0\n\
+ bl GetMonData\n\
+ mov r10, r0\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 1\n\
+ adds r0, r7\n\
+ ldrh r0, [r0]\n\
+ muls r0, r6\n\
+ adds r0, r5\n\
+ movs r1, 0x1\n\
+ bl GetMonData\n\
+ mov r9, r0\n\
+ ldrb r2, [r4]\n\
+ lsls r1, r2, 2\n\
+ ldr r0, _08131AE0 @ =gSharedMem + 0x17800\n\
+ adds r1, r0\n\
+ ldrh r0, [r1, 0x2]\n\
+ cmp r0, 0\n\
+ bne _08131AE4\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7\n\
+ ldrh r0, [r0]\n\
+ muls r0, r6\n\
+ adds r0, r5\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ b _08131AE6\n\
+ .align 2, 0\n\
+_08131AD4: .4byte gBattleAnimAttacker\n\
+_08131AD8: .4byte gBattlerPartyIndexes\n\
+_08131ADC: .4byte gPlayerParty\n\
+_08131AE0: .4byte gSharedMem + 0x17800\n\
+_08131AE4:\n\
+ ldrh r5, [r1, 0x2]\n\
+_08131AE6:\n\
+ movs r0, 0x1\n\
+ bl GetAnimBattlerSpriteId\n\
+ ldr r2, _08131B0C @ =gSprites\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ lsls r1, r0, 4\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r2\n\
+ adds r1, 0x43\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ movs r7, 0\n\
+ movs r6, 0x88\n\
+ lsls r6, 1\n\
+ b _08131B94\n\
+ .align 2, 0\n\
+_08131B0C: .4byte gSprites\n\
+_08131B10:\n\
+ ldr r7, _08131B64 @ =gBattlerPartyIndexes\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 1\n\
+ adds r0, r7\n\
+ ldrh r0, [r0]\n\
+ movs r6, 0x64\n\
+ muls r0, r6\n\
+ ldr r5, _08131B68 @ =gEnemyParty\n\
+ adds r0, r5\n\
+ movs r1, 0\n\
+ bl GetMonData\n\
+ mov r10, r0\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 1\n\
+ adds r0, r7\n\
+ ldrh r0, [r0]\n\
+ muls r0, r6\n\
+ adds r0, r5\n\
+ movs r1, 0x1\n\
+ bl GetMonData\n\
+ mov r9, r0\n\
+ ldrb r2, [r4]\n\
+ lsls r1, r2, 2\n\
+ ldr r0, _08131B6C @ =gSharedMem + 0x17800\n\
+ adds r1, r0\n\
+ ldrh r0, [r1, 0x2]\n\
+ cmp r0, 0\n\
+ bne _08131B70\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7\n\
+ ldrh r0, [r0]\n\
+ muls r0, r6\n\
+ adds r0, r5\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ b _08131B72\n\
+ .align 2, 0\n\
+_08131B64: .4byte gBattlerPartyIndexes\n\
+_08131B68: .4byte gEnemyParty\n\
+_08131B6C: .4byte gSharedMem + 0x17800\n\
+_08131B70:\n\
+ ldrh r5, [r1, 0x2]\n\
+_08131B72:\n\
+ movs r0, 0x1\n\
+ bl GetAnimBattlerSpriteId\n\
+ ldr r2, _08131C04 @ =gSprites\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ lsls r1, r0, 4\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r2\n\
+ adds r1, 0x43\n\
+ ldrb r0, [r1]\n\
+ subs r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ movs r7, 0x1\n\
+_08131B92:\n\
+ ldr r6, _08131C08 @ =0x0000ffe0\n\
+_08131B94:\n\
+ ldr r0, _08131C0C @ =gBattleAnimTarget\n\
+ ldrb r0, [r0]\n\
+ movs r1, 0x1\n\
+ bl GetBattlerSpriteCoord\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ lsls r3, r6, 16\n\
+ asrs r3, 16\n\
+ str r0, [sp]\n\
+ str r4, [sp, 0x4]\n\
+ mov r4, r10\n\
+ str r4, [sp, 0x8]\n\
+ mov r0, r9\n\
+ str r0, [sp, 0xC]\n\
+ adds r0, r5, 0\n\
+ adds r1, r7, 0\n\
+ movs r2, 0\n\
+ bl sub_8079F44\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ ldr r0, _08131C10 @ =gBattleAnimAttacker\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 2\n\
+ ldr r1, _08131C14 @ =gSharedMem + 0x17800\n\
+ adds r0, r1\n\
+ ldrh r0, [r0, 0x2]\n\
+ cmp r0, 0\n\
+ beq _08131BF2\n\
+ ldr r1, _08131C04 @ =gSprites\n\
+ lsls r0, r5, 4\n\
+ adds r0, r5\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x5]\n\
+ lsrs r0, 4\n\
+ lsls r0, 4\n\
+ movs r2, 0x80\n\
+ lsls r2, 1\n\
+ adds r1, r2, 0\n\
+ orrs r0, r1\n\
+ ldr r3, _08131C18 @ =0x00007fff\n\
+ movs r1, 0x10\n\
+ movs r2, 0x6\n\
+ bl BlendPalette\n\
+_08131BF2:\n\
+ ldr r0, _08131C1C @ =gTasks\n\
+ mov r3, r8\n\
+ lsls r1, r3, 2\n\
+ add r1, r8\n\
+ lsls r1, 3\n\
+ adds r1, r0\n\
+ strh r5, [r1, 0x26]\n\
+ b _08131DB6\n\
+ .align 2, 0\n\
+_08131C04: .4byte gSprites\n\
+_08131C08: .4byte 0x0000ffe0\n\
+_08131C0C: .4byte gBattleAnimTarget\n\
+_08131C10: .4byte gBattleAnimAttacker\n\
+_08131C14: .4byte gSharedMem + 0x17800\n\
+_08131C18: .4byte 0x00007fff\n\
+_08131C1C: .4byte gTasks\n\
+_08131C20:\n\
+ ldr r1, _08131C6C @ =gTasks\n\
+ mov r0, r8\n\
+ lsls r4, r0, 2\n\
+ adds r0, r4, r0\n\
+ lsls r0, 3\n\
+ adds r6, r0, r1\n\
+ ldrh r0, [r6, 0x26]\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ movs r1, 0x80\n\
+ lsls r1, 4\n\
+ adds r0, r1, 0\n\
+ ldrh r2, [r6, 0xA]\n\
+ adds r0, r2\n\
+ strh r0, [r6, 0xA]\n\
+ ldr r0, _08131C70 @ =gBattleAnimAttacker\n\
+ ldrb r0, [r0]\n\
+ bl GetBattlerSide\n\
+ lsls r0, 24\n\
+ mov r9, r4\n\
+ cmp r0, 0\n\
+ bne _08131C78\n\
+ ldr r3, _08131C74 @ =gSprites\n\
+ lsls r4, r5, 4\n\
+ adds r2, r4, r5\n\
+ lsls r2, 2\n\
+ adds r2, r3\n\
+ ldrh r1, [r6, 0xA]\n\
+ lsls r1, 16\n\
+ asrs r1, 24\n\
+ ldrh r0, [r2, 0x24]\n\
+ subs r0, r1\n\
+ strh r0, [r2, 0x24]\n\
+ adds r2, r3, 0\n\
+ adds r3, r4, 0\n\
+ b _08131C8E\n\
+ .align 2, 0\n\
+_08131C6C: .4byte gTasks\n\
+_08131C70: .4byte gBattleAnimAttacker\n\
+_08131C74: .4byte gSprites\n\
+_08131C78:\n\
+ ldr r2, _08131CDC @ =gSprites\n\
+ lsls r3, r5, 4\n\
+ adds r1, r3, r5\n\
+ lsls r1, 2\n\
+ adds r1, r2\n\
+ ldrh r0, [r6, 0xA]\n\
+ lsls r0, 16\n\
+ asrs r0, 24\n\
+ ldrh r4, [r1, 0x24]\n\
+ adds r0, r4\n\
+ strh r0, [r1, 0x24]\n\
+_08131C8E:\n\
+ ldr r1, _08131CE0 @ =gTasks\n\
+ mov r0, r9\n\
+ add r0, r8\n\
+ lsls r0, 3\n\
+ adds r6, r0, r1\n\
+ ldrb r0, [r6, 0xA]\n\
+ strh r0, [r6, 0xA]\n\
+ adds r1, r3, r5\n\
+ lsls r1, 2\n\
+ adds r1, r2\n\
+ ldrh r0, [r1, 0x24]\n\
+ ldrh r1, [r1, 0x20]\n\
+ adds r0, r1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ movs r1, 0x24\n\
+ ldrsh r0, [r6, r1]\n\
+ cmp r0, 0\n\
+ bne _08131D0E\n\
+ ldr r0, _08131CE4 @ =gBattleAnimAttacker\n\
+ ldrb r0, [r0]\n\
+ bl GetBattlerSide\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _08131CEC\n\
+ lsls r4, r5, 16\n\
+ asrs r4, 16\n\
+ ldr r0, _08131CE8 @ =gBattleAnimTarget\n\
+ ldrb r0, [r0]\n\
+ movs r1, 0\n\
+ bl GetBattlerSpriteCoord\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r4, r0\n\
+ bge _08131D0E\n\
+ b _08131D02\n\
+ .align 2, 0\n\
+_08131CDC: .4byte gSprites\n\
+_08131CE0: .4byte gTasks\n\
+_08131CE4: .4byte gBattleAnimAttacker\n\
+_08131CE8: .4byte gBattleAnimTarget\n\
+_08131CEC:\n\
+ lsls r4, r5, 16\n\
+ asrs r4, 16\n\
+ ldr r0, _08131D30 @ =gBattleAnimTarget\n\
+ ldrb r0, [r0]\n\
+ movs r1, 0\n\
+ bl GetBattlerSpriteCoord\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r4, r0\n\
+ ble _08131D0E\n\
+_08131D02:\n\
+ ldrh r0, [r6, 0x24]\n\
+ adds r0, 0x1\n\
+ strh r0, [r6, 0x24]\n\
+ ldr r1, _08131D34 @ =gBattleAnimArgs\n\
+ ldr r0, _08131D38 @ =0x0000ffff\n\
+ strh r0, [r1, 0xE]\n\
+_08131D0E:\n\
+ lsls r0, r5, 16\n\
+ movs r2, 0x80\n\
+ lsls r2, 14\n\
+ adds r0, r2\n\
+ movs r1, 0x98\n\
+ lsls r1, 17\n\
+ cmp r0, r1\n\
+ bhi _08131D20\n\
+ b _08131EA0\n\
+_08131D20:\n\
+ ldr r0, _08131D3C @ =gTasks\n\
+ mov r1, r9\n\
+ add r1, r8\n\
+ lsls r1, 3\n\
+ adds r1, r0\n\
+ movs r0, 0\n\
+ strh r0, [r1, 0xA]\n\
+ b _08131DB6\n\
+ .align 2, 0\n\
+_08131D30: .4byte gBattleAnimTarget\n\
+_08131D34: .4byte gBattleAnimArgs\n\
+_08131D38: .4byte 0x0000ffff\n\
+_08131D3C: .4byte gTasks\n\
+_08131D40:\n\
+ movs r0, 0\n\
+ bl GetAnimBattlerSpriteId\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+ ldr r1, _08131D8C @ =gTasks\n\
+ mov r3, r8\n\
+ lsls r4, r3, 2\n\
+ adds r0, r4, r3\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ ldrh r0, [r0, 0x26]\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ lsls r0, r5, 4\n\
+ adds r0, r5\n\
+ lsls r0, 2\n\
+ ldr r5, _08131D90 @ =gSprites\n\
+ adds r0, r5\n\
+ bl DestroySpriteAndFreeResources_\n\
+ ldr r0, _08131D94 @ =gBattleAnimAttacker\n\
+ ldrb r0, [r0]\n\
+ bl GetBattlerSide\n\
+ lsls r0, 24\n\
+ mov r9, r4\n\
+ cmp r0, 0\n\
+ bne _08131D98\n\
+ lsls r1, r7, 4\n\
+ adds r1, r7\n\
+ lsls r1, 2\n\
+ adds r1, r5\n\
+ ldrh r0, [r1, 0x20]\n\
+ negs r0, r0\n\
+ subs r0, 0x20\n\
+ strh r0, [r1, 0x24]\n\
+ b _08131DAC\n\
+ .align 2, 0\n\
+_08131D8C: .4byte gTasks\n\
+_08131D90: .4byte gSprites\n\
+_08131D94: .4byte gBattleAnimAttacker\n\
+_08131D98:\n\
+ lsls r0, r7, 4\n\
+ adds r0, r7\n\
+ lsls r0, 2\n\
+ adds r0, r5\n\
+ ldrh r2, [r0, 0x20]\n\
+ movs r4, 0x88\n\
+ lsls r4, 1\n\
+ adds r1, r4, 0\n\
+ subs r1, r2\n\
+ strh r1, [r0, 0x24]\n\
+_08131DAC:\n\
+ ldr r0, _08131DC0 @ =gTasks\n\
+ mov r1, r9\n\
+ add r1, r8\n\
+ lsls r1, 3\n\
+ adds r1, r0\n\
+_08131DB6:\n\
+ ldrh r0, [r1, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r1, 0x8]\n\
+ b _08131EA0\n\
+ .align 2, 0\n\
+_08131DC0: .4byte gTasks\n\
+_08131DC4:\n\
+ movs r0, 0\n\
+ bl GetAnimBattlerSpriteId\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+ ldr r1, _08131E38 @ =gTasks\n\
+ mov r0, r8\n\
+ lsls r4, r0, 2\n\
+ adds r0, r4, r0\n\
+ lsls r0, 3\n\
+ adds r2, r0, r1\n\
+ movs r1, 0x80\n\
+ lsls r1, 4\n\
+ adds r0, r1, 0\n\
+ ldrh r3, [r2, 0xA]\n\
+ adds r0, r3\n\
+ strh r0, [r2, 0xA]\n\
+ ldr r0, _08131E3C @ =gBattleAnimAttacker\n\
+ mov r10, r0\n\
+ ldrb r0, [r0]\n\
+ str r2, [sp, 0x10]\n\
+ bl GetBattlerSide\n\
+ lsls r0, 24\n\
+ mov r9, r4\n\
+ ldr r2, [sp, 0x10]\n\
+ cmp r0, 0\n\
+ bne _08131E44\n\
+ ldr r1, _08131E40 @ =gSprites\n\
+ lsls r5, r7, 4\n\
+ adds r0, r5, r7\n\
+ lsls r0, 2\n\
+ adds r6, r0, r1\n\
+ ldrh r0, [r2, 0xA]\n\
+ lsls r0, 16\n\
+ asrs r0, 24\n\
+ ldrh r1, [r6, 0x24]\n\
+ adds r0, r1\n\
+ strh r0, [r6, 0x24]\n\
+ movs r2, 0x24\n\
+ ldrsh r4, [r6, r2]\n\
+ movs r3, 0x20\n\
+ ldrsh r0, [r6, r3]\n\
+ adds r4, r0\n\
+ mov r1, r10\n\
+ ldrb r0, [r1]\n\
+ movs r1, 0\n\
+ bl GetBattlerSpriteCoord\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ adds r3, r5, 0\n\
+ cmp r4, r0\n\
+ blt _08131E7C\n\
+ movs r2, 0\n\
+ strh r2, [r6, 0x24]\n\
+ b _08131E7C\n\
+ .align 2, 0\n\
+_08131E38: .4byte gTasks\n\
+_08131E3C: .4byte gBattleAnimAttacker\n\
+_08131E40: .4byte gSprites\n\
+_08131E44:\n\
+ ldr r1, _08131EB0 @ =gSprites\n\
+ lsls r5, r7, 4\n\
+ adds r0, r5, r7\n\
+ lsls r0, 2\n\
+ adds r6, r0, r1\n\
+ ldrh r1, [r2, 0xA]\n\
+ lsls r1, 16\n\
+ asrs r1, 24\n\
+ ldrh r0, [r6, 0x24]\n\
+ subs r0, r1\n\
+ strh r0, [r6, 0x24]\n\
+ movs r3, 0x24\n\
+ ldrsh r4, [r6, r3]\n\
+ movs r1, 0x20\n\
+ ldrsh r0, [r6, r1]\n\
+ adds r4, r0\n\
+ mov r2, r10\n\
+ ldrb r0, [r2]\n\
+ movs r1, 0\n\
+ bl GetBattlerSpriteCoord\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ adds r3, r5, 0\n\
+ cmp r4, r0\n\
+ bgt _08131E7C\n\
+ movs r4, 0\n\
+ strh r4, [r6, 0x24]\n\
+_08131E7C:\n\
+ ldr r1, _08131EB4 @ =gTasks\n\
+ mov r0, r9\n\
+ add r0, r8\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ ldrb r1, [r0, 0xA]\n\
+ strh r1, [r0, 0xA]\n\
+ ldr r1, _08131EB0 @ =gSprites\n\
+ adds r0, r3, r7\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ movs r1, 0x24\n\
+ ldrsh r0, [r0, r1]\n\
+ cmp r0, 0\n\
+ bne _08131EA0\n\
+ mov r0, r8\n\
+ bl DestroyAnimVisualTask\n\
+_08131EA0:\n\
+ add sp, 0x14\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08131EB0: .4byte gSprites\n\
+_08131EB4: .4byte gTasks\n\
+ .syntax divided");
+}
+#endif // NONMATCHING
+
+void sub_8131EB8(struct Sprite *sprite)
+{
+ switch (sprite->data[7])
+ {
+ case 0:
+ if (gBattleAnimArgs[7] == -1)
+ {
+ PlaySE12WithPanning(SE_W233, BattleAnimAdjustPanning(63));
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 16;
+ sprite->data[0] = -32;
+ sprite->data[7]++;
+ sprite->invisible = 0;
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT && !IsContest())
+ sprite->subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_BATTLER_TARGET)].subpriority - 1;
+ }
+ else
+ {
+ sprite->invisible = 1;
+ }
+ 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 = gBankSpriteIds[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 = gBankSpriteIds[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 = gBankSpriteIds[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_BATTLER_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)
+{
+ // These two cases are identical.
+ 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;
+ REG_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]++;
+ REG_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]++;
+ REG_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], gSlackOffSquishAffineAnimCmds);
+ 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);
+} \ No newline at end of file
diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c
index 1f73b64b1..278e5e459 100644
--- a/src/rom_8077ABC.c
+++ b/src/rom_8077ABC.c
@@ -685,7 +685,7 @@ void sub_8078504(struct Sprite *sprite)
}
}
-void move_anim_8074EE0(struct Sprite *sprite)
+void DestroySpriteAndMatrix(struct Sprite *sprite)
{
FreeSpriteOamMatrix(sprite);
DestroyAnimSprite(sprite);
@@ -703,7 +703,7 @@ void unref_sub_8078588(struct Sprite *sprite)
void unref_sub_80785CC(struct Sprite *sprite)
{
ResetPaletteStructByUid(sprite->data[5]);
- move_anim_8074EE0(sprite);
+ DestroySpriteAndMatrix(sprite);
}
void sub_80785E4(struct Sprite *sprite)
@@ -1386,7 +1386,7 @@ void sub_80793C4(struct Sprite *sprite)
}
else if (sprite->animEnded || sprite->affineAnimEnded)
{
- move_anim_8074EE0(sprite);
+ DestroySpriteAndMatrix(sprite);
}
}
@@ -1637,7 +1637,7 @@ void sub_80798AC(u8 task)
AnimTask_BlendMonInAndOutSetup(&gTasks[task]);
}
-void sub_80798F4(struct Task *task, u8 a2, const void *a3)
+void PrepareAffineAnimInTaskData(struct Task *task, u8 a2, const void *a3)
{
task->data[7] = 0;
task->data[8] = 0;
@@ -1650,7 +1650,7 @@ void sub_80798F4(struct Task *task, u8 a2, const void *a3)
PrepareBattlerSpriteForRotScale(a2, 0);
}
-bool8 sub_807992C(struct Task *task)
+bool8 RunAffineAnimFromTaskData(struct Task *task)
{
gUnknown_0202F7D4 = sub_8079BFC(task->data[13], task->data[14]) + (task->data[7] << 3);
switch (gUnknown_0202F7D4->type)
@@ -1903,7 +1903,7 @@ u8 GetBattlerSubpriority(u8 bank)
return ret;
}
-u8 sub_8079ED4(u8 slot)
+u8 GetBattlerSpriteBGPriority(u8 slot)
{
u8 status = GetBattlerPosition(slot);
@@ -1930,7 +1930,7 @@ u8 GetBattlerPosition_permutated(u8 slot)
return 1;
}
-u8 sub_8079F44(u16 species, u8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7, u32 a8)
+u8 sub_8079F44(u16 species, bool8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7, u32 a8)
{
u8 sprite;
u16 sheet = LoadSpriteSheet(&gUnknown_0837F5E0[a3]);
@@ -1980,12 +1980,12 @@ u8 sub_8079F44(u16 species, u8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7,
return sprite;
}
-void sub_807A0F4(struct Sprite *sprite)
+void DestroySpriteAndFreeResources_(struct Sprite *sprite)
{
DestroySpriteAndFreeResources(sprite);
}
-s16 sub_807A100(u8 slot, u8 a2)
+s16 GetBattlerSpriteCoordAttr(u8 slot, u8 a2)
{
u16 species;
u32 personality;
@@ -2185,7 +2185,7 @@ void sub_807A544(struct Sprite *sprite)
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[3] = gBattleAnimArgs[4];
sprite->data[5] = gBattleAnimArgs[5];
- StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
sprite->callback = sub_8078504;
}
@@ -2206,7 +2206,7 @@ void sub_807A5C4(struct Sprite *sprite)
sprite->data[3] = gBattleAnimArgs[4];
sprite->data[5] = gBattleAnimArgs[5];
StartSpriteAnim(sprite, gBattleAnimArgs[6]);
- StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
sprite->callback = sub_8078504;
}