shithub: pokecrystal

Download patch

ref: 512863989fb2cb17bcca2f27a61fe3fa8f567b9a
parent: 89b9292db0898f8ad2b6ea8513a3190762eb58c8
author: Remy Oukaour <remy.oukaour@gmail.com>
date: Fri Dec 8 19:50:59 EST 2017

Document constants with comments, actual names, and more thorough usage

--- a/battle/ai/items.asm
+++ b/battle/ai/items.asm
@@ -27,7 +27,7 @@
 
 	ld a, [TrainerClass]
 	dec a
-	ld bc, 7
+	ld bc, NUM_TRAINER_ATTRIBUTES
 	call AddNTimes
 .ok
 	bit SWITCH_OFTEN_F, [hl]
@@ -174,8 +174,8 @@
 
 	ld a, [TrainerClass]
 	dec a
-	ld hl, TrainerClassAttributes + 5
-	ld bc, 7
+	ld hl, TrainerClassAttributes + TRNATTR_AI_ITEM_SWITCH
+	ld bc, NUM_TRAINER_ATTRIBUTES
 	call AddNTimes
 	ld b, h
 	ld c, l
--- a/constants/animation_constants.asm
+++ b/constants/animation_constants.asm
@@ -1,3 +1,4 @@
+; battle_anim_struct members (see macros/wram.asm)
 	const_def
 	const BATTLEANIMSTRUCT_INDEX
 	const BATTLEANIMSTRUCT_01
@@ -25,6 +26,7 @@
 	const BATTLEANIMSTRUCT_17
 BATTLEANIMSTRUCT_LENGTH EQU const_value
 
+; BattleAnimObjects indexes (see battle/objects/data.asm)
 	const_def
 	const ANIM_OBJ_00
 	const ANIM_OBJ_01
@@ -215,6 +217,7 @@
 	const ANIM_OBJ_BA
 	const ANIM_OBJ_BB
 
+; DoBattleAnimFrame arguments (see battle/objects/functions.asm)
 	const_def
 	const BATTLEANIMFUNC_00
 	const BATTLEANIMFUNC_01
@@ -297,6 +300,7 @@
 	const BATTLEANIMFUNC_4E
 	const BATTLEANIMFUNC_4F
 
+; BattleAnimFrameData indexes (see battle/objects/framesets.asm)
 	const_def
 	const BATTLEANIMFRAMESET_00
 	const BATTLEANIMFRAMESET_01
@@ -484,6 +488,7 @@
 	const BATTLEANIMFRAMESET_B7
 	const BATTLEANIMFRAMESET_B8
 
+; BattleAnimOAMData indexes (see battle/objects/oam.asm)
 	const_def
 	const BATTLEANIMOAMSET_00
 	const BATTLEANIMOAMSET_01
@@ -702,6 +707,7 @@
 	const BATTLEANIMOAMSET_D6
 	const BATTLEANIMOAMSET_D7
 
+; BattleBGEffects indexes (see battle/bg_effects.asm)
 const_value SET 1
 	const ANIM_BG_FLASH_INVERTED
 	const ANIM_BG_FLASH_WHITE
@@ -757,17 +763,19 @@
 	const ANIM_BG_WOBBLE_MON
 	const ANIM_BG_35
 
+; PokeAnims indexes (see gfx/pics/animation.asm)
 	const_def
-	const ANIM_MON_SLOW    ; 0
-	const ANIM_MON_NORMAL  ; 1
-	const ANIM_MON_MENU    ; 2
-	const ANIM_MON_TRADE   ; 3
-	const ANIM_MON_EVOLVE  ; 4
-	const ANIM_MON_HATCH   ; 5
-	const ANIM_MON_UNUSED  ; 6
-	const ANIM_MON_EGG1    ; 7
-	const ANIM_MON_EGG2    ; 8
+	const ANIM_MON_SLOW
+	const ANIM_MON_NORMAL
+	const ANIM_MON_MENU
+	const ANIM_MON_TRADE
+	const ANIM_MON_EVOLVE
+	const ANIM_MON_HATCH
+	const ANIM_MON_UNUSED
+	const ANIM_MON_EGG1
+	const ANIM_MON_EGG2
 
+; AnimObjGFX indexes (see battle/objects/gfx_headers.asm)
 const_value SET 1
 	const ANIM_GFX_HIT
 	const ANIM_GFX_CUT
@@ -809,6 +817,7 @@
 	const ANIM_GFX_WAVE
 	const ANIM_GFX_AEROBLAST
 
+; battle_bg_effect struct members (see macros/wram.asm)
 	const_def
 	const BG_EFFECT_STRUCT_FUNCTION
 	const BG_EFFECT_STRUCT_JT_INDEX
--- a/constants/audio_constants.asm
+++ b/constants/audio_constants.asm
@@ -1,5 +1,3 @@
-
-
 ; pitch
 	const_def
 	const __
@@ -40,7 +38,6 @@
 SOUND_REST EQU 5
 
 ; Flags2
-
 SOUND_VIBRATO EQU 0
 SOUND_PITCH_WHEEL EQU 1
 SOUND_DUTY EQU 2
--- a/constants/battle_constants.asm
+++ b/constants/battle_constants.asm
@@ -1,12 +1,20 @@
+; significant level values
 MAX_LEVEL EQU 100
 MIN_LEVEL EQU 2
 EGG_LEVEL EQU 5
+
+; maximum moves known per mon
 NUM_MOVES EQU 4
 
-REST_TURNS EQU 2
-MAX_STAT_LEVEL EQU 13
+; significant stat values
 BASE_STAT_LEVEL EQU 7
+MAX_STAT_LEVEL EQU 13
 
+; turns that Rest sleep lasts
+REST_TURNS EQU 2
+
+; PlayerStatLevels and EnemyStatLevels indexes
+; used for GetStatName
 	const_def
 	const ATTACK
 	const DEFENSE
@@ -15,10 +23,10 @@
 	const SP_DEFENSE
 	const ACCURACY
 	const EVASION
-	const ABILITY
+	const ABILITY ; used for BattleCommand_Curse
 NUM_LEVEL_STATS EQU const_value
 
-; move struct
+; move struct members (see battle/moves/moves.asm)
 	const_def
 	const MOVE_ANIM
 	const MOVE_EFFECT
@@ -30,6 +38,9 @@
 	const MOVE_LENGTH
 
 ; stat constants
+; indexes for:
+; - PlayerStats and EnemyStats (see wram.asm)
+; - party_struct and battle_struct members (see macros/wram.asm)
 const_value SET 1
 	const STAT_HP
 	const STAT_ATK
@@ -38,6 +49,8 @@
 	const STAT_SATK
 	const STAT_SDEF
 NUM_STATS EQU const_value
+
+; stat formula constants
 STAT_MIN_NORMAL EQU 5
 STAT_MIN_HP EQU 10
 
@@ -45,12 +58,12 @@
 ATKDEFDV_SHINY EQU $EA
 SPDSPCDV_SHINY EQU $AA
 
-; battle classes
+; battle classes (wBattleMode values)
 const_value SET 1
 	const WILD_BATTLE
 	const TRAINER_BATTLE
 
-; battle types
+; battle types (BattleType values)
 	const_def
 	const BATTLETYPE_NORMAL
 	const BATTLETYPE_CANLOSE
@@ -66,7 +79,7 @@
 	const BATTLETYPE_CELEBI
 	const BATTLETYPE_SUICUNE
 
-; battle variables
+; GetBattleVar and GetBattleVarAddr arguments (see home/battle.asm)
 	const_def
 	const BATTLE_VARS_SUBSTATUS1
 	const BATTLE_VARS_SUBSTATUS2
@@ -90,8 +103,37 @@
 	const BATTLE_VARS_LAST_MOVE
 	const BATTLE_VARS_LAST_MOVE_OPP
 
-; status
-SLP EQU 7 ; 0-7 turns
+; GetBattleVar and GetBattleVarAddr internal indexes (see home/battle.asm)
+	const_def
+	const PLAYER_SUBSTATUS_1
+	const ENEMY_SUBSTATUS_1
+	const PLAYER_SUBSTATUS_2
+	const ENEMY_SUBSTATUS_2
+	const PLAYER_SUBSTATUS_3
+	const ENEMY_SUBSTATUS_3
+	const PLAYER_SUBSTATUS_4
+	const ENEMY_SUBSTATUS_4
+	const PLAYER_SUBSTATUS_5
+	const ENEMY_SUBSTATUS_5
+	const PLAYER_STATUS
+	const ENEMY_STATUS
+	const PLAYER_MOVE_ANIMATION
+	const ENEMY_MOVE_ANIMATION
+	const PLAYER_MOVE_EFFECT
+	const ENEMY_MOVE_EFFECT
+	const PLAYER_MOVE_POWER
+	const ENEMY_MOVE_POWER
+	const PLAYER_MOVE_TYPE
+	const ENEMY_MOVE_TYPE
+	const PLAYER_CUR_MOVE
+	const ENEMY_CUR_MOVE
+	const PLAYER_COUNTER_MOVE
+	const ENEMY_COUNTER_MOVE
+	const PLAYER_LAST_MOVE
+	const ENEMY_LAST_MOVE
+
+; status condition bit flags
+SLP EQU %111 ; 0-7 turns
 const_value SET 3
 	const PSN
 	const BRN
@@ -100,7 +142,7 @@
 
 ALL_STATUS EQU (1 << PSN) + (1 << BRN) + (1 << FRZ) + (1 << PAR) + SLP
 
-; substatus
+; PlayerSubStatus1 or EnemySubStatus1 bit flags
 	enum_start 7, -1
 	enum SUBSTATUS_IN_LOVE
 	enum SUBSTATUS_ROLLOUT
@@ -111,8 +153,10 @@
 	enum SUBSTATUS_CURSE
 	enum SUBSTATUS_NIGHTMARE
 
-SUBSTATUS_CURLED       EQU 0
+; PlayerSubStatus2 or EnemySubStatus2 bit flags
+SUBSTATUS_CURLED EQU 0
 
+; PlayerSubStatus3 or EnemySubStatus3 bit flags
 	enum_start 7, -1
 	enum SUBSTATUS_CONFUSED
 	enum SUBSTATUS_FLYING
@@ -123,6 +167,7 @@
 	enum SUBSTATUS_RAMPAGE
 	enum SUBSTATUS_BIDE
 
+; PlayerSubStatus4 or EnemySubStatus4 bit flags
 	enum_start 7, -1
 	enum SUBSTATUS_LEECH_SEED
 	enum SUBSTATUS_RAGE
@@ -133,6 +178,7 @@
 	enum SUBSTATUS_MIST
 	enum SUBSTATUS_X_ACCURACY
 
+; PlayerSubStatus5 or EnemySubStatus5 bit flags
 	enum_start 7, -1
 	enum SUBSTATUS_CANT_RUN
 	enum SUBSTATUS_DESTINY_BOND
@@ -143,7 +189,7 @@
 	enum SUBSTATUS_UNKNOWN_3
 	enum SUBSTATUS_TOXIC
 
-; environmental
+; PlayerScreens or EnemyScreens bit flags
 	enum_start 4, -1
 	enum SCREENS_REFLECT
 	enum SCREENS_LIGHT_SCREEN
@@ -151,7 +197,7 @@
 	enum SCREENS_UNUSED
 	enum SCREENS_SPIKES
 
-; weather
+; Weather values
 	const_def
 	const WEATHER_NONE
 	const WEATHER_RAIN
@@ -161,8 +207,7 @@
 	const WEATHER_SUN_END
 	const WEATHER_SANDSTORM_END
 
-
-; move effects
+; MoveEffectsPointers indexes (see battle/moves/move_effects_pointers.asm)
 	const_def
 	const EFFECT_NORMAL_HIT
 	const EFFECT_SLEEP
@@ -322,35 +367,6 @@
 	const EFFECT_FLY
 	const EFFECT_DEFENSE_CURL
 
-; Battle vars used in home/battle.asm
-	const_def
-	const PLAYER_SUBSTATUS_1
-	const ENEMY_SUBSTATUS_1
-	const PLAYER_SUBSTATUS_2
-	const ENEMY_SUBSTATUS_2
-	const PLAYER_SUBSTATUS_3
-	const ENEMY_SUBSTATUS_3
-	const PLAYER_SUBSTATUS_4
-	const ENEMY_SUBSTATUS_4
-	const PLAYER_SUBSTATUS_5
-	const ENEMY_SUBSTATUS_5
-	const PLAYER_STATUS
-	const ENEMY_STATUS
-	const PLAYER_MOVE_ANIMATION
-	const ENEMY_MOVE_ANIMATION
-	const PLAYER_MOVE_EFFECT
-	const ENEMY_MOVE_EFFECT
-	const PLAYER_MOVE_POWER
-	const ENEMY_MOVE_POWER
-	const PLAYER_MOVE_TYPE
-	const ENEMY_MOVE_TYPE
-	const PLAYER_CUR_MOVE
-	const ENEMY_CUR_MOVE
-	const PLAYER_COUNTER_MOVE
-	const ENEMY_COUNTER_MOVE
-	const PLAYER_LAST_MOVE
-	const ENEMY_LAST_MOVE
-
 ; wBattleAction
 	const_def
 	const BATTLEACTION_MOVE1
@@ -370,6 +386,7 @@
 	const BATTLEACTION_E
 	const BATTLEACTION_FORFEIT
 
+; wBattleResult
 	const_def
 	const WIN
 	const LOSE
--- a/constants/battle_tower_constants.asm
+++ b/constants/battle_tower_constants.asm
@@ -1,3 +1,4 @@
+; BattleTowerAction arguments (see misc/battle_tower_5c.asm)
 	const_def
 	const BATTLETOWERACTION_CHECK_EXPLANATION_READ
 	const BATTLETOWERACTION_SET_EXPLANATION_READ
@@ -32,8 +33,19 @@
 	const BATTLETOWERACTION_CHOOSEREWARD ; save options
 	const BATTLETOWERACTION_SAVEOPTIONS
 
-BATTLETOWER_NO_CHALLENGE         EQU 0
-BATTLETOWER_SAVED_AND_LEFT       EQU 1
-BATTLETOWER_CHALLENGE_IN_PROGESS EQU 2
-BATTLETOWER_WON_CHALLENGE        EQU 3
-BATTLETOWER_RECEIVED_REWARD      EQU 4
+; sBattleTowerChallengeState
+	const_def
+	const BATTLETOWER_NO_CHALLENGE
+	const BATTLETOWER_SAVED_AND_LEFT
+	const BATTLETOWER_CHALLENGE_IN_PROGESS
+	const BATTLETOWER_WON_CHALLENGE
+	const BATTLETOWER_RECEIVED_REWARD
+
+BATTLETOWER_NROFPKMNS EQU 3
+BATTLETOWER_TRAINERDATALENGTH EQU $24
+BATTLETOWER_NROFTRAINERS EQU 7
+BATTLETOWER_NRMONSPERLEVELBRACKET EQU BATTLETOWER_NROFPKMNS * BATTLETOWER_NROFTRAINERS
+BATTLE_TOWER_STRUCT_LENGTH EQU $e0 ; NAME_LENGTH + 3 * (PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH) + BATTLETOWER_TRAINERDATALENGTH
+
+; return value from BattleTowerAction(BATTLETOWERACTION_CHECKMOBILEEVENT)
+MOBILE_EVENT_OBJECT_GS_BALL EQU $b
--- a/constants/cgb_constants.asm
+++ b/constants/cgb_constants.asm
@@ -1,3 +1,4 @@
+; GetSGBLayout arguments (see predef/cgb.asm and predef/sgb.asm)
 	const_def
 	const SCGB_BATTLE_GRAYSCALE
 	const SCGB_BATTLE_COLORS
--- a/constants/cry_constants.asm
+++ b/constants/cry_constants.asm
@@ -1,3 +1,4 @@
+; Cries indexes (see audio/cry_pointers.asm)
 	const_def
 
 ; gen 1
--- a/constants/deco_constants.asm
+++ b/constants/deco_constants.asm
@@ -1,3 +1,4 @@
+; decoration types
 const_value = 1
 	const DECO_PLANT
 	const DECO_BED
@@ -6,6 +7,7 @@
 	const DECO_DOLL
 	const DECO_BIGDOLL
 
+; DecorationNames indexes (see engine/decorations.asm)
 const_value = 1
 	const PUT_IT_AWAY
 	const MAGNAPLANT
@@ -33,6 +35,7 @@
 	const YELLOW_CARPET
 	const GREEN_CARPET
 
+; DoDecorationAction2 arguments (see engine/decorations.asm)
 const_value = 1
 	const SET_UP_BED
 	const PUT_AWAY_BED
@@ -56,66 +59,67 @@
 	enum DECOFLAG_\1
 endm
 
+; decorations
 const_value = 1
 __enum__ = 0
 	const BEDS
-	deco  FEATHERY_BED ; 2 (0)
-	deco  PINK_BED ; 3 (1)
-	deco  POLKADOT_BED ; 4 (2)
-	deco  PIKACHU_BED ; 5 (3)
+	deco  FEATHERY_BED
+	deco  PINK_BED
+	deco  POLKADOT_BED
+	deco  PIKACHU_BED
 
 	const CARPETS
-	deco  RED_CARPET ; 7 (4)
-	deco  BLUE_CARPET ; 8 (5)
-	deco  YELLOW_CARPET ; 9 (6)
-	deco  GREEN_CARPET ; a (7)
+	deco  RED_CARPET
+	deco  BLUE_CARPET
+	deco  YELLOW_CARPET
+	deco  GREEN_CARPET
 
 	const PLANTS
-	deco  MAGNAPLANT ; c (8)
-	deco  TROPICPLANT ; d (9)
-	deco  JUMBOPLANT ; e (a)
+	deco  MAGNAPLANT
+	deco  TROPICPLANT
+	deco  JUMBOPLANT
 
 	const POSTERS
-	deco  TOWN_MAP ; 10 (b)
-	deco  PIKACHU_POSTER ; 11 (c)
-	deco  CLEFAIRY_POSTER ; 12 (d)
-	deco  JIGGLYPUFF_POSTER ; 13(e)
+	deco  TOWN_MAP
+	deco  PIKACHU_POSTER
+	deco  CLEFAIRY_POSTER
+	deco  JIGGLYPUFF_POSTER
 
 	const CONSOLES
-	deco  FAMICOM ; 15 (f)
-	deco  SNES ; 16 (10)
-	deco  N64 ; 17 (11)
-	deco  VIRTUAL_BOY ; 18 (12)
+	deco  FAMICOM
+	deco  SNES
+	deco  N64
+	deco  VIRTUAL_BOY
 
 	const BIG_DOLLS
-	deco  BIG_SNORLAX_DOLL ; 1a (13)
-	deco  BIG_ONIX_DOLL ; 1b (14)
-	deco  BIG_LAPRAS_DOLL ; 1c (15)
+	deco  BIG_SNORLAX_DOLL
+	deco  BIG_ONIX_DOLL
+	deco  BIG_LAPRAS_DOLL
 
 	const DOLLS
-	deco  PIKACHU_DOLL ; 1e (16)
-	deco  SURF_PIKACHU_DOLL ; 1f (17)
-	deco  CLEFAIRY_DOLL ; 20 (18)
-	deco  JIGGLYPUFF_DOLL ; 21 (19)
-	deco  BULBASAUR_DOLL ; 22 (1a)
-	deco  CHARMANDER_DOLL ; 23 (1b)
-	deco  SQUIRTLE_DOLL ; 24 (1c)
-	deco  POLIWAG_DOLL ; 25 (1d)
-	deco  DIGLETT_DOLL ; 26 (1e)
-	deco  STARMIE_DOLL ; 27 (1f)
-	deco  MAGIKARP_DOLL ; 28 (20)
-	deco  ODDISH_DOLL ; 29 (21)
-	deco  GENGAR_DOLL ; 2a (22)
-	deco  SHELLDER_DOLL ; 2b (23)
-	deco  GRIMER_DOLL ; 2c (24)
-	deco  VOLTORB_DOLL ; 2d (25)
-	deco  WEEDLE_DOLL ; 2e (26)
-	deco  UNOWN_DOLL ; 2f (27)
-	deco  GEODUDE_DOLL ; 30 (28)
-	deco  MACHOP_DOLL ; 31 (29)
-	deco  TENTACOOL_DOLL ; 32 (2a)
-	deco  GOLD_TROPHY_DOLL ; 33 (2b)
-	deco  SILVER_TROPHY_DOLL ; 34 (2c)
+	deco  PIKACHU_DOLL
+	deco  SURF_PIKACHU_DOLL
+	deco  CLEFAIRY_DOLL
+	deco  JIGGLYPUFF_DOLL
+	deco  BULBASAUR_DOLL
+	deco  CHARMANDER_DOLL
+	deco  SQUIRTLE_DOLL
+	deco  POLIWAG_DOLL
+	deco  DIGLETT_DOLL
+	deco  STARMIE_DOLL
+	deco  MAGIKARP_DOLL
+	deco  ODDISH_DOLL
+	deco  GENGAR_DOLL
+	deco  SHELLDER_DOLL
+	deco  GRIMER_DOLL
+	deco  VOLTORB_DOLL
+	deco  WEEDLE_DOLL
+	deco  UNOWN_DOLL
+	deco  GEODUDE_DOLL
+	deco  MACHOP_DOLL
+	deco  TENTACOOL_DOLL
+	deco  GOLD_TROPHY_DOLL
+	deco  SILVER_TROPHY_DOLL
 
-NUM_NON_TROPHY_DECOS EQU $2b
-NUM_DECOS EQU $2d
+NUM_DECOS = __enum__
+NUM_NON_TROPHY_DECOS = NUM_DECOS +- 2
--- a/constants/engine_flags.asm
+++ b/constants/engine_flags.asm
@@ -1,16 +1,22 @@
+; EngineFlags indexes (see engine/engine_flasg.asm)
 	const_def
-
+; wPokegearFlags
 	const ENGINE_RADIO_CARD
 	const ENGINE_MAP_CARD
 	const ENGINE_PHONE_CARD
 	const ENGINE_EXPN_CARD
 	const ENGINE_POKEGEAR
+; wDaycareMan
 	const ENGINE_DAYCARE_MAN_HAS_EGG
 	const ENGINE_DAYCARE_MAN_HAS_MON
+; wDaycareLady
 	const ENGINE_DAYCARE_LADY_HAS_MON
+; wMomSavingMoney
 	const ENGINE_MOM_SAVING_MONEY
 	const ENGINE_DST
+; wUnusedTwoDayTimerOn
 	const ENGINE_0A
+; StatusFlags
 	const ENGINE_POKEDEX
 	const ENGINE_UNOWN_DEX
 	const ENGINE_POKERUS
@@ -17,6 +23,7 @@
 	const ENGINE_ROCKET_SIGNAL_ON_CH20
 	const ENGINE_CREDITS_SKIP
 	const ENGINE_BUG_CONTEST_ON ; 10
+; StatusFlags2
 	const ENGINE_BUG_CONTEST_TIMER
 	const ENGINE_SAFARI_ZONE
 	const ENGINE_ROCKETS_IN_RADIO_TOWER
@@ -24,9 +31,11 @@
 	const ENGINE_GIVE_POKERUS
 	const ENGINE_FLORIA
 	const ENGINE_ROCKETS_IN_MAHOGANY
+; BikeFlags
 	const ENGINE_STRENGTH_ACTIVE
 	const ENGINE_ALWAYS_ON_BIKE
 	const ENGINE_DOWNHILL
+; JohtoBadges
 	const ENGINE_ZEPHYRBADGE
 	const ENGINE_HIVEBADGE
 	const ENGINE_PLAINBADGE
@@ -35,6 +44,7 @@
 	const ENGINE_STORMBADGE ; 20
 	const ENGINE_GLACIERBADGE
 	const ENGINE_RISINGBADGE
+; KantoBadges
 	const ENGINE_BOULDERBADGE
 	const ENGINE_CASCADEBADGE
 	const ENGINE_THUNDERBADGE
@@ -43,6 +53,7 @@
 	const ENGINE_MARSHBADGE
 	const ENGINE_VOLCANOBADGE
 	const ENGINE_EARTHBADGE
+; UnlockedUnowns
 	const ENGINE_UNLOCKED_UNOWNS_1
 	const ENGINE_UNLOCKED_UNOWNS_2
 	const ENGINE_UNLOCKED_UNOWNS_3
@@ -51,6 +62,7 @@
 	const ENGINE_UNLOCKED_UNOWNS_6 ; 30
 	const ENGINE_UNLOCKED_UNOWNS_7
 	const ENGINE_UNLOCKED_UNOWNS_8
+; VisitedSpawns
 	const ENGINE_FLYPOINT_KRISS_HOUSE
 	const ENGINE_FLYPOINT_VIRIDIAN_POKECENTER
 	const ENGINE_FLYPOINT_PALLET
@@ -78,8 +90,11 @@
 	const ENGINE_FLYPOINT_BLACKTHORN
 	const ENGINE_FLYPOINT_SILVER_CAVE
 	const ENGINE_FLYPOINT_UNUSED
+; wLuckyNumberShowFlag
 	const ENGINE_LUCKY_NUMBER_SHOW
+; StatusFlags2
 	const ENGINE_4F
+; DailyFlags
 	const ENGINE_KURT_MAKING_BALLS ; 50
 	const ENGINE_DAILY_BUG_CONTEST
 	const ENGINE_SPECIAL_WILDDATA
@@ -88,6 +103,7 @@
 	const ENGINE_SHUCKLE_GIVEN
 	const ENGINE_GOLDENROD_UNDERGROUND_MERCHANT_CLOSED
 	const ENGINE_FOUGHT_IN_TRAINER_HALL_TODAY
+; WeeklyFlags
 	const ENGINE_MT_MOON_SQUARE_CLEFAIRY
 	const ENGINE_UNION_CAVE_LAPRAS
 	const ENGINE_GOLDENROD_UNDERGROUND_GOT_HAIRCUT
@@ -96,11 +112,16 @@
 	const ENGINE_INDIGO_PLATEAU_RIVAL_FIGHT
 	const ENGINE_DAILY_MOVE_TUTOR
 	const ENGINE_BUENAS_PASSWORD
+; SwarmFlags
 	const ENGINE_BUENAS_PASSWORD_2 ; 60
 	const ENGINE_GOLDENROD_DEPT_STORE_SALE_IS_ON
+; GameTimerPause
 	const ENGINE_62
+; PlayerGender
 	const ENGINE_PLAYER_IS_FEMALE
+; wCelebiEvent
 	const ENGINE_HAVE_EXAMINED_GS_BALL
+; wDailyRematchFlags
 	const ENGINE_JACK
 	const ENGINE_HUEY
 	const ENGINE_GAVEN
@@ -125,6 +146,7 @@
 	const ENGINE_WILTON
 	const ENGINE_PARRY
 	const ENGINE_ERIN
+; wDailyPhoneItemFlags
 	const ENGINE_BEVERLY_HAS_NUGGET
 	const ENGINE_JOSE_HAS_STAR_PIECE
 	const ENGINE_WADE_HAS_ITEM
@@ -135,6 +157,7 @@
 	const ENGINE_TULLY_HAS_WATER_STONE
 	const ENGINE_TIFFANY_HAS_PINK_BOW
 	const ENGINE_WILTON_HAS_ITEM
+; wDailyPhoneTimeOfDayFlags
 	const ENGINE_JACK_MONDAY_MORNING
 	const ENGINE_HUEY_WEDNESDAY_NIGHT
 	const ENGINE_GAVEN_THURSDAY_MORNING
@@ -159,7 +182,9 @@
 	const ENGINE_WILTON_THRUSDAY_MORNING
 	const ENGINE_PARRY_FRIDAY_AFTERNOON
 	const ENGINE_ERIN_SATURDAY_NIGHT
+; wPlayerSpriteSetupFlags
 	const ENGINE_KRIS_IN_CABLE_CLUB
+; SwarmFlags
 	const ENGINE_DUNSPARCE_SWARM ; a0
 	const ENGINE_YANMA_SWARM
 NUM_ENGINE_FLAGS EQU const_value
--- a/constants/event_flags.asm
+++ b/constants/event_flags.asm
@@ -1,7 +1,6 @@
-
+; EventFlags bit flags
 	const_def
-
-; These first eight flags are reset upon reloading the map.
+; The first eight flags are reset upon reloading the map
 	const EVENT_GAVE_KURT_APRICORNS ; 000
 	const EVENT_RECEIVED_BALLS_FROM_KURT
 	const EVENT_DRAGON_SHRINE_QUESTION_2
@@ -10,7 +9,7 @@
 	const EVENT_DRAGON_SHRINE_QUESTION_5
 	const EVENT_JUST_RECEIVED_DRATINI
 	const EVENT_IN_YOUR_ROOM
-; Johto story events
+; Johto Gym Leader TM gifts
 	const EVENT_GOT_TM31_MUD_SLAP
 	const EVENT_GOT_TM49_FURY_CUTTER
 	const EVENT_GOT_TM01_DYNAMICPUNCH
@@ -19,6 +18,7 @@
 	const EVENT_GOT_TM23_IRON_TAIL
 	const EVENT_GOT_TM16_ICY_WIND
 	const EVENT_GOT_TM24_DRAGONBREATH
+; HMs (EVENT_GOT_HM07_WATERFALL is with the Johto itemballs)
 	const EVENT_GOT_HM01_CUT
 	const EVENT_GOT_HM02_FLY
 	const EVENT_GOT_HM03_SURF
@@ -26,9 +26,11 @@
 	const EVENT_GOT_HM05_FLASH
 	const EVENT_GOT_HM06_WHIRLPOOL
 	const EVENT_016
+; Rods
 	const EVENT_GOT_OLD_ROD
 	const EVENT_GOT_GOOD_ROD
 	const EVENT_GOT_SUPER_ROD
+; Johto story events
 	const EVENT_GOT_A_POKEMON_FROM_ELM
 	const EVENT_GOT_CYNDAQUIL_FROM_ELM
 	const EVENT_GOT_TOTODILE_FROM_ELM
@@ -128,7 +130,7 @@
 	const EVENT_GOT_TM12_SWEET_SCENT
 	const EVENT_RELEASED_THE_BEASTS
 	const EVENT_GOT_MASTER_BALL_FROM_ELM
-; Johto Signpost Items
+; Johto signpost items
 	const EVENT_TIN_TOWER_4F_HIDDEN_MAX_POTION
 	const EVENT_TIN_TOWER_5F_HIDDEN_FULL_RESTORE
 	const EVENT_TIN_TOWER_5F_HIDDEN_CARBOS
@@ -234,7 +236,7 @@
 	const EVENT_TALKED_TO_OAK_IN_KANTO
 	const EVENT_GOT_HP_UP_FROM_VERMILION_GUY
 	const EVENT_GOT_TM29_PSYCHIC
-; Kanto Signpost Items
+; Kanto signpost items
 	const EVENT_DIGLETTS_CAVE_HIDDEN_MAX_REVIVE
 	const EVENT_UNDERGROUND_HIDDEN_FULL_RESTORE
 	const EVENT_UNDERGROUND_HIDDEN_X_SPECIAL
@@ -608,7 +610,7 @@
 	const EVENT_255
 	const EVENT_256
 	const EVENT_257
-; Kurt events
+; Kurt Apricorn events
 	const EVENT_GAVE_KURT_RED_APRICORN
 	const EVENT_GAVE_KURT_BLU_APRICORN
 	const EVENT_GAVE_KURT_YLW_APRICORN
@@ -682,7 +684,7 @@
 	const EVENT_ERIN_ASKED_FOR_PHONE_NUMBER
 	const EVENT_BUENA_OFFERED_HER_PHONE_NUMBER_NO_BLUE_CARD
 	const EVENT_29F
-; Ruins Of Alph puzzles
+; Ruins of Alph puzzles
 	const EVENT_SOLVED_HO_OH_PUZZLE ; 2a0
 	const EVENT_SOLVED_KABUTO_PUZZLE
 	const EVENT_SOLVED_OMANYTE_PUZZLE
@@ -734,7 +736,7 @@
 	const EVENT_DECO_BIG_SNORLAX_DOLL
 	const EVENT_DECO_BIG_ONIX_DOLL ; 2d0
 	const EVENT_DECO_BIG_LAPRAS_DOLL
-; More Johto events
+; More Johto story events
 	const EVENT_WARPED_FROM_ROUTE_35_NATIONAL_PARK_GATE
 	const EVENT_SWITCH_1
 	const EVENT_SWITCH_2
@@ -818,7 +820,7 @@
 	const EVENT_GOT_WATER_STONE_FROM_BILLS_GRANDPA
 	const EVENT_GOT_FIRE_STONE_FROM_BILLS_GRANDPA
 	const EVENT_GOT_THUNDERSTONE_FROM_BILLS_GRANDPA
-; More Crystal-specific events
+; More Crystal-exclusive events in Johto
 	const EVENT_LISTENED_TO_INITIAL_RADIO
 	const EVENT_WALL_OPENED_IN_HO_OH_CHAMBER
 	const EVENT_WALL_OPENED_IN_KABUTO_CHAMBER
@@ -1015,7 +1017,7 @@
 	const EVENT_3E5
 	const EVENT_3E6
 	const EVENT_3E7
-; Trainer Flags
+; Trainer flags
 ; Swimmer F
 	const EVENT_BEAT_SWIMMERF_ELAINE
 	const EVENT_BEAT_SWIMMERF_PAULA
@@ -1530,7 +1532,7 @@
 	const EVENT_BEAT_ELITE_4_BRUNO
 	const EVENT_BEAT_ELITE_4_KAREN
 	const EVENT_BEAT_CHAMPION_LANCE
-; New to Crystal
+; Crystal-exclusive trainer flags
 	const EVENT_BEAT_COOLTRAINERM_DARIN
 	const EVENT_BEAT_COOLTRAINERF_CARA
 	const EVENT_BEAT_TWINS_LEA_AND_PIA
@@ -1663,10 +1665,11 @@
 	const EVENT_63D
 	const EVENT_63E
 	const EVENT_63F
-; Sprite visibility: When these events are cleared, the sprite becomes visible; when set, the sprite is hidden.
+; Sprite visibility flags
+; When these events are cleared, the sprite becomes visible; when set, the sprite is hidden.
 ; The map script command macros `disappear` and `appear` set/clear these flags and immediately apply the effect on visibility.
 ; The map script command macros `setevent` and `clearevent` set/clear these flags, and their effects will be seen when the map is reloaded.
-; Johto items: 0x640
+; Johto itemballs
 	const EVENT_CYNDAQUIL_POKEBALL_IN_ELMS_LAB
 	const EVENT_TOTODILE_POKEBALL_IN_ELMS_LAB
 	const EVENT_CHIKORITA_POKEBALL_IN_ELMS_LAB
@@ -1986,6 +1989,7 @@
 	const EVENT_MT_MOON_RIVAL
 	const EVENT_INDIGO_PLATEAU_POKECENTER_RIVAL
 	const EVENT_TELEPORT_GUY
+; Kanto itemballs
 	const EVENT_PICKED_UP_FOCUS_BAND
 	const EVENT_ROCK_TUNNEL_1F_ELIXER
 	const EVENT_ROCK_TUNNEL_1F_TM_STEEL_WING
--- a/constants/gfx_constants.asm
+++ b/constants/gfx_constants.asm
@@ -1,4 +1,3 @@
 LEN_2BPP_TILE EQU 16
 LEN_1BPP_TILE EQU 8
 TILES_PER_FRAME EQU 6
-TILESIZE EQU $10
--- a/constants/item_constants.asm
+++ b/constants/item_constants.asm
@@ -1,3 +1,9 @@
+; item ids
+; indexes for:
+; - ItemAttributes (see items/item_attributes.asm)
+; - ItemDescriptions (see items/item_descriptions.asm)
+; - ItemEffects (see items/item_effects.asm)
+; - ItemNames (see items/item_names.asm)
 	const_def
 	const NO_ITEM      ; $00
 	const MASTER_BALL  ; $01
