2017-10-14 16:55:25 +02:00
# include "global.h"
# include "battle.h"
# include "battle_anim.h"
2018-11-13 23:28:46 +01:00
# include "battle_controllers.h"
2017-10-14 16:55:25 +02:00
# include "battle_interface.h"
2018-11-13 23:28:46 +01:00
# include "bg.h"
# include "contest.h"
2017-10-14 16:55:25 +02:00
# include "decompress.h"
# include "dma3.h"
# include "gpu_regs.h"
2018-11-13 23:28:46 +01:00
# include "graphics.h"
2017-10-14 23:37:44 +02:00
# include "main.h"
2018-11-13 23:28:46 +01:00
# include "m4a.h"
# include "palette.h"
# include "pokemon.h"
# include "sound.h"
# include "sprite.h"
# include "task.h"
# include "constants/battle_anim.h"
2017-10-14 16:55:25 +02:00
# define ANIM_SPRITE_INDEX_COUNT 8
2018-01-10 04:30:54 +01:00
extern struct MusicPlayerInfo gMPlayInfo_BGM ;
extern struct MusicPlayerInfo gMPlayInfo_SE1 ;
extern struct MusicPlayerInfo gMPlayInfo_SE2 ;
2017-10-14 16:55:25 +02:00
2018-09-10 21:19:19 +02:00
extern const u16 gMovesWithQuietBGM [ ] ;
2018-09-15 00:30:20 +02:00
extern const u8 * const gBattleAnims_Moves [ ] ;
2017-10-14 16:55:25 +02:00
// this file's functions
2017-10-15 23:21:59 +02:00
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 ScriptCmd_clearmonbg ( void ) ;
static void ScriptCmd_setalpha ( 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 ) ;
2017-12-31 16:28:57 +01:00
static void ScriptCmd_goto ( void ) ;
2017-10-15 23:21:59 +02:00
static void ScriptCmd_fadetobg ( 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 ScriptCmd_loopsewithpan ( void ) ;
static void ScriptCmd_waitplaysewithpan ( void ) ;
static void ScriptCmd_setbldcnt ( void ) ;
static void ScriptCmd_createsoundtask ( void ) ;
static void ScriptCmd_waitsound ( void ) ;
static void ScriptCmd_jumpargeq ( void ) ;
static void ScriptCmd_monbg_22 ( void ) ;
static void ScriptCmd_clearmonbg_23 ( void ) ;
static void ScriptCmd_jumpifcontest ( void ) ;
static void ScriptCmd_fadetobgfromset ( void ) ;
static void ScriptCmd_panse_26 ( void ) ;
static void ScriptCmd_panse_27 ( 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 RunAnimScriptCommand ( void ) ;
static void task_pA_ma0A_obj_to_bg_pal ( u8 taskId ) ;
static void sub_80A46A0 ( void ) ;
static void sub_80A4980 ( u8 taskId ) ;
static void sub_80A4BB0 ( u8 taskId ) ;
static void Task_FadeToBg ( u8 taskId ) ;
static void Task_PanFromInitialToTarget ( u8 taskId ) ;
static void Task_LoopAndPlaySE ( u8 taskId ) ;
static void Task_WaitAndPlaySE ( u8 taskId ) ;
static void LoadDefaultBg ( void ) ;
static void LoadMoveBg ( u16 bgId ) ;
// ewram
EWRAM_DATA static const u8 * sBattleAnimScriptPtr = NULL ;
EWRAM_DATA static const u8 * sBattleAnimScriptRetAddr = NULL ;
EWRAM_DATA void ( * gAnimScriptCallback ) ( void ) = NULL ;
EWRAM_DATA static s8 gAnimFramesToWait = 0 ;
EWRAM_DATA bool8 gAnimScriptActive = FALSE ;
EWRAM_DATA u8 gAnimVisualTaskCount = 0 ;
EWRAM_DATA u8 gAnimSoundTaskCount = 0 ;
EWRAM_DATA struct DisableStruct * gAnimDisableStructPtr = NULL ;
2018-10-07 17:45:37 +02:00
EWRAM_DATA s32 gAnimMoveDmg = 0 ;
2017-10-15 23:21:59 +02:00
EWRAM_DATA u16 gAnimMovePower = 0 ;
EWRAM_DATA static u16 sAnimSpriteIndexArray [ ANIM_SPRITE_INDEX_COUNT ] = { 0 } ;
EWRAM_DATA u8 gAnimFriendship = 0 ;
EWRAM_DATA u16 gWeatherMoveAnim = 0 ;
EWRAM_DATA s16 gBattleAnimArgs [ ANIM_ARGS_COUNT ] = { 0 } ;
EWRAM_DATA static u16 sSoundAnimFramesToWait = 0 ;
EWRAM_DATA static u8 sMonAnimTaskIdArray [ 2 ] = { 0 } ;
EWRAM_DATA u8 gAnimMoveTurn = 0 ;
EWRAM_DATA static u8 sAnimBackgroundFadeState = 0 ;
2018-06-17 16:48:58 +02:00
EWRAM_DATA static u16 sAnimMoveIndex = 0 ; // Set but unused.
2018-02-06 20:48:02 +01:00
EWRAM_DATA u8 gBattleAnimAttacker = 0 ;
EWRAM_DATA u8 gBattleAnimTarget = 0 ;
2018-04-18 16:03:15 +02:00
EWRAM_DATA u16 gAnimBattlerSpecies [ MAX_BATTLERS_COUNT ] = { 0 } ;
2017-10-15 23:21:59 +02:00
EWRAM_DATA u8 gUnknown_02038440 = 0 ;
2018-10-22 04:30:20 +02:00
const struct OamData gUnknown_08524904 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_OFF ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 8 x8 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 8 x8 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_0852490C =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_OFF ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 16 x16 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 16 x16 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524914 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_OFF ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 32 x32 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 32 x32 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_0852491C =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_OFF ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 64 x64 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 64 x64 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524924 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_OFF ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 16 x8 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 16 x8 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_0852492C =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_OFF ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 32 x8 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 32 x8 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524934 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_OFF ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 32 x16 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 32 x16 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_0852493C =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_OFF ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 64 x32 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 64 x32 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524944 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_OFF ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 8 x16 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 8 x16 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_0852494C =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_OFF ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 8 x32 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 8 x32 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524954 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_OFF ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 16 x32 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 16 x32 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_0852495C =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_OFF ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 32 x64 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 32 x64 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524964 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_NORMAL ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 8 x8 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 8 x8 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_0852496C =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_NORMAL ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 16 x16 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 16 x16 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524974 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_NORMAL ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 32 x32 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 32 x32 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_0852497C =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_NORMAL ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 64 x64 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 64 x64 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524984 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_NORMAL ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 16 x8 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 16 x8 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_0852498C =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_NORMAL ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 32 x8 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 32 x8 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524994 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_NORMAL ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 32 x16 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 32 x16 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_0852499C =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_NORMAL ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 64 x32 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 64 x32 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_085249A4 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_NORMAL ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 8 x16 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 8 x16 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_085249AC =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_NORMAL ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 8 x32 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 8 x32 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_085249B4 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_NORMAL ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 16 x32 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 16 x32 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_085249BC =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_NORMAL ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 32 x64 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 32 x64 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_085249C4 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_DOUBLE ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 8 x8 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 8 x8 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_085249CC =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_DOUBLE ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 16 x16 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 16 x16 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_085249D4 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_DOUBLE ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 32 x32 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 32 x32 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_085249DC =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_DOUBLE ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 64 x64 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 64 x64 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_085249E4 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_DOUBLE ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 16 x8 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 16 x8 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_085249EC =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_DOUBLE ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 32 x8 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 32 x8 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_085249F4 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_DOUBLE ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 32 x16 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 32 x16 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_085249FC =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_DOUBLE ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 64 x32 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 64 x32 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524A04 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_DOUBLE ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 8 x16 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 8 x16 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524A0C =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_DOUBLE ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 8 x32 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 8 x32 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524A14 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_DOUBLE ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 16 x32 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 16 x32 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524A1C =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_DOUBLE ,
. objMode = ST_OAM_OBJ_NORMAL ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 32 x64 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 32 x64 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524A24 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_OFF ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 8 x8 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 8 x8 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524A2C =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_OFF ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 16 x16 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 16 x16 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524A34 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_OFF ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 32 x32 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 32 x32 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524A3C =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_OFF ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 64 x64 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 64 x64 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524A44 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_OFF ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 16 x8 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 16 x8 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524A4C =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_OFF ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 32 x8 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 32 x8 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524A54 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_OFF ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 32 x16 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 32 x16 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524A5C =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_OFF ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 64 x32 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 64 x32 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524A64 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_OFF ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 8 x16 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 8 x16 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524A6C =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_OFF ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 8 x32 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 8 x32 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524A74 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_OFF ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 16 x32 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 16 x32 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524A7C =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_OFF ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 32 x64 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 32 x64 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524A84 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_NORMAL ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 8 x8 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 8 x8 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524A8C =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_NORMAL ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 16 x16 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 16 x16 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524A94 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_NORMAL ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 32 x32 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 32 x32 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524A9C =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_NORMAL ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 64 x64 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 64 x64 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524AA4 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_NORMAL ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 16 x8 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 16 x8 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524AAC =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_NORMAL ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 32 x8 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 32 x8 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524AB4 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_NORMAL ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 32 x16 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 32 x16 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524ABC =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_NORMAL ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 64 x32 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 64 x32 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524AC4 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_NORMAL ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 8 x16 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 8 x16 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524ACC =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_NORMAL ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 8 x32 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 8 x32 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524AD4 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_NORMAL ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 16 x32 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 16 x32 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524ADC =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_NORMAL ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 32 x64 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 32 x64 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524AE4 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_DOUBLE ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 8 x8 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 8 x8 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524AEC =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_DOUBLE ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 16 x16 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 16 x16 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524AF4 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_DOUBLE ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 32 x32 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 32 x32 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524AFC =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_DOUBLE ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 64 x64 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 64 x64 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524B04 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_DOUBLE ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 16 x8 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 16 x8 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524B0C =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_DOUBLE ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 32 x8 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 32 x8 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524B14 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_DOUBLE ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 32 x16 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 32 x16 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524B1C =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_DOUBLE ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 64 x32 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 64 x32 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524B24 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_DOUBLE ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 8 x16 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 8 x16 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524B2C =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_DOUBLE ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 8 x32 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 8 x32 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524B34 =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_DOUBLE ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 16 x32 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 16 x32 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct OamData gUnknown_08524B3C =
{
2019-04-02 00:31:10 +02:00
. y = 0 ,
2018-10-22 04:30:20 +02:00
. affineMode = ST_OAM_AFFINE_DOUBLE ,
. objMode = ST_OAM_OBJ_BLEND ,
2019-04-02 00:31:10 +02:00
. bpp = ST_OAM_4BPP ,
2019-03-11 08:12:15 +01:00
. shape = SPRITE_SHAPE ( 32 x64 ) ,
2019-04-02 00:31:10 +02:00
. x = 0 ,
2019-03-11 08:12:15 +01:00
. size = SPRITE_SIZE ( 32 x64 ) ,
2019-04-02 00:31:10 +02:00
. tileNum = 0 ,
2018-10-22 04:30:20 +02:00
. priority = 2 ,
2019-04-02 00:31:10 +02:00
. paletteNum = 0 ,
2018-10-22 04:30:20 +02:00
} ;
const struct CompressedSpriteSheet gBattleAnimPicTable [ ] =
{
2019-04-06 16:38:55 +02:00
{ gBattleAnimSpriteGfx_Bone , 0x0200 , ANIM_TAG_BONE } ,
{ gBattleAnimSpriteGfx_Spark , 0x0300 , ANIM_TAG_SPARK } ,
{ gBattleAnimSpriteGfx_Pencil , 0x0200 , ANIM_TAG_PENCIL } ,
{ gBattleAnimSpriteGfx_AirWave , 0x0100 , ANIM_TAG_AIR_WAVE } ,
{ gBattleAnimSpriteGfx_Orb , 0x0200 , ANIM_TAG_ORB } ,
{ gBattleAnimSpriteGfx_Sword , 0x0400 , ANIM_TAG_SWORD } ,
{ gBattleAnimSpriteGfx_Seed , 0x0180 , ANIM_TAG_SEED } ,
{ gBattleAnimSpriteGfx_Explosion6 , 0x0800 , ANIM_TAG_EXPLOSION_6 } ,
{ gBattleAnimSpriteGfx_PinkOrb , 0x0020 , ANIM_TAG_PINK_ORB } ,
{ gBattleAnimSpriteGfx_Gust , 0x0400 , ANIM_TAG_GUST } ,
{ gBattleAnimSpriteGfx_IceCube , 0x1200 , ANIM_TAG_ICE_CUBE } ,
{ gBattleAnimSpriteGfx_Spark2 , 0x0180 , ANIM_TAG_SPARK_2 } ,
{ gBattleAnimSpriteGfx_Orange , 0x0080 , ANIM_TAG_ORANGE } ,
{ gBattleAnimSpriteGfx_YellowBall , 0x0080 , ANIM_TAG_YELLOW_BALL } ,
{ gBattleAnimSpriteGfx_LockOn , 0x0280 , ANIM_TAG_LOCK_ON } ,
{ gBattleAnimSpriteGfx_TiedBag , 0x0080 , ANIM_TAG_TIED_BAG } ,
{ gBattleAnimSpriteGfx_BlackSmoke , 0x0100 , ANIM_TAG_BLACK_SMOKE } ,
{ gBattleAnimSpriteGfx_BlackBall , 0x0020 , ANIM_TAG_BLACK_BALL } ,
{ gBattleAnimSpriteGfx_Conversion , 0x0080 , ANIM_TAG_CONVERSION } ,
{ gBattleAnimSpriteGfx_Glass , 0x0400 , ANIM_TAG_GLASS } ,
{ gBattleAnimSpriteGfx_HornHit , 0x0200 , ANIM_TAG_HORN_HIT } ,
{ gBattleAnimSpriteGfx_Hit , 0x0A00 , ANIM_TAG_HIT } ,
{ gBattleAnimSpriteGfx_Hit , 0x0A00 , ANIM_TAG_HIT_2 } ,
{ gBattleAnimSpriteGfx_BlueShards , 0x0380 , ANIM_TAG_BLUE_SHARDS } ,
{ gBattleAnimSpriteGfx_ClosingEye , 0x0300 , ANIM_TAG_CLOSING_EYE } ,
{ gBattleAnimSpriteGfx_WavingHand , 0x0A00 , ANIM_TAG_WAVING_HAND } ,
{ gBattleAnimSpriteGfx_HitDuplicate , 0x0A00 , ANIM_TAG_HIT_DUPLICATE } ,
{ gBattleAnimSpriteGfx_Leer , 0x0A00 , ANIM_TAG_LEER } ,
{ gBattleAnimSpriteGfx_BlueBurst , 0x0A00 , ANIM_TAG_BLUE_BURST } ,
{ gBattleAnimSpriteGfx_SmallEmber , 0x0A00 , ANIM_TAG_SMALL_EMBER } ,
{ gBattleAnimSpriteGfx_GraySmoke , 0x0A00 , ANIM_TAG_GRAY_SMOKE } ,
{ gBattleAnimSpriteGfx_BlueStar , 0x0E00 , ANIM_TAG_BLUE_STAR } ,
{ gBattleAnimSpriteGfx_BubbleBurst , 0x0380 , ANIM_TAG_BUBBLE_BURST } ,
{ gBattleAnimSpriteGfx_Fire , 0x1000 , ANIM_TAG_FIRE } ,
{ gBattleAnimSpriteGfx_SpinningFire , 0x0800 , ANIM_TAG_SPINNING_FIRE } ,
{ gBattleAnimSpriteGfx_FirePlume , 0x0A00 , ANIM_TAG_FIRE_PLUME } ,
{ gBattleAnimSpriteGfx_Lightning2 , 0x0800 , ANIM_TAG_LIGHTNING_2 } ,
{ gBattleAnimSpriteGfx_Lightning , 0x0A00 , ANIM_TAG_LIGHTNING } ,
{ gBattleAnimSpriteGfx_ClawSlash2 , 0x0A00 , ANIM_TAG_CLAW_SLASH_2 } ,
{ gBattleAnimSpriteGfx_ClawSlash , 0x0A00 , ANIM_TAG_CLAW_SLASH } ,
{ gBattleAnimSpriteGfx_Scratch3 , 0x0A00 , ANIM_TAG_SCRATCH_3 } ,
{ gBattleAnimSpriteGfx_Scratch2 , 0x0A00 , ANIM_TAG_SCRATCH_2 } ,
{ gBattleAnimSpriteGfx_BubbleBurst2 , 0x0A00 , ANIM_TAG_BUBBLE_BURST_2 } ,
{ gBattleAnimSpriteGfx_IceChunk , 0x0A00 , ANIM_TAG_ICE_CHUNK } ,
{ gBattleAnimSpriteGfx_Glass2 , 0x0A00 , ANIM_TAG_GLASS_2 } ,
{ gBattleAnimSpriteGfx_PinkHeart2 , 0x0A00 , ANIM_TAG_PINK_HEART_2 } ,
{ gBattleAnimSpriteGfx_SapDrip , 0x1000 , ANIM_TAG_SAP_DRIP } ,
{ gBattleAnimSpriteGfx_SapDrip , 0x1000 , ANIM_TAG_SAP_DRIP_2 } ,
{ gBattleAnimSpriteGfx_Sparkle1 , 0x1000 , ANIM_TAG_SPARKLE_1 } ,
{ gBattleAnimSpriteGfx_Sparkle1 , 0x1000 , ANIM_TAG_SPARKLE_2 } ,
{ gBattleAnimSpriteGfx_HumanoidFoot , 0x0200 , ANIM_TAG_HUMANOID_FOOT } ,
{ gBattleAnimSpriteGfx_MonsterFoot , 0x0200 , ANIM_TAG_MONSTER_FOOT } ,
{ gBattleAnimSpriteGfx_HumanoidHand , 0x0200 , ANIM_TAG_HUMANOID_HAND } ,
{ gBattleAnimSpriteGfx_NoiseLine , 0x0800 , ANIM_TAG_NOISE_LINE } ,
{ gBattleAnimSpriteGfx_YellowUnk , 0x0080 , ANIM_TAG_YELLOW_UNK } ,
{ gBattleAnimSpriteGfx_RedFist , 0x0200 , ANIM_TAG_RED_FIST } ,
{ gBattleAnimSpriteGfx_SlamHit , 0x1000 , ANIM_TAG_SLAM_HIT } ,
{ gBattleAnimSpriteGfx_Ring , 0x0180 , ANIM_TAG_RING } ,
{ gBattleAnimSpriteGfx_Rocks , 0x0C00 , ANIM_TAG_ROCKS } ,
{ gBattleAnimSpriteGfx_Z , 0x0100 , ANIM_TAG_Z } ,
{ gBattleAnimSpriteGfx_YellowUnk2 , 0x0040 , ANIM_TAG_YELLOW_UNK_2 } ,
{ gBattleAnimSpriteGfx_AirSlash , 0x0180 , ANIM_TAG_AIR_SLASH } ,
{ gBattleAnimSpriteGfx_SpinningGreenOrbs , 0x0800 , ANIM_TAG_SPINNING_GREEN_ORBS } ,
{ gBattleAnimSpriteGfx_Leaf , 0x0480 , ANIM_TAG_LEAF } ,
{ gBattleAnimSpriteGfx_Finger , 0x0200 , ANIM_TAG_FINGER } ,
{ gBattleAnimSpriteGfx_PoisonPowder , 0x0200 , ANIM_TAG_POISON_POWDER } ,
{ gBattleAnimSpriteGfx_BrownTriangle , 0x0100 , ANIM_TAG_BROWN_TRIANGLE } ,
{ gBattleAnimSpriteGfx_PoisonPowder , 0x0200 , ANIM_TAG_SLEEP_POWDER } ,
{ gBattleAnimSpriteGfx_PoisonPowder , 0x0200 , ANIM_TAG_STUN_SPORE } ,
{ gBattleAnimSpriteGfx_PoisonPowder , 0x0200 , ANIM_TAG_POWDER } ,
{ gBattleAnimSpriteGfx_Sparkle3 , 0x0200 , ANIM_TAG_SPARKLE_3 } ,
{ gBattleAnimSpriteGfx_Sparkle4 , 0x0A00 , ANIM_TAG_SPARKLE_4 } ,
{ gBattleAnimSpriteGfx_MusicNotes , 0x0300 , ANIM_TAG_MUSIC_NOTES } ,
{ gBattleAnimSpriteGfx_Duck , 0x0180 , ANIM_TAG_DUCK } ,
{ gBattleAnimSpriteGfx_MudSand , 0x00A0 , ANIM_TAG_MUD_SAND } ,
{ gBattleAnimSpriteGfx_Alert , 0x0700 , ANIM_TAG_ALERT } ,
{ gBattleAnimSpriteGfx_BlueFlames , 0x0400 , ANIM_TAG_BLUE_FLAMES } ,
{ gBattleAnimSpriteGfx_BlueFlames2 , 0x0200 , ANIM_TAG_BLUE_FLAMES_2 } ,
{ gBattleAnimSpriteGfx_Shock4 , 0x0300 , ANIM_TAG_SHOCK_4 } ,
{ gBattleAnimSpriteGfx_Shock , 0x0C00 , ANIM_TAG_SHOCK } ,
{ gBattleAnimSpriteGfx_Bell2 , 0x0A00 , ANIM_TAG_BELL_2 } ,
{ gBattleAnimSpriteGfx_PinkGlove , 0x0080 , ANIM_TAG_PINK_GLOVE } ,
{ gBattleAnimSpriteGfx_BlueLines , 0x0040 , ANIM_TAG_BLUE_LINES } ,
{ gBattleAnimSpriteGfx_Impact3 , 0x0E00 , ANIM_TAG_IMPACT_3 } ,
{ gBattleAnimSpriteGfx_Impact2 , 0x0E00 , ANIM_TAG_IMPACT_2 } ,
{ gBattleAnimSpriteGfx_Reticle , 0x0280 , ANIM_TAG_RETICLE } ,
{ gBattleAnimSpriteGfx_Breath , 0x0200 , ANIM_TAG_BREATH } ,
{ gBattleAnimSpriteGfx_Anger , 0x0080 , ANIM_TAG_ANGER } ,
{ gBattleAnimSpriteGfx_Snowball , 0x00C0 , ANIM_TAG_SNOWBALL } ,
{ gBattleAnimSpriteGfx_Vine , 0x0A00 , ANIM_TAG_VINE } ,
{ gBattleAnimSpriteGfx_Sword2 , 0x0200 , ANIM_TAG_SWORD_2 } ,
{ gBattleAnimSpriteGfx_Clapping , 0x0180 , ANIM_TAG_CLAPPING } ,
{ gBattleAnimSpriteGfx_RedTube , 0x0080 , ANIM_TAG_RED_TUBE } ,
{ gBattleAnimSpriteGfx_Amnesia , 0x1000 , ANIM_TAG_AMNESIA } ,
{ gBattleAnimSpriteGfx_String2 , 0x0A00 , ANIM_TAG_STRING_2 } ,
{ gBattleAnimSpriteGfx_Pencil2 , 0x0180 , ANIM_TAG_PENCIL_2 } ,
{ gBattleAnimSpriteGfx_Petal , 0x0380 , ANIM_TAG_PETAL } ,
{ gBattleAnimSpriteGfx_BentSpoon , 0x0C00 , ANIM_TAG_BENT_SPOON } ,
{ gBattleAnimSpriteGfx_Web , 0x0200 , ANIM_TAG_WEB } ,
{ gBattleAnimSpriteGfx_MilkBottle , 0x0200 , ANIM_TAG_MILK_BOTTLE } ,
{ gBattleAnimSpriteGfx_Coin , 0x0200 , ANIM_TAG_COIN } ,
{ gBattleAnimSpriteGfx_CrackedEgg , 0x0200 , ANIM_TAG_CRACKED_EGG } ,
{ gBattleAnimSpriteGfx_HatchedEgg , 0x0400 , ANIM_TAG_HATCHED_EGG } ,
{ gBattleAnimSpriteGfx_FreshEgg , 0x0080 , ANIM_TAG_FRESH_EGG } ,
{ gBattleAnimSpriteGfx_Fangs , 0x0400 , ANIM_TAG_FANGS } ,
{ gBattleAnimSpriteGfx_Explosion2 , 0x0c00 , ANIM_TAG_EXPLOSION_2 } ,
{ gBattleAnimSpriteGfx_Explosion3 , 0x0200 , ANIM_TAG_EXPLOSION_3 } ,
{ gBattleAnimSpriteGfx_WaterDroplet , 0x1000 , ANIM_TAG_WATER_DROPLET } ,
{ gBattleAnimSpriteGfx_WaterDroplet2 , 0x0a00 , ANIM_TAG_WATER_DROPLET_2 } ,
{ gBattleAnimSpriteGfx_Seed2 , 0x0020 , ANIM_TAG_SEED_2 } ,
{ gBattleAnimSpriteGfx_Sprout , 0x0e00 , ANIM_TAG_SPROUT } ,
{ gBattleAnimSpriteGfx_RedWand , 0x0080 , ANIM_TAG_RED_WAND } ,
{ gBattleAnimSpriteGfx_PurpleGreenUnk , 0x0a00 , ANIM_TAG_PURPLE_GREEN_UNK } ,
{ gBattleAnimSpriteGfx_WaterColumn , 0x0400 , ANIM_TAG_WATER_COLUMN } ,
{ gBattleAnimSpriteGfx_MudUnk , 0x0200 , ANIM_TAG_MUD_UNK } ,
{ gBattleAnimSpriteGfx_RainDrops , 0x0700 , ANIM_TAG_RAIN_DROPS } ,
{ gBattleAnimSpriteGfx_FurySwipes , 0x0800 , ANIM_TAG_FURY_SWIPES } ,
{ gBattleAnimSpriteGfx_Vine2 , 0x0a00 , ANIM_TAG_VINE_2 } ,
{ gBattleAnimSpriteGfx_Teeth , 0x0600 , ANIM_TAG_TEETH } ,
{ gBattleAnimSpriteGfx_Bone2 , 0x0800 , ANIM_TAG_BONE_2 } ,
{ gBattleAnimSpriteGfx_WhiteBag , 0x0200 , ANIM_TAG_WHITE_BAG } ,
{ gBattleAnimSpriteGfx_Unknown , 0x0040 , ANIM_TAG_UNKNOWN } ,
{ gBattleAnimSpriteGfx_PurpleCoral , 0x0180 , ANIM_TAG_PURPLE_CORAL } ,
{ gBattleAnimSpriteGfx_PurpleDroplet , 0x0600 , ANIM_TAG_PURPLE_DROPLET } ,
{ gBattleAnimSpriteGfx_Shock2 , 0x0600 , ANIM_TAG_SHOCK_2 } ,
{ gBattleAnimSpriteGfx_ClosingEye2 , 0x0200 , ANIM_TAG_CLOSING_EYE_2 } ,
{ gBattleAnimSpriteGfx_MetalBall , 0x0080 , ANIM_TAG_METAL_BALL } ,
{ gBattleAnimSpriteGfx_MonsterDoll , 0x0200 , ANIM_TAG_MONSTER_DOLL } ,
{ gBattleAnimSpriteGfx_Whirlwind , 0x0800 , ANIM_TAG_WHIRLWIND } ,
{ gBattleAnimSpriteGfx_Whirlwind2 , 0x0080 , ANIM_TAG_WHIRLWIND_2 } ,
{ gBattleAnimSpriteGfx_Explosion4 , 0x0a00 , ANIM_TAG_EXPLOSION_4 } ,
{ gBattleAnimSpriteGfx_Explosion5 , 0x0280 , ANIM_TAG_EXPLOSION_5 } ,
{ gBattleAnimSpriteGfx_Tongue , 0x0280 , ANIM_TAG_TONGUE } ,
{ gBattleAnimSpriteGfx_Smoke , 0x0100 , ANIM_TAG_SMOKE } ,
{ gBattleAnimSpriteGfx_Smoke2 , 0x0200 , ANIM_TAG_SMOKE_2 } ,
{ gBattleAnimSpriteGfx_Impact , 0x0200 , ANIM_TAG_IMPACT } ,
{ gBattleAnimSpriteGfx_CircleImpact , 0x0020 , ANIM_TAG_CIRCLE_IMPACT } ,
{ gBattleAnimSpriteGfx_Scratch , 0x0a00 , ANIM_TAG_SCRATCH } ,
{ gBattleAnimSpriteGfx_Cut , 0x0800 , ANIM_TAG_CUT } ,
{ gBattleAnimSpriteGfx_SharpTeeth , 0x0800 , ANIM_TAG_SHARP_TEETH } ,
{ gBattleAnimSpriteGfx_RainbowRings , 0x00c0 , ANIM_TAG_RAINBOW_RINGS } ,
{ gBattleAnimSpriteGfx_IceCrystals , 0x01c0 , ANIM_TAG_ICE_CRYSTALS } ,
{ gBattleAnimSpriteGfx_IceSpikes , 0x0100 , ANIM_TAG_ICE_SPIKES } ,
{ gBattleAnimSpriteGfx_HandsAndFeet , 0x0800 , ANIM_TAG_HANDS_AND_FEET } ,
{ gBattleAnimSpriteGfx_MistCloud , 0x0200 , ANIM_TAG_MIST_CLOUD } ,
{ gBattleAnimSpriteGfx_Clamp , 0x0800 , ANIM_TAG_CLAMP } ,
{ gBattleAnimSpriteGfx_Bubble , 0x0180 , ANIM_TAG_BUBBLE } ,
{ gBattleAnimSpriteGfx_Orbs , 0x0180 , ANIM_TAG_ORBS } ,
{ gBattleAnimSpriteGfx_WaterImpact , 0x0200 , ANIM_TAG_WATER_IMPACT } ,
{ gBattleAnimSpriteGfx_WaterOrb , 0x0200 , ANIM_TAG_WATER_ORB } ,
{ gBattleAnimSpriteGfx_PoisonBubble , 0x0180 , ANIM_TAG_POISON_BUBBLE } ,
{ gBattleAnimSpriteGfx_ToxicBubble , 0x0400 , ANIM_TAG_TOXIC_BUBBLE } ,
{ gBattleAnimSpriteGfx_Spikes , 0x0080 , ANIM_TAG_SPIKES } ,
{ gBattleAnimSpriteGfx_HornHit2 , 0x0100 , ANIM_TAG_HORN_HIT_2 } ,
{ gBattleAnimSpriteGfx_AirWave2 , 0x0100 , ANIM_TAG_AIR_WAVE_2 } ,
{ gBattleAnimSpriteGfx_SmallBubbles , 0x0140 , ANIM_TAG_SMALL_BUBBLES } ,
{ gBattleAnimSpriteGfx_RoundShadow , 0x0800 , ANIM_TAG_ROUND_SHADOW } ,
{ gBattleAnimSpriteGfx_Sunlight , 0x0200 , ANIM_TAG_SUNLIGHT } ,
{ gBattleAnimSpriteGfx_Spore , 0x0100 , ANIM_TAG_SPORE } ,
{ gBattleAnimSpriteGfx_Flower , 0x00a0 , ANIM_TAG_FLOWER } ,
{ gBattleAnimSpriteGfx_RazorLeaf , 0x0100 , ANIM_TAG_RAZOR_LEAF } ,
{ gBattleAnimSpriteGfx_Needle , 0x0080 , ANIM_TAG_NEEDLE } ,
{ gBattleAnimSpriteGfx_WhirlwindLines , 0x0300 , ANIM_TAG_WHIRLWIND_LINES } ,
{ gBattleAnimSpriteGfx_GoldRing , 0x0100 , ANIM_TAG_GOLD_RING } ,
{ gBattleAnimSpriteGfx_GoldRing , 0x0100 , ANIM_TAG_PURPLE_RING } ,
{ gBattleAnimSpriteGfx_GoldRing , 0x0100 , ANIM_TAG_BLUE_RING } ,
{ gBattleAnimSpriteGfx_GreenLightWall , 0x0800 , ANIM_TAG_GREEN_LIGHT_WALL } ,
{ gBattleAnimSpriteGfx_GreenLightWall , 0x0800 , ANIM_TAG_BLUE_LIGHT_WALL } ,
{ gBattleAnimSpriteGfx_GreenLightWall , 0x0800 , ANIM_TAG_RED_LIGHT_WALL } ,
{ gBattleAnimSpriteGfx_GreenLightWall , 0x0800 , ANIM_TAG_GRAY_LIGHT_WALL } ,
{ gBattleAnimSpriteGfx_GreenLightWall , 0x0800 , ANIM_TAG_ORANGE_LIGHT_WALL } ,
{ gBattleAnimSpriteGfx_BlackBall2 , 0x0080 , ANIM_TAG_BLACK_BALL_2 } ,
{ gBattleAnimSpriteGfx_MistCloud , 0x0200 , ANIM_TAG_PURPLE_GAS_CLOUD } ,
{ gBattleAnimSpriteGfx_SparkH , 0x0200 , ANIM_TAG_SPARK_H } ,
{ gBattleAnimSpriteGfx_YellowStar , 0x0200 , ANIM_TAG_YELLOW_STAR } ,
{ gBattleAnimSpriteGfx_LargeFreshEgg , 0x0080 , ANIM_TAG_LARGE_FRESH_EGG } ,
{ gBattleAnimSpriteGfx_ShadowBall , 0x0200 , ANIM_TAG_SHADOW_BALL } ,
{ gBattleAnimSpriteGfx_Lick , 0x0500 , ANIM_TAG_LICK } ,
{ gBattleAnimSpriteGfx_VoidLines , 0x0800 , ANIM_TAG_VOID_LINES } ,
{ gBattleAnimSpriteGfx_String , 0x0400 , ANIM_TAG_STRING } ,
{ gBattleAnimSpriteGfx_WebThread , 0x0020 , ANIM_TAG_WEB_THREAD } ,
{ gBattleAnimSpriteGfx_SpiderWeb , 0x0800 , ANIM_TAG_SPIDER_WEB } ,
{ gBattleAnimSpriteGfx_Lightbulb , 0x0100 , ANIM_TAG_LIGHTBULB } ,
{ gBattleAnimSpriteGfx_Slash , 0x0800 , ANIM_TAG_SLASH } ,
{ gBattleAnimSpriteGfx_FocusEnergy , 0x0400 , ANIM_TAG_FOCUS_ENERGY } ,
{ gBattleAnimSpriteGfx_SphereToCube , 0x0a00 , ANIM_TAG_SPHERE_TO_CUBE } ,
{ gBattleAnimSpriteGfx_Tendrils , 0x1000 , ANIM_TAG_TENDRILS } ,
{ gBattleAnimSpriteGfx_Eye , 0x0800 , ANIM_TAG_EYE } ,
{ gBattleAnimSpriteGfx_WhiteShadow , 0x0400 , ANIM_TAG_WHITE_SHADOW } ,
{ gBattleAnimSpriteGfx_TealAlert , 0x0200 , ANIM_TAG_TEAL_ALERT } ,
{ gBattleAnimSpriteGfx_OpeningEye , 0x0800 , ANIM_TAG_OPENING_EYE } ,
{ gBattleAnimSpriteGfx_RoundWhiteHalo , 0x0800 , ANIM_TAG_ROUND_WHITE_HALO } ,
{ gBattleAnimSpriteGfx_FangAttack , 0x0800 , ANIM_TAG_FANG_ATTACK } ,
{ gBattleAnimSpriteGfx_PurpleHandOutline , 0x0200 , ANIM_TAG_PURPLE_HAND_OUTLINE } ,
{ gBattleAnimSpriteGfx_Moon , 0x0800 , ANIM_TAG_MOON } ,
{ gBattleAnimSpriteGfx_GreenSparkle , 0x0200 , ANIM_TAG_GREEN_SPARKLE } ,
{ gBattleAnimSpriteGfx_Spiral , 0x0800 , ANIM_TAG_SPIRAL } ,
{ gBattleAnimSpriteGfx_SnoreZ , 0x0200 , ANIM_TAG_SNORE_Z } ,
{ gBattleAnimSpriteGfx_Explosion , 0x0800 , ANIM_TAG_EXPLOSION } ,
{ gBattleAnimSpriteGfx_Nail , 0x0400 , ANIM_TAG_NAIL } ,
{ gBattleAnimSpriteGfx_GhostlySpirit , 0x0200 , ANIM_TAG_GHOSTLY_SPIRIT } ,
{ gBattleAnimSpriteGfx_WarmRock , 0x0a80 , ANIM_TAG_WARM_ROCK } ,
{ gBattleAnimSpriteGfx_BreakingEgg , 0x0600 , ANIM_TAG_BREAKING_EGG } ,
{ gBattleAnimSpriteGfx_ThinRing , 0x0800 , ANIM_TAG_THIN_RING } ,
{ gBattleAnimSpriteGfx_PunchImpact , 0x0200 , ANIM_TAG_PUNCH_IMPACT } ,
{ gBattleAnimSpriteGfx_Bell , 0x0600 , ANIM_TAG_BELL } ,
{ gBattleAnimSpriteGfx_MusicNotes2 , 0x0800 , ANIM_TAG_MUSIC_NOTES_2 } ,
{ gBattleAnimSpriteGfx_SpeedDust , 0x0180 , ANIM_TAG_SPEED_DUST } ,
{ gBattleAnimSpriteGfx_TornMetal , 0x0800 , ANIM_TAG_TORN_METAL } ,
{ gBattleAnimSpriteGfx_ThoughtBubble , 0x0800 , ANIM_TAG_THOUGHT_BUBBLE } ,
{ gBattleAnimSpriteGfx_MagentaHeart , 0x0080 , ANIM_TAG_MAGENTA_HEART } ,
{ gBattleAnimSpriteGfx_ElectricOrbs , 0x0080 , ANIM_TAG_ELECTRIC_ORBS } ,
{ gBattleAnimSpriteGfx_CircleOfLight , 0x0800 , ANIM_TAG_CIRCLE_OF_LIGHT } ,
{ gBattleAnimSpriteGfx_Electricity , 0x0800 , ANIM_TAG_ELECTRICITY } ,
{ gBattleAnimSpriteGfx_Finger2 , 0x0600 , ANIM_TAG_FINGER_2 } ,
{ gBattleAnimSpriteGfx_MovementWaves , 0x0600 , ANIM_TAG_MOVEMENT_WAVES } ,
{ gBattleAnimSpriteGfx_MagentaHeart , 0x0080 , ANIM_TAG_RED_HEART } ,
{ gBattleAnimSpriteGfx_RedOrb , 0x0080 , ANIM_TAG_RED_ORB } ,
{ gBattleAnimSpriteGfx_EyeSparkle , 0x0180 , ANIM_TAG_EYE_SPARKLE } ,
{ gBattleAnimSpriteGfx_MagentaHeart , 0x0080 , ANIM_TAG_PINK_HEART } ,
{ gBattleAnimSpriteGfx_Angel , 0x0200 , ANIM_TAG_ANGEL } ,
{ gBattleAnimSpriteGfx_Devil , 0x0400 , ANIM_TAG_DEVIL } ,
{ gBattleAnimSpriteGfx_Swipe , 0x0a00 , ANIM_TAG_SWIPE } ,
{ gBattleAnimSpriteGfx_Roots , 0x0800 , ANIM_TAG_ROOTS } ,
{ gBattleAnimSpriteGfx_ItemBag , 0x0200 , ANIM_TAG_ITEM_BAG } ,
{ gBattleAnimSpriteGfx_JaggedMusicNote , 0x0400 , ANIM_TAG_JAGGED_MUSIC_NOTE } ,
{ gBattleAnimSpriteGfx_Pokeball , 0x0080 , ANIM_TAG_POKEBALL } ,
{ gBattleAnimSpriteGfx_Spotlight , 0x0800 , ANIM_TAG_SPOTLIGHT } ,
{ gBattleAnimSpriteGfx_LetterZ , 0x0200 , ANIM_TAG_LETTER_Z } ,
{ gBattleAnimSpriteGfx_RapidSpin , 0x0300 , ANIM_TAG_RAPID_SPIN } ,
{ gBattleAnimSpriteGfx_TriForceTriangle , 0x0800 , ANIM_TAG_TRI_FORCE_TRIANGLE } ,
{ gBattleAnimSpriteGfx_WispOrb , 0x0380 , ANIM_TAG_WISP_ORB } ,
{ gBattleAnimSpriteGfx_WispFire , 0x0800 , ANIM_TAG_WISP_FIRE } ,
{ gBattleAnimSpriteGfx_GoldStars , 0x00c0 , ANIM_TAG_GOLD_STARS } ,
{ gBattleAnimSpriteGfx_EclipsingOrb , 0x0800 , ANIM_TAG_ECLIPSING_ORB } ,
{ gBattleAnimSpriteGfx_GrayOrb , 0x0060 , ANIM_TAG_GRAY_ORB } ,
{ gBattleAnimSpriteGfx_GrayOrb , 0x0060 , ANIM_TAG_BLUE_ORB } ,
{ gBattleAnimSpriteGfx_GrayOrb , 0x0060 , ANIM_TAG_RED_ORB_2 } ,
{ gBattleAnimSpriteGfx_PinkPetal , 0x0080 , ANIM_TAG_PINK_PETAL } ,
{ gBattleAnimSpriteGfx_PainSplit , 0x0180 , ANIM_TAG_PAIN_SPLIT } ,
{ gBattleAnimSpriteGfx_Confetti , 0x0180 , ANIM_TAG_CONFETTI } ,
{ gBattleAnimSpriteGfx_GreenStar , 0x0200 , ANIM_TAG_GREEN_STAR } ,
{ gBattleAnimSpriteGfx_PinkCloud , 0x0200 , ANIM_TAG_PINK_CLOUD } ,
{ gBattleAnimSpriteGfx_SweatDrop , 0x0020 , ANIM_TAG_SWEAT_DROP } ,
{ gBattleAnimSpriteGfx_GuardRing , 0x0400 , ANIM_TAG_GUARD_RING } ,
{ gBattleAnimSpriteGfx_PurpleScratch , 0x0600 , ANIM_TAG_PURPLE_SCRATCH } ,
{ gBattleAnimSpriteGfx_PurpleSwipe , 0x1000 , ANIM_TAG_PURPLE_SWIPE } ,
{ gBattleAnimSpriteGfx_TagHand , 0x0400 , ANIM_TAG_TAG_HAND } ,
{ gBattleAnimSpriteGfx_SmallRedEye , 0x0020 , ANIM_TAG_SMALL_RED_EYE } ,
{ gBattleAnimSpriteGfx_HollowOrb , 0x0080 , ANIM_TAG_HOLLOW_ORB } ,
{ gBattleAnimSpriteGfx_XSign , 0x0800 , ANIM_TAG_X_SIGN } ,
{ gBattleAnimSpriteGfx_BluegreenOrb , 0x0080 , ANIM_TAG_BLUEGREEN_ORB } ,
{ gBattleAnimSpriteGfx_PawPrint , 0x0200 , ANIM_TAG_PAW_PRINT } ,
{ gBattleAnimSpriteGfx_PurpleFlame , 0x0400 , ANIM_TAG_PURPLE_FLAME } ,
{ gBattleAnimSpriteGfx_RedBall , 0x0200 , ANIM_TAG_RED_BALL } ,
{ gBattleAnimSpriteGfx_SmellingsaltEffect , 0x0200 , ANIM_TAG_SMELLINGSALT_EFFECT } ,
{ gBattleAnimSpriteGfx_Meteor , 0x0800 , ANIM_TAG_METEOR } ,
{ gBattleAnimSpriteGfx_FlatRock , 0x0280 , ANIM_TAG_FLAT_ROCK } ,
{ gBattleAnimSpriteGfx_MagnifyingGlass , 0x0200 , ANIM_TAG_MAGNIFYING_GLASS } ,
{ gBattleAnimSpriteGfx_WaterOrb , 0x0200 , ANIM_TAG_BROWN_ORB } ,
{ gBattleAnimSpriteGfx_MetalSoundWaves , 0x0400 , ANIM_TAG_METAL_SOUND_WAVES } ,
{ gBattleAnimSpriteGfx_FlyingDirt , 0x0200 , ANIM_TAG_FLYING_DIRT } ,
{ gBattleAnimSpriteGfx_IcicleSpear , 0x0200 , ANIM_TAG_ICICLE_SPEAR } ,
{ gBattleAnimSpriteGfx_Hail , 0x0080 , ANIM_TAG_HAIL } ,
{ gBattleAnimSpriteGfx_GlowyRedOrb , 0x0020 , ANIM_TAG_GLOWY_RED_ORB } ,
{ gBattleAnimSpriteGfx_GlowyRedOrb , 0x0020 , ANIM_TAG_GLOWY_GREEN_ORB } ,
{ gBattleAnimSpriteGfx_GreenSpike , 0x0080 , ANIM_TAG_GREEN_SPIKE } ,
{ gBattleAnimSpriteGfx_CircleOfLight , 0x0800 , ANIM_TAG_WHITE_CIRCLE_OF_LIGHT } ,
{ gBattleAnimSpriteGfx_GlowyRedOrb , 0x0020 , ANIM_TAG_GLOWY_BLUE_ORB } ,
{ gBattleAnimSpriteGfx_RedBrick , 0x0080 , ANIM_TAG_RED_BRICK } ,
{ gBattleAnimSpriteGfx_WhiteFeather , 0x0400 , ANIM_TAG_WHITE_FEATHER } ,
{ gBattleAnimSpriteGfx_Sparkle6 , 0x0080 , ANIM_TAG_SPARKLE_6 } ,
{ gBattleAnimSpriteGfx_Splash , 0x0800 , ANIM_TAG_SPLASH } ,
{ gBattleAnimSpriteGfx_SweatBead , 0x0020 , ANIM_TAG_SWEAT_BEAD } ,
{ gBattleAnimSpriteGfx_Gem1 , 0x0800 , ANIM_TAG_GEM_1 } ,
{ gBattleAnimSpriteGfx_Gem2 , 0x0800 , ANIM_TAG_GEM_2 } ,
{ gBattleAnimSpriteGfx_Gem3 , 0x0800 , ANIM_TAG_GEM_3 } ,
{ gBattleAnimSpriteGfx_SlamHit2 , 0x1000 , ANIM_TAG_SLAM_HIT_2 } ,
{ gBattleAnimSpriteGfx_Recycle , 0x0800 , ANIM_TAG_RECYCLE } ,
{ gBattleAnimSpriteGfx_RedParticles , 0x00a0 , ANIM_TAG_RED_PARTICLES } ,
{ gBattleAnimSpriteGfx_Protect , 0x0800 , ANIM_TAG_PROTECT } ,
{ gBattleAnimSpriteGfx_DirtMound , 0x0200 , ANIM_TAG_DIRT_MOUND } ,
{ gBattleAnimSpriteGfx_Shock3 , 0x0600 , ANIM_TAG_SHOCK_3 } ,
{ gBattleAnimSpriteGfx_WeatherBall , 0x0200 , ANIM_TAG_WEATHER_BALL } ,
{ gBattleAnimSpriteGfx_Bird , 0x0800 , ANIM_TAG_BIRD } ,
{ gBattleAnimSpriteGfx_CrossImpact , 0x0200 , ANIM_TAG_CROSS_IMPACT } ,
{ gBattleAnimSpriteGfx_Slash , 0x0800 , ANIM_TAG_SLASH_2 } ,
{ gBattleAnimSpriteGfx_SlamHit , 0x1000 , ANIM_TAG_WHIP_HIT } ,
{ gBattleAnimSpriteGfx_GoldRing , 0x0100 , ANIM_TAG_BLUE_RING_2 } ,
2019-04-06 20:43:13 +02:00
{ gBattleAnimSpriteGfx_WhiteStreak , 0x0200 , ANIM_TAG_WHITE_STREAK } ,
{ gBattleAnimSpriteGfx_PurpleJab , 0x0100 , ANIM_TAG_PURPLE_JAB } ,
{ gBattleAnimSpriteGfx_Spikes , 0x0080 , ANIM_TAG_TOXIC_SPIKES } ,
{ gBattleAnimSpriteGfx_EnergyBall , 0x0200 , ANIM_TAG_ENERGY_BALL } ,
2018-10-22 04:30:20 +02:00
} ;
const struct CompressedSpritePalette gBattleAnimPaletteTable [ ] =
{
2019-04-06 16:38:55 +02:00
{ gBattleAnimSpritePal_Bone , ANIM_TAG_BONE } ,
{ gBattleAnimSpritePal_Spark , ANIM_TAG_SPARK } ,
{ gBattleAnimSpritePal_Pencil , ANIM_TAG_PENCIL } ,
{ gBattleAnimSpritePal_AirWave , ANIM_TAG_AIR_WAVE } ,
{ gBattleAnimSpritePal_Orb , ANIM_TAG_ORB } ,
{ gBattleAnimSpritePal_Sword , ANIM_TAG_SWORD } ,
{ gBattleAnimSpritePal_Seed , ANIM_TAG_SEED } ,
{ gBattleAnimSpritePal_Explosion6 , ANIM_TAG_EXPLOSION_6 } ,
{ gBattleAnimSpritePal_PinkOrb , ANIM_TAG_PINK_ORB } ,
{ gBattleAnimSpritePal_Gust , ANIM_TAG_GUST } ,
{ gBattleAnimSpritePal_IceCube , ANIM_TAG_ICE_CUBE } ,
{ gBattleAnimSpritePal_Spark2 , ANIM_TAG_SPARK_2 } ,
{ gBattleAnimSpritePal_Orange , ANIM_TAG_ORANGE } ,
{ gBattleAnimSpritePal_YellowBall , ANIM_TAG_YELLOW_BALL } ,
{ gBattleAnimSpritePal_LockOn , ANIM_TAG_LOCK_ON } ,
{ gBattleAnimSpritePal_TiedBag , ANIM_TAG_TIED_BAG } ,
{ gBattleAnimSpritePal_BlackSmoke , ANIM_TAG_BLACK_SMOKE } ,
{ gBattleAnimSpritePal_BlackSmoke , ANIM_TAG_BLACK_BALL } ,
{ gBattleAnimSpritePal_Conversion , ANIM_TAG_CONVERSION } ,
{ gBattleAnimSpritePal_Glass , ANIM_TAG_GLASS } ,
{ gBattleAnimSpritePal_HornHit , ANIM_TAG_HORN_HIT } ,
{ gBattleAnimSpritePal_Hit , ANIM_TAG_HIT } ,
{ gBattleAnimSpritePal_Hit2 , ANIM_TAG_HIT_2 } ,
{ gBattleAnimSpritePal_BlueShards , ANIM_TAG_BLUE_SHARDS } ,
{ gBattleAnimSpritePal_ClosingEye , ANIM_TAG_CLOSING_EYE } ,
{ gBattleAnimSpritePal_WavingHand , ANIM_TAG_WAVING_HAND } ,
{ gBattleAnimSpritePal_HitDuplicate , ANIM_TAG_HIT_DUPLICATE } ,
{ gBattleAnimSpritePal_Leer , ANIM_TAG_LEER } ,
{ gBattleAnimSpritePal_BlueBurst , ANIM_TAG_BLUE_BURST } ,
{ gBattleAnimSpritePal_SmallEmber , ANIM_TAG_SMALL_EMBER } ,
{ gBattleAnimSpritePal_GraySmoke , ANIM_TAG_GRAY_SMOKE } ,
{ gBattleAnimSpritePal_BlueStar , ANIM_TAG_BLUE_STAR } ,
{ gBattleAnimSpritePal_BubbleBurst , ANIM_TAG_BUBBLE_BURST } ,
{ gBattleAnimSpritePal_Fire , ANIM_TAG_FIRE } ,
{ gBattleAnimSpritePal_Fire , ANIM_TAG_SPINNING_FIRE } ,
{ gBattleAnimSpritePal_Fire , ANIM_TAG_FIRE_PLUME } ,
{ gBattleAnimSpritePal_Lightning2 , ANIM_TAG_LIGHTNING_2 } ,
{ gBattleAnimSpritePal_Lightning2 , ANIM_TAG_LIGHTNING } ,
{ gBattleAnimSpritePal_ClawSlash2 , ANIM_TAG_CLAW_SLASH_2 } ,
{ gBattleAnimSpritePal_ClawSlash , ANIM_TAG_CLAW_SLASH } ,
{ gBattleAnimSpritePal_ClawSlash2 , ANIM_TAG_SCRATCH_3 } ,
{ gBattleAnimSpritePal_ClawSlash2 , ANIM_TAG_SCRATCH_2 } ,
{ gBattleAnimSpritePal_BubbleBurst2 , ANIM_TAG_BUBBLE_BURST_2 } ,
{ gBattleAnimSpritePal_IceChunk , ANIM_TAG_ICE_CHUNK } ,
{ gBattleAnimSpritePal_Glass2 , ANIM_TAG_GLASS_2 } ,
{ gBattleAnimSpritePal_PinkHeart2 , ANIM_TAG_PINK_HEART_2 } ,
{ gBattleAnimSpritePal_SapDrip , ANIM_TAG_SAP_DRIP } ,
{ gBattleAnimSpritePal_SapDrip2 , ANIM_TAG_SAP_DRIP } ,
{ gBattleAnimSpritePal_Sparkle1 , ANIM_TAG_SPARKLE_1 } ,
{ gBattleAnimSpritePal_Sparkle2 , ANIM_TAG_SPARKLE_2 } ,
{ gBattleAnimSpritePal_HumanoidFoot , ANIM_TAG_HUMANOID_FOOT } ,
{ gBattleAnimSpritePal_HumanoidFoot , ANIM_TAG_MONSTER_FOOT } ,
{ gBattleAnimSpritePal_HumanoidFoot , ANIM_TAG_HUMANOID_HAND } ,
{ gBattleAnimSpritePal_HitDuplicate , ANIM_TAG_NOISE_LINE } ,
{ gBattleAnimSpritePal_YellowUnk , ANIM_TAG_YELLOW_UNK } ,
{ gBattleAnimSpritePal_HumanoidFoot , ANIM_TAG_RED_FIST } ,
{ gBattleAnimSpritePal_SlamHit , ANIM_TAG_SLAM_HIT } ,
{ gBattleAnimSpritePal_Ring , ANIM_TAG_RING } ,
{ gBattleAnimSpritePal_Rocks , ANIM_TAG_ROCKS } ,
{ gBattleAnimSpritePal_Z , ANIM_TAG_Z } ,
{ gBattleAnimSpritePal_YellowUnk2 , ANIM_TAG_YELLOW_UNK_2 } ,
{ gBattleAnimSpritePal_AirSlash , ANIM_TAG_AIR_SLASH } ,
{ gBattleAnimSpritePal_SpinningGreenOrbs , ANIM_TAG_SPINNING_GREEN_ORBS } ,
{ gBattleAnimSpritePal_Leaf , ANIM_TAG_LEAF } ,
{ gBattleAnimSpritePal_Finger , ANIM_TAG_FINGER } ,
{ gBattleAnimSpritePal_PoisonPowder , ANIM_TAG_POISON_POWDER } ,
{ gBattleAnimSpritePal_BrownTriangle , ANIM_TAG_BROWN_TRIANGLE } ,
{ gBattleAnimSpritePal_SleepPowder , ANIM_TAG_SLEEP_POWDER } ,
{ gBattleAnimSpritePal_StunSpore , ANIM_TAG_STUN_SPORE } ,
{ gBattleAnimSpritePal_PoisonPowder , ANIM_TAG_POWDER } ,
{ gBattleAnimSpritePal_Sparkle3 , ANIM_TAG_SPARKLE_3 } ,
{ gBattleAnimSpritePal_Sparkle3 , ANIM_TAG_SPARKLE_4 } ,
{ gBattleAnimSpritePal_MusicNotes , ANIM_TAG_MUSIC_NOTES } ,
{ gBattleAnimSpritePal_Duck , ANIM_TAG_DUCK } ,
{ gBattleAnimSpritePal_MudSand , ANIM_TAG_MUD_SAND } ,
{ gBattleAnimSpritePal_Alert , ANIM_TAG_ALERT } ,
{ gBattleAnimSpritePal_BlueFlames , ANIM_TAG_BLUE_FLAMES } ,
{ gBattleAnimSpritePal_BlueFlames , ANIM_TAG_BLUE_FLAMES_2 } ,
{ gBattleAnimSpritePal_Shock4 , ANIM_TAG_SHOCK_4 } ,
{ gBattleAnimSpritePal_Shock4 , ANIM_TAG_SHOCK } ,
{ gBattleAnimSpritePal_Bell2 , ANIM_TAG_BELL_2 } ,
{ gBattleAnimSpritePal_PinkGlove , ANIM_TAG_PINK_GLOVE } ,
{ gBattleAnimSpritePal_BlueLines , ANIM_TAG_BLUE_LINES } ,
{ gBattleAnimSpritePal_Impact3 , ANIM_TAG_IMPACT_3 } ,
{ gBattleAnimSpritePal_Impact2 , ANIM_TAG_IMPACT_2 } ,
{ gBattleAnimSpritePal_Reticle , ANIM_TAG_RETICLE } ,
{ gBattleAnimSpritePal_Breath , ANIM_TAG_BREATH } ,
{ gBattleAnimSpritePal_Anger , ANIM_TAG_ANGER } ,
{ gBattleAnimSpritePal_Snowball , ANIM_TAG_SNOWBALL } ,
{ gBattleAnimSpritePal_Vine , ANIM_TAG_VINE } ,
{ gBattleAnimSpritePal_Sword2 , ANIM_TAG_SWORD_2 } ,
{ gBattleAnimSpritePal_Clapping , ANIM_TAG_CLAPPING } ,
{ gBattleAnimSpritePal_RedTube , ANIM_TAG_RED_TUBE } ,
{ gBattleAnimSpritePal_Amnesia , ANIM_TAG_AMNESIA } ,
{ gBattleAnimSpritePal_String2 , ANIM_TAG_STRING_2 } ,
{ gBattleAnimSpritePal_Pencil2 , ANIM_TAG_PENCIL_2 } ,
{ gBattleAnimSpritePal_Petal , ANIM_TAG_PETAL } ,
{ gBattleAnimSpritePal_BentSpoon , ANIM_TAG_BENT_SPOON } ,
{ gBattleAnimSpritePal_String2 , ANIM_TAG_WEB } ,
{ gBattleAnimSpritePal_MilkBottle , ANIM_TAG_MILK_BOTTLE } ,
{ gBattleAnimSpritePal_Coin , ANIM_TAG_COIN } ,
{ gBattleAnimSpritePal_CrackedEgg , ANIM_TAG_CRACKED_EGG } ,
{ gBattleAnimSpritePal_CrackedEgg , ANIM_TAG_HATCHED_EGG } ,
{ gBattleAnimSpritePal_FreshEgg , ANIM_TAG_FRESH_EGG } ,
{ gBattleAnimSpritePal_Fangs , ANIM_TAG_FANGS } ,
{ gBattleAnimSpritePal_Explosion2 , ANIM_TAG_EXPLOSION_2 } ,
{ gBattleAnimSpritePal_Explosion2 , ANIM_TAG_EXPLOSION_3 } ,
{ gBattleAnimSpritePal_WaterDroplet , ANIM_TAG_WATER_DROPLET } ,
{ gBattleAnimSpritePal_WaterDroplet , ANIM_TAG_WATER_DROPLET_2 } ,
{ gBattleAnimSpritePal_Seed2 , ANIM_TAG_SEED_2 } ,
{ gBattleAnimSpritePal_Seed2 , ANIM_TAG_SPROUT } ,
{ gBattleAnimSpritePal_RedWand , ANIM_TAG_RED_WAND } ,
{ gBattleAnimSpritePal_PurpleGreenUnk , ANIM_TAG_PURPLE_GREEN_UNK } ,
{ gBattleAnimSpritePal_WaterColumn , ANIM_TAG_WATER_COLUMN } ,
{ gBattleAnimSpritePal_MudUnk , ANIM_TAG_MUD_UNK } ,
{ gBattleAnimSpritePal_RainDrops , ANIM_TAG_RAIN_DROPS } ,
{ gBattleAnimSpritePal_FurySwipes , ANIM_TAG_FURY_SWIPES } ,
{ gBattleAnimSpritePal_Vine2 , ANIM_TAG_VINE_2 } ,
{ gBattleAnimSpritePal_Teeth , ANIM_TAG_TEETH } ,
{ gBattleAnimSpritePal_Bone2 , ANIM_TAG_BONE_2 } ,
{ gBattleAnimSpritePal_WhiteBag , ANIM_TAG_WHITE_BAG } ,
{ gBattleAnimSpritePal_Unknown , ANIM_TAG_UNKNOWN } ,
{ gBattleAnimSpritePal_PurpleCoral , ANIM_TAG_PURPLE_CORAL } ,
{ gBattleAnimSpritePal_PurpleCoral , ANIM_TAG_PURPLE_DROPLET } ,
{ gBattleAnimSpritePal_Shock2 , ANIM_TAG_SHOCK_2 } ,
{ gBattleAnimSpritePal_ClosingEye2 , ANIM_TAG_CLOSING_EYE_2 } ,
{ gBattleAnimSpritePal_MetalBall , ANIM_TAG_METAL_BALL } ,
{ gBattleAnimSpritePal_MonsterDoll , ANIM_TAG_MONSTER_DOLL } ,
{ gBattleAnimSpritePal_Whirlwind , ANIM_TAG_WHIRLWIND } ,
{ gBattleAnimSpritePal_Whirlwind , ANIM_TAG_WHIRLWIND_2 } ,
{ gBattleAnimSpritePal_Explosion4 , ANIM_TAG_EXPLOSION_4 } ,
{ gBattleAnimSpritePal_Explosion4 , ANIM_TAG_EXPLOSION_5 } ,
{ gBattleAnimSpritePal_Tongue , ANIM_TAG_TONGUE } ,
{ gBattleAnimSpritePal_Smoke , ANIM_TAG_SMOKE } ,
{ gBattleAnimSpritePal_Smoke , ANIM_TAG_SMOKE_2 } ,
{ gBattleAnimSpritePal_Impact , ANIM_TAG_IMPACT } ,
{ gBattleAnimSpritePal_CircleImpact , ANIM_TAG_CIRCLE_IMPACT } ,
{ gBattleAnimSpritePal_Impact , ANIM_TAG_SCRATCH } ,
{ gBattleAnimSpritePal_Impact , ANIM_TAG_CUT } ,
{ gBattleAnimSpritePal_SharpTeeth , ANIM_TAG_SHARP_TEETH } ,
{ gBattleAnimSpritePal_RainbowRings , ANIM_TAG_RAINBOW_RINGS } ,
{ gBattleAnimSpritePal_IceCrystals , ANIM_TAG_ICE_CRYSTALS } ,
{ gBattleAnimSpritePal_IceCrystals , ANIM_TAG_ICE_SPIKES } ,
{ gBattleAnimSpritePal_HandsAndFeet , ANIM_TAG_HANDS_AND_FEET } ,
{ gBattleAnimSpritePal_MistCloud , ANIM_TAG_MIST_CLOUD } ,
{ gBattleAnimSpritePal_SharpTeeth , ANIM_TAG_CLAMP } ,
{ gBattleAnimSpritePal_RainDrops , ANIM_TAG_BUBBLE } ,
{ gBattleAnimSpritePal_Orbs , ANIM_TAG_ORBS } ,
{ gBattleAnimSpritePal_WaterImpact , ANIM_TAG_WATER_IMPACT } ,
{ gBattleAnimSpritePal_WaterImpact , ANIM_TAG_WATER_ORB } ,
{ gBattleAnimSpritePal_PoisonBubble , ANIM_TAG_POISON_BUBBLE } ,
{ gBattleAnimSpritePal_PoisonBubble , ANIM_TAG_TOXIC_BUBBLE } ,
{ gBattleAnimSpritePal_Spikes , ANIM_TAG_SPIKES } ,
{ gBattleAnimSpritePal_HornHit2 , ANIM_TAG_HORN_HIT_2 } ,
{ gBattleAnimSpritePal_AirWave2 , ANIM_TAG_AIR_WAVE_2 } ,
{ gBattleAnimSpritePal_SmallBubbles , ANIM_TAG_SMALL_BUBBLES } ,
{ gBattleAnimSpritePal_RoundShadow , ANIM_TAG_ROUND_SHADOW } ,
{ gBattleAnimSpritePal_Sunlight , ANIM_TAG_SUNLIGHT } ,
{ gBattleAnimSpritePal_Spore , ANIM_TAG_SPORE } ,
{ gBattleAnimSpritePal_Flower , ANIM_TAG_FLOWER } ,
{ gBattleAnimSpritePal_RazorLeaf , ANIM_TAG_RAZOR_LEAF } ,
{ gBattleAnimSpritePal_Needle , ANIM_TAG_NEEDLE } ,
{ gBattleAnimSpritePal_WhirlwindLines , ANIM_TAG_WHIRLWIND_LINES } ,
{ gBattleAnimSpritePal_GoldRing , ANIM_TAG_GOLD_RING } ,
{ gBattleAnimSpritePal_PurpleRing , ANIM_TAG_PURPLE_RING } ,
{ gBattleAnimSpritePal_BlueRing , ANIM_TAG_BLUE_RING } ,
{ gBattleAnimSpritePal_GreenLightWall , ANIM_TAG_GREEN_LIGHT_WALL } ,
{ gBattleAnimSpritePal_BlueLightWall , ANIM_TAG_BLUE_LIGHT_WALL } ,
{ gBattleAnimSpritePal_RedLightWall , ANIM_TAG_RED_LIGHT_WALL } ,
{ gBattleAnimSpritePal_GrayLightWall , ANIM_TAG_GRAY_LIGHT_WALL } ,
{ gBattleAnimSpritePal_OrangeLightWall , ANIM_TAG_ORANGE_LIGHT_WALL } ,
{ gBattleAnimSpritePal_BlackBall2 , ANIM_TAG_BLACK_BALL_2 } ,
{ gBattleAnimSpritePal_PurpleGasCloud , ANIM_TAG_PURPLE_GAS_CLOUD } ,
{ gBattleAnimSpritePal_Spark , ANIM_TAG_SPARK_H } ,
{ gBattleAnimSpritePal_YellowStar , ANIM_TAG_YELLOW_STAR } ,
{ gBattleAnimSpritePal_LargeFreshEgg , ANIM_TAG_LARGE_FRESH_EGG } ,
{ gBattleAnimSpritePal_ShadowBall , ANIM_TAG_SHADOW_BALL } ,
{ gBattleAnimSpritePal_Lick , ANIM_TAG_LICK } ,
{ gBattleAnimSpritePal_VoidLines , ANIM_TAG_VOID_LINES } ,
{ gBattleAnimSpritePal_String , ANIM_TAG_STRING } ,
{ gBattleAnimSpritePal_String , ANIM_TAG_WEB_THREAD } ,
{ gBattleAnimSpritePal_String , ANIM_TAG_SPIDER_WEB } ,
{ gBattleAnimSpritePal_Lightbulb , ANIM_TAG_LIGHTBULB } ,
{ gBattleAnimSpritePal_Slash , ANIM_TAG_SLASH } ,
{ gBattleAnimSpritePal_FocusEnergy , ANIM_TAG_FOCUS_ENERGY } ,
{ gBattleAnimSpritePal_SphereToCube , ANIM_TAG_SPHERE_TO_CUBE } ,
{ gBattleAnimSpritePal_Tendrils , ANIM_TAG_TENDRILS } ,
{ gBattleAnimSpritePal_Eye , ANIM_TAG_EYE } ,
{ gBattleAnimSpritePal_WhiteShadow , ANIM_TAG_WHITE_SHADOW } ,
{ gBattleAnimSpritePal_TealAlert , ANIM_TAG_TEAL_ALERT } ,
{ gBattleAnimSpritePal_OpeningEye , ANIM_TAG_OPENING_EYE } ,
{ gBattleAnimSpritePal_RoundWhiteHalo , ANIM_TAG_ROUND_WHITE_HALO } ,
{ gBattleAnimSpritePal_FangAttack , ANIM_TAG_FANG_ATTACK } ,
{ gBattleAnimSpritePal_PurpleHandOutline , ANIM_TAG_PURPLE_HAND_OUTLINE } ,
{ gBattleAnimSpritePal_Moon , ANIM_TAG_MOON } ,
{ gBattleAnimSpritePal_GreenSparkle , ANIM_TAG_GREEN_SPARKLE } ,
{ gBattleAnimSpritePal_Spiral , ANIM_TAG_SPIRAL } ,
{ gBattleAnimSpritePal_SnoreZ , ANIM_TAG_SNORE_Z } ,
{ gBattleAnimSpritePal_Explosion , ANIM_TAG_EXPLOSION } ,
{ gBattleAnimSpritePal_Nail , ANIM_TAG_NAIL } ,
{ gBattleAnimSpritePal_GhostlySpirit , ANIM_TAG_GHOSTLY_SPIRIT } ,
{ gBattleAnimSpritePal_WarmRock , ANIM_TAG_WARM_ROCK } ,
{ gBattleAnimSpritePal_BreakingEgg , ANIM_TAG_BREAKING_EGG } ,
{ gBattleAnimSpritePal_ThinRing , ANIM_TAG_THIN_RING } ,
{ gBattleAnimSpritePal_PunchImpact , ANIM_TAG_PUNCH_IMPACT } ,
{ gBattleAnimSpritePal_Bell , ANIM_TAG_BELL } ,
{ gBattleAnimSpritePal_MusicNotes2 , ANIM_TAG_MUSIC_NOTES_2 } ,
{ gBattleAnimSpritePal_SpeedDust , ANIM_TAG_SPEED_DUST } ,
{ gBattleAnimSpritePal_BlueLightWall , ANIM_TAG_TORN_METAL } ,
{ gBattleAnimSpritePal_ThoughtBubble , ANIM_TAG_THOUGHT_BUBBLE } ,
{ gBattleAnimSpritePal_MagentaHeart , ANIM_TAG_MAGENTA_HEART } ,
{ gBattleAnimSpritePal_ElectricOrbs , ANIM_TAG_ELECTRIC_ORBS } ,
{ gBattleAnimSpritePal_ElectricOrbs , ANIM_TAG_CIRCLE_OF_LIGHT } ,
{ gBattleAnimSpritePal_ElectricOrbs , ANIM_TAG_ELECTRICITY } ,
{ gBattleAnimSpritePal_Finger , ANIM_TAG_FINGER_2 } ,
{ gBattleAnimSpritePal_MovementWaves , ANIM_TAG_MOVEMENT_WAVES } ,
{ gBattleAnimSpritePal_RedHeart , ANIM_TAG_RED_HEART } ,
{ gBattleAnimSpritePal_RedOrb , ANIM_TAG_RED_ORB } ,
{ gBattleAnimSpritePal_EyeSparkle , ANIM_TAG_EYE_SPARKLE } ,
{ gBattleAnimSpritePal_PinkHeart , ANIM_TAG_PINK_HEART } ,
{ gBattleAnimSpritePal_Angel , ANIM_TAG_ANGEL } ,
{ gBattleAnimSpritePal_Devil , ANIM_TAG_DEVIL } ,
{ gBattleAnimSpritePal_Swipe , ANIM_TAG_SWIPE } ,
{ gBattleAnimSpritePal_Roots , ANIM_TAG_ROOTS } ,
{ gBattleAnimSpritePal_ItemBag , ANIM_TAG_ITEM_BAG } ,
{ gBattleAnimSpritePal_JaggedMusicNote , ANIM_TAG_JAGGED_MUSIC_NOTE } ,
{ gBattleAnimSpritePal_Pokeball , ANIM_TAG_POKEBALL } ,
{ gBattleAnimSpritePal_Pokeball , ANIM_TAG_SPOTLIGHT } ,
{ gBattleAnimSpritePal_LetterZ , ANIM_TAG_LETTER_Z } ,
{ gBattleAnimSpritePal_RapidSpin , ANIM_TAG_RAPID_SPIN } ,
{ gBattleAnimSpritePal_TriForceTriangle , ANIM_TAG_TRI_FORCE_TRIANGLE } ,
{ gBattleAnimSpritePal_WispOrb , ANIM_TAG_WISP_ORB } ,
{ gBattleAnimSpritePal_WispOrb , ANIM_TAG_WISP_FIRE } ,
{ gBattleAnimSpritePal_GoldStars , ANIM_TAG_GOLD_STARS } ,
{ gBattleAnimSpritePal_EclipsingOrb , ANIM_TAG_ECLIPSING_ORB } ,
{ gBattleAnimSpritePal_GrayOrb , ANIM_TAG_GRAY_ORB } ,
{ gBattleAnimSpritePal_BlueOrb , ANIM_TAG_BLUE_ORB } ,
{ gBattleAnimSpritePal_RedOrb2 , ANIM_TAG_RED_ORB_2 } ,
{ gBattleAnimSpritePal_PinkPetal , ANIM_TAG_PINK_PETAL } ,
{ gBattleAnimSpritePal_PainSplit , ANIM_TAG_PAIN_SPLIT } ,
{ gBattleAnimSpritePal_Confetti , ANIM_TAG_CONFETTI } ,
{ gBattleAnimSpritePal_GreenStar , ANIM_TAG_GREEN_STAR } ,
{ gBattleAnimSpritePal_PinkCloud , ANIM_TAG_PINK_CLOUD } ,
{ gBattleAnimSpritePal_SweatDrop , ANIM_TAG_SWEAT_DROP } ,
{ gBattleAnimSpritePal_GuardRing , ANIM_TAG_GUARD_RING } ,
{ gBattleAnimSpritePal_PurpleScratch , ANIM_TAG_PURPLE_SCRATCH } ,
{ gBattleAnimSpritePal_PurpleScratch , ANIM_TAG_PURPLE_SWIPE } ,
{ gBattleAnimSpritePal_Finger , ANIM_TAG_TAG_HAND } ,
{ gBattleAnimSpritePal_SmallRedEye , ANIM_TAG_SMALL_RED_EYE } ,
{ gBattleAnimSpritePal_HollowOrb , ANIM_TAG_HOLLOW_ORB } ,
{ gBattleAnimSpritePal_HollowOrb , ANIM_TAG_X_SIGN } ,
{ gBattleAnimSpritePal_BluegreenOrb , ANIM_TAG_BLUEGREEN_ORB } ,
{ gBattleAnimSpritePal_PawPrint , ANIM_TAG_PAW_PRINT } ,
{ gBattleAnimSpritePal_PurpleFlame , ANIM_TAG_PURPLE_FLAME } ,
{ gBattleAnimSpritePal_RedBall , ANIM_TAG_RED_BALL } ,
{ gBattleAnimSpritePal_SmellingsaltEffect , ANIM_TAG_SMELLINGSALT_EFFECT } ,
{ gBattleAnimSpritePal_Meteor , ANIM_TAG_METEOR } ,
{ gBattleAnimSpritePal_FlatRock , ANIM_TAG_FLAT_ROCK } ,
{ gBattleAnimSpritePal_MagnifyingGlass , ANIM_TAG_MAGNIFYING_GLASS } ,
{ gBattleAnimSpritePal_BrownOrb , ANIM_TAG_BROWN_ORB } ,
{ gBattleAnimSpritePal_MetalSoundWaves , ANIM_TAG_METAL_SOUND_WAVES } ,
{ gBattleAnimSpritePal_FlyingDirt , ANIM_TAG_FLYING_DIRT } ,
{ gBattleAnimSpritePal_IcicleSpear , ANIM_TAG_ICICLE_SPEAR } ,
{ gBattleAnimSpritePal_Hail , ANIM_TAG_HAIL } ,
{ gBattleAnimSpritePal_GlowyRedOrb , ANIM_TAG_GLOWY_RED_ORB } ,
{ gBattleAnimSpritePal_GlowyGreenOrb , ANIM_TAG_GLOWY_GREEN_ORB } ,
{ gBattleAnimSpritePal_GreenSpike , ANIM_TAG_GREEN_SPIKE } ,
{ gBattleAnimSpritePal_WhiteCircleOfLight , ANIM_TAG_WHITE_CIRCLE_OF_LIGHT } ,
{ gBattleAnimSpritePal_GlowyBlueOrb , ANIM_TAG_GLOWY_BLUE_ORB } ,
{ gBattleAnimSpritePal_RedBrick , ANIM_TAG_RED_BRICK } ,
{ gBattleAnimSpritePal_WhiteFeather , ANIM_TAG_WHITE_FEATHER } ,
{ gBattleAnimSpritePal_Sparkle6 , ANIM_TAG_SPARKLE_6 } ,
{ gBattleAnimSpritePal_Splash , ANIM_TAG_SPLASH } ,
{ gBattleAnimSpritePal_Splash , ANIM_TAG_SWEAT_BEAD } ,
{ gBattleAnimSpritePal_Gem1 , ANIM_TAG_GEM_1 } ,
{ gBattleAnimSpritePal_Gem1 , ANIM_TAG_GEM_2 } ,
{ gBattleAnimSpritePal_Gem1 , ANIM_TAG_GEM_3 } ,
{ gBattleAnimSpritePal_SlamHit2 , ANIM_TAG_SLAM_HIT_2 } ,
{ gBattleAnimSpritePal_Recycle , ANIM_TAG_RECYCLE } ,
{ gBattleAnimSpritePal_RedParticles , ANIM_TAG_RED_PARTICLES } ,
{ gBattleAnimSpritePal_Protect , ANIM_TAG_PROTECT } ,
{ gBattleAnimSpritePal_DirtMound , ANIM_TAG_DIRT_MOUND } ,
{ gBattleAnimSpritePal_Shock3 , ANIM_TAG_SHOCK_3 } ,
{ gBattleAnimSpritePal_WeatherBall , ANIM_TAG_WEATHER_BALL } ,
{ gBattleAnimSpritePal_Bird , ANIM_TAG_BIRD } ,
{ gBattleAnimSpritePal_CrossImpact , ANIM_TAG_CROSS_IMPACT } ,
{ gBattleAnimSpritePal_Slash2 , ANIM_TAG_SLASH_2 } ,
{ gBattleAnimSpritePal_WhipHit , ANIM_TAG_WHIP_HIT } ,
{ gBattleAnimSpritePal_BlueRing2 , ANIM_TAG_BLUE_RING_2 } ,
2019-04-06 20:43:13 +02:00
{ gBattleAnimSpritePal_WhiteStreak , ANIM_TAG_WHITE_STREAK } ,
{ gBattleAnimSpritePal_PurpleJab , ANIM_TAG_PURPLE_JAB } ,
{ gBattleAnimSpritePal_ToxicSpikes , ANIM_TAG_TOXIC_SPIKES } ,
{ gBattleAnimSpritePal_EnergyBall , ANIM_TAG_ENERGY_BALL } ,
2018-10-22 04:30:20 +02:00
} ;
const struct BattleAnimBackground gBattleAnimBackgroundTable [ ] =
{
2019-04-06 18:38:15 +02:00
[ BG_DARK_ ] = { gBattleAnimBgImage_Dark , gBattleAnimBgPalette_Dark , gBattleAnimBgTilemap_Dark } ,
[ BG_DARK ] = { gBattleAnimBgImage_Dark , gBattleAnimBgPalette_Dark , gBattleAnimBgTilemap_Dark } ,
[ BG_GHOST ] = { gBattleAnimBgImage_Ghost , gBattleAnimBgPalette_Ghost , gBattleAnimBgTilemap_Ghost } ,
[ BG_PSYCHIC ] = { gBattleAnimBgImage_Psychic , gBattleAnimBgPalette_Psychic , gBattleAnimBgTilemap_Psychic } ,
[ BG_IMPACT_OPPONENT ] = { gBattleAnimBgImage_Impact , gBattleAnimBgPalette_Impact , gBattleAnimBgTilemap_ImpactOpponent } ,
[ BG_IMPACT_PLAYER ] = { gBattleAnimBgImage_Impact , gBattleAnimBgPalette_Impact , gBattleAnimBgTilemap_ImpactPlayer } ,
[ BG_IMPACT_CONTESTS ] = { gBattleAnimBgImage_Impact , gBattleAnimBgPalette_Impact , gBattleAnimBgTilemap_ImpactContests } ,
[ BG_DRILL ] = { gBattleAnimBgImage_Drill , gBattleAnimBgPalette_Drill , gBattleAnimBgTilemap_Drill } ,
[ BG_DRILL_CONTESTS ] = { gBattleAnimBgImage_Drill , gBattleAnimBgPalette_Drill , gBattleAnimBgTilemap_DrillContests } ,
[ BG_HIGHSPEED_OPPONENT ] = { gBattleAnimBgImage_Highspeed , gBattleAnimBgPalette_Highspeed , gBattleAnimBgTilemap_HighspeedOpponent } ,
[ BG_HIGHSPEED_PLAYER ] = { gBattleAnimBgImage_Highspeed , gBattleAnimBgPalette_Highspeed , gBattleAnimBgTilemap_HighspeedPlayer } ,
[ BG_THUNDER ] = { gBattleAnimBgImage_Thunder , gBattleAnimBgPalette_Thunder , gBattleAnimBgTilemap_Thunder } ,
[ BG_GUILLOTINE_OPPONENT ] = { gBattleAnimBgImage_Guillotine , gBattleAnimBgPalette_Guillotine , gBattleAnimBgTilemap_GuillotineOpponent } ,
[ BG_GUILLOTINE_PLAYER ] = { gBattleAnimBgImage_Guillotine , gBattleAnimBgPalette_Guillotine , gBattleAnimBgTilemap_GuillotinePlayer } ,
[ BG_GUILLOTINE_CONTESTS ] = { gBattleAnimBgImage_Guillotine , gBattleAnimBgPalette_Guillotine , gBattleAnimBgTilemap_GuillotineContests } ,
[ BG_ICE ] = { gBattleAnimBgImage_Ice , gBattleAnimBgPalette_Ice , gBattleAnimBgTilemap_Ice } ,
[ BG_COSMIC ] = { gBattleAnimBgImage_Cosmic , gBattleAnimBgPalette_Cosmic , gBattleAnimBgTilemap_Cosmic } ,
[ BG_IN_AIR ] = { gBattleAnimBgImage_InAir , gBattleAnimBgPalette_InAir , gBattleAnimBgTilemap_InAir } ,
[ BG_SKY ] = { gBattleAnimBgImage_Drill , gBattleAnimBgPalette_Sky , gBattleAnimBgTilemap_Drill } ,
[ BG_SKY_CONTESTS ] = { gBattleAnimBgImage_Drill , gBattleAnimBgPalette_Sky , gBattleAnimBgTilemap_DrillContests } ,
[ BG_AURORA ] = { gBattleAnimBgImage_Aurora , gBattleAnimBgPalette_Aurora , gBattleAnimBgTilemap_Aurora } ,
[ BG_FISSURE ] = { gBattleAnimBgImage_Fissure , gBattleAnimBgPalette_Fissure , gBattleAnimBgTilemap_Fissure } ,
[ BG_BUG_OPPONENT ] = { gBattleAnimBgImage_Highspeed , gBattleAnimBgPalette_Bug , gBattleAnimBgTilemap_HighspeedOpponent } ,
[ BG_BUG_PLAYER ] = { gBattleAnimBgImage_Highspeed , gBattleAnimBgPalette_Bug , gBattleAnimBgTilemap_HighspeedPlayer } ,
[ BG_SOLARBEAM_OPPONENT ] = { gBattleAnimBgImage_Impact , gBattleAnimBgPalette_Solarbeam , gBattleAnimBgTilemap_ImpactOpponent } ,
[ BG_SOLARBEAM_PLAYER ] = { gBattleAnimBgImage_Impact , gBattleAnimBgPalette_Solarbeam , gBattleAnimBgTilemap_ImpactPlayer } ,
[ BG_SOLARBEAM_CONTESTS ] = { gBattleAnimBgImage_Impact , gBattleAnimBgPalette_Solarbeam , gBattleAnimBgTilemap_ImpactContests } ,
2018-10-22 04:30:20 +02:00
} ;
2017-10-15 23:21:59 +02:00
static void ( * const sScriptCmdTable [ ] ) ( void ) =
{
2018-12-05 15:31:01 +01:00
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_goto ,
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
2017-10-15 23:21:59 +02:00
} ;
2017-10-14 16:55:25 +02:00
2018-06-17 16:48:58 +02:00
// code
2017-10-14 16:55:25 +02:00
void ClearBattleAnimationVars ( void )
{
s32 i ;
gAnimFramesToWait = 0 ;
gAnimScriptActive = FALSE ;
gAnimVisualTaskCount = 0 ;
gAnimSoundTaskCount = 0 ;
gAnimDisableStructPtr = NULL ;
gAnimMoveDmg = 0 ;
gAnimMovePower = 0 ;
gAnimFriendship = 0 ;
2018-06-17 16:48:58 +02:00
// Clear index array.
2017-10-14 16:55:25 +02:00
for ( i = 0 ; i < ANIM_SPRITE_INDEX_COUNT ; i + + )
2019-01-13 12:12:27 +01:00
sAnimSpriteIndexArray [ i ] = 0xFFFF ;
2017-10-14 16:55:25 +02:00
2018-06-17 16:48:58 +02:00
// Clear anim args.
2017-10-14 16:55:25 +02:00
for ( i = 0 ; i < ANIM_ARGS_COUNT ; i + + )
gBattleAnimArgs [ i ] = 0 ;
2018-12-05 15:31:01 +01:00
sMonAnimTaskIdArray [ 0 ] = 0xFF ;
sMonAnimTaskIdArray [ 1 ] = 0xFF ;
2017-10-14 23:37:44 +02:00
gAnimMoveTurn = 0 ;
2017-10-15 23:21:59 +02:00
sAnimBackgroundFadeState = 0 ;
sAnimMoveIndex = 0 ;
2018-02-06 20:48:02 +01:00
gBattleAnimAttacker = 0 ;
gBattleAnimTarget = 0 ;
2017-10-14 16:55:25 +02:00
gUnknown_02038440 = 0 ;
}
void DoMoveAnim ( u16 move )
{
2018-02-06 23:09:39 +01:00
gBattleAnimAttacker = gBattlerAttacker ;
gBattleAnimTarget = gBattlerTarget ;
2017-10-22 18:43:15 +02:00
LaunchBattleAnimation ( gBattleAnims_Moves , move , TRUE ) ;
2017-10-14 16:55:25 +02:00
}
2017-10-22 18:43:15 +02:00
void LaunchBattleAnimation ( const u8 * const animsTable [ ] , u16 tableId , bool8 isMoveAnim )
2017-10-14 16:55:25 +02:00
{
s32 i ;
if ( ! IsContest ( ) )
{
sub_80A8278 ( ) ;
2017-10-20 10:49:21 +02:00
UpdateOamPriorityInAllHealthboxes ( 0 ) ;
2018-02-06 02:46:59 +01:00
for ( i = 0 ; i < MAX_BATTLERS_COUNT ; i + + )
2017-10-14 16:55:25 +02:00
{
2018-02-06 02:46:59 +01:00
if ( GetBattlerSide ( i ) ! = 0 )
2018-04-18 16:03:15 +02:00
gAnimBattlerSpecies [ i ] = GetMonData ( & gEnemyParty [ gBattlerPartyIndexes [ i ] ] , MON_DATA_SPECIES ) ;
2017-10-14 16:55:25 +02:00
else
2018-04-18 16:03:15 +02:00
gAnimBattlerSpecies [ i ] = GetMonData ( & gPlayerParty [ gBattlerPartyIndexes [ i ] ] , MON_DATA_SPECIES ) ;
2017-10-14 16:55:25 +02:00
}
}
else
{
for ( i = 0 ; i < 4 ; i + + )
2018-11-19 16:28:55 +01:00
gAnimBattlerSpecies [ i ] = gContestResources - > field_18 - > species ;
2017-10-14 16:55:25 +02:00
}
if ( ! isMoveAnim )
2017-10-15 23:21:59 +02:00
sAnimMoveIndex = 0 ;
2017-10-14 16:55:25 +02:00
else
2017-10-15 23:21:59 +02:00
sAnimMoveIndex = tableId ;
2017-10-14 16:55:25 +02:00
for ( i = 0 ; i < ANIM_ARGS_COUNT ; i + + )
gBattleAnimArgs [ i ] = 0 ;
2018-12-05 15:31:01 +01:00
sMonAnimTaskIdArray [ 0 ] = 0xFF ;
sMonAnimTaskIdArray [ 1 ] = 0xFF ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr = animsTable [ tableId ] ;
2017-10-14 16:55:25 +02:00
gAnimScriptActive = TRUE ;
gAnimFramesToWait = 0 ;
gAnimScriptCallback = RunAnimScriptCommand ;
for ( i = 0 ; i < ANIM_SPRITE_INDEX_COUNT ; i + + )
2019-01-13 12:12:27 +01:00
sAnimSpriteIndexArray [ i ] = 0xFFFF ;
2017-10-14 16:55:25 +02:00
if ( isMoveAnim )
{
2018-12-05 15:31:01 +01:00
for ( i = 0 ; gMovesWithQuietBGM [ i ] ! = 0xFFFF ; i + + )
2017-10-14 16:55:25 +02:00
{
2018-09-10 21:19:19 +02:00
if ( tableId = = gMovesWithQuietBGM [ i ] )
2017-10-14 16:55:25 +02:00
{
2018-01-10 04:30:54 +01:00
m4aMPlayVolumeControl ( & gMPlayInfo_BGM , 0xFFFF , 128 ) ;
2017-10-14 16:55:25 +02:00
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 - - ;
}
2017-10-15 23:21:59 +02:00
static void AddSpriteIndex ( u16 index )
2017-10-14 16:55:25 +02:00
{
s32 i ;
for ( i = 0 ; i < ANIM_SPRITE_INDEX_COUNT ; i + + )
{
2018-12-05 15:31:01 +01:00
if ( sAnimSpriteIndexArray [ i ] = = 0xFFFF )
2017-10-14 16:55:25 +02:00
{
2017-10-15 23:21:59 +02:00
sAnimSpriteIndexArray [ i ] = index ;
2017-10-14 16:55:25 +02:00
return ;
}
}
}
2017-10-15 23:21:59 +02:00
static void ClearSpriteIndex ( u16 index )
2017-10-14 16:55:25 +02:00
{
s32 i ;
for ( i = 0 ; i < ANIM_SPRITE_INDEX_COUNT ; i + + )
{
2017-10-15 23:21:59 +02:00
if ( sAnimSpriteIndexArray [ i ] = = index )
2017-10-14 16:55:25 +02:00
{
2019-01-13 12:12:27 +01:00
sAnimSpriteIndexArray [ i ] = 0xFFFF ;
2017-10-14 16:55:25 +02:00
return ;
}
}
}
2017-10-15 23:21:59 +02:00
static void WaitAnimFrameCount ( void )
2017-10-14 16:55:25 +02:00
{
if ( gAnimFramesToWait < = 0 )
{
gAnimScriptCallback = RunAnimScriptCommand ;
gAnimFramesToWait = 0 ;
}
else
{
gAnimFramesToWait - - ;
}
}
2017-10-15 23:21:59 +02:00
static void RunAnimScriptCommand ( void )
2017-10-14 16:55:25 +02:00
{
do
{
2017-10-15 23:21:59 +02:00
sScriptCmdTable [ sBattleAnimScriptPtr [ 0 ] ] ( ) ;
2017-10-14 16:55:25 +02:00
} while ( gAnimFramesToWait = = 0 & & gAnimScriptActive ) ;
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_loadspritegfx ( void )
2017-10-14 16:55:25 +02:00
{
u16 index ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
2018-03-01 00:59:52 +01:00
index = T1_READ_16 ( sBattleAnimScriptPtr ) ;
2018-12-17 23:00:08 +01:00
LoadCompressedSpriteSheetUsingHeap ( & gBattleAnimPicTable [ GET_TRUE_SPRITE_INDEX ( index ) ] ) ;
LoadCompressedSpritePaletteUsingHeap ( & gBattleAnimPaletteTable [ GET_TRUE_SPRITE_INDEX ( index ) ] ) ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + = 2 ;
2017-10-14 16:55:25 +02:00
AddSpriteIndex ( GET_TRUE_SPRITE_INDEX ( index ) ) ;
gAnimFramesToWait = 1 ;
gAnimScriptCallback = WaitAnimFrameCount ;
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_unloadspritegfx ( void )
2017-10-14 16:55:25 +02:00
{
u16 index ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
2018-03-01 00:59:52 +01:00
index = T1_READ_16 ( sBattleAnimScriptPtr ) ;
2017-10-14 16:55:25 +02:00
FreeSpriteTilesByTag ( gBattleAnimPicTable [ GET_TRUE_SPRITE_INDEX ( index ) ] . tag ) ;
FreeSpritePaletteByTag ( gBattleAnimPicTable [ GET_TRUE_SPRITE_INDEX ( index ) ] . tag ) ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + = 2 ;
2017-10-14 16:55:25 +02:00
ClearSpriteIndex ( GET_TRUE_SPRITE_INDEX ( index ) ) ;
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_createsprite ( void )
2017-10-14 16:55:25 +02:00
{
s32 i ;
const struct SpriteTemplate * template ;
u8 argVar ;
u8 argsCount ;
s16 subpriority ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
2018-03-01 00:59:52 +01:00
template = ( const struct SpriteTemplate * ) ( T2_READ_32 ( sBattleAnimScriptPtr ) ) ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + = 4 ;
2017-10-14 16:55:25 +02:00
2017-10-15 23:21:59 +02:00
argVar = sBattleAnimScriptPtr [ 0 ] ;
sBattleAnimScriptPtr + + ;
2017-10-14 16:55:25 +02:00
2017-10-15 23:21:59 +02:00
argsCount = sBattleAnimScriptPtr [ 0 ] ;
sBattleAnimScriptPtr + + ;
2017-10-14 16:55:25 +02:00
for ( i = 0 ; i < argsCount ; i + + )
{
2018-03-01 00:59:52 +01:00
gBattleAnimArgs [ i ] = T1_READ_16 ( sBattleAnimScriptPtr ) ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + = 2 ;
2017-10-14 16:55:25 +02:00
}
if ( argVar & 0x80 )
{
argVar ^ = 0x80 ;
if ( argVar > = 0x40 )
argVar - = 0x40 ;
else
argVar * = - 1 ;
2018-12-18 05:08:08 +01:00
subpriority = GetBattlerSpriteSubpriority ( gBattleAnimTarget ) + ( s8 ) ( argVar ) ;
2017-10-14 16:55:25 +02:00
}
else
{
if ( argVar > = 0x40 )
argVar - = 0x40 ;
else
argVar * = - 1 ;
2018-12-18 05:08:08 +01:00
subpriority = GetBattlerSpriteSubpriority ( gBattleAnimAttacker ) + ( s8 ) ( argVar ) ;
2017-10-14 16:55:25 +02:00
}
if ( subpriority < 3 )
subpriority = 3 ;
2018-12-20 04:13:26 +01:00
CreateSpriteAndAnimate (
template ,
GetBattlerSpriteCoord ( gBattleAnimTarget , BATTLER_COORD_X_2 ) ,
GetBattlerSpriteCoord ( gBattleAnimTarget , BATTLER_COORD_Y_PIC_OFFSET ) ,
subpriority ) ;
2017-10-14 16:55:25 +02:00
gAnimVisualTaskCount + + ;
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_createvisualtask ( void )
2017-10-14 16:55:25 +02:00
{
TaskFunc taskFunc ;
u8 taskPriority ;
u8 taskId ;
u8 numArgs ;
s32 i ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
2017-10-14 16:55:25 +02:00
2018-03-01 00:59:52 +01:00
taskFunc = ( TaskFunc ) T2_READ_32 ( sBattleAnimScriptPtr ) ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + = 4 ;
2017-10-14 16:55:25 +02:00
2017-10-15 23:21:59 +02:00
taskPriority = sBattleAnimScriptPtr [ 0 ] ;
sBattleAnimScriptPtr + + ;
2017-10-14 16:55:25 +02:00
2017-10-15 23:21:59 +02:00
numArgs = sBattleAnimScriptPtr [ 0 ] ;
sBattleAnimScriptPtr + + ;
2017-10-14 16:55:25 +02:00
for ( i = 0 ; i < numArgs ; i + + )
{
2018-03-01 00:59:52 +01:00
gBattleAnimArgs [ i ] = T1_READ_16 ( sBattleAnimScriptPtr ) ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + = 2 ;
2017-10-14 16:55:25 +02:00
}
taskId = CreateTask ( taskFunc , taskPriority ) ;
taskFunc ( taskId ) ;
gAnimVisualTaskCount + + ;
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_delay ( void )
2017-10-14 16:55:25 +02:00
{
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
gAnimFramesToWait = sBattleAnimScriptPtr [ 0 ] ;
2017-10-14 16:55:25 +02:00
if ( gAnimFramesToWait = = 0 )
2018-12-05 15:31:01 +01:00
gAnimFramesToWait = - 1 ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
2017-10-14 16:55:25 +02:00
gAnimScriptCallback = WaitAnimFrameCount ;
}
2018-06-17 16:48:58 +02:00
// Wait for visual tasks to finish.
2017-10-15 23:21:59 +02:00
static void ScriptCmd_waitforvisualfinish ( void )
2017-10-14 16:55:25 +02:00
{
if ( gAnimVisualTaskCount = = 0 )
{
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
2017-10-14 16:55:25 +02:00
gAnimFramesToWait = 0 ;
}
else
{
gAnimFramesToWait = 1 ;
}
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_hang1 ( void )
2017-10-14 16:55:25 +02:00
{
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_hang2 ( void )
2017-10-14 16:55:25 +02:00
{
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_end ( void )
2017-10-14 16:55:25 +02:00
{
s32 i ;
bool32 continuousAnim = FALSE ;
2018-06-17 16:48:58 +02:00
// Keep waiting as long as there are animations to be done.
2017-10-14 16:55:25 +02:00
if ( gAnimVisualTaskCount ! = 0 | | gAnimSoundTaskCount ! = 0
2018-12-05 15:31:01 +01:00
| | sMonAnimTaskIdArray [ 0 ] ! = 0xFF | | sMonAnimTaskIdArray [ 1 ] ! = 0xFF )
2017-10-14 16:55:25 +02:00
{
2017-10-15 23:21:59 +02:00
sSoundAnimFramesToWait = 0 ;
2017-10-14 16:55:25 +02:00
gAnimFramesToWait = 1 ;
return ;
}
2018-06-17 16:48:58 +02:00
// Finish the sound effects.
2017-10-14 16:55:25 +02:00
if ( IsSEPlaying ( ) )
{
2018-06-17 16:48:58 +02:00
if ( + + sSoundAnimFramesToWait < = 90 ) // Wait 90 frames, then halt the sound effect.
2017-10-14 16:55:25 +02:00
{
gAnimFramesToWait = 1 ;
return ;
}
else
{
2018-01-10 04:30:54 +01:00
m4aMPlayStop ( & gMPlayInfo_SE1 ) ;
m4aMPlayStop ( & gMPlayInfo_SE2 ) ;
2017-10-14 16:55:25 +02:00
}
}
2018-06-17 16:48:58 +02:00
// The SE has halted, so set the SE Frame Counter to 0 and continue.
2017-10-15 23:21:59 +02:00
sSoundAnimFramesToWait = 0 ;
2017-10-14 16:55:25 +02:00
for ( i = 0 ; i < ANIM_SPRITE_INDEX_COUNT ; i + + )
{
2018-12-05 15:31:01 +01:00
if ( sAnimSpriteIndexArray [ i ] ! = 0xFFFF )
2017-10-14 16:55:25 +02:00
{
2017-10-15 23:21:59 +02:00
FreeSpriteTilesByTag ( gBattleAnimPicTable [ sAnimSpriteIndexArray [ i ] ] . tag ) ;
FreeSpritePaletteByTag ( gBattleAnimPicTable [ sAnimSpriteIndexArray [ i ] ] . tag ) ;
2019-01-13 12:12:27 +01:00
sAnimSpriteIndexArray [ i ] = 0xFFFF ; // set terminator.
2017-10-14 16:55:25 +02:00
}
}
2018-06-17 16:48:58 +02:00
if ( ! continuousAnim ) // May have been used for debug?
2017-10-14 16:55:25 +02:00
{
2018-01-10 04:30:54 +01:00
m4aMPlayVolumeControl ( & gMPlayInfo_BGM , 0xFFFF , 256 ) ;
2017-10-14 16:55:25 +02:00
if ( ! IsContest ( ) )
{
sub_80A8278 ( ) ;
2017-10-20 10:49:21 +02:00
UpdateOamPriorityInAllHealthboxes ( 1 ) ;
2017-10-14 16:55:25 +02:00
}
gAnimScriptActive = FALSE ;
}
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_playse ( void )
2017-10-14 16:55:25 +02:00
{
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
2018-03-01 00:59:52 +01:00
PlaySE ( T1_READ_16 ( sBattleAnimScriptPtr ) ) ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + = 2 ;
2017-10-14 16:55:25 +02:00
}
2018-03-01 00:59:52 +01:00
# define t1_MONBG_BATTLER 0
2017-10-14 16:55:25 +02:00
# define t1_MON_IN_BG2 1
# define t1_CREATE_ANOTHER_TASK 2
# define t1_IS_SECONDMON_BG 3
2018-03-01 00:59:52 +01:00
# define t2_BATTLER_SPRITE_ID 0
2017-10-14 16:55:25 +02:00
# define t2_MON_IN_BG2 5
2018-03-01 00:59:52 +01:00
# define t2_MONBG_BATTLER 6
2017-10-14 16:55:25 +02:00
2017-10-15 23:21:59 +02:00
static void sub_80A40F4 ( u8 taskId )
2017-10-14 16:55:25 +02:00
{
u8 newTaskId ;
s16 * selfData = gTasks [ taskId ] . data ;
2018-03-01 00:59:52 +01:00
u8 battlerSpriteId = gBattlerSpriteIds [ selfData [ t1_MONBG_BATTLER ] ] ;
2018-09-10 17:25:58 +02:00
gSprites [ battlerSpriteId ] . invisible = TRUE ;
2017-10-14 16:55:25 +02:00
if ( ! selfData [ t1_CREATE_ANOTHER_TASK ] )
{
DestroyAnimVisualTask ( taskId ) ;
return ;
}
newTaskId = CreateTask ( task_pA_ma0A_obj_to_bg_pal , 10 ) ;
2018-03-01 00:59:52 +01:00
gTasks [ newTaskId ] . data [ t2_BATTLER_SPRITE_ID ] = battlerSpriteId ;
gTasks [ newTaskId ] . data [ 1 ] = gSprites [ battlerSpriteId ] . pos1 . x + gSprites [ battlerSpriteId ] . pos2 . x ;
gTasks [ newTaskId ] . data [ 2 ] = gSprites [ battlerSpriteId ] . pos1 . y + gSprites [ battlerSpriteId ] . pos2 . y ;
2017-10-14 16:55:25 +02:00
if ( ! selfData [ t1_MON_IN_BG2 ] )
{
gTasks [ newTaskId ] . data [ 3 ] = gBattle_BG1_X ;
gTasks [ newTaskId ] . data [ 4 ] = gBattle_BG1_Y ;
}
else
{
gTasks [ newTaskId ] . data [ 3 ] = gBattle_BG2_X ;
gTasks [ newTaskId ] . data [ 4 ] = gBattle_BG2_Y ;
}
gTasks [ newTaskId ] . data [ t2_MON_IN_BG2 ] = selfData [ t1_MON_IN_BG2 ] ;
2018-03-01 00:59:52 +01:00
gTasks [ newTaskId ] . data [ t2_MONBG_BATTLER ] = selfData [ t1_MONBG_BATTLER ] ;
2017-10-15 23:21:59 +02:00
sMonAnimTaskIdArray [ selfData [ t1_IS_SECONDMON_BG ] ] = newTaskId ;
2017-10-14 16:55:25 +02:00
DestroyAnimVisualTask ( taskId ) ;
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_monbg ( void )
2017-10-14 16:55:25 +02:00
{
bool8 toBG_2 ;
u8 taskId ;
2018-03-01 00:59:52 +01:00
u8 battlerId ;
2018-06-17 16:48:58 +02:00
u8 animBattler ;
2017-10-14 16:55:25 +02:00
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
2017-10-14 16:55:25 +02:00
2018-06-17 16:48:58 +02:00
animBattler = sBattleAnimScriptPtr [ 0 ] ;
if ( animBattler & ANIM_TARGET )
2018-03-01 00:59:52 +01:00
battlerId = gBattleAnimTarget ;
2017-10-14 16:55:25 +02:00
else
2018-03-01 00:59:52 +01:00
battlerId = gBattleAnimAttacker ;
2017-10-14 16:55:25 +02:00
2018-03-01 00:59:52 +01:00
if ( IsBattlerSpriteVisible ( battlerId ) )
2017-10-14 16:55:25 +02:00
{
2018-03-01 00:59:52 +01:00
u8 position = GetBattlerPosition ( battlerId ) ;
2018-01-16 23:42:31 +01:00
if ( position = = B_POSITION_OPPONENT_LEFT | | position = = B_POSITION_PLAYER_RIGHT | | IsContest ( ) )
2017-10-14 16:55:25 +02:00
toBG_2 = FALSE ;
else
toBG_2 = TRUE ;
2018-12-24 16:51:15 +01:00
MoveBattlerSpriteToBG ( battlerId , toBG_2 , FALSE ) ;
2017-10-14 16:55:25 +02:00
taskId = CreateTask ( sub_80A40F4 , 10 ) ;
gAnimVisualTaskCount + + ;
2018-03-01 00:59:52 +01:00
gTasks [ taskId ] . data [ t1_MONBG_BATTLER ] = battlerId ;
2017-10-14 16:55:25 +02:00
gTasks [ taskId ] . data [ t1_MON_IN_BG2 ] = toBG_2 ;
gTasks [ taskId ] . data [ t1_CREATE_ANOTHER_TASK ] = TRUE ;
gTasks [ taskId ] . data [ t1_IS_SECONDMON_BG ] = 0 ;
}
2018-03-01 00:59:52 +01:00
battlerId ^ = BIT_FLANK ;
if ( IsBattlerSpriteVisible ( battlerId ) )
2017-10-14 16:55:25 +02:00
{
2018-03-01 00:59:52 +01:00
u8 position = GetBattlerPosition ( battlerId ) ;
2018-01-16 23:42:31 +01:00
if ( position = = B_POSITION_OPPONENT_LEFT | | position = = B_POSITION_PLAYER_RIGHT | | IsContest ( ) )
2017-10-14 16:55:25 +02:00
toBG_2 = FALSE ;
else
toBG_2 = TRUE ;
2018-12-24 16:51:15 +01:00
MoveBattlerSpriteToBG ( battlerId , toBG_2 , FALSE ) ;
2017-10-14 16:55:25 +02:00
taskId = CreateTask ( sub_80A40F4 , 10 ) ;
gAnimVisualTaskCount + + ;
2018-03-01 00:59:52 +01:00
gTasks [ taskId ] . data [ 0 ] = battlerId ;
2017-10-14 16:55:25 +02:00
gTasks [ taskId ] . data [ 1 ] = toBG_2 ;
gTasks [ taskId ] . data [ t1_CREATE_ANOTHER_TASK ] = TRUE ;
gTasks [ taskId ] . data [ t1_IS_SECONDMON_BG ] = 1 ;
}
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
2017-10-14 16:55:25 +02:00
gAnimFramesToWait = 1 ;
gAnimScriptCallback = WaitAnimFrameCount ;
}
2018-03-01 00:59:52 +01:00
bool8 IsBattlerSpriteVisible ( u8 battlerId )
2017-10-14 16:55:25 +02:00
{
if ( IsContest ( ) )
{
2018-03-01 00:59:52 +01:00
if ( battlerId = = gBattleAnimAttacker )
2017-10-14 16:55:25 +02:00
return TRUE ;
else
return FALSE ;
}
2018-03-01 00:59:52 +01:00
if ( ! IsBattlerSpritePresent ( battlerId ) )
2017-10-14 16:55:25 +02:00
return FALSE ;
if ( IsContest ( ) )
2018-06-17 16:48:58 +02:00
return TRUE ; // This line won't ever be reached.
2018-03-01 00:59:52 +01:00
if ( ! gBattleSpritesDataPtr - > battlerData [ battlerId ] . invisible | | ! gSprites [ gBattlerSpriteIds [ battlerId ] ] . invisible )
2017-10-14 16:55:25 +02:00
return TRUE ;
return FALSE ;
}
2018-12-24 16:51:15 +01:00
void MoveBattlerSpriteToBG ( u8 battlerId , bool8 toBG_2 , bool8 setSpriteInvisible )
2017-10-14 16:55:25 +02:00
{
2019-02-06 20:17:09 +01:00
struct BattleAnimBgData animBg ;
2018-03-01 00:59:52 +01:00
u8 battlerSpriteId ;
2017-10-14 16:55:25 +02:00
if ( ! toBG_2 )
{
2018-03-01 00:59:52 +01:00
u8 battlerPosition ;
2017-10-14 16:55:25 +02:00
if ( IsContest ( ) = = TRUE )
{
2019-02-17 06:25:48 +01:00
RequestDma3Fill ( 0 , ( void * ) ( BG_SCREEN_ADDR ( 16 ) ) , 0x2000 , 1 ) ;
RequestDma3Fill ( 0xFF , ( void * ) ( BG_SCREEN_ADDR ( 30 ) ) , 0x1000 , 0 ) ;
2017-10-14 16:55:25 +02:00
}
else
{
2019-02-17 06:25:48 +01:00
RequestDma3Fill ( 0 , ( void * ) ( BG_SCREEN_ADDR ( 8 ) ) , 0x2000 , 1 ) ;
RequestDma3Fill ( 0xFF , ( void * ) ( BG_SCREEN_ADDR ( 28 ) ) , 0x1000 , 0 ) ;
2017-10-14 16:55:25 +02:00
}
2019-02-06 20:17:09 +01:00
sub_80A6B30 ( & animBg ) ;
CpuFill16 ( 0 , animBg . bgTiles , 0x1000 ) ;
CpuFill16 ( 0xFF , animBg . bgTilemap , 0x800 ) ;
2017-10-14 16:55:25 +02:00
SetAnimBgAttribute ( 1 , BG_ANIM_PRIORITY , 2 ) ;
SetAnimBgAttribute ( 1 , BG_ANIM_SCREEN_SIZE , 1 ) ;
SetAnimBgAttribute ( 1 , BG_ANIM_AREA_OVERFLOW_MODE , 0 ) ;
2018-03-01 00:59:52 +01:00
battlerSpriteId = gBattlerSpriteIds [ battlerId ] ;
2017-10-14 16:55:25 +02:00
2018-03-01 00:59:52 +01:00
gBattle_BG1_X = - ( gSprites [ battlerSpriteId ] . pos1 . x + gSprites [ battlerSpriteId ] . pos2 . x ) + 0x20 ;
2018-11-19 16:28:55 +01:00
if ( IsContest ( ) & & IsSpeciesNotUnown ( gContestResources - > field_18 - > species ) )
2017-10-14 16:55:25 +02:00
gBattle_BG1_X - - ;
2018-03-01 00:59:52 +01:00
gBattle_BG1_Y = - ( gSprites [ battlerSpriteId ] . pos1 . y + gSprites [ battlerSpriteId ] . pos2 . y ) + 0x20 ;
2017-10-14 16:55:25 +02:00
if ( setSpriteInvisible )
2018-09-10 17:25:58 +02:00
gSprites [ gBattlerSpriteIds [ battlerId ] ] . invisible = TRUE ;
2017-10-14 16:55:25 +02:00
SetGpuReg ( REG_OFFSET_BG1HOFS , gBattle_BG1_X ) ;
SetGpuReg ( REG_OFFSET_BG1VOFS , gBattle_BG1_Y ) ;
2019-02-06 20:17:09 +01:00
LoadPalette ( & gPlttBufferUnfaded [ 0x100 + battlerId * 16 ] , animBg . paletteId * 16 , 0x20 ) ;
CpuCopy32 ( & gPlttBufferUnfaded [ 0x100 + battlerId * 16 ] , ( void * ) ( BG_PLTT + animBg . paletteId * 32 ) , 0x20 ) ;
2017-10-14 16:55:25 +02:00
if ( IsContest ( ) )
2018-03-01 00:59:52 +01:00
battlerPosition = 0 ;
2017-10-14 16:55:25 +02:00
else
2018-03-01 00:59:52 +01:00
battlerPosition = GetBattlerPosition ( battlerId ) ;
2017-10-14 16:55:25 +02:00
2019-02-06 20:17:09 +01:00
sub_8118FBC ( 1 , 0 , 0 , battlerPosition , animBg . paletteId , animBg . bgTiles , animBg . bgTilemap , animBg . tilesOffset ) ;
2017-10-14 16:55:25 +02:00
if ( IsContest ( ) )
sub_80A46A0 ( ) ;
}
else
{
2019-02-17 06:25:48 +01:00
RequestDma3Fill ( 0 , ( void * ) ( BG_SCREEN_ADDR ( 12 ) ) , 0x2000 , 1 ) ;
RequestDma3Fill ( 0 , ( void * ) ( BG_SCREEN_ADDR ( 30 ) ) , 0x1000 , 1 ) ;
2019-02-06 20:17:09 +01:00
sub_80A6B90 ( & animBg , 2 ) ;
CpuFill16 ( 0 , animBg . bgTiles + 0x1000 , 0x1000 ) ;
CpuFill16 ( 0 , animBg . bgTilemap + 0x400 , 0x800 ) ;
2017-10-14 16:55:25 +02:00
SetAnimBgAttribute ( 2 , BG_ANIM_PRIORITY , 2 ) ;
SetAnimBgAttribute ( 2 , BG_ANIM_SCREEN_SIZE , 1 ) ;
SetAnimBgAttribute ( 2 , BG_ANIM_AREA_OVERFLOW_MODE , 0 ) ;
2018-03-01 00:59:52 +01:00
battlerSpriteId = gBattlerSpriteIds [ battlerId ] ;
2017-10-14 16:55:25 +02:00
2018-03-01 00:59:52 +01:00
gBattle_BG2_X = - ( gSprites [ battlerSpriteId ] . pos1 . x + gSprites [ battlerSpriteId ] . pos2 . x ) + 0x20 ;
gBattle_BG2_Y = - ( gSprites [ battlerSpriteId ] . pos1 . y + gSprites [ battlerSpriteId ] . pos2 . y ) + 0x20 ;
2017-10-14 16:55:25 +02:00
if ( setSpriteInvisible )
2018-09-10 17:25:58 +02:00
gSprites [ gBattlerSpriteIds [ battlerId ] ] . invisible = TRUE ;
2017-10-14 16:55:25 +02:00
SetGpuReg ( REG_OFFSET_BG2HOFS , gBattle_BG2_X ) ;
SetGpuReg ( REG_OFFSET_BG2VOFS , gBattle_BG2_Y ) ;
2018-03-01 00:59:52 +01:00
LoadPalette ( & gPlttBufferUnfaded [ 0x100 + battlerId * 16 ] , 0x90 , 0x20 ) ;
CpuCopy32 ( & gPlttBufferUnfaded [ 0x100 + battlerId * 16 ] , ( void * ) ( BG_PLTT + 0x120 ) , 0x20 ) ;
2017-10-14 16:55:25 +02:00
2019-02-06 20:17:09 +01:00
sub_8118FBC ( 2 , 0 , 0 , GetBattlerPosition ( battlerId ) , animBg . paletteId , animBg . bgTiles + 0x1000 , animBg . bgTilemap + 0x400 , animBg . tilesOffset ) ;
2017-10-14 16:55:25 +02:00
}
}
2017-10-15 23:21:59 +02:00
static void sub_80A46A0 ( void )
2017-10-14 23:37:44 +02:00
{
s32 i , j ;
2019-02-06 20:17:09 +01:00
struct BattleAnimBgData animBg ;
2017-10-14 23:37:44 +02:00
u16 * ptr ;
2018-11-19 16:28:55 +01:00
if ( IsSpeciesNotUnown ( gContestResources - > field_18 - > species ) )
2017-10-14 23:37:44 +02:00
{
2019-02-06 20:17:09 +01:00
sub_80A6B30 ( & animBg ) ;
ptr = animBg . bgTilemap ;
2017-10-14 23:37:44 +02:00
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_80A4720 ( u16 a , u16 * b , u32 c , u8 d )
{
s32 i , j ;
s32 var ;
if ( d = = 0 )
var = 32 ;
else
var = 64 ;
a < < = 12 ;
for ( i = 0 ; i < var ; i + + )
{
for ( j = 0 ; j < 32 ; j + + )
b [ j + i * 32 ] = ( ( b [ j + i * 32 ] & 0xFFF ) | a ) + c ;
}
}
void sub_80A477C ( bool8 to_BG2 )
{
2019-02-06 20:17:09 +01:00
struct BattleAnimBgData animBg ;
sub_80A6B30 ( & animBg ) ;
2017-10-14 23:37:44 +02:00
if ( ! to_BG2 | | IsContest ( ) )
{
sub_80A6C68 ( 1 ) ;
gBattle_BG1_X = 0 ;
gBattle_BG1_Y = 0 ;
}
else
{
sub_80A6C68 ( 2 ) ;
gBattle_BG2_X = 0 ;
gBattle_BG2_Y = 0 ;
}
}
2017-10-15 23:21:59 +02:00
static void task_pA_ma0A_obj_to_bg_pal ( u8 taskId )
2017-10-14 23:37:44 +02:00
{
2017-10-20 00:01:17 +02:00
u8 spriteId , palIndex ;
s16 x , y ;
2019-02-06 20:17:09 +01:00
struct BattleAnimBgData animBg ;
2017-10-14 23:37:44 +02:00
2017-10-20 00:01:17 +02:00
spriteId = gTasks [ taskId ] . data [ 0 ] ;
palIndex = gTasks [ taskId ] . data [ 6 ] ;
2019-02-06 20:17:09 +01:00
sub_80A6B30 ( & animBg ) ;
2017-10-20 00:01:17 +02:00
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 ) ;
2017-10-14 23:37:44 +02:00
if ( gTasks [ taskId ] . data [ 5 ] = = 0 )
{
u16 * src ;
u16 * dst ;
2017-10-20 00:01:17 +02:00
gBattle_BG1_X = x + gTasks [ taskId ] . data [ 3 ] ;
gBattle_BG1_Y = y + gTasks [ taskId ] . data [ 4 ] ;
src = gPlttBufferFaded + 0x100 + palIndex * 16 ;
2019-02-06 20:17:09 +01:00
dst = gPlttBufferFaded + 0x100 + animBg . paletteId * 16 - 256 ;
2017-10-14 23:37:44 +02:00
CpuCopy32 ( src , dst , 0x20 ) ;
}
else
{
u16 * src ;
u16 * dst ;
2017-10-20 00:01:17 +02:00
gBattle_BG2_X = x + gTasks [ taskId ] . data [ 3 ] ;
gBattle_BG2_Y = y + gTasks [ taskId ] . data [ 4 ] ;
src = gPlttBufferFaded + 0x100 + palIndex * 16 ;
2017-10-14 23:37:44 +02:00
dst = gPlttBufferFaded + 0x100 - 112 ;
CpuCopy32 ( src , dst , 0x20 ) ;
}
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_clearmonbg ( void )
2017-10-14 23:37:44 +02:00
{
2018-06-17 16:48:58 +02:00
u8 animBattlerId ;
2018-03-01 00:59:52 +01:00
u8 battlerId ;
2017-10-14 23:37:44 +02:00
u8 taskId ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
2018-06-17 16:48:58 +02:00
animBattlerId = sBattleAnimScriptPtr [ 0 ] ;
2017-10-14 23:37:44 +02:00
2018-06-17 16:48:58 +02:00
if ( animBattlerId = = ANIM_ATTACKER )
animBattlerId = ANIM_ATK_PARTNER ;
else if ( animBattlerId = = ANIM_TARGET )
animBattlerId = ANIM_DEF_PARTNER ;
2017-10-14 23:37:44 +02:00
2018-06-17 16:48:58 +02:00
if ( animBattlerId = = ANIM_ATTACKER | | animBattlerId = = ANIM_ATK_PARTNER )
2018-03-01 00:59:52 +01:00
battlerId = gBattleAnimAttacker ;
2017-10-14 23:37:44 +02:00
else
2018-03-01 00:59:52 +01:00
battlerId = gBattleAnimTarget ;
2017-10-14 23:37:44 +02:00
2018-12-05 15:31:01 +01:00
if ( sMonAnimTaskIdArray [ 0 ] ! = 0xFF )
2018-09-10 17:25:58 +02:00
gSprites [ gBattlerSpriteIds [ battlerId ] ] . invisible = FALSE ;
2018-12-05 15:31:01 +01:00
if ( animBattlerId > 1 & & sMonAnimTaskIdArray [ 1 ] ! = 0xFF )
2018-09-10 17:25:58 +02:00
gSprites [ gBattlerSpriteIds [ battlerId ^ BIT_FLANK ] ] . invisible = FALSE ;
2017-10-14 23:37:44 +02:00
else
2018-06-17 16:48:58 +02:00
animBattlerId = 0 ;
2017-10-14 23:37:44 +02:00
taskId = CreateTask ( sub_80A4980 , 5 ) ;
2018-06-17 16:48:58 +02:00
gTasks [ taskId ] . data [ 0 ] = animBattlerId ;
2018-03-01 00:59:52 +01:00
gTasks [ taskId ] . data [ 2 ] = battlerId ;
2017-10-14 23:37:44 +02:00
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
2017-10-14 23:37:44 +02:00
}
2017-10-15 23:21:59 +02:00
static void sub_80A4980 ( u8 taskId )
2017-10-14 23:37:44 +02:00
{
gTasks [ taskId ] . data [ 1 ] + + ;
if ( gTasks [ taskId ] . data [ 1 ] ! = 1 )
{
u8 to_BG2 ;
2018-02-06 02:46:59 +01:00
u8 position = GetBattlerPosition ( gTasks [ taskId ] . data [ 2 ] ) ;
2018-01-16 23:42:31 +01:00
if ( position = = B_POSITION_OPPONENT_LEFT | | position = = B_POSITION_PLAYER_RIGHT | | IsContest ( ) )
2017-10-14 23:37:44 +02:00
to_BG2 = FALSE ;
else
to_BG2 = TRUE ;
2018-12-05 15:31:01 +01:00
if ( sMonAnimTaskIdArray [ 0 ] ! = 0xFF )
2017-10-14 23:37:44 +02:00
{
sub_80A477C ( to_BG2 ) ;
2017-10-15 23:21:59 +02:00
DestroyTask ( sMonAnimTaskIdArray [ 0 ] ) ;
2018-12-05 15:31:01 +01:00
sMonAnimTaskIdArray [ 0 ] = 0xFF ;
2017-10-14 23:37:44 +02:00
}
if ( gTasks [ taskId ] . data [ 0 ] > 1 )
{
sub_80A477C ( to_BG2 ^ 1 ) ;
2017-10-15 23:21:59 +02:00
DestroyTask ( sMonAnimTaskIdArray [ 1 ] ) ;
2018-12-05 15:31:01 +01:00
sMonAnimTaskIdArray [ 1 ] = 0xFF ;
2017-10-14 23:37:44 +02:00
}
DestroyTask ( taskId ) ;
}
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_monbg_22 ( void )
2017-10-14 23:37:44 +02:00
{
bool8 toBG_2 ;
2018-03-01 00:59:52 +01:00
u8 battlerId ;
2018-06-17 16:48:58 +02:00
u8 animBattlerId ;
2017-10-14 23:37:44 +02:00
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
2017-10-14 23:37:44 +02:00
2018-06-17 16:48:58 +02:00
animBattlerId = sBattleAnimScriptPtr [ 0 ] ;
2017-10-14 23:37:44 +02:00
2018-06-17 16:48:58 +02:00
if ( animBattlerId = = ANIM_ATTACKER )
animBattlerId = ANIM_ATK_PARTNER ;
else if ( animBattlerId = = ANIM_TARGET )
animBattlerId = ANIM_DEF_PARTNER ;
2017-10-14 23:37:44 +02:00
2018-06-17 16:48:58 +02:00
if ( animBattlerId = = ANIM_ATTACKER | | animBattlerId = = ANIM_ATK_PARTNER )
2018-03-01 00:59:52 +01:00
battlerId = gBattleAnimAttacker ;
2017-10-14 23:37:44 +02:00
else
2018-03-01 00:59:52 +01:00
battlerId = gBattleAnimTarget ;
2017-10-14 23:37:44 +02:00
2018-03-01 00:59:52 +01:00
if ( IsBattlerSpriteVisible ( battlerId ) )
2017-10-14 23:37:44 +02:00
{
2018-03-01 00:59:52 +01:00
u8 position = GetBattlerPosition ( battlerId ) ;
2018-01-16 23:42:31 +01:00
if ( position = = B_POSITION_OPPONENT_LEFT | | position = = B_POSITION_PLAYER_RIGHT | | IsContest ( ) )
2017-10-14 23:37:44 +02:00
toBG_2 = FALSE ;
else
toBG_2 = TRUE ;
2018-12-24 16:51:15 +01:00
MoveBattlerSpriteToBG ( battlerId , toBG_2 , FALSE ) ;
2017-10-14 23:37:44 +02:00
}
2018-03-01 00:59:52 +01:00
battlerId ^ = BIT_FLANK ;
2018-06-17 16:48:58 +02:00
if ( animBattlerId > 1 & & IsBattlerSpriteVisible ( battlerId ) )
2017-10-14 23:37:44 +02:00
{
2018-03-01 00:59:52 +01:00
u8 position = GetBattlerPosition ( battlerId ) ;
2018-01-16 23:42:31 +01:00
if ( position = = B_POSITION_OPPONENT_LEFT | | position = = B_POSITION_PLAYER_RIGHT | | IsContest ( ) )
2017-10-14 23:37:44 +02:00
toBG_2 = FALSE ;
else
toBG_2 = TRUE ;
2018-12-24 16:51:15 +01:00
MoveBattlerSpriteToBG ( battlerId , toBG_2 , FALSE ) ;
2017-10-14 23:37:44 +02:00
}
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
2017-10-14 23:37:44 +02:00
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_clearmonbg_23 ( void )
2017-10-14 23:37:44 +02:00
{
2018-06-17 16:48:58 +02:00
u8 animBattlerId ;
2018-03-01 00:59:52 +01:00
u8 battlerId ;
2017-10-14 23:37:44 +02:00
u8 taskId ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
2018-06-17 16:48:58 +02:00
animBattlerId = sBattleAnimScriptPtr [ 0 ] ;
2017-10-14 23:37:44 +02:00
2018-06-17 16:48:58 +02:00
if ( animBattlerId = = ANIM_ATTACKER )
animBattlerId = ANIM_ATK_PARTNER ;
else if ( animBattlerId = = ANIM_TARGET )
animBattlerId = ANIM_DEF_PARTNER ;
2017-10-14 23:37:44 +02:00
2018-06-17 16:48:58 +02:00
if ( animBattlerId = = ANIM_ATTACKER | | animBattlerId = = ANIM_ATK_PARTNER )
2018-03-01 00:59:52 +01:00
battlerId = gBattleAnimAttacker ;
2017-10-14 23:37:44 +02:00
else
2018-03-01 00:59:52 +01:00
battlerId = gBattleAnimTarget ;
2017-10-14 23:37:44 +02:00
2018-03-01 00:59:52 +01:00
if ( IsBattlerSpriteVisible ( battlerId ) )
2018-09-10 17:25:58 +02:00
gSprites [ gBattlerSpriteIds [ battlerId ] ] . invisible = FALSE ;
2018-06-17 16:48:58 +02:00
if ( animBattlerId > 1 & & IsBattlerSpriteVisible ( battlerId ^ BIT_FLANK ) )
2018-09-10 17:25:58 +02:00
gSprites [ gBattlerSpriteIds [ battlerId ^ BIT_FLANK ] ] . invisible = FALSE ;
2017-10-14 23:37:44 +02:00
else
2018-06-17 16:48:58 +02:00
animBattlerId = 0 ;
2017-10-14 23:37:44 +02:00
taskId = CreateTask ( sub_80A4BB0 , 5 ) ;
2018-06-17 16:48:58 +02:00
gTasks [ taskId ] . data [ 0 ] = animBattlerId ;
2018-03-01 00:59:52 +01:00
gTasks [ taskId ] . data [ 2 ] = battlerId ;
2017-10-14 23:37:44 +02:00
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
2017-10-14 23:37:44 +02:00
}
2017-10-15 23:21:59 +02:00
static void sub_80A4BB0 ( u8 taskId )
2017-10-14 23:37:44 +02:00
{
gTasks [ taskId ] . data [ 1 ] + + ;
if ( gTasks [ taskId ] . data [ 1 ] ! = 1 )
{
bool8 toBG_2 ;
2018-03-01 00:59:52 +01:00
u8 battlerId = gTasks [ taskId ] . data [ 2 ] ;
u8 position = GetBattlerPosition ( battlerId ) ;
2018-01-16 23:42:31 +01:00
if ( position = = B_POSITION_OPPONENT_LEFT | | position = = B_POSITION_PLAYER_RIGHT | | IsContest ( ) )
2017-10-14 23:37:44 +02:00
toBG_2 = FALSE ;
else
toBG_2 = TRUE ;
2018-03-01 00:59:52 +01:00
if ( IsBattlerSpriteVisible ( battlerId ) )
2017-10-14 23:37:44 +02:00
sub_80A477C ( toBG_2 ) ;
2018-03-01 00:59:52 +01:00
if ( gTasks [ taskId ] . data [ 0 ] > 1 & & IsBattlerSpriteVisible ( battlerId ^ BIT_FLANK ) )
2017-10-14 23:37:44 +02:00
sub_80A477C ( toBG_2 ^ 1 ) ;
DestroyTask ( taskId ) ;
}
}
2018-03-01 00:59:52 +01:00
# undef t1_MONBG_BATTLER
2017-10-14 23:37:44 +02:00
# undef t1_MON_IN_BG2
# undef t1_CREATE_ANOTHER_TASK
# undef t1_IS_SECONDMON_BG
2018-03-01 00:59:52 +01:00
# undef t2_BATTLER_SPRITE_ID
2017-10-14 23:37:44 +02:00
# undef t2_MON_IN_BG2
2018-03-01 00:59:52 +01:00
# undef t2_MONBG_BATTLER
2017-10-14 23:37:44 +02:00
2017-10-15 23:21:59 +02:00
static void ScriptCmd_setalpha ( void )
2017-10-14 23:37:44 +02:00
{
u16 half1 , half2 ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
half1 = * ( sBattleAnimScriptPtr + + ) ;
half2 = * ( sBattleAnimScriptPtr + + ) < < 8 ;
2018-12-26 13:43:07 +01:00
SetGpuReg ( REG_OFFSET_BLDCNT , BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL ) ;
2017-10-14 23:37:44 +02:00
SetGpuReg ( REG_OFFSET_BLDALPHA , half1 | half2 ) ;
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_setbldcnt ( void )
2017-10-14 23:37:44 +02:00
{
u16 half1 , half2 ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
half1 = * ( sBattleAnimScriptPtr + + ) ;
half2 = * ( sBattleAnimScriptPtr + + ) < < 8 ;
2017-10-14 23:37:44 +02:00
SetGpuReg ( REG_OFFSET_BLDCNT , half1 | half2 ) ;
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_blendoff ( void )
2017-10-14 23:37:44 +02:00
{
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
2017-10-14 23:37:44 +02:00
SetGpuReg ( REG_OFFSET_BLDCNT , 0 ) ;
SetGpuReg ( REG_OFFSET_BLDALPHA , 0 ) ;
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_call ( void )
2017-10-14 23:37:44 +02:00
{
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
sBattleAnimScriptRetAddr = sBattleAnimScriptPtr + 4 ;
2018-03-01 00:59:52 +01:00
sBattleAnimScriptPtr = T2_READ_PTR ( sBattleAnimScriptPtr ) ;
2017-10-14 23:37:44 +02:00
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_return ( void )
2017-10-14 23:37:44 +02:00
{
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr = sBattleAnimScriptRetAddr ;
2017-10-14 23:37:44 +02:00
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_setarg ( void )
2017-10-14 23:37:44 +02:00
{
2017-10-15 23:21:59 +02:00
const u8 * addr = sBattleAnimScriptPtr ;
2017-10-14 23:37:44 +02:00
u16 value ;
u8 argId ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
argId = sBattleAnimScriptPtr [ 0 ] ;
sBattleAnimScriptPtr + + ;
2018-03-01 00:59:52 +01:00
value = T1_READ_16 ( sBattleAnimScriptPtr ) ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr = addr + 4 ;
2017-10-14 23:37:44 +02:00
gBattleAnimArgs [ argId ] = value ;
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_choosetwoturnanim ( void )
2017-10-14 23:37:44 +02:00
{
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
2017-10-14 23:37:44 +02:00
if ( gAnimMoveTurn & 1 )
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + = 4 ;
2018-03-01 00:59:52 +01:00
sBattleAnimScriptPtr = T2_READ_PTR ( sBattleAnimScriptPtr ) ;
2017-10-14 23:37:44 +02:00
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_jumpifmoveturn ( void )
2017-10-14 23:37:44 +02:00
{
u8 toCheck ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
toCheck = sBattleAnimScriptPtr [ 0 ] ;
sBattleAnimScriptPtr + + ;
2017-10-14 23:37:44 +02:00
if ( toCheck = = gAnimMoveTurn )
2018-03-01 00:59:52 +01:00
sBattleAnimScriptPtr = T2_READ_PTR ( sBattleAnimScriptPtr ) ;
2017-10-14 23:37:44 +02:00
else
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + = 4 ;
2017-10-14 23:37:44 +02:00
}
2017-12-31 16:28:57 +01:00
static void ScriptCmd_goto ( void )
2017-10-14 23:37:44 +02:00
{
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
2018-03-01 00:59:52 +01:00
sBattleAnimScriptPtr = T2_READ_PTR ( sBattleAnimScriptPtr ) ;
2017-10-14 23:37:44 +02:00
}
// Uses of this function that rely on a TRUE return are expecting inBattle to not be ticked as defined in contest behavior. As a result, if misused, this function cannot reliably discern between field and contest status and could result in undefined behavior.
bool8 IsContest ( void )
{
if ( ! gMain . inBattle )
return TRUE ;
else
return FALSE ;
}
# define tBackgroundId data[0]
# define tState data[10]
2017-10-15 23:21:59 +02:00
static void ScriptCmd_fadetobg ( void )
2017-10-14 23:37:44 +02:00
{
u8 backgroundId ;
u8 taskId ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
backgroundId = sBattleAnimScriptPtr [ 0 ] ;
sBattleAnimScriptPtr + + ;
2017-10-14 23:37:44 +02:00
taskId = CreateTask ( Task_FadeToBg , 5 ) ;
gTasks [ taskId ] . tBackgroundId = backgroundId ;
2017-10-15 23:21:59 +02:00
sAnimBackgroundFadeState = 1 ;
2017-10-14 23:37:44 +02:00
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_fadetobgfromset ( void )
2017-10-14 23:37:44 +02:00
{
u8 bg1 , bg2 , bg3 ;
u8 taskId ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
bg1 = sBattleAnimScriptPtr [ 0 ] ;
bg2 = sBattleAnimScriptPtr [ 1 ] ;
bg3 = sBattleAnimScriptPtr [ 2 ] ;
sBattleAnimScriptPtr + = 3 ;
2017-10-14 23:37:44 +02:00
taskId = CreateTask ( Task_FadeToBg , 5 ) ;
if ( IsContest ( ) )
gTasks [ taskId ] . tBackgroundId = bg3 ;
2018-02-06 20:48:02 +01:00
else if ( GetBattlerSide ( gBattleAnimTarget ) = = B_SIDE_PLAYER )
2017-10-14 23:37:44 +02:00
gTasks [ taskId ] . tBackgroundId = bg2 ;
else
gTasks [ taskId ] . tBackgroundId = bg1 ;
2017-10-15 23:21:59 +02:00
sAnimBackgroundFadeState = 1 ;
2017-10-14 23:37:44 +02:00
}
2017-10-15 23:21:59 +02:00
static void Task_FadeToBg ( u8 taskId )
2017-10-14 23:37:44 +02:00
{
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 + + ;
2017-10-15 23:21:59 +02:00
sAnimBackgroundFadeState = 2 ;
2017-10-14 23:37:44 +02:00
}
else if ( gTasks [ taskId ] . tState = = 2 )
{
2017-10-15 23:21:59 +02:00
s16 bgId = gTasks [ taskId ] . tBackgroundId ;
2017-10-14 23:37:44 +02:00
2018-12-05 15:31:01 +01:00
if ( bgId = = - 1 )
2017-10-14 23:37:44 +02:00
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 ) ;
2017-10-15 23:21:59 +02:00
sAnimBackgroundFadeState = 0 ;
2017-10-14 23:37:44 +02:00
}
}
2017-10-15 23:21:59 +02:00
static void LoadMoveBg ( u16 bgId )
2017-10-14 23:37:44 +02:00
{
if ( IsContest ( ) )
{
2018-11-07 19:35:31 +01:00
const u32 * tilemap = gBattleAnimBackgroundTable [ bgId ] . tilemap ;
2017-10-14 23:37:44 +02:00
void * dmaSrc ;
void * dmaDest ;
LZDecompressWram ( tilemap , gDecompressionBuffer ) ;
sub_80A4720 ( sub_80A6D94 ( ) , ( void * ) ( gDecompressionBuffer ) , 0x100 , 0 ) ;
dmaSrc = gDecompressionBuffer ;
2019-02-17 06:25:48 +01:00
dmaDest = ( void * ) ( BG_SCREEN_ADDR ( 26 ) ) ;
2017-10-14 23:37:44 +02:00
DmaCopy32 ( 3 , dmaSrc , dmaDest , 0x800 ) ;
2019-02-17 06:25:48 +01:00
LZDecompressVram ( gBattleAnimBackgroundTable [ bgId ] . image , ( void * ) ( BG_SCREEN_ADDR ( 4 ) ) ) ;
2017-10-14 23:37:44 +02:00
LoadCompressedPalette ( gBattleAnimBackgroundTable [ bgId ] . palette , sub_80A6D94 ( ) * 16 , 32 ) ;
}
else
{
2019-02-17 06:25:48 +01:00
LZDecompressVram ( gBattleAnimBackgroundTable [ bgId ] . tilemap , ( void * ) ( BG_SCREEN_ADDR ( 26 ) ) ) ;
2019-02-17 05:51:06 +01:00
LZDecompressVram ( gBattleAnimBackgroundTable [ bgId ] . image , ( void * ) ( BG_CHAR_ADDR ( 2 ) ) ) ;
2017-10-14 23:37:44 +02:00
LoadCompressedPalette ( gBattleAnimBackgroundTable [ bgId ] . palette , 32 , 32 ) ;
}
}
2017-10-15 23:21:59 +02:00
static void LoadDefaultBg ( void )
2017-10-14 23:37:44 +02:00
{
if ( IsContest ( ) )
LoadContestBgAfterMoveAnim ( ) ;
else
2017-10-20 00:01:17 +02:00
DrawMainBattleBackground ( ) ;
2017-10-14 23:37:44 +02:00
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_restorebg ( void )
2017-10-14 23:37:44 +02:00
{
u8 taskId ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
2017-10-14 23:37:44 +02:00
taskId = CreateTask ( Task_FadeToBg , 5 ) ;
2018-12-05 15:31:01 +01:00
gTasks [ taskId ] . tBackgroundId = - 1 ;
2017-10-15 23:21:59 +02:00
sAnimBackgroundFadeState = 1 ;
2017-10-14 23:37:44 +02:00
}
2017-10-15 23:21:59 +02:00
# undef tBackgroundId
# undef tState
static void ScriptCmd_waitbgfadeout ( void )
2017-10-14 23:37:44 +02:00
{
2017-10-15 23:21:59 +02:00
if ( sAnimBackgroundFadeState = = 2 )
2017-10-14 23:37:44 +02:00
{
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
2017-10-14 23:37:44 +02:00
gAnimFramesToWait = 0 ;
}
else
{
gAnimFramesToWait = 1 ;
}
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_waitbgfadein ( void )
2017-10-14 23:37:44 +02:00
{
2017-10-15 23:21:59 +02:00
if ( sAnimBackgroundFadeState = = 0 )
2017-10-14 23:37:44 +02:00
{
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
2017-10-14 23:37:44 +02:00
gAnimFramesToWait = 0 ;
}
else
{
gAnimFramesToWait = 1 ;
}
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_changebg ( void )
2017-10-14 23:37:44 +02:00
{
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
LoadMoveBg ( sBattleAnimScriptPtr [ 0 ] ) ;
sBattleAnimScriptPtr + + ;
2017-10-14 23:37:44 +02:00
}
s8 BattleAnimAdjustPanning ( s8 pan )
{
2018-02-06 20:48:02 +01:00
if ( ! IsContest ( ) & & gBattleSpritesDataPtr - > healthBoxesData [ gBattleAnimAttacker ] . statusAnimActive )
2017-10-14 23:37:44 +02:00
{
2018-02-06 20:48:02 +01:00
if ( GetBattlerSide ( gBattleAnimAttacker ) ! = B_SIDE_PLAYER )
2018-10-19 21:57:19 +02:00
pan = SOUND_PAN_TARGET ;
2017-10-14 23:37:44 +02:00
else
2018-10-19 21:57:19 +02:00
pan = SOUND_PAN_ATTACKER ;
2017-10-14 23:37:44 +02:00
}
else if ( IsContest ( ) )
{
2018-10-19 21:57:19 +02:00
if ( gBattleAnimAttacker ! = gBattleAnimTarget | | gBattleAnimAttacker ! = 2 | | pan ! = SOUND_PAN_TARGET )
2017-10-14 23:37:44 +02:00
pan * = - 1 ;
}
2018-02-06 20:48:02 +01:00
else if ( GetBattlerSide ( gBattleAnimAttacker ) = = B_SIDE_PLAYER )
2017-10-14 23:37:44 +02:00
{
2018-02-06 20:48:02 +01:00
if ( GetBattlerSide ( gBattleAnimTarget ) = = B_SIDE_PLAYER )
2017-10-14 23:37:44 +02:00
{
2018-10-19 21:57:19 +02:00
if ( pan = = SOUND_PAN_TARGET )
pan = SOUND_PAN_ATTACKER ;
else if ( pan ! = SOUND_PAN_ATTACKER )
2017-10-14 23:37:44 +02:00
pan * = - 1 ;
}
}
2018-02-06 20:48:02 +01:00
else if ( GetBattlerSide ( gBattleAnimTarget ) = = B_SIDE_OPPONENT )
2017-10-14 23:37:44 +02:00
{
2018-10-19 21:57:19 +02:00
if ( pan = = SOUND_PAN_ATTACKER )
pan = SOUND_PAN_TARGET ;
2017-10-14 23:37:44 +02:00
}
else
{
pan * = - 1 ;
}
2018-10-19 21:57:19 +02:00
if ( pan > SOUND_PAN_TARGET )
pan = SOUND_PAN_TARGET ;
else if ( pan < SOUND_PAN_ATTACKER )
pan = SOUND_PAN_ATTACKER ;
2017-10-14 23:37:44 +02:00
return pan ;
}
s8 BattleAnimAdjustPanning2 ( s8 pan )
{
2018-02-06 20:48:02 +01:00
if ( ! IsContest ( ) & & gBattleSpritesDataPtr - > healthBoxesData [ gBattleAnimAttacker ] . statusAnimActive )
2017-10-14 23:37:44 +02:00
{
2018-02-06 20:48:02 +01:00
if ( GetBattlerSide ( gBattleAnimAttacker ) ! = B_SIDE_PLAYER )
2018-10-19 21:57:19 +02:00
pan = SOUND_PAN_TARGET ;
2017-10-14 23:37:44 +02:00
else
2018-10-19 21:57:19 +02:00
pan = SOUND_PAN_ATTACKER ;
2017-10-14 23:37:44 +02:00
}
else
{
2018-02-06 20:48:02 +01:00
if ( GetBattlerSide ( gBattleAnimAttacker ) ! = B_SIDE_PLAYER | | IsContest ( ) )
2017-10-14 23:37:44 +02:00
pan = - pan ;
}
return pan ;
}
2018-04-18 16:03:15 +02:00
s16 KeepPanInRange ( s16 panArg )
2017-10-14 23:37:44 +02:00
{
2018-04-18 16:03:15 +02:00
s16 pan = panArg ;
2017-10-14 23:37:44 +02:00
2018-10-19 21:57:19 +02:00
if ( pan > SOUND_PAN_TARGET )
pan = SOUND_PAN_TARGET ;
else if ( pan < SOUND_PAN_ATTACKER )
pan = SOUND_PAN_ATTACKER ;
2017-10-14 23:37:44 +02:00
2018-04-18 16:03:15 +02:00
return pan ;
2017-10-14 23:37:44 +02:00
}
2017-10-15 23:21:59 +02:00
s16 CalculatePanIncrement ( s16 sourcePan , s16 targetPan , s16 incrementPan )
2017-10-14 23:37:44 +02:00
{
2017-10-15 23:21:59 +02:00
s16 ret ;
2017-10-14 23:37:44 +02:00
2017-10-15 23:21:59 +02:00
if ( sourcePan < targetPan )
ret = ( ( incrementPan < 0 ) ? - incrementPan : incrementPan ) ;
else if ( sourcePan > targetPan )
ret = - ( ( incrementPan < 0 ) ? - incrementPan : incrementPan ) ;
2017-10-14 23:37:44 +02:00
else
2017-10-15 23:21:59 +02:00
ret = 0 ;
2017-10-14 23:37:44 +02:00
2017-10-15 23:21:59 +02:00
return ret ;
2017-10-14 23:37:44 +02:00
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_playsewithpan ( void )
2017-10-14 23:37:44 +02:00
{
u16 songId ;
s8 pan ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
2018-03-01 00:59:52 +01:00
songId = T1_READ_16 ( sBattleAnimScriptPtr ) ;
2017-10-15 23:21:59 +02:00
pan = sBattleAnimScriptPtr [ 2 ] ;
2017-10-14 23:37:44 +02:00
PlaySE12WithPanning ( songId , BattleAnimAdjustPanning ( pan ) ) ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + = 3 ;
2017-10-14 23:37:44 +02:00
}
2017-10-15 23:21:59 +02:00
static void ScriptCmd_setpan ( void )
2017-10-14 23:37:44 +02:00
{
s8 pan ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
pan = sBattleAnimScriptPtr [ 0 ] ;
2017-10-14 23:37:44 +02:00
SE12PanpotControl ( BattleAnimAdjustPanning ( pan ) ) ;
2017-10-15 23:21:59 +02:00
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 + + ;
2018-03-01 00:59:52 +01:00
songNum = T1_READ_16 ( sBattleAnimScriptPtr ) ;
2017-10-15 23:21:59 +02:00
currentPanArg = sBattleAnimScriptPtr [ 2 ] ;
incrementPan = sBattleAnimScriptPtr [ 3 ] ;
incrementPanArg = sBattleAnimScriptPtr [ 4 ] ;
framesToWait = 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 ;
2018-06-17 16:48:58 +02:00
if ( incrementPan = = 0 ) // If we're not incrementing, just cancel the task immediately.
2017-10-15 23:21:59 +02:00
{
destroyTask = TRUE ;
}
2018-06-17 16:48:58 +02:00
else if ( initialPanning < targetPanning ) // Panning increasing.
2017-10-15 23:21:59 +02:00
{
2018-06-17 16:48:58 +02:00
if ( pan > = targetPanning ) // Target reached.
2017-10-15 23:21:59 +02:00
destroyTask = TRUE ;
}
2018-06-17 16:48:58 +02:00
else // Panning decreasing.
2017-10-15 23:21:59 +02:00
{
2018-06-17 16:48:58 +02:00
if ( pan < = targetPanning ) // Target reached.
2017-10-15 23:21:59 +02:00
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 + + ;
2018-03-01 00:59:52 +01:00
songId = T1_READ_16 ( sBattleAnimScriptPtr ) ;
2017-10-15 23:21:59 +02:00
currentPan = sBattleAnimScriptPtr [ 2 ] ;
targetPan = sBattleAnimScriptPtr [ 3 ] ;
incrementPan = sBattleAnimScriptPtr [ 4 ] ;
framesToWait = 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 ;
s8 targetPanArg , incrementPanArg , currentPanArg , currentPan , targetPan , incrementPan ;
u8 framesToWait ;
u8 taskId ;
sBattleAnimScriptPtr + + ;
2018-03-01 00:59:52 +01:00
songId = T1_READ_16 ( sBattleAnimScriptPtr ) ;
2017-10-15 23:21:59 +02:00
currentPanArg = sBattleAnimScriptPtr [ 2 ] ;
targetPanArg = sBattleAnimScriptPtr [ 3 ] ;
incrementPanArg = sBattleAnimScriptPtr [ 4 ] ;
framesToWait = sBattleAnimScriptPtr [ 5 ] ;
currentPan = BattleAnimAdjustPanning2 ( currentPanArg ) ;
targetPan = BattleAnimAdjustPanning2 ( targetPanArg ) ;
incrementPan = BattleAnimAdjustPanning2 ( 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 ( songId , currentPan ) ;
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 + + ;
2018-03-01 00:59:52 +01:00
songId = T1_READ_16 ( sBattleAnimScriptPtr ) ;
2017-10-15 23:21:59 +02:00
panningArg = sBattleAnimScriptPtr [ 2 ] ;
framesToWait = sBattleAnimScriptPtr [ 3 ] ;
numberOfPlays = 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 + + ;
2018-03-01 00:59:52 +01:00
songId = T1_READ_16 ( sBattleAnimScriptPtr ) ;
2017-10-15 23:21:59 +02:00
panningArg = sBattleAnimScriptPtr [ 2 ] ;
framesToWait = 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
static void ScriptCmd_createsoundtask ( void )
{
TaskFunc func ;
u8 numArgs , taskId ;
s32 i ;
sBattleAnimScriptPtr + + ;
2018-03-01 00:59:52 +01:00
func = ( TaskFunc ) T2_READ_32 ( sBattleAnimScriptPtr ) ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + = 4 ;
numArgs = sBattleAnimScriptPtr [ 0 ] ;
sBattleAnimScriptPtr + + ;
for ( i = 0 ; i < numArgs ; i + + )
{
2018-03-01 00:59:52 +01:00
gBattleAnimArgs [ i ] = T1_READ_16 ( sBattleAnimScriptPtr ) ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + = 2 ;
}
taskId = CreateTask ( func , 1 ) ;
func ( taskId ) ;
gAnimSoundTaskCount + + ;
}
static void ScriptCmd_waitsound ( void )
{
if ( gAnimSoundTaskCount ! = 0 )
{
sSoundAnimFramesToWait = 0 ;
gAnimFramesToWait = 1 ;
}
else if ( IsSEPlaying ( ) )
{
if ( + + sSoundAnimFramesToWait > 90 )
{
2018-01-10 04:30:54 +01:00
m4aMPlayStop ( & gMPlayInfo_SE1 ) ;
m4aMPlayStop ( & gMPlayInfo_SE2 ) ;
2017-10-15 23:21:59 +02:00
sSoundAnimFramesToWait = 0 ;
}
else
{
gAnimFramesToWait = 1 ;
}
}
else
{
sSoundAnimFramesToWait = 0 ;
sBattleAnimScriptPtr + + ;
gAnimFramesToWait = 0 ;
}
}
static void ScriptCmd_jumpargeq ( void )
{
u8 argId ;
s16 valueToCheck ;
sBattleAnimScriptPtr + + ;
argId = sBattleAnimScriptPtr [ 0 ] ;
2018-03-01 00:59:52 +01:00
valueToCheck = T1_READ_16 ( sBattleAnimScriptPtr + 1 ) ;
2017-10-15 23:21:59 +02:00
if ( valueToCheck = = gBattleAnimArgs [ argId ] )
2018-03-01 00:59:52 +01:00
sBattleAnimScriptPtr = T2_READ_PTR ( sBattleAnimScriptPtr + 3 ) ;
2017-10-15 23:21:59 +02:00
else
sBattleAnimScriptPtr + = 7 ;
}
static void ScriptCmd_jumpifcontest ( void )
{
sBattleAnimScriptPtr + + ;
if ( IsContest ( ) )
2018-03-01 00:59:52 +01:00
sBattleAnimScriptPtr = T2_READ_PTR ( sBattleAnimScriptPtr ) ;
2017-10-15 23:21:59 +02:00
else
sBattleAnimScriptPtr + = 4 ;
}
static void ScriptCmd_monbgprio_28 ( void )
{
2018-06-17 16:48:58 +02:00
u8 wantedBattler ;
2018-03-01 00:59:52 +01:00
u8 battlerId ;
u8 battlerPosition ;
2017-10-15 23:21:59 +02:00
2018-06-17 16:48:58 +02:00
wantedBattler = sBattleAnimScriptPtr [ 1 ] ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + = 2 ;
2018-06-17 16:48:58 +02:00
if ( wantedBattler ! = ANIM_ATTACKER )
2018-03-01 00:59:52 +01:00
battlerId = gBattleAnimTarget ;
2017-10-15 23:21:59 +02:00
else
2018-03-01 00:59:52 +01:00
battlerId = gBattleAnimAttacker ;
2017-10-15 23:21:59 +02:00
2018-03-01 00:59:52 +01:00
battlerPosition = GetBattlerPosition ( battlerId ) ;
if ( ! IsContest ( ) & & ( battlerPosition = = B_POSITION_PLAYER_LEFT | | battlerPosition = = B_POSITION_OPPONENT_RIGHT ) )
2017-10-15 23:21:59 +02:00
{
SetAnimBgAttribute ( 1 , BG_ANIM_PRIORITY , 1 ) ;
SetAnimBgAttribute ( 2 , BG_ANIM_PRIORITY , 2 ) ;
}
}
static void ScriptCmd_monbgprio_29 ( void )
{
sBattleAnimScriptPtr + + ;
if ( ! IsContest ( ) )
{
SetAnimBgAttribute ( 1 , BG_ANIM_PRIORITY , 1 ) ;
SetAnimBgAttribute ( 2 , BG_ANIM_PRIORITY , 2 ) ;
}
}
static void ScriptCmd_monbgprio_2A ( void )
{
2018-06-17 16:48:58 +02:00
u8 wantedBattler ;
2018-03-01 00:59:52 +01:00
u8 battlerPosition ;
u8 battlerId ;
2017-10-15 23:21:59 +02:00
2018-06-17 16:48:58 +02:00
wantedBattler = sBattleAnimScriptPtr [ 1 ] ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + = 2 ;
2018-02-06 20:48:02 +01:00
if ( GetBattlerSide ( gBattleAnimAttacker ) ! = GetBattlerSide ( gBattleAnimTarget ) )
2017-10-15 23:21:59 +02:00
{
2018-06-17 16:48:58 +02:00
if ( wantedBattler ! = ANIM_ATTACKER )
2018-03-01 00:59:52 +01:00
battlerId = gBattleAnimTarget ;
2017-10-15 23:21:59 +02:00
else
2018-03-01 00:59:52 +01:00
battlerId = gBattleAnimAttacker ;
2017-10-15 23:21:59 +02:00
2018-03-01 00:59:52 +01:00
battlerPosition = GetBattlerPosition ( battlerId ) ;
if ( ! IsContest ( ) & & ( battlerPosition = = B_POSITION_PLAYER_LEFT | | battlerPosition = = B_POSITION_OPPONENT_RIGHT ) )
2017-10-15 23:21:59 +02:00
{
SetAnimBgAttribute ( 1 , BG_ANIM_PRIORITY , 1 ) ;
SetAnimBgAttribute ( 2 , BG_ANIM_PRIORITY , 2 ) ;
}
}
}
static void ScriptCmd_invisible ( void )
{
u8 spriteId ;
2018-02-06 21:00:01 +01:00
spriteId = GetAnimBattlerSpriteId ( sBattleAnimScriptPtr [ 1 ] ) ;
2018-12-05 15:31:01 +01:00
if ( spriteId ! = 0xFF )
2018-09-10 17:25:58 +02:00
gSprites [ spriteId ] . invisible = TRUE ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + = 2 ;
}
static void ScriptCmd_visible ( void )
{
u8 spriteId ;
2018-02-06 21:00:01 +01:00
spriteId = GetAnimBattlerSpriteId ( sBattleAnimScriptPtr [ 1 ] ) ;
2018-12-05 15:31:01 +01:00
if ( spriteId ! = 0xFF )
2018-09-10 17:25:58 +02:00
gSprites [ spriteId ] . invisible = FALSE ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + = 2 ;
}
static void ScriptCmd_doublebattle_2D ( void )
{
2018-06-17 16:48:58 +02:00
u8 wantedBattler ;
2017-10-15 23:21:59 +02:00
u8 r4 ;
u8 spriteId ;
2018-06-17 16:48:58 +02:00
wantedBattler = sBattleAnimScriptPtr [ 1 ] ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + = 2 ;
if ( ! IsContest ( ) & & IsDoubleBattle ( )
2018-02-06 20:48:02 +01:00
& & GetBattlerSide ( gBattleAnimAttacker ) = = GetBattlerSide ( gBattleAnimTarget ) )
2017-10-15 23:21:59 +02:00
{
2018-06-17 16:48:58 +02:00
if ( wantedBattler = = ANIM_ATTACKER )
2017-10-15 23:21:59 +02:00
{
2018-12-20 04:13:26 +01:00
r4 = GetBattlerSpriteBGPriorityRank ( gBattleAnimAttacker ) ;
2018-02-06 21:00:01 +01:00
spriteId = GetAnimBattlerSpriteId ( ANIM_ATTACKER ) ;
2017-10-15 23:21:59 +02:00
}
else
{
2018-12-20 04:13:26 +01:00
r4 = GetBattlerSpriteBGPriorityRank ( gBattleAnimTarget ) ;
2018-02-06 21:00:01 +01:00
spriteId = GetAnimBattlerSpriteId ( ANIM_TARGET ) ;
2017-10-15 23:21:59 +02:00
}
2018-12-05 15:31:01 +01:00
if ( spriteId ! = 0xFF )
2017-10-15 23:21:59 +02:00
{
gSprites [ spriteId ] . invisible = FALSE ;
if ( r4 = = 2 )
gSprites [ spriteId ] . oam . priority = 3 ;
if ( r4 = = 1 )
sub_80A477C ( FALSE ) ;
else
sub_80A477C ( TRUE ) ;
}
}
}
static void ScriptCmd_doublebattle_2E ( void )
{
2018-06-17 16:48:58 +02:00
u8 wantedBattler ;
2017-10-15 23:21:59 +02:00
u8 r4 ;
u8 spriteId ;
2018-06-17 16:48:58 +02:00
wantedBattler = sBattleAnimScriptPtr [ 1 ] ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + = 2 ;
if ( ! IsContest ( ) & & IsDoubleBattle ( )
2018-02-06 20:48:02 +01:00
& & GetBattlerSide ( gBattleAnimAttacker ) = = GetBattlerSide ( gBattleAnimTarget ) )
2017-10-15 23:21:59 +02:00
{
2018-06-17 16:48:58 +02:00
if ( wantedBattler = = ANIM_ATTACKER )
2017-10-15 23:21:59 +02:00
{
2018-12-20 04:13:26 +01:00
r4 = GetBattlerSpriteBGPriorityRank ( gBattleAnimAttacker ) ;
2018-02-06 21:00:01 +01:00
spriteId = GetAnimBattlerSpriteId ( ANIM_ATTACKER ) ;
2017-10-15 23:21:59 +02:00
}
else
{
2018-12-20 04:13:26 +01:00
r4 = GetBattlerSpriteBGPriorityRank ( gBattleAnimTarget ) ;
2018-02-06 21:00:01 +01:00
spriteId = GetAnimBattlerSpriteId ( ANIM_TARGET ) ;
2017-10-15 23:21:59 +02:00
}
2018-12-05 15:31:01 +01:00
if ( spriteId ! = 0xFF & & r4 = = 2 )
2017-10-15 23:21:59 +02:00
gSprites [ spriteId ] . oam . priority = 2 ;
}
}
static void ScriptCmd_stopsound ( void )
{
2018-01-10 04:30:54 +01:00
m4aMPlayStop ( & gMPlayInfo_SE1 ) ;
m4aMPlayStop ( & gMPlayInfo_SE2 ) ;
2017-10-15 23:21:59 +02:00
sBattleAnimScriptPtr + + ;
2017-10-14 23:37:44 +02:00
}