shithub: pokered

Download patch

ref: f37cf959c930ae9595f9f71ce0d9b17dcf5421d0
parent: aa97e196dd5b37e89db5ddf154dc7aea9b02a045
author: Rangi <remy.oukaour+rangi42@gmail.com>
date: Tue Jul 14 06:21:18 EDT 2020

Clean up some data, using macros for multiline list entries

--- a/audio/engine_1.asm
+++ b/audio/engine_1.asm
@@ -1346,12 +1346,12 @@
 	ld [wMusicTempo + 1], a
 	ld [wMusicWaveInstrument], a
 	ld [wSfxWaveInstrument], a
-	ld d, $8
+	ld d, NUM_CHANNELS
 	ld hl, wChannelReturnAddresses
 	call .FillMem
 	ld hl, wChannelCommandPointers
 	call .FillMem
-	ld d, $4
+	ld d, NUM_MUSIC_CHANS
 	ld hl, wChannelSoundIDs
 	call .FillMem
 	ld hl, wChannelFlags1
--- a/audio/engine_2.asm
+++ b/audio/engine_2.asm
@@ -1409,12 +1409,12 @@
 	ld [wMusicTempo + 1], a
 	ld [wMusicWaveInstrument], a
 	ld [wSfxWaveInstrument], a
-	ld d, $8
+	ld d, NUM_CHANNELS
 	ld hl, wChannelReturnAddresses
 	call .FillMem
 	ld hl, wChannelCommandPointers
 	call .FillMem
-	ld d, $4
+	ld d, NUM_MUSIC_CHANS
 	ld hl, wChannelSoundIDs
 	call .FillMem
 	ld hl, wChannelFlags1
--- a/audio/engine_3.asm
+++ b/audio/engine_3.asm
@@ -1346,12 +1346,12 @@
 	ld [wMusicTempo + 1], a
 	ld [wMusicWaveInstrument], a
 	ld [wSfxWaveInstrument], a
-	ld d, $8
+	ld d, NUM_CHANNELS
 	ld hl, wChannelReturnAddresses
 	call .FillMem
 	ld hl, wChannelCommandPointers
 	call .FillMem
-	ld d, $4
+	ld d, NUM_MUSIC_CHANS
 	ld hl, wChannelSoundIDs
 	call .FillMem
 	ld hl, wChannelFlags1
--- a/constants/audio_constants.asm
+++ b/constants/audio_constants.asm
@@ -1,4 +1,5 @@
 ; pitch
+; Audio[1|2|3]_Pitches indexes (see audio/notes.asm)
 	const_def
 	const C_ ; 0
 	const C# ; 1
@@ -14,15 +15,20 @@
 	const B_ ; B
 
 ; channel
+; Audio[1|2|3]_HWChannelBaseAddresses, Audio[1|2|3]_HWChannelDisableMasks,
+; and Audio[1|2|3]_HWChannelEnableMasks indexes (see audio/engine_[1|2|3].asm)
 	const_def
 	const Ch1 ; 0
 	const Ch2 ; 1
 	const Ch3 ; 2
 	const Ch4 ; 3
+NUM_MUSIC_CHANS EQU const_value
 	const Ch5 ; 4
 	const Ch6 ; 5
 	const Ch7 ; 6
 	const Ch8 ; 7
+NUM_NOISE_CHANS EQU const_value - NUM_MUSIC_CHANS
+NUM_CHANNELS EQU const_value
 
 ; HW sound channel register base addresses
 HW_CH1_BASE EQU LOW(rNR10)
--- a/constants/menu_constants.asm
+++ b/constants/menu_constants.asm
@@ -58,25 +58,27 @@
 	const PARTY_TO_DAYCARE ; 3
 
 ; party menu types
+; PartyMenuMessagePointers indexes
 	const_def
-	const NORMAL_PARTY_MENU    ; 0
-	const USE_ITEM_PARTY_MENU  ; 1
-	const BATTLE_PARTY_MENU    ; 2
-	const TMHM_PARTY_MENU      ; 3
-	const SWAP_MONS_PARTY_MENU ; 4
-	const EVO_STONE_PARTY_MENU ; 5
-
+	const NORMAL_PARTY_MENU    ; $00
+	const USE_ITEM_PARTY_MENU  ; $01
+	const BATTLE_PARTY_MENU    ; $02
+	const TMHM_PARTY_MENU      ; $03
+	const SWAP_MONS_PARTY_MENU ; $04
+	const EVO_STONE_PARTY_MENU ; $05
 ; party menu message IDs
-	const_def $F0
-	const ANTIDOTE_MSG     ; $F0
-	const BURN_HEAL_MSG    ; $F1
-	const ICE_HEAL_MSG     ; $F2
-	const AWAKENING_MSG    ; $F3
-	const PARALYZ_HEAL_MSG ; $F4
-	const POTION_MSG       ; $F5
-	const FULL_HEAL_MSG    ; $F6
-	const REVIVE_MSG       ; $F7
-	const RARE_CANDY_MSG   ; $F8
+; PartyMenuItemUseMessagePointers indexes
+	const_next $F0
+FIRST_PARTY_MENU_TEXT_ID EQU const_value
+	const ANTIDOTE_MSG         ; $F0
+	const BURN_HEAL_MSG        ; $F1
+	const ICE_HEAL_MSG         ; $F2
+	const AWAKENING_MSG        ; $F3
+	const PARALYZ_HEAL_MSG     ; $F4
+	const POTION_MSG           ; $F5
+	const FULL_HEAL_MSG        ; $F6
+	const REVIVE_MSG           ; $F7
+	const RARE_CANDY_MSG       ; $F8
 
 ; naming screen types
 	const_def
--- a/constants/move_effect_constants.asm
+++ b/constants/move_effect_constants.asm
@@ -5,7 +5,7 @@
 
 	const_def
 	const NO_ADDITIONAL_EFFECT       ; $00
-	const_skip                       ; $01
+	const EFFECT_01                  ; $01 unused
 	const POISON_SIDE_EFFECT1        ; $02
 	const DRAIN_HP_EFFECT            ; $03
 	const BURN_SIDE_EFFECT1          ; $04
@@ -34,7 +34,7 @@
 	const THRASH_PETAL_DANCE_EFFECT  ; $1B
 	const SWITCH_AND_TELEPORT_EFFECT ; $1C
 	const TWO_TO_FIVE_ATTACKS_EFFECT ; $1D
-	const_skip                       ; $1E
+	const EFFECT_1E                  ; $1E unused
 	const FLINCH_SIDE_EFFECT1        ; $1F
 	const SLEEP_EFFECT               ; $20
 	const POISON_SIDE_EFFECT2        ; $21
--- a/constants/pokemon_data_constants.asm
+++ b/constants/pokemon_data_constants.asm
@@ -28,3 +28,14 @@
 
 MAX_EVOLUTIONS EQU 3
 EVOLUTION_SIZE EQU 4
+
+
+; wMonHGrowthRate values
+; GrowthRateTable indexes (see data/growth_rates.asm)
+	const_def
+	const GROWTH_MEDIUM_FAST
+	const GROWTH_SLIGHTLY_FAST
+	const GROWTH_SLIGHTLY_SLOW
+	const GROWTH_MEDIUM_SLOW
+	const GROWTH_FAST
+	const GROWTH_SLOW
--- a/constants/script_constants.asm
+++ b/constants/script_constants.asm
@@ -11,3 +11,22 @@
 SLOTSFISH   EQU $0E0C
 SLOTSBIRD   EQU $1210
 SLOTSMOUSE  EQU $1614
+
+; in game trade dialog sets
+	const_def
+	const TRADE_DIALOGSET_CASUAL
+	const TRADE_DIALOGSET_POLITE
+	const TRADE_DIALOGSET_HAPPY
+
+; badges
+; wObtainedBadges and wBeatGymFlags bits
+	const_def
+	const BIT_BOULDERBADGE ; 0
+	const BIT_CASCADEBADGE ; 1
+	const BIT_THUNDERBADGE ; 2
+	const BIT_RAINBOWBADGE ; 3
+	const BIT_SOULBADGE    ; 4
+	const BIT_MARSHBADGE   ; 5
+	const BIT_VOLCANOBADGE ; 6
+	const BIT_EARTHBADGE   ; 7
+NUM_BADGES EQU const_value
--- a/data/battle/always_happen_effects.asm
+++ b/data/battle/always_happen_effects.asm
@@ -5,9 +5,9 @@
 	db DREAM_EATER_EFFECT
 	db PAY_DAY_EFFECT
 	db TWO_TO_FIVE_ATTACKS_EFFECT
-	db $1E
+	db EFFECT_1E
 	db ATTACK_TWICE_EFFECT
 	db RECOIL_EFFECT
 	db TWINEEDLE_EFFECT
 	db RAGE_EFFECT
-	db -1
+	db -1 ; end
--- a/data/battle/critical_hit_moves.asm
+++ b/data/battle/critical_hit_moves.asm
@@ -3,4 +3,4 @@
 	db RAZOR_LEAF
 	db CRABHAMMER
 	db SLASH
-	db $FF
+	db -1 ; end
--- a/data/battle/residual_effects_1.asm
+++ b/data/battle/residual_effects_1.asm
@@ -17,4 +17,4 @@
 	db MIMIC_EFFECT
 	db LEECH_SEED_EFFECT
 	db SPLASH_EFFECT
-	db -1
+	db -1 ; end
--- a/data/battle/residual_effects_2.asm
+++ b/data/battle/residual_effects_2.asm
@@ -2,7 +2,7 @@
 ; non-side effects not included in ResidualEffects1
 ; stat-affecting moves, sleep-inflicting moves, and Bide
 ; e.g., Meditate, Bide, Hypnosis
-	db $01
+	db EFFECT_01
 	db ATTACK_UP1_EFFECT
 	db DEFENSE_UP1_EFFECT
 	db SPEED_UP1_EFFECT
@@ -29,4 +29,4 @@
 	db SPECIAL_DOWN2_EFFECT
 	db ACCURACY_DOWN2_EFFECT
 	db EVASION_DOWN2_EFFECT
-	db -1
+	db -1 ; end
--- a/data/battle/set_damage_effects.asm
+++ b/data/battle/set_damage_effects.asm
@@ -3,4 +3,4 @@
 ; e.g., Super Fang, Psywave
 	db SUPER_FANG_EFFECT
 	db SPECIAL_DAMAGE_EFFECT
-	db -1
+	db -1 ; end
--- a/data/battle/special_effects.asm
+++ b/data/battle/special_effects.asm
@@ -8,7 +8,7 @@
 	db PAY_DAY_EFFECT
 	db SWIFT_EFFECT
 	db TWO_TO_FIVE_ATTACKS_EFFECT
-	db $1E
+	db EFFECT_1E
 	db CHARGE_EFFECT
 	db SUPER_FANG_EFFECT
 	db SPECIAL_DAMAGE_EFFECT
@@ -16,9 +16,9 @@
 	db ATTACK_TWICE_EFFECT
 	db JUMP_KICK_EFFECT
 	db RECOIL_EFFECT
-	; fallthrough to Next EffectsArray
+	; fallthrough
 SpecialEffectsCont:
 ; damaging moves whose effect is executed prior to damage calculation
 	db THRASH_PETAL_DANCE_EFFECT
 	db TRAPPING_EFFECT
-	db -1
+	db -1 ; end
--- a/data/battle/unused_critical_hit_moves.asm
+++ b/data/battle/unused_critical_hit_moves.asm
@@ -3,4 +3,4 @@
 	db RAZOR_LEAF
 	db CRABHAMMER
 	db SLASH
-	db $FF
+	db -1 ; end
--- a/data/events/hidden_coins.asm
+++ b/data/events/hidden_coins.asm
@@ -1,14 +1,19 @@
+hidden_coin: MACRO
+	db \1, \3, \2
+ENDM
+
 HiddenCoinCoords:
-	db GAME_CORNER,$08,$00
-	db GAME_CORNER,$10,$01
-	db GAME_CORNER,$0b,$03
-	db GAME_CORNER,$0e,$03
-	db GAME_CORNER,$0c,$04
-	db GAME_CORNER,$0c,$09
-	db GAME_CORNER,$0f,$09
-	db GAME_CORNER,$0e,$10
-	db GAME_CORNER,$10,$0a
-	db GAME_CORNER,$07,$0b
-	db GAME_CORNER,$08,$0f
-	db GAME_CORNER,$0f,$0c
-	db $ff
+; map id, x, y
+	hidden_coin GAME_CORNER,  0,  8
+	hidden_coin GAME_CORNER,  1, 16
+	hidden_coin GAME_CORNER,  3, 11
+	hidden_coin GAME_CORNER,  3, 14
+	hidden_coin GAME_CORNER,  4, 12
+	hidden_coin GAME_CORNER,  9, 12
+	hidden_coin GAME_CORNER,  9, 15
+	hidden_coin GAME_CORNER, 16, 14
+	hidden_coin GAME_CORNER, 10, 16
+	hidden_coin GAME_CORNER, 11,  7
+	hidden_coin GAME_CORNER, 15,  8
+	hidden_coin GAME_CORNER, 12, 15
+	db -1 ; end
--- a/data/events/hidden_item_coords.asm
+++ b/data/events/hidden_item_coords.asm
@@ -1,57 +1,61 @@
+hidden_item: MACRO
+	db \1, \3, \2
+ENDM
+
 HiddenItemCoords:
-; map ID, then coords
-	db VIRIDIAN_FOREST,$12,$01
-	db VIRIDIAN_FOREST,$2a,$10
-	db MT_MOON_B2F,$0c,$12
-	db ROUTE_25,$03,$26
-	db ROUTE_9,$07,$0e
-	db SS_ANNE_KITCHEN,$09,$0d
-	db SS_ANNE_B1F_ROOMS,$01,$03
-	db ROUTE_10,$11,$09
-	db ROUTE_10,$35,$10
-	db ROCKET_HIDEOUT_B1F,$0f,$15
-	db ROCKET_HIDEOUT_B3F,$11,$1b
-	db ROCKET_HIDEOUT_B4F,$01,$19
-	db POKEMON_TOWER_5F,$0c,$04
-	db ROUTE_13,$0e,$01
-	db ROUTE_13,$0d,$10
-	db POKEMON_MANSION_B1F,$09,$01
-	db SAFARI_ZONE_GATE,$01,$0a
-	db SAFARI_ZONE_WEST,$05,$06
-	db SILPH_CO_5F,$03,$0c
-	db SILPH_CO_9F,$0f,$02
-	db COPYCATS_HOUSE_2F,$01,$01
-	db CERULEAN_CAVE_1F,$0b,$0e
-	db CERULEAN_CAVE_B1F,$03,$1b
-	db POWER_PLANT,$10,$11
-	db POWER_PLANT,$01,$0c
-	db SEAFOAM_ISLANDS_B2F,$0f,$0f
-	db SEAFOAM_ISLANDS_B4F,$11,$19
-	db POKEMON_MANSION_1F,$10,$08
-	db POKEMON_MANSION_3F,$09,$01
-	db ROUTE_23,$2c,$09
-	db ROUTE_23,$46,$13
-	db ROUTE_23,$5a,$08
-	db VICTORY_ROAD_2F,$02,$05
-	db VICTORY_ROAD_2F,$07,$1a
-	db UNUSED_MAP_6F,$0b,$0e
-	db VIRIDIAN_CITY,$04,$0e
-	db ROUTE_11,$05,$30
-	db ROUTE_12,$3f,$02
-	db ROUTE_17,$0e,$0f
-	db ROUTE_17,$2d,$08
-	db ROUTE_17,$48,$11
-	db ROUTE_17,$5b,$04
-	db ROUTE_17,$79,$08
-	db UNDERGROUND_PATH_NORTH_SOUTH,$04,$03
-	db UNDERGROUND_PATH_NORTH_SOUTH,$22,$04
-	db UNDERGROUND_PATH_WEST_EAST,$02,$0c
-	db UNDERGROUND_PATH_WEST_EAST,$05,$15
-	db CELADON_CITY,$0f,$30
-	db ROUTE_25,$01,$0a
-	db MT_MOON_B2F,$09,$21
-	db SEAFOAM_ISLANDS_B3F,$10,$09
-	db VERMILION_CITY,$0b,$0e
-	db CERULEAN_CITY,$08,$0f
-	db ROUTE_4,$03,$28
-	db $ff
+; map id, x, y
+	hidden_item VIRIDIAN_FOREST,                1,  18
+	hidden_item VIRIDIAN_FOREST,               16,  42
+	hidden_item MT_MOON_B2F,                   18,  12
+	hidden_item ROUTE_25,                      38,   3
+	hidden_item ROUTE_9,                       14,   7
+	hidden_item SS_ANNE_KITCHEN,               13,   9
+	hidden_item SS_ANNE_B1F_ROOMS,              3,   1
+	hidden_item ROUTE_10,                       9,  17
+	hidden_item ROUTE_10,                      16,  53
+	hidden_item ROCKET_HIDEOUT_B1F,            21,  15
+	hidden_item ROCKET_HIDEOUT_B3F,            27,  17
+	hidden_item ROCKET_HIDEOUT_B4F,            25,   1
+	hidden_item POKEMON_TOWER_5F,               4,  12
+	hidden_item ROUTE_13,                       1,  14
+	hidden_item ROUTE_13,                      16,  13
+	hidden_item POKEMON_MANSION_B1F,            1,   9
+	hidden_item SAFARI_ZONE_GATE,              10,   1 ; inaccessible
+	hidden_item SAFARI_ZONE_WEST,               6,   5
+	hidden_item SILPH_CO_5F,                   12,   3
+	hidden_item SILPH_CO_9F,                    2,  15
+	hidden_item COPYCATS_HOUSE_2F,              1,   1
+	hidden_item CERULEAN_CAVE_1F,              14,  11
+	hidden_item CERULEAN_CAVE_B1F,             27,   3
+	hidden_item POWER_PLANT,                   17,  16
+	hidden_item POWER_PLANT,                   12,   1
+	hidden_item SEAFOAM_ISLANDS_B2F,           15,  15
+	hidden_item SEAFOAM_ISLANDS_B4F,           25,  17
+	hidden_item POKEMON_MANSION_1F,             8,  16
+	hidden_item POKEMON_MANSION_3F,             1,   9
+	hidden_item ROUTE_23,                       9,  44
+	hidden_item ROUTE_23,                      19,  70
+	hidden_item ROUTE_23,                       8,  90
+	hidden_item VICTORY_ROAD_2F,                5,   2
+	hidden_item VICTORY_ROAD_2F,               26,   7
+	hidden_item UNUSED_MAP_6F,                 14,  11
+	hidden_item VIRIDIAN_CITY,                 14,   4
+	hidden_item ROUTE_11,                      48,   5
+	hidden_item ROUTE_12,                       2,  63
+	hidden_item ROUTE_17,                      15,  14
+	hidden_item ROUTE_17,                       8,  45
+	hidden_item ROUTE_17,                      17,  72
+	hidden_item ROUTE_17,                       4,  91
+	hidden_item ROUTE_17,                       8, 121
+	hidden_item UNDERGROUND_PATH_NORTH_SOUTH,   3,   4
+	hidden_item UNDERGROUND_PATH_NORTH_SOUTH,   4,  34
+	hidden_item UNDERGROUND_PATH_WEST_EAST,    12,   2
+	hidden_item UNDERGROUND_PATH_WEST_EAST,    21,   5
+	hidden_item CELADON_CITY,                  48,  15
+	hidden_item ROUTE_25,                      10,   1
+	hidden_item MT_MOON_B2F,                   33,   9
+	hidden_item SEAFOAM_ISLANDS_B3F,            9,  16
+	hidden_item VERMILION_CITY,                14,  11
+	hidden_item CERULEAN_CITY,                 15,   8
+	hidden_item ROUTE_4,                       40,   3
+	db -1 ; end
--- a/data/events/prize_mon_levels.asm
+++ b/data/events/prize_mon_levels.asm
@@ -1,19 +1,19 @@
 PrizeMonLevelDictionary:
 IF DEF(_RED)
-	db ABRA,9
-	db CLEFAIRY,8
-	db NIDORINA,17
+	db ABRA,      9
+	db CLEFAIRY,  8
+	db NIDORINA, 17
 
-	db DRATINI,18
-	db SCYTHER,25
-	db PORYGON,26
+	db DRATINI,  18
+	db SCYTHER,  25
+	db PORYGON,  26
 ENDC
 IF DEF(_BLUE)
-	db ABRA,6
-	db CLEFAIRY,12
-	db NIDORINO,17
+	db ABRA,      6
+	db CLEFAIRY, 12
+	db NIDORINO, 17
 
-	db PINSIR,20
-	db DRATINI,24
-	db PORYGON,18
+	db PINSIR,   20
+	db DRATINI,  24
+	db PORYGON,  18
 ENDC
--- a/data/events/prizes.asm
+++ b/data/events/prizes.asm
@@ -1,12 +1,7 @@
 PrizeDifferentMenuPtrs:
-	dw PrizeMenuMon1Entries
-	dw PrizeMenuMon1Cost
-
-	dw PrizeMenuMon2Entries
-	dw PrizeMenuMon2Cost
-
-	dw PrizeMenuTMsEntries
-	dw PrizeMenuTMsCost
+	dw PrizeMenuMon1Entries, PrizeMenuMon1Cost
+	dw PrizeMenuMon2Entries, PrizeMenuMon2Cost
+	dw PrizeMenuTMsEntries,  PrizeMenuTMsCost
 
 NoThanksText:
 	db "NO THANKS@"
--- a/data/events/trades.asm
+++ b/data/events/trades.asm
@@ -1,12 +1,12 @@
 TradeMons:
-; givemonster, getmonster, textstring, nickname (11 bytes), 14 bytes total
-	db NIDORINO,  NIDORINA, 0,"TERRY@@@@@@"
-	db ABRA,      MR_MIME,  0,"MARCEL@@@@@"
-	db BUTTERFREE,BEEDRILL, 2,"CHIKUCHIKU@"
-	db PONYTA,    SEEL,     0,"SAILOR@@@@@"
-	db SPEAROW,   FARFETCHD,2,"DUX@@@@@@@@"
-	db SLOWBRO,   LICKITUNG,0,"MARC@@@@@@@"
-	db POLIWHIRL, JYNX,     1,"LOLA@@@@@@@"
-	db RAICHU,    ELECTRODE,1,"DORIS@@@@@@"
-	db VENONAT,   TANGELA,  2,"CRINKLES@@@"
-	db NIDORAN_M, NIDORAN_F,2,"SPOT@@@@@@@"
+; give mon, get mon, dialog id, nickname
+	db NIDORINO,   NIDORINA,  TRADE_DIALOGSET_CASUAL, "TERRY@@@@@@"
+	db ABRA,       MR_MIME,   TRADE_DIALOGSET_CASUAL, "MARCEL@@@@@"
+	db BUTTERFREE, BEEDRILL,  TRADE_DIALOGSET_HAPPY,  "CHIKUCHIKU@"
+	db PONYTA,     SEEL,      TRADE_DIALOGSET_CASUAL, "SAILOR@@@@@"
+	db SPEAROW,    FARFETCHD, TRADE_DIALOGSET_HAPPY,  "DUX@@@@@@@@"
+	db SLOWBRO,    LICKITUNG, TRADE_DIALOGSET_CASUAL, "MARC@@@@@@@"
+	db POLIWHIRL,  JYNX,      TRADE_DIALOGSET_POLITE, "LOLA@@@@@@@"
+	db RAICHU,     ELECTRODE, TRADE_DIALOGSET_POLITE, "DORIS@@@@@@"
+	db VENONAT,    TANGELA,   TRADE_DIALOGSET_HAPPY,  "CRINKLES@@@"
+	db NIDORAN_M,  NIDORAN_F, TRADE_DIALOGSET_HAPPY,  "SPOT@@@@@@@"
--- a/data/growth_rates.asm
+++ b/data/growth_rates.asm
@@ -1,12 +1,19 @@
-; each entry has the following scheme:
-; %AAAABBBB %SCCCCCCC %DDDDDDDD %EEEEEEEE
-; resulting in
-;  (a*n^3)/b + sign*c*n^2 + d*n - e
-; where sign = -1 <=> S=1
+growth_rate: MACRO
+; [1]/[2]*n**3 + [3]*n**2 + [4]*n - [5]
+	dn \1, \2
+	if \3 & $80 ; signed
+		db -\3 | $80
+	else
+		db \3
+	endc
+	db \4, \5
+ENDM
+
 GrowthRateTable:
-	db $11,$00,$00,$00 ; medium fast      n^3
-	db $34,$0A,$00,$1E ; (unused?)    3/4 n^3 + 10 n^2         - 30
-	db $34,$14,$00,$46 ; (unused?)    3/4 n^3 + 20 n^2         - 70
-	db $65,$8F,$64,$8C ; medium slow: 6/5 n^3 - 15 n^2 + 100 n - 140
-	db $45,$00,$00,$00 ; fast:        4/5 n^3
-	db $54,$00,$00,$00 ; slow:        5/4 n^3
+; entries correspond to GROWTH_* (see constants/pokemon_data_constants.asm)
+	growth_rate 1, 1,   0,   0,   0 ; Medium Fast
+	growth_rate 3, 4,  10,   0,  30 ; Slightly Fast
+	growth_rate 3, 4,  20,   0,  70 ; Slightly Slow
+	growth_rate 6, 5, -15, 100, 140 ; Medium Slow
+	growth_rate 4, 5,   0,   0,   0 ; Fast
+	growth_rate 5, 4,   0,   0,   0 ; Slow
--- a/data/items/guard_drink_items.asm
+++ b/data/items/guard_drink_items.asm
@@ -1,2 +1,5 @@
 GuardDrinksList:
-	db FRESH_WATER, SODA_POP, LEMONADE, $00
+	db FRESH_WATER
+	db SODA_POP
+	db LEMONADE
+	db 0 ; end
--- a/data/items/use_overworld.asm
+++ b/data/items/use_overworld.asm
@@ -6,4 +6,4 @@
 	db OLD_ROD
 	db GOOD_ROD
 	db SUPER_ROD
-	db $ff
+	db -1 ; end
--- a/data/items/use_party.asm
+++ b/data/items/use_party.asm
@@ -36,4 +36,4 @@
 	db MAX_ETHER
 	db ELIXER
 	db MAX_ELIXER
-	db $ff
+	db -1 ; end
--- a/data/items/vending_prices.asm
+++ b/data/items/vending_prices.asm
@@ -1,7 +1,10 @@
+vend_item: MACRO
+	db \1
+	money \2
+ENDM
+
 VendingPrices:
-	db FRESH_WATER
-	money 200
-	db SODA_POP
-	money 300
-	db LEMONADE
-	money 350
+; item id, price
+	vend_item FRESH_WATER, 200
+	vend_item SODA_POP,    300
+	vend_item LEMONADE,    350
--- a/data/maps/badge_maps.asm
+++ b/data/maps/badge_maps.asm
@@ -1,10 +1,10 @@
 MapBadgeFlags:
-	db PEWTER_GYM,   %00000001
-	db CERULEAN_GYM, %00000010
-	db VERMILION_GYM,%00000100
-	db CELADON_GYM,  %00001000
-	db FUCHSIA_GYM,  %00010000
-	db SAFFRON_GYM,  %00100000
-	db CINNABAR_GYM, %01000000
-	db VIRIDIAN_GYM, %10000000
-	db $ff
+	db PEWTER_GYM,    1 << BIT_BOULDERBADGE
+	db CERULEAN_GYM,  1 << BIT_CASCADEBADGE
+	db VERMILION_GYM, 1 << BIT_THUNDERBADGE
+	db CELADON_GYM,   1 << BIT_RAINBOWBADGE
+	db FUCHSIA_GYM,   1 << BIT_SOULBADGE
+	db SAFFRON_GYM,   1 << BIT_MARSHBADGE
+	db CINNABAR_GYM,  1 << BIT_VOLCANOBADGE
+	db VIRIDIAN_GYM,  1 << BIT_EARTHBADGE
+	db -1 ; end
--- a/data/maps/dungeon_maps.asm
+++ b/data/maps/dungeon_maps.asm
@@ -5,25 +5,18 @@
 	db ROCK_TUNNEL_1F
 	db SEAFOAM_ISLANDS_1F
 	db ROCK_TUNNEL_B1F
-	db $FF
+	db -1 ; end
 
 ; GetBattleTransitionID_IsDungeonMap checks if wCurMap
 ; is in between or equal to each pair of maps
 DungeonMaps2:
 	; all MT_MOON maps
-	db MT_MOON_1F
-	db MT_MOON_B2F
-
+	db MT_MOON_1F, MT_MOON_B2F
 	; all SS_ANNE maps, VICTORY_ROAD_1F, LANCES_ROOM, and HALL_OF_FAME
-	db SS_ANNE_1F
-	db HALL_OF_FAME
-
+	db SS_ANNE_1F, HALL_OF_FAME
 	; all POKEMON_TOWER maps and Lavender Town buildings
-	db LAVENDER_POKECENTER
-	db LAVENDER_CUBONE_HOUSE
-
+	db LAVENDER_POKECENTER, LAVENDER_CUBONE_HOUSE
 	; SILPH_CO_[2-8]F, POKEMON_MANSION[2F-B1F], SAFARI_ZONE, and
 	; CERULEAN_CAVE maps, except for SILPH_CO_1F
-	db SILPH_CO_2F
-	db CERULEAN_CAVE_1F
-	db $FF
+	db SILPH_CO_2F, CERULEAN_CAVE_1F
+	db -1 ; end
--- a/data/maps/force_bike_surf.asm
+++ b/data/maps/force_bike_surf.asm
@@ -1,11 +1,15 @@
+force_bike_surf: MACRO
+	db \1, \3, \2
+ENDM
+
 ForcedBikeOrSurfMaps:
-; map id, y, x
-	db ROUTE_16,$0A,$11
-	db ROUTE_16,$0B,$11
-	db ROUTE_18,$08,$21
-	db ROUTE_18,$09,$21
-	db SEAFOAM_ISLANDS_B3F,$07,$12
-	db SEAFOAM_ISLANDS_B3F,$07,$13
-	db SEAFOAM_ISLANDS_B4F,$0E,$04
-	db SEAFOAM_ISLANDS_B4F,$0E,$05
-	db $FF ;end
+; map id, x, y
+	force_bike_surf ROUTE_16,            17, 10
+	force_bike_surf ROUTE_16,            17, 11
+	force_bike_surf ROUTE_18,            33,  8
+	force_bike_surf ROUTE_18,            33,  9
+	force_bike_surf SEAFOAM_ISLANDS_B3F, 18,  7
+	force_bike_surf SEAFOAM_ISLANDS_B3F, 19,  7
+	force_bike_surf SEAFOAM_ISLANDS_B4F,  4, 14
+	force_bike_surf SEAFOAM_ISLANDS_B4F,  5, 14
+	db -1 ; end
--- a/data/maps/hide_show_data.asm
+++ b/data/maps/hide_show_data.asm
@@ -29,7 +29,7 @@
 	dw NoHS
 	dw NoHS
 	dw Route15HS
-	dw Rout16eHS
+	dw Route16HS
 	dw NoHS
 	dw NoHS
 	dw NoHS
@@ -302,7 +302,7 @@
 	db ROUTE_12, $0A, SHOW
 Route15HS:
 	db ROUTE_15, $0B, SHOW
-Rout16eHS:
+Route16HS:
 	db ROUTE_16, $07, SHOW
 Route22HS:
 	db ROUTE_22, $01, HIDE
--- a/data/maps/names.asm
+++ b/data/maps/names.asm
@@ -1,107 +1,54 @@
 MapNames:
-PalletTownName:
-	db "PALLET TOWN@"
-ViridianCityName:
-	db "VIRIDIAN CITY@"
-PewterCityName:
-	db "PEWTER CITY@"
-CeruleanCityName:
-	db "CERULEAN CITY@"
-LavenderTownName:
-	db "LAVENDER TOWN@"
-VermilionCityName:
-	db "VERMILION CITY@"
-CeladonCityName:
-	db "CELADON CITY@"
-FuchsiaCityName:
-	db "FUCHSIA CITY@"
-CinnabarIslandName:
-	db "CINNABAR ISLAND@"
-IndigoPlateauName:
-	db "INDIGO PLATEAU@"
-SaffronCityName:
-	db "SAFFRON CITY@"
-Route1Name:
-	db "ROUTE 1@"
-Route2Name:
-	db "ROUTE 2@"
-Route3Name:
-	db "ROUTE 3@"
-Route4Name:
-	db "ROUTE 4@"
-Route5Name:
-	db "ROUTE 5@"
-Route6Name:
-	db "ROUTE 6@"
-Route7Name:
-	db "ROUTE 7@"
-Route8Name:
-	db "ROUTE 8@"
-Route9Name:
-	db "ROUTE 9@"
-Route10Name:
-	db "ROUTE 10@"
-Route11Name:
-	db "ROUTE 11@"
-Route12Name:
-	db "ROUTE 12@"
-Route13Name:
-	db "ROUTE 13@"
-Route14Name:
-	db "ROUTE 14@"
-Route15Name:
-	db "ROUTE 15@"
-Route16Name:
-	db "ROUTE 16@"
-Route17Name:
-	db "ROUTE 17@"
-Route18Name:
-	db "ROUTE 18@"
-Route19Name:
-	db "SEA ROUTE 19@"
-Route20Name:
-	db "SEA ROUTE 20@"
-Route21Name:
-	db "SEA ROUTE 21@"
-Route22Name:
-	db "ROUTE 22@"
-Route23Name:
-	db "ROUTE 23@"
-Route24Name:
-	db "ROUTE 24@"
-Route25Name:
-	db "ROUTE 25@"
-ViridianForestName:
-	db "VIRIDIAN FOREST@"
-MountMoonName:
-	db "MT.MOON@"
-RockTunnelName:
-	db "ROCK TUNNEL@"
-SeaCottageName:
-	db "SEA COTTAGE@"
-SSAnneName:
-	db "S.S.ANNE@"
-PokemonLeagueName:
-	db "#MON LEAGUE@"
-UndergroundPathName:
-	db "UNDERGROUND PATH@"
-PokemonTowerName:
-	db "#MON TOWER@"
-SeafoamIslandsName:
-	db "SEAFOAM ISLANDS@"
-VictoryRoadName:
-	db "VICTORY ROAD@"
-DiglettsCaveName:
-	db "DIGLETT's CAVE@"
-RocketHQName:
-	db "ROCKET HQ@"
-SilphCoName:
-	db "SILPH CO.@"
-PokemonMansionName:
-	db "<PKMN> MANSION@"
-SafariZoneName:
-	db "SAFARI ZONE@"
-CeruleanCaveName:
-	db "CERULEAN CAVE@"
-PowerPlantName:
-	db "POWER PLANT@"
+PalletTownName:      db "PALLET TOWN@"
+ViridianCityName:    db "VIRIDIAN CITY@"
+PewterCityName:      db "PEWTER CITY@"
+CeruleanCityName:    db "CERULEAN CITY@"
+LavenderTownName:    db "LAVENDER TOWN@"
+VermilionCityName:   db "VERMILION CITY@"
+CeladonCityName:     db "CELADON CITY@"
+FuchsiaCityName:     db "FUCHSIA CITY@"
+CinnabarIslandName:  db "CINNABAR ISLAND@"
+IndigoPlateauName:   db "INDIGO PLATEAU@"
+SaffronCityName:     db "SAFFRON CITY@"
+Route1Name:          db "ROUTE 1@"
+Route2Name:          db "ROUTE 2@"
+Route3Name:          db "ROUTE 3@"
+Route4Name:          db "ROUTE 4@"
+Route5Name:          db "ROUTE 5@"
+Route6Name:          db "ROUTE 6@"
+Route7Name:          db "ROUTE 7@"
+Route8Name:          db "ROUTE 8@"
+Route9Name:          db "ROUTE 9@"
+Route10Name:         db "ROUTE 10@"
+Route11Name:         db "ROUTE 11@"
+Route12Name:         db "ROUTE 12@"
+Route13Name:         db "ROUTE 13@"
+Route14Name:         db "ROUTE 14@"
+Route15Name:         db "ROUTE 15@"
+Route16Name:         db "ROUTE 16@"
+Route17Name:         db "ROUTE 17@"
+Route18Name:         db "ROUTE 18@"
+Route19Name:         db "SEA ROUTE 19@"
+Route20Name:         db "SEA ROUTE 20@"
+Route21Name:         db "SEA ROUTE 21@"
+Route22Name:         db "ROUTE 22@"
+Route23Name:         db "ROUTE 23@"
+Route24Name:         db "ROUTE 24@"
+Route25Name:         db "ROUTE 25@"
+ViridianForestName:  db "VIRIDIAN FOREST@"
+MountMoonName:       db "MT.MOON@"
+RockTunnelName:      db "ROCK TUNNEL@"
+SeaCottageName:      db "SEA COTTAGE@"
+SSAnneName:          db "S.S.ANNE@"
+PokemonLeagueName:   db "#MON LEAGUE@"
+UndergroundPathName: db "UNDERGROUND PATH@"
+PokemonTowerName:    db "#MON TOWER@"
+SeafoamIslandsName:  db "SEAFOAM ISLANDS@"
+VictoryRoadName:     db "VICTORY ROAD@"
+DiglettsCaveName:    db "DIGLETT's CAVE@"
+RocketHQName:        db "ROCKET HQ@"
+SilphCoName:         db "SILPH CO.@"
+PokemonMansionName:  db "<PKMN> MANSION@"
+SafariZoneName:      db "SAFARI ZONE@"
+CeruleanCaveName:    db "CERULEAN CAVE@"
+PowerPlantName:      db "POWER PLANT@"
--- a/data/maps/rest_house_maps.asm
+++ b/data/maps/rest_house_maps.asm
@@ -2,4 +2,4 @@
 	db SAFARI_ZONE_WEST_REST_HOUSE
 	db SAFARI_ZONE_EAST_REST_HOUSE
 	db SAFARI_ZONE_NORTH_REST_HOUSE
-	db -1
+	db -1 ; end
--- a/data/maps/special_warps.asm
+++ b/data/maps/special_warps.asm
@@ -2,118 +2,90 @@
 ; 00: target map ID
 ; 01: which dungeon warp in the source map was used
 DungeonWarpList:
-	db SEAFOAM_ISLANDS_B1F,$01
-	db SEAFOAM_ISLANDS_B1F,$02
-	db SEAFOAM_ISLANDS_B2F,$01
-	db SEAFOAM_ISLANDS_B2F,$02
-	db SEAFOAM_ISLANDS_B3F,$01
-	db SEAFOAM_ISLANDS_B3F,$02
-	db SEAFOAM_ISLANDS_B4F,$01
-	db SEAFOAM_ISLANDS_B4F,$02
-	db VICTORY_ROAD_2F,$02
-	db POKEMON_MANSION_1F,$01
-	db POKEMON_MANSION_1F,$02
-	db POKEMON_MANSION_2F,$03
-	db $FF
+	db SEAFOAM_ISLANDS_B1F, 1
+	db SEAFOAM_ISLANDS_B1F, 2
+	db SEAFOAM_ISLANDS_B2F, 1
+	db SEAFOAM_ISLANDS_B2F, 2
+	db SEAFOAM_ISLANDS_B3F, 1
+	db SEAFOAM_ISLANDS_B3F, 2
+	db SEAFOAM_ISLANDS_B4F, 1
+	db SEAFOAM_ISLANDS_B4F, 2
+	db VICTORY_ROAD_2F,     2
+	db POKEMON_MANSION_1F,  1
+	db POKEMON_MANSION_1F,  2
+	db POKEMON_MANSION_2F,  3
+	db -1 ; end
 
+
+fly_warp: MACRO
+	event_displacement \1_WIDTH, \2, \3
+	db ((\3) & $01) ;sub-block Y
+	db ((\2) & $01) ;sub-block X
+ENDM
+
 DungeonWarpData:
-	FLYWARP_DATA SEAFOAM_ISLANDS_B1F_WIDTH,7,18
-	FLYWARP_DATA SEAFOAM_ISLANDS_B1F_WIDTH,7,23
-	FLYWARP_DATA SEAFOAM_ISLANDS_B2F_WIDTH,7,19
-	FLYWARP_DATA SEAFOAM_ISLANDS_B2F_WIDTH,7,22
-	FLYWARP_DATA SEAFOAM_ISLANDS_B3F_WIDTH,7,18
-	FLYWARP_DATA SEAFOAM_ISLANDS_B3F_WIDTH,7,19
-	FLYWARP_DATA SEAFOAM_ISLANDS_B4F_WIDTH,14,4
-	FLYWARP_DATA SEAFOAM_ISLANDS_B4F_WIDTH,14,5
-	FLYWARP_DATA VICTORY_ROAD_2F_WIDTH,16,22
-	FLYWARP_DATA POKEMON_MANSION_1F_WIDTH,14,16
-	FLYWARP_DATA POKEMON_MANSION_1F_WIDTH,14,16
-	FLYWARP_DATA POKEMON_MANSION_2F_WIDTH,14,18
+	fly_warp SEAFOAM_ISLANDS_B1F, 18,  7
+	fly_warp SEAFOAM_ISLANDS_B1F, 23,  7
+	fly_warp SEAFOAM_ISLANDS_B2F, 19,  7
+	fly_warp SEAFOAM_ISLANDS_B2F, 22,  7
+	fly_warp SEAFOAM_ISLANDS_B3F, 18,  7
+	fly_warp SEAFOAM_ISLANDS_B3F, 19,  7
+	fly_warp SEAFOAM_ISLANDS_B4F,  4, 14
+	fly_warp SEAFOAM_ISLANDS_B4F,  5, 14
+	fly_warp VICTORY_ROAD_2F,     22, 16
+	fly_warp POKEMON_MANSION_1F,  16, 14
+	fly_warp POKEMON_MANSION_1F,  16, 14
+	fly_warp POKEMON_MANSION_2F,  18, 14
 
-;Format:
-;	db Map_id
-;	FLYWARP_DATA [Map Width][Y-pos][X-pos]
-;	db Tileset_id
-FirstMapSpec:
-	db REDS_HOUSE_2F
-	FLYWARP_DATA REDS_HOUSE_2F_WIDTH,6,3
-	db REDS_HOUSE_2
 
+special_warp_spec: MACRO
+	db \1
+	fly_warp \1, \2, \3
+	db \4
+ENDM
+
+FirstMapSpec:
+	special_warp_spec REDS_HOUSE_2F, 3, 6, REDS_HOUSE_2
 TradeCenterSpec1:
-	db TRADE_CENTER
-	FLYWARP_DATA TRADE_CENTER_WIDTH,4,3
-	db CLUB
+	special_warp_spec TRADE_CENTER,  3, 4, CLUB
+TradeCenterSpec2:                   
+	special_warp_spec TRADE_CENTER,  6, 4, CLUB
+ColosseumSpec1:                     
+	special_warp_spec COLOSSEUM,     3, 4, CLUB
+ColosseumSpec2:                     
+	special_warp_spec COLOSSEUM,     6, 4, CLUB
 
-TradeCenterSpec2:
-	db TRADE_CENTER
-	FLYWARP_DATA TRADE_CENTER_WIDTH,4,6
-	db CLUB
 
-ColosseumSpec1:
-	db COLOSSEUM
-	FLYWARP_DATA COLOSSEUM_WIDTH,4,3
-	db CLUB
+fly_warp_spec: MACRO
+	db \1, 0
+	dw \2
+ENDM
 
-ColosseumSpec2:
-	db COLOSSEUM
-	FLYWARP_DATA COLOSSEUM_WIDTH,4,6
-	db CLUB
-
 FlyWarpDataPtr:
-	db PALLET_TOWN, 0
-	dw PalletTownFlyWarp
-	db VIRIDIAN_CITY, 0
-	dw ViridianCityFlyWarp
-	db PEWTER_CITY, 0
-	dw PewterCityFlyWarp
-	db CERULEAN_CITY, 0
-	dw CeruleanCityFlyWarp
-	db LAVENDER_TOWN, 0
-	dw LavenderTownFlyWarp
-	db VERMILION_CITY, 0
-	dw VermilionCityFlyWarp
-	db CELADON_CITY, 0
-	dw CeladonCityFlyWarp
-	db FUCHSIA_CITY, 0
-	dw FuchsiaCityFlyWarp
-	db CINNABAR_ISLAND, 0
-	dw CinnabarIslandFlyWarp
-	db INDIGO_PLATEAU, 0
-	dw IndigoPlateauFlyWarp
-	db SAFFRON_CITY, 0
-	dw SaffronCityFlyWarp
-	db ROUTE_4, 0
-	dw Route4FlyWarp
-	db ROUTE_10, 0
-	dw Route10FlyWarp
+	fly_warp_spec PALLET_TOWN,     .PalletTown
+	fly_warp_spec VIRIDIAN_CITY,   .ViridianCity
+	fly_warp_spec PEWTER_CITY,     .PewterCity
+	fly_warp_spec CERULEAN_CITY,   .CeruleanCity
+	fly_warp_spec LAVENDER_TOWN,   .LavenderTown
+	fly_warp_spec VERMILION_CITY,  .VermilionCity
+	fly_warp_spec CELADON_CITY,    .CeladonCity
+	fly_warp_spec FUCHSIA_CITY,    .FuchsiaCity
+	fly_warp_spec CINNABAR_ISLAND, .CinnabarIsland
+	fly_warp_spec INDIGO_PLATEAU,  .IndigoPlateau
+	fly_warp_spec SAFFRON_CITY,    .SaffronCity
+	fly_warp_spec ROUTE_4,         .Route4
+	fly_warp_spec ROUTE_10,        .Route10
 
-; Original Format:
-;   [Event Displacement][Y-block][X-block][Y-sub_block][X-sub_block]
-; Macro Format:
-;   FLYWARP_DATA [Map Width][Y-pos][X-pos]
-PalletTownFlyWarp:
-	FLYWARP_DATA PALLET_TOWN_WIDTH,      6,  5
-ViridianCityFlyWarp:
-	FLYWARP_DATA VIRIDIAN_CITY_WIDTH,   26, 23
-PewterCityFlyWarp:
-	FLYWARP_DATA PEWTER_CITY_WIDTH,     26, 13
-CeruleanCityFlyWarp:
-	FLYWARP_DATA CERULEAN_CITY_WIDTH,   18, 19
-LavenderTownFlyWarp:
-	FLYWARP_DATA LAVENDER_TOWN_WIDTH,    6,  3
-VermilionCityFlyWarp:
-	FLYWARP_DATA VERMILION_CITY_WIDTH,   4, 11
-CeladonCityFlyWarp:
-	FLYWARP_DATA CELADON_CITY_WIDTH,    10, 41
-FuchsiaCityFlyWarp:
-	FLYWARP_DATA FUCHSIA_CITY_WIDTH,    28, 19
-CinnabarIslandFlyWarp:
-	FLYWARP_DATA CINNABAR_ISLAND_WIDTH, 12, 11
-IndigoPlateauFlyWarp:
-	FLYWARP_DATA INDIGO_PLATEAU_WIDTH,   6,  9
-SaffronCityFlyWarp:
-	FLYWARP_DATA SAFFRON_CITY_WIDTH,    30,  9
-Route4FlyWarp:
-	FLYWARP_DATA ROUTE_4_WIDTH,          6, 11
-Route10FlyWarp:
-	FLYWARP_DATA ROUTE_10_WIDTH,        20, 11
+.PalletTown:     fly_warp PALLET_TOWN,      5,  6
+.ViridianCity:   fly_warp VIRIDIAN_CITY,   23, 26
+.PewterCity:     fly_warp PEWTER_CITY,     13, 26
+.CeruleanCity:   fly_warp CERULEAN_CITY,   19, 18
+.LavenderTown:   fly_warp LAVENDER_TOWN,    3,  6
+.VermilionCity:  fly_warp VERMILION_CITY,  11,  4
+.CeladonCity:    fly_warp CELADON_CITY,    41, 10
+.FuchsiaCity:    fly_warp FUCHSIA_CITY,    19, 28
+.CinnabarIsland: fly_warp CINNABAR_ISLAND, 11, 12
+.IndigoPlateau:  fly_warp INDIGO_PLATEAU,   9,  6
+.SaffronCity:    fly_warp SAFFRON_CITY,     9, 30
+.Route4:         fly_warp ROUTE_4,         11,  6
+.Route10:        fly_warp ROUTE_10,        11, 20
--- a/data/maps/sprite_sets.asm
+++ b/data/maps/sprite_sets.asm
@@ -45,18 +45,18 @@
 ; 02: sprite set ID if in the West or North side
 ; 03: sprite set ID if in the East or South side
 SplitMapSpriteSets:
-	db $02,$25,$02,$01 ; $f1
-	db $02,$32,$02,$03 ; $f2
-	db $01,$39,$04,$08 ; $f3
-	db $02,$15,$03,$08 ; $f4
-	db $01,$08,$0A,$08 ; $f5
-	db $01,$18,$09,$05 ; $f6
-	db $01,$22,$09,$0A ; $f7
-	db $01,$35,$01,$0A ; $f8
-	db $02,$21,$02,$07 ; $f9
-	db $02,$02,$07,$04 ; $fa
-	db $01,$11,$05,$07 ; $fb
-	db $01,$03,$07,$03 ; $fc
+	db $02, $25, $02, $01 ; $f1
+	db $02, $32, $02, $03 ; $f2
+	db $01, $39, $04, $08 ; $f3
+	db $02, $15, $03, $08 ; $f4
+	db $01, $08, $0A, $08 ; $f5
+	db $01, $18, $09, $05 ; $f6
+	db $01, $22, $09, $0A ; $f7
+	db $01, $35, $01, $0A ; $f8
+	db $02, $21, $02, $07 ; $f9
+	db $02, $02, $07, $04 ; $fa
+	db $01, $11, $05, $07 ; $fb
+	db $01, $03, $07, $03 ; $fc
 
 SpriteSets:
 ; sprite set $01
--- a/data/maps/town_map_entries.asm
+++ b/data/maps/town_map_entries.asm
@@ -1,101 +1,117 @@
+external_map: MACRO
+	dn \1, \2
+	dw \3
+ENDM
+
+; the appearance of towns and routes in the town map
 ExternalMapEntries:
-	EMAP $2,$B,PalletTownName
-	EMAP $2,$8,ViridianCityName
-	EMAP $2,$3,PewterCityName
-	EMAP $A,$2,CeruleanCityName
-	EMAP $E,$5,LavenderTownName
-	EMAP $A,$9,VermilionCityName
-	EMAP $7,$5,CeladonCityName
-	EMAP $8,$D,FuchsiaCityName
-	EMAP $2,$F,CinnabarIslandName
-	EMAP $0,$2,IndigoPlateauName
-	EMAP $A,$5,SaffronCityName
-	EMAP $0,$0,PalletTownName ; unused
-	EMAP $2,$A,Route1Name
-	EMAP $2,$6,Route2Name
-	EMAP $4,$3,Route3Name
-	EMAP $8,$2,Route4Name
-	EMAP $A,$3,Route5Name
-	EMAP $A,$8,Route6Name
-	EMAP $8,$5,Route7Name
-	EMAP $D,$5,Route8Name
-	EMAP $D,$2,Route9Name
-	EMAP $E,$4,Route10Name
-	EMAP $C,$9,Route11Name
-	EMAP $E,$9,Route12Name
-	EMAP $D,$B,Route13Name
-	EMAP $B,$C,Route14Name
-	EMAP $A,$D,Route15Name
-	EMAP $5,$5,Route16Name
-	EMAP $4,$8,Route17Name
-	EMAP $6,$D,Route18Name
-	EMAP $6,$F,Route19Name
-	EMAP $4,$F,Route20Name
-	EMAP $2,$D,Route21Name
-	EMAP $0,$8,Route22Name
-	EMAP $0,$6,Route23Name
-	EMAP $A,$1,Route24Name
-	EMAP $B,$0,Route25Name
+; x, y, name
+	external_map 11,  2, PalletTownName
+	external_map  8,  2, ViridianCityName
+	external_map  3,  2, PewterCityName
+	external_map  2, 10, CeruleanCityName
+	external_map  5, 14, LavenderTownName
+	external_map  9, 10, VermilionCityName
+	external_map  5,  7, CeladonCityName
+	external_map 13,  8, FuchsiaCityName
+	external_map 15,  2, CinnabarIslandName
+	external_map  2,  0, IndigoPlateauName
+	external_map  5, 10, SaffronCityName
+	external_map  0,  0, PalletTownName ; unused
+	external_map 10,  2, Route1Name
+	external_map  6,  2, Route2Name
+	external_map  3,  4, Route3Name
+	external_map  2,  8, Route4Name
+	external_map  3, 10, Route5Name
+	external_map  8, 10, Route6Name
+	external_map  5,  8, Route7Name
+	external_map  5, 13, Route8Name
+	external_map  2, 13, Route9Name
+	external_map  4, 14, Route10Name
+	external_map  9, 12, Route11Name
+	external_map  9, 14, Route12Name
+	external_map 11, 13, Route13Name
+	external_map 12, 11, Route14Name
+	external_map 13, 10, Route15Name
+	external_map  5,  5, Route16Name
+	external_map  8,  4, Route17Name
+	external_map 13,  6, Route18Name
+	external_map 15,  6, Route19Name
+	external_map 15,  4, Route20Name
+	external_map 13,  2, Route21Name
+	external_map  8,  0, Route22Name
+	external_map  6,  0, Route23Name
+	external_map  1, 10, Route24Name
+	external_map  0, 11, Route25Name
 
+
+internal_map: MACRO
+	db \1 + 1
+	dn \2, \3
+	dw \4
+ENDM
+
+; the appearance of buildings and dungeons in the town map
 InternalMapEntries:
-	IMAP OAKS_LAB,                      $2,$B,PalletTownName
-	IMAP VIRIDIAN_GYM,                  $2,$8,ViridianCityName
-	IMAP VIRIDIAN_FOREST_SOUTH_GATE,    $2,$6,Route2Name
-	IMAP VIRIDIAN_FOREST,               $2,$4,ViridianForestName
-	IMAP PEWTER_POKECENTER,             $2,$3,PewterCityName
-	IMAP MT_MOON_B2F,                   $6,$2,MountMoonName
-	IMAP CERULEAN_MART,                 $A,$2,CeruleanCityName
-	IMAP MT_MOON_POKECENTER,            $5,$2,Route4Name
-	IMAP CERULEAN_TRASHED_HOUSE_COPY,   $A,$2,CeruleanCityName
-	IMAP DAYCARE,                       $A,$4,Route5Name
-	IMAP UNDERGROUND_PATH_ROUTE_6_COPY, $A,$6,Route6Name
-	IMAP UNDERGROUND_PATH_ROUTE_7_COPY, $9,$5,Route7Name
-	IMAP UNDERGROUND_PATH_ROUTE_8,      $B,$5,Route8Name
-	IMAP ROCK_TUNNEL_1F,                $E,$3,RockTunnelName
-	IMAP POWER_PLANT,                   $F,$4,PowerPlantName
-	IMAP ROUTE_11_GATE_2F,              $D,$9,Route11Name
-	IMAP ROUTE_12_GATE_1F,              $E,$7,Route12Name
-	IMAP BILLS_HOUSE,                   $C,$0,SeaCottageName
-	IMAP VERMILION_DOCK,                $A,$9,VermilionCityName
-	IMAP SS_ANNE_B1F_ROOMS,             $9,$A,SSAnneName
-	IMAP VICTORY_ROAD_1F,               $0,$4,VictoryRoadName
-	IMAP HALL_OF_FAME,                  $0,$2,PokemonLeagueName
-	IMAP UNDERGROUND_PATH_NORTH_SOUTH,  $A,$5,UndergroundPathName
-	IMAP CHAMPIONS_ROOM,                $0,$2,PokemonLeagueName
-	IMAP UNDERGROUND_PATH_WEST_EAST,    $A,$5,UndergroundPathName
-	IMAP CELADON_HOTEL,                 $7,$5,CeladonCityName
-	IMAP LAVENDER_POKECENTER,           $E,$5,LavenderTownName
-	IMAP POKEMON_TOWER_7F,              $F,$5,PokemonTowerName
-	IMAP LAVENDER_CUBONE_HOUSE,         $E,$5,LavenderTownName
-	IMAP WARDENS_HOUSE,                 $8,$D,FuchsiaCityName
-	IMAP SAFARI_ZONE_GATE,              $8,$C,SafariZoneName
-	IMAP FUCHSIA_MEETING_ROOM,          $8,$D,FuchsiaCityName
-	IMAP SEAFOAM_ISLANDS_B4F,           $5,$F,SeafoamIslandsName
-	IMAP VERMILION_OLD_ROD_HOUSE,       $A,$9,VermilionCityName
-	IMAP FUCHSIA_GOOD_ROD_HOUSE,        $8,$D,FuchsiaCityName
-	IMAP POKEMON_MANSION_1F,            $2,$F,PokemonMansionName
-	IMAP CINNABAR_MART_COPY,            $2,$F,CinnabarIslandName
-	IMAP INDIGO_PLATEAU_LOBBY,          $0,$2,IndigoPlateauName
-	IMAP MR_PSYCHICS_HOUSE,             $A,$5,SaffronCityName
-	IMAP ROUTE_15_GATE_2F,              $9,$D,Route15Name
-	IMAP ROUTE_16_FLY_HOUSE,            $4,$5,Route16Name
-	IMAP ROUTE_12_SUPER_ROD_HOUSE,      $E,$A,Route12Name
-	IMAP ROUTE_18_GATE_2F,              $7,$D,Route18Name
-	IMAP SEAFOAM_ISLANDS_1F,            $5,$F,SeafoamIslandsName
-	IMAP ROUTE_22_GATE,                 $0,$7,Route22Name
-	IMAP VICTORY_ROAD_2F,               $0,$4,VictoryRoadName
-	IMAP ROUTE_12_GATE_2F,              $E,$7,Route12Name
-	IMAP VERMILION_TRADE_HOUSE,         $A,$9,VermilionCityName
-	IMAP DIGLETTS_CAVE,                 $3,$4,DiglettsCaveName
-	IMAP VICTORY_ROAD_3F,               $0,$4,VictoryRoadName
-	IMAP UNUSED_MAP_CE,                 $7,$5,RocketHQName
-	IMAP SILPH_CO_8F,                   $A,$5,SilphCoName
-	IMAP POKEMON_MANSION_B1F,           $2,$F,PokemonMansionName
-	IMAP SAFARI_ZONE_NORTH_REST_HOUSE,  $8,$C,SafariZoneName
-	IMAP CERULEAN_CAVE_1F,              $9,$1,CeruleanCaveName
-	IMAP NAME_RATERS_HOUSE,             $E,$5,LavenderTownName
-	IMAP CERULEAN_BADGE_HOUSE,          $A,$2,CeruleanCityName
-	IMAP ROCK_TUNNEL_B1F,               $E,$3,RockTunnelName
-	IMAP SILPH_CO_ELEVATOR,             $A,$5,SilphCoName
-	IMAP AGATHAS_ROOM,                  $0,$2,PokemonLeagueName
-	db $FF
+; maximum map id subject to this rule, x, y, name
+	internal_map OAKS_LAB,                      11,  2, PalletTownName
+	internal_map VIRIDIAN_GYM,                   8,  2, ViridianCityName
+	internal_map VIRIDIAN_FOREST_SOUTH_GATE,     6,  2, Route2Name
+	internal_map VIRIDIAN_FOREST,                4,  2, ViridianForestName
+	internal_map PEWTER_POKECENTER,              3,  2, PewterCityName
+	internal_map MT_MOON_B2F,                    2,  6, MountMoonName
+	internal_map CERULEAN_MART,                  2, 10, CeruleanCityName
+	internal_map MT_MOON_POKECENTER,             2,  5, Route4Name
+	internal_map CERULEAN_TRASHED_HOUSE_COPY,    2, 10, CeruleanCityName
+	internal_map DAYCARE,                        4, 10, Route5Name
+	internal_map UNDERGROUND_PATH_ROUTE_6_COPY,  6, 10, Route6Name
+	internal_map UNDERGROUND_PATH_ROUTE_7_COPY,  5,  9, Route7Name
+	internal_map UNDERGROUND_PATH_ROUTE_8,       5, 11, Route8Name
+	internal_map ROCK_TUNNEL_1F,                 3, 14, RockTunnelName
+	internal_map POWER_PLANT,                    4, 15, PowerPlantName
+	internal_map ROUTE_11_GATE_2F,               9, 13, Route11Name
+	internal_map ROUTE_12_GATE_1F,               7, 14, Route12Name
+	internal_map BILLS_HOUSE,                    0, 12, SeaCottageName
+	internal_map VERMILION_DOCK,                 9, 10, VermilionCityName
+	internal_map SS_ANNE_B1F_ROOMS,             10,  9, SSAnneName
+	internal_map VICTORY_ROAD_1F,                4,  0, VictoryRoadName
+	internal_map HALL_OF_FAME,                   2,  0, PokemonLeagueName
+	internal_map UNDERGROUND_PATH_NORTH_SOUTH,   5, 10, UndergroundPathName
+	internal_map CHAMPIONS_ROOM,                 2,  0, PokemonLeagueName
+	internal_map UNDERGROUND_PATH_WEST_EAST,     5, 10, UndergroundPathName
+	internal_map CELADON_HOTEL,                  5,  7, CeladonCityName
+	internal_map LAVENDER_POKECENTER,            5, 14, LavenderTownName
+	internal_map POKEMON_TOWER_7F,               5, 15, PokemonTowerName
+	internal_map LAVENDER_CUBONE_HOUSE,          5, 14, LavenderTownName
+	internal_map WARDENS_HOUSE,                 13,  8, FuchsiaCityName
+	internal_map SAFARI_ZONE_GATE,              12,  8, SafariZoneName
+	internal_map FUCHSIA_MEETING_ROOM,          13,  8, FuchsiaCityName
+	internal_map SEAFOAM_ISLANDS_B4F,           15,  5, SeafoamIslandsName
+	internal_map VERMILION_OLD_ROD_HOUSE,        9, 10, VermilionCityName
+	internal_map FUCHSIA_GOOD_ROD_HOUSE,        13,  8, FuchsiaCityName
+	internal_map POKEMON_MANSION_1F,            15,  2, PokemonMansionName
+	internal_map CINNABAR_MART_COPY,            15,  2, CinnabarIslandName
+	internal_map INDIGO_PLATEAU_LOBBY,           2,  0, IndigoPlateauName
+	internal_map MR_PSYCHICS_HOUSE,              5, 10, SaffronCityName
+	internal_map ROUTE_15_GATE_2F,              13,  9, Route15Name
+	internal_map ROUTE_16_FLY_HOUSE,             5,  4, Route16Name
+	internal_map ROUTE_12_SUPER_ROD_HOUSE,      10, 14, Route12Name
+	internal_map ROUTE_18_GATE_2F,              13,  7, Route18Name
+	internal_map SEAFOAM_ISLANDS_1F,            15,  5, SeafoamIslandsName
+	internal_map ROUTE_22_GATE,                  7,  0, Route22Name
+	internal_map VICTORY_ROAD_2F,                4,  0, VictoryRoadName
+	internal_map ROUTE_12_GATE_2F,               7, 14, Route12Name
+	internal_map VERMILION_TRADE_HOUSE,          9, 10, VermilionCityName
+	internal_map DIGLETTS_CAVE,                  4,  3, DiglettsCaveName
+	internal_map VICTORY_ROAD_3F,                4,  0, VictoryRoadName
+	internal_map UNUSED_MAP_CE,                  5,  7, RocketHQName
+	internal_map SILPH_CO_8F,                    5, 10, SilphCoName
+	internal_map POKEMON_MANSION_B1F,           15,  2, PokemonMansionName
+	internal_map SAFARI_ZONE_NORTH_REST_HOUSE,  12,  8, SafariZoneName
+	internal_map CERULEAN_CAVE_1F,               1,  9, CeruleanCaveName
+	internal_map NAME_RATERS_HOUSE,              5, 14, LavenderTownName
+	internal_map CERULEAN_BADGE_HOUSE,           2, 10, CeruleanCityName
+	internal_map ROCK_TUNNEL_B1F,                3, 14, RockTunnelName
+	internal_map SILPH_CO_ELEVATOR,              5, 10, SilphCoName
+	internal_map AGATHAS_ROOM,                   2,  0, PokemonLeagueName
+	db -1 ; end
--- a/data/moves/animation_special_effect_pointers.asm
+++ b/data/moves/animation_special_effect_pointers.asm
@@ -1,81 +1,47 @@
-; Format: Special Effect ID (1 byte), Address (2 bytes)
+special_effect: MACRO
+	db \1
+	dw \2
+ENDM
+
 SpecialEffectPointers:
-	db SE_DARK_SCREEN_FLASH ; $FE
-	dw AnimationFlashScreen
-	db SE_DARK_SCREEN_PALETTE ; $FD
-	dw AnimationDarkScreenPalette
-	db SE_RESET_SCREEN_PALETTE ; $FC
-	dw AnimationResetScreenPalette
-	db SE_SHAKE_SCREEN ; $FB
-	dw AnimationShakeScreen
-	db SE_WATER_DROPLETS_EVERYWHERE ; $FA
-	dw AnimationWaterDropletsEverywhere
-	db SE_DARKEN_MON_PALETTE ; $F9
-	dw AnimationDarkenMonPalette
-	db SE_FLASH_SCREEN_LONG ; $F8
-	dw AnimationFlashScreenLong
-	db SE_SLIDE_MON_UP ; $F7
-	dw AnimationSlideMonUp
-	db SE_SLIDE_MON_DOWN ; $F6
-	dw AnimationSlideMonDown
-	db SE_FLASH_MON_PIC ; $F5
-	dw AnimationFlashMonPic
-	db SE_SLIDE_MON_OFF ; $F4
-	dw AnimationSlideMonOff
-	db SE_BLINK_MON ; $F3
-	dw AnimationBlinkMon
-	db SE_MOVE_MON_HORIZONTALLY ; $F2
-	dw AnimationMoveMonHorizontally
-	db SE_RESET_MON_POSITION ; $F1
-	dw AnimationResetMonPosition
-	db SE_LIGHT_SCREEN_PALETTE ; $F0
-	dw AnimationLightScreenPalette
-	db SE_HIDE_MON_PIC ; $EF
-	dw AnimationHideMonPic
-	db SE_SQUISH_MON_PIC ; $EE
-	dw AnimationSquishMonPic
-	db SE_SHOOT_BALLS_UPWARD ; $ED
-	dw AnimationShootBallsUpward
-	db SE_SHOOT_MANY_BALLS_UPWARD ; $EC
-	dw AnimationShootManyBallsUpward
-	db SE_BOUNCE_UP_AND_DOWN ; $EB
-	dw AnimationBoundUpAndDown
-	db SE_MINIMIZE_MON ; $EA
-	dw AnimationMinimizeMon
-	db SE_SLIDE_MON_DOWN_AND_HIDE ; $E9
-	dw AnimationSlideMonDownAndHide
-	db SE_TRANSFORM_MON ; $E8
-	dw AnimationTransformMon
-	db SE_LEAVES_FALLING ; $E7
-	dw AnimationLeavesFalling
-	db SE_PETALS_FALLING ; $E6
-	dw AnimationPetalsFalling
-	db SE_SLIDE_MON_HALF_OFF ; $E5
-	dw AnimationSlideMonHalfOff
-	db SE_SHAKE_ENEMY_HUD ; $E4
-	dw AnimationShakeEnemyHUD
-	db SE_SHAKE_ENEMY_HUD_2 ; unused--same pointer as SE_SHAKE_ENEMY_HUD ($E4)
-	dw AnimationShakeEnemyHUD
-	db SE_SPIRAL_BALLS_INWARD ; $E2
-	dw AnimationSpiralBallsInward
-	db SE_DELAY_ANIMATION_10 ; $E1
-	dw AnimationDelay10
-	db SE_FLASH_ENEMY_MON_PIC ; unused--same as SE_FLASH_MON_PIC ($F5), but for the enemy mon
-	dw AnimationFlashEnemyMonPic
-	db SE_HIDE_ENEMY_MON_PIC ; $DF
-	dw AnimationHideEnemyMonPic
-	db SE_BLINK_ENEMY_MON ; $DE
-	dw AnimationBlinkEnemyMon
-	db SE_SHOW_MON_PIC ; $DD
-	dw AnimationShowMonPic
-	db SE_SHOW_ENEMY_MON_PIC ; $DC
-	dw AnimationShowEnemyMonPic
-	db SE_SLIDE_ENEMY_MON_OFF ; $DB
-	dw AnimationSlideEnemyMonOff
-	db SE_SHAKE_BACK_AND_FORTH ; $DA
-	dw AnimationShakeBackAndForth
-	db SE_SUBSTITUTE_MON ; $D9
-	dw AnimationSubstitute
-	db SE_WAVY_SCREEN ; $D8
-	dw AnimationWavyScreen
-	db $FF
+; special effect id, effect routine address
+	special_effect SE_DARK_SCREEN_FLASH, AnimationFlashScreen ; $FE
+	special_effect SE_DARK_SCREEN_PALETTE, AnimationDarkScreenPalette ; $FD
+	special_effect SE_RESET_SCREEN_PALETTE, AnimationResetScreenPalette ; $FC
+	special_effect SE_SHAKE_SCREEN, AnimationShakeScreen ; $FB
+	special_effect SE_WATER_DROPLETS_EVERYWHERE, AnimationWaterDropletsEverywhere ; $FA
+	special_effect SE_DARKEN_MON_PALETTE, AnimationDarkenMonPalette ; $F9
+	special_effect SE_FLASH_SCREEN_LONG, AnimationFlashScreenLong ; $F8
+	special_effect SE_SLIDE_MON_UP, AnimationSlideMonUp ; $F7
+	special_effect SE_SLIDE_MON_DOWN, AnimationSlideMonDown ; $F6
+	special_effect SE_FLASH_MON_PIC, AnimationFlashMonPic ; $F5
+	special_effect SE_SLIDE_MON_OFF, AnimationSlideMonOff ; $F4
+	special_effect SE_BLINK_MON, AnimationBlinkMon ; $F3
+	special_effect SE_MOVE_MON_HORIZONTALLY, AnimationMoveMonHorizontally ; $F2
+	special_effect SE_RESET_MON_POSITION, AnimationResetMonPosition ; $F1
+	special_effect SE_LIGHT_SCREEN_PALETTE, AnimationLightScreenPalette ; $F0
+	special_effect SE_HIDE_MON_PIC, AnimationHideMonPic ; $EF
+	special_effect SE_SQUISH_MON_PIC, AnimationSquishMonPic ; $EE
+	special_effect SE_SHOOT_BALLS_UPWARD, AnimationShootBallsUpward ; $ED
+	special_effect SE_SHOOT_MANY_BALLS_UPWARD, AnimationShootManyBallsUpward ; $EC
+	special_effect SE_BOUNCE_UP_AND_DOWN, AnimationBoundUpAndDown ; $EB
+	special_effect SE_MINIMIZE_MON, AnimationMinimizeMon ; $EA
+	special_effect SE_SLIDE_MON_DOWN_AND_HIDE, AnimationSlideMonDownAndHide ; $E9
+	special_effect SE_TRANSFORM_MON, AnimationTransformMon ; $E8
+	special_effect SE_LEAVES_FALLING, AnimationLeavesFalling ; $E7
+	special_effect SE_PETALS_FALLING, AnimationPetalsFalling ; $E6
+	special_effect SE_SLIDE_MON_HALF_OFF, AnimationSlideMonHalfOff ; $E5
+	special_effect SE_SHAKE_ENEMY_HUD, AnimationShakeEnemyHUD ; $E4
+	special_effect SE_SHAKE_ENEMY_HUD_2, AnimationShakeEnemyHUD ; unused--same pointer as SE_SHAKE_ENEMY_HUD ($E4)
+	special_effect SE_SPIRAL_BALLS_INWARD, AnimationSpiralBallsInward ; $E2
+	special_effect SE_DELAY_ANIMATION_10, AnimationDelay10 ; $E1
+	special_effect SE_FLASH_ENEMY_MON_PIC, AnimationFlashEnemyMonPic ; unused--same as SE_FLASH_MON_PIC ($F5), but for the enemy mon
+	special_effect SE_HIDE_ENEMY_MON_PIC, AnimationHideEnemyMonPic ; $DF
+	special_effect SE_BLINK_ENEMY_MON, AnimationBlinkEnemyMon ; $DE
+	special_effect SE_SHOW_MON_PIC, AnimationShowMonPic ; $DD
+	special_effect SE_SHOW_ENEMY_MON_PIC, AnimationShowEnemyMonPic ; $DC
+	special_effect SE_SLIDE_ENEMY_MON_OFF, AnimationSlideEnemyMonOff ; $DB
+	special_effect SE_SHAKE_BACK_AND_FORTH, AnimationShakeBackAndForth ; $DA
+	special_effect SE_SUBSTITUTE_MON, AnimationSubstitute ; $D9
+	special_effect SE_WAVY_SCREEN, AnimationWavyScreen ; $D8
+	db -1 ; end
--- a/data/moves/animation_special_effects.asm
+++ b/data/moves/animation_special_effects.asm
@@ -1,75 +1,32 @@
-; Format: Animation ID (1 byte), Address (2 bytes)
-AnimationIdSpecialEffects:
-	db MEGA_PUNCH
-	dw AnimationFlashScreen
+anim_special_effect: MACRO
+	db \1
+	dw \2
+ENDM
 
-	db GUILLOTINE
-	dw AnimationFlashScreen
-
-	db MEGA_KICK
-	dw AnimationFlashScreen
-
-	db HEADBUTT
-	dw AnimationFlashScreen
-
-	db TAIL_WHIP
-	dw TailWhipAnimationUnused
-
-	db GROWL
-	dw DoGrowlSpecialEffects
-
-	db DISABLE
-	dw AnimationFlashScreen
-
-	db BLIZZARD
-	dw DoBlizzardSpecialEffects
-
-	db BUBBLEBEAM
-	dw AnimationFlashScreen
-
-	db HYPER_BEAM
-	dw FlashScreenEveryFourFrameBlocks
-
-	db THUNDERBOLT
-	dw FlashScreenEveryEightFrameBlocks
-
-	db REFLECT
-	dw AnimationFlashScreen
-
-	db SELFDESTRUCT
-	dw DoExplodeSpecialEffects
-
-	db SPORE
-	dw AnimationFlashScreen
-
-	db EXPLOSION
-	dw DoExplodeSpecialEffects
-
-	db ROCK_SLIDE
-	dw DoRockSlideSpecialEffects
-
-	db TRADE_BALL_DROP_ANIM
-	dw TradeHidePokemon
-
-	db TRADE_BALL_SHAKE_ANIM
-	dw TradeShakePokeball
-
-	db TRADE_BALL_TILT_ANIM
-	dw TradeJumpPokeball
-
-	db TOSS_ANIM
-	dw DoBallTossSpecialEffects
-
-	db SHAKE_ANIM
-	dw DoBallShakeSpecialEffects
-
-	db POOF_ANIM
-	dw DoPoofSpecialEffects
-
-	db GREATTOSS_ANIM
-	dw DoBallTossSpecialEffects
-
-	db ULTRATOSS_ANIM
-	dw DoBallTossSpecialEffects
-
-	db $FF ; terminator
+AnimationIdSpecialEffects:
+; animation id, effect routine address
+	anim_special_effect MEGA_PUNCH, AnimationFlashScreen
+	anim_special_effect GUILLOTINE, AnimationFlashScreen
+	anim_special_effect MEGA_KICK, AnimationFlashScreen
+	anim_special_effect HEADBUTT, AnimationFlashScreen
+	anim_special_effect TAIL_WHIP, TailWhipAnimationUnused
+	anim_special_effect GROWL, DoGrowlSpecialEffects
+	anim_special_effect DISABLE, AnimationFlashScreen
+	anim_special_effect BLIZZARD, DoBlizzardSpecialEffects
+	anim_special_effect BUBBLEBEAM, AnimationFlashScreen
+	anim_special_effect HYPER_BEAM, FlashScreenEveryFourFrameBlocks
+	anim_special_effect THUNDERBOLT, FlashScreenEveryEightFrameBlocks
+	anim_special_effect REFLECT, AnimationFlashScreen
+	anim_special_effect SELFDESTRUCT, DoExplodeSpecialEffects
+	anim_special_effect SPORE, AnimationFlashScreen
+	anim_special_effect EXPLOSION, DoExplodeSpecialEffects
+	anim_special_effect ROCK_SLIDE, DoRockSlideSpecialEffects
+	anim_special_effect TRADE_BALL_DROP_ANIM, TradeHidePokemon
+	anim_special_effect TRADE_BALL_SHAKE_ANIM, TradeShakePokeball
+	anim_special_effect TRADE_BALL_TILT_ANIM, TradeJumpPokeball
+	anim_special_effect TOSS_ANIM, DoBallTossSpecialEffects
+	anim_special_effect SHAKE_ANIM, DoBallShakeSpecialEffects
+	anim_special_effect POOF_ANIM, DoPoofSpecialEffects
+	anim_special_effect GREATTOSS_ANIM, DoBallTossSpecialEffects
+	anim_special_effect ULTRATOSS_ANIM, DoBallTossSpecialEffects
+	db -1 ; end
--- a/data/moves/animations.asm
+++ b/data/moves/animations.asm
@@ -215,155 +215,155 @@
 
 PoundAnim:
 StruggleAnim:
-	db $08,$00,$01
+	db $08, $00, $01
 	db $FF
 
 KarateChopAnim:
-	db $08,$01,$03
+	db $08, $01, $03
 	db $FF
 
 DoubleSlapAnim:
-	db $05,$02,$01
-	db $05,$02,$01
+	db $05, $02, $01
+	db $05, $02, $01
 	db $FF
 
 CometPunchAnim:
-	db $04,$03,$02
-	db $04,$03,$02
+	db $04, $03, $02
+	db $04, $03, $02
 	db $FF
 
 MegaPunchAnim:
-	db $46,$04,$04
+	db $46, $04, $04
 	db $FF
 
 PayDayAnim:
-	db $08,$00,$01
-	db $04,$05,$52
+	db $08, $00, $01
+	db $04, $05, $52
 	db $FF
 
 FirePunchAnim:
-	db $06,$06,$02
-	db $46,$FF,$11
+	db $06, $06, $02
+	db $46, $FF, $11
 	db $FF
 
 IcePunchAnim:
-	db $06,$07,$02
-	db $10,$FF,$2F
+	db $06, $07, $02
+	db $10, $FF, $2F
 	db $FF
 
 ThunderPunchAnim:
-	db $06,$08,$02
+	db $06, $08, $02
 	db SE_DARK_SCREEN_PALETTE, $FF
-	db $46,$FF,$2B
+	db $46, $FF, $2B
 	db SE_RESET_SCREEN_PALETTE, $FF
 	db $FF
 
 ScratchAnim:
-	db $06,$09,$0F
+	db $06, $09, $0F
 	db $FF
 
 VicegripAnim:
-	db $08,$0A,$2A
+	db $08, $0A, $2A
 	db $FF
 
 GuillotineAnim:
-	db $06,$0B,$2A
+	db $06, $0B, $2A
 	db $FF
 
 RazorWindAnim:
-	db $04,$0C,$16
+	db $04, $0C, $16
 	db $FF
 
 SwordsDanceAnim:
-	db $46,$0D,$18
-	db $46,$0D,$18
-	db $46,$0D,$18
+	db $46, $0D, $18
+	db $46, $0D, $18
+	db $46, $0D, $18
 	db $FF
 
 CutAnim:
 	db SE_DARK_SCREEN_FLASH, $0E
-	db $04,$FF,$16
+	db $04, $FF, $16
 	db $FF
 
 GustAnim:
-	db $46,$0F,$10
-	db $06,$FF,$02
+	db $46, $0F, $10
+	db $06, $FF, $02
 	db $FF
 
 WingAttackAnim:
-	db $46,$10,$04
+	db $46, $10, $04
 	db $FF
 
 WhirlwindAnim:
-	db $46,$11,$10
+	db $46, $11, $10
 	db SE_SLIDE_ENEMY_MON_OFF, $FF
 	db $FF
 
 FlyAnim:
-	db $46,$12,$04
+	db $46, $12, $04
 	db SE_SHOW_MON_PIC, $FF
 	db $FF
 
 BindAnim:
-	db $04,$13,$23
-	db $04,$13,$23
+	db $04, $13, $23
+	db $04, $13, $23
 	db $FF
 
 SlamAnim:
-	db $06,$14,$02
+	db $06, $14, $02
 	db $FF
 
 VineWhipAnim:
-	db $01,$15,$16
-	db $08,$FF,$01
+	db $01, $15, $16
+	db $08, $FF, $01
 	db $FF
 
 StompAnim:
-	db $48,$16,$05
+	db $48, $16, $05
 	db $FF
 
 DoubleKickAnim:
-	db $08,$17,$01
-	db $08,$17,$01
+	db $08, $17, $01
+	db $08, $17, $01
 	db $FF
 
 MegaKickAnim:
-	db $46,$18,$04
+	db $46, $18, $04
 	db $FF
 
 JumpKickAnim:
-	db $46,$19,$04
+	db $46, $19, $04
 	db $FF
 
 RollingKickAnim:
 	db SE_DARK_SCREEN_FLASH, $1A
-	db $46,$FF,$04
+	db $46, $FF, $04
 	db $FF
 
 SandAttackAnim:
-	db $46,$1B,$28
+	db $46, $1B, $28
 	db $FF
 
 HeatButtAnim:
-	db $46,$1C,$05
+	db $46, $1C, $05
 	db $FF
 
 HornAttackAnim:
-	db $06,$1D,$45
-	db $46,$FF,$05
+	db $06, $1D, $45
+	db $46, $FF, $05
 	db $FF
 
 FuryAttackAnim:
-	db $02,$1E,$46
-	db $02,$FF,$46
+	db $02, $1E, $46
+	db $02, $FF, $46
 	db $FF
 
 HornDrillAnim:
-	db $42,$1F,$05
-	db $42,$FF,$05
-	db $42,$FF,$05
-	db $42,$FF,$05
-	db $42,$FF,$05
+	db $42, $1F, $05
+	db $42, $FF, $05
+	db $42, $FF, $05
+	db $42, $FF, $05
+	db $42, $FF, $05
 	db $FF
 
 TackleAnim:
@@ -379,9 +379,9 @@
 	db $FF
 
 WrapAnim:
-	db $04,$22,$23
-	db $04,$22,$23
-	db $04,$22,$23
+	db $04, $22, $23
+	db $04, $22, $23
+	db $04, $22, $23
 	db $FF
 
 TakeDownAnim:
@@ -391,12 +391,12 @@
 	db $FF
 
 ThrashAnim:
-	db $46,$24,$04
+	db $46, $24, $04
 	db $FF
 
 DoubleEdgeAnim:
 	db SE_LIGHT_SCREEN_PALETTE, $48
-	db $06,$FF,$2D
+	db $06, $FF, $2D
 	db SE_RESET_SCREEN_PALETTE, $FF
 	db SE_MOVE_MON_HORIZONTALLY, $FF
 	db SE_DARK_SCREEN_FLASH, $25
@@ -414,16 +414,16 @@
 	db $FF
 
 PoisonStingAnim:
-	db $06,$27,$00
+	db $06, $27, $00
 	db $FF
 
 TwineedleAnim:
-	db $05,$28,$01
-	db $05,$28,$01
+	db $05, $28, $01
+	db $05, $28, $01
 	db $FF
 
 PinMissileAnim:
-	db $03,$29,$01
+	db $03, $29, $01
 	db $FF
 
 LeerAnim:
@@ -434,34 +434,34 @@
 	db $FF
 
 BiteAnim:
-	db $08,$2B,$02
+	db $08, $2B, $02
 	db $FF
 
 GrowlAnim:
-	db $46,$2C,$12
+	db $46, $2C, $12
 	db $FF
 
 RoarAnim:
-	db $46,$2D,$15
-	db $46,$2D,$15
-	db $46,$2D,$15
+	db $46, $2D, $15
+	db $46, $2D, $15
+	db $46, $2D, $15
 	db $FF
 
 SingAnim:
-	db $46,$2E,$12
-	db $50,$FF,$40
-	db $50,$FF,$40
+	db $46, $2E, $12
+	db $50, $FF, $40
+	db $50, $FF, $40
 	db $FF
 
 SupersonicAnim:
-	db $06,$2F,$31
+	db $06, $2F, $31
 	db $FF
 
 SonicBoomAnim:
-	db $46,$2D,$15
-	db $46,$2D,$15
-	db $46,$0F,$10
-	db $46,$FF,$05
+	db $46, $2D, $15
+	db $46, $2D, $15
+	db $46, $0F, $10
+	db $46, $FF, $05
 	db $FF
 
 DisableAnim:
@@ -472,18 +472,18 @@
 	db $FF
 
 AcidAnim:
-	db $46,$32,$13
-	db $46,$32,$14
+	db $46, $32, $13
+	db $46, $32, $14
 	db $FF
 
 EmberAnim:
-	db $46,$33,$11
+	db $46, $33, $11
 	db $FF
 
 FlamethrowerAnim:
-	db $46,$34,$1F
-	db $46,$34,$0C
-	db $46,$34,$0D
+	db $46, $34, $1F
+	db $46, $34, $0C
+	db $46, $34, $0D
 	db $FF
 
 MistAnim:
@@ -493,40 +493,40 @@
 	db $FF
 
 WaterGunAnim:
-	db $06,$36,$2C
+	db $06, $36, $2C
 	db $FF
 
 HydroPumpAnim:
-	db $06,$37,$1A
-	db $06,$37,$1A
+	db $06, $37, $1A
+	db $06, $37, $1A
 	db $FF
 
 SurfAnim:
 	db SE_WATER_DROPLETS_EVERYWHERE, $38
-	db $06,$37,$1A
+	db $06, $37, $1A
 	db $FF
 
 IceBeamAnim:
-	db $03,$39,$2E
-	db $10,$FF,$2F
+	db $03, $39, $2E
+	db $10, $FF, $2F
 	db $FF
 
 BlizzardAnim:
-	db $04,$3A,$38
-	db $04,$37,$38
+	db $04, $3A, $38
+	db $04, $37, $38
 	db $FF
 
 PsyBeamAnim:
-	db $03,$3B,$2E
+	db $03, $3B, $2E
 	db SE_FLASH_SCREEN_LONG, $FF
 	db $FF
 
 BubbleBeamAnim:
-	db $12,$3C,$35
+	db $12, $3C, $35
 	db $FF
 
 AuroraBeamAnim:
-	db $03,$3D,$2E
+	db $03, $3D, $2E
 	db SE_DELAY_ANIMATION_10, $FF
 	db SE_DELAY_ANIMATION_10, $FF
 	db $FF
@@ -534,49 +534,49 @@
 HyperBeamAnim:
 	db SE_DARK_SCREEN_PALETTE, $48
 	db SE_SPIRAL_BALLS_INWARD, $FF
-	db $02,$3E,$2E
+	db $02, $3E, $2E
 	db SE_DARK_SCREEN_FLASH, $FF
 	db SE_DARK_SCREEN_FLASH, $FF
-	db $46,$04,$04
+	db $46, $04, $04
 	db SE_RESET_SCREEN_PALETTE, $FF
 	db $FF
 
 PeckAnim:
-	db $08,$3F,$01
+	db $08, $3F, $01
 	db $FF
 
 DrillPeckAnim:
-	db $46,$40,$04
+	db $46, $40, $04
 	db $FF
 
 SubmissionAnim:
 	db SE_SLIDE_MON_OFF, $41
-	db $06,$FF,$01
+	db $06, $FF, $01
 	db SE_SHOW_MON_PIC, $FF
 	db $FF
 
 LowKickAnim:
 	db SE_SLIDE_MON_OFF, $42
-	db $46,$FF,$04
+	db $46, $FF, $04
 	db SE_SHOW_MON_PIC, $FF
 	db $FF
 
 CounterAnim:
 	db SE_SLIDE_MON_OFF, $43
-	db $46,$FF,$04
+	db $46, $FF, $04
 	db SE_SHOW_MON_PIC, $FF
 	db $FF
 
 SeismicTossAnim:
 	db SE_BLINK_ENEMY_MON, $FF
-	db $41,$8B,$4E
+	db $41, $8B, $4E
 	db SE_HIDE_ENEMY_MON_PIC, $FF
 	db SE_SLIDE_MON_OFF, $FF
-	db $42,$44,$4F
+	db $42, $44, $4F
 	db SE_DELAY_ANIMATION_10, $FF
 	db SE_DELAY_ANIMATION_10, $FF
 	db SE_SHOW_MON_PIC, $FF
-	db $41,$44,$50
+	db $41, $44, $50
 	db SE_SHOW_ENEMY_MON_PIC, $FF
 	db SE_SHAKE_SCREEN, $FF
 	db $FF
@@ -584,13 +584,13 @@
 StrengthAnim:
 	db SE_MOVE_MON_HORIZONTALLY, $48
 	db SE_RESET_MON_POSITION, $FF
-	db $46,$06,$04
+	db $46, $06, $04
 	db $FF
 
 AbsorbAnim:
 	db SE_LIGHT_SCREEN_PALETTE, $46
-	db $06,$FF,$21
-	db $06,$FF,$22
+	db $06, $FF, $21
+	db $06, $FF, $22
 	db SE_RESET_SCREEN_PALETTE, $FF
 	db $FF
 
@@ -597,15 +597,15 @@
 MegaDrainAnim:
 	db SE_LIGHT_SCREEN_PALETTE, $47
 	db SE_DARK_SCREEN_FLASH, $FF
-	db $06,$FF,$21
-	db $06,$FF,$22
+	db $06, $FF, $21
+	db $06, $FF, $22
 	db SE_DARK_SCREEN_FLASH, $FF
 	db SE_RESET_SCREEN_PALETTE, $FF
 	db $FF
 
 LeechSeedAnim:
-	db $46,$48,$1B
-	db $55,$4D,$1C
+	db $46, $48, $1B
+	db $55, $4D, $1C
 	db $FF
 
 GrowthAnim:
@@ -616,25 +616,25 @@
 
 RazorLeafAnim:
 	db SE_LEAVES_FALLING, $4A
-	db $41,$80,$44
-	db $01,$0C,$16
+	db $41, $80, $44
+	db $01, $0C, $16
 	db $FF
 
 SolarBeamAnim:
-	db $06,$4B,$2E
-	db $06,$FF,$01
+	db $06, $4B, $2E
+	db $06, $FF, $01
 	db $FF
 
 PoisonPowderAnim:
-	db $06,$4C,$36
+	db $06, $4C, $36
 	db $FF
 
 StunSporeAnim:
-	db $06,$4D,$36
+	db $06, $4D, $36
 	db $FF
 
 SleepPowderAnim:
-	db $06,$4E,$36
+	db $06, $4E, $36
 	db $FF
 
 PedalDanceAnim:
@@ -644,48 +644,48 @@
 	db $FF
 
 StringShotAnim:
-	db $08,$50,$37
+	db $08, $50, $37
 	db $FF
 
 DragonRageAnim:
-	db $46,$51,$1F
-	db $46,$FF,$0C
-	db $46,$FF,$0D
-	db $46,$FF,$0E
+	db $46, $51, $1F
+	db $46, $FF, $0C
+	db $46, $FF, $0D
+	db $46, $FF, $0E
 	db $FF
 
 FireSpinAnim:
-	db $46,$52,$0C
-	db $46,$FF,$0D
-	db $46,$FF,$0E
+	db $46, $52, $0C
+	db $46, $FF, $0D
+	db $46, $FF, $0E
 	db $FF
 
 ThunderShockAnim:
-	db $42,$53,$29
+	db $42, $53, $29
 	db $FF
 
 ThunderBoltAnim:
-	db $41,$54,$29
-	db $41,$54,$29
+	db $41, $54, $29
+	db $41, $54, $29
 	db $FF
 
 ThunderWaveAnim:
-	db $42,$55,$29
-	db $02,$FF,$23
-	db $04,$FF,$23
+	db $42, $55, $29
+	db $02, $FF, $23
+	db $04, $FF, $23
 	db $FF
 
 ThunderAnim:
 	db SE_DARK_SCREEN_PALETTE, $56
 	db SE_DARK_SCREEN_FLASH, $FF
-	db $46,$FF,$2B
+	db $46, $FF, $2B
 	db SE_DARK_SCREEN_FLASH, $FF
-	db $42,$54,$29
+	db $42, $54, $29
 	db SE_RESET_SCREEN_PALETTE, $FF
 	db $FF
 
 RockThrowAnim:
-	db $04,$57,$30
+	db $04, $57, $30
 	db $FF
 
 EarthquakeAnim:
@@ -701,13 +701,13 @@
 	db $FF
 
 DigAnim:
-	db $46,$5A,$04
+	db $46, $5A, $04
 	db SE_SLIDE_MON_UP, $FF
 	db $FF
 
 ToxicAnim:
 	db SE_WATER_DROPLETS_EVERYWHERE, $38
-	db $46,$5B,$14
+	db $46, $5B, $14
 	db $FF
 
 ConfusionAnim:
@@ -725,7 +725,7 @@
 
 MeditateAnim:
 	db SE_LIGHT_SCREEN_PALETTE, $5F
-	db $46,$FF,$43
+	db $46, $FF, $43
 	db SE_DARK_SCREEN_FLASH, $FF
 	db SE_RESET_SCREEN_PALETTE, $FF
 	db $FF
@@ -737,12 +737,12 @@
 
 QuickAttackAnim:
 	db SE_SLIDE_MON_OFF, $61
-	db $46,$FF,$04
+	db $46, $FF, $04
 	db SE_SHOW_MON_PIC, $FF
 	db $FF
 
 RageAnim:
-	db $06,$62,$01
+	db $06, $62, $01
 	db $FF
 
 TeleportAnim:
@@ -756,12 +756,12 @@
 	db $FF
 
 MimicAnim:
-	db $46,$65,$21
-	db $46,$65,$22
+	db $46, $65, $21
+	db $46, $65, $22
 	db $FF
 
 ScreechAnim:
-	db $46,$66,$12
+	db $46, $66, $12
 	db $FF
 
 DoubleTeamAnim:
@@ -773,7 +773,7 @@
 	db SE_RESET_SCREEN_PALETTE, $FF
 	db SE_SHAKE_BACK_AND_FORTH, $67
 	db SE_SHOW_MON_PIC, $FF
-	db $46,$6F,$33
+	db $46, $6F, $33
 	db $FF
 
 RecoverAnim:
@@ -785,7 +785,7 @@
 
 HardenAnim:
 	db SE_LIGHT_SCREEN_PALETTE, $69
-	db $46,$FF,$43
+	db $46, $FF, $43
 	db SE_DARK_SCREEN_FLASH, $FF
 	db SE_RESET_SCREEN_PALETTE, $FF
 	db $FF
@@ -798,8 +798,8 @@
 	db $FF
 
 SmokeScreenAnim:
-	db $46,$6B,$28
-	db $04,$FF,$0A
+	db $46, $6B, $28
+	db $04, $FF, $0A
 	db SE_DARKEN_MON_PALETTE, $FF
 	db SE_DELAY_ANIMATION_10, $FF
 	db SE_DELAY_ANIMATION_10, $FF
@@ -817,7 +817,7 @@
 
 ConfuseRayAnim:
 	db SE_DARK_SCREEN_PALETTE, $6C
-	db $46,$FF,$3E
+	db $46, $FF, $3E
 	db SE_RESET_SCREEN_PALETTE, $FF
 	db $FF
 
@@ -824,7 +824,7 @@
 WithdrawAnim:
 	db SE_LIGHT_SCREEN_PALETTE, $6E
 	db SE_SLIDE_MON_DOWN, $FF
-	db $06,$FF,$51
+	db $06, $FF, $51
 	db SE_RESET_SCREEN_PALETTE, $FF
 	db SE_SHOW_MON_PIC, $FF
 	db $FF
@@ -831,20 +831,20 @@
 
 DefenseCurlAnim:
 	db SE_LIGHT_SCREEN_PALETTE, $6E
-	db $06,$FF,$43
+	db $06, $FF, $43
 	db SE_DARK_SCREEN_FLASH, $FF
 	db SE_RESET_SCREEN_PALETTE, $FF
 	db $FF
 
 BarrierAnim:
-	db $46,$6F,$33
-	db $46,$6F,$33
+	db $46, $6F, $33
+	db $46, $6F, $33
 	db $FF
 
 LightScreenAnim:
 	db SE_LIGHT_SCREEN_PALETTE, $FF
-	db $46,$70,$33
-	db $46,$70,$33
+	db $46, $70, $33
+	db $46, $70, $33
 	db SE_RESET_SCREEN_PALETTE, $FF
 	db $FF
 
@@ -856,8 +856,8 @@
 
 ReflectAnim:
 	db SE_DARK_SCREEN_PALETTE, $FF
-	db $46,$72,$33
-	db $46,$72,$33
+	db $46, $72, $33
+	db $46, $72, $33
 	db SE_RESET_SCREEN_PALETTE, $FF
 	db $FF
 
@@ -866,7 +866,7 @@
 	db $FF
 
 BideAnim:
-	db $46,$74,$04
+	db $46, $74, $04
 	db $FF
 
 MetronomeAnim:
@@ -880,88 +880,88 @@
 	db $FF
 
 MirrorMoveAnim:
-	db $08,$76,$01
+	db $08, $76, $01
 	db $FF
 
 SelfdestructAnim:
-	db $43,$77,$34
+	db $43, $77, $34
 	db $FF
 
 EggBombAnim:
-	db $44,$78,$41
-	db $44,$78,$42
+	db $44, $78, $41
+	db $44, $78, $42
 	db $FF
 
 LickAnim:
-	db $46,$7B,$14
+	db $46, $7B, $14
 	db $FF
 
 SmogAnim:
 	db SE_DARKEN_MON_PALETTE, $48
-	db $46,$7A,$19
+	db $46, $7A, $19
 	db SE_RESET_SCREEN_PALETTE, $FF
 	db $FF
 
 SludgeAnim:
-	db $46,$7B,$13
-	db $46,$7B,$14
+	db $46, $7B, $13
+	db $46, $7B, $14
 	db $FF
 
 BoneClubAnim:
-	db $08,$7C,$02
+	db $08, $7C, $02
 	db $FF
 
 FireBlastAnim:
-	db $46,$7D,$1F
-	db $46,$FF,$20
-	db $46,$FF,$20
-	db $46,$FF,$0C
-	db $46,$FF,$0D
+	db $46, $7D, $1F
+	db $46, $FF, $20
+	db $46, $FF, $20
+	db $46, $FF, $0C
+	db $46, $FF, $0D
 	db $FF
 
 WaterfallAnim:
 	db SE_SLIDE_MON_DOWN, $48
-	db $06,$37,$1A
-	db $08,$FF,$02
+	db $06, $37, $1A
+	db $08, $FF, $02
 	db SE_SLIDE_MON_UP, $FF
 	db $FF
 
 ClampAnim:
-	db $08,$7F,$2A
-	db $06,$83,$23
-	db $06,$83,$23
+	db $08, $7F, $2A
+	db $06, $83, $23
+	db $06, $83, $23
 	db $FF
 
 SwiftAnim:
-	db $43,$80,$3F
+	db $43, $80, $3F
 	db $FF
 
 SkullBashAnim:
-	db $46,$81,$05
+	db $46, $81, $05
 	db $FF
 
 SpikeCannonAnim:
-	db $44,$82,$04
+	db $44, $82, $04
 	db $FF
 
 ConstrictAnim:
-	db $06,$83,$23
-	db $06,$83,$23
-	db $06,$83,$23
+	db $06, $83, $23
+	db $06, $83, $23
+	db $06, $83, $23
 	db $FF
 
 AmnesiaAnim:
-	db $08,$84,$25
-	db $08,$84,$25
+	db $08, $84, $25
+	db $08, $84, $25
 	db $FF
 
 KinesisAnim:
-	db $08,$85,$01
+	db $08, $85, $01
 	db $FF
 
 SoftboiledAnim:
 	db SE_SLIDE_MON_HALF_OFF, $48
-	db $08,$86,$4C
+	db $08, $86, $4C
 	db SE_LIGHT_SCREEN_PALETTE, $FF
 	db SE_SPIRAL_BALLS_INWARD, $FF
 	db SE_RESET_SCREEN_PALETTE, $FF
@@ -969,7 +969,7 @@
 	db $FF
 
 HiJumpKickAnim:
-	db $46,$87,$04
+	db $46, $87, $04
 	db $FF
 
 GlareAnim:
@@ -982,58 +982,58 @@
 DreamEaterAnim:
 	db SE_FLASH_SCREEN_LONG, $89
 	db SE_DARK_SCREEN_PALETTE, $89
-	db $08,$89,$02
+	db $08, $89, $02
 	db SE_RESET_SCREEN_PALETTE, $FF
 	db $FF
 
 PoisonGasAnim:
-	db $46,$8A,$19
+	db $46, $8A, $19
 	db $FF
 
 BarrageAnim:
-	db $43,$8B,$41
-	db $05,$FF,$55
+	db $43, $8B, $41
+	db $05, $FF, $55
 	db $FF
 
 LeechLifeAnim:
-	db $08,$8C,$02
+	db $08, $8C, $02
 	db SE_DARK_SCREEN_FLASH, $FF
-	db $06,$FF,$21
-	db $06,$FF,$22
+	db $06, $FF, $21
+	db $06, $FF, $22
 	db SE_DARK_SCREEN_FLASH, $FF
 	db $FF
 
 LovelyKissAnim:
-	db $06,$8D,$12
+	db $06, $8D, $12
 	db $FF
 
 SkyAttackAnim:
 	db SE_SQUISH_MON_PIC, $8E
 	db SE_SHOOT_BALLS_UPWARD, $FF
-	db $46,$87,$04
+	db $46, $87, $04
 	db SE_SHOW_MON_PIC, $FF
 	db $FF
 
 TransformAnim:
-	db $46,$8F,$21
-	db $44,$8F,$22
-	db $08,$FF,$47
+	db $46, $8F, $21
+	db $44, $8F, $22
+	db $08, $FF, $47
 	db SE_TRANSFORM_MON, $FF
 	db $FF
 
 BubbleAnim:
-	db $16,$90,$35
+	db $16, $90, $35
 	db $FF
 
 DizzyPunchAnim:
-	db $06,$91,$17
-	db $06,$91,$17
-	db $06,$91,$17
-	db $06,$02,$02
+	db $06, $91, $17
+	db $06, $91, $17
+	db $06, $91, $17
+	db $06, $02, $02
 	db $FF
 
 SporeAnim:
-	db $06,$92,$36
+	db $06, $92, $36
 	db $FF
 
 FlashAnim:
@@ -1044,7 +1044,7 @@
 	db $FF
 
 PsywaveAnim:
-	db $06,$2F,$31
+	db $06, $2F, $31
 	db SE_WAVY_SCREEN, $5C
 	db $FF
 
@@ -1057,40 +1057,40 @@
 	db $FF
 
 CrabHammerAnim:
-	db $46,$97,$05
-	db $06,$FF,$2A
+	db $46, $97, $05
+	db $06, $FF, $2A
 	db $FF
 
 ExplosionAnim:
-	db $43,$98,$34
+	db $43, $98, $34
 	db $FF
 
 FurySwipesAnim:
-	db $04,$99,$0F
+	db $04, $99, $0F
 	db $FF
 
 BonemerangAnim:
-	db $06,$9A,$02
+	db $06, $9A, $02
 	db $FF
 
 RestAnim:
-	db $10,$9B,$3A
-	db $10,$9B,$3A
+	db $10, $9B, $3A
+	db $10, $9B, $3A
 	db $FF
 
 RockSlideAnim:
-	db $04,$9C,$1D
-	db $03,$9C,$1E
-	db $46,$9D,$04
+	db $04, $9C, $1D
+	db $03, $9C, $1E
+	db $46, $9D, $04
 	db $FF
 
 HyperFangAnim:
-	db $06,$9D,$02
+	db $06, $9D, $02
 	db $FF
 
 SharpenAnim:
 	db SE_LIGHT_SCREEN_PALETTE, $9E
-	db $46,$FF,$43
+	db $46, $FF, $43
 	db SE_DARK_SCREEN_FLASH, $FF
 	db SE_RESET_SCREEN_PALETTE, $FF
 	db $FF
@@ -1097,51 +1097,51 @@
 
 ConversionAnim:
 	db SE_DARK_SCREEN_FLASH, $9F
-	db $46,$FF,$21
-	db $46,$FF,$22
+	db $46, $FF, $21
+	db $46, $FF, $22
 	db SE_DARK_SCREEN_FLASH, $FF
 	db $FF
 
 TriAttackAnim:
 	db SE_DARK_SCREEN_FLASH, $A0
-	db $46,$FF,$4D
+	db $46, $FF, $4D
 	db SE_DARK_SCREEN_FLASH, $FF
 	db $FF
 
 SuperFangAnim:
 	db SE_DARK_SCREEN_PALETTE, $48
-	db $46,$A1,$04
+	db $46, $A1, $04
 	db SE_RESET_SCREEN_PALETTE, $FF
 	db $FF
 
 SlashAnim:
-	db $06,$A2,$0F
+	db $06, $A2, $0F
 	db $FF
 
 SubstituteAnim:
 	db SE_SLIDE_MON_OFF, $A3
-	db $08,$FF,$47
+	db $08, $FF, $47
 	db SE_SUBSTITUTE_MON, $FF
 	db $FF
 
 BallTossAnim:
-	db $03,$FF,$06
+	db $03, $FF, $06
 	db $FF
 
 GreatTossAnim:
-	db $03,$FF,$07
+	db $03, $FF, $07
 	db $FF
 
 UltraTossAnim:
-	db $02,$FF,$08
+	db $02, $FF, $08
 	db $FF
 
 BallShakeAnim:
-	db $04,$FF,$09
+	db $04, $FF, $09
 	db $FF
 
 BallPoofAnim:
-	db $04,$FF,$0A
+	db $04, $FF, $0A
 	db $FF
 
 ShowPicAnim:
@@ -1165,19 +1165,19 @@
 	db $FF
 
 TradeBallDropAnim:
-	db $86,$FF,$48
+	db $86, $FF, $48
 	db $FF
 
 TradeBallAppear1Anim:
-	db $84,$FF,$49
+	db $84, $FF, $49
 	db $FF
 
 TradeBallAppear2Anim:
-	db $86,$FF,$4A
+	db $86, $FF, $4A
 	db $FF
 
 TradeBallPoofAnim:
-	db $86,$FF,$4B
+	db $86, $FF, $4B
 	db $FF
 
 XStatItemAnim:
@@ -1188,7 +1188,7 @@
 
 ShrinkingSquareAnim:
 	db SE_LIGHT_SCREEN_PALETTE, $FF
-	db $46,$FF,$43
+	db $46, $FF, $43
 	db SE_RESET_SCREEN_PALETTE, $FF
 	db $FF
 
@@ -1200,7 +1200,7 @@
 
 ShrinkingSquareBlackAnim:
 	db SE_DARKEN_MON_PALETTE, $FF
-	db $46,$FF,$43
+	db $46, $FF, $43
 	db SE_RESET_SCREEN_PALETTE, $FF
 	db $FF
 
@@ -1211,37 +1211,37 @@
 	db $FF
 
 ParalyzeAnim:
-	db $04,$13,$24
-	db $04,$13,$24
+	db $04, $13, $24
+	db $04, $13, $24
 	db $FF
 
 PoisonAnim:
-	db $08,$13,$27
-	db $08,$13,$27
+	db $08, $13, $27
+	db $08, $13, $27
 	db $FF
 
 SleepPlayerAnim:
-	db $10,$9B,$3A
-	db $10,$9B,$3A
+	db $10, $9B, $3A
+	db $10, $9B, $3A
 	db $FF
 
 SleepEnemyAnim:
-	db $10,$9B,$3B
-	db $10,$9B,$3B
+	db $10, $9B, $3B
+	db $10, $9B, $3B
 	db $FF
 
 ConfusedPlayerAnim:
-	db $08,$84,$25
-	db $08,$84,$25
+	db $08, $84, $25
+	db $08, $84, $25
 	db $FF
 
 ConfusedEnemyAnim:
-	db $08,$84,$26
-	db $08,$84,$26
+	db $08, $84, $26
+	db $08, $84, $26
 	db $FF
 
 BallBlockAnim:
-	db $03,$FF,$0B
+	db $03, $FF, $0B
 	db $FF
 
 FaintAnim:
@@ -1253,11 +1253,11 @@
 	db $FF
 
 ThrowRockAnim:
-	db $03,$8B,$53
+	db $03, $8B, $53
 	db $FF
 
 ThrowBaitAnim:
-	db $03,$8B,$54
+	db $03, $8B, $54
 	db $FF
 
 SubanimationPointers:
@@ -1350,860 +1350,860 @@
 
 Subanimation04:
 	db $43
-	db $02,$1a,$00
-	db $02,$10,$00
-	db $02,$03,$00
+	db $02, $1a, $00
+	db $02, $10, $00
+	db $02, $03, $00
 
 Subanimation05:
 	db $41
-	db $02,$10,$00
+	db $02, $10, $00
 
 Subanimation08:
 	db $0b
-	db $03,$30,$00
-	db $03,$44,$00
-	db $03,$94,$00
-	db $03,$60,$00
-	db $03,$76,$00
-	db $03,$9f,$00
-	db $03,$8d,$00
-	db $03,$a0,$00
-	db $03,$1a,$00
-	db $03,$a1,$00
-	db $03,$34,$00
+	db $03, $30, $00
+	db $03, $44, $00
+	db $03, $94, $00
+	db $03, $60, $00
+	db $03, $76, $00
+	db $03, $9f, $00
+	db $03, $8d, $00
+	db $03, $a0, $00
+	db $03, $1a, $00
+	db $03, $a1, $00
+	db $03, $34, $00
 
 Subanimation07:
 	db $0b
-	db $03,$30,$00
-	db $03,$a2,$00
-	db $03,$31,$00
-	db $03,$a3,$00
-	db $03,$32,$00
-	db $03,$a4,$00
-	db $03,$92,$00
-	db $03,$a5,$00
-	db $03,$15,$00
-	db $03,$a6,$00
-	db $03,$34,$00
+	db $03, $30, $00
+	db $03, $a2, $00
+	db $03, $31, $00
+	db $03, $a3, $00
+	db $03, $32, $00
+	db $03, $a4, $00
+	db $03, $92, $00
+	db $03, $a5, $00
+	db $03, $15, $00
+	db $03, $a6, $00
+	db $03, $34, $00
 
 Subanimation06:
 	db $0b
-	db $03,$30,$00
-	db $03,$a2,$00
-	db $03,$93,$00
-	db $03,$61,$00
-	db $03,$73,$00
-	db $03,$a7,$00
-	db $03,$33,$00
-	db $03,$a8,$00
-	db $03,$0e,$00
-	db $03,$a9,$00
-	db $03,$34,$00
+	db $03, $30, $00
+	db $03, $a2, $00
+	db $03, $93, $00
+	db $03, $61, $00
+	db $03, $73, $00
+	db $03, $a7, $00
+	db $03, $33, $00
+	db $03, $a8, $00
+	db $03, $0e, $00
+	db $03, $a9, $00
+	db $03, $34, $00
 
 Subanimation09:
 	db $04
-	db $03,$21,$04
-	db $04,$21,$04
-	db $03,$21,$04
-	db $05,$21,$04
+	db $03, $21, $04
+	db $04, $21, $04
+	db $03, $21, $04
+	db $05, $21, $04
 
 Subanimation0a:
 	db $46
-	db $06,$1b,$00
-	db $07,$1b,$00
-	db $08,$36,$00
-	db $09,$36,$00
-	db $0a,$15,$00
-	db $0a,$15,$00
+	db $06, $1b, $00
+	db $07, $1b, $00
+	db $08, $36, $00
+	db $09, $36, $00
+	db $0a, $15, $00
+	db $0a, $15, $00
 
 Subanimation0b:
 	db $04
-	db $01,$2d,$00
-	db $03,$2f,$00
-	db $03,$35,$00
-	db $03,$4d,$00
+	db $01, $2d, $00
+	db $03, $2f, $00
+	db $03, $35, $00
+	db $03, $4d, $00
 
 Subanimation55:
 	db $41
-	db $01,$9d,$00
+	db $01, $9d, $00
 
 Subanimation11:
 	db $4c
-	db $0b,$26,$00
-	db $0c,$26,$00
-	db $0b,$26,$00
-	db $0c,$26,$00
-	db $0b,$28,$00
-	db $0c,$28,$00
-	db $0b,$28,$00
-	db $0c,$28,$00
-	db $0b,$27,$00
-	db $0c,$27,$00
-	db $0b,$27,$00
-	db $0c,$27,$00
+	db $0b, $26, $00
+	db $0c, $26, $00
+	db $0b, $26, $00
+	db $0c, $26, $00
+	db $0b, $28, $00
+	db $0c, $28, $00
+	db $0b, $28, $00
+	db $0c, $28, $00
+	db $0b, $27, $00
+	db $0c, $27, $00
+	db $0b, $27, $00
+	db $0c, $27, $00
 
 Subanimation2b:
 	db $4b
-	db $0d,$03,$03
-	db $0e,$03,$03
-	db $0f,$03,$00
-	db $0d,$11,$00
-	db $0d,$11,$00
-	db $0d,$37,$00
-	db $0d,$37,$00
-	db $10,$21,$00
-	db $10,$21,$00
-	db $11,$1b,$00
-	db $11,$1b,$00
+	db $0d, $03, $03
+	db $0e, $03, $03
+	db $0f, $03, $00
+	db $0d, $11, $00
+	db $0d, $11, $00
+	db $0d, $37, $00
+	db $0d, $37, $00
+	db $10, $21, $00
+	db $10, $21, $00
+	db $11, $1b, $00
+	db $11, $1b, $00
 
 Subanimation2c:
 	db $4c
-	db $12,$01,$00
-	db $12,$0f,$00
-	db $12,$1b,$00
-	db $12,$25,$00
-	db $13,$38,$00
-	db $13,$38,$02
-	db $14,$38,$00
-	db $14,$38,$02
-	db $15,$38,$00
-	db $15,$38,$00
-	db $16,$38,$00
-	db $16,$38,$00
+	db $12, $01, $00
+	db $12, $0f, $00
+	db $12, $1b, $00
+	db $12, $25, $00
+	db $13, $38, $00
+	db $13, $38, $02
+	db $14, $38, $00
+	db $14, $38, $02
+	db $15, $38, $00
+	db $15, $38, $00
+	db $16, $38, $00
+	db $16, $38, $00
 
 Subanimation12:
 	db $69
-	db $17,$30,$00
-	db $17,$39,$00
-	db $17,$3a,$00
-	db $17,$3b,$00
-	db $17,$3c,$00
-	db $17,$3d,$00
-	db $17,$3e,$00
-	db $17,$3f,$00
-	db $17,$1f,$00
+	db $17, $30, $00
+	db $17, $39, $00
+	db $17, $3a, $00
+	db $17, $3b, $00
+	db $17, $3c, $00
+	db $17, $3d, $00
+	db $17, $3e, $00
+	db $17, $3f, $00
+	db $17, $1f, $00
 
 Subanimation00:
 	db $41
-	db $01,$17,$00
+	db $01, $17, $00
 
 Subanimation01:
 	db $42
-	db $01,$0f,$00
-	db $01,$1d,$00
+	db $01, $0f, $00
+	db $01, $1d, $00
 
 Subanimation02:
 	db $43
-	db $01,$12,$00
-	db $01,$15,$00
-	db $01,$1c,$00
+	db $01, $12, $00
+	db $01, $15, $00
+	db $01, $1c, $00
 
 Subanimation03:
 	db $44
-	db $01,$0b,$00
-	db $01,$11,$00
-	db $01,$18,$00
-	db $01,$1d,$00
+	db $01, $0b, $00
+	db $01, $11, $00
+	db $01, $18, $00
+	db $01, $1d, $00
 
 Subanimation0c:
 	db $43
-	db $0c,$20,$00
-	db $0c,$21,$00
-	db $0c,$23,$00
+	db $0c, $20, $00
+	db $0c, $21, $00
+	db $0c, $23, $00
 
 Subanimation0d:
 	db $46
-	db $0c,$20,$02
-	db $0c,$15,$00
-	db $0c,$21,$02
-	db $0c,$17,$00
-	db $0c,$23,$02
-	db $0c,$19,$00
+	db $0c, $20, $02
+	db $0c, $15, $00
+	db $0c, $21, $02
+	db $0c, $17, $00
+	db $0c, $23, $02
+	db $0c, $19, $00
 
 Subanimation0e:
 	db $49
-	db $0c,$20,$02
-	db $0c,$15,$02
-	db $0c,$07,$00
-	db $0c,$21,$02
-	db $0c,$17,$02
-	db $0c,$09,$00
-	db $0c,$23,$02
-	db $0c,$19,$02
-	db $0c,$0c,$00
+	db $0c, $20, $02
+	db $0c, $15, $02
+	db $0c, $07, $00
+	db $0c, $21, $02
+	db $0c, $17, $02
+	db $0c, $09, $00
+	db $0c, $23, $02
+	db $0c, $19, $02
+	db $0c, $0c, $00
 
 Subanimation1f:
 	db $85
-	db $0c,$30,$03
-	db $0c,$40,$03
-	db $0c,$41,$03
-	db $0c,$42,$03
-	db $0c,$21,$00
+	db $0c, $30, $03
+	db $0c, $40, $03
+	db $0c, $41, $03
+	db $0c, $42, $03
+	db $0c, $21, $00
 
 Subanimation2e:
 	db $2e
-	db $18,$43,$02
-	db $75,$52,$04
-	db $19,$43,$02
-	db $75,$63,$04
-	db $1a,$43,$02
-	db $75,$4d,$04
-	db $1b,$43,$02
-	db $75,$97,$04
-	db $1c,$43,$02
-	db $75,$98,$04
-	db $1d,$43,$02
-	db $75,$58,$04
-	db $1e,$43,$02
-	db $75,$1b,$00
+	db $18, $43, $02
+	db $75, $52, $04
+	db $19, $43, $02
+	db $75, $63, $04
+	db $1a, $43, $02
+	db $75, $4d, $04
+	db $1b, $43, $02
+	db $75, $97, $04
+	db $1c, $43, $02
+	db $75, $98, $04
+	db $1d, $43, $02
+	db $75, $58, $04
+	db $1e, $43, $02
+	db $75, $1b, $00
 
 Subanimation2f:
 	db $44
-	db $1f,$24,$00
-	db $20,$20,$00
-	db $21,$1a,$00
-	db $22,$15,$00
+	db $1f, $24, $00
+	db $20, $20, $00
+	db $21, $1a, $00
+	db $22, $15, $00
 
 Subanimation30:
 	db $52
-	db $23,$00,$02
-	db $23,$02,$02
-	db $23,$04,$00
-	db $23,$07,$02
-	db $23,$02,$02
-	db $23,$04,$00
-	db $23,$0e,$02
-	db $23,$02,$02
-	db $23,$0c,$00
-	db $25,$07,$00
-	db $25,$0e,$00
-	db $25,$15,$00
-	db $24,$24,$02
-	db $23,$1c,$02
-	db $23,$23,$00
-	db $23,$21,$02
-	db $24,$28,$00
-	db $24,$28,$00
+	db $23, $00, $02
+	db $23, $02, $02
+	db $23, $04, $00
+	db $23, $07, $02
+	db $23, $02, $02
+	db $23, $04, $00
+	db $23, $0e, $02
+	db $23, $02, $02
+	db $23, $0c, $00
+	db $25, $07, $00
+	db $25, $0e, $00
+	db $25, $15, $00
+	db $24, $24, $02
+	db $23, $1c, $02
+	db $23, $23, $00
+	db $23, $21, $02
+	db $24, $28, $00
+	db $24, $28, $00
 
 Subanimation0f:
 	db $4c
-	db $26,$0e,$02
-	db $26,$16,$02
-	db $26,$1c,$00
-	db $27,$0e,$02
-	db $27,$16,$02
-	db $27,$1c,$00
-	db $28,$0e,$02
-	db $28,$16,$02
-	db $28,$1c,$00
-	db $29,$0e,$02
-	db $29,$16,$02
-	db $29,$1c,$00
+	db $26, $0e, $02
+	db $26, $16, $02
+	db $26, $1c, $00
+	db $27, $0e, $02
+	db $27, $16, $02
+	db $27, $1c, $00
+	db $28, $0e, $02
+	db $28, $16, $02
+	db $28, $1c, $00
+	db $29, $0e, $02
+	db $29, $16, $02
+	db $29, $1c, $00
 
 Subanimation16:
 	db $4c
-	db $2a,$05,$00
-	db $2b,$05,$02
-	db $2b,$0c,$02
-	db $2a,$11,$04
-	db $2b,$11,$02
-	db $2b,$17,$02
-	db $2a,$1b,$04
-	db $2b,$1b,$02
-	db $2b,$20,$02
-	db $2a,$2f,$04
-	db $2c,$00,$02
-	db $2c,$00,$00
+	db $2a, $05, $00
+	db $2b, $05, $02
+	db $2b, $0c, $02
+	db $2a, $11, $04
+	db $2b, $11, $02
+	db $2b, $17, $02
+	db $2a, $1b, $04
+	db $2b, $1b, $02
+	db $2b, $20, $02
+	db $2a, $2f, $04
+	db $2c, $00, $02
+	db $2c, $00, $00
 
 Subanimation10:
 	db $88
-	db $2d,$44,$00
-	db $2e,$45,$00
-	db $2d,$46,$00
-	db $2e,$47,$00
-	db $2d,$48,$00
-	db $2e,$49,$00
-	db $2d,$2f,$00
-	db $2e,$1a,$00
+	db $2d, $44, $00
+	db $2e, $45, $00
+	db $2d, $46, $00
+	db $2e, $47, $00
+	db $2d, $48, $00
+	db $2e, $49, $00
+	db $2d, $2f, $00
+	db $2e, $1a, $00
 
 Subanimation31:
 	db $2a
-	db $2f,$46,$00
-	db $2f,$4a,$00
-	db $2f,$4b,$00
-	db $2f,$4c,$00
-	db $2f,$4d,$00
-	db $2f,$4e,$00
-	db $2f,$4f,$00
-	db $2f,$50,$00
-	db $2f,$2e,$00
-	db $2f,$51,$00
+	db $2f, $46, $00
+	db $2f, $4a, $00
+	db $2f, $4b, $00
+	db $2f, $4c, $00
+	db $2f, $4d, $00
+	db $2f, $4e, $00
+	db $2f, $4f, $00
+	db $2f, $50, $00
+	db $2f, $2e, $00
+	db $2f, $51, $00
 
 Subanimation13:
 	db $86
-	db $30,$31,$00
-	db $30,$32,$00
-	db $30,$92,$00
-	db $30,$0e,$00
-	db $30,$0f,$00
-	db $30,$10,$00
+	db $30, $31, $00
+	db $30, $32, $00
+	db $30, $92, $00
+	db $30, $0e, $00
+	db $30, $0f, $00
+	db $30, $10, $00
 
 Subanimation14:
 	db $49
-	db $30,$10,$00
-	db $30,$10,$03
-	db $31,$1c,$04
-	db $31,$21,$04
-	db $31,$26,$00
-	db $30,$10,$02
-	db $31,$1d,$04
-	db $31,$22,$04
-	db $31,$27,$00
+	db $30, $10, $00
+	db $30, $10, $03
+	db $31, $1c, $04
+	db $31, $21, $04
+	db $31, $26, $00
+	db $30, $10, $02
+	db $31, $1d, $04
+	db $31, $22, $04
+	db $31, $27, $00
 
 Subanimation41:
 	db $85
-	db $03,$31,$00
-	db $03,$32,$00
-	db $03,$92,$00
-	db $03,$0e,$00
-	db $03,$10,$00
+	db $03, $31, $00
+	db $03, $32, $00
+	db $03, $92, $00
+	db $03, $0e, $00
+	db $03, $10, $00
 
 Subanimation42:
 	db $43
-	db $48,$08,$00
-	db $49,$08,$00
-	db $5a,$08,$00
+	db $48, $08, $00
+	db $49, $08, $00
+	db $5a, $08, $00
 
 Subanimation15:
 	db $22
-	db $35,$52,$00
-	db $35,$53,$00
+	db $35, $52, $00
+	db $35, $53, $00
 
 Subanimation17:
 	db $44
-	db $36,$54,$00
-	db $36,$55,$00
-	db $37,$56,$00
-	db $37,$57,$00
+	db $36, $54, $00
+	db $36, $55, $00
+	db $37, $56, $00
+	db $37, $57, $00
 
 Subanimation18:
 	db $a4
-	db $36,$54,$00
-	db $36,$55,$00
-	db $37,$56,$00
-	db $37,$57,$00
+	db $36, $54, $00
+	db $36, $55, $00
+	db $37, $56, $00
+	db $37, $57, $00
 
 Subanimation40:
 	db $46
-	db $17,$54,$00
-	db $17,$55,$00
-	db $17,$0e,$00
-	db $17,$56,$00
-	db $17,$57,$00
-	db $17,$13,$00
+	db $17, $54, $00
+	db $17, $55, $00
+	db $17, $0e, $00
+	db $17, $56, $00
+	db $17, $57, $00
+	db $17, $13, $00
 
 Subanimation19:
 	db $8c
-	db $38,$31,$00
-	db $39,$31,$00
-	db $38,$32,$00
-	db $39,$32,$00
-	db $38,$92,$00
-	db $39,$92,$00
-	db $38,$0e,$00
-	db $39,$0e,$00
-	db $38,$0f,$00
-	db $39,$0f,$00
-	db $38,$10,$00
-	db $39,$10,$00
+	db $38, $31, $00
+	db $39, $31, $00
+	db $38, $32, $00
+	db $39, $32, $00
+	db $38, $92, $00
+	db $39, $92, $00
+	db $38, $0e, $00
+	db $39, $0e, $00
+	db $38, $0f, $00
+	db $39, $0f, $00
+	db $38, $10, $00
+	db $39, $10, $00
 
 Subanimation1a:
 	db $50
-	db $3a,$08,$00
-	db $3b,$08,$00
-	db $3c,$08,$00
-	db $3d,$08,$00
-	db $3e,$08,$00
-	db $3f,$08,$00
-	db $3e,$08,$00
-	db $3f,$08,$00
-	db $3a,$0b,$00
-	db $3b,$0b,$00
-	db $3c,$0b,$00
-	db $3d,$0b,$00
-	db $3e,$0b,$00
-	db $3f,$0b,$00
-	db $3e,$0b,$00
-	db $3f,$0b,$00
+	db $3a, $08, $00
+	db $3b, $08, $00
+	db $3c, $08, $00
+	db $3d, $08, $00
+	db $3e, $08, $00
+	db $3f, $08, $00
+	db $3e, $08, $00
+	db $3f, $08, $00
+	db $3a, $0b, $00
+	db $3b, $0b, $00
+	db $3c, $0b, $00
+	db $3d, $0b, $00
+	db $3e, $0b, $00
+	db $3f, $0b, $00
+	db $3e, $0b, $00
+	db $3f, $0b, $00
 
 Subanimation1b:
 	db $84
-	db $40,$31,$00
-	db $40,$32,$00
-	db $40,$92,$00
-	db $40,$15,$00
+	db $40, $31, $00
+	db $40, $32, $00
+	db $40, $92, $00
+	db $40, $15, $00
 
 Subanimation1c:
 	db $43
-	db $41,$58,$00
-	db $41,$59,$00
-	db $41,$21,$00
+	db $41, $58, $00
+	db $41, $59, $00
+	db $41, $21, $00
 
 Subanimation1d:
 	db $af
-	db $24,$9a,$00
-	db $23,$1b,$02
-	db $24,$22,$00
-	db $23,$16,$02
-	db $23,$1d,$02
-	db $24,$98,$00
-	db $25,$2c,$04
-	db $25,$2a,$04
-	db $25,$99,$04
-	db $25,$62,$04
-	db $25,$99,$04
-	db $25,$62,$04
-	db $25,$99,$04
-	db $25,$62,$04
-	db $25,$99,$03
+	db $24, $9a, $00
+	db $23, $1b, $02
+	db $24, $22, $00
+	db $23, $16, $02
+	db $23, $1d, $02
+	db $24, $98, $00
+	db $25, $2c, $04
+	db $25, $2a, $04
+	db $25, $99, $04
+	db $25, $62, $04
+	db $25, $99, $04
+	db $25, $62, $04
+	db $25, $99, $04
+	db $25, $62, $04
+	db $25, $99, $03
 
 Subanimation1e:
 	db $01
-	db $25,$75,$00
+	db $25, $75, $00
 
 Subanimation20:
 	db $42
-	db $42,$07,$00
-	db $43,$07,$00
+	db $42, $07, $00
+	db $43, $07, $00
 
 Subanimation21:
 	db $43
-	db $44,$00,$00
-	db $45,$08,$00
-	db $46,$10,$02
+	db $44, $00, $00
+	db $45, $08, $00
+	db $46, $10, $02
 
 Subanimation22:
 	db $8b
-	db $47,$10,$00
-	db $47,$56,$00
-	db $47,$07,$00
-	db $47,$aa,$00
-	db $47,$ab,$00
-	db $47,$ac,$00
-	db $47,$ad,$00
-	db $47,$ae,$00
-	db $47,$af,$00
-	db $47,$89,$00
-	db $47,$b0,$00
+	db $47, $10, $00
+	db $47, $56, $00
+	db $47, $07, $00
+	db $47, $aa, $00
+	db $47, $ab, $00
+	db $47, $ac, $00
+	db $47, $ad, $00
+	db $47, $ae, $00
+	db $47, $af, $00
+	db $47, $89, $00
+	db $47, $b0, $00
 
 Subanimation2d:
 	db $66
-	db $44,$64,$00
-	db $45,$65,$00
-	db $46,$66,$00
-	db $47,$66,$00
-	db $47,$66,$00
-	db $47,$66,$00
+	db $44, $64, $00
+	db $45, $65, $00
+	db $46, $66, $00
+	db $47, $66, $00
+	db $47, $66, $00
+	db $47, $66, $00
 
 Subanimation39:
 	db $61
-	db $47,$67,$00
+	db $47, $67, $00
 
 Subanimation4e:
 	db $41
-	db $71,$0f,$03
+	db $71, $0f, $03
 
 Subanimation4f:
 	db $47
-	db $71,$0f,$00
-	db $71,$08,$00
-	db $71,$01,$00
-	db $71,$95,$00
-	db $72,$95,$00
-	db $73,$95,$00
-	db $74,$95,$00
+	db $71, $0f, $00
+	db $71, $08, $00
+	db $71, $01, $00
+	db $71, $95, $00
+	db $72, $95, $00
+	db $73, $95, $00
+	db $74, $95, $00
 
 Subanimation50:
 	db $48
-	db $74,$95,$00
-	db $73,$95,$00
-	db $72,$95,$00
-	db $71,$95,$00
-	db $71,$01,$00
-	db $71,$08,$00
-	db $71,$0f,$00
-	db $71,$16,$00
+	db $74, $95, $00
+	db $73, $95, $00
+	db $72, $95, $00
+	db $71, $95, $00
+	db $71, $01, $00
+	db $71, $08, $00
+	db $71, $0f, $00
+	db $71, $16, $00
 
 Subanimation29:
 	db $5d
-	db $48,$0f,$00
-	db $4a,$68,$03
-	db $4b,$2a,$03
-	db $49,$0f,$00
-	db $4a,$68,$03
-	db $4b,$2a,$00
-	db $4c,$6a,$03
-	db $4d,$69,$03
-	db $49,$6b,$00
-	db $4c,$6a,$03
-	db $4d,$69,$00
-	db $4a,$68,$03
-	db $4b,$2a,$03
-	db $49,$6c,$00
-	db $4a,$68,$03
-	db $4b,$2a,$00
-	db $4c,$6a,$03
-	db $4d,$69,$03
-	db $49,$6d,$00
-	db $4c,$6a,$03
-	db $4d,$2a,$00
-	db $4a,$68,$03
-	db $4b,$2a,$03
-	db $49,$0f,$00
-	db $4a,$68,$03
-	db $4b,$2a,$00
-	db $4c,$6a,$03
-	db $4d,$2a,$03
-	db $49,$6b,$00
+	db $48, $0f, $00
+	db $4a, $68, $03
+	db $4b, $2a, $03
+	db $49, $0f, $00
+	db $4a, $68, $03
+	db $4b, $2a, $00
+	db $4c, $6a, $03
+	db $4d, $69, $03
+	db $49, $6b, $00
+	db $4c, $6a, $03
+	db $4d, $69, $00
+	db $4a, $68, $03
+	db $4b, $2a, $03
+	db $49, $6c, $00
+	db $4a, $68, $03
+	db $4b, $2a, $00
+	db $4c, $6a, $03
+	db $4d, $69, $03
+	db $49, $6d, $00
+	db $4c, $6a, $03
+	db $4d, $2a, $00
+	db $4a, $68, $03
+	db $4b, $2a, $03
+	db $49, $0f, $00
+	db $4a, $68, $03
+	db $4b, $2a, $00
+	db $4c, $6a, $03
+	db $4d, $2a, $03
+	db $49, $6b, $00
 
 Subanimation2a:
 	db $44
-	db $4e,$2b,$00
-	db $4f,$2b,$00
-	db $50,$2b,$00
-	db $50,$2b,$00
+	db $4e, $2b, $00
+	db $4f, $2b, $00
+	db $50, $2b, $00
+	db $50, $2b, $00
 
 Subanimation23:
 	db $42
-	db $51,$2d,$00
-	db $51,$6e,$00
+	db $51, $2d, $00
+	db $51, $6e, $00
 
 Subanimation24:
 	db $a2
-	db $51,$2d,$00
-	db $51,$6e,$00
+	db $51, $2d, $00
+	db $51, $6e, $00
 
 Subanimation25:
 	db $62
-	db $52,$71,$00
-	db $52,$72,$00
+	db $52, $71, $00
+	db $52, $72, $00
 
 Subanimation26:
 	db $02
-	db $52,$01,$00
-	db $52,$2c,$00
+	db $52, $01, $00
+	db $52, $2c, $00
 
 Subanimation3a:
 	db $63
-	db $53,$71,$00
-	db $53,$7f,$00
-	db $53,$81,$00
+	db $53, $71, $00
+	db $53, $7f, $00
+	db $53, $81, $00
 
 Subanimation3b:
 	db $03
-	db $53,$01,$00
-	db $53,$15,$00
-	db $53,$2c,$00
+	db $53, $01, $00
+	db $53, $15, $00
+	db $53, $2c, $00
 
 Subanimation27:
 	db $a2
-	db $54,$01,$00
-	db $54,$2c,$00
+	db $54, $01, $00
+	db $54, $2c, $00
 
 Subanimation28:
 	db $23
-	db $55,$73,$03
-	db $56,$73,$03
-	db $57,$73,$00
+	db $55, $73, $03
+	db $56, $73, $03
+	db $57, $73, $00
 
 Subanimation32:
 	db $63
-	db $47,$74,$00
-	db $47,$43,$00
-	db $47,$75,$00
+	db $47, $74, $00
+	db $47, $43, $00
+	db $47, $75, $00
 
 Subanimation33:
 	db $26
-	db $58,$76,$00
-	db $34,$76,$00
-	db $58,$76,$00
-	db $34,$76,$00
-	db $58,$76,$00
-	db $34,$76,$00
+	db $58, $76, $00
+	db $34, $76, $00
+	db $58, $76, $00
+	db $34, $76, $00
+	db $58, $76, $00
+	db $34, $76, $00
 
 Subanimation3c:
 	db $67
-	db $59,$79,$03
-	db $59,$7b,$03
-	db $59,$77,$03
-	db $59,$7a,$03
-	db $59,$78,$03
-	db $59,$7c,$03
-	db $59,$76,$00
+	db $59, $79, $03
+	db $59, $7b, $03
+	db $59, $77, $03
+	db $59, $7a, $03
+	db $59, $78, $03
+	db $59, $7c, $03
+	db $59, $76, $00
 
 Subanimation3d:
 	db $08
-	db $3a,$4d,$00
-	db $3b,$4d,$00
-	db $3c,$4d,$00
-	db $3d,$4d,$00
-	db $3e,$4d,$00
-	db $3f,$4d,$00
-	db $3e,$4d,$00
-	db $3f,$4d,$00
+	db $3a, $4d, $00
+	db $3b, $4d, $00
+	db $3c, $4d, $00
+	db $3d, $4d, $00
+	db $3e, $4d, $00
+	db $3f, $4d, $00
+	db $3e, $4d, $00
+	db $3f, $4d, $00
 
 Subanimation34:
 	db $35
-	db $48,$7d,$00
-	db $49,$7d,$00
-	db $5a,$7d,$00
-	db $48,$30,$00
-	db $49,$30,$00
-	db $5a,$30,$00
-	db $48,$7e,$00
-	db $49,$7e,$00
-	db $5a,$7e,$00
-	db $48,$7f,$00
-	db $49,$7f,$00
-	db $5a,$7f,$00
-	db $48,$80,$00
-	db $49,$80,$00
-	db $5a,$80,$00
-	db $48,$81,$00
-	db $49,$81,$00
-	db $5a,$81,$00
-	db $48,$82,$00
-	db $49,$82,$00
-	db $5a,$82,$00
+	db $48, $7d, $00
+	db $49, $7d, $00
+	db $5a, $7d, $00
+	db $48, $30, $00
+	db $49, $30, $00
+	db $5a, $30, $00
+	db $48, $7e, $00
+	db $49, $7e, $00
+	db $5a, $7e, $00
+	db $48, $7f, $00
+	db $49, $7f, $00
+	db $5a, $7f, $00
+	db $48, $80, $00
+	db $49, $80, $00
+	db $5a, $80, $00
+	db $48, $81, $00
+	db $49, $81, $00
+	db $5a, $81, $00
+	db $48, $82, $00
+	db $49, $82, $00
+	db $5a, $82, $00
 
 Subanimation35:
 	db $24
-	db $5b,$83,$03
-	db $5c,$84,$03
-	db $5d,$85,$03
-	db $5e,$09,$00
+	db $5b, $83, $03
+	db $5c, $84, $03
+	db $5d, $85, $03
+	db $5e, $09, $00
 
 Subanimation36:
 	db $48
-	db $5f,$2a,$00
-	db $5f,$00,$00
-	db $60,$2a,$00
-	db $60,$00,$00
-	db $61,$2a,$00
-	db $61,$00,$00
-	db $62,$2a,$00
-	db $62,$00,$00
+	db $5f, $2a, $00
+	db $5f, $00, $00
+	db $60, $2a, $00
+	db $60, $00, $00
+	db $61, $2a, $00
+	db $61, $00, $00
+	db $62, $2a, $00
+	db $62, $00, $00
 
 Subanimation37:
 	db $2a
-	db $63,$89,$00
-	db $64,$75,$00
-	db $63,$76,$00
-	db $65,$0d,$00
-	db $65,$86,$00
-	db $65,$12,$00
-	db $65,$87,$00
-	db $65,$17,$00
-	db $65,$88,$00
-	db $65,$1a,$00
+	db $63, $89, $00
+	db $64, $75, $00
+	db $63, $76, $00
+	db $65, $0d, $00
+	db $65, $86, $00
+	db $65, $12, $00
+	db $65, $87, $00
+	db $65, $17, $00
+	db $65, $88, $00
+	db $65, $1a, $00
 
 Subanimation38:
 	db $50
-	db $66,$8a,$00
-	db $66,$33,$00
-	db $66,$2e,$00
-	db $67,$24,$03
-	db $66,$01,$04
-	db $66,$10,$04
-	db $66,$1d,$04
-	db $67,$28,$03
-	db $66,$2a,$04
-	db $66,$0e,$04
-	db $66,$1b,$04
-	db $67,$26,$03
-	db $66,$03,$04
-	db $66,$12,$04
-	db $66,$1e,$04
-	db $67,$29,$00
+	db $66, $8a, $00
+	db $66, $33, $00
+	db $66, $2e, $00
+	db $67, $24, $03
+	db $66, $01, $04
+	db $66, $10, $04
+	db $66, $1d, $04
+	db $67, $28, $03
+	db $66, $2a, $04
+	db $66, $0e, $04
+	db $66, $1b, $04
+	db $67, $26, $03
+	db $66, $03, $04
+	db $66, $12, $04
+	db $66, $1e, $04
+	db $67, $29, $00
 
 Subanimation3e:
 	db $92
-	db $02,$31,$00
-	db $34,$31,$00
-	db $02,$31,$00
-	db $02,$32,$00
-	db $34,$32,$00
-	db $02,$32,$00
-	db $02,$92,$00
-	db $34,$92,$00
-	db $02,$92,$00
-	db $02,$0e,$00
-	db $34,$0e,$00
-	db $02,$0e,$00
-	db $02,$0f,$00
-	db $34,$0f,$00
-	db $02,$0f,$00
-	db $02,$10,$00
-	db $34,$10,$00
-	db $02,$10,$00
+	db $02, $31, $00
+	db $34, $31, $00
+	db $02, $31, $00
+	db $02, $32, $00
+	db $34, $32, $00
+	db $02, $32, $00
+	db $02, $92, $00
+	db $34, $92, $00
+	db $02, $92, $00
+	db $02, $0e, $00
+	db $34, $0e, $00
+	db $02, $0e, $00
+	db $02, $0f, $00
+	db $34, $0f, $00
+	db $02, $0f, $00
+	db $02, $10, $00
+	db $34, $10, $00
+	db $02, $10, $00
 
 Subanimation3f:
 	db $72
-	db $68,$4b,$00
-	db $68,$8c,$00
-	db $68,$20,$00
-	db $68,$1c,$00
-	db $68,$19,$00
-	db $68,$14,$00
-	db $68,$76,$00
-	db $68,$8d,$00
-	db $68,$15,$00
-	db $68,$10,$00
-	db $68,$0c,$00
-	db $68,$06,$00
-	db $68,$8e,$00
-	db $68,$8f,$00
-	db $68,$90,$00
-	db $68,$26,$00
-	db $68,$23,$00
-	db $68,$1f,$00
+	db $68, $4b, $00
+	db $68, $8c, $00
+	db $68, $20, $00
+	db $68, $1c, $00
+	db $68, $19, $00
+	db $68, $14, $00
+	db $68, $76, $00
+	db $68, $8d, $00
+	db $68, $15, $00
+	db $68, $10, $00
+	db $68, $0c, $00
+	db $68, $06, $00
+	db $68, $8e, $00
+	db $68, $8f, $00
+	db $68, $90, $00
+	db $68, $26, $00
+	db $68, $23, $00
+	db $68, $1f, $00
 
 Subanimation44:
 	db $2c
-	db $69,$4b,$00
-	db $69,$8c,$00
-	db $69,$20,$00
-	db $69,$1c,$00
-	db $69,$19,$00
-	db $69,$14,$00
-	db $69,$76,$00
-	db $69,$8d,$00
-	db $69,$15,$00
-	db $69,$10,$00
-	db $69,$0c,$00
-	db $69,$06,$00
+	db $69, $4b, $00
+	db $69, $8c, $00
+	db $69, $20, $00
+	db $69, $1c, $00
+	db $69, $19, $00
+	db $69, $14, $00
+	db $69, $76, $00
+	db $69, $8d, $00
+	db $69, $15, $00
+	db $69, $10, $00
+	db $69, $0c, $00
+	db $69, $06, $00
 
 Subanimation43:
 	db $a3
-	db $6a,$07,$00
-	db $6b,$0f,$00
-	db $6c,$17,$00
+	db $6a, $07, $00
+	db $6b, $0f, $00
+	db $6c, $17, $00
 
 Subanimation45:
 	db $24
-	db $6d,$8b,$00
-	db $6d,$84,$00
-	db $6d,$63,$00
-	db $6d,$8c,$00
+	db $6d, $8b, $00
+	db $6d, $84, $00
+	db $6d, $63, $00
+	db $6d, $8c, $00
 
 Subanimation46:
 	db $26
-	db $6d,$8b,$00
-	db $6d,$84,$00
-	db $6d,$63,$00
-	db $6d,$8c,$00
-	db $6d,$0a,$00
-	db $6d,$89,$00
+	db $6d, $8b, $00
+	db $6d, $84, $00
+	db $6d, $63, $00
+	db $6d, $8c, $00
+	db $6d, $0a, $00
+	db $6d, $89, $00
 
 Subanimation47:
 	db $23
-	db $06,$82,$00
-	db $07,$82,$00
-	db $08,$96,$00
+	db $06, $82, $00
+	db $07, $82, $00
+	db $08, $96, $00
 
 Subanimation48:
 	db $06
-	db $03,$41,$04
-	db $03,$48,$04
-	db $04,$48,$04
-	db $03,$48,$04
-	db $05,$48,$04
-	db $03,$48,$03
+	db $03, $41, $04
+	db $03, $48, $04
+	db $04, $48, $04
+	db $03, $48, $04
+	db $05, $48, $04
+	db $03, $48, $03
 
 Subanimation49:
 	db $04
-	db $04,$48,$04
-	db $03,$48,$04
-	db $05,$48,$04
-	db $03,$48,$03
+	db $04, $48, $04
+	db $03, $48, $04
+	db $05, $48, $04
+	db $03, $48, $03
 
 Subanimation4a:
 	db $01
-	db $04,$84,$03
+	db $04, $84, $03
 
 Subanimation4b:
 	db $03
-	db $06,$72,$00
-	db $07,$72,$00
-	db $08,$72,$00
+	db $06, $72, $00
+	db $07, $72, $00
+	db $08, $72, $00
 
 Subanimation4c:
 	db $68
-	db $6f,$30,$00
-	db $6e,$30,$00
-	db $70,$30,$00
-	db $6e,$30,$00
-	db $6f,$30,$00
-	db $6e,$30,$00
-	db $70,$30,$00
-	db $6e,$30,$00
+	db $6f, $30, $00
+	db $6e, $30, $00
+	db $70, $30, $00
+	db $6e, $30, $00
+	db $6f, $30, $00
+	db $6e, $30, $00
+	db $70, $30, $00
+	db $6e, $30, $00
 
 Subanimation4d:
 	db $26
-	db $32,$4b,$00
-	db $33,$4f,$00
-	db $32,$20,$00
-	db $33,$16,$00
-	db $32,$19,$00
-	db $33,$0d,$00
+	db $32, $4b, $00
+	db $33, $4f, $00
+	db $32, $20, $00
+	db $33, $16, $00
+	db $32, $19, $00
+	db $33, $0d, $00
 
 Subanimation51:
 	db $a6
-	db $76,$1b,$00
-	db $34,$1b,$00
-	db $76,$1b,$00
-	db $34,$1b,$00
-	db $76,$1b,$00
-	db $34,$1b,$00
+	db $76, $1b, $00
+	db $34, $1b, $00
+	db $76, $1b, $00
+	db $34, $1b, $00
+	db $76, $1b, $00
+	db $34, $1b, $00
 
 Subanimation52:
 	db $47
-	db $77,$25,$00
-	db $77,$9b,$00
-	db $77,$1a,$00
-	db $77,$9c,$00
-	db $77,$2f,$00
-	db $77,$50,$00
-	db $77,$8c,$00
+	db $77, $25, $00
+	db $77, $9b, $00
+	db $77, $1a, $00
+	db $77, $9c, $00
+	db $77, $2f, $00
+	db $77, $50, $00
+	db $77, $8c, $00
 
 Subanimation53:
 	db $0c
-	db $78,$30,$00
-	db $78,$a2,$00
-	db $78,$93,$00
-	db $78,$61,$00
-	db $78,$73,$00
-	db $78,$a7,$00
-	db $78,$33,$00
-	db $78,$a8,$00
-	db $78,$0e,$00
-	db $78,$a9,$00
-	db $78,$34,$00
-	db $01,$9e,$00
+	db $78, $30, $00
+	db $78, $a2, $00
+	db $78, $93, $00
+	db $78, $61, $00
+	db $78, $73, $00
+	db $78, $a7, $00
+	db $78, $33, $00
+	db $78, $a8, $00
+	db $78, $0e, $00
+	db $78, $a9, $00
+	db $78, $34, $00
+	db $01, $9e, $00
 
 Subanimation54:
 	db $0b
-	db $79,$30,$00
-	db $79,$a2,$00
-	db $79,$93,$00
-	db $79,$61,$00
-	db $79,$73,$00
-	db $79,$a7,$00
-	db $79,$33,$00
-	db $79,$a8,$00
-	db $79,$0e,$00
-	db $79,$a9,$00
-	db $79,$34,$00
+	db $79, $30, $00
+	db $79, $a2, $00
+	db $79, $93, $00
+	db $79, $61, $00
+	db $79, $73, $00
+	db $79, $a7, $00
+	db $79, $33, $00
+	db $79, $a8, $00
+	db $79, $0e, $00
+	db $79, $a9, $00
+	db $79, $34, $00
 
 FrameBlockPointers:
 	dw FrameBlock00
@@ -2339,1290 +2339,1290 @@
 ; fourth byte = tile properties (xflip/yflip/etc.)
 FrameBlock01:
 	db $09
-	db $00,$00,$2c,$00
-	db $00,$08,$2d,$00
-	db $00,$10,$2c,$20
-	db $08,$00,$3c,$00
-	db $08,$08,$3d,$00
-	db $08,$10,$3c,$20
-	db $10,$00,$2c,$40
-	db $10,$08,$2d,$40
-	db $10,$10,$2c,$60
+	db $00, $00, $2c, $00
+	db $00, $08, $2d, $00
+	db $00, $10, $2c, $20
+	db $08, $00, $3c, $00
+	db $08, $08, $3d, $00
+	db $08, $10, $3c, $20
+	db $10, $00, $2c, $40
+	db $10, $08, $2d, $40
+	db $10, $10, $2c, $60
 
 FrameBlock02:
 	db $10
-	db $00,$00,$20,$00
-	db $00,$08,$21,$00
-	db $00,$10,$21,$20
-	db $00,$18,$20,$20
-	db $08,$00,$30,$00
-	db $08,$08,$31,$00
-	db $08,$10,$31,$20
-	db $08,$18,$30,$20
-	db $10,$00,$30,$40
-	db $10,$08,$31,$40
-	db $10,$10,$31,$60
-	db $10,$18,$30,$60
-	db $18,$00,$20,$40
-	db $18,$08,$21,$40
-	db $18,$10,$21,$60
-	db $18,$18,$20,$60
+	db $00, $00, $20, $00
+	db $00, $08, $21, $00
+	db $00, $10, $21, $20
+	db $00, $18, $20, $20
+	db $08, $00, $30, $00
+	db $08, $08, $31, $00
+	db $08, $10, $31, $20
+	db $08, $18, $30, $20
+	db $10, $00, $30, $40
+	db $10, $08, $31, $40
+	db $10, $10, $31, $60
+	db $10, $18, $30, $60
+	db $18, $00, $20, $40
+	db $18, $08, $21, $40
+	db $18, $10, $21, $60
+	db $18, $18, $20, $60
 
 FrameBlock03:
 	db $04
-	db $00,$00,$02,$00
-	db $00,$08,$02,$20
-	db $08,$00,$12,$00
-	db $08,$08,$12,$20
+	db $00, $00, $02, $00
+	db $00, $08, $02, $20
+	db $08, $00, $12, $00
+	db $08, $08, $12, $20
 
 FrameBlock04:
 	db $04
-	db $00,$00,$06,$00
-	db $00,$08,$07,$00
-	db $08,$00,$16,$00
-	db $08,$08,$17,$00
+	db $00, $00, $06, $00
+	db $00, $08, $07, $00
+	db $08, $00, $16, $00
+	db $08, $08, $17, $00
 
 FrameBlock05:
 	db $04
-	db $00,$00,$07,$20
-	db $00,$08,$06,$20
-	db $08,$00,$17,$20
-	db $08,$08,$16,$20
+	db $00, $00, $07, $20
+	db $00, $08, $06, $20
+	db $08, $00, $17, $20
+	db $08, $08, $16, $20
 
 FrameBlock06:
 	db $0c
-	db $00,$08,$23,$00
-	db $08,$00,$32,$00
-	db $08,$08,$33,$00
-	db $00,$10,$23,$20
-	db $08,$10,$33,$20
-	db $08,$18,$32,$20
-	db $10,$00,$32,$40
-	db $10,$08,$33,$40
-	db $18,$08,$23,$40
-	db $10,$10,$33,$60
-	db $10,$18,$32,$60
-	db $18,$10,$23,$60
+	db $00, $08, $23, $00
+	db $08, $00, $32, $00
+	db $08, $08, $33, $00
+	db $00, $10, $23, $20
+	db $08, $10, $33, $20
+	db $08, $18, $32, $20
+	db $10, $00, $32, $40
+	db $10, $08, $33, $40
+	db $18, $08, $23, $40
+	db $10, $10, $33, $60
+	db $10, $18, $32, $60
+	db $18, $10, $23, $60
 
 FrameBlock07:
 	db $10
-	db $00,$00,$20,$00
-	db $00,$08,$21,$00
-	db $08,$00,$30,$00
-	db $08,$08,$31,$00
-	db $00,$10,$21,$20
-	db $00,$18,$20,$20
-	db $08,$10,$31,$20
-	db $08,$18,$30,$20
-	db $10,$00,$30,$40
-	db $10,$08,$31,$40
-	db $18,$00,$20,$40
-	db $18,$08,$21,$40
-	db $10,$10,$31,$60
-	db $10,$18,$30,$60
-	db $18,$10,$21,$60
-	db $18,$18,$20,$60
+	db $00, $00, $20, $00
+	db $00, $08, $21, $00
+	db $08, $00, $30, $00
+	db $08, $08, $31, $00
+	db $00, $10, $21, $20
+	db $00, $18, $20, $20
+	db $08, $10, $31, $20
+	db $08, $18, $30, $20
+	db $10, $00, $30, $40
+	db $10, $08, $31, $40
+	db $18, $00, $20, $40
+	db $18, $08, $21, $40
+	db $10, $10, $31, $60
+	db $10, $18, $30, $60
+	db $18, $10, $21, $60
+	db $18, $18, $20, $60
 
 FrameBlock08:
 	db $10
-	db $00,$00,$20,$00
-	db $00,$08,$21,$00
-	db $08,$00,$30,$00
-	db $08,$08,$31,$00
-	db $00,$18,$21,$20
-	db $00,$20,$20,$20
-	db $08,$18,$31,$20
-	db $08,$20,$30,$20
-	db $18,$00,$30,$40
-	db $18,$08,$31,$40
-	db $20,$00,$20,$40
-	db $20,$08,$21,$40
-	db $18,$18,$31,$60
-	db $18,$20,$30,$60
-	db $20,$18,$21,$60
-	db $20,$20,$20,$60
+	db $00, $00, $20, $00
+	db $00, $08, $21, $00
+	db $08, $00, $30, $00
+	db $08, $08, $31, $00
+	db $00, $18, $21, $20
+	db $00, $20, $20, $20
+	db $08, $18, $31, $20
+	db $08, $20, $30, $20
+	db $18, $00, $30, $40
+	db $18, $08, $31, $40
+	db $20, $00, $20, $40
+	db $20, $08, $21, $40
+	db $18, $18, $31, $60
+	db $18, $20, $30, $60
+	db $20, $18, $21, $60
+	db $20, $20, $20, $60
 
 FrameBlock09:
 	db $0c
-	db $00,$00,$24,$00
-	db $00,$08,$25,$00
-	db $08,$00,$34,$00
-	db $00,$18,$25,$20
-	db $00,$20,$24,$20
-	db $08,$20,$34,$20
-	db $18,$00,$34,$40
-	db $20,$00,$24,$40
-	db $20,$08,$25,$40
-	db $18,$20,$34,$60
-	db $20,$18,$25,$60
-	db $20,$20,$24,$60
+	db $00, $00, $24, $00
+	db $00, $08, $25, $00
+	db $08, $00, $34, $00
+	db $00, $18, $25, $20
+	db $00, $20, $24, $20
+	db $08, $20, $34, $20
+	db $18, $00, $34, $40
+	db $20, $00, $24, $40
+	db $20, $08, $25, $40
+	db $18, $20, $34, $60
+	db $20, $18, $25, $60
+	db $20, $20, $24, $60
 
 FrameBlock0a:
 	db $0c
-	db $00,$00,$24,$00
-	db $00,$08,$25,$00
-	db $08,$00,$34,$00
-	db $00,$20,$25,$20
-	db $00,$28,$24,$20
-	db $08,$28,$34,$20
-	db $20,$00,$34,$40
-	db $28,$00,$24,$40
-	db $28,$08,$25,$40
-	db $20,$28,$34,$60
-	db $28,$20,$25,$60
-	db $28,$28,$24,$60
+	db $00, $00, $24, $00
+	db $00, $08, $25, $00
+	db $08, $00, $34, $00
+	db $00, $20, $25, $20
+	db $00, $28, $24, $20
+	db $08, $28, $34, $20
+	db $20, $00, $34, $40
+	db $28, $00, $24, $40
+	db $28, $08, $25, $40
+	db $20, $28, $34, $60
+	db $28, $20, $25, $60
+	db $28, $28, $24, $60
 
 FrameBlock0b:
 	db $04
-	db $00,$00,$05,$00
-	db $00,$08,$05,$20
-	db $08,$00,$15,$00
-	db $08,$08,$15,$20
+	db $00, $00, $05, $00
+	db $00, $08, $05, $20
+	db $08, $00, $15, $00
+	db $08, $08, $15, $20
 
 FrameBlock0c:
 	db $04
-	db $00,$00,$04,$00
-	db $00,$08,$04,$20
-	db $08,$00,$14,$00
-	db $08,$08,$14,$20
+	db $00, $00, $04, $00
+	db $00, $08, $04, $20
+	db $08, $00, $14, $00
+	db $08, $08, $14, $20
 
 FrameBlock0d:
 	db $08
-	db $00,$00,$0c,$00
-	db $00,$08,$0d,$00
-	db $08,$00,$1c,$00
-	db $08,$08,$1d,$00
-	db $10,$00,$1d,$60
-	db $10,$08,$1c,$60
-	db $18,$00,$0d,$60
-	db $18,$08,$0c,$60
+	db $00, $00, $0c, $00
+	db $00, $08, $0d, $00
+	db $08, $00, $1c, $00
+	db $08, $08, $1d, $00
+	db $10, $00, $1d, $60
+	db $10, $08, $1c, $60
+	db $18, $00, $0d, $60
+	db $18, $08, $0c, $60
 
 FrameBlock0e:
 	db $04
-	db $20,$00,$0c,$00
-	db $20,$08,$0d,$00
-	db $28,$00,$1c,$00
-	db $28,$08,$1d,$00
+	db $20, $00, $0c, $00
+	db $20, $08, $0d, $00
+	db $28, $00, $1c, $00
+	db $28, $08, $1d, $00
 
 FrameBlock0f:
 	db $04
-	db $30,$00,$1d,$60
-	db $30,$08,$1c,$60
-	db $38,$00,$0d,$60
-	db $38,$08,$0c,$60
+	db $30, $00, $1d, $60
+	db $30, $08, $1c, $60
+	db $38, $00, $0d, $60
+	db $38, $08, $0c, $60
 
 FrameBlock10:
 	db $08
-	db $00,$00,$0e,$00
-	db $00,$08,$0f,$00
-	db $08,$00,$1e,$00
-	db $08,$08,$1f,$00
-	db $00,$10,$0f,$20
-	db $00,$18,$0e,$20
-	db $08,$10,$1f,$20
-	db $08,$18,$1e,$20
+	db $00, $00, $0e, $00
+	db $00, $08, $0f, $00
+	db $08, $00, $1e, $00
+	db $08, $08, $1f, $00
+	db $00, $10, $0f, $20
+	db $00, $18, $0e, $20
+	db $08, $10, $1f, $20
+	db $08, $18, $1e, $20
 
 FrameBlock11:
 	db $08
-	db $00,$00,$0e,$00
-	db $00,$08,$0f,$00
-	db $08,$00,$1e,$00
-	db $08,$08,$1f,$00
-	db $00,$20,$0f,$20
-	db $00,$28,$0e,$20
-	db $08,$20,$1f,$20
-	db $08,$28,$1e,$20
+	db $00, $00, $0e, $00
+	db $00, $08, $0f, $00
+	db $08, $00, $1e, $00
+	db $08, $08, $1f, $00
+	db $00, $20, $0f, $20
+	db $00, $28, $0e, $20
+	db $08, $20, $1f, $20
+	db $08, $28, $1e, $20
 
 FrameBlock12:
 	db $03
-	db $00,$00,$37,$00
-	db $08,$10,$37,$00
-	db $00,$20,$37,$00
+	db $00, $00, $37, $00
+	db $08, $10, $37, $00
+	db $00, $20, $37, $00
 
 FrameBlock13:
 	db $04
-	db $00,$00,$36,$00
-	db $00,$08,$36,$20
-	db $08,$00,$36,$40
-	db $08,$08,$36,$60
+	db $00, $00, $36, $00
+	db $00, $08, $36, $20
+	db $08, $00, $36, $40
+	db $08, $08, $36, $60
 
 FrameBlock14:
 	db $08
-	db $00,$10,$28,$00
-	db $00,$18,$28,$20
-	db $08,$10,$38,$00
-	db $08,$18,$38,$20
-	db $00,$20,$36,$00
-	db $00,$28,$36,$20
-	db $08,$20,$36,$40
-	db $08,$28,$36,$60
+	db $00, $10, $28, $00
+	db $00, $18, $28, $20
+	db $08, $10, $38, $00
+	db $08, $18, $38, $20
+	db $00, $20, $36, $00
+	db $00, $28, $36, $20
+	db $08, $20, $36, $40
+	db $08, $28, $36, $60
 
 FrameBlock15:
 	db $0c
-	db $00,$00,$28,$00
-	db $00,$08,$28,$20
-	db $08,$00,$38,$00
-	db $08,$08,$38,$20
-	db $00,$10,$29,$00
-	db $00,$18,$29,$20
-	db $08,$10,$39,$00
-	db $08,$18,$39,$20
-	db $00,$20,$28,$00
-	db $00,$28,$28,$20
-	db $08,$20,$38,$00
-	db $08,$28,$38,$20
+	db $00, $00, $28, $00
+	db $00, $08, $28, $20
+	db $08, $00, $38, $00
+	db $08, $08, $38, $20
+	db $00, $10, $29, $00
+	db $00, $18, $29, $20
+	db $08, $10, $39, $00
+	db $08, $18, $39, $20
+	db $00, $20, $28, $00
+	db $00, $28, $28, $20
+	db $08, $20, $38, $00
+	db $08, $28, $38, $20
 
 FrameBlock16:
 	db $08
-	db $00,$00,$29,$00
-	db $00,$08,$29,$20
-	db $08,$00,$39,$00
-	db $08,$08,$39,$20
-	db $00,$20,$29,$00
-	db $00,$28,$29,$20
-	db $08,$20,$39,$00
-	db $08,$28,$39,$20
+	db $00, $00, $29, $00
+	db $00, $08, $29, $20
+	db $08, $00, $39, $00
+	db $08, $08, $39, $20
+	db $00, $20, $29, $00
+	db $00, $28, $29, $20
+	db $08, $20, $39, $00
+	db $08, $28, $39, $20
 
 FrameBlock17:
 	db $04
-	db $00,$00,$08,$00
-	db $00,$08,$09,$00
-	db $08,$00,$18,$00
-	db $08,$08,$19,$00
+	db $00, $00, $08, $00
+	db $00, $08, $09, $00
+	db $08, $00, $18, $00
+	db $08, $08, $19, $00
 
 FrameBlock18:
 	db $01
-	db $18,$00,$45,$60
+	db $18, $00, $45, $60
 
 FrameBlock19:
 	db $02
-	db $18,$08,$45,$00
-	db $10,$08,$46,$60
+	db $18, $08, $45, $00
+	db $10, $08, $46, $60
 
 FrameBlock1a:
 	db $02
-	db $10,$10,$45,$60
-	db $18,$10,$46,$00
+	db $10, $10, $45, $60
+	db $18, $10, $46, $00
 
 FrameBlock1b:
 	db $02
-	db $10,$18,$45,$00
-	db $08,$18,$46,$60
+	db $10, $18, $45, $00
+	db $08, $18, $46, $60
 
 FrameBlock1c:
 	db $02
-	db $08,$20,$45,$60
-	db $10,$20,$46,$00
+	db $08, $20, $45, $60
+	db $10, $20, $46, $00
 
 FrameBlock1d:
 	db $02
-	db $08,$28,$45,$00
-	db $00,$28,$46,$60
+	db $08, $28, $45, $00
+	db $00, $28, $46, $60
 
 FrameBlock1e:
 	db $02
-	db $00,$30,$45,$60
-	db $08,$30,$46,$00
+	db $00, $30, $45, $60
+	db $08, $30, $46, $00
 
 FrameBlock75:
 	db $04
-	db $00,$00,$43,$00
-	db $00,$08,$43,$20
-	db $08,$00,$22,$00
-	db $08,$08,$43,$60
+	db $00, $00, $43, $00
+	db $00, $08, $43, $20
+	db $08, $00, $22, $00
+	db $08, $08, $43, $60
 
 FrameBlock1f:
 	db $02
-	db $00,$00,$03,$00
-	db $00,$30,$03,$20
+	db $00, $00, $03, $00
+	db $00, $30, $03, $20
 
 FrameBlock20:
 	db $06
-	db $00,$00,$03,$00
-	db $00,$30,$03,$20
-	db $08,$08,$03,$00
-	db $08,$28,$03,$20
-	db $08,$00,$13,$00
-	db $08,$30,$13,$20
+	db $00, $00, $03, $00
+	db $00, $30, $03, $20
+	db $08, $08, $03, $00
+	db $08, $28, $03, $20
+	db $08, $00, $13, $00
+	db $08, $30, $13, $20
 
 FrameBlock21:
 	db $0c
-	db $00,$00,$03,$00
-	db $00,$30,$03,$20
-	db $08,$08,$03,$00
-	db $08,$28,$03,$20
-	db $08,$00,$13,$00
-	db $08,$30,$13,$20
-	db $10,$10,$03,$00
-	db $10,$20,$03,$20
-	db $10,$08,$13,$00
-	db $10,$28,$13,$20
-	db $10,$00,$03,$00
-	db $10,$30,$03,$20
+	db $00, $00, $03, $00
+	db $00, $30, $03, $20
+	db $08, $08, $03, $00
+	db $08, $28, $03, $20
+	db $08, $00, $13, $00
+	db $08, $30, $13, $20
+	db $10, $10, $03, $00
+	db $10, $20, $03, $20
+	db $10, $08, $13, $00
+	db $10, $28, $13, $20
+	db $10, $00, $03, $00
+	db $10, $30, $03, $20
 
 FrameBlock22:
 	db $13
-	db $00,$00,$03,$00
-	db $08,$00,$13,$00
-	db $10,$00,$03,$00
-	db $18,$00,$13,$00
-	db $08,$08,$03,$00
-	db $10,$08,$13,$00
-	db $18,$08,$03,$00
-	db $10,$10,$03,$00
-	db $18,$10,$13,$00
-	db $18,$18,$03,$00
-	db $10,$20,$03,$20
-	db $18,$20,$13,$20
-	db $08,$28,$03,$20
-	db $10,$28,$13,$20
-	db $18,$28,$03,$20
-	db $00,$30,$03,$20
-	db $08,$30,$13,$20
-	db $10,$30,$03,$20
-	db $18,$30,$13,$20
+	db $00, $00, $03, $00
+	db $08, $00, $13, $00
+	db $10, $00, $03, $00
+	db $18, $00, $13, $00
+	db $08, $08, $03, $00
+	db $10, $08, $13, $00
+	db $18, $08, $03, $00
+	db $10, $10, $03, $00
+	db $18, $10, $13, $00
+	db $18, $18, $03, $00
+	db $10, $20, $03, $20
+	db $18, $20, $13, $20
+	db $08, $28, $03, $20
+	db $10, $28, $13, $20
+	db $18, $28, $03, $20
+	db $00, $30, $03, $20
+	db $08, $30, $13, $20
+	db $10, $30, $03, $20
+	db $18, $30, $13, $20
 
 FrameBlock23:
 	db $04
-	db $00,$00,$0a,$00
-	db $00,$08,$0b,$00
-	db $08,$00,$1a,$00
-	db $08,$08,$1b,$00
+	db $00, $00, $0a, $00
+	db $00, $08, $0b, $00
+	db $08, $00, $1a, $00
+	db $08, $08, $1b, $00
 
 FrameBlock24:
 	db $02
-	db $08,$00,$0a,$00
-	db $08,$08,$0b,$00
+	db $08, $00, $0a, $00
+	db $08, $08, $0b, $00
 
 FrameBlock25:
 	db $0c
-	db $10,$00,$0a,$00
-	db $10,$08,$0b,$00
-	db $18,$00,$1a,$00
-	db $18,$08,$1b,$00
-	db $00,$10,$0a,$00
-	db $00,$18,$0b,$00
-	db $08,$10,$1a,$00
-	db $08,$18,$1b,$00
-	db $08,$20,$0a,$00
-	db $08,$28,$0b,$00
-	db $10,$20,$1a,$00
-	db $10,$28,$1b,$00
+	db $10, $00, $0a, $00
+	db $10, $08, $0b, $00
+	db $18, $00, $1a, $00
+	db $18, $08, $1b, $00
+	db $00, $10, $0a, $00
+	db $00, $18, $0b, $00
+	db $08, $10, $1a, $00
+	db $08, $18, $1b, $00
+	db $08, $20, $0a, $00
+	db $08, $28, $0b, $00
+	db $10, $20, $1a, $00
+	db $10, $28, $1b, $00
 
 FrameBlock26:
 	db $04
-	db $00,$10,$44,$00
-	db $00,$18,$44,$20
-	db $08,$10,$44,$40
-	db $08,$18,$44,$60
+	db $00, $10, $44, $00
+	db $00, $18, $44, $20
+	db $08, $10, $44, $40
+	db $08, $18, $44, $60
 
 FrameBlock27:
 	db $05
-	db $08,$08,$44,$00
-	db $08,$10,$44,$20
-	db $10,$08,$44,$40
-	db $10,$10,$44,$60
-	db $00,$18,$47,$00
+	db $08, $08, $44, $00
+	db $08, $10, $44, $20
+	db $10, $08, $44, $40
+	db $10, $10, $44, $60
+	db $00, $18, $47, $00
 
 FrameBlock28:
 	db $06
-	db $10,$00,$44,$00
-	db $10,$08,$44,$20
-	db $18,$00,$44,$40
-	db $18,$08,$44,$60
-	db $08,$10,$47,$00
-	db $02,$16,$47,$00
+	db $10, $00, $44, $00
+	db $10, $08, $44, $20
+	db $18, $00, $44, $40
+	db $18, $08, $44, $60
+	db $08, $10, $47, $00
+	db $02, $16, $47, $00
 
 FrameBlock29:
 	db $04
-	db $18,$00,$47,$00
-	db $12,$06,$47,$00
-	db $0c,$0c,$47,$00
-	db $06,$12,$47,$00
+	db $18, $00, $47, $00
+	db $12, $06, $47, $00
+	db $0c, $0c, $47, $00
+	db $06, $12, $47, $00
 
 FrameBlock2a:
 	db $04
-	db $00,$00,$44,$00
-	db $00,$08,$44,$20
-	db $08,$00,$44,$40
-	db $08,$08,$44,$60
+	db $00, $00, $44, $00
+	db $00, $08, $44, $20
+	db $08, $00, $44, $40
+	db $08, $08, $44, $60
 
 FrameBlock2b:
 	db $02
-	db $06,$02,$47,$00
-	db $00,$08,$47,$00
+	db $06, $02, $47, $00
+	db $00, $08, $47, $00
 
 FrameBlock2c:
 	db $01
-	db $a0,$00,$4d,$00
+	db $a0, $00, $4d, $00
 
 FrameBlock2d:
 	db $08
-	db $00,$00,$26,$00
-	db $00,$08,$27,$00
-	db $08,$00,$36,$00
-	db $08,$08,$37,$00
-	db $10,$00,$28,$00
-	db $10,$08,$29,$00
-	db $18,$00,$38,$00
-	db $18,$08,$39,$00
+	db $00, $00, $26, $00
+	db $00, $08, $27, $00
+	db $08, $00, $36, $00
+	db $08, $08, $37, $00
+	db $10, $00, $28, $00
+	db $10, $08, $29, $00
+	db $18, $00, $38, $00
+	db $18, $08, $39, $00
 
 FrameBlock2e:
 	db $08
-	db $00,$00,$27,$20
-	db $00,$08,$26,$20
-	db $08,$00,$37,$20
-	db $08,$08,$36,$20
-	db $10,$00,$29,$20
-	db $10,$08,$28,$20
-	db $18,$00,$39,$20
-	db $18,$08,$38,$20
+	db $00, $00, $27, $20
+	db $00, $08, $26, $20
+	db $08, $00, $37, $20
+	db $08, $08, $36, $20
+	db $10, $00, $29, $20
+	db $10, $08, $28, $20
+	db $18, $00, $39, $20
+	db $18, $08, $38, $20
 
 FrameBlock2f:
 	db $04
-	db $00,$00,$0c,$00
-	db $00,$08,$0d,$00
-	db $08,$00,$0c,$40
-	db $08,$08,$0d,$40
+	db $00, $00, $0c, $00
+	db $00, $08, $0d, $00
+	db $08, $00, $0c, $40
+	db $08, $08, $0d, $40
 
 FrameBlock30:
 	db $04
-	db $00,$00,$44,$00
-	db $00,$08,$44,$20
-	db $08,$00,$44,$40
-	db $08,$08,$44,$60
+	db $00, $00, $44, $00
+	db $00, $08, $44, $20
+	db $08, $00, $44, $40
+	db $08, $08, $44, $60
 
 FrameBlock31:
 	db $01
-	db $00,$00,$45,$00
+	db $00, $00, $45, $00
 
 FrameBlock32:
 	db $07
-	db $00,$00,$4d,$00
-	db $00,$08,$2f,$00
-	db $00,$10,$4d,$20
-	db $08,$00,$4e,$00
-	db $08,$08,$07,$00
-	db $08,$10,$4e,$20
-	db $10,$08,$3f,$00
+	db $00, $00, $4d, $00
+	db $00, $08, $2f, $00
+	db $00, $10, $4d, $20
+	db $08, $00, $4e, $00
+	db $08, $08, $07, $00
+	db $08, $10, $4e, $20
+	db $10, $08, $3f, $00
 
 FrameBlock33:
 	db $07
-	db $00,$08,$3f,$40
-	db $08,$00,$4e,$40
-	db $08,$08,$07,$40
-	db $08,$10,$4e,$60
-	db $10,$00,$4d,$40
-	db $10,$08,$2f,$40
-	db $10,$10,$4d,$60
+	db $00, $08, $3f, $40
+	db $08, $00, $4e, $40
+	db $08, $08, $07, $40
+	db $08, $10, $4e, $60
+	db $10, $00, $4d, $40
+	db $10, $08, $2f, $40
+	db $10, $10, $4d, $60
 
 FrameBlock34:
 	db $01
-	db $a0,$00,$00,$10
+	db $a0, $00, $00, $10
 
 FrameBlock35:
 	db $06
-	db $00,$00,$2a,$00
-	db $00,$08,$2b,$00
-	db $08,$00,$3a,$00
-	db $10,$00,$3a,$40
-	db $18,$00,$2a,$40
-	db $18,$08,$2b,$40
+	db $00, $00, $2a, $00
+	db $00, $08, $2b, $00
+	db $08, $00, $3a, $00
+	db $10, $00, $3a, $40
+	db $18, $00, $2a, $40
+	db $18, $08, $2b, $40
 
 FrameBlock36:
 	db $04
-	db $00,$00,$00,$00
-	db $00,$08,$01,$00
-	db $08,$00,$10,$00
-	db $08,$08,$11,$00
+	db $00, $00, $00, $00
+	db $00, $08, $01, $00
+	db $08, $00, $10, $00
+	db $08, $08, $11, $00
 
 FrameBlock37:
 	db $04
-	db $00,$00,$01,$a0
-	db $00,$08,$00,$a0
-	db $08,$00,$11,$a0
-	db $08,$08,$10,$a0
+	db $00, $00, $01, $a0
+	db $00, $08, $00, $a0
+	db $08, $00, $11, $a0
+	db $08, $08, $10, $a0
 
 FrameBlock38:
 	db $04
-	db $00,$00,$0a,$00
-	db $00,$08,$0b,$00
-	db $08,$00,$1a,$00
-	db $08,$08,$1b,$00
+	db $00, $00, $0a, $00
+	db $00, $08, $0b, $00
+	db $08, $00, $1a, $00
+	db $08, $08, $1b, $00
 
 FrameBlock39:
 	db $04
-	db $00,$00,$0b,$20
-	db $00,$08,$0a,$20
-	db $08,$00,$1b,$20
-	db $08,$08,$1a,$20
+	db $00, $00, $0b, $20
+	db $00, $08, $0a, $20
+	db $08, $00, $1b, $20
+	db $08, $08, $1a, $20
 
 FrameBlock3a:
 	db $04
-	db $20,$00,$05,$00
-	db $20,$08,$05,$20
-	db $28,$00,$15,$00
-	db $28,$08,$15,$20
+	db $20, $00, $05, $00
+	db $20, $08, $05, $20
+	db $28, $00, $15, $00
+	db $28, $08, $15, $20
 
 FrameBlock3b:
 	db $05
-	db $18,$00,$04,$00
-	db $18,$08,$04,$20
-	db $20,$00,$14,$00
-	db $20,$08,$14,$20
-	db $28,$04,$41,$00
+	db $18, $00, $04, $00
+	db $18, $08, $04, $20
+	db $20, $00, $14, $00
+	db $20, $08, $14, $20
+	db $28, $04, $41, $00
 
 FrameBlock3c:
 	db $06
-	db $10,$00,$05,$00
-	db $10,$08,$05,$20
-	db $18,$00,$15,$00
-	db $18,$08,$15,$20
-	db $20,$04,$42,$00
-	db $28,$04,$42,$00
+	db $10, $00, $05, $00
+	db $10, $08, $05, $20
+	db $18, $00, $15, $00
+	db $18, $08, $15, $20
+	db $20, $04, $42, $00
+	db $28, $04, $42, $00
 
 FrameBlock3d:
 	db $07
-	db $08,$00,$04,$00
-	db $08,$08,$04,$20
-	db $10,$00,$14,$00
-	db $10,$08,$14,$20
-	db $18,$04,$41,$00
-	db $20,$04,$41,$00
-	db $28,$04,$41,$00
+	db $08, $00, $04, $00
+	db $08, $08, $04, $20
+	db $10, $00, $14, $00
+	db $10, $08, $14, $20
+	db $18, $04, $41, $00
+	db $20, $04, $41, $00
+	db $28, $04, $41, $00
 
 FrameBlock3e:
 	db $08
-	db $00,$00,$05,$00
-	db $00,$08,$05,$20
-	db $08,$00,$15,$00
-	db $08,$08,$15,$20
-	db $10,$04,$42,$00
-	db $18,$04,$42,$00
-	db $20,$04,$42,$00
-	db $28,$04,$42,$00
+	db $00, $00, $05, $00
+	db $00, $08, $05, $20
+	db $08, $00, $15, $00
+	db $08, $08, $15, $20
+	db $10, $04, $42, $00
+	db $18, $04, $42, $00
+	db $20, $04, $42, $00
+	db $28, $04, $42, $00
 
 FrameBlock3f:
 	db $08
-	db $00,$00,$04,$00
-	db $00,$08,$04,$20
-	db $08,$00,$14,$00
-	db $08,$08,$14,$20
-	db $10,$04,$41,$00
-	db $18,$04,$41,$00
-	db $20,$04,$41,$00
-	db $28,$04,$41,$00
+	db $00, $00, $04, $00
+	db $00, $08, $04, $20
+	db $08, $00, $14, $00
+	db $08, $08, $14, $20
+	db $10, $04, $41, $00
+	db $18, $04, $41, $00
+	db $20, $04, $41, $00
+	db $28, $04, $41, $00
 
 FrameBlock40:
 	db $03
-	db $00,$00,$3d,$00
-	db $00,$08,$3d,$00
-	db $08,$08,$3d,$00
+	db $00, $00, $3d, $00
+	db $00, $08, $3d, $00
+	db $08, $08, $3d, $00
 
 FrameBlock41:
 	db $04
-	db $00,$00,$06,$00
-	db $00,$08,$06,$20
-	db $08,$00,$16,$00
-	db $08,$08,$17,$00
+	db $00, $00, $06, $00
+	db $00, $08, $06, $20
+	db $08, $00, $16, $00
+	db $08, $08, $17, $00
 
 FrameBlock42:
 	db $0b
-	db $00,$10,$42,$00
-	db $08,$00,$42,$00
-	db $08,$08,$42,$00
-	db $08,$10,$42,$00
-	db $08,$18,$42,$00
-	db $08,$20,$42,$00
-	db $10,$10,$42,$00
-	db $18,$08,$42,$00
-	db $18,$18,$42,$00
-	db $20,$00,$42,$00
-	db $20,$20,$42,$00
+	db $00, $10, $42, $00
+	db $08, $00, $42, $00
+	db $08, $08, $42, $00
+	db $08, $10, $42, $00
+	db $08, $18, $42, $00
+	db $08, $20, $42, $00
+	db $10, $10, $42, $00
+	db $18, $08, $42, $00
+	db $18, $18, $42, $00
+	db $20, $00, $42, $00
+	db $20, $20, $42, $00
 
 FrameBlock43:
 	db $0b
-	db $00,$10,$41,$00
-	db $08,$00,$41,$00
-	db $08,$08,$41,$00
-	db $08,$10,$41,$00
-	db $08,$18,$41,$00
-	db $08,$20,$41,$00
-	db $10,$10,$41,$00
-	db $18,$08,$41,$00
-	db $18,$18,$41,$00
-	db $20,$00,$41,$00
-	db $20,$20,$41,$00
+	db $00, $10, $41, $00
+	db $08, $00, $41, $00
+	db $08, $08, $41, $00
+	db $08, $10, $41, $00
+	db $08, $18, $41, $00
+	db $08, $20, $41, $00
+	db $10, $10, $41, $00
+	db $18, $08, $41, $00
+	db $18, $18, $41, $00
+	db $20, $00, $41, $00
+	db $20, $20, $41, $00
 
 FrameBlock44:
 	db $04
-	db $00,$00,$49,$00
-	db $00,$28,$49,$00
-	db $28,$00,$49,$00
-	db $28,$28,$49,$00
+	db $00, $00, $49, $00
+	db $00, $28, $49, $00
+	db $28, $00, $49, $00
+	db $28, $28, $49, $00
 
 FrameBlock45:
 	db $04
-	db $00,$00,$49,$00
-	db $00,$18,$49,$00
-	db $18,$00,$49,$00
-	db $18,$18,$49,$00
+	db $00, $00, $49, $00
+	db $00, $18, $49, $00
+	db $18, $00, $49, $00
+	db $18, $18, $49, $00
 
 FrameBlock46:
 	db $04
-	db $00,$00,$49,$00
-	db $00,$08,$49,$00
-	db $08,$00,$49,$00
-	db $08,$08,$49,$00
+	db $00, $00, $49, $00
+	db $00, $08, $49, $00
+	db $08, $00, $49, $00
+	db $08, $08, $49, $00
 
 FrameBlock47:
 	db $04
-	db $00,$00,$43,$00
-	db $00,$08,$43,$20
-	db $08,$00,$43,$40
-	db $08,$08,$43,$60
+	db $00, $00, $43, $00
+	db $00, $08, $43, $20
+	db $08, $00, $43, $40
+	db $08, $08, $43, $60
 
 SmallBlackCircleFrameBlock:
 	db $04
-	db $08,$08,$33,$00
-	db $08,$10,$33,$20
-	db $10,$08,$33,$40
-	db $10,$10,$33,$60
+	db $08, $08, $33, $00
+	db $08, $10, $33, $20
+	db $10, $08, $33, $40
+	db $10, $10, $33, $60
 
 LargeBlockCircleFrameBlock:
 	db $10
-	db $00,$00,$22,$00
-	db $00,$08,$23,$00
-	db $00,$10,$23,$20
-	db $00,$18,$22,$20
-	db $08,$00,$32,$00
-	db $08,$08,$43,$00
-	db $08,$10,$43,$20
-	db $08,$18,$32,$20
-	db $10,$00,$32,$40
-	db $10,$08,$43,$40
-	db $10,$10,$43,$60
-	db $10,$18,$32,$60
-	db $18,$00,$22,$40
-	db $18,$08,$23,$40
-	db $18,$10,$23,$60
-	db $18,$18,$22,$60
+	db $00, $00, $22, $00
+	db $00, $08, $23, $00
+	db $00, $10, $23, $20
+	db $00, $18, $22, $20
+	db $08, $00, $32, $00
+	db $08, $08, $43, $00
+	db $08, $10, $43, $20
+	db $08, $18, $32, $20
+	db $10, $00, $32, $40
+	db $10, $08, $43, $40
+	db $10, $10, $43, $60
+	db $10, $18, $32, $60
+	db $18, $00, $22, $40
+	db $18, $08, $23, $40
+	db $18, $10, $23, $60
+	db $18, $18, $22, $60
 
 FrameBlock71:
 	db $10
-	db $00,$00,$22,$00
-	db $00,$08,$3b,$00
-	db $00,$10,$23,$20
-	db $00,$18,$22,$20
-	db $08,$00,$32,$00
-	db $08,$08,$43,$00
-	db $08,$10,$43,$20
-	db $08,$18,$32,$20
-	db $10,$00,$32,$40
-	db $10,$08,$43,$40
-	db $10,$10,$43,$60
-	db $10,$18,$32,$60
-	db $18,$00,$22,$40
-	db $18,$08,$23,$40
-	db $18,$10,$23,$60
-	db $18,$18,$22,$60
+	db $00, $00, $22, $00
+	db $00, $08, $3b, $00
+	db $00, $10, $23, $20
+	db $00, $18, $22, $20
+	db $08, $00, $32, $00
+	db $08, $08, $43, $00
+	db $08, $10, $43, $20
+	db $08, $18, $32, $20
+	db $10, $00, $32, $40
+	db $10, $08, $43, $40
+	db $10, $10, $43, $60
+	db $10, $18, $32, $60
+	db $18, $00, $22, $40
+	db $18, $08, $23, $40
+	db $18, $10, $23, $60
+	db $18, $18, $22, $60
 
 FrameBlock72:
 	db $0c
-	db $00,$00,$32,$00
-	db $00,$08,$43,$00
-	db $00,$10,$43,$20
-	db $00,$18,$32,$20
-	db $08,$00,$32,$40
-	db $08,$08,$43,$40
-	db $08,$10,$43,$60
-	db $08,$18,$32,$60
-	db $10,$00,$22,$40
-	db $10,$08,$23,$40
-	db $10,$10,$23,$60
-	db $10,$18,$22,$60
+	db $00, $00, $32, $00
+	db $00, $08, $43, $00
+	db $00, $10, $43, $20
+	db $00, $18, $32, $20
+	db $08, $00, $32, $40
+	db $08, $08, $43, $40
+	db $08, $10, $43, $60
+	db $08, $18, $32, $60
+	db $10, $00, $22, $40
+	db $10, $08, $23, $40
+	db $10, $10, $23, $60
+	db $10, $18, $22, $60
 
 FrameBlock73:
 	db $08
-	db $00,$00,$32,$40
-	db $00,$08,$43,$40
-	db $00,$10,$43,$60
-	db $00,$18,$32,$60
-	db $08,$00,$22,$40
-	db $08,$08,$23,$40
-	db $08,$10,$23,$60
-	db $08,$18,$22,$60
+	db $00, $00, $32, $40
+	db $00, $08, $43, $40
+	db $00, $10, $43, $60
+	db $00, $18, $32, $60
+	db $08, $00, $22, $40
+	db $08, $08, $23, $40
+	db $08, $10, $23, $60
+	db $08, $18, $22, $60
 
 FrameBlock74:
 	db $04
-	db $00,$00,$22,$40
-	db $00,$08,$23,$40
-	db $00,$10,$23,$60
-	db $00,$18,$22,$60
+	db $00, $00, $22, $40
+	db $00, $08, $23, $40
+	db $00, $10, $23, $60
+	db $00, $18, $22, $60
 
 FrameBlock4a:
 	db $04
-	db $08,$18,$4c,$20
-	db $20,$08,$4b,$00
-	db $30,$20,$4c,$00
-	db $18,$30,$4b,$40
+	db $08, $18, $4c, $20
+	db $20, $08, $4b, $00
+	db $30, $20, $4c, $00
+	db $18, $30, $4b, $40
 
 FrameBlock4b:
 	db $04
-	db $00,$18,$4c,$00
-	db $20,$00,$4b,$40
-	db $38,$20,$4c,$20
-	db $18,$38,$4b,$00
+	db $00, $18, $4c, $00
+	db $20, $00, $4b, $40
+	db $38, $20, $4c, $20
+	db $18, $38, $4b, $00
 
 FrameBlock4c:
 	db $04
-	db $10,$08,$4a,$40
-	db $30,$10,$4a,$00
-	db $28,$30,$4a,$20
-	db $08,$28,$4a,$60
+	db $10, $08, $4a, $40
+	db $30, $10, $4a, $00
+	db $28, $30, $4a, $20
+	db $08, $28, $4a, $60
 
 FrameBlock4d:
 	db $04
-	db $08,$00,$4a,$20
-	db $38,$08,$4a,$60
-	db $30,$38,$4a,$40
-	db $00,$30,$4a,$00
+	db $08, $00, $4a, $20
+	db $38, $08, $4a, $60
+	db $30, $38, $4a, $40
+	db $00, $30, $4a, $00
 
 FrameBlock4e:
 	db $08
-	db $00,$30,$44,$00
-	db $00,$38,$44,$20
-	db $08,$30,$44,$40
-	db $08,$38,$44,$60
-	db $26,$0a,$44,$00
-	db $26,$12,$44,$20
-	db $2e,$0a,$44,$40
-	db $2e,$12,$44,$60
+	db $00, $30, $44, $00
+	db $00, $38, $44, $20
+	db $08, $30, $44, $40
+	db $08, $38, $44, $60
+	db $26, $0a, $44, $00
+	db $26, $12, $44, $20
+	db $2e, $0a, $44, $40
+	db $2e, $12, $44, $60
 
 FrameBlock4f:
 	db $0c
-	db $0e,$22,$44,$00
-	db $0e,$2a,$44,$20
-	db $16,$22,$44,$40
-	db $16,$2a,$44,$60
-	db $06,$32,$47,$00
-	db $00,$38,$47,$00
-	db $1a,$16,$44,$00
-	db $1a,$1e,$44,$20
-	db $22,$16,$44,$40
-	db $22,$1e,$44,$60
-	db $30,$08,$47,$00
-	db $2a,$0e,$47,$00
+	db $0e, $22, $44, $00
+	db $0e, $2a, $44, $20
+	db $16, $22, $44, $40
+	db $16, $2a, $44, $60
+	db $06, $32, $47, $00
+	db $00, $38, $47, $00
+	db $1a, $16, $44, $00
+	db $1a, $1e, $44, $20
+	db $22, $16, $44, $40
+	db $22, $1e, $44, $60
+	db $30, $08, $47, $00
+	db $2a, $0e, $47, $00
 
 FrameBlock50:
 	db $08
-	db $06,$32,$47,$00
-	db $00,$38,$47,$00
-	db $12,$26,$47,$00
-	db $0c,$2c,$47,$00
-	db $1e,$1a,$47,$00
-	db $18,$20,$47,$00
-	db $2a,$0e,$47,$00
-	db $24,$14,$47,$00
+	db $06, $32, $47, $00
+	db $00, $38, $47, $00
+	db $12, $26, $47, $00
+	db $0c, $2c, $47, $00
+	db $1e, $1a, $47, $00
+	db $18, $20, $47, $00
+	db $2a, $0e, $47, $00
+	db $24, $14, $47, $00
 
 FrameBlock51:
 	db $08
-	db $00,$00,$35,$20
-	db $08,$00,$35,$40
-	db $10,$00,$35,$00
-	db $18,$00,$35,$60
-	db $00,$40,$35,$00
-	db $08,$40,$35,$60
-	db $10,$40,$35,$20
-	db $18,$40,$35,$40
+	db $00, $00, $35, $20
+	db $08, $00, $35, $40
+	db $10, $00, $35, $00
+	db $18, $00, $35, $60
+	db $00, $40, $35, $00
+	db $08, $40, $35, $60
+	db $10, $40, $35, $20
+	db $18, $40, $35, $40
 
 FrameBlock52:
 	db $04
-	db $00,$00,$2a,$00
-	db $00,$08,$2b,$00
-	db $08,$00,$3a,$00
-	db $08,$08,$3b,$00
+	db $00, $00, $2a, $00
+	db $00, $08, $2b, $00
+	db $08, $00, $3a, $00
+	db $08, $08, $3b, $00
 
 FrameBlock53:
 	db $03
-	db $00,$00,$3f,$00
-	db $00,$08,$3f,$00
-	db $08,$06,$3f,$00
+	db $00, $00, $3f, $00
+	db $00, $08, $3f, $00
+	db $08, $06, $3f, $00
 
 FrameBlock54:
 	db $04
-	db $00,$00,$0e,$00
-	db $00,$08,$0e,$20
-	db $08,$00,$0f,$00
-	db $08,$08,$0f,$20
+	db $00, $00, $0e, $00
+	db $00, $08, $0e, $20
+	db $08, $00, $0f, $00
+	db $08, $08, $0f, $20
 
 FrameBlock55:
 	db $03
-	db $10,$00,$2c,$00
-	db $10,$08,$3c,$00
-	db $10,$10,$2d,$00
+	db $10, $00, $2c, $00
+	db $10, $08, $3c, $00
+	db $10, $10, $2d, $00
 
 FrameBlock56:
 	db $06
-	db $10,$10,$31,$00
-	db $10,$18,$31,$00
-	db $08,$10,$2c,$00
-	db $08,$18,$3c,$00
-	db $08,$20,$2d,$00
-	db $10,$20,$2d,$00
+	db $10, $10, $31, $00
+	db $10, $18, $31, $00
+	db $08, $10, $2c, $00
+	db $08, $18, $3c, $00
+	db $08, $20, $2d, $00
+	db $10, $20, $2d, $00
 
 FrameBlock57:
 	db $09
-	db $08,$20,$31,$00
-	db $10,$20,$31,$00
-	db $08,$28,$31,$00
-	db $10,$28,$31,$00
-	db $00,$20,$2c,$00
-	db $00,$28,$3c,$00
-	db $00,$30,$2d,$00
-	db $08,$30,$2d,$00
-	db $10,$30,$2d,$00
+	db $08, $20, $31, $00
+	db $10, $20, $31, $00
+	db $08, $28, $31, $00
+	db $10, $28, $31, $00
+	db $00, $20, $2c, $00
+	db $00, $28, $3c, $00
+	db $00, $30, $2d, $00
+	db $08, $30, $2d, $00
+	db $10, $30, $2d, $00
 
 FrameBlock58:
 	db $07
-	db $00,$00,$46,$00
-	db $08,$02,$47,$00
-	db $10,$03,$48,$00
-	db $18,$04,$48,$00
-	db $20,$05,$48,$00
-	db $28,$05,$48,$00
-	db $30,$05,$48,$00
+	db $00, $00, $46, $00
+	db $08, $02, $47, $00
+	db $10, $03, $48, $00
+	db $18, $04, $48, $00
+	db $20, $05, $48, $00
+	db $28, $05, $48, $00
+	db $30, $05, $48, $00
 
 FrameBlock59:
 	db $01
-	db $00,$00,$42,$00
+	db $00, $00, $42, $00
 
 FrameBlock5a:
 	db $0c
-	db $00,$00,$24,$00
-	db $00,$08,$25,$00
-	db $08,$00,$34,$00
-	db $00,$10,$25,$20
-	db $00,$18,$24,$20
-	db $08,$18,$34,$20
-	db $10,$00,$34,$40
-	db $18,$00,$24,$40
-	db $18,$08,$25,$40
-	db $10,$18,$34,$60
-	db $18,$10,$25,$60
-	db $18,$18,$24,$60
+	db $00, $00, $24, $00
+	db $00, $08, $25, $00
+	db $08, $00, $34, $00
+	db $00, $10, $25, $20
+	db $00, $18, $24, $20
+	db $08, $18, $34, $20
+	db $10, $00, $34, $40
+	db $18, $00, $24, $40
+	db $18, $08, $25, $40
+	db $10, $18, $34, $60
+	db $18, $10, $25, $60
+	db $18, $18, $24, $60
 
 FrameBlock5b:
 	db $04
-	db $00,$00,$43,$00
-	db $00,$08,$43,$20
-	db $08,$00,$43,$40
-	db $08,$08,$43,$60
+	db $00, $00, $43, $00
+	db $00, $08, $43, $20
+	db $08, $00, $43, $40
+	db $08, $08, $43, $60
 
 FrameBlock5c:
 	db $08
-	db $00,$00,$49,$00
-	db $02,$08,$49,$00
-	db $18,$00,$49,$00
-	db $10,$10,$49,$00
-	db $08,$00,$43,$00
-	db $08,$08,$43,$20
-	db $10,$00,$43,$40
-	db $10,$08,$43,$60
+	db $00, $00, $49, $00
+	db $02, $08, $49, $00
+	db $18, $00, $49, $00
+	db $10, $10, $49, $00
+	db $08, $00, $43, $00
+	db $08, $08, $43, $20
+	db $10, $00, $43, $40
+	db $10, $08, $43, $60
 
 FrameBlock5d:
 	db $0b
-	db $00,$00,$49,$00
-	db $18,$02,$49,$00
-	db $14,$10,$49,$00
-	db $08,$00,$43,$00
-	db $00,$08,$43,$20
-	db $10,$00,$43,$40
-	db $10,$08,$43,$60
-	db $04,$08,$43,$00
-	db $04,$10,$43,$20
-	db $0c,$08,$43,$40
-	db $0c,$10,$43,$60
+	db $00, $00, $49, $00
+	db $18, $02, $49, $00
+	db $14, $10, $49, $00
+	db $08, $00, $43, $00
+	db $00, $08, $43, $20
+	db $10, $00, $43, $40
+	db $10, $08, $43, $60
+	db $04, $08, $43, $00
+	db $04, $10, $43, $20
+	db $0c, $08, $43, $40
+	db $0c, $10, $43, $60
 
 FrameBlock5e:
 	db $0f
-	db $00,$08,$49,$00
-	db $08,$10,$49,$00
-	db $20,$00,$49,$00
-	db $08,$00,$43,$00
-	db $08,$08,$43,$20
-	db $10,$00,$43,$40
-	db $10,$08,$43,$60
-	db $10,$10,$43,$00
-	db $10,$18,$43,$20
-	db $18,$10,$43,$40
-	db $18,$18,$43,$60
-	db $20,$08,$43,$00
-	db $20,$10,$43,$20
-	db $28,$08,$43,$40
-	db $28,$10,$43,$60
+	db $00, $08, $49, $00
+	db $08, $10, $49, $00
+	db $20, $00, $49, $00
+	db $08, $00, $43, $00
+	db $08, $08, $43, $20
+	db $10, $00, $43, $40
+	db $10, $08, $43, $60
+	db $10, $10, $43, $00
+	db $10, $18, $43, $20
+	db $18, $10, $43, $40
+	db $18, $18, $43, $60
+	db $20, $08, $43, $00
+	db $20, $10, $43, $20
+	db $28, $08, $43, $40
+	db $28, $10, $43, $60
 
 FrameBlock5f:
 	db $04
-	db $00,$00,$49,$00
-	db $00,$10,$49,$00
-	db $00,$20,$49,$00
-	db $00,$30,$49,$00
+	db $00, $00, $49, $00
+	db $00, $10, $49, $00
+	db $00, $20, $49, $00
+	db $00, $30, $49, $00
 
 FrameBlock60:
 	db $08
-	db $00,$00,$49,$00
-	db $00,$10,$49,$00
-	db $00,$20,$49,$00
-	db $00,$30,$49,$00
-	db $08,$08,$49,$00
-	db $08,$18,$49,$00
-	db $08,$28,$49,$00
-	db $08,$38,$49,$00
+	db $00, $00, $49, $00
+	db $00, $10, $49, $00
+	db $00, $20, $49, $00
+	db $00, $30, $49, $00
+	db $08, $08, $49, $00
+	db $08, $18, $49, $00
+	db $08, $28, $49, $00
+	db $08, $38, $49, $00
 
 FrameBlock61:
 	db $0c
-	db $00,$00,$49,$00
-	db $00,$10,$49,$00
-	db $00,$20,$49,$00
-	db $00,$30,$49,$00
-	db $08,$08,$49,$00
-	db $08,$18,$49,$00
-	db $08,$28,$49,$00
-	db $08,$38,$49,$00
-	db $10,$00,$49,$00
-	db $10,$10,$49,$00
-	db $10,$20,$49,$00
-	db $10,$30,$49,$00
+	db $00, $00, $49, $00
+	db $00, $10, $49, $00
+	db $00, $20, $49, $00
+	db $00, $30, $49, $00
+	db $08, $08, $49, $00
+	db $08, $18, $49, $00
+	db $08, $28, $49, $00
+	db $08, $38, $49, $00
+	db $10, $00, $49, $00
+	db $10, $10, $49, $00
+	db $10, $20, $49, $00
+	db $10, $30, $49, $00
 
 FrameBlock62:
 	db $0f
-	db $00,$00,$49,$00
-	db $00,$10,$49,$00
-	db $00,$20,$49,$00
-	db $00,$30,$49,$00
-	db $08,$08,$49,$00
-	db $08,$18,$49,$00
-	db $08,$28,$49,$00
-	db $08,$38,$49,$00
-	db $10,$00,$49,$00
-	db $10,$10,$49,$00
-	db $10,$20,$49,$00
-	db $10,$30,$49,$00
-	db $18,$08,$49,$00
-	db $18,$18,$49,$00
-	db $18,$28,$49,$00
-	db $18,$38,$49,$00 ; unused
+	db $00, $00, $49, $00
+	db $00, $10, $49, $00
+	db $00, $20, $49, $00
+	db $00, $30, $49, $00
+	db $08, $08, $49, $00
+	db $08, $18, $49, $00
+	db $08, $28, $49, $00
+	db $08, $38, $49, $00
+	db $10, $00, $49, $00
+	db $10, $10, $49, $00
+	db $10, $20, $49, $00
+	db $10, $30, $49, $00
+	db $18, $08, $49, $00
+	db $18, $18, $49, $00
+	db $18, $28, $49, $00
+	db $18, $38, $49, $00 ; unused
 
 FrameBlock63:
 	db $06
-	db $10,$00,$26,$00
-	db $10,$08,$27,$00
-	db $08,$10,$26,$00
-	db $08,$18,$27,$00
-	db $00,$20,$26,$00
-	db $00,$28,$27,$00
+	db $10, $00, $26, $00
+	db $10, $08, $27, $00
+	db $08, $10, $26, $00
+	db $08, $18, $27, $00
+	db $00, $20, $26, $00
+	db $00, $28, $27, $00
 
 FrameBlock64:
 	db $06
-	db $18,$00,$27,$00
-	db $10,$08,$26,$00
-	db $10,$10,$27,$00
-	db $08,$18,$26,$00
-	db $08,$20,$27,$00
-	db $00,$28,$26,$00
+	db $18, $00, $27, $00
+	db $10, $08, $26, $00
+	db $10, $10, $27, $00
+	db $08, $18, $26, $00
+	db $08, $20, $27, $00
+	db $00, $28, $26, $00
 
 FrameBlock65:
 	db $06
-	db $00,$00,$1c,$00
-	db $00,$08,$1d,$00
-	db $10,$00,$1c,$00
-	db $10,$08,$1d,$00
-	db $20,$00,$1c,$00
-	db $20,$08,$1d,$00
+	db $00, $00, $1c, $00
+	db $00, $08, $1d, $00
+	db $10, $00, $1c, $00
+	db $10, $08, $1d, $00
+	db $20, $00, $1c, $00
+	db $20, $08, $1d, $00
 
 FrameBlock66:
 	db $02
-	db $00,$00,$03,$00
-	db $08,$00,$13,$00
+	db $00, $00, $03, $00
+	db $08, $00, $13, $00
 
 FrameBlock67:
 	db $01
-	db $00,$00,$03,$00
+	db $00, $00, $03, $00
 
 FrameBlock68:
 	db $04
-	db $00,$00,$03,$00
-	db $00,$08,$03,$20
-	db $08,$00,$13,$00
-	db $08,$08,$13,$20
+	db $00, $00, $03, $00
+	db $00, $08, $03, $20
+	db $08, $00, $13, $00
+	db $08, $08, $13, $20
 
 FrameBlock69:
 	db $01
-	db $00,$00,$06,$00
+	db $00, $00, $06, $00
 
 FrameBlock6a:
 	db $08
-	db $00,$00,$2e,$00
-	db $00,$30,$2e,$20
-	db $30,$00,$2e,$40
-	db $30,$30,$2e,$60
-	db $00,$18,$2f,$00
-	db $30,$18,$2f,$40
-	db $18,$00,$3e,$00
-	db $18,$30,$3e,$20
+	db $00, $00, $2e, $00
+	db $00, $30, $2e, $20
+	db $30, $00, $2e, $40
+	db $30, $30, $2e, $60
+	db $00, $18, $2f, $00
+	db $30, $18, $2f, $40
+	db $18, $00, $3e, $00
+	db $18, $30, $3e, $20
 
 FrameBlock6b:
 	db $08
-	db $00,$00,$2e,$00
-	db $00,$20,$2e,$20
-	db $20,$00,$2e,$40
-	db $20,$20,$2e,$60
-	db $00,$10,$2f,$00
-	db $20,$10,$2f,$40
-	db $10,$00,$3e,$00
-	db $10,$20,$3e,$20
+	db $00, $00, $2e, $00
+	db $00, $20, $2e, $20
+	db $20, $00, $2e, $40
+	db $20, $20, $2e, $60
+	db $00, $10, $2f, $00
+	db $20, $10, $2f, $40
+	db $10, $00, $3e, $00
+	db $10, $20, $3e, $20
 
 FrameBlock6c:
 	db $08
-	db $00,$00,$2e,$00
-	db $00,$10,$2e,$20
-	db $10,$00,$2e,$40
-	db $10,$10,$2e,$60
-	db $00,$08,$2f,$00
-	db $10,$08,$2f,$40
-	db $08,$00,$3e,$00
-	db $08,$10,$3e,$20
+	db $00, $00, $2e, $00
+	db $00, $10, $2e, $20
+	db $10, $00, $2e, $40
+	db $10, $10, $2e, $60
+	db $00, $08, $2f, $00
+	db $10, $08, $2f, $40
+	db $08, $00, $3e, $00
+	db $08, $10, $3e, $20
 
 FrameBlock6d:
 	db $02
-	db $00,$00,$1e,$00
-	db $00,$08,$1f,$00
+	db $00, $00, $1e, $00
+	db $00, $08, $1f, $00
 
 FrameBlock6e:
 	db $04
-	db $00,$00,$48,$00
-	db $00,$08,$48,$20
-	db $08,$00,$12,$00
-	db $08,$08,$12,$20
+	db $00, $00, $48, $00
+	db $00, $08, $48, $20
+	db $08, $00, $12, $00
+	db $08, $08, $12, $20
 
 FrameBlock6f:
 	db $04
-	db $00,$00,$4a,$00
-	db $00,$08,$07,$00
-	db $08,$00,$16,$00
-	db $08,$08,$17,$00
+	db $00, $00, $4a, $00
+	db $00, $08, $07, $00
+	db $08, $00, $16, $00
+	db $08, $08, $17, $00
 
 FrameBlock70:
 	db $04
-	db $00,$00,$07,$20
-	db $00,$08,$4a,$20
-	db $08,$00,$17,$20
-	db $08,$08,$16,$20
+	db $00, $00, $07, $20
+	db $00, $08, $4a, $20
+	db $08, $00, $17, $20
+	db $08, $08, $16, $20
 
 FrameBlock76:
 	db $07
-	db $00,$10,$2f,$00
-	db $01,$08,$2f,$00
-	db $01,$18,$2f,$00
-	db $02,$00,$2e,$00
-	db $02,$20,$2e,$20
-	db $0a,$00,$3e,$00
-	db $0a,$20,$3e,$20
+	db $00, $10, $2f, $00
+	db $01, $08, $2f, $00
+	db $01, $18, $2f, $00
+	db $02, $00, $2e, $00
+	db $02, $20, $2e, $20
+	db $0a, $00, $3e, $00
+	db $0a, $20, $3e, $20
 
 FrameBlock77:
 	db $04
-	db $00,$02,$4b,$00
-	db $00,$0a,$4c,$00
-	db $08,$00,$4c,$60
-	db $08,$08,$4b,$60
+	db $00, $02, $4b, $00
+	db $00, $0a, $4c, $00
+	db $08, $00, $4c, $60
+	db $08, $08, $4b, $60
 
 FrameBlock78:
 	db $01
-	db $00,$00,$4d,$00
+	db $00, $00, $4d, $00
 
 FrameBlock79:
 	db $01
-	db $00,$00,$4e,$00
+	db $00, $00, $4e, $00
 
 FrameBlockBaseCoords:
-	db $10,$68
-	db $10,$70
-	db $10,$78
-	db $10,$80
-	db $10,$88
-	db $10,$90
-	db $10,$98
-	db $18,$68
-	db $18,$70
-	db $18,$78
-	db $34,$28
-	db $18,$80
-	db $18,$88
-	db $18,$98
-	db $20,$68
-	db $20,$70
-	db $20,$78
-	db $20,$80
-	db $20,$88
-	db $20,$90
-	db $20,$98
-	db $28,$68
-	db $28,$70
-	db $28,$78
-	db $28,$80
-	db $28,$88
-	db $30,$68
-	db $30,$70
-	db $30,$78
-	db $30,$80
-	db $30,$90
-	db $30,$98
-	db $38,$68
-	db $38,$78
-	db $38,$80
-	db $38,$88
-	db $40,$68
-	db $40,$70
-	db $40,$78
-	db $40,$80
-	db $40,$88
-	db $40,$98
-	db $10,$60
-	db $18,$60
-	db $20,$60
-	db $28,$60
-	db $30,$60
-	db $40,$60
-	db $58,$28
-	db $43,$38
-	db $33,$48
-	db $20,$58
-	db $32,$78
-	db $58,$58
-	db $2C,$6C
-	db $34,$80
-	db $48,$70
-	db $42,$36
-	db $38,$44
-	db $40,$52
-	db $48,$60
-	db $3E,$6E
-	db $28,$7C
-	db $28,$8A
-	db $50,$3C
-	db $48,$50
-	db $40,$64
-	db $38,$38
-	db $50,$30
-	db $50,$38
-	db $50,$40
-	db $50,$48
-	db $50,$50
-	db $48,$58
-	db $50,$44
-	db $48,$48
-	db $48,$4C
-	db $40,$50
-	db $40,$54
-	db $38,$58
-	db $38,$5C
-	db $30,$64
-	db $48,$40
-	db $48,$39
-	db $24,$88
-	db $24,$70
-	db $1C,$70
-	db $1C,$88
-	db $34,$68
-	db $34,$88
-	db $68,$50
-	db $60,$50
-	db $68,$60
-	db $58,$50
-	db $60,$60
-	db $68,$40
-	db $40,$40
-	db $38,$40
-	db $0B,$60
-	db $44,$48
-	db $40,$14
-	db $48,$1C
-	db $50,$24
-	db $4C,$24
-	db $10,$62
-	db $12,$62
-	db $12,$60
-	db $20,$72
-	db $22,$72
-	db $22,$70
-	db $28,$62
-	db $50,$0A
-	db $52,$0A
-	db $38,$30
-	db $40,$48
-	db $30,$48
-	db $40,$30
-	db $30,$40
-	db $38,$48
-	db $40,$4A
-	db $48,$4B
-	db $50,$4C
-	db $58,$4D
-	db $60,$4D
-	db $68,$4D
-	db $38,$10
-	db $50,$10
-	db $38,$28
-	db $48,$18
-	db $40,$20
-	db $48,$20
-	db $40,$3C
-	db $38,$50
-	db $28,$64
-	db $1C,$90
-	db $24,$80
-	db $2C,$70
-	db $30,$38
-	db $10,$50
-	db $3C,$40
-	db $40,$58
-	db $30,$58
-	db $58,$48
-	db $50,$58
-	db $48,$68
-	db $40,$18
-	db $28,$58
-	db $40,$38
-	db $48,$38
-	db $08,$70
-	db $44,$1C
-	db $3C,$58
-	db $38,$60
-	db $08,$60
-	db $38,$70
-	db $38,$6C
-	db $38,$64
-	db $1C,$74
-	db $2E,$74
-	db $34,$50
-	db $2F,$60
-	db $31,$70
-	db $4C,$30
-	db $3B,$40
-	db $2D,$50
-	db $26,$60
-	db $2D,$70
-	db $28,$50
-	db $1E,$60
-	db $29,$70
-	db $16,$60
-	db $14,$58
-	db $12,$54
-	db $14,$50
-	db $18,$4C
-	db $1C,$48
-	db $48,$28
+	db $10, $68
+	db $10, $70
+	db $10, $78
+	db $10, $80
+	db $10, $88
+	db $10, $90
+	db $10, $98
+	db $18, $68
+	db $18, $70
+	db $18, $78
+	db $34, $28
+	db $18, $80
+	db $18, $88
+	db $18, $98
+	db $20, $68
+	db $20, $70
+	db $20, $78
+	db $20, $80
+	db $20, $88
+	db $20, $90
+	db $20, $98
+	db $28, $68
+	db $28, $70
+	db $28, $78
+	db $28, $80
+	db $28, $88
+	db $30, $68
+	db $30, $70
+	db $30, $78
+	db $30, $80
+	db $30, $90
+	db $30, $98
+	db $38, $68
+	db $38, $78
+	db $38, $80
+	db $38, $88
+	db $40, $68
+	db $40, $70
+	db $40, $78
+	db $40, $80
+	db $40, $88
+	db $40, $98
+	db $10, $60
+	db $18, $60
+	db $20, $60
+	db $28, $60
+	db $30, $60
+	db $40, $60
+	db $58, $28
+	db $43, $38
+	db $33, $48
+	db $20, $58
+	db $32, $78
+	db $58, $58
+	db $2C, $6C
+	db $34, $80
+	db $48, $70
+	db $42, $36
+	db $38, $44
+	db $40, $52
+	db $48, $60
+	db $3E, $6E
+	db $28, $7C
+	db $28, $8A
+	db $50, $3C
+	db $48, $50
+	db $40, $64
+	db $38, $38
+	db $50, $30
+	db $50, $38
+	db $50, $40
+	db $50, $48
+	db $50, $50
+	db $48, $58
+	db $50, $44
+	db $48, $48
+	db $48, $4C
+	db $40, $50
+	db $40, $54
+	db $38, $58
+	db $38, $5C
+	db $30, $64
+	db $48, $40
+	db $48, $39
+	db $24, $88
+	db $24, $70
+	db $1C, $70
+	db $1C, $88
+	db $34, $68
+	db $34, $88
+	db $68, $50
+	db $60, $50
+	db $68, $60
+	db $58, $50
+	db $60, $60
+	db $68, $40
+	db $40, $40
+	db $38, $40
+	db $0B, $60
+	db $44, $48
+	db $40, $14
+	db $48, $1C
+	db $50, $24
+	db $4C, $24
+	db $10, $62
+	db $12, $62
+	db $12, $60
+	db $20, $72
+	db $22, $72
+	db $22, $70
+	db $28, $62
+	db $50, $0A
+	db $52, $0A
+	db $38, $30
+	db $40, $48
+	db $30, $48
+	db $40, $30
+	db $30, $40
+	db $38, $48
+	db $40, $4A
+	db $48, $4B
+	db $50, $4C
+	db $58, $4D
+	db $60, $4D
+	db $68, $4D
+	db $38, $10
+	db $50, $10
+	db $38, $28
+	db $48, $18
+	db $40, $20
+	db $48, $20
+	db $40, $3C
+	db $38, $50
+	db $28, $64
+	db $1C, $90
+	db $24, $80
+	db $2C, $70
+	db $30, $38
+	db $10, $50
+	db $3C, $40
+	db $40, $58
+	db $30, $58
+	db $58, $48
+	db $50, $58
+	db $48, $68
+	db $40, $18
+	db $28, $58
+	db $40, $38
+	db $48, $38
+	db $08, $70
+	db $44, $1C
+	db $3C, $58
+	db $38, $60
+	db $08, $60
+	db $38, $70
+	db $38, $6C
+	db $38, $64
+	db $1C, $74
+	db $2E, $74
+	db $34, $50
+	db $2F, $60
+	db $31, $70
+	db $4C, $30
+	db $3B, $40
+	db $2D, $50
+	db $26, $60
+	db $2D, $70
+	db $28, $50
+	db $1E, $60
+	db $29, $70
+	db $16, $60
+	db $14, $58
+	db $12, $54
+	db $14, $50
+	db $18, $4C
+	db $1C, $48
+	db $48, $28
 
 FrameBlock00:
-	db $00,$00
+	db $00, $00
--- a/data/moves/effects_pointers.asm
+++ b/data/moves/effects_pointers.asm
@@ -1,5 +1,5 @@
 MoveEffectPointerTable:
-	dw SleepEffect               ; unused effect
+	dw SleepEffect               ; EFFECT_01
 	dw PoisonEffect              ; POISON_SIDE_EFFECT1
 	dw DrainHPEffect             ; DRAIN_HP_EFFECT
 	dw FreezeBurnParalyzeEffect  ; BURN_SIDE_EFFECT1
@@ -28,14 +28,14 @@
 	dw ThrashPetalDanceEffect    ; THRASH_PETAL_DANCE_EFFECT
 	dw SwitchAndTeleportEffect   ; SWITCH_AND_TELEPORT_EFFECT
 	dw TwoToFiveAttacksEffect    ; TWO_TO_FIVE_ATTACKS_EFFECT
-	dw TwoToFiveAttacksEffect    ; unused effect
-	dw FlinchSideEffect           ; FLINCH_SIDE_EFFECT1
+	dw TwoToFiveAttacksEffect    ; EFFECT_1E
+	dw FlinchSideEffect          ; FLINCH_SIDE_EFFECT1
 	dw SleepEffect               ; SLEEP_EFFECT
 	dw PoisonEffect              ; POISON_SIDE_EFFECT2
 	dw FreezeBurnParalyzeEffect  ; BURN_SIDE_EFFECT2
 	dw FreezeBurnParalyzeEffect  ; unused effect
 	dw FreezeBurnParalyzeEffect  ; PARALYZE_SIDE_EFFECT2
-	dw FlinchSideEffect           ; FLINCH_SIDE_EFFECT2
+	dw FlinchSideEffect          ; FLINCH_SIDE_EFFECT2
 	dw OneHitKOEffect            ; OHKO_EFFECT
 	dw ChargeEffect              ; CHARGE_EFFECT
 	dw NULL                      ; SUPER_FANG_EFFECT
--- a/data/moves/grammar.asm
+++ b/data/moves/grammar.asm
@@ -1,14 +1,72 @@
 ExclamationPointMoveSets:
-	db SWORDS_DANCE, GROWTH
-	db $00
-	db RECOVER, BIDE, SELFDESTRUCT, AMNESIA
-	db $00
-	db MEDITATE, AGILITY, TELEPORT, MIMIC, DOUBLE_TEAM, BARRAGE
-	db $00
-	db POUND, SCRATCH, VICEGRIP, WING_ATTACK, FLY, BIND, SLAM, HORN_ATTACK, BODY_SLAM
-	db WRAP, THRASH, TAIL_WHIP, LEER, BITE, GROWL, ROAR, SING, PECK, COUNTER
-	db STRENGTH, ABSORB, STRING_SHOT, EARTHQUAKE, FISSURE, DIG, TOXIC, SCREECH, HARDEN
-	db MINIMIZE, WITHDRAW, DEFENSE_CURL, METRONOME, LICK, CLAMP, CONSTRICT, POISON_GAS
-	db LEECH_LIFE, BUBBLE, FLASH, SPLASH, ACID_ARMOR, FURY_SWIPES, REST, SHARPEN, SLASH, SUBSTITUTE
-	db $00
-	db $FF ; terminator
+; set 0
+	db SWORDS_DANCE
+	db GROWTH
+	db 0 ; end set
+
+; set 1
+	db RECOVER
+	db BIDE
+	db SELFDESTRUCT
+	db AMNESIA
+	db 0 ; end set
+
+; set 2
+	db MEDITATE
+	db AGILITY
+	db TELEPORT
+	db MIMIC
+	db DOUBLE_TEAM
+	db BARRAGE
+	db 0 ; end set
+
+; set 3
+	db POUND
+	db SCRATCH
+	db VICEGRIP
+	db WING_ATTACK
+	db FLY
+	db BIND
+	db SLAM
+	db HORN_ATTACK
+	db BODY_SLAM
+	db WRAP
+	db THRASH
+	db TAIL_WHIP
+	db LEER
+	db BITE
+	db GROWL
+	db ROAR
+	db SING
+	db PECK
+	db COUNTER
+	db STRENGTH
+	db ABSORB
+	db STRING_SHOT
+	db EARTHQUAKE
+	db FISSURE
+	db DIG
+	db TOXIC
+	db SCREECH
+	db HARDEN
+	db MINIMIZE
+	db WITHDRAW
+	db DEFENSE_CURL
+	db METRONOME
+	db LICK
+	db CLAMP
+	db CONSTRICT
+	db POISON_GAS
+	db LEECH_LIFE
+	db BUBBLE
+	db FLASH
+	db SPLASH
+	db ACID_ARMOR
+	db FURY_SWIPES
+	db REST
+	db SHARPEN
+	db SLASH
+	db SUBSTITUTE
+	db 0 ; end set
+
+	db -1 ; end
--- a/data/moves/names.asm
+++ b/data/moves/names.asm
@@ -164,4 +164,3 @@
 	db "SLASH@"
 	db "SUBSTITUTE@"
 	db "STRUGGLE@"
-
--- a/data/moves/sfx.asm
+++ b/data/moves/sfx.asm
@@ -1,168 +1,168 @@
 MoveSoundTable:
 	; ID, pitch mod, tempo mod
-	db SFX_POUND,             $00,$80 ; POUND
-	db SFX_BATTLE_0C,         $10,$80 ; KARATE_CHOP
-	db SFX_DOUBLESLAP,        $00,$80 ; DOUBLESLAP
-	db SFX_BATTLE_0B,         $01,$80 ; COMET_PUNCH
-	db SFX_BATTLE_0D,         $00,$40 ; MEGA_PUNCH
-	db SFX_SILPH_SCOPE,       $00,$ff ; PAY_DAY
-	db SFX_BATTLE_0D,         $10,$60 ; FIRE_PUNCH
-	db SFX_BATTLE_0D,         $20,$80 ; ICE_PUNCH
-	db SFX_BATTLE_0D,         $00,$a0 ; THUNDERPUNCH
-	db SFX_DAMAGE,            $00,$80 ; SCRATCH
-	db SFX_BATTLE_0F,         $20,$40 ; VICEGRIP
-	db SFX_BATTLE_0F,         $00,$80 ; GUILLOTINE
-	db SFX_BATTLE_0E,         $00,$a0 ; RAZOR_WIND
-	db SFX_NOT_VERY_EFFECTIVE,$10,$c0 ; SWORDS_DANCE
-	db SFX_NOT_VERY_EFFECTIVE,$00,$a0 ; CUT
-	db SFX_BATTLE_12,         $00,$c0 ; GUST
-	db SFX_BATTLE_12,         $10,$a0 ; WING_ATTACK
-	db SFX_BATTLE_13,         $00,$e0 ; WHIRLWIND
-	db SFX_NOT_VERY_EFFECTIVE,$20,$c0 ; FLY
-	db SFX_BATTLE_14,         $00,$80 ; BIND
-	db SFX_BATTLE_22,         $00,$80 ; SLAM
-	db SFX_VINE_WHIP,         $01,$80 ; VINE_WHIP
-	db SFX_BATTLE_20,         $00,$80 ; STOMP
-	db SFX_BATTLE_17,         $f0,$40 ; DOUBLE_KICK
-	db SFX_SUPER_EFFECTIVE,   $00,$80 ; MEGA_KICK
-	db SFX_BATTLE_17,         $00,$80 ; JUMP_KICK
-	db SFX_BATTLE_21,         $10,$80 ; ROLLING_KICK
-	db SFX_BATTLE_1B,         $01,$a0 ; SAND_ATTACK
-	db SFX_BATTLE_18,         $00,$80 ; HEADBUTT
-	db SFX_BATTLE_1E,         $00,$60 ; HORN_ATTACK
-	db SFX_BATTLE_1E,         $01,$40 ; FURY_ATTACK
-	db SFX_HORN_DRILL,        $00,$a0 ; HORN_DRILL
-	db SFX_SUPER_EFFECTIVE,   $10,$a0 ; TACKLE
-	db SFX_BATTLE_20,         $00,$c0 ; BODY_SLAM
-	db SFX_BATTLE_14,         $10,$60 ; WRAP
-	db SFX_SUPER_EFFECTIVE,   $00,$a0 ; TAKE_DOWN
-	db SFX_BATTLE_22,         $11,$c0 ; THRASH
-	db SFX_SUPER_EFFECTIVE,   $20,$c0 ; DOUBLE_EDGE
-	db SFX_BATTLE_21,         $00,$80 ; TAIL_WHIP
-	db SFX_BATTLE_1B,         $00,$80 ; POISON_STING
-	db SFX_BATTLE_1B,         $20,$c0 ; TWINEEDLE
-	db SFX_BATTLE_19,         $00,$80 ; PIN_MISSILE
-	db SFX_BATTLE_31,         $ff,$40 ; LEER
-	db SFX_BATTLE_1E,         $00,$80 ; BITE
-	db SFX_BATTLE_0B,         $00,$c0 ; GROWL
-	db SFX_BATTLE_0B,         $00,$40 ; ROAR
-	db SFX_BATTLE_35,         $00,$80 ; SING
-	db SFX_BATTLE_27,         $40,$60 ; SUPERSONIC
-	db SFX_BATTLE_27,         $00,$80 ; SONICBOOM
-	db SFX_BATTLE_27,         $ff,$40 ; DISABLE
-	db SFX_BATTLE_2A,         $80,$c0 ; ACID
-	db SFX_BATTLE_19,         $10,$a0 ; EMBER
-	db SFX_BATTLE_19,         $21,$e0 ; FLAMETHROWER
-	db SFX_BATTLE_29,         $00,$80 ; MIST
-	db SFX_BATTLE_24,         $20,$60 ; WATER_GUN
-	db SFX_BATTLE_2A,         $00,$80 ; HYDRO_PUMP
-	db SFX_BATTLE_2C,         $00,$80 ; SURF
-	db SFX_BATTLE_28,         $40,$80 ; ICE_BEAM
-	db SFX_BATTLE_29,         $f0,$e0 ; BLIZZARD
-	db SFX_PSYBEAM,           $00,$80 ; PSYBEAM
-	db SFX_BATTLE_2A,         $f0,$60 ; BUBBLEBEAM
-	db SFX_BATTLE_28,         $00,$80 ; AURORA_BEAM
-	db SFX_BATTLE_36,         $00,$80 ; HYPER_BEAM
-	db SFX_PECK,              $01,$a0 ; PECK
-	db SFX_BATTLE_13,         $f0,$20 ; DRILL_PECK
-	db SFX_BATTLE_23,         $01,$c0 ; SUBMISSION
-	db SFX_BATTLE_23,         $00,$80 ; LOW_KICK
-	db SFX_SUPER_EFFECTIVE,   $00,$e0 ; COUNTER
-	db SFX_BATTLE_26,         $01,$60 ; SEISMIC_TOSS
-	db SFX_BATTLE_26,         $20,$40 ; STRENGTH
-	db SFX_BATTLE_24,         $00,$80 ; ABSORB
-	db SFX_BATTLE_24,         $40,$c0 ; MEGA_DRAIN
-	db SFX_BATTLE_1B,         $03,$60 ; LEECH_SEED
-	db SFX_BATTLE_25,         $11,$e0 ; GROWTH
-	db SFX_BATTLE_12,         $20,$e0 ; RAZOR_LEAF
-	db SFX_BATTLE_2E,         $00,$80 ; SOLARBEAM
-	db SFX_BATTLE_1C,         $00,$80 ; POISONPOWDER
-	db SFX_BATTLE_1C,         $11,$a0 ; STUN_SPORE
-	db SFX_BATTLE_1C,         $01,$c0 ; SLEEP_POWDER
-	db SFX_BATTLE_13,         $14,$c0 ; PETAL_DANCE
-	db SFX_BATTLE_1B,         $02,$a0 ; STRING_SHOT
-	db SFX_BATTLE_29,         $f0,$80 ; DRAGON_RAGE
-	db SFX_BATTLE_29,         $20,$c0 ; FIRE_SPIN
-	db SFX_BATTLE_2F,         $00,$20 ; THUNDERSHOCK
-	db SFX_BATTLE_2F,         $20,$80 ; THUNDERBOLT
-	db SFX_BATTLE_2E,         $12,$60 ; THUNDER_WAVE
-	db SFX_BATTLE_26,         $00,$80 ; THUNDER
-	db SFX_BATTLE_14,         $01,$e0 ; ROCK_THROW
-	db SFX_BATTLE_29,         $0f,$e0 ; EARTHQUAKE
-	db SFX_BATTLE_29,         $11,$20 ; FISSURE
-	db SFX_DAMAGE,            $10,$40 ; DIG
-	db SFX_BATTLE_0F,         $10,$c0 ; TOXIC
-	db SFX_BATTLE_14,         $00,$20 ; CONFUSION
-	db SFX_PSYCHIC_M,         $00,$80 ; PSYCHIC_M
-	db SFX_BATTLE_35,         $11,$18 ; HYPNOSIS
-	db SFX_BATTLE_09,         $20,$c0 ; MEDITATE
-	db SFX_FAINT_FALL,        $20,$c0 ; AGILITY
-	db SFX_BATTLE_25,         $00,$10 ; QUICK_ATTACK
-	db SFX_BATTLE_26,         $f0,$20 ; RAGE
-	db SFX_BATTLE_33,         $f0,$c0 ; TELEPORT
-	db SFX_NOT_VERY_EFFECTIVE,$f0,$e0 ; NIGHT_SHADE
-	db SFX_BATTLE_09,         $f0,$40 ; MIMIC
-	db SFX_BATTLE_31,         $00,$80 ; SCREECH
-	db SFX_BATTLE_33,         $80,$40 ; DOUBLE_TEAM
-	db SFX_BATTLE_33,         $00,$80 ; RECOVER
-	db SFX_BATTLE_14,         $11,$20 ; HARDEN
-	db SFX_BATTLE_14,         $22,$10 ; MINIMIZE
-	db SFX_BATTLE_1B,         $f1,$ff ; SMOKESCREEN
-	db SFX_BATTLE_13,         $f1,$ff ; CONFUSE_RAY
-	db SFX_BATTLE_14,         $33,$30 ; WITHDRAW
-	db SFX_BATTLE_32,         $40,$c0 ; DEFENSE_CURL
-	db SFX_BATTLE_0E,         $20,$20 ; BARRIER
-	db SFX_BATTLE_0E,         $f0,$10 ; LIGHT_SCREEN
-	db SFX_BATTLE_0F,         $f8,$10 ; HAZE
-	db SFX_NOT_VERY_EFFECTIVE,$f0,$10 ; REFLECT
-	db SFX_BATTLE_25,         $00,$80 ; FOCUS_ENERGY
-	db SFX_BATTLE_18,         $00,$c0 ; BIDE
-	db SFX_BATTLE_32,         $c0,$ff ; METRONOME
-	db SFX_BATTLE_09,         $f2,$20 ; MIRROR_MOVE
-	db SFX_BATTLE_34,         $00,$80 ; SELFDESTRUCT
-	db SFX_BATTLE_34,         $00,$40 ; EGG_BOMB
-	db SFX_BATTLE_09,         $00,$40 ; LICK
-	db SFX_NOT_VERY_EFFECTIVE,$10,$ff ; SMOG
-	db SFX_BATTLE_2A,         $20,$20 ; SLUDGE
-	db SFX_BATTLE_32,         $00,$80 ; BONE_CLUB
-	db SFX_BATTLE_29,         $1f,$20 ; FIRE_BLAST
-	db SFX_BATTLE_25,         $2f,$80 ; WATERFALL
-	db SFX_BATTLE_0F,         $1f,$ff ; CLAMP
-	db SFX_BATTLE_2B,         $1f,$60 ; SWIFT
-	db SFX_BATTLE_26,         $1e,$20 ; SKULL_BASH
-	db SFX_BATTLE_26,         $1f,$18 ; SPIKE_CANNON
-	db SFX_BATTLE_14,         $0f,$80 ; CONSTRICT
-	db SFX_BATTLE_09,         $f8,$10 ; AMNESIA
-	db SFX_FAINT_FALL,        $18,$20 ; KINESIS
-	db SFX_BATTLE_32,         $08,$40 ; SOFTBOILED
-	db SFX_BATTLE_17,         $01,$e0 ; HI_JUMP_KICK
-	db SFX_NOT_VERY_EFFECTIVE,$09,$ff ; GLARE
-	db SFX_BATTLE_35,         $42,$01 ; DREAM_EATER
-	db SFX_BATTLE_1C,         $00,$ff ; POISON_GAS
-	db SFX_BATTLE_32,         $08,$e0 ; BARRAGE
-	db SFX_BATTLE_24,         $00,$80 ; LEECH_LIFE
-	db SFX_BATTLE_09,         $88,$10 ; LOVELY_KISS
-	db SFX_BATTLE_25,         $48,$ff ; SKY_ATTACK
-	db SFX_FAINT_FALL,        $ff,$ff ; TRANSFORM
-	db SFX_BATTLE_24,         $ff,$10 ; BUBBLE
-	db SFX_FAINT_FALL,        $ff,$04 ; DIZZY_PUNCH
-	db SFX_BATTLE_1C,         $01,$ff ; SPORE
-	db SFX_BATTLE_13,         $f8,$ff ; FLASH
-	db SFX_BATTLE_0C,         $f0,$f0 ; PSYWAVE
-	db SFX_BATTLE_0F,         $08,$10 ; SPLASH
-	db SFX_BATTLE_0D,         $f0,$ff ; ACID_ARMOR
-	db SFX_SUPER_EFFECTIVE,   $f0,$ff ; CRABHAMMER
-	db SFX_BATTLE_34,         $10,$ff ; EXPLOSION
-	db SFX_BATTLE_0E,         $f0,$20 ; FURY_SWIPES
-	db SFX_BATTLE_2B,         $f0,$60 ; BONEMERANG
-	db SFX_BATTLE_21,         $12,$10 ; REST
-	db SFX_BATTLE_36,         $f0,$20 ; ROCK_SLIDE
-	db SFX_BATTLE_1E,         $12,$ff ; HYPER_FANG
-	db SFX_BATTLE_31,         $80,$04 ; SHARPEN
-	db SFX_BATTLE_33,         $f0,$10 ; CONVERSION
-	db SFX_BATTLE_29,         $f8,$ff ; TRI_ATTACK
-	db SFX_BATTLE_26,         $f0,$ff ; SUPER_FANG
-	db SFX_NOT_VERY_EFFECTIVE,$01,$ff ; SLASH
-	db SFX_BATTLE_2C,         $d8,$04 ; SUBSTITUTE
-	db SFX_BATTLE_0B,         $00,$80 ; STRUGGLE
-	db SFX_BATTLE_0B,         $00,$80
+	db SFX_POUND,              $00, $80 ; POUND
+	db SFX_BATTLE_0C,          $10, $80 ; KARATE_CHOP
+	db SFX_DOUBLESLAP,         $00, $80 ; DOUBLESLAP
+	db SFX_BATTLE_0B,          $01, $80 ; COMET_PUNCH
+	db SFX_BATTLE_0D,          $00, $40 ; MEGA_PUNCH
+	db SFX_SILPH_SCOPE,        $00, $ff ; PAY_DAY
+	db SFX_BATTLE_0D,          $10, $60 ; FIRE_PUNCH
+	db SFX_BATTLE_0D,          $20, $80 ; ICE_PUNCH
+	db SFX_BATTLE_0D,          $00, $a0 ; THUNDERPUNCH
+	db SFX_DAMAGE,             $00, $80 ; SCRATCH
+	db SFX_BATTLE_0F,          $20, $40 ; VICEGRIP
+	db SFX_BATTLE_0F,          $00, $80 ; GUILLOTINE
+	db SFX_BATTLE_0E,          $00, $a0 ; RAZOR_WIND
+	db SFX_NOT_VERY_EFFECTIVE, $10, $c0 ; SWORDS_DANCE
+	db SFX_NOT_VERY_EFFECTIVE, $00, $a0 ; CUT
+	db SFX_BATTLE_12,          $00, $c0 ; GUST
+	db SFX_BATTLE_12,          $10, $a0 ; WING_ATTACK
+	db SFX_BATTLE_13,          $00, $e0 ; WHIRLWIND
+	db SFX_NOT_VERY_EFFECTIVE, $20, $c0 ; FLY
+	db SFX_BATTLE_14,          $00, $80 ; BIND
+	db SFX_BATTLE_22,          $00, $80 ; SLAM
+	db SFX_VINE_WHIP,          $01, $80 ; VINE_WHIP
+	db SFX_BATTLE_20,          $00, $80 ; STOMP
+	db SFX_BATTLE_17,          $f0, $40 ; DOUBLE_KICK
+	db SFX_SUPER_EFFECTIVE,    $00, $80 ; MEGA_KICK
+	db SFX_BATTLE_17,          $00, $80 ; JUMP_KICK
+	db SFX_BATTLE_21,          $10, $80 ; ROLLING_KICK
+	db SFX_BATTLE_1B,          $01, $a0 ; SAND_ATTACK
+	db SFX_BATTLE_18,          $00, $80 ; HEADBUTT
+	db SFX_BATTLE_1E,          $00, $60 ; HORN_ATTACK
+	db SFX_BATTLE_1E,          $01, $40 ; FURY_ATTACK
+	db SFX_HORN_DRILL,         $00, $a0 ; HORN_DRILL
+	db SFX_SUPER_EFFECTIVE,    $10, $a0 ; TACKLE
+	db SFX_BATTLE_20,          $00, $c0 ; BODY_SLAM
+	db SFX_BATTLE_14,          $10, $60 ; WRAP
+	db SFX_SUPER_EFFECTIVE,    $00, $a0 ; TAKE_DOWN
+	db SFX_BATTLE_22,          $11, $c0 ; THRASH
+	db SFX_SUPER_EFFECTIVE,    $20, $c0 ; DOUBLE_EDGE
+	db SFX_BATTLE_21,          $00, $80 ; TAIL_WHIP
+	db SFX_BATTLE_1B,          $00, $80 ; POISON_STING
+	db SFX_BATTLE_1B,          $20, $c0 ; TWINEEDLE
+	db SFX_BATTLE_19,          $00, $80 ; PIN_MISSILE
+	db SFX_BATTLE_31,          $ff, $40 ; LEER
+	db SFX_BATTLE_1E,          $00, $80 ; BITE
+	db SFX_BATTLE_0B,          $00, $c0 ; GROWL
+	db SFX_BATTLE_0B,          $00, $40 ; ROAR
+	db SFX_BATTLE_35,          $00, $80 ; SING
+	db SFX_BATTLE_27,          $40, $60 ; SUPERSONIC
+	db SFX_BATTLE_27,          $00, $80 ; SONICBOOM
+	db SFX_BATTLE_27,          $ff, $40 ; DISABLE
+	db SFX_BATTLE_2A,          $80, $c0 ; ACID
+	db SFX_BATTLE_19,          $10, $a0 ; EMBER
+	db SFX_BATTLE_19,          $21, $e0 ; FLAMETHROWER
+	db SFX_BATTLE_29,          $00, $80 ; MIST
+	db SFX_BATTLE_24,          $20, $60 ; WATER_GUN
+	db SFX_BATTLE_2A,          $00, $80 ; HYDRO_PUMP
+	db SFX_BATTLE_2C,          $00, $80 ; SURF
+	db SFX_BATTLE_28,          $40, $80 ; ICE_BEAM
+	db SFX_BATTLE_29,          $f0, $e0 ; BLIZZARD
+	db SFX_PSYBEAM,            $00, $80 ; PSYBEAM
+	db SFX_BATTLE_2A,          $f0, $60 ; BUBBLEBEAM
+	db SFX_BATTLE_28,          $00, $80 ; AURORA_BEAM
+	db SFX_BATTLE_36,          $00, $80 ; HYPER_BEAM
+	db SFX_PECK,               $01, $a0 ; PECK
+	db SFX_BATTLE_13,          $f0, $20 ; DRILL_PECK
+	db SFX_BATTLE_23,          $01, $c0 ; SUBMISSION
+	db SFX_BATTLE_23,          $00, $80 ; LOW_KICK
+	db SFX_SUPER_EFFECTIVE,    $00, $e0 ; COUNTER
+	db SFX_BATTLE_26,          $01, $60 ; SEISMIC_TOSS
+	db SFX_BATTLE_26,          $20, $40 ; STRENGTH
+	db SFX_BATTLE_24,          $00, $80 ; ABSORB
+	db SFX_BATTLE_24,          $40, $c0 ; MEGA_DRAIN
+	db SFX_BATTLE_1B,          $03, $60 ; LEECH_SEED
+	db SFX_BATTLE_25,          $11, $e0 ; GROWTH
+	db SFX_BATTLE_12,          $20, $e0 ; RAZOR_LEAF
+	db SFX_BATTLE_2E,          $00, $80 ; SOLARBEAM
+	db SFX_BATTLE_1C,          $00, $80 ; POISONPOWDER
+	db SFX_BATTLE_1C,          $11, $a0 ; STUN_SPORE
+	db SFX_BATTLE_1C,          $01, $c0 ; SLEEP_POWDER
+	db SFX_BATTLE_13,          $14, $c0 ; PETAL_DANCE
+	db SFX_BATTLE_1B,          $02, $a0 ; STRING_SHOT
+	db SFX_BATTLE_29,          $f0, $80 ; DRAGON_RAGE
+	db SFX_BATTLE_29,          $20, $c0 ; FIRE_SPIN
+	db SFX_BATTLE_2F,          $00, $20 ; THUNDERSHOCK
+	db SFX_BATTLE_2F,          $20, $80 ; THUNDERBOLT
+	db SFX_BATTLE_2E,          $12, $60 ; THUNDER_WAVE
+	db SFX_BATTLE_26,          $00, $80 ; THUNDER
+	db SFX_BATTLE_14,          $01, $e0 ; ROCK_THROW
+	db SFX_BATTLE_29,          $0f, $e0 ; EARTHQUAKE
+	db SFX_BATTLE_29,          $11, $20 ; FISSURE
+	db SFX_DAMAGE,             $10, $40 ; DIG
+	db SFX_BATTLE_0F,          $10, $c0 ; TOXIC
+	db SFX_BATTLE_14,          $00, $20 ; CONFUSION
+	db SFX_PSYCHIC_M,          $00, $80 ; PSYCHIC_M
+	db SFX_BATTLE_35,          $11, $18 ; HYPNOSIS
+	db SFX_BATTLE_09,          $20, $c0 ; MEDITATE
+	db SFX_FAINT_FALL,         $20, $c0 ; AGILITY
+	db SFX_BATTLE_25,          $00, $10 ; QUICK_ATTACK
+	db SFX_BATTLE_26,          $f0, $20 ; RAGE
+	db SFX_BATTLE_33,          $f0, $c0 ; TELEPORT
+	db SFX_NOT_VERY_EFFECTIVE, $f0, $e0 ; NIGHT_SHADE
+	db SFX_BATTLE_09,          $f0, $40 ; MIMIC
+	db SFX_BATTLE_31,          $00, $80 ; SCREECH
+	db SFX_BATTLE_33,          $80, $40 ; DOUBLE_TEAM
+	db SFX_BATTLE_33,          $00, $80 ; RECOVER
+	db SFX_BATTLE_14,          $11, $20 ; HARDEN
+	db SFX_BATTLE_14,          $22, $10 ; MINIMIZE
+	db SFX_BATTLE_1B,          $f1, $ff ; SMOKESCREEN
+	db SFX_BATTLE_13,          $f1, $ff ; CONFUSE_RAY
+	db SFX_BATTLE_14,          $33, $30 ; WITHDRAW
+	db SFX_BATTLE_32,          $40, $c0 ; DEFENSE_CURL
+	db SFX_BATTLE_0E,          $20, $20 ; BARRIER
+	db SFX_BATTLE_0E,          $f0, $10 ; LIGHT_SCREEN
+	db SFX_BATTLE_0F,          $f8, $10 ; HAZE
+	db SFX_NOT_VERY_EFFECTIVE, $f0, $10 ; REFLECT
+	db SFX_BATTLE_25,          $00, $80 ; FOCUS_ENERGY
+	db SFX_BATTLE_18,          $00, $c0 ; BIDE
+	db SFX_BATTLE_32,          $c0, $ff ; METRONOME
+	db SFX_BATTLE_09,          $f2, $20 ; MIRROR_MOVE
+	db SFX_BATTLE_34,          $00, $80 ; SELFDESTRUCT
+	db SFX_BATTLE_34,          $00, $40 ; EGG_BOMB
+	db SFX_BATTLE_09,          $00, $40 ; LICK
+	db SFX_NOT_VERY_EFFECTIVE, $10, $ff ; SMOG
+	db SFX_BATTLE_2A,          $20, $20 ; SLUDGE
+	db SFX_BATTLE_32,          $00, $80 ; BONE_CLUB
+	db SFX_BATTLE_29,          $1f, $20 ; FIRE_BLAST
+	db SFX_BATTLE_25,          $2f, $80 ; WATERFALL
+	db SFX_BATTLE_0F,          $1f, $ff ; CLAMP
+	db SFX_BATTLE_2B,          $1f, $60 ; SWIFT
+	db SFX_BATTLE_26,          $1e, $20 ; SKULL_BASH
+	db SFX_BATTLE_26,          $1f, $18 ; SPIKE_CANNON
+	db SFX_BATTLE_14,          $0f, $80 ; CONSTRICT
+	db SFX_BATTLE_09,          $f8, $10 ; AMNESIA
+	db SFX_FAINT_FALL,         $18, $20 ; KINESIS
+	db SFX_BATTLE_32,          $08, $40 ; SOFTBOILED
+	db SFX_BATTLE_17,          $01, $e0 ; HI_JUMP_KICK
+	db SFX_NOT_VERY_EFFECTIVE, $09, $ff ; GLARE
+	db SFX_BATTLE_35,          $42, $01 ; DREAM_EATER
+	db SFX_BATTLE_1C,          $00, $ff ; POISON_GAS
+	db SFX_BATTLE_32,          $08, $e0 ; BARRAGE
+	db SFX_BATTLE_24,          $00, $80 ; LEECH_LIFE
+	db SFX_BATTLE_09,          $88, $10 ; LOVELY_KISS
+	db SFX_BATTLE_25,          $48, $ff ; SKY_ATTACK
+	db SFX_FAINT_FALL,         $ff, $ff ; TRANSFORM
+	db SFX_BATTLE_24,          $ff, $10 ; BUBBLE
+	db SFX_FAINT_FALL,         $ff, $04 ; DIZZY_PUNCH
+	db SFX_BATTLE_1C,          $01, $ff ; SPORE
+	db SFX_BATTLE_13,          $f8, $ff ; FLASH
+	db SFX_BATTLE_0C,          $f0, $f0 ; PSYWAVE
+	db SFX_BATTLE_0F,          $08, $10 ; SPLASH
+	db SFX_BATTLE_0D,          $f0, $ff ; ACID_ARMOR
+	db SFX_SUPER_EFFECTIVE,    $f0, $ff ; CRABHAMMER
+	db SFX_BATTLE_34,          $10, $ff ; EXPLOSION
+	db SFX_BATTLE_0E,          $f0, $20 ; FURY_SWIPES
+	db SFX_BATTLE_2B,          $f0, $60 ; BONEMERANG
+	db SFX_BATTLE_21,          $12, $10 ; REST
+	db SFX_BATTLE_36,          $f0, $20 ; ROCK_SLIDE
+	db SFX_BATTLE_1E,          $12, $ff ; HYPER_FANG
+	db SFX_BATTLE_31,          $80, $04 ; SHARPEN
+	db SFX_BATTLE_33,          $f0, $10 ; CONVERSION
+	db SFX_BATTLE_29,          $f8, $ff ; TRI_ATTACK
+	db SFX_BATTLE_26,          $f0, $ff ; SUPER_FANG
+	db SFX_NOT_VERY_EFFECTIVE, $01, $ff ; SLASH
+	db SFX_BATTLE_2C,          $d8, $04 ; SUBSTITUTE
+	db SFX_BATTLE_0B,          $00, $80 ; STRUGGLE
+	db SFX_BATTLE_0B,          $00, $80
--- a/data/pokemon/base_stats/abra.asm
+++ b/data/pokemon/base_stats/abra.asm
@@ -11,7 +11,7 @@
 	dw AbraPicFront, AbraPicBack
 
 	db TELEPORT, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/aerodactyl.asm
+++ b/data/pokemon/base_stats/aerodactyl.asm
@@ -11,7 +11,7 @@
 	dw AerodactylPicFront, AerodactylPicBack
 
 	db WING_ATTACK, AGILITY, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm RAZOR_WIND,   WHIRLWIND,    TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/alakazam.asm
+++ b/data/pokemon/base_stats/alakazam.asm
@@ -11,7 +11,7 @@
 	dw AlakazamPicFront, AlakazamPicBack
 
 	db TELEPORT, CONFUSION, DISABLE, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/arbok.asm
+++ b/data/pokemon/base_stats/arbok.asm
@@ -11,7 +11,7 @@
 	dw ArbokPicFront, ArbokPicBack
 
 	db WRAP, LEER, POISON_STING, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  HYPER_BEAM,   \
--- a/data/pokemon/base_stats/arcanine.asm
+++ b/data/pokemon/base_stats/arcanine.asm
@@ -11,7 +11,7 @@
 	dw ArcaninePicFront, ArcaninePicBack
 
 	db ROAR, EMBER, LEER, TAKE_DOWN ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  HYPER_BEAM,   \
--- a/data/pokemon/base_stats/articuno.asm
+++ b/data/pokemon/base_stats/articuno.asm
@@ -11,7 +11,7 @@
 	dw ArticunoPicFront, ArticunoPicBack
 
 	db PECK, ICE_BEAM, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm RAZOR_WIND,   WHIRLWIND,    TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/beedrill.asm
+++ b/data/pokemon/base_stats/beedrill.asm
@@ -11,7 +11,7 @@
 	dw BeedrillPicFront, BeedrillPicBack
 
 	db FURY_ATTACK, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm SWORDS_DANCE, TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  HYPER_BEAM,   \
--- a/data/pokemon/base_stats/bellsprout.asm
+++ b/data/pokemon/base_stats/bellsprout.asm
@@ -11,7 +11,7 @@
 	dw BellsproutPicFront, BellsproutPicBack
 
 	db VINE_WHIP, GROWTH, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm SWORDS_DANCE, TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  RAGE,         \
--- a/data/pokemon/base_stats/blastoise.asm
+++ b/data/pokemon/base_stats/blastoise.asm
@@ -11,7 +11,7 @@
 	dw BlastoisePicFront, BlastoisePicBack
 
 	db TACKLE, TAIL_WHIP, BUBBLE, WATER_GUN ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/bulbasaur.asm
+++ b/data/pokemon/base_stats/bulbasaur.asm
@@ -11,7 +11,7 @@
 	dw BulbasaurPicFront, BulbasaurPicBack
 
 	db TACKLE, GROWL, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm SWORDS_DANCE, TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/butterfree.asm
+++ b/data/pokemon/base_stats/butterfree.asm
@@ -11,7 +11,7 @@
 	dw ButterfreePicFront, ButterfreePicBack
 
 	db CONFUSION, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm RAZOR_WIND,   WHIRLWIND,    TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/caterpie.asm
+++ b/data/pokemon/base_stats/caterpie.asm
@@ -11,7 +11,7 @@
 	dw CaterpiePicFront, CaterpiePicBack
 
 	db TACKLE, STRING_SHOT, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm
--- a/data/pokemon/base_stats/chansey.asm
+++ b/data/pokemon/base_stats/chansey.asm
@@ -11,7 +11,7 @@
 	dw ChanseyPicFront, ChanseyPicBack
 
 	db POUND, DOUBLESLAP, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 4 ; growth rate
+	db GROWTH_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/charizard.asm
+++ b/data/pokemon/base_stats/charizard.asm
@@ -11,7 +11,7 @@
 	dw CharizardPicFront, CharizardPicBack
 
 	db SCRATCH, GROWL, EMBER, LEER ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   SWORDS_DANCE, MEGA_KICK,    TOXIC,        BODY_SLAM,    \
--- a/data/pokemon/base_stats/charmander.asm
+++ b/data/pokemon/base_stats/charmander.asm
@@ -11,7 +11,7 @@
 	dw CharmanderPicFront, CharmanderPicBack
 
 	db SCRATCH, GROWL, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   SWORDS_DANCE, MEGA_KICK,    TOXIC,        BODY_SLAM,    \
--- a/data/pokemon/base_stats/charmeleon.asm
+++ b/data/pokemon/base_stats/charmeleon.asm
@@ -11,7 +11,7 @@
 	dw CharmeleonPicFront, CharmeleonPicBack
 
 	db SCRATCH, GROWL, EMBER, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   SWORDS_DANCE, MEGA_KICK,    TOXIC,        BODY_SLAM,    \
--- a/data/pokemon/base_stats/clefable.asm
+++ b/data/pokemon/base_stats/clefable.asm
@@ -11,7 +11,7 @@
 	dw ClefablePicFront, ClefablePicBack
 
 	db SING, DOUBLESLAP, MINIMIZE, METRONOME ; level 1 learnset
-	db 4 ; growth rate
+	db GROWTH_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/clefairy.asm
+++ b/data/pokemon/base_stats/clefairy.asm
@@ -11,7 +11,7 @@
 	dw ClefairyPicFront, ClefairyPicBack
 
 	db POUND, GROWL, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 4 ; growth rate
+	db GROWTH_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/cloyster.asm
+++ b/data/pokemon/base_stats/cloyster.asm
@@ -11,7 +11,7 @@
 	dw CloysterPicFront, CloysterPicBack
 
 	db WITHDRAW, SUPERSONIC, CLAMP, AURORA_BEAM ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  BUBBLEBEAM,   WATER_GUN,    \
--- a/data/pokemon/base_stats/cubone.asm
+++ b/data/pokemon/base_stats/cubone.asm
@@ -11,7 +11,7 @@
 	dw CubonePicFront, CubonePicBack
 
 	db BONE_CLUB, GROWL, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/dewgong.asm
+++ b/data/pokemon/base_stats/dewgong.asm
@@ -11,7 +11,7 @@
 	dw DewgongPicFront, DewgongPicBack
 
 	db HEADBUTT, GROWL, AURORA_BEAM, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        HORN_DRILL,   BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/diglett.asm
+++ b/data/pokemon/base_stats/diglett.asm
@@ -11,7 +11,7 @@
 	dw DiglettPicFront, DiglettPicBack
 
 	db SCRATCH, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  RAGE,         \
--- a/data/pokemon/base_stats/ditto.asm
+++ b/data/pokemon/base_stats/ditto.asm
@@ -11,7 +11,7 @@
 	dw DittoPicFront, DittoPicBack
 
 	db TRANSFORM, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm
--- a/data/pokemon/base_stats/dodrio.asm
+++ b/data/pokemon/base_stats/dodrio.asm
@@ -11,7 +11,7 @@
 	dw DodrioPicFront, DodrioPicBack
 
 	db PECK, GROWL, FURY_ATTACK, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm WHIRLWIND,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/doduo.asm
+++ b/data/pokemon/base_stats/doduo.asm
@@ -11,7 +11,7 @@
 	dw DoduoPicFront, DoduoPicBack
 
 	db PECK, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm WHIRLWIND,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/dragonair.asm
+++ b/data/pokemon/base_stats/dragonair.asm
@@ -11,7 +11,7 @@
 	dw DragonairPicFront, DragonairPicBack
 
 	db WRAP, LEER, THUNDER_WAVE, NO_MOVE ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        HORN_DRILL,   BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/dragonite.asm
+++ b/data/pokemon/base_stats/dragonite.asm
@@ -11,7 +11,7 @@
 	dw DragonitePicFront, DragonitePicBack
 
 	db WRAP, LEER, THUNDER_WAVE, AGILITY ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm RAZOR_WIND,   TOXIC,        HORN_DRILL,   BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/dratini.asm
+++ b/data/pokemon/base_stats/dratini.asm
@@ -11,7 +11,7 @@
 	dw DratiniPicFront, DratiniPicBack
 
 	db WRAP, LEER, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  BUBBLEBEAM,   \
--- a/data/pokemon/base_stats/drowzee.asm
+++ b/data/pokemon/base_stats/drowzee.asm
@@ -11,7 +11,7 @@
 	dw DrowzeePicFront, DrowzeePicBack
 
 	db POUND, HYPNOSIS, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/dugtrio.asm
+++ b/data/pokemon/base_stats/dugtrio.asm
@@ -11,7 +11,7 @@
 	dw DugtrioPicFront, DugtrioPicBack
 
 	db SCRATCH, GROWL, DIG, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  HYPER_BEAM,   \
--- a/data/pokemon/base_stats/eevee.asm
+++ b/data/pokemon/base_stats/eevee.asm
@@ -11,7 +11,7 @@
 	dw EeveePicFront, EeveePicBack
 
 	db TACKLE, SAND_ATTACK, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  RAGE,         \
--- a/data/pokemon/base_stats/ekans.asm
+++ b/data/pokemon/base_stats/ekans.asm
@@ -11,7 +11,7 @@
 	dw EkansPicFront, EkansPicBack
 
 	db WRAP, LEER, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  RAGE,         \
--- a/data/pokemon/base_stats/electabuzz.asm
+++ b/data/pokemon/base_stats/electabuzz.asm
@@ -11,7 +11,7 @@
 	dw ElectabuzzPicFront, ElectabuzzPicBack
 
 	db QUICK_ATTACK, LEER, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/electrode.asm
+++ b/data/pokemon/base_stats/electrode.asm
@@ -11,7 +11,7 @@
 	dw ElectrodePicFront, ElectrodePicBack
 
 	db TACKLE, SCREECH, SONICBOOM, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        TAKE_DOWN,    HYPER_BEAM,   RAGE,         THUNDERBOLT,  \
--- a/data/pokemon/base_stats/exeggcute.asm
+++ b/data/pokemon/base_stats/exeggcute.asm
@@ -11,7 +11,7 @@
 	dw ExeggcutePicFront, ExeggcutePicBack
 
 	db BARRAGE, HYPNOSIS, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  RAGE,         PSYCHIC_M,    \
--- a/data/pokemon/base_stats/exeggutor.asm
+++ b/data/pokemon/base_stats/exeggutor.asm
@@ -11,7 +11,7 @@
 	dw ExeggutorPicFront, ExeggutorPicBack
 
 	db BARRAGE, HYPNOSIS, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  HYPER_BEAM,   RAGE,         \
--- a/data/pokemon/base_stats/farfetchd.asm
+++ b/data/pokemon/base_stats/farfetchd.asm
@@ -11,7 +11,7 @@
 	dw FarfetchdPicFront, FarfetchdPicBack
 
 	db PECK, SAND_ATTACK, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm RAZOR_WIND,   SWORDS_DANCE, WHIRLWIND,    TOXIC,        BODY_SLAM,    \
--- a/data/pokemon/base_stats/fearow.asm
+++ b/data/pokemon/base_stats/fearow.asm
@@ -11,7 +11,7 @@
 	dw FearowPicFront, FearowPicBack
 
 	db PECK, GROWL, LEER, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm RAZOR_WIND,   WHIRLWIND,    TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/flareon.asm
+++ b/data/pokemon/base_stats/flareon.asm
@@ -11,7 +11,7 @@
 	dw FlareonPicFront, FlareonPicBack
 
 	db TACKLE, SAND_ATTACK, QUICK_ATTACK, EMBER ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  HYPER_BEAM,   \
--- a/data/pokemon/base_stats/gastly.asm
+++ b/data/pokemon/base_stats/gastly.asm
@@ -11,7 +11,7 @@
 	dw GastlyPicFront, GastlyPicBack
 
 	db LICK, CONFUSE_RAY, NIGHT_SHADE, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        RAGE,         MEGA_DRAIN,   THUNDERBOLT,  THUNDER,      \
--- a/data/pokemon/base_stats/gengar.asm
+++ b/data/pokemon/base_stats/gengar.asm
@@ -11,7 +11,7 @@
 	dw GengarPicFront, GengarPicBack
 
 	db LICK, CONFUSE_RAY, NIGHT_SHADE, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/geodude.asm
+++ b/data/pokemon/base_stats/geodude.asm
@@ -11,7 +11,7 @@
 	dw GeodudePicFront, GeodudePicBack
 
 	db TACKLE, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/gloom.asm
+++ b/data/pokemon/base_stats/gloom.asm
@@ -11,7 +11,7 @@
 	dw GloomPicFront, GloomPicBack
 
 	db ABSORB, POISONPOWDER, STUN_SPORE, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm SWORDS_DANCE, TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  RAGE,         \
--- a/data/pokemon/base_stats/golbat.asm
+++ b/data/pokemon/base_stats/golbat.asm
@@ -11,7 +11,7 @@
 	dw GolbatPicFront, GolbatPicBack
 
 	db LEECH_LIFE, SCREECH, BITE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm RAZOR_WIND,   WHIRLWIND,    TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/goldeen.asm
+++ b/data/pokemon/base_stats/goldeen.asm
@@ -11,7 +11,7 @@
 	dw GoldeenPicFront, GoldeenPicBack
 
 	db PECK, TAIL_WHIP, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        HORN_DRILL,   TAKE_DOWN,    DOUBLE_EDGE,  BUBBLEBEAM,   \
--- a/data/pokemon/base_stats/golduck.asm
+++ b/data/pokemon/base_stats/golduck.asm
@@ -11,7 +11,7 @@
 	dw GolduckPicFront, GolduckPicBack
 
 	db SCRATCH, TAIL_WHIP, DISABLE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/golem.asm
+++ b/data/pokemon/base_stats/golem.asm
@@ -11,7 +11,7 @@
 	dw GolemPicFront, GolemPicBack
 
 	db TACKLE, DEFENSE_CURL, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/graveler.asm
+++ b/data/pokemon/base_stats/graveler.asm
@@ -11,7 +11,7 @@
 	dw GravelerPicFront, GravelerPicBack
 
 	db TACKLE, DEFENSE_CURL, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/grimer.asm
+++ b/data/pokemon/base_stats/grimer.asm
@@ -11,7 +11,7 @@
 	dw GrimerPicFront, GrimerPicBack
 
 	db POUND, DISABLE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    RAGE,         MEGA_DRAIN,   THUNDERBOLT,  \
--- a/data/pokemon/base_stats/growlithe.asm
+++ b/data/pokemon/base_stats/growlithe.asm
@@ -11,7 +11,7 @@
 	dw GrowlithePicFront, GrowlithePicBack
 
 	db BITE, ROAR, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  RAGE,         \
--- a/data/pokemon/base_stats/gyarados.asm
+++ b/data/pokemon/base_stats/gyarados.asm
@@ -11,7 +11,7 @@
 	dw GyaradosPicFront, GyaradosPicBack
 
 	db BITE, DRAGON_RAGE, LEER, HYDRO_PUMP ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  BUBBLEBEAM,   \
--- a/data/pokemon/base_stats/haunter.asm
+++ b/data/pokemon/base_stats/haunter.asm
@@ -11,7 +11,7 @@
 	dw HaunterPicFront, HaunterPicBack
 
 	db LICK, CONFUSE_RAY, NIGHT_SHADE, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        RAGE,         MEGA_DRAIN,   THUNDERBOLT,  THUNDER,      \
--- a/data/pokemon/base_stats/hitmonchan.asm
+++ b/data/pokemon/base_stats/hitmonchan.asm
@@ -11,7 +11,7 @@
 	dw HitmonchanPicFront, HitmonchanPicBack
 
 	db COMET_PUNCH, AGILITY, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/hitmonlee.asm
+++ b/data/pokemon/base_stats/hitmonlee.asm
@@ -11,7 +11,7 @@
 	dw HitmonleePicFront, HitmonleePicBack
 
 	db DOUBLE_KICK, MEDITATE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/horsea.asm
+++ b/data/pokemon/base_stats/horsea.asm
@@ -11,7 +11,7 @@
 	dw HorseaPicFront, HorseaPicBack
 
 	db BUBBLE, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  BUBBLEBEAM,   WATER_GUN,    \
--- a/data/pokemon/base_stats/hypno.asm
+++ b/data/pokemon/base_stats/hypno.asm
@@ -11,7 +11,7 @@
 	dw HypnoPicFront, HypnoPicBack
 
 	db POUND, HYPNOSIS, DISABLE, CONFUSION ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/ivysaur.asm
+++ b/data/pokemon/base_stats/ivysaur.asm
@@ -11,7 +11,7 @@
 	dw IvysaurPicFront, IvysaurPicBack
 
 	db TACKLE, GROWL, LEECH_SEED, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm SWORDS_DANCE, TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/jigglypuff.asm
+++ b/data/pokemon/base_stats/jigglypuff.asm
@@ -11,7 +11,7 @@
 	dw JigglypuffPicFront, JigglypuffPicBack
 
 	db SING, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 4 ; growth rate
+	db GROWTH_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/jolteon.asm
+++ b/data/pokemon/base_stats/jolteon.asm
@@ -11,7 +11,7 @@
 	dw JolteonPicFront, JolteonPicBack
 
 	db TACKLE, SAND_ATTACK, QUICK_ATTACK, THUNDERSHOCK ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  HYPER_BEAM,   \
--- a/data/pokemon/base_stats/jynx.asm
+++ b/data/pokemon/base_stats/jynx.asm
@@ -11,7 +11,7 @@
 	dw JynxPicFront, JynxPicBack
 
 	db POUND, LOVELY_KISS, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/kabuto.asm
+++ b/data/pokemon/base_stats/kabuto.asm
@@ -11,7 +11,7 @@
 	dw KabutoPicFront, KabutoPicBack
 
 	db SCRATCH, HARDEN, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  BUBBLEBEAM,   \
--- a/data/pokemon/base_stats/kabutops.asm
+++ b/data/pokemon/base_stats/kabutops.asm
@@ -11,7 +11,7 @@
 	dw KabutopsPicFront, KabutopsPicBack
 
 	db SCRATCH, HARDEN, ABSORB, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm RAZOR_WIND,   SWORDS_DANCE, MEGA_KICK,    TOXIC,        BODY_SLAM,    \
--- a/data/pokemon/base_stats/kadabra.asm
+++ b/data/pokemon/base_stats/kadabra.asm
@@ -11,7 +11,7 @@
 	dw KadabraPicFront, KadabraPicBack
 
 	db TELEPORT, CONFUSION, DISABLE, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/kakuna.asm
+++ b/data/pokemon/base_stats/kakuna.asm
@@ -11,7 +11,7 @@
 	dw KakunaPicFront, KakunaPicBack
 
 	db HARDEN, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm
--- a/data/pokemon/base_stats/kangaskhan.asm
+++ b/data/pokemon/base_stats/kangaskhan.asm
@@ -11,7 +11,7 @@
 	dw KangaskhanPicFront, KangaskhanPicBack
 
 	db COMET_PUNCH, RAGE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/kingler.asm
+++ b/data/pokemon/base_stats/kingler.asm
@@ -11,7 +11,7 @@
 	dw KinglerPicFront, KinglerPicBack
 
 	db BUBBLE, LEER, VICEGRIP, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm SWORDS_DANCE, TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/koffing.asm
+++ b/data/pokemon/base_stats/koffing.asm
@@ -11,7 +11,7 @@
 	dw KoffingPicFront, KoffingPicBack
 
 	db TACKLE, SMOG, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        RAGE,         THUNDERBOLT,  THUNDER,      MIMIC,        \
--- a/data/pokemon/base_stats/krabby.asm
+++ b/data/pokemon/base_stats/krabby.asm
@@ -11,7 +11,7 @@
 	dw KrabbyPicFront, KrabbyPicBack
 
 	db BUBBLE, LEER, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm SWORDS_DANCE, TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/lapras.asm
+++ b/data/pokemon/base_stats/lapras.asm
@@ -11,7 +11,7 @@
 	dw LaprasPicFront, LaprasPicBack
 
 	db WATER_GUN, GROWL, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        HORN_DRILL,   BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/lickitung.asm
+++ b/data/pokemon/base_stats/lickitung.asm
@@ -11,7 +11,7 @@
 	dw LickitungPicFront, LickitungPicBack
 
 	db WRAP, SUPERSONIC, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   SWORDS_DANCE, MEGA_KICK,    TOXIC,        BODY_SLAM,    \
--- a/data/pokemon/base_stats/machamp.asm
+++ b/data/pokemon/base_stats/machamp.asm
@@ -11,7 +11,7 @@
 	dw MachampPicFront, MachampPicBack
 
 	db KARATE_CHOP, LOW_KICK, LEER, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/machoke.asm
+++ b/data/pokemon/base_stats/machoke.asm
@@ -11,7 +11,7 @@
 	dw MachokePicFront, MachokePicBack
 
 	db KARATE_CHOP, LOW_KICK, LEER, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/machop.asm
+++ b/data/pokemon/base_stats/machop.asm
@@ -11,7 +11,7 @@
 	dw MachopPicFront, MachopPicBack
 
 	db KARATE_CHOP, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/magikarp.asm
+++ b/data/pokemon/base_stats/magikarp.asm
@@ -11,7 +11,7 @@
 	dw MagikarpPicFront, MagikarpPicBack
 
 	db SPLASH, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm
--- a/data/pokemon/base_stats/magmar.asm
+++ b/data/pokemon/base_stats/magmar.asm
@@ -11,7 +11,7 @@
 	dw MagmarPicFront, MagmarPicBack
 
 	db EMBER, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/magnemite.asm
+++ b/data/pokemon/base_stats/magnemite.asm
@@ -11,7 +11,7 @@
 	dw MagnemitePicFront, MagnemitePicBack
 
 	db TACKLE, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  RAGE,         THUNDERBOLT,  \
--- a/data/pokemon/base_stats/magneton.asm
+++ b/data/pokemon/base_stats/magneton.asm
@@ -11,7 +11,7 @@
 	dw MagnetonPicFront, MagnetonPicBack
 
 	db TACKLE, SONICBOOM, THUNDERSHOCK, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  HYPER_BEAM,   RAGE,         \
--- a/data/pokemon/base_stats/mankey.asm
+++ b/data/pokemon/base_stats/mankey.asm
@@ -11,7 +11,7 @@
 	dw MankeyPicFront, MankeyPicBack
 
 	db SCRATCH, LEER, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/marowak.asm
+++ b/data/pokemon/base_stats/marowak.asm
@@ -11,7 +11,7 @@
 	dw MarowakPicFront, MarowakPicBack
 
 	db BONE_CLUB, GROWL, LEER, FOCUS_ENERGY ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/meowth.asm
+++ b/data/pokemon/base_stats/meowth.asm
@@ -11,7 +11,7 @@
 	dw MeowthPicFront, MeowthPicBack
 
 	db SCRATCH, GROWL, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  BUBBLEBEAM,   \
--- a/data/pokemon/base_stats/metapod.asm
+++ b/data/pokemon/base_stats/metapod.asm
@@ -11,7 +11,7 @@
 	dw MetapodPicFront, MetapodPicBack
 
 	db HARDEN, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm
--- a/data/pokemon/base_stats/mew.asm
+++ b/data/pokemon/base_stats/mew.asm
@@ -11,7 +11,7 @@
 	dw MewPicFront, MewPicBack
 
 	db POUND, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   RAZOR_WIND,   SWORDS_DANCE, WHIRLWIND,    MEGA_KICK,    \
--- a/data/pokemon/base_stats/mewtwo.asm
+++ b/data/pokemon/base_stats/mewtwo.asm
@@ -11,7 +11,7 @@
 	dw MewtwoPicFront, MewtwoPicBack
 
 	db CONFUSION, DISABLE, SWIFT, PSYCHIC_M ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/moltres.asm
+++ b/data/pokemon/base_stats/moltres.asm
@@ -11,7 +11,7 @@
 	dw MoltresPicFront, MoltresPicBack
 
 	db PECK, FIRE_SPIN, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm RAZOR_WIND,   WHIRLWIND,    TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/mrmime.asm
+++ b/data/pokemon/base_stats/mrmime.asm
@@ -11,7 +11,7 @@
 	dw MrMimePicFront, MrMimePicBack
 
 	db CONFUSION, BARRIER, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/muk.asm
+++ b/data/pokemon/base_stats/muk.asm
@@ -11,7 +11,7 @@
 	dw MukPicFront, MukPicBack
 
 	db POUND, DISABLE, POISON_GAS, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    HYPER_BEAM,   RAGE,         MEGA_DRAIN,   \
--- a/data/pokemon/base_stats/nidoking.asm
+++ b/data/pokemon/base_stats/nidoking.asm
@@ -11,7 +11,7 @@
 	dw NidokingPicFront, NidokingPicBack
 
 	db TACKLE, HORN_ATTACK, POISON_STING, THRASH ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        HORN_DRILL,   BODY_SLAM,    \
--- a/data/pokemon/base_stats/nidoqueen.asm
+++ b/data/pokemon/base_stats/nidoqueen.asm
@@ -11,7 +11,7 @@
 	dw NidoqueenPicFront, NidoqueenPicBack
 
 	db TACKLE, SCRATCH, TAIL_WHIP, BODY_SLAM ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        HORN_DRILL,   BODY_SLAM,    \
--- a/data/pokemon/base_stats/nidoranf.asm
+++ b/data/pokemon/base_stats/nidoranf.asm
@@ -11,7 +11,7 @@
 	dw NidoranFPicFront, NidoranFPicBack
 
 	db GROWL, TACKLE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  BLIZZARD,     \
--- a/data/pokemon/base_stats/nidoranm.asm
+++ b/data/pokemon/base_stats/nidoranm.asm
@@ -11,7 +11,7 @@
 	dw NidoranMPicFront, NidoranMPicBack
 
 	db LEER, TACKLE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        HORN_DRILL,   BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/nidorina.asm
+++ b/data/pokemon/base_stats/nidorina.asm
@@ -11,7 +11,7 @@
 	dw NidorinaPicFront, NidorinaPicBack
 
 	db GROWL, TACKLE, SCRATCH, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        HORN_DRILL,   BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/nidorino.asm
+++ b/data/pokemon/base_stats/nidorino.asm
@@ -11,7 +11,7 @@
 	dw NidorinoPicFront, NidorinoPicBack
 
 	db LEER, TACKLE, HORN_ATTACK, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        HORN_DRILL,   BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/ninetales.asm
+++ b/data/pokemon/base_stats/ninetales.asm
@@ -11,7 +11,7 @@
 	dw NinetalesPicFront, NinetalesPicBack
 
 	db EMBER, TAIL_WHIP, QUICK_ATTACK, ROAR ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  HYPER_BEAM,   \
--- a/data/pokemon/base_stats/oddish.asm
+++ b/data/pokemon/base_stats/oddish.asm
@@ -11,7 +11,7 @@
 	dw OddishPicFront, OddishPicBack
 
 	db ABSORB, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm SWORDS_DANCE, TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  RAGE,         \
--- a/data/pokemon/base_stats/omanyte.asm
+++ b/data/pokemon/base_stats/omanyte.asm
@@ -11,7 +11,7 @@
 	dw OmanytePicFront, OmanytePicBack
 
 	db WATER_GUN, WITHDRAW, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  BUBBLEBEAM,   \
--- a/data/pokemon/base_stats/omastar.asm
+++ b/data/pokemon/base_stats/omastar.asm
@@ -11,7 +11,7 @@
 	dw OmastarPicFront, OmastarPicBack
 
 	db WATER_GUN, WITHDRAW, HORN_ATTACK, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        HORN_DRILL,   BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/onix.asm
+++ b/data/pokemon/base_stats/onix.asm
@@ -11,7 +11,7 @@
 	dw OnixPicFront, OnixPicBack
 
 	db TACKLE, SCREECH, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  RAGE,         \
--- a/data/pokemon/base_stats/paras.asm
+++ b/data/pokemon/base_stats/paras.asm
@@ -11,7 +11,7 @@
 	dw ParasPicFront, ParasPicBack
 
 	db SCRATCH, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm SWORDS_DANCE, TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/parasect.asm
+++ b/data/pokemon/base_stats/parasect.asm
@@ -11,7 +11,7 @@
 	dw ParasectPicFront, ParasectPicBack
 
 	db SCRATCH, STUN_SPORE, LEECH_LIFE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm SWORDS_DANCE, TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/persian.asm
+++ b/data/pokemon/base_stats/persian.asm
@@ -11,7 +11,7 @@
 	dw PersianPicFront, PersianPicBack
 
 	db SCRATCH, GROWL, BITE, SCREECH ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  BUBBLEBEAM,   \
--- a/data/pokemon/base_stats/pidgeot.asm
+++ b/data/pokemon/base_stats/pidgeot.asm
@@ -11,7 +11,7 @@
 	dw PidgeotPicFront, PidgeotPicBack
 
 	db GUST, SAND_ATTACK, QUICK_ATTACK, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm RAZOR_WIND,   WHIRLWIND,    TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/pidgeotto.asm
+++ b/data/pokemon/base_stats/pidgeotto.asm
@@ -11,7 +11,7 @@
 	dw PidgeottoPicFront, PidgeottoPicBack
 
 	db GUST, SAND_ATTACK, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm RAZOR_WIND,   WHIRLWIND,    TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/pidgey.asm
+++ b/data/pokemon/base_stats/pidgey.asm
@@ -11,7 +11,7 @@
 	dw PidgeyPicFront, PidgeyPicBack
 
 	db GUST, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm RAZOR_WIND,   WHIRLWIND,    TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/pikachu.asm
+++ b/data/pokemon/base_stats/pikachu.asm
@@ -11,7 +11,7 @@
 	dw PikachuPicFront, PikachuPicBack
 
 	db THUNDERSHOCK, GROWL, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/pinsir.asm
+++ b/data/pokemon/base_stats/pinsir.asm
@@ -11,7 +11,7 @@
 	dw PinsirPicFront, PinsirPicBack
 
 	db VICEGRIP, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm SWORDS_DANCE, TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/poliwag.asm
+++ b/data/pokemon/base_stats/poliwag.asm
@@ -11,7 +11,7 @@
 	dw PoliwagPicFront, PoliwagPicBack
 
 	db BUBBLE, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  BUBBLEBEAM,   \
--- a/data/pokemon/base_stats/poliwhirl.asm
+++ b/data/pokemon/base_stats/poliwhirl.asm
@@ -11,7 +11,7 @@
 	dw PoliwhirlPicFront, PoliwhirlPicBack
 
 	db BUBBLE, HYPNOSIS, WATER_GUN, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/poliwrath.asm
+++ b/data/pokemon/base_stats/poliwrath.asm
@@ -11,7 +11,7 @@
 	dw PoliwrathPicFront, PoliwrathPicBack
 
 	db HYPNOSIS, WATER_GUN, DOUBLESLAP, BODY_SLAM ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/ponyta.asm
+++ b/data/pokemon/base_stats/ponyta.asm
@@ -11,7 +11,7 @@
 	dw PonytaPicFront, PonytaPicBack
 
 	db EMBER, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        HORN_DRILL,   BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/porygon.asm
+++ b/data/pokemon/base_stats/porygon.asm
@@ -11,7 +11,7 @@
 	dw PorygonPicFront, PorygonPicBack
 
 	db TACKLE, SHARPEN, CONVERSION, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  ICE_BEAM,     BLIZZARD,     \
--- a/data/pokemon/base_stats/primeape.asm
+++ b/data/pokemon/base_stats/primeape.asm
@@ -11,7 +11,7 @@
 	dw PrimeapePicFront, PrimeapePicBack
 
 	db SCRATCH, LEER, KARATE_CHOP, FURY_SWIPES ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/psyduck.asm
+++ b/data/pokemon/base_stats/psyduck.asm
@@ -11,7 +11,7 @@
 	dw PsyduckPicFront, PsyduckPicBack
 
 	db SCRATCH, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/raichu.asm
+++ b/data/pokemon/base_stats/raichu.asm
@@ -11,7 +11,7 @@
 	dw RaichuPicFront, RaichuPicBack
 
 	db THUNDERSHOCK, GROWL, THUNDER_WAVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/rapidash.asm
+++ b/data/pokemon/base_stats/rapidash.asm
@@ -11,7 +11,7 @@
 	dw RapidashPicFront, RapidashPicBack
 
 	db EMBER, TAIL_WHIP, STOMP, GROWL ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        HORN_DRILL,   BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/raticate.asm
+++ b/data/pokemon/base_stats/raticate.asm
@@ -11,7 +11,7 @@
 	dw RaticatePicFront, RaticatePicBack
 
 	db TACKLE, TAIL_WHIP, QUICK_ATTACK, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  BUBBLEBEAM,   \
--- a/data/pokemon/base_stats/rattata.asm
+++ b/data/pokemon/base_stats/rattata.asm
@@ -11,7 +11,7 @@
 	dw RattataPicFront, RattataPicBack
 
 	db TACKLE, TAIL_WHIP, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  BUBBLEBEAM,   \
--- a/data/pokemon/base_stats/rhydon.asm
+++ b/data/pokemon/base_stats/rhydon.asm
@@ -11,7 +11,7 @@
 	dw RhydonPicFront, RhydonPicBack
 
 	db HORN_ATTACK, STOMP, TAIL_WHIP, FURY_ATTACK ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        HORN_DRILL,   BODY_SLAM,    \
--- a/data/pokemon/base_stats/rhyhorn.asm
+++ b/data/pokemon/base_stats/rhyhorn.asm
@@ -11,7 +11,7 @@
 	dw RhyhornPicFront, RhyhornPicBack
 
 	db HORN_ATTACK, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        HORN_DRILL,   BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/sandshrew.asm
+++ b/data/pokemon/base_stats/sandshrew.asm
@@ -11,7 +11,7 @@
 	dw SandshrewPicFront, SandshrewPicBack
 
 	db SCRATCH, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm SWORDS_DANCE, TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/sandslash.asm
+++ b/data/pokemon/base_stats/sandslash.asm
@@ -11,7 +11,7 @@
 	dw SandslashPicFront, SandslashPicBack
 
 	db SCRATCH, SAND_ATTACK, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm SWORDS_DANCE, TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/scyther.asm
+++ b/data/pokemon/base_stats/scyther.asm
@@ -11,7 +11,7 @@
 	dw ScytherPicFront, ScytherPicBack
 
 	db QUICK_ATTACK, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm SWORDS_DANCE, TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  HYPER_BEAM,   \
--- a/data/pokemon/base_stats/seadra.asm
+++ b/data/pokemon/base_stats/seadra.asm
@@ -11,7 +11,7 @@
 	dw SeadraPicFront, SeadraPicBack
 
 	db BUBBLE, SMOKESCREEN, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  BUBBLEBEAM,   WATER_GUN,    \
--- a/data/pokemon/base_stats/seaking.asm
+++ b/data/pokemon/base_stats/seaking.asm
@@ -11,7 +11,7 @@
 	dw SeakingPicFront, SeakingPicBack
 
 	db PECK, TAIL_WHIP, SUPERSONIC, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        HORN_DRILL,   TAKE_DOWN,    DOUBLE_EDGE,  BUBBLEBEAM,   \
--- a/data/pokemon/base_stats/seel.asm
+++ b/data/pokemon/base_stats/seel.asm
@@ -11,7 +11,7 @@
 	dw SeelPicFront, SeelPicBack
 
 	db HEADBUTT, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        HORN_DRILL,   BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/shellder.asm
+++ b/data/pokemon/base_stats/shellder.asm
@@ -11,7 +11,7 @@
 	dw ShellderPicFront, ShellderPicBack
 
 	db TACKLE, WITHDRAW, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  BUBBLEBEAM,   WATER_GUN,    \
--- a/data/pokemon/base_stats/slowbro.asm
+++ b/data/pokemon/base_stats/slowbro.asm
@@ -11,7 +11,7 @@
 	dw SlowbroPicFront, SlowbroPicBack
 
 	db CONFUSION, DISABLE, HEADBUTT, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/slowpoke.asm
+++ b/data/pokemon/base_stats/slowpoke.asm
@@ -11,7 +11,7 @@
 	dw SlowpokePicFront, SlowpokePicBack
 
 	db CONFUSION, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  BUBBLEBEAM,   \
--- a/data/pokemon/base_stats/snorlax.asm
+++ b/data/pokemon/base_stats/snorlax.asm
@@ -11,7 +11,7 @@
 	dw SnorlaxPicFront, SnorlaxPicBack
 
 	db HEADBUTT, AMNESIA, REST, NO_MOVE ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/spearow.asm
+++ b/data/pokemon/base_stats/spearow.asm
@@ -11,7 +11,7 @@
 	dw SpearowPicFront, SpearowPicBack
 
 	db PECK, GROWL, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm RAZOR_WIND,   WHIRLWIND,    TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/squirtle.asm
+++ b/data/pokemon/base_stats/squirtle.asm
@@ -11,7 +11,7 @@
 	dw SquirtlePicFront, SquirtlePicBack
 
 	db TACKLE, TAIL_WHIP, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/starmie.asm
+++ b/data/pokemon/base_stats/starmie.asm
@@ -11,7 +11,7 @@
 	dw StarmiePicFront, StarmiePicBack
 
 	db TACKLE, WATER_GUN, HARDEN, NO_MOVE ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  BUBBLEBEAM,   WATER_GUN,    \
--- a/data/pokemon/base_stats/staryu.asm
+++ b/data/pokemon/base_stats/staryu.asm
@@ -11,7 +11,7 @@
 	dw StaryuPicFront, StaryuPicBack
 
 	db TACKLE, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  BUBBLEBEAM,   WATER_GUN,    \
--- a/data/pokemon/base_stats/tangela.asm
+++ b/data/pokemon/base_stats/tangela.asm
@@ -11,7 +11,7 @@
 	dw TangelaPicFront, TangelaPicBack
 
 	db CONSTRICT, BIND, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm SWORDS_DANCE, TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/tauros.asm
+++ b/data/pokemon/base_stats/tauros.asm
@@ -11,7 +11,7 @@
 	dw TaurosPicFront, TaurosPicBack
 
 	db TACKLE, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        HORN_DRILL,   BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/tentacool.asm
+++ b/data/pokemon/base_stats/tentacool.asm
@@ -11,7 +11,7 @@
 	dw TentacoolPicFront, TentacoolPicBack
 
 	db ACID, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm SWORDS_DANCE, TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  BUBBLEBEAM,   \
--- a/data/pokemon/base_stats/tentacruel.asm
+++ b/data/pokemon/base_stats/tentacruel.asm
@@ -11,7 +11,7 @@
 	dw TentacruelPicFront, TentacruelPicBack
 
 	db ACID, SUPERSONIC, WRAP, NO_MOVE ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm SWORDS_DANCE, TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  BUBBLEBEAM,   \
--- a/data/pokemon/base_stats/vaporeon.asm
+++ b/data/pokemon/base_stats/vaporeon.asm
@@ -11,7 +11,7 @@
 	dw VaporeonPicFront, VaporeonPicBack
 
 	db TACKLE, SAND_ATTACK, QUICK_ATTACK, WATER_GUN ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  BUBBLEBEAM,   \
--- a/data/pokemon/base_stats/venomoth.asm
+++ b/data/pokemon/base_stats/venomoth.asm
@@ -11,7 +11,7 @@
 	dw VenomothPicFront, VenomothPicBack
 
 	db TACKLE, DISABLE, POISONPOWDER, LEECH_LIFE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm RAZOR_WIND,   WHIRLWIND,    TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/venonat.asm
+++ b/data/pokemon/base_stats/venonat.asm
@@ -11,7 +11,7 @@
 	dw VenonatPicFront, VenonatPicBack
 
 	db TACKLE, DISABLE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  RAGE,         MEGA_DRAIN,   \
--- a/data/pokemon/base_stats/venusaur.asm
+++ b/data/pokemon/base_stats/venusaur.asm
@@ -11,7 +11,7 @@
 	dw VenusaurPicFront, VenusaurPicBack
 
 	db TACKLE, GROWL, LEECH_SEED, VINE_WHIP ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm SWORDS_DANCE, TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/victreebel.asm
+++ b/data/pokemon/base_stats/victreebel.asm
@@ -11,7 +11,7 @@
 	dw VictreebelPicFront, VictreebelPicBack
 
 	db SLEEP_POWDER, STUN_SPORE, ACID, RAZOR_LEAF ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm SWORDS_DANCE, TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/vileplume.asm
+++ b/data/pokemon/base_stats/vileplume.asm
@@ -11,7 +11,7 @@
 	dw VileplumePicFront, VileplumePicBack
 
 	db STUN_SPORE, SLEEP_POWDER, ACID, PETAL_DANCE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm SWORDS_DANCE, TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/voltorb.asm
+++ b/data/pokemon/base_stats/voltorb.asm
@@ -11,7 +11,7 @@
 	dw VoltorbPicFront, VoltorbPicBack
 
 	db TACKLE, SCREECH, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        TAKE_DOWN,    RAGE,         THUNDERBOLT,  THUNDER,      \
--- a/data/pokemon/base_stats/vulpix.asm
+++ b/data/pokemon/base_stats/vulpix.asm
@@ -11,7 +11,7 @@
 	dw VulpixPicFront, VulpixPicBack
 
 	db EMBER, TAIL_WHIP, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        BODY_SLAM,    TAKE_DOWN,    DOUBLE_EDGE,  RAGE,         \
--- a/data/pokemon/base_stats/wartortle.asm
+++ b/data/pokemon/base_stats/wartortle.asm
@@ -11,7 +11,7 @@
 	dw WartortlePicFront, WartortlePicBack
 
 	db TACKLE, TAIL_WHIP, BUBBLE, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/weedle.asm
+++ b/data/pokemon/base_stats/weedle.asm
@@ -11,7 +11,7 @@
 	dw WeedlePicFront, WeedlePicBack
 
 	db POISON_STING, STRING_SHOT, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm
--- a/data/pokemon/base_stats/weepinbell.asm
+++ b/data/pokemon/base_stats/weepinbell.asm
@@ -11,7 +11,7 @@
 	dw WeepinbellPicFront, WeepinbellPicBack
 
 	db VINE_WHIP, GROWTH, WRAP, NO_MOVE ; level 1 learnset
-	db 3 ; growth rate
+	db GROWTH_MEDIUM_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm SWORDS_DANCE, TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  RAGE,         \
--- a/data/pokemon/base_stats/weezing.asm
+++ b/data/pokemon/base_stats/weezing.asm
@@ -11,7 +11,7 @@
 	dw WeezingPicFront, WeezingPicBack
 
 	db TACKLE, SMOG, SLUDGE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm TOXIC,        HYPER_BEAM,   RAGE,         THUNDERBOLT,  THUNDER,      \
--- a/data/pokemon/base_stats/wigglytuff.asm
+++ b/data/pokemon/base_stats/wigglytuff.asm
@@ -11,7 +11,7 @@
 	dw WigglytuffPicFront, WigglytuffPicBack
 
 	db SING, DISABLE, DEFENSE_CURL, DOUBLESLAP ; level 1 learnset
-	db 4 ; growth rate
+	db GROWTH_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm MEGA_PUNCH,   MEGA_KICK,    TOXIC,        BODY_SLAM,    TAKE_DOWN,    \
--- a/data/pokemon/base_stats/zapdos.asm
+++ b/data/pokemon/base_stats/zapdos.asm
@@ -11,7 +11,7 @@
 	dw ZapdosPicFront, ZapdosPicBack
 
 	db THUNDERSHOCK, DRILL_PECK, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 5 ; growth rate
+	db GROWTH_SLOW ; growth rate
 
 	; tm/hm learnset
 	tmhm RAZOR_WIND,   WHIRLWIND,    TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/base_stats/zubat.asm
+++ b/data/pokemon/base_stats/zubat.asm
@@ -11,7 +11,7 @@
 	dw ZubatPicFront, ZubatPicBack
 
 	db LEECH_LIFE, NO_MOVE, NO_MOVE, NO_MOVE ; level 1 learnset
-	db 0 ; growth rate
+	db GROWTH_MEDIUM_FAST ; growth rate
 
 	; tm/hm learnset
 	tmhm RAZOR_WIND,   WHIRLWIND,    TOXIC,        TAKE_DOWN,    DOUBLE_EDGE,  \
--- a/data/pokemon/cries.asm
+++ b/data/pokemon/cries.asm
@@ -1,192 +1,192 @@
 CryData::
-	;$BaseCry, $Pitch, $Length
-	db $11, $00, $80; Rhydon
-	db $03, $00, $80; Kangaskhan
-	db $00, $00, $80; Nidoran♂
-	db $19, $CC, $01; Clefairy
-	db $10, $00, $80; Spearow
-	db $06, $ED, $80; Voltorb
-	db $09, $00, $80; Nidoking
-	db $1F, $00, $80; Slowbro
-	db $0F, $20, $80; Ivysaur
-	db $0D, $00, $80; Exeggutor
-	db $0C, $00, $80; Lickitung
-	db $0B, $00, $80; Exeggcute
-	db $05, $00, $80; Grimer
-	db $07, $00, $FF; Gengar
-	db $01, $00, $80; Nidoran♀
-	db $0A, $00, $80; Nidoqueen
-	db $19, $00, $80; Cubone
-	db $04, $00, $80; Rhyhorn
-	db $1B, $00, $80; Lapras
-	db $15, $00, $80; Arcanine
-	db $1E, $EE, $FF; Mew
-	db $17, $00, $80; Gyarados
-	db $18, $00, $80; Shellder
-	db $1A, $00, $80; Tentacool
-	db $1C, $00, $80; Gastly
-	db $16, $00, $80; Scyther
-	db $1E, $02, $20; Staryu
-	db $13, $00, $80; Blastoise
-	db $14, $00, $80; Pinsir
-	db $12, $00, $80; Tangela
-	db $00, $00, $00; MissingNo.
-	db $00, $00, $00; MissingNo.
-	db $1F, $20, $40; Growlithe
-	db $17, $FF, $C0; Onix
-	db $18, $40, $A0; Fearow
-	db $0E, $DF, $04; Pidgey
-	db $02, $00, $80; Slowpoke
-	db $1C, $A8, $C0; Kadabra
-	db $24, $00, $80; Graveler
-	db $14, $0A, $C0; Chansey
-	db $1F, $48, $60; Machoke
-	db $20, $08, $40; Mr.Mime
-	db $12, $80, $C0; Hitmonlee
-	db $0C, $EE, $C0; Hitmonchan
-	db $17, $E0, $10; Arbok
-	db $1E, $42, $FF; Parasect
-	db $21, $20, $60; Psyduck
-	db $0D, $88, $20; Drowzee
-	db $12, $E0, $40; Golem
-	db $00, $00, $00; MissingNo.
-	db $04, $FF, $30; Magmar
-	db $00, $00, $00; MissingNo.
-	db $06, $8F, $FF; Electabuzz
-	db $1C, $20, $C0; Magneton
-	db $12, $E6, $DD; Koffing
-	db $00, $00, $00; MissingNo.
-	db $0A, $DD, $60; Mankey
-	db $0C, $88, $C0; Seel
-	db $0B, $AA, $01; Diglett
-	db $1D, $11, $40; Tauros
-	db $00, $00, $00; MissingNo.
-	db $00, $00, $00; MissingNo.
-	db $00, $00, $00; MissingNo.
-	db $10, $DD, $01; Farfetch'd
-	db $1A, $44, $40; Venonat
-	db $0F, $3C, $C0; Dragonite
-	db $00, $80, $10; MissingNo.
-	db $00, $00, $00; MissingNo.
-	db $1D, $E0, $80; MissingNo.
-	db $0B, $BB, $01; Doduo
-	db $0E, $FF, $FF; Poliwag
-	db $0D, $FF, $FF; Jynx
-	db $09, $F8, $40; Moltres
-	db $09, $80, $40; Articuno
-	db $18, $FF, $80; Zapdos
-	db $0E, $FF, $FF; Ditto
-	db $19, $77, $10; Meowth
-	db $20, $20, $E0; Krabby
-	db $22, $FF, $40; MissingNo.
-	db $00, $00, $00; MissingNo.
-	db $0E, $E0, $60; MissingNo.
-	db $24, $4F, $10; Vulpix
-	db $24, $88, $60; Ninetales
-	db $0F, $EE, $01; Pikachu
-	db $09, $EE, $08; Raichu
-	db $00, $00, $00; MissingNo.
-	db $00, $00, $00; MissingNo.
-	db $0F, $60, $40; Dratini
-	db $0F, $40, $80; Dragonair
-	db $16, $BB, $40; Kabuto
-	db $18, $EE, $01; Kabutops
-	db $19, $99, $10; Horsea
-	db $19, $3C, $01; Seadra
-	db $0F, $40, $C0; MissingNo.
-	db $0F, $20, $C0; MissingNo.
-	db $00, $20, $40; Sandshrew
-	db $00, $FF, $FF; Sandslash
-	db $1F, $F0, $01; Omanyte
-	db $1F, $FF, $40; Omastar
-	db $0E, $FF, $35; Jigglypuff
-	db $0E, $68, $60; Wigglytuff
-	db $1A, $88, $60; Eevee
-	db $1A, $10, $20; Flareon
-	db $1A, $3D, $80; Jolteon
-	db $1A, $AA, $FF; Vaporeon
-	db $1F, $EE, $01; Machop
-	db $1D, $E0, $80; Zubat
-	db $17, $12, $40; Ekans
-	db $1E, $20, $E0; Paras
-	db $0E, $77, $60; Poliwhirl
-	db $0E, $00, $FF; Poliwrath
-	db $15, $EE, $01; Weedle
-	db $13, $FF, $01; Kakuna
-	db $13, $60, $80; Beedrill
-	db $00, $00, $00; MissingNo.
-	db $0B, $99, $20; Dodrio
-	db $0A, $AF, $40; Primeape
-	db $0B, $2A, $10; Dugtrio
-	db $1A, $29, $80; Venomoth
-	db $0C, $23, $FF; Dewgong
-	db $00, $00, $00; MissingNo.
-	db $00, $00, $00; MissingNo.
-	db $16, $80, $20; Caterpie
-	db $1C, $CC, $01; Metapod
-	db $16, $77, $40; Butterfree
-	db $1F, $08, $C0; Machamp
-	db $11, $20, $10; MissingNo.
-	db $21, $FF, $40; Golduck
-	db $0D, $EE, $40; Hypno
-	db $1D, $FA, $80; Golbat
-	db $1E, $99, $FF; Mewtwo
-	db $05, $55, $01; Snorlax
-	db $17, $80, $00; Magikarp
-	db $00, $00, $00; MissingNo.
-	db $00, $00, $00; MissingNo.
-	db $07, $EF, $FF; Muk
-	db $0F, $40, $80; MissingNo.
-	db $20, $EE, $E0; Kingler
-	db $18, $6F, $E0; Cloyster
-	db $00, $00, $00; MissingNo.
-	db $06, $A8, $90; Electrode
-	db $19, $AA, $20; Clefable
-	db $12, $FF, $FF; Weezing
-	db $19, $99, $FF; Persian
-	db $08, $4F, $60; Marowak
-	db $00, $00, $00; MissingNo.
-	db $1C, $30, $40; Haunter
-	db $1C, $C0, $01; Abra
-	db $1C, $98, $FF; Alakazam
-	db $14, $28, $C0; Pidgeotto
-	db $14, $11, $FF; Pidgeot
-	db $1E, $00, $80; Starmie
-	db $0F, $80, $01; Bulbasaur
-	db $0F, $00, $C0; Venusaur
-	db $1A, $EE, $FF; Tentacruel
-	db $00, $00, $00; MissingNo.
-	db $16, $80, $40; Goldeen
-	db $16, $10, $FF; Seaking
-	db $00, $00, $00; MissingNo.
-	db $00, $00, $00; MissingNo.
-	db $00, $00, $00; MissingNo.
-	db $00, $00, $00; MissingNo.
-	db $25, $00, $80; Ponyta
-	db $25, $20, $C0; Rapidash
-	db $22, $00, $80; Rattata
-	db $22, $20, $FF; Raticate
-	db $00, $2C, $C0; Nidorino
-	db $01, $2C, $E0; Nidorina
-	db $24, $F0, $10; Geodude
-	db $25, $AA, $FF; Porygon
-	db $23, $20, $F0; Aerodactyl
-	db $00, $00, $00; MissingNo.
-	db $1C, $80, $60; Magnemite
-	db $00, $00, $00; MissingNo.
-	db $00, $00, $00; MissingNo.
-	db $04, $60, $40; Charmander
-	db $1D, $60, $40; Squirtle
-	db $04, $20, $40; Charmeleon
-	db $1D, $20, $40; Wartortle
-	db $04, $00, $80; Charizard
-	db $1D, $00, $80; MissingNo.
-	db $00, $00, $00; MissingNo.
-	db $00, $00, $00; MissingNo.
-	db $00, $00, $00; MissingNo.
-	db $08, $DD, $01; Oddish
-	db $08, $AA, $40; Gloom
-	db $23, $22, $FF; Vileplume
-	db $21, $55, $01; Bellsprout
-	db $25, $44, $20; Weepinbell
-	db $25, $66, $CC; Victreebel
+	; base cry, pitch, length
+	db $11, $00, $80 ; Rhydon
+	db $03, $00, $80 ; Kangaskhan
+	db $00, $00, $80 ; Nidoran♂
+	db $19, $CC, $01 ; Clefairy
+	db $10, $00, $80 ; Spearow
+	db $06, $ED, $80 ; Voltorb
+	db $09, $00, $80 ; Nidoking
+	db $1F, $00, $80 ; Slowbro
+	db $0F, $20, $80 ; Ivysaur
+	db $0D, $00, $80 ; Exeggutor
+	db $0C, $00, $80 ; Lickitung
+	db $0B, $00, $80 ; Exeggcute
+	db $05, $00, $80 ; Grimer
+	db $07, $00, $FF ; Gengar
+	db $01, $00, $80 ; Nidoran♀
+	db $0A, $00, $80 ; Nidoqueen
+	db $19, $00, $80 ; Cubone
+	db $04, $00, $80 ; Rhyhorn
+	db $1B, $00, $80 ; Lapras
+	db $15, $00, $80 ; Arcanine
+	db $1E, $EE, $FF ; Mew
+	db $17, $00, $80 ; Gyarados
+	db $18, $00, $80 ; Shellder
+	db $1A, $00, $80 ; Tentacool
+	db $1C, $00, $80 ; Gastly
+	db $16, $00, $80 ; Scyther
+	db $1E, $02, $20 ; Staryu
+	db $13, $00, $80 ; Blastoise
+	db $14, $00, $80 ; Pinsir
+	db $12, $00, $80 ; Tangela
+	db $00, $00, $00 ; MissingNo.
+	db $00, $00, $00 ; MissingNo.
+	db $1F, $20, $40 ; Growlithe
+	db $17, $FF, $C0 ; Onix
+	db $18, $40, $A0 ; Fearow
+	db $0E, $DF, $04 ; Pidgey
+	db $02, $00, $80 ; Slowpoke
+	db $1C, $A8, $C0 ; Kadabra
+	db $24, $00, $80 ; Graveler
+	db $14, $0A, $C0 ; Chansey
+	db $1F, $48, $60 ; Machoke
+	db $20, $08, $40 ; Mr.Mime
+	db $12, $80, $C0 ; Hitmonlee
+	db $0C, $EE, $C0 ; Hitmonchan
+	db $17, $E0, $10 ; Arbok
+	db $1E, $42, $FF ; Parasect
+	db $21, $20, $60 ; Psyduck
+	db $0D, $88, $20 ; Drowzee
+	db $12, $E0, $40 ; Golem
+	db $00, $00, $00 ; MissingNo.
+	db $04, $FF, $30 ; Magmar
+	db $00, $00, $00 ; MissingNo.
+	db $06, $8F, $FF ; Electabuzz
+	db $1C, $20, $C0 ; Magneton
+	db $12, $E6, $DD ; Koffing
+	db $00, $00, $00 ; MissingNo.
+	db $0A, $DD, $60 ; Mankey
+	db $0C, $88, $C0 ; Seel
+	db $0B, $AA, $01 ; Diglett
+	db $1D, $11, $40 ; Tauros
+	db $00, $00, $00 ; MissingNo.
+	db $00, $00, $00 ; MissingNo.
+	db $00, $00, $00 ; MissingNo.
+	db $10, $DD, $01 ; Farfetch'd
+	db $1A, $44, $40 ; Venonat
+	db $0F, $3C, $C0 ; Dragonite
+	db $00, $80, $10 ; MissingNo.
+	db $00, $00, $00 ; MissingNo.
+	db $1D, $E0, $80 ; MissingNo.
+	db $0B, $BB, $01 ; Doduo
+	db $0E, $FF, $FF ; Poliwag
+	db $0D, $FF, $FF ; Jynx
+	db $09, $F8, $40 ; Moltres
+	db $09, $80, $40 ; Articuno
+	db $18, $FF, $80 ; Zapdos
+	db $0E, $FF, $FF ; Ditto
+	db $19, $77, $10 ; Meowth
+	db $20, $20, $E0 ; Krabby
+	db $22, $FF, $40 ; MissingNo.
+	db $00, $00, $00 ; MissingNo.
+	db $0E, $E0, $60 ; MissingNo.
+	db $24, $4F, $10 ; Vulpix
+	db $24, $88, $60 ; Ninetales
+	db $0F, $EE, $01 ; Pikachu
+	db $09, $EE, $08 ; Raichu
+	db $00, $00, $00 ; MissingNo.
+	db $00, $00, $00 ; MissingNo.
+	db $0F, $60, $40 ; Dratini
+	db $0F, $40, $80 ; Dragonair
+	db $16, $BB, $40 ; Kabuto
+	db $18, $EE, $01 ; Kabutops
+	db $19, $99, $10 ; Horsea
+	db $19, $3C, $01 ; Seadra
+	db $0F, $40, $C0 ; MissingNo.
+	db $0F, $20, $C0 ; MissingNo.
+	db $00, $20, $40 ; Sandshrew
+	db $00, $FF, $FF ; Sandslash
+	db $1F, $F0, $01 ; Omanyte
+	db $1F, $FF, $40 ; Omastar
+	db $0E, $FF, $35 ; Jigglypuff
+	db $0E, $68, $60 ; Wigglytuff
+	db $1A, $88, $60 ; Eevee
+	db $1A, $10, $20 ; Flareon
+	db $1A, $3D, $80 ; Jolteon
+	db $1A, $AA, $FF ; Vaporeon
+	db $1F, $EE, $01 ; Machop
+	db $1D, $E0, $80 ; Zubat
+	db $17, $12, $40 ; Ekans
+	db $1E, $20, $E0 ; Paras
+	db $0E, $77, $60 ; Poliwhirl
+	db $0E, $00, $FF ; Poliwrath
+	db $15, $EE, $01 ; Weedle
+	db $13, $FF, $01 ; Kakuna
+	db $13, $60, $80 ; Beedrill
+	db $00, $00, $00 ; MissingNo.
+	db $0B, $99, $20 ; Dodrio
+	db $0A, $AF, $40 ; Primeape
+	db $0B, $2A, $10 ; Dugtrio
+	db $1A, $29, $80 ; Venomoth
+	db $0C, $23, $FF ; Dewgong
+	db $00, $00, $00 ; MissingNo.
+	db $00, $00, $00 ; MissingNo.
+	db $16, $80, $20 ; Caterpie
+	db $1C, $CC, $01 ; Metapod
+	db $16, $77, $40 ; Butterfree
+	db $1F, $08, $C0 ; Machamp
+	db $11, $20, $10 ; MissingNo.
+	db $21, $FF, $40 ; Golduck
+	db $0D, $EE, $40 ; Hypno
+	db $1D, $FA, $80 ; Golbat
+	db $1E, $99, $FF ; Mewtwo
+	db $05, $55, $01 ; Snorlax
+	db $17, $80, $00 ; Magikarp
+	db $00, $00, $00 ; MissingNo.
+	db $00, $00, $00 ; MissingNo.
+	db $07, $EF, $FF ; Muk
+	db $0F, $40, $80 ; MissingNo.
+	db $20, $EE, $E0 ; Kingler
+	db $18, $6F, $E0 ; Cloyster
+	db $00, $00, $00 ; MissingNo.
+	db $06, $A8, $90 ; Electrode
+	db $19, $AA, $20 ; Clefable
+	db $12, $FF, $FF ; Weezing
+	db $19, $99, $FF ; Persian
+	db $08, $4F, $60 ; Marowak
+	db $00, $00, $00 ; MissingNo.
+	db $1C, $30, $40 ; Haunter
+	db $1C, $C0, $01 ; Abra
+	db $1C, $98, $FF ; Alakazam
+	db $14, $28, $C0 ; Pidgeotto
+	db $14, $11, $FF ; Pidgeot
+	db $1E, $00, $80 ; Starmie
+	db $0F, $80, $01 ; Bulbasaur
+	db $0F, $00, $C0 ; Venusaur
+	db $1A, $EE, $FF ; Tentacruel
+	db $00, $00, $00 ; MissingNo.
+	db $16, $80, $40 ; Goldeen
+	db $16, $10, $FF ; Seaking
+	db $00, $00, $00 ; MissingNo.
+	db $00, $00, $00 ; MissingNo.
+	db $00, $00, $00 ; MissingNo.
+	db $00, $00, $00 ; MissingNo.
+	db $25, $00, $80 ; Ponyta
+	db $25, $20, $C0 ; Rapidash
+	db $22, $00, $80 ; Rattata
+	db $22, $20, $FF ; Raticate
+	db $00, $2C, $C0 ; Nidorino
+	db $01, $2C, $E0 ; Nidorina
+	db $24, $F0, $10 ; Geodude
+	db $25, $AA, $FF ; Porygon
+	db $23, $20, $F0 ; Aerodactyl
+	db $00, $00, $00 ; MissingNo.
+	db $1C, $80, $60 ; Magnemite
+	db $00, $00, $00 ; MissingNo.
+	db $00, $00, $00 ; MissingNo.
+	db $04, $60, $40 ; Charmander
+	db $1D, $60, $40 ; Squirtle
+	db $04, $20, $40 ; Charmeleon
+	db $1D, $20, $40 ; Wartortle
+	db $04, $00, $80 ; Charizard
+	db $1D, $00, $80 ; MissingNo.
+	db $00, $00, $00 ; MissingNo.
+	db $00, $00, $00 ; MissingNo.
+	db $00, $00, $00 ; MissingNo.
+	db $08, $DD, $01 ; Oddish
+	db $08, $AA, $40 ; Gloom
+	db $23, $22, $FF ; Vileplume
+	db $21, $55, $01 ; Bellsprout
+	db $25, $44, $20 ; Weepinbell
+	db $25, $66, $CC ; Victreebel
--- a/data/pokemon/dex_text.asm
+++ b/data/pokemon/dex_text.asm
@@ -1507,4 +1507,3 @@
 	next "has ever returned"
 	next "from there"
 	dex
-
--- a/data/predef_pointers.asm
+++ b/data/predef_pointers.asm
@@ -1,7 +1,10 @@
 add_predef: MACRO
 \1Predef::
-	db BANK(\1)
-	dw \1
+IF _NARG == 1
+	dba \1
+ELSE
+	dbw \2, \1
+ENDC
 ENDM
 
 PredefPointers::
@@ -13,7 +16,7 @@
 	add_predef ScaleSpriteByTwo
 	add_predef LoadMonBackPic
 	add_predef CopyDownscaledMonTiles
-	dbw $03,JumpMoveEffect ; wrong bank
+	add_predef JumpMoveEffect, $03 ; wrong bank
 	add_predef HealParty
 	add_predef MoveAnimation
 	add_predef DivideBCDPredef
@@ -36,8 +39,8 @@
 	add_predef LearnMoveFromLevelUp
 	add_predef LearnMove
 	add_predef GetQuantityOfItemInBag
-	dbw $03,CheckForHiddenObjectOrBookshelfOrCardKeyDoor ; home bank
-	dbw $03,GiveItem ; home bank
+	add_predef CheckForHiddenObjectOrBookshelfOrCardKeyDoor, $03 ; home bank
+	add_predef GiveItem, $03 ; home bank
 	add_predef ChangeBGPalColor0_4Frames
 	add_predef FindPathToPlayer
 	add_predef PredefShakeScreenVertically
@@ -94,8 +97,8 @@
 	add_predef DoInGameTradeDialogue
 	add_predef HallOfFamePC
 	add_predef DisplayDexRating
-	dbw $1E, _LeaveMapAnim ; wrong bank
-	dbw $1E, EnterMapAnim ; wrong bank
+	add_predef _LeaveMapAnim, $1E ; wrong bank
+	add_predef EnterMapAnim, $1E ; wrong bank
 	add_predef GetTileTwoStepsInFrontOfPlayer
 	add_predef CheckForCollisionWhenPushingBoulder
 	add_predef PrintStrengthTxt
--- a/data/sprites/facings.asm
+++ b/data/sprites/facings.asm
@@ -1,57 +1,59 @@
 SpriteFacingAndAnimationTable:
-	dw SpriteFacingDownAndStanding, SpriteOAMParameters        ; facing down, walk animation frame 0
-	dw SpriteFacingDownAndWalking, SpriteOAMParameters         ; facing down, walk animation frame 1
-	dw SpriteFacingDownAndStanding, SpriteOAMParameters        ; facing down, walk animation frame 2
-	dw SpriteFacingDownAndWalking, SpriteOAMParametersFlipped  ; facing down, walk animation frame 3
-	dw SpriteFacingUpAndStanding, SpriteOAMParameters          ; facing up, walk animation frame 0
-	dw SpriteFacingUpAndWalking, SpriteOAMParameters           ; facing up, walk animation frame 1
-	dw SpriteFacingUpAndStanding, SpriteOAMParameters          ; facing up, walk animation frame 2
-	dw SpriteFacingUpAndWalking, SpriteOAMParametersFlipped    ; facing up, walk animation frame 3
-	dw SpriteFacingLeftAndStanding, SpriteOAMParameters        ; facing left, walk animation frame 0
-	dw SpriteFacingLeftAndWalking, SpriteOAMParameters         ; facing left, walk animation frame 1
-	dw SpriteFacingLeftAndStanding, SpriteOAMParameters        ; facing left, walk animation frame 2
-	dw SpriteFacingLeftAndWalking, SpriteOAMParameters         ; facing left, walk animation frame 3
-	dw SpriteFacingLeftAndStanding, SpriteOAMParametersFlipped ; facing right, walk animation frame 0
-	dw SpriteFacingLeftAndWalking, SpriteOAMParametersFlipped  ; facing right, walk animation frame 1
-	dw SpriteFacingLeftAndStanding, SpriteOAMParametersFlipped ; facing right, walk animation frame 2
-	dw SpriteFacingLeftAndWalking, SpriteOAMParametersFlipped  ; facing right, walk animation frame 3
-	dw SpriteFacingDownAndStanding, SpriteOAMParameters        ; ---
-	dw SpriteFacingDownAndStanding, SpriteOAMParameters        ; This table is used for sprites $a and $b.
-	dw SpriteFacingDownAndStanding, SpriteOAMParameters        ; All orientation and animation parameters
-	dw SpriteFacingDownAndStanding, SpriteOAMParameters        ; lead to the same result. Used for immobile
-	dw SpriteFacingDownAndStanding, SpriteOAMParameters        ; sprites like items on the ground
-	dw SpriteFacingDownAndStanding, SpriteOAMParameters        ; ---
-	dw SpriteFacingDownAndStanding, SpriteOAMParameters
-	dw SpriteFacingDownAndStanding, SpriteOAMParameters
-	dw SpriteFacingDownAndStanding, SpriteOAMParameters
-	dw SpriteFacingDownAndStanding, SpriteOAMParameters
-	dw SpriteFacingDownAndStanding, SpriteOAMParameters
-	dw SpriteFacingDownAndStanding, SpriteOAMParameters
-	dw SpriteFacingDownAndStanding, SpriteOAMParameters
-	dw SpriteFacingDownAndStanding, SpriteOAMParameters
-	dw SpriteFacingDownAndStanding, SpriteOAMParameters
-	dw SpriteFacingDownAndStanding, SpriteOAMParameters
+; This table is used for overworld sprites $1-$9.
+	dw .StandingDown, .NormalOAM  ; facing down, walk animation frame 0
+	dw .WalkingDown,  .NormalOAM  ; facing down, walk animation frame 1
+	dw .StandingDown, .NormalOAM  ; facing down, walk animation frame 2
+	dw .WalkingDown,  .FlippedOAM ; facing down, walk animation frame 3
+	dw .StandingUp,   .NormalOAM  ; facing up, walk animation frame 0
+	dw .WalkingUp,    .NormalOAM  ; facing up, walk animation frame 1
+	dw .StandingUp,   .NormalOAM  ; facing up, walk animation frame 2
+	dw .WalkingUp,    .FlippedOAM ; facing up, walk animation frame 3
+	dw .StandingLeft, .NormalOAM  ; facing left, walk animation frame 0
+	dw .WalkingLeft,  .NormalOAM  ; facing left, walk animation frame 1
+	dw .StandingLeft, .NormalOAM  ; facing left, walk animation frame 2
+	dw .WalkingLeft,  .NormalOAM  ; facing left, walk animation frame 3
+	dw .StandingLeft, .FlippedOAM ; facing right, walk animation frame 0
+	dw .WalkingLeft,  .FlippedOAM ; facing right, walk animation frame 1
+	dw .StandingLeft, .FlippedOAM ; facing right, walk animation frame 2
+	dw .WalkingLeft,  .FlippedOAM ; facing right, walk animation frame 3
+; The rest of this table is used for sprites $a and $b.
+; All orientation and animation parameters lead to the same result.
+; Used for immobile sprites like items on the ground.
+	dw .StandingDown, .NormalOAM  ; facing down, walk animation frame 0
+	dw .StandingDown, .NormalOAM  ; facing down, walk animation frame 1
+	dw .StandingDown, .NormalOAM  ; facing down, walk animation frame 2
+	dw .StandingDown, .NormalOAM  ; facing down, walk animation frame 3
+	dw .StandingDown, .NormalOAM  ; facing up, walk animation frame 0
+	dw .StandingDown, .NormalOAM  ; facing up, walk animation frame 1
+	dw .StandingDown, .NormalOAM  ; facing up, walk animation frame 2
+	dw .StandingDown, .NormalOAM  ; facing up, walk animation frame 3
+	dw .StandingDown, .NormalOAM  ; facing left, walk animation frame 0
+	dw .StandingDown, .NormalOAM  ; facing left, walk animation frame 1
+	dw .StandingDown, .NormalOAM  ; facing left, walk animation frame 2
+	dw .StandingDown, .NormalOAM  ; facing left, walk animation frame 3
+	dw .StandingDown, .NormalOAM  ; facing right, walk animation frame 0
+	dw .StandingDown, .NormalOAM  ; facing right, walk animation frame 1
+	dw .StandingDown, .NormalOAM  ; facing right, walk animation frame 2
+	dw .StandingDown, .NormalOAM  ; facing right, walk animation frame 3
 
-SpriteFacingDownAndStanding:
-	db $00,$01,$02,$03
-SpriteFacingDownAndWalking:
-	db $80,$81,$82,$83
-SpriteFacingUpAndStanding:
-	db $04,$05,$06,$07
-SpriteFacingUpAndWalking:
-	db $84,$85,$86,$87
-SpriteFacingLeftAndStanding:
-	db $08,$09,$0a,$0b
-SpriteFacingLeftAndWalking:
-	db $88,$89,$8a,$8b
+; four tile ids compose an overworld sprite
+.StandingDown: db $00, $01, $02, $03
+.WalkingDown:  db $80, $81, $82, $83
+.StandingUp:   db $04, $05, $06, $07
+.WalkingUp:    db $84, $85, $86, $87
+.StandingLeft: db $08, $09, $0a, $0b
+.WalkingLeft:  db $88, $89, $8a, $8b
 
-SpriteOAMParameters:
-	db $00,$00, $00                                      ; top left
-	db $00,$08, $00                                      ; top right
-	db $08,$00, OAMFLAG_CANBEMASKED                      ; bottom left
-	db $08,$08, OAMFLAG_CANBEMASKED | OAMFLAG_ENDOFDATA  ; bottom right
-SpriteOAMParametersFlipped:
-	db $00,$08, OAMFLAG_VFLIPPED
-	db $00,$00, OAMFLAG_VFLIPPED
-	db $08,$08, OAMFLAG_VFLIPPED | OAMFLAG_CANBEMASKED
-	db $08,$00, OAMFLAG_VFLIPPED | OAMFLAG_CANBEMASKED | OAMFLAG_ENDOFDATA
+.NormalOAM:
+; y, x, attributes
+	db 0, 0, $00 ; top left
+	db 0, 8, $00 ; top right
+	db 8, 0, OAMFLAG_CANBEMASKED ; bottom left
+	db 8, 8, OAMFLAG_CANBEMASKED | OAMFLAG_ENDOFDATA ; bottom right
+
+.FlippedOAM:
+; y, x, attributes
+	db 0, 8, OAMFLAG_VFLIPPED ; top left
+	db 0, 0, OAMFLAG_VFLIPPED ; top right
+	db 8, 8, OAMFLAG_VFLIPPED | OAMFLAG_CANBEMASKED ; bottom left
+	db 8, 0, OAMFLAG_VFLIPPED | OAMFLAG_CANBEMASKED | OAMFLAG_ENDOFDATA ; bottom right
--- a/data/sprites/sprites.asm
+++ b/data/sprites/sprites.asm
@@ -1,360 +1,80 @@
-SpriteSheetPointerTable:
-	; SPRITE_RED
-	dw RedSprite
-	db $c0 ; byte count
-	db BANK(RedSprite)
+overworld_sprite: MACRO
+	dw \1
+	db \2 tiles
+	db BANK(\1)
+ENDM
 
-	; SPRITE_BLUE
-	dw BlueSprite
-	db $c0 ; byte count
-	db BANK(BlueSprite)
-
-	; SPRITE_OAK
-	dw OakSprite
-	db $c0 ; byte count
-	db BANK(OakSprite)
-
-	; SPRITE_BUG_CATCHER
-	dw BugCatcherSprite
-	db $c0 ; byte count
-	db BANK(BugCatcherSprite)
-
-	; SPRITE_SLOWBRO
-	dw SlowbroSprite
-	db $c0 ; byte count
-	db BANK(SlowbroSprite)
-
-	; SPRITE_LASS
-	dw LassSprite
-	db $c0 ; byte count
-	db BANK(LassSprite)
-
-	; SPRITE_BLACK_HAIR_BOY_1
-	dw BlackHairBoy1Sprite
-	db $c0 ; byte count
-	db BANK(BlackHairBoy1Sprite)
-
-	; SPRITE_LITTLE_GIRL
-	dw LittleGirlSprite
-	db $c0 ; byte count
-	db BANK(LittleGirlSprite)
-
-	; SPRITE_BIRD
-	dw BirdSprite
-	db $c0 ; byte count
-	db BANK(BirdSprite)
-
-	; SPRITE_FAT_BALD_GUY
-	dw FatBaldGuySprite
-	db $c0 ; byte count
-	db BANK(FatBaldGuySprite)
-
-	; SPRITE_GAMBLER
-	dw GamblerSprite
-	db $c0 ; byte count
-	db BANK(GamblerSprite)
-
-	; SPRITE_BLACK_HAIR_BOY_2
-	dw BlackHairBoy2Sprite
-	db $c0 ; byte count
-	db BANK(BlackHairBoy2Sprite)
-
-	; SPRITE_GIRL
-	dw GirlSprite
-	db $c0 ; byte count
-	db BANK(GirlSprite)
-
-	; SPRITE_HIKER
-	dw HikerSprite
-	db $c0 ; byte count
-	db BANK(HikerSprite)
-
-	; SPRITE_FOULARD_WOMAN
-	dw FoulardWomanSprite
-	db $c0 ; byte count
-	db BANK(FoulardWomanSprite)
-
-	; SPRITE_GENTLEMAN
-	dw GentlemanSprite
-	db $c0 ; byte count
-	db BANK(GentlemanSprite)
-
-	; SPRITE_DAISY
-	dw DaisySprite
-	db $c0 ; byte count
-	db BANK(DaisySprite)
-
-	; SPRITE_BIKER
-	dw BikerSprite
-	db $c0 ; byte count
-	db BANK(BikerSprite)
-
-	; SPRITE_SAILOR
-	dw SailorSprite
-	db $c0 ; byte count
-	db BANK(SailorSprite)
-
-	; SPRITE_COOK
-	dw CookSprite
-	db $c0 ; byte count
-	db BANK(CookSprite)
-
-	; SPRITE_BIKE_SHOP_GUY
-	dw BikeShopGuySprite
-	db $c0 ; byte count
-	db BANK(BikeShopGuySprite)
-
-	; SPRITE_MR_FUJI
-	dw MrFujiSprite
-	db $c0 ; byte count
-	db BANK(MrFujiSprite)
-
-	; SPRITE_GIOVANNI
-	dw GiovanniSprite
-	db $c0 ; byte count
-	db BANK(GiovanniSprite)
-
-	; SPRITE_ROCKET
-	dw RocketSprite
-	db $c0 ; byte count
-	db BANK(RocketSprite)
-
-	; SPRITE_MEDIUM
-	dw MediumSprite
-	db $c0 ; byte count
-	db BANK(MediumSprite)
-
-	; SPRITE_WAITER
-	dw WaiterSprite
-	db $c0 ; byte count
-	db BANK(WaiterSprite)
-
-	; SPRITE_ERIKA
-	dw ErikaSprite
-	db $c0 ; byte count
-	db BANK(ErikaSprite)
-
-	; SPRITE_MOM_GEISHA
-	dw MomGeishaSprite
-	db $c0 ; byte count
-	db BANK(MomGeishaSprite)
-
-	; SPRITE_BRUNETTE_GIRL
-	dw BrunetteGirlSprite
-	db $c0 ; byte count
-	db BANK(BrunetteGirlSprite)
-
-	; SPRITE_LANCE
-	dw LanceSprite
-	db $c0 ; byte count
-	db BANK(LanceSprite)
-
-	; SPRITE_OAK_SCIENTIST_AIDE
-	dw OakAideSprite
-	db $c0 ; byte count
-	db BANK(OakAideSprite)
-
-	; SPRITE_OAK_AIDE
-	dw OakAideSprite
-	db $c0 ; byte count
-	db BANK(OakAideSprite)
-
-	; SPRITE_ROCKER
-	dw RockerSprite
-	db $c0 ; byte count
-	db BANK(RockerSprite)
-
-	; SPRITE_SWIMMER
-	dw SwimmerSprite
-	db $c0 ; byte count
-	db BANK(SwimmerSprite)
-
-	; SPRITE_WHITE_PLAYER
-	dw WhitePlayerSprite
-	db $c0 ; byte count
-	db BANK(WhitePlayerSprite)
-
-	; SPRITE_GYM_HELPER
-	dw GymHelperSprite
-	db $c0 ; byte count
-	db BANK(GymHelperSprite)
-
-	; SPRITE_OLD_PERSON
-	dw OldPersonSprite
-	db $c0 ; byte count
-	db BANK(OldPersonSprite)
-
-	; SPRITE_MART_GUY
-	dw MartGuySprite
-	db $c0 ; byte count
-	db BANK(MartGuySprite)
-
-	; SPRITE_FISHER
-	dw FisherSprite
-	db $c0 ; byte count
-	db BANK(FisherSprite)
-
-	; SPRITE_OLD_MEDIUM_WOMAN
-	dw OldMediumWomanSprite
-	db $c0 ; byte count
-	db BANK(OldMediumWomanSprite)
-
-	; SPRITE_NURSE
-	dw NurseSprite
-	db $c0 ; byte count
-	db BANK(NurseSprite)
-
-	; SPRITE_CABLE_CLUB_WOMAN
-	dw CableClubWomanSprite
-	db $c0 ; byte count
-	db BANK(CableClubWomanSprite)
-
-	; SPRITE_MR_MASTERBALL
-	dw MrMasterballSprite
-	db $c0 ; byte count
-	db BANK(MrMasterballSprite)
-
-	; SPRITE_LAPRAS_GIVER
-	dw LaprasGiverSprite
-	db $c0 ; byte count
-	db BANK(LaprasGiverSprite)
-
-	; SPRITE_WARDEN
-	dw WardenSprite
-	db $c0 ; byte count
-	db BANK(WardenSprite)
-
-	; SPRITE_SS_CAPTAIN
-	dw SsCaptainSprite
-	db $c0 ; byte count
-	db BANK(SsCaptainSprite)
-
-	; SPRITE_FISHER2
-	dw Fisher2Sprite
-	db $c0 ; byte count
-	db BANK(Fisher2Sprite)
-
-	; SPRITE_BLACKBELT
-	dw BlackbeltSprite
-	db $c0 ; byte count
-	db BANK(BlackbeltSprite)
-
-	; SPRITE_GUARD
-	dw GuardSprite
-	db $c0 ; byte count
-	db BANK(GuardSprite)
-
-	; $32
-	dw GuardSprite
-	db $c0 ; byte count
-	db BANK(GuardSprite)
-
-	; SPRITE_MOM
-	dw MomSprite
-	db $c0 ; byte count
-	db BANK(MomSprite)
-
-	; SPRITE_BALDING_GUY
-	dw BaldingGuySprite
-	db $c0 ; byte count
-	db BANK(BaldingGuySprite)
-
-	; SPRITE_YOUNG_BOY
-	dw YoungBoySprite
-	db $c0 ; byte count
-	db BANK(YoungBoySprite)
-
-	; SPRITE_GAMEBOY_KID
-	dw GameboyKidSprite
-	db $c0 ; byte count
-	db BANK(GameboyKidSprite)
-
-	; SPRITE_GAMEBOY_KID_COPY
-	dw GameboyKidSprite
-	db $c0 ; byte count
-	db BANK(GameboyKidSprite)
-
-	; SPRITE_CLEFAIRY
-	dw ClefairySprite
-	db $c0 ; byte count
-	db BANK(ClefairySprite)
-
-	; SPRITE_AGATHA
-	dw AgathaSprite
-	db $c0 ; byte count
-	db BANK(AgathaSprite)
-
-	; SPRITE_BRUNO
-	dw BrunoSprite
-	db $c0 ; byte count
-	db BANK(BrunoSprite)
-
-	; SPRITE_LORELEI
-	dw LoreleiSprite
-	db $c0 ; byte count
-	db BANK(LoreleiSprite)
-
-	; SPRITE_SEEL
-	dw SeelSprite
-	db $c0 ; byte count
-	db BANK(SeelSprite)
-
-	; SPRITE_BALL
-	dw BallSprite
-	db $40 ; byte count
-	db BANK(BallSprite)
-
-	; SPRITE_OMANYTE
-	dw OmanyteSprite
-	db $40 ; byte count
-	db BANK(OmanyteSprite)
-
-	; SPRITE_BOULDER
-	dw BoulderSprite
-	db $40 ; byte count
-	db BANK(BoulderSprite)
-
-	; SPRITE_PAPER_SHEET
-	dw PaperSheetSprite
-	db $40 ; byte count
-	db BANK(PaperSheetSprite)
-
-	; SPRITE_BOOK_MAP_DEX
-	dw BookMapDexSprite
-	db $40 ; byte count
-	db BANK(BookMapDexSprite)
-
-	; SPRITE_CLIPBOARD
-	dw ClipboardSprite
-	db $40 ; byte count
-	db BANK(ClipboardSprite)
-
-	; SPRITE_SNORLAX
-	dw SnorlaxSprite
-	db $40 ; byte count
-	db BANK(SnorlaxSprite)
-
-	; SPRITE_OLD_AMBER_COPY
-	dw OldAmberSprite
-	db $40 ; byte count
-	db BANK(OldAmberSprite)
-
-	; SPRITE_OLD_AMBER
-	dw OldAmberSprite
-	db $40 ; byte count
-	db BANK(OldAmberSprite)
-
-	; SPRITE_LYING_OLD_MAN_UNUSED_1
-	dw LyingOldManSprite
-	db $40 ; byte count
-	db BANK(LyingOldManSprite)
-
-	; SPRITE_LYING_OLD_MAN_UNUSED_2
-	dw LyingOldManSprite
-	db $40 ; byte count
-	db BANK(LyingOldManSprite)
-
-	; SPRITE_LYING_OLD_MAN
-	dw LyingOldManSprite
-	db $40 ; byte count
-	db BANK(LyingOldManSprite)
+SpriteSheetPointerTable:
+; graphics, tile count
+	overworld_sprite RedSprite, 12 ; SPRITE_RED
+	overworld_sprite BlueSprite, 12 ; SPRITE_BLUE
+	overworld_sprite OakSprite, 12 ; SPRITE_OAK
+	overworld_sprite BugCatcherSprite, 12 ; SPRITE_BUG_CATCHER
+	overworld_sprite SlowbroSprite, 12 ; SPRITE_SLOWBRO
+	overworld_sprite LassSprite, 12 ; SPRITE_LASS
+	overworld_sprite BlackHairBoy1Sprite, 12 ; SPRITE_BLACK_HAIR_BOY_1
+	overworld_sprite LittleGirlSprite, 12 ; SPRITE_LITTLE_GIRL
+	overworld_sprite BirdSprite, 12 ; SPRITE_BIRD
+	overworld_sprite FatBaldGuySprite, 12 ; SPRITE_FAT_BALD_GUY
+	overworld_sprite GamblerSprite, 12 ; SPRITE_GAMBLER
+	overworld_sprite BlackHairBoy2Sprite, 12 ; SPRITE_BLACK_HAIR_BOY_2
+	overworld_sprite GirlSprite, 12 ; SPRITE_GIRL
+	overworld_sprite HikerSprite, 12 ; SPRITE_HIKER
+	overworld_sprite FoulardWomanSprite, 12 ; SPRITE_FOULARD_WOMAN
+	overworld_sprite GentlemanSprite, 12 ; SPRITE_GENTLEMAN
+	overworld_sprite DaisySprite, 12 ; SPRITE_DAISY
+	overworld_sprite BikerSprite, 12 ; SPRITE_BIKER
+	overworld_sprite SailorSprite, 12 ; SPRITE_SAILOR
+	overworld_sprite CookSprite, 12 ; SPRITE_COOK
+	overworld_sprite BikeShopGuySprite, 12 ; SPRITE_BIKE_SHOP_GUY
+	overworld_sprite MrFujiSprite, 12 ; SPRITE_MR_FUJI
+	overworld_sprite GiovanniSprite, 12 ; SPRITE_GIOVANNI
+	overworld_sprite RocketSprite, 12 ; SPRITE_ROCKET
+	overworld_sprite MediumSprite, 12 ; SPRITE_MEDIUM
+	overworld_sprite WaiterSprite, 12 ; SPRITE_WAITER
+	overworld_sprite ErikaSprite, 12 ; SPRITE_ERIKA
+	overworld_sprite MomGeishaSprite, 12 ; SPRITE_MOM_GEISHA
+	overworld_sprite BrunetteGirlSprite, 12 ; SPRITE_BRUNETTE_GIRL
+	overworld_sprite LanceSprite, 12 ; SPRITE_LANCE
+	overworld_sprite OakAideSprite, 12 ; SPRITE_OAK_SCIENTIST_AIDE
+	overworld_sprite OakAideSprite, 12 ; SPRITE_OAK_AIDE
+	overworld_sprite RockerSprite, 12 ; SPRITE_ROCKER
+	overworld_sprite SwimmerSprite, 12 ; SPRITE_SWIMMER
+	overworld_sprite WhitePlayerSprite, 12 ; SPRITE_WHITE_PLAYER
+	overworld_sprite GymHelperSprite, 12 ; SPRITE_GYM_HELPER
+	overworld_sprite OldPersonSprite, 12 ; SPRITE_OLD_PERSON
+	overworld_sprite MartGuySprite, 12 ; SPRITE_MART_GUY
+	overworld_sprite FisherSprite, 12 ; SPRITE_FISHER
+	overworld_sprite OldMediumWomanSprite, 12 ; SPRITE_OLD_MEDIUM_WOMAN
+	overworld_sprite NurseSprite, 12 ; SPRITE_NURSE
+	overworld_sprite CableClubWomanSprite, 12 ; SPRITE_CABLE_CLUB_WOMAN
+	overworld_sprite MrMasterballSprite, 12 ; SPRITE_MR_MASTERBALL
+	overworld_sprite LaprasGiverSprite, 12 ; SPRITE_LAPRAS_GIVER
+	overworld_sprite WardenSprite, 12 ; SPRITE_WARDEN
+	overworld_sprite SsCaptainSprite, 12 ; SPRITE_SS_CAPTAIN
+	overworld_sprite Fisher2Sprite, 12 ; SPRITE_FISHER2
+	overworld_sprite BlackbeltSprite, 12 ; SPRITE_BLACKBELT
+	overworld_sprite GuardSprite, 12 ; SPRITE_GUARD
+	overworld_sprite GuardSprite, 12 ; $32
+	overworld_sprite MomSprite, 12 ; SPRITE_MOM
+	overworld_sprite BaldingGuySprite, 12 ; SPRITE_BALDING_GUY
+	overworld_sprite YoungBoySprite, 12 ; SPRITE_YOUNG_BOY
+	overworld_sprite GameboyKidSprite, 12 ; SPRITE_GAMEBOY_KID
+	overworld_sprite GameboyKidSprite, 12 ; SPRITE_GAMEBOY_KID_COPY
+	overworld_sprite ClefairySprite, 12 ; SPRITE_CLEFAIRY
+	overworld_sprite AgathaSprite, 12 ; SPRITE_AGATHA
+	overworld_sprite BrunoSprite, 12 ; SPRITE_BRUNO
+	overworld_sprite LoreleiSprite, 12 ; SPRITE_LORELEI
+	overworld_sprite SeelSprite, 12 ; SPRITE_SEEL
+	overworld_sprite BallSprite, 4 ; SPRITE_BALL
+	overworld_sprite OmanyteSprite, 4 ; SPRITE_OMANYTE
+	overworld_sprite BoulderSprite, 4 ; SPRITE_BOULDER
+	overworld_sprite PaperSheetSprite, 4 ; SPRITE_PAPER_SHEET
+	overworld_sprite BookMapDexSprite, 4 ; SPRITE_BOOK_MAP_DEX
+	overworld_sprite ClipboardSprite, 4 ; SPRITE_CLIPBOARD
+	overworld_sprite SnorlaxSprite, 4 ; SPRITE_SNORLAX
+	overworld_sprite OldAmberSprite, 4 ; SPRITE_OLD_AMBER_COPY
+	overworld_sprite OldAmberSprite, 4 ; SPRITE_OLD_AMBER
+	overworld_sprite LyingOldManSprite, 4 ; SPRITE_LYING_OLD_MAN_UNUSED_1
+	overworld_sprite LyingOldManSprite, 4 ; SPRITE_LYING_OLD_MAN_UNUSED_2
+	overworld_sprite LyingOldManSprite, 4 ; SPRITE_LYING_OLD_MAN
--- a/data/tilesets/bike_riding_tilesets.asm
+++ b/data/tilesets/bike_riding_tilesets.asm
@@ -1,2 +1,7 @@
 BikeRidingTilesets::
-	db OVERWORLD, FOREST, UNDERGROUND, SHIP_PORT, CAVERN, $FF
+	db OVERWORLD
+	db FOREST
+	db UNDERGROUND
+	db SHIP_PORT
+	db CAVERN
+	db -1 ; end
--- a/data/tilesets/bookshelf_tile_ids.asm
+++ b/data/tilesets/bookshelf_tile_ids.asm
@@ -1,37 +1,25 @@
-; format: db tileset id, bookshelf tile id, text id
+bookshelf_tile: MACRO
+	db \1, \2
+	db_tx_pre \3
+ENDM
+
 BookshelfTileIDs:
-	db PLATEAU,      $30
-	db_tx_pre IndigoPlateauStatues
-	db HOUSE,        $3D
-	db_tx_pre TownMapText
-	db HOUSE,        $1E
-	db_tx_pre BookOrSculptureText
-	db MANSION,      $32
-	db_tx_pre BookOrSculptureText
-	db REDS_HOUSE_1, $32
-	db_tx_pre BookOrSculptureText
-	db LAB,          $28
-	db_tx_pre BookOrSculptureText
-	db LOBBY,        $16
-	db_tx_pre ElevatorText
-	db GYM,          $1D
-	db_tx_pre BookOrSculptureText
-	db DOJO,         $1D
-	db_tx_pre BookOrSculptureText
-	db GATE,         $22
-	db_tx_pre BookOrSculptureText
-	db MART,         $54
-	db_tx_pre PokemonStuffText
-	db MART,         $55
-	db_tx_pre PokemonStuffText
-	db POKECENTER,   $54
-	db_tx_pre PokemonStuffText
-	db POKECENTER,   $55
-	db_tx_pre PokemonStuffText
-	db LOBBY,        $50
-	db_tx_pre PokemonStuffText
-	db LOBBY,        $52
-	db_tx_pre PokemonStuffText
-	db SHIP,         $36
-	db_tx_pre BookOrSculptureText
-	db $FF
+; tileset id, bookshelf tile id, text id
+	bookshelf_tile PLATEAU,      $30, IndigoPlateauStatues
+	bookshelf_tile HOUSE,        $3D, TownMapText
+	bookshelf_tile HOUSE,        $1E, BookOrSculptureText
+	bookshelf_tile MANSION,      $32, BookOrSculptureText
+	bookshelf_tile REDS_HOUSE_1, $32, BookOrSculptureText
+	bookshelf_tile LAB,          $28, BookOrSculptureText
+	bookshelf_tile LOBBY,        $16, ElevatorText
+	bookshelf_tile GYM,          $1D, BookOrSculptureText
+	bookshelf_tile DOJO,         $1D, BookOrSculptureText
+	bookshelf_tile GATE,         $22, BookOrSculptureText
+	bookshelf_tile MART,         $54, PokemonStuffText
+	bookshelf_tile MART,         $55, PokemonStuffText
+	bookshelf_tile POKECENTER,   $54, PokemonStuffText
+	bookshelf_tile POKECENTER,   $55, PokemonStuffText
+	bookshelf_tile LOBBY,        $50, PokemonStuffText
+	bookshelf_tile LOBBY,        $52, PokemonStuffText
+	bookshelf_tile SHIP,         $36, BookOrSculptureText
+	db -1 ; end
--- a/data/tilesets/collision_tile_ids.asm
+++ b/data/tilesets/collision_tile_ids.asm
@@ -1,82 +1,71 @@
-Underground_Coll::
-	db $0b, $0c, $13, $15, $18
+coll_tiles: MACRO
+REPT _NARG
+	db \1
+	shift
+ENDR
 	db -1 ; end
+ENDM
 
+Underground_Coll::
+	coll_tiles $0b, $0c, $13, $15, $18
+
 Overworld_Coll::
-	db $00, $10, $1b, $20, $21, $23, $2c, $2d, $2e, $30, $31, $33, $39, $3c, $3e, $52, $54, $58, $5b
-	db -1 ; end
+	coll_tiles $00, $10, $1b, $20, $21, $23, $2c, $2d, $2e, $30, $31, $33, $39, $3c, $3e, $52, $54, $58, $5b
 
 RedsHouse1_Coll::
 RedsHouse2_Coll::
-	db $01, $02, $03, $11, $12, $13, $14, $1c, $1a
-	db -1 ; end
+	coll_tiles $01, $02, $03, $11, $12, $13, $14, $1c, $1a
 
 Mart_Coll::
 Pokecenter_Coll::
-	db $11, $1a, $1c, $3c, $5e
-	db -1 ; end
+	coll_tiles $11, $1a, $1c, $3c, $5e
 
 Dojo_Coll::
 Gym_Coll::
-	db $11, $16, $19, $2b, $3c, $3d, $3f, $4a, $4c, $4d, $03
-	db -1 ; end
+	coll_tiles $11, $16, $19, $2b, $3c, $3d, $3f, $4a, $4c, $4d, $03
 
 Forest_Coll::
-	db $1e, $20, $2e, $30, $34, $37, $39, $3a, $40, $51, $52, $5a, $5c, $5e, $5f
-	db -1 ; end
+	coll_tiles $1e, $20, $2e, $30, $34, $37, $39, $3a, $40, $51, $52, $5a, $5c, $5e, $5f
 
 House_Coll::
-	db $01, $12, $14, $28, $32, $37, $44, $54, $5c
-	db -1 ; end
+	coll_tiles $01, $12, $14, $28, $32, $37, $44, $54, $5c
 
 ForestGate_Coll::
 Museum_Coll::
 Gate_Coll::
-	db $01, $12, $14, $1a, $1c, $37, $38, $3b, $3c, $5e
-	db -1 ; end
+	coll_tiles $01, $12, $14, $1a, $1c, $37, $38, $3b, $3c, $5e
 
 Ship_Coll::
-	db $04, $0d, $17, $1d, $1e, $23, $34, $37, $39, $4a
-	db -1 ; end
+	coll_tiles $04, $0d, $17, $1d, $1e, $23, $34, $37, $39, $4a
 
 ShipPort_Coll::
-	db $0a, $1a, $32, $3b
-	db -1 ; end
+	coll_tiles $0a, $1a, $32, $3b
 
 Cemetery_Coll::
-	db $01, $10, $13, $1b, $22, $42, $52
-	db -1 ; end
+	coll_tiles $01, $10, $13, $1b, $22, $42, $52
 
 Interior_Coll::
-	db $04, $0f, $15, $1f, $3b, $45, $47, $55, $56
-	db -1 ; end
+	coll_tiles $04, $0f, $15, $1f, $3b, $45, $47, $55, $56
 
 Cavern_Coll::
-	db $05, $15, $18, $1a, $20, $21, $22, $2a, $2d, $30
-	db -1 ; end
+	coll_tiles $05, $15, $18, $1a, $20, $21, $22, $2a, $2d, $30
 
-	db -1 ; unused
+	coll_tiles ; unused
 
 Lobby_Coll::
-	db $14, $17, $1a, $1c, $20, $38, $45
-	db -1 ; end
+	coll_tiles $14, $17, $1a, $1c, $20, $38, $45
 
 Mansion_Coll::
-	db $01, $05, $11, $12, $14, $1a, $1c, $2c, $53
-	db -1 ; end
+	coll_tiles $01, $05, $11, $12, $14, $1a, $1c, $2c, $53
 
 Lab_Coll::
-	db $0c, $26, $16, $1e, $34, $37
-	db -1 ; end
+	coll_tiles $0c, $26, $16, $1e, $34, $37
 
 Club_Coll::
-	db $0f, $1a, $1f, $26, $28, $29, $2c, $2d, $2e, $2f, $41
-	db -1 ; end
+	coll_tiles $0f, $1a, $1f, $26, $28, $29, $2c, $2d, $2e, $2f, $41
 
 Facility_Coll::
-	db $01, $10, $11, $13, $1b, $20, $21, $22, $30, $31, $32, $42, $43, $48, $52, $55, $58, $5e
-	db -1 ; end
+	coll_tiles $01, $10, $11, $13, $1b, $20, $21, $22, $30, $31, $32, $42, $43, $48, $52, $55, $58, $5e
 
 Plateau_Coll::
-	db $1b, $23, $2c, $2d, $3b, $45
-	db -1 ; end
+	coll_tiles $1b, $23, $2c, $2d, $3b, $45
--- a/data/tilesets/cut_tree_blocks.asm
+++ b/data/tilesets/cut_tree_blocks.asm
@@ -10,4 +10,4 @@
 	db $3C, $35
 	db $3F, $35
 	db $3D, $36
-	db $FF ; list terminator
+	db -1 ; end
--- a/data/tilesets/door_tile_ids.asm
+++ b/data/tilesets/door_tile_ids.asm
@@ -1,48 +1,56 @@
 DoorTileIDPointers:
-	dbw OVERWORLD,   OverworldDoorTileIDs
-	dbw FOREST,      ForestDoorTileIDs
-	dbw MART,        MartDoorTileIDs
-	dbw HOUSE,       HouseDoorTileIDs
-	dbw FOREST_GATE, TilesetMuseumDoorTileIDs
-	dbw MUSEUM,      TilesetMuseumDoorTileIDs
-	dbw GATE,        TilesetMuseumDoorTileIDs
-	dbw SHIP,        ShipDoorTileIDs
-	dbw LOBBY,       LobbyDoorTileIDs
-	dbw MANSION,     MansionDoorTileIDs
-	dbw LAB,         LabDoorTileIDs
-	dbw FACILITY,    FacilityDoorTileIDs
-	dbw PLATEAU,     PlateauDoorTileIDs
-	db $ff
+	dbw OVERWORLD,   .OverworldDoorTileIDs
+	dbw FOREST,      .ForestDoorTileIDs
+	dbw MART,        .MartDoorTileIDs
+	dbw HOUSE,       .HouseDoorTileIDs
+	dbw FOREST_GATE, .TilesetMuseumDoorTileIDs
+	dbw MUSEUM,      .TilesetMuseumDoorTileIDs
+	dbw GATE,        .TilesetMuseumDoorTileIDs
+	dbw SHIP,        .ShipDoorTileIDs
+	dbw LOBBY,       .LobbyDoorTileIDs
+	dbw MANSION,     .MansionDoorTileIDs
+	dbw LAB,         .LabDoorTileIDs
+	dbw FACILITY,    .FacilityDoorTileIDs
+	dbw PLATEAU,     .PlateauDoorTileIDs
+	db -1 ; end
 
-OverworldDoorTileIDs:
-	db $1B,$58,$00
+door_tiles: MACRO
+REPT _NARG
+	db \1
+	shift
+ENDR
+	db 0 ; end
+ENDM
 
-ForestDoorTileIDs:
-	db $3a,$00
+.OverworldDoorTileIDs:
+	door_tiles $1B, $58
 
-MartDoorTileIDs:
-	db $5e,$00
+.ForestDoorTileIDs:
+	door_tiles $3a
 
-HouseDoorTileIDs:
-	db $54,$00
+.MartDoorTileIDs:
+	door_tiles $5e
 
-TilesetMuseumDoorTileIDs:
-	db $3b,$00
+.HouseDoorTileIDs:
+	door_tiles $54
 
-ShipDoorTileIDs:
-	db $1e,$00
+.TilesetMuseumDoorTileIDs:
+	door_tiles $3b
 
-LobbyDoorTileIDs:
-	db $1c,$38,$1a,$00
+.ShipDoorTileIDs:
+	door_tiles $1e
 
-MansionDoorTileIDs:
-	db $1a,$1c,$53,$00
+.LobbyDoorTileIDs:
+	door_tiles $1c, $38, $1a
 
-LabDoorTileIDs:
-	db $34,$00
+.MansionDoorTileIDs:
+	door_tiles $1a, $1c, $53
 
-FacilityDoorTileIDs:
-	db $43,$58,$1b,$00
+.LabDoorTileIDs:
+	door_tiles $34
 
-PlateauDoorTileIDs:
-	db $3b,$1b,$00
+.FacilityDoorTileIDs:
+	door_tiles $43, $58, $1b
+
+.PlateauDoorTileIDs:
+	door_tiles $3b, $1b
--- a/data/tilesets/dungeon_tilesets.asm
+++ b/data/tilesets/dungeon_tilesets.asm
@@ -1,2 +1,13 @@
 DungeonTilesets:
-	db FOREST, MUSEUM, SHIP, CAVERN, LOBBY, MANSION, GATE, LAB, FACILITY, CEMETERY, GYM, $FF
+	db FOREST
+	db MUSEUM
+	db SHIP
+	db CAVERN
+	db LOBBY
+	db MANSION
+	db GATE
+	db LAB
+	db FACILITY
+	db CEMETERY
+	db GYM
+	db -1 ; end
--- a/data/tilesets/escape_rope_tilesets.asm
+++ b/data/tilesets/escape_rope_tilesets.asm
@@ -1,3 +1,7 @@
 EscapeRopeTilesets:
-	db FOREST, CEMETERY, CAVERN, FACILITY, INTERIOR
-	db $ff ; terminator
+	db FOREST
+	db CEMETERY
+	db CAVERN
+	db FACILITY
+	db INTERIOR
+	db -1 ; end
--- a/data/tilesets/ledge_tiles.asm
+++ b/data/tilesets/ledge_tiles.asm
@@ -1,11 +1,11 @@
 LedgeTiles:
-	; (player direction) (tile player standing on) (ledge tile) (input required)
-	db SPRITE_FACING_DOWN, $2C,$37,D_DOWN
-	db SPRITE_FACING_DOWN, $39,$36,D_DOWN
-	db SPRITE_FACING_DOWN, $39,$37,D_DOWN
-	db SPRITE_FACING_LEFT, $2C,$27,D_LEFT
-	db SPRITE_FACING_LEFT, $39,$27,D_LEFT
-	db SPRITE_FACING_RIGHT,$2C,$0D,D_RIGHT
-	db SPRITE_FACING_RIGHT,$2C,$1D,D_RIGHT
-	db SPRITE_FACING_RIGHT,$39,$0D,D_RIGHT
-	db $FF
+	; player direction, tile player standing on, ledge tile, input required
+	db SPRITE_FACING_DOWN,  $2C, $37, D_DOWN
+	db SPRITE_FACING_DOWN,  $39, $36, D_DOWN
+	db SPRITE_FACING_DOWN,  $39, $37, D_DOWN
+	db SPRITE_FACING_LEFT,  $2C, $27, D_LEFT
+	db SPRITE_FACING_LEFT,  $39, $27, D_LEFT
+	db SPRITE_FACING_RIGHT, $2C, $0D, D_RIGHT
+	db SPRITE_FACING_RIGHT, $2C, $1D, D_RIGHT
+	db SPRITE_FACING_RIGHT, $39, $0D, D_RIGHT
+	db -1 ; end
--- a/data/tilesets/tileset_headers.asm
+++ b/data/tilesets/tileset_headers.asm
@@ -7,6 +7,7 @@
 ENDM
 
 Tilesets:
+; block, gfx, coll, 3 counter tiles, grass tile, permission
 	tileset Overworld_Block,   Overworld_GFX,   Overworld_Coll,   $FF,$FF,$FF, $52, OUTDOOR
 	tileset RedsHouse1_Block,  RedsHouse1_GFX,  RedsHouse1_Coll,  $FF,$FF,$FF, $FF, INDOOR
 	tileset Mart_Block,        Mart_GFX,        Mart_Coll,        $18,$19,$1E, $FF, INDOOR
--- a/data/tilesets/warp_carpet_tile_ids.asm
+++ b/data/tilesets/warp_carpet_tile_ids.asm
@@ -1,17 +1,25 @@
 WarpTileListPointers:
-	dw .facingDownWarpTiles
-	dw .facingUpWarpTiles
-	dw .facingLeftWarpTiles
-	dw .facingRightWarpTiles
+	dw .FacingDownWarpTiles
+	dw .FacingUpWarpTiles
+	dw .FacingLeftWarpTiles
+	dw .FacingRightWarpTiles
 
-.facingDownWarpTiles
-	db $01,$12,$17,$3D,$04,$18,$33,$FF
+warp_tiles: MACRO
+REPT _NARG
+	db \1
+	shift
+ENDR
+	db -1 ; end
+ENDM
 
-.facingUpWarpTiles
-	db $01,$5C,$FF
+.FacingDownWarpTiles:
+	warp_tiles $01, $12, $17, $3D, $04, $18, $33
 
-.facingLeftWarpTiles
-	db $1A,$4B,$FF
+.FacingUpWarpTiles:
+	warp_tiles $01, $5C
 
-.facingRightWarpTiles
-	db $0F,$4E,$FF
+.FacingLeftWarpTiles:
+	warp_tiles $1A, $4B
+
+.FacingRightWarpTiles:
+	warp_tiles $0F, $4E
--- a/data/tilesets/warp_pad_hole_tile_ids.asm
+++ b/data/tilesets/warp_pad_hole_tile_ids.asm
@@ -1,7 +1,7 @@
-; format: db tileset id, tile id, value to be put in [wStandingOnWarpPadOrHole]
 WarpPadAndHoleData:
+; tileset id, tile id, value for [wStandingOnWarpPadOrHole]
 	db FACILITY, $20, 1 ; warp pad
 	db FACILITY, $11, 2 ; hole
 	db CAVERN,   $22, 2 ; hole
 	db INTERIOR, $55, 1 ; warp pad
-	db $FF
+	db -1 ; end
--- a/data/tilesets/warp_tile_ids.asm
+++ b/data/tilesets/warp_tile_ids.asm
@@ -1,85 +1,98 @@
 WarpTileIDPointers:
-	dw OverworldWarpTileIDs
-	dw RedsHouse1WarpTileIDs
-	dw MartWarpTileIDs
-	dw ForestWarpTileIDs
-	dw RedsHouse2WarpTileIDs
-	dw DojoWarpTileIDs
-	dw PokecenterWarpTileIDs
-	dw GymWarpTileIDs
-	dw HouseWarpTileIDs
-	dw ForestGateWarpTileIDs
-	dw MuseumWarpTileIDs
-	dw UndergroundWarpTileIDs
-	dw GateWarpTileIDs
-	dw ShipWarpTileIDs
-	dw ShipPortWarpTileIDs
-	dw CemeteryWarpTileIDs
-	dw InteriorWarpTileIDs
-	dw CavernWarpTileIDs
-	dw LobbyWarpTileIDs
-	dw MansionWarpTileIDs
-	dw LabWarpTileIDs
-	dw ClubWarpTileIDs
-	dw FacilityWarpTileIDs
-	dw PlateauWarpTileIDs
+	dw .OverworldWarpTileIDs
+	dw .RedsHouse1WarpTileIDs
+	dw .MartWarpTileIDs
+	dw .ForestWarpTileIDs
+	dw .RedsHouse2WarpTileIDs
+	dw .DojoWarpTileIDs
+	dw .PokecenterWarpTileIDs
+	dw .GymWarpTileIDs
+	dw .HouseWarpTileIDs
+	dw .ForestGateWarpTileIDs
+	dw .MuseumWarpTileIDs
+	dw .UndergroundWarpTileIDs
+	dw .GateWarpTileIDs
+	dw .ShipWarpTileIDs
+	dw .ShipPortWarpTileIDs
+	dw .CemeteryWarpTileIDs
+	dw .InteriorWarpTileIDs
+	dw .CavernWarpTileIDs
+	dw .LobbyWarpTileIDs
+	dw .MansionWarpTileIDs
+	dw .LabWarpTileIDs
+	dw .ClubWarpTileIDs
+	dw .FacilityWarpTileIDs
+	dw .PlateauWarpTileIDs
 
-OverworldWarpTileIDs:
-	db $1B,$58,$FF
+.OverworldWarpTileIDs:
+	db $1B, $58
+	db -1 ; end
 
-ForestGateWarpTileIDs:
-MuseumWarpTileIDs:
-GateWarpTileIDs:
+.ForestGateWarpTileIDs:
+.MuseumWarpTileIDs:
+.GateWarpTileIDs:
 	db $3B
+	; fallthrough
+.RedsHouse1WarpTileIDs:
+.RedsHouse2WarpTileIDs:
+	db $1A, $1C
+	db -1 ; end
 
-RedsHouse1WarpTileIDs:
-RedsHouse2WarpTileIDs:
-	db $1A,$1C,$FF
+.MartWarpTileIDs:
+.PokecenterWarpTileIDs:
+	db $5E
+	db -1 ; end
 
-MartWarpTileIDs:
-PokecenterWarpTileIDs:
-	db $5E,$FF
+.ForestWarpTileIDs:
+	db $5A, $5C, $3A
+	db -1 ; end
 
-ForestWarpTileIDs:
-	db $5A,$5C,$3A,$FF
+.DojoWarpTileIDs:
+.GymWarpTileIDs:
+	db $4A
+	db -1 ; end
 
-DojoWarpTileIDs:
-GymWarpTileIDs:
-	db $4A,$FF
+.HouseWarpTileIDs:
+	db $54, $5C, $32
+	db -1 ; end
 
-HouseWarpTileIDs:
-	db $54,$5C,$32,$FF
+.ShipWarpTileIDs:
+	db $37, $39, $1E, $4A
+	db -1 ; end
 
-ShipWarpTileIDs:
-	db $37,$39,$1E,$4A,$FF
+.InteriorWarpTileIDs:
+	db $15, $55, $04
+	db -1 ; end
 
-InteriorWarpTileIDs:
-	db $15,$55,$04,$FF
+.CavernWarpTileIDs:
+	db $18, $1A, $22
+	db -1 ; end
 
-CavernWarpTileIDs:
-	db $18,$1A,$22,$FF
+.LobbyWarpTileIDs:
+	db $1A, $1C, $38
+	db -1 ; end
 
-LobbyWarpTileIDs:
-	db $1A,$1C,$38,$FF
+.MansionWarpTileIDs:
+	db $1A, $1C, $53
+	db -1 ; end
 
-MansionWarpTileIDs:
-	db $1A,$1C,$53,$FF
+.LabWarpTileIDs:
+	db $34
+	db -1 ; end
 
-LabWarpTileIDs:
-	db $34,$FF
-
-FacilityWarpTileIDs:
-	db $43,$58,$20
-
-CemeteryWarpTileIDs:
+.FacilityWarpTileIDs:
+	db $43, $58, $20
+	; fallthrough
+.CemeteryWarpTileIDs:
 	db $1B
+	; fallthrough
+.UndergroundWarpTileIDs:
+	db $13
+	db -1 ; end
 
-UndergroundWarpTileIDs:
-	db $13,$FF
-
-PlateauWarpTileIDs:
-	db $1B,$3B
-
-ShipPortWarpTileIDs:
-ClubWarpTileIDs:
-	db $FF
+.PlateauWarpTileIDs:
+	db $1B, $3B
+	; fallthrough
+.ShipPortWarpTileIDs:
+.ClubWarpTileIDs:
+	db -1 ; end
--- a/data/tilesets/water_tilesets.asm
+++ b/data/tilesets/water_tilesets.asm
@@ -1,4 +1,12 @@
 ; tilesets with water
 WaterTilesets:
-	db OVERWORLD, FOREST, DOJO, GYM, SHIP, SHIP_PORT, CAVERN, FACILITY, PLATEAU
-	db $ff ; terminator
+	db OVERWORLD
+	db FOREST
+	db DOJO
+	db GYM
+	db SHIP
+	db SHIP_PORT
+	db CAVERN
+	db FACILITY
+	db PLATEAU
+	db -1 ; end
--- a/data/trainers/ai_pointers.asm
+++ b/data/trainers/ai_pointers.asm
@@ -3,50 +3,50 @@
 ; first byte, number of times (per Pokémon) it can occur
 ; next two bytes, pointer to AI subroutine for trainer class
 ; subroutines are defined in engine/battle/trainer_ai.asm
-	dbw 3,GenericAI
-	dbw 3,GenericAI
-	dbw 3,GenericAI
-	dbw 3,GenericAI
-	dbw 3,GenericAI
-	dbw 3,GenericAI
-	dbw 3,GenericAI
-	dbw 3,GenericAI
-	dbw 3,GenericAI
-	dbw 3,GenericAI
-	dbw 3,GenericAI
-	dbw 3,GenericAI
-	dbw 3,JugglerAI ; juggler_x
-	dbw 3,GenericAI
-	dbw 3,GenericAI
-	dbw 3,GenericAI
-	dbw 3,GenericAI
-	dbw 3,GenericAI
-	dbw 3,GenericAI
-	dbw 3,GenericAI
-	dbw 3,JugglerAI ; juggler
-	dbw 3,GenericAI
-	dbw 3,GenericAI
-	dbw 2,BlackbeltAI ; blackbelt
-	dbw 3,GenericAI
-	dbw 3,GenericAI
-	dbw 1,GenericAI ; chief
-	dbw 3,GenericAI
-	dbw 1,GiovanniAI ; giovanni
-	dbw 3,GenericAI
-	dbw 2,CooltrainerMAI ; cooltrainerm
-	dbw 1,CooltrainerFAI ; cooltrainerf
-	dbw 2,BrunoAI ; bruno
-	dbw 5,BrockAI ; brock
-	dbw 1,MistyAI ; misty
-	dbw 1,LtSurgeAI ; surge
-	dbw 1,ErikaAI ; erika
-	dbw 2,KogaAI ; koga
-	dbw 2,BlaineAI ; blaine
-	dbw 1,SabrinaAI ; sabrina
-	dbw 3,GenericAI
-	dbw 1,Sony2AI ; sony2
-	dbw 1,Sony3AI ; sony3
-	dbw 2,LoreleiAI ; lorelei
-	dbw 3,GenericAI
-	dbw 2,AgathaAI ; agatha
-	dbw 1,LanceAI ; lance
+	dbw 3, GenericAI
+	dbw 3, GenericAI
+	dbw 3, GenericAI
+	dbw 3, GenericAI
+	dbw 3, GenericAI
+	dbw 3, GenericAI
+	dbw 3, GenericAI
+	dbw 3, GenericAI
+	dbw 3, GenericAI
+	dbw 3, GenericAI
+	dbw 3, GenericAI
+	dbw 3, GenericAI
+	dbw 3, JugglerAI ; juggler_x
+	dbw 3, GenericAI
+	dbw 3, GenericAI
+	dbw 3, GenericAI
+	dbw 3, GenericAI
+	dbw 3, GenericAI
+	dbw 3, GenericAI
+	dbw 3, GenericAI
+	dbw 3, JugglerAI ; juggler
+	dbw 3, GenericAI
+	dbw 3, GenericAI
+	dbw 2, BlackbeltAI ; blackbelt
+	dbw 3, GenericAI
+	dbw 3, GenericAI
+	dbw 1, GenericAI ; chief
+	dbw 3, GenericAI
+	dbw 1, GiovanniAI ; giovanni
+	dbw 3, GenericAI
+	dbw 2, CooltrainerMAI ; cooltrainerm
+	dbw 1, CooltrainerFAI ; cooltrainerf
+	dbw 2, BrunoAI ; bruno
+	dbw 5, BrockAI ; brock
+	dbw 1, MistyAI ; misty
+	dbw 1, LtSurgeAI ; surge
+	dbw 1, ErikaAI ; erika
+	dbw 2, KogaAI ; koga
+	dbw 2, BlaineAI ; blaine
+	dbw 1, SabrinaAI ; sabrina
+	dbw 3, GenericAI
+	dbw 1, Sony2AI ; sony2
+	dbw 1, Sony3AI ; sony3
+	dbw 2, LoreleiAI ; lorelei
+	dbw 3, GenericAI
+	dbw 2, AgathaAI ; agatha
+	dbw 1, LanceAI ; lance
--- a/data/trainers/encounter_types.asm
+++ b/data/trainers/encounter_types.asm
@@ -3,7 +3,7 @@
 	db OPP_JR_TRAINER_F
 	db OPP_BEAUTY
 	db OPP_COOLTRAINER_F
-	db $FF
+	db -1 ; end
 
 EvilTrainerList::
 	db OPP_JUGGLER_X
@@ -14,4 +14,4 @@
 	db OPP_SCIENTIST
 	db OPP_GIOVANNI
 	db OPP_ROCKET
-	db $FF
+	db -1 ; end
--- a/data/trainers/move_choices.asm
+++ b/data/trainers/move_choices.asm
@@ -1,50 +1,57 @@
+move_choices: MACRO
+REPT _NARG
+	db \1
+	shift
+ENDR
+	db 0 ; end
+ENDM
+
 ; move choice modification methods that are applied for each trainer class
-; 0 is sentinel value
 TrainerClassMoveChoiceModifications:
-	db 0      ; YOUNGSTER
-	db 1,0    ; BUG CATCHER
-	db 1,0    ; LASS
-	db 1,3,0  ; SAILOR
-	db 1,0    ; JR_TRAINER_M
-	db 1,0    ; JR_TRAINER_F
-	db 1,2,3,0; POKEMANIAC
-	db 1,2,0  ; SUPER_NERD
-	db 1,0    ; HIKER
-	db 1,0    ; BIKER
-	db 1,3,0  ; BURGLAR
-	db 1,0    ; ENGINEER
-	db 1,2,0  ; JUGGLER_X
-	db 1,3,0  ; FISHER
-	db 1,3,0  ; SWIMMER
-	db 0      ; CUE_BALL
-	db 1,0    ; GAMBLER
-	db 1,3,0  ; BEAUTY
-	db 1,2,0  ; PSYCHIC_TR
-	db 1,3,0  ; ROCKER
-	db 1,0    ; JUGGLER
-	db 1,0    ; TAMER
-	db 1,0    ; BIRD_KEEPER
-	db 1,0    ; BLACKBELT
-	db 1,0    ; SONY1
-	db 1,3,0  ; PROF_OAK
-	db 1,2,0  ; CHIEF
-	db 1,2,0  ; SCIENTIST
-	db 1,3,0  ; GIOVANNI
-	db 1,0    ; ROCKET
-	db 1,3,0  ; COOLTRAINER_M
-	db 1,3,0  ; COOLTRAINER_F
-	db 1,0    ; BRUNO
-	db 1,0    ; BROCK
-	db 1,3,0  ; MISTY
-	db 1,3,0  ; LT_SURGE
-	db 1,3,0  ; ERIKA
-	db 1,3,0  ; KOGA
-	db 1,3,0  ; BLAINE
-	db 1,3,0  ; SABRINA
-	db 1,2,0  ; GENTLEMAN
-	db 1,3,0  ; SONY2
-	db 1,3,0  ; SONY3
-	db 1,2,3,0; LORELEI
-	db 1,0    ; CHANNELER
-	db 1,0    ; AGATHA
-	db 1,3,0  ; LANCE
+	move_choices         ; YOUNGSTER
+	move_choices 1       ; BUG CATCHER
+	move_choices 1       ; LASS
+	move_choices 1, 3    ; SAILOR
+	move_choices 1       ; JR_TRAINER_M
+	move_choices 1       ; JR_TRAINER_F
+	move_choices 1, 2, 3 ; POKEMANIAC
+	move_choices 1, 2    ; SUPER_NERD
+	move_choices 1       ; HIKER
+	move_choices 1       ; BIKER
+	move_choices 1, 3    ; BURGLAR
+	move_choices 1       ; ENGINEER
+	move_choices 1, 2    ; JUGGLER_X
+	move_choices 1, 3    ; FISHER
+	move_choices 1, 3    ; SWIMMER
+	move_choices         ; CUE_BALL
+	move_choices 1       ; GAMBLER
+	move_choices 1, 3    ; BEAUTY
+	move_choices 1, 2    ; PSYCHIC_TR
+	move_choices 1, 3    ; ROCKER
+	move_choices 1       ; JUGGLER
+	move_choices 1       ; TAMER
+	move_choices 1       ; BIRD_KEEPER
+	move_choices 1       ; BLACKBELT
+	move_choices 1       ; SONY1
+	move_choices 1, 3    ; PROF_OAK
+	move_choices 1, 2    ; CHIEF
+	move_choices 1, 2    ; SCIENTIST
+	move_choices 1, 3    ; GIOVANNI
+	move_choices 1       ; ROCKET
+	move_choices 1, 3    ; COOLTRAINER_M
+	move_choices 1, 3    ; COOLTRAINER_F
+	move_choices 1       ; BRUNO
+	move_choices 1       ; BROCK
+	move_choices 1, 3    ; MISTY
+	move_choices 1, 3    ; LT_SURGE
+	move_choices 1, 3    ; ERIKA
+	move_choices 1, 3    ; KOGA
+	move_choices 1, 3    ; BLAINE
+	move_choices 1, 3    ; SABRINA
+	move_choices 1, 2    ; GENTLEMAN
+	move_choices 1, 3    ; SONY2
+	move_choices 1, 3    ; SONY3
+	move_choices 1, 2, 3 ; LORELEI
+	move_choices 1       ; CHANNELER
+	move_choices 1       ; AGATHA
+	move_choices 1, 3    ; LANCE
--- a/data/trainers/name_pointers.asm
+++ b/data/trainers/name_pointers.asm
@@ -1,37 +1,37 @@
 TrainerNamePointers:
 ; what is the point of these?
-	dw YoungsterName
-	dw BugCatcherName
-	dw LassName
+	dw .YoungsterName
+	dw .BugCatcherName
+	dw .LassName
 	dw wTrainerName
-	dw JrTrainerMName
-	dw JrTrainerFName
-	dw PokemaniacName
-	dw SuperNerdName
+	dw .JrTrainerMName
+	dw .JrTrainerFName
+	dw .PokemaniacName
+	dw .SuperNerdName
 	dw wTrainerName
 	dw wTrainerName
-	dw BurglarName
-	dw EngineerName
-	dw JugglerXName
+	dw .BurglarName
+	dw .EngineerName
+	dw .JugglerXName
 	dw wTrainerName
-	dw SwimmerName
+	dw .SwimmerName
 	dw wTrainerName
 	dw wTrainerName
-	dw BeautyName
+	dw .BeautyName
 	dw wTrainerName
-	dw RockerName
-	dw JugglerName
+	dw .RockerName
+	dw .JugglerName
 	dw wTrainerName
 	dw wTrainerName
-	dw BlackbeltName
+	dw .BlackbeltName
 	dw wTrainerName
-	dw ProfOakName
-	dw ChiefName
-	dw ScientistName
+	dw .ProfOakName
+	dw .ChiefName
+	dw .ScientistName
 	dw wTrainerName
-	dw RocketName
-	dw CooltrainerMName
-	dw CooltrainerFName
+	dw .RocketName
+	dw .CooltrainerMName
+	dw .CooltrainerFName
 	dw wTrainerName
 	dw wTrainerName
 	dw wTrainerName
@@ -48,45 +48,24 @@
 	dw wTrainerName
 	dw wTrainerName
 
-YoungsterName:
-	db "YOUNGSTER@"
-BugCatcherName:
-	db "BUG CATCHER@"
-LassName:
-	db "LASS@"
-JrTrainerMName:
-	db "JR.TRAINER♂@"
-JrTrainerFName:
-	db "JR.TRAINER♀@"
-PokemaniacName:
-	db "POKéMANIAC@"
-SuperNerdName:
-	db "SUPER NERD@"
-BurglarName:
-	db "BURGLAR@"
-EngineerName:
-	db "ENGINEER@"
-JugglerXName:
-	db "JUGGLER@"
-SwimmerName:
-	db "SWIMMER@"
-BeautyName:
-	db "BEAUTY@"
-RockerName:
-	db "ROCKER@"
-JugglerName:
-	db "JUGGLER@"
-BlackbeltName:
-	db "BLACKBELT@"
-ProfOakName:
-	db "PROF.OAK@"
-ChiefName:
-	db "CHIEF@"
-ScientistName:
-	db "SCIENTIST@"
-RocketName:
-	db "ROCKET@"
-CooltrainerMName:
-	db "COOLTRAINER♂@"
-CooltrainerFName:
-	db "COOLTRAINER♀@"
+.YoungsterName:    db "YOUNGSTER@"
+.BugCatcherName:   db "BUG CATCHER@"
+.LassName:         db "LASS@"
+.JrTrainerMName:   db "JR.TRAINER♂@"
+.JrTrainerFName:   db "JR.TRAINER♀@"
+.PokemaniacName:   db "POKéMANIAC@"
+.SuperNerdName:    db "SUPER NERD@"
+.BurglarName:      db "BURGLAR@"
+.EngineerName:     db "ENGINEER@"
+.JugglerXName:     db "JUGGLER@"
+.SwimmerName:      db "SWIMMER@"
+.BeautyName:       db "BEAUTY@"
+.RockerName:       db "ROCKER@"
+.JugglerName:      db "JUGGLER@"
+.BlackbeltName:    db "BLACKBELT@"
+.ProfOakName:      db "PROF.OAK@"
+.ChiefName:        db "CHIEF@"
+.ScientistName:    db "SCIENTIST@"
+.RocketName:       db "ROCKET@"
+.CooltrainerMName: db "COOLTRAINER♂@"
+.CooltrainerFName: db "COOLTRAINER♀@"
--- a/data/trainers/parties.asm
+++ b/data/trainers/parties.asm
@@ -47,216 +47,225 @@
 	dw AgathaData
 	dw LanceData
 
-; if first byte != FF, then
+; if first byte != $FF, then
 	; first byte is level (of all pokemon on this team)
 	; all the next bytes are pokemon species
 	; null-terminated
-; if first byte == FF, then
-	; first byte is FF (obviously)
+; if first byte == $FF, then
+	; first byte is $FF (obviously)
 	; every next two bytes are a level and species
 	; null-terminated
 
 YoungsterData:
 ; Route 3
-	db 11,RATTATA,EKANS,0
-	db 14,SPEAROW,0
+	db 11, RATTATA, EKANS, 0
+	db 14, SPEAROW, 0
 ; Mt. Moon 1F
-	db 10,RATTATA,RATTATA,ZUBAT,0
+	db 10, RATTATA, RATTATA, ZUBAT, 0
 ; Route 24
-	db 14,RATTATA,EKANS,ZUBAT,0
+	db 14, RATTATA, EKANS, ZUBAT, 0
 ; Route 25
-	db 15,RATTATA,SPEAROW,0
-	db 17,SLOWPOKE,0
-	db 14,EKANS,SANDSHREW,0
+	db 15, RATTATA, SPEAROW, 0
+	db 17, SLOWPOKE, 0
+	db 14, EKANS, SANDSHREW, 0
 ; SS Anne 1F Rooms
-	db 21,NIDORAN_M,0
+	db 21, NIDORAN_M, 0
 ; Route 11
-	db 21,EKANS,0
-	db 19,SANDSHREW,ZUBAT,0
-	db 17,RATTATA,RATTATA,RATICATE,0
-	db 18,NIDORAN_M,NIDORINO,0
+	db 21, EKANS, 0
+	db 19, SANDSHREW, ZUBAT, 0
+	db 17, RATTATA, RATTATA, RATICATE, 0
+	db 18, NIDORAN_M, NIDORINO, 0
 ; Unused
-	db 17,SPEAROW,RATTATA,RATTATA,SPEAROW,0
+	db 17, SPEAROW, RATTATA, RATTATA, SPEAROW, 0
+
 BugCatcherData:
 ; Viridian Forest
-	db 6,WEEDLE,CATERPIE,0
-	db 7,WEEDLE,KAKUNA,WEEDLE,0
-	db 9,WEEDLE,0
+	db 6, WEEDLE, CATERPIE, 0
+	db 7, WEEDLE, KAKUNA, WEEDLE, 0
+	db 9, WEEDLE, 0
 ; Route 3
-	db 10,CATERPIE,WEEDLE,CATERPIE,0
-	db 9,WEEDLE,KAKUNA,CATERPIE,METAPOD,0
-	db 11,CATERPIE,METAPOD,0
+	db 10, CATERPIE, WEEDLE, CATERPIE, 0
+	db 9, WEEDLE, KAKUNA, CATERPIE, METAPOD, 0
+	db 11, CATERPIE, METAPOD, 0
 ; Mt. Moon 1F
-	db 11,WEEDLE,KAKUNA,0
-	db 10,CATERPIE,METAPOD,CATERPIE,0
+	db 11, WEEDLE, KAKUNA, 0
+	db 10, CATERPIE, METAPOD, CATERPIE, 0
 ; Route 24
-	db 14,CATERPIE,WEEDLE,0
+	db 14, CATERPIE, WEEDLE, 0
 ; Route 6
-	db 16,WEEDLE,CATERPIE,WEEDLE,0
-	db 20,BUTTERFREE,0
+	db 16, WEEDLE, CATERPIE, WEEDLE, 0
+	db 20, BUTTERFREE, 0
 ; Unused
-	db 18,METAPOD,CATERPIE,VENONAT,0
+	db 18, METAPOD, CATERPIE, VENONAT, 0
 ; Route 9
-	db 19,BEEDRILL,BEEDRILL,0
-	db 20,CATERPIE,WEEDLE,VENONAT,0
+	db 19, BEEDRILL, BEEDRILL, 0
+	db 20, CATERPIE, WEEDLE, VENONAT, 0
+
 LassData:
 ; Route 3
-	db 9,PIDGEY,PIDGEY,0
-	db 10,RATTATA,NIDORAN_M,0
-	db 14,JIGGLYPUFF,0
+	db 9, PIDGEY, PIDGEY, 0
+	db 10, RATTATA, NIDORAN_M, 0
+	db 14, JIGGLYPUFF, 0
 ; Route 4
-	db 31,PARAS,PARAS,PARASECT,0
+	db 31, PARAS, PARAS, PARASECT, 0
 ; Mt. Moon 1F
-	db 11,ODDISH,BELLSPROUT,0
-	db 14,CLEFAIRY,0
+	db 11, ODDISH, BELLSPROUT, 0
+	db 14, CLEFAIRY, 0
 ; Route 24
-	db 16,PIDGEY,NIDORAN_F,0
-	db 14,PIDGEY,NIDORAN_F,0
+	db 16, PIDGEY, NIDORAN_F, 0
+	db 14, PIDGEY, NIDORAN_F, 0
 ; Route 25
-	db 15,NIDORAN_M,NIDORAN_F,0
-	db 13,ODDISH,PIDGEY,ODDISH,0
+	db 15, NIDORAN_M, NIDORAN_F, 0
+	db 13, ODDISH, PIDGEY, ODDISH, 0
 ; SS Anne 1F Rooms
-	db 18,PIDGEY,NIDORAN_F,0
+	db 18, PIDGEY, NIDORAN_F, 0
 ; SS Anne 2F Rooms
-	db 18,RATTATA,PIKACHU,0
+	db 18, RATTATA, PIKACHU, 0
 ; Route 8
-	db 23,NIDORAN_F,NIDORINA,0
-	db 24,MEOWTH,MEOWTH,MEOWTH,0
-	db 19,PIDGEY,RATTATA,NIDORAN_M,MEOWTH,PIKACHU,0
-	db 22,CLEFAIRY,CLEFAIRY,0
+	db 23, NIDORAN_F, NIDORINA, 0
+	db 24, MEOWTH, MEOWTH, MEOWTH, 0
+	db 19, PIDGEY, RATTATA, NIDORAN_M, MEOWTH, PIKACHU, 0
+	db 22, CLEFAIRY, CLEFAIRY, 0
 ; Celadon Gym
-	db 23,BELLSPROUT,WEEPINBELL,0
-	db 23,ODDISH,GLOOM,0
+	db 23, BELLSPROUT, WEEPINBELL, 0
+	db 23, ODDISH, GLOOM, 0
+
 SailorData:
 ; SS Anne Stern
-	db 18,MACHOP,SHELLDER,0
-	db 17,MACHOP,TENTACOOL,0
+	db 18, MACHOP, SHELLDER, 0
+	db 17, MACHOP, TENTACOOL, 0
 ; SS Anne B1F Rooms
-	db 21,SHELLDER,0
-	db 17,HORSEA,SHELLDER,TENTACOOL,0
-	db 18,TENTACOOL,STARYU,0
-	db 17,HORSEA,HORSEA,HORSEA,0
-	db 20,MACHOP,0
+	db 21, SHELLDER, 0
+	db 17, HORSEA, SHELLDER, TENTACOOL, 0
+	db 18, TENTACOOL, STARYU, 0
+	db 17, HORSEA, HORSEA, HORSEA, 0
+	db 20, MACHOP, 0
 ; Vermilion Gym
-	db 21,PIKACHU,PIKACHU,0
+	db 21, PIKACHU, PIKACHU, 0
+
 JrTrainerMData:
 ; Pewter Gym
-	db 11,DIGLETT,SANDSHREW,0
+	db 11, DIGLETT, SANDSHREW, 0
 ; Route 24/Route 25
-	db 14,RATTATA,EKANS,0
+	db 14, RATTATA, EKANS, 0
 ; Route 24
-	db 18,MANKEY,0
+	db 18, MANKEY, 0
 ; Route 6
-	db 20,SQUIRTLE,0
-	db 16,SPEAROW,RATICATE,0
+	db 20, SQUIRTLE, 0
+	db 16, SPEAROW, RATICATE, 0
 ; Unused
-	db 18,DIGLETT,DIGLETT,SANDSHREW,0
+	db 18, DIGLETT, DIGLETT, SANDSHREW, 0
 ; Route 9
-	db 21,GROWLITHE,CHARMANDER,0
-	db 19,RATTATA,DIGLETT,EKANS,SANDSHREW,0
+	db 21, GROWLITHE, CHARMANDER, 0
+	db 19, RATTATA, DIGLETT, EKANS, SANDSHREW, 0
 ; Route 12
-	db 29,NIDORAN_M,NIDORINO,0
+	db 29, NIDORAN_M, NIDORINO, 0
+
 JrTrainerFData:
 ; Cerulean Gym
-	db 19,GOLDEEN,0
+	db 19, GOLDEEN, 0
 ; Route 6
-	db 16,RATTATA,PIKACHU,0
-	db 16,PIDGEY,PIDGEY,PIDGEY,0
+	db 16, RATTATA, PIKACHU, 0
+	db 16, PIDGEY, PIDGEY, PIDGEY, 0
 ; Unused
-	db 22,BULBASAUR,0
+	db 22, BULBASAUR, 0
 ; Route 9
-	db 18,ODDISH,BELLSPROUT,ODDISH,BELLSPROUT,0
-	db 23,MEOWTH,0
+	db 18, ODDISH, BELLSPROUT, ODDISH, BELLSPROUT, 0
+	db 23, MEOWTH, 0
 ; Route 10
-	db 20,PIKACHU,CLEFAIRY,0
-	db 21,PIDGEY,PIDGEOTTO,0
+	db 20, PIKACHU, CLEFAIRY, 0
+	db 21, PIDGEY, PIDGEOTTO, 0
 ; Rock Tunnel B1F
-	db 21,JIGGLYPUFF,PIDGEY,MEOWTH,0
-	db 22,ODDISH,BULBASAUR,0
+	db 21, JIGGLYPUFF, PIDGEY, MEOWTH, 0
+	db 22, ODDISH, BULBASAUR, 0
 ; Celadon Gym
-	db 24,BULBASAUR,IVYSAUR,0
+	db 24, BULBASAUR, IVYSAUR, 0
 ; Route 13
-	db 24,PIDGEY,MEOWTH,RATTATA,PIKACHU,MEOWTH,0
-	db 30,POLIWAG,POLIWAG,0
-	db 27,PIDGEY,MEOWTH,PIDGEY,PIDGEOTTO,0
-	db 28,GOLDEEN,POLIWAG,HORSEA,0
+	db 24, PIDGEY, MEOWTH, RATTATA, PIKACHU, MEOWTH, 0
+	db 30, POLIWAG, POLIWAG, 0
+	db 27, PIDGEY, MEOWTH, PIDGEY, PIDGEOTTO, 0
+	db 28, GOLDEEN, POLIWAG, HORSEA, 0
 ; Route 20
-	db 31,GOLDEEN,SEAKING,0
+	db 31, GOLDEEN, SEAKING, 0
 ; Rock Tunnel 1F
-	db 22,BELLSPROUT,CLEFAIRY,0
-	db 20,MEOWTH,ODDISH,PIDGEY,0
-	db 19,PIDGEY,RATTATA,RATTATA,BELLSPROUT,0
+	db 22, BELLSPROUT, CLEFAIRY, 0
+	db 20, MEOWTH, ODDISH, PIDGEY, 0
+	db 19, PIDGEY, RATTATA, RATTATA, BELLSPROUT, 0
 ; Route 15
-	db 28,GLOOM,ODDISH,ODDISH,0
-	db 29,PIKACHU,RAICHU,0
-	db 33,CLEFAIRY,0
-	db 29,BELLSPROUT,ODDISH,TANGELA,0
+	db 28, GLOOM, ODDISH, ODDISH, 0
+	db 29, PIKACHU, RAICHU, 0
+	db 33, CLEFAIRY, 0
+	db 29, BELLSPROUT, ODDISH, TANGELA, 0
 ; Route 20
-	db 30,TENTACOOL,HORSEA,SEEL,0
+	db 30, TENTACOOL, HORSEA, SEEL, 0
+
 PokemaniacData:
 ; Route 10
-	db 30,RHYHORN,LICKITUNG,0
-	db 20,CUBONE,SLOWPOKE,0
+	db 30, RHYHORN, LICKITUNG, 0
+	db 20, CUBONE, SLOWPOKE, 0
 ; Rock Tunnel B1F
-	db 20,SLOWPOKE,SLOWPOKE,SLOWPOKE,0
-	db 22,CHARMANDER,CUBONE,0
-	db 25,SLOWPOKE,0
+	db 20, SLOWPOKE, SLOWPOKE, SLOWPOKE, 0
+	db 22, CHARMANDER, CUBONE, 0
+	db 25, SLOWPOKE, 0
 ; Victory Road 2F
-	db 40,CHARMELEON,LAPRAS,LICKITUNG,0
+	db 40, CHARMELEON, LAPRAS, LICKITUNG, 0
 ; Rock Tunnel 1F
-	db 23,CUBONE,SLOWPOKE,0
+	db 23, CUBONE, SLOWPOKE, 0
+
 SuperNerdData:
 ; Mt. Moon 1F
-	db 11,MAGNEMITE,VOLTORB,0
+	db 11, MAGNEMITE, VOLTORB, 0
 ; Mt. Moon B2F
-	db 12,GRIMER,VOLTORB,KOFFING,0
+	db 12, GRIMER, VOLTORB, KOFFING, 0
 ; Route 8
-	db 20,VOLTORB,KOFFING,VOLTORB,MAGNEMITE,0
-	db 22,GRIMER,MUK,GRIMER,0
-	db 26,KOFFING,0
+	db 20, VOLTORB, KOFFING, VOLTORB, MAGNEMITE, 0
+	db 22, GRIMER, MUK, GRIMER, 0
+	db 26, KOFFING, 0
 ; Unused
-	db 22,KOFFING,MAGNEMITE,WEEZING,0
-	db 20,MAGNEMITE,MAGNEMITE,KOFFING,MAGNEMITE,0
-	db 24,MAGNEMITE,VOLTORB,0
+	db 22, KOFFING, MAGNEMITE, WEEZING, 0
+	db 20, MAGNEMITE, MAGNEMITE, KOFFING, MAGNEMITE, 0
+	db 24, MAGNEMITE, VOLTORB, 0
 ; Cinnabar Gym
-	db 36,VULPIX,VULPIX,NINETALES,0
-	db 34,PONYTA,CHARMANDER,VULPIX,GROWLITHE,0
-	db 41,RAPIDASH,0
-	db 37,GROWLITHE,VULPIX,0
+	db 36, VULPIX, VULPIX, NINETALES, 0
+	db 34, PONYTA, CHARMANDER, VULPIX, GROWLITHE, 0
+	db 41, RAPIDASH, 0
+	db 37, GROWLITHE, VULPIX, 0
+
 HikerData:
 ; Mt. Moon 1F
-	db 10,GEODUDE,GEODUDE,ONIX,0
+	db 10, GEODUDE, GEODUDE, ONIX, 0
 ; Route 25
-	db 15,MACHOP,GEODUDE,0
-	db 13,GEODUDE,GEODUDE,MACHOP,GEODUDE,0
-	db 17,ONIX,0
+	db 15, MACHOP, GEODUDE, 0
+	db 13, GEODUDE, GEODUDE, MACHOP, GEODUDE, 0
+	db 17, ONIX, 0
 ; Route 9
-	db 21,GEODUDE,ONIX,0
-	db 20,GEODUDE,MACHOP,GEODUDE,0
+	db 21, GEODUDE, ONIX, 0
+	db 20, GEODUDE, MACHOP, GEODUDE, 0
 ; Route 10
-	db 21,GEODUDE,ONIX,0
-	db 19,ONIX,GRAVELER,0
+	db 21, GEODUDE, ONIX, 0
+	db 19, ONIX, GRAVELER, 0
 ; Rock Tunnel B1F
-	db 21,GEODUDE,GEODUDE,GRAVELER,0
-	db 25,GEODUDE,0
+	db 21, GEODUDE, GEODUDE, GRAVELER, 0
+	db 25, GEODUDE, 0
 ; Route 9/Rock Tunnel B1F
-	db 20,MACHOP,ONIX,0
+	db 20, MACHOP, ONIX, 0
 ; Rock Tunnel 1F
-	db 19,GEODUDE,MACHOP,GEODUDE,GEODUDE,0
-	db 20,ONIX,ONIX,GEODUDE,0
-	db 21,GEODUDE,GRAVELER,0
+	db 19, GEODUDE, MACHOP, GEODUDE, GEODUDE, 0
+	db 20, ONIX, ONIX, GEODUDE, 0
+	db 21, GEODUDE, GRAVELER, 0
+
 BikerData:
 ; Route 13
-	db 28,KOFFING,KOFFING,KOFFING,0
+	db 28, KOFFING, KOFFING, KOFFING, 0
 ; Route 14
-	db 29,KOFFING,GRIMER,0
+	db 29, KOFFING, GRIMER, 0
 ; Route 15
-	db 25,KOFFING,KOFFING,WEEZING,KOFFING,GRIMER,0
-	db 28,KOFFING,GRIMER,WEEZING,0
+	db 25, KOFFING, KOFFING, WEEZING, KOFFING, GRIMER, 0
+	db 28, KOFFING, GRIMER, WEEZING, 0
 ; Route 16
-	db 29,GRIMER,KOFFING,0
-	db 33,WEEZING,0
-	db 26,GRIMER,GRIMER,GRIMER,GRIMER,0
+	db 29, GRIMER, KOFFING, 0
+	db 33, WEEZING, 0
+	db 26, GRIMER, GRIMER, GRIMER, GRIMER, 0
 ; Route 17
 	; From https://www.smogon.com/smog/issue27/glitch:
 	; 0E:5FC2 is offset of the ending 0 for this first Biker on Route 17.
@@ -265,432 +274,469 @@
 	; (BaseStats = $43DE and BANK(BaseStats) = $0E.)
 	; Finally, PokedexOrder lists 0 as the dex ID for every MissingNo.
 	; The result is that this data gets interpreted as the base stats
-	; for MissingNo: 0,33,MUK,0,29,VOLTORB,VOLTORB,0,...,28,GRIMER,GRIMER.
-	db 28,WEEZING,KOFFING,WEEZING,0
-	db 33,MUK,0
-	db 29,VOLTORB,VOLTORB,0
-	db 29,WEEZING,MUK,0
-	db 25,KOFFING,WEEZING,KOFFING,KOFFING,WEEZING,0
+	; for MissingNo: 0, 33, MUK, 0, 29, VOLTORB, VOLTORB, 0, ..., 28, GRIMER, GRIMER.
+	db 28, WEEZING, KOFFING, WEEZING, 0
+	db 33, MUK, 0
+	db 29, VOLTORB, VOLTORB, 0
+	db 29, WEEZING, MUK, 0
+	db 25, KOFFING, WEEZING, KOFFING, KOFFING, WEEZING, 0
 ; Route 14
-	db 26,KOFFING,KOFFING,GRIMER,KOFFING,0
-	db 28,GRIMER,GRIMER,KOFFING,0
-	db 29,KOFFING,MUK,0
+	db 26, KOFFING, KOFFING, GRIMER, KOFFING, 0
+	db 28, GRIMER, GRIMER, KOFFING, 0
+	db 29, KOFFING, MUK, 0
+
 BurglarData:
 ; Unused
-	db 29,GROWLITHE,VULPIX,0
-	db 33,GROWLITHE,0
-	db 28,VULPIX,CHARMANDER,PONYTA,0
+	db 29, GROWLITHE, VULPIX, 0
+	db 33, GROWLITHE, 0
+	db 28, VULPIX, CHARMANDER, PONYTA, 0
 ; Cinnabar Gym
-	db 36,GROWLITHE,VULPIX,NINETALES,0
-	db 41,PONYTA,0
-	db 37,VULPIX,GROWLITHE,0
+	db 36, GROWLITHE, VULPIX, NINETALES, 0
+	db 41, PONYTA, 0
+	db 37, VULPIX, GROWLITHE, 0
 ; Mansion 2F
-	db 34,CHARMANDER,CHARMELEON,0
+	db 34, CHARMANDER, CHARMELEON, 0
 ; Mansion 3F
-	db 38,NINETALES,0
+	db 38, NINETALES, 0
 ; Mansion B1F
-	db 34,GROWLITHE,PONYTA,0
+	db 34, GROWLITHE, PONYTA, 0
+
 EngineerData:
 ; Unused
-	db 21,VOLTORB,MAGNEMITE,0
+	db 21, VOLTORB, MAGNEMITE, 0
 ; Route 11
-	db 21,MAGNEMITE,0
-	db 18,MAGNEMITE,MAGNEMITE,MAGNETON,0
+	db 21, MAGNEMITE, 0
+	db 18, MAGNEMITE, MAGNEMITE, MAGNETON, 0
+
 Juggler1Data:
 ; none
+
 FisherData:
 ; SS Anne 2F Rooms
-	db 17,GOLDEEN,TENTACOOL,GOLDEEN,0
+	db 17, GOLDEEN, TENTACOOL, GOLDEEN, 0
 ; SS Anne B1F Rooms
-	db 17,TENTACOOL,STARYU,SHELLDER,0
+	db 17, TENTACOOL, STARYU, SHELLDER, 0
 ; Route 12
-	db 22,GOLDEEN,POLIWAG,GOLDEEN,0
-	db 24,TENTACOOL,GOLDEEN,0
-	db 27,GOLDEEN,0
-	db 21,POLIWAG,SHELLDER,GOLDEEN,HORSEA,0
+	db 22, GOLDEEN, POLIWAG, GOLDEEN, 0
+	db 24, TENTACOOL, GOLDEEN, 0
+	db 27, GOLDEEN, 0
+	db 21, POLIWAG, SHELLDER, GOLDEEN, HORSEA, 0
 ; Route 21
-	db 28,SEAKING,GOLDEEN,SEAKING,SEAKING,0
-	db 31,SHELLDER,CLOYSTER,0
-	db 27,MAGIKARP,MAGIKARP,MAGIKARP,MAGIKARP,MAGIKARP,MAGIKARP,0
-	db 33,SEAKING,GOLDEEN,0
+	db 28, SEAKING, GOLDEEN, SEAKING, SEAKING, 0
+	db 31, SHELLDER, CLOYSTER, 0
+	db 27, MAGIKARP, MAGIKARP, MAGIKARP, MAGIKARP, MAGIKARP, MAGIKARP, 0
+	db 33, SEAKING, GOLDEEN, 0
 ; Route 12
-	db 24,MAGIKARP,MAGIKARP,0
+	db 24, MAGIKARP, MAGIKARP, 0
+
 SwimmerData:
 ; Cerulean Gym
-	db 16,HORSEA,SHELLDER,0
+	db 16, HORSEA, SHELLDER, 0
 ; Route 19
-	db 30,TENTACOOL,SHELLDER,0
-	db 29,GOLDEEN,HORSEA,STARYU,0
-	db 30,POLIWAG,POLIWHIRL,0
-	db 27,HORSEA,TENTACOOL,TENTACOOL,GOLDEEN,0
-	db 29,GOLDEEN,SHELLDER,SEAKING,0
-	db 30,HORSEA,HORSEA,0
-	db 27,TENTACOOL,TENTACOOL,STARYU,HORSEA,TENTACRUEL,0
+	db 30, TENTACOOL, SHELLDER, 0
+	db 29, GOLDEEN, HORSEA, STARYU, 0
+	db 30, POLIWAG, POLIWHIRL, 0
+	db 27, HORSEA, TENTACOOL, TENTACOOL, GOLDEEN, 0
+	db 29, GOLDEEN, SHELLDER, SEAKING, 0
+	db 30, HORSEA, HORSEA, 0
+	db 27, TENTACOOL, TENTACOOL, STARYU, HORSEA, TENTACRUEL, 0
 ; Route 20
-	db 31,SHELLDER,CLOYSTER,0
-	db 35,STARYU,0
-	db 28,HORSEA,HORSEA,SEADRA,HORSEA,0
+	db 31, SHELLDER, CLOYSTER, 0
+	db 35, STARYU, 0
+	db 28, HORSEA, HORSEA, SEADRA, HORSEA, 0
 ; Route 21
-	db 33,SEADRA,TENTACRUEL,0
-	db 37,STARMIE,0
-	db 33,STARYU,WARTORTLE,0
-	db 32,POLIWHIRL,TENTACOOL,SEADRA,0
+	db 33, SEADRA, TENTACRUEL, 0
+	db 37, STARMIE, 0
+	db 33, STARYU, WARTORTLE, 0
+	db 32, POLIWHIRL, TENTACOOL, SEADRA, 0
+
 CueBallData:
 ; Route 16
-	db 28,MACHOP,MANKEY,MACHOP,0
-	db 29,MANKEY,MACHOP,0
-	db 33,MACHOP,0
+	db 28, MACHOP, MANKEY, MACHOP, 0
+	db 29, MANKEY, MACHOP, 0
+	db 33, MACHOP, 0
 ; Route 17
-	db 29,MANKEY,PRIMEAPE,0
-	db 29,MACHOP,MACHOKE,0
-	db 33,MACHOKE,0
-	db 26,MANKEY,MANKEY,MACHOKE,MACHOP,0
-	db 29,PRIMEAPE,MACHOKE,0
+	db 29, MANKEY, PRIMEAPE, 0
+	db 29, MACHOP, MACHOKE, 0
+	db 33, MACHOKE, 0
+	db 26, MANKEY, MANKEY, MACHOKE, MACHOP, 0
+	db 29, PRIMEAPE, MACHOKE, 0
 ; Route 21
-	db 31,TENTACOOL,TENTACOOL,TENTACRUEL,0
+	db 31, TENTACOOL, TENTACOOL, TENTACRUEL, 0
+
 GamblerData:
 ; Route 11
-	db 18,POLIWAG,HORSEA,0
-	db 18,BELLSPROUT,ODDISH,0
-	db 18,VOLTORB,MAGNEMITE,0
-	db 18,GROWLITHE,VULPIX,0
+	db 18, POLIWAG, HORSEA, 0
+	db 18, BELLSPROUT, ODDISH, 0
+	db 18, VOLTORB, MAGNEMITE, 0
+	db 18, GROWLITHE, VULPIX, 0
 ; Route 8
-	db 22,POLIWAG,POLIWAG,POLIWHIRL,0
+	db 22, POLIWAG, POLIWAG, POLIWHIRL, 0
 ; Unused
-	db 22,ONIX,GEODUDE,GRAVELER,0
+	db 22, ONIX, GEODUDE, GRAVELER, 0
 ; Route 8
-	db 24,GROWLITHE,VULPIX,0
+	db 24, GROWLITHE, VULPIX, 0
+
 BeautyData:
 ; Celadon Gym
-	db 21,ODDISH,BELLSPROUT,ODDISH,BELLSPROUT,0
-	db 24,BELLSPROUT,BELLSPROUT,0
-	db 26,EXEGGCUTE,0
+	db 21, ODDISH, BELLSPROUT, ODDISH, BELLSPROUT, 0
+	db 24, BELLSPROUT, BELLSPROUT, 0
+	db 26, EXEGGCUTE, 0
 ; Route 13
-	db 27,RATTATA,PIKACHU,RATTATA,0
-	db 29,CLEFAIRY,MEOWTH,0
+	db 27, RATTATA, PIKACHU, RATTATA, 0
+	db 29, CLEFAIRY, MEOWTH, 0
 ; Route 20
-	db 35,SEAKING,0
-	db 30,SHELLDER,SHELLDER,CLOYSTER,0
-	db 31,POLIWAG,SEAKING,0
+	db 35, SEAKING, 0
+	db 30, SHELLDER, SHELLDER, CLOYSTER, 0
+	db 31, POLIWAG, SEAKING, 0
 ; Route 15
-	db 29,PIDGEOTTO,WIGGLYTUFF,0
-	db 29,BULBASAUR,IVYSAUR,0
+	db 29, PIDGEOTTO, WIGGLYTUFF, 0
+	db 29, BULBASAUR, IVYSAUR, 0
 ; Unused
-	db 33,WEEPINBELL,BELLSPROUT,WEEPINBELL,0
+	db 33, WEEPINBELL, BELLSPROUT, WEEPINBELL, 0
 ; Route 19
-	db 27,POLIWAG,GOLDEEN,SEAKING,GOLDEEN,POLIWAG,0
-	db 30,GOLDEEN,SEAKING,0
-	db 29,STARYU,STARYU,STARYU,0
+	db 27, POLIWAG, GOLDEEN, SEAKING, GOLDEEN, POLIWAG, 0
+	db 30, GOLDEEN, SEAKING, 0
+	db 29, STARYU, STARYU, STARYU, 0
 ; Route 20
-	db 30,SEADRA,HORSEA,SEADRA,0
+	db 30, SEADRA, HORSEA, SEADRA, 0
+
 PsychicData:
 ; Saffron Gym
-	db 31,KADABRA,SLOWPOKE,MR_MIME,KADABRA,0
-	db 34,MR_MIME,KADABRA,0
-	db 33,SLOWPOKE,SLOWPOKE,SLOWBRO,0
-	db 38,SLOWBRO,0
+	db 31, KADABRA, SLOWPOKE, MR_MIME, KADABRA, 0
+	db 34, MR_MIME, KADABRA, 0
+	db 33, SLOWPOKE, SLOWPOKE, SLOWBRO, 0
+	db 38, SLOWBRO, 0
+
 RockerData:
 ; Vermilion Gym
-	db 20,VOLTORB,MAGNEMITE,VOLTORB,0
+	db 20, VOLTORB, MAGNEMITE, VOLTORB, 0
 ; Route 12
-	db 29,VOLTORB,ELECTRODE,0
+	db 29, VOLTORB, ELECTRODE, 0
+
 JugglerData:
 ; Silph Co. 5F
-	db 29,KADABRA,MR_MIME,0
+	db 29, KADABRA, MR_MIME, 0
 ; Victory Road 2F
-	db 41,DROWZEE,HYPNO,KADABRA,KADABRA,0
+	db 41, DROWZEE, HYPNO, KADABRA, KADABRA, 0
 ; Fuchsia Gym
-	db 31,DROWZEE,DROWZEE,KADABRA,DROWZEE,0
-	db 34,DROWZEE,HYPNO,0
+	db 31, DROWZEE, DROWZEE, KADABRA, DROWZEE, 0
+	db 34, DROWZEE, HYPNO, 0
 ; Victory Road 2F
-	db 48,MR_MIME,0
+	db 48, MR_MIME, 0
 ; Unused
-	db 33,HYPNO,0
+	db 33, HYPNO, 0
 ; Fuchsia Gym
-	db 38,HYPNO,0
-	db 34,DROWZEE,KADABRA,0
+	db 38, HYPNO, 0
+	db 34, DROWZEE, KADABRA, 0
+
 TamerData:
 ; Fuchsia Gym
-	db 34,SANDSLASH,ARBOK,0
-	db 33,ARBOK,SANDSLASH,ARBOK,0
+	db 34, SANDSLASH, ARBOK, 0
+	db 33, ARBOK, SANDSLASH, ARBOK, 0
 ; Viridian Gym
-	db 43,RHYHORN,0
-	db 39,ARBOK,TAUROS,0
+	db 43, RHYHORN, 0
+	db 39, ARBOK, TAUROS, 0
 ; Victory Road 2F
-	db 44,PERSIAN,GOLDUCK,0
+	db 44, PERSIAN, GOLDUCK, 0
 ; Unused
-	db 42,RHYHORN,PRIMEAPE,ARBOK,TAUROS,0
+	db 42, RHYHORN, PRIMEAPE, ARBOK, TAUROS, 0
+
 BirdKeeperData:
 ; Route 13
-	db 29,PIDGEY,PIDGEOTTO,0
-	db 25,SPEAROW,PIDGEY,PIDGEY,SPEAROW,SPEAROW,0
-	db 26,PIDGEY,PIDGEOTTO,SPEAROW,FEAROW,0
+	db 29, PIDGEY, PIDGEOTTO, 0
+	db 25, SPEAROW, PIDGEY, PIDGEY, SPEAROW, SPEAROW, 0
+	db 26, PIDGEY, PIDGEOTTO, SPEAROW, FEAROW, 0
 ; Route 14
-	db 33,FARFETCHD,0
-	db 29,SPEAROW,FEAROW,0
+	db 33, FARFETCHD, 0
+	db 29, SPEAROW, FEAROW, 0
 ; Route 15
-	db 26,PIDGEOTTO,FARFETCHD,DODUO,PIDGEY,0
-	db 28,DODRIO,DODUO,DODUO,0
+	db 26, PIDGEOTTO, FARFETCHD, DODUO, PIDGEY, 0
+	db 28, DODRIO, DODUO, DODUO, 0
 ; Route 18
-	db 29,SPEAROW,FEAROW,0
-	db 34,DODRIO,0
-	db 26,SPEAROW,SPEAROW,FEAROW,SPEAROW,0
+	db 29, SPEAROW, FEAROW, 0
+	db 34, DODRIO, 0
+	db 26, SPEAROW, SPEAROW, FEAROW, SPEAROW, 0
 ; Route 20
-	db 30,FEAROW,FEAROW,PIDGEOTTO,0
+	db 30, FEAROW, FEAROW, PIDGEOTTO, 0
 ; Unused
-	db 39,PIDGEOTTO,PIDGEOTTO,PIDGEY,PIDGEOTTO,0
-	db 42,FARFETCHD,FEAROW,0
+	db 39, PIDGEOTTO, PIDGEOTTO, PIDGEY, PIDGEOTTO, 0
+	db 42, FARFETCHD, FEAROW, 0
 ; Route 14
-	db 28,PIDGEY,DODUO,PIDGEOTTO,0
-	db 26,PIDGEY,SPEAROW,PIDGEY,FEAROW,0
-	db 29,PIDGEOTTO,FEAROW,0
-	db 28,SPEAROW,DODUO,FEAROW,0
+	db 28, PIDGEY, DODUO, PIDGEOTTO, 0
+	db 26, PIDGEY, SPEAROW, PIDGEY, FEAROW, 0
+	db 29, PIDGEOTTO, FEAROW, 0
+	db 28, SPEAROW, DODUO, FEAROW, 0
+
 BlackbeltData:
 ; Fighting Dojo
-	db 37,HITMONLEE,HITMONCHAN,0
-	db 31,MANKEY,MANKEY,PRIMEAPE,0
-	db 32,MACHOP,MACHOKE,0
-	db 36,PRIMEAPE,0
-	db 31,MACHOP,MANKEY,PRIMEAPE,0
+	db 37, HITMONLEE, HITMONCHAN, 0
+	db 31, MANKEY, MANKEY, PRIMEAPE, 0
+	db 32, MACHOP, MACHOKE, 0
+	db 36, PRIMEAPE, 0
+	db 31, MACHOP, MANKEY, PRIMEAPE, 0
 ; Viridian Gym
-	db 40,MACHOP,MACHOKE,0
-	db 43,MACHOKE,0
-	db 38,MACHOKE,MACHOP,MACHOKE,0
+	db 40, MACHOP, MACHOKE, 0
+	db 43, MACHOKE, 0
+	db 38, MACHOKE, MACHOP, MACHOKE, 0
 ; Victory Road 2F
-	db 43,MACHOKE,MACHOP,MACHOKE,0
+	db 43, MACHOKE, MACHOP, MACHOKE, 0
+
 Green1Data:
-	db 5,SQUIRTLE,0
-	db 5,BULBASAUR,0
-	db 5,CHARMANDER,0
+	db 5, SQUIRTLE, 0
+	db 5, BULBASAUR, 0
+	db 5, CHARMANDER, 0
 ; Route 22
-	db $FF,9,PIDGEY,8,SQUIRTLE,0
-	db $FF,9,PIDGEY,8,BULBASAUR,0
-	db $FF,9,PIDGEY,8,CHARMANDER,0
+	db $FF, 9, PIDGEY, 8, SQUIRTLE, 0
+	db $FF, 9, PIDGEY, 8, BULBASAUR, 0
+	db $FF, 9, PIDGEY, 8, CHARMANDER, 0
 ; Cerulean City
-	db $FF,18,PIDGEOTTO,15,ABRA,15,RATTATA,17,SQUIRTLE,0
-	db $FF,18,PIDGEOTTO,15,ABRA,15,RATTATA,17,BULBASAUR,0
-	db $FF,18,PIDGEOTTO,15,ABRA,15,RATTATA,17,CHARMANDER,0
+	db $FF, 18, PIDGEOTTO, 15, ABRA, 15, RATTATA, 17, SQUIRTLE, 0
+	db $FF, 18, PIDGEOTTO, 15, ABRA, 15, RATTATA, 17, BULBASAUR, 0
+	db $FF, 18, PIDGEOTTO, 15, ABRA, 15, RATTATA, 17, CHARMANDER, 0
+
 ProfOakData:
 ; Unused
-	db $FF,66,TAUROS,67,EXEGGUTOR,68,ARCANINE,69,BLASTOISE,70,GYARADOS,0
-	db $FF,66,TAUROS,67,EXEGGUTOR,68,ARCANINE,69,VENUSAUR,70,GYARADOS,0
-	db $FF,66,TAUROS,67,EXEGGUTOR,68,ARCANINE,69,CHARIZARD,70,GYARADOS,0
+	db $FF, 66, TAUROS, 67, EXEGGUTOR, 68, ARCANINE, 69, BLASTOISE, 70, GYARADOS, 0
+	db $FF, 66, TAUROS, 67, EXEGGUTOR, 68, ARCANINE, 69, VENUSAUR, 70, GYARADOS, 0
+	db $FF, 66, TAUROS, 67, EXEGGUTOR, 68, ARCANINE, 69, CHARIZARD, 70, GYARADOS, 0
+
 ChiefData:
 ; none
+
 ScientistData:
 ; Unused
-	db 34,KOFFING,VOLTORB,0
+	db 34, KOFFING, VOLTORB, 0
 ; Silph Co. 2F
-	db 26,GRIMER,WEEZING,KOFFING,WEEZING,0
-	db 28,MAGNEMITE,VOLTORB,MAGNETON,0
+	db 26, GRIMER, WEEZING, KOFFING, WEEZING, 0
+	db 28, MAGNEMITE, VOLTORB, MAGNETON, 0
 ; Silph Co. 3F/Mansion 1F
-	db 29,ELECTRODE,WEEZING,0
+	db 29, ELECTRODE, WEEZING, 0
 ; Silph Co. 4F
-	db 33,ELECTRODE,0
+	db 33, ELECTRODE, 0
 ; Silph Co. 5F
-	db 26,MAGNETON,KOFFING,WEEZING,MAGNEMITE,0
+	db 26, MAGNETON, KOFFING, WEEZING, MAGNEMITE, 0
 ; Silph Co. 6F
-	db 25,VOLTORB,KOFFING,MAGNETON,MAGNEMITE,KOFFING,0
+	db 25, VOLTORB, KOFFING, MAGNETON, MAGNEMITE, KOFFING, 0
 ; Silph Co. 7F
-	db 29,ELECTRODE,MUK,0
+	db 29, ELECTRODE, MUK, 0
 ; Silph Co. 8F
-	db 29,GRIMER,ELECTRODE,0
+	db 29, GRIMER, ELECTRODE, 0
 ; Silph Co. 9F
-	db 28,VOLTORB,KOFFING,MAGNETON,0
+	db 28, VOLTORB, KOFFING, MAGNETON, 0
 ; Silph Co. 10F
-	db 29,MAGNEMITE,KOFFING,0
+	db 29, MAGNEMITE, KOFFING, 0
 ; Mansion 3F
-	db 33,MAGNEMITE,MAGNETON,VOLTORB,0
+	db 33, MAGNEMITE, MAGNETON, VOLTORB, 0
 ; Mansion B1F
-	db 34,MAGNEMITE,ELECTRODE,0
+	db 34, MAGNEMITE, ELECTRODE, 0
+
 GiovanniData:
 ; Rocket Hideout B4F
-	db $FF,25,ONIX,24,RHYHORN,29,KANGASKHAN,0
+	db $FF, 25, ONIX, 24, RHYHORN, 29, KANGASKHAN, 0
 ; Silph Co. 11F
-	db $FF,37,NIDORINO,35,KANGASKHAN,37,RHYHORN,41,NIDOQUEEN,0
+	db $FF, 37, NIDORINO, 35, KANGASKHAN, 37, RHYHORN, 41, NIDOQUEEN, 0
 ; Viridian Gym
-	db $FF,45,RHYHORN,42,DUGTRIO,44,NIDOQUEEN,45,NIDOKING,50,RHYDON,0
+	db $FF, 45, RHYHORN, 42, DUGTRIO, 44, NIDOQUEEN, 45, NIDOKING, 50, RHYDON, 0
+
 RocketData:
 ; Mt. Moon B2F
-	db 13,RATTATA,ZUBAT,0
-	db 11,SANDSHREW,RATTATA,ZUBAT,0
-	db 12,ZUBAT,EKANS,0
-	db 16,RATICATE,0
+	db 13, RATTATA, ZUBAT, 0
+	db 11, SANDSHREW, RATTATA, ZUBAT, 0
+	db 12, ZUBAT, EKANS, 0
+	db 16, RATICATE, 0
 ; Cerulean City
-	db 17,MACHOP,DROWZEE,0
+	db 17, MACHOP, DROWZEE, 0
 ; Route 24
-	db 15,EKANS,ZUBAT,0
+	db 15, EKANS, ZUBAT, 0
 ; Game Corner
-	db 20,RATICATE,ZUBAT,0
+	db 20, RATICATE, ZUBAT, 0
 ; Rocket Hideout B1F
-	db 21,DROWZEE,MACHOP,0
-	db 21,RATICATE,RATICATE,0
-	db 20,GRIMER,KOFFING,KOFFING,0
-	db 19,RATTATA,RATICATE,RATICATE,RATTATA,0
-	db 22,GRIMER,KOFFING,0
+	db 21, DROWZEE, MACHOP, 0
+	db 21, RATICATE, RATICATE, 0
+	db 20, GRIMER, KOFFING, KOFFING, 0
+	db 19, RATTATA, RATICATE, RATICATE, RATTATA, 0
+	db 22, GRIMER, KOFFING, 0
 ; Rocket Hideout B2F
-	db 17,ZUBAT,KOFFING,GRIMER,ZUBAT,RATICATE,0
+	db 17, ZUBAT, KOFFING, GRIMER, ZUBAT, RATICATE, 0
 ; Rocket Hideout B3F
-	db 20,RATTATA,RATICATE,DROWZEE,0
-	db 21,MACHOP,MACHOP,0
+	db 20, RATTATA, RATICATE, DROWZEE, 0
+	db 21, MACHOP, MACHOP, 0
 ; Rocket Hideout B4F
-	db 23,SANDSHREW,EKANS,SANDSLASH,0
-	db 23,EKANS,SANDSHREW,ARBOK,0
-	db 21,KOFFING,ZUBAT,0
+	db 23, SANDSHREW, EKANS, SANDSLASH, 0
+	db 23, EKANS, SANDSHREW, ARBOK, 0
+	db 21, KOFFING, ZUBAT, 0
 ; Pokémon Tower 7F
-	db 25,ZUBAT,ZUBAT,GOLBAT,0
-	db 26,KOFFING,DROWZEE,0
-	db 23,ZUBAT,RATTATA,RATICATE,ZUBAT,0
+	db 25, ZUBAT, ZUBAT, GOLBAT, 0
+	db 26, KOFFING, DROWZEE, 0
+	db 23, ZUBAT, RATTATA, RATICATE, ZUBAT, 0
 ; Unused
-	db 26,DROWZEE,KOFFING,0
+	db 26, DROWZEE, KOFFING, 0
 ; Silph Co. 2F
-	db 29,CUBONE,ZUBAT,0
-	db 25,GOLBAT,ZUBAT,ZUBAT,RATICATE,ZUBAT,0
+	db 29, CUBONE, ZUBAT, 0
+	db 25, GOLBAT, ZUBAT, ZUBAT, RATICATE, ZUBAT, 0
 ; Silph Co. 3F
-	db 28,RATICATE,HYPNO,RATICATE,0
+	db 28, RATICATE, HYPNO, RATICATE, 0
 ; Silph Co. 4F
-	db 29,MACHOP,DROWZEE,0
-	db 28,EKANS,ZUBAT,CUBONE,0
+	db 29, MACHOP, DROWZEE, 0
+	db 28, EKANS, ZUBAT, CUBONE, 0
 ; Silph Co. 5F
-	db 33,ARBOK,0
-	db 33,HYPNO,0
+	db 33, ARBOK, 0
+	db 33, HYPNO, 0
 ; Silph Co. 6F
-	db 29,MACHOP,MACHOKE,0
-	db 28,ZUBAT,ZUBAT,GOLBAT,0
+	db 29, MACHOP, MACHOKE, 0
+	db 28, ZUBAT, ZUBAT, GOLBAT, 0
 ; Silph Co. 7F
-	db 26,RATICATE,ARBOK,KOFFING,GOLBAT,0
-	db 29,CUBONE,CUBONE,0
-	db 29,SANDSHREW,SANDSLASH,0
+	db 26, RATICATE, ARBOK, KOFFING, GOLBAT, 0
+	db 29, CUBONE, CUBONE, 0
+	db 29, SANDSHREW, SANDSLASH, 0
 ; Silph Co. 8F
-	db 26,RATICATE,ZUBAT,GOLBAT,RATTATA,0
-	db 28,WEEZING,GOLBAT,KOFFING,0
+	db 26, RATICATE, ZUBAT, GOLBAT, RATTATA, 0
+	db 28, WEEZING, GOLBAT, KOFFING, 0
 ; Silph Co. 9F
-	db 28,DROWZEE,GRIMER,MACHOP,0
-	db 28,GOLBAT,DROWZEE,HYPNO,0
+	db 28, DROWZEE, GRIMER, MACHOP, 0
+	db 28, GOLBAT, DROWZEE, HYPNO, 0
 ; Silph Co. 10F
-	db 33,MACHOKE,0
+	db 33, MACHOKE, 0
 ; Silph Co. 11F
-	db 25,RATTATA,RATTATA,ZUBAT,RATTATA,EKANS,0
-	db 32,CUBONE,DROWZEE,MAROWAK,0
+	db 25, RATTATA, RATTATA, ZUBAT, RATTATA, EKANS, 0
+	db 32, CUBONE, DROWZEE, MAROWAK, 0
+
 CooltrainerMData:
 ; Viridian Gym
-	db 39,NIDORINO,NIDOKING,0
+	db 39, NIDORINO, NIDOKING, 0
 ; Victory Road 3F
-	db 43,EXEGGUTOR,CLOYSTER,ARCANINE,0
-	db 43,KINGLER,TENTACRUEL,BLASTOISE,0
+	db 43, EXEGGUTOR, CLOYSTER, ARCANINE, 0
+	db 43, KINGLER, TENTACRUEL, BLASTOISE, 0
 ; Unused
-	db 45,KINGLER,STARMIE,0
+	db 45, KINGLER, STARMIE, 0
 ; Victory Road 1F
-	db 42,IVYSAUR,WARTORTLE,CHARMELEON,CHARIZARD,0
+	db 42, IVYSAUR, WARTORTLE, CHARMELEON, CHARIZARD, 0
 ; Unused
-	db 44,IVYSAUR,WARTORTLE,CHARMELEON,0
-	db 49,NIDOKING,0
-	db 44,KINGLER,CLOYSTER,0
+	db 44, IVYSAUR, WARTORTLE, CHARMELEON, 0
+	db 49, NIDOKING, 0
+	db 44, KINGLER, CLOYSTER, 0
 ; Viridian Gym
-	db 39,SANDSLASH,DUGTRIO,0
-	db 43,RHYHORN,0
+	db 39, SANDSLASH, DUGTRIO, 0
+	db 43, RHYHORN, 0
+
 CooltrainerFData:
 ; Celadon Gym
-	db 24,WEEPINBELL,GLOOM,IVYSAUR,0
+	db 24, WEEPINBELL, GLOOM, IVYSAUR, 0
 ; Victory Road 3F
-	db 43,BELLSPROUT,WEEPINBELL,VICTREEBEL,0
-	db 43,PARASECT,DEWGONG,CHANSEY,0
+	db 43, BELLSPROUT, WEEPINBELL, VICTREEBEL, 0
+	db 43, PARASECT, DEWGONG, CHANSEY, 0
 ; Unused
-	db 46,VILEPLUME,BUTTERFREE,0
+	db 46, VILEPLUME, BUTTERFREE, 0
 ; Victory Road 1F
-	db 44,PERSIAN,NINETALES,0
+	db 44, PERSIAN, NINETALES, 0
 ; Unused
-	db 45,IVYSAUR,VENUSAUR,0
-	db 45,NIDORINA,NIDOQUEEN,0
-	db 43,PERSIAN,NINETALES,RAICHU,0
+	db 45, IVYSAUR, VENUSAUR, 0
+	db 45, NIDORINA, NIDOQUEEN, 0
+	db 43, PERSIAN, NINETALES, RAICHU, 0
+
 BrunoData:
-	db $FF,53,ONIX,55,HITMONCHAN,55,HITMONLEE,56,ONIX,58,MACHAMP,0
+	db $FF, 53, ONIX, 55, HITMONCHAN, 55, HITMONLEE, 56, ONIX, 58, MACHAMP, 0
+
 BrockData:
-	db $FF,12,GEODUDE,14,ONIX,0
+	db $FF, 12, GEODUDE, 14, ONIX, 0
+
 MistyData:
-	db $FF,18,STARYU,21,STARMIE,0
+	db $FF, 18, STARYU, 21, STARMIE, 0
+
 LtSurgeData:
-	db $FF,21,VOLTORB,18,PIKACHU,24,RAICHU,0
+	db $FF, 21, VOLTORB, 18, PIKACHU, 24, RAICHU, 0
+
 ErikaData:
-	db $FF,29,VICTREEBEL,24,TANGELA,29,VILEPLUME,0
+	db $FF, 29, VICTREEBEL, 24, TANGELA, 29, VILEPLUME, 0
+
 KogaData:
-	db $FF,37,KOFFING,39,MUK,37,KOFFING,43,WEEZING,0
+	db $FF, 37, KOFFING, 39, MUK, 37, KOFFING, 43, WEEZING, 0
+
 BlaineData:
-	db $FF,42,GROWLITHE,40,PONYTA,42,RAPIDASH,47,ARCANINE,0
+	db $FF, 42, GROWLITHE, 40, PONYTA, 42, RAPIDASH, 47, ARCANINE, 0
+
 SabrinaData:
-	db $FF,38,KADABRA,37,MR_MIME,38,VENOMOTH,43,ALAKAZAM,0
+	db $FF, 38, KADABRA, 37, MR_MIME, 38, VENOMOTH, 43, ALAKAZAM, 0
+
 GentlemanData:
 ; SS Anne 1F Rooms
-	db 18,GROWLITHE,GROWLITHE,0
-	db 19,NIDORAN_M,NIDORAN_F,0
+	db 18, GROWLITHE, GROWLITHE, 0
+	db 19, NIDORAN_M, NIDORAN_F, 0
 ; SS Anne 2F Rooms/Vermilion Gym
-	db 23,PIKACHU,0
+	db 23, PIKACHU, 0
 ; Unused
-	db 48,PRIMEAPE,0
+	db 48, PRIMEAPE, 0
 ; SS Anne 2F Rooms
-	db 17,GROWLITHE,PONYTA,0
+	db 17, GROWLITHE, PONYTA, 0
+
 Green2Data:
 ; SS Anne 2F
-	db $FF,19,PIDGEOTTO,16,RATICATE,18,KADABRA,20,WARTORTLE,0
-	db $FF,19,PIDGEOTTO,16,RATICATE,18,KADABRA,20,IVYSAUR,0
-	db $FF,19,PIDGEOTTO,16,RATICATE,18,KADABRA,20,CHARMELEON,0
+	db $FF, 19, PIDGEOTTO, 16, RATICATE, 18, KADABRA, 20, WARTORTLE, 0
+	db $FF, 19, PIDGEOTTO, 16, RATICATE, 18, KADABRA, 20, IVYSAUR, 0
+	db $FF, 19, PIDGEOTTO, 16, RATICATE, 18, KADABRA, 20, CHARMELEON, 0
 ; Pokémon Tower 2F
-	db $FF,25,PIDGEOTTO,23,GROWLITHE,22,EXEGGCUTE,20,KADABRA,25,WARTORTLE,0
-	db $FF,25,PIDGEOTTO,23,GYARADOS,22,GROWLITHE,20,KADABRA,25,IVYSAUR,0
-	db $FF,25,PIDGEOTTO,23,EXEGGCUTE,22,GYARADOS,20,KADABRA,25,CHARMELEON,0
+	db $FF, 25, PIDGEOTTO, 23, GROWLITHE, 22, EXEGGCUTE, 20, KADABRA, 25, WARTORTLE, 0
+	db $FF, 25, PIDGEOTTO, 23, GYARADOS, 22, GROWLITHE, 20, KADABRA, 25, IVYSAUR, 0
+	db $FF, 25, PIDGEOTTO, 23, EXEGGCUTE, 22, GYARADOS, 20, KADABRA, 25, CHARMELEON, 0
 ; Silph Co. 7F
-	db $FF,37,PIDGEOT,38,GROWLITHE,35,EXEGGCUTE,35,ALAKAZAM,40,BLASTOISE,0
-	db $FF,37,PIDGEOT,38,GYARADOS,35,GROWLITHE,35,ALAKAZAM,40,VENUSAUR,0
-	db $FF,37,PIDGEOT,38,EXEGGCUTE,35,GYARADOS,35,ALAKAZAM,40,CHARIZARD,0
+	db $FF, 37, PIDGEOT, 38, GROWLITHE, 35, EXEGGCUTE, 35, ALAKAZAM, 40, BLASTOISE, 0
+	db $FF, 37, PIDGEOT, 38, GYARADOS, 35, GROWLITHE, 35, ALAKAZAM, 40, VENUSAUR, 0
+	db $FF, 37, PIDGEOT, 38, EXEGGCUTE, 35, GYARADOS, 35, ALAKAZAM, 40, CHARIZARD, 0
 ; Route 22
-	db $FF,47,PIDGEOT,45,RHYHORN,45,GROWLITHE,47,EXEGGCUTE,50,ALAKAZAM,53,BLASTOISE,0
-	db $FF,47,PIDGEOT,45,RHYHORN,45,GYARADOS,47,GROWLITHE,50,ALAKAZAM,53,VENUSAUR,0
-	db $FF,47,PIDGEOT,45,RHYHORN,45,EXEGGCUTE,47,GYARADOS,50,ALAKAZAM,53,CHARIZARD,0
+	db $FF, 47, PIDGEOT, 45, RHYHORN, 45, GROWLITHE, 47, EXEGGCUTE, 50, ALAKAZAM, 53, BLASTOISE, 0
+	db $FF, 47, PIDGEOT, 45, RHYHORN, 45, GYARADOS, 47, GROWLITHE, 50, ALAKAZAM, 53, VENUSAUR, 0
+	db $FF, 47, PIDGEOT, 45, RHYHORN, 45, EXEGGCUTE, 47, GYARADOS, 50, ALAKAZAM, 53, CHARIZARD, 0
+
 Green3Data:
-	db $FF,61,PIDGEOT,59,ALAKAZAM,61,RHYDON,61,ARCANINE,63,EXEGGUTOR,65,BLASTOISE,0
-	db $FF,61,PIDGEOT,59,ALAKAZAM,61,RHYDON,61,GYARADOS,63,ARCANINE,65,VENUSAUR,0
-	db $FF,61,PIDGEOT,59,ALAKAZAM,61,RHYDON,61,EXEGGUTOR,63,GYARADOS,65,CHARIZARD,0
+	db $FF, 61, PIDGEOT, 59, ALAKAZAM, 61, RHYDON, 61, ARCANINE, 63, EXEGGUTOR, 65, BLASTOISE, 0
+	db $FF, 61, PIDGEOT, 59, ALAKAZAM, 61, RHYDON, 61, GYARADOS, 63, ARCANINE, 65, VENUSAUR, 0
+	db $FF, 61, PIDGEOT, 59, ALAKAZAM, 61, RHYDON, 61, EXEGGUTOR, 63, GYARADOS, 65, CHARIZARD, 0
+
 LoreleiData:
-	db $FF,54,DEWGONG,53,CLOYSTER,54,SLOWBRO,56,JYNX,56,LAPRAS,0
+	db $FF, 54, DEWGONG, 53, CLOYSTER, 54, SLOWBRO, 56, JYNX, 56, LAPRAS, 0
+
 ChannelerData:
 ; Unused
-	db 22,GASTLY,0
-	db 24,GASTLY,0
-	db 23,GASTLY,GASTLY,0
-	db 24,GASTLY,0
+	db 22, GASTLY, 0
+	db 24, GASTLY, 0
+	db 23, GASTLY, GASTLY, 0
+	db 24, GASTLY, 0
 ; Pokémon Tower 3F
-	db 23,GASTLY,0
-	db 24,GASTLY,0
+	db 23, GASTLY, 0
+	db 24, GASTLY, 0
 ; Unused
-	db 24,HAUNTER,0
+	db 24, HAUNTER, 0
 ; Pokémon Tower 3F
-	db 22,GASTLY,0
+	db 22, GASTLY, 0
 ; Pokémon Tower 4F
-	db 24,GASTLY,0
-	db 23,GASTLY,GASTLY,0
+	db 24, GASTLY, 0
+	db 23, GASTLY, GASTLY, 0
 ; Unused
-	db 24,GASTLY,0
+	db 24, GASTLY, 0
 ; Pokémon Tower 4F
-	db 22,GASTLY,0
+	db 22, GASTLY, 0
 ; Unused
-	db 24,GASTLY,0
+	db 24, GASTLY, 0
 ; Pokémon Tower 5F
-	db 23,HAUNTER,0
+	db 23, HAUNTER, 0
 ; Unused
-	db 24,GASTLY,0
+	db 24, GASTLY, 0
 ; Pokémon Tower 5F
-	db 22,GASTLY,0
-	db 24,GASTLY,0
-	db 22,HAUNTER,0
+	db 22, GASTLY, 0
+	db 24, GASTLY, 0
+	db 22, HAUNTER, 0
 ; Pokémon Tower 6F
-	db 22,GASTLY,GASTLY,GASTLY,0
-	db 24,GASTLY,0
-	db 24,GASTLY,0
+	db 22, GASTLY, GASTLY, GASTLY, 0
+	db 24, GASTLY, 0
+	db 24, GASTLY, 0
 ; Saffron Gym
-	db 34,GASTLY,HAUNTER,0
-	db 38,HAUNTER,0
-	db 33,GASTLY,GASTLY,HAUNTER,0
+	db 34, GASTLY, HAUNTER, 0
+	db 38, HAUNTER, 0
+	db 33, GASTLY, GASTLY, HAUNTER, 0
+
 AgathaData:
-	db $FF,56,GENGAR,56,GOLBAT,55,HAUNTER,58,ARBOK,60,GENGAR,0
+	db $FF, 56, GENGAR, 56, GOLBAT, 55, HAUNTER, 58, ARBOK, 60, GENGAR, 0
+
 LanceData:
-	db $FF,58,GYARADOS,56,DRAGONAIR,56,DRAGONAIR,60,AERODACTYL,62,DRAGONITE,0
+	db $FF, 58, GYARADOS, 56, DRAGONAIR, 56, DRAGONAIR, 60, AERODACTYL, 62, DRAGONITE, 0
--- a/data/trainers/pic_pointers_money.asm
+++ b/data/trainers/pic_pointers_money.asm
@@ -1,143 +1,55 @@
+pic_money: MACRO
+	dw \1
+	money \2
+ENDM
+
 TrainerPicAndMoneyPointers::
-; trainer pic pointers and base money.
+; pic pointer, base reward money
 ; money received after battle = base money × level of highest-level enemy mon
-	dw YoungsterPic
-	money 1500
-
-	dw BugCatcherPic
-	money 1000
-
-	dw LassPic
-	money 1500
-
-	dw SailorPic
-	money 3000
-
-	dw JrTrainerMPic
-	money 2000
-
-	dw JrTrainerFPic
-	money 2000
-
-	dw PokemaniacPic
-	money 5000
-
-	dw SuperNerdPic
-	money 2500
-
-	dw HikerPic
-	money 3500
-
-	dw BikerPic
-	money 2000
-
-	dw BurglarPic
-	money 9000
-
-	dw EngineerPic
-	money 5000
-
-	dw JugglerPic
-	money 3500
-
-	dw FisherPic
-	money 3500
-
-	dw SwimmerPic
-	money 500
-
-	dw CueBallPic
-	money 2500
-
-	dw GamblerPic
-	money 7000
-
-	dw BeautyPic
-	money 7000
-
-	dw PsychicPic
-	money 1000
-
-	dw RockerPic
-	money 2500
-
-	dw JugglerPic
-	money 3500
-
-	dw TamerPic
-	money 4000
-
-	dw BirdKeeperPic
-	money 2500
-
-	dw BlackbeltPic
-	money 2500
-
-	dw Rival1Pic
-	money 3500
-
-	dw ProfOakPic
-	money 9900
-
-	dw ChiefPic
-	money 3000
-
-	dw ScientistPic
-	money 5000
-
-	dw GiovanniPic
-	money 9900
-
-	dw RocketPic
-	money 3000
-
-	dw CooltrainerMPic
-	money 3500
-
-	dw CooltrainerFPic
-	money 3500
-
-	dw BrunoPic
-	money 9900
-
-	dw BrockPic
-	money 9900
-
-	dw MistyPic
-	money 9900
-
-	dw LtSurgePic
-	money 9900
-
-	dw ErikaPic
-	money 9900
-
-	dw KogaPic
-	money 9900
-
-	dw BlainePic
-	money 9900
-
-	dw SabrinaPic
-	money 9900
-
-	dw GentlemanPic
-	money 7000
-
-	dw Rival2Pic
-	money 6500
-
-	dw Rival3Pic
-	money 9900
-
-	dw LoreleiPic
-	money 9900
-
-	dw ChannelerPic
-	money 3000
-
-	dw AgathaPic
-	money 9900
-
-	dw LancePic
-	money 9900
+	pic_money YoungsterPic,    1500
+	pic_money BugCatcherPic,   1000
+	pic_money LassPic,         1500
+	pic_money SailorPic,       3000
+	pic_money JrTrainerMPic,   2000
+	pic_money JrTrainerFPic,   2000
+	pic_money PokemaniacPic,   5000
+	pic_money SuperNerdPic,    2500
+	pic_money HikerPic,        3500
+	pic_money BikerPic,        2000
+	pic_money BurglarPic,      9000
+	pic_money EngineerPic,     5000
+	pic_money JugglerPic,      3500
+	pic_money FisherPic,       3500
+	pic_money SwimmerPic,       500
+	pic_money CueBallPic,      2500
+	pic_money GamblerPic,      7000
+	pic_money BeautyPic,       7000
+	pic_money PsychicPic,      1000
+	pic_money RockerPic,       2500
+	pic_money JugglerPic,      3500
+	pic_money TamerPic,        4000
+	pic_money BirdKeeperPic,   2500
+	pic_money BlackbeltPic,    2500
+	pic_money Rival1Pic,       3500
+	pic_money ProfOakPic,      9900
+	pic_money ChiefPic,        3000
+	pic_money ScientistPic,    5000
+	pic_money GiovanniPic,     9900
+	pic_money RocketPic,       3000
+	pic_money CooltrainerMPic, 3500
+	pic_money CooltrainerFPic, 3500
+	pic_money BrunoPic,        9900
+	pic_money BrockPic,        9900
+	pic_money MistyPic,        9900
+	pic_money LtSurgePic,      9900
+	pic_money ErikaPic,        9900
+	pic_money KogaPic,         9900
+	pic_money BlainePic,       9900
+	pic_money SabrinaPic,      9900
+	pic_money GentlemanPic,    7000
+	pic_money Rival2Pic,       6500
+	pic_money Rival3Pic,       9900
+	pic_money LoreleiPic,      9900
+	pic_money ChannelerPic,    3000
+	pic_money AgathaPic,       9900
+	pic_money LancePic,        9900
--- a/data/trainers/special_moves.asm
+++ b/data/trainers/special_moves.asm
@@ -1,32 +1,25 @@
+; unique moves for gym leaders
 LoneMoves:
-; these are used for gym leaders.
-; this is not automatic! you have to write the number you want to wLoneAttackNo
-; first. e.g., erika's script writes 4 to wLoneAttackNo to get mega drain,
+; pokemon index, move to give nth pokemon
+; this is not automatic! you have to write the index you want to [wLoneAttackNo]
+; first. e.g., erika's script writes 4 to [wLoneAttackNo] to get mega drain, 
 ; the fourth entry in the list.
+	db 1, BIDE
+	db 1, BUBBLEBEAM
+	db 2, THUNDERBOLT
+	db 2, MEGA_DRAIN
+	db 3, TOXIC
+	db 3, PSYWAVE
+	db 3, FIRE_BLAST
+	db 4, FISSURE
 
-; first byte:  pokemon in the trainer's party that gets the move
-; second byte: move
-; unterminated
-	db 1,BIDE
-	db 1,BUBBLEBEAM
-	db 2,THUNDERBOLT
-	db 2,MEGA_DRAIN
-	db 3,TOXIC
-	db 3,PSYWAVE
-	db 3,FIRE_BLAST
-	db 4,FISSURE
-
+; unique moves for elite 4
 TeamMoves:
-; these are used for elite four.
-; this is automatic, based on trainer class.
-; don't be confused by LoneMoves above, the two data structures are
-	; _completely_ unrelated.
-
-; first byte: trainer (all trainers in this class have this move)
-; second byte: move
-; ff-terminated
-	db LORELEI,BLIZZARD
-	db BRUNO,FISSURE
-	db AGATHA,TOXIC
-	db LANCE,BARRIER
-	db $FF
+; trainer, move
+; all trainers in this class are given this move automatically
+; (unrelated to LoneMoves)
+	db LORELEI, BLIZZARD
+	db BRUNO,   FISSURE
+	db AGATHA,  TOXIC
+	db LANCE,   BARRIER
+	db -1 ; end
--- a/data/types/names.asm
+++ b/data/types/names.asm
@@ -10,17 +10,9 @@
 	dw .Bug
 	dw .Ghost
 
+REPT FIRE - GHOST - 1
 	dw .Normal
-	dw .Normal
-	dw .Normal
-	dw .Normal
-	dw .Normal
-	dw .Normal
-	dw .Normal
-	dw .Normal
-	dw .Normal
-	dw .Normal
-	dw .Normal
+ENDR
 
 	dw .Fire
 	dw .Water
--- a/data/wild/good_rod.asm
+++ b/data/wild/good_rod.asm
@@ -1,3 +1,5 @@
+; random choice of 2 good rod encounters
 GoodRodMons:
-	db 10,GOLDEEN
-	db 10,POLIWAG
+; level, species
+	db 10, GOLDEEN
+	db 10, POLIWAG
--- a/data/wild/grass_water.asm
+++ b/data/wild/grass_water.asm
@@ -253,9 +253,9 @@
 ; first part:  pokemon found in grass
 ; second part: pokemon found while surfing
 ; each part goes as follows:
-    ; if first byte == 00, then
+    ; if first byte == 0, then
         ; no wild pokemon on this map
-    ; if first byte != 00, then
+    ; if first byte != 0, then
         ; first byte is encounter rate
         ; followed by 20 bytes:
         ; level, species (ten times)
--- a/data/wild/maps/CeruleanCave1F.asm
+++ b/data/wild/maps/CeruleanCave1F.asm
@@ -1,18 +1,19 @@
 DungeonMons1:
-	db $0A
-	db 46,GOLBAT
-	db 46,HYPNO
-	db 46,MAGNETON
-	db 49,DODRIO
-	db 49,VENOMOTH
-	IF DEF(_RED)
-		db 52,ARBOK
-	ENDC
-	IF DEF(_BLUE)
-		db 52,SANDSLASH
-	ENDC
-	db 49,KADABRA
-	db 52,PARASECT
-	db 53,RAICHU
-	db 53,DITTO
-	db $00
+	db 10 ; grass encounter rate
+	db 46, GOLBAT
+	db 46, HYPNO
+	db 46, MAGNETON
+	db 49, DODRIO
+	db 49, VENOMOTH
+IF DEF(_RED)
+	db 52, ARBOK
+ENDC
+IF DEF(_BLUE)
+	db 52, SANDSLASH
+ENDC
+	db 49, KADABRA
+	db 52, PARASECT
+	db 53, RAICHU
+	db 53, DITTO
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/CeruleanCave2F.asm
+++ b/data/wild/maps/CeruleanCave2F.asm
@@ -1,13 +1,14 @@
 DungeonMons2:
-	db $0F
-	db 51,DODRIO
-	db 51,VENOMOTH
-	db 51,KADABRA
-	db 52,RHYDON
-	db 52,MAROWAK
-	db 52,ELECTRODE
-	db 56,CHANSEY
-	db 54,WIGGLYTUFF
-	db 55,DITTO
-	db 60,DITTO
-	db $00
+	db 15 ; grass encounter rate
+	db 51, DODRIO
+	db 51, VENOMOTH
+	db 51, KADABRA
+	db 52, RHYDON
+	db 52, MAROWAK
+	db 52, ELECTRODE
+	db 56, CHANSEY
+	db 54, WIGGLYTUFF
+	db 55, DITTO
+	db 60, DITTO
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/CeruleanCaveB1F.asm
+++ b/data/wild/maps/CeruleanCaveB1F.asm
@@ -1,18 +1,19 @@
 DungeonMonsB1:
-	db $19
-	db 55,RHYDON
-	db 55,MAROWAK
-	db 55,ELECTRODE
-	db 64,CHANSEY
-	db 64,PARASECT
-	db 64,RAICHU
-	IF DEF(_RED)
-		db 57,ARBOK
-	ENDC
-	IF DEF(_BLUE)
-		db 57,SANDSLASH
-	ENDC
-	db 65,DITTO
-	db 63,DITTO
-	db 67,DITTO
-	db $00
+	db 25 ; grass encounter rate
+	db 55, RHYDON
+	db 55, MAROWAK
+	db 55, ELECTRODE
+	db 64, CHANSEY
+	db 64, PARASECT
+	db 64, RAICHU
+IF DEF(_RED)
+	db 57, ARBOK
+ENDC
+IF DEF(_BLUE)
+	db 57, SANDSLASH
+ENDC
+	db 65, DITTO
+	db 63, DITTO
+	db 67, DITTO
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/DiglettsCave.asm
+++ b/data/wild/maps/DiglettsCave.asm
@@ -1,13 +1,14 @@
 CaveMons:
-	db $14
-	db 18,DIGLETT
-	db 19,DIGLETT
-	db 17,DIGLETT
-	db 20,DIGLETT
-	db 16,DIGLETT
-	db 15,DIGLETT
-	db 21,DIGLETT
-	db 22,DIGLETT
-	db 29,DUGTRIO
-	db 31,DUGTRIO
-	db $00
+	db 20 ; grass encounter rate
+	db 18, DIGLETT
+	db 19, DIGLETT
+	db 17, DIGLETT
+	db 20, DIGLETT
+	db 16, DIGLETT
+	db 15, DIGLETT
+	db 21, DIGLETT
+	db 22, DIGLETT
+	db 29, DUGTRIO
+	db 31, DUGTRIO
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/MtMoon1F.asm
+++ b/data/wild/maps/MtMoon1F.asm
@@ -1,13 +1,14 @@
 MoonMons1:
-	db $0A
-	db 8,ZUBAT
-	db 7,ZUBAT
-	db 9,ZUBAT
-	db 8,GEODUDE
-	db 6,ZUBAT
-	db 10,ZUBAT
-	db 10,GEODUDE
-	db 8,PARAS
-	db 11,ZUBAT
-	db 8,CLEFAIRY
-	db $00
+	db 10 ; grass encounter rate
+	db  8, ZUBAT
+	db  7, ZUBAT
+	db  9, ZUBAT
+	db  8, GEODUDE
+	db  6, ZUBAT
+	db 10, ZUBAT
+	db 10, GEODUDE
+	db  8, PARAS
+	db 11, ZUBAT
+	db  8, CLEFAIRY
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/MtMoonB1F.asm
+++ b/data/wild/maps/MtMoonB1F.asm
@@ -1,13 +1,14 @@
 MoonMonsB1:
-	db $0A
-	db 8,ZUBAT
-	db 7,ZUBAT
-	db 7,GEODUDE
-	db 8,GEODUDE
-	db 9,ZUBAT
-	db 10,PARAS
-	db 10,ZUBAT
-	db 11,ZUBAT
-	db 9,CLEFAIRY
-	db 9,GEODUDE
-	db $00
+	db 10 ; grass encounter rate
+	db  8, ZUBAT
+	db  7, ZUBAT
+	db  7, GEODUDE
+	db  8, GEODUDE
+	db  9, ZUBAT
+	db 10, PARAS
+	db 10, ZUBAT
+	db 11, ZUBAT
+	db  9, CLEFAIRY
+	db  9, GEODUDE
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/MtMoonB2F.asm
+++ b/data/wild/maps/MtMoonB2F.asm
@@ -1,13 +1,14 @@
 MoonMonsB2:
-	db $0A
-	db 9,ZUBAT
-	db 9,GEODUDE
-	db 10,ZUBAT
-	db 10,GEODUDE
-	db 11,ZUBAT
-	db 10,PARAS
-	db 12,PARAS
-	db 10,CLEFAIRY
-	db 12,ZUBAT
-	db 12,CLEFAIRY
-	db $00
+	db 10 ; grass encounter rate
+	db  9, ZUBAT
+	db  9, GEODUDE
+	db 10, ZUBAT
+	db 10, GEODUDE
+	db 11, ZUBAT
+	db 10, PARAS
+	db 12, PARAS
+	db 10, CLEFAIRY
+	db 12, ZUBAT
+	db 12, CLEFAIRY
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/PokemonMansion1F.asm
+++ b/data/wild/maps/PokemonMansion1F.asm
@@ -1,27 +1,28 @@
 MansionMons1:
-	db $0A
-	IF DEF(_RED)
-		db 32,KOFFING
-		db 30,KOFFING
-		db 34,PONYTA
-		db 30,PONYTA
-		db 34,GROWLITHE
-		db 32,PONYTA
-		db 30,GRIMER
-		db 28,PONYTA
-		db 37,WEEZING
-		db 39,MUK
-	ENDC
-	IF DEF(_BLUE)
-		db 32,GRIMER
-		db 30,GRIMER
-		db 34,PONYTA
-		db 30,PONYTA
-		db 34,VULPIX
-		db 32,PONYTA
-		db 30,KOFFING
-		db 28,PONYTA
-		db 37,MUK
-		db 39,WEEZING
-	ENDC
-	db $00
+	db 10 ; grass encounter rate
+IF DEF(_RED)
+	db 32, KOFFING
+	db 30, KOFFING
+	db 34, PONYTA
+	db 30, PONYTA
+	db 34, GROWLITHE
+	db 32, PONYTA
+	db 30, GRIMER
+	db 28, PONYTA
+	db 37, WEEZING
+	db 39, MUK
+ENDC
+IF DEF(_BLUE)
+	db 32, GRIMER
+	db 30, GRIMER
+	db 34, PONYTA
+	db 30, PONYTA
+	db 34, VULPIX
+	db 32, PONYTA
+	db 30, KOFFING
+	db 28, PONYTA
+	db 37, MUK
+	db 39, WEEZING
+ENDC
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/PokemonMansion2F.asm
+++ b/data/wild/maps/PokemonMansion2F.asm
@@ -1,27 +1,28 @@
 MansionMons2:
-	db $0A
-	IF DEF(_RED)
-		db 32,GROWLITHE
-		db 34,KOFFING
-		db 34,KOFFING
-		db 30,PONYTA
-		db 30,KOFFING
-		db 32,PONYTA
-		db 30,GRIMER
-		db 28,PONYTA
-		db 39,WEEZING
-		db 37,MUK
-	ENDC
-	IF DEF(_BLUE)
-		db 32,VULPIX
-		db 34,GRIMER
-		db 34,GRIMER
-		db 30,PONYTA
-		db 30,GRIMER
-		db 32,PONYTA
-		db 30,KOFFING
-		db 28,PONYTA
-		db 39,MUK
-		db 37,WEEZING
-	ENDC
-	db $00
+	db 10 ; grass encounter rate
+IF DEF(_RED)
+	db 32, GROWLITHE
+	db 34, KOFFING
+	db 34, KOFFING
+	db 30, PONYTA
+	db 30, KOFFING
+	db 32, PONYTA
+	db 30, GRIMER
+	db 28, PONYTA
+	db 39, WEEZING
+	db 37, MUK
+ENDC
+IF DEF(_BLUE)
+	db 32, VULPIX
+	db 34, GRIMER
+	db 34, GRIMER
+	db 30, PONYTA
+	db 30, GRIMER
+	db 32, PONYTA
+	db 30, KOFFING
+	db 28, PONYTA
+	db 39, MUK
+	db 37, WEEZING
+ENDC
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/PokemonMansion3F.asm
+++ b/data/wild/maps/PokemonMansion3F.asm
@@ -1,27 +1,28 @@
 MansionMons3:
-	db $0A
-	IF DEF(_RED)
-		db 31,KOFFING
-		db 33,GROWLITHE
-		db 35,KOFFING
-		db 32,PONYTA
-		db 34,PONYTA
-		db 40,WEEZING
-		db 34,GRIMER
-		db 38,WEEZING
-		db 36,PONYTA
-		db 42,MUK
-	ENDC
-	IF DEF(_BLUE)
-		db 31,GRIMER
-		db 33,VULPIX
-		db 35,GRIMER
-		db 32,PONYTA
-		db 34,MAGMAR
-		db 40,MUK
-		db 34,KOFFING
-		db 38,MUK
-		db 36,PONYTA
-		db 42,WEEZING
-	ENDC
-	db $00
+	db 10 ; grass encounter rate
+IF DEF(_RED)
+	db 31, KOFFING
+	db 33, GROWLITHE
+	db 35, KOFFING
+	db 32, PONYTA
+	db 34, PONYTA
+	db 40, WEEZING
+	db 34, GRIMER
+	db 38, WEEZING
+	db 36, PONYTA
+	db 42, MUK
+ENDC
+IF DEF(_BLUE)
+	db 31, GRIMER
+	db 33, VULPIX
+	db 35, GRIMER
+	db 32, PONYTA
+	db 34, MAGMAR
+	db 40, MUK
+	db 34, KOFFING
+	db 38, MUK
+	db 36, PONYTA
+	db 42, WEEZING
+ENDC
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/PokemonMansionB1F.asm
+++ b/data/wild/maps/PokemonMansionB1F.asm
@@ -1,27 +1,28 @@
 MansionMonsB1:
-	db $0A
-	IF DEF(_RED)
-		db 33,KOFFING
-		db 31,KOFFING
-		db 35,GROWLITHE
-		db 32,PONYTA
-		db 31,KOFFING
-		db 40,WEEZING
-		db 34,PONYTA
-		db 35,GRIMER
-		db 42,WEEZING
-		db 42,MUK
-	ENDC
-	IF DEF(_BLUE)
-		db 33,GRIMER
-		db 31,GRIMER
-		db 35,VULPIX
-		db 32,PONYTA
-		db 31,GRIMER
-		db 40,MUK
-		db 34,PONYTA
-		db 35,KOFFING
-		db 38,MAGMAR
-		db 42,WEEZING
-	ENDC
-	db $00
+	db 10 ; grass encounter rate
+IF DEF(_RED)
+	db 33, KOFFING
+	db 31, KOFFING
+	db 35, GROWLITHE
+	db 32, PONYTA
+	db 31, KOFFING
+	db 40, WEEZING
+	db 34, PONYTA
+	db 35, GRIMER
+	db 42, WEEZING
+	db 42, MUK
+ENDC
+IF DEF(_BLUE)
+	db 33, GRIMER
+	db 31, GRIMER
+	db 35, VULPIX
+	db 32, PONYTA
+	db 31, GRIMER
+	db 40, MUK
+	db 34, PONYTA
+	db 35, KOFFING
+	db 38, MAGMAR
+	db 42, WEEZING
+ENDC
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/PokemonTower1F.asm
+++ b/data/wild/maps/PokemonTower1F.asm
@@ -1,3 +1,4 @@
 TowerMons1:
-	db $00
-	db $00
+	db 0 ; grass encounter rate
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/PokemonTower2F.asm
+++ b/data/wild/maps/PokemonTower2F.asm
@@ -1,3 +1,4 @@
 TowerMons2:
-	db $00
-	db $00
+	db 0 ; grass encounter rate
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/PokemonTower3F.asm
+++ b/data/wild/maps/PokemonTower3F.asm
@@ -1,13 +1,14 @@
 TowerMons3:
-	db $0A
-	db 20,GASTLY
-	db 21,GASTLY
-	db 22,GASTLY
-	db 23,GASTLY
-	db 19,GASTLY
-	db 18,GASTLY
-	db 24,GASTLY
-	db 20,CUBONE
-	db 22,CUBONE
-	db 25,HAUNTER
-	db $00
+	db 10 ; grass encounter rate
+	db 20, GASTLY
+	db 21, GASTLY
+	db 22, GASTLY
+	db 23, GASTLY
+	db 19, GASTLY
+	db 18, GASTLY
+	db 24, GASTLY
+	db 20, CUBONE
+	db 22, CUBONE
+	db 25, HAUNTER
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/PokemonTower4F.asm
+++ b/data/wild/maps/PokemonTower4F.asm
@@ -1,13 +1,14 @@
 TowerMons4:
-	db $0A
-	db 20,GASTLY
-	db 21,GASTLY
-	db 22,GASTLY
-	db 23,GASTLY
-	db 19,GASTLY
-	db 18,GASTLY
-	db 25,HAUNTER
-	db 20,CUBONE
-	db 22,CUBONE
-	db 24,GASTLY
-	db $00
+	db 10 ; grass encounter rate
+	db 20, GASTLY
+	db 21, GASTLY
+	db 22, GASTLY
+	db 23, GASTLY
+	db 19, GASTLY
+	db 18, GASTLY
+	db 25, HAUNTER
+	db 20, CUBONE
+	db 22, CUBONE
+	db 24, GASTLY
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/PokemonTower5F.asm
+++ b/data/wild/maps/PokemonTower5F.asm
@@ -1,13 +1,14 @@
 TowerMons5:
-	db $0A
-	db 20,GASTLY
-	db 21,GASTLY
-	db 22,GASTLY
-	db 23,GASTLY
-	db 19,GASTLY
-	db 18,GASTLY
-	db 25,HAUNTER
-	db 20,CUBONE
-	db 22,CUBONE
-	db 24,GASTLY
-	db $00
+	db 10 ; grass encounter rate
+	db 20, GASTLY
+	db 21, GASTLY
+	db 22, GASTLY
+	db 23, GASTLY
+	db 19, GASTLY
+	db 18, GASTLY
+	db 25, HAUNTER
+	db 20, CUBONE
+	db 22, CUBONE
+	db 24, GASTLY
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/PokemonTower6F.asm
+++ b/data/wild/maps/PokemonTower6F.asm
@@ -1,13 +1,14 @@
 TowerMons6:
-	db $0F
-	db 21,GASTLY
-	db 22,GASTLY
-	db 23,GASTLY
-	db 24,GASTLY
-	db 20,GASTLY
-	db 19,GASTLY
-	db 26,HAUNTER
-	db 22,CUBONE
-	db 24,CUBONE
-	db 28,HAUNTER
-	db $00
+	db 15 ; grass encounter rate
+	db 21, GASTLY
+	db 22, GASTLY
+	db 23, GASTLY
+	db 24, GASTLY
+	db 20, GASTLY
+	db 19, GASTLY
+	db 26, HAUNTER
+	db 22, CUBONE
+	db 24, CUBONE
+	db 28, HAUNTER
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/PokemonTower7F.asm
+++ b/data/wild/maps/PokemonTower7F.asm
@@ -1,13 +1,14 @@
 TowerMons7:
-	db $0F
-	db 21,GASTLY
-	db 22,GASTLY
-	db 23,GASTLY
-	db 24,GASTLY
-	db 20,GASTLY
-	db 28,HAUNTER
-	db 22,CUBONE
-	db 24,CUBONE
-	db 28,HAUNTER
-	db 30,HAUNTER
-	db $00
+	db 15 ; grass encounter rate
+	db 21, GASTLY
+	db 22, GASTLY
+	db 23, GASTLY
+	db 24, GASTLY
+	db 20, GASTLY
+	db 28, HAUNTER
+	db 22, CUBONE
+	db 24, CUBONE
+	db 28, HAUNTER
+	db 30, HAUNTER
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/PowerPlant.asm
+++ b/data/wild/maps/PowerPlant.asm
@@ -1,19 +1,20 @@
 PowerPlantMons:
-	db $0A
-	db 21,VOLTORB
-	db 21,MAGNEMITE
-	db 20,PIKACHU
-	db 24,PIKACHU
-	db 23,MAGNEMITE
-	db 23,VOLTORB
-	db 32,MAGNETON
-	db 35,MAGNETON
-	IF DEF(_RED)
-		db 33,ELECTABUZZ
-		db 36,ELECTABUZZ
-	ENDC
-	IF DEF(_BLUE)
-		db 33,RAICHU
-		db 36,RAICHU
-	ENDC
-	db $00
+	db 10 ; grass encounter rate
+	db 21, VOLTORB
+	db 21, MAGNEMITE
+	db 20, PIKACHU
+	db 24, PIKACHU
+	db 23, MAGNEMITE
+	db 23, VOLTORB
+	db 32, MAGNETON
+	db 35, MAGNETON
+IF DEF(_RED)
+	db 33, ELECTABUZZ
+	db 36, ELECTABUZZ
+ENDC
+IF DEF(_BLUE)
+	db 33, RAICHU
+	db 36, RAICHU
+ENDC
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/RockTunnel1F.asm
+++ b/data/wild/maps/RockTunnel1F.asm
@@ -1,13 +1,14 @@
 TunnelMonsB1:
-	db $0F
-	db 16,ZUBAT
-	db 17,ZUBAT
-	db 17,GEODUDE
-	db 15,MACHOP
-	db 16,GEODUDE
-	db 18,ZUBAT
-	db 15,ZUBAT
-	db 17,MACHOP
-	db 13,ONIX
-	db 15,ONIX
-	db $00
+	db 15 ; grass encounter rate
+	db 16, ZUBAT
+	db 17, ZUBAT
+	db 17, GEODUDE
+	db 15, MACHOP
+	db 16, GEODUDE
+	db 18, ZUBAT
+	db 15, ZUBAT
+	db 17, MACHOP
+	db 13, ONIX
+	db 15, ONIX
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/RockTunnelB1F.asm
+++ b/data/wild/maps/RockTunnelB1F.asm
@@ -1,13 +1,14 @@
 TunnelMonsB2:
-	db $0F
-	db 16,ZUBAT
-	db 17,ZUBAT
-	db 17,GEODUDE
-	db 15,MACHOP
-	db 16,GEODUDE
-	db 18,ZUBAT
-	db 17,MACHOP
-	db 17,ONIX
-	db 13,ONIX
-	db 18,GEODUDE
-	db $00
+	db 15 ; grass encounter rate
+	db 16, ZUBAT
+	db 17, ZUBAT
+	db 17, GEODUDE
+	db 15, MACHOP
+	db 16, GEODUDE
+	db 18, ZUBAT
+	db 17, MACHOP
+	db 17, ONIX
+	db 13, ONIX
+	db 18, GEODUDE
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/Route1.asm
+++ b/data/wild/maps/Route1.asm
@@ -1,13 +1,14 @@
 Route1Mons:
-	db $19
-	db 3,PIDGEY
-	db 3,RATTATA
-	db 3,RATTATA
-	db 2,RATTATA
-	db 2,PIDGEY
-	db 3,PIDGEY
-	db 3,PIDGEY
-	db 4,RATTATA
-	db 4,PIDGEY
-	db 5,PIDGEY
-	db $00
+	db 25 ; grass encounter rate
+	db  3, PIDGEY
+	db  3, RATTATA
+	db  3, RATTATA
+	db  2, RATTATA
+	db  2, PIDGEY
+	db  3, PIDGEY
+	db  3, PIDGEY
+	db  4, RATTATA
+	db  4, PIDGEY
+	db  5, PIDGEY
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/Route10.asm
+++ b/data/wild/maps/Route10.asm
@@ -1,27 +1,25 @@
 Route10Mons:
-	db $0F
-	IF DEF(_RED)
-		db 16,VOLTORB
-		db 16,SPEAROW
-		db 14,VOLTORB
-		db 11,EKANS
-		db 13,SPEAROW
-		db 15,EKANS
-		db 17,VOLTORB
-		db 17,SPEAROW
-		db 13,EKANS
-		db 17,EKANS
-	ENDC
-	IF DEF(_BLUE)
-		db 16,VOLTORB
-		db 16,SPEAROW
-		db 14,VOLTORB
-		db 11,SANDSHREW
-		db 13,SPEAROW
-		db 15,SANDSHREW
-		db 17,VOLTORB
-		db 17,SPEAROW
-		db 13,SANDSHREW
-		db 17,SANDSHREW
-	ENDC
-	db $00
+	db 15 ; grass encounter rate
+	db 16, VOLTORB
+	db 16, SPEAROW
+	db 14, VOLTORB
+IF DEF(_RED)
+	db 11, EKANS
+	db 13, SPEAROW
+	db 15, EKANS
+	db 17, VOLTORB
+	db 17, SPEAROW
+	db 13, EKANS
+	db 17, EKANS
+ENDC
+IF DEF(_BLUE)
+	db 11, SANDSHREW
+	db 13, SPEAROW
+	db 15, SANDSHREW
+	db 17, VOLTORB
+	db 17, SPEAROW
+	db 13, SANDSHREW
+	db 17, SANDSHREW
+ENDC
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/Route11.asm
+++ b/data/wild/maps/Route11.asm
@@ -1,27 +1,25 @@
 Route11Mons:
-	db $0F
-	IF DEF(_RED)
-		db 14,EKANS
-		db 15,SPEAROW
-		db 12,EKANS
-		db 9,DROWZEE
-		db 13,SPEAROW
-		db 13,DROWZEE
-		db 15,EKANS
-		db 17,SPEAROW
-		db 11,DROWZEE
-		db 15,DROWZEE
-	ENDC
-	IF DEF(_BLUE)
-		db 14,SANDSHREW
-		db 15,SPEAROW
-		db 12,SANDSHREW
-		db 9,DROWZEE
-		db 13,SPEAROW
-		db 13,DROWZEE
-		db 15,SANDSHREW
-		db 17,SPEAROW
-		db 11,DROWZEE
-		db 15,DROWZEE
-	ENDC
-	db $00
+	db 15 ; grass encounter rate
+IF DEF(_RED)
+	db 14, EKANS
+	db 15, SPEAROW
+	db 12, EKANS
+	db  9, DROWZEE
+	db 13, SPEAROW
+	db 13, DROWZEE
+	db 15, EKANS
+ENDC
+IF DEF(_BLUE)
+	db 14, SANDSHREW
+	db 15, SPEAROW
+	db 12, SANDSHREW
+	db  9, DROWZEE
+	db 13, SPEAROW
+	db 13, DROWZEE
+	db 15, SANDSHREW
+ENDC
+	db 17, SPEAROW
+	db 11, DROWZEE
+	db 15, DROWZEE
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/Route12.asm
+++ b/data/wild/maps/Route12.asm
@@ -1,27 +1,28 @@
 Route12Mons:
-	db $0F
-	IF DEF(_RED)
-		db 24,ODDISH
-		db 25,PIDGEY
-		db 23,PIDGEY
-		db 24,VENONAT
-		db 22,ODDISH
-		db 26,VENONAT
-		db 26,ODDISH
-		db 27,PIDGEY
-		db 28,GLOOM
-		db 30,GLOOM
-	ENDC
-	IF DEF(_BLUE)
-		db 24,BELLSPROUT
-		db 25,PIDGEY
-		db 23,PIDGEY
-		db 24,VENONAT
-		db 22,BELLSPROUT
-		db 26,VENONAT
-		db 26,BELLSPROUT
-		db 27,PIDGEY
-		db 28,WEEPINBELL
-		db 30,WEEPINBELL
-	ENDC
-	db $00
+	db 15 ; grass encounter rate
+IF DEF(_RED)
+	db 24, ODDISH
+	db 25, PIDGEY
+	db 23, PIDGEY
+	db 24, VENONAT
+	db 22, ODDISH
+	db 26, VENONAT
+	db 26, ODDISH
+	db 27, PIDGEY
+	db 28, GLOOM
+	db 30, GLOOM
+ENDC
+IF DEF(_BLUE)
+	db 24, BELLSPROUT
+	db 25, PIDGEY
+	db 23, PIDGEY
+	db 24, VENONAT
+	db 22, BELLSPROUT
+	db 26, VENONAT
+	db 26, BELLSPROUT
+	db 27, PIDGEY
+	db 28, WEEPINBELL
+	db 30, WEEPINBELL
+ENDC
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/Route13.asm
+++ b/data/wild/maps/Route13.asm
@@ -1,28 +1,28 @@
 Route13Mons:
-	IF DEF(_RED)
-		db $14
-		db 24,ODDISH
-		db 25,PIDGEY
-		db 27,PIDGEY
-		db 24,VENONAT
-		db 22,ODDISH
-		db 26,VENONAT
-		db 26,ODDISH
-		db 25,DITTO
-		db 28,GLOOM
-		db 30,GLOOM
-	ENDC
-	IF DEF(_BLUE)
-		db $14
-		db 24,BELLSPROUT
-		db 25,PIDGEY
-		db 27,PIDGEY
-		db 24,VENONAT
-		db 22,BELLSPROUT
-		db 26,VENONAT
-		db 26,BELLSPROUT
-		db 25,DITTO
-		db 28,WEEPINBELL
-		db 30,WEEPINBELL
-	ENDC
-	db $00
+	db 20 ; grass encounter rate
+IF DEF(_RED)
+	db 24, ODDISH
+	db 25, PIDGEY
+	db 27, PIDGEY
+	db 24, VENONAT
+	db 22, ODDISH
+	db 26, VENONAT
+	db 26, ODDISH
+	db 25, DITTO
+	db 28, GLOOM
+	db 30, GLOOM
+ENDC
+IF DEF(_BLUE)
+	db 24, BELLSPROUT
+	db 25, PIDGEY
+	db 27, PIDGEY
+	db 24, VENONAT
+	db 22, BELLSPROUT
+	db 26, VENONAT
+	db 26, BELLSPROUT
+	db 25, DITTO
+	db 28, WEEPINBELL
+	db 30, WEEPINBELL
+ENDC
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/Route14.asm
+++ b/data/wild/maps/Route14.asm
@@ -1,27 +1,26 @@
 Route14Mons:
-	db $0F
-	IF DEF(_RED)
-		db 24,ODDISH
-		db 26,PIDGEY
-		db 23,DITTO
-		db 24,VENONAT
-		db 22,ODDISH
-		db 26,VENONAT
-		db 26,ODDISH
-		db 30,GLOOM
-		db 28,PIDGEOTTO
-		db 30,PIDGEOTTO
-	ENDC
-	IF DEF(_BLUE)
-		db 24,BELLSPROUT
-		db 26,PIDGEY
-		db 23,DITTO
-		db 24,VENONAT
-		db 22,BELLSPROUT
-		db 26,VENONAT
-		db 26,BELLSPROUT
-		db 30,WEEPINBELL
-		db 28,PIDGEOTTO
-		db 30,PIDGEOTTO
-	ENDC
-	db $00
+	db 15 ; grass encounter rate
+IF DEF(_RED)
+	db 24, ODDISH
+	db 26, PIDGEY
+	db 23, DITTO
+	db 24, VENONAT
+	db 22, ODDISH
+	db 26, VENONAT
+	db 26, ODDISH
+	db 30, GLOOM
+ENDC
+IF DEF(_BLUE)
+	db 24, BELLSPROUT
+	db 26, PIDGEY
+	db 23, DITTO
+	db 24, VENONAT
+	db 22, BELLSPROUT
+	db 26, VENONAT
+	db 26, BELLSPROUT
+	db 30, WEEPINBELL
+ENDC
+	db 28, PIDGEOTTO
+	db 30, PIDGEOTTO
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/Route15.asm
+++ b/data/wild/maps/Route15.asm
@@ -1,27 +1,26 @@
 Route15Mons:
-	db $0F
-	IF DEF(_RED)
-		db 24,ODDISH
-		db 26,DITTO
-		db 23,PIDGEY
-		db 26,VENONAT
-		db 22,ODDISH
-		db 28,VENONAT
-		db 26,ODDISH
-		db 30,GLOOM
-		db 28,PIDGEOTTO
-		db 30,PIDGEOTTO
-	ENDC
-	IF DEF(_BLUE)
-		db 24,BELLSPROUT
-		db 26,DITTO
-		db 23,PIDGEY
-		db 26,VENONAT
-		db 22,BELLSPROUT
-		db 28,VENONAT
-		db 26,BELLSPROUT
-		db 30,WEEPINBELL
-		db 28,PIDGEOTTO
-		db 30,PIDGEOTTO
-	ENDC
-	db $00
+	db 15 ; grass encounter rate
+IF DEF(_RED)
+	db 24, ODDISH
+	db 26, DITTO
+	db 23, PIDGEY
+	db 26, VENONAT
+	db 22, ODDISH
+	db 28, VENONAT
+	db 26, ODDISH
+	db 30, GLOOM
+ENDC
+IF DEF(_BLUE)
+	db 24, BELLSPROUT
+	db 26, DITTO
+	db 23, PIDGEY
+	db 26, VENONAT
+	db 22, BELLSPROUT
+	db 28, VENONAT
+	db 26, BELLSPROUT
+	db 30, WEEPINBELL
+ENDC
+	db 28, PIDGEOTTO
+	db 30, PIDGEOTTO
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/Route16.asm
+++ b/data/wild/maps/Route16.asm
@@ -1,13 +1,14 @@
 Route16Mons:
-	db $19
-	db 20,SPEAROW
-	db 22,SPEAROW
-	db 18,RATTATA
-	db 20,DODUO
-	db 20,RATTATA
-	db 18,DODUO
-	db 22,DODUO
-	db 22,RATTATA
-	db 23,RATICATE
-	db 25,RATICATE
-	db $00
+	db 25 ; grass encounter rate
+	db 20, SPEAROW
+	db 22, SPEAROW
+	db 18, RATTATA
+	db 20, DODUO
+	db 20, RATTATA
+	db 18, DODUO
+	db 22, DODUO
+	db 22, RATTATA
+	db 23, RATICATE
+	db 25, RATICATE
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/Route17.asm
+++ b/data/wild/maps/Route17.asm
@@ -1,13 +1,14 @@
 Route17Mons:
-	db $19
-	db 20,SPEAROW
-	db 22,SPEAROW
-	db 25,RATICATE
-	db 24,DODUO
-	db 27,RATICATE
-	db 26,DODUO
-	db 28,DODUO
-	db 29,RATICATE
-	db 25,FEAROW
-	db 27,FEAROW
-	db $00
+	db 25 ; grass encounter rate
+	db 20, SPEAROW
+	db 22, SPEAROW
+	db 25, RATICATE
+	db 24, DODUO
+	db 27, RATICATE
+	db 26, DODUO
+	db 28, DODUO
+	db 29, RATICATE
+	db 25, FEAROW
+	db 27, FEAROW
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/Route18.asm
+++ b/data/wild/maps/Route18.asm
@@ -1,13 +1,14 @@
 Route18Mons:
-	db $19
-	db 20,SPEAROW
-	db 22,SPEAROW
-	db 25,RATICATE
-	db 24,DODUO
-	db 25,FEAROW
-	db 26,DODUO
-	db 28,DODUO
-	db 29,RATICATE
-	db 27,FEAROW
-	db 29,FEAROW
-	db $00
+	db 25 ; grass encounter rate
+	db 20, SPEAROW
+	db 22, SPEAROW
+	db 25, RATICATE
+	db 24, DODUO
+	db 25, FEAROW
+	db 26, DODUO
+	db 28, DODUO
+	db 29, RATICATE
+	db 27, FEAROW
+	db 29, FEAROW
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/Route2.asm
+++ b/data/wild/maps/Route2.asm
@@ -1,24 +1,23 @@
 Route2Mons:
-	db $19
-	db 3,RATTATA
-	db 3,PIDGEY
-	db 4,PIDGEY
-	db 4,RATTATA
-	db 5,PIDGEY
-	IF DEF(_RED)
-		db 3,WEEDLE
-	ENDC
-	IF DEF(_BLUE)
-		db 3,CATERPIE
-	ENDC
-	db 2,RATTATA
-	db 5,RATTATA
-	IF DEF(_RED)
-		db 4,WEEDLE
-		db 5,WEEDLE
-	ENDC
-	IF DEF(_BLUE)
-		db 4,CATERPIE
-		db 5,CATERPIE
-	ENDC
-	db $00
+	db 25 ; grass encounter rate
+	db  3, RATTATA
+	db  3, PIDGEY
+	db  4, PIDGEY
+	db  4, RATTATA
+	db  5, PIDGEY
+IF DEF(_RED)
+	db  3, WEEDLE
+	db  2, RATTATA
+	db  5, RATTATA
+	db  4, WEEDLE
+	db  5, WEEDLE
+ENDC
+IF DEF(_BLUE)
+	db  3, CATERPIE
+	db  2, RATTATA
+	db  5, RATTATA
+	db  4, CATERPIE
+	db  5, CATERPIE
+ENDC
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/Route21.asm
+++ b/data/wild/maps/Route21.asm
@@ -1,23 +1,24 @@
 Route21Mons:
-	db $19
-	db 21,RATTATA
-	db 23,PIDGEY
-	db 30,RATICATE
-	db 23,RATTATA
-	db 21,PIDGEY
-	db 30,PIDGEOTTO
-	db 32,PIDGEOTTO
-	db 28,TANGELA
-	db 30,TANGELA
-	db 32,TANGELA
-	db $05
-	db 5,TENTACOOL
-	db 10,TENTACOOL
-	db 15,TENTACOOL
-	db 5,TENTACOOL
-	db 10,TENTACOOL
-	db 15,TENTACOOL
-	db 20,TENTACOOL
-	db 30,TENTACOOL
-	db 35,TENTACOOL
-	db 40,TENTACOOL
+	db 25 ; grass encounter rate
+	db 21, RATTATA
+	db 23, PIDGEY
+	db 30, RATICATE
+	db 23, RATTATA
+	db 21, PIDGEY
+	db 30, PIDGEOTTO
+	db 32, PIDGEOTTO
+	db 28, TANGELA
+	db 30, TANGELA
+	db 32, TANGELA
+
+	db 5 ; water encounter rate
+	db  5, TENTACOOL
+	db 10, TENTACOOL
+	db 15, TENTACOOL
+	db  5, TENTACOOL
+	db 10, TENTACOOL
+	db 15, TENTACOOL
+	db 20, TENTACOOL
+	db 30, TENTACOOL
+	db 35, TENTACOOL
+	db 40, TENTACOOL
--- a/data/wild/maps/Route22.asm
+++ b/data/wild/maps/Route22.asm
@@ -1,27 +1,27 @@
 Route22Mons:
-	db $19
-	IF DEF(_RED)
-		db 3,RATTATA
-		db 3,NIDORAN_M
-		db 4,RATTATA
-		db 4,NIDORAN_M
-		db 2,RATTATA
-		db 2,NIDORAN_M
-		db 3,SPEAROW
-		db 5,SPEAROW
-		db 3,NIDORAN_F
-		db 4,NIDORAN_F
-	ENDC
-	IF DEF(_BLUE)
-		db 3,RATTATA
-		db 3,NIDORAN_F
-		db 4,RATTATA
-		db 4,NIDORAN_F
-		db 2,RATTATA
-		db 2,NIDORAN_F
-		db 3,SPEAROW
-		db 5,SPEAROW
-		db 3,NIDORAN_M
-		db 4,NIDORAN_M
-	ENDC
-	db $00
+	db 25 ; grass encounter rate
+	db  3, RATTATA
+IF DEF(_RED)
+	db  3, NIDORAN_M
+	db  4, RATTATA
+	db  4, NIDORAN_M
+	db  2, RATTATA
+	db  2, NIDORAN_M
+	db  3, SPEAROW
+	db  5, SPEAROW
+	db  3, NIDORAN_F
+	db  4, NIDORAN_F
+ENDC
+IF DEF(_BLUE)
+	db  3, NIDORAN_F
+	db  4, RATTATA
+	db  4, NIDORAN_F
+	db  2, RATTATA
+	db  2, NIDORAN_F
+	db  3, SPEAROW
+	db  5, SPEAROW
+	db  3, NIDORAN_M
+	db  4, NIDORAN_M
+ENDC
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/Route23.asm
+++ b/data/wild/maps/Route23.asm
@@ -1,23 +1,24 @@
 Route23Mons:
-	db $0A
-	IF DEF(_RED)
-		db 26,EKANS
-	ENDC
-	IF DEF(_BLUE)
-		db 26,SANDSHREW
-	ENDC
-	db 33,DITTO
-	db 26,SPEAROW
-	db 38,FEAROW
-	db 38,DITTO
-	db 38,FEAROW
-	IF DEF(_RED)
-		db 41,ARBOK
-	ENDC
-	IF DEF(_BLUE)
-		db 41,SANDSLASH
-	ENDC
-	db 43,DITTO
-	db 41,FEAROW
-	db 43,FEAROW
-	db $00
+	db 10 ; grass encounter rate
+IF DEF(_RED)
+	db 26, EKANS
+ENDC
+IF DEF(_BLUE)
+	db 26, SANDSHREW
+ENDC
+	db 33, DITTO
+	db 26, SPEAROW
+	db 38, FEAROW
+	db 38, DITTO
+	db 38, FEAROW
+IF DEF(_RED)
+	db 41, ARBOK
+ENDC
+IF DEF(_BLUE)
+	db 41, SANDSLASH
+ENDC
+	db 43, DITTO
+	db 41, FEAROW
+	db 43, FEAROW
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/Route24.asm
+++ b/data/wild/maps/Route24.asm
@@ -1,27 +1,25 @@
 Route24Mons:
-	db $19
-	IF DEF(_RED)
-		db 7,WEEDLE
-		db 8,KAKUNA
-		db 12,PIDGEY
-		db 12,ODDISH
-		db 13,ODDISH
-		db 10,ABRA
-		db 14,ODDISH
-		db 13,PIDGEY
-		db 8,ABRA
-		db 12,ABRA
-	ENDC
-	IF DEF(_BLUE)
-		db 7,CATERPIE
-		db 8,METAPOD
-		db 12,PIDGEY
-		db 12,BELLSPROUT
-		db 13,BELLSPROUT
-		db 10,ABRA
-		db 14,BELLSPROUT
-		db 13,PIDGEY
-		db 8,ABRA
-		db 12,ABRA
-	ENDC
-	db $00
+	db 25 ; grass encounter rate
+IF DEF(_RED)
+	db  7, WEEDLE
+	db  8, KAKUNA
+	db 12, PIDGEY
+	db 12, ODDISH
+	db 13, ODDISH
+	db 10, ABRA
+	db 14, ODDISH
+ENDC
+IF DEF(_BLUE)
+	db  7, CATERPIE
+	db  8, METAPOD
+	db 12, PIDGEY
+	db 12, BELLSPROUT
+	db 13, BELLSPROUT
+	db 10, ABRA
+	db 14, BELLSPROUT
+ENDC
+	db 13, PIDGEY
+	db  8, ABRA
+	db 12, ABRA
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/Route25.asm
+++ b/data/wild/maps/Route25.asm
@@ -1,27 +1,28 @@
 Route25Mons:
-	db $0F
-	IF DEF(_RED)
-		db 8,WEEDLE
-		db 9,KAKUNA
-		db 13,PIDGEY
-		db 12,ODDISH
-		db 13,ODDISH
-		db 12,ABRA
-		db 14,ODDISH
-		db 10,ABRA
-		db 7,METAPOD
-		db 8,CATERPIE
-	ENDC
-	IF DEF(_BLUE)
-		db 8,CATERPIE
-		db 9,METAPOD
-		db 13,PIDGEY
-		db 12,BELLSPROUT
-		db 13,BELLSPROUT
-		db 12,ABRA
-		db 14,BELLSPROUT
-		db 10,ABRA
-		db 7,KAKUNA
-		db 8,WEEDLE
-	ENDC
-	db $00
+	db 15 ; grass encounter rate
+IF DEF(_RED)
+	db  8, WEEDLE
+	db  9, KAKUNA
+	db 13, PIDGEY
+	db 12, ODDISH
+	db 13, ODDISH
+	db 12, ABRA
+	db 14, ODDISH
+	db 10, ABRA
+	db  7, METAPOD
+	db  8, CATERPIE
+ENDC
+IF DEF(_BLUE)
+	db  8, CATERPIE
+	db  9, METAPOD
+	db 13, PIDGEY
+	db 12, BELLSPROUT
+	db 13, BELLSPROUT
+	db 12, ABRA
+	db 14, BELLSPROUT
+	db 10, ABRA
+	db  7, KAKUNA
+	db  8, WEEDLE
+ENDC
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/Route3.asm
+++ b/data/wild/maps/Route3.asm
@@ -1,13 +1,14 @@
 Route3Mons:
-	db $14
-	db 6,PIDGEY
-	db 5,SPEAROW
-	db 7,PIDGEY
-	db 6,SPEAROW
-	db 7,SPEAROW
-	db 8,PIDGEY
-	db 8,SPEAROW
-	db 3,JIGGLYPUFF
-	db 5,JIGGLYPUFF
-	db 7,JIGGLYPUFF
-	db $00
+	db 20 ; grass encounter rate
+	db  6, PIDGEY
+	db  5, SPEAROW
+	db  7, PIDGEY
+	db  6, SPEAROW
+	db  7, SPEAROW
+	db  8, PIDGEY
+	db  8, SPEAROW
+	db  3, JIGGLYPUFF
+	db  5, JIGGLYPUFF
+	db  7, JIGGLYPUFF
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/Route4.asm
+++ b/data/wild/maps/Route4.asm
@@ -1,27 +1,24 @@
 Route4Mons:
-	db $14
-	IF DEF(_RED)
-		db 10,RATTATA
-		db 10,SPEAROW
-		db 8,RATTATA
-		db 6,EKANS
-		db 8,SPEAROW
-		db 10,EKANS
-		db 12,RATTATA
-		db 12,SPEAROW
-		db 8,EKANS
-		db 12,EKANS
-	ENDC
-	IF DEF(_BLUE)
-		db 10,RATTATA
-		db 10,SPEAROW
-		db 8,RATTATA
-		db 6,SANDSHREW
-		db 8,SPEAROW
-		db 10,SANDSHREW
-		db 12,RATTATA
-		db 12,SPEAROW
-		db 8,SANDSHREW
-		db 12,SANDSHREW
-	ENDC
-	db $00
+	db 20 ; grass encounter rate
+	db 10, RATTATA
+	db 10, SPEAROW
+	db  8, RATTATA
+IF DEF(_RED)
+	db  6, EKANS
+	db  8, SPEAROW
+	db 10, EKANS
+	db 12, RATTATA
+	db 12, SPEAROW
+	db  8, EKANS
+	db 12, EKANS
+ENDC
+IF DEF(_BLUE)
+	db  6, SANDSHREW
+	db  8, SPEAROW
+	db 10, SANDSHREW
+	db 12, RATTATA
+	db 12, SPEAROW
+	db  8, SANDSHREW
+	db 12, SANDSHREW
+ENDC
+	db 0 ; water encounter rate
--- a/data/wild/maps/Route5.asm
+++ b/data/wild/maps/Route5.asm
@@ -1,27 +1,28 @@
 Route5Mons:
-	db $0F
-	IF DEF(_RED)
-		db 13,ODDISH
-		db 13,PIDGEY
-		db 15,PIDGEY
-		db 10,MANKEY
-		db 12,MANKEY
-		db 15,ODDISH
-		db 16,ODDISH
-		db 16,PIDGEY
-		db 14,MANKEY
-		db 16,MANKEY
-	ENDC
-	IF DEF(_BLUE)
-		db 13,BELLSPROUT
-		db 13,PIDGEY
-		db 15,PIDGEY
-		db 10,MEOWTH
-		db 12,MEOWTH
-		db 15,BELLSPROUT
-		db 16,BELLSPROUT
-		db 16,PIDGEY
-		db 14,MEOWTH
-		db 16,MEOWTH
-	ENDC
-	db $00
+	db 15 ; grass encounter rate
+IF DEF(_RED)
+	db 13, ODDISH
+	db 13, PIDGEY
+	db 15, PIDGEY
+	db 10, MANKEY
+	db 12, MANKEY
+	db 15, ODDISH
+	db 16, ODDISH
+	db 16, PIDGEY
+	db 14, MANKEY
+	db 16, MANKEY
+ENDC
+IF DEF(_BLUE)
+	db 13, BELLSPROUT
+	db 13, PIDGEY
+	db 15, PIDGEY
+	db 10, MEOWTH
+	db 12, MEOWTH
+	db 15, BELLSPROUT
+	db 16, BELLSPROUT
+	db 16, PIDGEY
+	db 14, MEOWTH
+	db 16, MEOWTH
+ENDC
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/Route6.asm
+++ b/data/wild/maps/Route6.asm
@@ -1,27 +1,28 @@
 Route6Mons:
-	db $0F
-	IF DEF(_RED)
-		db 13,ODDISH
-		db 13,PIDGEY
-		db 15,PIDGEY
-		db 10,MANKEY
-		db 12,MANKEY
-		db 15,ODDISH
-		db 16,ODDISH
-		db 16,PIDGEY
-		db 14,MANKEY
-		db 16,MANKEY
-	ENDC
-	IF DEF(_BLUE)
-		db 13,BELLSPROUT
-		db 13,PIDGEY
-		db 15,PIDGEY
-		db 10,MEOWTH
-		db 12,MEOWTH
-		db 15,BELLSPROUT
-		db 16,BELLSPROUT
-		db 16,PIDGEY
-		db 14,MEOWTH
-		db 16,MEOWTH
-	ENDC
-	db $00
+	db 15 ; grass encounter rate
+IF DEF(_RED)
+	db 13, ODDISH
+	db 13, PIDGEY
+	db 15, PIDGEY
+	db 10, MANKEY
+	db 12, MANKEY
+	db 15, ODDISH
+	db 16, ODDISH
+	db 16, PIDGEY
+	db 14, MANKEY
+	db 16, MANKEY
+ENDC
+IF DEF(_BLUE)
+	db 13, BELLSPROUT
+	db 13, PIDGEY
+	db 15, PIDGEY
+	db 10, MEOWTH
+	db 12, MEOWTH
+	db 15, BELLSPROUT
+	db 16, BELLSPROUT
+	db 16, PIDGEY
+	db 14, MEOWTH
+	db 16, MEOWTH
+ENDC
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/Route7.asm
+++ b/data/wild/maps/Route7.asm
@@ -1,27 +1,27 @@
 Route7Mons:
-	db $0F
-	IF DEF(_RED)
-		db 19,PIDGEY
-		db 19,ODDISH
-		db 17,MANKEY
-		db 22,ODDISH
-		db 22,PIDGEY
-		db 18,MANKEY
-		db 18,GROWLITHE
-		db 20,GROWLITHE
-		db 19,MANKEY
-		db 20,MANKEY
-	ENDC
-	IF DEF(_BLUE)
-		db 19,PIDGEY
-		db 19,BELLSPROUT
-		db 17,MEOWTH
-		db 22,BELLSPROUT
-		db 22,PIDGEY
-		db 18,MEOWTH
-		db 18,VULPIX
-		db 20,VULPIX
-		db 19,MEOWTH
-		db 20,MEOWTH
-	ENDC
-	db $00
+	db 15 ; grass encounter rate
+	db 19, PIDGEY
+IF DEF(_RED)
+	db 19, ODDISH
+	db 17, MANKEY
+	db 22, ODDISH
+	db 22, PIDGEY
+	db 18, MANKEY
+	db 18, GROWLITHE
+	db 20, GROWLITHE
+	db 19, MANKEY
+	db 20, MANKEY
+ENDC
+IF DEF(_BLUE)
+	db 19, BELLSPROUT
+	db 17, MEOWTH
+	db 22, BELLSPROUT
+	db 22, PIDGEY
+	db 18, MEOWTH
+	db 18, VULPIX
+	db 20, VULPIX
+	db 19, MEOWTH
+	db 20, MEOWTH
+ENDC
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/Route8.asm
+++ b/data/wild/maps/Route8.asm
@@ -1,27 +1,27 @@
 Route8Mons:
-	db $0F
-	IF DEF(_RED)
-		db 18,PIDGEY
-		db 18,MANKEY
-		db 17,EKANS
-		db 16,GROWLITHE
-		db 20,PIDGEY
-		db 20,MANKEY
-		db 19,EKANS
-		db 17,GROWLITHE
-		db 15,GROWLITHE
-		db 18,GROWLITHE
-	ENDC
-	IF DEF(_BLUE)
-		db 18,PIDGEY
-		db 18,MEOWTH
-		db 17,SANDSHREW
-		db 16,VULPIX
-		db 20,PIDGEY
-		db 20,MEOWTH
-		db 19,SANDSHREW
-		db 17,VULPIX
-		db 15,VULPIX
-		db 18,VULPIX
-	ENDC
-	db $00
+	db 15 ; grass encounter rate
+	db 18, PIDGEY
+IF DEF(_RED)
+	db 18, MANKEY
+	db 17, EKANS
+	db 16, GROWLITHE
+	db 20, PIDGEY
+	db 20, MANKEY
+	db 19, EKANS
+	db 17, GROWLITHE
+	db 15, GROWLITHE
+	db 18, GROWLITHE
+ENDC
+IF DEF(_BLUE)
+	db 18, MEOWTH
+	db 17, SANDSHREW
+	db 16, VULPIX
+	db 20, PIDGEY
+	db 20, MEOWTH
+	db 19, SANDSHREW
+	db 17, VULPIX
+	db 15, VULPIX
+	db 18, VULPIX
+ENDC
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/Route9.asm
+++ b/data/wild/maps/Route9.asm
@@ -1,27 +1,25 @@
 Route9Mons:
-	db $0F
-	IF DEF(_RED)
-		db 16,RATTATA
-		db 16,SPEAROW
-		db 14,RATTATA
-		db 11,EKANS
-		db 13,SPEAROW
-		db 15,EKANS
-		db 17,RATTATA
-		db 17,SPEAROW
-		db 13,EKANS
-		db 17,EKANS
-	ENDC
-	IF DEF(_BLUE)
-		db 16,RATTATA
-		db 16,SPEAROW
-		db 14,RATTATA
-		db 11,SANDSHREW
-		db 13,SPEAROW
-		db 15,SANDSHREW
-		db 17,RATTATA
-		db 17,SPEAROW
-		db 13,SANDSHREW
-		db 17,SANDSHREW
-	ENDC
-	db $00
+	db 15 ; grass encounter rate
+	db 16, RATTATA
+	db 16, SPEAROW
+	db 14, RATTATA
+IF DEF(_RED)
+	db 11, EKANS
+	db 13, SPEAROW
+	db 15, EKANS
+	db 17, RATTATA
+	db 17, SPEAROW
+	db 13, EKANS
+	db 17, EKANS
+ENDC
+IF DEF(_BLUE)
+	db 11, SANDSHREW
+	db 13, SPEAROW
+	db 15, SANDSHREW
+	db 17, RATTATA
+	db 17, SPEAROW
+	db 13, SANDSHREW
+	db 17, SANDSHREW
+ENDC
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/SafariZoneCenter.asm
+++ b/data/wild/maps/SafariZoneCenter.asm
@@ -1,27 +1,27 @@
 ZoneMonsCenter:
-	db $1E
-	IF DEF(_RED)
-		db 22,NIDORAN_M
-		db 25,RHYHORN
-		db 22,VENONAT
-		db 24,EXEGGCUTE
-		db 31,NIDORINO
-		db 25,EXEGGCUTE
-		db 31,NIDORINA
-		db 30,PARASECT
-		db 23,SCYTHER
-		db 23,CHANSEY
-	ENDC
-	IF DEF(_BLUE)
-		db 22,NIDORAN_F
-		db 25,RHYHORN
-		db 22,VENONAT
-		db 24,EXEGGCUTE
-		db 31,NIDORINA
-		db 25,EXEGGCUTE
-		db 31,NIDORINO
-		db 30,PARASECT
-		db 23,PINSIR
-		db 23,CHANSEY
-	ENDC
-	db $00
+	db 30 ; grass encounter rate
+IF DEF(_RED)
+	db 22, NIDORAN_M
+	db 25, RHYHORN
+	db 22, VENONAT
+	db 24, EXEGGCUTE
+	db 31, NIDORINO
+	db 25, EXEGGCUTE
+	db 31, NIDORINA
+	db 30, PARASECT
+	db 23, SCYTHER
+ENDC
+IF DEF(_BLUE)
+	db 22, NIDORAN_F
+	db 25, RHYHORN
+	db 22, VENONAT
+	db 24, EXEGGCUTE
+	db 31, NIDORINA
+	db 25, EXEGGCUTE
+	db 31, NIDORINO
+	db 30, PARASECT
+	db 23, PINSIR
+ENDC
+	db 23, CHANSEY
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/SafariZoneEast.asm
+++ b/data/wild/maps/SafariZoneEast.asm
@@ -1,27 +1,28 @@
 ZoneMons1:
-	db $1E
-	IF DEF(_RED)
-		db 24,NIDORAN_M
-		db 26,DODUO
-		db 22,PARAS
-		db 25,EXEGGCUTE
-		db 33,NIDORINO
-		db 23,EXEGGCUTE
-		db 24,NIDORAN_F
-		db 25,PARASECT
-		db 25,KANGASKHAN
-		db 28,SCYTHER
-	ENDC
-	IF DEF(_BLUE)
-		db 24,NIDORAN_F
-		db 26,DODUO
-		db 22,PARAS
-		db 25,EXEGGCUTE
-		db 33,NIDORINA
-		db 23,EXEGGCUTE
-		db 24,NIDORAN_M
-		db 25,PARASECT
-		db 25,KANGASKHAN
-		db 28,PINSIR
-	ENDC
-	db $00
+	db 30 ; grass encounter rate
+IF DEF(_RED)
+	db 24, NIDORAN_M
+	db 26, DODUO
+	db 22, PARAS
+	db 25, EXEGGCUTE
+	db 33, NIDORINO
+	db 23, EXEGGCUTE
+	db 24, NIDORAN_F
+	db 25, PARASECT
+	db 25, KANGASKHAN
+	db 28, SCYTHER
+ENDC
+IF DEF(_BLUE)
+	db 24, NIDORAN_F
+	db 26, DODUO
+	db 22, PARAS
+	db 25, EXEGGCUTE
+	db 33, NIDORINA
+	db 23, EXEGGCUTE
+	db 24, NIDORAN_M
+	db 25, PARASECT
+	db 25, KANGASKHAN
+	db 28, PINSIR
+ENDC
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/SafariZoneNorth.asm
+++ b/data/wild/maps/SafariZoneNorth.asm
@@ -1,28 +1,25 @@
 ZoneMons2:
-	db $1E
-	IF DEF(_RED)
-		db 22,NIDORAN_M
-	ENDC
-	IF DEF(_BLUE)
-		db 22,NIDORAN_F
-	ENDC
-	db 26,RHYHORN
-	db 23,PARAS
-	db 25,EXEGGCUTE
-	IF DEF(_RED)
-		db 30,NIDORINO
-	ENDC
-	IF DEF(_BLUE)
-		db 30,NIDORINA
-	ENDC
-	db 27,EXEGGCUTE
-	IF DEF(_RED)
-		db 30,NIDORINA
-	ENDC
-	IF DEF(_BLUE)
-		db 30,NIDORINO
-	ENDC
-	db 32,VENOMOTH
-	db 26,CHANSEY
-	db 28,TAUROS
-	db $00
+	db 30 ; grass encounter rate
+IF DEF(_RED)
+	db 22, NIDORAN_M
+	db 26, RHYHORN
+	db 23, PARAS
+	db 25, EXEGGCUTE
+	db 30, NIDORINO
+	db 27, EXEGGCUTE
+	db 30, NIDORINA
+ENDC
+IF DEF(_BLUE)
+	db 22, NIDORAN_F
+	db 26, RHYHORN
+	db 23, PARAS
+	db 25, EXEGGCUTE
+	db 30, NIDORINA
+	db 27, EXEGGCUTE
+	db 30, NIDORINO
+ENDC
+	db 32, VENOMOTH
+	db 26, CHANSEY
+	db 28, TAUROS
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/SafariZoneWest.asm
+++ b/data/wild/maps/SafariZoneWest.asm
@@ -1,27 +1,25 @@
 ZoneMons3:
-	db $1E
-	IF DEF(_RED)
-		db 25,NIDORAN_M
-		db 26,DODUO
-		db 23,VENONAT
-		db 24,EXEGGCUTE
-		db 33,NIDORINO
-		db 26,EXEGGCUTE
-		db 25,NIDORAN_F
-		db 31,VENOMOTH
-		db 26,TAUROS
-		db 28,KANGASKHAN
-	ENDC
-	IF DEF(_BLUE)
-		db 25,NIDORAN_F
-		db 26,DODUO
-		db 23,VENONAT
-		db 24,EXEGGCUTE
-		db 33,NIDORINA
-		db 26,EXEGGCUTE
-		db 25,NIDORAN_M
-		db 31,VENOMOTH
-		db 26,TAUROS
-		db 28,KANGASKHAN
-	ENDC
-	db $00
+	db 30 ; grass encounter rate
+IF DEF(_RED)
+	db 25, NIDORAN_M
+	db 26, DODUO
+	db 23, VENONAT
+	db 24, EXEGGCUTE
+	db 33, NIDORINO
+	db 26, EXEGGCUTE
+	db 25, NIDORAN_F
+ENDC
+IF DEF(_BLUE)
+	db 25, NIDORAN_F
+	db 26, DODUO
+	db 23, VENONAT
+	db 24, EXEGGCUTE
+	db 33, NIDORINA
+	db 26, EXEGGCUTE
+	db 25, NIDORAN_M
+ENDC
+	db 31, VENOMOTH
+	db 26, TAUROS
+	db 28, KANGASKHAN
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/SeaRoutes.asm
+++ b/data/wild/maps/SeaRoutes.asm
@@ -1,13 +1,14 @@
 WaterMons:
-	db $00
-	db $05
-	db 5,TENTACOOL
-	db 10,TENTACOOL
-	db 15,TENTACOOL
-	db 5,TENTACOOL
-	db 10,TENTACOOL
-	db 15,TENTACOOL
-	db 20,TENTACOOL
-	db 30,TENTACOOL
-	db 35,TENTACOOL
-	db 40,TENTACOOL
+	db 0 ; water encounter rate
+
+	db 5 ; grass encounter rate
+	db  5, TENTACOOL
+	db 10, TENTACOOL
+	db 15, TENTACOOL
+	db  5, TENTACOOL
+	db 10, TENTACOOL
+	db 15, TENTACOOL
+	db 20, TENTACOOL
+	db 30, TENTACOOL
+	db 35, TENTACOOL
+	db 40, TENTACOOL
--- a/data/wild/maps/SeafoamIslands1F.asm
+++ b/data/wild/maps/SeafoamIslands1F.asm
@@ -1,27 +1,27 @@
 IslandMons1:
-	db $0F
-	IF DEF(_RED)
-		db 30,SEEL
-		db 30,SLOWPOKE
-		db 30,SHELLDER
-		db 30,HORSEA
-		db 28,HORSEA
-		db 21,ZUBAT
-		db 29,GOLBAT
-		db 28,PSYDUCK
-		db 28,SHELLDER
-		db 38,GOLDUCK
-	ENDC
-	IF DEF(_BLUE)
-		db 30,SEEL
-		db 30,PSYDUCK
-		db 30,STARYU
-		db 30,KRABBY
-		db 28,KRABBY
-		db 21,ZUBAT
-		db 29,GOLBAT
-		db 28,SLOWPOKE
-		db 28,STARYU
-		db 38,SLOWBRO
-	ENDC
-	db $00
+	db 15 ; grass encounter rate
+	db 30, SEEL
+IF DEF(_RED)
+	db 30, SLOWPOKE
+	db 30, SHELLDER
+	db 30, HORSEA
+	db 28, HORSEA
+	db 21, ZUBAT
+	db 29, GOLBAT
+	db 28, PSYDUCK
+	db 28, SHELLDER
+	db 38, GOLDUCK
+ENDC
+IF DEF(_BLUE)
+	db 30, PSYDUCK
+	db 30, STARYU
+	db 30, KRABBY
+	db 28, KRABBY
+	db 21, ZUBAT
+	db 29, GOLBAT
+	db 28, SLOWPOKE
+	db 28, STARYU
+	db 38, SLOWBRO
+ENDC
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/SeafoamIslandsB1F.asm
+++ b/data/wild/maps/SeafoamIslandsB1F.asm
@@ -1,27 +1,28 @@
 IslandMonsB1:
-	db $0A
-	IF DEF(_RED)
-		db 30,STARYU
-		db 30,HORSEA
-		db 32,SHELLDER
-		db 32,HORSEA
-		db 28,SLOWPOKE
-		db 30,SEEL
-		db 30,SLOWPOKE
-		db 28,SEEL
-		db 38,DEWGONG
-		db 37,SEADRA
-	ENDC
-	IF DEF(_BLUE)
-		db 30,SHELLDER
-		db 30,KRABBY
-		db 32,STARYU
-		db 32,KRABBY
-		db 28,PSYDUCK
-		db 30,SEEL
-		db 30,PSYDUCK
-		db 28,SEEL
-		db 38,DEWGONG
-		db 37,KINGLER
-	ENDC
-	db $00
+	db 10 ; grass encounter rate
+IF DEF(_RED)
+	db 30, STARYU
+	db 30, HORSEA
+	db 32, SHELLDER
+	db 32, HORSEA
+	db 28, SLOWPOKE
+	db 30, SEEL
+	db 30, SLOWPOKE
+	db 28, SEEL
+	db 38, DEWGONG
+	db 37, SEADRA
+ENDC
+IF DEF(_BLUE)
+	db 30, SHELLDER
+	db 30, KRABBY
+	db 32, STARYU
+	db 32, KRABBY
+	db 28, PSYDUCK
+	db 30, SEEL
+	db 30, PSYDUCK
+	db 28, SEEL
+	db 38, DEWGONG
+	db 37, KINGLER
+ENDC
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/SeafoamIslandsB2F.asm
+++ b/data/wild/maps/SeafoamIslandsB2F.asm
@@ -1,27 +1,27 @@
 IslandMonsB2:
-	db $0A
-	IF DEF(_RED)
-		db 30,SEEL
-		db 30,SLOWPOKE
-		db 32,SEEL
-		db 32,SLOWPOKE
-		db 28,HORSEA
-		db 30,STARYU
-		db 30,HORSEA
-		db 28,SHELLDER
-		db 30,GOLBAT
-		db 37,SLOWBRO
-	ENDC
-	IF DEF(_BLUE)
-		db 30,SEEL
-		db 30,PSYDUCK
-		db 32,SEEL
-		db 32,PSYDUCK
-		db 28,KRABBY
-		db 30,SHELLDER
-		db 30,KRABBY
-		db 28,STARYU
-		db 30,GOLBAT
-		db 37,GOLDUCK
-	ENDC
-	db $00
+	db 10 ; grass encounter rate
+	db 30, SEEL
+IF DEF(_RED)
+	db 30, SLOWPOKE
+	db 32, SEEL
+	db 32, SLOWPOKE
+	db 28, HORSEA
+	db 30, STARYU
+	db 30, HORSEA
+	db 28, SHELLDER
+	db 30, GOLBAT
+	db 37, SLOWBRO
+ENDC
+IF DEF(_BLUE)
+	db 30, PSYDUCK
+	db 32, SEEL
+	db 32, PSYDUCK
+	db 28, KRABBY
+	db 30, SHELLDER
+	db 30, KRABBY
+	db 28, STARYU
+	db 30, GOLBAT
+	db 37, GOLDUCK
+ENDC
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/SeafoamIslandsB3F.asm
+++ b/data/wild/maps/SeafoamIslandsB3F.asm
@@ -1,27 +1,27 @@
 IslandMonsB3:
-	db $0A
-	IF DEF(_RED)
-		db 31,SLOWPOKE
-		db 31,SEEL
-		db 33,SLOWPOKE
-		db 33,SEEL
-		db 29,HORSEA
-		db 31,SHELLDER
-		db 31,HORSEA
-		db 29,SHELLDER
-		db 39,SEADRA
-		db 37,DEWGONG
-	ENDC
-	IF DEF(_BLUE)
-		db 31,PSYDUCK
-		db 31,SEEL
-		db 33,PSYDUCK
-		db 33,SEEL
-		db 29,KRABBY
-		db 31,STARYU
-		db 31,KRABBY
-		db 29,STARYU
-		db 39,KINGLER
-		db 37,DEWGONG
-	ENDC
-	db $00
+	db 10 ; grass encounter rate
+IF DEF(_RED)
+	db 31, SLOWPOKE
+	db 31, SEEL
+	db 33, SLOWPOKE
+	db 33, SEEL
+	db 29, HORSEA
+	db 31, SHELLDER
+	db 31, HORSEA
+	db 29, SHELLDER
+	db 39, SEADRA
+ENDC
+IF DEF(_BLUE)
+	db 31, PSYDUCK
+	db 31, SEEL
+	db 33, PSYDUCK
+	db 33, SEEL
+	db 29, KRABBY
+	db 31, STARYU
+	db 31, KRABBY
+	db 29, STARYU
+	db 39, KINGLER
+ENDC
+	db 37, DEWGONG
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/SeafoamIslandsB4F.asm
+++ b/data/wild/maps/SeafoamIslandsB4F.asm
@@ -1,27 +1,27 @@
 IslandMonsB4:
-	db $0A
-	IF DEF(_RED)
-		db 31,HORSEA
-		db 31,SHELLDER
-		db 33,HORSEA
-		db 33,SHELLDER
-		db 29,SLOWPOKE
-		db 31,SEEL
-		db 31,SLOWPOKE
-		db 29,SEEL
-		db 39,SLOWBRO
-		db 32,GOLBAT
-	ENDC
-	IF DEF(_BLUE)
-		db 31,KRABBY
-		db 31,STARYU
-		db 33,KRABBY
-		db 33,STARYU
-		db 29,PSYDUCK
-		db 31,SEEL
-		db 31,PSYDUCK
-		db 29,SEEL
-		db 39,GOLDUCK
-		db 32,GOLBAT
-	ENDC
-	db $00
+	db 10 ; grass encounter rate
+IF DEF(_RED)
+	db 31, HORSEA
+	db 31, SHELLDER
+	db 33, HORSEA
+	db 33, SHELLDER
+	db 29, SLOWPOKE
+	db 31, SEEL
+	db 31, SLOWPOKE
+	db 29, SEEL
+	db 39, SLOWBRO
+ENDC
+IF DEF(_BLUE)
+	db 31, KRABBY
+	db 31, STARYU
+	db 33, KRABBY
+	db 33, STARYU
+	db 29, PSYDUCK
+	db 31, SEEL
+	db 31, PSYDUCK
+	db 29, SEEL
+	db 39, GOLDUCK
+ENDC
+	db 32, GOLBAT
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/VictoryRoad1F.asm
+++ b/data/wild/maps/VictoryRoad1F.asm
@@ -1,13 +1,14 @@
 PlateauMons1:
-	db $0F
-	db 24,MACHOP
-	db 26,GEODUDE
-	db 22,ZUBAT
-	db 36,ONIX
-	db 39,ONIX
-	db 42,ONIX
-	db 41,GRAVELER
-	db 41,GOLBAT
-	db 42,MACHOKE
-	db 43,MAROWAK
-	db $00
+	db 15 ; grass encounter rate
+	db 24, MACHOP
+	db 26, GEODUDE
+	db 22, ZUBAT
+	db 36, ONIX
+	db 39, ONIX
+	db 42, ONIX
+	db 41, GRAVELER
+	db 41, GOLBAT
+	db 42, MACHOKE
+	db 43, MAROWAK
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/VictoryRoad2F.asm
+++ b/data/wild/maps/VictoryRoad2F.asm
@@ -1,13 +1,14 @@
 PlateauMons2:
-	db $0A
-	db 22,MACHOP
-	db 24,GEODUDE
-	db 26,ZUBAT
-	db 36,ONIX
-	db 39,ONIX
-	db 42,ONIX
-	db 41,MACHOKE
-	db 40,GOLBAT
-	db 40,MAROWAK
-	db 43,GRAVELER
-	db $00
+	db 10 ; grass encounter rate
+	db 22, MACHOP
+	db 24, GEODUDE
+	db 26, ZUBAT
+	db 36, ONIX
+	db 39, ONIX
+	db 42, ONIX
+	db 41, MACHOKE
+	db 40, GOLBAT
+	db 40, MAROWAK
+	db 43, GRAVELER
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/VictoryRoad3F.asm
+++ b/data/wild/maps/VictoryRoad3F.asm
@@ -1,13 +1,14 @@
 PlateauMons3:
-	db $0F
-	db 24,MACHOP
-	db 26,GEODUDE
-	db 22,ZUBAT
-	db 42,ONIX
-	db 40,VENOMOTH
-	db 45,ONIX
-	db 43,GRAVELER
-	db 41,GOLBAT
-	db 42,MACHOKE
-	db 45,MACHOKE
-	db $00
+	db 15 ; grass encounter rate
+	db 24, MACHOP
+	db 26, GEODUDE
+	db 22, ZUBAT
+	db 42, ONIX
+	db 40, VENOMOTH
+	db 45, ONIX
+	db 43, GRAVELER
+	db 41, GOLBAT
+	db 42, MACHOKE
+	db 45, MACHOKE
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/ViridianForest.asm
+++ b/data/wild/maps/ViridianForest.asm
@@ -1,25 +1,26 @@
 ForestMons:
-	db $08
-	IF DEF(_RED)
-		db 4,WEEDLE
-		db 5,KAKUNA
-		db 3,WEEDLE
-		db 5,WEEDLE
-		db 4,KAKUNA
-		db 6,KAKUNA
-		db 4,METAPOD
-		db 3,CATERPIE
-	ENDC
-	IF DEF(_BLUE)
-		db 4,CATERPIE
-		db 5,METAPOD
-		db 3,CATERPIE
-		db 5,CATERPIE
-		db 4,METAPOD
-		db 6,METAPOD
-		db 4,KAKUNA
-		db 3,WEEDLE
-	ENDC
-	db 3,PIKACHU
-	db 5,PIKACHU
-	db $00
+	db 8 ; grass encounter rate
+IF DEF(_RED)
+	db  4, WEEDLE
+	db  5, KAKUNA
+	db  3, WEEDLE
+	db  5, WEEDLE
+	db  4, KAKUNA
+	db  6, KAKUNA
+	db  4, METAPOD
+	db  3, CATERPIE
+ENDC
+IF DEF(_BLUE)
+	db  4, CATERPIE
+	db  5, METAPOD
+	db  3, CATERPIE
+	db  5, CATERPIE
+	db  4, METAPOD
+	db  6, METAPOD
+	db  4, KAKUNA
+	db  3, WEEDLE
+ENDC
+	db  3, PIKACHU
+	db  5, PIKACHU
+
+	db 0 ; water encounter rate
--- a/data/wild/maps/nothing.asm
+++ b/data/wild/maps/nothing.asm
@@ -1,3 +1,4 @@
 NoMons:
-	db $00
-	db $00
+	db 0 ; grass encounter rate
+
+	db 0 ; water encounter rate
--- a/data/wild/probabilities.asm
+++ b/data/wild/probabilities.asm
@@ -3,13 +3,13 @@
 ; those 10 slots is. A random number is generated and then the first byte of each pair in this
 ; table is compared against that random number. If the random number is less than or equal
 ; to the first byte, then that slot is chosen.  The second byte is double the slot number.
-	db $32, $00 ; 51/256 = 19.9% chance of slot 0
-	db $65, $02 ; 51/256 = 19.9% chance of slot 1
-	db $8C, $04 ; 39/256 = 15.2% chance of slot 2
-	db $A5, $06 ; 25/256 =  9.8% chance of slot 3
-	db $BE, $08 ; 25/256 =  9.8% chance of slot 4
-	db $D7, $0A ; 25/256 =  9.8% chance of slot 5
-	db $E4, $0C ; 13/256 =  5.1% chance of slot 6
-	db $F1, $0E ; 13/256 =  5.1% chance of slot 7
-	db $FC, $10 ; 11/256 =  4.3% chance of slot 8
-	db $FF, $12 ;  3/256 =  1.2% chance of slot 9
+	db  50, $00 ; 51/256 = 19.9% chance of slot 0
+	db 101, $02 ; 51/256 = 19.9% chance of slot 1
+	db 140, $04 ; 39/256 = 15.2% chance of slot 2
+	db 165, $06 ; 25/256 =  9.8% chance of slot 3
+	db 190, $08 ; 25/256 =  9.8% chance of slot 4
+	db 215, $0A ; 25/256 =  9.8% chance of slot 5
+	db 228, $0C ; 13/256 =  5.1% chance of slot 6
+	db 241, $0E ; 13/256 =  5.1% chance of slot 7
+	db 252, $10 ; 11/256 =  4.3% chance of slot 8
+	db 255, $12 ;  3/256 =  1.2% chance of slot 9
--- a/data/wild/super_rod.asm
+++ b/data/wild/super_rod.asm
@@ -1,100 +1,101 @@
-; super rod data
-; format: map, pointer to fishing group
+; super rod encounters
 SuperRodData:
-	dbw PALLET_TOWN, FishingGroup1
-	dbw VIRIDIAN_CITY, FishingGroup1
-	dbw CERULEAN_CITY, FishingGroup3
-	dbw VERMILION_CITY, FishingGroup4
-	dbw CELADON_CITY, FishingGroup5
-	dbw FUCHSIA_CITY, FishingGroup10
-	dbw CINNABAR_ISLAND, FishingGroup8
-	dbw ROUTE_4, FishingGroup3
-	dbw ROUTE_6, FishingGroup4
-	dbw ROUTE_10, FishingGroup5
-	dbw ROUTE_11, FishingGroup4
-	dbw ROUTE_12, FishingGroup7
-	dbw ROUTE_13, FishingGroup7
-	dbw ROUTE_17, FishingGroup7
-	dbw ROUTE_18, FishingGroup7
-	dbw ROUTE_19, FishingGroup8
-	dbw ROUTE_20, FishingGroup8
-	dbw ROUTE_21, FishingGroup8
-	dbw ROUTE_22, FishingGroup2
-	dbw ROUTE_23, FishingGroup9
-	dbw ROUTE_24, FishingGroup3
-	dbw ROUTE_25, FishingGroup3
-	dbw CERULEAN_GYM, FishingGroup3
-	dbw VERMILION_DOCK, FishingGroup4
-	dbw SEAFOAM_ISLANDS_B3F, FishingGroup8
-	dbw SEAFOAM_ISLANDS_B4F, FishingGroup8
-	dbw SAFARI_ZONE_EAST, FishingGroup6
-	dbw SAFARI_ZONE_NORTH, FishingGroup6
-	dbw SAFARI_ZONE_WEST, FishingGroup6
-	dbw SAFARI_ZONE_CENTER, FishingGroup6
-	dbw CERULEAN_CAVE_2F, FishingGroup9
-	dbw CERULEAN_CAVE_B1F, FishingGroup9
-	dbw CERULEAN_CAVE_1F, FishingGroup9
-	db $FF
+; map, fishing group
+	dbw PALLET_TOWN,         .Group1
+	dbw VIRIDIAN_CITY,       .Group1
+	dbw CERULEAN_CITY,       .Group3
+	dbw VERMILION_CITY,      .Group4
+	dbw CELADON_CITY,        .Group5
+	dbw FUCHSIA_CITY,        .Group10
+	dbw CINNABAR_ISLAND,     .Group8
+	dbw ROUTE_4,             .Group3
+	dbw ROUTE_6,             .Group4
+	dbw ROUTE_10,            .Group5
+	dbw ROUTE_11,            .Group4
+	dbw ROUTE_12,            .Group7
+	dbw ROUTE_13,            .Group7
+	dbw ROUTE_17,            .Group7
+	dbw ROUTE_18,            .Group7
+	dbw ROUTE_19,            .Group8
+	dbw ROUTE_20,            .Group8
+	dbw ROUTE_21,            .Group8
+	dbw ROUTE_22,            .Group2
+	dbw ROUTE_23,            .Group9
+	dbw ROUTE_24,            .Group3
+	dbw ROUTE_25,            .Group3
+	dbw CERULEAN_GYM,        .Group3
+	dbw VERMILION_DOCK,      .Group4
+	dbw SEAFOAM_ISLANDS_B3F, .Group8
+	dbw SEAFOAM_ISLANDS_B4F, .Group8
+	dbw SAFARI_ZONE_EAST,    .Group6
+	dbw SAFARI_ZONE_NORTH,   .Group6
+	dbw SAFARI_ZONE_WEST,    .Group6
+	dbw SAFARI_ZONE_CENTER,  .Group6
+	dbw CERULEAN_CAVE_2F,    .Group9
+	dbw CERULEAN_CAVE_B1F,   .Group9
+	dbw CERULEAN_CAVE_1F,    .Group9
+	db -1 ; end
 
 ; fishing groups
 ; number of monsters, followed by level/monster pairs
-FishingGroup1:
+
+.Group1:
 	db 2
-	db 15,TENTACOOL
-	db 15,POLIWAG
+	db 15, TENTACOOL
+	db 15, POLIWAG
 
-FishingGroup2:
+.Group2:
 	db 2
-	db 15,GOLDEEN
-	db 15,POLIWAG
+	db 15, GOLDEEN
+	db 15, POLIWAG
 
-FishingGroup3:
+.Group3:
 	db 3
-	db 15,PSYDUCK
-	db 15,GOLDEEN
-	db 15,KRABBY
+	db 15, PSYDUCK
+	db 15, GOLDEEN
+	db 15, KRABBY
 
-FishingGroup4:
+.Group4:
 	db 2
-	db 15,KRABBY
-	db 15,SHELLDER
+	db 15, KRABBY
+	db 15, SHELLDER
 
-FishingGroup5:
+.Group5:
 	db 2
-	db 23,POLIWHIRL
-	db 15,SLOWPOKE
+	db 23, POLIWHIRL
+	db 15, SLOWPOKE
 
-FishingGroup6:
+.Group6:
 	db 4
-	db 15,DRATINI
-	db 15,KRABBY
-	db 15,PSYDUCK
-	db 15,SLOWPOKE
+	db 15, DRATINI
+	db 15, KRABBY
+	db 15, PSYDUCK
+	db 15, SLOWPOKE
 
-FishingGroup7:
+.Group7:
 	db 4
-	db 5,TENTACOOL
-	db 15,KRABBY
-	db 15,GOLDEEN
-	db 15,MAGIKARP
+	db 5, TENTACOOL
+	db 15, KRABBY
+	db 15, GOLDEEN
+	db 15, MAGIKARP
 
-FishingGroup8:
+.Group8:
 	db 4
-	db 15,STARYU
-	db 15,HORSEA
-	db 15,SHELLDER
-	db 15,GOLDEEN
+	db 15, STARYU
+	db 15, HORSEA
+	db 15, SHELLDER
+	db 15, GOLDEEN
 
-FishingGroup9:
+.Group9:
 	db 4
-	db 23,SLOWBRO
-	db 23,SEAKING
-	db 23,KINGLER
-	db 23,SEADRA
+	db 23, SLOWBRO
+	db 23, SEAKING
+	db 23, KINGLER
+	db 23, SEADRA
 
-FishingGroup10:
+.Group10:
 	db 4
-	db 23,SEAKING
-	db 15,KRABBY
-	db 15,GOLDEEN
-	db 15,MAGIKARP
+	db 23, SEAKING
+	db 15, KRABBY
+	db 15, GOLDEEN
+	db 15, MAGIKARP
--- a/engine/battle/core.asm
+++ b/engine/battle/core.asm
@@ -3954,16 +3954,16 @@
 .monIsTraded
 ; what level might disobey?
 	ld hl, wObtainedBadges
-	bit 7, [hl]
+	bit BIT_EARTHBADGE, [hl]
 	ld a, 101
 	jr nz, .next
-	bit 5, [hl]
+	bit BIT_MARSHBADGE, [hl]
 	ld a, 70
 	jr nz, .next
-	bit 3, [hl]
+	bit BIT_RAINBOWBADGE, [hl]
 	ld a, 50
 	jr nz, .next
-	bit 1, [hl]
+	bit BIT_CASCADEBADGE, [hl]
 	ld a, 30
 	jr nz, .next
 	ld a, 10
--- a/engine/debug/test_battle.asm
+++ b/engine/debug/test_battle.asm
@@ -6,7 +6,7 @@
 
 	; Don't mess around
 	; with obedience.
-	ld a, %10000000 ; EARTHBADGE
+	ld a, 1 << BIT_EARTHBADGE
 	ld [wObtainedBadges], a
 
 	ld hl, wFlags_D733
--- a/engine/events/hidden_items.asm
+++ b/engine/events/hidden_items.asm
@@ -142,7 +142,7 @@
 .loop
 	inc c
 	ld a, [hli]
-	cp $ff ; end of the list?
+	cp -1 ; end of the list?
 	ret z  ; if so, we're done here
 	cp b
 	jr nz, .next1
--- a/engine/gfx/palettes.asm
+++ b/engine/gfx/palettes.asm
@@ -208,7 +208,7 @@
 	ld de, BadgeBlkDataLengths
 	ld hl, wTrainerCardBlkPacket + 2
 	ld a, [wObtainedBadges]
-	ld c, 8
+	ld c, NUM_BADGES
 .badgeLoop
 	srl a
 	push af
--- a/engine/menus/draw_badges.asm
+++ b/engine/menus/draw_badges.asm
@@ -8,12 +8,12 @@
 ; Tile ids for face/badge graphics.
 	ld de, wBadgeOrFaceTiles
 	ld hl, .FaceBadgeTiles
-	ld bc, 8
+	ld bc, NUM_BADGES
 	call CopyData
 
 ; Booleans for each badge.
 	ld hl, wTempObtainedBadgesBooleans
-	ld bc, 8
+	ld bc, NUM_BADGES
 	xor a
 	call FillMemory
 
@@ -22,7 +22,7 @@
 	ld hl, wBadgeOrFaceTiles
 	ld a, [wObtainedBadges]
 	ld b, a
-	ld c, 8
+	ld c, NUM_BADGES
 .CheckBadge
 	srl b
 	jr nc, .NextBadge
@@ -92,7 +92,7 @@
 	push bc
 	ld hl, wBadgeOrFaceTiles + 1
 	ld de, wBadgeOrFaceTiles
-	ld bc, 8
+	ld bc, NUM_BADGES
 	call CopyData
 	pop bc
 
--- a/engine/menus/party_menu.asm
+++ b/engine/menus/party_menu.asm
@@ -1,22 +1,3 @@
-; [wPartyMenuTypeOrMessageID] = menu type / message ID
-; if less than $F0, it is a menu type
-; menu types:
-; 00: normal pokemon menu (e.g. Start menu)
-; 01: use healing item on pokemon menu
-; 02: in-battle switch pokemon menu
-; 03: learn TM/HM menu
-; 04: swap pokemon positions menu
-; 05: use evolution stone on pokemon menu
-; otherwise, it is a message ID
-; f0: poison healed
-; f1: burn healed
-; f2: freeze healed
-; f3: sleep healed
-; f4: paralysis healed
-; f5: HP healed
-; f6: health returned
-; f7: revitalized
-; f8: leveled up
 DrawPartyMenu_::
 	xor a
 	ldh [hAutoBGTransferEnabled], a
@@ -197,7 +178,7 @@
 	push hl
 	set 6, [hl] ; turn off letter printing delay
 	ld a, [wPartyMenuTypeOrMessageID] ; message ID
-	cp $F0
+	cp FIRST_PARTY_MENU_TEXT_ID
 	jr nc, .printItemUseMessage
 	add a
 	ld hl, PartyMenuMessagePointers
--- a/engine/menus/start_sub_menus.asm
+++ b/engine/menus/start_sub_menus.asm
@@ -130,7 +130,7 @@
 	dw .teleport
 	dw .softboiled
 .fly
-	bit 2, a ; does the player have the Thunder Badge?
+	bit BIT_THUNDERBADGE, a
 	jp z, .newBadgeRequired
 	call CheckIfInOutsideMap
 	jr z, .canFly
@@ -150,7 +150,7 @@
 	set 1, [hl]
 	jp StartMenu_Pokemon
 .cut
-	bit 1, a ; does the player have the Cascade Badge?
+	bit BIT_CASCADEBADGE, a
 	jp z, .newBadgeRequired
 	predef UsedCut
 	ld a, [wActionResultOrTookBattleTurn]
@@ -158,7 +158,7 @@
 	jp z, .loop
 	jp CloseTextDisplay
 .surf
-	bit 4, a ; does the player have the Soul Badge?
+	bit BIT_SOULBADGE, a
 	jp z, .newBadgeRequired
 	farcall IsSurfingAllowed
 	ld hl, wd728
@@ -175,13 +175,13 @@
 	call GBPalWhiteOutWithDelay3
 	jp .goBackToMap
 .strength
-	bit 3, a ; does the player have the Rainbow Badge?
+	bit BIT_RAINBOWBADGE, a
 	jp z, .newBadgeRequired
 	predef PrintStrengthTxt
 	call GBPalWhiteOutWithDelay3
 	jp .goBackToMap
 .flash
-	bit 0, a ; does the player have the Boulder Badge?
+	bit BIT_BOULDERBADGE, a
 	jp z, .newBadgeRequired
 	xor a
 	ld [wMapPalOffset], a
--- a/macros/coords.asm
+++ b/macros/coords.asm
@@ -48,6 +48,12 @@
 	ld \1, wOverworldMap + ((\2) + 3) + (((\3) + 3) * ((\4) + (3 * 2)))
 ENDM
 
+event_displacement: MACRO
+; map width, x blocks, y blocks
+	dw (wOverworldMap + 7 + (\1) + ((\1) + 6) * ((\3) >> 1) + ((\2) >> 1))
+	db \3, \2
+ENDM
+
 dwcoord: MACRO
 ; x, y
 	validate_coords \1, \2
--- a/macros/scripts/maps.asm
+++ b/macros/scripts/maps.asm
@@ -1,39 +1,3 @@
-;\1 map width
-;\2 Rows above (Y-blocks)
-;\3 X movement (X-blocks)
-EVENT_DISP: MACRO
-	dw (wOverworldMap + 7 + (\1) + ((\1) + 6) * ((\2) >> 1) + ((\3) >> 1)) ; Ev.Disp
-	db \2,\3 ;Y,X
-ENDM
-
-FLYWARP_DATA: MACRO
-	EVENT_DISP \1,\2,\3
-	db ((\2) & $01) ;sub-block Y
-	db ((\3) & $01) ;sub-block X
-ENDM
-
-; external map entry macro
-EMAP: MACRO ; emap x-coordinate,y-coordinate,textpointer
-; the appearance of towns and routes in the town map, indexed by map id
-	; nybble: y-coordinate
-	; nybble: x-coordinate
-	; word  : pointer to map name
-	dn \2, \1
-	dw \3
-ENDM
-
-; internal map entry macro
-IMAP: MACRO ; imap mapid_less_than,x-coordinate,y-coordinate,textpointer
-; the appearance of buildings and dungeons in the town map
-	; byte  : maximum map id subject to this rule
-	; nybble: y-coordinate
-	; nybble: x-coordinate
-	; word  : pointer to map name
-	db \1 + 1
-	dn \3, \2
-	dw \4
-ENDM
-
 ;\1 sprite id
 ;\2 x position
 ;\3 y position
@@ -49,17 +13,15 @@
 	db \2 + 4
 	db \4
 	db \5
-	IF (_NARG > 7)
+	IF _NARG > 7
 		db TRAINER | \6
 		db \7
 		db \8
+	ELIF _NARG > 6
+		db ITEM | \6
+		db \7
 	ELSE
-		IF (_NARG > 6)
-			db ITEM | \6
-			db \7
-		ELSE
-			db \6
-		ENDC
+		db \6
 	ENDC
 ENDM
 
@@ -82,7 +44,7 @@
 ;\2 y position
 ;\3 map width
 warp_to: MACRO
-	EVENT_DISP \3, \2, \1
+	event_displacement \3, \1, \2
 ENDM
 
 ;\1 map name
--- a/scripts/CeladonGym.asm
+++ b/scripts/CeladonGym.asm
@@ -61,9 +61,9 @@
 	call DisplayTextID
 .gymVictory
 	ld hl, wObtainedBadges
-	set 3, [hl]
+	set BIT_RAINBOWBADGE, [hl]
 	ld hl, wBeatGymFlags
-	set 3, [hl]
+	set BIT_RAINBOWBADGE, [hl]
 
 	; deactivate gym trainers
 	SetEventRange EVENT_BEAT_CELADON_GYM_TRAINER_0, EVENT_BEAT_CELADON_GYM_TRAINER_6
--- a/scripts/CeruleanGym.asm
+++ b/scripts/CeruleanGym.asm
@@ -61,9 +61,9 @@
 	call DisplayTextID
 .gymVictory
 	ld hl, wObtainedBadges
-	set 1, [hl]
+	set BIT_CASCADEBADGE, [hl]
 	ld hl, wBeatGymFlags
-	set 1, [hl]
+	set BIT_CASCADEBADGE, [hl]
 
 	; deactivate gym trainers
 	SetEvents EVENT_BEAT_CERULEAN_GYM_TRAINER_0, EVENT_BEAT_CERULEAN_GYM_TRAINER_1
--- a/scripts/CinnabarGym.asm
+++ b/scripts/CinnabarGym.asm
@@ -158,9 +158,9 @@
 	call DisplayTextID
 .gymVictory
 	ld hl, wObtainedBadges
-	set 6, [hl]
+	set BIT_VOLCANOBADGE, [hl]
 	ld hl, wBeatGymFlags
-	set 6, [hl]
+	set BIT_VOLCANOBADGE, [hl]
 
 	; deactivate gym trainers
 	SetEventRange EVENT_BEAT_CINNABAR_GYM_TRAINER_0, EVENT_BEAT_CINNABAR_GYM_TRAINER_6
--- a/scripts/FuchsiaGym.asm
+++ b/scripts/FuchsiaGym.asm
@@ -61,9 +61,9 @@
 	call DisplayTextID
 .gymVictory
 	ld hl, wObtainedBadges
-	set 4, [hl]
+	set BIT_SOULBADGE, [hl]
 	ld hl, wBeatGymFlags
-	set 4, [hl]
+	set BIT_SOULBADGE, [hl]
 
 	; deactivate gym trainers
 	SetEventRange EVENT_BEAT_FUCHSIA_GYM_TRAINER_0, EVENT_BEAT_FUCHSIA_GYM_TRAINER_5
--- a/scripts/PewterGym.asm
+++ b/scripts/PewterGym.asm
@@ -61,9 +61,9 @@
 	call DisplayTextID
 .gymVictory
 	ld hl, wObtainedBadges
-	set 0, [hl]
+	set BIT_BOULDERBADGE, [hl]
 	ld hl, wBeatGymFlags
-	set 0, [hl]
+	set BIT_BOULDERBADGE, [hl]
 
 	ld a, HS_GYM_GUY
 	ld [wMissableObjectIndex], a
@@ -183,7 +183,7 @@
 PewterGymText3:
 	text_asm
 	ld a, [wBeatGymFlags]
-	bit 0, a
+	bit BIT_BOULDERBADGE, a
 	jr nz, .asm_5c50c
 	ld hl, PewterGymText_5c515
 	call PrintText
--- a/scripts/SaffronGym.asm
+++ b/scripts/SaffronGym.asm
@@ -61,9 +61,9 @@
 	call DisplayTextID
 .gymVictory
 	ld hl, wObtainedBadges
-	set 5, [hl]
+	set BIT_MARSHBADGE, [hl]
 	ld hl, wBeatGymFlags
-	set 5, [hl]
+	set BIT_MARSHBADGE, [hl]
 
 	; deactivate gym trainers
 	SetEventRange EVENT_BEAT_SAFFRON_GYM_TRAINER_0, EVENT_BEAT_SAFFRON_GYM_TRAINER_6
--- a/scripts/VermilionGym.asm
+++ b/scripts/VermilionGym.asm
@@ -80,9 +80,9 @@
 	call DisplayTextID
 .gymVictory
 	ld hl, wObtainedBadges
-	set 2, [hl]
+	set BIT_THUNDERBADGE, [hl]
 	ld hl, wBeatGymFlags
-	set 2, [hl]
+	set BIT_THUNDERBADGE, [hl]
 
 	; deactivate gym trainers
 	SetEventRange EVENT_BEAT_VERMILION_GYM_TRAINER_0, EVENT_BEAT_VERMILION_GYM_TRAINER_2
@@ -247,7 +247,7 @@
 VermilionGymFanText:
 	text_asm
 	ld a, [wBeatGymFlags]
-	bit 2, a
+	bit BIT_THUNDERBADGE, a
 	jr nz, .afterBeat
 	ld hl, VermilionGymFanPreBattleText
 	call PrintText
--- a/scripts/ViridianGym.asm
+++ b/scripts/ViridianGym.asm
@@ -155,9 +155,9 @@
 	call DisplayTextID
 .gymVictory
 	ld hl, wObtainedBadges
-	set 7, [hl]
+	set BIT_EARTHBADGE, [hl]
 	ld hl, wBeatGymFlags
-	set 7, [hl]
+	set BIT_EARTHBADGE, [hl]
 
 	; deactivate gym trainers
 	SetEventRange EVENT_BEAT_VIRIDIAN_GYM_TRAINER_0, EVENT_BEAT_VIRIDIAN_GYM_TRAINER_7