@@ -243,7 +249,7 @@
 	add_tm FIRE_PUNCH   ; $F0
 	add_tm FURY_CUTTER  ; $F1
 	add_tm NIGHTMARE    ; $F2
-NUM_TMS = const_value - TM01 - 2
+NUM_TMS = const_value - TM01 - 2 ; discount ITEM_C3 and ITEM_DC
 
 	add_hm CUT          ; $F3
 	add_hm FLY          ; $F4
@@ -253,27 +259,36 @@
 	add_hm WHIRLPOOL    ; $F8
 	add_hm WATERFALL    ; $F9
 NUM_HMS = const_value - HM01
-	const HM_08         ; $FA
+	const ITEM_FA       ; $FA
 
 	add_mt FLAMETHROWER
 	add_mt THUNDERBOLT
 	add_mt ICE_BEAM
 
-ITEM_FROM_MEM EQU $ff
+ITEM_FROM_MEM EQU $FF
 
-
 ; leftovers from red
-SAFARI_BALL    EQU  8 ; MOON_STONE
-MOON_STONE_RED EQU 10 ; BURN_HEAL
-FULL_HEAL_RED  EQU 52 ; X_SPEED
-MAIL_MAX_LENGTH EQU $20
+SAFARI_BALL    EQU $08 ; MOON_STONE
+MOON_STONE_RED EQU $0A ; BURN_HEAL
+FULL_HEAL_RED  EQU $34 ; X_SPEED
 
-; pockets
+; mail
+MAIL_MSG_LENGTH    EQU $20
+MAILBOX_CAPACITY   EQU 10
+MAIL_STRUCT_LENGTH EQU $2f ; mailmsg struct
+
+; pack pockets
 ITEM     EQU 1
 KEY_ITEM EQU 2
 BALL     EQU 3
 TM_HM    EQU 4
 
+; pack pocket sizes
+MAX_ITEMS     EQU 20
+MAX_KEY_ITEMS EQU 25
+MAX_BALLS     EQU 12
+MAX_PC_ITEMS  EQU 50
+
 ; item actions
 CANT_SELECT EQU 1 << 6
 CANT_TOSS   EQU 1 << 7
@@ -356,6 +371,7 @@
 	const HELD_78
 	const HELD_FOCUS_BAND
 
+; item_attribute struct members (see items/item_attributes.asm)
 	const_def
 	const ITEMATTR_PRICE
 	const ITEMATTR_PRICE_HI
@@ -366,11 +382,13 @@
 	const ITEMATTR_HELP
 NUM_ITEMATTRS EQU const_value
 
-ITEMMENU_NOUSE              EQU 0
-ITEMMENU_CURRENT            EQU 4
-ITEMMENU_PARTY              EQU 5
-ITEMMENU_CLOSE              EQU 6
+; item menu types
+ITEMMENU_NOUSE   EQU 0
+ITEMMENU_CURRENT EQU 4
+ITEMMENU_PARTY   EQU 5
+ITEMMENU_CLOSE   EQU 6
 
+; mart types (see engine/mart.asm)
 	const_def
 	const MARTTYPE_STANDARD
 	const MARTTYPE_BITTER
@@ -378,6 +396,7 @@
 	const MARTTYPE_PHARMACY
 	const MARTTYPE_ROOFTOP
 
+; Marts indexes (see items/marts.asm)
 	const_def
 	const MART_CHERRYGROVE
 	const MART_CHERRYGROVE_DEX
@@ -414,7 +433,8 @@
 	const MART_INDIGO_PLATEAU
 	const MART_UNDERGROUND
 
-; PartyMenuActionText
+; PartyMenuActionText values
+; GetPartyMenuTilemapPointers arguments (see engine/party_menu.asm)
 	const_def
 	const PARTYMENUACTION_CHOOSE_POKEMON
 	const PARTYMENUACTION_HEALING_ITEM
@@ -426,7 +446,7 @@
 	const PARTYMENUACTION_GIVE_MON_FEMALE ; unused
 	const PARTYMENUACTION_GIVE_ITEM
 	const PARTYMENUACTION_MOBILE ; mobile
-
+; PrintPartyMenuActionText arguments (see engine/party_menu.asm)
 const_value set $f0
 	const PARTYMENUTEXT_HEAL_PSN
 	const PARTYMENUTEXT_HEAL_BRN
--- a/constants/landmark_constants.asm
+++ b/constants/landmark_constants.asm
@@ -1,6 +1,7 @@
-
+; Landmarks indexes (see engine/landmarks.asm)
 	const_def
 
+; Johto landmarks
 	const SPECIAL_MAP       ; 00
 	const NEW_BARK_TOWN     ; 01
 	const ROUTE_29          ; 02
@@ -50,7 +51,6 @@
 	const SILVER_CAVE       ; 2e
 
 KANTO_LANDMARK EQU const_value
-
 	const PALLET_TOWN       ; 2f
 	const ROUTE_1           ; 30
 	const VIRIDIAN_CITY     ; 31
--- a/constants/map_constants.asm
+++ b/constants/map_constants.asm
@@ -5,7 +5,13 @@
 MAP_NONE   EQU 0
 
 ; map group ids
+; `newgroup` indexes are for:
+; - MapGroupPointers (see maps/map_headers.asm)
+; - OutdoorSprites (see engine/overworld.asm)
+; - MapGroupRoofs (see tilesets/roofs.asm)
+; `mapgroup` indexes are for the sub-tables of MapGroupPointers (see maps/map_headers.asm)
 	const_def
+
 	newgroup                                                    ;  1
 
 	mapgroup OLIVINE_POKECENTER_1F,                       4,  5 ;  1
@@ -473,26 +479,42 @@
 	mapgroup ROUTE_31_VIOLET_GATE,                        4,  5 ; 11
 
 
-; elevator floors
+; map permissions (wPermission)
+const_value SET 1
+	const TOWN
+	const ROUTE
+	const INDOOR
+	const CAVE
+	const PERM_5
+	const GATE
+	const DUNGEON
 
+; map palettes (wPermission)
 	const_def
-	const _B4F
-	const _B3F
-	const _B2F
-	const _B1F
-	const _1F
-	const _2F
-	const _3F
-	const _4F
-	const _5F
-	const _6F
-	const _7F
-	const _8F
-	const _9F
-	const _10F
-	const _11F
-	const _ROOF
+	const PALETTE_AUTO
+	const PALETTE_DAY
+	const PALETTE_NITE
+	const PALETTE_MORN
+	const PALETTE_DARK
 
+; fish groups 
+	const_def
+	const FISHGROUP_NONE
+	const FISHGROUP_SHORE
+	const FISHGROUP_OCEAN
+	const FISHGROUP_LAKE
+	const FISHGROUP_POND
+	const FISHGROUP_DRATINI
+	const FISHGROUP_QWILFISH_SWARM
+	const FISHGROUP_REMORAID_SWARM
+	const FISHGROUP_GYARADOS
+	const FISHGROUP_DRATINI_2
+	const FISHGROUP_WHIRL_ISLANDS
+	const FISHGROUP_QWILFISH
+	const FISHGROUP_REMORAID
+	const FISHGROUP_QWILFISH_NO_SWARM
+
+
 ; connection directions
 	const_def
 	const EAST_F
@@ -500,6 +522,7 @@
 	const SOUTH_F
 	const NORTH_F
 
+; MapConnections
 	const_def
 	shift_const EAST
 	shift_const WEST
@@ -506,17 +529,8 @@
 	shift_const SOUTH
 	shift_const NORTH
 
-; permissions
-const_value SET 1
-	const TOWN
-	const ROUTE
-	const INDOOR
-	const CAVE
-	const PERM_5
-	const GATE
-	const DUNGEON
 
-; object struct
+; object_struct members (see macros/wram.asm)
 	const_def
 	const OBJECT_SPRITE              ; 00
 	const OBJECT_MAP_OBJECT_INDEX    ; 01
@@ -553,7 +567,7 @@
 	const OBJECT_RANGE               ; 20
 ; 33-39 are not used
 
-; map object struct
+; map_object struct members (see macros/wram.asm)
 	const_def
 	const MAPOBJECT_OBJECT_STRUCT_ID ; 0
 	const MAPOBJECT_SPRITE ; 1
@@ -576,46 +590,25 @@
 MAPOBJECT_SCREEN_HEIGHT EQU 11
 MAPOBJECT_SCREEN_WIDTH EQU 12
 
+; object_struct OBJECT_FACING values
 OW_DOWN  EQU DOWN  << 2
 OW_UP    EQU UP    << 2
 OW_LEFT  EQU LEFT  << 2
 OW_RIGHT EQU RIGHT << 2
 
-	const_def
-	const EMOTE_SHOCK ; 0
-	const EMOTE_QUESTION ; 1
-	const EMOTE_HAPPY ; 2
-	const EMOTE_SAD ; 3
-	const EMOTE_HEART ; 4
-	const EMOTE_BOLT ; 5
-	const EMOTE_SLEEP ; 6
-	const EMOTE_FISH ; 7
-	const EMOTE_SHADOW ; 8
-	const EMOTE_ROD ; 9
-	const EMOTE_BOULDER_DUST ; 10
-	const EMOTE_0B ; 11
-EMOTE_MEM EQU -1
+; object_struct OBJECT_FLAGS1 bit flags
+INVISIBLE    EQU 0
+FIXED_FACING EQU 2
+SLIDING      EQU 3
+EMOTE_OBJECT EQU 7
 
-	const_def
-	const SIGNPOST_READ
-	const SIGNPOST_UP
-	const SIGNPOST_DOWN
-	const SIGNPOST_RIGHT
-	const SIGNPOST_LEFT
-	const SIGNPOST_IFSET
-	const SIGNPOST_IFNOTSET
-	const SIGNPOST_ITEM
-	const SIGNPOST_COPY
 
-; I'm relocating spawn constants here, so that they can be used anywhere in the disassembly.
-
-
+; SpawnPoints indexes (see engine/spawn_points.asm)
 const_value = -1
 	const SPAWN_N_A
-
 	const SPAWN_HOME
 	const SPAWN_DEBUG
-
+; kanto
 	const SPAWN_PALLET
 	const SPAWN_VIRIDIAN
 	const SPAWN_PEWTER
@@ -628,7 +621,7 @@
 	const SPAWN_FUCHSIA
 	const SPAWN_CINNABAR
 	const SPAWN_INDIGO
-
+; johto
 	const SPAWN_NEW_BARK
 	const SPAWN_CHERRYGROVE
 	const SPAWN_VIOLET
@@ -645,18 +638,21 @@
 	const SPAWN_FAST_SHIP
 NUM_SPAWNS EQU const_value
 
+
+; TryReadSign arguments (see engine/events.asm)
 	const_def
-	const PALETTE_AUTO
-	const PALETTE_DAY
-	const PALETTE_NITE
-	const PALETTE_MORN
-	const PALETTE_DARK
+	const SIGNPOST_READ
+	const SIGNPOST_UP
+	const SIGNPOST_DOWN
+	const SIGNPOST_RIGHT
+	const SIGNPOST_LEFT
+	const SIGNPOST_IFSET
+	const SIGNPOST_IFNOTSET
+	const SIGNPOST_ITEM
+	const SIGNPOST_COPY
 
-INVISIBLE    EQU 0
-FIXED_FACING EQU 2
-SLIDING      EQU 3
-EMOTE_OBJECT EQU 7
-
+; person_event types
+; TryObjectEvent arguments (see engine/events.asm)
 	const_def
 	const PERSONTYPE_SCRIPT
 	const PERSONTYPE_ITEMBALL
@@ -666,7 +662,24 @@
 	const PERSONTYPE_5
 	const PERSONTYPE_6
 
-; fruit trees
+
+; EmotesPointers indexes (see engine/overworld.asm)
+	const_def
+	const EMOTE_SHOCK ; 0
+	const EMOTE_QUESTION ; 1
+	const EMOTE_HAPPY ; 2
+	const EMOTE_SAD ; 3
+	const EMOTE_HEART ; 4
+	const EMOTE_BOLT ; 5
+	const EMOTE_SLEEP ; 6
+	const EMOTE_FISH ; 7
+	const EMOTE_SHADOW ; 8
+	const EMOTE_ROD ; 9
+	const EMOTE_BOULDER_DUST ; 10
+	const EMOTE_GRASS_RUSTLE ; 11
+EMOTE_MEM EQU -1
+
+; FruitTreeItems indexes (see engine/fruit_trees.asm)
 const_value SET 1
 	const FRUITTREE_ROUTE_29      ; 01
 	const FRUITTREE_ROUTE_30_1    ; 02
@@ -700,6 +713,27 @@
 	const FRUITTREE_FUCHSIA_CITY  ; 1e
 NUM_FRUIT_TREES EQU const_value +- 1
 
+; elevator floors
+; used by `elevfloor`
+	const_def
+	const _B4F
+	const _B3F
+	const _B2F
+	const _B1F
+	const _1F
+	const _2F
+	const _3F
+	const _4F
+	const _5F
+	const _6F
+	const _7F
+	const _8F
+	const _9F
+	const _10F
+	const _11F
+	const _ROOF
+
+; command queue members
 CMDQUEUE_TYPE  EQU 0
 CMDQUEUE_ADDR  EQU 1
 CMDQUEUE_03    EQU 3
@@ -708,4 +742,9 @@
 CMDQUEUE_ENTRY_SIZE EQU 6
 CMDQUEUE_CAPACITY EQU 4
 
+; command queue types
 CMDQUEUE_STONETABLE EQU 2
+
+; see engine/overworld.asm
+MAX_OUTDOOR_SPRITES EQU 23
+SPRITE_GFX_LIST_CAPACITY EQU $20
--- a/constants/map_setup_constants.asm
+++ b/constants/map_setup_constants.asm
@@ -1,3 +1,5 @@
+; hMapEntryMethod values
+; MapSetupScripts indexes (see engine/map_setup.asm)
 const_value SET $f1
 	const MAPSETUP_WARP
 	const MAPSETUP_CONTINUE
@@ -12,6 +14,7 @@
 	const MAPSETUP_BADWARP
 	const MAPSETUP_FLY
 
+; callback types
 const_value SET 1
 	const MAPCALLBACK_TILES
 	const MAPCALLBACK_OBJECTS
@@ -19,9 +22,10 @@
 	const MAPCALLBACK_SPRITES
 	const MAPCALLBACK_NEWMAP
 
-; Command descriptions from Condensation water's scripting compendium.
+; MapSetupCommands indexes (see engine/map_setup.asm)
+; Names taken from Condensation water's scripting compendium
+; https://hax.iimarck.us/files/scriptingcodes_eng.htm
 	const_def
-
 	const map_lcd_on              ; 00
 	const map_lcd_off             ; 01
 	const map_sound_off           ; 02
--- a/constants/misc_constants.asm
+++ b/constants/misc_constants.asm
@@ -1,21 +1,32 @@
-PARTY_LENGTH EQU 6
+; Boolean checks
+FALSE EQU 0
+TRUE  EQU 1
 
-MAX_ITEMS     EQU 20
-MAX_BALLS     EQU 12
-MAX_KEY_ITEMS EQU 25
-MAX_PC_ITEMS  EQU 50
+; genders
+MALE   EQU 0
+FEMALE EQU 1
 
-; strings
+; FlagAction arguments (see home/flag.asm)
+RESET_FLAG EQU 0
+SET_FLAG   EQU 1
+CHECK_FLAG EQU 2
+
+; GetHPPal return values (see home.asm)
+HP_GREEN  EQU 0
+HP_YELLOW EQU 1
+HP_RED    EQU 2
+
+
+; name lengths
+NAME_LENGTH        EQU 11
 PLAYER_NAME_LENGTH EQU 8
-BOX_NAME_LENGTH EQU 9
-PKMN_NAME_LENGTH EQU 11
-MOVE_NAME_LENGTH EQU 13
-ITEM_NAME_LENGTH EQU 13
+BOX_NAME_LENGTH    EQU 9
+PKMN_NAME_LENGTH   EQU 11
+MOVE_NAME_LENGTH   EQU 13
+ITEM_NAME_LENGTH   EQU 13
 TRAINER_CLASS_NAME_LENGTH EQU 13
-NAME_LENGTH EQU 11
-LV_CHAR EQU $6e
 
-; GetName types
+; GetName types (see home.asm)
 PKMN_NAME     EQU 1
 MOVE_NAME     EQU 2
 ; dummied out EQU 3
@@ -25,20 +36,11 @@
 TRAINER_NAME  EQU 7
 ; broken ptr  EQU 8
 
-; hp
-HP_GREEN  EQU 0
-HP_YELLOW EQU 1
-HP_RED    EQU 2
 
 ; boxes
 MONS_PER_BOX EQU 20
 NUM_BOXES    EQU 14
 
-; mail
-MAIL_STRUCT_LENGTH EQU $2f
-MAILBOX_CAPACITY   EQU 10
-MAIL_MSG_LENGTH    EQU $20
-
 ; hall of fame
 HOF_MON_LENGTH = 1 + 2 + 2 + 1 + (PKMN_NAME_LENGTH +- 1) ; species, id, dvs, level, nick
 HOF_LENGTH = 1 + HOF_MON_LENGTH * PARTY_LENGTH + 1 ; win count, party, terminator
@@ -45,15 +47,6 @@
 NUM_HOF_TEAMS = 30
 
 
-; flag manipulation
-RESET_FLAG EQU 0
-SET_FLAG   EQU 1
-CHECK_FLAG EQU 2
-
-; Boolean checks
-FALSE EQU 0
-TRUE  EQU 1
-
 ; joypad
 
 	const_def
@@ -82,7 +75,9 @@
 R_DPAD     EQU %00100000
 R_BUTTONS  EQU %00010000
 
+
 ; screen
+
 HP_BAR_LENGTH EQU 6
 HP_BAR_LENGTH_PX EQU HP_BAR_LENGTH * 8
 EXP_BAR_LENGTH EQU 8
@@ -101,52 +96,8 @@
 TILE_WIDTH EQU 8
 
 
-; movement
-STEP_SLOW EQU 0
-STEP_WALK EQU 1
-STEP_BIKE EQU 2
-STEP_LEDGE EQU 3
-STEP_ICE EQU 4
-STEP_TURN EQU 5
-STEP_BACK_LEDGE EQU 6
-STEP_WALK_IN_PLACE EQU 7
+; printing text
 
-
-; ai
-CONTEXT_USE_F      EQU 6
-UNKNOWN_USE_F      EQU 5
-ALWAYS_USE_F       EQU 4
-SWITCH_SOMETIMES_F EQU 2
-SWITCH_RARELY_F    EQU 1
-SWITCH_OFTEN_F     EQU 0
-
-CONTEXT_USE        EQU 1 << CONTEXT_USE_F
-UNKNOWN_USE        EQU 1 << UNKNOWN_USE_F
-ALWAYS_USE         EQU 1 << ALWAYS_USE_F
-SWITCH_SOMETIMES   EQU 1 << SWITCH_SOMETIMES_F
-SWITCH_RARELY      EQU 1 << SWITCH_RARELY_F
-SWITCH_OFTEN       EQU 1 << SWITCH_OFTEN_F
-SPRITE_GFX_LIST_CAPACITY EQU $20
-
-const_value = 1
-	const MOM_ITEM
-	const MOM_DOLL
-
-BATTLETOWER_NROFPKMNS EQU 3
-BATTLETOWER_TRAINERDATALENGTH EQU $24
-BATTLETOWER_NROFTRAINERS EQU 7
-BATTLETOWER_NRMONSPERLEVELBRACKET EQU BATTLETOWER_NROFPKMNS * BATTLETOWER_NROFTRAINERS
-BATTLE_TOWER_STRUCT_LENGTH EQU $e0 ; NAME_LENGTH + 3 * (PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH) + BATTLETOWER_TRAINERDATALENGTH
-
-NUM_WILDMONS_PER_AREA_TIME_OF_DAY EQU 7
-WILDMON_GRASS_STRUCTURE_LENGTH EQU 2 + 3 * (1 + 2 * NUM_WILDMONS_PER_AREA_TIME_OF_DAY)
-
-MOBILE_EVENT_OBJECT_GS_BALL EQU $b
-MOBILE_LOGIN_PASSWORD_LENGTH EQU 17
-
-MALE EQU 0
-FEMALE EQU 1
-
 PRINTNUM_MONEY_F        EQU 5
 PRINTNUM_RIGHTALIGN_F   EQU 6
 PRINTNUM_LEADINGZEROS_F EQU 7
@@ -155,6 +106,20 @@
 PRINTNUM_RIGHTALIGN     EQU 1 << PRINTNUM_RIGHTALIGN_F
 PRINTNUM_LEADINGZEROS   EQU 1 << PRINTNUM_LEADINGZEROS_F
 
+
+; movement
+	const_def
+	const STEP_SLOW          ; 0
+	const STEP_WALK          ; 1
+	const STEP_BIKE          ; 2
+	const STEP_LEDGE         ; 3
+	const STEP_ICE           ; 4
+	const STEP_TURN          ; 5
+	const STEP_BACK_LEDGE    ; 6
+	const STEP_WALK_IN_PLACE ; 7
+
+
+; ChangeHappiness arguments (see event/happiness_egg.asm)
 const_value = 1
 	const HAPPINESS_GAINLEVEL         ; 01
 	const HAPPINESS_USEDITEM          ; 02
@@ -178,45 +143,23 @@
 
 
 	const_def
-	const LINK_NULL
-	const LINK_TIMECAPSULE
-	const LINK_TRADECENTER
-	const LINK_COLOSSEUM
-	const LINK_MOBILE
+	const LINK_NULL        ; 0
+	const LINK_TIMECAPSULE ; 1
+	const LINK_TRADECENTER ; 2
+	const LINK_COLOSSEUM   ; 3
+	const LINK_MOBILE      ; 4
 
 SERIAL_TIMECAPSULE EQU $60
 SERIAL_TRADECENTER EQU $70
 SERIAL_BATTLE      EQU $80
 
+
 HMENURETURN_SCRIPT EQU %10000000
 HMENURETURN_ASM    EQU %11111111
 
-NUM_MON_SUBMENU_ITEMS EQU 8
 
+; MobileEZChatCategoryPointers indexes (see misc/fixed_words.asm)
 	const_def
-	const ZEPHYRBADGE
-	const HIVEBADGE
-	const PLAINBADGE
-	const FOGBADGE
-	const MINERALBADGE
-	const STORMBADGE
-	const GLACIERBADGE
-	const RISINGBADGE
-NUM_JOHTO_BADGES EQU const_value
-	const_def
-	const BOULDERBADGE
-	const CASCADEBADGE
-	const THUNDERBADGE
-	const RAINBOWBADGE
-	const SOULBADGE
-	const MARSHBADGE
-	const VOLCANOBADGE
-	const EARTHBADGE
-NUM_KANTO_BADGES EQU const_value
-NUM_BADGES EQU NUM_JOHTO_BADGES + NUM_KANTO_BADGES
-NUM_KANA EQU $2d
-
-	const_def
 	const EZCHAT_POKEMON
 	const EZCHAT_TYPES
 	const EZCHAT_GREETINGS
@@ -233,30 +176,6 @@
 	const EZCHAT_FAREWELLS
 	const EZCHAT_THISANDTHAT
 
-SWARM_DUNSPARCE EQU 0
-SWARM_YANMA     EQU 1
+NUM_KANA EQU 45 ; length of SortedPokemon table (see misc/fixed_words.asm)
 
-FISHSWARM_QWILFISH EQU 1
-FISHSWARM_REMORAID EQU 2
-
-	const_def
-	const FISHGROUP_NONE
-	const FISHGROUP_SHORE
-	const FISHGROUP_OCEAN
-	const FISHGROUP_LAKE
-	const FISHGROUP_POND
-	const FISHGROUP_DRATINI
-	const FISHGROUP_QWILFISH_SWARM
-	const FISHGROUP_REMORAID_SWARM
-	const FISHGROUP_GYARADOS
-	const FISHGROUP_DRATINI_2
-	const FISHGROUP_WHIRL_ISLANDS
-	const FISHGROUP_QWILFISH
-	const FISHGROUP_REMORAID
-	const FISHGROUP_QWILFISH_NO_SWARM
-
-INIT_ENEMYOT_LIST    EQU 1
-INIT_BAG_ITEM_LIST   EQU 2
-INIT_OTHER_ITEM_LIST EQU 3
-INIT_PLAYEROT_LIST   EQU 4
-INIT_MON_LIST        EQU 5
+MOBILE_LOGIN_PASSWORD_LENGTH EQU 17
--- a/constants/move_constants.asm
+++ b/constants/move_constants.asm
@@ -1,291 +1,293 @@
-
+; move ids
+; indexes for:
+; - MoveDescriptions (see battle/moves/move_descriptions.asm)
+; - Moves (see battle/moves/moves.asm)
+; - MoveNames (see battle/move_names.asm)
+; - BattleAnimations (see battle/anims.asm)
 	const_def
-	const NO_MOVE      ; $00
-	const POUND        ; $01
-	const KARATE_CHOP  ; $02
-	const DOUBLESLAP   ; $03
-	const COMET_PUNCH  ; $04
-	const MEGA_PUNCH   ; $05
-	const PAY_DAY      ; $06
-	const FIRE_PUNCH   ; $07
-	const ICE_PUNCH    ; $08
-	const THUNDERPUNCH ; $09
-	const SCRATCH      ; $0a
-	const VICEGRIP     ; $0b
-	const GUILLOTINE   ; $0c
-	const RAZOR_WIND   ; $0d
-	const SWORDS_DANCE ; $0e
-	const CUT          ; $0f
-	const GUST         ; $10
-	const WING_ATTACK  ; $11
-	const WHIRLWIND    ; $12
-	const FLY          ; $13
-	const BIND         ; $14
-	const SLAM         ; $15
-	const VINE_WHIP    ; $16
-	const STOMP        ; $17
-	const DOUBLE_KICK  ; $18
-	const MEGA_KICK    ; $19
-	const JUMP_KICK    ; $1a
-	const ROLLING_KICK ; $1b
-	const SAND_ATTACK  ; $1c
-	const HEADBUTT     ; $1d
-	const HORN_ATTACK  ; $1e
-	const FURY_ATTACK  ; $1f
-	const HORN_DRILL   ; $20
-	const TACKLE       ; $21
-	const BODY_SLAM    ; $22
-	const WRAP         ; $23
-	const TAKE_DOWN    ; $24
-	const THRASH       ; $25
-	const DOUBLE_EDGE  ; $26
-	const TAIL_WHIP    ; $27
-	const POISON_STING ; $28
-	const TWINEEDLE    ; $29
-	const PIN_MISSILE  ; $2a
-	const LEER         ; $2b
-	const BITE         ; $2c
-	const GROWL        ; $2d
-	const ROAR         ; $2e
-	const SING         ; $2f
-	const SUPERSONIC   ; $30
-	const SONICBOOM    ; $31
-	const DISABLE      ; $32
-	const ACID         ; $33
-	const EMBER        ; $34
-	const FLAMETHROWER ; $35
-	const MIST         ; $36
-	const WATER_GUN    ; $37
-	const HYDRO_PUMP   ; $38
-	const SURF         ; $39
-	const ICE_BEAM     ; $3a
-	const BLIZZARD     ; $3b
-	const PSYBEAM      ; $3c
-	const BUBBLEBEAM   ; $3d
-	const AURORA_BEAM  ; $3e
-	const HYPER_BEAM   ; $3f
-	const PECK         ; $40
-	const DRILL_PECK   ; $41
-	const SUBMISSION   ; $42
-	const LOW_KICK     ; $43
-	const COUNTER      ; $44
-	const SEISMIC_TOSS ; $45
-	const STRENGTH     ; $46
-	const ABSORB       ; $47
-	const MEGA_DRAIN   ; $48
-	const LEECH_SEED   ; $49
-	const GROWTH       ; $4a
-	const RAZOR_LEAF   ; $4b
-	const SOLARBEAM    ; $4c
-	const POISONPOWDER ; $4d
-	const STUN_SPORE   ; $4e
-	const SLEEP_POWDER ; $4f
-	const PETAL_DANCE  ; $50
-	const STRING_SHOT  ; $51
-	const DRAGON_RAGE  ; $52
-	const FIRE_SPIN    ; $53
-	const THUNDERSHOCK ; $54
-	const THUNDERBOLT  ; $55
-	const THUNDER_WAVE ; $56
-	const THUNDER      ; $57
-	const ROCK_THROW   ; $58
-	const EARTHQUAKE   ; $59
-	const FISSURE      ; $5a
-	const DIG          ; $5b
-	const TOXIC        ; $5c
-	const CONFUSION    ; $5d
-	const PSYCHIC_M    ; $5e
-	const HYPNOSIS     ; $5f
-	const MEDITATE     ; $60
-	const AGILITY      ; $61
-	const QUICK_ATTACK ; $62
-	const RAGE         ; $63
-	const TELEPORT     ; $64
-	const NIGHT_SHADE  ; $65
-	const MIMIC        ; $66
-	const SCREECH      ; $67
-	const DOUBLE_TEAM  ; $68
-	const RECOVER      ; $69
-	const HARDEN       ; $6a
-	const MINIMIZE     ; $6b
-	const SMOKESCREEN  ; $6c
-	const CONFUSE_RAY  ; $6d
-	const WITHDRAW     ; $6e
-	const DEFENSE_CURL ; $6f
-	const BARRIER      ; $70
-	const LIGHT_SCREEN ; $71
-	const HAZE         ; $72
-	const REFLECT      ; $73
-	const FOCUS_ENERGY ; $74
-	const BIDE         ; $75
-	const METRONOME    ; $76
-	const MIRROR_MOVE  ; $77
-	const SELFDESTRUCT ; $78
-	const EGG_BOMB     ; $79
-	const LICK         ; $7a
-	const SMOG         ; $7b
-	const SLUDGE       ; $7c
-	const BONE_CLUB    ; $7d
-	const FIRE_BLAST   ; $7e
-	const WATERFALL    ; $7f
-	const CLAMP        ; $80
-	const SWIFT        ; $81
-	const SKULL_BASH   ; $82
-	const SPIKE_CANNON ; $83
-	const CONSTRICT    ; $84
-	const AMNESIA      ; $85
-	const KINESIS      ; $86
-	const SOFTBOILED   ; $87
-	const HI_JUMP_KICK ; $88
-	const GLARE        ; $89
-	const DREAM_EATER  ; $8a
-	const POISON_GAS   ; $8b
-	const BARRAGE      ; $8c
-	const LEECH_LIFE   ; $8d
-	const LOVELY_KISS  ; $8e
-	const SKY_ATTACK   ; $8f
-	const TRANSFORM    ; $90
-	const BUBBLE       ; $91
-	const DIZZY_PUNCH  ; $92
-	const SPORE        ; $93
-	const FLASH        ; $94
-	const PSYWAVE      ; $95
-	const SPLASH       ; $96
-	const ACID_ARMOR   ; $97
-	const CRABHAMMER   ; $98
-	const EXPLOSION    ; $99
-	const FURY_SWIPES  ; $9a
-	const BONEMERANG   ; $9b
-	const REST         ; $9c
-	const ROCK_SLIDE   ; $9d
-	const HYPER_FANG   ; $9e
-	const SHARPEN      ; $9f
-	const CONVERSION   ; $a0
-	const TRI_ATTACK   ; $a1
-	const SUPER_FANG   ; $a2
-	const SLASH        ; $a3
-	const SUBSTITUTE   ; $a4
-	const STRUGGLE     ; $a5
-	const SKETCH       ; $a6
-	const TRIPLE_KICK  ; $a7
-	const THIEF        ; $a8
-	const SPIDER_WEB   ; $a9
-	const MIND_READER  ; $aa
-	const NIGHTMARE    ; $ab
-	const FLAME_WHEEL  ; $ac
-	const SNORE        ; $ad
-	const CURSE        ; $ae
-	const FLAIL        ; $af
-	const CONVERSION2  ; $b0
-	const AEROBLAST    ; $b1
-	const COTTON_SPORE ; $b2
-	const REVERSAL     ; $b3
-	const SPITE        ; $b4
-	const POWDER_SNOW  ; $b5
-	const PROTECT      ; $b6
-	const MACH_PUNCH   ; $b7
-	const SCARY_FACE   ; $b8
-	const FAINT_ATTACK ; $b9
-	const SWEET_KISS   ; $ba
-	const BELLY_DRUM   ; $bb
-	const SLUDGE_BOMB  ; $bc
-	const MUD_SLAP     ; $bd
-	const OCTAZOOKA    ; $be
-	const SPIKES       ; $bf
-	const ZAP_CANNON   ; $c0
-	const FORESIGHT    ; $c1
-	const DESTINY_BOND ; $c2
-	const PERISH_SONG  ; $c3
-	const ICY_WIND     ; $c4
-	const DETECT       ; $c5
-	const BONE_RUSH    ; $c6
-	const LOCK_ON      ; $c7
-	const OUTRAGE      ; $c8
-	const SANDSTORM    ; $c9
-	const GIGA_DRAIN   ; $ca
-	const ENDURE       ; $cb
-	const CHARM        ; $cc
-	const ROLLOUT      ; $cd
-	const FALSE_SWIPE  ; $ce
-	const SWAGGER      ; $cf
-	const MILK_DRINK   ; $d0
-	const SPARK        ; $d1
-	const FURY_CUTTER  ; $d2
-	const STEEL_WING   ; $d3
-	const MEAN_LOOK    ; $d4
-	const ATTRACT      ; $d5
-	const SLEEP_TALK   ; $d6
-	const HEAL_BELL    ; $d7
-	const RETURN       ; $d8
-	const PRESENT      ; $d9
-	const FRUSTRATION  ; $da
-	const SAFEGUARD    ; $db
-	const PAIN_SPLIT   ; $dc
-	const SACRED_FIRE  ; $dd
-	const MAGNITUDE    ; $de
-	const DYNAMICPUNCH ; $df
-	const MEGAHORN     ; $e0
-	const DRAGONBREATH ; $e1
-	const BATON_PASS   ; $e2
-	const ENCORE       ; $e3
-	const PURSUIT      ; $e4
-	const RAPID_SPIN   ; $e5
-	const SWEET_SCENT  ; $e6
-	const IRON_TAIL    ; $e7
-	const METAL_CLAW   ; $e8
-	const VITAL_THROW  ; $e9
-	const MORNING_SUN  ; $ea
-	const SYNTHESIS    ; $eb
-	const MOONLIGHT    ; $ec
-	const HIDDEN_POWER ; $ed
-	const CROSS_CHOP   ; $ee
-	const TWISTER      ; $ef
-	const RAIN_DANCE   ; $f0
-	const SUNNY_DAY    ; $f1
-	const CRUNCH       ; $f2
-	const MIRROR_COAT  ; $f3
-	const PSYCH_UP     ; $f4
-	const EXTREMESPEED ; $f5
-	const ANCIENTPOWER ; $f6
-	const SHADOW_BALL  ; $f7
-	const FUTURE_SIGHT ; $f8
-	const ROCK_SMASH   ; $f9
-	const WHIRLPOOL    ; $fa
-	const BEAT_UP      ; $fb
+	const NO_MOVE      ; 00
+	const POUND        ; 01
+	const KARATE_CHOP  ; 02
+	const DOUBLESLAP   ; 03
+	const COMET_PUNCH  ; 04
+	const MEGA_PUNCH   ; 05
+	const PAY_DAY      ; 06
+	const FIRE_PUNCH   ; 07
+	const ICE_PUNCH    ; 08
+	const THUNDERPUNCH ; 09
+	const SCRATCH      ; 0a
+	const VICEGRIP     ; 0b
+	const GUILLOTINE   ; 0c
+	const RAZOR_WIND   ; 0d
+	const SWORDS_DANCE ; 0e
+	const CUT          ; 0f
+	const GUST         ; 10
+	const WING_ATTACK  ; 11
+	const WHIRLWIND    ; 12
+	const FLY          ; 13
+	const BIND         ; 14
+	const SLAM         ; 15
+	const VINE_WHIP    ; 16
+	const STOMP        ; 17
+	const DOUBLE_KICK  ; 18
+	const MEGA_KICK    ; 19
+	const JUMP_KICK    ; 1a
+	const ROLLING_KICK ; 1b
+	const SAND_ATTACK  ; 1c
+	const HEADBUTT     ; 1d
+	const HORN_ATTACK  ; 1e
+	const FURY_ATTACK  ; 1f
+	const HORN_DRILL   ; 20
+	const TACKLE       ; 21
+	const BODY_SLAM    ; 22
+	const WRAP         ; 23
+	const TAKE_DOWN    ; 24
+	const THRASH       ; 25
+	const DOUBLE_EDGE  ; 26
+	const TAIL_WHIP    ; 27
+	const POISON_STING ; 28
+	const TWINEEDLE    ; 29
+	const PIN_MISSILE  ; 2a
+	const LEER         ; 2b
+	const BITE         ; 2c
+	const GROWL        ; 2d
+	const ROAR         ; 2e
+	const SING         ; 2f
+	const SUPERSONIC   ; 30
+	const SONICBOOM    ; 31
+	const DISABLE      ; 32
+	const ACID         ; 33
+	const EMBER        ; 34
+	const FLAMETHROWER ; 35
+	const MIST         ; 36
+	const WATER_GUN    ; 37
+	const HYDRO_PUMP   ; 38
+	const SURF         ; 39
+	const ICE_BEAM     ; 3a
+	const BLIZZARD     ; 3b
+	const PSYBEAM      ; 3c
+	const BUBBLEBEAM   ; 3d
+	const AURORA_BEAM  ; 3e
+	const HYPER_BEAM   ; 3f
+	const PECK         ; 40
+	const DRILL_PECK   ; 41
+	const SUBMISSION   ; 42
+	const LOW_KICK     ; 43
+	const COUNTER      ; 44
+	const SEISMIC_TOSS ; 45
+	const STRENGTH     ; 46
+	const ABSORB       ; 47
+	const MEGA_DRAIN   ; 48
+	const LEECH_SEED   ; 49
+	const GROWTH       ; 4a
+	const RAZOR_LEAF   ; 4b
+	const SOLARBEAM    ; 4c
+	const POISONPOWDER ; 4d
+	const STUN_SPORE   ; 4e
+	const SLEEP_POWDER ; 4f
+	const PETAL_DANCE  ; 50
+	const STRING_SHOT  ; 51
+	const DRAGON_RAGE  ; 52
+	const FIRE_SPIN    ; 53
+	const THUNDERSHOCK ; 54
+	const THUNDERBOLT  ; 55
+	const THUNDER_WAVE ; 56
+	const THUNDER      ; 57
+	const ROCK_THROW   ; 58
+	const EARTHQUAKE   ; 59
+	const FISSURE      ; 5a
+	const DIG          ; 5b
+	const TOXIC        ; 5c
+	const CONFUSION    ; 5d
+	const PSYCHIC_M    ; 5e
+	const HYPNOSIS     ; 5f
+	const MEDITATE     ; 60
+	const AGILITY      ; 61
+	const QUICK_ATTACK ; 62
+	const RAGE         ; 63
+	const TELEPORT     ; 64
+	const NIGHT_SHADE  ; 65
+	const MIMIC        ; 66
+	const SCREECH      ; 67
+	const DOUBLE_TEAM  ; 68
+	const RECOVER      ; 69
+	const HARDEN       ; 6a
+	const MINIMIZE     ; 6b
+	const SMOKESCREEN  ; 6c
+	const CONFUSE_RAY  ; 6d
+	const WITHDRAW     ; 6e
+	const DEFENSE_CURL ; 6f
+	const BARRIER      ; 70
+	const LIGHT_SCREEN ; 71
+	const HAZE         ; 72
+	const REFLECT      ; 73
+	const FOCUS_ENERGY ; 74
+	const BIDE         ; 75
+	const METRONOME    ; 76
+	const MIRROR_MOVE  ; 77
+	const SELFDESTRUCT ; 78
+	const EGG_BOMB     ; 79
+	const LICK         ; 7a
+	const SMOG         ; 7b
+	const SLUDGE       ; 7c
+	const BONE_CLUB    ; 7d
+	const FIRE_BLAST   ; 7e
+	const WATERFALL    ; 7f
+	const CLAMP        ; 80
+	const SWIFT        ; 81
+	const SKULL_BASH   ; 82
+	const SPIKE_CANNON ; 83
+	const CONSTRICT    ; 84
+	const AMNESIA      ; 85
+	const KINESIS      ; 86
+	const SOFTBOILED   ; 87
+	const HI_JUMP_KICK ; 88
+	const GLARE        ; 89
+	const DREAM_EATER  ; 8a
+	const POISON_GAS   ; 8b
+	const BARRAGE      ; 8c
+	const LEECH_LIFE   ; 8d
+	const LOVELY_KISS  ; 8e
+	const SKY_ATTACK   ; 8f
+	const TRANSFORM    ; 90
+	const BUBBLE       ; 91
+	const DIZZY_PUNCH  ; 92
+	const SPORE        ; 93
+	const FLASH        ; 94
+	const PSYWAVE      ; 95
+	const SPLASH       ; 96
+	const ACID_ARMOR   ; 97
+	const CRABHAMMER   ; 98
+	const EXPLOSION    ; 99
+	const FURY_SWIPES  ; 9a
+	const BONEMERANG   ; 9b
+	const REST         ; 9c
+	const ROCK_SLIDE   ; 9d
+	const HYPER_FANG   ; 9e
+	const SHARPEN      ; 9f
+	const CONVERSION   ; a0
+	const TRI_ATTACK   ; a1
+	const SUPER_FANG   ; a2
+	const SLASH        ; a3
+	const SUBSTITUTE   ; a4
+	const STRUGGLE     ; a5
+	const SKETCH       ; a6
+	const TRIPLE_KICK  ; a7
+	const THIEF        ; a8
+	const SPIDER_WEB   ; a9
+	const MIND_READER  ; aa
+	const NIGHTMARE    ; ab
+	const FLAME_WHEEL  ; ac
+	const SNORE        ; ad
+	const CURSE        ; ae
+	const FLAIL        ; af
+	const CONVERSION2  ; b0
+	const AEROBLAST    ; b1
+	const COTTON_SPORE ; b2
+	const REVERSAL     ; b3
+	const SPITE        ; b4
+	const POWDER_SNOW  ; b5
+	const PROTECT      ; b6
+	const MACH_PUNCH   ; b7
+	const SCARY_FACE   ; b8
+	const FAINT_ATTACK ; b9
+	const SWEET_KISS   ; ba
+	const BELLY_DRUM   ; bb
+	const SLUDGE_BOMB  ; bc
+	const MUD_SLAP     ; bd
+	const OCTAZOOKA    ; be
+	const SPIKES       ; bf
+	const ZAP_CANNON   ; c0
+	const FORESIGHT    ; c1
+	const DESTINY_BOND ; c2
+	const PERISH_SONG  ; c3
+	const ICY_WIND     ; c4
+	const DETECT       ; c5
+	const BONE_RUSH    ; c6
+	const LOCK_ON      ; c7
+	const OUTRAGE      ; c8
+	const SANDSTORM    ; c9
+	const GIGA_DRAIN   ; ca
+	const ENDURE       ; cb
+	const CHARM        ; cc
+	const ROLLOUT      ; cd
+	const FALSE_SWIPE  ; ce
+	const SWAGGER      ; cf
+	const MILK_DRINK   ; d0
+	const SPARK        ; d1
+	const FURY_CUTTER  ; d2
+	const STEEL_WING   ; d3
+	const MEAN_LOOK    ; d4
+	const ATTRACT      ; d5
+	const SLEEP_TALK   ; d6
+	const HEAL_BELL    ; d7
+	const RETURN       ; d8
+	const PRESENT      ; d9
+	const FRUSTRATION  ; da
+	const SAFEGUARD    ; db
+	const PAIN_SPLIT   ; dc
+	const SACRED_FIRE  ; dd
+	const MAGNITUDE    ; de
+	const DYNAMICPUNCH ; df
+	const MEGAHORN     ; e0
+	const DRAGONBREATH ; e1
+	const BATON_PASS   ; e2
+	const ENCORE       ; e3
+	const PURSUIT      ; e4
+	const RAPID_SPIN   ; e5
+	const SWEET_SCENT  ; e6
+	const IRON_TAIL    ; e7
+	const METAL_CLAW   ; e8
+	const VITAL_THROW  ; e9
+	const MORNING_SUN  ; ea
+	const SYNTHESIS    ; eb
+	const MOONLIGHT    ; ec
+	const HIDDEN_POWER ; ed
+	const CROSS_CHOP   ; ee
+	const TWISTER      ; ef
+	const RAIN_DANCE   ; f0
+	const SUNNY_DAY    ; f1
+	const CRUNCH       ; f2
+	const MIRROR_COAT  ; f3
+	const PSYCH_UP     ; f4
+	const EXTREMESPEED ; f5
+	const ANCIENTPOWER ; f6
+	const SHADOW_BALL  ; f7
+	const FUTURE_SIGHT ; f8
+	const ROCK_SMASH   ; f9
+	const WHIRLPOOL    ; fa
+	const BEAT_UP      ; fb
+NUM_ATTACKS EQU const_value + -1
 
