shithub: pokecrystal

Download patch

ref: 98128cd4d8457948e7136a16e08bacff0bc3529d
parent: 069ae7e2f3bc4f3939a4b97d6200a3fcdacc904b
parent: 94c7def4883fbdbcd3987a067443a2069b8bb610
author: surskitty <[email protected]>
date: Mon Dec 11 12:37:34 EST 2017

Merge branch 'master' of github.com:pret/pokecrystal

--- a/INSTALL.md
+++ b/INSTALL.md
@@ -58,7 +58,7 @@
 - `gcc-core`
 
 Then download [**rgbds**](https://github.com/rednex/rgbds/releases/).
-Extract the archive and put all the `exe` and `dll` files individually in `C:\cygwin64\usr\local\bin`.
+Extract rgbds-0.3.3-win64.tar.gz and put all the `exe` and `dll` files individually in **C:\Cygwin64\usr\local\bin**. If you are using 32-bit Windows and Cygwin, extract **rgbds-0.3.3-win32.tar.gz** to **C:\Cygwin\usr\local\bin**.
 
 **Note: If you have an older rgbds, you will need to update to 0.3.3 or newer.** Ignore this if you have never installed rgbds before.
 
--- a/Makefile
+++ b/Makefile
@@ -140,8 +140,8 @@
 
 ### Misc file-specific graphics rules
 
-gfx/shrink1.2bpp: rgbgfx += -h
-gfx/shrink2.2bpp: rgbgfx += -h
+gfx/shrink/shrink1.2bpp: rgbgfx += -h
+gfx/shrink/shrink2.2bpp: rgbgfx += -h
 
 gfx/trainers/%.2bpp: rgbgfx += -h
 gfx/trainers/%.pal: gfx/trainers/%.gbcpal
@@ -153,7 +153,9 @@
 gfx/mail/0b9dc6.1bpp: tools/gfx += --remove-whitespace
 gfx/mail/0b9cfe.1bpp: tools/gfx += --remove-whitespace
 
-gfx/pokedex/%.2bpp: tools/gfx += --trim-whitespace
+gfx/pokedex/pokedex.2bpp: tools/gfx += --trim-whitespace
+gfx/pokedex/sgb.2bpp: tools/gfx += --trim-whitespace
+gfx/pokedex/slowpoke.2bpp: tools/gfx += --trim-whitespace
 
 gfx/title/crystal.2bpp: tools/gfx += --interleave --png=$<
 gfx/title/old_fg.2bpp: tools/gfx += --interleave --png=$<
@@ -162,11 +164,11 @@
 gfx/trade/ball.2bpp: tools/gfx += --remove-whitespace
 gfx/trade/game_boy_n64.2bpp: tools/gfx += --trim-whitespace
 
-gfx/slots_2.2bpp: tools/gfx += --interleave --png=$<
-gfx/slots_3.2bpp: tools/gfx += --interleave --png=$< --remove-duplicates --keep-whitespace --remove-xflip
-gfx/slots_3a.2bpp: tools/gfx += --interleave --png=$<
-gfx/slots_3b.2bpp: tools/gfx += --interleave --png=$< --remove-duplicates --keep-whitespace --remove-xflip
+gfx/slots/slots_2.2bpp: tools/gfx += --interleave --png=$<
+gfx/slots/slots_3.2bpp: tools/gfx += --interleave --png=$< --remove-duplicates --keep-whitespace --remove-xflip
 
+gfx/card_flip/card_flip_2.2bpp: tools/gfx += --remove-whitespace
+
 gfx/fx/angels.2bpp: tools/gfx += --trim-whitespace
 gfx/fx/beam.2bpp: tools/gfx += --remove-xflip --remove-yflip --remove-whitespace
 gfx/fx/bubble.2bpp: tools/gfx += --trim-whitespace
@@ -185,18 +187,21 @@
 gfx/fx/skyattack.2bpp: tools/gfx += --remove-whitespace
 gfx/fx/status.2bpp: tools/gfx += --remove-whitespace
 
-gfx/misc/chris.2bpp: rgbgfx += -h
-gfx/misc/chris_card.2bpp: rgbgfx += -h
-gfx/misc/kris.2bpp: rgbgfx += -h
-gfx/misc/kris_card.2bpp: rgbgfx += -h
-gfx/misc/kris_back.2bpp: rgbgfx += -h
-gfx/misc/dude.2bpp: rgbgfx += -h
+gfx/player/chris.2bpp: rgbgfx += -h
+gfx/player/chris_back.2bpp: rgbgfx += -h
+gfx/player/kris.2bpp: rgbgfx += -h
+gfx/player/kris_back.2bpp: rgbgfx += -h
+
+gfx/trainer_card/chris_card.2bpp: rgbgfx += -h
+gfx/trainer_card/kris_card.2bpp: rgbgfx += -h
+
+gfx/battle/dude.2bpp: rgbgfx += -h
+
 gfx/misc/unknown_egg.2bpp: rgbgfx += -h
-gfx/misc/player.2bpp: rgbgfx += -h
-gfx/misc/pokegear.2bpp: rgbgfx += -x2
-gfx/misc/pokegear_sprites.2bpp: tools/gfx += --trim-whitespace
 
-gfx/unknown/0e0ea8.2bpp: tools/gfx += --remove-whitespace
+gfx/pokegear/pokegear.2bpp: rgbgfx += -x2
+gfx/pokegear/pokegear_sprites.2bpp: tools/gfx += --trim-whitespace
+
 gfx/unknown/0f8f34.1bpp: tools/gfx += --trim-whitespace
 gfx/unknown/16c173.2bpp: tools/gfx += --remove-duplicates --remove-xflip
 gfx/unknown/170d16.2bpp: tools/gfx += --trim-whitespace
--- a/audio/engine.asm
+++ b/audio/engine.asm
@@ -22,7 +22,7 @@
 	ld [hli], a ; ff26 ; music channels
 
 	ld hl, rNR10 ; sound channel registers
-	ld e, $4 ; number of channels
+	ld e, NUM_MUSIC_CHANS
 .clearsound
 ;   sound channel   1      2      3      4
 	xor a
@@ -47,7 +47,7 @@
 	ld a, e
 	or d
 	jr nz, .clearchannels
-	ld a, $77 ; max
+	ld a, MAX_VOLUME
 	ld [Volume], a
 	call MusicOn
 	pop af
@@ -60,15 +60,15 @@
 
 MusicFadeRestart: ; e803d
 ; restart but keep the music id to fade in to
-	ld a, [MusicFadeIDHi]
+	ld a, [MusicFadeID + 1]
 	push af
-	ld a, [MusicFadeIDLo]
+	ld a, [MusicFadeID]
 	push af
 	call _MapSetup_Sound_Off
 	pop af
-	ld [MusicFadeIDLo], a
+	ld [MusicFadeID], a
 	pop af
-	ld [MusicFadeIDHi], a
+	ld [MusicFadeID + 1], a
 	ret
 
 ; e8051
@@ -151,7 +151,7 @@
 	jr z, .next
 	; are we in a sfx channel right now?
 	ld a, [CurChannel]
-	cp $4
+	cp CHAN5
 	jr nc, .next
 	; are any sfx channels active?
 	; if so, mute
@@ -174,7 +174,7 @@
 .next
 	; are we in a sfx channel right now?
 	ld a, [CurChannel]
-	cp $4 ; sfx
+	cp CHAN5
 	jr nc, .sfx_channel
 	ld hl, Channel5Flags - Channel1
 	add hl, bc
@@ -654,11 +654,11 @@
 	; restart sound
 	call MusicFadeRestart
 	; get new song id
-	ld a, [MusicFadeIDLo]
+	ld a, [MusicFadeID]
 	and a
 	jr z, .quit ; this assumes there are fewer than 256 songs!
 	ld e, a
-	ld a, [MusicFadeIDHi]
+	ld a, [MusicFadeID + 1]
 	ld d, a
 	; load new song
 	call _PlayMusic
@@ -679,9 +679,9 @@
 	xor a
 	ld [Volume], a
 	; get new song id
-	ld a, [MusicFadeIDLo]
+	ld a, [MusicFadeID]
 	ld e, a
-	ld a, [MusicFadeIDHi]
+	ld a, [MusicFadeID + 1]
 	ld d, a
 	; load new song
 	call _PlayMusic
@@ -744,7 +744,7 @@
 	sub [hl]
 	ld e, a
 	ld a, d
-	sbc a, 0
+	sbc 0
 	ld d, a
 	ld hl, Channel1PitchWheelTarget + 1 - Channel1
 	add hl, bc
@@ -766,7 +766,7 @@
 	sub e
 	ld e, a
 	ld a, d
-	sbc a, 0
+	sbc 0
 	ld d, a
 	; ????
 	ld hl, Channel1PitchWheelTarget + 1 - Channel1
@@ -793,7 +793,7 @@
 	sub [hl]
 	ld e, a
 	ld a, d
-	sbc a, 0
+	sbc 0
 	ld d, a
 	ld hl, Channel1PitchWheelTarget + 1 - Channel1
 	add hl, bc
@@ -1021,7 +1021,7 @@
 	sub e
 	ld e, a
 	ld a, d
-	sbc a, 0
+	sbc 0
 	ld d, a
 	; [Channel*Field0x25] *= 2
 	; if rollover: Frequency -= 1
@@ -1031,10 +1031,10 @@
 	add a
 	ld [hl], a
 	ld a, e
-	sbc a, 0
+	sbc 0
 	ld e, a
 	ld a, d
-	sbc a, 0
+	sbc 0
 	ld d, a
 	; Compare the dw at [Channel*PitchWheelTarget] to de.
 	; If frequency is lower, we're finished.
@@ -1223,7 +1223,7 @@
 	bit SOUND_SUBROUTINE, [hl] ; in a subroutine?
 	jr nz, .readcommand ; execute
 	ld a, [CurChannel]
-	cp $4 ; channels 0-3?
+	cp CHAN5
 	jr nc, .chan_5to8
 	; ????
 	ld hl, Channel5Flags - Channel1
@@ -1237,7 +1237,7 @@
 	call nz, RestoreVolume
 	; end music
 	ld a, [CurChannel]
-	cp $4 ; channel 5?
+	cp CHAN5
 	jr nz, .ok
 	; ????
 	xor a
@@ -1266,7 +1266,7 @@
 RestoreVolume: ; e8679
 	; ch5 only
 	ld a, [CurChannel]
-	cp $4
+	cp CHAN5
 	ret nz
 	xor a
 	ld hl, Channel6CryPitch
@@ -1364,9 +1364,9 @@
 	add hl, de
 	; load sample pointer into NoiseSampleAddress
 	ld a, [hli]
-	ld [NoiseSampleAddressLo], a
+	ld [NoiseSampleAddress], a
 	ld a, [hl]
-	ld [NoiseSampleAddressHi], a
+	ld [NoiseSampleAddress + 1], a
 	; clear ????
 	xor a
 	ld [wNoiseSampleDelay], a
@@ -1378,7 +1378,7 @@
 	; reload command
 	ld a, [CurMusicByte]
 	; get command #
-	sub a, $d0 ; first command
+	sub $d0 ; first command
 	ld e, a
 	ld d, 0
 	; seek command pointer
@@ -1968,7 +1968,7 @@
 	ld [hl], a
 	ld a, [CurChannel]
 	and $3
-	cp CHAN4 ; CHAN8 & $3
+	cp CHAN8 & $3
 	ret z
 	; intensity
 	call Music_Intensity
@@ -2063,7 +2063,7 @@
 ; params: 1
 	; stereo on?
 	ld a, [Options]
-	bit 5, a ; stereo
+	bit STEREO, a
 	jr nz, Music_Panning
 	; skip param
 	call GetMusicByte
@@ -2160,9 +2160,9 @@
 	ld hl, Channel1MusicID - Channel1
 	add hl, bc
 	ld a, [hli]
-	ld [MusicIDLo], a
+	ld [MusicID], a
 	ld a, [hl]
-	ld [MusicIDHi], a
+	ld [MusicID + 1], a
 	; update music bank
 	ld hl, Channel1MusicBank - Channel1
 	add hl, bc
@@ -2437,7 +2437,7 @@
 	ld hl, MusicID
 	ld [hl], e ; song number
 	inc hl
-	ld [hl], d ; MusicIDHi (always $)
+	ld [hl], d ; (always 0)
 	ld hl, Music
 	add hl, de ; three
 	add hl, de ; byte
@@ -2466,8 +2466,8 @@
 	ld [Channel2JumpCondition], a
 	ld [Channel3JumpCondition], a
 	ld [Channel4JumpCondition], a
-	ld [NoiseSampleAddressLo], a
-	ld [NoiseSampleAddressHi], a
+	ld [NoiseSampleAddress], a
+	ld [NoiseSampleAddress + 1], a
 	ld [wNoiseSampleDelay], a
 	ld [MusicNoiseSampleSet], a
 	call MusicOn
@@ -2552,7 +2552,7 @@
 ; This only applies in-battle.
 
 	ld a, [Options]
-	bit 5, a ; stereo
+	bit STEREO, a
 	jr z, .next
 
 ; [Tracks] &= [CryTracks]
@@ -2577,7 +2577,7 @@
 
 	ld a, [Volume]
 	ld [LastVolume], a
-	ld a, $77
+	ld a, MAX_VOLUME
 	ld [Volume], a
 
 .end
@@ -2647,8 +2647,8 @@
 	ld a, $80
 	ld [rNR44], a ; restart sound (freq hi = 0)
 	xor a
-	ld [NoiseSampleAddressLo], a
-	ld [NoiseSampleAddressHi], a
+	ld [NoiseSampleAddress], a
+	ld [NoiseSampleAddress + 1], a
 .chscleared
 ; start reading sfx header for # chs
 	ld hl, MusicID
@@ -2696,7 +2696,7 @@
 
 ; standard procedure if stereo's off
 	ld a, [Options]
-	bit 5, a
+	bit STEREO, a
 	jp z, _PlaySFX
 
 ; else, let's go ahead with this
@@ -2825,9 +2825,9 @@
 	; load music id
 	ld hl, Channel1MusicID - Channel1
 	add hl, bc
-	ld a, [MusicIDLo]
+	ld a, [MusicID]
 	ld [hli], a
-	ld a, [MusicIDHi]
+	ld a, [MusicID + 1]
 	ld [hl], a
 	; load music bank
 	ld hl, Channel1MusicBank - Channel1
@@ -3231,7 +3231,7 @@
 ; gets the default sound l/r channels
 ; stores mono/stereo table in hl
 	ld a, [Options]
-	bit 5, a ; stereo
+	bit STEREO, a
 	; made redundant, could have had a purpose in gold
 	jr nz, .stereo
 	ld hl, MonoTracks
@@ -3279,7 +3279,7 @@
 	ld a, $80
 	ld [hli], a
 	ld hl, rNR10
-	ld e, $4
+	ld e, NUM_MUSIC_CHANS
 .loop
 	call ClearChannel
 	dec e
--- 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/battle/anim_commands.asm
+++ b/battle/anim_commands.asm
@@ -57,7 +57,7 @@
 
 BattleAnimRunScript: ; cc11c
 
-	ld a, [FXAnimIDHi]
+	ld a, [FXAnimID + 1]
 	and a
 	jr nz, .hi_byte
 
@@ -86,9 +86,9 @@
 	ld de, ANIM_MISS
 	add hl, de
 	ld a, l
-	ld [FXAnimIDLo], a
+	ld [FXAnimID], a
 	ld a, h
-	ld [FXAnimIDHi], a
+	ld [FXAnimID + 1], a
 
 .hi_byte
 	call WaitSFX
@@ -112,11 +112,11 @@
 	call BattleAnimRequestPals
 
 ; Speed up Rollout's animation.
-	ld a, [FXAnimIDHi]
+	ld a, [FXAnimID + 1]
 	or a
 	jr nz, .not_rollout
 
-	ld a, [FXAnimIDLo]
+	ld a, [FXAnimID]
 	cp ROLLOUT
 	jr nz, .not_rollout
 
@@ -1393,7 +1393,7 @@
 	or b
 	jr nz, .loop
 
-	ld hl, FXAnimIDLo
+	ld hl, FXAnimID
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
--- a/battle/bg_effects.asm
+++ b/battle/bg_effects.asm
@@ -868,7 +868,7 @@
 
 .BGSquares:
 bgsquare: MACRO
-	dn \1,\2
+	dn \1, \2
 	dw \3
 endm
 
@@ -1538,10 +1538,10 @@
 
 Functionc88a5: ; c88a5 (32:48a5)
 	push af
-	ld a, [FXAnimIDHi] ; FXAnimIDHi
+	ld a, [FXAnimID + 1] ; FXAnimID + 1
 	or a
 	jr nz, .not_rollout
-	ld a, [FXAnimIDLo] ; FXAnimID
+	ld a, [FXAnimID] ; FXAnimID
 	cp ROLLOUT
 	jr z, .rollout
 .not_rollout
@@ -2581,8 +2581,8 @@
 	ld a, h
 	push bc
 	push af
-	ld hl, BGPals ; BGPals
-	ld de, UnknBGPals ; wd000
+	ld hl, BGPals
+	ld de, UnknBGPals
 	ld b, a
 	ld c, $1
 	call CopyPals
--- a/battle/core.asm
+++ b/battle/core.asm
@@ -633,7 +633,7 @@
 	xor a
 	ld [wMoveSelectionMenuType], a
 	inc a ; POUND
-	ld [FXAnimIDLo], a
+	ld [FXAnimID], a
 	call MoveSelectionScreen
 	push af
 	call Call_LoadTempTileMapToTileMap
@@ -1305,7 +1305,7 @@
 
 	ld a, [de]
 	ld [wd265], a
-	ld [FXAnimIDLo], a
+	ld [FXAnimID], a
 	call GetMoveName
 	dec [hl]
 	jr z, .release_from_bounds
@@ -1318,7 +1318,7 @@
 	call SwitchTurnCore
 	xor a
 	ld [wNumHits], a
-	ld [FXAnimIDHi], a
+	ld [FXAnimID + 1], a
 	predef PlayBattleAnim
 	call SwitchTurnCore
 
@@ -4213,7 +4213,7 @@
 	call GetMonBackpic
 	xor a
 	ld [hGraphicStartTile], a
-	ld [wd0d2], a
+	ld [wBattleMenuCursorBuffer], a
 	ld [CurMoveNum], a
 	ld [TypeModifier], a
 	ld [wPlayerMoveStruct + MOVE_ANIM], a
@@ -4551,11 +4551,11 @@
 	push bc
 	call EmptyBattleTextBox
 	ld a, RECOVER
-	ld [FXAnimIDLo], a
+	ld [FXAnimID], a
 	call SwitchTurnCore
 	xor a
 	ld [wNumHits], a
-	ld [FXAnimIDHi], a
+	ld [FXAnimID + 1], a
 	predef PlayBattleAnim
 	call SwitchTurnCore
 	pop bc
@@ -5130,7 +5130,7 @@
 .next
 	ld a, $1
 	ld [hBGMapMode], a
-	ld a, [wd0d2]
+	ld a, [wBattleMenuCursorBuffer]
 	cp $1
 	jp z, BattleMenu_Fight
 	cp $3
@@ -6267,13 +6267,13 @@
 
 ; 25% chance of getting an item
 	call BattleRandom
-	cp a, 1 + (75 percent)
+	cp 1 + (75 percent)
 	ld a, NO_ITEM
 	jr c, .UpdateItem
 
 ; From there, an 8% chance for Item2
 	call BattleRandom
-	cp a, 8 percent ; 8% of 25% = 2% Item2
+	cp 8 percent ; 8% of 25% = 2% Item2
 	ld a, [BaseItems]
 	jr nc, .UpdateItem
 	ld a, [BaseItems+1]
@@ -6320,7 +6320,7 @@
 ; Roaming monsters (Entei, Raikou) work differently
 ; They have their own structs, which are shorter than normal
 	ld a, [BattleType]
-	cp a, BATTLETYPE_ROAMING
+	cp BATTLETYPE_ROAMING
 	jr nz, .NotRoaming
 
 ; Grab HP
@@ -6361,7 +6361,7 @@
 
 ; Forced shiny battle type
 ; Used by Red Gyarados at Lake of Rage
-	cp a, BATTLETYPE_SHINY
+	cp BATTLETYPE_SHINY
 	jr nz, .GenerateDVs
 
 	ld b, ATKDEFDV_SHINY ; $ea
@@ -6391,7 +6391,7 @@
 
 ; Unown
 	ld a, [TempEnemyMonSpecies]
-	cp a, UNOWN
+	cp UNOWN
 	jr nz, .Magikarp
 
 ; Get letter based on DVs
@@ -6406,7 +6406,7 @@
 ; Skimming this part recommended
 
 	ld a, [TempEnemyMonSpecies]
-	cp a, MAGIKARP
+	cp MAGIKARP
 	jr nz, .Happiness
 
 ; Get Magikarp's length
@@ -6415,26 +6415,26 @@
 	callab CalcMagikarpLength
 
 ; We're clear if the length is < 1536
-	ld a, [MagikarpLength]
-	cp a, $06 ; $600 = 1536
+	ld a, [wMagikarpLength]
+	cp $06 ; $600 = 1536
 	jr nz, .CheckMagikarpArea
 
 ; 5% chance of skipping size checks
 	call Random
-	cp a, $0c ; / $100
+	cp $0c ; / $100
 	jr c, .CheckMagikarpArea
 ; Try again if > 1614
-	ld a, [MagikarpLength + 1]
-	cp a, $50
+	ld a, [wMagikarpLength + 1]
+	cp $50
 	jr nc, .GenerateDVs
 
 ; 20% chance of skipping this check
 	call Random
-	cp a, $32 ; / $100
+	cp $32 ; / $100
 	jr c, .CheckMagikarpArea
 ; Try again if > 1598
-	ld a, [MagikarpLength + 1]
-	cp a, $40
+	ld a, [wMagikarpLength + 1]
+	cp $40
 	jr nc, .GenerateDVs
 
 .CheckMagikarpArea:
@@ -6448,18 +6448,18 @@
 ; Intended behavior enforces a minimum size at Lake of Rage
 ; The real behavior prevents size flooring in the Lake of Rage area
 	ld a, [MapGroup]
-	cp a, GROUP_LAKE_OF_RAGE
+	cp GROUP_LAKE_OF_RAGE
 	jr z, .Happiness
 	ld a, [MapNumber]
-	cp a, MAP_LAKE_OF_RAGE
+	cp MAP_LAKE_OF_RAGE
 	jr z, .Happiness
 ; 40% chance of not flooring
 	call Random
-	cp a, $64 ; / $100
+	cp $64 ; / $100
 	jr c, .Happiness
 ; Floor at length 1024
-	ld a, [MagikarpLength]
-	cp a, 1024 >> 8
+	ld a, [wMagikarpLength]
+	cp 1024 >> 8
 	jr c, .GenerateDVs ; try again
 
 ; Finally done with DVs
@@ -6480,7 +6480,7 @@
 ; If we're in a trainer battle,
 ; get the rest of the parameters from the party struct
 	ld a, [wBattleMode]
-	cp a, TRAINER_BATTLE
+	cp TRAINER_BATTLE
 	jr z, .OpponentParty
 
 ; If we're in a wild battle, check wild-specific stuff
@@ -6515,7 +6515,7 @@
 
 ; ..unless it's a RoamMon
 	ld a, [BattleType]
-	cp a, BATTLETYPE_ROAMING
+	cp BATTLETYPE_ROAMING
 	jr nz, .Moves
 
 ; Grab HP
@@ -6568,7 +6568,7 @@
 	ld de, EnemyMonMoves
 ; Are we in a trainer battle?
 	ld a, [wBattleMode]
-	cp a, TRAINER_BATTLE
+	cp TRAINER_BATTLE
 	jr nz, .WildMoves
 ; Then copy moves from the party struct
 	ld hl, OTPartyMon1Moves
@@ -6588,7 +6588,7 @@
 	ld [hli], a
 	ld [hl], a
 ; Make sure the predef knows this isn't a partymon
-	ld [MagikarpLength], a
+	ld [wEvolutionOldSpecies], a
 ; Fill moves based on level
 	predef FillMoves
 
@@ -6595,7 +6595,7 @@
 .PP:
 ; Trainer battle?
 	ld a, [wBattleMode]
-	cp a, TRAINER_BATTLE
+	cp TRAINER_BATTLE
 	jr z, .TrainerPP
 
 ; Fill wild PP
@@ -6670,13 +6670,13 @@
 
 ; Don't do anything if this isn't a tree encounter
 	ld a, [BattleType]
-	cp a, BATTLETYPE_TREE
+	cp BATTLETYPE_TREE
 	jr nz, .NotSleeping
 
 ; Get list for the time of day
 	ld hl, .Morn
 	ld a, [TimeOfDay]
-	cp a, DAY
+	cp DAY
 	jr c, .Check
 	ld hl, .Day
 	jr z, .Check
@@ -6759,7 +6759,7 @@
 	inc e
 	inc e
 	ld a, e
-	cp a, .Set1 - .LetterSets
+	cp .Set1 - .LetterSets
 	jr c, .loop
 
 ; Hasn't been unlocked, or the letter is invalid
@@ -7285,9 +7285,9 @@
 
 Call_PlayBattleAnim: ; 3ee17
 	ld a, e
-	ld [FXAnimIDLo], a
+	ld [FXAnimID], a
 	ld a, d
-	ld [FXAnimIDHi], a
+	ld [FXAnimID + 1], a
 	call WaitBGMap
 	predef_jump PlayBattleAnim
 ; 3ee27
@@ -8405,7 +8405,7 @@
 	call LoadTrainerOrWildMonPic
 	xor a
 	ld [TempBattleMonSpecies], a
-	ld [wd0d2], a
+	ld [wBattleMenuCursorBuffer], a
 	xor a
 	ld [hMapAnims], a
 	callba PlayBattleMusic
@@ -8670,7 +8670,7 @@
 	ld [wPartyMenuCursor], a
 	ld [wKeyItemsPocketCursor], a
 	ld [wItemsPocketCursor], a
-	ld [wd0d2], a
+	ld [wBattleMenuCursorBuffer], a
 	ld [CurMoveNum], a
 	ld [wBallsPocketCursor], a
 	ld [wLastPocket], a
--- a/battle/effect_commands.asm
+++ b/battle/effect_commands.asm
@@ -70,16 +70,16 @@
 ; Start at the first command.
 	ld hl, BattleScriptBuffer
 	ld a, l
-	ld [BattleScriptBufferLoc], a
+	ld [BattleScriptBufferAddress], a
 	ld a, h
-	ld [BattleScriptBufferLoc + 1], a
+	ld [BattleScriptBufferAddress + 1], a
 
 .ReadMoveEffectCommand:
 
-; ld a, [BattleScriptBufferLoc++]
-	ld a, [BattleScriptBufferLoc]
+; ld a, [BattleScriptBufferAddress++]
+	ld a, [BattleScriptBufferAddress]
 	ld l, a
-	ld a, [BattleScriptBufferLoc + 1]
+	ld a, [BattleScriptBufferAddress + 1]
 	ld h, a
 
 	ld a, [hli]
@@ -86,9 +86,9 @@
 
 	push af
 	ld a, l
-	ld [BattleScriptBufferLoc], a
+	ld [BattleScriptBufferAddress], a
 	ld a, h
-	ld [BattleScriptBufferLoc + 1], a
+	ld [BattleScriptBufferAddress + 1], a
 	pop af
 
 ; endturn_command (-2) is used to terminate branches without ending the read cycle.
@@ -2103,7 +2103,7 @@
 
 	xor a
 	ld [wNumHits], a
-	ld [FXAnimIDHi], a
+	ld [FXAnimID + 1], a
 	inc a
 	ld [wKickCounter], a
 	ld a, SUBSTITUTE
@@ -2280,7 +2280,7 @@
 
 	xor a
 	ld [wNumHits], a
-	ld [FXAnimIDHi], a
+	ld [FXAnimID + 1], a
 	ld a, $2
 	ld [wKickCounter], a
 	ld a, SUBSTITUTE
@@ -2645,7 +2645,7 @@
 	call BattleCommand_SwitchTurn
 	xor a
 	ld [wNumHits], a
-	ld [FXAnimIDHi], a
+	ld [FXAnimID + 1], a
 	inc a
 	ld [wKickCounter], a
 	ld a, DESTINY_BOND
@@ -2743,9 +2743,9 @@
 
 
 EndMoveEffect: ; 352a3
-	ld a, [BattleScriptBufferLoc]
+	ld a, [BattleScriptBufferAddress]
 	ld l, a
-	ld a, [BattleScriptBufferLoc + 1]
+	ld a, [BattleScriptBufferAddress + 1]
 	ld h, a
 	ld a, $ff
 	ld [hli], a
@@ -4738,9 +4738,9 @@
 
 PlayFXAnimID: ; 35d08
 	ld a, e
-	ld [FXAnimIDLo], a
+	ld [FXAnimID], a
 	ld a, d
-	ld [FXAnimIDHi], a
+	ld [FXAnimID + 1], a
 
 	ld c, 3
 	call DelayFrames
@@ -7097,9 +7097,9 @@
 
 ; Loop back to the command before 'critical'.
 .loop_back_to_critical
-	ld a, [BattleScriptBufferLoc + 1]
+	ld a, [BattleScriptBufferAddress + 1]
 	ld h, a
-	ld a, [BattleScriptBufferLoc]
+	ld a, [BattleScriptBufferAddress]
 	ld l, a
 .not_critical
 	ld a, [hld]
@@ -7107,9 +7107,9 @@
 	jr nz, .not_critical
 	inc hl
 	ld a, h
-	ld [BattleScriptBufferLoc + 1], a
+	ld [BattleScriptBufferAddress + 1], a
 	ld a, l
-	ld [BattleScriptBufferLoc], a
+	ld [BattleScriptBufferAddress], a
 	ret
 
 ; 36a82
@@ -7882,7 +7882,7 @@
 
 	xor a
 	ld [wNumHits], a
-	ld [FXAnimIDHi], a
+	ld [FXAnimID + 1], a
 	ld [wKickCounter], a
 	ld a, SUBSTITUTE
 	call LoadAnim
@@ -9862,7 +9862,7 @@
 
 PlayDamageAnim: ; 37e19
 	xor a
-	ld [FXAnimIDHi], a
+	ld [FXAnimID + 1], a
 
 	ld a, BATTLE_VARS_MOVE_ANIM
 	call GetBattleVar
@@ -9869,7 +9869,7 @@
 	and a
 	ret z
 
-	ld [FXAnimIDLo], a
+	ld [FXAnimID], a
 
 	ld a, [hBattleTurn]
 	and a
@@ -9888,7 +9888,7 @@
 LoadMoveAnim: ; 37e36
 	xor a
 	ld [wNumHits], a
-	ld [FXAnimIDHi], a
+	ld [FXAnimID + 1], a
 
 	ld a, BATTLE_VARS_MOVE_ANIM
 	call GetBattleVar
@@ -9901,7 +9901,7 @@
 
 LoadAnim: ; 37e44
 
-	ld [FXAnimIDLo], a
+	ld [FXAnimID], a
 
 	; fallthrough
 ; 37e47
@@ -9922,9 +9922,9 @@
 
 PlayOpponentBattleAnim: ; 37e54
 	ld a, e
-	ld [FXAnimIDLo], a
+	ld [FXAnimID], a
 	ld a, d
-	ld [FXAnimIDHi], a
+	ld [FXAnimID + 1], a
 	xor a
 	ld [wNumHits], a
 
@@ -9983,9 +9983,9 @@
 
 SkipToBattleCommand: ; 37e8c
 ; Skip over commands until reaching command b.
-	ld a, [BattleScriptBufferLoc + 1]
+	ld a, [BattleScriptBufferAddress + 1]
 	ld h, a
-	ld a, [BattleScriptBufferLoc]
+	ld a, [BattleScriptBufferAddress]
 	ld l, a
 .loop
 	ld a, [hli]
@@ -9993,9 +9993,9 @@
 	jr nz, .loop
 
 	ld a, h
-	ld [BattleScriptBufferLoc + 1], a
+	ld [BattleScriptBufferAddress + 1], a
 	ld a, l
-	ld [BattleScriptBufferLoc], a
+	ld [BattleScriptBufferAddress], a
 	ret
 
 ; 37ea1
--- a/battle/effects/transform.asm
+++ b/battle/effects/transform.asm
@@ -11,7 +11,7 @@
 	jp nz, BattleEffect_ButItFailed
 	xor a
 	ld [wNumHits], a
-	ld [FXAnimIDHi], a
+	ld [FXAnimID + 1], a
 	ld a, $1
 	ld [wKickCounter], a
 	ld a, BATTLE_VARS_SUBSTATUS4
@@ -129,7 +129,7 @@
 .after_anim
 	xor a
 	ld [wNumHits], a
-	ld [FXAnimIDHi], a
+	ld [FXAnimID + 1], a
 	ld a, $2
 	ld [wKickCounter], a
 	pop af
--- a/battle/magikarp_length.asm
+++ b/battle/magikarp_length.asm
@@ -1,5 +1,5 @@
 CalcMagikarpLength: ; fbbfc
-; Return Magikarp's length (in mm) at MagikarpLength (big endian).
+; Return Magikarp's length (in mm) at wMagikarpLength (big endian).
 ;
 ; input:
 ;   de: EnemyMonDVs
@@ -16,9 +16,9 @@
 
 ; bc = rrc(dv[0]) ++ rrc(dv[1]) ^ rrc(id)
 
-; if bc < 10:     [MagikarpLength] = c + 190
-; if bc >= $ff00: [MagikarpLength] = c + 1370
-; else:           [MagikarpLength] = z * 100 + (bc - x) / y
+; if bc < 10:     [wMagikarpLength] = c + 190
+; if bc >= $ff00: [wMagikarpLength] = c + 1370
+; else:           [wMagikarpLength] = z * 100 + (bc - x) / y
 
 ; X, Y, and Z depend on the value of b as follows:
 
@@ -165,7 +165,7 @@
 .ok
 	ld e, a
 
-	ld hl, MagikarpLength
+	ld hl, wMagikarpLength
 	ld [hl], d
 	inc hl
 	ld [hl], e
--- a/battle/menu.asm
+++ b/battle/menu.asm
@@ -1,11 +1,11 @@
 LoadBattleMenu: ; 24ef2
 	ld hl, BattleMenuDataHeader
 	call LoadMenuDataHeader
-	ld a, [wd0d2]
+	ld a, [wBattleMenuCursorBuffer]
 	ld [wMenuCursorBuffer], a
 	call InterpretBattleMenu
 	ld a, [wMenuCursorBuffer]
-	ld [wd0d2], a
+	ld [wBattleMenuCursorBuffer], a
 	call ExitMenu
 	ret
 ; 24f0b
@@ -23,11 +23,11 @@
 ; 24f19
 
 Function24f19: ; 24f19
-	ld a, [wd0d2]
+	ld a, [wBattleMenuCursorBuffer]
 	ld [wMenuCursorBuffer], a
 	call _2DMenu
 	ld a, [wMenuCursorBuffer]
-	ld [wd0d2], a
+	ld [wBattleMenuCursorBuffer], a
 	call ExitMenu
 	ret
 ; 24f2c
--- a/battle/objects/data.asm
+++ b/battle/objects/data.asm
@@ -1,573 +1,585 @@
 BattleAnimObjects: ; ccb56
 battleanimobj: MACRO
-
-; ??, ??, frameset, function, ??, tile offset
-	db \1, \2, \3, \4, \5, \6
+	db \1 ; flags
+	; bit 7: priority
+	; bit 6: y flip (for enemy)
+	; bit 5: x flip (for enemy)
+	; bit 0: enable enemy animation coord fixing (x = $b4 - x; see below for y)
+	db \2 ; enemy animation y fix param
+	; if $FF: y = y + 5 tiles
+	; else:   y = -y - (1 tile) * (is_softboiled_animation)
+	db \3 ; video sequence
+	db \4 ; callback
+	db \5 ; palette
+	db \6 ; tile offset
 endm
 
+ABSOLUTE_X EQU $00
+RELATIVE_X EQU $01
 
+
 ; ANIM_OBJ_00
-	battleanimobj $01, $ff, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, $02, $01
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $01
 
 ; ANIM_OBJ_01
-	battleanimobj $01, $ff, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, $02, $01
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $01
 
 ; ANIM_OBJ_02
-	battleanimobj $01, $ff, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, $02, $01
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $01
 
 ; ANIM_OBJ_03
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, $02, $01
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $01
 
 ; ANIM_OBJ_04
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, $02, $01
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $01
 
 ; ANIM_OBJ_05
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, $02, $01
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $01
 
 ; ANIM_OBJ_06
-	battleanimobj $01, $ff, BATTLEANIMFRAMESET_03, BATTLEANIMFUNC_00, $02, $01
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_03, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $01
 
 ; ANIM_OBJ_07
-	battleanimobj $01, $ff, BATTLEANIMFRAMESET_04, BATTLEANIMFUNC_1B, $02, $01
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_04, BATTLEANIMFUNC_1B, PAL_BATTLE_GRAY, $01
 
 ; ANIM_OBJ_08
-	battleanimobj $01, $ff, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, $02, $01
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $01
 
 ; ANIM_OBJ_09
-	battleanimobj $01, $ff, BATTLEANIMFRAMESET_06, BATTLEANIMFUNC_00, $02, $01
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_06, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $01
 
 ; ANIM_OBJ_0A
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_07, BATTLEANIMFUNC_09, $02, $01
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_07, BATTLEANIMFUNC_09, PAL_BATTLE_GRAY, $01
 
 ; ANIM_OBJ_0B
-	battleanimobj $01, $aa, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_10, $04, $03
+	battleanimobj RELATIVE_X, $aa, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_10, PAL_BATTLE_RED, $03
 
 ; ANIM_OBJ_0C
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_0E, BATTLEANIMFUNC_04, $04, $03
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0E, BATTLEANIMFUNC_04, PAL_BATTLE_RED, $03
 
 ; ANIM_OBJ_0D
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_03, $04, $03
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_03, PAL_BATTLE_RED, $03
 
 ; ANIM_OBJ_0E
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_08, $04, $03
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_08, PAL_BATTLE_RED, $03
 
 ; ANIM_OBJ_0F
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_0A, $04, $03
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_0A, PAL_BATTLE_RED, $03
 
 ; ANIM_OBJ_BURNED
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_03, $04, $03
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_03, PAL_BATTLE_RED, $03
 
 ; ANIM_OBJ_BLIZZARD
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_12, BATTLEANIMFUNC_08, $06, $0a
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_12, BATTLEANIMFUNC_08, PAL_BATTLE_BLUE, $0a
 
 ; ANIM_OBJ_12
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_13, BATTLEANIMFUNC_00, $06, $0a
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_13, BATTLEANIMFUNC_00, PAL_BATTLE_BLUE, $0a
 
 ; ANIM_OBJ_ICE_BEAM
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_14, BATTLEANIMFUNC_01, $06, $0a
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_14, BATTLEANIMFUNC_01, PAL_BATTLE_BLUE, $0a
 
 ; ANIM_OBJ_RAZOR_LEAF
-	battleanimobj $21, $78, BATTLEANIMFRAMESET_16, BATTLEANIMFUNC_RAZOR_LEAF, $05, $06
+	battleanimobj RELATIVE_X | X_FLIP, $78, BATTLEANIMFRAMESET_16, BATTLEANIMFUNC_RAZOR_LEAF, PAL_BATTLE_GREEN, $06
 
 ; ANIM_OBJ_POKE_BALL
-	battleanimobj $00, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_12, $04, $0b
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_12, PAL_BATTLE_RED, $0b
 
 ; ANIM_OBJ_POKE_BALL_BLOCKED
-	battleanimobj $00, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_13, $04, $0b
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_13, PAL_BATTLE_RED, $0b
 
 ; ANIM_OBJ_17
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, $04, $08
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, PAL_BATTLE_RED, $08
 
 ; ANIM_OBJ_18
-	battleanimobj $01, $ff, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, $04, $08
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, PAL_BATTLE_RED, $08
 
 ; ANIM_OBJ_19
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_1D, BATTLEANIMFUNC_06, $02, $0c
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_1D, BATTLEANIMFUNC_06, PAL_BATTLE_GRAY, $0c
 
 ; ANIM_OBJ_1A
-	battleanimobj $01, $b4, BATTLEANIMFRAMESET_1F, BATTLEANIMFUNC_38, $02, $0c
+	battleanimobj RELATIVE_X, $b4, BATTLEANIMFRAMESET_1F, BATTLEANIMFUNC_38, PAL_BATTLE_GRAY, $0c
 
 ; ANIM_OBJ_1B
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, $02, $07
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $07
 
 ; ANIM_OBJ_BALL_POOF
-	battleanimobj $01, $a0, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, $02, $07
+	battleanimobj RELATIVE_X, $a0, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $07
 
 ; ANIM_OBJ_1D
-	battleanimobj $01, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_07, $07, $09
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_07, PAL_BATTLE_BROWN, $09
 
 ; ANIM_OBJ_1E
-	battleanimobj $01, $ff, BATTLEANIMFRAMESET_1A, BATTLEANIMFUNC_07, $07, $09
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_1A, BATTLEANIMFUNC_07, PAL_BATTLE_BROWN, $09
 
 ; ANIM_OBJ_1F
-	battleanimobj $01, $b0, BATTLEANIMFRAMESET_1B, BATTLEANIMFUNC_36, $07, $09
+	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_1B, BATTLEANIMFUNC_36, PAL_BATTLE_BROWN, $09
 
 ; ANIM_OBJ_20
-	battleanimobj $01, $b0, BATTLEANIMFRAMESET_84, BATTLEANIMFUNC_36, $06, $21
+	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_84, BATTLEANIMFUNC_36, PAL_BATTLE_BLUE, $21
 
 ; ANIM_OBJ_BUBBLE
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_0C, $06, $0d
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_0C, PAL_BATTLE_BLUE, $0d
 
 ; ANIM_OBJ_22
-	battleanimobj $00, $00, BATTLEANIMFRAMESET_23, BATTLEANIMFUNC_0D, $06, $0d
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_23, BATTLEANIMFUNC_0D, PAL_BATTLE_BLUE, $0d
 
 ; ANIM_OBJ_23
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_0E, $02, $0e
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_0E, PAL_BATTLE_GRAY, $0e
 
 ; ANIM_OBJ_24
-	battleanimobj $61, $80, BATTLEANIMFRAMESET_27, BATTLEANIMFUNC_0F, $06, $04
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLEANIMFRAMESET_27, BATTLEANIMFUNC_0F, PAL_BATTLE_BLUE, $04
 
 ; ANIM_OBJ_25
-	battleanimobj $01, $b4, BATTLEANIMFRAMESET_2A, BATTLEANIMFUNC_00, $06, $04
+	battleanimobj RELATIVE_X, $b4, BATTLEANIMFRAMESET_2A, BATTLEANIMFUNC_00, PAL_BATTLE_BLUE, $04
 
 ; ANIM_OBJ_26
-	battleanimobj $01, $40, BATTLEANIMFRAMESET_2B, BATTLEANIMFUNC_11, $05, $0f
+	battleanimobj RELATIVE_X, $40, BATTLEANIMFRAMESET_2B, BATTLEANIMFUNC_11, PAL_BATTLE_GREEN, $0f
 
 ; ANIM_OBJ_27
-	battleanimobj $61, $98, BATTLEANIMFRAMESET_2C, BATTLEANIMFUNC_00, $03, $10
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_2C, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $10
 
 ; ANIM_OBJ_28
-	battleanimobj $61, $98, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, $03, $10
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, PAL_BATTLE_YELLOW, $10
 
 ; ANIM_OBJ_ICE_BUILDUP
-	battleanimobj $01, $b8, BATTLEANIMFRAMESET_2E, BATTLEANIMFUNC_00, $06, $0a
+	battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_2E, BATTLEANIMFUNC_00, PAL_BATTLE_BLUE, $0a
 
 ; ANIM_OBJ_FROZEN
-	battleanimobj $01, $b8, BATTLEANIMFRAMESET_2F, BATTLEANIMFUNC_00, $06, $0a
+	battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_2F, BATTLEANIMFUNC_00, PAL_BATTLE_BLUE, $0a
 
 ; ANIM_OBJ_MASTER_BALL_SPARKLE
-	battleanimobj $01, $b8, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_14, $07, $11
+	battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_14, PAL_BATTLE_BROWN, $11
 
 ; ANIM_OBJ_2C
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_14, $03, $0d
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_14, PAL_BATTLE_YELLOW, $0d
 
 ; ANIM_OBJ_2D
-	battleanimobj $21, $b0, BATTLEANIMFRAMESET_31, BATTLEANIMFUNC_00, $03, $05
+	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_31, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $05
 
 ; ANIM_OBJ_2E
-	battleanimobj $21, $b0, BATTLEANIMFRAMESET_32, BATTLEANIMFUNC_00, $03, $05
+	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_32, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $05
 
 ; ANIM_OBJ_2F
-	battleanimobj $21, $b0, BATTLEANIMFRAMESET_33, BATTLEANIMFUNC_00, $03, $05
+	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_33, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $05
 
 ; ANIM_OBJ_30
-	battleanimobj $21, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_15, $03, $05
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_15, PAL_BATTLE_YELLOW, $05
 
 ; ANIM_OBJ_31
-	battleanimobj $21, $90, BATTLEANIMFRAMESET_36, BATTLEANIMFUNC_00, $03, $05
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_36, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $05
 
 ; ANIM_OBJ_LIGHTNING_BOLT
-	battleanimobj $21, $90, BATTLEANIMFRAMESET_37, BATTLEANIMFUNC_03, $02, $08
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_37, BATTLEANIMFUNC_03, PAL_BATTLE_GRAY, $08
 
 ; ANIM_OBJ_33
-	battleanimobj $21, $90, BATTLEANIMFRAMESET_38, BATTLEANIMFUNC_00, $03, $05
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_38, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $05
 
 ; ANIM_OBJ_34
-	battleanimobj $21, $90, BATTLEANIMFRAMESET_39, BATTLEANIMFUNC_03, $02, $08
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_39, BATTLEANIMFUNC_03, PAL_BATTLE_GRAY, $08
 
 ; ANIM_OBJ_35
-	battleanimobj $21, $90, BATTLEANIMFRAMESET_3A, BATTLEANIMFUNC_16, $02, $02
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_3A, BATTLEANIMFUNC_16, PAL_BATTLE_GRAY, $02
 
 ; ANIM_OBJ_36
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_3C, BATTLEANIMFUNC_17, $02, $02
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_3C, BATTLEANIMFUNC_17, PAL_BATTLE_GRAY, $02
 
 ; ANIM_OBJ_37
-	battleanimobj $21, $ff, BATTLEANIMFRAMESET_3E, BATTLEANIMFUNC_00, $02, $02
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_3E, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $02
 
 ; ANIM_OBJ_38
-	battleanimobj $21, $ff, BATTLEANIMFRAMESET_3F, BATTLEANIMFUNC_00, $02, $02
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_3F, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $02
 
 ; ANIM_OBJ_39
-	battleanimobj $21, $ff, BATTLEANIMFRAMESET_40, BATTLEANIMFUNC_00, $02, $02
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_40, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $02
 
 ; ANIM_OBJ_3A
-	battleanimobj $21, $ff, BATTLEANIMFRAMESET_41, BATTLEANIMFUNC_00, $02, $02
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_41, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $02
 
 ; ANIM_OBJ_3B
-	battleanimobj $21, $ff, BATTLEANIMFRAMESET_42, BATTLEANIMFUNC_00, $02, $02
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_42, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $02
 
 ; ANIM_OBJ_3C
-	battleanimobj $01, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_18, $05, $12
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_18, PAL_BATTLE_GREEN, $12
 
 ; ANIM_OBJ_3D
-	battleanimobj $01, $88, BATTLEANIMFRAMESET_44, BATTLEANIMFUNC_00, $05, $12
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_44, BATTLEANIMFUNC_00, PAL_BATTLE_GREEN, $12
 
 ; ANIM_OBJ_GUST
-	battleanimobj $21, $b8, BATTLEANIMFRAMESET_45, BATTLEANIMFUNC_19, $02, $13
+	battleanimobj RELATIVE_X | X_FLIP, $b8, BATTLEANIMFRAMESET_45, BATTLEANIMFUNC_19, PAL_BATTLE_GRAY, $13
 
 ; ANIM_OBJ_3F
-	battleanimobj $21, $ff, BATTLEANIMFRAMESET_46, BATTLEANIMFUNC_00, $02, $14
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_46, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $14
 
 ; ANIM_OBJ_40
-	battleanimobj $21, $ff, BATTLEANIMFRAMESET_47, BATTLEANIMFUNC_00, $02, $14
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_47, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $14
 
 ; ANIM_OBJ_41
-	battleanimobj $21, $ff, BATTLEANIMFRAMESET_48, BATTLEANIMFUNC_1A, $02, $14
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_48, BATTLEANIMFUNC_1A, PAL_BATTLE_GRAY, $14
 
 ; ANIM_OBJ_42
-	battleanimobj $21, $ff, BATTLEANIMFRAMESET_49, BATTLEANIMFUNC_1A, $02, $14
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_49, BATTLEANIMFUNC_1A, PAL_BATTLE_GRAY, $14
 
 ; ANIM_OBJ_43
-	battleanimobj $21, $98, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_01, $02, $14
+	battleanimobj RELATIVE_X | X_FLIP, $98, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_01, PAL_BATTLE_GRAY, $14
 
 ; ANIM_OBJ_44
-	battleanimobj $21, $80, BATTLEANIMFRAMESET_4B, BATTLEANIMFUNC_00, $03, $11
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_4B, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $11
 
 ; ANIM_OBJ_ABSORB
-	battleanimobj $01, $88, BATTLEANIMFRAMESET_4C, BATTLEANIMFUNC_1C, $05, $12
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_4C, BATTLEANIMFUNC_1C, PAL_BATTLE_GREEN, $12
 
 ; ANIM_OBJ_46
-	battleanimobj $21, $b0, BATTLEANIMFRAMESET_4D, BATTLEANIMFUNC_1D, $02, $15
+	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_4D, BATTLEANIMFUNC_1D, PAL_BATTLE_GRAY, $15
 
 ; ANIM_OBJ_47
-	battleanimobj $01, $b0, BATTLEANIMFRAMESET_51, BATTLEANIMFUNC_1E, $03, $11
+	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_51, BATTLEANIMFUNC_1E, PAL_BATTLE_YELLOW, $11
 
 ; ANIM_OBJ_48
-	battleanimobj $21, $ff, BATTLEANIMFRAMESET_52, BATTLEANIMFUNC_1F, $05, $16
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_52, BATTLEANIMFUNC_1F, PAL_BATTLE_GREEN, $16
 
 ; ANIM_OBJ_49
-	battleanimobj $21, $ff, BATTLEANIMFRAMESET_54, BATTLEANIMFUNC_1F, $05, $16
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_54, BATTLEANIMFUNC_1F, PAL_BATTLE_GREEN, $16
 
 ; ANIM_OBJ_LEECH_SEED
-	battleanimobj $21, $68, BATTLEANIMFRAMESET_56, BATTLEANIMFUNC_LEECH_SEED, $05, $06
+	battleanimobj RELATIVE_X | X_FLIP, $68, BATTLEANIMFRAMESET_56, BATTLEANIMFUNC_LEECH_SEED, PAL_BATTLE_GREEN, $06
 
 ; ANIM_OBJ_4B
-	battleanimobj $21, $90, BATTLEANIMFRAMESET_59, BATTLEANIMFUNC_21, $02, $0e
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_59, BATTLEANIMFUNC_21, PAL_BATTLE_GRAY, $0e
 
 ; ANIM_OBJ_4C
-	battleanimobj $21, $90, BATTLEANIMFRAMESET_5C, BATTLEANIMFUNC_02, $02, $17
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_5C, BATTLEANIMFUNC_02, PAL_BATTLE_GRAY, $17
 
 ; ANIM_OBJ_4D
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_5D, BATTLEANIMFUNC_22, $03, $11
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_5D, BATTLEANIMFUNC_22, PAL_BATTLE_YELLOW, $11
 
 ; ANIM_OBJ_4E
-	battleanimobj $61, $88, BATTLEANIMFRAMESET_5F, BATTLEANIMFUNC_00, $03, $10
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $88, BATTLEANIMFRAMESET_5F, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $10
 
 ; ANIM_OBJ_4F
-	battleanimobj $61, $88, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, $03, $10
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $88, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, PAL_BATTLE_YELLOW, $10
 
 ; ANIM_OBJ_50
-	battleanimobj $21, $88, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, $03, $18
+	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $18
 
 ; ANIM_OBJ_51
-	battleanimobj $21, $80, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, $02, $18
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $18
 
 ; ANIM_OBJ_CHICK
-	battleanimobj $21, $50, BATTLEANIMFRAMESET_61, BATTLEANIMFUNC_23, $03, $19
+	battleanimobj RELATIVE_X | X_FLIP, $50, BATTLEANIMFRAMESET_61, BATTLEANIMFUNC_23, PAL_BATTLE_YELLOW, $19
 
 ; ANIM_OBJ_53
-	battleanimobj $01, $80, BATTLEANIMFRAMESET_63, BATTLEANIMFUNC_24, $02, $19
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_63, BATTLEANIMFUNC_24, PAL_BATTLE_GRAY, $19
 
 ; ANIM_OBJ_54
-	battleanimobj $01, $80, BATTLEANIMFRAMESET_66, BATTLEANIMFUNC_25, $02, $19
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_66, BATTLEANIMFUNC_25, PAL_BATTLE_GRAY, $19
 
 ; ANIM_OBJ_SKULL
-	battleanimobj $01, $50, BATTLEANIMFRAMESET_1C, BATTLEANIMFUNC_00, $02, $0c
+	battleanimobj RELATIVE_X, $50, BATTLEANIMFRAMESET_1C, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $0c
 
 ; ANIM_OBJ_56
-	battleanimobj $21, $a8, BATTLEANIMFRAMESET_67, BATTLEANIMFUNC_26, $07, $1a
+	battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_67, BATTLEANIMFUNC_26, PAL_BATTLE_BROWN, $1a
 
 ; ANIM_OBJ_57
-	battleanimobj $21, $a8, BATTLEANIMFRAMESET_68, BATTLEANIMFUNC_00, $07, $1a
+	battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_68, BATTLEANIMFUNC_00, PAL_BATTLE_BROWN, $1a
 
 ; ANIM_OBJ_58
-	battleanimobj $21, $90, BATTLEANIMFRAMESET_69, BATTLEANIMFUNC_01, $02, $1a
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_69, BATTLEANIMFUNC_01, PAL_BATTLE_GRAY, $1a
 
 ; ANIM_OBJ_PARALYZED
-	battleanimobj $21, $90, BATTLEANIMFRAMESET_6D, BATTLEANIMFUNC_28, $03, $19
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_6D, BATTLEANIMFUNC_28, PAL_BATTLE_YELLOW, $19
 
 ; ANIM_OBJ_5A
-	battleanimobj $21, $90, BATTLEANIMFRAMESET_6A, BATTLEANIMFUNC_27, $02, $1b
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_6A, BATTLEANIMFUNC_27, PAL_BATTLE_GRAY, $1b
 
 ; ANIM_OBJ_HAZE
-	battleanimobj $00, $00, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_SPRIAL_DESCENT, $02, $1c
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_GRAY, $1c
 
 ; ANIM_OBJ_MIST
-	battleanimobj $21, $48, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_SPRIAL_DESCENT, $02, $1c
+	battleanimobj RELATIVE_X | X_FLIP, $48, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_GRAY, $1c
 
 ; ANIM_OBJ_SMOG
-	battleanimobj $21, $48, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_SPRIAL_DESCENT, $02, $1c
+	battleanimobj RELATIVE_X | X_FLIP, $48, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_GRAY, $1c
 
 ; ANIM_OBJ_POISON_GAS
-	battleanimobj $21, $78, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_POISON_GAS, $02, $1c
+	battleanimobj RELATIVE_X | X_FLIP, $78, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_POISON_GAS, PAL_BATTLE_GRAY, $1c
 
 ; ANIM_OBJ_HORN
-	battleanimobj $61, $90, BATTLEANIMFRAMESET_71, BATTLEANIMFUNC_HORN, $02, $1d
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_71, BATTLEANIMFUNC_HORN, PAL_BATTLE_GRAY, $1d
 
 ; ANIM_OBJ_60
-	battleanimobj $61, $90, BATTLEANIMFRAMESET_72, BATTLEANIMFUNC_2C, $02, $1d
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_72, BATTLEANIMFUNC_2C, PAL_BATTLE_GRAY, $1d
 
 ; ANIM_OBJ_61
-	battleanimobj $01, $48, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_2D, $04, $1e
+	battleanimobj RELATIVE_X, $48, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_2D, PAL_BATTLE_RED, $1e
 
 ; ANIM_OBJ_62
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_06, $02, $15
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_06, PAL_BATTLE_GRAY, $15
 
 ; ANIM_OBJ_63
-	battleanimobj $01, $ff, BATTLEANIMFRAMESET_75, BATTLEANIMFUNC_2E, $07, $19
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_75, BATTLEANIMFUNC_2E, PAL_BATTLE_BROWN, $19
 
 ; ANIM_OBJ_64
-	battleanimobj $21, $90, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_02, $02, $14
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_02, PAL_BATTLE_GRAY, $14
 
 ; ANIM_OBJ_65
-	battleanimobj $01, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_2F, $02, $11
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_2F, PAL_BATTLE_GRAY, $11
 
 ; ANIM_OBJ_66
-	battleanimobj $01, $78, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_POISON_GAS, $04, $23
+	battleanimobj RELATIVE_X, $78, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_POISON_GAS, PAL_BATTLE_RED, $23
 
 ; ANIM_OBJ_67
-	battleanimobj $01, $80, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_30, $02, $1f
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_30, PAL_BATTLE_GRAY, $1f
 
 ; ANIM_OBJ_68
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_02, $02, $1f
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_02, PAL_BATTLE_GRAY, $1f
 
 ; ANIM_OBJ_69
-	battleanimobj $01, $ff, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_00, $02, $1f
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $1f
 
 ; ANIM_OBJ_6A
-	battleanimobj $01, $80, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_08, $03, $23
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_08, PAL_BATTLE_YELLOW, $23
 
 ; ANIM_OBJ_6B
-	battleanimobj $21, $90, BATTLEANIMFRAMESET_79, BATTLEANIMFUNC_00, $02, $1f
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_79, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $1f
 
 ; ANIM_OBJ_6C
-	battleanimobj $01, $ff, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, $03, $11
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, PAL_BATTLE_YELLOW, $11
 
 ; ANIM_OBJ_6D
-	battleanimobj $01, $88, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, $03, $11
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, PAL_BATTLE_YELLOW, $11
 
 ; ANIM_OBJ_SKY_ATTACK_FEAROW
-	battleanimobj $21, $88, BATTLEANIMFRAMESET_7B, BATTLEANIMFUNC_32, $02, $20
+	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_7B, BATTLEANIMFUNC_32, PAL_BATTLE_GRAY, $20
 
 ; ANIM_OBJ_LICK
-	battleanimobj $21, $98, BATTLEANIMFRAMESET_7C, BATTLEANIMFUNC_00, $02, $04
+	battleanimobj RELATIVE_X | X_FLIP, $98, BATTLEANIMFRAMESET_7C, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $04
 
 ; ANIM_OBJ_WITHDRAW
-	battleanimobj $21, $80, BATTLEANIMFRAMESET_7D, BATTLEANIMFUNC_00, $02, $18
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_7D, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $18
 
 ; ANIM_OBJ_71
-	battleanimobj $01, $80, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_2F, $06, $0d
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_2F, PAL_BATTLE_BLUE, $0d
 
 ; ANIM_OBJ_72
-	battleanimobj $01, $b0, BATTLEANIMFRAMESET_7E, BATTLEANIMFUNC_33, $03, $12
+	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_7E, BATTLEANIMFUNC_33, PAL_BATTLE_YELLOW, $12
 
 ; ANIM_OBJ_73
-	battleanimobj $01, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_2F, $02, $08
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_2F, PAL_BATTLE_GRAY, $08
 
 ; ANIM_OBJ_74
-	battleanimobj $21, $a0, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_34, $02, $1c
+	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_34, PAL_BATTLE_GRAY, $1c
 
 ; ANIM_OBJ_75
-	battleanimobj $21, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_35, $02, $15
+	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_35, PAL_BATTLE_GRAY, $15
 
 ; ANIM_OBJ_76
-	battleanimobj $21, $b0, BATTLEANIMFRAMESET_80, BATTLEANIMFUNC_33, $02, $14
+	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_80, BATTLEANIMFUNC_33, PAL_BATTLE_GRAY, $14
 
 ; ANIM_OBJ_77
-	battleanimobj $01, $88, BATTLEANIMFRAMESET_81, BATTLEANIMFUNC_37, $02, $11
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_81, BATTLEANIMFUNC_37, PAL_BATTLE_GRAY, $11
 
 ; ANIM_OBJ_78
-	battleanimobj $01, $88, BATTLEANIMFRAMESET_85, BATTLEANIMFUNC_00, $02, $22
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_85, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $22
 
 ; ANIM_OBJ_79
-	battleanimobj $01, $88, BATTLEANIMFRAMESET_86, BATTLEANIMFUNC_00, $02, $22
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_86, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $22
 
 ; ANIM_OBJ_7A
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_87, BATTLEANIMFUNC_39, $02, $1f
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_87, BATTLEANIMFUNC_39, PAL_BATTLE_GRAY, $1f
 
 ; ANIM_OBJ_7B
-	battleanimobj $01, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_3A, $03, $11
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_3A, PAL_BATTLE_YELLOW, $11
 
 ; ANIM_OBJ_7C
-	battleanimobj $21, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_00, $03, $05
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $05
 
 ; ANIM_OBJ_7D
-	battleanimobj $a1, $88, BATTLEANIMFRAMESET_88, BATTLEANIMFUNC_3B, $06, $13
+	battleanimobj RELATIVE_X | X_FLIP | BEHIND_BG, $88, BATTLEANIMFRAMESET_88, BATTLEANIMFUNC_3B, PAL_BATTLE_BLUE, $13
 
 ; ANIM_OBJ_HEART
-	battleanimobj $01, $80, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_25, $04, $23
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_25, PAL_BATTLE_RED, $23
 
 ; ANIM_OBJ_7F
-	battleanimobj $01, $98, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_34, $04, $03
+	battleanimobj RELATIVE_X, $98, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_34, PAL_BATTLE_RED, $03
 
 ; ANIM_OBJ_80
-	battleanimobj $01, $a8, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_3C, $04, $03
+	battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_3C, PAL_BATTLE_RED, $03
 
 ; ANIM_OBJ_COTTON_SPORE
-	battleanimobj $21, $68, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_SPRIAL_DESCENT, $02, $1f
+	battleanimobj RELATIVE_X | X_FLIP, $68, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_GRAY, $1f
 
 ; ANIM_OBJ_82
-	battleanimobj $21, $b0, BATTLEANIMFRAMESET_8A, BATTLEANIMFUNC_00, $02, $1f
+	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_8A, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $1f
 
 ; ANIM_OBJ_83
-	battleanimobj $21, $80, BATTLEANIMFRAMESET_8C, BATTLEANIMFUNC_00, $02, $1f
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_8C, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $1f
 
 ; ANIM_OBJ_84
-	battleanimobj $21, $50, BATTLEANIMFRAMESET_8D, BATTLEANIMFUNC_00, $03, $1f
+	battleanimobj RELATIVE_X | X_FLIP, $50, BATTLEANIMFRAMESET_8D, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $1f
 
 ; ANIM_OBJ_85
-	battleanimobj $01, $40, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_40, $02, $0e
+	battleanimobj RELATIVE_X, $40, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_40, PAL_BATTLE_GRAY, $0e
 
 ; ANIM_OBJ_86
-	battleanimobj $21, $a8, BATTLEANIMFRAMESET_8E, BATTLEANIMFUNC_41, $04, $1f
+	battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_8E, BATTLEANIMFUNC_41, PAL_BATTLE_RED, $1f
 
 ; ANIM_OBJ_87
-	battleanimobj $21, $88, BATTLEANIMFRAMESET_8F, BATTLEANIMFUNC_3E, $02, $1f
+	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_8F, BATTLEANIMFUNC_3E, PAL_BATTLE_GRAY, $1f
 
 ; ANIM_OBJ_88
-	battleanimobj $21, $88, BATTLEANIMFRAMESET_93, BATTLEANIMFUNC_3E, $02, $1f
+	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_93, BATTLEANIMFUNC_3E, PAL_BATTLE_GRAY, $1f
 
 ; ANIM_OBJ_89
-	battleanimobj $21, $90, BATTLEANIMFRAMESET_97, BATTLEANIMFUNC_3D, $02, $1f
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_97, BATTLEANIMFUNC_3D, PAL_BATTLE_GRAY, $1f
 
 ; ANIM_OBJ_8A
-	battleanimobj $21, $90, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_3D, $03, $23
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_3D, PAL_BATTLE_YELLOW, $23
 
 ; ANIM_OBJ_8B
-	battleanimobj $01, $ff, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_2E, $02, $19
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_2E, PAL_BATTLE_GRAY, $19
 
 ; ANIM_OBJ_8C
-	battleanimobj $21, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_02, $02, $15
+	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_02, PAL_BATTLE_GRAY, $15
 
 ; ANIM_OBJ_8D
-	battleanimobj $21, $a0, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_35, $04, $19
+	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_35, PAL_BATTLE_RED, $19
 
 ; ANIM_OBJ_SPIKES
-	battleanimobj $21, $70, BATTLEANIMFRAMESET_8B, BATTLEANIMFUNC_3F, $02, $1f
+	battleanimobj RELATIVE_X | X_FLIP, $70, BATTLEANIMFRAMESET_8B, BATTLEANIMFUNC_3F, PAL_BATTLE_GRAY, $1f
 
 ; ANIM_OBJ_8F
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_15, BATTLEANIMFUNC_08, $02, $0a
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_15, BATTLEANIMFUNC_08, PAL_BATTLE_GRAY, $0a
 
 ; ANIM_OBJ_90
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_02, $04, $03
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_02, PAL_BATTLE_RED, $03
 
 ; ANIM_OBJ_91
-	battleanimobj $01, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_42, $02, $08
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_42, PAL_BATTLE_GRAY, $08
 
 ; ANIM_OBJ_92
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_9A, BATTLEANIMFUNC_00, $02, $1b
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_9A, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $1b
 
 ; ANIM_OBJ_93
-	battleanimobj $21, $a0, BATTLEANIMFRAMESET_9B, BATTLEANIMFUNC_35, $04, $23
+	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_9B, BATTLEANIMFUNC_35, PAL_BATTLE_RED, $23
 
 ; ANIM_OBJ_94
-	battleanimobj $21, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_23, $02, $25
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_23, PAL_BATTLE_GRAY, $25
 
 ; ANIM_OBJ_95
-	battleanimobj $21, $80, BATTLEANIMFRAMESET_9D, BATTLEANIMFUNC_25, $02, $25
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9D, BATTLEANIMFUNC_25, PAL_BATTLE_GRAY, $25
 
 ; ANIM_OBJ_96
-	battleanimobj $21, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_00, $02, $25
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $25
 
 ; ANIM_OBJ_97
-	battleanimobj $21, $80, BATTLEANIMFRAMESET_9E, BATTLEANIMFUNC_00, $06, $25
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9E, BATTLEANIMFUNC_00, PAL_BATTLE_BLUE, $25
 
 ; ANIM_OBJ_98
-	battleanimobj $61, $80, BATTLEANIMFRAMESET_9F, BATTLEANIMFUNC_3A, $05, $23
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLEANIMFRAMESET_9F, BATTLEANIMFUNC_3A, PAL_BATTLE_GREEN, $23
 
 ; ANIM_OBJ_99
-	battleanimobj $21, $80, BATTLEANIMFRAMESET_A0, BATTLEANIMFUNC_16, $02, $23
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_A0, BATTLEANIMFUNC_16, PAL_BATTLE_GRAY, $23
 
 ; ANIM_OBJ_9A
-	battleanimobj $21, $70, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_43, $03, $23
+	battleanimobj RELATIVE_X | X_FLIP, $70, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_43, PAL_BATTLE_YELLOW, $23
 
 ; ANIM_OBJ_9B
-	battleanimobj $21, $c0, BATTLEANIMFRAMESET_A2, BATTLEANIMFUNC_01, $02, $25
+	battleanimobj RELATIVE_X | X_FLIP, $c0, BATTLEANIMFRAMESET_A2, BATTLEANIMFUNC_01, PAL_BATTLE_GRAY, $25
 
 ; ANIM_OBJ_9C
-	battleanimobj $21, $40, BATTLEANIMFRAMESET_A3, BATTLEANIMFUNC_44, $03, $24
+	battleanimobj RELATIVE_X | X_FLIP, $40, BATTLEANIMFRAMESET_A3, BATTLEANIMFUNC_44, PAL_BATTLE_YELLOW, $24
 
 ; ANIM_OBJ_9D
-	battleanimobj $01, $80, BATTLEANIMFRAMESET_A4, BATTLEANIMFUNC_00, $02, $24
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_A4, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $24
 
 ; ANIM_OBJ_9E
-	battleanimobj $01, $80, BATTLEANIMFRAMESET_A5, BATTLEANIMFUNC_00, $03, $24
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_A5, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $24
 
 ; ANIM_OBJ_9F
-	battleanimobj $01, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_45, $04, $12
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_45, PAL_BATTLE_RED, $12
 
 ; ANIM_OBJ_A0
-	battleanimobj $21, $ff, BATTLEANIMFRAMESET_A6, BATTLEANIMFUNC_00, $02, $02
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_A6, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $02
 
 ; ANIM_OBJ_A1
-	battleanimobj $21, $ff, BATTLEANIMFRAMESET_A7, BATTLEANIMFUNC_00, $02, $02
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_A7, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $02
 
 ; ANIM_OBJ_A2
-	battleanimobj $21, $00, BATTLEANIMFRAMESET_B4, BATTLEANIMFUNC_4A, $07, $0f
+	battleanimobj RELATIVE_X | X_FLIP, $00, BATTLEANIMFRAMESET_B4, BATTLEANIMFUNC_4A, PAL_BATTLE_BROWN, $0f
 
 ; ANIM_OBJ_A3
-	battleanimobj $21, $90, BATTLEANIMFRAMESET_A8, BATTLEANIMFUNC_02, $03, $05
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_A8, BATTLEANIMFUNC_02, PAL_BATTLE_YELLOW, $05
 
 ; ANIM_OBJ_A4
-	battleanimobj $21, $40, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_11, $02, $25
+	battleanimobj RELATIVE_X | X_FLIP, $40, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_11, PAL_BATTLE_GRAY, $25
 
 ; ANIM_OBJ_A5
-	battleanimobj $61, $90, BATTLEANIMFRAMESET_A9, BATTLEANIMFUNC_46, $02, $23
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_A9, BATTLEANIMFUNC_46, PAL_BATTLE_GRAY, $23
 
 ; ANIM_OBJ_PERISH_SONG
-	battleanimobj $00, $00, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_47, $02, $0e
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_47, PAL_BATTLE_GRAY, $0e
 
 ; ANIM_OBJ_A7
-	battleanimobj $01, $80, BATTLEANIMFRAMESET_AA, BATTLEANIMFUNC_00, $02, $24
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_AA, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $24
 
 ; ANIM_OBJ_A8
-	battleanimobj $21, $b8, BATTLEANIMFRAMESET_AB, BATTLEANIMFUNC_48, $02, $13
+	battleanimobj RELATIVE_X | X_FLIP, $b8, BATTLEANIMFRAMESET_AB, BATTLEANIMFUNC_48, PAL_BATTLE_GRAY, $13
 
 ; ANIM_OBJ_A9
-	battleanimobj $21, $90, BATTLEANIMFRAMESET_AC, BATTLEANIMFUNC_44, $02, $13
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_AC, BATTLEANIMFUNC_44, PAL_BATTLE_GRAY, $13
 
 ; ANIM_OBJ_AA
-	battleanimobj $01, $a8, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, $02, $01
+	battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, PAL_BATTLE_GRAY, $01
 
 ; ANIM_OBJ_AB
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_43, $02, $0e
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_43, PAL_BATTLE_GRAY, $0e
 
 ; ANIM_OBJ_AC
-	battleanimobj $01, $88, BATTLEANIMFRAMESET_AD, BATTLEANIMFUNC_00, $06, $17
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_AD, BATTLEANIMFUNC_00, PAL_BATTLE_BLUE, $17
 
 ; ANIM_OBJ_AD
-	battleanimobj $01, $a8, BATTLEANIMFRAMESET_AE, BATTLEANIMFUNC_49, $02, $01
+	battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_AE, BATTLEANIMFUNC_49, PAL_BATTLE_GRAY, $01
 
 ; ANIM_OBJ_AE
-	battleanimobj $21, $90, BATTLEANIMFRAMESET_AF, BATTLEANIMFUNC_01, $03, $11
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_AF, BATTLEANIMFUNC_01, PAL_BATTLE_YELLOW, $11
 
 ; ANIM_OBJ_AF
-	battleanimobj $21, $00, BATTLEANIMFRAMESET_B0, BATTLEANIMFUNC_4A, $02, $04
+	battleanimobj RELATIVE_X | X_FLIP, $00, BATTLEANIMFRAMESET_B0, BATTLEANIMFUNC_4A, PAL_BATTLE_GRAY, $04
 
 ; ANIM_OBJ_B0
-	battleanimobj $00, $00, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_4B, $04, $1c
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_4B, PAL_BATTLE_RED, $1c
 
 ; ANIM_OBJ_B1
-	battleanimobj $01, $88, BATTLEANIMFRAMESET_B1, BATTLEANIMFUNC_4C, $02, $19
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_B1, BATTLEANIMFUNC_4C, PAL_BATTLE_GRAY, $19
 
 ; ANIM_OBJ_B2
-	battleanimobj $01, $b8, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4D, $07, $09
+	battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4D, PAL_BATTLE_BROWN, $09
 
 ; ANIM_OBJ_B3
-	battleanimobj $61, $98, BATTLEANIMFRAMESET_B3, BATTLEANIMFUNC_00, $03, $27
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_B3, BATTLEANIMFUNC_00, PAL_BATTLE_YELLOW, $27
 
 ; ANIM_OBJ_B4
-	battleanimobj $61, $98, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_04, $06, $15
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_04, PAL_BATTLE_BLUE, $15
 
 ; ANIM_OBJ_B5
-	battleanimobj $21, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4E, $07, $09
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4E, PAL_BATTLE_BROWN, $09
 
 ; ANIM_OBJ_FLOWER
-	battleanimobj $01, $90, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_08, $04, $1e
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_08, PAL_BATTLE_RED, $1e
 
 ; ANIM_OBJ_COTTON
-	battleanimobj $01, $ff, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_4F, $04, $1f
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_4F, PAL_BATTLE_RED, $1f
 
 ; ANIM_OBJ_PLAYERFEETFOLLOW
-	battleanimobj $00, $00, BATTLEANIMFRAMESET_B5, BATTLEANIMFUNC_00, $00, $28
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B5, BATTLEANIMFUNC_00, PAL_BATTLE_ENEMY, $28
 
 ; ANIM_OBJ_ENEMYFEETFOLLOW
-	battleanimobj $00, $00, BATTLEANIMFRAMESET_B6, BATTLEANIMFUNC_00, $01, $29
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B6, BATTLEANIMFUNC_00, PAL_BATTLE_PLAYER, $29
 
 ; ANIM_OBJ_BA
-	battleanimobj $00, $00, BATTLEANIMFRAMESET_B7, BATTLEANIMFUNC_00, $00, $28
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B7, BATTLEANIMFUNC_00, PAL_BATTLE_ENEMY, $28
 
 ; ANIM_OBJ_BB
-	battleanimobj $00, $00, BATTLEANIMFRAMESET_B8, BATTLEANIMFUNC_00, $01, $29
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B8, BATTLEANIMFUNC_00, PAL_BATTLE_PLAYER, $29
 
 ; ccfbe
--- a/battle/objects/engine.asm
+++ b/battle/objects/engine.asm
@@ -249,10 +249,10 @@
 .check_kinesis_softboiled_milkdrink
 	sub d
 	push af
-	ld a, [FXAnimIDHi]
+	ld a, [FXAnimID + 1]
 	or a
 	jr nz, .no_sub
-	ld a, [FXAnimIDLo]
+	ld a, [FXAnimID]
 	cp KINESIS
 	jr z, .kinesis
 	cp SOFTBOILED
--- a/battle/objects/functions.asm
+++ b/battle/objects/functions.asm
@@ -451,18 +451,18 @@
 
 ; cd26c (33:526c)
 .balls
-	db MASTER_BALL, 5
-	db ULTRA_BALL,  3
-	db GREAT_BALL,  6
-	db POKE_BALL,   4
-	db HEAVY_BALL,  2
-	db LEVEL_BALL,  7
-	db LURE_BALL,   6
-	db FAST_BALL,   6
-	db FRIEND_BALL, 3
-	db MOON_BALL,   2
-	db LOVE_BALL,   4
-	db -1,          2
+	db MASTER_BALL, PAL_BATTLE_GREEN
+	db ULTRA_BALL,  PAL_BATTLE_YELLOW
+	db GREAT_BALL,  PAL_BATTLE_BLUE
+	db POKE_BALL,   PAL_BATTLE_RED
+	db HEAVY_BALL,  PAL_BATTLE_GRAY
+	db LEVEL_BALL,  PAL_BATTLE_BROWN
+	db LURE_BALL,   PAL_BATTLE_BLUE
+	db FAST_BALL,   PAL_BATTLE_BLUE
+	db FRIEND_BALL, PAL_BATTLE_YELLOW
+	db MOON_BALL,   PAL_BATTLE_GRAY
+	db LOVE_BALL,   PAL_BATTLE_RED
+	db -1,          PAL_BATTLE_GRAY
 ; cd284
 BattleAnimFunction_10: ; cd284 (33:5284)
 	call BattleAnim_AnonJumptable
--- a/battle/trainer_huds.asm
+++ b/battle/trainer_huds.asm
@@ -256,9 +256,9 @@
 	ld de, OTPlayerName
 	call PlaceString
 	hlcoord 9, 8
-	ld a, $69 ; "V"
+	ld a, "<BOLD_V>"
 	ld [hli], a
-	ld [hl], $6a ; "S"
+	ld [hl], "<BOLD_S>"
 	callba LinkBattle_TrainerHuds ; no need to callba
 	ld b, SCGB_DIPLOMA
 	call GetSGBLayout
--- a/constants.asm
+++ b/constants.asm
@@ -22,6 +22,7 @@
 INCLUDE "constants/phone_constants.asm"
 INCLUDE "constants/gfx_constants.asm"
 INCLUDE "constants/pokemon_data_constants.asm"
+INCLUDE "constants/mobile_constants.asm"
 INCLUDE "constants/misc_constants.asm"
 INCLUDE "constants/std_constants.asm"
 INCLUDE "constants/deco_constants.asm"
--- 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,8 +817,20 @@
 	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
 	const BG_EFFECT_STRUCT_BATTLE_TURN
 	const BG_EFFECT_STRUCT_03
+
+; animation object palettes
+	const_def
+	const PAL_BATTLE_ENEMY  ; 0
+	const PAL_BATTLE_PLAYER ; 1
+	const PAL_BATTLE_GRAY   ; 2
+	const PAL_BATTLE_YELLOW ; 3
+	const PAL_BATTLE_RED    ; 4
+	const PAL_BATTLE_GREEN  ; 5
+	const PAL_BATTLE_BLUE   ; 6
+	const PAL_BATTLE_BROWN  ; 7
--- a/constants/audio_constants.asm
+++ b/constants/audio_constants.asm
@@ -1,63 +1,69 @@
-
-
 ; pitch
 	const_def
-	const __
-	const C_
-	const C#
-	const D_
-	const D#
-	const E_
-	const F_
-	const F#
-	const G_
-	const G#
-	const A_
-	const A#
-	const B_
-	const CC ; used for pitchoffset
+	const __ ; 0
+	const C_ ; 1
+	const C# ; 2
+	const D_ ; 3
+	const D# ; 4
+	const E_ ; 5
+	const F_ ; 6
+	const F# ; 7
+	const G_ ; 8
+	const G# ; 9
+	const A_ ; a
+	const A# ; b
+	const B_ ; c
+	const CC ; d (used for pitchoffset)
 
 ; channel
+; ChannelPointers indexes (see engine/audio.asm)
 	const_def
-	const CHAN1
-	const CHAN2
-	const CHAN3
-	const CHAN4
+	const CHAN1 ; 0
+	const CHAN2 ; 1
+	const CHAN3 ; 2
+	const CHAN4 ; 3
 NUM_MUSIC_CHANS EQU const_value
 NUM_NOISE_CHANS EQU const_value
-	const CHAN5
-	const CHAN6
-	const CHAN7
-	const CHAN8
+	const CHAN5 ; 4
+	const CHAN6 ; 5
+	const CHAN7 ; 6
+	const CHAN8 ; 7
 NUM_CHANNELS EQU const_value
 
 ; Flags1
-SOUND_CHANNEL_ON EQU 0
-SOUND_SUBROUTINE EQU 1
-SOUND_LOOPING EQU 2
-SOUND_SFX EQU 3
-SOUND_NOISE EQU 4
-SOUND_REST EQU 5
+	const_def
+	const SOUND_CHANNEL_ON ; 0
+	const SOUND_SUBROUTINE ; 1
+	const SOUND_LOOPING    ; 2
+	const SOUND_SFX        ; 3
+	const SOUND_NOISE      ; 4
+	const SOUND_REST       ; 5
 
 ; Flags2
+	const_def
+	const SOUND_VIBRATO     ; 0
+	const SOUND_PITCH_WHEEL ; 1
+	const SOUND_DUTY        ; 2
+	const SOUND_UNKN_0B     ; 3
+	const SOUND_CRY_PITCH   ; 4
+	const SOUND_UNKN_0D     ; 5
+	const SOUND_UNKN_0E     ; 6
+	const SOUND_UNKN_0F     ; 7
 
-SOUND_VIBRATO EQU 0
-SOUND_PITCH_WHEEL EQU 1
-SOUND_DUTY EQU 2
-SOUND_UNKN_0B EQU 3
-SOUND_CRY_PITCH EQU 4
-SOUND_UNKN_0D EQU 5
-SOUND_UNKN_0E EQU 6
-SOUND_UNKN_0F EQU 7
-
 ; Flags3
-SOUND_VIBRATO_DIR EQU 0
-SOUND_PITCH_WHEEL_DIR EQU 1
+	const_def
+	const SOUND_VIBRATO_DIR     ; 0
+	const SOUND_PITCH_WHEEL_DIR ; 1
 
 ; NoteFlags
-NOTE_DUTY_OVERRIDE EQU 0
-NOTE_FREQ_OVERRIDE EQU 1
-NOTE_UNKN_3 EQU 3
-NOTE_NOISE_SAMPLING EQU 4
-NOTE_REST EQU 5
-NOTE_VIBRATO_OVERRIDE EQU 6
+	const_def
+	const NOTE_DUTY_OVERRIDE    ; 0
+	const NOTE_FREQ_OVERRIDE    ; 1
+	const NOTE_UNUSED           ; 2
+	const NOTE_UNKN_3           ; 3
+	const NOTE_NOISE_SAMPLING   ; 4
+	const NOTE_REST             ; 5
+	const NOTE_VIBRATO_OVERRIDE ; 6
+
+; Volume:
+MAX_VOLUME EQU $77
--- 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,37 @@
 	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
+NUM_TM_HM_TUTOR = __enum__ +- 1
 
-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 +372,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 +383,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 +397,7 @@
 	const MARTTYPE_PHARMACY
 	const MARTTYPE_ROOFTOP
 
+; Marts indexes (see items/marts.asm)
 	const_def
 	const MART_CHERRYGROVE
 	const MART_CHERRYGROVE_DEX
@@ -414,7 +434,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 +447,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,85 +143,16 @@
 
 
 	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
-
-	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
-	const EZCHAT_PEOPLE
-	const EZCHAT_BATTLE
-	const EZCHAT_EXCLAMATIONS
-	const EZCHAT_CONVERSATION
-	const EZCHAT_FEELINGS
-	const EZCHAT_CONDITIONS
-	const EZCHAT_LIFE
-	const EZCHAT_HOBBIES
-	const EZCHAT_ACTIONS
-	const EZCHAT_TIME
-	const EZCHAT_FAREWELLS
-	const EZCHAT_THISANDTHAT
-
-SWARM_DUNSPARCE EQU 0
-SWARM_YANMA     EQU 1
-
-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
--- /dev/null
+++ b/constants/mobile_constants.asm
@@ -1,0 +1,21 @@
+; MobileEZChatCategoryPointers indexes (see misc/fixed_words.asm)
+	const_def
+	const EZCHAT_POKEMON
+	const EZCHAT_TYPES
+	const EZCHAT_GREETINGS
+	const EZCHAT_PEOPLE
+	const EZCHAT_BATTLE
+	const EZCHAT_EXCLAMATIONS
+	const EZCHAT_CONVERSATION
+	const EZCHAT_FEELINGS
+	const EZCHAT_CONDITIONS
+	const EZCHAT_LIFE
+	const EZCHAT_HOBBIES
+	const EZCHAT_ACTIONS
+	const EZCHAT_TIME
+	const EZCHAT_FAREWELLS
+	const EZCHAT_THISANDTHAT
+
+NUM_KANA EQU 45 ; length of SortedPokemon table (see misc/fixed_words.asm)
+
+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,14 @@
 	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
+
+; number of Unown forms
+NUM_UNOWN EQU 26
--- 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,23 +1,26 @@
-
 ; MonType: ; cf5f
-PARTYMON   EQU 0
-OTPARTYMON EQU 1
-BOXMON     EQU 2
-TEMPMON   EQU 3
-WILDMON    EQU 4
+	const_def
+	const PARTYMON   ; 0
+	const OTPARTYMON ; 1
+	const BOXMON     ; 2
+	const TEMPMON    ; 3
+	const WILDMON    ; 4
 
-; Options: ; cfcc
+; Options: (bits) ; cfcc
+const_value SET 5
+	const STEREO       ; 5
+	const BATTLE_SHIFT ; 6
+	const BATTLE_SCENE ; 7
+
+; Options: (bits 0-2 values) ; cfcc
 FAST_TEXT      EQU 0
 MED_TEXT       EQU 1
 SLOW_TEXT      EQU 2
 NO_TEXT_SCROLL EQU 4
-; bits
-STEREO         EQU 5
-BATTLE_SHIFT   EQU 6
-BATTLE_SCENE   EQU 7
 
 ; Options2:
-MENU_ACCOUNT EQU 0
+	const_def
+	const MENU_ACCOUNT ; 0
 
 ; GBPrinter:
 PRINT_LIGHTEST EQU $00
@@ -27,11 +30,12 @@
 PRINT_DARKEST  EQU $7f
 
 ; WalkingDirection: ; d043
-STANDING EQU -1
-DOWN     EQU 0
-UP       EQU 1
-LEFT     EQU 2
-RIGHT    EQU 3
+const_value SET -1
+	const STANDING ; -1
+	const DOWN     ; 0
+	const UP       ; 1
+	const LEFT     ; 2
+	const RIGHT    ; 3
 
 ; FacingDirection: ; d044
 FACE_CURRENT EQU 0
@@ -41,10 +45,11 @@
 FACE_RIGHT EQU 1
 
 ; TimeOfDay: ; d269
-MORN     EQU 0
-DAY      EQU 1
-NITE     EQU 2
-DARKNESS EQU 3
+	const_def
+	const MORN     ; 0
+	const DAY      ; 1
+	const NITE     ; 2
+	const DARKNESS ; 3
 
 ; ScriptFlags: ; d434
 SCRIPT_RUNNING EQU 2
@@ -56,13 +61,14 @@
 SCRIPT_WAIT EQU 3
 
 ; CurDay: ; d4cb
-SUNDAY    EQU 0
-MONDAY    EQU 1
-TUESDAY   EQU 2
-WEDNESDAY EQU 3
-THURSDAY  EQU 4
-FRIDAY    EQU 5
-SATURDAY  EQU 6
+	const_def
+	const SUNDAY    ; 0
+	const MONDAY    ; 1
+	const TUESDAY   ; 2
+	const WEDNESDAY ; 3
+	const THURSDAY  ; 4
+	const FRIDAY    ; 5
+	const SATURDAY  ; 6
 
 ; MapObjects: ; d71e
 
@@ -103,3 +109,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/battle_start.asm
+++ b/engine/battle_start.asm
@@ -141,7 +141,7 @@
 ; 8c2f4
 
 TrainerBattlePokeballTiles: ; 8c2f4
-INCBIN "gfx/overworld/trainer_battle_pokeball_tiles.2bpp"
+INCBIN "gfx/ow_fx/trainer_battle_pokeball_tiles.2bpp"
 
 
 FlashyTransitionToBattle: ; 8c314
--- a/engine/billspc.asm
+++ b/engine/billspc.asm
@@ -1783,7 +1783,7 @@
 	call CopyNicknameToTemp
 	ld hl, PartyMonOT
 	call CopyOTNameToTemp
-	ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species)
+	ld hl, PartyMon1
 	ld bc, PARTYMON_STRUCT_LENGTH
 	ld a, [CurPartyMon]
 	call AddNTimes
@@ -2280,8 +2280,8 @@
 	ret
 ; e3419 (38:7419)
 
-PCSelectLZ: INCBIN "gfx/pc.2bpp.lz"
-PCMailGFX:  INCBIN "gfx/pc_mail.2bpp"
+PCSelectLZ: INCBIN "gfx/pc/pc.2bpp.lz"
+PCMailGFX:  INCBIN "gfx/pc/pc_mail.2bpp"
 ; e34dd
 
 PCString_ChooseaPKMN: db "Choose a <PK><MN>.@"
--- a/engine/billspctop.asm
+++ b/engine/billspctop.asm
@@ -245,10 +245,10 @@
 	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
 	ld a, " "
 	call ByteFill
-	hlcoord 0,0
+	hlcoord 0, 0
 	lb bc, 10, 18
 	call TextBox
-	hlcoord 0,12
+	hlcoord 0, 12
 	lb bc, 4, 18
 	call TextBox
 	call WaitBGMap2
--- a/engine/breeding/egg.asm
+++ b/engine/breeding/egg.asm
@@ -234,7 +234,7 @@
 	callba SetEggMonCaughtData
 	callba TrainerRankings_EggsHatched
 	ld a, [CurPartyMon]
-	ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species)
+	ld hl, PartyMon1Species
 	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld a, [hl]
@@ -263,7 +263,7 @@
 	ld [wd26b], a
 	call GetBaseData
 	ld a, [CurPartyMon]
-	ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species)
+	ld hl, PartyMon1
 	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	push hl
@@ -309,7 +309,7 @@
 	ld a, [PlayerID + 1]
 	ld [hl], a
 	ld a, [CurPartyMon]
-	ld hl, PartyMonOT ; wddff (aliases: PartyMonOT)
+	ld hl, PartyMonOT
 	ld bc, NAME_LENGTH
 	call AddNTimes
 	ld d, h
@@ -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
@@ -813,7 +813,7 @@
 ; 17393 (5:7393)
 
 EggHatchGFX: ; 17393
-INCBIN "gfx/unknown/017393.2bpp"
+INCBIN "gfx/evo/egg_hatch.2bpp"
 ; 173b3
 
 Hatch_InitShellFragments: ; 173b3 (5:73b3)
@@ -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/card_flip.asm
+++ b/engine/card_flip.asm
@@ -499,12 +499,12 @@
 
 .Deck: ; e0459
 	; level, pic anchor (3x3)
-	db "1",$4e, "1",$57, "1",$69, "1",$60
-	db "2",$4e, "2",$57, "2",$69, "2",$60
-	db "3",$4e, "3",$57, "3",$69, "3",$60
-	db "4",$4e, "4",$57, "4",$69, "4",$60
-	db "5",$4e, "5",$57, "5",$69, "5",$60
-	db "6",$4e, "6",$57, "6",$69, "6",$60
+	db "1", $4e, "1", $57, "1", $69, "1", $60
+	db "2", $4e, "2", $57, "2", $69, "2", $60
+	db "3", $4e, "3", $57, "3", $69, "3", $60
+	db "4", $4e, "4", $57, "4", $69, "4", $60
+	db "5", $4e, "5", $57, "5", $69, "5", $60
+	db "6", $4e, "6", $57, "6", $69, "6", $60
 ; e0489
 
 CardFlip_UpdateCoinBalanceDisplay: ; e0489
@@ -1712,19 +1712,19 @@
 ; e0cdb
 
 CardFlipLZ03: ; e0cdb
-INCBIN "gfx/unknown/0e0cdb.2bpp.lz"
+INCBIN "gfx/card_flip/card_flip_3.2bpp.lz"
 
 CardFlipOffButtonGFX: ; e0cf6
-INCBIN "gfx/unknown/0e0cf6.2bpp"
+INCBIN "gfx/card_flip/off.2bpp"
 
 CardFlipOnButtonGFX: ; e0d06
-INCBIN "gfx/unknown/0e0d06.2bpp"
+INCBIN "gfx/card_flip/on.2bpp"
 
 CardFlipLZ01: ; e0d16
-INCBIN "gfx/unknown/0e0d16.2bpp.lz"
+INCBIN "gfx/card_flip/card_flip_1.2bpp.lz"
 
 CardFlipLZ02: ; e0ea8
-INCBIN "gfx/unknown/0e0ea8.2bpp.lz"
+INCBIN "gfx/card_flip/card_flip_2.2bpp.lz"
 
 CardFlipTilemap: ; e110c
 	db $ef, $15, $27, $2a, $2a, $06, $27, $2a, $2a, $06, $27
--- a/engine/clock_reset.asm
+++ b/engine/clock_reset.asm
@@ -66,7 +66,7 @@
 .SetClock: ; 20051 (8:4051)
 	ld a, 1
 	ld [Buffer1], a ; which digit
-	ld [Buffer2], a ; wd1eb (aliases: MovementType)
+	ld [Buffer2], a
 	ld a, 8
 	ld [Buffer3], a
 	call UpdateTime
@@ -151,7 +151,7 @@
 	ret
 
 .pressed_up
-	ld a, [Buffer1] ; wd1ea (aliases: MagikarpLength)
+	ld a, [Buffer1]
 	call ResetClock_GetWraparoundTime
 	ld a, [de]
 	inc a
@@ -163,7 +163,7 @@
 	jr .done_scroll
 
 .pressed_down
-	ld a, [Buffer1] ; wd1ea (aliases: MagikarpLength)
+	ld a, [Buffer1]
 	call ResetClock_GetWraparoundTime
 	ld a, [de]
 	dec a
@@ -176,7 +176,7 @@
 	jr .done_scroll
 
 .pressed_left
-	ld hl, Buffer1 ; wd1ea (aliases: MagikarpLength)
+	ld hl, Buffer1
 	dec [hl]
 	jr nz, .done_scroll
 	ld [hl], $3
@@ -183,7 +183,7 @@
 	jr .done_scroll
 
 .pressed_right
-	ld hl, Buffer1 ; wd1ea (aliases: MagikarpLength)
+	ld hl, Buffer1
 	inc [hl]
 	ld a, [hl]
 	cp $4
@@ -209,14 +209,14 @@
 	ld c, a
 	decoord 11, 8
 	callba PrintHoursMins
-	ld a, [Buffer2] ; wd1eb (aliases: MovementType)
+	ld a, [Buffer2]
 	lb de, " ", " "
 	call .PlaceChars
-	ld a, [Buffer1] ; wd1ea (aliases: MagikarpLength)
+	ld a, [Buffer1]
 	lb de, "▲", "▼"
 	call .PlaceChars
-	ld a, [Buffer1] ; wd1ea (aliases: MagikarpLength)
-	ld [Buffer2], a ; wd1eb (aliases: MovementType)
+	ld a, [Buffer1]
+	ld [Buffer2], a
 	ret
 ; 20160 (8:4160)
 
--- a/engine/credits.asm
+++ b/engine/credits.asm
@@ -196,7 +196,7 @@
 	xor a
 	ld [hBGMapMode], a
 	ld [CreditsPos], a
-	ld [wcd21], a
+	ld [CreditsUnusedCD21], a
 	ld [CreditsTimer], a
 
 .execution_loop
@@ -491,7 +491,7 @@
 	ld a, MUSIC_POST_CREDITS % $100
 	ld [MusicFadeID], a
 	ld a, MUSIC_POST_CREDITS / $100
-	ld [MusicFadeIDHi], a
+	ld [MusicFadeID + 1], a
 	ret
 
 .get
@@ -1303,9 +1303,9 @@
 
 .Copyright:
 	;    (C) 1  9  9  5 - 2  0  0  1     N  i  n  t  e  n  d  o
-	db   $60,$61,$62,$63,$64,$65,$66, $67, $68, $69, $6a, $6b, $6c
-	;    (C) 1  9  9  5 - 2  0  0  1    C  r  e  a  t  u  r  e  s      i  n  c .
-	next $60,$61,$62,$63,$64,$65,$66, $6d, $6e, $6f, $70, $71, $72,  $7a, $7b, $7c
-	;    (C) 1  9  9  5 - 2  0  0  1  G   A   M   E   F   R   E   A   K     i  n  c .
-	next $60,$61,$62,$63,$64,$65,$66, $73, $74, $75, $76, $77, $78, $79,  $7a, $7b, $7c
+	db   $60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$6a,$6b,$6c
+	;    (C) 1  9  9  5 - 2  0  0  1    C  r  e  a  t  u  r  e  s     i  n  c .
+	next $60,$61,$62,$63,$64,$65,$66,$6d,$6e,$6f,$70,$71,$72,  $7a,$7b,$7c
+	;    (C) 1  9  9  5 - 2  0  0  1  G  A  M  E  F  R  E  A  K     i  n  c .
+	next $60,$61,$62,$63,$64,$65,$66,$73,$74,$75,$76,$77,$78,$79,  $7a,$7b,$7c
 	db "@"
--- a/engine/crystal_intro.asm
+++ b/engine/crystal_intro.asm
@@ -183,7 +183,7 @@
 .place_presents
 	ld [hl], 0
 	ld hl, .presents
-	decoord 7,11
+	decoord 7, 11
 	ld bc, .end - .presents
 	call CopyBytes
 	call PlaceGameFreakPresents_AdvanceIndex
@@ -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/decorations.asm
+++ b/engine/decorations.asm
@@ -908,9 +908,9 @@
 
 DecoAction_FinishUp_Ornament: ; 26dd6
 	call QueryWhichSide
-	ld a, [wd1ec]
+	ld a, [wSelectedDecoration]
 	ld [hl], a
-	ld a, [wd1ed]
+	ld a, [wOtherDecoration]
 	ld [de], a
 	xor a
 	ret
@@ -917,7 +917,7 @@
 ; 26de3
 
 DecoAction_SetItUp_Ornament: ; 26de3
-	ld a, [wd1ec]
+	ld a, [wSelectedDecoration]
 	and a
 	jr z, .nothingthere
 	ld b, a
@@ -931,7 +931,7 @@
 	ld hl, StringBuffer4
 	call GetDecorationName
 	ld a, [MenuSelection]
-	ld [wd1ec], a
+	ld [wSelectedDecoration], a
 	call .getwhichside
 	ld hl, DecoText_PutAwayAndSetUp
 	call MenuTextBoxBackup
@@ -940,7 +940,7 @@
 
 .nothingthere
 	ld a, [MenuSelection]
-	ld [wd1ec], a
+	ld [wSelectedDecoration], a
 	call .getwhichside
 	ld a, [MenuSelection]
 	ld hl, StringBuffer3
@@ -960,11 +960,11 @@
 .getwhichside ; 26e33
 	ld a, [MenuSelection]
 	ld b, a
-	ld a, [wd1ed]
+	ld a, [wOtherDecoration]
 	cp b
 	ret nz
 	xor a
-	ld [wd1ed], a
+	ld [wOtherDecoration], a
 	ret
 ; 26e41
 
@@ -975,7 +975,7 @@
 ; 0x26e46
 
 DecoAction_PutItAway_Ornament: ; 26e46
-	ld a, [wd1ec]
+	ld a, [wSelectedDecoration]
 	and a
 	jr z, .nothingthere
 	ld hl, StringBuffer3
@@ -983,7 +983,7 @@
 	ld a, $1
 	ld [Buffer5], a
 	xor a
-	ld [wd1ec], a
+	ld [wSelectedDecoration], a
 	ld hl, DecoText_PutAwayTheDeco
 	call MenuTextBoxBackup
 	xor a
@@ -1015,9 +1015,9 @@
 	ld [Buffer2], a
 	call QueryWhichSide
 	ld a, [hl]
-	ld [wd1ec], a
+	ld [wSelectedDecoration], a
 	ld a, [de]
-	ld [wd1ed], a
+	ld [wOtherDecoration], a
 	xor a
 	ret
 
--- a/engine/diploma.asm
+++ b/engine/diploma.asm
@@ -85,10 +85,10 @@
 ; 1dd805
 
 DiplomaGFX: ; 1dd805
-INCBIN "gfx/unknown/1dd805.2bpp.lz"
+INCBIN "gfx/diploma/diploma.2bpp.lz"
 
 DiplomaPage1Tilemap: ; 1ddc4b
-INCBIN "gfx/unknown/1ddc4b.tilemap"
+INCBIN "gfx/diploma/page1.tilemap"
 
 DiplomaPage2Tilemap: ; 1dddb3
-INCBIN "gfx/unknown/1dddb3.tilemap"
+INCBIN "gfx/diploma/page2.tilemap"
--- 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
@@ -609,4 +609,4 @@
 ; e2221 (38:6221)
 
 LZ_e2221: ; e2221
-INCBIN "gfx/unknown/0e2221.2bpp.lz"
+INCBIN "gfx/dummy_game/dummy_game.2bpp.lz"
--- 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/events_2.asm
+++ b/engine/events_2.asm
@@ -627,7 +627,7 @@
 	ld hl, OBJECT_MOVEMENTTYPE
 	add hl, de
 	ld a, [hl]
-	cp STEP_TYPE_SKYFALL_TOP
+	cp SPRITEMOVEDATA_STRENGTH_BOULDER
 	jr nz, .next
 
 	ld hl, OBJECT_NEXT_TILE
--- a/engine/events_3.asm
+++ b/engine/events_3.asm
@@ -850,9 +850,9 @@
 ; b84f2
 
 FishingGFX: ; b84f2
-INCBIN "gfx/overworld/chris_fish.2bpp"
+INCBIN "gfx/ow_fx/chris_fish.2bpp"
 ; b8582
 
 KrisFishingGFX: ; b8582
-INCBIN "gfx/overworld/kris_fish.2bpp"
+INCBIN "gfx/ow_fx/kris_fish.2bpp"
 ; b8612
--- 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/healmachineanim.asm
+++ b/engine/healmachineanim.asm
@@ -137,7 +137,7 @@
 ; 123fc
 
 .HealMachineGFX: ; 123fc
-INCBIN "gfx/unknown/0123fc.2bpp"
+INCBIN "gfx/ow_fx/heal_machine.2bpp"
 ; 1241c
 
 .HOF_OAM: ; 1241c
--- a/engine/init_gender.asm
+++ b/engine/init_gender.asm
@@ -68,9 +68,9 @@
 	ld a, $10
 	ld [MusicFade], a
 	ld a, MUSIC_NONE
-	ld [MusicFadeIDLo], a
+	ld [MusicFadeID], a
 	ld a, $0
-	ld [MusicFadeIDHi], a
+	ld [MusicFadeID + 1], a
 	ld c, 8
 	call DelayFrames
 	call ClearBGPalettes
--- a/engine/intro_menu.asm
+++ b/engine/intro_menu.asm
@@ -111,8 +111,8 @@
 	xor a
 	call ByteFill
 
-	ld hl, wd000
-	ld bc, wGameData - wd000
+	ld hl, wRAM1Start
+	ld bc, wGameData - wRAM1Start
 	xor a
 	call ByteFill
 
@@ -375,9 +375,9 @@
 	ld a, $8
 	ld [MusicFade], a
 	ld a, MUSIC_NONE % $100
-	ld [MusicFadeIDLo], a
+	ld [MusicFadeID], a
 	ld a, MUSIC_NONE / $100
-	ld [MusicFadeIDHi], a
+	ld [MusicFadeID + 1], a
 	call ClearBGPalettes
 	call Continue_MobileAdapterMenu
 	call CloseWindow
@@ -429,9 +429,9 @@
 	ld a, 5
 	ld [MusicFade], a
 	ld a, MUSIC_MOBILE_ADAPTER_MENU % $100
-	ld [MusicFadeIDLo], a
+	ld [MusicFadeID], a
 	ld a, MUSIC_MOBILE_ADAPTER_MENU / $100
-	ld [MusicFadeIDHi], a
+	ld [MusicFadeID + 1], a
 	ld c, 20
 	call DelayFrames
 	ld c, $1
@@ -440,9 +440,9 @@
 	ld a, 8
 	ld [MusicFade], a
 	ld a, MUSIC_NONE % $100
-	ld [MusicFadeIDLo], a
+	ld [MusicFadeID], a
 	ld a, MUSIC_NONE / $100
-	ld [MusicFadeIDHi], a
+	ld [MusicFadeID + 1], a
 	ld c, 35
 	call DelayFrames
 	ret
@@ -859,9 +859,9 @@
 	ld [MusicFade], a
 	ld de, MUSIC_NONE
 	ld a, e
-	ld [MusicFadeIDLo], a
+	ld [MusicFadeID], a
 	ld a, d
-	ld [MusicFadeIDHi], a
+	ld [MusicFadeID + 1], a
 
 	ld de, SFX_ESCAPE_ROPE
 	call PlaySFX
@@ -1051,7 +1051,7 @@
 	ld b, SCGB_DIPLOMA
 	call GetSGBLayout
 	call UpdateTimePals
-	ld a, [wcf64]
+	ld a, [wIntroSceneFrameCounter]
 	cp $5
 	jr c, .ok
 	xor a
@@ -1191,7 +1191,7 @@
 	inc [hl]
 
 ; Start a timer
-	ld hl, wcf65
+	ld hl, wTitleScreenTimer
 	ld de, 73 * 60 + 36
 	ld [hl], e
 	inc hl
@@ -1202,7 +1202,7 @@
 TitleScreenMain: ; 6304
 
 ; Run the timer down.
-	ld hl, wcf65
+	ld hl, wTitleScreenTimer
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -1268,7 +1268,7 @@
 	ld a, 1
 
 .done
-	ld [wcf64], a
+	ld [wIntroSceneFrameCounter], a
 
 ; Return to the intro sequence.
 	ld hl, wJumptableIndex
@@ -1282,18 +1282,18 @@
 
 ; Fade out the title screen music
 	xor a
-	ld [MusicFadeIDLo], a
-	ld [MusicFadeIDHi], a
+	ld [MusicFadeID], a
+	ld [MusicFadeID + 1], a
 	ld hl, MusicFade
 	ld [hl], 8 ; 1 second
 
-	ld hl, wcf65
+	ld hl, wTitleScreenTimer
 	inc [hl]
 	ret
 
 .clock_reset
 	ld a, 4
-	ld [wcf64], a
+	ld [wIntroSceneFrameCounter], a
 
 ; Return to the intro sequence.
 	ld hl, wJumptableIndex
@@ -1305,7 +1305,7 @@
 
 ; Wait until the music is done fading.
 
-	ld hl, wcf65
+	ld hl, wTitleScreenTimer
 	inc [hl]
 
 	ld a, [MusicFade]
@@ -1313,7 +1313,7 @@
 	ret nz
 
 	ld a, 2
-	ld [wcf64], a
+	ld [wIntroSceneFrameCounter], a
 
 ; Back to the intro.
 	ld hl, wJumptableIndex
@@ -1332,8 +1332,8 @@
 ; 639b
 
 Function639b: ; unreferenced
-	; If bit 0 or 1 of [wcf65] is set, we don't need to be here.
-	ld a, [wcf65]
+	; If bit 0 or 1 of [wTitleScreenTimer] is set, we don't need to be here.
+	ld a, [wTitleScreenTimer]
 	and $3
 	ret nz
 	ld bc, SpriteAnim10
@@ -1345,8 +1345,8 @@
 	add hl, hl
 	ld de, Data63ca
 	add hl, de
-	; If bit 2 of [wcf65] is set, get the second dw; else, get the first dw
-	ld a, [wcf65]
+	; If bit 2 of [wTitleScreenTimer] is set, get the second dw; else, get the first dw
+	ld a, [wTitleScreenTimer]
 	and %00000100
 	srl a
 	srl a
--- a/engine/items.asm
+++ b/engine/items.asm
@@ -331,7 +331,7 @@
 	ret
 
 TossKeyItem: ; d374
-	ld a, [wd107]
+	ld a, [CurItemQuantity]
 	ld e, a
 	ld d, 0
 	ld hl, NumKeyItems
--- a/engine/link.asm
+++ b/engine/link.asm
@@ -390,7 +390,7 @@
 	ld [de], a
 
 .skip_mail
-	ld hl, wLinkData
+	ld hl, wLinkPlayerName
 	ld de, OTPlayerName
 	ld bc, NAME_LENGTH
 	call CopyBytes
@@ -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/link_trade.asm
+++ b/engine/link_trade.asm
@@ -1,5 +1,5 @@
 LinkCommsBorderGFX:
-INCBIN "gfx/unknown/16cfc1.2bpp"
+INCBIN "gfx/trade/border_tiles.2bpp"
 ; 16d421
 
 __LoadTradeScreenBorder: ; 16d421
@@ -35,13 +35,13 @@
 ; 16d465
 
 Tilemap_16d465:
-INCBIN "gfx/unknown/16d465.tilemap"
+INCBIN "gfx/trade/border_mobile_fullscreen.tilemap"
 
 Tilemap_16d5cd:
-INCBIN "gfx/unknown/16d5cd.tilemap"
+INCBIN "gfx/trade/border_cable_top.tilemap"
 
 Tilemap_16d5f5:
-INCBIN "gfx/unknown/16d5f5.tilemap"
+INCBIN "gfx/trade/border_cable_bottom.tilemap"
 
 _LinkTextbox: ; 16d61d
 	ld h, d
--- 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/map_setup.asm
+++ b/engine/map_setup.asm
@@ -414,9 +414,9 @@
 
 RotatePalettesRightMapAndMusic: ; 15574
 	ld e, 0
-	ld a, [MusicFadeIDLo]
+	ld a, [MusicFadeID]
 	ld d, 0
-	ld a, [MusicFadeIDHi]
+	ld a, [MusicFadeID + 1]
 	ld a, $4
 	ld [MusicFade], a
 	call RotateThreePalettesRight
--- a/engine/mart.asm
+++ b/engine/mart.asm
@@ -370,9 +370,9 @@
 	call FadeToMenu
 	callba BlankScreen
 	xor a
-	ld [wd045 + 1], a
+	ld [wMenuScrollPositionBackup], a
 	ld a, 1
-	ld [wd045], a
+	ld [wMenuCursorBufferBackup], a
 .loop
 	call BuyMenuLoop ; menu loop
 	jr nc, .loop
@@ -471,15 +471,15 @@
 	call UpdateSprites
 	ld hl, MenuDataHeader_Buy
 	call CopyMenuDataHeader
-	ld a, [wd045]
+	ld a, [wMenuCursorBufferBackup]
 	ld [wMenuCursorBuffer], a
-	ld a, [wd045 + 1]
+	ld a, [wMenuScrollPositionBackup]
 	ld [wMenuScrollPosition], a
 	call ScrollingMenu
 	ld a, [wMenuScrollPosition]
-	ld [wd045 + 1], a
+	ld [wMenuScrollPositionBackup], a
 	ld a, [wMenuCursorY]
-	ld [wd045], a
+	ld [wMenuCursorBufferBackup], a
 	call SpeechTextBox
 	ld a, [wMenuJoypad]
 	cp B_BUTTON
--- 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
@@ -238,9 +240,9 @@
 	ld [CurIcon], a
 	xor a
 	call GetIconGFX
-	ld d, 3 * 8 + 2
+	ld d, 3 * 8 + 2 ; depixel 3, 4, 2, 4
 	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/mysterygift.asm
+++ b/engine/mysterygift.asm
@@ -815,7 +815,7 @@
 	ld c, rRP % $100
 	ld d, $3d
 	call Function104dd1
-	ld hl, hPrintNum2 ; $ffb4 (aliases: hMultiplicand)
+	ld hl, hPrintNum2
 	ld a, $5a
 	ld [hli], a
 	ld [hl], b
@@ -830,7 +830,7 @@
 	ld a, [hPrintNum6]
 	ld [hPrintNum3], a
 	push hl
-	ld hl, hPrintNum2 ; $ffb4 (aliases: hMultiplicand)
+	ld hl, hPrintNum2
 	ld b, $2
 	call Function104ed6
 	ld hl, hMGStatusFlags
@@ -934,7 +934,7 @@
 	ld [hPrintNum6], a
 	push bc
 	push hl
-	ld hl, hPrintNum2 ; $ffb4 (aliases: hMultiplicand)
+	ld hl, hPrintNum2
 	ld b, $2
 	call Function104faf
 	ld a, [hPrintNum3]
@@ -954,11 +954,11 @@
 	ld e, a
 	push hl
 	push de
-	ld hl, hPrintNum2 ; $ffb4 (aliases: hMultiplicand)
+	ld hl, hPrintNum2
 	ld b, $2
 	call Function104faf
 	pop de
-	ld hl, hPrintNum2 ; $ffb4 (aliases: hMultiplicand)
+	ld hl, hPrintNum2
 	ld a, [hli]
 	xor d
 	ld b, a
--- a/engine/mysterygift2.asm
+++ b/engine/mysterygift2.asm
@@ -9,7 +9,7 @@
 	ld a, [hli]
 	ld [de], a
 	ld b, a
-	inc de
+	inc de ; wc802
 	ld a, [hl]
 	ld [de], a
 	ld c, 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
@@ -946,11 +946,11 @@
 ; 11cb7
 
 NamingScreenGFX_Border: ; 11cb7
-INCBIN "gfx/unknown/011cb7.2bpp"
+INCBIN "gfx/namingscreen/border.2bpp"
 ; 11cc7
 
 NamingScreenGFX_Cursor: ; 11cc7
-INCBIN "gfx/unknown/011cc7.2bpp"
+INCBIN "gfx/namingscreen/cursor.2bpp"
 ; 11ce7
 
 NameInputLower:
@@ -985,16 +985,16 @@
 
 ; 11e5d
 
-GFX_11e5d: ; ????
-INCBIN "gfx/unknown/011e5d.1bpp"
+NamingScreenGFX_End: ; unused
+INCBIN "gfx/namingscreen/end.1bpp"
 ; 11e6d
 
 NamingScreenGFX_MiddleLine:
-INCBIN "gfx/unknown/011e65.1bpp"
+INCBIN "gfx/namingscreen/middle_line.1bpp"
 ; 11e6d
 
 NamingScreenGFX_UnderLine: ; 11e6d
-INCBIN "gfx/unknown/011e6d.1bpp"
+INCBIN "gfx/namingscreen/underline.1bpp"
 ; 11e75
 
 _ComposeMailMessage: ; 11e75 (mail?)
@@ -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,8 @@
 ENDM
 
 EmotesPointers: ; 144d
-; dw source address
-; db length, bank
-; dw dest address
-
+; entries correspond to EMOTE_* constants
+; graphics address, length, starting tile
 	emote_header ShockEmote,     4, $78
 	emote_header QuestionEmote,  4, $78
 	emote_header HappyEmote,     4, $78
@@ -736,9 +734,9 @@
 	emote_header SleepEmote,     4, $78
 	emote_header FishEmote,      4, $78
 	emote_header JumpShadowGFX,  1, $7c
-	emote_header FishingRodGFX2, 2, $7c
+	emote_header FishingRodGFX,  2, $7c
 	emote_header BoulderDustGFX, 2, $7e
-	emote_header FishingRodGFX4, 1, $7e
+	emote_header GrassRustleGFX, 1, $7e
 ; 14495
 
 
--- a/engine/pack.asm
+++ b/engine/pack.asm
@@ -1716,6 +1716,6 @@
 ; 0x10b16
 
 PackMenuGFX:
-INCBIN "gfx/misc/pack_menu.2bpp"
+INCBIN "gfx/pack/pack_menu.2bpp"
 PackGFX:
-INCBIN "gfx/misc/pack.2bpp"
+INCBIN "gfx/pack/pack.2bpp"
--- a/engine/phone.asm
+++ b/engine/phone.asm
@@ -203,7 +203,7 @@
 GetAvailableCallers: ; 900de (24:40de)
 	callba CheckTime
 	ld a, c
-	ld [EngineBuffer1], a ; wd03e (aliases: MenuItemsList, CurFruitTree, CurInput)
+	ld [EngineBuffer1], a
 	ld hl, EngineBuffer3
 	ld bc, 11
 	xor a
@@ -219,7 +219,7 @@
 	ld hl, PhoneContacts + PHONE_CONTACT_SCRIPT2_TIME
 	ld bc, PHONE_TABLE_WIDTH
 	call AddNTimes
-	ld a, [EngineBuffer1] ; wd03e (aliases: MenuItemsList, CurFruitTree, CurInput)
+	ld a, [EngineBuffer1]
 	and [hl]
 	jr z, .not_good_for_call
 	ld bc, PHONE_CONTACT_MAP_GROUP - PHONE_CONTACT_SCRIPT2_TIME
@@ -381,11 +381,11 @@
 
 .DoPhoneCall:
 	ld a, b
-	ld [wd002], a
+	ld [PhoneScriptBank], a
 	ld a, l
-	ld [wd003], a
+	ld [PhoneCaller], a
 	ld a, h
-	ld [wd004], a
+	ld [PhoneCaller + 1], a
 	ld b, BANK(UnknownScript_0x90205)
 	ld de, UnknownScript_0x90205
 	call ExecuteCallbackScript
@@ -495,9 +495,9 @@
 	ld a, b
 	ld [PhoneScriptBank], a
 	ld a, e
-	ld [PhoneCallerLo], a
+	ld [PhoneCaller], a
 	ld a, d
-	ld [PhoneCallerHi], a
+	ld [PhoneCaller + 1], a
 	call Phone_FirstOfTwoRings
 	call Phone_FirstOfTwoRings
 	callba TrainerRankings_PhoneCalls
@@ -518,14 +518,14 @@
 Phone_CallerTextboxWithName2: ; 902c9
 	call Phone_CallerTextbox
 	hlcoord 1, 2
-	ld [hl], $62
+	ld [hl], "<PHONE>"
 	inc hl
 	inc hl
 	ld a, [PhoneScriptBank]
 	ld b, a
-	ld a, [PhoneCallerLo]
+	ld a, [PhoneCaller]
 	ld e, a
-	ld a, [PhoneCallerHi]
+	ld a, [PhoneCaller + 1]
 	ld d, a
 	call FarPlaceString
 	ret
@@ -618,7 +618,7 @@
 	push bc
 	call Phone_CallerTextbox
 	hlcoord 1, 1
-	ld [hl], $62
+	ld [hl], "<PHONE>"
 	inc hl
 	inc hl
 	ld d, h
@@ -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/pokedex.asm
+++ b/engine/pokedex.asm
@@ -117,7 +117,7 @@
 	ret
 
 Pokedex_InitCursorPosition: ; 400b4
-	ld hl, wPokedexDataStart
+	ld hl, wPokedexOrder
 	ld a, [wLastDexEntry]
 	and a
 	jr z, .done
@@ -512,7 +512,7 @@
 	call ClearSprites
 	call Pokedex_DrawOptionScreenBG
 	call Pokedex_InitArrowCursor
-	ld a, [wCurrentDexMode]
+	ld a, [wCurrentDexMode] ; Index of the topmost visible item in a scrolling menu ???
 	ld [wDexArrowCursorPosIndex], a
 	call Pokedex_DisplayModeDescription
 	call WaitBGMap
@@ -1479,11 +1479,11 @@
 	ld a, " "
 	call Pokedex_FillBox
 
-; Load de with wPokedexDataStart + [wDexListingScrollOffset]
+; Load de with wPokedexOrder + [wDexListingScrollOffset]
 	ld a, [wDexListingScrollOffset]
 	ld e, a
 	ld d, $0
-	ld hl, wPokedexDataStart
+	ld hl, wPokedexOrder
 	add hl, de
 	ld e, l
 	ld d, h
@@ -1583,7 +1583,7 @@
 	add [hl]
 	ld e, a
 	ld d, $0
-	ld hl, wPokedexDataStart
+	ld hl, wPokedexOrder
 	add hl, de
 	ld a, [hl]
 	ld [wd265], a
@@ -1614,8 +1614,8 @@
 
 
 Pokedex_OrderMonsByMode: ; 40bdc
-	ld hl, wPokedexDataStart
-	ld bc, wPokedexMetadata - wPokedexDataStart
+	ld hl, wPokedexOrder
+	ld bc, wPokedexOrderEnd - wPokedexOrder
 	xor a
 	call ByteFill
 	ld a, [wCurrentDexMode]
@@ -1632,7 +1632,7 @@
 
 .NewMode: ; 40bf6 (10:4bf6)
 	ld de, NewPokedexOrder
-	ld hl, wPokedexDataStart
+	ld hl, wPokedexOrder
 	ld c, NUM_POKEMON
 .loopnew
 	ld a, [de]
@@ -1644,7 +1644,7 @@
 	ret
 
 .OldMode: ; 40c08 (10:4c08)
-	ld hl, wPokedexDataStart
+	ld hl, wPokedexOrder
 	ld a, $1
 	ld c, NUM_POKEMON
 .loopold
@@ -1656,7 +1656,7 @@
 	ret
 
 .FindLastSeen: ; 40c18 (10:4c18)
-	ld hl, wPokedexDataStart + NUM_POKEMON - 1
+	ld hl, wPokedexOrder + NUM_POKEMON - 1
 	ld d, NUM_POKEMON
 	ld e, d
 .loopfindend
@@ -1675,7 +1675,7 @@
 Pokedex_ABCMode: ; 40c30
 	xor a
 	ld [wDexListingEnd], a
-	ld hl, wPokedexDataStart
+	ld hl, wPokedexOrder
 	ld de, AlphabeticalPokedexOrder
 	ld c, NUM_POKEMON
 .loop1abc
@@ -1915,8 +1915,8 @@
 	add hl, de
 	ld a, [hl]
 	ld [wDexConvertedMonType], a
-	ld hl, wPokedexDataStart
-	ld de, wPokedexDataStart
+	ld hl, wPokedexOrder
+	ld de, wPokedexOrder
 	ld c, NUM_POKEMON
 	xor a
 	ld [wDexSearchResultCount], a
--- a/engine/pokegear.asm
+++ b/engine/pokegear.asm
@@ -136,7 +136,7 @@
 ; 90cb2
 
 FastShipGFX: ; 90cb2
-INCBIN "gfx/misc/fast_ship.2bpp"
+INCBIN "gfx/pokegear/fast_ship.2bpp"
 ; 90d32
 
 InitPokegearModeIndicatorArrow: ; 90d32 (24:4d32)
@@ -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
@@ -1407,7 +1407,7 @@
 ; 0x914dd
 
 PokegearSpritesGFX: ; 914dd
-INCBIN "gfx/misc/pokegear_sprites.2bpp.lz"
+INCBIN "gfx/pokegear/pokegear_sprites.2bpp.lz"
 ; 9150d
 
 RadioTilemapRLE: ; 9150d
@@ -1619,8 +1619,8 @@
 
 LoadStation_OaksPokemonTalk: ; 91753 (24:5753)
 	xor a ; OAKS_POKEMON_TALK
-	ld [wd002], a
-	ld [wd005], a
+	ld [wCurrentRadioLine], a
+	ld [wNumRadioLinesPrinted], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Radio_BackUpFarCallParams
@@ -1629,9 +1629,9 @@
 
 LoadStation_PokedexShow: ; 91766 (24:5766)
 	ld a, POKEDEX_SHOW
-	ld [wd002], a
+	ld [wCurrentRadioLine], a
 	xor a
-	ld [wd005], a
+	ld [wNumRadioLinesPrinted], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Radio_BackUpFarCallParams
@@ -1640,9 +1640,9 @@
 
 LoadStation_PokemonMusic: ; 9177b (24:577b)
 	ld a, POKEMON_MUSIC
-	ld [wd002], a
+	ld [wCurrentRadioLine], a
 	xor a
-	ld [wd005], a
+	ld [wNumRadioLinesPrinted], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Radio_BackUpFarCallParams
@@ -1651,9 +1651,9 @@
 
 LoadStation_LuckyChannel: ; 91790 (24:5790)
 	ld a, LUCKY_CHANNEL
-	ld [wd002], a
+	ld [wCurrentRadioLine], a
 	xor a
-	ld [wd005], a
+	ld [wNumRadioLinesPrinted], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Radio_BackUpFarCallParams
@@ -1662,9 +1662,9 @@
 
 LoadStation_BuenasPassword: ; 917a5 (24:57a5)
 	ld a, BUENAS_PASSWORD
-	ld [wd002], a
+	ld [wCurrentRadioLine], a
 	xor a
-	ld [wd005], a
+	ld [wNumRadioLinesPrinted], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Radio_BackUpFarCallParams
@@ -1682,9 +1682,9 @@
 
 LoadStation_UnownRadio: ; 917d5 (24:57d5)
 	ld a, UNOWN_RADIO
-	ld [wd002], a
+	ld [wCurrentRadioLine], a
 	xor a
-	ld [wd005], a
+	ld [wNumRadioLinesPrinted], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Radio_BackUpFarCallParams
@@ -1693,9 +1693,9 @@
 
 LoadStation_PlacesAndPeople: ; 917ea (24:57ea)
 	ld a, PLACES_AND_PEOPLE
-	ld [wd002], a
+	ld [wCurrentRadioLine], a
 	xor a
-	ld [wd005], a
+	ld [wNumRadioLinesPrinted], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Radio_BackUpFarCallParams
@@ -1704,9 +1704,9 @@
 
 LoadStation_LetsAllSing: ; 917ff (24:57ff)
 	ld a, LETS_ALL_SING
-	ld [wd002], a
+	ld [wCurrentRadioLine], a
 	xor a
-	ld [wd005], a
+	ld [wNumRadioLinesPrinted], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Radio_BackUpFarCallParams
@@ -1717,9 +1717,9 @@
 
 LoadStation_RocketRadio: ; 91814
 	ld a, ROCKET_RADIO
-	ld [wd002], a
+	ld [wCurrentRadioLine], a
 	xor a
-	ld [wd005], a
+	ld [wNumRadioLinesPrinted], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Radio_BackUpFarCallParams
@@ -1730,9 +1730,9 @@
 
 LoadStation_PokeFluteRadio: ; 91829 (24:5829)
 	ld a, POKE_FLUTE_RADIO
-	ld [wd002], a
+	ld [wCurrentRadioLine], a
 	xor a
-	ld [wd005], a
+	ld [wNumRadioLinesPrinted], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Radio_BackUpFarCallParams
@@ -1741,9 +1741,9 @@
 
 LoadStation_EvolutionRadio: ; 9183e (24:583e)
 	ld a, EVOLUTION_RADIO
-	ld [wd002], a
+	ld [wCurrentRadioLine], a
 	xor a
-	ld [wd005], a
+	ld [wNumRadioLinesPrinted], a
 	ld a, BANK(PlayRadioShow)
 	ld hl, PlayRadioShow
 	call Radio_BackUpFarCallParams
@@ -1855,20 +1855,20 @@
 	ld a, $e3
 	ld [rLCDC], a
 	call TownMap_GetCurrentLandmark
-	ld [wd002], a
-	ld [wd003], a
+	ld [wTownMapPlayerIconLandmark], a
+	ld [wTownMapCursorLandmark], a
 	xor a
 	ld [hBGMapMode], a
 	call .InitTilemap
 	call WaitBGMap2
-	ld a, [wd002]
+	ld a, [wTownMapPlayerIconLandmark]
 	call PokegearMap_InitPlayerIcon
-	ld a, [wd003]
+	ld a, [wTownMapCursorLandmark]
 	call PokegearMap_InitCursor
 	ld a, c
-	ld [wd004], a
+	ld [wTownMapCursorObjectPointer], a
 	ld a, b
-	ld [wd005], a
+	ld [wTownMapCursorObjectPointer + 1], a
 	ld b, SCGB_POKEGEAR_PALS
 	call GetSGBLayout
 	call SetPalettes
@@ -1880,7 +1880,7 @@
 	call DelayFrame
 
 .dmg
-	ld a, [wd002]
+	ld a, [wTownMapPlayerIconLandmark]
 	cp KANTO_LANDMARK
 	jr nc, .kanto
 	ld d, KANTO_LANDMARK - 1
@@ -1925,7 +1925,7 @@
 	jr .loop
 
 .pressed_up
-	ld hl, wd003
+	ld hl, wTownMapCursorLandmark
 	ld a, [hl]
 	cp d
 	jr c, .okay
@@ -1938,7 +1938,7 @@
 	jr .next
 
 .pressed_down
-	ld hl, wd003
+	ld hl, wTownMapCursorLandmark
 	ld a, [hl]
 	cp e
 	jr nz, .okay2
@@ -1951,13 +1951,13 @@
 
 .next
 	push de
-	ld a, [wd003]
+	ld a, [wTownMapCursorLandmark]
 	call PokegearMap_UpdateLandmarkName
-	ld a, [wd004]
+	ld a, [wTownMapCursorObjectPointer]
 	ld c, a
-	ld a, [wd005]
+	ld a, [wTownMapCursorObjectPointer + 1]
 	ld b, a
-	ld a, [wd003]
+	ld a, [wTownMapCursorLandmark]
 	call PokegearMap_UpdateCursorPosition
 	pop de
 	jr .loop2
@@ -1964,7 +1964,7 @@
 ; 91a04
 
 .InitTilemap: ; 91a04
-	ld a, [wd002]
+	ld a, [wTownMapPlayerIconLandmark]
 	cp KANTO_LANDMARK
 	jr nc, .kanto2
 	ld e, $0
@@ -1992,7 +1992,7 @@
 	call ByteFill
 	hlcoord 19, 2
 	ld [hl], $17
-	ld a, [wd003]
+	ld a, [wTownMapCursorLandmark]
 	call PokegearMap_UpdateLandmarkName
 	callba TownMapPals
 	ret
@@ -2147,7 +2147,7 @@
 	jr .exit
 
 .pressedA
-	ld a, [wd002]
+	ld a, [wTownMapPlayerIconLandmark]
 	ld l, a
 	ld h, 0
 	add hl, hl
@@ -2155,7 +2155,7 @@
 	add hl, de
 	ld a, [hl]
 .exit
-	ld [wd002], a
+	ld [wTownMapPlayerIconLandmark], a
 	pop af
 	ld [hInMenu], a
 	call ClearBGPalettes
@@ -2165,7 +2165,7 @@
 	ld [hBGMapAddress], a
 	ld a, VBGMap0 / $100
 	ld [hBGMapAddress + 1], a
-	ld a, [wd002]
+	ld a, [wTownMapPlayerIconLandmark]
 	ld e, a
 	ret
 
@@ -2186,7 +2186,7 @@
 	ret
 
 .ScrollNext:
-	ld hl, wd002
+	ld hl, wTownMapPlayerIconLandmark
 	ld a, [hl]
 	cp d
 	jr nz, .NotAtEndYet
@@ -2200,7 +2200,7 @@
 	jr .Finally
 
 .ScrollPrev:
-	ld hl, wd002
+	ld hl, wTownMapPlayerIconLandmark
 	ld a, [hl]
 	cp e
 	jr nz, .NotAtStartYet
@@ -2269,7 +2269,7 @@
 
 .Name:
 ; We need the map location of the default flypoint
-	ld a, [wd002]
+	ld a, [wTownMapPlayerIconLandmark]
 	ld l, a
 	ld h, 0
 	add hl, hl ; two bytes per flypoint
@@ -2285,7 +2285,7 @@
 ; 91c17
 
 GetMapCursorCoordinates: ; 91c17
-	ld a, [wd002]
+	ld a, [wTownMapPlayerIconLandmark]
 	ld l, a
 	ld h, $0
 	add hl, hl
@@ -2293,9 +2293,9 @@
 	add hl, de
 	ld e, [hl]
 	callba GetLandmarkCoords
-	ld a, [wd003]
+	ld a, [wTownMapCursorCoordinates]
 	ld c, a
-	ld a, [wd004]
+	ld a, [wTownMapCursorCoordinates + 1]
 	ld b, a
 	ld hl, $4
 	add hl, bc
@@ -2389,8 +2389,7 @@
 	ld c, a
 	call GetWorldMapLocation
 ; If we're not in a valid location, i.e. Pokecenter floor 2F,
-
-; the backup map information is used
+; the backup map information is used.
 	cp SPECIAL_MAP
 	jr nz, .CheckRegion
 	ld a, [BackupMapGroup]
@@ -2399,7 +2398,7 @@
 	ld c, a
 	call GetWorldMapLocation
 .CheckRegion:
-; The first 46 locations are part of Johto. The rest are in Kanto
+; The first 46 locations are part of Johto. The rest are in Kanto.
 	cp KANTO_LANDMARK
 	jr nc, .KantoFlyMap
 .JohtoFlyMap:
@@ -2407,10 +2406,10 @@
 	push af
 ; Start from New Bark Town
 	ld a, FLY_NEW_BARK
-	ld [wd002], a
+	ld [wTownMapPlayerIconLandmark], a
 ; Flypoints begin at New Bark Town...
 	ld [StartFlypoint], a
-; ..and end at Silver Cave
+; ..and end at Silver Cave.
 	ld a, FLY_MT_SILVER
 	ld [EndFlypoint], a
 ; Fill out the map
@@ -2422,17 +2421,13 @@
 
 .KantoFlyMap:
 ; The event that there are no flypoints enabled in a map is not
-
 ; accounted for. As a result, if you attempt to select a flypoint
 ; when there are none enabled, the game will crash. Additionally,
-
 ; the flypoint selection has a default starting point that
-; can be flown to even if none are enabled
-
+; can be flown to even if none are enabled.
 ; To prevent both of these things from happening when the player
 ; enters Kanto, fly access is restricted until Indigo Plateau is
-
-; visited and its flypoint enabled
+; visited and its flypoint enabled.
 	push af
 	ld c, SPAWN_INDIGO
 	call HasVisitedSpawn
@@ -2447,9 +2442,8 @@
 	ld a, FLY_INDIGO
 	ld [EndFlypoint], a
 ; Because Indigo Plateau is the first flypoint the player
-
-; visits, it's made the default flypoint
-	ld [wd002], a
+; visits, it's made the default flypoint.
+	ld [wTownMapPlayerIconLandmark], a
 ; Fill out the map
 	call FillKantoMap
 	call .MapHud
@@ -2462,7 +2456,7 @@
 
 ; Start from New Bark Town
 	ld a, FLY_NEW_BARK
-	ld [wd002], a
+	ld [wTownMapPlayerIconLandmark], a
 ; Flypoints begin at New Bark Town...
 	ld [StartFlypoint], a
 ; ..and end at Silver Cave
@@ -2477,9 +2471,9 @@
 	call TownMapBGUpdate
 	call TownMapMon
 	ld a, c
-	ld [wd003], a
+	ld [wTownMapCursorCoordinates], a
 	ld a, b
-	ld [wd004], a
+	ld [wTownMapCursorCoordinates + 1], a
 	ret
 
 ; 91d11
@@ -2486,12 +2480,12 @@
 
 _Area: ; 91d11
 ; e: Current landmark
-	ld a, [wd002]
+	ld a, [wTownMapPlayerIconLandmark]
 	push af
-	ld a, [wd003]
+	ld a, [wTownMapCursorLandmark]
 	push af
 	ld a, e
-	ld [wd002], a
+	ld [wTownMapPlayerIconLandmark], a
 	call ClearSprites
 	xor a
 	ld [hBGMapMode], a
@@ -2545,9 +2539,9 @@
 .a_b
 	call ClearSprites
 	pop af
-	ld [wd003], a
+	ld [wTownMapCursorLandmark], a
 	pop af
-	ld [wd002], a
+	ld [wTownMapPlayerIconLandmark], a
 	ret
 
 ; 91d9b
@@ -2636,7 +2630,7 @@
 ; 91e1e
 
 .GetAndPlaceNest: ; 91e1e
-	ld [wd003], a
+	ld [wTownMapCursorLandmark], a
 	ld e, a
 	callba FindNest ; load nest landmarks into TileMap[0,0]
 	decoord 0, 0
@@ -2678,7 +2672,7 @@
 .HideNestsShowPlayer: ; 91e5a
 	call .CheckPlayerLocation
 	ret c
-	ld a, [wd002]
+	ld a, [wTownMapPlayerIconLandmark]
 	ld e, a
 	callba GetLandmarkCoords
 	ld c, e
@@ -2731,22 +2725,21 @@
 
 .CheckPlayerLocation: ; 91ea9
 ; Don't show the player's sprite if you're
-
 ; not in the same region as what's currently
 ; on the screen.
-	ld a, [wd002]
+	ld a, [wTownMapPlayerIconLandmark]
 	cp FAST_SHIP
 	jr z, .johto
 	cp KANTO_LANDMARK
 	jr c, .johto
 .kanto
-	ld a, [wd003]
+	ld a, [wTownMapCursorLandmark]
 	and a
 	jr z, .clear
 	jr .ok
 
 .johto
-	ld a, [wd003]
+	ld a, [wTownMapCursorLandmark]
 	and a
 	jr nz, .clear
 .ok
@@ -2764,7 +2757,7 @@
 ; 91ed0
 
 .GetPlayerOrFastShipIcon: ; 91ed0
-	ld a, [wd002]
+	ld a, [wTownMapPlayerIconLandmark]
 	cp FAST_SHIP
 	jr z, .FastShip
 	callba GetPlayerIcon
@@ -2910,7 +2903,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
@@ -2977,11 +2970,11 @@
 ; 91fff
 
 JohtoMap: ; 91fff
-INCBIN "gfx/misc/johto.bin"
+INCBIN "gfx/pokegear/johto.bin"
 ; 92168
 
 KantoMap: ; 92168
-INCBIN "gfx/misc/kanto.bin"
+INCBIN "gfx/pokegear/kanto.bin"
 ; 922d1
 
 PokedexNestIconGFX: ; 922d1
@@ -2991,7 +2984,7 @@
 
 ; XXX
 	xor a
-	ld [wd002], a
+	ld [wTownMapPlayerIconLandmark], a
 	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
@@ -3019,9 +3012,9 @@
 	call TownMapBGUpdate
 	call TownMapMon
 	ld a, c
-	ld [wd003], a
+	ld [wTownMapCursorCoordinates], a
 	ld a, b
-	ld [wd004], a
+	ld [wTownMapCursorCoordinates + 1], a
 	ld b, SCGB_POKEGEAR_PALS
 	call GetSGBLayout
 	call SetPalettes
@@ -3045,7 +3038,7 @@
 	jr .finished_a_b
 
 .pressedA
-	ld a, [wd002]
+	ld a, [wTownMapPlayerIconLandmark]
 	ld l, a
 	ld h, 0
 	add hl, hl
@@ -3053,7 +3046,7 @@
 	add hl, de
 	ld a, [hl]
 .finished_a_b
-	ld [wd002], a
+	ld [wTownMapPlayerIconLandmark], a
 	pop af
 	ld [hInMenu], a
 	call ClearBGPalettes
@@ -3063,7 +3056,7 @@
 	ld [hBGMapAddress], a
 	ld a, VBGMap0 / $100
 	ld [hBGMapAddress + 1], a
-	ld a, [wd002]
+	ld a, [wTownMapPlayerIconLandmark]
 	ld e, a
 	ret
 
@@ -3080,7 +3073,7 @@
 	ret
 
 .down_right
-	ld hl, wd002
+	ld hl, wTownMapPlayerIconLandmark
 	ld a, [hl]
 	cp FLY_INDIGO
 	jr c, .okay_dr
@@ -3090,7 +3083,7 @@
 	jr .continue
 
 .up_left
-	ld hl, wd002
+	ld hl, wTownMapPlayerIconLandmark
 	ld a, [hl]
 	and a
 	jr nz, .okay_ul
@@ -3098,7 +3091,7 @@
 .okay_ul
 	dec [hl]
 .continue
-	ld a, [wd002]
+	ld a, [wTownMapPlayerIconLandmark]
 	cp KANTO_FLYPOINT
 	jr c, .johto
 	call FillKantoMap
--- a/engine/printer/serial.asm
+++ b/engine/printer/serial.asm
@@ -292,13 +292,13 @@
 
 Printer_CopyPacket: ; 841e2 (21:41e2)
 	ld a, [hli]
-	ld [wca82], a
+	ld [wPrinterData], a
 	ld a, [hli]
-	ld [wca83], a
+	ld [wPrinterData + 1], a
 	ld a, [hli]
-	ld [wca84], a
+	ld [wPrinterData + 2], a
 	ld a, [hli]
-	ld [wca85], a
+	ld [wPrinterData + 3], a
 	ld a, [hli]
 	ld [wPrinterChecksum], a
 	ld a, [hl]
@@ -307,7 +307,7 @@
 
 Printer_ResetData: ; 841fb (21:41fb)
 	xor a
-	ld hl, wca82
+	ld hl, wPrinterData
 	ld [hli], a
 	ld [hli], a
 	ld [hli], a
@@ -326,7 +326,7 @@
 Printer_ComputeChecksum: ; 84219 (21:4219)
 	ld hl, 0
 	ld bc, 4
-	ld de, wca82
+	ld de, wPrinterData
 	call .ComputeChecksum
 	ld a, [wPrinterSendByteCounter]
 	ld c, a
@@ -476,10 +476,10 @@
 	dw Printer_DoNothing ; 00
 
 	dw Printer_Send0x33 ; 01
-	dw Printer_Sendwca82 ; 02
-	dw Printer_Sendwca83 ; 03
-	dw Printer_Sendwca84 ; 04
-	dw Printer_Sendwca85 ; 05
+	dw Printer_SendPrinterData1 ; 02
+	dw Printer_SendPrinterData2 ; 03
+	dw Printer_SendPrinterData3 ; 04
+	dw Printer_SendPrinterData4 ; 05
 	dw Printer_SendNextByte ; 06
 	dw Printer_SendwPrinterChecksumLo ; 07
 	dw Printer_SendwPrinterChecksumHi ; 08
@@ -524,26 +524,26 @@
 	call Printer_NextInstruction
 	ret
 
-Printer_Sendwca82: ; 84339 (21:4339)
-	ld a, [wca82]
+Printer_SendPrinterData1: ; 84339 (21:4339)
+	ld a, [wPrinterData]
 	call Printer_SerialSend
 	call Printer_NextInstruction
 	ret
 
-Printer_Sendwca83: ; 84343 (21:4343)
-	ld a, [wca83]
+Printer_SendPrinterData2: ; 84343 (21:4343)
+	ld a, [wPrinterData + 1]
 	call Printer_SerialSend
 	call Printer_NextInstruction
 	ret
 
-Printer_Sendwca84: ; 8434d (21:434d)
-	ld a, [wca84]
+Printer_SendPrinterData3: ; 8434d (21:434d)
+	ld a, [wPrinterData + 2]
 	call Printer_SerialSend
 	call Printer_NextInstruction
 	ret
 
-Printer_Sendwca85: ; 84357 (21:4357)
-	ld a, [wca85]
+Printer_SendPrinterData4: ; 84357 (21:4357)
+	ld a, [wPrinterData + 3]
 	call Printer_SerialSend
 	call Printer_NextInstruction
 	ret
--- a/engine/printnum.asm
+++ b/engine/printnum.asm
@@ -275,7 +275,7 @@
 	dec e
 	ret nz
 	inc hl
-	ld [hl], "·"
+	ld [hl], "<DOT>"
 	ret
 
 .PrintLeadingZero: ; c644
--- 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
@@ -1355,19 +1355,19 @@
 ;     param (DecimalParam)
 
 	ld hl, EarthquakeMovement
-	ld de, wd002
+	ld de, wEarthquakeMovementDataBuffer
 	ld bc, EarthquakeMovementEnd - EarthquakeMovement
 	call CopyBytes
 	call GetScriptByte
-	ld [wd003], a
-	and (1 << 6) - 1
-	ld [wd005], a
+	ld [wEarthquakeMovementDataBuffer + 1], a
+	and %00111111
+	ld [wEarthquakeMovementDataBuffer + 3], a
 	ld b, BANK(.script)
 	ld de, .script
 	jp ScriptCall
 
 .script
-	applymovement PLAYER, wd002
+	applymovement PLAYER, wEarthquakeMovementDataBuffer
 	end
 
 EarthquakeMovement:
@@ -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
@@ -2668,7 +2668,7 @@
 	call GetScriptByte
 	ld [YCoord], a
 	ld a, -1
-	ld [wd001], a
+	ld [DefaultSpawnpoint], a
 	ld a, MAPSETUP_WARP
 	ld [hMapEntryMethod], a
 	ld a, 1
@@ -2681,7 +2681,7 @@
 	call GetScriptByte
 	call GetScriptByte
 	ld a, -1
-	ld [wd001], a
+	ld [DefaultSpawnpoint], a
 	ld a, MAPSETUP_BADWARP
 	ld [hMapEntryMethod], a
 	ld a, 1
@@ -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/selectmenu.asm
+++ b/engine/selectmenu.asm
@@ -94,7 +94,7 @@
 	dec a
 	cp [hl]
 	jr nc, .NotEnoughItems
-	ld [wd107], a
+	ld [CurItemQuantity], a
 	and a
 	ret
 
--- 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
@@ -2211,17 +2211,17 @@
 ; 9335d
 
 SlotsTilemap: ; 9335d
-INCBIN "gfx/slots.tilemap"
+INCBIN "gfx/slots/slots.tilemap"
 ; 9344d
 
 Slots1LZ: ; 9344d
-INCBIN "gfx/slots_1.2bpp.lz"
+INCBIN "gfx/slots/slots_1.2bpp.lz"
 ; 935cd
 
 Slots2LZ: ; 935cd
-INCBIN "gfx/slots_2.2bpp.lz"
+INCBIN "gfx/slots/slots_2.2bpp.lz"
 ; 9382d
 
 Slots3LZ: ; 9382d
-INCBIN "gfx/slots_3.2bpp.lz"
+INCBIN "gfx/slots/slots_3.2bpp.lz"
 ; 93a3d
--- a/engine/spawn_points.asm
+++ b/engine/spawn_points.asm
@@ -42,17 +42,16 @@
 
 
 LoadSpawnPoint: ; 1531f
-	; loads the spawn point in wd001
+	; loads the spawn point in DefaultSpawnpoint
 	push hl
 	push de
-	ld a, [wd001]
+	ld a, [DefaultSpawnpoint]
 	cp SPAWN_N_A
 	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]
@@ -618,9 +618,9 @@
 
 Special_FadeOutMusic: ; c48f
 	ld a, MUSIC_NONE % $100
-	ld [MusicFadeIDLo], a
+	ld [MusicFadeID], a
 	ld a, MUSIC_NONE / $100
-	ld [MusicFadeIDHi], a
+	ld [MusicFadeID + 1], a
 	ld a, $2
 	ld [MusicFade], a
 	ret
--- 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/startmenu.asm
+++ b/engine/startmenu.asm
@@ -16,7 +16,7 @@
 
 	call LoadMenuDataHeader
 	call .SetUpMenuItems
-	ld a, [wd0d2]
+	ld a, [wBattleMenuCursorBuffer]
 	ld [wMenuCursorBuffer], a
 	call .DrawMenuAccount_
 	call DrawVariableLengthMenuBox
@@ -32,7 +32,7 @@
 	call UpdateSprites
 	call UpdateTimePals
 	call .SetUpMenuItems
-	ld a, [wd0d2]
+	ld a, [wBattleMenuCursorBuffer]
 	ld [wMenuCursorBuffer], a
 
 .Select:
@@ -40,7 +40,7 @@
 	jr c, .Exit
 	call .DrawMenuAccount
 	ld a, [wMenuCursorBuffer]
-	ld [wd0d2], a
+	ld [wBattleMenuCursorBuffer], a
 	call PlayClickSFX
 	call PlaceHollowCursor
 	call .OpenMenu
@@ -614,7 +614,7 @@
 	pop af
 	jr c, .quit
 	pop hl
-	ld a, [wd107]
+	ld a, [CurItemQuantity]
 	call TossItem
 	call PartyMonItemName
 	ld hl, .TossedThisMany
--- a/engine/stats_screen.asm
+++ b/engine/stats_screen.asm
@@ -3,7 +3,7 @@
 	cp LINK_MOBILE
 	jr nz, StatsScreenInit
 
-	ld a, [wBattleMode] ; wd22d (aliases: EnemyMonEnd)
+	ld a, [wBattleMode]
 	and a
 	jr z, StatsScreenInit
 	jr _MobileStatsScreenInit
@@ -377,7 +377,7 @@
 	call .PlaceHPBar
 	xor a
 	ld [hBGMapMode], a
-	ld a, [CurBaseData] ; wd236 (aliases: BaseDexNo)
+	ld a, [CurBaseData]
 	ld [wd265], a
 	ld [CurSpecies], a
 	hlcoord 8, 0
@@ -401,7 +401,7 @@
 	hlcoord 9, 4
 	ld a, "/"
 	ld [hli], a
-	ld a, [CurBaseData] ; wd236 (aliases: BaseDexNo)
+	ld a, [CurBaseData]
 	ld [wd265], a
 	call GetPokemonName
 	call PlaceString
@@ -420,7 +420,7 @@
 	ld d, a
 	ld e, [hl]
 	callba ComputeHPBarPixels
-	ld hl, wcda1
+	ld hl, wCurHPPal
 	call SetHPPal
 	ld b, SCGB_STATS_SCREEN_HP_PALS
 	call GetSGBLayout
@@ -453,7 +453,7 @@
 	ld bc, SCREEN_WIDTH
 	ld d, SCREEN_HEIGHT
 .loop
-	ld a, $31
+	ld a, "|"
 	ld [hl], a
 	add hl, bc
 	dec d
@@ -487,7 +487,7 @@
 	ret
 
 StatsScreen_LoadGFX: ; 4dfb6 (13:5fb6)
-	ld a, [BaseDexNo] ; wd236 (aliases: BaseDexNo)
+	ld a, [BaseDexNo]
 	ld [wd265], a
 	ld [CurSpecies], a
 	xor a
@@ -583,7 +583,7 @@
 	hlcoord 9, 8
 	ld de, SCREEN_WIDTH
 	ld b, 10
-	ld a, $31
+	ld a, "|"
 .vertical_divider
 	ld [hl], a
 	add hl, de
@@ -601,7 +601,7 @@
 	call .CalcExpToNextLevel
 	hlcoord 13, 13
 	lb bc, 3, 7
-	ld de, Buffer1 ; wd1ea (aliases: MagikarpLength)
+	ld de, Buffer1
 	call PrintNum
 	ld de, .LevelUpStr
 	hlcoord 10, 12
@@ -649,14 +649,14 @@
 	ld a, [hQuotient + 1]
 	sbc [hl]
 	dec hl
-	ld [Buffer2], a ; wd1eb (aliases: MovementType)
+	ld [Buffer2], a
 	ld a, [hQuotient]
 	sbc [hl]
-	ld [Buffer1], a ; wd1ea (aliases: MagikarpLength)
+	ld [Buffer1], a
 	ret
 
 .AlreadyAtMaxLevel:
-	ld hl, Buffer1 ; wd1ea (aliases: MagikarpLength)
+	ld hl, Buffer1
 	xor a
 	ld [hli], a
 	ld [hli], a
@@ -743,7 +743,7 @@
 	hlcoord 10, 8
 	ld de, SCREEN_WIDTH
 	ld b, 10
-	ld a, $31
+	ld a, "|"
 .BluePageVerticalDivider:
 	ld [hl], a
 	add hl, de
@@ -891,7 +891,7 @@
 
 .PartyMon: ; 4e2bf (13:62bf)
 	ld a, [CurPartyMon]
-	ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species)
+	ld hl, PartyMon1
 	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld b, h
@@ -918,7 +918,7 @@
 	ret
 
 .Tempmon: ; 4e2ed (13:62ed)
-	ld bc, TempMonSpecies ; wd10e (aliases: TempMon)
+	ld bc, TempMonSpecies
 	jr .CheckEggFaintedFrzSlp ; utterly pointless
 
 .CheckEggFaintedFrzSlp: ; 4e2f2 (13:62f2)
@@ -973,7 +973,7 @@
 EggStatsScreen: ; 4e33a
 	xor a
 	ld [hBGMapMode], a
-	ld hl, wcda1
+	ld hl, wCurHPPal
 	call SetHPPal
 	ld b, SCGB_STATS_SCREEN_HP_PALS
 	call GetSGBLayout
--- a/engine/timeset.asm
+++ b/engine/timeset.asm
@@ -10,9 +10,9 @@
 	ld a, $10
 	ld [MusicFade], a
 	ld a, MUSIC_NONE % $100
-	ld [MusicFadeIDLo], a
+	ld [MusicFadeID], a
 	ld a, MUSIC_NONE / $100
-	ld [MusicFadeIDHi], a
+	ld [MusicFadeID + 1], a
 	ld c, 8
 	call DelayFrames
 	call RotateFourPalettesLeft
@@ -23,17 +23,17 @@
 	xor a
 	ld [hBGMapMode], a
 	call LoadStandardFont
-	ld de, GFX_908fb
+	ld de, TimeSetBackgroundGFX
 	ld hl, VTiles2 tile $00
-	lb bc, BANK(GFX_908fb), 1
+	lb bc, BANK(TimeSetBackgroundGFX), 1
 	call Request1bpp
-	ld de, GFX_90903
+	ld de, TimeSetUpArrowGFX
 	ld hl, VTiles2 tile $01
-	lb bc, BANK(GFX_90903), 1
+	lb bc, BANK(TimeSetUpArrowGFX), 1
 	call Request1bpp
-	ld de, GFX_9090b
+	ld de, TimeSetDownArrowGFX
 	ld hl, VTiles2 tile $02
-	lb bc, BANK(GFX_9090b), 1
+	lb bc, BANK(TimeSetDownArrowGFX), 1
 	call Request1bpp
 	call .ClearScreen
 	call WaitBGMap
@@ -396,12 +396,12 @@
 	db "@"
 ; 0x908fb
 
-GFX_908fb: ; 908fb
-INCBIN "gfx/unknown/0908fb.1bpp"
-GFX_90903: ; 90903
-INCBIN "gfx/unknown/090903.1bpp"
-GFX_9090b: ; 9090b
-INCBIN "gfx/unknown/09090b.1bpp"
+TimeSetBackgroundGFX: ; 908fb
+INCBIN "gfx/timeset/background.1bpp"
+TimeSetUpArrowGFX: ; 90903
+INCBIN "gfx/timeset/up_arrow.1bpp"
+TimeSetDownArrowGFX: ; 9090b
+INCBIN "gfx/timeset/down_arrow.1bpp"
 ; 90913
 
 Special_SetDayOfWeek: ; 90913
@@ -409,13 +409,13 @@
 	push af
 	ld a, $1
 	ld [hInMenu], a
-	ld de, GFX_90903
+	ld de, TimeSetUpArrowGFX
 	ld hl, VTiles1 tile $6f
-	lb bc, BANK(GFX_90903), 1
+	lb bc, BANK(TimeSetUpArrowGFX), 1
 	call Request1bpp
-	ld de, GFX_9090b
+	ld de, TimeSetDownArrowGFX
 	ld hl, VTiles1 tile $75
-	lb bc, BANK(GFX_9090b), 1
+	lb bc, BANK(TimeSetDownArrowGFX), 1
 	call Request1bpp
 	xor a
 	ld [wTempDayOfWeek], a
--- a/engine/title.asm
+++ b/engine/title.asm
@@ -10,10 +10,10 @@
 
 ; Reset timing variables
 	ld hl, wJumptableIndex
-	ld [hli], a ; cf63 ; Scene?
-	ld [hli], a ; cf64
-	ld [hli], a ; cf65 ; Timer lo
-	ld [hl], a  ; cf66 ; Timer hi
+	ld [hli], a ; wJumptableIndex
+	ld [hli], a ; wIntroSceneFrameCounter
+	ld [hli], a ; wTitleScreenTimer
+	ld [hl], a  ; wTitleScreenTimer + 1
 
 ; Turn LCD off
 	call DisableLCD
@@ -145,12 +145,12 @@
 ; Update palette colors
 	ld hl, TitleScreenPalettes
 	ld de, UnknBGPals
-	ld bc, 4 * 32
+	ld bc, 16 palettes
 	call CopyBytes
 
 	ld hl, TitleScreenPalettes
 	ld de, BGPals
-	ld bc, 4 * 32
+	ld bc, 16 palettes
 	call CopyBytes
 
 ; Restore WRAM bank
--- a/engine/trade/animation.asm
+++ b/engine/trade/animation.asm
@@ -100,7 +100,7 @@
 	tradeanim_end
 
 RunTradeAnimScript: ; 28fa1
-	ld hl, wTradeAnimPointer
+	ld hl, wTradeAnimAddress
 	ld [hl], e
 	inc hl
 	ld [hl], d
@@ -294,7 +294,7 @@
 ; 29114
 
 TradeAnim_AdvanceScriptPointer: ; 29114
-	ld hl, wTradeAnimPointer
+	ld hl, wTradeAnimAddress
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -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/trainer_card.asm
+++ b/engine/trainer_card.asm
@@ -448,7 +448,7 @@
 	ret nz
 	hlcoord 15, 12
 	ld a, [hl]
-	xor %01010001 ; $7F <--> $2E
+	xor %01010001 ; $7F (space) <--> $2E (colon)
 	ld [hl], a
 	ret
 
@@ -606,11 +606,11 @@
 	db $1c | $80, $20, $24, $20 | $80
 ; 25523
 
-CardStatusGFX: INCBIN "gfx/misc/card_status.2bpp"
+CardStatusGFX: INCBIN "gfx/trainer_card/card_status.2bpp"
 
-LeaderGFX:  INCBIN "gfx/misc/leaders.2bpp"
-LeaderGFX2: INCBIN "gfx/misc/leaders.2bpp"
-BadgeGFX:   INCBIN "gfx/misc/badges.2bpp"
-BadgeGFX2:  INCBIN "gfx/misc/badges.2bpp"
+LeaderGFX:  INCBIN "gfx/trainer_card/leaders.2bpp"
+LeaderGFX2: INCBIN "gfx/trainer_card/leaders.2bpp"
+BadgeGFX:   INCBIN "gfx/trainer_card/badges.2bpp"
+BadgeGFX2:  INCBIN "gfx/trainer_card/badges.2bpp"
 
-CardRightCornerGFX: INCBIN "gfx/misc/card_right_corner.2bpp"
+CardRightCornerGFX: INCBIN "gfx/trainer_card/card_right_corner.2bpp"
--- a/engine/unowndex.asm
+++ b/engine/unowndex.asm
@@ -1,7 +1,7 @@
 UpdateUnownDex: ; fba18
 	ld a, [UnownLetter]
 	ld c, a
-	ld b, 26
+	ld b, NUM_UNOWN
 	ld hl, UnownDex
 .loop
 	ld a, [hli]
--- 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/warp_connection.asm
+++ b/engine/warp_connection.asm
@@ -184,7 +184,7 @@
 	ret z
 .not_mt_moon_or_tin_tower
 	ld a, [wPrevWarp]
-	ld [wDigWarp], a
+	ld [wDigWarpNumber], a
 	ld a, [wPrevMapGroup]
 	ld [wDigMapGroup], a
 	ld a, [wPrevMapNumber]
@@ -254,7 +254,7 @@
 	pop af
 	ld [rVBK], a
 
-	ld a, $60
+	ld a, "<BLACK>"
 	ld bc, VBGMap1 - VBGMap0
 	hlbgcoord 0, 0
 	call ByteFill
--- 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/elevator.asm
+++ b/event/elevator.asm
@@ -21,9 +21,9 @@
 	ld a, b
 	ld [wElevatorPointerBank], a
 	ld a, e
-	ld [wElevatorPointerLo], a
+	ld [wElevatorPointer], a
 	ld a, d
-	ld [wElevatorPointerHi], a
+	ld [wElevatorPointer + 1], a
 	call .LoadFloors
 	ret
 ; 1345a
@@ -31,7 +31,7 @@
 .LoadFloors: ; 1345a
 	ld de, CurElevator
 	ld bc, 4
-	ld hl, wElevatorPointerLo
+	ld hl, wElevatorPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -52,7 +52,7 @@
 ; 1347d
 
 .FindCurrentFloor: ; 1347d
-	ld hl, wElevatorPointerLo
+	ld hl, wElevatorPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -102,7 +102,7 @@
 
 Elevator_GoToFloor: ; 134c0
 	push af
-	ld hl, wElevatorPointerLo
+	ld hl, wElevatorPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
--- 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
@@ -75,7 +75,7 @@
 ; 8c893
 
 HeadbuttTreeGFX: ; 8c893
-INCBIN "gfx/overworld/headbutt_tree.2bpp"
+INCBIN "gfx/ow_fx/headbutt_tree.2bpp"
 ; 8c913
 
 HideHeadbuttTree: ; 8c913
@@ -152,11 +152,11 @@
 ; 8c98c
 
 CutTreeGFX: ; c898c
-INCBIN "gfx/misc/cut_tree.2bpp"
+INCBIN "gfx/ow_fx/cut_tree.2bpp"
 ; c89cc
 
 CutGrassGFX: ; 8c9cc
-INCBIN "gfx/misc/cut_grass.2bpp"
+INCBIN "gfx/ow_fx/cut_grass.2bpp"
 ; 8ca0c
 
 OWCutJumptable: ; 8ca0c
--- a/event/halloffame.asm
+++ b/event/halloffame.asm
@@ -1,3 +1,5 @@
+HALLOFFAME_COLON EQU $63
+
 HallOfFame:: ; 0x8640e
 	call HallOfFame_FadeOutMusic
 	ld a, [StatusFlags]
@@ -35,9 +37,9 @@
 
 RedCredits:: ; 86455
 	ld a, MUSIC_NONE % $100
-	ld [MusicFadeIDLo], a
+	ld [MusicFadeID], a
 	ld a, MUSIC_NONE / $100
-	ld [MusicFadeIDHi], a
+	ld [MusicFadeID + 1], a
 	ld a, 10
 	ld [MusicFade], a
 	callba FadeOutPalettes
@@ -58,9 +60,9 @@
 
 HallOfFame_FadeOutMusic: ; 8648e
 	ld a, MUSIC_NONE % $100
-	ld [MusicFadeIDLo], a
+	ld [MusicFadeID], a
 	ld a, MUSIC_NONE / $100
-	ld [MusicFadeIDHi], a
+	ld [MusicFadeID + 1], a
 	ld a, 10
 	ld [MusicFade], a
 	callba FadeOutPalettes
@@ -487,7 +489,7 @@
 	hlcoord 1, 13
 	ld a, "№"
 	ld [hli], a
-	ld [hl], "·"
+	ld [hl], "<DOT>"
 	hlcoord 3, 13
 	ld de, wd265
 	lb bc, PRINTNUM_LEADINGZEROS | 1, 3
@@ -531,8 +533,8 @@
 
 HOF_AnimatePlayerPic: ; 86810
 	call ClearBGPalettes
-	ld hl, VTiles2 tile $63
-	ld de, FontExtra + 13 tiles
+	ld hl, VTiles2 tile HALLOFFAME_COLON
+	ld de, FontExtra + 13 tiles ; "<COLON>"
 	lb bc, BANK(FontExtra), 1
 	call Request2bpp
 	hlcoord 0, 0
@@ -604,7 +606,7 @@
 	ld de, GameTimeHours
 	lb bc, 2, 3
 	call PrintNum
-	ld [hl], 99
+	ld [hl], HALLOFFAME_COLON
 	inc hl
 	ld de, GameTimeMinutes
 	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
--- a/event/magikarp.asm
+++ b/event/magikarp.asm
@@ -33,7 +33,7 @@
 	call PrintText
 
 	; Did we beat the record?
-	ld hl, Buffer1
+	ld hl, wMagikarpLength
 	ld de, wBestMagikarpLengthFeet
 	ld c, 2
 	call StringCmp
@@ -40,7 +40,7 @@
 	jr nc, .not_long_enough
 
 	; NEW RECORD!!! Let's save that.
-	ld hl, Buffer1
+	ld hl, wMagikarpLength
 	ld de, wBestMagikarpLengthFeet
 	ld a, [hli]
 	ld [de], a
@@ -79,7 +79,7 @@
 ; 0xfbbae
 
 Magikarp_LoadFeetInchesChars: ; fbbae
-	ld hl, VTiles2 tile "′"
+	ld hl, VTiles2 tile "′" ; $6e
 	ld de, .feetinchchars
 	lb bc, BANK(.feetinchchars), 2
 	call Request2bpp
@@ -87,18 +87,18 @@
 ; fbbbb
 
 .feetinchchars ; fbbb
-INCBIN "gfx/unknown/0fbbbb.2bpp"
+INCBIN "gfx/font/feet_inches.2bpp"
 ; fbbdb
 
 PrintMagikarpLength: ; fbbdb
 	call Magikarp_LoadFeetInchesChars
 	ld hl, StringBuffer1
-	ld de, Buffer1
+	ld de, wMagikarpLength
 	lb bc, PRINTNUM_RIGHTALIGN | 1, 2
 	call PrintNum
 	ld [hl], "′"
 	inc hl
-	ld de, Buffer2
+	ld de, wMagikarpLength + 1
 	lb bc, PRINTNUM_RIGHTALIGN | 1, 2
 	call PrintNum
 	ld [hl], "″"
@@ -108,7 +108,7 @@
 ; fbbfc
 
 CalcMagikarpLength: ; fbbfc
-; Return Magikarp's length (in mm) at MagikarpLength (big endian).
+; Return Magikarp's length (in mm) at wMagikarpLength (big endian).
 ;
 ; input:
 ;   de: EnemyMonDVs
@@ -125,9 +125,9 @@
 
 ; bc = rrc(dv[0]) ++ rrc(dv[1]) ^ rrc(id)
 
-; if bc < 10:    [MagikarpLength] = c + 190
-; if bc ≥ $ff00: [MagikarpLength] = c + 1370
-; else:          [MagikarpLength] = z × 100 + (bc − x) / y
+; if bc < 10:    [wMagikarpLength] = c + 190
+; if bc ≥ $ff00: [wMagikarpLength] = c + 1370
+; else:          [wMagikarpLength] = z × 100 + (bc − x) / y
 
 ; X, Y, and Z depend on the value of b as follows:
 
@@ -274,7 +274,7 @@
 .ok
 	ld e, a
 
-	ld hl, MagikarpLength
+	ld hl, wMagikarpLength
 	ld [hl], d
 	inc hl
 	ld [hl], e
@@ -326,9 +326,9 @@
 
 Special_MagikarpHouseSign: ; fbcd2
 	ld a, [wBestMagikarpLengthFeet]
-	ld [Buffer1], a
+	ld [wMagikarpLength], a
 	ld a, [wBestMagikarpLengthInches]
-	ld [Buffer2], a
+	ld [wMagikarpLength + 1], a
 	call PrintMagikarpLength
 	ld hl, .CurrentRecordtext
 	call PrintText
--- 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/event/overworld.asm
+++ b/event/overworld.asm
@@ -77,9 +77,9 @@
 	ld a, [hl]
 	and a
 	jr z, .no
-	cp a, -1
+	cp -1
 	jr z, .no
-	cp a, EGG
+	cp EGG
 	jr z, .next
 
 	ld bc, PARTYMON_STRUCT_LENGTH
@@ -432,7 +432,7 @@
 
 .DoSurf: ; c95f (3:495f)
 	call GetSurfType
-	ld [Buffer2], a ; wd1eb (aliases: MovementType)
+	ld [Buffer2], a
 	call GetPartyNick
 	ld hl, SurfFromMenuScript
 	call QueueScript
@@ -510,7 +510,7 @@
 
 ; Get player direction
 	ld a, [PlayerDirection]
-	and a, %00001100 ; bits 2 and 3 contain direction
+	and %00001100 ; bits 2 and 3 contain direction
 	rrca
 	rrca
 	ld e, a
@@ -569,7 +569,7 @@
 	jr nz, .quit
 
 	call GetSurfType
-	ld [MovementType], a
+	ld [Buffer2], a
 	call GetPartyNick
 
 	ld a, BANK(AskSurfScript)
@@ -632,7 +632,7 @@
 	cp NUM_SPAWNS
 	jr nc, .illegal
 
-	ld [wd001], a
+	ld [DefaultSpawnpoint], a
 	call CloseWindow
 	ld a, $1
 	ret
@@ -837,7 +837,7 @@
 	ret
 
 .incave
-	ld hl, wDigWarp
+	ld hl, wDigWarpNumber
 	ld a, [hli]
 	and a
 	jr z, .fail
@@ -851,7 +851,7 @@
 	ret
 
 .DoDig: ; cbd8
-	ld hl, wDigWarp
+	ld hl, wDigWarpNumber
 	ld de, wNextWarp
 	ld bc, 3
 	call CopyBytes
@@ -962,7 +962,7 @@
 	callba IsSpawnPoint
 	jr nc, .nope
 	ld a, c
-	ld [wd001], a
+	ld [DefaultSpawnpoint], a
 	ld a, $1
 	ret
 
--- a/event/whiteout.asm
+++ b/event/whiteout.asm
@@ -77,6 +77,6 @@
 	xor a ; SPAWN_HOME
 
 .yes
-	ld [wd001], a
+	ld [DefaultSpawnpoint], a
 	ret
 ; 1253d
--- 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)
binary files /dev/null b/gfx/battle/dude.2bpp.lz.d13fb490 differ
binary files /dev/null b/gfx/battle/dude.png differ
binary files /dev/null b/gfx/card_flip/card_flip_1.2bpp.lz.86f267e8 differ
binary files /dev/null b/gfx/card_flip/card_flip_1.png differ
binary files /dev/null b/gfx/card_flip/card_flip_2.2bpp.lz.6a6c671d differ
binary files /dev/null b/gfx/card_flip/card_flip_2.png differ
binary files /dev/null b/gfx/card_flip/card_flip_3.2bpp.lz.53679db7 differ
binary files /dev/null b/gfx/card_flip/card_flip_3.png differ
binary files /dev/null b/gfx/card_flip/off.png differ
binary files /dev/null b/gfx/card_flip/on.png differ
binary files /dev/null b/gfx/diploma/diploma.2bpp.lz.7b56f7e5 differ
binary files /dev/null b/gfx/diploma/diploma.png differ
binary files /dev/null b/gfx/diploma/page1.tilemap differ
binary files /dev/null b/gfx/diploma/page2.tilemap differ
binary files /dev/null b/gfx/dummy_game/dummy_game.2bpp.lz.821ba441 differ
binary files /dev/null b/gfx/dummy_game/dummy_game.png differ
binary files /dev/null b/gfx/evo/egg_hatch.png differ
--- a/gfx/font.asm
+++ b/gfx/font.asm
@@ -1,11 +1,11 @@
 FontExtra:
-INCBIN "gfx/misc/font_extra.2bpp"
+INCBIN "gfx/font/font_extra.2bpp"
 
 Font:
-INCBIN "gfx/misc/font.1bpp"
+INCBIN "gfx/font/font.1bpp"
 
 FontBattleExtra:
-INCBIN "gfx/misc/font_battle_extra.2bpp"
+INCBIN "gfx/font/font_battle_extra.2bpp"
 
 Frames: ; f8800
 INCBIN "gfx/frames/1.1bpp"
@@ -19,19 +19,19 @@
 INCBIN "gfx/frames/9.1bpp"
 ; f89b0
 
-; TODO: Various misc graphics here.
+; Various misc graphics here.
 
 StatsScreenPageTilesGFX: ; f89b0
-INCBIN "gfx/unknown/0f89b0.2bpp"
+INCBIN "gfx/stats/stats_tiles.2bpp"
 ; f8a90
 
-ShinyIcon: ; f8a90
+ShinyIconGFX: ; f8a90
 ; also part of StatsScreenPageTilesGFX
 INCBIN "gfx/stats/shiny.2bpp"
 
-StatsScreenPageTilesGFX_Part2: ; f8aa0
+ExpBarEndsGFX: ; f8aa0
 ; not referenced on its own, but part of StatsScreenPageTilesGFX
-INCBIN "gfx/unknown/0f8aa0.2bpp"
+INCBIN "gfx/stats/exp_bar_ends.2bpp"
 ; f8ac0
 
 EnemyHPBarBorderGFX: ; f8ac0
@@ -47,7 +47,7 @@
 ; f8ba0
 
 TownMapGFX: ; f8ba0
-INCBIN "gfx/misc/town_map.2bpp.lz"
+INCBIN "gfx/pokegear/town_map.2bpp.lz"
 ; f8ea4
 
 WeekdayKanjiGFX: ; unused kanji
@@ -75,11 +75,11 @@
 ; f9424
 
 FontsExtra2_UpArrowGFX: ; f9424
-INCBIN "gfx/unknown/0f9424.2bpp"
+INCBIN "gfx/font/up_arrow.2bpp"
 ; f9434
 
 Footprints: ; f9434
-INCBIN "gfx/misc/footprints.1bpp"
+INCBIN "gfx/pokedex/footprints.1bpp"
 ; fb434
 
 ; This and the following two functions are unreferenced.
@@ -131,11 +131,11 @@
 
 _LoadFontsExtra1:: ; fb48a
 	ld de, MobilePhoneTilesGFX
-	ld hl, VTiles2 tile $60
+	ld hl, VTiles2 tile "<BLACK>" ; $60
 	lb bc, BANK(MobilePhoneTilesGFX), 1
 	call Get1bpp_2
 	ld de, OverworldPhoneIconGFX
-	ld hl, VTiles2 tile $62
+	ld hl, VTiles2 tile "<PHONE>" ; $62
 	lb bc, BANK(OverworldPhoneIconGFX), 1
 	call Get2bpp_2
 	ld de, FontExtra + 3 * LEN_2BPP_TILE
@@ -147,7 +147,7 @@
 
 _LoadFontsExtra2:: ; fb4b0
 	ld de, FontsExtra2_UpArrowGFX
-	ld hl, VTiles2 tile $61
+	ld hl, VTiles2 tile "▲" ; $61
 	ld b, BANK(FontsExtra2_UpArrowGFX)
 	ld c, 1
 	call Get2bpp_2
@@ -170,10 +170,10 @@
 	call AddNTimes
 	ld d, h
 	ld e, l
-	ld hl, VTiles2 tile $79
+	ld hl, VTiles2 tile "┌" ; $79
 	lb bc, BANK(Frames), TILES_PER_FRAME
 	call Get1bpp_2
-	ld hl, VTiles2 tile $7f
+	ld hl, VTiles2 tile " " ; $7f
 	ld de, TextBoxSpaceGFX
 	lb bc, BANK(TextBoxSpaceGFX), 1
 	call Get1bpp_2
@@ -186,7 +186,7 @@
 	lb bc, BANK(FontBattleExtra), $c
 	call Get2bpp_2
 	ld hl, VTiles2 tile $70
-	ld de, FontBattleExtra + $10 * LEN_2BPP_TILE
+	ld de, FontBattleExtra tile $10
 	lb bc, BANK(FontBattleExtra), 3
 	call Get2bpp_2
 	call LoadFrame
binary files /dev/null b/gfx/font/feet_inches.png differ
binary files /dev/null b/gfx/font/font.png differ
binary files /dev/null b/gfx/font/font_battle_extra.png differ
binary files /dev/null b/gfx/font/font_extra.png differ
binary files /dev/null b/gfx/font/font_inversed.png differ
binary files /dev/null b/gfx/font/unown_font.png differ
binary files /dev/null b/gfx/font/up_arrow.png differ
--- a/gfx/load_pics.asm
+++ b/gfx/load_pics.asm
@@ -83,14 +83,14 @@
 	ld b, a
 	push bc
 	call GetFrontpicPointer
-	ld a, BANK(wDecompressScratch)
+	ld a, BANK(wDecompressEnemyFrontpic)
 	ld [rSVBK], a
 	ld a, b
-	ld de, wDecompressScratch + $800
+	ld de, wDecompressEnemyFrontpic
 	call FarDecompress
 	pop bc
 	ld hl, wDecompressScratch
-	ld de, wDecompressScratch + $800
+	ld de, wDecompressEnemyFrontpic
 	call PadFrontpic
 	pop hl
 	push hl
@@ -149,15 +149,15 @@
 	call GetFarWRAMByte
 	pop hl
 	and $f
-	ld de, w6_d800 + 5 * 5 tiles
+	ld de, wDecompressEnemyFrontpic + 5 * 5 tiles
 	ld c, 5 * 5
 	cp 5
 	jr z, .got_dims
-	ld de, w6_d800 + 6 * 6 tiles
+	ld de, wDecompressEnemyFrontpic + 6 * 6 tiles
 	ld c, 6 * 6
 	cp 6
 	jr z, .got_dims
-	ld de, w6_d800 + 7 * 7 tiles
+	ld de, wDecompressEnemyFrontpic + 7 * 7 tiles
 	ld c, 7 * 7
 .got_dims
 
binary files a/gfx/misc/badges.png /dev/null differ
binary files a/gfx/misc/boulderdust.png /dev/null differ
binary files a/gfx/misc/card_right_corner.png /dev/null differ
binary files a/gfx/misc/card_status.png /dev/null differ
binary files a/gfx/misc/chris.png /dev/null differ
binary files a/gfx/misc/chris_card.png /dev/null differ
binary files a/gfx/misc/copyright.png /dev/null differ
binary files a/gfx/misc/cut_grass.png /dev/null differ
binary files a/gfx/misc/cut_tree.png /dev/null differ
binary files a/gfx/misc/dude.2bpp.lz.d13fb490 /dev/null differ
binary files a/gfx/misc/dude.png /dev/null differ
binary files a/gfx/misc/fast_ship.png /dev/null differ
binary files a/gfx/misc/fishing2.png /dev/null differ
binary files a/gfx/misc/fishing4.png /dev/null differ
binary files a/gfx/misc/font.png /dev/null differ
binary files a/gfx/misc/font_battle_extra.png /dev/null differ
binary files a/gfx/misc/font_extra.png /dev/null differ
binary files a/gfx/misc/font_inversed.png /dev/null differ
binary files a/gfx/misc/footprints.png /dev/null differ
binary files a/gfx/misc/johto.bin /dev/null differ
binary files a/gfx/misc/kanto.bin /dev/null differ
binary files a/gfx/misc/kris.png /dev/null differ
binary files a/gfx/misc/kris_back.png /dev/null differ
binary files a/gfx/misc/kris_card.png /dev/null differ
binary files a/gfx/misc/leaders.png /dev/null differ
binary files a/gfx/misc/pack.png /dev/null differ
binary files a/gfx/misc/pack_f.png /dev/null differ
binary files a/gfx/misc/pack_menu.png /dev/null differ
binary files a/gfx/misc/player.2bpp.lz.0312ddce /dev/null differ
binary files a/gfx/misc/player.png /dev/null differ
binary files a/gfx/misc/pokegear.2bpp.lz.42315ab4 /dev/null differ
binary files a/gfx/misc/pokegear.png /dev/null differ
binary files a/gfx/misc/pokegear_sprites.2bpp.lz.7a3cc91f /dev/null differ
binary files a/gfx/misc/pokegear_sprites.png /dev/null differ
binary files a/gfx/misc/shadow.png /dev/null differ
binary files a/gfx/misc/town_map.2bpp.lz.c0587c86 /dev/null differ
binary files a/gfx/misc/town_map.png /dev/null differ
binary files a/gfx/misc/trainer_card.png /dev/null differ
binary files a/gfx/misc/unown_font.png /dev/null differ
binary files /dev/null b/gfx/namingscreen/border.png differ
binary files /dev/null b/gfx/namingscreen/cursor.png differ
binary files /dev/null b/gfx/namingscreen/end.png differ
binary files /dev/null b/gfx/namingscreen/middle_line.png differ
binary files /dev/null b/gfx/namingscreen/underline.png differ
binary files a/gfx/overworld/chris_fish.png /dev/null differ
binary files a/gfx/overworld/headbutt_tree.png /dev/null differ
binary files a/gfx/overworld/kris_fish.png /dev/null differ
binary files a/gfx/overworld/trainer_battle_pokeball_tiles.png /dev/null differ
binary files /dev/null b/gfx/ow_fx/boulder_dust.png differ
binary files /dev/null b/gfx/ow_fx/chris_fish.png differ
binary files /dev/null b/gfx/ow_fx/cut_grass.png differ
binary files /dev/null b/gfx/ow_fx/cut_tree.png differ
binary files /dev/null b/gfx/ow_fx/fishing_rod.png differ
binary files /dev/null b/gfx/ow_fx/grass_rustle.png differ
binary files /dev/null b/gfx/ow_fx/headbutt_tree.png differ
binary files /dev/null b/gfx/ow_fx/heal_machine.png differ
binary files /dev/null b/gfx/ow_fx/kris_fish.png differ
binary files /dev/null b/gfx/ow_fx/shadow.png differ
binary files /dev/null b/gfx/ow_fx/trainer_battle_pokeball_tiles.png differ
binary files /dev/null b/gfx/pack/pack.png differ
binary files /dev/null b/gfx/pack/pack_f.png differ
binary files /dev/null b/gfx/pack/pack_menu.png differ
binary files a/gfx/pc.2bpp.lz.2201c1aa /dev/null differ
binary files a/gfx/pc.png /dev/null differ
binary files /dev/null b/gfx/pc/pc.2bpp.lz.2201c1aa differ
binary files /dev/null b/gfx/pc/pc.png differ
binary files /dev/null b/gfx/pc/pc_mail.png differ
binary files a/gfx/pc_mail.png /dev/null differ
binary files /dev/null b/gfx/player/chris.png differ
binary files /dev/null b/gfx/player/chris_back.2bpp.lz.0312ddce differ
binary files /dev/null b/gfx/player/chris_back.png differ
binary files /dev/null b/gfx/player/kris.png differ
binary files /dev/null b/gfx/player/kris_back.png differ
binary files /dev/null b/gfx/pokedex/footprints.png differ
--- /dev/null
+++ b/gfx/pokegear/dexmap_nest_icon.2bpp
@@ -1,0 +1,1 @@
+BBff��������ZZ$$
\ No newline at end of file
binary files /dev/null b/gfx/pokegear/fast_ship.png differ
binary files /dev/null b/gfx/pokegear/flymap_label_border.1bpp differ
binary files /dev/null b/gfx/pokegear/johto.bin differ
binary files /dev/null b/gfx/pokegear/kanto.bin differ
binary files /dev/null b/gfx/pokegear/pokegear.2bpp.lz.42315ab4 differ
binary files /dev/null b/gfx/pokegear/pokegear.png differ
binary files /dev/null b/gfx/pokegear/pokegear_sprites.2bpp.lz.7a3cc91f differ
binary files /dev/null b/gfx/pokegear/pokegear_sprites.png differ
binary files /dev/null b/gfx/pokegear/town_map.2bpp.lz.c0587c86 differ
binary files /dev/null b/gfx/pokegear/town_map.png differ
binary files /dev/null b/gfx/shrink/shrink1.2bpp.lz.d4443930 differ
binary files /dev/null b/gfx/shrink/shrink1.png differ
binary files /dev/null b/gfx/shrink/shrink2.2bpp.lz.3f58480a differ
binary files /dev/null b/gfx/shrink/shrink2.png differ
binary files a/gfx/shrink1.2bpp.lz.d4443930 /dev/null differ
binary files a/gfx/shrink1.png /dev/null differ
binary files a/gfx/shrink2.2bpp.lz.3f58480a /dev/null differ
binary files a/gfx/shrink2.png /dev/null differ
binary files a/gfx/slots.tilemap /dev/null differ
binary files /dev/null b/gfx/slots/slots.tilemap differ
binary files /dev/null b/gfx/slots/slots_1.2bpp.lz.b22ddc13 differ
binary files /dev/null b/gfx/slots/slots_1.png differ
binary files /dev/null b/gfx/slots/slots_2.2bpp.lz.b28f76e3 differ
binary files /dev/null b/gfx/slots/slots_2.png differ
binary files /dev/null b/gfx/slots/slots_3.2bpp.lz.70c2984c differ
binary files /dev/null b/gfx/slots/slots_3.png differ
binary files a/gfx/slots_1.2bpp.lz.b22ddc13 /dev/null differ
binary files a/gfx/slots_1.png /dev/null differ
binary files a/gfx/slots_2.2bpp.lz.b28f76e3 /dev/null differ
binary files a/gfx/slots_2.png /dev/null differ
binary files a/gfx/slots_3.2bpp.lz.70c2984c /dev/null differ
binary files a/gfx/slots_3.png /dev/null differ
binary files /dev/null b/gfx/splash/copyright.png differ
binary files /dev/null b/gfx/stats/exp_bar_ends.png differ
binary files /dev/null b/gfx/stats/stats_tiles.png differ
binary files a/gfx/tilesets/water.png /dev/null differ
binary files /dev/null b/gfx/tilesets/water/water.png differ
binary files /dev/null b/gfx/timeset/background.png differ
binary files /dev/null b/gfx/timeset/down_arrow.png differ
binary files /dev/null b/gfx/timeset/up_arrow.png differ
--- /dev/null
+++ b/gfx/trade/border_cable_bottom.tilemap
@@ -1,0 +1,1 @@
+/'()/>??????????@*+,-.DE
\ No newline at end of file
--- /dev/null
+++ b/gfx/trade/border_cable_top.tilemap
@@ -1,0 +1,1 @@
+?@














E
\ No newline at end of file
--- /dev/null
+++ b/gfx/trade/border_mobile_fullscreen.tilemap
@@ -1,0 +1,1 @@
+?@














EEEEEEEE














EEEEEEBC/$%&/>??????????@89:;<=DE
\ No newline at end of file
binary files /dev/null b/gfx/trade/border_tiles.png differ
binary files /dev/null b/gfx/trainer_card/badges.png differ
binary files /dev/null b/gfx/trainer_card/card_right_corner.png differ
binary files /dev/null b/gfx/trainer_card/card_status.png differ
binary files /dev/null b/gfx/trainer_card/chris_card.png differ
binary files /dev/null b/gfx/trainer_card/kris_card.png differ
binary files /dev/null b/gfx/trainer_card/leaders.png differ
binary files /dev/null b/gfx/trainer_card/trainer_card.png differ
binary files a/gfx/unknown/011cb7.png /dev/null differ
binary files a/gfx/unknown/011cc7.png /dev/null differ
binary files a/gfx/unknown/011e5d.png /dev/null differ
binary files a/gfx/unknown/011e65.png /dev/null differ
binary files a/gfx/unknown/011e6d.png /dev/null differ
binary files a/gfx/unknown/0123fc.png /dev/null differ
binary files a/gfx/unknown/017393.png /dev/null differ
binary files a/gfx/unknown/0908fb.png /dev/null differ
binary files a/gfx/unknown/090903.png /dev/null differ
binary files a/gfx/unknown/09090b.png /dev/null differ
binary files a/gfx/unknown/0e0cdb.2bpp.lz.53679db7 /dev/null differ
binary files a/gfx/unknown/0e0cdb.png /dev/null differ
binary files a/gfx/unknown/0e0cf6.png /dev/null differ
binary files a/gfx/unknown/0e0d06.png /dev/null differ
binary files a/gfx/unknown/0e0d16.2bpp.lz.86f267e8 /dev/null differ
binary files a/gfx/unknown/0e0d16.png /dev/null differ
binary files a/gfx/unknown/0e0ea8.2bpp.lz.6a6c671d /dev/null differ
binary files a/gfx/unknown/0e0ea8.png /dev/null differ
binary files a/gfx/unknown/0e2221.2bpp.lz.821ba441 /dev/null differ
binary files a/gfx/unknown/0e2221.png /dev/null differ
binary files a/gfx/unknown/0f89b0.png /dev/null differ
binary files a/gfx/unknown/0f8aa0.png /dev/null differ
binary files a/gfx/unknown/0f9424.png /dev/null differ
binary files a/gfx/unknown/0fbbbb.png /dev/null differ
binary files a/gfx/unknown/16cfc1.png /dev/null differ
--- a/gfx/unknown/16d465.tilemap
+++ /dev/null
@@ -1,1 +1,0 @@
-?@














EEEEEEEE














EEEEEEBC/$%&/>??????????@89:;<=DE
\ No newline at end of file
--- a/gfx/unknown/16d5cd.tilemap
+++ /dev/null
@@ -1,1 +1,0 @@
-?@














E
\ No newline at end of file
--- a/gfx/unknown/16d5f5.tilemap
+++ /dev/null
@@ -1,1 +1,0 @@
-/'()/>??????????@*+,-.DE
\ No newline at end of file
binary files a/gfx/unknown/1dd805.2bpp.lz.7b56f7e5 /dev/null differ
binary files a/gfx/unknown/1dd805.png /dev/null differ
binary files a/gfx/unknown/1ddc4b.tilemap /dev/null differ
binary files a/gfx/unknown/1dddb3.tilemap /dev/null differ
--- 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]
@@ -1832,7 +1830,7 @@
 ; 0x38f2
 
 PrintBCDDigit:: ; 38f2
-	and a, %00001111
+	and %00001111
 	and a
 	jr z, .zeroDigit
 .nonzeroDigit
@@ -1847,7 +1845,7 @@
 .skipCurrencySymbol
 	res 7, b ; unset 7 to indicate that a nonzero digit has been reached
 .outputDigit
-	add a, "0"
+	add "0"
 	ld [hli], a
 	jp PrintLetterDelay
 
--- a/home/audio.asm
+++ b/home/audio.asm
@@ -295,7 +295,7 @@
 ; 3c97
 
 MaxVolume:: ; 3c97
-	ld a, $77 ; max
+	ld a, MAX_VOLUME
 	ld [Volume], a
 	ret
 ; 3c9d
@@ -348,9 +348,9 @@
 	ld a, 8
 	ld [MusicFade], a
 	ld a, e
-	ld [MusicFadeIDLo], a
+	ld [MusicFadeID], a
 	ld a, d
-	ld [MusicFadeIDHi], a
+	ld [MusicFadeID + 1], a
 	ld a, e
 	ld [wMapMusic], a
 
--- 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/init.asm
+++ b/home/init.asm
@@ -69,8 +69,8 @@
 	ld [rLCDC], a
 
 ; Clear WRAM bank 0
-	ld hl, wc000
-	ld bc, wd000 - wc000
+	ld hl, wRAM0Start
+	ld bc, wRAM1Start - wRAM0Start
 .ByteFill:
 	ld [hl], 0
 	inc hl
--- a/home/joypad.asm
+++ b/home/joypad.asm
@@ -130,7 +130,7 @@
 ; The player input can be automated using an input stream.
 ; See more below.
 	ld a, [InputType]
-	cp a, AUTO_INPUT
+	cp AUTO_INPUT
 	jr z, .auto
 
 ; To get deltas, take this and last frame's input.
@@ -197,7 +197,7 @@
 .updateauto
 ; An input of $ff will end the stream.
 	ld a, [hli]
-	cp a, -1
+	cp -1
 	jr z, .stopauto
 	ld b, a
 
@@ -204,7 +204,7 @@
 ; A duration of $ff will end the stream indefinitely.
 	ld a, [hli]
 	ld [AutoInputLength], a
-	cp a, -1
+	cp -1
 	jr nz, .next
 
 ; The current input is overwritten.
--- a/home/map.asm
+++ b/home/map.asm
@@ -1415,7 +1415,7 @@
 	ld a, $1
 	ld [rVBK], a
 
-	ld hl, w6_d600
+	ld hl, wDecompressScratch + $60 tiles
 	ld de, VTiles2
 	ld bc, $60 tiles
 	call CopyBytes
@@ -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/home/movement.asm
+++ b/home/movement.asm
@@ -3,11 +3,11 @@
 	xor a
 	ld [wMovementBufferCount], a
 	ld a, $0 ; useless
-	ld [wd004], a
+	ld [wUnusedMovementBufferBank], a
 	ld a, MovementBuffer % $100
-	ld [wd005], a
+	ld [wUnusedMovementBufferPointer], a
 	ld a, MovementBuffer / $100
-	ld [wd006], a
+	ld [wUnusedMovementBufferPointer + 1], a
 	ret
 ; 1b35
 
--- a/home/text.asm
+++ b/home/text.asm
@@ -230,41 +230,41 @@
 ._\@:
 endm
 
-	dict "<DAY>", Char15
-	dict "<LINE>", LineChar
-	dict "<NEXT>", NextLineChar
-	dict TX_FAR, TextFar
-	dict $00, NullChar
-	dict $4c, Char4C
-	dict $4b, Char4B
-	dict "<PARA>", Paragraph
-	dict "<MOM>", PrintMomsName
+	dict "<DAY>",    Char15
+	dict "<LINE>",   LineChar
+	dict "<NEXT>",   NextLineChar
+	dict TX_FAR,     TextFar
+	dict $00,        NullChar
+	dict $4c,        Char4C
+	dict $4b,        Char4B
+	dict "<PARA>",   Paragraph
+	dict "<MOM>",    PrintMomsName
 	dict "<PLAYER>", PrintPlayerName
-	dict "<RIVAL>", PrintRivalName
-	dict $35, Char35
-	dict $36, Char36
-	dict $37, Char37
-	dict "<RED>", PrintRedsName
-	dict "<GREEN>", PrintGreensName
-	dict "#", PlacePOKe
-	dict "<PC>", PCChar
+	dict "<RIVAL>",  PrintRivalName
+	dict $35,        Char35
+	dict $36,        Char36
+	dict $37,        Char37
+	dict "<RED>",    PrintRedsName
+	dict "<GREEN>",  PrintGreensName
+	dict "#",        PlacePOKe
+	dict "<PC>",     PCChar
 	dict "<ROCKET>", RocketChar
-	dict "<TM>", TMChar
-	dict "<TRNER>", TrainerChar
-	dict $23, PlaceKougeki
-	dict "<LNBRK>", Char22
-	dict "<CONT>", ContText
+	dict "<TM>",     TMChar
+	dict "<TRNER>",  TrainerChar
+	dict $23,        PlaceKougeki
+	dict "<LNBRK>",  Char22
+	dict "<CONT>",   ContText
 	dict "<......>", SixDotsChar
-	dict "<DONE>", DoneText
+	dict "<DONE>",   DoneText
 	dict "<PROMPT>", PromptText
-	dict "<PKMN>", PlacePKMN
-	dict "<POKE>", PlacePOKE
-	dict $25, NextChar
-	dict2 $1f, " "
+	dict "<PKMN>",   PlacePKMN
+	dict "<POKE>",   PlacePOKE
+	dict $25,        NextChar
+	dict2 $1f,       " "
 	dict "<DEXEND>", PlaceDexEnd
 	dict "<TARGET>", PlaceMoveTargetsName
-	dict "<USER>", PlaceMoveUsersName
-	dict "<ENEMY>", PlaceEnemysName
+	dict "<USER>",   PlaceMoveUsersName
+	dict "<ENEMY>",  PlaceEnemysName
 	dict "<PLAY_G>", PlaceGenderedPlayerName
 
 	cp "゚"
--- a/interrupts.asm
+++ b/interrupts.asm
@@ -1,16 +1,16 @@
 ; Game Boy hardware interrupts
 
-SECTION "vblank",ROM0
+SECTION "vblank", ROM0
 	jp VBlank
 
-SECTION "lcd",ROM0
+SECTION "lcd", ROM0
 	jp LCD
 
-SECTION "timer",ROM0
+SECTION "timer", ROM0
 	jp Timer
 
-SECTION "serial",ROM0
+SECTION "serial", ROM0
 	jp Serial
 
-SECTION "joypad",ROM0
+SECTION "joypad", ROM0
 	jp JoypadInt
--- a/items/item_effects.asm
+++ b/items/item_effects.asm
@@ -407,9 +407,9 @@
 
 	ld de, ANIM_THROW_POKE_BALL
 	ld a, e
-	ld [FXAnimIDLo], a
+	ld [FXAnimID], a
 	ld a, d
-	ld [FXAnimIDHi], a
+	ld [FXAnimID + 1], a
 	xor a
 	ld [hBattleTurn], a
 	ld [Buffer2], a
@@ -2945,9 +2945,9 @@
 	call ReturnToBattle_UseBall
 	ld de, ANIM_THROW_POKE_BALL
 	ld a, e
-	ld [FXAnimIDLo], a
+	ld [FXAnimID], a
 	ld a, d
-	ld [FXAnimIDHi], a
+	ld [FXAnimID + 1], a
 	xor a
 	ld [wBattleAnimParam], a
 	ld [hBattleTurn], a
--- a/lib/mobile/main.asm
+++ b/lib/mobile/main.asm
@@ -9073,8 +9073,8 @@
 	dw $cbef
 
 Unknown_113b7e: ; 113b7e
-	db $01,$23,$45,$67,$89,$ab,$cd,$ef
-	db $fe,$dc,$ba,$98,$76,$54,$32,$10
+	db $01, $23, $45, $67, $89, $ab, $cd, $ef
+	db $fe, $dc, $ba, $98, $76, $54, $32, $10
 
 Unknown_113b8e:
 	db $78, $a4, $6a, $d7, $56, $b7, $c7, $e8, $db, $70, $20, $24, $ee, $ce, $bd, $c1
--- a/macros/basestats.asm
+++ b/macros/basestats.asm
@@ -29,38 +29,37 @@
 	enum \1_TMNUM
 ENDM
 
+; N TMs/HMs need (N+7)/8 bytes for their bit flags.
+; The rgbasm integers tms1, tms2, tms3 each hold 3 bytes, or 24 bits.
 tmhm: MACRO
-x = 0
-y = 0
-w = 0
-	rept _NARG
+tms1 = 0
+tms2 = 0
+tms3 = 0
+rept _NARG
 	if def(\1_TMNUM)
-	if \1_TMNUM < 25
-x = x | (1 << ((\1_TMNUM) - 1))
+	if \1_TMNUM < 24 + 1
+tms1 = tms1 | (1 << ((\1_TMNUM) - 1))
+	elif \1_TMNUM < 48 + 1
+tms2 = tms2 | (1 << ((\1_TMNUM) - 1 - 24))
 	else
-	if \1_TMNUM < 49
-y = y | (1 << ((\1_TMNUM) - 1 - 24))
-	else
-w = w | (1 << ((\1_TMNUM) - 1 - 48))
+tms3 = tms3 | (1 << ((\1_TMNUM) - 1 - 48))
 	endc
-	endc
 	else
 		fail "\1 is not a TM, HM, or move tutor move"
 	endc
-
 	shift
-	endr
+endr
 
-	rept 3
-	db x & $ff
-x = x >> 8
-	endr
-	rept 3
-	db y & $ff
-y = y >> 8
-	endr
-	rept 2
-	db w & $ff
-w = w >> 8
-	endr
+rept 3
+	db tms1 & $ff
+tms1 = tms1 >> 8
+endr
+rept 3
+	db tms2 & $ff
+tms2 = tms2 >> 8
+endr
+rept 2
+	db tms3 & $ff
+tms3 = tms3 >> 8
+endr
 ENDM
--- a/macros/charmap.asm
+++ b/macros/charmap.asm
@@ -1,53 +1,63 @@
 ; Control characters
 	charmap "<START>",  $00
-	charmap "<PLAY_G>", $14 ; <PLAYER> + gender
+	charmap "<PLAY_G>", $14 ; gendered PlayerName; same as "<PLAYER>" in English
 	charmap "<DAY>",    $15
-	charmap "¯",        $1f
+	charmap "¯",        $1f ; soft linebreak
 	charmap "<LNBRK>",  $22
-	charmap "<POKE>",   $24
+	charmap "<POKE>",   $24 ; "<PO><KE>"
 	charmap "%",        $25
-	charmap "<RED>",    $38
-	charmap "<GREEN>",  $39
+	charmap "<RED>",    $38 ; RedsName
+	charmap "<GREEN>",  $39 ; GreensName
 	charmap "<ENEMY>",  $3f
-	charmap "<SHINY>",  $3f
-	charmap "<MOM>",    $49
-	charmap "<PKMN>",   $4a
+	charmap "<MOM>",    $49 ; MomsName
+	charmap "<PKMN>",   $4a ; "<PK><MN>"
 	charmap "<NEXT>",   $4e
 	charmap "<LINE>",   $4f
 
 	charmap "@",        $50
 	charmap "<PARA>",   $51
-	charmap "<PLAYER>", $52
+	charmap "<PLAYER>", $52 ; PlayerName
 	charmap "<RIVAL>",  $53
 	charmap "#",        $54
 	charmap "<CONT>",   $55
-	charmap "<......>", $56
+	charmap "<......>", $56 ; "……"
 	charmap "<DONE>",   $57
 	charmap "<PROMPT>", $58
 	charmap "<TARGET>", $59
 	charmap "<USER>",   $5a
-	charmap "<PC>",     $5b
-	charmap "<TM>",     $5c
-	charmap "<TRNER>",  $5d
-	charmap "<ROCKET>", $5e
+	charmap "<PC>",     $5b ; "PC"
+	charmap "<TM>",     $5c ; "TM"
+	charmap "<TRNER>",  $5d ; "TRAINER"
+	charmap "<ROCKET>", $5e ; "ROCKET"
 	charmap "<DEXEND>", $5f
 
-; Actual characters
-	charmap "▲",        $61
-	charmap "_",        $62
-	charmap "<COLON>",  $6d ; necessary because ":" is already used
-	charmap "′",        $6e
-	charmap "<LV>",     $6e
-	charmap "″",        $6f
+; Actual characters (from gfx/misc/font_extra.png)
 
+	charmap "<BOLD_A>", $60 ; unused
+	charmap "<BOLD_B>", $61 ; unused
+	charmap "<BOLD_C>", $62 ; unused
+	charmap "<BOLD_D>", $63 ; unused
+	charmap "<BOLD_E>", $64 ; unused
+	charmap "<BOLD_F>", $65 ; unused
+	charmap "<BOLD_G>", $66 ; unused
+	charmap "<BOLD_H>", $67 ; unused
+	charmap "<BOLD_I>", $68 ; unused
+	charmap "<BOLD_V>", $69
+	charmap "<BOLD_S>", $6a
+	charmap "<BOLD_L>", $6b ; unused
+	charmap "<BOLD_M>", $6c ; unused
+	charmap "<COLON>",  $6d ; colon with tinier dots than ":"
+	charmap "ぃ",        $6e ; hiragana small i, unused
+	charmap "ぅ",        $6f ; hiragana small u, unused
 	charmap "<PO>",     $70
 	charmap "<KE>",     $71
-	charmap "◀",        $71
-	charmap "<``>",     $72
-	charmap "<''>",     $73
-	charmap "<ID>",     $73
-	charmap "№",        $74
-	charmap "…",        $75
+	charmap "<``>",     $72 ; opening quote
+	charmap "<''>",     $73 ; closing quote
+	charmap "·",        $74 ; middle dot, unused
+	charmap "…",        $75 ; ellipsis
+	charmap "ぁ",        $76 ; hiragana small a, unused
+	charmap "ぇ",        $77 ; hiragana small e, unused
+	charmap "ぉ",        $78 ; hiragana small o, unused
 
 	charmap "┌",        $79
 	charmap "─",        $7a
@@ -57,6 +67,32 @@
 	charmap "┘",        $7e
 	charmap " ",        $7f
 
+; Actual characters (from gfx/misc/font_battle_extra.png)
+
+	charmap "<LV>",     $6e
+
+	charmap "<ど>",      $70 ; hiragana small do, unused
+	charmap "◀",        $71
+	charmap "『",        $72 ; Japanese opening quote, unused
+	charmap "<ID>",     $73
+	charmap "№",        $74
+
+; Actual characters (from other graphics files)
+
+	charmap "|",        $31 ; from gfx/stats/stats_tiles
+
+	charmap "<SHINY>",  $3f ; gfx/stats/shiny
+
+	charmap "<BLACK>",  $60 ; from gfx/mobile/phone_tiles.2bpp
+	charmap "▲",        $61 ; gfx/font/up_arrow.png
+	charmap "<PHONE>",  $62 ; gfx/mobile/overworld_phone_icon.2bpp
+	charmap "_",        $62 ; from gfx/battle/hp_exp_bar_border.1bpp
+
+	charmap "′",        $6e ; gfx/font/feet_inches.png
+	charmap "″",        $6f ; gfx/font/feet_inches.png
+
+; Actual characters (from gfx/misc/font.png)
+
 	charmap "A",        $80
 	charmap "B",        $81
 	charmap "C",        $82
@@ -152,7 +188,7 @@
 	charmap "♂",        $ef
 	charmap "¥",        $f0
 	charmap "×",        $f1
-	charmap "·",        $f2
+	charmap "<DOT>",    $f2 ; same as "." in English
 	charmap "/",        $f3
 	charmap ",",        $f4
 	charmap "♀",        $f5
@@ -168,8 +204,7 @@
 	charmap "8",        $fe
 	charmap "9",        $ff
 
-; Japanese, for those bits of text that
-; were not translated to English.
+; Japanese kana, for those bits of text that were not translated to English
 
 	charmap "ガ", $5
 	charmap "ギ", $6
--- a/macros/text.asm
+++ b/macros/text.asm
@@ -1,15 +1,11 @@
 text   EQUS "db $00," ; Start writing text.
 next   EQUS "db $4e," ; Move a line down.
 line   EQUS "db $4f," ; Start writing at the bottom line.
+page   EQUS "db $50," ; Start a new Pokedex page.
 para   EQUS "db $51," ; Start a new paragraph.
 cont   EQUS "db $55," ; Scroll to the next line.
 done   EQUS "db $57"  ; End a text box.
 prompt EQUS "db $58"  ; Prompt the player to end a text box (initiating some other event).
-
-; Pokedex text commands are only used with pokered.
-; They are included for compatibility.
-page   EQUS "db $50,"     ; Start a new Pokedex page.
-dex    EQUS "db $e8, $50" ; End a Pokedex entry.
 
 ; TX_RAM EQU $01
 ; TX_FAR EQU $16
--- a/main.asm
+++ b/main.asm
@@ -92,7 +92,7 @@
 	xor a
 	ld [hBGMapMode], a
 	ld [hWY], a
-	callba HDMATransfer_FillBGMap0WithTile60 ; no need to farcall
+	callba HDMATransfer_FillBGMap0WithBlack ; no need to farcall
 	ld a, VBGMap0 / $100
 	call .LoadBGMapAddrIntoHRAM
 	xor a
@@ -131,13 +131,13 @@
 	call LoadStandardFont
 	ret
 
-HDMATransfer_FillBGMap0WithTile60: ; 64db
+HDMATransfer_FillBGMap0WithBlack: ; 64db
 	ld a, [rSVBK]
 	push af
 	ld a, $6
 	ld [rSVBK], a
 
-	ld a, $60
+	ld a, "<BLACK>" ; $60
 	ld hl, wDecompressScratch
 	ld bc, wScratchAttrMap - wDecompressScratch
 	call ByteFill
@@ -183,7 +183,7 @@
 	inc hl
 ; reached end of commands table?
 	ld a, [hl]
-	cp a, -1
+	cp -1
 	jr z, .done
 
 ; is the current char between this value (inclusive)...
@@ -492,7 +492,7 @@
 	db "@"
 
 SetMemEvent: ; 1364f
-	ld hl, EngineBuffer1 ; wd03e (aliases: MenuItemsList, CurFruitTree, CurInput)
+	ld hl, EngineBuffer1
 	ld a, [hli]
 	ld d, [hl]
 	ld e, a
@@ -1178,10 +1178,10 @@
 INCLUDE "battle/link_result.asm"
 
 ChrisBackpic: ; 2ba1a
-INCBIN "gfx/misc/player.2bpp.lz"
+INCBIN "gfx/player/chris_back.2bpp.lz"
 
 DudeBackpic: ; 2bbaa
-INCBIN "gfx/misc/dude.2bpp.lz"
+INCBIN "gfx/battle/dude.2bpp.lz"
 
 SECTION "bankB", ROMX
 
@@ -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
@@ -1969,7 +1969,7 @@
 	dw PackFGFX + (15 tiles) * 2
 
 PackFGFX: ; 48e9b
-INCBIN "gfx/misc/pack_f.2bpp"
+INCBIN "gfx/pack/pack_f.2bpp"
 
 Special_MoveTutor: ; 4925b
 	call FadeToMenu
@@ -2487,10 +2487,10 @@
 	ret
 
 Shrink1Pic: ; 4d249
-INCBIN "gfx/shrink1.2bpp.lz"
+INCBIN "gfx/shrink/shrink1.2bpp.lz"
 
 Shrink2Pic: ; 4d2d9
-INCBIN "gfx/shrink2.2bpp.lz"
+INCBIN "gfx/shrink/shrink2.2bpp.lz"
 
 LinkMonStatsScreen: ; 4d319
 	ld a, [wMenuCursorY]
@@ -3332,7 +3332,7 @@
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	xor a
 	call ByteFill
-	ld hl, wd000 ; UnknBGPals
+	ld hl, UnknBGPals
 	ld c, 4 tiles
 .load_white_palettes
 	ld a, (palred 31 + palgreen 31 + palblue 31) % $100
@@ -4501,13 +4501,13 @@
 	ld b, a
 	ld a, [wMenuCursorY]
 	dec a
-	ld [Buffer2], a ; wd1eb (aliases: MovementType)
+	ld [Buffer2], a
 	cp b
 	jr z, .skip
 	call .SwapMonAndMail
 	ld a, [Buffer3]
 	call .ClearSprite
-	ld a, [Buffer2] ; wd1eb (aliases: MovementType)
+	ld a, [Buffer2]
 	call .ClearSprite
 .skip
 	ret
@@ -4540,7 +4540,7 @@
 	push de
 	push bc
 	ld bc, PartySpecies
-	ld a, [Buffer2] ; wd1eb (aliases: MovementType)
+	ld a, [Buffer2]
 	ld l, a
 	ld h, $0
 	add hl, bc
@@ -4556,8 +4556,8 @@
 	ld [hl], a
 	pop af
 	ld [de], a
-	ld a, [Buffer2] ; wd1eb (aliases: MovementType)
-	ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species)
+	ld a, [Buffer2]
+	ld hl, PartyMon1Species
 	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	push hl
@@ -4565,7 +4565,7 @@
 	ld bc, PARTYMON_STRUCT_LENGTH
 	call CopyBytes
 	ld a, [Buffer3]
-	ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species)
+	ld hl, PartyMon1
 	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	pop de
@@ -4576,7 +4576,7 @@
 	ld hl, wd002
 	ld bc, PARTYMON_STRUCT_LENGTH
 	call CopyBytes
-	ld a, [Buffer2] ; wd1eb (aliases: MovementType)
+	ld a, [Buffer2]
 	ld hl, PartyMonOT
 	call SkipNames
 	push hl
@@ -4591,7 +4591,7 @@
 	ld hl, wd002
 	call .CopyName
 	ld hl, PartyMonNicknames
-	ld a, [Buffer2] ; wd1eb (aliases: MovementType)
+	ld a, [Buffer2]
 	call SkipNames
 	push hl
 	call .CopyNameTowd002
@@ -4605,7 +4605,7 @@
 	ld hl, wd002
 	call .CopyName
 	ld hl, sPartyMail
-	ld a, [Buffer2] ; wd1eb (aliases: MovementType)
+	ld a, [Buffer2]
 	ld bc, MAIL_STRUCT_LENGTH
 	call AddNTimes
 	push hl
@@ -4857,13 +4857,13 @@
 	ret
 
 ChrisCardPic: ; 88365
-INCBIN "gfx/misc/chris_card.2bpp"
+INCBIN "gfx/trainer_card/chris_card.2bpp"
 
 KrisCardPic: ; 88595
-INCBIN "gfx/misc/kris_card.2bpp"
+INCBIN "gfx/trainer_card/kris_card.2bpp"
 
 CardGFX: ; 887c5
-INCBIN "gfx/misc/trainer_card.2bpp"
+INCBIN "gfx/trainer_card/trainer_card.2bpp"
 
 GetPlayerBackpic: ; 88825
 	ld a, [PlayerGender]
@@ -4943,10 +4943,10 @@
 	ret
 
 ChrisPic: ; 888a9
-INCBIN "gfx/misc/chris.2bpp"
+INCBIN "gfx/player/chris.2bpp"
 
 KrisPic: ; 88bb9
-INCBIN "gfx/misc/kris.2bpp"
+INCBIN "gfx/player/kris.2bpp"
 
 GetKrisBackpic: ; 88ec9
 ; Kris's backpic is uncompressed.
@@ -4957,7 +4957,7 @@
 	ret
 
 KrisBackpic: ; 88ed6
-INCBIN "gfx/misc/kris_back.2bpp"
+INCBIN "gfx/player/kris_back.2bpp"
 
 String_89116:
 	db "-----@"
@@ -5310,7 +5310,7 @@
 
 SECTION "bank36", ROMX
 
-FontInversed: INCBIN "gfx/misc/font_inversed.1bpp"
+FontInversed: INCBIN "gfx/font/font_inversed.1bpp"
 
 SECTION "Pic Animations 3", ROMX
 
@@ -5452,7 +5452,7 @@
 SECTION "bank39", ROMX
 
 CopyrightGFX:: ; e4000
-INCBIN "gfx/misc/copyright.2bpp"
+INCBIN "gfx/splash/copyright.2bpp"
 
 INCLUDE "engine/options_menu.asm"
 INCLUDE "engine/crystal_intro.asm"
@@ -5595,7 +5595,7 @@
 SECTION "bank77", ROMX
 
 UnownFont: ; 1dc000
-INCBIN "gfx/misc/unown_font.2bpp"
+INCBIN "gfx/font/unown_font.2bpp"
 
 INCLUDE "misc/printer_77.asm"
 
@@ -5908,7 +5908,7 @@
 	ret
 
 PokegearGFX: ; 1de2e4
-INCBIN "gfx/misc/pokegear.2bpp.lz"
+INCBIN "gfx/pokegear/pokegear.2bpp.lz"
 
 IsMailEuropean: ; 1de5c8
 ; return 1 if French
--- 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/battle_tower_5c.asm
+++ b/misc/battle_tower_5c.asm
@@ -1361,7 +1361,7 @@
 	cp EGG
 	jr nz, .not_egg
 	push hl
-	ld hl, PartyMonOT ; wddff (aliases: PartyMonOT)
+	ld hl, PartyMonOT
 	ld de, $6 ; NAME_LENGTH
 	ld a, b
 	and a
--- 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/misc/gfx_41.asm
+++ b/misc/gfx_41.asm
@@ -632,7 +632,7 @@
 BoltEmote:      INCBIN "gfx/emotes/bolt.2bpp"
 SleepEmote:     INCBIN "gfx/emotes/sleep.2bpp"
 FishEmote:      INCBIN "gfx/emotes/fish.2bpp"
-JumpShadowGFX:  INCBIN "gfx/misc/shadow.2bpp"
-FishingRodGFX2: INCBIN "gfx/misc/fishing2.2bpp"
-BoulderDustGFX: INCBIN "gfx/misc/boulderdust.2bpp"
-FishingRodGFX4: INCBIN "gfx/misc/fishing4.2bpp"
+JumpShadowGFX:  INCBIN "gfx/ow_fx/shadow.2bpp"
+FishingRodGFX:  INCBIN "gfx/ow_fx/fishing_rod.2bpp"
+BoulderDustGFX: INCBIN "gfx/ow_fx/boulder_dust.2bpp"
+GrassRustleGFX: INCBIN "gfx/ow_fx/grass_rustle.2bpp"
--- a/misc/mobile_12.asm
+++ b/misc/mobile_12.asm
@@ -40,9 +40,9 @@
 	ld a, $5
 	ld [MusicFade], a
 	ld a, MUSIC_MOBILE_ADAPTER_MENU % $100
-	ld [MusicFadeIDLo], a
+	ld [MusicFadeID], a
 	ld a, MUSIC_MOBILE_ADAPTER_MENU / $100
-	ld [MusicFadeIDHi], a
+	ld [MusicFadeID + 1], a
 	ld c, 20
 	call DelayFrames
 	ld b, $1
--- a/misc/mobile_40.asm
+++ b/misc/mobile_40.asm
@@ -1804,7 +1804,7 @@
 	call FarCall_de
 	ld a, BANK(BattleMenuDataHeader)
 	ld [wMenuData2_2DMenuItemStringsBank], a
-	ld a, [wd0d2]
+	ld a, [wBattleMenuCursorBuffer]
 	ld [wMenuCursorBuffer], a
 	call Function100e72
 	call Function100b45
@@ -1811,7 +1811,7 @@
 	callba InitPartyMenuBGPal7
 	call Function100ed4
 	ld a, [wMenuCursorBuffer]
-	ld [wd0d2], a
+	ld [wBattleMenuCursorBuffer], a
 	call ExitMenu
 	ret
 ; 100b45
@@ -5410,7 +5410,7 @@
 	dec a
 	ld [CurPartyMon], a
 	xor a
-	ld [wd10b], a
+	ld [wPokemonWithdrawDepositParameter], a
 	callba RemoveMonFromPartyOrBox
 	ld hl, PartyCount
 	inc [hl]
--- a/misc/mobile_42.asm
+++ b/misc/mobile_42.asm
@@ -83,7 +83,7 @@
 	mobiletradeanim_end
 
 RunMobileTradeAnim_Frontpics: ; 10805b
-	ld hl, wTradeAnimPointer
+	ld hl, wTradeAnimAddress
 	ld [hl], e
 	inc hl
 	ld [hl], d
@@ -113,7 +113,7 @@
 ; 108089
 
 RunMobileTradeAnim_NoFrontpics: ; 108089
-	ld hl, wTradeAnimPointer
+	ld hl, wTradeAnimAddress
 	ld [hl], e
 	inc hl
 	ld [hl], d
@@ -411,7 +411,7 @@
 ; 1082b7
 
 GetMobileTradeAnimByte: ; 1082b7
-	ld hl, wTradeAnimPointer
+	ld hl, wTradeAnimAddress
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -1313,7 +1313,7 @@
 .EggTemplate: ; 108a1d
 	db   "タマゴ"
 	next "おや/?????"
-	next "<ID>№·?????"
+	next "<ID>№<DOT>?????"
 	db   "@"
 ; 108a33
 
@@ -1353,10 +1353,10 @@
 ; 108a79
 
 .MonTemplate: ; 108a79
-	db   "─ №·"
+	db   "─ №<DOT>"
 	next ""
 	next "おや/"
-	next "<ID>№·"
+	next "<ID>№<DOT>"
 	db   "@"
 ; 108a87
 
--- a/misc/mobile_45_sprite_engine.asm
+++ b/misc/mobile_45_sprite_engine.asm
@@ -496,9 +496,9 @@
 	ld [MusicFade], a
 	ld de, MUSIC_MOBILE_ADAPTER
 	ld a, e
-	ld [MusicFadeIDLo], a
+	ld [MusicFadeID], a
 	ld a, d
-	ld [MusicFadeIDHi], a
+	ld [MusicFadeID + 1], a
 	ld a, [$c319]
 	inc a
 	ld [$c319], a
@@ -680,9 +680,9 @@
 	ld a, $8
 	ld [MusicFade], a
 	ld a, [wMapMusic]
-	ld [MusicFadeIDLo], a
+	ld [MusicFadeID], a
 	xor a
-	ld [MusicFadeIDHi], a
+	ld [MusicFadeID + 1], a
 	xor a
 	ld [$c319], a
 	ld [wc30d], a
@@ -728,9 +728,9 @@
 	ld a, $8
 	ld [MusicFade], a
 	ld a, [wMapMusic]
-	ld [MusicFadeIDLo], a
+	ld [MusicFadeID], a
 	xor a
-	ld [MusicFadeIDHi], a
+	ld [MusicFadeID + 1], a
 	jr .asm_116439
 
 .asm_11642a
@@ -737,9 +737,9 @@
 	ld a, $8
 	ld [MusicFade], a
 	ld a, $0
-	ld [MusicFadeIDLo], a
+	ld [MusicFadeID], a
 	ld a, $0
-	ld [MusicFadeIDHi], a
+	ld [MusicFadeID + 1], a
 
 .asm_116439
 	xor a
@@ -757,9 +757,9 @@
 	ld a, $8
 	ld [MusicFade], a
 	ld a, [wMapMusic]
-	ld [MusicFadeIDLo], a
+	ld [MusicFadeID], a
 	xor a
-	ld [MusicFadeIDHi], a
+	ld [MusicFadeID + 1], a
 	xor a
 	ld [$c319], a
 	ld [wc30d], a
--- a/misc/mobile_5f.asm
+++ b/misc/mobile_5f.asm
@@ -559,9 +559,9 @@
 	ld de, MUSIC_MOBILE_CENTER
 	ld a, e
 	ld [wMapMusic], a
-	ld [MusicFadeIDLo], a
+	ld [MusicFadeID], a
 	ld a, d
-	ld [MusicFadeIDHi], a
+	ld [MusicFadeID + 1], a
 	call PlayMusic
 	call ReturnToMapFromSubmenu
 	call CloseSubmenu
@@ -4728,9 +4728,9 @@
 	ld [MusicFade], a
 	ld de, MUSIC_NONE
 	ld a, e
-	ld [MusicFadeIDLo], a
+	ld [MusicFadeID], a
 	ld a, d
-	ld [MusicFadeIDHi], a
+	ld [MusicFadeID + 1], a
 	ld a, " "
 	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
@@ -5274,9 +5274,9 @@
 	ld a, $8
 	ld [MusicFade], a
 	ld a, [wMapMusic]
-	ld [MusicFadeIDLo], a
+	ld [MusicFadeID], a
 	xor a
-	ld [MusicFadeIDHi], a
+	ld [MusicFadeID + 1], a
 	ld hl, wc303
 	set 7, [hl]
 	ret
--- a/misc/mobile_menu.asm
+++ b/misc/mobile_menu.asm
@@ -856,9 +856,9 @@
 	ld a, $5
 	ld [MusicFade], a
 	ld a, e
-	ld [MusicFadeIDLo], a
+	ld [MusicFadeID], a
 	ld a, d
-	ld [MusicFadeIDHi], a
+	ld [MusicFadeID + 1], a
 	ld c, 22
 	call DelayFrames
 	ret
--- a/misc/printer_77.asm
+++ b/misc/printer_77.asm
@@ -150,9 +150,9 @@
 	lb bc, BANK(MobileLvIcon), 1
 	call Request1bpp
 
-	ld de, ShinyIcon
+	ld de, ShinyIconGFX
 	ld hl, VTiles2 tile $3f
-	lb bc, BANK(ShinyIcon), 1
+	lb bc, BANK(ShinyIconGFX), 1
 	call Get2bpp
 
 	xor a
--- a/predef/cgb.asm
+++ b/predef/cgb.asm
@@ -204,7 +204,7 @@
 
 _CGB_StatsScreenHPPals: ; 8edb
 	ld de, UnknBGPals
-	ld a, [wcda1]
+	ld a, [wCurHPPal]
 	ld l, a
 	ld h, $0
 	add hl, hl
--- a/predef/sgb.asm
+++ b/predef/sgb.asm
@@ -168,7 +168,7 @@
 	ld de, wSGBPals
 	ld bc, $10
 	call CopyBytes
-	ld a, [wcda1]
+	ld a, [wCurHPPal]
 	ld l, a
 	ld h, 0
 	add hl, hl
--- a/tilesets/animations.asm
+++ b/tilesets/animations.asm
@@ -304,7 +304,7 @@
 StandingTileFrame8: ; fc2ff
 	ld a, [TileAnimationTimer]
 	inc a
-	and a, 7
+	and 7
 	ld [TileAnimationTimer], a
 	ret
 ; fc309
@@ -492,7 +492,7 @@
 ; fc41c
 
 WaterTileFrames: ; fc41c
-	INCBIN "gfx/tilesets/water.2bpp"
+	INCBIN "gfx/tilesets/water/water.2bpp"
 ; fc45c
 
 
--- 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
@@ -2,8 +2,10 @@
 INCLUDE "macros/wram.asm"
 INCLUDE "vram.asm"
 
+
 SECTION "Stack", WRAM0
-wc000::
+
+wRAM0Start::
 StackBottom::
 	ds $100 - 1
 Stack::
@@ -12,10 +14,11 @@
 
 
 SECTION "Audio RAM", WRAM0
+
 wMusic::
-MusicPlaying:: ; c100
+
 ; nonzero if playing
-	ds 1
+MusicPlaying:: db ; c100
 
 Channels::
 Channel1:: channel_struct Channel1 ; c101
@@ -30,16 +33,15 @@
 Channel8:: channel_struct Channel8 ; c25f
 
 	ds 1 ; c291
-wCurTrackDuty:: ds 1
-wCurTrackIntensity:: ds 1
+
+wCurTrackDuty:: db
+wCurTrackIntensity:: db
 wCurTrackFrequency:: dw
-wc296:: ds 1 ; BCD value, dummied out
-wCurNoteDuration:: ds 1 ; used in MusicE0 and LoadNote
+wc296:: db ; BCD value, dummied out
+wCurNoteDuration:: db ; used in MusicE0 and LoadNote
 
-CurMusicByte:: ; c298
-	ds 1
-CurChannel:: ; c299
-	ds 1
+CurMusicByte:: db ; c298
+CurChannel:: db ; c299
 Volume:: ; c29a
 ; corresponds to $ff24
 ; Channel control / ON-OFF / Volume (R/W)
@@ -47,12 +49,12 @@
 ;   bit 6-4 - SO2 output level (volume) (# 0-7)
 ;   bit 3 - Vin->SO1 ON/OFF
 ;   bit 2-0 - SO1 output level (volume) (# 0-7)
-	ds 1
+	db
 SoundOutput:: ; c29b
 ; corresponds to $ff25
 ; bit 4-7: ch1-4 so2 on/off
 ; bit 0-3: ch1-4 so1 on/off
-	ds 1
+	db
 SoundInput:: ; c29c
 ; corresponds to $ff26
 ; bit 7: global on/off
@@ -60,80 +62,69 @@
 ; bit 1: ch2 on/off
 ; bit 2: ch3 on/off
 ; bit 3: ch4 on/off
-	ds 1
+	db
 
-MusicID::
-MusicIDLo:: ; c29d
-	ds 1
-MusicIDHi:: ; c29e
-	ds 1
-MusicBank:: ; c29f
-	ds 1
-NoiseSampleAddress::
-NoiseSampleAddressLo:: ; c2a0
-	ds 1
-NoiseSampleAddressHi:: ; c2a1
-	ds 1
-wNoiseSampleDelay:: ; noise delay? ; c2a2
-	ds 1
-; c2a3
-	ds 1
-MusicNoiseSampleSet:: ; c2a4
-	ds 1
-SFXNoiseSampleSet:: ; c2a5
-	ds 1
+MusicID:: dw ; c29d
+MusicBank:: db ; c29f
+NoiseSampleAddress:: dw ; c2a0
+wNoiseSampleDelay:: db ; c2a2
+	ds 1 ; c2a3
+MusicNoiseSampleSet:: db ; c2a4
+SFXNoiseSampleSet:: db ; c2a5
+
 Danger:: ; c2a6
 ; bit 7: on/off
 ; bit 4: pitch
 ; bit 0-3: counter
-	ds 1
+	db
+
 MusicFade:: ; c2a7
 ; fades volume over x frames
 ; bit 7: fade in/out
 ; bit 0-5: number of frames for each volume level
 ; $00 = none (default)
-	ds 1
-MusicFadeCount:: ; c2a8
-	ds 1
-MusicFadeID::
-wc2a9::
-MusicFadeIDLo:: ; c2a9
-	ds 1
-wc2aa::
-MusicFadeIDHi:: ; c2aa
-	ds 1
+	db
+MusicFadeCount:: db ; c2a8
+MusicFadeID:: dw ; c2a9
+
 	ds 5
-CryPitch:: ; c2b0
-	ds 2
-CryLength:: ; c2b2
-	ds 2
-LastVolume:: ; c2b4
-	ds 1
-wc2b5:: ds 1
+
+CryPitch:: dw ; c2b0
+CryLength:: dw ; c2b2
+
+LastVolume:: db ; c2b4
+wc2b5:: db ; c2b5
+
 SFXPriority:: ; c2b6
 ; if nonzero, turn off music when playing sfx
+	db
+
 	ds 1
-	ds 1
-Channel1JumpCondition:: ds 1
-Channel2JumpCondition:: ds 1
-Channel3JumpCondition:: ds 1
-Channel4JumpCondition:: ds 1
-wStereoPanningMask:: ds 1 ; c2bc
+
+Channel1JumpCondition:: db
+Channel2JumpCondition:: db
+Channel3JumpCondition:: db
+Channel4JumpCondition:: db
+
+wStereoPanningMask:: db ; c2bc
+
 CryTracks:: ; c2bd
 ; plays only in left or right track depending on what side the monster is on
 ; both tracks active outside of battle
-	ds 1
-wSFXDuration:: ds 1
+	db
+
+wSFXDuration:: db
 CurSFX:: ; c2bf
 ; id of sfx currently playing
-	ds 1
+	db
 ChannelsEnd::
-wMapMusic:: ; c2c0
-	ds 1
 
-wDontPlayMapMusicOnReload:: ds 1
+wMapMusic:: db ; c2c0
+
+wDontPlayMapMusicOnReload:: db
 wMusicEnd::
 
+
 SECTION "WRAM", WRAM0
 
 wLZAddress:: dw ; c2c2
@@ -141,69 +132,66 @@
 
 	ds 1
 
-wBoxAlignment:: ds 1
-InputType:: ; c2c7
-	ds 1
-AutoInputAddress:: ; c2c8
-	ds 2
-AutoInputBank:: ; c2ca
-	ds 1
-AutoInputLength:: ; c2cb
-	ds 1
+wBoxAlignment:: db
 
-wMonStatusFlags:: ds 1
-wGameLogicPaused:: ds 1 ; c2cd
-wSpriteUpdatesEnabled:: ds 1
-wc2cf:: ds 1
-wMapTimeOfDay:: ds 1
+InputType::        db ; c2c7
+AutoInputAddress:: dw ; c2c8
+AutoInputBank::    db ; c2ca
+AutoInputLength::  db ; c2cb
+
+wMonStatusFlags:: db
+wGameLogicPaused:: db ; c2cd
+wSpriteUpdatesEnabled:: db
+
+wc2cf:: db ; ????
+
+wMapTimeOfDay:: db
+
 	ds 3
-wPrinterConnectionOpen:: ds 1
-wPrinterOpcode:: ds 1
-wLastDexEntry:: ds 1
-wDisableTextAcceleration:: ds 1
-wPreviousLandmark:: ds 1
-wCurrentLandmark:: ds 1
-wLandmarkSignTimer:: ds 2
+
+wPrinterConnectionOpen:: db
+wPrinterOpcode:: db
+wLastDexEntry:: db
+wDisableTextAcceleration:: db
+wPreviousLandmark:: db
+wCurrentLandmark:: db
+wLandmarkSignTimer:: dw
 wLinkMode:: ; c2dc
 ; 0 not in link battle
 ; 1 link battle
 ; 4 mobile battle
-	ds 1
+	db
 
-ScriptVar:: ; c2dd
-	ds 1
+ScriptVar:: db ; c2dd
 
-wPlayerNextMovement:: ds 1
-wPlayerMovement:: ds 1
+wPlayerNextMovement:: db
+wPlayerMovement:: db
 	ds 2
 wc2e2::
-wMovementPerson:: ds 1
+wMovementPerson:: db
 wMovementDataPointer:: ds 3 ; dba
 wc2e6:: ds 4
-wMovementByteWasControlSwitch:: ds 1
-wMovementPointer:: ds 2 ; c2eb
+wMovementByteWasControlSwitch:: db
+wMovementPointer:: dw ; c2eb
+
 	ds 3
 
-wTempObjectCopyMapObjectIndex:: ds 1 ; c2f0
-wTempObjectCopySprite:: ds 1 ; c2f1
-wTempObjectCopySpriteVTile:: ds 1 ; c2f2
-wTempObjectCopyPalette:: ds 1 ; c2f3
-wTempObjectCopyMovement:: ds 1 ; c2f4
-wTempObjectCopyRange:: ds 1 ; c2f5
-wTempObjectCopyX:: ds 1 ; c2f6
-wTempObjectCopyY:: ds 1 ; c2f7
-wTempObjectCopyRadius:: ds 1 ; c2f8
+wTempObjectCopyMapObjectIndex:: db ; c2f0
+wTempObjectCopySprite:: db ; c2f1
+wTempObjectCopySpriteVTile:: db ; c2f2
+wTempObjectCopyPalette:: db ; c2f3
+wTempObjectCopyMovement:: db ; c2f4
+wTempObjectCopyRange:: db ; c2f5
+wTempObjectCopyX:: db ; c2f6
+wTempObjectCopyY:: db ; c2f7
+wTempObjectCopyRadius:: db ; c2f8
 
 	ds 1
 
-TileDown:: ; c2fa
-	ds 1
-TileUp:: ; c2fb
-	ds 1
-TileLeft:: ; c2fc
-	ds 1
-TileRight:: ; c2fd
-	ds 1
+TileDown::  db ; c2fa
+TileUp::    db ; c2fb
+TileLeft::  db ; c2fc
+TileRight:: db ; c2fd
 
 TilePermissions:: ; c2fe
 ; set if tile behavior prevents
@@ -212,19 +200,36 @@
 ; bit 2: up
 ; bit 1: left
 ; bit 0: right
-	ds 1
+	db
 
 	ds 1
 
+
 SECTION "wSpriteAnims", WRAM0
-; wc300 - wc313 is a 10x2 dictionary.
+
+UNION ; c300
+; wSpriteAnimDict is a 10x2 dictionary
 ; keys: taken from third column of SpriteAnimSeqData
 ; values: VTiles
-
-UNION
 wSpriteAnimDict:: ds 10 * 2
 
-NEXTU
+wSpriteAnimationStructs::
+; field  0:   index
+; fields 1-3: loaded from SpriteAnimSeqData
+SpriteAnim1::  sprite_anim_struct SpriteAnim1
+SpriteAnim2::  sprite_anim_struct SpriteAnim2
+SpriteAnim3::  sprite_anim_struct SpriteAnim3
+SpriteAnim4::  sprite_anim_struct SpriteAnim4
+SpriteAnim5::  sprite_anim_struct SpriteAnim5
+SpriteAnim6::  sprite_anim_struct SpriteAnim6
+SpriteAnim7::  sprite_anim_struct SpriteAnim7
+SpriteAnim8::  sprite_anim_struct SpriteAnim8
+SpriteAnim9::  sprite_anim_struct SpriteAnim9
+SpriteAnim10:: sprite_anim_struct SpriteAnim10
+wSpriteAnimationStructsEnd::
+
+NEXTU ; c300
+; mobile data
 wc300:: ds 1
 wc301:: ds 1
 wc302:: ds 1
@@ -244,62 +249,32 @@
 wc311:: ds 1
 wc312:: ds 1
 wc313:: ds 1
-ENDU
+wc314:: ds 152
+wc3ac:: ds 8
+ENDU ; c3b4
 
-wSpriteAnimationStructs::
-; Field  0: Index
-; Fields 1-3: Loaded from SpriteAnimSeqData
-wc314::
-SpriteAnim1:: sprite_anim_struct SpriteAnim1
-wc324::
-SpriteAnim2:: sprite_anim_struct SpriteAnim2
-wc334::
-SpriteAnim3:: sprite_anim_struct SpriteAnim3
-wc344::
-SpriteAnim4:: sprite_anim_struct SpriteAnim4
-wc354::
-SpriteAnim5:: sprite_anim_struct SpriteAnim5
-wc364::
-SpriteAnim6:: sprite_anim_struct SpriteAnim6
-wc374::
-SpriteAnim7:: sprite_anim_struct SpriteAnim7
-wc384::
-SpriteAnim8:: sprite_anim_struct SpriteAnim8
-wc394::
-SpriteAnim9:: sprite_anim_struct SpriteAnim9
-wc3a4::
+wSpriteAnimCount:: db
+wCurrSpriteOAMAddr:: db
 
-UNION
-SpriteAnim10:: sprite_anim_struct SpriteAnim10
-wSpriteAnimationStructsEnd::
-NEXTU
-	ds 8
-wc3ac:: ds 8 ; c3ac
-ENDU
+CurIcon:: db ; c3b6
 
-wSpriteAnimCount:: ds 1
-wCurrSpriteOAMAddr:: ds 1
-
-CurIcon:: ; c3b6
-	ds 1
-
-
-wCurIconTile:: ds 1
+wCurIconTile:: db
 wSpriteAnimAddrBackup::
 wSpriteAnimIDBuffer::
 wCurrSpriteAddSubFlags::
-	ds 2
-wCurrAnimVTile:: ds 1
-wCurrAnimXCoord:: ds 1
-wCurrAnimYCoord:: ds 1
-wCurrAnimXOffset:: ds 1
-wCurrAnimYOffset:: ds 1
-wGlobalAnimYOffset:: ds 1
-wGlobalAnimXOffset:: ds 1
+	dw
+wCurrAnimVTile:: db
+wCurrAnimXCoord:: db
+wCurrAnimYCoord:: db
+wCurrAnimXOffset:: db
+wCurrAnimYOffset:: db
+wGlobalAnimYOffset:: db
+wGlobalAnimXOffset:: db
 wSpriteAnimsEnd::
 
 	ds 11
 
+; mobile data
 wc3cc:: ds 1
 wc3cd:: ds 31
 wc3ec:: ds 1
@@ -352,30 +327,42 @@
 
 
 SECTION "Battle", WRAM0
-UNION
+
+UNION ; c608
+; unidentified uses
 wc608::
+
+NEXTU ; c608
+; miscellaneous
+wMisc:: ds (SCREEN_WIDTH + 4) * (SCREEN_HEIGHT + 2)
+wMiscEnd::
+
+NEXTU ; c608
+; odd egg
 wOddEgg:: party_struct OddEgg
 wOddEggName:: ds PKMN_NAME_LENGTH
 wOddEggOTName:: ds PKMN_NAME_LENGTH
 
-NEXTU
+NEXTU ; c608
+; battle tower temp struct
 wBT_OTTemp:: battle_tower_struct wBT_OTTemp
 
-NEXTU
+NEXTU ; c608
+; hall of fame temp struct
 	hall_of_fame wHallOfFameTemp
 
-NEXTU
-wMisc:: ; ds (SCREEN_WIDTH + 4) * (SCREEN_HEIGHT + 2)
+NEXTU ; c608
+; timeset temp storage
+	ds 20
+wInitHourBuffer:: db ; c61c
+
+NEXTU ; c608
+; link engine data
 	ds 10
-wc612::
-	ds 6
-wc618::
-	ds 4
-wInitHourBuffer:: ; c61c
-	ds 10
-wc626::
+wc612:: ds 10
 
-NEXTU
+NEXTU ; c608
+; battle data
 wBattle::
 wEnemyMoveStruct::  move_struct wEnemyMoveStruct ; c608
 wPlayerMoveStruct:: move_struct wPlayerMoveStruct ; c60f
@@ -387,16 +374,15 @@
 
 	ds 2
 
-wWildMon:: ds 1 ; c64e
+wWildMon:: db ; c64e
 	ds 1
-wEnemyTrainerItem1:: ds 1 ; c650
-wEnemyTrainerItem2:: ds 1 ; c651
-wEnemyTrainerBaseReward:: ds 1 ; c652
+wEnemyTrainerItem1:: db ; c650
+wEnemyTrainerItem2:: db ; c651
+wEnemyTrainerBaseReward:: db ; c652
 wEnemyTrainerAIFlags:: ds 3 ; c653
 OTClassName:: ds TRAINER_CLASS_NAME_LENGTH ; c656
 
-CurOTMon:: ; c663
-	ds 1
+CurOTMon:: db ; c663
 
 wBattleParticipantsNotFainted::
 ; Bit array.  Bits 0 - 5 correspond to party members 1 - 6.
@@ -404,7 +390,7 @@
 ; Bit cleared if the mon faints.
 ; Backed up if the enemy switches.
 ; All bits cleared if the enemy faints.
-	ds 1
+	db
 
 TypeModifier:: ; c665
 ; >10: super-effective
@@ -411,21 +397,21 @@
 ;  10: normal
 ; <10: not very effective
 ; bit 7: stab
-	ds 1
+	db
 
 CriticalHit:: ; c666
 ; 0 if not critical
 ; 1 for a critical hit
 ; 2 for a OHKO
-	ds 1
+	db
 
 AttackMissed:: ; c667
 ; nonzero for a miss
-	ds 1
+	db
 
 PlayerSubStatus1:: ; c668
 ; bit
-; 7 attract
+; 7 in love
 ; 6 rollout
 ; 5 endure
 ; 4 perish song
@@ -433,7 +419,7 @@
 ; 2 protect
 ; 1 curse
 ; 0 nightmare
-	ds 1
+	db
 PlayerSubStatus2:: ; c669
 ; bit
 ; 7
@@ -444,7 +430,7 @@
 ; 2
 ; 1
 ; 0 curled
-	ds 1
+	db
 PlayerSubStatus3:: ; c66a
 ; bit
 ; 7 confused
@@ -451,11 +437,11 @@
 ; 6 flying
 ; 5 underground
 ; 4 charged
-; 3 flinch
-; 2
-; 1 rollout
+; 3 flinched
+; 2 in loop
+; 1 rampage
 ; 0 bide
-	ds 1
+	db
 PlayerSubStatus4:: ; c66b
 ; bit
 ; 7 leech seed
@@ -466,228 +452,181 @@
 ; 2 focus energy
 ; 1 mist
 ; 0 x accuracy
-	ds 1
+	db
 PlayerSubStatus5:: ; c66c
 ; bit
-; 7 cant run
+; 7 can't run
 ; 6 destiny bond
 ; 5 lock-on
-; 4 encore
+; 4 encored
 ; 3 transformed
 ; 2
 ; 1
 ; 0 toxic
-	ds 1
+	db
 
 EnemySubStatus1:: ; c66d
 ; see PlayerSubStatus1
-	ds 1
+	db
 EnemySubStatus2:: ; c66e
 ; see PlayerSubStatus2
-	ds 1
+	db
 EnemySubStatus3:: ; c66f
 ; see PlayerSubStatus3
-	ds 1
+	db
 EnemySubStatus4:: ; c670
 ; see PlayerSubStatus4
-	ds 1
+	db
 EnemySubStatus5:: ; c671
 ; see PlayerSubStatus5
-	ds 1
+	db
 
-PlayerRolloutCount:: ; c672
-	ds 1
-PlayerConfuseCount:: ; c673
-	ds 1
-PlayerToxicCount:: ; c674
-	ds 1
-PlayerDisableCount:: ; c675
-	ds 1
-PlayerEncoreCount:: ; c676
-	ds 1
-PlayerPerishCount:: ; c677
-	ds 1
-PlayerFuryCutterCount:: ; c678
-	ds 1
-PlayerProtectCount:: ; c679
-	ds 1
+PlayerRolloutCount:: db ; c672
+PlayerConfuseCount:: db ; c673
+PlayerToxicCount:: db ; c674
+PlayerDisableCount:: db ; c675
+PlayerEncoreCount:: db ; c676
+PlayerPerishCount:: db ; c677
+PlayerFuryCutterCount:: db ; c678
+PlayerProtectCount:: db ; c679
 
-EnemyRolloutCount:: ; c67a
-	ds 1
-EnemyConfuseCount:: ; c67b
-	ds 1
-EnemyToxicCount:: ; c67c
-	ds 1
-EnemyDisableCount:: ; c67d
-	ds 1
-EnemyEncoreCount:: ; c67e
-	ds 1
-EnemyPerishCount:: ; c67f
-	ds 1
-EnemyFuryCutterCount:: ; c680
-	ds 1
-EnemyProtectCount:: ; c681
-	ds 1
+EnemyRolloutCount:: db ; c67a
+EnemyConfuseCount:: db ; c67b
+EnemyToxicCount:: db ; c67c
+EnemyDisableCount:: db ; c67d
+EnemyEncoreCount:: db ; c67e
+EnemyPerishCount:: db ; c67f
+EnemyFuryCutterCount:: db ; c680
+EnemyProtectCount:: db ; c681
 
-PlayerDamageTaken:: ; c682
-	ds 2
-EnemyDamageTaken:: ; c684
-	ds 2
+PlayerDamageTaken:: dw ; c682
+EnemyDamageTaken:: dw ; c684
 
 wBattleReward:: ds 3 ; c686
 wBattleAnimParam::
 wKickCounter::
-wPresentPower:: ds 1 ; c689
-BattleScriptBuffer:: ; c68a
-	ds 40
+wPresentPower:: db ; c689
+BattleScriptBuffer:: ds 40 ; c68a
 
-BattleScriptBufferLoc:: ; c6b2
-	ds 2
+BattleScriptBufferAddress:: dw ; c6b2
 
-wTurnEnded:: ds 1 ; c6b4
+wTurnEnded:: db ; c6b4
+
 	ds 1
 
 PlayerStats:: ; c6b6
-PlayerAttack:: ds 2
-PlayerDefense:: ds 2
-PlayerSpeed:: ds 2
-PlayerSpAtk:: ds 2
-PlayerSpDef:: ds 2
+PlayerAttack:: dw
+PlayerDefense:: dw
+PlayerSpeed:: dw
+PlayerSpAtk:: dw
+PlayerSpDef:: dw
 	ds 1
+
 EnemyStats:: ; c6c1
-EnemyAttack:: ds 2
-EnemyDefense:: ds 2
-EnemySpeed:: ds 2
-EnemySpAtk:: ds 2
-EnemySpDef:: ds 2
+EnemyAttack:: dw
+EnemyDefense:: dw
+EnemySpeed:: dw
+EnemySpAtk:: dw
+EnemySpDef:: dw
 	ds 1
 
 PlayerStatLevels:: ; c6cc
 ; 07 neutral
-PlayerAtkLevel:: ; c6cc
-	ds 1
-PlayerDefLevel:: ; c6cd
-	ds 1
-PlayerSpdLevel:: ; c6ce
-	ds 1
-PlayerSAtkLevel:: ; c6cf
-	ds 1
+PlayerAtkLevel:: db ; c6cc
+PlayerDefLevel:: db ; c6cd
+PlayerSpdLevel:: db ; c6ce
+PlayerSAtkLevel:: db ; c6cf
 
-UNION
-wc6d0::
-PlayerSDefLevel:: ; c6d0
-	ds 1
-PlayerAccLevel:: ; c6d1
-	ds 1
-PlayerEvaLevel:: ; c6d2
-	ds 1
-; c6d3
-	ds 1
+UNION ; c6d0
+; finish battle RAM
+PlayerSDefLevel:: db ; c6d0
+PlayerAccLevel:: db ; c6d1
+PlayerEvaLevel:: db ; c6d2
+	ds 1 ; c6d3
 PlayerStatLevelsEnd::
 
 EnemyStatLevels:: ; c6d4
 ; 07 neutral
-EnemyAtkLevel:: ; c6d4
+EnemyAtkLevel:: db ; c6d4
+EnemyDefLevel:: db ; c6d5
+EnemySpdLevel:: db ; c6d6
+EnemySAtkLevel:: db ; c6d7
+EnemySDefLevel:: db ; c6d8
+EnemyAccLevel:: db ; c6d9
+EnemyEvaLevel:: db ; c6da
 	ds 1
-EnemyDefLevel:: ; c6d5
-	ds 1
-EnemySpdLevel:: ; c6d6
-	ds 1
-EnemySAtkLevel:: ; c6d7
-	ds 1
-EnemySDefLevel:: ; c6d8
-	ds 1
-EnemyAccLevel:: ; c6d9
-	ds 1
-EnemyEvaLevel:: ; c6da
-	ds 1
 
+EnemyTurnsTaken:: db ; c6dc
+PlayerTurnsTaken:: db ; c6dd
 	ds 1
-EnemyTurnsTaken:: ; c6dc
-	ds 1
-PlayerTurnsTaken:: ; c6dd
-	ds 1
 
-	ds 1
+PlayerSubstituteHP:: db ; c6df
+EnemySubstituteHP:: db ; c6e0
 
-PlayerSubstituteHP:: ; c6df
+wUnusedPlayerLockedMove:: db ; c6e1
 	ds 1
-EnemySubstituteHP:: ; c6e0
-	ds 1
 
-wUnusedPlayerLockedMove:: ds 1 ; c6e1
-	ds 1
-CurPlayerMove:: ; c6e3
-	ds 1
-CurEnemyMove:: ; c6e4
-	ds 1
+CurPlayerMove:: db ; c6e3
+CurEnemyMove:: db ; c6e4
 
 LinkBattleRNCount:: ; c6e5
 ; how far through the prng stream
-	ds 1
+	db
 
-wEnemyItemState:: ds 1 ; c6e6
+wEnemyItemState:: db ; c6e6
 	ds 2
-CurEnemyMoveNum:: ; c6e9
-	ds 1
+CurEnemyMoveNum:: db ; c6e9
 
-wEnemyHPAtTimeOfPlayerSwitch:: ds 2 ; c6ea
+wEnemyHPAtTimeOfPlayerSwitch:: dw ; c6ea
 wPayDayMoney:: ds 3 ; c6ec
 
-wSafariMonAngerCount:: ds 1
-wSafariMonEating:: ds 2
-wEnemyBackupDVs:: ; used when enemy is transformed
-	ds 2
-AlreadyDisobeyed:: ; c6f4
+wSafariMonAngerCount:: db
+wSafariMonEating:: db
 	ds 1
+wEnemyBackupDVs:: dw ; used when enemy is transformed
+AlreadyDisobeyed:: db ; c6f4
 
-DisabledMove:: ; c6f5
-	ds 1
-EnemyDisabledMove:: ; c6f6
-	ds 1
-wWhichMonFaintedFirst:: ds 1
+DisabledMove:: db ; c6f5
+EnemyDisabledMove:: db ; c6f6
+wWhichMonFaintedFirst:: db
 
 ; exists so you can't counter on switch
-LastPlayerCounterMove:: ; c6f8
-	ds 1
-LastEnemyCounterMove:: ; c6f9
-	ds 1
+LastPlayerCounterMove:: db ; c6f8
+LastEnemyCounterMove:: db ; c6f9
 
-wEnemyMinimized:: ds 1 ; c6fa
+wEnemyMinimized:: db ; c6fa
 
-AlreadyFailed:: ; c6fb
-	ds 1
+AlreadyFailed:: db ; c6fb
 
-wBattleParticipantsIncludingFainted:: ds 1 ; c6fc
-wDanger:: ds 1 ; c6fd
-wPlayerMinimized:: ds 1 ; c6fe
+wBattleParticipantsIncludingFainted:: db ; c6fc
+wDanger:: db ; c6fd
+wPlayerMinimized:: db ; c6fe
 PlayerScreens:: ; c6ff
 ; bit
+; 7
+; 6
+; 5
 ; 4 reflect
 ; 3 light screen
 ; 2 safeguard
+; 1
 ; 0 spikes
-	ds 1
+	db
 
 EnemyScreens:: ; c700
 ; see PlayerScreens
-	ds 1
+	db
 
-PlayerSafeguardCount:: ; c701
+PlayerSafeguardCount:: db ; c701
+PlayerLightScreenCount:: db ; c702
+PlayerReflectCount:: db ; c703
 	ds 1
-PlayerLightScreenCount:: ; c702
-	ds 1
-PlayerReflectCount:: ; c703
-	ds 1
 
-	ds 1
-EnemySafeguardCount:: ; c705
-	ds 1
-EnemyLightScreenCount:: ; c706
-	ds 1
-EnemyReflectCount:: ; c707
-	ds 1
+EnemySafeguardCount:: db ; c705
+EnemyLightScreenCount:: db ; c706
+EnemyReflectCount:: db ; c707
 	ds 2
+
 Weather:: ; c70a
 ; 00 normal
 ; 01 rain
@@ -696,113 +635,110 @@
 ; 04 rain stopped
 ; 05 sunliight faded
 ; 06 sandstorm subsided
-	ds 1
+	db
 
 WeatherCount:: ; c70b
 ; # turns remaining
-	ds 1
+	db
 
-LoweredStat:: ; c70c
-	ds 1
-EffectFailed:: ; c70d
-	ds 1
-FailedMessage:: ; c70e
-	ds 1
-wEnemyGoesFirst:: ; c70f
-	ds 1
-wPlayerIsSwitching:: ds 1 ; c710
-wEnemyIsSwitching::  ds 1 ; c711
+LoweredStat:: db ; c70c
+EffectFailed:: db ; c70d
+FailedMessage:: db ; c70e
+wEnemyGoesFirst:: db ; c70f
 
+wPlayerIsSwitching:: db ; c710
+wEnemyIsSwitching::  db ; c711
+
 PlayerUsedMoves:: ; c712
 ; add a move that has been used once by the player
 ; added in order of use
 	ds NUM_MOVES
 
-wEnemyAISwitchScore:: ds 1 ; c716
-wEnemySwitchMonParam:: ds 1 ; c717
-wEnemySwitchMonIndex:: ds 1 ; c718
-wTempLevel:: ds 1 ; c719
-LastPlayerMon:: ds 1 ; c71a
-LastPlayerMove:: ; c71b
-	ds 1
-LastEnemyMove:: ; c71c
-	ds 1
+wEnemyAISwitchScore:: db ; c716
+wEnemySwitchMonParam:: db ; c717
+wEnemySwitchMonIndex:: db ; c718
+wTempLevel:: db ; c719
+LastPlayerMon:: db ; c71a
+LastPlayerMove:: db ; c71b
+LastEnemyMove:: db ; c71c
 
-wPlayerFutureSightCount:: ds 1 ; c71d
-wEnemyFutureSightCount:: ds 1 ; c71e
-wGivingExperienceToExpShareHolders:: ds 1 ; c71f
+wPlayerFutureSightCount:: db ; c71d
+wEnemyFutureSightCount:: db ; c71e
+
+wGivingExperienceToExpShareHolders:: db ; c71f
+
 wBackupEnemyMonBaseStats:: ds 5 ; c720
 wBackupEnemyMonCatchRate:: db ; c725
 wBackupEnemyMonBaseExp:: db ; c726
-wPlayerFutureSightDamage:: ds 2 ; c727
-wEnemyFutureSightDamage:: ds 2 ; c729
-wPlayerRageCounter:: ds 1 ; c72b
-wEnemyRageCounter:: ds 1 ; c72c
-wBeatUpHitAtLeastOnce:: ds 1 ; c72d
-wPlayerTrappingMove:: ds 1 ; c72e
-wEnemyTrappingMove:: ds 1 ; c72f
-wPlayerWrapCount:: ds 1 ; c730
-wEnemyWrapCount:: ds 1 ; c731
-wPlayerCharging:: ds 1 ; c732
-wEnemyCharging:: ds 1 ; c733
-BattleEnded:: ; c734
-	ds 1
 
+wPlayerFutureSightDamage:: dw ; c727
+wEnemyFutureSightDamage:: dw ; c729
+wPlayerRageCounter:: db ; c72b
+wEnemyRageCounter:: db ; c72c
+
+wBeatUpHitAtLeastOnce:: db ; c72d
+
+wPlayerTrappingMove:: db ; c72e
+wEnemyTrappingMove:: db ; c72f
+wPlayerWrapCount:: db ; c730
+wEnemyWrapCount:: db ; c731
+wPlayerCharging:: db ; c732
+wEnemyCharging:: db ; c733
+
+BattleEnded:: db ; c734
+
 wWildMonMoves:: ds NUM_MOVES ; c735
 wWildMonPP:: ds NUM_MOVES ; c739
-wAmuletCoin:: ds 1 ; c73a
-wSomeoneIsRampaging:: ds 1 ; c73b
-wPlayerJustGotFrozen:: ds 1 ; c73c
-wEnemyJustGotFrozen:: ds 1 ; c73d
+
+wAmuletCoin:: db ; c73a
+
+wSomeoneIsRampaging:: db ; c73b
+
+wPlayerJustGotFrozen:: db ; c73c
+wEnemyJustGotFrozen:: db ; c73d
 wBattleEnd::
 ; Battle RAM
-
 ; c741
-NEXTU
+
+NEXTU ; c6d0
+; trade
 wTrademons::
 wPlayerTrademon:: trademon wPlayerTrademon
 wOTTrademon::     trademon wOTTrademon
 wTrademonsEnd::
-wTradeAnimPointer::
-	ds 2
+wTradeAnimAddress:: dw
 wLinkPlayer1Name:: ds NAME_LENGTH
 wLinkPlayer2Name:: ds NAME_LENGTH
-wLinkTradeSendmonSpecies:: ds 1
-wLinkTradeGetmonSpecies:: ds 1
-wc74e:: ds 107
-wc7b9:: ds 1
-wc7ba:: ds 1
-wc7bb:: ds 2
-wc7bd::
+wLinkTradeSendmonSpecies:: db
+wLinkTradeGetmonSpecies::  db
 
-NEXTU
+NEXTU ; c6d0
 ; naming screen
-wNamingScreenDestinationPointer:: ds 2 ; c6d0
-wNamingScreenCurrNameLength:: ds 1 ; c6d2
-wNamingScreenMaxNameLength:: ds 1 ; c6d3
-wNamingScreenType:: ds 1 ; c6d4
-wNamingScreenCursorObjectPointer:: ds 2 ; c6d5
-wNamingScreenLastCharacter:: ds 1 ; c6d7
-wNamingScreenStringEntryCoord:: ds 2 ; c6d8
+wNamingScreenDestinationPointer:: dw ; c6d0
+wNamingScreenCurrNameLength:: db ; c6d2
+wNamingScreenMaxNameLength:: db ; c6d3
+wNamingScreenType:: db ; c6d4
+wNamingScreenCursorObjectPointer:: dw ; c6d5
+wNamingScreenLastCharacter:: db ; c6d7
+wNamingScreenStringEntryCoord:: dw ; c6d8
 
-NEXTU
+NEXTU ; c6d0
 ; pokegear
-wPokegearPhoneLoadNameBuffer:: ds 1 ; c6d0
-wPokegearPhoneCursorPosition:: ds 1 ; c6d1
-wPokegearPhoneScrollPosition:: ds 1 ; c6d2
-wPokegearPhoneSelectedPerson:: ds 1 ; c6d3
-wPokegearPhoneSubmenuCursor:: ds 1 ; c6d4
-wPokegearMapCursorObjectPointer:: ds 2 ; c6d5
-wPokegearMapCursorLandmark:: ds 1 ; c6d7
-wPokegearMapPlayerIconLandmark:: ds 1 ; c6d8
-wPokegearRadioChannelBank:: ds 1 ; c6d9
-wPokegearRadioChannelAddr:: ds 2 ; c6da
-wPokegearRadioMusicPlaying:: ds 1 ; c6dc
+wPokegearPhoneLoadNameBuffer:: db ; c6d0
+wPokegearPhoneCursorPosition:: db ; c6d1
+wPokegearPhoneScrollPosition:: db ; c6d2
+wPokegearPhoneSelectedPerson:: db ; c6d3
+wPokegearPhoneSubmenuCursor:: db ; c6d4
+wPokegearMapCursorObjectPointer:: dw ; c6d5
+wPokegearMapCursorLandmark:: db ; c6d7
+wPokegearMapPlayerIconLandmark:: db ; c6d8
+wPokegearRadioChannelBank:: db ; c6d9
+wPokegearRadioChannelAddr:: dw ; c6da
+wPokegearRadioMusicPlaying:: db ; c6dc
 
-NEXTU
+NEXTU ; c6d0
+; slot machine
 wSlots::
-; Slot Machine
-; c6d0
 wReel1:: slot_reel wReel1
 wReel2:: slot_reel wReel2
 wReel3:: slot_reel wReel3
@@ -810,144 +746,141 @@
 wReel1Stopped:: ds 3
 wReel2Stopped:: ds 3
 wReel3Stopped:: ds 3
-wSlotBias:: ds 1
-wSlotBet:: ds 1
-wFirstTwoReelsMatching:: ds 1
-wFirstTwoReelsMatchingSevens:: ds 1
-wSlotMatched:: ds 1
+wSlotBias:: db
+wSlotBet:: db
+wFirstTwoReelsMatching:: db
+wFirstTwoReelsMatchingSevens:: db
+wSlotMatched:: db
 wCurrReelStopped:: ds 3
-wPayout:: ds 2
-wCurrReelXCoord:: ds 1
-wCurrReelYCoord:: ds 1
+wPayout:: dw
+wCurrReelXCoord:: db
+wCurrReelYCoord:: db
 	ds 2
-wSlotBuildingMatch:: ds 1
+wSlotBuildingMatch:: db
 wSlotsDataEnd::
 	ds 28
 wSlotsEnd::
 
-NEXTU
-; Card Flip
-; c6d0
+NEXTU ; c6d0
+; card flip
 wCardFlip::
 wDeck:: ds 24
 wDeckEnd::
 ; c6e8
-wCardFlipNumCardsPlayed:: ds 1
-wCardFlipFaceUpCard:: ds 1
+wCardFlipNumCardsPlayed:: db
+wCardFlipFaceUpCard:: db
 wDiscardPile:: ds 24
 wDiscardPileEnd::
 wCardFlipEnd::
 
-NEXTU
-; Dummy Game
-; c6d0
+NEXTU ; c6d0
+; dummy game
 wDummyGame::
 wDummyGameCards:: ds 9 * 5
 wDummyGameCardsEnd::
-wDummyGameLastCardPicked:: ds 1 ; c6fd
-wDummyGameCard1:: ds 1 ; c6fe
-wDummyGameCard2:: ds 1 ; c6ff
-wDummyGameCard1Location:: ds 1 ; c700
-wDummyGameCard2Location:: ds 1 ; c701
-wDummyGameNumberTriesRemaining:: ds 1 ; c702
+wDummyGameLastCardPicked:: db ; c6fd
+wDummyGameCard1:: db ; c6fe
+wDummyGameCard2:: db ; c6ff
+wDummyGameCard1Location:: db ; c700
+wDummyGameCard2Location:: db ; c701
+wDummyGameNumberTriesRemaining:: db ; c702
 wDummyGameLastMatches:: ds 5 ; c703
-wDummyGameCounter:: ds 1 ; c708
-wDummyGameNumCardsMatched:: ds 1 ; c709
+wDummyGameCounter:: db ; c708
+wDummyGameNumCardsMatched:: db ; c709
 wDummyGameEnd::
 
-NEXTU
-; Unown Puzzle
+NEXTU ; c6d0
+; unown puzzle
 wUnownPuzzle::
-wPuzzlePieces::
-	ds 6 * 6
+wPuzzlePieces:: ds 6 * 6
 wUnownPuzzleEnd::
 
-NEXTU
+NEXTU ; c6d0
+; pokedex
 wPokedexDataStart::
-wPokedexOrder:: ds NUM_POKEMON +- 1
-wPokedexOrderEnd:: ds 6
+wPokedexOrder:: ds $100 ; NUM_POKEMON + 5
+wPokedexOrderEnd::
 wPokedexMetadata::
-wDexListingScrollOffset:: ; offset of the first displayed entry from the start
-wc7d0:: ds 1
-wDexListingCursor::
-wc7d1:: ds 1 ; Dex cursor
-wDexListingEnd::
-wc7d2:: ds 1 ; Last mon to display
-wDexListingHeight:: ; number of entries displayed at once in the dex listing
-wc7d3:: ds 1
-wCurrentDexMode::   ; Pokedex Mode
-wc7d4:: ds 1 ; Index of the topmost visible item in a scrolling menu
-wDexSearchMonType1:: ds 1 ; first type to search
-wDexSearchMonType2:: ds 1 ; second type to search
-wDexSearchResultCount:: ds 1
-wDexArrowCursorPosIndex:: ds 1
-wDexArrowCursorDelayCounter:: ds 1
-wDexArrowCursorBlinkCounter:: ds 1
-wDexSearchSlowpokeFrame:: ds 1
-wUnlockedUnownMode:: ds 1
-wDexCurrentUnownIndex:: ds 1
-wDexUnownCount:: ds 1
-wDexConvertedMonType:: ds 1 ; mon type converted from dex search mon type
-wDexListingScrollOffsetBackup:: ds 1
-wDexListingCursorBackup:: ds 1
-wBackupDexListingCursor::
-wc7e2:: ds 1
-wBackupDexListingPage::
-wc7e3:: ds 1
-wDexCurrentLocation::
-wc7e4:: ds 1
+wDexListingScrollOffset:: db ; offset of the first displayed entry from the start
+wDexListingCursor:: db ; Dex cursor
+wDexListingEnd:: db ; Last mon to display
+wDexListingHeight:: db ; number of entries displayed at once in the dex listing
+wCurrentDexMode:: db ; Pokedex Mode
+wDexSearchMonType1:: db ; first type to search
+wDexSearchMonType2:: db ; second type to search
+wDexSearchResultCount:: db
+wDexArrowCursorPosIndex:: db
+wDexArrowCursorDelayCounter:: db
+wDexArrowCursorBlinkCounter:: db
+wDexSearchSlowpokeFrame:: db
+wUnlockedUnownMode:: db
+wDexCurrentUnownIndex:: db
+wDexUnownCount:: db
+wDexConvertedMonType:: db ; mon type converted from dex search mon type
+wDexListingScrollOffsetBackup:: db
+wDexListingCursorBackup:: db
+wBackupDexListingCursor:: db
+wBackupDexListingPage:: db
+wDexCurrentLocation:: db
 IF DEF(CRYSTAL11)
-wPokedexStatus::
-ELSE
+wPokedexStatus:: db
 wPokedexDataEnd::
+ELSE
+wPokedexDataEnd:: ds 1
 ENDC
-	ds 1
-IF DEF(CRYSTAL11)
-wPokedexDataEnd::
-ENDC
 	ds 2
 
-wMiscEnd::
-ENDU
-ENDU
+NEXTU ; c6d0
+; mobile data
+wc6d0:: ds 126
+wc74e:: ds 107
+wc7b9:: ds 1
+wc7ba:: ds 1
+wc7bb:: ds 2
+wc7bd:: ds 19
+wc7d0:: ds 1
+wc7d1:: ds 1
+wc7d2:: ds 1
+wc7d3:: ds 1
+wc7d4:: ds 1
+ENDU ; c7e8
+ENDU ; c7e8
 
 wc7e8:: ds 24 ; ????
 
+
 SECTION "Overworld Map", WRAM0
 
-UNION
-OverworldMap:: ; c800
-	ds 1300
+UNION ; c800
+OverworldMap:: ds 1300 ; c800
 OverworldMapEnd::
-NEXTU
 
+NEXTU ; c800
+; GB Printer screen RAM
 wGameboyPrinterRAM::
 wGameboyPrinterScreen:: ds SCREEN_HEIGHT * SCREEN_WIDTH ; c800
 wGameboyPrinterScreenEnd:: ; c968
-NEXTU
 
-wGameboyPrinter2bppSource::
-	ds 40 tiles
+NEXTU ; c800
+; GB Printer data
+wGameboyPrinter2bppSource:: ds 40 tiles
 wGameboyPrinter2bppSourceEnd::
-wca80:: ds 1
-wPrinterRowIndex:: ds 1
+wca80:: db
+wPrinterRowIndex:: db
 
 ; Printer data header
-wca82:: ds 1
-wca83:: ds 1
-wca84:: ds 1
-wca85:: ds 1
+wPrinterData:: ds 4
 wPrinterChecksum:: dw ; ca86
-wPrinterHandshake:: ds 1
+wPrinterHandshake:: db
 wPrinterStatusFlags::
 ; bit 7: set if error 1 (battery low)
 ; bit 6: set if error 4 (too hot or cold)
 ; bit 5: set if error 3 (paper jammed or empty)
 ; if this and the previous byte are both $ff: error 2 (connection error)
-	ds 1
+	db
 
-wHandshakeFrameDelay:: ds 1
-wPrinterSerialFrameDelay:: ds 1
+wHandshakeFrameDelay:: db
+wPrinterSerialFrameDelay:: db
 wPrinterSendByteOffset:: dw
 wPrinterSendByteCounter:: dw
 
@@ -954,27 +887,33 @@
 ; tilemap backup?
 wPrinterTileMapBuffer:: ds SCREEN_HEIGHT * SCREEN_WIDTH ; ca90
 wPrinterTileMapBufferEnd::
-wPrinterStatus:: ds 1 ; cbf8
+wPrinterStatus:: db ; cbf8
 	ds 1
 wcbfa:: ds 1
-wGBPrinterSettings:: ds 1
+wGBPrinterSettings:: db
 	ds 16
 wGameboyPrinterRAMEnd::
 
-NEXTU
+NEXTU ; c800
+; bill's pc data
 wBillsPCPokemonList:: ; c800
 ; Pokemon, box number, list index
+	ds 3 * 30
 
-wMysteryGiftPartyTemp:: ; ds PARTY_LENGTH * (1 + 1 + NUM_MOVES)
-wMysteryGiftStaging::
+NEXTU ; c800
+; raw link data
+wLinkData:: ds $514
+wLinkDataEnd::
 
-wLinkData:: ; ds $514
+NEXTU ; c800
+; link data members
 wLinkPlayerName:: ds NAME_LENGTH
-wLinkPartyCount:: ds 1
+wLinkPartyCount:: db
 wLinkPartySpecies:: ds PARTY_LENGTH
-wLinkPartySpeciesEnd:: ds 1
+wLinkPartySpeciesEnd:: db ; legacy scripts don't check PartyCount
 
-UNION
+UNION ; c813
+; time capsule party data
 wTimeCapsulePlayerData::
 wTimeCapsulePartyMon1:: red_party_struct wTimeCapsulePartyMon1
 wTimeCapsulePartyMon2:: red_party_struct wTimeCapsulePartyMon2
@@ -986,7 +925,8 @@
 wTimeCapsulePartyMonNicks:: ds PARTY_LENGTH * PKMN_NAME_LENGTH
 wTimeCapsulePlayerDataEnd::
 
-NEXTU
+NEXTU ; c813
+; link player data
 wLinkPlayerData::
 wLinkPlayerPartyMon1:: party_struct wLinkPlayerPartyMon1
 wLinkPlayerPartyMon2:: party_struct wLinkPlayerPartyMon2
@@ -997,13 +937,13 @@
 wLinkPlayerPartyMonOTNames:: ds PARTY_LENGTH * NAME_LENGTH
 wLinkPlayerPartyMonNicks:: ds PARTY_LENGTH * PKMN_NAME_LENGTH
 wLinkPlayerDataEnd::
-ENDU
-	ds $35d
+ENDU ; c9b7
 
-wLinkDataEnd::
-NEXTU
-
-wc800::	ds 1
+NEXTU ; c800
+; mystery gift data
+wMysteryGiftPartyTemp:: ; ds PARTY_LENGTH * (1 + 1 + NUM_MOVES)
+wMysteryGiftStaging::
+wc800:: ds 1
 wc801:: ds 1
 wc802:: ds 1
 wc803:: ds 4
@@ -1017,14 +957,13 @@
 wc814:: ds 4
 wc818:: ds 8
 wc820:: ds 1
-wc821:: ds 15
-wc830:: ds 16
-wc840:: ds 16
-UNION
+wc821:: ds 47
+
+UNION ; c850
 wMysteryGiftTrainerData:: ds (1 + 1 + NUM_MOVES) * PARTY_LENGTH + 2
 wMysteryGiftTrainerDataEnd::
 
-NEXTU
+NEXTU ; c850
 wc850:: ds 16
 wc860:: ds 16
 wc870:: ds 16
@@ -1036,62 +975,53 @@
 wc8d0:: ds 16
 wc8e0:: ds 16
 wc8f0:: ds 16
-ENDU
+ENDU ; c900
 
 wMysteryGiftPartnerData::
-wc900:: ds 1
-wMysteryGiftPartnerID:: ds 2
+wc900:: db
+wMysteryGiftPartnerID:: dw
 wMysteryGiftPartnerName:: ds NAME_LENGTH
-wMysteryGiftPartnerDexCaught:: ds 1
+wMysteryGiftPartnerDexCaught:: db
 wc90f::
-wMysteryGiftPartnerSentDeco:: ds 1
-wMysteryGiftPartnerWhichItem:: ds 1
-wMysteryGiftPartnerWhichDeco:: ds 1
-wMysteryGiftPartnerBackupItem:: ds 2
+wMysteryGiftPartnerSentDeco:: db
+wMysteryGiftPartnerWhichItem:: db
+wMysteryGiftPartnerWhichDeco:: db
+wMysteryGiftPartnerBackupItem:: db
+	ds 1
 wMysteryGiftPartnerDataEnd::
-	ds 12
-wc920:: ds 16
-wc930:: ds 16
-wc940:: ds 16
+
+	ds 60
+
 wMysteryGiftPlayerData::
-wc950:: ds 1
-wMysteryGiftPlayerID:: ds 2
+	ds 1
+wMysteryGiftPlayerID:: dw
 wMysteryGiftPlayerName:: ds NAME_LENGTH
-wMysteryGiftPlayerDexCaught:: ds 1
-wMysteryGiftPlayerSentDeco:: ds 1
-wMysteryGiftPlayerWhichItem:: ds 1
-wMysteryGiftPlayerWhichDeco:: ds 1
-wMysteryGiftPlayerBackupItem:: ds 2
+wMysteryGiftPlayerDexCaught:: db
+wMysteryGiftPlayerSentDeco:: db
+wMysteryGiftPlayerWhichItem:: db
+wMysteryGiftPlayerWhichDeco:: db
+wMysteryGiftPlayerBackupItem:: db
+	ds 1
 wMysteryGiftPlayerDataEnd::
 
-wc964:: ds 12
-wc970:: ds 16
-wc980:: ds 16
-wc990:: ds 16
-wc9a0:: ds 16
-wc9b0:: ds 16
-wc9c0:: ds 16
-wc9d0:: ds 16
-wc9e0:: ds 16
-wc9f0:: ds 4
+	ds 144
+
 wc9f4:: ds 5
 wc9f9:: ds 7
 
-wCreditsFaux2bpp::
-wca00:: ds 1
-wca01:: ds 1
-wca02:: ds 14
-wca10:: ds 16
-wca20:: ds 16
-wca30:: ds 16
-wca40:: ds 16
-wca50:: ds 16
-wca60:: ds 16
-wca70:: ds 16
+UNION ; ca00
+; blank credits tile buffer
+wCreditsFaux2bpp:: ds 128
 
-	ds 35
+NEXTU ; ca00
+; mystery gift data
+wca00:: db
+wca01:: db
+wca02:: db
+	ds 160
+ENDU ; caa3
 
-wcaa3:: ds 2 ; caa3
+wcaa3:: ds 2
 wcaa5:: ds 16
 wcab5:: ds 10
 wcabf:: ds 10
@@ -1100,16 +1030,18 @@
 wcb0e:: ds 5
 wcb13:: ds 9
 wcb1c:: ds 14
-wBillsPC_ScrollPosition:: ds 1
-wBillsPC_CursorPosition:: ds 1
-wBillsPC_NumMonsInBox:: ds 1
-wBillsPC_NumMonsOnScreen:: ds 1
-wBillsPC_LoadedBox:: ds 1 ; 0 if party, 1 - 14 if box, 15 if active box
-wBillsPC_BackupScrollPosition:: ds 1
-wBillsPC_BackupCursorPosition:: ds 1
-wBillsPC_BackupLoadedBox:: ds 1
-wBillsPC_MonHasMail:: ds 1
+
+wBillsPC_ScrollPosition:: db
+wBillsPC_CursorPosition:: db
+wBillsPC_NumMonsInBox:: db
+wBillsPC_NumMonsOnScreen:: db
+wBillsPC_LoadedBox:: db ; 0 if party, 1 - 14 if box, 15 if active box
+wBillsPC_BackupScrollPosition:: db
+wBillsPC_BackupCursorPosition:: db
+wBillsPC_BackupLoadedBox:: db
+wBillsPC_MonHasMail:: db
 	ds 18
+
 wcb45:: ds 20
 wcb59:: ds 20
 wcb6d:: ds 1
@@ -1116,8 +1048,7 @@
 wcb6e:: ds 22
 wcb84:: ds 100
 wcbe8:: dw
-wLinkOTPartyMonTypes::
-	ds 2 * PARTY_LENGTH
+wLinkOTPartyMonTypes:: ds 2 * PARTY_LENGTH
 	ds 84
 
 wcc4a:: ds 22
@@ -1132,13 +1063,26 @@
 wccb8:: ds 1
 wccb9:: ds 1
 wccba:: ds 102
-ENDU
+ENDU ; cd20
 
+
 SECTION "Video", WRAM0
 
-UNION
-CreditsPos::
-BGMapBuffer::
+UNION ; cd20
+; BGMapBuffer
+BGMapBuffer::     ds 40 ; cd20
+BGMapPalBuffer::  ds 40 ; cd48
+BGMapBufferPtrs:: ds 40 ; cd70 ; 20 bg map addresses (16x8 tiles)
+BGMapBufferEnd::
+
+NEXTU ; cd20
+; credits
+CreditsPos:: db
+CreditsUnusedCD21:: db
+CreditsTimer:: db
+
+NEXTU ; cd20
+; mobile data
 wMobileMonSpeciesPointerBuffer:: dw
 wMobileMonStructurePointerBuffer:: dw
 wMobileMonOTNamePointerBuffer:: dw
@@ -1145,13 +1089,11 @@
 wMobileMonNicknamePointerBuffer:: dw
 wMobileMonMailPointerBuffer:: dw
 
-NEXTU
+NEXTU ; cd20
+; more mobile data
 wcd20:: ds 1
 wcd21:: ds 1
-wcd22::
-CreditsTimer:: ; cd22
-	ds 1
-
+wcd22:: ds 1
 wcd23:: ds 1
 wcd24:: ds 1
 wMobileCommsJumptableIndex:: ds 1 ; cd25
@@ -1159,11 +1101,11 @@
 wcd27:: ds 1
 wcd28:: ds 1
 wcd29:: ds 1
-ENDU
 
 wMobileMonSpeciesBuffer::
-wcd2a:: ds 1
-wTempOddEggNickname::
+wcd2a:: db
+
+wTempOddEggNickname:: ; ds 11
 wcd2b:: ds 1
 wcd2c:: ds 1
 wcd2d:: ds 1
@@ -1177,9 +1119,9 @@
 wcd35:: ds 1
 
 ; current time for link/mobile?
-wcd36:: ds 1 ; hours
-wcd37:: ds 1 ; mins
-wcd38:: ds 1 ; secs
+wcd36:: db ; hours
+wcd37:: db ; mins
+wcd38:: db ; secs
 
 wcd39:: ds 1
 wcd3a:: ds 1
@@ -1194,29 +1136,31 @@
 wcd43:: ds 1
 
 ; some sort of timer in link battles
-wMobileInactivityTimerMinutes:: ds 1 ; mins
-wMobileInactivityTimerSeconds:: ds 1 ; secs
-wMobileInactivityTimerFrames:: ds 1 ; frames
-
+wMobileInactivityTimerMinutes:: db ; mins
+wMobileInactivityTimerSeconds:: db ; secs
+wMobileInactivityTimerFrames:: db ; frames
 wcd47:: ds 1
 
-BGMapPalBuffer:: ; cd48
-	ds 1 ; 40
+	ds 1
 
 wBTTempOTSprite::
-wcd49:: ds 1
+wcd49:: db
+
 wcd4a:: ds 1
 wcd4b:: ds 1
+
 wEZChatCursorXCoord::
-wcd4c:: ds 1
+wcd4c:: db
 wEZChatCursorYCoord::
-wcd4d:: ds 1
+wcd4d:: db
+
 wcd4e:: ds 1
 wcd4f:: ds 1
 wcd50:: ds 1
 wcd51:: ds 1
 wcd52:: ds 1
-wMobileOpponentBattleMessage:: ; dc $c
+
+wMobileOpponentBattleMessage:: ; ds 12
 wcd53:: ds 1
 wcd54:: ds 1
 wcd55:: ds 1
@@ -1244,18 +1188,15 @@
 wcd6c:: ds 1
 wcd6d:: ds 1
 wcd6e:: ds 1
-wcd6f:: ds 1
-
-BGMapBufferPtrs:: ; cd70
-; 20 bg map addresses (16x8 tiles)
-	ds 1 ; 40
-
+wcd6f:: ds 2
 wcd71:: ds 1
 wcd72:: ds 1
 wcd73:: ds 1
 wcd74:: ds 1
+
 wOTMonSelection:: ds 2 ; ds 3
 wcd77:: ds 1
+
 wcd78:: ds 1
 wcd79:: ds 1
 wcd7a:: ds 2
@@ -1272,17 +1213,18 @@
 wcd8b:: ds 1
 wcd8c:: ds 1
 wcd8d:: ds 11
-BGMapBufferEnd::
+ENDU ; cd98
 
-SGBPredef:: ; cd98
-	ds 1
-PlayerHPPal:: ; cd99
-	ds 1
-EnemyHPPal:: ; cd9a
-	ds 1
+SGBPredef:: db ; cd98
 
+PlayerHPPal:: db ; cd99
+EnemyHPPal:: db ; cd9a
+
 wHPPals:: ds PARTY_LENGTH
-wcda1:: ds 8
+wCurHPPal:: db
+
+	ds 7
+
 wSGBPals:: ds 48 ; cda9
 
 AttrMap:: ; cdd9
@@ -1297,101 +1239,123 @@
 	ds SCREEN_WIDTH * SCREEN_HEIGHT
 AttrMapEnd::
 
-UNION
+UNION ; cf41
+; addresses dealing with serial comms
 	ds 1
-wcf42:: ds 2
-wcf44:: ds 1
-wcf45::
+wcf42:: db
+	ds 1
+wcf44:: db
+wcf45:: db
 
-NEXTU
-wTileAnimBuffer::
-	ds $10
-; addresses dealing with serial comms
-ENDU
+NEXTU ; cf41
+wTileAnimBuffer:: ds 1 tiles
+ENDU ; cf51
 
-wOtherPlayerLinkMode:: ds 1
-wOtherPlayerLinkAction:: ds 4
-wPlayerLinkAction:: ds 1
-wcf57:: ds 4
+; link data
+wOtherPlayerLinkMode:: db
+wOtherPlayerLinkAction:: db
+	ds 3
+wPlayerLinkAction:: db
+wcf57:: db
+	ds 3
 wLinkTimeoutFrames:: dw ; cf5b
-wcf5d:: ds 2
+wcf5d:: dw
 
-MonType:: ; cf5f
-	ds 1
+MonType:: db ; cf5f
 
-CurSpecies:: ; cf60
-CurMove::
-	ds 1
+CurSpecies::
+CurMove:: db ; cf60
 
-wNamedObjectTypeBuffer:: ds 1
+wNamedObjectTypeBuffer:: db
+
 	ds 1
-wJumptableIndex::
+
 wBattleTowerBattleEnded::
-wcf63:: ds 1
-wNrOfBeatenBattleTowerTrainers::
-wMomBankDigitCursorPosition::
-wIntroSceneFrameCounter::
-wHoldingUnownPuzzlePiece::
-wCardFlipCursorY::
-wCreditsBorderFrame::
-wDexEntryPrevJumptableIndex::
-wcf64:: ds 1
+wJumptableIndex:: db
+
+UNION ; cf64
+; unidentified
+wcf64:: db
+wcf65:: db
+wcf66:: db
+
+NEXTU ; cf64
+; intro and title data
+wIntroSceneFrameCounter:: db
+wTitleScreenTimer:: dw
+
+NEXTU ; cf64
+; credits data
+wCreditsBorderFrame:: db
+wCreditsBorderMon:: db
+wCreditsLYOverride:: db
+
+NEXTU ; cf64
+; unown puzzle data
+wHoldingUnownPuzzlePiece:: db
+wUnownPuzzleCursorPosition:: db
+wUnownPuzzleHeldPiece:: db
+
+NEXTU ; cf64
+; card flip data
+wCardFlipCursorY:: db
+wCardFlipCursorX:: db
+wCardFlipWhichCard:: db
+
+NEXTU ; cf64
+; pokedex
+wDexEntryPrevJumptableIndex:: db
 IF !DEF(CRYSTAL11)
-wPokedexStatus::
+wPokedexStatus:: db
 ENDC
-wCreditsBorderMon::
-wTitleScreenTimerLo::
-wUnownPuzzleCursorPosition::
-wCardFlipCursorX::
+
+NEXTU ; cf64
+; miscellaneous
+wNrOfBeatenBattleTowerTrainers::
+wMomBankDigitCursorPosition::
+	db
 wCurrPocket::
 wPrinterQueueLength::
-wcf65:: ds 1
-wCreditsLYOverride::
-wTitleScreenTimerHi::
-wUnownPuzzleHeldPiece::
-wCardFlipWhichCard::
-wcf66:: ds 1
+	db
+ENDU ; cf67
 
-Requested2bpp:: ; cf67
-Requested2bppSize::
-	ds 1
-Requested2bppSource:: ; cf68
-	ds 2
-Requested2bppDest:: ; cf6a
-	ds 2
+Requested2bpp::
+Requested2bppSize:: db ; cf67
+Requested2bppSource:: dw ; cf68
+Requested2bppDest:: dw ; cf6a
 
-Requested1bpp:: ; cf6c
-Requested1bppSize::
-	ds 1
-Requested1bppSource:: ; cf6d
-	ds 2
-Requested1bppDest:: ; cf6f
-	ds 2
+Requested1bpp::
+Requested1bppSize:: db ; cf6c
+Requested1bppSource:: dw ; cf6d
+Requested1bppDest:: dw ; cf6f
 
 wWindowStackPointer:: dw ; cf71
-wMenuJoypad:: ds 1   ; cf73
-MenuSelection:: ds 1 ; cf74
-MenuSelectionQuantity:: ds 1 ; cf75
-wWhichIndexSet:: ds 1 ; cf76
-wScrollingMenuCursorPosition:: ds 1 ; cf77
-wWindowStackSize:: ds 9 ; cf78
+wMenuJoypad:: db ; cf73
+MenuSelection:: db ; cf74
+MenuSelectionQuantity:: db ; cf75
+wWhichIndexSet:: db ; cf76
+wScrollingMenuCursorPosition:: db ; cf77
+wWindowStackSize:: db ; cf78
 
+	ds 8
+
 ; menu data header
 wMenuDataHeader:: ; cf81
-wMenuFlags:: ds 1
-wMenuBorderTopCoord:: ds 1
-wMenuBorderLeftCoord:: ds 1
-wMenuBorderBottomCoord:: ds 1
-wMenuBorderRightCoord:: ds 1
-wMenuData2Pointer:: ds 2
-wMenuCursorBuffer:: ds 2
-; end menu data header
-wMenuDataBank:: ds 1 ; menu data bank?
+wMenuFlags:: db
+wMenuBorderTopCoord:: db
+wMenuBorderLeftCoord:: db
+wMenuBorderBottomCoord:: db
+wMenuBorderRightCoord:: db
+wMenuData2Pointer:: dw
+wMenuCursorBuffer:: dw
+wMenuDataBank:: db
 	ds 6
 wMenuDataHeaderEnd::
 
 wMenuData2::
-wMenuData2Flags:: ds 1 ; cf91
+UNION ; cf91
+; MenuData2
+wMenuData2Flags:: ; cf91
 ; bit 7: When set, start printing text one tile to the right of the border
 ;        In scrolling menus, SELECT is functional
 ; bit 6: When set, start printing text one tile below the border
@@ -1402,105 +1366,99 @@
 ; bit 2: ????
 ; bit 1: Enable Select button
 ; bit 0: Disable B button
+	db
+wMenuData2Items:: db ; cf92
+wMenuData2IndicesPointer:: dw ; cf94
+wMenuData2DisplayFunctionPointer:: dw ; cf96
+wMenuData2PointerTableAddr:: dw ; cf97
 
-wMenuData2_ScrollingMenuHeight::
-wMenuData2Items::
-	ds 1 ; cf92
-wMenuData2IndicesPointer::
-wMenuData2Spacing::
-wMenuData2_ScrollingMenuWidth::
-	ds 1 ; cf93
-wMenuData2_2DMenuItemStringsBank::
-wMenuData2_ScrollingMenuSpacing::
-	ds 1 ; cf94
-wMenuData2_2DMenuItemStringsAddr::
-wMenuData2DisplayFunctionPointer::
-wMenuData2_ItemsPointerBank::
-	ds 1 ; cf95
-wMenuData2_ItemsPointerAddr::
-	ds 1 ; cf96
-wMenuData2PointerTableAddr::
-wMenuData2_2DMenuFunctionBank::
-	ds 1 ; cf97
-wMenuData2_2DMenuFunctionAddr::
-wMenuData2_ScrollingMenuFunction1::
-	ds 3 ; cf98
-wMenuData2_ScrollingMenuFunction2::
-	ds 3 ; cf9b
-wMenuData2_ScrollingMenuFunction3::
-	ds 3 ; cf9e
+NEXTU ; cf91
+; 2D menu
+	ds 2 ; cf91
+wMenuData2Spacing:: db ; cf93
+wMenuData2_2DMenuItemStringsBank:: db ; cf94
+wMenuData2_2DMenuItemStringsAddr:: dw ; cf96
+wMenuData2_2DMenuFunctionBank:: db ; cf97
+wMenuData2_2DMenuFunctionAddr:: dw ; cf98
+
+NEXTU ; cf91
+; scrolling menu
+	ds 1 ; cf91
+wMenuData2_ScrollingMenuHeight:: db ; cf92
+wMenuData2_ScrollingMenuWidth:: db ; cf93
+wMenuData2_ScrollingMenuSpacing:: db ; cf94
+wMenuData2_ItemsPointerBank:: db ; cf95
+wMenuData2_ItemsPointerAddr:: dw ; cf97
+wMenuData2_ScrollingMenuFunction1:: ds 3 ; cf98
+wMenuData2_ScrollingMenuFunction2:: ds 3 ; cf9b
+wMenuData2_ScrollingMenuFunction3:: ds 3 ; cf9e
+ENDU ; cfa1
 wMenuData2End::
 
 wMenuData3::
-w2DMenuCursorInitY:: ds 1 ; cfa1
-w2DMenuCursorInitX:: ds 1 ; cfa2
-w2DMenuNumRows:: ds 1 ; cfa3
-w2DMenuNumCols:: ds 1 ; cfa4
-w2DMenuFlags1:: ds 1 ; cfa5
-w2DMenuFlags2:: ds 1 ; cfa6
-w2DMenuCursorOffsets:: ds 1 ; cfa7
-wMenuJoypadFilter:: ds 1 ; cfa8
+w2DMenuCursorInitY:: db ; cfa1
+w2DMenuCursorInitX:: db ; cfa2
+w2DMenuNumRows:: db ; cfa3
+w2DMenuNumCols:: db ; cfa4
+w2DMenuFlags1:: db ; cfa5
+w2DMenuFlags2:: db ; cfa6
+w2DMenuCursorOffsets:: db ; cfa7
+wMenuJoypadFilter:: db ; cfa8
 wMenuData3End::
 
-wMenuCursorY:: ds 1 ; cfa9
-wMenuCursorX:: ds 1 ; cfaa
-wCursorOffCharacter:: ds 1 ; cfab
-wCursorCurrentTile:: ds 2 ; cfac
+wMenuCursorY:: db ; cfa9
+wMenuCursorX:: db ; cfaa
+wCursorOffCharacter:: db ; cfab
+wCursorCurrentTile:: dw ; cfac
+
 	ds 3
 
-OverworldDelay:: ; cfb1
-	ds 1
-TextDelayFrames:: ; cfb2
-	ds 1
-VBlankOccurred:: ; cfb3
-	ds 1
+OverworldDelay:: db ; cfb1
+TextDelayFrames:: db ; cfb2
+VBlankOccurred:: db ; cfb3
 
-PredefID:: ; cfb4
-	ds 1
-PredefTemp:: ; cfb5
-	ds 2
-PredefAddress:: ; cfb7
-	ds 2
-wFarCallBCBuffer:: ; cfb9
-	ds 2
+PredefID:: db ; cfb4
+PredefTemp:: dw ; cfb5
+PredefAddress:: dw ; cfb7
+wFarCallBCBuffer:: dw ; cfb9
 
-wcfbb:: ds 1
+wcfbb:: db
+
 GameTimerPause:: ; cfbc
 ; bit 0
-	ds 1
+	db
 
 	ds 1
 
-wcfbe::
-; SGB flags?
-	ds 2
+wcfbe:: ; SGB flags?
+; bit 7
+	db
 
+	ds 1
+
 InBattleTowerBattle:: ; cfc0
 ; 0 not in BattleTower-Battle
 ; 1 BattleTower-Battle
-	ds 1
+	db
 
 	ds 1
 
-FXAnimID::
-FXAnimIDLo:: ; cfc2
-	ds 1
-FXAnimIDHi:: ; cfc3
-	ds 1
-wPlaceBallsX:: ; cfc4
-	ds 1
-wPlaceBallsY:: ; cfc5
-	ds 1
-TileAnimationTimer:: ; cfc6
-	ds 1
+FXAnimID:: dw ; cfc2
 
+wPlaceBallsX:: db ; cfc4
+wPlaceBallsY:: db ; cfc5
+
+TileAnimationTimer:: db ; cfc6
+
 ; palette backups?
-wBGP:: ds 1
-wOBP0:: ds 1
-wOBP1:: ds 1
+wBGP:: db
+wOBP0:: db
+wOBP1:: db
 
-wNumHits:: ds 2
+wNumHits:: db
 
+	ds 1
+
 Options:: ; cfcc
 ; bit 0-2: number of frames to delay when printing text
 ;   fast 1; mid 3; slow 5
@@ -1509,16 +1467,12 @@
 ; bit 5: stereo off/on
 ; bit 6: battle style shift/set
 ; bit 7: battle scene off/on
-	ds 1
-
-wSaveFileExists:: ds 1
-
+	db
+wSaveFileExists:: db
 TextBoxFrame:: ; cfce
 ; bits 0-2: textbox frame 0-7
-	ds 1
-TextBoxFlags::
-	ds 1
-
+	db
+TextBoxFlags:: db
 GBPrinter:: ; cfd0
 ; bit 0-6: brightness
 ;   lightest: $00
@@ -1526,49 +1480,47 @@
 ;   normal:   $40 (default)
 ;   darker:   $60
 ;   darkest:  $7F
-	ds 1
-
+	db
 Options2:: ; cfd1
 ; bit 1: menu account off/on
-	ds 1
-
+	db
 	ds 2
 OptionsEnd::
 
 ; Time buffer, for counting the amount of time since
 ; an event began.
+wSecondsSince:: db
+wMinutesSince:: db
+wHoursSince:: db
+wDaysSince:: db
 
-wSecondsSince:: ds 1
-wMinutesSince:: ds 1
-wHoursSince:: ds 1
-wDaysSince:: ds 1
 
-wRAM0End:: ; cfd8
-
-
 SECTION "WRAM 1", WRAMX
 
+wRAM1Start::
 wd000:: ds 1
-DefaultSpawnpoint::
-wd001:: ds 1
 
-; d002
-UNION
+DefaultSpawnpoint:: db
+
+UNION ; d002
+; mail temp storage
 wTempMail:: mailmsg wTempMail
 
-NEXTU
-wSeerAction:: ds 1
+NEXTU ; d002
+; poke seer
+wSeerAction:: db
 wSeerNickname:: ds PKMN_NAME_LENGTH
 wSeerCaughtLocation:: ds 17
 wSeerTimeOfDay:: ds NAME_LENGTH
 wSeerOTName:: ds NAME_LENGTH
-wSeerOTNameGrammar:: ds 1
+wSeerOTNameGrammar:: db
 wSeerCaughtLevelString:: ds 4
-wSeerCaughtLevel:: ds 1
-wSeerCaughtData:: ds 1
-wSeerCaughtGender:: ds 1
+wSeerCaughtLevel:: db
+wSeerCaughtData:: db
+wSeerCaughtGender:: db
 
-NEXTU
+NEXTU ; d002
+; mon buffer
 wBufferMonNick:: ds PKMN_NAME_LENGTH ; d002
 wBufferMonOT:: ds NAME_LENGTH ; d00d
 wBufferMon:: party_struct wBufferMon ; d018
@@ -1575,7 +1527,8 @@
 	ds 8
 wMonOrItemNameBuffer::
 
-NEXTU
+NEXTU ; d002
+; bug-catching contest
 wBugContestResults::
 	bugcontestwinner wBugContestFirstPlace
 	bugcontestwinner wBugContestSecondPlace
@@ -1585,89 +1538,120 @@
 	ds 4
 wBugContestWinnerName:: ds NAME_LENGTH
 
+NEXTU ; d002
+; mart items
+wMartItem1BCD:: ds 3
+wMartItem2BCD:: ds 3
+wMartItem3BCD:: ds 3
+wMartItem4BCD:: ds 3
+wMartItem5BCD:: ds 3
+wMartItem6BCD:: ds 3
+wMartItem7BCD:: ds 3
+wMartItem8BCD:: ds 3
+wMartItem9BCD:: ds 3
+wMartItem10BCD:: ds 3
+wMartItemBCDEnd::
+
+NEXTU ; d002
+; town map data
+wTownMapPlayerIconLandmark:: ds 1
+UNION
+wTownMapCursorLandmark:: ds 1
+wTownMapCursorObjectPointer:: ds 2
 NEXTU
-wd002::
-wTempDayOfWeek::
-wApricorns::
-PhoneScriptBank::
-LuckyNumberDigit1Buffer::
-wCurrentRadioLine::
-wMovementBufferCount::
-wMartItem1BCD::
-wWhichBoxMonToPrint::
-	ds 1
-wd003::
-LuckyNumberDigit2Buffer::
-PhoneCallerLo::
-wNextRadioLine::
-wMovementBufferPerson::
-wPlaceBallsDirection::
-wFinishedPrintingBox::
-	ds 1
-wd004::
-LuckyNumberDigit3Buffer::
-PhoneCallerHi::
-wRadioTextDelay::
-wTrainerHUDTiles::
-wAddrOfBoxToPrint::
-	ds 1
-wd005::
-LuckyNumberDigit4Buffer::
-StartFlypoint:: ; d005
-wNumRadioLinesPrinted::
-wMartItem2BCD::
-	ds 1
-wd006::
-wMobileParticipant1Nickname::
-LuckyNumberDigit5Buffer::
-EndFlypoint:: ; d006
-wOaksPkmnTalkSegmentCounter::
-wBankOfBoxToPrint::
-	ds 1
+wTownMapCursorCoordinates:: ds 2
+ENDU
 
-wd007::
-wWhichBoxToPrint::
-MovementBuffer:: ; d007
-	ds 1
+NEXTU ; d002
+; phone call data
+PhoneScriptBank:: db
+PhoneCaller:: dw
 
-wMartItem3BCD::
-wd008:: ds 2
-wd00a:: ds 1
-wMartItem4BCD::
-wd00b:: ds 1
-
-UNION
+NEXTU ; d002
+; radio data
+wCurrentRadioLine:: db
+wNextRadioLine:: db
+wRadioTextDelay:: db
+wNumRadioLinesPrinted:: db
+wOaksPkmnTalkSegmentCounter:: db
+	ds 5
 wRadioText:: ds 2 * SCREEN_WIDTH
 wRadioTextEnd::
 
-NEXTU
-wMobileParticipant2Nickname::
+NEXTU ; d002
+; lucky number show
+LuckyNumberDigit1Buffer:: db
+LuckyNumberDigit2Buffer:: db
+LuckyNumberDigit3Buffer:: db
+LuckyNumberDigit4Buffer:: db
+LuckyNumberDigit5Buffer:: db
+
+NEXTU ; d002
+; movement buffer data
+wMovementBufferCount:: db
+wMovementBufferPerson:: db
+wUnusedMovementBufferBank:: db
+wUnusedMovementBufferPointer:: dw
+MovementBuffer:: ds 55
+
+NEXTU ; d002
+; box printing
+wWhichBoxMonToPrint:: db
+wFinishedPrintingBox:: db
+wAddrOfBoxToPrint:: dw
+wBankOfBoxToPrint:: db
+wWhichBoxToPrint:: db
+
+NEXTU ; d002
+; trainer HUD data
+	ds 1
+wPlaceBallsDirection:: db
+wTrainerHUDTiles:: db
+
+NEXTU ; d002
+; mobile participant nicknames
+	ds 4
+wMobileParticipant1Nickname:: ds 6
+wMobileParticipant2Nickname:: ds 6
+wMobileParticipant3Nickname:: ds 6
+
+NEXTU ; d002
+; earthquake data buffer
+wEarthquakeMovementDataBuffer:: ds 5
+
+NEXTU ; d002
+; miscellaneous
+wTempDayOfWeek::
+wApricorns:: db
+	ds 2
+
+StartFlypoint:: db
+EndFlypoint:: db
+
+NEXTU ; d002
+; unidentified
+wd002:: db
+wd003:: db
+wd004:: db
+
+; mobile?
+	ds 3
+wd008:: ds 2
+	ds 2
 wd00c:: ds 1
 wd00d:: ds 1
-wMartItem5BCD::
-wd00e:: ds 1
+	ds 1
 wd00f:: ds 1
 wd010:: ds 1
-wMartItem6BCD::
 wd011:: ds 1
-wMobileParticipant3Nickname::
 wd012:: ds 1
 wd013:: ds 1
-wMartItem7BCD::
 wd014:: ds 2
-wd016:: ds 1
-wMartItem8BCD::
+	ds 1
 wd017:: ds 1
-
 wd018:: ds 1
 wd019:: ds 1
-wMartItem9BCD::
-wd01a:: ds 3
-wMartItem10BCD:: ds 2
-wd01f:: ds 1
-wMartItemBCDEnd::
-	ds 13
-
+	ds 19
 wd02d:: ds 1
 wd02e:: ds 1
 wd02f:: ds 1
@@ -1677,129 +1661,144 @@
 wd033:: ds 1
 wd034:: ds 2
 wd036:: ds 2
-wd038:: ds 3
-wd03b:: ds 3
-ENDU
+	ds 6
 
-MenuItemsList::
-CurFruitTree::
-CurInput::
-wElevatorPointerBank::
-wCurCoordEventTriggerID::
-wCurSignpostYCoord::
-EngineBuffer1:: ; d03e
-	ds 1
+UNION ; d03e
+; engine buffers
+EngineBuffer1:: db
+EngineBuffer2:: db
+EngineBuffer3:: db
+EngineBuffer4:: db
+EngineBuffer5:: db
 
-wd03f::
-wJumpStdScriptBuffer::
-CurFruit:: ; d03f
-MartPointerBank::
-wElevatorPointerLo::
-wCurCoordEventMapY::
-wCurSignpostXCoord::
-EngineBuffer2::
-	ds 1
+NEXTU ; d03e
+; menu items list
+MenuItemsList:: ds 16
+MenuItemsListEnd::
 
-wd040::
-wElevatorPointerHi::
-MartPointer:: ; d040
-wCurCoordEventMapX::
-wCurSignpostType::
-EngineBuffer3::
-	ds 1
+NEXTU ; d03e
+; fruit tree data
+CurFruitTree:: db
+CurFruit:: db
 
-wd041::
-wElevatorOriginFloor::
-wTempTrainerHeader::
-wTempTrainerEventFlagLo::
-wCurSignpostScriptAddr::
-EngineBuffer4::
-	ds 1
+NEXTU ; d03e
+; elevator data
+wElevatorPointerBank:: db
+wElevatorPointer:: dw
+wElevatorOriginFloor:: db
 
-wTempTrainerEventFlagHi::
-MovementAnimation:: ; d042
-wCurCoordEventScriptAddr::
-EngineBuffer5::
+NEXTU ; d03e
+; coord event data
+wCurCoordEventTriggerID:: db
+wCurCoordEventMapY:: db
+wCurCoordEventMapX:: db
 	ds 1
+wCurCoordEventScriptAddr:: dw
 
-wTempTrainerClass::
-WalkingDirection:: ; d043
-wBargainShopFlags::
-	ds 1
+NEXTU ; d03e
+; signpost data
+wCurSignpostYCoord:: db
+wCurSignpostXCoord:: db
+wCurSignpostType:: db
+wCurSignpostScriptAddr:: dw
 
-wTempTrainerID::
-FacingDirection:: ; d044
+NEXTU ; d03e
+; mart data
 	ds 1
-
-wSeenTextPointer::
-WalkingX::
-wd045:: ; d045
+MartPointerBank:: db
+MartPointer:: dw
 	ds 1
-WalkingY:: ; d046
-	ds 1
+wBargainShopFlags:: db
 
-WalkingTile:: ; d047
-wWinTextPointer::
-	ds 1
-
-wPhoneScriptPointer:: ds 1
-wLossTextPointer:: ds 2
-wScriptAfterPointer:: ds 2
-wRunningTrainerBattleScript:: ds 1
-MenuItemsListEnd::
+NEXTU ; d03e
+; trainer data
+	ds 3
+wTempTrainerHeader::
+wTempTrainerEventFlag:: dw
+wTempTrainerClass:: db
+wTempTrainerID:: db
+wSeenTextPointer:: dw
+wWinTextPointer:: dw
+wLossTextPointer:: dw
+wScriptAfterPointer:: dw
+wRunningTrainerBattleScript:: db
 wTempTrainerHeaderEnd::
-wPlayerTurningDirection:: ; d04e
-	ds 24
-ENDU
-wTMHMMoveNameBackup:: ds MOVE_NAME_LENGTH ; d066
 
-StringBuffer1:: ; d073
-	ds 19
+NEXTU ; d03e
+; player movement data
+CurInput:: db
+wd03f:: db
+wd040:: db
+wd041:: db
+MovementAnimation:: db
+WalkingDirection:: db
+FacingDirection:: db
+WalkingX:: db
+WalkingY:: db
+WalkingTile:: db
+	ds 6
+wPlayerTurningDirection:: db
 
-StringBuffer2:: ; d086
-	ds 19
+NEXTU ; d03e
+; std script buffer
+	ds 1
+wJumpStdScriptBuffer:: ds 3
 
-StringBuffer3:: ; d099
-	ds 19
+NEXTU ; d03e
+; phone script pointer
+	ds 10
+wPhoneScriptPointer:: dw
 
-StringBuffer4:: ; d0ac
-	ds 19
+NEXTU ; d03e
+; backup menu data
+	ds 7
+wMenuCursorBufferBackup:: db
+wMenuScrollPositionBackup:: db
+	ds 31
+ENDU ; d066
+ENDU ; d066
 
-StringBuffer5:: ; d0bf
-	ds 19
+wTMHMMoveNameBackup:: ds MOVE_NAME_LENGTH ; d066
 
-wd0d2:: ds 2
+StringBuffer1:: ds 19 ; d073
+StringBuffer2:: ds 19 ; d086
+StringBuffer3:: ds 19 ; d099
+StringBuffer4:: ds 19 ; d0ac
+StringBuffer5:: ds 19 ; d0bf
 
-CurBattleMon:: ; d0d4
-	ds 1
-CurMoveNum:: ; d0d5
-	ds 1
+wBattleMenuCursorBuffer:: dw ; d0d2
 
-wLastPocket:: ds 1
+CurBattleMon:: db ; d0d4
+CurMoveNum:: db ; d0d5
 
-wPCItemsCursor:: ds 1
-wPartyMenuCursor:: ds 1
-wItemsPocketCursor:: ds 1
-wKeyItemsPocketCursor:: ds 1
-wBallsPocketCursor:: ds 1
-wTMHMPocketCursor:: ds 1
+wLastPocket:: db
 
-wPCItemsScrollPosition:: ds 1
-wPartyMenuScrollPosition:: ds 1 ; unused
-wItemsPocketScrollPosition:: ds 1
-wKeyItemsPocketScrollPosition:: ds 1
-wBallsPocketScrollPosition:: ds 1
-wTMHMPocketScrollPosition:: ds 1
+wPCItemsCursor::        db
+wPartyMenuCursor::      db
+wItemsPocketCursor::    db
+wKeyItemsPocketCursor:: db
+wBallsPocketCursor::    db
+wTMHMPocketCursor::     db
 
-wMoveSwapBuffer::
+wPCItemsScrollPosition::        db
+wPartyMenuScrollPosition::      db ; unused
+wItemsPocketScrollPosition::    db
+wKeyItemsPocketScrollPosition:: db
+wBallsPocketScrollPosition::    db
+wTMHMPocketScrollPosition::     db
+
 wSwitchMon::
 wSwitchItem::
+wMoveSwapBuffer::
 wd0e3:: ds 1
+
 wMenuScrollPosition:: ds 4
-wQueuedScriptBank:: ds 1
-wQueuedScriptAddr:: ds 2
-wNumMoves::
-wd0eb:: ds 1
+
+wQueuedScriptBank:: db
+wQueuedScriptAddr:: dw
+
+wNumMoves:: db
+
 wFieldMoveSucceeded::
 wItemEffectSucceeded::
 wPlayerAction::
@@ -1807,7 +1806,7 @@
 ; 1 - use item
 ; 2 - switch
 wSolvedUnownPuzzle::
-	ds 1 ; d0ec
+	db ; d0ec
 
 VramState:: ; d0ed
 ; bit 0: overworld sprite updating on/off
@@ -1814,259 +1813,203 @@
 ; bit 6: something to do with text
 ; bit 7: on when surf initiates
 ;        flickers when climbing waterfall
-	ds 1
+	db
 
-wBattleResult:: ds 1 ; d0ee
-wUsingItemWithSelect:: ds 1 ; d0ef
+wBattleResult:: db ; d0ee
+wUsingItemWithSelect:: db ; d0ef
 
-UNION
-CurMart:: ds 16 ; d0f0
+UNION ; d0f0
+; mart data
+CurMart:: ds 16
 CurMartEnd::
 
-NEXTU
-CurElevator:: ds 1
-wd0f1::
-CurElevatorFloors::
-wCurMessageIndex:: ds 1
-wd0f2::
-wMailboxCount:: ds 1
+NEXTU ; d0f0
+; elevator data
+CurElevator:: db
+CurElevatorFloors:: db
+
+NEXTU ; d0f0
+; mailbox data
+	ds 1
+wCurMessageIndex:: db
+wMailboxCount:: db
 wMailboxItems:: ds MAILBOX_CAPACITY
 wMailboxEnd:: ds 1 ; d0fe
+ENDU ; d100
 
-ENDU
 wListPointer:: dw ; d100
 wUnusedD102:: dw ; d102
 wItemAttributesPtr:: dw ; d104
 
-CurItem:: ds 1 ; d106
+CurItem:: db ; d106
 CurItemQuantity:: ; d107
 wMartItemID::
-wd107:: ds 1
+	db
 
-CurPartySpecies:: ; d108
-	ds 1
+CurPartySpecies:: db ; d108
 
 CurPartyMon:: ; d109
 ; contains which monster in a party
 ; is being dealt with at the moment
 ; 0-5
-	ds 1
+	db
 
 wWhichHPBar::
 ; 0: Enemy
 ; 1: Player
 ; 2: Party Menu
-	ds 1
+	db
 wPokemonWithdrawDepositParameter::
 ; 0: Take from PC
 ; 1: Put into PC
 ; 2: Take from Daycare
 ; 3: Put into Daycare
-wd10b:: ds 1
-wItemQuantityChangeBuffer:: ds 1
-wItemQuantityBuffer:: ds 1
+	db
 
-TempMon:: ; d10e
-	party_struct TempMon
+wItemQuantityChangeBuffer:: db
+wItemQuantityBuffer:: db
 
-wSpriteFlags:: ds 1 ; d13e
+TempMon:: party_struct TempMon ; d10e
 
-wHandlePlayerStep:: ds 2 ; d13f
+wSpriteFlags:: db ; d13e
 
-PartyMenuActionText:: ; d141
-	ds 1
+wHandlePlayerStep:: dw ; d13f
 
-wItemAttributeParamBuffer:: ; d142
-	ds 1
+PartyMenuActionText:: db ; d141
 
-CurPartyLevel:: ; d143
-	ds 1
+wItemAttributeParamBuffer:: db ; d142
 
-wScrollingMenuListSize:: ds 2
+CurPartyLevel:: db ; d143
 
+wScrollingMenuListSize:: dw
+
 ; used when following a map warp
 ; d146
-wNextWarp:: ds 1
-wNextMapGroup:: ds 1
-wNextMapNumber:: ds 1
-wPrevWarp:: ds 1
-wPrevMapGroup:: ds 1
-wPrevMapNumber:: ds 1
+wNextWarp:: db
+wNextMapGroup:: db
+wNextMapNumber:: db
+wPrevWarp:: db
+wPrevMapGroup:: db
+wPrevMapNumber:: db
 ; d14c
 
-wPlayerBGMapOffsetX:: ds 1 ; used in FollowNotExact; unit is pixels
-wPlayerBGMapOffsetY:: ds 1 ; used in FollowNotExact; unit is pixels
+wPlayerBGMapOffsetX:: db ; used in FollowNotExact; unit is pixels
+wPlayerBGMapOffsetY:: db ; used in FollowNotExact; unit is pixels
 
 ; Player movement
-wPlayerStepVectorX:: ds 1   ; d14e
-wPlayerStepVectorY:: ds 1   ; d14f
-wPlayerStepFlags:: ds 1     ; d150
+wPlayerStepVectorX:: db ; d14e
+wPlayerStepVectorY:: db ; d14f
+wPlayerStepFlags::   db ; d150
+wPlayerStepDirection::  ; d151
 ; bit 7: Start step
 ; bit 6: Stop step
 ; bit 5: Doing step
 ; bit 4: In midair
 ; bits 0-3: unused
-wPlayerStepDirection:: ds 1 ; d151
+	db
 
-wBGMapAnchor:: ds 2 ; d152
+wBGMapAnchor:: dw ; d152
 
-UNION
-UsedSprites:: ds 64 ; d154
+UNION ; d154
+UsedSprites:: ds 64
 UsedSpritesEnd::
 
-NEXTU
-wd154:: ; d154
-	ds 31 ; 64
+NEXTU ; d154
+	ds 31
+wd173:: db ; related to command queue type 3
+ENDU ; d194
 
-wd173:: ds 1 ; related to command queue type 3
-	ds 13
-wd181:: ds 1
-wd182:: ds 1
-	ds 14
-
-wd191:: ds 1
-wd192:: ds 1
-wd193:: ds 1
-ENDU
-
 wOverworldMapAnchor:: dw ; d194
-wMetatileStandingY:: ds 1 ; d196
-wMetatileStandingX:: ds 1 ; d197
-wSecondMapHeaderBank:: ds 1 ; d198
-wTileset:: ds 1 ; d199
-wPermission:: ds 1 ; d19a
+wMetatileStandingY:: db ; d196
+wMetatileStandingX:: db ; d197
+
+wSecondMapHeaderBank:: db ; d198
+wTileset:: db ; d199
+wPermission:: db ; d19a
 wSecondMapHeaderAddr:: dw ; d19b
 
 ; width/height are in blocks (2x2 walkable tiles, 4x4 graphics tiles)
 MapHeader:: ; d19d
-MapBorderBlock:: ; d19d
-	ds 1
-MapHeight:: ; d19e
-	ds 1
-MapWidth:: ; d19f
-	ds 1
-MapBlockDataBank:: ; d1a0
-	ds 1
-MapBlockDataPointer:: ; d1a1
-	ds 2
-MapScriptHeaderBank:: ; d1a3
-	ds 1
-MapScriptHeaderPointer:: ; d1a4
-	ds 2
-MapEventHeaderPointer:: ; d1a6
-	ds 2
+MapBorderBlock:: db ; d19d
+MapHeight:: db ; d19e
+MapWidth:: db ; d19f
+MapBlockDataBank:: db; d1a0
+MapBlockDataPointer:: dw ; d1a1
+MapScriptHeaderBank:: db ; d1a3
+MapScriptHeaderPointer:: dw ; d1a4
+MapEventHeaderPointer:: dw ; d1a6
 ; bit set
-MapConnections:: ; d1a8
-	ds 1
+MapConnections:: db ; d1a8
+
 NorthMapConnection:: ; d1a9
-NorthConnectedMapGroup:: ; d1a9
-	ds 1
-NorthConnectedMapNumber:: ; d1aa
-	ds 1
-NorthConnectionStripPointer:: ; d1ab
-	ds 2
-NorthConnectionStripLocation:: ; d1ad
-	ds 2
-NorthConnectionStripLength:: ; d1af
-	ds 1
-NorthConnectedMapWidth:: ; d1b0
-	ds 1
-NorthConnectionStripYOffset:: ; d1b1
-	ds 1
-NorthConnectionStripXOffset:: ; d1b2
-	ds 1
-NorthConnectionWindow:: ; d1b3
-	ds 2
+NorthConnectedMapGroup:: db ; d1a9
+NorthConnectedMapNumber:: db ; d1aa
+NorthConnectionStripPointer:: dw ; d1ab
+NorthConnectionStripLocation:: dw ; d1ad
+NorthConnectionStripLength:: db ; d1af
+NorthConnectedMapWidth:: db ; d1b0
+NorthConnectionStripYOffset:: db ; d1b1
+NorthConnectionStripXOffset:: db ; d1b2
+NorthConnectionWindow:: dw ; d1b3
 
 SouthMapConnection:: ; d1b5
-SouthConnectedMapGroup:: ; d1b5
-	ds 1
-SouthConnectedMapNumber:: ; d1b6
-	ds 1
-SouthConnectionStripPointer:: ; d1b7
-	ds 2
-SouthConnectionStripLocation:: ; d1b9
-	ds 2
-SouthConnectionStripLength:: ; d1bb
-	ds 1
-SouthConnectedMapWidth:: ; d1bc
-	ds 1
-SouthConnectionStripYOffset:: ; d1bd
-	ds 1
-SouthConnectionStripXOffset:: ; d1be
-	ds 1
-SouthConnectionWindow:: ; d1bf
-	ds 2
+SouthConnectedMapGroup:: db ; d1b5
+SouthConnectedMapNumber:: db ; d1b6
+SouthConnectionStripPointer:: dw ; d1b7
+SouthConnectionStripLocation:: dw ; d1b9
+SouthConnectionStripLength:: db ; d1bb
+SouthConnectedMapWidth:: db ; d1bc
+SouthConnectionStripYOffset:: db ; d1bd
+SouthConnectionStripXOffset:: db ; d1be
+SouthConnectionWindow:: dw ; d1bf
 
 WestMapConnection:: ; d1c1
-WestConnectedMapGroup:: ; d1c1
-	ds 1
-WestConnectedMapNumber:: ; d1c2
-	ds 1
-WestConnectionStripPointer:: ; d1c3
-	ds 2
-WestConnectionStripLocation:: ; d1c5
-	ds 2
-WestConnectionStripLength:: ; d1c7
-	ds 1
-WestConnectedMapWidth:: ; d1c8
-	ds 1
-WestConnectionStripYOffset:: ; d1c9
-	ds 1
-WestConnectionStripXOffset:: ; d1ca
-	ds 1
-WestConnectionWindow:: ; d1cb
-	ds 2
+WestConnectedMapGroup:: db ; d1c1
+WestConnectedMapNumber:: db ; d1c2
+WestConnectionStripPointer:: dw ; d1c3
+WestConnectionStripLocation:: dw ; d1c5
+WestConnectionStripLength:: db ; d1c7
+WestConnectedMapWidth:: db ; d1c8
+WestConnectionStripYOffset:: db ; d1c9
+WestConnectionStripXOffset:: db ; d1ca
+WestConnectionWindow:: dw ; d1cb
 
 EastMapConnection:: ; d1cd
-EastConnectedMapGroup:: ; d1cd
-	ds 1
-EastConnectedMapNumber:: ; d1ce
-	ds 1
-EastConnectionStripPointer:: ; d1cf
-	ds 2
-EastConnectionStripLocation:: ; d1d1
-	ds 2
-EastConnectionStripLength:: ; d1d3
-	ds 1
-EastConnectedMapWidth:: ; d1d4
-	ds 1
-EastConnectionStripYOffset:: ; d1d5
-	ds 1
-EastConnectionStripXOffset:: ; d1d6
-	ds 1
-EastConnectionWindow:: ; d1d7
-	ds 2
+EastConnectedMapGroup:: db ; d1cd
+EastConnectedMapNumber:: db ; d1ce
+EastConnectionStripPointer:: dw ; d1cf
+EastConnectionStripLocation:: dw ; d1d1
+EastConnectionStripLength:: db ; d1d3
+EastConnectedMapWidth:: db ; d1d4
+EastConnectionStripYOffset:: db ; d1d5
+EastConnectionStripXOffset:: db ; d1d6
+EastConnectionWindow:: dw ; d1d7
 
-
 TilesetHeader::
-TilesetBank:: ; d1d9
-	ds 1
-TilesetAddress:: ; d1da
-	ds 2
-TilesetBlocksBank:: ; d1dc
-	ds 1
-TilesetBlocksAddress:: ; d1dd
-	ds 2
-TilesetCollisionBank:: ; d1df
-	ds 1
-TilesetCollisionAddress:: ; d1e0
-	ds 2
-TilesetAnim:: ; d1e2
-; bank 3f
-	ds 2
-; unused ; d1e4
-	ds 2
-TilesetPalettes:: ; d1e6
-; bank 3f
-	ds 2
+TilesetBank:: db ; d1d9
+TilesetAddress:: dw ; d1da
+TilesetBlocksBank:: db ; d1dc
+TilesetBlocksAddress:: dw ; d1dd
+TilesetCollisionBank:: db ; d1df
+TilesetCollisionAddress:: dw ; d1e0
+TilesetAnim:: dw ; bank 3f ; d1e2
+	ds 2  ; unused ; d1e4
+TilesetPalettes:: dw ; bank 3f ; d1e6
 
-EvolvableFlags:: ; d1e8
-	flag_array PARTY_LENGTH
+EvolvableFlags:: flag_array PARTY_LENGTH ; d1e8
 
 wForceEvolution:: db ; d1e9
 
-UNION
+UNION ; d1ea
+; general-purpose buffers
+Buffer1:: db ; d1ea
+Buffer2:: db ; d1eb
+Buffer3:: db ; d1ec
+Buffer4:: db ; d1ed
+Buffer5:: db ; d1ee
+Buffer6:: db ; d1ef
+
+NEXTU ; d1ea
 ; HP bar animations
 wCurHPAnimMaxHP::   dw ; d1ea
 wCurHPAnimOldHP::   dw ; d1ec
@@ -2078,42 +2021,41 @@
 wCurHPAnimLowHP::   db ; d1f5
 wCurHPAnimHighHP::  db ; d1f6
 
-NEXTU
-MagikarpLength::
-wEvolutionOldSpecies::
-Buffer1:: ; d1ea
-	ds 1
-MovementType::
-wEvolutionNewSpecies::
-Buffer2:: ; d1eb
-	ds 1
-wEvolutionPicOffset::
-Buffer3::
+NEXTU ; d1ea
+; evolution data
+wEvolutionOldSpecies:: db ; d1ea
+wEvolutionNewSpecies:: db ; d1eb
+wEvolutionPicOffset:: db ; d1ec
+wEvolutionCanceled:: db ; d1ed
+
+NEXTU ; d1ea
+; mobile
+	ds 2
 wd1ec:: ds 1
-wEvolutionCanceled::
-Buffer4::
 wd1ed:: ds 1
-Buffer5::
 wd1ee:: ds 1
-Buffer6::
 wd1ef:: ds 1
 wd1f0:: ds 1
-CurEnemyItem::
 wd1f1:: ds 1
 wd1f2:: ds 1
-wd1f3:: ds 1
-wd1f4:: ds 1
-wd1f5:: ds 1
-wd1f6::
-	ds 4
-ENDU
+wd1f3:: ds 4
 
-LinkBattleRNs:: ; d1fa
-	ds 10
+NEXTU ; d1ea
+; miscellaneous
+wMagikarpLength:: dw
+wSelectedDecoration:: db
+wOtherDecoration::    db
+	ds 3
+CurEnemyItem:: db
+ENDU ; d1f7
 
-TempEnemyMonSpecies::  ds 1 ; d204
-TempBattleMonSpecies:: ds 1 ; d205
+	ds 3
 
+LinkBattleRNs:: ds 10 ; d1fa
+
+TempEnemyMonSpecies::  db ; d204
+TempBattleMonSpecies:: db ; d205
+
 EnemyMon:: battle_struct EnemyMon ; d206
 EnemyMonBaseStats:: ds 5 ; d226
 EnemyMonCatchRate:: db ; d22b
@@ -2125,120 +2067,88 @@
 ; 0: overworld
 ; 1: wild battle
 ; 2: trainer battle
-	ds 1
+	db
 
-TempWildMonSpecies:: ds 1
+TempWildMonSpecies:: db
+
 OtherTrainerClass:: ; d22f
 ; class (Youngster, Bug Catcher, etc.) of opposing trainer
 ; 0 if opponent is a wild Pokémon, not a trainer
-	ds 1
+	db
 
-BattleType:: ; d230
-; $00 normal
-; $01 can lose
-; $02 debug
-; $03 dude/tutorial
-; $04 fishing
-; $05 roaming
-; $06 contest
-; $07 shiny
-; $08 headbutt/rock smash
-; $09 trap
-; $0a force Item1
-; $0b celebi
-; $0c suicune
-	ds 1
+; BATTLETYPE_* values
+BattleType:: db ; d230
 
 OtherTrainerID:: ; d231
 ; which trainer of the class that you're fighting
 ; (Joey, Mikey, Albert, etc.)
-	ds 1
+	db
 
-wForcedSwitch:: ds 1
+wForcedSwitch:: db
 
-TrainerClass:: ; d233
-	ds 1
+TrainerClass:: db ; d233
 
-UnownLetter:: ; d234
-	ds 1
+UnownLetter:: db ; d234
 
-wMoveSelectionMenuType:: ds 1
+wMoveSelectionMenuType:: db
 
+; corresponds to the data/base_stats/*.asm contents
 CurBaseData:: ; d236
-BaseDexNo:: ; d236
-	ds 1
+BaseDexNo:: db ; d236
 BaseStats:: ; d237
-BaseHP:: ; d237
-	ds 1
-BaseAttack:: ; d238
-	ds 1
-BaseDefense:: ; d239
-	ds 1
-BaseSpeed:: ; d23a
-	ds 1
-BaseSpecialAttack:: ; d23b
-	ds 1
-BaseSpecialDefense:: ; d23c
-	ds 1
+BaseHP:: db ; d237
+BaseAttack:: db ; d238
+BaseDefense:: db ; d239
+BaseSpeed:: db ; d23a
+BaseSpecialAttack:: db ; d23b
+BaseSpecialDefense:: db ; d23c
 BaseType:: ; d23d
-BaseType1:: ; d23d
-	ds 1
-BaseType2:: ; d23e
-	ds 1
-BaseCatchRate:: ; d23f
-	ds 1
-BaseExp:: ; d240
-	ds 1
-BaseItems:: ; d241
-	ds 2
-BaseGender:: ; d243
-	ds 1
-BaseUnknown1:: ; d244
-	ds 1
-BaseEggSteps:: ; d245
-	ds 1
-BaseUnknown2:: ; d246
-	ds 1
-BasePicSize:: ; d247
-	ds 1
-BasePadding:: ; d248
-	ds 4
-BaseGrowthRate:: ; d24c
-	ds 1
-BaseEggGroups:: ; d24d
-	ds 1
-BaseTMHM:: ; d24e
-	ds 8
+BaseType1:: db ; d23d
+BaseType2:: db ; d23e
+BaseCatchRate:: db ; d23f
+BaseExp:: db ; d240
+BaseItems:: dw ; d241
+BaseGender:: db ; d243
+BaseUnknown1:: db ; d244
+BaseEggSteps:: db ; d245
+BaseUnknown2:: db ; d246
+BasePicSize:: db ; d247
+BasePadding:: ds 4 ; d248
+BaseGrowthRate:: db ; d24c
+BaseEggGroups:: db ; d24d
+BaseTMHM:: flag_array NUM_TM_HM_TUTOR ; d24e
 
+CurDamage:: dw ; d256
 
-CurDamage:: ; d256
 	ds 2
 
-	ds 2
-wMornEncounterRate::  ds 1 ; d25a
-wDayEncounterRate::   ds 1 ; d25b
-wNiteEncounterRate::  ds 1 ; d25c
-wWaterEncounterRate:: ds 1 ; d25d
+wMornEncounterRate::  db ; d25a
+wDayEncounterRate::   db ; d25b
+wNiteEncounterRate::  db ; d25c
+wWaterEncounterRate:: db ; d25d
 wListMoves_MoveIndicesBuffer:: ds NUM_MOVES
-wPutativeTMHMMove:: ds 1
-wInitListType:: ds 1
-wBattleHasJustStarted:: ds 1
+wPutativeTMHMMove:: db
+wInitListType:: db
+wBattleHasJustStarted:: db
+
 wFoundMatchingIDInParty::
 wNamedObjectIndexBuffer::
 wCurTMHM::
 wTypeMatchup::
-wd265:: ds 1
-wFailedToFlee:: ds 1
-wNumFleeAttempts:: ds 1
-wMonTriedToEvolve:: ds 1
+wd265:: db
 
-TimeOfDay:: ; d269
-	ds 1
+wFailedToFlee:: db
+wNumFleeAttempts:: db
+wMonTriedToEvolve:: db
 
+TimeOfDay:: db ; d269
+
 	ds 1
 
+
 SECTION "Enemy Party", WRAMX
-UNION
+
+UNION ; d26b
 wPokedexShowPointerAddr::
 wd26b:: ds 1
 wd26c:: ds 1
@@ -2247,33 +2157,35 @@
 	ds 3
 wd271:: ds 5
 
-NEXTU
+NEXTU ; d26b
 ; SECTION "Enemy Party", WRAMX
 OTPlayerName:: ds NAME_LENGTH ; d26b
-ENDU
+ENDU ; d276
 
 OTPlayerID:: ds 2 ; d276
 	ds 8
 OTPartyCount::   ds 1 ; d280
 OTPartySpecies:: ds PARTY_LENGTH ; d281
-OTPartyEnd::     ds 1
+OTPartyEnd::     ds 1 ; legacy scripts don't check PartyCount
 
-UNION
-wDudeBag:: ; d288
-wDudeNumItems:: ds 1
+UNION ; d288
+; catch tutorial dude pack
+wDudeBag::
+wDudeNumItems:: db
 wDudeItems:: ds 2 * 4
-wDudeItemsEnd:: ds 1
+wDudeItemsEnd:: db
 
-wDudeNumKeyItems:: ds 1 ; d292
+wDudeNumKeyItems:: db ; d292
 wDudeKeyItems:: ds 18
-wDudeKeyItemsEnd:: ds 1
+wDudeKeyItemsEnd:: db
 
-wDudeNumBalls:: ds 1 ; d2a6
+wDudeNumBalls:: db ; d2a6
 wDudeBalls:: ds 2 * 4 ; d2a7
-wDudeBallsEnd:: ds 1 ; d2af
+wDudeBallsEnd:: db ; d2af
 wDudeBagEnd::
 
-NEXTU
+NEXTU ; d288
+; ot party mons
 OTPartyMons::
 OTPartyMon1:: party_struct OTPartyMon1 ; d288
 OTPartyMon2:: party_struct OTPartyMon2 ; d2b8
@@ -2287,24 +2199,23 @@
 OTPartyMonNicknames:: ds PKMN_NAME_LENGTH * PARTY_LENGTH ; d3ea
 OTPartyDataEnd::
 	ds 4
-ENDU
+ENDU ; d430
 
 wd430::
-wBattleAction:: ds 1 ; d430
+wBattleAction:: db ; d430
 
-wd431:: ds 1
-MapStatus:: ; d432
-	ds 1
+wd431:: db
+MapStatus:: db ; d432
 MapEventStatus:: ; d433
 ; 0: do map events
 ; 1: do background events
-	ds 1
+	db
 
 ScriptFlags:: ; d434
 ; bit 3: priority jump
-	ds 1
+	db
 ScriptFlags2:: ; d435
-	ds 1
+	db
 ScriptFlags3:: ; d436
 ; bit 0: count steps
 ; bit 1: xy triggers
@@ -2311,48 +2222,43 @@
 ; bit 2: warps and connections
 ; bit 4: wild encounters
 ; bit 5: unknown
-	ds 1
+	db
 
-ScriptMode:: ; d437
-	ds 1
-ScriptRunning:: ; d438
-	ds 1
-ScriptBank:: ; d439
-	ds 1
-ScriptPos:: ; d43a
-	ds 2
+ScriptMode:: db ; d437
+ScriptRunning:: db ; d438
+ScriptBank:: db ; d439
+ScriptPos:: dw ; d43a
 
-wScriptStackSize:: ds 1
+wScriptStackSize:: db
 wScriptStack:: ds 3 * 5
 	ds 1
-ScriptDelay:: ; d44d
-	ds 1
+ScriptDelay:: db ; d44d
 
 wPriorityScriptBank::
-wScriptTextBank::
-	ds 1 ; d44e
+wScriptTextBank:: db ; d44e
 wPriorityScriptAddr::
-wScriptTextAddr:: ds 2 ; d44f
+wScriptTextAddr:: dw ; d44f
 	ds 1
-wWildEncounterCooldown:: ds 1 ; d452
-wXYComparePointer:: ds 2 ; d453
+wWildEncounterCooldown:: db ; d452
+wXYComparePointer:: dw ; d453
 	ds 4
 
-wBattleScriptFlags:: ds 2 ; d459
-wPlayerSpriteSetupFlags:: ds 1 ; d45b
+wBattleScriptFlags:: dw ; d459
+wPlayerSpriteSetupFlags:: ; d45b
 ; bit 7: if set, cancel PlayerAction
 ; bit 5: if set, set facing according to bits 0-1
 ; bits 0-1: direction facing
-wMapReentryScriptQueueFlag:: ds 1 ; d45c MemScriptFlag
-wMapReentryScriptBank:: ds 1 ; d45d MemScriptBank
-wMapReentryScriptAddress:: ds 2 ; d45e MemScriptAddr
-	ds 4     ; ?????????????
-wTimeCyclesSinceLastCall:: ds 1 ; d464
-wReceiveCallDelay_MinsRemaining:: ds 1 ; d465
+	db
+wMapReentryScriptQueueFlag:: db ; d45c MemScriptFlag
+wMapReentryScriptBank:: db ; d45d MemScriptBank
+wMapReentryScriptAddress:: dw ; d45e MemScriptAddr
+	ds 4
+wTimeCyclesSinceLastCall:: db ; d464
+wReceiveCallDelay_MinsRemaining:: db ; d465
 wReceiveCallDelay_StartTime:: ds 3 ; d466
 	ds 3
-wBugContestMinsRemaining:: ds 1 ; d46c
-wBugContestSecsRemaining:: ds 1 ; d46d
+wBugContestMinsRemaining:: db ; d46c
+wBugContestSecsRemaining:: db ; d46d
 	ds 2
 wMapStatusEnd:: ds 2 ; d470
 
@@ -2361,7 +2267,7 @@
 ; bit 0:
 ;	0 male
 ;	1 female
-	ds 1
+	db
 wd473:: ds 1
 wd474:: ds 1
 wd475:: ds 1
@@ -2375,7 +2281,7 @@
 wGameData::
 wPlayerData::
 PlayerID:: ; d47b
-	ds 2
+	dw
 
 PlayerName:: ds NAME_LENGTH ; d47d
 MomsName::   ds NAME_LENGTH ; d488
@@ -2383,45 +2289,34 @@
 RedsName::   ds NAME_LENGTH ; d49e
 GreensName:: ds NAME_LENGTH ; d4a9
 
-wSavedAtLeastOnce:: ds 1
-wSpawnAfterChampion:: ds 1
+wSavedAtLeastOnce:: db
+wSpawnAfterChampion:: db
 
 ; init time set at newgame
-StartDay:: ; d4b6
-	ds 1
-StartHour:: ; d4b7
-	ds 1
-StartMinute:: ; d4b8
-	ds 1
-StartSecond:: ; d4b9
-	ds 1
+StartDay:: db ; d4b6
+StartHour:: db ; d4b7
+StartMinute:: db ; d4b8
+StartSecond:: db ; d4b9
 
-wRTC:: ; d4ba
-	ds 8
-wDST:: ; d4c2
-	ds 1
+wRTC:: ds 8 ; d4ba
+wDST:: db ; d4c2
 
-GameTimeCap:: ; d4c3
-	ds 1
-GameTimeHours:: ; d4c4
-	ds 2
-GameTimeMinutes:: ; d4c6
-	ds 1
-GameTimeSeconds:: ; d4c7
-	ds 1
-GameTimeFrames:: ; d4c8
-	ds 1
+GameTimeCap::     db ; d4c3
+GameTimeHours::   dw ; d4c4
+GameTimeMinutes:: db ; d4c6
+GameTimeSeconds:: db ; d4c7
+GameTimeFrames::  db ; d4c8
 
 	ds 2
 
-CurDay:: ; d4cb
-	ds 1
+CurDay:: db ; d4cb
 
 	ds 1
-wObjectFollow_Leader:: ds 1
-wObjectFollow_Follower:: ds 1
-wCenteredObject:: ds 1
-wFollowerMovementQueueLength:: ds 1
+
+wObjectFollow_Leader:: db
+wObjectFollow_Follower:: db
+wCenteredObject:: db
+wFollowerMovementQueueLength:: db
 wFollowMovementQueue:: ds 5
 
 ObjectStructs:: ; d4d6
@@ -2441,8 +2336,9 @@
 ObjectStructsEnd:: ; d6de
 
 wCmdQueue:: ds CMDQUEUE_CAPACITY * CMDQUEUE_ENTRY_SIZE
-	ds $28
 
+	ds 40
+
 MapObjects:: ; d71e
 	map_object Player
 	map_object Map1
@@ -2464,23 +2360,19 @@
 
 wObjectMasks:: ds NUM_OBJECTS ; d81e
 
-VariableSprites:: ; d82e
-	ds $10
+VariableSprites:: ds 16; d82e
 
-wEnteredMapFromContinue:: ds 1 ; d83e
+wEnteredMapFromContinue:: db ; d83e
 	ds 2
-TimeOfDayPal:: ; d841
-	ds 1
+TimeOfDayPal:: db ; d841
 	ds 4
-; d846
-wTimeOfDayPalFlags:: ds 1
-wTimeOfDayPalset:: ds 1
-CurTimeOfDay:: ; d848
-	ds 1
+wTimeOfDayPalFlags:: db ; d846
+wTimeOfDayPalset:: db
+CurTimeOfDay:: db ; d848
 
 	ds 1
 
-wSecretID:: ds 2
+wSecretID:: dw
 StatusFlags:: ; d84c
 	; 0 - pokedex
 	; 1 - unown dex
@@ -2490,7 +2382,7 @@
 	; 5 - wild encounters on/off
 	; 6 - hall of fame
 	; 7 - bug contest on
-	ds 1
+	db
 
 StatusFlags2:: ; d84d
 	; 0 - rockets
@@ -2501,79 +2393,60 @@
 	; 5 - pokerus
 	; 6 - berry juice?
 	; 7 - rockets in mahogany
-	ds 1
+	db
 
-Money:: ; d84e
-	ds 3
+Money:: ds 3 ; d84e
+wMomsMoney:: ds 3 ; d851
+wMomSavingMoney:: db ; d854
 
-wMomsMoney:: ; d851
-	ds 3
-wMomSavingMoney:: ; d854
-	ds 1
+Coins:: dw ; d855
 
-Coins:: ; d855
-	ds 2
-
 Badges::
-JohtoBadges:: ; d857
-	flag_array 8
-KantoBadges:: ; d858
-	flag_array 8
+JohtoBadges:: flag_array NUM_JOHTO_BADGES ; d857
+KantoBadges:: flag_array NUM_KANTO_BADGES ; d858
 
 
-TMsHMs:: ; d859
-	ds NUM_TMS + NUM_HMS
+TMsHMs:: ds NUM_TMS + NUM_HMS ; d859
 TMsHMsEnd::
 
-NumItems:: ; d892
-	ds 1
-Items:: ; d893
-	ds MAX_ITEMS * 2 + 1
+NumItems:: db ; d892
+Items:: ds MAX_ITEMS * 2 + 1 ; d893
 ItemsEnd::
 
-NumKeyItems:: ; d8bc
-	ds 1
-KeyItems:: ; d8bd
-	ds MAX_KEY_ITEMS + 1
+NumKeyItems:: db ; d8bc
+KeyItems:: ds MAX_KEY_ITEMS + 1 ; d8bd
 KeyItemsEnd::
 
-NumBalls:: ; d8d7
-	ds 1
-Balls:: ; d8d8
-	ds MAX_BALLS * 2 + 1
+NumBalls:: db ; d8d7
+Balls:: ds MAX_BALLS * 2 + 1 ; d8d8
 BallsEnd::
 
-PCItems:: ; d8f1
-	ds MAX_PC_ITEMS * 2 + 1
+PCItems:: ds MAX_PC_ITEMS * 2 + 1 ; d8f1
 PCItemsEnd::
 
 	ds 1
 
-wPokegearFlags:: ds 1
+wPokegearFlags::
 ; bit 0: map
 ; bit 1: radio
 ; bit 2: phone
 ; bit 3: expn
 ; bit 7: on/off
-wRadioTuningKnob:: ds 1
-wLastDexMode:: ds 2
-WhichRegisteredItem:: ; d95b
+	db
+wRadioTuningKnob:: db
+wLastDexMode:: db
 	ds 1
-RegisteredItem:: ; d95c
-	ds 1
+WhichRegisteredItem:: db ; d95b
+RegisteredItem:: db ; d95c
 
-PlayerState:: ; d95d
-	ds 1
+PlayerState:: db ; d95d
 
-wHallOfFameCount:: ds 2
+wHallOfFameCount:: dw
 wTradeFlags:: flag_array 6 ; d960
 	ds 1
-MooMooBerries:: ; d962
-	ds 1 ; how many berries fed to MooMoo
-UndergroundSwitchPositions:: ; d963
-	ds 1 ; which positions the switches are in
-FarfetchdPosition:: ; d964
-	ds 1 ; which position the ilex farfetch'd is in
+MooMooBerries:: db ; d962
+UndergroundSwitchPositions:: db ; d963
+FarfetchdPosition:: db ; d964
 
 	ds 13
 
@@ -2580,85 +2453,85 @@
 
 ;SECTION "Map Triggers", WRAMX
 
-wPokecenter2FTrigger::                       ds 1 ; d972
-wTradeCenterTrigger::                        ds 1 ; d973
-wColosseumTrigger::                          ds 1 ; d974
-wTimeCapsuleTrigger::                        ds 1 ; d975
-wPowerPlantTrigger::                         ds 1 ; d976
-wCeruleanGymTrigger::                        ds 1 ; d977
-wRoute25Trigger::                            ds 1 ; d978
-wTrainerHouseB1FTrigger::                    ds 1 ; d979
-wVictoryRoadGateTrigger::                    ds 1 ; d97a
-wSaffronTrainStationTrigger::                ds 1 ; d97b
-wRoute16GateTrigger::                        ds 1 ; d97c
-wRoute1718GateTrigger::                      ds 1 ; d97d
-wIndigoPlateauPokecenter1FTrigger::          ds 1 ; d97e
-wWillsRoomTrigger::                          ds 1 ; d97f
-wKogasRoomTrigger::                          ds 1 ; d980
-wBrunosRoomTrigger::                         ds 1 ; d981
-wKarensRoomTrigger::                         ds 1 ; d982
-wLancesRoomTrigger::                         ds 1 ; d983
-wHallOfFameTrigger::                         ds 1 ; d984
-wRoute27Trigger::                            ds 1 ; d985
-wNewBarkTownTrigger::                        ds 1 ; d986
-wElmsLabTrigger::                            ds 1 ; d987
-wKrissHouse1FTrigger::                       ds 1 ; d988
-wRoute29Trigger::                            ds 1 ; d989
-wCherrygroveCityTrigger::                    ds 1 ; d98a
-wMrPokemonsHouseTrigger::                    ds 1 ; d98b
-wRoute32Trigger::                            ds 1 ; d98c
-wRoute35NationalParkGateTrigger::            ds 1 ; d98d
-wRoute36Trigger::                            ds 1 ; d98e
-wRoute36NationalParkGateTrigger::            ds 1 ; d98f
-wAzaleaTownTrigger::                         ds 1 ; d990
-wGoldenrodGymTrigger::                       ds 1 ; d991
-wGoldenrodMagnetTrainStationTrigger::        ds 1 ; d992
-wGoldenrodPokecenter1FTrigger::              ds 1 ; d993
-wOlivineCityTrigger::                        ds 1 ; d994
-wRoute34Trigger::                            ds 1 ; d995
-wRoute34IlexForestGateTrigger::              ds 1 ; d996
-wEcruteakHouseTrigger::                      ds 1 ; d997
-wWiseTriosRoomTrigger::                      ds 1 ; d998
-wEcruteakPokecenter1FTrigger::               ds 1 ; d999
-wEcruteakGymTrigger::                        ds 1 ; d99a
-wMahoganyTownTrigger::                       ds 1 ; d99b
-wRoute42Trigger::                            ds 1 ; d99c
-wCianwoodCityTrigger::                       ds 1 ; d99d
-wBattleTower1FTrigger::                      ds 1 ; d99e
-wBattleTowerBattleRoomTrigger::              ds 1 ; d99f
-wBattleTowerElevatorTrigger::                ds 1 ; d9a0
-wBattleTowerHallwayTrigger::                 ds 1 ; d9a1
-wBattleTowerOutsideTrigger::                 ds 1 ; d9a2
-wRoute43GateTrigger::                        ds 1 ; d9a3
-wMountMoonTrigger::                          ds 1 ; d9a4
-wSproutTower3FTrigger::                      ds 1 ; d9a5
-wTinTower1FTrigger::                         ds 1 ; d9a6
-wBurnedTower1FTrigger::                      ds 1 ; d9a7
-wBurnedTowerB1FTrigger::                     ds 1 ; d9a8
-wRadioTower5FTrigger::                       ds 1 ; d9a9
-wRuinsOfAlphOutsideTrigger::                 ds 1 ; d9aa
-wRuinsOfAlphResearchCenterTrigger::          ds 1 ; d9ab
-wRuinsOfAlphHoOhChamberTrigger::             ds 1 ; d9ac
-wRuinsOfAlphKabutoChamberTrigger::           ds 1 ; d9ad
-wRuinsOfAlphOmanyteChamberTrigger::          ds 1 ; d9ae
-wRuinsOfAlphAerodactylChamberTrigger::       ds 1 ; d9af
-wRuinsOfAlphInnerChamberTrigger::            ds 1 ; d9b0
-wMahoganyMart1FTrigger::                     ds 1 ; d9b1
-wTeamRocketBaseB1FTrigger::                  ds 1 ; d9b2
-wTeamRocketBaseB2FTrigger::                  ds 1 ; d9b3
-wTeamRocketBaseB3FTrigger::                  ds 1 ; d9b4
-wUndergroundPathSwitchRoomEntrancesTrigger:: ds 1 ; d9b5
-wSilverCaveRoom3Trigger::                    ds 1 ; d9b6
-wVictoryRoadTrigger::                        ds 1 ; d9b7
-wDragonsDenB1FTrigger::                      ds 1 ; d9b8
-wDragonShrineTrigger::                       ds 1 ; d9b9
-wOlivinePortTrigger::                        ds 1 ; d9ba
-wVermilionPortTrigger::                      ds 1 ; d9bb
-wFastShip1FTrigger::                         ds 1 ; d9bc
-wFastShipB1FTrigger::                        ds 1 ; d9bd
-wMountMoonSquareTrigger::                    ds 1 ; d9be
-wMobileTradeRoomMobileTrigger::              ds 1 ; d9bf
-wMobileBattleRoomTrigger::                   ds 1 ; d9c0
+wPokecenter2FTrigger::                       db ; d972
+wTradeCenterTrigger::                        db ; d973
+wColosseumTrigger::                          db ; d974
+wTimeCapsuleTrigger::                        db ; d975
+wPowerPlantTrigger::                         db ; d976
+wCeruleanGymTrigger::                        db ; d977
+wRoute25Trigger::                            db ; d978
+wTrainerHouseB1FTrigger::                    db ; d979
+wVictoryRoadGateTrigger::                    db ; d97a
+wSaffronTrainStationTrigger::                db ; d97b
+wRoute16GateTrigger::                        db ; d97c
+wRoute1718GateTrigger::                      db ; d97d
+wIndigoPlateauPokecenter1FTrigger::          db ; d97e
+wWillsRoomTrigger::                          db ; d97f
+wKogasRoomTrigger::                          db ; d980
+wBrunosRoomTrigger::                         db ; d981
+wKarensRoomTrigger::                         db ; d982
+wLancesRoomTrigger::                         db ; d983
+wHallOfFameTrigger::                         db ; d984
+wRoute27Trigger::                            db ; d985
+wNewBarkTownTrigger::                        db ; d986
+wElmsLabTrigger::                            db ; d987
+wKrissHouse1FTrigger::                       db ; d988
+wRoute29Trigger::                            db ; d989
+wCherrygroveCityTrigger::                    db ; d98a
+wMrPokemonsHouseTrigger::                    db ; d98b
+wRoute32Trigger::                            db ; d98c
+wRoute35NationalParkGateTrigger::            db ; d98d
+wRoute36Trigger::                            db ; d98e
+wRoute36NationalParkGateTrigger::            db ; d98f
+wAzaleaTownTrigger::                         db ; d990
+wGoldenrodGymTrigger::                       db ; d991
+wGoldenrodMagnetTrainStationTrigger::        db ; d992
+wGoldenrodPokecenter1FTrigger::              db ; d993
+wOlivineCityTrigger::                        db ; d994
+wRoute34Trigger::                            db ; d995
+wRoute34IlexForestGateTrigger::              db ; d996
+wEcruteakHouseTrigger::                      db ; d997
+wWiseTriosRoomTrigger::                      db ; d998
+wEcruteakPokecenter1FTrigger::               db ; d999
+wEcruteakGymTrigger::                        db ; d99a
+wMahoganyTownTrigger::                       db ; d99b
+wRoute42Trigger::                            db ; d99c
+wCianwoodCityTrigger::                       db ; d99d
+wBattleTower1FTrigger::                      db ; d99e
+wBattleTowerBattleRoomTrigger::              db ; d99f
+wBattleTowerElevatorTrigger::                db ; d9a0
+wBattleTowerHallwayTrigger::                 db ; d9a1
+wBattleTowerOutsideTrigger::                 db ; d9a2
+wRoute43GateTrigger::                        db ; d9a3
+wMountMoonTrigger::                          db ; d9a4
+wSproutTower3FTrigger::                      db ; d9a5
+wTinTower1FTrigger::                         db ; d9a6
+wBurnedTower1FTrigger::                      db ; d9a7
+wBurnedTowerB1FTrigger::                     db ; d9a8
+wRadioTower5FTrigger::                       db ; d9a9
+wRuinsOfAlphOutsideTrigger::                 db ; d9aa
+wRuinsOfAlphResearchCenterTrigger::          db ; d9ab
+wRuinsOfAlphHoOhChamberTrigger::             db ; d9ac
+wRuinsOfAlphKabutoChamberTrigger::           db ; d9ad
+wRuinsOfAlphOmanyteChamberTrigger::          db ; d9ae
+wRuinsOfAlphAerodactylChamberTrigger::       db ; d9af
+wRuinsOfAlphInnerChamberTrigger::            db ; d9b0
+wMahoganyMart1FTrigger::                     db ; d9b1
+wTeamRocketBaseB1FTrigger::                  db ; d9b2
+wTeamRocketBaseB2FTrigger::                  db ; d9b3
+wTeamRocketBaseB3FTrigger::                  db ; d9b4
+wUndergroundPathSwitchRoomEntrancesTrigger:: db ; d9b5
+wSilverCaveRoom3Trigger::                    db ; d9b6
+wVictoryRoadTrigger::                        db ; d9b7
+wDragonsDenB1FTrigger::                      db ; d9b8
+wDragonShrineTrigger::                       db ; d9b9
+wOlivinePortTrigger::                        db ; d9ba
+wVermilionPortTrigger::                      db ; d9bb
+wFastShip1FTrigger::                         db ; d9bc
+wFastShipB1FTrigger::                        db ; d9bd
+wMountMoonSquareTrigger::                    db ; d9be
+wMobileTradeRoomMobileTrigger::              db ; d9bf
+wMobileBattleRoomTrigger::                   db ; d9c0
 
 	ds 49
 
@@ -2665,45 +2538,43 @@
 
 ;SECTION "Events", WRAMX
 
-wJackFightCount::    ds 1 ; d9f2
-wBeverlyFightCount:: ds 1 ; unused
-wHueyFightCount::    ds 1
-wGavenFightCount::   ds 1
-wBethFightCount::    ds 1
-wJoseFightCount::    ds 1
-wReenaFightCount::   ds 1
-wJoeyFightCount::    ds 1
-wWadeFightCount::    ds 1
-wRalphFightCount::   ds 1
-wLizFightCount::     ds 1
-wAnthonyFightCount:: ds 1
-wToddFightCount::    ds 1
-wGinaFightCount::    ds 1
-wIrwinFightCount::   ds 1 ; unused
-wArnieFightCount::   ds 1
-wAlanFightCount::    ds 1
-wDanaFightCount::    ds 1
-wChadFightCount::    ds 1
-wDerekFightCount::   ds 1 ; unused
-wTullyFightCount::   ds 1
-wBrentFightCount::   ds 1
-wTiffanyFightCount:: ds 1
-wVanceFightCount::   ds 1
-wWiltonFightCount::  ds 1
-wKenjiFightCount::   ds 1 ; unused
-wParryFightCount::   ds 1
-wErinFightCount::    ds 1
+wJackFightCount::    db ; d9f2
+wBeverlyFightCount:: db ; unused
+wHueyFightCount::    db
+wGavenFightCount::   db
+wBethFightCount::    db
+wJoseFightCount::    db
+wReenaFightCount::   db
+wJoeyFightCount::    db
+wWadeFightCount::    db
+wRalphFightCount::   db
+wLizFightCount::     db
+wAnthonyFightCount:: db
+wToddFightCount::    db
+wGinaFightCount::    db
+wIrwinFightCount::   db ; unused
+wArnieFightCount::   db
+wAlanFightCount::    db
+wDanaFightCount::    db
+wChadFightCount::    db
+wDerekFightCount::   db ; unused
+wTullyFightCount::   db
+wBrentFightCount::   db
+wTiffanyFightCount:: db
+wVanceFightCount::   db
+wWiltonFightCount::  db
+wKenjiFightCount::   db ; unused
+wParryFightCount::   db
+wErinFightCount::    db
 ; da0e
 	ds 100
 
-EventFlags:: ; da72
-	flag_array NUM_EVENTS
+EventFlags:: flag_array NUM_EVENTS ; da72
 ; db6c
 
 	ds 6
 
-wCurBox:: ; db72
-	ds 1
+wCurBox:: db ; db72
 
 	ds 2
 
@@ -2710,7 +2581,8 @@
 ; 8 chars + $50
 wBoxNames:: ds BOX_NAME_LENGTH * NUM_BOXES ; db75
 
-wCelebiEvent:: ds 1
+wCelebiEvent:: db
+
 	ds 1
 
 BikeFlags:: ; dbf5
@@ -2717,55 +2589,49 @@
 ; bit 0: using strength
 ; bit 1: always on bike
 ; bit 2: downhill
-	ds 1
+	db
 
 	ds 1
-wCurrentMapTriggerPointer:: ds 2 ; dbf7
 
-wCurrentCaller:: ds 2 ; dbf9
-wCurrMapWarpCount:: ds 1 ; dbfb
-wCurrMapWarpHeaderPointer:: ds 2 ; dbfc
-wCurrentMapXYTriggerCount:: ds 1 ; dbfe
-wCurrentMapXYTriggerHeaderPointer:: ds 2 ; dbff
-wCurrentMapSignpostCount:: ds 1 ; dc01
-wCurrentMapSignpostHeaderPointer:: ds 2 ; dc02
-wCurrentMapPersonEventCount:: ds 1 ; dc04
-wCurrentMapPersonEventHeaderPointer:: ds 2 ; dc05
-wCurrMapTriggerCount:: ds 1 ; dc07
-wCurrMapTriggerHeaderPointer:: ds 2 ; dc08
-wCurrMapCallbackCount:: ds 1 ; dc0a
-wCurrMapCallbackHeaderPointer:: ds 2 ; dc0b
+wCurrentMapTriggerPointer:: dw ; dbf7
+
+wCurrentCaller:: dw ; dbf9
+wCurrMapWarpCount:: db ; dbfb
+wCurrMapWarpHeaderPointer:: dw ; dbfc
+wCurrentMapXYTriggerCount:: db ; dbfe
+wCurrentMapXYTriggerHeaderPointer:: dw ; dbff
+wCurrentMapSignpostCount:: db ; dc01
+wCurrentMapSignpostHeaderPointer:: dw ; dc02
+wCurrentMapPersonEventCount:: db ; dc04
+wCurrentMapPersonEventHeaderPointer:: dw ; dc05
+wCurrMapTriggerCount:: db ; dc07
+wCurrMapTriggerHeaderPointer:: dw ; dc08
+wCurrMapCallbackCount:: db ; dc0a
+wCurrMapCallbackHeaderPointer:: dw ; dc0b
+
 	ds 2
 
 ; Sprite id of each decoration
-Bed:: ; dc0f
-	ds 1
-Carpet:: ; dc10
-	ds 1
-Plant:: ; dc11
-	ds 1
-Poster:: ; dc12
-	ds 1
-Console:: ; dc13
-	ds 1
-LeftOrnament:: ; dc14
-	ds 1
-RightOrnament:: ; dc15
-	ds 1
-BigDoll:: ; dc16
-	ds 1
+Bed::           db ; dc0f
+Carpet::        db ; dc10
+Plant::         db ; dc11
+Poster::        db ; dc12
+Console::       db ; dc13
+LeftOrnament::  db ; dc14
+RightOrnament:: db ; dc15
+BigDoll::       db ; dc16
 
 ; Items bought from Mom
-wWhichMomItem:: ds 1 ; dc17
-wWhichMomItemSet:: ds 1 ; dc18
+wWhichMomItem:: db ; dc17
+wWhichMomItemSet:: db ; dc18
 MomItemTriggerBalance:: ds 3 ; dc19
 
-wDailyResetTimer:: ds 2 ; dc1c
-DailyFlags:: ds 1
-WeeklyFlags:: ds 1
-SwarmFlags:: ds 1
+wDailyResetTimer:: dw ; dc1c
+DailyFlags:: db
+WeeklyFlags:: db
+SwarmFlags:: db
 	ds 2
-wStartDay:: ds 1
+wStartDay:: db
 	ds 3
 
 FruitTreeFlags:: flag_array NUM_FRUIT_TREES ; dc27
@@ -2772,85 +2638,78 @@
 
 	ds 2
 
-wLuckyNumberDayBuffer:: ds 2 ; dc2d
+wLuckyNumberDayBuffer:: dw ; dc2d
 	ds 2
-wSpecialPhoneCallID:: ds 1 ; dc31
+wSpecialPhoneCallID:: db ; dc31
 	ds 3
 wBugContestStartTime:: ds 4 ; day, hour, min, sec ; dc35
-wUnusedTwoDayTimerOn:: ds 1 ; dc39
-wUnusedTwoDayTimer:: ds 1
-wUnusedTwoDayTimerStartDate:: ds 1
+wUnusedTwoDayTimerOn:: db ; dc39
+wUnusedTwoDayTimer:: db
+wUnusedTwoDayTimerStartDate:: db
 	ds 4
-wMobileOrCable_LastSelection:: ds 1
+wMobileOrCable_LastSelection:: db
 wdc41:: ds 1
 wdc42:: ds 8
-wBuenasPassword:: ds 1
-wBlueCardBalance:: ds 1
+wBuenasPassword:: db
+wBlueCardBalance:: db
 wDailyRematchFlags:: ds 4
 wDailyPhoneItemFlags:: ds 4
 wDailyPhoneTimeOfDayFlags:: ds 4
 wKenjiBreakTimer:: ds 2 ; Kenji
-wYanmaMapGroup:: ds 1 ; dc5a
-wYanmaMapNumber:: ds 1
+wYanmaMapGroup:: db ; dc5a
+wYanmaMapNumber:: db
 wPlayerMonSelection:: ds 3
 wdc5f:: ds 1
 wdc60:: ds 19
 
-StepCount:: ; dc73
-	ds 1
-PoisonStepCount:: ; dc74
-	ds 1
-
+StepCount:: db ; dc73
+PoisonStepCount:: db ; dc74
 	ds 2
-wHappinessStepCount:: ds 1
+wHappinessStepCount:: db
 	ds 1
+
 wParkBallsRemaining::
-wSafariBallsRemaining:: ds 1 ; dc79
-wSafariTimeRemaining:: ds 2 ; dc7a
+wSafariBallsRemaining:: db ; dc79
+wSafariTimeRemaining:: dw ; dc7a
+
 wPhoneList:: ds CONTACT_LIST_SIZE ; dc7c
 ; dc86
 	ds 23
-wLuckyNumberShowFlag:: ds 2 ; dc9d
-wLuckyIDNumber:: ds 2 ; dc9f
-wRepelEffect:: ds 1 ; If a Repel is in use, it contains the nr of steps it's still active
-wBikeStep:: ds 2
-wKurtApricornQuantity:: ds 1
 
+wLuckyNumberShowFlag:: dw ; dc9d
+wLuckyIDNumber:: dw ; dc9f
+
+wRepelEffect:: db ; If a Repel is in use, it contains the nr of steps it's still active
+wBikeStep:: dw
+wKurtApricornQuantity:: db
+
 wPlayerDataEnd::
 
 
 wMapData::
 
-VisitedSpawns:: ; dca5
-	flag_array NUM_SPAWNS
+VisitedSpawns:: flag_array NUM_SPAWNS ; dca5
 
-wDigWarp:: ds 1 ; dcaa
-wDigMapGroup:: ds 1 ; dcab
-wDigMapNumber:: ds 1 ; dcac
+wDigWarpNumber:: db ; dcaa
+wDigMapGroup::   db ; dcab
+wDigMapNumber::  db ; dcac
+
 ; used on maps like second floor pokécenter, which are reused, so we know which
 ; map to return to
-BackupWarpNumber:: ; dcad
-	ds 1
-BackupMapGroup:: ; dcae
-	ds 1
-BackupMapNumber:: ; dcaf
-	ds 1
+BackupWarpNumber:: db ; dcad
+BackupMapGroup::   db ; dcae
+BackupMapNumber::  db ; dcaf
 
 	ds 3
 
-wLastSpawnMapGroup:: ds 1
-wLastSpawnMapNumber:: ds 1
+wLastSpawnMapGroup:: db
+wLastSpawnMapNumber:: db
 
-WarpNumber:: ; dcb4
-	ds 1
-MapGroup:: ; dcb5
-	ds 1 ; map group of current map
-MapNumber:: ; dcb6
-	ds 1 ; map number of current map
-YCoord:: ; dcb7
-	ds 1 ; current y coordinate relative to top-left corner of current map
-XCoord:: ; dcb8
-	ds 1 ; current x coordinate relative to top-left corner of current map
+WarpNumber:: db ; dcb4
+MapGroup:: db ; dcb5 ; map group of current map
+MapNumber:: db ; dcb6 ; map number of current map
+YCoord:: db ; dcb7 ; current y coordinate relative to top-left corner of current map
+XCoord:: db ; dcb8 ; current x coordinate relative to top-left corner of current map
 wScreenSave:: ds 6 * 5
 
 wMapDataEnd::
@@ -2860,12 +2719,9 @@
 
 wPokemonData::
 
-PartyCount:: ; dcd7
-	ds 1 ; number of Pokémon in party
-PartySpecies:: ; dcd8
-	ds PARTY_LENGTH ; species of each Pokémon in party
-PartyEnd:: ; dcde
-	ds 1 ; legacy scripts don't check PartyCount
+PartyCount:: db ; dcd7 ; number of Pokémon in party
+PartySpecies:: ds PARTY_LENGTH ; dcd8 ; species of each Pokémon in party
+PartyEnd:: db ; dcde ; legacy scripts don't check PartyCount
 
 PartyMons::
 PartyMon1:: party_struct PartyMon1 ; dcdf
@@ -2880,32 +2736,25 @@
 PartyMonNicknames:: ds PKMN_NAME_LENGTH * PARTY_LENGTH ; de41
 PartyMonNicknamesEnd::
 
-
 	ds 22
 
 
-PokedexCaught:: ; de99
-	flag_array NUM_POKEMON
+PokedexCaught:: flag_array NUM_POKEMON ; de99
 EndPokedexCaught::
 
-PokedexSeen:: ; deb9
-	flag_array NUM_POKEMON
+PokedexSeen:: flag_array NUM_POKEMON ; deb9
 EndPokedexSeen::
 
-UnownDex:: ; ded9
-	ds 26
-UnlockedUnowns:: ; def3
-	ds 1
+UnownDex:: ds NUM_UNOWN ; ded9
+UnlockedUnowns:: db ; def3
+wFirstUnownSeen:: db
 
-wFirstUnownSeen:: ds 1
-
-
 wDaycareMan:: ; def5
 ; bit 7: active
 ; bit 6: monsters are compatible
 ; bit 5: egg ready
 ; bit 0: monster 1 in daycare
-	ds 1
+	db
 
 wBreedMon1::
 wBreedMon1Nick::  ds PKMN_NAME_LENGTH ; def6
@@ -2915,14 +2764,14 @@
 wDaycareLady:: ; df2c
 ; bit 7: active
 ; bit 0: monster 2 in daycare
-	ds 1
+	db
 
 wStepsToEgg:: ; df2d
-	ds 1
+	db
 wBreedMotherOrNonDitto:: ; df2e
 ;  z: yes
 ; nz: no
-	ds 1
+	db
 
 wBreedMon2::
 wBreedMon2Nick::  ds PKMN_NAME_LENGTH ; df2f
@@ -2933,62 +2782,64 @@
 wEggOT::   ds NAME_LENGTH ; df70
 wEggMon::  box_struct wEggMon ; df7b
 
-wBugContestSecondPartySpecies:: ds 1
+wBugContestSecondPartySpecies:: db
 wContestMon:: party_struct wContestMon ; df9c
 
-wDunsparceMapGroup:: ds 1
-wDunsparceMapNumber:: ds 1
-wFishingSwarmFlag:: ds 1
+wDunsparceMapGroup:: db
+wDunsparceMapNumber:: db
+wFishingSwarmFlag:: db
 
 wRoamMon1:: roam_struct wRoamMon1 ; dfcf
 wRoamMon2:: roam_struct wRoamMon2 ; dfd6
 wRoamMon3:: roam_struct wRoamMon3 ; dfdd
 
-wRoamMons_CurrentMapNumber:: ds 1
-wRoamMons_CurrentMapGroup:: ds 1
-wRoamMons_LastMapNumber:: ds 1
-wRoamMons_LastMapGroup:: ds 1
-wBestMagikarpLengthFeet:: ds 1
-wBestMagikarpLengthInches:: ds 1
+wRoamMons_CurrentMapNumber:: db
+wRoamMons_CurrentMapGroup:: db
+wRoamMons_LastMapNumber:: db
+wRoamMons_LastMapGroup:: db
+wBestMagikarpLengthFeet:: db
+wBestMagikarpLengthInches:: db
 wMagikarpRecordHoldersName:: ds NAME_LENGTH
 ; dff5
 wPokemonDataEnd::
 wGameDataEnd::
 
+
 SECTION "Pic Animations", WRAMX
 
 TempTileMap::
 ; 20x18 grid of 8x8 tiles
 	ds SCREEN_WIDTH * SCREEN_HEIGHT ; $168 = 360
+
 ; PokeAnim Header
-wPokeAnimSceneIndex:: ds 1
-wPokeAnimPointer:: ds 2
-wPokeAnimSpecies:: ds 1
-wPokeAnimUnownLetter:: ds 1
-wPokeAnimSpeciesOrUnown:: ds 1
-wPokeAnimGraphicStartTile:: ds 1
-wPokeAnimCoord:: ds 2
-wPokeAnimFrontpicHeight:: ds 1
+wPokeAnimSceneIndex:: db
+wPokeAnimPointer:: dw
+wPokeAnimSpecies:: db
+wPokeAnimUnownLetter:: db
+wPokeAnimSpeciesOrUnown:: db
+wPokeAnimGraphicStartTile:: db
+wPokeAnimCoord:: dw
+wPokeAnimFrontpicHeight:: db
 ; PokeAnim Data
-wPokeAnimExtraFlag:: ds 1
-wPokeAnimSpeed:: ds 1
-wPokeAnimPointerBank:: ds 1
-wPokeAnimPointerAddr:: ds 2
-wPokeAnimFramesBank:: ds 1
-wPokeAnimFramesAddr:: ds 2
-wPokeAnimBitmaskBank:: ds 1
-wPokeAnimBitmaskAddr:: ds 2
-wPokeAnimFrame:: ds 1
-wPokeAnimJumptableIndex:: ds 1
-wPokeAnimRepeatTimer:: ds 1
-wPokeAnimCurBitmask:: ds 1
-wPokeAnimWaitCounter:: ds 1
-wPokeAnimCommand:: ds 1
-wPokeAnimParameter:: ds 1
+wPokeAnimExtraFlag:: db
+wPokeAnimSpeed:: db
+wPokeAnimPointerBank:: db
+wPokeAnimPointerAddr:: dw
+wPokeAnimFramesBank:: db
+wPokeAnimFramesAddr:: dw
+wPokeAnimBitmaskBank:: db
+wPokeAnimBitmaskAddr:: dw
+wPokeAnimFrame:: db
+wPokeAnimJumptableIndex:: db
+wPokeAnimRepeatTimer:: db
+wPokeAnimCurBitmask:: db
+wPokeAnimWaitCounter:: db
+wPokeAnimCommand:: db
+wPokeAnimParameter:: db
 	ds 1
-wPokeAnimBitmaskCurCol:: ds 1
-wPokeAnimBitmaskCurRow:: ds 1
-wPokeAnimBitmaskCurBit:: ds 1
+wPokeAnimBitmaskCurCol:: db
+wPokeAnimBitmaskCurRow:: db
+wPokeAnimBitmaskCurBit:: db
 wPokeAnimBitmaskBuffer:: ds 7
 	ds 2
 wPokeAnimStructEnd::
@@ -3017,17 +2868,17 @@
 w3_d4a2:: battle_tower_struct w3_d4a2
 w3_d582:: battle_tower_struct w3_d582
 w3_d662:: battle_tower_struct w3_d662
-UNION
+UNION ; d742
 w3_d742:: battle_tower_struct w3_d742
 ; d822
 
-NEXTU
+NEXTU ; d742
 	ds $be
 
 wBTChoiceOfLvlGroup::
 w3_d800:: ; ds BG_MAP_WIDTH * SCREEN_HEIGHT ($240)
 	ds $69
-ENDU
+ENDU ; d869
 w3_d869:: ds $17
 w3_d880:: ds 1
 w3_d881:: ds 1
@@ -3049,28 +2900,29 @@
 w3_dfec:: ds $10
 w3_dffc:: ds 4
 
+
 SECTION "GBC Video", WRAMX
 
-; 8 4-color palettes
+; eight 4-color palettes each
 UnknBGPals:: ds 8 palettes ; d000
 UnknOBPals:: ds 8 palettes ; d040
 BGPals::     ds 8 palettes ; d080
 OBPals::     ds 8 palettes ; d0c0
 
-LYOverrides:: ; d100
-	ds SCREEN_HEIGHT_PX
+LYOverrides:: ds SCREEN_HEIGHT_PX ; d100
 LYOverridesEnd:: ; d190
 
 	ds 1
-wMagnetTrainDirection:: ds 1
-wMagnetTrainInitPosition:: ds 1
-wMagnetTrainHoldPosition:: ds 1
-wMagnetTrainFinalPosition:: ds 1
-wMagnetTrainPlayerSpriteInitX:: ds 1
+
+wMagnetTrainDirection:: db
+wMagnetTrainInitPosition:: db
+wMagnetTrainHoldPosition:: db
+wMagnetTrainFinalPosition:: db
+wMagnetTrainPlayerSpriteInitX:: db
+
 	ds 106
 
-LYOverridesBackup:: ; d200
-	ds SCREEN_HEIGHT_PX
+LYOverridesBackup:: ds SCREEN_HEIGHT_PX ; d200
 LYOverridesBackupEnd::
 
 
@@ -3099,51 +2951,46 @@
 BGEffect5:: battle_bg_effect BGEffect5
 ActiveBGEffectsEnd::
 
-wNumActiveBattleAnims:: ds 1 ; d40e
+wNumActiveBattleAnims:: db ; d40e
 
-BattleAnimFlags:: ; d40f
-	ds 1
-BattleAnimAddress:: ; d410
-	ds 2
-BattleAnimDuration:: ; d412
-	ds 1
-BattleAnimParent:: ; d413
-	ds 2
-BattleAnimLoops:: ; d415
-	ds 1
-BattleAnimVar:: ; d416
-	ds 1
-BattleAnimByte:: ; d417
-	ds 1
-wBattleAnimOAMPointerLo:: ds 1 ; d418
+BattleAnimFlags:: db ; d40f
+BattleAnimAddress:: dw ; d410
+BattleAnimDuration:: db ; d412
+BattleAnimParent:: dw ; d413
+BattleAnimLoops:: db ; d415
+BattleAnimVar:: db ; d416
+BattleAnimByte:: db ; d417
+wBattleAnimOAMPointerLo:: db ; d418
 BattleAnimTemps:: ; d419
 wBattleAnimTempOAMFlags::
-wBattleAnimTemp0:: ds 1
-wBattleAnimTemp1:: ds 1
+wBattleAnimTemp0:: db
+wBattleAnimTemp1:: db
 wBattleAnimTempTileID::
-wBattleAnimTemp2:: ds 1
+wBattleAnimTemp2:: db
 wBattleAnimTempXCoord::
-wBattleAnimTemp3:: ds 1
+wBattleAnimTemp3:: db
 wBattleAnimTempYCoord::
-wBattleAnimTemp4:: ds 1
+wBattleAnimTemp4:: db
 wBattleAnimTempXOffset::
-wBattleAnimTemp5:: ds 1
+wBattleAnimTemp5:: db
 wBattleAnimTempYOffset::
-wBattleAnimTemp6:: ds 1
-wBattleAnimTemp7:: ds 1
+wBattleAnimTemp6:: db
+wBattleAnimTemp7:: db
 wBattleAnimTempPalette::
-wBattleAnimTemp8:: ds 1
+wBattleAnimTemp8:: db
 
-UNION
+UNION ; d422
 wSurfWaveBGEffect:: ds $40
 wSurfWaveBGEffectEnd::
 
-NEXTU
+NEXTU ; d422
 	ds $32
 wBattleAnimEnd::
-ENDU
+ENDU ; d462
 
+
 SECTION "WRAM 5 MOBILE", WRAMX
+
 w5_d800:: ds $200
 w5_da00:: ds $200
 w5_dc00:: ds $d
@@ -3154,17 +3001,23 @@
 w5_MobileOpponentBattleWinMessage:: ds $c ; dc32
 w5_MobileOpponentBattleLossMessage:: ds $c ; dc3e
 
+
 SECTION "WRAM 6", WRAMX
 
-wDecompressScratch::
-wScratchTileMap::
-	ds BG_MAP_WIDTH * BG_MAP_HEIGHT
-wScratchAttrMap:: ds $200
-w6_d600:: ds $200
-w6_d800::
+UNION ; d000
+wScratchTileMap:: ds BG_MAP_WIDTH * BG_MAP_HEIGHT
+wScratchAttrMap:: ds BG_MAP_WIDTH * BG_MAP_HEIGHT
 
-INCLUDE "sram.asm"
+NEXTU ; d000
+wDecompressScratch:: ds $80 tiles
+wDecompressEnemyFrontpic:: ds $80 tiles
+ENDU ; e000
 
+
 SECTION "WRAM 7", WRAMX
+
 wWindowStack:: ds $1000 - 1
 wWindowStackBottom:: ds 1
+
+
+INCLUDE "sram.asm"