ref: e025ab9db0b85cadb42e9b72ac408a58f8133672
parent: cbf4c663611d4b7d07f3fc8d43f0be756ccc19ed
parent: fd1fa78ffe78c9101c0ae5a1ca299d4282462ecd
author: Rangi <[email protected]>
date: Sun Dec 9 12:44:09 EST 2018
Merge pull request #578 from mid-kid/master Fixes in the animation subsystem.
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -90,7 +90,7 @@
To install **rgbds**:
```bash
-sudo apt-get install bison libpng-dev
+sudo apt-get install pkg-config flex bison libpng-dev
git clone --depth=1 https://github.com/rednex/rgbds
sudo make -C rgbds CFLAGS=-O2 install
```
@@ -106,7 +106,7 @@
To install **rgbds**:
```bash
-sudo zypper install bison libpng16-devel
+sudo zypper install pkg-config flex bison libpng16-devel
git clone --depth=1 https://github.com/rednex/rgbds
sudo make -C rgbds CFLAGS=-O2 install
```
@@ -119,10 +119,12 @@
sudo pacman -S make gcc git
```
-To install **rgbds**:
+**rgbds** is available on the [AUR](https://aur.archlinux.org/packages/rgbds/).
+Alternatively, to install **rgbds** manually:
+
```bash
-sudo pacman -S bison libpng
+sudo pacman -S pkg-config flex bison libpng
git clone --depth=1 https://github.com/rednex/rgbds
sudo make -C rgbds CFLAGS=-O2 install
```
@@ -152,6 +154,8 @@
If `rgbds` is not available, you'll also need these:
+- `pkg-config`
+- `flex`
- `bison`
- `libpng` (and the development headers)
--- a/audio/engine.asm
+++ b/audio/engine.asm
@@ -1105,7 +1105,7 @@
ld a, [de]
inc de
- cp $ff
+ cp endchannel_cmd
jr z, .quit
and $f
@@ -1136,9 +1136,9 @@
ParseMusic:
; parses until a note is read or the song is ended
call GetMusicByte ; store next byte in a
- cp $ff ; is the song over?
+ cp endchannel_cmd
jr z, .endchannel
- cp $d0 ; is it a note?
+ cp first_music_cmd
jr c, .readnote
; then it's a command
.readcommand
@@ -1350,7 +1350,7 @@
; reload command
ld a, [wCurMusicByte]
; get command #
- sub $d0 ; first command
+ sub first_music_cmd
ld e, a
ld d, 0
; seek command pointer
@@ -1613,7 +1613,7 @@
ld [hl], d
ret
-MusicEE
+MusicEE:
; conditional jump
; checks a byte in ram corresponding to the current channel
; doesn't seem to be set by any commands
--- a/constants/audio_constants.asm
+++ b/constants/audio_constants.asm
@@ -24,11 +24,11 @@
const CHAN3 ; 2
const CHAN4 ; 3
NUM_MUSIC_CHANS EQU const_value
-NUM_NOISE_CHANS EQU const_value
const CHAN5 ; 4
const CHAN6 ; 5
const CHAN7 ; 6
const CHAN8 ; 7
+NUM_NOISE_CHANS EQU const_value - NUM_MUSIC_CHANS
NUM_CHANNELS EQU const_value
; channel_struct members (see macros/wram.asm)
--- a/constants/battle_anim_constants.asm
+++ b/constants/battle_anim_constants.asm
@@ -26,6 +26,9 @@
const BATTLEANIMSTRUCT_17
BATTLEANIMSTRUCT_LENGTH EQU const_value
+; Start tile for battle animation graphics
+BATTLEANIM_BASE_TILE EQU 7 * 7 ; Maximum size of a pokemon picture
+
; BattleAnimObjects indexes (see data/battle_anims/objects.asm)
const_def
const ANIM_OBJ_00
@@ -212,10 +215,10 @@
const ANIM_OBJ_ROCK_SMASH
const ANIM_OBJ_FLOWER
const ANIM_OBJ_COTTON
- const ANIM_OBJ_PLAYERFEETFOLLOW
- const ANIM_OBJ_ENEMYFEETFOLLOW
- const ANIM_OBJ_PLAYERHEADFOLLOW
- const ANIM_OBJ_ENEMYHEADFOLLOW
+ const ANIM_OBJ_ENEMYFEET_1ROW
+ const ANIM_OBJ_PLAYERHEAD_1ROW
+ const ANIM_OBJ_ENEMYFEET_2ROW
+ const ANIM_OBJ_PLAYERHEAD_2ROW
; DoBattleAnimFrame arguments (see engine/battle_anims/functions.asm)
const_def
@@ -725,8 +728,8 @@
const ANIM_BG_WHIRLPOOL
const ANIM_BG_TELEPORT
const ANIM_BG_NIGHT_SHADE
- const ANIM_BG_FEET_FOLLOW
- const ANIM_BG_HEAD_FOLLOW
+ const ANIM_BG_BATTLEROBJ_1ROW
+ const ANIM_BG_BATTLEROBJ_2ROW
const ANIM_BG_DOUBLE_TEAM
const ANIM_BG_ACID_ARMOR
const ANIM_BG_RAPID_FLASH
@@ -804,6 +807,8 @@
const ANIM_GFX_ANGELS
const ANIM_GFX_WAVE
const ANIM_GFX_AEROBLAST
+ const ANIM_GFX_PLAYERHEAD
+ const ANIM_GFX_ENEMYFEET
; battle_bg_effect struct members (see macros/wram.asm)
const_def
--- a/constants/misc_constants.asm
+++ b/constants/misc_constants.asm
@@ -7,9 +7,10 @@
FEMALE EQU 1
; FlagAction arguments (see home/flag.asm)
-RESET_FLAG EQU 0
-SET_FLAG EQU 1
-CHECK_FLAG EQU 2
+ const_def
+ const RESET_FLAG
+ const SET_FLAG
+ const CHECK_FLAG
; G/S version ID: 0 = Gold, 1 = Silver (used by checkver)
GS_VERSION EQU 0
--- a/data/battle/stat_multipliers.asm
+++ b/data/battle/stat_multipliers.asm
@@ -2,7 +2,7 @@
; (except accuracy, see data/battle/accuracy_multipliers.asm).
; This table is identical to data/battle/stat_multipliers_2.asm.
-; This one is used by CalcStats.
+; This one is used by CalcBattleStats.
StatLevelMultipliers:
db 25, 100 ; -6 = 25%
--- a/data/battle_anims/objects.asm
+++ b/data/battle_anims/objects.asm
@@ -18,191 +18,191 @@
BattleAnimObjects:
; entries correspond to ANIM_OBJ_* constants
- battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_00
- battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_01
- battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_02
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_03
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_04
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_05
- battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_03, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_06
- battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_04, BATTLEANIMFUNC_1B, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_07
- battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_08
- battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_06, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_FANG
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_07, BATTLEANIMFUNC_09, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_0A
- battleanimobj RELATIVE_X, $aa, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_10, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_EMBER
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0E, BATTLEANIMFUNC_04, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_DRAGON_RAGE
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_03, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_FLAMETHROWER
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_08, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_FIRE_SPIN
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_0A, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_FIRE_BLAST
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_03, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_BURNED
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_12, BATTLEANIMFUNC_08, PAL_BATTLE_OB_BLUE, $0a ; ANIM_OBJ_BLIZZARD
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_13, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $0a ; ANIM_OBJ_12
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_14, BATTLEANIMFUNC_01, PAL_BATTLE_OB_BLUE, $0a ; ANIM_OBJ_ICE_BEAM
- battleanimobj RELATIVE_X | X_FLIP, $78, BATTLEANIMFRAMESET_16, BATTLEANIMFUNC_RAZOR_LEAF, PAL_BATTLE_OB_GREEN, $06 ; ANIM_OBJ_RAZOR_LEAF
- battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_12, PAL_BATTLE_OB_RED, $0b ; ANIM_OBJ_POKE_BALL
- battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_13, PAL_BATTLE_OB_RED, $0b ; ANIM_OBJ_POKE_BALL_BLOCKED
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, PAL_BATTLE_OB_RED, $08 ; ANIM_OBJ_17
- battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, PAL_BATTLE_OB_RED, $08 ; ANIM_OBJ_18
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_1D, BATTLEANIMFUNC_06, PAL_BATTLE_OB_GRAY, $0c ; ANIM_OBJ_19
- battleanimobj RELATIVE_X, $b4, BATTLEANIMFRAMESET_1F, BATTLEANIMFUNC_38, PAL_BATTLE_OB_GRAY, $0c ; ANIM_OBJ_1A
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $07 ; ANIM_OBJ_1B
- battleanimobj RELATIVE_X, $a0, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $07 ; ANIM_OBJ_BALL_POOF
- battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_07, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_BIG_ROCK
- battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_1A, BATTLEANIMFUNC_07, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_SMALL_ROCK
- battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_1B, BATTLEANIMFUNC_36, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_STRENGTH
- battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_84, BATTLEANIMFUNC_36, PAL_BATTLE_OB_BLUE, $21 ; ANIM_OBJ_SEISMIC_TOSS
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_0C, PAL_BATTLE_OB_BLUE, $0d ; ANIM_OBJ_BUBBLE
- battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_23, BATTLEANIMFUNC_0D, PAL_BATTLE_OB_BLUE, $0d ; ANIM_OBJ_SURF
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_0E, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_SING
- battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLEANIMFRAMESET_27, BATTLEANIMFUNC_0F, PAL_BATTLE_OB_BLUE, $04 ; ANIM_OBJ_WATER_GUN
- battleanimobj RELATIVE_X, $b4, BATTLEANIMFRAMESET_2A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $04 ; ANIM_OBJ_HYDRO_PUMP
- battleanimobj RELATIVE_X, $40, BATTLEANIMFRAMESET_2B, BATTLEANIMFUNC_11, PAL_BATTLE_OB_GREEN, $0f ; ANIM_OBJ_POWDER
- battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_2C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $10 ; ANIM_OBJ_27
- battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, PAL_BATTLE_OB_YELLOW, $10 ; ANIM_OBJ_28
- battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_2E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $0a ; ANIM_OBJ_ICE_BUILDUP
- battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_2F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $0a ; ANIM_OBJ_FROZEN
- battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_14, PAL_BATTLE_OB_BROWN, $11 ; ANIM_OBJ_MASTER_BALL_SPARKLE
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_14, PAL_BATTLE_OB_YELLOW, $0d ; ANIM_OBJ_RECOVER
- battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_31, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_2D
- battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_32, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_2E
- battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_33, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_2F
- battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_15, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_THUNDER_WAVE
- battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_36, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_31
- battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_37, BATTLEANIMFUNC_03, PAL_BATTLE_OB_GRAY, $08 ; ANIM_OBJ_LIGHTNING_BOLT
- battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_38, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_33
- battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_39, BATTLEANIMFUNC_03, PAL_BATTLE_OB_GRAY, $08 ; ANIM_OBJ_34
- battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_3A, BATTLEANIMFUNC_16, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_CLAMP
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_3C, BATTLEANIMFUNC_17, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_BITE
- battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_3E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_37
- battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_3F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_38
- battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_40, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_39
- battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_41, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_3A
- battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_42, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_3B
- battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_18, PAL_BATTLE_OB_GREEN, $12 ; ANIM_OBJ_3C
- battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_44, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GREEN, $12 ; ANIM_OBJ_3D
- battleanimobj RELATIVE_X | X_FLIP, $b8, BATTLEANIMFRAMESET_45, BATTLEANIMFUNC_19, PAL_BATTLE_OB_GRAY, $13 ; ANIM_OBJ_GUST
- battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_46, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_3F
- battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_47, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_40
- battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_48, BATTLEANIMFUNC_1A, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_41
- battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_49, BATTLEANIMFUNC_1A, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_42
- battleanimobj RELATIVE_X | X_FLIP, $98, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_SONICBOOM_JP
- battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_4B, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_44
- battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_4C, BATTLEANIMFUNC_1C, PAL_BATTLE_OB_GREEN, $12 ; ANIM_OBJ_ABSORB
- battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_4D, BATTLEANIMFUNC_1D, PAL_BATTLE_OB_GRAY, $15 ; ANIM_OBJ_EGG
- battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_51, BATTLEANIMFUNC_1E, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_47
- battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_52, BATTLEANIMFUNC_1F, PAL_BATTLE_OB_GREEN, $16 ; ANIM_OBJ_48
- battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_54, BATTLEANIMFUNC_1F, PAL_BATTLE_OB_GREEN, $16 ; ANIM_OBJ_49
- battleanimobj RELATIVE_X | X_FLIP, $68, BATTLEANIMFRAMESET_56, BATTLEANIMFUNC_LEECH_SEED, PAL_BATTLE_OB_GREEN, $06 ; ANIM_OBJ_LEECH_SEED
- battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_59, BATTLEANIMFUNC_21, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_4B
- battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_5C, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $17 ; ANIM_OBJ_WAVE
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_5D, BATTLEANIMFUNC_22, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_CONFUSE_RAY
- battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $88, BATTLEANIMFRAMESET_5F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $10 ; ANIM_OBJ_4E
- battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $88, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, PAL_BATTLE_OB_YELLOW, $10 ; ANIM_OBJ_4F
- battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $18 ; ANIM_OBJ_SCREEN
- battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $18 ; ANIM_OBJ_HARDEN
- battleanimobj RELATIVE_X | X_FLIP, $50, BATTLEANIMFRAMESET_61, BATTLEANIMFUNC_23, PAL_BATTLE_OB_YELLOW, $19 ; ANIM_OBJ_CHICK
- battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_63, BATTLEANIMFUNC_24, PAL_BATTLE_OB_GRAY, $19 ; ANIM_OBJ_AMNESIA
- battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_66, BATTLEANIMFUNC_25, PAL_BATTLE_OB_GRAY, $19 ; ANIM_OBJ_ASLEEP
- battleanimobj RELATIVE_X, $50, BATTLEANIMFRAMESET_1C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $0c ; ANIM_OBJ_SKULL
- battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_67, BATTLEANIMFUNC_26, PAL_BATTLE_OB_BROWN, $1a ; ANIM_OBJ_56
- battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_68, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BROWN, $1a ; ANIM_OBJ_57
- battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_69, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, $1a ; ANIM_OBJ_58
- battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_6D, BATTLEANIMFUNC_28, PAL_BATTLE_OB_YELLOW, $19 ; ANIM_OBJ_PARALYZED
- battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_6A, BATTLEANIMFUNC_27, PAL_BATTLE_OB_GRAY, $1b ; ANIM_OBJ_STRING_SHOT
- battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_HAZE
- battleanimobj RELATIVE_X | X_FLIP, $48, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_MIST
- battleanimobj RELATIVE_X | X_FLIP, $48, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_SMOG
- battleanimobj RELATIVE_X | X_FLIP, $78, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_POISON_GAS, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_POISON_GAS
- battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_71, BATTLEANIMFUNC_HORN, PAL_BATTLE_OB_GRAY, $1d ; ANIM_OBJ_HORN
- battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_72, BATTLEANIMFUNC_2C, PAL_BATTLE_OB_GRAY, $1d ; ANIM_OBJ_60
- battleanimobj RELATIVE_X, $48, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_2D, PAL_BATTLE_OB_RED, $1e ; ANIM_OBJ_PETAL_DANCE
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_06, PAL_BATTLE_OB_GRAY, $15 ; ANIM_OBJ_SLUDGE_BOMB
- battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_75, BATTLEANIMFUNC_2E, PAL_BATTLE_OB_BROWN, $19 ; ANIM_OBJ_PAY_DAY
- battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_64
- battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_GRAY, $11 ; ANIM_OBJ_MIMIC
- battleanimobj RELATIVE_X, $78, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_POISON_GAS, PAL_BATTLE_OB_RED, $23 ; ANIM_OBJ_ATTRACT
- battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_30, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_BONEMERANG
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_BONE_CLUB
- battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_BONE_RUSH
- battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_08, PAL_BATTLE_OB_YELLOW, $23 ; ANIM_OBJ_SWIFT
- battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_79, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_KINESIS
- battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_FLASH
- battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_SHINY
- battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_7B, BATTLEANIMFUNC_32, PAL_BATTLE_OB_GRAY, $20 ; ANIM_OBJ_SKY_ATTACK
- battleanimobj RELATIVE_X | X_FLIP, $98, BATTLEANIMFRAMESET_7C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $04 ; ANIM_OBJ_LICK
- battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_7D, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $18 ; ANIM_OBJ_WITHDRAW
- battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_BLUE, $0d ; ANIM_OBJ_71
- battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_7E, BATTLEANIMFUNC_33, PAL_BATTLE_OB_YELLOW, $12 ; ANIM_OBJ_GROWTH
- battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_GRAY, $08 ; ANIM_OBJ_CONVERSION2
- battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_34, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_SMOKE
- battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_35, PAL_BATTLE_OB_GRAY, $15 ; ANIM_OBJ_SMOKESCREEN
- battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_80, BATTLEANIMFUNC_33, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_SWORDS_DANCE
- battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_81, BATTLEANIMFUNC_37, PAL_BATTLE_OB_GRAY, $11 ; ANIM_OBJ_SPEED_LINE
- battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_85, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $22 ; ANIM_OBJ_SHARPEN
- battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_86, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $22 ; ANIM_OBJ_DEFENSE_CURL
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_87, BATTLEANIMFUNC_39, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_7A
- battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_3A, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_7B
- battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_DISABLE
- battleanimobj RELATIVE_X | X_FLIP | PRIORITY, $88, BATTLEANIMFRAMESET_88, BATTLEANIMFUNC_3B, PAL_BATTLE_OB_BLUE, $13 ; ANIM_OBJ_AGILITY
- battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_25, PAL_BATTLE_OB_RED, $23 ; ANIM_OBJ_HEART
- battleanimobj RELATIVE_X, $98, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_34, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_FLAME_WHEEL
- battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_3C, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_SACRED_FIRE
- battleanimobj RELATIVE_X | X_FLIP, $68, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_COTTON_SPORE
- battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_8A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_MILK_DRINK
- battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_8C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_ANGER
- battleanimobj RELATIVE_X | X_FLIP, $50, BATTLEANIMFRAMESET_8D, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $1f ; ANIM_OBJ_84
- battleanimobj RELATIVE_X, $40, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_40, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_85
- battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_8E, BATTLEANIMFUNC_41, PAL_BATTLE_OB_RED, $1f ; ANIM_OBJ_BATON_PASS
- battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_8F, BATTLEANIMFUNC_3E, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_LOCK_ON
- battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_93, BATTLEANIMFUNC_3E, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_MIND_READER
- battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_97, BATTLEANIMFUNC_3D, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_SAFEGUARD
- battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_3D, PAL_BATTLE_OB_YELLOW, $23 ; ANIM_OBJ_PROTECT
- battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_2E, PAL_BATTLE_OB_GRAY, $19 ; ANIM_OBJ_THIEF
- battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $15 ; ANIM_OBJ_OCTAZOOKA
- battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_35, PAL_BATTLE_OB_RED, $19 ; ANIM_OBJ_PRESENT
- battleanimobj RELATIVE_X | X_FLIP, $70, BATTLEANIMFRAMESET_8B, BATTLEANIMFUNC_3F, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_SPIKES
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_15, BATTLEANIMFUNC_08, PAL_BATTLE_OB_GRAY, $0a ; ANIM_OBJ_POWDER_SNOW
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_02, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_DRAGONBREATH
- battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_42, PAL_BATTLE_OB_GRAY, $08 ; ANIM_OBJ_CONVERSION
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_9A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1b ; ANIM_OBJ_SPIDER_WEB
- battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_9B, BATTLEANIMFUNC_35, PAL_BATTLE_OB_RED, $23 ; ANIM_OBJ_93
- battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_23, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_NIGHTMARE
- battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9D, BATTLEANIMFUNC_25, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_IN_NIGHTMARE
- battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_LOVELY_KISS
- battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $25 ; ANIM_OBJ_SWEET_KISS
- battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLEANIMFRAMESET_9F, BATTLEANIMFUNC_3A, PAL_BATTLE_OB_GREEN, $23 ; ANIM_OBJ_SKETCH
- battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_A0, BATTLEANIMFUNC_16, PAL_BATTLE_OB_GRAY, $23 ; ANIM_OBJ_99
- battleanimobj RELATIVE_X | X_FLIP, $70, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_43, PAL_BATTLE_OB_YELLOW, $23 ; ANIM_OBJ_9A
- battleanimobj RELATIVE_X | X_FLIP, $c0, BATTLEANIMFRAMESET_A2, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_DESTINY_BOND
- battleanimobj RELATIVE_X | X_FLIP, $40, BATTLEANIMFRAMESET_A3, BATTLEANIMFUNC_44, PAL_BATTLE_OB_YELLOW, $24 ; ANIM_OBJ_MORNING_SUN
- battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_A4, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $24 ; ANIM_OBJ_GLIMMER
- battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_A5, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $24 ; ANIM_OBJ_MOONLIGHT
- battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_45, PAL_BATTLE_OB_RED, $12 ; ANIM_OBJ_HIDDEN_POWER
- battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_A6, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_A0
- battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_A7, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_A1
- battleanimobj RELATIVE_X | X_FLIP, $00, BATTLEANIMFRAMESET_B4, BATTLEANIMFUNC_4A, PAL_BATTLE_OB_BROWN, $0f ; ANIM_OBJ_SANDSTORM
- battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_A8, BATTLEANIMFUNC_02, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_ZAP_CANNON
- battleanimobj RELATIVE_X | X_FLIP, $40, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_11, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_SPITE
- battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_A9, BATTLEANIMFUNC_46, PAL_BATTLE_OB_GRAY, $23 ; ANIM_OBJ_CURSE
- battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_47, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_PERISH_SONG
- battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_AA, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $24 ; ANIM_OBJ_FORESIGHT
- battleanimobj RELATIVE_X | X_FLIP, $b8, BATTLEANIMFRAMESET_AB, BATTLEANIMFUNC_48, PAL_BATTLE_OB_GRAY, $13 ; ANIM_OBJ_RAPID_SPIN
- battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_AC, BATTLEANIMFUNC_44, PAL_BATTLE_OB_GRAY, $13 ; ANIM_OBJ_SWAGGER
- battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_AA
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_43, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_AB
- battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_AD, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $17 ; ANIM_OBJ_MEAN_LOOK
- battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_AE, BATTLEANIMFUNC_49, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_AD
- battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_AF, BATTLEANIMFUNC_01, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_AE
- battleanimobj RELATIVE_X | X_FLIP, $00, BATTLEANIMFRAMESET_B0, BATTLEANIMFUNC_4A, PAL_BATTLE_OB_GRAY, $04 ; ANIM_OBJ_RAIN
- battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_4B, PAL_BATTLE_OB_RED, $1c ; ANIM_OBJ_B0
- battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_B1, BATTLEANIMFUNC_4C, PAL_BATTLE_OB_GRAY, $19 ; ANIM_OBJ_PSYCH_UP
- battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4D, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_ANCIENTPOWER
- battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_B3, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $27 ; ANIM_OBJ_AEROBLAST
- battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_04, PAL_BATTLE_OB_BLUE, $15 ; ANIM_OBJ_SHADOW_BALL
- battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4E, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_ROCK_SMASH
- battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_08, PAL_BATTLE_OB_RED, $1e ; ANIM_OBJ_FLOWER
- battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_4F, PAL_BATTLE_OB_RED, $1f ; ANIM_OBJ_COTTON
- battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B5, BATTLEANIMFUNC_00, PAL_BATTLE_OB_ENEMY, $28 ; ANIM_OBJ_PLAYERFEETFOLLOW
- battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B6, BATTLEANIMFUNC_00, PAL_BATTLE_OB_PLAYER, $29 ; ANIM_OBJ_ENEMYFEETFOLLOW
- battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B7, BATTLEANIMFUNC_00, PAL_BATTLE_OB_ENEMY, $28 ; ANIM_OBJ_PLAYERHEADFOLLOW
- battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B8, BATTLEANIMFUNC_00, PAL_BATTLE_OB_PLAYER, $29 ; ANIM_OBJ_ENEMYHEADFOLLOW
+ battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_00
+ battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_01
+ battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_02
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_03
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_04
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_05
+ battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_03, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_06
+ battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_04, BATTLEANIMFUNC_1B, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_07
+ battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_08
+ battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_06, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_FANG
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_07, BATTLEANIMFUNC_09, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_0A
+ battleanimobj RELATIVE_X, $aa, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_10, PAL_BATTLE_OB_RED, ANIM_GFX_FIRE ; ANIM_OBJ_EMBER
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0E, BATTLEANIMFUNC_04, PAL_BATTLE_OB_RED, ANIM_GFX_FIRE ; ANIM_OBJ_DRAGON_RAGE
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_03, PAL_BATTLE_OB_RED, ANIM_GFX_FIRE ; ANIM_OBJ_FLAMETHROWER
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_08, PAL_BATTLE_OB_RED, ANIM_GFX_FIRE ; ANIM_OBJ_FIRE_SPIN
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_0A, PAL_BATTLE_OB_RED, ANIM_GFX_FIRE ; ANIM_OBJ_FIRE_BLAST
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_03, PAL_BATTLE_OB_RED, ANIM_GFX_FIRE ; ANIM_OBJ_BURNED
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_12, BATTLEANIMFUNC_08, PAL_BATTLE_OB_BLUE, ANIM_GFX_ICE ; ANIM_OBJ_BLIZZARD
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_13, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, ANIM_GFX_ICE ; ANIM_OBJ_12
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_14, BATTLEANIMFUNC_01, PAL_BATTLE_OB_BLUE, ANIM_GFX_ICE ; ANIM_OBJ_ICE_BEAM
+ battleanimobj RELATIVE_X | X_FLIP, $78, BATTLEANIMFRAMESET_16, BATTLEANIMFUNC_RAZOR_LEAF, PAL_BATTLE_OB_GREEN, ANIM_GFX_PLANT ; ANIM_OBJ_RAZOR_LEAF
+ battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_12, PAL_BATTLE_OB_RED, ANIM_GFX_POKE_BALL ; ANIM_OBJ_POKE_BALL
+ battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_13, PAL_BATTLE_OB_RED, ANIM_GFX_POKE_BALL ; ANIM_OBJ_POKE_BALL_BLOCKED
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, PAL_BATTLE_OB_RED, ANIM_GFX_EXPLOSION ; ANIM_OBJ_17
+ battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, PAL_BATTLE_OB_RED, ANIM_GFX_EXPLOSION ; ANIM_OBJ_18
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_1D, BATTLEANIMFUNC_06, PAL_BATTLE_OB_GRAY, ANIM_GFX_POISON ; ANIM_OBJ_19
+ battleanimobj RELATIVE_X, $b4, BATTLEANIMFRAMESET_1F, BATTLEANIMFUNC_38, PAL_BATTLE_OB_GRAY, ANIM_GFX_POISON ; ANIM_OBJ_1A
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_SMOKE ; ANIM_OBJ_1B
+ battleanimobj RELATIVE_X, $a0, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_SMOKE ; ANIM_OBJ_BALL_POOF
+ battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_07, PAL_BATTLE_OB_BROWN, ANIM_GFX_ROCKS ; ANIM_OBJ_BIG_ROCK
+ battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_1A, BATTLEANIMFUNC_07, PAL_BATTLE_OB_BROWN, ANIM_GFX_ROCKS ; ANIM_OBJ_SMALL_ROCK
+ battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_1B, BATTLEANIMFUNC_36, PAL_BATTLE_OB_BROWN, ANIM_GFX_ROCKS ; ANIM_OBJ_STRENGTH
+ battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_84, BATTLEANIMFUNC_36, PAL_BATTLE_OB_BLUE, ANIM_GFX_GLOBE ; ANIM_OBJ_SEISMIC_TOSS
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_0C, PAL_BATTLE_OB_BLUE, ANIM_GFX_BUBBLE ; ANIM_OBJ_BUBBLE
+ battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_23, BATTLEANIMFUNC_0D, PAL_BATTLE_OB_BLUE, ANIM_GFX_BUBBLE ; ANIM_OBJ_SURF
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_0E, PAL_BATTLE_OB_GRAY, ANIM_GFX_NOISE ; ANIM_OBJ_SING
+ battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLEANIMFRAMESET_27, BATTLEANIMFUNC_0F, PAL_BATTLE_OB_BLUE, ANIM_GFX_WATER ; ANIM_OBJ_WATER_GUN
+ battleanimobj RELATIVE_X, $b4, BATTLEANIMFRAMESET_2A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, ANIM_GFX_WATER ; ANIM_OBJ_HYDRO_PUMP
+ battleanimobj RELATIVE_X, $40, BATTLEANIMFRAMESET_2B, BATTLEANIMFUNC_11, PAL_BATTLE_OB_GREEN, ANIM_GFX_POWDER ; ANIM_OBJ_POWDER
+ battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_2C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_BEAM ; ANIM_OBJ_27
+ battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, PAL_BATTLE_OB_YELLOW, ANIM_GFX_BEAM ; ANIM_OBJ_28
+ battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_2E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, ANIM_GFX_ICE ; ANIM_OBJ_ICE_BUILDUP
+ battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_2F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, ANIM_GFX_ICE ; ANIM_OBJ_FROZEN
+ battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_14, PAL_BATTLE_OB_BROWN, ANIM_GFX_SPEED ; ANIM_OBJ_MASTER_BALL_SPARKLE
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_14, PAL_BATTLE_OB_YELLOW, ANIM_GFX_BUBBLE ; ANIM_OBJ_RECOVER
+ battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_31, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_LIGHTNING ; ANIM_OBJ_2D
+ battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_32, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_LIGHTNING ; ANIM_OBJ_2E
+ battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_33, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_LIGHTNING ; ANIM_OBJ_2F
+ battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_15, PAL_BATTLE_OB_YELLOW, ANIM_GFX_LIGHTNING ; ANIM_OBJ_THUNDER_WAVE
+ battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_36, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_LIGHTNING ; ANIM_OBJ_31
+ battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_37, BATTLEANIMFUNC_03, PAL_BATTLE_OB_GRAY, ANIM_GFX_EXPLOSION ; ANIM_OBJ_LIGHTNING_BOLT
+ battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_38, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_LIGHTNING ; ANIM_OBJ_33
+ battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_39, BATTLEANIMFUNC_03, PAL_BATTLE_OB_GRAY, ANIM_GFX_EXPLOSION ; ANIM_OBJ_34
+ battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_3A, BATTLEANIMFUNC_16, PAL_BATTLE_OB_GRAY, ANIM_GFX_CUT ; ANIM_OBJ_CLAMP
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_3C, BATTLEANIMFUNC_17, PAL_BATTLE_OB_GRAY, ANIM_GFX_CUT ; ANIM_OBJ_BITE
+ battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_3E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_CUT ; ANIM_OBJ_37
+ battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_3F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_CUT ; ANIM_OBJ_38
+ battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_40, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_CUT ; ANIM_OBJ_39
+ battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_41, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_CUT ; ANIM_OBJ_3A
+ battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_42, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_CUT ; ANIM_OBJ_3B
+ battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_18, PAL_BATTLE_OB_GREEN, ANIM_GFX_CHARGE ; ANIM_OBJ_3C
+ battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_44, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GREEN, ANIM_GFX_CHARGE ; ANIM_OBJ_3D
+ battleanimobj RELATIVE_X | X_FLIP, $b8, BATTLEANIMFRAMESET_45, BATTLEANIMFUNC_19, PAL_BATTLE_OB_GRAY, ANIM_GFX_WIND ; ANIM_OBJ_GUST
+ battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_46, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_WHIP ; ANIM_OBJ_3F
+ battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_47, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_WHIP ; ANIM_OBJ_40
+ battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_48, BATTLEANIMFUNC_1A, PAL_BATTLE_OB_GRAY, ANIM_GFX_WHIP ; ANIM_OBJ_41
+ battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_49, BATTLEANIMFUNC_1A, PAL_BATTLE_OB_GRAY, ANIM_GFX_WHIP ; ANIM_OBJ_42
+ battleanimobj RELATIVE_X | X_FLIP, $98, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, ANIM_GFX_WHIP ; ANIM_OBJ_SONICBOOM_JP
+ battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_4B, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_SPEED ; ANIM_OBJ_44
+ battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_4C, BATTLEANIMFUNC_1C, PAL_BATTLE_OB_GREEN, ANIM_GFX_CHARGE ; ANIM_OBJ_ABSORB
+ battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_4D, BATTLEANIMFUNC_1D, PAL_BATTLE_OB_GRAY, ANIM_GFX_EGG ; ANIM_OBJ_EGG
+ battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_51, BATTLEANIMFUNC_1E, PAL_BATTLE_OB_YELLOW, ANIM_GFX_SPEED ; ANIM_OBJ_47
+ battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_52, BATTLEANIMFUNC_1F, PAL_BATTLE_OB_GREEN, ANIM_GFX_ROPE ; ANIM_OBJ_48
+ battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_54, BATTLEANIMFUNC_1F, PAL_BATTLE_OB_GREEN, ANIM_GFX_ROPE ; ANIM_OBJ_49
+ battleanimobj RELATIVE_X | X_FLIP, $68, BATTLEANIMFRAMESET_56, BATTLEANIMFUNC_LEECH_SEED, PAL_BATTLE_OB_GREEN, ANIM_GFX_PLANT ; ANIM_OBJ_LEECH_SEED
+ battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_59, BATTLEANIMFUNC_21, PAL_BATTLE_OB_GRAY, ANIM_GFX_NOISE ; ANIM_OBJ_4B
+ battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_5C, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, ANIM_GFX_PSYCHIC ; ANIM_OBJ_WAVE
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_5D, BATTLEANIMFUNC_22, PAL_BATTLE_OB_YELLOW, ANIM_GFX_SPEED ; ANIM_OBJ_CONFUSE_RAY
+ battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $88, BATTLEANIMFRAMESET_5F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_BEAM ; ANIM_OBJ_4E
+ battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $88, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, PAL_BATTLE_OB_YELLOW, ANIM_GFX_BEAM ; ANIM_OBJ_4F
+ battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_REFLECT ; ANIM_OBJ_SCREEN
+ battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_REFLECT ; ANIM_OBJ_HARDEN
+ battleanimobj RELATIVE_X | X_FLIP, $50, BATTLEANIMFRAMESET_61, BATTLEANIMFUNC_23, PAL_BATTLE_OB_YELLOW, ANIM_GFX_STATUS ; ANIM_OBJ_CHICK
+ battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_63, BATTLEANIMFUNC_24, PAL_BATTLE_OB_GRAY, ANIM_GFX_STATUS ; ANIM_OBJ_AMNESIA
+ battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_66, BATTLEANIMFUNC_25, PAL_BATTLE_OB_GRAY, ANIM_GFX_STATUS ; ANIM_OBJ_ASLEEP
+ battleanimobj RELATIVE_X, $50, BATTLEANIMFRAMESET_1C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_POISON ; ANIM_OBJ_SKULL
+ battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_67, BATTLEANIMFUNC_26, PAL_BATTLE_OB_BROWN, ANIM_GFX_SAND ; ANIM_OBJ_56
+ battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_68, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BROWN, ANIM_GFX_SAND ; ANIM_OBJ_57
+ battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_69, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, ANIM_GFX_SAND ; ANIM_OBJ_58
+ battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_6D, BATTLEANIMFUNC_28, PAL_BATTLE_OB_YELLOW, ANIM_GFX_STATUS ; ANIM_OBJ_PARALYZED
+ battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_6A, BATTLEANIMFUNC_27, PAL_BATTLE_OB_GRAY, ANIM_GFX_WEB ; ANIM_OBJ_STRING_SHOT
+ battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, ANIM_GFX_HAZE ; ANIM_OBJ_HAZE
+ battleanimobj RELATIVE_X | X_FLIP, $48, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, ANIM_GFX_HAZE ; ANIM_OBJ_MIST
+ battleanimobj RELATIVE_X | X_FLIP, $48, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, ANIM_GFX_HAZE ; ANIM_OBJ_SMOG
+ battleanimobj RELATIVE_X | X_FLIP, $78, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_POISON_GAS, PAL_BATTLE_OB_GRAY, ANIM_GFX_HAZE ; ANIM_OBJ_POISON_GAS
+ battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_71, BATTLEANIMFUNC_HORN, PAL_BATTLE_OB_GRAY, ANIM_GFX_HORN ; ANIM_OBJ_HORN
+ battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_72, BATTLEANIMFUNC_2C, PAL_BATTLE_OB_GRAY, ANIM_GFX_HORN ; ANIM_OBJ_60
+ battleanimobj RELATIVE_X, $48, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_2D, PAL_BATTLE_OB_RED, ANIM_GFX_FLOWER ; ANIM_OBJ_PETAL_DANCE
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_06, PAL_BATTLE_OB_GRAY, ANIM_GFX_EGG ; ANIM_OBJ_SLUDGE_BOMB
+ battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_75, BATTLEANIMFUNC_2E, PAL_BATTLE_OB_BROWN, ANIM_GFX_STATUS ; ANIM_OBJ_PAY_DAY
+ battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, ANIM_GFX_WHIP ; ANIM_OBJ_64
+ battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_GRAY, ANIM_GFX_SPEED ; ANIM_OBJ_MIMIC
+ battleanimobj RELATIVE_X, $78, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_POISON_GAS, PAL_BATTLE_OB_RED, ANIM_GFX_OBJECTS ; ANIM_OBJ_ATTRACT
+ battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_30, PAL_BATTLE_OB_GRAY, ANIM_GFX_MISC ; ANIM_OBJ_BONEMERANG
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, ANIM_GFX_MISC ; ANIM_OBJ_BONE_CLUB
+ battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_MISC ; ANIM_OBJ_BONE_RUSH
+ battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_08, PAL_BATTLE_OB_YELLOW, ANIM_GFX_OBJECTS ; ANIM_OBJ_SWIFT
+ battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_79, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_MISC ; ANIM_OBJ_KINESIS
+ battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, PAL_BATTLE_OB_YELLOW, ANIM_GFX_SPEED ; ANIM_OBJ_FLASH
+ battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, PAL_BATTLE_OB_YELLOW, ANIM_GFX_SPEED ; ANIM_OBJ_SHINY
+ battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_7B, BATTLEANIMFUNC_32, PAL_BATTLE_OB_GRAY, ANIM_GFX_SKY_ATTACK ; ANIM_OBJ_SKY_ATTACK
+ battleanimobj RELATIVE_X | X_FLIP, $98, BATTLEANIMFRAMESET_7C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_WATER ; ANIM_OBJ_LICK
+ battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_7D, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_REFLECT ; ANIM_OBJ_WITHDRAW
+ battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_BLUE, ANIM_GFX_BUBBLE ; ANIM_OBJ_71
+ battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_7E, BATTLEANIMFUNC_33, PAL_BATTLE_OB_YELLOW, ANIM_GFX_CHARGE ; ANIM_OBJ_GROWTH
+ battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_GRAY, ANIM_GFX_EXPLOSION ; ANIM_OBJ_CONVERSION2
+ battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_34, PAL_BATTLE_OB_GRAY, ANIM_GFX_HAZE ; ANIM_OBJ_SMOKE
+ battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_35, PAL_BATTLE_OB_GRAY, ANIM_GFX_EGG ; ANIM_OBJ_SMOKESCREEN
+ battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_80, BATTLEANIMFUNC_33, PAL_BATTLE_OB_GRAY, ANIM_GFX_WHIP ; ANIM_OBJ_SWORDS_DANCE
+ battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_81, BATTLEANIMFUNC_37, PAL_BATTLE_OB_GRAY, ANIM_GFX_SPEED ; ANIM_OBJ_SPEED_LINE
+ battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_85, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_SHAPES ; ANIM_OBJ_SHARPEN
+ battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_86, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_SHAPES ; ANIM_OBJ_DEFENSE_CURL
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_87, BATTLEANIMFUNC_39, PAL_BATTLE_OB_GRAY, ANIM_GFX_MISC ; ANIM_OBJ_7A
+ battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_3A, PAL_BATTLE_OB_YELLOW, ANIM_GFX_SPEED ; ANIM_OBJ_7B
+ battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_LIGHTNING ; ANIM_OBJ_DISABLE
+ battleanimobj RELATIVE_X | X_FLIP | PRIORITY, $88, BATTLEANIMFRAMESET_88, BATTLEANIMFUNC_3B, PAL_BATTLE_OB_BLUE, ANIM_GFX_WIND ; ANIM_OBJ_AGILITY
+ battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_25, PAL_BATTLE_OB_RED, ANIM_GFX_OBJECTS ; ANIM_OBJ_HEART
+ battleanimobj RELATIVE_X, $98, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_34, PAL_BATTLE_OB_RED, ANIM_GFX_FIRE ; ANIM_OBJ_FLAME_WHEEL
+ battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_3C, PAL_BATTLE_OB_RED, ANIM_GFX_FIRE ; ANIM_OBJ_SACRED_FIRE
+ battleanimobj RELATIVE_X | X_FLIP, $68, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, ANIM_GFX_MISC ; ANIM_OBJ_COTTON_SPORE
+ battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_8A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_MISC ; ANIM_OBJ_MILK_DRINK
+ battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_8C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_MISC ; ANIM_OBJ_ANGER
+ battleanimobj RELATIVE_X | X_FLIP, $50, BATTLEANIMFRAMESET_8D, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_MISC ; ANIM_OBJ_84
+ battleanimobj RELATIVE_X, $40, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_40, PAL_BATTLE_OB_GRAY, ANIM_GFX_NOISE ; ANIM_OBJ_85
+ battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_8E, BATTLEANIMFUNC_41, PAL_BATTLE_OB_RED, ANIM_GFX_MISC ; ANIM_OBJ_BATON_PASS
+ battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_8F, BATTLEANIMFUNC_3E, PAL_BATTLE_OB_GRAY, ANIM_GFX_MISC ; ANIM_OBJ_LOCK_ON
+ battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_93, BATTLEANIMFUNC_3E, PAL_BATTLE_OB_GRAY, ANIM_GFX_MISC ; ANIM_OBJ_MIND_READER
+ battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_97, BATTLEANIMFUNC_3D, PAL_BATTLE_OB_GRAY, ANIM_GFX_MISC ; ANIM_OBJ_SAFEGUARD
+ battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_3D, PAL_BATTLE_OB_YELLOW, ANIM_GFX_OBJECTS ; ANIM_OBJ_PROTECT
+ battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_2E, PAL_BATTLE_OB_GRAY, ANIM_GFX_STATUS ; ANIM_OBJ_THIEF
+ battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, ANIM_GFX_EGG ; ANIM_OBJ_OCTAZOOKA
+ battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_35, PAL_BATTLE_OB_RED, ANIM_GFX_STATUS ; ANIM_OBJ_PRESENT
+ battleanimobj RELATIVE_X | X_FLIP, $70, BATTLEANIMFRAMESET_8B, BATTLEANIMFUNC_3F, PAL_BATTLE_OB_GRAY, ANIM_GFX_MISC ; ANIM_OBJ_SPIKES
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_15, BATTLEANIMFUNC_08, PAL_BATTLE_OB_GRAY, ANIM_GFX_ICE ; ANIM_OBJ_POWDER_SNOW
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_02, PAL_BATTLE_OB_RED, ANIM_GFX_FIRE ; ANIM_OBJ_DRAGONBREATH
+ battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_42, PAL_BATTLE_OB_GRAY, ANIM_GFX_EXPLOSION ; ANIM_OBJ_CONVERSION
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_9A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_WEB ; ANIM_OBJ_SPIDER_WEB
+ battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_9B, BATTLEANIMFUNC_35, PAL_BATTLE_OB_RED, ANIM_GFX_OBJECTS ; ANIM_OBJ_93
+ battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_23, PAL_BATTLE_OB_GRAY, ANIM_GFX_ANGELS ; ANIM_OBJ_NIGHTMARE
+ battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9D, BATTLEANIMFUNC_25, PAL_BATTLE_OB_GRAY, ANIM_GFX_ANGELS ; ANIM_OBJ_IN_NIGHTMARE
+ battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_ANGELS ; ANIM_OBJ_LOVELY_KISS
+ battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, ANIM_GFX_ANGELS ; ANIM_OBJ_SWEET_KISS
+ battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLEANIMFRAMESET_9F, BATTLEANIMFUNC_3A, PAL_BATTLE_OB_GREEN, ANIM_GFX_OBJECTS ; ANIM_OBJ_SKETCH
+ battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_A0, BATTLEANIMFUNC_16, PAL_BATTLE_OB_GRAY, ANIM_GFX_OBJECTS ; ANIM_OBJ_99
+ battleanimobj RELATIVE_X | X_FLIP, $70, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_43, PAL_BATTLE_OB_YELLOW, ANIM_GFX_OBJECTS ; ANIM_OBJ_9A
+ battleanimobj RELATIVE_X | X_FLIP, $c0, BATTLEANIMFRAMESET_A2, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, ANIM_GFX_ANGELS ; ANIM_OBJ_DESTINY_BOND
+ battleanimobj RELATIVE_X | X_FLIP, $40, BATTLEANIMFRAMESET_A3, BATTLEANIMFUNC_44, PAL_BATTLE_OB_YELLOW, ANIM_GFX_SHINE ; ANIM_OBJ_MORNING_SUN
+ battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_A4, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_SHINE ; ANIM_OBJ_GLIMMER
+ battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_A5, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_SHINE ; ANIM_OBJ_MOONLIGHT
+ battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_45, PAL_BATTLE_OB_RED, ANIM_GFX_CHARGE ; ANIM_OBJ_HIDDEN_POWER
+ battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_A6, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_CUT ; ANIM_OBJ_A0
+ battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_A7, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_CUT ; ANIM_OBJ_A1
+ battleanimobj RELATIVE_X | X_FLIP, $00, BATTLEANIMFRAMESET_B4, BATTLEANIMFUNC_4A, PAL_BATTLE_OB_BROWN, ANIM_GFX_POWDER ; ANIM_OBJ_SANDSTORM
+ battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_A8, BATTLEANIMFUNC_02, PAL_BATTLE_OB_YELLOW, ANIM_GFX_LIGHTNING ; ANIM_OBJ_ZAP_CANNON
+ battleanimobj RELATIVE_X | X_FLIP, $40, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_11, PAL_BATTLE_OB_GRAY, ANIM_GFX_ANGELS ; ANIM_OBJ_SPITE
+ battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_A9, BATTLEANIMFUNC_46, PAL_BATTLE_OB_GRAY, ANIM_GFX_OBJECTS ; ANIM_OBJ_CURSE
+ battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_47, PAL_BATTLE_OB_GRAY, ANIM_GFX_NOISE ; ANIM_OBJ_PERISH_SONG
+ battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_AA, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_SHINE ; ANIM_OBJ_FORESIGHT
+ battleanimobj RELATIVE_X | X_FLIP, $b8, BATTLEANIMFRAMESET_AB, BATTLEANIMFUNC_48, PAL_BATTLE_OB_GRAY, ANIM_GFX_WIND ; ANIM_OBJ_RAPID_SPIN
+ battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_AC, BATTLEANIMFUNC_44, PAL_BATTLE_OB_GRAY, ANIM_GFX_WIND ; ANIM_OBJ_SWAGGER
+ battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_AA
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_43, PAL_BATTLE_OB_GRAY, ANIM_GFX_NOISE ; ANIM_OBJ_AB
+ battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_AD, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, ANIM_GFX_PSYCHIC ; ANIM_OBJ_MEAN_LOOK
+ battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_AE, BATTLEANIMFUNC_49, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_AD
+ battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_AF, BATTLEANIMFUNC_01, PAL_BATTLE_OB_YELLOW, ANIM_GFX_SPEED ; ANIM_OBJ_AE
+ battleanimobj RELATIVE_X | X_FLIP, $00, BATTLEANIMFRAMESET_B0, BATTLEANIMFUNC_4A, PAL_BATTLE_OB_GRAY, ANIM_GFX_WATER ; ANIM_OBJ_RAIN
+ battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_4B, PAL_BATTLE_OB_RED, ANIM_GFX_HAZE ; ANIM_OBJ_B0
+ battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_B1, BATTLEANIMFUNC_4C, PAL_BATTLE_OB_GRAY, ANIM_GFX_STATUS ; ANIM_OBJ_PSYCH_UP
+ battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4D, PAL_BATTLE_OB_BROWN, ANIM_GFX_ROCKS ; ANIM_OBJ_ANCIENTPOWER
+ battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_B3, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_AEROBLAST ; ANIM_OBJ_AEROBLAST
+ battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_04, PAL_BATTLE_OB_BLUE, ANIM_GFX_EGG ; ANIM_OBJ_SHADOW_BALL
+ battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4E, PAL_BATTLE_OB_BROWN, ANIM_GFX_ROCKS ; ANIM_OBJ_ROCK_SMASH
+ battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_08, PAL_BATTLE_OB_RED, ANIM_GFX_FLOWER ; ANIM_OBJ_FLOWER
+ battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_4F, PAL_BATTLE_OB_RED, ANIM_GFX_MISC ; ANIM_OBJ_COTTON
+ battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B5, BATTLEANIMFUNC_00, PAL_BATTLE_OB_ENEMY, ANIM_GFX_PLAYERHEAD ; ANIM_OBJ_ENEMYFEET_1ROW
+ battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B6, BATTLEANIMFUNC_00, PAL_BATTLE_OB_PLAYER, ANIM_GFX_ENEMYFEET ; ANIM_OBJ_PLAYERHEAD_1ROW
+ battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B7, BATTLEANIMFUNC_00, PAL_BATTLE_OB_ENEMY, ANIM_GFX_PLAYERHEAD ; ANIM_OBJ_ENEMYFEET_2ROW
+ battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B8, BATTLEANIMFUNC_00, PAL_BATTLE_OB_PLAYER, ANIM_GFX_ENEMYFEET ; ANIM_OBJ_PLAYERHEAD_2ROW
--- a/data/moves/animations.asm
+++ b/data/moves/animations.asm
@@ -377,10 +377,10 @@
.Shake:
anim_bgeffect ANIM_BG_RETURN_MON, $0, $0, $0
anim_wait 8
- anim_incobj 2
+ anim_incobj 2
anim_wait 16
anim_sound 0, 1, SFX_CHANGE_DEX_MODE
- anim_incobj 1
+ anim_incobj 1
anim_wait 32
anim_sound 0, 1, SFX_BALL_BOUNCE
anim_wait 32
@@ -393,7 +393,7 @@
anim_checkpokeball
anim_if_var_equal $1, .Click
anim_if_var_equal $2, .BreakFree
- anim_incobj 1
+ anim_incobj 1
anim_sound 0, 1, SFX_BALL_WOBBLE
anim_jump .Loop
@@ -415,7 +415,7 @@
anim_if_param_equal $1, .Shiny
anim_if_param_equal $2, .Unknown
anim_1gfx ANIM_GFX_SMOKE
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_2B, $0, $1, $0
anim_sound 0, 0, SFX_BALL_POOF
anim_obj ANIM_OBJ_1B, 48, 96, $0
@@ -427,7 +427,7 @@
.Unknown:
anim_1gfx ANIM_GFX_SMOKE
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_2A, $0, $1, $0
anim_wait 1
anim_bgeffect ANIM_BG_SHOW_MON, $0, $1, $0
@@ -619,7 +619,7 @@
anim_ret
BattleAnim_EnemyStatDown:
- anim_call BattleAnim_FollowEnemyFeet_1
+ anim_call BattleAnim_UserObj_1Row
anim_bgeffect ANIM_BG_VIBRATE_MON, $0, $0, $0
anim_wait 40
anim_call BattleAnim_ShowMon_1
@@ -627,7 +627,7 @@
anim_ret
BattleAnim_PlayerStatDown:
- anim_call BattleAnim_FollowEnemyFeet_1
+ anim_call BattleAnim_UserObj_1Row
anim_bgeffect ANIM_BG_WOBBLE_MON, $0, $0, $0
anim_wait 40
anim_call BattleAnim_ShowMon_1
@@ -869,9 +869,9 @@
anim_sound 6, 2, SFX_EMBER
anim_obj ANIM_OBJ_EMBER, 64, 84, $13
anim_wait 16
- anim_incobj 1
- anim_incobj 2
- anim_incobj 3
+ anim_incobj 1
+ anim_incobj 2
+ anim_incobj 3
anim_sound 0, 1, SFX_EMBER
anim_obj ANIM_OBJ_EMBER, 120, 68, $30
anim_obj ANIM_OBJ_EMBER, 132, 68, $30
@@ -952,15 +952,15 @@
anim_sound 0, 1, SFX_EMBER
anim_wait 8
anim_loop 10, .loop2
- anim_incobj 1
- anim_incobj 2
- anim_incobj 3
- anim_incobj 4
- anim_incobj 5
- anim_incobj 6
- anim_incobj 7
- anim_incobj 8
- anim_incobj 9
+ anim_incobj 1
+ anim_incobj 2
+ anim_incobj 3
+ anim_incobj 4
+ anim_incobj 5
+ anim_incobj 6
+ anim_incobj 7
+ anim_incobj 8
+ anim_incobj 9
anim_incobj 10
anim_wait 2
.loop3
@@ -1056,7 +1056,7 @@
anim_clearobjs
anim_bgeffect ANIM_BG_30, $0, $0, $0
anim_wait 1
- anim_call BattleAnim_FollowPlayerHead_1
+ anim_call BattleAnim_UserObj_2Row
anim_bgeffect ANIM_BG_31, $1c, $0, $0
anim_wait 19
anim_call BattleAnim_ShowMon_1
@@ -1067,7 +1067,7 @@
BattleAnim_WaterGun:
anim_bgeffect ANIM_BG_30, $0, $0, $0
anim_1gfx ANIM_GFX_WATER
- anim_call BattleAnim_FollowPlayerHead_1
+ anim_call BattleAnim_UserObj_2Row
anim_sound 16, 2, SFX_WATER_GUN
anim_obj ANIM_OBJ_WATER_GUN, 64, 88, $0
anim_wait 8
@@ -1089,7 +1089,7 @@
BattleAnim_HydroPump:
anim_bgeffect ANIM_BG_30, $0, $0, $0
anim_1gfx ANIM_GFX_WATER
- anim_call BattleAnim_FollowPlayerHead_1
+ anim_call BattleAnim_UserObj_2Row
anim_sound 0, 1, SFX_HYDRO_PUMP
anim_obj ANIM_OBJ_HYDRO_PUMP, 108, 72, $0
anim_bgeffect ANIM_BG_31, $1c, $0, $0
@@ -1131,7 +1131,7 @@
anim_sound 0, 1, SFX_SURF
anim_wait 32
anim_loop 4, .loop
- anim_incobj 1
+ anim_incobj 1
anim_wait 56
anim_ret
@@ -1143,7 +1143,7 @@
anim_sound 0, 1, SFX_VINE_WHIP
anim_obj ANIM_OBJ_3F, 128, 60, $0
anim_wait 4
- anim_incobj 1
+ anim_incobj 1
anim_wait 4
anim_ret
@@ -1178,31 +1178,31 @@
anim_obj ANIM_OBJ_RAZOR_LEAF, 48, 80, $90
anim_wait 80
anim_sound 16, 2, SFX_VINE_WHIP
- anim_incobj 3
+ anim_incobj 3
anim_wait 2
anim_sound 16, 2, SFX_VINE_WHIP
- anim_incobj 5
+ anim_incobj 5
anim_wait 2
anim_sound 16, 2, SFX_VINE_WHIP
- anim_incobj 7
+ anim_incobj 7
anim_wait 2
anim_sound 16, 2, SFX_VINE_WHIP
- anim_incobj 9
+ anim_incobj 9
anim_wait 2
anim_sound 16, 2, SFX_VINE_WHIP
- anim_incobj 1
+ anim_incobj 1
anim_wait 2
anim_sound 16, 2, SFX_VINE_WHIP
- anim_incobj 2
+ anim_incobj 2
anim_wait 2
anim_sound 16, 2, SFX_VINE_WHIP
- anim_incobj 4
+ anim_incobj 4
anim_wait 2
anim_sound 16, 2, SFX_VINE_WHIP
- anim_incobj 6
+ anim_incobj 6
anim_wait 2
anim_sound 16, 2, SFX_VINE_WHIP
- anim_incobj 8
+ anim_incobj 8
anim_wait 2
anim_sound 16, 2, SFX_VINE_WHIP
anim_incobj 10
@@ -1272,7 +1272,7 @@
anim_obj ANIM_OBJ_THUNDER_WAVE, 136, 56, $0
anim_wait 20
anim_bgp $1b
- anim_incobj 1
+ anim_incobj 1
anim_wait 96
anim_ret
@@ -1329,12 +1329,12 @@
anim_wait 8
anim_loop 2, .loop
anim_wait 32
- anim_incobj 1
- anim_incobj 2
- anim_incobj 3
- anim_incobj 4
- anim_incobj 5
- anim_incobj 6
+ anim_incobj 1
+ anim_incobj 2
+ anim_incobj 3
+ anim_incobj 4
+ anim_incobj 5
+ anim_incobj 6
anim_obj ANIM_OBJ_01, 136, 56, $0
anim_wait 16
anim_ret
@@ -1494,7 +1494,7 @@
anim_wait 64
anim_call BattleAnim_AuroraBeam_branch_cbb39
anim_wait 48
- anim_incobj 5
+ anim_incobj 5
anim_wait 64
anim_ret
@@ -1578,7 +1578,7 @@
BattleAnim_Teleport:
anim_1gfx ANIM_GFX_SPEED
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_TELEPORT, $0, $1, $0
anim_wait 32
anim_bgeffect ANIM_BG_HIDE_MON, $0, $1, $0
@@ -1611,7 +1611,7 @@
anim_ret
BattleAnim_DoubleTeam:
- anim_call BattleAnim_FollowPlayerHead_0
+ anim_call BattleAnim_TargetObj_2Row
anim_sound 0, 0, SFX_PSYBEAM
anim_bgeffect ANIM_BG_DOUBLE_TEAM, $0, $1, $0
anim_wait 96
@@ -1623,7 +1623,7 @@
BattleAnim_Recover:
anim_1gfx ANIM_GFX_BUBBLE
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_sound 0, 0, SFX_FULL_HEAL
anim_bgeffect ANIM_BG_18, $0, $1, $40
anim_obj ANIM_OBJ_RECOVER, 44, 88, $30
@@ -1658,7 +1658,7 @@
BattleAnim_MegaDrain:
anim_1gfx ANIM_GFX_CHARGE
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_1C, $0, $0, $10
anim_setvar $0
.loop
@@ -1692,7 +1692,7 @@
anim_obj ANIM_OBJ_EGG, 44, 104, $1
anim_wait 128
anim_wait 96
- anim_incobj 1
+ anim_incobj 1
anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $3
anim_sound 0, 1, SFX_EGG_BOMB
anim_obj ANIM_OBJ_18, 128, 64, $0
@@ -1707,11 +1707,11 @@
BattleAnim_Softboiled:
anim_2gfx ANIM_GFX_EGG, ANIM_GFX_BUBBLE
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_sound 0, 0, SFX_SWITCH_POKEMON
anim_obj ANIM_OBJ_EGG, 44, 104, $6
anim_wait 128
- anim_incobj 2
+ anim_incobj 2
anim_obj ANIM_OBJ_EGG, 76, 104, $b
anim_wait 16
anim_bgeffect ANIM_BG_18, $0, $1, $40
@@ -1730,7 +1730,7 @@
BattleAnim_SkullBash_branch_c9fb5:
BattleAnim_SkyAttack_branch_c9fb5:
anim_1gfx ANIM_GFX_SPEED
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_16, $0, $1, $40
anim_bgeffect ANIM_BG_06, $0, $2, $0
.loop
@@ -1758,7 +1758,7 @@
BattleAnim_Bide:
anim_if_param_equal $0, BattleAnim_Bide_branch_c9651
anim_1gfx ANIM_GFX_HIT
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_sound 0, 0, SFX_ESCAPE_ROPE
anim_bgeffect ANIM_BG_1A, $0, $1, $20
anim_wait 72
@@ -1776,9 +1776,9 @@
anim_obj ANIM_OBJ_48, 132, 48, $0
anim_wait 64
anim_sound 0, 1, SFX_BIND
- anim_incobj 1
- anim_incobj 2
- anim_incobj 3
+ anim_incobj 1
+ anim_incobj 2
+ anim_incobj 3
anim_wait 96
anim_ret
@@ -1792,15 +1792,15 @@
anim_obj ANIM_OBJ_48, 132, 48, $0
anim_wait 64
anim_sound 0, 1, SFX_BIND
- anim_incobj 1
- anim_incobj 2
- anim_incobj 3
+ anim_incobj 1
+ anim_incobj 2
+ anim_incobj 3
anim_wait 96
anim_ret
BattleAnim_Confusion:
anim_1gfx ANIM_GFX_HIT
- anim_call BattleAnim_FollowPlayerHead_1
+ anim_call BattleAnim_UserObj_2Row
anim_sound 0, 1, SFX_PSYCHIC
anim_bgeffect ANIM_BG_NIGHT_SHADE, $0, $0, $8
anim_wait 128
@@ -1840,7 +1840,7 @@
BattleAnim_Growl:
anim_1gfx ANIM_GFX_NOISE
- anim_enemyfeetobj
+ anim_battlergfx_2row
anim_bgeffect ANIM_BG_06, $0, $2, $0
anim_cry $0
.loop
@@ -1848,7 +1848,7 @@
anim_wait 16
anim_loop 3, .loop
anim_wait 9
- anim_bgeffect ANIM_BG_FEET_FOLLOW, $0, $1, $0
+ anim_bgeffect ANIM_BG_BATTLEROBJ_1ROW, $0, $1, $0
anim_wait 8
anim_bgeffect ANIM_BG_19, $0, $0, $40
anim_wait 64
@@ -1997,7 +1997,7 @@
BattleAnim_AcidArmor:
anim_1gfx ANIM_GFX_HIT
- anim_call BattleAnim_FollowPlayerHead_0
+ anim_call BattleAnim_TargetObj_2Row
anim_bgeffect ANIM_BG_ACID_ARMOR, $0, $1, $8
anim_sound 0, 0, SFX_MEGA_PUNCH
anim_wait 64
@@ -2008,7 +2008,7 @@
BattleAnim_Splash:
anim_1gfx ANIM_GFX_HIT
anim_sound 0, 0, SFX_VICEGRIP
- anim_call BattleAnim_FollowPlayerHead_0
+ anim_call BattleAnim_TargetObj_2Row
anim_bgeffect ANIM_BG_BOUNCE_DOWN, $0, $1, $0
anim_wait 96
anim_incbgeffect ANIM_BG_BOUNCE_DOWN
@@ -2019,7 +2019,7 @@
anim_2gfx ANIM_GFX_SAND, ANIM_GFX_HIT
anim_if_param_equal $0, .hit
anim_if_param_equal $2, .fail
- anim_call BattleAnim_FollowPlayerHead_0
+ anim_call BattleAnim_TargetObj_2Row
anim_bgeffect ANIM_BG_DIG, $0, $1, $1
anim_obj ANIM_OBJ_57, 72, 104, $0
.loop
@@ -2075,7 +2075,7 @@
anim_1gfx ANIM_GFX_HIT
anim_bgeffect ANIM_BG_1F, $14, $2, $0
anim_wait 32
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_TACKLE, $0, $1, $0
anim_wait 4
anim_sound 0, 1, SFX_HEADBUTT
@@ -2086,7 +2086,7 @@
BattleAnim_Tackle:
anim_1gfx ANIM_GFX_HIT
- anim_call BattleAnim_FollowPlayerHead_0
+ anim_call BattleAnim_TargetObj_2Row
anim_bgeffect ANIM_BG_TACKLE, $0, $1, $0
anim_wait 4
anim_sound 0, 1, SFX_TACKLE
@@ -2097,7 +2097,7 @@
BattleAnim_BodySlam:
anim_1gfx ANIM_GFX_HIT
- anim_call BattleAnim_FollowPlayerHead_0
+ anim_call BattleAnim_TargetObj_2Row
anim_bgeffect ANIM_BG_BOUNCE_DOWN, $0, $1, $0
anim_wait 32
anim_incbgeffect ANIM_BG_BOUNCE_DOWN
@@ -2115,7 +2115,7 @@
BattleAnim_TakeDown:
anim_1gfx ANIM_GFX_HIT
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_TACKLE, $0, $1, $0
anim_wait 3
anim_sound 0, 1, SFX_TACKLE
@@ -2131,7 +2131,7 @@
BattleAnim_DoubleEdge:
anim_1gfx ANIM_GFX_HIT
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $10
anim_bgeffect ANIM_BG_TACKLE, $0, $1, $0
anim_wait 3
@@ -2146,7 +2146,7 @@
BattleAnim_Submission:
anim_1gfx ANIM_GFX_HIT
- anim_call BattleAnim_FollowEnemyFeet_1
+ anim_call BattleAnim_UserObj_1Row
anim_bgeffect ANIM_BG_26, $0, $0, $0
anim_sound 0, 1, SFX_SUBMISSION
anim_wait 32
@@ -2167,15 +2167,15 @@
anim_obj ANIM_OBJ_GUST, 64, 112, $0
anim_wait 6
anim_loop 9, .loop
- anim_incobj 1
- anim_incobj 2
- anim_incobj 3
- anim_incobj 4
- anim_incobj 5
- anim_incobj 6
- anim_incobj 7
- anim_incobj 8
- anim_incobj 9
+ anim_incobj 1
+ anim_incobj 2
+ anim_incobj 3
+ anim_incobj 4
+ anim_incobj 5
+ anim_incobj 6
+ anim_incobj 7
+ anim_incobj 8
+ anim_incobj 9
anim_sound 16, 2, SFX_WHIRLWIND
anim_wait 128
anim_if_param_equal $0, .done
@@ -2347,7 +2347,7 @@
BattleAnim_Transform:
anim_1gfx ANIM_GFX_HIT
- anim_call BattleAnim_FollowPlayerHead_0
+ anim_call BattleAnim_TargetObj_2Row
anim_transform
anim_sound 0, 0, SFX_PSYBEAM
anim_bgeffect ANIM_BG_WAVE_DEFORM_USER, $0, $1, $0
@@ -2456,7 +2456,7 @@
anim_1gfx ANIM_GFX_HIT
anim_bgeffect ANIM_BG_1F, $14, $2, $0
anim_wait 32
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $3
anim_bgeffect ANIM_BG_TACKLE, $0, $1, $0
anim_wait 4
@@ -2591,7 +2591,7 @@
BattleAnim_Minimize:
anim_sound 0, 0, SFX_SURF
anim_1gfx ANIM_GFX_HIT
- anim_call BattleAnim_FollowPlayerHead_0
+ anim_call BattleAnim_TargetObj_2Row
anim_minimize
anim_bgeffect ANIM_BG_WAVE_DEFORM_USER, $0, $1, $0
anim_wait 48
@@ -2609,12 +2609,12 @@
anim_sound 0, 0, SFX_HYPER_BEAM
anim_obj ANIM_OBJ_SKY_ATTACK, 48, 88, $40
anim_wait 64
- anim_incobj 1
+ anim_incobj 1
anim_wait 21
anim_sound 0, 1, SFX_HYPER_BEAM
anim_bgeffect ANIM_BG_ALTERNATE_HUES, $0, $2, $0
anim_wait 64
- anim_incobj 1
+ anim_incobj 1
anim_wait 32
anim_bgeffect ANIM_BG_SHOW_MON, $0, $1, $0
anim_wait 16
@@ -2625,7 +2625,7 @@
anim_bgp $1b
anim_obp1 $1b
anim_wait 32
- anim_call BattleAnim_FollowPlayerHead_1
+ anim_call BattleAnim_UserObj_2Row
anim_bgeffect ANIM_BG_NIGHT_SHADE, $0, $0, $8
anim_sound 0, 1, SFX_PSYCHIC
anim_wait 96
@@ -2654,13 +2654,13 @@
BattleAnim_Withdraw:
anim_1gfx ANIM_GFX_REFLECT
- anim_call BattleAnim_FollowPlayerHead_0
+ anim_call BattleAnim_TargetObj_2Row
anim_bgeffect ANIM_BG_WITHDRAW, $0, $1, $50
anim_wait 48
anim_sound 0, 0, SFX_SHINE
anim_obj ANIM_OBJ_WITHDRAW, 48, 88, $0
anim_wait 64
- anim_incobj 2
+ anim_incobj 2
anim_wait 1
anim_incbgeffect ANIM_BG_WITHDRAW
anim_call BattleAnim_ShowMon_0
@@ -2699,7 +2699,7 @@
BattleAnim_Harden:
anim_1gfx ANIM_GFX_REFLECT
anim_obp0 $0
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_call BattleAnim_Harden_branch_cbc43
anim_call BattleAnim_ShowMon_0
anim_ret
@@ -2782,7 +2782,7 @@
anim_sound 6, 2, SFX_THROW_BALL
anim_obj ANIM_OBJ_SMOKESCREEN, 64, 92, $6c
anim_wait 24
- anim_incobj 1
+ anim_incobj 1
anim_sound 0, 1, SFX_BALL_POOF
anim_obj ANIM_OBJ_BALL_POOF, 108, 70, $10
anim_wait 8
@@ -2800,7 +2800,7 @@
anim_sound 0, 0, SFX_STRENGTH
anim_obj ANIM_OBJ_STRENGTH, 64, 104, $1
anim_wait 128
- anim_incobj 1
+ anim_incobj 1
anim_wait 20
anim_sound 0, 1, SFX_MEGA_PUNCH
anim_obj ANIM_OBJ_00, 132, 40, $0
@@ -2838,7 +2838,7 @@
BattleAnim_Meditate:
anim_1gfx ANIM_GFX_HIT
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_sound 0, 0, SFX_PSYBEAM
anim_bgeffect ANIM_BG_WAVE_DEFORM_USER, $0, $1, $0
anim_wait 48
@@ -2850,12 +2850,12 @@
BattleAnim_Sharpen:
anim_1gfx ANIM_GFX_SHAPES
anim_obp0 $e4
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_sound 0, 0, SFX_SHARPEN
anim_bgeffect ANIM_BG_18, $0, $1, $40
anim_obj ANIM_OBJ_SHARPEN, 48, 88, $0
anim_wait 96
- anim_incobj 2
+ anim_incobj 2
anim_incbgeffect ANIM_BG_18
anim_call BattleAnim_ShowMon_0
anim_ret
@@ -2863,12 +2863,12 @@
BattleAnim_DefenseCurl:
anim_1gfx ANIM_GFX_SHAPES
anim_obp0 $e4
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_sound 0, 0, SFX_SHARPEN
anim_bgeffect ANIM_BG_18, $0, $1, $40
anim_obj ANIM_OBJ_DEFENSE_CURL, 48, 88, $0
anim_wait 96
- anim_incobj 2
+ anim_incobj 2
anim_incbgeffect ANIM_BG_18
anim_call BattleAnim_ShowMon_0
anim_ret
@@ -2879,7 +2879,7 @@
anim_sound 0, 0, SFX_STRENGTH
anim_obj ANIM_OBJ_SEISMIC_TOSS, 64, 104, $1
anim_wait 128
- anim_incobj 1
+ anim_incobj 1
anim_wait 20
anim_sound 0, 1, SFX_MEGA_PUNCH
anim_obj ANIM_OBJ_00, 132, 40, $0
@@ -2888,7 +2888,7 @@
BattleAnim_Rage:
anim_1gfx ANIM_GFX_HIT
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_1A, $0, $1, $20
anim_sound 0, 0, SFX_RAGE
anim_wait 72
@@ -2908,7 +2908,7 @@
BattleAnim_Agility:
anim_1gfx ANIM_GFX_WIND
anim_obp0 $fc
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_18, $0, $1, $40
anim_obj ANIM_OBJ_AGILITY, 8, 24, $10
anim_obj ANIM_OBJ_AGILITY, 8, 48, $2
@@ -2937,7 +2937,7 @@
BattleAnim_Barrier:
anim_1gfx ANIM_GFX_REFLECT
- anim_enemyfeetobj
+ anim_battlergfx_2row
anim_bgeffect ANIM_BG_06, $0, $2, $0
anim_wait 8
anim_sound 0, 0, SFX_SHINE
@@ -2950,7 +2950,7 @@
BattleAnim_Waterfall:
anim_1gfx ANIM_GFX_HIT
- anim_call BattleAnim_FollowPlayerHead_0
+ anim_call BattleAnim_TargetObj_2Row
anim_bgeffect ANIM_BG_25, $0, $1, $0
anim_wait 16
anim_call BattleAnim_ShowMon_0
@@ -3089,7 +3089,7 @@
BattleAnim_TailWhip:
anim_1gfx ANIM_GFX_HIT
- anim_call BattleAnim_FollowPlayerHead_0
+ anim_call BattleAnim_TargetObj_2Row
anim_sound 0, 0, SFX_TAIL_WHIP
anim_bgeffect ANIM_BG_26, $0, $1, $0
anim_wait 32
@@ -3106,7 +3106,7 @@
BattleAnim_Sketch:
anim_1gfx ANIM_GFX_OBJECTS
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_1A, $0, $1, $20
anim_sound 0, 0, SFX_SKETCH
anim_obj ANIM_OBJ_SKETCH, 72, 80, $0
@@ -3145,7 +3145,7 @@
BattleAnim_Thief:
anim_1gfx ANIM_GFX_HIT
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_TACKLE, $0, $1, $0
anim_wait 16
anim_sound 0, 1, SFX_THIEF
@@ -3203,7 +3203,7 @@
anim_wait 6
anim_loop 8, .loop
anim_wait 96
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_TACKLE, $0, $1, $0
anim_wait 4
anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $3
@@ -3214,7 +3214,7 @@
anim_wait 8
anim_bgeffect ANIM_BG_SHOW_MON, $0, $0, $0
anim_wait 4
- anim_incobj 9
+ anim_incobj 9
anim_wait 8
anim_ret
@@ -3237,7 +3237,7 @@
anim_obj ANIM_OBJ_CURSE, 68, 72, $0
anim_sound 0, 0, SFX_CURSE
anim_wait 32
- anim_incobj 1
+ anim_incobj 1
anim_wait 12
anim_sound 0, 0, SFX_POISON_STING
anim_obj ANIM_OBJ_04, 44, 96, $0
@@ -3246,7 +3246,7 @@
.NotGhost:
anim_1gfx ANIM_GFX_SPEED
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_19, $0, $1, $40
anim_sound 0, 0, SFX_SHARPEN
anim_wait 64
@@ -3277,7 +3277,7 @@
BattleAnim_Flail:
anim_1gfx ANIM_GFX_HIT
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_sound 0, 0, SFX_SUBMISSION
anim_bgeffect ANIM_BG_2C, $0, $1, $0
anim_wait 8
@@ -3429,7 +3429,7 @@
BattleAnim_FaintAttack:
anim_1gfx ANIM_GFX_HIT
anim_sound 0, 0, SFX_CURSE
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_1D, $0, $1, $80
anim_wait 96
anim_sound 0, 1, SFX_COMET_PUNCH
@@ -3558,7 +3558,7 @@
BattleAnim_Foresight:
anim_1gfx ANIM_GFX_SHINE
- anim_call BattleAnim_FollowEnemyFeet_1
+ anim_call BattleAnim_UserObj_1Row
anim_bgeffect ANIM_BG_07, $0, $0, $0
anim_sound 0, 1, SFX_FORESIGHT
anim_obj ANIM_OBJ_FORESIGHT, 132, 40, $0
@@ -3607,7 +3607,7 @@
anim_1gfx ANIM_GFX_SPEED
anim_bgeffect ANIM_BG_06, $0, $2, $0
anim_bgeffect ANIM_BG_ALTERNATE_HUES, $0, $2, $0
- anim_playerheadobj
+ anim_battlergfx_1row
anim_sound 0, 0, SFX_PSYCHIC
.loop
anim_wait 8
@@ -3619,7 +3619,7 @@
anim_wait 8
anim_loop 2, .loop
anim_wait 16
- anim_bgeffect ANIM_BG_HEAD_FOLLOW, $0, $1, $0
+ anim_bgeffect ANIM_BG_BATTLEROBJ_2ROW, $0, $1, $0
anim_wait 6
anim_bgeffect ANIM_BG_NIGHT_SHADE, $0, $0, $8
anim_wait 64
@@ -3626,7 +3626,7 @@
anim_incbgeffect ANIM_BG_NIGHT_SHADE
anim_bgeffect ANIM_BG_SHOW_MON, $0, $1, $0
anim_wait 4
- anim_incobj 7
+ anim_incobj 7
anim_wait 1
anim_ret
@@ -3666,7 +3666,7 @@
BattleAnim_Outrage:
anim_1gfx ANIM_GFX_HIT
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_1A, $0, $1, $20
anim_sound 0, 0, SFX_OUTRAGE
anim_wait 72
@@ -3700,7 +3700,7 @@
BattleAnim_GigaDrain:
anim_2gfx ANIM_GFX_BUBBLE, ANIM_GFX_CHARGE
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_1C, $0, $0, $10
anim_sound 6, 3, SFX_GIGA_DRAIN
anim_call BattleAnim_GigaDrain_branch_cbab3
@@ -3729,7 +3729,7 @@
BattleAnim_Endure:
anim_1gfx ANIM_GFX_SPEED
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_1A, $0, $1, $20
anim_bgeffect ANIM_BG_07, $0, $2, $0
.loop
@@ -3756,7 +3756,7 @@
BattleAnim_Charm:
anim_1gfx ANIM_GFX_OBJECTS
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_26, $0, $1, $0
anim_sound 0, 0, SFX_ATTRACT
anim_obj ANIM_OBJ_HEART, 64, 80, $0
@@ -3769,7 +3769,7 @@
BattleAnim_Rollout:
anim_1gfx ANIM_GFX_HIT
anim_sound 0, 0, SFX_SPARK
- anim_call BattleAnim_FollowPlayerHead_0
+ anim_call BattleAnim_TargetObj_2Row
anim_bgeffect ANIM_BG_2E, $60, $1, $1
anim_bgeffect ANIM_BG_25, $0, $1, $0
anim_wait 4
@@ -3804,7 +3804,7 @@
BattleAnim_MilkDrink:
anim_2gfx ANIM_GFX_MISC, ANIM_GFX_BUBBLE
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_obj ANIM_OBJ_MILK_DRINK, 74, 104, $0
anim_wait 16
anim_bgeffect ANIM_BG_18, $0, $1, $40
@@ -3826,13 +3826,13 @@
anim_wait 24
anim_setobj $1, $3
anim_wait 1
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_TACKLE, $0, $1, $0
anim_sound 0, 0, SFX_SPARK
anim_wait 16
anim_bgeffect ANIM_BG_SHOW_MON, $0, $0, $0
anim_wait 4
- anim_incobj 2
+ anim_incobj 2
anim_wait 1
anim_sound 0, 1, SFX_THUNDERSHOCK
anim_obj ANIM_OBJ_LIGHTNING_BOLT, 136, 56, $2
@@ -3859,7 +3859,7 @@
anim_1gfx ANIM_GFX_REFLECT
anim_obp0 $0
anim_sound 0, 0, SFX_RAGE
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_call BattleAnim_SteelWing_branch_cbc43
anim_call BattleAnim_ShowMon_0
anim_1gfx ANIM_GFX_HIT
@@ -3941,7 +3941,7 @@
BattleAnim_Return:
anim_1gfx ANIM_GFX_HIT
- anim_call BattleAnim_FollowPlayerHead_0
+ anim_call BattleAnim_TargetObj_2Row
anim_bgeffect ANIM_BG_BOUNCE_DOWN, $0, $1, $0
anim_sound 0, 0, SFX_RETURN
anim_wait 64
@@ -3962,9 +3962,9 @@
anim_wait 56
anim_obj ANIM_OBJ_AMNESIA, 104, 48, $0
anim_wait 48
- anim_incobj 2
+ anim_incobj 2
anim_if_param_equal $3, .heal
- anim_incobj 1
+ anim_incobj 1
anim_wait 1
anim_1gfx ANIM_GFX_EXPLOSION
anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $12
@@ -3989,7 +3989,7 @@
anim_obj ANIM_OBJ_ANGER, 72, 80, $0
anim_wait 40
anim_1gfx ANIM_GFX_HIT
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_26, $0, $1, $0
anim_wait 8
anim_sound 0, 1, SFX_COMET_PUNCH
@@ -4020,7 +4020,7 @@
BattleAnim_PainSplit:
anim_2gfx ANIM_GFX_HIT, ANIM_GFX_OBJECTS
- anim_call BattleAnim_FollowPlayerHead_0
+ anim_call BattleAnim_TargetObj_2Row
anim_bgeffect ANIM_BG_25, $0, $1, $0
anim_wait 4
anim_sound 0, 1, SFX_TACKLE
@@ -4041,7 +4041,7 @@
anim_wait 8
anim_loop 8, .loop
anim_wait 96
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_TACKLE, $0, $1, $0
anim_wait 4
anim_sound 0, 1, SFX_EMBER
@@ -4051,7 +4051,7 @@
anim_wait 8
anim_bgeffect ANIM_BG_SHOW_MON, $0, $0, $0
anim_wait 4
- anim_incobj 9
+ anim_incobj 9
anim_wait 8
anim_ret
@@ -4137,7 +4137,7 @@
BattleAnim_Pursuit_branch_cb62b:
anim_bgeffect ANIM_BG_HIDE_MON, $0, $0, $0
anim_wait 4
- anim_call BattleAnim_FollowEnemyFeet_1
+ anim_call BattleAnim_UserObj_1Row
anim_obj ANIM_OBJ_AD, 132, 64, $0
anim_wait 64
anim_obj ANIM_OBJ_AD, 132, 64, $1
@@ -4144,7 +4144,7 @@
anim_sound 0, 1, SFX_BALL_POOF
anim_bgeffect ANIM_BG_ENTER_MON, $0, $0, $0
anim_wait 64
- anim_incobj 3
+ anim_incobj 3
anim_wait 16
anim_sound 0, 1, SFX_MEGA_PUNCH
anim_obj ANIM_OBJ_00, 120, 56, $0
@@ -4163,7 +4163,7 @@
anim_wait 2
anim_loop 5, .loop
anim_wait 24
- anim_call BattleAnim_FollowPlayerHead_0
+ anim_call BattleAnim_TargetObj_2Row
anim_bgeffect ANIM_BG_25, $0, $1, $0
anim_wait 4
anim_resetobp0
@@ -4172,7 +4172,7 @@
anim_wait 8
anim_bgeffect ANIM_BG_SHOW_MON, $0, $0, $0
anim_wait 4
- anim_incobj 6
+ anim_incobj 6
anim_wait 1
anim_ret
@@ -4195,7 +4195,7 @@
anim_1gfx ANIM_GFX_REFLECT
anim_obp0 $0
anim_sound 0, 0, SFX_RAGE
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_call BattleAnim_IronTail_branch_cbc43
anim_wait 4
anim_1gfx ANIM_GFX_HIT
@@ -4213,7 +4213,7 @@
anim_1gfx ANIM_GFX_REFLECT
anim_obp0 $0
anim_sound 0, 0, SFX_RAGE
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_call BattleAnim_MetalClaw_branch_cbc43
anim_call BattleAnim_ShowMon_0
anim_1gfx ANIM_GFX_CUT
@@ -4227,7 +4227,7 @@
BattleAnim_VitalThrow:
anim_1gfx ANIM_GFX_HIT
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_2F, $0, $1, $0
anim_wait 16
anim_sound 0, 0, SFX_MENU
@@ -4266,7 +4266,7 @@
BattleAnim_Synthesis:
anim_1gfx ANIM_GFX_SHINE
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_18, $0, $1, $40
anim_bgeffect ANIM_BG_07, $0, $0, $0
anim_sound 0, 0, SFX_OUTRAGE
@@ -4319,7 +4319,7 @@
BattleAnim_HiddenPower:
anim_1gfx ANIM_GFX_CHARGE
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_1A, $0, $1, $20
anim_bgeffect ANIM_BG_07, $0, $2, $0
anim_obj ANIM_OBJ_HIDDEN_POWER, 44, 88, $0
@@ -4337,14 +4337,14 @@
anim_incbgeffect ANIM_BG_1A
anim_call BattleAnim_ShowMon_0
anim_wait 1
- anim_incobj 2
- anim_incobj 3
- anim_incobj 4
- anim_incobj 5
- anim_incobj 6
- anim_incobj 7
- anim_incobj 8
- anim_incobj 9
+ anim_incobj 2
+ anim_incobj 3
+ anim_incobj 4
+ anim_incobj 5
+ anim_incobj 6
+ anim_incobj 7
+ anim_incobj 8
+ anim_incobj 9
anim_wait 16
anim_1gfx ANIM_GFX_HIT
anim_obj ANIM_OBJ_00, 136, 56, $0
@@ -4375,15 +4375,15 @@
anim_sound 0, 0, SFX_RAZOR_WIND
anim_wait 8
anim_loop 8, .loop2
- anim_incobj 1
- anim_incobj 2
- anim_incobj 3
- anim_incobj 4
- anim_incobj 5
- anim_incobj 6
- anim_incobj 7
- anim_incobj 8
- anim_incobj 9
+ anim_incobj 1
+ anim_incobj 2
+ anim_incobj 3
+ anim_incobj 4
+ anim_incobj 5
+ anim_incobj 6
+ anim_incobj 7
+ anim_incobj 8
+ anim_incobj 9
anim_wait 64
anim_obj ANIM_OBJ_01, 144, 64, $18
.loop3
@@ -4395,15 +4395,15 @@
anim_sound 0, 1, SFX_RAZOR_WIND
anim_wait 8
anim_loop 4, .loop4
- anim_incobj 1
- anim_incobj 2
- anim_incobj 3
- anim_incobj 4
- anim_incobj 5
- anim_incobj 6
- anim_incobj 7
- anim_incobj 8
- anim_incobj 9
+ anim_incobj 1
+ anim_incobj 2
+ anim_incobj 3
+ anim_incobj 4
+ anim_incobj 5
+ anim_incobj 6
+ anim_incobj 7
+ anim_incobj 8
+ anim_incobj 9
anim_wait 32
anim_ret
@@ -4452,7 +4452,7 @@
BattleAnim_PsychUp:
anim_1gfx ANIM_GFX_STATUS
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_1A, $0, $1, $20
anim_sound 0, 0, SFX_PSYBEAM
anim_obj ANIM_OBJ_PSYCH_UP, 44, 88, $0
@@ -4589,7 +4589,7 @@
anim_wait 16
.current_mon
anim_1gfx ANIM_GFX_HIT
- anim_call BattleAnim_FollowEnemyFeet_0
+ anim_call BattleAnim_TargetObj_1Row
anim_bgeffect ANIM_BG_TACKLE, $0, $1, $0
anim_wait 4
anim_sound 0, 1, SFX_BEAT_UP
@@ -4814,15 +4814,15 @@
anim_wait 16
anim_ret
-BattleAnim_FollowEnemyFeet_0:
- anim_enemyfeetobj
- anim_bgeffect ANIM_BG_FEET_FOLLOW, $0, $0, $0
+BattleAnim_TargetObj_1Row:
+ anim_battlergfx_2row
+ anim_bgeffect ANIM_BG_BATTLEROBJ_1ROW, $0, $0, $0
anim_wait 6
anim_ret
-BattleAnim_FollowPlayerHead_0:
- anim_playerheadobj
- anim_bgeffect ANIM_BG_HEAD_FOLLOW, $0, $0, $0
+BattleAnim_TargetObj_2Row:
+ anim_battlergfx_1row
+ anim_bgeffect ANIM_BG_BATTLEROBJ_2ROW, $0, $0, $0
anim_wait 6
anim_ret
@@ -4830,19 +4830,19 @@
anim_wait 1
anim_bgeffect ANIM_BG_SHOW_MON, $0, $0, $0
anim_wait 5
- anim_incobj 1
+ anim_incobj 1
anim_wait 1
anim_ret
-BattleAnim_FollowEnemyFeet_1:
- anim_enemyfeetobj
- anim_bgeffect ANIM_BG_FEET_FOLLOW, $0, $1, $0
+BattleAnim_UserObj_1Row:
+ anim_battlergfx_2row
+ anim_bgeffect ANIM_BG_BATTLEROBJ_1ROW, $0, $1, $0
anim_wait 6
anim_ret
-BattleAnim_FollowPlayerHead_1:
- anim_playerheadobj
- anim_bgeffect ANIM_BG_HEAD_FOLLOW, $0, $1, $0
+BattleAnim_UserObj_2Row:
+ anim_battlergfx_1row
+ anim_bgeffect ANIM_BG_BATTLEROBJ_2ROW, $0, $1, $0
anim_wait 4
anim_ret
@@ -4850,6 +4850,6 @@
anim_wait 1
anim_bgeffect ANIM_BG_SHOW_MON, $0, $1, $0
anim_wait 4
- anim_incobj 1
+ anim_incobj 1
anim_wait 1
anim_ret
--- a/docs/battle_anim_commands.md
+++ b/docs/battle_anim_commands.md
@@ -47,7 +47,10 @@
- *gfx*: `ANIM_GFX` constants (see [constants/battle_anim_constants.asm](/constants/battle_anim_constants.asm))
+Caveats:
+- These will override any currently-loaded GFX.
+
## `$D6`: <code>anim_incobj <i>object_id</i></code>
Increments an object's state.
@@ -76,15 +79,17 @@
Since there can't be two of the same bg effect, the effect type is used. This is distinct from `anim_incobj`.
-## `$D9`: `anim_enemyfeetobj`
+## `$D9`: `anim_battlergfx_2row`
-Temporarily creates sprites from the bottom row of the enemy frontpic, so that the player backpic can be moved around without corrupting the enemy frontpic.
+## `$DA`: `anim_battlergfx_1row`
-## `$DA`: `anim_playerheadobj`
+Loads animation graphics for the bottom one or two rows of the enemy pokemon and the top one or two rows of the player's.
+These graphics are identified through `ANIM_GFX_ENEMYFEET` and `ANIM_GFX_PLAYERHEAD`.
-Temporarily creates sprites from the top row of the player backpic, so that the enemy frontpic can be moved around without corrupting the player backpic.
-
+Caveats:
+- Doesn't work with `anim_4gfx` and `anim_5gfx`.
+- This overwrites previously loaded animation graphics if you've loaded more than 53 tiles (2row) or 66 tiles (1row).
## `$DB`: `anim_checkpokeball`
--- a/docs/bugs_and_glitches.md
+++ b/docs/bugs_and_glitches.md
@@ -183,7 +183,9 @@
callfar CheckUserHasEnoughHP
jr nc, .failed
+
++ push bc
+ call BattleCommand_AttackUp2
++ pop bc
+ ld a, [wAttackMissed]
+ and a
+ jr nz, .failed
--- a/engine/battle/effect_commands.asm
+++ b/engine/battle/effect_commands.asm
@@ -4854,7 +4854,7 @@
ld bc, wBattleMonAttack
ld a, 5
- call CalcStats
+ call CalcBattleStats
ld hl, BadgeStatBoosts
call CallBattleCore
@@ -4875,7 +4875,7 @@
ld bc, wEnemyMonAttack
ld a, 5
- call CalcStats
+ call CalcBattleStats
call BattleCommand_SwitchTurn
@@ -4887,7 +4887,7 @@
jp BattleCommand_SwitchTurn
-CalcStats:
+CalcBattleStats:
.loop
push af
ld a, [hli]
@@ -6220,21 +6220,6 @@
jp StdBattleTextBox
INCLUDE "engine/battle/move_effects/transform.asm"
-
-BattleSideCopy:
-; Copy bc bytes from hl to de if it's the player's turn.
-; Copy bc bytes from de to hl if it's the enemy's turn.
- ldh a, [hBattleTurn]
- and a
- jr z, .copy
-
-; Swap hl and de
- push hl
- ld h, d
- ld l, e
- pop de
-.copy
- jp CopyBytes
BattleEffect_ButItFailed:
call AnimateFailedMove
--- a/engine/battle/move_effects/transform.asm
+++ b/engine/battle/move_effects/transform.asm
@@ -1,4 +1,3 @@
-
BattleCommand_Transform:
; transform
@@ -137,3 +136,18 @@
call nz, LoadAnim
ld hl, TransformedText
jp StdBattleTextBox
+
+BattleSideCopy:
+; Copy bc bytes from hl to de if it's the player's turn.
+; Copy bc bytes from de to hl if it's the enemy's turn.
+ ldh a, [hBattleTurn]
+ and a
+ jr z, .copy
+
+; Swap hl and de
+ push hl
+ ld h, d
+ ld l, e
+ pop de
+.copy
+ jp CopyBytes
--- a/engine/battle_anims/anim_commands.asm
+++ b/engine/battle_anims/anim_commands.asm
@@ -334,8 +334,8 @@
dw BattleAnimCmd_IncObj
dw BattleAnimCmd_SetObj
dw BattleAnimCmd_IncBGEffect
- dw BattleAnimCmd_EnemyFeetObj
- dw BattleAnimCmd_PlayerHeadObj
+ dw BattleAnimCmd_BattlerGFX_1Row
+ dw BattleAnimCmd_BattlerGFX_2Row
dw BattleAnimCmd_CheckPokeball
dw BattleAnimCmd_Transform
dw BattleAnimCmd_RaiseSub
@@ -595,13 +595,13 @@
BattleAnimCmd_Obj:
; index, x, y, param
call GetBattleAnimByte
- ld [wBattleAnimTemp0], a
+ ld [wBattleObjectTempID], a
call GetBattleAnimByte
- ld [wBattleAnimTemp1], a
+ ld [wBattleObjectTempXCoord], a
call GetBattleAnimByte
- ld [wBattleAnimTemp2], a
+ ld [wBattleObjectTempYCoord], a
call GetBattleAnimByte
- ld [wBattleAnimTemp3], a
+ ld [wBattleObjectTemp0b], a
call QueueBattleAnimation
ret
@@ -665,7 +665,7 @@
ld [wBattleAnimTemp0], a
.loop
ld a, [wBattleAnimTemp0]
- cp (vTiles1 - vTiles0) / $10 - $31
+ cp (vTiles1 - vTiles0) / LEN_2BPP_TILE - BATTLEANIM_BASE_TILE
ret nc
call GetBattleAnimByte
ld [hli], a
@@ -678,10 +678,10 @@
rept 4
add hl, hl
endr
- ld de, vTiles0 tile $31
+ ld de, vTiles0 tile BATTLEANIM_BASE_TILE
add hl, de
ld a, [wBattleAnimByte]
- call LoadBattleAnimObj
+ call LoadBattleAnimGFX
ld a, [wBattleAnimTemp0]
add c
ld [wBattleAnimTemp0], a
@@ -767,7 +767,7 @@
ld [hl], a
ret
-BattleAnimCmd_EnemyFeetObj:
+BattleAnimCmd_BattlerGFX_1Row:
ld hl, wBattleAnimTileDict
.loop
ld a, [hl]
@@ -778,33 +778,33 @@
jr .loop
.okay
- ld a, $28
+ ld a, ANIM_GFX_PLAYERHEAD
ld [hli], a
- ld a, $42
+ ld a, ($80 - 6 - 7) - BATTLEANIM_BASE_TILE
ld [hli], a
- ld a, $29
+ ld a, ANIM_GFX_ENEMYFEET
ld [hli], a
- ld a, $49
+ ld a, ($80 - 6) - BATTLEANIM_BASE_TILE
ld [hl], a
- ld hl, vTiles0 tile $73
- ld de, vTiles2 tile $06
- ld a, $70
+ ld hl, vTiles0 tile ($80 - 6 - 7)
+ ld de, vTiles2 tile $06 ; Enemy feet start tile
+ ld a, 7 tiles ; Enemy pic height
ld [wBattleAnimTemp0], a
- ld a, $7
- call .LoadFootprint
- ld de, vTiles2 tile $31
- ld a, $60
+ ld a, 7 ; Copy 7x1 tiles
+ call .LoadFeet
+ ld de, vTiles2 tile $31 ; Player head start tile
+ ld a, 6 tiles ; Player pic height
ld [wBattleAnimTemp0], a
- ld a, $6
- call .LoadFootprint
+ ld a, 6 ; Copy 6x1 tiles
+ call .LoadFeet
ret
-.LoadFootprint:
+.LoadFeet:
push af
push hl
push de
- lb bc, BANK(BattleAnimCmd_EnemyFeetObj), 1
+ lb bc, BANK(@), 1
call Request2bpp
pop de
ld a, [wBattleAnimTemp0]
@@ -818,10 +818,10 @@
add hl, bc
pop af
dec a
- jr nz, .LoadFootprint
+ jr nz, .LoadFeet
ret
-BattleAnimCmd_PlayerHeadObj:
+BattleAnimCmd_BattlerGFX_2Row:
ld hl, wBattleAnimTileDict
.loop
ld a, [hl]
@@ -832,25 +832,25 @@
jr .loop
.okay
- ld a, $28
+ ld a, ANIM_GFX_PLAYERHEAD
ld [hli], a
- ld a, $35
+ ld a, ($80 - 6 * 2 - 7 * 2) - BATTLEANIM_BASE_TILE
ld [hli], a
- ld a, $29
+ ld a, ANIM_GFX_ENEMYFEET
ld [hli], a
- ld a, $43
+ ld a, ($80 - 6 * 2) - BATTLEANIM_BASE_TILE
ld [hl], a
- ld hl, vTiles0 tile $66
- ld de, vTiles2 tile $05
- ld a, $70
+ ld hl, vTiles0 tile ($80 - 6 * 2 - 7 * 2)
+ ld de, vTiles2 tile $05 ; Enemy feet start tile
+ ld a, 7 tiles ; Enemy pic height
ld [wBattleAnimTemp0], a
- ld a, $7
+ ld a, 7 ; Copy 7x2 tiles
call .LoadHead
- ld de, vTiles2 tile $31
- ld a, $60
+ ld de, vTiles2 tile $31 ; Player head start tile
+ ld a, 6 tiles ; Player pic height
ld [wBattleAnimTemp0], a
- ld a, $6
+ ld a, 6 ; Copy 6x2 tiles
call .LoadHead
ret
@@ -858,7 +858,7 @@
push af
push hl
push de
- lb bc, BANK(BattleAnimCmd_EnemyFeetObj), 2
+ lb bc, BANK(@), 2
call Request2bpp
pop de
ld a, [wBattleAnimTemp0]
@@ -927,7 +927,7 @@
ld hl, vTiles2 tile $00
ld b, 0
- ld c, $31
+ ld c, 7 * 7
call Request2bpp
ret
@@ -934,7 +934,7 @@
.player
ld hl, vTiles2 tile $31
ld b, 0
- ld c, $24
+ ld c, 6 * 6
call Request2bpp
ret
@@ -1028,7 +1028,7 @@
GetMinimizePic:
ld hl, sScratch
- ld bc, $31 tiles
+ ld bc, (7 * 7) tiles
.loop
xor a
ld [hli], a
--- a/engine/battle_anims/bg_effects.asm
+++ b/engine/battle_anims/bg_effects.asm
@@ -96,8 +96,8 @@
dw BattleBGEffect_Whirlpool
dw BattleBGEffect_Teleport
dw BattleBGEffect_NightShade
- dw BattleBGEffect_FeetFollow
- dw BattleBGEffect_HeadFollow
+ dw BattleBGEffect_BattlerObj_1Row
+ dw BattleBGEffect_BattlerObj_2Row
dw BattleBGEffect_DoubleTeam
dw BattleBGEffect_AcidArmor
dw BattleBGEffect_RapidFlash
@@ -403,7 +403,7 @@
db 3, $00, 3
db -1
-BattleBGEffect_FeetFollow:
+BattleBGEffect_BattlerObj_1Row:
call BattleBGEffects_AnonJumptable
.anon_dw
dw .zero
@@ -425,22 +425,22 @@
call BattleBGEffects_IncrementJumptable
push bc
call BGEffect_CheckBattleTurn
- jr nz, .player_turn
- ld a, ANIM_OBJ_PLAYERFEETFOLLOW
- ld [wBattleAnimTemp0], a
- ld a, 16 * 8 + 4
+ jr nz, .player_side
+ ld a, ANIM_OBJ_ENEMYFEET_1ROW
+ ld [wBattleObjectTempID], a
+ ld a, 16 * TILE_WIDTH + 4
jr .okay
-.player_turn
- ld a, ANIM_OBJ_ENEMYFEETFOLLOW
- ld [wBattleAnimTemp0], a
- ld a, 6 * 8
+.player_side
+ ld a, ANIM_OBJ_PLAYERHEAD_1ROW
+ ld [wBattleObjectTempID], a
+ ld a, 6 * TILE_WIDTH
.okay
- ld [wBattleAnimTemp1], a
- ld a, 8 * 8
- ld [wBattleAnimTemp2], a
+ ld [wBattleObjectTempXCoord], a
+ ld a, 8 * TILE_WIDTH
+ ld [wBattleObjectTempYCoord], a
xor a
- ld [wBattleAnimTemp3], a
+ ld [wBattleObjectTemp0b], a
call _QueueBattleAnimation
pop bc
ret
@@ -449,12 +449,12 @@
call BattleBGEffects_IncrementJumptable
push bc
call BGEffect_CheckBattleTurn
- jr nz, .player_turn_2
+ jr nz, .player_side_2
hlcoord 12, 6
lb bc, 1, 7
jr .okay2
-.player_turn_2
+.player_side_2
hlcoord 2, 6
lb bc, 1, 6
.okay2
@@ -470,7 +470,7 @@
call EndBattleBGEffect
ret
-BattleBGEffect_HeadFollow:
+BattleBGEffect_BattlerObj_2Row:
call BattleBGEffects_AnonJumptable
.anon_dw
dw .zero
@@ -492,22 +492,22 @@
call BattleBGEffects_IncrementJumptable
push bc
call BGEffect_CheckBattleTurn
- jr nz, .player_turn
- ld a, ANIM_OBJ_PLAYERHEADFOLLOW
- ld [wBattleAnimTemp0], a
- ld a, 16 * 8 + 4
+ jr nz, .player_side
+ ld a, ANIM_OBJ_ENEMYFEET_2ROW
+ ld [wBattleObjectTempID], a
+ ld a, 16 * TILE_WIDTH + 4
jr .okay
-.player_turn
- ld a, ANIM_OBJ_ENEMYHEADFOLLOW
- ld [wBattleAnimTemp0], a
- ld a, 6 * 8
+.player_side
+ ld a, ANIM_OBJ_PLAYERHEAD_2ROW
+ ld [wBattleObjectTempID], a
+ ld a, 6 * TILE_WIDTH
.okay
- ld [wBattleAnimTemp1], a
- ld a, 8 * 8
- ld [wBattleAnimTemp2], a
+ ld [wBattleObjectTempXCoord], a
+ ld a, 8 * TILE_WIDTH
+ ld [wBattleObjectTempYCoord], a
xor a
- ld [wBattleAnimTemp3], a
+ ld [wBattleObjectTemp0b], a
call _QueueBattleAnimation
pop bc
ret
@@ -516,12 +516,12 @@
call BattleBGEffects_IncrementJumptable
push bc
call BGEffect_CheckBattleTurn
- jr nz, .player_turn_2
+ jr nz, .player_side_2
hlcoord 12, 5
lb bc, 2, 7
jr .okay2
-.player_turn_2
+.player_side_2
hlcoord 2, 6
lb bc, 2, 6
.okay2
--- a/engine/battle_anims/core.asm
+++ b/engine/battle_anims/core.asm
@@ -27,7 +27,7 @@
ret
InitBattleAnimation:
- ld a, [wBattleAnimTemp0]
+ ld a, [wBattleObjectTempID]
ld e, a
ld d, 0
ld hl, BattleAnimObjects
@@ -58,14 +58,14 @@
ld a, [de]
call GetBattleAnimTileOffset
ld [hli], a ; Tile ID
- ld a, [wBattleAnimTemp1]
+ ld a, [wBattleObjectTempXCoord]
ld [hli], a ; X Coord
- ld a, [wBattleAnimTemp2]
+ ld a, [wBattleObjectTempYCoord]
ld [hli], a ; Y Coord
xor a
ld [hli], a ; X Offset
ld [hli], a ; Y Offset
- ld a, [wBattleAnimTemp3]
+ ld a, [wBattleObjectTemp0b]
ld [hli], a ; 0b
xor a
ld [hli], a ; 0c
@@ -147,7 +147,7 @@
inc hl
inc de
ld a, [wBattleAnimTempTileID]
- add $31
+ add BATTLEANIM_BASE_TILE
add [hl]
ld [de], a
inc hl
--- a/engine/battle_anims/helpers.asm
+++ b/engine/battle_anims/helpers.asm
@@ -100,7 +100,7 @@
add hl, de
ret
-LoadBattleAnimObj:
+LoadBattleAnimGFX:
push hl
ld l, a
ld h, 0
--- a/home/flag.asm
+++ b/home/flag.asm
@@ -45,12 +45,10 @@
and 7
; shift de right by three bits (get the index within memory)
+rept 3
srl d
rr e
- srl d
- rr e
- srl d
- rr e
+endr
add hl, de
; implement a decoder
--- a/macros/data.asm
+++ b/macros/data.asm
@@ -97,7 +97,7 @@
ENDM
dsprite: MACRO
-; y tile, y pxl, x tile, x pxl, vtile offset, flags, attributes
+; y tile, y pxl, x tile, x pxl, vtile offset, attributes
db (\1 * 8) % $100 + \2, (\3 * 8) % $100 + \4, \5, \6
ENDM
--- a/macros/scripts/audio.asm
+++ b/macros/scripts/audio.asm
@@ -21,12 +21,13 @@
; MusicCommands indexes (see audio/engine.asm)
enum_start $d8
+first_music_cmd EQU __enum__ + -8
- enum notetype_cmd ; $d8
octave: MACRO
- db notetype_cmd - (\1)
+ db first_music_cmd + 8 - (\1)
ENDM
+ enum notetype_cmd ; $d8
notetype: MACRO
db notetype_cmd
db \1 ; note_length
@@ -68,11 +69,11 @@
enum sound_duty_cmd ; $de
sound_duty: MACRO
db sound_duty_cmd
- if _NARG == 4
+if _NARG == 4
db \1 | (\2 << 2) | (\3 << 4) | (\4 << 6) ; duty sequence
- else
+else
db \1 ; LEGACY: Support for one-byte duty value
- endc
+endc
ENDM
enum togglesfx_cmd ; $df
--- a/macros/scripts/battle_anims.asm
+++ b/macros/scripts/battle_anims.asm
@@ -17,6 +17,7 @@
db \3 ; y
db \4 ; param
else
+; LEGACY: Support the tile+offset format
db \1 ; object
db (\2) * 8 + (\3) ; x_tile, x
db (\4) * 8 + (\5) ; y_tile, y
@@ -84,12 +85,12 @@
ENDM
enum anim_enemyfeetobj_command ; $d9
-anim_enemyfeetobj: MACRO
+anim_battlergfx_2row: MACRO
db anim_enemyfeetobj_command
ENDM
enum anim_playerheadobj_command ; $da
-anim_playerheadobj: MACRO
+anim_battlergfx_1row: MACRO
db anim_playerheadobj_command
ENDM
--- a/wram.asm
+++ b/wram.asm
@@ -3058,6 +3058,12 @@
wBattleAnimTemp3:: db
NEXTU ; d419
+wBattleObjectTempID:: db
+wBattleObjectTempXCoord:: db
+wBattleObjectTempYCoord:: db
+wBattleObjectTemp0b:: db
+
+NEXTU ; d419
wBattleAnimTempOAMFlags:: db
wBattleAnimTempField02:: db
wBattleAnimTempTileID:: db