# Battle Animation Commands Defined in [macros/scripts/battle_anims.asm](/macros/scripts/battle_anims.asm) and [engine/battle_anims/anim_commands.asm:BattleAnimCommands](/engine/battle_anims/anim_commands.asm). ## `$00`−`$CF`: anim_wait length - *length*: duration in frames ## `$D0`: anim_obj object, x, y, param ***Alternate*: anim_obj object, x_tile, x, y_tile, y, param** Spawns an *object* at coordinate (*x*, *y*). - *object*: `ANIM_OBJ` constants (see [constants/battle_anim_constants.asm](/constants/battle_anim_constants.asm)) - *x*: the x position in pixels - *y*: the y position in pixels - *x_tile*: an added x position in tiles (8 pixels) - *y_tile*: an added y position in tiles (8 pixels) - *param*: modifies the behavior of *object*. The meaning differs for each object. The y position also depends on the y offset defined by the object. - *TODO: what happens for x/y values greater than 160/144 respectively? Is it 1:1 with screen coordinates?* - *TODO: how are the x/y values mirrored when the opponent is attacking?* - *TODO: useful positions* - *TODO: document each object* ## `$D1`: anim_1gfx gfx ## `$D2`: anim_2gfx gfx1, gfx2 ## `$D3`: anim_3gfx gfx1, gfx2, gfx3 ## `$D4`: anim_4gfx gfx1, gfx2, gfx3, gfx4 ## `$D5`: anim_5gfx gfx1, gfx2, gfx3, gfx4, gfx5 Loads 1-5 sets of graphics. Will overwrite any previously loaded sets. - *gfx*: `ANIM_GFX` constants (see [constants/battle_anim_constants.asm](/constants/battle_anim_constants.asm)) ## `$D6`: anim_incobj object_id Increments an object's state. - *object_id*: the nth object in order of creation Objects are state machines. `anim_incobj` progresses the state of an object. ## `$D7`: anim_setobj object_id, state Sets an object's state to a specific value. - *object_id*: the nth object in order of creation - *state*: the state index Objects are state machines. `anim_setobj` changes the state of an object. ## `$D8`: anim_incbgeffect bg_effect Increments a bg effect's state. - *bg_effect*: `ANIM_BG` constants (see [constants/battle_anim_constants.asm](/constants/battle_anim_constants.asm)) Since there can't be two of the same bg effect, the effect type is used. This is distinct from `anim_incobj`. ## `$D9`: `anim_enemyfeetobj` Temporarily creates sprites from the bottom row of the enemy frontpic, so that the player backpic can be moved around without corrupting the enemy frontpic. ## `$DA`: `anim_playerheadobj` Temporarily creates sprites from the top row of the player backpic, so that the enemy frontpic can be moved around without corrupting the player backpic. ## `$DB`: `anim_checkpokeball` Sets `BattleAnimVar` to the result of [GetPokeBallWobble](/engine/battle_anims/pokeball_wobble.asm). ## `$DC`: `anim_transform` ## `$DD`: `anim_raisesub` ## `$DE`: `anim_dropsub` ## `$DF`: `anim_resetobp0` Resets rOBP0 to the default (`q0123` or `%00011011`). ## `$E0`: anim_sound duration, tracks, sound_id Plays a sound. ## `$E1`: anim_cry pitch Plays the user's cry. ## `$E2`: `anim_minimizeopp` ## `$E3`: `anim_oamon` ## `$E4`: `anim_oamoff` ## `$E5`: `anim_clearobjs` Removes all active objects. ## `$E6`: `anim_beatup` ## `$E7`: `anim_0xe7` Does nothing. Unused. ## `$E8`: `anim_updateactorpic` ## `$E9`: `anim_minimize` ## `$EA`: `anim_0xea` Does nothing. Unused. ## `$EB`: `anim_0xeb` Does nothing. Unused. ## `$EC`: `anim_0xec` Does nothing. Unused. ## `$ED`: `anim_0xed` Does nothing. Unused. ## `$EE`: anim_if_param_and value, address ## `$EF`: anim_jumpuntil address Jumps to another script and decrements `param` until it reaches 0. Similar to `anim_loop`. ## `$F0`: anim_bgeffect bg_effect, unknown1, unknown2, unknown3 - *bg_effect*: `ANIM_BG` constants (see [constants/battle_anim_constants.asm](/constants/battle_anim_constants.asm)) ## `$F1`: anim_bgp colors Sets `rBGP` to *colors*. ## `$F2`: anim_obp0 colors Sets `rOBP0` to *colors*. ## `$F3`: anim_obp1 colors Sets `rOBP1` to *colors*. ## `$F4`: `anim_clearsprites` ## `$F5`: `anim_0xf5` Does nothing. Unused. ## `$F6`: `anim_0xf6` Does nothing. Unused. ## `$F7`: `anim_0xf7` Does nothing. Unused. ## `$F8`: anim_if_param_equal value, address Jumps to another script if `wBattleAnimParam` (aka `wKickCounter` or `wPresentPower`) is equal to *value*. ## `$F9`: anim_setvar value Sets `BattleAnimVar` to *value*. ## `$FA`: `anim_incvar` Increments `BattleAnimVar` by 1. ## `$FB`: anim_if_var_equal value, address Jumps to another script if `BattleAnimVar` is equal to *value*. ## `$FC`: anim_jump address Jumps to another script. ## `$FD`: anim_loop count, address Jumps to another script up to *count* times. Then does nothing, allowing execution to continue. ## `$FE`: anim_call address Calls a script. There is no call stack. The return address is overwritten, so the maximum call depth is 1. ## `$FF`: `anim_ret` Ends the script and returns to where it was called from. If there was no caller, the animation ends.