From fed51c47f0c03ccc05b57dddbdfbf1e7e7e8ac2d Mon Sep 17 00:00:00 2001 From: mid-kid Date: Mon, 19 Nov 2018 20:02:07 +0100 Subject: [PATCH 01/13] Add flex and pkg-config to INSTALL.md --- INSTALL.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 798f41406..e6ed89c36 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 ``` @@ -122,7 +122,7 @@ sudo pacman -S make gcc git To install **rgbds**: ```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 +152,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) From 5bff3a1bffe0481b9189ebd8c426bb47d8c07554 Mon Sep 17 00:00:00 2001 From: mid-kid Date: Mon, 19 Nov 2018 21:59:17 +0100 Subject: [PATCH 02/13] Recommend the AUR package --- INSTALL.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/INSTALL.md b/INSTALL.md index e6ed89c36..e5e07a49b 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -119,7 +119,9 @@ 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 pkg-config flex bison libpng From dac6916c8b7e257d5b35657f4797aada60df8e2a Mon Sep 17 00:00:00 2001 From: mid-kid Date: Tue, 20 Nov 2018 21:46:00 +0100 Subject: [PATCH 03/13] Fix usage of endchannel_cmd --- audio/engine.asm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/audio/engine.asm b/audio/engine.asm index 02235dd82..62ba0e48c 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,7 +1136,7 @@ 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 ; is the song over? jr z, .endchannel cp $d0 ; is it a note? jr c, .readnote @@ -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 From 4e3ed078f9c8c486015d5c00e8d158671d3f740d Mon Sep 17 00:00:00 2001 From: mid-kid Date: Tue, 20 Nov 2018 21:53:45 +0100 Subject: [PATCH 04/13] Cosmetic fixes --- constants/misc_constants.asm | 7 +- data/moves/animations.asm | 192 ++++++++++++++++---------------- home/flag.asm | 6 +- macros/scripts/audio.asm | 6 +- macros/scripts/battle_anims.asm | 1 + 5 files changed, 106 insertions(+), 106 deletions(-) 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/moves/animations.asm b/data/moves/animations.asm index 95518af3d..59385dcf3 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 @@ -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 @@ -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 @@ -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 @@ -1711,7 +1711,7 @@ BattleAnim_Softboiled: 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 @@ -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,9 +1792,9 @@ 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 @@ -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 @@ -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 @@ -2660,7 +2660,7 @@ BattleAnim_Withdraw: 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 @@ -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 @@ -2855,7 +2855,7 @@ BattleAnim_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 @@ -2868,7 +2868,7 @@ BattleAnim_DefenseCurl: 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 @@ -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 @@ -3626,7 +3626,7 @@ BattleAnim_IcyWind: 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 @@ -3832,7 +3832,7 @@ BattleAnim_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 @@ -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 @@ -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 @@ -4144,7 +4144,7 @@ BattleAnim_Pursuit_branch_cb62b: 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 @@ -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 @@ -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 @@ -4830,7 +4830,7 @@ 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 @@ -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/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/scripts/audio.asm b/macros/scripts/audio.asm index f6969d046..cb411fc8b 100644 --- a/macros/scripts/audio.asm +++ b/macros/scripts/audio.asm @@ -68,11 +68,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..ab04dfe51 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 From 725cee7371f1b1862225e940e5c7271dc9444a1c Mon Sep 17 00:00:00 2001 From: mid-kid Date: Wed, 21 Nov 2018 12:12:22 +0100 Subject: [PATCH 05/13] Define first_music_cmd This replaces the uses of $d0 in the audio engine with proper constants. --- audio/engine.asm | 6 +++--- constants/audio_constants.asm | 2 +- macros/scripts/audio.asm | 5 +++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/audio/engine.asm b/audio/engine.asm index 62ba0e48c..551f1e0aa 100644 --- a/audio/engine.asm +++ b/audio/engine.asm @@ -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 endchannel_cmd ; 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 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/macros/scripts/audio.asm b/macros/scripts/audio.asm index cb411fc8b..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 From c210f052a8097b1cef277d7cd008408ff6c21323 Mon Sep 17 00:00:00 2001 From: mid-kid Date: Wed, 21 Nov 2018 14:14:34 +0100 Subject: [PATCH 06/13] Move BattleSideCopy to transform.asm --- engine/battle/effect_commands.asm | 15 --------------- engine/battle/move_effects/transform.asm | 16 +++++++++++++++- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/engine/battle/effect_commands.asm b/engine/battle/effect_commands.asm index 2dafc04ba..f257b025c 100644 --- a/engine/battle/effect_commands.asm +++ b/engine/battle/effect_commands.asm @@ -6220,21 +6220,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 From 32833adef3694b3e599b41f8493a380e353939b0 Mon Sep 17 00:00:00 2001 From: mid-kid Date: Wed, 21 Nov 2018 22:35:36 +0100 Subject: [PATCH 07/13] Use ANIM_GFX constants for battle animations --- data/battle_anims/objects.asm | 368 +++++++++++++++++----------------- macros/data.asm | 2 +- 2 files changed, 185 insertions(+), 185 deletions(-) diff --git a/data/battle_anims/objects.asm b/data/battle_anims/objects.asm index 0cd19ae0d..d870cd997 100644 --- a/data/battle_anims/objects.asm +++ b/data/battle_anims/objects.asm @@ -18,190 +18,190 @@ 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 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, $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 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 From 2746288030ff3bd4febc43c1c9fe8a203272b927 Mon Sep 17 00:00:00 2001 From: mid-kid Date: Wed, 21 Nov 2018 23:44:31 +0100 Subject: [PATCH 08/13] Define ANIM_GFX for PLAYER and ENEMY These are used where the head or the feet of the player/enemy have to be moved in an animation, and shouldn't overlap. These aren't actual GFX and should be loaded with the proper commands, and they're always loaded at the end of the VRAM area. Furthermore, I've defined BATTLEANIM_BASE_TILE, which is the tile from which battle animation graphics may start to load. This value was picked to make sure at least an entire pokemon pic fits in the area before it, even though it doesn't seem very used... --- constants/battle_anim_constants.asm | 5 ++ data/battle_anims/objects.asm | 8 ++-- engine/battle_anims/anim_commands.asm | 66 +++++++++++++-------------- engine/battle_anims/core.asm | 2 +- 4 files changed, 43 insertions(+), 38 deletions(-) diff --git a/constants/battle_anim_constants.asm b/constants/battle_anim_constants.asm index 58e19462e..87e9e0cae 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 @@ -804,6 +807,8 @@ BATTLEANIMSTRUCT_LENGTH EQU const_value const ANIM_GFX_ANGELS const ANIM_GFX_WAVE const ANIM_GFX_AEROBLAST + const ANIM_GFX_PLAYER + const ANIM_GFX_ENEMY ; battle_bg_effect struct members (see macros/wram.asm) const_def diff --git a/data/battle_anims/objects.asm b/data/battle_anims/objects.asm index d870cd997..18a2c2f1b 100644 --- a/data/battle_anims/objects.asm +++ b/data/battle_anims/objects.asm @@ -202,7 +202,7 @@ BattleAnimObjects: 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, $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 ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B5, BATTLEANIMFUNC_00, PAL_BATTLE_OB_ENEMY, ANIM_GFX_PLAYER ; ANIM_OBJ_PLAYERFEETFOLLOW + battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B6, BATTLEANIMFUNC_00, PAL_BATTLE_OB_PLAYER, ANIM_GFX_ENEMY ; ANIM_OBJ_ENEMYFEETFOLLOW + battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B7, BATTLEANIMFUNC_00, PAL_BATTLE_OB_ENEMY, ANIM_GFX_PLAYER ; ANIM_OBJ_PLAYERHEADFOLLOW + battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B8, BATTLEANIMFUNC_00, PAL_BATTLE_OB_PLAYER, ANIM_GFX_ENEMY ; ANIM_OBJ_ENEMYHEADFOLLOW diff --git a/engine/battle_anims/anim_commands.asm b/engine/battle_anims/anim_commands.asm index 4191fdf81..fcf61c43f 100644 --- a/engine/battle_anims/anim_commands.asm +++ b/engine/battle_anims/anim_commands.asm @@ -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,7 +678,7 @@ 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 @@ -778,33 +778,33 @@ BattleAnimCmd_EnemyFeetObj: jr .loop .okay - ld a, $28 + ld a, ANIM_GFX_PLAYER ld [hli], a - ld a, $42 + ld a, ($80 - 6 - 7) - BATTLEANIM_BASE_TILE ld [hli], a - ld a, $29 + ld a, ANIM_GFX_ENEMY 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,7 +818,7 @@ BattleAnimCmd_EnemyFeetObj: add hl, bc pop af dec a - jr nz, .LoadFootprint + jr nz, .LoadFeet ret BattleAnimCmd_PlayerHeadObj: @@ -832,25 +832,25 @@ BattleAnimCmd_PlayerHeadObj: jr .loop .okay - ld a, $28 + ld a, ANIM_GFX_PLAYER 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_ENEMY 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/core.asm b/engine/battle_anims/core.asm index 541de6fc7..b213a9f82 100644 --- a/engine/battle_anims/core.asm +++ b/engine/battle_anims/core.asm @@ -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 From 41f39211ca3448ee79a6c65757bd703f247442fd Mon Sep 17 00:00:00 2001 From: mid-kid Date: Thu, 22 Nov 2018 12:32:24 +0100 Subject: [PATCH 09/13] Identified another user of wBattleAnimTemp QueueBattleAnimation loads an object using these wram addresses. Usually populated by the anim_obj command, but in a couple of cases also manually. --- engine/battle_anims/anim_commands.asm | 8 +++---- engine/battle_anims/bg_effects.asm | 32 +++++++++++++-------------- engine/battle_anims/core.asm | 8 +++---- wram.asm | 6 +++++ 4 files changed, 30 insertions(+), 24 deletions(-) diff --git a/engine/battle_anims/anim_commands.asm b/engine/battle_anims/anim_commands.asm index fcf61c43f..0d1c29da5 100644 --- a/engine/battle_anims/anim_commands.asm +++ b/engine/battle_anims/anim_commands.asm @@ -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 diff --git a/engine/battle_anims/bg_effects.asm b/engine/battle_anims/bg_effects.asm index 6aaa85189..28fe1bc6f 100644 --- a/engine/battle_anims/bg_effects.asm +++ b/engine/battle_anims/bg_effects.asm @@ -427,20 +427,20 @@ BattleBGEffect_FeetFollow: call BGEffect_CheckBattleTurn jr nz, .player_turn ld a, ANIM_OBJ_PLAYERFEETFOLLOW - ld [wBattleAnimTemp0], a - ld a, 16 * 8 + 4 + 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 + 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 @@ -494,20 +494,20 @@ BattleBGEffect_HeadFollow: call BGEffect_CheckBattleTurn jr nz, .player_turn ld a, ANIM_OBJ_PLAYERHEADFOLLOW - ld [wBattleAnimTemp0], a - ld a, 16 * 8 + 4 + 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 + 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 diff --git a/engine/battle_anims/core.asm b/engine/battle_anims/core.asm index b213a9f82..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 diff --git a/wram.asm b/wram.asm index 7fbf99d9e..e19e99e4a 100644 --- a/wram.asm +++ b/wram.asm @@ -3057,6 +3057,12 @@ wBattleAnimTemp1:: db wBattleAnimTemp2:: db wBattleAnimTemp3:: db +NEXTU ; d419 +wBattleObjectTempID:: db +wBattleObjectTempXCoord:: db +wBattleObjectTempYCoord:: db +wBattleObjectTemp0b:: db + NEXTU ; d419 wBattleAnimTempOAMFlags:: db wBattleAnimTempField02:: db From 5dfe652ff60008dd5f1ca6dd49322b2826d5fd52 Mon Sep 17 00:00:00 2001 From: mid-kid Date: Fri, 23 Nov 2018 23:03:27 +0100 Subject: [PATCH 10/13] CalcStats -> CalcBattleStats Confusingly ambiguous name --- data/battle/stat_multipliers.asm | 2 +- engine/battle/effect_commands.asm | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) 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/engine/battle/effect_commands.asm b/engine/battle/effect_commands.asm index f257b025c..8125115e8 100644 --- a/engine/battle/effect_commands.asm +++ b/engine/battle/effect_commands.asm @@ -4853,7 +4853,7 @@ CalcPlayerStats: ld bc, wBattleMonAttack ld a, 5 - call CalcStats + call CalcBattleStats ld hl, BadgeStatBoosts call CallBattleCore @@ -4874,7 +4874,7 @@ CalcEnemyStats: ld bc, wEnemyMonAttack ld a, 5 - call CalcStats + call CalcBattleStats call BattleCommand_SwitchTurn @@ -4886,7 +4886,7 @@ CalcEnemyStats: jp BattleCommand_SwitchTurn -CalcStats: +CalcBattleStats: .loop push af ld a, [hli] From 112667e773e10bf9a3d20ed8bcf4d7e7c6da185a Mon Sep 17 00:00:00 2001 From: mid-kid Date: Sun, 25 Nov 2018 23:15:33 +0100 Subject: [PATCH 11/13] Fix Belly Drum fix --- docs/bugs_and_glitches.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/bugs_and_glitches.md b/docs/bugs_and_glitches.md index c086562fb..4143c2606 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 From c4979d9770bb9b7b01da9aef151dfb83224647a4 Mon Sep 17 00:00:00 2001 From: mid-kid Date: Sun, 25 Nov 2018 23:57:38 +0100 Subject: [PATCH 12/13] Rename "feet and head follow" commands The lot of these were rather misnamed, since they're used to replace part of the player or enemy with objects for several background effects. https://github.com/pret/pokecrystal/pull/578#issuecomment-440996244 --- constants/battle_anim_constants.asm | 16 +-- data/battle_anims/objects.asm | 8 +- data/moves/animations.asm | 164 +++++++++++++------------- engine/battle_anims/anim_commands.asm | 18 +-- engine/battle_anims/bg_effects.asm | 32 ++--- engine/battle_anims/helpers.asm | 2 +- macros/scripts/battle_anims.asm | 4 +- 7 files changed, 122 insertions(+), 122 deletions(-) diff --git a/constants/battle_anim_constants.asm b/constants/battle_anim_constants.asm index 87e9e0cae..91733cd34 100644 --- a/constants/battle_anim_constants.asm +++ b/constants/battle_anim_constants.asm @@ -215,10 +215,10 @@ BATTLEANIM_BASE_TILE EQU 7 * 7 ; Maximum size of a pokemon picture 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 @@ -728,8 +728,8 @@ BATTLEANIM_BASE_TILE EQU 7 * 7 ; Maximum size of a pokemon picture 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 @@ -807,8 +807,8 @@ BATTLEANIM_BASE_TILE EQU 7 * 7 ; Maximum size of a pokemon picture const ANIM_GFX_ANGELS const ANIM_GFX_WAVE const ANIM_GFX_AEROBLAST - const ANIM_GFX_PLAYER - const ANIM_GFX_ENEMY + const ANIM_GFX_PLAYERHEAD + const ANIM_GFX_ENEMYFEET ; battle_bg_effect struct members (see macros/wram.asm) const_def diff --git a/data/battle_anims/objects.asm b/data/battle_anims/objects.asm index 18a2c2f1b..7c6e07596 100644 --- a/data/battle_anims/objects.asm +++ b/data/battle_anims/objects.asm @@ -202,7 +202,7 @@ BattleAnimObjects: 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_PLAYER ; ANIM_OBJ_PLAYERFEETFOLLOW - battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B6, BATTLEANIMFUNC_00, PAL_BATTLE_OB_PLAYER, ANIM_GFX_ENEMY ; ANIM_OBJ_ENEMYFEETFOLLOW - battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B7, BATTLEANIMFUNC_00, PAL_BATTLE_OB_ENEMY, ANIM_GFX_PLAYER ; ANIM_OBJ_PLAYERHEADFOLLOW - battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B8, BATTLEANIMFUNC_00, PAL_BATTLE_OB_PLAYER, ANIM_GFX_ENEMY ; ANIM_OBJ_ENEMYHEADFOLLOW + 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 59385dcf3..0902c143a 100644 --- a/data/moves/animations.asm +++ b/data/moves/animations.asm @@ -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 @@ -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 @@ -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 @@ -1707,7 +1707,7 @@ 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 @@ -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 @@ -1800,7 +1800,7 @@ BattleAnim_Wrap: 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 @@ -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 @@ -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,7 +2654,7 @@ 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 @@ -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 @@ -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,7 +2850,7 @@ 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 @@ -2863,7 +2863,7 @@ 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 @@ -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 @@ -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,7 +3619,7 @@ 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 @@ -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,7 +3826,7 @@ 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 @@ -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 @@ -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 @@ -4137,7 +4137,7 @@ 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 @@ -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 @@ -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 @@ -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 @@ -4834,15 +4834,15 @@ BattleAnim_ShowMon_0: 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 diff --git a/engine/battle_anims/anim_commands.asm b/engine/battle_anims/anim_commands.asm index 0d1c29da5..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 @@ -681,7 +681,7 @@ endr 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,11 +778,11 @@ BattleAnimCmd_EnemyFeetObj: jr .loop .okay - ld a, ANIM_GFX_PLAYER + ld a, ANIM_GFX_PLAYERHEAD ld [hli], a ld a, ($80 - 6 - 7) - BATTLEANIM_BASE_TILE ld [hli], a - ld a, ANIM_GFX_ENEMY + ld a, ANIM_GFX_ENEMYFEET ld [hli], a ld a, ($80 - 6) - BATTLEANIM_BASE_TILE ld [hl], a @@ -821,7 +821,7 @@ BattleAnimCmd_EnemyFeetObj: jr nz, .LoadFeet ret -BattleAnimCmd_PlayerHeadObj: +BattleAnimCmd_BattlerGFX_2Row: ld hl, wBattleAnimTileDict .loop ld a, [hl] @@ -832,11 +832,11 @@ BattleAnimCmd_PlayerHeadObj: jr .loop .okay - ld a, ANIM_GFX_PLAYER + ld a, ANIM_GFX_PLAYERHEAD ld [hli], a ld a, ($80 - 6 * 2 - 7 * 2) - BATTLEANIM_BASE_TILE ld [hli], a - ld a, ANIM_GFX_ENEMY + ld a, ANIM_GFX_ENEMYFEET ld [hli], a ld a, ($80 - 6 * 2) - BATTLEANIM_BASE_TILE ld [hl], a diff --git a/engine/battle_anims/bg_effects.asm b/engine/battle_anims/bg_effects.asm index 28fe1bc6f..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,14 +425,14 @@ BattleBGEffect_FeetFollow: call BattleBGEffects_IncrementJumptable push bc call BGEffect_CheckBattleTurn - jr nz, .player_turn - ld a, ANIM_OBJ_PLAYERFEETFOLLOW + 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 +.player_side + ld a, ANIM_OBJ_PLAYERHEAD_1ROW ld [wBattleObjectTempID], a ld a, 6 * TILE_WIDTH .okay @@ -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,14 +492,14 @@ BattleBGEffect_HeadFollow: call BattleBGEffects_IncrementJumptable push bc call BGEffect_CheckBattleTurn - jr nz, .player_turn - ld a, ANIM_OBJ_PLAYERHEADFOLLOW + 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 +.player_side + ld a, ANIM_OBJ_PLAYERHEAD_2ROW ld [wBattleObjectTempID], a ld a, 6 * TILE_WIDTH .okay @@ -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/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/macros/scripts/battle_anims.asm b/macros/scripts/battle_anims.asm index ab04dfe51..01db12010 100644 --- a/macros/scripts/battle_anims.asm +++ b/macros/scripts/battle_anims.asm @@ -85,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 From fd1fa78ffe78c9101c0ae5a1ca299d4282462ecd Mon Sep 17 00:00:00 2001 From: mid-kid Date: Mon, 26 Nov 2018 00:10:41 +0100 Subject: [PATCH 13/13] Update docs/battle_anim_commands.md --- docs/battle_anim_commands.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) 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`: anim_incobj object_id @@ -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`