-const_value SET const_value + -1
+	const MOVE_OR_ANIM_FC ; fc
+	const MOVE_OR_ANIM_FD ; fd
+	const MOVE_OR_ANIM_FE ; fe
 
-	const NUM_ATTACKS  ; $fb
-
-; Battle animations use the same constants
-; as the moves up to this point.
-	const ANIM_FC                ; $fc
-	const ANIM_FD                ; $fd
-	const ANIM_FE                ; $fe
-	const ANIM_SWEET_SCENT_2     ; $ff
-	const ANIM_THROW_POKE_BALL   ; $100
-	const ANIM_SEND_OUT_MON      ; $101
-	const ANIM_RETURN_MON        ; $102
-	const ANIM_CONFUSED          ; $103
-	const ANIM_SLP               ; $104
-	const ANIM_BRN               ; $105
-	const ANIM_PSN               ; $106
-	const ANIM_SAP               ; $107
-	const ANIM_FRZ               ; $108
-	const ANIM_PAR               ; $109
-	const ANIM_IN_LOVE           ; $10a
-	const ANIM_IN_SANDSTORM      ; $10b
-	const ANIM_IN_NIGHTMARE      ; $10c
-	const ANIM_IN_WHIRLPOOL      ; $10d
+; Battle animations use the same constants as the moves up to this point
+	const ANIM_SWEET_SCENT_2     ; ff
+	const ANIM_THROW_POKE_BALL   ; 100
+	const ANIM_SEND_OUT_MON      ; 101
+	const ANIM_RETURN_MON        ; 102
+	const ANIM_CONFUSED          ; 103
+	const ANIM_SLP               ; 104
+	const ANIM_BRN               ; 105
+	const ANIM_PSN               ; 106
+	const ANIM_SAP               ; 107
+	const ANIM_FRZ               ; 108
+	const ANIM_PAR               ; 109
+	const ANIM_IN_LOVE           ; 10a
+	const ANIM_IN_SANDSTORM      ; 10b
+	const ANIM_IN_NIGHTMARE      ; 10c
+	const ANIM_IN_WHIRLPOOL      ; 10d
 ; battle anims
-	const ANIM_MISS              ; $10e
-	const ANIM_ENEMY_DAMAGE      ; $10f
-	const ANIM_ENEMY_STAT_DOWN   ; $110
-	const ANIM_PLAYER_STAT_DOWN  ; $111
-	const ANIM_PLAYER_DAMAGE     ; $112
-	const ANIM_WOBBLE            ; $113
-	const ANIM_SHAKE             ; $114
-	const ANIM_HIT_CONFUSION     ; $115
+	const ANIM_MISS              ; 10e
+	const ANIM_ENEMY_DAMAGE      ; 10f
+	const ANIM_ENEMY_STAT_DOWN   ; 110
+	const ANIM_PLAYER_STAT_DOWN  ; 111
+	const ANIM_PLAYER_DAMAGE     ; 112
+	const ANIM_WOBBLE            ; 113
+	const ANIM_SHAKE             ; 114
+	const ANIM_HIT_CONFUSION     ; 115
 
 ; wNumHits uses offsets from ANIM_MISS
 	const_def
@@ -296,4 +298,4 @@
 	const BATTLEANIM_PLAYER_DAMAGE
 	const BATTLEANIM_WOBBLE
 	const BATTLEANIM_SHAKE
-	const BATTLEANIM_HIT_CONFUSION
\ No newline at end of file
+	const BATTLEANIM_HIT_CONFUSION
--- a/constants/music_constants.asm
+++ b/constants/music_constants.asm
@@ -1,3 +1,5 @@
+; song ids
+; Music indexes (see audio/music_pointers.asm)
 	const_def
 
 	const MUSIC_NONE                         ; 00
@@ -93,6 +95,8 @@
 	const MUSIC_LAKE_OF_RAGE_ROCKET_RADIO    ; 5a
 	const MUSIC_PRINTER                      ; 5b
 	const MUSIC_POST_CREDITS                 ; 5c
+
+; new to Crystal
 	const MUSIC_CLAIR                        ; 5d
 	const MUSIC_MOBILE_ADAPTER_MENU          ; 5e
 	const MUSIC_MOBILE_ADAPTER               ; 5f
@@ -104,4 +108,7 @@
 	const MUSIC_BATTLE_TOWER_LOBBY           ; 65
 	const MUSIC_MOBILE_CENTER                ; 66
 
-MUSIC_MAHOGANY_MART EQU $64 ; leftover from gold
+; GetMapHeaderMusic picks music for this value (see home/map.asm)
+MUSIC_MAHOGANY_MART EQU $64
+; GetMapHeaderMusic picks music for this bit flag
+RADIO_TOWER_MUSIC EQU 7
--- a/constants/phone_constants.asm
+++ b/constants/phone_constants.asm
@@ -1,4 +1,4 @@
-
+; PhoneContacts indexes (see engine/phone.asm)
 	const_def
 	const PHONE_00
 	const PHONE_MOM
@@ -39,6 +39,7 @@
 	const PHONE_PICNICKER_ERIN
 	const PHONE_BUENA
 
+; SpecialPhoneCallList indexes (see engine/phone.asm)
 	const_def
 	const SPECIALCALL_NONE
 	const SPECIALCALL_POKERUS
@@ -50,6 +51,7 @@
 	const SPECIALCALL_WORRIED
 	const SPECIALCALL_MASTERBALL
 
+; phone struct members
 	const_def
 	const PHONE_CONTACT_TRAINER_CLASS
 	const PHONE_CONTACT_TRAINER_NUMBER
@@ -64,4 +66,6 @@
 	const PHONE_CONTACT_SCRIPT2_ADDR_LO
 	const PHONE_CONTACT_SCRIPT2_ADDR_HI
 PHONE_TABLE_WIDTH EQU const_value
+
+; maximum number of pokegear contacts
 CONTACT_LIST_SIZE EQU 10
--- a/constants/pokemon_constants.asm
+++ b/constants/pokemon_constants.asm
@@ -1,265 +1,280 @@
-
-; pokemon
+; pokemon ids
+; indexes for:
+; - CryHeaders (see audio/cry_headers.asm)
+; - BaseData (see data/base_stats.asm)
+; - EggMovePointers (see data/egg_move_pointers.asm)
+; - EvosAttacksPointers (see data/evos_attacks_pointers.asm)
+; - PokemonNames (see data/pokemon_names.asm)
+; - PokedexDataPointerTable (see data/pokedex/entry_pointers.asm)
+; - AnimationPointers (see gfx/pics/anim_pointers.asm)
+; - BitmasksPointers (see gfx/pics/bitmask_pointers.asm)
+; - AnimationExtraPointers (see gfx/pics/extra_pointers.asm)
+; - FramesPointers (see gfx/pics/frame_pointers.asm)
+; - PokemonPalettes (see gfx/pics/palette_pointers.asm)
+; - PicPointers (see gfx/pics/pic_pointers.asm)
+; - AlphabeticalPokedexOrder (see data/pokedex/order_alpha.asm)
+; - NewPokedexOrder (see data/pokedex/order_new.asm)
+; - MonMenuIcons (see menu/mon_icons.asm)
+; - Pokered_MonIndices (see engine/time_capsule/conversion.asm)
+; - SortedPokemon (see misc/fixed_words.asm)
 const_value set 1
-	const BULBASAUR
-	const IVYSAUR
-	const VENUSAUR
-	const CHARMANDER
-	const CHARMELEON
-	const CHARIZARD
-	const SQUIRTLE
-	const WARTORTLE
-	const BLASTOISE
-	const CATERPIE
-	const METAPOD
-	const BUTTERFREE
-	const WEEDLE
-	const KAKUNA
-	const BEEDRILL
-	const PIDGEY
-	const PIDGEOTTO
-	const PIDGEOT
-	const RATTATA
-	const RATICATE
-	const SPEAROW
-	const FEAROW
-	const EKANS
-	const ARBOK
-	const PIKACHU
-	const RAICHU
-	const SANDSHREW
-	const SANDSLASH
-	const NIDORAN_F
-	const NIDORINA
-	const NIDOQUEEN
-	const NIDORAN_M
-	const NIDORINO
-	const NIDOKING
-	const CLEFAIRY
-	const CLEFABLE
-	const VULPIX
-	const NINETALES
-	const JIGGLYPUFF
-	const WIGGLYTUFF
-	const ZUBAT
-	const GOLBAT
-	const ODDISH
-	const GLOOM
-	const VILEPLUME
-	const PARAS
-	const PARASECT
-	const VENONAT
-	const VENOMOTH
-	const DIGLETT
-	const DUGTRIO
-	const MEOWTH
-	const PERSIAN
-	const PSYDUCK
-	const GOLDUCK
-	const MANKEY
-	const PRIMEAPE
-	const GROWLITHE
-	const ARCANINE
-	const POLIWAG
-	const POLIWHIRL
-	const POLIWRATH
-	const ABRA
-	const KADABRA
-	const ALAKAZAM
-	const MACHOP
-	const MACHOKE
-	const MACHAMP
-	const BELLSPROUT
-	const WEEPINBELL
-	const VICTREEBEL
-	const TENTACOOL
-	const TENTACRUEL
-	const GEODUDE
-	const GRAVELER
-	const GOLEM
-	const PONYTA
-	const RAPIDASH
-	const SLOWPOKE
-	const SLOWBRO
-	const MAGNEMITE
-	const MAGNETON
-	const FARFETCH_D
-	const DODUO
-	const DODRIO
-	const SEEL
-	const DEWGONG
-	const GRIMER
-	const MUK
-	const SHELLDER
-	const CLOYSTER
-	const GASTLY
-	const HAUNTER
-	const GENGAR
-	const ONIX
-	const DROWZEE
-	const HYPNO
-	const KRABBY
-	const KINGLER
-	const VOLTORB
-	const ELECTRODE
-	const EXEGGCUTE
-	const EXEGGUTOR
-	const CUBONE
-	const MAROWAK
-	const HITMONLEE
-	const HITMONCHAN
-	const LICKITUNG
-	const KOFFING
-	const WEEZING
-	const RHYHORN
-	const RHYDON
-	const CHANSEY
-	const TANGELA
-	const KANGASKHAN
-	const HORSEA
-	const SEADRA
-	const GOLDEEN
-	const SEAKING
-	const STARYU
-	const STARMIE
-	const MR__MIME
-	const SCYTHER
-	const JYNX
-	const ELECTABUZZ
-	const MAGMAR
-	const PINSIR
-	const TAUROS
-	const MAGIKARP
-	const GYARADOS
-	const LAPRAS
-	const DITTO
-	const EEVEE
-	const VAPOREON
-	const JOLTEON
-	const FLAREON
-	const PORYGON
-	const OMANYTE
-	const OMASTAR
-	const KABUTO
-	const KABUTOPS
-	const AERODACTYL
-	const SNORLAX
-	const ARTICUNO
-	const ZAPDOS
-	const MOLTRES
-	const DRATINI
-	const DRAGONAIR
-	const DRAGONITE
-	const MEWTWO
-	const MEW
-	const CHIKORITA
-	const BAYLEEF
-	const MEGANIUM
-	const CYNDAQUIL
-	const QUILAVA
-	const TYPHLOSION
-	const TOTODILE
-	const CROCONAW
-	const FERALIGATR
-	const SENTRET
-	const FURRET
-	const HOOTHOOT
-	const NOCTOWL
-	const LEDYBA
-	const LEDIAN
-	const SPINARAK
-	const ARIADOS
-	const CROBAT
-	const CHINCHOU
-	const LANTURN
-	const PICHU
-	const CLEFFA
-	const IGGLYBUFF
-	const TOGEPI
-	const TOGETIC
-	const NATU
-	const XATU
-	const MAREEP
-	const FLAAFFY
-	const AMPHAROS
-	const BELLOSSOM
-	const MARILL
-	const AZUMARILL
-	const SUDOWOODO
-	const POLITOED
-	const HOPPIP
-	const SKIPLOOM
-	const JUMPLUFF
-	const AIPOM
-	const SUNKERN
-	const SUNFLORA
-	const YANMA
-	const WOOPER
-	const QUAGSIRE
-	const ESPEON
-	const UMBREON
-	const MURKROW
-	const SLOWKING
-	const MISDREAVUS
-	const UNOWN
-	const WOBBUFFET
-	const GIRAFARIG
-	const PINECO
-	const FORRETRESS
-	const DUNSPARCE
-	const GLIGAR
-	const STEELIX
-	const SNUBBULL
-	const GRANBULL
-	const QWILFISH
-	const SCIZOR
-	const SHUCKLE
-	const HERACROSS
-	const SNEASEL
-	const TEDDIURSA
-	const URSARING
-	const SLUGMA
-	const MAGCARGO
-	const SWINUB
-	const PILOSWINE
-	const CORSOLA
-	const REMORAID
-	const OCTILLERY
-	const DELIBIRD
-	const MANTINE
-	const SKARMORY
-	const HOUNDOUR
-	const HOUNDOOM
-	const KINGDRA
-	const PHANPY
-	const DONPHAN
-	const PORYGON2
-	const STANTLER
-	const SMEARGLE
-	const TYROGUE
-	const HITMONTOP
-	const SMOOCHUM
-	const ELEKID
-	const MAGBY
-	const MILTANK
-	const BLISSEY
-	const RAIKOU
-	const ENTEI
-	const SUICUNE
-	const LARVITAR
-	const PUPITAR
-	const TYRANITAR
-	const LUGIA
-	const HO_OH
-	const CELEBI
+	const BULBASAUR  ; 01
+	const IVYSAUR    ; 02
+	const VENUSAUR   ; 03
+	const CHARMANDER ; 04
+	const CHARMELEON ; 05
+	const CHARIZARD  ; 06
+	const SQUIRTLE   ; 07
+	const WARTORTLE  ; 08
+	const BLASTOISE  ; 09
+	const CATERPIE   ; 0a
+	const METAPOD    ; 0b
+	const BUTTERFREE ; 0c
+	const WEEDLE     ; 0d
+	const KAKUNA     ; 0e
+	const BEEDRILL   ; 0f
+	const PIDGEY     ; 10
+	const PIDGEOTTO  ; 11
+	const PIDGEOT    ; 12
+	const RATTATA    ; 13
+	const RATICATE   ; 14
+	const SPEAROW    ; 15
+	const FEAROW     ; 16
+	const EKANS      ; 17
+	const ARBOK      ; 18
+	const PIKACHU    ; 19
+	const RAICHU     ; 1a
+	const SANDSHREW  ; 1b
+	const SANDSLASH  ; 1c
+	const NIDORAN_F  ; 1d
+	const NIDORINA   ; 1e
+	const NIDOQUEEN  ; 1f
+	const NIDORAN_M  ; 20
+	const NIDORINO   ; 21
+	const NIDOKING   ; 22
+	const CLEFAIRY   ; 23
+	const CLEFABLE   ; 24
+	const VULPIX     ; 25
+	const NINETALES  ; 26
+	const JIGGLYPUFF ; 27
+	const WIGGLYTUFF ; 28
+	const ZUBAT      ; 29
+	const GOLBAT     ; 2a
+	const ODDISH     ; 2b
+	const GLOOM      ; 2c
+	const VILEPLUME  ; 2d
+	const PARAS      ; 2e
+	const PARASECT   ; 2f
+	const VENONAT    ; 30
+	const VENOMOTH   ; 31
+	const DIGLETT    ; 32
+	const DUGTRIO    ; 33
+	const MEOWTH     ; 34
+	const PERSIAN    ; 35
+	const PSYDUCK    ; 36
+	const GOLDUCK    ; 37
+	const MANKEY     ; 38
+	const PRIMEAPE   ; 39
+	const GROWLITHE  ; 3a
+	const ARCANINE   ; 3b
+	const POLIWAG    ; 3c
+	const POLIWHIRL  ; 3d
+	const POLIWRATH  ; 3e
+	const ABRA       ; 3f
+	const KADABRA    ; 40
+	const ALAKAZAM   ; 41
+	const MACHOP     ; 42
+	const MACHOKE    ; 43
+	const MACHAMP    ; 44
+	const BELLSPROUT ; 45
+	const WEEPINBELL ; 46
+	const VICTREEBEL ; 47
+	const TENTACOOL  ; 48
+	const TENTACRUEL ; 49
+	const GEODUDE    ; 4a
+	const GRAVELER   ; 4b
+	const GOLEM      ; 4c
+	const PONYTA     ; 4d
+	const RAPIDASH   ; 4e
+	const SLOWPOKE   ; 4f
+	const SLOWBRO    ; 50
+	const MAGNEMITE  ; 51
+	const MAGNETON   ; 52
+	const FARFETCH_D ; 53
+	const DODUO      ; 54
+	const DODRIO     ; 55
+	const SEEL       ; 56
+	const DEWGONG    ; 57
+	const GRIMER     ; 58
+	const MUK        ; 59
+	const SHELLDER   ; 5a
+	const CLOYSTER   ; 5b
+	const GASTLY     ; 5c
+	const HAUNTER    ; 5d
+	const GENGAR     ; 5e
+	const ONIX       ; 5f
+	const DROWZEE    ; 60
+	const HYPNO      ; 61
+	const KRABBY     ; 62
+	const KINGLER    ; 63
+	const VOLTORB    ; 64
+	const ELECTRODE  ; 65
+	const EXEGGCUTE  ; 66
+	const EXEGGUTOR  ; 67
+	const CUBONE     ; 68
+	const MAROWAK    ; 69
+	const HITMONLEE  ; 6a
+	const HITMONCHAN ; 6b
+	const LICKITUNG  ; 6c
+	const KOFFING    ; 6d
+	const WEEZING    ; 6e
+	const RHYHORN    ; 6f
+	const RHYDON     ; 70
+	const CHANSEY    ; 71
+	const TANGELA    ; 72
+	const KANGASKHAN ; 73
+	const HORSEA     ; 74
+	const SEADRA     ; 75
+	const GOLDEEN    ; 76
+	const SEAKING    ; 77
+	const STARYU     ; 78
+	const STARMIE    ; 79
+	const MR__MIME   ; 7a
+	const SCYTHER    ; 7b
+	const JYNX       ; 7c
+	const ELECTABUZZ ; 7d
+	const MAGMAR     ; 7e
+	const PINSIR     ; 7f
+	const TAUROS     ; 80
+	const MAGIKARP   ; 81
+	const GYARADOS   ; 82
+	const LAPRAS     ; 83
+	const DITTO      ; 84
+	const EEVEE      ; 85
+	const VAPOREON   ; 86
+	const JOLTEON    ; 87
+	const FLAREON    ; 88
+	const PORYGON    ; 89
+	const OMANYTE    ; 8a
+	const OMASTAR    ; 8b
+	const KABUTO     ; 8c
+	const KABUTOPS   ; 8d
+	const AERODACTYL ; 8e
+	const SNORLAX    ; 8f
+	const ARTICUNO   ; 90
+	const ZAPDOS     ; 91
+	const MOLTRES    ; 92
+	const DRATINI    ; 93
+	const DRAGONAIR  ; 94
+	const DRAGONITE  ; 95
+	const MEWTWO     ; 96
+	const MEW        ; 97
+	const CHIKORITA  ; 98
+	const BAYLEEF    ; 99
+	const MEGANIUM   ; 9a
+	const CYNDAQUIL  ; 9b
+	const QUILAVA    ; 9c
+	const TYPHLOSION ; 9d
+	const TOTODILE   ; 9e
+	const CROCONAW   ; 9f
+	const FERALIGATR ; a0
+	const SENTRET    ; a1
+	const FURRET     ; a2
+	const HOOTHOOT   ; a3
+	const NOCTOWL    ; a4
+	const LEDYBA     ; a5
+	const LEDIAN     ; a6
+	const SPINARAK   ; a7
+	const ARIADOS    ; a8
+	const CROBAT     ; a9
+	const CHINCHOU   ; aa
+	const LANTURN    ; ab
+	const PICHU      ; ac
+	const CLEFFA     ; ad
+	const IGGLYBUFF  ; ae
+	const TOGEPI     ; af
+	const TOGETIC    ; b0
+	const NATU       ; b1
+	const XATU       ; b2
+	const MAREEP     ; b3
+	const FLAAFFY    ; b4
+	const AMPHAROS   ; b5
+	const BELLOSSOM  ; b6
+	const MARILL     ; b7
+	const AZUMARILL  ; b8
+	const SUDOWOODO  ; b9
+	const POLITOED   ; ba
+	const HOPPIP     ; bb
+	const SKIPLOOM   ; bc
+	const JUMPLUFF   ; bd
+	const AIPOM      ; be
+	const SUNKERN    ; bf
+	const SUNFLORA   ; c0
+	const YANMA      ; c1
+	const WOOPER     ; c2
+	const QUAGSIRE   ; c3
+	const ESPEON     ; c4
+	const UMBREON    ; c5
+	const MURKROW    ; c6
+	const SLOWKING   ; c7
+	const MISDREAVUS ; c8
+	const UNOWN      ; c9
+	const WOBBUFFET  ; ca
+	const GIRAFARIG  ; cb
+	const PINECO     ; cc
+	const FORRETRESS ; cd
+	const DUNSPARCE  ; ce
+	const GLIGAR     ; cf
+	const STEELIX    ; d0
+	const SNUBBULL   ; d1
+	const GRANBULL   ; d2
+	const QWILFISH   ; d3
+	const SCIZOR     ; d4
+	const SHUCKLE    ; d5
+	const HERACROSS  ; d6
+	const SNEASEL    ; d7
+	const TEDDIURSA  ; d8
+	const URSARING   ; d9
+	const SLUGMA     ; da
+	const MAGCARGO   ; db
+	const SWINUB     ; dc
+	const PILOSWINE  ; dd
+	const CORSOLA    ; de
+	const REMORAID   ; df
+	const OCTILLERY  ; e0
+	const DELIBIRD   ; e1
+	const MANTINE    ; e2
+	const SKARMORY   ; e3
+	const HOUNDOUR   ; e4
+	const HOUNDOOM   ; e5
+	const KINGDRA    ; e6
+	const PHANPY     ; e7
+	const DONPHAN    ; e8
+	const PORYGON2   ; e9
+	const STANTLER   ; ea
+	const SMEARGLE   ; eb
+	const TYROGUE    ; ec
+	const HITMONTOP  ; ed
+	const SMOOCHUM   ; ee
+	const ELEKID     ; ef
+	const MAGBY      ; f0
+	const MILTANK    ; f1
+	const BLISSEY    ; f2
+	const RAIKOU     ; f3
+	const ENTEI      ; f4
+	const SUICUNE    ; f5
+	const LARVITAR   ; f6
+	const PUPITAR    ; f7
+	const TYRANITAR  ; f8
+	const LUGIA      ; f9
+	const HO_OH      ; fa
+	const CELEBI     ; fb
+NUM_POKEMON EQU const_value +- 1
+	const MON_FC     ; fc
+	const EGG        ; fd
+	const MON_FE     ; fe
 
-const_value SET const_value + -1
-
-NUM_POKEMON EQU const_value
-
-EGG EQU 253
-
-; pokemon structure in RAM
+; party_struct members (see macros/wram.asm)
 MON_SPECIES              EQUS "(PartyMon1Species - PartyMon1)"
 MON_ITEM                 EQUS "(PartyMon1Item - PartyMon1)"
 MON_MOVES                EQUS "(PartyMon1Moves - PartyMon1)"
@@ -293,7 +308,9 @@
 PARTYMON_STRUCT_LENGTH   EQUS "(PartyMon1StatsEnd - PartyMon1)"
 REDMON_STRUCT_LENGTH EQU 44
 
+; MonMenuOptions indexes (see engine/mon_menu.asm)
 const_value SET 1
+; moves
 	const MONMENU_CUT        ; 1
 	const MONMENU_FLY        ; 2
 	const MONMENU_SURF       ; 3
@@ -308,7 +325,7 @@
 	const MONMENU_ROCKSMASH  ; 12
 	const MONMENU_MILKDRINK  ; 13
 	const MONMENU_SWEETSCENT ; 14
-
+; options
 	const MONMENU_STATS      ; 15
 	const MONMENU_SWITCH     ; 16
 	const MONMENU_ITEM       ; 17
@@ -317,5 +334,11 @@
 	const MONMENU_MAIL       ; 20
 	const MONMENU_ERROR      ; 21
 
+; MonMenuOptions types
 MONMENU_FIELD_MOVE EQU 0
 MONMENU_MENUOPTION EQU 1
+
+NUM_MONMENU_ITEMS EQU 8
+
+; maximum number of party pokemon
+PARTY_LENGTH EQU 6
--- a/constants/pokemon_data_constants.asm
+++ b/constants/pokemon_data_constants.asm
@@ -1,4 +1,5 @@
-; growth rate
+; BaseGrowthRate values
+; GrowthRates indexes (see main.asm)
 	const_def
 	const MEDIUM_FAST
 	const SLIGHTLY_FAST
@@ -7,7 +8,7 @@
 	const FAST
 	const SLOW
 
-; egg group constants
+; BaseEggGroups values
 const_value SET 1
 	const MONSTER      ; 1
 	const AMPHIBIAN    ; 2
@@ -26,7 +27,7 @@
 	const NO_EGGS      ; f
 
 
-; menu sprites
+; IconPointers indexes (see menu/mon_icons.asm)
 const_value SET 1
 	const ICON_POLIWAG
 	const ICON_JIGGLYPUFF
@@ -68,7 +69,7 @@
 	const ICON_BIGMON
 
 
-; evolution types
+; evolution types (used in data/evos_attacks.asm)
 const_value SET 1
 	const EVOLVE_LEVEL
 	const EVOLVE_ITEM
@@ -76,26 +77,36 @@
 	const EVOLVE_HAPPINESS
 	const EVOLVE_STAT
 
-
-BASE_HAPPINESS        EQU 70
-FRIEND_BALL_HAPPINESS EQU 200
-
-; happiness evolution triggers
-HAPPINESS_TO_EVOLVE EQU 220
+; EVOLVE_HAPPINESS triggers
 const_value SET 1
 	const TR_ANYTIME
 	const TR_MORNDAY
 	const TR_NITE
 
