diff options
Diffstat (limited to 'src/battle/battle_anim.c')
-rw-r--r-- | src/battle/battle_anim.c | 3236 |
1 files changed, 0 insertions, 3236 deletions
diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c deleted file mode 100644 index 287d80ab1..000000000 --- a/src/battle/battle_anim.c +++ /dev/null @@ -1,3236 +0,0 @@ -#include "global.h" -#include "battle_anim.h" -#include "battle.h" -#include "battle_anim_80CA710.h" -#include "battle_interface.h" -#include "contest.h" -#include "decompress.h" -#include "m4a.h" -#include "main.h" -#include "palette.h" -#include "rom_8077ABC.h" -#include "sound.h" -#include "sprite.h" -#include "task.h" -#include "ewram.h" -#include "graphics.h" -#include "constants/battle_anim.h" -#include "constants/songs.h" - -const struct OamData gOamData_837DF24 = -{ - .affineMode = 0, - .objMode = 0, - .shape = 0, - .size = 0, - .priority = 2, -}; - -const struct OamData gOamData_837DF2C = -{ - .affineMode = 0, - .objMode = 0, - .shape = 0, - .size = 1, - .priority = 2, -}; - -const struct OamData gOamData_837DF34 = -{ - .affineMode = 0, - .objMode = 0, - .shape = 0, - .size = 2, - .priority = 2, -}; - -const struct OamData gOamData_837DF3C = -{ - .affineMode = 0, - .objMode = 0, - .shape = 0, - .size = 3, - .priority = 2, -}; - -const struct OamData gOamData_837DF44 = -{ - .affineMode = 0, - .objMode = 0, - .shape = 1, - .size = 0, - .priority = 2, -}; - -const struct OamData gOamData_837DF4C = -{ - .affineMode = 0, - .objMode = 0, - .shape = 1, - .size = 1, - .priority = 2, -}; - -const struct OamData gOamData_837DF54 = -{ - .affineMode = 0, - .objMode = 0, - .shape = 1, - .size = 2, - .priority = 2, -}; - -const struct OamData gOamData_837DF5C = -{ - .affineMode = 0, - .objMode = 0, - .shape = 1, - .size = 3, - .priority = 2, -}; - -const struct OamData gOamData_837DF64 = -{ - .affineMode = 0, - .objMode = 0, - .shape = 2, - .size = 0, - .priority = 2, -}; - -const struct OamData gOamData_837DF6C = -{ - .affineMode = 0, - .objMode = 0, - .shape = 2, - .size = 1, - .priority = 2, -}; - -const struct OamData gOamData_837DF74 = -{ - .affineMode = 0, - .objMode = 0, - .shape = 2, - .size = 2, - .priority = 2, -}; - -const struct OamData gOamData_837DF7C = -{ - .affineMode = 0, - .objMode = 0, - .shape = 2, - .size = 3, - .priority = 2, -}; - -const struct OamData gOamData_837DF84 = -{ - .affineMode = 1, - .objMode = 0, - .shape = 0, - .size = 0, - .priority = 2, -}; - -const struct OamData gOamData_837DF8C = -{ - .affineMode = 1, - .objMode = 0, - .shape = 0, - .size = 1, - .priority = 2, -}; - -const struct OamData gOamData_837DF94 = -{ - .affineMode = 1, - .objMode = 0, - .shape = 0, - .size = 2, - .priority = 2, -}; - -const struct OamData gOamData_837DF9C = -{ - .affineMode = 1, - .objMode = 0, - .shape = 0, - .size = 3, - .priority = 2, -}; - -const struct OamData gOamData_837DFA4 = -{ - .affineMode = 1, - .objMode = 0, - .shape = 1, - .size = 0, - .priority = 2, -}; - -const struct OamData gOamData_837DFAC = -{ - .affineMode = 1, - .objMode = 0, - .shape = 1, - .size = 1, - .priority = 2, -}; - -const struct OamData gOamData_837DFB4 = -{ - .affineMode = 1, - .objMode = 0, - .shape = 1, - .size = 2, - .priority = 2, -}; - -const struct OamData gOamData_837DFBC = -{ - .affineMode = 1, - .objMode = 0, - .shape = 1, - .size = 3, - .priority = 2, -}; - -const struct OamData gOamData_837DFC4 = -{ - .affineMode = 1, - .objMode = 0, - .shape = 2, - .size = 0, - .priority = 2, -}; - -const struct OamData gOamData_837DFCC = -{ - .affineMode = 1, - .objMode = 0, - .shape = 2, - .size = 1, - .priority = 2, -}; - -const struct OamData gOamData_837DFD4 = -{ - .affineMode = 1, - .objMode = 0, - .shape = 2, - .size = 2, - .priority = 2, -}; - -const struct OamData gOamData_837DFDC = -{ - .affineMode = 1, - .objMode = 0, - .shape = 2, - .size = 3, - .priority = 2, -}; - -const struct OamData gOamData_837DFE4 = -{ - .affineMode = 3, - .objMode = 0, - .shape = 0, - .size = 0, - .priority = 2, -}; - -const struct OamData gOamData_837DFEC = -{ - .affineMode = 3, - .objMode = 0, - .shape = 0, - .size = 1, - .priority = 2, -}; - -const struct OamData gOamData_837DFF4 = -{ - .affineMode = 3, - .objMode = 0, - .shape = 0, - .size = 2, - .priority = 2, -}; - -const struct OamData gOamData_837DFFC = -{ - .affineMode = 3, - .objMode = 0, - .shape = 0, - .size = 3, - .priority = 2, -}; - -const struct OamData gOamData_837D004 = -{ - .affineMode = 3, - .objMode = 0, - .shape = 1, - .size = 0, - .priority = 2, -}; - -const struct OamData gOamData_837D00C = -{ - .affineMode = 3, - .objMode = 0, - .shape = 1, - .size = 1, - .priority = 2, -}; - -const struct OamData gOamData_837E014 = -{ - .affineMode = 3, - .objMode = 0, - .shape = 1, - .size = 2, - .priority = 2, -}; - -const struct OamData gOamData_837E01C = -{ - .affineMode = 3, - .objMode = 0, - .shape = 1, - .size = 3, - .priority = 2, -}; - -const struct OamData gOamData_837E024 = -{ - .affineMode = 3, - .objMode = 0, - .shape = 2, - .size = 0, - .priority = 2, -}; - -const struct OamData gOamData_837E02C = -{ - .affineMode = 3, - .objMode = 0, - .shape = 2, - .size = 1, - .priority = 2, -}; - -const struct OamData gOamData_837E034 = -{ - .affineMode = 3, - .objMode = 0, - .shape = 2, - .size = 2, - .priority = 2, -}; - -const struct OamData gOamData_837E03C = -{ - .affineMode = 3, - .objMode = 0, - .shape = 2, - .size = 3, - .priority = 2, -}; - -const struct OamData gOamData_837E044 = -{ - .affineMode = 0, - .objMode = 1, - .shape = 0, - .size = 0, - .priority = 2, -}; - -const struct OamData gOamData_837E04C = -{ - .affineMode = 0, - .objMode = 1, - .shape = 0, - .size = 1, - .priority = 2, -}; - -const struct OamData gOamData_837E054 = -{ - .affineMode = 0, - .objMode = 1, - .shape = 0, - .size = 2, - .priority = 2, -}; - -const struct OamData gOamData_837E05C = -{ - .affineMode = 0, - .objMode = 1, - .shape = 0, - .size = 3, - .priority = 2, -}; - -const struct OamData gOamData_837E064 = -{ - .affineMode = 0, - .objMode = 1, - .shape = 1, - .size = 0, - .priority = 2, -}; - -const struct OamData gOamData_837E06C = -{ - .affineMode = 0, - .objMode = 1, - .shape = 1, - .size = 1, - .priority = 2, -}; - -const struct OamData gOamData_837E074 = -{ - .affineMode = 0, - .objMode = 1, - .shape = 1, - .size = 2, - .priority = 2, -}; - -const struct OamData gOamData_837E07C = -{ - .affineMode = 0, - .objMode = 1, - .shape = 1, - .size = 3, - .priority = 2, -}; - -const struct OamData gOamData_837E084 = -{ - .affineMode = 0, - .objMode = 1, - .shape = 2, - .size = 0, - .priority = 2, -}; - -const struct OamData gOamData_837E08C = -{ - .affineMode = 0, - .objMode = 1, - .shape = 2, - .size = 1, - .priority = 2, -}; - -const struct OamData gOamData_837E094 = -{ - .affineMode = 0, - .objMode = 1, - .shape = 2, - .size = 2, - .priority = 2, -}; - -const struct OamData gOamData_837E09C = -{ - .affineMode = 0, - .objMode = 1, - .shape = 2, - .size = 3, - .priority = 2, -}; - -const struct OamData gOamData_837E0A4 = -{ - .affineMode = 1, - .objMode = 1, - .shape = 0, - .size = 0, - .priority = 2, -}; - -const struct OamData gOamData_837E0AC = -{ - .affineMode = 1, - .objMode = 1, - .shape = 0, - .size = 1, - .priority = 2, -}; - -const struct OamData gOamData_837E0B4 = -{ - .affineMode = 1, - .objMode = 1, - .shape = 0, - .size = 2, - .priority = 2, -}; - -const struct OamData gOamData_837E0BC = -{ - .affineMode = 1, - .objMode = 1, - .shape = 0, - .size = 3, - .priority = 2, -}; - -const struct OamData gOamData_837E0C4 = -{ - .affineMode = 1, - .objMode = 1, - .shape = 1, - .size = 0, - .priority = 2, -}; - -const struct OamData gOamData_837E0CC = -{ - .affineMode = 1, - .objMode = 1, - .shape = 1, - .size = 1, - .priority = 2, -}; - -const struct OamData gOamData_837E0D4 = -{ - .affineMode = 1, - .objMode = 1, - .shape = 1, - .size = 2, - .priority = 2, -}; - -const struct OamData gOamData_837E0DC = -{ - .affineMode = 1, - .objMode = 1, - .shape = 1, - .size = 3, - .priority = 2, -}; - -const struct OamData gOamData_837E0E4 = -{ - .affineMode = 1, - .objMode = 1, - .shape = 2, - .size = 0, - .priority = 2, -}; - -const struct OamData gOamData_837E0EC = -{ - .affineMode = 1, - .objMode = 1, - .shape = 2, - .size = 1, - .priority = 2, -}; - -const struct OamData gOamData_837E0F4 = -{ - .affineMode = 1, - .objMode = 1, - .shape = 2, - .size = 2, - .priority = 2, -}; - -const struct OamData gOamData_837E0FC = -{ - .affineMode = 1, - .objMode = 1, - .shape = 2, - .size = 3, - .priority = 2, -}; - -const struct OamData gOamData_837E104 = -{ - .affineMode = 3, - .objMode = 1, - .shape = 0, - .size = 0, - .priority = 2, -}; - -const struct OamData gOamData_837E10C = -{ - .affineMode = 3, - .objMode = 1, - .shape = 0, - .size = 1, - .priority = 2, -}; - -const struct OamData gOamData_837E114 = -{ - .affineMode = 3, - .objMode = 1, - .shape = 0, - .size = 2, - .priority = 2, -}; - -const struct OamData gOamData_837E11C = -{ - .affineMode = 3, - .objMode = 1, - .shape = 0, - .size = 3, - .priority = 2, -}; - -const struct OamData gOamData_837E124 = -{ - .affineMode = 3, - .objMode = 1, - .shape = 1, - .size = 0, - .priority = 2, -}; - -const struct OamData gOamData_837E12C = -{ - .affineMode = 3, - .objMode = 1, - .shape = 1, - .size = 1, - .priority = 2, -}; - -const struct OamData gOamData_837E134 = -{ - .affineMode = 3, - .objMode = 1, - .shape = 1, - .size = 2, - .priority = 2, -}; - -const struct OamData gOamData_837E13C = -{ - .affineMode = 3, - .objMode = 1, - .shape = 1, - .size = 3, - .priority = 2, -}; - -const struct OamData gOamData_837E144 = -{ - .affineMode = 3, - .objMode = 1, - .shape = 2, - .size = 0, - .priority = 2, -}; - -const struct OamData gOamData_837E14C = -{ - .affineMode = 3, - .objMode = 1, - .shape = 2, - .size = 1, - .priority = 2, -}; - -const struct OamData gOamData_837E154 = -{ - .affineMode = 3, - .objMode = 1, - .shape = 2, - .size = 2, - .priority = 2, -}; - -const struct OamData gOamData_837E15C = -{ - .affineMode = 3, - .objMode = 1, - .shape = 2, - .size = 3, - .priority = 2, -}; - -const struct CompressedSpriteSheet gBattleAnimPicTable[] = -{ - { gBattleAnimSpriteSheet_000, 0x200, ANIM_TAG_BONE }, - { gBattleAnimSpriteSheet_001, 0x300, ANIM_TAG_SPARK }, - { gBattleAnimSpriteSheet_002, 0x200, ANIM_TAG_PENCIL }, - { gBattleAnimSpriteSheet_003, 0x100, ANIM_TAG_AIR_WAVE }, - { gBattleAnimSpriteSheet_004, 0x200, ANIM_TAG_UNUSED_ORB }, - { gBattleAnimSpriteSheet_005, 0x400, ANIM_TAG_SWORD }, - { gBattleAnimSpriteSheet_006, 0x180, ANIM_TAG_SEED }, - { gBattleAnimSpriteSheet_007, 0x800, ANIM_TAG_UNUSED_EXPLOSION }, - { gBattleAnimSpriteSheet_008, 0x20, ANIM_TAG_UNUSED_PINK_ORB }, - { gBattleAnimSpriteSheet_009, 0x400, ANIM_TAG_GUST }, - { gBattleAnimSpriteSheet_010, 0x1200, ANIM_TAG_ICE_CUBE }, - { gBattleAnimSpriteSheet_011, 0x180, ANIM_TAG_SPARK_2 }, - { gBattleAnimSpriteSheet_012, 0x80, ANIM_TAG_UNUSED_ORANGE }, - { gBattleAnimSpriteSheet_013, 0x80, ANIM_TAG_YELLOW_BALL }, - { gBattleAnimSpriteSheet_014, 0x280, ANIM_TAG_LOCK_ON }, - { gBattleAnimSpriteSheet_015, 0x80, ANIM_TAG_TIED_BAG }, - { gBattleAnimSpriteSheet_016, 0x100, ANIM_TAG_BLACK_SMOKE }, - { gBattleAnimSpriteSheet_017, 0x20, ANIM_TAG_BLACK_BALL }, - { gBattleAnimSpriteSheet_018, 0x80, ANIM_TAG_CONVERSION }, - { gBattleAnimSpriteSheet_019, 0x400, ANIM_TAG_UNUSED_GLASS }, - { gBattleAnimSpriteSheet_020, 0x200, ANIM_TAG_HORN_HIT }, - { gBattleAnimSpriteSheet_021, 0xA00, ANIM_TAG_UNUSED_HIT }, - { gBattleAnimSpriteSheet_021, 0xA00, ANIM_TAG_UNUSED_HIT_2 }, - { gBattleAnimSpriteSheet_023, 0x380, ANIM_TAG_UNUSED_BLUE_SHARDS }, - { gBattleAnimSpriteSheet_024, 0x300, ANIM_TAG_UNUSED_CLOSING_EYE }, - { gBattleAnimSpriteSheet_025, 0xA00, ANIM_TAG_UNUSED_WAVING_HAND }, - { gBattleAnimSpriteSheet_026, 0xA00, ANIM_TAG_UNUSED_HIT_DUPLICATE }, - { gBattleAnimSpriteSheet_027, 0xA00, ANIM_TAG_LEER }, - { gBattleAnimSpriteSheet_028, 0xA00, ANIM_TAG_UNUSED_BLUE_BURST }, - { gBattleAnimSpriteSheet_029, 0xA00, ANIM_TAG_SMALL_EMBER }, - { gBattleAnimSpriteSheet_030, 0xA00, ANIM_TAG_GRAY_SMOKE }, - { gBattleAnimSpriteSheet_031, 0xE00, ANIM_TAG_BLUE_STAR }, - { gBattleAnimSpriteSheet_032, 0x380, ANIM_TAG_UNUSED_BUBBLE_BURST }, - { gBattleAnimSpriteSheet_033, 0x1000, ANIM_TAG_FIRE }, - { gBattleAnimSpriteSheet_034, 0x800, ANIM_TAG_UNUSED_SPINNING_FIRE }, - { gBattleAnimSpriteSheet_035, 0xA00, ANIM_TAG_FIRE_PLUME }, - { gBattleAnimSpriteSheet_036, 0x800, ANIM_TAG_UNUSED_LIGHTNING }, - { gBattleAnimSpriteSheet_037, 0xA00, ANIM_TAG_LIGHTNING }, - { gBattleAnimSpriteSheet_038, 0xA00, ANIM_TAG_UNUSED_CLAW_SLASH }, - { gBattleAnimSpriteSheet_039, 0xA00, ANIM_TAG_CLAW_SLASH }, - { gBattleAnimSpriteSheet_040, 0xA00, ANIM_TAG_UNUSED_SCRATCH }, - { gBattleAnimSpriteSheet_041, 0xA00, ANIM_TAG_UNUSED_SCRATCH_2 }, - { gBattleAnimSpriteSheet_042, 0xA00, ANIM_TAG_UNUSED_BUBBLE_BURST_2 }, - { gBattleAnimSpriteSheet_043, 0xA00, ANIM_TAG_ICE_CHUNK }, - { gBattleAnimSpriteSheet_044, 0xA00, ANIM_TAG_UNUSED_GLASS_2 }, - { gBattleAnimSpriteSheet_045, 0xA00, ANIM_TAG_UNUSED_PINK_HEART }, - { gBattleAnimSpriteSheet_046, 0x1000, ANIM_TAG_UNUSED_SAP_DRIP }, - { gBattleAnimSpriteSheet_046, 0x1000, ANIM_TAG_UNUSED_SAP_DRIP_2 }, - { gBattleAnimSpriteSheet_048, 0x1000, ANIM_TAG_SPARKLE_1 }, - { gBattleAnimSpriteSheet_048, 0x1000, ANIM_TAG_SPARKLE_2 }, - { gBattleAnimSpriteSheet_050, 0x200, ANIM_TAG_HUMANOID_FOOT }, - { gBattleAnimSpriteSheet_051, 0x200, ANIM_TAG_UNUSED_MONSTER_FOOT }, - { gBattleAnimSpriteSheet_052, 0x200, ANIM_TAG_UNUSED_HUMANOID_HAND }, - { gBattleAnimSpriteSheet_053, 0x800, ANIM_TAG_NOISE_LINE }, - { gBattleAnimSpriteSheet_054, 0x80, ANIM_TAG_UNUSED_YELLOW_UNK }, - { gBattleAnimSpriteSheet_055, 0x200, ANIM_TAG_UNUSED_RED_FIST }, - { gBattleAnimSpriteSheet_056, 0x1000, ANIM_TAG_SLAM_HIT }, - { gBattleAnimSpriteSheet_057, 0x180, ANIM_TAG_UNUSED_RING }, - { gBattleAnimSpriteSheet_058, 0xC00, ANIM_TAG_ROCKS }, - { gBattleAnimSpriteSheet_059, 0x100, ANIM_TAG_UNUSED_Z }, - { gBattleAnimSpriteSheet_060, 0x40, ANIM_TAG_UNUSED_YELLOW_UNK_2 }, - { gBattleAnimSpriteSheet_061, 0x180, ANIM_TAG_UNUSED_AIR_SLASH }, - { gBattleAnimSpriteSheet_062, 0x800, ANIM_TAG_UNUSED_SPINNING_GREEN_ORBS }, - { gBattleAnimSpriteSheet_063, 0x480, ANIM_TAG_LEAF }, - { gBattleAnimSpriteSheet_064, 0x200, ANIM_TAG_FINGER }, - { gBattleAnimSpriteSheet_065, 0x200, ANIM_TAG_POISON_POWDER }, - { gBattleAnimSpriteSheet_066, 0x100, ANIM_TAG_UNUSED_BROWN_TRIANGLE }, - { gBattleAnimSpriteSheet_065, 0x200, ANIM_TAG_SLEEP_POWDER }, - { gBattleAnimSpriteSheet_065, 0x200, ANIM_TAG_STUN_SPORE }, - { gBattleAnimSpriteSheet_065, 0x200, ANIM_TAG_UNUSED_POWDER }, - { gBattleAnimSpriteSheet_070, 0x200, ANIM_TAG_SPARKLE_3 }, - { gBattleAnimSpriteSheet_071, 0xA00, ANIM_TAG_SPARKLE_4 }, - { gBattleAnimSpriteSheet_072, 0x300, ANIM_TAG_MUSIC_NOTES }, - { gBattleAnimSpriteSheet_073, 0x180, ANIM_TAG_DUCK }, - { gBattleAnimSpriteSheet_074, 0xA0, ANIM_TAG_MUD_SAND }, - { gBattleAnimSpriteSheet_075, 0x700, ANIM_TAG_ALERT }, - { gBattleAnimSpriteSheet_076, 0x400, ANIM_TAG_UNUSED_BLUE_FLAMES }, - { gBattleAnimSpriteSheet_077, 0x200, ANIM_TAG_UNUSED_BLUE_FLAMES_2 }, - { gBattleAnimSpriteSheet_078, 0x300, ANIM_TAG_UNUSED_SHOCK }, - { gBattleAnimSpriteSheet_079, 0xC00, ANIM_TAG_SHOCK }, - { gBattleAnimSpriteSheet_080, 0xA00, ANIM_TAG_UNUSED_BELL }, - { gBattleAnimSpriteSheet_081, 0x80, ANIM_TAG_UNUSED_PINK_GLOVE }, - { gBattleAnimSpriteSheet_082, 0x40, ANIM_TAG_UNUSED_BLUE_LINES }, - { gBattleAnimSpriteSheet_083, 0xE00, ANIM_TAG_UNUSED_IMPACT }, - { gBattleAnimSpriteSheet_084, 0xE00, ANIM_TAG_UNUSED_IMPACT_2 }, - { gBattleAnimSpriteSheet_085, 0x280, ANIM_TAG_UNUSED_RETICLE }, - { gBattleAnimSpriteSheet_086, 0x200, ANIM_TAG_BREATH }, - { gBattleAnimSpriteSheet_087, 0x80, ANIM_TAG_ANGER }, - { gBattleAnimSpriteSheet_088, 0xC0, ANIM_TAG_UNUSED_SNOWBALL }, - { gBattleAnimSpriteSheet_089, 0xA00, ANIM_TAG_UNUSED_VINE }, - { gBattleAnimSpriteSheet_090, 0x200, ANIM_TAG_UNUSED_SWORD }, - { gBattleAnimSpriteSheet_091, 0x180, ANIM_TAG_UNUSED_CLAPPING }, - { gBattleAnimSpriteSheet_092, 0x80, ANIM_TAG_UNUSED_RED_TUBE }, - { gBattleAnimSpriteSheet_093, 0x1000, ANIM_TAG_AMNESIA }, - { gBattleAnimSpriteSheet_094, 0xA00, ANIM_TAG_UNUSED_STRING }, - { gBattleAnimSpriteSheet_095, 0x180, ANIM_TAG_UNUSED_PENCIL }, - { gBattleAnimSpriteSheet_096, 0x380, ANIM_TAG_UNUSED_PETAL }, - { gBattleAnimSpriteSheet_097, 0xC00, ANIM_TAG_BENT_SPOON }, - { gBattleAnimSpriteSheet_098, 0x200, ANIM_TAG_UNUSED_WEB }, - { gBattleAnimSpriteSheet_099, 0x200, ANIM_TAG_MILK_BOTTLE }, - { gBattleAnimSpriteSheet_100, 0x200, ANIM_TAG_COIN }, - { gBattleAnimSpriteSheet_101, 0x200, ANIM_TAG_UNUSED_CRACKED_EGG }, - { gBattleAnimSpriteSheet_102, 0x400, ANIM_TAG_UNUSED_HATCHED_EGG }, - { gBattleAnimSpriteSheet_103, 0x80, ANIM_TAG_UNUSED_FRESH_EGG }, - { gBattleAnimSpriteSheet_104, 0x400, ANIM_TAG_UNUSED_FANGS }, - { gBattleAnimSpriteSheet_105, 0xC00, ANIM_TAG_UNUSED_EXPLOSION_2 }, - { gBattleAnimSpriteSheet_106, 0x200, ANIM_TAG_UNUSED_EXPLOSION_3 }, - { gBattleAnimSpriteSheet_107, 0x1000, ANIM_TAG_UNUSED_WATER_DROPLET }, - { gBattleAnimSpriteSheet_108, 0xA00, ANIM_TAG_UNUSED_WATER_DROPLET_2 }, - { gBattleAnimSpriteSheet_109, 0x20, ANIM_TAG_UNUSED_SEED }, - { gBattleAnimSpriteSheet_110, 0xE00, ANIM_TAG_UNUSED_SPROUT }, - { gBattleAnimSpriteSheet_111, 0x80, ANIM_TAG_UNUSED_RED_WAND }, - { gBattleAnimSpriteSheet_112, 0xA00, ANIM_TAG_UNUSED_PURPLE_GREEN_UNK }, - { gBattleAnimSpriteSheet_113, 0x400, ANIM_TAG_UNUSED_WATER_COLUMN }, - { gBattleAnimSpriteSheet_114, 0x200, ANIM_TAG_UNUSED_MUD_UNK }, - { gBattleAnimSpriteSheet_115, 0x700, ANIM_TAG_RAIN_DROPS }, - { gBattleAnimSpriteSheet_116, 0x800, ANIM_TAG_UNUSED_FURY_SWIPES }, - { gBattleAnimSpriteSheet_117, 0xA00, ANIM_TAG_UNUSED_VINE_2 }, - { gBattleAnimSpriteSheet_118, 0x600, ANIM_TAG_UNUSED_TEETH }, - { gBattleAnimSpriteSheet_119, 0x800, ANIM_TAG_UNUSED_BONE }, - { gBattleAnimSpriteSheet_120, 0x200, ANIM_TAG_UNUSED_WHITE_BAG }, - { gBattleAnimSpriteSheet_121, 0x40, ANIM_TAG_UNUSED_UNKNOWN }, - { gBattleAnimSpriteSheet_122, 0x180, ANIM_TAG_UNUSED_PURPLE_CORAL }, - { gBattleAnimSpriteSheet_123, 0x600, ANIM_TAG_UNUSED_PURPLE_DROPLET }, - { gBattleAnimSpriteSheet_124, 0x600, ANIM_TAG_UNUSED_SHOCK_2 }, - { gBattleAnimSpriteSheet_125, 0x200, ANIM_TAG_UNUSED_CLOSING_EYE_2 }, - { gBattleAnimSpriteSheet_126, 0x80, ANIM_TAG_UNUSED_METAL_BALL }, - { gBattleAnimSpriteSheet_127, 0x200, ANIM_TAG_UNUSED_MONSTER_DOLL }, - { gBattleAnimSpriteSheet_128, 0x800, ANIM_TAG_UNUSED_WHIRLWIND }, - { gBattleAnimSpriteSheet_129, 0x80, ANIM_TAG_UNUSED_WHIRLWIND_2 }, - { gBattleAnimSpriteSheet_130, 0xA00, ANIM_TAG_UNUSED_EXPLOSION_4 }, - { gBattleAnimSpriteSheet_131, 0x280, ANIM_TAG_UNUSED_EXPLOSION_5 }, - { gBattleAnimSpriteSheet_132, 0x280, ANIM_TAG_UNUSED_TONGUE }, - { gBattleAnimSpriteSheet_133, 0x100, ANIM_TAG_UNUSED_SMOKE }, - { gBattleAnimSpriteSheet_134, 0x200, ANIM_TAG_UNUSED_SMOKE_2 }, - { gBattleAnimSpriteSheet_135, 0x200, ANIM_TAG_IMPACT }, - { gBattleAnimSpriteSheet_136, 0x20, ANIM_TAG_CIRCLE_IMPACT }, - { gBattleAnimSpriteSheet_137, 0xA00, ANIM_TAG_SCRATCH }, - { gBattleAnimSpriteSheet_138, 0x800, ANIM_TAG_CUT }, - { gBattleAnimSpriteSheet_139, 0x800, ANIM_TAG_SHARP_TEETH }, - { gBattleAnimSpriteSheet_140, 0xC0, ANIM_TAG_RAINBOW_RINGS }, - { gBattleAnimSpriteSheet_141, 0x1C0, ANIM_TAG_ICE_CRYSTALS }, - { gBattleAnimSpriteSheet_142, 0x100, ANIM_TAG_ICE_SPIKES }, - { gBattleAnimSpriteSheet_143, 0x800, ANIM_TAG_HANDS_AND_FEET }, - { gBattleAnimSpriteSheet_144, 0x200, ANIM_TAG_MIST_CLOUD }, - { gBattleAnimSpriteSheet_145, 0x800, ANIM_TAG_CLAMP }, - { gBattleAnimSpriteSheet_146, 0x180, ANIM_TAG_BUBBLE }, - { gBattleAnimSpriteSheet_147, 0x180, ANIM_TAG_ORBS }, - { gBattleAnimSpriteSheet_148, 0x200, ANIM_TAG_WATER_IMPACT }, - { gBattleAnimSpriteSheet_149, 0x200, ANIM_TAG_WATER_ORB }, - { gBattleAnimSpriteSheet_150, 0x180, ANIM_TAG_POISON_BUBBLE }, - { gBattleAnimSpriteSheet_151, 0x400, ANIM_TAG_TOXIC_BUBBLE }, - { gBattleAnimSpriteSheet_152, 0x80, ANIM_TAG_SPIKES }, - { gBattleAnimSpriteSheet_153, 0x100, ANIM_TAG_HORN_HIT_2 }, - { gBattleAnimSpriteSheet_154, 0x100, ANIM_TAG_AIR_WAVE_2 }, - { gBattleAnimSpriteSheet_155, 0x140, ANIM_TAG_SMALL_BUBBLES }, - { gBattleAnimSpriteSheet_156, 0x800, ANIM_TAG_ROUND_SHADOW }, - { gBattleAnimSpriteSheet_157, 0x200, ANIM_TAG_SUNLIGHT }, - { gBattleAnimSpriteSheet_158, 0x100, ANIM_TAG_SPORE }, - { gBattleAnimSpriteSheet_159, 0xA0, ANIM_TAG_FLOWER }, - { gBattleAnimSpriteSheet_160, 0x100, ANIM_TAG_RAZOR_LEAF }, - { gBattleAnimSpriteSheet_161, 0x80, ANIM_TAG_NEEDLE }, - { gBattleAnimSpriteSheet_162, 0x300, ANIM_TAG_WHIRLWIND_LINES }, - { gBattleAnimSpriteSheet_163, 0x100, ANIM_TAG_GOLD_RING }, - { gBattleAnimSpriteSheet_163, 0x100, ANIM_TAG_PURPLE_RING }, - { gBattleAnimSpriteSheet_163, 0x100, ANIM_TAG_BLUE_RING }, - { gBattleAnimSpriteSheet_166, 0x800, ANIM_TAG_GREEN_LIGHT_WALL }, - { gBattleAnimSpriteSheet_166, 0x800, ANIM_TAG_BLUE_LIGHT_WALL }, - { gBattleAnimSpriteSheet_166, 0x800, ANIM_TAG_RED_LIGHT_WALL }, - { gBattleAnimSpriteSheet_166, 0x800, ANIM_TAG_GRAY_LIGHT_WALL }, - { gBattleAnimSpriteSheet_166, 0x800, ANIM_TAG_ORANGE_LIGHT_WALL }, - { gBattleAnimSpriteSheet_171, 0x80, ANIM_TAG_BLACK_BALL_2 }, - { gBattleAnimSpriteSheet_144, 0x200, ANIM_TAG_PURPLE_GAS_CLOUD }, - { gBattleAnimSpriteSheet_173, 0x200, ANIM_TAG_SPARK_H }, - { gBattleAnimSpriteSheet_174, 0x200, ANIM_TAG_YELLOW_STAR }, - { gBattleAnimSpriteSheet_175, 0x80, ANIM_TAG_LARGE_FRESH_EGG }, - { gBattleAnimSpriteSheet_176, 0x200, ANIM_TAG_SHADOW_BALL }, - { gBattleAnimSpriteSheet_177, 0x500, ANIM_TAG_LICK }, - { gBattleAnimSpriteSheet_178, 0x800, ANIM_TAG_UNUSED_VOID_LINES }, - { gBattleAnimSpriteSheet_179, 0x400, ANIM_TAG_STRING }, - { gBattleAnimSpriteSheet_180, 0x20, ANIM_TAG_STRING_DOT }, - { gBattleAnimSpriteSheet_181, 0x800, ANIM_TAG_WEB }, - { gBattleAnimSpriteSheet_182, 0x100, ANIM_TAG_UNUSED_LIGHTBULB }, - { gBattleAnimSpriteSheet_183, 0x800, ANIM_TAG_SLASH }, - { gBattleAnimSpriteSheet_184, 0x400, ANIM_TAG_FOCUS_ENERGY }, - { gBattleAnimSpriteSheet_185, 0xA00, ANIM_TAG_SPHERE_TO_CUBE }, - { gBattleAnimSpriteSheet_186, 0x1000, ANIM_TAG_TENDRILS }, - { gBattleAnimSpriteSheet_187, 0x800, ANIM_TAG_EYE }, - { gBattleAnimSpriteSheet_188, 0x400, ANIM_TAG_WHITE_SHADOW }, - { gBattleAnimSpriteSheet_189, 0x200, ANIM_TAG_TEAL_ALERT }, - { gBattleAnimSpriteSheet_190, 0x800, ANIM_TAG_OPENING_EYE }, - { gBattleAnimSpriteSheet_191, 0x800, ANIM_TAG_ROUND_WHITE_HALO }, - { gBattleAnimSpriteSheet_192, 0x800, ANIM_TAG_FANG_ATTACK }, - { gBattleAnimSpriteSheet_193, 0x200, ANIM_TAG_PURPLE_HAND_OUTLINE }, - { gBattleAnimSpriteSheet_194, 0x800, ANIM_TAG_MOON }, - { gBattleAnimSpriteSheet_195, 0x200, ANIM_TAG_SPARKLE_5 }, - { gBattleAnimSpriteSheet_196, 0x800, ANIM_TAG_SPIRAL }, - { gBattleAnimSpriteSheet_197, 0x200, ANIM_TAG_SNORE_Z }, - { gBattleAnimSpriteSheet_198, 0x800, ANIM_TAG_EXPLOSION }, - { gBattleAnimSpriteSheet_199, 0x400, ANIM_TAG_NAIL }, - { gBattleAnimSpriteSheet_200, 0x200, ANIM_TAG_GHOSTLY_SPIRIT }, - { gBattleAnimSpriteSheet_201, 0xA80, ANIM_TAG_WARM_ROCK }, - { gBattleAnimSpriteSheet_202, 0x600, ANIM_TAG_BREAKING_EGG }, - { gBattleAnimSpriteSheet_203, 0x800, ANIM_TAG_THIN_RING }, - { gBattleAnimSpriteSheet_204, 0x200, ANIM_TAG_UNUSED_PUNCH_IMPACT }, - { gBattleAnimSpriteSheet_205, 0x600, ANIM_TAG_BELL }, - { gBattleAnimSpriteSheet_206, 0x800, ANIM_TAG_MUSIC_NOTES_2 }, - { gBattleAnimSpriteSheet_207, 0x180, ANIM_TAG_SPEED_DUST }, - { gBattleAnimSpriteSheet_208, 0x800, ANIM_TAG_TORN_METAL }, - { gBattleAnimSpriteSheet_209, 0x800, ANIM_TAG_THOUGHT_BUBBLE }, - { gBattleAnimSpriteSheet_210, 0x80, ANIM_TAG_MAGENTA_HEART }, - { gBattleAnimSpriteSheet_211, 0x80, ANIM_TAG_ELECTRIC_ORBS }, - { gBattleAnimSpriteSheet_212, 0x800, ANIM_TAG_CIRCLE_OF_LIGHT }, - { gBattleAnimSpriteSheet_213, 0x800, ANIM_TAG_ELECTRICITY }, - { gBattleAnimSpriteSheet_214, 0x600, ANIM_TAG_FINGER_2 }, - { gBattleAnimSpriteSheet_215, 0x600, ANIM_TAG_MOVEMENT_WAVES }, - { gBattleAnimSpriteSheet_210, 0x80, ANIM_TAG_RED_HEART }, - { gBattleAnimSpriteSheet_217, 0x80, ANIM_TAG_RED_ORB }, - { gBattleAnimSpriteSheet_218, 0x180, ANIM_TAG_EYE_SPARKLE }, - { gBattleAnimSpriteSheet_210, 0x80, ANIM_TAG_PINK_HEART }, - { gBattleAnimSpriteSheet_220, 0x200, ANIM_TAG_ANGEL }, - { gBattleAnimSpriteSheet_221, 0x400, ANIM_TAG_DEVIL }, - { gBattleAnimSpriteSheet_222, 0xA00, ANIM_TAG_SWIPE }, - { gBattleAnimSpriteSheet_223, 0x800, ANIM_TAG_ROOTS }, - { gBattleAnimSpriteSheet_224, 0x200, ANIM_TAG_ITEM_BAG }, - { gBattleAnimSpriteSheet_225, 0x400, ANIM_TAG_JAGGED_MUSIC_NOTE }, - { gBattleAnimSpriteSheet_226, 0x80, ANIM_TAG_POKEBALL }, - { gBattleAnimSpriteSheet_227, 0x800, ANIM_TAG_SPOTLIGHT }, - { gBattleAnimSpriteSheet_228, 0x200, ANIM_TAG_LETTER_Z }, - { gBattleAnimSpriteSheet_229, 0x300, ANIM_TAG_RAPID_SPIN }, - { gBattleAnimSpriteSheet_230, 0x800, ANIM_TAG_TRI_FORCE_TRIANGLE }, - { gBattleAnimSpriteSheet_231, 0x380, ANIM_TAG_WISP_ORB }, - { gBattleAnimSpriteSheet_232, 0x800, ANIM_TAG_WISP_FIRE }, - { gBattleAnimSpriteSheet_233, 0xC0, ANIM_TAG_GOLD_STARS }, - { gBattleAnimSpriteSheet_234, 0x800, ANIM_TAG_ECLIPSING_ORB }, - { gBattleAnimSpriteSheet_235, 0x60, ANIM_TAG_GRAY_ORB }, - { gBattleAnimSpriteSheet_235, 0x60, ANIM_TAG_BLUE_ORB }, - { gBattleAnimSpriteSheet_235, 0x60, ANIM_TAG_RED_ORB_2 }, - { gBattleAnimSpriteSheet_238, 0x80, ANIM_TAG_PINK_PETAL }, - { gBattleAnimSpriteSheet_239, 0x180, ANIM_TAG_PAIN_SPLIT }, - { gBattleAnimSpriteSheet_240, 0x180, ANIM_TAG_CONFETTI }, - { gBattleAnimSpriteSheet_241, 0x200, ANIM_TAG_GREEN_STAR }, - { gBattleAnimSpriteSheet_242, 0x200, ANIM_TAG_PINK_CLOUD }, - { gBattleAnimSpriteSheet_243, 0x20, ANIM_TAG_SWEAT_DROP }, - { gBattleAnimSpriteSheet_244, 0x400, ANIM_TAG_GUARD_RING }, - { gBattleAnimSpriteSheet_245, 0x600, ANIM_TAG_PURPLE_SCRATCH }, - { gBattleAnimSpriteSheet_246, 0x1000, ANIM_TAG_PURPLE_SWIPE }, - { gBattleAnimSpriteSheet_247, 0x400, ANIM_TAG_TAG_HAND }, - { gBattleAnimSpriteSheet_248, 0x20, ANIM_TAG_SMALL_RED_EYE }, - { gBattleAnimSpriteSheet_249, 0x80, ANIM_TAG_HOLLOW_ORB }, - { gBattleAnimSpriteSheet_250, 0x800, ANIM_TAG_X_SIGN }, - { gBattleAnimSpriteSheet_251, 0x80, ANIM_TAG_BLUEGREEN_ORB }, - { gBattleAnimSpriteSheet_252, 0x200, ANIM_TAG_PAW_PRINT }, - { gBattleAnimSpriteSheet_253, 0x400, ANIM_TAG_PURPLE_FLAME }, - { gBattleAnimSpriteSheet_254, 0x200, ANIM_TAG_RED_BALL }, - { gBattleAnimSpriteSheet_255, 0x200, ANIM_TAG_SMELLINGSALT_EFFECT }, - { gBattleAnimSpriteSheet_256, 0x800, ANIM_TAG_METEOR }, - { gBattleAnimSpriteSheet_257, 0x280, ANIM_TAG_FLAT_ROCK }, - { gBattleAnimSpriteSheet_258, 0x200, ANIM_TAG_MAGNIFYING_GLASS }, - { gBattleAnimSpriteSheet_149, 0x200, ANIM_TAG_BROWN_ORB }, - { gBattleAnimSpriteSheet_260, 0x400, ANIM_TAG_METAL_SOUND_WAVES }, - { gBattleAnimSpriteSheet_261, 0x200, ANIM_TAG_FLYING_DIRT }, - { gBattleAnimSpriteSheet_262, 0x200, ANIM_TAG_ICICLE_SPEAR }, - { gBattleAnimSpriteSheet_263, 0x80, ANIM_TAG_HAIL }, - { gBattleAnimSpriteSheet_264, 0x20, ANIM_TAG_GLOWY_RED_ORB }, - { gBattleAnimSpriteSheet_264, 0x20, ANIM_TAG_GLOWY_GREEN_ORB }, - { gBattleAnimSpriteSheet_266, 0x80, ANIM_TAG_GREEN_SPIKE }, - { gBattleAnimSpriteSheet_212, 0x800, ANIM_TAG_WHITE_CIRCLE_OF_LIGHT }, - { gBattleAnimSpriteSheet_264, 0x20, ANIM_TAG_GLOWY_BLUE_ORB }, - { gBattleAnimSpriteSheet_269, 0x80, ANIM_TAG_UNUSED_RED_BRICK }, - { gBattleAnimSpriteSheet_270, 0x400, ANIM_TAG_WHITE_FEATHER }, - { gBattleAnimSpriteSheet_271, 0x80, ANIM_TAG_SPARKLE_6 }, - { gBattleAnimSpriteSheet_272, 0x800, ANIM_TAG_SPLASH }, - { gBattleAnimSpriteSheet_273, 0x20, ANIM_TAG_SWEAT_BEAD }, - { gBattleAnimSpriteSheet_274, 0x800, ANIM_TAG_UNUSED_GEM_1 }, - { gBattleAnimSpriteSheet_275, 0x800, ANIM_TAG_UNUSED_GEM_2 }, - { gBattleAnimSpriteSheet_276, 0x800, ANIM_TAG_UNUSED_GEM_3 }, - { gBattleAnimSpriteSheet_277, 0x1000, ANIM_TAG_SLAM_HIT_2 }, - { gBattleAnimSpriteSheet_278, 0x800, ANIM_TAG_RECYCLE }, - { gBattleAnimSpriteSheet_279, 0xA0, ANIM_TAG_UNUSED_RED_PARTICLES }, - { gBattleAnimSpriteSheet_280, 0x800, ANIM_TAG_PROTECT }, - { gBattleAnimSpriteSheet_281, 0x200, ANIM_TAG_DIRT_MOUND }, - { gBattleAnimSpriteSheet_282, 0x600, ANIM_TAG_SHOCK_3 }, - { gBattleAnimSpriteSheet_283, 0x200, ANIM_TAG_WEATHER_BALL }, - { gBattleAnimSpriteSheet_284, 0x800, ANIM_TAG_BIRD }, - { gBattleAnimSpriteSheet_285, 0x200, ANIM_TAG_CROSS_IMPACT }, - { gBattleAnimSpriteSheet_183, 0x800, ANIM_TAG_SLASH_2 }, - { gBattleAnimSpriteSheet_056, 0x1000, ANIM_TAG_WHIP_HIT }, - { gBattleAnimSpriteSheet_163, 0x100, ANIM_TAG_BLUE_RING_2 }, -}; - -const struct CompressedSpritePalette gBattleAnimPaletteTable[] = -{ - { gBattleAnimSpritePalette_000, ANIM_TAG_BONE }, - { gBattleAnimSpritePalette_001, ANIM_TAG_SPARK }, - { gBattleAnimSpritePalette_002, ANIM_TAG_PENCIL }, - { gBattleAnimSpritePalette_003, ANIM_TAG_AIR_WAVE }, - { gBattleAnimSpritePalette_004, ANIM_TAG_UNUSED_ORB }, - { gBattleAnimSpritePalette_005, ANIM_TAG_SWORD }, - { gBattleAnimSpritePalette_006, ANIM_TAG_SEED }, - { gBattleAnimSpritePalette_007, ANIM_TAG_UNUSED_EXPLOSION }, - { gBattleAnimSpritePalette_008, ANIM_TAG_UNUSED_PINK_ORB }, - { gBattleAnimSpritePalette_009, ANIM_TAG_GUST }, - { gBattleAnimSpritePalette_010, ANIM_TAG_ICE_CUBE }, - { gBattleAnimSpritePalette_011, ANIM_TAG_SPARK_2 }, - { gBattleAnimSpritePalette_012, ANIM_TAG_UNUSED_ORANGE }, - { gBattleAnimSpritePalette_013, ANIM_TAG_YELLOW_BALL }, - { gBattleAnimSpritePalette_014, ANIM_TAG_LOCK_ON }, - { gBattleAnimSpritePalette_015, ANIM_TAG_TIED_BAG }, - { gBattleAnimSpritePalette_016, ANIM_TAG_BLACK_SMOKE }, - { gBattleAnimSpritePalette_016, ANIM_TAG_BLACK_BALL }, - { gBattleAnimSpritePalette_018, ANIM_TAG_CONVERSION }, - { gBattleAnimSpritePalette_019, ANIM_TAG_UNUSED_GLASS }, - { gBattleAnimSpritePalette_020, ANIM_TAG_HORN_HIT }, - { gBattleAnimSpritePalette_021, ANIM_TAG_UNUSED_HIT }, - { gBattleAnimSpritePalette_022, ANIM_TAG_UNUSED_HIT_2 }, - { gBattleAnimSpritePalette_023, ANIM_TAG_UNUSED_BLUE_SHARDS }, - { gBattleAnimSpritePalette_024, ANIM_TAG_UNUSED_CLOSING_EYE }, - { gBattleAnimSpritePalette_025, ANIM_TAG_UNUSED_WAVING_HAND }, - { gBattleAnimSpritePalette_026, ANIM_TAG_UNUSED_HIT_DUPLICATE }, - { gBattleAnimSpritePalette_027, ANIM_TAG_LEER }, - { gBattleAnimSpritePalette_028, ANIM_TAG_UNUSED_BLUE_BURST }, - { gBattleAnimSpritePalette_029, ANIM_TAG_SMALL_EMBER }, - { gBattleAnimSpritePalette_030, ANIM_TAG_GRAY_SMOKE }, - { gBattleAnimSpritePalette_031, ANIM_TAG_BLUE_STAR }, - { gBattleAnimSpritePalette_032, ANIM_TAG_UNUSED_BUBBLE_BURST }, - { gBattleAnimSpritePalette_033, ANIM_TAG_FIRE }, - { gBattleAnimSpritePalette_033, ANIM_TAG_UNUSED_SPINNING_FIRE }, - { gBattleAnimSpritePalette_033, ANIM_TAG_FIRE_PLUME }, - { gBattleAnimSpritePalette_036, ANIM_TAG_UNUSED_LIGHTNING }, - { gBattleAnimSpritePalette_036, ANIM_TAG_LIGHTNING }, - { gBattleAnimSpritePalette_038, ANIM_TAG_UNUSED_CLAW_SLASH }, - { gBattleAnimSpritePalette_039, ANIM_TAG_CLAW_SLASH }, - { gBattleAnimSpritePalette_038, ANIM_TAG_UNUSED_SCRATCH }, - { gBattleAnimSpritePalette_038, ANIM_TAG_UNUSED_SCRATCH_2 }, - { gBattleAnimSpritePalette_042, ANIM_TAG_UNUSED_BUBBLE_BURST_2 }, - { gBattleAnimSpritePalette_043, ANIM_TAG_ICE_CHUNK }, - { gBattleAnimSpritePalette_044, ANIM_TAG_UNUSED_GLASS_2 }, - { gBattleAnimSpritePalette_045, ANIM_TAG_UNUSED_PINK_HEART }, - { gBattleAnimSpritePalette_046, ANIM_TAG_UNUSED_SAP_DRIP }, - { gBattleAnimSpritePalette_047, ANIM_TAG_UNUSED_SAP_DRIP }, - { gBattleAnimSpritePalette_048, ANIM_TAG_SPARKLE_1 }, - { gBattleAnimSpritePalette_049, ANIM_TAG_SPARKLE_2 }, - { gBattleAnimSpritePalette_050, ANIM_TAG_HUMANOID_FOOT }, - { gBattleAnimSpritePalette_050, ANIM_TAG_UNUSED_MONSTER_FOOT }, - { gBattleAnimSpritePalette_050, ANIM_TAG_UNUSED_HUMANOID_HAND }, - { gBattleAnimSpritePalette_026, ANIM_TAG_NOISE_LINE }, - { gBattleAnimSpritePalette_054, ANIM_TAG_UNUSED_YELLOW_UNK }, - { gBattleAnimSpritePalette_050, ANIM_TAG_UNUSED_RED_FIST }, - { gBattleAnimSpritePalette_056, ANIM_TAG_SLAM_HIT }, - { gBattleAnimSpritePalette_057, ANIM_TAG_UNUSED_RING }, - { gBattleAnimSpritePalette_058, ANIM_TAG_ROCKS }, - { gBattleAnimSpritePalette_059, ANIM_TAG_UNUSED_Z }, - { gBattleAnimSpritePalette_060, ANIM_TAG_UNUSED_YELLOW_UNK_2 }, - { gBattleAnimSpritePalette_061, ANIM_TAG_UNUSED_AIR_SLASH }, - { gBattleAnimSpritePalette_062, ANIM_TAG_UNUSED_SPINNING_GREEN_ORBS }, - { gBattleAnimSpritePalette_063, ANIM_TAG_LEAF }, - { gBattleAnimSpritePalette_064, ANIM_TAG_FINGER }, - { gBattleAnimSpritePalette_065, ANIM_TAG_POISON_POWDER }, - { gBattleAnimSpritePalette_066, ANIM_TAG_UNUSED_BROWN_TRIANGLE }, - { gBattleAnimSpritePalette_067, ANIM_TAG_SLEEP_POWDER }, - { gBattleAnimSpritePalette_068, ANIM_TAG_STUN_SPORE }, - { gBattleAnimSpritePalette_065, ANIM_TAG_UNUSED_POWDER }, - { gBattleAnimSpritePalette_070, ANIM_TAG_SPARKLE_3 }, - { gBattleAnimSpritePalette_070, ANIM_TAG_SPARKLE_4 }, - { gBattleAnimSpritePalette_072, ANIM_TAG_MUSIC_NOTES }, - { gBattleAnimSpritePalette_073, ANIM_TAG_DUCK }, - { gBattleAnimSpritePalette_074, ANIM_TAG_MUD_SAND }, - { gBattleAnimSpritePalette_075, ANIM_TAG_ALERT }, - { gBattleAnimSpritePalette_076, ANIM_TAG_UNUSED_BLUE_FLAMES }, - { gBattleAnimSpritePalette_076, ANIM_TAG_UNUSED_BLUE_FLAMES_2 }, - { gBattleAnimSpritePalette_078, ANIM_TAG_UNUSED_SHOCK }, - { gBattleAnimSpritePalette_078, ANIM_TAG_SHOCK }, - { gBattleAnimSpritePalette_080, ANIM_TAG_UNUSED_BELL }, - { gBattleAnimSpritePalette_081, ANIM_TAG_UNUSED_PINK_GLOVE }, - { gBattleAnimSpritePalette_082, ANIM_TAG_UNUSED_BLUE_LINES }, - { gBattleAnimSpritePalette_083, ANIM_TAG_UNUSED_IMPACT }, - { gBattleAnimSpritePalette_084, ANIM_TAG_UNUSED_IMPACT_2 }, - { gBattleAnimSpritePalette_085, ANIM_TAG_UNUSED_RETICLE }, - { gBattleAnimSpritePalette_086, ANIM_TAG_BREATH }, - { gBattleAnimSpritePalette_087, ANIM_TAG_ANGER }, - { gBattleAnimSpritePalette_088, ANIM_TAG_UNUSED_SNOWBALL }, - { gBattleAnimSpritePalette_089, ANIM_TAG_UNUSED_VINE }, - { gBattleAnimSpritePalette_090, ANIM_TAG_UNUSED_SWORD }, - { gBattleAnimSpritePalette_091, ANIM_TAG_UNUSED_CLAPPING }, - { gBattleAnimSpritePalette_092, ANIM_TAG_UNUSED_RED_TUBE }, - { gBattleAnimSpritePalette_093, ANIM_TAG_AMNESIA }, - { gBattleAnimSpritePalette_094, ANIM_TAG_UNUSED_STRING }, - { gBattleAnimSpritePalette_095, ANIM_TAG_UNUSED_PENCIL }, - { gBattleAnimSpritePalette_096, ANIM_TAG_UNUSED_PETAL }, - { gBattleAnimSpritePalette_097, ANIM_TAG_BENT_SPOON }, - { gBattleAnimSpritePalette_094, ANIM_TAG_UNUSED_WEB }, - { gBattleAnimSpritePalette_099, ANIM_TAG_MILK_BOTTLE }, - { gBattleAnimSpritePalette_100, ANIM_TAG_COIN }, - { gBattleAnimSpritePalette_101, ANIM_TAG_UNUSED_CRACKED_EGG }, - { gBattleAnimSpritePalette_101, ANIM_TAG_UNUSED_HATCHED_EGG }, - { gBattleAnimSpritePalette_103, ANIM_TAG_UNUSED_FRESH_EGG }, - { gBattleAnimSpritePalette_104, ANIM_TAG_UNUSED_FANGS }, - { gBattleAnimSpritePalette_105, ANIM_TAG_UNUSED_EXPLOSION_2 }, - { gBattleAnimSpritePalette_105, ANIM_TAG_UNUSED_EXPLOSION_3 }, - { gBattleAnimSpritePalette_107, ANIM_TAG_UNUSED_WATER_DROPLET }, - { gBattleAnimSpritePalette_107, ANIM_TAG_UNUSED_WATER_DROPLET_2 }, - { gBattleAnimSpritePalette_109, ANIM_TAG_UNUSED_SEED }, - { gBattleAnimSpritePalette_109, ANIM_TAG_UNUSED_SPROUT }, - { gBattleAnimSpritePalette_111, ANIM_TAG_UNUSED_RED_WAND }, - { gBattleAnimSpritePalette_112, ANIM_TAG_UNUSED_PURPLE_GREEN_UNK }, - { gBattleAnimSpritePalette_113, ANIM_TAG_UNUSED_WATER_COLUMN }, - { gBattleAnimSpritePalette_114, ANIM_TAG_UNUSED_MUD_UNK }, - { gBattleAnimSpritePalette_115, ANIM_TAG_RAIN_DROPS }, - { gBattleAnimSpritePalette_116, ANIM_TAG_UNUSED_FURY_SWIPES }, - { gBattleAnimSpritePalette_117, ANIM_TAG_UNUSED_VINE_2 }, - { gBattleAnimSpritePalette_118, ANIM_TAG_UNUSED_TEETH }, - { gBattleAnimSpritePalette_119, ANIM_TAG_UNUSED_BONE }, - { gBattleAnimSpritePalette_120, ANIM_TAG_UNUSED_WHITE_BAG }, - { gBattleAnimSpritePalette_121, ANIM_TAG_UNUSED_UNKNOWN }, - { gBattleAnimSpritePalette_122, ANIM_TAG_UNUSED_PURPLE_CORAL }, - { gBattleAnimSpritePalette_122, ANIM_TAG_UNUSED_PURPLE_DROPLET }, - { gBattleAnimSpritePalette_124, ANIM_TAG_UNUSED_SHOCK_2 }, - { gBattleAnimSpritePalette_125, ANIM_TAG_UNUSED_CLOSING_EYE_2 }, - { gBattleAnimSpritePalette_126, ANIM_TAG_UNUSED_METAL_BALL }, - { gBattleAnimSpritePalette_127, ANIM_TAG_UNUSED_MONSTER_DOLL }, - { gBattleAnimSpritePalette_128, ANIM_TAG_UNUSED_WHIRLWIND }, - { gBattleAnimSpritePalette_128, ANIM_TAG_UNUSED_WHIRLWIND_2 }, - { gBattleAnimSpritePalette_130, ANIM_TAG_UNUSED_EXPLOSION_4 }, - { gBattleAnimSpritePalette_130, ANIM_TAG_UNUSED_EXPLOSION_5 }, - { gBattleAnimSpritePalette_132, ANIM_TAG_UNUSED_TONGUE }, - { gBattleAnimSpritePalette_133, ANIM_TAG_UNUSED_SMOKE }, - { gBattleAnimSpritePalette_133, ANIM_TAG_UNUSED_SMOKE_2 }, - { gBattleAnimSpritePalette_135, ANIM_TAG_IMPACT }, - { gBattleAnimSpritePalette_136, ANIM_TAG_CIRCLE_IMPACT }, - { gBattleAnimSpritePalette_135, ANIM_TAG_SCRATCH }, - { gBattleAnimSpritePalette_135, ANIM_TAG_CUT }, - { gBattleAnimSpritePalette_139, ANIM_TAG_SHARP_TEETH }, - { gBattleAnimSpritePalette_140, ANIM_TAG_RAINBOW_RINGS }, - { gBattleAnimSpritePalette_141, ANIM_TAG_ICE_CRYSTALS }, - { gBattleAnimSpritePalette_141, ANIM_TAG_ICE_SPIKES }, - { gBattleAnimSpritePalette_143, ANIM_TAG_HANDS_AND_FEET }, - { gBattleAnimSpritePalette_144, ANIM_TAG_MIST_CLOUD }, - { gBattleAnimSpritePalette_139, ANIM_TAG_CLAMP }, - { gBattleAnimSpritePalette_115, ANIM_TAG_BUBBLE }, - { gBattleAnimSpritePalette_147, ANIM_TAG_ORBS }, - { gBattleAnimSpritePalette_148, ANIM_TAG_WATER_IMPACT }, - { gBattleAnimSpritePalette_148, ANIM_TAG_WATER_ORB }, - { gBattleAnimSpritePalette_150, ANIM_TAG_POISON_BUBBLE }, - { gBattleAnimSpritePalette_150, ANIM_TAG_TOXIC_BUBBLE }, - { gBattleAnimSpritePalette_152, ANIM_TAG_SPIKES }, - { gBattleAnimSpritePalette_153, ANIM_TAG_HORN_HIT_2 }, - { gBattleAnimSpritePalette_154, ANIM_TAG_AIR_WAVE_2 }, - { gBattleAnimSpritePalette_155, ANIM_TAG_SMALL_BUBBLES }, - { gBattleAnimSpritePalette_156, ANIM_TAG_ROUND_SHADOW }, - { gBattleAnimSpritePalette_157, ANIM_TAG_SUNLIGHT }, - { gBattleAnimSpritePalette_158, ANIM_TAG_SPORE }, - { gBattleAnimSpritePalette_159, ANIM_TAG_FLOWER }, - { gBattleAnimSpritePalette_160, ANIM_TAG_RAZOR_LEAF }, - { gBattleAnimSpritePalette_161, ANIM_TAG_NEEDLE }, - { gBattleAnimSpritePalette_162, ANIM_TAG_WHIRLWIND_LINES }, - { gBattleAnimSpritePalette_163, ANIM_TAG_GOLD_RING }, - { gBattleAnimSpritePalette_164, ANIM_TAG_PURPLE_RING }, - { gBattleAnimSpritePalette_165, ANIM_TAG_BLUE_RING }, - { gBattleAnimSpritePalette_166, ANIM_TAG_GREEN_LIGHT_WALL }, - { gBattleAnimSpritePalette_167, ANIM_TAG_BLUE_LIGHT_WALL }, - { gBattleAnimSpritePalette_168, ANIM_TAG_RED_LIGHT_WALL }, - { gBattleAnimSpritePalette_169, ANIM_TAG_GRAY_LIGHT_WALL }, - { gBattleAnimSpritePalette_170, ANIM_TAG_ORANGE_LIGHT_WALL }, - { gBattleAnimSpritePalette_171, ANIM_TAG_BLACK_BALL_2 }, - { gBattleAnimSpritePalette_172, ANIM_TAG_PURPLE_GAS_CLOUD }, - { gBattleAnimSpritePalette_001, ANIM_TAG_SPARK_H }, - { gBattleAnimSpritePalette_174, ANIM_TAG_YELLOW_STAR }, - { gBattleAnimSpritePalette_175, ANIM_TAG_LARGE_FRESH_EGG }, - { gBattleAnimSpritePalette_176, ANIM_TAG_SHADOW_BALL }, - { gBattleAnimSpritePalette_177, ANIM_TAG_LICK }, - { gBattleAnimSpritePalette_178, ANIM_TAG_UNUSED_VOID_LINES }, - { gBattleAnimSpritePalette_179, ANIM_TAG_STRING }, - { gBattleAnimSpritePalette_179, ANIM_TAG_STRING_DOT }, - { gBattleAnimSpritePalette_179, ANIM_TAG_WEB }, - { gBattleAnimSpritePalette_182, ANIM_TAG_UNUSED_LIGHTBULB }, - { gBattleAnimSpritePalette_183, ANIM_TAG_SLASH }, - { gBattleAnimSpritePalette_184, ANIM_TAG_FOCUS_ENERGY }, - { gBattleAnimSpritePalette_185, ANIM_TAG_SPHERE_TO_CUBE }, - { gBattleAnimSpritePalette_186, ANIM_TAG_TENDRILS }, - { gBattleAnimSpritePalette_187, ANIM_TAG_EYE }, - { gBattleAnimSpritePalette_188, ANIM_TAG_WHITE_SHADOW }, - { gBattleAnimSpritePalette_189, ANIM_TAG_TEAL_ALERT }, - { gBattleAnimSpritePalette_190, ANIM_TAG_OPENING_EYE }, - { gBattleAnimSpritePalette_191, ANIM_TAG_ROUND_WHITE_HALO }, - { gBattleAnimSpritePalette_192, ANIM_TAG_FANG_ATTACK }, - { gBattleAnimSpritePalette_193, ANIM_TAG_PURPLE_HAND_OUTLINE }, - { gBattleAnimSpritePalette_194, ANIM_TAG_MOON }, - { gBattleAnimSpritePalette_195, ANIM_TAG_SPARKLE_5 }, - { gBattleAnimSpritePalette_196, ANIM_TAG_SPIRAL }, - { gBattleAnimSpritePalette_197, ANIM_TAG_SNORE_Z }, - { gBattleAnimSpritePalette_198, ANIM_TAG_EXPLOSION }, - { gBattleAnimSpritePalette_199, ANIM_TAG_NAIL }, - { gBattleAnimSpritePalette_200, ANIM_TAG_GHOSTLY_SPIRIT }, - { gBattleAnimSpritePalette_201, ANIM_TAG_WARM_ROCK }, - { gBattleAnimSpritePalette_202, ANIM_TAG_BREAKING_EGG }, - { gBattleAnimSpritePalette_203, ANIM_TAG_THIN_RING }, - { gBattleAnimSpritePalette_204, ANIM_TAG_UNUSED_PUNCH_IMPACT }, - { gBattleAnimSpritePalette_205, ANIM_TAG_BELL }, - { gBattleAnimSpritePalette_206, ANIM_TAG_MUSIC_NOTES_2 }, - { gBattleAnimSpritePalette_207, ANIM_TAG_SPEED_DUST }, - { gBattleAnimSpritePalette_167, ANIM_TAG_TORN_METAL }, - { gBattleAnimSpritePalette_209, ANIM_TAG_THOUGHT_BUBBLE }, - { gBattleAnimSpritePalette_210, ANIM_TAG_MAGENTA_HEART }, - { gBattleAnimSpritePalette_211, ANIM_TAG_ELECTRIC_ORBS }, - { gBattleAnimSpritePalette_211, ANIM_TAG_CIRCLE_OF_LIGHT }, - { gBattleAnimSpritePalette_211, ANIM_TAG_ELECTRICITY }, - { gBattleAnimSpritePalette_064, ANIM_TAG_FINGER_2 }, - { gBattleAnimSpritePalette_215, ANIM_TAG_MOVEMENT_WAVES }, - { gBattleAnimSpritePalette_216, ANIM_TAG_RED_HEART }, - { gBattleAnimSpritePalette_217, ANIM_TAG_RED_ORB }, - { gBattleAnimSpritePalette_218, ANIM_TAG_EYE_SPARKLE }, - { gBattleAnimSpritePalette_219, ANIM_TAG_PINK_HEART }, - { gBattleAnimSpritePalette_220, ANIM_TAG_ANGEL }, - { gBattleAnimSpritePalette_221, ANIM_TAG_DEVIL }, - { gBattleAnimSpritePalette_222, ANIM_TAG_SWIPE }, - { gBattleAnimSpritePalette_223, ANIM_TAG_ROOTS }, - { gBattleAnimSpritePalette_224, ANIM_TAG_ITEM_BAG }, - { gBattleAnimSpritePalette_225, ANIM_TAG_JAGGED_MUSIC_NOTE }, - { gBattleAnimSpritePalette_226, ANIM_TAG_POKEBALL }, - { gBattleAnimSpritePalette_226, ANIM_TAG_SPOTLIGHT }, - { gBattleAnimSpritePalette_228, ANIM_TAG_LETTER_Z }, - { gBattleAnimSpritePalette_229, ANIM_TAG_RAPID_SPIN }, - { gBattleAnimSpritePalette_230, ANIM_TAG_TRI_FORCE_TRIANGLE }, - { gBattleAnimSpritePalette_231, ANIM_TAG_WISP_ORB }, - { gBattleAnimSpritePalette_231, ANIM_TAG_WISP_FIRE }, - { gBattleAnimSpritePalette_233, ANIM_TAG_GOLD_STARS }, - { gBattleAnimSpritePalette_234, ANIM_TAG_ECLIPSING_ORB }, - { gBattleAnimSpritePalette_235, ANIM_TAG_GRAY_ORB }, - { gBattleAnimSpritePalette_236, ANIM_TAG_BLUE_ORB }, - { gBattleAnimSpritePalette_237, ANIM_TAG_RED_ORB_2 }, - { gBattleAnimSpritePalette_238, ANIM_TAG_PINK_PETAL }, - { gBattleAnimSpritePalette_239, ANIM_TAG_PAIN_SPLIT }, - { gBattleAnimSpritePalette_240, ANIM_TAG_CONFETTI }, - { gBattleAnimSpritePalette_241, ANIM_TAG_GREEN_STAR }, - { gBattleAnimSpritePalette_242, ANIM_TAG_PINK_CLOUD }, - { gBattleAnimSpritePalette_243, ANIM_TAG_SWEAT_DROP }, - { gBattleAnimSpritePalette_244, ANIM_TAG_GUARD_RING }, - { gBattleAnimSpritePalette_245, ANIM_TAG_PURPLE_SCRATCH }, - { gBattleAnimSpritePalette_245, ANIM_TAG_PURPLE_SWIPE }, - { gBattleAnimSpritePalette_064, ANIM_TAG_TAG_HAND }, - { gBattleAnimSpritePalette_248, ANIM_TAG_SMALL_RED_EYE }, - { gBattleAnimSpritePalette_249, ANIM_TAG_HOLLOW_ORB }, - { gBattleAnimSpritePalette_249, ANIM_TAG_X_SIGN }, - { gBattleAnimSpritePalette_251, ANIM_TAG_BLUEGREEN_ORB }, - { gBattleAnimSpritePalette_252, ANIM_TAG_PAW_PRINT }, - { gBattleAnimSpritePalette_253, ANIM_TAG_PURPLE_FLAME }, - { gBattleAnimSpritePalette_254, ANIM_TAG_RED_BALL }, - { gBattleAnimSpritePalette_255, ANIM_TAG_SMELLINGSALT_EFFECT }, - { gBattleAnimSpritePalette_256, ANIM_TAG_METEOR }, - { gBattleAnimSpritePalette_257, ANIM_TAG_FLAT_ROCK }, - { gBattleAnimSpritePalette_258, ANIM_TAG_MAGNIFYING_GLASS }, - { gBattleAnimSpritePalette_259, ANIM_TAG_BROWN_ORB }, - { gBattleAnimSpritePalette_260, ANIM_TAG_METAL_SOUND_WAVES }, - { gBattleAnimSpritePalette_261, ANIM_TAG_FLYING_DIRT }, - { gBattleAnimSpritePalette_262, ANIM_TAG_ICICLE_SPEAR }, - { gBattleAnimSpritePalette_263, ANIM_TAG_HAIL }, - { gBattleAnimSpritePalette_264, ANIM_TAG_GLOWY_RED_ORB }, - { gBattleAnimSpritePalette_265, ANIM_TAG_GLOWY_GREEN_ORB }, - { gBattleAnimSpritePalette_266, ANIM_TAG_GREEN_SPIKE }, - { gBattleAnimSpritePalette_267, ANIM_TAG_WHITE_CIRCLE_OF_LIGHT }, - { gBattleAnimSpritePalette_268, ANIM_TAG_GLOWY_BLUE_ORB }, - { gBattleAnimSpritePalette_269, ANIM_TAG_UNUSED_RED_BRICK }, - { gBattleAnimSpritePalette_270, ANIM_TAG_WHITE_FEATHER }, - { gBattleAnimSpritePalette_271, ANIM_TAG_SPARKLE_6 }, - { gBattleAnimSpritePalette_272, ANIM_TAG_SPLASH }, - { gBattleAnimSpritePalette_272, ANIM_TAG_SWEAT_BEAD }, - { gBattleAnimSpritePalette_274, ANIM_TAG_UNUSED_GEM_1 }, - { gBattleAnimSpritePalette_274, ANIM_TAG_UNUSED_GEM_2 }, - { gBattleAnimSpritePalette_274, ANIM_TAG_UNUSED_GEM_3 }, - { gBattleAnimSpritePalette_277, ANIM_TAG_SLAM_HIT_2 }, - { gBattleAnimSpritePalette_278, ANIM_TAG_RECYCLE }, - { gBattleAnimSpritePalette_279, ANIM_TAG_UNUSED_RED_PARTICLES }, - { gBattleAnimSpritePalette_280, ANIM_TAG_PROTECT }, - { gBattleAnimSpritePalette_281, ANIM_TAG_DIRT_MOUND }, - { gBattleAnimSpritePalette_282, ANIM_TAG_SHOCK_3 }, - { gBattleAnimSpritePalette_283, ANIM_TAG_WEATHER_BALL }, - { gBattleAnimSpritePalette_284, ANIM_TAG_BIRD }, - { gBattleAnimSpritePalette_285, ANIM_TAG_CROSS_IMPACT }, - { gBattleAnimSpritePalette_286, ANIM_TAG_SLASH_2 }, - { gBattleAnimSpritePalette_287, ANIM_TAG_WHIP_HIT }, - { gBattleAnimSpritePalette_288, ANIM_TAG_BLUE_RING_2 }, -}; - -const struct BattleAnimBackground gBattleAnimBackgroundTable[] = -{ - &gBattleAnimBackgroundImage_00, &gBattleAnimBackgroundPalette_00, &gBattleAnimBackgroundTilemap_00, - &gBattleAnimBackgroundImage_00, &gBattleAnimBackgroundPalette_00, &gBattleAnimBackgroundTilemap_00, - &gBattleAnimBackgroundImage_02, &gBattleAnimBackgroundPalette_02, &gBattleAnimBackgroundTilemap_02, - &gBattleAnimBackgroundImage_03, &gBattleAnimBackgroundPalette_03, &gBattleAnimBackgroundTilemap_03, - &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_04, &gBattleAnimBackgroundTilemap_04, - &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_04, &gBattleAnimBackgroundTilemap_05, - &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_04, &gBattleAnimBackgroundTilemap_06, - &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_07, &gBattleAnimBackgroundTilemap_07, - &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_07, &gBattleAnimBackgroundTilemap_08, - &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_09, &gBattleAnimBackgroundTilemap_09, - &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_09, &gBattleAnimBackgroundTilemap_10, - &gBattleAnimBackgroundImage_11, &gBattleAnimBackgroundPalette_11, &gBattleAnimBackgroundTilemap_11, - &gBattleAnimBackgroundImage_12, &gBattleAnimBackgroundPalette_12, &gBattleAnimBackgroundTilemap_12, - &gBattleAnimBackgroundImage_12, &gBattleAnimBackgroundPalette_12, &gBattleAnimBackgroundTilemap_13, - &gBattleAnimBackgroundImage_12, &gBattleAnimBackgroundPalette_12, &gBattleAnimBackgroundTilemap_14, - &gBattleAnimBackgroundImage_15, &gBattleAnimBackgroundPalette_15, &gBattleAnimBackgroundTilemap_15, - &gBattleAnimBackgroundImage_16, &gBattleAnimBackgroundPalette_16, &gBattleAnimBackgroundTilemap_16, - &gBattleAnimBackgroundImage_17, &gBattleAnimBackgroundPalette_17, &gBattleAnimBackgroundTilemap_17, - &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_18, &gBattleAnimBackgroundTilemap_07, - &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_18, &gBattleAnimBackgroundTilemap_08, - &gBattleAnimBackgroundImage_20, &gBattleAnimBackgroundPalette_20, &gBattleAnimBackgroundTilemap_20, - &gBattleAnimBackgroundImage_21, &gBattleAnimBackgroundPalette_21, &gBattleAnimBackgroundTilemap_21, - &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_22, &gBattleAnimBackgroundTilemap_09, - &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_22, &gBattleAnimBackgroundTilemap_10, - &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_24, &gBattleAnimBackgroundTilemap_04, - &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_24, &gBattleAnimBackgroundTilemap_05, - &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_24, &gBattleAnimBackgroundTilemap_06, -}; - -extern u16 gBattlerPartyIndexes[4]; -extern u8 gBankSpriteIds[]; -extern u8 gBankAttacker; -extern u8 gBankTarget; - -// sBattleAnimScriptPtr is a pointer to the next set of battle script commands. -EWRAM_DATA const u8 *sBattleAnimScriptPtr = NULL; -EWRAM_DATA const u8 *gBattleAnimScriptRetAddr = NULL; -EWRAM_DATA void (*gAnimScriptCallback)(void) = NULL; -EWRAM_DATA s8 gAnimFramesToWait = 0; -EWRAM_DATA u8 gAnimScriptActive = FALSE; -EWRAM_DATA u8 gAnimVisualTaskCount = 0; -EWRAM_DATA u8 gAnimSoundTaskCount = 0; -EWRAM_DATA struct DisableStruct *gAnimDisableStructPtr = NULL; -EWRAM_DATA s32 gAnimMoveDmg = 0; -EWRAM_DATA u16 gAnimMovePower = 0; -EWRAM_DATA u8 gAnimFriendship = 0; -EWRAM_DATA u16 gWeatherMoveAnim = 0; -EWRAM_DATA u8 gMonAnimTaskIdArray[2] = {0}; -EWRAM_DATA u8 gAnimMoveTurn = 0; -EWRAM_DATA u8 sAnimBackgroundFadeState = 0; -EWRAM_DATA u16 sAnimMoveIndex = 0; // set but unused. -EWRAM_DATA u8 gBattleAnimAttacker = 0; -EWRAM_DATA u8 gBattleAnimTarget = 0; -EWRAM_DATA u16 gAnimSpeciesByBanks[4] = {0}; -EWRAM_DATA u8 gUnknown_0202F7D2 = 0; // some global pan variable - -u16 gSoundAnimFramesToWait; -s16 gBattleAnimArgs[ANIM_ARGS_COUNT]; -u16 gAnimSpriteIndexArray[ANIM_SPRITE_INDEX_COUNT]; - -extern struct MusicPlayerInfo gMPlay_BGM; -extern struct MusicPlayerInfo gMPlay_SE1; -extern struct MusicPlayerInfo gMPlay_SE2; - -extern const u16 gSingingMoves[]; -extern const u8 *const gBattleAnims_Moves[]; - -static void RunAnimScriptCommand(void); -static void ScriptCmd_loadspritegfx(void); -static void ScriptCmd_unloadspritegfx(void); -static void ScriptCmd_createsprite(void); -static void ScriptCmd_createvisualtask(void); -static void ScriptCmd_delay(void); -static void ScriptCmd_waitforvisualfinish(void); -static void ScriptCmd_hang1(void); -static void ScriptCmd_hang2(void); -static void ScriptCmd_end(void); -static void ScriptCmd_playse(void); -static void ScriptCmd_monbg(void); -static void sub_8076380(void); -static void task_pA_ma0A_obj_to_bg_pal(u8); -static void ScriptCmd_clearmonbg(void); -static void sub_807672C(u8); -static void ScriptCmd_monbg_22(void); -static void ScriptCmd_clearmonbg_23(void); -static void sub_80769A4(u8); -static void ScriptCmd_setalpha(void); -static void ScriptCmd_setbldcnt(void); -static void ScriptCmd_blendoff(void); -static void ScriptCmd_call(void); -static void ScriptCmd_return(void); -static void ScriptCmd_setarg(void); -static void ScriptCmd_choosetwoturnanim(void); -static void ScriptCmd_jumpifmoveturn(void); -static void ScriptCmd_jump(void); -static void ScriptCmd_fadetobg(void); -static void ScriptCmd_fadetobgfromset(void); -static void Task_FadeToBg(u8); -static void LoadMoveBg(u16); -static void LoadDefaultBg(void); -static void ScriptCmd_restorebg(void); -static void ScriptCmd_waitbgfadeout(void); -static void ScriptCmd_waitbgfadein(void); -static void ScriptCmd_changebg(void); -static void ScriptCmd_playsewithpan(void); -static void ScriptCmd_setpan(void); -static void ScriptCmd_panse_1B(void); -static void Task_PanFromInitialToTarget(u8); -static void ScriptCmd_panse_26(void); -static void ScriptCmd_panse_27(void); -static void ScriptCmd_loopsewithpan(void); -static void Task_LoopAndPlaySE(u8); -static void ScriptCmd_waitplaysewithpan(void); -static void Task_WaitAndPlaySE(u8); -static void ScriptCmd_createsoundtask(void); -static void ScriptCmd_waitsound(void); -static void ScriptCmd_jumpargeq(void); -static void ScriptCmd_jumpifcontest(void); -static void ScriptCmd_monbgprio_28(void); -static void ScriptCmd_monbgprio_29(void); -static void ScriptCmd_monbgprio_2A(void); -static void ScriptCmd_invisible(void); -static void ScriptCmd_visible(void); -static void ScriptCmd_doublebattle_2D(void); -static void ScriptCmd_doublebattle_2E(void); -static void ScriptCmd_stopsound(void); - -static void (*const sScriptCmdTable[])(void) = { - ScriptCmd_loadspritegfx, - ScriptCmd_unloadspritegfx, - ScriptCmd_createsprite, - ScriptCmd_createvisualtask, - ScriptCmd_delay, - ScriptCmd_waitforvisualfinish, - ScriptCmd_hang1, - ScriptCmd_hang2, - ScriptCmd_end, - ScriptCmd_playse, - ScriptCmd_monbg, - ScriptCmd_clearmonbg, - ScriptCmd_setalpha, - ScriptCmd_blendoff, - ScriptCmd_call, - ScriptCmd_return, - ScriptCmd_setarg, - ScriptCmd_choosetwoturnanim, - ScriptCmd_jumpifmoveturn, - ScriptCmd_jump, - ScriptCmd_fadetobg, - ScriptCmd_restorebg, - ScriptCmd_waitbgfadeout, - ScriptCmd_waitbgfadein, - ScriptCmd_changebg, - ScriptCmd_playsewithpan, - ScriptCmd_setpan, - ScriptCmd_panse_1B, - ScriptCmd_loopsewithpan, - ScriptCmd_waitplaysewithpan, - ScriptCmd_setbldcnt, - ScriptCmd_createsoundtask, - ScriptCmd_waitsound, - ScriptCmd_jumpargeq, - ScriptCmd_monbg_22, - ScriptCmd_clearmonbg_23, - ScriptCmd_jumpifcontest, - ScriptCmd_fadetobgfromset, - ScriptCmd_panse_26, - ScriptCmd_panse_27, - ScriptCmd_monbgprio_28, - ScriptCmd_monbgprio_29, - ScriptCmd_monbgprio_2A, - ScriptCmd_invisible, - ScriptCmd_visible, - ScriptCmd_doublebattle_2D, - ScriptCmd_doublebattle_2E, - ScriptCmd_stopsound, -}; - -void ClearBattleAnimationVars(void) -{ - s32 i; - - gAnimFramesToWait = 0; - gAnimScriptActive = FALSE; - gAnimVisualTaskCount = 0; - gAnimSoundTaskCount = 0; - gAnimDisableStructPtr = NULL; - gAnimMoveDmg = 0; - gAnimMovePower = 0; - gAnimFriendship = 0; - - // clear index array. - for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++) - gAnimSpriteIndexArray[i] |= 0xFFFF; - - // clear anim args. - for (i = 0; i < ANIM_ARGS_COUNT; i++) - gBattleAnimArgs[i] = 0; - - gMonAnimTaskIdArray[0] = 0xFF; - gMonAnimTaskIdArray[1] = 0xFF; - gAnimMoveTurn = 0; - sAnimBackgroundFadeState = 0; - sAnimMoveIndex = 0; - gBattleAnimAttacker = 0; - gBattleAnimTarget = 0; - gUnknown_0202F7D2 = 0; -} - -void DoMoveAnim(u16 move) -{ - gBattleAnimAttacker = gBankAttacker; - gBattleAnimTarget = gBankTarget; - LaunchBattleAnimation(gBattleAnims_Moves, move, TRUE); -} - -void LaunchBattleAnimation(const u8 *const moveAnims[], u16 move, u8 isMoveAnim) -{ - s32 i; - - if (!IsContest()) - { - UpdateBattlerSpritePriorities(); - UpdateOamPriorityInAllHealthboxes(0); - for (i = 0; i < 4; i++) - { - if (GetBattlerSide(i) != 0) - gAnimSpeciesByBanks[i] = GetMonData(&gEnemyParty[gBattlerPartyIndexes[i]], MON_DATA_SPECIES); - else - gAnimSpeciesByBanks[i] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_SPECIES); - } - } - else - { - for (i = 0; i < 4; i++) - gAnimSpeciesByBanks[i] = EWRAM_19348[0]; - } - - if (isMoveAnim == 0) - sAnimMoveIndex = 0; - else - sAnimMoveIndex = move; - - for (i = 0; i < ANIM_ARGS_COUNT; i++) - gBattleAnimArgs[i] = 0; - - gMonAnimTaskIdArray[0] = 0xFF; - gMonAnimTaskIdArray[1] = 0xFF; - sBattleAnimScriptPtr = moveAnims[move]; - gAnimScriptActive = TRUE; - gAnimFramesToWait = 0; - gAnimScriptCallback = RunAnimScriptCommand; - - for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++) - gAnimSpriteIndexArray[i] |= 0xFFFF; - - if (isMoveAnim) - { - for (i = 0; gSingingMoves[i] != 0xFFFF; i++) - { - if (move == gSingingMoves[i]) - { - // Lower the volume for the short song that gets played. - m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 128); - break; - } - } - } - - gBattle_WIN0H = 0; - gBattle_WIN0V = 0; - gBattle_WIN1H = 0; - gBattle_WIN1V = 0; -} - -void DestroyAnimSprite(struct Sprite *sprite) -{ - FreeSpriteOamMatrix(sprite); - DestroySprite(sprite); - gAnimVisualTaskCount--; -} - -void DestroyAnimVisualTask(u8 taskId) -{ - DestroyTask(taskId); - gAnimVisualTaskCount--; -} - -void DestroyAnimSoundTask(u8 taskId) -{ - DestroyTask(taskId); - gAnimSoundTaskCount--; -} - -static void AddSpriteIndex(u16 index) -{ - s32 i; - - for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++) - { - if (gAnimSpriteIndexArray[i] == 0xFFFF) - { - gAnimSpriteIndexArray[i] = index; - return; - } - } -} - -static void ClearSpriteIndex(u16 index) -{ - s32 i; - - for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++) - { - if (gAnimSpriteIndexArray[i] == index) - { - gAnimSpriteIndexArray[i] |= 0xFFFF; - return; - } - } -} - -static void WaitAnimFrameCount(void) -{ - if (gAnimFramesToWait <= 0) - { - gAnimScriptCallback = RunAnimScriptCommand; - gAnimFramesToWait = 0; - } - else - { - gAnimFramesToWait--; - } -} - -static void RunAnimScriptCommand(void) -{ - do - { - sScriptCmdTable[T1_READ_8(sBattleAnimScriptPtr)](); - } while (gAnimFramesToWait == 0 && gAnimScriptActive); -} - -// Loads sprite graphics used in a move into memory. -// arg 0: gfx ANIM_TAG -static void ScriptCmd_loadspritegfx(void) -{ - u16 tag; - - sBattleAnimScriptPtr++; - tag = T1_READ_16(sBattleAnimScriptPtr); - LoadCompressedObjectPic(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(tag)]); - LoadCompressedObjectPalette(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(tag)]); - sBattleAnimScriptPtr += 2; - AddSpriteIndex(GET_TRUE_SPRITE_INDEX(tag)); - gAnimFramesToWait = 1; - gAnimScriptCallback = WaitAnimFrameCount; -} - -// Frees sprite graphics from memory when move animation no longer needs them. -// arg0: gfx ANIM_TAG -static void ScriptCmd_unloadspritegfx(void) -{ - u16 tag; - - sBattleAnimScriptPtr++; - tag = T1_READ_16(sBattleAnimScriptPtr); - FreeSpriteTilesByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(tag)].tag); - FreeSpritePaletteByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(tag)].tag); - sBattleAnimScriptPtr += 2; - ClearSpriteIndex(GET_TRUE_SPRITE_INDEX(tag)); -} - -// Creates a sprite from the given sprite template. -// arg0: SpriteTemplate -// arg1: s16[] gBattleAnimArgs -static void ScriptCmd_createsprite(void) -{ - s32 i; - const struct SpriteTemplate *template; - u8 argVar; - u8 argsCount; - s16 subpriority; - - sBattleAnimScriptPtr++; - template = (const struct SpriteTemplate *)(T2_READ_32(sBattleAnimScriptPtr)); - sBattleAnimScriptPtr += 4; - - argVar = T1_READ_8(sBattleAnimScriptPtr); - sBattleAnimScriptPtr++; - - argsCount = T1_READ_8(sBattleAnimScriptPtr); - sBattleAnimScriptPtr++; - for (i = 0; i < argsCount; i++) - { - gBattleAnimArgs[i] = T1_READ_16(sBattleAnimScriptPtr); - sBattleAnimScriptPtr += 2; - } - - if (argVar & 0x80) - { - argVar ^= 0x80; - if (argVar >= 0x40) - argVar -= 0x40; - else - argVar *= -1; - - subpriority = GetBattlerSubpriority(gBattleAnimTarget) + (s8)(argVar); - } - else - { - if (argVar >= 0x40) - argVar -= 0x40; - else - argVar *= -1; - - subpriority = GetBattlerSubpriority(gBattleAnimAttacker) + (s8)(argVar); - } - - if (subpriority < 3) - subpriority = 3; - - CreateSpriteAndAnimate(template, GetBattlerSpriteCoord(gBattleAnimTarget, 2), GetBattlerSpriteCoord(gBattleAnimTarget, 3), subpriority); - gAnimVisualTaskCount++; -} - -// Initializes an animation task. -// arg0: AnimTask function -// arg1: s16[] arguments -static void ScriptCmd_createvisualtask(void) -{ - TaskFunc taskFunc; - u8 taskPriority; - u8 taskId; - u8 numArgs; - s32 i; - - sBattleAnimScriptPtr++; - - taskFunc = (TaskFunc)T2_READ_32(sBattleAnimScriptPtr); - sBattleAnimScriptPtr += 4; - - taskPriority = T1_READ_8(sBattleAnimScriptPtr); - sBattleAnimScriptPtr++; - - numArgs = T1_READ_8(sBattleAnimScriptPtr); - sBattleAnimScriptPtr++; - - for (i = 0; i < numArgs; i++) - { - gBattleAnimArgs[i] = T1_READ_16(sBattleAnimScriptPtr); - sBattleAnimScriptPtr += 2; - } - - taskId = CreateTask(taskFunc, taskPriority); - taskFunc(taskId); - gAnimVisualTaskCount++; -} - -// Creates a visual delay. -// arg0: number of frames to wait. -static void ScriptCmd_delay(void) -{ - sBattleAnimScriptPtr++; - gAnimFramesToWait = T1_READ_8(sBattleAnimScriptPtr); - if (gAnimFramesToWait == 0) - gAnimFramesToWait = -1; - sBattleAnimScriptPtr++; - gAnimScriptCallback = WaitAnimFrameCount; -} - -// Wait for visual tasks to finish. -static void ScriptCmd_waitforvisualfinish(void) -{ - if (gAnimVisualTaskCount == 0) - { - sBattleAnimScriptPtr++; - gAnimFramesToWait = 0; - } - else - { - gAnimFramesToWait = 1; - } -} - -static void ScriptCmd_hang1(void) -{ -} - -static void ScriptCmd_hang2(void) -{ -} - -// Marks the end of an animation. Finishes the anims, tasks, and sound effects. -// started during an animaiton. -static void ScriptCmd_end(void) -{ - s32 i; - bool32 continuousAnim = FALSE; - - // keep waiting as long as there is animations to be done. - if (gAnimVisualTaskCount != 0 || gAnimSoundTaskCount != 0 - || gMonAnimTaskIdArray[0] != 0xFF || gMonAnimTaskIdArray[1] != 0xFF) - { - gSoundAnimFramesToWait = 0; - gAnimFramesToWait = 1; - return; - } - - // finish the sound effects. - if (IsSEPlaying()) - { - if (++gSoundAnimFramesToWait <= 90) // wait 90 frames, then halt the sound effect. - { - gAnimFramesToWait = 1; - return; - } - else - { - m4aMPlayStop(&gMPlay_SE1); - m4aMPlayStop(&gMPlay_SE2); - } - } - - // the SE has halted, so set the SE Frame Counter to 0 and continue. - gSoundAnimFramesToWait = 0; - - for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++) - { - if (gAnimSpriteIndexArray[i] != 0xFFFF) - { - FreeSpriteTilesByTag(gBattleAnimPicTable[gAnimSpriteIndexArray[i]].tag); - FreeSpritePaletteByTag(gBattleAnimPicTable[gAnimSpriteIndexArray[i]].tag); - gAnimSpriteIndexArray[i] |= 0xFFFF; // set terminator. - } - } - - if (!continuousAnim) // may have been used for debug? - { - m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256); - if (IsContest() == 0) - { - UpdateBattlerSpritePriorities(); - UpdateOamPriorityInAllHealthboxes(1); - } - gAnimScriptActive = FALSE; - } -} - -// Plays a sound effect. -// arg0: sound effect ID -static void ScriptCmd_playse(void) -{ - sBattleAnimScriptPtr++; - PlaySE(T1_READ_16(sBattleAnimScriptPtr)); - sBattleAnimScriptPtr += 2; -} - -// -// arg0: battler -static void ScriptCmd_monbg(void) -{ - u8 animBank; - u8 bank; - u8 identity; - bool8 toBG_2; - u16 spriteId; - u8 taskId; - - sBattleAnimScriptPtr++; - animBank = T1_READ_8(sBattleAnimScriptPtr); - if (animBank == ANIM_BATTLER_ATTACKER) - animBank = ANIM_BATTLER_ATK_PARTNER; - else if (animBank == ANIM_BATTLER_TARGET) - animBank = ANIM_BATTLER_DEF_PARTNER; - - if (animBank == ANIM_BATTLER_ATTACKER || animBank == ANIM_BATTLER_ATK_PARTNER) - bank = gBattleAnimAttacker; - else - bank = gBattleAnimTarget; - - if (IsAnimBankSpriteVisible(bank)) - { - identity = GetBattlerPosition(bank); - identity += 0xFF; - if (identity <= 1 || IsContest() != 0) - toBG_2 = 0; - else - toBG_2 = 1; - - MoveBattlerSpriteToBG(bank, toBG_2); - spriteId = gBankSpriteIds[bank]; - taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10); - gTasks[taskId].data[0] = spriteId; - gTasks[taskId].data[1] = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x; - gTasks[taskId].data[2] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y; - if (toBG_2 == 0) - { - gTasks[taskId].data[3] = gBattle_BG1_X; - gTasks[taskId].data[4] = gBattle_BG1_Y; - } - else - { - gTasks[taskId].data[3] = gBattle_BG2_X; - gTasks[taskId].data[4] = gBattle_BG2_Y; - } - gTasks[taskId].data[5] = toBG_2; - gTasks[taskId].data[6] = bank; - gMonAnimTaskIdArray[0] = taskId; - - } - - bank ^= 2; - if (animBank >= ANIM_BATTLER_ATK_PARTNER && IsAnimBankSpriteVisible(bank)) - { - identity = GetBattlerPosition(bank); - identity += 0xFF; - if (identity <= 1 || IsContest() != 0) - toBG_2 = 0; - else - toBG_2 = 1; - MoveBattlerSpriteToBG(bank, toBG_2); - spriteId = gBankSpriteIds[bank]; - taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10); - gTasks[taskId].data[0] = spriteId; - gTasks[taskId].data[1] = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x; - gTasks[taskId].data[2] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y; - if (toBG_2 == 0) - { - gTasks[taskId].data[3] = gBattle_BG1_X; - gTasks[taskId].data[4] = gBattle_BG1_Y; - } - else - { - gTasks[taskId].data[3] = gBattle_BG2_X; - gTasks[taskId].data[4] = gBattle_BG2_Y; - } - - gTasks[taskId].data[5] = toBG_2; - gTasks[taskId].data[6] = bank; - gMonAnimTaskIdArray[1] = taskId; - } - - sBattleAnimScriptPtr++; -} - -bool8 IsAnimBankSpriteVisible(u8 bank) -{ - if (IsContest()) - { - if (bank == gBattleAnimAttacker) - return TRUE; - else - return FALSE; - } - if (!IsBankSpritePresent(bank)) - return FALSE; - if (IsContest()) - return TRUE; // this line wont ever be reached. - if (!(EWRAM_17800[bank].unk0 & 1) || !gSprites[gBankSpriteIds[bank]].invisible) - return TRUE; - - return FALSE; -} - -void MoveBattlerSpriteToBG(u8 bank, u8 toBG_2) -{ - u8 spriteId; - - if (toBG_2 == 0) - { - volatile u8 pointlessZero; - struct UnknownStruct2 s; - u8 r2; - - sub_8078914(&s); - DmaFill32Large(3, 0, s.unk0, 0x2000, 0x1000); - pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in? - pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in? - DmaFill16Defvars(3, 0xFF, (void *)s.unk4, 0x1000); - - REG_BG1CNT_BITFIELD.priority = 2; - REG_BG1CNT_BITFIELD.screenSize = 1; - REG_BG1CNT_BITFIELD.areaOverflowMode = 0; - - spriteId = gBankSpriteIds[bank]; - gBattle_BG1_X = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32; - if (IsContest() != 0 && IsSpeciesNotUnown(EWRAM_19348[0]) != 0) - gBattle_BG1_X--; - gBattle_BG1_Y = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32; - gSprites[gBankSpriteIds[bank]].invisible = TRUE; - - REG_BG1HOFS = gBattle_BG1_X; - REG_BG1VOFS = gBattle_BG1_Y; - - LoadPalette(gPlttBufferUnfaded + 0x100 + bank * 16, s.unk8 * 16, 32); - DmaCopy32Defvars(3, gPlttBufferUnfaded + 0x100 + bank * 16, (u16 *)PLTT + s.unk8 * 16, 32); - - if (IsContest() != 0) - r2 = 0; - else - r2 = GetBattlerPosition(bank); - sub_80E4EF8(0, 0, r2, s.unk8, (u32)s.unk0, (((s32)s.unk4 - VRAM) / 2048), REG_BG1CNT_BITFIELD.charBaseBlock); - if (IsContest() != 0) - sub_8076380(); - } - else - { - volatile u8 pointlessZero; - - DmaFill32Large(3, 0, (void *)(VRAM + 0x6000), 0x2000, 0x1000); - pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in? - pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in? - DmaFill32Defvars(3, 0, (void *)(VRAM + 0xF000), 0x800); - - REG_BG2CNT_BITFIELD.priority = 2; - REG_BG2CNT_BITFIELD.screenSize = 1; - REG_BG2CNT_BITFIELD.areaOverflowMode = 0; - - spriteId = gBankSpriteIds[bank]; - gBattle_BG2_X = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32; - gBattle_BG2_Y = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32; - gSprites[gBankSpriteIds[bank]].invisible = TRUE; - - REG_BG2HOFS = gBattle_BG2_X; - REG_BG2VOFS = gBattle_BG2_Y; - - LoadPalette(gPlttBufferUnfaded + 0x100 + bank * 16, 0x90, 32); - DmaCopy32Defvars(3, gPlttBufferUnfaded + 0x100 + bank * 16, (void *)(PLTT + 0x120), 32); - - sub_80E4EF8(0, 0, GetBattlerPosition(bank), 9, 0x6000, 0x1E, REG_BG2CNT_BITFIELD.charBaseBlock); - } -} - -static void sub_8076380(void) -{ - int i; - int j; - struct UnknownStruct2 s; - u16 *ptr; - - if (IsSpeciesNotUnown(EWRAM_19348[0])) - { - sub_8078914(&s); - ptr = s.unk4; - for (i = 0; i < 8; i++) - { - for (j = 0; j < 4; j++) - { - u16 temp = ptr[j + i * 32]; - - ptr[j + i * 32] = ptr[7 - j + i * 32]; - ptr[7 - j + i * 32] = temp; - } - } - for (i = 0; i < 8; i++) - { - for (j = 0; j < 8; j++) - ptr[j + i * 32] ^= 0x400; - } - } -} - -void sub_80763FC(u16 a, u16 *b, u32 c, u8 d) -{ - u8 i; - u8 j; - u32 r9; - - if (d == 0) - r9 = 32; - else - r9 = 64; - a <<= 12; - for (i = 0; i < r9; i++) - { - for (j = 0; j < 32; j++) - b[j + i * 32] = ((b[j + i * 32] & 0xFFF) | a) + c; - } -} - -void sub_8076464(u8 a) -{ - volatile u8 pointlessZero; - struct UnknownStruct2 s; - - sub_8078914(&s); - if (a == 0 || IsContest() != 0) - { - DmaFill32Large(3, 0, s.unk0, 0x2000, 0x1000); - pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in? - pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in? - DmaFill32Defvars(3, 0, s.unk4, 0x800); - gBattle_BG1_X = 0; - gBattle_BG1_Y = 0; - } - else - { - DmaFill32Large(3, 0, (void *)(VRAM + 0x6000), 0x2000, 0x1000); - pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in? - pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in? - DmaFill32Defvars(3, 0, (void *)(VRAM + 0xF000), 0x800); - gBattle_BG2_X = 0; - gBattle_BG2_Y = 0; - } -} - -static void task_pA_ma0A_obj_to_bg_pal(u8 taskId) -{ - u8 spriteId, palIndex; - s16 x, y; - struct UnknownStruct2 s; - - spriteId = gTasks[taskId].data[0]; - palIndex = gTasks[taskId].data[6]; - sub_8078914(&s); - x = gTasks[taskId].data[1] - (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x); - y = gTasks[taskId].data[2] - (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y); - - if (gTasks[taskId].data[5] == 0) - { - gBattle_BG1_X = x + gTasks[taskId].data[3]; - gBattle_BG1_Y = y + gTasks[taskId].data[4]; - DmaCopy32Defvars(3, gPlttBufferFaded + 0x100 + palIndex * 16, gPlttBufferFaded + 0x100 + s.unk8 * 16 - 256, 32); - } - else - { - gBattle_BG2_X = x + gTasks[taskId].data[3]; - gBattle_BG2_Y = y + gTasks[taskId].data[4]; - DmaCopy32Defvars(3, gPlttBufferFaded + 0x100 + palIndex * 16, gPlttBufferFaded + 0x100 - 112, 32); - } -} - -static void ScriptCmd_clearmonbg(void) -{ - u8 animBankId; - u8 bank; - u8 taskId; - - sBattleAnimScriptPtr++; - animBankId = T1_READ_8(sBattleAnimScriptPtr); - - if (animBankId == ANIM_BATTLER_ATTACKER) - animBankId = ANIM_BATTLER_ATK_PARTNER; - else if (animBankId == ANIM_BATTLER_TARGET) - animBankId = ANIM_BATTLER_DEF_PARTNER; - - if (animBankId == ANIM_BATTLER_ATTACKER || animBankId == ANIM_BATTLER_ATK_PARTNER) - bank = gBattleAnimAttacker; - else - bank = gBattleAnimTarget; - - if (gMonAnimTaskIdArray[0] != 0xFF) - gSprites[gBankSpriteIds[bank]].invisible = FALSE; - if (animBankId > 1 && gMonAnimTaskIdArray[1] != 0xFF) - gSprites[gBankSpriteIds[bank ^ 2]].invisible = FALSE; - else - animBankId = 0; - - taskId = CreateTask(sub_807672C, 5); - gTasks[taskId].data[0] = animBankId; - gTasks[taskId].data[2] = bank; - sBattleAnimScriptPtr++; -} - -static void sub_807672C(u8 taskId) -{ - u8 identity; - u8 to_BG2; - - gTasks[taskId].data[1]++; - if (gTasks[taskId].data[1] != 1) - { - identity = GetBattlerPosition(gTasks[taskId].data[2]); - identity += 0xFF; - if (identity <= 1 || IsContest() != 0) - to_BG2 = 0; - else - to_BG2 = 1; - if (gMonAnimTaskIdArray[0] != 0xFF) - { - sub_8076464(to_BG2); - DestroyTask(gMonAnimTaskIdArray[0]); - gMonAnimTaskIdArray[0] = 0xFF; - } - if (gTasks[taskId].data[0] > 1) - { - sub_8076464(to_BG2 ^ 1); - DestroyTask(gMonAnimTaskIdArray[1]); - gMonAnimTaskIdArray[1] = 0xFF; - } - DestroyTask(taskId); - } -} - -static void ScriptCmd_monbg_22(void) -{ - u8 animBankId; - u8 bank; - u8 identity; - u8 r1; - - sBattleAnimScriptPtr++; - animBankId = T1_READ_8(sBattleAnimScriptPtr); - - if (animBankId == ANIM_BATTLER_ATTACKER) - animBankId = ANIM_BATTLER_ATK_PARTNER; - else if (animBankId == ANIM_BATTLER_TARGET) - animBankId = ANIM_BATTLER_DEF_PARTNER; - - if (animBankId == ANIM_BATTLER_ATTACKER || animBankId == ANIM_BATTLER_ATK_PARTNER) - bank = gBattleAnimAttacker; - else - bank = gBattleAnimTarget; - - if (IsAnimBankSpriteVisible(bank)) - { - identity = GetBattlerPosition(bank); - identity += 0xFF; - if (identity <= 1 || IsContest() != 0) - r1 = 0; - else - r1 = 1; - MoveBattlerSpriteToBG(bank, r1); - gSprites[gBankSpriteIds[bank]].invisible = FALSE; - } - - bank ^= 2; - if (animBankId > ANIM_BATTLER_TARGET && IsAnimBankSpriteVisible(bank)) - { - identity = GetBattlerPosition(bank); - identity += 0xFF; - if (identity <= 1 || IsContest() != 0) - r1 = 0; - else - r1 = 1; - MoveBattlerSpriteToBG(bank, r1); - gSprites[gBankSpriteIds[bank]].invisible = FALSE; - } - sBattleAnimScriptPtr++; -} - -static void ScriptCmd_clearmonbg_23(void) -{ - u8 animBankId; - u8 bank; - u8 taskId; - - sBattleAnimScriptPtr++; - animBankId = T1_READ_8(sBattleAnimScriptPtr); - - if (animBankId == ANIM_BATTLER_ATTACKER) - animBankId = ANIM_BATTLER_ATK_PARTNER; - else if (animBankId == ANIM_BATTLER_TARGET) - animBankId = ANIM_BATTLER_DEF_PARTNER; - - if (animBankId == ANIM_BATTLER_ATTACKER || animBankId == ANIM_BATTLER_ATK_PARTNER) - bank = gBattleAnimAttacker; - else - bank = gBattleAnimTarget; - - if (IsAnimBankSpriteVisible(bank)) - gSprites[gBankSpriteIds[bank]].invisible = FALSE; - if (animBankId > 1 && IsAnimBankSpriteVisible(bank ^ 2)) - gSprites[gBankSpriteIds[bank ^ 2]].invisible = FALSE; - else - animBankId = 0; - - taskId = CreateTask(sub_80769A4, 5); - gTasks[taskId].data[0] = animBankId; - gTasks[taskId].data[2] = bank; - - sBattleAnimScriptPtr++; -} - -static void sub_80769A4(u8 taskId) -{ - u8 identity; - u8 bank; - u8 toBG_2; - - gTasks[taskId].data[1]++; - if (gTasks[taskId].data[1] != 1) - { - bank = gTasks[taskId].data[2]; - identity = GetBattlerPosition(bank); - identity += 0xFF; - if (identity <= 1 || IsContest() != 0) - toBG_2 = 0; - else - toBG_2 = 1; - if (IsAnimBankSpriteVisible(bank)) - sub_8076464(toBG_2); - if (gTasks[taskId].data[0] > 1 && IsAnimBankSpriteVisible(bank ^ 2)) - sub_8076464(toBG_2 ^ 1); - DestroyTask(taskId); - } -} - -// Sets transparency of sprite. -// arg0: sprite alpha value -// arg1: background alpha value -static void ScriptCmd_setalpha(void) -{ - u16 spriteAlpha, bgAlpha; - - sBattleAnimScriptPtr++; - spriteAlpha = *(sBattleAnimScriptPtr++); - bgAlpha = *(sBattleAnimScriptPtr++) << 8; - REG_BLDCNT = BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_EFFECT_BLEND; - REG_BLDALPHA = spriteAlpha | bgAlpha; -} - -static void ScriptCmd_setbldcnt(void) -{ - u16 half1, half2; - - sBattleAnimScriptPtr++; - half1 = *(sBattleAnimScriptPtr++); - half2 = *(sBattleAnimScriptPtr++) << 8; - REG_BLDCNT = half1 | half2; -} - -// Turns off alpha blending / semi transparency. -static void ScriptCmd_blendoff(void) -{ - sBattleAnimScriptPtr++; - REG_BLDCNT = 0; - REG_BLDALPHA = 0; -} - -// Calls another animation by resetting sBattleAnimScriptPtr. -// arg0: Function -static void ScriptCmd_call(void) -{ - sBattleAnimScriptPtr++; - gBattleAnimScriptRetAddr = sBattleAnimScriptPtr + 4; - sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr); -} - -// Returns to the function that called this. -static void ScriptCmd_return(void) -{ - sBattleAnimScriptPtr = gBattleAnimScriptRetAddr; -} - -// Sets a value into gBattleAnimArgs[8] -// arg0: index / arg number -// arg1: value to set -static void ScriptCmd_setarg(void) -{ - const u8 *addr = sBattleAnimScriptPtr; - u16 value; - u8 argId; - - sBattleAnimScriptPtr++; - argId = T1_READ_8(sBattleAnimScriptPtr); - sBattleAnimScriptPtr++; - value = T1_READ_16(sBattleAnimScriptPtr); - sBattleAnimScriptPtr = addr + 4; - gBattleAnimArgs[argId] = value; -} - -// Flips between the first and second step of a move with two turns. -// arg0: first turn animation -// arg1: second turn animation -static void ScriptCmd_choosetwoturnanim(void) -{ - sBattleAnimScriptPtr++; - if (gAnimMoveTurn & 1) - sBattleAnimScriptPtr += 4; - sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr); -} - -// Jump to specified step of multi turn moves. -// arg0: move turn -// arg1: turn animation -static void ScriptCmd_jumpifmoveturn(void) -{ - u8 toCheck; - - sBattleAnimScriptPtr++; - toCheck = T1_READ_8(sBattleAnimScriptPtr); - sBattleAnimScriptPtr++; - - if (toCheck == gAnimMoveTurn) - { - sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr); - } - else - { - sBattleAnimScriptPtr += 4; - } -} - -// Jump to another animation. -// arg0: new animation -static void ScriptCmd_jump(void) -{ - sBattleAnimScriptPtr++; - sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr); -} - -bool8 IsContest(void) -{ - if (!gMain.inBattle) - return TRUE; - else - return FALSE; -} - -#define tBackgroundId data[0] -#define tState data[10] - -// Fades the screen and sets new background image. -// arg0: background ID -static void ScriptCmd_fadetobg(void) -{ - u8 backgroundId; - u8 taskId; - - sBattleAnimScriptPtr++; - backgroundId = T1_READ_8(sBattleAnimScriptPtr); - sBattleAnimScriptPtr++; - taskId = CreateTask(Task_FadeToBg, 5); - gTasks[taskId].tBackgroundId = backgroundId; - sAnimBackgroundFadeState = 1; -} - -// Fades to background image based on context of move (contest, battle) -// arg0: opponent background image ID -// arg1: player background image ID -// arg2: contest background image ID -static void ScriptCmd_fadetobgfromset(void) -{ - u8 bg1, bg2, bg3; - u8 taskId; - - sBattleAnimScriptPtr++; - bg1 = sBattleAnimScriptPtr[0]; - bg2 = sBattleAnimScriptPtr[1]; - bg3 = sBattleAnimScriptPtr[2]; - sBattleAnimScriptPtr += 3; - taskId = CreateTask(Task_FadeToBg, 5); - - if (IsContest()) - gTasks[taskId].tBackgroundId = bg3; - else if (GetBattlerSide(gBattleAnimTarget) == 0) - gTasks[taskId].tBackgroundId = bg2; - else - gTasks[taskId].tBackgroundId = bg1; - - sAnimBackgroundFadeState = 1; -} - -static void Task_FadeToBg(u8 taskId) -{ - if (gTasks[taskId].tState == 0) - { - BeginHardwarePaletteFade(0xE8, 0, 0, 16, 0); - gTasks[taskId].tState++; - return; - } - if (gPaletteFade.active) - return; - if (gTasks[taskId].tState == 1) - { - gTasks[taskId].tState++; - sAnimBackgroundFadeState = 2; - } - else if (gTasks[taskId].tState == 2) - { - s16 bgId = (u16)gTasks[taskId].tBackgroundId; - - if (bgId == -1) - LoadDefaultBg(); - else - LoadMoveBg(bgId); - - BeginHardwarePaletteFade(0xE8, 0, 16, 0, 1); - gTasks[taskId].tState++; - return; - } - if (gPaletteFade.active) - return; - if (gTasks[taskId].tState == 3) - { - DestroyTask(taskId); - sAnimBackgroundFadeState = 0; - } -} - -static void LoadMoveBg(u16 bgId) -{ - if (IsContest()) - { - void *tilemap = gBattleAnimBackgroundTable[bgId].tilemap; - - LZDecompressWram(tilemap, IsContest() ? EWRAM_14800 : EWRAM_18000); - sub_80763FC(sub_80789BC(), IsContest() ? EWRAM_14800 : EWRAM_18000, 0x100, 0); - DmaCopy32Defvars(3, IsContest() ? EWRAM_14800 : EWRAM_18000, (void *)(VRAM + 0xD000), 0x800); - LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(VRAM + 0x2000)); - LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, sub_80789BC() * 16, 32); - } - else - { - LZDecompressVram(gBattleAnimBackgroundTable[bgId].tilemap, (void *)(VRAM + 0xD000)); - LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(VRAM + 0x8000)); - LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, 32, 32); - } -} - -static void LoadDefaultBg(void) -{ - if (IsContest()) - LoadContestBgAfterMoveAnim(); - else - DrawMainBattleBackground(); -} - -// Restores default background image. -static void ScriptCmd_restorebg(void) -{ - u8 taskId; - - sBattleAnimScriptPtr++; - taskId = CreateTask(Task_FadeToBg, 5); - gTasks[taskId].tBackgroundId = 0xFFFF; - sAnimBackgroundFadeState = 1; -} - -#undef tBackgroundId -#undef tState - -// Wait for background image fade out to compete. -static void ScriptCmd_waitbgfadeout(void) -{ - if (sAnimBackgroundFadeState == 2) - { - sBattleAnimScriptPtr++; - gAnimFramesToWait = 0; - } - else - { - gAnimFramesToWait = 1; - } -} - -// Wait for background image fade in to compete. -static void ScriptCmd_waitbgfadein(void) -{ - if (sAnimBackgroundFadeState == 0) - { - sBattleAnimScriptPtr++; - gAnimFramesToWait = 0; - } - else - { - gAnimFramesToWait = 1; - } -} - -// Change background. -// arg0: background image ID -static void ScriptCmd_changebg(void) -{ - sBattleAnimScriptPtr++; - LoadMoveBg(T1_READ_8(sBattleAnimScriptPtr)); - sBattleAnimScriptPtr++; -} - -//Weird control flow -/* -s8 BattleAnimAdjustPanning(s8 a) -{ - if (!IsContest() && (EWRAM_17810[gBattleAnimAttacker].unk0 & 0x10)) - { - a = GetBattlerSide(gBattleAnimAttacker) ? SOUND_PAN_ATTACKER : SOUND_PAN_TARGET; - } - //_08076FDC - else - { - if (IsContest()) - { - if (gBattleAnimAttacker == gBattleAnimTarget && gBattleAnimAttacker == 2 - && a == SOUND_PAN_TARGET) - { - //jump to _0807707A - if (a < SOUND_PAN_ATTACKER_NEG) - a = SOUND_PAN_ATTACKER; - return a; - } - } - //_08077004 - else - { - if (GetBattlerSide(gBattleAnimAttacker) == 0) - { - if (GetBattlerSide(gBattleAnimTarget) == 0) - } - //_08077042 - else - { - - } - //_0807706C - } - } - //_0807706E -} -*/ -NAKED -s8 BattleAnimAdjustPanning(s8 a) -{ - asm(".syntax unified\n\ - push {r4,lr}\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - bl IsContest\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _08076FDC\n\ - ldr r0, _08076FD4 @ =gBattleAnimAttacker\n\ - ldrb r2, [r0]\n\ - lsls r0, r2, 1\n\ - adds r0, r2\n\ - lsls r0, 2\n\ - ldr r1, _08076FD8 @ =gSharedMem + 0x17810\n\ - adds r0, r1\n\ - ldrb r1, [r0]\n\ - movs r0, 0x10\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08076FDC\n\ - adds r0, r2, 0\n\ - bl GetBattlerSide\n\ - lsls r0, 24\n\ - movs r4, 0xC0\n\ - cmp r0, 0\n\ - beq _0807706E\n\ - movs r4, 0x3F\n\ - b _0807706E\n\ - .align 2, 0\n\ -_08076FD4: .4byte gBattleAnimAttacker\n\ -_08076FD8: .4byte gSharedMem + 0x17810\n\ -_08076FDC:\n\ - bl IsContest\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _08077004\n\ - ldr r0, _08076FFC @ =gBattleAnimAttacker\n\ - ldr r1, _08077000 @ =gBattleAnimTarget\n\ - ldrb r0, [r0]\n\ - ldrb r1, [r1]\n\ - cmp r0, r1\n\ - bne _08077068\n\ - cmp r0, 0x2\n\ - bne _08077068\n\ - cmp r4, 0x3F\n\ - beq _0807707A\n\ - b _08077068\n\ - .align 2, 0\n\ -_08076FFC: .4byte gBattleAnimAttacker\n\ -_08077000: .4byte gBattleAnimTarget\n\ -_08077004:\n\ - ldr r0, _0807702C @ =gBattleAnimAttacker\n\ - ldrb r0, [r0]\n\ - bl GetBattlerSide\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _08077042\n\ - ldr r0, _08077030 @ =gBattleAnimTarget\n\ - ldrb r0, [r0]\n\ - bl GetBattlerSide\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _0807706E\n\ - lsls r0, r4, 24\n\ - asrs r1, r0, 24\n\ - cmp r1, 0x3F\n\ - bne _08077034\n\ - movs r4, 0xC0\n\ - b _0807706E\n\ - .align 2, 0\n\ -_0807702C: .4byte gBattleAnimAttacker\n\ -_08077030: .4byte gBattleAnimTarget\n\ -_08077034:\n\ - movs r0, 0x40\n\ - negs r0, r0\n\ - cmp r1, r0\n\ - beq _0807706E\n\ - negs r0, r1\n\ - lsls r0, 24\n\ - b _0807706C\n\ -_08077042:\n\ - ldr r0, _08077064 @ =gBattleAnimTarget\n\ - ldrb r0, [r0]\n\ - bl GetBattlerSide\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x1\n\ - bne _08077068\n\ - lsls r0, r4, 24\n\ - asrs r0, 24\n\ - movs r1, 0x40\n\ - negs r1, r1\n\ - cmp r0, r1\n\ - bne _0807706E\n\ - movs r4, 0x3F\n\ - b _0807706E\n\ - .align 2, 0\n\ -_08077064: .4byte gBattleAnimTarget\n\ -_08077068:\n\ - lsls r0, r4, 24\n\ - negs r0, r0\n\ -_0807706C:\n\ - lsrs r4, r0, 24\n\ -_0807706E:\n\ - lsls r0, r4, 24\n\ - asrs r0, 24\n\ - cmp r0, 0x3F\n\ - ble _0807707A\n\ - movs r4, 0x3F\n\ - b _08077088\n\ -_0807707A:\n\ - lsls r0, r4, 24\n\ - asrs r0, 24\n\ - movs r1, 0x40\n\ - negs r1, r1\n\ - cmp r0, r1\n\ - bge _08077088\n\ - movs r4, 0xC0\n\ -_08077088:\n\ - lsls r0, r4, 24\n\ - asrs r0, 24\n\ - pop {r4}\n\ - pop {r1}\n\ - bx r1\n\ - .syntax divided\n"); -} - -s8 BattleAnimAdjustPanning2(s8 pan) -{ - if (!IsContest() && (EWRAM_17810[gBattleAnimAttacker].unk0 & 0x10)) - { - if (GetBattlerSide(gBattleAnimAttacker) != 0) - pan = SOUND_PAN_TARGET; - else - pan = SOUND_PAN_ATTACKER; - } - else - { - if (GetBattlerSide(gBattleAnimAttacker) != 0 || IsContest() != 0) - pan = -pan; - } - return pan; -} - -s16 sub_8077104(s16 newPan, int oldPan) -{ - s16 var = newPan; - - if (var > SOUND_PAN_TARGET) - var = SOUND_PAN_TARGET; - else if (var < SOUND_PAN_ATTACKER_NEG) - var = SOUND_PAN_ATTACKER_NEG; - return var; -} - -s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan) -{ - u16 ret; - - if (sourcePan < targetPan) - ret = ((incrementPan < 0) ? -incrementPan : incrementPan); - else if (sourcePan > targetPan) - ret = -((incrementPan < 0) ? -incrementPan : incrementPan); - else - ret = 0; - - return ret; -} - -static void ScriptCmd_playsewithpan(void) -{ - u16 soundId; - s8 pan; - - sBattleAnimScriptPtr++; - soundId = T1_READ_16(sBattleAnimScriptPtr); - pan = T1_READ_8(sBattleAnimScriptPtr + 2); - PlaySE12WithPanning(soundId, BattleAnimAdjustPanning(pan)); - sBattleAnimScriptPtr += 3; -} - -static void ScriptCmd_setpan(void) -{ - s8 pan; - - sBattleAnimScriptPtr++; - pan = T1_READ_8(sBattleAnimScriptPtr); - SE12PanpotControl(BattleAnimAdjustPanning(pan)); - sBattleAnimScriptPtr++; -} - -#define tInitialPan data[0] -#define tTargetPan data[1] -#define tIncrementPan data[2] -#define tFramesToWait data[3] -#define tCurrentPan data[4] -#define tFrameCounter data[8] - -static void ScriptCmd_panse_1B(void) -{ - u16 songNum; - s8 currentPanArg, incrementPan, incrementPanArg, currentPan, targetPan; - u8 framesToWait; - u8 taskId; - - sBattleAnimScriptPtr++; - songNum = T1_READ_16(sBattleAnimScriptPtr); - currentPanArg = T1_READ_8(sBattleAnimScriptPtr + 2); - incrementPan = T1_READ_8(sBattleAnimScriptPtr + 3); - incrementPanArg = T1_READ_8(sBattleAnimScriptPtr + 4); - framesToWait = T1_READ_8(sBattleAnimScriptPtr + 5); - - currentPan = BattleAnimAdjustPanning(currentPanArg); - targetPan = BattleAnimAdjustPanning(incrementPan); - incrementPan = CalculatePanIncrement(currentPan, targetPan, incrementPanArg); - taskId = CreateTask(Task_PanFromInitialToTarget, 1); - gTasks[taskId].tInitialPan = currentPan; - gTasks[taskId].tTargetPan = targetPan; - gTasks[taskId].tIncrementPan = incrementPan; - gTasks[taskId].tFramesToWait = framesToWait; - gTasks[taskId].tCurrentPan = currentPan; - - PlaySE12WithPanning(songNum, currentPan); - - gAnimSoundTaskCount++; - sBattleAnimScriptPtr += 6; -} - -void Task_PanFromInitialToTarget(u8 taskId) -{ - bool32 destroyTask = FALSE; - if (gTasks[taskId].tFrameCounter++ >= gTasks[taskId].tFramesToWait) - { - s16 pan; - s16 initialPanning, targetPanning, currentPan, incrementPan; - - gTasks[taskId].tFrameCounter = 0; - initialPanning = gTasks[taskId].tInitialPan; - targetPanning = gTasks[taskId].tTargetPan; - currentPan = gTasks[taskId].tCurrentPan; - incrementPan = gTasks[taskId].tIncrementPan; - pan = currentPan + incrementPan; - gTasks[taskId].tCurrentPan = pan; - - if (incrementPan == 0) // If we're not incrementing, just cancel the task immediately - { - destroyTask = TRUE; - } - else if (initialPanning < targetPanning) // Panning increasing - { - if (pan >= targetPanning) // Target reached - destroyTask = TRUE; - } - else // Panning decreasing - { - if (pan <= targetPanning) // Target reached - destroyTask = TRUE; - } - - if (destroyTask) - { - pan = targetPanning; - DestroyTask(taskId); - gAnimSoundTaskCount--; - } - - SE12PanpotControl(pan); - } -} - -static void ScriptCmd_panse_26(void) -{ - u16 songId; - s8 currentPan, targetPan, incrementPan; - u8 framesToWait; - u8 taskId; - - sBattleAnimScriptPtr++; - songId = T1_READ_16(sBattleAnimScriptPtr); - currentPan = T1_READ_8(sBattleAnimScriptPtr + 2); - targetPan = T1_READ_8(sBattleAnimScriptPtr + 3); - incrementPan = T1_READ_8(sBattleAnimScriptPtr + 4); - framesToWait = T1_READ_8(sBattleAnimScriptPtr + 5); - - taskId = CreateTask(Task_PanFromInitialToTarget, 1); - gTasks[taskId].tInitialPan = currentPan; - gTasks[taskId].tTargetPan = targetPan; - gTasks[taskId].tIncrementPan = incrementPan; - gTasks[taskId].tFramesToWait = framesToWait; - gTasks[taskId].tCurrentPan = currentPan; - - PlaySE12WithPanning(songId, currentPan); - - gAnimSoundTaskCount++; - sBattleAnimScriptPtr += 6; -} - -static void ScriptCmd_panse_27(void) -{ - u16 songId; - u8 targetPanArg, incrementPanArg, currentPan, currentPanArg; - s8 targetPan, incrementPan, framesToWait; - u8 taskId; - - sBattleAnimScriptPtr++; - songId = T1_READ_16(sBattleAnimScriptPtr); - currentPanArg = T1_READ_8(sBattleAnimScriptPtr + 2); - targetPanArg = T1_READ_8(sBattleAnimScriptPtr + 3); - incrementPanArg = T1_READ_8(sBattleAnimScriptPtr + 4); - currentPan = T1_READ_8(sBattleAnimScriptPtr + 5); - - targetPan = BattleAnimAdjustPanning2(currentPanArg); - incrementPan = BattleAnimAdjustPanning2(targetPanArg); - framesToWait = BattleAnimAdjustPanning2(incrementPanArg); - - taskId = CreateTask(Task_PanFromInitialToTarget, 1); - gTasks[taskId].data[0] = targetPan; - gTasks[taskId].data[1] = incrementPan; - gTasks[taskId].data[2] = framesToWait; - gTasks[taskId].data[3] = currentPan; - gTasks[taskId].data[4] = targetPan; - - PlaySE12WithPanning(songId, targetPan); - - gAnimSoundTaskCount++; - sBattleAnimScriptPtr += 6; -} - -#undef tInitialPan -#undef tTargetPan -#undef tIncrementPan -#undef tFramesToWait -#undef tCurrentPan -#undef tFrameCounter - -#define tSongId data[0] -#define tPanning data[1] -#define tFramesToWait data[2] -#define tNumberOfPlays data[3] -#define tFrameCounter data[8] - -static void ScriptCmd_loopsewithpan(void) -{ - u16 songId; - s8 panningArg, panning; - u8 framesToWait, numberOfPlays; - u8 taskId; - - sBattleAnimScriptPtr++; - songId = T1_READ_16(sBattleAnimScriptPtr); - panningArg = T1_READ_8(sBattleAnimScriptPtr + 2); - framesToWait = T1_READ_8(sBattleAnimScriptPtr + 3); - numberOfPlays = T1_READ_8(sBattleAnimScriptPtr + 4); - panning = BattleAnimAdjustPanning(panningArg); - - taskId = CreateTask(Task_LoopAndPlaySE, 1); - gTasks[taskId].tSongId = songId; - gTasks[taskId].tPanning = panning; - gTasks[taskId].tFramesToWait = framesToWait; - gTasks[taskId].tNumberOfPlays = numberOfPlays; - gTasks[taskId].tFrameCounter = framesToWait; - gTasks[taskId].func(taskId); - - gAnimSoundTaskCount++; - sBattleAnimScriptPtr += 5; -} - -static void Task_LoopAndPlaySE(u8 taskId) -{ - if (gTasks[taskId].tFrameCounter++ >= gTasks[taskId].tFramesToWait) - { - u16 songId; - s8 panning; - u8 numberOfPlays; - - gTasks[taskId].tFrameCounter = 0; - songId = gTasks[taskId].tSongId; - panning = gTasks[taskId].tPanning; - numberOfPlays = --gTasks[taskId].tNumberOfPlays; - PlaySE12WithPanning(songId, panning); - if (numberOfPlays == 0) - { - DestroyTask(taskId); - gAnimSoundTaskCount--; - } - } -} - -#undef tSongId -#undef tPanning -#undef tFramesToWait -#undef tNumberOfPlays -#undef tFrameCounter - -#define tSongId data[0] -#define tPanning data[1] -#define tFramesToWait data[2] - -static void ScriptCmd_waitplaysewithpan(void) -{ - u16 songId; - s8 panningArg, panning; - u8 framesToWait; - u8 taskId; - - sBattleAnimScriptPtr++; - songId = T1_READ_16(sBattleAnimScriptPtr); - panningArg = T1_READ_8(sBattleAnimScriptPtr + 2); - framesToWait = T1_READ_8(sBattleAnimScriptPtr + 3); - panning = BattleAnimAdjustPanning(panningArg); - - taskId = CreateTask(Task_WaitAndPlaySE, 1); - gTasks[taskId].tSongId = songId; - gTasks[taskId].tPanning = panning; - gTasks[taskId].tFramesToWait = framesToWait; - - gAnimSoundTaskCount++; - sBattleAnimScriptPtr += 4; -} - -static void Task_WaitAndPlaySE(u8 taskId) -{ - if (gTasks[taskId].tFramesToWait-- <= 0) - { - PlaySE12WithPanning(gTasks[taskId].tSongId, gTasks[taskId].tPanning); - DestroyTask(taskId); - gAnimSoundTaskCount--; - } -} - -#undef tSongId -#undef tPanning -#undef tFramesToWait - -// Creates a sound task. -// arg0: sound task function -// arg1: s16[] gBattleAnimArgs -static void ScriptCmd_createsoundtask(void) -{ - TaskFunc func; - u8 numArgs, taskId; - s32 i; - - sBattleAnimScriptPtr++; - func = (TaskFunc)T2_READ_32(sBattleAnimScriptPtr); - sBattleAnimScriptPtr += 4; - numArgs = T1_READ_8(sBattleAnimScriptPtr); - sBattleAnimScriptPtr++; - for (i = 0; i < numArgs; i++) - { - gBattleAnimArgs[i] = T1_READ_16(sBattleAnimScriptPtr); - sBattleAnimScriptPtr += 2; - } - taskId = CreateTask(func, 1); - func(taskId); - gAnimSoundTaskCount++; -} - -// Wait for sound effect to end. -static void ScriptCmd_waitsound(void) -{ - if (gAnimSoundTaskCount != 0) - { - gSoundAnimFramesToWait = 0; - gAnimFramesToWait = 1; - } - else if (IsSEPlaying()) - { - if (++gSoundAnimFramesToWait > 90) - { - m4aMPlayStop(&gMPlay_SE1); - m4aMPlayStop(&gMPlay_SE2); - gSoundAnimFramesToWait = 0; - } - else - { - gAnimFramesToWait = 1; - } - } - else - { - gSoundAnimFramesToWait = 0; - sBattleAnimScriptPtr++; - gAnimFramesToWait = 0; - } -} - -// Jump to animation based on gBattleAnimArgs[index] value. -// arg0: gBattleAnimArgs[] argument index -// arg1: value -// arg2: animation script -static void ScriptCmd_jumpargeq(void) -{ - u8 argId; - s16 valueToCheck; - - sBattleAnimScriptPtr++; - argId = T1_READ_8(sBattleAnimScriptPtr); - valueToCheck = T1_READ_16(sBattleAnimScriptPtr + 1); - - if (valueToCheck == gBattleAnimArgs[argId]) - sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr + 3); - else - sBattleAnimScriptPtr += 7; -} - -// If using move in contest, go to specific animation script. -// arg0: animation script -static void ScriptCmd_jumpifcontest(void) -{ - sBattleAnimScriptPtr++; - if (IsContest()) - sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr); - else - sBattleAnimScriptPtr += 4; -} - -static void ScriptCmd_monbgprio_28(void) -{ - u8 wantedBank; - u8 bank; - u8 bankIdentity; - - wantedBank = T1_READ_8(sBattleAnimScriptPtr + 1); - sBattleAnimScriptPtr += 2; - - if (wantedBank != 0) - bank = gBattleAnimTarget; - else - bank = gBattleAnimAttacker; - - bankIdentity = GetBattlerPosition(bank); - if (!IsContest() && (bankIdentity == 0 || bankIdentity == 3)) - { - REG_BG1CNT_BITFIELD.priority = 1; - REG_BG2CNT_BITFIELD.priority = 2; - } -} - -static void ScriptCmd_monbgprio_29(void) -{ - sBattleAnimScriptPtr++; - if (!IsContest()) - { - REG_BG1CNT_BITFIELD.priority = 1; - REG_BG2CNT_BITFIELD.priority = 2; - } -} - -static void ScriptCmd_monbgprio_2A(void) -{ - u8 wantedBank; - u8 bankIdentity; - u8 bank; - - wantedBank = T1_READ_8(sBattleAnimScriptPtr + 1); - sBattleAnimScriptPtr += 2; - if (GetBattlerSide(gBattleAnimAttacker) != GetBattlerSide(gBattleAnimTarget)) - { - if (wantedBank != 0) - bank = gBattleAnimTarget; - else - bank = gBattleAnimAttacker; - bankIdentity = GetBattlerPosition(bank); - if (!IsContest() && (bankIdentity == 0 || bankIdentity == 3)) - { - REG_BG1CNT_BITFIELD.priority = 1; - REG_BG2CNT_BITFIELD.priority = 2; - } - } -} - -// Sets sprite to be invisible. -// arg0: battler sprite ID -static void ScriptCmd_invisible(void) -{ - u8 spriteId; - - spriteId = GetAnimBattlerSpriteId(T1_READ_8(sBattleAnimScriptPtr + 1)); - if (spriteId != 0xFF) - gSprites[spriteId].invisible = TRUE; - - sBattleAnimScriptPtr += 2; -} - -// Sets aprite to be visible. -// arg0: battler sprite ID -static void ScriptCmd_visible(void) -{ - u8 spriteId; - - spriteId = GetAnimBattlerSpriteId(T1_READ_8(sBattleAnimScriptPtr + 1)); - if (spriteId != 0xFF) - gSprites[spriteId].invisible = FALSE; - - sBattleAnimScriptPtr += 2; -} - -static void ScriptCmd_doublebattle_2D(void) -{ - u8 wantedBank; - u8 r4; - u8 spriteId; - - wantedBank = T1_READ_8(sBattleAnimScriptPtr + 1); - sBattleAnimScriptPtr += 2; - if (!IsContest() && IsDoubleBattle() - && GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget)) - { - if (wantedBank == 0) - { - r4 = GetBattlerPosition_permutated(gBattleAnimAttacker); - spriteId = GetAnimBattlerSpriteId(0); - } - else - { - r4 = GetBattlerPosition_permutated(gBattleAnimTarget); - spriteId = GetAnimBattlerSpriteId(1); - } - if (spriteId != 0xFF) - { - gSprites[spriteId].invisible = FALSE; - if (r4 == 2) - gSprites[spriteId].oam.priority = 3; - if (r4 == 1) - sub_8076464(0); - else - sub_8076464(1); - } - } -} - -static void ScriptCmd_doublebattle_2E(void) -{ - u8 wantedBank; - u8 r4; - u8 spriteId; - - wantedBank = T1_READ_8(sBattleAnimScriptPtr + 1); - sBattleAnimScriptPtr += 2; - if (!IsContest() && IsDoubleBattle() - && GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget)) - { - if (wantedBank == 0) - { - r4 = GetBattlerPosition_permutated(gBattleAnimAttacker); - spriteId = GetAnimBattlerSpriteId(0); - } - else - { - r4 = GetBattlerPosition_permutated(gBattleAnimTarget); - spriteId = GetAnimBattlerSpriteId(1); - } - if (spriteId != 0xFF && r4 == 2) - { - gSprites[spriteId].oam.priority = 2; - } - } -} - -// Cease playing sounds. -static void ScriptCmd_stopsound(void) -{ - m4aMPlayStop(&gMPlay_SE1); - m4aMPlayStop(&gMPlay_SE2); - sBattleAnimScriptPtr++; -} |