shithub: pokecrystal

Download patch

ref: 6cf7c0790f3424a4cb472b274a88d04d449d5231
parent: f6942b9a136b2ee3b25159ebc4d54509a42c5266
parent: f0ab09125493f91d66af836e0abb977459a0d801
author: yenatch <yenatch@gmail.com>
date: Tue Dec 12 14:13:53 EST 2017

Merge pull request #414 from roukaour/master

Improve sprite constants and documentation

--- /dev/null
+++ b/FAQ.md
@@ -1,0 +1,32 @@
+# FAQ
+
+## What is pokecrystal11.gbc?
+
+Version 1.1 of Pokémon Crystal, which fixed some issues with the initial international release. `make crystal11` defines `CRYSTAL11` so the assembly builds the changed version.
+
+## Can't build ROM; "ERROR: `UNION` already defined"
+
+Download [**rgbds 0.3.3**](rgbds). Earlier versions will not work.
+
+## Can't build ROM; "Segmentation fault" from `rgbgfx`
+
+If you are using 64-bit Windows, download [**64-bit Cygwin**](cygwin) and [**64-bit rgbds**](rgbds).
+
+## Can't build ROM; "Section is too big" or "Unable to place section in bank"
+
+If you have not changed any of the asm, make sure you have the latest version of pokecrystal and the correct version of rgbds (see [INSTALL.md](INSTALL.md)).
+
+If you added or changed any code, it has to fit in the **memory banks**. The 2MB ROM is divided into 128 banks of 4KB each, numbered $00 to $7F. The linkerscript **pokecrystal.link** lists which **`SECTION`**s go in which banks. Try moving some code into a new section.
+
+## How do I edit maps?
+
+For `asm` scripts, read [docs/map_scripts.md](docs/map_scripts.md). For `blk` layouts, try [crowdmap](crowdmap) or [Polished Map](polished-map).
+
+## I need more help!
+
+Try asking on IRC or Discord (see [README.md](README.md)).
+
+[cygwin]: https://cygwin.com/install.html
+[rgbds]: https://github.com/rednex/rgbds/releases
+[crowdmap]: https://github.com/yenatch/crowdmap/
+[polished-map]: https://github.com/roukaour/polished-map
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -1,10 +1,12 @@
-The source files are assembled into a rom using [**rgbds**](https://github.com/rednex/rgbds).
+# Instructions
+
+The source files are assembled into a ROM using [**rgbds**](https://github.com/rednex/rgbds).
 These instructions explain how to set up the tools required to build.
 
-If you run into trouble, ask for help on irc or discord (see [README.md](README.md)).
+If you run into trouble, ask for help on IRC or Discord (see [README.md](README.md)).
 
 
-# Linux
+## Linux
 
 ```bash
 sudo apt-get install make gcc bison git libpng-dev
@@ -25,7 +27,7 @@
 ```
 
 
-# Mac
+## Mac
 
 In **Terminal**, run:
 
@@ -48,24 +50,23 @@
 ```
 
 
-# Windows
+## Windows
 
-To build on Windows, install [**Cygwin**](http://cygwin.com/install.html) with the default settings.
+Download [**Cygwin**](http://cygwin.com/install.html): **setup-x86_64.exe** for 64-bit Windows, **setup-x86.exe** for 32-bit.
 
-In the installer, select the following packages:
+Run setup and leave the default settings. At "Select Packages", choose to install the following:
+
 - `make`
 - `git`
 - `gcc-core`
 
-Then download [**rgbds**](https://github.com/rednex/rgbds/releases/).
-Extract rgbds-0.3.3-win64.tar.gz and put all the `exe` and `dll` files individually in **C:\Cygwin64\usr\local\bin**. If you are using 32-bit Windows and Cygwin, extract **rgbds-0.3.3-win32.tar.gz** to **C:\Cygwin\usr\local\bin**.
+Then download [**rgbds**](https://github.com/rednex/rgbds/releases/): the latest **win64.tar.gz** or **win32.tar.gz** release. Extract it and put all the `exe` and `dll` files individually in **C:\Cygwin64\usr\local\bin**.
 
 **Note: If you have an older rgbds, you will need to update to 0.3.3 or newer.** Ignore this if you have never installed rgbds before.
 
-In the **Cygwin terminal**:
+In the **Cygwin terminal**, enter these commands:
 
 ```bash
-
 git clone https://github.com/pret/pokecrystal
 cd pokecrystal
 ```
@@ -74,4 +75,10 @@
 
 ```bash
 make
+```
+
+To build **pokecrystal11.gbc**:
+
+```bash
+make crystal11
 ```
--- a/README.md
+++ b/README.md
@@ -10,6 +10,7 @@
 To set up the repository, see [INSTALL.md](INSTALL.md).
 
 ## See also
+
 * Disassembly of [**Pokémon Red/Blue**][pokered]
 * Disassembly of [**Pokémon Yellow**][pokeyellow]
 * Disassembly of [**Pokémon Pinball**][pokepinball]
--- a/audio/engine.asm
+++ b/audio/engine.asm
@@ -1394,8 +1394,7 @@
 ; e8720
 
 MusicCommands: ; e8720
-; pointer to each command in order
-	; octaves
+; entries correspond to macros/sound.asm enumeration
 	dw Music_Octave8 ; octave 8
 	dw Music_Octave7 ; octave 7
 	dw Music_Octave6 ; octave 6
--- a/battle/anim_commands.asm
+++ b/battle/anim_commands.asm
@@ -352,6 +352,7 @@
 
 
 BattleAnimCommands:: ; cc2a4 (33:42a4)
+; entries correspond to macros/move_anim.asm enumeration
 	dw BattleAnimCmd_Obj
 	dw BattleAnimCmd_1GFX
 	dw BattleAnimCmd_2GFX
--- a/constants.asm
+++ b/constants.asm
@@ -33,6 +33,7 @@
 INCLUDE "constants/radio_constants.asm"
 INCLUDE "constants/npctrade_constants.asm"
 INCLUDE "constants/sprite_constants.asm"
+INCLUDE "constants/sprite_data_constants.asm"
 INCLUDE "constants/tileset_constants.asm"
 INCLUDE "constants/cgb_constants.asm"
 INCLUDE "constants/battle_tower_constants.asm"
--- a/constants/sprite_constants.asm
+++ b/constants/sprite_constants.asm
@@ -165,515 +165,3 @@
 	const SPRITE_FUCHSIA_GYM_4 ; fa
 	const SPRITE_COPYCAT ; fb
 	const SPRITE_JANINE_IMPERSONATOR ; fc
-
-; sprite_header struct members (see gfx/sprite_headers.asm)
-	const_def
-	const SPRITEHEADER_ADDR_LO
-	const SPRITEHEADER_ADDR_HI
-	const SPRITEHEADER_SIZE
-	const SPRITEHEADER_BANK
-	const SPRITEHEADER_TYPE
-	const SPRITEHEADER_PALETTE
-NUM_SPRITEHEADER_FIELDS EQU const_value
-
-; sprite types
-const_value SET 1
-	const WALKING_SPRITE
-	const STANDING_SPRITE
-	const STILL_SPRITE
-
-; sprite palettes
-	const_def
-	const PAL_OW_RED    ; 0
-	const PAL_OW_BLUE   ; 1
-	const PAL_OW_GREEN  ; 2
-	const PAL_OW_BROWN  ; 3
-	const PAL_OW_PINK   ; 4
-	const PAL_OW_SILVER ; 5
-	const PAL_OW_TREE   ; 6
-	const PAL_OW_ROCK   ; 7
-
-; person_events set bit 3 so as not to use the sprite's default palette
-const_value set (1 << 3)
-	const PAL_NPC_RED    ; 8
-	const PAL_NPC_BLUE   ; 9
-	const PAL_NPC_GREEN  ; a
-	const PAL_NPC_BROWN  ; b
-	const PAL_NPC_PINK   ; c
-	const PAL_NPC_SILVER ; d
-	const PAL_NPC_TREE   ; e
-	const PAL_NPC_ROCK   ; f
-
-; SpriteMovementData indexes (see data/map_objects.asm)
-	const_def
-	const SPRITEMOVEDATA_00                   ; 00
-	const SPRITEMOVEDATA_ITEM_TREE            ; 01
-	const SPRITEMOVEDATA_WANDER               ; 02
-	const SPRITEMOVEDATA_SPINRANDOM_SLOW      ; 03
-	const SPRITEMOVEDATA_WALK_UP_DOWN         ; 04
-	const SPRITEMOVEDATA_WALK_LEFT_RIGHT      ; 05
-	const SPRITEMOVEDATA_STANDING_DOWN        ; 06
-	const SPRITEMOVEDATA_STANDING_UP          ; 07
-	const SPRITEMOVEDATA_STANDING_LEFT        ; 08
-	const SPRITEMOVEDATA_STANDING_RIGHT       ; 09
-	const SPRITEMOVEDATA_SPINRANDOM_FAST      ; 0a
-	const SPRITEMOVEDATA_PLAYER               ; 0b
-	const SPRITEMOVEDATA_0C                   ; 0c
-	const SPRITEMOVEDATA_0D                   ; 0d
-	const SPRITEMOVEDATA_0E                   ; 0e
-	const SPRITEMOVEDATA_0F                   ; 0f
-	const SPRITEMOVEDATA_10                   ; 10
-	const SPRITEMOVEDATA_11                   ; 11
-	const SPRITEMOVEDATA_12                   ; 12
-	const SPRITEMOVEDATA_FOLLOWING            ; 13
-	const SPRITEMOVEDATA_SCRIPTED             ; 14
-	const SPRITEMOVEDATA_SNORLAX              ; 15
-	const SPRITEMOVEDATA_POKEMON              ; 16
-	const SPRITEMOVEDATA_SUDOWOODO            ; 17
-	const SPRITEMOVEDATA_SMASHABLE_ROCK       ; 18
-	const SPRITEMOVEDATA_STRENGTH_BOULDER     ; 19
-	const SPRITEMOVEDATA_FOLLOWNOTEXACT       ; 1a
-	const SPRITEMOVEDATA_SHADOW               ; 1b
-	const SPRITEMOVEDATA_EMOTE                ; 1c
-	const SPRITEMOVEDATA_SCREENSHAKE          ; 1d
-	const SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE ; 1e
-	const SPRITEMOVEDATA_SPINCLOCKWISE        ; 1f
-	const SPRITEMOVEDATA_20                   ; 20
-	const SPRITEMOVEDATA_BIGDOLL              ; 21
-	const SPRITEMOVEDATA_BOULDERDUST          ; 22
-	const SPRITEMOVEDATA_GRASS                ; 23
-	const SPRITEMOVEDATA_LAPRAS               ; 24
-NUM_SPRITEMOVEDATA EQU const_value
-SPRITEMOVEDATA_FIELDS EQU 6
-
-; MapObjectMovementPattern.Pointers indexes (see engine/map_objects.asm)
-	const_def
-	const SPRITEMOVEFN_00
-	const SPRITEMOVEFN_RANDOM_WALK_Y
-	const SPRITEMOVEFN_RANDOM_WALK_X
-	const SPRITEMOVEFN_RANDOM_WALK_XY
-	const SPRITEMOVEFN_SLOW_RANDOM_SPIN
-	const SPRITEMOVEFN_FAST_RANDOM_SPIN
-	const SPRITEMOVEFN_STANDING
-	const SPRITEMOVEFN_OBEY_DPAD
-	const SPRITEMOVEFN_08
-	const SPRITEMOVEFN_09
-	const SPRITEMOVEFN_0A
-	const SPRITEMOVEFN_0B
-	const SPRITEMOVEFN_0C
-	const SPRITEMOVEFN_0D
-	const SPRITEMOVEFN_0E
-	const SPRITEMOVEFN_FOLLOW
-	const SPRITEMOVEFN_SCRIPTED
-	const SPRITEMOVEFN_STRENGTH
-	const SPRITEMOVEFN_FOLLOWNOTEXACT
-	const SPRITEMOVEFN_SHADOW
-	const SPRITEMOVEFN_EMOTE
-	const SPRITEMOVEFN_BIG_SNORLAX
-	const SPRITEMOVEFN_BOUNCE
-	const SPRITEMOVEFN_SCREENSHAKE
-	const SPRITEMOVEFN_SPIN_CLOCKWISE
-	const SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE
-	const SPRITEMOVEFN_BOULDERDUST
-	const SPRITEMOVEFN_GRASS
-
-; StepTypesJumptable indexes (see engine/map_objects.asm)
-	const_def
-	const STEP_TYPE_00
-	const STEP_TYPE_SLEEP
-	const STEP_TYPE_NPC_WALK
-	const STEP_TYPE_03
-	const STEP_TYPE_04
-	const STEP_TYPE_05
-	const STEP_TYPE_PLAYER_WALK
-	const STEP_TYPE_07
-	const STEP_TYPE_NPC_JUMP
-	const STEP_TYPE_PLAYER_JUMP
-	const STEP_TYPE_HALF_STEP
-	const STEP_TYPE_BUMP
-	const STEP_TYPE_TELEPORT_FROM
-	const STEP_TYPE_TELEPORT_TO
-	const STEP_TYPE_SKYFALL
-	const STEP_TYPE_0F
-	const STEP_TYPE_GOT_BITE
-	const STEP_TYPE_ROCK_SMASH
-	const STEP_TYPE_RETURN_DIG
-	const STEP_TYPE_TRACKING_OBJECT
-	const STEP_TYPE_14
-	const STEP_TYPE_15
-	const STEP_TYPE_16
-	const STEP_TYPE_17
-	const STEP_TYPE_18
-	const STEP_TYPE_SKYFALL_TOP
-
-; PersonActionPairPointers indexes (see engine/map_object_action.asm)
-	const_def
-	const PERSON_ACTION_00
-	const PERSON_ACTION_STAND
-	const PERSON_ACTION_STEP
-	const PERSON_ACTION_BUMP
-	const PERSON_ACTION_SPIN
-	const PERSON_ACTION_SPIN_FLICKER
-	const PERSON_ACTION_FISHING
-	const PERSON_ACTION_SHADOW
-	const PERSON_ACTION_EMOTE
-	const PERSON_ACTION_BIG_SNORLAX
-	const PERSON_ACTION_BOUNCE
-	const PERSON_ACTION_WEIRD_TREE
-	const PERSON_ACTION_BIG_LAPRAS
-	const PERSON_ACTION_BIG_DOLL
-	const PERSON_ACTION_BOULDER_DUST
-	const PERSON_ACTION_GRASS_SHAKE
-	const PERSON_ACTION_SKYFALL
-
-; Facings indexes (see data/facings.asm)
-	const_def
-	const FACING_STEP_DOWN_0
-	const FACING_STEP_DOWN_1
-	const FACING_STEP_DOWN_2
-	const FACING_STEP_DOWN_3
-	const FACING_STEP_UP_0
-	const FACING_STEP_UP_1
-	const FACING_STEP_UP_2
-	const FACING_STEP_UP_3
-	const FACING_STEP_LEFT_0
-	const FACING_STEP_LEFT_1
-	const FACING_STEP_LEFT_2
-	const FACING_STEP_LEFT_3
-	const FACING_STEP_RIGHT_0
-	const FACING_STEP_RIGHT_1
-	const FACING_STEP_RIGHT_2
-	const FACING_STEP_RIGHT_3
-	const FACING_FISH_DOWN
-	const FACING_FISH_UP
-	const FACING_FISH_LEFT
-	const FACING_FISH_RIGHT
-	const FACING_EMOTE
-	const FACING_SHADOW
-	const FACING_BIG_DOLL_ASYM
-	const FACING_BIG_DOLL_SYM
-	const FACING_WEIRD_TREE_0
-	const FACING_WEIRD_TREE_1
-	const FACING_WEIRD_TREE_2
-	const FACING_WEIRD_TREE_3
-	const FACING_BOULDER_DUST_1
-	const FACING_BOULDER_DUST_2
-	const FACING_GRASS_1
-	const FACING_GRASS_2
-
-; sprite_anim_struct members (see macros/wram.asm)
-	const_def
-	const SPRITEANIMSTRUCT_INDEX           ; 0
-	const SPRITEANIMSTRUCT_FRAMESET_ID     ; 1
-	const SPRITEANIMSTRUCT_ANIM_SEQ_ID     ; 2
-	const SPRITEANIMSTRUCT_TILE_ID         ; 3
-	const SPRITEANIMSTRUCT_XCOORD          ; 4
-	const SPRITEANIMSTRUCT_YCOORD          ; 5
-	const SPRITEANIMSTRUCT_XOFFSET         ; 6
-	const SPRITEANIMSTRUCT_YOFFSET         ; 7
-	const SPRITEANIMSTRUCT_DURATION        ; 8
-	const SPRITEANIMSTRUCT_DURATIONOFFSET  ; 9
-	const SPRITEANIMSTRUCT_FRAME           ; a
-	const SPRITEANIMSTRUCT_JUMPTABLE_INDEX ; b
-	const SPRITEANIMSTRUCT_0C              ; c
-	const SPRITEANIMSTRUCT_0D              ; d
-	const SPRITEANIMSTRUCT_0E              ; e
-	const SPRITEANIMSTRUCT_0F              ; f
-
-; SpriteAnimFrameData indexes (see data/sprite_anim_frames.asm)
-	const_def
-	const SPRITE_ANIM_FRAMESET_00
-	const SPRITE_ANIM_FRAMESET_PARTY_MON
-	const SPRITE_ANIM_FRAMESET_02 ; unused?
-	const SPRITE_ANIM_FRAMESET_03 ; unused?
-	const SPRITE_ANIM_FRAMESET_04 ; unused?
-	const SPRITE_ANIM_FRAMESET_05 ; unused?
-	const SPRITE_ANIM_FRAMESET_06 ; unused?
-	const SPRITE_ANIM_FRAMESET_07
-	const SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR
-	const SPRITE_ANIM_FRAMESET_09 ; unused?
-	const SPRITE_ANIM_FRAMESET_GAMEFREAK_LOGO
-	const SPRITE_ANIM_FRAMESET_GS_INTRO_STAR
-	const SPRITE_ANIM_FRAMESET_GS_INTRO_SPARKLE
-	const SPRITE_ANIM_FRAMESET_SLOTS_GOLEM
-	const SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY
-	const SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY_2
-	const SPRITE_ANIM_FRAMESET_SLOTS_EGG
-	const SPRITE_ANIM_FRAMESET_RED_WALK
-	const SPRITE_ANIM_FRAMESET_STILL_CURSOR
-	const SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL
-	const SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL_0
-	const SPRITE_ANIM_FRAMESET_TRADE_POOF
-	const SPRITE_ANIM_FRAMESET_TRADE_TUBE_BULGE
-	const SPRITE_ANIM_FRAMESET_TRADEMON_ICON
-	const SPRITE_ANIM_FRAMESET_TRADEMON_BUBBLE
-	const SPRITE_ANIM_FRAMESET_EVOLUTION_BALL_OF_LIGHT
-	const SPRITE_ANIM_FRAMESET_RADIO_TUNING_KNOB
-	const SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_RED
-	const SPRITE_ANIM_FRAMESET_1C ; unused?
-	const SPRITE_ANIM_FRAMESET_LEAF
-	const SPRITE_ANIM_FRAMESET_CUT_TREE
-	const SPRITE_ANIM_FRAMESET_EGG_CRACK
-	const SPRITE_ANIM_FRAMESET_EGG_HATCH
-	const SPRITE_ANIM_FRAMESET_21 ; unused?
-	const SPRITE_ANIM_FRAMESET_22 ; unused?
-	const SPRITE_ANIM_FRAMESET_23 ; unused?
-	const SPRITE_ANIM_FRAMESET_24
-	const SPRITE_ANIM_FRAMESET_HEADBUTT
-	const SPRITE_ANIM_FRAMESET_26
-	const SPRITE_ANIM_FRAMESET_27 ; unused?
-	const SPRITE_ANIM_FRAMESET_28 ; unused?
-	const SPRITE_ANIM_FRAMESET_29 ; unused?
-	const SPRITE_ANIM_FRAMESET_2A ; unused?
-	const SPRITE_ANIM_FRAMESET_2B ; unused?
-	const SPRITE_ANIM_FRAMESET_2C ; unused?
-	const SPRITE_ANIM_FRAMESET_BLUE_WALK
-	const SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_BLUE
-	const SPRITE_ANIM_FRAMESET_2F
-	const SPRITE_ANIM_FRAMESET_30
-	const SPRITE_ANIM_FRAMESET_31
-	const SPRITE_ANIM_FRAMESET_32
-	const SPRITE_ANIM_FRAMESET_33
-	const SPRITE_ANIM_FRAMESET_34
-	const SPRITE_ANIM_FRAMESET_INTRO_SUICUNE
-	const SPRITE_ANIM_FRAMESET_INTRO_SUICUNE_2
-	const SPRITE_ANIM_FRAMESET_INTRO_PICHU
-	const SPRITE_ANIM_FRAMESET_INTRO_WOOPER
-	const SPRITE_ANIM_FRAMESET_INTRO_UNOWN_1
-	const SPRITE_ANIM_FRAMESET_INTRO_UNOWN_2
-	const SPRITE_ANIM_FRAMESET_INTRO_UNOWN_3
-	const SPRITE_ANIM_FRAMESET_INTRO_UNOWN_4
-	const SPRITE_ANIM_FRAMESET_INTRO_UNOWN_F_2
-	const SPRITE_ANIM_FRAMESET_INTRO_SUICUNE_AWAY
-	const SPRITE_ANIM_FRAMESET_INTRO_UNOWN_F
-	const SPRITE_ANIM_FRAMESET_CELEBI_LEFT
-	const SPRITE_ANIM_FRAMESET_CELEBI_RIGHT
-
-; DoAnimFrame.Jumptable indexes (see engine/sprite_anims.asm)
-	const_def
-	const SPRITE_ANIM_SEQ_NULL
-	const SPRITE_ANIM_SEQ_PARTY_MON
-	const SPRITE_ANIM_SEQ_PARTY_MON_SWITCH
-	const SPRITE_ANIM_SEQ_PARTY_MON_SELECTED
-	const SPRITE_ANIM_SEQ_04
-	const SPRITE_ANIM_SEQ_NAMING_SCREEN_CURSOR
-	const SPRITE_ANIM_SEQ_GAMEFREAK_LOGO
-	const SPRITE_ANIM_SEQ_GS_INTRO_STAR
-	const SPRITE_ANIM_SEQ_GS_INTRO_SPARKLE
-	const SPRITE_ANIM_SEQ_SLOTS_GOLEM
-	const SPRITE_ANIM_SEQ_SLOTS_CHANSEY
-	const SPRITE_ANIM_SEQ_SLOTS_EGG
-	const SPRITE_ANIM_SEQ_MAIL_CURSOR
-	const SPRITE_ANIM_SEQ_0D
-	const SPRITE_ANIM_SEQ_0E
-	const SPRITE_ANIM_SEQ_0F
-	const SPRITE_ANIM_SEQ_TRADE_POKE_BALL
-	const SPRITE_ANIM_SEQ_TRADE_TUBE_BULGE
-	const SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE
-	const SPRITE_ANIM_SEQ_REVEAL_NEW_MON
-	const SPRITE_ANIM_SEQ_RADIO_TUNING_KNOB
-	const SPRITE_ANIM_SEQ_CUT_LEAVES
-	const SPRITE_ANIM_SEQ_FLY_FROM
-	const SPRITE_ANIM_SEQ_FLY_LEAF
-	const SPRITE_ANIM_SEQ_FLY_TO
-	const SPRITE_ANIM_SEQ_19
-	const SPRITE_ANIM_SEQ_1A
-	const SPRITE_ANIM_SEQ_1B
-	const SPRITE_ANIM_SEQ_1C
-	const SPRITE_ANIM_SEQ_INTRO_SUICUNE
-	const SPRITE_ANIM_SEQ_INTRO_PICHU_WOOPER
-	const SPRITE_ANIM_SEQ_CELEBI
-	const SPRITE_ANIM_SEQ_INTRO_UNOWN
-	const SPRITE_ANIM_SEQ_INTRO_UNOWN_F
-	const SPRITE_ANIM_SEQ_INTRO_SUICUNE_AWAY
-
-; SpriteAnimSeqData indexes (see data/sprite_anim_seqs.asm)
-	const_def
-	const SPRITE_ANIM_INDEX_PARTY_MON
-	const SPRITE_ANIM_INDEX_01
-	const SPRITE_ANIM_INDEX_NAMING_SCREEN_CURSOR
-	const SPRITE_ANIM_INDEX_GAMEFREAK_LOGO
-	const SPRITE_ANIM_INDEX_GS_INTRO_STAR
-	const SPRITE_ANIM_INDEX_GS_INTRO_SPARKLE
-	const SPRITE_ANIM_INDEX_SLOTS_GOLEM
-	const SPRITE_ANIM_INDEX_SLOTS_CHANSEY
-	const SPRITE_ANIM_INDEX_SLOTS_EGG
-	const SPRITE_ANIM_INDEX_COMPOSE_MAIL_CURSOR
-	const SPRITE_ANIM_INDEX_RED_WALK
-	const SPRITE_ANIM_INDEX_0B
-	const SPRITE_ANIM_INDEX_DUMMY_GAME
-	const SPRITE_ANIM_INDEX_0D
-	const SPRITE_ANIM_INDEX_TRADE_POKE_BALL
-	const SPRITE_ANIM_INDEX_TRADE_POOF
-	const SPRITE_ANIM_INDEX_TRADE_TUBE_BULGE
-	const SPRITE_ANIM_INDEX_TRADEMON_ICON
-	const SPRITE_ANIM_INDEX_TRADEMON_BUBBLE
-	const SPRITE_ANIM_INDEX_EVOLUTION_BALL_OF_LIGHT
-	const SPRITE_ANIM_INDEX_RADIO_TUNING_KNOB
-	const SPRITE_ANIM_INDEX_MAGNET_TRAIN_RED
-	const SPRITE_ANIM_INDEX_LEAF
-	const SPRITE_ANIM_INDEX_CUT_TREE
-	const SPRITE_ANIM_INDEX_FLY_LEAF
-	const SPRITE_ANIM_INDEX_EGG_CRACK
-	const SPRITE_ANIM_INDEX_1A
-	const SPRITE_ANIM_INDEX_HEADBUTT
-	const SPRITE_ANIM_INDEX_EGG_HATCH
-	const SPRITE_ANIM_INDEX_1D
-	const SPRITE_ANIM_INDEX_BLUE_WALK
-	const SPRITE_ANIM_INDEX_MAGNET_TRAIN_BLUE
-	const SPRITE_ANIM_INDEX_20
-	const SPRITE_ANIM_INDEX_21
-	const SPRITE_ANIM_INDEX_22
-	const SPRITE_ANIM_INDEX_23
-	const SPRITE_ANIM_INDEX_24
-	const SPRITE_ANIM_INDEX_25
-	const SPRITE_ANIM_INDEX_INTRO_SUICUNE
-	const SPRITE_ANIM_INDEX_INTRO_PICHU
-	const SPRITE_ANIM_INDEX_INTRO_WOOPER
-	const SPRITE_ANIM_INDEX_INTRO_UNOWN
-	const SPRITE_ANIM_INDEX_INTRO_UNOWN_F
-	const SPRITE_ANIM_INDEX_INTRO_SUICUNE_AWAY
-	const SPRITE_ANIM_INDEX_CELEBI
-
-; SpriteAnimOAMData indexes (see data/sprite_anim_oam.asm)
-	const_def
-	const SPRITE_ANIM_FRAME_IDX_00
-	const SPRITE_ANIM_FRAME_IDX_01
-	const SPRITE_ANIM_FRAME_IDX_02
-	const SPRITE_ANIM_FRAME_IDX_03
-	const SPRITE_ANIM_FRAME_IDX_04
-	const SPRITE_ANIM_FRAME_IDX_05
-	const SPRITE_ANIM_FRAME_IDX_06
-	const SPRITE_ANIM_FRAME_IDX_07
-	const SPRITE_ANIM_FRAME_IDX_08
-	const SPRITE_ANIM_FRAME_IDX_09
-	const SPRITE_ANIM_FRAME_IDX_0A
-	const SPRITE_ANIM_FRAME_IDX_0B
-	const SPRITE_ANIM_FRAME_IDX_0C
-	const SPRITE_ANIM_FRAME_IDX_0D
-	const SPRITE_ANIM_FRAME_IDX_0E
-	const SPRITE_ANIM_FRAME_IDX_0F
-	const SPRITE_ANIM_FRAME_IDX_10
-	const SPRITE_ANIM_FRAME_IDX_11
-	const SPRITE_ANIM_FRAME_IDX_12
-	const SPRITE_ANIM_FRAME_IDX_13
-	const SPRITE_ANIM_FRAME_IDX_14
-	const SPRITE_ANIM_FRAME_IDX_15
-	const SPRITE_ANIM_FRAME_IDX_16
-	const SPRITE_ANIM_FRAME_IDX_17
-	const SPRITE_ANIM_FRAME_IDX_18
-	const SPRITE_ANIM_FRAME_IDX_19
-	const SPRITE_ANIM_FRAME_IDX_1A
-	const SPRITE_ANIM_FRAME_IDX_1B
-	const SPRITE_ANIM_FRAME_IDX_1C
-	const SPRITE_ANIM_FRAME_IDX_1D
-	const SPRITE_ANIM_FRAME_IDX_1E
-	const SPRITE_ANIM_FRAME_IDX_1F
-	const SPRITE_ANIM_FRAME_IDX_20
-	const SPRITE_ANIM_FRAME_IDX_21
-	const SPRITE_ANIM_FRAME_IDX_22
-	const SPRITE_ANIM_FRAME_IDX_23
-	const SPRITE_ANIM_FRAME_IDX_24
-	const SPRITE_ANIM_FRAME_IDX_25
-	const SPRITE_ANIM_FRAME_IDX_26
-	const SPRITE_ANIM_FRAME_IDX_27
-	const SPRITE_ANIM_FRAME_IDX_28
-	const SPRITE_ANIM_FRAME_IDX_29
-	const SPRITE_ANIM_FRAME_IDX_2A
-	const SPRITE_ANIM_FRAME_IDX_2B
-	const SPRITE_ANIM_FRAME_IDX_2C
-	const SPRITE_ANIM_FRAME_IDX_2D
-	const SPRITE_ANIM_FRAME_IDX_2E
-	const SPRITE_ANIM_FRAME_IDX_2F
-	const SPRITE_ANIM_FRAME_IDX_30
-	const SPRITE_ANIM_FRAME_IDX_31
-	const SPRITE_ANIM_FRAME_IDX_32
-	const SPRITE_ANIM_FRAME_IDX_33
-	const SPRITE_ANIM_FRAME_IDX_34
-	const SPRITE_ANIM_FRAME_IDX_35
-	const SPRITE_ANIM_FRAME_IDX_36
-	const SPRITE_ANIM_FRAME_IDX_37
-	const SPRITE_ANIM_FRAME_IDX_38
-	const SPRITE_ANIM_FRAME_IDX_39
-	const SPRITE_ANIM_FRAME_IDX_3A
-	const SPRITE_ANIM_FRAME_IDX_3B
-	const SPRITE_ANIM_FRAME_IDX_3C
-	const SPRITE_ANIM_FRAME_IDX_3D
-	const SPRITE_ANIM_FRAME_IDX_3E
-	const SPRITE_ANIM_FRAME_IDX_3F
-	const SPRITE_ANIM_FRAME_IDX_40
-	const SPRITE_ANIM_FRAME_IDX_41
-	const SPRITE_ANIM_FRAME_IDX_42
-	const SPRITE_ANIM_FRAME_IDX_43
-	const SPRITE_ANIM_FRAME_IDX_44
-	const SPRITE_ANIM_FRAME_IDX_45
-	const SPRITE_ANIM_FRAME_IDX_46
-	const SPRITE_ANIM_FRAME_IDX_47
-	const SPRITE_ANIM_FRAME_IDX_48
-	const SPRITE_ANIM_FRAME_IDX_49
-	const SPRITE_ANIM_FRAME_IDX_4A
-	const SPRITE_ANIM_FRAME_IDX_4B
-	const SPRITE_ANIM_FRAME_IDX_4C
-	const SPRITE_ANIM_FRAME_IDX_4D
-	const SPRITE_ANIM_FRAME_IDX_4E
-	const SPRITE_ANIM_FRAME_IDX_4F
-	const SPRITE_ANIM_FRAME_IDX_50
-	const SPRITE_ANIM_FRAME_IDX_51
-	const SPRITE_ANIM_FRAME_IDX_52
-	const SPRITE_ANIM_FRAME_IDX_53
-	const SPRITE_ANIM_FRAME_IDX_54
-	const SPRITE_ANIM_FRAME_IDX_55
-	const SPRITE_ANIM_FRAME_IDX_56
-	const SPRITE_ANIM_FRAME_IDX_57
-	const SPRITE_ANIM_FRAME_IDX_58
-	const SPRITE_ANIM_FRAME_IDX_59
-	const SPRITE_ANIM_FRAME_IDX_5A
-	const SPRITE_ANIM_FRAME_IDX_5B
-	const SPRITE_ANIM_FRAME_IDX_5C
-	const SPRITE_ANIM_FRAME_IDX_5D
-	const SPRITE_ANIM_FRAME_IDX_5E
-	const SPRITE_ANIM_FRAME_IDX_5F
-	const SPRITE_ANIM_FRAME_IDX_60
-	const SPRITE_ANIM_FRAME_IDX_61
-	const SPRITE_ANIM_FRAME_IDX_62
-	const SPRITE_ANIM_FRAME_IDX_63
-	const SPRITE_ANIM_FRAME_IDX_64
-	const SPRITE_ANIM_FRAME_IDX_65
-	const SPRITE_ANIM_FRAME_IDX_66
-	const SPRITE_ANIM_FRAME_IDX_67
-	const SPRITE_ANIM_FRAME_IDX_68
-	const SPRITE_ANIM_FRAME_IDX_69
-	const SPRITE_ANIM_FRAME_IDX_6A
-	const SPRITE_ANIM_FRAME_IDX_6B
-	const SPRITE_ANIM_FRAME_IDX_6C
-	const SPRITE_ANIM_FRAME_IDX_6D
-	const SPRITE_ANIM_FRAME_IDX_6E
-	const SPRITE_ANIM_FRAME_IDX_6F
-	const SPRITE_ANIM_FRAME_IDX_70
-	const SPRITE_ANIM_FRAME_IDX_71
-	const SPRITE_ANIM_FRAME_IDX_72
-	const SPRITE_ANIM_FRAME_IDX_73
-	const SPRITE_ANIM_FRAME_IDX_74
-	const SPRITE_ANIM_FRAME_IDX_75
-	const SPRITE_ANIM_FRAME_IDX_76
-	const SPRITE_ANIM_FRAME_IDX_77
-	const SPRITE_ANIM_FRAME_IDX_78
-	const SPRITE_ANIM_FRAME_IDX_79
-	const SPRITE_ANIM_FRAME_IDX_7A
-	const SPRITE_ANIM_FRAME_IDX_7B
-	const SPRITE_ANIM_FRAME_IDX_7C
-	const SPRITE_ANIM_FRAME_IDX_7D
-	const SPRITE_ANIM_FRAME_IDX_7E
-	const SPRITE_ANIM_FRAME_IDX_7F
-	const SPRITE_ANIM_FRAME_IDX_80
-	const SPRITE_ANIM_FRAME_IDX_81
-	const SPRITE_ANIM_FRAME_IDX_82
-	const SPRITE_ANIM_FRAME_IDX_83
-	const SPRITE_ANIM_FRAME_IDX_84
-	const SPRITE_ANIM_FRAME_IDX_85
-	const SPRITE_ANIM_FRAME_IDX_86
-	const SPRITE_ANIM_FRAME_IDX_87
-	const SPRITE_ANIM_FRAME_IDX_88
-	const SPRITE_ANIM_FRAME_IDX_89
-	const SPRITE_ANIM_FRAME_IDX_8A
-	const SPRITE_ANIM_FRAME_IDX_8B
--- /dev/null
+++ b/constants/sprite_data_constants.asm
@@ -1,0 +1,511 @@
+; sprite_header struct members (see gfx/sprite_headers.asm)
+	const_def
+	const SPRITEHEADER_ADDR_LO ; 0
+	const SPRITEHEADER_ADDR_HI ; 1
+	const SPRITEHEADER_SIZE    ; 2
+	const SPRITEHEADER_BANK    ; 3
+	const SPRITEHEADER_TYPE    ; 4
+	const SPRITEHEADER_PALETTE ; 5
+NUM_SPRITEHEADER_FIELDS EQU const_value
+
+; sprite types
+const_value SET 1
+	const WALKING_SPRITE  ; 1
+	const STANDING_SPRITE ; 2
+	const STILL_SPRITE    ; 3
+
+; sprite palettes
+	const_def
+	const PAL_OW_RED    ; 0
+	const PAL_OW_BLUE   ; 1
+	const PAL_OW_GREEN  ; 2
+	const PAL_OW_BROWN  ; 3
+	const PAL_OW_PINK   ; 4
+	const PAL_OW_SILVER ; 5
+	const PAL_OW_TREE   ; 6
+	const PAL_OW_ROCK   ; 7
+
+; person_events set bit 3 so as not to use the sprite's default palette
+const_value set (1 << 3)
+	const PAL_NPC_RED    ; 8
+	const PAL_NPC_BLUE   ; 9
+	const PAL_NPC_GREEN  ; a
+	const PAL_NPC_BROWN  ; b
+	const PAL_NPC_PINK   ; c
+	const PAL_NPC_SILVER ; d
+	const PAL_NPC_TREE   ; e
+	const PAL_NPC_ROCK   ; f
+
+; SpriteMovementData indexes (see data/map_objects.asm)
+	const_def
+	const SPRITEMOVEDATA_00                   ; 00
+	const SPRITEMOVEDATA_ITEM_TREE            ; 01
+	const SPRITEMOVEDATA_WANDER               ; 02
+	const SPRITEMOVEDATA_SPINRANDOM_SLOW      ; 03
+	const SPRITEMOVEDATA_WALK_UP_DOWN         ; 04
+	const SPRITEMOVEDATA_WALK_LEFT_RIGHT      ; 05
+	const SPRITEMOVEDATA_STANDING_DOWN        ; 06
+	const SPRITEMOVEDATA_STANDING_UP          ; 07
+	const SPRITEMOVEDATA_STANDING_LEFT        ; 08
+	const SPRITEMOVEDATA_STANDING_RIGHT       ; 09
+	const SPRITEMOVEDATA_SPINRANDOM_FAST      ; 0a
+	const SPRITEMOVEDATA_PLAYER               ; 0b
+	const SPRITEMOVEDATA_0C                   ; 0c
+	const SPRITEMOVEDATA_0D                   ; 0d
+	const SPRITEMOVEDATA_0E                   ; 0e
+	const SPRITEMOVEDATA_0F                   ; 0f
+	const SPRITEMOVEDATA_10                   ; 10
+	const SPRITEMOVEDATA_11                   ; 11
+	const SPRITEMOVEDATA_12                   ; 12
+	const SPRITEMOVEDATA_FOLLOWING            ; 13
+	const SPRITEMOVEDATA_SCRIPTED             ; 14
+	const SPRITEMOVEDATA_SNORLAX              ; 15
+	const SPRITEMOVEDATA_POKEMON              ; 16
+	const SPRITEMOVEDATA_SUDOWOODO            ; 17
+	const SPRITEMOVEDATA_SMASHABLE_ROCK       ; 18
+	const SPRITEMOVEDATA_STRENGTH_BOULDER     ; 19
+	const SPRITEMOVEDATA_FOLLOWNOTEXACT       ; 1a
+	const SPRITEMOVEDATA_SHADOW               ; 1b
+	const SPRITEMOVEDATA_EMOTE                ; 1c
+	const SPRITEMOVEDATA_SCREENSHAKE          ; 1d
+	const SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE ; 1e
+	const SPRITEMOVEDATA_SPINCLOCKWISE        ; 1f
+	const SPRITEMOVEDATA_20                   ; 20
+	const SPRITEMOVEDATA_BIGDOLL              ; 21
+	const SPRITEMOVEDATA_BOULDERDUST          ; 22
+	const SPRITEMOVEDATA_GRASS                ; 23
+	const SPRITEMOVEDATA_LAPRAS               ; 24
+NUM_SPRITEMOVEDATA EQU const_value
+SPRITEMOVEDATA_FIELDS EQU 6
+
+; MapObjectMovementPattern.Pointers indexes (see engine/map_objects.asm)
+	const_def
+	const SPRITEMOVEFN_00                    ; 00
+	const SPRITEMOVEFN_RANDOM_WALK_Y         ; 01
+	const SPRITEMOVEFN_RANDOM_WALK_X         ; 02
+	const SPRITEMOVEFN_RANDOM_WALK_XY        ; 03
+	const SPRITEMOVEFN_SLOW_RANDOM_SPIN      ; 04
+	const SPRITEMOVEFN_FAST_RANDOM_SPIN      ; 05
+	const SPRITEMOVEFN_STANDING              ; 06
+	const SPRITEMOVEFN_OBEY_DPAD             ; 07
+	const SPRITEMOVEFN_08                    ; 08
+	const SPRITEMOVEFN_09                    ; 09
+	const SPRITEMOVEFN_0A                    ; 0a
+	const SPRITEMOVEFN_0B                    ; 0b
+	const SPRITEMOVEFN_0C                    ; 0c
+	const SPRITEMOVEFN_0D                    ; 0d
+	const SPRITEMOVEFN_0E                    ; 0e
+	const SPRITEMOVEFN_FOLLOW                ; 0f
+	const SPRITEMOVEFN_SCRIPTED              ; 10
+	const SPRITEMOVEFN_STRENGTH              ; 11
+	const SPRITEMOVEFN_FOLLOWNOTEXACT        ; 12
+	const SPRITEMOVEFN_SHADOW                ; 13
+	const SPRITEMOVEFN_EMOTE                 ; 14
+	const SPRITEMOVEFN_BIG_SNORLAX           ; 15
+	const SPRITEMOVEFN_BOUNCE                ; 16
+	const SPRITEMOVEFN_SCREENSHAKE           ; 17
+	const SPRITEMOVEFN_SPIN_CLOCKWISE        ; 18
+	const SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE ; 19
+	const SPRITEMOVEFN_BOULDERDUST           ; 1a
+	const SPRITEMOVEFN_GRASS                 ; 1b
+
+; StepTypesJumptable indexes (see engine/map_objects.asm)
+	const_def
+	const STEP_TYPE_00              ; 00
+	const STEP_TYPE_SLEEP           ; 01
+	const STEP_TYPE_NPC_WALK        ; 02
+	const STEP_TYPE_03              ; 03
+	const STEP_TYPE_04              ; 04
+	const STEP_TYPE_05              ; 05
+	const STEP_TYPE_PLAYER_WALK     ; 06
+	const STEP_TYPE_07              ; 07
+	const STEP_TYPE_NPC_JUMP        ; 08
+	const STEP_TYPE_PLAYER_JUMP     ; 09
+	const STEP_TYPE_HALF_STEP       ; 0a
+	const STEP_TYPE_BUMP            ; 0b
+	const STEP_TYPE_TELEPORT_FROM   ; 0c
+	const STEP_TYPE_TELEPORT_TO     ; 0d
+	const STEP_TYPE_SKYFALL         ; 0e
+	const STEP_TYPE_0F              ; 0f
+	const STEP_TYPE_GOT_BITE        ; 10
+	const STEP_TYPE_ROCK_SMASH      ; 11
+	const STEP_TYPE_RETURN_DIG      ; 12
+	const STEP_TYPE_TRACKING_OBJECT ; 13
+	const STEP_TYPE_14              ; 14
+	const STEP_TYPE_15              ; 15
+	const STEP_TYPE_16              ; 16
+	const STEP_TYPE_17              ; 17
+	const STEP_TYPE_18              ; 18
+	const STEP_TYPE_SKYFALL_TOP     ; 19
+
+; PersonActionPairPointers indexes (see engine/map_object_action.asm)
+	const_def
+	const PERSON_ACTION_00           ; 00
+	const PERSON_ACTION_STAND        ; 01
+	const PERSON_ACTION_STEP         ; 02
+	const PERSON_ACTION_BUMP         ; 03
+	const PERSON_ACTION_SPIN         ; 04
+	const PERSON_ACTION_SPIN_FLICKER ; 05
+	const PERSON_ACTION_FISHING      ; 06
+	const PERSON_ACTION_SHADOW       ; 07
+	const PERSON_ACTION_EMOTE        ; 08
+	const PERSON_ACTION_BIG_SNORLAX  ; 09
+	const PERSON_ACTION_BOUNCE       ; 0a
+	const PERSON_ACTION_WEIRD_TREE   ; 0b
+	const PERSON_ACTION_BIG_LAPRAS   ; 0c
+	const PERSON_ACTION_BIG_DOLL     ; 0d
+	const PERSON_ACTION_BOULDER_DUST ; 0e
+	const PERSON_ACTION_GRASS_SHAKE  ; 0f
+	const PERSON_ACTION_SKYFALL      ; 10
+
+; Facings indexes (see data/facings.asm)
+	const_def
+	const FACING_STEP_DOWN_0    ; 00
+	const FACING_STEP_DOWN_1    ; 01
+	const FACING_STEP_DOWN_2    ; 02
+	const FACING_STEP_DOWN_3    ; 03
+	const FACING_STEP_UP_0      ; 04
+	const FACING_STEP_UP_1      ; 05
+	const FACING_STEP_UP_2      ; 06
+	const FACING_STEP_UP_3      ; 07
+	const FACING_STEP_LEFT_0    ; 08
+	const FACING_STEP_LEFT_1    ; 09
+	const FACING_STEP_LEFT_2    ; 0a
+	const FACING_STEP_LEFT_3    ; 0b
+	const FACING_STEP_RIGHT_0   ; 0c
+	const FACING_STEP_RIGHT_1   ; 0d
+	const FACING_STEP_RIGHT_2   ; 0e
+	const FACING_STEP_RIGHT_3   ; 0f
+	const FACING_FISH_DOWN      ; 10
+	const FACING_FISH_UP        ; 11
+	const FACING_FISH_LEFT      ; 12
+	const FACING_FISH_RIGHT     ; 13
+	const FACING_EMOTE          ; 14
+	const FACING_SHADOW         ; 15
+	const FACING_BIG_DOLL_ASYM  ; 16
+	const FACING_BIG_DOLL_SYM   ; 17
+	const FACING_WEIRD_TREE_0   ; 18
+	const FACING_WEIRD_TREE_1   ; 19
+	const FACING_WEIRD_TREE_2   ; 1a
+	const FACING_WEIRD_TREE_3   ; 1b
+	const FACING_BOULDER_DUST_1 ; 1c
+	const FACING_BOULDER_DUST_2 ; 1d
+	const FACING_GRASS_1        ; 1e
+	const FACING_GRASS_2        ; 1f
+
+; sprite_anim_struct members (see macros/wram.asm)
+	const_def
+	const SPRITEANIMSTRUCT_INDEX           ; 0
+	const SPRITEANIMSTRUCT_FRAMESET_ID     ; 1
+	const SPRITEANIMSTRUCT_ANIM_SEQ_ID     ; 2
+	const SPRITEANIMSTRUCT_TILE_ID         ; 3
+	const SPRITEANIMSTRUCT_XCOORD          ; 4
+	const SPRITEANIMSTRUCT_YCOORD          ; 5
+	const SPRITEANIMSTRUCT_XOFFSET         ; 6
+	const SPRITEANIMSTRUCT_YOFFSET         ; 7
+	const SPRITEANIMSTRUCT_DURATION        ; 8
+	const SPRITEANIMSTRUCT_DURATIONOFFSET  ; 9
+	const SPRITEANIMSTRUCT_FRAME           ; a
+	const SPRITEANIMSTRUCT_JUMPTABLE_INDEX ; b
+	const SPRITEANIMSTRUCT_0C              ; c
+	const SPRITEANIMSTRUCT_0D              ; d
+	const SPRITEANIMSTRUCT_0E              ; e
+	const SPRITEANIMSTRUCT_0F              ; f
+
+; SpriteAnimSeqData indexes (see data/sprite_anim_seqs.asm)
+	const_def
+	const SPRITE_ANIM_INDEX_PARTY_MON               ; 00
+	const SPRITE_ANIM_INDEX_GS_TITLE_TRAIL          ; 01
+	const SPRITE_ANIM_INDEX_NAMING_SCREEN_CURSOR    ; 02
+	const SPRITE_ANIM_INDEX_GAMEFREAK_LOGO          ; 03
+	const SPRITE_ANIM_INDEX_GS_INTRO_STAR           ; 04
+	const SPRITE_ANIM_INDEX_GS_INTRO_SPARKLE        ; 05
+	const SPRITE_ANIM_INDEX_SLOTS_GOLEM             ; 06
+	const SPRITE_ANIM_INDEX_SLOTS_CHANSEY           ; 07
+	const SPRITE_ANIM_INDEX_SLOTS_EGG               ; 08
+	const SPRITE_ANIM_INDEX_COMPOSE_MAIL_CURSOR     ; 09
+	const SPRITE_ANIM_INDEX_RED_WALK                ; 0a
+	const SPRITE_ANIM_INDEX_UNUSED_CURSOR           ; 0b
+	const SPRITE_ANIM_INDEX_DUMMY_GAME              ; 0c
+	const SPRITE_ANIM_INDEX_POKEGEAR_ARROW          ; 0d
+	const SPRITE_ANIM_INDEX_TRADE_POKE_BALL         ; 0e
+	const SPRITE_ANIM_INDEX_TRADE_POOF              ; 0f
+	const SPRITE_ANIM_INDEX_TRADE_TUBE_BULGE        ; 10
+	const SPRITE_ANIM_INDEX_TRADEMON_ICON           ; 11
+	const SPRITE_ANIM_INDEX_TRADEMON_BUBBLE         ; 12
+	const SPRITE_ANIM_INDEX_EVOLUTION_BALL_OF_LIGHT ; 13
+	const SPRITE_ANIM_INDEX_RADIO_TUNING_KNOB       ; 14
+	const SPRITE_ANIM_INDEX_MAGNET_TRAIN_RED        ; 15
+	const SPRITE_ANIM_INDEX_LEAF                    ; 16
+	const SPRITE_ANIM_INDEX_CUT_TREE                ; 17
+	const SPRITE_ANIM_INDEX_FLY_LEAF                ; 18
+	const SPRITE_ANIM_INDEX_EGG_CRACK               ; 19
+	const SPRITE_ANIM_INDEX_1A                      ; 1a
+	const SPRITE_ANIM_INDEX_HEADBUTT                ; 1b
+	const SPRITE_ANIM_INDEX_EGG_HATCH               ; 1c
+	const SPRITE_ANIM_INDEX_1D                      ; 1d
+	const SPRITE_ANIM_INDEX_BLUE_WALK               ; 1e
+	const SPRITE_ANIM_INDEX_MAGNET_TRAIN_BLUE       ; 1f
+	const SPRITE_ANIM_INDEX_MOBILE_TRADE_SENT_BALL  ; 20
+	const SPRITE_ANIM_INDEX_MOBILE_TRADE_OT_BALL    ; 21
+	const SPRITE_ANIM_INDEX_MOBILE_22               ; 22
+	const SPRITE_ANIM_INDEX_MOBILE_23               ; 23
+	const SPRITE_ANIM_INDEX_MOBILE_24               ; 24
+	const SPRITE_ANIM_INDEX_MOBILE_25               ; 25
+	const SPRITE_ANIM_INDEX_INTRO_SUICUNE           ; 26
+	const SPRITE_ANIM_INDEX_INTRO_PICHU             ; 27
+	const SPRITE_ANIM_INDEX_INTRO_WOOPER            ; 28
+	const SPRITE_ANIM_INDEX_INTRO_UNOWN             ; 29
+	const SPRITE_ANIM_INDEX_INTRO_UNOWN_F           ; 2a
+	const SPRITE_ANIM_INDEX_INTRO_SUICUNE_AWAY      ; 2b
+	const SPRITE_ANIM_INDEX_CELEBI                  ; 2c
+
+; DoAnimFrame.Jumptable indexes (see engine/sprite_anims.asm)
+	const_def
+	const SPRITE_ANIM_SEQ_NULL                 ; 00
+	const SPRITE_ANIM_SEQ_PARTY_MON            ; 01
+	const SPRITE_ANIM_SEQ_PARTY_MON_SWITCH     ; 02
+	const SPRITE_ANIM_SEQ_PARTY_MON_SELECTED   ; 03
+	const SPRITE_ANIM_SEQ_GS_TITLE_TRAIL       ; 04
+	const SPRITE_ANIM_SEQ_NAMING_SCREEN_CURSOR ; 05
+	const SPRITE_ANIM_SEQ_GAMEFREAK_LOGO       ; 06
+	const SPRITE_ANIM_SEQ_GS_INTRO_STAR        ; 07
+	const SPRITE_ANIM_SEQ_GS_INTRO_SPARKLE     ; 08
+	const SPRITE_ANIM_SEQ_SLOTS_GOLEM          ; 09
+	const SPRITE_ANIM_SEQ_SLOTS_CHANSEY        ; 0a
+	const SPRITE_ANIM_SEQ_SLOTS_EGG            ; 0b
+	const SPRITE_ANIM_SEQ_MAIL_CURSOR          ; 0c
+	const SPRITE_ANIM_SEQ_FOR_UNUSED_CURSOR    ; 0d
+	const SPRITE_ANIM_SEQ_DUMMY_GAME_CURSOR    ; 0e
+	const SPRITE_ANIM_SEQ_POKEGEAR_ARROW       ; 0f
+	const SPRITE_ANIM_SEQ_TRADE_POKE_BALL      ; 10
+	const SPRITE_ANIM_SEQ_TRADE_TUBE_BULGE     ; 11
+	const SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE     ; 12
+	const SPRITE_ANIM_SEQ_REVEAL_NEW_MON       ; 13
+	const SPRITE_ANIM_SEQ_RADIO_TUNING_KNOB    ; 14
+	const SPRITE_ANIM_SEQ_CUT_LEAVES           ; 15
+	const SPRITE_ANIM_SEQ_FLY_FROM             ; 16
+	const SPRITE_ANIM_SEQ_FLY_LEAF             ; 17
+	const SPRITE_ANIM_SEQ_FLY_TO               ; 18
+	const SPRITE_ANIM_SEQ_19                   ; 19
+	const SPRITE_ANIM_SEQ_1A                   ; 1a
+	const SPRITE_ANIM_SEQ_FOR_MOBILE_23        ; 1b
+	const SPRITE_ANIM_SEQ_FOR_MOBILE_24        ; 1c
+	const SPRITE_ANIM_SEQ_INTRO_SUICUNE        ; 1d
+	const SPRITE_ANIM_SEQ_INTRO_PICHU_WOOPER   ; 1e
+	const SPRITE_ANIM_SEQ_CELEBI               ; 1f
+	const SPRITE_ANIM_SEQ_INTRO_UNOWN          ; 20
+	const SPRITE_ANIM_SEQ_INTRO_UNOWN_F        ; 21
+	const SPRITE_ANIM_SEQ_INTRO_SUICUNE_AWAY   ; 22
+
+; SpriteAnimFrameData indexes (see data/sprite_anim_frames.asm)
+	const_def
+	const SPRITE_ANIM_FRAMESET_00
+	const SPRITE_ANIM_FRAMESET_PARTY_MON ; 01
+	const SPRITE_ANIM_FRAMESET_PARTY_MON_WITH_MAIL ; 02
+	const SPRITE_ANIM_FRAMESET_PARTY_MON_WITH_ITEM ; 03
+	const SPRITE_ANIM_FRAMESET_PARTY_MON_FAST ; 04
+	const SPRITE_ANIM_FRAMESET_PARTY_MON_WITH_MAIL_FAST ; 05
+	const SPRITE_ANIM_FRAMESET_PARTY_MON_WITH_ITEM_FAST ; 06
+	const SPRITE_ANIM_FRAMESET_GS_TITLE_TRAIL ; 07
+	const SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR ; 08
+	const SPRITE_ANIM_FRAMESET_09
+	const SPRITE_ANIM_FRAMESET_GAMEFREAK_LOGO ; 0a
+	const SPRITE_ANIM_FRAMESET_GS_INTRO_STAR ; 0b
+	const SPRITE_ANIM_FRAMESET_GS_INTRO_SPARKLE ; 0c
+	const SPRITE_ANIM_FRAMESET_SLOTS_GOLEM ; 0d
+	const SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY ; 0e
+	const SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY_2 ; 0f
+	const SPRITE_ANIM_FRAMESET_SLOTS_EGG ; 10
+	const SPRITE_ANIM_FRAMESET_RED_WALK ; 11
+	const SPRITE_ANIM_FRAMESET_STILL_CURSOR ; 12
+	const SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL ; 13
+	const SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL_0 ; 14
+	const SPRITE_ANIM_FRAMESET_TRADE_POOF ; 15
+	const SPRITE_ANIM_FRAMESET_TRADE_TUBE_BULGE ; 16
+	const SPRITE_ANIM_FRAMESET_TRADEMON_ICON ; 17
+	const SPRITE_ANIM_FRAMESET_TRADEMON_BUBBLE ; 18
+	const SPRITE_ANIM_FRAMESET_EVOLUTION_BALL_OF_LIGHT ; 19
+	const SPRITE_ANIM_FRAMESET_RADIO_TUNING_KNOB ; 1a
+	const SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_RED ; 1b
+	const SPRITE_ANIM_FRAMESET_1C
+	const SPRITE_ANIM_FRAMESET_LEAF ; 1d
+	const SPRITE_ANIM_FRAMESET_CUT_TREE ; 1e
+	const SPRITE_ANIM_FRAMESET_EGG_CRACK ; 1f
+	const SPRITE_ANIM_FRAMESET_EGG_HATCH ; 20
+	const SPRITE_ANIM_FRAMESET_21
+	const SPRITE_ANIM_FRAMESET_22
+	const SPRITE_ANIM_FRAMESET_23
+	const SPRITE_ANIM_FRAMESET_24
+	const SPRITE_ANIM_FRAMESET_HEADBUTT ; 25
+	const SPRITE_ANIM_FRAMESET_26
+	const SPRITE_ANIM_FRAMESET_27
+	const SPRITE_ANIM_FRAMESET_28
+	const SPRITE_ANIM_FRAMESET_29
+	const SPRITE_ANIM_FRAMESET_2A
+	const SPRITE_ANIM_FRAMESET_2B
+	const SPRITE_ANIM_FRAMESET_2C
+	const SPRITE_ANIM_FRAMESET_BLUE_WALK ; 2d
+	const SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_BLUE ; 2e
+	const SPRITE_ANIM_FRAMESET_MOBILE_TRADE_SENT_BALL ; 2f
+	const SPRITE_ANIM_FRAMESET_MOBILE_TRADE_OT_BALL ; 30
+	const SPRITE_ANIM_FRAMESET_FOR_MOBILE_22 ; 31
+	const SPRITE_ANIM_FRAMESET_FOR_MOBILE_23 ; 32
+	const SPRITE_ANIM_FRAMESET_FOR_MOBILE_24 ; 33
+	const SPRITE_ANIM_FRAMESET_FOR_MOBILE_25 ; 34
+	const SPRITE_ANIM_FRAMESET_INTRO_SUICUNE ; 35
+	const SPRITE_ANIM_FRAMESET_INTRO_SUICUNE_2 ; 36
+	const SPRITE_ANIM_FRAMESET_INTRO_PICHU ; 37
+	const SPRITE_ANIM_FRAMESET_INTRO_WOOPER ; 38
+	const SPRITE_ANIM_FRAMESET_INTRO_UNOWN_1 ; 39
+	const SPRITE_ANIM_FRAMESET_INTRO_UNOWN_2 ; 3a
+	const SPRITE_ANIM_FRAMESET_INTRO_UNOWN_3 ; 3b
+	const SPRITE_ANIM_FRAMESET_INTRO_UNOWN_4 ; 3c
+	const SPRITE_ANIM_FRAMESET_INTRO_UNOWN_F_2 ; 3d
+	const SPRITE_ANIM_FRAMESET_INTRO_SUICUNE_AWAY ; 3e
+	const SPRITE_ANIM_FRAMESET_INTRO_UNOWN_F ; 3f
+	const SPRITE_ANIM_FRAMESET_CELEBI_LEFT ; 40
+	const SPRITE_ANIM_FRAMESET_CELEBI_RIGHT ; 41
+
+; SpriteAnimOAMData indexes (see data/sprite_anim_oam.asm)
+	const_def
+	const SPRITE_ANIM_FRAME_IDX_RED_WALK_1 ; 00
+	const SPRITE_ANIM_FRAME_IDX_RED_WALK_2 ; 01
+	const SPRITE_ANIM_FRAME_IDX_02
+	const SPRITE_ANIM_FRAME_IDX_03
+	const SPRITE_ANIM_FRAME_IDX_04
+	const SPRITE_ANIM_FRAME_IDX_05
+	const SPRITE_ANIM_FRAME_IDX_06
+	const SPRITE_ANIM_FRAME_IDX_07
+	const SPRITE_ANIM_FRAME_IDX_08
+	const SPRITE_ANIM_FRAME_IDX_09
+	const SPRITE_ANIM_FRAME_IDX_0A
+	const SPRITE_ANIM_FRAME_IDX_0B
+	const SPRITE_ANIM_FRAME_IDX_0C
+	const SPRITE_ANIM_FRAME_IDX_0D
+	const SPRITE_ANIM_FRAME_IDX_0E
+	const SPRITE_ANIM_FRAME_IDX_0F
+	const SPRITE_ANIM_FRAME_IDX_10
+	const SPRITE_ANIM_FRAME_IDX_11
+	const SPRITE_ANIM_FRAME_IDX_12
+	const SPRITE_ANIM_FRAME_IDX_13
+	const SPRITE_ANIM_FRAME_IDX_14
+	const SPRITE_ANIM_FRAME_IDX_15
+	const SPRITE_ANIM_FRAME_IDX_16
+	const SPRITE_ANIM_FRAME_IDX_17
+	const SPRITE_ANIM_FRAME_IDX_18
+	const SPRITE_ANIM_FRAME_IDX_19
+	const SPRITE_ANIM_FRAME_IDX_1A
+	const SPRITE_ANIM_FRAME_IDX_1B
+	const SPRITE_ANIM_FRAME_IDX_1C
+	const SPRITE_ANIM_FRAME_IDX_1D
+	const SPRITE_ANIM_FRAME_IDX_GS_TITLE_TRAIL_1 ; 1e
+	const SPRITE_ANIM_FRAME_IDX_GS_TITLE_TRAIL_2 ; 1f
+	const SPRITE_ANIM_FRAME_IDX_TEXT_ENTRY_CURSOR ; 20
+	const SPRITE_ANIM_FRAME_IDX_FOR_FRAMESET_09 ; 21
+	const SPRITE_ANIM_FRAME_IDX_22
+	const SPRITE_ANIM_FRAME_IDX_GS_INTRO_STAR ; 23
+	const SPRITE_ANIM_FRAME_IDX_GS_INTRO_SPARKLE_1 ; 24
+	const SPRITE_ANIM_FRAME_IDX_GS_INTRO_SPARKLE_2 ; 25
+	const SPRITE_ANIM_FRAME_IDX_GS_INTRO_SPARKLE_3 ; 26
+	const SPRITE_ANIM_FRAME_IDX_SLOTS_GOLEM_1 ; 27
+	const SPRITE_ANIM_FRAME_IDX_SLOTS_GOLEM_2 ; 28
+	const SPRITE_ANIM_FRAME_IDX_SLOTS_CHANSEY_1 ; 29
+	const SPRITE_ANIM_FRAME_IDX_SLOTS_CHANSEY_2 ; 2a
+	const SPRITE_ANIM_FRAME_IDX_SLOTS_CHANSEY_3 ; 2b
+	const SPRITE_ANIM_FRAME_IDX_SLOTS_CHANSEY_4 ; 2c
+	const SPRITE_ANIM_FRAME_IDX_SLOTS_CHANSEY_5 ; 2d
+	const SPRITE_ANIM_FRAME_IDX_SLOTS_EGG ; 2e
+	const SPRITE_ANIM_FRAME_IDX_STILL_CURSOR ; 2f
+	const SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_1 ; 30
+	const SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_2 ; 31
+	const SPRITE_ANIM_FRAME_IDX_TRADE_POOF_1 ; 32
+	const SPRITE_ANIM_FRAME_IDX_TRADE_POOF_2 ; 33
+	const SPRITE_ANIM_FRAME_IDX_TRADE_POOF_3 ; 34
+	const SPRITE_ANIM_FRAME_IDX_35
+	const SPRITE_ANIM_FRAME_IDX_36
+	const SPRITE_ANIM_FRAME_IDX_TRADEMON_ICON_1 ; 37
+	const SPRITE_ANIM_FRAME_IDX_TRADEMON_ICON_2 ; 38
+	const SPRITE_ANIM_FRAME_IDX_TRADEMON_BUBBLE ; 39
+	const SPRITE_ANIM_FRAME_IDX_EVOLUTION_BALL_OF_LIGHT_1 ; 3a
+	const SPRITE_ANIM_FRAME_IDX_EVOLUTION_BALL_OF_LIGHT_2 ; 3b
+	const SPRITE_ANIM_FRAME_IDX_RADIO_TUNING_KNOB ; 3c
+	const SPRITE_ANIM_FRAME_IDX_PARTY_MON_WITH_MAIL_1 ; 3d
+	const SPRITE_ANIM_FRAME_IDX_PARTY_MON_WITH_MAIL_2 ; 3e
+	const SPRITE_ANIM_FRAME_IDX_PARTY_MON_WITH_ITEM_1 ; 3f
+	const SPRITE_ANIM_FRAME_IDX_PARTY_MON_WITH_ITEM_2 ; 40
+	const SPRITE_ANIM_FRAME_IDX_MAGNET_TRAIN_RED_1 ; 41
+	const SPRITE_ANIM_FRAME_IDX_MAGNET_TRAIN_RED_2 ; 42
+	const SPRITE_ANIM_FRAME_IDX_43
+	const SPRITE_ANIM_FRAME_IDX_44
+	const SPRITE_ANIM_FRAME_IDX_45
+	const SPRITE_ANIM_FRAME_IDX_46
+	const SPRITE_ANIM_FRAME_IDX_47
+	const SPRITE_ANIM_FRAME_IDX_48
+	const SPRITE_ANIM_FRAME_IDX_49
+	const SPRITE_ANIM_FRAME_IDX_4A
+	const SPRITE_ANIM_FRAME_IDX_4B
+	const SPRITE_ANIM_FRAME_IDX_4C
+	const SPRITE_ANIM_FRAME_IDX_4D
+	const SPRITE_ANIM_FRAME_IDX_4E
+	const SPRITE_ANIM_FRAME_IDX_LEAF ; 4f
+	const SPRITE_ANIM_FRAME_IDX_TREE_1 ; 50
+	const SPRITE_ANIM_FRAME_IDX_CUT_TREE_2 ; 51
+	const SPRITE_ANIM_FRAME_IDX_CUT_TREE_3 ; 52
+	const SPRITE_ANIM_FRAME_IDX_CUT_TREE_4 ; 53
+	const SPRITE_ANIM_FRAME_IDX_EGG_CRACK ; 54
+	const SPRITE_ANIM_FRAME_IDX_55
+	const SPRITE_ANIM_FRAME_IDX_56
+	const SPRITE_ANIM_FRAME_IDX_57
+	const SPRITE_ANIM_FRAME_IDX_58
+	const SPRITE_ANIM_FRAME_IDX_59
+	const SPRITE_ANIM_FRAME_IDX_5A
+	const SPRITE_ANIM_FRAME_IDX_HEADBUTT_TREE_2 ; 5b
+	const SPRITE_ANIM_FRAME_IDX_5C
+	const SPRITE_ANIM_FRAME_IDX_5D
+	const SPRITE_ANIM_FRAME_IDX_5E
+	const SPRITE_ANIM_FRAME_IDX_5F
+	const SPRITE_ANIM_FRAME_IDX_60
+	const SPRITE_ANIM_FRAME_IDX_61
+	const SPRITE_ANIM_FRAME_IDX_62
+	const SPRITE_ANIM_FRAME_IDX_BLUE_WALK_1 ; 63
+	const SPRITE_ANIM_FRAME_IDX_BLUE_WALK_2 ; 64
+	const SPRITE_ANIM_FRAME_IDX_MAGNET_TRAIN_BLUE_1 ; 65
+	const SPRITE_ANIM_FRAME_IDX_MAGNET_TRAIN_BLUE_2 ; 66
+	const SPRITE_ANIM_FRAME_IDX_FOR_MOBILE_22_1 ; 67
+	const SPRITE_ANIM_FRAME_IDX_FOR_MOBILE_22_2 ; 68
+	const SPRITE_ANIM_FRAME_IDX_FOR_MOBILE_25_1 ; 69
+	const SPRITE_ANIM_FRAME_IDX_FOR_MOBILE_25_2 ; 6a
+	const SPRITE_ANIM_FRAME_IDX_FOR_MOBILE_25_3 ; 6b
+	const SPRITE_ANIM_FRAME_IDX_FOR_MOBILE_23 ; 6c
+	const SPRITE_ANIM_FRAME_IDX_FOR_MOBILE_24 ; 6d
+	const SPRITE_ANIM_FRAME_IDX_INTRO_SUICUNE_1 ; 6e
+	const SPRITE_ANIM_FRAME_IDX_INTRO_SUICUNE_2 ; 6f
+	const SPRITE_ANIM_FRAME_IDX_INTRO_SUICUNE_3 ; 70
+	const SPRITE_ANIM_FRAME_IDX_INTRO_SUICUNE_4 ; 71
+	const SPRITE_ANIM_FRAME_IDX_INTRO_PICHU_1 ; 72
+	const SPRITE_ANIM_FRAME_IDX_INTRO_PICHU_2 ; 73
+	const SPRITE_ANIM_FRAME_IDX_INTRO_PICHU_3 ; 74
+	const SPRITE_ANIM_FRAME_IDX_INTRO_WOOPER ; 75
+	const SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_1 ; 76
+	const SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_2 ; 77
+	const SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_3 ; 78
+	const SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_F_2_1 ; 79
+	const SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_F_2_2 ; 7a
+	const SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_F_2_3 ; 7b
+	const SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_F_2_4 ; 7c
+	const SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_F_2_5 ; 7d
+	const SPRITE_ANIM_FRAME_IDX_INTRO_SUICUNE_AWAY ; 7e
+	const SPRITE_ANIM_FRAME_IDX_CELEBI_1 ; 7f
+	const SPRITE_ANIM_FRAME_IDX_CELEBI_2 ; 80
+	const SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_1 ; 81
+	const SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_2 ; 82
+	const SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_3 ; 83
+	const SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_4 ; 84
+	const SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_5 ; 85
+	const SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_6 ; 86
+	const SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_7 ; 87
+	const SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_8 ; 88
+	const SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_9 ; 89
+	const SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_10 ; 8A
+	const SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_11 ; 8B
--- a/data/outdoor_sprites.asm
+++ b/data/outdoor_sprites.asm
@@ -2,36 +2,36 @@
 ; Maps with permission ROUTE or TOWN can only use these sprites.
 
 OutdoorSprites: ; 144b8
-	dw Group1Sprites
-	dw Group2Sprites
-	dw Group3Sprites
-	dw Group4Sprites
-	dw Group5Sprites
-	dw Group6Sprites
-	dw Group7Sprites
-	dw Group8Sprites
-	dw Group9Sprites
-	dw Group10Sprites
-	dw Group11Sprites
-	dw Group12Sprites
-	dw Group13Sprites
-	dw Group14Sprites
-	dw Group15Sprites
-	dw Group16Sprites
-	dw Group17Sprites
-	dw Group18Sprites
-	dw Group19Sprites
-	dw Group20Sprites
-	dw Group21Sprites
-	dw Group22Sprites
-	dw Group23Sprites
-	dw Group24Sprites
-	dw Group25Sprites
-	dw Group26Sprites
+	dw OlivineGroupSprites
+	dw MahoganyGroupSprites
+	dw DungeonsGroupSprites
+	dw EcruteakGroupSprites
+	dw BlackthornGroupSprites
+	dw CinnabarGroupSprites
+	dw CeruleanGroupSprites
+	dw AzaleaGroupSprites
+	dw LakeOfRageGroupSprites
+	dw VioletGroupSprites
+	dw GoldenrodGroupSprites
+	dw VermilionGroupSprites
+	dw PalletGroupSprites
+	dw PewterGroupSprites
+	dw FastShipGroupSprites
+	dw IndigoGroupSprites
+	dw FuchsiaGroupSprites
+	dw LavenderGroupSprites
+	dw SilverGroupSprites
+	dw CableClubGroupSprites
+	dw CeladonGroupSprites
+	dw CianwoodGroupSprites
+	dw ViridianGroupSprites
+	dw NewBarkGroupSprites
+	dw SaffronGroupSprites
+	dw CherrygroveGroupSprites
 ; 144ec
 
 
-Group13Sprites: ; 144ec
+PalletGroupSprites: ; 144ec
 	db SPRITE_SUICUNE
 	db SPRITE_SILVER_TROPHY
 	db SPRITE_FAMICOM
@@ -57,7 +57,7 @@
 	db SPRITE_FRUIT_TREE
 ; 14503
 
-Group23Sprites: ; 14503
+ViridianGroupSprites: ; 14503
 	db SPRITE_SUICUNE
 	db SPRITE_SILVER_TROPHY
 	db SPRITE_FAMICOM
@@ -83,7 +83,7 @@
 	db SPRITE_FRUIT_TREE
 ; 1451a
 
-Group14Sprites: ; 1451a
+PewterGroupSprites: ; 1451a
 	db SPRITE_SUICUNE
 	db SPRITE_SILVER_TROPHY
 	db SPRITE_FAMICOM
@@ -109,7 +109,7 @@
 	db SPRITE_FRUIT_TREE
 ; 14531
 
-Group6Sprites: ; 14531
+CinnabarGroupSprites: ; 14531
 	db SPRITE_SUICUNE
 	db SPRITE_SILVER_TROPHY
 	db SPRITE_FAMICOM
@@ -135,7 +135,7 @@
 	db SPRITE_FRUIT_TREE
 ; 14548
 
-Group7Sprites: ; 14548
+CeruleanGroupSprites: ; 14548
 	db SPRITE_SUICUNE
 	db SPRITE_SILVER_TROPHY
 	db SPRITE_FAMICOM
@@ -161,7 +161,7 @@
 	db SPRITE_SLOWPOKE
 ; 1455f
 
-Group25Sprites: ; 1455f
+SaffronGroupSprites: ; 1455f
 	db SPRITE_SUICUNE
 	db SPRITE_SILVER_TROPHY
 	db SPRITE_FAMICOM
@@ -187,7 +187,7 @@
 	db SPRITE_SLOWPOKE
 ; 14576
 
-Group21Sprites: ; 14576
+CeladonGroupSprites: ; 14576
 	db SPRITE_SUICUNE
 	db SPRITE_SILVER_TROPHY
 	db SPRITE_FAMICOM
@@ -213,7 +213,7 @@
 	db SPRITE_FRUIT_TREE
 ; 1458d
 
-Group18Sprites: ; 1458d
+LavenderGroupSprites: ; 1458d
 	db SPRITE_SUICUNE
 	db SPRITE_SILVER_TROPHY
 	db SPRITE_FAMICOM
@@ -239,7 +239,7 @@
 	db SPRITE_FRUIT_TREE
 ; 145a4
 
-Group12Sprites: ; 145a4
+VermilionGroupSprites: ; 145a4
 	db SPRITE_SUICUNE
 	db SPRITE_SILVER_TROPHY
 	db SPRITE_FAMICOM
@@ -265,7 +265,7 @@
 	db SPRITE_FRUIT_TREE
 ; 145bb
 
-Group17Sprites: ; 145bb
+FuchsiaGroupSprites: ; 145bb
 	db SPRITE_SUICUNE
 	db SPRITE_SILVER_TROPHY
 	db SPRITE_FAMICOM
@@ -291,7 +291,7 @@
 	db SPRITE_FRUIT_TREE
 ; 145d2
 
-Group16Sprites: ; 145d2
+IndigoGroupSprites: ; 145d2
 	db SPRITE_SUICUNE
 	db SPRITE_SILVER_TROPHY
 	db SPRITE_FAMICOM
@@ -317,7 +317,7 @@
 	db SPRITE_BOULDER
 ; 145e9
 
-Group24Sprites: ; 145e9
+NewBarkGroupSprites: ; 145e9
 	db SPRITE_SUICUNE
 	db SPRITE_SILVER_TROPHY
 	db SPRITE_FAMICOM
@@ -343,7 +343,7 @@
 	db SPRITE_FRUIT_TREE
 ; 14600
 
-Group26Sprites: ; 14600
+CherrygroveGroupSprites: ; 14600
 	db SPRITE_SUICUNE
 	db SPRITE_SILVER_TROPHY
 	db SPRITE_FAMICOM
@@ -369,7 +369,7 @@
 	db SPRITE_FRUIT_TREE
 ; 14617
 
-Group19Sprites: ; 14617
+SilverGroupSprites: ; 14617
 	db SPRITE_SUICUNE
 	db SPRITE_SILVER_TROPHY
 	db SPRITE_FAMICOM
@@ -395,7 +395,7 @@
 	db SPRITE_FRUIT_TREE
 ; 1462e
 
-Group10Sprites: ; 1462e
+VioletGroupSprites: ; 1462e
 	db SPRITE_SUICUNE
 	db SPRITE_SILVER_TROPHY
 	db SPRITE_FAMICOM
@@ -421,7 +421,7 @@
 	db SPRITE_FRUIT_TREE
 ; 14645
 
-Group4Sprites: ; 14645
+EcruteakGroupSprites: ; 14645
 	db SPRITE_SUICUNE
 	db SPRITE_SILVER_TROPHY
 	db SPRITE_FAMICOM
@@ -447,7 +447,7 @@
 	db SPRITE_FRUIT_TREE
 ; 1465c
 
-Group8Sprites: ; 1465c
+AzaleaGroupSprites: ; 1465c
 	db SPRITE_SUICUNE
 	db SPRITE_SILVER_TROPHY
 	db SPRITE_FAMICOM
@@ -473,7 +473,7 @@
 	db SPRITE_SLOWPOKE
 ; 14673
 
-Group11Sprites: ; 14673
+GoldenrodGroupSprites: ; 14673
 	db SPRITE_SUICUNE
 	db SPRITE_SILVER_TROPHY
 	db SPRITE_POKE_BALL
@@ -499,7 +499,7 @@
 	db SPRITE_SLOWPOKE
 ; 1468a
 
-Group22Sprites: ; 1468a
+CianwoodGroupSprites: ; 1468a
 	db SPRITE_SUICUNE
 	db SPRITE_SILVER_TROPHY
 	db SPRITE_FAMICOM
@@ -525,7 +525,7 @@
 	db SPRITE_ROCK
 ; 146a1
 
-Group1Sprites: ; 146a1
+OlivineGroupSprites: ; 146a1
 	db SPRITE_SUICUNE
 	db SPRITE_SILVER_TROPHY
 	db SPRITE_FAMICOM
@@ -551,7 +551,7 @@
 	db SPRITE_ROCK
 ; 146b8
 
-Group9Sprites: ; 146b8
+LakeOfRageGroupSprites: ; 146b8
 	db SPRITE_SUICUNE
 	db SPRITE_SILVER_TROPHY
 	db SPRITE_FAMICOM
@@ -577,7 +577,7 @@
 	db SPRITE_POKE_BALL
 ; 146cf
 
-Group2Sprites: ; 146cf
+MahoganyGroupSprites: ; 146cf
 	db SPRITE_SUICUNE
 	db SPRITE_SILVER_TROPHY
 	db SPRITE_FAMICOM
@@ -603,7 +603,7 @@
 	db SPRITE_POKE_BALL
 ; 146e6
 
-Group5Sprites: ; 146e6
+BlackthornGroupSprites: ; 146e6
 	db SPRITE_SUICUNE
 	db SPRITE_SILVER_TROPHY
 	db SPRITE_FAMICOM
@@ -629,7 +629,7 @@
 	db SPRITE_POKE_BALL
 ; 146fd
 
-Group3Sprites: ; 146fd
+DungeonsGroupSprites: ; 146fd
 	db SPRITE_SUICUNE
 	db SPRITE_SILVER_TROPHY
 	db SPRITE_FAMICOM
@@ -655,7 +655,7 @@
 	db SPRITE_BOULDER
 ; 14714
 
-Group15Sprites: ; 14714
+FastShipGroupSprites: ; 14714
 	db SPRITE_SUICUNE
 	db SPRITE_SILVER_TROPHY
 	db SPRITE_FAMICOM
@@ -681,7 +681,7 @@
 	db SPRITE_ROCK
 ; 1472b
 
-Group20Sprites: ; 1472b
+CableClubGroupSprites: ; 1472b
 	db SPRITE_OAK
 	db SPRITE_FISHER
 	db SPRITE_TEACHER
--- a/data/sprite_anim_frames.asm
+++ b/data/sprite_anim_frames.asm
@@ -2,12 +2,12 @@
 ; entries correspond to SPRITE_ANIM_FRAMESET_* constants
 	dw .Frameset_00
 	dw .Frameset_PartyMon
-	dw .Frameset_02
-	dw .Frameset_03
-	dw .Frameset_04
-	dw .Frameset_05
-	dw .Frameset_06
-	dw .Frameset_07
+	dw .Frameset_PartyMonWithMail
+	dw .Frameset_PartyMonWithItem
+	dw .Frameset_PartyMonFast
+	dw .Frameset_PartyMonWithMailFast
+	dw .Frameset_PartyMonWithItemFast
+	dw .Frameset_GSTitleTrail
 	dw .Frameset_TextEntryCursor
 	dw .Frameset_09
 	dw .Frameset_GameFreakLogo
@@ -47,12 +47,12 @@
 	dw .Frameset_2c
 	dw .Frameset_BlueWalk
 	dw .Frameset_MagnetTrainBlue
-	dw .Frameset_2f
-	dw .Frameset_30
-	dw .Frameset_31
-	dw .Frameset_32
-	dw .Frameset_33
-	dw .Frameset_34
+	dw .Frameset_MobileTradeSentBall
+	dw .Frameset_MobileTradeOTBall
+	dw .Frameset_ForMobile22
+	dw .Frameset_ForMobile23
+	dw .Frameset_ForMobile24
+	dw .Frameset_ForMobile25
 	dw .Frameset_IntroSuicune
 	dw .Frameset_IntroSuicune2
 	dw .Frameset_IntroPichu
@@ -69,150 +69,150 @@
 ; 8d76a
 
 .Frameset_00:
-	frame SPRITE_ANIM_FRAME_IDX_00, 32
+	frame SPRITE_ANIM_FRAME_IDX_RED_WALK_1, 32
 	endanim
 
 .Frameset_PartyMon:
-	frame SPRITE_ANIM_FRAME_IDX_00,  8
-	frame SPRITE_ANIM_FRAME_IDX_01,  8
+	frame SPRITE_ANIM_FRAME_IDX_RED_WALK_1,  8
+	frame SPRITE_ANIM_FRAME_IDX_RED_WALK_2,  8
 	dorestart
 
-.Frameset_02:
-	frame SPRITE_ANIM_FRAME_IDX_3D,  8
-	frame SPRITE_ANIM_FRAME_IDX_3E,  8
+.Frameset_PartyMonWithMail:
+	frame SPRITE_ANIM_FRAME_IDX_PARTY_MON_WITH_MAIL_1,  8
+	frame SPRITE_ANIM_FRAME_IDX_PARTY_MON_WITH_MAIL_2,  8
 	dorestart
 
-.Frameset_03:
-	frame SPRITE_ANIM_FRAME_IDX_3F,  8
-	frame SPRITE_ANIM_FRAME_IDX_40,  8
+.Frameset_PartyMonWithItem:
+	frame SPRITE_ANIM_FRAME_IDX_PARTY_MON_WITH_ITEM_1,  8
+	frame SPRITE_ANIM_FRAME_IDX_PARTY_MON_WITH_ITEM_2,  8
 	dorestart
 
-.Frameset_04:
-	frame SPRITE_ANIM_FRAME_IDX_00,  4
-	frame SPRITE_ANIM_FRAME_IDX_01,  4
+.Frameset_PartyMonFast:
+	frame SPRITE_ANIM_FRAME_IDX_RED_WALK_1,  4
+	frame SPRITE_ANIM_FRAME_IDX_RED_WALK_2,  4
 	dorestart
 
-.Frameset_05:
-	frame SPRITE_ANIM_FRAME_IDX_3D,  4
-	frame SPRITE_ANIM_FRAME_IDX_3E,  4
+.Frameset_PartyMonWithMailFast:
+	frame SPRITE_ANIM_FRAME_IDX_PARTY_MON_WITH_MAIL_1,  4
+	frame SPRITE_ANIM_FRAME_IDX_PARTY_MON_WITH_MAIL_2,  4
 	dorestart
 
-.Frameset_06:
-	frame SPRITE_ANIM_FRAME_IDX_3F,  4
-	frame SPRITE_ANIM_FRAME_IDX_40,  4
+.Frameset_PartyMonWithItemFast:
+	frame SPRITE_ANIM_FRAME_IDX_PARTY_MON_WITH_ITEM_1,  4
+	frame SPRITE_ANIM_FRAME_IDX_PARTY_MON_WITH_ITEM_2,  4
 	dorestart
 
 .Frameset_RedWalk:
-	frame SPRITE_ANIM_FRAME_IDX_00,  8
-	frame SPRITE_ANIM_FRAME_IDX_01,  8
-	frame SPRITE_ANIM_FRAME_IDX_00,  8
-	frame SPRITE_ANIM_FRAME_IDX_01,  8, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_RED_WALK_1,  8
+	frame SPRITE_ANIM_FRAME_IDX_RED_WALK_2,  8
+	frame SPRITE_ANIM_FRAME_IDX_RED_WALK_1,  8
+	frame SPRITE_ANIM_FRAME_IDX_RED_WALK_2,  8, OAM_X_FLIP
 	dorestart
 
 .Frameset_BlueWalk:
-	frame SPRITE_ANIM_FRAME_IDX_63,  8
-	frame SPRITE_ANIM_FRAME_IDX_64,  8
-	frame SPRITE_ANIM_FRAME_IDX_63,  8
-	frame SPRITE_ANIM_FRAME_IDX_64,  8, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_BLUE_WALK_1,  8
+	frame SPRITE_ANIM_FRAME_IDX_BLUE_WALK_2,  8
+	frame SPRITE_ANIM_FRAME_IDX_BLUE_WALK_1,  8
+	frame SPRITE_ANIM_FRAME_IDX_BLUE_WALK_2,  8, OAM_X_FLIP
 	dorestart
 
 .Frameset_MagnetTrainBlue:
-	frame SPRITE_ANIM_FRAME_IDX_65,  8
-	frame SPRITE_ANIM_FRAME_IDX_66,  8
-	frame SPRITE_ANIM_FRAME_IDX_65,  8
-	frame SPRITE_ANIM_FRAME_IDX_66,  8, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_MAGNET_TRAIN_BLUE_1,  8
+	frame SPRITE_ANIM_FRAME_IDX_MAGNET_TRAIN_BLUE_2,  8
+	frame SPRITE_ANIM_FRAME_IDX_MAGNET_TRAIN_BLUE_1,  8
+	frame SPRITE_ANIM_FRAME_IDX_MAGNET_TRAIN_BLUE_2,  8, OAM_X_FLIP
 	dorestart
 
-.Frameset_07:
-	frame SPRITE_ANIM_FRAME_IDX_1E,  1
-	frame SPRITE_ANIM_FRAME_IDX_1F,  1
+.Frameset_GSTitleTrail:
+	frame SPRITE_ANIM_FRAME_IDX_GS_TITLE_TRAIL_1,  1
+	frame SPRITE_ANIM_FRAME_IDX_GS_TITLE_TRAIL_2,  1
 	dorestart
 
 .Frameset_TextEntryCursor:
-	frame SPRITE_ANIM_FRAME_IDX_20,  1
+	frame SPRITE_ANIM_FRAME_IDX_TEXT_ENTRY_CURSOR,  1
 	dorepeat  1
 	dorestart
 
 .Frameset_09:
-	frame SPRITE_ANIM_FRAME_IDX_21,  1
+	frame SPRITE_ANIM_FRAME_IDX_FOR_FRAMESET_09,  1
 	dorepeat  1
 	dorestart
 
 .Frameset_GameFreakLogo:
-	frame SPRITE_ANIM_FRAME_IDX_81, 12
-	frame SPRITE_ANIM_FRAME_IDX_82,  1
-	frame SPRITE_ANIM_FRAME_IDX_83,  1
-	frame SPRITE_ANIM_FRAME_IDX_82,  4
-	frame SPRITE_ANIM_FRAME_IDX_81, 12
-	frame SPRITE_ANIM_FRAME_IDX_82, 12
-	frame SPRITE_ANIM_FRAME_IDX_83,  4
-	frame SPRITE_ANIM_FRAME_IDX_84, 32
-	frame SPRITE_ANIM_FRAME_IDX_85,  3
-	frame SPRITE_ANIM_FRAME_IDX_86,  3
-	frame SPRITE_ANIM_FRAME_IDX_87,  4
-	frame SPRITE_ANIM_FRAME_IDX_88,  4
-	frame SPRITE_ANIM_FRAME_IDX_89,  4
-	frame SPRITE_ANIM_FRAME_IDX_8A, 10
-	frame SPRITE_ANIM_FRAME_IDX_8B,  7
+	frame SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_1,  12
+	frame SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_2,   1
+	frame SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_3,   1
+	frame SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_2,   4
+	frame SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_1,  12
+	frame SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_2,  12
+	frame SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_3,   4
+	frame SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_4,  32
+	frame SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_5,   3
+	frame SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_6,   3
+	frame SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_7,   4
+	frame SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_8,   4
+	frame SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_9,   4
+	frame SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_10, 10
+	frame SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_11,  7
 	endanim
 
 .Frameset_GSIntroStar:
-	frame SPRITE_ANIM_FRAME_IDX_23,  3
-	frame SPRITE_ANIM_FRAME_IDX_23,  3, OAM_Y_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_GS_INTRO_STAR,  3
+	frame SPRITE_ANIM_FRAME_IDX_GS_INTRO_STAR,  3, OAM_Y_FLIP
 	dorestart
 
 .Frameset_GSIntroSparkle:
-	frame SPRITE_ANIM_FRAME_IDX_24,  2
-	frame SPRITE_ANIM_FRAME_IDX_25,  2
-	frame SPRITE_ANIM_FRAME_IDX_26,  2
-	frame SPRITE_ANIM_FRAME_IDX_25,  2
+	frame SPRITE_ANIM_FRAME_IDX_GS_INTRO_SPARKLE_1,  2
+	frame SPRITE_ANIM_FRAME_IDX_GS_INTRO_SPARKLE_2,  2
+	frame SPRITE_ANIM_FRAME_IDX_GS_INTRO_SPARKLE_3,  2
+	frame SPRITE_ANIM_FRAME_IDX_GS_INTRO_SPARKLE_2,  2
 	dorestart
 
 .Frameset_SlotsGolem:
-	frame SPRITE_ANIM_FRAME_IDX_27,  7
-	frame SPRITE_ANIM_FRAME_IDX_28,  7
-	frame SPRITE_ANIM_FRAME_IDX_27,  7, OAM_Y_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_28,  7, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_SLOTS_GOLEM_1,  7
+	frame SPRITE_ANIM_FRAME_IDX_SLOTS_GOLEM_2,  7
+	frame SPRITE_ANIM_FRAME_IDX_SLOTS_GOLEM_1,  7, OAM_Y_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_SLOTS_GOLEM_2,  7, OAM_X_FLIP
 	dorestart
 
 .Frameset_SlotsChansey:
-	frame SPRITE_ANIM_FRAME_IDX_29,  7
-	frame SPRITE_ANIM_FRAME_IDX_2A,  7
-	frame SPRITE_ANIM_FRAME_IDX_29,  7
-	frame SPRITE_ANIM_FRAME_IDX_2B,  7
+	frame SPRITE_ANIM_FRAME_IDX_SLOTS_CHANSEY_1,  7
+	frame SPRITE_ANIM_FRAME_IDX_SLOTS_CHANSEY_2,  7
+	frame SPRITE_ANIM_FRAME_IDX_SLOTS_CHANSEY_1,  7
+	frame SPRITE_ANIM_FRAME_IDX_SLOTS_CHANSEY_3,  7
 	dorestart
 
 .Frameset_SlotsChansey2:
-	frame SPRITE_ANIM_FRAME_IDX_29,  7
-	frame SPRITE_ANIM_FRAME_IDX_2C,  7
-	frame SPRITE_ANIM_FRAME_IDX_2D,  7
-	frame SPRITE_ANIM_FRAME_IDX_2C,  7
-	frame SPRITE_ANIM_FRAME_IDX_29,  7
+	frame SPRITE_ANIM_FRAME_IDX_SLOTS_CHANSEY_1,  7
+	frame SPRITE_ANIM_FRAME_IDX_SLOTS_CHANSEY_4,  7
+	frame SPRITE_ANIM_FRAME_IDX_SLOTS_CHANSEY_5,  7
+	frame SPRITE_ANIM_FRAME_IDX_SLOTS_CHANSEY_4,  7
+	frame SPRITE_ANIM_FRAME_IDX_SLOTS_CHANSEY_1,  7
 	endanim
 
 .Frameset_SlotsEgg:
-	frame SPRITE_ANIM_FRAME_IDX_2E, 20
+	frame SPRITE_ANIM_FRAME_IDX_SLOTS_EGG, 20
 	endanim
 
 .Frameset_StillCursor:
-	frame SPRITE_ANIM_FRAME_IDX_2F, 32
+	frame SPRITE_ANIM_FRAME_IDX_STILL_CURSOR, 32
 	endanim
 
 .Frameset_TradePokeBall:
-	frame SPRITE_ANIM_FRAME_IDX_30, 32
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_1, 32
 	endanim
 
 .Frameset_TradePokeBall0:
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_2,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_2,  3, OAM_X_FLIP
 	dorestart
 
 .Frameset_TradePoof:
-	frame SPRITE_ANIM_FRAME_IDX_32,  4
-	frame SPRITE_ANIM_FRAME_IDX_33,  4
-	frame SPRITE_ANIM_FRAME_IDX_34,  4
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POOF_1,  4
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POOF_2,  4
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POOF_3,  4
 	delanim
 
 .Frameset_TradeTubeBulge:
@@ -221,29 +221,29 @@
 	dorestart
 
 .Frameset_TrademonIcon:
-	frame SPRITE_ANIM_FRAME_IDX_37,  7
-	frame SPRITE_ANIM_FRAME_IDX_38,  7
+	frame SPRITE_ANIM_FRAME_IDX_TRADEMON_ICON_1,  7
+	frame SPRITE_ANIM_FRAME_IDX_TRADEMON_ICON_2,  7
 	dorestart
 
 .Frameset_TrademonBubble:
-	frame SPRITE_ANIM_FRAME_IDX_39, 32
+	frame SPRITE_ANIM_FRAME_IDX_TRADEMON_BUBBLE, 32
 	endanim
 
 .Frameset_EvolutionBallOfLight:
-	frame SPRITE_ANIM_FRAME_IDX_3B,  2
-	frame SPRITE_ANIM_FRAME_IDX_3A,  2
-	frame SPRITE_ANIM_FRAME_IDX_3B,  2
+	frame SPRITE_ANIM_FRAME_IDX_EVOLUTION_BALL_OF_LIGHT_2,  2
+	frame SPRITE_ANIM_FRAME_IDX_EVOLUTION_BALL_OF_LIGHT_1,  2
+	frame SPRITE_ANIM_FRAME_IDX_EVOLUTION_BALL_OF_LIGHT_2,  2
 	endanim
 
 .Frameset_RadioTuningKnob:
-	frame SPRITE_ANIM_FRAME_IDX_3C, 32
+	frame SPRITE_ANIM_FRAME_IDX_RADIO_TUNING_KNOB, 32
 	endanim
 
 .Frameset_MagnetTrainRed:
-	frame SPRITE_ANIM_FRAME_IDX_41,  8
-	frame SPRITE_ANIM_FRAME_IDX_42,  8
-	frame SPRITE_ANIM_FRAME_IDX_41,  8
-	frame SPRITE_ANIM_FRAME_IDX_42,  8, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_MAGNET_TRAIN_RED_1,  8
+	frame SPRITE_ANIM_FRAME_IDX_MAGNET_TRAIN_RED_2,  8
+	frame SPRITE_ANIM_FRAME_IDX_MAGNET_TRAIN_RED_1,  8
+	frame SPRITE_ANIM_FRAME_IDX_MAGNET_TRAIN_RED_2,  8, OAM_X_FLIP
 	dorestart
 
 ; XXX
@@ -294,20 +294,20 @@
 	endanim
 
 .Frameset_Leaf:
-	frame SPRITE_ANIM_FRAME_IDX_4F, 32
+	frame SPRITE_ANIM_FRAME_IDX_LEAF, 32
 	endanim
 
 .Frameset_CutTree:
-	frame SPRITE_ANIM_FRAME_IDX_50,  2
-	frame SPRITE_ANIM_FRAME_IDX_51, 16
+	frame SPRITE_ANIM_FRAME_IDX_TREE_1,      2
+	frame SPRITE_ANIM_FRAME_IDX_CUT_TREE_2, 16
 	dorepeat  1
-	frame SPRITE_ANIM_FRAME_IDX_52,  1
+	frame SPRITE_ANIM_FRAME_IDX_CUT_TREE_3,  1
 	dorepeat  1
-	frame SPRITE_ANIM_FRAME_IDX_53,  1
+	frame SPRITE_ANIM_FRAME_IDX_CUT_TREE_4,  1
 	delanim
 
 .Frameset_EggCrack:
-	frame SPRITE_ANIM_FRAME_IDX_54, 32
+	frame SPRITE_ANIM_FRAME_IDX_EGG_CRACK, 32
 	endanim
 
 .Frameset_EggHatch:
@@ -336,10 +336,10 @@
 	dorestart
 
 .Frameset_HeadbuttTree:
-	frame SPRITE_ANIM_FRAME_IDX_50,  2
-	frame SPRITE_ANIM_FRAME_IDX_5B,  2
-	frame SPRITE_ANIM_FRAME_IDX_50,  2
-	frame SPRITE_ANIM_FRAME_IDX_5B,  2, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_TREE_1,           2
+	frame SPRITE_ANIM_FRAME_IDX_HEADBUTT_TREE_2,  2
+	frame SPRITE_ANIM_FRAME_IDX_TREE_1,           2
+	frame SPRITE_ANIM_FRAME_IDX_HEADBUTT_TREE_2,  2, OAM_X_FLIP
 	dorestart
 
 .Frameset_26:
@@ -370,117 +370,117 @@
 	frame SPRITE_ANIM_FRAME_IDX_62,  2
 	endanim
 
-.Frameset_2f:
-	frame SPRITE_ANIM_FRAME_IDX_32,  3
-	frame SPRITE_ANIM_FRAME_IDX_33,  3
-	frame SPRITE_ANIM_FRAME_IDX_34,  3
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
+.Frameset_MobileTradeSentBall:
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POOF_1,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POOF_2,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POOF_3,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_2,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_2,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_2,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_2,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_2,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_2,  3, OAM_X_FLIP
 	endanim
 
-.Frameset_30:
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3
-	frame SPRITE_ANIM_FRAME_IDX_30,  3
-	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_32,  3
-	frame SPRITE_ANIM_FRAME_IDX_33,  3
-	frame SPRITE_ANIM_FRAME_IDX_34,  3
+.Frameset_MobileTradeOTBall:
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_2,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_2,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_2,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_2,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_2,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_1,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_2,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POOF_1,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POOF_2,  3
+	frame SPRITE_ANIM_FRAME_IDX_TRADE_POOF_3,  3
 	delanim
 
-.Frameset_31:
-	frame SPRITE_ANIM_FRAME_IDX_67,  3
-	frame SPRITE_ANIM_FRAME_IDX_68,  3
+.Frameset_ForMobile22:
+	frame SPRITE_ANIM_FRAME_IDX_FOR_MOBILE_22_1,  3
+	frame SPRITE_ANIM_FRAME_IDX_FOR_MOBILE_22_2,  3
 	dorestart
 
-.Frameset_32:
-	frame SPRITE_ANIM_FRAME_IDX_6C,  3
+.Frameset_ForMobile23:
+	frame SPRITE_ANIM_FRAME_IDX_FOR_MOBILE_23,  3
 	endanim
 
-.Frameset_33:
-	frame SPRITE_ANIM_FRAME_IDX_6D,  3
+.Frameset_ForMobile24:
+	frame SPRITE_ANIM_FRAME_IDX_FOR_MOBILE_24,  3
 	endanim
 
-.Frameset_34:
-	frame SPRITE_ANIM_FRAME_IDX_69,  2
-	frame SPRITE_ANIM_FRAME_IDX_6A,  2
-	frame SPRITE_ANIM_FRAME_IDX_6B,  2
+.Frameset_ForMobile25:
+	frame SPRITE_ANIM_FRAME_IDX_FOR_MOBILE_25_1,  2
+	frame SPRITE_ANIM_FRAME_IDX_FOR_MOBILE_25_2,  2
+	frame SPRITE_ANIM_FRAME_IDX_FOR_MOBILE_25_3,  2
 	delanim
 
 .Frameset_IntroSuicune:
-	frame SPRITE_ANIM_FRAME_IDX_6E,  3
-	frame SPRITE_ANIM_FRAME_IDX_6F,  3
-	frame SPRITE_ANIM_FRAME_IDX_70,  3
-	frame SPRITE_ANIM_FRAME_IDX_71,  3
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_SUICUNE_1,  3
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_SUICUNE_2,  3
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_SUICUNE_3,  3
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_SUICUNE_4,  3
 	dorestart
 
 .Frameset_IntroSuicune2:
-	frame SPRITE_ANIM_FRAME_IDX_71,  3
-	frame SPRITE_ANIM_FRAME_IDX_6E,  7
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_SUICUNE_4,  3
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_SUICUNE_1,  7
 	endanim
 
 .Frameset_IntroPichu:
-	frame SPRITE_ANIM_FRAME_IDX_72, 32
-	frame SPRITE_ANIM_FRAME_IDX_73,  7
-	frame SPRITE_ANIM_FRAME_IDX_74,  7
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_PICHU_1, 32
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_PICHU_2,  7
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_PICHU_3,  7
 	endanim
 
 .Frameset_IntroWooper:
-	frame SPRITE_ANIM_FRAME_IDX_75,  3
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_WOOPER,  3
 	endanim
 
 .Frameset_IntroUnown1:
-	frame SPRITE_ANIM_FRAME_IDX_76,  3
-	frame SPRITE_ANIM_FRAME_IDX_77,  3
-	frame SPRITE_ANIM_FRAME_IDX_78,  7
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_1,  3
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_2,  3
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_3,  7
 	delanim
 
 .Frameset_IntroUnown2:
-	frame SPRITE_ANIM_FRAME_IDX_76,  3, OAM_X_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_77,  3, OAM_X_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_78,  7, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_1,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_2,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_3,  7, OAM_X_FLIP
 	delanim
 
 .Frameset_IntroUnown3:
-	frame SPRITE_ANIM_FRAME_IDX_76,  3, OAM_Y_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_77,  3, OAM_Y_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_78,  7, OAM_Y_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_1,  3, OAM_Y_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_2,  3, OAM_Y_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_3,  7, OAM_Y_FLIP
 	delanim
 
 .Frameset_IntroUnown4:
-	frame SPRITE_ANIM_FRAME_IDX_76,  3, OAM_X_FLIP, OAM_Y_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_77,  3, OAM_X_FLIP, OAM_Y_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_78,  7, OAM_X_FLIP, OAM_Y_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_1,  3, OAM_X_FLIP, OAM_Y_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_2,  3, OAM_X_FLIP, OAM_Y_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_3,  7, OAM_X_FLIP, OAM_Y_FLIP
 	delanim
 
 .Frameset_IntroUnownF2:
-	frame SPRITE_ANIM_FRAME_IDX_79,  3
-	frame SPRITE_ANIM_FRAME_IDX_7A,  3
-	frame SPRITE_ANIM_FRAME_IDX_7B,  3
-	frame SPRITE_ANIM_FRAME_IDX_7C,  7
-	frame SPRITE_ANIM_FRAME_IDX_7D,  7
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_F_2_1,  3
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_F_2_2,  3
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_F_2_3,  3
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_F_2_4,  7
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_F_2_5,  7
 	endanim
 
 .Frameset_IntroSuicuneAway:
-	frame SPRITE_ANIM_FRAME_IDX_7E,  3
+	frame SPRITE_ANIM_FRAME_IDX_INTRO_SUICUNE_AWAY,  3
 	endanim
 
 .Frameset_IntroUnownF:
@@ -488,12 +488,12 @@
 	endanim
 
 .Frameset_CelebiLeft:
-	frame SPRITE_ANIM_FRAME_IDX_7F,  8
-	frame SPRITE_ANIM_FRAME_IDX_80,  8
+	frame SPRITE_ANIM_FRAME_IDX_CELEBI_1,  8
+	frame SPRITE_ANIM_FRAME_IDX_CELEBI_2,  8
 	endanim
 
 .Frameset_CelebiRight:
-	frame SPRITE_ANIM_FRAME_IDX_7F,  8, OAM_X_FLIP
-	frame SPRITE_ANIM_FRAME_IDX_80,  8, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_CELEBI_1,  8, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_CELEBI_2,  8, OAM_X_FLIP
 	endanim
 ; 8d94d
--- a/data/sprite_anim_oam.asm
+++ b/data/sprite_anim_oam.asm
@@ -1,148 +1,148 @@
 SpriteAnimOAMData: ; 8d94d
 ; entries correspond to SPRITE_ANIM_FRAME_IDX_* constants
 	; vtile offset, pointer
-	dbw $00, .OAMData_00 ; 00
-	dbw $04, .OAMData_00 ; 01
-	dbw $4c, .OAMData_02 ; 02
-	dbw $5c, .OAMData_02 ; 03
-	dbw $6c, .OAMData_04 ; 04
-	dbw $6e, .OAMData_04 ; 05
-	dbw $2d, .OAMData_06 ; 06
-	dbw $4d, .OAMData_06 ; 07
-	dbw $60, .OAMData_08 ; 08
-	dbw $00, .OAMData_08 ; 09
-	dbw $00, .OAMData_08 ; 0a
-	dbw $06, .OAMData_08 ; 0b
-	dbw $0c, .OAMData_0c ; 0c
-	dbw $0d, .OAMData_02 ; 0d
-	dbw $00, .OAMData_0e ; 0e
-	dbw $04, .OAMData_0e ; 0f
-	dbw $08, .OAMData_0e ; 10
-	dbw $40, .OAMData_0e ; 11
-	dbw $44, .OAMData_0e ; 12
-	dbw $48, .OAMData_0e ; 13
-	dbw $4c, .OAMData_0e ; 14
-	dbw $80, .OAMData_15 ; 15
-	dbw $85, .OAMData_15 ; 16
-	dbw $8a, .OAMData_15 ; 17
-	dbw $00, .OAMData_18 ; 18
-	dbw $01, .OAMData_19 ; 19
-	dbw $09, .OAMData_1a ; 1a
-	dbw $10, .OAMData_1b ; 1b
-	dbw $29, .OAMData_1b ; 1c
-	dbw $42, .OAMData_1b ; 1d
-	dbw $f8, .OAMData_1e ; 1e
-	dbw $fa, .OAMData_1e ; 1f
-	dbw $00, .OAMData_20 ; 20
-	dbw $00, .OAMData_21 ; 21
-	dbw $00, .OAMData_22 ; 22
-	dbw $0f, .OAMData_23 ; 23
-	dbw $11, .OAMData_02 ; 24
-	dbw $12, .OAMData_02 ; 25
-	dbw $13, .OAMData_02 ; 26
-	dbw $00, .OAMData_27 ; 27
-	dbw $08, .OAMData_27 ; 28
-	dbw $10, .OAMData_29 ; 29
-	dbw $10, .OAMData_2a ; 2a
-	dbw $10, .OAMData_2b ; 2b
-	dbw $10, .OAMData_2c ; 2c
-	dbw $10, .OAMData_2d ; 2d
-	dbw $3a, .OAMData_02 ; 2e
-	dbw $00, .OAMData_00 ; 2f
-	dbw $00, .OAMData_30 ; 30
-	dbw $02, .OAMData_31 ; 31
-	dbw $06, .OAMData_19 ; 32
-	dbw $0a, .OAMData_19 ; 33
-	dbw $0e, .OAMData_19 ; 34
-	dbw $12, .OAMData_35 ; 35
-	dbw $13, .OAMData_35 ; 36
-	dbw $00, .OAMData_00 ; 37
-	dbw $04, .OAMData_00 ; 38
-	dbw $10, .OAMData_19 ; 39
-	dbw $00, .OAMData_31 ; 3a
-	dbw $04, .OAMData_02 ; 3b
-	dbw $00, .OAMData_3c ; 3c
-	dbw $00, .OAMData_3d ; 3d
-	dbw $00, .OAMData_3e ; 3e
-	dbw $00, .OAMData_3f ; 3f
-	dbw $00, .OAMData_40 ; 40
-	dbw $00, .OAMData_31 ; 41
-	dbw $04, .OAMData_31 ; 42
-	dbw $00, .OAMData_43 ; 43
-	dbw $30, .OAMData_43 ; 44
-	dbw $03, .OAMData_43 ; 45
-	dbw $33, .OAMData_43 ; 46
-	dbw $06, .OAMData_43 ; 47
-	dbw $36, .OAMData_43 ; 48
-	dbw $09, .OAMData_43 ; 49
-	dbw $39, .OAMData_43 ; 4a
-	dbw $0c, .OAMData_4b ; 4b
-	dbw $0c, .OAMData_4c ; 4c
-	dbw $3c, .OAMData_02 ; 4d
-	dbw $3e, .OAMData_02 ; 4e
-	dbw $00, .OAMData_4f ; 4f
-	dbw $00, .OAMData_50 ; 50
-	dbw $00, .OAMData_51 ; 51
-	dbw $00, .OAMData_52 ; 52
-	dbw $00, .OAMData_53 ; 53
-	dbw $00, .OAMData_02 ; 54
-	dbw $01, .OAMData_02 ; 55
-	dbw $00, .OAMData_56 ; 56
-	dbw $00, .OAMData_57 ; 57
-	dbw $00, .OAMData_58 ; 58
-	dbw $00, .OAMData_59 ; 59
-	dbw $00, .OAMData_5a ; 5a
-	dbw $04, .OAMData_50 ; 5b
-	dbw $00, .OAMData_5c ; 5c
-	dbw $00, .OAMData_5d ; 5d
-	dbw $00, .OAMData_5e ; 5e
-	dbw $00, .OAMData_5f ; 5f
-	dbw $00, .OAMData_60 ; 60
-	dbw $00, .OAMData_61 ; 61
-	dbw $00, .OAMData_62 ; 62
-	dbw $00, .OAMData_63 ; 63
-	dbw $04, .OAMData_63 ; 64
-	dbw $00, .OAMData_65 ; 65
-	dbw $04, .OAMData_65 ; 66
-	dbw $20, .OAMData_67 ; 67
-	dbw $21, .OAMData_67 ; 68
-	dbw $22, .OAMData_69 ; 69
-	dbw $23, .OAMData_6a ; 6a
-	dbw $27, .OAMData_6b ; 6b
-	dbw $2a, .OAMData_6c ; 6c
-	dbw $2a, .OAMData_6d ; 6d
-	dbw $00, .OAMData_6e ; 6e
-	dbw $08, .OAMData_6f ; 6f
-	dbw $60, .OAMData_70 ; 70
-	dbw $68, .OAMData_71 ; 71
-	dbw $00, .OAMData_72 ; 72
-	dbw $05, .OAMData_72 ; 73
-	dbw $0a, .OAMData_72 ; 74
-	dbw $50, .OAMData_75 ; 75
-	dbw $00, .OAMData_76 ; 76
-	dbw $01, .OAMData_77 ; 77
-	dbw $04, .OAMData_78 ; 78
-	dbw $00, .OAMData_18 ; 79
-	dbw $01, .OAMData_7a ; 7a
-	dbw $03, .OAMData_7b ; 7b
-	dbw $08, .OAMData_7c ; 7c
-	dbw $1c, .OAMData_7c ; 7d
-	dbw $80, .OAMData_7e ; 7e
-	dbw $00, .OAMData_7f ; 7f
-	dbw $04, .OAMData_7f ; 80
-	dbw $d0, .OAMData_81 ; 81
-	dbw $d3, .OAMData_81 ; 82
-	dbw $d6, .OAMData_81 ; 83
-	dbw $6c, .OAMData_84 ; 84
-	dbw $68, .OAMData_84 ; 85
-	dbw $64, .OAMData_84 ; 86
-	dbw $60, .OAMData_84 ; 87
-	dbw $0c, .OAMData_84 ; 88
-	dbw $08, .OAMData_84 ; 89
-	dbw $04, .OAMData_84 ; 8a
-	dbw $00, .OAMData_84 ; 8b
-
-.OAMData_02:
+	dbw $00, .OAMData_RedWalk ; SPRITE_ANIM_FRAME_IDX_RED_WALK_1
+	dbw $04, .OAMData_RedWalk ; SPRITE_ANIM_FRAME_IDX_RED_WALK_2
+	dbw $4c, .OAMData_1x1_Palette0 ; SPRITE_ANIM_FRAME_IDX_02
+	dbw $5c, .OAMData_1x1_Palette0 ; SPRITE_ANIM_FRAME_IDX_03
+	dbw $6c, .OAMData_04 ; SPRITE_ANIM_FRAME_IDX_04
+	dbw $6e, .OAMData_04 ; SPRITE_ANIM_FRAME_IDX_05
+	dbw $2d, .OAMData_06 ; SPRITE_ANIM_FRAME_IDX_06
+	dbw $4d, .OAMData_06 ; SPRITE_ANIM_FRAME_IDX_07
+	dbw $60, .OAMData_08 ; SPRITE_ANIM_FRAME_IDX_08
+	dbw $00, .OAMData_08 ; SPRITE_ANIM_FRAME_IDX_09
+	dbw $00, .OAMData_08 ; SPRITE_ANIM_FRAME_IDX_0A
+	dbw $06, .OAMData_08 ; SPRITE_ANIM_FRAME_IDX_0B
+	dbw $0c, .OAMData_0c ; SPRITE_ANIM_FRAME_IDX_0C
+	dbw $0d, .OAMData_1x1_Palette0 ; SPRITE_ANIM_FRAME_IDX_0D
+	dbw $00, .OAMData_0e ; SPRITE_ANIM_FRAME_IDX_0E
+	dbw $04, .OAMData_0e ; SPRITE_ANIM_FRAME_IDX_0F
+	dbw $08, .OAMData_0e ; SPRITE_ANIM_FRAME_IDX_10
+	dbw $40, .OAMData_0e ; SPRITE_ANIM_FRAME_IDX_11
+	dbw $44, .OAMData_0e ; SPRITE_ANIM_FRAME_IDX_12
+	dbw $48, .OAMData_0e ; SPRITE_ANIM_FRAME_IDX_13
+	dbw $4c, .OAMData_0e ; SPRITE_ANIM_FRAME_IDX_14
+	dbw $80, .OAMData_15 ; SPRITE_ANIM_FRAME_IDX_15
+	dbw $85, .OAMData_15 ; SPRITE_ANIM_FRAME_IDX_16
+	dbw $8a, .OAMData_15 ; SPRITE_ANIM_FRAME_IDX_17
+	dbw $00, .OAMData_18 ; SPRITE_ANIM_FRAME_IDX_18
+	dbw $01, .OAMData_TradePoofBubble ; SPRITE_ANIM_FRAME_IDX_19
+	dbw $09, .OAMData_1a ; SPRITE_ANIM_FRAME_IDX_1A
+	dbw $10, .OAMData_1b ; SPRITE_ANIM_FRAME_IDX_1B
+	dbw $29, .OAMData_1b ; SPRITE_ANIM_FRAME_IDX_1C
+	dbw $42, .OAMData_1b ; SPRITE_ANIM_FRAME_IDX_1D
+	dbw $f8, .OAMData_GSTitleTrail ; SPRITE_ANIM_FRAME_IDX_GS_TITLE_TRAIL_1
+	dbw $fa, .OAMData_GSTitleTrail ; SPRITE_ANIM_FRAME_IDX_GS_TITLE_TRAIL_2
+	dbw $00, .OAMData_TextEntryCursor ; SPRITE_ANIM_FRAME_IDX_TEXT_ENTRY_CURSOR
+	dbw $00, .OAMData_ForFrameset09 ; SPRITE_ANIM_FRAME_IDX_FOR_FRAMESET_09
+	dbw $00, .OAMData_22 ; SPRITE_ANIM_FRAME_IDX_22
+	dbw $0f, .OAMData_GSIntroStar ; SPRITE_ANIM_FRAME_IDX_GS_INTRO_STAR
+	dbw $11, .OAMData_1x1_Palette0 ; SPRITE_ANIM_FRAME_IDX_GS_INTRO_SPARKLE_1
+	dbw $12, .OAMData_1x1_Palette0 ; SPRITE_ANIM_FRAME_IDX_GS_INTRO_SPARKLE_2
+	dbw $13, .OAMData_1x1_Palette0 ; SPRITE_ANIM_FRAME_IDX_GS_INTRO_SPARKLE_3
+	dbw $00, .OAMData_SlotsGolem ; SPRITE_ANIM_FRAME_IDX_SLOTS_GOLEM_1
+	dbw $08, .OAMData_SlotsGolem ; SPRITE_ANIM_FRAME_IDX_SLOTS_GOLEM_2
+	dbw $10, .OAMData_SlotsChansey1 ; SPRITE_ANIM_FRAME_IDX_SLOTS_CHANSEY_1
+	dbw $10, .OAMData_SlotsChansey2 ; SPRITE_ANIM_FRAME_IDX_SLOTS_CHANSEY_2
+	dbw $10, .OAMData_SlotsChansey3 ; SPRITE_ANIM_FRAME_IDX_SLOTS_CHANSEY_3
+	dbw $10, .OAMData_SlotsChansey4 ; SPRITE_ANIM_FRAME_IDX_SLOTS_CHANSEY_4
+	dbw $10, .OAMData_SlotsChansey5 ; SPRITE_ANIM_FRAME_IDX_SLOTS_CHANSEY_5
+	dbw $3a, .OAMData_1x1_Palette0 ; SPRITE_ANIM_FRAME_IDX_SLOTS_EGG
+	dbw $00, .OAMData_RedWalk ; SPRITE_ANIM_FRAME_IDX_STILL_CURSOR
+	dbw $00, .OAMData_TradePokeBall1 ; SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_1
+	dbw $02, .OAMData_MagnetTrainRed ; SPRITE_ANIM_FRAME_IDX_TRADE_POKE_BALL_2
+	dbw $06, .OAMData_TradePoofBubble ; SPRITE_ANIM_FRAME_IDX_TRADE_POOF_1
+	dbw $0a, .OAMData_TradePoofBubble ; SPRITE_ANIM_FRAME_IDX_TRADE_POOF_2
+	dbw $0e, .OAMData_TradePoofBubble ; SPRITE_ANIM_FRAME_IDX_TRADE_POOF_3
+	dbw $12, .OAMData_35 ; SPRITE_ANIM_FRAME_IDX_35
+	dbw $13, .OAMData_35 ; SPRITE_ANIM_FRAME_IDX_36
+	dbw $00, .OAMData_RedWalk ; SPRITE_ANIM_FRAME_IDX_TRADEMON_ICON_1
+	dbw $04, .OAMData_RedWalk ; SPRITE_ANIM_FRAME_IDX_TRADEMON_ICON_2
+	dbw $10, .OAMData_TradePoofBubble ; SPRITE_ANIM_FRAME_IDX_TRADEMON_BUBBLE
+	dbw $00, .OAMData_MagnetTrainRed ; SPRITE_ANIM_FRAME_IDX_EVOLUTION_BALL_OF_LIGHT_1
+	dbw $04, .OAMData_1x1_Palette0 ; SPRITE_ANIM_FRAME_IDX_EVOLUTION_BALL_OF_LIGHT_2
+	dbw $00, .OAMData_RadioTuningKnob ; SPRITE_ANIM_FRAME_IDX_RADIO_TUNING_KNOB
+	dbw $00, .OAMData_PartyMonWithMail1 ; SPRITE_ANIM_FRAME_IDX_PARTY_MON_WITH_MAIL_1
+	dbw $00, .OAMData_PartyMonWithMail2 ; SPRITE_ANIM_FRAME_IDX_PARTY_MON_WITH_MAIL_2
+	dbw $00, .OAMData_PartyMonWithItem1 ; SPRITE_ANIM_FRAME_IDX_PARTY_MON_WITH_ITEM_1
+	dbw $00, .OAMData_PartyMonWithItem2 ; SPRITE_ANIM_FRAME_IDX_PARTY_MON_WITH_ITEM_2
+	dbw $00, .OAMData_MagnetTrainRed ; SPRITE_ANIM_FRAME_IDX_MAGNET_TRAIN_RED_1
+	dbw $04, .OAMData_MagnetTrainRed ; SPRITE_ANIM_FRAME_IDX_MAGNET_TRAIN_RED_2
+	dbw $00, .OAMData_43 ; SPRITE_ANIM_FRAME_IDX_43
+	dbw $30, .OAMData_43 ; SPRITE_ANIM_FRAME_IDX_44
+	dbw $03, .OAMData_43 ; SPRITE_ANIM_FRAME_IDX_45
+	dbw $33, .OAMData_43 ; SPRITE_ANIM_FRAME_IDX_46
+	dbw $06, .OAMData_43 ; SPRITE_ANIM_FRAME_IDX_47
+	dbw $36, .OAMData_43 ; SPRITE_ANIM_FRAME_IDX_48
+	dbw $09, .OAMData_43 ; SPRITE_ANIM_FRAME_IDX_49
+	dbw $39, .OAMData_43 ; SPRITE_ANIM_FRAME_IDX_4A
+	dbw $0c, .OAMData_4b ; SPRITE_ANIM_FRAME_IDX_4B
+	dbw $0c, .OAMData_4c ; SPRITE_ANIM_FRAME_IDX_4C
+	dbw $3c, .OAMData_1x1_Palette0 ; SPRITE_ANIM_FRAME_IDX_4D
+	dbw $3e, .OAMData_1x1_Palette0 ; SPRITE_ANIM_FRAME_IDX_4E
+	dbw $00, .OAMData_Leaf ; SPRITE_ANIM_FRAME_IDX_LEAF
+	dbw $00, .OAMData_Tree ; SPRITE_ANIM_FRAME_IDX_TREE_1
+	dbw $00, .OAMData_CutTree2 ; SPRITE_ANIM_FRAME_IDX_CUT_TREE_2
+	dbw $00, .OAMData_CutTree3 ; SPRITE_ANIM_FRAME_IDX_CUT_TREE_3
+	dbw $00, .OAMData_CutTree4 ; SPRITE_ANIM_FRAME_IDX_CUT_TREE_4
+	dbw $00, .OAMData_1x1_Palette0 ; SPRITE_ANIM_FRAME_IDX_EGG_CRACK
+	dbw $01, .OAMData_1x1_Palette0 ; SPRITE_ANIM_FRAME_IDX_55
+	dbw $00, .OAMData_56 ; SPRITE_ANIM_FRAME_IDX_56
+	dbw $00, .OAMData_57 ; SPRITE_ANIM_FRAME_IDX_57
+	dbw $00, .OAMData_58 ; SPRITE_ANIM_FRAME_IDX_58
+	dbw $00, .OAMData_59 ; SPRITE_ANIM_FRAME_IDX_59
+	dbw $00, .OAMData_5a ; SPRITE_ANIM_FRAME_IDX_5A
+	dbw $04, .OAMData_Tree ; SPRITE_ANIM_FRAME_IDX_HEADBUTT_TREE_2
+	dbw $00, .OAMData_5c ; SPRITE_ANIM_FRAME_IDX_5C
+	dbw $00, .OAMData_5d ; SPRITE_ANIM_FRAME_IDX_5D
+	dbw $00, .OAMData_5e ; SPRITE_ANIM_FRAME_IDX_5E
+	dbw $00, .OAMData_5f ; SPRITE_ANIM_FRAME_IDX_5F
+	dbw $00, .OAMData_60 ; SPRITE_ANIM_FRAME_IDX_60
+	dbw $00, .OAMData_61 ; SPRITE_ANIM_FRAME_IDX_61
+	dbw $00, .OAMData_62 ; SPRITE_ANIM_FRAME_IDX_62
+	dbw $00, .OAMData_BlueWalk ; SPRITE_ANIM_FRAME_IDX_BLUE_WALK_1
+	dbw $04, .OAMData_BlueWalk ; SPRITE_ANIM_FRAME_IDX_BLUE_WALK_2
+	dbw $00, .OAMData_MagnetTrainBlue ; SPRITE_ANIM_FRAME_IDX_MAGNET_TRAIN_BLUE_1
+	dbw $04, .OAMData_MagnetTrainBlue ; SPRITE_ANIM_FRAME_IDX_MAGNET_TRAIN_BLUE_2
+	dbw $20, .OAMData_ForMobile22 ; SPRITE_ANIM_FRAME_IDX_FOR_MOBILE_22_1
+	dbw $21, .OAMData_ForMobile22 ; SPRITE_ANIM_FRAME_IDX_FOR_MOBILE_22_2
+	dbw $22, .OAMData_ForMobile25_1 ; SPRITE_ANIM_FRAME_IDX_FOR_MOBILE_25_1
+	dbw $23, .OAMData_ForMobile25_2 ; SPRITE_ANIM_FRAME_IDX_FOR_MOBILE_25_2
+	dbw $27, .OAMData_ForMobile25_3 ; SPRITE_ANIM_FRAME_IDX_FOR_MOBILE_25_3
+	dbw $2a, .OAMData_ForMobile23 ; SPRITE_ANIM_FRAME_IDX_FOR_MOBILE_23
+	dbw $2a, .OAMData_ForMobile24 ; SPRITE_ANIM_FRAME_IDX_FOR_MOBILE_24
+	dbw $00, .OAMData_IntroSuicune1 ; SPRITE_ANIM_FRAME_IDX_INTRO_SUICUNE_1
+	dbw $08, .OAMData_IntroSuicune2 ; SPRITE_ANIM_FRAME_IDX_INTRO_SUICUNE_2
+	dbw $60, .OAMData_IntroSuicune3 ; SPRITE_ANIM_FRAME_IDX_INTRO_SUICUNE_3
+	dbw $68, .OAMData_IntroSuicune4 ; SPRITE_ANIM_FRAME_IDX_INTRO_SUICUNE_4
+	dbw $00, .OAMData_IntroPichu ; SPRITE_ANIM_FRAME_IDX_INTRO_PICHU_1
+	dbw $05, .OAMData_IntroPichu ; SPRITE_ANIM_FRAME_IDX_INTRO_PICHU_2
+	dbw $0a, .OAMData_IntroPichu ; SPRITE_ANIM_FRAME_IDX_INTRO_PICHU_3
+	dbw $50, .OAMData_IntroWooper ; SPRITE_ANIM_FRAME_IDX_INTRO_WOOPER
+	dbw $00, .OAMData_IntroUnown1 ; SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_1
+	dbw $01, .OAMData_IntroUnown2 ; SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_2
+	dbw $04, .OAMData_IntroUnown3 ; SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_3
+	dbw $00, .OAMData_18 ; SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_F_2_1
+	dbw $01, .OAMData_IntroUnownF2_2 ; SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_F_2_2
+	dbw $03, .OAMData_IntroUnownF2_3 ; SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_F_2_3
+	dbw $08, .OAMData_IntroUnownF2_4_5 ; SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_F_2_4
+	dbw $1c, .OAMData_IntroUnownF2_4_5 ; SPRITE_ANIM_FRAME_IDX_INTRO_UNOWN_F_2_5
+	dbw $80, .OAMData_IntroSuicuneAway ; SPRITE_ANIM_FRAME_IDX_INTRO_SUICUNE_AWAY
+	dbw $00, .OAMData_Celebi ; SPRITE_ANIM_FRAME_IDX_CELEBI_1
+	dbw $04, .OAMData_Celebi ; SPRITE_ANIM_FRAME_IDX_CELEBI_2
+	dbw $d0, .OAMData_GameFreakLogo1_3 ; SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_1
+	dbw $d3, .OAMData_GameFreakLogo1_3 ; SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_2
+	dbw $d6, .OAMData_GameFreakLogo1_3 ; SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_3
+	dbw $6c, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_4
+	dbw $68, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_5
+	dbw $64, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_6
+	dbw $60, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_7
+	dbw $0c, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_8
+	dbw $08, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_9
+	dbw $04, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_10
+	dbw $00, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_FRAME_IDX_GAMEFREAK_LOGO_11
+
+.OAMData_1x1_Palette0:
 	db 1
 	dsprite -1,  4, -1,  4, $00, $00
 
@@ -153,14 +153,14 @@
 	dsprite  0,  0, -1,  0, $10, $00
 	dsprite  0,  0,  0,  0, $11, $00
 
-.OAMData_23:
+.OAMData_GSIntroStar:
 	db 4
-	dsprite -1,  0, -1,  0, $00, $00
-	dsprite -1,  0,  0,  0, $00, $20
-	dsprite  0,  0, -1,  0, $01, $00
-	dsprite  0,  0,  0,  0, $01, $20
+	dsprite -1,  0, -1,  0, $00, 0
+	dsprite -1,  0,  0,  0, $00, 0 | X_FLIP
+	dsprite  0,  0, -1,  0, $01, 0
+	dsprite  0,  0,  0,  0, $01, 0 | X_FLIP
 
-.OAMData_30:
+.OAMData_TradePokeBall1:
 	db 4
 	dsprite -1,  0, -1,  0, $00, $80
 	dsprite -1,  0,  0,  0, $00, $a0
@@ -189,24 +189,24 @@
 	dsprite  0,  0, -1,  0, $00, $c0
 	dsprite  0,  0,  0,  0, $00, $e0
 
-.OAMData_19:
+.OAMData_TradePoofBubble:
 	db 16
-	dsprite -2,  0, -2,  0, $00, $00
-	dsprite -2,  0, -1,  0, $01, $00
-	dsprite -1,  0, -2,  0, $02, $00
-	dsprite -1,  0, -1,  0, $03, $00
-	dsprite -2,  0,  0,  0, $01, $20
-	dsprite -2,  0,  1,  0, $00, $20
-	dsprite -1,  0,  0,  0, $03, $20
-	dsprite -1,  0,  1,  0, $02, $20
-	dsprite  0,  0, -2,  0, $02, $40
-	dsprite  0,  0, -1,  0, $03, $40
-	dsprite  1,  0, -2,  0, $00, $40
-	dsprite  1,  0, -1,  0, $01, $40
-	dsprite  0,  0,  0,  0, $03, $60
-	dsprite  0,  0,  1,  0, $02, $60
-	dsprite  1,  0,  0,  0, $01, $60
-	dsprite  1,  0,  1,  0, $00, $60
+	dsprite -2,  0, -2,  0, $00, 0
+	dsprite -2,  0, -1,  0, $01, 0
+	dsprite -1,  0, -2,  0, $02, 0
+	dsprite -1,  0, -1,  0, $03, 0
+	dsprite -2,  0,  0,  0, $01, 0 | X_FLIP
+	dsprite -2,  0,  1,  0, $00, 0 | X_FLIP
+	dsprite -1,  0,  0,  0, $03, 0 | X_FLIP
+	dsprite -1,  0,  1,  0, $02, 0 | X_FLIP
+	dsprite  0,  0, -2,  0, $02, 0 | Y_FLIP
+	dsprite  0,  0, -1,  0, $03, 0 | Y_FLIP
+	dsprite  1,  0, -2,  0, $00, 0 | Y_FLIP
+	dsprite  1,  0, -1,  0, $01, 0 | Y_FLIP
+	dsprite  0,  0,  0,  0, $03, 0 | X_FLIP | Y_FLIP
+	dsprite  0,  0,  1,  0, $02, 0 | X_FLIP | Y_FLIP
+	dsprite  1,  0,  0,  0, $01, 0 | X_FLIP | Y_FLIP
+	dsprite  1,  0,  1,  0, $00, 0 | X_FLIP | Y_FLIP
 
 .OAMData_1a:
 	db 36
@@ -346,52 +346,47 @@
 	dsprite  2,  0,  1,  0, $22, $00
 	dsprite  2,  0,  2,  0, $23, $00
 
-.OAMData_00:
-; party menu icons
+.OAMData_RedWalk:
 	db 4
-	dsprite -1,  0, -1,  0, $00, $00
-	dsprite -1,  0,  0,  0, $01, $00
-	dsprite  0,  0, -1,  0, $02, $00
-	dsprite  0,  0,  0,  0, $03, $00
+	dsprite -1,  0, -1,  0, $00, PAL_OW_RED
+	dsprite -1,  0,  0,  0, $01, PAL_OW_RED
+	dsprite  0,  0, -1,  0, $02, PAL_OW_RED
+	dsprite  0,  0,  0,  0, $03, PAL_OW_RED
 
-.OAMData_31:
+.OAMData_MagnetTrainRed:
 	db 4
-	dsprite -1,  0, -1,  0, $00, $80
-	dsprite -1,  0,  0,  0, $01, $80
-	dsprite  0,  0, -1,  0, $02, $80
-	dsprite  0,  0,  0,  0, $03, $80
+	dsprite -1,  0, -1,  0, $00, PAL_OW_RED | BEHIND_BG
+	dsprite -1,  0,  0,  0, $01, PAL_OW_RED | BEHIND_BG
+	dsprite  0,  0, -1,  0, $02, PAL_OW_RED | BEHIND_BG
+	dsprite  0,  0,  0,  0, $03, PAL_OW_RED | BEHIND_BG
 
-.OAMData_3d:
-; party menu icon with mail, frame 1
+.OAMData_PartyMonWithMail1:
 	db 4
-	dsprite -1,  0, -1,  0, $00, $00
-	dsprite -1,  0,  0,  0, $01, $00
-	dsprite  0,  0, -1,  0, $08, $00
-	dsprite  0,  0,  0,  0, $03, $00
+	dsprite -1,  0, -1,  0, $00, PAL_OW_RED
+	dsprite -1,  0,  0,  0, $01, PAL_OW_RED
+	dsprite  0,  0, -1,  0, $08, PAL_OW_RED
+	dsprite  0,  0,  0,  0, $03, PAL_OW_RED
 
-.OAMData_3e:
-; party menu icon with mail, frame 2
+.OAMData_PartyMonWithMail2:
 	db 4
-	dsprite -1,  0, -1,  0, $04, $00
-	dsprite -1,  0,  0,  0, $05, $00
-	dsprite  0,  0, -1,  0, $08, $00
-	dsprite  0,  0,  0,  0, $07, $00
+	dsprite -1,  0, -1,  0, $04, PAL_OW_RED
+	dsprite -1,  0,  0,  0, $05, PAL_OW_RED
+	dsprite  0,  0, -1,  0, $08, PAL_OW_RED
+	dsprite  0,  0,  0,  0, $07, PAL_OW_RED
 
-.OAMData_3f:
-; party menu icon with item, frame 1
+.OAMData_PartyMonWithItem1:
 	db 4
-	dsprite -1,  0, -1,  0, $00, $00
-	dsprite -1,  0,  0,  0, $01, $00
-	dsprite  0,  0, -1,  0, $09, $00
-	dsprite  0,  0,  0,  0, $03, $00
+	dsprite -1,  0, -1,  0, $00, PAL_OW_RED
+	dsprite -1,  0,  0,  0, $01, PAL_OW_RED
+	dsprite  0,  0, -1,  0, $09, PAL_OW_RED
+	dsprite  0,  0,  0,  0, $03, PAL_OW_RED
 
-.OAMData_40:
-; party menu icon with item, frame 2
+.OAMData_PartyMonWithItem2:
 	db 4
-	dsprite -1,  0, -1,  0, $04, $00
-	dsprite -1,  0,  0,  0, $05, $00
-	dsprite  0,  0, -1,  0, $09, $00
-	dsprite  0,  0,  0,  0, $07, $00
+	dsprite -1,  0, -1,  0, $04, PAL_OW_RED
+	dsprite -1,  0,  0,  0, $05, PAL_OW_RED
+	dsprite  0,  0, -1,  0, $09, PAL_OW_RED
+	dsprite  0,  0,  0,  0, $07, PAL_OW_RED
 
 .OAMData_06:
 	db 6
@@ -447,36 +442,36 @@
 	dsprite -1,  0,  3,  0, $03, $00
 	dsprite  0,  0,  2,  0, $04, $00
 
-.OAMData_4f:
+.OAMData_Leaf:
 	db 1
-	dsprite -1,  4, -1,  4, $00, $06
+	dsprite -1,  4, -1,  4, $00, PAL_OW_TREE
 
-.OAMData_50:
+.OAMData_Tree:
 	db 4
-	dsprite -1,  0, -1,  0, $00, $06
-	dsprite -1,  0,  0,  0, $01, $06
-	dsprite  0,  0, -1,  0, $02, $06
-	dsprite  0,  0,  0,  0, $03, $06
+	dsprite -1,  0, -1,  0, $00, PAL_OW_TREE
+	dsprite -1,  0,  0,  0, $01, PAL_OW_TREE
+	dsprite  0,  0, -1,  0, $02, PAL_OW_TREE
+	dsprite  0,  0,  0,  0, $03, PAL_OW_TREE
 
-.OAMData_20:
+.OAMData_TextEntryCursor:
 	db 4
-	dsprite -1,  7, -1,  7, $00, $00
-	dsprite -1,  7,  0,  0, $00, $20
-	dsprite  0,  0, -1,  7, $00, $40
-	dsprite  0,  0,  0,  0, $00, $60
+	dsprite -1,  7, -1,  7, $00, 0
+	dsprite -1,  7,  0,  0, $00, 0 | X_FLIP
+	dsprite  0,  0, -1,  7, $00, 0 | Y_FLIP
+	dsprite  0,  0,  0,  0, $00, 0 | X_FLIP | Y_FLIP
 
-.OAMData_21:
+.OAMData_ForFrameset09:
 	db 10
-	dsprite -1,  7,  0,  0, $00, $00
-	dsprite -1,  7,  1,  0, $01, $00
-	dsprite -1,  7,  2,  0, $01, $00
-	dsprite -1,  7,  3,  0, $01, $00
-	dsprite -1,  7,  4,  0, $00, $20
-	dsprite  0,  0,  0,  0, $00, $40
-	dsprite  0,  0,  1,  0, $01, $40
-	dsprite  0,  0,  2,  0, $01, $40
-	dsprite  0,  0,  3,  0, $01, $40
-	dsprite  0,  0,  4,  0, $00, $60
+	dsprite -1,  7,  0,  0, $00, 0
+	dsprite -1,  7,  1,  0, $01, 0
+	dsprite -1,  7,  2,  0, $01, 0
+	dsprite -1,  7,  3,  0, $01, 0
+	dsprite -1,  7,  4,  0, $00, 0 | X_FLIP
+	dsprite  0,  0,  0,  0, $00, 0 | Y_FLIP
+	dsprite  0,  0,  1,  0, $01, 0 | Y_FLIP
+	dsprite  0,  0,  2,  0, $01, 0 | Y_FLIP
+	dsprite  0,  0,  3,  0, $01, 0 | Y_FLIP
+	dsprite  0,  0,  4,  0, $00, 0 | X_FLIP | Y_FLIP
 
 .OAMData_22:
 	db 15
@@ -496,65 +491,65 @@
 	dsprite  1,  4, -1,  4, $0d, $11
 	dsprite  1,  4,  0,  4, $0e, $11
 
-.OAMData_27:
+.OAMData_SlotsGolem:
 	db 6
-	dsprite -2,  4, -2,  4, $00, $15
-	dsprite -2,  4, -1,  4, $02, $15
-	dsprite -2,  4,  0,  4, $00, $35
-	dsprite  0,  4, -2,  4, $04, $15
-	dsprite  0,  4, -1,  4, $06, $15
-	dsprite  0,  4,  0,  4, $04, $35
+	dsprite -2,  4, -2,  4, $00, 5 | OBP_NUM
+	dsprite -2,  4, -1,  4, $02, 5 | OBP_NUM
+	dsprite -2,  4,  0,  4, $00, 5 | OBP_NUM | X_FLIP
+	dsprite  0,  4, -2,  4, $04, 5 | OBP_NUM
+	dsprite  0,  4, -1,  4, $06, 5 | OBP_NUM
+	dsprite  0,  4,  0,  4, $04, 5 | OBP_NUM | X_FLIP
 
-.OAMData_29:
+.OAMData_SlotsChansey1:
 	db 6
-	dsprite -2,  4, -2,  4, $00, $16
-	dsprite -2,  4, -1,  4, $02, $16
-	dsprite -2,  4,  0,  4, $04, $16
-	dsprite  0,  4, -2,  4, $06, $16
-	dsprite  0,  4, -1,  4, $08, $16
-	dsprite  0,  4,  0,  4, $0a, $16
+	dsprite -2,  4, -2,  4, $00, 6 | OBP_NUM
+	dsprite -2,  4, -1,  4, $02, 6 | OBP_NUM
+	dsprite -2,  4,  0,  4, $04, 6 | OBP_NUM
+	dsprite  0,  4, -2,  4, $06, 6 | OBP_NUM
+	dsprite  0,  4, -1,  4, $08, 6 | OBP_NUM
+	dsprite  0,  4,  0,  4, $0a, 6 | OBP_NUM
 
-.OAMData_2a:
+.OAMData_SlotsChansey2:
 	db 6
-	dsprite -2,  4, -2,  4, $00, $16
-	dsprite -2,  4, -1,  4, $02, $16
-	dsprite -2,  4,  0,  4, $04, $16
-	dsprite  0,  4, -2,  4, $0c, $16
-	dsprite  0,  4, -1,  4, $0e, $16
-	dsprite  0,  4,  0,  4, $10, $16
+	dsprite -2,  4, -2,  4, $00, 6 | OBP_NUM
+	dsprite -2,  4, -1,  4, $02, 6 | OBP_NUM
+	dsprite -2,  4,  0,  4, $04, 6 | OBP_NUM
+	dsprite  0,  4, -2,  4, $0c, 6 | OBP_NUM
+	dsprite  0,  4, -1,  4, $0e, 6 | OBP_NUM
+	dsprite  0,  4,  0,  4, $10, 6 | OBP_NUM
 
-.OAMData_2b:
+.OAMData_SlotsChansey3:
 	db 6
-	dsprite -2,  4, -2,  4, $00, $16
-	dsprite -2,  4, -1,  4, $02, $16
-	dsprite -2,  4,  0,  4, $04, $16
-	dsprite  0,  4, -2,  4, $12, $16
-	dsprite  0,  4, -1,  4, $14, $16
-	dsprite  0,  4,  0,  4, $16, $16
+	dsprite -2,  4, -2,  4, $00, 6 | OBP_NUM
+	dsprite -2,  4, -1,  4, $02, 6 | OBP_NUM
+	dsprite -2,  4,  0,  4, $04, 6 | OBP_NUM
+	dsprite  0,  4, -2,  4, $12, 6 | OBP_NUM
+	dsprite  0,  4, -1,  4, $14, 6 | OBP_NUM
+	dsprite  0,  4,  0,  4, $16, 6 | OBP_NUM
 
-.OAMData_2c:
+.OAMData_SlotsChansey4:
 	db 6
-	dsprite -2,  4, -2,  4, $00, $16
-	dsprite -2,  4, -1,  4, $02, $16
-	dsprite -2,  4,  0,  4, $04, $16
-	dsprite  0,  4, -2,  4, $18, $16
-	dsprite  0,  4, -1,  4, $1a, $16
-	dsprite  0,  4,  0,  4, $1c, $16
+	dsprite -2,  4, -2,  4, $00, 6 | OBP_NUM
+	dsprite -2,  4, -1,  4, $02, 6 | OBP_NUM
+	dsprite -2,  4,  0,  4, $04, 6 | OBP_NUM
+	dsprite  0,  4, -2,  4, $18, 6 | OBP_NUM
+	dsprite  0,  4, -1,  4, $1a, 6 | OBP_NUM
+	dsprite  0,  4,  0,  4, $1c, 6 | OBP_NUM
 
-.OAMData_2d:
+.OAMData_SlotsChansey5:
 	db 6
-	dsprite -2,  4, -2,  4, $1e, $16
-	dsprite -2,  4, -1,  4, $20, $16
-	dsprite -2,  4,  0,  4, $22, $16
-	dsprite  0,  4, -2,  4, $24, $16
-	dsprite  0,  4, -1,  4, $26, $16
-	dsprite  0,  4,  0,  4, $28, $16
+	dsprite -2,  4, -2,  4, $1e, 6 | OBP_NUM
+	dsprite -2,  4, -1,  4, $20, 6 | OBP_NUM
+	dsprite -2,  4,  0,  4, $22, 6 | OBP_NUM
+	dsprite  0,  4, -2,  4, $24, 6 | OBP_NUM
+	dsprite  0,  4, -1,  4, $26, 6 | OBP_NUM
+	dsprite  0,  4,  0,  4, $28, 6 | OBP_NUM
 
-.OAMData_3c:
+.OAMData_RadioTuningKnob:
 	db 3
-	dsprite -2,  4, -1,  4, $00, $10
-	dsprite -1,  4, -1,  4, $00, $10
-	dsprite  0,  4, -1,  4, $00, $10
+	dsprite -2,  4, -1,  4, $00, 0 | OBP_NUM
+	dsprite -1,  4, -1,  4, $00, 0 | OBP_NUM
+	dsprite  0,  4, -1,  4, $00, 0 | OBP_NUM
 
 .OAMData_4b:
 	db 6
@@ -572,26 +567,26 @@
 	dsprite  0,  0,  2,  0, $02, $00
 	dsprite  0,  0,  3,  0, $03, $00
 
-.OAMData_51:
+.OAMData_CutTree2:
 	db 4
-	dsprite -1,  0, -2,  6, $00, $06
-	dsprite -1,  0,  0,  2, $01, $06
-	dsprite  0,  0, -2,  6, $02, $06
-	dsprite  0,  0,  0,  2, $03, $06
+	dsprite -1,  0, -2,  6, $00, PAL_OW_TREE
+	dsprite -1,  0,  0,  2, $01, PAL_OW_TREE
+	dsprite  0,  0, -2,  6, $02, PAL_OW_TREE
+	dsprite  0,  0,  0,  2, $03, PAL_OW_TREE
 
-.OAMData_52:
+.OAMData_CutTree3:
 	db 4
-	dsprite -1,  0, -2,  4, $00, $06
-	dsprite -1,  0,  0,  4, $01, $06
-	dsprite  0,  0, -2,  4, $02, $06
-	dsprite  0,  0,  0,  4, $03, $06
+	dsprite -1,  0, -2,  4, $00, PAL_OW_TREE
+	dsprite -1,  0,  0,  4, $01, PAL_OW_TREE
+	dsprite  0,  0, -2,  4, $02, PAL_OW_TREE
+	dsprite  0,  0,  0,  4, $03, PAL_OW_TREE
 
-.OAMData_53:
+.OAMData_CutTree4:
 	db 4
-	dsprite -1,  0, -2,  0, $00, $06
-	dsprite -1,  0,  1,  0, $01, $06
-	dsprite  0,  0, -2,  0, $02, $06
-	dsprite  0,  0,  1,  0, $03, $06
+	dsprite -1,  0, -2,  0, $00, PAL_OW_TREE
+	dsprite -1,  0,  1,  0, $01, PAL_OW_TREE
+	dsprite  0,  0, -2,  0, $02, PAL_OW_TREE
+	dsprite  0,  0,  1,  0, $03, PAL_OW_TREE
 
 .OAMData_56:
 	db 19
@@ -692,9 +687,9 @@
 	dsprite -2,  0,  3,  0, $22, $00
 	dsprite  0,  0,  3,  0, $24, $00
 
-.OAMData_1e:
+.OAMData_GSTitleTrail:
 	db 1
-	dsprite -1,  4, -1,  4, $00, $11
+	dsprite -1,  4, -1,  4, $00, 1 | OBP_NUM
 
 .OAMData_5c:
 	db 12
@@ -747,266 +742,266 @@
 	dsprite  0,  0,  0,  0, $32, $00
 	dsprite  1,  0,  0,  0, $35, $00
 
-.OAMData_63:
+.OAMData_BlueWalk:
 	db 4
-	dsprite -1,  0, -1,  0, $00, $01
-	dsprite -1,  0,  0,  0, $01, $01
-	dsprite  0,  0, -1,  0, $02, $01
-	dsprite  0,  0,  0,  0, $03, $01
+	dsprite -1,  0, -1,  0, $00, PAL_OW_BLUE
+	dsprite -1,  0,  0,  0, $01, PAL_OW_BLUE
+	dsprite  0,  0, -1,  0, $02, PAL_OW_BLUE
+	dsprite  0,  0,  0,  0, $03, PAL_OW_BLUE
 
-.OAMData_65:
+.OAMData_MagnetTrainBlue:
 	db 4
-	dsprite -1,  0, -1,  0, $00, $81
-	dsprite -1,  0,  0,  0, $01, $81
-	dsprite  0,  0, -1,  0, $02, $81
-	dsprite  0,  0,  0,  0, $03, $81
+	dsprite -1,  0, -1,  0, $00, PAL_OW_BLUE | BEHIND_BG
+	dsprite -1,  0,  0,  0, $01, PAL_OW_BLUE | BEHIND_BG
+	dsprite  0,  0, -1,  0, $02, PAL_OW_BLUE | BEHIND_BG
+	dsprite  0,  0,  0,  0, $03, PAL_OW_BLUE | BEHIND_BG
 
-.OAMData_67:
+.OAMData_ForMobile22:
 	db 1
-	dsprite -1,  4, -1,  4, $00, $02
+	dsprite -1,  4, -1,  4, $00, 2
 
-.OAMData_6c:
+.OAMData_ForMobile23:
 	db 4
-	dsprite -2,  0, -1,  4, $00, $03
-	dsprite -1,  0, -1,  4, $01, $03
-	dsprite  0,  0, -1,  4, $02, $03
-	dsprite  1,  0, -1,  4, $03, $03
+	dsprite -2,  0, -1,  4, $00, 3
+	dsprite -1,  0, -1,  4, $01, 3
+	dsprite  0,  0, -1,  4, $02, 3
+	dsprite  1,  0, -1,  4, $03, 3
 
-.OAMData_6d:
+.OAMData_ForMobile24:
 	db 4
-	dsprite -2,  0, -1,  4, $03, $44
-	dsprite -1,  0, -1,  4, $02, $44
-	dsprite  0,  0, -1,  4, $01, $44
-	dsprite  1,  0, -1,  4, $00, $44
+	dsprite -2,  0, -1,  4, $03, 4 | Y_FLIP
+	dsprite -1,  0, -1,  4, $02, 4 | Y_FLIP
+	dsprite  0,  0, -1,  4, $01, 4 | Y_FLIP
+	dsprite  1,  0, -1,  4, $00, 4 | Y_FLIP
 
-.OAMData_69:
+.OAMData_ForMobile25_1:
 	db 4
-	dsprite -1,  0, -1,  0, $00, $01
-	dsprite -1,  0,  0,  0, $00, $21
-	dsprite  0,  0, -1,  0, $00, $41
-	dsprite  0,  0,  0,  0, $00, $61
+	dsprite -1,  0, -1,  0, $00, 1
+	dsprite -1,  0,  0,  0, $00, 1 | X_FLIP
+	dsprite  0,  0, -1,  0, $00, 1 | Y_FLIP
+	dsprite  0,  0,  0,  0, $00, 1 | X_FLIP | Y_FLIP
 
-.OAMData_6a:
+.OAMData_ForMobile25_2:
 	db 8
-	dsprite -2,  4, -2,  4, $00, $01
-	dsprite -2,  4, -1,  4, $01, $01
-	dsprite -2,  4,  0,  4, $00, $21
-	dsprite -1,  4, -2,  4, $02, $01
-	dsprite -1,  4,  0,  4, $02, $21
-	dsprite  0,  4, -2,  4, $00, $41
-	dsprite  0,  4, -1,  4, $01, $41
-	dsprite  0,  4,  0,  4, $00, $61
+	dsprite -2,  4, -2,  4, $00, 1
+	dsprite -2,  4, -1,  4, $01, 1
+	dsprite -2,  4,  0,  4, $00, 1 | X_FLIP
+	dsprite -1,  4, -2,  4, $02, 1
+	dsprite -1,  4,  0,  4, $02, 1 | X_FLIP
+	dsprite  0,  4, -2,  4, $00, 1 | Y_FLIP
+	dsprite  0,  4, -1,  4, $01, 1 | Y_FLIP
+	dsprite  0,  4,  0,  4, $00, 1 | X_FLIP | Y_FLIP
 
-.OAMData_6b:
+.OAMData_ForMobile25_3:
 	db 12
-	dsprite -2,  0, -2,  0, $00, $01
-	dsprite -2,  0, -1,  0, $01, $01
-	dsprite -1,  0, -2,  0, $02, $01
-	dsprite -2,  0,  0,  0, $01, $21
-	dsprite -2,  0,  1,  0, $00, $21
-	dsprite -1,  0,  1,  0, $02, $21
-	dsprite  0,  0, -2,  0, $02, $41
-	dsprite  1,  0, -2,  0, $00, $41
-	dsprite  1,  0, -1,  0, $01, $41
-	dsprite  0,  0,  1,  0, $02, $61
-	dsprite  1,  0,  0,  0, $01, $61
-	dsprite  1,  0,  1,  0, $00, $61
+	dsprite -2,  0, -2,  0, $00, 1
+	dsprite -2,  0, -1,  0, $01, 1
+	dsprite -1,  0, -2,  0, $02, 1
+	dsprite -2,  0,  0,  0, $01, 1 | X_FLIP
+	dsprite -2,  0,  1,  0, $00, 1 | X_FLIP
+	dsprite -1,  0,  1,  0, $02, 1 | X_FLIP
+	dsprite  0,  0, -2,  0, $02, 1 | Y_FLIP
+	dsprite  1,  0, -2,  0, $00, 1 | Y_FLIP
+	dsprite  1,  0, -1,  0, $01, 1 | Y_FLIP
+	dsprite  0,  0,  1,  0, $02, 1 | X_FLIP | Y_FLIP
+	dsprite  1,  0,  0,  0, $01, 1 | X_FLIP | Y_FLIP
+	dsprite  1,  0,  1,  0, $00, 1 | X_FLIP | Y_FLIP
 
-.OAMData_6e:
+.OAMData_IntroSuicune1:
 	db 36
-	dsprite -3,  0,  1,  0, $05, $00
-	dsprite -3,  0,  2,  0, $06, $00
-	dsprite -3,  0,  3,  0, $07, $00
-	dsprite -2,  0, -3,  0, $11, $00
-	dsprite -2,  0, -2,  0, $12, $00
-	dsprite -2,  0, -1,  0, $13, $00
-	dsprite -2,  0,  0,  0, $14, $00
-	dsprite -2,  0,  1,  0, $15, $00
-	dsprite -2,  0,  2,  0, $16, $00
-	dsprite -2,  0,  3,  0, $17, $00
-	dsprite -1,  0, -4,  0, $20, $00
-	dsprite -1,  0, -3,  0, $21, $00
-	dsprite -1,  0, -2,  0, $22, $00
-	dsprite -1,  0, -1,  0, $23, $00
-	dsprite -1,  0,  0,  0, $24, $00
-	dsprite -1,  0,  1,  0, $25, $00
-	dsprite -1,  0,  2,  0, $26, $00
-	dsprite -1,  0,  3,  0, $27, $00
-	dsprite  0,  0, -4,  0, $30, $00
-	dsprite  0,  0, -3,  0, $31, $00
-	dsprite  0,  0, -2,  0, $32, $00
-	dsprite  0,  0, -1,  0, $33, $00
-	dsprite  0,  0,  0,  0, $34, $00
-	dsprite  0,  0,  1,  0, $35, $00
-	dsprite  0,  0,  2,  0, $36, $00
-	dsprite  1,  0, -4,  0, $40, $00
-	dsprite  1,  0, -3,  0, $41, $00
-	dsprite  1,  0, -2,  0, $42, $00
-	dsprite  1,  0, -1,  0, $43, $00
-	dsprite  1,  0,  0,  0, $44, $00
-	dsprite  1,  0,  1,  0, $45, $00
-	dsprite  1,  0,  2,  0, $46, $00
-	dsprite  1,  0,  3,  0, $47, $00
-	dsprite  2,  0, -4,  0, $50, $00
-	dsprite  2,  0, -3,  0, $51, $00
-	dsprite  2,  0,  3,  0, $57, $00
+	dsprite -3,  0,  1,  0, $05, 0
+	dsprite -3,  0,  2,  0, $06, 0
+	dsprite -3,  0,  3,  0, $07, 0
+	dsprite -2,  0, -3,  0, $11, 0
+	dsprite -2,  0, -2,  0, $12, 0
+	dsprite -2,  0, -1,  0, $13, 0
+	dsprite -2,  0,  0,  0, $14, 0
+	dsprite -2,  0,  1,  0, $15, 0
+	dsprite -2,  0,  2,  0, $16, 0
+	dsprite -2,  0,  3,  0, $17, 0
+	dsprite -1,  0, -4,  0, $20, 0
+	dsprite -1,  0, -3,  0, $21, 0
+	dsprite -1,  0, -2,  0, $22, 0
+	dsprite -1,  0, -1,  0, $23, 0
+	dsprite -1,  0,  0,  0, $24, 0
+	dsprite -1,  0,  1,  0, $25, 0
+	dsprite -1,  0,  2,  0, $26, 0
+	dsprite -1,  0,  3,  0, $27, 0
+	dsprite  0,  0, -4,  0, $30, 0
+	dsprite  0,  0, -3,  0, $31, 0
+	dsprite  0,  0, -2,  0, $32, 0
+	dsprite  0,  0, -1,  0, $33, 0
+	dsprite  0,  0,  0,  0, $34, 0
+	dsprite  0,  0,  1,  0, $35, 0
+	dsprite  0,  0,  2,  0, $36, 0
+	dsprite  1,  0, -4,  0, $40, 0
+	dsprite  1,  0, -3,  0, $41, 0
+	dsprite  1,  0, -2,  0, $42, 0
+	dsprite  1,  0, -1,  0, $43, 0
+	dsprite  1,  0,  0,  0, $44, 0
+	dsprite  1,  0,  1,  0, $45, 0
+	dsprite  1,  0,  2,  0, $46, 0
+	dsprite  1,  0,  3,  0, $47, 0
+	dsprite  2,  0, -4,  0, $50, 0
+	dsprite  2,  0, -3,  0, $51, 0
+	dsprite  2,  0,  3,  0, $57, 0
 
-.OAMData_6f:
+.OAMData_IntroSuicune2:
 	db 28
-	dsprite -3,  0,  0,  0, $04, $00
-	dsprite -3,  0,  1,  0, $05, $00
-	dsprite -3,  0,  2,  0, $06, $00
-	dsprite -2,  0, -3,  0, $11, $00
-	dsprite -2,  0, -2,  0, $12, $00
-	dsprite -2,  0, -1,  0, $13, $00
-	dsprite -2,  0,  0,  0, $14, $00
-	dsprite -2,  0,  1,  0, $15, $00
-	dsprite -2,  0,  2,  0, $16, $00
-	dsprite -1,  0, -3,  0, $21, $00
-	dsprite -1,  0, -2,  0, $22, $00
-	dsprite -1,  0, -1,  0, $23, $00
-	dsprite -1,  0,  0,  0, $24, $00
-	dsprite -1,  0,  1,  0, $25, $00
-	dsprite -1,  0,  2,  0, $26, $00
-	dsprite  0,  0, -4,  0, $30, $00
-	dsprite  0,  0, -3,  0, $31, $00
-	dsprite  0,  0, -2,  0, $32, $00
-	dsprite  0,  0, -1,  0, $33, $00
-	dsprite  0,  0,  0,  0, $34, $00
-	dsprite  0,  0,  1,  0, $35, $00
-	dsprite  1,  0, -2,  0, $42, $00
-	dsprite  1,  0, -1,  0, $43, $00
-	dsprite  1,  0,  0,  0, $44, $00
-	dsprite  1,  0,  1,  0, $45, $00
-	dsprite  2,  0, -1,  0, $53, $00
-	dsprite  2,  0,  0,  0, $54, $00
-	dsprite  2,  0,  1,  0, $55, $00
+	dsprite -3,  0,  0,  0, $04, 0
+	dsprite -3,  0,  1,  0, $05, 0
+	dsprite -3,  0,  2,  0, $06, 0
+	dsprite -2,  0, -3,  0, $11, 0
+	dsprite -2,  0, -2,  0, $12, 0
+	dsprite -2,  0, -1,  0, $13, 0
+	dsprite -2,  0,  0,  0, $14, 0
+	dsprite -2,  0,  1,  0, $15, 0
+	dsprite -2,  0,  2,  0, $16, 0
+	dsprite -1,  0, -3,  0, $21, 0
+	dsprite -1,  0, -2,  0, $22, 0
+	dsprite -1,  0, -1,  0, $23, 0
+	dsprite -1,  0,  0,  0, $24, 0
+	dsprite -1,  0,  1,  0, $25, 0
+	dsprite -1,  0,  2,  0, $26, 0
+	dsprite  0,  0, -4,  0, $30, 0
+	dsprite  0,  0, -3,  0, $31, 0
+	dsprite  0,  0, -2,  0, $32, 0
+	dsprite  0,  0, -1,  0, $33, 0
+	dsprite  0,  0,  0,  0, $34, 0
+	dsprite  0,  0,  1,  0, $35, 0
+	dsprite  1,  0, -2,  0, $42, 0
+	dsprite  1,  0, -1,  0, $43, 0
+	dsprite  1,  0,  0,  0, $44, 0
+	dsprite  1,  0,  1,  0, $45, 0
+	dsprite  2,  0, -1,  0, $53, 0
+	dsprite  2,  0,  0,  0, $54, 0
+	dsprite  2,  0,  1,  0, $55, 0
 
-.OAMData_70:
+.OAMData_IntroSuicune3:
 	db 30
-	dsprite -3,  0,  0,  0, $04, $00
-	dsprite -3,  0,  1,  0, $05, $00
-	dsprite -2,  0, -3,  0, $11, $00
-	dsprite -2,  0, -2,  0, $12, $00
-	dsprite -2,  0, -1,  0, $13, $00
-	dsprite -2,  0,  0,  0, $14, $00
-	dsprite -2,  0,  1,  0, $15, $00
-	dsprite -2,  0,  2,  0, $16, $00
-	dsprite -2,  0,  3,  0, $17, $00
-	dsprite -1,  0, -4,  0, $20, $00
-	dsprite -1,  0, -3,  0, $21, $00
-	dsprite -1,  0, -2,  0, $22, $00
-	dsprite -1,  0, -1,  0, $23, $00
-	dsprite -1,  0,  0,  0, $24, $00
-	dsprite -1,  0,  1,  0, $25, $00
-	dsprite -1,  0,  2,  0, $26, $00
-	dsprite  0,  0, -4,  0, $30, $00
-	dsprite  0,  0, -3,  0, $31, $00
-	dsprite  0,  0, -2,  0, $32, $00
-	dsprite  0,  0, -1,  0, $33, $00
-	dsprite  0,  0,  0,  0, $34, $00
-	dsprite  0,  0,  1,  0, $35, $00
-	dsprite  1,  0, -2,  0, $42, $00
-	dsprite  1,  0, -1,  0, $43, $00
-	dsprite  1,  0,  0,  0, $44, $00
-	dsprite  1,  0,  1,  0, $45, $00
-	dsprite  2,  0, -2,  0, $52, $00
-	dsprite  2,  0, -1,  0, $53, $00
-	dsprite  2,  0,  0,  0, $54, $00
-	dsprite  2,  0,  1,  0, $55, $00
+	dsprite -3,  0,  0,  0, $04, 0
+	dsprite -3,  0,  1,  0, $05, 0
+	dsprite -2,  0, -3,  0, $11, 0
+	dsprite -2,  0, -2,  0, $12, 0
+	dsprite -2,  0, -1,  0, $13, 0
+	dsprite -2,  0,  0,  0, $14, 0
+	dsprite -2,  0,  1,  0, $15, 0
+	dsprite -2,  0,  2,  0, $16, 0
+	dsprite -2,  0,  3,  0, $17, 0
+	dsprite -1,  0, -4,  0, $20, 0
+	dsprite -1,  0, -3,  0, $21, 0
+	dsprite -1,  0, -2,  0, $22, 0
+	dsprite -1,  0, -1,  0, $23, 0
+	dsprite -1,  0,  0,  0, $24, 0
+	dsprite -1,  0,  1,  0, $25, 0
+	dsprite -1,  0,  2,  0, $26, 0
+	dsprite  0,  0, -4,  0, $30, 0
+	dsprite  0,  0, -3,  0, $31, 0
+	dsprite  0,  0, -2,  0, $32, 0
+	dsprite  0,  0, -1,  0, $33, 0
+	dsprite  0,  0,  0,  0, $34, 0
+	dsprite  0,  0,  1,  0, $35, 0
+	dsprite  1,  0, -2,  0, $42, 0
+	dsprite  1,  0, -1,  0, $43, 0
+	dsprite  1,  0,  0,  0, $44, 0
+	dsprite  1,  0,  1,  0, $45, 0
+	dsprite  2,  0, -2,  0, $52, 0
+	dsprite  2,  0, -1,  0, $53, 0
+	dsprite  2,  0,  0,  0, $54, 0
+	dsprite  2,  0,  1,  0, $55, 0
 
-.OAMData_71:
+.OAMData_IntroSuicune4:
 	db 31
-	dsprite -2,  0, -3,  0, $11, $00
-	dsprite -2,  0, -2,  0, $12, $00
-	dsprite -2,  0, -1,  0, $13, $00
-	dsprite -2,  0,  0,  0, $14, $00
-	dsprite -2,  0,  1,  0, $15, $00
-	dsprite -2,  0,  2,  0, $16, $00
-	dsprite -2,  0,  3,  0, $17, $00
-	dsprite -1,  0, -4,  0, $20, $00
-	dsprite -1,  0, -3,  0, $21, $00
-	dsprite -1,  0, -2,  0, $22, $00
-	dsprite -1,  0, -1,  0, $23, $00
-	dsprite -1,  0,  0,  0, $24, $00
-	dsprite -1,  0,  1,  0, $25, $00
-	dsprite -1,  0,  2,  0, $26, $00
-	dsprite -1,  0,  3,  0, $27, $00
-	dsprite  0,  0, -4,  0, $30, $00
-	dsprite  0,  0, -3,  0, $31, $00
-	dsprite  0,  0, -2,  0, $32, $00
-	dsprite  0,  0, -1,  0, $33, $00
-	dsprite  0,  0,  0,  0, $34, $00
-	dsprite  0,  0,  1,  0, $35, $00
-	dsprite  0,  0,  2,  0, $36, $00
-	dsprite  1,  0, -3,  0, $41, $00
-	dsprite  1,  0, -2,  0, $42, $00
-	dsprite  1,  0, -1,  0, $43, $00
-	dsprite  1,  0,  0,  0, $44, $00
-	dsprite  1,  0,  1,  0, $45, $00
-	dsprite  2,  0, -3,  0, $51, $00
-	dsprite  2,  0, -2,  0, $52, $00
-	dsprite  2,  0,  0,  0, $54, $00
-	dsprite  2,  0,  1,  0, $55, $00
+	dsprite -2,  0, -3,  0, $11, 0
+	dsprite -2,  0, -2,  0, $12, 0
+	dsprite -2,  0, -1,  0, $13, 0
+	dsprite -2,  0,  0,  0, $14, 0
+	dsprite -2,  0,  1,  0, $15, 0
+	dsprite -2,  0,  2,  0, $16, 0
+	dsprite -2,  0,  3,  0, $17, 0
+	dsprite -1,  0, -4,  0, $20, 0
+	dsprite -1,  0, -3,  0, $21, 0
+	dsprite -1,  0, -2,  0, $22, 0
+	dsprite -1,  0, -1,  0, $23, 0
+	dsprite -1,  0,  0,  0, $24, 0
+	dsprite -1,  0,  1,  0, $25, 0
+	dsprite -1,  0,  2,  0, $26, 0
+	dsprite -1,  0,  3,  0, $27, 0
+	dsprite  0,  0, -4,  0, $30, 0
+	dsprite  0,  0, -3,  0, $31, 0
+	dsprite  0,  0, -2,  0, $32, 0
+	dsprite  0,  0, -1,  0, $33, 0
+	dsprite  0,  0,  0,  0, $34, 0
+	dsprite  0,  0,  1,  0, $35, 0
+	dsprite  0,  0,  2,  0, $36, 0
+	dsprite  1,  0, -3,  0, $41, 0
+	dsprite  1,  0, -2,  0, $42, 0
+	dsprite  1,  0, -1,  0, $43, 0
+	dsprite  1,  0,  0,  0, $44, 0
+	dsprite  1,  0,  1,  0, $45, 0
+	dsprite  2,  0, -3,  0, $51, 0
+	dsprite  2,  0, -2,  0, $52, 0
+	dsprite  2,  0,  0,  0, $54, 0
+	dsprite  2,  0,  1,  0, $55, 0
 
-.OAMData_72:
+.OAMData_IntroPichu:
 	db 25
-	dsprite -3,  4, -3,  4, $00, $09
-	dsprite -3,  4, -2,  4, $01, $09
-	dsprite -3,  4, -1,  4, $02, $09
-	dsprite -3,  4,  0,  4, $03, $09
-	dsprite -3,  4,  1,  4, $04, $09
-	dsprite -2,  4, -3,  4, $10, $09
-	dsprite -2,  4, -2,  4, $11, $09
-	dsprite -2,  4, -1,  4, $12, $09
-	dsprite -2,  4,  0,  4, $13, $09
-	dsprite -2,  4,  1,  4, $14, $09
-	dsprite -1,  4, -3,  4, $20, $09
-	dsprite -1,  4, -2,  4, $21, $09
-	dsprite -1,  4, -1,  4, $22, $09
-	dsprite -1,  4,  0,  4, $23, $09
-	dsprite -1,  4,  1,  4, $24, $09
-	dsprite  0,  4, -3,  4, $30, $09
-	dsprite  0,  4, -2,  4, $31, $09
-	dsprite  0,  4, -1,  4, $32, $09
-	dsprite  0,  4,  0,  4, $33, $09
-	dsprite  0,  4,  1,  4, $34, $09
-	dsprite  1,  4, -3,  4, $40, $09
-	dsprite  1,  4, -2,  4, $41, $09
-	dsprite  1,  4, -1,  4, $42, $09
-	dsprite  1,  4,  0,  4, $43, $09
-	dsprite  1,  4,  1,  4, $44, $09
+	dsprite -3,  4, -3,  4, $00, 1 | VRAM_BANK_1
+	dsprite -3,  4, -2,  4, $01, 1 | VRAM_BANK_1
+	dsprite -3,  4, -1,  4, $02, 1 | VRAM_BANK_1
+	dsprite -3,  4,  0,  4, $03, 1 | VRAM_BANK_1
+	dsprite -3,  4,  1,  4, $04, 1 | VRAM_BANK_1
+	dsprite -2,  4, -3,  4, $10, 1 | VRAM_BANK_1
+	dsprite -2,  4, -2,  4, $11, 1 | VRAM_BANK_1
+	dsprite -2,  4, -1,  4, $12, 1 | VRAM_BANK_1
+	dsprite -2,  4,  0,  4, $13, 1 | VRAM_BANK_1
+	dsprite -2,  4,  1,  4, $14, 1 | VRAM_BANK_1
+	dsprite -1,  4, -3,  4, $20, 1 | VRAM_BANK_1
+	dsprite -1,  4, -2,  4, $21, 1 | VRAM_BANK_1
+	dsprite -1,  4, -1,  4, $22, 1 | VRAM_BANK_1
+	dsprite -1,  4,  0,  4, $23, 1 | VRAM_BANK_1
+	dsprite -1,  4,  1,  4, $24, 1 | VRAM_BANK_1
+	dsprite  0,  4, -3,  4, $30, 1 | VRAM_BANK_1
+	dsprite  0,  4, -2,  4, $31, 1 | VRAM_BANK_1
+	dsprite  0,  4, -1,  4, $32, 1 | VRAM_BANK_1
+	dsprite  0,  4,  0,  4, $33, 1 | VRAM_BANK_1
+	dsprite  0,  4,  1,  4, $34, 1 | VRAM_BANK_1
+	dsprite  1,  4, -3,  4, $40, 1 | VRAM_BANK_1
+	dsprite  1,  4, -2,  4, $41, 1 | VRAM_BANK_1
+	dsprite  1,  4, -1,  4, $42, 1 | VRAM_BANK_1
+	dsprite  1,  4,  0,  4, $43, 1 | VRAM_BANK_1
+	dsprite  1,  4,  1,  4, $44, 1 | VRAM_BANK_1
 
-.OAMData_75:
+.OAMData_IntroWooper:
 	db 16
-	dsprite -2,  0, -3,  4, $00, $0a
-	dsprite -2,  0, -2,  4, $01, $0a
-	dsprite -2,  0, -1,  4, $02, $0a
-	dsprite -2,  0,  0,  4, $03, $0a
-	dsprite -1,  0, -3,  4, $04, $0a
-	dsprite -1,  0, -2,  4, $05, $0a
-	dsprite -1,  0, -1,  4, $06, $0a
-	dsprite -1,  0,  0,  4, $07, $0a
-	dsprite  0,  0, -3,  4, $08, $0a
-	dsprite  0,  0, -2,  4, $09, $0a
-	dsprite  0,  0, -1,  4, $0a, $0a
-	dsprite  0,  0,  0,  4, $0b, $0a
-	dsprite  1,  0, -3,  4, $0c, $0a
-	dsprite  1,  0, -2,  4, $0d, $0a
-	dsprite  1,  0, -1,  4, $0e, $0a
-	dsprite  1,  0,  0,  4, $0f, $0a
+	dsprite -2,  0, -3,  4, $00, 2 | VRAM_BANK_1
+	dsprite -2,  0, -2,  4, $01, 2 | VRAM_BANK_1
+	dsprite -2,  0, -1,  4, $02, 2 | VRAM_BANK_1
+	dsprite -2,  0,  0,  4, $03, 2 | VRAM_BANK_1
+	dsprite -1,  0, -3,  4, $04, 2 | VRAM_BANK_1
+	dsprite -1,  0, -2,  4, $05, 2 | VRAM_BANK_1
+	dsprite -1,  0, -1,  4, $06, 2 | VRAM_BANK_1
+	dsprite -1,  0,  0,  4, $07, 2 | VRAM_BANK_1
+	dsprite  0,  0, -3,  4, $08, 2 | VRAM_BANK_1
+	dsprite  0,  0, -2,  4, $09, 2 | VRAM_BANK_1
+	dsprite  0,  0, -1,  4, $0a, 2 | VRAM_BANK_1
+	dsprite  0,  0,  0,  4, $0b, 2 | VRAM_BANK_1
+	dsprite  1,  0, -3,  4, $0c, 2 | VRAM_BANK_1
+	dsprite  1,  0, -2,  4, $0d, 2 | VRAM_BANK_1
+	dsprite  1,  0, -1,  4, $0e, 2 | VRAM_BANK_1
+	dsprite  1,  0,  0,  4, $0f, 2 | VRAM_BANK_1
 
-.OAMData_76:
+.OAMData_IntroUnown1:
 	db 1
 	dsprite -1,  4, -1,  4, $00, $00
 
-.OAMData_77:
+.OAMData_IntroUnown2:
 	db 3
 	dsprite  0,  0, -1,  0, $00, $00
 	dsprite -1,  0, -1,  0, $01, $00
 	dsprite -1,  0,  0,  0, $02, $00
 
-.OAMData_78:
+.OAMData_IntroUnown3:
 	db 7
 	dsprite  1,  0, -2,  0, $00, $00
 	dsprite  0,  0, -2,  0, $01, $00
@@ -1016,121 +1011,121 @@
 	dsprite -2,  0,  0,  0, $05, $00
 	dsprite -2,  0,  1,  0, $06, $00
 
-.OAMData_7a:
+.OAMData_IntroUnownF2_2:
 	db 8
-	dsprite -1,  0, -2,  0, $00, $00
-	dsprite -1,  0, -1,  0, $01, $00
-	dsprite -1,  0,  0,  0, $01, $20
-	dsprite -1,  0,  1,  0, $00, $20
-	dsprite  0,  0, -2,  0, $00, $40
-	dsprite  0,  0, -1,  0, $01, $40
-	dsprite  0,  0,  0,  0, $01, $60
-	dsprite  0,  0,  1,  0, $00, $60
+	dsprite -1,  0, -2,  0, $00, 0
+	dsprite -1,  0, -1,  0, $01, 0
+	dsprite -1,  0,  0,  0, $01, 0 | X_FLIP
+	dsprite -1,  0,  1,  0, $00, 0 | X_FLIP
+	dsprite  0,  0, -2,  0, $00, 0 | Y_FLIP
+	dsprite  0,  0, -1,  0, $01, 0 | Y_FLIP
+	dsprite  0,  0,  0,  0, $01, 0 | X_FLIP | Y_FLIP
+	dsprite  0,  0,  1,  0, $00, 0 | X_FLIP | Y_FLIP
 
-.OAMData_7b:
+.OAMData_IntroUnownF2_3:
 	db 12
-	dsprite -3,  0, -1,  0, $00, $00
-	dsprite -2,  0, -1,  0, $01, $00
-	dsprite -1,  0, -1,  0, $02, $00
-	dsprite -3,  0,  0,  0, $00, $20
-	dsprite -2,  0,  0,  0, $01, $20
-	dsprite -1,  0,  0,  0, $02, $20
-	dsprite  0,  0, -1,  0, $02, $40
-	dsprite  1,  0, -1,  0, $01, $40
-	dsprite  2,  0, -1,  0, $00, $40
-	dsprite  0,  0,  0,  0, $02, $60
-	dsprite  1,  0,  0,  0, $01, $60
-	dsprite  2,  0,  0,  0, $00, $60
+	dsprite -3,  0, -1,  0, $00, 0
+	dsprite -2,  0, -1,  0, $01, 0
+	dsprite -1,  0, -1,  0, $02, 0
+	dsprite -3,  0,  0,  0, $00, 0 | X_FLIP
+	dsprite -2,  0,  0,  0, $01, 0 | X_FLIP
+	dsprite -1,  0,  0,  0, $02, 0 | X_FLIP
+	dsprite  0,  0, -1,  0, $02, 0 | Y_FLIP
+	dsprite  1,  0, -1,  0, $01, 0 | Y_FLIP
+	dsprite  2,  0, -1,  0, $00, 0 | Y_FLIP
+	dsprite  0,  0,  0,  0, $02, 0 | X_FLIP | Y_FLIP
+	dsprite  1,  0,  0,  0, $01, 0 | X_FLIP | Y_FLIP
+	dsprite  2,  0,  0,  0, $00, 0 | X_FLIP | Y_FLIP
 
-.OAMData_7c:
+.OAMData_IntroUnownF2_4_5:
 	db 20
-	dsprite -3,  4, -2,  0, $00, $00
-	dsprite -3,  4, -1,  0, $01, $00
-	dsprite -3,  4,  0,  0, $02, $00
-	dsprite -3,  4,  1,  0, $03, $00
-	dsprite -2,  4, -2,  0, $04, $00
-	dsprite -2,  4, -1,  0, $05, $00
-	dsprite -2,  4,  0,  0, $06, $00
-	dsprite -2,  4,  1,  0, $07, $00
-	dsprite -1,  4, -2,  0, $08, $00
-	dsprite -1,  4, -1,  0, $09, $00
-	dsprite -1,  4,  0,  0, $0a, $00
-	dsprite -1,  4,  1,  0, $0b, $00
-	dsprite  0,  4, -2,  0, $0c, $00
-	dsprite  0,  4, -1,  0, $0d, $00
-	dsprite  0,  4,  0,  0, $0e, $00
-	dsprite  0,  4,  1,  0, $0f, $00
-	dsprite  1,  4, -2,  0, $10, $00
-	dsprite  1,  4, -1,  0, $11, $00
-	dsprite  1,  4,  0,  0, $12, $00
-	dsprite  1,  4,  1,  0, $13, $00
+	dsprite -3,  4, -2,  0, $00, 0
+	dsprite -3,  4, -1,  0, $01, 0
+	dsprite -3,  4,  0,  0, $02, 0
+	dsprite -3,  4,  1,  0, $03, 0
+	dsprite -2,  4, -2,  0, $04, 0
+	dsprite -2,  4, -1,  0, $05, 0
+	dsprite -2,  4,  0,  0, $06, 0
+	dsprite -2,  4,  1,  0, $07, 0
+	dsprite -1,  4, -2,  0, $08, 0
+	dsprite -1,  4, -1,  0, $09, 0
+	dsprite -1,  4,  0,  0, $0a, 0
+	dsprite -1,  4,  1,  0, $0b, 0
+	dsprite  0,  4, -2,  0, $0c, 0
+	dsprite  0,  4, -1,  0, $0d, 0
+	dsprite  0,  4,  0,  0, $0e, 0
+	dsprite  0,  4,  1,  0, $0f, 0
+	dsprite  1,  4, -2,  0, $10, 0
+	dsprite  1,  4, -1,  0, $11, 0
+	dsprite  1,  4,  0,  0, $12, 0
+	dsprite  1,  4,  1,  0, $13, 0
 
-.OAMData_7e:
+.OAMData_IntroSuicuneAway:
 	db 20
-	dsprite  0,  0,   1,  0, $00, $81
-	dsprite  1,  0,   2,  0, $00, $81
-	dsprite  2,  0,   3,  0, $00, $81
-	dsprite  3,  0,   4,  0, $00, $81
-	dsprite  4,  0,   5,  0, $00, $81
-	dsprite  3,  0,   6,  0, $00, $81
-	dsprite  2,  0,   7,  0, $00, $81
-	dsprite  1,  0,   8,  0, $00, $81
-	dsprite  0,  0,   9,  0, $00, $81
-	dsprite  1,  0,  10,  0, $00, $81
-	dsprite  2,  0,  11,  0, $00, $81
-	dsprite  3,  0,  12,  0, $00, $81
-	dsprite  4,  0,  13,  0, $00, $81
-	dsprite  3,  0,  14,  0, $00, $81
-	dsprite  2,  0,  15,  0, $00, $81
-	dsprite  1,  0,  16,  0, $00, $81
-	dsprite  0,  0, -15,  0, $00, $81
-	dsprite  1,  0, -14,  0, $00, $81
-	dsprite  2,  0, -13,  0, $00, $81
-	dsprite  3,  0, -12,  0, $00, $81
+	dsprite  0,  0,   1,  0, $00, 1 | BEHIND_BG
+	dsprite  1,  0,   2,  0, $00, 1 | BEHIND_BG
+	dsprite  2,  0,   3,  0, $00, 1 | BEHIND_BG
+	dsprite  3,  0,   4,  0, $00, 1 | BEHIND_BG
+	dsprite  4,  0,   5,  0, $00, 1 | BEHIND_BG
+	dsprite  3,  0,   6,  0, $00, 1 | BEHIND_BG
+	dsprite  2,  0,   7,  0, $00, 1 | BEHIND_BG
+	dsprite  1,  0,   8,  0, $00, 1 | BEHIND_BG
+	dsprite  0,  0,   9,  0, $00, 1 | BEHIND_BG
+	dsprite  1,  0,  10,  0, $00, 1 | BEHIND_BG
+	dsprite  2,  0,  11,  0, $00, 1 | BEHIND_BG
+	dsprite  3,  0,  12,  0, $00, 1 | BEHIND_BG
+	dsprite  4,  0,  13,  0, $00, 1 | BEHIND_BG
+	dsprite  3,  0,  14,  0, $00, 1 | BEHIND_BG
+	dsprite  2,  0,  15,  0, $00, 1 | BEHIND_BG
+	dsprite  1,  0,  16,  0, $00, 1 | BEHIND_BG
+	dsprite  0,  0, -15,  0, $00, 1 | BEHIND_BG
+	dsprite  1,  0, -14,  0, $00, 1 | BEHIND_BG
+	dsprite  2,  0, -13,  0, $00, 1 | BEHIND_BG
+	dsprite  3,  0, -12,  0, $00, 1 | BEHIND_BG
 
-.OAMData_7f:
+.OAMData_Celebi:
 	db 4
-	dsprite -1,  0, -1,  0, $00, $02
-	dsprite -1,  0,  0,  0, $01, $02
-	dsprite  0,  0, -1,  0, $02, $02
-	dsprite  0,  0,  0,  0, $03, $02
+	dsprite -1,  0, -1,  0, $00, PAL_OW_GREEN
+	dsprite -1,  0,  0,  0, $01, PAL_OW_GREEN
+	dsprite  0,  0, -1,  0, $02, PAL_OW_GREEN
+	dsprite  0,  0,  0,  0, $03, PAL_OW_GREEN
 
-.OAMData_81:
+.OAMData_GameFreakLogo1_3:
 	db 9
-	dsprite -2,  0, -2,  4, $00, $01
-	dsprite -2,  0, -1,  4, $01, $01
-	dsprite -2,  0,  0,  4, $02, $01
-	dsprite -1,  0, -2,  4, $10, $01
-	dsprite -1,  0, -1,  4, $11, $01
-	dsprite -1,  0,  0,  4, $12, $01
-	dsprite  0,  0, -2,  4, $20, $01
-	dsprite  0,  0, -1,  4, $21, $01
-	dsprite  0,  0,  0,  4, $22, $01
+	dsprite -2,  0, -2,  4, $00, 1
+	dsprite -2,  0, -1,  4, $01, 1
+	dsprite -2,  0,  0,  4, $02, 1
+	dsprite -1,  0, -2,  4, $10, 1
+	dsprite -1,  0, -1,  4, $11, 1
+	dsprite -1,  0,  0,  4, $12, 1
+	dsprite  0,  0, -2,  4, $20, 1
+	dsprite  0,  0, -1,  4, $21, 1
+	dsprite  0,  0,  0,  4, $22, 1
 
-.OAMData_84:
+.OAMData_GameFreakLogo4_11:
 	db 24
-	dsprite -5,  0, -2,  4, $00, $01
-	dsprite -5,  0, -1,  4, $01, $01
-	dsprite -5,  0,  0,  4, $02, $01
-	dsprite -5,  0,  1,  4, $03, $01
-	dsprite -4,  0, -2,  4, $10, $01
-	dsprite -4,  0, -1,  4, $11, $01
-	dsprite -4,  0,  0,  4, $12, $01
-	dsprite -4,  0,  1,  4, $13, $01
-	dsprite -3,  0, -2,  4, $20, $01
-	dsprite -3,  0, -1,  4, $21, $01
-	dsprite -3,  0,  0,  4, $22, $01
-	dsprite -3,  0,  1,  4, $23, $01
-	dsprite -2,  0, -2,  4, $30, $01
-	dsprite -2,  0, -1,  4, $31, $01
-	dsprite -2,  0,  0,  4, $32, $01
-	dsprite -2,  0,  1,  4, $33, $01
-	dsprite -1,  0, -2,  4, $40, $01
-	dsprite -1,  0, -1,  4, $41, $01
-	dsprite -1,  0,  0,  4, $42, $01
-	dsprite -1,  0,  1,  4, $43, $01
-	dsprite  0,  0, -2,  4, $50, $01
-	dsprite  0,  0, -1,  4, $51, $01
-	dsprite  0,  0,  0,  4, $52, $01
-	dsprite  0,  0,  1,  4, $53, $01
+	dsprite -5,  0, -2,  4, $00, 1
+	dsprite -5,  0, -1,  4, $01, 1
+	dsprite -5,  0,  0,  4, $02, 1
+	dsprite -5,  0,  1,  4, $03, 1
+	dsprite -4,  0, -2,  4, $10, 1
+	dsprite -4,  0, -1,  4, $11, 1
+	dsprite -4,  0,  0,  4, $12, 1
+	dsprite -4,  0,  1,  4, $13, 1
+	dsprite -3,  0, -2,  4, $20, 1
+	dsprite -3,  0, -1,  4, $21, 1
+	dsprite -3,  0,  0,  4, $22, 1
+	dsprite -3,  0,  1,  4, $23, 1
+	dsprite -2,  0, -2,  4, $30, 1
+	dsprite -2,  0, -1,  4, $31, 1
+	dsprite -2,  0,  0,  4, $32, 1
+	dsprite -2,  0,  1,  4, $33, 1
+	dsprite -1,  0, -2,  4, $40, 1
+	dsprite -1,  0, -1,  4, $41, 1
+	dsprite -1,  0,  0,  4, $42, 1
+	dsprite -1,  0,  1,  4, $43, 1
+	dsprite  0,  0, -2,  4, $50, 1
+	dsprite  0,  0, -1,  4, $51, 1
+	dsprite  0,  0,  0,  4, $52, 1
+	dsprite  0,  0,  1,  4, $53, 1
 ; 8e706
--- a/data/sprite_anim_seqs.asm
+++ b/data/sprite_anim_seqs.asm
@@ -3,8 +3,8 @@
 	; frameset sequence, tile
 ; SPRITE_ANIM_INDEX_PARTY_MON
 	db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_SEQ_PARTY_MON, $00
-; SPRITE_ANIM_INDEX_01
-	db SPRITE_ANIM_FRAMESET_07, SPRITE_ANIM_SEQ_04, $00
+; SPRITE_ANIM_INDEX_GS_TITLE_TRAIL
+	db SPRITE_ANIM_FRAMESET_GS_TITLE_TRAIL, SPRITE_ANIM_SEQ_GS_TITLE_TRAIL, $00
 ; SPRITE_ANIM_INDEX_NAMING_SCREEN_CURSOR
 	db SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR, SPRITE_ANIM_SEQ_NAMING_SCREEN_CURSOR, $05
 ; SPRITE_ANIM_INDEX_GAMEFREAK_LOGO
@@ -23,12 +23,12 @@
 	db SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR, SPRITE_ANIM_SEQ_MAIL_CURSOR, $05
 ; SPRITE_ANIM_INDEX_RED_WALK
 	db SPRITE_ANIM_FRAMESET_RED_WALK, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_0B
-	db SPRITE_ANIM_FRAMESET_STILL_CURSOR, SPRITE_ANIM_SEQ_0D, $08
+; SPRITE_ANIM_INDEX_UNUSED_CURSOR
+	db SPRITE_ANIM_FRAMESET_STILL_CURSOR, SPRITE_ANIM_SEQ_FOR_UNUSED_CURSOR, $08
 ; SPRITE_ANIM_INDEX_DUMMY_GAME
-	db SPRITE_ANIM_FRAMESET_STILL_CURSOR, SPRITE_ANIM_SEQ_0E, $08
-; SPRITE_ANIM_INDEX_0D
-	db SPRITE_ANIM_FRAMESET_STILL_CURSOR, SPRITE_ANIM_SEQ_0F, $08
+	db SPRITE_ANIM_FRAMESET_STILL_CURSOR, SPRITE_ANIM_SEQ_DUMMY_GAME_CURSOR, $08
+; SPRITE_ANIM_INDEX_POKEGEAR_ARROW
+	db SPRITE_ANIM_FRAMESET_STILL_CURSOR, SPRITE_ANIM_SEQ_POKEGEAR_ARROW, $08
 ; SPRITE_ANIM_INDEX_TRADE_POKE_BALL
 	db SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL, SPRITE_ANIM_SEQ_TRADE_POKE_BALL, $00
 ; SPRITE_ANIM_INDEX_TRADE_POOF
@@ -65,18 +65,18 @@
 	db SPRITE_ANIM_FRAMESET_BLUE_WALK, SPRITE_ANIM_SEQ_NULL, $00
 ; SPRITE_ANIM_INDEX_MAGNET_TRAIN_BLUE
 	db SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_BLUE, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_20
-	db SPRITE_ANIM_FRAMESET_2F, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_21
-	db SPRITE_ANIM_FRAMESET_30, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_22
-	db SPRITE_ANIM_FRAMESET_31, SPRITE_ANIM_SEQ_NULL, $00
-; SPRITE_ANIM_INDEX_23
-	db SPRITE_ANIM_FRAMESET_32, SPRITE_ANIM_SEQ_1B, $00
-; SPRITE_ANIM_INDEX_24
-	db SPRITE_ANIM_FRAMESET_33, SPRITE_ANIM_SEQ_1C, $00
-; SPRITE_ANIM_INDEX_25
-	db SPRITE_ANIM_FRAMESET_34, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_MOBILE_TRADE_SENT_BALL
+	db SPRITE_ANIM_FRAMESET_MOBILE_TRADE_SENT_BALL, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_MOBILE_TRADE_OT_BALL
+	db SPRITE_ANIM_FRAMESET_MOBILE_TRADE_OT_BALL, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_MOBILE_22
+	db SPRITE_ANIM_FRAMESET_FOR_MOBILE_22, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_MOBILE_23
+	db SPRITE_ANIM_FRAMESET_FOR_MOBILE_23, SPRITE_ANIM_SEQ_FOR_MOBILE_23, $00
+; SPRITE_ANIM_INDEX_MOBILE_24
+	db SPRITE_ANIM_FRAMESET_FOR_MOBILE_24, SPRITE_ANIM_SEQ_FOR_MOBILE_24, $00
+; SPRITE_ANIM_INDEX_MOBILE_25
+	db SPRITE_ANIM_FRAMESET_FOR_MOBILE_25, SPRITE_ANIM_SEQ_NULL, $00
 ; SPRITE_ANIM_INDEX_INTRO_SUICUNE
 	db SPRITE_ANIM_FRAMESET_INTRO_SUICUNE, SPRITE_ANIM_SEQ_INTRO_SUICUNE, $00
 ; SPRITE_ANIM_INDEX_INTRO_PICHU
--- /dev/null
+++ b/docs/event_commands.md
@@ -1,0 +1,345 @@
+# Event Commands
+
+## `$00`: `scall` *script*
+
+## `$01`: `farscall` *script*
+
+## `$02`: `ptcall` *script*
+
+## `$03`: `jump` *script*
+
+## `$04`: `farjump` *script*
+
+## `$05`: `ptjump` *script*
+
+## `$06`: `if_equal` *byte*, *script*
+
+## `$07`: `if_not_equal` *byte*, *script*
+
+## `$08`: `iffalse` *script*
+
+## `$09`: `iftrue` *script*
+
+## `$0A`: `if_greater_than` *byte*, *script*
+
+## `$0B`: `if_less_than` *byte*, *script*
+
+## `$0C`: `jumpstd` *std_script*
+
+## `$0D`: `callstd` *std_script*
+
+## `$0E`: `callasm` *asm*
+
+## `$0F`: `special` *special_pointer*
+
+## `$10`: `ptcallasm` *asm*
+
+## `$11`: `checkmaptriggers` *map*
+
+## `$12`: `domaptrigger` *map*, *trigger_id*
+
+## `$13`: `checktriggers`
+
+## `$14`: `dotrigger` *trigger_id*
+
+## `$15`: `writebyte` *value*
+
+## `$16`: `addvar` *value*
+
+## `$17`: `random` *value*
+
+## `$18`: `checkver`
+
+## `$19`: `copybytetovar` *address*
+
+## `$1A`: `copyvartobyte` *address*
+
+## `$1B`: `loadvar` *address*, *value*
+
+## `$1C`: `checkcode` *variable*
+
+## `$1D`: `writevarcode` *variable*
+
+## `$1E`: `writecode` *variable*, *value*
+
+## `$1F`: `giveitem` *item_id*[, *quantity*=1]
+
+## `$20`: `takeitem` *item_id*[, *quantity*=1]
+
+## `$21`: `checkitem` *item_id*
+
+## `$22`: `givemoney` *account*, *value*
+
+## `$23`: `takemoney` *account*, *value*
+
+## `$24`: `checkmoney` *account*, *value*
+
+## `$25`: `givecoins` *value*
+
+## `$26`: `takecoins` *value*
+
+## `$27`: `checkcoins` *value*
+
+## `$28`: `addcellnum` *contact_id*
+
+## `$29`: `delcellnum` *contact_id*
+
+## `$2A`: `checkcellnum` *contact_id*
+
+## `$2B`: `checktime` *time*
+
+- **`checkmorn`:** `checktime MORN`
+- **`checkday`:** `checktime DAY`
+- **`checknite`:** `checktime NITE`
+
+## `$2C`: `checkpoke` *mon_id*
+
+## `$2D`: `givepoke` *mon_id*, *level*[, *item*=0[, *trainer*=0, *ot_name*, *nickname*]]
+
+## `$2E`: `giveegg` *mon_id*, *level*
+
+## `$2F`: `givepokeitem` *pointer*
+
+## `$30`: `checkpokeitem` *pointer*
+
+## `$31`: `checkevent` *event_flag*
+
+## `$32`: `clearevent` *event_flag*
+
+## `$33`: `setevent` *event_flag*
+
+## `$34`: `checkflag` *engine_flag*
+
+## `$35`: `clearflag` *engine_flag*
+
+## `$36`: `setflag` *engine_flag*
+
+## `$37`: `wildon`
+
+## `$38`: `wildoff`
+
+## `$39`: `xycompare` *pointer*
+
+## `$3A`: `warpmod` *warp_id*, *map*
+
+## `$3B`: `blackoutmod` *map*
+
+## `$3C`: `warp` *map*, *x*, *y*
+
+## `$3D`: `readmoney` *account*, *memory*
+
+## `$3E`: `readcoins` *memory*
+
+## `$3F`: `RAM2MEM` *memory*
+
+## `$40`: `pokenamemem` *mon_id*, *memory*
+
+## `$41`: `itemtotext` *item_id*, *memory*
+
+## `$42`: `mapnametotext` *memory*
+
+## `$43`: `trainertotext` *trainer_id*, *trainer_group*, *memory*
+
+## `$44`: `stringtotext` *text_pointer*, *memory*
+
+## `$45`: `itemnotify`
+
+## `$46`: `pocketisfull`
+
+## `$47`: `opentext`
+
+## `$48`: `refreshscreen` *dummy*
+
+## `$49`: `closetext`
+
+## `$4A`: `loadbytec2cf` *byte*
+
+## `$4B`: `farwritetext` *text_pointer*
+
+## `$4C`: `writetext` *text_pointer*
+
+## `$4D`: `repeattext` *byte1*, *byte2*
+
+## `$4E`: `yesorno`
+
+## `$4F`: `loadmenudata` *data_pointer*
+
+## `$50`: `closewindow`
+
+## `$51`: `jumptextfaceplayer` *text_pointer*
+
+## `$52`: `farjumptext` *text_pointer*
+
+## `$53`: `jumptext` *text_pointer*
+
+## `$54`: `waitbutton`
+
+## `$55`: `buttonsound`
+
+## `$56`: `pokepic` *mon_id*
+
+## `$57`: `closepokepic`
+
+## `$58`: `_2dmenu`
+
+## `$59`: `verticalmenu`
+
+## `$5A`: `loadpikachudata`
+
+## `$5B`: `randomwildmon`
+
+## `$5C`: `loadmemtrainer`
+
+## `$5D`: `loadwildmon` *mon_id*, *level*
+
+## `$5E`: `loadtrainer` *trainer_group*, *trainer_id*
+
+## `$5F`: `startbattle`
+
+## `$60`: `reloadmapafterbattle`
+
+## `$61`: `catchtutorial` *byte*
+
+## `$62`: `trainertext` *which_text*
+
+## `$63`: `trainerflagaction` *action*
+
+## `$64`: `winlosstext` *win_text_pointer*, *loss_text_pointer*
+
+## `$65`: `scripttalkafter`
+
+## `$66`: `end_if_just_battled`
+
+## `$67`: `check_just_battled`
+
+## `$68`: `setlasttalked` *person*
+
+## `$69`: `applymovement` *person*, *data_pointer*
+
+## `$6A`: `applymovement2` *data_pointer*
+
+## `$6B`: `faceplayer`
+
+## `$6C`: `faceperson` *person1*, *person2*
+
+## `$6D`: `variablesprite` *variable_sprite_id*, *sprite_id*
+
+## `$6E`: `disappear` *person*
+
+## `$6F`: `appear` *person*
+
+## `$70`: `follow` *person2*, *person1*
+
+## `$71`: `stopfollow`
+
+## `$72`: `moveperson` *person*, *x*, *y*
+
+## `$73`: `writepersonxy` *person*
+
+## `$74`: `loademote` *emote_id*
+
+## `$75`: `showemote` *emote_id*, *person*, *length*
+
+## `$76`: `spriteface` *person*, *facing*
+
+## `$77`: `follownotexact` *person2*, *person1*
+
+## `$78`: `earthquake` *param*
+
+## `$79`: `changemap` *bank*, *blockdata_pointer*
+
+## `$7A`: `changeblock` *x*, *y*, *block*
+
+## `$7B`: `reloadmap`
+
+## `$7C`: `reloadmappart`
+
+## `$7D`: `writecmdqueue` *queue_pointer*
+
+## `$7E`: `delcmdqueue` *byte*
+
+## `$7F`: `playmusic` *music_id*
+
+## `$80`: `encountermusic`
+
+## `$81`: `musicfadeout` *music_id*, *length*
+
+## `$82`: `playmapmusic`
+
+## `$83`: `dontrestartmapmusic`
+
+## `$84`: `cry` *mon_id*
+
+## `$85`: `playsound` *sfx_id*
+
+## `$86`: `waitsfx`
+
+## `$87`: `warpsound`
+
+## `$88`: `specialsound`
+
+## `$89`: `passtoengine` *data_pointer*
+
+## `$8A`: `newloadmap` *which_method*
+
+## `$8B`: `pause` *length*
+
+## `$8C`: `deactivatefacing` *length*
+
+## `$8D`: `priorityjump` *script*
+
+## `$8E`: `warpcheck`
+
+## `$8F`: `ptpriorityjump` *script*
+
+## `$90`: `return`
+
+## `$91`: `end`
+
+## `$92`: `reloadandreturn` *which_method*
+
+## `$93`: `end_all`
+
+## `$94`: `pokemart` *dialog_id*, *mart_id*
+
+## `$95`: `elevator` *floor_list*
+
+## `$96`: `trade` *trade_id*
+
+## `$97`: `askforphonenumber` *contact_id*
+
+## `$98`: `phonecall` *call_id*
+
+## `$99`: `hangup`
+
+## `$9A`: `describedecoration` *byte*
+
+## `$9B`: `fruittree` *tree_id*
+
+## `$9C`: `specialphonecall` *call_id*
+
+## `$9D`: `checkphonecall`
+
+## `$9E`: `verbosegiveitem` *item_id*[, *quantity*=1]
+
+## `$9F`: `verbosegiveitem2` *item_id*, *variable*
+
+## `$A0`: `swarm` *swarm_id*, *map*
+
+## `$A1`: `halloffame`
+
+## `$A2`: `credits`
+
+## `$A3`: `warpfacing` *facing*, *map*, *x*, *y*
+
+## `$A4`: `battletowertext` *memory*
+
+## `$A5`: `landmarktotext` *landmark_id*, *memory*
+
+## `$A6`: `trainerclassname` *trainer_group*, *memory*
+
+## `$A7`: `name` *type*, *id*, *memory*
+
+## `$A8`: `wait` *duration*
+
+## `$A9`: `check_save`
--- a/docs/map_scripts.md
+++ b/docs/map_scripts.md
@@ -3,7 +3,7 @@
 
 ## `const_value set 2`
 
-### `const` *`MAPNAME_PERSONNAME`*
+- **`const` *`MAPNAME_PERSONNAME`***
 
 
 ## `MapName_MapScriptHeader:`
@@ -11,26 +11,47 @@
 
 ## `.MapTriggers: db` *N*
 
-### `maptrigger` *script*
+- **`maptrigger` *script***
 
 
 ## `.MapCallbacks: db` *N*
 
-### `dbw` *type*, *script*
+- **`dbw` *type*, *script***
 
+Callback types:
 
-## Scripts
+- **`MAPCALLBACK_NEWMAP`**
 
+- **`MAPCALLBACK_TILES`**
 
+- **`MAPCALLBACK_OBJECTS`**
+
+- **`MAPCALLBACK_SPRITES`**
+
+- **`MAPCALLBACK_CMDQUEUE`**
+
+  **`dbw CMDQUEUE_STONETABLE,` *table_pointer***
+  
+  **`stonetable` *warp_id*, *person*, *script***
+  
+  **`db -1 ; end`**
+
+
+## Event scripts
+
+[Event commands](event_commands.md)
+
+
 ## Text
 
-- **`text`**
-- **`line`**
-- **`cont`**
-- **`para`**
-- **`done`**
+[Text commands](text_commands.md)
 
 
+## Movement data
+
+[Movement commands](movement_commands.md)
+
+
 ## `MapName_MapEventHeader:`
 
 	; filler
@@ -39,19 +60,19 @@
 
 ## `.Warps: db` *N*
 
-### `warp_def` *y*, *x*, *warp_id*, *map*
+- **`warp_def` *y*, *x*, *warp_id*, *map***
 
 
 ## `.XYTriggers: db` *N*
 
-### `xy_trigger` *id*, *y*, *x*, `$0`, *script*, `$0`, `$0`
+- **`xy_trigger` *id*, *y*, *x*, `$0`, *script*, `$0`, `$0`**
 
 
 ## `.Signposts: db` *N*
 
-### `signpost` *y*, *x*, *type*, *script*
+- **`signpost` *y*, *x*, *type*, *script***
 
-#### Signpost types:
+Signpost types:
 
 - **`SIGNPOST_READ`**
 
@@ -69,9 +90,9 @@
 
 ## `.PersonEvents: db` *N*
 
-### `person_event` *sprite*, *y*, *x*, *movement*, *ry*, *rx*, *hour*, *daytime*, *palette*, *type*, *range*, *script*, *event_flag*
+- **`person_event` *sprite*, *y*, *x*, *movement*, *ry*, *rx*, *hour*, *daytime*, *palette*, *type*, *range*, *script*, *event_flag***
 
-#### Movement types:
+Movement types:
 
 - **`SPRITEMOVEDATA_ITEM_TREE`**
 
@@ -105,7 +126,7 @@
 
 - **`SPRITEMOVEDATA_LAPRAS`**
 
-#### Person types:
+Person types:
 
 - **`PERSONTYPE_SCRIPT`**
 
--- /dev/null
+++ b/docs/move_anim_commands.md
@@ -1,0 +1,99 @@
+# Move Animation Commands
+
+## `$00`−`$EF`: `anim_wait` *length*
+
+## `$D0`: `anim_obj` *object*, *x*, *y*, *param*
+
+## `$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*
+
+## `$D6`: `anim_incobj` *id*
+
+## `$D7`: `anim_setobj` *id*, *object*
+
+## `$D8`: `anim_incbgeffect` *effect*
+
+## `$D9`: `anim_enemyfeetobj`
+
+## `$DA`: `anim_playerheadobj`
+
+## `$DB`: `anim_checkpokeball`
+
+## `$DC`: `anim_transform`
+
+## `$DD`: `anim_raisesub`
+
+## `$DE`: `anim_dropsub`
+
+## `$DF`: `anim_resetobp0`
+
+## `$E0`: `anim_sound` *duration*, *tracks*, *id*
+
+## `$E1`: `anim_cry` *pitch*
+
+## `$E2`: `anim_minimizeopp`
+
+## `$E3`: `anim_oamon`
+
+## `$E4`: `anim_oamoff`
+
+## `$E5`: `anim_clearobjs`
+
+## `$E6`: `anim_beatup`
+
+## `$E7`: `anim_0xe7`
+
+## `$E8`: `anim_updateactorpic`
+
+## `$E9`: `anim_minimize`
+
+## `$EA`: `anim_0xea`
+
+## `$EB`: `anim_0xeb`
+
+## `$EC`: `anim_0xec`
+
+## `$ED`: `anim_0xed`
+
+## `$EE`: `anim_if_param_and` *value*, *address*
+
+## `$EF`: `anim_jumpuntil` *address*
+
+## `$F0`: `anim_bgeffect` *effect*, *unknown1*, *unknown2*, *unknown3*
+
+## `$F1`: `anim_bgp` *colors*
+
+## `$F2`: `anim_obp0` *colors*
+
+## `$F3`: `anim_obp1` *colors*
+
+## `$F4`: `anim_clearsprites`
+
+## `$F5`: `anim_0xf5`
+
+## `$F6`: `anim_0xf6`
+
+## `$F7`: `anim_0xf7`
+
+## `$F8`: `anim_if_param_equal` *value*, *address*
+
+## `$F9`: `anim_setvar` *value*
+
+## `$FA`: `anim_incvar`
+
+## `$FB`: `anim_if_var_equal` *value*, *address*
+
+## `$FC`: `anim_jump` *address*
+
+## `$FD`: `anim_loop` *count*, *address*
+
+## `$FE`: `anim_call` *address*
+
+## `$FF`: `anim_ret`
--- /dev/null
+++ b/docs/movement_commands.md
@@ -1,0 +1,81 @@
+# Movement Commands
+
+## `$00`−`$03`: `turn_head` *direction*
+
+## `$04`−`$07`: `turn_step` *direction*
+
+## `$08`−`$0B`: `slow_step` *direction*
+
+## `$0C`−`$0F`: `step` *direction*
+
+## `$10`−`$13`: `big_step` *direction*
+
+## `$14`−`$17`: `slow_slide_step` *direction*
+
+## `$18`−`$1B`: `slide_step` *direction*
+
+## `$1C`−`$1F`: `fast_slide_step` *direction*
+
+## `$20`−`$23`: `turn_away` *direction*
+
+## `$24`−`$27`: `turn_in` *direction*
+
+## `$28`−`$2B`: `turn_waterfall` *direction*
+
+## `$2C`−`$2F`: `slow_jump_step` *direction*
+
+## `$30`−`$33`: `jump_step` *direction*
+
+## `$34`−`$37`: `fast_jump_step` *direction*
+
+## `$38`: `remove_sliding`
+
+## `$39`: `set_sliding`
+
+## `$3A`: `remove_fixed_facing`
+
+## `$3B`: `fix_facing`
+
+## `$3C`: `show_person`
+
+## `$3D`: `hide_person`
+
+## `$3E`−`$46`: `step_sleep` *length*
+
+## `$47`: `step_end`
+
+## `$48`: `step_48` *param*
+
+## `$49`: `remove_person`
+
+## `$4A`: `step_loop`
+
+## `$4B`: `step_4b`
+
+## `$4C`: `teleport_from`
+
+## `$4D`: `teleport_to`
+
+## `$4E`: `skyfall`
+
+## `$4F`: `step_dig` *length*
+
+## `$50`: `step_bump`
+
+## `$51`: `fish_got_bite`
+
+## `$52`: `fish_cast_rod`
+
+## `$53`: `hide_emote`
+
+## `$54`: `show_emote`
+
+## `$55`: `step_shake` *displacement*
+
+## `$56`: `tree_shake`
+
+## `$57`: `rock_smash` *length*
+
+## `$58`: `return_dig` *length*
+
+## `$59`: `skyfall_top`
--- a/docs/scripting_commands.md
+++ /dev/null
@@ -1,345 +1,0 @@
-# Scripting Commands
-
-## `$00`: `scall` *script*
-
-## `$01`: `farscall` *script*
-
-## `$02`: `ptcall` *script*
-
-## `$03`: `jump` *script*
-
-## `$04`: `farjump` *script*
-
-## `$05`: `ptjump` *script*
-
-## `$06`: `if_equal` *byte*, *script*
-
-## `$07`: `if_not_equal` *byte*, *script*
-
-## `$08`: `iffalse` *script*
-
-## `$09`: `iftrue` *script*
-
-## `$0A`: `if_greater_than` *byte*, *script*
-
-## `$0B`: `if_less_than` *byte*, *script*
-
-## `$0C`: `jumpstd` *std_script*
-
-## `$0D`: `callstd` *std_script*
-
-## `$0E`: `callasm` *asm*
-
-## `$0F`: `special` *special_pointer*
-
-## `$10`: `ptcallasm` *asm*
-
-## `$11`: `checkmaptriggers` *map*
-
-## `$12`: `domaptrigger` *map*, *trigger_id*
-
-## `$13`: `checktriggers`
-
-## `$14`: `dotrigger` *trigger_id*
-
-## `$15`: `writebyte` *value*
-
-## `$16`: `addvar` *value*
-
-## `$17`: `random` *value*
-
-## `$18`: `checkver`
-
-## `$19`: `copybytetovar` *address*
-
-## `$1A`: `copyvartobyte` *address*
-
-## `$1B`: `loadvar` *address*, *value*
-
-## `$1C`: `checkcode` *variable*
-
-## `$1D`: `writevarcode` *variable*
-
-## `$1E`: `writecode` *variable*, *value*
-
-## `$1F`: `giveitem` *item_id*[, *quantity*=1]
-
-## `$20`: `takeitem` *item_id*[, *quantity*=1]
-
-## `$21`: `checkitem` *item_id*
-
-## `$22`: `givemoney` *account*, *value*
-
-## `$23`: `takemoney` *account*, *value*
-
-## `$24`: `checkmoney` *account*, *value*
-
-## `$25`: `givecoins` *value*
-
-## `$26`: `takecoins` *value*
-
-## `$27`: `checkcoins` *value*
-
-## `$28`: `addcellnum` *contact_id*
-
-## `$29`: `delcellnum` *contact_id*
-
-## `$2A`: `checkcellnum` *contact_id*
-
-## `$2B`: `checktime` *time*
-
-- **`checkmorn`:** `checktime MORN`
-- **`checkday`:** `checktime DAY`
-- **`checknite`:** `checktime NITE`
-
-## `$2C`: `checkpoke` *mon_id*
-
-## `$2D`: `givepoke` *mon_id*, *level*[, *item*=0[, *trainer*=0, *ot_name*, *nickname*]]
-
-## `$2E`: `giveegg` *mon_id*, *level*
-
-## `$2F`: `givepokeitem` *pointer*
-
-## `$30`: `checkpokeitem` *pointer*
-
-## `$31`: `checkevent` *event_flag*
-
-## `$32`: `clearevent` *event_flag*
-
-## `$33`: `setevent` *event_flag*
-
-## `$34`: `checkflag` *engine_flag*
-
-## `$35`: `clearflag` *engine_flag*
-
-## `$36`: `setflag` *engine_flag*
-
-## `$37`: `wildon`
-
-## `$38`: `wildoff`
-
-## `$39`: `xycompare` *pointer*
-
-## `$3A`: `warpmod` *warp_id*, *map*
-
-## `$3B`: `blackoutmod` *map*
-
-## `$3C`: `warp` *map*, *x*, *y*
-
-## `$3D`: `readmoney` *account*, *memory*
-
-## `$3E`: `readcoins` *memory*
-
-## `$3F`: `RAM2MEM` *memory*
-
-## `$40`: `pokenamemem` *mon_id*, *memory*
-
-## `$41`: `itemtotext` *item_id*, *memory*
-
-## `$42`: `mapnametotext` *memory*
-
-## `$43`: `trainertotext` *trainer_id*, *trainer_group*, *memory*
-
-## `$44`: `stringtotext` *text_pointer*, *memory*
-
-## `$45`: `itemnotify`
-
-## `$46`: `pocketisfull`
-
-## `$47`: `opentext`
-
-## `$48`: `refreshscreen` *dummy*
-
-## `$49`: `closetext`
-
-## `$4A`: `loadbytec2cf` *byte*
-
-## `$4B`: `farwritetext` *text_pointer*
-
-## `$4C`: `writetext` *text_pointer*
-
-## `$4D`: `repeattext` *byte1*, *byte2*
-
-## `$4E`: `yesorno`
-
-## `$4F`: `loadmenudata` *data_pointer*
-
-## `$50`: `closewindow`
-
-## `$51`: `jumptextfaceplayer` *text_pointer*
-
-## `$52`: `farjumptext` *text_pointer*
-
-## `$53`: `jumptext` *text_pointer*
-
-## `$54`: `waitbutton`
-
-## `$55`: `buttonsound`
-
-## `$56`: `pokepic` *mon_id*
-
-## `$57`: `closepokepic`
-
-## `$58`: `_2dmenu`
-
-## `$59`: `verticalmenu`
-
-## `$5A`: `loadpikachudata`
-
-## `$5B`: `randomwildmon`
-
-## `$5C`: `loadmemtrainer`
-
-## `$5D`: `loadwildmon` *mon_id*, *level*
-
-## `$5E`: `loadtrainer` *trainer_group*, *trainer_id*
-
-## `$5F`: `startbattle`
-
-## `$60`: `reloadmapafterbattle`
-
-## `$61`: `catchtutorial` *byte*
-
-## `$62`: `trainertext` *which_text*
-
-## `$63`: `trainerflagaction` *action*
-
-## `$64`: `winlosstext` *win_text_pointer*, *loss_text_pointer*
-
-## `$65`: `scripttalkafter`
-
-## `$66`: `end_if_just_battled`
-
-## `$67`: `check_just_battled`
-
-## `$68`: `setlasttalked` *person*
-
-## `$69`: `applymovement` *person*, *data_pointer*
-
-## `$6A`: `applymovement2` *data_pointer*
-
-## `$6B`: `faceplayer`
-
-## `$6C`: `faceperson` *person1*, *person2*
-
-## `$6D`: `variablesprite` *variable_sprite_id*, *sprite_id*
-
-## `$6E`: `disappear` *person*
-
-## `$6F`: `appear` *person*
-
-## `$70`: `follow` *person2*, *person1*
-
-## `$71`: `stopfollow`
-
-## `$72`: `moveperson` *person*, *x*, *y*
-
-## `$73`: `writepersonxy` *person*
-
-## `$74`: `loademote` *emote_id*
-
-## `$75`: `showemote` *emote_id*, *person*, *length*
-
-## `$76`: `spriteface` *person*, *facing*
-
-## `$77`: `follownotexact` *person2*, *person1*
-
-## `$78`: `earthquake` *param*
-
-## `$79`: `changemap` *bank*, *blockdata_pointer*
-
-## `$7A`: `changeblock` *x*, *y*, *block*
-
-## `$7B`: `reloadmap`
-
-## `$7C`: `reloadmappart`
-
-## `$7D`: `writecmdqueue` *queue_pointer*
-
-## `$7E`: `delcmdqueue` *byte*
-
-## `$7F`: `playmusic` *music_id*
-
-## `$80`: `encountermusic`
-
-## `$81`: `musicfadeout` *music_id*, *length*
-
-## `$82`: `playmapmusic`
-
-## `$83`: `dontrestartmapmusic`
-
-## `$84`: `cry` *mon_id*
-
-## `$85`: `playsound` *sfx_id*
-
-## `$86`: `waitsfx`
-
-## `$87`: `warpsound`
-
-## `$88`: `specialsound`
-
-## `$89`: `passtoengine` *data_pointer*
-
-## `$8A`: `newloadmap` *which_method*
-
-## `$8B`: `pause` *length*
-
-## `$8C`: `deactivatefacing` *length*
-
-## `$8D`: `priorityjump` *script*
-
-## `$8E`: `warpcheck`
-
-## `$8F`: `ptpriorityjump` *script*
-
-## `$90`: `return`
-
-## `$91`: `end`
-
-## `$92`: `reloadandreturn` *which_method*
-
-## `$93`: `end_all`
-
-## `$94`: `pokemart` *dialog_id*, *mart_id*
-
-## `$95`: `elevator` *floor_list*
-
-## `$96`: `trade` *trade_id*
-
-## `$97`: `askforphonenumber` *contact_id*
-
-## `$98`: `phonecall` *call_id*
-
-## `$99`: `hangup`
-
-## `$9A`: `describedecoration` *byte*
-
-## `$9B`: `fruittree` *tree_id*
-
-## `$9C`: `specialphonecall` *call_id*
-
-## `$9D`: `checkphonecall`
-
-## `$9E`: `verbosegiveitem` *item_id*[, *quantity*=1]
-
-## `$9F`: `verbosegiveitem2` *item_id*, *variable*
-
-## `$A0`: `swarm` *swarm_id*, *map*
-
-## `$A1`: `halloffame`
-
-## `$A2`: `credits`
-
-## `$A3`: `warpfacing` *facing*, *map*, *x*, *y*
-
-## `$A4`: `battletowertext` *memory*
-
-## `$A5`: `landmarktotext` *landmark_id*, *memory*
-
-## `$A6`: `trainerclassname` *trainer_group*, *memory*
-
-## `$A7`: `name` *type*, *id*, *memory*
-
-## `$A8`: `wait` *duration*
-
-## `$A9`: `check_save`
--- /dev/null
+++ b/docs/text_commands.md
@@ -1,0 +1,132 @@
+# Text Commands
+
+## `$00`: `text` *text*
+
+Start writing text until `"@"`.
+
+## `$4E`: `next` *text*
+
+Move a line down.
+
+## `$4F`: `line` *text*
+
+Start writing at the bottom line.
+
+## `$50`: `page` *text*
+
+Start a new Pokédex page.
+
+## `$51`: `para` *text*
+
+Start a new paragraph.
+
+## `$55`: `cont` *text*
+
+Scroll to the next line.
+
+## `$57`: `done`
+
+End a text box.
+
+## `$58`: `prompt`
+
+Prompt the player to end a text box (initiating some other event).
+
+## `$01`: `text_from_ram` *address*
+
+Write text from a RAM address.
+
+## `$02`: `text_bcd` *address*, *flags*
+
+Write [BCD](bcd) from an address, typically RAM.
+
+[bcd]: https://en.wikipedia.org/wiki/Binary-coded_decimal
+
+## `$03`: `text_move` *address*
+
+Move to a new tile.
+
+## `$04`: `text_box` *address*, *height*, *width*
+
+Draw a box.
+
+## `$05`: `text_low`
+
+Write text at (1, 16).
+
+## `$06`: `text_waitbutton`
+
+Wait for button press; show arrow.
+
+## `$07`: `text_scroll`
+
+Pushes text up two lines and sets the `bc` cursor to the border tile below the
+first character column of the text box.
+
+## `$08`: `start_asm`
+
+Start interpreting assembly code.
+
+## `$09`: `deciram` *address*, *bytes*, *digits*
+
+Read *bytes* bytes from *address* and print them as a *digits*-digit number.
+
+## `$0A`: `interpret_data`
+
+Exit.
+
+## `$0B`: `sound_dex_fanfare_50_79`
+
+Play `SFX_DEX_FANFARE_50_79`.
+
+## `$0C`: `limited_interpret_data` *number*
+
+Print *number* `"…"`s.
+
+## `$0D`: `link_wait_button`
+
+Wait for button press; show arrow.
+
+## `$0E`: `sound_dex_fanfare_20_49`
+
+Play `SFX_DEX_FANFARE_20_49`.
+
+## `$0F`: `sound_item`
+
+Play `SFX_ITEM`.
+
+## `$10`: `sound_caught_mon`
+
+Play `SFX_CAUGHT_MON`.
+
+## `$11`: `sound_dex_fanfare_80_109`
+
+Play `SFX_DEX_FANFARE_80_109`.
+
+## `$12`: `sound_fanfare`
+
+Play `SFX_FANFARE`.
+
+## `$13`: `sound_slot_machine_start`
+
+Play `SFX_SLOT_MACHINE_START`.
+
+## `$14`: `text_buffer` *id*
+
+Write text from one of the following addresses (listed in `StringBufferPointers`):
+
+0. `StringBuffer3`
+1. `StringBuffer4`
+2. `StringBuffer5`
+3. `StringBuffer2`
+4. `StringBuffer1`
+5. `EnemyMonNick`
+6. `BattleMonNick`
+
+## `$15`: `current_day`
+
+Print the weekday.
+
+## `$16`: `text_jump` *address*
+
+Write text from a different bank.
--- a/engine/intro_menu.asm
+++ b/engine/intro_menu.asm
@@ -1341,7 +1341,7 @@
 	ld h, 0
 	add hl, hl
 	add hl, hl
-	ld de, Data63ca
+	ld de, .Data63ca
 	add hl, de
 	; If bit 2 of [wTitleScreenTimer] is set, get the second dw; else, get the first dw
 	ld a, [wTitleScreenTimer]
@@ -1357,12 +1357,12 @@
 	ret z
 	ld e, a
 	ld d, [hl]
-	ld a, SPRITE_ANIM_INDEX_01
+	ld a, SPRITE_ANIM_INDEX_GS_TITLE_TRAIL
 	call _InitSpriteAnimStruct
 	ret
 ; 63ca
 
-Data63ca: ; 63ca
+.Data63ca: ; 63ca
 ; frame 0 y, x; frame 1 y, x
 	db 11 * 8 + 4, 10 * 8,  0 * 8,      0 * 8
 	db 11 * 8 + 4, 13 * 8, 11 * 8 + 4, 11 * 8
--- a/engine/mon_icons.asm
+++ b/engine/mon_icons.asm
@@ -144,11 +144,11 @@
 	pop bc
 	pop hl
 	jr c, .mail
-	ld a, SPRITE_ANIM_FRAMESET_03
+	ld a, SPRITE_ANIM_FRAMESET_PARTY_MON_WITH_ITEM
 	jr .okay
 
 .mail
-	ld a, SPRITE_ANIM_FRAMESET_02
+	ld a, SPRITE_ANIM_FRAMESET_PARTY_MON_WITH_MAIL
 .okay
 	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
 	add hl, bc
@@ -297,7 +297,7 @@
 	ld a, [wCurIconTile]
 GetIconGFX: ; 8e9de
 	call GetIcon_a
-	ld de, $80 ; 8 tiles
+	ld de, 8 tiles
 	add hl, de
 	ld de, HeldItemIcons
 	lb bc, BANK(HeldItemIcons), 2
@@ -468,9 +468,6 @@
 
 INCLUDE "data/mon_menu_icons.asm"
 
-
 INCLUDE "gfx/icon_pointers.asm"
 
-Icons:
 INCLUDE "gfx/icons.asm"
-
--- a/engine/movement.asm
+++ b/engine/movement.asm
@@ -1,4 +1,5 @@
 MovementPointers: ; 5075
+; entries correspond to macros/movement.asm enumeration
 	dw Movement_turn_head_down        ; 00
 	dw Movement_turn_head_up          ; 01
 	dw Movement_turn_head_left        ; 02
--- a/engine/player_object.asm
+++ b/engine/player_object.asm
@@ -193,7 +193,7 @@
 	and $f0
 	jr z, .skip_color_override
 	swap a
-	and $7 ; OAM_PALETTE
+	and PALETTE_MASK
 	ld [wTempObjectCopyPalette], a
 
 .skip_color_override
--- a/engine/pokegear.asm
+++ b/engine/pokegear.asm
@@ -141,7 +141,7 @@
 
 InitPokegearModeIndicatorArrow: ; 90d32 (24:4d32)
 	depixel 4, 2, 4, 0
-	ld a, SPRITE_ANIM_INDEX_0D
+	ld a, SPRITE_ANIM_INDEX_POKEGEAR_ARROW
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
@@ -685,7 +685,7 @@
 PokegearMap_InitCursor: ; 91098
 	push af
 	depixel 0, 0
-	ld a, SPRITE_ANIM_INDEX_0D
+	ld a, SPRITE_ANIM_INDEX_POKEGEAR_ARROW
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -64,6 +64,7 @@
 
 
 ScriptCommandTable:
+; entries correspond to macros/event.asm enumeration
 	dw Script_scall                      ; 00
 	dw Script_farscall                   ; 01
 	dw Script_ptcall                     ; 02
--- a/engine/sprite_anims.asm
+++ b/engine/sprite_anims.asm
@@ -18,8 +18,8 @@
 	dw .PartyMon
 	dw .PartyMonSwitch
 	dw .PartyMonSelected
-	dw .sprite_anim_seq_04
-	dw .namingscreencursor
+	dw .GSTitleTrail
+	dw .NamingScreenCursor
 	dw .GameFreakLogo
 	dw .GSIntroStar
 	dw .GSIntroSparkle
@@ -27,9 +27,9 @@
 	dw .SlotsChansey
 	dw .SlotsChanseyEgg
 	dw .MailCursor
-	dw .sprite_anim_seq_0D
-	dw .sprite_anim_seq_0E
-	dw .sprite_anim_seq_0F
+	dw .ForUnusedCursor
+	dw .DummyGameCursor
+	dw .PokegearArrow
 	dw .TradePokeBall
 	dw .TradeTubeBulge
 	dw .TrademonInTube
@@ -132,7 +132,7 @@
 	ld [hl], 8 * 3
 	ret
 
-.sprite_anim_seq_04 ; 8d302 (23:5302)
+.GSTitleTrail ; 8d302 (23:5302)
 	call .AnonymousJumptable
 	jp hl
 ; 8d306 (23:5306)
@@ -217,7 +217,7 @@
 	ld [hl], a
 	ret
 
-.namingscreencursor ; 8d36c (23:536c)
+.NamingScreenCursor ; 8d36c (23:536c)
 	callab NamingScreen_AnimateCursor
 	ret
 
@@ -404,15 +404,15 @@
 	ld [hl], a
 	ret
 
-.sprite_anim_seq_0D ; 8d46e (23:546e)
+.ForUnusedCursor ; 8d46e (23:546e)
 	callab ret_e00ed
 	ret
 
-.sprite_anim_seq_0F ; 8d475 (23:5475)
+.PokegearArrow ; 8d475 (23:5475)
 	callab AnimatePokegearModeIndicatorArrow
 	ret
 
-.sprite_anim_seq_0E ; 8d47c (23:547c)
+.DummyGameCursor ; 8d47c (23:547c)
 	callab DummyGame_InterpretJoypad_AnimateCursor
 	ret
 
--- a/engine/trade/animation.asm
+++ b/engine/trade/animation.asm
@@ -236,6 +236,7 @@
 ; 290af
 
 .JumpTable: ; 290af
+; entries correspond to macros/trade_anim.asm enumeration
 	dw TradeAnim_AdvanceScriptPointer ; 00
 	dw TradeAnim_ShowGivemonData      ; 01
 	dw TradeAnim_ShowGetmonData       ; 02
--- a/gbhw.asm
+++ b/gbhw.asm
@@ -29,25 +29,26 @@
 JOYPAD   EQU 4
 
 ; OAM attribute flags
-OAM_PALETTE   EQU %111
 OAM_TILE_BANK EQU 3
-OAM_OBP_NUM   EQU 4 ; Non CGB Mode Only
+OAM_OBP_NUM   EQU 4 ; non CGB Mode Only
 OAM_X_FLIP    EQU 5
 OAM_Y_FLIP    EQU 6
 OAM_PRIORITY  EQU 7 ; 0: OBJ above BG, 1: OBJ behind BG (colors 1-3)
 
-VRAM_BANK_1 EQU 1 << OAM_TILE_BANK
-X_FLIP      EQU 1 << OAM_X_FLIP
-Y_FLIP      EQU 1 << OAM_Y_FLIP
-BEHIND_BG   EQU 1 << OAM_PRIORITY
+PALETTE_MASK EQU %111
+VRAM_BANK_1  EQU 1 << OAM_TILE_BANK ; $08
+OBP_NUM      EQU 1 << OAM_OBP_NUM   ; $10
+X_FLIP       EQU 1 << OAM_X_FLIP    ; $20
+Y_FLIP       EQU 1 << OAM_Y_FLIP    ; $40
+BEHIND_BG    EQU 1 << OAM_PRIORITY  ; $80
 
 ; Hardware registers
 rJOYP       EQU $ff00 ; Joypad (R/W)
 rSB         EQU $ff01 ; Serial transfer data (R/W)
 rSC         EQU $ff02 ; Serial Transfer Control (R/W)
-rSC_ON    EQU 7
-rSC_CGB   EQU 1
-rSC_CLOCK EQU 0
+rSC_ON      EQU 7
+rSC_CGB     EQU 1
+rSC_CLOCK   EQU 0
 rDIV        EQU $ff04 ; Divider Register (R/W)
 rTIMA       EQU $ff05 ; Timer counter (R/W)
 rTMA        EQU $ff06 ; Timer Modulo (R/W)
--- a/gfx/icons.asm
+++ b/gfx/icons.asm
@@ -1,3 +1,4 @@
+Icons:
 NullIcon:
 PoliwagIcon:      INCBIN "gfx/icon/poliwag.2bpp" ; 0x8ec0d
 JigglypuffIcon:   INCBIN "gfx/icon/jigglypuff.2bpp" ; 0x8ec8d
--- a/home/text.asm
+++ b/home/text.asm
@@ -748,6 +748,7 @@
 ; 1410
 
 TextCommands:: ; 1410
+; entries correspond to macros/text.asm enumeration
 	dw Text_TX
 	dw Text_TX_RAM
 	dw Text_TX_BCD
--- a/macros/event.asm
+++ b/macros/event.asm
@@ -1,3 +1,4 @@
+; ScriptCommandTable indexes (see engine/scripting.asm)
 	enum_start
 
 	enum scall_command
--- a/macros/map.asm
+++ b/macros/map.asm
@@ -21,13 +21,10 @@
 ;\1: number: controlled by dotrigger/domaptrigger
 ;\2: y: top to bottom, starts at 0
 ;\3: x: left to right, starts at 0
-;\4: unknown1: $0
-;\5: script pointer
-;\6: unknown2: $0
-;\7: unknown3: $0
-	db \1, \2, \3, \4
-	dw \5
-	db \6, \7
+;\4: script pointer
+	db \1, \2, \3, $0
+	dw \4
+	db $0, $0
 endm
 
 signpost: macro
--- a/macros/move_anim.asm
+++ b/macros/move_anim.asm
@@ -5,6 +5,7 @@
 	db \1
 	endm
 
+; BattleAnimCommands indexes (see battle/anim_commands.asm)
 	enum_start $d0
 
 	enum anim_obj_command ; d0
--- a/macros/movement.asm
+++ b/macros/movement.asm
@@ -1,3 +1,4 @@
+; MovementPointers indexes (see engine/movement.asm)
 	enum_start
 
 ; Directional movements
--- a/macros/sound.asm
+++ b/macros/sound.asm
@@ -23,7 +23,9 @@
 	dw \1, \2, \3
 	endm
 
+; MusicCommands indexes (see audio/engine.asm)
 	enum_start $d8
+
 	enum notetype_cmd
 octave: macro
 	db notetype_cmd - (\1)
--- a/macros/text.asm
+++ b/macros/text.asm
@@ -1,15 +1,15 @@
 text   EQUS "db $00," ; Start writing text.
 next   EQUS "db $4e," ; Move a line down.
 line   EQUS "db $4f," ; Start writing at the bottom line.
-page   EQUS "db $50," ; Start a new Pokedex page.
+page   EQUS "db $50," ; Start a new Pokédex page.
 para   EQUS "db $51," ; Start a new paragraph.
 cont   EQUS "db $55," ; Scroll to the next line.
 done   EQUS "db $57"  ; End a text box.
 prompt EQUS "db $58"  ; Prompt the player to end a text box (initiating some other event).
 
-; TX_RAM EQU $01
-; TX_FAR EQU $16
-	enum_start 1
+; TextCommands indexes (see home/text.asm)
+	enum_start $01
+
 	enum TX_RAM
 text_from_ram: MACRO
 	db TX_RAM
--- a/macros/trade_anim.asm
+++ b/macros/trade_anim.asm
@@ -1,4 +1,6 @@
+; DoTradeAnimation.JumpTable indexes (see engine/trade/animation.asm)
 	enum_start
+
 	enum tradeanim_next_command
 tradeanim_next: macro
 	db tradeanim_next_command ; 00
--- a/maps/AzaleaTown.asm
+++ b/maps/AzaleaTown.asm
@@ -472,9 +472,9 @@
 
 .XYTriggers:
 	db 3
-	xy_trigger 1, $a, $5, $0, AzaleaTownRivalBattleTrigger1, $0, $0
-	xy_trigger 1, $b, $5, $0, AzaleaTownRivalBattleTrigger2, $0, $0
-	xy_trigger 2, $6, $9, $0, AzaleaTownCelebiTrigger, $0, $0
+	xy_trigger 1, $a, $5, AzaleaTownRivalBattleTrigger1
+	xy_trigger 1, $b, $5, AzaleaTownRivalBattleTrigger2
+	xy_trigger 2, $6, $9, AzaleaTownCelebiTrigger
 
 .Signposts:
 	db 9
--- a/maps/BurnedTower1F.asm
+++ b/maps/BurnedTower1F.asm
@@ -302,7 +302,7 @@
 
 .XYTriggers:
 	db 1
-	xy_trigger 1, $9, $b, $0, BurnedTowerRivalBattleScript, $0, $0
+	xy_trigger 1, $9, $b, BurnedTowerRivalBattleScript
 
 .Signposts:
 	db 2
--- a/maps/BurnedTowerB1F.asm
+++ b/maps/BurnedTowerB1F.asm
@@ -250,7 +250,7 @@
 
 .XYTriggers:
 	db 1
-	xy_trigger 0, $6, $a, $0, ReleaseTheBeasts, $0, $0
+	xy_trigger 0, $6, $a, ReleaseTheBeasts
 
 .Signposts:
 	db 0
--- a/maps/CherrygroveCity.asm
+++ b/maps/CherrygroveCity.asm
@@ -560,8 +560,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 1, $6, $21, $0, CherrygroveSilverTriggerNorth, $0, $0
-	xy_trigger 1, $7, $21, $0, CherrygroveSilverTriggerSouth, $0, $0
+	xy_trigger 1, $6, $21, CherrygroveSilverTriggerNorth
+	xy_trigger 1, $7, $21, CherrygroveSilverTriggerSouth
 
 .Signposts:
 	db 4
--- a/maps/CianwoodCity.asm
+++ b/maps/CianwoodCity.asm
@@ -396,7 +396,7 @@
 
 .XYTriggers:
 	db 1
-	xy_trigger 1, $10, $b, $0, CianwoodCitySuicuneAndEusine, $0, $0
+	xy_trigger 1, $10, $b, CianwoodCitySuicuneAndEusine
 
 .Signposts:
 	db 8
--- a/maps/DragonsDenB1F.asm
+++ b/maps/DragonsDenB1F.asm
@@ -417,7 +417,7 @@
 
 .XYTriggers:
 	db 1
-	xy_trigger 1, $1e, $13, $0, DragonsDenB1F_ClairTrigger, $0, $0
+	xy_trigger 1, $1e, $13, DragonsDenB1F_ClairTrigger
 
 .Signposts:
 	db 4
--- a/maps/EcruteakHouse.asm
+++ b/maps/EcruteakHouse.asm
@@ -291,8 +291,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 0, $7, $4, $0, EcruteakHouse_XYTrigger1, $0, $0
-	xy_trigger 0, $7, $5, $0, EcruteakHouse_XYTrigger2, $0, $0
+	xy_trigger 0, $7, $4, EcruteakHouse_XYTrigger1
+	xy_trigger 0, $7, $5, EcruteakHouse_XYTrigger2
 
 .Signposts:
 	db 0
--- a/maps/ElmsLab.asm
+++ b/maps/ElmsLab.asm
@@ -1381,14 +1381,14 @@
 
 .XYTriggers:
 	db 8
-	xy_trigger 1, $6, $4, $0, LabTryToLeaveScript, $0, $0
-	xy_trigger 1, $6, $5, $0, LabTryToLeaveScript, $0, $0
-	xy_trigger 3, $5, $4, $0, MeetCopScript, $0, $0
-	xy_trigger 3, $5, $5, $0, MeetCopScript2, $0, $0
-	xy_trigger 5, $8, $4, $0, AideScript_WalkPotions1, $0, $0
-	xy_trigger 5, $8, $5, $0, AideScript_WalkPotions2, $0, $0
-	xy_trigger 6, $8, $4, $0, AideScript_WalkBalls1, $0, $0
-	xy_trigger 6, $8, $5, $0, AideScript_WalkBalls2, $0, $0
+	xy_trigger 1, $6, $4, LabTryToLeaveScript
+	xy_trigger 1, $6, $5, LabTryToLeaveScript
+	xy_trigger 3, $5, $4, MeetCopScript
+	xy_trigger 3, $5, $5, MeetCopScript2
+	xy_trigger 5, $8, $4, AideScript_WalkPotions1
+	xy_trigger 5, $8, $5, AideScript_WalkPotions2
+	xy_trigger 6, $8, $4, AideScript_WalkBalls1
+	xy_trigger 6, $8, $5, AideScript_WalkBalls2
 
 .Signposts:
 	db 16
--- a/maps/FastShip1F.asm
+++ b/maps/FastShip1F.asm
@@ -306,8 +306,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 2, $6, $18, $0, WorriedGrandpaTriggerLeft, $0, $0
-	xy_trigger 2, $6, $19, $0, WorriedGrandpaTriggerRight, $0, $0
+	xy_trigger 2, $6, $18, WorriedGrandpaTriggerLeft
+	xy_trigger 2, $6, $19, WorriedGrandpaTriggerRight
 
 .Signposts:
 	db 0
--- a/maps/FastShipB1F.asm
+++ b/maps/FastShipB1F.asm
@@ -459,8 +459,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 0, $7, $1e, $0, UnknownScript_0x7673c, $0, $0
-	xy_trigger 0, $7, $1f, $0, UnknownScript_0x76751, $0, $0
+	xy_trigger 0, $7, $1e, UnknownScript_0x7673c
+	xy_trigger 0, $7, $1f, UnknownScript_0x76751
 
 .Signposts:
 	db 1
--- a/maps/GoldenrodGym.asm
+++ b/maps/GoldenrodGym.asm
@@ -390,7 +390,7 @@
 
 .XYTriggers:
 	db 1
-	xy_trigger 1, $5, $8, $0, WhitneyCriesScript, $0, $0
+	xy_trigger 1, $5, $8, WhitneyCriesScript
 
 .Signposts:
 	db 2
--- a/maps/GoldenrodMagnetTrainStation.asm
+++ b/maps/GoldenrodMagnetTrainStation.asm
@@ -177,7 +177,7 @@
 
 .XYTriggers:
 	db 1
-	xy_trigger 0, $6, $b, $0, Script_ArriveFromSaffron, $0, $0
+	xy_trigger 0, $6, $b, Script_ArriveFromSaffron
 
 .Signposts:
 	db 0
--- a/maps/GoldenrodPokecenter1F.asm
+++ b/maps/GoldenrodPokecenter1F.asm
@@ -817,8 +817,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 0, $7, $3, $0, GoldenrodPokecenter1F_GSBallTriggerLeft, $0, $0
-	xy_trigger 0, $7, $4, $0, GoldenrodPokecenter1F_GSBallTriggerRight, $0, $0
+	xy_trigger 0, $7, $3, GoldenrodPokecenter1F_GSBallTriggerLeft
+	xy_trigger 0, $7, $4, GoldenrodPokecenter1F_GSBallTriggerRight
 
 .Signposts:
 	db 0
--- a/maps/IndigoPlateauPokecenter1F.asm
+++ b/maps/IndigoPlateauPokecenter1F.asm
@@ -315,8 +315,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 0, $4, $10, $0, PlateauRivalBattle1, $0, $0
-	xy_trigger 0, $4, $11, $0, PlateauRivalBattle2, $0, $0
+	xy_trigger 0, $4, $10, PlateauRivalBattle1
+	xy_trigger 0, $4, $11, PlateauRivalBattle2
 
 .Signposts:
 	db 0
--- a/maps/KrissHouse1F.asm
+++ b/maps/KrissHouse1F.asm
@@ -397,8 +397,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 0, $4, $8, $0, UnknownScript_0x7a4d8, $0, $0
-	xy_trigger 0, $4, $9, $0, UnknownScript_0x7a4db, $0, $0
+	xy_trigger 0, $4, $8, UnknownScript_0x7a4d8
+	xy_trigger 0, $4, $9, UnknownScript_0x7a4db
 
 .Signposts:
 	db 4
--- a/maps/LancesRoom.asm
+++ b/maps/LancesRoom.asm
@@ -350,8 +350,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 1, $5, $4, $0, Script_ApproachLanceFromLeft, $0, $0
-	xy_trigger 1, $5, $5, $0, Script_ApproachLanceFromRight, $0, $0
+	xy_trigger 1, $5, $4, Script_ApproachLanceFromLeft
+	xy_trigger 1, $5, $5, Script_ApproachLanceFromRight
 
 .Signposts:
 	db 0
--- a/maps/MahoganyTown.asm
+++ b/maps/MahoganyTown.asm
@@ -258,8 +258,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 0, $8, $13, $0, UnknownScript_0x190013, $0, $0
-	xy_trigger 0, $9, $13, $0, UnknownScript_0x190013, $0, $0
+	xy_trigger 0, $8, $13, UnknownScript_0x190013
+	xy_trigger 0, $9, $13, UnknownScript_0x190013
 
 .Signposts:
 	db 4
--- a/maps/MountMoonSquare.asm
+++ b/maps/MountMoonSquare.asm
@@ -145,7 +145,7 @@
 
 .XYTriggers:
 	db 1
-	xy_trigger 0, $b, $7, $0, ClefairyDance, $0, $0
+	xy_trigger 0, $b, $7, ClefairyDance
 
 .Signposts:
 	db 2
--- a/maps/NewBarkTown.asm
+++ b/maps/NewBarkTown.asm
@@ -294,8 +294,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 0, $8, $1, $0, NewBarkTown_TeacherStopsYouTrigger1, $0, $0
-	xy_trigger 0, $9, $1, $0, NewBarkTown_TeacherStopsYouTrigger2, $0, $0
+	xy_trigger 0, $8, $1, NewBarkTown_TeacherStopsYouTrigger1
+	xy_trigger 0, $9, $1, NewBarkTown_TeacherStopsYouTrigger2
 
 .Signposts:
 	db 4
--- a/maps/OlivineCity.asm
+++ b/maps/OlivineCity.asm
@@ -307,8 +307,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 0, $c, $d, $0, UnknownScript_0x1a8833, $0, $0
-	xy_trigger 0, $d, $d, $0, UnknownScript_0x1a886b, $0, $0
+	xy_trigger 0, $c, $d, UnknownScript_0x1a8833
+	xy_trigger 0, $d, $d, UnknownScript_0x1a886b
 
 .Signposts:
 	db 7
--- a/maps/OlivinePort.asm
+++ b/maps/OlivinePort.asm
@@ -396,7 +396,7 @@
 
 .XYTriggers:
 	db 1
-	xy_trigger 0, $f, $7, $0, UnknownScript_0x7491f, $0, $0
+	xy_trigger 0, $f, $7, UnknownScript_0x7491f
 
 .Signposts:
 	db 1
--- a/maps/PowerPlant.asm
+++ b/maps/PowerPlant.asm
@@ -399,7 +399,7 @@
 
 .XYTriggers:
 	db 1
-	xy_trigger 1, $c, $5, $0, PowerPlantGuardPhoneScript, $0, $0
+	xy_trigger 1, $c, $5, PowerPlantGuardPhoneScript
 
 .Signposts:
 	db 2
--- a/maps/RadioTower5F.asm
+++ b/maps/RadioTower5F.asm
@@ -431,8 +431,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 0, $3, $0, $0, FakeDirectorScript, $0, $0
-	xy_trigger 1, $5, $10, $0, RadioTower5FRocketBossTrigger, $0, $0
+	xy_trigger 0, $3, $0, FakeDirectorScript
+	xy_trigger 1, $5, $10, RadioTower5FRocketBossTrigger
 
 .Signposts:
 	db 5
--- a/maps/Route16Gate.asm
+++ b/maps/Route16Gate.asm
@@ -73,8 +73,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 0, $4, $5, $0, UnknownScript_0x733ed, $0, $0
-	xy_trigger 0, $5, $5, $0, UnknownScript_0x733ed, $0, $0
+	xy_trigger 0, $4, $5, UnknownScript_0x733ed
+	xy_trigger 0, $5, $5, UnknownScript_0x733ed
 
 .Signposts:
 	db 0
--- a/maps/Route1718Gate.asm
+++ b/maps/Route1718Gate.asm
@@ -64,8 +64,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 0, $4, $5, $0, UnknownScript_0x73611, $0, $0
-	xy_trigger 0, $5, $5, $0, UnknownScript_0x73611, $0, $0
+	xy_trigger 0, $4, $5, UnknownScript_0x73611
+	xy_trigger 0, $5, $5, UnknownScript_0x73611
 
 .Signposts:
 	db 0
--- a/maps/Route25.asm
+++ b/maps/Route25.asm
@@ -440,8 +440,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 1, $6, $2a, $0, UnknownScript_0x19eea0, $0, $0
-	xy_trigger 1, $7, $2a, $0, UnknownScript_0x19eee0, $0, $0
+	xy_trigger 1, $6, $2a, UnknownScript_0x19eea0
+	xy_trigger 1, $7, $2a, UnknownScript_0x19eee0
 
 .Signposts:
 	db 2
--- a/maps/Route27.asm
+++ b/maps/Route27.asm
@@ -479,8 +479,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 0, $a, $12, $0, UnknownScript_0x1a0873, $0, $0
-	xy_trigger 0, $a, $13, $0, UnknownScript_0x1a0881, $0, $0
+	xy_trigger 0, $a, $12, UnknownScript_0x1a0873
+	xy_trigger 0, $a, $13, UnknownScript_0x1a0881
 
 .Signposts:
 	db 1
--- a/maps/Route29.asm
+++ b/maps/Route29.asm
@@ -425,8 +425,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 1, $8, $35, $0, Route29Tutorial1, $0, $0
-	xy_trigger 1, $9, $35, $0, Route29Tutorial2, $0, $0
+	xy_trigger 1, $8, $35, Route29Tutorial1
+	xy_trigger 1, $9, $35, Route29Tutorial2
 
 .Signposts:
 	db 2
--- a/maps/Route32.asm
+++ b/maps/Route32.asm
@@ -943,8 +943,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 0, $8, $12, $0, Route32CooltrainerMStopsYou, $0, $0
-	xy_trigger 1, $47, $7, $0, Route32WannaBuyASlowpokeTailScript, $0, $0
+	xy_trigger 0, $8, $12, Route32CooltrainerMStopsYou
+	xy_trigger 1, $47, $7, Route32WannaBuyASlowpokeTailScript
 
 .Signposts:
 	db 6
--- a/maps/Route34IlexForestGate.asm
+++ b/maps/Route34IlexForestGate.asm
@@ -148,7 +148,7 @@
 
 .XYTriggers:
 	db 1
-	xy_trigger 0, $7, $4, $0, UnknownScript_0x62d3d, $0, $0
+	xy_trigger 0, $7, $4, UnknownScript_0x62d3d
 
 .Signposts:
 	db 0
--- a/maps/Route36.asm
+++ b/maps/Route36.asm
@@ -672,8 +672,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 1, $7, $14, $0, Route36SuicuneScript, $0, $0
-	xy_trigger 1, $7, $16, $0, Route36SuicuneScript, $0, $0
+	xy_trigger 1, $7, $14, Route36SuicuneScript
+	xy_trigger 1, $7, $16, Route36SuicuneScript
 
 .Signposts:
 	db 4
--- a/maps/Route42.asm
+++ b/maps/Route42.asm
@@ -333,7 +333,7 @@
 
 .XYTriggers:
 	db 1
-	xy_trigger 1, $e, $18, $0, Route42SuicuneScript, $0, $0
+	xy_trigger 1, $e, $18, Route42SuicuneScript
 
 .Signposts:
 	db 5
--- a/maps/RuinsOfAlphOutside.asm
+++ b/maps/RuinsOfAlphOutside.asm
@@ -302,8 +302,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 1, $e, $b, $0, RuinsOfAlphOutsideScientistTrigger1, $0, $0
-	xy_trigger 1, $f, $a, $0, RuinsOfAlphOutsideScientistTrigger2, $0, $0
+	xy_trigger 1, $e, $b, RuinsOfAlphOutsideScientistTrigger1
+	xy_trigger 1, $f, $a, RuinsOfAlphOutsideScientistTrigger2
 
 .Signposts:
 	db 3
--- a/maps/SaffronTrainStation.asm
+++ b/maps/SaffronTrainStation.asm
@@ -228,7 +228,7 @@
 
 .XYTriggers:
 	db 1
-	xy_trigger 0, $6, $b, $0, Script_ArriveFromGoldenrod, $0, $0
+	xy_trigger 0, $6, $b, Script_ArriveFromGoldenrod
 
 .Signposts:
 	db 0
--- a/maps/SproutTower3F.asm
+++ b/maps/SproutTower3F.asm
@@ -339,7 +339,7 @@
 
 .XYTriggers:
 	db 1
-	xy_trigger 0, $9, $b, $0, UnknownScript_0x184947, $0, $0
+	xy_trigger 0, $9, $b, UnknownScript_0x184947
 
 .Signposts:
 	db 6
--- a/maps/TeamRocketBaseB1F.asm
+++ b/maps/TeamRocketBaseB1F.asm
@@ -742,38 +742,38 @@
 	db 30
 	; There are five security cameras in the base.
 	; Walking in front of one triggers two Rocket Grunts.
-	xy_trigger 0, $2, $18, $0, SecurityCamera1a, $0, $0
-	xy_trigger 0, $3, $18, $0, SecurityCamera1b, $0, $0
-	xy_trigger 0, $2, $6, $0, SecurityCamera2a, $0, $0
-	xy_trigger 0, $3, $6, $0, SecurityCamera2b, $0, $0
-	xy_trigger 0, $6, $18, $0, SecurityCamera3a, $0, $0
-	xy_trigger 0, $7, $18, $0, SecurityCamera3b, $0, $0
-	xy_trigger 0, $10, $16, $0, SecurityCamera4, $0, $0
-	xy_trigger 0, $10, $8, $0, SecurityCamera5, $0, $0
+	xy_trigger 0, $2, $18, SecurityCamera1a
+	xy_trigger 0, $3, $18, SecurityCamera1b
+	xy_trigger 0, $2, $6, SecurityCamera2a
+	xy_trigger 0, $3, $6, SecurityCamera2b
+	xy_trigger 0, $6, $18, SecurityCamera3a
+	xy_trigger 0, $7, $18, SecurityCamera3b
+	xy_trigger 0, $10, $16, SecurityCamera4
+	xy_trigger 0, $10, $8, SecurityCamera5
 	; There are spots on the floor that trigger a Pokémon battle.
 	; Each Pokémon (Voltorb, Koffing, Geodude) knows Selfdestruct.
-	xy_trigger 0, $7, $2, $0, ExplodingTrap1, $0, $0
-	xy_trigger 0, $7, $3, $0, ExplodingTrap2, $0, $0
-	xy_trigger 0, $7, $4, $0, ExplodingTrap3, $0, $0
-	xy_trigger 0, $8, $1, $0, ExplodingTrap4, $0, $0
-	xy_trigger 0, $8, $3, $0, ExplodingTrap5, $0, $0
-	xy_trigger 0, $8, $5, $0, ExplodingTrap6, $0, $0
-	xy_trigger 0, $9, $3, $0, ExplodingTrap7, $0, $0
-	xy_trigger 0, $9, $4, $0, ExplodingTrap8, $0, $0
-	xy_trigger 0, $a, $1, $0, ExplodingTrap9, $0, $0
-	xy_trigger 0, $a, $2, $0, ExplodingTrap10, $0, $0
-	xy_trigger 0, $a, $3, $0, ExplodingTrap11, $0, $0
-	xy_trigger 0, $a, $5, $0, ExplodingTrap12, $0, $0
-	xy_trigger 0, $b, $2, $0, ExplodingTrap13, $0, $0
-	xy_trigger 0, $b, $4, $0, ExplodingTrap14, $0, $0
-	xy_trigger 0, $c, $1, $0, ExplodingTrap15, $0, $0
-	xy_trigger 0, $c, $2, $0, ExplodingTrap16, $0, $0
-	xy_trigger 0, $c, $4, $0, ExplodingTrap17, $0, $0
-	xy_trigger 0, $c, $5, $0, ExplodingTrap18, $0, $0
-	xy_trigger 0, $d, $1, $0, ExplodingTrap19, $0, $0
-	xy_trigger 0, $d, $3, $0, ExplodingTrap20, $0, $0
-	xy_trigger 0, $d, $4, $0, ExplodingTrap21, $0, $0
-	xy_trigger 0, $d, $5, $0, ExplodingTrap22, $0, $0
+	xy_trigger 0, $7, $2, ExplodingTrap1
+	xy_trigger 0, $7, $3, ExplodingTrap2
+	xy_trigger 0, $7, $4, ExplodingTrap3
+	xy_trigger 0, $8, $1, ExplodingTrap4
+	xy_trigger 0, $8, $3, ExplodingTrap5
+	xy_trigger 0, $8, $5, ExplodingTrap6
+	xy_trigger 0, $9, $3, ExplodingTrap7
+	xy_trigger 0, $9, $4, ExplodingTrap8
+	xy_trigger 0, $a, $1, ExplodingTrap9
+	xy_trigger 0, $a, $2, ExplodingTrap10
+	xy_trigger 0, $a, $3, ExplodingTrap11
+	xy_trigger 0, $a, $5, ExplodingTrap12
+	xy_trigger 0, $b, $2, ExplodingTrap13
+	xy_trigger 0, $b, $4, ExplodingTrap14
+	xy_trigger 0, $c, $1, ExplodingTrap15
+	xy_trigger 0, $c, $2, ExplodingTrap16
+	xy_trigger 0, $c, $4, ExplodingTrap17
+	xy_trigger 0, $c, $5, ExplodingTrap18
+	xy_trigger 0, $d, $1, ExplodingTrap19
+	xy_trigger 0, $d, $3, ExplodingTrap20
+	xy_trigger 0, $d, $4, ExplodingTrap21
+	xy_trigger 0, $d, $5, ExplodingTrap22
 
 .Signposts:
 	db 9
--- a/maps/TeamRocketBaseB2F.asm
+++ b/maps/TeamRocketBaseB2F.asm
@@ -923,15 +923,15 @@
 
 .XYTriggers:
 	db 9
-	xy_trigger 0, $e, $5, $0, LanceHealsScript1, $0, $0
-	xy_trigger 0, $d, $4, $0, LanceHealsScript2, $0, $0
-	xy_trigger 1, $b, $e, $0, UnknownScript_0x6cf95, $0, $0
-	xy_trigger 1, $b, $f, $0, UnknownScript_0x6cf9c, $0, $0
-	xy_trigger 2, $c, $e, $0, UnknownScript_0x6d075, $0, $0
-	xy_trigger 2, $c, $f, $0, UnknownScript_0x6d075, $0, $0
-	xy_trigger 2, $3, $c, $0, UnknownScript_0x6d07a, $0, $0
-	xy_trigger 2, $a, $c, $0, UnknownScript_0x6d07a, $0, $0
-	xy_trigger 2, $b, $c, $0, UnknownScript_0x6d07a, $0, $0
+	xy_trigger 0, $e, $5, LanceHealsScript1
+	xy_trigger 0, $d, $4, LanceHealsScript2
+	xy_trigger 1, $b, $e, UnknownScript_0x6cf95
+	xy_trigger 1, $b, $f, UnknownScript_0x6cf9c
+	xy_trigger 2, $c, $e, UnknownScript_0x6d075
+	xy_trigger 2, $c, $f, UnknownScript_0x6d075
+	xy_trigger 2, $3, $c, UnknownScript_0x6d07a
+	xy_trigger 2, $a, $c, UnknownScript_0x6d07a
+	xy_trigger 2, $b, $c, UnknownScript_0x6d07a
 
 .Signposts:
 	db 23
--- a/maps/TeamRocketBaseB3F.asm
+++ b/maps/TeamRocketBaseB3F.asm
@@ -578,9 +578,9 @@
 
 .XYTriggers:
 	db 3
-	xy_trigger 2, $8, $a, $0, UnknownScript_0x6e04b, $0, $0
-	xy_trigger 2, $8, $b, $0, UnknownScript_0x6e052, $0, $0
-	xy_trigger 1, $a, $8, $0, RocketBaseRival, $0, $0
+	xy_trigger 2, $8, $a, UnknownScript_0x6e04b
+	xy_trigger 2, $8, $b, UnknownScript_0x6e052
+	xy_trigger 1, $a, $8, RocketBaseRival
 
 .Signposts:
 	db 10
--- a/maps/TrainerHouseB1F.asm
+++ b/maps/TrainerHouseB1F.asm
@@ -179,7 +179,7 @@
 
 .XYTriggers:
 	db 1
-	xy_trigger 0, $3, $7, $0, TrainerHouseReceptionistScript, $0, $0
+	xy_trigger 0, $3, $7, TrainerHouseReceptionistScript
 
 .Signposts:
 	db 0
--- a/maps/UndergroundPathSwitchRoomEntrances.asm
+++ b/maps/UndergroundPathSwitchRoomEntrances.asm
@@ -949,8 +949,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 0, $4, $13, $0, UndergroundSilverTrigger1, $0, 0
-	xy_trigger 0, $5, $13, $0, UndergroundSilverTrigger2, $0, 0
+	xy_trigger 0, $4, $13, UndergroundSilverTrigger1
+	xy_trigger 0, $5, $13, UndergroundSilverTrigger2
 
 .Signposts:
 	db 6
--- a/maps/VermilionPort.asm
+++ b/maps/VermilionPort.asm
@@ -310,7 +310,7 @@
 
 .XYTriggers:
 	db 1
-	xy_trigger 0, $b, $7, $0, UnknownScript_0x74e20, $0, $0
+	xy_trigger 0, $b, $7, UnknownScript_0x74e20
 
 .Signposts:
 	db 1
--- a/maps/VictoryRoad.asm
+++ b/maps/VictoryRoad.asm
@@ -259,8 +259,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 0, $8, $c, $0, UnknownScript_0x74492, $0, $0
-	xy_trigger 0, $8, $d, $0, UnknownScript_0x744b5, $0, $0
+	xy_trigger 0, $8, $c, UnknownScript_0x74492
+	xy_trigger 0, $8, $d, UnknownScript_0x744b5
 
 .Signposts:
 	db 2
--- a/maps/VictoryRoadGate.asm
+++ b/maps/VictoryRoadGate.asm
@@ -114,7 +114,7 @@
 
 .XYTriggers:
 	db 1
-	xy_trigger 0, $b, $a, $0, VictoryRoadGateBadgeCheckTrigger, $0, $0
+	xy_trigger 0, $b, $a, VictoryRoadGateBadgeCheckTrigger
 
 .Signposts:
 	db 0
--- a/maps/WiseTriosRoom.asm
+++ b/maps/WiseTriosRoom.asm
@@ -356,7 +356,7 @@
 
 .XYTriggers:
 	db 1
-	xy_trigger 0, $4, $7, $0, UnknownScript_0x985a3, $0, $0
+	xy_trigger 0, $4, $7, UnknownScript_0x985a3
 
 .Signposts:
 	db 0
--- a/misc/mobile_42.asm
+++ b/misc/mobile_42.asm
@@ -526,7 +526,7 @@
 	call DelayFrames
 	call Function108bec
 	depixel 10, 11, 4, 0
-	ld a, SPRITE_ANIM_INDEX_20
+	ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_SENT_BALL
 	call _InitSpriteAnimStruct
 	ld de, SFX_BALL_POOF
 	call PlaySFX
@@ -561,7 +561,7 @@
 	ld a, $90
 	ld [hWY], a
 	depixel 10, 11, 4, 0
-	ld a, SPRITE_ANIM_INDEX_21
+	ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_OT_BALL
 	call _InitSpriteAnimStruct
 	call Function108b45
 	ld a, $1
@@ -661,7 +661,7 @@
 	call DelayFrames
 	call Function108c2b
 	depixel 10, 11, 4, 0
-	ld a, SPRITE_ANIM_INDEX_20
+	ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_SENT_BALL
 	call _InitSpriteAnimStruct
 	ld de, SFX_BALL_POOF
 	call PlaySFX
@@ -705,7 +705,7 @@
 	ld a, $90
 	ld [hWY], a
 	depixel 10, 11, 4, 0
-	ld a, SPRITE_ANIM_INDEX_21
+	ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_OT_BALL
 	call _InitSpriteAnimStruct
 	call Function108b45
 	ld a, $1
@@ -774,7 +774,7 @@
 	ld a, $90
 	ld [hWY], a
 	depixel 10, 11, 4, 0
-	ld a, SPRITE_ANIM_INDEX_21
+	ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_OT_BALL
 	call _InitSpriteAnimStruct
 	call Function108b45
 	ld a, $1
@@ -960,7 +960,7 @@
 	cp $f8
 	jr nz, .next
 	depixel 10, 11, 4, 0
-	ld a, SPRITE_ANIM_INDEX_22
+	ld a, SPRITE_ANIM_INDEX_MOBILE_22
 	call _InitSpriteAnimStruct
 
 .next
@@ -985,7 +985,7 @@
 
 .init
 	depixel 10, 11, 4, 0
-	ld a, SPRITE_ANIM_INDEX_22
+	ld a, SPRITE_ANIM_INDEX_MOBILE_22
 	call _InitSpriteAnimStruct
 	xor a
 	call Function108ad4
@@ -1016,7 +1016,7 @@
 	call Function108af4
 	call Function108b5a
 	depixel 9, 10, 2, 0
-	ld a, SPRITE_ANIM_INDEX_25
+	ld a, SPRITE_ANIM_INDEX_MOBILE_25
 	call _InitSpriteAnimStruct
 	ld de, SFX_FORESIGHT
 	call PlaySFX
@@ -1025,7 +1025,7 @@
 	xor a
 	ld [wcf64], a
 	depixel 9, 10, 2, 0
-	ld a, SPRITE_ANIM_INDEX_23
+	ld a, SPRITE_ANIM_INDEX_MOBILE_23
 	call _InitSpriteAnimStruct
 .loop
 	ld a, [hSCY]
@@ -1052,7 +1052,7 @@
 	ld c, 60
 	call WaitMobileTradeSpriteAnims
 	depixel 30, 10, 2, 0
-	ld a, SPRITE_ANIM_INDEX_24
+	ld a, SPRITE_ANIM_INDEX_MOBILE_24
 	call _InitSpriteAnimStruct
 	call GetMobileTradeAnimByte
 	ld de, SFX_THROW_BALL
@@ -1075,7 +1075,7 @@
 	ld c, 80
 	call DelayFrames
 	depixel 30, 10, 2, 0
-	ld a, SPRITE_ANIM_INDEX_24
+	ld a, SPRITE_ANIM_INDEX_MOBILE_24
 	call _InitSpriteAnimStruct
 	call GetMobileTradeAnimByte
 	ld de, SFX_THROW_BALL
@@ -1099,7 +1099,7 @@
 .done
 	callba DeinitializeAllSprites
 	depixel 9, 10, 2, 0
-	ld a, SPRITE_ANIM_INDEX_25
+	ld a, SPRITE_ANIM_INDEX_MOBILE_25
 	call _InitSpriteAnimStruct
 	ld de, SFX_GLASS_TING_2
 	call PlaySFX
@@ -1135,13 +1135,13 @@
 
 .asm_1088c5
 	depixel 10, 11, 4, 0
-	ld a, SPRITE_ANIM_INDEX_22
+	ld a, SPRITE_ANIM_INDEX_MOBILE_22
 	call _InitSpriteAnimStruct
 	jr .asm_1088e7
 
 .asm_1088cf
 	depixel 10, 11, 4, 0
-	ld a, SPRITE_ANIM_INDEX_22
+	ld a, SPRITE_ANIM_INDEX_MOBILE_22
 	call _InitSpriteAnimStruct
 	xor a
 	call Function108ad4