diff options
-rw-r--r-- | INSTALL.md | 12 | ||||
-rw-r--r-- | audio/engine.asm | 10 | ||||
-rw-r--r-- | constants/audio_constants.asm | 2 | ||||
-rw-r--r-- | constants/battle_anim_constants.asm | 17 | ||||
-rw-r--r-- | constants/misc_constants.asm | 7 | ||||
-rw-r--r-- | data/battle/stat_multipliers.asm | 2 | ||||
-rw-r--r-- | data/battle_anims/objects.asm | 376 | ||||
-rw-r--r-- | data/moves/animations.asm | 356 | ||||
-rw-r--r-- | docs/battle_anim_commands.md | 15 | ||||
-rw-r--r-- | docs/bugs_and_glitches.md | 2 | ||||
-rw-r--r-- | engine/battle/effect_commands.asm | 21 | ||||
-rw-r--r-- | engine/battle/move_effects/transform.asm | 16 | ||||
-rw-r--r-- | engine/battle_anims/anim_commands.asm | 84 | ||||
-rw-r--r-- | engine/battle_anims/bg_effects.asm | 64 | ||||
-rw-r--r-- | engine/battle_anims/core.asm | 10 | ||||
-rw-r--r-- | engine/battle_anims/helpers.asm | 2 | ||||
-rw-r--r-- | home/flag.asm | 6 | ||||
-rw-r--r-- | macros/data.asm | 2 | ||||
-rw-r--r-- | macros/scripts/audio.asm | 11 | ||||
-rw-r--r-- | macros/scripts/battle_anims.asm | 5 | ||||
-rw-r--r-- | wram.asm | 6 |
21 files changed, 524 insertions, 502 deletions
diff --git a/INSTALL.md b/INSTALL.md index 798f41406..e5e07a49b 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -90,7 +90,7 @@ sudo apt-get install make gcc git 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 @@ sudo zypper install make gcc git 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 @@ To install the software required for **pokecrystal**: 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 your distro is not listed here, try to find the required software in its repo If `rgbds` is not available, you'll also need these: +- `pkg-config` +- `flex` - `bison` - `libpng` (and the development headers) diff --git a/audio/engine.asm b/audio/engine.asm index 02235dd82..551f1e0aa 100644 --- a/audio/engine.asm +++ b/audio/engine.asm @@ -1105,7 +1105,7 @@ ReadNoiseSample: ld a, [de] inc de - cp $ff + cp endchannel_cmd jr z, .quit and $f @@ -1136,9 +1136,9 @@ ReadNoiseSample: 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 @@ ParseMusicCommand: ; 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 @@ Music_JumpIf: 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 diff --git a/constants/audio_constants.asm b/constants/audio_constants.asm index ec8311dfe..1d092edf5 100644 --- 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) diff --git a/constants/battle_anim_constants.asm b/constants/battle_anim_constants.asm index 58e19462e..91733cd34 100644 --- 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 @@ BATTLEANIMSTRUCT_LENGTH EQU const_value 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 @@ BATTLEANIMSTRUCT_LENGTH EQU const_value 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 @@ BATTLEANIMSTRUCT_LENGTH EQU const_value 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 diff --git a/constants/misc_constants.asm b/constants/misc_constants.asm index 03911c50a..b492e958e 100644 --- a/constants/misc_constants.asm +++ b/constants/misc_constants.asm @@ -7,9 +7,10 @@ MALE EQU 0 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 diff --git a/data/battle/stat_multipliers.asm b/data/battle/stat_multipliers.asm index 1b9b08588..bbb1cadd6 100644 --- 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% diff --git a/data/battle_anims/objects.asm b/data/battle_anims/objects.asm index 0cd19ae0d..7c6e07596 100644 --- a/data/battle_anims/objects.asm +++ b/data/battle_anims/objects.asm @@ -18,191 +18,191 @@ ENDM 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 diff --git a/data/moves/animations.asm b/data/moves/animations.asm index 95518af3d..0902c143a 100644 --- a/data/moves/animations.asm +++ b/data/moves/animations.asm @@ -377,10 +377,10 @@ BattleAnim_ThrowPokeBall: .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 @@ BattleAnim_ThrowPokeBall: 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 @@ BattleAnim_SendOutMon: 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 @@ BattleAnim_SendOutMon: .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 @@ BattleAnim_EnemyDamage: 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 @@ BattleAnim_EnemyStatDown: 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 @@ BattleAnim_Ember: 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 @@ BattleAnim_FireBlast: 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 @@ BattleAnim_Bubblebeam: 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_Bubblebeam: 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_WaterGun: 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 @@ BattleAnim_Surf: 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 @@ BattleAnim_VineWhip: 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 @@ BattleAnim_RazorLeaf: 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 @@ BattleAnim_ThunderWave: 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 @@ BattleAnim_Sonicboom_JP: 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 @@ BattleAnim_AuroraBeam: 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_Bite: 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 @@ BattleAnim_Fly_branch_c9e89: 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_DoubleTeam: 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_Absorb: 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 @@ BattleAnim_EggBomb: 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_EggBomb: 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_RazorWind_branch_c9fb5: 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_SkyAttack_branch_c9fb5: 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 @@ BattleAnim_Bind: 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 @@ BattleAnim_Wrap: 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_Fissure: 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 @@ BattleAnim_Growl: 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_Rest: 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_AcidArmor: 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 @@ BattleAnim_Dig: 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 @@ BattleAnim_Headbutt: 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_Headbutt: 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_Tackle: 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_BodySlam: 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_TakeDown: 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_DoubleEdge: 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 @@ BattleAnim_Whirlwind: 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_SpikeCannon: 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 @@ BattleAnim_SkullBash: 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_Substitute_branch_ca77c: 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 @@ BattleAnim_SkyAttack: 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 @@ BattleAnim_NightShade: 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_TriAttack: 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_LeechLife: 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 @@ BattleAnim_Smokescreen: 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 @@ BattleAnim_Strength: 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_QuickAttack: 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_Meditate: 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_Sharpen: 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 @@ BattleAnim_SeismicToss: 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_SeismicToss: 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_Rage: 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_BoneClub: 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_Barrier: 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_Disable: 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_Struggle: 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_TripleKick_branch_caca5: 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 @@ BattleAnim_FlameWheel: 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 @@ BattleAnim_FlameWheel: 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 @@ BattleAnim_Curse: 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 @@ BattleAnim_Curse: .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_Curse: 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_ScaryFace: 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_ZapCannon: 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 @@ BattleAnim_IcyWind: 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,14 +3619,14 @@ BattleAnim_IcyWind: 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 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_LockOn: 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_Sandstorm: 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_GigaDrain: 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_Endure: 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_Charm: 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_Swagger: 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 @@ BattleAnim_Spark: 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 @@ BattleAnim_SteelWing: 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_HealBell: 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 @@ BattleAnim_Present: 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 @@ BattleAnim_Frustration: 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_Safeguard: 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 @@ BattleAnim_SacredFire: 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 @@ BattleAnim_SacredFire: 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,14 +4137,14 @@ BattleAnim_Pursuit: 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 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 @@ BattleAnim_RapidSpin: 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 @@ BattleAnim_RapidSpin: 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 @@ BattleAnim_IronTail: 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 @@ BattleAnim_MetalClaw: 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_MetalClaw: 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_MorningSun: 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_Moonlight: 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 @@ BattleAnim_HiddenPower: 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 @@ BattleAnim_Twister: 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 @@ BattleAnim_Twister: 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_MirrorCoat: 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 @@ BattleAnim_BeatUp: 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 @@ BattleAnim_Synthesis_branch_cbc80: 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 @@ BattleAnim_ShowMon_0: 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 @@ BattleAnim_ShowMon_1: 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 diff --git a/docs/battle_anim_commands.md b/docs/battle_anim_commands.md index 86763b24a..7c4d8313d 100644 --- a/docs/battle_anim_commands.md +++ b/docs/battle_anim_commands.md @@ -47,6 +47,9 @@ Loads 1-5 sets of graphics. Will overwrite any previously loaded sets. - *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> @@ -76,15 +79,17 @@ Increments a bg effect's state. 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` - -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. +## `$D9`: `anim_battlergfx_2row` -## `$DA`: `anim_playerheadobj` +## `$DA`: `anim_battlergfx_1row` -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. +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`. +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` diff --git a/docs/bugs_and_glitches.md b/docs/bugs_and_glitches.md index 76aea54e6..d4d8c7870 100644 --- a/docs/bugs_and_glitches.md +++ b/docs/bugs_and_glitches.md @@ -183,7 +183,9 @@ This bug existed for all battles in Gold and Silver, and was only fixed for sing callfar CheckUserHasEnoughHP jr nc, .failed + ++ push bc + call BattleCommand_AttackUp2 ++ pop bc + ld a, [wAttackMissed] + and a + jr nz, .failed diff --git a/engine/battle/effect_commands.asm b/engine/battle/effect_commands.asm index 9adf90c82..76d6ee375 100644 --- a/engine/battle/effect_commands.asm +++ b/engine/battle/effect_commands.asm @@ -4854,7 +4854,7 @@ CalcPlayerStats: ld bc, wBattleMonAttack ld a, 5 - call CalcStats + call CalcBattleStats ld hl, BadgeStatBoosts call CallBattleCore @@ -4875,7 +4875,7 @@ CalcEnemyStats: ld bc, wEnemyMonAttack ld a, 5 - call CalcStats + call CalcBattleStats call BattleCommand_SwitchTurn @@ -4887,7 +4887,7 @@ CalcEnemyStats: jp BattleCommand_SwitchTurn -CalcStats: +CalcBattleStats: .loop push af ld a, [hli] @@ -6221,21 +6221,6 @@ BattleCommand_Heal: 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 jp PrintButItFailed diff --git a/engine/battle/move_effects/transform.asm b/engine/battle/move_effects/transform.asm index ab94da79c..509a8d03f 100644 --- 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 @@ BattleCommand_Transform: 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 diff --git a/engine/battle_anims/anim_commands.asm b/engine/battle_anims/anim_commands.asm index 4191fdf81..6cc2d6620 100644 --- a/engine/battle_anims/anim_commands.asm +++ b/engine/battle_anims/anim_commands.asm @@ -334,8 +334,8 @@ BattleAnimCommands:: 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_IfParamAnd: 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 @@ BattleAnimCmd_5GFX: 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 @@ BattleAnimCmd_5GFX: 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 @@ BattleAnimCmd_SetObj: ld [hl], a ret -BattleAnimCmd_EnemyFeetObj: +BattleAnimCmd_BattlerGFX_1Row: ld hl, wBattleAnimTileDict .loop ld a, [hl] @@ -778,33 +778,33 @@ BattleAnimCmd_EnemyFeetObj: 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 @@ BattleAnimCmd_EnemyFeetObj: 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 @@ BattleAnimCmd_PlayerHeadObj: 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 @@ BattleAnimCmd_PlayerHeadObj: push af push hl push de - lb bc, BANK(BattleAnimCmd_EnemyFeetObj), 2 + lb bc, BANK(@), 2 call Request2bpp pop de ld a, [wBattleAnimTemp0] @@ -927,14 +927,14 @@ BattleAnimCmd_UpdateActorPic: ld hl, vTiles2 tile $00 ld b, 0 - ld c, $31 + ld c, 7 * 7 call Request2bpp ret .player ld hl, vTiles2 tile $31 ld b, 0 - ld c, $24 + ld c, 6 * 6 call Request2bpp ret @@ -1028,7 +1028,7 @@ BattleAnimCmd_MinimizeOpp: GetMinimizePic: ld hl, sScratch - ld bc, $31 tiles + ld bc, (7 * 7) tiles .loop xor a ld [hli], a diff --git a/engine/battle_anims/bg_effects.asm b/engine/battle_anims/bg_effects.asm index 6aaa85189..05d086f7c 100644 --- a/engine/battle_anims/bg_effects.asm +++ b/engine/battle_anims/bg_effects.asm @@ -96,8 +96,8 @@ BattleBGEffects: 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 @@ BattleBGEffect_ShowMon: db 3, $00, 3 db -1 -BattleBGEffect_FeetFollow: +BattleBGEffect_BattlerObj_1Row: call BattleBGEffects_AnonJumptable .anon_dw dw .zero @@ -425,22 +425,22 @@ BattleBGEffect_FeetFollow: 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 @@ BattleBGEffect_FeetFollow: 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 @@ BattleBGEffect_FeetFollow: call EndBattleBGEffect ret -BattleBGEffect_HeadFollow: +BattleBGEffect_BattlerObj_2Row: call BattleBGEffects_AnonJumptable .anon_dw dw .zero @@ -492,22 +492,22 @@ BattleBGEffect_HeadFollow: 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 @@ BattleBGEffect_HeadFollow: 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 diff --git a/engine/battle_anims/core.asm b/engine/battle_anims/core.asm index 541de6fc7..b71303afc 100644 --- a/engine/battle_anims/core.asm +++ b/engine/battle_anims/core.asm @@ -27,7 +27,7 @@ DeinitBattleAnimation: ret InitBattleAnimation: - ld a, [wBattleAnimTemp0] + ld a, [wBattleObjectTempID] ld e, a ld d, 0 ld hl, BattleAnimObjects @@ -58,14 +58,14 @@ endr 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 @@ BattleAnimOAMUpdate: inc hl inc de ld a, [wBattleAnimTempTileID] - add $31 + add BATTLEANIM_BASE_TILE add [hl] ld [de], a inc hl diff --git a/engine/battle_anims/helpers.asm b/engine/battle_anims/helpers.asm index 63177b1b1..4a7f2950c 100644 --- a/engine/battle_anims/helpers.asm +++ b/engine/battle_anims/helpers.asm @@ -100,7 +100,7 @@ GetBattleAnimOAMPointer: add hl, de ret -LoadBattleAnimObj: +LoadBattleAnimGFX: push hl ld l, a ld h, 0 diff --git a/home/flag.asm b/home/flag.asm index e481cb6f7..372d8107f 100644 --- a/home/flag.asm +++ b/home/flag.asm @@ -45,12 +45,10 @@ FlagAction:: 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 diff --git a/macros/data.asm b/macros/data.asm index 1fb848cca..59f518b8d 100644 --- a/macros/data.asm +++ b/macros/data.asm @@ -97,7 +97,7 @@ endc 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 diff --git a/macros/scripts/audio.asm b/macros/scripts/audio.asm index f6969d046..d4a3f7bb5 100644 --- a/macros/scripts/audio.asm +++ b/macros/scripts/audio.asm @@ -21,12 +21,13 @@ ENDM ; 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 @@ ENDM 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 diff --git a/macros/scripts/battle_anims.asm b/macros/scripts/battle_anims.asm index 76300e78f..01db12010 100644 --- a/macros/scripts/battle_anims.asm +++ b/macros/scripts/battle_anims.asm @@ -17,6 +17,7 @@ if _NARG <= 4 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 @@ anim_incbgeffect: MACRO 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 @@ -3058,6 +3058,12 @@ wBattleAnimTemp2:: db wBattleAnimTemp3:: db NEXTU ; d419 +wBattleObjectTempID:: db +wBattleObjectTempXCoord:: db +wBattleObjectTempYCoord:: db +wBattleObjectTemp0b:: db + +NEXTU ; d419 wBattleAnimTempOAMFlags:: db wBattleAnimTempField02:: db wBattleAnimTempTileID:: db |