shithub: pokecrystal

Download patch

ref: 11173a3807bde4e2d5b681717258b5b14f5f2d43
parent: 289d3dea86b82c4ce7eb7268ef33980688306587
parent: 5322b56a8357e5e5a8847f3329b52faa3f7016d8
author: yenatch <yenatch@gmail.com>
date: Thu Jan 28 20:00:48 EST 2016

Merge pull request #333 from PikalaxALT/master

Split base stats, rearrange wram.asm, naming screen

git/query: bad hash 3a6ef54a5e26644699b98d9b73998df5673f4e72
--- a/.gitattributes
+++ b/.gitattributes
@@ -2,10 +2,10 @@
 * -text
 
 # hexdump binary files
-*.png  diff=hex
-*.lz   diff=hex
-*.2bpp diff=hex
-*.1bpp diff=hex
-*.bin  diff=hex
-*.blk  diff=hex
+*.png  binary diff=hex
+*.lz   binary diff=hex
+*.2bpp binary diff=hex
+*.1bpp binary diff=hex
+*.bin  binary diff=hex
+*.blk  binary diff=hex
 
--- a/audio/engine.asm
+++ b/audio/engine.asm
@@ -1423,7 +1423,7 @@
 	dw Music_ToggleNoise ; music noise sampling
 	dw Music_Panning ; force panning
 	dw Music_Volume ; volume
-	dw Music_Tone ; tune
+	dw Music_Tone ; tone
 	dw MusicE7 ; unused
 	dw MusicE8 ; unused
 	dw Music_TempoRelative ; global tempo
@@ -2260,7 +2260,6 @@
 	add hl, bc
 	ld a, [hl]
 	and $f ; lo nybble
-	;
 	ld l, a ; ok
 	ld d, 0
 	ld h, d
--- a/battle/ai/items.asm
+++ b/battle/ai/items.asm
@@ -549,7 +549,7 @@
 	callba UpdateEnemyHUD
 	ld a, $1
 	ld [hBGMapMode], a
-	ld hl, wc6e6
+	ld hl, wEnemyItemState
 	dec [hl]
 	scf
 	ret
--- a/battle/ai/scoring.asm
+++ b/battle/ai/scoring.asm
@@ -982,7 +982,7 @@
 
 	push hl
 	callab CheckPlayerMoveTypeMatchups
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	cp 10 ; neutral
 	pop hl
 	ret c
@@ -1909,7 +1909,7 @@
 ; Otherwise, discourage this move unless the player only has not very effective moves against the enemy.	
 	push hl
 	callab CheckPlayerMoveTypeMatchups
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	cp $b ; not very effective
 	pop hl
 	ret nc
@@ -2170,7 +2170,7 @@
 
 	push hl
 	callab CheckPlayerMoveTypeMatchups
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	cp 10 ; 1.0
 	pop hl
 	ret c
@@ -2432,7 +2432,7 @@
 
 	push hl
 	callab CheckPlayerMoveTypeMatchups
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	cp 10 ; neutral
 	pop hl
 	ret c
--- a/battle/ai/switch.asm
+++ b/battle/ai/switch.asm
@@ -6,7 +6,7 @@
 	push de
 	push bc
 	ld a, 10
-	ld [wc716], a
+	ld [wEnemyAISwitchScore], a
 	ld hl, PlayerUsedMoves
 	ld a, [hl]
 	and a
@@ -167,17 +167,17 @@
 
 
 .DecreaseScore: ; 34931
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	dec a
-	ld [wc716], a
+	ld [wEnemyAISwitchScore], a
 	ret
 ; 34939
 
 
 .IncreaseScore: ; 34939
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	inc a
-	ld [wc716], a
+	ld [wEnemyAISwitchScore], a
 	ret
 ; 34941
 
@@ -206,7 +206,7 @@
 	cp 2
 	jr nz, .not_2
 
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	add $30
 	ld [wEnemySwitchMonParam], a
 	ret
@@ -230,7 +230,7 @@
 .no_perish
 
 	call CheckPlayerMoveTypeMatchups
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	cp 11
 	ret nc
 
@@ -239,13 +239,13 @@
 	jr z, .no_last_counter_move
 
 	call Function34a2a
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	and a
 	jr z, .no_last_counter_move
 
 	ld c, a
 	call Function34aa7
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	cp $ff
 	ret z
 
@@ -255,7 +255,7 @@
 	jr z, .not_2_again
 
 	call CheckPlayerMoveTypeMatchups
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	cp 10
 	ret nc
 
@@ -267,7 +267,7 @@
 .not_2_again
 	ld c, $10
 	call CheckPlayerMoveTypeMatchups
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	cp 10
 	jr nc, .okay
 	ld c, $20
@@ -280,7 +280,7 @@
 
 .no_last_counter_move
 	call CheckPlayerMoveTypeMatchups
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	cp 10
 	ret nc
 
@@ -293,7 +293,7 @@
 	cp $2
 	ret nz
 
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	add $10
 	ld [wEnemySwitchMonParam], a
 	ret
@@ -359,7 +359,7 @@
 	ld c, 1 << (PARTY_LENGTH - 1)
 	ld d, 0
 	xor a
-	ld [wc716], a
+	ld [wEnemyAISwitchScore], a
 
 .asm_34a39
 	ld a, [CurOTMon]
@@ -395,9 +395,9 @@
 	and a
 	jr nz, .asm_34a77
 
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	or c
-	ld [wc716], a
+	ld [wEnemyAISwitchScore], a
 .asm_34a77
 	pop hl
 	dec b
@@ -451,7 +451,7 @@
 Function34aa7: ; 34aa7
 
 	ld a, $ff
-	ld [wc716], a
+	ld [wEnemyAISwitchScore], a
 	ld hl, OTPartyMon1Moves
 	ld b, 1 << (PARTY_LENGTH - 1)
 	ld d, 0
@@ -540,7 +540,7 @@
 	jr nc, .loop2
 
 	ld a, c
-	ld [wc716], a
+	ld [wEnemyAISwitchScore], a
 	pop bc
 	ret
 ; 34b20
--- a/battle/bg_effects.asm
+++ b/battle/bg_effects.asm
@@ -748,7 +748,7 @@
 	jr z, .clear
 	cp -3
 	jr z, .skip
-	call .FillBox
+	call .PlaceGraphic
 .skip
 	call BattleBGEffects_IncrementJumptable
 	ld a, $1
@@ -798,7 +798,7 @@
 	pop bc
 	ret
 
-.FillBox
+.PlaceGraphic
 ; get dims
 	push bc
 	push hl
--- a/battle/core.asm
+++ b/battle/core.asm
@@ -3,7 +3,7 @@
 DoBattle: ; 3c000
 	xor a
 	ld [wBattleParticipantsNotFainted], a
-	ld [wc6fc], a
+	ld [wBattleParticipantsIncludingFainted], a
 	ld [wPlayerAction], a
 	ld [BattleEnded], a
 	inc a
@@ -1248,7 +1248,7 @@
 	res SUBSTATUS_PERISH, [hl]
 	ld a, [hBattleTurn]
 	and a
-	jr nz, .asm_3c85c
+	jr nz, .kill_enemy
 	ld hl, BattleMonHP
 	xor a
 	ld [hli], a
@@ -1261,7 +1261,7 @@
 	ld [hl], a
 	ret
 
-.asm_3c85c
+.kill_enemy
 	ld hl, EnemyMonHP
 	xor a
 	ld [hli], a
@@ -1334,12 +1334,12 @@
 	call GetSixteenthMaxHP
 	call SubtractHPFromUser
 	ld hl, BattleText_UsersHurtByStringBuffer1
-	jr .asm_3c8e1
+	jr .print_text
 
 .release_from_bounds
 	ld hl, BattleText_UserWasReleasedFromStringBuffer1
 
-.asm_3c8e1
+.print_text
 	jp StdBattleTextBox
 ; 3c8e4
 
@@ -1396,7 +1396,7 @@
 	call GetSixteenthMaxHP
 	call SwitchTurnCore
 	call RestoreHP
-	ld hl, BattleText_0x80880
+	ld hl, BattleText_TargetRecoveredWithItem
 	jp StdBattleTextBox
 ; 3c93c
 
@@ -1569,7 +1569,7 @@
 	cp $1
 	ret nz
 
-	ld hl, BattleText_0x808b6
+	ld hl, BattleText_TargetWasHitByFutureSight
 	call StdBattleTextBox
 
 	ld a, BATTLE_VARS_MOVE
@@ -1645,12 +1645,12 @@
 
 	ld a, [wBattleMode]
 	dec a
-	jr z, .asm_3caef
+	jr z, .wild
 	ld a, [CurOTMon]
 	ld hl, OTPartyMon1Status
 	call GetPartyLocation
 	ld [hl], 0
-.asm_3caef
+.wild
 
 	call UpdateBattleHuds
 	call SetPlayerTurn
@@ -1661,13 +1661,13 @@
 HandleSafeguard: ; 3cafb
 	ld a, [hLinkPlayerNumber]
 	cp $1
-	jr z, .asm_3cb06
-	call .asm_3cb09
-	jr .asm_3cb1c
+	jr z, .player1
+	call .CheckPlayer
+	jr .CheckEnemy
 
-.asm_3cb06
-	call .asm_3cb1c
-.asm_3cb09
+.player1
+	call .CheckEnemy
+.CheckPlayer
 	ld a, [PlayerScreens]
 	bit SCREENS_SAFEGUARD, a
 	ret z
@@ -1677,9 +1677,9 @@
 	res SCREENS_SAFEGUARD, a
 	ld [PlayerScreens], a
 	xor a
-	jr .asm_3cb2e
+	jr .print
 
-.asm_3cb1c
+.CheckEnemy
 	ld a, [EnemyScreens]
 	bit SCREENS_SAFEGUARD, a
 	ret z
@@ -1690,7 +1690,7 @@
 	ld [EnemyScreens], a
 	ld a, $1
 
-.asm_3cb2e
+.print
 	ld [hBattleTurn], a
 	ld hl, BattleText_SafeguardFaded
 	jp StdBattleTextBox
@@ -1712,7 +1712,7 @@
 	call .Copy
 	ld hl, PlayerScreens
 	ld de, PlayerLightScreenCount
-	jr .FadeScreens
+	jr .TickScreens
 
 .CheckEnemy
 	call SetEnemyTurn
@@ -1721,11 +1721,11 @@
 	ld hl, EnemyScreens
 	ld de, EnemyLightScreenCount
 
-.FadeScreens
+.TickScreens
 	bit SCREENS_LIGHT_SCREEN, [hl]
-	call nz, FadeLightScreen
+	call nz, .LightScreenTick
 	bit SCREENS_REFLECT, [hl]
-	call nz, FadeReflect
+	call nz, .ReflectTick
 	ret
 
 .Copy
@@ -1740,7 +1740,7 @@
 ; 3cb80
 
 
-FadeLightScreen: ; 3cb80
+.LightScreenTick: ; 3cb80
 	ld a, [de]
 	dec a
 	ld [de], a
@@ -1748,7 +1748,7 @@
 	res SCREENS_LIGHT_SCREEN, [hl]
 	push hl
 	push de
-	ld hl, BattleText_PkmnnLightScreenFell
+	ld hl, BattleText_PkmnLightScreenFell
 	call StdBattleTextBox
 	pop de
 	pop hl
@@ -1755,7 +1755,7 @@
 	ret
 ; 3cb91
 
-FadeReflect: ; 3cb91
+.ReflectTick: ; 3cb91
 	inc de
 	ld a, [de]
 	dec a
@@ -1762,7 +1762,7 @@
 	ld [de], a
 	ret nz
 	res SCREENS_REFLECT, [hl]
-	ld hl, BattleText_0x80905
+	ld hl, BattleText_PkmnReflectFaded
 	jp StdBattleTextBox
 ; 3cb9e
 
@@ -2110,8 +2110,8 @@
 	or [hl]
 	call z, FaintYourPokemon
 	xor a
-	ld [wc6f7], a
-	call Function3ce01
+	ld [wWhichMonFaintedFirst], a
+	call UpdateBattleStateAndExperienceAfterEnemyFaint
 	call CheckPlayerPartyForFitPkmn
 	ld a, d
 	and a
@@ -2158,7 +2158,7 @@
 
 	ld a, $1
 	ld [wPlayerAction], a
-	call Function3cf4a
+	call HandleEnemySwitch
 	jp z, WildFled_EnemyFled_LinkBattleCanceled
 	jr DoubleSwitch
 
@@ -2165,7 +2165,7 @@
 .player_mon_not_fainted
 	ld a, $1
 	ld [wPlayerAction], a
-	call Function3cf4a
+	call HandleEnemySwitch
 	jp z, WildFled_EnemyFled_LinkBattleCanceled
 	xor a
 	ld [wPlayerAction], a
@@ -2202,7 +2202,7 @@
 	ret
 ; 3ce01
 
-Function3ce01: ; 3ce01
+UpdateBattleStateAndExperienceAfterEnemyFaint: ; 3ce01
 	call UpdateBattleMonInParty
 	ld a, [wBattleMode]
 	dec a
@@ -2231,7 +2231,7 @@
 .wild2
 	call StopDangerSound
 	ld a, $1
-	ld [wc6fd], a
+	ld [wDanger], a
 
 .trainer
 	ld hl, BattleMonHP
@@ -2238,7 +2238,7 @@
 	ld a, [hli]
 	or [hl]
 	jr nz, .player_mon_did_not_faint
-	ld a, [wc6f7]
+	ld a, [wWhichMonFaintedFirst]
 	and a
 	jr nz, .player_mon_did_not_faint
 	call PlayerMonFaintHappinessMod
@@ -2256,10 +2256,10 @@
 	ld a, [wBattleResult]
 	and $c0
 	ld [wBattleResult], a
-	call DoOthersShareExperience
+	call IsAnyMonHoldingExpShare
 	jr z, .skip_exp
 	ld hl, EnemyMonBaseStats
-	ld b, $7
+	ld b, EnemyMonEnd - EnemyMonBaseStats
 .loop
 	srl [hl]
 	inc hl
@@ -2268,13 +2268,13 @@
 
 .skip_exp
 	ld hl, EnemyMonBaseStats
-	ld de, wc720
+	ld de, wBackupEnemyMonBaseStats
 	ld bc, EnemyMonEnd - EnemyMonBaseStats
 	call CopyBytes
 	xor a
-	ld [wc71f], a
+	ld [wGivingExperienceToExpShareHolders], a
 	call GiveExperiencePoints
-	call DoOthersShareExperience
+	call IsAnyMonHoldingExpShare
 	ret z
 
 	ld a, [wBattleParticipantsNotFainted]
@@ -2281,12 +2281,12 @@
 	push af
 	ld a, d
 	ld [wBattleParticipantsNotFainted], a
-	ld hl, wc720
+	ld hl, wBackupEnemyMonBaseStats
 	ld de, EnemyMonBaseStats
 	ld bc, EnemyMonEnd - EnemyMonBaseStats
 	call CopyBytes
 	ld a, $1
-	ld [wc71f], a
+	ld [wGivingExperienceToExpShareHolders], a
 	call GiveExperiencePoints
 	pop af
 	ld [wBattleParticipantsNotFainted], a
@@ -2293,7 +2293,7 @@
 	ret
 ; 3ceaa
 
-DoOthersShareExperience: ; 3ceaa
+IsAnyMonHoldingExpShare: ; 3ceaa
 	ld a, [PartyCount]
 	ld b, a
 	ld hl, PartyMon1
@@ -2406,7 +2406,7 @@
 	ret
 ; 3cf4a
 
-Function3cf4a: ; 3cf4a
+HandleEnemySwitch: ; 3cf4a
 	ld hl, EnemyHPPal
 	ld e, HP_BAR_LENGTH_PX
 	call UpdateHPPal
@@ -2442,15 +2442,13 @@
 	call BreakAttraction
 	pop af
 	and a
-	jr nz, .asm_3cf8f
-
+	jr nz, .set
 	call EnemySwitch
-	jr .asm_3cf92
+	jr .done_switch
 
-.asm_3cf8f
+.set
 	call EnemySwitch_SetMode
-
-.asm_3cf92
+.done_switch
 	call ResetBattleParticipants
 	call SetEnemyTurn
 	call SpikesDamage
@@ -2465,7 +2463,7 @@
 ; Player won the battle
 	call StopDangerSound
 	ld a, $1
-	ld [wc6fd], a
+	ld [wDanger], a
 	ld [BattleEnded], a
 	ld a, [wLinkMode]
 	and a
@@ -2499,7 +2497,7 @@
 	call PrintWinLossText
 
 .skip_win_loss_text
-	jp Function3d02b
+	jp HandleBattleReward
 
 .mobile
 	call BattleWinSlideInEnemyTrainerFrontpic
@@ -2528,7 +2526,7 @@
 	ret
 ; 3d02b
 
-Function3d02b: ; 3d02b
+HandleBattleReward: ; 3d02b
 	ld a, [wAmuletCoin]
 	and a
 	call nz, .DoubleReward
@@ -2682,7 +2680,7 @@
 	dec a
 	jr nz, .trainer_victory
 	push de
-	call DoOthersShareExperience
+	call IsAnyMonHoldingExpShare
 	pop de
 	jr nz, .play_music
 	ld hl, wPayDayMoney
@@ -2771,7 +2769,7 @@
 	or [hl]
 	call z, FaintEnemyPokemon
 	ld a, $1
-	ld [wc6f7], a
+	ld [wWhichMonFaintedFirst], a
 	call PlayerMonFaintHappinessMod
 	call CheckPlayerPartyForFitPkmn
 	ld a, d
@@ -2781,7 +2779,7 @@
 	ld a, [hli]
 	or [hl]
 	jr nz, .notfainted
-	call Function3ce01
+	call UpdateBattleStateAndExperienceAfterEnemyFaint
 	ld a, [wBattleMode]
 	dec a
 	jr nz, .trainer
@@ -2809,7 +2807,7 @@
 	ret nz
 	ld a, $1
 	ld [wPlayerAction], a
-	call Function3cf4a
+	call HandleEnemySwitch
 	jp z, WildFled_EnemyFled_LinkBattleCanceled
 	jp DoubleSwitch
 ; 3d1aa
@@ -2847,7 +2845,7 @@
 	and %11000000
 	add $1
 	ld [wBattleResult], a
-	ld a, [wc6f7]
+	ld a, [wWhichMonFaintedFirst]
 	and a
 	ret z
 	ret ; ??????????
@@ -2999,7 +2997,7 @@
 	ret
 ; 3d313
 
-Function3d313: ; 3d313
+JumpToPartyMenuAndPrintText: ; 3d313
 	callba WritePartyMenuTilemap
 	callba PrintPartyMenuText
 	call WaitBGMap
@@ -3008,7 +3006,7 @@
 	ret
 ; 3d329
 
-Function3d329: ; 3d329
+SelectBattleMon: ; 3d329
 	call IsMobileBattle
 	jr z, .mobile
 	callba PartyMenuSelect
@@ -3015,7 +3013,7 @@
 	ret
 
 .mobile
-	callba Function100cb5
+	callba Mobile_PartyMenuSelect
 	ret
 ; 3d33c
 
@@ -3023,8 +3021,8 @@
 .loop
 	ld a, $2 ; Which PKMN?
 	ld [PartyMenuActionText], a
-	call Function3d313
-	call Function3d329
+	call JumpToPartyMenuAndPrintText
+	call SelectBattleMon
 	ret c
 	call CheckIfPartyHasPkmnToBattleWith
 	jr z, .loop
@@ -3338,7 +3336,7 @@
 	; If we're here, then we're switching too
 	xor a
 	ld [wBattleParticipantsNotFainted], a
-	ld [wc6fc], a
+	ld [wBattleParticipantsIncludingFainted], a
 	ld [wPlayerAction], a
 	inc a
 	ld [wEnemyIsSwitching], a
@@ -3403,7 +3401,7 @@
 	ld [LastEnemyMove], a
 	ld [CurEnemyMove], a
 	dec a
-	ld [wc6e6], a
+	ld [wEnemyItemState], a
 	xor a
 	ld [wPlayerWrapCount], a
 	hlcoord 18, 0
@@ -3416,7 +3414,7 @@
 ResetBattleParticipants: ; 3d57a
 	xor a
 	ld [wBattleParticipantsNotFainted], a
-	ld [wc6fc], a
+	ld [wBattleParticipantsIncludingFainted], a
 AddBattleParticipant: ; 3d581
 	ld a, [CurBattleMon]
 	ld c, a
@@ -3425,7 +3423,7 @@
 	push bc
 	predef FlagPredef
 	pop bc
-	ld hl, wc6fc
+	ld hl, wBattleParticipantsIncludingFainted
 	predef_jump FlagPredef
 ; 3d599
 
@@ -3434,7 +3432,7 @@
 	ld a, $1
 	ld [Buffer1], a
 	ld [Buffer2], a
-.asm_3d5a3
+.loop
 	ld hl, Buffer1
 	sla [hl]
 	inc hl
@@ -3442,10 +3440,10 @@
 	inc b
 	ld a, [OTPartyCount]
 	cp b
-	jp z, Function3d672
+	jp z, ScoreMonTypeMatchups
 	ld a, [CurOTMon]
 	cp b
-	jr z, .asm_3d5d0
+	jr z, .discourage
 	ld hl, OTPartyMon1HP
 	push bc
 	ld a, b
@@ -3455,15 +3453,15 @@
 	ld a, [hl]
 	or c
 	pop bc
-	jr z, .asm_3d5d0
+	jr z, .discourage
 	call LookUpTheEffectivenessOfEveryMove
 	call IsThePlayerPkmnTypesEffectiveAgainstOTPkmn
-	jr .asm_3d5a3
+	jr .loop
 
-.asm_3d5d0
+.discourage
 	ld hl, Buffer2
 	set 0, [hl]
-	jr .asm_3d5a3
+	jr .loop
 ; 3d5d7
 
 LookUpTheEffectivenessOfEveryMove: ; 3d5d7
@@ -3517,7 +3515,7 @@
 	ld a, [hl]
 	dec a
 	ld hl, BaseData + 7 ; type
-	ld bc, $20
+	ld bc, BaseData1 - BaseData0
 	call AddNTimes
 	ld de, EnemyMonType
 	ld bc, 2
@@ -3529,80 +3527,80 @@
 	callab BattleCheckTypeMatchup
 	ld a, [wd265]
 	cp 10 + 1 ; 1.0 + 0.1
-	jr nc, .asm_3d663
+	jr nc, .super_effective
 	ld a, [BattleMonType2]
 	ld [wPlayerMoveStruct + MOVE_TYPE], a
 	callab BattleCheckTypeMatchup
 	ld a, [wd265]
 	cp 10 + 1 ; 1.0 + 0.1
-	jr nc, .asm_3d663
+	jr nc, .super_effective
 	pop bc
 	ret
 
-.asm_3d663
+.super_effective
 	pop bc
 	ld hl, Buffer1
 	bit 0, [hl]
-	jr nz, .asm_3d66f
+	jr nz, .reset
 	inc hl
 	set 0, [hl]
 	ret
 
-.asm_3d66f
+.reset
 	res 0, [hl]
 	ret
 ; 3d672
 
-Function3d672: ; 3d672
-.asm_3d672
+ScoreMonTypeMatchups: ; 3d672
+.loop1
 	ld hl, Buffer1
 	sla [hl]
 	inc hl
 	sla [hl]
-	jr nc, .asm_3d672
+	jr nc, .loop1
 	ld a, [OTPartyCount]
 	ld b, a
 	ld c, [hl]
-.asm_3d681
+.loop2
 	sla c
-	jr nc, .asm_3d68a
+	jr nc, .okay
 	dec b
-	jr z, .asm_3d6a7
-	jr .asm_3d681
+	jr z, .loop5
+	jr .loop2
 
-.asm_3d68a
+.okay
 	ld a, [Buffer1]
 	and a
-	jr z, .asm_3d69a
+	jr z, .okay2
 	ld b, $ff
 	ld c, a
-.asm_3d693
+.loop3
 	inc b
 	sla c
-	jr nc, .asm_3d693
-	jr .asm_3d6c9
+	jr nc, .loop3
+	jr .quit
 
-.asm_3d69a
+.okay2
 	ld b, $ff
 	ld a, [Buffer2]
 	ld c, a
-.asm_3d6a0
+.loop4
 	inc b
 	sla c
-	jr c, .asm_3d6a0
-	jr .asm_3d6c9
+	jr c, .loop4
+	jr .quit
 
-.asm_3d6a7
+.loop5
 	ld a, [OTPartyCount]
 	ld b, a
 	call BattleRandom
 	and $7
 	cp b
-	jr nc, .asm_3d6a7
+	jr nc, .loop5
 	ld b, a
 	ld a, [CurOTMon]
 	cp b
-	jr z, .asm_3d6a7
+	jr z, .loop5
 	ld hl, OTPartyMon1HP
 	push bc
 	ld a, b
@@ -3612,9 +3610,9 @@
 	ld c, a
 	ld a, [hl]
 	or c
-	jr z, .asm_3d6a7
+	jr z, .loop5
 
-.asm_3d6c9
+.quit
 	ret
 ; 3d6ca
 
@@ -3971,7 +3969,7 @@
 	and a
 	jr z, .can_escape
 	ld [hDivisor], a
-	ld b, $2
+	ld b, 2
 	call Divide
 	ld a, [hQuotient + 1]
 	and a
@@ -4142,7 +4140,7 @@
 	ld a, [EnemySubStatus5]
 	bit SUBSTATUS_TRANSFORMED, a
 	ret z
-	ld hl, wc6f2
+	ld hl, wEnemyBackupDVs
 	ld a, [wBattleMode]
 	dec a
 	ret z
@@ -4163,7 +4161,7 @@
 ; 3dabd
 
 
-Function3dabd: ; 3dabd
+InitEnemyMon: ; 3dabd
 	ld a, [CurPartyMon]
 	ld hl, OTPartyMon1Species
 	call GetPartyLocation
@@ -4205,12 +4203,12 @@
 	ld hl, BaseStats
 	ld de, EnemyMonBaseStats
 	ld b, 5
-.asm_3db25
+.loop
 	ld a, [hli]
 	ld [de], a
 	inc de
 	dec b
-	jr nz, .asm_3db25
+	jr nz, .loop
 	ld a, [CurPartyMon]
 	ld [CurOTMon], a
 	ret
@@ -4250,7 +4248,7 @@
 	ld [hBGMapMode], a
 	call GetMonBackpic
 	xor a
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	ld [wd0d2], a
 	ld [CurMoveNum], a
 	ld [TypeModifier], a
@@ -4418,7 +4416,7 @@
 	ld [CryTracks], a
 	ld a, [BattleMonSpecies]
 	call PlayStereoCry
-	ld a, [wc71a]
+	ld a, [LastPlayerMon]
 	ld c, a
 	ld hl, wBattleParticipantsNotFainted
 	ld b, RESET_FLAG
@@ -4452,7 +4450,7 @@
 	ret
 ; 3dce6
 
-Function3dce6: ; 3dce6
+RecallPlayerMon: ; 3dce6
 	ld a, [hBattleTurn]
 	push af
 	xor a
@@ -4887,7 +4885,7 @@
 	ld a, [hli]
 	or [hl]
 	jr z, .no_danger
-	ld a, [wc6fd]
+	ld a, [wDanger]
 	and a
 	jr nz, .done
 	ld a, [PlayerHPPal]
@@ -4943,16 +4941,16 @@
 	ld [MonType], a
 	callab GetGender
 	ld a, " "
-	jr c, .asm_3e013
+	jr c, .got_gender_char
 	ld a, "♂"
-	jr nz, .asm_3e013
+	jr nz, .got_gender_char
 	ld a, "♀"
 
-.asm_3e013
+.got_gender_char
 	hlcoord 17, 8
 	ld [hl], a
 	hlcoord 14, 8
-	push af
+	push af ; back up gender
 	push hl
 	ld de, BattleMonStatus
 	predef PlaceNonFaintStatus
@@ -4961,10 +4959,10 @@
 	ret nz
 	ld a, b
 	cp " "
-	jr nz, .asm_3e02d
-	dec hl
+	jr nz, .copy_level ; male or female
+	dec hl ; genderless
 
-.asm_3e02d
+.copy_level
 	ld a, [BattleMonLevel]
 	ld [TempMonLevel], a
 	jp PrintLevel
@@ -5009,7 +5007,7 @@
 	ld a, [EnemySubStatus5]
 	bit SUBSTATUS_TRANSFORMED, a
 	jr z, .ok
-	ld hl, wc6f2
+	ld hl, wEnemyBackupDVs
 .ok
 	ld a, [hli]
 	ld [de], a
@@ -5322,7 +5320,7 @@
 
 BattleMenu_PKMN: ; 3e28d
 	call LoadStandardMenuDataHeader
-Function3e290:
+BattleMenuPKMN_ReturnFromStats:
 	call ExitMenu
 	call LoadStandardMenuDataHeader
 	call ClearBGPalettes
@@ -5330,8 +5328,8 @@
 	call SetUpBattlePartyMenu
 	xor a
 	ld [PartyMenuActionText], a
-	call Function3d313
-	call Function3d329
+	call JumpToPartyMenuAndPrintText
+	call SelectBattleMon
 	jr c, .Cancel
 .loop
 	callba FreezeMonIcons
@@ -5356,7 +5354,7 @@
 	call Battle_StatsScreen
 	call CheckMobileBattleError
 	jr c, .Cancel
-	jp Function3e290
+	jp BattleMenuPKMN_ReturnFromStats
 
 .Cancel
 	call ClearSprites
@@ -5519,7 +5517,7 @@
 	call SetEnemyTurn
 	call PursuitSwitch
 	jr c, .ok
-	call Function3dce6
+	call RecallPlayerMon
 .ok
 
 	hlcoord 9, 7
@@ -5771,7 +5769,7 @@
 	dec a
 	cp c
 	jr z, .move_disabled
-	ld a, [wc6e1]
+	ld a, [wUnusedPlayerLockedMove]
 	and a
 	jr nz, .skip2
 	ld a, [wMenuCursorY]
@@ -6258,12 +6256,12 @@
 ; We don't need to be here if we're in a link battle
 	ld a, [wLinkMode]
 	and a
-	jp nz, Function3dabd
+	jp nz, InitEnemyMon
 
 ; and also not in a BattleTower-Battle
 	ld a, [InBattleTowerBattle] ; ????
 	bit 0, a
-	jp nz, Function3dabd
+	jp nz, InitEnemyMon
 
 ; Make sure everything knows what species we're working with
 	ld a, [TempEnemyMonSpecies]
@@ -6336,7 +6334,7 @@
 	jr z, .InitDVs
 
 ; Unknown
-	ld hl, wc6f2
+	ld hl, wEnemyBackupDVs
 	ld de, EnemyMonDVs
 	ld a, [hli]
 	ld [de], a
@@ -6848,7 +6846,8 @@
 ; 3ebc7
 
 
-Function3ebc7: ; 3ebc7
+SwapBattlerLevels: ; 3ebc7
+; unreferenced
 	push bc
 	ld a, [BattleMonLevel]
 	ld b, a
@@ -7383,7 +7382,7 @@
 	bit 0, a
 	ret nz
 
-	call Function3f0d4
+	call .EvenlyDivideExpAmongParticipants
 	xor a
 	ld [CurPartyMon], a
 	ld bc, PartyMon1Species
@@ -7407,6 +7406,7 @@
 	pop bc
 	jp z, .skip_stats
 
+; give stat exp
 	ld hl, MON_STAT_EXP + 1
 	add hl, bc
 	ld d, h
@@ -7472,6 +7472,7 @@
 	ld [hDivisor], a
 	ld b, 4
 	call Divide
+; Boost Experience for traded Pokemon
 	pop bc
 	ld hl, MON_ID
 	add hl, bc
@@ -7489,10 +7490,12 @@
 	ld a, $1
 
 .no_boost
+; Boost experience for a Trainer Battle
 	ld [StringBuffer2 + 2], a
 	ld a, [wBattleMode]
 	dec a
 	call nz, BoostExp
+; Boost experience for Lucky Egg
 	push bc
 	ld a, MON_ITEM
 	call GetPartyParamLocation
@@ -7513,7 +7516,7 @@
 	ld a, [StringBuffer2]
 	ld [hQuotient + 1], a
 	pop bc
-	call Function3f136
+	call AnimateExpBar
 	push bc
 	call LoadTileMapToTempTileMap
 	pop bc
@@ -7748,19 +7751,19 @@
 	jp ResetBattleParticipants
 ; 3f0d4
 
-Function3f0d4: ; 3f0d4
+.EvenlyDivideExpAmongParticipants
 ; count number of battle participants
 	ld a, [wBattleParticipantsNotFainted]
 	ld b, a
 	ld c, PARTY_LENGTH
 	ld d, 0
-.loop
+.count_loop
 	xor a
 	srl b
 	adc d
 	ld d, a
 	dec c
-	jr nz, .loop
+	jr nz, .count_loop
 	cp 2
 	ret c
 
@@ -7767,7 +7770,7 @@
 	ld [wd265], a
 	ld hl, EnemyMonBaseStats
 	ld c, EnemyMonEnd - EnemyMonBaseStats
-.loop2
+.count_loop2
 	xor a
 	ld [hDividend + 0], a
 	ld a, [hl]
@@ -7779,7 +7782,7 @@
 	ld a, [hQuotient + 2]
 	ld [hli], a
 	dec c
-	jr nz, .loop2
+	jr nz, .count_loop2
 	ret
 ; 3f106
 
@@ -7827,7 +7830,7 @@
 ; 3f136
 
 
-Function3f136: ; 3f136
+AnimateExpBar: ; 3f136
 	push bc
 
 	ld hl, CurPartyMon
@@ -7864,15 +7867,15 @@
 	ld a, [wd003]
 	adc [hl]
 	ld [hld], a
-	jr nc, .asm_3f186
+	jr nc, .NoOverflow
 	inc [hl]
-	jr nz, .asm_3f186
+	jr nz, .NoOverflow
 	ld a, $ff
 	ld [hli], a
 	ld [hli], a
 	ld [hl], a
 
-.asm_3f186
+.NoOverflow
 	ld d, MAX_LEVEL
 	callab CalcExpAtLevel
 	ld a, [hProduct + 1]
@@ -7888,7 +7891,7 @@
 	sbc c
 	ld a, [hl]
 	sbc b
-	jr c, .asm_3f1a8
+	jr c, .AlreadyAtMaxExp
 	ld a, b
 	ld [hli], a
 	ld a, c
@@ -7896,7 +7899,7 @@
 	ld a, d
 	ld [hld], a
 
-.asm_3f1a8
+.AlreadyAtMaxExp
 	callab CalcLevel
 	ld a, d
 	pop bc
@@ -7903,30 +7906,30 @@
 	pop de
 	ld d, a
 	cp e
-	jr nc, .asm_3f1b7
+	jr nc, .LoopLevels
 	ld a, e
 	ld d, a
 
-.asm_3f1b7
+.LoopLevels
 	ld a, e
 	cp MAX_LEVEL
-	jr nc, .asm_3f1ff
+	jr nc, .FinishExpBar
 	cp d
-	jr z, .asm_3f1ff
+	jr z, .FinishExpBar
 	inc a
 	ld [TempMonLevel], a
 	ld [CurPartyLevel], a
 	ld [BattleMonLevel], a
 	push de
-	call Function3f21b
+	call .PlayExpBarSound
 	ld c, $40
-	call Function3f22c
+	call .LoopBarAnimation
 	call PrintPlayerHUD
 	ld hl, BattleMonNick
 	ld de, StringBuffer1
 	ld bc, PKMN_NAME_LENGTH
 	call CopyBytes
-	call Function3dfe
+	call TerminateExpBarSound
 	ld de, SFX_HIT_END_OF_EXP_BAR
 	call PlaySFX
 	callba AnimateEndOfExpBar
@@ -7936,9 +7939,9 @@
 	pop de
 	inc e
 	ld b, $0
-	jr .asm_3f1b7
+	jr .LoopLevels
 
-.asm_3f1ff
+.FinishExpBar
 	push bc
 	ld b, d
 	ld de, TempMonExp + 2
@@ -7946,9 +7949,9 @@
 	ld a, b
 	pop bc
 	ld c, a
-	call Function3f21b
-	call Function3f22c
-	call Function3dfe
+	call .PlayExpBarSound
+	call .LoopBarAnimation
+	call TerminateExpBarSound
 	pop af
 	ld [hProduct + 2], a
 	pop af
@@ -7957,9 +7960,8 @@
 .finish
 	pop bc
 	ret
-; 3f21b
 
-Function3f21b: ; 3f21b
+.PlayExpBarSound
 	push bc
 	call WaitSFX
 	ld de, SFX_EXP_BAR
@@ -7968,12 +7970,11 @@
 	call DelayFrames
 	pop bc
 	ret
-; 3f22c
 
-Function3f22c: ; 3f22c
-	ld d, $3
+.LoopBarAnimation
+	ld d, 3
 	dec b
-.asm_3f22f
+.anim_loop
 	inc b
 	push bc
 	push de
@@ -7989,7 +7990,7 @@
 	pop bc
 	ld a, c
 	cp b
-	jr z, .asm_3f268
+	jr z, .end_animation
 	inc b
 	push bc
 	push de
@@ -8003,16 +8004,14 @@
 	xor a
 	ld [hBGMapMode], a
 	dec d
-	jr nz, .asm_3f263
-	ld d, $1
-
-.asm_3f263
+	jr nz, .min_number_of_frames
+	ld d, 1
+.min_number_of_frames
 	pop bc
 	ld a, c
 	cp b
-	jr nz, .asm_3f22f
-
-.asm_3f268
+	jr nz, .anim_loop
+.end_animation
 	ld a, $1
 	ld [hBGMapMode], a
 	ret
@@ -8184,7 +8183,7 @@
 	db "@"
 ; 3f357
 
-Function_TextJump_ComeBack: ; 3f357
+UnusedFunction_TextJump_ComeBack: ; 3f357
 ; this function doesn't seem to be used
 	ld hl, TextJump_ComeBack
 	ret
@@ -8575,12 +8574,12 @@
 	ld de, VTiles2
 	callab GetTrainerPic
 	xor a
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	dec a
-	ld [wc6e6], a
+	ld [wEnemyItemState], a
 	hlcoord 12, 0
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 	ld a, -1
 	ld [CurOTMon], a
 	ld a, TRAINER_BATTLE
@@ -8640,14 +8639,15 @@
 	predef FrontpicPredef
 	xor a
 	ld [TrainerClass], a
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	hlcoord 12, 0
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 	ret
 ; 3f662
 
 Function3f662: ; 3f662
+; XXX
 	ld hl, EnemyMonMoves
 	ld de, wListMoves_MoveIndicesBuffer
 	ld b, NUM_MOVES
@@ -8852,8 +8852,8 @@
 	ld a, BANK(sLinkBattleStats)
 	call GetSRAMBank
 
-	call Function3fa42
-	call Function3f85f
+	call AddLastMobileBattleToLinkRecord
+	call ReadAndPrintLinkBattleRecord
 
 	call CloseSRAM
 
@@ -8905,7 +8905,7 @@
 	ld a, BANK(sLinkBattleStats)
 	call GetSRAMBank
 
-	call Function3f85f
+	call ReadAndPrintLinkBattleRecord
 
 	call CloseSRAM
 	hlcoord 0, 0, AttrMap
@@ -8916,7 +8916,7 @@
 	ld b, SCGB_08
 	call GetSGBLayout
 	call SetPalettes
-	ld c, $8
+	ld c, 8
 	call DelayFrames
 	call WaitPressAorB_BlinkCursor
 	ret
@@ -8923,40 +8923,40 @@
 ; 3f85f
 
 
-Function3f85f: ; 3f85f
+ReadAndPrintLinkBattleRecord: ; 3f85f
 	call ClearTileMap
 	call ClearSprites
-	call .asm_3f8e0
+	call .PrintBattleRecord
 	hlcoord 0, 8
-	ld b, $5
-	ld de, sLinkBattleStats + $8
-.asm_3f870
+	ld b, 5
+	ld de, sLinkBattleRecord + 2
+.loop
 	push bc
 	push hl
 	push de
 	ld a, [de]
 	and a
-	jr z, .asm_3f8c9
+	jr z, .PrintFormatString
 	ld a, [wSavedAtLeastOnce]
 	and a
-	jr z, .asm_3f8c9
+	jr z, .PrintFormatString
 	push hl
 	push hl
 	ld h, d
 	ld l, e
 	ld de, wd002
-	ld bc, $000a
+	ld bc, 10
 	call CopyBytes
-	ld a, $50
+	ld a, "@"
 	ld [de], a
 	inc de
-	ld bc, $0006
+	ld bc, 6
 	call CopyBytes
 	ld de, wd002
 	pop hl
 	call PlaceString
 	pop hl
-	ld de, $001a
+	ld de, 26
 	add hl, de
 	push hl
 	ld de, wd00d
@@ -8963,7 +8963,7 @@
 	lb bc, 2, 4
 	call PrintNum
 	pop hl
-	ld de, $0005
+	ld de, 5
 	add hl, de
 	push hl
 	ld de, wd00f
@@ -8970,32 +8970,31 @@
 	lb bc, 2, 4
 	call PrintNum
 	pop hl
-	ld de, $0005
+	ld de, 5
 	add hl, de
 	ld de, wd011
 	lb bc, 2, 4
 	call PrintNum
-	jr .asm_3f8cf
+	jr .next
 
-.asm_3f8c9
+.PrintFormatString
 	ld de, .Format
 	call PlaceString
-
-.asm_3f8cf
+.next
 	pop hl
-	ld bc, $0012
+	ld bc, 18
 	add hl, bc
 	ld d, h
 	ld e, l
 	pop hl
-	ld bc, $0028
+	ld bc, 2 * SCREEN_WIDTH
 	add hl, bc
 	pop bc
 	dec b
-	jr nz, .asm_3f870
+	jr nz, .loop
 	ret
 
-.asm_3f8e0
+.PrintBattleRecord
 	hlcoord 1, 0
 	ld de, .Record
 	call PlaceString
@@ -9010,8 +9009,8 @@
 
 	hlcoord 6, 4
 	ld de, sLinkBattleWins
-	call .asm_3f92b
-	jr c, .asm_3f92a
+	call .PrintZerosIfNoSaveFileExists
+	jr c, .quit
 
 	lb bc, 2, 4
 	call PrintNum
@@ -9018,7 +9017,7 @@
 
 	hlcoord 11, 4
 	ld de, sLinkBattleLosses
-	call .asm_3f92b
+	call .PrintZerosIfNoSaveFileExists
 
 	lb bc, 2, 4
 	call PrintNum
@@ -9025,15 +9024,15 @@
 
 	hlcoord 16, 4
 	ld de, sLinkBattleDraws
-	call .asm_3f92b
+	call .PrintZerosIfNoSaveFileExists
 
 	lb bc, 2, 4
 	call PrintNum
 
-.asm_3f92a
+.quit
 	ret
 
-.asm_3f92b
+.PrintZerosIfNoSaveFileExists
 	ld a, [wSavedAtLeastOnce]
 	and a
 	ret nz
@@ -9048,7 +9047,8 @@
 ; 3f947
 
 .Format ; 3f947
-	db "  ---  <LNBRK>         -    -    -@"
+	db "  ---  <LNBRK>"
+	db "         -    -    -@"
 .Record ; 3f964
 	db "<PLAYER>'s RECORD@"
 .Result ; 3f96e
@@ -9166,17 +9166,17 @@
 ; 3fa42
 
 
-Function3fa42: ; 3fa42
+AddLastMobileBattleToLinkRecord: ; 3fa42
 	ld hl, OTPlayerID
 	ld de, StringBuffer1
 	ld bc, 2
 	call CopyBytes
 	ld hl, OTPlayerName
-	ld bc, 10
+	ld bc, NAME_LENGTH - 1
 	call CopyBytes
-	ld hl, s1_b254
-	call Function3faa0
-	ld hl, s1_b266
+	ld hl, sLinkBattleResults
+	call .StoreResult
+	ld hl, sLinkBattleRecord
 	ld d, 5
 .loop
 	push hl
@@ -9218,24 +9218,22 @@
 	pop hl
 
 .done
-	call Function3faa0
-	call Function3fac8
+	call .StoreResult
+	call .FindOpponentAndAppendRecord
 	ret
 ; 3faa0
-
-Function3faa0: ; 3faa0
+.StoreResult: ; 3faa0
 	ld a, [wBattleResult]
 	and $f
 	cp $1
-	ld bc, 13
+	ld bc, sLinkBattleWins + 1 - sLinkBattleResults
 	jr c, .okay
-	ld bc, 15
+	ld bc, sLinkBattleLosses + 1 - sLinkBattleResults
 	jr z, .okay
-	ld bc, 17
-
+	ld bc, sLinkBattleDraws + 1 - sLinkBattleResults
 .okay
 	add hl, bc
-	call Function3fabe
+	call .CheckOverflow
 	ret nc
 	inc [hl]
 	ret nz
@@ -9244,26 +9242,26 @@
 	ret
 ; 3fabe
 
-Function3fabe: ; 3fabe
+.CheckOverflow: ; 3fabe
 	dec hl
 	ld a, [hl]
 	inc hl
-	cp $27
+	cp 9999 / $100
 	ret c
 	ld a, [hl]
-	cp $f
+	cp 9999 % $100
 	ret
 ; 3fac8
 
-Function3fac8: ; 3fac8
-	ld b, $5
-	ld hl, s1_b277
+.FindOpponentAndAppendRecord: ; 3fac8
+	ld b, 5
+	ld hl, sLinkBattleRecord + 17
 	ld de, wd002
-.loop
+.loop3
 	push bc
 	push de
 	push hl
-	call Function3fb54
+	call .LoadPointer
 	pop hl
 	ld a, e
 	pop de
@@ -9279,10 +9277,10 @@
 	add hl, bc
 	pop bc
 	dec b
-	jr nz, .loop
+	jr nz, .loop3
 	ld b, $0
 	ld c, $1
-.loop2
+.loop4
 	ld a, b
 	add b
 	add b
@@ -9302,30 +9300,30 @@
 	ld e, l
 	pop hl
 	push bc
-	ld c, $3
+	ld c, 3
 	call StringCmp
 	pop bc
 	jr z, .equal
-	jr nc, .done
+	jr nc, .done2
 
 .equal
 	inc c
 	ld a, c
 	cp $5
-	jr nz, .loop2
+	jr nz, .loop4
 	inc b
 	ld c, b
 	inc c
 	ld a, b
 	cp $4
-	jr nz, .loop2
+	jr nz, .loop4
 	ret
 
-.done
+.done2
 	push bc
 	ld a, b
 	ld bc, 18
-	ld hl, s1_b266
+	ld hl, sLinkBattleRecord
 	call AddNTimes
 	push hl
 	ld de, wd002
@@ -9336,7 +9334,7 @@
 	push hl
 	ld a, c
 	ld bc, 18
-	ld hl, s1_b266
+	ld hl, sLinkBattleRecord
 	call AddNTimes
 	pop de
 	push hl
@@ -9349,7 +9347,7 @@
 	ret
 ; 3fb54
 
-Function3fb54: ; 3fb54
+.LoadPointer: ; 3fb54
 	ld e, $0
 	ld a, [hld]
 	ld c, a
@@ -9361,10 +9359,10 @@
 	ld a, [hld]
 	adc b
 	ld b, a
-	jr nc, .okay
+	jr nc, .okay2
 	inc e
 
-.okay
+.okay2
 	ld a, [hld]
 	add c
 	ld c, a
@@ -9402,10 +9400,10 @@
 	ld a, $1
 	ld [hBGMapMode], a
 	ld a, $31
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	hlcoord 2, 6
 	lb bc, 6, 6
-	predef FillBox
+	predef PlaceGraphic
 	xor a
 	ld [hWY], a
 	ld [rWY], a
@@ -9497,24 +9495,24 @@
 	call Get2bpp
 	pop af
 	ld [rSVBK], a
-	call Function3fc5b
+	call .LoadTrainerBackpicAsOAM
 	ld a, $31
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	hlcoord 2, 6
 	lb bc, 6, 6
-	predef FillBox
+	predef PlaceGraphic
 	ret
 ; 3fc5b
 
-Function3fc5b: ; 3fc5b
+.LoadTrainerBackpicAsOAM: ; 3fc5b
 	ld hl, Sprites
 	xor a
 	ld [hMapObjectIndexBuffer], a
 	ld b, $6
-	ld e, $a8
+	ld e, 21 * 8
 .outer_loop
 	ld c, $3
-	ld d, $40
+	ld d, 8 * 8
 .inner_loop
 	ld [hl], d
 	inc hl
--- a/battle/effect_commands.asm
+++ b/battle/effect_commands.asm
@@ -136,7 +136,7 @@
 	ld [wKickCounter], a
 	ld [AlreadyDisobeyed], a
 	ld [AlreadyFailed], a
-	ld [wc73e], a
+	ld [wSomeoneIsRampaging], a
 
 	ld a, 10 ; 1.0
 	ld [TypeModifier], a
@@ -1928,6 +1928,7 @@
 	ld a, [hBattleTurn]
 	and a
 
+	; load the user's accuracy into b and the opponent's evasion into c.
 	ld hl, wPlayerMoveStruct + MOVE_ACC
 	ld a, [PlayerAccLevel]
 	ld b, a
@@ -1944,17 +1945,21 @@
 
 .got_acc_eva
 	cp b
-	jr c, .eva_less_than_acc
+	jr c, .skip_foresight_check
 
+	; if the target's evasion is greater than the user's accuracy,
+	; check the target's foresight status
 	ld a, BATTLE_VARS_SUBSTATUS1_OPP
 	call GetBattleVar
 	bit SUBSTATUS_IDENTIFIED, a
 	ret nz
 
-.eva_less_than_acc
+.skip_foresight_check
+	; subtract evasion from 14
 	ld a, 14
 	sub c
 	ld c, a
+	; store the base move accuracy for math ops
 	xor a
 	ld [hMultiplicand + 0], a
 	ld [hMultiplicand + 1], a
@@ -1961,9 +1966,10 @@
 	ld a, [hl]
 	ld [hMultiplicand + 2], a
 	push hl
-	ld d, 2
+	ld d, 2 ; do this twice, once for the user's accuracy and once for the target's evasion
 
 .accuracy_loop
+	; look up the multiplier from the table
 	push bc
 	ld hl, .AccProb
 	dec b
@@ -1972,13 +1978,16 @@
 	ld b, 0
 	add hl, bc
 	pop bc
+	; multiply by the first byte in that row...
 	ld a, [hli]
 	ld [hMultiplier], a
 	call Multiply
+	; ... and divide by the second byte
 	ld a, [hl]
 	ld [hDivisor], a
 	ld b, 4
 	call Divide
+	; minimum accuracy is $0001
 	ld a, [hQuotient + 2]
 	ld b, a
 	ld a, [hQuotient + 1]
@@ -1985,14 +1994,16 @@
 	or b
 	jr nz, .min_accuracy
 	ld [hQuotient + 1], a
-	ld a, $1
+	ld a, 1
 	ld [hQuotient + 2], a
 
 .min_accuracy
+	; do the same thing to the target's evasion
 	ld b, c
 	dec d
 	jr nz, .accuracy_loop
 
+	; if the result is more than 2 bytes, max out at 100%
 	ld a, [hQuotient + 1]
 	and a
 	ld a, [hQuotient + 2]
@@ -2114,10 +2125,10 @@
 	ret
 
 .rollout_rampage
-	ld a, [wc73e]
+	ld a, [wSomeoneIsRampaging]
 	and a
 	ld a, 0
-	ld [wc73e], a
+	ld [wSomeoneIsRampaging], a
 	ret
 
 ; 34f57
@@ -2799,7 +2810,7 @@
 
 	call ResetDamage
 
-	ld hl, wPlayerMoveStruct + MOVE_POWER
+	ld hl, wPlayerMoveStructPower
 	ld a, [hli]
 	and a
 	ld d, a
@@ -2946,7 +2957,7 @@
 	ld a, [hBattleTurn]
 	and a
 	jr nz, .enemy
-	ld a, [wPlayerMoveStruct + MOVE_TYPE]
+	ld a, [wPlayerMoveStructType]
 	cp SPECIAL
 ; special
 	ld a, [PlayerSAtkLevel]
@@ -2960,7 +2971,7 @@
 	jr .end
 
 .enemy
-	ld a, [wEnemyMoveStruct + MOVE_TYPE]
+	ld a, [wEnemyMoveStructType]
 	cp SPECIAL
 ; special
 	ld a, [EnemySAtkLevel]
@@ -3063,8 +3074,8 @@
 	call ResetDamage
 
 ; No damage dealt with 0 power.
-	ld hl, wEnemyMoveStruct + MOVE_POWER
-	ld a, [hli] ; hl = wEnemyMoveStruct + MOVE_TYPE
+	ld hl, wEnemyMoveStructPower
+	ld a, [hli] ; hl = wEnemyMoveStructType
 	ld d, a
 	and a
 	ret z
@@ -3155,7 +3166,7 @@
 	xor a
 	ld [PlayerRolloutCount], a
 	ld [wd002], a
-	ld [wc72d], a
+	ld [wBeatUpHitAtLeastOnce], a
 	jr .got_mon
 
 .next_mon
@@ -3188,7 +3199,7 @@
 	jp nz, .beatup_fail
 
 	ld a, $1
-	ld [wc72d], a
+	ld [wBeatUpHitAtLeastOnce], a
 	ld hl, BeatUpAttackText
 	call StdBattleTextBox
 	ld a, [EnemyMonSpecies]
@@ -3211,7 +3222,7 @@
 	ld a, [hl]
 	ld e, a
 	pop bc
-	ld a, [wPlayerMoveStruct + MOVE_POWER]
+	ld a, [wPlayerMoveStructPower]
 	ld d, a
 	ret
 
@@ -3223,7 +3234,7 @@
 	xor a
 	ld [EnemyRolloutCount], a
 	ld [wd002], a
-	ld [wc72d], a
+	ld [wBeatUpHitAtLeastOnce], a
 	jr .enemy_continue
 
 .not_first_enemy_beatup
@@ -3283,7 +3294,7 @@
 	jr nz, .beatup_fail
 
 	ld a, $1
-	ld [wc72d], a
+	ld [wBeatUpHitAtLeastOnce], a
 	jr .finish_beatup
 
 .wild
@@ -3317,7 +3328,7 @@
 	ld a, [hl]
 	ld e, a
 	pop bc
-	ld a, [wEnemyMoveStruct + MOVE_POWER]
+	ld a, [wEnemyMoveStructPower]
 	ld d, a
 	ret
 
@@ -3332,7 +3343,7 @@
 
 
 BattleCommanda8: ; 355b5
-	ld a, [wc72d]
+	ld a, [wBeatUpHitAtLeastOnce]
 	and a
 	ret nz
 
@@ -3401,7 +3412,7 @@
 	ld l, [hl]
 	ld h, a
 	call TruncateHL_BC
-	ld d, $28
+	ld d, 40
 	pop af
 	ld e, a
 	ret
@@ -3806,7 +3817,7 @@
 	ld a, [hl]
 	jr nz, .notPlayersTurn
 
-	ld hl, wPlayerMoveStruct + MOVE_POWER
+	ld hl, wPlayerMoveStructPower
 	ld [hl], a
 	push hl
 	call PlayerAttackDamage
@@ -3813,7 +3824,7 @@
 	jr .notEnemysTurn
 
 .notPlayersTurn
-	ld hl, wEnemyMoveStruct + MOVE_POWER
+	ld hl, wEnemyMoveStructPower
 	ld [hl], a
 	push hl
 	call EnemyAttackDamage
@@ -6521,8 +6532,8 @@
 	ld [de], a
 	inc de
 	ld [de], a
-	ld [wPlayerMoveStruct + MOVE_EFFECT], a
-	ld [wEnemyMoveStruct + MOVE_EFFECT], a
+	ld [wPlayerMoveStructEffect], a
+	ld [wEnemyMoveStructEffect], a
 	call BattleRandom
 	and 1
 	inc a
@@ -6600,7 +6611,7 @@
 	inc a
 	ld [de], a
 	ld a, 1
-	ld [wc73e], a
+	ld [wSomeoneIsRampaging], a
 	ret
 
 ; 36778
@@ -6752,7 +6763,7 @@
 	inc a
 	ld [wForcedSwitch], a
 	call SetBattleDraw
-	ld a, [wPlayerMoveStruct + MOVE_ANIM]
+	ld a, [wPlayerMoveStructAnimation]
 	jp .succeed
 
 .trainer
@@ -6845,7 +6856,7 @@
 	inc a
 	ld [wForcedSwitch], a
 	call SetBattleDraw
-	ld a, [wEnemyMoveStruct + MOVE_ANIM]
+	ld a, [wEnemyMoveStructAnimation]
 	jr .succeed
 
 .vs_trainer
@@ -8393,148 +8404,7 @@
 
 ; 371cd
 
-
-BattleCommand_Transform: ; 371cd
-; transform
-
-	call ClearLastMove
-	ld a, BATTLE_VARS_SUBSTATUS5_OPP
-	call GetBattleVarAddr
-	bit SUBSTATUS_TRANSFORMED, [hl]
-	jp nz, BattleEffect_ButItFailed
-	call CheckHiddenOpponent
-	jp nz, BattleEffect_ButItFailed
-	xor a
-	ld [wNumHits], a
-	ld [FXAnimIDHi], a
-	ld a, $1
-	ld [wKickCounter], a
-	ld a, BATTLE_VARS_SUBSTATUS4
-	call GetBattleVarAddr
-	bit SUBSTATUS_SUBSTITUTE, [hl]
-	push af
-	jr z, .mimic_substitute
-	call CheckUserIsCharging
-	jr nz, .mimic_substitute
-	ld a, SUBSTITUTE
-	call LoadAnim
-.mimic_substitute
-	ld a, BATTLE_VARS_SUBSTATUS5
-	call GetBattleVarAddr
-	set SUBSTATUS_TRANSFORMED, [hl]
-	call ResetActorDisable
-	ld hl, BattleMonSpecies
-	ld de, EnemyMonSpecies
-	ld a, [hBattleTurn]
-	and a
-	jr nz, .got_mon_species
-	ld hl, EnemyMonSpecies
-	ld de, BattleMonSpecies
-	xor a
-	ld [CurMoveNum], a
-.got_mon_species
-	push hl
-	ld a, [hli]
-	ld [de], a
-	inc hl
-	inc de
-	inc de
-	ld bc, NUM_MOVES
-	call CopyBytes
-	ld a, [hBattleTurn]
-	and a
-	jr z, .mimic_enemy_backup
-	ld a, [de]
-	ld [wEnemyBackupDVs], a
-	inc de
-	ld a, [de]
-	ld [wEnemyBackupDVs + 1], a
-	dec de
-.mimic_enemy_backup
-; copy DVs
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-; move pointer to stats
-	ld bc, BattleMonStats - BattleMonPP
-	add hl, bc
-	push hl
-	ld h, d
-	ld l, e
-	add hl, bc
-	ld d, h
-	ld e, l
-	pop hl
-	ld bc, BattleMonStructEnd - BattleMonStats
-	call CopyBytes
-; init the power points
-	ld bc, BattleMonMoves - BattleMonStructEnd
-	add hl, bc
-	push de
-	ld d, h
-	ld e, l
-	pop hl
-	ld bc, BattleMonPP - BattleMonStructEnd
-	add hl, bc
-	ld b, NUM_MOVES
-.pp_loop
-	ld a, [de]
-	inc de
-	and a
-	jr z, .done_move
-	cp SKETCH
-	ld a, 1
-	jr z, .done_move
-	ld a, 5
-.done_move
-	ld [hli], a
-	dec b
-	jr nz, .pp_loop
-	pop hl
-	ld a, [hl]
-	ld [wNamedObjectIndexBuffer], a
-	call GetPokemonName
-	ld hl, EnemyStats
-	ld de, PlayerStats
-	ld bc, 2 * 5
-	call BattleSideCopy
-	ld hl, EnemyStatLevels
-	ld de, PlayerStatLevels
-	ld bc, 8
-	call BattleSideCopy
-	call _CheckBattleScene
-	jr c, .mimic_anims
-	ld a, [hBattleTurn]
-	and a
-	ld a, [wPlayerMinimized]
-	jr z, .got_byte
-	ld a, [wEnemyMinimized]
-.got_byte
-	and a
-	jr nz, .mimic_anims
-	call LoadMoveAnim
-	jr .after_anim
-
-.mimic_anims
-	call BattleCommand_MoveDelay
-	call BattleCommand_RaiseSubNoAnim
-.after_anim
-	xor a
-	ld [wNumHits], a
-	ld [FXAnimIDHi], a
-	ld a, $2
-	ld [wKickCounter], a
-	pop af
-	ld a, SUBSTITUTE
-	call nz, LoadAnim
-	ld hl, TransformedText
-	jp StdBattleTextBox
-
-; 372c6
-
+INCLUDE "battle/effects/transform.asm"
 
 BattleSideCopy: ; 372c6
 ; Copy bc bytes from hl to de if it's the player's turn.
--- a/battle/effects/rollout.asm
+++ b/battle/effects/rollout.asm
@@ -36,17 +36,17 @@
 	ld hl, PlayerRolloutCount
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_37747
+	jr z, .got_rollout_count
 	ld hl, EnemyRolloutCount
 
-.asm_37747
+.got_rollout_count
 	ld a, [hl]
 	and a
-	jr nz, .asm_37750
+	jr nz, .skip_set_rampage
 	ld a, 1
-	ld [wc73e], a
+	ld [wSomeoneIsRampaging], a
 
-.asm_37750
+.skip_set_rampage
 	ld a, [AttackMissed]
 	and a
 	jr z, .hit
@@ -61,38 +61,39 @@
 	ld a, [hl]
 	ld b, a
 	cp MAX_ROLLOUT_COUNT
-	jr c, .asm_3776e
+	jr c, .not_done_with_rollout
 
 	ld a, BATTLE_VARS_SUBSTATUS1
 	call GetBattleVarAddr
 	res SUBSTATUS_ROLLOUT, [hl]
-	jr .asm_37775
+	jr .done_with_substatus_flag
 
-.asm_3776e
+.not_done_with_rollout
 	ld a, BATTLE_VARS_SUBSTATUS1
 	call GetBattleVarAddr
 	set SUBSTATUS_ROLLOUT, [hl]
 
-.asm_37775
+.done_with_substatus_flag
 	ld a, BATTLE_VARS_SUBSTATUS2
 	call GetBattleVar
 	bit SUBSTATUS_CURLED, a
-	jr z, .asm_3777f
+	jr z, .not_curled
 	inc b
-.asm_3777f
+.not_curled
+.loop
 	dec b
-	jr z, .asm_37790
+	jr z, .done_damage
 
 	ld hl, CurDamage + 1
 	sla [hl]
 	dec hl
 	rl [hl]
-	jr nc, .asm_3777f
+	jr nc, .loop
 
 	ld a, $ff
 	ld [hli], a
 	ld [hl], a
 
-.asm_37790
+.done_damage
 	ret
 ; 37791
--- /dev/null
+++ b/battle/effects/transform.asm
@@ -1,0 +1,141 @@
+
+BattleCommand_Transform: ; 371cd
+; transform
+
+	call ClearLastMove
+	ld a, BATTLE_VARS_SUBSTATUS5_OPP
+	call GetBattleVarAddr
+	bit SUBSTATUS_TRANSFORMED, [hl]
+	jp nz, BattleEffect_ButItFailed
+	call CheckHiddenOpponent
+	jp nz, BattleEffect_ButItFailed
+	xor a
+	ld [wNumHits], a
+	ld [FXAnimIDHi], a
+	ld a, $1
+	ld [wKickCounter], a
+	ld a, BATTLE_VARS_SUBSTATUS4
+	call GetBattleVarAddr
+	bit SUBSTATUS_SUBSTITUTE, [hl]
+	push af
+	jr z, .mimic_substitute
+	call CheckUserIsCharging
+	jr nz, .mimic_substitute
+	ld a, SUBSTITUTE
+	call LoadAnim
+.mimic_substitute
+	ld a, BATTLE_VARS_SUBSTATUS5
+	call GetBattleVarAddr
+	set SUBSTATUS_TRANSFORMED, [hl]
+	call ResetActorDisable
+	ld hl, BattleMonSpecies
+	ld de, EnemyMonSpecies
+	ld a, [hBattleTurn]
+	and a
+	jr nz, .got_mon_species
+	ld hl, EnemyMonSpecies
+	ld de, BattleMonSpecies
+	xor a
+	ld [CurMoveNum], a
+.got_mon_species
+	push hl
+	ld a, [hli]
+	ld [de], a
+	inc hl
+	inc de
+	inc de
+	ld bc, NUM_MOVES
+	call CopyBytes
+	ld a, [hBattleTurn]
+	and a
+	jr z, .mimic_enemy_backup
+	ld a, [de]
+	ld [wEnemyBackupDVs], a
+	inc de
+	ld a, [de]
+	ld [wEnemyBackupDVs + 1], a
+	dec de
+.mimic_enemy_backup
+; copy DVs
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+; move pointer to stats
+	ld bc, BattleMonStats - BattleMonPP
+	add hl, bc
+	push hl
+	ld h, d
+	ld l, e
+	add hl, bc
+	ld d, h
+	ld e, l
+	pop hl
+	ld bc, BattleMonStructEnd - BattleMonStats
+	call CopyBytes
+; init the power points
+	ld bc, BattleMonMoves - BattleMonStructEnd
+	add hl, bc
+	push de
+	ld d, h
+	ld e, l
+	pop hl
+	ld bc, BattleMonPP - BattleMonStructEnd
+	add hl, bc
+	ld b, NUM_MOVES
+.pp_loop
+	ld a, [de]
+	inc de
+	and a
+	jr z, .done_move
+	cp SKETCH
+	ld a, 1
+	jr z, .done_move
+	ld a, 5
+.done_move
+	ld [hli], a
+	dec b
+	jr nz, .pp_loop
+	pop hl
+	ld a, [hl]
+	ld [wNamedObjectIndexBuffer], a
+	call GetPokemonName
+	ld hl, EnemyStats
+	ld de, PlayerStats
+	ld bc, 2 * 5
+	call BattleSideCopy
+	ld hl, EnemyStatLevels
+	ld de, PlayerStatLevels
+	ld bc, 8
+	call BattleSideCopy
+	call _CheckBattleScene
+	jr c, .mimic_anims
+	ld a, [hBattleTurn]
+	and a
+	ld a, [wPlayerMinimized]
+	jr z, .got_byte
+	ld a, [wEnemyMinimized]
+.got_byte
+	and a
+	jr nz, .mimic_anims
+	call LoadMoveAnim
+	jr .after_anim
+
+.mimic_anims
+	call BattleCommand_MoveDelay
+	call BattleCommand_RaiseSubNoAnim
+.after_anim
+	xor a
+	ld [wNumHits], a
+	ld [FXAnimIDHi], a
+	ld a, $2
+	ld [wKickCounter], a
+	pop af
+	ld a, SUBSTITUTE
+	call nz, LoadAnim
+	ld hl, TransformedText
+	jp StdBattleTextBox
+
+; 372c6
--- a/battle/misc.asm
+++ b/battle/misc.asm
@@ -32,8 +32,8 @@
 	call GetPlayerBackpicCoords
 	ld a, $31
 .okay
-	ld [hFillBox], a
-	predef FillBox
+	ld [hGraphicStartTile], a
+	predef PlaceGraphic
 FinishAppearDisappearUser: ; fbd91 (3e:7d91)
 	ld a, $1
 	ld [hBGMapMode], a
--- a/battle/objects/functions.asm
+++ b/battle/objects/functions.asm
@@ -274,7 +274,7 @@
 	dw .ten
 	dw .eleven
 .zero
-	call GetBallAnimFunction
+	call GetBallAnimPal
 	call BattleAnim_IncAnonJumptableIndex
 	ret
 
@@ -342,7 +342,7 @@
 	ret
 
 .seven
-	call GetBallAnimFunction
+	call GetBallAnimPal
 	ld a, $a
 	call ReinitBattleAnimFrameset
 	call BattleAnim_IncAnonJumptableIndex
@@ -382,7 +382,7 @@
 	dw .one
 	dw .two
 .zero
-	call GetBallAnimFunction
+	call GetBallAnimPal
 	call BattleAnim_IncAnonJumptableIndex
 	ret
 
@@ -415,7 +415,7 @@
 	call DeinitBattleAnimation
 	ret
 
-GetBallAnimFunction: ; cd249 (33:5249)
+GetBallAnimPal: ; cd249 (33:5249)
 	ld hl, .balls
 	ld a, [rSVBK]
 	push af
--- a/constants/cgb_constants.asm
+++ b/constants/cgb_constants.asm
@@ -17,7 +17,7 @@
 	const SCGB_0F
 	const SCGB_POKEDEX_SEARCH_OPTION
 	const SCGB_11
-	const SCGB_12
+	const SCGB_POKEPIC
 	const SCGB_13
 	const SCGB_PACKPALS
 	const SCGB_TRAINER_CARD
--- a/constants/map_constants.asm
+++ b/constants/map_constants.asm
@@ -668,36 +668,37 @@
 
 ; fruit trees
 const_value SET 1
-	const FRUITTREE_ROUTE_29
-	const FRUITTREE_ROUTE_30_1
-	const FRUITTREE_ROUTE_38
-	const FRUITTREE_ROUTE_46_1
-	const FRUITTREE_ROUTE_30_2
-	const FRUITTREE_ROUTE_33
-	const FRUITTREE_ROUTE_31
-	const FRUITTREE_ROUTE_43
-	const FRUITTREE_VIOLET_CITY
-	const FRUITTREE_ROUTE_46_2
-	const FRUITTREE_ROUTE_35
-	const FRUITTREE_ROUTE_45
-	const FRUITTREE_ROUTE_36
-	const FRUITTREE_ROUTE_26
-	const FRUITTREE_ROUTE_39
-	const FRUITTREE_ROUTE_44
-	const FRUITTREE_ROUTE_37_1
-	const FRUITTREE_ROUTE_37_2
-	const FRUITTREE_ROUTE_37_3
-	const FRUITTREE_AZALEA_TOWN
-	const FRUITTREE_ROUTE_42_1
-	const FRUITTREE_ROUTE_42_2
-	const FRUITTREE_ROUTE_42_3
-	const FRUITTREE_ROUTE_11
-	const FRUITTREE_ROUTE_2
-	const FRUITTREE_ROUTE_1
-	const FRUITTREE_ROUTE_8
-	const FRUITTREE_PEWTER_CITY_1
-	const FRUITTREE_PEWTER_CITY_2
-	const FRUITTREE_FUCHSIA_CITY
+	const FRUITTREE_ROUTE_29      ; 01
+	const FRUITTREE_ROUTE_30_1    ; 02
+	const FRUITTREE_ROUTE_38      ; 03
+	const FRUITTREE_ROUTE_46_1    ; 04
+	const FRUITTREE_ROUTE_30_2    ; 05
+	const FRUITTREE_ROUTE_33      ; 06
+	const FRUITTREE_ROUTE_31      ; 07
+	const FRUITTREE_ROUTE_43      ; 08
+	const FRUITTREE_VIOLET_CITY   ; 09
+	const FRUITTREE_ROUTE_46_2    ; 0a
+	const FRUITTREE_ROUTE_35      ; 0b
+	const FRUITTREE_ROUTE_45      ; 0c
+	const FRUITTREE_ROUTE_36      ; 0d
+	const FRUITTREE_ROUTE_26      ; 0e
+	const FRUITTREE_ROUTE_39      ; 0f
+	const FRUITTREE_ROUTE_44      ; 10
+	const FRUITTREE_ROUTE_37_1    ; 11
+	const FRUITTREE_ROUTE_37_2    ; 12
+	const FRUITTREE_ROUTE_37_3    ; 13
+	const FRUITTREE_AZALEA_TOWN   ; 14
+	const FRUITTREE_ROUTE_42_1    ; 15
+	const FRUITTREE_ROUTE_42_2    ; 16
+	const FRUITTREE_ROUTE_42_3    ; 17
+	const FRUITTREE_ROUTE_11      ; 18
+	const FRUITTREE_ROUTE_2       ; 19
+	const FRUITTREE_ROUTE_1       ; 1a
+	const FRUITTREE_ROUTE_8       ; 1b
+	const FRUITTREE_PEWTER_CITY_1 ; 1c
+	const FRUITTREE_PEWTER_CITY_2 ; 1d
+	const FRUITTREE_FUCHSIA_CITY  ; 1e
+NUM_FRUIT_TREES EQU const_value +- 1
 
 CMDQUEUE_TYPE  EQU 0
 CMDQUEUE_ADDR  EQU 1
--- a/constants/sfx_constants.asm
+++ b/constants/sfx_constants.asm
@@ -1,210 +1,210 @@
 	const_def
 
-	const SFX_DEX_FANFARE_50_79
-	const SFX_ITEM
-	const SFX_CAUGHT_MON
-	const SFX_POKEBALLS_PLACED_ON_TABLE
-	const SFX_POTION
-	const SFX_FULL_HEAL
-	const SFX_MENU
-	const SFX_READ_TEXT
-	const SFX_READ_TEXT_2
-	const SFX_DEX_FANFARE_20_49
-	const SFX_DEX_FANFARE_80_109
-	const SFX_POISON
-	const SFX_GOT_SAFARI_BALLS
-	const SFX_BOOT_PC
-	const SFX_SHUT_DOWN_PC
-	const SFX_CHOOSE_PC_OPTION
-	const SFX_ESCAPE_ROPE
-	const SFX_PUSH_BUTTON
-	const SFX_SECOND_PART_OF_ITEMFINDER
-	const SFX_WARP_TO
-	const SFX_WARP_FROM
-	const SFX_CHANGE_DEX_MODE
-	const SFX_JUMP_OVER_LEDGE
-	const SFX_GRASS_RUSTLE
-	const SFX_FLY
-	const SFX_WRONG
-	const SFX_SQUEAK
-	const SFX_STRENGTH
-	const SFX_BOAT
-	const SFX_WALL_OPEN
-	const SFX_PLACE_PUZZLE_PIECE_DOWN
-	const SFX_ENTER_DOOR
-	const SFX_SWITCH_POKEMON
-	const SFX_TALLY
-	const SFX_TRANSACTION
-	const SFX_EXIT_BUILDING
-	const SFX_BUMP
-	const SFX_SAVE
-	const SFX_POKEFLUTE
-	const SFX_ELEVATOR_END
-	const SFX_THROW_BALL
-	const SFX_BALL_POOF
-	const SFX_FAINT
-	const SFX_RUN
-	const SFX_SLOT_MACHINE_START
-	const SFX_FANFARE
-	const SFX_PECK
-	const SFX_KINESIS
-	const SFX_LICK
-	const SFX_POUND
-	const SFX_MOVE_PUZZLE_PIECE
-	const SFX_COMET_PUNCH
-	const SFX_MEGA_PUNCH
-	const SFX_SCRATCH
-	const SFX_VICEGRIP
-	const SFX_RAZOR_WIND
-	const SFX_CUT
-	const SFX_WING_ATTACK
-	const SFX_WHIRLWIND
-	const SFX_BIND
-	const SFX_VINE_WHIP
-	const SFX_DOUBLE_KICK
-	const SFX_MEGA_KICK
-	const SFX_HEADBUTT
-	const SFX_HORN_ATTACK
-	const SFX_TACKLE
-	const SFX_POISON_STING
-	const SFX_POWDER
-	const SFX_DOUBLESLAP
-	const SFX_BITE
-	const SFX_JUMP_KICK
-	const SFX_STOMP
-	const SFX_TAIL_WHIP
-	const SFX_KARATE_CHOP
-	const SFX_SUBMISSION
-	const SFX_WATER_GUN
-	const SFX_SWORDS_DANCE
-	const SFX_THUNDER
-	const SFX_SUPERSONIC
-	const SFX_LEER
-	const SFX_EMBER
-	const SFX_BUBBLEBEAM
-	const SFX_HYDRO_PUMP
-	const SFX_SURF
-	const SFX_PSYBEAM
-	const SFX_CHARGE
-	const SFX_THUNDERSHOCK
-	const SFX_PSYCHIC
-	const SFX_SCREECH
-	const SFX_BONE_CLUB
-	const SFX_SHARPEN
-	const SFX_EGG_BOMB
-	const SFX_SING
-	const SFX_HYPER_BEAM
-	const SFX_SHINE
-	const SFX_UNKNOWN_5F
-	const SFX_UNKNOWN_60
-	const SFX_UNKNOWN_61
-	const SFX_SWITCH_POCKETS
-	const SFX_UNKNOWN_63
-	const SFX_BURN
-	const SFX_TITLE_SCREEN_ENTRANCE
-	const SFX_UNKNOWN_66
-	const SFX_GET_COIN_FROM_SLOTS
-	const SFX_PAY_DAY
-	const SFX_METRONOME
-	const SFX_CALL
-	const SFX_HANG_UP
-	const SFX_NO_SIGNAL
-	const SFX_SANDSTORM
-	const SFX_ELEVATOR
-	const SFX_PROTECT
-	const SFX_SKETCH
-	const SFX_RAIN_DANCE
-	const SFX_AEROBLAST
-	const SFX_SPARK
-	const SFX_CURSE
-	const SFX_RAGE
-	const SFX_THIEF
-	const SFX_THIEF_2
-	const SFX_SPIDER_WEB
-	const SFX_MIND_READER
-	const SFX_NIGHTMARE
-	const SFX_SNORE
-	const SFX_SWEET_KISS
-	const SFX_SWEET_KISS_2
-	const SFX_BELLY_DRUM
-	const SFX_UNKNOWN_7F
-	const SFX_SLUDGE_BOMB
-	const SFX_FORESIGHT
-	const SFX_SPITE
-	const SFX_OUTRAGE
-	const SFX_PERISH_SONG
-	const SFX_GIGA_DRAIN
-	const SFX_ATTRACT
-	const SFX_KINESIS_2
-	const SFX_ZAP_CANNON
-	const SFX_MEAN_LOOK
-	const SFX_HEAL_BELL
-	const SFX_RETURN
-	const SFX_EXP_BAR
-	const SFX_MILK_DRINK
-	const SFX_PRESENT
-	const SFX_MORNING_SUN
-	const SFX_LEVEL_UP
-	const SFX_KEY_ITEM
-	const SFX_FANFARE_2
-	const SFX_REGISTER_PHONE_NUMBER
-	const SFX_3RD_PLACE
-	const SFX_GET_EGG_FROM_DAYCARE_MAN
-	const SFX_GET_EGG_FROM_DAYCARE_LADY
-	const SFX_MOVE_DELETED
-	const SFX_2ND_PLACE
-	const SFX_1ST_PLACE
-	const SFX_CHOOSE_A_CARD
-	const SFX_GET_TM
-	const SFX_GET_BADGE
-	const SFX_QUIT_SLOTS
-	const SFX_EGG_CRACK
-	const SFX_DEX_FANFARE_LESS_THAN_20
-	const SFX_DEX_FANFARE_140_169
-	const SFX_DEX_FANFARE_170_199
-	const SFX_DEX_FANFARE_200_229
-	const SFX_DEX_FANFARE_230_PLUS
-	const SFX_EVOLVED
-	const SFX_MASTER_BALL
-	const SFX_EGG_HATCH
-	const SFX_GS_INTRO_CHARIZARD_FIREBALL
-	const SFX_GS_INTRO_POKEMON_APPEARS
-	const SFX_FLASH
-	const SFX_GAME_FREAK_LOGO_GS
-	const SFX_NOT_VERY_EFFECTIVE
-	const SFX_DAMAGE
-	const SFX_SUPER_EFFECTIVE
-	const SFX_BALL_BOUNCE
-	const SFX_MOONLIGHT
-	const SFX_ENCORE
-	const SFX_BEAT_UP
-	const SFX_BATON_PASS
-	const SFX_BALL_WIGGLE
-	const SFX_SWEET_SCENT
-	const SFX_SWEET_SCENT_2
-	const SFX_HIT_END_OF_EXP_BAR
-	const SFX_GIVE_TRADEMON
-	const SFX_GET_TRADEMON
-	const SFX_TRAIN_ARRIVED
-	const SFX_STOP_SLOT
-	const SFX_2_BOOPS
-	const SFX_GLASS_TING
-	const SFX_GLASS_TING_2
+	const SFX_DEX_FANFARE_50_79           ; 00
+	const SFX_ITEM                        ; 01
+	const SFX_CAUGHT_MON                  ; 02
+	const SFX_POKEBALLS_PLACED_ON_TABLE   ; 03
+	const SFX_POTION                      ; 04
+	const SFX_FULL_HEAL                   ; 05
+	const SFX_MENU                        ; 06
+	const SFX_READ_TEXT                   ; 07
+	const SFX_READ_TEXT_2                 ; 08
+	const SFX_DEX_FANFARE_20_49           ; 09
+	const SFX_DEX_FANFARE_80_109          ; 0a
+	const SFX_POISON                      ; 0b
+	const SFX_GOT_SAFARI_BALLS            ; 0c
+	const SFX_BOOT_PC                     ; 0d
+	const SFX_SHUT_DOWN_PC                ; 0e
+	const SFX_CHOOSE_PC_OPTION            ; 0f
+	const SFX_ESCAPE_ROPE                 ; 10
+	const SFX_PUSH_BUTTON                 ; 11
+	const SFX_SECOND_PART_OF_ITEMFINDER   ; 12
+	const SFX_WARP_TO                     ; 13
+	const SFX_WARP_FROM                   ; 14
+	const SFX_CHANGE_DEX_MODE             ; 15
+	const SFX_JUMP_OVER_LEDGE             ; 16
+	const SFX_GRASS_RUSTLE                ; 17
+	const SFX_FLY                         ; 18
+	const SFX_WRONG                       ; 19
+	const SFX_SQUEAK                      ; 1a
+	const SFX_STRENGTH                    ; 1b
+	const SFX_BOAT                        ; 1c
+	const SFX_WALL_OPEN                   ; 1d
+	const SFX_PLACE_PUZZLE_PIECE_DOWN     ; 1e
+	const SFX_ENTER_DOOR                  ; 1f
+	const SFX_SWITCH_POKEMON              ; 20
+	const SFX_TALLY                       ; 21
+	const SFX_TRANSACTION                 ; 22
+	const SFX_EXIT_BUILDING               ; 23
+	const SFX_BUMP                        ; 24
+	const SFX_SAVE                        ; 25
+	const SFX_POKEFLUTE                   ; 26
+	const SFX_ELEVATOR_END                ; 27
+	const SFX_THROW_BALL                  ; 28
+	const SFX_BALL_POOF                   ; 29
+	const SFX_FAINT                       ; 2a
+	const SFX_RUN                         ; 2b
+	const SFX_SLOT_MACHINE_START          ; 2c
+	const SFX_FANFARE                     ; 2d
+	const SFX_PECK                        ; 2e
+	const SFX_KINESIS                     ; 2f
+	const SFX_LICK                        ; 30
+	const SFX_POUND                       ; 31
+	const SFX_MOVE_PUZZLE_PIECE           ; 32
+	const SFX_COMET_PUNCH                 ; 33
+	const SFX_MEGA_PUNCH                  ; 34
+	const SFX_SCRATCH                     ; 35
+	const SFX_VICEGRIP                    ; 36
+	const SFX_RAZOR_WIND                  ; 37
+	const SFX_CUT                         ; 38
+	const SFX_WING_ATTACK                 ; 39
+	const SFX_WHIRLWIND                   ; 3a
+	const SFX_BIND                        ; 3b
+	const SFX_VINE_WHIP                   ; 3c
+	const SFX_DOUBLE_KICK                 ; 3d
+	const SFX_MEGA_KICK                   ; 3e
+	const SFX_HEADBUTT                    ; 3f
+	const SFX_HORN_ATTACK                 ; 40
+	const SFX_TACKLE                      ; 41
+	const SFX_POISON_STING                ; 42
+	const SFX_POWDER                      ; 43
+	const SFX_DOUBLESLAP                  ; 44
+	const SFX_BITE                        ; 45
+	const SFX_JUMP_KICK                   ; 46
+	const SFX_STOMP                       ; 47
+	const SFX_TAIL_WHIP                   ; 48
+	const SFX_KARATE_CHOP                 ; 49
+	const SFX_SUBMISSION                  ; 4a
+	const SFX_WATER_GUN                   ; 4b
+	const SFX_SWORDS_DANCE                ; 4c
+	const SFX_THUNDER                     ; 4d
+	const SFX_SUPERSONIC                  ; 4e
+	const SFX_LEER                        ; 4f
+	const SFX_EMBER                       ; 50
+	const SFX_BUBBLEBEAM                  ; 51
+	const SFX_HYDRO_PUMP                  ; 52
+	const SFX_SURF                        ; 53
+	const SFX_PSYBEAM                     ; 54
+	const SFX_CHARGE                      ; 55
+	const SFX_THUNDERSHOCK                ; 56
+	const SFX_PSYCHIC                     ; 57
+	const SFX_SCREECH                     ; 58
+	const SFX_BONE_CLUB                   ; 59
+	const SFX_SHARPEN                     ; 5a
+	const SFX_EGG_BOMB                    ; 5b
+	const SFX_SING                        ; 5c
+	const SFX_HYPER_BEAM                  ; 5d
+	const SFX_SHINE                       ; 5e
+	const SFX_UNKNOWN_5F                  ; 5f
+	const SFX_UNKNOWN_60                  ; 60
+	const SFX_UNKNOWN_61                  ; 61
+	const SFX_SWITCH_POCKETS              ; 62
+	const SFX_UNKNOWN_63                  ; 63
+	const SFX_BURN                        ; 64
+	const SFX_TITLE_SCREEN_ENTRANCE       ; 65
+	const SFX_UNKNOWN_66                  ; 66
+	const SFX_GET_COIN_FROM_SLOTS         ; 67
+	const SFX_PAY_DAY                     ; 68
+	const SFX_METRONOME                   ; 69
+	const SFX_CALL                        ; 6a
+	const SFX_HANG_UP                     ; 6b
+	const SFX_NO_SIGNAL                   ; 6c
+	const SFX_SANDSTORM                   ; 6d
+	const SFX_ELEVATOR                    ; 6e
+	const SFX_PROTECT                     ; 6f
+	const SFX_SKETCH                      ; 70
+	const SFX_RAIN_DANCE                  ; 71
+	const SFX_AEROBLAST                   ; 72
+	const SFX_SPARK                       ; 73
+	const SFX_CURSE                       ; 74
+	const SFX_RAGE                        ; 75
+	const SFX_THIEF                       ; 76
+	const SFX_THIEF_2                     ; 77
+	const SFX_SPIDER_WEB                  ; 78
+	const SFX_MIND_READER                 ; 79
+	const SFX_NIGHTMARE                   ; 7a
+	const SFX_SNORE                       ; 7b
+	const SFX_SWEET_KISS                  ; 7c
+	const SFX_SWEET_KISS_2                ; 7d
+	const SFX_BELLY_DRUM                  ; 7e
+	const SFX_UNKNOWN_7F                  ; 7f
+	const SFX_SLUDGE_BOMB                 ; 80
+	const SFX_FORESIGHT                   ; 81
+	const SFX_SPITE                       ; 82
+	const SFX_OUTRAGE                     ; 83
+	const SFX_PERISH_SONG                 ; 84
+	const SFX_GIGA_DRAIN                  ; 85
+	const SFX_ATTRACT                     ; 86
+	const SFX_KINESIS_2                   ; 87
+	const SFX_ZAP_CANNON                  ; 88
+	const SFX_MEAN_LOOK                   ; 89
+	const SFX_HEAL_BELL                   ; 8a
+	const SFX_RETURN                      ; 8b
+	const SFX_EXP_BAR                     ; 8c
+	const SFX_MILK_DRINK                  ; 8d
+	const SFX_PRESENT                     ; 8e
+	const SFX_MORNING_SUN                 ; 8f
+	const SFX_LEVEL_UP                    ; 90
+	const SFX_KEY_ITEM                    ; 91
+	const SFX_FANFARE_2                   ; 92
+	const SFX_REGISTER_PHONE_NUMBER       ; 93
+	const SFX_3RD_PLACE                   ; 94
+	const SFX_GET_EGG_FROM_DAYCARE_MAN    ; 95
+	const SFX_GET_EGG_FROM_DAYCARE_LADY   ; 96
+	const SFX_MOVE_DELETED                ; 97
+	const SFX_2ND_PLACE                   ; 98
+	const SFX_1ST_PLACE                   ; 99
+	const SFX_CHOOSE_A_CARD               ; 9a
+	const SFX_GET_TM                      ; 9b
+	const SFX_GET_BADGE                   ; 9c
+	const SFX_QUIT_SLOTS                  ; 9d
+	const SFX_EGG_CRACK                   ; 9e
+	const SFX_DEX_FANFARE_LESS_THAN_20    ; 9f
+	const SFX_DEX_FANFARE_140_169         ; a0
+	const SFX_DEX_FANFARE_170_199         ; a1
+	const SFX_DEX_FANFARE_200_229         ; a2
+	const SFX_DEX_FANFARE_230_PLUS        ; a3
+	const SFX_EVOLVED                     ; a4
+	const SFX_MASTER_BALL                 ; a5
+	const SFX_EGG_HATCH                   ; a6
+	const SFX_GS_INTRO_CHARIZARD_FIREBALL ; a7
+	const SFX_GS_INTRO_POKEMON_APPEARS    ; a8
+	const SFX_FLASH                       ; a9
+	const SFX_GAME_FREAK_LOGO_GS          ; aa
+	const SFX_NOT_VERY_EFFECTIVE          ; ab
+	const SFX_DAMAGE                      ; ac
+	const SFX_SUPER_EFFECTIVE             ; ad
+	const SFX_BALL_BOUNCE                 ; ae
+	const SFX_MOONLIGHT                   ; af
+	const SFX_ENCORE                      ; b0
+	const SFX_BEAT_UP                     ; b1
+	const SFX_BATON_PASS                  ; b2
+	const SFX_BALL_WIGGLE                 ; b3
+	const SFX_SWEET_SCENT                 ; b4
+	const SFX_SWEET_SCENT_2               ; b5
+	const SFX_HIT_END_OF_EXP_BAR          ; b6
+	const SFX_GIVE_TRADEMON               ; b7
+	const SFX_GET_TRADEMON                ; b8
+	const SFX_TRAIN_ARRIVED               ; b9
+	const SFX_STOP_SLOT                   ; ba
+	const SFX_2_BOOPS                     ; bb
+	const SFX_GLASS_TING                  ; bc
+	const SFX_GLASS_TING_2                ; bd
 
-	const SFX_INTRO_UNOWN_1
-	const SFX_INTRO_UNOWN_2
-	const SFX_INTRO_UNOWN_3
-	const SFX_DITTO_POP_UP
-	const SFX_DITTO_TRANSFORM
-	const SFX_INTRO_SUICUNE_1
-	const SFX_INTRO_PICHU
-	const SFX_INTRO_SUICUNE_2
-	const SFX_INTRO_SUICUNE_3
-	const SFX_DITTO_BOUNCE
-	const SFX_INTRO_SUICUNE_4
-	const SFX_GAME_FREAK_PRESENTS
-	const SFX_TINGLE
-	const SFX_UNKNOWN_CB
-	const SFX_TWO_PC_BEEPS
-	const SFX_4_NOTE_DITTY
-	const SFX_TWINKLE
+	const SFX_INTRO_UNOWN_1               ; be
+	const SFX_INTRO_UNOWN_2               ; bf
+	const SFX_INTRO_UNOWN_3               ; c0
+	const SFX_DITTO_POP_UP                ; c1
+	const SFX_DITTO_TRANSFORM             ; c2
+	const SFX_INTRO_SUICUNE_1             ; c3
+	const SFX_INTRO_PICHU                 ; c4
+	const SFX_INTRO_SUICUNE_2             ; c5
+	const SFX_INTRO_SUICUNE_3             ; c6
+	const SFX_DITTO_BOUNCE                ; c7
+	const SFX_INTRO_SUICUNE_4             ; c8
+	const SFX_GAME_FREAK_PRESENTS         ; c9
+	const SFX_TINGLE                      ; ca
+	const SFX_UNKNOWN_CB                  ; cb
+	const SFX_TWO_PC_BEEPS                ; cc
+	const SFX_4_NOTE_DITTY                ; cd
+	const SFX_TWINKLE                     ; ce
--- a/constants/sprite_constants.asm
+++ b/constants/sprite_constants.asm
@@ -193,44 +193,44 @@
 
 ; sprite movement data table indices
 	const_def
-	const SPRITEMOVEDATA_00
-	const SPRITEMOVEDATA_ITEM_TREE
-	const SPRITEMOVEDATA_WANDER
-	const SPRITEMOVEDATA_SPINRANDOM_SLOW
-	const SPRITEMOVEDATA_WALK_UP_DOWN
-	const SPRITEMOVEDATA_WALK_LEFT_RIGHT
-	const SPRITEMOVEDATA_STANDING_DOWN
-	const SPRITEMOVEDATA_STANDING_UP
-	const SPRITEMOVEDATA_STANDING_LEFT
-	const SPRITEMOVEDATA_STANDING_RIGHT
-	const SPRITEMOVEDATA_SPINRANDOM_FAST
-	const SPRITEMOVEDATA_PLAYER
-	const SPRITEMOVEDATA_0C
-	const SPRITEMOVEDATA_0D
-	const SPRITEMOVEDATA_0E
-	const SPRITEMOVEDATA_0F
-	const SPRITEMOVEDATA_10
-	const SPRITEMOVEDATA_11
-	const SPRITEMOVEDATA_12
-	const SPRITEMOVEDATA_FOLLOWING
-	const SPRITEMOVEDATA_SCRIPTED
-	const SPRITEMOVEDATA_SNORLAX
-	const SPRITEMOVEDATA_POKEMON
-	const SPRITEMOVEDATA_SUDOWOODO
-	const SPRITEMOVEDATA_SMASHABLE_ROCK
-	const SPRITEMOVEDATA_STRENGTH_BOULDER
-	const SPRITEMOVEDATA_FOLLOWNOTEXACT
-	const SPRITEMOVEDATA_SHADOW
-	const SPRITEMOVEDATA_EMOTE
-	const SPRITEMOVEDATA_SCREENSHAKE
-	const SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE
-	const SPRITEMOVEDATA_SPINCLOCKWISE
-	const SPRITEMOVEDATA_20
-	const SPRITEMOVEDATA_BIGDOLL
-	const SPRITEMOVEDATA_BOULDERDUST
-	const SPRITEMOVEDATA_GRASS
-	const SPRITEMOVEDATA_LAPRAS
-	const SPRITEMOVEDATA_25
+	const SPRITEMOVEDATA_00                   ; 00
+	const SPRITEMOVEDATA_ITEM_TREE            ; 01
+	const SPRITEMOVEDATA_WANDER               ; 02
+	const SPRITEMOVEDATA_SPINRANDOM_SLOW      ; 03
+	const SPRITEMOVEDATA_WALK_UP_DOWN         ; 04
+	const SPRITEMOVEDATA_WALK_LEFT_RIGHT      ; 05
+	const SPRITEMOVEDATA_STANDING_DOWN        ; 06
+	const SPRITEMOVEDATA_STANDING_UP          ; 07
+	const SPRITEMOVEDATA_STANDING_LEFT        ; 08
+	const SPRITEMOVEDATA_STANDING_RIGHT       ; 09
+	const SPRITEMOVEDATA_SPINRANDOM_FAST      ; 0a
+	const SPRITEMOVEDATA_PLAYER               ; 0b
+	const SPRITEMOVEDATA_0C                   ; 0c
+	const SPRITEMOVEDATA_0D                   ; 0d
+	const SPRITEMOVEDATA_0E                   ; 0e
+	const SPRITEMOVEDATA_0F                   ; 0f
+	const SPRITEMOVEDATA_10                   ; 10
+	const SPRITEMOVEDATA_11                   ; 11
+	const SPRITEMOVEDATA_12                   ; 12
+	const SPRITEMOVEDATA_FOLLOWING            ; 13
+	const SPRITEMOVEDATA_SCRIPTED             ; 14
+	const SPRITEMOVEDATA_SNORLAX              ; 15
+	const SPRITEMOVEDATA_POKEMON              ; 16
+	const SPRITEMOVEDATA_SUDOWOODO            ; 17
+	const SPRITEMOVEDATA_SMASHABLE_ROCK       ; 18
+	const SPRITEMOVEDATA_STRENGTH_BOULDER     ; 19
+	const SPRITEMOVEDATA_FOLLOWNOTEXACT       ; 1a
+	const SPRITEMOVEDATA_SHADOW               ; 1b
+	const SPRITEMOVEDATA_EMOTE                ; 1c
+	const SPRITEMOVEDATA_SCREENSHAKE          ; 1d
+	const SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE ; 1e
+	const SPRITEMOVEDATA_SPINCLOCKWISE        ; 1f
+	const SPRITEMOVEDATA_20                   ; 20
+	const SPRITEMOVEDATA_BIGDOLL              ; 21
+	const SPRITEMOVEDATA_BOULDERDUST          ; 22
+	const SPRITEMOVEDATA_GRASS                ; 23
+	const SPRITEMOVEDATA_LAPRAS               ; 24
+	const SPRITEMOVEDATA_25                   ; 25
 NUM_SPRITEMOVEDATA EQU const_value +- 1
 SPRITEMOVEDATA_FIELDS EQU 6
 
@@ -477,14 +477,14 @@
 	const SPRITE_ANIM_INDEX_02
 	const SPRITE_ANIM_INDEX_GAMEFREAK_LOGO
 	const SPRITE_ANIM_INDEX_04
-	const SPRITE_ANIM_INDEX_05
+	const SPRITE_ANIM_INDEX_NAMING_SCREEN_CURSOR
 	const SPRITE_ANIM_INDEX_SLOT_GOLEM
 	const SPRITE_ANIM_INDEX_SLOTS_CHANSEY
 	const SPRITE_ANIM_INDEX_SLOTS_EGG
 	const SPRITE_ANIM_INDEX_09
-	const SPRITE_ANIM_INDEX_WALK_CYCLE
+	const SPRITE_ANIM_INDEX_RED_WALK
 	const SPRITE_ANIM_INDEX_0B
-	const SPRITE_ANIM_INDEX_0C
+	const SPRITE_ANIM_INDEX_COMPOSE_MAIL_CURSOR
 	const SPRITE_ANIM_INDEX_0D
 	const SPRITE_ANIM_INDEX_0E
 	const SPRITE_ANIM_INDEX_0F
@@ -502,7 +502,7 @@
 	const SPRITE_ANIM_INDEX_1B
 	const SPRITE_ANIM_INDEX_1C
 	const SPRITE_ANIM_INDEX_1D
-	const SPRITE_ANIM_INDEX_1E
+	const SPRITE_ANIM_INDEX_BLUE_WALK
 	const SPRITE_ANIM_INDEX_1F
 	const SPRITE_ANIM_INDEX_20
 	const SPRITE_ANIM_INDEX_21
--- a/constants/tilemap_constants.asm
+++ b/constants/tilemap_constants.asm
@@ -36,8 +36,18 @@
 	const TILESET_ICE_PATH             ; 1d
 	const TILESET_WHIRL_ISLANDS        ; 1e
 	const TILESET_ILEX_FOREST          ; 1f
-	const TILESET_20                   ; 20
+	const TILESET_32                   ; 20
 	const TILESET_HO_OH_WORD_ROOM      ; 21
 	const TILESET_KABUTO_WORD_ROOM     ; 22
 	const TILESET_OMANYTE_WORD_ROOM    ; 23
 	const TILESET_AERODACTYL_WORD_ROOM ; 24
+
+	const_def
+	const PAL_BG_GRAY
+	const PAL_BG_RED
+	const PAL_BG_GREEN
+	const PAL_BG_WATER
+	const PAL_BG_YELLOW
+	const PAL_BG_BROWN
+	const PAL_BG_ROOF
+	const PAL_BG_TEXT
--- a/data/base_stats.asm
+++ b/data/base_stats.asm
@@ -1,6027 +1,755 @@
 BaseData0::
-
 BulbasaurBaseData:: ; 0x51424
-	db BULBASAUR ; 001
+INCLUDE "data/base_stats/bulbasaur.asm"
 
-	db  45,  49,  49,  45,  65,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, POISON
-	db 45 ; catch rate
-	db 64 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, PLANT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, FURY_CUTTER, CUT, FLASH
-	; end
-
 BaseData1::
-
 IvysaurBaseData:: ; 0x51444
-	db IVYSAUR ; 002
+INCLUDE "data/base_stats/ivysaur.asm"
 
-	db  60,  62,  63,  60,  80,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, POISON
-	db 45 ; catch rate
-	db 141 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, PLANT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, FURY_CUTTER, CUT, FLASH
-	; end
-
 VenusaurBaseData:: ; 0x51464
-	db VENUSAUR ; 003
+INCLUDE "data/base_stats/venusaur.asm"
 
-	db  80,  82,  83,  80, 100, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, POISON
-	db 45 ; catch rate
-	db 208 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, PLANT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, FURY_CUTTER, CUT, FLASH
-	; end
-
 CharmanderBaseData:: ; 0x51484
-	db CHARMANDER ; 004
+INCLUDE "data/base_stats/charmander.asm"
 
-	db  39,  52,  43,  65,  60,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 45 ; catch rate
-	db 65 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, REPTILE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, CUT, STRENGTH, FLAMETHROWER
-	; end
-
 CharmeleonBaseData:: ; 0x514a4
-	db CHARMELEON ; 005
+INCLUDE "data/base_stats/charmeleon.asm"
 
-	db  58,  64,  58,  80,  80,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 45 ; catch rate
-	db 142 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, REPTILE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, CUT, STRENGTH, FLAMETHROWER
-	; end
-
 CharizardBaseData:: ; 0x514c4
-	db CHARIZARD ; 006
+INCLUDE "data/base_stats/charizard.asm"
 
-	db  78,  84,  78, 100, 109,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FLYING
-	db 45 ; catch rate
-	db 209 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, REPTILE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, SWIFT, DEFENSE_CURL, REST, ATTRACT, STEEL_WING, FIRE_PUNCH, FURY_CUTTER, CUT, FLY, STRENGTH, FLAMETHROWER
-	; end
-
 SquirtleBaseData:: ; 0x514e4
-	db SQUIRTLE ; 007
+INCLUDE "data/base_stats/squirtle.asm"
 
-	db  44,  48,  65,  43,  50,  64
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 45 ; catch rate
-	db 66 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
-
 WartortleBaseData:: ; 0x51504
-	db WARTORTLE ; 008
+INCLUDE "data/base_stats/wartortle.asm"
 
-	db  59,  63,  80,  58,  65,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 45 ; catch rate
-	db 143 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
-
 BlastoiseBaseData:: ; 0x51524
-	db BLASTOISE ; 009
+INCLUDE "data/base_stats/blastoise.asm"
 
-	db  79,  83, 100,  78,  85, 105
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 45 ; catch rate
-	db 210 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
-
 CaterpieBaseData:: ; 0x51544
-	db CATERPIE ; 010
+INCLUDE "data/base_stats/caterpie.asm"
 
-	db  45,  30,  35,  45,  20,  20
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, BUG
-	db 255 ; catch rate
-	db 53 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm
-	; end
-
 MetapodBaseData:: ; 0x51564
-	db METAPOD ; 011
+INCLUDE "data/base_stats/metapod.asm"
 
-	db  50,  20,  55,  30,  25,  25
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, BUG
-	db 120 ; catch rate
-	db 72 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm
-	; end
-
 ButterfreeBaseData:: ; 0x51584
-	db BUTTERFREE ; 012
+INCLUDE "data/base_stats/butterfree.asm"
 
-	db  60,  45,  50,  70,  80,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, FLYING
-	db 45 ; catch rate
-	db 160 ; base exp
-	db NO_ITEM ; item 1
-	db SILVERPOWDER ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, NIGHTMARE, FLASH
-	; end
-
 WeedleBaseData:: ; 0x515a4
-	db WEEDLE ; 013
+INCLUDE "data/base_stats/weedle.asm"
 
-	db  40,  35,  30,  50,  20,  20
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, POISON
-	db 255 ; catch rate
-	db 52 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm
-	; end
-
 KakunaBaseData:: ; 0x515c4
-	db KAKUNA ; 014
+INCLUDE "data/base_stats/kakuna.asm"
 
-	db  45,  25,  50,  35,  25,  25
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, POISON
-	db 120 ; catch rate
-	db 71 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm
-	; end
-
 BeedrillBaseData:: ; 0x515e4
-	db BEEDRILL ; 015
+INCLUDE "data/base_stats/beedrill.asm"
 
-	db  65,  80,  40,  75,  45,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, POISON
-	db 45 ; catch rate
-	db 159 ; base exp
-	db NO_ITEM ; item 1
-	db POISON_BARB ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SWIFT, REST, ATTRACT, FURY_CUTTER, CUT
-	; end
-
 PidgeyBaseData:: ; 0x51604
-	db PIDGEY ; 016
+INCLUDE "data/base_stats/pidgey.asm"
 
-	db  40,  45,  40,  56,  35,  35
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, FLYING
-	db 255 ; catch rate
-	db 55 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FLY
-	; end
-
 PidgeottoBaseData:: ; 0x51624
-	db PIDGEOTTO ; 017
+INCLUDE "data/base_stats/pidgeotto.asm"
 
-	db  63,  60,  55,  71,  50,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, FLYING
-	db 120 ; catch rate
-	db 113 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FLY
-	; end
-
 PidgeotBaseData:: ; 0x51644
-	db PIDGEOT ; 018
+INCLUDE "data/base_stats/pidgeot.asm"
 
-	db  83,  80,  75,  91,  70,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, FLYING
-	db 45 ; catch rate
-	db 172 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FLY
-	; end
-
 RattataBaseData:: ; 0x51664
-	db RATTATA ; 019
+INCLUDE "data/base_stats/rattata.asm"
 
-	db  30,  56,  35,  72,  25,  35
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 255 ; catch rate
-	db 57 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DIG, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, THIEF
-	; end
-
 RaticateBaseData:: ; 0x51684
-	db RATICATE ; 020
+INCLUDE "data/base_stats/raticate.asm"
 
-	db  55,  81,  60,  97,  50,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 90 ; catch rate
-	db 116 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DIG, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, THIEF, CUT, STRENGTH, THUNDERBOLT, ICE_BEAM
-	; end
-
 SpearowBaseData:: ; 0x516a4
-	db SPEAROW ; 021
+INCLUDE "data/base_stats/spearow.asm"
 
-	db  40,  60,  30,  70,  31,  31
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, FLYING
-	db 255 ; catch rate
-	db 58 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FLY
-	; end
-
 FearowBaseData:: ; 0x516c4
-	db FEAROW ; 022
+INCLUDE "data/base_stats/fearow.asm"
 
-	db  65,  90,  65, 100,  61,  61
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, FLYING
-	db 90 ; catch rate
-	db 162 ; base exp
-	db NO_ITEM ; item 1
-	db SHARP_BEAK ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FLY
-	; end
-
 EkansBaseData:: ; 0x516e4
-	db EKANS ; 023
+INCLUDE "data/base_stats/ekans.asm"
 
-	db  35,  60,  44,  55,  40,  54
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, POISON
-	db 255 ; catch rate
-	db 62 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, REPTILE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, STRENGTH
-	; end
-
 ArbokBaseData:: ; 0x51704
-	db ARBOK ; 024
+INCLUDE "data/base_stats/arbok.asm"
 
-	db  60,  85,  69,  80,  65,  79
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, POISON
-	db 90 ; catch rate
-	db 147 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, REPTILE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, STRENGTH
-	; end
-
 PikachuBaseData:: ; 0x51724
-	db PIKACHU ; 025
+INCLUDE "data/base_stats/pikachu.asm"
 
-	db  35,  55,  30,  90,  50,  40
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, ELECTRIC
-	db 190 ; catch rate
-	db 82 ; base exp
-	db NO_ITEM ; item 1
-	db BERRY ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 10 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FAIRY ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, STRENGTH, FLASH, THUNDERBOLT
-	; end
-
 RaichuBaseData:: ; 0x51744
-	db RAICHU ; 026
+INCLUDE "data/base_stats/raichu.asm"
 
-	db  60,  90,  55, 100,  90,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, ELECTRIC
-	db 75 ; catch rate
-	db 122 ; base exp
-	db NO_ITEM ; item 1
-	db BERRY ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 10 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FAIRY ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, STRENGTH, FLASH, THUNDERBOLT
-	; end
-
 SandshrewBaseData:: ; 0x51764
-	db SANDSHREW ; 027
+INCLUDE "data/base_stats/sandshrew.asm"
 
-	db  50,  75,  85,  40,  20,  30
-	;   hp  atk  def  spd  sat  sdf
-
-	db GROUND, GROUND
-	db 255 ; catch rate
-	db 93 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, STRENGTH
-	; end
-
 SandslashBaseData:: ; 0x51784
-	db SANDSLASH ; 028
+INCLUDE "data/base_stats/sandslash.asm"
 
-	db  75, 100, 110,  65,  45,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db GROUND, GROUND
-	db 90 ; catch rate
-	db 163 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, STRENGTH
-	; end
-
 Nidoran_FBaseData:: ; 0x517a4
-	db NIDORAN_F ; 029
+INCLUDE "data/base_stats/nidoran_f.asm"
 
-	db  55,  47,  52,  41,  40,  40
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, POISON
-	db 235 ; catch rate
-	db 59 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 254 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, THUNDERBOLT
-	; end
-
 NidorinaBaseData:: ; 0x517c4
-	db NIDORINA ; 030
+INCLUDE "data/base_stats/nidorina.asm"
 
-	db  70,  62,  67,  56,  55,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, POISON
-	db 120 ; catch rate
-	db 117 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 254 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, STRENGTH, THUNDERBOLT, ICE_BEAM
-	; end
-
 NidoqueenBaseData:: ; 0x517e4
-	db NIDOQUEEN ; 031
+INCLUDE "data/base_stats/nidoqueen.asm"
 
-	db  90,  82,  87,  76,  75,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, GROUND
-	db 45 ; catch rate
-	db 194 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 254 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
-
 Nidoran_MBaseData:: ; 0x51804
-	db NIDORAN_M ; 032
+INCLUDE "data/base_stats/nidoran_m.asm"
 
-	db  46,  57,  40,  50,  40,  40
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, POISON
-	db 235 ; catch rate
-	db 60 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 0 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, THUNDERBOLT
-	; end
-
 NidorinoBaseData:: ; 0x51824
-	db NIDORINO ; 033
+INCLUDE "data/base_stats/nidorino.asm"
 
-	db  61,  72,  57,  65,  55,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, POISON
-	db 120 ; catch rate
-	db 118 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 0 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, STRENGTH, THUNDERBOLT, ICE_BEAM
-	; end
-
 NidokingBaseData:: ; 0x51844
-	db NIDOKING ; 034
+INCLUDE "data/base_stats/nidoking.asm"
 
-	db  81,  92,  77,  85,  85,  75
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, GROUND
-	db 45 ; catch rate
-	db 195 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 0 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
-
 ClefairyBaseData:: ; 0x51864
-	db CLEFAIRY ; 035
+INCLUDE "data/base_stats/clefairy.asm"
 
-	db  70,  45,  48,  35,  60,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 150 ; catch rate
-	db 68 ; base exp
-	db MYSTERYBERRY ; item 1
-	db MOON_STONE ; item 2
-	db 191 ; gender
-	db 100 ; unknown
-	db 10 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn FAIRY, FAIRY ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, DETECT, REST, ATTRACT, FIRE_PUNCH, NIGHTMARE, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
-
 ClefableBaseData:: ; 0x51884
-	db CLEFABLE ; 036
+INCLUDE "data/base_stats/clefable.asm"
 
-	db  95,  70,  73,  60,  85,  90
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 25 ; catch rate
-	db 129 ; base exp
-	db MYSTERYBERRY ; item 1
-	db MOON_STONE ; item 2
-	db 191 ; gender
-	db 100 ; unknown
-	db 10 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn FAIRY, FAIRY ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, DETECT, REST, ATTRACT, FIRE_PUNCH, NIGHTMARE, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
-
 VulpixBaseData:: ; 0x518a4
-	db VULPIX ; 037
+INCLUDE "data/base_stats/vulpix.asm"
 
-	db  38,  41,  40,  65,  50,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 190 ; catch rate
-	db 63 ; base exp
-	db BURNT_BERRY ; item 1
-	db BURNT_BERRY ; item 2
-	db 191 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, REST, ATTRACT, FLAMETHROWER
-	; end
-
 NinetalesBaseData:: ; 0x518c4
-	db NINETALES ; 038
+INCLUDE "data/base_stats/ninetales.asm"
 
-	db  73,  76,  75, 100,  81, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 75 ; catch rate
-	db 178 ; base exp
-	db BURNT_BERRY ; item 1
-	db BURNT_BERRY ; item 2
-	db 191 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, REST, ATTRACT, FLAMETHROWER
-	; end
-
 JigglypuffBaseData:: ; 0x518e4
-	db JIGGLYPUFF ; 039
+INCLUDE "data/base_stats/jigglypuff.asm"
 
-	db 115,  45,  20,  20,  45,  25
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 170 ; catch rate
-	db 76 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 191 ; gender
-	db 100 ; unknown
-	db 10 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn FAIRY, FAIRY ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, DETECT, REST, ATTRACT, FIRE_PUNCH, NIGHTMARE, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
-
 WigglytuffBaseData:: ; 0x51904
-	db WIGGLYTUFF ; 040
+INCLUDE "data/base_stats/wigglytuff.asm"
 
-	db 140,  70,  45,  45,  75,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 50 ; catch rate
-	db 109 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 191 ; gender
-	db 100 ; unknown
-	db 10 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn FAIRY, FAIRY ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, DETECT, REST, ATTRACT, FIRE_PUNCH, NIGHTMARE, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
-
 ZubatBaseData:: ; 0x51924
-	db ZUBAT ; 041
+INCLUDE "data/base_stats/zubat.asm"
 
-	db  40,  45,  35,  55,  30,  40
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, FLYING
-	db 255 ; catch rate
-	db 54 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING
-	; end
-
 GolbatBaseData:: ; 0x51944
-	db GOLBAT ; 042
+INCLUDE "data/base_stats/golbat.asm"
 
-	db  75,  80,  70,  90,  65,  75
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, FLYING
-	db 90 ; catch rate
-	db 171 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING
-	; end
-
 OddishBaseData:: ; 0x51964
-	db ODDISH ; 043
+INCLUDE "data/base_stats/oddish.asm"
 
-	db  45,  50,  55,  30,  75,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, POISON
-	db 255 ; catch rate
-	db 78 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn PLANT, PLANT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
-	; end
-
 GloomBaseData:: ; 0x51984
-	db GLOOM ; 044
+INCLUDE "data/base_stats/gloom.asm"
 
-	db  60,  65,  70,  40,  85,  75
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, POISON
-	db 120 ; catch rate
-	db 132 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn PLANT, PLANT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
-	; end
-
 VileplumeBaseData:: ; 0x519a4
-	db VILEPLUME ; 045
+INCLUDE "data/base_stats/vileplume.asm"
 
-	db  75,  80,  85,  50, 100,  90
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, POISON
-	db 45 ; catch rate
-	db 184 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn PLANT, PLANT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
-	; end
-
 ParasBaseData:: ; 0x519c4
-	db PARAS ; 046
+INCLUDE "data/base_stats/paras.asm"
 
-	db  35,  70,  55,  25,  45,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, GRASS
-	db 190 ; catch rate
-	db 70 ; base exp
-	db TINYMUSHROOM ; item 1
-	db BIG_MUSHROOM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, PLANT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, FLASH
-	; end
-
 ParasectBaseData:: ; 0x519e4
-	db PARASECT ; 047
+INCLUDE "data/base_stats/parasect.asm"
 
-	db  60,  95,  80,  30,  60,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, GRASS
-	db 75 ; catch rate
-	db 128 ; base exp
-	db TINYMUSHROOM ; item 1
-	db BIG_MUSHROOM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, PLANT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, FLASH
-	; end
-
 VenonatBaseData:: ; 0x51a04
-	db VENONAT ; 048
+INCLUDE "data/base_stats/venonat.asm"
 
-	db  60,  55,  50,  45,  40,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, POISON
-	db 190 ; catch rate
-	db 75 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SWIFT, REST, ATTRACT, THIEF
-	; end
-
 VenomothBaseData:: ; 0x51a24
-	db VENOMOTH ; 049
+INCLUDE "data/base_stats/venomoth.asm"
 
-	db  70,  65,  60,  90,  90,  75
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, POISON
-	db 75 ; catch rate
-	db 138 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SWIFT, REST, ATTRACT, THIEF, FLASH
-	; end
-
 DiglettBaseData:: ; 0x51a44
-	db DIGLETT ; 050
+INCLUDE "data/base_stats/diglett.asm"
 
-	db  10,  55,  25,  95,  35,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db GROUND, GROUND
-	db 255 ; catch rate
-	db 81 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, CUT
-	; end
-
 DugtrioBaseData:: ; 0x51a64
-	db DUGTRIO ; 051
+INCLUDE "data/base_stats/dugtrio.asm"
 
-	db  35,  80,  50, 120,  50,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db GROUND, GROUND
-	db 50 ; catch rate
-	db 153 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, CUT
-	; end
-
 MeowthBaseData:: ; 0x51a84
-	db MEOWTH ; 052
+INCLUDE "data/base_stats/meowth.asm"
 
-	db  40,  45,  35,  90,  40,  40
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 255 ; catch rate
-	db 69 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, THUNDERBOLT
-	; end
-
 PersianBaseData:: ; 0x51aa4
-	db PERSIAN ; 053
+INCLUDE "data/base_stats/persian.asm"
 
-	db  65,  70,  60, 115,  65,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 90 ; catch rate
-	db 148 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, THUNDERBOLT
-	; end
-
 PsyduckBaseData:: ; 0x51ac4
-	db PSYDUCK ; 054
+INCLUDE "data/base_stats/psyduck.asm"
 
-	db  50,  52,  48,  55,  65,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 190 ; catch rate
-	db 80 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, STRENGTH, FLASH, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
-
 GolduckBaseData:: ; 0x51ae4
-	db GOLDUCK ; 055
+INCLUDE "data/base_stats/golduck.asm"
 
-	db  80,  82,  78,  85,  95,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 75 ; catch rate
-	db 174 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, FURY_CUTTER, SURF, STRENGTH, FLASH, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
-
 MankeyBaseData:: ; 0x51b04
-	db MANKEY ; 056
+INCLUDE "data/base_stats/mankey.asm"
 
-	db  40,  80,  35,  70,  35,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIGHTING, FIGHTING
-	db 190 ; catch rate
-	db 74 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, THUNDERBOLT
-	; end
-
 PrimeapeBaseData:: ; 0x51b24
-	db PRIMEAPE ; 057
+INCLUDE "data/base_stats/primeape.asm"
 
-	db  65, 105,  60,  95,  60,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIGHTING, FIGHTING
-	db 75 ; catch rate
-	db 149 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, THUNDERBOLT
-	; end
-
 GrowlitheBaseData:: ; 0x51b44
-	db GROWLITHE ; 058
+INCLUDE "data/base_stats/growlithe.asm"
 
-	db  55,  70,  45,  60,  70,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 190 ; catch rate
-	db 91 ; base exp
-	db BURNT_BERRY ; item 1
-	db BURNT_BERRY ; item 2
-	db 63 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, REST, ATTRACT, FLAMETHROWER
-	; end
-
 ArcanineBaseData:: ; 0x51b64
-	db ARCANINE ; 059
+INCLUDE "data/base_stats/arcanine.asm"
 
-	db  90, 110,  80,  95, 100,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 75 ; catch rate
-	db 213 ; base exp
-	db BURNT_BERRY ; item 1
-	db BURNT_BERRY ; item 2
-	db 63 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, REST, ATTRACT, FLAMETHROWER
-	; end
-
 PoliwagBaseData:: ; 0x51b84
-	db POLIWAG ; 060
+INCLUDE "data/base_stats/poliwag.asm"
 
-	db  40,  50,  40,  90,  40,  40
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 255 ; catch rate
-	db 77 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn AMPHIBIAN, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, THIEF, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
-
 PoliwhirlBaseData:: ; 0x51ba4
-	db POLIWHIRL ; 061
+INCLUDE "data/base_stats/poliwhirl.asm"
 
-	db  65,  65,  65,  90,  50,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 120 ; catch rate
-	db 131 ; base exp
-	db NO_ITEM ; item 1
-	db KINGS_ROCK ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn AMPHIBIAN, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
-
 PoliwrathBaseData:: ; 0x51bc4
-	db POLIWRATH ; 062
+INCLUDE "data/base_stats/poliwrath.asm"
 
-	db  90,  85,  95,  70,  70,  90
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, FIGHTING
-	db 45 ; catch rate
-	db 185 ; base exp
-	db NO_ITEM ; item 1
-	db KINGS_ROCK ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn AMPHIBIAN, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
-
 AbraBaseData:: ; 0x51be4
-	db ABRA ; 063
+INCLUDE "data/base_stats/abra.asm"
 
-	db  25,  20,  15,  90, 105,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, PSYCHIC
-	db 200 ; catch rate
-	db 73 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 63 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, THIEF, FIRE_PUNCH, NIGHTMARE, FLASH
-	; end
-
 KadabraBaseData:: ; 0x51c04
-	db KADABRA ; 064
+INCLUDE "data/base_stats/kadabra.asm"
 
-	db  40,  35,  30, 105, 120,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, PSYCHIC
-	db 100 ; catch rate
-	db 145 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 63 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DIG, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, THIEF, FIRE_PUNCH, NIGHTMARE, FLASH
-	; end
-
 AlakazamBaseData:: ; 0x51c24
-	db ALAKAZAM ; 065
+INCLUDE "data/base_stats/alakazam.asm"
 
-	db  55,  50,  45, 120, 135,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, PSYCHIC
-	db 50 ; catch rate
-	db 186 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 63 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DIG, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, THIEF, FIRE_PUNCH, NIGHTMARE, FLASH
-	; end
-
 MachopBaseData:: ; 0x51c44
-	db MACHOP ; 066
+INCLUDE "data/base_stats/machop.asm"
 
-	db  70,  80,  50,  35,  35,  35
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIGHTING, FIGHTING
-	db 180 ; catch rate
-	db 88 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 63 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLAMETHROWER
-	; end
-
 MachokeBaseData:: ; 0x51c64
-	db MACHOKE ; 067
+INCLUDE "data/base_stats/machoke.asm"
 
-	db  80, 100,  70,  45,  50,  60
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIGHTING, FIGHTING
-	db 90 ; catch rate
-	db 146 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 63 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLAMETHROWER
-	; end
-
 MachampBaseData:: ; 0x51c84
-	db MACHAMP ; 068
+INCLUDE "data/base_stats/machamp.asm"
 
-	db  90, 130,  80,  55,  65,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIGHTING, FIGHTING
-	db 45 ; catch rate
-	db 193 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 63 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLAMETHROWER
-	; end
-
 BellsproutBaseData:: ; 0x51ca4
-	db BELLSPROUT ; 069
+INCLUDE "data/base_stats/bellsprout.asm"
 
-	db  50,  75,  35,  40,  70,  30
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, POISON
-	db 255 ; catch rate
-	db 84 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn PLANT, PLANT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
-	; end
-
 WeepinbellBaseData:: ; 0x51cc4
-	db WEEPINBELL ; 070
+INCLUDE "data/base_stats/weepinbell.asm"
 
-	db  65,  90,  50,  55,  85,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, POISON
-	db 120 ; catch rate
-	db 151 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn PLANT, PLANT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
-	; end
-
 VictreebelBaseData:: ; 0x51ce4
-	db VICTREEBEL ; 071
+INCLUDE "data/base_stats/victreebel.asm"
 
-	db  80, 105,  65,  70, 100,  60
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, POISON
-	db 45 ; catch rate
-	db 191 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn PLANT, PLANT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
-	; end
-
 TentacoolBaseData:: ; 0x51d04
-	db TENTACOOL ; 072
+INCLUDE "data/base_stats/tentacool.asm"
 
-	db  40,  40,  35,  70,  50, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, POISON
-	db 190 ; catch rate
-	db 105 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn INVERTEBRATE, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, SURF, WHIRLPOOL, ICE_BEAM
-	; end
-
 TentacruelBaseData:: ; 0x51d24
-	db TENTACRUEL ; 073
+INCLUDE "data/base_stats/tentacruel.asm"
 
-	db  80,  70,  65, 100,  80, 120
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, POISON
-	db 60 ; catch rate
-	db 205 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn INVERTEBRATE, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, SURF, WHIRLPOOL, ICE_BEAM
-	; end
-
 GeodudeBaseData:: ; 0x51d44
-	db GEODUDE ; 074
+INCLUDE "data/base_stats/geodude.asm"
 
-	db  40,  80, 100,  20,  30,  30
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, GROUND
-	db 255 ; catch rate
-	db 86 ; base exp
-	db NO_ITEM ; item 1
-	db EVERSTONE ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn INANIMATE, INANIMATE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, REST, ATTRACT, FIRE_PUNCH, STRENGTH, FLAMETHROWER
-	; end
-
 GravelerBaseData:: ; 0x51d64
-	db GRAVELER ; 075
+INCLUDE "data/base_stats/graveler.asm"
 
-	db  55,  95, 115,  35,  45,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, GROUND
-	db 120 ; catch rate
-	db 134 ; base exp
-	db NO_ITEM ; item 1
-	db EVERSTONE ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn INANIMATE, INANIMATE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, REST, ATTRACT, FIRE_PUNCH, STRENGTH, FLAMETHROWER
-	; end
-
 GolemBaseData:: ; 0x51d84
-	db GOLEM ; 076
+INCLUDE "data/base_stats/golem.asm"
 
-	db  80, 110, 130,  45,  55,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, GROUND
-	db 45 ; catch rate
-	db 177 ; base exp
-	db NO_ITEM ; item 1
-	db EVERSTONE ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn INANIMATE, INANIMATE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, STRENGTH, FLAMETHROWER
-	; end
-
 PonytaBaseData:: ; 0x51da4
-	db PONYTA ; 077
+INCLUDE "data/base_stats/ponyta.asm"
 
-	db  50,  85,  55,  90,  65,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 190 ; catch rate
-	db 152 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, REST, ATTRACT, FLAMETHROWER
-	; end
-
 RapidashBaseData:: ; 0x51dc4
-	db RAPIDASH ; 078
+INCLUDE "data/base_stats/rapidash.asm"
 
-	db  65, 100,  70, 105,  80,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 60 ; catch rate
-	db 192 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, REST, ATTRACT, FLAMETHROWER
-	; end
-
 SlowpokeBaseData:: ; 0x51de4
-	db SLOWPOKE ; 079
+INCLUDE "data/base_stats/slowpoke.asm"
 
-	db  90,  65,  65,  15,  40,  40
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, PSYCHIC
-	db 190 ; catch rate
-	db 99 ; base exp
-	db NO_ITEM ; item 1
-	db KINGS_ROCK ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn MONSTER, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DREAM_EATER, REST, ATTRACT, NIGHTMARE, SURF, STRENGTH, FLASH, FLAMETHROWER, ICE_BEAM
-	; end
-
 SlowbroBaseData:: ; 0x51e04
-	db SLOWBRO ; 080
+INCLUDE "data/base_stats/slowbro.asm"
 
-	db  95,  75, 110,  30, 100,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, PSYCHIC
-	db 75 ; catch rate
-	db 164 ; base exp
-	db NO_ITEM ; item 1
-	db KINGS_ROCK ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn MONSTER, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DREAM_EATER, REST, ATTRACT, FURY_CUTTER, NIGHTMARE, SURF, STRENGTH, FLASH, FLAMETHROWER, ICE_BEAM
-	; end
-
 MagnemiteBaseData:: ; 0x51e24
-	db MAGNEMITE ; 081
+INCLUDE "data/base_stats/magnemite.asm"
 
-	db  25,  35,  70,  45,  95,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, STEEL
-	db 190 ; catch rate
-	db 89 ; base exp
-	db NO_ITEM ; item 1
-	db METAL_COAT ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INANIMATE, INANIMATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, FLASH, THUNDERBOLT
-	; end
-
 MagnetonBaseData:: ; 0x51e44
-	db MAGNETON ; 082
+INCLUDE "data/base_stats/magneton.asm"
 
-	db  50,  60,  95,  70, 120,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, STEEL
-	db 60 ; catch rate
-	db 161 ; base exp
-	db NO_ITEM ; item 1
-	db METAL_COAT ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INANIMATE, INANIMATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, FLASH, THUNDERBOLT
-	; end
-
 Farfetch_DBaseData:: ; 0x51e64
-	db FARFETCH_D ; 083
+INCLUDE "data/base_stats/farfetch_d.asm"
 
-	db  52,  65,  55,  60,  58,  62
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, FLYING
-	db 45 ; catch rate
-	db 94 ; base exp
-	db NO_ITEM ; item 1
-	db STICK ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AVIAN, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, CUT, FLY
-	; end
-
 DoduoBaseData:: ; 0x51e84
-	db DODUO ; 084
+INCLUDE "data/base_stats/doduo.asm"
 
-	db  35,  85,  45,  75,  35,  35
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, FLYING
-	db 190 ; catch rate
-	db 96 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, THIEF, STEEL_WING, FLY
-	; end
-
 DodrioBaseData:: ; 0x51ea4
-	db DODRIO ; 085
+INCLUDE "data/base_stats/dodrio.asm"
 
-	db  60, 110,  70, 100,  60,  60
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, FLYING
-	db 45 ; catch rate
-	db 158 ; base exp
-	db NO_ITEM ; item 1
-	db SHARP_BEAK ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, THIEF, STEEL_WING, FLY
-	; end
-
 SeelBaseData:: ; 0x51ec4
-	db SEEL ; 086
+INCLUDE "data/base_stats/seel.asm"
 
-	db  65,  45,  55,  45,  45,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 190 ; catch rate
-	db 100 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
-
 DewgongBaseData:: ; 0x51ee4
-	db DEWGONG ; 087
+INCLUDE "data/base_stats/dewgong.asm"
 
-	db  90,  70,  80,  70,  70,  95
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, ICE
-	db 75 ; catch rate
-	db 176 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
-
 GrimerBaseData:: ; 0x51f04
-	db GRIMER ; 088
+INCLUDE "data/base_stats/grimer.asm"
 
-	db  80,  80,  50,  25,  40,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, POISON
-	db 190 ; catch rate
-	db 90 ; base exp
-	db NO_ITEM ; item 1
-	db NUGGET ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMORPHOUS, AMORPHOUS ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, FIRE_BLAST, THUNDERPUNCH, REST, ATTRACT, THIEF, FIRE_PUNCH, FLAMETHROWER, THUNDERBOLT
-	; end
-
 MukBaseData:: ; 0x51f24
-	db MUK ; 089
+INCLUDE "data/base_stats/muk.asm"
 
-	db 105, 105,  75,  50,  65, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, POISON
-	db 75 ; catch rate
-	db 157 ; base exp
-	db NO_ITEM ; item 1
-	db NUGGET ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMORPHOUS, AMORPHOUS ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, FIRE_BLAST, THUNDERPUNCH, REST, ATTRACT, THIEF, FIRE_PUNCH, FLAMETHROWER, THUNDERBOLT
-	; end
-
 ShellderBaseData:: ; 0x51f44
-	db SHELLDER ; 090
+INCLUDE "data/base_stats/shellder.asm"
 
-	db  30,  65, 100,  40,  45,  25
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 190 ; catch rate
-	db 97 ; base exp
-	db PEARL ; item 1
-	db BIG_PEARL ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn INVERTEBRATE, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WHIRLPOOL, ICE_BEAM
-	; end
-
 CloysterBaseData:: ; 0x51f64
-	db CLOYSTER ; 091
+INCLUDE "data/base_stats/cloyster.asm"
 
-	db  50,  95, 180,  70,  85,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, ICE
-	db 60 ; catch rate
-	db 203 ; base exp
-	db PEARL ; item 1
-	db BIG_PEARL ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn INVERTEBRATE, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WHIRLPOOL, ICE_BEAM
-	; end
-
 GastlyBaseData:: ; 0x51f84
-	db GASTLY ; 092
+INCLUDE "data/base_stats/gastly.asm"
 
-	db  30,  35,  30,  80, 100,  35
-	;   hp  atk  def  spd  sat  sdf
-
-	db GHOST, POISON
-	db 190 ; catch rate
-	db 95 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn AMORPHOUS, AMORPHOUS ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, THUNDERBOLT
-	; end
-
 HaunterBaseData:: ; 0x51fa4
-	db HAUNTER ; 093
+INCLUDE "data/base_stats/haunter.asm"
 
-	db  45,  50,  45,  95, 115,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db GHOST, POISON
-	db 90 ; catch rate
-	db 126 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn AMORPHOUS, AMORPHOUS ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, THUNDERBOLT
-	; end
-
 GengarBaseData:: ; 0x51fc4
-	db GENGAR ; 094
+INCLUDE "data/base_stats/gengar.asm"
 
-	db  60,  65,  60, 110, 130,  75
-	;   hp  atk  def  spd  sat  sdf
-
-	db GHOST, POISON
-	db 45 ; catch rate
-	db 190 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn AMORPHOUS, AMORPHOUS ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, THIEF, FIRE_PUNCH, NIGHTMARE, STRENGTH, THUNDERBOLT
-	; end
-
 OnixBaseData:: ; 0x51fe4
-	db ONIX ; 095
+INCLUDE "data/base_stats/onix.asm"
 
-	db  35,  45, 160,  70,  30,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, GROUND
-	db 45 ; catch rate
-	db 108 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INANIMATE, INANIMATE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, REST, ATTRACT, STRENGTH
-	; end
-
 DrowzeeBaseData:: ; 0x52004
-	db DROWZEE ; 096
+INCLUDE "data/base_stats/drowzee.asm"
 
-	db  60,  48,  45,  42,  43,  90
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, PSYCHIC
-	db 190 ; catch rate
-	db 102 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, FIRE_PUNCH, NIGHTMARE, FLASH
-	; end
-
 HypnoBaseData:: ; 0x52024
-	db HYPNO ; 097
+INCLUDE "data/base_stats/hypno.asm"
 
-	db  85,  73,  70,  67,  73, 115
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, PSYCHIC
-	db 75 ; catch rate
-	db 165 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, FIRE_PUNCH, NIGHTMARE, FLASH
-	; end
-
 KrabbyBaseData:: ; 0x52044
-	db KRABBY ; 098
+INCLUDE "data/base_stats/krabby.asm"
 
-	db  30, 105,  90,  50,  25,  25
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 225 ; catch rate
-	db 115 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INVERTEBRATE, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, SURF, STRENGTH, WHIRLPOOL, ICE_BEAM
-	; end
-
 KinglerBaseData:: ; 0x52064
-	db KINGLER ; 099
+INCLUDE "data/base_stats/kingler.asm"
 
-	db  55, 130, 115,  75,  50,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 60 ; catch rate
-	db 206 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INVERTEBRATE, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, SURF, STRENGTH, WHIRLPOOL, ICE_BEAM
-	; end
-
 VoltorbBaseData:: ; 0x52084
-	db VOLTORB ; 100
+INCLUDE "data/base_stats/voltorb.asm"
 
-	db  40,  30,  50, 100,  55,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, ELECTRIC
-	db 190 ; catch rate
-	db 103 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INANIMATE, INANIMATE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, FLASH, THUNDERBOLT
-	; end
-
 ElectrodeBaseData:: ; 0x520a4
-	db ELECTRODE ; 101
+INCLUDE "data/base_stats/electrode.asm"
 
-	db  60,  50,  70, 140,  80,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, ELECTRIC
-	db 60 ; catch rate
-	db 150 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INANIMATE, INANIMATE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, FLASH, THUNDERBOLT
-	; end
-
 ExeggcuteBaseData:: ; 0x520c4
-	db EXEGGCUTE ; 102
+INCLUDE "data/base_stats/exeggcute.asm"
 
-	db  60,  40,  80,  40,  60,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, PSYCHIC
-	db 90 ; catch rate
-	db 98 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn PLANT, PLANT ; egg groups
-
-	; tmhm
-	tmhm CURSE, ROLLOUT, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, STRENGTH, FLASH
-	; end
-
 ExeggutorBaseData:: ; 0x520e4
-	db EXEGGUTOR ; 103
+INCLUDE "data/base_stats/exeggutor.asm"
 
-	db  95,  95,  85,  55, 125,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, PSYCHIC
-	db 45 ; catch rate
-	db 212 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn PLANT, PLANT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, STRENGTH, FLASH
-	; end
-
 CuboneBaseData:: ; 0x52104
-	db CUBONE ; 104
+INCLUDE "data/base_stats/cubone.asm"
 
-	db  50,  50,  95,  35,  40,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db GROUND, GROUND
-	db 190 ; catch rate
-	db 87 ; base exp
-	db NO_ITEM ; item 1
-	db THICK_CLUB ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn MONSTER, MONSTER ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLAMETHROWER, ICE_BEAM
-	; end
-
 MarowakBaseData:: ; 0x52124
-	db MAROWAK ; 105
+INCLUDE "data/base_stats/marowak.asm"
 
-	db  60,  80, 110,  45,  50,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db GROUND, GROUND
-	db 75 ; catch rate
-	db 124 ; base exp
-	db NO_ITEM ; item 1
-	db THICK_CLUB ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn MONSTER, MONSTER ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLAMETHROWER, ICE_BEAM
-	; end
-
 HitmonleeBaseData:: ; 0x52144
-	db HITMONLEE ; 106
+INCLUDE "data/base_stats/hitmonlee.asm"
 
-	db  50, 120,  53,  87,  35, 110
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIGHTING, FIGHTING
-	db 45 ; catch rate
-	db 139 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 0 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STRENGTH
-	; end
-
 HitmonchanBaseData:: ; 0x52164
-	db HITMONCHAN ; 107
+INCLUDE "data/base_stats/hitmonchan.asm"
 
-	db  50, 105,  79,  76,  35, 110
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIGHTING, FIGHTING
-	db 45 ; catch rate
-	db 140 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 0 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH
-	; end
-
 LickitungBaseData:: ; 0x52184
-	db LICKITUNG ; 108
+INCLUDE "data/base_stats/lickitung.asm"
 
-	db  90,  55,  75,  30,  60,  75
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 45 ; catch rate
-	db 127 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn MONSTER, MONSTER ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, THIEF, FIRE_PUNCH, NIGHTMARE, CUT, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
-
 KoffingBaseData:: ; 0x521a4
-	db KOFFING ; 109
+INCLUDE "data/base_stats/koffing.asm"
 
-	db  40,  65,  95,  35,  60,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, POISON
-	db 190 ; catch rate
-	db 114 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMORPHOUS, AMORPHOUS ; egg groups
-
-	; tmhm
-	tmhm CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, FIRE_BLAST, REST, ATTRACT, THIEF, FLAMETHROWER, THUNDERBOLT
-	; end
-
 WeezingBaseData:: ; 0x521c4
-	db WEEZING ; 110
+INCLUDE "data/base_stats/weezing.asm"
 
-	db  65,  90, 120,  60,  85,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, POISON
-	db 60 ; catch rate
-	db 173 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMORPHOUS, AMORPHOUS ; egg groups
-
-	; tmhm
-	tmhm CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, FIRE_BLAST, REST, ATTRACT, THIEF, FLAMETHROWER, THUNDERBOLT
-	; end
-
 RhyhornBaseData:: ; 0x521e4
-	db RHYHORN ; 111
+INCLUDE "data/base_stats/rhyhorn.asm"
 
-	db  80,  85,  95,  25,  30,  30
-	;   hp  atk  def  spd  sat  sdf
-
-	db GROUND, ROCK
-	db 120 ; catch rate
-	db 135 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn MONSTER, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, REST, ATTRACT, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
-
 RhydonBaseData:: ; 0x52204
-	db RHYDON ; 112
+INCLUDE "data/base_stats/rhydon.asm"
 
-	db 105, 130, 120,  40,  45,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db GROUND, ROCK
-	db 60 ; catch rate
-	db 204 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn MONSTER, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, THUNDERPUNCH, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
-
 ChanseyBaseData:: ; 0x52224
-	db CHANSEY ; 113
+INCLUDE "data/base_stats/chansey.asm"
 
-	db 250,  05,  05,  50,  35, 105
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 30 ; catch rate
-	db 255 ; base exp
-	db NO_ITEM ; item 1
-	db LUCKY_EGG ; item 2
-	db 254 ; gender
-	db 100 ; unknown
-	db 40 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn FAIRY, FAIRY ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, DREAM_EATER, REST, ATTRACT, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
-
 TangelaBaseData:: ; 0x52244
-	db TANGELA ; 114
+INCLUDE "data/base_stats/tangela.asm"
 
-	db  65,  55, 115,  60, 100,  40
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, GRASS
-	db 45 ; catch rate
-	db 166 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn PLANT, PLANT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, CUT, FLASH
-	; end
-
 KangaskhanBaseData:: ; 0x52264
-	db KANGASKHAN ; 115
+INCLUDE "data/base_stats/kangaskhan.asm"
 
-	db 105,  95,  80,  90,  40,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 45 ; catch rate
-	db 175 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 254 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn MONSTER, MONSTER ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, THUNDERPUNCH, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
-
 HorseaBaseData:: ; 0x52284
-	db HORSEA ; 116
+INCLUDE "data/base_stats/horsea.asm"
 
-	db  30,  40,  70,  60,  70,  25
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 225 ; catch rate
-	db 83 ; base exp
-	db NO_ITEM ; item 1
-	db DRAGON_SCALE ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, REPTILE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, DRAGONBREATH, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
-
 SeadraBaseData:: ; 0x522a4
-	db SEADRA ; 117
+INCLUDE "data/base_stats/seadra.asm"
 
-	db  55,  65,  95,  85,  95,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 75 ; catch rate
-	db 155 ; base exp
-	db NO_ITEM ; item 1
-	db DRAGON_SCALE ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, REPTILE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, DRAGONBREATH, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
-
 GoldeenBaseData:: ; 0x522c4
-	db GOLDEEN ; 118
+INCLUDE "data/base_stats/goldeen.asm"
 
-	db  45,  67,  60,  63,  35,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 225 ; catch rate
-	db 111 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FISH, FISH ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WATERFALL, ICE_BEAM
-	; end
-
 SeakingBaseData:: ; 0x522e4
-	db SEAKING ; 119
+INCLUDE "data/base_stats/seaking.asm"
 
-	db  80,  92,  65,  68,  65,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 60 ; catch rate
-	db 170 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FISH, FISH ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WATERFALL, ICE_BEAM
-	; end
-
 StaryuBaseData:: ; 0x52304
-	db STARYU ; 120
+INCLUDE "data/base_stats/staryu.asm"
 
-	db  30,  45,  55,  85,  70,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 225 ; catch rate
-	db 106 ; base exp
-	db STARDUST ; item 1
-	db STAR_PIECE ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn INVERTEBRATE, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, FLASH, WHIRLPOOL, WATERFALL, THUNDERBOLT, ICE_BEAM
-	; end
-
 StarmieBaseData:: ; 0x52324
-	db STARMIE ; 121
+INCLUDE "data/base_stats/starmie.asm"
 
-	db  60,  75,  85, 115, 100,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, PSYCHIC
-	db 60 ; catch rate
-	db 207 ; base exp
-	db STARDUST ; item 1
-	db STAR_PIECE ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn INVERTEBRATE, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, REST, ATTRACT, NIGHTMARE, SURF, FLASH, WHIRLPOOL, WATERFALL, THUNDERBOLT, ICE_BEAM
-	; end
-
 Mr__MimeBaseData:: ; 0x52344
-	db MR__MIME ; 122
+INCLUDE "data/base_stats/mr__mime.asm"
 
-	db  40,  45,  65,  90, 100, 120
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, PSYCHIC
-	db 45 ; catch rate
-	db 136 ; base exp
-	db NO_ITEM ; item 1
-	db MYSTERYBERRY ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, SOLARBEAM, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, THIEF, FIRE_PUNCH, NIGHTMARE, FLASH, THUNDERBOLT
-	; end
-
 ScytherBaseData:: ; 0x52364
-	db SCYTHER ; 123
+INCLUDE "data/base_stats/scyther.asm"
 
-	db  70, 110,  80, 105,  55,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, FLYING
-	db 45 ; catch rate
-	db 187 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FURY_CUTTER, CUT
-	; end
-
 JynxBaseData:: ; 0x52384
-	db JYNX ; 124
+INCLUDE "data/base_stats/jynx.asm"
 
-	db  65,  50,  35,  95, 115,  95
-	;   hp  atk  def  spd  sat  sdf
-
-	db ICE, PSYCHIC
-	db 45 ; catch rate
-	db 137 ; base exp
-	db ICE_BERRY ; item 1
-	db ICE_BERRY ; item 2
-	db 254 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SWEET_SCENT, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, ICE_BEAM
-	; end
-
 ElectabuzzBaseData:: ; 0x523a4
-	db ELECTABUZZ ; 125
+INCLUDE "data/base_stats/electabuzz.asm"
 
-	db  65,  83,  57, 105,  95,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, ELECTRIC
-	db 45 ; catch rate
-	db 156 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 63 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLASH, THUNDERBOLT
-	; end
-
 MagmarBaseData:: ; 0x523c4
-	db MAGMAR ; 126
+INCLUDE "data/base_stats/magmar.asm"
 
-	db  65,  95,  57,  93, 100,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 45 ; catch rate
-	db 167 ; base exp
-	db BURNT_BERRY ; item 1
-	db BURNT_BERRY ; item 2
-	db 63 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLAMETHROWER
-	; end
-
 PinsirBaseData:: ; 0x523e4
-	db PINSIR ; 127
+INCLUDE "data/base_stats/pinsir.asm"
 
-	db  65, 125, 100,  85,  55,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, BUG
-	db 45 ; catch rate
-	db 200 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, STRENGTH
-	; end
-
 TaurosBaseData:: ; 0x52404
-	db TAUROS ; 128
+INCLUDE "data/base_stats/tauros.asm"
 
-	db  75, 100,  95, 110,  40,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 45 ; catch rate
-	db 211 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 0 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, REST, ATTRACT, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
-
 MagikarpBaseData:: ; 0x52424
-	db MAGIKARP ; 129
+INCLUDE "data/base_stats/magikarp.asm"
 
-	db  20,  10,  55,  80,  15,  20
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 255 ; catch rate
-	db 20 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 5 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FISH, REPTILE ; egg groups
-
-	; tmhm
-	tmhm
-	; end
-
 GyaradosBaseData:: ; 0x52444
-	db GYARADOS ; 130
+INCLUDE "data/base_stats/gyarados.asm"
 
-	db  95, 125,  79,  81,  60, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, FLYING
-	db 45 ; catch rate
-	db 214 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 5 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FISH, REPTILE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, DRAGONBREATH, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, REST, ATTRACT, SURF, STRENGTH, WHIRLPOOL, WATERFALL, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
-
 LaprasBaseData:: ; 0x52464
-	db LAPRAS ; 131
+INCLUDE "data/base_stats/lapras.asm"
 
-	db 130,  85,  80,  60,  85,  95
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, ICE
-	db 45 ; catch rate
-	db 219 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 40 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn MONSTER, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, THUNDER, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DREAM_EATER, REST, ATTRACT, NIGHTMARE, SURF, STRENGTH, WHIRLPOOL, THUNDERBOLT, ICE_BEAM
-	; end
-
 DittoBaseData:: ; 0x52484
-	db DITTO ; 132
+INCLUDE "data/base_stats/ditto.asm"
 
-	db  48,  48,  48,  48,  48,  48
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 35 ; catch rate
-	db 61 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn LADIES_MAN, LADIES_MAN ; egg groups
-
-	; tmhm
-	tmhm
-	; end
-
 EeveeBaseData:: ; 0x524a4
-	db EEVEE ; 133
+INCLUDE "data/base_stats/eevee.asm"
 
-	db  55,  55,  50,  55,  45,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 45 ; catch rate
-	db 92 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 35 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT
-	; end
-
 VaporeonBaseData:: ; 0x524c4
-	db VAPOREON ; 134
+INCLUDE "data/base_stats/vaporeon.asm"
 
-	db 130,  65,  60,  65, 110,  95
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 45 ; catch rate
-	db 196 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 35 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
-
 JolteonBaseData:: ; 0x524e4
-	db JOLTEON ; 135
+INCLUDE "data/base_stats/jolteon.asm"
 
-	db  65,  65,  60, 130, 110,  95
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, ELECTRIC
-	db 45 ; catch rate
-	db 197 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 35 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, FLASH, THUNDERBOLT
-	; end
-
 FlareonBaseData:: ; 0x52504
-	db FLAREON ; 136
+INCLUDE "data/base_stats/flareon.asm"
 
-	db  65, 130,  60,  65,  95, 110
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 45 ; catch rate
-	db 198 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 35 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DETECT, REST, ATTRACT, FLAMETHROWER
-	; end
-
 PorygonBaseData:: ; 0x52524
-	db PORYGON ; 137
+INCLUDE "data/base_stats/porygon.asm"
 
-	db  65,  60,  70,  40,  85,  75
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 45 ; catch rate
-	db 130 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INANIMATE, INANIMATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, REST, THIEF, NIGHTMARE, FLASH, THUNDERBOLT, ICE_BEAM
-	; end
-
 OmanyteBaseData:: ; 0x52544
-	db OMANYTE ; 138
+INCLUDE "data/base_stats/omanyte.asm"
 
-	db  35,  40, 100,  35,  90,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, WATER
-	db 45 ; catch rate
-	db 120 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 30 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, REST, ATTRACT, THIEF, SURF, WHIRLPOOL, ICE_BEAM
-	; end
-
 OmastarBaseData:: ; 0x52564
-	db OMASTAR ; 139
+INCLUDE "data/base_stats/omastar.asm"
 
-	db  70,  60, 125,  55, 115,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, WATER
-	db 45 ; catch rate
-	db 199 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 30 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, REST, ATTRACT, THIEF, SURF, WHIRLPOOL, ICE_BEAM
-	; end
-
 KabutoBaseData:: ; 0x52584
-	db KABUTO ; 140
+INCLUDE "data/base_stats/kabuto.asm"
 
-	db  30,  80,  90,  55,  55,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, WATER
-	db 45 ; catch rate
-	db 119 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 30 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, REST, ATTRACT, THIEF, ICE_BEAM
-	; end
-
 KabutopsBaseData:: ; 0x525a4
-	db KABUTOPS ; 141
+INCLUDE "data/base_stats/kabutops.asm"
 
-	db  60, 115, 105,  80,  65,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, WATER
-	db 45 ; catch rate
-	db 201 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 30 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, SURF, WHIRLPOOL, ICE_BEAM
-	; end
-
 AerodactylBaseData:: ; 0x525c4
-	db AERODACTYL ; 142
+INCLUDE "data/base_stats/aerodactyl.asm"
 
-	db  80, 105,  65, 130,  60,  75
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, FLYING
-	db 45 ; catch rate
-	db 202 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 35 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, EARTHQUAKE, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, SWIFT, DETECT, REST, ATTRACT, STEEL_WING, FLY, FLAMETHROWER
-	; end
-
 SnorlaxBaseData:: ; 0x525e4
-	db SNORLAX ; 143
+INCLUDE "data/base_stats/snorlax.asm"
 
-	db 160, 110,  65,  30,  65, 110
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 25 ; catch rate
-	db 154 ; base exp
-	db LEFTOVERS ; item 1
-	db LEFTOVERS ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 40 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn MONSTER, MONSTER ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, THUNDER, EARTHQUAKE, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, FIRE_PUNCH, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
-
 ArticunoBaseData:: ; 0x52604
-	db ARTICUNO ; 144
+INCLUDE "data/base_stats/articuno.asm"
 
-	db  90,  85, 100,  85,  95, 125
-	;   hp  atk  def  spd  sat  sdf
-
-	db ICE, FLYING
-	db 3 ; catch rate
-	db 215 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 80 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DETECT, REST, STEEL_WING, FLY, ICE_BEAM
-	; end
-
 ZapdosBaseData:: ; 0x52624
-	db ZAPDOS ; 145
+INCLUDE "data/base_stats/zapdos.asm"
 
-	db  90,  90,  85, 100, 125,  90
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, FLYING
-	db 3 ; catch rate
-	db 216 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 80 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DETECT, REST, STEEL_WING, FLY, FLASH, THUNDERBOLT
-	; end
-
 MoltresBaseData:: ; 0x52644
-	db MOLTRES ; 146
+INCLUDE "data/base_stats/moltres.asm"
 
-	db  90, 100,  90,  90, 125,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FLYING
-	db 3 ; catch rate
-	db 217 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 80 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, SWIFT, DETECT, REST, STEEL_WING, FLY, FLAMETHROWER
-	; end
-
 DratiniBaseData:: ; 0x52664
-	db DRATINI ; 147
+INCLUDE "data/base_stats/dratini.asm"
 
-	db  41,  64,  45,  50,  50,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db DRAGON, DRAGON
-	db 45 ; catch rate
-	db 67 ; base exp
-	db NO_ITEM ; item 1
-	db DRAGON_SCALE ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 40 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn AMPHIBIAN, REPTILE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DETECT, REST, ATTRACT, SURF, WATERFALL, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
-
 DragonairBaseData:: ; 0x52684
-	db DRAGONAIR ; 148
+INCLUDE "data/base_stats/dragonair.asm"
 
-	db  61,  84,  65,  70,  70,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db DRAGON, DRAGON
-	db 45 ; catch rate
-	db 144 ; base exp
-	db NO_ITEM ; item 1
-	db DRAGON_SCALE ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 40 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn AMPHIBIAN, REPTILE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DETECT, REST, ATTRACT, SURF, WATERFALL, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
-
 DragoniteBaseData:: ; 0x526a4
-	db DRAGONITE ; 149
+INCLUDE "data/base_stats/dragonite.asm"
 
-	db  91, 134,  95,  80, 100, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db DRAGON, FLYING
-	db 45 ; catch rate
-	db 218 ; base exp
-	db NO_ITEM ; item 1
-	db DRAGON_SCALE ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 40 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn AMPHIBIAN, REPTILE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, SWIFT, THUNDERPUNCH, DETECT, REST, ATTRACT, STEEL_WING, FIRE_PUNCH, FURY_CUTTER, FLY, SURF, STRENGTH, WHIRLPOOL, WATERFALL, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
-
 MewtwoBaseData:: ; 0x526c4
-	db MEWTWO ; 150
+INCLUDE "data/base_stats/mewtwo.asm"
 
-	db 106, 110,  90, 130, 154,  90
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, PSYCHIC
-	db 3 ; catch rate
-	db 220 ; base exp
-	db NO_ITEM ; item 1
-	db BERSERK_GENE ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 120 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, THUNDERPUNCH, DREAM_EATER, DETECT, REST, FIRE_PUNCH, NIGHTMARE, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
-
 MewBaseData:: ; 0x526e4
-	db MEW ; 151
+INCLUDE "data/base_stats/mew.asm"
 
-	db 100, 100, 100, 100, 100, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, PSYCHIC
-	db 45 ; catch rate
-	db 64 ; base exp
-	db NO_ITEM ; item 1
-	db MIRACLEBERRY ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 120 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, DRAGONBREATH, THUNDER, EARTHQUAKE, RETURN, DIG, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SANDSTORM, FIRE_BLAST, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FIRE_PUNCH, FURY_CUTTER, NIGHTMARE, CUT, FLY, SURF, STRENGTH, FLASH, WHIRLPOOL, WATERFALL, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
-
 ChikoritaBaseData:: ; 0x52704
-	db CHIKORITA ; 152
+INCLUDE "data/base_stats/chikorita.asm"
 
-	db  45,  49,  65,  45,  49,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, GRASS
-	db 45 ; catch rate
-	db 64 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, PLANT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, CUT, FLASH
-	; end
-
 BayleefBaseData:: ; 0x52724
-	db BAYLEEF ; 153
+INCLUDE "data/base_stats/bayleef.asm"
 
-	db  60,  62,  80,  60,  63,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, GRASS
-	db 45 ; catch rate
-	db 141 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, PLANT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, FURY_CUTTER, CUT, STRENGTH, FLASH
-	; end
-
 MeganiumBaseData:: ; 0x52744
-	db MEGANIUM ; 154
+INCLUDE "data/base_stats/meganium.asm"
 
-	db  80,  82, 100,  80,  83, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, GRASS
-	db 45 ; catch rate
-	db 208 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, PLANT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, EARTHQUAKE, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, FURY_CUTTER, CUT, STRENGTH, FLASH
-	; end
-
 CyndaquilBaseData:: ; 0x52764
-	db CYNDAQUIL ; 155
+INCLUDE "data/base_stats/cyndaquil.asm"
 
-	db  39,  52,  43,  65,  60,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 45 ; catch rate
-	db 65 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, DETECT, REST, ATTRACT, CUT, FLAMETHROWER
-	; end
-
 QuilavaBaseData:: ; 0x52784
-	db QUILAVA ; 156
+INCLUDE "data/base_stats/quilava.asm"
 
-	db  58,  64,  58,  80,  80,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 45 ; catch rate
-	db 142 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, DETECT, REST, ATTRACT, FURY_CUTTER, CUT, STRENGTH, FLAMETHROWER
-	; end
-
 TyphlosionBaseData:: ; 0x527a4
-	db TYPHLOSION ; 157
+INCLUDE "data/base_stats/typhlosion.asm"
 
-	db  78,  84,  78, 100, 109,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 45 ; catch rate
-	db 209 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, CUT, STRENGTH, FLAMETHROWER
-	; end
-
 TotodileBaseData:: ; 0x527c4
-	db TOTODILE ; 158
+INCLUDE "data/base_stats/totodile.asm"
 
-	db  50,  65,  64,  43,  44,  48
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 45 ; catch rate
-	db 66 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, CUT, SURF, WHIRLPOOL, ICE_BEAM
-	; end
-
 CroconawBaseData:: ; 0x527e4
-	db CROCONAW ; 159
+INCLUDE "data/base_stats/croconaw.asm"
 
-	db  65,  80,  80,  58,  59,  63
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 45 ; catch rate
-	db 143 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, FURY_CUTTER, CUT, SURF, STRENGTH, WHIRLPOOL, ICE_BEAM
-	; end
-
 FeraligatrBaseData:: ; 0x52804
-	db FERALIGATR ; 160
+INCLUDE "data/base_stats/feraligatr.asm"
 
-	db  85, 105, 100,  78,  79,  83
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 45 ; catch rate
-	db 210 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, FURY_CUTTER, CUT, SURF, STRENGTH, WHIRLPOOL, ICE_BEAM
-	; end
-
 SentretBaseData:: ; 0x52824
-	db SENTRET ; 161
+INCLUDE "data/base_stats/sentret.asm"
 
-	db  35,  46,  34,  20,  35,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 255 ; catch rate
-	db 57 ; base exp
-	db NO_ITEM ; item 1
-	db BERRY ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, CUT, SURF
-	; end
-
 FurretBaseData:: ; 0x52844
-	db FURRET ; 162
+INCLUDE "data/base_stats/furret.asm"
 
-	db  85,  76,  64,  90,  45,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 90 ; catch rate
-	db 116 ; base exp
-	db BERRY ; item 1
-	db GOLD_BERRY ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, CUT, SURF, STRENGTH
-	; end
-
 HoothootBaseData:: ; 0x52864
-	db HOOTHOOT ; 163
+INCLUDE "data/base_stats/hoothoot.asm"
 
-	db  60,  30,  30,  50,  36,  56
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, FLYING
-	db 255 ; catch rate
-	db 58 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, STEEL_WING, NIGHTMARE, FLY, FLASH
-	; end
-
 NoctowlBaseData:: ; 0x52884
-	db NOCTOWL ; 164
+INCLUDE "data/base_stats/noctowl.asm"
 
-	db 100,  50,  50,  70,  76,  96
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, FLYING
-	db 90 ; catch rate
-	db 162 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, STEEL_WING, NIGHTMARE, FLY, FLASH
-	; end
-
 LedybaBaseData:: ; 0x528a4
-	db LEDYBA ; 165
+INCLUDE "data/base_stats/ledyba.asm"
 
-	db  40,  20,  30,  55,  40,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, FLYING
-	db 255 ; catch rate
-	db 54 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DIG, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, THUNDERPUNCH, REST, ATTRACT, THIEF, FLASH
-	; end
-
 LedianBaseData:: ; 0x528c4
-	db LEDIAN ; 166
+INCLUDE "data/base_stats/ledian.asm"
 
-	db  55,  35,  50,  85,  55, 110
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, FLYING
-	db 90 ; catch rate
-	db 134 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DIG, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, THUNDERPUNCH, REST, ATTRACT, THIEF, FLASH
-	; end
-
 SpinarakBaseData:: ; 0x528e4
-	db SPINARAK ; 167
+INCLUDE "data/base_stats/spinarak.asm"
 
-	db  40,  60,  40,  30,  40,  40
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, POISON
-	db 255 ; catch rate
-	db 54 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DIG, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, FLASH
-	; end
-
 AriadosBaseData:: ; 0x52904
-	db ARIADOS ; 168
+INCLUDE "data/base_stats/ariados.asm"
 
-	db  70,  90,  70,  40,  60,  60
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, POISON
-	db 90 ; catch rate
-	db 134 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DIG, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, FLASH
-	; end
-
 CrobatBaseData:: ; 0x52924
-	db CROBAT ; 169
+INCLUDE "data/base_stats/crobat.asm"
 
-	db  85,  90,  80, 130,  70,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, FLYING
-	db 90 ; catch rate
-	db 204 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FLY
-	; end
-
 ChinchouBaseData:: ; 0x52944
-	db CHINCHOU ; 170
+INCLUDE "data/base_stats/chinchou.asm"
 
-	db  75,  38,  38,  67,  56,  56
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, ELECTRIC
-	db 190 ; catch rate
-	db 90 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FISH, FISH ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, SURF, FLASH, WHIRLPOOL, WATERFALL, THUNDERBOLT, ICE_BEAM
-	; end
-
 LanturnBaseData:: ; 0x52964
-	db LANTURN ; 171
+INCLUDE "data/base_stats/lanturn.asm"
 
-	db 125,  58,  58,  67,  76,  76
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, ELECTRIC
-	db 75 ; catch rate
-	db 156 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FISH, FISH ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, SURF, FLASH, WHIRLPOOL, WATERFALL, THUNDERBOLT, ICE_BEAM
-	; end
-
 PichuBaseData:: ; 0x52984
-	db PICHU ; 172
+INCLUDE "data/base_stats/pichu.asm"
 
-	db  20,  40,  15,  60,  35,  35
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, ELECTRIC
-	db 190 ; catch rate
-	db 42 ; base exp
-	db NO_ITEM ; item 1
-	db BERRY ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 10 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, DETECT, REST, ATTRACT, FLASH, THUNDERBOLT
-	; end
-
 CleffaBaseData:: ; 0x529a4
-	db CLEFFA ; 173
+INCLUDE "data/base_stats/cleffa.asm"
 
-	db  50,  25,  28,  15,  45,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 150 ; catch rate
-	db 37 ; base exp
-	db MYSTERYBERRY ; item 1
-	db MOON_STONE ; item 2
-	db 191 ; gender
-	db 100 ; unknown
-	db 10 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, NIGHTMARE, FLASH, FLAMETHROWER
-	; end
-
 IgglybuffBaseData:: ; 0x529c4
-	db IGGLYBUFF ; 174
+INCLUDE "data/base_stats/igglybuff.asm"
 
-	db  90,  30,  15,  15,  40,  20
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 170 ; catch rate
-	db 39 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 191 ; gender
-	db 100 ; unknown
-	db 10 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, NIGHTMARE, FLASH, FLAMETHROWER
-	; end
-
 TogepiBaseData:: ; 0x529e4
-	db TOGEPI ; 175
+INCLUDE "data/base_stats/togepi.asm"
 
-	db  35,  20,  65,  20,  40,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 190 ; catch rate
-	db 74 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 10 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, FLASH, FLAMETHROWER
-	; end
-
 TogeticBaseData:: ; 0x52a04
-	db TOGETIC ; 176
+INCLUDE "data/base_stats/togetic.asm"
 
-	db  55,  40,  85,  40,  80, 105
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, FLYING
-	db 75 ; catch rate
-	db 114 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 10 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn AVIAN, FAIRY ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, STEEL_WING, FLY, FLASH, FLAMETHROWER
-	; end
-
 NatuBaseData:: ; 0x52a24
-	db NATU ; 177
+INCLUDE "data/base_stats/natu.asm"
 
-	db  40,  50,  45,  70,  70,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, FLYING
-	db 190 ; catch rate
-	db 73 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, FLASH
-	; end
-
 XatuBaseData:: ; 0x52a44
-	db XATU ; 178
+INCLUDE "data/base_stats/xatu.asm"
 
-	db  65,  75,  70,  95,  95,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, FLYING
-	db 75 ; catch rate
-	db 171 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, FLY, FLASH
-	; end
-
 MareepBaseData:: ; 0x52a64
-	db MAREEP ; 179
+INCLUDE "data/base_stats/mareep.asm"
 
-	db  55,  40,  40,  35,  65,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, ELECTRIC
-	db 235 ; catch rate
-	db 59 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, FLASH, THUNDERBOLT
-	; end
-
 FlaaffyBaseData:: ; 0x52a84
-	db FLAAFFY ; 180
+INCLUDE "data/base_stats/flaaffy.asm"
 
-	db  70,  55,  55,  45,  80,  60
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, ELECTRIC
-	db 120 ; catch rate
-	db 117 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, FIRE_PUNCH, STRENGTH, FLASH, THUNDERBOLT
-	; end
-
 AmpharosBaseData:: ; 0x52aa4
-	db AMPHAROS ; 181
+INCLUDE "data/base_stats/ampharos.asm"
 
-	db  90,  75,  75,  55, 115,  90
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, ELECTRIC
-	db 45 ; catch rate
-	db 194 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, FIRE_PUNCH, STRENGTH, FLASH, THUNDERBOLT
-	; end
-
 BellossomBaseData:: ; 0x52ac4
-	db BELLOSSOM ; 182
+INCLUDE "data/base_stats/bellossom.asm"
 
-	db  75,  80,  85,  50,  90, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, GRASS
-	db 45 ; catch rate
-	db 184 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn PLANT, PLANT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, CUT, FLASH
-	; end
-
 MarillBaseData:: ; 0x52ae4
-	db MARILL ; 183
+INCLUDE "data/base_stats/marill.asm"
 
-	db  70,  20,  50,  40,  20,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 190 ; catch rate
-	db 58 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn AMPHIBIAN, FAIRY ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
-
 AzumarillBaseData:: ; 0x52b04
-	db AZUMARILL ; 184
+INCLUDE "data/base_stats/azumarill.asm"
 
-	db 100,  50,  80,  50,  50,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 75 ; catch rate
-	db 153 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn AMPHIBIAN, FAIRY ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
-
 SudowoodoBaseData:: ; 0x52b24
-	db SUDOWOODO ; 185
+INCLUDE "data/base_stats/sudowoodo.asm"
 
-	db  70, 100, 115,  30,  30,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, ROCK
-	db 65 ; catch rate
-	db 135 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INANIMATE, INANIMATE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH
-	; end
-
 PolitoedBaseData:: ; 0x52b44
-	db POLITOED ; 186
+INCLUDE "data/base_stats/politoed.asm"
 
-	db  90,  75,  75,  70,  90, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 45 ; catch rate
-	db 185 ; base exp
-	db NO_ITEM ; item 1
-	db KINGS_ROCK ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn AMPHIBIAN, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
-
 HoppipBaseData:: ; 0x52b64
-	db HOPPIP ; 187
+INCLUDE "data/base_stats/hoppip.asm"
 
-	db  35,  35,  40,  50,  35,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, FLYING
-	db 255 ; catch rate
-	db 74 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn FAIRY, PLANT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, FLASH
-	; end
-
 SkiploomBaseData:: ; 0x52b84
-	db SKIPLOOM ; 188
+INCLUDE "data/base_stats/skiploom.asm"
 
-	db  55,  45,  50,  80,  45,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, FLYING
-	db 120 ; catch rate
-	db 136 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn FAIRY, PLANT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, FLASH
-	; end
-
 JumpluffBaseData:: ; 0x52ba4
-	db JUMPLUFF ; 189
+INCLUDE "data/base_stats/jumpluff.asm"
 
-	db  75,  55,  70, 110,  55,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, FLYING
-	db 45 ; catch rate
-	db 176 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn FAIRY, PLANT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, FLASH
-	; end
-
 AipomBaseData:: ; 0x52bc4
-	db AIPOM ; 190
+INCLUDE "data/base_stats/aipom.asm"
 
-	db  55,  70,  55,  85,  40,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 45 ; catch rate
-	db 94 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, NIGHTMARE, CUT, STRENGTH, THUNDERBOLT
-	; end
-
 SunkernBaseData:: ; 0x52be4
-	db SUNKERN ; 191
+INCLUDE "data/base_stats/sunkern.asm"
 
-	db  30,  30,  30,  30,  30,  30
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, GRASS
-	db 235 ; catch rate
-	db 52 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn PLANT, PLANT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
-	; end
-
 SunfloraBaseData:: ; 0x52c04
-	db SUNFLORA ; 192
+INCLUDE "data/base_stats/sunflora.asm"
 
-	db  75,  75,  55,  30, 105,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, GRASS
-	db 120 ; catch rate
-	db 146 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn PLANT, PLANT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
-	; end
-
 YanmaBaseData:: ; 0x52c24
-	db YANMA ; 193
+INCLUDE "data/base_stats/yanma.asm"
 
-	db  65,  65,  45,  95,  75,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, FLYING
-	db 75 ; catch rate
-	db 147 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, FLASH
-	; end
-
 WooperBaseData:: ; 0x52c44
-	db WOOPER ; 194
+INCLUDE "data/base_stats/wooper.asm"
 
-	db  55,  45,  45,  15,  25,  25
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, GROUND
-	db 255 ; catch rate
-	db 52 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, SURF, FLASH, WHIRLPOOL, ICE_BEAM
-	; end
-
 QuagsireBaseData:: ; 0x52c64
-	db QUAGSIRE ; 195
+INCLUDE "data/base_stats/quagsire.asm"
 
-	db  95,  85,  85,  35,  65,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, GROUND
-	db 90 ; catch rate
-	db 137 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, SURF, STRENGTH, FLASH, WHIRLPOOL, ICE_BEAM
-	; end
-
 EspeonBaseData:: ; 0x52c84
-	db ESPEON ; 196
+INCLUDE "data/base_stats/espeon.asm"
 
-	db  65,  65,  60, 110, 130,  95
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, PSYCHIC
-	db 45 ; catch rate
-	db 197 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 35 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, NIGHTMARE, CUT, FLASH
-	; end
-
 UmbreonBaseData:: ; 0x52ca4
-	db UMBREON ; 197
+INCLUDE "data/base_stats/umbreon.asm"
 
-	db  95,  65, 110,  65,  60, 130
-	;   hp  atk  def  spd  sat  sdf
-
-	db DARK, DARK
-	db 45 ; catch rate
-	db 197 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 35 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, NIGHTMARE, CUT, FLASH
-	; end
-
 MurkrowBaseData:: ; 0x52cc4
-	db MURKROW ; 198
+INCLUDE "data/base_stats/murkrow.asm"
 
-	db  60,  85,  42,  91,  85,  42
-	;   hp  atk  def  spd  sat  sdf
-
-	db DARK, FLYING
-	db 30 ; catch rate
-	db 107 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, STEEL_WING, NIGHTMARE, FLY
-	; end
-
 SlowkingBaseData:: ; 0x52ce4
-	db SLOWKING ; 199
+INCLUDE "data/base_stats/slowking.asm"
 
-	db  95,  75,  80,  30, 100, 110
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, PSYCHIC
-	db 70 ; catch rate
-	db 164 ; base exp
-	db NO_ITEM ; item 1
-	db KINGS_ROCK ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn MONSTER, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DREAM_EATER, REST, ATTRACT, FURY_CUTTER, NIGHTMARE, SURF, STRENGTH, FLASH, WHIRLPOOL, FLAMETHROWER, ICE_BEAM
-	; end
+MisdreavusBaseData:: ; 0x52d04
+INCLUDE "data/base_stats/misdreavus.asm"
 
-MisdreavusBaseData:: ; 0x52d04
-	db MISDREAVUS ; 200
-
-	db  60,  60,  60,  85,  85,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db GHOST, GHOST
-	db 45 ; catch rate
-	db 147 ; base exp
-	db NO_ITEM ; item 1
-	db SPELL_TAG ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn AMORPHOUS, AMORPHOUS ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, FLASH, THUNDERBOLT
-	; end
-
 UnownBaseData:: ; 0x52d24
-	db UNOWN ; 201
+INCLUDE "data/base_stats/unown.asm"
 
-	db  48,  72,  48,  48,  72,  48
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, PSYCHIC
-	db 225 ; catch rate
-	db 61 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 40 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm
-	; end
-
 WobbuffetBaseData:: ; 0x52d44
-	db WOBBUFFET ; 202
+INCLUDE "data/base_stats/wobbuffet.asm"
 
-	db 190,  33,  58,  33,  33,  58
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, PSYCHIC
-	db 45 ; catch rate
-	db 177 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMORPHOUS, AMORPHOUS ; egg groups
-
-	; tmhm
-	tmhm
-	; end
-
 GirafarigBaseData:: ; 0x52d64
-	db GIRAFARIG ; 203
+INCLUDE "data/base_stats/girafarig.asm"
 
-	db  70,  80,  65,  85,  90,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, PSYCHIC
-	db 60 ; catch rate
-	db 149 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, STRENGTH, THUNDERBOLT
-	; end
-
 PinecoBaseData:: ; 0x52d84
-	db PINECO ; 204
+INCLUDE "data/base_stats/pineco.asm"
 
-	db  50,  65,  90,  15,  35,  35
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, BUG
-	db 190 ; catch rate
-	db 60 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, STRENGTH
-	; end
-
 ForretressBaseData:: ; 0x52da4
-	db FORRETRESS ; 205
+INCLUDE "data/base_stats/forretress.asm"
 
-	db  75,  90, 140,  40,  60,  60
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, STEEL
-	db 75 ; catch rate
-	db 118 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, STRENGTH
-	; end
-
 DunsparceBaseData:: ; 0x52dc4
-	db DUNSPARCE ; 206
+INCLUDE "data/base_stats/dunsparce.asm"
 
-	db 100,  70,  70,  45,  65,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 190 ; catch rate
-	db 75 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, THUNDER, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, STRENGTH, FLAMETHROWER, THUNDERBOLT
-	; end
-
 GligarBaseData:: ; 0x52de4
-	db GLIGAR ; 207
+INCLUDE "data/base_stats/gligar.asm"
 
-	db  65,  75, 105,  85,  35,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db GROUND, FLYING
-	db 60 ; catch rate
-	db 108 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SANDSTORM, SWIFT, DETECT, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, STRENGTH
-	; end
-
 SteelixBaseData:: ; 0x52e04
-	db STEELIX ; 208
+INCLUDE "data/base_stats/steelix.asm"
 
-	db  75,  85, 200,  30,  55,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db STEEL, GROUND
-	db 25 ; catch rate
-	db 196 ; base exp
-	db NO_ITEM ; item 1
-	db METAL_COAT ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INANIMATE, INANIMATE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, CUT, STRENGTH
-	; end
-
 SnubbullBaseData:: ; 0x52e24
-	db SNUBBULL ; 209
+INCLUDE "data/base_stats/snubbull.asm"
 
-	db  60,  80,  50,  30,  40,  40
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 190 ; catch rate
-	db 63 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 191 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn FIELD, FAIRY ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, THUNDERBOLT
-	; end
-
 GranbullBaseData:: ; 0x52e44
-	db GRANBULL ; 210
+INCLUDE "data/base_stats/granbull.asm"
 
-	db  90, 120,  75,  45,  60,  60
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 75 ; catch rate
-	db 178 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 191 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn FIELD, FAIRY ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, THUNDERBOLT
-	; end
-
 QwilfishBaseData:: ; 0x52e64
-	db QWILFISH ; 211
+INCLUDE "data/base_stats/qwilfish.asm"
 
-	db  65,  95,  75,  85,  55,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, POISON
-	db 45 ; catch rate
-	db 100 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FISH, FISH ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SWIFT, DEFENSE_CURL, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
-
 ScizorBaseData:: ; 0x52e84
-	db SCIZOR ; 212
+INCLUDE "data/base_stats/scizor.asm"
 
-	db  70, 130, 100,  65,  55,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, STEEL
-	db 25 ; catch rate
-	db 200 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FURY_CUTTER, CUT, STRENGTH
-	; end
-
 ShuckleBaseData:: ; 0x52ea4
-	db SHUCKLE ; 213
+INCLUDE "data/base_stats/shuckle.asm"
 
-	db  20,  10, 230,  05,  10, 230
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, ROCK
-	db 190 ; catch rate
-	db 80 ; base exp
-	db BERRY ; item 1
-	db BERRY ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, STRENGTH, FLASH
-	; end
-
 HeracrossBaseData:: ; 0x52ec4
-	db HERACROSS ; 214
+INCLUDE "data/base_stats/heracross.asm"
 
-	db  80, 125,  75,  85,  40,  95
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, FIGHTING
-	db 45 ; catch rate
-	db 200 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, STRENGTH
-	; end
-
 SneaselBaseData:: ; 0x52ee4
-	db SNEASEL ; 215
+INCLUDE "data/base_stats/sneasel.asm"
 
-	db  55,  95,  55, 115,  35,  75
-	;   hp  atk  def  spd  sat  sdf
-
-	db DARK, ICE
-	db 60 ; catch rate
-	db 132 ; base exp
-	db NO_ITEM ; item 1
-	db QUICK_CLAW ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, FURY_CUTTER, NIGHTMARE, CUT, SURF, STRENGTH, ICE_BEAM
-	; end
-
 TeddiursaBaseData:: ; 0x52f04
-	db TEDDIURSA ; 216
+INCLUDE "data/base_stats/teddiursa.asm"
 
-	db  60,  80,  50,  40,  50,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 120 ; catch rate
-	db 124 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, CUT, STRENGTH
-	; end
-
 UrsaringBaseData:: ; 0x52f24
-	db URSARING ; 217
+INCLUDE "data/base_stats/ursaring.asm"
 
-	db  90, 130,  75,  55,  75,  75
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 60 ; catch rate
-	db 189 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, CUT, STRENGTH
-	; end
-
 SlugmaBaseData:: ; 0x52f44
-	db SLUGMA ; 218
+INCLUDE "data/base_stats/slugma.asm"
 
-	db  40,  40,  40,  20,  70,  40
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 190 ; catch rate
-	db 78 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMORPHOUS, AMORPHOUS ; egg groups
-
-	; tmhm
-	tmhm CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, REST, ATTRACT, FLAMETHROWER
-	; end
-
 MagcargoBaseData:: ; 0x52f64
-	db MAGCARGO ; 219
+INCLUDE "data/base_stats/magcargo.asm"
 
-	db  50,  50, 120,  30,  80,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, ROCK
-	db 75 ; catch rate
-	db 154 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMORPHOUS, AMORPHOUS ; egg groups
-
-	; tmhm
-	tmhm CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, REST, ATTRACT, STRENGTH, FLAMETHROWER
-	; end
-
 SwinubBaseData:: ; 0x52f84
-	db SWINUB ; 220
+INCLUDE "data/base_stats/swinub.asm"
 
-	db  50,  50,  40,  50,  30,  30
-	;   hp  atk  def  spd  sat  sdf
-
-	db ICE, GROUND
-	db 225 ; catch rate
-	db 78 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, STRENGTH, ICE_BEAM
-	; end
-
 PiloswineBaseData:: ; 0x52fa4
-	db PILOSWINE ; 221
+INCLUDE "data/base_stats/piloswine.asm"
 
-	db 100, 100,  80,  50,  60,  60
-	;   hp  atk  def  spd  sat  sdf
-
-	db ICE, GROUND
-	db 75 ; catch rate
-	db 160 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, STRENGTH, ICE_BEAM
-	; end
-
 CorsolaBaseData:: ; 0x52fc4
-	db CORSOLA ; 222
+INCLUDE "data/base_stats/corsola.asm"
 
-	db  55,  55,  85,  35,  65,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, ROCK
-	db 60 ; catch rate
-	db 113 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 191 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn AMPHIBIAN, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, SURF, STRENGTH, WHIRLPOOL, ICE_BEAM
-	; end
-
 RemoraidBaseData:: ; 0x52fe4
-	db REMORAID ; 223
+INCLUDE "data/base_stats/remoraid.asm"
 
-	db  35,  65,  35,  65,  65,  35
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 190 ; catch rate
-	db 78 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, FISH ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, THIEF, SURF, WHIRLPOOL, FLAMETHROWER, ICE_BEAM
-	; end
-
 OctilleryBaseData:: ; 0x53004
-	db OCTILLERY ; 224
+INCLUDE "data/base_stats/octillery.asm"
 
-	db  75, 105,  75,  45, 105,  75
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 75 ; catch rate
-	db 164 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, FISH ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, THIEF, SURF, WHIRLPOOL, FLAMETHROWER, ICE_BEAM
-	; end
-
 DelibirdBaseData:: ; 0x53024
-	db DELIBIRD ; 225
+INCLUDE "data/base_stats/delibird.asm"
 
-	db  45,  55,  45,  75,  65,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db ICE, FLYING
-	db 45 ; catch rate
-	db 183 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn AMPHIBIAN, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, FLY, ICE_BEAM
-	; end
-
 MantineBaseData:: ; 0x53044
-	db MANTINE ; 226
+INCLUDE "data/base_stats/mantine.asm"
 
-	db  65,  40,  70,  70,  80, 140
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, FLYING
-	db 25 ; catch rate
-	db 168 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn AMPHIBIAN, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
-
 SkarmoryBaseData:: ; 0x53064
-	db SKARMORY ; 227
+INCLUDE "data/base_stats/skarmory.asm"
 
-	db  65,  80, 140,  70,  40,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db STEEL, FLYING
-	db 25 ; catch rate
-	db 168 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, CUT, FLY
-	; end
-
 HoundourBaseData:: ; 0x53084
-	db HOUNDOUR ; 228
+INCLUDE "data/base_stats/houndour.asm"
 
-	db  45,  60,  30,  65,  80,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db DARK, FIRE
-	db 120 ; catch rate
-	db 114 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, FIRE_BLAST, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, FLAMETHROWER
-	; end
-
 HoundoomBaseData:: ; 0x530a4
-	db HOUNDOOM ; 229
+INCLUDE "data/base_stats/houndoom.asm"
 
-	db  75,  90,  50,  95, 110,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db DARK, FIRE
-	db 45 ; catch rate
-	db 204 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, FIRE_BLAST, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, STRENGTH, FLAMETHROWER
-	; end
-
 KingdraBaseData:: ; 0x530c4
-	db KINGDRA ; 230
+INCLUDE "data/base_stats/kingdra.asm"
 
-	db  75,  95,  95,  85,  95,  95
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, DRAGON
-	db 45 ; catch rate
-	db 207 ; base exp
-	db NO_ITEM ; item 1
-	db DRAGON_SCALE ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, REPTILE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, DRAGONBREATH, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
-
 PhanpyBaseData:: ; 0x530e4
-	db PHANPY ; 231
+INCLUDE "data/base_stats/phanpy.asm"
 
-	db  90,  60,  60,  40,  40,  40
-	;   hp  atk  def  spd  sat  sdf
-
-	db GROUND, GROUND
-	db 120 ; catch rate
-	db 124 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, STRENGTH
-	; end
-
 DonphanBaseData:: ; 0x53104
-	db DONPHAN ; 232
+INCLUDE "data/base_stats/donphan.asm"
 
-	db  90, 120, 120,  50,  60,  60
-	;   hp  atk  def  spd  sat  sdf
-
-	db GROUND, GROUND
-	db 60 ; catch rate
-	db 189 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, STRENGTH
-	; end
-
 Porygon2BaseData:: ; 0x53124
-	db PORYGON2 ; 233
+INCLUDE "data/base_stats/porygon2.asm"
 
-	db  85,  80,  90,  60, 105,  95
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 45 ; catch rate
-	db 180 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INANIMATE, INANIMATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, DREAM_EATER, REST, THIEF, NIGHTMARE, FLASH, THUNDERBOLT, ICE_BEAM
-	; end
-
 StantlerBaseData:: ; 0x53144
-	db STANTLER ; 234
+INCLUDE "data/base_stats/stantler.asm"
 
-	db  73,  95,  62,  85,  85,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 45 ; catch rate
-	db 165 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, FLASH
-	; end
-
 SmeargleBaseData:: ; 0x53164
-	db SMEARGLE ; 235
+INCLUDE "data/base_stats/smeargle.asm"
 
-	db  55,  20,  35,  75,  20,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 45 ; catch rate
-	db 106 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm
-	; end
-
 TyrogueBaseData:: ; 0x53184
-	db TYROGUE ; 236
+INCLUDE "data/base_stats/tyrogue.asm"
 
-	db  35,  35,  35,  35,  35,  35
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIGHTING, FIGHTING
-	db 75 ; catch rate
-	db 91 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 0 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STRENGTH
-	; end
-
 HitmontopBaseData:: ; 0x531a4
-	db HITMONTOP ; 237
+INCLUDE "data/base_stats/hitmontop.asm"
 
-	db  50,  95,  95,  70,  35, 110
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIGHTING, FIGHTING
-	db 45 ; catch rate
-	db 138 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 0 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STRENGTH
-	; end
-
 SmoochumBaseData:: ; 0x531c4
-	db SMOOCHUM ; 238
+INCLUDE "data/base_stats/smoochum.asm"
 
-	db  45,  30,  15,  65,  85,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db ICE, PSYCHIC
-	db 45 ; catch rate
-	db 87 ; base exp
-	db ICE_BERRY ; item 1
-	db ICE_BERRY ; item 2
-	db 254 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SWEET_SCENT, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, ICE_BEAM
-	; end
-
 ElekidBaseData:: ; 0x531e4
-	db ELEKID ; 239
+INCLUDE "data/base_stats/elekid.asm"
 
-	db  45,  63,  37,  95,  65,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, ELECTRIC
-	db 45 ; catch rate
-	db 106 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 63 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FLASH, THUNDERBOLT
-	; end
-
 MagbyBaseData:: ; 0x53204
-	db MAGBY ; 240
+INCLUDE "data/base_stats/magby.asm"
 
-	db  45,  75,  37,  83,  70,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 45 ; catch rate
-	db 117 ; base exp
-	db BURNT_BERRY ; item 1
-	db BURNT_BERRY ; item 2
-	db 63 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FLAMETHROWER
-	; end
-
 MiltankBaseData:: ; 0x53224
-	db MILTANK ; 241
+INCLUDE "data/base_stats/miltank.asm"
 
-	db  95,  80, 105, 100,  40,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 45 ; catch rate
-	db 200 ; base exp
-	db MOOMOO_MILK ; item 1
-	db MOOMOO_MILK ; item 2
-	db 254 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, FIRE_PUNCH, SURF, STRENGTH, THUNDERBOLT, ICE_BEAM
-	; end
-
 BlisseyBaseData:: ; 0x53244
-	db BLISSEY ; 242
+INCLUDE "data/base_stats/blissey.asm"
 
-	db 255,  10,  10,  55,  75, 135
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 30 ; catch rate
-	db 255 ; base exp
-	db NO_ITEM ; item 1
-	db LUCKY_EGG ; item 2
-	db 254 ; gender
-	db 100 ; unknown
-	db 40 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn FAIRY, FAIRY ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, DREAM_EATER, REST, ATTRACT, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
-
 RaikouBaseData:: ; 0x53264
-	db RAIKOU ; 243
+INCLUDE "data/base_stats/raikou.asm"
 
-	db  90,  85,  75, 115, 115, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, ELECTRIC
-	db 3 ; catch rate
-	db 216 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 80 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DETECT, REST, CUT, STRENGTH, FLASH, THUNDERBOLT
-	; end
-
 EnteiBaseData:: ; 0x53284
-	db ENTEI ; 244
+INCLUDE "data/base_stats/entei.asm"
 
-	db 115, 115,  85, 100,  90,  75
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 3 ; catch rate
-	db 217 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 80 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, SWIFT, DETECT, REST, CUT, STRENGTH, FLASH, FLAMETHROWER
-	; end
-
 SuicuneBaseData:: ; 0x532a4
-	db SUICUNE ; 245
+INCLUDE "data/base_stats/suicune.asm"
 
-	db 100,  75, 115,  85,  90, 115
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 3 ; catch rate
-	db 215 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 80 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DETECT, REST, CUT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
-
 LarvitarBaseData:: ; 0x532c4
-	db LARVITAR ; 246
+INCLUDE "data/base_stats/larvitar.asm"
 
-	db  50,  64,  50,  41,  45,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, GROUND
-	db 45 ; catch rate
-	db 67 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 40 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn MONSTER, MONSTER ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DETECT, REST, ATTRACT
-	; end
-
 PupitarBaseData:: ; 0x532e4
-	db PUPITAR ; 247
+INCLUDE "data/base_stats/pupitar.asm"
 
-	db  70,  84,  70,  51,  65,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, GROUND
-	db 45 ; catch rate
-	db 144 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 40 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn MONSTER, MONSTER ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DETECT, REST, ATTRACT
-	; end
-
 TyranitarBaseData:: ; 0x53304
-	db TYRANITAR ; 248
+INCLUDE "data/base_stats/tyranitar.asm"
 
-	db 100, 134, 110,  61,  95, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, DARK
-	db 45 ; catch rate
-	db 218 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 40 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn MONSTER, MONSTER ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DETECT, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, NIGHTMARE, CUT, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
-
 LugiaBaseData:: ; 0x53324
-	db LUGIA ; 249
+INCLUDE "data/base_stats/lugia.asm"
 
-	db 106,  90, 130, 110,  90, 154
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, FLYING
-	db 3 ; catch rate
-	db 220 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 120 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, THUNDER, EARTHQUAKE, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DREAM_EATER, DETECT, REST, STEEL_WING, NIGHTMARE, FLY, SURF, STRENGTH, WHIRLPOOL, WATERFALL, THUNDERBOLT, ICE_BEAM
-	; end
-
 Ho_OhBaseData:: ; 0x53344
-	db HO_OH ; 250
+INCLUDE "data/base_stats/ho_oh.asm"
 
-	db 106, 130,  90,  90, 110, 154
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FLYING
-	db 3 ; catch rate
-	db 220 ; base exp
-	db SACRED_ASH ; item 1
-	db SACRED_ASH ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 120 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7 , 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, DRAGONBREATH, THUNDER, EARTHQUAKE, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, SWIFT, DREAM_EATER, DETECT, REST, STEEL_WING, NIGHTMARE, FLY, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT
-	; end
-
 CelebiBaseData:: ; 0x53364
-	db CELEBI ; 251
+INCLUDE "data/base_stats/celebi.asm"
 
-	db 100, 100, 100, 100, 100, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, GRASS
-	db 45 ; catch rate
-	db 64 ; base exp
-	db NO_ITEM ; item 1
-	db MIRACLEBERRY ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 120 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5 , 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DEFENSE_CURL, DREAM_EATER, DETECT, REST, NIGHTMARE, FLASH
-	; end
--- /dev/null
+++ b/data/base_stats/abra.asm
@@ -1,0 +1,22 @@
+	db ABRA ; 063
+
+	db  25,  20,  15,  90, 105,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, PSYCHIC
+	db 200 ; catch rate
+	db 73 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 63 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, THIEF, FIRE_PUNCH, NIGHTMARE, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/aerodactyl.asm
@@ -1,0 +1,22 @@
+	db AERODACTYL ; 142
+
+	db  80, 105,  65, 130,  60,  75
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, FLYING
+	db 45 ; catch rate
+	db 202 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 35 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, EARTHQUAKE, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, SWIFT, DETECT, REST, ATTRACT, STEEL_WING, FLY, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/aipom.asm
@@ -1,0 +1,22 @@
+	db AIPOM ; 190
+
+	db  55,  70,  55,  85,  40,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 45 ; catch rate
+	db 94 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, NIGHTMARE, CUT, STRENGTH, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/alakazam.asm
@@ -1,0 +1,22 @@
+	db ALAKAZAM ; 065
+
+	db  55,  50,  45, 120, 135,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, PSYCHIC
+	db 50 ; catch rate
+	db 186 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 63 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DIG, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, THIEF, FIRE_PUNCH, NIGHTMARE, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/ampharos.asm
@@ -1,0 +1,22 @@
+	db AMPHAROS ; 181
+
+	db  90,  75,  75,  55, 115,  90
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, ELECTRIC
+	db 45 ; catch rate
+	db 194 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, FIRE_PUNCH, STRENGTH, FLASH, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/arbok.asm
@@ -1,0 +1,22 @@
+	db ARBOK ; 024
+
+	db  60,  85,  69,  80,  65,  79
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, POISON
+	db 90 ; catch rate
+	db 147 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, REPTILE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, STRENGTH
+	; end
--- /dev/null
+++ b/data/base_stats/arcanine.asm
@@ -1,0 +1,22 @@
+	db ARCANINE ; 059
+
+	db  90, 110,  80,  95, 100,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 75 ; catch rate
+	db 213 ; base exp
+	db BURNT_BERRY ; item 1
+	db BURNT_BERRY ; item 2
+	db 63 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, REST, ATTRACT, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/ariados.asm
@@ -1,0 +1,22 @@
+	db ARIADOS ; 168
+
+	db  70,  90,  70,  40,  60,  60
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, POISON
+	db 90 ; catch rate
+	db 134 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DIG, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/articuno.asm
@@ -1,0 +1,22 @@
+	db ARTICUNO ; 144
+
+	db  90,  85, 100,  85,  95, 125
+	;   hp  atk  def  spd  sat  sdf
+
+	db ICE, FLYING
+	db 3 ; catch rate
+	db 215 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 80 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DETECT, REST, STEEL_WING, FLY, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/azumarill.asm
@@ -1,0 +1,22 @@
+	db AZUMARILL ; 184
+
+	db 100,  50,  80,  50,  50,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 75 ; catch rate
+	db 153 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn AMPHIBIAN, FAIRY ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/bayleef.asm
@@ -1,0 +1,22 @@
+	db BAYLEEF ; 153
+
+	db  60,  62,  80,  60,  63,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, GRASS
+	db 45 ; catch rate
+	db 141 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, PLANT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, FURY_CUTTER, CUT, STRENGTH, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/beedrill.asm
@@ -1,0 +1,22 @@
+	db BEEDRILL ; 015
+
+	db  65,  80,  40,  75,  45,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, POISON
+	db 45 ; catch rate
+	db 159 ; base exp
+	db NO_ITEM ; item 1
+	db POISON_BARB ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SWIFT, REST, ATTRACT, FURY_CUTTER, CUT
+	; end
--- /dev/null
+++ b/data/base_stats/bellossom.asm
@@ -1,0 +1,22 @@
+	db BELLOSSOM ; 182
+
+	db  75,  80,  85,  50,  90, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, GRASS
+	db 45 ; catch rate
+	db 184 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn PLANT, PLANT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, CUT, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/bellsprout.asm
@@ -1,0 +1,22 @@
+	db BELLSPROUT ; 069
+
+	db  50,  75,  35,  40,  70,  30
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, POISON
+	db 255 ; catch rate
+	db 84 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn PLANT, PLANT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/blastoise.asm
@@ -1,0 +1,22 @@
+	db BLASTOISE ; 009
+
+	db  79,  83, 100,  78,  85, 105
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 45 ; catch rate
+	db 210 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/blissey.asm
@@ -1,0 +1,22 @@
+	db BLISSEY ; 242
+
+	db 255,  10,  10,  55,  75, 135
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 30 ; catch rate
+	db 255 ; base exp
+	db NO_ITEM ; item 1
+	db LUCKY_EGG ; item 2
+	db 254 ; gender
+	db 100 ; unknown
+	db 40 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn FAIRY, FAIRY ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, DREAM_EATER, REST, ATTRACT, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/bulbasaur.asm
@@ -1,0 +1,22 @@
+	db BULBASAUR ; 001
+
+	db  45,  49,  49,  45,  65,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, POISON
+	db 45 ; catch rate
+	db 64 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, PLANT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, FURY_CUTTER, CUT, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/butterfree.asm
@@ -1,0 +1,22 @@
+	db BUTTERFREE ; 012
+
+	db  60,  45,  50,  70,  80,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, FLYING
+	db 45 ; catch rate
+	db 160 ; base exp
+	db NO_ITEM ; item 1
+	db SILVERPOWDER ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, NIGHTMARE, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/caterpie.asm
@@ -1,0 +1,22 @@
+	db CATERPIE ; 010
+
+	db  45,  30,  35,  45,  20,  20
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, BUG
+	db 255 ; catch rate
+	db 53 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm
+	; end
--- /dev/null
+++ b/data/base_stats/celebi.asm
@@ -1,0 +1,22 @@
+	db CELEBI ; 251
+
+	db 100, 100, 100, 100, 100, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, GRASS
+	db 45 ; catch rate
+	db 64 ; base exp
+	db NO_ITEM ; item 1
+	db MIRACLEBERRY ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 120 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5 , 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DEFENSE_CURL, DREAM_EATER, DETECT, REST, NIGHTMARE, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/chansey.asm
@@ -1,0 +1,22 @@
+	db CHANSEY ; 113
+
+	db 250,  05,  05,  50,  35, 105
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 30 ; catch rate
+	db 255 ; base exp
+	db NO_ITEM ; item 1
+	db LUCKY_EGG ; item 2
+	db 254 ; gender
+	db 100 ; unknown
+	db 40 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn FAIRY, FAIRY ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, DREAM_EATER, REST, ATTRACT, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/charizard.asm
@@ -1,0 +1,22 @@
+	db CHARIZARD ; 006
+
+	db  78,  84,  78, 100, 109,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FLYING
+	db 45 ; catch rate
+	db 209 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, REPTILE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, SWIFT, DEFENSE_CURL, REST, ATTRACT, STEEL_WING, FIRE_PUNCH, FURY_CUTTER, CUT, FLY, STRENGTH, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/charmander.asm
@@ -1,0 +1,22 @@
+	db CHARMANDER ; 004
+
+	db  39,  52,  43,  65,  60,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 45 ; catch rate
+	db 65 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, REPTILE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, CUT, STRENGTH, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/charmeleon.asm
@@ -1,0 +1,22 @@
+	db CHARMELEON ; 005
+
+	db  58,  64,  58,  80,  80,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 45 ; catch rate
+	db 142 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, REPTILE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, CUT, STRENGTH, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/chikorita.asm
@@ -1,0 +1,22 @@
+	db CHIKORITA ; 152
+
+	db  45,  49,  65,  45,  49,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, GRASS
+	db 45 ; catch rate
+	db 64 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, PLANT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, CUT, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/chinchou.asm
@@ -1,0 +1,22 @@
+	db CHINCHOU ; 170
+
+	db  75,  38,  38,  67,  56,  56
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, ELECTRIC
+	db 190 ; catch rate
+	db 90 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FISH, FISH ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, SURF, FLASH, WHIRLPOOL, WATERFALL, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/clefable.asm
@@ -1,0 +1,22 @@
+	db CLEFABLE ; 036
+
+	db  95,  70,  73,  60,  85,  90
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 25 ; catch rate
+	db 129 ; base exp
+	db MYSTERYBERRY ; item 1
+	db MOON_STONE ; item 2
+	db 191 ; gender
+	db 100 ; unknown
+	db 10 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn FAIRY, FAIRY ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, DETECT, REST, ATTRACT, FIRE_PUNCH, NIGHTMARE, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/clefairy.asm
@@ -1,0 +1,22 @@
+	db CLEFAIRY ; 035
+
+	db  70,  45,  48,  35,  60,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 150 ; catch rate
+	db 68 ; base exp
+	db MYSTERYBERRY ; item 1
+	db MOON_STONE ; item 2
+	db 191 ; gender
+	db 100 ; unknown
+	db 10 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn FAIRY, FAIRY ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, DETECT, REST, ATTRACT, FIRE_PUNCH, NIGHTMARE, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/cleffa.asm
@@ -1,0 +1,22 @@
+	db CLEFFA ; 173
+
+	db  50,  25,  28,  15,  45,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 150 ; catch rate
+	db 37 ; base exp
+	db MYSTERYBERRY ; item 1
+	db MOON_STONE ; item 2
+	db 191 ; gender
+	db 100 ; unknown
+	db 10 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, NIGHTMARE, FLASH, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/cloyster.asm
@@ -1,0 +1,22 @@
+	db CLOYSTER ; 091
+
+	db  50,  95, 180,  70,  85,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, ICE
+	db 60 ; catch rate
+	db 203 ; base exp
+	db PEARL ; item 1
+	db BIG_PEARL ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn INVERTEBRATE, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WHIRLPOOL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/corsola.asm
@@ -1,0 +1,22 @@
+	db CORSOLA ; 222
+
+	db  55,  55,  85,  35,  65,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, ROCK
+	db 60 ; catch rate
+	db 113 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 191 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn AMPHIBIAN, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, SURF, STRENGTH, WHIRLPOOL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/crobat.asm
@@ -1,0 +1,22 @@
+	db CROBAT ; 169
+
+	db  85,  90,  80, 130,  70,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, FLYING
+	db 90 ; catch rate
+	db 204 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FLY
+	; end
--- /dev/null
+++ b/data/base_stats/croconaw.asm
@@ -1,0 +1,22 @@
+	db CROCONAW ; 159
+
+	db  65,  80,  80,  58,  59,  63
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 45 ; catch rate
+	db 143 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, FURY_CUTTER, CUT, SURF, STRENGTH, WHIRLPOOL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/cubone.asm
@@ -1,0 +1,22 @@
+	db CUBONE ; 104
+
+	db  50,  50,  95,  35,  40,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db GROUND, GROUND
+	db 190 ; catch rate
+	db 87 ; base exp
+	db NO_ITEM ; item 1
+	db THICK_CLUB ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn MONSTER, MONSTER ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLAMETHROWER, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/cyndaquil.asm
@@ -1,0 +1,22 @@
+	db CYNDAQUIL ; 155
+
+	db  39,  52,  43,  65,  60,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 45 ; catch rate
+	db 65 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, DETECT, REST, ATTRACT, CUT, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/delibird.asm
@@ -1,0 +1,22 @@
+	db DELIBIRD ; 225
+
+	db  45,  55,  45,  75,  65,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db ICE, FLYING
+	db 45 ; catch rate
+	db 183 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn AMPHIBIAN, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, FLY, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/dewgong.asm
@@ -1,0 +1,22 @@
+	db DEWGONG ; 087
+
+	db  90,  70,  80,  70,  70,  95
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, ICE
+	db 75 ; catch rate
+	db 176 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/diglett.asm
@@ -1,0 +1,22 @@
+	db DIGLETT ; 050
+
+	db  10,  55,  25,  95,  35,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db GROUND, GROUND
+	db 255 ; catch rate
+	db 81 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, CUT
+	; end
--- /dev/null
+++ b/data/base_stats/ditto.asm
@@ -1,0 +1,22 @@
+	db DITTO ; 132
+
+	db  48,  48,  48,  48,  48,  48
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 35 ; catch rate
+	db 61 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn LADIES_MAN, LADIES_MAN ; egg groups
+
+	; tmhm
+	tmhm
+	; end
--- /dev/null
+++ b/data/base_stats/dodrio.asm
@@ -1,0 +1,22 @@
+	db DODRIO ; 085
+
+	db  60, 110,  70, 100,  60,  60
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, FLYING
+	db 45 ; catch rate
+	db 158 ; base exp
+	db NO_ITEM ; item 1
+	db SHARP_BEAK ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, THIEF, STEEL_WING, FLY
+	; end
--- /dev/null
+++ b/data/base_stats/doduo.asm
@@ -1,0 +1,22 @@
+	db DODUO ; 084
+
+	db  35,  85,  45,  75,  35,  35
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, FLYING
+	db 190 ; catch rate
+	db 96 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, THIEF, STEEL_WING, FLY
+	; end
--- /dev/null
+++ b/data/base_stats/donphan.asm
@@ -1,0 +1,22 @@
+	db DONPHAN ; 232
+
+	db  90, 120, 120,  50,  60,  60
+	;   hp  atk  def  spd  sat  sdf
+
+	db GROUND, GROUND
+	db 60 ; catch rate
+	db 189 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, STRENGTH
+	; end
--- /dev/null
+++ b/data/base_stats/dragonair.asm
@@ -1,0 +1,22 @@
+	db DRAGONAIR ; 148
+
+	db  61,  84,  65,  70,  70,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db DRAGON, DRAGON
+	db 45 ; catch rate
+	db 144 ; base exp
+	db NO_ITEM ; item 1
+	db DRAGON_SCALE ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 40 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn AMPHIBIAN, REPTILE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DETECT, REST, ATTRACT, SURF, WATERFALL, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/dragonite.asm
@@ -1,0 +1,22 @@
+	db DRAGONITE ; 149
+
+	db  91, 134,  95,  80, 100, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db DRAGON, FLYING
+	db 45 ; catch rate
+	db 218 ; base exp
+	db NO_ITEM ; item 1
+	db DRAGON_SCALE ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 40 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn AMPHIBIAN, REPTILE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, SWIFT, THUNDERPUNCH, DETECT, REST, ATTRACT, STEEL_WING, FIRE_PUNCH, FURY_CUTTER, FLY, SURF, STRENGTH, WHIRLPOOL, WATERFALL, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/dratini.asm
@@ -1,0 +1,22 @@
+	db DRATINI ; 147
+
+	db  41,  64,  45,  50,  50,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db DRAGON, DRAGON
+	db 45 ; catch rate
+	db 67 ; base exp
+	db NO_ITEM ; item 1
+	db DRAGON_SCALE ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 40 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn AMPHIBIAN, REPTILE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DETECT, REST, ATTRACT, SURF, WATERFALL, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/drowzee.asm
@@ -1,0 +1,22 @@
+	db DROWZEE ; 096
+
+	db  60,  48,  45,  42,  43,  90
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, PSYCHIC
+	db 190 ; catch rate
+	db 102 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, FIRE_PUNCH, NIGHTMARE, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/dugtrio.asm
@@ -1,0 +1,22 @@
+	db DUGTRIO ; 051
+
+	db  35,  80,  50, 120,  50,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db GROUND, GROUND
+	db 50 ; catch rate
+	db 153 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, CUT
+	; end
--- /dev/null
+++ b/data/base_stats/dunsparce.asm
@@ -1,0 +1,22 @@
+	db DUNSPARCE ; 206
+
+	db 100,  70,  70,  45,  65,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 190 ; catch rate
+	db 75 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, THUNDER, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, STRENGTH, FLAMETHROWER, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/eevee.asm
@@ -1,0 +1,22 @@
+	db EEVEE ; 133
+
+	db  55,  55,  50,  55,  45,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 45 ; catch rate
+	db 92 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 35 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT
+	; end
--- /dev/null
+++ b/data/base_stats/ekans.asm
@@ -1,0 +1,22 @@
+	db EKANS ; 023
+
+	db  35,  60,  44,  55,  40,  54
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, POISON
+	db 255 ; catch rate
+	db 62 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, REPTILE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, STRENGTH
+	; end
--- /dev/null
+++ b/data/base_stats/electabuzz.asm
@@ -1,0 +1,22 @@
+	db ELECTABUZZ ; 125
+
+	db  65,  83,  57, 105,  95,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, ELECTRIC
+	db 45 ; catch rate
+	db 156 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 63 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLASH, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/electrode.asm
@@ -1,0 +1,22 @@
+	db ELECTRODE ; 101
+
+	db  60,  50,  70, 140,  80,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, ELECTRIC
+	db 60 ; catch rate
+	db 150 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INANIMATE, INANIMATE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, FLASH, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/elekid.asm
@@ -1,0 +1,22 @@
+	db ELEKID ; 239
+
+	db  45,  63,  37,  95,  65,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, ELECTRIC
+	db 45 ; catch rate
+	db 106 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 63 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FLASH, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/entei.asm
@@ -1,0 +1,22 @@
+	db ENTEI ; 244
+
+	db 115, 115,  85, 100,  90,  75
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 3 ; catch rate
+	db 217 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 80 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, SWIFT, DETECT, REST, CUT, STRENGTH, FLASH, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/espeon.asm
@@ -1,0 +1,22 @@
+	db ESPEON ; 196
+
+	db  65,  65,  60, 110, 130,  95
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, PSYCHIC
+	db 45 ; catch rate
+	db 197 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 35 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, NIGHTMARE, CUT, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/exeggcute.asm
@@ -1,0 +1,22 @@
+	db EXEGGCUTE ; 102
+
+	db  60,  40,  80,  40,  60,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, PSYCHIC
+	db 90 ; catch rate
+	db 98 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn PLANT, PLANT ; egg groups
+
+	; tmhm
+	tmhm CURSE, ROLLOUT, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, STRENGTH, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/exeggutor.asm
@@ -1,0 +1,22 @@
+	db EXEGGUTOR ; 103
+
+	db  95,  95,  85,  55, 125,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, PSYCHIC
+	db 45 ; catch rate
+	db 212 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn PLANT, PLANT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, STRENGTH, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/farfetch_d.asm
@@ -1,0 +1,22 @@
+	db FARFETCH_D ; 083
+
+	db  52,  65,  55,  60,  58,  62
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, FLYING
+	db 45 ; catch rate
+	db 94 ; base exp
+	db NO_ITEM ; item 1
+	db STICK ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AVIAN, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, CUT, FLY
+	; end
--- /dev/null
+++ b/data/base_stats/fearow.asm
@@ -1,0 +1,22 @@
+	db FEAROW ; 022
+
+	db  65,  90,  65, 100,  61,  61
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, FLYING
+	db 90 ; catch rate
+	db 162 ; base exp
+	db NO_ITEM ; item 1
+	db SHARP_BEAK ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FLY
+	; end
--- /dev/null
+++ b/data/base_stats/feraligatr.asm
@@ -1,0 +1,22 @@
+	db FERALIGATR ; 160
+
+	db  85, 105, 100,  78,  79,  83
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 45 ; catch rate
+	db 210 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, FURY_CUTTER, CUT, SURF, STRENGTH, WHIRLPOOL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/flaaffy.asm
@@ -1,0 +1,22 @@
+	db FLAAFFY ; 180
+
+	db  70,  55,  55,  45,  80,  60
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, ELECTRIC
+	db 120 ; catch rate
+	db 117 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, FIRE_PUNCH, STRENGTH, FLASH, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/flareon.asm
@@ -1,0 +1,22 @@
+	db FLAREON ; 136
+
+	db  65, 130,  60,  65,  95, 110
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 45 ; catch rate
+	db 198 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 35 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DETECT, REST, ATTRACT, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/forretress.asm
@@ -1,0 +1,22 @@
+	db FORRETRESS ; 205
+
+	db  75,  90, 140,  40,  60,  60
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, STEEL
+	db 75 ; catch rate
+	db 118 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, STRENGTH
+	; end
--- /dev/null
+++ b/data/base_stats/furret.asm
@@ -1,0 +1,22 @@
+	db FURRET ; 162
+
+	db  85,  76,  64,  90,  45,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 90 ; catch rate
+	db 116 ; base exp
+	db BERRY ; item 1
+	db GOLD_BERRY ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, CUT, SURF, STRENGTH
+	; end
--- /dev/null
+++ b/data/base_stats/gastly.asm
@@ -1,0 +1,22 @@
+	db GASTLY ; 092
+
+	db  30,  35,  30,  80, 100,  35
+	;   hp  atk  def  spd  sat  sdf
+
+	db GHOST, POISON
+	db 190 ; catch rate
+	db 95 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn AMORPHOUS, AMORPHOUS ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/gengar.asm
@@ -1,0 +1,22 @@
+	db GENGAR ; 094
+
+	db  60,  65,  60, 110, 130,  75
+	;   hp  atk  def  spd  sat  sdf
+
+	db GHOST, POISON
+	db 45 ; catch rate
+	db 190 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn AMORPHOUS, AMORPHOUS ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, THIEF, FIRE_PUNCH, NIGHTMARE, STRENGTH, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/geodude.asm
@@ -1,0 +1,22 @@
+	db GEODUDE ; 074
+
+	db  40,  80, 100,  20,  30,  30
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, GROUND
+	db 255 ; catch rate
+	db 86 ; base exp
+	db NO_ITEM ; item 1
+	db EVERSTONE ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn INANIMATE, INANIMATE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, REST, ATTRACT, FIRE_PUNCH, STRENGTH, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/girafarig.asm
@@ -1,0 +1,22 @@
+	db GIRAFARIG ; 203
+
+	db  70,  80,  65,  85,  90,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, PSYCHIC
+	db 60 ; catch rate
+	db 149 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, STRENGTH, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/gligar.asm
@@ -1,0 +1,22 @@
+	db GLIGAR ; 207
+
+	db  65,  75, 105,  85,  35,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db GROUND, FLYING
+	db 60 ; catch rate
+	db 108 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SANDSTORM, SWIFT, DETECT, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, STRENGTH
+	; end
--- /dev/null
+++ b/data/base_stats/gloom.asm
@@ -1,0 +1,22 @@
+	db GLOOM ; 044
+
+	db  60,  65,  70,  40,  85,  75
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, POISON
+	db 120 ; catch rate
+	db 132 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn PLANT, PLANT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/golbat.asm
@@ -1,0 +1,22 @@
+	db GOLBAT ; 042
+
+	db  75,  80,  70,  90,  65,  75
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, FLYING
+	db 90 ; catch rate
+	db 171 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING
+	; end
--- /dev/null
+++ b/data/base_stats/goldeen.asm
@@ -1,0 +1,22 @@
+	db GOLDEEN ; 118
+
+	db  45,  67,  60,  63,  35,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 225 ; catch rate
+	db 111 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FISH, FISH ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WATERFALL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/golduck.asm
@@ -1,0 +1,22 @@
+	db GOLDUCK ; 055
+
+	db  80,  82,  78,  85,  95,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 75 ; catch rate
+	db 174 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, FURY_CUTTER, SURF, STRENGTH, FLASH, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/golem.asm
@@ -1,0 +1,22 @@
+	db GOLEM ; 076
+
+	db  80, 110, 130,  45,  55,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, GROUND
+	db 45 ; catch rate
+	db 177 ; base exp
+	db NO_ITEM ; item 1
+	db EVERSTONE ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn INANIMATE, INANIMATE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, STRENGTH, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/granbull.asm
@@ -1,0 +1,22 @@
+	db GRANBULL ; 210
+
+	db  90, 120,  75,  45,  60,  60
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 75 ; catch rate
+	db 178 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 191 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn FIELD, FAIRY ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/graveler.asm
@@ -1,0 +1,22 @@
+	db GRAVELER ; 075
+
+	db  55,  95, 115,  35,  45,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, GROUND
+	db 120 ; catch rate
+	db 134 ; base exp
+	db NO_ITEM ; item 1
+	db EVERSTONE ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn INANIMATE, INANIMATE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, REST, ATTRACT, FIRE_PUNCH, STRENGTH, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/grimer.asm
@@ -1,0 +1,22 @@
+	db GRIMER ; 088
+
+	db  80,  80,  50,  25,  40,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, POISON
+	db 190 ; catch rate
+	db 90 ; base exp
+	db NO_ITEM ; item 1
+	db NUGGET ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMORPHOUS, AMORPHOUS ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, FIRE_BLAST, THUNDERPUNCH, REST, ATTRACT, THIEF, FIRE_PUNCH, FLAMETHROWER, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/growlithe.asm
@@ -1,0 +1,22 @@
+	db GROWLITHE ; 058
+
+	db  55,  70,  45,  60,  70,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 190 ; catch rate
+	db 91 ; base exp
+	db BURNT_BERRY ; item 1
+	db BURNT_BERRY ; item 2
+	db 63 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, REST, ATTRACT, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/gyarados.asm
@@ -1,0 +1,22 @@
+	db GYARADOS ; 130
+
+	db  95, 125,  79,  81,  60, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, FLYING
+	db 45 ; catch rate
+	db 214 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 5 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FISH, REPTILE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, DRAGONBREATH, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, REST, ATTRACT, SURF, STRENGTH, WHIRLPOOL, WATERFALL, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/haunter.asm
@@ -1,0 +1,22 @@
+	db HAUNTER ; 093
+
+	db  45,  50,  45,  95, 115,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db GHOST, POISON
+	db 90 ; catch rate
+	db 126 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn AMORPHOUS, AMORPHOUS ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/heracross.asm
@@ -1,0 +1,22 @@
+	db HERACROSS ; 214
+
+	db  80, 125,  75,  85,  40,  95
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, FIGHTING
+	db 45 ; catch rate
+	db 200 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, STRENGTH
+	; end
--- /dev/null
+++ b/data/base_stats/hitmonchan.asm
@@ -1,0 +1,22 @@
+	db HITMONCHAN ; 107
+
+	db  50, 105,  79,  76,  35, 110
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIGHTING, FIGHTING
+	db 45 ; catch rate
+	db 140 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 0 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH
+	; end
--- /dev/null
+++ b/data/base_stats/hitmonlee.asm
@@ -1,0 +1,22 @@
+	db HITMONLEE ; 106
+
+	db  50, 120,  53,  87,  35, 110
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIGHTING, FIGHTING
+	db 45 ; catch rate
+	db 139 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 0 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STRENGTH
+	; end
--- /dev/null
+++ b/data/base_stats/hitmontop.asm
@@ -1,0 +1,22 @@
+	db HITMONTOP ; 237
+
+	db  50,  95,  95,  70,  35, 110
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIGHTING, FIGHTING
+	db 45 ; catch rate
+	db 138 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 0 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STRENGTH
+	; end
--- /dev/null
+++ b/data/base_stats/ho_oh.asm
@@ -1,0 +1,22 @@
+	db HO_OH ; 250
+
+	db 106, 130,  90,  90, 110, 154
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FLYING
+	db 3 ; catch rate
+	db 220 ; base exp
+	db SACRED_ASH ; item 1
+	db SACRED_ASH ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 120 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7 , 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, DRAGONBREATH, THUNDER, EARTHQUAKE, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, SWIFT, DREAM_EATER, DETECT, REST, STEEL_WING, NIGHTMARE, FLY, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/hoothoot.asm
@@ -1,0 +1,22 @@
+	db HOOTHOOT ; 163
+
+	db  60,  30,  30,  50,  36,  56
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, FLYING
+	db 255 ; catch rate
+	db 58 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, STEEL_WING, NIGHTMARE, FLY, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/hoppip.asm
@@ -1,0 +1,22 @@
+	db HOPPIP ; 187
+
+	db  35,  35,  40,  50,  35,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, FLYING
+	db 255 ; catch rate
+	db 74 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn FAIRY, PLANT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/horsea.asm
@@ -1,0 +1,22 @@
+	db HORSEA ; 116
+
+	db  30,  40,  70,  60,  70,  25
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 225 ; catch rate
+	db 83 ; base exp
+	db NO_ITEM ; item 1
+	db DRAGON_SCALE ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, REPTILE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, DRAGONBREATH, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/houndoom.asm
@@ -1,0 +1,22 @@
+	db HOUNDOOM ; 229
+
+	db  75,  90,  50,  95, 110,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db DARK, FIRE
+	db 45 ; catch rate
+	db 204 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, FIRE_BLAST, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, STRENGTH, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/houndour.asm
@@ -1,0 +1,22 @@
+	db HOUNDOUR ; 228
+
+	db  45,  60,  30,  65,  80,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db DARK, FIRE
+	db 120 ; catch rate
+	db 114 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, FIRE_BLAST, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/hypno.asm
@@ -1,0 +1,22 @@
+	db HYPNO ; 097
+
+	db  85,  73,  70,  67,  73, 115
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, PSYCHIC
+	db 75 ; catch rate
+	db 165 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, FIRE_PUNCH, NIGHTMARE, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/igglybuff.asm
@@ -1,0 +1,22 @@
+	db IGGLYBUFF ; 174
+
+	db  90,  30,  15,  15,  40,  20
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 170 ; catch rate
+	db 39 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 191 ; gender
+	db 100 ; unknown
+	db 10 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, NIGHTMARE, FLASH, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/ivysaur.asm
@@ -1,0 +1,22 @@
+	db IVYSAUR ; 002
+
+	db  60,  62,  63,  60,  80,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, POISON
+	db 45 ; catch rate
+	db 141 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, PLANT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, FURY_CUTTER, CUT, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/jigglypuff.asm
@@ -1,0 +1,22 @@
+	db JIGGLYPUFF ; 039
+
+	db 115,  45,  20,  20,  45,  25
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 170 ; catch rate
+	db 76 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 191 ; gender
+	db 100 ; unknown
+	db 10 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn FAIRY, FAIRY ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, DETECT, REST, ATTRACT, FIRE_PUNCH, NIGHTMARE, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/jolteon.asm
@@ -1,0 +1,22 @@
+	db JOLTEON ; 135
+
+	db  65,  65,  60, 130, 110,  95
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, ELECTRIC
+	db 45 ; catch rate
+	db 197 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 35 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, FLASH, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/jumpluff.asm
@@ -1,0 +1,22 @@
+	db JUMPLUFF ; 189
+
+	db  75,  55,  70, 110,  55,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, FLYING
+	db 45 ; catch rate
+	db 176 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn FAIRY, PLANT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/jynx.asm
@@ -1,0 +1,22 @@
+	db JYNX ; 124
+
+	db  65,  50,  35,  95, 115,  95
+	;   hp  atk  def  spd  sat  sdf
+
+	db ICE, PSYCHIC
+	db 45 ; catch rate
+	db 137 ; base exp
+	db ICE_BERRY ; item 1
+	db ICE_BERRY ; item 2
+	db 254 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SWEET_SCENT, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/kabuto.asm
@@ -1,0 +1,22 @@
+	db KABUTO ; 140
+
+	db  30,  80,  90,  55,  55,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, WATER
+	db 45 ; catch rate
+	db 119 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 30 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, REST, ATTRACT, THIEF, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/kabutops.asm
@@ -1,0 +1,22 @@
+	db KABUTOPS ; 141
+
+	db  60, 115, 105,  80,  65,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, WATER
+	db 45 ; catch rate
+	db 201 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 30 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, SURF, WHIRLPOOL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/kadabra.asm
@@ -1,0 +1,22 @@
+	db KADABRA ; 064
+
+	db  40,  35,  30, 105, 120,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, PSYCHIC
+	db 100 ; catch rate
+	db 145 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 63 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DIG, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, THIEF, FIRE_PUNCH, NIGHTMARE, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/kakuna.asm
@@ -1,0 +1,22 @@
+	db KAKUNA ; 014
+
+	db  45,  25,  50,  35,  25,  25
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, POISON
+	db 120 ; catch rate
+	db 71 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm
+	; end
--- /dev/null
+++ b/data/base_stats/kangaskhan.asm
@@ -1,0 +1,22 @@
+	db KANGASKHAN ; 115
+
+	db 105,  95,  80,  90,  40,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 45 ; catch rate
+	db 175 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 254 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn MONSTER, MONSTER ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, THUNDERPUNCH, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/kingdra.asm
@@ -1,0 +1,22 @@
+	db KINGDRA ; 230
+
+	db  75,  95,  95,  85,  95,  95
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, DRAGON
+	db 45 ; catch rate
+	db 207 ; base exp
+	db NO_ITEM ; item 1
+	db DRAGON_SCALE ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, REPTILE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, DRAGONBREATH, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/kingler.asm
@@ -1,0 +1,22 @@
+	db KINGLER ; 099
+
+	db  55, 130, 115,  75,  50,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 60 ; catch rate
+	db 206 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INVERTEBRATE, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, SURF, STRENGTH, WHIRLPOOL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/koffing.asm
@@ -1,0 +1,22 @@
+	db KOFFING ; 109
+
+	db  40,  65,  95,  35,  60,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, POISON
+	db 190 ; catch rate
+	db 114 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMORPHOUS, AMORPHOUS ; egg groups
+
+	; tmhm
+	tmhm CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, FIRE_BLAST, REST, ATTRACT, THIEF, FLAMETHROWER, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/krabby.asm
@@ -1,0 +1,22 @@
+	db KRABBY ; 098
+
+	db  30, 105,  90,  50,  25,  25
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 225 ; catch rate
+	db 115 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INVERTEBRATE, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, SURF, STRENGTH, WHIRLPOOL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/lanturn.asm
@@ -1,0 +1,22 @@
+	db LANTURN ; 171
+
+	db 125,  58,  58,  67,  76,  76
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, ELECTRIC
+	db 75 ; catch rate
+	db 156 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FISH, FISH ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, SURF, FLASH, WHIRLPOOL, WATERFALL, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/lapras.asm
@@ -1,0 +1,22 @@
+	db LAPRAS ; 131
+
+	db 130,  85,  80,  60,  85,  95
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, ICE
+	db 45 ; catch rate
+	db 219 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 40 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn MONSTER, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, THUNDER, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DREAM_EATER, REST, ATTRACT, NIGHTMARE, SURF, STRENGTH, WHIRLPOOL, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/larvitar.asm
@@ -1,0 +1,22 @@
+	db LARVITAR ; 246
+
+	db  50,  64,  50,  41,  45,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, GROUND
+	db 45 ; catch rate
+	db 67 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 40 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn MONSTER, MONSTER ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DETECT, REST, ATTRACT
+	; end
--- /dev/null
+++ b/data/base_stats/ledian.asm
@@ -1,0 +1,22 @@
+	db LEDIAN ; 166
+
+	db  55,  35,  50,  85,  55, 110
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, FLYING
+	db 90 ; catch rate
+	db 134 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DIG, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, THUNDERPUNCH, REST, ATTRACT, THIEF, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/ledyba.asm
@@ -1,0 +1,22 @@
+	db LEDYBA ; 165
+
+	db  40,  20,  30,  55,  40,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, FLYING
+	db 255 ; catch rate
+	db 54 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DIG, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, THUNDERPUNCH, REST, ATTRACT, THIEF, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/lickitung.asm
@@ -1,0 +1,22 @@
+	db LICKITUNG ; 108
+
+	db  90,  55,  75,  30,  60,  75
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 45 ; catch rate
+	db 127 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn MONSTER, MONSTER ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, THIEF, FIRE_PUNCH, NIGHTMARE, CUT, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/lugia.asm
@@ -1,0 +1,22 @@
+	db LUGIA ; 249
+
+	db 106,  90, 130, 110,  90, 154
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, FLYING
+	db 3 ; catch rate
+	db 220 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 120 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, THUNDER, EARTHQUAKE, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DREAM_EATER, DETECT, REST, STEEL_WING, NIGHTMARE, FLY, SURF, STRENGTH, WHIRLPOOL, WATERFALL, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/machamp.asm
@@ -1,0 +1,22 @@
+	db MACHAMP ; 068
+
+	db  90, 130,  80,  55,  65,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIGHTING, FIGHTING
+	db 45 ; catch rate
+	db 193 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 63 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/machoke.asm
@@ -1,0 +1,22 @@
+	db MACHOKE ; 067
+
+	db  80, 100,  70,  45,  50,  60
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIGHTING, FIGHTING
+	db 90 ; catch rate
+	db 146 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 63 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/machop.asm
@@ -1,0 +1,22 @@
+	db MACHOP ; 066
+
+	db  70,  80,  50,  35,  35,  35
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIGHTING, FIGHTING
+	db 180 ; catch rate
+	db 88 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 63 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/magby.asm
@@ -1,0 +1,22 @@
+	db MAGBY ; 240
+
+	db  45,  75,  37,  83,  70,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 45 ; catch rate
+	db 117 ; base exp
+	db BURNT_BERRY ; item 1
+	db BURNT_BERRY ; item 2
+	db 63 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/magcargo.asm
@@ -1,0 +1,22 @@
+	db MAGCARGO ; 219
+
+	db  50,  50, 120,  30,  80,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, ROCK
+	db 75 ; catch rate
+	db 154 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMORPHOUS, AMORPHOUS ; egg groups
+
+	; tmhm
+	tmhm CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, REST, ATTRACT, STRENGTH, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/magikarp.asm
@@ -1,0 +1,22 @@
+	db MAGIKARP ; 129
+
+	db  20,  10,  55,  80,  15,  20
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 255 ; catch rate
+	db 20 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 5 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FISH, REPTILE ; egg groups
+
+	; tmhm
+	tmhm
+	; end
--- /dev/null
+++ b/data/base_stats/magmar.asm
@@ -1,0 +1,22 @@
+	db MAGMAR ; 126
+
+	db  65,  95,  57,  93, 100,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 45 ; catch rate
+	db 167 ; base exp
+	db BURNT_BERRY ; item 1
+	db BURNT_BERRY ; item 2
+	db 63 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/magnemite.asm
@@ -1,0 +1,22 @@
+	db MAGNEMITE ; 081
+
+	db  25,  35,  70,  45,  95,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, STEEL
+	db 190 ; catch rate
+	db 89 ; base exp
+	db NO_ITEM ; item 1
+	db METAL_COAT ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INANIMATE, INANIMATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, FLASH, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/magneton.asm
@@ -1,0 +1,22 @@
+	db MAGNETON ; 082
+
+	db  50,  60,  95,  70, 120,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, STEEL
+	db 60 ; catch rate
+	db 161 ; base exp
+	db NO_ITEM ; item 1
+	db METAL_COAT ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INANIMATE, INANIMATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, FLASH, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/mankey.asm
@@ -1,0 +1,22 @@
+	db MANKEY ; 056
+
+	db  40,  80,  35,  70,  35,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIGHTING, FIGHTING
+	db 190 ; catch rate
+	db 74 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/mantine.asm
@@ -1,0 +1,22 @@
+	db MANTINE ; 226
+
+	db  65,  40,  70,  70,  80, 140
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, FLYING
+	db 25 ; catch rate
+	db 168 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn AMPHIBIAN, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/mareep.asm
@@ -1,0 +1,22 @@
+	db MAREEP ; 179
+
+	db  55,  40,  40,  35,  65,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, ELECTRIC
+	db 235 ; catch rate
+	db 59 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, FLASH, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/marill.asm
@@ -1,0 +1,22 @@
+	db MARILL ; 183
+
+	db  70,  20,  50,  40,  20,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 190 ; catch rate
+	db 58 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn AMPHIBIAN, FAIRY ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/marowak.asm
@@ -1,0 +1,22 @@
+	db MAROWAK ; 105
+
+	db  60,  80, 110,  45,  50,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db GROUND, GROUND
+	db 75 ; catch rate
+	db 124 ; base exp
+	db NO_ITEM ; item 1
+	db THICK_CLUB ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn MONSTER, MONSTER ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLAMETHROWER, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/meganium.asm
@@ -1,0 +1,22 @@
+	db MEGANIUM ; 154
+
+	db  80,  82, 100,  80,  83, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, GRASS
+	db 45 ; catch rate
+	db 208 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, PLANT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, EARTHQUAKE, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, FURY_CUTTER, CUT, STRENGTH, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/meowth.asm
@@ -1,0 +1,22 @@
+	db MEOWTH ; 052
+
+	db  40,  45,  35,  90,  40,  40
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 255 ; catch rate
+	db 69 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/metapod.asm
@@ -1,0 +1,22 @@
+	db METAPOD ; 011
+
+	db  50,  20,  55,  30,  25,  25
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, BUG
+	db 120 ; catch rate
+	db 72 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm
+	; end
--- /dev/null
+++ b/data/base_stats/mew.asm
@@ -1,0 +1,22 @@
+	db MEW ; 151
+
+	db 100, 100, 100, 100, 100, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, PSYCHIC
+	db 45 ; catch rate
+	db 64 ; base exp
+	db NO_ITEM ; item 1
+	db MIRACLEBERRY ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 120 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, DRAGONBREATH, THUNDER, EARTHQUAKE, RETURN, DIG, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SANDSTORM, FIRE_BLAST, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FIRE_PUNCH, FURY_CUTTER, NIGHTMARE, CUT, FLY, SURF, STRENGTH, FLASH, WHIRLPOOL, WATERFALL, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/mewtwo.asm
@@ -1,0 +1,22 @@
+	db MEWTWO ; 150
+
+	db 106, 110,  90, 130, 154,  90
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, PSYCHIC
+	db 3 ; catch rate
+	db 220 ; base exp
+	db NO_ITEM ; item 1
+	db BERSERK_GENE ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 120 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, THUNDERPUNCH, DREAM_EATER, DETECT, REST, FIRE_PUNCH, NIGHTMARE, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/miltank.asm
@@ -1,0 +1,22 @@
+	db MILTANK ; 241
+
+	db  95,  80, 105, 100,  40,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 45 ; catch rate
+	db 200 ; base exp
+	db MOOMOO_MILK ; item 1
+	db MOOMOO_MILK ; item 2
+	db 254 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, FIRE_PUNCH, SURF, STRENGTH, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/misdreavus.asm
@@ -1,0 +1,22 @@
+	db MISDREAVUS ; 200
+
+	db  60,  60,  60,  85,  85,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db GHOST, GHOST
+	db 45 ; catch rate
+	db 147 ; base exp
+	db NO_ITEM ; item 1
+	db SPELL_TAG ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn AMORPHOUS, AMORPHOUS ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, FLASH, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/moltres.asm
@@ -1,0 +1,22 @@
+	db MOLTRES ; 146
+
+	db  90, 100,  90,  90, 125,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FLYING
+	db 3 ; catch rate
+	db 217 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 80 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, SWIFT, DETECT, REST, STEEL_WING, FLY, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/mr__mime.asm
@@ -1,0 +1,22 @@
+	db MR__MIME ; 122
+
+	db  40,  45,  65,  90, 100, 120
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, PSYCHIC
+	db 45 ; catch rate
+	db 136 ; base exp
+	db NO_ITEM ; item 1
+	db MYSTERYBERRY ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, SOLARBEAM, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, THIEF, FIRE_PUNCH, NIGHTMARE, FLASH, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/muk.asm
@@ -1,0 +1,22 @@
+	db MUK ; 089
+
+	db 105, 105,  75,  50,  65, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, POISON
+	db 75 ; catch rate
+	db 157 ; base exp
+	db NO_ITEM ; item 1
+	db NUGGET ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMORPHOUS, AMORPHOUS ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, FIRE_BLAST, THUNDERPUNCH, REST, ATTRACT, THIEF, FIRE_PUNCH, FLAMETHROWER, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/murkrow.asm
@@ -1,0 +1,22 @@
+	db MURKROW ; 198
+
+	db  60,  85,  42,  91,  85,  42
+	;   hp  atk  def  spd  sat  sdf
+
+	db DARK, FLYING
+	db 30 ; catch rate
+	db 107 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, STEEL_WING, NIGHTMARE, FLY
+	; end
--- /dev/null
+++ b/data/base_stats/natu.asm
@@ -1,0 +1,22 @@
+	db NATU ; 177
+
+	db  40,  50,  45,  70,  70,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, FLYING
+	db 190 ; catch rate
+	db 73 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/nidoking.asm
@@ -1,0 +1,22 @@
+	db NIDOKING ; 034
+
+	db  81,  92,  77,  85,  85,  75
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, GROUND
+	db 45 ; catch rate
+	db 195 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 0 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/nidoqueen.asm
@@ -1,0 +1,22 @@
+	db NIDOQUEEN ; 031
+
+	db  90,  82,  87,  76,  75,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, GROUND
+	db 45 ; catch rate
+	db 194 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 254 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/nidoran_f.asm
@@ -1,0 +1,22 @@
+	db NIDORAN_F ; 029
+
+	db  55,  47,  52,  41,  40,  40
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, POISON
+	db 235 ; catch rate
+	db 59 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 254 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/nidoran_m.asm
@@ -1,0 +1,22 @@
+	db NIDORAN_M ; 032
+
+	db  46,  57,  40,  50,  40,  40
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, POISON
+	db 235 ; catch rate
+	db 60 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 0 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/nidorina.asm
@@ -1,0 +1,22 @@
+	db NIDORINA ; 030
+
+	db  70,  62,  67,  56,  55,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, POISON
+	db 120 ; catch rate
+	db 117 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 254 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, STRENGTH, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/nidorino.asm
@@ -1,0 +1,22 @@
+	db NIDORINO ; 033
+
+	db  61,  72,  57,  65,  55,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, POISON
+	db 120 ; catch rate
+	db 118 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 0 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, STRENGTH, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/ninetales.asm
@@ -1,0 +1,22 @@
+	db NINETALES ; 038
+
+	db  73,  76,  75, 100,  81, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 75 ; catch rate
+	db 178 ; base exp
+	db BURNT_BERRY ; item 1
+	db BURNT_BERRY ; item 2
+	db 191 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, REST, ATTRACT, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/noctowl.asm
@@ -1,0 +1,22 @@
+	db NOCTOWL ; 164
+
+	db 100,  50,  50,  70,  76,  96
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, FLYING
+	db 90 ; catch rate
+	db 162 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, STEEL_WING, NIGHTMARE, FLY, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/octillery.asm
@@ -1,0 +1,22 @@
+	db OCTILLERY ; 224
+
+	db  75, 105,  75,  45, 105,  75
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 75 ; catch rate
+	db 164 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, FISH ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, THIEF, SURF, WHIRLPOOL, FLAMETHROWER, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/oddish.asm
@@ -1,0 +1,22 @@
+	db ODDISH ; 043
+
+	db  45,  50,  55,  30,  75,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, POISON
+	db 255 ; catch rate
+	db 78 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn PLANT, PLANT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/omanyte.asm
@@ -1,0 +1,22 @@
+	db OMANYTE ; 138
+
+	db  35,  40, 100,  35,  90,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, WATER
+	db 45 ; catch rate
+	db 120 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 30 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, REST, ATTRACT, THIEF, SURF, WHIRLPOOL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/omastar.asm
@@ -1,0 +1,22 @@
+	db OMASTAR ; 139
+
+	db  70,  60, 125,  55, 115,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, WATER
+	db 45 ; catch rate
+	db 199 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 30 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, REST, ATTRACT, THIEF, SURF, WHIRLPOOL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/onix.asm
@@ -1,0 +1,22 @@
+	db ONIX ; 095
+
+	db  35,  45, 160,  70,  30,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, GROUND
+	db 45 ; catch rate
+	db 108 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INANIMATE, INANIMATE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, REST, ATTRACT, STRENGTH
+	; end
--- /dev/null
+++ b/data/base_stats/paras.asm
@@ -1,0 +1,22 @@
+	db PARAS ; 046
+
+	db  35,  70,  55,  25,  45,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, GRASS
+	db 190 ; catch rate
+	db 70 ; base exp
+	db TINYMUSHROOM ; item 1
+	db BIG_MUSHROOM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, PLANT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/parasect.asm
@@ -1,0 +1,22 @@
+	db PARASECT ; 047
+
+	db  60,  95,  80,  30,  60,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, GRASS
+	db 75 ; catch rate
+	db 128 ; base exp
+	db TINYMUSHROOM ; item 1
+	db BIG_MUSHROOM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, PLANT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/persian.asm
@@ -1,0 +1,22 @@
+	db PERSIAN ; 053
+
+	db  65,  70,  60, 115,  65,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 90 ; catch rate
+	db 148 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/phanpy.asm
@@ -1,0 +1,22 @@
+	db PHANPY ; 231
+
+	db  90,  60,  60,  40,  40,  40
+	;   hp  atk  def  spd  sat  sdf
+
+	db GROUND, GROUND
+	db 120 ; catch rate
+	db 124 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, STRENGTH
+	; end
--- /dev/null
+++ b/data/base_stats/pichu.asm
@@ -1,0 +1,22 @@
+	db PICHU ; 172
+
+	db  20,  40,  15,  60,  35,  35
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, ELECTRIC
+	db 190 ; catch rate
+	db 42 ; base exp
+	db NO_ITEM ; item 1
+	db BERRY ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 10 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, DETECT, REST, ATTRACT, FLASH, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/pidgeot.asm
@@ -1,0 +1,22 @@
+	db PIDGEOT ; 018
+
+	db  83,  80,  75,  91,  70,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, FLYING
+	db 45 ; catch rate
+	db 172 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FLY
+	; end
--- /dev/null
+++ b/data/base_stats/pidgeotto.asm
@@ -1,0 +1,22 @@
+	db PIDGEOTTO ; 017
+
+	db  63,  60,  55,  71,  50,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, FLYING
+	db 120 ; catch rate
+	db 113 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FLY
+	; end
--- /dev/null
+++ b/data/base_stats/pidgey.asm
@@ -1,0 +1,22 @@
+	db PIDGEY ; 016
+
+	db  40,  45,  40,  56,  35,  35
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, FLYING
+	db 255 ; catch rate
+	db 55 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FLY
+	; end
--- /dev/null
+++ b/data/base_stats/pikachu.asm
@@ -1,0 +1,22 @@
+	db PIKACHU ; 025
+
+	db  35,  55,  30,  90,  50,  40
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, ELECTRIC
+	db 190 ; catch rate
+	db 82 ; base exp
+	db NO_ITEM ; item 1
+	db BERRY ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 10 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FAIRY ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, STRENGTH, FLASH, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/piloswine.asm
@@ -1,0 +1,22 @@
+	db PILOSWINE ; 221
+
+	db 100, 100,  80,  50,  60,  60
+	;   hp  atk  def  spd  sat  sdf
+
+	db ICE, GROUND
+	db 75 ; catch rate
+	db 160 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, STRENGTH, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/pineco.asm
@@ -1,0 +1,22 @@
+	db PINECO ; 204
+
+	db  50,  65,  90,  15,  35,  35
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, BUG
+	db 190 ; catch rate
+	db 60 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, STRENGTH
+	; end
--- /dev/null
+++ b/data/base_stats/pinsir.asm
@@ -1,0 +1,22 @@
+	db PINSIR ; 127
+
+	db  65, 125, 100,  85,  55,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, BUG
+	db 45 ; catch rate
+	db 200 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, STRENGTH
+	; end
--- /dev/null
+++ b/data/base_stats/politoed.asm
@@ -1,0 +1,22 @@
+	db POLITOED ; 186
+
+	db  90,  75,  75,  70,  90, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 45 ; catch rate
+	db 185 ; base exp
+	db NO_ITEM ; item 1
+	db KINGS_ROCK ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn AMPHIBIAN, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/poliwag.asm
@@ -1,0 +1,22 @@
+	db POLIWAG ; 060
+
+	db  40,  50,  40,  90,  40,  40
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 255 ; catch rate
+	db 77 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn AMPHIBIAN, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, THIEF, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/poliwhirl.asm
@@ -1,0 +1,22 @@
+	db POLIWHIRL ; 061
+
+	db  65,  65,  65,  90,  50,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 120 ; catch rate
+	db 131 ; base exp
+	db NO_ITEM ; item 1
+	db KINGS_ROCK ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn AMPHIBIAN, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/poliwrath.asm
@@ -1,0 +1,22 @@
+	db POLIWRATH ; 062
+
+	db  90,  85,  95,  70,  70,  90
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, FIGHTING
+	db 45 ; catch rate
+	db 185 ; base exp
+	db NO_ITEM ; item 1
+	db KINGS_ROCK ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn AMPHIBIAN, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/ponyta.asm
@@ -1,0 +1,22 @@
+	db PONYTA ; 077
+
+	db  50,  85,  55,  90,  65,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 190 ; catch rate
+	db 152 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, REST, ATTRACT, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/porygon.asm
@@ -1,0 +1,22 @@
+	db PORYGON ; 137
+
+	db  65,  60,  70,  40,  85,  75
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 45 ; catch rate
+	db 130 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INANIMATE, INANIMATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, REST, THIEF, NIGHTMARE, FLASH, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/porygon2.asm
@@ -1,0 +1,22 @@
+	db PORYGON2 ; 233
+
+	db  85,  80,  90,  60, 105,  95
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 45 ; catch rate
+	db 180 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INANIMATE, INANIMATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, DREAM_EATER, REST, THIEF, NIGHTMARE, FLASH, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/primeape.asm
@@ -1,0 +1,22 @@
+	db PRIMEAPE ; 057
+
+	db  65, 105,  60,  95,  60,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIGHTING, FIGHTING
+	db 75 ; catch rate
+	db 149 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/psyduck.asm
@@ -1,0 +1,22 @@
+	db PSYDUCK ; 054
+
+	db  50,  52,  48,  55,  65,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 190 ; catch rate
+	db 80 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, STRENGTH, FLASH, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/pupitar.asm
@@ -1,0 +1,22 @@
+	db PUPITAR ; 247
+
+	db  70,  84,  70,  51,  65,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, GROUND
+	db 45 ; catch rate
+	db 144 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 40 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn MONSTER, MONSTER ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DETECT, REST, ATTRACT
+	; end
--- /dev/null
+++ b/data/base_stats/quagsire.asm
@@ -1,0 +1,22 @@
+	db QUAGSIRE ; 195
+
+	db  95,  85,  85,  35,  65,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, GROUND
+	db 90 ; catch rate
+	db 137 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, SURF, STRENGTH, FLASH, WHIRLPOOL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/quilava.asm
@@ -1,0 +1,22 @@
+	db QUILAVA ; 156
+
+	db  58,  64,  58,  80,  80,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 45 ; catch rate
+	db 142 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, DETECT, REST, ATTRACT, FURY_CUTTER, CUT, STRENGTH, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/qwilfish.asm
@@ -1,0 +1,22 @@
+	db QWILFISH ; 211
+
+	db  65,  95,  75,  85,  55,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, POISON
+	db 45 ; catch rate
+	db 100 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FISH, FISH ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SWIFT, DEFENSE_CURL, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/raichu.asm
@@ -1,0 +1,22 @@
+	db RAICHU ; 026
+
+	db  60,  90,  55, 100,  90,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, ELECTRIC
+	db 75 ; catch rate
+	db 122 ; base exp
+	db NO_ITEM ; item 1
+	db BERRY ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 10 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FAIRY ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, STRENGTH, FLASH, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/raikou.asm
@@ -1,0 +1,22 @@
+	db RAIKOU ; 243
+
+	db  90,  85,  75, 115, 115, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, ELECTRIC
+	db 3 ; catch rate
+	db 216 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 80 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DETECT, REST, CUT, STRENGTH, FLASH, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/rapidash.asm
@@ -1,0 +1,22 @@
+	db RAPIDASH ; 078
+
+	db  65, 100,  70, 105,  80,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 60 ; catch rate
+	db 192 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, REST, ATTRACT, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/raticate.asm
@@ -1,0 +1,22 @@
+	db RATICATE ; 020
+
+	db  55,  81,  60,  97,  50,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 90 ; catch rate
+	db 116 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DIG, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, THIEF, CUT, STRENGTH, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/rattata.asm
@@ -1,0 +1,22 @@
+	db RATTATA ; 019
+
+	db  30,  56,  35,  72,  25,  35
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 255 ; catch rate
+	db 57 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DIG, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, THIEF
+	; end
--- /dev/null
+++ b/data/base_stats/remoraid.asm
@@ -1,0 +1,22 @@
+	db REMORAID ; 223
+
+	db  35,  65,  35,  65,  65,  35
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 190 ; catch rate
+	db 78 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, FISH ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, THIEF, SURF, WHIRLPOOL, FLAMETHROWER, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/rhydon.asm
@@ -1,0 +1,22 @@
+	db RHYDON ; 112
+
+	db 105, 130, 120,  40,  45,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db GROUND, ROCK
+	db 60 ; catch rate
+	db 204 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn MONSTER, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, THUNDERPUNCH, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/rhyhorn.asm
@@ -1,0 +1,22 @@
+	db RHYHORN ; 111
+
+	db  80,  85,  95,  25,  30,  30
+	;   hp  atk  def  spd  sat  sdf
+
+	db GROUND, ROCK
+	db 120 ; catch rate
+	db 135 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn MONSTER, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, REST, ATTRACT, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/sandshrew.asm
@@ -1,0 +1,22 @@
+	db SANDSHREW ; 027
+
+	db  50,  75,  85,  40,  20,  30
+	;   hp  atk  def  spd  sat  sdf
+
+	db GROUND, GROUND
+	db 255 ; catch rate
+	db 93 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, STRENGTH
+	; end
--- /dev/null
+++ b/data/base_stats/sandslash.asm
@@ -1,0 +1,22 @@
+	db SANDSLASH ; 028
+
+	db  75, 100, 110,  65,  45,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db GROUND, GROUND
+	db 90 ; catch rate
+	db 163 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, STRENGTH
+	; end
--- /dev/null
+++ b/data/base_stats/scizor.asm
@@ -1,0 +1,22 @@
+	db SCIZOR ; 212
+
+	db  70, 130, 100,  65,  55,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, STEEL
+	db 25 ; catch rate
+	db 200 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FURY_CUTTER, CUT, STRENGTH
+	; end
--- /dev/null
+++ b/data/base_stats/scyther.asm
@@ -1,0 +1,22 @@
+	db SCYTHER ; 123
+
+	db  70, 110,  80, 105,  55,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, FLYING
+	db 45 ; catch rate
+	db 187 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FURY_CUTTER, CUT
+	; end
--- /dev/null
+++ b/data/base_stats/seadra.asm
@@ -1,0 +1,22 @@
+	db SEADRA ; 117
+
+	db  55,  65,  95,  85,  95,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 75 ; catch rate
+	db 155 ; base exp
+	db NO_ITEM ; item 1
+	db DRAGON_SCALE ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, REPTILE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, DRAGONBREATH, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/seaking.asm
@@ -1,0 +1,22 @@
+	db SEAKING ; 119
+
+	db  80,  92,  65,  68,  65,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 60 ; catch rate
+	db 170 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FISH, FISH ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WATERFALL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/seel.asm
@@ -1,0 +1,22 @@
+	db SEEL ; 086
+
+	db  65,  45,  55,  45,  45,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 190 ; catch rate
+	db 100 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/sentret.asm
@@ -1,0 +1,22 @@
+	db SENTRET ; 161
+
+	db  35,  46,  34,  20,  35,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 255 ; catch rate
+	db 57 ; base exp
+	db NO_ITEM ; item 1
+	db BERRY ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, CUT, SURF
+	; end
--- /dev/null
+++ b/data/base_stats/shellder.asm
@@ -1,0 +1,22 @@
+	db SHELLDER ; 090
+
+	db  30,  65, 100,  40,  45,  25
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 190 ; catch rate
+	db 97 ; base exp
+	db PEARL ; item 1
+	db BIG_PEARL ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn INVERTEBRATE, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WHIRLPOOL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/shuckle.asm
@@ -1,0 +1,22 @@
+	db SHUCKLE ; 213
+
+	db  20,  10, 230,  05,  10, 230
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, ROCK
+	db 190 ; catch rate
+	db 80 ; base exp
+	db BERRY ; item 1
+	db BERRY ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, STRENGTH, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/skarmory.asm
@@ -1,0 +1,22 @@
+	db SKARMORY ; 227
+
+	db  65,  80, 140,  70,  40,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db STEEL, FLYING
+	db 25 ; catch rate
+	db 168 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, CUT, FLY
+	; end
--- /dev/null
+++ b/data/base_stats/skiploom.asm
@@ -1,0 +1,22 @@
+	db SKIPLOOM ; 188
+
+	db  55,  45,  50,  80,  45,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, FLYING
+	db 120 ; catch rate
+	db 136 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn FAIRY, PLANT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/slowbro.asm
@@ -1,0 +1,22 @@
+	db SLOWBRO ; 080
+
+	db  95,  75, 110,  30, 100,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, PSYCHIC
+	db 75 ; catch rate
+	db 164 ; base exp
+	db NO_ITEM ; item 1
+	db KINGS_ROCK ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn MONSTER, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DREAM_EATER, REST, ATTRACT, FURY_CUTTER, NIGHTMARE, SURF, STRENGTH, FLASH, FLAMETHROWER, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/slowking.asm
@@ -1,0 +1,22 @@
+	db SLOWKING ; 199
+
+	db  95,  75,  80,  30, 100, 110
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, PSYCHIC
+	db 70 ; catch rate
+	db 164 ; base exp
+	db NO_ITEM ; item 1
+	db KINGS_ROCK ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn MONSTER, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DREAM_EATER, REST, ATTRACT, FURY_CUTTER, NIGHTMARE, SURF, STRENGTH, FLASH, WHIRLPOOL, FLAMETHROWER, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/slowpoke.asm
@@ -1,0 +1,22 @@
+	db SLOWPOKE ; 079
+
+	db  90,  65,  65,  15,  40,  40
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, PSYCHIC
+	db 190 ; catch rate
+	db 99 ; base exp
+	db NO_ITEM ; item 1
+	db KINGS_ROCK ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn MONSTER, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DREAM_EATER, REST, ATTRACT, NIGHTMARE, SURF, STRENGTH, FLASH, FLAMETHROWER, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/slugma.asm
@@ -1,0 +1,22 @@
+	db SLUGMA ; 218
+
+	db  40,  40,  40,  20,  70,  40
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 190 ; catch rate
+	db 78 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMORPHOUS, AMORPHOUS ; egg groups
+
+	; tmhm
+	tmhm CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, REST, ATTRACT, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/smeargle.asm
@@ -1,0 +1,22 @@
+	db SMEARGLE ; 235
+
+	db  55,  20,  35,  75,  20,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 45 ; catch rate
+	db 106 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm
+	; end
--- /dev/null
+++ b/data/base_stats/smoochum.asm
@@ -1,0 +1,22 @@
+	db SMOOCHUM ; 238
+
+	db  45,  30,  15,  65,  85,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db ICE, PSYCHIC
+	db 45 ; catch rate
+	db 87 ; base exp
+	db ICE_BERRY ; item 1
+	db ICE_BERRY ; item 2
+	db 254 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SWEET_SCENT, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/sneasel.asm
@@ -1,0 +1,22 @@
+	db SNEASEL ; 215
+
+	db  55,  95,  55, 115,  35,  75
+	;   hp  atk  def  spd  sat  sdf
+
+	db DARK, ICE
+	db 60 ; catch rate
+	db 132 ; base exp
+	db NO_ITEM ; item 1
+	db QUICK_CLAW ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, FURY_CUTTER, NIGHTMARE, CUT, SURF, STRENGTH, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/snorlax.asm
@@ -1,0 +1,22 @@
+	db SNORLAX ; 143
+
+	db 160, 110,  65,  30,  65, 110
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 25 ; catch rate
+	db 154 ; base exp
+	db LEFTOVERS ; item 1
+	db LEFTOVERS ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 40 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn MONSTER, MONSTER ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, THUNDER, EARTHQUAKE, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, FIRE_PUNCH, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/snubbull.asm
@@ -1,0 +1,22 @@
+	db SNUBBULL ; 209
+
+	db  60,  80,  50,  30,  40,  40
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 190 ; catch rate
+	db 63 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 191 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn FIELD, FAIRY ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/spearow.asm
@@ -1,0 +1,22 @@
+	db SPEAROW ; 021
+
+	db  40,  60,  30,  70,  31,  31
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, FLYING
+	db 255 ; catch rate
+	db 58 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FLY
+	; end
--- /dev/null
+++ b/data/base_stats/spinarak.asm
@@ -1,0 +1,22 @@
+	db SPINARAK ; 167
+
+	db  40,  60,  40,  30,  40,  40
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, POISON
+	db 255 ; catch rate
+	db 54 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DIG, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/squirtle.asm
@@ -1,0 +1,22 @@
+	db SQUIRTLE ; 007
+
+	db  44,  48,  65,  43,  50,  64
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 45 ; catch rate
+	db 66 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/stantler.asm
@@ -1,0 +1,22 @@
+	db STANTLER ; 234
+
+	db  73,  95,  62,  85,  85,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 45 ; catch rate
+	db 165 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/starmie.asm
@@ -1,0 +1,22 @@
+	db STARMIE ; 121
+
+	db  60,  75,  85, 115, 100,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, PSYCHIC
+	db 60 ; catch rate
+	db 207 ; base exp
+	db STARDUST ; item 1
+	db STAR_PIECE ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn INVERTEBRATE, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, REST, ATTRACT, NIGHTMARE, SURF, FLASH, WHIRLPOOL, WATERFALL, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/staryu.asm
@@ -1,0 +1,22 @@
+	db STARYU ; 120
+
+	db  30,  45,  55,  85,  70,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 225 ; catch rate
+	db 106 ; base exp
+	db STARDUST ; item 1
+	db STAR_PIECE ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn INVERTEBRATE, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, FLASH, WHIRLPOOL, WATERFALL, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/steelix.asm
@@ -1,0 +1,22 @@
+	db STEELIX ; 208
+
+	db  75,  85, 200,  30,  55,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db STEEL, GROUND
+	db 25 ; catch rate
+	db 196 ; base exp
+	db NO_ITEM ; item 1
+	db METAL_COAT ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INANIMATE, INANIMATE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, CUT, STRENGTH
+	; end
--- /dev/null
+++ b/data/base_stats/sudowoodo.asm
@@ -1,0 +1,22 @@
+	db SUDOWOODO ; 185
+
+	db  70, 100, 115,  30,  30,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, ROCK
+	db 65 ; catch rate
+	db 135 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INANIMATE, INANIMATE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH
+	; end
--- /dev/null
+++ b/data/base_stats/suicune.asm
@@ -1,0 +1,22 @@
+	db SUICUNE ; 245
+
+	db 100,  75, 115,  85,  90, 115
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 3 ; catch rate
+	db 215 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 80 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DETECT, REST, CUT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/sunflora.asm
@@ -1,0 +1,22 @@
+	db SUNFLORA ; 192
+
+	db  75,  75,  55,  30, 105,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, GRASS
+	db 120 ; catch rate
+	db 146 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn PLANT, PLANT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/sunkern.asm
@@ -1,0 +1,22 @@
+	db SUNKERN ; 191
+
+	db  30,  30,  30,  30,  30,  30
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, GRASS
+	db 235 ; catch rate
+	db 52 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn PLANT, PLANT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/swinub.asm
@@ -1,0 +1,22 @@
+	db SWINUB ; 220
+
+	db  50,  50,  40,  50,  30,  30
+	;   hp  atk  def  spd  sat  sdf
+
+	db ICE, GROUND
+	db 225 ; catch rate
+	db 78 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, STRENGTH, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/tangela.asm
@@ -1,0 +1,22 @@
+	db TANGELA ; 114
+
+	db  65,  55, 115,  60, 100,  40
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, GRASS
+	db 45 ; catch rate
+	db 166 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn PLANT, PLANT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, CUT, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/tauros.asm
@@ -1,0 +1,22 @@
+	db TAUROS ; 128
+
+	db  75, 100,  95, 110,  40,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 45 ; catch rate
+	db 211 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 0 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, REST, ATTRACT, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/teddiursa.asm
@@ -1,0 +1,22 @@
+	db TEDDIURSA ; 216
+
+	db  60,  80,  50,  40,  50,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 120 ; catch rate
+	db 124 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, CUT, STRENGTH
+	; end
--- /dev/null
+++ b/data/base_stats/tentacool.asm
@@ -1,0 +1,22 @@
+	db TENTACOOL ; 072
+
+	db  40,  40,  35,  70,  50, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, POISON
+	db 190 ; catch rate
+	db 105 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn INVERTEBRATE, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, SURF, WHIRLPOOL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/tentacruel.asm
@@ -1,0 +1,22 @@
+	db TENTACRUEL ; 073
+
+	db  80,  70,  65, 100,  80, 120
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, POISON
+	db 60 ; catch rate
+	db 205 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn INVERTEBRATE, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, SURF, WHIRLPOOL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/togepi.asm
@@ -1,0 +1,22 @@
+	db TOGEPI ; 175
+
+	db  35,  20,  65,  20,  40,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 190 ; catch rate
+	db 74 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 10 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, FLASH, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/togetic.asm
@@ -1,0 +1,22 @@
+	db TOGETIC ; 176
+
+	db  55,  40,  85,  40,  80, 105
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, FLYING
+	db 75 ; catch rate
+	db 114 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 10 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn AVIAN, FAIRY ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, STEEL_WING, FLY, FLASH, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/totodile.asm
@@ -1,0 +1,22 @@
+	db TOTODILE ; 158
+
+	db  50,  65,  64,  43,  44,  48
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 45 ; catch rate
+	db 66 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, CUT, SURF, WHIRLPOOL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/typhlosion.asm
@@ -1,0 +1,22 @@
+	db TYPHLOSION ; 157
+
+	db  78,  84,  78, 100, 109,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 45 ; catch rate
+	db 209 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, CUT, STRENGTH, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/tyranitar.asm
@@ -1,0 +1,22 @@
+	db TYRANITAR ; 248
+
+	db 100, 134, 110,  61,  95, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, DARK
+	db 45 ; catch rate
+	db 218 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 40 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn MONSTER, MONSTER ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DETECT, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, NIGHTMARE, CUT, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/tyrogue.asm
@@ -1,0 +1,22 @@
+	db TYROGUE ; 236
+
+	db  35,  35,  35,  35,  35,  35
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIGHTING, FIGHTING
+	db 75 ; catch rate
+	db 91 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 0 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STRENGTH
+	; end
--- /dev/null
+++ b/data/base_stats/umbreon.asm
@@ -1,0 +1,22 @@
+	db UMBREON ; 197
+
+	db  95,  65, 110,  65,  60, 130
+	;   hp  atk  def  spd  sat  sdf
+
+	db DARK, DARK
+	db 45 ; catch rate
+	db 197 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 35 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, NIGHTMARE, CUT, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/unown.asm
@@ -1,0 +1,22 @@
+	db UNOWN ; 201
+
+	db  48,  72,  48,  48,  72,  48
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, PSYCHIC
+	db 225 ; catch rate
+	db 61 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 40 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm
+	; end
--- /dev/null
+++ b/data/base_stats/ursaring.asm
@@ -1,0 +1,22 @@
+	db URSARING ; 217
+
+	db  90, 130,  75,  55,  75,  75
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 60 ; catch rate
+	db 189 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, CUT, STRENGTH
+	; end
--- /dev/null
+++ b/data/base_stats/vaporeon.asm
@@ -1,0 +1,22 @@
+	db VAPOREON ; 134
+
+	db 130,  65,  60,  65, 110,  95
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 45 ; catch rate
+	db 196 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 35 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/venomoth.asm
@@ -1,0 +1,22 @@
+	db VENOMOTH ; 049
+
+	db  70,  65,  60,  90,  90,  75
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, POISON
+	db 75 ; catch rate
+	db 138 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SWIFT, REST, ATTRACT, THIEF, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/venonat.asm
@@ -1,0 +1,22 @@
+	db VENONAT ; 048
+
+	db  60,  55,  50,  45,  40,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, POISON
+	db 190 ; catch rate
+	db 75 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SWIFT, REST, ATTRACT, THIEF
+	; end
--- /dev/null
+++ b/data/base_stats/venusaur.asm
@@ -1,0 +1,22 @@
+	db VENUSAUR ; 003
+
+	db  80,  82,  83,  80, 100, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, POISON
+	db 45 ; catch rate
+	db 208 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, PLANT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, FURY_CUTTER, CUT, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/victreebel.asm
@@ -1,0 +1,22 @@
+	db VICTREEBEL ; 071
+
+	db  80, 105,  65,  70, 100,  60
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, POISON
+	db 45 ; catch rate
+	db 191 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn PLANT, PLANT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/vileplume.asm
@@ -1,0 +1,22 @@
+	db VILEPLUME ; 045
+
+	db  75,  80,  85,  50, 100,  90
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, POISON
+	db 45 ; catch rate
+	db 184 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn PLANT, PLANT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/voltorb.asm
@@ -1,0 +1,22 @@
+	db VOLTORB ; 100
+
+	db  40,  30,  50, 100,  55,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, ELECTRIC
+	db 190 ; catch rate
+	db 103 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INANIMATE, INANIMATE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, FLASH, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/vulpix.asm
@@ -1,0 +1,22 @@
+	db VULPIX ; 037
+
+	db  38,  41,  40,  65,  50,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 190 ; catch rate
+	db 63 ; base exp
+	db BURNT_BERRY ; item 1
+	db BURNT_BERRY ; item 2
+	db 191 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, REST, ATTRACT, FLAMETHROWER
+	; end
--- /dev/null
+++ b/data/base_stats/wartortle.asm
@@ -1,0 +1,22 @@
+	db WARTORTLE ; 008
+
+	db  59,  63,  80,  58,  65,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 45 ; catch rate
+	db 143 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/weedle.asm
@@ -1,0 +1,22 @@
+	db WEEDLE ; 013
+
+	db  40,  35,  30,  50,  20,  20
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, POISON
+	db 255 ; catch rate
+	db 52 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm
+	; end
--- /dev/null
+++ b/data/base_stats/weepinbell.asm
@@ -1,0 +1,22 @@
+	db WEEPINBELL ; 070
+
+	db  65,  90,  50,  55,  85,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, POISON
+	db 120 ; catch rate
+	db 151 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn PLANT, PLANT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/weezing.asm
@@ -1,0 +1,22 @@
+	db WEEZING ; 110
+
+	db  65,  90, 120,  60,  85,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, POISON
+	db 60 ; catch rate
+	db 173 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMORPHOUS, AMORPHOUS ; egg groups
+
+	; tmhm
+	tmhm CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, FIRE_BLAST, REST, ATTRACT, THIEF, FLAMETHROWER, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/wigglytuff.asm
@@ -1,0 +1,22 @@
+	db WIGGLYTUFF ; 040
+
+	db 140,  70,  45,  45,  75,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 50 ; catch rate
+	db 109 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 191 ; gender
+	db 100 ; unknown
+	db 10 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn FAIRY, FAIRY ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, DETECT, REST, ATTRACT, FIRE_PUNCH, NIGHTMARE, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/wobbuffet.asm
@@ -1,0 +1,22 @@
+	db WOBBUFFET ; 202
+
+	db 190,  33,  58,  33,  33,  58
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, PSYCHIC
+	db 45 ; catch rate
+	db 177 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMORPHOUS, AMORPHOUS ; egg groups
+
+	; tmhm
+	tmhm
+	; end
--- /dev/null
+++ b/data/base_stats/wooper.asm
@@ -1,0 +1,22 @@
+	db WOOPER ; 194
+
+	db  55,  45,  45,  15,  25,  25
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, GROUND
+	db 255 ; catch rate
+	db 52 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, SURF, FLASH, WHIRLPOOL, ICE_BEAM
+	; end
--- /dev/null
+++ b/data/base_stats/xatu.asm
@@ -1,0 +1,22 @@
+	db XATU ; 178
+
+	db  65,  75,  70,  95,  95,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, FLYING
+	db 75 ; catch rate
+	db 171 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, FLY, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/yanma.asm
@@ -1,0 +1,22 @@
+	db YANMA ; 193
+
+	db  65,  65,  45,  95,  75,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, FLYING
+	db 75 ; catch rate
+	db 147 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, FLASH
+	; end
--- /dev/null
+++ b/data/base_stats/zapdos.asm
@@ -1,0 +1,22 @@
+	db ZAPDOS ; 145
+
+	db  90,  90,  85, 100, 125,  90
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, FLYING
+	db 3 ; catch rate
+	db 216 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 80 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DETECT, REST, STEEL_WING, FLY, FLASH, THUNDERBOLT
+	; end
--- /dev/null
+++ b/data/base_stats/zubat.asm
@@ -1,0 +1,22 @@
+	db ZUBAT ; 041
+
+	db  40,  45,  35,  55,  30,  40
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, FLYING
+	db 255 ; catch rate
+	db 54 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING
+	; end
--- a/data/sprite_engine.asm
+++ b/data/sprite_engine.asm
@@ -66,7 +66,7 @@
 	dw .Frameset_40 ; 40 celebi on the left
 	dw .Frameset_41 ; 41 celebi on the right
 ; 8d76a
-				; OAM idx (see SpriteAnimOAMData), flip flags/duration
+; OAM idx (see SpriteAnimOAMData), flip flags/duration
 .Frameset_00:
 	db $00, $20
 	db -1
--- a/engine/battle_start.asm
+++ b/engine/battle_start.asm
@@ -120,7 +120,7 @@
 	ld [rSVBK], a
 	push hl
 	ld hl, wDecompressScratch
-	ld bc, $28 * $10
+	ld bc, $28 tiles
 
 .loop
 	ld [hl], -1
@@ -568,7 +568,7 @@
 StartTrainerBattle_LoadPokeBallGraphics: ; 8c5dc (23:45dc)
 	ld a, [OtherTrainerClass]
 	and a
-	jp z, .nextscene
+	jp z, .nextscene ; don't need to be here if wild
 
 	xor a
 	ld [hBGMapMode], a
@@ -579,6 +579,7 @@
 	jr .enter_loop_midway
 
 .loop
+; set all pals to 7
 	ld a, [hl]
 	or %00000111
 	ld [hli], a
@@ -588,7 +589,7 @@
 	dec b
 	jr nz, .loop
 
-	call .loadpokeballgfx ; load a, [OtherTrainerClass] \ ld de, PokeBallTransition
+	call .loadpokeballgfx ; ld a, [OtherTrainerClass] \ ld de, PokeBallTransition \ ret
 	hlcoord 2, 1
 
 	ld b, SCREEN_WIDTH - 4
@@ -605,7 +606,7 @@
 	jr z, .done
 	sla a
 	jr nc, .no_load
-	ld [hl], $fe ; "8"
+	ld [hl], $fe
 .no_load
 	inc hl
 	jr .loop4
@@ -650,12 +651,12 @@
 	ld [rSVBK], a
 	call .copypals
 	push hl
-	ld de, UnknBGPals + 8 * 7
-	ld bc, $8
+	ld de, UnknBGPals + 7 palettes
+	ld bc, 1 palettes
 	call CopyBytes
 	pop hl
-	ld de, BGPals + 8 * 7
-	ld bc, $8
+	ld de, BGPals + 7 palettes
+	ld bc, 1 palettes
 	call CopyBytes
 	pop af
 	ld [rSVBK], a
@@ -669,21 +670,21 @@
 	ret
 
 .copypals: ; 8c677 (23:4677)
-	ld de, UnknBGPals + 8 * 7
+	ld de, UnknBGPals + 7 palettes
 	call .copy
-	ld de, BGPals + 8 * 7
+	ld de, BGPals + 7 palettes
 	call .copy
-	ld de, UnknOBPals + 8 * 6
+	ld de, UnknOBPals + 6 palettes
 	call .copy
-	ld de, OBPals + 8 * 6
+	ld de, OBPals + 6 palettes
 	call .copy
-	ld de, UnknOBPals + 8 * 7
+	ld de, UnknOBPals + 7 palettes
 	call .copy
-	ld de, OBPals + 8 * 7
+	ld de, OBPals + 7 palettes
 
 .copy: ; 8c698 (23:4698)
 	push hl
-	ld bc, $8
+	ld bc, 1 palettes
 	call CopyBytes
 	pop hl
 	ret
--- a/engine/breeding/egg.asm
+++ b/engine/breeding/egg.asm
@@ -677,9 +677,9 @@
 	ld a, b
 	ld [hBGMapAddress + 1], a
 	ld a, c
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 	pop af
 	call Hatch_LoadFrontpicPal
 	call SetPalettes
--- a/engine/compose_mail.asm
+++ /dev/null
@@ -1,517 +1,0 @@
-_ComposeMailMessage: ; 11e75 (mail?)
-	ld hl, wc6d0
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ld a, [hMapAnims]
-	push af
-	xor a
-	ld [hMapAnims], a
-	ld a, [hInMenu]
-	push af
-	ld a, $1
-	ld [hInMenu], a
-	call .InitBlankMail
-	call DelayFrame
-
-.loop
-	call .DoMailEntry
-	jr nc, .loop
-
-	pop af
-	ld [hInMenu], a
-	pop af
-	ld [hMapAnims], a
-	ret
-
-.InitBlankMail: ; 11e9a (4:5e9a)
-	call ClearBGPalettes
-	call DisableLCD
-	call Function11c51
-	ld de, VTiles0 tile $00
-	ld hl, .MailIcon
-	ld bc, 8 tiles
-	ld a, BANK(.MailIcon)
-	call FarCopyBytes
-	xor a
-	ld hl, wSpriteAnimDict
-	ld [hli], a
-	ld [hl], a
-
-	; init mail icon
-	depixel 3, 2
-	ld a, SPRITE_ANIM_INDEX_00
-	call _InitSpriteAnimStruct
-
-	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
-	add hl, bc
-	ld [hl], $0
-	call .InitCharset
-	ld a, $e3
-	ld [rLCDC], a
-	call .initwc6d3
-	ld b, SCGB_08
-	call GetSGBLayout
-	call WaitBGMap
-	call WaitTop
-	ld a, %11100100
-	call DmgToCgbBGPals
-	ld a, %11100100
-	call DmgToCgbObjPal0
-	call Function11be0
-	ld hl, wc6d0
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	ld hl, $10
-	add hl, de
-	ld [hl], $4e
-	ret
-
-; 11ef4 (4:5ef4)
-
-.MailIcon: ; 11ef4
-INCBIN "gfx/icon/mail2.2bpp"
-; 11f74
-
-.initwc6d3: ; 11f74 (4:5f74)
-	ld a, $21
-	ld [wc6d3], a
-	ret
-
-; 11f7a (4:5f7a)
-
-.Dummy: ; dummied out
-	db "メールを かいてね@"
-; 11f84
-
-.InitCharset: ; 11f84 (4:5f84)
-	call WaitTop
-	hlcoord 0, 0
-	ld bc, 6 * SCREEN_WIDTH
-	ld a, $60 ; border
-	call ByteFill
-	hlcoord 0, 6
-	ld bc, 12 * SCREEN_WIDTH
-	ld a, " "
-	call ByteFill
-	hlcoord 1, 1
-	lb bc, 4, SCREEN_WIDTH - 2
-	call ClearBox
-	ld de, MailEntry_Uppercase
-
-.PlaceMailCharset: ; 11fa9 (4:5fa9)
-	hlcoord 1, 7
-	ld b, 6
-.next
-	ld c, SCREEN_WIDTH - 1
-.loop_
-	ld a, [de]
-	ld [hli], a
-	inc de
-	dec c
-	jr nz, .loop_
-	push de
-	ld de, SCREEN_WIDTH + 1
-	add hl, de
-	pop de
-	dec b
-	jr nz, .next
-	ret
-
-.DoMailEntry: ; 11fc0 (4:5fc0)
-	call JoyTextDelay
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .exit_mail
-	call .DoJumptable
-	callba PlaySpriteAnimationsAndDelayFrame
-	call .Update
-	call DelayFrame
-	and a
-	ret
-
-.exit_mail
-	callab ClearSpriteAnims
-	call ClearSprites
-	xor a
-	ld [hSCX], a
-	ld [hSCY], a
-	scf
-	ret
-
-.Update: ; 11feb (4:5feb)
-	xor a
-	ld [hBGMapMode], a
-	hlcoord 1, 1
-	lb bc, 4, 18
-	call ClearBox
-	ld hl, wc6d0
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	hlcoord 2, 2
-	call PlaceString
-	ld a, $1
-	ld [hBGMapMode], a
-	ret
-
-.DoJumptable: ; 12008 (4:6008)
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, .Jumptable
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-
-.Jumptable: ; 12017 (4:6017)
-	dw .init_blinking_cursor
-	dw .process_joypad
-
-
-.init_blinking_cursor: ; 1201b (4:601b)
-	depixel 9, 2
-	ld a, SPRITE_ANIM_INDEX_09
-	call _InitSpriteAnimStruct
-	ld a, c
-	ld [wc6d5], a
-	ld a, b
-	ld [wc6d6], a
-	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
-	add hl, bc
-	ld a, [hl]
-	ld hl, SPRITEANIMSTRUCT_0E
-	add hl, bc
-	ld [hl], a
-	ld hl, wJumptableIndex
-	inc [hl]
-	ret
-
-.process_joypad: ; 1203a (4:603a)
-	ld hl, hJoyPressed ; $ffa7
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .a
-	ld a, [hl]
-	and B_BUTTON
-	jr nz, .b
-	ld a, [hl]
-	and START
-	jr nz, .start
-	ld a, [hl]
-	and SELECT
-	jr nz, .select
-	ret
-
-.a
-	call Function12185
-	cp $1
-	jr z, .select
-	cp $2
-	jr z, .b
-	cp $3
-	jr z, .finished
-	call Function11c11
-	call Function121ac
-	jr c, .start
-	ld hl, wc6d2
-	ld a, [hl]
-	cp $10
-	ret nz
-	inc [hl]
-	call Function11bd0
-	ld [hl], $f2
-	dec hl
-	ld [hl], $4e
-	ret
-
-.start
-	ld hl, wc6d5
-	ld c, [hl]
-	inc hl
-	ld b, [hl]
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld [hl], $9
-	ld hl, SPRITEANIMSTRUCT_0D
-	add hl, bc
-	ld [hl], $5
-	ret
-
-.b
-	call Function11bbc
-	ld hl, wc6d2
-	ld a, [hl]
-	cp $10
-	ret nz
-	dec [hl]
-	call Function11bd0
-	ld [hl], $f2
-	inc hl
-	ld [hl], $4e
-	ret
-
-.finished
-	call Function11bf7
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-
-.select
-	ld hl, wcf64
-	ld a, [hl]
-	xor $1
-	ld [hl], a
-	jr nz, .switch_to_lowercase
-	ld de, MailEntry_Uppercase
-	call .PlaceMailCharset
-	ret
-
-.switch_to_lowercase
-	ld de, MailEntry_Lowercase
-	call .PlaceMailCharset
-	ret
-
-; called from engine/sprite_anims.asm
-Function120c1: ; 120c1 (4:60c1)
-	call Function1210c
-	ld hl, SPRITEANIMSTRUCT_0D
-	add hl, bc
-	ld a, [hl]
-	ld e, a
-	swap e
-	ld hl, SPRITEANIMSTRUCT_YOFFSET
-	add hl, bc
-	ld [hl], e
-	cp $5
-	ld de, Unknown_120f8
-	ld a, 0
-	jr nz, .asm_120df
-	ld de, Unknown_12102
-	ld a, 1
-.asm_120df
-	ld hl, SPRITEANIMSTRUCT_0E
-	add hl, bc
-	add [hl]
-	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
-	add hl, bc
-	ld [hl], a
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld l, [hl]
-	ld h, 0
-	add hl, de
-	ld a, [hl]
-	ld hl, SPRITEANIMSTRUCT_XOFFSET
-	add hl, bc
-	ld [hl], a
-	ret
-
-; 120f8 (4:60f8)
-
-Unknown_120f8: ; 120f8
-	db $00, $10, $20, $30, $40, $50, $60, $70, $80, $90
-Unknown_12102: ; 12102
-	db $00, $00, $00, $30, $30, $30, $60, $60, $60, $60
-; 1210c
-
-Function1210c: ; 1210c (4:610c)
-	ld hl, hJoyLast
-	ld a, [hl]
-	and D_UP
-	jr nz, .up
-	ld a, [hl]
-	and D_DOWN
-	jr nz, .down
-	ld a, [hl]
-	and D_LEFT
-	jr nz, .left
-	ld a, [hl]
-	and D_RIGHT
-	jr nz, .right
-	ret
-
-.right
-	call Function1218b
-	and a
-	jr nz, .asm_12138
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld a, [hl]
-	cp $9
-	jr nc, .asm_12135
-	inc [hl]
-	ret
-
-.asm_12135
-	ld [hl], $0
-	ret
-
-.asm_12138
-	cp $3
-	jr nz, .asm_1213d
-	xor a
-.asm_1213d
-	ld e, a
-	add a
-	add e
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld [hl], a
-	ret
-
-.left
-	call Function1218b
-	and a
-	jr nz, .asm_12159
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_12156
-	dec [hl]
-	ret
-
-.asm_12156
-	ld [hl], $9
-	ret
-
-.asm_12159
-	cp $1
-	jr nz, .asm_1215f
-	ld a, $4
-.asm_1215f
-rept 2
-	dec a
-endr
-	ld e, a
-	add a
-	add e
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld [hl], a
-	ret
-
-.down
-	ld hl, SPRITEANIMSTRUCT_0D
-	add hl, bc
-	ld a, [hl]
-	cp $5
-	jr nc, .asm_12175
-	inc [hl]
-	ret
-
-.asm_12175
-	ld [hl], $0
-	ret
-
-.up
-	ld hl, SPRITEANIMSTRUCT_0D
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_12182
-	dec [hl]
-	ret
-
-.asm_12182
-	ld [hl], $5
-	ret
-
-Function12185: ; 12185 (4:6185)
-	ld hl, wc6d5
-	ld c, [hl]
-	inc hl
-	ld b, [hl]
-
-Function1218b: ; 1218b (4:618b)
-	ld hl, SPRITEANIMSTRUCT_0D
-	add hl, bc
-	ld a, [hl]
-	cp $5
-	jr nz, .asm_121aa
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld a, [hl]
-	cp $3
-	jr c, .asm_121a4
-	cp $6
-	jr c, .asm_121a7
-	ld a, $3
-	ret
-
-.asm_121a4
-	ld a, $1
-	ret
-
-.asm_121a7
-	ld a, $2
-	ret
-
-.asm_121aa
-	xor a
-	ret
-
-Function121ac: ; 121ac (4:61ac)
-	ld a, [wc6d7]
-	jp Function11b17
-; 121b2 (4:61b2)
-
-Function121b2: ; unreferenced
-	ld a, [wc6d2]
-	and a
-	ret z
-	cp $11
-	jr nz, .asm_121c3
-	push hl
-	ld hl, wc6d2
-rept 2
-	dec [hl]
-endr
-	jr .asm_121c8
-
-.asm_121c3
-	push hl
-	ld hl, wc6d2
-	dec [hl]
-
-.asm_121c8
-	call Function11bd0
-	ld c, [hl]
-	pop hl
-.asm_121cd
-	ld a, [hli]
-	cp $ff
-	jp z, Function11b27
-	cp c
-	jr z, .asm_121d9
-	inc hl
-	jr .asm_121cd
-
-.asm_121d9
-	ld a, [hl]
-	jp Function11b23
-; 121dd
-
-MailEntry_Uppercase: ; 122dd
-	db "A B C D E F G H I J"
-	db "K L M N O P Q R S T"
-	db "U V W X Y Z   , ? !"
-	db "1 2 3 4 5 6 7 8 9 0"
-	db "<PK> <MN> <PO> <KE> é ♂ ♀ ¥ … ×"
-	db "lower  DEL   END   "
-; 1224f
-
-MailEntry_Lowercase: ; 1224f
-	db "a b c d e f g h i j"
-	db "k l m n o p q r s t"
-	db "u v w x y z   . - /"
-	db "'d 'l 'm 'r 's 't 'v & ( )"
-	db "<``> <''> [ ] ' : ;      "
-	db "UPPER  DEL   END   "
-; 122c1
--- a/engine/debug.asm
+++ b/engine/debug.asm
@@ -401,10 +401,10 @@
 	ld de, VTiles2 tile $31
 	predef GetBackpic
 	ld a, $31
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	hlcoord 2, 4
 	lb bc, 6, 6
-	predef FillBox
+	predef PlaceGraphic
 	ld a, [wd003]
 	and a
 	jr z, .asm_81b66
@@ -433,10 +433,10 @@
 	callab GetTrainerPic
 	xor a
 	ld [TempEnemyMonSpecies], a
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	hlcoord 2, 3
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 
 .asm_81ba9
 	ld a, $1
--- a/engine/dummy_game.asm
+++ b/engine/dummy_game.asm
@@ -109,7 +109,7 @@
 
 .spawn_object
 	depixel 6, 3, 4, 4
-	ld a, SPRITE_ANIM_INDEX_0C
+	ld a, SPRITE_ANIM_INDEX_COMPOSE_MAIL_CURSOR
 	call _InitSpriteAnimStruct
 	ld a, 5
 	ld [wDummyGameNumberTriesRemaining], a
--- a/engine/engine_flags.asm
+++ b/engine/engine_flags.asm
@@ -108,7 +108,7 @@
 	engine_flag wMomSavingMoney, 0 ; mom saving money ; $8
 	engine_flag wMomSavingMoney, 7 ; dst
 
-	engine_flag wdc39, 0 ; unused, possibly related to a 2-day timer
+	engine_flag wUnusedTwoDayTimerOn, 0 ; unused, possibly related to a 2-day timer
 
 	engine_flag StatusFlags, 0 ; pokedex
 	engine_flag StatusFlags, 1 ; unown dex
--- a/engine/events.asm
+++ b/engine/events.asm
@@ -124,8 +124,8 @@
 	call ClearJoypad
 EnterMap: ; 9673e
 	xor a
-	ld [wd453], a
-	ld [wd454], a
+	ld [wXYComparePointer], a
+	ld [wXYComparePointer + 1], a
 	call SetUpFiveStepWildEncounterCooldown
 	callba RunMapSetupScript
 	call DisableEvents
@@ -378,7 +378,7 @@
 	ret
 
 .warp_tile
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	call CheckPitTile
 	jr nz, .not_pit
 	ld a, PLAYEREVENT_FALL
@@ -454,7 +454,7 @@
 	ld h, [hl]
 	ld l, a
 rept 4
-	add hl,de
+	add hl, de
 endr
 	
 	call GetMapScriptHeaderBank
@@ -1031,7 +1031,7 @@
 	ld b, 0
 	ld hl, PlayerEventScriptPointers
 rept 3
-	add hl,bc
+	add hl, bc
 endr
 	ld a, [hli]
 	ld [ScriptBank], a
--- a/engine/events_2.asm
+++ b/engine/events_2.asm
@@ -161,7 +161,7 @@
 	jr nc, .no
 
 .ice_check
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	call CheckIceTile
 	jr z, .no
 	scf
@@ -235,7 +235,7 @@
 ; 97d64
 
 TryWildEncounter_BugContest: ; 97d64
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	call CheckSuperTallGrassTile
 	ld b, 40 percent
 	jr z, .ok
--- a/engine/events_3.asm
+++ b/engine/events_3.asm
@@ -4,7 +4,7 @@
 	; For some reson, GameFreak chose to use a callba here instead of just falling through.
 	; No other function in the game references the function at 2E:400A, here labeled
 	; ReturnFromMapSetupScript.inefficientcallba.
-	callba .inefficientcallba ; this is a waste of 6 ROM bytes and 2 stack bytes
+	callba .inefficientcallba ; this is a waste of 6 ROM bytes and 6 stack bytes
 	ret
 ; b800a
 
@@ -288,7 +288,7 @@
 	add SCREEN_HEIGHT / 4
 	ld [wd1ec], a
 ; Get the pointer for the first signpost header in the map...
-	ld hl, wdc02
+	ld hl, wCurrentMapSignpostHeaderPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
--- a/engine/evolve.asm
+++ b/engine/evolve.asm
@@ -6,7 +6,6 @@
 	ld c, a
 	ld b, SET_FLAG
 	call EvoFlagAction
-
 EvolveAfterBattle: ; 421e6
 	xor a
 	ld [wMonTriedToEvolve], a
@@ -19,7 +18,7 @@
 
 	push hl
 
-CheckForEvolvablePokemon: ; 421f5
+EvolveAfterBattle_MasterLoop
 	ld hl, CurPartyMon
 	inc [hl]
 
@@ -28,7 +27,7 @@
 	inc hl
 	ld a, [hl]
 	cp $ff
-	jp z, Evolution_ReturnToMap
+	jp z, .ReturnToMap
 
 	ld [Buffer1], a
 
@@ -40,7 +39,7 @@
 	call EvoFlagAction
 	ld a, c
 	and a
-	jp z, CheckForEvolvablePokemon
+	jp z, EvolveAfterBattle_MasterLoop
 
 	ld a, [Buffer1]
 	dec a
@@ -63,7 +62,7 @@
 .loop
 	ld a, [hli]
 	and a
-	jr z, CheckForEvolvablePokemon
+	jr z, EvolveAfterBattle_MasterLoop
 
 	ld b, a
 
@@ -324,7 +323,7 @@
 	push hl
 	ld l, e
 	ld h, d
-	jp CheckForEvolvablePokemon
+	jp EvolveAfterBattle_MasterLoop
 ; 423f8
 
 .dont_evolve_1
@@ -334,12 +333,10 @@
 .dont_evolve_3
 	inc hl
 	jp .loop
-; 423fe
 
-; dummy pop
+; XXX
 	pop hl
-
-Evolution_ReturnToMap: ; 423ff
+.ReturnToMap
 	pop de
 	pop bc
 	pop hl
@@ -393,7 +390,7 @@
 	call PrintText
 	call ClearTileMap
 	pop hl
-	jp CheckForEvolvablePokemon
+	jp EvolveAfterBattle_MasterLoop
 ; 42461
 
 IsMonHoldingEverstone: ; 42461
--- a/engine/healmachineanim.asm
+++ b/engine/healmachineanim.asm
@@ -19,7 +19,7 @@
 
 .DoJumptableFunctions: ; 1233e
 	xor a
-	ld [wd1ec], a
+	ld [Buffer3], a
 .jumpable_loop
 	ld a, [Buffer1]
 	ld e, a
@@ -31,10 +31,10 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld a, [wd1ec]
+	ld a, [Buffer3]
 	ld e, a
 	inc a
-	ld [wd1ec], a
+	ld [Buffer3], a
 	add hl, de
 	ld a, [hl]
 	cp 5
@@ -81,7 +81,7 @@
 
 .PC_LoadBallsOntoMachine: ; 12393
 	ld hl, Sprites + $80
-	ld de, .PC_ElmsLab_TileMap
+	ld de, .PC_ElmsLab_OAM
 	call .PlaceHealingMachineTile
 	call .PlaceHealingMachineTile
 	jr .LoadBallsOntoMachine
@@ -88,7 +88,7 @@
 
 .HOF_LoadBallsOntoMachine: ; 123a1
 	ld hl, Sprites + $80
-	ld de, .HOF_TileMap
+	ld de, .HOF_OAM
 
 .LoadBallsOntoMachine: ; 123a7
 	ld a, [PartyCount]
@@ -126,15 +126,15 @@
 	ret
 ; 123dc
 
-.PC_ElmsLab_TileMap: ; 123dc
-	db $20, $22, $7c, $16
-	db $20, $26, $7c, $16
-	db $26, $20, $7d, $16
-	db $26, $28, $7d, $36
-	db $2b, $20, $7d, $16
-	db $2b, $28, $7d, $36
-	db $30, $20, $7d, $16
-	db $30, $28, $7d, $36
+.PC_ElmsLab_OAM: ; 123dc
+	dsprite   4, 0,   4, 2, $7c, $16
+	dsprite   4, 0,   4, 6, $7c, $16
+	dsprite   4, 6,   4, 0, $7d, $16
+	dsprite   4, 6,   5, 0, $7d, $36 ; xflip
+	dsprite   5, 3,   4, 0, $7d, $16
+	dsprite   5, 3,   5, 0, $7d, $36 ; xflip
+	dsprite   6, 0,   4, 0, $7d, $16
+	dsprite   6, 0,   5, 0, $7d, $36 ; xflip
 ; 123fc
 
 .HealMachineGFX: ; 123fc
@@ -141,13 +141,13 @@
 INCBIN "gfx/unknown/0123fc.2bpp"
 ; 1241c
 
-.HOF_TileMap: ; 1241c
-	db $3c, $51, $7d, $16
-	db $3c, $56, $7d, $16
-	db $3b, $4d, $7d, $16
-	db $3b, $5a, $7d, $16
-	db $39, $49, $7d, $16
-	db $39, $5d, $7d, $16
+.HOF_OAM: ; 1241c
+	dsprite   7, 4,  10, 1, $7d, $16
+	dsprite   7, 4,  10, 6, $7d, $16
+	dsprite   7, 3,   9, 5, $7d, $16
+	dsprite   7, 3,  11, 2, $7d, $16
+	dsprite   7, 1,   9, 1, $7d, $16
+	dsprite   7, 1,  11, 5, $7d, $16
 ; 12434
 
 .LoadPalettes: ; 12434
@@ -241,10 +241,10 @@
 .PlaceHealingMachineTile: ; 124a3
 	push bc
 	ld a, [Buffer1]
-	lb bc, $10, $20
+	bcpixel 2, 4
 	cp $1 ; ElmsLab
 	jr z, .okay
-	lb bc, $00, $00
+	bcpixel 0, 0
 
 .okay
 	ld a, [de]
--- a/engine/intro_menu.asm
+++ b/engine/intro_menu.asm
@@ -318,7 +318,7 @@
 
 InitializeWorld: ; 5d23
 	call ShrinkPlayer
-	callba GetSpawnCoord
+	callba SpawnPlayer
 	callba _InitializeStartDay
 	ret
 ; 5d33
@@ -947,10 +947,10 @@
 	ld de, VTiles2
 	callba GetTrainerPic
 	xor a
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	hlcoord 6, 4
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 	ret
 ; 61b4
 
@@ -959,10 +959,10 @@
 	ld c, $31
 	predef DecompressPredef
 	xor a
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	hlcoord 6, 4
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 	ret
 ; 61cd
 
--- a/engine/link.asm
+++ b/engine/link.asm
@@ -427,7 +427,7 @@
 	or $3
 	ld [hl], a
 	ld hl, OTPlayerName
-	ld de, OTName
+	ld de, OTClassName
 	ld bc, NAME_LENGTH
 	call CopyBytes
 	call ReturnToMapFromSubmenu
@@ -578,7 +578,7 @@
 rept 3
 	ld [hli], a
 endr
-	ld b, wc6d3 - (wMisc + 3)
+	ld b, $c8
 	xor a
 .loop3
 	ld [hli], a
--- a/engine/map_setup.asm
+++ b/engine/map_setup.asm
@@ -272,7 +272,7 @@
 	dba GetCoordOfUpperLeftCorner ; 1f
 	dba RestoreFacingAfterWarp ; 20
 	dba SpawnInFacingDown ; 21
-	dba GetSpawnCoord ; 22
+	dba SpawnPlayer ; 22
 	dba RefreshPlayerCoords ; 23
 	dba DelayClearingOldSprites ; 24
 	dba DelayLoadingNewSprites ; 25
--- a/engine/mart.asm
+++ b/engine/mart.asm
@@ -139,7 +139,7 @@
 	ld a, e
 	cp (MartsEnd - Marts) / 2
 	jr c, .IsAMart
-	ld b, $5
+	ld b, BANK(DefaultMart)
 	ld de, DefaultMart
 	ret
 
@@ -151,7 +151,7 @@
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	ld b, $5
+	ld b, BANK(Marts)
 	ret
 ; 15b47
 
--- a/engine/mon_icons.asm
+++ b/engine/mon_icons.asm
@@ -18,7 +18,7 @@
 	push hl
 	push de
 	push bc
-	call Function8e849
+	call .LoadIcon
 	pop bc
 	pop de
 	pop hl
@@ -25,9 +25,9 @@
 	ret
 ; 8e849
 
-Function8e849: ; 8e849
+.LoadIcon: ; 8e849
 	ld d, 0
-	ld hl, .dw
+	ld hl, .Jumptable
 rept 2
 	add hl, de
 endr
@@ -38,23 +38,23 @@
 ; 8e854
 
 
-.dw: ; 8e854 (23:6854)
+.Jumptable: ; 8e854 (23:6854)
 	dw Function8e8d5 ; init
 	dw Function8e961
 	dw Function8e97d
-	dw Function8e99a
+	dw Trade_LoadMonIconGFX
 	dw Function8e898
 	dw Mobile_InitPartyMenuBGPal71
-	dw Function8e862
+	dw .GetPartyMenuMonIcon
 
 
-Function8e862: ; 8e862 (23:6862)
+.GetPartyMenuMonIcon: ; 8e862 (23:6862)
 	call InitPartyMenuIcon
-	call Function8e86c
+	call .GetPartyMonItemGFX
 	call SetPartyMonIconAnimSpeed
 	ret
 
-Function8e86c: ; 8e86c (23:686c)
+.GetPartyMonItemGFX: ; 8e86c (23:686c)
 	push bc
 	ld a, [hObjectStructIndexBuffer]
 	ld hl, PartyMon1Item
@@ -63,7 +63,7 @@
 	pop bc
 	ld a, [hl]
 	and a
-	jr z, .asm_8e890
+	jr z, .no_item
 	push hl
 	push bc
 	ld d, a
@@ -70,15 +70,16 @@
 	callab ItemIsMail
 	pop bc
 	pop hl
-	jr c, .asm_8e88e
+	jr c, .not_mail
 	ld a, $6
-	jr .asm_8e892
-.asm_8e88e
+	jr .got_tile
+.not_mail
 	ld a, $5
-	; jr .asm_8e892
-.asm_8e890
+	; jr .got_tile
+
+.no_item
 	ld a, $4
-.asm_8e892
+.got_tile
 	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
 	add hl, bc
 	ld [hl], a
@@ -246,7 +247,7 @@
 	ld [hl], SPRITE_ANIM_SEQ_NULL
 	ret
 
-Function8e99a: ; 8e99a (23:699a)
+Trade_LoadMonIconGFX: ; 8e99a (23:699a)
 	ld a, [wd265]
 	call ReadMonMenuIcon
 	ld [CurIcon], a
--- a/engine/money.asm
+++ b/engine/money.asm
@@ -86,7 +86,7 @@
 	jr .skip_carry
 
 .set_carry
-	ld a, TRUE
+	ld a, 1
 	and a
 	scf
 .skip_carry
--- a/engine/move_mon.asm
+++ b/engine/move_mon.asm
@@ -287,7 +287,7 @@
 	dec a
 	jr nz, .generatestats
 	ld hl, EnemyMonMaxHP
-	ld bc, 2*6 ; MaxHP + 5 Stats
+	ld bc, 2 * 6 ; MaxHP + 5 Stats
 	call CopyBytes
 	pop hl
 	jr .next3
@@ -294,10 +294,9 @@
 
 .generatestats
 	pop hl
-	ld bc, 2*5 ; 5 Stats
+	ld bc, MON_STAT_EXP - 1
 	add hl, bc
-	ld b, $0 ; if b = 1, then the Stats of the Pkmn are calculated
-             ; only the current HP aren't set to MaxHP after this
+	ld b, $0 ; if b = 1, then stat calculation takes stat exp into account.
 	call CalcPkmnStats
 
 .next3
--- a/engine/namingscreen.asm
+++ b/engine/namingscreen.asm
@@ -3,14 +3,15 @@
 	call NamingScreen
 	call ReturnToMapWithSpeechTextbox
 	ret
+
 ; 0x116c1
 
 NamingScreen: ; 116c1
-	ld hl, wc6d0
+	ld hl, wNamingScreenDestinationPointer
 	ld [hl], e
 	inc hl
 	ld [hl], d
-	ld hl, wc6d4
+	ld hl, wNamingScreenType
 	ld [hl], b
 	ld hl, Options
 	ld a, [hl]
@@ -24,11 +25,11 @@
 	push af
 	ld a, $1
 	ld [hInMenu], a
-	call Function116f8
+	call .SetUpNamingScreen
 	call DelayFrame
-.asm_116e5
-	call Function11915
-	jr nc, .asm_116e5
+.loop
+	call NamingScreenJoypadLoop
+	jr nc, .loop
 	pop af
 	ld [hInMenu], a
 	pop af
@@ -37,31 +38,33 @@
 	ld [Options], a
 	call ClearJoypad
 	ret
+
 ; 116f8
 
-Function116f8: ; 116f8
+.SetUpNamingScreen: ; 116f8
 	call ClearBGPalettes
 	ld b, SCGB_08
 	call GetSGBLayout
 	call DisableLCD
-	call Function11c51
-	call Function118a8
+	call LoadNamingScreenGFX
+	call NamingScreen_InitText
 	ld a, $e3
 	ld [rLCDC], a
-	call Function1171d
+	call .GetNamingScreenSetup
 	call WaitBGMap
 	call WaitTop
 	call SetPalettes
-	call Function11be0
+	call NamingScreen_InitNameEntry
 	ret
+
 ; 1171d
 
-Function1171d: ; 1171d
-	ld a, [wc6d4]
+.GetNamingScreenSetup: ; 1171d
+	ld a, [wNamingScreenType]
 	and 7
 	ld e, a
 	ld d, 0
-	ld hl, Jumptable_1172e
+	ld hl, .Jumptable
 rept 2
 	add hl, de
 endr
@@ -69,21 +72,20 @@
 	ld h, [hl]
 	ld l, a
 	jp [hl]
+
 ; 1172e
 
+.Jumptable: ; 1172e (4:572e)
+	dw .Pokemon
+	dw .Player
+	dw .Rival
+	dw .Mom
+	dw .Box
+	dw .Tomodachi
+	dw .Pokemon
+	dw .Pokemon
 
-Jumptable_1172e: ; 1172e (4:572e)
-	dw Function1173e
-	dw Function1178d
-	dw Function117ae
-	dw Function117d1
-	dw Function117f5
-	dw Function1182c
-	dw Function1173e
-	dw Function1173e
-
-
-Function1173e: ; 1173e (4:573e)
+.Pokemon: ; 1173e (4:573e)
 	ld a, [CurPartySpecies]
 	ld [wd265], a
 	ld hl, Function8e83f
@@ -97,112 +99,124 @@
 	call PlaceString
 	ld l, c
 	ld h, b
-	ld de, Strings_11780
+	ld de, .NicknameStrings
 	call PlaceString
 	inc de
 	hlcoord 5, 4
 	call PlaceString
 	callba GetGender
-	jr c, .asm_1177c
-	ld a, $ef
-	jr nz, .asm_11778
-	ld a, $f5
-.asm_11778
+	jr c, .genderless
+	ld a, "♂"
+	jr nz, .place_gender
+	ld a, "♀"
+.place_gender
 	hlcoord 1, 2
 	ld [hl], a
-.asm_1177c
-	call Function1187b
+.genderless
+	call .StoreMonIconParams
 	ret
+
 ; 11780 (4:5780)
 
-Strings_11780: ; 11780
+.NicknameStrings: ; 11780
 	db "'S@"
 	db "NICKNAME?@"
+
 ; 1178d
 
-Function1178d: ; 1178d (4:578d)
+.Player: ; 1178d (4:578d)
 	callba GetPlayerIcon
-	call Function11847
+	call .LoadSprite
 	hlcoord 5, 2
-	ld de, String_117a3
+	ld de, .PlayerNameString
 	call PlaceString
-	call Function11882
+	call .StoreSpriteIconParams
 	ret
+
 ; 117a3 (4:57a3)
 
-String_117a3: ; 117a3
+.PlayerNameString: ; 117a3
 	db "YOUR NAME?@"
+
 ; 117ae
 
-Function117ae: ; 117ae (4:57ae)
+.Rival: ; 117ae (4:57ae)
 	ld de, SilverSpriteGFX
 	ld b, BANK(SilverSpriteGFX)
-	call Function11847
+	call .LoadSprite
 	hlcoord 5, 2
-	ld de, String_117c3
+	ld de, .RivalNameString
 	call PlaceString
-	call Function11882
+	call .StoreSpriteIconParams
 	ret
+
 ; 117c3 (4:57c3)
 
-String_117c3: ; 117c3
+.RivalNameString: ; 117c3
 	db "RIVAL'S NAME?@"
+
 ; 117d1
 
-Function117d1: ; 117d1 (4:57d1)
+.Mom: ; 117d1 (4:57d1)
 	ld de, MomSpriteGFX
 	ld b, BANK(MomSpriteGFX)
-	call Function11847
+	call .LoadSprite
 	hlcoord 5, 2
-	ld de, String_117e6
+	ld de, .MomNameString
 	call PlaceString
-	call Function11882
+	call .StoreSpriteIconParams
 	ret
+
 ; 117e6 (4:57e6)
 
-String_117e6: ; 117e6
+.MomNameString: ; 117e6
 	db "MOTHER'S NAME?@"
+
 ; 117f5
 
-Function117f5: ; 117f5 (4:57f5)
+.Box: ; 117f5 (4:57f5)
 	ld de, PokeBallSpriteGFX
 	ld hl, VTiles0 tile $00
 	lb bc, BANK(PokeBallSpriteGFX), $4
 	call Request2bpp
 	xor a
-	ld hl, wc300
+	ld hl, wSpriteAnimDict
 	ld [hli], a
 	ld [hl], a
 	depixel 4, 4, 4, 0
-	ld a, SPRITE_ANIM_INDEX_WALK_CYCLE
+	ld a, SPRITE_ANIM_INDEX_RED_WALK
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
 	add hl, bc
 	ld [hl], $0
 	hlcoord 5, 2
-	ld de, String_11822
+	ld de, .BoxNameString
 	call PlaceString
-	call Function11889
+	call .StoreBoxIconParams
 	ret
+
 ; 11822 (4:5822)
 
-String_11822: ; 11822
+.BoxNameString: ; 11822
 	db "BOX NAME?@"
+
 ; 1182c
 
-Function1182c: ; 1182c (4:582c)
+.Tomodachi: ; 1182c (4:582c)
 	hlcoord 3, 2
-	ld de, String_11839
+	ld de, .oTomodachi_no_namae_sutoringu
 	call PlaceString
-	call Function11882
+	call .StoreSpriteIconParams
 	ret
+
 ; 11839 (4:5839)
 
-String_11839: ; 11839
+.oTomodachi_no_namae_sutoringu: ; 11839
 	db "おともだち の なまえは?@"
+
 ; 11847
 
-Function11847: ; 11847 (4:5847)
+.LoadSprite: ; 11847 (4:5847)
 	push de
 	ld hl, VTiles0 tile $00
 	ld c, $4
@@ -209,7 +223,7 @@
 	push bc
 	call Request2bpp
 	pop bc
-	ld hl, $c0
+	ld hl, 12 tiles
 	add hl, de
 	ld e, l
 	ld d, h
@@ -216,52 +230,51 @@
 	ld hl, VTiles0 tile $04
 	call Request2bpp
 	xor a
-	ld hl, wc300
+	ld hl, wSpriteAnimDict
 	ld [hli], a
 	ld [hl], a
 	pop de
-	ld b, SPRITE_ANIM_INDEX_WALK_CYCLE
+	ld b, SPRITE_ANIM_INDEX_RED_WALK
 	ld a, d
-	cp $7a
-	jr nz, .asm_11873
+	cp KrisSpriteGFX / $100
+	jr nz, .not_kris
 	ld a, e
-	cp $40
-	jr nz, .asm_11873
-	ld b, SPRITE_ANIM_INDEX_1E
-.asm_11873
+	cp KrisSpriteGFX % $100
+	jr nz, .not_kris
+	ld b, SPRITE_ANIM_INDEX_BLUE_WALK
+.not_kris
 	ld a, b
 	depixel 4, 4, 4, 0
 	call _InitSpriteAnimStruct
 	ret
 
-Function1187b: ; 1187b (4:587b)
-	ld a, $a
+.StoreMonIconParams: ; 1187b (4:587b)
+	ld a, PKMN_NAME_LENGTH - 1
 	hlcoord 5, 6
-	jr Function11890
+	jr .StoreParams
 
-Function11882: ; 11882 (4:5882)
-	ld a, $7
+.StoreSpriteIconParams: ; 11882 (4:5882)
+	ld a, PLAYER_NAME_LENGTH - 1
 	hlcoord 5, 6
-	jr Function11890
+	jr .StoreParams
 
-Function11889: ; 11889 (4:5889)
-	ld a, $8
+.StoreBoxIconParams: ; 11889 (4:5889)
+	ld a, BOX_NAME_LENGTH - 1
 	hlcoord 5, 4
-	jr Function11890
+	jr .StoreParams
 
-Function11890: ; 11890 (4:5890)
-	ld [wc6d3], a
+.StoreParams: ; 11890 (4:5890)
+	ld [wNamingScreenMaxNameLength], a
 	ld a, l
-	ld [wc6d8], a
+	ld [wNamingScreenStringEntryCoord], a
 	ld a, h
-	ld [wc6d9], a
+	ld [wNamingScreenStringEntryCoord + 1], a
 	ret
 
-
-Function1189c: ; 1189c
+NamingScreen_IsTargetBox: ; 1189c
 	push bc
 	push af
-	ld a, [wc6d4]
+	ld a, [wNamingScreenType]
 	sub $3
 	ld b, a
 	pop af
@@ -268,9 +281,10 @@
 	dec b
 	pop bc
 	ret
+
 ; 118a8
 
-Function118a8: ; 118a8
+NamingScreen_InitText: ; 118a8
 	call WaitTop
 	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
@@ -278,31 +292,31 @@
 	call ByteFill
 	hlcoord 1, 1
 	lb bc, 6, 18
-	call Function1189c
-	jr nz, .asm_118c4
+	call NamingScreen_IsTargetBox
+	jr nz, .not_box
 	lb bc, 4, 18
 
-.asm_118c4
+.not_box
 	call ClearBox
 	ld de, NameInputUpper
-Function118ca: ; 118ca
-	call Function1189c
-	jr nz, .asm_118d5
+NamingScreen_ApplyTextInputMode: ; 118ca
+	call NamingScreen_IsTargetBox
+	jr nz, .not_box
 	ld hl, BoxNameInputLower - NameInputLower
 	add hl, de
 	ld d, h
 	ld e, l
 
-.asm_118d5
+.not_box
 	push de
 	hlcoord 1, 8
 	lb bc, 7, 18
-	call Function1189c
-	jr nz, .asm_118e7
+	call NamingScreen_IsTargetBox
+	jr nz, .not_box_2
 	hlcoord 1, 6
 	lb bc, 9, 18
 
-.asm_118e7
+.not_box_2
 	call ClearBox
 	hlcoord 1, 16
 	lb bc, 1, 18
@@ -310,41 +324,42 @@
 	pop de
 	hlcoord 2, 8
 	ld b, $5
-	call Function1189c
-	jr nz, .asm_11903
+	call NamingScreen_IsTargetBox
+	jr nz, .row
 	hlcoord 2, 6
 	ld b, $6
 
-.asm_11903
+.row
 	ld c, $11
-.asm_11905
+.col
 	ld a, [de]
 	ld [hli], a
 	inc de
 	dec c
-	jr nz, .asm_11905
+	jr nz, .col
 	push de
-	ld de, $17
+	ld de, 2 * SCREEN_WIDTH - $11
 	add hl, de
 	pop de
 	dec b
-	jr nz, .asm_11903
+	jr nz, .row
 	ret
+
 ; 11915
 
-Function11915: ; 11915
+NamingScreenJoypadLoop: ; 11915
 	call JoyTextDelay
 	ld a, [wJumptableIndex]
 	bit 7, a
-	jr nz, .asm_11930
-	call Function11968
+	jr nz, .quit
+	call .RunJumptable
 	callba PlaySpriteAnimationsAndDelayFrame
-	call Function11940
+	call .UpdateStringEntry
 	call DelayFrame
 	and a
 	ret
 
-.asm_11930
+.quit
 	callab ClearSpriteAnims
 	call ClearSprites
 	xor a
@@ -352,24 +367,25 @@
 	ld [hSCY], a
 	scf
 	ret
+
 ; 11940
 
-Function11940: ; 11940
+.UpdateStringEntry: ; 11940
 	xor a
 	ld [hBGMapMode], a
 	hlcoord 1, 5
-	call Function1189c
-	jr nz, .asm_1194e
+	call NamingScreen_IsTargetBox
+	jr nz, .got_coords
 	hlcoord 1, 3
 
-.asm_1194e
+.got_coords
 	lb bc, 1, 18
 	call ClearBox
-	ld hl, wc6d0
+	ld hl, wNamingScreenDestinationPointer
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	ld hl, wc6d8
+	ld hl, wNamingScreenStringEntryCoord
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -377,13 +393,14 @@
 	ld a, $1
 	ld [hBGMapMode], a
 	ret
+
 ; 11968
 
-Function11968: ; 11968
+.RunJumptable: ; 11968
 	ld a, [wJumptableIndex]
 	ld e, a
 	ld d, $0
-	ld hl, Jumptable_11977
+	ld hl, .Jumptable
 rept 2
 	add hl, de
 endr
@@ -391,26 +408,25 @@
 	ld h, [hl]
 	ld l, a
 	jp [hl]
+
 ; 11977
 
+.Jumptable: ; 11977 (4:5977)
+	dw .InitCursor
+	dw .ReadButtons
 
-Jumptable_11977: ; 11977 (4:5977)
-	dw Function1197b
-	dw Function119a1
-
-
-Function1197b: ; 1197b (4:597b)
+.InitCursor: ; 1197b (4:597b)
 	depixel 10, 3
-	call Function1189c
-	jr nz, .asm_11985
+	call NamingScreen_IsTargetBox
+	jr nz, .got_cursor_position
 	ld d, 8 * 8
-.asm_11985
+.got_cursor_position
 	ld a, SPRITE_ANIM_INDEX_02
 	call _InitSpriteAnimStruct
 	ld a, c
-	ld [wc6d5], a
+	ld [wNamingScreenCursorObjectPointer], a
 	ld a, b
-	ld [wc6d6], a
+	ld [wNamingScreenCursorObjectPointer + 1], a
 	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
 	add hl, bc
 	ld a, [hl]
@@ -421,7 +437,7 @@
 	inc [hl]
 	ret
 
-Function119a1: ; 119a1 (4:59a1)
+.ReadButtons: ; 119a1 (4:59a1)
 	ld hl, hJoyPressed ; $ffa7
 	ld a, [hl]
 	and A_BUTTON
@@ -438,19 +454,19 @@
 	ret
 
 .a
-	call Function11a0b
+	call .GetCursorPosition
 	cp $1
 	jr z, .select
 	cp $2
 	jr z, .b
 	cp $3
-	jr z, .asm_119eb
-	call Function11c11
-	call Function11b14
+	jr z, .end
+	call NamingScreen_GetLastCharacter
+	call NamingScreen_TryAddCharacter
 	ret nc
 
 .start
-	ld hl, wc6d5
+	ld hl, wNamingScreenCursorObjectPointer
 	ld c, [hl]
 	inc hl
 	ld b, [hl]
@@ -460,17 +476,17 @@
 	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld [hl], $4
-	call Function1189c
+	call NamingScreen_IsTargetBox
 	ret nz
 	inc [hl]
 	ret
 
 .b
-	call Function11bbc
+	call NamingScreen_DeleteCharacter
 	ret
 
-.asm_119eb
-	call Function11bf7
+.end
+	call NamingScreen_StoreEntry
 	ld hl, wJumptableIndex
 	set 7, [hl]
 	ret
@@ -480,56 +496,59 @@
 	ld a, [hl]
 	xor 1
 	ld [hl], a
-	jr z, .asm_11a04
+	jr z, .upper
 	ld de, NameInputLower
-	call Function118ca
+	call NamingScreen_ApplyTextInputMode
 	ret
 
-.asm_11a04
+.upper
 	ld de, NameInputUpper
-	call Function118ca
+	call NamingScreen_ApplyTextInputMode
 	ret
 
-Function11a0b: ; 11a0b (4:5a0b)
-	ld hl, wc6d5
+.GetCursorPosition: ; 11a0b (4:5a0b)
+	ld hl, wNamingScreenCursorObjectPointer
 	ld c, [hl]
 	inc hl
 	ld b, [hl]
 
-Function11a11: ; 11a11 (4:5a11)
+NamingScreen_GetCursorPosition: ; 11a11 (4:5a11)
 	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld a, [hl]
 	push bc
 	ld b, $4
-	call Function1189c
-	jr nz, .asm_11a1f
+	call NamingScreen_IsTargetBox
+	jr nz, .not_box
 	inc b
-.asm_11a1f
+.not_box
 	cp b
 	pop bc
-	jr nz, .asm_11a39
+	jr nz, .not_bottom_row
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
 	cp $3
-	jr c, .asm_11a33
+	jr c, .case_switch
 	cp $6
-	jr c, .asm_11a36
+	jr c, .delete
 	ld a, $3
 	ret
-.asm_11a33
+
+.case_switch
 	ld a, $1
 	ret
-.asm_11a36
+
+.delete
 	ld a, $2
 	ret
-.asm_11a39
+
+.not_bottom_row
 	xor a
 	ret
 
-Function11a3b: ; 11a3b (4:5a3b)
-	call Function11a8b
+NamingScreen_AnimateCursor: ; 11a3b (4:5a3b)
+	call .GetDPad
 	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld a, [hl]
@@ -539,17 +558,17 @@
 	add hl, bc
 	ld [hl], e
 	ld d, $4
-	call Function1189c
-	jr nz, .asm_11a53
+	call NamingScreen_IsTargetBox
+	jr nz, .ok
 	inc d
-.asm_11a53
+.ok
 	cp d
-	ld de, Unknown_11a79
+	ld de, .LetterEntries
 	ld a, $0
-	jr nz, .asm_11a60
-	ld de, Unknown_11a82
+	jr nz, .ok2
+	ld de, .CaseDelEnd
 	ld a, $1
-.asm_11a60
+.ok2
 	ld hl, SPRITEANIMSTRUCT_0E
 	add hl, bc
 	add [hl]
@@ -566,15 +585,18 @@
 	add hl, bc
 	ld [hl], a
 	ret
+
 ; 11a79 (4:5a79)
 
-Unknown_11a79: ; 11a79
+.LetterEntries: ; 11a79
 	db $00, $10, $20, $30, $40, $50, $60, $70, $80
-Unknown_11a82: ; 11a82
+
+.CaseDelEnd: ; 11a82
 	db $00, $00, $00, $30, $30, $30, $60, $60, $60
+
 ; 11a8b
 
-Function11a8b: ; 11a8b (4:5a8b)
+.GetDPad: ; 11a8b (4:5a8b)
 	ld hl, hJoyLast
 	ld a, [hl]
 	and D_UP
@@ -589,8 +611,9 @@
 	and D_RIGHT
 	jr nz, .right
 	ret
+
 .right
-	call Function11a11
+	call NamingScreen_GetCursorPosition
 	and a
 	jr nz, .asm_11ab7
 	ld hl, SPRITEANIMSTRUCT_0C
@@ -600,9 +623,11 @@
 	jr nc, .asm_11ab4
 	inc [hl]
 	ret
+
 .asm_11ab4
 	ld [hl], $0
 	ret
+
 .asm_11ab7
 	cp $3
 	jr nz, .asm_11abc
@@ -615,8 +640,9 @@
 	add hl, bc
 	ld [hl], a
 	ret
+
 .left
-	call Function11a11
+	call NamingScreen_GetCursorPosition
 	and a
 	jr nz, .asm_11ad8
 	ld hl, SPRITEANIMSTRUCT_0C
@@ -626,9 +652,11 @@
 	jr z, .asm_11ad5
 	dec [hl]
 	ret
+
 .asm_11ad5
 	ld [hl], $8
 	ret
+
 .asm_11ad8
 	cp $1
 	jr nz, .asm_11ade
@@ -644,24 +672,28 @@
 	add hl, bc
 	ld [hl], a
 	ret
+
 .down
 	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld a, [hl]
-	call Function1189c
+	call NamingScreen_IsTargetBox
 	jr nz, .asm_11af9
 	cp $5
 	jr nc, .asm_11aff
 	inc [hl]
 	ret
+
 .asm_11af9
 	cp $4
 	jr nc, .asm_11aff
 	inc [hl]
 	ret
+
 .asm_11aff
 	ld [hl], $0
 	ret
+
 .up
 	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
@@ -670,67 +702,70 @@
 	jr z, .asm_11b0c
 	dec [hl]
 	ret
+
 .asm_11b0c
 	ld [hl], $4
-	call Function1189c
+	call NamingScreen_IsTargetBox
 	ret nz
 	inc [hl]
 	ret
 
-Function11b14: ; 11b14 (4:5b14)
-	ld a, [wc6d7]
-
-Function11b17: ; 11b17 (4:5b17)
-	ld a, [wc6d3]
+NamingScreen_TryAddCharacter: ; 11b14 (4:5b14)
+	ld a, [wNamingScreenLastCharacter] ; lost
+MailComposition_TryAddCharacter: ; 11b17 (4:5b17)
+	ld a, [wNamingScreenMaxNameLength]
 	ld c, a
-	ld a, [wc6d2]
+	ld a, [wNamingScreenCurrNameLength]
 	cp c
 	ret nc
 
-	ld a, [wc6d7]
+	ld a, [wNamingScreenLastCharacter]
 
-Function11b23: ; 11b23
-	call Function11bd0
+NamingScreen_LoadNextCharacter: ; 11b23
+	call NamingScreen_GetTextCursorPosition
 	ld [hl], a
 
-Function11b27: ; 11b27
-	ld hl, wc6d2
+NamingScreen_AdvanceCursor_CheckEndOfString: ; 11b27
+	ld hl, wNamingScreenCurrNameLength
 	inc [hl]
-	call Function11bd0
+	call NamingScreen_GetTextCursorPosition
 	ld a, [hl]
-	cp $50
-	jr z, .asm_11b37
+	cp "@"
+	jr z, .end_of_string
 	ld [hl], $f2
 	and a
 	ret
-.asm_11b37
+
+.end_of_string
 	scf
 	ret
+
 ; 11b39 (4:5b39)
 
-Function11b39: ; 11b39
-	ld a, [wc6d2]
+; XXX
+	ld a, [wNamingScreenCurrNameLength]
 	and a
 	ret z
 	push hl
-	ld hl, wc6d2
+	ld hl, wNamingScreenCurrNameLength
 	dec [hl]
-	call Function11bd0
+	call NamingScreen_GetTextCursorPosition
 	ld c, [hl]
 	pop hl
 
-.asm_11b48
+.loop
 	ld a, [hli]
 	cp $ff
-	jr z, Function11b27
+	jr z, NamingScreen_AdvanceCursor_CheckEndOfString
 	cp c
-	jr z, .asm_11b53
+	jr z, .done
 	inc hl
-	jr .asm_11b48
+	jr .loop
 
-.asm_11b53
+.done
 	ld a, [hl]
-	jr Function11b23
+	jr NamingScreen_LoadNextCharacter
+
 ; 11b56
 
 Dakutens: ; Dummied out
@@ -748,15 +783,16 @@
 	db "はぱ", "ひぴ", "ふぷ", "へぺ", "ほぽ"
 	db "ハパ", "ヒピ", "フプ", "へぺ", "ホポ"
 	db $ff
+
 ; 11bbc
 
-Function11bbc: ; 11bbc (4:5bbc)
-	ld hl, wc6d2
+NamingScreen_DeleteCharacter: ; 11bbc (4:5bbc)
+	ld hl, wNamingScreenCurrNameLength
 	ld a, [hl]
 	and a
 	ret z
 	dec [hl]
-	call Function11bd0
+	call NamingScreen_GetTextCursorPosition
 	ld [hl], $f2
 	inc hl
 	ld a, [hl]
@@ -765,32 +801,33 @@
 	ld [hl], $eb
 	ret
 
-Function11bd0: ; 11bd0 (4:5bd0)
+NamingScreen_GetTextCursorPosition: ; 11bd0 (4:5bd0)
 	push af
-	ld hl, wc6d0
+	ld hl, wNamingScreenDestinationPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld a, [wc6d2]
+	ld a, [wNamingScreenCurrNameLength]
 	ld e, a
 	ld d, 0
 	add hl, de
 	pop af
 	ret
+
 ; 11be0
 
-Function11be0: ; 11be0
-; load $f2, ($eb * [wc6d3]), $50 into the dw address at wc6d0
-	ld hl, wc6d0
+NamingScreen_InitNameEntry: ; 11be0
+; load $f2, ($eb * [wNamingScreenMaxNameLength]), $50 into the dw address at wNamingScreenDestinationPointer
+	ld hl, wNamingScreenDestinationPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld [hl], "·"
+	ld [hl], $f2
 	inc hl
-	ld a, [wc6d3]
+	ld a, [wNamingScreenMaxNameLength]
 	dec a
 	ld c, a
-	ld a, "→"
+	ld a, $eb
 .loop
 	ld [hli], a
 	dec c
@@ -797,32 +834,32 @@
 	jr nz, .loop
 	ld [hl], "@"
 	ret
+
 ; 11bf7
 
-
-Function11bf7: ; 11bf7 (4:5bf7)
-	ld hl, wc6d0
+NamingScreen_StoreEntry: ; 11bf7 (4:5bf7)
+	ld hl, wNamingScreenDestinationPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld a, [wc6d3]
+	ld a, [wNamingScreenMaxNameLength]
 	ld c, a
-.asm_11c01
+.loop
 	ld a, [hl]
 	cp $eb
-	jr z, .asm_11c0a
+	jr z, .terminator
 	cp $f2
-	jr nz, .asm_11c0c
-.asm_11c0a
-	ld [hl], $50
-.asm_11c0c
+	jr nz, .not_terminator
+.terminator
+	ld [hl], "@"
+.not_terminator
 	inc hl
 	dec c
-	jr nz, .asm_11c01
+	jr nz, .loop
 	ret
 
-Function11c11: ; 11c11 (4:5c11)
-	ld hl, wc6d5
+NamingScreen_GetLastCharacter: ; 11c11 (4:5c11)
+	ld hl, wNamingScreenCursorObjectPointer
 	ld c, [hl]
 	inc hl
 	ld b, [hl]
@@ -849,51 +886,51 @@
 	srl a
 	ld d, a
 	hlcoord 0, 0
-	ld bc, $14
-.asm_11c43
+	ld bc, SCREEN_WIDTH
+.loop
 	ld a, d
 	and a
-	jr z, .asm_11c4b
+	jr z, .done
 	add hl, bc
 	dec d
-	jr .asm_11c43
-.asm_11c4b
+	jr .loop
+
+.done
 	add hl, de
 	ld a, [hl]
-	ld [wc6d7], a
+	ld [wNamingScreenLastCharacter], a
 	ret
 
-
-Function11c51: ; 11c51
+LoadNamingScreenGFX: ; 11c51
 	call ClearSprites
 	callab ClearSpriteAnims
 	call LoadStandardFont
 	call LoadFontsExtra
 
-	ld de, GFX_11e65
+	ld de, NamingScreenGFX_MiddleLine
 	ld hl, VTiles1 tile $6b
-	lb bc, BANK(GFX_11e65), 1
+	lb bc, BANK(NamingScreenGFX_MiddleLine), 1
 	call Get1bpp
 
-	ld de, GFX_11e6d
+	ld de, NamingScreenGFX_UnderLine
 	ld hl, VTiles1 tile $72
-	lb bc, BANK(GFX_11e6d), 1
+	lb bc, BANK(NamingScreenGFX_UnderLine), 1
 	call Get1bpp
 
 	ld de, VTiles2 tile $60
-	ld hl, GFX_11cb7
-	ld bc, $10
-	ld a, BANK(GFX_11cb7)
+	ld hl, NamingScreenGFX_Border
+	ld bc, 1 tiles
+	ld a, BANK(NamingScreenGFX_Border)
 	call FarCopyBytes
 
 	ld de, VTiles0 tile $7e
-	ld hl, GFX_11cc7
-	ld bc, $20
-	ld a, BANK(GFX_11cc7)
+	ld hl, NamingScreenGFX_Cursor
+	ld bc, 2 tiles
+	ld a, BANK(NamingScreenGFX_Cursor)
 	call FarCopyBytes
 
 	ld a, $5
-	ld hl, wc312
+	ld hl, wSpriteAnimDict + 9 * 2
 	ld [hli], a
 	ld [hl], $7e
 	xor a
@@ -904,17 +941,18 @@
 	ld [wJumptableIndex], a
 	ld [wcf64], a
 	ld [hBGMapMode], a
-	ld [wc6d2], a
+	ld [wNamingScreenCurrNameLength], a
 	ld a, $7
 	ld [hWX], a
 	ret
+
 ; 11cb7
 
-GFX_11cb7: ; 11cb7
+NamingScreenGFX_Border: ; 11cb7
 INCBIN "gfx/unknown/011cb7.2bpp"
 ; 11cc7
 
-GFX_11cc7: ; 11cc7
+NamingScreenGFX_Cursor: ; 11cc7
 INCBIN "gfx/unknown/011cc7.2bpp"
 ; 11ce7
 
@@ -924,6 +962,7 @@
 	db "s t u v w x y z  "
 	db "× ( ) : ; [ ] <PK> <MN>"
 	db "UPPER  DEL   END "
+
 BoxNameInputLower:
 	db "a b c d e f g h i"
 	db "j k l m n o p q r"
@@ -931,12 +970,14 @@
 	db "é 'd 'l 'm 'r 's 't 'v 0"
 	db "1 2 3 4 5 6 7 8 9"
 	db "UPPER  DEL   END "
-NameInputUpper: ; Unreferenced?
+
+NameInputUpper:
 	db "A B C D E F G H I"
 	db "J K L M N O P Q R"
 	db "S T U V W X Y Z  "
 	db "- ? ! / . ,      "
 	db "lower  DEL   END "
+
 BoxNameInputUpper:
 	db "A B C D E F G H I"
 	db "J K L M N O P Q R"
@@ -944,6 +985,7 @@
 	db "× ( ) : ; [ ] <PK> <MN>"
 	db "- ? ! ♂ ♀ / . , &"
 	db "lower  DEL   END "
+
 ; 11e5d
 
 GFX_11e5d: ; ????
@@ -950,10 +992,535 @@
 INCBIN "gfx/unknown/011e5d.2bpp"
 ; 11e6d
 
-GFX_11e65:
+NamingScreenGFX_MiddleLine:
 INCBIN "gfx/unknown/011e65.2bpp"
 ; 11e6d
 
-GFX_11e6d: ; 11e6d
+NamingScreenGFX_UnderLine: ; 11e6d
 INCBIN "gfx/unknown/011e6d.2bpp"
 ; 11e75
+
+_ComposeMailMessage: ; 11e75 (mail?)
+	ld hl, wNamingScreenDestinationPointer
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ld a, [hMapAnims]
+	push af
+	xor a
+	ld [hMapAnims], a
+	ld a, [hInMenu]
+	push af
+	ld a, $1
+	ld [hInMenu], a
+	call .InitBlankMail
+	call DelayFrame
+
+.loop
+	call .DoMailEntry
+	jr nc, .loop
+
+	pop af
+	ld [hInMenu], a
+	pop af
+	ld [hMapAnims], a
+	ret
+
+.InitBlankMail: ; 11e9a (4:5e9a)
+	call ClearBGPalettes
+	call DisableLCD
+	call LoadNamingScreenGFX
+	ld de, VTiles0 tile $00
+	ld hl, .MailIcon
+	ld bc, 8 tiles
+	ld a, BANK(.MailIcon)
+	call FarCopyBytes
+	xor a
+	ld hl, wSpriteAnimDict
+	ld [hli], a
+	ld [hl], a
+
+	; init mail icon
+	depixel 3, 2
+	ld a, SPRITE_ANIM_INDEX_00
+	call _InitSpriteAnimStruct
+
+	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+	add hl, bc
+	ld [hl], $0
+	call .InitCharset
+	ld a, $e3
+	ld [rLCDC], a
+	call .initwNamingScreenMaxNameLength
+	ld b, SCGB_08
+	call GetSGBLayout
+	call WaitBGMap
+	call WaitTop
+	ld a, %11100100
+	call DmgToCgbBGPals
+	ld a, %11100100
+	call DmgToCgbObjPal0
+	call NamingScreen_InitNameEntry
+	ld hl, wNamingScreenDestinationPointer
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld hl, $10
+	add hl, de
+	ld [hl], $4e
+	ret
+
+; 11ef4 (4:5ef4)
+
+.MailIcon: ; 11ef4
+INCBIN "gfx/icon/mail2.2bpp"
+; 11f74
+
+.initwNamingScreenMaxNameLength: ; 11f74 (4:5f74)
+	ld a, MAIL_MSG_LENGTH + 1
+	ld [wNamingScreenMaxNameLength], a
+	ret
+
+; 11f7a (4:5f7a)
+
+.Dummy: ; dummied out
+	db "メールを かいてね@"
+
+; 11f84
+
+.InitCharset: ; 11f84 (4:5f84)
+	call WaitTop
+	hlcoord 0, 0
+	ld bc, 6 * SCREEN_WIDTH
+	ld a, $60 ; border
+	call ByteFill
+	hlcoord 0, 6
+	ld bc, 12 * SCREEN_WIDTH
+	ld a, " "
+	call ByteFill
+	hlcoord 1, 1
+	lb bc, 4, SCREEN_WIDTH - 2
+	call ClearBox
+	ld de, MailEntry_Uppercase
+
+.PlaceMailCharset: ; 11fa9 (4:5fa9)
+	hlcoord 1, 7
+	ld b, 6
+.next
+	ld c, SCREEN_WIDTH - 1
+.loop_
+	ld a, [de]
+	ld [hli], a
+	inc de
+	dec c
+	jr nz, .loop_
+	push de
+	ld de, SCREEN_WIDTH + 1
+	add hl, de
+	pop de
+	dec b
+	jr nz, .next
+	ret
+
+.DoMailEntry: ; 11fc0 (4:5fc0)
+	call JoyTextDelay
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .exit_mail
+	call .DoJumptable
+	callba PlaySpriteAnimationsAndDelayFrame
+	call .Update
+	call DelayFrame
+	and a
+	ret
+
+.exit_mail
+	callab ClearSpriteAnims
+	call ClearSprites
+	xor a
+	ld [hSCX], a
+	ld [hSCY], a
+	scf
+	ret
+
+.Update: ; 11feb (4:5feb)
+	xor a
+	ld [hBGMapMode], a
+	hlcoord 1, 1
+	lb bc, 4, 18
+	call ClearBox
+	ld hl, wNamingScreenDestinationPointer
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	hlcoord 2, 2
+	call PlaceString
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+
+.DoJumptable: ; 12008 (4:6008)
+	ld a, [wJumptableIndex]
+	ld e, a
+	ld d, 0
+	ld hl, .Jumptable
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+
+.Jumptable: ; 12017 (4:6017)
+	dw .init_blinking_cursor
+	dw .process_joypad
+
+.init_blinking_cursor: ; 1201b (4:601b)
+	depixel 9, 2
+	ld a, SPRITE_ANIM_INDEX_09
+	call _InitSpriteAnimStruct
+	ld a, c
+	ld [wNamingScreenCursorObjectPointer], a
+	ld a, b
+	ld [wNamingScreenCursorObjectPointer + 1], a
+	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
+	add hl, bc
+	ld a, [hl]
+	ld hl, SPRITEANIMSTRUCT_0E
+	add hl, bc
+	ld [hl], a
+	ld hl, wJumptableIndex
+	inc [hl]
+	ret
+
+.process_joypad: ; 1203a (4:603a)
+	ld hl, hJoyPressed ; $ffa7
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .a
+	ld a, [hl]
+	and B_BUTTON
+	jr nz, .b
+	ld a, [hl]
+	and START
+	jr nz, .start
+	ld a, [hl]
+	and SELECT
+	jr nz, .select
+	ret
+
+.a
+	call NamingScreen_PressedA_GetCursorCommand
+	cp $1
+	jr z, .select
+	cp $2
+	jr z, .b
+	cp $3
+	jr z, .finished
+	call NamingScreen_GetLastCharacter
+	call MailComposition_TryAddLastCharacter
+	jr c, .start
+	ld hl, wNamingScreenCurrNameLength
+	ld a, [hl]
+	cp $10
+	ret nz
+	inc [hl]
+	call NamingScreen_GetTextCursorPosition
+	ld [hl], $f2
+	dec hl
+	ld [hl], $4e
+	ret
+
+.start
+	ld hl, wNamingScreenCursorObjectPointer
+	ld c, [hl]
+	inc hl
+	ld b, [hl]
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld [hl], $9
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld [hl], $5
+	ret
+
+.b
+	call NamingScreen_DeleteCharacter
+	ld hl, wNamingScreenCurrNameLength
+	ld a, [hl]
+	cp $10
+	ret nz
+	dec [hl]
+	call NamingScreen_GetTextCursorPosition
+	ld [hl], $f2
+	inc hl
+	ld [hl], $4e
+	ret
+
+.finished
+	call NamingScreen_StoreEntry
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+
+.select
+	ld hl, wcf64
+	ld a, [hl]
+	xor $1
+	ld [hl], a
+	jr nz, .switch_to_lowercase
+	ld de, MailEntry_Uppercase
+	call .PlaceMailCharset
+	ret
+
+.switch_to_lowercase
+	ld de, MailEntry_Lowercase
+	call .PlaceMailCharset
+	ret
+
+; called from engine/sprite_anims.asm
+
+ComposeMail_AnimateCursor: ; 120c1 (4:60c1)
+	call .GetDPad
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld a, [hl]
+	ld e, a
+	swap e
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], e
+	cp $5
+	ld de, .LetterEntries
+	ld a, 0
+	jr nz, .got_pointer
+	ld de, .CaseDelEnd
+	ld a, 1
+.got_pointer
+	ld hl, SPRITEANIMSTRUCT_0E
+	add hl, bc
+	add [hl]
+	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
+	add hl, bc
+	ld [hl], a
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld l, [hl]
+	ld h, 0
+	add hl, de
+	ld a, [hl]
+	ld hl, SPRITEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ret
+
+; 120f8 (4:60f8)
+
+.LetterEntries: ; 120f8
+	db $00, $10, $20, $30, $40, $50, $60, $70, $80, $90
+
+.CaseDelEnd: ; 12102
+	db $00, $00, $00, $30, $30, $30, $60, $60, $60, $60
+
+; 1210c
+
+.GetDPad: ; 1210c (4:610c)
+	ld hl, hJoyLast
+	ld a, [hl]
+	and D_UP
+	jr nz, .up
+	ld a, [hl]
+	and D_DOWN
+	jr nz, .down
+	ld a, [hl]
+	and D_LEFT
+	jr nz, .left
+	ld a, [hl]
+	and D_RIGHT
+	jr nz, .right
+	ret
+
+.right
+	call ComposeMail_GetCursorPosition
+	and a
+	jr nz, .case_del_done_right
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hl]
+	cp $9
+	jr nc, .wrap_around_letter_right
+	inc [hl]
+	ret
+
+.wrap_around_letter_right
+	ld [hl], $0
+	ret
+
+.case_del_done_right
+	cp $3
+	jr nz, .wrap_around_command_right
+	xor a
+.wrap_around_command_right
+	ld e, a
+	add a
+	add e
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld [hl], a
+	ret
+
+.left
+	call ComposeMail_GetCursorPosition
+	and a
+	jr nz, .caps_del_done_left
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .wrap_around_letter_left
+	dec [hl]
+	ret
+
+.wrap_around_letter_left
+	ld [hl], $9
+	ret
+
+.caps_del_done_left
+	cp $1
+	jr nz, .wrap_around_command_left
+	ld a, $4
+.wrap_around_command_left
+rept 2
+	dec a
+endr
+	ld e, a
+	add a
+	add e
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld [hl], a
+	ret
+
+.down
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld a, [hl]
+	cp $5
+	jr nc, .wrap_around_down
+	inc [hl]
+	ret
+
+.wrap_around_down
+	ld [hl], $0
+	ret
+
+.up
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .wrap_around_up
+	dec [hl]
+	ret
+
+.wrap_around_up
+	ld [hl], $5
+	ret
+
+NamingScreen_PressedA_GetCursorCommand: ; 12185 (4:6185)
+	ld hl, wNamingScreenCursorObjectPointer
+	ld c, [hl]
+	inc hl
+	ld b, [hl]
+
+ComposeMail_GetCursorPosition: ; 1218b (4:618b)
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld a, [hl]
+	cp $5
+	jr nz, .letter
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hl]
+	cp $3
+	jr c, .case
+	cp $6
+	jr c, .del
+	ld a, $3
+	ret
+
+.case
+	ld a, $1
+	ret
+
+.del
+	ld a, $2
+	ret
+
+.letter
+	xor a
+	ret
+
+MailComposition_TryAddLastCharacter: ; 121ac (4:61ac)
+	ld a, [wNamingScreenLastCharacter]
+	jp MailComposition_TryAddCharacter
+
+; 121b2 (4:61b2)
+
+; XXX
+	ld a, [wNamingScreenCurrNameLength]
+	and a
+	ret z
+	cp $11
+	jr nz, .asm_121c3
+	push hl
+	ld hl, wNamingScreenCurrNameLength
+rept 2
+	dec [hl]
+endr
+	jr .asm_121c8
+
+.asm_121c3
+	push hl
+	ld hl, wNamingScreenCurrNameLength
+	dec [hl]
+
+.asm_121c8
+	call NamingScreen_GetTextCursorPosition
+	ld c, [hl]
+	pop hl
+.asm_121cd
+	ld a, [hli]
+	cp $ff
+	jp z, NamingScreen_AdvanceCursor_CheckEndOfString
+	cp c
+	jr z, .asm_121d9
+	inc hl
+	jr .asm_121cd
+
+.asm_121d9
+	ld a, [hl]
+	jp NamingScreen_LoadNextCharacter
+
+; 121dd
+
+MailEntry_Uppercase: ; 122dd
+	db "A B C D E F G H I J"
+	db "K L M N O P Q R S T"
+	db "U V W X Y Z   , ? !"
+	db "1 2 3 4 5 6 7 8 9 0"
+	db "<PK> <MN> <PO> <KE> é ♂ ♀ ¥ … ×"
+	db "lower  DEL   END   "
+
+; 1224f
+
+MailEntry_Lowercase: ; 1224f
+	db "a b c d e f g h i j"
+	db "k l m n o p q r s t"
+	db "u v w x y z   . - /"
+	db "'d 'l 'm 'r 's 't 'v & ( )"
+	db "<``> <''> [ ] ' : ;      "
+	db "UPPER  DEL   END   "
+
+; 122c1
--- a/engine/npc_movement.asm
+++ b/engine/npc_movement.asm
@@ -234,7 +234,7 @@
 	call CheckCounterTile
 	jr nz, .asm_6ff1
 
-	ld a, [PlayerNextMapX]
+	ld a, [PlayerStandingMapX]
 	sub d
 	cpl
 	inc a
@@ -241,7 +241,7 @@
 	add d
 	ld d, a
 
-	ld a, [PlayerNextMapY]
+	ld a, [PlayerStandingMapY]
 	sub e
 	cpl
 	inc a
@@ -482,9 +482,9 @@
 ; 7113
 
 Function7113: ; unreferenced
-	ld a, [PlayerNextMapX]
+	ld a, [PlayerStandingMapX]
 	ld d, a
-	ld a, [PlayerNextMapY]
+	ld a, [PlayerStandingMapY]
 	ld e, a
 	ld bc, ObjectStructs
 	xor a
--- a/engine/npctrade.asm
+++ b/engine/npctrade.asm
@@ -430,21 +430,22 @@
 
 NPCTrades: ; fce58
 npctrade: MACRO
-	db \1, \2, \3, \4
-	dw \5
-	db \6
-	dw \7
-	db \8, \9, 0
+	db \1, \2, \3, \4 ; dialog set, requested mon, offered mon, nickname
+	db \5, \6 ; dvs
+	shift
+	db \6 ; item
+	dw \7 ; OT ID
+	db \8, \9, 0 ; OT name, gender requested
 ENDM
 
 
-	npctrade 0, ABRA,       MACHOP,     "MUSCLE@@@@@", $6637, GOLD_BERRY,   37460, "MIKE@@@@@@@", TRADE_EITHER_GENDER
-	npctrade 0, BELLSPROUT, ONIX,       "ROCKY@@@@@@", $6696, BITTER_BERRY, 48926, "KYLE@@@@@@@", TRADE_EITHER_GENDER
-	npctrade 1, KRABBY,     VOLTORB,    "VOLTY@@@@@@", $8898, PRZCUREBERRY, 29189, "TIM@@@@@@@@", TRADE_EITHER_GENDER
-	npctrade 3, DRAGONAIR,  DODRIO,     "DORIS@@@@@@", $6677, SMOKE_BALL,   00283, "EMY@@@@@@@@", TRADE_FEMALE_ONLY
-	npctrade 2, HAUNTER,    XATU,       "PAUL@@@@@@@", $8696, MYSTERYBERRY, 15616, "CHRIS@@@@@@", TRADE_EITHER_GENDER
-	npctrade 3, CHANSEY,    AERODACTYL, "AEROY@@@@@@", $6696, GOLD_BERRY,   26491, "KIM@@@@@@@@", TRADE_EITHER_GENDER
-	npctrade 0, DUGTRIO,    MAGNETON,   "MAGGIE@@@@@", $6696, METAL_COAT,   50082, "FOREST@@@@@", TRADE_EITHER_GENDER
+	npctrade 0, ABRA,       MACHOP,     "MUSCLE@@@@@", $37, $66, GOLD_BERRY,   37460, "MIKE@@@@@@@", TRADE_EITHER_GENDER
+	npctrade 0, BELLSPROUT, ONIX,       "ROCKY@@@@@@", $96, $66, BITTER_BERRY, 48926, "KYLE@@@@@@@", TRADE_EITHER_GENDER
+	npctrade 1, KRABBY,     VOLTORB,    "VOLTY@@@@@@", $98, $88, PRZCUREBERRY, 29189, "TIM@@@@@@@@", TRADE_EITHER_GENDER
+	npctrade 3, DRAGONAIR,  DODRIO,     "DORIS@@@@@@", $77, $66, SMOKE_BALL,   00283, "EMY@@@@@@@@", TRADE_FEMALE_ONLY
+	npctrade 2, HAUNTER,    XATU,       "PAUL@@@@@@@", $96, $86, MYSTERYBERRY, 15616, "CHRIS@@@@@@", TRADE_EITHER_GENDER
+	npctrade 3, CHANSEY,    AERODACTYL, "AEROY@@@@@@", $96, $66, GOLD_BERRY,   26491, "KIM@@@@@@@@", TRADE_EITHER_GENDER
+	npctrade 0, DUGTRIO,    MAGNETON,   "MAGGIE@@@@@", $96, $66, METAL_COAT,   50082, "FOREST@@@@@", TRADE_EITHER_GENDER
 ; fcf38
 
 
--- a/engine/phone.asm
+++ b/engine/phone.asm
@@ -651,15 +651,16 @@
 	call GetCallerName
 	ret
 
-Function9038a: ; 9038a (24:438a)
+CheckCanDeletePhoneNumber: ; 9038a (24:438a)
 	ld a, c
 	call GetCallerTrainerClass
 	ld a, c
+	; and a
 	ret nz
 	ld a, b
-	cp $1
+	cp PHONECONTACT_MOM
 	ret z
-	cp $4
+	cp PHONECONTACT_ELM
 	ret z
 	ld c, $1
 	ret
@@ -776,44 +777,44 @@
 	dba \7 ; script 2
 ENDM
 
-	phone TRAINER_NONE, PHONE_00, N_A,                          0, UnusedPhoneScript,   0, UnusedPhoneScript
-	phone TRAINER_NONE, PHONECONTACT_MOM, KRISS_HOUSE_1F,              7, MomPhoneScript,      0, UnusedPhoneScript
-	phone TRAINER_NONE, PHONECONTACT_BIKESHOP, OAKS_LAB,                    0, UnusedPhoneScript,   0, UnusedPhoneScript
-	phone TRAINER_NONE, PHONECONTACT_BILL, N_A,                        7, BillPhoneScript1,    0, BillPhoneScript2
-	phone TRAINER_NONE, PHONECONTACT_ELM, ELMS_LAB,                    7, ElmPhoneScript1,     0, ElmPhoneScript2
-	phone SCHOOLBOY, JACK1, NATIONAL_PARK,               7, JackPhoneScript1,    7, JackPhoneScript2
-	phone POKEFANF, BEVERLY1, NATIONAL_PARK,             7, BeverlyPhoneScript1, 7, BeverlyPhoneScript2
-	phone SAILOR, HUEY1, OLIVINE_LIGHTHOUSE_2F,          7, HueyPhoneScript1,    7, HueyPhoneScript2
-	phone TRAINER_NONE, PHONE_00, N_A,                          0, UnusedPhoneScript,   0, UnusedPhoneScript
-	phone TRAINER_NONE, PHONE_00, N_A,                          0, UnusedPhoneScript,   0, UnusedPhoneScript
-	phone TRAINER_NONE, PHONE_00, N_A,                          0, UnusedPhoneScript,   0, UnusedPhoneScript
-	phone COOLTRAINERM, GAVEN3, ROUTE_26,                7, GavenPhoneScript1,   7, GavenPhoneScript2
-	phone COOLTRAINERF, BETH1, ROUTE_26,                 7, BethPhoneScript1,    7, BethPhoneScript2
-	phone BIRD_KEEPER, JOSE2, ROUTE_27,                  7, JosePhoneScript1,    7, JosePhoneScript2
-	phone COOLTRAINERF, REENA1, ROUTE_27,                7, ReenaPhoneScript1,   7, ReenaPhoneScript2
-	phone YOUNGSTER, JOEY1, ROUTE_30,                    7, JoeyPhoneScript1,    7, JoeyPhoneScript2
-	phone BUG_CATCHER, WADE1, ROUTE_31,                  7, WadePhoneScript1,    7, WadePhoneScript2
-	phone FISHER, RALPH1, ROUTE_32,                      7, RalphPhoneScript1,   7, RalphPhoneScript2
-	phone PICNICKER, LIZ1, ROUTE_32,                     7, LizPhoneScript1,     7, LizPhoneScript2
-	phone HIKER, ANTHONY2, ROUTE_33,                     7, AnthonyPhoneScript1, 7, AnthonyPhoneScript2
-	phone CAMPER, TODD1, ROUTE_34,                       7, ToddPhoneScript1,    7, ToddPhoneScript2
-	phone PICNICKER, GINA1, ROUTE_34,                    7, GinaPhoneScript1,    7, GinaPhoneScript2
-	phone JUGGLER, IRWIN1, ROUTE_35,                     7, IrwinPhoneScript1,   7, IrwinPhoneScript2
-	phone BUG_CATCHER, ARNIE1, ROUTE_35,                 7, ArniePhoneScript1,   7, ArniePhoneScript2
-	phone SCHOOLBOY, ALAN1, ROUTE_36,                    7, AlanPhoneScript1,    7, AlanPhoneScript2
-	phone TRAINER_NONE, PHONE_00, N_A,                          0, UnusedPhoneScript,   0, UnusedPhoneScript
-	phone LASS, DANA1, ROUTE_38,                         7, DanaPhoneScript1,    7, DanaPhoneScript2
-	phone SCHOOLBOY, CHAD1, ROUTE_38,                    7, ChadPhoneScript1,    7, ChadPhoneScript2
-	phone POKEFANM, DEREK1, ROUTE_39,                    7, DerekPhoneScript1,   7, DerekPhoneScript2
-	phone FISHER, TULLY1, ROUTE_42,                      7, TullyPhoneScript1,   7, TullyPhoneScript2
-	phone POKEMANIAC, BRENT1, ROUTE_43,                  7, BrentPhoneScript1,   7, BrentPhoneScript2
-	phone PICNICKER, TIFFANY3, ROUTE_43,                 7, TiffanyPhoneScript1, 7, TiffanyPhoneScript2
-	phone BIRD_KEEPER, VANCE1, ROUTE_44,                 7, VancePhoneScript1,   7, VancePhoneScript2
-	phone FISHER, WILTON1, ROUTE_44,                     7, WiltonPhoneScript1,  7, WiltonPhoneScript2
-	phone BLACKBELT_T, KENJI3, ROUTE_45,                 7, KenjiPhoneScript1,   7, KenjiPhoneScript2
-	phone HIKER, PARRY1, ROUTE_45,                       7, ParryPhoneScript1,   7, ParryPhoneScript2
-	phone PICNICKER, ERIN1, ROUTE_46,                    7, ErinPhoneScript1,    7, ErinPhoneScript2
-	phone TRAINER_NONE, PHONECONTACT_BUENA, GOLDENROD_DEPT_STORE_ROOF, 7, BuenaPhoneScript1,   7, BuenaPhoneScript2
+	phone TRAINER_NONE, PHONE_00,              N_A,                       0, UnusedPhoneScript,   0, UnusedPhoneScript
+	phone TRAINER_NONE, PHONECONTACT_MOM,      KRISS_HOUSE_1F,            7, MomPhoneScript,      0, UnusedPhoneScript
+	phone TRAINER_NONE, PHONECONTACT_BIKESHOP, OAKS_LAB,                  0, UnusedPhoneScript,   0, UnusedPhoneScript
+	phone TRAINER_NONE, PHONECONTACT_BILL,     N_A,                       7, BillPhoneScript1,    0, BillPhoneScript2
+	phone TRAINER_NONE, PHONECONTACT_ELM,      ELMS_LAB,                  7, ElmPhoneScript1,     0, ElmPhoneScript2
+	phone SCHOOLBOY,    JACK1,                 NATIONAL_PARK,             7, JackPhoneScript1,    7, JackPhoneScript2
+	phone POKEFANF,     BEVERLY1,              NATIONAL_PARK,             7, BeverlyPhoneScript1, 7, BeverlyPhoneScript2
+	phone SAILOR,       HUEY1,                 OLIVINE_LIGHTHOUSE_2F,     7, HueyPhoneScript1,    7, HueyPhoneScript2
+	phone TRAINER_NONE, PHONE_00,              N_A,                       0, UnusedPhoneScript,   0, UnusedPhoneScript
+	phone TRAINER_NONE, PHONE_00,              N_A,                       0, UnusedPhoneScript,   0, UnusedPhoneScript
+	phone TRAINER_NONE, PHONE_00,              N_A,                       0, UnusedPhoneScript,   0, UnusedPhoneScript
+	phone COOLTRAINERM, GAVEN3,                ROUTE_26,                  7, GavenPhoneScript1,   7, GavenPhoneScript2
+	phone COOLTRAINERF, BETH1,                 ROUTE_26,                  7, BethPhoneScript1,    7, BethPhoneScript2
+	phone BIRD_KEEPER,  JOSE2,                 ROUTE_27,                  7, JosePhoneScript1,    7, JosePhoneScript2
+	phone COOLTRAINERF, REENA1,                ROUTE_27,                  7, ReenaPhoneScript1,   7, ReenaPhoneScript2
+	phone YOUNGSTER,    JOEY1,                 ROUTE_30,                  7, JoeyPhoneScript1,    7, JoeyPhoneScript2
+	phone BUG_CATCHER,  WADE1,                 ROUTE_31,                  7, WadePhoneScript1,    7, WadePhoneScript2
+	phone FISHER,       RALPH1,                ROUTE_32,                  7, RalphPhoneScript1,   7, RalphPhoneScript2
+	phone PICNICKER,    LIZ1,                  ROUTE_32,                  7, LizPhoneScript1,     7, LizPhoneScript2
+	phone HIKER,        ANTHONY2,              ROUTE_33,                  7, AnthonyPhoneScript1, 7, AnthonyPhoneScript2
+	phone CAMPER,       TODD1,                 ROUTE_34,                  7, ToddPhoneScript1,    7, ToddPhoneScript2
+	phone PICNICKER,    GINA1,                 ROUTE_34,                  7, GinaPhoneScript1,    7, GinaPhoneScript2
+	phone JUGGLER,      IRWIN1,                ROUTE_35,                  7, IrwinPhoneScript1,   7, IrwinPhoneScript2
+	phone BUG_CATCHER,  ARNIE1,                ROUTE_35,                  7, ArniePhoneScript1,   7, ArniePhoneScript2
+	phone SCHOOLBOY,    ALAN1,                 ROUTE_36,                  7, AlanPhoneScript1,    7, AlanPhoneScript2
+	phone TRAINER_NONE, PHONE_00,              N_A,                       0, UnusedPhoneScript,   0, UnusedPhoneScript
+	phone LASS,         DANA1,                 ROUTE_38,                  7, DanaPhoneScript1,    7, DanaPhoneScript2
+	phone SCHOOLBOY,    CHAD1,                 ROUTE_38,                  7, ChadPhoneScript1,    7, ChadPhoneScript2
+	phone POKEFANM,     DEREK1,                ROUTE_39,                  7, DerekPhoneScript1,   7, DerekPhoneScript2
+	phone FISHER,       TULLY1,                ROUTE_42,                  7, TullyPhoneScript1,   7, TullyPhoneScript2
+	phone POKEMANIAC,   BRENT1,                ROUTE_43,                  7, BrentPhoneScript1,   7, BrentPhoneScript2
+	phone PICNICKER,    TIFFANY3,              ROUTE_43,                  7, TiffanyPhoneScript1, 7, TiffanyPhoneScript2
+	phone BIRD_KEEPER,  VANCE1,                ROUTE_44,                  7, VancePhoneScript1,   7, VancePhoneScript2
+	phone FISHER,       WILTON1,               ROUTE_44,                  7, WiltonPhoneScript1,  7, WiltonPhoneScript2
+	phone BLACKBELT_T,  KENJI3,                ROUTE_45,                  7, KenjiPhoneScript1,   7, KenjiPhoneScript2
+	phone HIKER,        PARRY1,                ROUTE_45,                  7, ParryPhoneScript1,   7, ParryPhoneScript2
+	phone PICNICKER,    ERIN1,                 ROUTE_46,                  7, ErinPhoneScript1,    7, ErinPhoneScript2
+	phone TRAINER_NONE, PHONECONTACT_BUENA,    GOLDENROD_DEPT_STORE_ROOF, 7, BuenaPhoneScript1,   7, BuenaPhoneScript2
 ; 90627
 
 SpecialPhoneCallList: ; 90627
--- a/engine/player_movement.asm
+++ b/engine/player_movement.asm
@@ -118,7 +118,7 @@
 ; Tiles such as waterfalls and warps move the player
 ; in a given direction, overriding input.
 
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	ld c, a
 	call CheckWhirlpoolTile
 	jr c, .asm_800c4
@@ -136,7 +136,7 @@
 	jr z, .land2
 	cp $70 ; warps
 	jr z, .warps
-	jr .asm_8013c
+	jr .no_walk
 
 .water
 	ld a, c
@@ -147,7 +147,7 @@
 	add hl, bc
 	ld a, [hl]
 	ld [WalkingDirection], a
-	jr .asm_8013e
+	jr .continue_walk
 
 .water_table
 	db RIGHT
@@ -164,9 +164,9 @@
 	add hl, bc
 	ld a, [hl]
 	cp STANDING
-	jr z, .asm_8013c
+	jr z, .no_walk
 	ld [WalkingDirection], a
-	jr .asm_8013e
+	jr .continue_walk
 
 .land1_table
 	db STANDING
@@ -187,9 +187,9 @@
 	add hl, bc
 	ld a, [hl]
 	cp STANDING
-	jr z, .asm_8013c
+	jr z, .no_walk
 	ld [WalkingDirection], a
-	jr .asm_8013e
+	jr .continue_walk
 
 .land2_table
 	db RIGHT
@@ -210,18 +210,18 @@
 	cp $7a ; stairs
 	jr z, .down
 	cp $7b ; cave
-	jr nz, .asm_8013c
+	jr nz, .no_walk
 
 .down
 	ld a, DOWN
 	ld [WalkingDirection], a
-	jr .asm_8013e
+	jr .continue_walk
 
-.asm_8013c
+.no_walk
 	xor a
 	ret
 
-.asm_8013e
+.continue_walk
 	ld a, STEP_WALK
 	call .DoStep
 	ld a, 5
@@ -277,7 +277,7 @@
 	cp 2
 	jr z, .bump
 
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	call CheckIceTile
 	jr nc, .ice
 
@@ -362,7 +362,7 @@
 ; 801f3
 
 .TryJump: ; 801f3
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	ld e, a
 	and $f0
 	cp $a0 ; ledge
@@ -413,7 +413,7 @@
 	ld d, 0
 	ld hl, .EdgeWarps
 	add hl, de
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	cp [hl]
 	jr nz, .not_warp
 
@@ -446,7 +446,7 @@
 	db $70, $78, $76, $7e
 ; 8025f
 
-.DoStep: ; 8025f
+.DoStep
 	ld e, a
 	ld d, 0
 	ld hl, .Steps
@@ -615,7 +615,7 @@
 ;	tile collision pointer
 .table1
 	db STANDING, FACE_CURRENT, 0, 0
-	dw PlayerNextTile
+	dw PlayerStandingTile
 .table2
 	db RIGHT, FACE_RIGHT,  1,  0
 	dw TileRight
@@ -634,13 +634,13 @@
 	ld a, 0
 	ld [hMapObjectIndexBuffer], a
 ; Load the next X coordinate into d
-	ld a, [PlayerNextMapX]
+	ld a, [PlayerStandingMapX]
 	ld d, a
 	ld a, [WalkingX]
 	add d
 	ld d, a
 ; Load the next Y coordinate into e
-	ld a, [PlayerNextMapY]
+	ld a, [PlayerStandingMapY]
 	ld e, a
 	ld a, [WalkingY]
 	add e
@@ -817,7 +817,7 @@
 	jr z, .not_ice
 	cp $f0
 	jr z, .not_ice
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	call CheckIceTile
 	jr nc, .yep
 	ld a, [PlayerState]
--- a/engine/pokedex.asm
+++ b/engine/pokedex.asm
@@ -1080,7 +1080,7 @@
 	lb bc, 7, 7
 	call Pokedex_PlaceBorder
 	hlcoord 0, 9
-	ld bc, $607
+	lb bc, 6, 7
 	call Pokedex_PlaceBorder
 	hlcoord 1, 11
 	ld de, String_SEEN
@@ -1106,11 +1106,11 @@
 	ld de, String_SELECT_OPTION
 	call Pokedex_PlaceString
 	hlcoord 8, 1
-	ld b, $7
+	ld b, 7
 	ld a, $5a
 	call Pokedex_FillColumn
 	hlcoord 8, 10
-	ld b, $6
+	ld b, 6
 	ld a, $5a
 	call Pokedex_FillColumn
 	hlcoord 8, 0
@@ -1136,22 +1136,22 @@
 Pokedex_DrawDexEntryScreenBG: ; 407fd
 	call Pokedex_FillBackgroundColor2
 	hlcoord 0, 0
-	ld bc, $0f12
+	lb bc, 15, 18
 	call Pokedex_PlaceBorder
 	hlcoord 19, 0
 	ld [hl], $34
 	hlcoord 19, 1
-	ld a, $7f
-	ld b, $f
+	ld a, " "
+	ld b, 15
 	call Pokedex_FillColumn
 	ld [hl], $39
 	hlcoord 1, 10
-	ld bc, $0013
+	ld bc, 19
 	ld a, $61
 	call ByteFill
 	hlcoord 1, 17
-	ld bc, $0012
-	ld a, $7f
+	ld bc, 18
+	ld a, " "
 	call ByteFill
 	hlcoord 9, 7
 	ld de, .Height
@@ -1264,7 +1264,7 @@
 	hlcoord 8, 0
 	ld [hl], $59
 	hlcoord 8, 1
-	ld b, $7
+	ld b, 7
 	ld a, $5a
 	call Pokedex_FillColumn
 	hlcoord 8, 8
@@ -1718,7 +1718,7 @@
 	xor a
 	ld [hBGMapMode], a
 	hlcoord 0, 12
-	lb bc, 4, SCREEN_WIDTH - 2
+	lb bc, 4, 18
 	call Pokedex_PlaceBorder
 	ld a, [wDexArrowCursorPosIndex]
 	ld hl, .Modes
@@ -1757,7 +1757,7 @@
 	xor a
 	ld [hBGMapMode], a
 	hlcoord 0, 12
-	lb bc, 4, SCREEN_WIDTH - 2
+	lb bc, 4, 18
 	call Pokedex_PlaceBorder
 	ld de, String_ChangingModesPleaseWait
 	hlcoord 1, 14
@@ -1996,7 +1996,7 @@
 	xor a
 	ld [hBGMapMode], a
 	hlcoord 0, 12
-	ld bc, $0412
+	lb bc, 4, 18
 	call Pokedex_PlaceBorder
 	ld de, .TypeNotFound
 	hlcoord 1, 14
--- a/engine/pokegear.asm
+++ b/engine/pokegear.asm
@@ -3,20 +3,16 @@
 	ld a, [hl]
 	push af
 	set NO_TEXT_SCROLL, [hl]
-
 	ld a, [hInMenu]
 	push af
 	ld a, $1
 	ld [hInMenu], a
-
 	ld a, [VramState]
 	push af
 	xor a
 	ld [VramState], a
-
-	call Function90bea
+	call .InitTilemap
 	call DelayFrame
-
 .loop
 	call UpdateTime
 	call JoyTextDelay
@@ -23,7 +19,7 @@
 	ld a, [wJumptableIndex]
 	bit 7, a
 	jr nz, .done
-	call Function90f04
+	call PokegearJumptable
 	callba PlaySpriteAnimations
 	call DelayFrame
 	jr .loop
@@ -45,10 +41,10 @@
 	ld [hBGMapAddress + 1], a
 	ld a, $90
 	ld [hWY], a
-	call Function91492
+	call ExitPokegearRadio_HandleMusic
 	ret
 
-Function90bea: ; 90bea (24:4bea)
+.InitTilemap: ; 90bea (24:4bea)
 	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
@@ -58,7 +54,7 @@
 	ld [hSCX], a
 	ld a, $7
 	ld [hWX], a
-	call Function90c4e
+	call Pokegear_LoadGFX
 	callba ClearSpriteAnims
 	call InitPokegearModeIndicatorArrow
 	ld a, 8
@@ -65,20 +61,20 @@
 	call SkipMusic
 	ld a, $e3
 	ld [rLCDC], a
-	call Function90d70
+	call TownMap_InitCursorAndPlayerIconPositions
 	xor a
 	ld [wJumptableIndex], a
 	ld [wcf64], a
 	ld [wcf65], a
 	ld [wcf66], a
-	ld [wc6d2], a
-	ld [wc6d1], a
-	ld [wc6d3], a
-	ld [wc6d9], a
-	ld [wc6da], a
-	ld [wc6db], a
-	call Function90d9e
-	call Function90da8
+	ld [wPokegearPhoneScrollPosition], a
+	ld [wPokegearPhoneCursorPosition], a
+	ld [wPokegearPhoneSelectedPerson], a
+	ld [wPokegearRadioChannelBank], a
+	ld [wPokegearRadioChannelAddr], a
+	ld [wPokegearRadioChannelAddr + 1], a
+	call Pokegear_InitJumptableIndices
+	call InitPokegearTilemap
 	ld b, SCGB_POKEGEAR_PALS
 	call GetSGBLayout
 	call SetPalettes
@@ -89,23 +85,20 @@
 	call DmgToCgbObjPal0
 	ret
 
-Function90c4e: ; 90c4e
+Pokegear_LoadGFX: ; 90c4e
 	call ClearVBank1
 	ld hl, TownMapGFX
 	ld de, VTiles2
 	ld a, BANK(TownMapGFX)
 	call FarDecompress
-
 	ld hl, PokegearGFX
 	ld de, VTiles2 + $30 tiles
 	ld a, BANK(PokegearGFX)
 	call FarDecompress
-
 	ld hl, PokegearSpritesGFX
 	ld de, VTiles0
 	ld a, BANK(PokegearSpritesGFX)
 	call Decompress
-
 	ld a, [MapGroup]
 	ld b, a
 	ld a, [MapNumber]
@@ -113,14 +106,11 @@
 	call GetWorldMapLocation
 	cp FAST_SHIP
 	jr z, .ssaqua
-
 	callba GetPlayerIcon
-
 	push de
 	ld h, d
 	ld l, e
 	ld a, b
-
 	; standing sprite
 	push af
 	ld de, VTiles0 tile $10
@@ -127,9 +117,7 @@
 	ld bc, 4 tiles
 	call FarCopyBytes
 	pop af
-
 	pop hl
-
 	; walking sprite
 	ld de, 12 tiles
 	add hl, de
@@ -144,6 +132,7 @@
 	ld bc, 8 tiles
 	call CopyBytes
 	ret
+
 ; 90cb2
 
 FastShipGFX: ; 90cb2
@@ -159,24 +148,25 @@
 	ld [hl], $0
 	ret
 
-Function90d41: ; 90d41 (24:4d41)
+AnimatePokegearModeIndicatorArrow: ; 90d41 (24:4d41)
 	ld hl, wcf64
 	ld e, [hl]
 	ld d, 0
-	ld hl, Unknown_90d52
+	ld hl, .XCoords
 	add hl, de
 	ld a, [hl]
-	ld hl, $6
+	ld hl, SPRITEANIMSTRUCT_XOFFSET
 	add hl, bc
 	ld [hl], a
 	ret
+
 ; 90d52 (24:4d52)
 
-Unknown_90d52: ; 90d52
+.XCoords: ; 90d52
 	db $00, $10, $20, $30
 ; 90d56
 
-Function90d56: ; 90d56
+TownMap_GetCurrentLandmark: ; 90d56
 	ld a, [MapGroup]
 	ld b, a
 	ld a, [MapNumber]
@@ -190,40 +180,36 @@
 	ld c, a
 	call GetWorldMapLocation
 	ret
+
 ; 90d70
 
-
-Function90d70: ; 90d70 (24:4d70)
+TownMap_InitCursorAndPlayerIconPositions: ; 90d70 (24:4d70)
 	ld a, [MapGroup]
 	ld b, a
 	ld a, [MapNumber]
 	ld c, a
 	call GetWorldMapLocation
-
 	cp FAST_SHIP
 	jr z, .FastShip
-
 	cp SPECIAL_MAP
 	jr nz, .LoadLandmark
-
 	ld a, [BackupMapGroup]
 	ld b, a
 	ld a, [BackupMapNumber]
 	ld c, a
 	call GetWorldMapLocation
-
 .LoadLandmark
-	ld [wTownMapPlayerIconLandmark], a
-	ld [wTownMapCursorLandmark], a
+	ld [wPokegearMapPlayerIconLandmark], a
+	ld [wPokegearMapCursorLandmark], a
 	ret
 
 .FastShip
-	ld [wTownMapPlayerIconLandmark], a
+	ld [wPokegearMapPlayerIconLandmark], a
 	ld a, NEW_BARK_TOWN
-	ld [wTownMapCursorLandmark], a
+	ld [wPokegearMapCursorLandmark], a
 	ret
 
-Function90d9e: ; 90d9e (24:4d9e)
+Pokegear_InitJumptableIndices: ; 90d9e (24:4d9e)
 	ld a, $0
 	ld [wJumptableIndex], a
 	xor a
@@ -230,7 +216,7 @@
 	ld [wcf64], a
 	ret
 
-Function90da8: ; 90da8 (24:4da8)
+InitPokegearTilemap: ; 90da8 (24:4da8)
 	xor a
 	ld [hBGMapMode], a
 	hlcoord 0, 0
@@ -242,39 +228,37 @@
 	add a
 	ld e, a
 	ld d, 0
-	ld hl, Jumptable_90e12
+	ld hl, .Jumptable
 	add hl, de
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld de, .asm_90dcb
+	ld de, .return_from_jumptable
 	push de
 	jp [hl]
 
-.asm_90dcb
-	call Function90eb0
+.return_from_jumptable
+	call Pokegear_FinishTilemap
 	callba TownMapPals
 	ld a, [wcf65]
 	and a
-	jr nz, .asm_90de8
-
+	jr nz, .kanto_0
 	xor a
 	ld [hBGMapAddress], a
 	ld a, VBGMap0 / $100
 	ld [hBGMapAddress + 1], a
-	call Function90e00
+	call .UpdateBGMap
 	ld a, $90
-	jr .asm_90df3
+	jr .finish
 
-.asm_90de8
+.kanto_0
 	xor a
 	ld [hBGMapAddress], a
 	ld a, VBGMap1 / $100
 	ld [hBGMapAddress + 1], a
-	call Function90e00
+	call .UpdateBGMap
 	xor a
-
-.asm_90df3
+.finish
 	ld [hWY], a
 	ld a, [wcf65]
 	and 1
@@ -282,29 +266,31 @@
 	ld [wcf65], a
 	ret
 
-Function90e00: ; 90e00 (24:4e00)
+.UpdateBGMap: ; 90e00 (24:4e00)
 	ld a, [hCGB]
 	and a
-	jr z, .asm_90e0e
+	jr z, .dmg
 	ld a, $2
 	ld [hBGMapMode], a
 	ld c, 3
 	call DelayFrames
-.asm_90e0e
+.dmg
 	call WaitBGMap
 	ret
+
 ; 90e12 (24:4e12)
 
-Jumptable_90e12: ; 90e12
-	dw Function90e1a
-	dw Function90e3f
-	dw Function90e82
-	dw Function90e72
+.Jumptable: ; 90e12
+	dw .Clock
+	dw .Map
+	dw .Phone
+	dw .Radio
+
 ; 90e1a
 
-Function90e1a: ; 90e1a
+.Clock: ; 90e1a
 	ld de, ClockTilemapRLE
-	call Function914bb
+	call Pokegear_LoadTilemapRLE
 	hlcoord 12, 1
 	ld de, .switch
 	call PlaceString
@@ -311,8 +297,9 @@
 	hlcoord 0, 12
 	lb bc, 4, 18
 	call TextBox
-	call Function90f86
+	call Pokegear_UpdateClock
 	ret
+
 ; 90e36 (24:4e36)
 
 .switch
@@ -319,9 +306,8 @@
 	db " SWITCH▶@"
 ; 90e3f
 
-Function90e3f: ; 90e3f
-
-	ld a, [wTownMapPlayerIconLandmark]
+.Map: ; 90e3f
+	ld a, [wPokegearMapPlayerIconLandmark]
 	cp FAST_SHIP
 	jr z, .johto
 	cp KANTO_LANDMARK
@@ -329,6 +315,7 @@
 .johto
 	ld e, 0
 	jr .ok
+
 .kanto
 	ld e, 1
 .ok
@@ -341,32 +328,35 @@
 	ld [hl], $6
 	hlcoord 19, 2
 	ld [hl], $17
-	ld a, [wTownMapCursorLandmark]
-	call Function910b4
+	ld a, [wPokegearMapCursorLandmark]
+	call PokegearMap_UpdateLandmarkName
 	ret
+
 ; 90e72
 
-Function90e72: ; 90e72
+.Radio: ; 90e72
 	ld de, RadioTilemapRLE
-	call Function914bb
+	call Pokegear_LoadTilemapRLE
 	hlcoord 0, 12
 	lb bc, 4, 18
 	call TextBox
 	ret
+
 ; 90e82
 
-Function90e82: ; 90e82
+.Phone: ; 90e82
 	ld de, PhoneTilemapRLE
-	call Function914bb
+	call Pokegear_LoadTilemapRLE
 	hlcoord 0, 12
 	lb bc, 4, 18
 	call TextBox
-	call Function90e98
-	call Function912d8
+	call .PlacePhoneBars
+	call PokegearPhone_UpdateDisplayList
 	ret
+
 ; 90e98
 
-Function90e98: ; 90e98 (24:4e98)
+.PlacePhoneBars: ; 90e98 (24:4e98)
 	hlcoord 17, 1
 	ld a, $3c
 	ld [hli], a
@@ -382,7 +372,7 @@
 	ld [hl], $3f
 	ret
 
-Function90eb0: ; 90eb0 (24:4eb0)
+Pokegear_FinishTilemap: ; 90eb0 (24:4eb0)
 	hlcoord 0, 0
 	ld bc, $8
 	ld a, $4f
@@ -394,33 +384,32 @@
 	ld de, wPokegearFlags
 	ld a, [de]
 	bit 0, a
-	call nz, Function90ee4
+	call nz, .PlaceMapIcon
 	ld a, [de]
 	bit 2, a
-	call nz, Function90eeb
+	call nz, .PlacePhoneIcon
 	ld a, [de]
 	bit 1, a
-	call nz, Function90ef2
+	call nz, .PlaceRadioIcon
 	hlcoord 0, 0
 	ld a, $46
-	call Function90ef7
+	call .PlacePokegearCardIcon
 	ret
 
-Function90ee4: ; 90ee4 (24:4ee4)
+.PlaceMapIcon: ; 90ee4 (24:4ee4)
 	hlcoord 2, 0
 	ld a, $40
-	jr Function90ef7
+	jr .PlacePokegearCardIcon
 
-Function90eeb: ; 90eeb (24:4eeb)
+.PlacePhoneIcon: ; 90eeb (24:4eeb)
 	hlcoord 4, 0
 	ld a, $44
-	jr Function90ef7
+	jr .PlacePokegearCardIcon
 
-Function90ef2: ; 90ef2 (24:4ef2)
+.PlaceRadioIcon: ; 90ef2 (24:4ef2)
 	hlcoord 6, 0
 	ld a, $42
-
-Function90ef7: ; 90ef7 (24:4ef7)
+.PlacePokegearCardIcon: ; 90ef7 (24:4ef7)
 	ld [hli], a
 	inc a
 	ld [hld], a
@@ -432,97 +421,90 @@
 	ld [hld], a
 	ret
 
-Function90f04: ; 90f04 (24:4f04)
+PokegearJumptable: ; 90f04 (24:4f04)
 	ld a, [wJumptableIndex]
 	ld e, a
 	ld d, 0
-	ld hl, Jumptable_90f13
-rept 2
+	ld hl, .Jumptable
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
 	jp [hl]
 
-Jumptable_90f13: ; 90f13 (24:4f13)
-	dw Function90f2d
-	dw Function90f3e
-	dw Function90fb4
-	dw Function90fcd
-	dw Function90fee
-	dw Function90fcd
-	dw Function90fe9
-	dw Function91156
-	dw Function91171
-	dw Function911eb
-	dw Function91256
-	dw Function910f9
-	dw Function91112
+.Jumptable: ; 90f13 (24:4f13)
+	dw PokegearClock_Init
+	dw PokegearClock_Joypad
+	dw PokegearMap_CheckRegion
+	dw PokegearMap_Init
+	dw PokegearMap_JohtoMap
+	dw PokegearMap_Init
+	dw PokegearMap_KantoMap
+	dw PokegearPhone_Init
+	dw PokegearPhone_Joypad
+	dw PokegearPhone_MakePhoneCall
+	dw PokegearPhone_FinishPhoneCall
+	dw PokegearRadio_Init
+	dw PokegearRadio_Joypad
 
-
-Function90f2d: ; 90f2d (24:4f2d)
-	call Function90da8
-	ld hl, UnknownText_0x914d3
+PokegearClock_Init: ; 90f2d (24:4f2d)
+	call InitPokegearTilemap
+	ld hl, PokegearText_PressAnyButtonToExit
 	call PrintText
 	ld hl, wJumptableIndex
 	inc [hl]
-	call Function91492
+	call ExitPokegearRadio_HandleMusic
 	ret
 
-Function90f3e: ; 90f3e (24:4f3e)
-	call Function90f7b
+PokegearClock_Joypad: ; 90f3e (24:4f3e)
+	call .UpdateClock
 	ld hl, hJoyLast
-
 	ld a, [hl]
 	and A_BUTTON + B_BUTTON + START + SELECT
-	jr nz, .asm_90f75
-
+	jr nz, .quit
 	ld a, [hl]
 	and D_RIGHT
 	ret z
-
 	ld a, [wPokegearFlags]
 	bit 0, a
-	jr z, .asm_90f5a
+	jr z, .no_map_card
 	ld c, $2
 	ld b, $1
-	jr .asm_90f71
-.asm_90f5a
+	jr .done
 
+.no_map_card
 	ld a, [wPokegearFlags]
 	bit 2, a
-	jr z, .asm_90f67
+	jr z, .no_phone_card
 	ld c, $7
 	ld b, $2
-	jr .asm_90f71
-.asm_90f67
+	jr .done
 
+.no_phone_card
 	ld a, [wPokegearFlags]
 	bit 1, a
 	ret z
-
 	ld c, $b
 	ld b, $3
-
-.asm_90f71
-	call Function91480
+.done
+	call Pokegear_SwitchPage
 	ret
 
-.asm_90f75
+.quit
 	ld hl, wJumptableIndex
 	set 7, [hl]
 	ret
 
-Function90f7b: ; 90f7b (24:4f7b)
+.UpdateClock: ; 90f7b (24:4f7b)
 	xor a
 	ld [hBGMapMode], a
-	call Function90f86
+	call Pokegear_UpdateClock
 	ld a, $1
 	ld [hBGMapMode], a
 	ret
 
-Function90f86: ; 90f86 (24:4f86)
+Pokegear_UpdateClock: ; 90f86 (24:4f86)
 	hlcoord 3, 5
 	lb bc, 5, 14
 	call ClearBox
@@ -532,22 +514,23 @@
 	ld c, a
 	decoord 6, 8
 	callba PrintHoursMins
-	ld hl, UnknownText_0x90faf
+	ld hl, .DayText
 	bccoord 6, 6
 	call PlaceWholeStringInBoxAtOnce
 	ret
+
 ; 90fa8 (24:4fa8)
+	db "ごぜん@"
+	db "ごご@"
 
-String_90fa8: db "ごぜん@"
-String_90fac: db "ごご@"
-
-UnknownText_0x90faf: ; 0x90faf
+.DayText: ; 0x90faf
 	text_jump UnknownText_0x1c5821
 	db "@"
+
 ; 0x90fb4
 
-Function90fb4: ; 90fb4 (24:4fb4)
-	ld a, [wTownMapPlayerIconLandmark]
+PokegearMap_CheckRegion: ; 90fb4 (24:4fb4)
+	ld a, [wPokegearMapPlayerIconLandmark]
 	cp FAST_SHIP
 	jr z, .johto
 	cp KANTO_LANDMARK
@@ -555,7 +538,6 @@
 .johto
 	ld a, 3
 	jr .done
-
 	ret
 
 .kanto
@@ -562,31 +544,31 @@
 	ld a, 5
 .done
 	ld [wJumptableIndex], a
-	call Function91492
+	call ExitPokegearRadio_HandleMusic
 	ret
 
-Function90fcd: ; 90fcd (24:4fcd)
-	call Function90da8
-	ld a, [wTownMapPlayerIconLandmark]
-	call Function9106a
-	ld a, [wTownMapCursorLandmark]
-	call Function91098
+PokegearMap_Init: ; 90fcd (24:4fcd)
+	call InitPokegearTilemap
+	ld a, [wPokegearMapPlayerIconLandmark]
+	call PokegearMap_InitPlayerIcon
+	ld a, [wPokegearMapCursorLandmark]
+	call PokegearMap_InitCursor
 	ld a, c
-	ld [wc6d5], a
+	ld [wPokegearMapCursorObjectPointer], a
 	ld a, b
-	ld [wc6d6], a
+	ld [wPokegearMapCursorObjectPointer + 1], a
 	ld hl, wJumptableIndex
 	inc [hl]
 	ret
 
-Function90fe9: ; 90fe9 (24:4fe9)
+PokegearMap_KantoMap: ; 90fe9 (24:4fe9)
 	call TownMap_GetKantoLandmarkLimits
-	jr Function90ff2
+	jr PokegearMap_ContinueMap
 
-Function90fee: ; 90fee (24:4fee)
-	ld d, $2e
-	ld e, $1
-Function90ff2: ; 90ff2 (24:4ff2)
+PokegearMap_JohtoMap: ; 90fee (24:4fee)
+	ld d, SILVER_CAVE
+	ld e, NEW_BARK_TOWN
+PokegearMap_ContinueMap: ; 90ff2 (24:4ff2)
 	ld hl, hJoyLast
 	ld a, [hl]
 	and B_BUTTON
@@ -597,18 +579,18 @@
 	ld a, [hl]
 	and D_LEFT
 	jr nz, .left
-	call Function9102f
+	call .DPad
 	ret
 
 .right
 	ld a, [wPokegearFlags]
 	bit 2, a
-	jr z, .asm_91015
+	jr z, .no_phone
 	ld c, $7
 	ld b, $2
 	jr .done
 
-.asm_91015
+.no_phone
 	ld a, [wPokegearFlags]
 	bit 1, a
 	ret z
@@ -620,14 +602,15 @@
 	ld c, $0
 	ld b, $0
 .done
-	call Function91480
+	call Pokegear_SwitchPage
 	ret
+
 .cancel
 	ld hl, wJumptableIndex
 	set 7, [hl]
 	ret
 
-Function9102f: ; 9102f (24:502f)
+.DPad: ; 9102f (24:502f)
 	ld hl, hJoyLast
 	ld a, [hl]
 	and D_UP
@@ -636,50 +619,49 @@
 	and D_DOWN
 	jr nz, .down
 	ret
+
 .up
-	ld hl, wTownMapCursorLandmark
+	ld hl, wPokegearMapCursorLandmark
 	ld a, [hl]
 	cp d
-	jr c, .asm_91047
+	jr c, .wrap_around_up
 	ld a, e
 	dec a
 	ld [hl], a
-.asm_91047
+.wrap_around_up
 	inc [hl]
-	jr .done
+	jr .done_dpad
 
 .down
-	ld hl, wTownMapCursorLandmark
+	ld hl, wPokegearMapCursorLandmark
 	ld a, [hl]
 	cp e
-	jr nz, .asm_91054
+	jr nz, .wrap_around_down
 	ld a, d
 	inc a
 	ld [hl], a
-.asm_91054
+.wrap_around_down
 	dec [hl]
-
-.done
-	ld a, [wTownMapCursorLandmark]
-	call Function910b4
-	ld a, [wc6d5]
+.done_dpad
+	ld a, [wPokegearMapCursorLandmark]
+	call PokegearMap_UpdateLandmarkName
+	ld a, [wPokegearMapCursorObjectPointer]
 	ld c, a
-	ld a, [wc6d6]
+	ld a, [wPokegearMapCursorObjectPointer + 1]
 	ld b, a
-	ld a, [wTownMapCursorLandmark]
-	call Function910d4
+	ld a, [wPokegearMapCursorLandmark]
+	call PokegearMap_UpdateCursorPosition
 	ret
 
-Function9106a: ; 9106a
+PokegearMap_InitPlayerIcon: ; 9106a
 	push af
 	depixel 0, 0
-	ld b, SPRITE_ANIM_INDEX_WALK_CYCLE
+	ld b, SPRITE_ANIM_INDEX_RED_WALK
 	ld a, [PlayerGender]
 	bit 0, a
-	jr z, .asm_91079
-	ld b, SPRITE_ANIM_INDEX_1E
-
-.asm_91079
+	jr z, .got_gender
+	ld b, SPRITE_ANIM_INDEX_BLUE_WALK
+.got_gender
 	ld a, b
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_TILE_ID
@@ -697,9 +679,10 @@
 	add hl, bc
 	ld [hl], d
 	ret
+
 ; 91098
 
-Function91098: ; 91098
+PokegearMap_InitCursor: ; 91098
 	push af
 	depixel 0, 0
 	ld a, SPRITE_ANIM_INDEX_0D
@@ -712,12 +695,13 @@
 	ld [hl], SPRITE_ANIM_SEQ_NULL
 	pop af
 	push bc
-	call Function910d4
+	call PokegearMap_UpdateCursorPosition
 	pop bc
 	ret
+
 ; 910b4
 
-Function910b4: ; 910b4
+PokegearMap_UpdateLandmarkName: ; 910b4
 	push af
 	hlcoord 8, 0
 	lb bc, 2, 12
@@ -731,9 +715,10 @@
 	hlcoord 8, 0
 	ld [hl], $34
 	ret
+
 ; 910d4
 
-Function910d4: ; 910d4
+PokegearMap_UpdateCursorPosition: ; 910d4
 	push bc
 	ld e, a
 	callba GetLandmarkCoords
@@ -745,6 +730,7 @@
 	add hl, bc
 	ld [hl], d
 	ret
+
 ; 910e8
 
 TownMap_GetKantoLandmarkLimits: ; 910e8
@@ -759,11 +745,11 @@
 	ld d, ROUTE_28
 	ld e, VICTORY_ROAD
 	ret
+
 ; 910f9
 
-
-Function910f9: ; 910f9 (24:50f9)
-	call Function90da8
+PokegearRadio_Init: ; 910f9 (24:50f9)
+	call InitPokegearTilemap
 	depixel 4, 10, 4, 4
 	ld a, SPRITE_ANIM_INDEX_14
 	call _InitSpriteAnimStruct
@@ -775,7 +761,7 @@
 	inc [hl]
 	ret
 
-Function91112: ; 91112 (24:5112)
+PokegearRadio_Joypad: ; 91112 (24:5112)
 	ld hl, hJoyLast
 	ld a, [hl]
 	and B_BUTTON
@@ -783,11 +769,11 @@
 	ld a, [hl]
 	and D_LEFT
 	jr nz, .left
-	ld a, [wc6da]
+	ld a, [wPokegearRadioChannelAddr]
 	ld l, a
-	ld a, [wc6db]
+	ld a, [wPokegearRadioChannelAddr + 1]
 	ld h, a
-	ld a, [wc6d9]
+	ld a, [wPokegearRadioChannelBank]
 	and a
 	ret z
 	rst FarCall
@@ -796,24 +782,24 @@
 .left
 	ld a, [wPokegearFlags]
 	bit 2, a
-	jr z, .asm_9113b
+	jr z, .no_phone
 	ld c, $7
 	ld b, $2
-	jr .asm_9114c
+	jr .switch_page
 
-.asm_9113b
+.no_phone
 	ld a, [wPokegearFlags]
 	bit 0, a
-	jr z, .asm_91148
+	jr z, .no_map
 	ld c, $2
 	ld b, $1
-	jr .asm_9114c
+	jr .switch_page
 
-.asm_91148
+.no_map
 	ld c, $0
 	ld b, $0
-.asm_9114c
-	call Function91480
+.switch_page
+	call Pokegear_SwitchPage
 	ret
 
 .cancel
@@ -821,20 +807,20 @@
 	set 7, [hl]
 	ret
 
-Function91156: ; 91156 (24:5156)
+PokegearPhone_Init: ; 91156 (24:5156)
 	ld hl, wJumptableIndex
 	inc [hl]
 	xor a
-	ld [wc6d2], a
-	ld [wc6d1], a
-	ld [wc6d3], a
-	call Function90da8
-	call Function91492
-	ld hl, UnknownText_0x914ce
+	ld [wPokegearPhoneScrollPosition], a
+	ld [wPokegearPhoneCursorPosition], a
+	ld [wPokegearPhoneSelectedPerson], a
+	call InitPokegearTilemap
+	call ExitPokegearRadio_HandleMusic
+	ld hl, PokegearText_WhomToCall
 	call PrintText
 	ret
 
-Function91171: ; 91171 (24:5171)
+PokegearPhone_Joypad: ; 91171 (24:5171)
 	ld hl, hJoyPressed
 	ld a, [hl]
 	and B_BUTTON
@@ -849,20 +835,21 @@
 	ld a, [hl]
 	and D_RIGHT
 	jr nz, .right
-	call Function9126d
+	call PokegearPhone_GetDPad
 	ret
 
 .left
 	ld a, [wPokegearFlags]
 	bit 0, a
-	jr z, .asm_9119c
+	jr z, .no_map
 	ld c, $2
 	ld b, $1
-	jr .asm_911ac
-.asm_9119c
+	jr .switch_page
+
+.no_map
 	ld c, $0
 	ld b, $0
-	jr .asm_911ac
+	jr .switch_page
 
 .right
 	ld a, [wPokegearFlags]
@@ -870,8 +857,8 @@
 	ret z
 	ld c, $b
 	ld b, $3
-.asm_911ac
-	call Function91480
+.switch_page
+	call Pokegear_SwitchPage
 	ret
 
 .b
@@ -881,11 +868,11 @@
 
 .a
 	ld hl, wPhoneList
-	ld a, [wc6d2]
+	ld a, [wPokegearPhoneScrollPosition]
 	ld e, a
 	ld d, 0
 	add hl, de
-	ld a, [wc6d1]
+	ld a, [wPokegearPhoneCursorPosition]
 	ld e, a
 	ld d, 0
 	add hl, de
@@ -892,29 +879,27 @@
 	ld a, [hl]
 	and a
 	ret z
-
-	ld [wc6d3], a
+	ld [wPokegearPhoneSelectedPerson], a
 	hlcoord 1, 4
-	ld a, [wc6d1]
+	ld a, [wPokegearPhoneCursorPosition]
 	ld bc, 20 * 2
 	call AddNTimes
 	ld [hl], "▷"
-	call Function91342
-	jr c, .asm_911e5
-
+	call PokegearPhoneContactSubmenu
+	jr c, .quit_submenu
 	ld hl, wJumptableIndex
 	inc [hl]
 	ret
 
-.asm_911e5
+.quit_submenu
 	ld a, $8
 	ld [wJumptableIndex], a
 	ret
 
-Function911eb: ; 911eb (24:51eb)
+PokegearPhone_MakePhoneCall: ; 911eb (24:51eb)
 	call GetMapHeaderPhoneServiceNybble
 	and a
-	jr nz, .asm_91234
+	jr nz, .no_service
 	ld hl, Options
 	res NO_TEXT_SCROLL, [hl]
 	xor a
@@ -921,15 +906,15 @@
 	ld [hInMenu], a
 	ld de, SFX_CALL
 	call PlaySFX
-	ld hl, UnknownText_0x9124c
+	ld hl, .dotdotdot
 	call PrintText
 	call WaitSFX
 	ld de, SFX_CALL
 	call PlaySFX
-	ld hl, UnknownText_0x9124c
+	ld hl, .dotdotdot
 	call PrintText
 	call WaitSFX
-	ld a, [wc6d3]
+	ld a, [wPokegearPhoneSelectedPerson]
 	ld b, a
 	call Function90199
 	ld c, 10
@@ -938,34 +923,38 @@
 	set NO_TEXT_SCROLL, [hl]
 	ld a, $1
 	ld [hInMenu], a
-	call Function912b7
+	call PokegearPhone_UpdateCursor
 	ld hl, wJumptableIndex
 	inc [hl]
 	ret
-.asm_91234
+
+.no_service
 	callba Phone_NoSignal
-	ld hl, OutOfServiceAreaText
+	ld hl, .OutOfServiceArea
 	call PrintText
 	ld a, $8
 	ld [wJumptableIndex], a
-	ld hl, UnknownText_0x914ce
+	ld hl, PokegearText_WhomToCall
 	call PrintText
 	ret
+
 ; 9124c (24:524c)
 
-UnknownText_0x9124c: ; 0x9124c
+.dotdotdot: ; 0x9124c
 	;
 	text_jump UnknownText_0x1c5824
 	db "@"
+
 ; 0x91251
 
-OutOfServiceAreaText: ; 0x91251
+.OutOfServiceArea: ; 0x91251
 	; You're out of the service area.
 	text_jump UnknownText_0x1c5827
 	db "@"
+
 ; 0x91256
 
-Function91256: ; 91256 (24:5256)
+PokegearPhone_FinishPhoneCall: ; 91256 (24:5256)
 	ld a, [hJoyPressed]
 	and A_BUTTON | B_BUTTON
 	ret z
@@ -972,11 +961,11 @@
 	callba HangUp
 	ld a, $8
 	ld [wJumptableIndex], a
-	ld hl, UnknownText_0x914ce
+	ld hl, PokegearText_WhomToCall
 	call PrintText
 	ret
 
-Function9126d: ; 9126d (24:526d)
+PokegearPhone_GetDPad: ; 9126d (24:526d)
 	ld hl, hJoyLast
 	ld a, [hl]
 	and D_UP
@@ -987,52 +976,52 @@
 	ret
 
 .up
-	ld hl, wc6d1
+	ld hl, wPokegearPhoneCursorPosition
 	ld a, [hl]
 	and a
-	jr z, .asm_91285
+	jr z, .scroll_page_up
 	dec [hl]
-	jr .asm_912a3
+	jr .done_joypad_same_page
 
-.asm_91285
-	ld hl, wc6d2
+.scroll_page_up
+	ld hl, wPokegearPhoneScrollPosition
 	ld a, [hl]
 	and a
 	ret z
 	dec [hl]
-	jr .asm_912ad
+	jr .done_joypad_update_page
 
 .down
-	ld hl, wc6d1
+	ld hl, wPokegearPhoneCursorPosition
 	ld a, [hl]
 	cp $3
-	jr nc, .asm_91299
+	jr nc, .scroll_page_down
 	inc [hl]
-	jr .asm_912a3
+	jr .done_joypad_same_page
 
-.asm_91299
-	ld hl, wc6d2
+.scroll_page_down
+	ld hl, wPokegearPhoneScrollPosition
 	ld a, [hl]
 	cp $6
 	ret nc
 	inc [hl]
-	jr .asm_912ad
+	jr .done_joypad_update_page
 
-.asm_912a3
+.done_joypad_same_page
 	xor a
 	ld [hBGMapMode], a
-	call Function912b7
+	call PokegearPhone_UpdateCursor
 	call WaitBGMap
 	ret
 
-.asm_912ad
+.done_joypad_update_page
 	xor a
 	ld [hBGMapMode], a
-	call Function912d8
+	call PokegearPhone_UpdateDisplayList
 	call WaitBGMap
 	ret
 
-Function912b7: ; 912b7 (24:52b7)
+PokegearPhone_UpdateCursor: ; 912b7 (24:52b7)
 	ld a, " "
 	hlcoord 1, 4
 	ld [hl], a
@@ -1043,41 +1032,40 @@
 	hlcoord 1, 10
 	ld [hl], a
 	hlcoord 1, 4
-	ld a, [wc6d1]
-	ld bc, $28
+	ld a, [wPokegearPhoneCursorPosition]
+	ld bc, 2 * SCREEN_WIDTH
 	call AddNTimes
 	ld [hl], "▶"
 	ret
 
-Function912d8: ; 912d8 (24:52d8)
+PokegearPhone_UpdateDisplayList: ; 912d8 (24:52d8)
 	hlcoord 1, 3
-	ld b, $9
-	ld a, $7f
-.asm_912df
-	ld c, $12
-.asm_912e1
+	ld b, 9
+	ld a, " "
+.row
+	ld c, 18
+.col
 	ld [hli], a
 	dec c
-	jr nz, .asm_912e1
-rept 2
+	jr nz, .col
 	inc hl
-endr
+	inc hl
 	dec b
-	jr nz, .asm_912df
-	ld a, [wc6d2]
+	jr nz, .row
+	ld a, [wPokegearPhoneScrollPosition]
 	ld e, a
 	ld d, $0
 	ld hl, wPhoneList
 	add hl, de
 	xor a
-	ld [wc6d0], a
-.asm_912f8
+	ld [wPokegearPhoneLoadNameBuffer], a
+.loop
 	ld a, [hli]
 	push hl
 	push af
 	hlcoord 2, 4
-	ld a, [wc6d0]
-	ld bc, $28
+	ld a, [wPokegearPhoneLoadNameBuffer]
+	ld bc, 2 * SCREEN_WIDTH
 	call AddNTimes
 	ld d, h
 	ld e, l
@@ -1085,66 +1073,66 @@
 	ld b, a
 	call Function90380
 	pop hl
-	ld a, [wc6d0]
+	ld a, [wPokegearPhoneLoadNameBuffer]
 	inc a
-	ld [wc6d0], a
+	ld [wPokegearPhoneLoadNameBuffer], a
 	cp $4
-	jr c, .asm_912f8
-	call Function912b7
+	jr c, .loop
+	call PokegearPhone_UpdateCursor
 	ret
+
 ; 9131e (24:531e)
 
-Function9131e: ; 9131e
+PokegearPhone_DeletePhoneNumber: ; 9131e
 	ld hl, wPhoneList
-	ld a, [wc6d2]
+	ld a, [wPokegearPhoneScrollPosition]
 	ld e, a
 	ld d, 0
 	add hl, de
-	ld a, [wc6d1]
+	ld a, [wPokegearPhoneCursorPosition]
 	ld e, a
 	ld d, 0
 	add hl, de
 	ld [hl], 0
 	ld hl, wPhoneList
-	ld c, $a
-.asm_91336
+	ld c, CONTACT_LIST_SIZE
+.loop
 	ld a, [hli]
 	and a
-	jr nz, .asm_9133e
+	jr nz, .skip
 	ld a, [hld]
 	ld [hli], a
 	ld [hl], 0
-.asm_9133e
+.skip
 	dec c
-	jr nz, .asm_91336
+	jr nz, .loop
 	ret
+
 ; 91342
 
-Function91342: ; 91342 (24:5342)
+PokegearPhoneContactSubmenu: ; 91342 (24:5342)
 	ld hl, wPhoneList
-	ld a, [wc6d2]
+	ld a, [wPokegearPhoneScrollPosition]
 	ld e, a
 	ld d, 0
 	add hl, de
-	ld a, [wc6d1]
+	ld a, [wPokegearPhoneCursorPosition]
 	ld e, a
 	ld d, 0
 	add hl, de
 	ld c, [hl]
-	callba Function9038a
+	callba CheckCanDeletePhoneNumber
 	ld a, c
 	and a
-	jr z, .asm_91366
+	jr z, .cant_delete
+	ld hl, .CallDeleteCancelJumptable
+	ld de, .CallDeleteCancelStrings
+	jr .got_menu_data
 
-	ld hl, Jumptable_91455
-	ld de, Unknown_9143f
-	jr .asm_9136c
-
-.asm_91366
-	ld hl, Jumptable_9146a
-	ld de, Unknown_9145b
-
-.asm_9136c
+.cant_delete
+	ld hl, .CallCancelJumptable
+	ld de, .CallCancelStrings
+.got_menu_data
 	xor a
 	ld [hBGMapMode], a
 	push hl
@@ -1171,11 +1159,10 @@
 	call PlaceString
 	pop de
 	xor a
-	ld [wc6d4], a
-	call Function9141d
+	ld [wPokegearPhoneSubmenuCursor], a
+	call .UpdateCursor
 	call WaitBGMap
-
-.asm_91398
+.loop
 	push de
 	call JoyTextDelay
 	pop de
@@ -1182,89 +1169,90 @@
 	ld hl, hJoyPressed
 	ld a, [hl]
 	and D_UP
-	jr nz, .asm_913b4
+	jr nz, .d_up
 	ld a, [hl]
 	and D_DOWN
-	jr nz, .asm_913c1
+	jr nz, .d_down
 	ld a, [hl]
 	and A_BUTTON | B_BUTTON
-	jr nz, .asm_913d4
+	jr nz, .a_b
 	call DelayFrame
-	jr .asm_91398
+	jr .loop
 
-.asm_913b4
-	ld hl, wc6d4
+.d_up
+	ld hl, wPokegearPhoneSubmenuCursor
 	ld a, [hl]
 	and a
-	jr z, .asm_91398
+	jr z, .loop
 	dec [hl]
-	call Function9141d
-	jr .asm_91398
+	call .UpdateCursor
+	jr .loop
 
-.asm_913c1
+.d_down
 	ld hl, 2
 	add hl, de
-	ld a, [wc6d4]
+	ld a, [wPokegearPhoneSubmenuCursor]
 	inc a
 	cp [hl]
-	jr nc, .asm_91398
-	ld [wc6d4], a
-	call Function9141d
-	jr .asm_91398
+	jr nc, .loop
+	ld [wPokegearPhoneSubmenuCursor], a
+	call .UpdateCursor
+	jr .loop
 
-.asm_913d4
+.a_b
 	xor a
 	ld [hBGMapMode], a
-	call Function912d8
+	call PokegearPhone_UpdateDisplayList
 	ld a, $1
 	ld [hBGMapMode], a
 	pop hl
 	ld a, [hJoyPressed]
 	and B_BUTTON
-	jr nz, Function913f1
-
-	ld a, [wc6d4]
+	jr nz, .Cancel
+	ld a, [wPokegearPhoneSubmenuCursor]
 	ld e, a
 	ld d, 0
-rept 2
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
 	jp [hl]
 
-Function913f1: ; 913f1
-	ld hl, UnknownText_0x914ce
+.Cancel: ; 913f1
+	ld hl, PokegearText_WhomToCall
 	call PrintText
 	scf
 	ret
+
 ; 913f9 (24:53f9)
 
-Function913f9: ; 913f9
-	ld hl, UnknownText_0x914d8
+.Delete: ; 913f9
+	ld hl, PokegearText_DeleteStoredNumber
 	call MenuTextBox
 	call YesNoBox
 	call ExitMenu
-	jr c, .asm_91419
-	call Function9131e
+	jr c, .CancelDelete
+	call PokegearPhone_DeletePhoneNumber
 	xor a
 	ld [hBGMapMode], a
-	call Function912d8
-	ld hl, UnknownText_0x914ce
+	call PokegearPhone_UpdateDisplayList
+	ld hl, PokegearText_WhomToCall
 	call PrintText
 	call WaitBGMap
-.asm_91419
+.CancelDelete
 	scf
 	ret
+
 ; 9141b
 
-Function9141b: ; 9141b
+.Call: ; 9141b
 	and a
 	ret
+
 ; 9141d
 
-Function9141d: ; 9141d (24:541d)
+.UpdateCursor: ; 9141d (24:541d)
 	push de
 	ld a, [de]
 	inc de
@@ -1276,22 +1264,23 @@
 	ld c, a
 	push hl
 	ld a, " "
-	ld de, 20 * 2
-.asm_9142c
+	ld de, SCREEN_WIDTH * 2
+.clear_column
 	ld [hl], a
 	add hl, de
 	dec c
-	jr nz, .asm_9142c
+	jr nz, .clear_column
 	pop hl
-	ld a, [wc6d4]
-	ld bc, 20 * 2
+	ld a, [wPokegearPhoneSubmenuCursor]
+	ld bc, SCREEN_WIDTH  * 2
 	call AddNTimes
 	ld [hl], "▶"
 	pop de
 	ret
+
 ; 9143f (24:543f)
 
-Unknown_9143f: ; 9143f
+.CallDeleteCancelStrings: ; 9143f
 	dwcoord 10, 6
 	db 3
 	db   "CALL"
@@ -1300,13 +1289,14 @@
 	db   "@"
 ; 91455
 
-Jumptable_91455: ; 91455
-	dw Function9141b
-	dw Function913f9
-	dw Function913f1
+.CallDeleteCancelJumptable: ; 91455
+	dw .Call
+	dw .Delete
+	dw .Cancel
+
 ; 9145b
 
-Unknown_9145b: ; 9145b
+.CallCancelStrings: ; 9145b
 	dwcoord 10, 8
 	db 2
 	db   "CALL"
@@ -1314,29 +1304,29 @@
 	db   "@"
 ; 9146a
 
-Jumptable_9146a: ; 9146a
-	dw Function9141b
-	dw Function913f1
+.CallCancelJumptable: ; 9146a
+	dw .Call
+	dw .Cancel
+
 ; 9146e
 
-
-Function9146e: ; 9146e
+; XXX
 	ld a, [hHours]
 	cp 12
-	jr c, .asm_9147b
+	jr c, .am
 	sub 12
 	ld [wd265], a
 	scf
 	ret
 
-.asm_9147b
+.am
 	ld [wd265], a
 	and a
 	ret
+
 ; 91480
 
-
-Function91480: ; 91480 (24:5480)
+Pokegear_SwitchPage: ; 91480 (24:5480)
 	ld de, SFX_READ_TEXT_2
 	call PlaySFX
 	ld a, c
@@ -1346,24 +1336,24 @@
 	call DeleteSpriteAnimStruct2ToEnd
 	ret
 
-Function91492: ; 91492
-	ld a, [wc6dc]
+ExitPokegearRadio_HandleMusic: ; 91492
+	ld a, [wPokegearRadioMusicPlaying]
 	cp $fe
-	jr z, .asm_914a3
+	jr z, .restart_map_music
 	cp $ff
 	call z, EnterMapMusic
 	xor a
-	ld [wc6dc], a
+	ld [wPokegearRadioMusicPlaying], a
 	ret
 
-.asm_914a3
+.restart_map_music
 	call RestartMapMusic
 	xor a
-	ld [wc6dc], a
+	ld [wPokegearRadioMusicPlaying], a
 	ret
+
 ; 914ab
 
-
 DeleteSpriteAnimStruct2ToEnd: ; 914ab (24:54ab)
 	ld hl, SpriteAnim2
 	ld bc, wSpriteAnimationStructsEnd - SpriteAnim2
@@ -1373,9 +1363,11 @@
 	ld [wSpriteAnimCount], a
 	ret
 
-Function914bb: ; 914bb (24:54bb)
+Pokegear_LoadTilemapRLE: ; 914bb (24:54bb)
+	; Format: repeat count, tile ID
+	; Terminated with $FF
 	hlcoord 0, 0
-.asm_914be
+.loop
 	ld a, [de]
 	cp $ff
 	ret z
@@ -1385,49 +1377,52 @@
 	ld c, a
 	inc de
 	ld a, b
-.asm_914c8
+.load
 	ld [hli], a
 	dec c
-	jr nz, .asm_914c8
-	jr .asm_914be
+	jr nz, .load
+	jr .loop
+
 ; 914ce (24:54ce)
 
-UnknownText_0x914ce: ; 0x914ce
+PokegearText_WhomToCall: ; 0x914ce
 	; Whom do you want to call?
 	text_jump UnknownText_0x1c5847
 	db "@"
+
 ; 0x914d3
 
-UnknownText_0x914d3: ; 0x914d3
+PokegearText_PressAnyButtonToExit: ; 0x914d3
 	; Press any button to exit.
 	text_jump UnknownText_0x1c5862
 	db "@"
+
 ; 0x914d8
 
-UnknownText_0x914d8: ; 0x914d8
+PokegearText_DeleteStoredNumber: ; 0x914d8
 	; Delete this stored phone number?
 	text_jump UnknownText_0x1c587d
 	db "@"
+
 ; 0x914dd
 
-
 PokegearSpritesGFX: ; 914dd
 INCBIN "gfx/misc/pokegear_sprites.2bpp.lz"
 ; 9150d
 
 RadioTilemapRLE: ; 9150d
-INCBIN "gfx/unknown/09150d.tilemap.rle"
-
+INCBIN "gfx/pokegear/radio.tilemap.rle"
 PhoneTilemapRLE: ; 9158a
-INCBIN "gfx/unknown/09158a.tilemap.rle"
-
+INCBIN "gfx/pokegear/phone.tilemap.rle"
 ClockTilemapRLE: ; 915db
-INCBIN "gfx/unknown/0915db.tilemap.rle"
+INCBIN "gfx/pokegear/clock.tilemap.rle"
 ; 9163e
+
 _UpdateRadioStation: ; 9163e (24:563e)
 	jr UpdateRadioStation
 
 ; called from engine/sprite_anims.asm
+
 AnimateTuningKnob: ; 91640 (24:5640)
 	push bc
 	call .TuningKnob
@@ -1453,9 +1448,8 @@
 	ld a, [hl]
 	and a
 	ret z
-rept 2
 	dec [hl]
-endr
+	dec [hl]
 	jr .update
 
 .up
@@ -1463,12 +1457,9 @@
 	ld a, [hl]
 	cp 80
 	ret nc
-rept 2
 	inc [hl]
-endr
-
+	inc [hl]
 .update
-
 UpdateRadioStation: ; 9166f (24:566f)
 	ld hl, wRadioTuningKnob
 	ld d, [hl]
@@ -1479,9 +1470,8 @@
 	jr z, .nostation
 	cp d
 	jr z, .foundstation
-rept 2
 	inc hl
-endr
+	inc hl
 	jr .loop
 
 .nostation
@@ -1495,8 +1485,9 @@
 	ld de, .returnafterstation
 	push de
 	jp [hl]
+
 .returnafterstation
-	ld a, [wc6d9]
+	ld a, [wPokegearRadioChannelBank]
 	and a
 	ret z
 	xor a
@@ -1506,20 +1497,22 @@
 	ld a, $1
 	ld [hBGMapMode], a
 	ret
+
 ; 916a1 (24:56a1)
 
-Function916a1: ; 916a1
-	ld [wc6d9], a
+; XXX
+	ld [wPokegearRadioChannelBank], a
 	ld a, [hli]
-	ld [wc6da], a
+	ld [wPokegearRadioChannelAddr], a
 	ld a, [hli]
-	ld [wc6db], a
+	ld [wPokegearRadioChannelAddr + 1], a
 	ret
+
 ; 916ad
 
-
 RadioChannels:
 ; frequencies and the shows that play on them.
+
 ; frequency value given here = 4 × ingame_frequency − 2
 	dbw 16, .PkmnTalkAndPokedexShow
 	dbw 28, .PokemonMusic
@@ -1530,10 +1523,11 @@
 	dbw 72, .LetsAllSing
 	dbw 78, .PokeFluteRadio
 	dbw 80, .EvolutionRadio
-	db $ff
+	db -1
 
 .PkmnTalkAndPokedexShow
 ; Pokédex Show in the morning
+
 ; Oak's Pokémon Talk in the afternoon and evening
 	call .InJohto
 	jr nc, .NoSignal
@@ -1558,7 +1552,7 @@
 	jp LoadStation_BuenasPassword
 
 .RuinsOfAlphRadio
-	ld a, [wTownMapPlayerIconLandmark]
+	ld a, [wPokegearMapPlayerIconLandmark]
 	cp RUINS_OF_ALPH
 	jr nz, .NoSignal
 	jp LoadStation_UnownRadio
@@ -1589,12 +1583,10 @@
 
 .EvolutionRadio
 ; This station airs in the Lake of Rage area when Rocket are still in Mahogany.
-
 	ld a, [StatusFlags]
 	bit 4, a
 	jr z, .NoSignal
-
-	ld a, [wTownMapPlayerIconLandmark]
+	ld a, [wPokegearMapPlayerIconLandmark]
 	cp MAHOGANY_TOWN
 	jr z, .ok
 	cp ROUTE_43
@@ -1610,8 +1602,9 @@
 
 .InJohto
 ; if in Johto or on the S.S. Aqua, set carry
+
 ; otherwise clear carry
-	ld a, [wTownMapPlayerIconLandmark]
+	ld a, [wPokegearMapPlayerIconLandmark]
 	cp FAST_SHIP
 	jr z, .johto
 	cp KANTO_LANDMARK
@@ -1619,12 +1612,11 @@
 .kanto
 	and a
 	ret
+
 .johto
 	scf
 	ret
 
-
-
 LoadStation_OaksPokemonTalk: ; 91753 (24:5753)
 	xor a ; OAKS_POKEMON_TALK
 	ld [wd002], a
@@ -1682,6 +1674,7 @@
 	ret z
 	ld de, BuenasPasswordName
 	ret
+
 ; 917c3 (24:57c3)
 
 BuenasPasswordName:    db "BUENA'S PASSWORD@"
@@ -1719,6 +1712,7 @@
 	call Radio_BackUpFarCallParams
 	ld de, LetsAllSingName
 	ret
+
 ; 91814 (24:5814)
 
 LoadStation_RocketRadio: ; 91814
@@ -1731,6 +1725,7 @@
 	call Radio_BackUpFarCallParams
 	ld de, LetsAllSingName
 	ret
+
 ; 91829
 
 LoadStation_PokeFluteRadio: ; 91829 (24:5829)
@@ -1754,6 +1749,7 @@
 	call Radio_BackUpFarCallParams
 	ld de, UnknownStationName
 	ret
+
 ; 91853 (24:5853)
 
 LoadStation_Dummy: ; 91853
@@ -1762,7 +1758,7 @@
 RadioMusicRestartDE: ; 91854 (24:5854)
 	push de
 	ld a, e
-	ld [wc6dc], a
+	ld [wPokegearRadioMusicPlaying], a
 	ld de, MUSIC_NONE
 	call PlayMusic
 	pop de
@@ -1774,7 +1770,7 @@
 RadioMusicRestartPokemonChannel: ; 91868 (24:5868)
 	push de
 	ld a, $fe
-	ld [wc6dc], a
+	ld [wPokegearRadioMusicPlaying], a
 	ld de, MUSIC_NONE
 	call PlayMusic
 	pop de
@@ -1783,11 +1779,11 @@
 	ret
 
 Radio_BackUpFarCallParams: ; 9187c (24:587c)
-	ld [wc6d9], a
+	ld [wPokegearRadioChannelBank], a
 	ld a, l
-	ld [wc6da], a
+	ld [wPokegearRadioChannelAddr], a
 	ld a, h
-	ld [wc6db], a
+	ld [wPokegearRadioChannelAddr + 1], a
 	ret
 
 NoRadioStation: ; 91888 (24:5888)
@@ -1794,9 +1790,9 @@
 	call NoRadioMusic
 	call NoRadioName
 	xor a
-	ld [wc6d9], a
-	ld [wc6da], a
-	ld [wc6db], a
+	ld [wPokegearRadioChannelBank], a
+	ld [wPokegearRadioChannelAddr], a
+	ld [wPokegearRadioChannelAddr + 1], a
 	ld a, $1
 	ld [hBGMapMode], a
 	ret
@@ -1805,7 +1801,7 @@
 	ld de, MUSIC_NONE
 	call PlayMusic
 	ld a, $ff
-	ld [wc6dc], a
+	ld [wPokegearRadioMusicPlaying], a
 	ret
 
 NoRadioName: ; 918a9 (24:58a9)
@@ -1818,6 +1814,7 @@
 	ld bc, $412
 	call TextBox
 	ret
+
 ; 918bf
 
 OaksPkmnTalkName:     db "OAK's <PK><MN> Talk@"
@@ -1825,13 +1822,182 @@
 PokemonMusicName:     db "#MON Music@"
 LuckyChannelName:     db "Lucky Channel@"
 UnknownStationName:   db "?????@"
+
 PlacesAndPeopleName:  db "Places & People@"
 LetsAllSingName:      db "Let's All Sing!@"
 PokeFluteStationName: db "# FLUTE@"
 ; 9191c
 
-INCLUDE "engine/town_map.asm"
+_TownMap: ; 9191c
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set NO_TEXT_SCROLL, [hl]
 
+	ld a, [hInMenu]
+	push af
+	ld a, $1
+	ld [hInMenu], a
+
+	ld a, [VramState]
+	push af
+	xor a
+	ld [VramState], a
+
+	call ClearBGPalettes
+	call ClearTileMap
+	call ClearSprites
+	call DisableLCD
+	call Pokegear_LoadGFX
+	callba ClearSpriteAnims
+	ld a, 8
+	call SkipMusic
+	ld a, $e3
+	ld [rLCDC], a
+	call TownMap_GetCurrentLandmark
+	ld [wd002], a
+	ld [wd003], a
+	xor a
+	ld [hBGMapMode], a
+	call .InitTilemap
+	call WaitBGMap2
+	ld a, [wd002]
+	call PokegearMap_InitPlayerIcon
+	ld a, [wd003]
+	call PokegearMap_InitCursor
+	ld a, c
+	ld [wd004], a
+	ld a, b
+	ld [wd005], a
+	ld b, SCGB_POKEGEAR_PALS
+	call GetSGBLayout
+	call SetPalettes
+	ld a, [hCGB]
+	and a
+	jr z, .dmg
+	ld a, %11100100
+	call DmgToCgbObjPal0
+	call DelayFrame
+
+.dmg
+	ld a, [wd002]
+	cp KANTO_LANDMARK
+	jr nc, .kanto
+	ld d, KANTO_LANDMARK - 1
+	ld e, 1
+	call .loop
+	jr .resume
+
+.kanto
+	call TownMap_GetKantoLandmarkLimits
+	call .loop
+
+.resume
+	pop af
+	ld [VramState], a
+	pop af
+	ld [hInMenu], a
+	pop af
+	ld [Options], a
+	call ClearBGPalettes
+	ret
+
+.loop
+	call JoyTextDelay
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and B_BUTTON
+	ret nz
+
+	ld hl, hJoyLast
+	ld a, [hl]
+	and D_UP
+	jr nz, .pressed_up
+
+	ld a, [hl]
+	and D_DOWN
+	jr nz, .pressed_down
+.loop2
+	push de
+	callba PlaySpriteAnimations
+	pop de
+	call DelayFrame
+	jr .loop
+
+.pressed_up
+	ld hl, wd003
+	ld a, [hl]
+	cp d
+	jr c, .okay
+	ld a, e
+	dec a
+	ld [hl], a
+
+.okay
+	inc [hl]
+	jr .next
+
+.pressed_down
+	ld hl, wd003
+	ld a, [hl]
+	cp e
+	jr nz, .okay2
+	ld a, d
+	inc a
+	ld [hl], a
+
+.okay2
+	dec [hl]
+
+.next
+	push de
+	ld a, [wd003]
+	call PokegearMap_UpdateLandmarkName
+	ld a, [wd004]
+	ld c, a
+	ld a, [wd005]
+	ld b, a
+	ld a, [wd003]
+	call PokegearMap_UpdateCursorPosition
+	pop de
+	jr .loop2
+; 91a04
+
+.InitTilemap: ; 91a04
+	ld a, [wd002]
+	cp KANTO_LANDMARK
+	jr nc, .kanto2
+	ld e, $0
+	jr .okay_tilemap
+
+.kanto2
+	ld e, $1
+.okay_tilemap
+	callba PokegearMap
+	ld a, $7
+	ld bc, 6
+	hlcoord 1, 0
+	call ByteFill
+	hlcoord 0, 0
+	ld [hl], $6
+	hlcoord 7, 0
+	ld [hl], $17
+	hlcoord 7, 1
+	ld [hl], $16
+	hlcoord 7, 2
+	ld [hl], $26
+	ld a, $7
+	ld bc, NAME_LENGTH
+	hlcoord 8, 2
+	call ByteFill
+	hlcoord 19, 2
+	ld [hl], $17
+	ld a, [wd003]
+	call PokegearMap_UpdateLandmarkName
+	callba TownMapPals
+	ret
+; 91a53
+
 PlayRadio: ; 91a53
 	ld hl, Options
 	ld a, [hl]
@@ -1845,15 +2011,14 @@
 	ld a, [hJoyPressed]
 	and A_BUTTON | B_BUTTON
 	jr nz, .stop
-	ld a, [wc6da]
+	ld a, [wPokegearRadioChannelAddr]
 	ld l, a
-	ld a, [wc6db]
+	ld a, [wPokegearRadioChannelAddr + 1]
 	ld h, a
-	ld a, [wc6d9]
+	ld a, [wPokegearRadioChannelBank]
 	and a
 	jr z, .zero
 	rst FarCall
-
 .zero
 	call DelayFrame
 	jr .loop
@@ -1861,8 +2026,9 @@
 .stop
 	pop af
 	ld [Options], a
-	call Function91492
+	call ExitPokegearRadio_HandleMusic
 	ret
+
 ; 91a87
 
 .PlayStation: ; 91a87
@@ -1870,9 +2036,8 @@
 	ld [EnemyTurnsTaken], a
 	ld hl, .StationPointers
 	ld d, $0
-rept 2
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -1895,6 +2060,7 @@
 	ld [hl], $73
 	call WaitBGMap
 	ret
+
 ; 91ab9
 
 .StationPointers: ; 91ab9
@@ -1907,6 +2073,7 @@
 	dw LoadStation_PlacesAndPeople
 	dw LoadStation_LetsAllSing
 	dw LoadStation_RocketRadio
+
 ; 91acb
 
 .OakOrPnP: ; 91acb
@@ -1921,6 +2088,7 @@
 
 .kanto
 	jp LoadStation_PlacesAndPeople
+
 ; 91ae1
 
 PokegearMap: ; 91ae1
@@ -1935,6 +2103,7 @@
 	call LoadTownMapGFX
 	call FillKantoMap
 	ret
+
 ; 91af3
 
 _FlyMap: ; 91af3
@@ -1985,7 +2154,6 @@
 	ld de, Flypoints + 1
 	add hl, de
 	ld a, [hl]
-
 .exit
 	ld [wd002], a
 	pop af
@@ -2000,6 +2168,7 @@
 	ld a, [wd002]
 	ld e, a
 	ret
+
 ; 91b73
 
 FlyMapScroll: ; 91b73
@@ -2024,7 +2193,6 @@
 	ld a, e
 	dec a
 	ld [hl], a
-
 .NotAtEndYet
 	inc [hl]
 	call CheckIfVisitedFlypoint
@@ -2039,12 +2207,10 @@
 	ld a, d
 	inc a
 	ld [hl], a
-
 .NotAtStartYet
 	dec [hl]
 	call CheckIfVisitedFlypoint
 	jr z, .ScrollPrev
-
 .Finally
 	call TownMapBubble
 	call WaitBGMap
@@ -2051,6 +2217,7 @@
 	xor a
 	ld [hBGMapMode], a
 	ret
+
 ; 91bb5
 
 TownMapBubble: ; 91bb5
@@ -2060,47 +2227,38 @@
 	hlcoord 1, 0
 	ld a, $30
 	ld [hli], a
-
 ; Top row
 	ld bc, 16
 	ld a, " "
 	call ByteFill
-
 ; Top-right corner
 	ld a, $31
 	ld [hl], a
 	hlcoord 1, 1
 
-
 ; Middle row
 	ld bc, 18
 	ld a, " "
 	call ByteFill
 
-
 ; Bottom-left corner
 	hlcoord 1, 2
 	ld a, $32
 	ld [hli], a
-
 ; Bottom row
 	ld bc, 16
 	ld a, " "
 	call ByteFill
-
 ; Bottom-right corner
 	ld a, $33
 	ld [hl], a
 
-
 ; Print "Where?"
 	hlcoord 2, 0
 	ld de, .Where
 	call PlaceString
-
 ; Print the name of the default flypoint
 	call .Name
-
 ; Up/down arrows
 	hlcoord 18, 1
 	ld [hl], $34	
@@ -2118,13 +2276,12 @@
 	ld de, Flypoints
 	add hl, de
 	ld e, [hl]
-
 	callba GetLandmarkName
-
 	hlcoord 2, 1
 	ld de, StringBuffer1
 	call PlaceString
 	ret
+
 ; 91c17
 
 GetMapCursorCoordinates: ; 91c17
@@ -2147,6 +2304,7 @@
 	add hl, bc
 	ld [hl], d
 	ret
+
 ; 91c3c
 
 CheckIfVisitedFlypoint: ; 91c3c
@@ -2166,6 +2324,7 @@
 	pop bc
 	and a
 	ret
+
 ; 91c50
 
 HasVisitedSpawn: ; 91c50
@@ -2176,18 +2335,16 @@
 	predef FlagPredef
 	ld a, c
 	ret
+
 ; 91c5e
 
 Flypoints: ; 91c5e
 ; landmark, spawn point
-
 	const_def
-
 flypoint: MACRO
 	const FLY_\1
 	db \2, SPAWN_\1
 ENDM
-
 ; Johto
 	flypoint NEW_BARK,    NEW_BARK_TOWN
 	flypoint CHERRYGROVE, CHERRYGROVE_CITY
@@ -2201,10 +2358,9 @@
 	flypoint LAKE,        LAKE_OF_RAGE
 	flypoint BLACKTHORN,  BLACKTHORN_CITY
 	flypoint MT_SILVER,   SILVER_CAVE
-
 ; Kanto
-KANTO_FLYPOINT EQU const_value
 
+KANTO_FLYPOINT EQU const_value
 	flypoint PALLET,      PALLET_TOWN
 	flypoint VIRIDIAN,    VIRIDIAN_CITY
 	flypoint PEWTER,      PEWTER_CITY
@@ -2217,54 +2373,46 @@
 	flypoint FUCHSIA,     FUCHSIA_CITY
 	flypoint CINNABAR,    CINNABAR_ISLAND
 	flypoint INDIGO,      INDIGO_PLATEAU
-
 	db -1
+
 ; 91c8f
 
 ret_91c8f: ; 91c8f
 	ret
+
 ; 91c90
 
 FlyMap: ; 91c90
-
 	ld a, [MapGroup]
 	ld b, a
 	ld a, [MapNumber]
 	ld c, a
 	call GetWorldMapLocation
-
 ; If we're not in a valid location, i.e. Pokecenter floor 2F,
-; the backup map information is used
 
+; the backup map information is used
 	cp SPECIAL_MAP
 	jr nz, .CheckRegion
-
 	ld a, [BackupMapGroup]
 	ld b, a
 	ld a, [BackupMapNumber]
 	ld c, a
 	call GetWorldMapLocation
-
 .CheckRegion
 ; The first 46 locations are part of Johto. The rest are in Kanto
 	cp KANTO_LANDMARK
 	jr nc, .KantoFlyMap
-
 .JohtoFlyMap
 ; Note that .NoKanto should be modified in tandem with this branch
-
 	push af
-
 ; Start from New Bark Town
 	ld a, FLY_NEW_BARK
 	ld [wd002], a
-
 ; Flypoints begin at New Bark Town...
 	ld [StartFlypoint], a
 ; ..and end at Silver Cave
 	ld a, FLY_MT_SILVER
 	ld [EndFlypoint], a
-
 ; Fill out the map
 	call FillJohtoMap
 	call .MapHud
@@ -2273,23 +2421,23 @@
 	ret
 
 .KantoFlyMap
-
 ; The event that there are no flypoints enabled in a map is not
+
 ; accounted for. As a result, if you attempt to select a flypoint
 ; when there are none enabled, the game will crash. Additionally,
+
 ; the flypoint selection has a default starting point that
 ; can be flown to even if none are enabled
 
 ; To prevent both of these things from happening when the player
 ; enters Kanto, fly access is restricted until Indigo Plateau is
-; visited and its flypoint enabled
 
+; visited and its flypoint enabled
 	push af
 	ld c, SPAWN_INDIGO
 	call HasVisitedSpawn
 	and a
 	jr z, .NoKanto
-
 ; Kanto's map is only loaded if we've visited Indigo Plateau
 
 ; Flypoints begin at Pallet Town...
@@ -2298,11 +2446,10 @@
 ; ...and end at Indigo Plateau
 	ld a, FLY_INDIGO
 	ld [EndFlypoint], a
-
 ; Because Indigo Plateau is the first flypoint the player
+
 ; visits, it's made the default flypoint
 	ld [wd002], a
-
 ; Fill out the map
 	call FillKantoMap
 	call .MapHud
@@ -2316,24 +2463,18 @@
 ; Start from New Bark Town
 	ld a, FLY_NEW_BARK
 	ld [wd002], a
-
 ; Flypoints begin at New Bark Town...
 	ld [StartFlypoint], a
 ; ..and end at Silver Cave
 	ld a, FLY_MT_SILVER
 	ld [EndFlypoint], a
-
 	call FillJohtoMap
-
 	pop af
-
 .MapHud
 	call TownMapBubble
 	call TownMapPals
-
 	hlbgcoord 0, 0 ; BG Map 0
 	call TownMapBGUpdate
-
 	call TownMapMon
 	ld a, c
 	ld [wd003], a
@@ -2340,6 +2481,7 @@
 	ld a, b
 	ld [wd004], a
 	ret
+
 ; 91d11
 
 _Area: ; 91d11
@@ -2355,17 +2497,14 @@
 	ld [hBGMapMode], a
 	ld a, $1
 	ld [hInMenu], a
-
 	ld de, PokedexNestIconGFX
 	ld hl, VTiles0 tile $7f
 	lb bc, BANK(PokedexNestIconGFX), 1
 	call Request2bpp
-
 	call .GetPlayerOrFastShipIcon
 	ld hl, VTiles0 tile $78
 	ld c, 4
 	call Request2bpp
-
 	call LoadTownMapGFX
 	call FillKantoMap
 	call .PlaceString_MonsNest
@@ -2399,7 +2538,6 @@
 
 .select
 	call .HideNestsShowPlayer
-
 .next
 	call DelayFrame
 	jr .loop
@@ -2411,6 +2549,7 @@
 	pop af
 	ld [wd002], a
 	ret
+
 ; 91d9b
 
 .LeftRightInput: ; 91d9b
@@ -2446,6 +2585,7 @@
 	ld a, 1 ; Kanto
 	call .GetAndPlaceNest
 	ret
+
 ; 91dcd
 
 .BlinkNestIcons: ; 91dcd
@@ -2465,6 +2605,7 @@
 	ld bc, SpritesEnd - Sprites
 	call CopyBytes
 	ret
+
 ; 91de9
 
 .PlaceString_MonsNest: ; 91de9
@@ -2487,6 +2628,7 @@
 	ld de, .String_SNest
 	call PlaceString
 	ret
+
 ; 91e16
 
 .String_SNest:
@@ -2530,12 +2672,12 @@
 	ld bc, SpritesEnd - Sprites
 	call CopyBytes
 	ret
+
 ; 91e5a
 
 .HideNestsShowPlayer: ; 91e5a
 	call .CheckPlayerLocation
 	ret c
-
 	ld a, [wd002]
 	ld e, a
 	callba GetLandmarkCoords
@@ -2546,22 +2688,18 @@
 .ShowPlayerLoop
 	ld a, [de]
 	cp $80
-	jr z, .copy
-
+	jr z, .clear_oam
 	add b
 	ld [hli], a
 	inc de
-
 	ld a, [de]
 	add c
 	ld [hli], a
 	inc de
-
 	ld a, [de]
 	add $78 ; where the player's sprite is loaded
 	ld [hli], a
 	inc de
-
 	push bc
 	ld c, 0 ; RED
 	ld a, [PlayerGender]
@@ -2572,15 +2710,15 @@
 	ld a, c
 	ld [hli], a
 	pop bc
-
 	jr .ShowPlayerLoop
 
-.copy
-	ld hl, Sprites + $10
-	ld bc, SpritesEnd - (Sprites + $10)
+.clear_oam
+	ld hl, Sprites + 4 * 4
+	ld bc, SpritesEnd - (Sprites + 4 * 4)
 	xor a
 	call ByteFill
 	ret
+
 ; 91e9c
 
 .PlayerOAM: ; 91e9c
@@ -2593,6 +2731,7 @@
 
 .CheckPlayerLocation: ; 91ea9
 ; Don't show the player's sprite if you're
+
 ; not in the same region as what's currently
 ; on the screen.
 	ld a, [wd002]
@@ -2600,7 +2739,6 @@
 	jr z, .johto
 	cp KANTO_LANDMARK
 	jr c, .johto
-
 .kanto
 	ld a, [wd003]
 	and a
@@ -2611,7 +2749,6 @@
 	ld a, [wd003]
 	and a
 	jr nz, .clear
-
 .ok
 	and a
 	ret
@@ -2623,6 +2760,7 @@
 	call ByteFill
 	scf
 	ret
+
 ; 91ed0
 
 .GetPlayerOrFastShipIcon: ; 91ed0
@@ -2636,6 +2774,7 @@
 	ld de, FastShipGFX
 	ld b, BANK(FastShipGFX)
 	ret
+
 ; 91ee4
 
 TownMapBGUpdate: ; 91ee4
@@ -2646,29 +2785,26 @@
 	ld [hBGMapAddress], a
 	ld a, h
 	ld [hBGMapAddress + 1], a
-
 ; Only update palettes on CGB
 	ld a, [hCGB]
 	and a
 	jr z, .tiles
-
 ; BG Map mode 2 (palettes)
 	ld a, 2
 	ld [hBGMapMode], a
-
 ; The BG Map is updated in thirds, so we wait
+
 ; 3 frames to update the whole screen's palettes.
 	ld c, 3
 	call DelayFrames
-
 .tiles
 ; Update BG Map tiles
 	call WaitBGMap
-
 ; Turn off BG Map update
 	xor a
 	ld [hBGMapMode], a
 	ret
+
 ; 91eff
 
 FillJohtoMap: ; 91eff
@@ -2677,7 +2813,6 @@
 
 FillKantoMap: ; 91f04
 	ld de, KantoMap
-
 FillTownMap: ; 91f07
 	hlcoord 0, 0
 .loop
@@ -2688,11 +2823,11 @@
 	ld [hli], a
 	inc de
 	jr .loop
+
 ; 91f13
 
 TownMapPals: ; 91f13
 ; Assign palettes based on tile ids
-
 	hlcoord 0, 0
 	decoord 0, 0, AttrMap
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
@@ -2700,17 +2835,15 @@
 ; Current tile
 	ld a, [hli]
 	push hl
-
 ; HP/borders use palette 0
 	cp $60
 	jr nc, .pal0
-
 ; The palette data is condensed to nybbles,
+
 ; least-significant first.
 	ld hl, TownMapPalMap
 	srl a
 	jr c, .odd
-
 ; Even-numbered tile ids take the bottom nybble...
 	add l
 	ld l, a
@@ -2735,7 +2868,6 @@
 
 .pal0
 	xor a
-
 .update
 	pop hl
 	ld [de], a
@@ -2766,16 +2898,13 @@
 	add hl, de
 	ld a, [hl]
 	ld [wd265], a
-
 ; Get FlyMon icon
 	ld e, 8 ; starting tile in VRAM
 	callba GetSpeciesIcon
-
 ; Animation/palette
 	depixel 0, 0
 	ld a, SPRITE_ANIM_INDEX_00
 	call _InitSpriteAnimStruct
-
 	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
 	ld [hl], $8
@@ -2783,19 +2912,17 @@
 	add hl, bc
 	ld [hl], SPRITE_ANIM_SEQ_NULL
 	ret
+
 ; 91fa6
 
 TownMapPlayerIcon: ; 91fa6
 ; Draw the player icon at town map location in a
 	push af
-
 	callba GetPlayerIcon
-
 ; Standing icon
 	ld hl, VTiles0 tile $10
 	ld c, 4 ; # tiles
 	call Request2bpp
-
 ; Walking icon
 	ld hl, $c0
 	add hl, de
@@ -2805,28 +2932,24 @@
 	ld c, 4 ; # tiles
 	ld a, BANK(ChrisSpriteGFX) ; does nothing
 	call Request2bpp
-
 ; Animation/palette
 	depixel 0, 0
-	ld b, SPRITE_ANIM_INDEX_WALK_CYCLE ; Male
+	ld b, SPRITE_ANIM_INDEX_RED_WALK ; Male
 	ld a, [PlayerGender]
 	bit 0, a
 	jr z, .got_gender
-	ld b, SPRITE_ANIM_INDEX_1E ; Female
+	ld b, SPRITE_ANIM_INDEX_BLUE_WALK ; Female
 .got_gender
 	ld a, b
 	call _InitSpriteAnimStruct
-
 	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
 	ld [hl], $10
-
 	pop af
 	ld e, a
 	push bc
 	callba GetLandmarkCoords
 	pop bc
-
 	ld hl, SPRITEANIMSTRUCT_XCOORD
 	add hl, bc
 	ld [hl], e
@@ -2834,6 +2957,7 @@
 	add hl, bc
 	ld [hl], d
 	ret
+
 ; 0x91ff2
 
 LoadTownMapGFX: ; 91ff2
@@ -2842,9 +2966,9 @@
 	lb bc, BANK(TownMapGFX), $30
 	call DecompressRequest2bpp
 	ret
+
 ; 91fff
 
-
 JohtoMap: ; 91fff
 INCBIN "gfx/misc/johto.bin"
 ; 92168
@@ -2855,12 +2979,10 @@
 
 PokedexNestIconGFX: ; 922d1
 INCBIN "gfx/pokegear/dexmap_nest_icon.2bpp"
-
 FlyMapLabelBorderGFX: ; 922e1
 INCBIN "gfx/pokegear/flymap_label_border.2bpp"
 
-Function92311: ; 92311
-; unreferenced
+; XXX
 	xor a
 	ld [wd002], a
 	call ClearBGPalettes
@@ -2913,7 +3035,7 @@
 
 .pressedB
 	ld a, -1
-	jr .asm_9239f
+	jr .finished_a_b
 
 .pressedA
 	ld a, [wd002]
@@ -2923,8 +3045,7 @@
 	ld de, Flypoints + 1
 	add hl, de
 	ld a, [hl]
-
-.asm_9239f
+.finished_a_b
 	ld [wd002], a
 	pop af
 	ld [hInMenu], a
@@ -2938,6 +3059,7 @@
 	ld a, [wd002]
 	ld e, a
 	ret
+
 ; 923b8
 
 .HandleDPad: ; 923b8
@@ -2968,12 +3090,10 @@
 	ld [hl], FLY_INDIGO + 1
 .okay_ul
 	dec [hl]
-
 .continue
 	ld a, [wd002]
 	cp KANTO_FLYPOINT
 	jr c, .johto
-
 	call FillKantoMap
 	xor a
 	ld b, $9c
@@ -2983,7 +3103,6 @@
 	call FillJohtoMap
 	ld a, $90
 	ld b, $98
-
 .finish
 	ld [hWY], a
 	ld a, b
@@ -2993,4 +3112,5 @@
 	xor a
 	ld [hBGMapMode], a
 	ret
+
 ; 92402
--- /dev/null
+++ b/engine/pokepic.asm
@@ -1,0 +1,49 @@
+Pokepic:: ; 244e3
+	ld hl, PokepicMenuDataHeader
+	call CopyMenuDataHeader
+	call MenuBox
+	call UpdateSprites
+	call ApplyTilemap
+	ld b, SCGB_POKEPIC
+	call GetSGBLayout
+	xor a
+	ld [hBGMapMode], a
+	ld a, [CurPartySpecies]
+	ld [CurSpecies], a
+	call GetBaseData
+	ld de, VTiles1
+	predef GetFrontpic
+	ld a, [wMenuBorderTopCoord]
+	inc a
+	ld b, a
+	ld a, [wMenuBorderLeftCoord]
+	inc a
+	ld c, a
+	call Coord2Tile
+	ld a, $80
+	ld [hGraphicStartTile], a
+	lb bc, 7, 7
+	predef PlaceGraphic
+	call WaitBGMap
+	ret
+
+ClosePokepic:: ; 24528
+	ld hl, PokepicMenuDataHeader
+	call CopyMenuDataHeader
+	call ClearMenuBoxInterior
+	call WaitBGMap
+	call GetMemSGBLayout
+	xor a
+	ld [hBGMapMode], a
+	call OverworldTextModeSwitch
+	call ApplyTilemap
+	call UpdateSprites
+	call LoadStandardFont
+	ret
+
+PokepicMenuDataHeader: ; 0x24547
+	db $40 ; flags
+	db 04, 06 ; start coords
+	db 13, 14 ; end coords
+	dw NULL
+	db 1 ; default option
--- a/engine/predef.asm
+++ b/engine/predef.asm
@@ -49,7 +49,7 @@
 	add_predef Predef_LinkTextbox ; $ 10
 	add_predef PrintMoveDesc
 	add_predef UpdatePlayerHUD
-	add_predef FillBox
+	add_predef PlaceGraphic
 	add_predef CheckPlayerPartyForFitPkmn
 	add_predef UpdateEnemyHUD
 	add_predef StartBattle
@@ -88,7 +88,7 @@
 	add_predef PlayBattleAnim
 	add_predef Predef38 ; $38
 	add_predef Predef39
-	add_predef Functionfd1d0
+	add_predef Predef3A
 	add_predef PartyMonItemName
 	add_predef GetFrontpic
 	add_predef GetBackpic
@@ -103,6 +103,6 @@
 	add_predef LoadMonAnimation
 	add_predef AnimateFrontpic
 	add_predef Functiond0669 ; $48
-	add_predef Functiond066e
+	add_predef HOF_AnimateFrontpic
 	dbw $ff, Function2d43 ; ????
 ; 864c
--- /dev/null
+++ b/engine/prof_oaks_pc.asm
@@ -1,0 +1,219 @@
+
+ProfOaksPC: ; 0x265d3
+	ld hl, OakPCText1
+	call MenuTextBox
+	call YesNoBox
+	jr c, .shutdown
+	call ProfOaksPCBoot ; player chose "yes"?
+.shutdown
+	ld hl, OakPCText4
+	call PrintText
+	call JoyWaitAorB
+	call ExitMenu
+	ret
+
+ProfOaksPCBoot ; 0x265ee
+	ld hl, OakPCText2
+	call PrintText
+	call Rate
+	call PlaySFX ; sfx loaded by previous Rate function call
+	call JoyWaitAorB
+	call WaitSFX
+	ret
+
+ProfOaksPCRating: ; 0x26601
+	call Rate
+	push de
+	ld de, MUSIC_NONE
+	call PlayMusic
+	pop de
+	call PlaySFX
+	call JoyWaitAorB
+	call WaitSFX
+	ret
+
+Rate: ; 0x26616
+; calculate Seen/Owned
+	ld hl, PokedexSeen
+	ld b, EndPokedexSeen - PokedexSeen
+	call CountSetBits
+	ld [wd002], a
+	ld hl, PokedexCaught
+	ld b, EndPokedexCaught - PokedexCaught
+	call CountSetBits
+	ld [wd003], a
+
+; print appropriate rating
+	call .UpdateRatingBuffers
+	ld hl, OakPCText3
+	call PrintText
+	call JoyWaitAorB
+	ld a, [wd003]
+	ld hl, OakRatings
+	call FindOakRating
+	push de
+	call PrintText
+	pop de
+	ret
+
+.UpdateRatingBuffers: ; 0x26647
+	ld hl, StringBuffer3
+	ld de, wd002
+	call .UpdateRatingBuffer
+	ld hl, StringBuffer4
+	ld de, wd003
+	call .UpdateRatingBuffer
+	ret
+
+.UpdateRatingBuffer: ; 0x2665a
+	push hl
+	ld a, "@"
+	ld bc, ITEM_NAME_LENGTH
+	call ByteFill
+	pop hl
+	lb bc, PRINTNUM_RIGHTALIGN | 1, 3
+	call PrintNum
+	ret
+
+FindOakRating: ; 0x2666b
+; return sound effect in de
+; return text pointer in hl
+	nop
+	ld c, a
+.loop
+	ld a, [hli]
+	cp c
+	jr nc, .match
+rept 4
+	inc hl
+endr
+	jr .loop
+
+.match
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ret
+
+OakRatings: ; 0x2667f
+oakrating: MACRO
+	db \1
+	dw \2, \3
+endm
+
+; if you caught at most this many, play this sound, load this text
+	oakrating   9, SFX_DEX_FANFARE_LESS_THAN_20, OakRating01
+	oakrating  19, SFX_DEX_FANFARE_LESS_THAN_20, OakRating02
+	oakrating  34, SFX_DEX_FANFARE_20_49,        OakRating03
+	oakrating  49, SFX_DEX_FANFARE_20_49,        OakRating04
+	oakrating  64, SFX_DEX_FANFARE_50_79,        OakRating05
+	oakrating  79, SFX_DEX_FANFARE_50_79,        OakRating06
+	oakrating  94, SFX_DEX_FANFARE_80_109,       OakRating07
+	oakrating 109, SFX_DEX_FANFARE_80_109,       OakRating08
+	oakrating 124, SFX_CAUGHT_MON,               OakRating09
+	oakrating 139, SFX_CAUGHT_MON,               OakRating10
+	oakrating 154, SFX_DEX_FANFARE_140_169,      OakRating11
+	oakrating 169, SFX_DEX_FANFARE_140_169,      OakRating12
+	oakrating 184, SFX_DEX_FANFARE_170_199,      OakRating13
+	oakrating 199, SFX_DEX_FANFARE_170_199,      OakRating14
+	oakrating 214, SFX_DEX_FANFARE_200_229,      OakRating15
+	oakrating 229, SFX_DEX_FANFARE_200_229,      OakRating16
+	oakrating 239, SFX_DEX_FANFARE_230_PLUS,     OakRating17
+	oakrating 248, SFX_DEX_FANFARE_230_PLUS,     OakRating18
+	oakrating 255, SFX_DEX_FANFARE_230_PLUS,     OakRating19
+
+OakPCText1: ; 0x266de
+	text_jump _OakPCText1
+	db "@"
+
+OakPCText2: ; 0x266e3
+	text_jump _OakPCText2
+	db "@"
+
+OakPCText3: ; 0x266e8
+	text_jump _OakPCText3
+	db "@"
+
+OakRating01:
+	text_jump _OakRating01
+	db "@"
+
+OakRating02:
+	text_jump _OakRating02
+	db "@"
+
+OakRating03:
+	text_jump _OakRating03
+	db "@"
+
+OakRating04:
+	text_jump _OakRating04
+	db "@"
+
+OakRating05:
+	text_jump _OakRating05
+	db "@"
+
+OakRating06:
+	text_jump _OakRating06
+	db "@"
+
+OakRating07:
+	text_jump _OakRating07
+	db "@"
+
+OakRating08:
+	text_jump _OakRating08
+	db "@"
+
+OakRating09:
+	text_jump _OakRating09
+	db "@"
+
+OakRating10:
+	text_jump _OakRating10
+	db "@"
+
+OakRating11:
+	text_jump _OakRating11
+	db "@"
+
+OakRating12:
+	text_jump _OakRating12
+	db "@"
+
+OakRating13:
+	text_jump _OakRating13
+	db "@"
+
+OakRating14:
+	text_jump _OakRating14
+	db "@"
+
+OakRating15:
+	text_jump _OakRating15
+	db "@"
+
+OakRating16:
+	text_jump _OakRating16
+	db "@"
+
+OakRating17:
+	text_jump _OakRating17
+	db "@"
+
+OakRating18:
+	text_jump _OakRating18
+	db "@"
+
+OakRating19:
+	text_jump _OakRating19
+	db "@"
+
+OakPCText4: ; 0x2674c
+	text_jump _OakPCText4
+	db "@"
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -2806,9 +2806,9 @@
 ;     pointer (MultiByteParam)
 
 	call GetScriptByte
-	ld [wd453], a
+	ld [wXYComparePointer], a
 	call GetScriptByte
-	ld [wd454], a
+	ld [wXYComparePointer + 1], a
 	ret
 ; 97a0e
 
--- a/engine/sprite_anims.asm
+++ b/engine/sprite_anims.asm
@@ -19,7 +19,7 @@
 	dw .two         ; bouncing mon icon, selected
 	dw .three       ; bouncing mon icon, menu open
 	dw .four
-	dw .five
+	dw .namingscreencursor
 	dw .GameFreakLogo         ; Game Freak logo
 	dw .seven
 	dw .eight
@@ -26,7 +26,7 @@
 	dw .SlotsGolem        ; Something to do with slots
 	dw .SlotsChansey         ; Something to do with slots
 	dw .SlotsChanseyEgg      ; Something to do with slots
-	dw .twelve      ; blinking cursor
+	dw .mailcompositioncursor      ; blinking cursor
 	dw .thirteen
 	dw .fourteen
 	dw .fifteen
@@ -217,12 +217,12 @@
 	ld [hl], a
 	ret
 
-.five: ; 8d36c (23:536c)
-	callab Function11a3b
+.namingscreencursor: ; 8d36c (23:536c)
+	callab NamingScreen_AnimateCursor
 	ret
 
-.twelve: ; 8d373 (23:5373)
-	callab Function120c1
+.mailcompositioncursor: ; 8d373 (23:5373)
+	callab ComposeMail_AnimateCursor
 	ret
 
 .GameFreakLogo: ; 8d37a (23:537a)
@@ -409,7 +409,7 @@
 	ret
 
 .fifteen: ; 8d475 (23:5475)
-	callab Function90d41
+	callab AnimatePokegearModeIndicatorArrow
 	ret
 
 .fourteen: ; 8d47c (23:547c)
--- a/engine/startmenu.asm
+++ b/engine/startmenu.asm
@@ -393,7 +393,7 @@
 	ld hl, StatusFlags2
 	bit 2, [hl] ; bug catching contest
 	ret z
-	callba Function24bdc
+	callba StartMenu_DrawBugContestStatusBox
 	ret
 ; 128de
 
@@ -403,7 +403,7 @@
 	jr nz, .contest
 	ret
 .contest
-	callba Function24be7
+	callba StartMenu_PrintBugContestStatus
 	ret
 ; 128ed
 
--- a/engine/tile_events.asm
+++ b/engine/tile_events.asm
@@ -1,6 +1,6 @@
 CheckWarpCollision:: ; 1499a
 ; Is this tile a warp?
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	cp $60
 	jr z, .warp
 	cp $68
@@ -19,7 +19,7 @@
 CheckDirectionalWarp:: ; 149af
 ; If this is a directional warp, clear carry (press the designated button to warp).
 ; Else, set carry (immediate warp).
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	cp $70 ; Warp on down
 	jr z, .not_warp
 	cp $76 ; Warp on left
@@ -39,7 +39,7 @@
 CheckWarpFacingDown: ; 149c6
 	ld de, 1
 	ld hl, .blocks
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	call IsInArray
 	ret
 ; 149d3
@@ -58,7 +58,7 @@
 ; 149dd
 
 CheckGrassCollision:: ; 149dd
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	ld hl, .blocks
 	ld de, 1
 	call IsInArray
@@ -98,7 +98,7 @@
 ; 14a07
 
 Function14a07:: ; 14a07
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	ld de, $1f
 	cp $71 ; door
 	ret z
--- a/engine/time.asm
+++ b/engine/time.asm
@@ -200,11 +200,9 @@
 	call CalcDaysSince
 	call GetDaysSince
 	and a
-	jr z, .done
-
+	jr z, .done ; not even a day has passed since game start
 	ld b, a
 	callba ApplyPokerusTick
-
 .done
 	xor a
 	ret
@@ -229,13 +227,13 @@
 	ret
 ; 1151c
 
-Function1151c: ; unreferenced
+; XXX
 	ld hl, DailyFlags
 	set 2, [hl]
 	ret
 ; 11522
 
-Function11522: ; unreferenced
+; XXX
 	and a
 	ld hl, DailyFlags
 	bit 2, [hl]
--- a/engine/time_capsule/conversion.asm
+++ b/engine/time_capsule/conversion.asm
@@ -367,13 +367,13 @@
 	ld a, [hSCX]
 	add -5 ; 251 ; NUM_POKEMON
 	ld [hSCX], a
-	call Functionfb8c8
+	call .ReturnFromDexRegistration
 	pop af
 	ld [hMapAnims], a
 	ret
 ; fb8c8
 
-Functionfb8c8: ; fb8c8
+.ReturnFromDexRegistration: ; fb8c8
 	call ClearTileMap
 	call LoadFontsExtra
 	call LoadStandardFont
--- a/engine/tmhm2.asm
+++ b/engine/tmhm2.asm
@@ -196,16 +196,16 @@
 	xor a
 	ld [hBGMapMode], a
 	call TMHM_DisplayPocketItems
-	ld a, $2
+	ld a, 2
 	ld [w2DMenuCursorInitY], a
-	ld a, $7
+	ld a, 7
 	ld [w2DMenuCursorInitX], a
-	ld a, $1
+	ld a, 1
 	ld [w2DMenuNumCols], a
-	ld a, $5
+	ld a, 5
 	sub d
 	inc a
-	cp $6
+	cp 6
 	jr nz, .okay
 	dec a
 .okay
--- a/engine/town_map.asm
+++ /dev/null
@@ -1,171 +1,0 @@
-
-_TownMap: ; 9191c
-	ld hl, Options
-	ld a, [hl]
-	push af
-	set NO_TEXT_SCROLL, [hl]
-
-	ld a, [hInMenu]
-	push af
-	ld a, $1
-	ld [hInMenu], a
-
-	ld a, [VramState]
-	push af
-	xor a
-	ld [VramState], a
-
-	call ClearBGPalettes
-	call ClearTileMap
-	call ClearSprites
-	call DisableLCD
-	call Function90c4e
-	callba ClearSpriteAnims
-	ld a, 8
-	call SkipMusic
-	ld a, $e3
-	ld [rLCDC], a
-	call Function90d56
-	ld [wd002], a
-	ld [wd003], a
-	xor a
-	ld [hBGMapMode], a
-	call Function91a04
-	call WaitBGMap2
-	ld a, [wd002]
-	call Function9106a
-	ld a, [wd003]
-	call Function91098
-	ld a, c
-	ld [wd004], a
-	ld a, b
-	ld [wd005], a
-	ld b, SCGB_POKEGEAR_PALS
-	call GetSGBLayout
-	call SetPalettes
-	ld a, [hCGB]
-	and a
-	jr z, .dmg
-	ld a, %11100100
-	call DmgToCgbObjPal0
-	call DelayFrame
-
-.dmg
-	ld a, [wd002]
-	cp KANTO_LANDMARK
-	jr nc, .kanto
-	ld d, KANTO_LANDMARK - 1
-	ld e, 1
-	call .loop
-	jr .resume
-
-.kanto
-	call TownMap_GetKantoLandmarkLimits
-	call .loop
-
-.resume
-	pop af
-	ld [VramState], a
-	pop af
-	ld [hInMenu], a
-	pop af
-	ld [Options], a
-	call ClearBGPalettes
-	ret
-
-.loop
-	call JoyTextDelay
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and B_BUTTON
-	ret nz
-
-	ld hl, hJoyLast
-	ld a, [hl]
-	and D_UP
-	jr nz, .pressed_up
-
-	ld a, [hl]
-	and D_DOWN
-	jr nz, .pressed_down
-.loop2
-	push de
-	callba PlaySpriteAnimations
-	pop de
-	call DelayFrame
-	jr .loop
-
-.pressed_up
-	ld hl, wd003
-	ld a, [hl]
-	cp d
-	jr c, .okay
-	ld a, e
-	dec a
-	ld [hl], a
-
-.okay
-	inc [hl]
-	jr .next
-
-.pressed_down
-	ld hl, wd003
-	ld a, [hl]
-	cp e
-	jr nz, .okay2
-	ld a, d
-	inc a
-	ld [hl], a
-
-.okay2
-	dec [hl]
-
-.next
-	push de
-	ld a, [wd003]
-	call Function910b4
-	ld a, [wd004]
-	ld c, a
-	ld a, [wd005]
-	ld b, a
-	ld a, [wd003]
-	call Function910d4
-	pop de
-	jr .loop2
-; 91a04
-
-Function91a04: ; 91a04
-	ld a, [wd002]
-	cp KANTO_LANDMARK
-	jr nc, .kanto
-	ld e, $0
-	jr .okay
-
-.kanto
-	ld e, $1
-
-.okay
-	callba PokegearMap
-	ld a, $7
-	ld bc, 6
-	hlcoord 1, 0
-	call ByteFill
-	hlcoord 0, 0
-	ld [hl], $6
-	hlcoord 7, 0
-	ld [hl], $17
-	hlcoord 7, 1
-	ld [hl], $16
-	hlcoord 7, 2
-	ld [hl], $26
-	ld a, $7
-	ld bc, NAME_LENGTH
-	hlcoord 8, 2
-	call ByteFill
-	hlcoord 19, 2
-	ld [hl], $17
-	ld a, [wd003]
-	call Function910b4
-	callba TownMapPals
-	ret
-; 91a53
--- a/engine/trade/animation.asm
+++ b/engine/trade/animation.asm
@@ -3,12 +3,12 @@
 	ld [wcf66], a
 	ld hl, wPlayerTrademonSenderName
 	ld de, wOTTrademonSenderName
-	call Function297ff
+	call LinkTradeAnim_LoadTradePlayerNames
 	ld hl, wPlayerTrademonSpecies
 	ld de, wOTTrademonSpecies
-	call Function29814
+	call LinkTradeAnim_LoadTradeMonSpecies
 	ld de, .data_28f3f
-	jr Function28fa1
+	jr RunTradeAnimSequence
 
 .data_28f3f
 	tradeanim_setup_givemon_scroll
@@ -54,12 +54,12 @@
 	ld [wcf66], a
 	ld hl, wOTTrademonSenderName
 	ld de, wPlayerTrademonSenderName
-	call Function297ff
+	call LinkTradeAnim_LoadTradePlayerNames
 	ld hl, wOTTrademonSpecies
 	ld de, wPlayerTrademonSpecies
-	call Function29814
+	call LinkTradeAnim_LoadTradeMonSpecies
 	ld de, .data_28f7e
-	jr Function28fa1
+	jr RunTradeAnimSequence
 
 .data_28f7e
 	tradeanim_ot_sends_text_2
@@ -99,7 +99,7 @@
 	tradeanim_scroll_out_right
 	tradeanim_end
 
-Function28fa1: ; 28fa1
+RunTradeAnimSequence: ; 28fa1
 	ld hl, wTradeAnimPointer
 	ld [hl], e
 	inc hl
@@ -116,7 +116,7 @@
 	ld a, [hl]
 	push af
 	set 4, [hl]
-	call Function28fdb
+	call .TradeAnimLayout
 	ld a, [wcf66]
 	and a
 	jr nz, .anim_loop
@@ -134,7 +134,7 @@
 	ret
 ; 28fdb
 
-Function28fdb: ; 28fdb
+.TradeAnimLayout: ; 28fdb
 	xor a
 	ld [wJumptableIndex], a
 	call ClearBGPalettes
@@ -145,7 +145,7 @@
 	callab ClearSpriteAnims
 	ld a, [hCGB]
 	and a
-	jr z, .asm_2900b
+	jr z, .NotCGB
 	ld a, $1
 	ld [rVBK], a
 	ld hl, VTiles0
@@ -155,7 +155,7 @@
 	ld a, $0
 	ld [rVBK], a
 
-.asm_2900b
+.NotCGB
 	hlbgcoord 0, 0
 	ld bc, sScratch - VBGMap0
 	ld a, " "
@@ -182,7 +182,7 @@
 	ld [hWY], a
 	callba GetTrademonFrontpic
 	call EnableLCD
-	call Function2982b
+	call LoadTradeBallAndCableGFX
 	ld a, [wPlayerTrademonSpecies]
 	ld hl, wPlayerTrademonDVs
 	ld de, VTiles0
@@ -313,7 +313,7 @@
 TradeAnim_TubeToOT1: ; 29129
 	ld a, $ed
 	call Function292f6
-	ld a, [wc74c]
+	ld a, [wLinkTradeSendmonSpecies]
 	ld [wd265], a
 	xor a
 	depixel 5, 11, 4, 0
@@ -323,7 +323,7 @@
 TradeAnim_TubeToPlayer1: ; 2913c
 	ld a, $ee
 	call Function292f6
-	ld a, [wc74d]
+	ld a, [wLinkTradeGetmonSpecies]
 	ld [wd265], a
 	ld a, $2
 	depixel 9, 18, 4, 4
@@ -350,7 +350,7 @@
 	ld a, $70
 	ld [hWY], a
 	call EnableLCD
-	call Function2985a
+	call LoadTradeBubbleGFX
 	pop de
 	ld a, SPRITE_ANIM_INDEX_11
 	call _InitSpriteAnimStruct
@@ -476,7 +476,7 @@
 	ld a, $90
 	ld [hWY], a
 	call EnableLCD
-	call Function2982b
+	call LoadTradeBallAndCableGFX
 	call WaitBGMap
 	call Function297ed
 	call TradeAnim_Next
@@ -864,9 +864,9 @@
 	call Function297cf
 	hlcoord 7, 2
 	xor a
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 	call WaitBGMap
 	ret
 ; 294e7
@@ -1376,10 +1376,10 @@
 	ld a, [hSGB]
 	and a
 	ld a, %11100100 ; 3,2,1,0
-	jr z, .asm_297f6
+	jr z, .not_sgb
 	ld a, $f0
 
-.asm_297f6
+.not_sgb
 	call DmgToCgbObjPal0
 	ld a, %11100100 ; 3,2,1,0
 	call DmgToCgbBGPals
@@ -1386,7 +1386,7 @@
 	ret
 ; 297ff
 
-Function297ff: ; 297ff
+LinkTradeAnim_LoadTradePlayerNames: ; 297ff
 	push de
 	ld de, wLinkPlayer1Name
 	ld bc, NAME_LENGTH
@@ -1398,11 +1398,11 @@
 	ret
 ; 29814
 
-Function29814: ; 29814
+LinkTradeAnim_LoadTradeMonSpecies: ; 29814
 	ld a, [hl]
-	ld [wc74c], a
+	ld [wLinkTradeSendmonSpecies], a
 	ld a, [de]
-	ld [wc74d], a
+	ld [wLinkTradeGetmonSpecies], a
 	ret
 ; 2981d
 
@@ -1416,7 +1416,7 @@
 	ret
 ; 2982b
 
-Function2982b: ; 2982b
+LoadTradeBallAndCableGFX: ; 2982b
 	call DelayFrame
 	ld de, TradeBallGFX
 	ld hl, VTiles0 tile $62
@@ -1431,13 +1431,13 @@
 	lb bc, BANK(TradeCableGFX), $4
 	call Request2bpp
 	xor a
-	ld hl, wc300
+	ld hl, wSpriteAnimDict
 	ld [hli], a
 	ld [hl], $62
 	ret
 ; 2985a
 
-Function2985a: ; 2985a
+LoadTradeBubbleGFX: ; 2985a
 	call DelayFrame
 	ld e, $3
 	callab Function8e83f
@@ -1446,7 +1446,7 @@
 	lb bc, BANK(TradeBubbleGFX), $4
 	call Request2bpp
 	xor a
-	ld hl, wc300
+	ld hl, wSpriteAnimDict
 	ld [hli], a
 	ld [hl], $62
 	ret
--- a/engine/trainer_card.asm
+++ b/engine/trainer_card.asm
@@ -245,8 +245,8 @@
 	hlcoord 14, 1
 	lb bc, 5, 7
 	xor a
-	ld [hFillBox], a
-	predef FillBox
+	ld [hGraphicStartTile], a
+	predef PlaceGraphic
 	ret
 
 ; 252ec (9:52ec)
--- a/engine/warp_connection.asm
+++ b/engine/warp_connection.asm
@@ -349,7 +349,7 @@
 	ret
 
 .down
-	ld a, [PlayerNextMapY]
+	ld a, [PlayerStandingMapY]
 	sub 4
 	ld b, a
 	ld a, [MapHeight]
@@ -360,7 +360,7 @@
 	ret
 
 .up
-	ld a, [PlayerNextMapY]
+	ld a, [PlayerStandingMapY]
 	sub 4
 	cp -1
 	jr z, .ok
@@ -368,7 +368,7 @@
 	ret
 
 .left
-	ld a, [PlayerNextMapX]
+	ld a, [PlayerStandingMapX]
 	sub $4
 	cp -1
 	jr z, .ok
@@ -376,7 +376,7 @@
 	ret
 
 .right
-	ld a, [PlayerNextMapX]
+	ld a, [PlayerStandingMapX]
 	sub 4
 	ld b, a
 	ld a, [MapWidth]
--- a/event/celebi.asm
+++ b/event/celebi.asm
@@ -61,8 +61,8 @@
 	inc a
 	dec c
 	jr nz, .OAMloop
-	ld hl, Sprites + $10
-	ld bc, $90
+	ld hl, Sprites + 4 * 4
+	ld bc, 36 * 4
 	xor a
 	call ByteFill
 	ret
--- a/event/field_moves.asm
+++ b/event/field_moves.asm
@@ -330,7 +330,7 @@
 	ld [VramState], a
 	call FlyFunction_InitGFX
 	depixel 10, 10, 4, 0
-	ld a, SPRITE_ANIM_INDEX_WALK_CYCLE
+	ld a, SPRITE_ANIM_INDEX_RED_WALK
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
@@ -365,7 +365,7 @@
 	ld [VramState], a
 	call FlyFunction_InitGFX
 	depixel 31, 10, 4, 0
-	ld a, SPRITE_ANIM_INDEX_WALK_CYCLE
+	ld a, SPRITE_ANIM_INDEX_RED_WALK
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
--- a/event/halloffame.asm
+++ b/event/halloffame.asm
@@ -111,7 +111,7 @@
 	jr .loop
 
 .done
-	call Function86810
+	call HOF_AnimatePlayerPic
 	ld a, $4
 	ld [MusicFade], a
 	call RotateThreePalettesRight
@@ -128,7 +128,7 @@
 	call WaitBGMap
 	decoord 6, 5
 	ld c, $6
-	predef Functiond066e
+	predef HOF_AnimateFrontpic
 	ld c, 60
 	call DelayFrames
 	and a
@@ -251,10 +251,10 @@
 	ld de, VTiles2 tile $31
 	predef GetBackpic
 	ld a, $31
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	hlcoord 6, 6
 	lb bc, 6, 6
-	predef FillBox
+	predef PlaceGraphic
 	ld a, $d0
 	ld [hSCY], a
 	ld a, $90
@@ -310,21 +310,20 @@
 	call LoadFontsBattleExtra
 	xor a
 	ld [wJumptableIndex], a
-.loop
+.MasterLoop
 	call LoadHOFTeam
 	ret c
-	call Function86665
+	call .DisplayTeam
 	ret c
 	ld hl, wJumptableIndex
 	inc [hl]
-	jr .loop
-; 86665
+	jr .MasterLoop
 
-Function86665: ; 86665
+.DisplayTeam
 	xor a
 	ld [wcf64], a
 .next
-	call Function86692
+	call .DisplayMonAndStrings
 	jr c, .start_button
 .loop
 	call JoyTextDelay
@@ -353,19 +352,18 @@
 .start_button
 	and a
 	ret
-; 86692
 
-Function86692: ; 86692
+.DisplayMonAndStrings
 ; Print the number of times the player has entered the Hall of Fame.
 ; If that number is above 200, print "HOF Master!" instead.
 	ld a, [wcf64]
-	cp $6
+	cp PARTY_LENGTH
 	jr nc, .fail
 	ld hl, wHallOfFameTempMon1
 	ld bc, wHallOfFameTempMon1End - wHallOfFameTempMon1
 	call AddNTimes
 	ld a, [hl]
-	cp $ff
+	cp -1
 	jr nz, .okay
 
 .fail
@@ -380,7 +378,7 @@
 	ld a, [wHallOfFameTempWinCount]
 	cp 200 + 1
 	jr c, .print_num_hof
-	ld de, String_866fc
+	ld de, .HOFMaster
 	hlcoord 1, 2
 	call PlaceString
 	hlcoord 13, 2
@@ -387,7 +385,7 @@
 	jr .finish
 
 .print_num_hof
-	ld de, String_8670c
+	ld de, .TimeFamer
 	hlcoord 1, 2
 	call PlaceString
 	hlcoord 2, 2
@@ -397,7 +395,7 @@
 	hlcoord 11, 2
 
 .finish
-	ld de, String_866fb
+	ld de, .EmptyString
 	call PlaceString
 	call WaitBGMap
 	ld b, SCGB_1A
@@ -405,24 +403,20 @@
 	call SetPalettes
 	decoord 6, 5
 	ld c, $6
-	predef Functiond066e
+	predef HOF_AnimateFrontpic
 	and a
 	ret
-; 866fb
 
-String_866fb:
+.EmptyString:
 	db "@"
-; 866fc
 
-String_866fc:
+.HOFMaster:
 	db "    HOF Master!@"
-; 8670c
 
-String_8670c:
+.TimeFamer:
 	db "    -Time Famer@"
 ; 8671c
 
-
 LoadHOFTeam: ; 8671c
 	ld a, [wJumptableIndex]
 	cp NUM_HOF_TEAMS
@@ -537,7 +531,7 @@
 	ret
 ; 86810
 
-Function86810: ; 86810
+HOF_AnimatePlayerPic: ; 86810
 	call ClearBGPalettes
 	ld hl, VTiles2 tile $63
 	ld de, FontExtra + 13 tiles
@@ -549,10 +543,10 @@
 	call ByteFill
 	callba GetPlayerBackpic
 	ld a, $31
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	hlcoord 6, 6
 	lb bc, 6, 6
-	predef FillBox
+	predef PlaceGraphic
 	ld a, $d0
 	ld [hSCY], a
 	ld a, $90
@@ -571,12 +565,12 @@
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, " "
 	call ByteFill
-	callba Function88840
+	callba HOF_LoadTrainerFrontpic
 	xor a
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	hlcoord 12, 5
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 	ld a, $c0
 	ld [hSCX], a
 	call WaitBGMap
--- a/event/kurt.asm
+++ b/event/kurt.asm
@@ -140,7 +140,7 @@
 	call .PlaceApricornName
 	call PlaceApricornQuantity
 	call ApplyTilemap
-	callba Function27a28
+	callba Kurt_SelectQuantity_InterpretJoypad
 	jr nc, .loop
 
 	push bc
--- a/event/mom_phone.asm
+++ b/event/mom_phone.asm
@@ -275,7 +275,7 @@
 
 	db 0 ; XXX
 
-Functionfd1d0: ; fd1d0
+Predef3A: ; fd1d0
 	ret
 ; fd1d1
 
--- a/event/photo.asm
+++ b/event/photo.asm
@@ -144,9 +144,9 @@
 	call Function16cff
 	hlcoord 1, 6
 	xor a
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 	ld de, VTiles2 tile $31
 	callba Functione0000
 	ret
@@ -228,9 +228,9 @@
 	call ByteFill
 	hlcoord 7, 11
 	ld a, $31
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 	ret
 ; 16dc7