-
-; stat evolution triggers
+; EVOLVE_STAT triggers
 const_value SET 1
 	const ATK_GT_DEF
 	const ATK_LT_DEF
 	const ATK_EQ_DEF
 
-NUM_GRASSMON EQU 7
-NUM_WATERMON EQU 3
 
+; significant happiness values
+BASE_HAPPINESS        EQU 70
+FRIEND_BALL_HAPPINESS EQU 200
+HAPPINESS_TO_EVOLVE   EQU 220
+
+
+NUM_GRASSMON EQU 7 ; data/wild/*_grass.asm table size
+NUM_WATERMON EQU 3 ; data/wild/*_water.asm table size
+
 GRASS_WILDDATA_LENGTH EQU (NUM_GRASSMON * 2 + 1) * 3 + 2
 WATER_WILDDATA_LENGTH EQU (NUM_WATERMON * 2 + 1) * 1 + 2
+
+
+; swarms
+
+SWARM_DUNSPARCE EQU 0
+SWARM_YANMA     EQU 1
+
+FISHSWARM_QWILFISH EQU 1
+FISHSWARM_REMORAID EQU 2
--- a/constants/printer_constants.asm
+++ b/constants/printer_constants.asm
@@ -1,5 +1,5 @@
+; wPrinterStatus
 const_value SET 1
-
 	const PRINTER_STATUS_CHECKING
 	const PRINTER_STATUS_TRANSMITTING
 	const PRINTER_STATUS_PRINTING
--- a/constants/radio_constants.asm
+++ b/constants/radio_constants.asm
@@ -1,3 +1,4 @@
+; PlayRadioShow arguments, RadioJumptable indexes (see engine/radio.asm)
 	const_def
 	const OAKS_POKEMON_TALK      ; $00
 	const POKEDEX_SHOW           ; $01
@@ -88,6 +89,7 @@
 	const POKEDEX_SHOW_7         ; $56
 	const POKEDEX_SHOW_8         ; $57
 
+; PlayRadio arguments (see engine/pokegear.asm)
 	const_def
 	const MAPRADIO_POKEMON_CHANNEL
 	const MAPRADIO_OAKS_MON_TALK
@@ -99,13 +101,8 @@
 	const MAPRADIO_LETS_ALL_SING
 	const MAPRADIO_ROCKET
 
+; PasswordTable indexes (see engine/radio.asm)
 	const_def
-	const BUENA_MON
-	const BUENA_ITEM
-	const BUENA_MOVE
-	const BUENA_STRING
-
-	const_def
 	const BUENA_STARTERS
 	const BUENA_DRINKS
 	const BUENA_ITEMS
@@ -119,3 +116,10 @@
 	const BUENA_STATIONS
 NUM_PASSWORD_CATEGORIES EQU const_value
 NUM_PASSWORDS_PER_CATEGORY EQU 3
+
+; PasswordTable string types (see engine/radio.asm)
+	const_def
+	const BUENA_MON
+	const BUENA_ITEM
+	const BUENA_MOVE
+	const BUENA_STRING
--- a/constants/script_constants.asm
+++ b/constants/script_constants.asm
@@ -2,6 +2,7 @@
 PLAYER      EQU  0
 LAST_TALKED EQU -2
 
+; GetVarAction arguments (see engine/variables.asm)
 	const_def
 	const VAR_STRINGBUFFER2    ; 00
 	const VAR_PARTYCOUNT       ; 01
@@ -32,10 +33,12 @@
 	const VAR_KENJI_BREAK      ; 1a
 NUM_VARS EQU const_value       ; 1b
 
+; variable action types
 RETVAR_STRBUF2 EQU (0 << 6)
 RETVAR_ADDR_DE EQU (1 << 6)
 RETVAR_EXECUTE EQU (2 << 6)
 
+; PlayerEventScriptPointers indexes (see engine/events.asm)
 const_value SET -1
 	const PLAYEREVENT_MAPSCRIPT
 	const PLAYEREVENT_NONE
--- a/constants/sfx_constants.asm
+++ b/constants/sfx_constants.asm
@@ -1,3 +1,4 @@
+; SFX indexes (see audio/sfx_pointers.asm)
 	const_def
 
 	const SFX_DEX_FANFARE_50_79           ; 00
@@ -191,6 +192,7 @@
 	const SFX_GLASS_TING                  ; bc
 	const SFX_GLASS_TING_2                ; bd
 
+; new to Crystal
 	const SFX_INTRO_UNOWN_1               ; be
 	const SFX_INTRO_UNOWN_2               ; bf
 	const SFX_INTRO_UNOWN_3               ; c0
--- a/constants/sprite_constants.asm
+++ b/constants/sprite_constants.asm
@@ -1,5 +1,5 @@
-
-; sprites
+; sprite ids
+; SpriteHeaders indexes (see gfx/overworld/sprite_headers.asm)
 	const_def
 	const SPRITE_NONE ; 00
 	const SPRITE_CHRIS ; 01
@@ -105,8 +105,8 @@
 	const SPRITE_RAIKOU ; 65
 	const SPRITE_STANDING_YOUNGSTER ; 66
 
+; SpriteMons indexes (see engine/overworld.asm)
 const_value SET $80
-
 SPRITE_POKEMON EQU const_value
 	const SPRITE_UNOWN ; 80
 	const SPRITE_GEODUDE ; 81
@@ -144,10 +144,12 @@
 	const SPRITE_LUGIA ; a1
 	const SPRITE_HO_OH ; a2
 
+; special GetMonSprite values (see engine/overworld.asm)
 const_value SET $e0
 	const SPRITE_DAYCARE_MON_1 ; e0
 	const SPRITE_DAYCARE_MON_2 ; e1
 
+; VariableSprites indexes (see wram.asm)
 const_value SET $f0
 SPRITE_VARS EQU const_value
 	const SPRITE_CONSOLE ; f0
@@ -164,13 +166,7 @@
 	const SPRITE_COPYCAT ; fb
 	const SPRITE_JANINE_IMPERSONATOR ; fc
 
-; sprite types
-const_value SET 1
-	const WALKING_SPRITE
-	const STANDING_SPRITE
-	const STILL_SPRITE
-
-; sprite header fields
+; sprite_header struct members (see gfx/overworld/sprite_headers.asm)
 	const_def
 	const SPRITEHEADER_ADDR_LO
 	const SPRITEHEADER_ADDR_HI
@@ -180,18 +176,24 @@
 	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
-	const PAL_OW_BLUE
-	const PAL_OW_GREEN
-	const PAL_OW_BROWN
-	const PAL_OW_PINK
-	const PAL_OW_SILVER
-	const PAL_OW_TREE
-	const PAL_OW_ROCK
+	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
 
-; sprite movement data table indices
+; SpriteMovementData indexes (see data/map_objects.asm)
 	const_def
 	const SPRITEMOVEDATA_00                   ; 00
 	const SPRITEMOVEDATA_ITEM_TREE            ; 01
@@ -233,7 +235,7 @@
 NUM_SPRITEMOVEDATA EQU const_value
 SPRITEMOVEDATA_FIELDS EQU 6
 
-; sprite movement functions
+; MapObjectMovementPattern.Pointers indexes (see engine/map_objects.asm)
 	const_def
 	const SPRITEMOVEFN_00
 	const SPRITEMOVEFN_RANDOM_WALK_Y
@@ -264,8 +266,7 @@
 	const SPRITEMOVEFN_BOULDERDUST
 	const SPRITEMOVEFN_GRASS
 
-MAX_OUTDOOR_SPRITES EQU 23
-
+; StepTypesJumptable indexes (see engine/map_objects.asm)
 	const_def
 	const STEP_TYPE_00
 	const STEP_TYPE_SLEEP
@@ -294,6 +295,7 @@
 	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
@@ -313,6 +315,7 @@
 	const PERSON_ACTION_GRASS_SHAKE
 	const PERSON_ACTION_SKYFALL
 
+; Facings indexes (see engine/facings.asm)
 	const_def
 	const FACING_STEP_DOWN_0
 	const FACING_STEP_DOWN_1
@@ -347,6 +350,7 @@
 	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
@@ -365,6 +369,7 @@
 	const SPRITEANIMSTRUCT_0E              ; e
 	const SPRITEANIMSTRUCT_0F              ; f
 
+; SpriteAnimFrameData indexes (see data/sprite_engine.asm)
 	const_def
 	const SPRITE_ANIM_FRAMESET_00
 	const SPRITE_ANIM_FRAMESET_PARTY_MON
@@ -377,13 +382,13 @@
 	const SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR
 	const SPRITE_ANIM_FRAMESET_09 ; unused?
 	const SPRITE_ANIM_FRAMESET_GAMEFREAK_LOGO
-	const SPRITE_ANIM_FRAMESET_0B
-	const SPRITE_ANIM_FRAMESET_0C
+	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_WALK_CYCLE
+	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
@@ -433,29 +438,30 @@
 	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_01
-	const SPRITE_ANIM_SEQ_02
-	const SPRITE_ANIM_SEQ_03
+	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_05
+	const SPRITE_ANIM_SEQ_NAMING_SCREEN_CURSOR
 	const SPRITE_ANIM_SEQ_GAMEFREAK_LOGO
-	const SPRITE_ANIM_SEQ_07
-	const SPRITE_ANIM_SEQ_08
-	const SPRITE_ANIM_SEQ_SLOT_GOLEM
+	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_0C
+	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_10
-	const SPRITE_ANIM_SEQ_11
+	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_13
-	const SPRITE_ANIM_SEQ_14
-	const SPRITE_ANIM_SEQ_15
+	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
@@ -463,46 +469,47 @@
 	const SPRITE_ANIM_SEQ_1A
 	const SPRITE_ANIM_SEQ_1B
 	const SPRITE_ANIM_SEQ_1C
-	const SPRITE_ANIM_SEQ_1D
-	const SPRITE_ANIM_SEQ_1E
-	const SPRITE_ANIM_SEQ_1F
-	const SPRITE_ANIM_SEQ_20
-	const SPRITE_ANIM_SEQ_21
-	const SPRITE_ANIM_SEQ_22
+	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 engine/sprites.asm)
 	const_def
-	const SPRITE_ANIM_INDEX_00
+	const SPRITE_ANIM_INDEX_PARTY_MON
 	const SPRITE_ANIM_INDEX_01
-	const SPRITE_ANIM_INDEX_02
-	const SPRITE_ANIM_INDEX_GAMEFREAK_LOGO
-	const SPRITE_ANIM_INDEX_04
 	const SPRITE_ANIM_INDEX_NAMING_SCREEN_CURSOR
-	const SPRITE_ANIM_INDEX_SLOT_GOLEM
+	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_09
+	const SPRITE_ANIM_INDEX_COMPOSE_MAIL_CURSOR
 	const SPRITE_ANIM_INDEX_RED_WALK
 	const SPRITE_ANIM_INDEX_0B
-	const SPRITE_ANIM_INDEX_COMPOSE_MAIL_CURSOR
+	const SPRITE_ANIM_INDEX_DUMMY_GAME
 	const SPRITE_ANIM_INDEX_0D
-	const SPRITE_ANIM_INDEX_0E
-	const SPRITE_ANIM_INDEX_0F
-	const SPRITE_ANIM_INDEX_10
+	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_13
-	const SPRITE_ANIM_INDEX_14
-	const SPRITE_ANIM_INDEX_15
+	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_19
+	const SPRITE_ANIM_INDEX_EGG_CRACK
 	const SPRITE_ANIM_INDEX_1A
-	const SPRITE_ANIM_INDEX_1B
-	const SPRITE_ANIM_INDEX_1C
+	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_1F
+	const SPRITE_ANIM_INDEX_MAGNET_TRAIN_BLUE
 	const SPRITE_ANIM_INDEX_20
 	const SPRITE_ANIM_INDEX_21
 	const SPRITE_ANIM_INDEX_22
@@ -509,16 +516,16 @@
 	const SPRITE_ANIM_INDEX_23
 	const SPRITE_ANIM_INDEX_24
 	const SPRITE_ANIM_INDEX_25
-	const SPRITE_ANIM_INDEX_26
-	const SPRITE_ANIM_INDEX_27
-	const SPRITE_ANIM_INDEX_28
-	const SPRITE_ANIM_INDEX_29
-	const SPRITE_ANIM_INDEX_2A
-	const SPRITE_ANIM_INDEX_2B
-	const SPRITE_ANIM_INDEX_2C
+	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_engine.asm)
 	const_def
-
 	const SPRITE_ANIM_FRAME_IDX_00
 	const SPRITE_ANIM_FRAME_IDX_01
 	const SPRITE_ANIM_FRAME_IDX_02
--- a/constants/std_constants.asm
+++ b/constants/std_constants.asm
@@ -1,3 +1,5 @@
+; StdScripts indexes (see engine/std_scripts.asm)
+; also used in CheckFacingTileForStd (see main.asm)
 	enum_start
 	enum pokecenternurse
 	enum difficultbookshelf
--- a/constants/tilemap_constants.asm
+++ b/constants/tilemap_constants.asm
@@ -1,9 +1,10 @@
-LANDTILE  EQU  0
+; collision values (see tilesets/collision.asm)
+LANDTILE  EQU $0
+WATERTILE EQU $1
 WALLTILE  EQU $f
-WATERTILE EQU  1
+TALK      EQU $10
 
-TALK     EQU  1 << 4
-
+; Tilesets indexes (see tilesets/tileset_headers.asm)
 const_value SET 1
 	const TILESET_JOHTO_1              ; 01
 	const TILESET_JOHTO_2              ; 02
@@ -42,12 +43,13 @@
 	const TILESET_OMANYTE_WORD_ROOM    ; 23
 	const TILESET_AERODACTYL_WORD_ROOM ; 24
 
+; bg palette values (see tilesets/*_palette_map.asm)
 	const_def
-	const PAL_BG_GRAY
-	const PAL_BG_RED
-	const PAL_BG_GREEN
-	const PAL_BG_WATER
-	const PAL_BG_YELLOW
-	const PAL_BG_BROWN
-	const PAL_BG_ROOF
-	const PAL_BG_TEXT
+	const PAL_BG_GRAY   ; 0
+	const PAL_BG_RED    ; 1
+	const PAL_BG_GREEN  ; 2
+	const PAL_BG_WATER  ; 3
+	const PAL_BG_YELLOW ; 4
+	const PAL_BG_BROWN  ; 5
+	const PAL_BG_ROOF   ; 6
+	const PAL_BG_TEXT   ; 7
--- a/constants/trainer_constants.asm
+++ b/constants/trainer_constants.asm
@@ -1,4 +1,11 @@
-; trainer groups
+; trainer class ids
+; `trainerclass` indexes are for:
+; - TrainerClassAttributes (see trainers/attributes.asm)
+; - TrainerClassDVs (see trainers/dvs.asm)
+; - TrainerGroups (see trainers/trainer_pointers.asm)
+; - TrainerEncounterMusic (see audio/trainer_encounters.asm)
+; - BTTrainerClassGenders (see misc/battle_tower_47.asm)
+; trainer constants are Trainers indexes, for the sub-tables of TrainerGroups (see trainers/trainers.asm)
 	enum_start
 CHRIS EQU __enum__
 	trainerclass TRAINER_NONE ; 0
@@ -26,21 +33,21 @@
 	trainerclass CLAIR ; 8
 
 	trainerclass RIVAL1 ; 9
-	const RIVAL1_1
-	const RIVAL1_2
-	const RIVAL1_3
-	const RIVAL1_4
-	const RIVAL1_5
-	const RIVAL1_6
-	const RIVAL1_7
-	const RIVAL1_8
-	const RIVAL1_9
-	const RIVAL1_10
-	const RIVAL1_11
-	const RIVAL1_12
-	const RIVAL1_13
-	const RIVAL1_14
-	const RIVAL1_15
+	const RIVAL1_1_CHIKORITA
+	const RIVAL1_1_CYNDAQUIL
+	const RIVAL1_1_TOTODILE
+	const RIVAL1_2_CHIKORITA
+	const RIVAL1_2_CYNDAQUIL
+	const RIVAL1_2_TOTODILE
+	const RIVAL1_3_CHIKORITA
+	const RIVAL1_3_CYNDAQUIL
+	const RIVAL1_3_TOTODILE
+	const RIVAL1_4_CHIKORITA
+	const RIVAL1_4_CYNDAQUIL
+	const RIVAL1_4_TOTODILE
+	const RIVAL1_5_CHIKORITA
+	const RIVAL1_5_CYNDAQUIL
+	const RIVAL1_5_TOTODILE
 
 	trainerclass POKEMON_PROF ; a
 
@@ -415,6 +422,12 @@
 	const MARKUS
 
 	trainerclass RIVAL2 ; 2a
+	const RIVAL2_1_CHIKORITA
+	const RIVAL2_1_CYNDAQUIL
+	const RIVAL2_1_TOTODILE
+	const RIVAL2_2_CHIKORITA
+	const RIVAL2_2_CYNDAQUIL
+	const RIVAL2_2_TOTODILE
 
 	trainerclass GUITARIST ; 2b
 	const CLYDE
@@ -492,6 +505,10 @@
 	const WAI
 
 	trainerclass EXECUTIVEM ; 33
+	const EXECUTIVEM_1
+	const EXECUTIVEM_2
+	const EXECUTIVEM_3
+	const EXECUTIVEM_4
 
 	trainerclass PSYCHIC_T ; 34
 	const NATHAN
@@ -560,6 +577,8 @@
 	const QUENTIN
 
 	trainerclass EXECUTIVEF ; 37
+	const EXECUTIVEF_1
+	const EXECUTIVEF_2
 
 	trainerclass SAGE ; 38
 	const CHOW
@@ -648,13 +667,24 @@
 	const GRUNTF_4
 	const GRUNTF_5
 
-
 	trainerclass MYSTICALMAN ; 43
 	const EUSINE
 
 NUM_TRAINER_CLASSES EQU __enum__
 
+; TrainerClassAttributes fields (see trainers/attributes.asm)
 	const_def
+	const TRNATTR_ITEM1
+	const TRNATTR_ITEM2
+	const TRNATTR_BASEMONEY
+	const TRNATTR_AI_MOVE_WEIGHTS
+	const TRNATTR_AI2
+	const TRNATTR_AI_ITEM_SWITCH
+	const TRNATTR_AI4
+NUM_TRAINER_ATTRIBUTES EQU const_value
+
+; TRNATTR_AI_MOVE_WEIGHTS bit flags (wEnemyTrainerAIFlags)
+	const_def
 	const       NO_AI
 const_value = 0
 	shift_const AI_BASIC
@@ -674,12 +704,24 @@
 	shift_const AI_14
 	shift_const AI_15
 
+; TRNATTR_AI_ITEM_SWITCH bit flags
+CONTEXT_USE_F      EQU 6
+UNKNOWN_USE_F      EQU 5
+ALWAYS_USE_F       EQU 4
+SWITCH_SOMETIMES_F EQU 2
+SWITCH_RARELY_F    EQU 1
+SWITCH_OFTEN_F     EQU 0
+
+CONTEXT_USE        EQU 1 << CONTEXT_USE_F
+UNKNOWN_USE        EQU 1 << UNKNOWN_USE_F
+ALWAYS_USE         EQU 1 << ALWAYS_USE_F
+SWITCH_SOMETIMES   EQU 1 << SWITCH_SOMETIMES_F
+SWITCH_RARELY      EQU 1 << SWITCH_RARELY_F
+SWITCH_OFTEN       EQU 1 << SWITCH_OFTEN_F
+
+; TrainerTypes indexes (see trainers/read_party.asm)
 	const_def
-	const TRNATTR_ITEM1
-	const TRNATTR_ITEM2
-	const TRNATTR_BASEMONEY
-	const TRNATTR_AI_MOVE_WEIGHTS
-	const TRNATTR_AI2
-	const TRNATTR_AI_ITEM_SWITCH
-	const TRNATTR_AI4
-NUM_TRAINER_ATTRIBUTES EQU const_value
+	const TRAINERTYPE_NORMAL
+	const TRAINERTYPE_MOVES
+	const TRAINERTYPE_ITEM
+	const TRAINERTYPE_ITEM_MOVES
--- a/constants/type_constants.asm
+++ b/constants/type_constants.asm
@@ -1,3 +1,7 @@
+; TypeNames indexes (see text/types.asm)
+; also used in:
+; - TypeMatchup (see battle.type_matchup.asm)
+; - Pokedex_SearchForMons.TypeConversionTable and Pokedex_PlaceSearchScreenTypeStrings.TypeStrings (see engine/pokedex.asm)
 	const_def
 
 PHYSICAL EQU const_value
--- a/constants/wram_constants.asm
+++ b/constants/wram_constants.asm
@@ -1,4 +1,3 @@
-
 ; MonType: ; cf5f
 PARTYMON   EQU 0
 OTPARTYMON EQU 1
@@ -103,3 +102,35 @@
 	const DEXMODE_OLD
 	const DEXMODE_ABC
 	const DEXMODE_UNOWN
+
+; JohtoBadges:
+	const_def
+	const ZEPHYRBADGE
+	const HIVEBADGE
+	const PLAINBADGE
+	const FOGBADGE
+	const MINERALBADGE
+	const STORMBADGE
+	const GLACIERBADGE
+	const RISINGBADGE
+NUM_JOHTO_BADGES EQU const_value
+
+; KantoBadges:
+	const_def
+	const BOULDERBADGE
+	const CASCADEBADGE
+	const THUNDERBADGE
+	const RAINBOWBADGE
+	const SOULBADGE
+	const MARSHBADGE
+	const VOLCANOBADGE
+	const EARTHBADGE
+NUM_KANTO_BADGES EQU const_value
+NUM_BADGES EQU NUM_JOHTO_BADGES + NUM_KANTO_BADGES
+
+; wInitListType:
+INIT_ENEMYOT_LIST    EQU 1
+INIT_BAG_ITEM_LIST   EQU 2
+INIT_OTHER_ITEM_LIST EQU 3
+INIT_PLAYEROT_LIST   EQU 4
+INIT_MON_LIST        EQU 5
--- a/data/map_objects.asm
+++ b/data/map_objects.asm
@@ -1,3 +1,5 @@
+; entries correspond to SPRITEMOVEDATA_* constants
+
 sprite_movement_data: macro
 	db \1, \2, \3, \4, \5
 	dn \6, 0
--- a/data/sprite_engine.asm
+++ b/data/sprite_engine.asm
@@ -1,70 +1,71 @@
 SpriteAnimFrameData: ; 8d6e6
-	dw .Frameset_00 ; 00
-	dw .Frameset_01 ; 01
-	dw .Frameset_02 ; 02
-	dw .Frameset_03 ; 03
-	dw .Frameset_04 ; 04
-	dw .Frameset_05 ; 05
-	dw .Frameset_06 ; 06
-	dw .Frameset_07 ; 07
-	dw .Frameset_08 ; 08
-	dw .Frameset_09 ; 09
-	dw .Frameset_0a ; 0a
-	dw .Frameset_0b ; 0b
-	dw .Frameset_0c ; 0c
-	dw .Frameset_0d ; 0d
-	dw .Frameset_0e ; 0e
-	dw .Frameset_0f ; 0f
-	dw .Frameset_10 ; 10
-	dw .Frameset_11 ; 11
-	dw .Frameset_12 ; 12
-	dw .Frameset_13 ; 13
-	dw .Frameset_14 ; 14
-	dw .Frameset_15 ; 15
-	dw .Frameset_16 ; 16
-	dw .Frameset_17 ; 17
-	dw .Frameset_18 ; 18
-	dw .Frameset_19 ; 19
-	dw .Frameset_1a ; 1a
-	dw .Frameset_1b ; 1b
-	dw .Frameset_1c ; 1c
-	dw .Frameset_1d ; 1d
-	dw .Frameset_1e ; 1e
-	dw .Frameset_1f ; 1f
-	dw .Frameset_20 ; 20
-	dw .Frameset_21 ; 21
-	dw .Frameset_22 ; 22
-	dw .Frameset_23 ; 23
-	dw .Frameset_24 ; 24
-	dw .Frameset_25 ; 25 headbutt
-	dw .Frameset_26 ; 26
-	dw .Frameset_27 ; 27
-	dw .Frameset_28 ; 28
-	dw .Frameset_29 ; 29
-	dw .Frameset_2a ; 2a
-	dw .Frameset_2b ; 2b
-	dw .Frameset_2c ; 2c
-	dw .Frameset_2d ; 2d
-	dw .Frameset_2e ; 2e
-	dw .Frameset_2f ; 2f
-	dw .Frameset_30 ; 30
-	dw .Frameset_31 ; 31
-	dw .Frameset_32 ; 32
-	dw .Frameset_33 ; 33
-	dw .Frameset_34 ; 34
-	dw .Frameset_35 ; 35
-	dw .Frameset_36 ; 36
-	dw .Frameset_37 ; 37
-	dw .Frameset_38 ; 38
-	dw .Frameset_39 ; 39 unown in intro
-	dw .Frameset_3a ; 3a unown in intro
-	dw .Frameset_3b ; 3b unown in intro
-	dw .Frameset_3c ; 3c unown in intro
-	dw .Frameset_3d ; 3d
-	dw .Frameset_3e ; 3e
-	dw .Frameset_3f ; 3f
-	dw .Frameset_40 ; 40 celebi on the left
-	dw .Frameset_41 ; 41 celebi on the right
+; 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_TextEntryCursor
+	dw .Frameset_09
+	dw .Frameset_GameFreakLogo
+	dw .Frameset_GSIntroStar
+	dw .Frameset_GSIntroSparkle
+	dw .Frameset_SlotsGolem
+	dw .Frameset_SlotsChansey
+	dw .Frameset_SlotsChansey2
+	dw .Frameset_SlotsEgg
+	dw .Frameset_RedWalk
+	dw .Frameset_StillCursor
+	dw .Frameset_TradePokeBall
+	dw .Frameset_TradePokeBall0
+	dw .Frameset_TradePoof
+	dw .Frameset_TradeTubeBulge
+	dw .Frameset_TrademonIcon
+	dw .Frameset_TrademonBubble
+	dw .Frameset_EvolutionBallOfLight
+	dw .Frameset_RadioTuningKnob
+	dw .Frameset_MagnetTrainRed
+	dw .Frameset_1c
+	dw .Frameset_Leaf
+	dw .Frameset_CutTree
+	dw .Frameset_EggCrack
+	dw .Frameset_EggHatch
+	dw .Frameset_21
+	dw .Frameset_22
+	dw .Frameset_23
+	dw .Frameset_24
+	dw .Frameset_HeadbuttTree
+	dw .Frameset_26
+	dw .Frameset_27
+	dw .Frameset_28
+	dw .Frameset_29
+	dw .Frameset_2a
+	dw .Frameset_2b
+	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_IntroSuicune
+	dw .Frameset_IntroSuicune2
+	dw .Frameset_IntroPichu
+	dw .Frameset_IntroWooper
+	dw .Frameset_IntroUnown1
+	dw .Frameset_IntroUnown2
+	dw .Frameset_IntroUnown3
+	dw .Frameset_IntroUnown4
+	dw .Frameset_IntroUnownF2
+	dw .Frameset_IntroSuicuneAway
+	dw .Frameset_IntroUnownF
+	dw .Frameset_CelebiLeft
+	dw .Frameset_CelebiRight
 ; 8d76a
 
 .Frameset_00:
@@ -71,7 +72,7 @@
 	frame SPRITE_ANIM_FRAME_IDX_00, 32
 	endanim
 
-.Frameset_01:
+.Frameset_PartyMon:
 	frame SPRITE_ANIM_FRAME_IDX_00,  8
 	frame SPRITE_ANIM_FRAME_IDX_01,  8
 	dorestart
@@ -101,7 +102,7 @@
 	frame SPRITE_ANIM_FRAME_IDX_40,  4
 	dorestart
 
-.Frameset_11:
+.Frameset_RedWalk:
 	frame SPRITE_ANIM_FRAME_IDX_00,  8
 	frame SPRITE_ANIM_FRAME_IDX_01,  8
 	frame SPRITE_ANIM_FRAME_IDX_00,  8
@@ -108,7 +109,7 @@
 	frame SPRITE_ANIM_FRAME_IDX_01,  8, OAM_X_FLIP
 	dorestart
 
-.Frameset_2d:
+.Frameset_BlueWalk:
 	frame SPRITE_ANIM_FRAME_IDX_63,  8
 	frame SPRITE_ANIM_FRAME_IDX_64,  8
 	frame SPRITE_ANIM_FRAME_IDX_63,  8
@@ -115,7 +116,7 @@
 	frame SPRITE_ANIM_FRAME_IDX_64,  8, OAM_X_FLIP
 	dorestart
 
-.Frameset_2e:
+.Frameset_MagnetTrainBlue:
 	frame SPRITE_ANIM_FRAME_IDX_65,  8
 	frame SPRITE_ANIM_FRAME_IDX_66,  8
 	frame SPRITE_ANIM_FRAME_IDX_65,  8
@@ -127,7 +128,7 @@
 	frame SPRITE_ANIM_FRAME_IDX_1F,  1
 	dorestart
 
-.Frameset_08:
+.Frameset_TextEntryCursor:
 	frame SPRITE_ANIM_FRAME_IDX_20,  1
 	dorepeat  1
 	dorestart
@@ -137,7 +138,7 @@
 	dorepeat  1
 	dorestart
 
-.Frameset_0a:
+.Frameset_GameFreakLogo:
 	frame SPRITE_ANIM_FRAME_IDX_81, 12
 	frame SPRITE_ANIM_FRAME_IDX_82,  1
 	frame SPRITE_ANIM_FRAME_IDX_83,  1
@@ -155,12 +156,12 @@
 	frame SPRITE_ANIM_FRAME_IDX_8B,  7
 	endanim
 
-.Frameset_0b:
+.Frameset_GSIntroStar:
 	frame SPRITE_ANIM_FRAME_IDX_23,  3
 	frame SPRITE_ANIM_FRAME_IDX_23,  3, OAM_Y_FLIP
 	dorestart
 
-.Frameset_0c:
+.Frameset_GSIntroSparkle:
 	frame SPRITE_ANIM_FRAME_IDX_24,  2
 	frame SPRITE_ANIM_FRAME_IDX_25,  2
 	frame SPRITE_ANIM_FRAME_IDX_26,  2
@@ -167,7 +168,7 @@
 	frame SPRITE_ANIM_FRAME_IDX_25,  2
 	dorestart
 
-.Frameset_0d:
+.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
@@ -174,7 +175,7 @@
 	frame SPRITE_ANIM_FRAME_IDX_28,  7, OAM_X_FLIP
 	dorestart
 
-.Frameset_0e:
+.Frameset_SlotsChansey:
 	frame SPRITE_ANIM_FRAME_IDX_29,  7
 	frame SPRITE_ANIM_FRAME_IDX_2A,  7
 	frame SPRITE_ANIM_FRAME_IDX_29,  7
@@ -181,7 +182,7 @@
 	frame SPRITE_ANIM_FRAME_IDX_2B,  7
 	dorestart
 
-.Frameset_0f:
+.Frameset_SlotsChansey2:
 	frame SPRITE_ANIM_FRAME_IDX_29,  7
 	frame SPRITE_ANIM_FRAME_IDX_2C,  7
 	frame SPRITE_ANIM_FRAME_IDX_2D,  7
@@ -189,19 +190,19 @@
 	frame SPRITE_ANIM_FRAME_IDX_29,  7
 	endanim
 
-.Frameset_10:
+.Frameset_SlotsEgg:
 	frame SPRITE_ANIM_FRAME_IDX_2E, 20
 	endanim
 
-.Frameset_12:
+.Frameset_StillCursor:
 	frame SPRITE_ANIM_FRAME_IDX_2F, 32
 	endanim
 
-.Frameset_13:
+.Frameset_TradePokeBall:
 	frame SPRITE_ANIM_FRAME_IDX_30, 32
 	endanim
 
-.Frameset_14:
+.Frameset_TradePokeBall0:
 	frame SPRITE_ANIM_FRAME_IDX_30,  3
 	frame SPRITE_ANIM_FRAME_IDX_31,  3
 	frame SPRITE_ANIM_FRAME_IDX_30,  3
@@ -208,37 +209,37 @@
 	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
 	dorestart
 
-.Frameset_15:
+.Frameset_TradePoof:
 	frame SPRITE_ANIM_FRAME_IDX_32,  4
 	frame SPRITE_ANIM_FRAME_IDX_33,  4
 	frame SPRITE_ANIM_FRAME_IDX_34,  4
 	delanim
 
-.Frameset_16:
+.Frameset_TradeTubeBulge:
 	frame SPRITE_ANIM_FRAME_IDX_35,  3
 	frame SPRITE_ANIM_FRAME_IDX_36,  3
 	dorestart
 
-.Frameset_17:
+.Frameset_TrademonIcon:
 	frame SPRITE_ANIM_FRAME_IDX_37,  7
 	frame SPRITE_ANIM_FRAME_IDX_38,  7
 	dorestart
 
-.Frameset_18:
+.Frameset_TrademonBubble:
 	frame SPRITE_ANIM_FRAME_IDX_39, 32
 	endanim
 
-.Frameset_19:
+.Frameset_EvolutionBallOfLight:
 	frame SPRITE_ANIM_FRAME_IDX_3B,  2
 	frame SPRITE_ANIM_FRAME_IDX_3A,  2
 	frame SPRITE_ANIM_FRAME_IDX_3B,  2
 	endanim
 
-.Frameset_1a:
+.Frameset_RadioTuningKnob:
 	frame SPRITE_ANIM_FRAME_IDX_3C, 32
 	endanim
 
-.Frameset_1b:
+.Frameset_MagnetTrainRed:
 	frame SPRITE_ANIM_FRAME_IDX_41,  8
 	frame SPRITE_ANIM_FRAME_IDX_42,  8
 	frame SPRITE_ANIM_FRAME_IDX_41,  8
@@ -292,11 +293,11 @@
 	dorepeat 32
 	endanim
 
-.Frameset_1d:
+.Frameset_Leaf:
 	frame SPRITE_ANIM_FRAME_IDX_4F, 32
 	endanim
 
-.Frameset_1e:
+.Frameset_CutTree:
 	frame SPRITE_ANIM_FRAME_IDX_50,  2
 	frame SPRITE_ANIM_FRAME_IDX_51, 16
 	dorepeat  1
@@ -305,11 +306,11 @@
 	frame SPRITE_ANIM_FRAME_IDX_53,  1
 	delanim
 
-.Frameset_1f:
+.Frameset_EggCrack:
 	frame SPRITE_ANIM_FRAME_IDX_54, 32
 	endanim
 
-.Frameset_20:
+.Frameset_EggHatch:
 	frame SPRITE_ANIM_FRAME_IDX_55, 32
 	endanim
 
@@ -334,7 +335,7 @@
 	frame SPRITE_ANIM_FRAME_IDX_5A, 10
 	dorestart
 
-.Frameset_25:
+.Frameset_HeadbuttTree:
 	frame SPRITE_ANIM_FRAME_IDX_50,  2
 	frame SPRITE_ANIM_FRAME_IDX_5B,  2
 	frame SPRITE_ANIM_FRAME_IDX_50,  2
@@ -424,7 +425,7 @@
 	frame SPRITE_ANIM_FRAME_IDX_6B,  2
 	delanim
 
-.Frameset_35:
+.Frameset_IntroSuicune:
 	frame SPRITE_ANIM_FRAME_IDX_6E,  3
 	frame SPRITE_ANIM_FRAME_IDX_6F,  3
 	frame SPRITE_ANIM_FRAME_IDX_70,  3
@@ -431,46 +432,46 @@
 	frame SPRITE_ANIM_FRAME_IDX_71,  3
 	dorestart
 
-.Frameset_36:
+.Frameset_IntroSuicune2:
 	frame SPRITE_ANIM_FRAME_IDX_71,  3
 	frame SPRITE_ANIM_FRAME_IDX_6E,  7
 	endanim
 
-.Frameset_37:
+.Frameset_IntroPichu:
 	frame SPRITE_ANIM_FRAME_IDX_72, 32
 	frame SPRITE_ANIM_FRAME_IDX_73,  7
 	frame SPRITE_ANIM_FRAME_IDX_74,  7
 	endanim
 
-.Frameset_38:
+.Frameset_IntroWooper:
 	frame SPRITE_ANIM_FRAME_IDX_75,  3
 	endanim
 
-.Frameset_39:
+.Frameset_IntroUnown1:
 	frame SPRITE_ANIM_FRAME_IDX_76,  3
 	frame SPRITE_ANIM_FRAME_IDX_77,  3
 	frame SPRITE_ANIM_FRAME_IDX_78,  7
 	delanim
 
-.Frameset_3a:
+.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
 	delanim
 
-.Frameset_3b:
+.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
 	delanim
 
-.Frameset_3c:
+.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
 	delanim
 
-.Frameset_3d:
+.Frameset_IntroUnownF2:
 	frame SPRITE_ANIM_FRAME_IDX_79,  3
 	frame SPRITE_ANIM_FRAME_IDX_7A,  3
 	frame SPRITE_ANIM_FRAME_IDX_7B,  3
@@ -478,20 +479,20 @@
 	frame SPRITE_ANIM_FRAME_IDX_7D,  7
 	endanim
 
-.Frameset_3e:
+.Frameset_IntroSuicuneAway:
 	frame SPRITE_ANIM_FRAME_IDX_7E,  3
 	endanim
 
-.Frameset_3f:
+.Frameset_IntroUnownF:
 	dorepeat 0
 	endanim
 
-.Frameset_40:
+.Frameset_CelebiLeft:
 	frame SPRITE_ANIM_FRAME_IDX_7F,  8
 	frame SPRITE_ANIM_FRAME_IDX_80,  8
 	endanim
 
-.Frameset_41:
+.Frameset_CelebiRight:
 	frame SPRITE_ANIM_FRAME_IDX_7F,  8, OAM_X_FLIP
 	frame SPRITE_ANIM_FRAME_IDX_80,  8, OAM_X_FLIP
 	endanim
@@ -498,6 +499,7 @@
 ; 8d94d
 
 SpriteAnimOAMData: ; 8d94d
+; entries correspond to SPRITE_ANIM_FRAME_IDX_* constants
 	; vtile offset, pointer
 	dbw $00, .OAMData_00 ; 00
 	dbw $04, .OAMData_00 ; 01
@@ -1632,6 +1634,7 @@
 	dsprite  0,  0,  0,  4, $52, $01
 	dsprite  0,  0,  1,  4, $53, $01
 ; 8e706
+
 BrokenStdGFXPointers: ; Broken 2bpp pointers
 	dbbw $80, $01, .deleted ; 128-tile 2bpp at 1:672a (inside Multiply)
 	dbbw $80, $01, .deleted
--- a/engine/breeding/egg.asm
+++ b/engine/breeding/egg.asm
@@ -803,7 +803,7 @@
 	add 9 * 8 + 4
 	ld d, a
 	ld e, 11 * 8
-	ld a, SPRITE_ANIM_INDEX_19
+	ld a, SPRITE_ANIM_INDEX_EGG_CRACK
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
@@ -833,7 +833,7 @@
 	push hl
 	push bc
 
-	ld a, SPRITE_ANIM_INDEX_1C
+	ld a, SPRITE_ANIM_INDEX_EGG_HATCH
 	call _InitSpriteAnimStruct
 
 	ld hl, SPRITEANIMSTRUCT_TILE_ID
--- a/engine/crystal_intro.asm
+++ b/engine/crystal_intro.asm
@@ -773,7 +773,7 @@
 	call Intro_ResetLYOverrides
 	callba ClearSpriteAnims
 	depixel 13, 27, 4, 0
-	ld a, SPRITE_ANIM_INDEX_26
+	ld a, SPRITE_ANIM_INDEX_INTRO_SUICUNE
 	call _InitSpriteAnimStruct
 	ld a, $f0
 	ld [wGlobalAnimXOffset], a
@@ -866,7 +866,7 @@
 
 .pichu
 	depixel 21, 16, 1, 0
-	ld a, SPRITE_ANIM_INDEX_27
+	ld a, SPRITE_ANIM_INDEX_INTRO_PICHU
 	call _InitSpriteAnimStruct
 	ld de, SFX_INTRO_PICHU
 	call PlaySFX
@@ -874,7 +874,7 @@
 
 .wooper
 	depixel 22, 6
-	ld a, SPRITE_ANIM_INDEX_28
+	ld a, SPRITE_ANIM_INDEX_INTRO_WOOPER
 	call _InitSpriteAnimStruct
 	ld de, SFX_INTRO_PICHU
 	call PlaySFX
@@ -1054,7 +1054,7 @@
 	ld [hWY], a
 	callba ClearSpriteAnims
 	depixel 13, 11, 4, 0
-	ld a, SPRITE_ANIM_INDEX_26
+	ld a, SPRITE_ANIM_INDEX_INTRO_SUICUNE
 	call _InitSpriteAnimStruct
 	ld de, MUSIC_CRYSTAL_OPENING
 	call PlayMusic
@@ -1165,10 +1165,10 @@
 	callba ClearSpriteAnims
 	call Intro_SetCGBPalUpdate
 	depixel 8, 5
-	ld a, SPRITE_ANIM_INDEX_2A
+	ld a, SPRITE_ANIM_INDEX_INTRO_UNOWN_F
 	call _InitSpriteAnimStruct
 	depixel 12, 0
-	ld a, SPRITE_ANIM_INDEX_2B
+	ld a, SPRITE_ANIM_INDEX_INTRO_SUICUNE_AWAY
 	call _InitSpriteAnimStruct
 	xor a
 	ld [wIntroSceneFrameCounter], a
@@ -1317,7 +1317,7 @@
 	ld [hl], $7f
 	call Intro_SetCGBPalUpdate
 	depixel 12, 0
-	ld a, SPRITE_ANIM_INDEX_2B
+	ld a, SPRITE_ANIM_INDEX_INTRO_SUICUNE_AWAY
 	call _InitSpriteAnimStruct
 	xor a
 	ld [wIntroSceneFrameCounter], a
@@ -1617,7 +1617,7 @@
 
 CrystalIntro_InitUnownAnim: ; e51dc (39:51dc)
 	push de
-	ld a, SPRITE_ANIM_INDEX_29
+	ld a, SPRITE_ANIM_INDEX_INTRO_UNOWN
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
@@ -1627,7 +1627,7 @@
 	pop de
 
 	push de
-	ld a, SPRITE_ANIM_INDEX_29
+	ld a, SPRITE_ANIM_INDEX_INTRO_UNOWN
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
@@ -1637,7 +1637,7 @@
 	pop de
 
 	push de
-	ld a, SPRITE_ANIM_INDEX_29
+	ld a, SPRITE_ANIM_INDEX_INTRO_UNOWN
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
@@ -1646,7 +1646,7 @@
 	call ReinitSpriteAnimFrame
 	pop de
 
-	ld a, SPRITE_ANIM_INDEX_29
+	ld a, SPRITE_ANIM_INDEX_INTRO_UNOWN
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
--- a/engine/dummy_game.asm
+++ b/engine/dummy_game.asm
@@ -109,7 +109,7 @@
 
 .spawn_object
 	depixel 6, 3, 4, 4
-	ld a, SPRITE_ANIM_INDEX_COMPOSE_MAIL_CURSOR
+	ld a, SPRITE_ANIM_INDEX_DUMMY_GAME
 	call _InitSpriteAnimStruct
 	ld a, 5
 	ld [wDummyGameNumberTriesRemaining], a
--- a/engine/engine_flags.asm
+++ b/engine/engine_flags.asm
@@ -208,7 +208,7 @@
 	engine_flag WeeklyFlags, 6 ; move tutor
 	engine_flag WeeklyFlags, 7 ; buenas password
 
-	engine_flag SwarmFlags, 0 ; $60
+	engine_flag SwarmFlags, 0 ; buenas password 2
 	engine_flag SwarmFlags, 1 ; goldenrod dept store sale is on
 
 	engine_flag GameTimerPause, 7 ; $62
--- a/engine/evolution_animation.asm
+++ b/engine/evolution_animation.asm
@@ -316,7 +316,7 @@
 .GenerateBallOfLight: ; 4e7e8
 	push de
 	depixel 9, 11
-	ld a, SPRITE_ANIM_INDEX_13
+	ld a, SPRITE_ANIM_INDEX_EVOLUTION_BALL_OF_LIGHT
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
 	add hl, bc
--- a/engine/facings.asm
+++ b/engine/facings.asm
@@ -1,4 +1,5 @@
 Facings: ; 4049
+; entries correspond to FACING_* constants
 	dw FacingStepDown0
 	dw FacingStepDown1
 	dw FacingStepDown2
@@ -31,7 +32,8 @@
 	dw FacingBoulderDust2
 	dw FacingGrass1
 	dw FacingGrass2
-FacingsEnd: dw 0
+FacingsEnd:
+	dw 0
 
 NUM_FACINGS EQU (FacingsEnd - Facings) / 2
 
@@ -40,12 +42,6 @@
 
 ; Format:
 ;	db y, x, attributes, tile index
-
-; Attributes:
-X_FLIP    EQU 1 << OAM_X_FLIP
-Y_FLIP    EQU 1 << OAM_Y_FLIP
-BEHIND_BG EQU 1 << OAM_PRIORITY
-
 
 FacingStepDown0:
 FacingStepDown2:
--- a/engine/link.asm
+++ b/engine/link.asm
@@ -1143,7 +1143,7 @@
 	db ITEM_BE, BERRY
 	db ITEM_C3, BERRY
 	db ITEM_DC, BERRY
-	db HM_08,   BERRY
+	db ITEM_FA, BERRY
 	db -1,      BERRY
 	db  0
 ; 2879e
--- a/engine/map_object_action.asm
+++ b/engine/map_object_action.asm
@@ -1,36 +1,22 @@
-	ld hl, OBJECT_ACTION
-	add hl, bc
-	ld a, [hl]
-	ld l, a
-	ld h, 0
-	add hl, hl
-	add hl, hl
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	call _hl_
-	ret
-; 445f
-
-Pointers445f: ; 445f
-	dw SetFacingStanding,              SetFacingStanding ; 00
-	dw SetFacingStandAction,           SetFacingCurrent ; 01 standing?
-	dw SetFacingStepAction,            SetFacingCurrent ; 02 walking?
-	dw SetFacingBumpAction,            SetFacingCurrent ; 03 bumping?
-	dw SetFacingCounterclockwiseSpin,  SetFacingCurrent ; 04
-	dw SetFacingCounterclockwiseSpin2, SetFacingStanding ; 05
-	dw SetFacingFish,                  SetFacingFish ; 06
-	dw SetFacingShadow,                SetFacingStanding ; 07
-	dw SetFacingEmote,                 SetFacingEmote ; 08
-	dw SetFacingBigDollSym,            SetFacingBigDollSym ; 09
-	dw SetFacingBounce,                SetFacingFreezeBounce ; 0a
-	dw SetFacingWeirdTree,             SetFacingCurrent ; 0b
-	dw SetFacingBigDollAsym,           SetFacingBigDollAsym ; 0c
-	dw SetFacingBigDoll,               SetFacingBigDoll ; 0d
-	dw SetFacingBoulderDust,           SetFacingStanding ; 0e
-	dw SetFacingGrassShake,            SetFacingStanding ; 0f
-	dw SetFacingSkyfall,               SetFacingCurrent ; 10
+PersonActionPairPointers: ; 445f
+; entries correspond to PERSON_ACTION_* constants
+	dw SetFacingStanding,              SetFacingStanding
+	dw SetFacingStandAction,           SetFacingCurrent
+	dw SetFacingStepAction,            SetFacingCurrent
+	dw SetFacingBumpAction,            SetFacingCurrent
+	dw SetFacingCounterclockwiseSpin,  SetFacingCurrent
+	dw SetFacingCounterclockwiseSpin2, SetFacingStanding
+	dw SetFacingFish,                  SetFacingFish
+	dw SetFacingShadow,                SetFacingStanding
+	dw SetFacingEmote,                 SetFacingEmote
+	dw SetFacingBigDollSym,            SetFacingBigDollSym
+	dw SetFacingBounce,                SetFacingFreezeBounce
+	dw SetFacingWeirdTree,             SetFacingCurrent
+	dw SetFacingBigDollAsym,           SetFacingBigDollAsym
+	dw SetFacingBigDoll,               SetFacingBigDoll
+	dw SetFacingBoulderDust,           SetFacingStanding
+	dw SetFacingGrassShake,            SetFacingStanding
+	dw SetFacingSkyfall,               SetFacingCurrent
 ; 44a3
 
 SetFacingStanding: ; 44a3
--- a/engine/map_objects.asm
+++ b/engine/map_objects.asm
@@ -155,8 +155,8 @@
 	jr nz, SetFacingStanding
 	bit 5, [hl]
 	jr nz, asm_4448
-	ld de, Pointers445f ; use first column
-	jr asm_444d
+	ld de, PersonActionPairPointers ; use first column
+	jr _HandleObjectAction
 ; 4440
 
 Function4440: ; 4440
@@ -164,13 +164,28 @@
 	add hl, bc
 	bit INVISIBLE, [hl]
 	jr nz, SetFacingStanding
-asm_4448 ; use second column
-	ld de, Pointers445f + 2
-	jr asm_444d
+asm_4448
+	ld de, PersonActionPairPointers + 2 ; use second column
+	jr _HandleObjectAction
 ; 444d
 
-asm_444d
+_HandleObjectAction
 ; call [4 * ObjectStructs[ObjInd, OBJECT_ACTION] + de]
+	ld hl, OBJECT_ACTION
+	add hl, bc
+	ld a, [hl]
+	ld l, a
+	ld h, 0
+	add hl, hl
+	add hl, hl
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call _hl_
+	ret
+; 445f
+
 INCLUDE "engine/map_object_action.asm"
 
 CopyNextCoordsTileToStandingCoordsTile: ; 4600
@@ -535,6 +550,7 @@
 	ret
 
 .Pointers: ; 47e9
+; entries correspond to SPRITEMOVEFN_* constants
 	dw .Null_00 ; 00
 	dw .RandomWalkY ; 01
 	dw .RandomWalkX ; 02
@@ -1085,7 +1101,7 @@
 ; 4b45
 
 StepTypesJumptable: ; 4b45
-; These pointers use OBJECT_STEP_TYPE.  See constants/sprite_constants.asm
+; entries correspond to STEP_TYPE_* constants
 	dw ObjectMovementReset ; 00
 	dw MapObjectMovementPattern ; unused
 	dw NPCStep ; 02 npc walk
--- a/engine/mon_icons.asm
+++ b/engine/mon_icons.asm
@@ -178,7 +178,7 @@
 ; x coord
 	ld e, $10
 ; type is partymon icon
-	ld a, SPRITE_ANIM_INDEX_00
+	ld a, SPRITE_ANIM_INDEX_PARTY_MON
 	call InitSpriteAnimStruct
 	pop af
 	ld hl, SPRITEANIMSTRUCT_TILE_ID
@@ -215,7 +215,9 @@
 ; 8e95e (23:695e)
 
 .speeds ; 8e95e
-	db $00, $40, $80
+	db $00 ; HP_GREEN
+	db $40 ; HP_YELLOW
+	db $80 ; HP_RED
 ; 8e961
 
 NamingScreen_InitAnimatedMonIcon: ; 8e961 (23:6961)
@@ -225,7 +227,7 @@
 	xor a
 	call GetIconGFX
 	depixel 4, 4, 4, 0
-	ld a, SPRITE_ANIM_INDEX_00
+	ld a, SPRITE_ANIM_INDEX_PARTY_MON
 	call InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
 	add hl, bc
@@ -240,7 +242,7 @@
 	call GetIconGFX
 	ld d, 3 * 8 + 2
 	ld e, 4 * 8 + 4
-	ld a, SPRITE_ANIM_INDEX_00
+	ld a, SPRITE_ANIM_INDEX_PARTY_MON
 	call InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
 	add hl, bc
@@ -376,7 +378,7 @@
 	jr .ok
 
 .loadwithtwo
-	ld a, SPRITE_ANIM_SEQ_02
+	ld a, SPRITE_ANIM_SEQ_PARTY_MON_SWITCH
 
 .ok
 	push hl
@@ -407,7 +409,7 @@
 	ld b, h
 	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
 	add hl, bc
-	ld [hl], SPRITE_ANIM_SEQ_01
+	ld [hl], SPRITE_ANIM_SEQ_PARTY_MON
 	pop hl
 .next
 	ld bc, $10
@@ -428,11 +430,11 @@
 	jr z, .next
 	cp d
 	jr z, .is_switchmon
-	ld a, SPRITE_ANIM_SEQ_03
+	ld a, SPRITE_ANIM_SEQ_PARTY_MON_SELECTED
 	jr .join_back
 
 .is_switchmon
-	ld a, SPRITE_ANIM_SEQ_02
+	ld a, SPRITE_ANIM_SEQ_PARTY_MON_SWITCH
 .join_back
 	push hl
 	ld c, l
--- a/engine/mon_menu.asm
+++ b/engine/mon_menu.asm
@@ -9,8 +9,7 @@
 ; 24cd9
 
 MonMenuOptions: ; 24cd9
-
-; Moves
+; moves
 	db MONMENU_FIELD_MOVE, MONMENU_CUT,        CUT
 	db MONMENU_FIELD_MOVE, MONMENU_FLY,        FLY
 	db MONMENU_FIELD_MOVE, MONMENU_SURF,       SURF
@@ -25,8 +24,7 @@
 	db MONMENU_FIELD_MOVE, MONMENU_ROCKSMASH,  ROCK_SMASH
 	db MONMENU_FIELD_MOVE, MONMENU_MILKDRINK,  MILK_DRINK
 	db MONMENU_FIELD_MOVE, MONMENU_SWEETSCENT, SWEET_SCENT
-
-; Options
+; options
 	db MONMENU_MENUOPTION, MONMENU_STATS,      1 ; STATS
 	db MONMENU_MENUOPTION, MONMENU_SWITCH,     2 ; SWITCH
 	db MONMENU_MENUOPTION, MONMENU_ITEM,       3 ; ITEM
@@ -34,7 +32,6 @@
 	db MONMENU_MENUOPTION, MONMENU_MOVE,       5 ; MOVE
 	db MONMENU_MENUOPTION, MONMENU_MAIL,       6 ; MAIL
 	db MONMENU_MENUOPTION, MONMENU_ERROR,      7 ; ERROR!
-
 	db -1
 ; 24d19
 
@@ -216,7 +213,7 @@
 
 .skip2
 	ld a, [Buffer1]
-	cp NUM_MON_SUBMENU_ITEMS
+	cp NUM_MONMENU_ITEMS
 	jr z, .ok2
 	ld a, MONMENU_CANCEL
 	call AddMonMenuItem
@@ -261,7 +258,7 @@
 	xor a
 	ld [Buffer1], a
 	ld hl, Buffer2
-	ld bc, NUM_MON_SUBMENU_ITEMS + 1
+	ld bc, NUM_MONMENU_ITEMS + 1
 	call ByteFill
 	ret
 ; 24e76
--- a/engine/move_mon.asm
+++ b/engine/move_mon.asm
@@ -1543,7 +1543,7 @@
 	call Divide
 	ld a, c
 	cp STAT_HP
-	ld a, 5
+	ld a, STAT_MIN_NORMAL
 	jr nz, .not_hp
 	ld a, [CurPartyLevel]
 	ld b, a
@@ -1556,7 +1556,7 @@
 	ld [hMultiplicand + 1], a
 
 .no_overflow_3
-	ld a, 10
+	ld a, STAT_MIN_HP
 
 .not_hp
 	ld b, a
--- a/engine/namingscreen.asm
+++ b/engine/namingscreen.asm
@@ -419,7 +419,7 @@
 	jr nz, .got_cursor_position
 	ld d, 8 * 8
 .got_cursor_position
-	ld a, SPRITE_ANIM_INDEX_02
+	ld a, SPRITE_ANIM_INDEX_NAMING_SCREEN_CURSOR
 	call _InitSpriteAnimStruct
 	ld a, c
 	ld [wNamingScreenCursorObjectPointer], a
@@ -1039,7 +1039,7 @@
 
 	; init mail icon
 	depixel 3, 2
-	ld a, SPRITE_ANIM_INDEX_00
+	ld a, SPRITE_ANIM_INDEX_PARTY_MON
 	call _InitSpriteAnimStruct
 
 	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
@@ -1174,7 +1174,7 @@
 
 .init_blinking_cursor ; 1201b (4:601b)
 	depixel 9, 2
-	ld a, SPRITE_ANIM_INDEX_09
+	ld a, SPRITE_ANIM_INDEX_COMPOSE_MAIL_CURSOR
 	call _InitSpriteAnimStruct
 	ld a, c
 	ld [wNamingScreenCursorObjectPointer], a
--- a/engine/overworld.asm
+++ b/engine/overworld.asm
@@ -181,7 +181,7 @@
 	callba LoadEmote
 	call GetMapPermission
 	call CheckOutdoorMap
-	ld c, EMOTE_0B
+	ld c, EMOTE_GRASS_RUSTLE
 	jr z, .outdoor
 	ld c, EMOTE_BOULDER_DUST
 .outdoor
@@ -723,10 +723,7 @@
 ENDM
 
 EmotesPointers: ; 144d
-; dw source address
-; db length, bank
-; dw dest address
-
+; graphics address, length, starting tile
 	emote_header ShockEmote,     4, $78
 	emote_header QuestionEmote,  4, $78
 	emote_header HappyEmote,     4, $78
--- a/engine/phone.asm
+++ b/engine/phone.asm
@@ -769,7 +769,7 @@
 	db  \6
 	dba \7 ; script 2
 ENDM
-
+; entries correspond to PHONE_* constants
 	phone TRAINER_NONE, PHONE_00,              N_A,                       0, UnusedPhoneScript,   0, UnusedPhoneScript
 	phone TRAINER_NONE, PHONECONTACT_MOM,      KRISS_HOUSE_1F,            7, MomPhoneScript,      0, UnusedPhoneScript
 	phone TRAINER_NONE, PHONECONTACT_BIKESHOP, OAKS_LAB,                  0, UnusedPhoneScript,   0, UnusedPhoneScript
--- a/engine/pokegear.asm
+++ b/engine/pokegear.asm
@@ -751,7 +751,7 @@
 PokegearRadio_Init: ; 910f9 (24:50f9)
 	call InitPokegearTilemap
 	depixel 4, 10, 4, 4
-	ld a, SPRITE_ANIM_INDEX_14
+	ld a, SPRITE_ANIM_INDEX_RADIO_TUNING_KNOB
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
@@ -2910,7 +2910,7 @@
 	callba GetSpeciesIcon
 ; Animation/palette
 	depixel 0, 0
-	ld a, SPRITE_ANIM_INDEX_00
+	ld a, SPRITE_ANIM_INDEX_PARTY_MON
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
--- a/engine/radio.asm
+++ b/engine/radio.asm
@@ -234,7 +234,7 @@
 	jr z, .done
 .next
 	dec hl
-	ld de, WILDMON_GRASS_STRUCTURE_LENGTH
+	ld de, GRASS_WILDDATA_LENGTH
 	add hl, de
 	jr .loop
 
@@ -249,12 +249,12 @@
 	cp 3
 	jr z, .loop2
 
-	ld bc, 2 * NUM_WILDMONS_PER_AREA_TIME_OF_DAY
+	ld bc, 2 * NUM_GRASSMON
 	call AddNTimes
 .loop3
 	; Choose one of the middle three Pokemon.
 	call Random
-	and NUM_WILDMONS_PER_AREA_TIME_OF_DAY
+	and NUM_GRASSMON
 	cp 2
 	jr c, .loop3
 	cp 5
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -979,7 +979,7 @@
 	ret
 
 GetScriptPerson:
-	and a
+	and a ; PLAYER?
 	ret z
 	cp LAST_TALKED
 	ret z
@@ -2170,7 +2170,7 @@
 	ld b, a
 	push bc
 	inc hl
-	ld bc, MAIL_MAX_LENGTH
+	ld bc, MAIL_MSG_LENGTH
 	ld de, wd002
 	ld a, [ScriptBank]
 	call FarCopyBytes
@@ -2955,9 +2955,9 @@
 	ld e, [hl]
 	ld d, $0
 	ld hl, wScriptStack
-	add hl,de
-	add hl,de
-	add hl,de
+	add hl, de
+	add hl, de
+	add hl, de
 	ld a, [hli]
 	ld b, a
 	and " "
--- a/engine/slot_machine.asm
+++ b/engine/slot_machine.asm
@@ -1067,7 +1067,7 @@
 	push bc
 	push af
 	depixel 12, 13
-	ld a, SPRITE_ANIM_INDEX_SLOT_GOLEM
+	ld a, SPRITE_ANIM_INDEX_SLOTS_GOLEM
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_0E
 	add hl, bc
--- a/engine/spawn_points.asm
+++ b/engine/spawn_points.asm
@@ -50,9 +50,8 @@
 	jr z, .spawn_n_a
 	ld l, a
 	ld h, 0
-rept 2 ; multiply hl by 4
-	add hl,hl
-endr
+	add hl, hl
+	add hl, hl
 	ld de, SpawnPoints
 	add hl, de
 	ld a, [hli]
--- a/engine/specials.asm
+++ b/engine/specials.asm
@@ -2,9 +2,9 @@
 Special:: ; c01b
 ; Run script special de.
 	ld hl, SpecialsPointers
-	add hl,de
-	add hl,de
-	add hl,de
+	add hl, de
+	add hl, de
+	add hl, de
 	ld b, [hl]
 	inc hl
 	ld a, [hli]
--- a/engine/sprite_anims.asm
+++ b/engine/sprite_anims.asm
@@ -13,54 +13,54 @@
 ; 8d25b
 
 .Jumptable: ; 8d25b (23:525b)
-
-	dw .Null        ; null
-	dw .one         ; bouncing mon icon
-	dw .two         ; bouncing mon icon, selected
-	dw .three       ; bouncing mon icon, menu open
-	dw .four
+; entries correspond to SPRITE_ANIM_SEQ_* constants
+	dw .Null
+	dw .PartyMon
+	dw .PartyMonSwitch
+	dw .PartyMonSelected
+	dw .sprite_anim_seq_04
 	dw .namingscreencursor
-	dw .GameFreakLogo         ; Game Freak logo
-	dw .seven
-	dw .eight
-	dw .SlotsGolem        ; Something to do with slots
-	dw .SlotsChansey         ; Something to do with slots
-	dw .SlotsChanseyEgg      ; Something to do with slots
-	dw .mailcompositioncursor      ; blinking cursor
-	dw .thirteen
-	dw .fourteen
-	dw .fifteen
-	dw .sixteen
-	dw .seventeen
-	dw .eighteen
-	dw .EggShell    ; finish egg hatching animation
-	dw .RadioTuningKnob      ; radio tuning knob
-	dw .twentyone   ; cut grass leaves
-	dw .FlyFrom   ; flying sprite
-	dw .FlyLeaf ; flying leaves
-	dw .FlyTo  ; fly to
-	dw .twentyfive
-	dw .twentysix
-	dw .twentyseven
-	dw .twentyeight
-	dw .twentynine  ; intro suicune
-	dw .thirty      ; intro pichu wooper
-	dw .thirtyone   ; celebi
-	dw .thirtytwo   ; intro unown
-	dw .thirtythree ; intro unown F with suicune leaping up
-	dw .thirtyfour  ; intro suicune facing away from us
+	dw .GameFreakLogo
+	dw .GSIntroStar
+	dw .GSIntroSparkle
+	dw .SlotsGolem
+	dw .SlotsChansey
+	dw .SlotsChanseyEgg
+	dw .MailCursor
+	dw .sprite_anim_seq_0D
+	dw .sprite_anim_seq_0E
+	dw .sprite_anim_seq_0F
+	dw .TradePokeBall
+	dw .TradeTubeBulge
+	dw .TrademonInTube
+	dw .RevealNewMon
+	dw .RadioTuningKnob
+	dw .CutLeaves
+	dw .FlyFrom
+	dw .FlyLeaf
+	dw .FlyTo
+	dw .sprite_anim_seq_19
+	dw .sprite_anim_seq_1A
+	dw .sprite_anim_seq_1B
+	dw .sprite_anim_seq_1C
+	dw .IntroSuicune 
+	dw .IntroPichuWooper
+	dw .Celebi
+	dw .IntroUnown
+	dw .IntroUnownF
+	dw .IntroSuicuneAway
 
 
 .Null: ; 8d2a1 (23:52a1)
 	ret
 
-.one ; 8d2a2 (23:52a2)
+.PartyMon ; 8d2a2 (23:52a2)
 	ld a, [wMenuCursorY]
 
 	ld hl, SPRITEANIMSTRUCT_INDEX
 	add hl, bc
 	cp [hl]
-	jr z, .two
+	jr z, .PartyMonSwitch
 
 	ld hl, SPRITEANIMSTRUCT_XCOORD
 	add hl, bc
@@ -71,7 +71,7 @@
 	ld [hl], $0
 	ret
 
-.two ; 8d2b9 (23:52b9)
+.PartyMonSwitch ; 8d2b9 (23:52b9)
 	ld hl, SPRITEANIMSTRUCT_XCOORD
 	add hl, bc
 	ld [hl], 8 * 3
@@ -113,7 +113,7 @@
 	ld [hl], a
 	ret
 
-.three ; 8d2ea (23:52ea)
+.PartyMonSelected ; 8d2ea (23:52ea)
 	ld a, [wMenuCursorY]
 
 	ld hl, SPRITEANIMSTRUCT_INDEX
@@ -132,7 +132,7 @@
 	ld [hl], 8 * 3
 	ret
 
-.four ; 8d302 (23:5302)
+.sprite_anim_seq_04 ; 8d302 (23:5302)
 	call .AnonymousJumptable
 	jp hl
 ; 8d306 (23:5306)
@@ -203,7 +203,7 @@
 	ret
 ; 8d35a
 
-.twentyfive ; 8d35a (23:535a)
+.sprite_anim_seq_19 ; 8d35a (23:535a)
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
@@ -221,7 +221,7 @@
 	callab NamingScreen_AnimateCursor
 	ret
 
-.mailcompositioncursor ; 8d373 (23:5373)
+.MailCursor ; 8d373 (23:5373)
 	callab ComposeMail_AnimateCursor
 	ret
 
@@ -229,7 +229,7 @@
 	callab GameFreakLogoJumper
 	ret
 
-.seven ; 8d381 (23:5381)
+.GSIntroStar ; 8d381 (23:5381)
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
@@ -279,7 +279,7 @@
 	call DeinitializeSprite
 	ret
 
-.eight ; 8d3c3 (23:53c3)
+.GSIntroSparkle ; 8d3c3 (23:53c3)
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hli]
@@ -404,33 +404,33 @@
 	ld [hl], a
 	ret
 
-.thirteen ; 8d46e (23:546e)
+.sprite_anim_seq_0D ; 8d46e (23:546e)
 	callab ret_e00ed
 	ret
 
-.fifteen ; 8d475 (23:5475)
+.sprite_anim_seq_0F ; 8d475 (23:5475)
 	callab AnimatePokegearModeIndicatorArrow
 	ret
 
-.fourteen ; 8d47c (23:547c)
+.sprite_anim_seq_0E ; 8d47c (23:547c)
 	callab DummyGame_InterpretJoypad_AnimateCursor
 	ret
 
-.sixteen ; 8d483 (23:5483)
+.TradePokeBall ; 8d483 (23:5483)
 	call .AnonymousJumptable
 	jp hl
 ; 8d487 (23:5487)
 
 ; Anonymous dw (see .AnonymousJumptable)
-	dw .sixteen_zero
-	dw .sixteen_one
-	dw .sixteen_two
-	dw .sixteen_three
-	dw .sixteen_four
-	dw .sixteen_five
+	dw .TradePokeBall_zero
+	dw .TradePokeBall_one
+	dw .TradePokeBall_two
+	dw .TradePokeBall_three
+	dw .TradePokeBall_four
+	dw .TradePokeBall_five
 ; 8d493
 
-.sixteen_zero ; 8d493
+.TradePokeBall_zero ; 8d493
 	ld a, SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL_0
 	call _ReinitSpriteAnimFrame
 
@@ -444,7 +444,7 @@
 	ret
 ; 8d4a5
 
-.sixteen_two ; 8d4a5
+.TradePokeBall_two ; 8d4a5
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
@@ -460,7 +460,7 @@
 	add hl, bc
 	ld [hl], $40
 
-.sixteen_three ; 8d4b8
+.TradePokeBall_three ; 8d4b8
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
@@ -478,10 +478,10 @@
 .asm_8d4cd
 	ld de, SFX_GOT_SAFARI_BALLS
 	call PlaySFX
-	jr .sixteen_five
+	jr .TradePokeBall_five
 ; 8d4d5
 
-.sixteen_one ; 8d4d5
+.TradePokeBall_one ; 8d4d5
 	ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
 	add hl, bc
 	ld [hl], $4
@@ -496,7 +496,7 @@
 	ret
 ; 8d4e8
 
-.sixteen_four ; 8d4e8
+.TradePokeBall_four ; 8d4e8
 	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld a, [hl]
@@ -542,12 +542,12 @@
 	call .IncrementJumptableIndex
 	ret
 
-.sixteen_five ; 8d526
+.TradePokeBall_five ; 8d526
 	call DeinitializeSprite
 	ret
 ; 8d52a
 
-.seventeen ; 8d52a (23:552a)
+.TradeTubeBulge ; 8d52a (23:552a)
 	ld hl, SPRITEANIMSTRUCT_XCOORD
 	add hl, bc
 	ld a, [hl]
@@ -565,11 +565,11 @@
 	call DeinitializeSprite
 	ret
 
-.eighteen ; 8d543 (23:5543)
+.TrademonInTube ; 8d543 (23:5543)
 	callab TradeAnim_AnimateTrademonInTube
 	ret
 
-.EggShell: ; 8d54a (23:554a)
+.RevealNewMon: ; 8d54a (23:554a)
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
@@ -610,7 +610,7 @@
 	callab AnimateTuningKnob
 	ret
 
-.twentyone ; 8d57f (23:557f)
+.CutLeaves ; 8d57f (23:557f)
 	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld e, [hl]
@@ -749,15 +749,15 @@
 	ld [hl], a
 	ret
 
-.twentyseven ; 8d630 (23:5630)
+.sprite_anim_seq_1B ; 8d630 (23:5630)
 	callba Function108bc7
 	ret
 
-.twentyeight ; 8d637 (23:5637)
+.sprite_anim_seq_1C ; 8d637 (23:5637)
 	callba Function108be0
 	ret
 
-.twentynine ; 8d63e (23:563e)
+.IntroSuicune ; 8d63e (23:563e)
 	ld a, [wcf65]
 	and a
 	jr nz, .asm_8d645
@@ -784,7 +784,7 @@
 	call _ReinitSpriteAnimFrame
 	ret
 
-.thirty ; 8d666 (23:5666)
+.IntroPichuWooper ; 8d666 (23:5666)
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
@@ -803,7 +803,7 @@
 .asm_8d67f
 	ret
 
-.thirtytwo ; 8d680 (23:5680)
+.IntroUnown ; 8d680 (23:5680)
 	ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
 	add hl, bc
 	ld d, [hl]
@@ -830,7 +830,7 @@
 	ld [hl], a
 	ret
 
-.thirtythree ; 8d6a2 (23:56a2)
+.IntroUnownF ; 8d6a2 (23:56a2)
 	ld a, [wcf64]
 	cp $40
 	ret nz
@@ -838,7 +838,7 @@
 	call _ReinitSpriteAnimFrame
 	ret
 
-.thirtyfour ; 8d6ae (23:56ae)
+.IntroSuicuneAway ; 8d6ae (23:56ae)
 	ld hl, SPRITEANIMSTRUCT_YCOORD
 	add hl, bc
 	ld a, [hl]
@@ -846,11 +846,11 @@
 	ld [hl], a
 	ret
 
-.twentysix ; 8d6b7 (23:56b7)
+.sprite_anim_seq_1A ; 8d6b7 (23:56b7)
 	callba AnimateEZChatCursor
 	ret
 
-.thirtyone ; 8d6be (23:56be)
+.Celebi ; 8d6be (23:56be)
 	callba UpdateCelebiPosition
 	ret
 
--- a/engine/sprites.asm
+++ b/engine/sprites.asm
@@ -551,51 +551,97 @@
 ; 8d1c4
 
 SpriteAnimSeqData: ; 8d1c4
+; entries correspond to SPRITE_ANIM_INDEX_* constants
 	; frameset sequence, tile
-	db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_SEQ_01, $00 ; 00
-	db SPRITE_ANIM_FRAMESET_07, SPRITE_ANIM_SEQ_04, $00 ; 01
-	db SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR, SPRITE_ANIM_SEQ_05, $05 ; 02
-	db SPRITE_ANIM_FRAMESET_GAMEFREAK_LOGO, SPRITE_ANIM_SEQ_GAMEFREAK_LOGO, $00 ; 03
-	db SPRITE_ANIM_FRAMESET_0B, SPRITE_ANIM_SEQ_07, $06 ; 04 gs intro star
-	db SPRITE_ANIM_FRAMESET_0C, SPRITE_ANIM_SEQ_08, $06 ; 05 gs intro sparkle
-	db SPRITE_ANIM_FRAMESET_SLOTS_GOLEM, SPRITE_ANIM_SEQ_SLOT_GOLEM, $07 ; 06 slots golem
-	db SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY, SPRITE_ANIM_SEQ_SLOTS_CHANSEY, $07 ; 07 slots chansey
-	db SPRITE_ANIM_FRAMESET_SLOTS_EGG, SPRITE_ANIM_SEQ_SLOTS_EGG, $07 ; 08 slots egg
-	db SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR, SPRITE_ANIM_SEQ_0C, $05 ; 09
-	db SPRITE_ANIM_FRAMESET_WALK_CYCLE, SPRITE_ANIM_SEQ_NULL, $00 ; 0a walk cycle
-	db SPRITE_ANIM_FRAMESET_STILL_CURSOR, SPRITE_ANIM_SEQ_0D, $08 ; 0b
-	db SPRITE_ANIM_FRAMESET_STILL_CURSOR, SPRITE_ANIM_SEQ_0E, $08 ; 0c
-	db SPRITE_ANIM_FRAMESET_STILL_CURSOR, SPRITE_ANIM_SEQ_0F, $08 ; 0d
-	db SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL, SPRITE_ANIM_SEQ_10, $00 ; 0e
-	db SPRITE_ANIM_FRAMESET_TRADE_POOF, SPRITE_ANIM_SEQ_NULL, $00 ; 0f
-	db SPRITE_ANIM_FRAMESET_TRADE_TUBE_BULGE, SPRITE_ANIM_SEQ_11, $00 ; 10
-	db SPRITE_ANIM_FRAMESET_TRADEMON_ICON, SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE, $00 ; 11
-	db SPRITE_ANIM_FRAMESET_TRADEMON_BUBBLE, SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE, $00 ; 12
-	db SPRITE_ANIM_FRAMESET_EVOLUTION_BALL_OF_LIGHT, SPRITE_ANIM_SEQ_13, $00 ; 13
-	db SPRITE_ANIM_FRAMESET_RADIO_TUNING_KNOB, SPRITE_ANIM_SEQ_14, $00 ; 14 radio tuning knob
-	db SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_RED, SPRITE_ANIM_SEQ_NULL, $00 ; 15 chris on magnet train
-	db SPRITE_ANIM_FRAMESET_LEAF, SPRITE_ANIM_SEQ_15, $00 ; 16 leaves when cutting down a tree
-	db SPRITE_ANIM_FRAMESET_CUT_TREE, SPRITE_ANIM_SEQ_NULL, $00 ; 17
-	db SPRITE_ANIM_FRAMESET_LEAF, SPRITE_ANIM_SEQ_FLY_LEAF, $00 ; 18 flying leaves
-	db SPRITE_ANIM_FRAMESET_EGG_CRACK, SPRITE_ANIM_SEQ_NULL, $00 ; 19
-	db SPRITE_ANIM_FRAMESET_24, SPRITE_ANIM_SEQ_19, $00 ; 1a
-	db SPRITE_ANIM_FRAMESET_HEADBUTT, SPRITE_ANIM_SEQ_NULL, $00 ; 1b headbutt
-	db SPRITE_ANIM_FRAMESET_EGG_HATCH, SPRITE_ANIM_SEQ_13, $00 ; 1c
-	db SPRITE_ANIM_FRAMESET_26, SPRITE_ANIM_SEQ_1A, $00 ; 1d
-	db SPRITE_ANIM_FRAMESET_BLUE_WALK, SPRITE_ANIM_SEQ_NULL, $00 ; 1e kris on map
-	db SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_BLUE, SPRITE_ANIM_SEQ_NULL, $00 ; 1f kris on magnet train
-	db SPRITE_ANIM_FRAMESET_2F, SPRITE_ANIM_SEQ_NULL, $00 ; 20
-	db SPRITE_ANIM_FRAMESET_30, SPRITE_ANIM_SEQ_NULL, $00 ; 21
-	db SPRITE_ANIM_FRAMESET_31, SPRITE_ANIM_SEQ_NULL, $00 ; 22
-	db SPRITE_ANIM_FRAMESET_32, SPRITE_ANIM_SEQ_1B, $00 ; 23
-	db SPRITE_ANIM_FRAMESET_33, SPRITE_ANIM_SEQ_1C, $00 ; 24
-	db SPRITE_ANIM_FRAMESET_34, SPRITE_ANIM_SEQ_NULL, $00 ; 25
-	db SPRITE_ANIM_FRAMESET_INTRO_SUICUNE, SPRITE_ANIM_SEQ_1D, $00 ; 26
-	db SPRITE_ANIM_FRAMESET_INTRO_PICHU, SPRITE_ANIM_SEQ_1E, $00 ; 27
-	db SPRITE_ANIM_FRAMESET_INTRO_WOOPER, SPRITE_ANIM_SEQ_1E, $00 ; 28
-	db SPRITE_ANIM_FRAMESET_INTRO_UNOWN_1, SPRITE_ANIM_SEQ_20, $00 ; 29 intro unown
-	db SPRITE_ANIM_FRAMESET_INTRO_UNOWN_F, SPRITE_ANIM_SEQ_21, $00 ; 2a
-	db SPRITE_ANIM_FRAMESET_INTRO_SUICUNE_AWAY, SPRITE_ANIM_SEQ_22, $00 ; 2b
+; 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_NAMING_SCREEN_CURSOR
+	db SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR, SPRITE_ANIM_SEQ_NAMING_SCREEN_CURSOR, $05
+; SPRITE_ANIM_INDEX_GAMEFREAK_LOGO
+	db SPRITE_ANIM_FRAMESET_GAMEFREAK_LOGO, SPRITE_ANIM_SEQ_GAMEFREAK_LOGO, $00
+; SPRITE_ANIM_INDEX_GS_INTRO_STAR
+	db SPRITE_ANIM_FRAMESET_GS_INTRO_STAR, SPRITE_ANIM_SEQ_GS_INTRO_STAR, $06
+; SPRITE_ANIM_INDEX_GS_INTRO_SPARKLE
+	db SPRITE_ANIM_FRAMESET_GS_INTRO_SPARKLE, SPRITE_ANIM_SEQ_GS_INTRO_SPARKLE, $06
+; SPRITE_ANIM_INDEX_SLOTS_GOLEM
+	db SPRITE_ANIM_FRAMESET_SLOTS_GOLEM, SPRITE_ANIM_SEQ_SLOTS_GOLEM, $07
+; SPRITE_ANIM_INDEX_SLOTS_CHANSEY
+	db SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY, SPRITE_ANIM_SEQ_SLOTS_CHANSEY, $07
+; SPRITE_ANIM_INDEX_SLOTS_EGG
+	db SPRITE_ANIM_FRAMESET_SLOTS_EGG, SPRITE_ANIM_SEQ_SLOTS_EGG, $07
+; SPRITE_ANIM_INDEX_COMPOSE_MAIL_CURSOR
+	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_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
+; 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
+	db SPRITE_ANIM_FRAMESET_TRADE_POOF, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_TRADE_TUBE_BULGE
+	db SPRITE_ANIM_FRAMESET_TRADE_TUBE_BULGE, SPRITE_ANIM_SEQ_TRADE_TUBE_BULGE, $00
+; SPRITE_ANIM_INDEX_TRADEMON_ICON
+	db SPRITE_ANIM_FRAMESET_TRADEMON_ICON, SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE, $00
+; SPRITE_ANIM_INDEX_TRADEMON_BUBBLE
+	db SPRITE_ANIM_FRAMESET_TRADEMON_BUBBLE, SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE, $00
+; SPRITE_ANIM_INDEX_EVOLUTION_BALL_OF_LIGHT
+	db SPRITE_ANIM_FRAMESET_EVOLUTION_BALL_OF_LIGHT, SPRITE_ANIM_SEQ_REVEAL_NEW_MON, $00
+; SPRITE_ANIM_INDEX_RADIO_TUNING_KNOB
+	db SPRITE_ANIM_FRAMESET_RADIO_TUNING_KNOB, SPRITE_ANIM_SEQ_RADIO_TUNING_KNOB, $00
+; SPRITE_ANIM_INDEX_MAGNET_TRAIN_RED
+	db SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_RED, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_LEAF
+	db SPRITE_ANIM_FRAMESET_LEAF, SPRITE_ANIM_SEQ_CUT_LEAVES, $00
+; SPRITE_ANIM_INDEX_CUT_TREE
+	db SPRITE_ANIM_FRAMESET_CUT_TREE, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_FLY_LEAF
+	db SPRITE_ANIM_FRAMESET_LEAF, SPRITE_ANIM_SEQ_FLY_LEAF, $00
+; SPRITE_ANIM_INDEX_EGG_CRACK
+	db SPRITE_ANIM_FRAMESET_EGG_CRACK, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_1A
+	db SPRITE_ANIM_FRAMESET_24, SPRITE_ANIM_SEQ_19, $00
+; SPRITE_ANIM_INDEX_HEADBUTT
+	db SPRITE_ANIM_FRAMESET_HEADBUTT, SPRITE_ANIM_SEQ_NULL, $00
+; SPRITE_ANIM_INDEX_EGG_HATCH
+	db SPRITE_ANIM_FRAMESET_EGG_HATCH, SPRITE_ANIM_SEQ_REVEAL_NEW_MON, $00
+; SPRITE_ANIM_INDEX_1D
+	db SPRITE_ANIM_FRAMESET_26, SPRITE_ANIM_SEQ_1A, $00
+; SPRITE_ANIM_INDEX_BLUE_WALK
+	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_INTRO_SUICUNE
+	db SPRITE_ANIM_FRAMESET_INTRO_SUICUNE, SPRITE_ANIM_SEQ_INTRO_SUICUNE, $00
+; SPRITE_ANIM_INDEX_INTRO_PICHU
+	db SPRITE_ANIM_FRAMESET_INTRO_PICHU, SPRITE_ANIM_SEQ_INTRO_PICHU_WOOPER, $00
+; SPRITE_ANIM_INDEX_INTRO_WOOPER
+	db SPRITE_ANIM_FRAMESET_INTRO_WOOPER, SPRITE_ANIM_SEQ_INTRO_PICHU_WOOPER, $00
+; SPRITE_ANIM_INDEX_INTRO_UNOWN
+	db SPRITE_ANIM_FRAMESET_INTRO_UNOWN_1, SPRITE_ANIM_SEQ_INTRO_UNOWN, $00
+; SPRITE_ANIM_INDEX_INTRO_UNOWN_F
+	db SPRITE_ANIM_FRAMESET_INTRO_UNOWN_F, SPRITE_ANIM_SEQ_INTRO_UNOWN_F, $00
+; SPRITE_ANIM_INDEX_INTRO_SUICUNE_AWAY
+	db SPRITE_ANIM_FRAMESET_INTRO_SUICUNE_AWAY, SPRITE_ANIM_SEQ_INTRO_SUICUNE_AWAY, $00
+; SPRITE_ANIM_INDEX_CELEBI
 	db SPRITE_ANIM_FRAMESET_CELEBI_LEFT, SPRITE_ANIM_SEQ_NULL, $00 ; 2c
 ; 8d24b
 
--- a/engine/trade/animation.asm
+++ b/engine/trade/animation.asm
@@ -1110,7 +1110,7 @@
 
 TradeAnim_RockingBall: ; 2961b
 	depixel 10, 11, 4, 0
-	ld a, SPRITE_ANIM_INDEX_0E
+	ld a, SPRITE_ANIM_INDEX_TRADE_POKE_BALL
 	call _InitSpriteAnimStruct
 	call TradeAnim_AdvanceScriptPointer
 	ld a, $20
@@ -1121,7 +1121,7 @@
 
 TradeAnim_DropBall: ; 2962c
 	depixel 10, 11, 4, 0
-	ld a, SPRITE_ANIM_INDEX_0E
+	ld a, SPRITE_ANIM_INDEX_TRADE_POKE_BALL
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
 	add hl, bc
@@ -1138,7 +1138,7 @@
 
 TradeAnim_Poof: ; 29649
 	depixel 10, 11, 4, 0
-	ld a, SPRITE_ANIM_INDEX_0F
+	ld a, SPRITE_ANIM_INDEX_TRADE_POOF
 	call _InitSpriteAnimStruct
 	call TradeAnim_AdvanceScriptPointer
 	ld a, $10
@@ -1153,7 +1153,7 @@
 	ld a, %11100100 ; 3,2,1,0
 	call DmgToCgbObjPal0
 	depixel 5, 11
-	ld a, SPRITE_ANIM_INDEX_10
+	ld a, SPRITE_ANIM_INDEX_TRADE_TUBE_BULGE
 	call _InitSpriteAnimStruct
 	call TradeAnim_AdvanceScriptPointer
 	ld a, $40
--- a/engine/variables.asm
+++ b/engine/variables.asm
@@ -35,9 +35,9 @@
 ; 80671 (20:4671)
 
 .VarActionTable: ; 80671
-; $00: copy [de] to StringBuffer2
-; $40: return address in de
-; $80: call function
+; RETVAR_STRBUF2: copy [de] to StringBuffer2
+; RETVAR_ADDR_DE: return address in de
+; RETVAR_EXECUTE: call function
 	dwb StringBuffer2,                  RETVAR_STRBUF2
 	dwb PartyCount,                     RETVAR_STRBUF2
 	dwb .BattleResult,                  RETVAR_EXECUTE
--- a/engine/wildmons.asm
+++ b/engine/wildmons.asm
@@ -65,7 +65,7 @@
 	inc hl
 	inc hl
 	inc hl
-	ld a, NUM_WILDMONS_PER_AREA_TIME_OF_DAY * 3
+	ld a, NUM_GRASSMON * 3
 	call .SearchMapForMon
 	jr nc, .next_grass
 	ld [de], a
@@ -73,7 +73,7 @@
 
 .next_grass
 	pop hl
-	ld bc, WILDMON_GRASS_STRUCTURE_LENGTH
+	ld bc, GRASS_WILDDATA_LENGTH
 	add hl, bc
 	jr .FindGrass
 ; 2a06e
--- a/event/celebi.asm
+++ b/event/celebi.asm
@@ -6,7 +6,7 @@
 	ld [VramState], a
 	call LoadCelebiGFX
 	depixel 0, 10, 7, 0
-	ld a, SPRITE_ANIM_INDEX_2C
+	ld a, SPRITE_ANIM_INDEX_CELEBI
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
@@ -13,7 +13,7 @@
 	ld [hl], $84
 	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
 	add hl, bc
-	ld [hl], SPRITE_ANIM_SEQ_1F
+	ld [hl], SPRITE_ANIM_SEQ_CELEBI
 	ld hl, SPRITEANIMSTRUCT_0F
 	add hl, bc
 	ld a, $80
--- a/event/field_moves.asm
+++ b/event/field_moves.asm
@@ -30,7 +30,7 @@
 	lb bc, BANK(HeadbuttTreeGFX), 8
 	call Request2bpp
 	call Cut_Headbutt_GetPixelFacing
-	ld a, SPRITE_ANIM_INDEX_1B
+	ld a, SPRITE_ANIM_INDEX_HEADBUTT
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
--- a/event/magnet_train.asm
+++ b/event/magnet_train.asm
@@ -323,7 +323,7 @@
 	ld d, 10 * 8 + 5
 	ld a, [wMagnetTrainPlayerSpriteInitX]
 	ld e, a
-	ld b, SPRITE_ANIM_INDEX_15
+	ld b, SPRITE_ANIM_INDEX_MAGNET_TRAIN_RED
 	ld a, [rSVBK]
 	push af
 	ld a, $1
@@ -331,7 +331,7 @@
 	ld a, [PlayerGender]
 	bit 0, a
 	jr z, .got_gender
-	ld b, SPRITE_ANIM_INDEX_1F
+	ld b, SPRITE_ANIM_INDEX_MAGNET_TRAIN_BLUE
 
 .got_gender
 	pop af
--- a/event/mom_phone.asm
+++ b/event/mom_phone.asm
@@ -1,3 +1,7 @@
+const_value = 1
+	const MOM_ITEM
+	const MOM_DOLL
+
 MomTriesToBuySomething:: ; fcfec
 	ld a, [wMapReentryScriptQueueFlag]
 	and a
@@ -214,7 +218,6 @@
 	dt \2
 	db \3, \4
 ENDM
-
 
 MomItems_1: ; fd136
 	momitem      0,   600, MOM_ITEM, SUPER_POTION
--- a/gbhw.asm
+++ b/gbhw.asm
@@ -36,6 +36,9 @@
 OAM_Y_FLIP    EQU 6
 OAM_PRIORITY  EQU 7 ; 0: OBJ above BG, 1: OBJ behind BG (colors 1-3)
 
+X_FLIP    EQU 1 << OAM_X_FLIP
+Y_FLIP    EQU 1 << OAM_Y_FLIP
+BEHIND_BG EQU 1 << OAM_PRIORITY
 
 ; Hardware registers
 rJOYP       EQU $ff00 ; Joypad (R/W)
--- a/home.asm
+++ b/home.asm
@@ -718,15 +718,14 @@
 
 GetHPPal:: ; 3353
 ; Get palette for hp bar pixel length e in d.
-
 	ld d, HP_GREEN
 	ld a, e
 	cp (50 * 48 / 100)
 	ret nc
-	inc d ; yellow
+	inc d ; HP_YELLOW
 	cp (21 * 48 / 100)
 	ret nc
-	inc d ; red
+	inc d ; HP_RED
 	ret
 ; 335f
 
@@ -733,7 +732,6 @@
 CountSetBits:: ; 0x335f
 ; Count the number of set bits in b bytes starting from hl.
 ; Return in a, c and [wd265].
-
 	ld c, 0
 .next
 	ld a, [hli]
--- a/home/flag.asm
+++ b/home/flag.asm
@@ -38,9 +38,9 @@
 
 ; inputs:
 ; b: function
-;    0 clear bit
-;    1 set bit
-;    2 check bit
+;    0  RESET_FLAG  clear bit
+;    1  SET_FLAG    set bit
+;    2  CHECK_FLAG  check bit
 ; de: bit number
 ; hl: index within bit table
 
@@ -75,9 +75,9 @@
 
 	; check b's value: 0, 1, 2
 	ld a, b
-	cp 1
-	jr c, .clearbit ; 0
-	jr z, .setbit ; 1
+	cp SET_FLAG
+	jr c, .clearbit ; RESET_FLAG
+	jr z, .setbit ; SET_FLAG
 
 	; check bit
 	ld a, [hl]
--- a/home/map.asm
+++ b/home/map.asm
@@ -2284,8 +2284,6 @@
 ; 0x2cbd
 
 GetMapHeaderMusic:: ; 2cbd
-RADIO_TOWER_MUSIC EQU 7
-
 	push hl
 	push bc
 	ld de, 6 ; music
--- a/home/map_objects.asm
+++ b/home/map_objects.asm
@@ -485,7 +485,7 @@
 	ld e, a
 	ld d, 0
 rept SPRITEMOVEDATA_FIELDS
-	add hl,de
+	add hl, de
 endr
 	ld a, [hl]
 	ret
@@ -498,7 +498,7 @@
 	ld d, 0
 	ld hl, SpriteMovementData + 1 ; init facing
 rept SPRITEMOVEDATA_FIELDS
-	add hl,de
+	add hl, de
 endr
 	ld a, BANK(SpriteMovementData)
 	call GetFarByte
--- a/main.asm
+++ b/main.asm
@@ -1481,7 +1481,7 @@
 	jr nz, .othertrainer
 
 	ld a, [OtherTrainerID]
-	cp 4 ; Rival in Indigo Plateau
+	cp RIVAL2_2_CHIKORITA ; Rival in Indigo Plateau
 	jr c, .done
 	ld de, MUSIC_CHAMPION_BATTLE
 	jr .done
--- a/maps/AzaleaTown.asm
+++ b/maps/AzaleaTown.asm
@@ -72,7 +72,7 @@
 	iftrue .Chikorita
 	winlosstext AzaleaTownRivalWinText, AzaleaTownRivalLossText
 	setlasttalked AZALEATOWN_SILVER
-	loadtrainer RIVAL1, RIVAL1_6
+	loadtrainer RIVAL1, RIVAL1_2_TOTODILE
 	startbattle
 	dontrestartmapmusic
 	reloadmapafterbattle
@@ -81,7 +81,7 @@
 .Totodile:
 	winlosstext AzaleaTownRivalWinText, AzaleaTownRivalLossText
 	setlasttalked AZALEATOWN_SILVER
-	loadtrainer RIVAL1, RIVAL1_4
+	loadtrainer RIVAL1, RIVAL1_2_CHIKORITA
 	startbattle
 	dontrestartmapmusic
 	reloadmapafterbattle
@@ -90,7 +90,7 @@
 .Chikorita:
 	winlosstext AzaleaTownRivalWinText, AzaleaTownRivalLossText
 	setlasttalked AZALEATOWN_SILVER
-	loadtrainer RIVAL1, RIVAL1_5
+	loadtrainer RIVAL1, RIVAL1_2_CYNDAQUIL
 	startbattle
 	dontrestartmapmusic
 	reloadmapafterbattle
--- a/maps/BurnedTower1F.asm
+++ b/maps/BurnedTower1F.asm
@@ -73,7 +73,7 @@
 	iftrue .chikorita
 	winlosstext BurnedTowerSilver_WinText, BurnedTowerSilver_LossText
 	setlasttalked BURNEDTOWER1F_SILVER
-	loadtrainer RIVAL1, RIVAL1_9
+	loadtrainer RIVAL1, RIVAL1_3_TOTODILE
 	startbattle
 	dontrestartmapmusic
 	reloadmapafterbattle
@@ -82,7 +82,7 @@
 .totodile
 	winlosstext BurnedTowerSilver_WinText, BurnedTowerSilver_LossText
 	setlasttalked BURNEDTOWER1F_SILVER
-	loadtrainer RIVAL1, RIVAL1_7
+	loadtrainer RIVAL1, RIVAL1_3_CHIKORITA
 	startbattle
 	dontrestartmapmusic
 	reloadmapafterbattle
@@ -91,7 +91,7 @@
 .chikorita
 	winlosstext BurnedTowerSilver_WinText, BurnedTowerSilver_LossText
 	setlasttalked BURNEDTOWER1F_SILVER
-	loadtrainer RIVAL1, RIVAL1_8
+	loadtrainer RIVAL1, RIVAL1_3_CYNDAQUIL
 	startbattle
 	dontrestartmapmusic
 	reloadmapafterbattle
--- a/maps/CherrygroveCity.asm
+++ b/maps/CherrygroveCity.asm
@@ -125,7 +125,7 @@
 	iftrue .Chikorita
 	winlosstext SilverCherrygroveWinText, SilverCherrygroveLossText
 	setlasttalked CHERRYGROVECITY_SILVER
-	loadtrainer RIVAL1, RIVAL1_3
+	loadtrainer RIVAL1, RIVAL1_1_TOTODILE
 	writecode VAR_BATTLETYPE, BATTLETYPE_CANLOSE
 	startbattle
 	dontrestartmapmusic
@@ -136,7 +136,7 @@
 .Totodile:
 	winlosstext SilverCherrygroveWinText, SilverCherrygroveLossText
 	setlasttalked CHERRYGROVECITY_SILVER
-	loadtrainer RIVAL1, RIVAL1_1
+	loadtrainer RIVAL1, RIVAL1_1_CHIKORITA
 	writecode VAR_BATTLETYPE, BATTLETYPE_CANLOSE
 	startbattle
 	dontrestartmapmusic
@@ -147,7 +147,7 @@
 .Chikorita:
 	winlosstext SilverCherrygroveWinText, SilverCherrygroveLossText
 	setlasttalked CHERRYGROVECITY_SILVER
-	loadtrainer RIVAL1, RIVAL1_2
+	loadtrainer RIVAL1, RIVAL1_1_CYNDAQUIL
 	writecode VAR_BATTLETYPE, BATTLETYPE_CANLOSE
 	startbattle
 	dontrestartmapmusic
--- a/maps/IndigoPlateauPokeCenter1F.asm
+++ b/maps/IndigoPlateauPokeCenter1F.asm
@@ -102,7 +102,7 @@
 	; Cyndaquil
 	winlosstext PlateauRivalWinText, PlateauRivalLoseText
 	setlasttalked INDIGOPLATEAUPOKECENTER1F_SILVER
-	loadtrainer RIVAL2, 6
+	loadtrainer RIVAL2, RIVAL2_2_TOTODILE
 	startbattle
 	dontrestartmapmusic
 	reloadmapafterbattle
@@ -111,7 +111,7 @@
 .Totodile:
 	winlosstext PlateauRivalWinText, PlateauRivalLoseText
 	setlasttalked INDIGOPLATEAUPOKECENTER1F_SILVER
-	loadtrainer RIVAL2, 4
+	loadtrainer RIVAL2, RIVAL2_2_CHIKORITA
 	startbattle
 	dontrestartmapmusic
 	reloadmapafterbattle
@@ -120,7 +120,7 @@
 .Chikorita:
 	winlosstext PlateauRivalWinText, PlateauRivalLoseText
 	setlasttalked INDIGOPLATEAUPOKECENTER1F_SILVER
-	loadtrainer RIVAL2, 5
+	loadtrainer RIVAL2, RIVAL2_2_CYNDAQUIL
 	startbattle
 	dontrestartmapmusic
 	reloadmapafterbattle
--- a/maps/MountMoon.asm
+++ b/maps/MountMoon.asm
@@ -36,7 +36,7 @@
 	iftrue .Chikorita
 	winlosstext MountMoonSilverTextWin, MountMoonSilverTextLoss
 	setlasttalked MOUNTMOON_SILVER
-	loadtrainer RIVAL2, 3
+	loadtrainer RIVAL2, RIVAL2_1_TOTODILE
 	startbattle
 	dontrestartmapmusic
 	reloadmapafterbattle
@@ -45,7 +45,7 @@
 .Totodile:
 	winlosstext MountMoonSilverTextWin, MountMoonSilverTextLoss
 	setlasttalked MOUNTMOON_SILVER
-	loadtrainer RIVAL2, 1
+	loadtrainer RIVAL2, RIVAL2_1_CHIKORITA
 	startbattle
 	dontrestartmapmusic
 	reloadmapafterbattle
@@ -54,7 +54,7 @@
 .Chikorita:
 	winlosstext MountMoonSilverTextWin, MountMoonSilverTextLoss
 	setlasttalked MOUNTMOON_SILVER
-	loadtrainer RIVAL2, 2
+	loadtrainer RIVAL2, RIVAL2_1_CYNDAQUIL
 	startbattle
 	dontrestartmapmusic
 	reloadmapafterbattle
--- a/maps/RadioTower4F.asm
+++ b/maps/RadioTower4F.asm
@@ -67,7 +67,7 @@
 	end
 
 TrainerExecutivem2:
-	trainer EVENT_BEAT_ROCKET_EXECUTIVEM_2, EXECUTIVEM, 2, Executivem2SeenText, Executivem2BeatenText, 0, Executivem2Script
+	trainer EVENT_BEAT_ROCKET_EXECUTIVEM_2, EXECUTIVEM, EXECUTIVEM_2, Executivem2SeenText, Executivem2BeatenText, 0, Executivem2Script
 
 Executivem2Script:
 	end_if_just_battled
--- a/maps/RadioTower5F.asm
+++ b/maps/RadioTower5F.asm
@@ -41,7 +41,7 @@
 	closetext
 	winlosstext FakeDirectorWinText, 0
 	setlasttalked RADIOTOWER5F_DIRECTOR
-	loadtrainer EXECUTIVEM, 3
+	loadtrainer EXECUTIVEM, EXECUTIVEM_3
 	startbattle
 	reloadmapafterbattle
 	opentext
@@ -70,7 +70,7 @@
 	end
 
 TrainerExecutivef1:
-	trainer EVENT_BEAT_ROCKET_EXECUTIVEF_1, EXECUTIVEF, 1, Executivef1SeenText, Executivef1BeatenText, 0, Executivef1Script
+	trainer EVENT_BEAT_ROCKET_EXECUTIVEF_1, EXECUTIVEF, EXECUTIVEF_1, Executivef1SeenText, Executivef1BeatenText, 0, Executivef1Script
 
 Executivef1Script:
 	end_if_just_battled
@@ -90,7 +90,7 @@
 	closetext
 	winlosstext RadioTower5FRocketBossWinText, 0
 	setlasttalked RADIOTOWER5F_ROCKET
-	loadtrainer EXECUTIVEM, 1
+	loadtrainer EXECUTIVEM, EXECUTIVEM_1
 	startbattle
 	reloadmapafterbattle
 	opentext
--- a/maps/TeamRocketBaseB2F.asm
+++ b/maps/TeamRocketBaseB2F.asm
@@ -102,7 +102,7 @@
 	applymovement TEAMROCKETBASEB2F_ROCKET_GIRL, MovementData_0x6d248
 	winlosstext UnknownText_0x6d45c, 0
 	setlasttalked TEAMROCKETBASEB2F_ROCKET_GIRL
-	loadtrainer EXECUTIVEF, 2
+	loadtrainer EXECUTIVEF, EXECUTIVEF_2
 	startbattle
 	disappear TEAMROCKETBASEB2F_DRAGON
 	setevent EVENT_TEAM_ROCKET_BASE_B2F_EXECUTIVE
--- a/maps/TeamRocketBaseB3F.asm
+++ b/maps/TeamRocketBaseB3F.asm
@@ -109,7 +109,7 @@
 	applymovement TEAMROCKETBASEB3F_ROCKET1, MovementData_0x6e142
 	winlosstext UnknownText_0x6e511, 0
 	setlasttalked TEAMROCKETBASEB3F_ROCKET1
-	loadtrainer EXECUTIVEM, 4
+	loadtrainer EXECUTIVEM, EXECUTIVEM_4
 	startbattle
 	reloadmapafterbattle
 	setevent EVENT_BEAT_ROCKET_EXECUTIVEM_4
--- a/maps/UndergroundPathSwitchRoomEntrances.asm
+++ b/maps/UndergroundPathSwitchRoomEntrances.asm
@@ -178,7 +178,7 @@
 	iftrue .Chikorita
 	winlosstext UndergroundSilverWinText, UndergroundSilverLossText
 	setlasttalked UNDERGROUNDPATHSWITCHROOMENTRANCES_SILVER
-	loadtrainer RIVAL1, RIVAL1_12
+	loadtrainer RIVAL1, RIVAL1_4_TOTODILE
 	startbattle
 	dontrestartmapmusic
 	reloadmapafterbattle
@@ -187,7 +187,7 @@
 .Totodile:
 	winlosstext UndergroundSilverWinText, UndergroundSilverLossText
 	setlasttalked UNDERGROUNDPATHSWITCHROOMENTRANCES_SILVER
-	loadtrainer RIVAL1, RIVAL1_10
+	loadtrainer RIVAL1, RIVAL1_4_CHIKORITA
 	startbattle
 	dontrestartmapmusic
 	reloadmapafterbattle
@@ -196,7 +196,7 @@
 .Chikorita:
 	winlosstext UndergroundSilverWinText, UndergroundSilverLossText
 	setlasttalked UNDERGROUNDPATHSWITCHROOMENTRANCES_SILVER
-	loadtrainer RIVAL1, RIVAL1_11
+	loadtrainer RIVAL1, RIVAL1_4_CYNDAQUIL
 	startbattle
 	dontrestartmapmusic
 	reloadmapafterbattle
--- a/maps/VictoryRoad.asm
+++ b/maps/VictoryRoad.asm
@@ -66,7 +66,7 @@
 	iftrue UnknownScript_0x7450f
 	winlosstext UnknownText_0x7463d, UnknownText_0x747aa
 	setlasttalked VICTORYROAD_SILVER
-	loadtrainer RIVAL1, RIVAL1_15
+	loadtrainer RIVAL1, RIVAL1_5_TOTODILE
 	startbattle
 	dontrestartmapmusic
 	reloadmapafterbattle
@@ -75,7 +75,7 @@
 UnknownScript_0x744ff:
 	winlosstext UnknownText_0x7463d, UnknownText_0x747aa
 	setlasttalked VICTORYROAD_SILVER
-	loadtrainer RIVAL1, RIVAL1_13
+	loadtrainer RIVAL1, RIVAL1_5_CHIKORITA
 	startbattle
 	dontrestartmapmusic
 	reloadmapafterbattle
@@ -84,7 +84,7 @@
 UnknownScript_0x7450f:
 	winlosstext UnknownText_0x7463d, UnknownText_0x747aa
 	setlasttalked VICTORYROAD_SILVER
-	loadtrainer RIVAL1, RIVAL1_14
+	loadtrainer RIVAL1, RIVAL1_5_CYNDAQUIL
 	startbattle
 	dontrestartmapmusic
 	reloadmapafterbattle
--- a/maps/map_headers.asm
+++ b/maps/map_headers.asm
@@ -72,11 +72,11 @@
 	map_header BurnedTowerB1F, TILESET_CAVE, CAVE, BURNED_TOWER, MUSIC_BURNED_TOWER, 1, PALETTE_NITE, FISHGROUP_SHORE
 	map_header NationalPark, TILESET_PARK, ROUTE, NATIONAL_PARK, MUSIC_NATIONAL_PARK, 0, PALETTE_AUTO, FISHGROUP_SHORE
 	map_header NationalParkBugContest, TILESET_PARK, ROUTE, NATIONAL_PARK, MUSIC_BUG_CATCHING_CONTEST, 0, PALETTE_AUTO, FISHGROUP_SHORE
-	map_header RadioTower1F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header RadioTower2F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header RadioTower3F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header RadioTower4F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header RadioTower5F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RadioTower1F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, (1 << RADIO_TOWER_MUSIC) | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RadioTower2F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, (1 << RADIO_TOWER_MUSIC) | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RadioTower3F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, (1 << RADIO_TOWER_MUSIC) | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RadioTower4F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, (1 << RADIO_TOWER_MUSIC) | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
+	map_header RadioTower5F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, (1 << RADIO_TOWER_MUSIC) | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
 	map_header RuinsofAlphOutside, TILESET_JOHTO_1, ROUTE, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 0, PALETTE_AUTO, FISHGROUP_POND
 	map_header RuinsofAlphHoOhChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
 	map_header RuinsofAlphKabutoChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
--- a/misc/fixed_words.asm
+++ b/misc/fixed_words.asm
@@ -3416,6 +3416,7 @@
 ; 11daac
 
 MobileEZChatCategoryPointers: ; 11daac
+; entries correspond to EZCHAT_* constants
 	dw .Types          ; 01
 	dw .Greetings      ; 02
 	dw .People         ; 03
--- a/tilesets/collision.asm
+++ b/tilesets/collision.asm
@@ -1,9 +1,3 @@
-
-; 00 land
-; 01 water
-; 0f wall
-; 11 talkable water
-; 1f talkable wall
 NONTALKABLE EQUS "db"
 TALKABLE EQUS "db TALK +"
 	NONTALKABLE  LANDTILE ; 00
--- a/tilesets/tileset_headers.asm
+++ b/tilesets/tileset_headers.asm
@@ -1,3 +1,5 @@
+; entries correspond to TILESET_* constants
+
 tileset: macro
 	dba \1GFX, \1Meta, \1Coll
 	dw \1Anim
--- a/trainers/trainers.asm
+++ b/trainers/trainers.asm
@@ -4,10 +4,10 @@
 	; Name
 		; String in format "TEXT@"
 	; Type
-		; 0: Level, species
-		; 1: Level, species, moves
-		; 2: Level, species, item
-		; 3: Level, species, item, moves
+		; TRAINERTYPE_NORMAL:     level, species
+		; TRAINERTYPE_MOVES:      level, species, moves
+		; TRAINERTYPE_ITEM:       level, species, item
+		; TRAINERTYPE_ITEM_MOVES: level, species, item, moves
 	; Party
 		; Up to six monsters following the data type
 	; $ff
@@ -19,7 +19,7 @@
 
 	; FALKNER (1)
 	db "FALKNER@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -47,7 +47,7 @@
 
 	; WHITNEY (1)
 	db "WHITNEY@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -75,7 +75,7 @@
 
 	; BUGSY (1)
 	db "BUGSY@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -109,7 +109,7 @@
 
 	; MORTY (1)
 	db "MORTY@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -149,7 +149,7 @@
 
 	; PRYCE (1)
 	db "PRYCE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -183,7 +183,7 @@
 
 	; JASMINE (1)
 	db "JASMINE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -217,7 +217,7 @@
 
 	; CHUCK (1)
 	db "CHUCK@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -245,7 +245,7 @@
 
 	; CLAIR (1)
 	db "CLAIR@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -285,7 +285,7 @@
 
 	; RIVAL1 (1)
 	db "?@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 5, CHIKORITA
@@ -296,7 +296,7 @@
 
 	; RIVAL1 (2)
 	db "?@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 5, CYNDAQUIL
@@ -307,7 +307,7 @@
 
 	; RIVAL1 (3)
 	db "?@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 5, TOTODILE
@@ -318,7 +318,7 @@
 
 	; RIVAL1 (4)
 	db "?@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 12, GASTLY
@@ -331,7 +331,7 @@
 
 	; RIVAL1 (5)
 	db "?@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 12, GASTLY
@@ -344,7 +344,7 @@
 
 	; RIVAL1 (6)
 	db "?@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 12, GASTLY
@@ -357,7 +357,7 @@
 
 	; RIVAL1 (7)
 	db "?@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -391,7 +391,7 @@
 
 	; RIVAL1 (8)
 	db "?@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -425,7 +425,7 @@
 
 	; RIVAL1 (9)
 	db "?@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -459,7 +459,7 @@
 
 	; RIVAL1 (10)
 	db "?@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -499,7 +499,7 @@
 
 	; RIVAL1 (11)
 	db "?@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -539,7 +539,7 @@
 
 	; RIVAL1 (12)
 	db "?@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -579,7 +579,7 @@
 
 	; RIVAL1 (13)
 	db "?@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -625,7 +625,7 @@
 
 	; RIVAL1 (14)
 	db "?@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -671,7 +671,7 @@
 
 	; RIVAL1 (15)
 	db "?@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -729,7 +729,7 @@
 
 	; WILL (1)
 	db "WILL@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -775,7 +775,7 @@
 
 	; CAL (1)
 	db "CAL@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 10, CHIKORITA
@@ -788,7 +788,7 @@
 
 	; CAL (2)
 	db "CAL@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 30, BAYLEEF
@@ -801,7 +801,7 @@
 
 	; CAL (3)
 	db "CAL@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 50, MEGANIUM
@@ -820,7 +820,7 @@
 
 	; BRUNO (1)
 	db "BRUNO@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -866,7 +866,7 @@
 
 	; KAREN (1)
 	db "KAREN@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -912,7 +912,7 @@
 
 	; KOGA (1)
 	db "KOGA@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -958,7 +958,7 @@
 
 	; CHAMPION (1)
 	db "LANCE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -1010,7 +1010,7 @@
 
 	; BROCK (1)
 	db "BROCK@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -1056,7 +1056,7 @@
 
 	; MISTY (1)
 	db "MISTY@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -1096,7 +1096,7 @@
 
 	; LT_SURGE (1)
 	db "LT.SURGE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -1142,7 +1142,7 @@
 
 	; SCIENTIST (1)
 	db "ROSS@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 22, KOFFING
@@ -1154,7 +1154,7 @@
 
 	; SCIENTIST (2)
 	db "MITCH@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 24, DITTO
@@ -1165,7 +1165,7 @@
 
 	; SCIENTIST (3)
 	db "JED@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 20, MAGNEMITE
@@ -1178,7 +1178,7 @@
 
 	; SCIENTIST (4)
 	db "MARC@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 27, MAGNEMITE
@@ -1191,7 +1191,7 @@
 
 	; SCIENTIST (5)
 	db "RICH@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -1213,7 +1213,7 @@
 
 	; ERIKA (1)
 	db "ERIKA@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -1253,7 +1253,7 @@
 
 	; YOUNGSTER (1)
 	db "JOEY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 4, RATTATA
@@ -1264,7 +1264,7 @@
 
 	; YOUNGSTER (2)
 	db "MIKEY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 2, PIDGEY
@@ -1276,7 +1276,7 @@
 
 	; YOUNGSTER (3)
 	db "ALBERT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 6, RATTATA
@@ -1288,7 +1288,7 @@
 
 	; YOUNGSTER (4)
 	db "GORDON@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 10, WOOPER
@@ -1299,7 +1299,7 @@
 
 	; YOUNGSTER (5)
 	db "SAMUEL@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 7, RATTATA
@@ -1313,7 +1313,7 @@
 
 	; YOUNGSTER (6)
 	db "IAN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 10, MANKEY
@@ -1325,7 +1325,7 @@
 
 	; YOUNGSTER (7)
 	db "JOEY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 15, RATTATA
@@ -1336,7 +1336,7 @@
 
 	; YOUNGSTER (8)
 	db "JOEY@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -1352,7 +1352,7 @@
 
 	; YOUNGSTER (9)
 	db "WARREN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 35, FEAROW
@@ -1363,7 +1363,7 @@
 
 	; YOUNGSTER (10)
 	db "JIMMY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 33, RATICATE
@@ -1375,7 +1375,7 @@
 
 	; YOUNGSTER (11)
 	db "OWEN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 35, GROWLITHE
@@ -1386,7 +1386,7 @@
 
 	; YOUNGSTER (12)
 	db "JASON@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 33, SANDSLASH
@@ -1398,7 +1398,7 @@
 
 	; YOUNGSTER (13)
 	db "JOEY@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -1414,7 +1414,7 @@
 
 	; YOUNGSTER (14)
 	db "JOEY@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -1436,7 +1436,7 @@
 
 	; SCHOOLBOY (1)
 	db "JACK@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 12, ODDISH
@@ -1448,7 +1448,7 @@
 
 	; SCHOOLBOY (2)
 	db "KIPP@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 27, VOLTORB
@@ -1462,7 +1462,7 @@
 
 	; SCHOOLBOY (3)
 	db "ALAN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 16, TANGELA
@@ -1473,7 +1473,7 @@
 
 	; SCHOOLBOY (4)
 	db "JOHNNY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 29, BELLSPROUT
@@ -1486,7 +1486,7 @@
 
 	; SCHOOLBOY (5)
 	db "DANNY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 31, JYNX
@@ -1499,7 +1499,7 @@
 
 	; SCHOOLBOY (6)
 	db "TOMMY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, XATU
@@ -1511,7 +1511,7 @@
 
 	; SCHOOLBOY (7)
 	db "DUDLEY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 35, ODDISH
@@ -1522,7 +1522,7 @@
 
 	; SCHOOLBOY (8)
 	db "JOE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 33, TANGELA
@@ -1534,7 +1534,7 @@
 
 	; SCHOOLBOY (9)
 	db "BILLY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 27, PARAS
@@ -1548,7 +1548,7 @@
 
 	; SCHOOLBOY (10)
 	db "CHAD@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 19, MR__MIME
@@ -1559,7 +1559,7 @@
 
 	; SCHOOLBOY (11)
 	db "NATE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, LEDIAN
@@ -1571,7 +1571,7 @@
 
 	; SCHOOLBOY (12)
 	db "RICKY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, AIPOM
@@ -1583,7 +1583,7 @@
 
 	; SCHOOLBOY (13)
 	db "JACK@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 14, ODDISH
@@ -1595,7 +1595,7 @@
 
 	; SCHOOLBOY (14)
 	db "JACK@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 28, GLOOM
@@ -1607,7 +1607,7 @@
 
 	; SCHOOLBOY (15)
 	db "ALAN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 17, TANGELA
@@ -1619,7 +1619,7 @@
 
 	; SCHOOLBOY (16)
 	db "ALAN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 20, NATU
@@ -1633,7 +1633,7 @@
 
 	; SCHOOLBOY (17)
 	db "CHAD@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 19, MR__MIME
@@ -1645,7 +1645,7 @@
 
 	; SCHOOLBOY (18)
 	db "CHAD@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 27, MR__MIME
@@ -1657,7 +1657,7 @@
 
 	; SCHOOLBOY (19)
 	db "JACK@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 30, GLOOM
@@ -1670,7 +1670,7 @@
 
 	; SCHOOLBOY (20)
 	db "JACK@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -1698,7 +1698,7 @@
 
 	; SCHOOLBOY (21)
 	db "ALAN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 27, NATU
@@ -1712,7 +1712,7 @@
 
 	; SCHOOLBOY (22)
 	db "ALAN@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -1746,7 +1746,7 @@
 
 	; SCHOOLBOY (23)
 	db "CHAD@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 30, MR__MIME
@@ -1758,7 +1758,7 @@
 
 	; SCHOOLBOY (24)
 	db "CHAD@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -1786,7 +1786,7 @@
 
 	; BIRD_KEEPER (1)
 	db "ROD@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 7, PIDGEY
@@ -1798,7 +1798,7 @@
 
 	; BIRD_KEEPER (2)
 	db "ABE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 9, SPEAROW
@@ -1809,7 +1809,7 @@
 
 	; BIRD_KEEPER (3)
 	db "BRYAN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 12, PIDGEY
@@ -1821,7 +1821,7 @@
 
 	; BIRD_KEEPER (4)
 	db "THEO@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 17, PIDGEY
@@ -1836,7 +1836,7 @@
 
 	; BIRD_KEEPER (5)
 	db "TOBY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 15, DODUO
@@ -1849,7 +1849,7 @@
 
 	; BIRD_KEEPER (6)
 	db "DENIS@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 18, SPEAROW
@@ -1862,7 +1862,7 @@
 
 	; BIRD_KEEPER (7)
 	db "VANCE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 25, PIDGEOTTO
@@ -1874,7 +1874,7 @@
 
 	; BIRD_KEEPER (8)
 	db "HANK@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 12, PIDGEY
@@ -1886,7 +1886,7 @@
 
 	; BIRD_KEEPER (9)
 	db "ROY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 29, FEAROW
@@ -1898,7 +1898,7 @@
 
 	; BIRD_KEEPER (10)
 	db "BORIS@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 30, DODUO
@@ -1911,7 +1911,7 @@
 
 	; BIRD_KEEPER (11)
 	db "BOB@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 34, NOCTOWL
@@ -1922,7 +1922,7 @@
 
 	; BIRD_KEEPER (12)
 	db "JOSE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 36, FARFETCH_D
@@ -1933,7 +1933,7 @@
 
 	; BIRD_KEEPER (13)
 	db "PETER@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 6, PIDGEY
@@ -1946,7 +1946,7 @@
 
 	; BIRD_KEEPER (14)
 	db "JOSE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 34, FARFETCH_D
@@ -1957,7 +1957,7 @@
 
 	; BIRD_KEEPER (15)
 	db "PERRY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 34, FARFETCH_D
@@ -1968,7 +1968,7 @@
 
 	; BIRD_KEEPER (16)
 	db "BRET@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, PIDGEOTTO
@@ -1980,7 +1980,7 @@
 
 	; BIRD_KEEPER (17)
 	db "JOSE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -1996,7 +1996,7 @@
 
 	; BIRD_KEEPER (18)
 	db "VANCE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, PIDGEOTTO
@@ -2008,7 +2008,7 @@
 
 	; BIRD_KEEPER (19)
 	db "VANCE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -2036,7 +2036,7 @@
 
 	; LASS (1)
 	db "CARRIE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -2052,7 +2052,7 @@
 
 	; LASS (2)
 	db "BRIDGET@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 15, JIGGLYPUFF
@@ -2065,7 +2065,7 @@
 
 	; LASS (3)
 	db "ALICE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 30, GLOOM
@@ -2078,7 +2078,7 @@
 
 	; LASS (4)
 	db "KRISE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 12, ODDISH
@@ -2090,7 +2090,7 @@
 
 	; LASS (5)
 	db "CONNIE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 21, MARILL
@@ -2101,7 +2101,7 @@
 
 	; LASS (6)
 	db "LINDA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 30, BULBASAUR
@@ -2114,7 +2114,7 @@
 
 	; LASS (7)
 	db "LAURA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 28, GLOOM
@@ -2127,7 +2127,7 @@
 
 	; LASS (8)
 	db "SHANNON@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 29, PARAS
@@ -2140,7 +2140,7 @@
 
 	; LASS (9)
 	db "MICHELLE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, SKIPLOOM
@@ -2153,7 +2153,7 @@
 
 	; LASS (10)
 	db "DANA@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -2175,7 +2175,7 @@
 
 	; LASS (11)
 	db "ELLEN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 30, WIGGLYTUFF
@@ -2187,7 +2187,7 @@
 
 	; LASS (12)
 	db "CONNIE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 21, MARILL
@@ -2198,7 +2198,7 @@
 
 	; LASS (13)
 	db "CONNIE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 21, MARILL
@@ -2209,7 +2209,7 @@
 
 	; LASS (14)
 	db "DANA@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -2231,7 +2231,7 @@
 
 	; LASS (15)
 	db "DANA@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -2253,7 +2253,7 @@
 
 	; LASS (16)
 	db "DANA@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -2275,7 +2275,7 @@
 
 	; LASS (17)
 	db "DANA@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -2303,7 +2303,7 @@
 
 	; JANINE (1)
 	db "JANINE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -2349,7 +2349,7 @@
 
 	; COOLTRAINERM (1)
 	db "NICK@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -2377,7 +2377,7 @@
 
 	; COOLTRAINERM (2)
 	db "AARON@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 24, IVYSAUR
@@ -2390,7 +2390,7 @@
 
 	; COOLTRAINERM (3)
 	db "PAUL@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 34, DRATINI
@@ -2403,7 +2403,7 @@
 
 	; COOLTRAINERM (4)
 	db "CODY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 34, HORSEA
@@ -2415,7 +2415,7 @@
 
 	; COOLTRAINERM (5)
 	db "MIKE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 37, DRAGONAIR
@@ -2426,7 +2426,7 @@
 
 	; COOLTRAINERM (6)
 	db "GAVEN@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -2454,7 +2454,7 @@
 
 	; COOLTRAINERM (7)
 	db "GAVEN@"
-	db 3 ; item + moves
+	db TRAINERTYPE_ITEM_MOVES
 
 	; party
 
@@ -2482,7 +2482,7 @@
 
 	; COOLTRAINERM (8)
 	db "RYAN@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -2504,7 +2504,7 @@
 
 	; COOLTRAINERM (9)
 	db "JAKE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -2526,7 +2526,7 @@
 
 	; COOLTRAINERM (10)
 	db "GAVEN@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -2554,7 +2554,7 @@
 
 	; COOLTRAINERM (11)
 	db "BLAKE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -2582,7 +2582,7 @@
 
 	; COOLTRAINERM (12)
 	db "BRIAN@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -2598,7 +2598,7 @@
 
 	; COOLTRAINERM (13)
 	db "ERICK@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 10, BULBASAUR
@@ -2611,7 +2611,7 @@
 
 	; COOLTRAINERM (14)
 	db "ANDY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 10, BULBASAUR
@@ -2624,7 +2624,7 @@
 
 	; COOLTRAINERM (15)
 	db "TYLER@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 10, BULBASAUR
@@ -2637,7 +2637,7 @@
 
 	; COOLTRAINERM (16)
 	db "SEAN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 35, FLAREON
@@ -2650,7 +2650,7 @@
 
 	; COOLTRAINERM (17)
 	db "KEVIN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 38, RHYHORN
@@ -2663,7 +2663,7 @@
 
 	; COOLTRAINERM (18)
 	db "STEVE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 14, BULBASAUR
@@ -2676,7 +2676,7 @@
 
 	; COOLTRAINERM (19)
 	db "ALLEN@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -2692,7 +2692,7 @@
 
 	; COOLTRAINERM (20)
 	db "DARIN@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -2714,7 +2714,7 @@
 
 	; COOLTRAINERF (1)
 	db "GWEN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 26, EEVEE
@@ -2728,7 +2728,7 @@
 
 	; COOLTRAINERF (2)
 	db "LOIS@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -2750,7 +2750,7 @@
 
 	; COOLTRAINERF (3)
 	db "FRAN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 37, SEADRA
@@ -2761,7 +2761,7 @@
 
 	; COOLTRAINERF (4)
 	db "LOLA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 34, DRATINI
@@ -2773,7 +2773,7 @@
 
 	; COOLTRAINERF (5)
 	db "KATE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 26, SHELLDER
@@ -2785,7 +2785,7 @@
 
 	; COOLTRAINERF (6)
 	db "IRENE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 22, GOLDEEN
@@ -2797,7 +2797,7 @@
 
 	; COOLTRAINERF (7)
 	db "KELLY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 27, MARILL
@@ -2810,7 +2810,7 @@
 
 	; COOLTRAINERF (8)
 	db "JOYCE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -2832,7 +2832,7 @@
 
 	; COOLTRAINERF (9)
 	db "BETH@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -2848,7 +2848,7 @@
 
 	; COOLTRAINERF (10)
 	db "REENA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 31, STARMIE
@@ -2861,7 +2861,7 @@
 
 	; COOLTRAINERF (11)
 	db "MEGAN@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -2889,7 +2889,7 @@
 
 	; COOLTRAINERF (12)
 	db "BETH@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -2905,7 +2905,7 @@
 
 	; COOLTRAINERF (13)
 	db "CAROL@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 35, ELECTRODE
@@ -2918,7 +2918,7 @@
 
 	; COOLTRAINERF (14)
 	db "QUINN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 38, IVYSAUR
@@ -2930,7 +2930,7 @@
 
 	; COOLTRAINERF (15)
 	db "EMMA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 28, POLIWHIRL
@@ -2941,7 +2941,7 @@
 
 	; COOLTRAINERF (16)
 	db "CYBIL@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -2963,7 +2963,7 @@
 
 	; COOLTRAINERF (17)
 	db "JENN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 24, STARYU
@@ -2975,7 +2975,7 @@
 
 	; COOLTRAINERF (18)
 	db "BETH@"
-	db 3 ; item + moves
+	db TRAINERTYPE_ITEM_MOVES
 
 	; party
 
@@ -2991,7 +2991,7 @@
 
 	; COOLTRAINERF (19)
 	db "REENA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 34, STARMIE
@@ -3004,7 +3004,7 @@
 
 	; COOLTRAINERF (20)
 	db "REENA@"
-	db 3 ; item + moves
+	db TRAINERTYPE_ITEM_MOVES
 
 	; party
 
@@ -3032,7 +3032,7 @@
 
 	; COOLTRAINERF (21)
 	db "CARA@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -3066,7 +3066,7 @@
 
 	; BEAUTY (1)
 	db "VICTORIA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 9, SENTRET
@@ -3079,7 +3079,7 @@
 
 	; BEAUTY (2)
 	db "SAMANTHA@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -3101,7 +3101,7 @@
 
 	; BEAUTY (3)
 	db "JULIE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 15, SENTRET
@@ -3112,7 +3112,7 @@
 
 	; BEAUTY (4)
 	db "JACLYN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 15, SENTRET
@@ -3123,7 +3123,7 @@
 
 	; BEAUTY (5)
 	db "BRENDA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 16, FURRET
@@ -3134,7 +3134,7 @@
 
 	; BEAUTY (6)
 	db "CASSIE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 28, VILEPLUME
@@ -3146,7 +3146,7 @@
 
 	; BEAUTY (7)
 	db "CAROLINE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 30, MARILL
@@ -3159,7 +3159,7 @@
 
 	; BEAUTY (8)
 	db "CARLENE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 15, SENTRET
@@ -3170,7 +3170,7 @@
 
 	; BEAUTY (9)
 	db "JESSICA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 15, SENTRET
@@ -3181,7 +3181,7 @@
 
 	; BEAUTY (10)
 	db "RACHAEL@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 15, SENTRET
@@ -3192,7 +3192,7 @@
 
 	; BEAUTY (11)
 	db "ANGELICA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 15, SENTRET
@@ -3203,7 +3203,7 @@
 
 	; BEAUTY (12)
 	db "KENDRA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 15, SENTRET
@@ -3214,7 +3214,7 @@
 
 	; BEAUTY (13)
 	db "VERONICA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 15, SENTRET
@@ -3225,7 +3225,7 @@
 
 	; BEAUTY (14)
 	db "JULIA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, PARAS
@@ -3238,7 +3238,7 @@
 
 	; BEAUTY (15)
 	db "THERESA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 15, SENTRET
@@ -3249,7 +3249,7 @@
 
 	; BEAUTY (16)
 	db "VALERIE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -3271,7 +3271,7 @@
 
 	; BEAUTY (17)
 	db "OLIVIA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 19, CORSOLA
@@ -3288,7 +3288,7 @@
 
 	; POKEMANIAC (1)
 	db "LARRY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 10, SLOWPOKE
@@ -3299,7 +3299,7 @@
 
 	; POKEMANIAC (2)
 	db "ANDREW@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 24, MAROWAK
@@ -3311,7 +3311,7 @@
 
 	; POKEMANIAC (3)
 	db "CALVIN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 26, KANGASKHAN
@@ -3322,7 +3322,7 @@
 
 	; POKEMANIAC (4)
 	db "SHANE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 16, NIDORINA
@@ -3334,7 +3334,7 @@
 
 	; POKEMANIAC (5)
 	db "BEN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 19, SLOWBRO
@@ -3345,7 +3345,7 @@
 
 	; POKEMANIAC (6)
 	db "BRENT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 19, LICKITUNG
@@ -3356,7 +3356,7 @@
 
 	; POKEMANIAC (7)
 	db "RON@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 19, NIDOKING
@@ -3367,7 +3367,7 @@
 
 	; POKEMANIAC (8)
 	db "ETHAN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 31, RHYHORN
@@ -3379,7 +3379,7 @@
 
 	; POKEMANIAC (9)
 	db "BRENT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 25, KANGASKHAN
@@ -3390,7 +3390,7 @@
 
 	; POKEMANIAC (10)
 	db "BRENT@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -3406,7 +3406,7 @@
 
 	; POKEMANIAC (11)
 	db "ISSAC@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -3422,7 +3422,7 @@
 
 	; POKEMANIAC (12)
 	db "DONALD@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 10, SLOWPOKE
@@ -3434,7 +3434,7 @@
 
 	; POKEMANIAC (13)
 	db "ZACH@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 27, RHYHORN
@@ -3445,7 +3445,7 @@
 
 	; POKEMANIAC (14)
 	db "BRENT@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -3461,7 +3461,7 @@
 
 	; POKEMANIAC (15)
 	db "MILLER@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 17, NIDOKING
@@ -3479,7 +3479,7 @@
 
 	; GRUNTM (1)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 14, KOFFING
@@ -3490,7 +3490,7 @@
 
 	; GRUNTM (2)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 7, RATTATA
@@ -3503,7 +3503,7 @@
 
 	; GRUNTM (3)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 24, RATICATE
@@ -3515,7 +3515,7 @@
 
 	; GRUNTM (4)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 23, GRIMER
@@ -3528,7 +3528,7 @@
 
 	; GRUNTM (5)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 21, RATTATA
@@ -3543,7 +3543,7 @@
 
 	; GRUNTM (6)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 26, ZUBAT
@@ -3555,7 +3555,7 @@
 
 	; GRUNTM (7)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 23, KOFFING
@@ -3569,7 +3569,7 @@
 
 	; GRUNTM (8)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 26, WEEZING
@@ -3580,7 +3580,7 @@
 
 	; GRUNTM (9)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 24, RATICATE
@@ -3592,7 +3592,7 @@
 
 	; GRUNTM (10)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 22, ZUBAT
@@ -3605,7 +3605,7 @@
 
 	; GRUNTM (11)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 23, MUK
@@ -3618,7 +3618,7 @@
 
 	; GRUNTM (12)
 	db "EXECUTIVE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 33, HOUNDOUR
@@ -3629,7 +3629,7 @@
 
 	; GRUNTM (13)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 27, RATTATA
@@ -3640,7 +3640,7 @@
 
 	; GRUNTM (14)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 24, RATICATE
@@ -3652,7 +3652,7 @@
 
 	; GRUNTM (15)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 26, GRIMER
@@ -3664,7 +3664,7 @@
 
 	; GRUNTM (16)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 16, RATTATA
@@ -3678,7 +3678,7 @@
 
 	; GRUNTM (17)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 18, GOLBAT
@@ -3689,7 +3689,7 @@
 
 	; GRUNTM (18)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 17, RATTATA
@@ -3702,7 +3702,7 @@
 
 	; GRUNTM (19)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 18, VENONAT
@@ -3714,7 +3714,7 @@
 
 	; GRUNTM (20)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 17, DROWZEE
@@ -3726,7 +3726,7 @@
 
 	; GRUNTM (21)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 16, ZUBAT
@@ -3739,7 +3739,7 @@
 
 	; GRUNTM (22)
 	db "EXECUTIVE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 36, GOLBAT
@@ -3750,7 +3750,7 @@
 
 	; GRUNTM (23)
 	db "EXECUTIVE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 30, KOFFING
@@ -3761,7 +3761,7 @@
 
 	; GRUNTM (24)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 25, KOFFING
@@ -3773,7 +3773,7 @@
 
 	; GRUNTM (25)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 24, KOFFING
@@ -3785,7 +3785,7 @@
 
 	; GRUNTM (26)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 15, RATTATA
@@ -3797,7 +3797,7 @@
 
 	; GRUNTM (27)
 	db "EXECUTIVE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 22, ZUBAT
@@ -3808,7 +3808,7 @@
 
 	; GRUNTM (28)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 19, RATICATE
@@ -3819,7 +3819,7 @@
 
 	; GRUNTM (29)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 9, RATTATA
@@ -3831,7 +3831,7 @@
 
 	; GRUNTM (30)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 25, GOLBAT
@@ -3844,7 +3844,7 @@
 
 	; GRUNTM (31)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 30, GOLBAT
@@ -3861,7 +3861,7 @@
 
 	; GENTLEMAN (1)
 	db "PRESTON@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 18, GROWLITHE
@@ -3873,7 +3873,7 @@
 
 	; GENTLEMAN (2)
 	db "EDWARD@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 33, PERSIAN
@@ -3884,7 +3884,7 @@
 
 	; GENTLEMAN (3)
 	db "GREGORY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 37, PIKACHU
@@ -3896,7 +3896,7 @@
 
 	; GENTLEMAN (4)
 	db "VIRGIL@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 20, PONYTA
@@ -3907,7 +3907,7 @@
 
 	; GENTLEMAN (5)
 	db "ALFRED@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 20, NOCTOWL
@@ -3924,7 +3924,7 @@
 
 	; SKIER (1)
 	db "ROXANNE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 28, JYNX
@@ -3935,7 +3935,7 @@
 
 	; SKIER (2)
 	db "CLARISSA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 28, DEWGONG
@@ -3952,7 +3952,7 @@
 
 	; TEACHER (1)
 	db "COLETTE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 36, CLEFAIRY
@@ -3963,7 +3963,7 @@
 
 	; TEACHER (2)
 	db "HILLARY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, AIPOM
@@ -3975,7 +3975,7 @@
 
 	; TEACHER (3)
 	db "SHIRLEY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 35, JIGGLYPUFF
@@ -3992,7 +3992,7 @@
 
 	; SABRINA (1)
 	db "SABRINA@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -4026,7 +4026,7 @@
 
 	; BUG_CATCHER (1)
 	db "DON@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 3, CATERPIE
@@ -4038,7 +4038,7 @@
 
 	; BUG_CATCHER (2)
 	db "ROB@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, BEEDRILL
@@ -4050,7 +4050,7 @@
 
 	; BUG_CATCHER (3)
 	db "ED@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 30, BEEDRILL
@@ -4063,7 +4063,7 @@
 
 	; BUG_CATCHER (4)
 	db "WADE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 2, CATERPIE
@@ -4077,7 +4077,7 @@
 
 	; BUG_CATCHER (5)
 	db "BENNY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 7, WEEDLE
@@ -4090,7 +4090,7 @@
 
 	; BUG_CATCHER (6)
 	db "AL@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 12, CATERPIE
@@ -4102,7 +4102,7 @@
 
 	; BUG_CATCHER (7)
 	db "JOSH@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 13, PARAS
@@ -4113,7 +4113,7 @@
 
 	; BUG_CATCHER (8)
 	db "ARNIE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 15, VENONAT
@@ -4124,7 +4124,7 @@
 
 	; BUG_CATCHER (9)
 	db "KEN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 30, ARIADOS
@@ -4136,7 +4136,7 @@
 
 	; BUG_CATCHER (10)
 	db "WADE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 9, METAPOD
@@ -4150,7 +4150,7 @@
 
 	; BUG_CATCHER (11)
 	db "WADE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 14, BUTTERFREE
@@ -4164,7 +4164,7 @@
 
 	; BUG_CATCHER (12)
 	db "DOUG@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 34, ARIADOS
@@ -4175,7 +4175,7 @@
 
 	; BUG_CATCHER (13)
 	db "ARNIE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 19, VENONAT
@@ -4186,7 +4186,7 @@
 
 	; BUG_CATCHER (14)
 	db "ARNIE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -4202,7 +4202,7 @@
 
 	; BUG_CATCHER (15)
 	db "WADE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -4236,7 +4236,7 @@
 
 	; BUG_CATCHER (16)
 	db "WADE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -4270,7 +4270,7 @@
 
 	; BUG_CATCHER (17)
 	db "ARNIE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -4286,7 +4286,7 @@
 
 	; BUG_CATCHER (18)
 	db "ARNIE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -4302,7 +4302,7 @@
 
 	; BUG_CATCHER (19)
 	db "WAYNE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 8, LEDYBA
@@ -4320,7 +4320,7 @@
 
 	; FISHER (1)
 	db "JUSTIN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 5, MAGIKARP
@@ -4334,7 +4334,7 @@
 
 	; FISHER (2)
 	db "RALPH@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 10, GOLDEEN
@@ -4345,7 +4345,7 @@
 
 	; FISHER (3)
 	db "ARNOLD@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 34, TENTACRUEL
@@ -4356,7 +4356,7 @@
 
 	; FISHER (4)
 	db "KYLE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 28, SEAKING
@@ -4369,7 +4369,7 @@
 
 	; FISHER (5)
 	db "HENRY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 8, POLIWAG
@@ -4381,7 +4381,7 @@
 
 	; FISHER (6)
 	db "MARVIN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 10, MAGIKARP
@@ -4395,7 +4395,7 @@
 
 	; FISHER (7)
 	db "TULLY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 18, QWILFISH
@@ -4406,7 +4406,7 @@
 
 	; FISHER (8)
 	db "ANDRE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 27, GYARADOS
@@ -4417,7 +4417,7 @@
 
 	; FISHER (9)
 	db "RAYMOND@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 22, MAGIKARP
@@ -4431,7 +4431,7 @@
 
 	; FISHER (10)
 	db "WILTON@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 23, GOLDEEN
@@ -4444,7 +4444,7 @@
 
 	; FISHER (11)
 	db "EDGAR@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -4466,7 +4466,7 @@
 
 	; FISHER (12)
 	db "JONAH@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 25, SHELLDER
@@ -4480,7 +4480,7 @@
 
 	; FISHER (13)
 	db "MARTIN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, REMORAID
@@ -4492,7 +4492,7 @@
 
 	; FISHER (14)
 	db "STEPHEN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 25, MAGIKARP
@@ -4506,7 +4506,7 @@
 
 	; FISHER (15)
 	db "BARNEY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 30, GYARADOS
@@ -4519,7 +4519,7 @@
 
 	; FISHER (16)
 	db "RALPH@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 17, GOLDEEN
@@ -4530,7 +4530,7 @@
 
 	; FISHER (17)
 	db "RALPH@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 17, QWILFISH
@@ -4542,7 +4542,7 @@
 
 	; FISHER (18)
 	db "TULLY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 23, QWILFISH
@@ -4553,7 +4553,7 @@
 
 	; FISHER (19)
 	db "TULLY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, GOLDEEN
@@ -4566,7 +4566,7 @@
 
 	; FISHER (20)
 	db "WILTON@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 29, GOLDEEN
@@ -4579,7 +4579,7 @@
 
 	; FISHER (21)
 	db "SCOTT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 30, QWILFISH
@@ -4592,7 +4592,7 @@
 
 	; FISHER (22)
 	db "WILTON@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -4620,7 +4620,7 @@
 
 	; FISHER (23)
 	db "RALPH@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 30, QWILFISH
@@ -4632,7 +4632,7 @@
 
 	; FISHER (24)
 	db "RALPH@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -4654,7 +4654,7 @@
 
 	; FISHER (25)
 	db "TULLY@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -4688,7 +4688,7 @@
 
 	; SWIMMERM (1)
 	db "HAROLD@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, REMORAID
@@ -4700,7 +4700,7 @@
 
 	; SWIMMERM (2)
 	db "SIMON@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 20, TENTACOOL
@@ -4712,7 +4712,7 @@
 
 	; SWIMMERM (3)
 	db "RANDALL@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 18, SHELLDER
@@ -4725,7 +4725,7 @@
 
 	; SWIMMERM (4)
 	db "CHARLIE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 21, SHELLDER
@@ -4738,7 +4738,7 @@
 
 	; SWIMMERM (5)
 	db "GEORGE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 16, TENTACOOL
@@ -4754,7 +4754,7 @@
 
 	; SWIMMERM (6)
 	db "BERKE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 23, QWILFISH
@@ -4765,7 +4765,7 @@
 
 	; SWIMMERM (7)
 	db "KIRK@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 20, GYARADOS
@@ -4777,7 +4777,7 @@
 
 	; SWIMMERM (8)
 	db "MATHEW@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 23, KRABBY
@@ -4788,7 +4788,7 @@
 
 	; SWIMMERM (9)
 	db "HAL@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 24, SEEL
@@ -4801,7 +4801,7 @@
 
 	; SWIMMERM (10)
 	db "PATON@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 26, PILOSWINE
@@ -4813,7 +4813,7 @@
 
 	; SWIMMERM (11)
 	db "DARYL@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 24, SHELLDER
@@ -4826,7 +4826,7 @@
 
 	; SWIMMERM (12)
 	db "WALTER@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 15, HORSEA
@@ -4839,7 +4839,7 @@
 
 	; SWIMMERM (13)
 	db "TONY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 13, STARYU
@@ -4852,7 +4852,7 @@
 
 	; SWIMMERM (14)
 	db "JEROME@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 26, SEADRA
@@ -4866,7 +4866,7 @@
 
 	; SWIMMERM (15)
 	db "TUCKER@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 30, SHELLDER
@@ -4878,7 +4878,7 @@
 
 	; SWIMMERM (16)
 	db "RICK@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 13, STARYU
@@ -4891,7 +4891,7 @@
 
 	; SWIMMERM (17)
 	db "CAMERON@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 34, MARILL
@@ -4902,7 +4902,7 @@
 
 	; SWIMMERM (18)
 	db "SETH@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 29, QUAGSIRE
@@ -4915,7 +4915,7 @@
 
 	; SWIMMERM (19)
 	db "JAMES@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 13, STARYU
@@ -4928,7 +4928,7 @@
 
 	; SWIMMERM (20)
 	db "LEWIS@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 13, STARYU
@@ -4941,7 +4941,7 @@
 
 	; SWIMMERM (21)
 	db "PARKER@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, HORSEA
@@ -4960,7 +4960,7 @@
 
 	; SWIMMERF (1)
 	db "ELAINE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 21, STARYU
@@ -4971,7 +4971,7 @@
 
 	; SWIMMERF (2)
 	db "PAULA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 19, STARYU
@@ -4983,7 +4983,7 @@
 
 	; SWIMMERF (3)
 	db "KAYLEE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 18, GOLDEEN
@@ -4996,7 +4996,7 @@
 
 	; SWIMMERF (4)
 	db "SUSIE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -5018,7 +5018,7 @@
 
 	; SWIMMERF (5)
 	db "DENISE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 22, SEEL
@@ -5029,7 +5029,7 @@
 
 	; SWIMMERF (6)
 	db "KARA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 20, STARYU
@@ -5041,7 +5041,7 @@
 
 	; SWIMMERF (7)
 	db "WENDY@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -5063,7 +5063,7 @@
 
 	; SWIMMERF (8)
 	db "LISA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 28, JYNX
@@ -5074,7 +5074,7 @@
 
 	; SWIMMERF (9)
 	db "JILL@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 28, DEWGONG
@@ -5085,7 +5085,7 @@
 
 	; SWIMMERF (10)
 	db "MARY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 20, SEAKING
@@ -5096,7 +5096,7 @@
 
 	; SWIMMERF (11)
 	db "KATIE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 33, DEWGONG
@@ -5107,7 +5107,7 @@
 
 	; SWIMMERF (12)
 	db "DAWN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 34, SEAKING
@@ -5118,7 +5118,7 @@
 
 	; SWIMMERF (13)
 	db "TARA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 20, SEAKING
@@ -5129,7 +5129,7 @@
 
 	; SWIMMERF (14)
 	db "NICOLE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 29, MARILL
@@ -5142,7 +5142,7 @@
 
 	; SWIMMERF (15)
 	db "LORI@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, STARMIE
@@ -5154,7 +5154,7 @@
 
 	; SWIMMERF (16)
 	db "JODY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 20, SEAKING
@@ -5165,7 +5165,7 @@
 
 	; SWIMMERF (17)
 	db "NIKKI@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 28, SEEL
@@ -5179,7 +5179,7 @@
 
 	; SWIMMERF (18)
 	db "DIANA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 37, GOLDUCK
@@ -5190,7 +5190,7 @@
 
 	; SWIMMERF (19)
 	db "BRIANA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 35, SEAKING
@@ -5208,7 +5208,7 @@
 
 	; SAILOR (1)
 	db "EUGENE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 17, POLIWHIRL
@@ -5221,7 +5221,7 @@
 
 	; SAILOR (2)
 	db "HUEY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 18, POLIWAG
@@ -5233,7 +5233,7 @@
 
 	; SAILOR (3)
 	db "TERRELL@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 20, POLIWHIRL
@@ -5244,7 +5244,7 @@
 
 	; SAILOR (4)
 	db "KENT@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -5266,7 +5266,7 @@
 
 	; SAILOR (5)
 	db "ERNEST@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 18, MACHOP
@@ -5279,7 +5279,7 @@
 
 	; SAILOR (6)
 	db "JEFF@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, RATICATE
@@ -5291,7 +5291,7 @@
 
 	; SAILOR (7)
 	db "GARRETT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 34, KINGLER
@@ -5302,7 +5302,7 @@
 
 	; SAILOR (8)
 	db "KENNETH@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 28, MACHOP
@@ -5316,7 +5316,7 @@
 
 	; SAILOR (9)
 	db "STANLY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 31, MACHOP
@@ -5329,7 +5329,7 @@
 
 	; SAILOR (10)
 	db "HARRY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 19, WOOPER
@@ -5340,7 +5340,7 @@
 
 	; SAILOR (11)
 	db "HUEY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 28, POLIWHIRL
@@ -5352,7 +5352,7 @@
 
 	; SAILOR (12)
 	db "HUEY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 34, POLIWHIRL
@@ -5364,7 +5364,7 @@
 
 	; SAILOR (13)
 	db "HUEY@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -5392,7 +5392,7 @@
 
 	; SUPER_NERD (1)
 	db "STAN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 20, GRIMER
@@ -5403,7 +5403,7 @@
 
 	; SUPER_NERD (2)
 	db "ERIC@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 11, GRIMER
@@ -5415,7 +5415,7 @@
 
 	; SUPER_NERD (3)
 	db "GREGG@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 20, MAGNEMITE
@@ -5428,7 +5428,7 @@
 
 	; SUPER_NERD (4)
 	db "JAY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 22, KOFFING
@@ -5440,7 +5440,7 @@
 
 	; SUPER_NERD (5)
 	db "DAVE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 24, DITTO
@@ -5451,7 +5451,7 @@
 
 	; SUPER_NERD (6)
 	db "SAM@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 34, GRIMER
@@ -5463,7 +5463,7 @@
 
 	; SUPER_NERD (7)
 	db "TOM@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, MAGNEMITE
@@ -5476,7 +5476,7 @@
 
 	; SUPER_NERD (8)
 	db "PAT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 36, PORYGON
@@ -5487,7 +5487,7 @@
 
 	; SUPER_NERD (9)
 	db "SHAWN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 31, MAGNEMITE
@@ -5500,7 +5500,7 @@
 
 	; SUPER_NERD (10)
 	db "TERU@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 7, MAGNEMITE
@@ -5514,7 +5514,7 @@
 
 	; SUPER_NERD (11)
 	db "RUSS@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 27, MAGNEMITE
@@ -5527,7 +5527,7 @@
 
 	; SUPER_NERD (12)
 	db "NORTON@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -5543,7 +5543,7 @@
 
 	; SUPER_NERD (13)
 	db "HUGH@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -5559,7 +5559,7 @@
 
 	; SUPER_NERD (14)
 	db "MARKUS@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -5581,7 +5581,7 @@
 
 	; RIVAL2 (1)
 	db "?@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -5627,7 +5627,7 @@
 
 	; RIVAL2 (2)
 	db "?@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -5673,7 +5673,7 @@
 
 	; RIVAL2 (3)
 	db "?@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -5719,7 +5719,7 @@
 
 	; RIVAL2 (4)
 	db "?@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -5765,7 +5765,7 @@
 
 	; RIVAL2 (5)
 	db "?@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -5811,7 +5811,7 @@
 
 	; RIVAL2 (6)
 	db "?@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -5863,7 +5863,7 @@
 
 	; GUITARIST (1)
 	db "CLYDE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 34, ELECTABUZZ
@@ -5874,7 +5874,7 @@
 
 	; GUITARIST (2)
 	db "VINCENT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 27, MAGNEMITE
@@ -5894,7 +5894,7 @@
 
 	; HIKER (1)
 	db "ANTHONY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 16, GEODUDE
@@ -5906,7 +5906,7 @@
 
 	; HIKER (2)
 	db "RUSSELL@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 4, GEODUDE
@@ -5919,7 +5919,7 @@
 
 	; HIKER (3)
 	db "PHILLIP@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 23, GEODUDE
@@ -5932,7 +5932,7 @@
 
 	; HIKER (4)
 	db "LEONARD@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 23, GEODUDE
@@ -5944,7 +5944,7 @@
 
 	; HIKER (5)
 	db "ANTHONY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 11, GEODUDE
@@ -5956,7 +5956,7 @@
 
 	; HIKER (6)
 	db "BENJAMIN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 14, DIGLETT
@@ -5969,7 +5969,7 @@
 
 	; HIKER (7)
 	db "ERIK@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 24, MACHOP
@@ -5982,7 +5982,7 @@
 
 	; HIKER (8)
 	db "MICHAEL@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 25, GEODUDE
@@ -5995,7 +5995,7 @@
 
 	; HIKER (9)
 	db "PARRY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 35, ONIX
@@ -6007,7 +6007,7 @@
 
 	; HIKER (10)
 	db "TIMOTHY@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -6029,7 +6029,7 @@
 
 	; HIKER (11)
 	db "BAILEY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 13, GEODUDE
@@ -6044,7 +6044,7 @@
 
 	; HIKER (12)
 	db "ANTHONY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 25, GRAVELER
@@ -6057,7 +6057,7 @@
 
 	; HIKER (13)
 	db "TIM@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 31, GRAVELER
@@ -6070,7 +6070,7 @@
 
 	; HIKER (14)
 	db "NOLAND@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 31, SANDSLASH
@@ -6082,7 +6082,7 @@
 
 	; HIKER (15)
 	db "SIDNEY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 34, DUGTRIO
@@ -6094,7 +6094,7 @@
 
 	; HIKER (16)
 	db "KENNY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 27, SANDSLASH
@@ -6108,7 +6108,7 @@
 
 	; HIKER (17)
 	db "JIM@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 35, MACHAMP
@@ -6119,7 +6119,7 @@
 
 	; HIKER (18)
 	db "DANIEL@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 11, ONIX
@@ -6130,7 +6130,7 @@
 
 	; HIKER (19)
 	db "PARRY@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -6158,7 +6158,7 @@
 
 	; HIKER (20)
 	db "PARRY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 29, ONIX
@@ -6169,7 +6169,7 @@
 
 	; HIKER (21)
 	db "ANTHONY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 30, GRAVELER
@@ -6182,7 +6182,7 @@
 
 	; HIKER (22)
 	db "ANTHONY@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -6216,7 +6216,7 @@
 
 	; BIKER (1)
 	db "BENNY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 20, KOFFING
@@ -6229,7 +6229,7 @@
 
 	; BIKER (2)
 	db "KAZU@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 20, KOFFING
@@ -6242,7 +6242,7 @@
 
 	; BIKER (3)
 	db "DWAYNE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 27, KOFFING
@@ -6256,7 +6256,7 @@
 
 	; BIKER (4)
 	db "HARRIS@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 34, FLAREON
@@ -6267,7 +6267,7 @@
 
 	; BIKER (5)
 	db "ZEKE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, KOFFING
@@ -6279,7 +6279,7 @@
 
 	; BIKER (6)
 	db "CHARLES@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 30, KOFFING
@@ -6292,7 +6292,7 @@
 
 	; BIKER (7)
 	db "RILEY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 34, WEEZING
@@ -6303,7 +6303,7 @@
 
 	; BIKER (8)
 	db "JOEL@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, MAGMAR
@@ -6315,7 +6315,7 @@
 
 	; BIKER (9)
 	db "GLENN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 28, KOFFING
@@ -6334,7 +6334,7 @@
 
 	; BLAINE (1)
 	db "BLAINE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -6368,7 +6368,7 @@
 
 	; BURGLAR (1)
 	db "DUNCAN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 23, KOFFING
@@ -6381,7 +6381,7 @@
 
 	; BURGLAR (2)
 	db "EDDIE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -6403,7 +6403,7 @@
 
 	; BURGLAR (3)
 	db "COREY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 25, KOFFING
@@ -6423,7 +6423,7 @@
 
 	; FIREBREATHER (1)
 	db "OTIS@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 29, MAGMAR
@@ -6436,7 +6436,7 @@
 
 	; FIREBREATHER (2)
 	db "DICK@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 17, CHARMELEON
@@ -6447,7 +6447,7 @@
 
 	; FIREBREATHER (3)
 	db "NED@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 15, KOFFING
@@ -6460,7 +6460,7 @@
 
 	; FIREBREATHER (4)
 	db "BURT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, KOFFING
@@ -6472,7 +6472,7 @@
 
 	; FIREBREATHER (5)
 	db "BILL@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 6, KOFFING
@@ -6484,7 +6484,7 @@
 
 	; FIREBREATHER (6)
 	db "WALT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 11, MAGMAR
@@ -6496,7 +6496,7 @@
 
 	; FIREBREATHER (7)
 	db "RAY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 9, VULPIX
@@ -6507,7 +6507,7 @@
 
 	; FIREBREATHER (8)
 	db "LYLE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 28, KOFFING
@@ -6526,7 +6526,7 @@
 
 	; JUGGLER (1)
 	db "IRWIN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 2, VOLTORB
@@ -6540,7 +6540,7 @@
 
 	; JUGGLER (2)
 	db "FRITZ@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 29, MR__MIME
@@ -6553,7 +6553,7 @@
 
 	; JUGGLER (3)
 	db "HORTON@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 33, ELECTRODE
@@ -6567,7 +6567,7 @@
 
 	; JUGGLER (4)
 	db "IRWIN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 6, VOLTORB
@@ -6581,7 +6581,7 @@
 
 	; JUGGLER (5)
 	db "IRWIN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 18, VOLTORB
@@ -6595,7 +6595,7 @@
 
 	; JUGGLER (6)
 	db "IRWIN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 18, VOLTORB
@@ -6615,7 +6615,7 @@
 
 	; BLACKBELT_T (1)
 	db "KENJI@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 27, ONIX
@@ -6629,7 +6629,7 @@
 
 	; BLACKBELT_T (2)
 	db "YOSHI@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -6645,7 +6645,7 @@
 
 	; BLACKBELT_T (3)
 	db "KENJI@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -6679,7 +6679,7 @@
 
 	; BLACKBELT_T (4)
 	db "LAO@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -6695,7 +6695,7 @@
 
 	; BLACKBELT_T (5)
 	db "NOB@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -6717,7 +6717,7 @@
 
 	; BLACKBELT_T (6)
 	db "KIYO@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 34, HITMONLEE
@@ -6729,7 +6729,7 @@
 
 	; BLACKBELT_T (7)
 	db "LUNG@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 23, MANKEY
@@ -6742,7 +6742,7 @@
 
 	; BLACKBELT_T (8)
 	db "KENJI@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 28, MACHOKE
@@ -6753,7 +6753,7 @@
 
 	; BLACKBELT_T (9)
 	db "WAI@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 30, MACHOKE
@@ -6772,7 +6772,7 @@
 
 	; EXECUTIVEM (1)
 	db "EXECUTIVE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -6800,7 +6800,7 @@
 
 	; EXECUTIVEM (2)
 	db "EXECUTIVE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -6816,7 +6816,7 @@
 
 	; EXECUTIVEM (3)
 	db "EXECUTIVE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -6862,7 +6862,7 @@
 
 	; EXECUTIVEM (4)
 	db "EXECUTIVE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 22, ZUBAT
@@ -6881,7 +6881,7 @@
 
 	; PSYCHIC_T (1)
 	db "NATHAN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 26, GIRAFARIG
@@ -6892,7 +6892,7 @@
 
 	; PSYCHIC_T (2)
 	db "FRANKLIN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 37, KADABRA
@@ -6903,7 +6903,7 @@
 
 	; PSYCHIC_T (3)
 	db "HERMAN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 30, EXEGGCUTE
@@ -6916,7 +6916,7 @@
 
 	; PSYCHIC_T (4)
 	db "FIDEL@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 34, XATU
@@ -6927,7 +6927,7 @@
 
 	; PSYCHIC_T (5)
 	db "GREG@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -6943,7 +6943,7 @@
 
 	; PSYCHIC_T (6)
 	db "NORMAN@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -6965,7 +6965,7 @@
 
 	; PSYCHIC_T (7)
 	db "MARK@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -6993,7 +6993,7 @@
 
 	; PSYCHIC_T (8)
 	db "PHIL@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -7015,7 +7015,7 @@
 
 	; PSYCHIC_T (9)
 	db "RICHARD@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 36, ESPEON
@@ -7026,7 +7026,7 @@
 
 	; PSYCHIC_T (10)
 	db "GILBERT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 30, STARMIE
@@ -7039,7 +7039,7 @@
 
 	; PSYCHIC_T (11)
 	db "JARED@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, MR__MIME
@@ -7052,7 +7052,7 @@
 
 	; PSYCHIC_T (12)
 	db "RODNEY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 29, DROWZEE
@@ -7070,7 +7070,7 @@
 
 	; PICNICKER (1)
 	db "LIZ@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 9, NIDORAN_F
@@ -7081,7 +7081,7 @@
 
 	; PICNICKER (2)
 	db "GINA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 9, HOPPIP
@@ -7094,7 +7094,7 @@
 
 	; PICNICKER (3)
 	db "BROOKE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -7110,7 +7110,7 @@
 
 	; PICNICKER (4)
 	db "KIM@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 15, VULPIX
@@ -7121,7 +7121,7 @@
 
 	; PICNICKER (5)
 	db "CINDY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 36, NIDOQUEEN
@@ -7132,7 +7132,7 @@
 
 	; PICNICKER (6)
 	db "HOPE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 34, FLAAFFY
@@ -7143,7 +7143,7 @@
 
 	; PICNICKER (7)
 	db "SHARON@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 31, FURRET
@@ -7155,7 +7155,7 @@
 
 	; PICNICKER (8)
 	db "DEBRA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 33, SEAKING
@@ -7166,7 +7166,7 @@
 
 	; PICNICKER (9)
 	db "GINA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 14, HOPPIP
@@ -7179,7 +7179,7 @@
 
 	; PICNICKER (10)
 	db "ERIN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 16, PONYTA
@@ -7191,7 +7191,7 @@
 
 	; PICNICKER (11)
 	db "LIZ@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 15, WEEPINBELL
@@ -7203,7 +7203,7 @@
 
 	; PICNICKER (12)
 	db "LIZ@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 19, WEEPINBELL
@@ -7216,7 +7216,7 @@
 
 	; PICNICKER (13)
 	db "HEIDI@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, SKIPLOOM
@@ -7228,7 +7228,7 @@
 
 	; PICNICKER (14)
 	db "EDNA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 30, NIDORINA
@@ -7240,7 +7240,7 @@
 
 	; PICNICKER (15)
 	db "GINA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 26, SKIPLOOM
@@ -7253,7 +7253,7 @@
 
 	; PICNICKER (16)
 	db "TIFFANY@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -7269,7 +7269,7 @@
 
 	; PICNICKER (17)
 	db "TIFFANY@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -7285,7 +7285,7 @@
 
 	; PICNICKER (18)
 	db "ERIN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, PONYTA
@@ -7297,7 +7297,7 @@
 
 	; PICNICKER (19)
 	db "TANYA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 37, EXEGGUTOR
@@ -7308,7 +7308,7 @@
 
 	; PICNICKER (20)
 	db "TIFFANY@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -7324,7 +7324,7 @@
 
 	; PICNICKER (21)
 	db "ERIN@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -7352,7 +7352,7 @@
 
 	; PICNICKER (22)
 	db "LIZ@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 24, WEEPINBELL
@@ -7365,7 +7365,7 @@
 
 	; PICNICKER (23)
 	db "LIZ@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -7393,7 +7393,7 @@
 
 	; PICNICKER (24)
 	db "GINA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 30, SKIPLOOM
@@ -7406,7 +7406,7 @@
 
 	; PICNICKER (25)
 	db "GINA@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -7434,7 +7434,7 @@
 
 	; PICNICKER (26)
 	db "TIFFANY@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -7456,7 +7456,7 @@
 
 	; CAMPER (1)
 	db "ROLAND@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 9, NIDORAN_M
@@ -7467,7 +7467,7 @@
 
 	; CAMPER (2)
 	db "TODD@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 14, PSYDUCK
@@ -7478,7 +7478,7 @@
 
 	; CAMPER (3)
 	db "IVAN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 10, DIGLETT
@@ -7491,7 +7491,7 @@
 
 	; CAMPER (4)
 	db "ELLIOT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 13, SANDSHREW
@@ -7503,7 +7503,7 @@
 
 	; CAMPER (5)
 	db "BARRY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 36, NIDOKING
@@ -7514,7 +7514,7 @@
 
 	; CAMPER (6)
 	db "LLOYD@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 34, NIDOKING
@@ -7525,7 +7525,7 @@
 
 	; CAMPER (7)
 	db "DEAN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 33, GOLDUCK
@@ -7537,7 +7537,7 @@
 
 	; CAMPER (8)
 	db "SID@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, DUGTRIO
@@ -7550,7 +7550,7 @@
 
 	; CAMPER (9)
 	db "HARVEY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 15, NIDORINO
@@ -7561,7 +7561,7 @@
 
 	; CAMPER (10)
 	db "DALE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 15, NIDORINO
@@ -7572,7 +7572,7 @@
 
 	; CAMPER (11)
 	db "TED@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 17, MANKEY
@@ -7583,7 +7583,7 @@
 
 	; CAMPER (12)
 	db "TODD@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 17, GEODUDE
@@ -7596,7 +7596,7 @@
 
 	; CAMPER (13)
 	db "TODD@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 23, GEODUDE
@@ -7609,7 +7609,7 @@
 
 	; CAMPER (14)
 	db "THOMAS@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 33, GRAVELER
@@ -7623,7 +7623,7 @@
 
 	; CAMPER (15)
 	db "LEROY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 33, GRAVELER
@@ -7637,7 +7637,7 @@
 
 	; CAMPER (16)
 	db "DAVID@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 33, GRAVELER
@@ -7651,7 +7651,7 @@
 
 	; CAMPER (17)
 	db "JOHN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 33, GRAVELER
@@ -7665,7 +7665,7 @@
 
 	; CAMPER (18)
 	db "JERRY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 37, SANDSLASH
@@ -7676,7 +7676,7 @@
 
 	; CAMPER (19)
 	db "SPENCER@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 17, SANDSHREW
@@ -7689,7 +7689,7 @@
 
 	; CAMPER (20)
 	db "TODD@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 30, GRAVELER
@@ -7703,7 +7703,7 @@
 
 	; CAMPER (21)
 	db "TODD@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -7737,7 +7737,7 @@
 
 	; CAMPER (22)
 	db "QUENTIN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 30, FEAROW
@@ -7756,7 +7756,7 @@
 
 	; EXECUTIVEF (1)
 	db "EXECUTIVE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -7784,7 +7784,7 @@
 
 	; EXECUTIVEF (2)
 	db "EXECUTIVE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -7818,7 +7818,7 @@
 
 	; SAGE (1)
 	db "CHOW@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 3, BELLSPROUT
@@ -7831,7 +7831,7 @@
 
 	; SAGE (2)
 	db "NICO@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 3, BELLSPROUT
@@ -7844,7 +7844,7 @@
 
 	; SAGE (3)
 	db "JIN@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 6, BELLSPROUT
@@ -7855,7 +7855,7 @@
 
 	; SAGE (4)
 	db "TROY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 7, BELLSPROUT
@@ -7867,7 +7867,7 @@
 
 	; SAGE (5)
 	db "JEFFREY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 22, HAUNTER
@@ -7878,7 +7878,7 @@
 
 	; SAGE (6)
 	db "PING@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 16, GASTLY
@@ -7893,7 +7893,7 @@
 
 	; SAGE (7)
 	db "EDMOND@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 3, BELLSPROUT
@@ -7906,7 +7906,7 @@
 
 	; SAGE (8)
 	db "NEAL@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 6, BELLSPROUT
@@ -7917,7 +7917,7 @@
 
 	; SAGE (9)
 	db "LI@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 7, BELLSPROUT
@@ -7930,7 +7930,7 @@
 
 	; SAGE (10)
 	db "GAKU@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, NOCTOWL
@@ -7942,7 +7942,7 @@
 
 	; SAGE (11)
 	db "MASA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, NOCTOWL
@@ -7954,7 +7954,7 @@
 
 	; SAGE (12)
 	db "KOJI@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 32, NOCTOWL
@@ -7972,7 +7972,7 @@
 
 	; MEDIUM (1)
 	db "MARTHA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 18, GASTLY
@@ -7985,7 +7985,7 @@
 
 	; MEDIUM (2)
 	db "GRACE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 20, HAUNTER
@@ -7997,7 +7997,7 @@
 
 	; MEDIUM (3)
 	db "BETHANY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 25, HAUNTER
@@ -8008,7 +8008,7 @@
 
 	; MEDIUM (4)
 	db "MARGRET@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 25, HAUNTER
@@ -8019,7 +8019,7 @@
 
 	; MEDIUM (5)
 	db "ETHEL@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 25, HAUNTER
@@ -8030,7 +8030,7 @@
 
 	; MEDIUM (6)
 	db "REBECCA@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 35, DROWZEE
@@ -8042,7 +8042,7 @@
 
 	; MEDIUM (7)
 	db "DORIS@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 34, SLOWPOKE
@@ -8060,7 +8060,7 @@
 
 	; BOARDER (1)
 	db "RONALD@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 24, SEEL
@@ -8073,7 +8073,7 @@
 
 	; BOARDER (2)
 	db "BRAD@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 26, SWINUB
@@ -8085,7 +8085,7 @@
 
 	; BOARDER (3)
 	db "DOUGLAS@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 24, SHELLDER
@@ -8104,7 +8104,7 @@
 
 	; POKEFANM (1)
 	db "WILLIAM@"
-	db 2 ; item
+	db TRAINERTYPE_ITEM
 
 	; party
 	db 14, RAICHU, BERRY
@@ -8115,7 +8115,7 @@
 
 	; POKEFANM (2)
 	db "DEREK@"
-	db 2 ; item
+	db TRAINERTYPE_ITEM
 
 	; party
 	db 17, PIKACHU, BERRY
@@ -8126,7 +8126,7 @@
 
 	; POKEFANM (3)
 	db "ROBERT@"
-	db 2 ; item
+	db TRAINERTYPE_ITEM
 
 	; party
 	db 33, QUAGSIRE, BERRY
@@ -8137,7 +8137,7 @@
 
 	; POKEFANM (4)
 	db "JOSHUA@"
-	db 2 ; item
+	db TRAINERTYPE_ITEM
 
 	; party
 	db 23, PIKACHU, BERRY
@@ -8153,7 +8153,7 @@
 
 	; POKEFANM (5)
 	db "CARTER@"
-	db 2 ; item
+	db TRAINERTYPE_ITEM
 
 	; party
 	db 29, BULBASAUR, BERRY
@@ -8166,7 +8166,7 @@
 
 	; POKEFANM (6)
 	db "TREVOR@"
-	db 2 ; item
+	db TRAINERTYPE_ITEM
 
 	; party
 	db 33, PSYDUCK, BERRY
@@ -8177,7 +8177,7 @@
 
 	; POKEFANM (7)
 	db "BRANDON@"
-	db 2 ; item
+	db TRAINERTYPE_ITEM
 
 	; party
 	db 13, SNUBBULL, BERRY
@@ -8188,7 +8188,7 @@
 
 	; POKEFANM (8)
 	db "JEREMY@"
-	db 2 ; item
+	db TRAINERTYPE_ITEM
 
 	; party
 	db 28, MEOWTH, BERRY
@@ -8201,7 +8201,7 @@
 
 	; POKEFANM (9)
 	db "COLIN@"
-	db 2 ; item
+	db TRAINERTYPE_ITEM
 
 	; party
 	db 32, DELIBIRD, BERRY
@@ -8212,7 +8212,7 @@
 
 	; POKEFANM (10)
 	db "DEREK@"
-	db 2 ; item
+	db TRAINERTYPE_ITEM
 
 	; party
 	db 19, PIKACHU, BERRY
@@ -8223,7 +8223,7 @@
 
 	; POKEFANM (11)
 	db "DEREK@"
-	db 2 ; item
+	db TRAINERTYPE_ITEM
 
 	; party
 	db 36, PIKACHU, BERRY
@@ -8234,7 +8234,7 @@
 
 	; POKEFANM (12)
 	db "ALEX@"
-	db 2 ; item
+	db TRAINERTYPE_ITEM
 
 	; party
 	db 29, NIDOKING, BERRY
@@ -8247,7 +8247,7 @@
 
 	; POKEFANM (13)
 	db "REX@"
-	db 2 ; item
+	db TRAINERTYPE_ITEM
 
 	; party
 	db 35, PHANPY, BERRY
@@ -8258,7 +8258,7 @@
 
 	; POKEFANM (14)
 	db "ALLAN@"
-	db 2 ; item
+	db TRAINERTYPE_ITEM
 
 	; party
 	db 35, TEDDIURSA, BERRY
@@ -8275,7 +8275,7 @@
 
 	; KIMONO_GIRL (1)
 	db "NAOKO@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 20, SKIPLOOM
@@ -8288,7 +8288,7 @@
 
 	; KIMONO_GIRL (2)
 	db "NAOKO@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 17, FLAREON
@@ -8299,7 +8299,7 @@
 
 	; KIMONO_GIRL (3)
 	db "SAYO@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 17, ESPEON
@@ -8310,7 +8310,7 @@
 
 	; KIMONO_GIRL (4)
 	db "ZUKI@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 17, UMBREON
@@ -8321,7 +8321,7 @@
 
 	; KIMONO_GIRL (5)
 	db "KUNI@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 17, VAPOREON
@@ -8332,7 +8332,7 @@
 
 	; KIMONO_GIRL (6)
 	db "MIKI@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 17, JOLTEON
@@ -8349,7 +8349,7 @@
 
 	; TWINS (1)
 	db "AMY & MAY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 10, SPINARAK
@@ -8361,7 +8361,7 @@
 
 	; TWINS (2)
 	db "ANN & ANNE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -8383,7 +8383,7 @@
 
 	; TWINS (3)
 	db "ANN & ANNE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -8405,7 +8405,7 @@
 
 	; TWINS (4)
 	db "AMY & MAY@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 10, LEDYBA
@@ -8417,7 +8417,7 @@
 
 	; TWINS (5)
 	db "JO & ZOE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 35, VICTREEBEL
@@ -8429,7 +8429,7 @@
 
 	; TWINS (6)
 	db "JO & ZOE@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 35, VILEPLUME
@@ -8441,7 +8441,7 @@
 
 	; TWINS (7)
 	db "MEG & PEG@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 31, TEDDIURSA
@@ -8453,7 +8453,7 @@
 
 	; TWINS (8)
 	db "MEG & PEG@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 31, PHANPY
@@ -8465,7 +8465,7 @@
 
 	; TWINS (9)
 	db "LEA & PIA@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -8487,7 +8487,7 @@
 
 	; TWINS (10)
 	db "LEA & PIA@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -8515,7 +8515,7 @@
 
 	; POKEFANF (1)
 	db "BEVERLY@"
-	db 2 ; item
+	db TRAINERTYPE_ITEM
 
 	; party
 	db 14, SNUBBULL, BERRY
@@ -8526,7 +8526,7 @@
 
 	; POKEFANF (2)
 	db "RUTH@"
-	db 2 ; item
+	db TRAINERTYPE_ITEM
 
 	; party
 	db 17, PIKACHU, BERRY
@@ -8537,7 +8537,7 @@
 
 	; POKEFANF (3)
 	db "BEVERLY@"
-	db 2 ; item
+	db TRAINERTYPE_ITEM
 
 	; party
 	db 18, SNUBBULL, BERRY
@@ -8548,7 +8548,7 @@
 
 	; POKEFANF (4)
 	db "BEVERLY@"
-	db 2 ; item
+	db TRAINERTYPE_ITEM
 
 	; party
 	db 30, GRANBULL, BERRY
@@ -8559,7 +8559,7 @@
 
 	; POKEFANF (5)
 	db "GEORGIA@"
-	db 2 ; item
+	db TRAINERTYPE_ITEM
 
 	; party
 	db 23, SENTRET, BERRY
@@ -8574,7 +8574,7 @@
 
 	; POKEFANF (6)
 	db "JAIME@"
-	db 2 ; item
+	db TRAINERTYPE_ITEM
 
 	; party
 	db 16, MEOWTH, BERRY
@@ -8591,7 +8591,7 @@
 
 	; RED (1)
 	db "RED@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -8643,7 +8643,7 @@
 
 	; BLUE (1)
 	db "BLUE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -8695,7 +8695,7 @@
 
 	; OFFICER (1)
 	db "KEITH@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 17, GROWLITHE
@@ -8706,7 +8706,7 @@
 
 	; OFFICER (2)
 	db "DIRK@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 14, GROWLITHE
@@ -8724,7 +8724,7 @@
 
 	; GRUNTF (1)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 9, ZUBAT
@@ -8736,7 +8736,7 @@
 
 	; GRUNTF (2)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 26, ARBOK
@@ -8747,7 +8747,7 @@
 
 	; GRUNTF (3)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 25, GLOOM
@@ -8759,7 +8759,7 @@
 
 	; GRUNTF (4)
 	db "GRUNT@"
-	db 0 ; normal
+	db TRAINERTYPE_NORMAL
 
 	; party
 	db 21, EKANS
@@ -8773,7 +8773,7 @@
 
 	; GRUNTF (5)
 	db "GRUNT@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
@@ -8801,7 +8801,7 @@
 
 	; MYSTICALMAN (1)
 	db "EUSINE@"
-	db 1 ; moves
+	db TRAINERTYPE_MOVES
 
 	; party
 
--- a/wram.asm
+++ b/wram.asm
@@ -425,7 +425,7 @@
 
 PlayerSubStatus1:: ; c668
 ; bit
-; 7 attract
+; 7 in love
 ; 6 rollout
 ; 5 endure
 ; 4 perish song
@@ -451,9 +451,9 @@
 ; 6 flying
 ; 5 underground
 ; 4 charged
-; 3 flinch
-; 2
-; 1 rollout
+; 3 flinched
+; 2 in loop
+; 1 rampage
 ; 0 bide
 	ds 1
 PlayerSubStatus4:: ; c66b
@@ -469,10 +469,10 @@
 	ds 1
 PlayerSubStatus5:: ; c66c
 ; bit
-; 7 cant run
+; 7 can't run
 ; 6 destiny bond
 ; 5 lock-on
-; 4 encore
+; 4 encored
 ; 3 transformed
 ; 2
 ; 1
@@ -663,9 +663,13 @@
 wPlayerMinimized:: ds 1 ; c6fe
 PlayerScreens:: ; c6ff
 ; bit
+; 7
+; 6
+; 5
 ; 4 reflect
 ; 3 light screen
 ; 2 safeguard
+; 1
 ; 0 spikes
 	ds 1