shithub: pokecrystal

Download patch

ref: c61b3d42ad4e88b32e9c321b7fcc559ec0220e64
parent: 5098ed740d35d4f2a2d5414f309bf25e754e189c
parent: 76fe7c5aa1b93a6d03280ad54f411e351dd0abc2
author: Bryan Bishop <[email protected]>
date: Mon Aug 26 07:50:30 EDT 2013

Merge remote-tracking branch 'yenatch/merge-kanzure-again' into master

--- a/battle/effect_commands.asm
+++ b/battle/effect_commands.asm
@@ -6850,7 +6850,7 @@
 	ld a, $5
 	call Function0x3661d
 
-	ld hl, $6d45
+	ld hl, BadgeStatBoosts
 	call CallBankF
 
 	call SwitchTurn
@@ -8385,7 +8385,7 @@
 ; doubleflyingdamage
 	ld a, BATTLE_VARS_SUBSTATUS3_OPP
 	call CleanGetBattleVarPair
-	bit 6, a ; flying
+	bit SUBSTATUS_FLYING, a
 	ret z
 	jr DoubleDamage
 ; 36f2f
@@ -8395,7 +8395,7 @@
 ; doubleundergrounddamage
 	ld a, BATTLE_VARS_SUBSTATUS3_OPP
 	call CleanGetBattleVarPair
-	bit 5, a ; underground
+	bit SUBSTATUS_UNDERGROUND, a
 	ret z
 
 	; fallthrough
@@ -10623,11 +10623,7 @@
 	ld a, [AttackMissed]
 	and a
 	ret nz
-
-	ld a, $3e
-	ld hl, $7ced
-	rst FarCall
-
+	callba GetHiddenPower
 	ret
 ; 37bf4
 
--- /dev/null
+++ b/battle/hidden_power.asm
@@ -1,0 +1,108 @@
+GetHiddenPower: ; fbced
+; Override Hidden Power's type and power based on the actor's DVs.
+
+	ld hl, BattleMonDVs
+	ld a, [hBattleTurn]
+	and a
+	jr z, .GotDVs
+	ld hl, EnemyMonDVs
+.GotDVs
+
+
+; Power:
+
+; Take the top bit from...
+
+; Atk
+	ld a, [hl]
+	swap a
+	and 8
+	ld b, a
+; Def
+	ld a, [hli]
+	and 8
+	srl a
+	or b
+	ld b, a
+; Spd
+	ld a, [hl]
+	swap a
+	and 8
+	srl a
+	srl a
+	or b
+	ld b, a
+; Spc
+	ld a, [hl]
+	and 8
+	srl a
+	srl a
+	srl a
+	or b
+	ld b, a
+
+; * 5
+	add a
+	add a
+	add b
+	ld b, a
+
+; + (Spc & 3)
+	ld a, [hld]
+	and 3
+	add b
+
+; / 2
+	srl a
+
+; + 30
+	add 30
+; + 1
+	inc a
+	ld d, a
+
+
+; Type:
+
+; Def & 3
+	ld a, [hl]
+	and 3
+	ld b, a
+
+; + (Atk & 3) << 2
+	ld a, [hl]
+	and 3 << 4
+	swap a
+	add a
+	add a
+	or b
+
+; Skip Normal
+	inc a
+
+; Skip type 6 (unused)
+	cp 6
+	jr c, .GotType
+	inc a
+
+; Skip unused types between Steel and Fire
+	cp STEEL + 1
+	jr c, .GotType
+	add FIRE - (STEEL + 1)
+
+
+.GotType
+	push af
+	ld a, BATTLE_VARS_MOVE_TYPE
+	call GetBattleVarPair
+	pop af
+	ld [hl], a
+
+	ld a, d
+	push af
+	callba BattleCommand06
+	pop af
+	ld d, a
+	ret
+; fbd54
+
--- /dev/null
+++ b/battle/moves/move_descriptions.asm
@@ -1,0 +1,519 @@
+; MoveDescriptions: ; 2cb52
+	dw PoundDescription
+	dw KarateChopDescription
+	dw DoubleslapDescription
+	dw CometPunchDescription
+	dw MegaPunchDescription
+	dw PayDayDescription
+	dw FirePunchDescription
+	dw IcePunchDescription
+	dw ThunderpunchDescription
+	dw ScratchDescription
+	dw VicegripDescription
+	dw GuillotineDescription
+	dw RazorWindDescription
+	dw SwordsDanceDescription
+	dw CutDescription
+	dw GustDescription
+	dw WingAttackDescription
+	dw WhirlwindDescription
+	dw FlyDescription
+	dw BindDescription
+	dw SlamDescription
+	dw VineWhipDescription
+	dw StompDescription
+	dw DoubleKickDescription
+	dw MegaKickDescription
+	dw JumpKickDescription
+	dw RollingKickDescription
+	dw SandAttackDescription
+	dw HeadbuttDescription
+	dw HornAttackDescription
+	dw FuryAttackDescription
+	dw HornDrillDescription
+	dw TackleDescription
+	dw BodySlamDescription
+	dw WrapDescription
+	dw TakeDownDescription
+	dw ThrashDescription
+	dw DoubleEdgeDescription
+	dw TailWhipDescription
+	dw PoisonStingDescription
+	dw TwineedleDescription
+	dw PinMissileDescription
+	dw LeerDescription
+	dw BiteDescription
+	dw GrowlDescription
+	dw RoarDescription
+	dw SingDescription
+	dw SupersonicDescription
+	dw SonicboomDescription
+	dw DisableDescription
+	dw AcidDescription
+	dw EmberDescription
+	dw FlamethrowerDescription
+	dw MistDescription
+	dw WaterGunDescription
+	dw HydroPumpDescription
+	dw SurfDescription
+	dw IceBeamDescription
+	dw BlizzardDescription
+	dw PsybeamDescription
+	dw BubblebeamDescription
+	dw AuroraBeamDescription
+	dw HyperBeamDescription
+	dw PeckDescription
+	dw DrillPeckDescription
+	dw SubmissionDescription
+	dw LowKickDescription
+	dw CounterDescription
+	dw SeismicTossDescription
+	dw StrengthDescription
+	dw AbsorbDescription
+	dw MegaDrainDescription
+	dw LeechSeedDescription
+	dw GrowthDescription
+	dw RazorLeafDescription
+	dw SolarbeamDescription
+	dw PoisonpowderDescription
+	dw StunSporeDescription
+	dw SleepPowderDescription
+	dw PetalDanceDescription
+	dw StringShotDescription
+	dw DragonRageDescription
+	dw FireSpinDescription
+	dw ThundershockDescription
+	dw ThunderboltDescription
+	dw ThunderWaveDescription
+	dw ThunderDescription
+	dw RockThrowDescription
+	dw EarthquakeDescription
+	dw FissureDescription
+	dw DigDescription
+	dw ToxicDescription
+	dw ConfusionDescription
+	dw PsychicMDescription
+	dw HypnosisDescription
+	dw MeditateDescription
+	dw AgilityDescription
+	dw QuickAttackDescription
+	dw RageDescription
+	dw TeleportDescription
+	dw NightShadeDescription
+	dw MimicDescription
+	dw ScreechDescription
+	dw DoubleTeamDescription
+	dw RecoverDescription
+	dw HardenDescription
+	dw MinimizeDescription
+	dw SmokescreenDescription
+	dw ConfuseRayDescription
+	dw WithdrawDescription
+	dw DefenseCurlDescription
+	dw BarrierDescription
+	dw LightScreenDescription
+	dw HazeDescription
+	dw ReflectDescription
+	dw FocusEnergyDescription
+	dw BideDescription
+	dw MetronomeDescription
+	dw MirrorMoveDescription
+	dw SelfdestructDescription
+	dw EggBombDescription
+	dw LickDescription
+	dw SmogDescription
+	dw SludgeDescription
+	dw BoneClubDescription
+	dw FireBlastDescription
+	dw WaterfallDescription
+	dw ClampDescription
+	dw SwiftDescription
+	dw SkullBashDescription
+	dw SpikeCannonDescription
+	dw ConstrictDescription
+	dw AmnesiaDescription
+	dw KinesisDescription
+	dw SoftboiledDescription
+	dw HiJumpKickDescription
+	dw GlareDescription
+	dw DreamEaterDescription
+	dw PoisonGasDescription
+	dw BarrageDescription
+	dw LeechLifeDescription
+	dw LovelyKissDescription
+	dw SkyAttackDescription
+	dw TransformDescription
+	dw BubbleDescription
+	dw DizzyPunchDescription
+	dw SporeDescription
+	dw FlashDescription
+	dw PsywaveDescription
+	dw SplashDescription
+	dw AcidArmorDescription
+	dw CrabhammerDescription
+	dw ExplosionDescription
+	dw FurySwipesDescription
+	dw BonemerangDescription
+	dw RestDescription
+	dw RockSlideDescription
+	dw HyperFangDescription
+	dw SharpenDescription
+	dw ConversionDescription
+	dw TriAttackDescription
+	dw SuperFangDescription
+	dw SlashDescription
+	dw SubstituteDescription
+	dw StruggleDescription
+	dw SketchDescription
+	dw TripleKickDescription
+	dw ThiefDescription
+	dw SpiderWebDescription
+	dw MindReaderDescription
+	dw NightmareDescription
+	dw FlameWheelDescription
+	dw SnoreDescription
+	dw CurseDescription
+	dw FlailDescription
+	dw Conversion2Description
+	dw AeroblastDescription
+	dw CottonSporeDescription
+	dw ReversalDescription
+	dw SpiteDescription
+	dw PowderSnowDescription
+	dw ProtectDescription
+	dw MachPunchDescription
+	dw ScaryFaceDescription
+	dw FaintAttackDescription
+	dw SweetKissDescription
+	dw BellyDrumDescription
+	dw SludgeBombDescription
+	dw MudSlapDescription
+	dw OctazookaDescription
+	dw SpikesDescription
+	dw ZapCannonDescription
+	dw ForesightDescription
+	dw DestinyBondDescription
+	dw PerishSongDescription
+	dw IcyWindDescription
+	dw DetectDescription
+	dw BoneRushDescription
+	dw LockOnDescription
+	dw OutrageDescription
+	dw SandstormDescription
+	dw GigaDrainDescription
+	dw EndureDescription
+	dw CharmDescription
+	dw RolloutDescription
+	dw FalseSwipeDescription
+	dw SwaggerDescription
+	dw MilkDrinkDescription
+	dw SparkDescription
+	dw FuryCutterDescription
+	dw SteelWingDescription
+	dw MeanLookDescription
+	dw AttractDescription
+	dw SleepTalkDescription
+	dw HealBellDescription
+	dw ReturnDescription
+	dw PresentDescription
+	dw FrustrationDescription
+	dw SafeguardDescription
+	dw PainSplitDescription
+	dw SacredFireDescription
+	dw MagnitudeDescription
+	dw DynamicpunchDescription
+	dw MegahornDescription
+	dw DragonbreathDescription
+	dw BatonPassDescription
+	dw EncoreDescription
+	dw PursuitDescription
+	dw RapidSpinDescription
+	dw SweetScentDescription
+	dw IronTailDescription
+	dw MetalClawDescription
+	dw VitalThrowDescription
+	dw MorningSunDescription
+	dw SynthesisDescription
+	dw MoonlightDescription
+	dw HiddenPowerDescription
+	dw CrossChopDescription
+	dw TwisterDescription
+	dw RainDanceDescription
+	dw SunnyDayDescription
+	dw CrunchDescription
+	dw MirrorCoatDescription
+	dw PsychUpDescription
+	dw ExtremespeedDescription
+	dw AncientpowerDescription
+	dw ShadowBallDescription
+	dw FutureSightDescription
+	dw RockSmashDescription
+	dw WhirlpoolDescription
+	dw BeatUpDescription
+	dw MoveFCDescription
+	dw MoveFDDescription
+	dw MoveFEDescription
+	dw MoveFFDescription
+	dw Move00Description
+; 2cd52
+
+MoveFCDescription:
+MoveFDDescription:
+MoveFEDescription:
+MoveFFDescription:
+Move00Description:
+UnknownMoveDescription:
+	db "?@"
+
+PoundDescription:        db "Pounds with fore-", $4e, "legs or tail.@"
+KarateChopDescription:   db "Has a high criti-", $4e, "cal hit ratio.@"
+DoubleslapDescription:   db "Repeatedly slaps", $4e, "2-5 times.@"
+CometPunchDescription:   db "Repeatedly punches", $4e, "2-5 times.@"
+MegaPunchDescription:    db "A powerful punch", $4e, "thrown very hard.@"
+PayDayDescription:       db "Throws coins. Gets", $4e, "them back later.@"
+FirePunchDescription:    db "A fiery punch. May", $4e, "cause a burn.@"
+IcePunchDescription:     db "An icy punch. May", $4e, "cause freezing.@"
+ThunderpunchDescription: db "An electric punch.", $4e, "It may paralyze.@"
+ScratchDescription:      db "Scratches with", $4e, "sharp claws.@"
+VicegripDescription:     db "Grips with power-", $4e, "ful pincers.@"
+GuillotineDescription:   db "A one-hit KO,", $4e, "pincer attack.@"
+RazorWindDescription:    db "1st turn: Prepare", $4e, "2nd turn: Attack@"
+SwordsDanceDescription:  db "A dance that in-", $4e, "creases ATTACK.@"
+CutDescription:          db "Cuts using claws,", $4e, "scythes, etc.@"
+GustDescription:         db "Whips up a strong", $4e, "gust of wind.@"
+WingAttackDescription:   db "Strikes the target", $4e, "with wings.@"
+WhirlwindDescription:    db "Blows away the foe", $4e, "& ends battle.@"
+FlyDescription:          db "1st turn: Fly", $4e, "2nd turn: Attack@"
+BindDescription:         db "Binds the target", $4e, "for 2-5 turns.@"
+SlamDescription:         db "Slams the foe with", $4e, "a tail, vine, etc.@"
+VineWhipDescription:     db "Whips the foe with", $4e, "slender vines.@"
+StompDescription:        db "An attack that may", $4e, "cause flinching.@"
+DoubleKickDescription:   db "A double kicking", $4e, "attack.@"
+MegaKickDescription:     db "A powerful kicking", $4e, "attack.@"
+JumpKickDescription:     db "May miss, damaging", $4e, "the user.@"
+RollingKickDescription:  db "A fast, spinning", $4e, "kick.@"
+SandAttackDescription:   db "Reduces accuracy", $4e, "by throwing sand.@"
+HeadbuttDescription:     db "An attack that may", $4e, "make foe flinch.@"
+HornAttackDescription:   db "An attack using a", $4e, "horn to jab.@"
+FuryAttackDescription:   db "Jabs the target", $4e, "2-5 times.@"
+HornDrillDescription:    db "A one-hit KO,", $4e, "drill attack.@"
+TackleDescription:       db "A full-body charge", $4e, "attack.@"
+BodySlamDescription:     db "An attack that may", $4e, "cause paralysis.@"
+WrapDescription:         db "Squeezes the foe", $4e, "for 2-5 turns.@"
+TakeDownDescription:     db "A tackle that also", $4e, "hurts the user.@"
+ThrashDescription:       db "Works 2-3 turns", $4e, "and confuses user.@"
+DoubleEdgeDescription:   db "A tackle that also", $4e, "hurts the user.@"
+TailWhipDescription:     db "Lowers the foe's", $4e, "DEFENSE.@"
+PoisonStingDescription:  db "An attack that may", $4e, "poison the target.@"
+TwineedleDescription:    db "Jabs the foe twice", $4e, "using stingers.@"
+PinMissileDescription:   db "Fires pins that", $4e, "strike 2-5 times.@"
+LeerDescription:         db "Reduces the foe's", $4e, "DEFENSE.@"
+BiteDescription:         db "An attack that may", $4e, "cause flinching.@"
+GrowlDescription:        db "Reduces the foe's", $4e, "ATTACK.@"
+RoarDescription:         db "Scares wild foes", $4e, "to end battle.@"
+SingDescription:         db "May cause the foe", $4e, "to fall asleep.@"
+SupersonicDescription:   db "Sound waves that", $4e, "cause confusion.@"
+SonicboomDescription:    db "Always inflicts", $4e, "20HP damage.@"
+DisableDescription:      db "Disables the foe's", $4e, "most recent move.@"
+AcidDescription:         db "An attack that may", $4e, "lower DEFENSE.@"
+EmberDescription:        db "An attack that may", $4e, "inflict a burn.@"
+FlamethrowerDescription: db "An attack that may", $4e, "inflict a burn.@"
+MistDescription:         db "Prevents stat", $4e, "reduction.@"
+WaterGunDescription:     db "Squirts water to", $4e, "attack.@"
+HydroPumpDescription:    db "A powerful water-", $4e, "type attack.@"
+SurfDescription:         db "A strong water-", $4e, "type attack.@"
+IceBeamDescription:      db "An attack that may", $4e, "freeze the foe.@"
+BlizzardDescription:     db "An attack that may", $4e, "freeze the foe.@"
+PsybeamDescription:      db "An attack that may", $4e, "confuse the foe.@"
+BubblebeamDescription:   db "An attack that may", $4e, "lower SPEED.@"
+AuroraBeamDescription:   db "An attack that may", $4e, "lower ATTACK.@"
+HyperBeamDescription:    db "1st turn: Attack", $4e, "2nd turn: Rest@"
+PeckDescription:         db "Jabs the foe with", $4e, "a beak, etc.@"
+DrillPeckDescription:    db "A strong, spin-", $4e, "ning-peck attack.@"
+SubmissionDescription:   db "An attack that al-", $4e, "so hurts the user.@"
+LowKickDescription:      db "An attack that may", $4e, "cause flinching.@"
+CounterDescription:      db "Returns a physical", $4e, "blow double.@"
+SeismicTossDescription:  db "The user's level", $4e, "equals damage HP.@"
+StrengthDescription:     db "A powerful physi-", $4e, "cal attack.@"
+AbsorbDescription:       db "Steals 1/2 of the", $4e, "damage inflicted.@"
+MegaDrainDescription:    db "Steals 1/2 of the", $4e, "damage inflicted.@"
+LeechSeedDescription:    db "Steals HP from the", $4e, "foe on every turn.@"
+GrowthDescription:       db "Raises the SPCL.", $4e, "ATK rating.@"
+RazorLeafDescription:    db "Has a high criti-", $4e, "cal hit ratio.@"
+SolarbeamDescription:    db "1st turn: Prepare", $4e, "2nd turn: Attack@"
+PoisonpowderDescription: db "A move that may", $4e, "poison the foe.@"
+StunSporeDescription:    db "A move that may", $4e, "paralyze the foe.@"
+SleepPowderDescription:  db "May cause the foe", $4e, "to fall asleep.@"
+PetalDanceDescription:   db "Works 2-3 turns", $4e, "and confuses user.@"
+StringShotDescription:   db "A move that lowers", $4e, "the foe's SPEED.@"
+DragonRageDescription:   db "Always inflicts", $4e, "40HP damage.@"
+FireSpinDescription:     db "Traps foe in fire", $4e, "for 2-5 turns.@"
+ThundershockDescription: db "An attack that may", $4e, "cause paralysis.@"
+ThunderboltDescription:  db "An attack that may", $4e, "cause paralysis.@"
+ThunderWaveDescription:  db "A move that may", $4e, "cause paralysis.@"
+ThunderDescription:      db "An attack that may", $4e, "cause paralysis.@"
+RockThrowDescription:    db "Drops rocks on the", $4e, "enemy.@"
+EarthquakeDescription:   db "Tough but useless", $4e, "vs. flying foes.@"
+FissureDescription:      db "A ground-type,", $4e, "one-hit KO attack.@"
+DigDescription:          db "1st turn: Burrow", $4e, "2nd turn: Attack@"
+ToxicDescription:        db "A poison move with", $4e, "increasing damage.@"
+ConfusionDescription:    db "An attack that may", $4e, "cause confusion.@"
+PsychicMDescription:     db "An attack that may", $4e, "lower SPCL.DEF.@"
+HypnosisDescription:     db "May put the foe to", $4e, "sleep.@"
+MeditateDescription:     db "Raises the user's", $4e, "ATTACK.@"
+AgilityDescription:      db "Sharply increases", $4e, "the user's SPEED.@"
+QuickAttackDescription:  db "Lets the user get", $4e, "in the first hit.@"
+RageDescription:         db "Raises ATTACK if", $4e, "the user is hit.@"
+TeleportDescription:     db "A move for fleeing", $4e, "from battle.@"
+NightShadeDescription:   db "The user's level", $4e, "equals damage HP.@"
+MimicDescription:        db "Copies a move used", $4e, "by the foe.@"
+ScreechDescription:      db "Sharply reduces", $4e, "the foe's DEFENSE.@"
+DoubleTeamDescription:   db "Heightens evasive-", $4e, "ness.@"
+RecoverDescription:      db "Restores HP by 1/2", $4e, "the max HP.@"
+HardenDescription:       db "Raises the user's", $4e, "DEFENSE.@"
+MinimizeDescription:     db "Heightens evasive-", $4e, "ness.@"
+SmokescreenDescription:  db "Lowers the foe's", $4e, "accuracy.@"
+ConfuseRayDescription:   db "A move that causes", $4e, "confusion.@"
+WithdrawDescription:     db "Heightens the", $4e, "user's DEFENSE.@"
+DefenseCurlDescription:  db "Heightens the", $4e, "user's DEFENSE.@"
+BarrierDescription:      db "Sharply increases", $4e, "user's DEFENSE.@"
+LightScreenDescription:  db "Ups SPCL.DEF with", $4e, "a wall of light.@"
+HazeDescription:         db "Eliminates all", $4e, "stat changes.@"
+ReflectDescription:      db "Raises DEFENSE", $4e, "with a barrier.@"
+FocusEnergyDescription:  db "Raises the criti-", $4e, "cal hit ratio.@"
+BideDescription:         db "Waits 2-3 turns &", $4e, "hits back double.@"
+MetronomeDescription:    db "Randomly uses any", $4e, "#MON move.@"
+MirrorMoveDescription:   db "Counters with the", $4e, "same move.@"
+SelfdestructDescription: db "Powerful but makes", $4e, "the user faint.@"
+EggBombDescription:      db "Eggs are hurled at", $4e, "the foe.@"
+LickDescription:         db "An attack that may", $4e, "cause paralysis.@"
+SmogDescription:         db "An attack that may", $4e, "poison the foe.@"
+SludgeDescription:       db "An attack that may", $4e, "poison the foe.@"
+BoneClubDescription:     db "An attack that may", $4e, "cause flinching.@"
+FireBlastDescription:    db "An attack that", $4e, "may cause a burn.@"
+WaterfallDescription:    db "An aquatic charge", $4e, "attack.@"
+ClampDescription:        db "Traps the foe for", $4e, "2-5 turns.@"
+SwiftDescription:        db "An attack that", $4e, "never misses.@"
+SkullBashDescription:    db "1st turn: Prepare", $4e, "2nd turn: Attack@"
+SpikeCannonDescription:  db "Fires spikes to", $4e, "hit 2-5 times.@"
+ConstrictDescription:    db "An attack that may", $4e, "lower SPEED.@"
+AmnesiaDescription:      db "Sharply raises the", $4e, "user's SPCL.DEF.@"
+KinesisDescription:      db "Reduces the foe's", $4e, "accuracy.@"
+SoftboiledDescription:   db "Restores HP by 1/2", $4e, "the user's max HP.@"
+HiJumpKickDescription:   db "May miss and hurt", $4e, "the user.@"
+GlareDescription:        db "A move that may", $4e, "cause paralysis.@"
+DreamEaterDescription:   db "Steals HP from a", $4e, "sleeping victim.@"
+PoisonGasDescription:    db "A move that may", $4e, "poison the foe.@"
+BarrageDescription:      db "Throws orbs to hit", $4e, "2-5 times.@"
+LeechLifeDescription:    db "Steals 1/2 of the", $4e, "damage inflicted.@"
+LovelyKissDescription:   db "May cause the foe", $4e, "to fall asleep.@"
+SkyAttackDescription:    db "1st turn: Prepare", $4e, "2nd turn: Attack@"
+TransformDescription:    db "The user assumes", $4e, "the foe's guise.@"
+BubbleDescription:       db "An attack that may", $4e, "reduce SPEED.@"
+DizzyPunchDescription:   db "An attack that may", $4e, "cause confusion.@"
+SporeDescription:        db "A move that", $4e, "induces sleep.@"
+FlashDescription:        db "Blinds the foe to", $4e, "reduce accuracy.@"
+PsywaveDescription:      db "An attack with", $4e, "variable power.@"
+SplashDescription:       db "Has no effect", $4e, "whatsoever.@"
+AcidArmorDescription:    db "Sharply raises the", $4e, "user's DEFENSE.@"
+CrabhammerDescription:   db "Has a high criti-", $4e, "cal hit ratio.@"
+ExplosionDescription:    db "Very powerful but", $4e, "makes user faint.@"
+FurySwipesDescription:   db "Quickly scratches", $4e, "2-5 times.@"
+BonemerangDescription:   db "An attack that", $4e, "strikes twice.@"
+RestDescription:         db "Sleep for 2 turns", $4e, "to fully recover.@"
+RockSlideDescription:    db "An attack that may", $4e, "cause flinching.@"
+HyperFangDescription:    db "An attack that may", $4e, "cause flinching.@"
+SharpenDescription:      db "A move that raises", $4e, "the user's ATTACK.@"
+ConversionDescription:   db "Change user's type", $4e, "to a move's type.@"
+TriAttackDescription:    db "Fires three kinds", $4e, "of beams at once.@"
+SuperFangDescription:    db "Cuts the foe's HP", $4e, "by 1/2.@"
+SlashDescription:        db "Has a high criti-", $4e, "cal hit ratio.@"
+SubstituteDescription:   db "Makes a decoy with", $4e, "1/4 user's max HP.@"
+StruggleDescription:     db "Used only if all", $4e, "PP are exhausted.@"
+SketchDescription:       db "Copies the foe's", $4e, "move permanently.@"
+TripleKickDescription:   db "Hits three times", $4e, "with rising power.@"
+ThiefDescription:        db "An attack that may", $4e, "steal a held item.@"
+SpiderWebDescription:    db "Prevents fleeing", $4e, "or switching.@"
+MindReaderDescription:   db "Ensures the next", $4e, "attack will hit.@"
+NightmareDescription:    db "A sleeper loses", $4e, "1/4 HP every turn.@"
+FlameWheelDescription:   db "An attack that may", $4e, "cause a burn.@"
+SnoreDescription:        db "An attack useable", $4e, "only while asleep.@"
+CurseDescription:        db "Works differently", $4e, "for ghost-types.@"
+FlailDescription:        db "Stronger if the", $4e, "user's HP is low.@"
+Conversion2Description:  db "The user's type is", $4e, "made resistant.@"
+AeroblastDescription:    db "Has a high criti-", $4e, "cal hit ratio.@"
+CottonSporeDescription:  db "Sharply reduces", $4e, "the foe's SPEED.@"
+ReversalDescription:     db "Stronger if the", $4e, "user's HP is low.@"
+SpiteDescription:        db "Cuts the PP of the", $4e, "foe's last move.@"
+PowderSnowDescription:   db "An attack that may", $4e, "cause freezing.@"
+ProtectDescription:      db "Foils attack that", $4e, "turn. It may fail.@"
+MachPunchDescription:    db "A fast punch that", $4e, "lands first.@"
+ScaryFaceDescription:    db "Sharply reduces", $4e, "the foe's SPEED.@"
+FaintAttackDescription:  db "An attack that", $4e, "never misses.@"
+SweetKissDescription:    db "A move that causes", $4e, "confusion.@"
+BellyDrumDescription:    db "Reduces own HP to", $4e, "maximize ATTACK.@"
+SludgeBombDescription:   db "An attack that may", $4e, "poison the foe.@"
+MudSlapDescription:      db "Reduces the foe's", $4e, "accuracy.@"
+OctazookaDescription:    db "An attack that may", $4e, "reduce accuracy.@"
+SpikesDescription:       db "Hurts foes when", $4e, "they switch out.@"
+ZapCannonDescription:    db "An attack that", $4e, "always paralyzes.@"
+ForesightDescription:    db "Negates accuracy", $4e, "reduction moves.@"
+DestinyBondDescription:  db "The foe faints if", $4e, "the user does.@"
+PerishSongDescription:   db "Both user and foe", $4e, "faint in 3 turns.@"
+IcyWindDescription:      db "An icy attack that", $4e, "lowers SPEED.@"
+DetectDescription:       db "Evades attack that", $4e, "turn. It may fail.@"
+BoneRushDescription:     db "An attack that", $4e, "hits 2-5 times.@"
+LockOnDescription:       db "Ensures the next", $4e, "attack will hit.@"
+OutrageDescription:      db "Works 2-3 turns", $4e, "and confuses user.@"
+SandstormDescription:    db "Inflicts damage", $4e, "every turn.@"
+GigaDrainDescription:    db "Steals 1/2 of the", $4e, "damage inflicted.@"
+EndureDescription:       db "Always leaves at", $4e, "least 1HP.@"
+CharmDescription:        db "Sharply lowers the", $4e, "foe's ATTACK.@"
+RolloutDescription:      db "Attacks 5 turns", $4e, "with rising power.@"
+FalseSwipeDescription:   db "Leaves the foe", $4e, "with at least 1HP.@"
+SwaggerDescription:      db "Causes confusion", $4e, "and raises ATTACK.@"
+MilkDrinkDescription:    db "Restores HP by 1/2", $4e, "the max HP.@"
+SparkDescription:        db "An attack that may", $4e, "cause paralysis.@"
+FuryCutterDescription:   db "Successive hits", $4e, "raise power.@"
+SteelWingDescription:    db "Stiff wings strike", $4e, "the foe.@"
+MeanLookDescription:     db "Prevents fleeing", $4e, "or switching.@"
+AttractDescription:      db "Makes the opposite", $4e, "gender infatuated.@"
+SleepTalkDescription:    db "Randomly attacks", $4e, "while asleep.@"
+HealBellDescription:     db "Eliminates all", $4e, "status problems.@"
+ReturnDescription:       db "An attack that is", $4e, "based on loyalty.@"
+PresentDescription:      db "A bomb that may", $4e, "restore HP.@"
+FrustrationDescription:  db "An attack based on", $4e, "lack of loyalty.@"
+SafeguardDescription:    db "Prevents all", $4e, "status problems.@"
+PainSplitDescription:    db "Adds user & foe's", $4e, "HPs. Shares total.@"
+SacredFireDescription:   db "An attack that may", $4e, "inflict a burn.@"
+MagnitudeDescription:    db "A ground attack", $4e, "with random power.@"
+DynamicpunchDescription: db "An attack that", $4e, "always confuses.@"
+MegahornDescription:     db "A powerful charge", $4e, "attack.@"
+DragonbreathDescription: db "A strong breath", $4e, "attack.@"
+BatonPassDescription:    db "Switches while", $4e, "keeping effects.@"
+EncoreDescription:       db "Makes the foe re-", $4e, "peat 2-6 times.@"
+PursuitDescription:      db "Heavily strikes", $4e, "switching #MON.@"
+RapidSpinDescription:    db "A high-speed", $4e, "spinning attack.@"
+SweetScentDescription:   db "Reduces the foe's", $4e, "evasiveness.@"
+IronTailDescription:     db "An attack that may", $4e, "reduce DEFENSE.@"
+MetalClawDescription:    db "An attack that may", $4e, "up user's ATTACK.@"
+VitalThrowDescription:   db "A 2nd-strike move", $4e, "that never misses.@"
+MorningSunDescription:   db "Restores HP", $4e, "(varies by time).@"
+SynthesisDescription:    db "Restores HP", $4e, "(varies by time).@"
+MoonlightDescription:    db "Restores HP", $4e, "(varies by time).@"
+HiddenPowerDescription:  db "The power varies", $4e, "with the #MON.@"
+CrossChopDescription:    db "Has a high criti-", $4e, "cal hit ratio.@"
+TwisterDescription:      db "Whips up a tornado", $4e, "to attack.@"
+RainDanceDescription:    db "Boosts water-type", $4e, "moves for 5 turns.@"
+SunnyDayDescription:     db "Boosts fire-type", $4e, "moves for 5 turns.@"
+CrunchDescription:       db "An attack that may", $4e, "lower SPCL.DEF.@"
+MirrorCoatDescription:   db "Counters a SPCL.", $4e, "ATK move double.@"
+PsychUpDescription:      db "Copies the foe's", $4e, "stat changes.@"
+ExtremespeedDescription: db "A powerful first-", $4e, "strike move.@"
+AncientpowerDescription: db "An attack that may", $4e, "raise all stats.@"
+ShadowBallDescription:   db "An attack that may", $4e, "lower SPCL.DEF.@"
+FutureSightDescription:  db "An attack that", $4e, "hits on 3rd turn.@"
+RockSmashDescription:    db "An attack that may", $4e, "lower DEFENSE.@"
+WhirlpoolDescription:    db "Traps the foe for", $4e, "2-5 turns.@"
+BeatUpDescription:       db "Party #MON join", $4e, "in the attack.@"
+; 2ed44
--- a/constants.asm
+++ b/constants.asm
@@ -36,6 +36,12 @@
 	db \1 << 4 + \2
 	ENDM
 
+dt: MACRO ; three-byte (big-endian)
+	db (\1 >> 16) & $ff
+	db (\1 >> 8) & $ff
+	db \1 & $ff
+	ENDM
+
 bigdw: MACRO ; big-endian word
 	dw ((\1)/$100) + (((\1)&$ff)*$100)
 	ENDM
@@ -221,8 +227,23 @@
 PREDEF_FILLPP EQU $05
 PREDEF_ADDPARTYMON EQU $06
 PREDEF_FILLSTATS EQU $0C
+PREDEF_PRINT_MOVE_DESCRIPTION EQU $11
+PREDEF_UPDATE_PLAYER_HUD EQU $12
+PREDEF_FILL_BOX EQU $13
+PREDEF_UPDATE_ENEMY_HUD EQU $15
+PREDEF_FILL_IN_EXP_BAR EQU $17
 PREDEF_FILLMOVES EQU $1B
-PREDEF_GETUNOWNLETTER EQU $2D
+PREDEF_GET_GENDER EQU $24
+PREDEF_STATS_SCREEN EQU $25
+PREDEF_DRAW_PLAYER_HP EQU $26
+PREDEF_DRAW_ENEMY_HP EQU $27
+PREDEF_GET_TYPE_NAME EQU $29
+PREDEF_PRINT_MOVE_TYPE EQU $2A
+PREDEF_PRINT_TYPE EQU $2B
+PREDEF_GET_UNOWN_LETTER EQU $2D
+PREDEF_LOAD_SGB_LAYOUT EQU $31
+PREDEF_CHECK_CONTEST_MON EQU $33
+PREDEF_PARTYMON_ITEM_NAME EQU $3B
 PREDEF_DECOMPRESS EQU $40
 
 
@@ -245,6 +266,20 @@
 D_LEFT     EQU %00100000
 D_UP       EQU %01000000
 D_DOWN     EQU %10000000
+
+
+; screen
+HP_BAR_LENGTH EQU 6
+HP_BAR_LENGTH_PX EQU 48
+EXP_BAR_LENGTH EQU 8
+EXP_BAR_LENGTH_PX EQU 64
+
+SCREEN_WIDTH EQU 20
+SCREEN_HEIGHT EQU 18
+SCREEN_WIDTH_PX EQU 160
+SCREEN_HEIGHT_PX EQU 144
+
+TILE_WIDTH EQU 8
 
 
 ; movement
--- a/constants/music_constants.asm
+++ b/constants/music_constants.asm
@@ -149,7 +149,7 @@
 SFX_ELEVATOR_END                EQU $27
 SFX_THROW_BALL                  EQU $28
 SFX_BALL_POOF                   EQU $29
-SFX_UNKNOWN_3A                  EQU $2a
+SFX_UNKNOWN_2A                  EQU $2a
 SFX_RUN                         EQU $2b
 SFX_SLOT_MACHINE_START          EQU $2c
 SFX_FANFARE                     EQU $2d
@@ -254,7 +254,7 @@
 SFX_LEVEL_UP                    EQU $90
 SFX_KEY_ITEM                    EQU $91
 SFX_FANFARE_2                   EQU $92
-SFX_REGISTER_PHONE_#            EQU $93
+SFX_REGISTER_PHONE_NUMBER       EQU $93
 SFX_3RD_PLACE                   EQU $94
 SFX_GET_EGG_FROM_DAYCARE_MAN    EQU $95
 SFX_GET_EGG_FROM_DAYCARE_LADY   EQU $96
--- /dev/null
+++ b/engine/decompress.asm
@@ -1,0 +1,367 @@
+FarDecompress: ; b40
+; Decompress graphics data at a:hl to de
+
+; put a away for a sec
+	ld [$c2c4], a
+; save bank
+	ld a, [hROMBank]
+	push af
+; bankswitch
+	ld a, [$c2c4]
+	rst Bankswitch
+	
+; what we came here for
+	call Decompress
+	
+; restore bank
+	pop af
+	rst Bankswitch
+	ret
+; b50
+
+
+Decompress: ; b50
+; Pokemon Crystal uses an lz variant for compression.
+
+; This is mainly used for graphics, but the intro's
+; tilemaps also use this compression.
+
+; This function decompresses lz-compressed data at hl to de.
+
+
+; Basic rundown:
+
+;	A typical control command consists of:
+;		-the command (bits 5-7)
+;		-the count (bits 0-4)
+;		-and any additional params
+
+;	$ff is used as a terminator.
+
+
+;	Commands:
+
+;		0: literal
+;			literal data for some number of bytes
+;		1: iterate
+;			one byte repeated for some number of bytes
+;		2: alternate
+;			two bytes alternated for some number of bytes
+;		3: zero (whitespace)
+;			0x00 repeated for some number of bytes
+
+;	Repeater control commands have a signed parameter used to determine the start point.
+;	Wraparound is simulated:
+;		Positive values are added to the start address of the decompressed data
+;		and negative values are subtracted from the current position.
+
+;		4: repeat
+;			repeat some number of bytes from decompressed data
+;		5: flipped
+;			repeat some number of flipped bytes from decompressed data
+;			ex: $ad = %10101101 -> %10110101 = $b5
+;		6: reverse
+;			repeat some number of bytes in reverse from decompressed data
+
+;	If the value in the count needs to be larger than 5 bits,
+;	control code 7 can be used to expand the count to 10 bits.
+
+;		A new control command is read in bits 2-4.
+;		The new 10-bit count is split:
+;			bits 0-1 contain the top 2 bits
+;			another byte is added containing the latter 8
+
+;		So, the structure of the control command becomes:
+;			111xxxyy yyyyyyyy
+;			 |  |  |    |
+;            |  | our new count
+;            | the control command for this count
+;            7 (this command)
+
+; For more information, refer to the code below and in extras/gfx.py .
+
+; save starting output address
+	ld a, e
+	ld [$c2c2], a
+	ld a, d
+	ld [$c2c3], a
+	
+.loop
+; get next byte
+	ld a, [hl]
+; done?
+	cp $ff ; end
+	ret z
+
+; get control code
+	and %11100000
+	
+; 10-bit param?
+	cp $e0 ; LZ_HI
+	jr nz, .normal
+	
+	
+; 10-bit param:
+
+; get next 3 bits (%00011100)
+	ld a, [hl]
+	add a
+	add a ; << 3
+	add a
+	
+; this is our new control code
+	and %11100000
+	push af
+	
+; get param hi
+	ld a, [hli]
+	and %00000011
+	ld b, a
+	
+; get param lo
+	ld a, [hli]
+	ld c, a
+	
+; read at least 1 byte
+	inc bc
+	jr .readers
+	
+	
+.normal
+; push control code
+	push af
+; get param
+	ld a, [hli]
+	and %00011111
+	ld c, a
+	ld b, $0
+; read at least 1 byte
+	inc c
+	
+.readers
+; let's get started
+
+; inc loop counts since we bail as soon as they hit 0
+	inc b
+	inc c
+	
+; get control code
+	pop af
+; command type
+	bit 7, a ; 80, a0, c0
+	jr nz, .repeatertype
+	
+; literals
+	cp $20 ; LZ_ITER
+	jr z, .iter
+	cp $40 ; LZ_ALT
+	jr z, .alt
+	cp $60 ; LZ_ZERO
+	jr z, .zero
+	; else $00
+	
+; 00 ; LZ_LIT
+; literal data for bc bytes
+.loop1
+; done?
+	dec c
+	jr nz, .next1
+	dec b
+	jp z, .loop
+	
+.next1
+	ld a, [hli]
+	ld [de], a
+	inc de
+	jr .loop1
+	
+	
+; 20 ; LZ_ITER
+; write byte for bc bytes
+.iter
+	ld a, [hli]
+	
+.iterloop
+	dec c
+	jr nz, .iternext
+	dec b
+	jp z, .loop
+	
+.iternext
+	ld [de], a
+	inc de
+	jr .iterloop
+	
+	
+; 40 ; LZ_ALT
+; alternate two bytes for bc bytes
+
+; next pair
+.alt
+; done?
+	dec c
+	jr nz, .alt0
+	dec b
+	jp z, .altclose0
+	
+; alternate for bc
+.alt0
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec c
+	jr nz, .alt1
+; done?
+	dec b
+	jp z, .altclose1
+.alt1
+	ld a, [hld]
+	ld [de], a
+	inc de
+	jr .alt
+	
+; skip past the bytes we were alternating
+.altclose0
+	inc hl
+.altclose1
+	inc hl
+	jr .loop
+	
+	
+; 60 ; LZ_ZERO
+; write 00 for bc bytes
+.zero
+	xor a
+	
+.zeroloop
+	dec c
+	jr nz, .zeronext
+	dec b
+	jp z, .loop
+	
+.zeronext
+	ld [de], a
+	inc de
+	jr .zeroloop
+	
+	
+; repeats
+; 80, a0, c0
+; repeat decompressed data from output
+.repeatertype
+	push hl
+	push af
+; get next byte
+	ld a, [hli]
+; absolute?
+	bit 7, a
+	jr z, .absolute
+	
+; relative
+; a = -a
+	and %01111111 ; forget the bit we just looked at
+	cpl
+; add de (current output address)
+	add e
+	ld l, a
+	ld a, $ff ; -1
+	adc d
+	ld h, a
+	jr .repeaters
+	
+.absolute
+; get next byte (lo)
+	ld l, [hl]
+; last byte (hi)
+	ld h, a
+; add starting output address
+	ld a, [$c2c2]
+	add l
+	ld l, a
+	ld a, [$c2c3]
+	adc h
+	ld h, a
+	
+.repeaters
+	pop af
+	cp $80 ; LZ_REPEAT
+	jr z, .repeat
+	cp $a0 ; LZ_FLIP
+	jr z, .flip
+	cp $c0 ; LZ_REVERSE
+	jr z, .reverse
+	
+; e0 -> 80
+	
+; 80 ; LZ_REPEAT
+; repeat some decompressed data
+.repeat
+; done?
+	dec c
+	jr nz, .repeatnext
+	dec b
+	jr z, .cleanup
+	
+.repeatnext
+	ld a, [hli]
+	ld [de], a
+	inc de
+	jr .repeat
+	
+	
+; a0 ; LZ_FLIP
+; repeat some decompressed data w/ flipped bit order
+.flip
+	dec c
+	jr nz, .flipnext
+	dec b
+	jp z, .cleanup
+	
+.flipnext
+	ld a, [hli]
+	push bc
+	ld bc, $0008
+	
+.fliploop
+	rra
+	rl b
+	dec c
+	jr nz, .fliploop
+	ld a, b
+	pop bc
+	ld [de], a
+	inc de
+	jr .flip
+	
+	
+; c0 ; LZ_REVERSE
+; repeat some decompressed data in reverse
+.reverse
+	dec c
+	jr nz, .reversenext
+	
+	dec b
+	jp z, .cleanup
+	
+.reversenext
+	ld a, [hld]
+	ld [de], a
+	inc de
+	jr .reverse
+	
+	
+.cleanup
+; get type of repeat we just used
+	pop hl
+; was it relative or absolute?
+	bit 7, [hl]
+	jr nz, .next
+
+; skip two bytes for absolute
+	inc hl
+; skip one byte for relative
+.next
+	inc hl
+	jp .loop
+; c2f
+
--- /dev/null
+++ b/engine/init.asm
@@ -1,0 +1,225 @@
+Reset: ; 150
+	di
+	call CleanSoundRestart
+	xor a
+	ld [$ffde], a
+	call ClearPalettes
+	xor a
+	ld [rIF], a
+	ld a, 1 ; VBlank int
+	ld [rIE], a
+	ei
+
+	ld hl, $cfbe
+	set 7, [hl]
+
+	ld c, 32
+	call DelayFrames
+
+	jr Init
+; 16e
+
+
+_Start: ; 16e
+	cp $11
+	jr z, .asm_175
+	xor a
+	jr .asm_177
+
+.asm_175
+	ld a, $1
+
+.asm_177
+	ld [hCGB], a
+	ld a, $1
+	ld [$ffea], a
+; 17d
+
+
+Init: ; 17d
+
+	di
+
+	xor a
+	ld [rIF], a
+	ld [rIE], a
+	ld [rRP], a
+	ld [rSCX], a
+	ld [rSCY], a
+	ld [rSB], a
+	ld [rSC], a
+	ld [rWX], a
+	ld [rWY], a
+	ld [rBGP], a
+	ld [rOBP0], a
+	ld [rOBP1], a
+	ld [rTMA], a
+	ld [rTAC], a
+	ld [$d000], a
+
+	ld a, %100 ; Start timer at 4096Hz
+	ld [rTAC], a
+
+.wait
+	ld a, [rLY]
+	cp 145
+	jr nz, .wait
+
+	xor a
+	ld [rLCDC], a
+
+; Clear WRAM bank 0
+	ld hl, $c000
+	ld bc, $d000 - $c000
+.asm_1b1
+	ld [hl], 0
+	inc hl
+	dec bc
+	ld a, b
+	or c
+	jr nz, .asm_1b1
+
+	ld sp, Stack - 1
+
+; Clear HRAM
+	ld a, [hCGB]
+	push af
+	ld a, [$ffea]
+	push af
+	xor a
+	ld hl, $ff80
+	ld bc, $ffff - $ff80
+	call ByteFill
+	pop af
+	ld [$ffea], a
+	pop af
+	ld [hCGB], a
+
+	call ClearWRAM
+	ld a, 1
+	ld [rSVBK], a
+	call ClearVRAM
+	call ClearSprites
+	call Function270
+
+
+	ld a, BANK(LoadPushOAM)
+	rst Bankswitch
+
+	call LoadPushOAM
+
+	xor a
+	ld [$ffde], a
+	ld [hSCX], a
+	ld [hSCY], a
+	ld [rJOYP], a
+
+	ld a, $8 ; HBlank int enable
+	ld [rSTAT], a
+
+	ld a, $90
+	ld [hWY], a
+	ld [rWY], a
+
+	ld a, 7
+	ld [hWX], a
+	ld [rWX], a
+
+	ld a, %11100011
+	; LCD on
+	; Win tilemap 1
+	; Win on
+	; BG/Win tiledata 0
+	; BG Tilemap 0
+	; OBJ 8x8
+	; OBJ on
+	; BG on
+	ld [rLCDC], a
+
+	ld a, $ff
+	ld [$ffcb], a
+
+	callba Function9890
+
+	ld a, $9c
+	ld [$ffd7], a
+
+	xor a
+	ld [hBGMapAddress], a
+
+	callba StartClock
+
+	xor a
+	ld [MBC3LatchClock], a
+	ld [MBC3SRamEnable], a
+
+	ld a, [hCGB]
+	and a
+	jr z, .asm_22b
+	call Function2ff7
+.asm_22b
+
+	xor a
+	ld [rIF], a
+	ld a, %1111 ; VBlank, LCDStat, Timer, Serial interrupts
+	ld [rIE], a
+	ei
+
+	call DelayFrame
+
+	ld a, $30
+	call Predef
+
+	call CleanSoundRestart
+	xor a
+	ld [CurMusic], a
+	jp GameInit
+; 245
+
+
+ClearVRAM: ; 245
+; Wipe VRAM banks 0 and 1
+
+	ld a, 1
+	ld [rVBK], a
+	call .clear
+
+	xor a
+	ld [rVBK], a
+.clear
+	ld hl, VTiles0
+	ld bc, $2000
+	xor a
+	call ByteFill
+	ret
+; 25a
+
+ClearWRAM: ; 25a
+; Wipe swappable WRAM banks (1-7)
+
+	ld a, 1
+.asm_25c
+	push af
+	ld [rSVBK], a
+	xor a
+	ld hl, $d000
+	ld bc, $1000
+	call ByteFill
+	pop af
+	inc a
+	cp 8
+	jr nc, .asm_25c
+	ret
+; 270
+
+Function270: ; 270
+	ld a, $0
+	call GetSRAMBank
+	ld hl, $a000
+	ld bc, $0020
+	xor a
+	call ByteFill
+	call CloseSRAM
+	ret
+; 283
+
--- a/engine/joypad.asm
+++ b/engine/joypad.asm
@@ -103,7 +103,7 @@
 ; For example, soft reset:
 	and BUTTON_A | BUTTON_B | SELECT | START
 	cp  BUTTON_A | BUTTON_B | SELECT | START
-	jp z, $0150 ; reset
+	jp z, Reset
 	
 	ret
 ; 984
--- /dev/null
+++ b/engine/movement.asm
@@ -1,0 +1,829 @@
+MovementPointers: ; 5075
+	dw Movement_turn_head_down
+	dw Movement_turn_head_up
+	dw Movement_turn_head_left
+	dw Movement_turn_head_right
+	dw Movement_half_step_down
+	dw Movement_half_step_up
+	dw Movement_half_step_left
+	dw Movement_half_step_right
+	dw Movement_slow_step_down
+	dw Movement_slow_step_up
+	dw Movement_slow_step_left
+	dw Movement_slow_step_right
+	dw Movement_step_down
+	dw Movement_step_up
+	dw Movement_step_left
+	dw Movement_step_right
+	dw Movement_big_step_down
+	dw Movement_big_step_up
+	dw Movement_big_step_left
+	dw Movement_big_step_right
+	dw Movement_slow_slide_step_down
+	dw Movement_slow_slide_step_up
+	dw Movement_slow_slide_step_left
+	dw Movement_slow_slide_step_right
+	dw Movement_slide_step_down
+	dw Movement_slide_step_up
+	dw Movement_slide_step_left
+	dw Movement_slide_step_right
+	dw Movement_fast_slide_step_down
+	dw Movement_fast_slide_step_up
+	dw Movement_fast_slide_step_left
+	dw Movement_fast_slide_step_right
+	dw Movement_turn_away_down
+	dw Movement_turn_away_up
+	dw Movement_turn_away_left
+	dw Movement_turn_away_right
+	dw Movement_turn_in_down
+	dw Movement_turn_in_up
+	dw Movement_turn_in_left
+	dw Movement_turn_in_right
+	dw Movement_turn_waterfall_down
+	dw Movement_turn_waterfall_up
+	dw Movement_turn_waterfall_left
+	dw Movement_turn_waterfall_right
+	dw Movement_slow_jump_step_down
+	dw Movement_slow_jump_step_up
+	dw Movement_slow_jump_step_left
+	dw Movement_slow_jump_step_right
+	dw Movement_jump_step_down
+	dw Movement_jump_step_up
+	dw Movement_jump_step_left
+	dw Movement_jump_step_right
+	dw Movement_fast_jump_step_down
+	dw Movement_fast_jump_step_up
+	dw Movement_fast_jump_step_left
+	dw Movement_fast_jump_step_right
+	dw Function5293
+	dw Function529c
+	dw Movement_remove_fixed_facing
+	dw Movement_fix_facing
+	dw Function52b7
+	dw Movement_hide_person
+	dw Movement_show_person
+	dw Function5226
+	dw Function522a
+	dw Function522e
+	dw Function5232
+	dw Function5236
+	dw Function523a
+	dw Movement_accelerate_last
+	dw Movement_step_sleep
+	dw Movement_step_end
+	dw Function51db
+	dw Movement_remove_person
+	dw Function51b8
+	dw Function5210
+	dw Movement_teleport_from
+	dw Movement_teleport_to
+	dw Movement_skyfall
+	dw Movement_step_wait5
+	dw Function525f
+	dw Function5189
+	dw Function51ab
+	dw Movement_hide_emote
+	dw Movement_show_emote
+	dw Movement_step_shake
+	dw Function5279
+	dw Function5196
+	dw Function516a
+	dw Function513e
+; 5129
+
+
+Movement_teleport_from: ; 5129
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $c
+	ret
+; 5130
+
+Movement_teleport_to: ; 5130
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $d
+	ret
+; 5137
+
+Movement_skyfall: ; 5137
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $e
+	ret
+; 513e
+
+Function513e: ; 513e
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $19
+	ret
+; 5145
+
+Movement_step_wait5: ; 5145
+	call GetSpriteDirection
+	rlca
+	rlca
+	ld hl, $000c
+	add hl, bc
+	ld [hl], a
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $4
+	call Function505e
+	ld hl, $000a
+	add hl, bc
+	ld [hl], a
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $3
+	ld hl, $0007
+	add hl, bc
+	ld [hl], $ff
+	ret
+; 516a
+
+Function516a: ; 516a
+	call GetSpriteDirection
+	rlca
+	rlca
+	ld hl, $000c
+	add hl, bc
+	ld [hl], a
+	call Function505e
+	ld hl, $000a
+	add hl, bc
+	ld [hl], a
+	ld hl, $0007
+	add hl, bc
+	ld [hl], $ff
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $12
+	ret
+; 5189
+
+Function5189: ; 5189
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $6
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $10
+	ret
+; 5196
+
+Function5196: ; 5196
+	call Function505e
+	ld hl, $000a
+	add hl, bc
+	ld [hl], a
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $1
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $11
+	ret
+; 51ab
+
+Function51ab: ; 51ab
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $6
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $1
+	ret
+; 51b8
+
+Function51b8: ; 51b8
+	ld hl, $001b
+	add hl, bc
+	ld [hl], $0
+	jp Function5065
+; 51c1
+
+Movement_step_end: ; 51c1
+	call $4769
+	ld hl, $0003
+	add hl, bc
+	ld [hl], a
+	ld hl, $001b
+	add hl, bc
+	ld [hl], $0
+	ld hl, VramState
+	res 7, [hl]
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $1
+	ret
+; 51db
+
+Function51db: ; 51db
+	call $4769
+	ld hl, $0003
+	add hl, bc
+	ld [hl], a
+	ld hl, $001b
+	add hl, bc
+	ld [hl], $0
+	call Function505e
+	ld hl, $000a
+	add hl, bc
+	ld [hl], a
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $3
+	ld hl, VramState
+	res 7, [hl]
+	ret
+; 51fd
+
+Movement_remove_person: ; 51fd
+	call $4357
+	ld hl, $d4cd
+	ld a, [hConnectionStripLength]
+	cp [hl]
+	jr nz, .asm_520a
+	ld [hl], $ff
+
+.asm_520a
+	ld hl, VramState
+	res 7, [hl]
+	ret
+; 5210
+
+Function5210: ; 5210
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $1
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $4
+	ld hl, VramState
+	res 7, [hl]
+	ret
+; 5222
+
+Movement_show_person: ; 5222
+	ld a, $1
+	jr Function5247
+
+Function5226: ; 5226
+	ld a, $2
+	jr Function5247
+
+Function522a: ; 522a
+	ld a, $3
+	jr Function5247
+
+Function522e: ; 522e
+	ld a, $4
+	jr Function5247
+
+Function5232: ; 5232
+	ld a, $5
+	jr Function5247
+
+Function5236: ; 5236
+	ld a, $6
+	jr Function5247
+
+Function523a: ; 523a
+	ld a, $7
+	jr Function5247
+
+Movement_accelerate_last: ; 523e
+	ld a, $8
+	jr Function5247
+
+Movement_step_sleep: ; 5242
+; parameters:
+;	duration (DecimalParam)
+
+	call Function505e
+	jr Function5247
+
+Function5247: ; 5247
+	ld hl, $000a
+	add hl, bc
+	ld [hl], a
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $3
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $1
+	ld hl, $0007
+	add hl, bc
+	ld [hl], $ff
+	ret
+; 525f
+
+Function525f: ; 525f
+	ld a, $1
+	ld hl, $000a
+	add hl, bc
+	ld [hl], a
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $b
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $3
+	ld hl, $0007
+	add hl, bc
+	ld [hl], $ff
+	ret
+; 5279
+
+Function5279: ; 5279
+	ld a, $18
+	ld hl, $000a
+	add hl, bc
+	ld [hl], a
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $3
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $b
+	ld hl, $0007
+	add hl, bc
+	ld [hl], $ff
+	ret
+; 5293
+
+Function5293: ; 5293
+	ld hl, $0004
+	add hl, bc
+	res 3, [hl]
+	jp Function5065
+; 529c
+
+Function529c: ; 529c
+	ld hl, $0004
+	add hl, bc
+	set 3, [hl]
+	jp Function5065
+; 52a5
+
+Movement_remove_fixed_facing: ; 52a5
+	ld hl, $0004
+	add hl, bc
+	res 2, [hl]
+	jp Function5065
+; 52ae
+
+Movement_fix_facing: ; 52ae
+	ld hl, $0004
+	add hl, bc
+	set 2, [hl]
+	jp Function5065
+; 52b7
+
+Function52b7: ; 52b7
+	ld hl, $0004
+	add hl, bc
+	res 0, [hl]
+	jp Function5065
+; 52c0
+
+Movement_hide_person: ; 52c0
+	ld hl, $0004
+	add hl, bc
+	set 0, [hl]
+	jp Function5065
+; 52c9
+
+Movement_hide_emote: ; 52c9
+	call $5579
+	jp Function5065
+; 52cf
+
+Movement_show_emote: ; 52cf
+	call $5547
+	jp Function5065
+; 52d5
+
+Movement_step_shake: ; 52d5
+; parameters:
+;	displacement (DecimalParam)
+
+	call Function505e
+	call $5565
+	jp Function5065
+; 52de
+
+Movement_turn_head_down: ; 52de
+	ld a, $0
+	jr Function52ee
+
+Movement_turn_head_up: ; 52e2
+	ld a, $4
+	jr Function52ee
+
+Movement_turn_head_left: ; 52e6
+	ld a, $8
+	jr Function52ee
+
+Movement_turn_head_right: ; 52ea
+	ld a, $c
+	jr Function52ee
+
+Function52ee: ; 52ee
+	ld hl, $0008
+	add hl, bc
+	ld [hl], a
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $1
+	ld hl, $0007
+	add hl, bc
+	ld [hl], $ff
+	ret
+; 5300
+
+Movement_slow_step_down: ; 5300
+	ld a, $0
+	jp Function5412
+; 5305
+
+Movement_slow_step_up: ; 5305
+	ld a, $1
+	jp Function5412
+; 530a
+
+Movement_slow_step_left: ; 530a
+	ld a, $2
+	jp Function5412
+; 530f
+
+Movement_slow_step_right: ; 530f
+	ld a, $3
+	jp Function5412
+; 5314
+
+Movement_step_down: ; 5314
+	ld a, $4
+	jp Function5412
+; 5319
+
+Movement_step_up: ; 5319
+	ld a, $5
+	jp Function5412
+; 531e
+
+Movement_step_left: ; 531e
+	ld a, $6
+	jp Function5412
+; 5323
+
+Movement_step_right: ; 5323
+	ld a, $7
+	jp Function5412
+; 5328
+
+Movement_big_step_down: ; 5328
+	ld a, $8
+	jp Function5412
+; 532d
+
+Movement_big_step_up: ; 532d
+	ld a, $9
+	jp Function5412
+; 5332
+
+Movement_big_step_left: ; 5332
+	ld a, $a
+	jp Function5412
+; 5337
+
+Movement_big_step_right: ; 5337
+	ld a, $b
+	jp Function5412
+; 533c
+
+
+Movement_turn_away_down: ; 533c
+	ld a, $0
+	jp Function5446
+; 5341
+
+Movement_turn_away_up: ; 5341
+	ld a, $1
+	jp Function5446
+; 5346
+
+Movement_turn_away_left: ; 5346
+	ld a, $2
+	jp Function5446
+; 534b
+
+Movement_turn_away_right: ; 534b
+	ld a, $3
+	jp Function5446
+; 5350
+
+Movement_turn_in_down: ; 5350
+	ld a, $4
+	jp Function5446
+; 5355
+
+Movement_turn_in_up: ; 5355
+	ld a, $5
+	jp Function5446
+; 535a
+
+Movement_turn_in_left: ; 535a
+	ld a, $6
+	jp Function5446
+; 535f
+
+Movement_turn_in_right: ; 535f
+	ld a, $7
+	jp Function5446
+; 5364
+
+Movement_turn_waterfall_down: ; 5364
+	ld a, $8
+	jp Function5446
+; 5369
+
+Movement_turn_waterfall_up: ; 5369
+	ld a, $9
+	jp Function5446
+; 536e
+
+Movement_turn_waterfall_left: ; 536e
+	ld a, $a
+	jp Function5446
+; 5373
+
+Movement_turn_waterfall_right: ; 5373
+	ld a, $b
+	jp Function5446
+; 5378
+
+
+Movement_slow_slide_step_down: ; 5378
+	ld a, $0
+	jp Function5468
+; 537d
+
+Movement_slow_slide_step_up: ; 537d
+	ld a, $1
+	jp Function5468
+; 5382
+
+Movement_slow_slide_step_left: ; 5382
+	ld a, $2
+	jp Function5468
+; 5387
+
+Movement_slow_slide_step_right: ; 5387
+	ld a, $3
+	jp Function5468
+; 538c
+
+Movement_slide_step_down: ; 538c
+	ld a, $4
+	jp Function5468
+; 5391
+
+Movement_slide_step_up: ; 5391
+	ld a, $5
+	jp Function5468
+; 5396
+
+Movement_slide_step_left: ; 5396
+	ld a, $6
+	jp Function5468
+; 539b
+
+Movement_slide_step_right: ; 539b
+	ld a, $7
+	jp Function5468
+; 53a0
+
+Movement_fast_slide_step_down: ; 53a0
+	ld a, $8
+	jp Function5468
+; 53a5
+
+Movement_fast_slide_step_up: ; 53a5
+	ld a, $9
+	jp Function5468
+; 53aa
+
+Movement_fast_slide_step_left: ; 53aa
+	ld a, $a
+	jp Function5468
+; 53af
+
+Movement_fast_slide_step_right: ; 53af
+	ld a, $b
+	jp Function5468
+; 53b4
+
+
+Movement_slow_jump_step_down: ; 53b4
+	ld a, $0
+	jp Function548a
+; 53b9
+
+Movement_slow_jump_step_up: ; 53b9
+	ld a, $1
+	jp Function548a
+; 53be
+
+Movement_slow_jump_step_left: ; 53be
+	ld a, $2
+	jp Function548a
+; 53c3
+
+Movement_slow_jump_step_right: ; 53c3
+	ld a, $3
+	jp Function548a
+; 53c8
+
+Movement_jump_step_down: ; 53c8
+	ld a, $4
+	jp Function548a
+; 53cd
+
+Movement_jump_step_up: ; 53cd
+	ld a, $5
+	jp Function548a
+; 53d2
+
+Movement_jump_step_left: ; 53d2
+	ld a, $6
+	jp Function548a
+; 53d7
+
+Movement_jump_step_right: ; 53d7
+	ld a, $7
+	jp Function548a
+; 53dc
+
+Movement_fast_jump_step_down: ; 53dc
+	ld a, $8
+	jp Function548a
+; 53e1
+
+Movement_fast_jump_step_up: ; 53e1
+	ld a, $9
+	jp Function548a
+; 53e6
+
+Movement_fast_jump_step_left: ; 53e6
+	ld a, $a
+	jp Function548a
+; 53eb
+
+Movement_fast_jump_step_right: ; 53eb
+	ld a, $b
+	jp Function548a
+; 53f0
+
+
+Movement_half_step_down: ; 53f0
+	ld a, $0
+	jr Function5400
+
+Movement_half_step_up: ; 53f4
+	ld a, $4
+	jr Function5400
+
+Movement_half_step_left: ; 53f8
+	ld a, $8
+	jr Function5400
+
+Movement_half_step_right: ; 53fc
+	ld a, $c
+	jr Function5400
+
+Function5400: ; 5400
+	ld hl, $001d
+	add hl, bc
+	ld [hl], a
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $2
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $a
+	ret
+; 5412
+
+Function5412: ; 5412
+	call $4690
+	call $463f
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $2
+	ld hl, $000e
+	add hl, bc
+	ld a, [hl]
+	call $188e
+	jr z, .asm_542d
+	call $1875
+	jr c, .asm_5430
+
+.asm_542d
+	call $5556
+
+.asm_5430
+	ld hl, $d4cf
+	ld a, [hConnectionStripLength]
+	cp [hl]
+	jr z, .asm_543f
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $2
+	ret
+
+.asm_543f
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $6
+	ret
+; 5446
+
+Function5446: ; 5446
+	call $4690
+	call $463f
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $4
+	ld hl, $d4cf
+	ld a, [hConnectionStripLength]
+	cp [hl]
+	jr z, .asm_5461
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $2
+	ret
+
+.asm_5461
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $6
+	ret
+; 5468
+
+
+Function5468: ; 5468
+	call $4690
+	call $463f
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $1
+	ld hl, $d4cf
+	ld a, [hConnectionStripLength]
+	cp [hl]
+	jr z, .asm_5483
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $2
+	ret
+
+.asm_5483
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $6
+	ret
+; 548a
+
+
+Function548a: ; 548a
+	call $4690
+	ld hl, $001f
+	add hl, bc
+	ld [hl], $0
+	ld hl, $0005
+	add hl, bc
+	res 3, [hl]
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $2
+	call $5529
+	ld hl, $d4cf
+	ld a, [hConnectionStripLength]
+	cp [hl]
+	jr z, .asm_54b1
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $8
+	ret
+
+.asm_54b1
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $9
+	ret
+; 54b8
+
+
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -485,11 +485,11 @@
 ;     item (ItemLabelByte)
 ;     quantity (DecimalParam)
 
-	call $77ca
+	call Script_giveitem
 	call CurItemName
 	ld de, StringBuffer1
 	ld a, $1
-	call $76c8
+	call Function976c8
 	ld b, BANK(GiveItemScript)
 	ld de, GiveItemScript
 	jp ScriptCall
@@ -535,7 +535,7 @@
 .asm_96f98
 	ld [$d106], a
 	call GetScriptByte
-	call $769e
+	call Unknown_0x9769e
 	ld a, [de]
 	ld [$d10c], a
 	ld hl, $d892
@@ -548,7 +548,7 @@
 	call CurItemName
 	ld de, StringBuffer1
 	ld a, $1
-	call $76c8
+	call Function976c8
 	ld b, BANK(GiveItemScript)
 	ld de, GiveItemScript
 	jp ScriptCall
@@ -1021,6 +1021,9 @@
 	call GetScriptByte
 	call Unknown_0x971e3
 	ld c, a
+; 971fa
+
+Function971fa: ; 971fa
 	push bc
 	ld a, c
 	ld a, $1
@@ -1028,7 +1031,7 @@
 	rst $8
 	pop bc
 	push bc
-	call $7221
+	call Unknown_0x97221
 	pop bc
 	call GetScriptByte
 	ld l, a
@@ -1058,7 +1061,7 @@
 
 	ld a, [$ffe0]
 	ld c, a
-	jp $71fa
+	jp Function971fa
 ; 0x9722e
 
 Script_faceplayer: ; 0x9722e
@@ -1079,7 +1082,7 @@
 	ld e, a
 	ld a, [$ffe0]
 	ld d, a
-	call $728b
+	call Unknown_0x9728b
 	ret
 ; 0x97248
 
@@ -1114,7 +1117,7 @@
 	add a
 	ld e, a
 	ld d, c
-	call $728b
+	call Unknown_0x9728b
 	ret
 ; 0x97274
 
@@ -1135,7 +1138,7 @@
 	add a
 	add a
 	ld e, a
-	call $728b
+	call Unknown_0x9728b
 	ret
 ; 0x9728b
 
@@ -1161,7 +1164,7 @@
 	ld hl, $d0ed
 	bit 6, [hl]
 	jr nz, .asm_972b5 ; 0x972b0 $3
-	call $72bc
+	call Unknown_0x972bc
 .asm_972b5
 	call $1ad2
 	ret
@@ -1173,7 +1176,7 @@
 
 Unknown_0x972bc: ; 0x972bc
 	call $217a
-	ld hl, $c4a0
+	ld hl, TileMap
 	ld bc, $0168
 .asm_972c5
 	res 7, [hl]
@@ -1211,7 +1214,7 @@
 	call $1956
 	ld a, [$ffaf]
 	ld b, $0
-	call $730b
+	call Unknown_0x9730b
 	ret
 ; 0x972ee
 
@@ -1229,7 +1232,7 @@
 	call $199f
 	ld a, [$ffaf]
 	ld b, $1
-	call $730b
+	call Unknown_0x9730b
 	ld a, $1
 	ld hl, $5920
 	rst $8
@@ -1543,9 +1546,7 @@
 	jr z, .asm_9748e ; 0x97481 $b
 	ld b, $24
 	ld de, $4255
-	ld a, $25
-	ld hl, $7c4f
-	rst $8
+	callba Function97c4f
 .asm_9748e
 	jp Script_reloadmap
 ; 0x97491
@@ -1978,7 +1979,7 @@
 	and a
 	ret z
 	ld c, a
-	call $7673
+	call Unknown_0x97673
 	and a
 	jr z, .asm_9765f ; 0x9764d $10
 	ld b, a
@@ -2027,7 +2028,7 @@
 ;     variable_id (SingleByteParam)
 
 	call GetScriptByte
-	call $769e
+	call Unknown_0x9769e
 	ld a, [de]
 	ld [$c2dd], a
 	ret
@@ -2039,7 +2040,7 @@
 ;     variable_id (SingleByteParam)
 
 	call GetScriptByte
-	call $769e
+	call Unknown_0x9769e
 	ld a, [$c2dd]
 	ld [de], a
 	ret
@@ -2052,7 +2053,7 @@
 ;     value (SingleByteParam)
 
 	call GetScriptByte
-	call $769e
+	call Unknown_0x9769e
 	call GetScriptByte
 	ld [de], a
 	ret
@@ -2096,9 +2097,12 @@
 Unknown_976c0: ; 0x976c0
 	call GetScriptByte
 	cp $3
-	jr c, .asm_976c8 ; 0x976c5 $1
+	jr c, .asm_976c8
 	xor a
 .asm_976c8
+; 976c8
+
+Function976c8: ; 976c8
 	ld hl, StringBuffer3
 	ld bc, 19
 	call AddNTimes
@@ -2197,8 +2201,8 @@
 ;     account (SingleByteParam)
 ;     memory (SingleByteParam)
 
-	call $7771
-	call $7861
+	call Unknown_0x97771
+	call Unknown_0x97861
 	ld hl, StringBuffer1
 	ld bc, $4306
 	call $3198
@@ -2211,7 +2215,7 @@
 ; parameters:
 ;     memory (SingleByteParam)
 
-	call $7771
+	call Unknown_0x97771
 	ld hl, StringBuffer1
 	ld de, $d855
 	ld bc, $4206
@@ -2225,7 +2229,7 @@
 ; parameters:
 ;     memory (SingleByteParam)
 
-	call $7771
+	call Unknown_0x97771
 	ld de, $c2dd
 	ld hl, StringBuffer1
 	ld bc, $4103
@@ -2372,8 +2376,8 @@
 ;     account (SingleByteParam)
 ;     money (MoneyByteParam)
 
-	call $7861
-	call $786d
+	call Unknown_0x97861
+	call Unknown_0x9786d
 	ld a, $5
 	ld hl, $5fd7
 	rst $8
@@ -2386,8 +2390,8 @@
 ;     account (SingleByteParam)
 ;     money (MoneyByteParam)
 
-	call $7861
-	call $786d
+	call Unknown_0x97861
+	call Unknown_0x9786d
 	ld a, $5
 	ld hl, $5ffa
 	rst $8
@@ -2400,8 +2404,8 @@
 ;     account (SingleByteParam)
 ;     money (MoneyByteParam)
 
-	call $7861
-	call $786d
+	call Unknown_0x97861
+	call Unknown_0x9786d
 	ld a, $5
 	ld hl, $600b
 	rst $8
@@ -2451,7 +2455,7 @@
 ; parameters:
 ;     coins (CoinByteParam)
 
-	call $78a0
+	call Function978a0
 	ld a, $5
 	ld hl, $606f
 	rst $8
@@ -2463,7 +2467,7 @@
 ; parameters:
 ;     coins (CoinByteParam)
 
-	call $78a0
+	call Function978a0
 	ld a, $5
 	ld hl, $608f
 	rst $8
@@ -2475,11 +2479,14 @@
 ; parameters:
 ;     coins (CoinByteParam)
 
-	call $78a0
+	call Function978a0
 	ld a, $5
 	ld hl, $60a1
 	rst $8
-	jr Unknown_9784f ; 0x9789e $af
+	jr Unknown_9784f
+; 978a0
+
+Function978a0: ; 978a0
 	call GetScriptByte
 	ld [$ffc4], a
 	call GetScriptByte
@@ -2718,7 +2725,7 @@
 	call GetScriptByte
 	ld d, a
 	ld b, $1
-	call $79ee
+	call Unknown_0x979ee
 	ret
 ; 0x979c9
 
@@ -2732,7 +2739,7 @@
 	call GetScriptByte
 	ld d, a
 	ld b, $0
-	call $79ee
+	call Unknown_0x979ee
 	ret
 ; 0x979d7
 
@@ -2746,7 +2753,7 @@
 	call GetScriptByte
 	ld d, a
 	ld b, $2
-	call $79ee
+	call Unknown_0x979ee
 	ld a, c
 	and a
 	jr z, .asm_979ea ; 0x979e6 $2
@@ -2897,9 +2904,7 @@
 	ld d, a
 	ld a, [ScriptBank]
 	ld b, a
-	ld a, $25
-	ld hl, $7e31
-	rst $8
+	callba Function97e31
 	ret
 ; 0x97a9e
 
@@ -2912,9 +2917,7 @@
 	ld [$c2dd], a
 	call GetScriptByte
 	ld b, a
-	ld a, $25
-	ld hl, $7e5c
-	rst $8
+	callba Function97e5c
 	ret c
 	ld a, $1
 	ld [$c2dd], a
@@ -2976,16 +2979,12 @@
 
 	call $224a
 	ret nc
-	ld a, $25
-	ld hl, $66d0
-	rst $8
+	callba Function966d0
 	ret
 ; 0x97b01
 
 Unknown_0x97b01: ; 0x97b01
-	ld a, $25
-	ld hl, $66d0
-	rst $8
+	callba Function966d0
 	ret
 ; 0x97b08
 
@@ -3005,7 +3004,7 @@
 Script_reloadandreturn: ; 0x97b16
 ; script command 0x92
 
-	call $7b08
+	call Script_newloadmap
 	jp Script_end
 ; 0x97b1c
 
@@ -3203,8 +3202,9 @@
 	ld hl, $6455
 	rst $8
 	; fallthrough
+
 DisplayCredits:
-	call $7bc0
+	call Script_resetfuncs
 	ld a, $3
 	call $261b
 	call StopScript
--- /dev/null
+++ b/engine/text.asm
@@ -1,0 +1,1229 @@
+ClearBox: ; fb6
+; Fill a c*b box at hl with blank tiles.
+
+	ld a, " "
+.y
+	push bc
+	push hl
+.x
+	ld [hli], a
+	dec c
+	jr nz, .x
+	pop hl
+	ld bc, 20 ; screen width
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .y
+	ret
+; fc8
+
+
+ClearTileMap: ; fc8
+; Fill TileMap with blank tiles.
+
+	ld hl, TileMap
+	ld a, " "
+	ld bc, 360 ; screen dimensions 20*18
+	call ByteFill
+	
+; We aren't done if the LCD is on.
+	ld a, [rLCDC]
+	bit 7, a
+	ret z
+	jp WaitBGMap
+; fdb
+
+
+Functionfdb: ; fdb
+	ld a, $7
+	ld hl, AttrMap
+	ld bc, $0168
+	call ByteFill
+	jr ClearTileMap
+; fe8
+
+
+
+TextBox: ; fe8
+; Draw a text box width c height b at hl
+; Dimensions do not include the border.
+	push bc
+	push hl
+	call TextBoxBorder
+	pop hl
+	pop bc
+	jr TextBoxPalette
+; ff1
+
+
+TextBoxBorder: ; ff1
+
+; Top
+	push hl
+	ld a, "┌"
+	ld [hli], a
+	inc a ; "─"
+	call NPlaceChar
+	inc a ; "┐"
+	ld [hl], a
+
+; Middle
+	pop hl
+	ld de, 20 ; screen width
+	add hl, de
+.PlaceRow
+	push hl
+	ld a, "│"
+	ld [hli], a
+	ld a, " "
+	call NPlaceChar
+	ld [hl], "│"
+	pop hl
+	ld de, 20 ; screen width
+	add hl, de
+	dec b
+	jr nz, .PlaceRow
+
+; Bottom
+	ld a, "└"
+	ld [hli], a
+	ld a, "─"
+	call NPlaceChar
+	ld [hl], "┘"
+
+	ret
+; 101e
+
+
+NPlaceChar: ; 101e
+; Place char a c times
+	ld d,c
+.loop
+	ld [hli],a
+	dec d
+	jr nz, .loop
+	ret
+; 1024
+
+
+TextBoxPalette: ; 1024
+; Fill text box width c height b at hl with pal 7
+	ld de, AttrMap - TileMap
+	add hl, de
+	inc b
+	inc b
+	inc c
+	inc c
+	ld a, 7 ; pal
+.gotoy
+	push bc
+	push hl
+.gotox
+	ld [hli], a
+	dec c
+	jr nz, .gotox
+	pop hl
+	ld de, 20 ; screen width
+	add hl, de
+	pop bc
+	dec b
+	jr nz, .gotoy
+	ret
+; 103e
+
+
+SpeechTextBox: ; 103e
+; Standard textbox.
+	hlcoord 0, 12
+	ld b, 4 ; height
+	ld c, 18 ; screen width - 2 (border)
+	jp TextBox
+; 1048
+
+UnknownText_0x1048: ; 1048
+	db $0, "ゲームフりーク!", $57
+; 1052
+
+Function1052: ; 1052
+	ld hl, .text_1056
+	ret
+.text_1056
+	db "@"
+; 1057
+
+
+PrintText: ; 1057
+	call Function106c
+	push hl
+	hlcoord 1, 14
+	ld bc, 18 + 3<<8
+	call ClearBox
+	pop hl
+
+PrintTextBoxText: ; 1065
+	bccoord 1, 14
+	call Function13e5
+	ret
+; 106c
+
+
+Function106c: ; 106c
+	push hl
+	call SpeechTextBox
+	call Function1ad2
+	call Function321c
+	pop hl
+	ret
+; 1078
+
+
+
+PlaceString: ; 1078
+	push hl
+
+PlaceNextChar: ; 1079
+	ld a, [de]
+	cp "@"
+	jr nz, CheckDict
+	ld b, h
+	ld c, l
+	pop hl
+	ret
+	pop de
+
+NextChar: ; 1083
+	inc de
+	jp PlaceNextChar
+
+CheckDict: ; 1087
+	cp $15
+	jp z, Function117b
+	cp $4f
+	jp z, Char4F
+	cp $4e
+	jp z, Function12a7
+	cp $16
+	jp z, Function12b9
+	and a
+	jp z, Function1383
+	cp $4c
+	jp z, $1337
+	cp $4b
+	jp z, Char4B
+	cp $51 ; Player name
+	jp z, Function12f2
+	cp $49
+	jp z, Function1186
+	cp $52 ; Mother name
+	jp z, Function118d
+	cp $53
+	jp z, Function1194
+	cp $35
+	jp z, Function11e8
+	cp $36
+	jp z, Function11ef
+	cp $37
+	jp z, Function11f6
+	cp $38
+	jp z, Function119b
+	cp $39
+	jp z, Function11a2
+	cp $54
+	jp z, Function11c5
+	cp $5b
+	jp z, Function11b7
+	cp $5e
+	jp z, Function11be
+	cp $5c
+	jp z, Function11b0
+	cp $5d
+	jp z, Function11a9
+	cp $23
+	jp z, Function11cc
+	cp $22
+	jp z, Function12b0
+	cp $55
+	jp z, Char55
+	cp $56
+	jp z, Function11d3
+	cp $57
+	jp z, $137c
+	cp $58
+	jp z, Function135a
+	cp $4a
+	jp z, Function11da
+	cp $24
+	jp z, Function11e1
+	cp $25
+	jp z, NextChar
+	cp $1f
+	jr nz, .asm_1122
+	ld a, $7f
+.asm_1122
+	cp $5f
+	jp z, Char5F
+	cp $59
+	jp z, Function11fd
+	cp $5a
+	jp z, Char5D
+	cp $3f
+	jp z, $121b
+	cp $14
+	jp z, $1252
+	cp $e4
+	jr z, .asm_1174 ; 0x113d $35
+	cp $e5
+	jr z, .asm_1174 ; 0x1141 $31
+	jr .asm_114c ; 0x1143 $7
+	ld b, a
+	call Function13c6
+	jp NextChar
+.asm_114c
+	cp $60
+	jr nc, .asm_1174 ; 0x114e $24
+	cp $40
+	jr nc, .asm_1165 ; 0x1152 $11
+	cp $20
+	jr nc, .asm_115c ; 0x1156 $4
+	add $80
+	jr .asm_115e ; 0x115a $2
+.asm_115c
+	add $90
+.asm_115e
+	ld b, $e5
+	call Function13c6
+	jr .asm_1174 ; 0x1163 $f
+.asm_1165
+	cp $44
+	jr nc, .asm_116d ; 0x1167 $4
+	add $59
+	jr .asm_116f ; 0x116b $2
+.asm_116d
+	add $86
+.asm_116f
+	ld b, $e4
+	call Function13c6
+.asm_1174
+	ld [hli], a
+	call PrintLetterDelay
+	jp NextChar
+; 0x117b
+
+
+Function117b: ; 117b
+	ld c, l
+	ld b, h
+	ld a, $5f
+	ld hl, $7036
+	rst FarCall
+	jp PlaceNextChar
+; 1186
+
+Function1186: ; 1186
+	push de
+	ld de, MomsName
+	jp $126a
+; 118d
+
+Function118d: ; 118d
+	push de
+	ld de, PlayerName
+	jp $126a
+; 1194
+
+Function1194: ; 1194
+	push de
+	ld de, RivalName
+	jp $126a
+; 119b
+
+Function119b: ; 119b
+	push de
+	ld de, RedsName
+	jp $126a
+; 11a2
+
+Function11a2: ; 11a2
+	push de
+	ld de, GreensName
+	jp $126a
+; 11a9
+
+Function11a9: ; 11a9
+	push de
+	ld de, Char5DText
+	jp $126a
+; 11b0
+
+Function11b0: ; 11b0
+	push de
+	ld de, Char5CText
+	jp $126a
+; 11b7
+
+Function11b7: ; 11b7
+	push de
+	ld de, Char5BText
+	jp $126a
+; 11be
+
+Function11be: ; 11be
+	push de
+	ld de, Char5EText
+	jp $126a
+; 11c5
+
+Function11c5: ; 11c5
+	push de
+	ld de, Char54Text
+	jp $126a
+; 11cc
+
+Function11cc: ; 11cc
+	push de
+	ld de, Char23Text
+	jp $126a
+; 11d3
+
+Function11d3: ; 11d3
+	push de
+	ld de, $1292
+	jp $126a
+; 11da
+
+Function11da: ; 11da
+	push de
+	ld de, Char4AText
+	jp $126a
+; 11e1
+
+Function11e1: ; 11e1
+	push de
+	ld de, Char24Text
+	jp $126a
+; 11e8
+
+Function11e8: ; 11e8
+	push de
+	ld de, Char37Text
+	jp $126a
+; 11ef
+
+Function11ef: ; 11ef
+	push de
+	ld de, Char37Text
+	jp $126a
+; 11f6
+
+Function11f6: ; 11f6
+	push de
+	ld de, Char37Text
+	jp $126a
+; 11fd
+
+
+Function11fd: ; 11fd
+	ld a, [hBattleTurn]
+	xor $1
+	jr Function1205
+; 1203
+
+Char5D: ; 1203
+	ld a, [hBattleTurn]
+; 1205
+
+Function1205: ; 1205
+	push de
+	and a
+	jr nz, .asm_120e ; 0x1207 $5
+	ld de, BattleMonNick
+	jr .asm_126a ; 0x120c $5c
+.asm_120e
+	ld de, Char5AText ; Enemy
+	call PlaceString
+	ld h, b
+	ld l, c
+	ld de, EnemyMonNick
+	jr .asm_126a ; 0x1219 $4f
+	push de
+	ld a, [InLinkBattle]
+	and a
+	jr nz, .linkbattle
+	ld a, [TrainerClass]
+	cp $9
+	jr z, .asm_1248 ; 0x1227 $1f
+	cp $2a
+	jr z, .asm_1248 ; 0x122b $1b
+	ld de, $c656
+	call PlaceString
+	ld h, b
+	ld l, c
+	ld de, String12a2
+	call PlaceString
+	push bc
+	ld hl, $5939
+	ld a, $e
+	rst FarCall
+	pop hl
+	ld de, StringBuffer1
+	jr .asm_126a ; 0x1246 $22
+.asm_1248
+	ld de, RivalName
+	jr .asm_126a ; 0x124b $1d
+.linkbattle
+	ld de, $c656
+	jr .asm_126a ; 0x1250 $18
+	push de
+	ld de, PlayerName
+	call PlaceString
+	ld h, b
+	ld l, c
+	ld a, [PlayerGender]
+	bit 0, a
+	ld de, String12a5
+	jr z, .asm_126a ; 0x1263 $5
+	ld de, String12a6
+	jr .asm_126a ; 0x1268 $0
+.asm_126a
+	call PlaceString
+	ld h, b
+	ld l, c
+	pop de
+	jp NextChar
+; 0x1273
+
+Char5CText: ; 1273
+	db "TM@"
+Char5DText: ; 1276
+	db "TRAINER@"
+Char5BText: ; 127e
+	db "PC@"
+Char5EText: ; 1281
+	db "ROCKET@"
+Char54Text: ; 1288
+	db "POKé@"
+Char23Text: ; 128d
+	db "こうげき@"
+Char56Text:; 1292
+	db "……@"
+Char5AText: ; 1295
+	db "Enemy @"
+Char4AText: ; 129c
+	db $e1, $e2, "@" ; PK MN
+Char24Text: ; 129f
+	db $70, $71, "@" ; PO KE
+String12a2: ; 12a2
+	db " @"
+Char35Text:
+Char36Text:
+Char37Text: ; 12a4
+	db "@"
+String12a5: ; 12a5
+	db "@"
+String12a6: ; 12a6
+	db "@"
+; 12a7
+
+Function12a7: ; 12a7
+	pop hl
+	ld bc, $0028
+	add hl, bc
+	push hl
+	jp NextChar
+; 12b0
+
+Function12b0: ; 12b0
+	pop hl
+	ld bc, $0014
+	add hl, bc
+	push hl
+	jp NextChar
+; 12b9
+
+Function12b9: ; 12b9
+	pop hl
+	push de
+	ld bc, $3b60
+	add hl, bc
+	ld de, $ffec
+	ld c, $1
+.asm_12c4
+	ld a, h
+	and a
+	jr nz, .asm_12cd
+	ld a, l
+	cp $14
+	jr c, .asm_12d1
+
+.asm_12cd
+	add hl, de
+	inc c
+	jr .asm_12c4
+
+.asm_12d1
+	ld hl, TileMap
+	ld de, $0014
+	ld a, c
+.asm_12d8
+	and a
+	jr z, .asm_12df
+	add hl, de
+	dec a
+	jr .asm_12d8
+
+.asm_12df
+	pop de
+	inc de
+	ld a, [de]
+	ld c, a
+	ld b, $0
+	add hl, bc
+	push hl
+	jp NextChar
+; 12ea
+
+
+Char4F: ; 12ea
+	pop hl
+	hlcoord 1, 16
+	push hl
+	jp NextChar
+; 0x12f2
+
+Function12f2: ; 12f2
+	push de
+	ld a, [InLinkBattle]
+	cp $3
+	jr z, .asm_1301
+	cp $4
+	jr z, .asm_1301
+	call Function13c7
+
+.asm_1301
+	call Function13b6
+	call Functionaaf
+	ld hl, $c5b9
+	ld bc, $0312
+	call ClearBox
+	call Function13cd
+	ld c, $14
+	call DelayFrames
+	ld hl, $c5b9
+	pop de
+	jp NextChar
+; 131f
+
+
+Char4B: ; 131f
+	ld a, [InLinkBattle]
+	or a
+	jr nz, .asm_1328
+	call Function13c7
+
+.asm_1328
+	call Function13b6
+
+	push de
+	call Functionaaf
+	pop de
+
+	ld a, [InLinkBattle]
+	or a
+	call z, Function13cd
+
+	push de
+	call Function138c
+	call Function138c
+	hlcoord 1, 16
+	pop de
+	jp NextChar
+; 1345
+
+
+Char55: ; 1345
+	push de
+	ld de, Text_1354
+	ld b, h
+	ld c, l
+	call PlaceString
+	ld h, b
+	ld l, c
+	pop de
+	jp NextChar
+; 1354
+
+Text_1354: ; 1354
+	db $4b, "@"
+; 1356
+
+
+Char5F: ; 1356
+; ends a Pokédex entry
+	ld [hl], "."
+	pop hl
+	ret
+; 135a
+
+Function135a: ; 135a
+	ld a, [InLinkBattle]
+	cp $3
+	jr z, .asm_1368
+	cp $4
+	jr z, .asm_1368
+	call Function13c7
+
+.asm_1368
+	call Function13b6
+	call Functionaaf
+	ld a, [InLinkBattle]
+	cp $3
+	jr z, .asm_137c
+	cp $4
+	jr z, .asm_137c
+	call Function13cd
+
+.asm_137c
+	pop hl
+	ld de, .string_1382
+	dec de
+	ret
+
+.string_1382
+	db "@"
+; 1383
+
+Function1383: ; 1383
+	ld a, $e6
+	ld [hli], a
+	call PrintLetterDelay
+	jp NextChar
+; 138c
+
+Function138c: ; 138c
+	ld hl, $c5b9
+	ld de, $c5a5
+	ld a, $3
+.asm_1394
+	push af
+	ld c, $12
+.asm_1397
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec c
+	jr nz, .asm_1397
+	inc de
+	inc de
+	inc hl
+	inc hl
+	pop af
+	dec a
+	jr nz, .asm_1394
+	ld hl, $c5e1
+	ld a, $7f
+	ld bc, $0012
+	call ByteFill
+	ld c, $5
+	call DelayFrames
+	ret
+; 13b6
+
+Function13b6: ; 13b6
+	push bc
+	ld a, [hOAMUpdate]
+	push af
+	ld a, $1
+	ld [hOAMUpdate], a
+	call WaitBGMap
+	pop af
+	ld [hOAMUpdate], a
+	pop bc
+	ret
+; 13c6
+
+Function13c6: ; 13c6
+	ret
+; 13c7
+
+Function13c7: ; 13c7
+	ld a, $ee
+	ld [$c606], a
+	ret
+; 13cd
+
+Function13cd: ; 13cd
+	ld a, [$c605]
+	ld [$c606], a
+	ret
+; 13d4
+
+Function13d4: ; 13d4
+	ld b, a
+	ld a, [hROMBank]
+	push af
+	ld a, b
+	rst Bankswitch
+
+	call PlaceString
+	pop af
+	rst Bankswitch
+
+	ret
+; 13e0
+
+Function13e0: ; 13e0
+	ld hl, $13e4
+	ret
+
+.string_13e4
+	db "@"
+; 13e5
+
+
+Function13e5: ; 13e5
+	ld a, [$cfcf]
+	push af
+	set 1, a
+	ld [$cfcf], a
+	call Function13f6
+	pop af
+	ld [$cfcf], a
+	ret
+; 13f6
+
+Function13f6: ; 13f6
+.asm_13f6
+	ld a, [hli]
+	cp "@"
+	ret z
+	call Function13ff
+	jr .asm_13f6
+; 13ff
+
+Function13ff: ; 13ff
+	push hl
+	push bc
+	ld c, a
+	ld b, 0
+	ld hl, TextCommands
+	add hl, bc
+	add hl, bc
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	pop bc
+	pop hl
+	
+; jp de
+	push de
+	ret
+; 1410
+
+TextCommands: ; 1410
+	dw Text_00
+	dw Text_01
+	dw Text_02
+	dw Text_03
+	dw Text_04
+	dw Text_05
+	dw Text_06
+	dw Text_07
+	dw Text_08
+	dw Text_09
+	dw Text_0A
+	dw Text_PlaySound ; $0b
+	dw Text_0C
+	dw Text_0D
+	dw Text_PlaySound ; $0e
+	dw Text_PlaySound ; $0f
+	dw Text_PlaySound ; $10
+	dw Text_PlaySound ; $11
+	dw Text_PlaySound ; $12
+	dw Text_PlaySound ; $13
+	dw Text_14
+	dw Text_15
+	dw Text_16
+; 143e
+
+Text_00: ; 143e
+; TX
+; write text until "@"
+; [$00]["...@"]
+
+	ld d, h
+	ld e, l
+	ld h, b
+	ld l, c
+	call PlaceString
+	ld h, d
+	ld l, e
+	inc hl
+	ret
+; 1449
+
+Text_01: ; 1449
+; TX_RAM
+; write text from a ram address
+; little endian
+; [$01][addr]
+
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	push hl
+	ld h, b
+	ld l, c
+	call PlaceString
+	pop hl
+	ret
+; 1455
+
+Text_16: ; 1455
+; TX_FAR
+; write text from a different bank
+; little endian
+; [$16][addr][bank]
+
+	ld a, [hROMBank]
+	push af
+
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	ld a, [hli]
+
+	ld [hROMBank], a
+	ld [MBC3RomBank], a
+
+	push hl
+	ld h, d
+	ld l, e
+	call Function13f6
+	pop hl
+
+	pop af
+	ld [hROMBank], a
+	ld [MBC3RomBank], a
+	ret
+; 1470
+
+Text_02: ; 1470
+; TX_NUM
+; write bcdnumber from address, typically ram
+; little endian
+; [$02][addr][flags]
+; flags: see PrintBCDNumber
+
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	ld a, [hli]
+	push hl
+	ld h, b
+	ld l, c
+	ld c, a
+	call PrintBCDNumber
+	ld b, h
+	ld c, l
+	pop hl
+	ret
+; 1480
+
+Text_03: ; 1480
+; TX_MOVE
+; move to a new tile
+; little endian
+; [$03][tileaddr]
+
+	ld a, [hli]
+	ld [$d0e6], a
+	ld c, a
+	ld a, [hli]
+	ld [$d0e7], a
+	ld b, a
+	ret
+; 148b
+
+Text_04: ; 148b
+; TX_BOX
+; draw a box
+; little endian
+; [$04][tileaddr][height][width]
+
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	ld a, [hli]
+	ld b, a
+	ld a, [hli]
+	ld c, a
+	push hl
+	ld h, d
+	ld l, e
+	call TextBox
+	pop hl
+	ret
+; 149b
+
+Text_05: ; 149b
+; TX_LOW
+; write text at (1,16)
+; [$05]
+
+	bccoord 1, 16
+	ret
+; 149f
+
+Text_06:: ; 149f
+; TX_WAITBUTTON
+; wait for button press
+; show arrow
+; [06]
+
+	ld a, [InLinkBattle]
+	cp $3
+	jp z, Text_0D
+	cp $4
+	jp z, Text_0D
+	push hl
+	call Function13c7
+	push bc
+	call Functionaaf
+	pop bc
+	call Function13cd
+	pop hl
+	ret
+; 14ba
+
+Text_07: ; 14ba
+	push hl
+	call Function13cd
+	call Function138c
+	call Function138c
+	pop hl
+	bccoord 1, 16
+	ret
+; 14c9
+
+Text_08: ; 14c9
+; TX_ASM
+
+; rom only?
+	bit 7, h
+	jr nz, .asm_14ce
+	jp [hl]
+
+.asm_14ce
+	ld a, "@"
+	ld [hl], a
+	ret
+; 14d2
+
+Text_09: ; 14d2
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	ld a, [hli]
+	push hl
+	ld h, b
+	ld l, c
+	ld b, a
+	and $f
+	ld c, a
+	ld a, b
+	and $f0
+	swap a
+	set 6, a
+	ld b, a
+	call PrintNum
+	ld b, h
+	ld c, l
+	pop hl
+	ret
+; 14ed
+
+Text_0A: ; 14ed
+	push hl
+	push bc
+	call GetJoypadPublic
+	ld a, [hJoyDown]
+	and BUTTON_A | BUTTON_B
+	jr nz, .asm_14fd
+	ld c, 30
+	call DelayFrames
+
+.asm_14fd
+	pop bc
+	pop hl
+	ret
+; 1500
+
+Text_PlaySound:: ; 1500
+; chars:
+;   $0b, $0e, $0f, $10, $11, $12, $13
+; see TextSFX
+
+	push bc
+	dec hl
+	ld a, [hli]
+	ld b, a
+	push hl
+	ld hl, TextSFX
+.asm_1508
+	ld a, [hli]
+	cp $ff
+	jr z, .asm_151f
+	cp b
+	jr z, .asm_1514
+	inc hl
+	inc hl
+	jr .asm_1508
+
+.asm_1514
+	push de
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	call StartSFX
+	call WaitSFX
+	pop de
+
+.asm_151f
+	pop hl
+	pop bc
+	ret
+; 1522
+
+Function1522: ; 1522
+	push de
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	call Function37ce
+	pop de
+	pop hl
+	pop bc
+	ret
+; 152d
+
+TextSFX: ; 152d
+	dbw $0b, SFX_DEX_FANFARE_50_79
+	dbw $12, SFX_FANFARE
+	dbw $0e, SFX_DEX_FANFARE_20_49
+	dbw $0f, SFX_ITEM
+	dbw $10, SFX_CAUGHT_MON
+	dbw $11, SFX_DEX_FANFARE_80_109
+	dbw $13, SFX_SLOT_MACHINE_START
+	db $ff ; end
+; 1543
+
+Text_0C: ; 1543
+	ld a, [hli]
+	ld d, a
+	push hl
+	ld h, b
+	ld l, c
+.asm_1548
+	push de
+	ld a, "…"
+	ld [hli], a
+	call GetJoypadPublic
+	ld a, [hJoyDown]
+	and BUTTON_A | BUTTON_B
+	jr nz, .asm_155a
+	ld c, 10
+	call DelayFrames
+.asm_155a
+	pop de
+	dec d
+	jr nz, .asm_1548
+	ld b, h
+	ld c, l
+	pop hl
+	ret
+; 1562
+
+Text_0D: ; 1562
+; wait for key down
+; display arrow
+	push hl
+	push bc
+	call Functionaaf
+	pop bc
+	pop hl
+	ret
+; 156a
+
+Text_14: ; 156a
+; TX_PREDEF
+; [$14][id]
+
+	ld a, [hli]
+	push hl
+	ld e, a
+	ld d, 0
+	ld hl, $4000
+	add hl, de
+	add hl, de
+	ld a, $9
+	call GetFarHalfword
+	ld d, h
+	ld e, l
+	ld h, b
+	ld l, c
+	call PlaceString
+	pop hl
+	ret
+; 1582
+
+Text_15: ; 1582
+; TX_DAY
+
+	call GetWeekday
+	push hl
+	push bc
+	ld c, a
+	ld b, 0
+	ld hl, .Days
+	add hl, bc
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld d, h
+	ld e, l
+	pop hl
+	call PlaceString
+	ld h, b
+	ld l, c
+	ld de, .Day
+	call PlaceString
+	pop hl
+	ret
+; 15a2
+
+.Days ; 15a2
+	dw .Sun
+	dw .Mon
+	dw .Tues
+	dw .Wednes
+	dw .Thurs
+	dw .Fri
+	dw .Satur
+
+.Sun    db "SUN@"
+.Mon    db "MON@"
+.Tues   db "TUES@"
+.Wednes db "WEDNES@"
+.Thurs  db "THURS@"
+.Fri    db "FRI@"
+.Satur  db "SATUR@"
+.Day    db "DAY@"
+; 15d8
+
--- a/engine/vblank.asm
+++ b/engine/vblank.asm
@@ -71,31 +71,31 @@
 ; advance rng
 	ld a, [rDIV]
 	ld b, a
-	ld a, [$ffe1]
+	ld a, [hRandomAdd]
 	adc b
-	ld [$ffe1], a
+	ld [hRandomAdd], a
 	
 	ld a, [rDIV]
 	ld b, a
-	ld a, [$ffe2]
+	ld a, [hRandomSub]
 	sbc b
-	ld [$ffe2], a
+	ld [hRandomSub], a
 	
 ; save bank
-	ld a, [$ff9d] ; current bank
+	ld a, [hROMBank] ; current bank
 	ld [$ff8a], a
 	
 ; scroll x
-	ld a, [$ffcf]
+	ld a, [hSCX]
 	ld [rSCX], a
 ; scroll y
-	ld a, [$ffd0]
+	ld a, [hSCY]
 	ld [rSCY], a
 ; window y
-	ld a, [$ffd2]
+	ld a, [hWY]
 	ld [rWY], a
 ; window x + 7
-	ld a, [$ffd1]
+	ld a, [hWX]
 	ld [rWX], a
 	
 ; some time management is in order
@@ -123,7 +123,7 @@
 	
 .doneframeaction
 ; oam update off?
-	ld a, [$ffd8]
+	ld a, [hOAMUpdate]
 	and a
 	jr nz, .vblankoccurred
 	
@@ -146,12 +146,12 @@
 	xor a
 	ld [VBlankOccurred], a
 	
-; dec $cfb1 until 0
-	ld a, [$cfb1]
+; dec OverworldDelay until 0
+	ld a, [OverworldDelay]
 	and a
 	jr z, .textdelay
 	dec a
-	ld [$cfb1], a
+	ld [OverworldDelay], a
 	
 .textdelay
 ; dec text delay counter until 0
@@ -172,7 +172,7 @@
 	rst Bankswitch ; restore bank
 	
 ; 
-	ld a, [$ff98]
+	ld a, [hSeconds]
 	ld [$ffe3], a
 	
 	ret
@@ -183,7 +183,7 @@
 ; sound only
 
 ; save bank
-	ld a, [$ff9d]
+	ld a, [hROMBank]
 	ld [$ff8a], a
 	
 ; update sound
@@ -211,15 +211,15 @@
 ; sound / lcd stat
 
 ; save bank
-	ld a, [$ff9d]
+	ld a, [hROMBank]
 	ld [$ff8a], a
 	
 ; scroll x
-	ld a, [$ffcf]
+	ld a, [hSCX]
 	ld [rSCX], a
 	
 ; scroll y
-	ld a, [$ffd0]
+	ld a, [hSCY]
 	ld [rSCY], a
 	
 ; time-sensitive fns
@@ -291,7 +291,7 @@
 ; update pals for either dmg or cgb
 
 ; check cgb
-	ld a, [$ffe6]
+	ld a, [hCGB]
 	and a
 	jp nz, UpdateCGBPals
 	
@@ -319,18 +319,18 @@
 ; sound / lcd stat
 
 ; save bank
-	ld a, [$ff9d]
+	ld a, [hROMBank]
 	ld [$ff8a], a
 	
 ; scroll x
-	ld a, [$ffcf]
+	ld a, [hSCX]
 	ld [rSCX], a
 ; scroll y
-	ld a, [$ffd0]
+	ld a, [hSCY]
 	ld [rSCY], a
 	
 ; any pals to update?
-	ld a, [$ffe5]
+	ld a, [hCGBPalUpdate]
 	and a
 	call nz, ForceUpdateCGBPals
 	jr c, .vblankoccurred
@@ -404,7 +404,7 @@
 ; sound
 
 ; save bank
-	ld a, [$ff9d]
+	ld a, [hROMBank]
 	ld [$ff8a], a
 	
 	call UpdateBGMap
@@ -451,11 +451,11 @@
 ; 
 
 ; save bank
-	ld a, [$ff9d]
+	ld a, [hROMBank]
 	ld [$ff8a], a
 	
 ; scroll x
-	ld a, [$ffcf]
+	ld a, [hSCX]
 	ld [rSCX], a
 	
 ; if we can update pals, skip this part
@@ -509,7 +509,7 @@
 ; sound
 
 ; save bank
-	ld a, [$ff9d]
+	ld a, [hROMBank]
 	ld [$ff8a], a
 	
 ; inc frame counter
--- a/extras/chars.py
+++ b/extras/chars.py
@@ -270,6 +270,7 @@
     0xE1: "ゅ",
     0xE2: "ょ",
     0xE3: "ー",
+    0xE9: "ァ",
 })
 
 #some of the japanese characters can probably fit into the english table
--- a/extras/crystal.py
+++ b/extras/crystal.py
@@ -1993,7 +1993,7 @@
     0x45: "accelerate_last",
     0x46: ["step_sleep", ["duration", DecimalParam]],
     0x47: "step_end",
-    0x49: "hide_person",
+    0x49: "remove_person",
 
     # do these next two have any params ??
     0x4C: "teleport_from",
--- a/extras/sym.py
+++ b/extras/sym.py
@@ -1,47 +1,89 @@
-# -*- coding: utf-8 -*-
+# coding: utf-8
 
+import os
+import sys
 import json
 
-# from crystal import load_rom
-# from gbz80disasm import load_labels
 
-
 def make_sym_from_json(filename = '../pokecrystal.sym', j = 'labels.json'):
-	# todo: delete and remake labels.json at runtime
+	output = ''
+	labels = json.load(open(j))
+	for label in labels:
+		output += '{0:x}:{1:x} {2}\n'.format(label['bank'], label['address'], label['label'])
 	with open(filename, 'w') as sym:
-		for label in json.load(open(j)):
-			sym.write('{0:x}:{1:x} {2}\n'.format(label['bank'], label['address']%0x4000 + (0x4000 if label['bank'] else 0), label['label']))
+		sym.write(output)
 
 
-def make_sym_from_mapfile(filename = '../pokecrystal.sym', mapfile = '../mapfile.txt'):
+def make_json_from_mapfile(filename = 'labels.json', mapfile = '../pokecrystal.map'):
+	output = []
+	labels = filter_wram_addresses(read_mapfile(mapfile))
+	with open(filename, 'w') as out:
+		out.write(json.dumps(labels))
+
+
+def read_mapfile(filename = '../pokecrystal.map'):
+	"""
+	Scrape label addresses from an rgbds mapfile.
+	"""
+
+	labels = []
+
+	with open(filename,'r') as map:
+		lines = map.readlines()
+
+	for line in lines:
+		# bank #
+		if 'Bank #' in line:
+			cur_bank = int(line.lstrip('Bank #').strip(':\n').strip(' (HOME)'))
+
+		# label definition
+		elif '=' in line:
+			address, label = line.split('=')
+			address = int(address.lstrip().replace('$','0x'), 16)
+			label = label.strip()
+
+			# rgbds doesn't support ram banks yet
+			bank = cur_bank
+			offset = address
+			if 0x8000 <= address < 0xa000:
+				bank = 0
+			elif 0xa000 <= address < 0xc000:
+				bank = 0
+			elif 0xc000 <= address < 0xd000:
+				bank = 0
+			elif 0xd000 <= address < 0xe000:
+				bank = 0
+			else:
+				offset += (bank * 0x4000 - 0x4000) if bank > 0 else 0
+
+			labels += [{
+				'label': label,
+				'bank': bank,
+				'address': offset,
+				'offset': offset,
+				'local_address': address,
+			}]
+
+	return labels
+
+def filter_wram_addresses(labels):
+	filtered_labels = []
+	for label in labels:
+		if label['local_address'] < 0x8000:
+			filtered_labels += [label]
+	return filtered_labels
+
+
+def make_sym_from_mapfile(filename = '../pokecrystal.sym'):
 	# todo: sort label definitions by address
-	
+
 	output = ''
-	# get label definitions
-	with open(mapfile,'r') as map:
-		lines = map.readlines()
-		for line in lines:
-			# bank #
-			if 'Bank #' in line:
-				cur_bank = int(line.lstrip('Bank #').strip(':\n').strip(' (HOME)'))
-			
-			# label definition
-			elif '=' in line:
-				thing = line.split('=')
-				spacing = ' ' * 11 # arbitrary
-				addr = int(thing[0].lstrip(spacing)[1:5],16)
-				
-				# rgbds doesn't support wram banks yet,
-				# so this hack is applied instead
-				if addr > 0xbfff: # 0xc000+ (wram only)
-					cur_bank = 0
-				if addr > 0xcfff: # 0xd000+ (wram only)
-					cur_bank = 1
-				
-				# convert to sym format (bank:addr label)
-				label = thing[1].strip('\n')
-				output += hex(cur_bank)[2:] + ':' + hex(addr)[2:] + ' ' + label + '\n'
-	
+	labels = read_mapfile()
+
+	# convert to sym format (bank:addr label)
+	for label in labels:
+		output += '%.2x:%.4x %s\n' % (label['bank'], label['address'], label['label'])
+
 	# dump contents to symfile
 	with open(filename, 'w') as sym:
 		sym.write(output)
@@ -48,7 +90,11 @@
 
 
 if __name__ == "__main__":
-	# default behavior: generate sym file from rgbds mapfile
-	try: make_sym_from_mapfile()
-	# if no mapfile exists, generate from labels.json
-	except: make_sym_from_json()
+	#if os.path.exists('../pokecrystal.sym'):
+	#	sys.exit()
+	#elif os.path.exists('../pokecrystal.map'):
+	#	make_sym_from_mapfile()
+	#elif os.path.exists('labels.json'):
+	#	make_sym_from_json()
+	make_json_from_mapfile()
+
binary files /dev/null b/gfx/frames/1.1bpp differ
binary files /dev/null b/gfx/frames/2.1bpp differ
binary files /dev/null b/gfx/frames/3.1bpp differ
binary files /dev/null b/gfx/frames/4.1bpp differ
binary files /dev/null b/gfx/frames/5.1bpp differ
binary files /dev/null b/gfx/frames/6.1bpp differ
binary files /dev/null b/gfx/frames/7.1bpp differ
binary files /dev/null b/gfx/frames/8.1bpp differ
binary files /dev/null b/gfx/frames/9.1bpp differ
binary files /dev/null b/gfx/misc/copyright.2bpp differ
binary files /dev/null b/gfx/misc/johto.bin differ
binary files /dev/null b/gfx/misc/kanto.bin differ
--- a/hram.asm
+++ b/hram.asm
@@ -41,6 +41,11 @@
 
 hLCDStatCustom     EQU $ffc6
 
+hSCX               EQU $ffcf
+hSCY               EQU $ffd0
+hWX                EQU $ffd1
+hWY                EQU $ffd2
+
 hBGMapMode         EQU $ffd4
 hBGMapThird        EQU $ffd5
 hBGMapAddress      EQU $ffd6
--- a/items/item_effects.asm
+++ b/items/item_effects.asm
@@ -402,7 +402,7 @@
 
 	pop hl
 	ld de, StringBuffer1
-	call InitString
+	call InitName
 
 	jp $6be2
 
@@ -466,7 +466,7 @@
 
 	ld hl, $b082
 	ld de, StringBuffer1
-	call InitString
+	call InitName
 
 	call CloseSRAM
 
@@ -754,6 +754,7 @@
 	ld a, [TempBattleMonSpecies]
 	cp c
 	ret nz
+
 	push bc
 	ld a, [TempBattleMonSpecies]
 	ld [CurPartySpecies], a
@@ -764,14 +765,13 @@
 	ld a, $14
 	ld hl, $4bdd
 	rst FarCall
-
 	jr c, .asm_ed66
 
-	ld d, $0
+	ld d, 0
 	jr nz, .asm_ed39
 	inc d
-
 .asm_ed39
+
 	push de
 	ld a, [TempEnemyMonSpecies]
 	ld [CurPartySpecies], a
@@ -780,28 +780,25 @@
 	ld a, $14
 	ld hl, $4bdd
 	rst FarCall
-
 	jr c, .asm_ed65
 
-	ld d, $0
+	ld d, 0
 	jr nz, .asm_ed52
 	inc d
-
 .asm_ed52
+
 	ld a, d
 	pop de
 	cp d
 	pop bc
 	ret nz
+
 	sla b
 	jr c, .asm_ed62
-
 	sla b
 	jr c, .asm_ed62
-
 	sla b
 	ret nc
-
 .asm_ed62
 	ld b, $ff
 	ret
@@ -1657,34 +1654,25 @@
 
 
 Squirtbottle: ; f73e
-	ld a, $14
-	ld hl, $4730
-	rst FarCall
+	callba _Squirtbottle
 	ret
 ; f745
 
 
 CardKey: ; f745
-	ld a, $14
-	ld hl, $4779
-	rst FarCall
+	callba _CardKey
 	ret
 ; f74c
 
 
 BasementKey: ; f74c
-	ld a, $14
-	ld hl, $47b4
-	rst FarCall
+	callba _BasementKey
 	ret
 ; f753
 
 
 SacredAsh: ; f753
-	ld a, $14
-	ld hl, $47e6
-	rst FarCall
-
+	callba _SacredAsh
 	ld a, [$d0ec]
 	cp $1
 	ret nz
--- a/main.asm
+++ b/main.asm
@@ -20,7 +20,7 @@
 SECTION "rst28",ROM0[$28] ; JumpTable
 	push de
 	ld e, a
-	ld d, 00
+	ld d, 0
 	add hl, de
 	add hl, de
 	ld a, [hli]
@@ -27,7 +27,7 @@
 	ld h, [hl]
 	ld l, a
 	pop de
-	jp [hl] ; (actually jp hl)
+	jp [hl]
 
 ; rst30 is midst rst28
 
@@ -38,13 +38,13 @@
 	jp VBlank
 
 SECTION "lcd",ROM0[$48] ; lcd interrupt
-	jp $0552
+	jp Function552
 
 SECTION "timer",ROM0[$50] ; timer interrupt
-	jp $3e93
+	jp Function3e93
 
 SECTION "serial",ROM0[$58] ; serial interrupt
-	jp $06ef
+	jp Function6ef
 
 SECTION "joypad",ROM0[$60] ; joypad interrupt
 	jp JoypadInt
@@ -52,13 +52,12 @@
 SECTION "romheader",ROM0[$100]
 Start:
 	nop
-	jp $016e
+	jp _Start
 
 SECTION "start",ROM0[$150]
 
-INCBIN "baserom.gbc", $150, $283 - $150
+INCLUDE "engine/init.asm"
 
-
 VBlank: ; 283
 INCLUDE "engine/vblank.asm"
 
@@ -101,45 +100,195 @@
 	ld a, [VramState]
 	bit 0, a ; obj update
 	ret z
-	
-; update palettes
-	callab TimeOfDayPals
+; 47e
+
+TimeOfDayPals: ; 47e
+	callab _TimeOfDayPals
 	ret
 ; 485
 
 
-INCBIN "baserom.gbc", $485, $52f - $485
+Function485: ; 485
+	callab UpdateTimePals
+	ret
+; 48c
 
+Function48c: ; 48c
+	ld a, [TimeOfDayPal]
+	ld b, a
+	ld hl, IncGradGBPalTable_11
+	ld a, l
+	sub b
+	ld l, a
+	jr nc, .asm_499
+	dec h
 
-IncGradGBPalTable_01: ; 52f
+.asm_499
+	ld a, [hli]
+	ld [rBGP], a
+	ld a, [hli]
+	ld [rOBP0], a
+	ld a, [hli]
+	ld [rOBP1], a
+	ret
+; 4a3
+
+
+Function4a3: ; 4a3
+	ld a, [hCGB]
+	and a
+	jr z, .asm_4af
+	ld hl, IncGradGBPalTable_00
+	ld b, $4
+	jr Function4c7
+
+.asm_4af
+	ld hl, IncGradGBPalTable_08
+	ld b, $4
+	jr Function4c7
+; 4b6
+
+Function4b6: ; 4b6
+	ld a, [hCGB]
+	and a
+	jr z, .asm_4c2
+	ld hl, IncGradGBPalTable_05
+	ld b, $3
+	jr Function4c7
+
+.asm_4c2
+	ld hl, IncGradGBPalTable_13
+	ld b, $3
+; 4c7
+
+Function4c7: ; 4c7
+.asm_4c7
+	push de
+	ld a, [hli]
+	call DmgToCgbBGPals
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	call DmgToCgbObjPals
+	ld c, $8
+	call DelayFrames
+	pop de
+	dec b
+	jr nz, .asm_4c7
+	ret
+; 4dd
+
+Function4dd: ; 4dd
+	ld a, [hCGB]
+	and a
+	jr z, .asm_4e9
+	ld hl, IncGradGBPalTable_04 - 1
+	ld b, $4
+	jr Function501
+
+.asm_4e9
+	ld hl, IncGradGBPalTable_12 - 1
+	ld b, $4
+	jr Function501
+; 4f0
+
+Function4f0: ; 4f0
+	ld a, [hCGB]
+	and a
+	jr z, .asm_4fc
+	ld hl, IncGradGBPalTable_07 - 1
+	ld b, $3
+	jr Function501
+
+.asm_4fc
+	ld hl, IncGradGBPalTable_15 - 1
+	ld b, $3
+	; fallthrough
+; 501
+
+Function501: ; 501
+	push de
+	ld a, [hld]
+	ld d, a
+	ld a, [hld]
+	ld e, a
+	call DmgToCgbObjPals
+	ld a, [hld]
+	call DmgToCgbBGPals
+	ld c, $8
+	call DelayFrames
+	pop de
+	dec b
+	jr nz, Function501
+	ret
+; 517
+
+
+IncGradGBPalTable_00: ; 517
 	db %11111111 ; bgp
 	db %11111111 ; obp1
 	db %11111111 ; obp2
 	             ; and so on...
+IncGradGBPalTable_01: ; 51a
 	db %11111110
 	db %11111110
-	db %11111000
+	db %11111110
+IncGradGBPalTable_02: ; 51d
+	db %11111001
+	db %11111001
+	db %11111001
+IncGradGBPalTable_03: ; 520
+	db %11100100
+	db %11100100
+	db %11100100
+IncGradGBPalTable_04: ; 523
+	db %11100100
+	db %11100100
+	db %11100100
+IncGradGBPalTable_05: ; 526
+	db %10010000
+	db %10010000
+	db %10010000
+IncGradGBPalTable_06: ; 529
+	db %01000000
+	db %01000000
+	db %01000000
+IncGradGBPalTable_07: ; 52c
+	db %00000000
+	db %00000000
+	db %00000000
+; 52f
 
+IncGradGBPalTable_08: ; 52f
+	db %11111111
+	db %11111111
+	db %11111111
+IncGradGBPalTable_09: ; 532
+	db %11111110
+	db %11111110
+	db %11111000
+IncGradGBPalTable_10: ; 535
 	db %11111001
 	db %11100100
 	db %11100100
-	
+IncGradGBPalTable_11: ; 538
 	db %11100100
 	db %11010000
 	db %11100000
-	
+IncGradGBPalTable_12: ; 53b
 	db %11100100
 	db %11010000
 	db %11100000
-	
+IncGradGBPalTable_13: ; 53e
 	db %10010000
 	db %10000000
 	db %10010000
-	
+IncGradGBPalTable_14: ; 541
 	db %01000000
 	db %01000000
 	db %01000000
-	
+IncGradGBPalTable_15: ; 544
 	db %00000000
 	db %00000000
 	db %00000000
@@ -146,9 +295,40 @@
 ; 547
 
 
-INCBIN "baserom.gbc", $547, $568 - $547
+Function547: ; 547
+	ld a, [hLCDStatCustom]
+	cp $43
+	ret nz
+	ld c, a
+	ld a, [$d100]
+	ld [$ff00+c], a
+	ret
+; 552
 
+Function552: ; 552
+	push af
+	ld a, [hLCDStatCustom]
+	and a
+	jr z, .asm_566
+	push bc
+	ld a, [rLY]
+	ld c, a
+	ld b, $d1
+	ld a, [bc]
+	ld b, a
+	ld a, [hLCDStatCustom]
+	ld c, a
+	ld a, b
+	ld [$ff00+c], a
+	pop bc
 
+.asm_566
+	pop af
+	reti
+; 568
+
+
+
 DisableLCD: ; 568
 ; Turn the LCD off
 ; Most of this is just going through the motions
@@ -201,7 +381,15 @@
 
 
 AskTimer: ; 591
-	INCBIN "baserom.gbc", $591, $59c - $591
+	push af
+	ld a, [$ffe9]
+	and a
+	jr z, .asm_59a
+	call Function3e93
+
+.asm_59a
+	pop af
+	reti
 ; 59c
 
 
@@ -384,8 +572,48 @@
 	ret
 ; 658
 
-INCBIN "baserom.gbc", $658, $691 - $658
+Function658: ; 658
+	xor a
+	ld [StringBuffer2], a
+	ld a, $0
+	ld [$d089], a
+	jr .asm_677
 
+	call UpdateTime
+	ld a, [hHours]
+	ld [$d087], a
+	ld a, [hMinutes]
+	ld [$d088], a
+	ld a, [hSeconds]
+	ld [$d089], a
+	jr .asm_677
+
+.asm_677
+	ld a, $5
+	ld hl, $40ed
+	rst FarCall
+	ret
+; 67e
+
+
+
+Function67e: ; 67e
+	call Function685
+	call SetClock
+	ret
+; 685
+
+Function685: ; 685
+	xor a
+	ld [hRTCSeconds], a
+	ld [hRTCMinutes], a
+	ld [hRTCHours], a
+	ld [hRTCDayLo], a
+	ld [hRTCDayHi], a
+	ret
+; 691
+
+
 SetClock: ; 691
 ; set clock data from hram
 
@@ -434,382 +662,659 @@
 	ret
 ; 6c4
 
-INCBIN "baserom.gbc", $6c4, $92e - $6c4
 
+Function6c4: ; 6c4
+	xor a
+	push af
+	ld a, $0
+	call GetSRAMBank
+	pop af
+	ld [$ac60], a
+	call CloseSRAM
+	ret
+; 6d3
 
-INCLUDE "engine/joypad.asm"
-
-
-INCBIN "baserom.gbc", $a1b, $b40 - $a1b
-
-FarDecompress: ; b40
-; Decompress graphics data at a:hl to de
-
-; put a away for a sec
-	ld [$c2c4], a
-; save bank
-	ld a, [hROMBank]
+Function6d3: ; 6d3
+	ld hl, $ac60
 	push af
-; bankswitch
-	ld a, [$c2c4]
-	rst Bankswitch
-	
-; what we came here for
-	call Decompress
-	
-; restore bank
+	ld a, $0
+	call GetSRAMBank
 	pop af
-	rst Bankswitch
+	or [hl]
+	ld [hl], a
+	call CloseSRAM
 	ret
-; b50
+; 6e3
 
+Function6e3: ; 6e3
+	ld a, $0
+	call GetSRAMBank
+	ld a, [$ac60]
+	call CloseSRAM
+	ret
+; 6ef
 
-Decompress: ; b50
-; Pokemon Crystal uses an lz variant for compression.
 
-; This is mainly used for graphics, but the intro's
-; tilemaps also use this compression.
 
-; This function decompresses lz-compressed data at hl to de.
+Function6ef: ; 6ef
+	push af
+	push bc
+	push de
+	push hl
+	ld a, [$ffc9]
+	and a
+	jr nz, .asm_71c
+	ld a, [$c2d4]
+	bit 0, a
+	jr nz, .asm_721
+	ld a, [$ffcb]
+	inc a
+	jr z, .asm_726
+	ld a, [rSB]
+	ld [$ffce], a
+	ld a, [$ffcd]
+	ld [rSB], a
+	ld a, [$ffcb]
+	cp $2
+	jr z, .asm_752
+	ld a, $0
+	ld [rSC], a
+	ld a, $80
+	ld [rSC], a
+	jr .asm_752
 
+.asm_71c
+	call Function3e80
+	jr .asm_75a
 
-; Basic rundown:
+.asm_721
+	call Function2057
+	jr .asm_75a
 
-;	A typical control command consists of:
-;		-the command (bits 5-7)
-;		-the count (bits 0-4)
-;		-and any additional params
+.asm_726
+	ld a, [rSB]
+	cp $1
+	jr z, .asm_730
+	cp $2
+	jr nz, .asm_752
 
-;	$ff is used as a terminator.
+.asm_730
+	ld [$ffce], a
+	ld [$ffcb], a
+	cp $2
+	jr z, .asm_74f
+	xor a
+	ld [rSB], a
+	ld a, $3
+	ld [rDIV], a
+.asm_73f
+	ld a, [rDIV]
+	bit 7, a
+	jr nz, .asm_73f
+	ld a, $0
+	ld [rSC], a
+	ld a, $80
+	ld [rSC], a
+	jr .asm_752
 
+.asm_74f
+	xor a
+	ld [rSB], a
 
-;	Commands:
+.asm_752
+	ld a, $1
+	ld [$ffca], a
+	ld a, $fe
+	ld [$ffcd], a
 
-;		0: literal
-;			literal data for some number of bytes
-;		1: iterate
-;			one byte repeated for some number of bytes
-;		2: alternate
-;			two bytes alternated for some number of bytes
-;		3: zero (whitespace)
-;			0x00 repeated for some number of bytes
+.asm_75a
+	pop hl
+	pop de
+	pop bc
+	pop af
+	reti
+; 75f
 
-;	Repeater control commands have a signed parameter used to determine the start point.
-;	Wraparound is simulated:
-;		Positive values are added to the start address of the decompressed data
-;		and negative values are subtracted from the current position.
+Function75f: ; 75f
+	ld a, $1
+	ld [$ffcc], a
+.asm_763
+	ld a, [hl]
+	ld [$ffcd], a
+	call $078a
+	push bc
+	ld b, a
+	inc hl
+	ld a, $30
+.asm_76e
+	dec a
+	jr nz, .asm_76e
+	ld a, [$ffcc]
+	and a
+	ld a, b
+	pop bc
+	jr z, .asm_782
+	dec hl
+	cp $fd
+	jr nz, .asm_763
+	xor a
+	ld [$ffcc], a
+	jr .asm_763
 
-;		4: repeat
-;			repeat some number of bytes from decompressed data
-;		5: flipped
-;			repeat some number of flipped bytes from decompressed data
-;			ex: $ad = %10101101 -> %10110101 = $b5
-;		6: reverse
-;			repeat some number of bytes in reverse from decompressed data
+.asm_782
+	ld [de], a
+	inc de
+	dec bc
+	ld a, b
+	or c
+	jr nz, .asm_763
+	ret
+; 78a
 
-;	If the value in the count needs to be larger than 5 bits,
-;	control code 7 can be used to expand the count to 10 bits.
+Function78a: ; 78a
+	xor a
+	ld [$ffca], a
+	ld a, [$ffcb]
+	cp $2
+	jr nz, .asm_79b
+	ld a, $1
+	ld [rSC], a
+	ld a, $81
+	ld [rSC], a
 
-;		A new control command is read in bits 2-4.
-;		The new 10-bit count is split:
-;			bits 0-1 contain the top 2 bits
-;			another byte is added containing the latter 8
+.asm_79b
+	ld a, [$ffca]
+	and a
+	jr nz, .asm_7e5
+	ld a, [$ffcb]
+	cp $1
+	jr nz, .asm_7c0
+	call $082b
+	jr z, .asm_7c0
+	call $0825
+	push hl
+	ld hl, $cf5c
+	inc [hl]
+	jr nz, .asm_7b7
+	dec hl
+	inc [hl]
 
-;		So, the structure of the control command becomes:
-;			111xxxyy yyyyyyyy
-;			 |  |  |    |
-;            |  | our new count
-;            | the control command for this count
-;            7 (this command)
+.asm_7b7
+	pop hl
+	call $082b
+	jr nz, .asm_79b
+	jp $0833
 
-; For more information, refer to the code below and in extras/gfx.py .
+.asm_7c0
+	ld a, [rIE]
+	and $f
+	cp $8
+	jr nz, .asm_79b
+	ld a, [$cf5d]
+	dec a
+	ld [$cf5d], a
+	jr nz, .asm_79b
+	ld a, [$cf5e]
+	dec a
+	ld [$cf5e], a
+	jr nz, .asm_79b
+	ld a, [$ffcb]
+	cp $1
+	jr z, .asm_7e5
+	ld a, $ff
+.asm_7e2
+	dec a
+	jr nz, .asm_7e2
 
-; save starting output address
-	ld a, e
-	ld [$c2c2], a
-	ld a, d
-	ld [$c2c3], a
-	
-.loop
-; get next byte
+.asm_7e5
+	xor a
+	ld [$ffca], a
+	ld a, [rIE]
+	and $f
+	sub $8
+	jr nz, .asm_7f8
+	ld [$cf5d], a
+	ld a, $50
+	ld [$cf5e], a
+
+.asm_7f8
+	ld a, [$ffce]
+	cp $fe
+	ret nz
+	call $082b
+	jr z, .asm_813
+	push hl
+	ld hl, $cf5c
 	ld a, [hl]
-; done?
-	cp $ff ; end
-	ret z
+	dec a
+	ld [hld], a
+	inc a
+	jr nz, .asm_80d
+	dec [hl]
 
-; get control code
-	and %11100000
-	
-; 10-bit param?
-	cp $e0 ; LZ_HI
-	jr nz, .normal
-	
-	
-; 10-bit param:
+.asm_80d
+	pop hl
+	call $082b
+	jr z, .asm_833
 
-; get next 3 bits (%00011100)
+.asm_813
+	ld a, [rIE]
+	and $f
+	cp $8
+	ld a, $fe
+	ret z
 	ld a, [hl]
-	add a
-	add a ; << 3
-	add a
-	
-; this is our new control code
-	and %11100000
-	push af
-	
-; get param hi
-	ld a, [hli]
-	and %00000011
-	ld b, a
-	
-; get param lo
-	ld a, [hli]
-	ld c, a
-	
-; read at least 1 byte
-	inc bc
-	jr .readers
-	
-	
-.normal
-; push control code
-	push af
-; get param
-	ld a, [hli]
-	and %00011111
-	ld c, a
-	ld b, $0
-; read at least 1 byte
-	inc c
-	
-.readers
-; let's get started
+	ld [$ffcd], a
+	call DelayFrame
+	jp $078a
 
-; inc loop counts since we bail as soon as they hit 0
-	inc b
-	inc c
-	
-; get control code
-	pop af
-; command type
-	bit 7, a ; 80, a0, c0
-	jr nz, .repeatertype
-	
-; literals
-	cp $20 ; LZ_ITER
-	jr z, .iter
-	cp $40 ; LZ_ALT
-	jr z, .alt
-	cp $60 ; LZ_ZERO
-	jr z, .zero
-	; else $00
-	
-; 00 ; LZ_LIT
-; literal data for bc bytes
-.loop1
-; done?
-	dec c
-	jr nz, .next1
-	dec b
-	jp z, .loop
-	
-.next1
+	ld a, $f
+.asm_827
+	dec a
+	jr nz, .asm_827
+	ret
+
+	push hl
+	ld hl, $cf5b
 	ld a, [hli]
+	or [hl]
+	pop hl
+	ret
+
+.asm_833
+	dec a
+	ld [$cf5b], a
+	ld [$cf5c], a
+	ret
+; 83b
+
+Function83b: ; 83b
+	ld hl, $cf56
+	ld de, $cf51
+	ld c, $2
+	ld a, $1
+	ld [$ffcc], a
+.asm_847
+	call DelayFrame
+	ld a, [hl]
+	ld [$ffcd], a
+	call Function78a
+	ld b, a
+	inc hl
+	ld a, [$ffcc]
+	and a
+	ld a, $0
+	ld [$ffcc], a
+	jr nz, .asm_847
+	ld a, b
 	ld [de], a
 	inc de
-	jr .loop1
-	
-	
-; 20 ; LZ_ITER
-; write byte for bc bytes
-.iter
-	ld a, [hli]
-	
-.iterloop
 	dec c
-	jr nz, .iternext
-	dec b
-	jp z, .loop
-	
-.iternext
-	ld [de], a
-	inc de
-	jr .iterloop
-	
-	
-; 40 ; LZ_ALT
-; alternate two bytes for bc bytes
+	jr nz, .asm_847
+	ret
+; 862
 
-; next pair
-.alt
-; done?
-	dec c
-	jr nz, .alt0
+Function862: ; 862
+	call Function309d
+	callab Function4000
+	call Function87d
+	jp Function30b4
+; 871
+
+
+Function871: ; 871
+	call Function309d
+	callab Function4000
+	jp Function87d
+; 87d
+
+
+
+Function87d: ; 87d
+	ld a, $ff
+	ld [$cf52], a
+.asm_882
+	call $08c1
+	call DelayFrame
+	call $082b
+	jr z, .asm_89e
+	push hl
+	ld hl, $cf5c
+	dec [hl]
+	jr nz, .asm_89d
+	dec hl
+	dec [hl]
+	jr nz, .asm_89d
+	pop hl
+	xor a
+	jp $0833
+
+.asm_89d
+	pop hl
+
+.asm_89e
+	ld a, [$cf52]
+	inc a
+	jr z, .asm_882
+	ld b, $a
+.asm_8a6
+	call DelayFrame
+	call $08c1
 	dec b
-	jp z, .altclose0
-	
-; alternate for bc
-.alt0
-	ld a, [hli]
-	ld [de], a
-	inc de
-	dec c
-	jr nz, .alt1
-; done?
+	jr nz, .asm_8a6
+	ld b, $a
+.asm_8b1
+	call DelayFrame
+	call $0908
 	dec b
-	jp z, .altclose1
-.alt1
-	ld a, [hld]
-	ld [de], a
-	inc de
-	jr .alt
-	
-; skip past the bytes we were alternating
-.altclose0
-	inc hl
-.altclose1
-	inc hl
-	jr .loop
-	
-	
-; 60 ; LZ_ZERO
-; write 00 for bc bytes
-.zero
+	jr nz, .asm_8b1
+	ld a, [$cf52]
+	ld [$cf51], a
+	ret
+; 8c1
+
+Function8c1: ; 8c1
+	push bc
+	ld b, $60
+	ld a, [InLinkBattle]
+	cp $1
+	jr z, .asm_8d7
+	ld b, $60
+	jr c, .asm_8d7
+	cp $2
+	ld b, $70
+	jr z, .asm_8d7
+	ld b, $80
+
+.asm_8d7
+	call $08f3
+	ld a, [$cf56]
+	add b
+	ld [$ffcd], a
+	ld a, [$ffcb]
+	cp $2
+	jr nz, .asm_8ee
+	ld a, $1
+	ld [rSC], a
+	ld a, $81
+	ld [rSC], a
+
+.asm_8ee
+	call $08f3
+	pop bc
+	ret
+; 8f3
+
+Function8f3: ; 8f3
+	ld a, [$ffce]
+	ld [$cf51], a
+	and $f0
+	cp b
+	ret nz
 	xor a
-	
-.zeroloop
+	ld [$ffce], a
+	ld a, [$cf51]
+	and $f
+	ld [$cf52], a
+	ret
+; 908
+
+Function908: ; 908
+	xor a
+	ld [$ffcd], a
+	ld a, [$ffcb]
+	cp $2
+	ret nz
+	ld a, $1
+	ld [rSC], a
+	ld a, $81
+	ld [rSC], a
+	ret
+; 919
+
+Function919: ; 919
+	ld a, [InLinkBattle]
+	and a
+	ret nz
+	ld a, $2
+	ld [rSB], a
+	xor a
+	ld [$ffce], a
+	ld a, $0
+	ld [rSC], a
+	ld a, $80
+	ld [rSC], a
+	ret
+; 92e
+
+
+
+INCLUDE "engine/joypad.asm"
+
+
+Functiona1b: ; a1b
+.asm_a1b
+	call DelayFrame
+	push bc
+	call Functiona57
+	pop bc
+	ld a, [hJoyDown]
+	cp $46
+	jr z, .asm_a34
+	ld a, [$ffa9]
+	and $9
+	jr nz, .asm_a34
 	dec c
-	jr nz, .zeronext
-	dec b
-	jp z, .loop
-	
-.zeronext
-	ld [de], a
-	inc de
-	jr .zeroloop
-	
-	
-; repeats
-; 80, a0, c0
-; repeat decompressed data from output
-.repeatertype
+	jr nz, .asm_a1b
+	and a
+	ret
+
+.asm_a34
+	scf
+	ret
+; a36
+
+
+
+Functiona36: ; a36
+.asm_a36
+	call DelayFrame
+	call GetJoypadPublic
+	ld a, [hJoyPressed]
+	and $3
+	ret nz
+	call RTC
+	jr .asm_a36
+; a46
+
+Functiona46: ; a46
+	ld a, [hOAMUpdate]
+	push af
+	ld a, $1
+	ld [hOAMUpdate], a
+	call WaitBGMap
+	call $0a36
+	pop af
+	ld [hOAMUpdate], a
+	ret
+; a57
+
+
+
+Functiona57: ; a57
+	call GetJoypadPublic
+	ld a, [$ffaa]
+	and a
+	ld a, [hJoyPressed]
+	jr z, .asm_a63
+	ld a, [hJoyDown]
+
+.asm_a63
+	ld [$ffa9], a
+	ld a, [hJoyPressed]
+	and a
+	jr z, .asm_a70
+	ld a, $f
+	ld [TextDelayFrames], a
+	ret
+
+.asm_a70
+	ld a, [TextDelayFrames]
+	and a
+	jr z, .asm_a7a
+	xor a
+	ld [$ffa9], a
+	ret
+
+.asm_a7a
+	ld a, $5
+	ld [TextDelayFrames], a
+	ret
+; a80
+
+Functiona80: ; a80
+	ld a, [hConnectionStripLength]
+	push af
+	ld a, [hConnectedMapWidth]
+	push af
+	xor a
+	ld [hConnectionStripLength], a
+	ld a, $6
+	ld [hConnectedMapWidth], a
+.asm_a8d
 	push hl
+	ld hl, $c606
+	call $0b06
+	pop hl
+	call Functiona57
+	ld a, [$ffa9]
+	and $3
+	jr z, .asm_a8d
+	pop af
+	ld [hConnectedMapWidth], a
+	pop af
+	ld [hConnectionStripLength], a
+	ret
+; aa5
+
+Functionaa5: ; aa5
+.asm_aa5
+	call Functiona57
+	ld a, [$ffa9]
+	and $3
+	jr z, .asm_aa5
+	ret
+; aaf
+
+
+
+Functionaaf: ; aaf
+	ld a, [InLinkBattle]
+	and a
+	jr nz, .asm_ac1
+	call Functionac6
+	push de
+	ld de, SFX_READ_TEXT_2
+	call StartSFX
+	pop de
+	ret
+
+.asm_ac1
+	ld c, $41
+	jp DelayFrames
+; ac6
+
+Functionac6: ; ac6
+	ld a, [hOAMUpdate]
 	push af
-; get next byte
-	ld a, [hli]
-; absolute?
-	bit 7, a
-	jr z, .absolute
-	
-; relative
-; a = -a
-	and %01111111 ; forget the bit we just looked at
-	cpl
-; add de (current output address)
-	add e
-	ld l, a
-	ld a, $ff ; -1
-	adc d
-	ld h, a
-	jr .repeaters
-	
-.absolute
-; get next byte (lo)
-	ld l, [hl]
-; last byte (hi)
-	ld h, a
-; add starting output address
-	ld a, [$c2c2]
-	add l
-	ld l, a
-	ld a, [$c2c3]
-	adc h
-	ld h, a
-	
-.repeaters
+	ld a, $1
+	ld [hOAMUpdate], a
+	ld a, [InputType]
+	or a
+	jr z, .asm_ad9
+	ld a, $77
+	ld hl, $628a
+	rst FarCall
+
+.asm_ad9
+	call Functionaf5
+	call Functiona57
+	ld a, [hJoyPressed]
+	and $3
+	jr nz, .asm_af1
+	call RTC
+	ld a, $1
+	ld [hBGMapMode], a
+	call DelayFrame
+	jr .asm_ad9
+
+.asm_af1
 	pop af
-	cp $80 ; LZ_REPEAT
-	jr z, .repeat
-	cp $a0 ; LZ_FLIP
-	jr z, .flip
-	cp $c0 ; LZ_REVERSE
-	jr z, .reverse
-	
-; e0 -> 80
-	
-; 80 ; LZ_REPEAT
-; repeat some decompressed data
-.repeat
-; done?
-	dec c
-	jr nz, .repeatnext
-	dec b
-	jr z, .cleanup
-	
-.repeatnext
-	ld a, [hli]
-	ld [de], a
-	inc de
-	jr .repeat
-	
-	
-; a0 ; LZ_FLIP
-; repeat some decompressed data w/ flipped bit order
-.flip
-	dec c
-	jr nz, .flipnext
-	dec b
-	jp z, .cleanup
-	
-.flipnext
-	ld a, [hli]
+	ld [hOAMUpdate], a
+	ret
+; af5
+
+Functionaf5: ; af5
+	ld a, [$ff9b]
+	and $10
+	jr z, .asm_aff
+	ld a, $ee
+	jr .asm_b02
+
+.asm_aff
+	ld a, [$c605]
+
+.asm_b02
+	ld [$c606], a
+	ret
+; b06
+
+Functionb06: ; b06
 	push bc
-	ld bc, $0008
-	
-.fliploop
-	rra
-	rl b
-	dec c
-	jr nz, .fliploop
-	ld a, b
+	ld a, [hl]
+	ld b, a
+	ld a, $ee
+	cp b
 	pop bc
-	ld [de], a
-	inc de
-	jr .flip
-	
-	
-; c0 ; LZ_REVERSE
-; repeat some decompressed data in reverse
-.reverse
-	dec c
-	jr nz, .reversenext
-	
-	dec b
-	jp z, .cleanup
-	
-.reversenext
-	ld a, [hld]
-	ld [de], a
-	inc de
-	jr .reverse
-	
-	
-.cleanup
-; get type of repeat we just used
-	pop hl
-; was it relative or absolute?
-	bit 7, [hl]
-	jr nz, .next
+	jr nz, .asm_b27
+	ld a, [hConnectionStripLength]
+	dec a
+	ld [hConnectionStripLength], a
+	ret nz
+	ld a, [hConnectedMapWidth]
+	dec a
+	ld [hConnectedMapWidth], a
+	ret nz
+	ld a, $7a
+	ld [hl], a
+	ld a, $ff
+	ld [hConnectionStripLength], a
+	ld a, $6
+	ld [hConnectedMapWidth], a
+	ret
 
-; skip two bytes for absolute
-	inc hl
-; skip one byte for relative
-.next
-	inc hl
-	jp .loop
-; c2f
+.asm_b27
+	ld a, [hConnectionStripLength]
+	and a
+	ret z
+	dec a
+	ld [hConnectionStripLength], a
+	ret nz
+	dec a
+	ld [hConnectionStripLength], a
+	ld a, [hConnectedMapWidth]
+	dec a
+	ld [hConnectedMapWidth], a
+	ret nz
+	ld a, $6
+	ld [hConnectedMapWidth], a
+	ld a, $ee
+	ld [hl], a
+	ret
+; b40
 
 
+INCLUDE "engine/decompress.asm"
 
 
 UpdatePalsIfCGB: ; c2f
@@ -973,9 +1478,72 @@
 ; cf8
 
 
-INCBIN "baserom.gbc", $cf8, $d50 - $cf8
+Functioncf8: ; cf8
+	ld [rOBP0], a
+	push af
+	ld a, [hCGB]
+	and a
+	jr z, .asm_d22
+	push hl
+	push de
+	push bc
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, $d0c0
+	ld de, MartPointer
+	ld a, [rOBP0]
+	ld b, a
+	ld c, $1
+	call CopyPals
+	ld a, $1
+	ld [hCGBPalUpdate], a
+	pop af
+	ld [rSVBK], a
+	pop bc
+	pop de
+	pop hl
 
+.asm_d22
+	pop af
+	ret
+; d24
 
+Functiond24: ; d24
+	ld [rOBP1], a
+	push af
+	ld a, [hCGB]
+	and a
+	jr z, .asm_d4e
+	push hl
+	push de
+	push bc
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, $d0c8
+	ld de, $d048
+	ld a, [rOBP1]
+	ld b, a
+	ld c, $1
+	call CopyPals
+	ld a, $1
+	ld [hCGBPalUpdate], a
+	pop af
+	ld [rSVBK], a
+	pop bc
+	pop de
+	pop hl
+
+.asm_d4e
+	pop af
+	ret
+; d50
+
+
+
 CopyPals: ; d50
 ; copy c palettes in order b from de to hl
 
@@ -1029,9 +1597,240 @@
 ; d79
 
 
-INCBIN "baserom.gbc", $d79, $e8d - $d79
+Functiond79: ; d79
+	ld a, [hCGB]
+	and a
+	ret z
+	ld a, $1
+	ld [rVBK], a
+	ld hl, VTiles0
+	ld bc, $2000
+	xor a
+	call ByteFill
+	ld a, $0
+	ld [rVBK], a
+	ret
+; d90
 
 
+Functiond90: ; d90
+	ret
+; d91
+
+
+Functiond91: ; d91
+	ld a, [hCGB]
+	and a
+	ret z
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, $d080
+	ld bc, $0050
+	xor a
+	call ByteFill
+	pop af
+	ld [rSVBK], a
+	ld a, $1
+	ld [hCGBPalUpdate], a
+	call DelayFrame
+	ret
+; db1
+
+
+Functiondb1: ; db1
+	ld a, [hROMBank]
+	push af
+	ld a, $13
+	rst Bankswitch
+
+	call $4000
+	pop af
+	rst Bankswitch
+
+	ret
+; dbd
+
+Functiondbd: ; dbd
+	ld a, [hROMBank]
+	push af
+	ld a, $13
+	rst Bankswitch
+
+	call $403f
+	pop af
+	rst Bankswitch
+
+	ret
+; dc9
+
+
+
+Functiondc9: ; dc9
+	ld a, [rLCDC]
+	bit 7, a
+	jp z, Copy2bpp
+
+	ld a, [hROMBank]
+	push af
+	ld a, BANK(Function104284)
+	rst Bankswitch
+	call Function104284
+	pop af
+	rst Bankswitch
+
+	ret
+; ddc
+
+Functionddc: ; ddc
+	ld a, [rLCDC]
+	bit 7, a
+	jp z, Copy1bpp
+
+	ld a, [hROMBank]
+	push af
+	ld a, BANK(Function1042b2)
+	rst Bankswitch
+	call Function1042b2
+	pop af
+	rst Bankswitch
+
+	ret
+; def
+
+Functiondef: ; def
+	ld [hBuffer], a
+	ld a, [hROMBank]
+	push af
+	ld a, [hBuffer]
+	rst Bankswitch
+	call FarCopyBytesDouble
+	pop af
+	rst Bankswitch
+	ret
+; dfd
+
+Functiondfd: ; dfd
+	dec c
+	ld a, [hBGMapMode]
+	push af
+	xor a
+	ld [hBGMapMode], a
+	ld a, [hROMBank]
+	push af
+	ld a, b
+	rst Bankswitch
+
+.asm_e09
+	ld a, d
+	ld [rHDMA1], a
+	ld a, e
+	and $f0
+	ld [rHDMA2], a
+	ld a, h
+	and $1f
+	ld [rHDMA3], a
+	ld a, l
+	and $f0
+	ld [rHDMA4], a
+	ld a, c
+	cp $8
+	jr c, .asm_e3c
+	sub $8
+	ld c, a
+	ld a, $f
+	ld [hDMATransfer], a
+	call DelayFrame
+	ld a, l
+	add $0
+	ld l, a
+	ld a, h
+	adc $1
+	ld h, a
+	ld a, e
+	add $0
+	ld e, a
+	ld a, d
+	adc $1
+	ld d, a
+	jr .asm_e09
+
+.asm_e3c
+	ld a, c
+	and $7f
+	ld [hDMATransfer], a
+	call DelayFrame
+	pop af
+	rst Bankswitch
+
+	pop af
+	ld [hBGMapMode], a
+	ret
+; e4a
+
+
+
+Functione4a: ; e4a
+	ld a, $5
+	ld hl, $4135
+	rst FarCall
+	ret
+; e51
+
+
+
+Functione51: ; e51
+	ld a, $3e
+	ld hl, $7449
+	rst FarCall
+	ret
+; e58
+
+Functione58: ; e58
+	ld a, $3e
+	ld hl, $74be
+	rst FarCall
+	ret
+; e5f
+
+
+
+Functione5f: ; e5f
+	ld a, $3e
+	ld hl, $748a
+	rst FarCall
+	ld a, $3e
+	ld hl, $74b0
+	rst FarCall
+	ret
+; e6c
+
+Functione6c: ; e6c
+	ld a, $3e
+	ld hl, $74b0
+	rst FarCall
+	ret
+; e73
+
+Functione73: ; e73
+	push de
+	ld a, $0
+	call GetSRAMBank
+	push bc
+	ld de, $a000
+	ld a, b
+	call FarDecompress
+	pop bc
+	pop hl
+	ld de, $a000
+	call Request2bpp
+	call CloseSRAM
+	ret
+; e8d
+
+
+
 FarCopyBytes: ; e8d
 ; copy bc bytes from a:hl to de
 
@@ -1088,439 +1887,217 @@
 ; 0xeba
 
 
-INCBIN "baserom.gbc", $eba, $fb6 - $eba
+Request2bpp: ; eba
+	ld a, [hBGMapMode]
+	push af
+	xor a
+	ld [hBGMapMode], a
 
+	ld a, [hROMBank]
+	push af
+	ld a, b
+	rst Bankswitch
 
-ClearBox: ; fb6
-; Fill a c*b box at hl with blank tiles.
+	ld a, [$ffd3]
+	push af
 
-	ld a, " "
-.y
-	push bc
-	push hl
-.x
-	ld [hli], a
-	dec c
-	jr nz, .x
-	pop hl
-	ld bc, 20 ; screen width
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, .y
-	ret
-; fc8
+	ld a, $8
+	ld [$ffd3], a
+	ld a, [InLinkBattle]
+	cp $4
+	jr nz, .asm_edc
+	ld a, [$ffe9]
+	and a
+	jr nz, .asm_edc
+	ld a, $6
+	ld [$ffd3], a
 
+.asm_edc
+	ld a, e
+	ld [$cf68], a
+	ld a, d
+	ld [$cf69], a
+	ld a, l
+	ld [$cf6a], a
+	ld a, h
+	ld [$cf6b], a
 
-ClearTileMap: ; fc8
-; Fill TileMap with blank tiles.
+.asm_eec
+	ld a, c
+	ld hl, $ffd3
+	cp [hl]
+	jr nc, .asm_f08
 
-	ld hl, TileMap
-	ld a, " "
-	ld bc, 360 ; screen dimensions 20*18
-	call ByteFill
-	
-; We aren't done if the LCD is on.
-	ld a, [rLCDC]
-	bit 7, a
-	ret z
-	jp WaitBGMap
-; fdb
+	ld [$cf67], a
+.wait
+	call DelayFrame
+	ld a, [$cf67]
+	and a
+	jr nz, .wait
 
+	pop af
+	ld [$ffd3], a
 
-INCBIN "baserom.gbc", $fdb, $fe8 - $fdb
+	pop af
+	rst Bankswitch
 
-
-TextBox: ; fe8
-; Draw a text box width c height b at hl
-; Dimensions do not include the border.
-	push bc
-	push hl
-	call TextBoxBorder
-	pop hl
-	pop bc
-	jr TextBoxPalette
-; ff1
-
-
-TextBoxBorder: ; ff1
-
-; Top
-	push hl
-	ld a, "┌"
-	ld [hli], a
-	inc a ; "─"
-	call NPlaceChar
-	inc a ; "┐"
-	ld [hl], a
-
-; Middle
-	pop hl
-	ld de, 20 ; screen width
-	add hl, de
-.PlaceRow
-	push hl
-	ld a, "│"
-	ld [hli], a
-	ld a, " "
-	call NPlaceChar
-	ld [hl], "│"
-	pop hl
-	ld de, 20 ; screen width
-	add hl, de
-	dec b
-	jr nz, .PlaceRow
-
-; Bottom
-	ld a, "└"
-	ld [hli], a
-	ld a, "─"
-	call NPlaceChar
-	ld [hl], "┘"
-
+	pop af
+	ld [hBGMapMode], a
 	ret
-; 101e
 
+.asm_f08
+	ld a, [$ffd3]
+	ld [$cf67], a
+.asm_f0d
+	call DelayFrame
+	ld a, [$cf67]
+	and a
+	jr nz, .asm_f0d
+	ld a, c
+	ld hl, $ffd3
+	sub [hl]
+	ld c, a
+	jr .asm_eec
+; f1e
 
-NPlaceChar: ; 101e
-; Place char a c times
-	ld d,c
-.loop
-	ld [hli],a
-	dec d
-	jr nz, .loop
-	ret
-; 1024
 
+Request1bpp: ; f1e
+	ld a, [hBGMapMode]
+	push af
+	xor a
+	ld [hBGMapMode], a
 
-TextBoxPalette: ; 1024
-; Fill text box width c height b at hl with pal 7
-	ld de, AttrMap - TileMap
-	add hl, de
-	inc b
-	inc b
-	inc c
-	inc c
-	ld a, 7 ; pal
-.gotoy
-	push bc
-	push hl
-.gotox
-	ld [hli], a
-	dec c
-	jr nz, .gotox
-	pop hl
-	ld de, 20 ; screen width
-	add hl, de
-	pop bc
-	dec b
-	jr nz, .gotoy
-	ret
-; 103e
+	ld a, [hROMBank]
+	push af
+	ld a, b
+	rst Bankswitch
 
+	ld a, [$ffd3]
+	push af
 
-SpeechTextBox: ; 103e
-; Standard textbox.
-	hlcoord 0, 12
-	ld b, 4 ; height
-	ld c, 18 ; screen width - 2 (border)
-	jp TextBox
-; 1048
+	ld a, $8
+	ld [$ffd3], a
+	ld a, [InLinkBattle]
+	cp $4
+	jr nz, .asm_f40
+	ld a, [$ffe9]
+	and a
+	jr nz, .asm_f40
+	ld a, $6
+	ld [$ffd3], a
 
+.asm_f40
+	ld a, e
+	ld [$cf6d], a
+	ld a, d
+	ld [$cf6e], a
+	ld a, l
+	ld [$cf6f], a
+	ld a, h
+	ld [$cf70], a
+.asm_f50
+	ld a, c
+	ld hl, $ffd3
+	cp [hl]
+	jr nc, .asm_f6c
 
-INCBIN "baserom.gbc", $1048, $1057 - $1048
+	ld [$cf6c], a
+.wait
+	call DelayFrame
+	ld a, [$cf6c]
+	and a
+	jr nz, .wait
 
+	pop af
+	ld [$ffd3], a
 
-PrintText: ; 1057
-	call $106c
-	push hl
-	hlcoord 1, 14
-	ld bc, 18 + 3<<8
-	call ClearBox
-	pop hl
+	pop af
+	rst Bankswitch
 
-PrintTextBoxText: ; 1065
-	bccoord 1, 14
-	call $13e5
+	pop af
+	ld [hBGMapMode], a
 	ret
-; 106c
 
+.asm_f6c
+	ld a, [$ffd3]
+	ld [$cf6c], a
+.asm_f71
+	call DelayFrame
+	ld a, [$cf6c]
+	and a
+	jr nz, .asm_f71
+	ld a, c
+	ld hl, $ffd3
+	sub [hl]
+	ld c, a
+	jr .asm_f50
+; f82
 
-INCBIN "baserom.gbc", $106c, $1078 - $106c
 
+Get2bpp: ; f82
+	ld a, [rLCDC]
+	bit 7, a
+	jp nz, Request2bpp
 
-PlaceString: ; 1078
-	push hl
+Copy2bpp: ; f89
+; copy c 2bpp tiles from b:de to hl
 
-PlaceNextChar: ; 1079
-	ld a, [de]
-	cp "@"
-	jr nz, CheckDict
-	ld b, h
-	ld c, l
-	pop hl
-	ret
+	push hl
+	ld h, d
+	ld l, e
 	pop de
 
-NextChar: ; 1083
-	inc de
-	jp PlaceNextChar
+; bank
+	ld a, b
 
-CheckDict: ; 1087
-	cp $15
-	jp z, $117b
-	cp $4f
-	jp z, Char4F
-	cp $4e
-	jp z, $12a7
-	cp $16
-	jp z, $12b9
-	and a
-	jp z, $1383
-	cp $4c
-	jp z, $1337
-	cp $4b
-	jp z, Char4B
-	cp $51 ; Player name
-	jp z, $12f2
-	cp $49
-	jp z, $1186
-	cp $52 ; Mother name
-	jp z, $118d
-	cp $53
-	jp z, $1194
-	cp $35
-	jp z, $11e8
-	cp $36
-	jp z, $11ef
-	cp $37
-	jp z, $11f6
-	cp $38
-	jp z, $119b
-	cp $39
-	jp z, $11a2
-	cp $54
-	jp z, $11c5
-	cp $5b
-	jp z, $11b7
-	cp $5e
-	jp z, $11be
-	cp $5c
-	jp z, $11b0
-	cp $5d
-	jp z, $11a9
-	cp $23
-	jp z, $11cc
-	cp $22
-	jp z, $12b0
-	cp $55
-	jp z, Char55
-	cp $56
-	jp z, $11d3
-	cp $57
-	jp z, $137c
-	cp $58
-	jp z, $135a
-	cp $4a
-	jp z, $11da
-	cp $24
-	jp z, $11e1
-	cp $25
-	jp z, NextChar
-	cp $1f
-	jr nz, .asm_1122
-	ld a, $7f
-.asm_1122
-	cp $5f
-	jp z, Char5F
-	cp $59
-	jp z, $11fd
-	cp $5a
-	jp z, $1203
-	cp $3f
-	jp z, $121b
-	cp $14
-	jp z, $1252
-	cp $e4
-	jr z, .asm_1174 ; 0x113d $35
-	cp $e5
-	jr z, .asm_1174 ; 0x1141 $31
-	jr .asm_114c ; 0x1143 $7
+; bc = c * $10
+	push af
+	swap c
+	ld a, $f
+	and c
 	ld b, a
-	call $13c6
-	jp NextChar
-.asm_114c
-	cp $60
-	jr nc, .asm_1174 ; 0x114e $24
-	cp $40
-	jr nc, .asm_1165 ; 0x1152 $11
-	cp $20
-	jr nc, .asm_115c ; 0x1156 $4
-	add $80
-	jr .asm_115e ; 0x115a $2
-.asm_115c
-	add $90
-.asm_115e
-	ld b, $e5
-	call $13c6
-	jr .asm_1174 ; 0x1163 $f
-.asm_1165
-	cp $44
-	jr nc, .asm_116d ; 0x1167 $4
-	add $59
-	jr .asm_116f ; 0x116b $2
-.asm_116d
-	add $86
-.asm_116f
-	ld b, $e4
-	call $13c6
-.asm_1174
-	ld [hli], a
-	call PrintLetterDelay
-	jp NextChar
-; 0x117b
+	ld a, $f0
+	and c
+	ld c, a
+	pop af
 
+	jp FarCopyBytes
+; f9d
 
-INCBIN "baserom.gbc", $117b, $1203 - $117b
 
+Get1bpp: ; f9d
+	ld a, [rLCDC]
+	bit 7, a
+	jp nz, Request1bpp
 
-Char5D: ; 1203
-	ld a, [hBattleTurn]
-	push de
-	and a
-	jr nz, .asm_120e ; 0x1207 $5
-	ld de, $c621
-	jr .asm_126a ; 0x120c $5c
-.asm_120e
-	ld de, Char5AText ; Enemy
-	call PlaceString
-	ld h, b
-	ld l, c
-	ld de, $c616
-	jr .asm_126a ; 0x1219 $4f
-	push de
-	ld a, [InLinkBattle]
-	and a
-	jr nz, .linkbattle
-	ld a, [TrainerClass]
-	cp $9
-	jr z, .asm_1248 ; 0x1227 $1f
-	cp $2a
-	jr z, .asm_1248 ; 0x122b $1b
-	ld de, $c656
-	call PlaceString
-	ld h, b
-	ld l, c
-	ld de, $12a2
-	call PlaceString
-	push bc
-	ld hl, $5939
-	ld a, $e
-	rst FarCall
-	pop hl
-	ld de, StringBuffer1
-	jr .asm_126a ; 0x1246 $22
-.asm_1248
-	ld de, $d493
-	jr .asm_126a ; 0x124b $1d
-.linkbattle
-	ld de, $c656
-	jr .asm_126a ; 0x1250 $18
-	push de
-	ld de, PlayerName
-	call PlaceString
-	ld h, b
-	ld l, c
-	ld a, [$d472]
-	bit 0, a
-	ld de, $12a5
-	jr z, .asm_126a ; 0x1263 $5
-	ld de, $12a6
-	jr .asm_126a ; 0x1268 $0
-.asm_126a
-	call PlaceString
-	ld h, b
-	ld l, c
-	pop de
-	jp NextChar
-; 0x1273
+Copy1bpp: ; fa4
+; copy c 1bpp tiles from b:de to hl
 
-
-Char5CText: ; 0x1273
-	db "TM@"
-Char5DText: ; 0x1276
-	db "TRAINER@"
-Char5BText: ; 0x127e
-	db "PC@"
-
-INCBIN "baserom.gbc", $1281, $1293 - $1281
-
-Char56Text: ; 0x1293
-	db "…@"
-Char5AText: ; 0x1295
-	db "Enemy @"
-
-INCBIN "baserom.gbc", $129c, $12ea - $129c
-
-Char4F: ; 12ea
-	pop hl
-	hlcoord 1, 16
-	push hl
-	jp NextChar
-; 0x12f2
-
-INCBIN "baserom.gbc", $12f2, $131f - $12f2
-
-Char4B: ; 131f
-	ld a, [InLinkBattle]
-	or a
-	jr nz, .asm_1328
-	call $13c7
-
-.asm_1328
-	call $13b6
-
 	push de
-	call $aaf
-	pop de
+	ld d, h
+	ld e, l
 
-	ld a, [InLinkBattle]
-	or a
-	call z, $13cd
+; bank
+	ld a, b
 
-	push de
-	call $138c
-	call $138c
-	hlcoord 1, 16
-	pop de
-	jp NextChar
-; 1345
-
-
-Char55: ; 1345
-	push de
-	ld de, .text_1354
+; bc = c * $10 / 2
+	push af
+	ld h, 0
+	ld l, c
+	add hl, hl
+	add hl, hl
+	add hl, hl
 	ld b, h
 	ld c, l
-	call PlaceString
-	ld h, b
-	ld l, c
-	pop de
-	jp NextChar
+	pop af
 
-.text_1354
-	db $4b, "@"
-; 1356
+	pop hl
+	jp FarCopyBytesDouble
+; fb6
 
 
-Char5F: ; 1356
-; ends a Pokédex entry
-	ld [hl], "."
-	pop hl
-	ret
-; 135a
+INCLUDE "engine/text.asm"
 
-INCBIN "baserom.gbc", $135a, $15d8 - $135a
 
 DMATransfer: ; 15d8
 ; DMA transfer
@@ -1696,7 +2273,7 @@
 	ld h, a
 	push hl
 
-; bg map 1 ($9c00)
+; bg map 1 (VBGMap1)
 	xor a
 	ld [hBGMapAddress], a
 	ld a, $9c
@@ -2130,33 +2707,169 @@
 	ret
 ; 17ff
 
-INCBIN "baserom.gbc", $17ff, $185d - $17ff
 
-GetTileType: ; 185d
-; checks the properties of a tile
-; input: a = tile id
+Function17ff: ; 17ff
+	push hl
 	push de
+	push bc
+	ld c, a
+	callba GetSpritePalette
+	ld a, c
+	pop bc
+	pop de
+	pop hl
+	ret
+; 180e
+
+Function180e: ; 180e
 	push hl
-	ld hl, TileTypeTable
+	push bc
+	ld hl, $d156
+	ld c, $1f
+	ld b, a
+	ld a, [hConnectionStripLength]
+	cp $0
+	jr z, .asm_182b
+	ld a, b
+.asm_181d
+	cp [hl]
+	jr z, .asm_1830
+	inc hl
+	inc hl
+	dec c
+	jr nz, .asm_181d
+	ld a, [$d155]
+	scf
+	jr .asm_1833
+
+.asm_182b
+	ld a, [$d155]
+	jr .asm_1833
+
+.asm_1830
+	inc hl
+	xor a
+	ld a, [hl]
+
+.asm_1833
+	pop bc
+	pop hl
+	ret
+; 1836
+
+Function1836: ; 1836
+	push de
+	push hl
+	ld b, a
+	ld a, [hROMBank]
+	push af
+	ld a, $5
+	rst Bankswitch
+
+	ld a, b
+	call $42a7
+	ld c, a
+	pop de
+	ld a, d
+	rst Bankswitch
+
+	pop hl
+	pop de
+	ret
+; 184a
+
+Function184a: ; 184a
+	ld a, [StandingTile]
+	call GetTileCollision
+	ld b, a
+	ret
+; 1852
+
+Function1852: ; 1852
+	ld a, [StandingTile]
+	call GetTileCollision
+	sub $1
+	ret z
+	and a
+	ret
+; 185d
+
+
+
+GetTileCollision: ; 185d
+; Get the collision type of tile a.
+
+	push de
+	push hl
+
+	ld hl, TileCollisionTable
 	ld e, a
-	ld d, $00
+	ld d, 0
 	add hl, de
-	ld a, [hROMBank] ; current bank
+
+	ld a, [hROMBank]
 	push af
-	ld a, BANK(TileTypeTable)
+	ld a, BANK(TileCollisionTable)
 	rst Bankswitch
-	ld e, [hl] ; get tile type
+	ld e, [hl]
 	pop af
-	rst Bankswitch ; return to current bank
+	rst Bankswitch
+
 	ld a, e
-	and a, $0f ; lo nybble only
+	and $f ; lo nybble only
+
 	pop hl
 	pop de
 	ret
 ; 1875
 
-INCBIN "baserom.gbc", $1875, $18a0 - $1875
 
+Function1875: ; 1875
+	ld d, a
+	and $f0
+	cp $10
+	jr z, .asm_1882
+	cp $20
+	jr z, .asm_1888
+	scf
+	ret
+
+.asm_1882
+	ld a, d
+	and 7
+	ret z
+	scf
+	ret
+
+.asm_1888
+	ld a, d
+	and 7
+	ret z
+	scf
+	ret
+; 188e
+
+Function188e: ; 188e
+	cp $14
+	ret z
+	cp $1c
+	ret
+; 1894
+
+CheckCutTreeTile: ; 1894
+	cp $12
+	ret z
+	cp $1a
+	ret
+; 189a
+
+CheckHeadbuttTreeTile: ; 189a
+	cp $15
+	ret z
+	cp $1d
+	ret
+; 18a0
+
 CheckCounterTile: ; 18a0
 	cp $90
 	ret z
@@ -2164,7 +2877,12 @@
 	ret
 ; 18a6
 
-INCBIN "baserom.gbc", $18a6, $18ac - $18a6
+CheckPitTile: ; 18a6
+	cp $60
+	ret z
+	cp $68
+	ret
+; 18ac
 
 CheckIceTile: ; 18ac
 	cp $23
@@ -2177,9 +2895,9 @@
 
 CheckWhirlpoolTile: ; 18b4
 	nop
-	cp $24 ; whirlpool 1
+	cp $24
 	ret z
-	cp $2c ; whirlpool 2
+	cp $2c
 	ret z
 	scf
 	ret
@@ -2192,10 +2910,19 @@
 	ret
 ; 18c3
 
+CheckStandingOnEntrance: ; 18c3
+	ld a, [StandingTile]
+	cp $71 ; door
+	ret z
+	cp $79
+	ret z
+	cp $7a ; stairs
+	ret z
+	cp $7b ; cave
+	ret
+; 18d2
 
-INCBIN "baserom.gbc", $18c3, $18d2 - $18c3
 
-
 GetMapObject: ; 18d2
 ; Return the location of map object a in bc.
 	ld hl, MapObjects
@@ -2207,9 +2934,450 @@
 ; 18de
 
 
-INCBIN "baserom.gbc", $18de, $1b07 - $18de
+Function18de: ; 18de
+	ld [hConnectionStripLength], a
+	call GetMapObject
+	ld hl, $0000
+	add hl, bc
+	ld a, [hl]
+	cp $ff
+	jr z, .asm_18f3
+	ld [hConnectedMapWidth], a
+	call Function1ae5
+	and a
+	ret
 
+.asm_18f3
+	scf
+	ret
+; 18f5
 
+Function18f5: ; 18f5
+	ld hl, $0006
+	add hl, bc
+	ld a, [hl]
+	cp $ff
+	jr nz, .asm_1921
+	ld hl, $0007
+	add hl, bc
+	ld a, [hl]
+	cp $ff
+	jr z, .asm_191c
+	ld hl, .data_191e
+	ld a, [TimeOfDay]
+	add l
+	ld l, a
+	jr nc, .asm_1912
+	inc h
+
+.asm_1912
+	ld a, [hl]
+	ld hl, $0007
+	add hl, bc
+	and [hl]
+	jr nz, .asm_191c
+	scf
+	ret
+
+.asm_191c
+	and a
+	ret
+
+.data_191e
+	db $1
+	db $2
+	db $4
+
+.asm_1921
+	ld hl, $0006
+	add hl, bc
+	ld d, [hl]
+	ld hl, $0007
+	add hl, bc
+	ld e, [hl]
+	ld hl, hHours
+	ld a, d
+	cp e
+	jr z, .asm_1949
+	jr c, .asm_193f
+	ld a, [hl]
+	cp d
+	jr nc, .asm_1949
+	cp e
+	jr c, .asm_1949
+	jr z, .asm_1949
+	jr .asm_194b
+
+.asm_193f
+	ld a, e
+	cp [hl]
+	jr c, .asm_194b
+	ld a, [hl]
+	cp d
+	jr nc, .asm_1949
+	jr .asm_194b
+
+.asm_1949
+	and a
+	ret
+
+.asm_194b
+	scf
+	ret
+; 194d
+
+Function194d: ; 194d
+	ld [hConnectionStripLength], a
+	call GetMapObject
+	call $40e7
+	ret
+; 1956
+
+
+
+Function1956: ; 1956
+	ld [hConnectionStripLength], a
+	call Function271e
+	ld a, [hConnectionStripLength]
+	call GetMapObject
+	ld a, $2
+	ld hl, $40e7
+	rst FarCall
+	ret
+; 1967
+
+Function1967: ; 1967
+	ld [hConnectionStripLength], a
+	call GetMapObject
+	ld hl, $0000
+	add hl, bc
+	ld a, [hl]
+	cp $ff
+	ret z
+	ld [hl], $ff
+	push af
+	call Function1985
+	pop af
+	call Function1ae5
+	callba Function4357
+	ret
+; 1985
+
+Function1985: ; 1985
+	ld hl, $d4cd
+	cp [hl]
+	jr z, .asm_1990
+	ld hl, $d4ce
+	cp [hl]
+	ret nz
+
+.asm_1990
+	callba Function581f
+	ld a, $ff
+	ld [$d4cd], a
+	ld [$d4ce], a
+	ret
+; 199f
+
+Function199f: ; 199f
+	call Function1967
+	call Function2712
+	ret
+; 19a6
+
+Function19a6: ; 19a6
+	push hl
+	call GetMapObject
+	ld d, b
+	ld e, c
+	ld a, $ff
+	ld [de], a
+	inc de
+	pop hl
+	ld bc, $000f
+	call CopyBytes
+	ret
+; 19b8
+
+Function19b8: ; 19b8
+	call GetMapObject
+	ld hl, $0000
+	add hl, bc
+	ld a, [hl]
+	push af
+	ld [hl], $ff
+	inc hl
+	ld bc, $000f
+	xor a
+	call ByteFill
+	pop af
+	cp $ff
+	ret z
+	cp $d
+	ret nc
+	ld b, a
+	ld a, [$d4cd]
+	cp b
+	jr nz, .asm_19de
+	ld a, $ff
+	ld [$d4cd], a
+
+.asm_19de
+	ld a, b
+	call Function1ae5
+	callba Function4357
+	ret
+; 19e9
+
+
+
+Function19e9: ; 19e9
+	ld [$c2e2], a
+	ld a, [hROMBank]
+	ld [$c2e3], a
+	ld a, l
+	ld [$c2e4], a
+	ld a, h
+	ld [$c2e5], a
+	ld a, [$c2e2]
+	call Function18de
+	ret c
+	ld hl, $0003
+	add hl, bc
+	ld [hl], $14
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $0
+	ld hl, VramState
+	set 7, [hl]
+	and a
+	ret
+; 1a13
+
+
+
+Function1a13: ; 1a13
+	push bc
+	push de
+	ld hl, $d4d6
+	ld de, $0028
+	ld c, $d
+.asm_1a1d
+	ld a, [hl]
+	and a
+	jr z, .asm_1a28
+	add hl, de
+	dec c
+	jr nz, .asm_1a1d
+	xor a
+	jr .asm_1a2c
+
+.asm_1a28
+	ld a, $d
+	sub c
+	scf
+
+.asm_1a2c
+	pop de
+	pop bc
+	ret
+; 1a2f
+
+
+
+Function1a2f: ; 1a2f
+	ld hl, $0003
+	add hl, bc
+	ld a, [hl]
+	cp $25
+	jr c, .asm_1a39
+	xor a
+
+.asm_1a39
+	ld hl, Data4273
+	ld e, a
+	ld d, 0
+	add hl, de
+	add hl, de
+	add hl, de
+	add hl, de
+	add hl, de
+	add hl, de
+	ld a, [hl]
+	ret
+; 1a47
+
+Function1a47: ; 1a47
+	push bc
+	push de
+	ld e, a
+	ld d, 0
+	ld hl, Data4273 + 1
+	add hl, de
+	add hl, de
+	add hl, de
+	add hl, de
+	add hl, de
+	add hl, de
+	ld a, BANK(Data4273)
+	call GetFarByte
+	add a
+	add a
+	and $c
+	pop de
+	pop bc
+	ret
+; 1a61
+
+
+Function1a61: ; 1a61
+	ld l, a
+	ld a, [hROMBank]
+	push af
+	ld a, $1
+	rst Bankswitch
+
+	ld a, l
+	push bc
+	call Function1a71
+	pop bc
+	pop af
+	rst Bankswitch
+
+	ret
+; 1a71
+
+Function1a71: ; 1a71
+	ld hl, $0003
+	add hl, de
+	ld [hl], a
+	push de
+	ld e, a
+	ld d, $0
+	ld hl, $4274
+	add hl, de
+	add hl, de
+	add hl, de
+	add hl, de
+	add hl, de
+	add hl, de
+	ld b, h
+	ld c, l
+	pop de
+	ld a, [bc]
+	inc bc
+	rlca
+	rlca
+	and $c
+	ld hl, $0008
+	add hl, de
+	ld [hl], a
+	ld a, [bc]
+	inc bc
+	ld hl, $000b
+	add hl, de
+	ld [hl], a
+	ld a, [bc]
+	inc bc
+	ld hl, $0004
+	add hl, de
+	ld [hl], a
+	ld a, [bc]
+	inc bc
+	ld hl, $0005
+	add hl, de
+	ld [hl], a
+	ld a, [bc]
+	inc bc
+	ld hl, $0006
+	add hl, de
+	ld [hl], a
+	ret
+; 1aae
+
+Function1aae: ; 1aae
+	ld a, [hROMBank]
+	push af
+	ld a, [hli]
+	rst Bankswitch
+
+	ld a, [hli]
+	ld d, [hl]
+	ld hl, $001b
+	add hl, bc
+	add [hl]
+	ld e, a
+	ld a, d
+	adc $0
+	ld d, a
+	inc [hl]
+	ld a, [de]
+	ld h, a
+	pop af
+	rst Bankswitch
+
+	ld a, h
+	ret
+; 1ac6
+
+Function1ac6: ; 1ac6
+	ld hl, VramState
+	set 0, [hl]
+	ret
+; 1acc
+
+Function1acc: ; 1acc
+	ld hl, VramState
+	res 0, [hl]
+	ret
+; 1ad2
+
+
+
+Function1ad2: ; 1ad2
+	ld a, [VramState]
+	bit 0, a
+	ret z
+	callba Function55e0
+	callba Function5920
+	ret
+; 1ae5
+
+
+
+Function1ae5: ; 1ae5
+	ld bc, $0028
+	ld hl, $d4d6
+	call AddNTimes
+	ld b, h
+	ld c, l
+	ret
+; 1af1
+
+Function1af1: ; 1af1
+	ld hl, $0000
+	add hl, bc
+	ld a, [hl]
+	and a
+	ret
+; 1af8
+
+Function1af8: ; 1af8
+	push af
+	ld hl, $0008
+	add hl, bc
+	ld a, [hl]
+	and $f3
+	ld e, a
+	pop af
+	and $c
+	or e
+	ld [hl], a
+	ret
+; 1b07
+
+
+
 GetSpriteDirection: ; 1b07
 	ld hl, $0008
 	add hl, bc
@@ -2219,17 +3387,228 @@
 ; 1b0f
 
 
-INCBIN "baserom.gbc", $1b0f, $1c07 - $1b0f
+Function1b0f: ; 1b0f
+	add $10
+	ld e, a
+	ld a, [hROMBank]
+	push af
+	ld a, $2
+	rst Bankswitch
 
+	call $44d9
+	pop af
+	rst Bankswitch
 
-Function1c07: ; 0x1c07
+	ret
+; 1b1e
+
+Function1b1e: ; 1b1e
+	ld [$d003], a
+	xor a
+	ld [DefaultFlypoint], a
+	ld a, $0
+	ld [$d004], a
+	ld a, $7
+	ld [StartFlypoint], a
+	ld a, $d0
+	ld [EndFlypoint], a
+	ret
+; 1b35
+
+Function1b35: ; 1b35
+	ld a, [DefaultFlypoint]
+	and a
+	ret z
+	dec a
+	ld [DefaultFlypoint], a
+	ret
+; 1b3f
+
+Function1b3f: ; 1b3f
+	push hl
+	push de
+	ld hl, DefaultFlypoint
+	ld e, [hl]
+	inc [hl]
+	ld d, 0
+	ld hl, MovementBuffer
+	add hl, de
+	ld [hl], a
+	pop de
+	pop hl
+	ret
+; 1b50
+
+Function1b50: ; 1b50
 	push af
-	ld hl, $43e8
+	ld a, c
+	and a
+	jr nz, .asm_1b57
+	pop af
+	ret
+
+.asm_1b57
+	pop af
+.asm_1b58
+	call Function1b3f
+	dec c
+	jr nz, .asm_1b58
+	ret
+; 1b5f
+
+Function1b5f: ; 1b5f
+	push af
+	ld a, b
+	sub d
+	ld h, $2
+	jr nc, .asm_1b6a
+	dec a
+	cpl
+	ld h, $3
+
+.asm_1b6a
+	ld d, a
+	ld a, c
+	sub e
+	ld l, $1
+	jr nc, .asm_1b75
+	dec a
+	cpl
+	ld l, $0
+
+.asm_1b75
+	ld e, a
+	cp d
+	jr nc, .asm_1b7f
+	ld a, h
+	ld h, l
+	ld l, a
+	ld a, d
+	ld d, e
+	ld e, a
+
+.asm_1b7f
+	pop af
+	ld b, a
+	ld a, h
+	call Function1b92
+	ld c, d
+	call Function1b50
+	ld a, l
+	call Function1b92
+	ld c, e
+	call Function1b50
+	ret
+; 1b92
+
+Function1b92: ; 1b92
+	push de
+	push hl
+	ld l, b
+	ld h, 0
+	add hl, hl
+	add hl, hl
+	ld e, a
+	ld d, 0
+	add hl, de
+	ld de, .data_1ba5
+	add hl, de
+	ld a, [hl]
+	pop hl
+	pop de
+	ret
+; 1ba5
+
+.data_1ba5
+	db 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
+; 1bb1
+
+Function1bb1: ; 1bb1
+	push hl
+	push bc
+	ld hl, $cfa1
+	ld b, $8
+.asm_1bb8
+	ld a, [de]
+	inc de
+	ld [hli], a
+	dec b
+	jr nz, .asm_1bb8
+	ld a, $1
+	ld [hli], a
+	ld [hli], a
+	xor a
+	ld [hli], a
+	ld [hli], a
+	ld [hli], a
+	pop bc
+	pop hl
+	ret
+; 1bc9
+
+Function1bc9: ; 1bc9
+	ld hl, $41a8
 	ld a, $9
-	rst $8
+	rst FarCall
+	call Function1bdd
+	ret
+; 1bd3
+
+Function1bd3: ; 1bd3
+	ld hl, $41ab
+	ld a, $9
+	rst FarCall
+	call Function1bdd
+	ret
+; 1bdd
+
+Function1bdd: ; 1bdd
+	push bc
+	push af
+	ld a, [$ffa9]
+	and $f0
+	ld b, a
+	ld a, [hJoyPressed]
+	and $f
+	or b
+	ld b, a
 	pop af
+	ld a, b
+	pop bc
 	ret
+; 1bee
 
+Function1bee: ; 1bee
+	ld hl, $cfac
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld [hl], $ec
+	ret
+; 1bf7
+
+Function1bf7: ; 1bf7
+	ld hl, $cfac
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld [hl], $7f
+	ret
+; 1c00
+
+Function1c00: ; 1c00
+	ld hl, $4374
+	ld a, $9
+	rst FarCall
+	ret
+; 1c07
+
+Function1c07: ; 0x1c07
+	push af
+	callab Function243e8
+	pop af
+	ret
+
 Function1c10: ; 0x1c10
 	ld hl, $446d
 	ld a, $9
@@ -2239,15 +3618,15 @@
 Function1c17: ; 0x1c17
 	push af
 	call Function1c07
-	call $321c
-	call $1ad2
+	call Function321c
+	call Function1ad2
 	pop af
 	ret
 
 Function1c23: ; 0x1c23
-	call $1cfd
+	call Function1cfd
 	call Function1c30
-	call $1d19
+	call Function1d19
 	call Function1c30
 	ret
 
@@ -2297,11 +3676,179 @@
 	ret
 ; 0x1c66
 
-INCBIN "baserom.gbc", $1c66, $1d35 - $1c66
+Function1c66: ; 1c66
+	push hl
+	push de
+	push bc
+	push af
+	ld hl, $cf86
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, $cf91
+	ld bc, $0010
+	call CopyBytes
+	pop af
+	pop bc
+	pop de
+	pop hl
+	ret
+; 1c7e
 
-Function1d35: ; 0x1d35
+Function1c7e: ; 1c7e
+	ld hl, $cf71
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	inc hl
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ret
+; 1c89
+
+Function1c89: ; 1c89
+	call Function1c66
+	ld hl, $cf86
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	call Function1cc6
+	call Function1d05
+	inc de
+	ld a, [de]
+	inc de
+	ld b, a
+.asm_1c9c
+	push bc
+	call PlaceString
+	inc de
+	ld bc, $0028
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .asm_1c9c
+	ld a, [$cf91]
+	bit 4, a
+	ret z
+	call Function1cfd
+	ld a, [de]
+	ld c, a
+	inc de
+	ld b, $0
+	add hl, bc
+	jp PlaceString
+; 1cbb
+
+Function1cbb: ; 1cbb
+	call Function1cfd
+	call Function1c53
+	dec b
+	dec c
+	jp TextBox
+; 1cc6
+
+Function1cc6: ; 1cc6
+	ld a, [$cf82]
+	ld b, a
+	inc b
+	ld a, [$cf83]
+	ld c, a
+	inc c
+	ld a, [$cf91]
+	bit 6, a
+	jr nz, .asm_1cd8
+	inc b
+
+.asm_1cd8
+	ld a, [$cf91]
+	bit 7, a
+	jr z, .asm_1ce0
+	inc c
+
+.asm_1ce0
+	ret
+; 1ce1
+
+Function1ce1: ; 1ce1
+	call Function1cfd
+	ld bc, $0015
+	add hl, bc
+	call Function1c53
+	dec b
+	dec c
+	call ClearBox
+	ret
+; 1cf1
+
+Function1cf1: ; 1cf1
+	call Function1cfd
+	call Function1c53
+	inc c
+	inc b
+	call ClearBox
+	ret
+; 1cfd
+
+
+Function1cfd: ; 1cfd
+	ld a, [$cf83]
+	ld c, a
+	ld a, [$cf82]
+	ld b, a
+; 1d05
+
+
+Function1d05: ; 1d05
+	xor a
+	ld h, a
+	ld l, b
+	ld a, c
+	ld b, h
+	ld c, l
+	add hl, hl
+	add hl, hl
+	add hl, bc
+	add hl, hl
+	add hl, hl
+	ld c, a
+	xor a
+	ld b, a
+	add hl, bc
+	ld bc, TileMap
+	add hl, bc
+	ret
+; 1d19
+
+Function1d19: ; 1d19
+	ld a, [$cf83]
+	ld c, a
+	ld a, [$cf82]
+	ld b, a
+	xor a
+	ld h, a
+	ld l, b
+	ld a, c
+	ld b, h
+	ld c, l
+	add hl, hl
+	add hl, hl
+	add hl, bc
+	add hl, hl
+	add hl, hl
+	ld c, a
+	xor a
+	ld b, a
+	add hl, bc
+	ld bc, AttrMap
+	add hl, bc
+	ret
+; 1d35
+
+
+LoadMenuDataHeader: ; 0x1d35
 	call Function1d3c
-	call $1c00
+	call Function1c00
 	ret
 
 Function1d3c: ; 0x1d3c
@@ -2308,27 +3855,81 @@
 	ld de, $cf81
 	ld bc, $0010
 	call CopyBytes
-	ld a, [$ff9d]
+	ld a, [hROMBank]
 	ld [$cf8a], a
 	ret
 ; 0x1d4b
 
-INCBIN "baserom.gbc", $1d4b, $1d81 - $1d4b
+Function1d4b: ; 1d4b
+	ld [$cf88], a
+	ret
+; 1d4f
 
+
+Function1d4f: ; 1d4f
+	push hl
+	call Function1d58
+	pop hl
+	jp PrintText
+; 1d57
+
+Function1d57: ; 1d57
+	ret
+; 1d58
+
+Function1d58: ; 1d58
+	ld hl, MenuDataHeader_0x1d5f
+	call LoadMenuDataHeader
+	ret
+; 1d5f
+
+MenuDataHeader_0x1d5f: ; 1d5f
+	db $40 ; tile backup
+	db 12, 0 ; start coords
+	db 17, 19 ; end coords
+	dw VTiles0
+	db 0 ; default option
+; 1d67
+
+Function1d67: ; 1d67
+	call Function1d4f
+	call Function1c17
+	ret
+; 1d6e
+
+Function1d6e: ; 1d6e
+	ld hl, MenuDataHeader_0x1d75
+	call LoadMenuDataHeader
+	ret
+; 1d75
+
+MenuDataHeader_0x1d75: ; 1d75
+	db $40 ; tile backup
+	db 0, 0 ; start coords
+	db 17, 19 ; end coords
+	dw $0000
+	db 1 ; default option
+; 1d7d
+
+Function1d7d: ; 1d7d
+	call Function1c07
+	ret
+; 1d81
+
 Function1d81: ; 0x1d81
 	xor a
-	ld [$ffd4], a
-	call $1cbb
-	call $1ad2
-	call $1c89
-	call $321c
-	call $1c66
+	ld [hBGMapMode], a
+	call Function1cbb
+	call Function1ad2
+	call Function1c89
+	call Function321c
+	call Function1c66
 	ld a, [$cf91]
 	bit 7, a
 	jr z, .asm_1da7 ; 0x1d98 $d
-	call $1c10
-	call $1bc9
-	call $1ff8
+	call Function1c10
+	call Function1bc9
+	call Function1ff8
 	bit 1, a
 	jr z, .asm_1da9 ; 0x1da5 $2
 .asm_1da7
@@ -2339,7 +3940,13 @@
 	ret
 ; 0x1dab
 
-INCBIN "baserom.gbc", $1dab, $1db8 - $1dab
+Function1dab: ; 1dab
+	call LoadMenuDataHeader
+	call Function1d81
+	call Function1c17
+	ld a, [$cfa9]
+	ret
+; 1db8
 
 Function1db8: ; 0x1db8
 	push hl
@@ -2355,49 +3962,416 @@
 	call GetNthString
 	ld d, h
 	ld e, l
-	call $30d6
+	call CopyName1
 	pop bc
 	pop hl
 	ret
 ; 0x1dcf
 
-INCBIN "baserom.gbc", $1dcf, $1e70 - $1dcf
+Function1dcf: ; 1dcf
+	ld bc, $0e07
+	jr .asm_1dd9
 
+	call LoadMenuDataHeader
+	jr .asm_1dfe
+
+.asm_1dd9
+	push bc
+	ld hl, MenuDataHeader_0x1e1d
+	call Function1d3c
+	pop bc
+	ld a, b
+	cp $e
+	jr nz, .asm_1de9
+	ld a, $e
+	ld b, a
+
+.asm_1de9
+	ld a, b
+	ld [$cf83], a
+	add $5
+	ld [$cf85], a
+	ld a, c
+	ld [$cf82], a
+	add $4
+	ld [$cf84], a
+	call Function1c00
+
+.asm_1dfe
+	call Function1d81
+	push af
+	ld c, $f
+	call DelayFrames
+	call Function1c17
+	pop af
+	jr c, .asm_1e16
+	ld a, [$cfa9]
+	cp $2
+	jr z, .asm_1e16
+	and a
+	ret
+
+.asm_1e16
+	ld a, $2
+	ld [$cfa9], a
+	scf
+	ret
+; 1e1d
+
+MenuDataHeader_0x1e1d: ; 1e1d
+	db $40 ; tile backup
+	db 5, 10 ; start coords
+	db 9, 15 ; end coords
+	dw MenuData2_0x1e25
+	db 1 ; default option
+; 1e25
+
+MenuData2_0x1e25: ; 1e25
+	db $c0 ; flags
+	db 2
+	db "YES@"
+	db "NO@"
+; 1e2e
+
+Function1e2e: ; 1e2e
+	call Function1e35
+	call Function1c00
+	ret
+; 1e35
+
+Function1e35: ; 1e35
+	push de
+	call Function1d3c
+	pop de
+	ld a, [$cf83]
+	ld h, a
+	ld a, [$cf85]
+	sub h
+	ld h, a
+	ld a, d
+	ld [$cf83], a
+	add h
+	ld [$cf85], a
+	ld a, [$cf82]
+	ld l, a
+	ld a, [$cf84]
+	sub l
+	ld l, a
+	ld a, e
+	ld [$cf82], a
+	add l
+	ld [$cf84], a
+	ret
+; 1e5d
+
+Function1e5d: ; 1e5d
+	call MenuFunc_1e7f
+	call MenuWriteText
+	call Function1eff
+	call Function1f23
+	call Function1bdd
+	call Function1ff8
+	ret
+; 1e70
+
 SetUpMenu: ; 1e70
 	call MenuFunc_1e7f ; ???
 	call MenuWriteText
-	call $1eff ; set up selection pointer
+	call Function1eff ; set up selection pointer
 	ld hl, $cfa5
 	set 7, [hl]
 	ret
 
 MenuFunc_1e7f: ; 0x1e7f
-	call $1c66
-	call $1ebd
-	call $1ea6
-	call $1cbb
+	call Function1c66
+	call Function1ebd
+	call Function1ea6
+	call Function1cbb
 	ret
 
 MenuWriteText: ; 0x1e8c
 	xor a
 	ld [hBGMapMode], a
-	call $1ebd ; sort out the text 
-	call $1eda ; actually write it
-	call $2e31
+	call Function1ebd ; sort out the text 
+	call Function1eda ; actually write it
+	call Function2e31
 	ld a, [hOAMUpdate]
 	push af
 	ld a, $1
 	ld [hOAMUpdate], a
-	call $321c
+	call Function321c
 	pop af
 	ld [hOAMUpdate], a
 	ret
 ; 0x1ea6
 
-INCBIN "baserom.gbc", $1ea6, $2009 - $1ea6
+Function1ea6: ; 1ea6
+	ld a, [$cf83]
+	ld c, a
+	ld a, [$cf85]
+	sub c
+	ld c, a
+	ld a, [$cf92]
+	add a
+	inc a
+	ld b, a
+	ld a, [$cf82]
+	add b
+	ld [$cf84], a
+	ret
+; 1ebd
 
-PlayClickSFX: ; $2009
+Function1ebd: ; 1ebd
+	ld hl, $cf93
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [$cf76]
+	and a
+	jr z, .asm_1ed3
+	ld b, a
+	ld c, $ff
+.asm_1ecc
+	ld a, [hli]
+	cp c
+	jr nz, .asm_1ecc
+	dec b
+	jr nz, .asm_1ecc
+
+.asm_1ed3
+	ld d, h
+	ld e, l
+	ld a, [hl]
+	ld [$cf92], a
+	ret
+; 1eda
+
+Function1eda: ; 1eda
+	call Function1cfd
+	ld bc, $002a
+	add hl, bc
+.asm_1ee1
+	inc de
+	ld a, [de]
+	cp $ff
+	ret z
+	ld [MenuSelection], a
 	push de
+	push hl
+	ld d, h
+	ld e, l
+	ld hl, $cf95
+	call Function1efb
+	pop hl
+	ld de, $0028
+	add hl, de
+	pop de
+	jr .asm_1ee1
+; 1efb
+
+Function1efb: ; 1efb
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 1eff
+
+Function1eff: ; 1eff
+	call Function1c10
+	ld hl, $cfa8
+	ld a, [$cf91]
+	bit 3, a
+	jr z, .asm_1f0e
+	set 3, [hl]
+
+.asm_1f0e
+	ld a, [$cf91]
+	bit 2, a
+	jr z, .asm_1f19
+	set 5, [hl]
+	set 4, [hl]
+
+.asm_1f19
+	ret
+; 1f1a
+
+
+Function1f1a: ; 1f1a
+	call Function1bd3
+	ld hl, $cfa8
+	and [hl]
+	jr Function1f2a
+; 1f23
+
+Function1f23: ; 1f23
+	xor a
+	ld [$cf73], a
+	call Function1bc9
+; 1f2a
+
+Function1f2a: ; 1f2a
+	bit 0, a
+	jr nz, .asm_1f52
+	bit 1, a
+	jr nz, .asm_1f6d
+	bit 3, a
+	jr nz, .asm_1f6d
+	bit 4, a
+	jr nz, .asm_1f44
+	bit 5, a
+	jr nz, .asm_1f4b
+	xor a
+	ld [$cf73], a
+	jr .asm_1f57
+
+.asm_1f44
+	ld a, $10
+	ld [$cf73], a
+	jr .asm_1f57
+
+.asm_1f4b
+	ld a, $20
+	ld [$cf73], a
+	jr .asm_1f57
+
+.asm_1f52
+	ld a, $1
+	ld [$cf73], a
+
+.asm_1f57
+	call Function1ebd
+	ld a, [$cfa9]
+	ld l, a
+	ld h, $0
+	add hl, de
+	ld a, [hl]
+	ld [MenuSelection], a
+	ld a, [$cfa9]
+	ld [$cf88], a
+	and a
+	ret
+
+.asm_1f6d
+	ld a, $2
+	ld [$cf73], a
+	ld a, $ff
+	ld [MenuSelection], a
+	scf
+	ret
+; 1f79
+
+Function1f79: ; 1f79
+	push de
+	ld hl, $cf97
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [MenuSelection]
+	call GetNthString
+	ld d, h
+	ld e, l
+	pop hl
+	call PlaceString
+	ret
+; 1f8d
+
+Function1f8d: ; 1f8d
+	push de
+	ld a, [MenuSelection]
+	call Function1fb1
+	inc hl
+	inc hl
+	ld a, [hli]
+	ld d, [hl]
+	ld e, a
+	pop hl
+	call PlaceString
+	ret
+; 1f9e
+
+Function1f9e: ; 1f9e
+	call Function1fb1
+	inc hl
+	inc hl
+	ld a, [hli]
+	ld d, [hl]
+	ld e, a
+	ret
+; 1fa7
+
+Function1fa7: ; 1fa7
+	ld a, [MenuSelection]
+	call Function1fb1
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 1fb1
+
+Function1fb1: ; 1fb1
+	ld e, a
+	ld d, $0
+	ld hl, $cf97
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	add hl, de
+	add hl, de
+	add hl, de
+	add hl, de
+	ret
+; 1fbf
+
+Function1fbf: ; 1fbf
+	ld hl, $cf71
+	call Function1ff0
+	ld hl, $cf81
+	call Function1ff0
+	ld hl, $cf91
+	call Function1ff0
+	ld hl, $cfa1
+	call Function1ff0
+	ld a, [rSVBK]
+	push af
+	ld a, $7
+	ld [rSVBK], a
+	xor a
+	ld hl, $dfff
+	ld [hld], a
+	ld [hld], a
+	ld a, l
+	ld [$cf71], a
+	ld a, h
+	ld [$cf72], a
+	pop af
+	ld [rSVBK], a
+	ret
+; 1ff0
+
+Function1ff0: ; 1ff0
+	ld bc, $0010
+	xor a
+	call ByteFill
+	ret
+; 1ff8
+
+Function1ff8: ; 1ff8
+	push af
+	and $3
+	jr z, .asm_2007
+	ld hl, $cf81
+	bit 3, [hl]
+	jr nz, .asm_2007
+	call PlayClickSFX
+
+.asm_2007
+	pop af
+	ret
+; 2009
+
+
+PlayClickSFX: ; 2009 
+	push de
 	ld de, SFX_READ_TEXT_2
 	call StartSFX
 	pop de
@@ -2404,8 +4378,71 @@
 	ret
 ; 0x2012
 
-INCBIN "baserom.gbc", $2012, $2063 - $2012
+Function2012: ; 2012
+	call Function1d4f
+	call Functiona46
+	call Function1c07
+	ret
+; 201c
 
+Function201c: ; 201c
+	ld [hBuffer], a
+	ld a, [hROMBank]
+	push af
+	ld a, [hBuffer]
+	rst Bankswitch
+
+	call PlaceString
+	pop af
+	rst Bankswitch
+
+	ret
+; 202a
+
+Function202a: ; 202a
+	ld a, [hROMBank]
+	ld [$cf94], a
+	ld a, $9
+	ld hl, $400e
+	rst FarCall
+	ld a, [$cf88]
+	ret
+; 2039
+
+Function2039: ; 2039
+	ld a, [hROMBank]
+	ld [$cf94], a
+	ld a, $9
+	ld hl, $4022
+	rst FarCall
+	ld a, [$cf88]
+	ret
+; 2048
+
+Function2048: ; 2048
+	ld a, [hROMBank]
+	ld [$cf94], a
+	ld a, $9
+	ld hl, $403c
+	rst FarCall
+	ld a, [$cf88]
+	ret
+; 2057
+
+Function2057: ; 2057
+	ld a, [hROMBank]
+	push af
+	ld a, $21
+	rst Bankswitch
+
+	call $42db
+	pop af
+	rst Bankswitch
+
+	ret
+; 2063
+
+
 AskSerial: ; 2063
 ; send out a handshake while serial int is off
 	ld a, [$c2d4]
@@ -2444,8 +4481,19 @@
 	ret
 ; 208a
 
-INCBIN "baserom.gbc", $208a, $209e - $208a
 
+Function208a: ; 208a
+	xor a
+	ld [GameTimeCap], a
+	ld [GameTimeHours], a
+	ld [$d4c5], a
+	ld [GameTimeMinutes], a
+	ld [GameTimeSeconds], a
+	ld [GameTimeFrames], a
+	ret
+; 209e
+
+
 GameTimer: ; 209e
 ; precautionary
 	nop
@@ -2575,9 +4623,402 @@
 ; 210f
 
 
-INCBIN "baserom.gbc", $210f, $22ee - $210f
+Function210f: ; 210f
+	ld hl, $c7e8
+	ld bc, $0018
+	ld a, $0
+	call ByteFill
+	ret
+; 211b
 
+Function211b: ; 211b
+	push hl
+	ld hl, $dbf7
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	or h
+	ld a, [hl]
+	jr nz, .asm_2128
+	ld a, $ff
 
+.asm_2128
+	pop hl
+	ret
+; 212a
+
+Function212a: ; 212a
+	ld a, [MapGroup]
+	ld b, a
+	ld a, [MapNumber]
+	ld c, a
+	xor a
+	ld [$dbf7], a
+	ld [$dbf8], a
+	call Function2147
+	ret c
+	ld a, e
+	ld [$dbf7], a
+	ld a, d
+	ld [$dbf8], a
+	xor a
+	ret
+; 2147
+
+Function2147: ; 2147
+	push bc
+	ld a, [hROMBank]
+	push af
+	ld a, $13
+	rst Bankswitch
+
+	ld hl, $501e
+.asm_2151
+	push hl
+	ld a, [hli]
+	cp $ff
+	jr z, .asm_2167
+	cp b
+	jr nz, .asm_2160
+	ld a, [hli]
+	cp c
+	jr nz, .asm_2160
+	jr .asm_216a
+
+.asm_2160
+	pop hl
+	ld de, $0004
+	add hl, de
+	jr .asm_2151
+
+.asm_2167
+	scf
+	jr .asm_216d
+
+.asm_216a
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+
+.asm_216d
+	pop hl
+	pop bc
+	ld a, b
+	rst Bankswitch
+
+	pop bc
+	ret
+; 2173
+
+Function2173: ; 2173
+	call Function217a
+	call $0db1
+	ret
+; 217a
+
+Function217a: ; 217a
+	ld a, [hROMBank]
+	push af
+	ld a, [TileSetBlocksBank]
+	rst Bankswitch
+
+	call Function2198
+	ld a, $60
+	ld hl, TileMap
+	ld bc, $0168
+	call ByteFill
+	ld a, $13
+	rst Bankswitch
+
+	call $515b
+	pop af
+	rst Bankswitch
+
+	ret
+; 2198
+
+Function2198: ; 2198
+	ld a, [$d194]
+	ld e, a
+	ld a, [$d195]
+	ld d, a
+	ld hl, EnemyMoveAnimation
+	ld b, $5
+	push de
+	push hl
+	ld c, $6
+	push de
+	push hl
+	ld a, [de]
+	and a
+	jr nz, .asm_21b2
+	ld a, [$d19d]
+
+.asm_21b2
+	ld e, l
+	ld d, h
+	add a
+	ld l, a
+	ld h, $0
+	add hl, hl
+	add hl, hl
+	add hl, hl
+	ld a, [TileSetBlocksAddress]
+	add l
+	ld l, a
+	ld a, [$d1de]
+	adc h
+	ld h, a
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, e
+	add $14
+	ld e, a
+	jr nc, .asm_21d8
+	inc d
+
+.asm_21d8
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, e
+	add $14
+	ld e, a
+	jr nc, .asm_21eb
+	inc d
+
+.asm_21eb
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, e
+	add $14
+	ld e, a
+	jr nc, .asm_21fe
+	inc d
+
+.asm_21fe
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	pop hl
+	ld de, $0004
+	add hl, de
+	pop de
+	inc de
+	dec c
+	jp nz, $21a9
+	pop hl
+	ld de, $0060
+	add hl, de
+	pop de
+	ld a, [$d19f]
+	add $6
+	add e
+	ld e, a
+	jr nc, .asm_2225
+	inc d
+
+.asm_2225
+	dec b
+	jp nz, $21a5
+	ret
+; 222a
+
+Function222a: ; 222a
+	ld a, $fa
+	ld [$ff9f], a
+	ld a, $5
+	ld hl, $5363
+	rst FarCall
+	xor a
+	ld [$ff9f], a
+	ret
+; 2238
+
+Function2238: ; 2238
+	call Function2252
+	ret nc
+	push bc
+	ld a, $5
+	ld hl, $49af
+	rst FarCall
+	pop bc
+	ret nc
+	call Function22a7
+	scf
+	ret
+; 224a
+
+
+
+Function224a: ; 224a
+	call Function2252
+	ret nc
+	call Function22a7
+	ret
+; 2252
+
+Function2252: ; 2252
+	ld a, $5
+	ld hl, $499a
+	rst FarCall
+	ret nc
+	ld a, [hROMBank]
+	push af
+	call Function2c52
+	call Function2266
+	pop de
+	ld a, d
+	rst Bankswitch
+
+	ret
+; 2266
+
+Function2266: ; 2266
+	ld a, [MapY]
+	sub $4
+	ld e, a
+	ld a, [MapX]
+	sub $4
+	ld d, a
+	ld a, [$dbfb]
+	and a
+	ret z
+	ld c, a
+	ld hl, $dbfc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+.asm_227e
+	push hl
+	ld a, [hli]
+	cp e
+	jr nz, .asm_2289
+	ld a, [hli]
+	cp d
+	jr nz, .asm_2289
+	jr .asm_2296
+
+.asm_2289
+	pop hl
+	ld a, $5
+	add l
+	ld l, a
+	jr nc, .asm_2291
+	inc h
+
+.asm_2291
+	dec c
+	jr nz, .asm_227e
+	xor a
+	ret
+
+.asm_2296
+	pop hl
+	call Function22a3
+	ret nc
+	ld a, [$dbfb]
+	inc a
+	sub c
+	ld c, a
+	scf
+	ret
+; 22a3
+
+Function22a3: ; 22a3
+	inc hl
+	inc hl
+	scf
+	ret
+; 22a7
+
+Function22a7: ; 22a7
+	ld a, [hROMBank]
+	push af
+	call Function2c52
+	call Function22b4
+	pop af
+	rst Bankswitch
+
+	scf
+	ret
+; 22b4
+
+Function22b4: ; 22b4
+	push bc
+	ld hl, $dbfc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, c
+	dec a
+	ld bc, $0005
+	call AddNTimes
+	ld bc, $0002
+	add hl, bc
+	ld a, [hli]
+	cp $ff
+	jr nz, .asm_22d0
+	ld hl, $dcac
+	ld a, [hli]
+
+.asm_22d0
+	pop bc
+	ld [$d146], a
+	ld a, [hli]
+	ld [$d147], a
+	ld a, [hli]
+	ld [$d148], a
+	ld a, c
+	ld [$d149], a
+	ld a, [MapGroup]
+	ld [$d14a], a
+	ld a, [MapNumber]
+	ld [$d14b], a
+	scf
+	ret
+; 22ee
+
+
+
 CheckOutdoorMap: ; 22ee
 	cp ROUTE
 	ret z
@@ -2597,9 +5038,121 @@
 ; 2300
 
 
-INCBIN "baserom.gbc", $2300, $23a3 - $2300
+Function2300: ; 2300
+	cp $3
+	ret z
+	cp $6
+	ret z
+	cp $5
+	ret
+; 2309
 
+Function2309: ; 2309
+	call Function2326
+	call Function2c52
+	call Function234f
+	xor a
+	call Function2336
+	ret
+; 2317
 
+Function2317: ; 2317
+	call Function2326
+	call Function2c52
+	call Function234f
+	ld a, $1
+	call Function2336
+	ret
+; 2326
+
+
+
+Function2326: ; 2326
+	call Function2c3d
+	call Function2c1c
+	call GetSecondaryMapHeaderPointer
+	call Function235c
+	call Function2368
+	ret
+; 2336
+
+Function2336: ; 2336
+	push af
+	ld hl, $d1a6
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	inc hl
+	inc hl
+	call Function23da
+	call Function23f1
+	call Function2408
+	pop af
+	and a
+	ret nz
+	call Function241f
+	ret
+; 234f
+
+Function234f: ; 234f
+	ld hl, $d1a4
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call Function23ac
+	call Function23c3
+	ret
+; 235c
+
+Function235c: ; 235c
+	ld de, $d19d
+	ld c, $c
+.asm_2361
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec c
+	jr nz, .asm_2361
+	ret
+; 2368
+
+Function2368: ; 2368
+	ld a, $ff
+	ld [NorthConnectedMapGroup], a
+	ld [SouthConnectedMapGroup], a
+	ld [WestConnectedMapGroup], a
+	ld [EastConnectedMapGroup], a
+	ld a, [$d1a8]
+	ld b, a
+	bit 3, b
+	jr z, .asm_2384
+	ld de, NorthConnectedMapGroup
+	call GetMapConnection
+
+.asm_2384
+	bit 2, b
+	jr z, .asm_238e
+	ld de, SouthConnectedMapGroup
+	call GetMapConnection
+
+.asm_238e
+	bit 1, b
+	jr z, .asm_2398
+	ld de, WestConnectedMapGroup
+	call GetMapConnection
+
+.asm_2398
+	bit 0, b
+	jr z, .asm_23a2
+	ld de, EastConnectedMapGroup
+	call GetMapConnection
+
+.asm_23a2
+	ret
+; 23a3
+
+
+
 GetMapConnection: ; 23a3
 ; Load map connection struct at hl into de.
 	ld c, SouthMapConnection - NorthMapConnection
@@ -2613,9 +5166,274 @@
 ; 23ac
 
 
-INCBIN "baserom.gbc", $23ac, $2524 - $23ac
+Function23ac: ; 23ac
+	ld a, [hli]
+	ld c, a
+	ld [$dc07], a
+	ld a, l
+	ld [$dc08], a
+	ld a, h
+	ld [$dc09], a
+	ld a, c
+	and a
+	ret z
+	ld bc, $0004
+	call AddNTimes
+	ret
+; 23c3
 
+Function23c3: ; 23c3
+	ld a, [hli]
+	ld c, a
+	ld [$dc0a], a
+	ld a, l
+	ld [$dc0b], a
+	ld a, h
+	ld [$dc0c], a
+	ld a, c
+	and a
+	ret z
+	ld bc, $0003
+	call AddNTimes
+	ret
+; 23da
 
+Function23da: ; 23da
+	ld a, [hli]
+	ld c, a
+	ld [$dbfb], a
+	ld a, l
+	ld [$dbfc], a
+	ld a, h
+	ld [$dbfd], a
+	ld a, c
+	and a
+	ret z
+	ld bc, $0005
+	call AddNTimes
+	ret
+; 23f1
+
+Function23f1: ; 23f1
+	ld a, [hli]
+	ld c, a
+	ld [$dbfe], a
+	ld a, l
+	ld [$dbff], a
+	ld a, h
+	ld [$dc00], a
+	ld a, c
+	and a
+	ret z
+	ld bc, $0008
+	call AddNTimes
+	ret
+; 2408
+
+Function2408: ; 2408
+	ld a, [hli]
+	ld c, a
+	ld [$dc01], a
+	ld a, l
+	ld [$dc02], a
+	ld a, h
+	ld [$dc03], a
+	ld a, c
+	and a
+	ret z
+	ld bc, $0005
+	call AddNTimes
+	ret
+; 241f
+
+Function241f: ; 241f
+	push hl
+	call Function2471
+	pop de
+	ld hl, $d72e
+	ld a, [de]
+	inc de
+	ld [$dc04], a
+	ld a, e
+	ld [$dc05], a
+	ld a, d
+	ld [$dc06], a
+	ld a, [$dc04]
+	call Function2457
+	ld a, [$dc04]
+	ld c, a
+	ld a, $10
+	sub c
+	jr z, .asm_2454
+	ld bc, $0001
+	add hl, bc
+	ld bc, $0010
+.asm_244a
+	ld [hl], $0
+	inc hl
+	ld [hl], $ff
+	dec hl
+	add hl, bc
+	dec a
+	jr nz, .asm_244a
+
+.asm_2454
+	ld h, d
+	ld l, e
+	ret
+; 2457
+
+Function2457: ; 2457
+	and a
+	ret z
+	ld c, a
+.asm_245a
+	push bc
+	push hl
+	ld a, $ff
+	ld [hli], a
+	ld b, $d
+.asm_2461
+	ld a, [de]
+	inc de
+	ld [hli], a
+	dec b
+	jr nz, .asm_2461
+	pop hl
+	ld bc, $0010
+	add hl, bc
+	pop bc
+	dec c
+	jr nz, .asm_245a
+	ret
+; 2471
+
+Function2471: ; 2471
+	ld hl, $d4fe
+	ld bc, $01e0
+	xor a
+	call ByteFill
+	ld hl, $d4fe
+	ld de, $0028
+	ld c, $c
+	xor a
+.asm_2484
+	ld [hl], a
+	add hl, de
+	dec c
+	jr nz, .asm_2484
+	ret
+; 248a
+
+Function248a: ; 248a
+	call GetMapEventBank
+	rst Bankswitch
+
+	ld hl, $d1a6
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	inc hl
+	inc hl
+	inc hl
+	ld a, [WarpNumber]
+	dec a
+	ld c, a
+	ld b, $0
+	ld a, $5
+	call AddNTimes
+	ld a, [hli]
+	ld [YCoord], a
+	ld a, [hli]
+	ld [XCoord], a
+	ld a, [hli]
+	cp $ff
+	jr nz, .asm_24b3
+	call Function24ba
+
+.asm_24b3
+	ld a, $41
+	ld hl, $486d
+	rst FarCall
+	ret
+; 24ba
+
+Function24ba: ; 24ba
+	ld a, [$d149]
+	ld [$dcac], a
+	ld a, [$d14a]
+	ld [BackupMapGroup], a
+	ld a, [$d14b]
+	ld [BackupMapNumber], a
+	ret
+; 24cd
+
+Function24cd: ; 24cd
+	ld hl, OverworldMap
+	ld bc, $0514
+	ld a, $0
+	call ByteFill
+	call Function24e4
+	call FillMapConnections
+	ld a, $1
+	call Function263b
+	ret
+; 24e4
+
+
+
+Function24e4: ; 24e4
+	ld a, [hROMBank]
+	push af
+	ld hl, OverworldMap
+	ld a, [$d19f]
+	ld [hConnectedMapWidth], a
+	add $6
+	ld [hConnectionStripLength], a
+	ld c, a
+	ld b, $0
+	add hl, bc
+	add hl, bc
+	add hl, bc
+	ld c, $3
+	add hl, bc
+	ld a, [$d1a0]
+	rst Bankswitch
+
+	ld a, [$d1a1]
+	ld e, a
+	ld a, [$d1a2]
+	ld d, a
+	ld a, [$d19e]
+	ld b, a
+.asm_250c
+	push hl
+	ld a, [hConnectedMapWidth]
+	ld c, a
+.asm_2510
+	ld a, [de]
+	inc de
+	ld [hli], a
+	dec c
+	jr nz, .asm_2510
+	pop hl
+	ld a, [hConnectionStripLength]
+	add l
+	ld l, a
+	jr nc, .asm_251e
+	inc h
+
+.asm_251e
+	dec b
+	jr nz, .asm_250c
+	pop af
+	rst Bankswitch
+
+	ret
+; 2524
+
+
+
 FillMapConnections: ; 2524
 
 ; North
@@ -2791,10 +5609,11 @@
 	ret
 ; 261b
 
+Function261b: ; 261b
+	ld [$d432], a
+	ret
+; 261f
 
-INCBIN "baserom.gbc", $261b, $261f - $261b
-
-
 PushScriptPointer: ; 261f
 ; Call a script at a:hl.
 
@@ -2811,10 +5630,139 @@
 	ret
 ; 2631
 
+Function2631: ; 2631
+	ld a, [ScriptRunning]
+	and a
+	ret nz
+	call GetMapEventBank
+	jr PushScriptPointer
+; 263b
 
-INCBIN "baserom.gbc", $2631, $26d4 - $2631
+Function263b: ; 263b
+	ld b, a
+	ld a, [hROMBank]
+	push af
+	call Function2c52
+	call Function2653
+	jr nc, .asm_2650
+	call GetMapEventBank
+	ld b, a
+	ld d, h
+	ld e, l
+	call Function2674
 
+.asm_2650
+	pop af
+	rst Bankswitch
 
+	ret
+; 2653
+
+Function2653: ; 2653
+	ld a, [$dc0a]
+	ld c, a
+	and a
+	ret z
+	ld hl, $dc0b
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	or h
+	ret z
+	ld de, $0003
+.asm_2664
+	ld a, [hl]
+	cp b
+	jr z, .asm_266e
+	add hl, de
+	dec c
+	jr nz, .asm_2664
+	xor a
+	ret
+
+.asm_266e
+	inc hl
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	scf
+	ret
+; 2674
+
+Function2674: ; 2674
+	callba Unknown_0x974f3
+	ld a, [ScriptMode]
+	push af
+	ld hl, ScriptFlags
+	ld a, [hl]
+	push af
+	set 1, [hl]
+	callba Function96c56
+	callba ScriptEvents
+	pop af
+	ld [ScriptFlags], a
+	pop af
+	ld [ScriptMode], a
+	ret
+; 269a
+
+Function269a: ; 269a
+	ld a, [hROMBank]
+	push af
+	ld a, b
+	rst Bankswitch
+
+	push hl
+	call SpeechTextBox
+	call Function2e31
+	ld a, $1
+	ld [hOAMUpdate], a
+	call Function321c
+	pop hl
+	call PrintTextBoxText
+	xor a
+	ld [hOAMUpdate], a
+	pop af
+	rst Bankswitch
+
+	ret
+; 26b7
+
+Function26b7: ; 26b7
+	ld [hBuffer], a
+	ld a, [hROMBank]
+	push af
+	ld a, [hBuffer]
+	rst Bankswitch
+
+	call Function26c5
+	pop af
+	rst Bankswitch
+
+	ret
+; 26c5
+
+Function26c5: ; 26c5
+	push de
+	ret
+; 26c7
+
+Function26c7: ; 26c7
+	ld a, [hROMBank]
+	push af
+	ld a, b
+	rst Bankswitch
+
+	ld a, c
+	call Function19e9
+	pop hl
+	ld a, h
+	rst Bankswitch
+
+	ret
+; 26d4
+
+
 GetScriptByte: ; 0x26d4
 ; Return byte at ScriptBank:ScriptPos in a.
 
@@ -2849,6 +5797,7 @@
 	ret
 ; 0x26ef
 
+
 ObjectEvent: ; 0x26ef
 	jumptextfaceplayer ObjectEventText
 ; 0x26f2
@@ -2859,9 +5808,552 @@
 ; 0x26f7
 
 
-INCBIN "baserom.gbc", $26f7, $2a07 - $26f7
+BGEvent: ; 26f7
+	jumptext BGEventText
+; 26fa
 
+BGEventText: ; 26fa
+	text_jump UnknownText_0x1c46fc, BANK(UnknownText_0x1c46fc)
+	db "@"
+; 26ff
 
+
+CoordinatesEvent: ; 26ff
+	jumptext CoordinatesEventText
+; 2702
+
+CoordinatesEventText: ; 2702
+	text_jump UnknownText_0x1c4706, BANK(UnknownText_0x1c4706)
+	db "@"
+; 2707
+
+
+Function2707: ; 2707
+	ld a, [hConnectionStripLength]
+	ld e, a
+	ld d, $0
+	ld hl, $d81e
+	add hl, de
+	ld a, [hl]
+	ret
+; 2712
+
+Function2712: ; 2712
+	ld a, [hConnectionStripLength]
+	ld e, a
+	ld d, $0
+	ld hl, $d81e
+	add hl, de
+	ld [hl], $ff
+	ret
+; 271e
+
+Function271e: ; 271e
+	ld a, [hConnectionStripLength]
+	ld e, a
+	ld d, $0
+	ld hl, $d81e
+	add hl, de
+	ld [hl], $0
+	ret
+; 272a
+
+
+Function272a: ; 272a
+	ld hl, TileMap
+	ld de, BGMapBuffer
+	call Function27b7
+	ld c, $28
+	call Functiondbd
+	ld a, [$d152]
+	ld e, a
+	ld a, [$d153]
+	ld d, a
+	call Function27d3
+	ld a, $1
+	ld [hBGMapUpdate], a
+	ret
+; 2748
+
+Function2748: ; 2748
+	ld hl, $c5e0
+	ld de, BGMapBuffer
+	call Function27b7
+	ld c, $28
+	call Functiondbd
+	ld a, [$d152]
+	ld l, a
+	ld a, [$d153]
+	ld h, a
+	ld bc, $0200
+	add hl, bc
+	ld a, h
+	and $3
+	or $98
+	ld e, l
+	ld d, a
+	call Function27d3
+	ld a, $1
+	ld [hBGMapUpdate], a
+	ret
+; 2771
+
+Function2771: ; 2771
+	ld hl, TileMap
+	ld de, BGMapBuffer
+	call Function27c0
+	ld c, $24
+	call Functiondbd
+	ld a, [$d152]
+	ld e, a
+	ld a, [$d153]
+	ld d, a
+	call Function27f8
+	ld a, $1
+	ld [hBGMapUpdate], a
+	ret
+; 278f
+
+Function278f: ; 278f
+	ld hl, $c4b2
+	ld de, BGMapBuffer
+	call Function27c0
+	ld c, $24
+	call Functiondbd
+	ld a, [$d152]
+	ld e, a
+	and $e0
+	ld b, a
+	ld a, e
+	add $12
+	and $1f
+	or b
+	ld e, a
+	ld a, [$d153]
+	ld d, a
+	call Function27f8
+	ld a, $1
+	ld [hBGMapUpdate], a
+	ret
+; 27b7
+
+Function27b7: ; 27b7
+	ld c, $28
+.asm_27b9
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec c
+	jr nz, .asm_27b9
+	ret
+; 27c0
+
+Function27c0: ; 27c0
+	ld c, $12
+.asm_27c2
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hl]
+	ld [de], a
+	inc de
+	ld a, $13
+	add l
+	ld l, a
+	jr nc, .asm_27cf
+	inc h
+
+.asm_27cf
+	dec c
+	jr nz, .asm_27c2
+	ret
+; 27d3
+
+Function27d3: ; 27d3
+	ld hl, BGMapBufferPtrs
+	push de
+	call $27df
+	pop de
+	ld a, $20
+	add e
+	ld e, a
+	ld c, $a
+.asm_27e1
+	ld a, e
+	ld [hli], a
+	ld a, d
+	ld [hli], a
+	ld a, e
+	inc a
+	inc a
+	and $1f
+	ld b, a
+	ld a, e
+	and $e0
+	or b
+	ld e, a
+	dec c
+	jr nz, .asm_27e1
+	ld a, $14
+	ld [$ffdc], a
+	ret
+; 27f8
+
+Function27f8: ; 27f8
+	ld hl, BGMapBufferPtrs
+	ld c, $12
+.asm_27fd
+	ld a, e
+	ld [hli], a
+	ld a, d
+	ld [hli], a
+	ld a, $20
+	add e
+	ld e, a
+	jr nc, .asm_280e
+	inc d
+	ld a, d
+	and $3
+	or $98
+	ld d, a
+
+.asm_280e
+	dec c
+	jr nz, .asm_27fd
+	ld a, $12
+	ld [$ffdc], a
+	ret
+; 2816
+
+Function2816: ; 2816
+	ld hl, BGMapBuffer
+	ld bc, $0078
+	xor a
+	call ByteFill
+	ret
+; 2821
+
+Function2821: ; 2821
+	ld hl, TileSetAddress
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [TileSetBank]
+	ld e, a
+	ld a, [rSVBK]
+	push af
+	ld a, $6
+	ld [rSVBK], a
+	ld a, e
+	ld de, $d000
+	call FarDecompress
+	ld hl, $d000
+	ld de, VTiles2
+	ld bc, $0600
+	call CopyBytes
+	ld a, [rVBK]
+	push af
+	ld a, $1
+	ld [rVBK], a
+	ld hl, $d600
+	ld de, VTiles2
+	ld bc, $0600
+	call CopyBytes
+	pop af
+	ld [rVBK], a
+	pop af
+	ld [rSVBK], a
+	ld a, [$d199]
+	cp $1
+	jr z, .asm_286f
+	cp $2
+	jr z, .asm_286f
+	cp $4
+	jr z, .asm_286f
+	jr .asm_2875
+
+.asm_286f
+	ld a, $7
+	ld hl, $4000
+	rst FarCall
+
+.asm_2875
+	xor a
+	ld [hTileAnimFrame], a
+	ret
+; 2879
+
+Function2879: ; 2879
+	ld hl, $d194
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, $dcb9
+	ld c, $5
+	ld b, $6
+.asm_2886
+	push bc
+	push hl
+.asm_2888
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec b
+	jr nz, .asm_2888
+	pop hl
+	ld a, [$d19f]
+	add $6
+	ld c, a
+	ld b, $0
+	add hl, bc
+	pop bc
+	dec c
+	jr nz, .asm_2886
+	ret
+; 289d
+
+Function289d: ; 289d
+	ld hl, $d194
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, $dcb9
+	ld a, [$d19f]
+	add $6
+	ld [hConnectionStripLength], a
+	ld a, [$d151]
+	and a
+	jr z, .asm_28cb
+	cp $1
+	jr z, .asm_28c0
+	cp $2
+	jr z, .asm_28d4
+	cp $3
+	jr z, .asm_28da
+	ret
+
+.asm_28c0
+	ld de, $dcbf
+	ld a, [hConnectionStripLength]
+	ld c, a
+	ld b, $0
+	add hl, bc
+	jr .asm_28ce
+
+.asm_28cb
+	ld de, $dcb9
+
+.asm_28ce
+	ld b, $6
+	ld c, $4
+	jr .asm_28f7
+
+.asm_28d4
+	ld de, $dcba
+	inc hl
+	jr .asm_28dd
+
+.asm_28da
+	ld de, $dcb9
+
+.asm_28dd
+	ld b, $5
+	ld c, $5
+	jr .asm_28f7
+
+	ld hl, $d194
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [$d19f]
+	add $6
+	ld [hConnectionStripLength], a
+	ld de, $dcb9
+	ld b, $6
+	ld c, $5
+
+.asm_28f7
+	push bc
+	push hl
+	push de
+.asm_28fa
+	ld a, [de]
+	inc de
+	ld [hli], a
+	dec b
+	jr nz, .asm_28fa
+	pop de
+	ld a, e
+	add $6
+	ld e, a
+	jr nc, .asm_2908
+	inc d
+
+.asm_2908
+	pop hl
+	ld a, [hConnectionStripLength]
+	ld c, a
+	ld b, $0
+	add hl, bc
+	pop bc
+	dec c
+	jr nz, .asm_28f7
+	ret
+; 2914
+
+Function2914: ; 2914
+	xor a
+	ld [TilePermissions], a
+	call Function296c
+	call Function294d
+	ld a, [MapX]
+	ld d, a
+	ld a, [MapY]
+	ld e, a
+	call Function2a3c
+	ld [StandingTile], a
+	call Function29ff
+	ret nz
+	ld a, [StandingTile]
+	and 7
+	ld hl, .data_2945
+	add l
+	ld l, a
+	ld a, 0
+	adc h
+	ld h, a
+	ld a, [hl]
+	ld hl, TilePermissions
+	or [hl]
+	ld [hl], a
+	ret
+; 2945
+
+.data_2945 ; 2945
+	db 1, 2, 4, 8, 9, 10, 5, 6
+; 294d
+
+Function294d: ; 294d
+	ld a, [MapX]
+	ld d, a
+	ld a, [MapY]
+	ld e, a
+	push de
+	inc e
+	call Function2a3c
+	ld [TileDown], a
+	call Function298b
+	pop de
+	dec e
+	call Function2a3c
+	ld [TileUp], a
+	call Function29a8
+	ret
+; 296c
+
+Function296c: ; 296c
+	ld a, [MapX]
+	ld d, a
+	ld a, [MapY]
+	ld e, a
+	push de
+	dec d
+	call Function2a3c
+	ld [TileLeft], a
+	call Function29e2
+	pop de
+	inc d
+	call Function2a3c
+	ld [TileRight], a
+	call Function29c5
+	ret
+; 298b
+
+Function298b: ; 298b
+	call Function29ff
+	ret nz
+	ld a, [TileDown]
+	and $7
+	cp $2
+	jr z, .asm_299f
+	cp $6
+	jr z, .asm_299f
+	cp $7
+	ret nz
+
+.asm_299f
+	ld a, [TilePermissions]
+	or $8
+	ld [TilePermissions], a
+	ret
+; 29a8
+
+Function29a8: ; 29a8
+	call Function29ff
+	ret nz
+	ld a, [TileUp]
+	and $7
+	cp $3
+	jr z, .asm_29bc
+	cp $4
+	jr z, .asm_29bc
+	cp $5
+	ret nz
+
+.asm_29bc
+	ld a, [TilePermissions]
+	or $4
+	ld [TilePermissions], a
+	ret
+; 29c5
+
+Function29c5: ; 29c5
+	call Function29ff
+	ret nz
+	ld a, [TileRight]
+	and $7
+	cp $1
+	jr z, .asm_29d9
+	cp $5
+	jr z, .asm_29d9
+	cp $7
+	ret nz
+
+.asm_29d9
+	ld a, [TilePermissions]
+	or $1
+	ld [TilePermissions], a
+	ret
+; 29e2
+
+Function29e2: ; 29e2
+	call Function29ff
+	ret nz
+	ld a, [TileLeft]
+	and $7
+	cp $0
+	jr z, .asm_29f6
+	cp $4
+	jr z, .asm_29f6
+	cp $6
+	ret nz
+
+.asm_29f6
+	ld a, [TilePermissions]
+	or $2
+	ld [TilePermissions], a
+	ret
+; 29ff
+
+Function29ff: ; 29ff
+	and $f0
+	cp $b0
+	ret z
+	cp $c0
+	ret
+; 2a07
+
+
 GetFacingTileCoord: ; 2a07
 ; Return map coordinates in (d, e) and tile id in a
 ; of the tile the player is facing.
@@ -2908,9 +6400,71 @@
 ; 2a3c
 
 
-INCBIN "baserom.gbc", $2a3c, $2a8b - $2a3c
+Function2a3c: ; 2a3c
+	call Function2a66
+	ld a, [hl]
+	and a
+	jr z, .asm_2a63
+	ld l, a
+	ld h, $0
+	add hl, hl
+	add hl, hl
+	ld a, [TileSetCollisionAddress]
+	ld c, a
+	ld a, [$d1e1]
+	ld b, a
+	add hl, bc
+	rr d
+	jr nc, .asm_2a56
+	inc hl
 
+.asm_2a56
+	rr e
+	jr nc, .asm_2a5c
+	inc hl
+	inc hl
 
+.asm_2a5c
+	ld a, [TileSetCollisionBank]
+	call GetFarByte
+	ret
+
+.asm_2a63
+	ld a, $ff
+	ret
+; 2a66
+
+Function2a66: ; 2a66
+	ld a, [$d19f]
+	add $6
+	ld c, a
+	ld b, $0
+	ld hl, $c801
+	add hl, bc
+	ld a, e
+	srl a
+	jr z, .asm_2a84
+	and a
+.asm_2a78
+	srl a
+	jr nc, .asm_2a7d
+	add hl, bc
+
+.asm_2a7d
+	sla c
+	rl b
+	and a
+	jr nz, .asm_2a78
+
+.asm_2a84
+	ld c, d
+	srl c
+	ld b, $0
+	add hl, bc
+	ret
+; 2a8b
+
+
 CheckFacingSign: ; 2a8b
 	call GetFacingTileCoord
 	ld b, a
@@ -2926,8 +6480,8 @@
 	ld c, a
 	ld a, [hROMBank]
 	push af
-	call $2c52
-	call $2aaa
+	call Function2c52
+	call Function2aaa
 	pop hl
 	ld a, h
 	rst Bankswitch
@@ -2934,7 +6488,7 @@
 	ret
 ; 2aaa
 
-; 2aaa
+Function2aaa: ; 2aaa
 	ld hl, $dc02
 	ld a, [hli]
 	ld h, [hl]
@@ -2970,16 +6524,81 @@
 	call CopyBytes
 	scf
 	ret
-; 0x2ad4
+; 2ad4
 
+Function2ad4: ; 2ad4
+	ld a, [$dbfe]
+	and a
+	ret z
+	ld c, a
+	ld a, [hROMBank]
+	push af
+	call Function2c52
+	call Function2ae7
+	pop hl
+	ld a, h
+	rst Bankswitch
+	ret
+; 2ae7
 
-INCBIN "baserom.gbc", $2ad4, $2b29 - $2ad4
+Function2ae7: ; 2ae7
+	ld hl, $dbff
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call Function211b
+	ld b, a
+	ld a, [MapX]
+	sub $4
+	ld d, a
+	ld a, [MapY]
+	sub $4
+	ld e, a
+.asm_2afd
+	push hl
+	ld a, [hli]
+	cp b
+	jr z, .asm_2b06
+	cp $ff
+	jr nz, .asm_2b10
 
+.asm_2b06
+	ld a, [hli]
+	cp e
+	jr nz, .asm_2b10
+	ld a, [hli]
+	cp d
+	jr nz, .asm_2b10
+	jr .asm_2b1d
 
+.asm_2b10
+	pop hl
+	ld a, $8
+	add l
+	ld l, a
+	jr nc, .asm_2b18
+	inc h
+
+.asm_2b18
+	dec c
+	jr nz, .asm_2afd
+	xor a
+	ret
+
+.asm_2b1d
+	pop hl
+	ld de, EngineBuffer1
+	ld bc, $0008
+	call CopyBytes
+	scf
+	ret
+; 2b29
+
+
 FadeToMenu: ; 2b29
 	xor a
 	ld [hBGMapMode], a
-	call $1d6e
+	call Function1d6e
 	ld a, $23
 	ld hl, $4084
 	rst FarCall
@@ -2989,9 +6608,35 @@
 ; 2b3c
 
 
-INCBIN "baserom.gbc", $2b3c, $2b74 - $2b3c
+Function2b3c: ; 2b3c
+	call WhiteBGMap
+	call Function2bae
+	call Function1ad2
+	call Function1d7d
+	call $0d90
+	jr .asm_2b5c
 
+	call WhiteBGMap
+	call Function1d7d
+	call Function2bae
+	call Function1ad2
+	call $0d90
 
+.asm_2b5c
+	ld b, $9
+	call GetSGBLayout
+	ld a, $12
+	ld hl, $5409
+	rst FarCall
+	call Function3200
+	ld a, $23
+	ld hl, $4079
+	rst FarCall
+	call Function2ee4
+	ret
+; 2b74
+
+
 Function2b74: ; 0x2b74
 	push af
 	ld a, $1
@@ -2998,13 +6643,13 @@
 	ld [$c2ce], a
 	call WhiteBGMap
 	call ClearSprites
-	call $2bae
+	call Function2bae
 	ld hl, $c590 ; tile 0, 12
 	ld bc, $0412
 	call TextBox
 	ld hl, VramState
 	set 0, [hl]
-	call $1ad2
+	call Function1ad2
 	call Function3200
 	ld b, $9
 	call GetSGBLayout
@@ -3011,7 +6656,7 @@
 	ld a, $12
 	ld hl, $5409
 	rst $8
-	call $0485
+	call Function485
 	call DelayFrame
 	ld a, $1
 	ld [$ffde], a
@@ -3019,9 +6664,44 @@
 	ret
 ; 0x2bae
 
-INCBIN "baserom.gbc", $2bae, $2bed-$2bae
+Function2bae: ; 2bae
+	call DisableLCD
+	call ClearSprites
+	ld a, $5
+	ld hl, $4168
+	rst FarCall
+	call $0e51
+	call Functione5f
+	ld a, [hROMBank]
+	push af
+	ld a, [MapGroup]
+	ld b, a
+	ld a, [MapNumber]
+	ld c, a
+	call Function2c24
+	ld a, $23
+	ld hl, $4001
+	rst FarCall
+	call Function2173
+	call Function2821
+	ld a, $9
+	call Function3cb4
+	pop af
+	rst Bankswitch
 
-GetMapHeaderPointer: ; 0x2bed
+	call EnableLCD
+	ret
+; 2be5
+
+
+GetMapHeaderPointer: ; 2be5
+	ld a, [MapGroup]
+	ld b, a
+	ld a, [MapNumber]
+	ld c, a
+; 2bed
+
+GetAnyMapHeaderPointer: ; 0x2bed
 ; Prior to calling this function, you must have switched banks so that
 ; MapGroupPointers is visible.
 
@@ -3077,7 +6757,7 @@
 	ld a, BANK(MapGroupPointers)
 	rst Bankswitch
 
-	call GetMapHeaderPointer
+	call GetAnyMapHeaderPointer
 	add hl, de
 	ld c, [hl]
 	inc hl
@@ -3090,9 +6770,64 @@
 ; 0x2c1c
 
 
-INCBIN "baserom.gbc", $2c1c, $2c5b - $2c1c
+Function2c1c: ; 2c1c
+	ld a, [MapGroup]
+	ld b, a
+	ld a, [MapNumber]
+	ld c, a
+; 2c24
 
+Function2c24: ; 2c24
+	call Function2c31
+	rst Bankswitch
+	ret
+; 2c29
 
+
+Function2c29: ; 2c29
+	ld a, [MapGroup]
+	ld b, a
+	ld a, [MapNumber]
+	ld c, a
+; 2c31
+
+Function2c31: ; 2c31
+	push hl
+	push de
+	ld de, $0000
+	call GetAnyMapHeaderMember
+	ld a, c
+	pop de
+	pop hl
+	ret
+; 2c3d
+
+Function2c3d: ; 2c3d
+	ld a, [hROMBank]
+	push af
+	ld a, $25
+	rst Bankswitch
+	call GetMapHeaderPointer
+	ld de, $d198
+	ld bc, $0005
+	call CopyBytes
+	pop af
+	rst Bankswitch
+	ret
+; 2c52
+
+Function2c52: ; 2c52
+	ld a, [MapEventBank]
+	rst Bankswitch
+	ret
+; 2c57
+
+
+GetMapEventBank: ; 2c57
+	ld a, [MapEventBank]
+	ret
+; 2c5b
+
 GetAnyMapBlockdataBank: ; 2c5b
 ; Return the blockdata bank for group b map c.
 	push hl
@@ -3123,7 +6858,6 @@
 	ret
 ; 2c7d
 
-
 GetSecondaryMapHeaderPointer: ; 0x2c7d
 ; returns the current map's secondary map header pointer in hl.
 	push bc
@@ -3137,7 +6871,6 @@
 	ret
 ; 2c8a
 
-
 GetMapPermission: ; 2c8a
 	push hl
 	push de
@@ -3151,9 +6884,29 @@
 	ret
 ; 2c98
 
+Function2c98: ; 2c98
+	ret
+; 2c99
 
-INCBIN "baserom.gbc", $2c98, $2caf - $2c98
+Function2c99: ; 2c99
+	push hl
+	push de
+	push bc
+	ld de, $0002
+	call GetAnyMapHeaderMember
+	ld a, c
+	pop bc
+	pop de
+	pop hl
+	ret
+; 2ca7
 
+Function2ca7: ; 2ca7
+	ld de, $0001
+	call GetAnyMapHeaderMember
+	ld a, c
+	ret
+; 2caf
 
 GetWorldMapLocation: ; 0x2caf
 ; given a map group/id in bc, return its location on the Pokégear map.
@@ -3169,10 +6922,142 @@
 	ret
 ; 0x2cbd
 
+Function2cbd: ; 2cbd
+	push hl
+	push bc
+	ld de, $0006
+	call GetMapHeaderMember
+	ld a, c
+	cp $64
+	jr z, .asm_2cee
+	bit 7, c
+	jr nz, .asm_2cda
+	ld a, $22
+	ld hl, $7342
+	rst FarCall
+	ld e, c
+	ld d, $0
+.asm_2cd7
+	pop bc
+	pop hl
+	ret
 
-INCBIN "baserom.gbc", $2cbd, $2d63 - $2cbd
+.asm_2cda
+	ld a, [StatusFlags2]
+	bit 0, a
+	jr z, .asm_2ce6
+	ld de, $0056
+	jr .asm_2cd7
 
+.asm_2ce6
+	ld a, c
+	and $7f
+	ld e, a
+	ld d, $0
+	jr .asm_2cd7
 
+.asm_2cee
+	ld a, [StatusFlags2]
+	bit 7, a
+	jr z, .asm_2cfa
+	ld de, $0048
+	jr .asm_2cd7
+
+.asm_2cfa
+	ld de, $0026
+	jr .asm_2cd7
+; 2cff
+
+Function2cff: ; 2cff
+	call Function2d0d
+	and $f
+	ret
+; 2d05
+
+Function2d05: ; 2d05
+	call Function2d0d
+	and $f0
+	swap a
+	ret
+; 2d0d
+
+Function2d0d: ; 2d0d
+	push hl
+	push bc
+	ld de, $0007
+	call GetMapHeaderMember
+	ld a, c
+	pop bc
+	pop hl
+	ret
+; 2d19
+
+Function2d19: ; 2d19
+	push de
+	push hl
+	push bc
+	ld de, $0008
+	call GetMapHeaderMember
+	ld a, c
+	pop bc
+	pop hl
+	pop de
+	ret
+; 2d27
+
+Function2d27: ; 2d27
+	push hl
+	push bc
+	ld hl, $5596
+	ld bc, $000f
+	ld a, [$d199]
+	call AddNTimes
+	ld de, TileSetBank
+	ld bc, $000f
+	ld a, $13
+	call FarCopyBytes
+	pop bc
+	pop hl
+	ret
+; 2d43
+
+Function2d43: ; 2d43
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	ret
+; 2d54
+
+
+FarJpDe: ; 2d54
+	ld [hBuffer], a
+	ld a, [hROMBank]
+	push af
+	ld a, [hBuffer]
+	rst Bankswitch
+	call Function2d61
+	jr ReturnFarJump
+; 2d61
+
+Function2d61: ; 2d61
+	push de
+	ret
+; 2d63
+
+
 FarJpHl: ; 2d63
 ; Jump to a:hl.
 ; Preserves all registers besides a.
@@ -3183,9 +7068,10 @@
 	push af
 	ld a, [hBuffer]
 	rst Bankswitch
-	
-	call .hl
-	
+	call Function2d82
+; 2d6e
+
+ReturnFarJump: ; 2d6e
 ; We want to retain the contents of f.
 ; To do this, we can pop to bc instead of af.
 	
@@ -3204,7 +7090,9 @@
 	ld a, [$cfba]
 	ld c, a
 	ret
-.hl
+; 2d82
+
+Function2d82: ; 2d82
 	jp [hl]
 ; 2d83
 
@@ -3285,7 +7173,7 @@
 
 ResetWindow: ; 2dba
 
-	call $1fbf
+	call Function1fbf
 	ld a, [hROMBank]
 	push af
 	ld a, $1
@@ -3292,7 +7180,7 @@
 	rst Bankswitch
 
 	call $6454
-	call $2e20
+	call Function2e20
 	call $64bf
 
 	pop af
@@ -3301,9 +7189,125 @@
 ; 2dcf
 
 
-INCBIN "baserom.gbc", $2dcf, $2e6f-$2dcf
+Function2dcf: ; 2dcf
+	ld a, [hOAMUpdate]
+	push af
+	ld a, $1
+	ld [hOAMUpdate], a
+	call Function2de2
+	pop af
+	ld [hOAMUpdate], a
+	ld hl, VramState
+	res 6, [hl]
+	ret
+; 2de2
 
+Function2de2: ; 2de2
+	call Function1fbf
+	xor a
+	ld [hBGMapMode], a
+	call Function2173
+	call Function2e20
+	xor a
+	ld [hBGMapMode], a
+	call Function2e31
+	ld a, $90
+	ld [hWY], a
+	call Functione4a
+	ld a, $2e
+	ld hl, $4000
+	rst FarCall
+	ld a, $41
+	ld hl, $6594
+	rst FarCall
+	ret
+; 2e08
 
+Function2e08: ; 2e08
+	call Function1fbf
+	ld a, [hROMBank]
+	push af
+	ld a, $1
+	rst Bankswitch
+
+	call $6454
+	call SpeechTextBox
+	call Function2e20
+	call $64bf
+	pop af
+	rst Bankswitch
+
+	ret
+; 2e20
+
+Function2e20: ; 2e20
+	ld a, [hOAMUpdate]
+	push af
+	ld a, $1
+	ld [hOAMUpdate], a
+	ld a, $41
+	ld hl, $4110
+	rst FarCall
+	pop af
+	ld [hOAMUpdate], a
+	ret
+; 2e31
+
+Function2e31: ; 2e31
+	ld a, [hOAMUpdate]
+	push af
+	ld a, [hBGMapMode]
+	push af
+	xor a
+	ld [hBGMapMode], a
+	ld a, $1
+	ld [hOAMUpdate], a
+	call Function1ad2
+	xor a
+	ld [hOAMUpdate], a
+	call DelayFrame
+	pop af
+	ld [hBGMapMode], a
+	pop af
+	ld [hOAMUpdate], a
+	ret
+; 2e4e
+
+Function2e4e: ; 2e4e
+	scf
+	ret
+; 2e50
+
+Function2e50: ; 2e50
+	xor a
+	ld hl, $da72
+	ld [hli], a
+	ret
+; 2e56
+
+Function2e56: ; 2e56
+	xor a
+	ld hl, BikeFlags
+	ld [hli], a
+	ld [hl], a
+	ret
+; 2e5d
+
+Function2e5d: ; 2e5d
+	ld a, [$d19a]
+	cp $2
+	jr z, .asm_2e69
+	cp $1
+	jr z, .asm_2e69
+	ret
+
+.asm_2e69
+	ld hl, StatusFlags
+	res 2, [hl]
+	ret
+; 2e6f
+
+
 BitTable1Func: ; 0x2e6f
 	ld hl, $da72
 	call BitTableFunc
@@ -3377,8 +7381,47 @@
 	ret
 ; 0x2ead
 
-INCBIN "baserom.gbc", $2ead, $2ed3 - $2ead
 
+Function2ead: ; 2ead
+	ld de, $000b
+	ld b, $2
+	callba GetFlag2
+	ld a, c
+	and a
+	ret
+; 2ebb
+
+Function2ebb: ; 2ebb
+	ld a, [$c2cc]
+	bit 1, a
+	ret z
+	ld a, [hJoyDown]
+	bit 1, a
+	ret
+; 2ec6
+
+
+Function2ec6: ; 2ec6
+	xor a
+	ret
+; 2ec8
+
+Function2ec8: ; 2ec8
+	xor a
+	dec a
+	ret
+; 2ecb
+
+
+Function2ecb: ; 2ecb
+	push hl
+	ld hl, $c2cc
+	bit 1, [hl]
+	pop hl
+	ret
+; 2ed3
+
+
 Function2ed3: ; 0x2ed3
 ; disables overworld sprite updating?
 	xor a
@@ -3391,15 +7434,33 @@
 	ret
 ; 0x2ee4
 
-INCBIN "baserom.gbc", $2ee4, $2ef9 - $2ee4
+Function2ee4: ; 2ee4
+	ld a, $1
+	ld [$c2ce], a
+	ld a, [VramState]
+	set 0, a
+	ld [VramState], a
+	ld a, $1
+	ld [$ffde], a
+	ret
+; 2ef6
 
-InitString: ; 0x2ef9
-; if the string pointed to by hl is empty (defined as "zero or more spaces
-; followed by a null"), then initialize it to the string pointed to by de.
-;
+
+InitString: ; 2ef6
+; Init a string of length c.
+	push hl
+	jr _InitString
+; 2ef9
+
+InitName: ; 2ef9
 ; Intended for names, so this function is limited to ten characters.
 	push hl
 	ld c, 10
+; 2efc
+
+_InitString: ; 2efc
+; if the string pointed to by hl is empty (defined as "zero or more spaces
+; followed by a null"), then initialize it to the string pointed to by de.
 	push bc
 .loop
 	ld a, [hli]
@@ -3422,18 +7483,47 @@
 	pop bc
 	pop hl
 	ret
-; 0x2f17
+; 2f17
 
+Function2f17: ; 2f17
+	ld a, [MapGroup]
+	ld b, a
+	ld a, [MapNumber]
+	ld c, a
+	call GetWorldMapLocation
+	cp $5f
+	jr z, .asm_2f39
+	cp $0
+	jr nz, .asm_2f35
+	ld a, [BackupMapGroup]
+	ld b, a
+	ld a, [BackupMapNumber]
+	ld c, a
+	call GetWorldMapLocation
 
-INCBIN "baserom.gbc", $2f17, $2f3f - $2f17
+.asm_2f35
+	cp $2f
+	jr nc, .asm_2f3b
 
+.asm_2f39
+	xor a
+	ret
 
+.asm_2f3b
+	ld a, $1
+	ret
+; 2f3e
+
+
+Function2f3e: ; 2f3e
+	ret
+; 2f3f
+
 DoItemEffect: ; 2f3f
 	callba _DoItemEffect
 	ret
 ; 2f46
 
-
 CheckTossableItem: ; 2f46
 	push hl
 	push de
@@ -3445,10 +7535,67 @@
 	ret
 ; 2f53
 
+Function2f53: ; 2f53
+	push hl
+	push de
+	push bc
+	ld a, [hROMBank]
+	push af
+	ld a, $3
+	rst Bankswitch
 
-INCBIN "baserom.gbc", $2f53, $2f8c - $2f53
+	call $520d
+	pop bc
+	ld a, b
+	rst Bankswitch
 
+	pop bc
+	pop de
+	pop hl
+	ret
+; 2f66
 
+Function2f66: ; 2f66
+	push bc
+	ld a, [hROMBank]
+	push af
+	ld a, $3
+	rst Bankswitch
+
+	push hl
+	push de
+	call $51d5
+	pop de
+	pop hl
+	pop bc
+	ld a, b
+	rst Bankswitch
+
+	pop bc
+	ret
+; 2f79
+
+Function2f79: ; 2f79
+	push hl
+	push de
+	push bc
+	ld a, [hROMBank]
+	push af
+	ld a, BANK(Functiond244)
+	rst Bankswitch
+
+	call Functiond244
+	pop bc
+	ld a, b
+	rst Bankswitch
+
+	pop bc
+	pop de
+	pop hl
+	ret
+; 2f8c
+
+
 RNG: ; 2f8c
 ; Two random numbers are generated by adding and subtracting
 ; the divider to the respective values every time it's called.
@@ -3569,8 +7716,32 @@
 	ret
 ; 2fef
 
-INCBIN "baserom.gbc", $2fef, $300b - $2fef
 
+Function2fef: ; 2fef
+	ld hl, rKEY1
+	bit 7, [hl]
+	jr z, Function2ffd
+	ret
+; 2ff7
+
+Function2ff7: ; 2ff7
+	ld hl, rKEY1
+	bit 7, [hl]
+	ret z
+; 2ffd
+
+Function2ffd: ; 2ffd
+	set 0, [hl]
+	xor a
+	ld [rIF], a
+	ld [rIE], a
+	ld a, $30
+	ld [rJOYP], a
+	stop ; rgbasm adds a nop after this instruction by default
+	ret
+; 300b
+
+
 ClearSprites: ; 300b
 	ld hl, Sprites
 	ld b, TileMap - Sprites
@@ -3690,8 +7861,84 @@
 	ret
 ; 0x306b
 
-INCBIN "baserom.gbc", $306b, $30d6-$306b
+Function306b: ; 306b
+	ld [hBuffer], a
+	ld a, [rSVBK]
+	push af
+	ld a, [hBuffer]
+	ld [rSVBK], a
+	call CopyBytes
+	pop af
+	ld [rSVBK], a
+	ret
+; 307b
 
+Function307b: ; 307b
+	ld [hBuffer], a
+	ld a, [rSVBK]
+	push af
+	ld a, [hBuffer]
+	ld [rSVBK], a
+	ld a, [hl]
+	ld [hBuffer], a
+	pop af
+	ld [rSVBK], a
+	ld a, [hBuffer]
+	ret
+; 308d
+
+Function308d: ; 308d
+	ld [hBuffer], a
+	ld a, [rSVBK]
+	push af
+	ld a, [hBuffer]
+	ld [rSVBK], a
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	pop af
+	ld [rSVBK], a
+	ret
+; 309d
+
+Function309d: ; 309d
+	ld a, [rSVBK]
+	push af
+	ld a, $2
+	ld [rSVBK], a
+	ld hl, TileMap
+	ld de, $d000
+	ld bc, $0168
+	call CopyBytes
+	pop af
+	ld [rSVBK], a
+	ret
+; 30b4
+
+Function30b4: ; 30b4
+	xor a
+	ld [hBGMapMode], a
+	call Function30bf
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+; 30bf
+
+Function30bf: ; 30bf
+	ld a, [rSVBK]
+	push af
+	ld a, $2
+	ld [rSVBK], a
+	ld hl, $d000
+	ld de, TileMap
+	ld bc, $0168
+	call CopyBytes
+	pop af
+	ld [rSVBK], a
+	ret
+; 30d6
+
+
 CopyName1: ; 30d6
 	ld hl, StringBuffer2
 ; 30d9
@@ -3931,8 +8178,74 @@
 	ret
 ; 0x3198
 
-INCBIN "baserom.gbc", $3198, $31db - $3198
+PrintNum: ; 3198
+	ld a, [hROMBank]
+	push af
+	ld a, BANK(_PrintNum)
+	rst Bankswitch
+	call _PrintNum
+	pop af
+	rst Bankswitch
+	ret
+; 31a4
 
+
+Function31a4: ; 31a4
+	ld a, [hROMBank]
+	push af
+	ld a, $41
+	rst Bankswitch
+
+	call $61ef
+	pop af
+	rst Bankswitch
+
+	ret
+; 31b0
+
+
+Function31b0: ; 31b0
+	ld [hBuffer], a
+	ld a, [hROMBank]
+	push af
+	ld a, [hBuffer]
+	rst Bankswitch
+
+	call PrintText
+	pop af
+	rst Bankswitch
+
+	ret
+; 31be
+
+Function31be: ; 31be
+	ld a, [hROMBank]
+	push af
+	ld a, [hli]
+	rst Bankswitch
+
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call JpHl
+	pop hl
+	ld a, h
+	rst Bankswitch
+
+	ret
+; 31cd
+
+Function31cd: ; 31cd
+	ld a, [hROMBank]
+	ld [$d0e8], a
+	ld a, l
+	ld [$d0e9], a
+	ld a, h
+	ld [$d0ea], a
+	ret
+; 31db
+
+
 StringCmp: ; 31db
 ; Compare strings, c bytes in length, at de and hl.
 ; Often used to compare big endian numbers in battle calculations.
@@ -4000,8 +8313,217 @@
 	ret
 ; 0x3218
 
-INCBIN "baserom.gbc", $3218, $3317 - $3218
 
+Function3218: ; 3218
+	ld a, [hCGB]
+	and a
+	ret
+; 321c
+
+
+Function321c: ; 321c
+	ld a, [hCGB]
+	and a
+	jr z, .asm_322e
+	ld a, [$c2ce]
+	cp $0
+	jr z, .asm_322e
+	ld a, $1
+	ld [hBGMapMode], a
+	jr .asm_323d
+
+.asm_322e
+	ld a, $1
+	ld [hBGMapMode], a
+	ld c, $4
+	call DelayFrames
+	ret
+
+	ld a, [hCGB]
+	and a
+	jr z, WaitBGMap
+
+.asm_323d
+	jr .asm_3246
+
+	ld a, $41
+	ld hl, $4000
+	rst FarCall
+	ret
+
+.asm_3246
+	ld a, [hBGMapMode]
+	push af
+	xor a
+	ld [hBGMapMode], a
+	ld a, [$ffde]
+	push af
+	xor a
+	ld [$ffde], a
+.asm_3252
+	ld a, [rLY]
+	cp $7f
+	jr c, .asm_3252 ; 3256 $fa
+	di
+	ld a, $1
+	ld [rVBK], a
+	ld hl, AttrMap
+	call Function327b
+	ld a, $0
+	ld [rVBK], a
+	ld hl, TileMap
+	call Function327b
+.asm_326d
+	ld a, [rLY]
+	cp $7f
+	jr c, .asm_326d ; 3271 $fa
+	ei
+	pop af
+	ld [$ffde], a
+	pop af
+	ld [hBGMapMode], a
+	ret
+; 327b
+
+Function327b: ; 327b
+	ld [hSPBuffer], sp
+	ld sp, hl
+	ld a, [$ffd7]
+	ld h, a
+	ld l, $0
+	ld a, $12
+	ld [$ffd3], a
+	ld b, $2
+	ld c, $41
+.asm_328c
+	pop de
+.asm_328d
+	ld a, [$ff00+c]
+	and b
+	jr nz, .asm_328d
+	ld [hl], e
+	inc l
+	ld [hl], d
+	inc l
+	pop de
+.asm_3296
+	ld a, [$ff00+c]
+	and b
+	jr nz, .asm_3296
+	ld [hl], e
+	inc l
+	ld [hl], d
+	inc l
+	pop de
+.asm_329f
+	ld a, [$ff00+c]
+	and b
+	jr nz, .asm_329f
+	ld [hl], e
+	inc l
+	ld [hl], d
+	inc l
+	pop de
+.asm_32a8
+	ld a, [$ff00+c]
+	and b
+	jr nz, .asm_32a8
+	ld [hl], e
+	inc l
+	ld [hl], d
+	inc l
+	pop de
+.asm_32b1
+	ld a, [$ff00+c]
+	and b
+	jr nz, .asm_32b1
+	ld [hl], e
+	inc l
+	ld [hl], d
+	inc l
+	pop de
+.asm_32ba
+	ld a, [$ff00+c]
+	and b
+	jr nz, .asm_32ba
+	ld [hl], e
+	inc l
+	ld [hl], d
+	inc l
+	pop de
+.asm_32c3
+	ld a, [$ff00+c]
+	and b
+	jr nz, .asm_32c3
+	ld [hl], e
+	inc l
+	ld [hl], d
+	inc l
+	pop de
+.asm_32cc
+	ld a, [$ff00+c]
+	and b
+	jr nz, .asm_32cc
+	ld [hl], e
+	inc l
+	ld [hl], d
+	inc l
+	pop de
+.asm_32d5
+	ld a, [$ff00+c]
+	and b
+	jr nz, .asm_32d5
+	ld [hl], e
+	inc l
+	ld [hl], d
+	inc l
+	pop de
+.asm_32de
+	ld a, [$ff00+c]
+	and b
+	jr nz, .asm_32de
+	ld [hl], e
+	inc l
+	ld [hl], d
+	inc l
+	ld de, $000c
+	add hl, de
+	ld a, [$ffd3]
+	dec a
+	ld [$ffd3], a
+	jr nz, .asm_328c
+	ld a, [hSPBuffer]
+	ld l, a
+	ld a, [$ffda]
+	ld h, a
+	ld sp, hl
+	ret
+; 32f9
+
+
+
+Function32f9: ; 32f9
+	ld a, [hCGB]
+	and a
+	jr nz, .asm_3309
+	ld a, $e4
+	ld [rBGP], a
+	ld a, $d0
+	ld [rOBP0], a
+	ld [rOBP1], a
+	ret
+
+.asm_3309
+	push de
+	ld a, $e4
+	call DmgToCgbBGPals
+	ld de, $e4e4
+	call DmgToCgbObjPals
+	pop de
+	ret
+; 3317
+
+
 ClearPalettes: ; 3317
 ; Make all palettes white
 
@@ -4174,7 +8696,7 @@
 
 
 GetName: ; 33c3
-; Return name $cf60 from name list $cf61 in StringBuffer1.
+; Return name CurSpecies from name list $cf61 in StringBuffer1.
 	ld a, [hROMBank]
 	push af
 	push hl
@@ -4184,7 +8706,7 @@
 	cp 1 ; Pokemon names
 	jr nz, .NotPokeName
 
-	ld a, [$cf60]
+	ld a, [CurSpecies]
 	ld [$d265], a
 	call GetPokemonName
 	ld hl, $000b
@@ -4208,7 +8730,7 @@
 	ld h, [hl]
 	ld l, a
 
-	ld a, [$cf60]
+	ld a, [CurSpecies]
 	dec a
 	call GetNthString
 
@@ -4322,7 +8844,7 @@
 	cp TM_01
 	jr nc, .TM
 
-	ld [$cf60], a
+	ld [CurSpecies], a
 	ld a, 4 ; Item names
 	ld [$cf61], a
 	call GetName
@@ -4456,7 +8978,7 @@
 	ld [$cf61], a
 ; move id
 	ld a, [$d265]
-	ld [$cf60], a
+	ld [CurSpecies], a
 
 	call GetName
 	ld de, StringBuffer1
@@ -4465,14 +8987,213 @@
 ; 350c
 
 
-INCBIN "baserom.gbc", $350c, $3600 - $350c
+Function350c: ; 350c
+	call Function1c66
+	ld a, [hROMBank]
+	push af
+	ld a, $9
+	rst Bankswitch
 
+	call $45af
+	call Function3524
+	call $45cb
+	pop af
+	rst Bankswitch
 
+	ld a, [$cf73]
+	ret
+; 3524
+
+Function3524: ; 3524
+	ld hl, VramState
+	bit 0, [hl]
+	jp nz, Function485
+	jp Function32f9
+; 352f
+
+Function352f: ; 352f
+	ld a, [$cf82]
+	dec a
+	ld b, a
+	ld a, [$cf84]
+	sub b
+	ld d, a
+	ld a, [$cf83]
+	dec a
+	ld c, a
+	ld a, [$cf85]
+	sub c
+	ld e, a
+	push de
+	call Function1d05
+	pop bc
+	jp TextBox
+; 354b
+
+Function354b: ; 354b
+	call DelayFrame
+	ld a, [$ffaa]
+	push af
+	ld a, $1
+	ld [$ffaa], a
+	call Functiona57
+	pop af
+	ld [$ffaa], a
+	ld a, [$ffa9]
+	and $f0
+	ld c, a
+	ld a, [hJoyPressed]
+	and $f
+	or c
+	ld c, a
+	ret
+; 3567
+
+
+Function3567: ; 3567
+	ld a, [hROMBank]
+	push af
+	call Function2c52
+	call Function3574
+	pop bc
+	ld a, b
+	rst Bankswitch
+
+	ret
+; 3574
+
+Function3574: ; 3574
+	ld hl, $0001
+	add hl, de
+	ld a, [hl]
+	cp $ff
+	jr z, .asm_3597
+	ld l, a
+	push hl
+	call Function3599
+	pop hl
+	jr nc, .asm_3597
+	ld d, a
+	ld e, l
+	call Function35de
+	jr nc, .asm_3597
+	call Function2631
+	callba Function96c56
+	scf
+	ret
+
+.asm_3597
+	and a
+	ret
+; 3599
+
+Function3599: ; 3599
+	push de
+	ld hl, $0010
+	add hl, de
+	ld a, [hl]
+	ld hl, $0011
+	add hl, de
+	ld e, [hl]
+	sub $4
+	ld d, a
+	ld a, e
+	sub $4
+	ld e, a
+	call Function35b0
+	pop de
+	ret
+; 35b0
+
+Function35b0: ; 35b0
+	ld hl, $dbfc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [$dbfb]
+	and a
+	jr z, .asm_35d3
+.asm_35bc
+	push af
+	ld a, [hl]
+	cp e
+	jr nz, .asm_35c8
+	inc hl
+	ld a, [hld]
+	cp d
+	jr nz, .asm_35c8
+	jr .asm_35d5
+
+.asm_35c8
+	ld a, $5
+	add l
+	ld l, a
+	jr nc, .asm_35cf
+	inc h
+
+.asm_35cf
+	pop af
+	dec a
+	jr nz, .asm_35bc
+
+.asm_35d3
+	and a
+	ret
+
+.asm_35d5
+	pop af
+	ld d, a
+	ld a, [$dbfb]
+	sub d
+	inc a
+	scf
+	ret
+; 35de
+
+Function35de: ; 35de
+	inc e
+	ld hl, $0001
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+.asm_35e6
+	ld a, [hli]
+	cp $ff
+	jr z, .asm_35fc
+	cp d
+	jr nz, .asm_35f7
+	ld a, [hli]
+	cp e
+	jr nz, .asm_35f8
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jr .asm_35fe
+
+.asm_35f7
+	inc hl
+
+.asm_35f8
+	inc hl
+	inc hl
+	jr .asm_35e6
+
+.asm_35fc
+	and a
+	ret
+
+.asm_35fe
+	scf
+	ret
+; 3600
+
+
 CheckTrainerBattle2: ; 3600
 
 	ld a, [hROMBank]
 	push af
-	call $2c52
+	call Function2c52
 
 	call CheckTrainerBattle
 
@@ -4520,7 +9241,7 @@
 	jr z, .next
 
 ; Is facing the player...
-	call $1ae5
+	call Function1ae5
 	call FacingPlayerDistance_bc
 	jr nc, .next
 
@@ -4569,18 +9290,18 @@
 	pop af
 	ld [$ffe0], a
 	ld a, b
-	ld [$d03f], a
+	ld [CurFruit], a
 	ld a, c
-	ld [$d040], a
+	ld [MartPointer], a
 	jr .asm_367e
 
 	ld a, $1
-	ld [$d03f], a
+	ld [CurFruit], a
 	ld a, $ff
-	ld [$d040], a
+	ld [MartPointer], a
 
 .asm_367e
-	call $2c57
+	call GetMapEventBank
 	ld [EngineBuffer1], a
 	ld a, [$ffe0]
 	call GetMapObject
@@ -4596,7 +9317,7 @@
 	ld [$d04d], a
 	scf
 	ret
-; 36a5d
+; 36a5
 
 
 FacingPlayerDistance_bc: ; 36a5
@@ -4681,9 +9402,312 @@
 ; 36f5
 
 
-INCBIN "baserom.gbc", $36f5, $3856 - $36f5
+Function36f5: ; 36f5
+	push bc
+	ld hl, $0001
+	add hl, bc
+	ld a, [hl]
+	call GetMapObject
+	ld hl, $000a
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call GetMapEventBank
+	call GetFarHalfword
+	ld d, h
+	ld e, l
+	push de
+	ld b, $2
+	call BitTable1Func
+	pop de
+	ld a, c
+	and a
+	pop bc
+	ret
+; 3718
 
 
+Function3718: ; 3718
+	ld a, [BattleType]
+	cp $1
+	jr .asm_3724
+
+	ld hl, WalkingTile
+	jr .asm_3731
+
+.asm_3724
+	ld a, [$d0ee]
+	ld hl, WalkingTile
+	and $f
+	jr z, .asm_3731
+	ld hl, $d049
+
+.asm_3731
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call GetMapEventBank
+	call Function31b0
+	call WaitBGMap
+	call Functiona80
+	ret
+; 3741
+
+
+
+Function3741: ; 3741
+	and a
+	jr z, .asm_374c
+	cp $fd
+	jr z, .asm_374e
+	cp $fc
+	jr c, .asm_374e
+
+.asm_374c
+	scf
+	ret
+
+.asm_374e
+	and a
+	ret
+; 3750
+
+
+DrawHPBar: ; 3750
+; Draw an HP bar d tiles long at hl
+; Fill it up to e pixels
+
+	push hl
+	push de
+	push bc
+
+; Place 'HP:'
+	ld a, $60
+	ld [hli], a
+	ld a, $61
+	ld [hli], a
+
+; Draw a template
+	push hl
+	ld a, $62 ; empty bar
+.template
+	ld [hli], a
+	dec d
+	jr nz, .template
+	ld a, $6b ; bar end
+	add b
+	ld [hl], a
+	pop hl
+
+; Safety check # pixels
+	ld a, e
+	and a
+	jr nz, .fill
+	ld a, c
+	and a
+	jr z, .done
+	ld e, 1
+
+.fill
+; Keep drawing tiles until pixel length is reached
+	ld a, e
+	sub TILE_WIDTH
+	jr c, .lastbar
+
+	ld e, a
+	ld a, $6a ; full bar
+	ld [hli], a
+	ld a, e
+	and a
+	jr z, .done
+	jr .fill
+
+.lastbar
+	ld a, $62  ; empty bar
+	add e      ; + e
+	ld [hl], a
+
+.done
+	pop bc
+	pop de
+	pop hl
+	ret
+; 3786
+
+
+Function3786: ; 3786
+	ld a, $1
+	ld [$c2c6], a
+	ld a, [CurPartySpecies]
+	call Function3741
+	jr c, .asm_37ad
+	push hl
+	ld de, VTiles2
+	ld a, $3c
+	call Predef
+	pop hl
+	xor a
+	ld [$ffad], a
+	ld bc, $0707
+	ld a, $13
+	call Predef
+	xor a
+	ld [$c2c6], a
+	ret
+
+.asm_37ad
+	xor a
+	ld [$c2c6], a
+	inc a
+	ld [CurPartySpecies], a
+	ret
+; 37b6
+
+Function37b6: ; 37b6
+	push af
+	ld a, $1
+	ld [$c2bc], a
+	pop af
+	call Function37e2
+	call WaitSFX
+	ret
+; 37c4
+
+Function37c4: ; 37c4
+	push af
+	ld a, $1
+	ld [$c2bc], a
+	pop af
+	jp Function37e2
+; 37ce
+
+Function37ce: ; 37ce
+	call Function37d5
+	call WaitSFX
+	ret
+; 37d5
+
+Function37d5: ; 37d5
+	push af
+	xor a
+	ld [$c2bc], a
+	ld [CryTracks], a
+	pop af
+	call Function37e2
+	ret
+; 37e2
+
+Function37e2: ; 37e2
+	push hl
+	push de
+	push bc
+	call Function381e
+	jr c, .asm_37ef
+	ld e, c
+	ld d, b
+	call PlayCryHeader
+
+.asm_37ef
+	pop bc
+	pop de
+	pop hl
+	ret
+; 37f3
+
+Function37f3: ; 37f3
+	call Function381e
+	ret c
+	ld a, [hROMBank]
+	push af
+	ld a, $3c
+	rst Bankswitch
+
+	ld hl, $6787
+	add hl, bc
+	add hl, bc
+	add hl, bc
+	add hl, bc
+	add hl, bc
+	add hl, bc
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	inc hl
+	ld a, [hli]
+	ld [CryPitch], a
+	ld a, [hli]
+	ld [CryEcho], a
+	ld a, [hli]
+	ld [CryLength], a
+	ld a, [hl]
+	ld [$c2b3], a
+	pop af
+	rst Bankswitch
+
+	and a
+	ret
+; 381e
+
+Function381e: ; 381e
+	and a
+	jr z, .asm_382b
+	cp $fc
+	jr nc, .asm_382b
+	dec a
+	ld c, a
+	ld b, $0
+	and a
+	ret
+
+.asm_382b
+	scf
+	ret
+; 382d
+
+
+PrintLevel: ; 382d
+; Print TempMonLevel at hl
+
+	ld a, [TempMonLevel]
+	ld [hl], $6e ; ":L"
+	inc hl
+
+; How many digits?
+	ld c, 2
+	cp 100
+	jr c, .print
+
+; 3-digit numbers overwrite the :L.
+	dec hl
+	inc c
+	jr .print
+
+; --------
+; Unused: print :L and all 3 digits
+	ld [hl], $6e
+	inc hl
+	ld c, 3
+; --------
+
+.print
+	ld [$d265], a
+	ld de, $d265
+	ld b,  %01000001 ; flags
+	jp PrintNum
+; 384d
+
+
+Function384d: ; 384d
+	ld hl, $d25e
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [hl]
+	ret
+; 3856
+
+
 GetBaseData: ; 3856
 	push bc
 	push de
@@ -4742,7 +9766,7 @@
 ; 389c
 
 
-GetCurNick; 389c
+GetCurNick: ; 389c
 	ld a, [CurPartyMon]
 	ld hl, PartyMonNicknames
 
@@ -4869,7 +9893,22 @@
 ; 392d
 
 
-INCBIN "baserom.gbc", $392d, $3945 - $392d
+Function392d: ; 392d
+	push hl
+	ld a, b
+	dec a
+	ld b, $0
+	add hl, bc
+	ld hl, $5424
+	ld bc, $0020
+	call AddNTimes
+	ld a, $14
+	call GetFarHalfword
+	ld b, l
+	ld c, h
+	pop hl
+	ret
+; 3945
 
 
 UserPartyAttr: ; 3945
@@ -5048,7 +10087,7 @@
 ; get var id
 	ld a, [hl]
 	ld c, a
-	ld b, $0
+	ld b, 0
 	
 ; seek
 	ld hl, .vars
@@ -5174,9 +10213,32 @@
 	dw LastEnemyMove
 ; 3a90
 
-INCBIN "baserom.gbc", $3a90, $3ab2 - $3a90
 
+Function3a90: ; 3a90
+	inc hl
+	ld a, [hROMBank]
+	push af
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	ld a, [hli]
+	ld [hROMBank], a
+	ld [MBC3RomBank], a
+	ld a, e
+	ld l, a
+	ld a, d
+	ld h, a
+	ld de, $d00c
+	ld bc, $0028
+	call CopyBytes
+	pop af
+	ld [hROMBank], a
+	ld [MBC3RomBank], a
+	ret
+; 3ab2
 
+
 MobileTextBorder: ; 3ab2
 ; For mobile link battles only.
 	ld a, [InLinkBattle]
@@ -5195,8 +10257,8 @@
 	push hl
 	call SpeechTextBox
 	call MobileTextBorder
-	call $1ad2 ; UpdateSprites
-	call $321c ; refresh?
+	call Function1ad2 ; UpdateSprites
+	call Function321c ; refresh?
 	pop hl
 	call PrintTextBoxText
 	ret
@@ -5220,9 +10282,96 @@
 ; 3ae1
 
 
-INCBIN "baserom.gbc", $3ae1, $3b4e - $3ae1
+Function3ae1: ; 3ae1
+	ld a, $32
+	rst Bankswitch
 
+	ld a, [hli]
+	ld [$d410], a
+	ld a, [hl]
+	ld [$d411], a
+	ld a, $33
+	rst Bankswitch
 
+	ret
+; 3af0
+
+Function3af0: ; 3af0
+	push hl
+	push de
+	ld hl, $d410
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld a, $32
+	rst Bankswitch
+
+	ld a, [de]
+	ld [$d417], a
+	inc de
+	ld a, $33
+	rst Bankswitch
+
+	ld [hl], d
+	dec hl
+	ld [hl], e
+	pop de
+	pop hl
+	ld a, [$d417]
+	ret
+; 3b0c
+
+Function3b0c: ; 3b0c
+	ld a, [hLCDStatCustom]
+	and a
+	ret z
+	ld a, $0
+	ld [$cf68], a
+	ld a, $d2
+	ld [$cf69], a
+	ld a, $0
+	ld [$cf6a], a
+	ld a, $d1
+	ld [$cf6b], a
+	ld a, $9
+	ld [$cf67], a
+	ret
+; 3b2a
+
+
+
+Function3b2a: ; 3b2a
+	ld [$c3b8], a
+	ld a, [hROMBank]
+	push af
+	ld a, $23
+	rst Bankswitch
+
+	ld a, [$c3b8]
+	call $4fd6
+	pop af
+	rst Bankswitch
+
+	ret
+; 3b3c
+
+
+Function3b3c: ; 3b3c
+	ld [$c3b8], a
+	ld a, [hROMBank]
+	push af
+	ld a, $23
+	rst Bankswitch
+
+	ld a, [$c3b8]
+	call $5120
+	pop af
+	rst Bankswitch
+
+	ret
+; 3b4e
+
+
 CleanSoundRestart: ; 3b4e
 
 	push hl
@@ -5495,8 +10644,30 @@
 	ret
 ; 3c74
 
-INCBIN "baserom.gbc", $3c74, $3c97-$3c74
+Function3c74: ; 3c74
+	push hl
+	ld hl, $c1cc
+	bit 0, [hl]
+	jr nz, .asm_3c94
+	ld hl, $c1fe
+	bit 0, [hl]
+	jr nz, .asm_3c94
+	ld hl, $c230
+	bit 0, [hl]
+	jr nz, .asm_3c94
+	ld hl, $c262
+	bit 0, [hl]
+	jr nz, .asm_3c94
+	pop hl
+	scf
+	ret
 
+.asm_3c94
+	pop hl
+	and a
+	ret
+; 3c97
+
 MaxVolume: ; 3c97
 	ld a, $77 ; max
 	ld [Volume], a
@@ -5515,8 +10686,219 @@
 	ret
 ; 3ca8
 
-INCBIN "baserom.gbc", $3ca8, $3dde - $3ca8
+Function3ca8: ; 3ca8
+	ld a, $4
+	ld [MusicFade], a
+	ret
+; 3cae
 
+Function3cae: ; 3cae
+	ld a, $84
+	ld [MusicFade], a
+	ret
+; 3cb4
+
+Function3cb4: ; 3cb4
+.asm_3cb4
+	and a
+	ret z
+	dec a
+	call CleanUpdateSound
+	jr .asm_3cb4
+; 3cbc
+
+Function3cbc: ; 3cbc
+	push hl
+	push de
+	push bc
+	push af
+	call Function3d97
+	ld a, [CurMusic]
+	cp e
+	jr z, .asm_3cda
+	ld a, $8
+	ld [MusicFade], a
+	ld a, e
+	ld [MusicFadeIDLo], a
+	ld a, d
+	ld [MusicFadeIDHi], a
+	ld a, e
+	ld [CurMusic], a
+
+.asm_3cda
+	pop af
+	pop bc
+	pop de
+	pop hl
+	ret
+; 3cdf
+
+Function3cdf: ; 3cdf
+	push hl
+	push de
+	push bc
+	push af
+	call Function3d97
+	ld a, [CurMusic]
+	cp e
+	jr z, .asm_3cfe
+	push de
+	ld de, MUSIC_NONE
+	call StartMusic
+	call DelayFrame
+	pop de
+	ld a, e
+	ld [CurMusic], a
+	call StartMusic
+
+.asm_3cfe
+	pop af
+	pop bc
+	pop de
+	pop hl
+	ret
+; 3d03
+
+Function3d03: ; 3d03
+	push hl
+	push de
+	push bc
+	push af
+	xor a
+	ld [$c2c1], a
+	ld de, MUSIC_BICYCLE
+	ld a, [PlayerState]
+	cp $1
+	jr z, .asm_3d18
+	call Function3d97
+.asm_3d18
+	push de
+	ld de, MUSIC_NONE
+	call StartMusic
+	call DelayFrame
+	pop de
+	ld a, e
+	ld [CurMusic], a
+	call StartMusic
+	pop af
+	pop bc
+	pop de
+	pop hl
+	ret
+; 3d2f
+
+Function3d2f: ; 3d2f
+	ld a, [$c2c1]
+	and a
+	jr z, Function3d47
+	xor a
+	ld [CurMusic], a
+	ld de, MUSIC_NONE
+	call StartMusic
+	call DelayFrame
+	xor a
+	ld [$c2c1], a
+	ret
+; 3d47
+
+Function3d47: ; 3d47
+	push hl
+	push de
+	push bc
+	push af
+	ld de, MUSIC_NONE
+	call StartMusic
+	call DelayFrame
+	ld a, [CurMusic]
+	ld e, a
+	ld d, 0
+	call StartMusic
+	pop af
+	pop bc
+	pop de
+	pop hl
+	ret
+; 3d62
+
+Function3d62: ; 3d62
+	ld a, [PlayerState]
+	cp $4
+	jr z, .asm_3d7b
+	cp $8
+	jr z, .asm_3d7b
+	ld a, [StatusFlags2]
+	bit 2, a
+	jr nz, .asm_3d80
+.asm_3d74
+	and a
+	ret
+
+	ld de, $0013
+	scf
+	ret
+
+.asm_3d7b
+	ld de, $0021
+	scf
+	ret
+
+.asm_3d80
+	ld a, [MapGroup]
+	cp $a
+	jr nz, .asm_3d74
+	ld a, [MapNumber]
+	cp $f
+	jr z, .asm_3d92
+	cp $11
+	jr nz, .asm_3d74
+
+.asm_3d92
+	ld de, $0058
+	scf
+	ret
+; 3d97
+
+Function3d97: ; 3d97
+	call Function3d62
+	ret c
+	call Function2cbd
+	ret
+; 3d9f
+
+Function3d9f: ; 3d9f
+	ld a, $20
+	ld [$c498], a
+	ld [$c49c], a
+	ld a, $50
+	ld [$c499], a
+	ld a, $58
+	ld [$c49d], a
+	xor a
+	ld [$c49b], a
+	ld [$c49f], a
+	ld a, [$c296]
+	cp $64
+	jr nc, .asm_3dd5
+	add $1
+	daa
+	ld b, a
+	swap a
+	and $f
+	add $f6
+	ld [$c49a], a
+	ld a, b
+	and $f
+	add $f6
+	ld [$c49e], a
+	ret
+
+.asm_3dd5
+	ld a, $ff
+	ld [$c49a], a
+	ld [$c49e], a
+	ret
+; 3dde
+
 CheckSFX: ; 3dde
 ; returns carry if sfx channels are active
 	ld a, [$c1cc] ; 1
@@ -5538,16 +10920,27 @@
 	ret
 ; 3dfe
 
-INCBIN "baserom.gbc", $3dfe, $3e10 - $3dfe
+Function3dfe: ; 3dfe
+	xor a
+	ld [$c1cc], a
+	ld [SoundInput], a
+	ld [rNR10], a
+	ld [rNR11], a
+	ld [rNR12], a
+	ld [rNR13], a
+	ld [rNR14], a
+	ret
+; 3e10
 
+
 ChannelsOff: ; 3e10
 ; Quickly turn off music channels
 	xor a
-	ld [$c104], a
+	ld [Channel1Flags], a
 	ld [$c136], a
 	ld [$c168], a
 	ld [$c19a], a
-	ld [$c29c], a
+	ld [SoundInput], a
 	ret
 ; 3e21
 
@@ -5558,17 +10951,4898 @@
 	ld [$c1fe], a
 	ld [$c230], a
 	ld [$c262], a
-	ld [$c29c], a
+	ld [SoundInput], a
 	ret
 ; 3e32
 
-INCBIN "baserom.gbc", $3e32, $3fb5 - $3e32
+Function3e32: ; 3e32
+	cp $2
+	ld [$c988], a
+	ld a, l
+	ld [$c986], a
+	ld a, h
+	ld [$c987], a
+	jr nz, .asm_3e4f
+	ld [$c982], a
+	ld a, l
+	ld [$c981], a
+	ld hl, $c983
+	ld a, c
+	ld [hli], a
+	ld a, b
+	ld [hl], a
 
+.asm_3e4f
+	ld hl, $c822
+	set 6, [hl]
+	ld a, [hROMBank]
+	push af
+	ld a, $44
+	ld [$c981], a
+	rst Bankswitch
 
+	jp $4030
+; 3e60
+
+
+Function3e60: ; 3e60
+	ld [$c986], a
+	ld a, l
+	ld [$c987], a
+	ld a, h
+	ld [$c988], a
+	pop bc
+	ld a, b
+	ld [$c981], a
+	rst Bankswitch
+
+	ld hl, $c822
+	res 6, [hl]
+	ld hl, $c987
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [$c986]
+	ret
+; 3e80
+
+
+Function3e80: ; 3e80
+	ld a, [hROMBank]
+	push af
+	ld a, $44
+	ld [$c981], a
+	rst Bankswitch
+
+	call $56c5
+	pop bc
+	ld a, b
+	ld [$c981], a
+	rst Bankswitch
+
+	ret
+; 3e93
+
+
+Function3e93: ; 3e93
+	push af
+	push bc
+	push de
+	push hl
+	ld a, [$ffe9]
+	and a
+	jr z, .asm_3ed2
+	xor a
+	ld [rTAC], a
+	ld a, [rIF]
+	and $1b
+	ld [rIF], a
+	ld a, [$c86a]
+	or a
+	jr z, .asm_3ed2
+	ld a, [$c822]
+	bit 1, a
+	jr nz, .asm_3eca
+	ld a, [rSC]
+	and $80
+	jr nz, .asm_3eca
+	ld a, [hROMBank]
+	push af
+	ld a, $44
+	ld [$c981], a
+	rst Bankswitch
+
+	call $58de
+	pop bc
+	ld a, b
+	ld [$c981], a
+	rst Bankswitch
+
+
+.asm_3eca
+	ld a, [rTMA]
+	ld [rTIMA], a
+	ld a, $6
+	ld [rTAC], a
+
+.asm_3ed2
+	pop hl
+	pop de
+	pop bc
+	pop af
+	reti
+; 3ed7
+
+Function3ed7: ; 3ed7
+	ld [$dc02], a
+	ld a, [hROMBank]
+	push af
+	ld a, $45
+	rst Bankswitch
+
+	call $4243
+	pop bc
+	ld a, b
+	rst Bankswitch
+
+	ld a, [$dc02]
+	ret
+; 3eea
+
+Function3eea: ; 3eea
+	push hl
+	push bc
+	ld de, $0939
+	add hl, de
+	inc b
+	inc b
+	inc c
+	inc c
+	call Function3f35
+	pop bc
+	pop hl
+	call Function3f47
+	ret
+; 3efd
+
+Function3efd: ; 3efd
+	push hl
+	ld hl, $c590
+	ld b, $4
+	ld c, $12
+	call Function3f0d
+	pop hl
+	call PrintTextBoxText
+	ret
+; 3f0d
+
+Function3f0d: ; 3f0d
+	push hl
+	push bc
+	ld de, $0939
+	add hl, de
+	inc b
+	inc b
+	inc c
+	inc c
+	call Function3f35
+	pop bc
+	pop hl
+	call TextBoxBorder
+	ret
+; 3f20
+
+Function3f20: ; 3f20
+	ld hl, AttrMap
+	ld b, $6
+	ld c, $14
+	call Function3f35
+	ld hl, TileMap
+	ld b, $4
+	ld c, $12
+	call Function3f47
+	ret
+; 3f35
+
+Function3f35: ; 3f35
+	ld a, $6
+	ld de, $0014
+.asm_3f3a
+	push bc
+	push hl
+.asm_3f3c
+	ld [hli], a
+	dec c
+	jr nz, .asm_3f3c
+	pop hl
+	add hl, de
+	pop bc
+	dec b
+	jr nz, .asm_3f3a
+	ret
+; 3f47
+
+Function3f47: ; 3f47
+	push bc
+	call Function3f58
+	pop bc
+.asm_3f4c
+	push bc
+	call $3f68
+	pop bc
+	dec b
+	jr nz, .asm_3f4c
+	call $3f60
+	ret
+; 3f58
+
+Function3f58: ; 3f58
+	ld a, $63
+	ld d, $62
+	ld e, $64
+	jr .asm_3f6e
+
+	ld a, $68
+	ld d, $67
+	ld e, $69
+	jr .asm_3f6e
+
+	ld a, $7f
+	ld d, $65
+	ld e, $66
+
+.asm_3f6e
+	push hl
+	ld [hl], d
+	inc hl
+.asm_3f71
+	ld [hli], a
+	dec c
+	jr nz, .asm_3f71
+	ld [hl], e
+	pop hl
+	ld de, $0014
+	add hl, de
+	ret
+; 3f7c
+
+Function3f7c: ; 3f7c
+	call Function1cfd
+	call Function1c53
+	dec b
+	dec c
+	call Function3eea
+	ret
+; 3f88
+
+Function3f88: ; 3f88
+	ld hl, $d000
+	ld b, $0
+.asm_3f8d
+	push bc
+	ld c, $8
+.asm_3f90
+	ld a, [de]
+	inc de
+	cpl
+	ld [hl], $0
+	inc hl
+	ld [hli], a
+	dec c
+	jr nz, .asm_3f90
+	pop bc
+	dec c
+	jr nz, .asm_3f8d
+	ret
+; 3f9f
+
+Function3f9f: ; 3f9f
+	ld hl, $d000
+.asm_3fa2
+	push bc
+	ld c, $8
+.asm_3fa5
+	ld a, [de]
+	inc de
+	inc de
+	cpl
+	ld [hl], $0
+	inc hl
+	ld [hli], a
+	dec c
+	jr nz, .asm_3fa5
+	pop bc
+	dec c
+	jr nz, .asm_3fa2
+	ret
+; 3fb5
+
+
 SECTION "bank1",ROMX,BANK[$1]
 
-INCBIN "baserom.gbc", $4000, $5f99 - $4000
 
+Function4000: ; 4000
+	hlcoord 3, 10
+	ld b, 1
+	ld c, 11
+
+	ld a, [IsInBattle]
+	and a
+	jr z, .asm_4012
+
+	call TextBox
+	jr .asm_4017
+
+.asm_4012
+	ld a, $10
+	call Predef
+
+.asm_4017
+	hlcoord 4, 11
+	ld de, .Waiting
+	call PlaceString
+	ld c, 50
+	jp DelayFrames
+; 4025
+
+.Waiting ; 4025
+	db "Waiting...!@"
+; 4031
+
+LoadPushOAM: ; 4031
+	ld c, hPushOAM & $ff
+	ld b, PushOAMEnd - PushOAM
+	ld hl, PushOAM
+.loop
+	ld a, [hli]
+	ld [$ff00+c], a
+	inc c
+	dec b
+	jr nz, .loop
+	ret
+; 403f
+
+PushOAM: ; 403f
+	ld a, $c4
+	ld [rDMA], a
+	ld a, $28
+.loop
+	dec a
+	jr nz, .loop
+	ret
+PushOAMEnd
+; 4049
+
+
+DataPointers4049: ; 4049
+	dw Data408b
+	dw Data409c
+	dw Data408b
+	dw Data40ad
+	dw Data40be
+	dw Data40cf
+	dw Data40be
+	dw Data40e0
+	dw Data40f1
+	dw Data4113
+	dw Data40f1
+	dw Data4113
+	dw Data4102
+	dw Data4124
+	dw Data4102
+	dw Data4124
+	dw Data4135
+	dw Data414a
+	dw Data415f
+	dw Data4174
+	dw Data4189
+	dw Data419a
+	dw Data4206
+	dw Data41a3
+	dw Data408b
+	dw Data41e4
+	dw Data408b
+	dw Data41f5
+	dw Data423f
+	dw Data4250
+	dw Data4261
+	dw Data426a
+	dw $0000
+; 408b
+
+Data408b: ; 408b
+	db 4 ; #
+	db $00, $00, $00, $00
+	db $00, $08, $00, $01
+	db $08, $00, $02, $02
+	db $08, $08, $02, $03
+; 409c
+
+Data409c: ; 409c
+	db 4 ; #
+	db $00, $00, $00, $80
+	db $00, $08, $00, $81
+	db $08, $00, $02, $82
+	db $08, $08, $02, $83
+; 40ad
+
+Data40ad: ; 40ad
+	db 4 ; #
+	db $00, $08, $20, $80
+	db $00, $00, $20, $81
+	db $08, $08, $22, $82
+	db $08, $00, $22, $83
+; 40be
+
+Data40be: ; 40be
+	db 4 ; #
+	db $00, $00, $00, $04
+	db $00, $08, $00, $05
+	db $08, $00, $02, $06
+	db $08, $08, $02, $07
+; 40cf
+
+Data40cf: ; 40cf
+	db 4 ; #
+	db $00, $00, $00, $84
+	db $00, $08, $00, $85
+	db $08, $00, $02, $86
+	db $08, $08, $02, $87
+; 40e0
+
+Data40e0: ; 40e0
+	db 4 ; #
+	db $00, $08, $20, $84
+	db $00, $00, $20, $85
+	db $08, $08, $22, $86
+	db $08, $00, $22, $87
+; 40f1
+
+Data40f1: ; 40f1
+	db 4 ; #
+	db $00, $00, $00, $08
+	db $00, $08, $00, $09
+	db $08, $00, $02, $0a
+	db $08, $08, $02, $0b
+; 4102
+
+Data4102: ; 4102
+	db 4 ; #
+	db $00, $08, $20, $08
+	db $00, $00, $20, $09
+	db $08, $08, $22, $0a
+	db $08, $00, $22, $0b
+; 4113
+
+Data4113: ; 4113
+	db 4 ; #
+	db $00, $00, $00, $88
+	db $00, $08, $00, $89
+	db $08, $00, $02, $8a
+	db $08, $08, $02, $8b
+; 4124
+
+Data4124: ; 4124
+	db 4 ; #
+	db $00, $08, $20, $88
+	db $00, $00, $20, $89
+	db $08, $08, $22, $8a
+	db $08, $00, $22, $8b
+; 4135
+
+Data4135: ; 4135
+	db 5 ; #
+	db $00, $00, $00, $00
+	db $00, $08, $00, $01
+	db $08, $00, $02, $02
+	db $08, $08, $02, $03
+	db $10, $00, $04, $fc
+; 414a
+
+Data414a: ; 414a
+	db 5 ; #
+	db $00, $00, $00, $04
+	db $00, $08, $00, $05
+	db $08, $00, $02, $06
+	db $08, $08, $02, $07
+	db $f8, $00, $04, $fc
+; 415f
+
+Data415f: ; 415f
+	db 5 ; #
+	db $00, $00, $00, $08
+	db $00, $08, $00, $09
+	db $08, $00, $02, $0a
+	db $08, $08, $02, $0b
+	db $05, $f8, $24, $fd
+; 4174
+
+Data4174: ; 4174
+	db 5 ; #
+	db $00, $08, $20, $08
+	db $00, $00, $20, $09
+	db $08, $08, $22, $0a
+	db $08, $00, $22, $0b
+	db $05, $10, $04, $fd
+; 4189
+
+Data4189: ; 4189
+	db 4 ; #
+	db $00, $00, $04, $f8
+	db $00, $08, $04, $f9
+	db $08, $00, $04, $fa
+	db $08, $08, $04, $fb
+; 419a
+
+Data419a: ; 419a
+	db 2 ; #
+	db $00, $00, $04, $fc
+	db $00, $08, $24, $fc
+; 41a3
+
+Data41a3: ; 41a3
+	db 16 ; #
+	db $00, $00, $00, $00
+	db $00, $08, $00, $01
+	db $08, $00, $00, $02
+	db $08, $08, $00, $03
+	db $10, $00, $00, $04
+	db $10, $08, $00, $05
+	db $18, $00, $00, $06
+	db $18, $08, $00, $07
+	db $00, $18, $20, $00
+	db $00, $10, $20, $01
+	db $08, $18, $20, $02
+	db $08, $10, $20, $03
+	db $10, $18, $20, $04
+	db $10, $10, $20, $05
+	db $18, $18, $20, $06
+	db $18, $10, $20, $07
+; 41e4
+
+Data41e4: ; 41e4
+	db 4 ; #
+	db $00, $00, $00, $04
+	db $00, $08, $00, $05
+	db $08, $00, $00, $06
+	db $08, $08, $00, $07
+; 41f5
+
+Data41f5: ; 41f5
+	db 4 ; #
+	db $00, $08, $20, $04
+	db $00, $00, $20, $05
+	db $08, $08, $20, $06
+	db $08, $00, $20, $07
+; 4206
+
+Data4206: ; 4206
+	db 14 ; #
+	db $00, $00, $00, $00
+	db $00, $08, $00, $01
+	db $08, $00, $00, $04
+	db $08, $08, $00, $05
+	db $10, $08, $00, $07
+	db $18, $08, $00, $0a
+	db $00, $18, $00, $03
+	db $00, $10, $00, $02
+	db $08, $18, $20, $02
+	db $08, $10, $00, $06
+	db $10, $18, $00, $09
+	db $10, $10, $00, $08
+	db $18, $18, $20, $04
+	db $18, $10, $00, $0b
+; 423f
+
+Data423f: ; 423f
+	db 4 ; #
+	db $00, $00, $04, $fe
+	db $00, $08, $04, $fe
+	db $08, $00, $04, $fe
+	db $08, $08, $04, $fe
+; 4250
+
+Data4250: ; 4250
+	db 4 ; #
+	db $00, $00, $04, $ff
+	db $00, $08, $04, $ff
+	db $08, $00, $04, $ff
+	db $08, $08, $04, $ff
+; 4261
+
+Data4261: ; 4261
+	db 2 ; #
+	db $08, $00, $04, $fe
+	db $08, $08, $24, $fe
+; 426a
+
+Data426a: ; 426a
+	db 2 ; #
+	db $09, $ff, $04, $fe
+	db $09, $09, $24, $fe
+; 4273
+
+
+Data4273: ; 4273
+INCBIN "baserom.gbc", $4273, $4357 - $4273
+; 4357
+
+
+Function4357: ; 4357
+	push bc
+	ld hl, $0001
+	add hl, bc
+	ld a, [hl]
+	push af
+	ld h, b
+	ld l, c
+	ld bc, $0028
+	xor a
+	call ByteFill
+	pop af
+	cp $ff
+	jr z, .asm_4379
+	bit 7, a
+	jr nz, .asm_4379
+	call GetMapObject
+	ld hl, $0000
+	add hl, bc
+	ld [hl], $ff
+
+.asm_4379
+	pop bc
+	ret
+; 437b
+
+Function437b: ; 437b
+	call Function4386
+	ret c
+	call Function43f3
+	call Function4427
+	ret
+; 4386
+
+Function4386: ; 4386
+	ld hl, $0005
+	add hl, bc
+	res 6, [hl]
+	ld a, [XCoord]
+	ld e, a
+	ld hl, $0010
+	add hl, bc
+	ld a, [hl]
+	add $1
+	sub e
+	jr c, .asm_43b2
+	cp $c
+	jr nc, .asm_43b2
+	ld a, [YCoord]
+	ld e, a
+	ld hl, $0011
+	add hl, bc
+	ld a, [hl]
+	add $1
+	sub e
+	jr c, .asm_43b2
+	cp $b
+	jr nc, .asm_43b2
+	jr .asm_43dc
+
+.asm_43b2
+	ld hl, $0005
+	add hl, bc
+	set 6, [hl]
+	ld a, [XCoord]
+	ld e, a
+	ld hl, $0014
+	add hl, bc
+	ld a, [hl]
+	add $1
+	sub e
+	jr c, .asm_43de
+	cp $c
+	jr nc, .asm_43de
+	ld a, [YCoord]
+	ld e, a
+	ld hl, $0015
+	add hl, bc
+	ld a, [hl]
+	add $1
+	sub e
+	jr c, .asm_43de
+	cp $b
+	jr nc, .asm_43de
+
+.asm_43dc
+	and a
+	ret
+
+.asm_43de
+	ld hl, $0004
+	add hl, bc
+	bit 1, [hl]
+	jr nz, .asm_43eb
+	call Function4357
+	scf
+	ret
+
+.asm_43eb
+	ld hl, $0005
+	add hl, bc
+	set 6, [hl]
+	and a
+	ret
+; 43f3
+
+Function43f3: ; 43f3
+	ld hl, $0009
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_4409
+	ld hl, $0005
+	add hl, bc
+	bit 5, [hl]
+	jr nz, .asm_4426
+	cp $1
+	jr z, .asm_4414
+	jr .asm_4421
+
+.asm_4409
+	call Function47bc
+	ld hl, $0005
+	add hl, bc
+	bit 5, [hl]
+	jr nz, .asm_4426
+
+.asm_4414
+	call Function47dd
+	ld hl, $0009
+	add hl, bc
+	ld a, [hl]
+	and a
+	ret z
+	cp $1
+	ret z
+
+.asm_4421
+	ld hl, Pointers4b45
+	rst JumpTable
+	ret
+
+.asm_4426
+	ret
+; 4427
+
+Function4427: ; 4427
+	ld hl, $0004
+	add hl, bc
+	bit 0, [hl]
+	jr nz, Function44a3
+
+	ld hl, $0005
+	add hl, bc
+	bit 6, [hl]
+	jr nz, Function44a3
+
+	bit 5, [hl]
+	jr nz, Function4448
+
+	ld de, Pointers445f
+	jr Function444d
+; 4440
+
+Function4440: ; 4440
+	ld hl, $0004
+	add hl, bc
+	bit 0, [hl]
+	jr nz, Function44a3
+	; fallthrough
+; 4448
+
+Function4448: ; 4448
+	ld de, Pointers445f + 2
+	jr Function444d
+; 444d
+
+Function444d: ; 444d
+	ld hl, $000b
+	add hl, bc
+	ld a, [hl]
+	ld l, a
+	ld h, 0
+	add hl, hl
+	add hl, hl
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call JpHl
+	ret
+; 445f
+
+Pointers445f: ; 445f
+	dw Function44a3
+	dw Function44a3
+	dw Function44b5
+	dw Function44aa
+	dw Function44c1
+	dw Function44aa
+	dw Function4508
+	dw Function44aa
+	dw Function4529
+	dw Function44aa
+	dw Function4539
+	dw Function44a3
+	dw Function456e
+	dw Function456e
+	dw Function457b
+	dw Function44a3
+	dw Function4582
+	dw Function4582
+	dw Function4589
+	dw Function4589
+	dw Function4590
+	dw Function45a4
+	dw Function45ab
+	dw Function44aa
+	dw Function45be
+	dw Function45be
+	dw Function45c5
+	dw Function45c5
+	dw Function45da
+	dw Function44a3
+	dw Function45ed
+	dw Function44a3
+	dw Function44e4
+	dw Function44aa
+; 44a3
+
+Function44a3: ; 44a3
+	ld hl, $000d
+	add hl, bc
+	ld [hl], $ff
+	ret
+; 44aa
+
+Function44aa: ; 44aa
+	call GetSpriteDirection
+	or $0
+	ld hl, $000d
+	add hl, bc
+	ld [hl], a
+	ret
+; 44b5
+
+Function44b5: ; 44b5
+	ld hl, $000d
+	add hl, bc
+	ld a, [hl]
+	and $1
+	jr nz, Function44c1
+	jp Function44aa
+; 44c1
+
+Function44c1: ; 44c1
+	ld hl, $0004
+	add hl, bc
+	bit 3, [hl]
+	jp nz, Function44aa
+	ld hl, $000c
+	add hl, bc
+	ld a, [hl]
+	inc a
+	and $f
+	ld [hl], a
+	rrca
+	rrca
+	and $3
+	ld d, a
+	call GetSpriteDirection
+	or $0
+	or d
+	ld hl, $000d
+	add hl, bc
+	ld [hl], a
+	ret
+; 44e4
+
+Function44e4: ; 44e4
+	ld hl, $0004
+	add hl, bc
+	bit 3, [hl]
+	jp nz, Function44aa
+	ld hl, $000c
+	add hl, bc
+	ld a, [hl]
+	add $2
+	and $f
+	ld [hl], a
+	rrca
+	rrca
+	and $3
+	ld d, a
+	call GetSpriteDirection
+	or $0
+	or d
+	ld hl, $000d
+	add hl, bc
+	ld [hl], a
+	ret
+; 4508
+
+Function4508: ; 4508
+	ld hl, $0004
+	add hl, bc
+	bit 3, [hl]
+	jp nz, Function44aa
+	ld hl, $000c
+	add hl, bc
+	inc [hl]
+	ld a, [hl]
+	rrca
+	rrca
+	rrca
+	and $3
+	ld d, a
+	call GetSpriteDirection
+	or $0
+	or d
+	ld hl, $000d
+	add hl, bc
+	ld [hl], a
+	ret
+; 4529
+
+Function4529: ; 4529
+	call Function453f
+	ld hl, $0008
+	add hl, bc
+	ld a, [hl]
+	or $0
+	ld hl, $000d
+	add hl, bc
+	ld [hl], a
+	ret
+; 4539
+
+Function4539: ; 4539
+	call Function453f
+	jp Function44a3
+; 453f
+
+Function453f: ; 453f
+	ld hl, $000c
+	add hl, bc
+	ld a, [hl]
+	and $f0
+	ld e, a
+	ld a, [hl]
+	inc a
+	and $f
+	ld d, a
+	cp $4
+	jr c, .asm_4558
+	ld d, 0
+	ld a, e
+	add $10
+	and $30
+	ld e, a
+
+.asm_4558
+	ld a, d
+	or e
+	ld [hl], a
+	swap e
+	ld d, 0
+	ld hl, .Directions
+	add hl, de
+	ld a, [hl]
+	ld hl, $0008
+	add hl, bc
+	ld [hl], a
+	ret
+; 456a
+
+.Directions ; 456a
+	db $00, $0c, $04, $08
+; 456e
+
+Function456e: ; 456e
+	call GetSpriteDirection
+	rrca
+	rrca
+	add $10
+	ld hl, $000d
+	add hl, bc
+	ld [hl], a
+	ret
+; 457b
+
+Function457b: ; 457b
+	ld hl, $000d
+	add hl, bc
+	ld [hl], $15
+	ret
+; 4582
+
+Function4582: ; 4582
+	ld hl, $000d
+	add hl, bc
+	ld [hl], $14
+	ret
+; 4589
+
+Function4589: ; 4589
+	ld hl, $000d
+	add hl, bc
+	ld [hl], $17
+	ret
+; 4590
+
+Function4590: ; 4590
+	ld hl, $000c
+	add hl, bc
+	ld a, [hl]
+	inc a
+	and $f
+	ld [hl], a
+	and $8
+	jr z, Function45a4
+	ld hl, $000d
+	add hl, bc
+	ld [hl], $4
+	ret
+; 45a4
+
+Function45a4: ; 45a4
+	ld hl, $000d
+	add hl, bc
+	ld [hl], $0
+	ret
+; 45ab
+
+Function45ab: ; 45ab
+	ld hl, $000c
+	add hl, bc
+	ld a, [hl]
+	inc a
+	ld [hl], a
+	and $c
+	rrca
+	rrca
+	add $18
+	ld hl, $000d
+	add hl, bc
+	ld [hl], a
+	ret
+; 45be
+
+Function45be: ; 45be
+	ld hl, $000d
+	add hl, bc
+	ld [hl], $16
+	ret
+; 45c5
+
+Function45c5: ; 45c5
+	ld a, [$d831]
+	ld d, $17
+	cp $33
+	jr z, .asm_45d4
+	cp $47
+	jr z, .asm_45d4
+	ld d, $16
+
+.asm_45d4
+	ld hl, $000d
+	add hl, bc
+	ld [hl], d
+	ret
+; 45da
+
+Function45da: ; 45da
+	ld hl, $000c
+	add hl, bc
+	inc [hl]
+	ld a, [hl]
+	ld hl, $000d
+	add hl, bc
+	and $2
+	ld a, $1c
+	jr z, .asm_45eb
+	inc a
+
+.asm_45eb
+	ld [hl], a
+	ret
+; 45ed
+
+Function45ed: ; 45ed
+	ld hl, $000c
+	add hl, bc
+	inc [hl]
+	ld a, [hl]
+	ld hl, $000d
+	add hl, bc
+	and $4
+	ld a, $1e
+	jr z, .asm_45fe
+	inc a
+
+.asm_45fe
+	ld [hl], a
+	ret
+; 4600
+
+Function4600: ; 4600
+	ld hl, $0010
+	add hl, bc
+	ld a, [hl]
+	ld hl, $0012
+	add hl, bc
+	ld [hl], a
+	ld hl, $0011
+	add hl, bc
+	ld a, [hl]
+	ld hl, $0013
+	add hl, bc
+	ld [hl], a
+	ld hl, $000e
+	add hl, bc
+	ld a, [hl]
+	ld hl, $000f
+	add hl, bc
+	ld [hl], a
+	call Function4661
+	ld hl, $000e
+	add hl, bc
+	ld a, [hl]
+	call Function4679
+	ret
+; 462a
+
+Function462a: ; 462a
+	ld hl, $0012
+	add hl, bc
+	ld a, [hl]
+	ld hl, $0010
+	add hl, bc
+	ld [hl], a
+	ld hl, $0013
+	add hl, bc
+	ld a, [hl]
+	ld hl, $0011
+	add hl, bc
+	ld [hl], a
+	ret
+; 463f
+
+Function463f: ; 463f
+	ld hl, $0005
+	add hl, bc
+	bit 3, [hl]
+	jr z, .asm_464f
+	ld hl, $000e
+	add hl, bc
+	ld a, [hl]
+	call Function4661
+
+.asm_464f
+	ld hl, $000e
+	add hl, bc
+	ld a, [hl]
+	call Function4679
+	ret c
+	ld hl, $000f
+	add hl, bc
+	ld a, [hl]
+	call Function4679
+	ret
+; 4661
+
+Function4661: ; 4661
+	call Function188e
+	jr z, .asm_466b
+	call Function1875
+	jr c, .asm_4672
+
+.asm_466b
+	ld hl, $0005
+	add hl, bc
+	set 3, [hl]
+	ret
+
+.asm_4672
+	ld hl, $0005
+	add hl, bc
+	res 3, [hl]
+	ret
+; 4679
+
+Function4679: ; 4679
+	and a
+	ret
+; 467b
+
+Function467b: ; 467b
+	xor a
+	ld hl, $000c
+	add hl, bc
+	ld [hl], a
+	ld hl, $001b
+	add hl, bc
+	ld [hli], a
+	ld [hli], a
+	ld [hli], a
+	ld [hl], a
+	ld hl, $0007
+	add hl, bc
+	ld [hl], $ff
+	ret
+; 4690
+
+Function4690: ; 4690
+	ld hl, $0007
+	add hl, bc
+	ld [hl], a
+	ld hl, $0004
+	add hl, bc
+	bit 2, [hl]
+	jr nz, .asm_46a6
+
+	add a
+	add a
+	and $c
+	ld hl, $0008
+	add hl, bc
+	ld [hl], a
+
+.asm_46a6
+	; fallthrough
+; 46a6
+
+Function46a6: ; 46a6
+	call Function46e9
+	ld hl, $000a
+	add hl, bc
+	ld [hl], a
+	ld a, d
+	call Function4730
+	ld hl, $0012
+	add hl, bc
+	add [hl]
+	ld hl, $0010
+	add hl, bc
+	ld [hl], a
+	ld d, a
+	ld a, e
+	call Function4730
+	ld hl, $0013
+	add hl, bc
+	add [hl]
+	ld hl, $0011
+	add hl, bc
+	ld [hl], a
+	ld e, a
+	push bc
+	call Function2a3c
+	pop bc
+	ld hl, $000e
+	add hl, bc
+	ld [hl], a
+	ret
+; 46d7
+
+Function46d7: ; 46d7
+	call Function46e9
+	ld hl, $0017
+	add hl, bc
+	ld a, [hl]
+	add d
+	ld [hl], a
+	ld hl, $0018
+	add hl, bc
+	ld a, [hl]
+	add e
+	ld [hl], a
+	ret
+; 46e9
+
+Function46e9: ; 46e9
+	ld hl, $0007
+	add hl, bc
+	ld a, [hl]
+	and $f
+	add a
+	add a
+	ld l, a
+	ld h, 0
+	ld de, .Steps
+	add hl, de
+	ld d, [hl]
+	inc hl
+	ld e, [hl]
+	inc hl
+	ld a, [hli]
+	ld h, [hl]
+	ret
+; 4700
+
+.Steps ; 4700
+	;   x,  y, duration, speed
+	; slow
+	db  0,  1, $10, $01
+	db  0, -1, $10, $01
+	db -1,  0, $10, $01
+	db  1,  0, $10, $01
+	; normal
+	db  0,  2, $08, $02
+	db  0, -2, $08, $02
+	db -2,  0, $08, $02
+	db  2,  0, $08, $02
+	; fast
+	db  0,  4, $04, $04
+	db  0, -4, $04, $04
+	db -4,  0, $04, $04
+	db  4,  0, $04, $04
+; 4730
+
+Function4730: ; 4730
+	add a
+	ret z
+	ld a, 1
+	ret nc
+	ld a, -1
+	ret
+; 4738
+
+Function4738: ; 4738
+	ld hl, $0007
+	add hl, bc
+	ld a, [hl]
+	and $3
+	ld [$d151], a
+	call Function46d7
+	ld a, [$d14e]
+	add d
+	ld [$d14e], a
+	ld a, [$d14f]
+	add e
+	ld [$d14f], a
+	ld hl, $d150
+	set 5, [hl]
+	ret
+; 4759
+
+Function4759: ; 4759
+	push bc
+	ld e, a
+	ld d, 0
+	ld hl, $0001
+	add hl, bc
+	ld a, [hl]
+	call GetMapObject
+	add hl, de
+	ld a, [hl]
+	pop bc
+	ret
+; 4769
+
+Function4769: ; 4769
+	ld hl, $0001
+	add hl, bc
+	ld a, [hl]
+	cp $ff
+	jr z, .asm_477d
+	push bc
+	call GetMapObject
+	ld hl, $0004
+	add hl, bc
+	ld a, [hl]
+	pop bc
+	ret
+
+.asm_477d
+	ld a, $6
+	ret
+; 4780
+
+Function4780: ; 4780
+	ld hl, $001b
+	add hl, bc
+	ld [hl], $0
+	ret
+; 4787
+
+Function4787: ; 4787
+	ld hl, $001b
+	add hl, bc
+	inc [hl]
+	ret
+; 478d
+
+Function478d: ; 478d
+	ld hl, $001b
+	add hl, bc
+	dec [hl]
+	ret
+; 4793
+
+Function4793: ; 4793
+	ld hl, $001b
+	add hl, bc
+	ld a, [hl]
+	pop hl
+	rst JumpTable
+	ret
+; 479b
+
+Function479b: ; 479b
+	ld hl, $001c
+	add hl, bc
+	ld [hl], $0
+	ret
+; 47a2
+
+Function47a2: ; 47a2
+	ld hl, $001c
+	add hl, bc
+	inc [hl]
+	ret
+; 47a8
+
+Function47a8: ; 47a8
+	ld hl, $001c
+	add hl, bc
+	ld a, [hl]
+	pop hl
+	rst JumpTable
+	ret
+; 47b0
+
+Function47b0: ; 47b0
+	ld hl, $001c
+	add hl, bc
+	ld a, [hl]
+	ret
+; 47b6
+
+Function47b6: ; 47b6
+	ld hl, $001c
+	add hl, bc
+	ld [hl], a
+	ret
+; 47bc
+
+Function47bc: ; 47bc
+	ld hl, $0010
+	add hl, bc
+	ld d, [hl]
+	ld hl, $0011
+	add hl, bc
+	ld e, [hl]
+	push bc
+	call Function2a3c
+	pop bc
+	ld hl, $000e
+	add hl, bc
+	ld [hl], a
+	call Function4600
+	call Function467b
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $1
+	ret
+; 47dd
+
+Function47dd: ; 47dd
+	call Function479b
+	call Function1a2f
+	ld a, [hl]
+	ld hl, .Pointers
+	rst JumpTable
+	ret
+; 47e9
+
+.Pointers ; 47e9
+	dw Function4821
+	dw Function4822
+	dw Function482c
+	dw Function4838
+	dw Function4842
+	dw Function4851
+	dw Function4869
+	dw Function487c
+	dw Function4882
+	dw Function4888
+	dw Function488e
+	dw Function4891
+	dw Function4894
+	dw Function4897
+	dw Function489d
+	dw Function48a0
+	dw Function48a6
+	dw Function48ac
+	dw Function48ff
+	dw Function49e5
+	dw Function4a21
+	dw Function4958
+	dw Function496e
+	dw Function4abc
+	dw Function498d
+	dw Function4984
+	dw Function4a46
+	dw Function4a89
+; 4821
+
+Function4821: ; 4821
+	ret
+; 4822
+
+Function4822: ; 4822
+	call RNG
+	ld a, [hRandomAdd]
+	and 1
+	jp Function4af0
+; 482c
+
+Function482c: ; 482c
+	call RNG
+	ld a, [hRandomAdd]
+	and 1
+	or 2
+	jp Function4af0
+; 4838
+
+Function4838: ; 4838
+	call RNG
+	ld a, [hRandomAdd]
+	and 3
+	jp Function4af0
+; 4842
+
+Function4842: ; 4842
+	call RNG
+	ld a, [hRandomAdd]
+	and $c
+	ld hl, $0008
+	add hl, bc
+	ld [hl], a
+	jp Function4b1d
+; 4851
+
+Function4851: ; 4851
+	ld hl, $0008
+	add hl, bc
+	ld a, [hl]
+	and $c
+	ld d, a
+	call RNG
+	ld a, [hRandomAdd]
+	and $c
+	cp d
+	jr nz, .asm_4865
+	xor $c
+
+.asm_4865
+	ld [hl], a
+	jp Function4b26
+; 4869
+
+Function4869: ; 4869
+	call Function462a
+	call Function467b
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $1
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $5
+	ret
+; 487c
+
+Function487c: ; 487c
+	ld hl, Function5000
+	jp Function5041
+; 4882
+
+Function4882: ; 4882
+	ld hl, Function5015
+	jp Function5041
+; 4888
+
+Function4888: ; 4888
+	ld hl, Function5026
+	jp Function5041
+; 488e
+
+Function488e: ; 488e
+	jp Function5037
+; 4891
+
+Function4891: ; 4891
+	jp Function5037
+; 4894
+
+Function4894: ; 4894
+	jp Function5037
+; 4897
+
+Function4897: ; 4897
+	ld hl, Function5000
+	jp Function5041
+; 489d
+
+Function489d: ; 489d
+	jp Function5037
+; 48a0
+
+Function48a0: ; 48a0
+	ld hl, Function54e6
+	jp Function5041
+; 48a6
+
+Function48a6: ; 48a6
+	ld hl, Function500e
+	jp Function5041
+; 48ac
+
+Function48ac: ; 48ac
+	call Function4793
+	dw Function48b3
+	dw Function48f8
+; 48b3
+
+Function48b3: ; 48b3
+	ld hl, $000e
+	add hl, bc
+	ld a, [hl]
+	call CheckPitTile
+	jr z, .asm_48f5
+	ld hl, $0005
+	add hl, bc
+	bit 2, [hl]
+	res 2, [hl]
+	jr z, .asm_48ee
+	ld hl, $0020
+	add hl, bc
+	ld a, [hl]
+	and $3
+	or $0
+	call Function4690
+	call Function6ec1
+	jr c, .asm_48eb
+	ld de, SFX_STRENGTH
+	call StartSFX
+	call Function5538
+	call Function463f
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $f
+	ret
+
+.asm_48eb
+	call Function462a
+
+.asm_48ee
+	ld hl, $0007
+	add hl, bc
+	ld [hl], $ff
+	ret
+
+.asm_48f5
+	call Function4787
+	; fallthrough
+; 48f8
+
+Function48f8: ; 48f8
+	ld hl, $0007
+	add hl, bc
+	ld [hl], $ff
+	ret
+; 48ff
+
+Function48ff: ; 48ff
+	ld hl, $0010
+	add hl, bc
+	ld d, [hl]
+	ld hl, $0011
+	add hl, bc
+	ld e, [hl]
+	ld hl, $0020
+	add hl, bc
+	ld a, [hl]
+	push bc
+	call Function1ae5
+	ld hl, $0007
+	add hl, bc
+	ld a, [hl]
+	cp $ff
+	jr z, .asm_494a
+	ld hl, $0012
+	add hl, bc
+	ld a, [hl]
+	cp d
+	jr z, .asm_492d
+	jr c, .asm_4929
+	ld a, $3
+	jr .asm_493d
+
+.asm_4929
+	ld a, $2
+	jr .asm_493d
+
+.asm_492d
+	ld hl, $0013
+	add hl, bc
+	ld a, [hl]
+	cp e
+	jr z, .asm_494a
+	jr c, .asm_493b
+	ld a, $0
+	jr .asm_493d
+
+.asm_493b
+	ld a, $1
+
+.asm_493d
+	ld d, a
+	ld hl, $0007
+	add hl, bc
+	ld a, [hl]
+	and $c
+	or d
+	pop bc
+	jp Function5412
+
+.asm_494a
+	pop bc
+	ld hl, $0007
+	add hl, bc
+	ld [hl], $ff
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $1
+	ret
+; 4958
+
+Function4958: ; 4958
+	call Function467b
+	ld hl, $0007
+	add hl, bc
+	ld [hl], $ff
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $9
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $4
+	ret
+; 496e
+
+Function496e: ; 496e
+	call Function467b
+	ld hl, $0007
+	add hl, bc
+	ld [hl], $ff
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $a
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $4
+	ret
+; 4984
+
+Function4984: ; 4984
+	call Function4793
+	dw Function4996
+	dw Function499c
+	dw Function49b8
+; 498d
+
+Function498d: ; 498d
+	call Function4793
+	dw Function4996
+	dw Function499c
+	dw Function49c4
+; 4996
+
+Function4996: ; 4996
+	call Function467b
+	call Function4787
+	; fallthrough
+; 499c
+
+Function499c: ; 499c
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $1
+	ld hl, $0020
+	add hl, bc
+	ld a, [hl]
+	ld a, $10
+	ld hl, $000a
+	add hl, bc
+	ld [hl], a
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $3
+	call Function4787
+	ret
+; 49b8
+
+Function49b8: ; 49b8
+	ld de, .data_49c0
+	call Function49d0
+	jr Function4984
+; 49c0
+
+.data_49c0 ; 49c0
+	db $0c, $08, $00, $04
+; 49c4
+
+Function49c4: ; 49c4
+	ld de, .data_49cc
+	call Function49d0
+	jr Function498d
+; 49cc
+
+.data_49cc ; 49cc
+	db $08, $0c, $04, $00
+; 49d0
+
+Function49d0: ; 49d0
+	ld hl, $0008
+	add hl, bc
+	ld a, [hl]
+	and $c
+	rrca
+	rrca
+	push hl
+	ld l, a
+	ld h, $0
+	add hl, de
+	ld a, [hl]
+	pop hl
+	ld [hl], a
+	call Function478d
+	ret
+; 49e5
+
+Function49e5: ; 49e5
+	call Function4aa8
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $7
+	ld hl, $000a
+	add hl, de
+	ld a, [hl]
+	inc a
+	add a
+	add $0
+	ld hl, $000a
+	add hl, bc
+	ld [hl], a
+	ld hl, $0007
+	add hl, de
+	ld a, [hl]
+	and 3
+	ld d, $e
+	cp 0
+	jr z, .asm_4a0f
+	cp 1
+	jr z, .asm_4a0f
+	ld d, $c
+
+.asm_4a0f
+	ld hl, $001a
+	add hl, bc
+	ld [hl], d
+	ld hl, $0019
+	add hl, bc
+	ld [hl], $0
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $13
+	ret
+; 4a21
+
+Function4a21: ; 4a21
+	call Function467b
+	call Function4aa8
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $8
+	ld hl, $000a
+	add hl, bc
+	ld [hl], $0
+	ld hl, $001a
+	add hl, bc
+	ld [hl], $f0
+	ld hl, $0019
+	add hl, bc
+	ld [hl], $0
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $13
+	ret
+; 4a46
+
+Function4a46: ; 4a46
+	call Function467b
+	call Function4aa8
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $e
+	ld hl, $000a
+	add hl, de
+	ld a, [hl]
+	inc a
+	add a
+	ld hl, $000a
+	add hl, bc
+	ld [hl], a
+	ld hl, $0007
+	add hl, de
+	ld a, [hl]
+	and 3
+	ld e, a
+	ld d, 0
+	ld hl, .data_4a81
+	add hl, de
+	add hl, de
+	ld d, [hl]
+	inc hl
+	ld e, [hl]
+	ld hl, $0019
+	add hl, bc
+	ld [hl], d
+	ld hl, $001a
+	add hl, bc
+	ld [hl], e
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $13
+	ret
+; 4a81
+
+.data_4a81  ; 4a81
+	;   x,  y
+	db  0, -4
+	db  0,  8
+	db  6,  2
+	db -6,  2
+; 4a89
+
+Function4a89: ; 4a89
+	call Function467b
+	call Function4aa8
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $f
+	ld hl, $000a
+	add hl, de
+	ld a, [hl]
+	add $ff
+	ld hl, $000a
+	add hl, bc
+	ld [hl], a
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $13
+	ret
+; 4aa8
+
+Function4aa8: ; 4aa8
+	ld hl, $0020
+	add hl, bc
+	ld a, [hl]
+	push bc
+	call Function1ae5
+	ld d, b
+	ld e, c
+	pop bc
+	ld hl, $001d
+	add hl, bc
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ret
+; 4abc
+
+Function4abc: ; 4abc
+	call Function467b
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $0
+	ld hl, $0020
+	add hl, bc
+	ld a, [hl]
+	call Function4ade
+	ld hl, $000a
+	add hl, bc
+	ld [hl], e
+	ld hl, $001e
+	add hl, bc
+	ld [hl], a
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $15
+	ret
+; 4ade
+
+Function4ade: ; 4ade
+	ld d, a
+	and $3f
+	ld e, a
+	ld a, d
+	rlca
+	rlca
+	and $3
+	ld d, a
+	inc d
+	ld a, $1
+.asm_4aeb
+	dec d
+	ret z
+	add a
+	jr .asm_4aeb
+; 4af0
+
+Function4af0: ; 4af0
+	call Function4690
+	call Function6ec1
+	jr c, Function4b17
+	call Function463f
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $2
+	ld hl, $d4cf
+	ld a, [hConnectionStripLength]
+	cp [hl]
+	jr z, .asm_4b10
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $7
+	ret
+
+.asm_4b10
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $6
+	ret
+
+Function4b17: ; 4b17
+	call Function467b
+	call Function462a
+	; fallthrough
+; 4b1d
+
+Function4b1d: ; 4b1d
+	call RNG
+	ld a, [hRandomAdd]
+	and $7f
+	jr Function4b2d
+; 4b26
+
+Function4b26: ; 4b26
+	call RNG
+	ld a, [hRandomAdd]
+	and $1f
+	; fallthrough
+; 4b2d
+
+Function4b2d: ; 4b2d
+	ld hl, $000a
+	add hl, bc
+	ld [hl], a
+	ld hl, $0007
+	add hl, bc
+	ld [hl], $ff
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $1
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $3
+	ret
+; 4b45
+
+Pointers4b45: ; 4b45
+	dw Function47bc
+	dw Function47dd
+	dw Function4e2b
+	dw Function4ddd
+	dw Function4e21
+	dw Function4e0c
+	dw Function4e56
+	dw Function4e47
+	dw Function4b86
+	dw Function4bbf
+	dw Function4e83
+	dw Function4dff
+	dw Function4c18
+	dw Function4c89
+	dw Function4d14
+	dw Function4ecd
+	dw Function4d7e
+	dw Function4daf
+	dw Function4dc8
+	dw Function4f04
+	dw Function4f33
+	dw Function4f33
+	dw Function4f77
+	dw Function4f7a
+	dw Function4df0
+	dw Function4f83
+; 4b79
+
+Function4b79: ; 4b79
+	ld hl, $000a
+	add hl, bc
+	dec [hl]
+	ret nz
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $1
+	ret
+; 4b86
+
+Function4b86: ; 4b86
+	call Function47a8
+	dw Function4b8d
+	dw Function4ba9
+; 4b8d
+
+Function4b8d: ; 4b8d
+	call Function46d7
+	call UpdateJumpPosition
+	ld hl, $000a
+	add hl, bc
+	dec [hl]
+	ret nz
+	call Function4600
+	call Function46a6
+	ld hl, $0005
+	add hl, bc
+	res 3, [hl]
+	call Function47a2
+	ret
+; 4ba9
+
+Function4ba9: ; 4ba9
+	call Function46d7
+	call UpdateJumpPosition
+	ld hl, $000a
+	add hl, bc
+	dec [hl]
+	ret nz
+	call Function4600
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $1
+	ret
+; 4bbf
+
+Function4bbf: ; 4bbf
+	call Function47a8
+	dw Function4bca
+	dw Function4bd2
+	dw Function4bf2
+	dw Function4bfd
+; 4bca
+
+Function4bca: ; 4bca
+	ld hl, $d150
+	set 7, [hl]
+	call Function47a2
+;	fallthrough
+; 4bd2
+
+Function4bd2: ; 4bd2
+	call UpdateJumpPosition
+	call Function4738
+	ld hl, $000a
+	add hl, bc
+	dec [hl]
+	ret nz
+	call Function4600
+	ld hl, $0005
+	add hl, bc
+	res 3, [hl]
+	ld hl, $d150
+	set 6, [hl]
+	set 4, [hl]
+	call Function47a2
+	ret
+; 4bf2
+
+Function4bf2: ; 4bf2
+	call Function46a6
+	ld hl, $d150
+	set 7, [hl]
+	call Function47a2
+;	fallthrough
+; 4bfd
+
+Function4bfd: ; 4bfd
+	call UpdateJumpPosition
+	call Function4738
+	ld hl, $000a
+	add hl, bc
+	dec [hl]
+	ret nz
+	ld hl, $d150
+	set 6, [hl]
+	call Function4600
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $1
+	ret
+; 4c18
+
+Function4c18: ; 4c18
+	call Function47a8
+	dw Function4c23
+	dw Function4c32
+	dw Function4c42
+	dw Function4c5d
+; 4c23
+
+Function4c23: ; 4c23
+	ld hl, $000c
+	add hl, bc
+	ld [hl], $0
+	ld hl, $000a
+	add hl, bc
+	ld [hl], $10
+	call Function47a2
+;	fallthrough
+; 4c32
+
+Function4c32: ; 4c32
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $4
+	ld hl, $000a
+	add hl, bc
+	dec [hl]
+	ret nz
+	call Function47a2
+	ret
+; 4c42
+
+Function4c42: ; 4c42
+	ld hl, $000c
+	add hl, bc
+	ld [hl], $0
+	ld hl, $001f
+	add hl, bc
+	ld [hl], $10
+	ld hl, $000a
+	add hl, bc
+	ld [hl], $10
+	ld hl, $0005
+	add hl, bc
+	res 3, [hl]
+	call Function47a2
+;	fallthrough
+; 4c5d
+
+Function4c5d: ; 4c5d
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $4
+	ld hl, $001f
+	add hl, bc
+	inc [hl]
+	ld a, [hl]
+	ld d, $60
+	call $1b11
+	ld a, h
+	sub $60
+	ld hl, $001a
+	add hl, bc
+	ld [hl], a
+	ld hl, $000a
+	add hl, bc
+	dec [hl]
+	ret nz
+	ld hl, $000c
+	add hl, bc
+	ld [hl], $0
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $1
+	ret
+; 4c89
+
+Function4c89: ; 4c89
+	call Function47a8
+	dw Function4c9a
+	dw Function4caa
+	dw Function4cb3
+	dw Function4cc9
+	dw Function4ceb
+	dw Function4cf5
+	dw Function4d01
+; 4c9a
+
+Function4c9a: ; 4c9a
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $0
+	ld hl, $000a
+	add hl, bc
+	ld [hl], $10
+	call Function47a2
+	ret
+; 4caa
+
+Function4caa: ; 4caa
+	ld hl, $000a
+	add hl, bc
+	dec [hl]
+	ret nz
+	call Function47a2
+;	fallthrough
+; 4cb3
+
+Function4cb3: ; 4cb3
+	ld hl, $000c
+	add hl, bc
+	ld [hl], $0
+	ld hl, $001f
+	add hl, bc
+	ld [hl], $0
+	ld hl, $000a
+	add hl, bc
+	ld [hl], $10
+	call Function47a2
+	ret
+; 4cc9
+
+Function4cc9: ; 4cc9
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $4
+	ld hl, $001f
+	add hl, bc
+	inc [hl]
+	ld a, [hl]
+	ld d, $60
+	call $1b11
+	ld a, h
+	sub $60
+	ld hl, $001a
+	add hl, bc
+	ld [hl], a
+	ld hl, $000a
+	add hl, bc
+	dec [hl]
+	ret nz
+	call Function47a2
+;	fallthrough
+; 4ceb
+
+Function4ceb: ; 4ceb
+	ld hl, $000a
+	add hl, bc
+	ld [hl], $10
+	call Function47a2
+	ret
+; 4cf5
+
+Function4cf5: ; 4cf5
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $4
+	ld hl, $000a
+	add hl, bc
+	dec [hl]
+	ret nz
+; 4d01
+
+Function4d01: ; 4d01
+	ld hl, $000c
+	add hl, bc
+	ld [hl], $0
+	ld hl, $001a
+	add hl, bc
+	ld [hl], $0
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $1
+	ret
+; 4d14
+
+Function4d14: ; 4d14
+	call Function47a8
+	dw Function4d1f
+	dw Function4d2e
+	dw Function4d4f
+	dw Function4d6b
+; 4d1f
+
+Function4d1f: ; 4d1f
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $0
+	ld hl, $000a
+	add hl, bc
+	ld [hl], $10
+	call Function47a2
+;	fallthrough
+; 4d2e
+
+Function4d2e: ; 4d2e
+	ld hl, $000a
+	add hl, bc
+	dec [hl]
+	ret nz
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $2
+	ld hl, $000c
+	add hl, bc
+	ld [hl], $0
+	ld hl, $001f
+	add hl, bc
+	ld [hl], $0
+	ld hl, $000a
+	add hl, bc
+	ld [hl], $10
+	call Function47a2
+;	fallthrough
+; 4d4f
+
+Function4d4f: ; 4d4f
+	ld hl, $001f
+	add hl, bc
+	inc [hl]
+	ld a, [hl]
+	ld d, $60
+	call $1b11
+	ld a, h
+	sub $60
+	ld hl, $001a
+	add hl, bc
+	ld [hl], a
+	ld hl, $000a
+	add hl, bc
+	dec [hl]
+	ret nz
+	call Function47a2
+;	fallthrough
+; 4d6b
+
+Function4d6b: ; 4d6b
+	ld hl, $000c
+	add hl, bc
+	ld [hl], $0
+	ld hl, $001a
+	add hl, bc
+	ld [hl], $0
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $1
+	ret
+; 4d7e
+
+Function4d7e: ; 4d7e
+	call Function47a8
+	dw Function4d85
+	dw Function4d94
+; 4d85
+
+Function4d85: ; 4d85
+	ld hl, $000a
+	add hl, bc
+	ld [hl], $8
+	ld hl, $001a
+	add hl, bc
+	ld [hl], $0
+	call Function47a2
+	; fallthrough
+; 4d94
+
+Function4d94: ; 4d94
+	ld hl, $001a
+	add hl, bc
+	ld a, [hl]
+	xor 1
+	ld [hl], a
+	ld hl, $000a
+	add hl, bc
+	dec [hl]
+	ret nz
+	ld hl, $001a
+	add hl, bc
+	ld [hl], $0
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $1
+	ret
+; 4daf
+
+Function4daf: ; 4daf
+	call Function4db5
+	jp Function4b79
+; 4db5
+
+Function4db5: ; 4db5
+	ld hl, $000a
+	add hl, bc
+	ld a, [hl]
+	and $1
+	ld a, $1
+	jr z, .asm_4dc2
+	ld a, $0
+
+.asm_4dc2
+	ld hl, $000b
+	add hl, bc
+	ld [hl], a
+	ret
+; 4dc8
+
+Function4dc8: ; 4dc8
+	ld hl, $000a
+	add hl, bc
+	ld a, [hl]
+	and $1
+	ld a, $4
+	jr z, .asm_4dd5
+	ld a, $5
+
+.asm_4dd5
+	ld hl, $000b
+	add hl, bc
+	ld [hl], a
+	jp Function4b79
+; 4ddd
+
+Function4ddd: ; 4ddd
+	ld hl, $0007
+	add hl, bc
+	ld [hl], $ff
+	ld hl, $000a
+	add hl, bc
+	dec [hl]
+	ret nz
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $1
+	ret
+; 4df0
+
+Function4df0: ; 4df0
+	ld hl, $0007
+	add hl, bc
+	ld [hl], $ff
+	ld hl, $000a
+	add hl, bc
+	dec [hl]
+	ret nz
+	jp Function4357
+; 4dff
+
+Function4dff: ; 4dff
+	ld hl, $000a
+	add hl, bc
+	dec [hl]
+	ret nz
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $1
+	ret
+; 4e0c
+
+Function4e0c: ; 4e0c
+	call Function47a8
+	dw Function4e13
+	dw Function4e21
+; 4e13
+
+Function4e13: ; 4e13
+	call Function4769
+	call Function1a47
+	ld hl, $0008
+	add hl, bc
+	ld [hl], a
+	call Function47a2
+	; fallthrough
+; 4e21
+
+Function4e21: ; 4e21
+	call Function4fb2
+	ld hl, $0007
+	add hl, bc
+	ld [hl], $ff
+	ret
+; 4e2b
+
+Function4e2b: ; 4e2b
+	call Function4fb2
+	call Function46d7
+	ld hl, $000a
+	add hl, bc
+	dec [hl]
+	ret nz
+	call Function4600
+	ld hl, $0007
+	add hl, bc
+	ld [hl], $ff
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $1
+	ret
+; 4e47
+
+Function4e47: ; 4e47
+	call Function46d7
+	ld hl, $000a
+	add hl, bc
+	dec [hl]
+	ret nz
+	call Function4600
+	jp Function4b1d
+; 4e56
+
+Function4e56: ; 4e56
+; AnimateStep?
+	call Function47a8
+	dw Function4e5d
+	dw Function4e65
+; 4e5d
+
+Function4e5d: ; 4e5d
+	ld hl, $d150
+	set 7, [hl]
+	call Function47a2
+	; fallthrough
+; 4e65
+
+Function4e65: ; 4e65
+	call Function4738
+	ld hl, $000a
+	add hl, bc
+	dec [hl]
+	ret nz
+	ld hl, $d150
+	set 6, [hl]
+	call Function4600
+	ld hl, $0007
+	add hl, bc
+	ld [hl], $ff
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $1
+	ret
+; 4e83
+
+Function4e83: ; 4e83
+	call Function47a8
+	dw Function4e8e
+	dw Function4ea4
+	dw Function4ead
+	dw Function4ec0
+; 4e8e
+
+Function4e8e: ; 4e8e
+	ld hl, $0007
+	add hl, bc
+	ld [hl], $ff
+	ld hl, $000c
+	add hl, bc
+	ld a, [hl]
+	ld [hl], $2
+	ld hl, $000a
+	add hl, bc
+	ld [hl], $2
+	call Function47a2
+	; fallthrough
+; 4ea4
+
+Function4ea4: ; 4ea4
+	ld hl, $000a
+	add hl, bc
+	dec [hl]
+	ret nz
+	call Function47a2
+	; fallthrough
+; 4ead
+
+Function4ead: ; 4ead
+	ld hl, $001d
+	add hl, bc
+	ld a, [hl]
+	ld hl, $0008
+	add hl, bc
+	ld [hl], a
+	ld hl, $000a
+	add hl, bc
+	ld [hl], $2
+	call Function47a2
+	; fallthrough
+; 4ec0
+
+Function4ec0: ; 4ec0
+	ld hl, $000a
+	add hl, bc
+	dec [hl]
+	ret nz
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $1
+	ret
+; 4ecd
+
+Function4ecd: ; 4ecd
+	call Function46d7
+	ld hl, $000a
+	add hl, bc
+	dec [hl]
+	ret nz
+	push bc
+	ld hl, $0010
+	add hl, bc
+	ld d, [hl]
+	ld hl, $0011
+	add hl, bc
+	ld e, [hl]
+	ld hl, $0001
+	add hl, bc
+	ld a, [hl]
+	ld b, a
+	ld a, $2
+	ld hl, $407e
+	rst FarCall
+	pop bc
+	ld hl, $0005
+	add hl, bc
+	res 2, [hl]
+	call Function4600
+	ld hl, $0007
+	add hl, bc
+	ld [hl], $ff
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $1
+	ret
+; 4f04
+
+Function4f04: ; 4f04
+	ld hl, $001d
+	add hl, bc
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld hl, $0000
+	add hl, de
+	ld a, [hl]
+	and a
+	jr z, .asm_4f30
+	ld hl, $0017
+	add hl, de
+	ld a, [hl]
+	ld hl, $0017
+	add hl, bc
+	ld [hl], a
+	ld hl, $0018
+	add hl, de
+	ld a, [hl]
+	ld hl, $0018
+	add hl, bc
+	ld [hl], a
+	ld hl, $000a
+	add hl, bc
+	ld a, [hl]
+	and a
+	ret z
+	dec [hl]
+	ret nz
+
+.asm_4f30
+	jp Function4357
+; 4f33
+
+Function4f33: ; 4f33
+	call Function47a8
+	dw Function4f3a
+	dw Function4f43
+; 4f3a
+
+Function4f3a: ; 4f3a
+	xor a
+	ld hl, $001d
+	add hl, bc
+	ld [hl], a
+	call Function47a2
+	; fallthrough
+; 4f43
+
+Function4f43: ; 4f43
+	ld hl, $001d
+	add hl, bc
+	ld d, [hl]
+	ld a, [$d14f]
+	sub d
+	ld [$d14f], a
+	ld hl, $000a
+	add hl, bc
+	dec [hl]
+	jr z, .asm_4f68
+	ld a, [hl]
+	call Function4f6c
+	ld hl, $001d
+	add hl, bc
+	ld [hl], a
+	ld d, a
+	ld a, [$d14f]
+	add d
+	ld [$d14f], a
+	ret
+
+.asm_4f68
+	call Function4357
+	ret
+; 4f6c
+
+Function4f6c: ; 4f6c
+	ld hl, $001e
+	add hl, bc
+	and 1
+	ld a, [hl]
+	ret z
+	cpl
+	inc a
+	ret
+; 4f77
+
+Function4f77: ; 4f77
+	call Function47a8 ; ????
+; 4f7a
+
+Function4f7a: ; 4f7a
+	call Function47a8
+	dw Function4f83
+	dw Function4f83
+	dw Function4f83
+; 4f83
+
+Function4f83: ; 4f83
+	call Function47a8
+	dw Function4f8a
+	dw Function4f99
+; 4f8a
+
+Function4f8a: ; 4f8a
+	ld hl, $000b
+	add hl, bc
+	ld [hl], $10
+	ld hl, $000a
+	add hl, bc
+	ld [hl], $10
+	call Function47a2
+; 4f99
+
+Function4f99: ; 4f99
+	ld hl, $000a
+	add hl, bc
+	dec [hl]
+	ret nz
+	ld hl, $001a
+	add hl, bc
+	ld [hl], $60
+	ld hl, $000c
+	add hl, bc
+	ld [hl], $0
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $1
+	ret
+; 4fb2
+
+Function4fb2: ; 4fb2
+	ret
+; 4fb3
+
+Function4fb3: ; 4fb3
+	ld hl, $001d
+	add hl, bc
+	inc [hl]
+	ld a, [hl]
+	srl a
+	srl a
+	and 7
+	ld l, a
+	ld h, 0
+	ld de, .y
+	add hl, de
+	ld a, [hl]
+	ld hl, $001a
+	add hl, bc
+	ld [hl], a
+	ret
+; 4fcd
+
+.y ; 4fcd
+	db 0, -1, -2, -3, -4, -3, -2, -1
+; 4fd5
+
+UpdateJumpPosition: ; 4fd5
+	call Function46e9
+	ld a, h
+	ld hl, $001f
+	add hl, bc
+	ld e, [hl]
+	add e
+	ld [hl], a
+	nop
+	srl e
+	ld d, 0
+	ld hl, .y
+	add hl, de
+	ld a, [hl]
+	ld hl, $001a
+	add hl, bc
+	ld [hl], a
+	ret
+; 4ff0
+
+.y ; 4ff0
+	db  -4,  -6,  -8, -10, -11, -12, -12, -12
+	db -11, -10,  -9,  -8,  -6,  -4,   0,   0
+; 5000
+
+Function5000: ; 5000
+	ld a, [$c2de]
+	ld hl, $c2df
+	ld [hl], a
+	ld a, $3e
+	ld [$c2de], a
+	ld a, [hl]
+	ret
+; 500e
+
+Function500e: ; 500e
+	ld hl, $c2e3
+	call Function1aae
+	ret
+; 5015
+
+Function5015: ; 5015
+	ld hl, $001b
+	add hl, bc
+	ld e, [hl]
+	inc [hl]
+	ld d, 0
+	ld hl, $c2e2
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	add hl, de
+	ld a, [hl]
+	ret
+; 5026
+
+Function5026: ; 5026
+	ld hl, $001b
+	add hl, bc
+	ld e, [hl]
+	inc [hl]
+	ld d, 0
+	ld hl, $c2e6
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	add hl, de
+	ld a, [hl]
+	ret
+; 5037
+
+Function5037: ; 5037
+	ld hl, Function503d
+	jp Function5041
+; 503d
+
+Function503d: ; 503d
+	ld a, [$c2e2]
+	ret
+; 5041
+
+Function5041: ; 5041
+	call Function5055
+.asm_5044
+	xor a
+	ld [$c2ea], a
+	call Function505e
+	call Function506b
+	ld a, [$c2ea]
+	and a
+	jr nz, .asm_5044
+	ret
+; 5055
+
+Function5055: ; 5055
+	ld a, l
+	ld [$c2eb], a
+	ld a, h
+	ld [$c2ec], a
+	ret
+; 505e
+
+Function505e: ; 505e
+	ld hl, $c2eb
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 5065
+
+Function5065: ; 5065
+	ld a, $1
+	ld [$c2ea], a
+	ret
+; 506b
+
+Function506b: ; 506b
+	push af
+	call Function54b8
+	pop af
+	ld hl, MovementPointers
+	rst JumpTable
+	ret
+; 5075
+
+
+; 5075
+INCLUDE "engine/movement.asm"
+; 54b8
+
+
+Function54b8: ; 54b8
+	ld e, a
+	ld a, [$d4ce]
+	cp $ff
+	ret z
+	ld a, [$d4cd]
+	ld d, a
+	ld a, [hConnectionStripLength]
+	cp d
+	ret nz
+	ld a, e
+	cp $3e
+	ret z
+	cp $47
+	ret z
+	cp $4b
+	ret z
+	cp $50
+	ret z
+	cp $8
+	ret c
+	push af
+	ld hl, $d4d0
+	inc [hl]
+	ld e, [hl]
+	ld d, 0
+	ld hl, $d4d1
+	add hl, de
+	pop af
+	ld [hl], a
+	ret
+; 54e6
+
+Function54e6: ; 54e6
+	ld hl, $d4d0
+	ld a, [hl]
+	and a
+	jr z, .asm_5503
+	cp $ff
+	jr z, .asm_5503
+	dec [hl]
+	ld e, a
+	ld d, 0
+	ld hl, $d4d1
+	add hl, de
+	inc e
+	ld a, $ff
+.asm_54fc
+	ld d, [hl]
+	ld [hld], a
+	ld a, d
+	dec e
+	jr nz, .asm_54fc
+	ret
+
+.asm_5503
+	call Function550a
+	ret c
+	ld a, $3e
+	ret
+; 550a
+
+Function550a: ; 550a
+	ld a, [$d4cd]
+	cp $ff
+	jr z, .asm_5520
+	push bc
+	call Function1ae5
+	ld hl, $0000
+	add hl, bc
+	ld a, [hl]
+	pop bc
+	and a
+	jr z, .asm_5520
+	and a
+	ret
+
+.asm_5520
+	ld a, $ff
+	ld [$d4ce], a
+	ld a, $47
+	scf
+	ret
+; 5529
+
+Function5529: ; 5529
+	push bc
+	ld de, .data_5535
+	call Function55b9
+	call Function55ac
+	pop bc
+	ret
+
+.data_5535
+	db $00, $05, $1b
+; 5538
+
+Function5538: ; 5538
+	push bc
+	ld de, .data_5544
+	call Function55b9
+	call Function55ac
+	pop bc
+	ret
+
+.data_5544
+	db $00, $05, $22
+; 5547
+
+Function5547: ; 5547
+	push bc
+	ld de, .data_5553
+	call Function55b9
+	call Function55ac
+	pop bc
+	ret
+
+.data_5553
+	db $00, $05, $1c
+; 5556
+
+Function5556: ; 5556
+	push bc
+	ld de, .data_5562
+	call Function55b9
+	call Function55ac
+	pop bc
+	ret
+
+.data_5562
+	db $00, $06, $23
+; 5565
+
+Function5565: ; 5565
+	push bc
+	push af
+	ld de, .data_5576
+	call Function55b9
+	pop af
+	ld [$c2f5], a
+	call Function55ac
+	pop bc
+	ret
+
+.data_5576
+	db $00, $05, $1d
+; 5579
+
+Function5579: ; 5579
+	push bc
+	ld a, [hConnectionStripLength]
+	ld c, a
+	call Function5582
+	pop bc
+	ret
+; 5582
+
+Function5582: ; 5582
+	ld de, $d4d6
+	ld a, $d
+.asm_5587
+	push af
+	ld hl, $0004
+	add hl, de
+	bit 7, [hl]
+	jr z, .asm_55a1
+	ld hl, $0000
+	add hl, de
+	ld a, [hl]
+	and a
+	jr z, .asm_55a1
+	push bc
+	xor a
+	ld bc, $0028
+	call ByteFill
+	pop bc
+
+.asm_55a1
+	ld hl, $0028
+	add hl, de
+	ld d, h
+	ld e, l
+	pop af
+	dec a
+	jr nz, .asm_5587
+	ret
+; 55ac
+
+Function55ac: ; 55ac
+	call Function1a13
+	ret nc
+	ld d, h
+	ld e, l
+	ld a, $2
+	ld hl, $4286
+	rst FarCall
+	ret
+; 55b9
+
+Function55b9: ; 55b9
+	ld hl, $c2f0
+	ld [hl], $ff
+	inc hl
+	ld [hl], $ff
+	inc hl
+	ld a, [de]
+	inc de
+	ld [hli], a
+	ld a, [de]
+	inc de
+	ld [hli], a
+	ld a, [de]
+	ld [hli], a
+	ld a, [hConnectionStripLength]
+	ld [hli], a
+	push hl
+	ld hl, $0010
+	add hl, bc
+	ld d, [hl]
+	ld hl, $0011
+	add hl, bc
+	ld e, [hl]
+	pop hl
+	ld [hl], d
+	inc hl
+	ld [hl], e
+	inc hl
+	ld [hl], $ff
+	ret
+; 55e0
+
+Function55e0: ; 55e0
+	ld a, [VramState]
+	bit 0, a
+	ret z
+	ld bc, $d4d6
+	xor a
+.asm_55ea
+	ld [hConnectionStripLength], a
+	call Function1af1
+	jr z, .asm_55f4
+	call Function565c
+
+.asm_55f4
+	ld hl, $0028
+	add hl, bc
+	ld b, h
+	ld c, l
+	ld a, [hConnectionStripLength]
+	inc a
+	cp $d
+	jr nz, .asm_55ea
+	ret
+; 5602
+
+Function5602: ; 5602
+	call Function5645
+	ld a, $0
+	call Function5629
+	ld a, [$d459]
+	bit 7, a
+	jr z, .asm_5619
+	ld a, [$ffe0]
+	and a
+	jr z, .asm_5619
+	call Function5629
+
+.asm_5619
+	call Function5920
+	ret
+; 561d
+
+Function561d: ; 561d
+	call Function5645
+	ld a, $0
+	call Function5629
+	call Function5920
+	ret
+; 5629
+
+Function5629: ; 5629
+	cp $10
+	ret nc
+	call GetMapObject
+	ld hl, $0000
+	add hl, bc
+	ld a, [hl]
+	cp $ff
+	ret z
+	cp $d
+	ret nc
+	call Function1ae5
+	call Function1af1
+	ret z
+	call Function5673
+	ret
+; 5645
+
+Function5645: ; 5645
+	xor a
+	ld bc, $d4d6
+.asm_5649
+	ld [hConnectionStripLength], a
+	call Function5680
+	ld hl, $0028
+	add hl, bc
+	ld b, h
+	ld c, l
+	ld a, [hConnectionStripLength]
+	inc a
+	cp $d
+	jr nz, .asm_5649
+	ret
+; 565c
+
+Function565c: ; 565c
+	push bc
+	call Function56cd
+	pop bc
+	jr c, Function5680
+	call Function56a3
+	jr c, Function5680
+	call Function5688
+	callba Function4440
+	xor a
+	ret
+; 5673
+
+Function5673: ; 5673
+	call Function56a3
+	jr c, Function5680
+	callba Function4440
+	xor a
+	ret
+; 5680
+
+Function5680: ; 5680
+	ld hl, $000d
+	add hl, bc
+	ld [hl], $ff
+	scf
+	ret
+; 5688
+
+Function5688: ; 5688
+	push bc
+	ld hl, $0010
+	add hl, bc
+	ld d, [hl]
+	ld hl, $0011
+	add hl, bc
+	ld e, [hl]
+	call Function2a3c
+	pop bc
+	ld hl, $000e
+	add hl, bc
+	ld [hl], a
+	callba Function463f
+	ret
+; 56a3
+
+Function56a3: ; 56a3
+	ld hl, $0010
+	add hl, bc
+	ld d, [hl]
+	ld hl, $0011
+	add hl, bc
+	ld e, [hl]
+	inc d
+	inc e
+	ld a, [XCoord]
+	cp d
+	jr z, .asm_56bc
+	jr nc, .asm_56cb
+	add $b
+	cp d
+	jr c, .asm_56cb
+
+.asm_56bc
+	ld a, [YCoord]
+	cp e
+	jr z, .asm_56c9
+	jr nc, .asm_56cb
+	add $a
+	cp e
+	jr c, .asm_56cb
+
+.asm_56c9
+	xor a
+	ret
+
+.asm_56cb
+	scf
+	ret
+; 56cd
+
+Function56cd: ; 56cd
+	ld a, [$d14c]
+	ld d, a
+	ld hl, $0019
+	add hl, bc
+	ld a, [hl]
+	ld hl, $0017
+	add hl, bc
+	add [hl]
+	add d
+	cp $f0
+	jr nc, .asm_56e5
+	cp $a0
+	jp nc, .asm_5768
+
+.asm_56e5
+	and $7
+	ld d, $2
+	cp $4
+	jr c, .asm_56ef
+	ld d, $3
+
+.asm_56ef
+	ld a, [hl]
+	srl a
+	srl a
+	srl a
+	cp $14
+	jr c, .asm_56fc
+	sub $20
+
+.asm_56fc
+	ld [$ffbd], a
+	ld a, [$d14d]
+	ld e, a
+	ld hl, $001a
+	add hl, bc
+	ld a, [hl]
+	ld hl, $0018
+	add hl, bc
+	add [hl]
+	add e
+	cp $f0
+	jr nc, .asm_5715
+	cp $90
+	jr nc, .asm_5768
+
+.asm_5715
+	and $7
+	ld e, $2
+	cp $4
+	jr c, .asm_571f
+	ld e, $3
+
+.asm_571f
+	ld a, [hl]
+	srl a
+	srl a
+	srl a
+	cp $12
+	jr c, .asm_572c
+	sub $20
+
+.asm_572c
+	ld [$ffbe], a
+	ld hl, $0006
+	add hl, bc
+	bit 7, [hl]
+	jr z, .asm_573e
+	ld a, d
+	add $2
+	ld d, a
+	ld a, e
+	add $2
+	ld e, a
+
+.asm_573e
+	ld a, d
+	ld [$ffbf], a
+.asm_5741
+	ld a, [$ffbf]
+	ld d, a
+	ld a, [$ffbe]
+	add e
+	dec a
+	cp $12
+	jr nc, .asm_5763
+	ld b, a
+.asm_574d
+	ld a, [$ffbd]
+	add d
+	dec a
+	cp $14
+	jr nc, .asm_5760
+	ld c, a
+	push bc
+	call Function1d05
+	pop bc
+	ld a, [hl]
+	cp $60
+	jr nc, .asm_5768
+
+.asm_5760
+	dec d
+	jr nz, .asm_574d
+
+.asm_5763
+	dec e
+	jr nz, .asm_5741
+	and a
+	ret
+
+.asm_5768
+	scf
+	ret
+; 576a
+
+Function576a: ; 576a
+	call Function5771
+	call Function5781
+	ret
+; 5771
+
+Function5771: ; 5771
+	xor a
+	ld [$d14e], a
+	ld [$d14f], a
+	ld [$d150], a
+	ld a, $ff
+	ld [$d151], a
+	ret
+; 5781
+
+Function5781: ; 5781
+	ld bc, $d4d6
+	xor a
+.asm_5785
+	ld [hConnectionStripLength], a
+	call Function1af1
+	jr z, .asm_578f
+	call Function437b
+
+.asm_578f
+	ld hl, $0028
+	add hl, bc
+	ld b, h
+	ld c, l
+	ld a, [hConnectionStripLength]
+	inc a
+	cp $d
+	jr nz, .asm_5785
+	ret
+; 579d
+
+Function579d: ; 579d
+	ld a, $3e
+	ld [$c2de], a
+	ld [$c2df], a
+	xor a
+	ld [$d04e], a
+	ld [$d4e2], a
+	call Function57bc
+	ld a, $5
+	ld hl, $49c6
+	rst FarCall
+	call c, Function57d9
+	call Function57ca
+	ret
+; 57bc
+
+Function57bc: ; 57bc
+	ld hl, $d45b
+	bit 7, [hl]
+	jr nz, .asm_57c4
+	ret
+
+.asm_57c4
+	ld a, $0
+	ld [$d4e1], a
+	ret
+; 57ca
+
+Function57ca: ; 57ca
+	ld hl, $d45b
+	bit 5, [hl]
+	ret z
+	ld a, [$d45b]
+	and $3
+	add a
+	add a
+	jr Function57db
+; 57d9
+
+Function57d9: ; 57d9
+	ld a, $0
+	; fallthrough
+; 57db
+
+Function57db: ; 57db
+	ld bc, $d4d6
+	call Function1af8
+	ret
+; 57e2
+
+Function57e2: ; 57e2
+	ld a, d
+	and $80
+	ret z
+	ld bc, $0000
+	ld hl, $0008
+	add hl, bc
+	ld a, [hl]
+	or d
+	ld [hl], a
+	ld a, d
+	swap a
+	and $7
+	ld d, a
+	ld bc, $d4d6
+	ld hl, $0006
+	add hl, bc
+	ld a, [hl]
+	and $f8
+	or d
+	ld [hl], a
+	ret
+; 5803
+
+Function5803: ; 5803
+	push bc
+	ld a, b
+	call Function5815
+	pop bc
+	ret c
+	ld a, c
+	call Function582c
+	ld a, $2
+	ld hl, $448a
+	rst FarCall
+	ret
+; 5815
+
+Function5815: ; 5815
+	call Function18de
+	ret c
+	ld a, [hConnectedMapWidth]
+	ld [$d4cd], a
+	ret
+; 581f
+
+Function581f: ; 581f
+	call Function5826
+	call Function5847
+	ret
+; 5826
+
+Function5826: ; 5826
+	ld a, $ff
+	ld [$d4cd], a
+	ret
+; 582c
+
+Function582c: ; 582c
+	push af
+	call Function5847
+	pop af
+	call Function18de
+	ret c
+	ld hl, $0003
+	add hl, bc
+	ld [hl], $13
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $0
+	ld a, [hConnectedMapWidth]
+	ld [$d4ce], a
+	ret
+; 5847
+
+Function5847: ; 5847
+	ld a, [$d4ce]
+	cp $ff
+	ret z
+	call Function1ae5
+	callba Function58e3
+	ld a, $ff
+	ld [$d4ce], a
+	ret
+; 585c
+
+Function585c: ; 585c
+	ld a, c
+	call Function18de
+	ret c
+	push bc
+	call Function587a
+	pop bc
+	ld hl, $0005
+	add hl, bc
+	res 5, [hl]
+	xor a
+	ret
+; 586e
+
+Function586e: ; 586e
+	call Function18de
+	ret c
+	ld hl, $0005
+	add hl, bc
+	set 5, [hl]
+	xor a
+	ret
+; 587a
+
+Function587a: ; 587a
+	ld bc, $d4d6
+	xor a
+.asm_587e
+	push af
+	call Function1af1
+	jr z, .asm_588a
+	ld hl, $0005
+	add hl, bc
+	set 5, [hl]
+
+.asm_588a
+	ld hl, $0028
+	add hl, bc
+	ld b, h
+	ld c, l
+	pop af
+	inc a
+	cp $d
+	jr nz, .asm_587e
+	ret
+; 5897
+
+Function5897: ; 5897
+	ld a, [$d4cd]
+	cp $ff
+	ret z
+	push bc
+	call Function1ae5
+	ld hl, $0001
+	add hl, bc
+	ld a, [hl]
+	pop bc
+	cp c
+	ret nz
+	ld a, [$d4ce]
+	cp $ff
+	ret z
+	call Function1ae5
+	ld hl, $0005
+	add hl, bc
+	res 5, [hl]
+	ret
+; 58b9
+
+Function58b9: ; 58b9
+	push bc
+	ld bc, $d4d6
+	xor a
+.asm_58be
+	push af
+	call Function1af1
+	jr z, .asm_58ca
+	ld hl, $0005
+	add hl, bc
+	res 5, [hl]
+
+.asm_58ca
+	ld hl, $0028
+	add hl, bc
+	ld b, h
+	ld c, l
+	pop af
+	inc a
+	cp $d
+	jr nz, .asm_58be
+	pop bc
+	ret
+; 58d8
+
+Function58d8: ; 58d8
+	call Function18de
+	ret c
+	ld hl, $0005
+	add hl, bc
+	res 5, [hl]
+	ret
+; 58e3
+
+Function58e3: ; 58e3
+	ld hl, $0001
+	add hl, bc
+	ld a, [hl]
+	cp $ff
+	jp z, Function5903
+	push bc
+	call GetMapObject
+	ld hl, $0004
+	add hl, bc
+	ld a, [hl]
+	pop bc
+	ld hl, $0003
+	add hl, bc
+	ld [hl], a
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $0
+	ret
+; 5903
+
+Function5903: ; 5903
+	call GetSpriteDirection
+	rrca
+	rrca
+	ld e, a
+	ld d, 0
+	ld hl, .data_591c
+	add hl, de
+	ld a, [hl]
+	ld hl, $0003
+	add hl, bc
+	ld [hl], a
+	ld hl, $0009
+	add hl, bc
+	ld [hl], $0
+	ret
+
+.data_591c
+	db 6, 7, 8, 9
+; 5920
+
+Function5920: ; 5920
+	ld a, [VramState]
+	bit 0, a
+	ret z
+	xor a
+	ld [$ffbd], a
+	ld a, [hOAMUpdate]
+	push af
+	ld a, $1
+	ld [hOAMUpdate], a
+	call Function5991
+	call Function593a
+	pop af
+	ld [hOAMUpdate], a
+	ret
+; 593a
+
+Function593a: ; 593a
+	ld a, [VramState]
+	bit 1, a
+	ld b, $a0
+	jr z, .asm_5945
+	ld b, $70
+
+.asm_5945
+	ld a, [$ffbd]
+	cp b
+	ret nc
+	ld l, a
+	ld h, $c4
+	ld de, $0004
+	ld a, b
+	ld c, $a0
+.asm_5952
+	ld [hl], c
+	add hl, de
+	cp l
+	jr nz, .asm_5952
+	ret
+; 5958
+
+Function5958: ; 5958
+	push hl
+	push de
+	push bc
+	ld a, [$d14c]
+	ld d, a
+	ld a, [$d14d]
+	ld e, a
+	ld bc, $d4d6
+	ld a, $d
+.asm_5968
+	push af
+	call Function1af1
+	jr z, .asm_597c
+	ld hl, $0017
+	add hl, bc
+	ld a, [hl]
+	add d
+	ld [hl], a
+	ld hl, $0018
+	add hl, bc
+	ld a, [hl]
+	add e
+	ld [hl], a
+
+.asm_597c
+	ld hl, $0028
+	add hl, bc
+	ld b, h
+	ld c, l
+	pop af
+	dec a
+	jr nz, .asm_5968
+	xor a
+	ld [$d14c], a
+	ld [$d14d], a
+	pop bc
+	pop de
+	pop hl
+	ret
+; 5991
+
+Function5991: ; 5991
+	call Function59a4
+	ld c, $30
+	call Function59f3
+	ld c, $20
+	call Function59f3
+	ld c, $10
+	call Function59f3
+	ret
+; 59a4
+
+Function59a4: ; 59a4
+	xor a
+	ld hl, $c2eb
+	ld bc, $000d
+	call ByteFill
+	ld d, 0
+	ld bc, $d4d6
+	ld hl, $c2eb
+.asm_59b6
+	push hl
+	call Function1af1
+	jr z, .asm_59d9
+	ld hl, $000d
+	add hl, bc
+	ld a, [hl]
+	cp $ff
+	jr z, .asm_59d9
+	ld e, $10
+	ld hl, $0005
+	add hl, bc
+	bit 0, [hl]
+	jr nz, .asm_59e2
+	ld e, $20
+	bit 1, [hl]
+	jr z, .asm_59e2
+	ld e, $30
+	jr .asm_59e2
+
+.asm_59d9
+	ld hl, $0028
+	add hl, bc
+	ld b, h
+	ld c, l
+	pop hl
+	jr .asm_59ec
+
+.asm_59e2
+	ld hl, $0028
+	add hl, bc
+	ld b, h
+	ld c, l
+	pop hl
+	ld a, d
+	or e
+	ld [hli], a
+
+.asm_59ec
+	inc d
+	ld a, d
+	cp $d
+	jr nz, .asm_59b6
+	ret
+; 59f3
+
+Function59f3: ; 59f3
+	ld hl, $c2eb
+.asm_59f6
+	ld a, [hli]
+	ld d, a
+	and $f0
+	ret z
+	cp c
+	jr nz, .asm_59f6
+	push bc
+	push hl
+	ld a, d
+	and $f
+	call Function5ac2
+	call Function5a0d
+	pop hl
+	pop bc
+	jr .asm_59f6
+; 5a0d
+
+Function5a0d: ; 5a0d
+	ld hl, $0002
+	add hl, bc
+	ld a, [hl]
+	and $7f
+	ld [$ffc1], a
+	xor a
+	bit 7, [hl]
+	jr nz, .asm_5a1d
+	or $8
+
+.asm_5a1d
+	ld hl, $0005
+	add hl, bc
+	ld e, [hl]
+	bit 7, e
+	jr z, .asm_5a28
+	or $80
+
+.asm_5a28
+	bit 4, e
+	jr z, .asm_5a2e
+	or $10
+
+.asm_5a2e
+	ld hl, $0006
+	add hl, bc
+	ld d, a
+	ld a, [hl]
+	and $7
+	or d
+	ld d, a
+	xor a
+	bit 3, e
+	jr z, .asm_5a3f
+	or $80
+
+.asm_5a3f
+	ld [$ffc2], a
+	ld hl, $0017
+	add hl, bc
+	ld a, [hl]
+	ld hl, $0019
+	add hl, bc
+	add [hl]
+	add $8
+	ld e, a
+	ld a, [$d14c]
+	add e
+	ld [$ffbf], a
+	ld hl, $0018
+	add hl, bc
+	ld a, [hl]
+	ld hl, $001a
+	add hl, bc
+	add [hl]
+	add $c
+	ld e, a
+	ld a, [$d14d]
+	add e
+	ld [$ffc0], a
+
+	ld hl, $000d
+	add hl, bc
+	ld a, [hl]
+	cp $ff
+	jp z, .asm_5abe
+	cp $20
+	jp nc, .asm_5abe
+
+	ld l, a
+	ld h, 0
+	add hl, hl
+	ld bc, DataPointers4049
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+
+	ld a, [$ffbd]
+	ld c, a
+	ld b, Sprites / $100
+	ld a, [hli]
+	ld [$ffbe], a
+	add c
+	cp SpritesEnd % $100
+	jr nc, .full
+
+.loop
+	ld a, [$ffc0]
+	add [hl]
+	inc hl
+	ld [bc], a
+	inc c
+	ld a, [$ffbf]
+	add [hl]
+	inc hl
+	ld [bc], a
+	inc c
+	ld e, [hl]
+	inc hl
+	ld a, [$ffc1]
+	bit 2, e
+	jr z, .asm_5aa3
+	xor a
+.asm_5aa3
+	add [hl]
+	inc hl
+	ld [bc], a
+	inc c
+	ld a, e
+	bit 1, a
+	jr z, .asm_5aaf
+	ld a, [$ffc2]
+	or e
+.asm_5aaf
+	and $f0
+	or d
+	ld [bc], a
+	inc c
+	ld a, [$ffbe]
+	dec a
+	ld [$ffbe], a
+	jr nz, .loop
+
+	ld a, c
+	ld [$ffbd], a
+
+.asm_5abe
+	xor a
+	ret
+
+.full
+	scf
+	ret
+; 5ac2
+
+Function5ac2: ; 5ac2
+	ld c, a
+	ld b, 0
+	ld hl, .Addresses
+	add hl, bc
+	add hl, bc
+	ld c, [hl]
+	inc hl
+	ld b, [hl]
+	ret
+; 5ace
+
+.Addresses ; 5ace
+	dw $d4d6
+	dw $d4fe
+	dw $d526
+	dw $d54e
+	dw $d576
+	dw $d59e
+	dw $d5c6
+	dw $d5ee
+	dw $d616
+	dw $d63e
+	dw $d666
+	dw $d68e
+	dw $d6b6
+; 5ae8
+
+Function5ae8: ; 5ae8
+	ld de, MUSIC_NONE
+	call StartMusic
+	call DelayFrame
+	ld de, MUSIC_MAIN_MENU
+	ld a, e
+	ld [CurMusic], a
+	call StartMusic
+	ld a, $12
+	ld hl, $5cdc
+	rst FarCall
+	jp $6219
+; 5b04
+
+Function5b04: ; 5b04
+	ret
+; 5b05
+
+Function5b05: ; 5b05
+	push de
+	ld hl, .Days
+	ld a, b
+	call GetNthString
+	ld d, h
+	ld e, l
+	pop hl
+	call PlaceString
+	ld h, b
+	ld l, c
+	ld de, .Day
+	call PlaceString
+	ret
+; 5b1c
+
+.Days ; 5b1c
+	db "SUN@"
+	db "MON@"
+	db "TUES@"
+	db "WEDNES@"
+	db "THURS@"
+	db "FRI@"
+	db "SATUR@"
+; 5b40
+
+.Day ; 5b40
+	db "DAY@"
+; 5b44
+
+Function5b44: ; 5b44
+	xor a
+	ld [$ffde], a
+	call ClearTileMap
+	call Functione5f
+	call $0e51
+	call Function1fbf
+	ret
+; 5b54
+
+MysteryGift: ; 5b54
+	call UpdateTime
+	ld a, $4
+	ld hl, $5548
+	rst FarCall
+	ld a, $41
+	ld hl, $48ba
+	rst FarCall
+	ret
+; 5b64
+
+OptionsMenu: ; 5b64
+	callba _OptionsMenu
+	ret
+; 5b6b
+
+NewGame: ; 5b6b
+	xor a
+	ld [$c2cc], a
+	call Function5ba7
+	call Function5b44
+	call Function5b8f
+	call OakSpeech
+	call Function5d23
+	ld a, $1
+	ld [$c2d8], a
+	ld a, $0
+	ld [$d001], a
+	ld a, $f1
+	ld [$ff9f], a
+	jp Function5e5d
+; 5b8f
+
+Function5b8f: ; 5b8f
+	ld a, $41
+	ld hl, $632f
+	rst FarCall
+	jr c, .asm_5b9e
+	ld a, $12
+	ld hl, $4dcb
+	rst FarCall
+	ret
+
+.asm_5b9e
+	ld c, $0
+	ld a, $12
+	ld hl, $402f
+	rst FarCall
+	ret
+; 5ba7
+
+Function5ba7: ; 5ba7
+	xor a
+	ld [hBGMapMode], a
+	call Function5bae
+	ret
+; 5bae
+
+Function5bae: ; 5bae
+	ld hl, Sprites
+	ld bc, $0bcc
+	xor a
+	call ByteFill
+	ld hl, $d000
+	ld bc, $047b
+	xor a
+	call ByteFill
+	ld hl, PlayerID
+	ld bc, $0b7a
+	xor a
+	call ByteFill
+	ld a, [rLY]
+	ld [$ffe3], a
+	call DelayFrame
+	ld a, [hRandomSub]
+	ld [PlayerID], a
+	ld a, [rLY]
+	ld [$ffe3], a
+	call DelayFrame
+	ld a, [hRandomAdd]
+	ld [PlayerID + 1], a
+	call RNG
+	ld [$d84a], a
+	call DelayFrame
+	call RNG
+	ld [$d84b], a
+	ld hl, PartyCount
+	call Function5ca1
+	xor a
+	ld [$db72], a
+	ld [$d4b4], a
+	call Function5ca6
+	ld a, $1
+	call GetSRAMBank
+	ld hl, $ad10
+	call Function5ca1
+	call CloseSRAM
+	ld hl, NumItems
+	call Function5ca1
+	ld hl, NumKeyItems
+	call Function5ca1
+	ld hl, NumBalls
+	call Function5ca1
+	ld hl, $d8f1
+	call Function5ca1
+	xor a
+	ld [RoamMon1Species], a
+	ld [RoamMon2Species], a
+	ld [RoamMon3Species], a
+	ld a, $ff
+	ld [RoamMon1MapGroup], a
+	ld [RoamMon2MapGroup], a
+	ld [RoamMon3MapGroup], a
+	ld [RoamMon1MapNumber], a
+	ld [RoamMon2MapNumber], a
+	ld [RoamMon3MapNumber], a
+	ld a, $0
+	call GetSRAMBank
+	ld hl, $abe2
+	xor a
+	ld [hli], a
+	dec a
+	ld [hl], a
+	call CloseSRAM
+	call Function5d33
+	call Function5cd3
+	xor a
+	ld [MonType], a
+	ld [JohtoBadges], a
+	ld [KantoBadges], a
+	ld [$d855], a
+	ld [$d856], a
+	ld [Money], a
+	ld a, $b
+	ld [$d84f], a
+	ld a, $b8
+	ld [$d850], a
+	xor a
+	ld [$dc17], a
+	ld hl, $dc19
+	ld [hl], $0
+	inc hl
+	ld [hl], $8
+	inc hl
+	ld [hl], $fc
+	call Function5ce9
+	ld a, $9
+	ld hl, $6751
+	rst FarCall
+	ld a, $11
+	ld hl, $4765
+	rst FarCall
+	ld a, $41
+	ld hl, $61c0
+	rst FarCall
+	call Function208a
+	ret
+; 5ca1
+
+Function5ca1: ; 5ca1
+	xor a
+	ld [hli], a
+	dec a
+	ld [hl], a
+	ret
+; 5ca6
+
+Function5ca6: ; 5ca6
+	ld hl, Box1Name
+	ld c, $0
+.asm_5cab
+	push hl
+	ld de, .Box
+	call CopyName2
+	dec hl
+	ld a, c
+	inc a
+	cp $a
+	jr c, .asm_5cbe
+	sub $a
+	ld [hl], $f7
+	inc hl
+
+.asm_5cbe
+	add $f6
+	ld [hli], a
+	ld [hl], $50
+	pop hl
+	ld de, $0009
+	add hl, de
+	inc c
+	ld a, c
+	cp $e
+	jr c, .asm_5cab
+	ret
+
+.Box
+	db "BOX@"
+; 5cd3
+
+Function5cd3: ; 5cd3
+	ld hl, $dfe8
+	ld a, $3
+	ld [hli], a
+	ld a, $6
+	ld [hli], a
+	ld de, .Ralph
+	call CopyName2
+	ret
+; 5ce3
+
+.Ralph ; 5ce3
+	db "RALPH@"
+; 5ce9
+
+Function5ce9: ; 5ce9
+	ld hl, .Rival
+	ld de, RivalName
+	call .Copy
+
+	ld hl, .Mom
+	ld de, MomsName
+	call .Copy
+
+	ld hl, .Red
+	ld de, RedsName
+	call .Copy
+
+	ld hl, .Green
+	ld de, GreensName
+
+.Copy
+	ld bc, $000b
+	call CopyBytes
+	ret
+
+.Rival
+	db "???@"
+.Red
+	db "RED@"
+.Green
+	db "GREEN@"
+.Mom
+	db "MOM@"
+; 5d23
+
+Function5d23: ; 5d23
+	call Function610f
+	ld a, $2
+	ld hl, $4029
+	rst FarCall
+	ld a, $4
+	ld hl, $53d6
+	rst FarCall
+	ret
+; 5d33
+
+Function5d33: ; 5d33
+	ld a, $0
+	call GetSRAMBank
+	ld a, [CurDay]
+	inc a
+	ld b, a
+	ld a, [$ac68]
+	cp b
+	ld a, [$ac6a]
+	ld c, a
+	ld a, [$ac69]
+	jr z, .asm_5d55
+	ld a, b
+	ld [$ac68], a
+	call RNG
+	ld c, a
+	call RNG
+
+.asm_5d55
+	ld [$dc9f], a
+	ld [$ac69], a
+	ld a, c
+	ld [$dca0], a
+	ld [$ac6a], a
+	jp CloseSRAM
+; 5d65
+
+Continue: ; 5d65
+	ld a, $5
+	ld hl, $4ea5
+	rst FarCall
+	jr c, .asm_5dd6
+	ld a, $5
+	ld hl, $50b9
+	rst FarCall
+	call Function1d6e
+	call Function5e85
+	ld a, $1
+	ld [hBGMapMode], a
+	ld c, $14
+	call DelayFrames
+	call Function5e34
+	jr nc, .asm_5d8c
+	call Function1c17
+	jr .asm_5dd6
+
+.asm_5d8c
+	call Function5e48
+	jr nc, .asm_5d96
+	call Function1c17
+	jr .asm_5dd6
+
+.asm_5d96
+	ld a, $8
+	ld [MusicFade], a
+	ld a, MUSIC_NONE % $100
+	ld [MusicFadeIDLo], a
+	ld a, MUSIC_NONE / $100
+	ld [MusicFadeIDHi], a
+	call WhiteBGMap
+	call Function5df0
+	call Function1c17
+	call ClearTileMap
+	ld c, $14
+	call DelayFrames
+	ld a, $a
+	ld hl, $6394
+	rst FarCall
+	ld a, $41
+	ld hl, $5091
+	rst FarCall
+	ld a, $5
+	ld hl, $40ae
+	rst FarCall
+	ld a, [$d4b5]
+	cp $1
+	jr z, .asm_5dd7
+	ld a, $f2
+	ld [$ff9f], a
+	jp Function5e5d
+
+.asm_5dd6
+	ret
+
+.asm_5dd7
+	ld a, $e
+	ld [$d001], a
+	call Function5de7
+	jp Function5e5d
+; 5de2
+
+Function5de2: ; 5de2
+	ld a, $1a
+	ld [$d001], a
+; 5de7
+
+Function5de7: ; 5de7
+	xor a
+	ld [$d4b5], a
+	ld a, $f1
+	ld [$ff9f], a
+	ret
+; 5df0
+
+Function5df0: ; 5df0
+	ld a, $41
+	ld hl, $632f
+	rst FarCall
+	ret nc
+	ld hl, $d479
+	bit 1, [hl]
+	ret nz
+	ld a, $5
+	ld [MusicFade], a
+	ld a, MUSIC_MOBILE_ADAPTER_MENU % $100
+	ld [MusicFadeIDLo], a
+	ld a, MUSIC_MOBILE_ADAPTER_MENU / $100
+	ld [MusicFadeIDHi], a
+	ld c, 20
+	call DelayFrames
+	ld c, $1
+	ld a, $12
+	ld hl, $402f
+	rst FarCall
+	ld a, $5
+	ld hl, $509a
+	rst FarCall
+	ld a, $8
+	ld [MusicFade], a
+	ld a, MUSIC_NONE % $100
+	ld [MusicFadeIDLo], a
+	ld a, MUSIC_NONE / $100
+	ld [MusicFadeIDHi], a
+	ld c, 35
+	call DelayFrames
+	ret
+; 5e34
+
+Function5e34: ; 5e34
+.asm_5e34
+	call DelayFrame
+	call GetJoypadPublic
+	ld hl, hJoyPressed
+	bit 0, [hl]
+	jr nz, .asm_5e47
+	bit 1, [hl]
+	jr z, .asm_5e34
+	scf
+	ret
+
+.asm_5e47
+	ret
+; 5e48
+
+Function5e48: ; 5e48
+	call $06e3
+	and $80
+	jr z, .asm_5e5b
+	ld a, $8
+	ld hl, $4021
+	rst FarCall
+	ld a, c
+	and a
+	jr z, .asm_5e5b
+	scf
+	ret
+
+.asm_5e5b
+	xor a
+	ret
+; 5e5d
+
+Function5e5d: ; 5e5d
+.asm_5e5d
+	xor a
+	ld [$c2c1], a
+	ld [InLinkBattle], a
+	ld hl, GameTimerPause
+	set 0, [hl]
+	res 7, [hl]
+	ld hl, $d83e
+	set 1, [hl]
+	callba Function966b0
+	ld a, [$d4b5]
+	cp $2
+	jr z, .asm_5e80
+	jp Reset
+
+.asm_5e80
+	call Function5de2
+	jr .asm_5e5d
+; 5e85
+
+Function5e85: ; 5e85
+	call $06e3
+	and $80
+	jr z, .asm_5e93
+	ld de, $0408
+	call Function5eaf
+	ret
+
+.asm_5e93
+	ld de, $0408
+	call Function5e9f
+	ret
+; 5e9a
+
+Function5e9a: ; 5e9a
+	ld de, $0400
+	jr Function5e9f
+; 5e9f
+
+Function5e9f: ; 5e9f
+	call Function5ebf
+	call Function5f1c
+	call Function5f40
+	call Functione5f
+	call Function1ad2
+	ret
+; 5eaf
+
+Function5eaf: ; 5eaf
+	call Function5ebf
+	call Function5f1c
+	call Function5f48
+	call Functione5f
+	call Function1ad2
+	ret
+; 5ebf
+
+Function5ebf: ; 5ebf
+	xor a
+	ld [hBGMapMode], a
+	ld hl, MenuDataHeader_0x5ed9
+	ld a, [StatusFlags]
+	bit 0, a ; pokedex
+	jr nz, .asm_5ecf
+	ld hl, MenuDataHeader_0x5efb
+
+.asm_5ecf
+	call Function1e35
+	call Function1cbb
+	call Function1c89
+	ret
+; 5ed9
+
+MenuDataHeader_0x5ed9: ; 5ed9
+	db $40 ; flags
+	db 00, 00 ; start coords
+	db 09, 15 ; end coords
+	dw MenuData2_0x5ee1
+	db 1 ; default option
+; 5ee1
+
+MenuData2_0x5ee1: ; 5ee1
+	db $00 ; flags
+	db 4 ; items
+	db "PLAYER@"
+	db "BADGES@"
+	db "#DEX@"
+	db "TIME@"
+; 5efb
+
+MenuDataHeader_0x5efb: ; 5efb
+	db $40 ; flags
+	db 00, 00 ; start coords
+	db 09, 15 ; end coords
+	dw MenuData2_0x5f03
+	db 1 ; default option
+; 5f03
+
+MenuData2_0x5f03: ; 5f03
+	db $00 ; flags
+	db 4 ; items
+	db "PLAYER ", $52, "@"
+	db "BADGES@"
+	db " @"
+	db "TIME@"
+; 5f1c
+
+
+Function5f1c: ; 5f1c
+	call Function1cfd
+	push hl
+	ld de, $005d
+	add hl, de
+	call Function5f58
+	pop hl
+	push hl
+	ld de, $0084
+	add hl, de
+	call Function5f6b
+	pop hl
+	push hl
+	ld de, $0030
+	add hl, de
+	ld de, .Player
+	call PlaceString
+	pop hl
+	ret
+
+.Player
+	db $52, "@"
+; 5f40
+
+Function5f40: ; 5f40
+	ld de, $00a9
+	add hl, de
+	call Function5f84
+	ret
+; 5f48
+
+Function5f48: ; 5f48
+	ld de, $00a9
+	add hl, de
+	ld de, .text_5f53
+	call PlaceString
+	ret
+
+.text_5f53
+	db " ???@"
+; 5f58
+
+Function5f58: ; 5f58
+	push hl
+	ld hl, JohtoBadges
+	ld b, $2
+	call CountSetBits
+	pop hl
+	ld de, $d265
+	ld bc, $0102
+	jp PrintNum
+; 5f6b
+
+Function5f6b: ; 5f6b
+	ld a, [StatusFlags]
+	bit 0, a
+	ret z
+	push hl
+	ld hl, PokedexSeen
+	ld b, $20
+	call CountSetBits
+	pop hl
+	ld de, $d265
+	ld bc, $0103
+	jp PrintNum
+; 5f84
+
+Function5f84: ; 5f84
+	ld de, GameTimeHours
+	ld bc, $0203
+	call PrintNum
+	ld [hl], $6d
+	inc hl
+	ld de, GameTimeMinutes
+	ld bc, $8102
+	jp PrintNum
+; 5f99
+
+
 OakSpeech: ; 0x5f99
 	ld a, $24
 	ld hl, $4672
@@ -5585,11 +15859,11 @@
 	ld [CurPartySpecies], a
 	ld a, POKEMON_PROF
 	ld [TrainerClass], a
-	call $619c
+	call Function619c
 
 	ld b, $1c
 	call GetSGBLayout
-	call $616a
+	call Function616a
 
 	ld hl, OakText1
 	call PrintText
@@ -5597,20 +15871,20 @@
 	call ClearTileMap
 
 	ld a, $c2
-	ld [$cf60], a
+	ld [CurSpecies], a
 	ld [CurPartySpecies], a
-	call $3856
+	call GetBaseData
 
 	hlcoord 6, 4
-	call $3786
+	call Function3786
 
 	xor a
-	ld [$d123], a
+	ld [TempMonDVs], a
 	ld [$d124], a
 
 	ld b, $1c
 	call GetSGBLayout
-	call $6182
+	call Function6182
 
 	ld hl, OakText2
 	call PrintText
@@ -5623,11 +15897,11 @@
 	ld [CurPartySpecies], a
 	ld a, POKEMON_PROF
 	ld [TrainerClass], a
-	call $619c
+	call Function619c
 
 	ld b, $1c
 	call GetSGBLayout
-	call $616a
+	call Function616a
 
 	ld hl, OakText5
 	call PrintText
@@ -5640,7 +15914,7 @@
 
 	ld b, $1c
 	call GetSGBLayout
-	call $616a
+	call Function616a
 
 	ld hl, OakText6
 	call PrintText
@@ -5657,8 +15931,8 @@
 	TX_FAR _OakText2
 	start_asm
 	ld a,WOOPER
-	call $37ce
-	call $3c55
+	call Function37ce
+	call WaitSFX
 	ld hl,OakText3
 	ret
 
@@ -5688,7 +15962,7 @@
 	ld a, [$cfa9]
 	dec a
 	jr z, .NewName
-	call $60fa
+	call Function60fa
 	ld a, $2
 	ld hl, $4c1d
 	rst FarCall
@@ -5705,7 +15979,7 @@
 	call $04b6
 	call ClearTileMap
 
-	call $0e5f
+	call Functione5f
 	call WaitBGMap
 
 	xor a
@@ -5716,7 +15990,7 @@
 
 	ld b, $1c
 	call GetSGBLayout
-	call $04f0
+	call Function4f0
 
 	ld hl, PlayerName
 	ld de, .Chris
@@ -5725,7 +15999,7 @@
 	jr z, .asm_60cf
 	ld de, .Kris
 .asm_60cf
-	call InitString
+	call InitName
 	ret
 
 .Chris
@@ -5734,8 +16008,82 @@
 	db "KRIS@@@@@@@"
 ; 60e9
 
-INCBIN "baserom.gbc", $60e9, $617c - $60e9
+Function60e9: ; 60e9
+	call LoadMenuDataHeader
+	call Function1d81
+	ld a, [$cfa9]
+	dec a
+	call Function1db8
+	call Function1c17
+	ret
+; 60fa
 
+Function60fa: ; 60fa
+	ld a, $50
+	ld bc, $000b
+	ld hl, PlayerName
+	call ByteFill
+	ld hl, PlayerName
+	ld de, StringBuffer2
+	call CopyName2
+	ret
+; 610f
+
+Function610f: ; 610f
+	ld a, [hROMBank]
+	push af
+	ld a, $20
+	ld [MusicFade], a
+	ld de, MUSIC_NONE
+	ld a, e
+	ld [MusicFadeIDLo], a
+	ld a, d
+	ld [MusicFadeIDHi], a
+	ld de, SFX_ESCAPE_ROPE
+	call StartSFX
+	pop af
+	rst Bankswitch
+
+	ld c, $8
+	call DelayFrames
+	ld hl, $5249
+	ld b, $13
+	call Function61b4
+	ld c, $8
+	call DelayFrames
+	ld hl, $52d9
+	ld b, $13
+	call Function61b4
+	ld c, $8
+	call DelayFrames
+	ld hl, $c50a
+	ld b, $7
+	ld c, $7
+	call ClearBox
+	ld c, $3
+	call DelayFrames
+	call Function61cd
+	call Functione5f
+	ld c, $32
+	call DelayFrames
+	call Function4b6
+	call ClearTileMap
+	ret
+; 616a
+
+Function616a: ; 616a
+	ld hl, IntroFadePalettes
+	ld b, $6
+.asm_616f
+	ld a, [hli]
+	call DmgToCgbBGPals
+	ld c, $a
+	call DelayFrames
+	dec b
+	jr nz, .asm_616f
+	ret
+; 617c
+
 IntroFadePalettes: ; 0x617c
 	db %01010100
 	db %10101000
@@ -5745,37 +16093,237 @@
 	db %11100100
 ; 6182
 
-INCBIN "baserom.gbc", $6182, $6274 - $6182
+Function6182: ; 6182
+	ld a, $77
+	ld [hWX], a
+	call DelayFrame
+	ld a, $e4
+	call DmgToCgbBGPals
+.asm_618e
+	call DelayFrame
+	ld a, [hWX]
+	sub $8
+	cp $ff
+	ret z
+	ld [hWX], a
+	jr .asm_618e
+; 619c
 
+Function619c: ; 619c
+	ld de, VTiles2
+	callba Function5120d
+	xor a
+	ld [$ffad], a
+	ld hl, $c4f6
+	ld bc, $0707
+	ld a, $13
+	call Predef
+	ret
+; 61b4
+
+Function61b4: ; 61b4
+	ld de, VTiles2
+	ld c, $31
+	ld a, $40
+	call Predef
+	xor a
+	ld [$ffad], a
+	ld hl, $c4f6
+	ld bc, $0707
+	ld a, $13
+	call Predef
+	ret
+; 61cd
+
+Function61cd: ; 61cd
+	callba GetPlayerIcon
+	ld c, $c
+	ld hl, VTiles0
+	call Request2bpp
+	ld hl, Sprites
+	ld de, .data_61fe
+	ld a, [de]
+	inc de
+	ld c, a
+.asm_61e4
+	ld a, [de]
+	inc de
+	ld [hli], a
+	ld a, [de]
+	inc de
+	ld [hli], a
+	ld a, [de]
+	inc de
+	ld [hli], a
+	ld b, $0
+	ld a, [PlayerGender]
+	bit 0, a
+	jr z, .asm_61f8
+	ld b, $1
+
+.asm_61f8
+	ld a, b
+	ld [hli], a
+	dec c
+	jr nz, .asm_61e4
+	ret
+; 61fe
+
+.data_61fe ; 61fe
+	db 4
+	db $4c, $48, $00
+	db $4c, $50, $01
+	db $54, $48, $02
+	db $54, $50, $03
+; 620b
+
+
+Function620b: ; 620b
+	ld hl, $4579
+	ld a, $39
+	rst FarCall
+	jr c, .asm_6219
+	ld a, $39
+	ld hl, Function48ac
+	rst FarCall
+
+.asm_6219
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	call FarStartTitleScreen
+	call DelayFrame
+.asm_6226
+	call Function627b
+	jr nc, .asm_6226
+	call ClearSprites
+	call WhiteBGMap
+	pop af
+	ld [rSVBK], a
+	ld hl, rLCDC
+	res 2, [hl]
+	call Functionfdb
+	call Function3200
+	xor a
+	ld [hLCDStatCustom], a
+	ld [hSCX], a
+	ld [hSCY], a
+	ld a, $7
+	ld [hWX], a
+	ld a, $90
+	ld [hWY], a
+	ld b, $8
+	call GetSGBLayout
+	call Function485
+	ld a, [$cf64]
+	cp $5
+	jr c, .asm_625e
+	xor a
+
+.asm_625e
+	ld e, a
+	ld d, 0
+	ld hl, .data_626a
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 626a
+
+.data_626a
+	dw Function5ae8
+	dw Function6389
+	dw Function620b
+	dw Function620b
+	dw Function6392
+; 6274
+
+
 FarStartTitleScreen: ; 6274
 	callba StartTitleScreen
 	ret
 ; 627b
 
-INCBIN "baserom.gbc", $627b, $62bc - $627b
+Function627b: ; 627b
+	ld a, [$cf63]
+	bit 7, a
+	jr nz, .asm_6290
+	call Function62a3
+	ld a, $43
+	ld hl, $6ea7
+	rst FarCall
+	call DelayFrame
+	and a
+	ret
 
+.asm_6290
+	scf
+	ret
+; 6292
+
+Function6292: ; 6292
+	ld a, [$ff9b]
+	and $7
+	ret nz
+	ld hl, $d15f
+	ld a, [hl]
+	dec a
+	ld bc, $0028
+	call ByteFill
+	ret
+; 62a3
+
+Function62a3: ; 62a3
+	ld e, a
+	ld d, 0
+	ld hl, .data_62af
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 62af
+
+.data_62af
+	dw TitleScreenEntrance
+	dw Function62f6
+	dw Function6304
+	dw Function6375
+; 62b7
+
+Function62b7: ; 62b7
+	ld hl, $cf63
+	inc [hl]
+	ret
+; 62bc
+
+
 TitleScreenEntrance: ; 62bc
 
 ; Animate the logo:
 ; Move each line by 4 pixels until our count hits 0.
-	ld a, [$ffcf]
+	ld a, [hSCX]
 	and a
 	jr z, .done
 	sub 4
-	ld [$ffcf], a
-	
+	ld [hSCX], a
+
 ; Lay out a base (all lines scrolling together).
 	ld e, a
 	ld hl, $d100
 	ld bc, 8 * 10 ; logo height
 	call ByteFill
-	
+
 ; Alternate signage for each line's position vector.
 ; This is responsible for the interlaced effect.
 	ld a, e
 	xor $ff
 	inc a
-	
+
 	ld b, 8 * 10 / 2 ; logo height / 2
 	ld hl, $d101
 .loop
@@ -5783,11 +16331,10 @@
 	inc hl
 	dec b
 	jr nz, .loop
-	
+
 	callba AnimateTitleCrystal
 	ret
-	
-	
+
 .done
 ; Next scene
 	ld hl, $cf63
@@ -5798,14 +16345,564 @@
 ; Play the title screen music.
 	ld de, MUSIC_TITLE
 	call StartMusic
-	
+
 	ld a, $88
-	ld [$ffd2], a
+	ld [hWY], a
 	ret
 ; 62f6
 
-INCBIN "baserom.gbc", $62f6, $669f - $62f6
 
+Function62f6: ; 62f6
+	ld hl, $cf63
+	inc [hl]
+	ld hl, $cf65
+	ld de, $1140
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ret
+; 6304
+
+Function6304: ; 6304
+	ld hl, $cf65
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld a, e
+	or d
+	jr z, .asm_6355
+	dec de
+	ld [hl], d
+	dec hl
+	ld [hl], e
+	call GetJoypadPublic
+	ld hl, hJoyDown
+	ld a, [hl]
+	and $46
+	cp $46
+	jr z, .asm_634a
+	ld a, [$ffeb]
+	cp $34
+	jr z, .asm_6332
+	ld a, [hl]
+	and $86
+	cp $86
+	jr nz, .asm_6340
+	ld a, $34
+	ld [$ffeb], a
+	jr .asm_6340
+
+.asm_6332
+	bit 2, [hl]
+	jr nz, .asm_6340
+	xor a
+	ld [$ffeb], a
+	ld a, [hl]
+	and $60
+	cp $60
+	jr z, .asm_636a
+
+.asm_6340
+	ld a, [hl]
+	and $9
+	jr nz, .asm_6346
+	ret
+
+.asm_6346
+	ld a, $0
+	jr .asm_634c
+
+.asm_634a
+	ld a, $1
+
+.asm_634c
+	ld [$cf64], a
+	ld hl, $cf63
+	set 7, [hl]
+	ret
+
+.asm_6355
+	ld hl, $cf63
+	inc [hl]
+	xor a
+	ld [MusicFadeIDLo], a
+	ld [MusicFadeIDHi], a
+	ld hl, MusicFade
+	ld [hl], $8
+	ld hl, $cf65
+	inc [hl]
+	ret
+
+.asm_636a
+	ld a, $4
+	ld [$cf64], a
+	ld hl, $cf63
+	set 7, [hl]
+	ret
+; 6375
+
+Function6375: ; 6375
+	ld hl, $cf65
+	inc [hl]
+	ld a, [MusicFade]
+	and a
+	ret nz
+	ld a, $2
+	ld [$cf64], a
+	ld hl, $cf63
+	set 7, [hl]
+	ret
+; 6389
+
+Function6389: ; 6389
+	ld a, $13
+	ld hl, $554c
+	rst FarCall
+	jp Init
+; 6392
+
+Function6392: ; 6392
+	ld a, $13
+	ld hl, $53b1
+	rst FarCall
+	jp Init
+; 639b
+
+Function639b: ; 639b
+	ld a, [$cf65]
+	and $3
+	ret nz
+	ld bc, $c3a4
+	ld hl, $000a
+	add hl, bc
+	ld l, [hl]
+	ld h, 0
+	add hl, hl
+	add hl, hl
+	ld de, Data63ca
+	add hl, de
+	ld a, [$cf65]
+	and $4
+	srl a
+	srl a
+	ld e, a
+	ld d, 0
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	and a
+	ret z
+	ld e, a
+	ld d, [hl]
+	ld a, $1
+	call Function3b2a
+	ret
+; 63ca
+
+Data63ca: ; 63ca
+INCBIN "baserom.gbc", $63ca, $63e2 - $63ca
+
+
+Copyright: ; 63e2
+	call ClearTileMap
+	call Functione5f
+	ld de, CopyrightGFX
+	ld hl, VTiles2 + $600 ; tile $60
+	ld bc, BANK(CopyrightGFX) << 8 + $1d
+	call Request2bpp
+	hlcoord 2, 7
+	ld de, CopyrightString
+	jp PlaceString
+; 63fd
+
+CopyrightString: ; 63fd
+	; ©1995-2001 Nintendo
+	db $60, $61, $62, $63, $64, $65, $66
+	db $67, $68, $69, $6a, $6b, $6c
+
+	db $4e
+
+	; ©1995-2001 Creatures inc.
+	db $60, $61, $62, $63, $64, $65, $66, $6d
+	db $6e, $6f, $70, $71, $72, $7a, $7b, $7c
+
+	db $4e
+
+	; ©1995-2001 GAME FREAK inc.
+	db $60, $61, $62, $63, $64, $65, $66, $73, $74
+	db $75, $76, $77, $78, $79, $7a, $7b, $7c
+
+	db "@"
+; 642e
+
+GameInit: ; 642e
+	ld a, $5
+	ld hl, $4f1c
+	rst FarCall
+	call Function1fbf
+	call WhiteBGMap
+	call ClearTileMap
+	ld a, $98
+	ld [$ffd7], a
+	xor a
+	ld [hBGMapAddress], a
+	ld [hJoyDown], a
+	ld [hSCX], a
+	ld [hSCY], a
+	ld a, $90
+	ld [hWY], a
+	call WaitBGMap
+	jp Function620b
+; 6454
+
+Function6454: ; 6454
+	call DelayFrame
+	ld a, [hOAMUpdate]
+	push af
+	ld a, $1
+	ld [hOAMUpdate], a
+	ld a, [hBGMapMode]
+	push af
+	xor a
+	ld [hBGMapMode], a
+	call Function6473
+	pop af
+	ld [hBGMapMode], a
+	pop af
+	ld [hOAMUpdate], a
+	ld hl, VramState
+	set 6, [hl]
+	ret
+; 6473
+
+Function6473: ; 6473
+	xor a
+	ld [hLCDStatCustom], a
+	ld [hBGMapMode], a
+	ld a, $90
+	ld [hWY], a
+	call Function2173
+	ld a, $9c
+	call Function64b9
+	call Function2e20
+	ld a, $12
+	ld hl, $5409
+	rst FarCall
+	ld a, $2
+	ld hl, $56a4
+	rst FarCall
+	ld a, $1
+	ld [hCGBPalUpdate], a
+	xor a
+	ld [hBGMapMode], a
+	ld [hWY], a
+	ld a, $1
+	ld hl, $64db
+	rst FarCall
+	ld a, $98
+	call Function64b9
+	xor a
+	ld [$d152], a
+	ld a, $98
+	ld [$d153], a
+	xor a
+	ld [hSCX], a
+	ld [hSCY], a
+	call Function5958
+	ret
+; 64b9
+
+Function64b9: ; 64b9
+	ld [$ffd7], a
+	xor a
+	ld [hBGMapAddress], a
+	ret
+; 64bf
+
+Function64bf: ; 64bf
+	ld a, [hOAMUpdate]
+	push af
+	ld a, $1
+	ld [hOAMUpdate], a
+	call Function64cd
+	pop af
+	ld [hOAMUpdate], a
+	ret
+; 64cd
+
+Function64cd: ; 64cd
+	call Functione5f
+	ld a, $90
+	ld [hWY], a
+	call Function2e31
+	call $0e51
+	ret
+; 64db
+
+Function64db: ; 64db
+	ld a, [rSVBK]
+	push af
+	ld a, $6
+	ld [rSVBK], a
+	ld a, $60
+	ld hl, $d000
+	ld bc, VBlank5
+	call ByteFill
+	ld a, $d0
+	ld [rHDMA1], a
+	ld a, $0
+	ld [rHDMA2], a
+	ld a, $18
+	ld [rHDMA3], a
+	ld a, $0
+	ld [rHDMA4], a
+	ld a, $3f
+	ld [hDMATransfer], a
+	call DelayFrame
+	pop af
+	ld [rSVBK], a
+	ret
+; 6508
+
+Function6508: ; 6508
+	call Function309d
+	ld a, [CurPartyMon]
+	ld hl, PartyMon1Nickname
+	call GetNick
+	ld hl, StringBuffer1
+	ld de, $d050
+	ld bc, $000b
+	call CopyBytes
+	ld hl, PartyMon1Move1
+	ld bc, $0030
+	ld a, [CurPartyMon]
+	call AddNTimes
+	ld d, h
+	ld e, l
+	ld b, $4
+.asm_6530
+	ld a, [hl]
+	and a
+	jr z, .asm_6564
+	inc hl
+	dec b
+	jr nz, .asm_6530
+	push de
+	call Function65d3
+	pop de
+	jp c, Function65b5
+	push hl
+	push de
+	ld [$d265], a
+	ld b, a
+	ld a, [IsInBattle]
+	and a
+	jr z, .asm_6559
+	ld a, [DisabledMove]
+	cp b
+	jr nz, .asm_6559
+	xor a
+	ld [DisabledMove], a
+	ld [PlayerDisableCount], a
+
+.asm_6559
+	call GetMoveName
+	ld hl, UnknownText_0x6684
+	call PrintText
+	pop de
+	pop hl
+
+.asm_6564
+	ld a, [$d262]
+	ld [hl], a
+	ld bc, $0015
+	add hl, bc
+	push hl
+	push de
+	dec a
+	ld hl, $5b00
+	ld bc, $0007
+	call AddNTimes
+	ld a, $10
+	call GetFarByte
+	pop de
+	pop hl
+	ld [hl], a
+	ld a, [IsInBattle]
+	and a
+	jp z, Function65ca
+	ld a, [CurPartyMon]
+	ld b, a
+	ld a, [CurBattleMon]
+	cp b
+	jp nz, Function65ca
+	ld a, [PlayerSubStatus5]
+	bit 3, a
+	jp nz, Function65ca
+	ld h, d
+	ld l, e
+	ld de, BattleMonMove1
+	ld bc, $0004
+	call CopyBytes
+	ld bc, $0011
+	add hl, bc
+	ld de, BattleMonPPMove1
+	ld bc, $0004
+	call CopyBytes
+	jp Function65ca
+; 65b5
+
+Function65b5: ; 65b5
+	ld hl, UnknownText_0x6675
+	call PrintText
+	call Function1dcf
+	jp c, $6520
+	ld hl, UnknownText_0x667a
+	call PrintText
+	ld b, $0
+	ret
+; 65ca
+
+Function65ca: ; 65ca
+	ld hl, UnknownText_0x666b
+	call PrintText
+	ld b, $1
+	ret
+; 65d3
+
+Function65d3: ; 65d3
+	push hl
+	ld hl, UnknownText_0x667f
+	call PrintText
+	call Function1dcf
+	pop hl
+	ret c
+	ld bc, $fffc
+	add hl, bc
+	push hl
+	ld de, $d25e
+	ld bc, $0004
+	call CopyBytes
+	pop hl
+.asm_65ee
+	push hl
+	ld hl, UnknownText_0x6670
+	call PrintText
+	ld hl, $c4cd
+	ld b, $8
+	ld c, $d
+	call TextBox
+	ld hl, $c4f7
+	ld a, $28
+	ld [Buffer1], a
+	ld a, $20
+	call Predef
+	ld a, $4
+	ld [$cfa1], a
+	ld a, $6
+	ld [$cfa2], a
+	ld a, [$d0eb]
+	inc a
+	ld [$cfa3], a
+	ld a, $1
+	ld [$cfa4], a
+	ld [$cfa9], a
+	ld [$cfaa], a
+	ld a, $3
+	ld [$cfa8], a
+	ld a, $20
+	ld [$cfa5], a
+	xor a
+	ld [$cfa6], a
+	ld a, $20
+	ld [$cfa7], a
+	call Function1bc9
+	push af
+	call Function30b4
+	pop af
+	pop hl
+	bit 1, a
+	jr nz, .asm_6669
+	push hl
+	ld a, [$cfa9]
+	dec a
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [hl]
+	push af
+	push bc
+	call IsHMMove
+	pop bc
+	pop de
+	ld a, d
+	jr c, .asm_6660
+	pop hl
+	add hl, bc
+	and a
+	ret
+
+.asm_6660
+	ld hl, UnknownText_0x669a
+	call PrintText
+	pop hl
+	jr .asm_65ee
+
+.asm_6669
+	scf
+	ret
+; 666b
+
+UnknownText_0x666b: ; 666b
+	text_jump UnknownText_0x1c5660, BANK(UnknownText_0x1c5660)
+	db "@"
+; 6670
+
+UnknownText_0x6670: ; 6670
+	text_jump UnknownText_0x1c5678, BANK(UnknownText_0x1c5678)
+	db "@"
+; 6675
+
+UnknownText_0x6675: ; 6675
+	text_jump UnknownText_0x1c5699, BANK(UnknownText_0x1c5699)
+	db "@"
+; 667a
+
+UnknownText_0x667a: ; 667a
+	text_jump UnknownText_0x1c56af, BANK(UnknownText_0x1c56af)
+	db "@"
+; 667f
+
+UnknownText_0x667f: ; 667f
+	text_jump UnknownText_0x1c56c9, BANK(UnknownText_0x1c56c9)
+	db "@"
+; 6684
+
+UnknownText_0x6684: ; 6684
+	text_jump UnknownText_0x1c5740, BANK(UnknownText_0x1c5740)
+	start_asm
+; 6689
+
+; 6689
+	push de
+	ld de, SFX_SWITCH_POKEMON
+	call StartSFX
+	pop de
+	ld hl, UnknownText_0x6695
+	ret
+; 6695
+
+UnknownText_0x6695: ; 6695
+	text_jump UnknownText_0x1c574e, BANK(UnknownText_0x1c574e)
+	db "@"
+; 669a
+
+UnknownText_0x669a: ; 669a
+	text_jump UnknownText_0x1c5772, BANK(UnknownText_0x1c5772)
+	db "@"
+; 669f
+
+
 CheckNickErrors: ; 669f
 ; error-check monster nick before use
 ; must be a peace offering to gamesharkers
@@ -6088,9 +17185,43 @@
 ; 6ec1
 
 
-INCBIN "baserom.gbc", $6ec1, $6eef - $6ec1
+Function6ec1: ; 6ec1
 
+	ld hl, $0006
+	add hl, bc
+	bit 5, [hl]
+	jr z, .asm_6ed9
+	ld hl, $0004
+	add hl, bc
+	bit 4, [hl]
+	push hl
+	push bc
+	call Function6f2c
+	pop bc
+	pop hl
+	ret c
+	jr .asm_6ee9
 
+.asm_6ed9
+	ld hl, $0004
+	add hl, bc
+	bit 4, [hl]
+	jr nz, .asm_6ee9
+	push hl
+	push bc
+	call Function6f07
+	pop bc
+	pop hl
+	ret c
+
+.asm_6ee9
+	bit 6, [hl]
+	jr nz, Function6ef5
+	push hl
+	push bc
+	; fallthrough
+; 6eef
+
 DrawGraphic: ; 6eef
 ; input:
 ;   hl: draw location
@@ -6098,18 +17229,22 @@
 ;   c: width
 ;   d: tile to start drawing from
 ;   e: number of tiles to advance for each row
-	call $7009
+	call Function7009
 	pop bc
 	pop hl
 	ret c
+	; fallthrough
+; 6ef5
+
+Function6ef5: ; 6ef5
 	bit 5, [hl]
 	jr nz, .asm_6f05
 	push hl
-	call $70a4
+	call Function70a4
 	pop hl
 	ret c
 	push hl
-	call $70ed
+	call Function70ed
 	pop hl
 	ret c
 .asm_6f05
@@ -6118,9 +17253,174 @@
 ; 6f07
 
 
-INCBIN "baserom.gbc", $6f07, $6fd9 - $6f07
+Function6f07: ; 6f07
+	call Function6f5f
+	ret c
+	ld hl, $0010
+	add hl, bc
+	ld d, [hl]
+	ld hl, $0011
+	add hl, bc
+	ld e, [hl]
+	ld hl, $0006
+	add hl, bc
+	bit 7, [hl]
+	jp nz, Function6fa1
+	ld hl, $000e
+	add hl, bc
+	ld a, [hl]
+	ld d, a
+	call GetTileCollision
+	and a
+	jr z, Function6f3e
+	scf
+	ret
+; 6f2c
 
+Function6f2c: ; 6f2c
+	call Function6f5f
+	ret c
+	ld hl, $000e
+	add hl, bc
+	ld a, [hl]
+	call GetTileCollision
+	cp $1
+	jr z, Function6f3e
+	scf
+	ret
+; 6f3e
 
+Function6f3e: ; 6f3e
+	ld hl, $000e
+	add hl, bc
+	ld a, [hl]
+	call Function6f7f
+	ret nc
+	push af
+	ld hl, $0007
+	add hl, bc
+	ld a, [hl]
+	and 3
+	ld e, a
+	ld d, 0
+	ld hl, .data_6f5b
+	add hl, de
+	pop af
+	and [hl]
+	ret z
+	scf
+	ret
+; 6f5b
+
+.data_6f5b
+	db 1, 2, 8, 4
+; 6f5f
+
+Function6f5f: ; 6f5f
+	ld hl, $000f
+	add hl, bc
+	ld a, [hl]
+	call Function6f7f
+	ret nc
+	push af
+	ld hl, $0007
+	add hl, bc
+	and 3
+	ld e, a
+	ld d, 0
+	ld hl, .data_6f7b
+	add hl, de
+	pop af
+	and [hl]
+	ret z
+	scf
+	ret
+; 6f7b
+
+.data_6f7b
+	db 2, 1, 4, 8
+; 6f7f
+
+Function6f7f: ; 6f7f
+	ld d, a
+	and $f0
+	cp $b0
+	jr z, .asm_6f8c
+	cp $c0
+	jr z, .asm_6f8c
+	xor a
+	ret
+
+.asm_6f8c
+	ld a, d
+	and 7
+	ld e, a
+	ld d, 0
+	ld hl, .data_6f99
+	add hl, de
+	ld a, [hl]
+	scf
+	ret
+; 6f99
+
+.data_6f99
+	db 8, 4, 1, 2
+	db 10, 6, 9, 5
+; 6fa1
+
+Function6fa1: ; 6fa1
+	ld hl, $0007
+	add hl, bc
+	ld a, [hl]
+	and 3
+	jr z, .asm_6fb2
+	dec a
+	jr z, .asm_6fb7
+	dec a
+	jr z, .asm_6fbb
+	jr .asm_6fbf
+
+.asm_6fb2
+	inc e
+	push de
+	inc d
+	jr .asm_6fc2
+
+.asm_6fb7
+	push de
+	inc d
+	jr .asm_6fc2
+
+.asm_6fbb
+	push de
+	inc e
+	jr .asm_6fc2
+
+.asm_6fbf
+	inc d
+	push de
+	inc e
+
+.asm_6fc2
+	call Function2a3c
+	call GetTileCollision
+	pop de
+	and a
+	jr nz, .asm_6fd7
+	call Function2a3c
+	call GetTileCollision
+	and a
+	jr nz, .asm_6fd7
+	xor a
+	ret
+
+.asm_6fd7
+	scf
+	ret
+; 6fd9
+
+
+
 CheckFacingObject: ; 6fd9
 
 	call GetFacingTileCoord
@@ -6147,7 +17447,7 @@
 	ld bc, $d4d6
 	ld a, 0
 	ld [hConnectionStripLength], a
-	call $7041
+	call Function7041
 	ret nc
 	ld hl, $0007
 	add hl, bc
@@ -6163,9 +17463,557 @@
 ; 7009
 
 
-INCBIN "baserom.gbc", $7009, $7305 - $7009
+Function7009: ; 7009
+	ld hl, $0010
+	add hl, bc
+	ld d, [hl]
+	ld hl, $0011
+	add hl, bc
+	ld e, [hl]
+	jr Function7041
+; 7015
 
+Function7015: ; 7015
+	ld a, [hConnectionStripLength]
+	call Function1ae5
+	call Function7021
+	call Function7041
+	ret
 
+Function7021: ; 7021
+	ld hl, $0010
+	add hl, bc
+	ld d, [hl]
+	ld hl, $0011
+	add hl, bc
+	ld e, [hl]
+	call GetSpriteDirection
+	and a
+	jr z, .asm_703b
+	cp $4
+	jr z, .asm_703d
+	cp $8
+	jr z, .asm_703f
+	inc d
+	ret
+
+.asm_703b
+	inc e
+	ret
+
+.asm_703d
+	dec e
+	ret
+
+.asm_703f
+	dec d
+	ret
+; 7041
+
+Function7041: ; 7041
+	ld bc, $d4d6
+	xor a
+.asm_7045
+	ld [hConnectedMapWidth], a
+	call Function1af1
+	jr z, .asm_7093
+	ld hl, $0004
+	add hl, bc
+	bit 7, [hl]
+	jr nz, .asm_7093
+	ld hl, $0006
+	add hl, bc
+	bit 7, [hl]
+	jr z, .asm_7063
+	call Function7171
+	jr nc, .asm_707b
+	jr .asm_7073
+
+.asm_7063
+	ld hl, $0010
+	add hl, bc
+	ld a, [hl]
+	cp d
+	jr nz, .asm_707b
+	ld hl, $0011
+	add hl, bc
+	ld a, [hl]
+	cp e
+	jr nz, .asm_707b
+
+.asm_7073
+	ld a, [hConnectionStripLength]
+	ld l, a
+	ld a, [hConnectedMapWidth]
+	cp l
+	jr nz, .asm_70a2
+
+.asm_707b
+	ld hl, $0012
+	add hl, bc
+	ld a, [hl]
+	cp d
+	jr nz, .asm_7093
+	ld hl, $0013
+	add hl, bc
+	ld a, [hl]
+	cp e
+	jr nz, .asm_7093
+	ld a, [hConnectionStripLength]
+	ld l, a
+	ld a, [hConnectedMapWidth]
+	cp l
+	jr nz, .asm_70a2
+
+.asm_7093
+	ld hl, $0028
+	add hl, bc
+	ld b, h
+	ld c, l
+	ld a, [hConnectedMapWidth]
+	inc a
+	cp $d
+	jr nz, .asm_7045
+	and a
+	ret
+
+.asm_70a2
+	scf
+	ret
+; 70a4
+
+Function70a4: ; 70a4
+	ld hl, $0016
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_70e9
+	and $f
+	jr z, .asm_70c7
+	ld e, a
+	ld d, a
+	ld hl, $0014
+	add hl, bc
+	ld a, [hl]
+	sub d
+	ld d, a
+	ld a, [hl]
+	add e
+	ld e, a
+	ld hl, $0010
+	add hl, bc
+	ld a, [hl]
+	cp d
+	jr z, .asm_70eb
+	cp e
+	jr z, .asm_70eb
+
+.asm_70c7
+	ld hl, $0016
+	add hl, bc
+	ld a, [hl]
+	swap a
+	and $f
+	jr z, .asm_70e9
+	ld e, a
+	ld d, a
+	ld hl, $0015
+	add hl, bc
+	ld a, [hl]
+	sub d
+	ld d, a
+	ld a, [hl]
+	add e
+	ld e, a
+	ld hl, $0011
+	add hl, bc
+	ld a, [hl]
+	cp d
+	jr z, .asm_70eb
+	cp e
+	jr z, .asm_70eb
+
+.asm_70e9
+	xor a
+	ret
+
+.asm_70eb
+	scf
+	ret
+; 70ed
+
+Function70ed: ; 70ed
+	ld hl, $0010
+	add hl, bc
+	ld a, [XCoord]
+	cp [hl]
+	jr z, .asm_70fe
+	jr nc, .asm_7111
+	add $9
+	cp [hl]
+	jr c, .asm_7111
+
+.asm_70fe
+	ld hl, $0011
+	add hl, bc
+	ld a, [YCoord]
+	cp [hl]
+	jr z, .asm_710f
+	jr nc, .asm_7111
+	add $8
+	cp [hl]
+	jr c, .asm_7111
+
+.asm_710f
+	and a
+	ret
+
+.asm_7111
+	scf
+	ret
+; 7113
+
+Function7113: ; 7113
+	ld a, [MapX]
+	ld d, a
+	ld a, [MapY]
+	ld e, a
+	ld bc, $d4d6
+	xor a
+.asm_711f
+	ld [hConnectedMapWidth], a
+	call Function1af1
+	jr z, .asm_7160
+	ld hl, $0003
+	add hl, bc
+	ld a, [hl]
+	cp $15
+	jr nz, .asm_7136
+	call Function7171
+	jr c, .asm_716f
+	jr .asm_7160
+
+.asm_7136
+	ld hl, $0011
+	add hl, bc
+	ld a, [hl]
+	cp e
+	jr nz, .asm_714e
+	ld hl, $0010
+	add hl, bc
+	ld a, [hl]
+	cp d
+	jr nz, .asm_714e
+	ld a, [hConnectedMapWidth]
+	cp $0
+	jr z, .asm_7160
+	jr .asm_716f
+
+.asm_714e
+	ld hl, $0013
+	add hl, bc
+	ld a, [hl]
+	cp e
+	jr nz, .asm_7160
+	ld hl, $0012
+	add hl, bc
+	ld a, [hl]
+	cp d
+	jr nz, .asm_7160
+	jr .asm_716f
+
+.asm_7160
+	ld hl, $0028
+	add hl, bc
+	ld b, h
+	ld c, l
+	ld a, [hConnectedMapWidth]
+	inc a
+	cp $d
+	jr nz, .asm_711f
+	xor a
+	ret
+
+.asm_716f
+	scf
+	ret
+; 7171
+
+
+Function7171: ; 7171
+	ld hl, $0010
+	add hl, bc
+	ld a, d
+	sub [hl]
+	jr c, .asm_718b
+	cp $2
+	jr nc, .asm_718b
+	ld hl, $0011
+	add hl, bc
+	ld a, e
+	sub [hl]
+	jr c, .asm_718b
+	cp $2
+	jr nc, .asm_718b
+	scf
+	ret
+
+.asm_718b
+	and a
+	ret
+; 718d
+
+Function718d: ; 718d
+	ld hl, PartyMon1Happiness
+	ld bc, PartyMon2 - PartyMon1
+	ld de, PartySpecies
+.asm_7196
+	ld a, [de]
+	cp EGG
+	jr nz, .asm_719f
+	inc de
+	add hl, bc
+	jr .asm_7196
+
+.asm_719f
+	ld [$d265], a
+	ld a, [hl]
+	ld [ScriptVar], a
+	call GetPokemonName
+	jp Function746e
+; 71ac
+
+Function71ac: ; 71ac
+	ld a, [PartySpecies]
+	ld [$d265], a
+	cp EGG
+	ld a, $1
+	jr z, .asm_71b9
+	xor a
+
+.asm_71b9
+	ld [ScriptVar], a
+	call GetPokemonName
+	jp Function746e
+; 71c2
+
+
+ChangeHappiness: ; 71c2
+; Perform happiness action c on CurPartyMon
+
+	ld a, [CurPartyMon]
+	inc a
+	ld e, a
+	ld d, 0
+	ld hl, PartySpecies - 1
+	add hl, de
+	ld a, [hl]
+	cp EGG
+	ret z
+
+	push bc
+	ld hl, PartyMon1Happiness
+	ld bc, PartyMon2 - PartyMon1
+	ld a, [CurPartyMon]
+	call AddNTimes
+	pop bc
+
+	ld d, h
+	ld e, l
+
+	push de
+	ld a, [de]
+	cp 100
+	ld e, 0
+	jr c, .asm_71ef
+	inc e
+	cp 200
+	jr c, .asm_71ef
+	inc e
+
+.asm_71ef
+	dec c
+	ld b, 0
+	ld hl, .Actions
+	add hl, bc
+	add hl, bc
+	add hl, bc
+	ld d, 0
+	add hl, de
+	ld a, [hl]
+	cp 100
+	pop de
+
+	ld a, [de]
+	jr nc, .negative
+	add [hl]
+	jr nc, .asm_720d
+	ld a, $ff
+	jr .asm_720d
+
+.negative
+	add [hl]
+	jr c, .asm_720d
+	xor a
+
+.asm_720d
+	ld [de], a
+	ld a, [IsInBattle]
+	and a
+	ret z
+	ld a, [CurPartyMon]
+	ld b, a
+	ld a, [$d0d8]
+	cp b
+	ret nz
+	ld a, [de]
+	ld [BattleMonHappiness], a
+	ret
+; 7221
+
+.Actions
+	db  +5,  +3,  +2
+	db  +5,  +3,  +2
+	db  +1,  +1,  +0
+	db  +3,  +2,  +1
+	db  +1,  +1,  +0
+	db  -1,  -1,  -1
+	db  -5,  -5, -10
+	db  -5,  -5, -10
+	db  +1,  +1,  +1
+	db  +3,  +3,  +1
+	db  +5,  +5,  +2
+	db  +1,  +1,  +1
+	db  +3,  +3,  +1
+	db +10, +10,  +4
+	db  -5,  -5, -10
+	db -10, -10, -15
+	db -15, -15, -20
+	db  +3,  +3,  +1
+	db +10,  +6,  +4
+; 725a
+
+
+StepHappiness: ; 725a
+; Raise the party's happiness by 1 point every other step cycle.
+
+	ld hl, $dc77
+	ld a, [hl]
+	inc a
+	and 1
+	ld [hl], a
+	ret nz
+
+	ld de, PartyCount
+	ld a, [de]
+	and a
+	ret z
+
+	ld c, a
+	ld hl, PartyMon1Happiness
+.loop
+	inc de
+	ld a, [de]
+	cp EGG
+	jr z, .next
+	inc [hl]
+	jr nz, .next
+	ld [hl], $ff
+
+.next
+	push de
+	ld de, PartyMon2 - PartyMon1
+	add hl, de
+	pop de
+	dec c
+	jr nz, .loop
+	ret
+; 7282
+
+
+DaycareStep: ; 7282
+
+	ld a, [DaycareMan]
+	bit 0, a
+	jr z, .asm_72a4
+
+	ld a, [$df2b] ; level
+	cp 100
+	jr nc, .asm_72a4
+	ld hl, $df16 ; exp
+	inc [hl]
+	jr nz, .asm_72a4
+	dec hl
+	inc [hl]
+	jr nz, .asm_72a4
+	dec hl
+	inc [hl]
+	ld a, [hl]
+	cp $50
+	jr c, .asm_72a4
+	ld a, $50
+	ld [hl], a
+
+.asm_72a4
+	ld a, [DaycareLady]
+	bit 0, a
+	jr z, .asm_72c6
+
+	ld a, [$df64] ; level
+	cp 100
+	jr nc, .asm_72c6
+	ld hl, $df4f ; exp
+	inc [hl]
+	jr nz, .asm_72c6
+	dec hl
+	inc [hl]
+	jr nz, .asm_72c6
+	dec hl
+	inc [hl]
+	ld a, [hl]
+	cp $50
+	jr c, .asm_72c6
+	ld a, $50
+	ld [hl], a
+
+.asm_72c6
+	ld hl, DaycareMan
+	bit 5, [hl] ; egg
+	ret z
+	ld hl, StepsToEgg
+	dec [hl]
+	ret nz
+
+	call RNG
+	ld [hl], a
+	ld hl, $6e1d
+	ld a, $5
+	rst FarCall
+	ld a, [$d265]
+	cp $e6
+	ld b, $50
+	jr nc, .asm_72f8
+	ld a, [$d265]
+	cp $aa
+	ld b, $28
+	jr nc, .asm_72f8
+	ld a, [$d265]
+	cp $6e
+	ld b, $1e
+	jr nc, .asm_72f8
+	ld b, $a
+
+.asm_72f8
+	call RNG
+	cp b
+	ret nc
+	ld hl, DaycareMan
+	res 5, [hl]
+	set 6, [hl]
+	ret
+; 7305
+
+
 SpecialGiveShuckle: ; 7305
 
 ; Adding to the party.
@@ -6212,7 +18060,7 @@
 	dec a
 	ld hl, PartyMon1Nickname
 	call SkipNames
-	ld de, .Shuckie
+	ld de, SpecialShuckleNick
 	call CopyName2
 
 ; OT.
@@ -6220,7 +18068,7 @@
 	dec a
 	ld hl, PartyMon1OT
 	call SkipNames
-	ld de, .Mania
+	ld de, SpecialShuckleOT
 	call CopyName2
 
 ; Bittable2 flag for this event.
@@ -6236,20 +18084,1056 @@
 	ld [ScriptVar], a
 	ret
 
-.Mania
+SpecialShuckleOT:
 	db "MANIA@"
-.Shuckie
+SpecialShuckleNick:
 	db "SHUCKIE@"
 ; 737e
 
 
-INCBIN "baserom.gbc", $737e, $747b - $737e
+SpecialReturnShuckle: ; 737e
+	callba Function50000
+	jr c, .asm_73e6
 
+	ld a, [CurPartySpecies]
+	cp SHUCKLE
+	jr nz, .DontReturn
 
-SECTION "bank2",ROMX,BANK[$2]
+	ld a, [CurPartyMon]
+	ld hl, PartyMon1ID
+	ld bc, PartyMon2 - PartyMon1
+	call AddNTimes
+
+; OT ID
+	ld a, [hli]
+	cp $2
+	jr nz, .DontReturn
+	ld a, [hl]
+	cp $6
+	jr nz, .DontReturn
+
+; OT
+	ld a, [CurPartyMon]
+	ld hl, PartyMon1OT
+	call SkipNames
+	ld de, SpecialShuckleOT
+.CheckOT
+	ld a, [de]
+	cp [hl]
+	jr nz, .DontReturn
+	cp "@"
+	jr z, .asm_73bb
+	inc de
+	inc hl
+	jr .CheckOT
+
+.asm_73bb
+	callba Functione538
+	jr c, .asm_73f1
+	ld a, [CurPartyMon]
+	ld hl, PartyMon1Happiness
+	ld bc, PartyMon2 - PartyMon1
+	call AddNTimes
+	ld a, [hl]
+	cp 150
+	ld a, $3
+	jr nc, .asm_73e2
+	xor a
+	ld [$d10b], a
+	callab Functione039
+	ld a, $2
 
-INCBIN "baserom.gbc", $8000, $854b - $8000
+.asm_73e2
+	ld [ScriptVar], a
+	ret
 
+.asm_73e6
+	ld a, $1
+	ld [ScriptVar], a
+	ret
+
+.DontReturn
+	xor a
+	ld [ScriptVar], a
+	ret
+
+.asm_73f1
+	ld a, $4
+	ld [ScriptVar], a
+	ret
+; 73f7
+
+Function73f7: ; 73f7
+	callba Function50000
+	jr c, .asm_740e
+	ld a, [CurPartySpecies]
+	ld [ScriptVar], a
+	ld [$d265], a
+	call GetPokemonName
+	jp Function746e
+
+.asm_740e
+	xor a
+	ld [ScriptVar], a
+	ret
+; 7413
+
+Function7413: ; 7413
+	ld hl, Data7459
+	jr Function7420
+
+Function7418: ; 7418
+	ld hl, Data7462
+	jr Function7420
+
+Function741d: ; 741d
+	ld hl, Data746b
+
+Function7420: ; 7420
+	push hl
+	callba Function50000
+	pop hl
+	jr c, .asm_744e
+	ld a, [CurPartySpecies]
+	cp EGG
+	jr z, .asm_7453
+	push hl
+	call GetCurNick
+	call Function746e
+	pop hl
+	call RNG
+.next
+	sub [hl]
+	jr c, .asm_7444
+	inc hl
+	inc hl
+	inc hl
+	jr .next
+
+.asm_7444
+	inc hl
+	ld a, [hli]
+	ld [ScriptVar], a
+	ld c, [hl]
+	call ChangeHappiness
+	ret
+
+.asm_744e
+	xor a
+	ld [ScriptVar], a
+	ret
+
+.asm_7453
+	ld a, $1
+	ld [ScriptVar], a
+	ret
+; 7459
+
+Data7459: ; 7459
+	db $4c, $02, $09
+	db $80, $03, $0a
+	db $ff, $04, $0b
+
+Data7462: ; 7462
+	db $9a, $02, $0c
+	db $4c, $03, $0d
+	db $ff, $04, $0e
+
+Data746b: ; 746b
+	db $ff, $02, $12
+; 746e
+
+Function746e: ; 746e
+	ld hl, StringBuffer1
+	ld de, StringBuffer3
+	ld bc, $000b
+	jp CopyBytes
+; 747a
+
+Function747a: ; 747a
+	ret
+; 747b
+
+
+SECTION "bank2",ROMX,BANK[$2]
+
+Function8000: ; 8000
+	call Function2ed3
+	xor a
+	ld [hBGMapMode], a
+	call WhiteBGMap
+	call ClearSprites
+	ld hl, TileMap
+	ld bc, $0168
+	ld a, " "
+	call ByteFill
+	ld hl, AttrMap
+	ld bc, $0168
+	ld a, $7
+	call ByteFill
+	call Function3200
+	call Function32f9
+	ret
+; 8029
+
+Function8029: ; 8029
+	ld a, $ff
+	ld [$d4cd], a
+	ld [$d4ce], a
+	ld a, $0
+	ld hl, $4071
+	call Function19a6
+	ld b, $0
+	call Function808f
+	ld a, $0
+	call GetMapObject
+	ld hl, $0008
+	add hl, bc
+	ld e, $80
+	ld a, [$d45b]
+	bit 2, a
+	jr nz, .asm_8059
+	ld a, [PlayerGender]
+	bit 0, a
+	jr z, .asm_8059
+	ld e, $90
+
+.asm_8059
+	ld [hl], e
+	ld a, $0
+	ld [hConnectionStripLength], a
+	ld bc, MapObjects
+	ld a, $0
+	ld [hConnectedMapWidth], a
+	ld de, $d4d6
+	call Function8116
+	ld a, $0
+	ld [$d4cf], a
+	ret
+; 8071
+
+INCBIN "baserom.gbc", $8071, $807e - $8071
+
+
+Function807e: ; 807e
+	push de
+	ld a, b
+	call GetMapObject
+	pop de
+	ld hl, $0003
+	add hl, bc
+	ld [hl], d
+	ld hl, $0002
+	add hl, bc
+	ld [hl], e
+	ret
+; 808f
+
+Function808f: ; 808f
+	push bc
+	ld a, [XCoord]
+	add $4
+	ld d, a
+	ld a, [YCoord]
+	add $4
+	ld e, a
+	pop bc
+	call Function807e
+	ret
+; 80a1
+
+
+Function80a1: ; 80a1
+	ld a, b
+	call Function18de
+	ret c
+	ld hl, $0010
+	add hl, bc
+	ld d, [hl]
+	ld hl, $0011
+	add hl, bc
+	ld e, [hl]
+	ld a, [hConnectionStripLength]
+	ld b, a
+	call Function807e
+	and a
+	ret
+; 80b8
+
+Function80b8: ; 80b8
+	ld a, [XCoord]
+	add $4
+	ld d, a
+	ld hl, MapX
+	sub [hl]
+	ld [hl], d
+	ld hl, $d721
+	ld [hl], d
+	ld hl, MapX2
+	ld [hl], d
+	ld d, a
+	ld a, [YCoord]
+	add $4
+	ld e, a
+	ld hl, MapY
+	sub [hl]
+	ld [hl], e
+	ld hl, $d720
+	ld [hl], e
+	ld hl, MapY2
+	ld [hl], e
+	ld e, a
+	ld a, [$d4cd]
+	cp $0
+	ret nz
+	ret
+; 80e7
+
+
+Function80e7: ; 80e7
+	call Function2707
+	and a
+	ret nz
+	ld hl, $d4fe
+	ld a, $1
+	ld de, $0028
+.asm_80f4
+	ld [hConnectedMapWidth], a
+	ld a, [hl]
+	and a
+	jr z, .asm_8104
+	add hl, de
+	ld a, [hConnectedMapWidth]
+	inc a
+	cp $d
+	jr nz, .asm_80f4
+	scf
+	ret
+
+.asm_8104
+	ld d, h
+	ld e, l
+	call Function8116
+	ld hl, VramState
+	bit 7, [hl]
+	ret z
+	ld hl, $0005
+	add hl, de
+	set 5, [hl]
+	ret
+; 8116
+
+Function8116: ; 8116
+	call Function811d
+	call Function8286
+	ret
+; 811d
+
+Function811d: ; 811d
+	ld a, [hConnectedMapWidth]
+	ld hl, $0000
+	add hl, bc
+	ld [hl], a
+	ld a, [hConnectionStripLength]
+	ld [$c2f0], a
+	ld hl, $0001
+	add hl, bc
+	ld a, [hl]
+	ld [$c2f1], a
+	call Function180e
+	ld [$c2f2], a
+	ld a, [hl]
+	call Function17ff
+	ld [$c2f3], a
+	ld hl, $0008
+	add hl, bc
+	ld a, [hl]
+	and $f0
+	jr z, .asm_814e
+	swap a
+	and $7
+	ld [$c2f3], a
+
+.asm_814e
+	ld hl, $0004
+	add hl, bc
+	ld a, [hl]
+	ld [$c2f4], a
+	ld hl, $0009
+	add hl, bc
+	ld a, [hl]
+	ld [$c2f5], a
+	ld hl, $0003
+	add hl, bc
+	ld a, [hl]
+	ld [$c2f6], a
+	ld hl, $0002
+	add hl, bc
+	ld a, [hl]
+	ld [$c2f7], a
+	ld hl, $0005
+	add hl, bc
+	ld a, [hl]
+	ld [$c2f8], a
+	ret
+; 8177
+
+Function8177: ; 8177
+	ld bc, $d72e
+	ld a, $1
+.asm_817c
+	ld [hConnectionStripLength], a
+	ld hl, $0001
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_81bb
+	ld hl, $0000
+	add hl, bc
+	ld a, [hl]
+	cp $ff
+	jr nz, .asm_81bb
+	ld a, [XCoord]
+	ld d, a
+	ld a, [YCoord]
+	ld e, a
+	ld hl, $0003
+	add hl, bc
+	ld a, [hl]
+	add $1
+	sub d
+	jr c, .asm_81bb
+	cp $c
+	jr nc, .asm_81bb
+	ld hl, $0002
+	add hl, bc
+	ld a, [hl]
+	add $1
+	sub e
+	jr c, .asm_81bb
+	cp $b
+	jr nc, .asm_81bb
+	push bc
+	call Function80e7
+	pop bc
+	jp c, Function81c9
+
+.asm_81bb
+	ld hl, $0010
+	add hl, bc
+	ld b, h
+	ld c, l
+	ld a, [hConnectionStripLength]
+	inc a
+	cp $10
+	jr nz, .asm_817c
+	ret
+; 81c9
+
+Function81c9: ; 81c9
+	ret
+; 81ca
+
+Function81ca: ; 81ca
+	nop
+	ld a, [$d151]
+	cp $ff
+	ret z
+	ld hl, Table81d6
+	rst JumpTable
+	ret
+; 81d6
+
+Table81d6: ; 81d6
+	dw Function81e5
+	dw Function81de
+	dw Function8232
+	dw Function8239
+; 81de
+
+Function81de: ; 81de
+	ld a, [YCoord]
+	sub $1
+	jr Function81ea
+
+Function81e5: ; 81e5
+	ld a, [YCoord]
+	add $9
+
+Function81ea: ; 81ea
+	ld d, a
+	ld a, [XCoord]
+	ld e, a
+	ld bc, $d72e
+	ld a, $1
+.asm_81f4
+	ld [hConnectionStripLength], a
+	ld hl, $0001
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_8224
+	ld hl, $0002
+	add hl, bc
+	ld a, d
+	cp [hl]
+	jr nz, .asm_8224
+	ld hl, $0000
+	add hl, bc
+	ld a, [hl]
+	cp $ff
+	jr nz, .asm_8224
+	ld hl, $0003
+	add hl, bc
+	ld a, [hl]
+	add $1
+	sub e
+	jr c, .asm_8224
+	cp $c
+	jr nc, .asm_8224
+	push de
+	push bc
+	call Function80e7
+	pop bc
+	pop de
+
+.asm_8224
+	ld hl, $0010
+	add hl, bc
+	ld b, h
+	ld c, l
+	ld a, [hConnectionStripLength]
+	inc a
+	cp $10
+	jr nz, .asm_81f4
+	ret
+; 8232
+
+Function8232: ; 8232
+	ld a, [XCoord]
+	sub $1
+	jr Function823e
+
+Function8239: ; 8239
+	ld a, [XCoord]
+	add $a
+
+Function823e: ; 823e
+	ld e, a
+	ld a, [YCoord]
+	ld d, a
+	ld bc, $d72e
+	ld a, $1
+.asm_8248
+	ld [hConnectionStripLength], a
+	ld hl, $0001
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_8278
+	ld hl, $0003
+	add hl, bc
+	ld a, e
+	cp [hl]
+	jr nz, .asm_8278
+	ld hl, $0000
+	add hl, bc
+	ld a, [hl]
+	cp $ff
+	jr nz, .asm_8278
+	ld hl, $0002
+	add hl, bc
+	ld a, [hl]
+	add $1
+	sub d
+	jr c, .asm_8278
+	cp $b
+	jr nc, .asm_8278
+	push de
+	push bc
+	call Function80e7
+	pop bc
+	pop de
+
+.asm_8278
+	ld hl, $0010
+	add hl, bc
+	ld b, h
+	ld c, l
+	ld a, [hConnectionStripLength]
+	inc a
+	cp $10
+	jr nz, .asm_8248
+	ret
+; 8286
+
+
+Function8286: ; 8286
+	ld a, [$c2f0]
+	ld hl, $0001
+	add hl, de
+	ld [hl], a
+	ld a, [$c2f4]
+	call Function1a61
+	ld a, [$c2f3]
+	ld hl, $0006
+	add hl, de
+	or [hl]
+	ld [hl], a
+	ld a, [$c2f7]
+	call Function82d5
+	ld a, [$c2f6]
+	call Function82f1
+	ld a, [$c2f1]
+	ld hl, $0000
+	add hl, de
+	ld [hl], a
+	ld a, [$c2f2]
+	ld hl, $0002
+	add hl, de
+	ld [hl], a
+	ld hl, $0009
+	add hl, de
+	ld [hl], $0
+	ld hl, $000d
+	add hl, de
+	ld [hl], $ff
+	ld a, [$c2f8]
+	call Function830d
+	ld a, [$c2f5]
+	ld hl, $0020
+	add hl, de
+	ld [hl], a
+	and a
+	ret
+; 82d5
+
+Function82d5: ; 82d5
+	ld hl, $0015
+	add hl, de
+	ld [hl], a
+	ld hl, $0011
+	add hl, de
+	ld [hl], a
+	ld hl, YCoord
+	sub [hl]
+	and $f
+	swap a
+	ld hl, $d14d
+	sub [hl]
+	ld hl, $0018
+	add hl, de
+	ld [hl], a
+	ret
+; 82f1
+
+Function82f1: ; 82f1
+	ld hl, $0014
+	add hl, de
+	ld [hl], a
+	ld hl, $0010
+	add hl, de
+	ld [hl], a
+	ld hl, XCoord
+	sub [hl]
+	and $f
+	swap a
+	ld hl, $d14c
+	sub [hl]
+	ld hl, $0017
+	add hl, de
+	ld [hl], a
+	ret
+; 830d
+
+Function830d: ; 830d
+	ld h, a
+	inc a
+	and $f
+	ld l, a
+	ld a, h
+	add $10
+	and $f0
+	or l
+	ld hl, $0016
+	add hl, de
+	ld [hl], a
+	ret
+; 831e
+
+Function831e: ; 831e
+	ld a, [$ffe0]
+	call Function1b1e
+	ld a, $3e
+	call Function1b3f
+	ld a, [CurFruit]
+	dec a
+	jr z, .asm_833b
+	ld a, [$ffe0]
+	ld b, a
+	ld c, $0
+	ld d, $1
+	call Function8341
+	call Function1b35
+
+.asm_833b
+	ld a, $47
+	call Function1b3f
+	ret
+; 8341
+
+Function8341: ; 8341
+	push de
+	push bc
+	ld a, c
+	call GetMapObject
+	ld hl, $0000
+	add hl, bc
+	ld a, [hl]
+	call Function1ae5
+	ld d, b
+	ld e, c
+	pop bc
+	ld a, b
+	call GetMapObject
+	ld hl, $0000
+	add hl, bc
+	ld a, [hl]
+	call Function1ae5
+	ld hl, $0010
+	add hl, bc
+	ld a, [hl]
+	ld hl, $0011
+	add hl, bc
+	ld c, [hl]
+	ld b, a
+	ld hl, $0010
+	add hl, de
+	ld a, [hl]
+	ld hl, $0011
+	add hl, de
+	ld e, [hl]
+	ld d, a
+	pop af
+	call Function1b5f
+	ret
+; 8379
+
+Function8379: ; 8379
+	call Function1b1e
+	call Function8388
+	call Function1b3f
+	ld a, $47
+	call Function1b3f
+	ret
+; 8388
+
+Function8388: ; 8388
+	ld a, [PlayerDirection]
+	srl a
+	srl a
+	and 3
+	ld e, a
+	ld d, 0
+	ld hl, .data_839a
+	add hl, de
+	ld a, [hl]
+	ret
+; 839a
+
+.data_839a
+	db 8, 9, 10, 11
+; 839e
+
+
+Function839e: ; 839e
+	push bc
+	ld a, c
+	call Function18de
+	ld d, b
+	ld e, c
+	pop bc
+	ret c
+	ld a, b
+	call Function18de
+	ret c
+	ld hl, $0010
+	add hl, bc
+	ld a, [hl]
+	ld hl, $0011
+	add hl, bc
+	ld c, [hl]
+	ld b, a
+	ld hl, $0010
+	add hl, de
+	ld a, [hl]
+	cp b
+	jr z, .asm_83c7
+	jr c, .asm_83c4
+	inc b
+	jr .asm_83d5
+
+.asm_83c4
+	dec b
+	jr .asm_83d5
+
+.asm_83c7
+	ld hl, $0011
+	add hl, de
+	ld a, [hl]
+	cp c
+	jr z, .asm_83d5
+	jr c, .asm_83d4
+	inc c
+	jr .asm_83d5
+
+.asm_83d4
+	dec c
+
+.asm_83d5
+	ld hl, $0010
+	add hl, de
+	ld [hl], b
+	ld a, b
+	ld hl, XCoord
+	sub [hl]
+	and $f
+	swap a
+	ld hl, $d14c
+	sub [hl]
+	ld hl, $0017
+	add hl, de
+	ld [hl], a
+	ld hl, $0011
+	add hl, de
+	ld [hl], c
+	ld a, c
+	ld hl, YCoord
+	sub [hl]
+	and $f
+	swap a
+	ld hl, $d14d
+	sub [hl]
+	ld hl, $0018
+	add hl, de
+	ld [hl], a
+	ld a, [hConnectedMapWidth]
+	ld hl, $0020
+	add hl, de
+	ld [hl], a
+	ld hl, $0003
+	add hl, de
+	ld [hl], $1a
+	ld hl, $0009
+	add hl, de
+	ld [hl], $0
+	ret
+; 8417
+
+Function8417: ; 8417
+	ld a, d
+	call GetMapObject
+	ld hl, $0000
+	add hl, bc
+	ld a, [hl]
+	cp $d
+	jr nc, .asm_8437
+	ld d, a
+	ld a, e
+	call GetMapObject
+	ld hl, $0000
+	add hl, bc
+	ld a, [hl]
+	cp $d
+	jr nc, .asm_8437
+	ld e, a
+	call Function8439
+	ret
+
+.asm_8437
+	scf
+	ret
+; 8439
+
+Function8439: ; 8439
+	ld a, d
+	call Function1ae5
+	ld hl, $0010
+	add hl, bc
+	ld a, [hl]
+	ld hl, $0011
+	add hl, bc
+	ld c, [hl]
+	ld b, a
+	push bc
+	ld a, e
+	call Function1ae5
+	ld hl, $0010
+	add hl, bc
+	ld d, [hl]
+	ld hl, $0011
+	add hl, bc
+	ld e, [hl]
+	pop bc
+	ld a, b
+	sub d
+	jr z, .asm_846c
+	jr nc, .asm_8460
+	cpl
+	inc a
+
+.asm_8460
+	ld h, a
+	ld a, c
+	sub e
+	jr z, .asm_847a
+	jr nc, .asm_8469
+	cpl
+	inc a
+
+.asm_8469
+	sub h
+	jr c, .asm_847a
+
+.asm_846c
+	ld a, c
+	cp e
+	jr z, .asm_8488
+	jr c, .asm_8476
+	ld d, $0
+	and a
+	ret
+
+.asm_8476
+	ld d, $1
+	and a
+	ret
+
+.asm_847a
+	ld a, b
+	cp d
+	jr z, .asm_8488
+	jr c, .asm_8484
+	ld d, $3
+	and a
+	ret
+
+.asm_8484
+	ld d, $2
+	and a
+	ret
+
+.asm_8488
+	scf
+	ret
+; 848a
+
+Function848a: ; 848a
+	call Function849d
+	jr c, .asm_8497
+	ld [$d4d1], a
+	xor a
+	ld [$d4d0], a
+	ret
+
+.asm_8497
+	ld a, $ff
+	ld [$d4d0], a
+	ret
+; 849d
+
+Function849d: ; 849d
+	ld a, [$d4cd]
+	call Function1ae5
+	ld hl, $0010
+	add hl, bc
+	ld d, [hl]
+	ld hl, $0011
+	add hl, bc
+	ld e, [hl]
+	ld a, [$d4ce]
+	call Function1ae5
+	ld hl, $0010
+	add hl, bc
+	ld a, d
+	cp [hl]
+	jr z, .asm_84c5
+	jr c, .asm_84c1
+	and a
+	ld a, $f
+	ret
+
+.asm_84c1
+	and a
+	ld a, $e
+	ret
+
+.asm_84c5
+	ld hl, $0011
+	add hl, bc
+	ld a, e
+	cp [hl]
+	jr z, .asm_84d7
+	jr c, .asm_84d3
+	and a
+	ld a, $c
+	ret
+
+.asm_84d3
+	and a
+	ld a, $d
+	ret
+
+.asm_84d7
+	scf
+	ret
+; 84d9
+
+Function84d9: ; 84d9
+	ld a, e
+	and $3f
+	cp $20
+	jr nc, .asm_84e5
+	call Function84ef
+	ld a, h
+	ret
+
+.asm_84e5
+	and $1f
+	call Function84ef
+	ld a, h
+	xor $ff
+	inc a
+	ret
+; 84ef
+
+Function84ef: ; 84ef
+	ld e, a
+	ld a, d
+	ld d, $0
+	ld hl, $450b
+	add hl, de
+	add hl, de
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld hl, $0000
+.asm_84fe
+	srl a
+	jr nc, .asm_8503
+	add hl, de
+
+.asm_8503
+	sla e
+	rl d
+	and a
+	jr nz, .asm_84fe
+	ret
+; 850b
+
+INCBIN "baserom.gbc", $850b, $854b - $850b
+
+
 GetPredefFn: ; 854b
 ; input:
 ;	[$cfb4] id
@@ -6289,34 +19173,35 @@
 PredefPointers: ; 856b
 ; $4b Predef pointers
 ; address, bank
-	dwb $6508, $01
+
+	dwb Function6508, BANK(Function6508)
 	dwb $747a, $01
 	dwb $4658, $03
-	dwb $57c1, $13
+	dwb $57c1, $13 ; Flag, BANK(Flag)
 	dwb $4699, $03
-	dwb $5a6d, $03
-	dwb $588c, $03
+	dwb FillPP, BANK(FillPP)
+	dwb Functiond88c, BANK(Functiond88c)
 	dwb $5a96, $03
 	dwb $5b3f, $03
-	dwb $5e6e, $03
-	dwb $5f8c, $03
+	dwb Functionde6e, BANK(Functionde6e)
+	dwb Functiondf8c, BANK(Functiondf8c)
 	dwb $46e0, $03
-	dwb $6167, $03
-	dwb $617b, $03
+	dwb Functione167, BANK(Functione167)
+	dwb Functione17b, BANK(Functione17b)
 	dwb $5639, $04
 	dwb $566a, $04
 	dwb $4eef, $0a
-	dwb $4b3e, $0b
-	dwb $5f48, $0f
+	dwb $4b3e, $0b ; PrintMoveDescription, BANK(PrintMoveDescription)
+	dwb Function3df48, BANK(Function3df48) ; UpdatePlayerHUD
 	dwb FillBox, BANK(FillBox)
-	dwb $5873, $0f
-	dwb $6036, $0f
-	dwb $74c1, $0f
-	dwb $7390, $0f
-	dwb $743d, $0f
-	dwb $747c, $0f
-	dwb $6487, $10
-	dwb $64e1, $10
+	dwb Function3d873, BANK(Function3d873)
+	dwb Function3e036, BANK(Function3e036) ; UpdateEnemyHUD
+	dwb Function3f4c1, BANK(Function3f4c1)
+	dwb FillInExpBar, BANK(FillInExpBar)
+	dwb Function3f43d, BANK(Function3f43d)
+	dwb Function3f47c, BANK(Function3f47c)
+	dwb Function42487, BANK(Function42487)
+	dwb FillMoves, BANK(FillMoves)
 	dwb $61e6, $10
 	dwb $4f63, $0a
 	dwb $4f24, $0a
@@ -6325,40 +19210,40 @@
 	dwb $4d2e, $14
 	dwb $4cdb, $14
 	dwb $4c50, $14
-	dwb $4bdd, $14
-	dwb StatsScreenInit, BANK(StatsScreenInit) ; stats screen
-	dwb $4b0a, $14
-	dwb $4b0e, $14
+	dwb GetGender, BANK(GetGender)
+	dwb StatsScreenInit, BANK(StatsScreenInit)
+	dwb DrawPlayerHP, BANK(DrawPlayerHP)
+	dwb DrawEnemyHP, BANK(DrawEnemyHP)
 	dwb $4b7b, $14
-	dwb $4964, $14
-	dwb $493a, $14
-	dwb $4953, $14
-	dwb $490d, $14
-	dwb $5040, $14
+	dwb GetTypeName, BANK(GetTypeName)
+	dwb PrintMoveType, BANK(PrintMoveType)
+	dwb PrintType, BANK(PrintType)
+	dwb PrintMonTypes, BANK(PrintMonTypes)
+	dwb $5040, $14 ; GetUnownLetter
 	dwb $7cdd, $32
 	dwb $40d5, $33
 	dwb $5853, $02
-	dwb $464c, $02
+	dwb $464c, $02 ; LoadSGBLayout, BANK(LoadSGBLayout)
 	dwb $5d11, $24
-	dwb $4a88, $02
+	dwb CheckContestMon, BANK(CheckContestMon)
 	dwb $420f, $23
 	dwb $4000, $23
 	dwb $4000, $23
-	dwb $40d6, $33
+	dwb Functioncc0d6, BANK(Functioncc0d6)
 	dwb $40d5, $33
 	dwb $40d5, $33
 	dwb $51d0, $3f
-	dwb $6a6c, $04
+	dwb PartyMonItemName, BANK(PartyMonItemName)
 	dwb $5077, $14
 	dwb $516c, $14
 	dwb $508b, $14
-	dwb $520d, $14
+	dwb Function5120d, BANK(Function5120d)
 	dwb DecompressPredef, BANK(DecompressPredef)
-	dwb $47d3, $0d
+	dwb Function0x347d3, BANK(Function0x347d3)
 	dwb $7908, $3e
 	dwb $7877, $3e
 	dwb $4000, $34
-	dwb $4d0a, $14
+	dwb Function50d0a, BANK(Function50d0a)
 	dwb $40a3, $34
 	dwb $408e, $34
 	dwb $4669, $34
@@ -6366,8 +19251,41 @@
 	dwb $43ff, $2d
 ; 864c
 
-INCBIN "baserom.gbc", $864c, $8a68 - $864c
 
+Function864c: ; 864c
+	call Function8d55
+	jp nz, Function8d59
+	ld a, b
+	cp $ff
+	jr nz, .asm_865a
+	ld a, [SGBPredef]
+
+.asm_865a
+	cp $fc
+	jp z, Function8ade
+	ld l, a
+	ld h, 0
+	add hl, hl
+	ld de, $466f
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, Function8a60
+	push de
+	jp [hl]
+; 866f
+
+INCBIN "baserom.gbc", $866f, $8a60 - $866f
+
+Function8a60: ; 8a60
+	push de
+	call Function9809
+	pop hl
+	jp Function9809
+; 8a68
+
+
 CheckShininess: ; 0x8a68
 ; given a pointer to Attack/Defense DV in bc, determine if monster is shiny.
 ; if shiny, set carry.
@@ -6393,9 +19311,804 @@
 .NotShiny
 	and a ; clear carry flag
 	ret
+; 8a88
 
-INCBIN "baserom.gbc", $8a88, $9a52-$8a88
 
+CheckContestMon: ; 8a88
+	ld a, [hl]
+	cp $a0
+	jr c, .asm_8aa2
+	ld a, [hli]
+	and $f
+	cp $a
+	jr c, .asm_8aa2
+	ld a, [hl]
+	cp $a0
+	jr c, .asm_8aa2
+	ld a, [hl]
+	and $f
+	cp $a
+	jr c, .asm_8aa2
+	scf
+	ret
+
+.asm_8aa2
+	and a
+	ret
+; 8aa4
+
+Function8aa4: ; 8aa4
+	push de
+	push bc
+	ld hl, $5ce6
+	ld de, $cda9
+	ld bc, $0010
+	call CopyBytes
+	pop bc
+	pop de
+	ld a, c
+	ld [$cdac], a
+	ld a, b
+	ld [$cdad], a
+	ld a, e
+	ld [$cdae], a
+	ld a, d
+	ld [$cdaf], a
+	ld hl, $cda9
+	call Function9809
+	ld hl, $5a86
+	call Function9809
+	ret
+; 8ad1
+
+
+Function8ad1: ; 8ad1
+	ld hl, $5c57
+	call Function9610
+	call Function971a
+	call Function9699
+	ret
+; 8ade
+
+Function8ade: ; 8ade
+	ld hl, $cd9b
+	ld a, [$cda9]
+	ld e, a
+	ld d, $0
+	add hl, de
+	ld e, l
+	ld d, h
+	ld a, [de]
+	and a
+	ld e, $5
+	jr z, .asm_8af7
+	dec a
+	ld e, $a
+	jr z, .asm_8af7
+	ld e, $f
+
+.asm_8af7
+	push de
+	ld hl, $cdb3
+	ld bc, $0006
+	ld a, [$cda9]
+	call AddNTimes
+	pop de
+	ld [hl], e
+	ret
+; 8b07
+
+Function8b07: ; 8b07
+	call Function8d55
+	ret z
+	ld hl, $4b2f
+	ld de, $d000
+	ld bc, $0008
+	ld a, $5
+	call Function306b
+	ld hl, $4b37
+	ld de, MartPointer
+	ld bc, $0008
+	ld a, $5
+	call Function306b
+	call Function96a4
+	ld a, $1
+	ld [hCGBPalUpdate], a
+	ret
+; 8b2f
+
+INCBIN "baserom.gbc", $8b2f, $8cb4 - $8b2f
+
+Function8cb4: ; 8cb4
+	ld l, e
+	ld h, $0
+	add hl, hl
+	add hl, hl
+	add hl, hl
+	ld de, $4d05
+	add hl, de
+	call Function8d55
+	jr nz, .asm_8cf0
+	push hl
+	ld hl, $5ce6
+	ld de, $cda9
+	ld bc, $0010
+	call CopyBytes
+	pop hl
+	inc hl
+	inc hl
+	ld a, [hli]
+	ld [$cdac], a
+	ld a, [hli]
+	ld [$cdad], a
+	ld a, [hli]
+	ld [$cdae], a
+	ld a, [hli]
+	ld [$cdaf], a
+	ld hl, $cda9
+	call Function9809
+	ld hl, $5a86
+	call Function9809
+	ret
+
+.asm_8cf0
+	ld de, $d000
+	ld bc, $0008
+	ld a, $5
+	call Function306b
+	call Function96a4
+	call Function9699
+	call Function96b3
+	ret
+; 8d05
+
+INCBIN "baserom.gbc", $8d05, $8d55 - $8d05
+
+
+Function8d55: ; 8d55
+	ld a, [hCGB]
+	and a
+	ret
+; 8d59
+
+Function8d59: ; 8d59
+	ld a, b
+	cp $ff
+	jr nz, .asm_8d61
+	ld a, [SGBPredef]
+
+.asm_8d61
+	cp $fc
+	jp z, Function96f3
+	call Function9673
+	ld l, a
+	ld h, $0
+	add hl, hl
+	ld de, $4d7a
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, Function8d79
+	push de
+	jp [hl]
+; 8d79
+
+Function8d79: ; 8d79
+	ret
+; 8d7a
+
+INCBIN "baserom.gbc", $8d7a, $8db8 - $8d7a
+
+Function8db8: ; 8db8
+	ld hl, $5c67
+	ld de, $d000
+	ld c, $4
+	call $5615
+	ld hl, $5c67
+	ld de, $d020
+	ld c, $4
+	call $5615
+	ld hl, $5c67
+	ld de, MartPointer
+	ld c, $2
+	call $5615
+	jr .asm_8e23
+
+	ld de, $d000
+	call Function9729
+	push hl
+	call Function9643
+	call Function973a
+	push hl
+	call Function9643
+	ld a, [EnemyHPPal]
+	ld l, a
+	ld h, $0
+	add hl, hl
+	add hl, hl
+	ld bc, $68be
+	add hl, bc
+	call Function9643
+	ld a, [PlayerHPPal]
+	ld l, a
+	ld h, $0
+	add hl, hl
+	add hl, hl
+	ld bc, $68be
+	add hl, bc
+	call Function9643
+	ld hl, $68ca
+	call Function9643
+	ld de, MartPointer
+	pop hl
+	call Function9643
+	pop hl
+	call Function9643
+	ld a, $1
+	ld [SGBPredef], a
+	call Function96a4
+
+.asm_8e23
+	call Function8e85
+	ld hl, AttrMap
+	ld bc, $0168
+	ld a, $2
+	call ByteFill
+	ld hl, $ce29
+	ld bc, $080a
+	ld a, $0
+	call Function9663
+	ld hl, $cde3
+	ld bc, $070a
+	ld a, $1
+	call Function9663
+	ld hl, AttrMap
+	ld bc, $040a
+	ld a, $2
+	call Function9663
+	ld hl, $ce6f
+	ld bc, $050a
+	ld a, $3
+	call Function9663
+	ld hl, $cebf
+	ld bc, $0109
+	ld a, $4
+	call Function9663
+	ld hl, $cec9
+	ld bc, $0078
+	ld a, $7
+	call ByteFill
+	ld hl, $579c
+	ld de, $d050
+	ld bc, $0030
+	ld a, $5
+	call Function306b
+	call Function96b3
+	ret
+; 8e85
+
+
+Function8e85: ; 8e85
+	ld a, $40
+	ld hl, $4dc0
+	rst FarCall
+	ld hl, $7311
+	jr nc, .asm_8e93
+	ld hl, $7309
+
+.asm_8e93
+	ld de, $d038
+	ld bc, $0008
+	ld a, $5
+	call Function306b
+	ret
+; 8e9f
+
+Function8e9f: ; 8e9f
+	callba Function100dc0
+	ld hl, $7311
+	jr nc, .asm_8ead
+	ld hl, $7309
+
+.asm_8ead
+	ld de, $d000
+	ld bc, $0008
+	ld a, $5
+	call Function306b
+	ret
+; 8eb9
+
+Function8eb9: ; 8eb9
+	ld a, [PlayerGender]
+	bit 0, a
+	jr z, .asm_8ec5
+	ld hl, $7759
+	jr .asm_8ec8
+
+.asm_8ec5
+	ld hl, $7729
+
+.asm_8ec8
+	ld de, $d000
+	ld bc, $0030
+	ld a, $5
+	call Function306b
+	call Function96a4
+	ld a, $1
+	ld [hCGBPalUpdate], a
+	ret
+; 8edb
+
+Function8edb: ; 8edb
+	ld de, $d000
+	ld a, [$cda1]
+	ld l, a
+	ld h, $0
+	add hl, hl
+	add hl, hl
+	ld bc, $68be
+	add hl, bc
+	call Function9643
+	ld a, [CurPartySpecies]
+	ld bc, TempMonDVs
+	call Function974b
+	call Function9643
+	ld hl, $68ca
+	call Function9643
+	ld hl, $4f52
+	ld de, $d018
+	ld bc, $0018
+	ld a, $5
+	call Function306b
+	call Function9699
+	ld hl, AttrMap
+	ld bc, $0814
+	ld a, $1
+	call Function9663
+	ld hl, $cf23
+	ld bc, $000a
+	ld a, $2
+	call ByteFill
+	ld hl, $ce4a
+	ld bc, $0202
+	ld a, $3
+	call Function9663
+	ld hl, $ce4c
+	ld bc, $0202
+	ld a, $4
+	call Function9663
+	ld hl, $ce4e
+	ld bc, $0202
+	ld a, $5
+	call Function9663
+	call Function96b3
+	call Function96a4
+	ld a, $1
+	ld [hCGBPalUpdate], a
+	ret
+; 8f52
+
+INCBIN "baserom.gbc", $8f52, $9610 - $8f52
+
+
+Function9610: ; 9610
+	ld de, $d000
+	ld c, $4
+.asm_9615
+	push bc
+	ld a, [hli]
+	push hl
+	call Function9625
+	call Function9630
+	pop hl
+	inc hl
+	pop bc
+	dec c
+	jr nz, .asm_9615
+	ret
+; 9625
+
+Function9625: ; 9625
+	ld l, a
+	ld h, $0
+	add hl, hl
+	add hl, hl
+	add hl, hl
+	ld bc, $5df6
+	add hl, bc
+	ret
+; 9630
+
+Function9630: ; 9630
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld c, $8
+.asm_9639
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec c
+	jr nz, .asm_9639
+	pop af
+	ld [rSVBK], a
+	ret
+; 9643
+
+Function9643: ; 9643
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld a, $ff
+	ld [de], a
+	inc de
+	ld a, $7f
+	ld [de], a
+	inc de
+	ld c, $4
+.asm_9654
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec c
+	jr nz, .asm_9654
+	xor a
+	ld [de], a
+	inc de
+	ld [de], a
+	inc de
+	pop af
+	ld [rSVBK], a
+	ret
+; 9663
+
+Function9663: ; 9663
+.asm_9663
+	push bc
+	push hl
+.asm_9665
+	ld [hli], a
+	dec c
+	jr nz, .asm_9665
+	pop hl
+	ld bc, $0014
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .asm_9663
+	ret
+; 9673
+
+Function9673: ; 9673
+	push af
+	push bc
+	push de
+	push hl
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, $d000
+	ld c, $8
+.asm_9683
+	ld a, $ff
+	ld [hli], a
+	ld [hli], a
+	ld [hli], a
+	ld [hli], a
+	xor a
+	ld [hli], a
+	ld [hli], a
+	ld [hli], a
+	ld [hli], a
+	dec c
+	jr nz, .asm_9683
+	pop af
+	ld [rSVBK], a
+	pop hl
+	pop de
+	pop bc
+	pop af
+	ret
+; 9699
+
+
+Function9699: ; 9699
+	ld hl, AttrMap
+	ld bc, $0168
+	xor a
+	call ByteFill
+	ret
+; 96a4
+
+Function96a4: ; 96a4
+	ld hl, $d000
+	ld de, $d080
+	ld bc, $0080
+	ld a, $5
+	call Function306b
+	ret
+; 96b3
+
+Function96b3: ; 96b3
+	ld a, [rLCDC]
+	bit 7, a
+	jr z, .asm_96d0
+	ld a, [hBGMapMode]
+	push af
+	ld a, $2
+	ld [hBGMapMode], a
+	call DelayFrame
+	call DelayFrame
+	call DelayFrame
+	call DelayFrame
+	pop af
+	ld [hBGMapMode], a
+	ret
+
+.asm_96d0
+	ld hl, AttrMap
+	ld de, VBGMap0
+	ld b, $12
+	ld a, $1
+	ld [rVBK], a
+.asm_96dc
+	ld c, $14
+.asm_96de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec c
+	jr nz, .asm_96de
+	ld a, $c
+	add e
+	jr nc, .asm_96ea
+	inc d
+
+.asm_96ea
+	ld e, a
+	dec b
+	jr nz, .asm_96dc
+	ld a, $0
+	ld [rVBK], a
+	ret
+; 96f3
+
+Function96f3: ; 96f3
+	ld hl, $cd9b
+	ld a, [$cda9]
+	ld e, a
+	ld d, $0
+	add hl, de
+	ld e, l
+	ld d, h
+	ld a, [de]
+	inc a
+	ld e, a
+	ld hl, $ce0c
+	ld bc, $0028
+	ld a, [$cda9]
+.asm_970b
+	and a
+	jr z, .asm_9712
+	add hl, bc
+	dec a
+	jr .asm_970b
+
+.asm_9712
+	ld bc, $0208
+	ld a, e
+	call Function9663
+	ret
+; 971a
+
+
+Function971a: ; 971a
+	ld hl, $7681
+	ld de, MartPointer
+	ld bc, $0010
+	ld a, $5
+	call Function306b
+	ret
+; 9729
+
+Function9729: ; 9729
+	push de
+	callba Function3da85
+	ld c, l
+	ld b, h
+	ld a, [TempBattleMonSpecies]
+	call Function974b
+	pop de
+	ret
+; 973a
+
+Function973a: ; 973a
+	push de
+	callba Function3da97
+	ld c, l
+	ld b, h
+	ld a, [TempEnemyMonSpecies]
+	call Function9764
+	pop de
+	ret
+; 974b
+
+Function974b: ; 974b
+	and a
+	jp nz, Function97f9
+	ld a, [$d45b]
+	bit 2, a
+	jr nz, .asm_9760
+	ld a, [PlayerGender]
+	and a
+	jr z, .asm_9760
+	ld hl, FalknerPalette
+	ret
+
+.asm_9760
+	ld hl, $70ce
+	ret
+; 9764
+
+Function9764: ; 9764
+	and a
+	jp nz, Function97f9
+	ld a, [TrainerClass]
+	ld l, a
+	ld h, $0
+	add hl, hl
+	add hl, hl
+	ld bc, $70ce
+	add hl, bc
+	ret
+; 9775
+
+INCBIN "baserom.gbc", $9775, $97ee - $9775
+
+Function97ee: ; 97ee
+	ld l, a
+	ld h, $0
+	add hl, hl
+	add hl, hl
+	add hl, hl
+	ld bc, $68ce
+	add hl, bc
+	ret
+; 97f9
+
+Function97f9: ; 97f9
+	push bc
+	call Function97ee
+	pop bc
+	push hl
+	call CheckShininess
+	pop hl
+	ret nc
+	inc hl
+	inc hl
+	inc hl
+	inc hl
+	ret
+; 9809
+
+Function9809: ; 9809
+	ld a, [$cfbe]
+	push af
+	set 7, a
+	ld [$cfbe], a
+	call Function981a
+	pop af
+	ld [$cfbe], a
+	ret
+; 981a
+
+Function981a: ; 981a
+	ld a, [hl]
+	and $7
+	ret z
+	ld b, a
+.asm_981f
+	push bc
+	xor a
+	ld [rJOYP], a
+	ld a, $30
+	ld [rJOYP], a
+	ld b, $10
+.asm_9829
+	ld e, $8
+	ld a, [hli]
+	ld d, a
+.asm_982d
+	bit 0, d
+	ld a, $10
+	jr nz, .asm_9835
+	ld a, $20
+
+.asm_9835
+	ld [rJOYP], a
+	ld a, $30
+	ld [rJOYP], a
+	rr d
+	dec e
+	jr nz, .asm_982d
+	dec b
+	jr nz, .asm_9829
+	ld a, $20
+	ld [rJOYP], a
+	ld a, $30
+	ld [rJOYP], a
+	call Function9a7a
+	pop bc
+	dec b
+	jr nz, .asm_981f
+	ret
+; 9853
+
+INCBIN "baserom.gbc", $9853, $9890 - $9853
+
+
+Function9890: ; 9890
+	call Function8d55
+	ret z
+	ld a, $1
+	ld [rVBK], a
+	ld hl, VTiles0
+	ld bc, $2000
+	xor a
+	call ByteFill
+	ld a, $0
+	ld [rVBK], a
+	ld a, $80
+	ld [rBGPI], a
+	ld c, $20
+.asm_98ac
+	ld a, $ff
+	ld [rBGPD], a
+	ld a, $7f
+	ld [rBGPD], a
+	dec c
+	jr nz, .asm_98ac
+	ld a, $80
+	ld [rOBPI], a
+	ld c, $20
+.asm_98bd
+	ld a, $ff
+	ld [rOBPD], a
+	ld a, $7f
+	ld [rOBPD], a
+	dec c
+	jr nz, .asm_98bd
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, $d000
+	call Function98df
+	ld hl, $d080
+	call Function98df
+	pop af
+	ld [rSVBK], a
+	ret
+; 98df
+
+Function98df: ; 98df
+	ld c, $40
+.asm_98e1
+	ld a, $ff
+	ld [hli], a
+	ld a, $7f
+	ld [hli], a
+	dec c
+	jr nz, .asm_98e1
+	ret
+; 98eb
+
+INCBIN "baserom.gbc", $98eb, $9a52 - $98eb
+
 CopyData: ; 0x9a52
 ; copy bc bytes of data from hl to de
 	ld a, [hli]
@@ -6422,7 +20135,7 @@
 
 DrawDefaultTiles: ; 0x9a64
 ; Draw 240 tiles (2/3 of the screen) from tiles in VRAM
-	ld hl, $9800 ; BG Map 0
+	ld hl, VBGMap0 ; BG Map 0
 	ld de, 32 - 20
 	ld a, $80 ; starting tile
 	ld c, 12 + 1
@@ -6440,8 +20153,21 @@
 	ret
 ; 0x9a7a
 
-INCBIN "baserom.gbc", $9a7a, $a51e - $9a7a
+Function9a7a: ; 9a7a
+	ld de, $1b58
+.asm_9a7d
+	nop
+	nop
+	nop
+	dec de
+	ld a, d
+	or e
+	jr nz, .asm_9a7d
+	ret
+; 9a86
 
+INCBIN "baserom.gbc", $9a86, $a51e - $9a86
+
 SGBBorder:
 INCBIN "gfx/misc/sgb_border.2bpp"
 
@@ -6478,10 +20204,40 @@
 
 SECTION "bank3",ROMX,BANK[$3]
 
-INCBIN "baserom.gbc", $c000, $29
+Functionc000: ; c000
+	ld a, [TimeOfDay]
+	ld hl, $4012
+	ld de, $0002
+	call IsInArray
+	inc hl
+	ld c, [hl]
+	ret c
+	xor a
+	ld c, a
+	ret
+; c012
 
-SpecialsPointers: ; 0xc029
-	dbw $25, $7c28
+INCBIN "baserom.gbc", $c012, $c01b - $c012
+
+
+Functionc01b: ; c01b
+	ld hl, SpecialsPointers
+	add hl, de
+	add hl, de
+	add hl, de
+	ld b, [hl]
+	inc hl
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, b
+	rst FarCall
+	ret
+; c029
+
+
+SpecialsPointers: ; c029
+	dbw BANK(Function97c28), Function97c28
 	dbw $0a, $5ce8
 	dbw $0a, $5d11
 	dbw $0a, $5d92
@@ -6527,22 +20283,22 @@
 	dbw $03, $4380
 	dbw $03, $438d
 	dbw $03, $43db
-	dbw $23, $4084
+	dbw BANK(Function8c084), Function8c084
 	dbw $23, $4092
 	dbw $23, $40b6
-	dbw $23, $4079
+	dbw BANK(Function8c079), Function8c079
 	dbw $23, $40ab
-	dbw $00, $0d91
+	dbw BANK(Functiond91), Functiond91
 	dbw BANK(WhiteBGMap), WhiteBGMap
-	dbw $00, $0485
+	dbw BANK(Function485), Function485
 	dbw BANK(ClearTileMap), ClearTileMap
-	dbw $00, $1ad2
-	dbw $00, $0e4a
+	dbw BANK(Function1ad2), Function1ad2
+	dbw BANK(Functione4a), Functione4a
 	dbw $03, $4230
 	dbw $03, $4252
 	dbw BANK(WaitSFX),WaitSFX
-	dbw $00, $3cdf
-	dbw $00, $3d47
+	dbw BANK(Function3cdf), Function3cdf
+	dbw BANK(Function3d47), Function3d47
 	dbw $04, $6324
 	dbw $02, $4379
 	dbw $03, $425a
@@ -6557,12 +20313,12 @@
 	dbw $09, $6feb
 	dbw $09, $7043
 	dbw BANK(SpecialGiveShuckle), SpecialGiveShuckle
-	dbw $01, $737e
+	dbw BANK(SpecialReturnShuckle), SpecialReturnShuckle
 	dbw $01, $73f7
 	dbw BANK(SpecialCheckPokerus),SpecialCheckPokerus
-	dbw $09, $4b25
+	dbw BANK(Function24b25), Function24b25
 	dbw $09, $4b4e
-	dbw $09, $4ae8
+	dbw BANK(Function24ae8), Function24ae8
 	dbw $13, $587a
 	dbw $03, $4434
 	dbw $03, $4422
@@ -6575,7 +20331,7 @@
 	dbw $0a, $64ab
 	dbw $0a, $651f
 	dbw $0a, $6567
-	dbw $05, $4209
+	dbw BANK(Function14209), Function14209
 	dbw $3e, $7841
 	dbw BANK(SpecialSnorlaxAwake),SpecialSnorlaxAwake
 	dbw $01, $7413
@@ -6582,7 +20338,7 @@
 	dbw $01, $7418
 	dbw $01, $741d
 	dbw $03, $4472
-	dbw $09, $65ee
+	dbw BANK(ProfOaksPCBoot), ProfOaksPCBoot
 	dbw BANK(SpecialGameboyCheck),SpecialGameboyCheck
 	dbw BANK(SpecialTrainerHouse),SpecialTrainerHouse
 	dbw $05, $6dc7
@@ -6607,12 +20363,12 @@
 	dbw $46, $7a38
 	dbw $5c, $4bd3
 	dbw $45, $7656
-	dbw $00, $0150
+	dbw BANK(Reset), Reset
 	dbw $40, $51f1
 	dbw $40, $5220
 	dbw $40, $5225
 	dbw $40, $5231
-	dbw $12, $525b
+	dbw BANK(Function4925b), Function4925b
 	dbw $22, $6def
 	dbw $47, $41ab
 	dbw $5c, $4687
@@ -6639,7 +20395,7 @@
 	dbw $40, $77eb
 	dbw $40, $783c
 	dbw $41, $60a2
-	dbw $05, $4168
+	dbw BANK(Function14168), Function14168
 	dbw $40, $77c2
 	dbw $41, $630f
 	dbw $40, $7780
@@ -6650,19 +20406,20 @@
 	dbw $24, $4a54
 	dbw $24, $4a88
 	dbw $03, $4224
+; c224
 
 INCBIN "baserom.gbc", $c224, $c29d - $c224
 
 SpecialNameRival: ; 0xc29d
 	ld b, $2 ; rival
-	ld de, WRivalName
+	ld de, RivalName
 	ld a, BANK(Function116b7)
 	ld hl, Function116b7
 	rst $8
 	; default to "SILVER"
-	ld hl, WRivalName
+	ld hl, RivalName
 	ld de, DefaultRivalName
-	call InitString
+	call InitName
 	ret
 ; 0xc2b2
 
@@ -6682,8 +20439,28 @@
 	ret
 ; c3ef
 
-INCBIN "baserom.gbc", $c3ef, $c419 - $c3ef
+INCBIN "baserom.gbc", $c3ef, $c403 - $c3ef
 
+
+Functionc403: ; c403
+	ld a, c
+	and a
+	jr nz, .asm_c410
+	ld a, d
+	ld [$dfcc], a
+	ld a, e
+	ld [$dfcd], a
+	ret
+
+.asm_c410
+	ld a, d
+	ld [$dc5a], a
+	ld a, e
+	ld [$dc5b], a
+	ret
+; c419
+
+
 SpecialCheckPokerus: ; c419
 ; Check if a monster in your party has Pokerus
 	callba CheckPokerus
@@ -6700,7 +20477,7 @@
 ; ScriptVar is 1 if the conditions are met, otherwise 0.
 
 ; check background music
-	ld a, [$c2c0]
+	ld a, [CurMusic]
 	cp $40 ; Poké Flute Channel
 	jr nz, .nope
 
@@ -6776,8 +20553,190 @@
 	ld [ScriptVar], a
 	jp CloseSRAM
 
-INCBIN "baserom.gbc", $c4c7, $c5d2 - $c4c7
+_PrintNum: ; c4c7
+	push bc
+	bit 5, b
+	jr z, .asm_c4d9
+	bit 7, b
+	jr nz, .asm_c4d4
+	bit 6, b
+	jr z, .asm_c4d9
 
+.asm_c4d4
+	ld a, $f0
+	ld [hli], a
+	res 5, b
+
+.asm_c4d9
+	xor a
+	ld [hProduct], a
+	ld [hMultiplicand], a
+	ld [$ffb5], a
+	ld a, b
+	and $f
+	cp $1
+	jr z, .asm_c501
+	cp $2
+	jr z, .asm_c4f8
+	ld a, [de]
+	ld [hMultiplicand], a
+	inc de
+	ld a, [de]
+	ld [$ffb5], a
+	inc de
+	ld a, [de]
+	ld [$ffb6], a
+	jr .asm_c504
+
+.asm_c4f8
+	ld a, [de]
+	ld [$ffb5], a
+	inc de
+	ld a, [de]
+	ld [$ffb6], a
+	jr .asm_c504
+
+.asm_c501
+	ld a, [de]
+	ld [$ffb6], a
+
+.asm_c504
+	push de
+	ld d, b
+	ld a, c
+	swap a
+	and $f
+	ld e, a
+	ld a, c
+	and $f
+	ld b, a
+	ld c, $0
+	cp $2
+	jr z, .asm_c57c
+	cp $3
+	jr z, .asm_c56c
+	cp $4
+	jr z, .asm_c55b
+	cp $5
+	jr z, .asm_c54a
+	cp $6
+	jr z, .asm_c538
+	ld a, $f
+	ld [hMultiplier], a
+	ld a, $42
+	ld [hMathBuffer], a
+	ld a, $40
+	ld [$ffb9], a
+	call $45cb
+	call PrintNumber_AdvancePointer
+
+.asm_c538
+	ld a, $1
+	ld [hMultiplier], a
+	ld a, $86
+	ld [hMathBuffer], a
+	ld a, $a0
+	ld [$ffb9], a
+	call $45cb
+	call PrintNumber_AdvancePointer
+
+.asm_c54a
+	xor a
+	ld [hMultiplier], a
+	ld a, $27
+	ld [hMathBuffer], a
+	ld a, $10
+	ld [$ffb9], a
+	call $45cb
+	call PrintNumber_AdvancePointer
+
+.asm_c55b
+	xor a
+	ld [hMultiplier], a
+	ld a, $3
+	ld [hMathBuffer], a
+	ld a, $e8
+	ld [$ffb9], a
+	call $45cb
+	call PrintNumber_AdvancePointer
+
+.asm_c56c
+	xor a
+	ld [hMultiplier], a
+	xor a
+	ld [hMathBuffer], a
+	ld a, $64
+	ld [$ffb9], a
+	call $45cb
+	call PrintNumber_AdvancePointer
+
+.asm_c57c
+	dec e
+	jr nz, .asm_c583
+	ld a, $f6
+	ld [hProduct], a
+
+.asm_c583
+	ld c, $0
+	ld a, [$ffb6]
+.asm_c587
+	cp $a
+	jr c, .asm_c590
+	sub $a
+	inc c
+	jr .asm_c587
+
+.asm_c590
+	ld b, a
+	ld a, [hProduct]
+	or c
+	jr nz, .asm_c59b
+	call PrintNumber_PrintLeadingZero
+	jr .asm_c5ad
+
+.asm_c59b
+	call Functionc5ba
+	push af
+	ld a, $f6
+	add c
+	ld [hl], a
+	pop af
+	ld [hProduct], a
+	inc e
+	dec e
+	jr nz, .asm_c5ad
+	inc hl
+	ld [hl], $f2
+
+.asm_c5ad
+	call PrintNumber_AdvancePointer
+	call Functionc5ba
+	ld a, $f6
+	add b
+	ld [hli], a
+	pop de
+	pop bc
+	ret
+; c5ba
+
+Functionc5ba: ; c5ba
+	push af
+	ld a, [hProduct]
+	and a
+	jr nz, .asm_c5c9
+	bit 5, d
+	jr z, .asm_c5c9
+	ld a, $f0
+	ld [hli], a
+	res 5, d
+
+.asm_c5c9
+	pop af
+	ret
+; c5cb
+
+INCBIN "baserom.gbc", $c5cb, $c5d2 - $c5cb
+
 PrintNumber_PrintDigit: ; c5d2
 INCBIN "baserom.gbc", $c5d2, $c644 - $c5d2
 
@@ -6803,13 +20762,38 @@
 	ret
 ; 0xc658
 
-INCBIN "baserom.gbc", $c658, $c706 - $c658
+INCBIN "baserom.gbc", $c658, $c6ea - $c658
 
+
+Functionc6ea: ; c6ea
+	xor a
+	ld hl, MagikarpLength
+	ld bc, $0007
+	call ByteFill
+	ret
+; c6f5
+
+Functionc6f5: ; c6f5
+	ld a, [MagikarpLength]
+	rst JumpTable
+	ld [MagikarpLength], a
+	bit 7, a
+	jr nz, .asm_c702
+	and a
+	ret
+
+.asm_c702
+	and $7f
+	scf
+	ret
+; c706
+
+
 GetPartyNick: ; c706
 ; write CurPartyMon nickname to StringBuffer1-3
 	ld hl, PartyMon1Nickname
 	ld a, $02
-	ld [$cf5f], a
+	ld [MonType], a
 	ld a, [CurPartyMon]
 	call GetNick
 	call CopyName1
@@ -6841,7 +20825,7 @@
 	call CheckFlag2
 	ret nc
 	ld hl, BadgeRequiredText
-	call $1d67 ; push text to queue
+	call Function1d67 ; push text to queue
 	scf
 	ret
 ; c73d
@@ -6897,9 +20881,188 @@
 	ret
 ; c779
 
-INCBIN "baserom.gbc", $c779, $c986 - $c779
+Functionc779: ; c779
+	ld hl, $4780
+	call Function1d67
+	ret
+; c780
 
+INCBIN "baserom.gbc", $c780, $c785 - $c780
 
+Functionc785: ; c785
+	call Functionc6ea
+.asm_c788
+	ld hl, $4796
+	call Functionc6f5
+	jr nc, .asm_c788
+	and $7f
+	ld [$d0ec], a
+	ret
+; c796
+
+INCBIN "baserom.gbc", $c796, $c7c4 - $c796
+
+UnknownText_0xc7c4: ; 0xc7c4
+	text_jump UnknownText_0x1c05dd, BANK(UnknownText_0x1c05dd)
+	db $50
+; 0xc7c9
+
+INCBIN "baserom.gbc", $c7c9, $c7ce - $c7c9
+
+Functionc7ce: ; c7ce
+	call GetFacingTileCoord
+	ld c, a
+	push de
+	ld a, $5
+	ld hl, $49f5
+	rst FarCall
+	pop de
+	jr nc, .asm_c7fc
+	call Function2a66
+	ld c, [hl]
+	push hl
+	ld hl, $4862
+	call $4840
+	pop hl
+	jr nc, .asm_c7fc
+	ld a, l
+	ld [$d1ec], a
+	ld a, h
+	ld [$d1ed], a
+	ld a, b
+	ld [$d1ee], a
+	ld a, c
+	ld [$d1ef], a
+	xor a
+	ret
+
+.asm_c7fc
+	scf
+	ret
+; c7fe
+
+INCBIN "baserom.gbc", $c7fe, $c802 - $c7fe
+
+UnknownScript_0xc802: ; 0xc802
+	3callasm BANK(GetPartyNick), GetPartyNick
+	2writetext UnknownText_0xc7c4
+	reloadmappart
+	3callasm BANK(Functionc810), Functionc810
+	loadmovesprites
+	end
+; 0xc810
+
+Functionc810: ; c810
+	ld hl, $d1ec
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [$d1ee]
+	ld [hl], a
+	xor a
+	ld [hBGMapMode], a
+	call Function2173
+	call Function1ad2
+	call DelayFrame
+	ld a, [$d1ef]
+	ld e, a
+	callba Function8c940
+	call Function2879
+	call Function2914
+	call Function1ad2
+	call DelayFrame
+	call Functione51
+	ret
+; c840
+
+Functionc840: ; c840
+	push bc
+	ld a, [$d199]
+	ld de, 3
+	call IsInArray
+	pop bc
+	jr nc, .asm_c860
+	inc hl
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, 3
+	ld a, c
+	call IsInArray
+	jr nc, .asm_c860
+	inc hl
+	ld b, [hl]
+	inc hl
+	ld c, [hl]
+	scf
+	ret
+
+.asm_c860
+	xor a
+	ret
+; c862
+
+INCBIN "baserom.gbc", $c862, $c8ac - $c862
+
+Functionc8ac: ; c8ac
+	call Functionc8b5
+	and $7f
+	ld [$d0ec], a
+	ret
+; c8b5
+
+Functionc8b5: ; c8b5
+	ld de, $001b
+	ld a, $3
+	ld hl, $4731
+	rst FarCall
+	jr c, .asm_c8dd
+	push hl
+	ld a, $22
+	ld hl, $6e30
+	rst FarCall
+	pop hl
+	jr c, .asm_c8d1
+	ld a, [$d847]
+	cp $ff
+	jr nz, .asm_c8d7
+
+.asm_c8d1
+	call Functionc8e0
+	ld a, $81
+	ret
+
+.asm_c8d7
+	call Functionc779
+	ld a, $80
+	ret
+
+.asm_c8dd
+	ld a, $80
+	ret
+; c8e0
+
+Functionc8e0: ; c8e0
+	ld hl, $48e6
+	jp Function31cd
+; c8e6
+
+INCBIN "baserom.gbc", $c8e6, $c909 - $c8e6
+
+Functionc909: ; c909
+	call Functionc6ea
+.asm_c90c
+	ld hl, $491a
+	call Functionc6f5
+	jr nc, .asm_c90c
+	and $7f
+	ld [$d0ec], a
+	ret
+; c91a
+
+INCBIN "baserom.gbc", $c91a, $c986 - $c91a
+
+
 UsedSurfScript: ; c986
 	2writetext UsedSurfText ; "used SURF!"
 	closetext
@@ -6991,7 +21154,7 @@
 ; c9e7
 
 
-CheckSurfOW: ; c9e7
+TrySurfOW: ; c9e7
 ; Checking a tile in the overworld.
 ; Return carry if surfing is allowed.
 
@@ -7004,7 +21167,7 @@
 
 ; Must be facing water.
 	ld a, [EngineBuffer1]
-	call GetTileType
+	call GetTileCollision
 	cp 1 ; surfable
 	jr nz, .quit
 
@@ -7056,9 +21219,1150 @@
 ; ca3b
 
 
-INCBIN "baserom.gbc", $ca3b, $d407 - $ca3b
+Functionca3b: ; ca3b
+	call Functionc6ea
+.asm_ca3e
+	ld hl, .data_ca4c
+	call Functionc6f5
+	jr nc, .asm_ca3e
+	and $7f
+	ld [$d0ec], a
+	ret
+; ca4c
 
+.data_ca4c
+ 	dw Functionca52
+ 	dw Functionca94
+ 	dw Functionca9d
+; ca52
 
+
+Functionca52: ; ca52
+; Fly
+	ld de, $0020 ; storm badge
+	call CheckBadge
+	jr c, .asm_ca85
+	call GetMapPermission
+	call CheckOutdoorMap
+	jr z, .asm_ca64
+	jr .asm_ca88
+
+.asm_ca64
+	xor a
+	ld [$ffde], a
+	call Function1d6e
+	call ClearSprites
+	callba Function91af3
+	ld a, e
+	cp $ff
+	jr z, .asm_ca8b
+	cp $1c
+	jr nc, .asm_ca8b
+	ld [$d001], a
+	call Function1c17
+	ld a, $1
+	ret
+
+.asm_ca85
+	ld a, $82
+	ret
+
+.asm_ca88
+	ld a, $2
+	ret
+
+.asm_ca8b
+	call Function1c17
+	call WaitBGMap
+	ld a, $80
+	ret
+; ca94
+
+Functionca94: ; ca94
+	ld hl, Datacaa3
+	call Function31cd
+	ld a, $81
+	ret
+; ca9d
+
+Functionca9d: ; ca9d
+	call Functionc779
+	ld a, $82
+	ret
+; caa3
+
+Datacaa3: ; caa3
+INCBIN "baserom.gbc", $caa3, $cade - $caa3
+
+Functioncade: ; cade
+	call Functioncae7
+	and $7f
+	ld [$d0ec], a
+	ret
+; cae7
+
+Functioncae7: ; cae7
+	ld de, $0022
+	ld a, $3
+	ld hl, $4731
+	rst FarCall
+	ld a, $80
+	ret c
+	call Functioncb07
+	jr c, .asm_cb01
+	ld hl, $4b1c
+	call Function31cd
+	ld a, $81
+	ret
+
+.asm_cb01
+	call Functionc779
+	ld a, $80
+	ret
+; cb07
+
+Functioncb07: ; cb07
+	ld a, [PlayerDirection]
+	and $c
+	cp $4
+	jr nz, .asm_cb1a
+	ld a, [TileUp]
+	call CheckWaterfallTile
+	jr nz, .asm_cb1a
+	xor a
+	ret
+
+.asm_cb1a
+	scf
+	ret
+; cb1c
+
+INCBIN "baserom.gbc", $cb1c, $cb20 - $cb1c
+
+UnknownScript_0xcb20: ; 0xcb20
+	3callasm BANK(GetPartyNick), GetPartyNick
+	2writetext UnknownText_0xcb51
+	closetext
+	loadmovesprites
+	playsound SFX_BUBBLEBEAM
+.loop
+	applymovement $0, WaterfallStep
+	3callasm BANK(Functioncb38), Functioncb38
+	iffalse .loop
+	end
+; 0xcb38
+
+Functioncb38: ; cb38
+	xor a
+	ld [ScriptVar], a
+	ld a, [StandingTile]
+	call CheckWaterfallTile
+	ret z
+	ld a, $41
+	ld hl, $60c1
+	rst FarCall
+	ld a, $1
+	ld [ScriptVar], a
+	ret
+; cb4f
+
+WaterfallStep: ; cb4f
+	turn_waterfall_up
+	step_end
+; cb51
+
+UnknownText_0xcb51: ; 0xcb51
+	text_jump UnknownText_0x1c068e, BANK(UnknownText_0x1c068e)
+	db "@"
+; 0xcb56
+
+TryWaterfallOW: ; cb56
+	ld d, WATERFALL
+	call CheckPartyMove
+	jr c, .asm_cb74
+	ld de, $0022
+	call CheckFlag2
+	jr c, .asm_cb74
+	call Functioncb07
+	jr c, .asm_cb74
+	ld a, BANK(UnknownScript_0xcb86)
+	ld hl, UnknownScript_0xcb86
+	call PushScriptPointer
+	scf
+	ret
+
+.asm_cb74
+	ld a, BANK(UnknownScript_0xcb7e)
+	ld hl, UnknownScript_0xcb7e
+	call PushScriptPointer
+	scf
+	ret
+; cb7e
+
+UnknownScript_0xcb7e: ; 0xcb7e
+	jumptext UnknownText_0xcb81
+; 0xcb81
+
+UnknownText_0xcb81: ; 0xcb81
+	text_jump UnknownText_0x1c06a3, BANK(UnknownText_0x1c06a3)
+	db "@"
+; 0xcb86
+
+UnknownScript_0xcb86: ; 0xcb86
+	loadfont
+	2writetext UnknownText_0xcb90
+	yesorno
+	iftrue UnknownScript_0xcb20
+	loadmovesprites
+	end
+; 0xcb90
+
+UnknownText_0xcb90: ; 0xcb90
+	text_jump UnknownText_0x1c06bf, BANK(UnknownText_0x1c06bf)
+	db "@"
+; 0xcb95
+
+
+Functioncb95: ; cb95
+	call Functionc6ea
+	ld a, $1
+	jr .asm_cba1
+
+	call Functionc6ea
+	ld a, $2
+
+.asm_cba1
+	ld [Buffer2], a
+.asm_cba4
+	ld hl, $4bb2
+	call Functionc6f5
+	jr nc, .asm_cba4
+	and $7f
+	ld [$d0ec], a
+	ret
+; cbb2
+
+INCBIN "baserom.gbc", $cbb2, $cc61 - $cbb2
+
+Functioncc61: ; cc61
+	call Functionc6ea
+.asm_cc64
+	ld hl, $4c72
+	call Functionc6f5
+	jr nc, .asm_cc64
+	and $7f
+	ld [$d0ec], a
+	ret
+; cc72
+
+INCBIN "baserom.gbc", $cc72, $cce5 - $cc72
+
+Functioncce5: ; cce5
+	call Functionccee
+	and $7f
+	ld [$d0ec], a
+	ret
+; ccee
+
+Functionccee: ; ccee
+	ld de, $001d
+	call CheckBadge
+	jr c, Functioncd06
+	jr Functioncd09
+; ccf8
+
+Functionccf8: ; ccf8
+	ld hl, UnknownText_0xcd01
+	call Function1d67
+	ld a, $80
+	ret
+; cd01
+
+UnknownText_0xcd01: ; 0xcd01
+	text_jump UnknownText_0x1c0751, BANK(UnknownText_0x1c0751)
+	db "@"
+; 0xcd06
+
+Functioncd06: ; cd06
+	ld a, $80
+	ret
+; cd09
+
+Functioncd09: ; cd09
+	ld hl, $4d29
+	call Function31cd
+	ld a, $81
+	ret
+; cd12
+
+INCBIN "baserom.gbc", $cd12, $cd1d - $cd12
+
+Functioncd1d: ; cd1d
+	ld hl, PartySpecies
+	add hl, de
+	ld a, [hl]
+	ld [$d1ef], a
+	call GetPartyNick
+	ret
+; cd29
+
+INCBIN "baserom.gbc", $cd29, $cd9d - $cd29
+
+Functioncd9d: ; cd9d
+	call Functionc6ea
+.asm_cda0
+	ld hl, $4dae
+	call Functionc6f5
+	jr nc, .asm_cda0
+	and $7f
+	ld [$d0ec], a
+	ret
+; cdae
+
+INCBIN "baserom.gbc", $cdae, $cdd9 - $cdae
+
+UnknownText_0xcdd9: ; 0xcdd9
+	text_jump UnknownText_0x1c0816, BANK(UnknownText_0x1c0816)
+	db "@"
+; 0xcdde
+
+Functioncdde: ; cdde
+	call GetFacingTileCoord
+	ld c, a
+	push de
+	call CheckWhirlpoolTile
+	pop de
+	jr c, .asm_ce09
+	call Function2a66
+	ld c, [hl]
+	push hl
+	ld hl, $48a4
+	call $4840
+	pop hl
+	jr nc, .asm_ce09
+	ld a, l
+	ld [$d1ec], a
+	ld a, h
+	ld [$d1ed], a
+	ld a, b
+	ld [$d1ee], a
+	ld a, c
+	ld [$d1ef], a
+	xor a
+	ret
+
+.asm_ce09
+	scf
+	ret
+; ce0b
+
+INCBIN "baserom.gbc", $ce0b, $ce0f - $ce0b
+
+UnknownScript_0xce0f: ; 0xce0f
+	3callasm $03, $4706
+	2writetext UnknownText_0xcdd9
+	reloadmappart
+	3callasm $03, $4e1d
+	loadmovesprites
+	end
+; 0xce1d
+
+INCBIN "baserom.gbc", $ce1d, $ce3e - $ce1d
+
+TryWhirlpoolOW: ; ce3e
+	ld d, WHIRLPOOL
+	call CheckPartyMove
+	jr c, .asm_ce5c
+	ld de, $0021
+	call CheckFlag2
+	jr c, .asm_ce5c
+	call Functioncdde
+	jr c, .asm_ce5c
+	ld a, BANK(UnknownScript_0xce6e)
+	ld hl, UnknownScript_0xce6e
+	call PushScriptPointer
+	scf
+	ret
+
+.asm_ce5c
+	ld a, BANK(UnknownScript_0xce66)
+	ld hl, UnknownScript_0xce66
+	call PushScriptPointer
+	scf
+	ret
+; ce66
+
+UnknownScript_0xce66: ; 0xce66
+	jumptext UnknownText_0xce69
+; 0xce69
+
+UnknownText_0xce69: ; 0xce69
+	text_jump UnknownText_0x1c082b, BANK(UnknownText_0x1c082b)
+	db "@"
+; 0xce6e
+
+UnknownScript_0xce6e: ; 0xce6e
+	loadfont
+	2writetext UnknownText_0xce78
+	yesorno
+	iftrue UnknownScript_0xce0f
+	loadmovesprites
+	end
+; 0xce78
+
+UnknownText_0xce78: ; 0xce78
+	text_jump UnknownText_0x1c0864, BANK(UnknownText_0x1c0864)
+	db "@"
+; 0xce7d
+
+Functionce7d: ; ce7d
+	call Functionce86
+	and $7f
+	ld [$d0ec], a
+	ret
+; ce86
+
+Functionce86: ; ce86
+	call GetFacingTileCoord
+	call CheckHeadbuttTreeTile
+	jr nz, .asm_ce97
+	ld hl, $4ea7
+	call Function31cd
+	ld a, $81
+	ret
+
+.asm_ce97
+	call Functionc779
+	ld a, $80
+	ret
+; ce9d
+
+INCBIN "baserom.gbc", $ce9d, $cec9 - $ce9d
+
+TryHeadbuttOW: ; cec9
+	ld d, $1d
+	call CheckPartyMove
+	jr c, .asm_ceda
+	ld a, $3
+	ld hl, $4edc
+	call PushScriptPointer
+	scf
+	ret
+
+.asm_ceda
+	xor a
+	ret
+; cedc
+
+INCBIN "baserom.gbc", $cedc, $ceeb - $cedc
+
+Functionceeb: ; ceeb
+	call Functioncef4
+	and $7f
+	ld [$d0ec], a
+	ret
+; cef4
+
+Functioncef4: ; cef4
+	call Functioncf0d
+	jr c, .asm_cf07
+	ld a, d
+	cp $18
+	jr nz, .asm_cf07
+	ld hl, $4f2e
+	call Function31cd
+	ld a, $81
+	ret
+
+.asm_cf07
+	call Functionc779
+	ld a, $80
+	ret
+; cf0d
+
+Functioncf0d: ; cf0d
+	callba CheckFacingObject
+	jr nc, .asm_cf2c
+	ld a, [hConnectedMapWidth]
+	call Function1ae5
+	ld hl, $0001
+	add hl, bc
+	ld a, [hl]
+	ld [$ffe0], a
+	call GetMapObject
+	ld hl, $0004
+	add hl, bc
+	ld a, [hl]
+	ld d, a
+	and a
+	ret
+
+.asm_cf2c
+	scf
+	ret
+; cf2e
+
+INCBIN "baserom.gbc", $cf2e, $cf8e - $cf2e
+
+
+Functioncf8e: ; cf8e
+	ld a, e
+	push af
+	call Functionc6ea
+	pop af
+	ld [Buffer2], a
+.asm_cf97
+	ld hl, $4fa5
+	call Functionc6f5
+	jr nc, .asm_cf97
+	and $7f
+	ld [$d0ec], a
+	ret
+; cfa5
+
+INCBIN "baserom.gbc", $cfa5, $d0b3 - $cfa5
+
+
+Functiond0b3: ; d0b3
+	call Functiond0bc
+	and $7f
+	ld [$d0ec], a
+	ret
+; d0bc
+
+Functiond0bc: ; d0bc
+	call Functiond121
+	jr c, .asm_d110
+	ld a, [PlayerState]
+	cp $0
+	jr z, .asm_d0ce
+	cp $1
+	jr z, .asm_d0f7
+	jr .asm_d110
+
+.asm_d0ce
+	ld hl, $513e
+	ld de, $514e
+	call Functiond119
+	call Function31cd
+	xor a
+	ld [MusicFade], a
+	ld de, $0000
+	call StartMusic
+	call DelayFrame
+	call MaxVolume
+	ld de, $0013
+	ld a, e
+	ld [CurMusic], a
+	call StartMusic
+	ld a, $1
+	ret
+
+.asm_d0f7
+	ld hl, BikeFlags
+	bit 1, [hl]
+	jr nz, .asm_d10b
+	ld hl, $5158
+	ld de, $516b
+	call Functiond119
+	ld a, $3
+	jr .asm_d113
+
+.asm_d10b
+	ld hl, $5171
+	jr .asm_d113
+
+.asm_d110
+	ld a, $0
+	ret
+
+.asm_d113
+	call Function31cd
+	ld a, $1
+	ret
+; d119
+
+Functiond119: ; d119
+	ld a, [$d0ef]
+	and a
+	ret z
+	ld h, d
+	ld l, e
+	ret
+; d121
+
+Functiond121: ; d121
+	call GetMapPermission
+	call CheckOutdoorMap
+	jr z, .asm_d133
+	cp $4
+	jr z, .asm_d133
+	cp $6
+	jr z, .asm_d133
+	jr .asm_d13c
+
+.asm_d133
+	call Function184a
+	and $f
+	jr nz, .asm_d13c
+	xor a
+	ret
+
+.asm_d13c
+	scf
+	ret
+; d13e
+
+INCBIN "baserom.gbc", $d13e, $d186 - $d13e
+
+TryCutOW: ; d186
+	ld d, CUT
+	call CheckPartyMove
+	jr c, .asm_d19f
+	ld de, $001c
+	call CheckFlag2
+	jr c, .asm_d19f
+	ld a, BANK(UnknownScript_0xd1a9)
+	ld hl, UnknownScript_0xd1a9
+	call PushScriptPointer
+	scf
+	ret
+
+.asm_d19f
+	ld a, BANK(UnknownScript_0xd1cd)
+	ld hl, UnknownScript_0xd1cd
+	call PushScriptPointer
+	scf
+	ret
+; d1a9
+
+UnknownScript_0xd1a9: ; 0xd1a9
+	loadfont
+	2writetext UnknownText_0xd1c8
+	yesorno
+	iffalse .script_d1b8
+	3callasm BANK(Functiond1ba), Functiond1ba
+	iftrue UnknownScript_0xc802
+.script_d1b8
+	loadmovesprites
+	end
+; 0xd1ba
+
+Functiond1ba: ; d1ba
+	xor a
+	ld [ScriptVar], a
+	call Functionc7ce
+	ret c
+	ld a, $1
+	ld [ScriptVar], a
+	ret
+; d1c8
+
+UnknownText_0xd1c8: ; 0xd1c8
+	text_jump UnknownText_0x1c09dd, BANK(UnknownText_0x1c09dd)
+	db "@"
+; 0xd1cd
+
+UnknownScript_0xd1cd: ; 0xd1cd
+	jumptext UnknownText_0xd1d0
+; 0xd1d0
+
+UnknownText_0xd1d0: ; 0xd1d0
+	text_jump UnknownText_0x1c0a05, BANK(UnknownText_0x1c0a05)
+	db "@"
+; 0xd1d5
+
+
+Functiond1d5: ; d1d5
+	call Functiond27b
+	jp nz, Functiond29c
+	push hl
+	call CheckItemPocket
+	pop de
+	ld a, [$d142]
+	dec a
+	ld hl, Tabled1e9
+	rst JumpTable
+	ret
+; d1e9
+
+Tabled1e9: ; d1e9
+	dw Functiond1f1
+	dw Functiond1f6
+	dw Functiond1fb
+	dw Functiond201
+; d1f1
+
+Functiond1f1: ; d1f1
+	ld h, d
+	ld l, e
+	jp Functiond29c
+; d1f6
+
+Functiond1f6: ; d1f6
+	ld h, d
+	ld l, e
+	jp Functiond35a
+; d1fb
+
+Functiond1fb: ; d1fb
+	ld hl, NumBalls
+	jp Functiond29c
+; d201
+
+Functiond201: ; d201
+	ld h, d
+	ld l, e
+	ld a, [CurItem]
+	ld c, a
+	call GetTMHMNumber
+	jp Functiond3c4
+; d20d
+
+
+Functiond20d: ; d20d
+	call Functiond27b
+	jr nz, .asm_d241
+	push hl
+	call CheckItemPocket
+	pop de
+	ld a, [$d142]
+	dec a
+	ld hl, .data_d220
+	rst JumpTable
+	ret
+
+.data_d220
+	dw .Item
+	dw .KeyItem
+	dw .Ball
+	dw .TMHM
+; d228
+
+.Ball ; d228
+	ld hl, NumBalls
+	jp Functiond2ff
+; d22e
+
+.TMHM ; d22e
+	ld h, d
+	ld l, e
+	ld a, [CurItem]
+	ld c, a
+	call GetTMHMNumber
+	jp Functiond3d8
+; d23a
+
+.KeyItem ; d23a
+	ld h, d
+	ld l, e
+	jp Functiond374
+; d23f
+
+.Item ; d23f
+	ld h, d
+	ld l, e
+; d241
+
+.asm_d241
+	jp Functiond2ff
+; d244
+
+Functiond244: ; d244
+	call Functiond27b
+	jr nz, .asm_d278
+	push hl
+	call CheckItemPocket
+	pop de
+	ld a, [$d142]
+	dec a
+	ld hl, .data_d257
+	rst JumpTable
+	ret
+
+.data_d257
+	dw .Item
+	dw .KeyItem
+	dw .Ball
+	dw .TMHM
+; d25f
+
+.Ball ; d25f
+	ld hl, NumBalls
+	jp Functiond349
+; d265
+
+.TMHM ; d265
+	ld h, d
+	ld l, e
+	ld a, [CurItem]
+	ld c, a
+	call GetTMHMNumber
+	jp Functiond3fb
+; d271
+
+.KeyItem ; d271
+	ld h, d
+	ld l, e
+	jp Functiond3b1
+; d276
+
+.Item ; d276
+	ld h, d
+	ld l, e
+; d278
+
+.asm_d278
+	jp Functiond349
+; d27b
+
+Functiond27b: ; d27b
+	ld a, l
+	cp TMsHMsEnd % $100
+	ret nz
+	ld a, h
+	cp TMsHMsEnd / $100
+	ret
+; d283
+
+Functiond283: ; d283
+	ld c, $14
+	ld a, e
+	cp TMsHMsEnd % $100
+	jr nz, .asm_d28e
+	ld a, d
+	cp TMsHMsEnd / $100
+	ret z
+
+.asm_d28e
+	ld c, $32
+	ld a, e
+	cp BallsEnd % $100
+	jr nz, .asm_d299
+	ld a, d
+	cp BallsEnd / $100
+	ret z
+
+.asm_d299
+	ld c, $c
+	ret
+; d29c
+
+Functiond29c: ; d29c
+	ld d, h
+	ld e, l
+	inc hl
+	ld a, [CurItem]
+	ld c, a
+	ld b, 0
+.asm_d2a5
+	ld a, [hli]
+	cp $ff
+	jr z, .asm_d2bd
+	cp c
+	jr nz, .asm_d2ba
+	ld a, $63
+	sub [hl]
+	add b
+	ld b, a
+	ld a, [$d10c]
+	cp b
+	jr z, .asm_d2c6
+	jr c, .asm_d2c6
+
+.asm_d2ba
+	inc hl
+	jr .asm_d2a5
+
+.asm_d2bd
+	call Functiond283
+	ld a, [de]
+	cp c
+	jr c, .asm_d2c6
+	and a
+	ret
+
+.asm_d2c6
+	ld h, d
+	ld l, e
+	ld a, [CurItem]
+	ld c, a
+	ld a, [$d10c]
+	ld [$d10d], a
+.asm_d2d2
+	inc hl
+	ld a, [hli]
+	cp $ff
+	jr z, .asm_d2ef
+	cp c
+	jr nz, .asm_d2d2
+	ld a, [$d10d]
+	add [hl]
+	cp $64
+	jr nc, .asm_d2e6
+	ld [hl], a
+	jr .asm_d2fd
+
+.asm_d2e6
+	ld [hl], $63
+	sub $63
+	ld [$d10d], a
+	jr .asm_d2d2
+
+.asm_d2ef
+	dec hl
+	ld a, [CurItem]
+	ld [hli], a
+	ld a, [$d10d]
+	ld [hli], a
+	ld [hl], $ff
+	ld h, d
+	ld l, e
+	inc [hl]
+
+.asm_d2fd
+	scf
+	ret
+; d2ff
+
+Functiond2ff: ; d2ff
+	ld d, h
+	ld e, l
+	ld a, [hli]
+	ld c, a
+	ld a, [$d107]
+	cp c
+	jr nc, .asm_d318
+	ld c, a
+	ld b, $0
+	add hl, bc
+	add hl, bc
+	ld a, [CurItem]
+	cp [hl]
+	inc hl
+	jr z, .asm_d327
+	ld h, d
+	ld l, e
+	inc hl
+
+.asm_d318
+	ld a, [CurItem]
+	ld b, a
+.asm_d31c
+	ld a, [hli]
+	cp b
+	jr z, .asm_d327
+	cp $ff
+	jr z, .asm_d347
+	inc hl
+	jr .asm_d31c
+
+.asm_d327
+	ld a, [$d10c]
+	ld b, a
+	ld a, [hl]
+	sub b
+	jr c, .asm_d347
+	ld [hl], a
+	ld [$d10d], a
+	and a
+	jr nz, .asm_d345
+	dec hl
+	ld b, h
+	ld c, l
+	inc hl
+	inc hl
+.asm_d33b
+	ld a, [hli]
+	ld [bc], a
+	inc bc
+	cp $ff
+	jr nz, .asm_d33b
+	ld h, d
+	ld l, e
+	dec [hl]
+
+.asm_d345
+	scf
+	ret
+
+.asm_d347
+	and a
+	ret
+; d349
+
+Functiond349: ; d349
+	ld a, [CurItem]
+	ld c, a
+.asm_d34d
+	inc hl
+	ld a, [hli]
+	cp $ff
+	jr z, .asm_d358
+	cp c
+	jr nz, .asm_d34d
+	scf
+	ret
+
+.asm_d358
+	and a
+	ret
+; d35a
+
+Functiond35a: ; d35a
+	ld hl, NumKeyItems
+	ld a, [hli]
+	cp $19
+	jr nc, .asm_d372
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [CurItem]
+	ld [hli], a
+	ld [hl], $ff
+	ld hl, NumKeyItems
+	inc [hl]
+	scf
+	ret
+
+.asm_d372
+	and a
+	ret
+; d374
+
+Functiond374: ; d374
+	ld a, [$d107]
+	ld e, a
+	ld d, $0
+	ld hl, NumKeyItems
+	ld a, [hl]
+	cp e
+	jr nc, .asm_d387
+	call Functiond396
+	ret nc
+	jr .asm_d38a
+
+.asm_d387
+	dec [hl]
+	inc hl
+	add hl, de
+
+.asm_d38a
+	ld d, h
+	ld e, l
+	inc hl
+.asm_d38d
+	ld a, [hli]
+	ld [de], a
+	inc de
+	cp $ff
+	jr nz, .asm_d38d
+	scf
+	ret
+; d396
+
+Functiond396: ; d396
+	ld hl, NumKeyItems
+	ld a, [CurItem]
+	ld c, a
+.asm_d39d
+	inc hl
+	ld a, [hl]
+	cp c
+	jr z, .asm_d3a8
+	cp $ff
+	jr nz, .asm_d39d
+	xor a
+	ret
+
+.asm_d3a8
+	ld a, [NumKeyItems]
+	dec a
+	ld [NumKeyItems], a
+	scf
+	ret
+; d3b1
+
+Functiond3b1: ; d3b1
+	ld a, [CurItem]
+	ld c, a
+	ld hl, KeyItems
+.asm_d3b8
+	ld a, [hli]
+	cp c
+	jr z, .asm_d3c2
+	cp $ff
+	jr nz, .asm_d3b8
+	and a
+	ret
+
+.asm_d3c2
+	scf
+	ret
+; d3c4
+
+
+
+Functiond3c4: ; d3c4
+	dec c
+	ld b, $0
+	ld hl, TMsHMs
+	add hl, bc
+	ld a, [$d10c]
+	add [hl]
+	cp $64
+	jr nc, .asm_d3d6
+	ld [hl], a
+	scf
+	ret
+
+.asm_d3d6
+	and a
+	ret
+; d3d8
+
+Functiond3d8: ; d3d8
+	dec c
+	ld b, $0
+	ld hl, TMsHMs
+	add hl, bc
+	ld a, [$d10c]
+	ld b, a
+	ld a, [hl]
+	sub b
+	jr c, .asm_d3f9
+	ld [hl], a
+	ld [$d10d], a
+	jr nz, .asm_d3f7
+	ld a, [$d0e2]
+	and a
+	jr z, .asm_d3f7
+	dec a
+	ld [$d0e2], a
+
+.asm_d3f7
+	scf
+	ret
+
+.asm_d3f9
+	and a
+	ret
+; d3fb
+
+Functiond3fb: ; d3fb
+	dec c
+	ld b, $0
+	ld hl, TMsHMs
+	add hl, bc
+	ld a, [hl]
+	and a
+	ret z
+	scf
+	ret
+; d407
+
+
+
 GetTMHMNumber: ; d407
 ; Return the number of a TM/HM by item id c.
 
@@ -7186,8 +22490,1336 @@
 ; d486
 
 
-INCBIN "baserom.gbc", $d486, $e58b - $d486
+GetItemPrice: ; d486
+; Return the price of CurItem in de.
+	push hl
+	push bc
+	ld a, $0
+	call GetItemAttr
+	ld e, a
+	ld a, $1
+	call GetItemAttr
+	ld d, a
+	pop bc
+	pop hl
+	ret
+; d497
 
+INCBIN "baserom.gbc", $d497, $d88c - $d497
+
+
+Functiond88c: ; d88c
+	ld de, PartyCount
+	ld a, [MonType]
+	and $f
+	jr z, .asm_d899
+	ld de, OTPartyCount
+
+.asm_d899
+	ld a, [de]
+	inc a
+	cp $7
+	ret nc
+	ld [de], a
+	ld a, [de]
+	ld [$ffae], a
+	add e
+	ld e, a
+	jr nc, .asm_d8a7
+	inc d
+
+.asm_d8a7
+	ld a, [CurPartySpecies]
+	ld [de], a
+	inc de
+	ld a, $ff
+	ld [de], a
+	ld hl, PartyMon1OT
+	ld a, [MonType]
+	and $f
+	jr z, .asm_d8bc
+	ld hl, OTPartyMon1OT
+
+.asm_d8bc
+	ld a, [$ffae]
+	dec a
+	call SkipNames
+	ld d, h
+	ld e, l
+	ld hl, PlayerName
+	ld bc, $000b
+	call CopyBytes
+	ld a, [MonType]
+	and a
+	jr nz, .asm_d8f0
+	ld a, [CurPartySpecies]
+	ld [$d265], a
+	call GetPokemonName
+	ld hl, PartyMon1Nickname
+	ld a, [$ffae]
+	dec a
+	call SkipNames
+	ld d, h
+	ld e, l
+	ld hl, StringBuffer1
+	ld bc, $000b
+	call CopyBytes
+
+.asm_d8f0
+	ld hl, PartyMon1Species
+	ld a, [MonType]
+	and $f
+	jr z, .asm_d8fd
+	ld hl, OTPartyMon1Species
+
+.asm_d8fd
+	ld a, [$ffae]
+	dec a
+	ld bc, $0030
+	call AddNTimes
+	ld e, l
+	ld d, h
+	push hl
+	ld a, [CurPartySpecies]
+	ld [CurSpecies], a
+	call GetBaseData
+	ld a, [BaseDexNo]
+	ld [de], a
+	inc de
+	ld a, [IsInBattle]
+	and a
+	ld a, $0
+	jr z, .asm_d922
+	ld a, [EnemyMonItem]
+
+.asm_d922
+	ld [de], a
+	inc de
+	push de
+	ld h, d
+	ld l, e
+	ld a, [IsInBattle]
+	and a
+	jr z, .asm_d943
+	ld a, [MonType]
+	and a
+	jr nz, .asm_d943
+	ld de, EnemyMonMove1
+	ld a, [de]
+	inc de
+	ld [hli], a
+	ld a, [de]
+	inc de
+	ld [hli], a
+	ld a, [de]
+	inc de
+	ld [hli], a
+	ld a, [de]
+	ld [hl], a
+	jr .asm_d950
+
+.asm_d943
+	xor a
+	ld [hli], a
+	ld [hli], a
+	ld [hli], a
+	ld [hl], a
+	ld [MagikarpLength], a
+	ld a, $1b
+	call Predef
+
+.asm_d950
+	pop de
+	inc de
+	inc de
+	inc de
+	inc de
+	ld a, [PlayerID]
+	ld [de], a
+	inc de
+	ld a, [$d47c]
+	ld [de], a
+	inc de
+	push de
+	ld a, [CurPartyLevel]
+	ld d, a
+	ld hl, $4e47
+	ld a, $14
+	rst FarCall
+	pop de
+	ld a, [hMultiplicand]
+	ld [de], a
+	inc de
+	ld a, [$ffb5]
+	ld [de], a
+	inc de
+	ld a, [$ffb6]
+	ld [de], a
+	inc de
+	xor a
+	ld b, $a
+.asm_d97a
+	ld [de], a
+	inc de
+	dec b
+	jr nz, .asm_d97a
+	pop hl
+	push hl
+	ld a, [MonType]
+	and $f
+	jr z, .asm_d992
+	push hl
+	callba GetTrainerDVs
+	pop hl
+	jr .asm_d9b5
+
+.asm_d992
+	ld a, [CurPartySpecies]
+	ld [$d265], a
+	dec a
+	push de
+	call CheckSeenMon
+	ld a, [$d265]
+	dec a
+	call SetSeenAndCaughtMon
+	pop de
+	pop hl
+	push hl
+	ld a, [IsInBattle]
+	and a
+	jr nz, .asm_d9f3
+	call RNG
+	ld b, a
+	call RNG
+	ld c, a
+
+.asm_d9b5
+	ld a, b
+	ld [de], a
+	inc de
+	ld a, c
+	ld [de], a
+	inc de
+	push hl
+	push de
+	inc hl
+	inc hl
+	call FillPP
+	pop de
+	pop hl
+	inc de
+	inc de
+	inc de
+	inc de
+	ld a, $46
+	ld [de], a
+	inc de
+	xor a
+	ld [de], a
+	inc de
+	ld [de], a
+	inc de
+	ld [de], a
+	inc de
+	ld a, [CurPartyLevel]
+	ld [de], a
+	inc de
+	xor a
+	ld [de], a
+	inc de
+	ld [de], a
+	inc de
+	ld bc, $000a
+	add hl, bc
+	ld a, $1
+	ld c, a
+	ld b, $0
+	call Functione17b
+	ld a, [$ffb5]
+	ld [de], a
+	inc de
+	ld a, [$ffb6]
+	ld [de], a
+	inc de
+	jr .asm_da29
+
+.asm_d9f3
+	ld a, [EnemyMonAtkDefDV]
+	ld [de], a
+	inc de
+	ld a, [EnemyMonSpdSpclDV]
+	ld [de], a
+	inc de
+	push hl
+	ld hl, EnemyMonPPMove1
+	ld b, $4
+.asm_da03
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec b
+	jr nz, .asm_da03
+	pop hl
+	ld a, $46
+	ld [de], a
+	inc de
+	xor a
+	ld [de], a
+	inc de
+	ld [de], a
+	inc de
+	ld [de], a
+	inc de
+	ld a, [CurPartyLevel]
+	ld [de], a
+	inc de
+	ld hl, EnemyMonStatus
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hl]
+	ld [de], a
+	inc de
+
+.asm_da29
+	ld a, [IsInBattle]
+	dec a
+	jr nz, .asm_da3b
+	ld hl, EnemyMonMaxHPHi
+	ld bc, $000c
+	call CopyBytes
+	pop hl
+	jr .asm_da45
+
+.asm_da3b
+	pop hl
+	ld bc, $000a
+	add hl, bc
+	ld b, $0
+	call Functione167
+
+.asm_da45
+	ld a, [MonType]
+	and $f
+	jr nz, .asm_da6b
+	ld a, [CurPartySpecies]
+	cp $c9
+	jr nz, .asm_da6b
+	ld hl, PartyMon1DVs
+	ld a, [PartyCount]
+	dec a
+	ld bc, $0030
+	call AddNTimes
+	ld a, $2d
+	call Predef
+	ld hl, $7a18
+	ld a, $3e
+	rst FarCall
+
+.asm_da6b
+	scf
+	ret
+; da6d
+
+FillPP: ; da6d
+	push bc
+	ld b, $4
+.asm_da70
+	ld a, [hli]
+	and a
+	jr z, .asm_da8f
+	dec a
+	push hl
+	push de
+	push bc
+	ld hl, $5afb
+	ld bc, $0007
+	call AddNTimes
+	ld de, StringBuffer1
+	ld a, $10
+	call FarCopyBytes
+	pop bc
+	pop de
+	pop hl
+	ld a, [$d078]
+
+.asm_da8f
+	ld [de], a
+	inc de
+	dec b
+	jr nz, .asm_da70
+	pop bc
+	ret
+; da96
+
+INCBIN "baserom.gbc", $da96, $dcb6 - $da96
+
+
+Functiondcb6: ; dcb6
+	ld a, b
+	ld hl, $ad26
+	ld bc, $0020
+	call AddNTimes
+	ld b, h
+	ld c, l
+	ld hl, $0017
+	add hl, bc
+	push hl
+	push bc
+	ld de, TempMonPP
+	ld bc, $0004
+	call CopyBytes
+	pop bc
+	ld hl, $0002
+	add hl, bc
+	push hl
+	ld de, TempMonMove1
+	ld bc, $0004
+	call CopyBytes
+	pop hl
+	pop de
+	ld a, [$cfa9]
+	push af
+	ld a, [MonType]
+	push af
+	ld b, $0
+.asm_dcec
+	ld a, [hli]
+	and a
+	jr z, .asm_dd18
+	ld [TempMonMove1], a
+	ld a, $2
+	ld [MonType], a
+	ld a, b
+	ld [$cfa9], a
+	push bc
+	push hl
+	push de
+	ld a, $3
+	ld hl, $78ec
+	rst FarCall
+	pop de
+	pop hl
+	ld a, [$d265]
+	ld b, a
+	ld a, [de]
+	and $c0
+	add b
+	ld [de], a
+	pop bc
+	inc de
+	inc b
+	ld a, b
+	cp $4
+	jr c, .asm_dcec
+
+.asm_dd18
+	pop af
+	ld [MonType], a
+	pop af
+	ld [$cfa9], a
+	ret
+; dd21
+
+INCBIN "baserom.gbc", $dd21, $de6e - $dd21
+
+
+Functionde6e: ; de6e
+	ld a, $1
+	call GetSRAMBank
+	ld de, $ad10
+	ld a, [de]
+	cp $14
+	jp nc, Functiondf42
+	inc a
+	ld [de], a
+	ld a, [CurPartySpecies]
+	ld [CurSpecies], a
+	ld c, a
+.asm_de85
+	inc de
+	ld a, [de]
+	ld b, a
+	ld a, c
+	ld c, b
+	ld [de], a
+	inc a
+	jr nz, .asm_de85
+	call GetBaseData
+	call Functiondf47
+	ld hl, PlayerName
+	ld de, $afa6
+	ld bc, $000b
+	call CopyBytes
+	ld a, [CurPartySpecies]
+	ld [$d265], a
+	call GetPokemonName
+	ld de, $b082
+	ld hl, StringBuffer1
+	ld bc, $000b
+	call CopyBytes
+	ld hl, EnemyMonSpecies
+	ld de, $ad26
+	ld bc, $0006
+	call CopyBytes
+	ld hl, PlayerID
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hl]
+	ld [de], a
+	inc de
+	push de
+	ld a, [CurPartyLevel]
+	ld d, a
+	ld hl, $4e47
+	ld a, $14
+	rst FarCall
+	pop de
+	ld a, [hMultiplicand]
+	ld [de], a
+	inc de
+	ld a, [$ffb5]
+	ld [de], a
+	inc de
+	ld a, [$ffb6]
+	ld [de], a
+	inc de
+	xor a
+	ld b, $a
+.asm_dee5
+	ld [de], a
+	inc de
+	dec b
+	jr nz, .asm_dee5
+	ld hl, EnemyMonAtkDefDV
+	ld b, $6
+.asm_deef
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec b
+	jr nz, .asm_deef
+	ld a, $46
+	ld [de], a
+	inc de
+	xor a
+	ld [de], a
+	inc de
+	ld [de], a
+	inc de
+	ld [de], a
+	inc de
+	ld a, [CurPartyLevel]
+	ld [de], a
+	ld a, [CurPartySpecies]
+	dec a
+	call SetSeenAndCaughtMon
+	ld a, [CurPartySpecies]
+	cp $c9
+	jr nz, .asm_df20
+	ld hl, $ad3b
+	ld a, $2d
+	call Predef
+	ld hl, $7a18
+	ld a, $3e
+	rst FarCall
+
+.asm_df20
+	ld hl, $ad28
+	ld de, TempMonMove1
+	ld bc, $0004
+	call CopyBytes
+	ld hl, $ad3d
+	ld de, TempMonPP
+	ld bc, $0004
+	call CopyBytes
+	ld b, $0
+	call Functiondcb6
+	call CloseSRAM
+	scf
+	ret
+; df42
+
+Functiondf42: ; df42
+	call CloseSRAM
+	and a
+	ret
+; df47
+
+Functiondf47: ; df47
+	ld hl, $afa6
+	ld bc, $000b
+	call $5f5f
+	ld hl, $b082
+	ld bc, $000b
+	call $5f5f
+	ld hl, $ad26
+	ld bc, $0020
+	ld a, [$ad10]
+	cp $2
+	ret c
+	push hl
+	call AddNTimes
+	dec hl
+	ld e, l
+	ld d, h
+	pop hl
+	ld a, [$ad10]
+	dec a
+	call AddNTimes
+	dec hl
+	push hl
+	ld a, [$ad10]
+	dec a
+	ld hl, $0000
+	call AddNTimes
+	ld c, l
+	ld b, h
+	pop hl
+.asm_df83
+	ld a, [hld]
+	ld [de], a
+	dec de
+	dec bc
+	ld a, c
+	or b
+	jr nz, .asm_df83
+	ret
+; df8c
+
+Functiondf8c: ; df8c
+	ld a, [CurPartySpecies]
+	push af
+	callab GetPreEvolution
+	callab GetPreEvolution
+	ld a, [CurPartySpecies]
+	dec a
+	push af
+	call CheckSeenMon
+	pop af
+	push bc
+	call CheckCaughtMon
+	push bc
+	call Functiond88c
+	pop bc
+	ld a, c
+	and a
+	jr nz, .asm_dfc3
+	ld a, [CurPartySpecies]
+	dec a
+	ld c, a
+	ld d, $0
+	ld hl, PokedexSeen
+	ld b, $0
+	ld a, $3
+	call Predef
+
+.asm_dfc3
+	pop bc
+	ld a, c
+	and a
+	jr nz, .asm_dfd9
+	ld a, [CurPartySpecies]
+	dec a
+	ld c, a
+	ld d, $0
+	ld hl, PokedexCaught
+	ld b, $0
+	ld a, $3
+	call Predef
+
+.asm_dfd9
+	pop af
+	ld [CurPartySpecies], a
+	ld a, [PartyCount]
+	dec a
+	ld bc, $0030
+	ld hl, PartyMon1Species
+	call AddNTimes
+	ld a, [CurPartySpecies]
+	ld [hl], a
+	ld hl, PartyCount
+	ld a, [hl]
+	ld b, $0
+	ld c, a
+	add hl, bc
+	ld a, $fd
+	ld [hl], a
+	ld a, [PartyCount]
+	dec a
+	ld hl, PartyMon1Nickname
+	call SkipNames
+	ld de, $6035
+	call CopyName2
+	ld a, [PartyCount]
+	dec a
+	ld hl, PartyMon1Happiness
+	ld bc, $0030
+	call AddNTimes
+	ld a, [$c2cc]
+	bit 1, a
+	ld a, $1
+	jr nz, .asm_e022
+	ld a, [BaseEggSteps]
+
+.asm_e022
+	ld [hl], a
+	ld a, [PartyCount]
+	dec a
+	ld hl, PartyMon1CurHP
+	ld bc, $0030
+	call AddNTimes
+	xor a
+	ld [hli], a
+	ld [hl], a
+	and a
+	ret
+; e035
+
+INCBIN "baserom.gbc", $e035, $e039 - $e035
+
+
+Functione039: ; e039
+	ld hl, PartyCount
+	ld a, [$d10b]
+	and a
+	jr z, .asm_e04a
+	ld a, $1
+	call GetSRAMBank
+	ld hl, $ad10
+
+.asm_e04a
+	ld a, [hl]
+	dec a
+	ld [hli], a
+	ld a, [CurPartyMon]
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld e, l
+	ld d, h
+	inc de
+.asm_e057
+	ld a, [de]
+	inc de
+	ld [hli], a
+	inc a
+	jr nz, .asm_e057
+	ld hl, PartyMon1OT
+	ld d, $5
+	ld a, [$d10b]
+	and a
+	jr z, .asm_e06d
+	ld hl, $afa6
+	ld d, $13
+
+.asm_e06d
+	ld a, [CurPartyMon]
+	call SkipNames
+	ld a, [CurPartyMon]
+	cp d
+	jr nz, .asm_e07e
+	ld [hl], $ff
+	jp $60f0
+
+.asm_e07e
+	ld d, h
+	ld e, l
+	ld bc, $000b
+	add hl, bc
+	ld bc, PartyMon1Nickname
+	ld a, [$d10b]
+	and a
+	jr z, .asm_e090
+	ld bc, $b082
+
+.asm_e090
+	call CopyDataUntil
+	ld hl, PartyMon1Species
+	ld bc, $0030
+	ld a, [$d10b]
+	and a
+	jr z, .asm_e0a5
+	ld hl, $ad26
+	ld bc, $0020
+
+.asm_e0a5
+	ld a, [CurPartyMon]
+	call AddNTimes
+	ld d, h
+	ld e, l
+	ld a, [$d10b]
+	and a
+	jr z, .asm_e0bc
+	ld bc, $0020
+	add hl, bc
+	ld bc, $afa6
+	jr .asm_e0c3
+
+.asm_e0bc
+	ld bc, $0030
+	add hl, bc
+	ld bc, PartyMon1OT
+
+.asm_e0c3
+	call CopyDataUntil
+	ld hl, PartyMon1Nickname
+	ld a, [$d10b]
+	and a
+	jr z, .asm_e0d2
+	ld hl, $b082
+
+.asm_e0d2
+	ld bc, $000b
+	ld a, [CurPartyMon]
+	call AddNTimes
+	ld d, h
+	ld e, l
+	ld bc, $000b
+	add hl, bc
+	ld bc, $de83
+	ld a, [$d10b]
+	and a
+	jr z, .asm_e0ed
+	ld bc, $b15e
+
+.asm_e0ed
+	call CopyDataUntil
+	ld a, [$d10b]
+	and a
+	jp nz, CloseSRAM
+	ld a, [InLinkBattle]
+	and a
+	ret nz
+	ld a, $0
+	call GetSRAMBank
+	ld hl, PartyCount
+	ld a, [CurPartyMon]
+	cp [hl]
+	jr z, .asm_e131
+	ld hl, $a600
+	ld bc, $002f
+	call AddNTimes
+	push hl
+	add hl, bc
+	pop de
+	ld a, [CurPartyMon]
+	ld b, a
+.asm_e11a
+	push bc
+	push hl
+	ld bc, $002f
+	call CopyBytes
+	pop hl
+	push hl
+	ld bc, $002f
+	add hl, bc
+	pop de
+	pop bc
+	inc b
+	ld a, [PartyCount]
+	cp b
+	jr nz, .asm_e11a
+
+.asm_e131
+	jp CloseSRAM
+; e134
+
+Functione134: ; e134
+	ld a, $1f
+	call GetPartyParamLocation
+	ld a, [hl]
+	ld [$001f], a
+	ld a, $0
+	call GetPartyParamLocation
+	ld a, [hl]
+	ld [CurSpecies], a
+	call GetBaseData
+	ld a, $24
+	call GetPartyParamLocation
+	ld d, h
+	ld e, l
+	push de
+	ld a, $a
+	call GetPartyParamLocation
+	ld b, $1
+	call Functione167
+	pop de
+	ld a, $22
+	call GetPartyParamLocation
+	ld a, [de]
+	inc de
+	ld [hli], a
+	ld a, [de]
+	ld [hl], a
+	ret
+; e167
+
+Functione167: ; e167
+	ld c, $0
+.asm_e169
+	inc c
+	call Functione17b
+	ld a, [$ffb5]
+	ld [de], a
+	inc de
+	ld a, [$ffb6]
+	ld [de], a
+	inc de
+	ld a, c
+	cp $6
+	jr nz, .asm_e169
+	ret
+; e17b
+
+Functione17b: ; e17b
+	push hl
+	push de
+	push bc
+	ld a, b
+	ld d, a
+	push hl
+	ld hl, BaseHP
+	dec hl
+	ld b, $0
+	add hl, bc
+	ld a, [hl]
+	ld e, a
+	pop hl
+	push hl
+	ld a, c
+	cp $6
+	jr nz, .asm_e193
+	dec hl
+	dec hl
+
+.asm_e193
+	sla c
+	ld a, d
+	and a
+	jr z, .asm_e1a5
+	add hl, bc
+	push de
+	ld a, [hld]
+	ld e, a
+	ld d, [hl]
+	callba GetSquareRoot
+	pop de
+
+.asm_e1a5
+	srl c
+	pop hl
+	push bc
+	ld bc, $000b
+	add hl, bc
+	pop bc
+	ld a, c
+	cp $2
+	jr z, .asm_e1e3
+	cp $3
+	jr z, .asm_e1ea
+	cp $4
+	jr z, .asm_e1ef
+	cp $5
+	jr z, .asm_e1f7
+	cp $6
+	jr z, .asm_e1f7
+	push bc
+	ld a, [hl]
+	swap a
+	and $1
+	add a
+	add a
+	add a
+	ld b, a
+	ld a, [hli]
+	and $1
+	add a
+	add a
+	add b
+	ld b, a
+	ld a, [hl]
+	swap a
+	and $1
+	add a
+	add b
+	ld b, a
+	ld a, [hl]
+	and $1
+	add b
+	pop bc
+	jr .asm_e1fb
+
+.asm_e1e3
+	ld a, [hl]
+	swap a
+	and $f
+	jr .asm_e1fb
+
+.asm_e1ea
+	ld a, [hl]
+	and $f
+	jr .asm_e1fb
+
+.asm_e1ef
+	inc hl
+	ld a, [hl]
+	swap a
+	and $f
+	jr .asm_e1fb
+
+.asm_e1f7
+	inc hl
+	ld a, [hl]
+	and $f
+
+.asm_e1fb
+	ld d, $0
+	add e
+	ld e, a
+	jr nc, .asm_e202
+	inc d
+
+.asm_e202
+	sla e
+	rl d
+	srl b
+	srl b
+	ld a, b
+	add e
+	jr nc, .asm_e20f
+	inc d
+
+.asm_e20f
+	ld [$ffb6], a
+	ld a, d
+	ld [$ffb5], a
+	xor a
+	ld [hMultiplicand], a
+	ld a, [CurPartyLevel]
+	ld [hMultiplier], a
+	call Multiply
+	ld a, [hMultiplicand]
+	ld [hProduct], a
+	ld a, [$ffb5]
+	ld [hMultiplicand], a
+	ld a, [$ffb6]
+	ld [$ffb5], a
+	ld a, $64
+	ld [hMultiplier], a
+	ld a, $3
+	ld b, a
+	call Divide
+	ld a, c
+	cp $1
+	ld a, $5
+	jr nz, .asm_e24e
+	ld a, [CurPartyLevel]
+	ld b, a
+	ld a, [$ffb6]
+	add b
+	ld [$ffb6], a
+	jr nc, .asm_e24c
+	ld a, [$ffb5]
+	inc a
+	ld [$ffb5], a
+
+.asm_e24c
+	ld a, $a
+
+.asm_e24e
+	ld b, a
+	ld a, [$ffb6]
+	add b
+	ld [$ffb6], a
+	jr nc, .asm_e25b
+	ld a, [$ffb5]
+	inc a
+	ld [$ffb5], a
+
+.asm_e25b
+	ld a, [$ffb5]
+	cp $4
+	jr nc, .asm_e26b
+	cp $3
+	jr c, .asm_e273
+	ld a, [$ffb6]
+	cp $e8
+	jr c, .asm_e273
+
+.asm_e26b
+	ld a, $3
+	ld [$ffb5], a
+	ld a, $e7
+	ld [$ffb6], a
+
+.asm_e273
+	pop bc
+	pop de
+	pop hl
+	ret
+; e277
+
+Functione277: ; e277
+	push de
+	push bc
+	xor a
+	ld [MonType], a
+	call Functiond88c
+	jr nc, .asm_e2b0
+	ld hl, PartyMon1Nickname
+	ld a, [PartyCount]
+	dec a
+	ld [CurPartyMon], a
+	call SkipNames
+	ld d, h
+	ld e, l
+	pop bc
+	ld a, b
+	ld b, $0
+	push bc
+	push de
+	push af
+	ld a, [CurItem]
+	and a
+	jr z, .asm_e2e1
+	ld a, [CurPartyMon]
+	ld hl, PartyMon1Item
+	ld bc, $0030
+	call AddNTimes
+	ld a, [CurItem]
+	ld [hl], a
+	jr .asm_e2e1
+
+.asm_e2b0
+	ld a, [CurPartySpecies]
+	ld [TempEnemyMonSpecies], a
+	callab LoadEnemyMon
+	call Functionde6e
+	jp nc, Functione3d4
+	ld a, $2
+	ld [MonType], a
+	xor a
+	ld [CurPartyMon], a
+	ld de, $d050
+	pop bc
+	ld a, b
+	ld b, $1
+	push bc
+	push de
+	push af
+	ld a, [CurItem]
+	and a
+	jr z, .asm_e2e1
+	ld a, [CurItem]
+	ld [$ad27], a
+
+.asm_e2e1
+	ld a, [CurPartySpecies]
+	ld [$d265], a
+	ld [TempEnemyMonSpecies], a
+	call GetPokemonName
+	ld hl, StringBuffer1
+	ld de, $d050
+	ld bc, $000b
+	call CopyBytes
+	pop af
+	and a
+	jp z, $6390
+	pop de
+	pop bc
+	pop hl
+	push bc
+	push hl
+	ld a, [ScriptBank]
+	call GetFarHalfword
+	ld bc, $000b
+	ld a, [ScriptBank]
+	call FarCopyBytes
+	pop hl
+	inc hl
+	inc hl
+	ld a, [ScriptBank]
+	call GetFarHalfword
+	pop bc
+	ld a, b
+	and a
+	push de
+	push bc
+	jr nz, .asm_e35e
+	push hl
+	ld a, [CurPartyMon]
+	ld hl, PartyMon1OT
+	call SkipNames
+	ld d, h
+	ld e, l
+	pop hl
+.asm_e32f
+	ld a, [ScriptBank]
+	call GetFarByte
+	ld [de], a
+	inc hl
+	inc de
+	cp $50
+	jr nz, .asm_e32f
+	ld a, [ScriptBank]
+	call GetFarByte
+	ld b, a
+	push bc
+	ld a, [CurPartyMon]
+	ld hl, PartyMon1ID
+	ld bc, $0030
+	call AddNTimes
+	ld a, $3
+	ld [hli], a
+	ld [hl], $e9
+	pop bc
+	ld a, $13
+	ld hl, $5ba3
+	rst FarCall
+	jr .asm_e3b2
+
+.asm_e35e
+	ld a, $1
+	call GetSRAMBank
+	ld de, $afa6
+.asm_e366
+	ld a, [ScriptBank]
+	call GetFarByte
+	ld [de], a
+	inc hl
+	inc de
+	cp $50
+	jr nz, .asm_e366
+	ld a, [ScriptBank]
+	call GetFarByte
+	ld b, a
+	ld hl, $ad2c
+	call RNG
+	ld [hli], a
+	call RNG
+	ld [hl], a
+	call CloseSRAM
+	ld a, $13
+	ld hl, $5b92
+	rst FarCall
+	jr .asm_e3b2
+
+	pop de
+	pop bc
+	push bc
+	push de
+	ld a, b
+	and a
+	jr z, .asm_e3a0
+	ld a, $13
+	ld hl, $5b83
+	rst FarCall
+	jr .asm_e3a6
+
+.asm_e3a0
+	ld a, $13
+	ld hl, $5b49
+	rst FarCall
+
+.asm_e3a6
+	ld a, $13
+	ld hl, $5b3b
+	rst FarCall
+	pop de
+	jr c, .asm_e3b2
+	call Functione3de
+
+.asm_e3b2
+	pop bc
+	pop de
+	ld a, b
+	and a
+	ret z
+	ld hl, $63d9
+	call PrintText
+	ld a, $1
+	call GetSRAMBank
+	ld hl, $d050
+	ld de, $b082
+	ld bc, $000b
+	call CopyBytes
+	call CloseSRAM
+	ld b, $1
+	ret
+; e3d4
+
+Functione3d4: ; e3d4
+	pop bc
+	pop de
+	ld b, $2
+	ret
+; e3d9
+
+INCBIN "baserom.gbc", $e3d9, $e3de - $e3d9
+
+
+Functione3de: ; e3de
+	push de
+	call Function1d6e
+	call Function2ed3
+	pop de
+	push de
+	ld b, $0
+	ld a, $4
+	ld hl, $56c1
+	rst FarCall
+	pop hl
+	ld de, StringBuffer1
+	call InitName
+	ld a, $4
+	ld hl, $2b4d
+	rst FarCall
+	ret
+; e3fd
+
+INCBIN "baserom.gbc", $e3fd, $e538 - $e3fd
+
+
+Functione538: ; e538
+	ld hl, PartyMon1CurHP
+	ld de, $0030
+	ld b, $0
+.asm_e540
+	ld a, [CurPartyMon]
+	cp b
+	jr z, .asm_e54b
+	ld a, [hli]
+	or [hl]
+	jr nz, .asm_e557
+	dec hl
+
+.asm_e54b
+	inc b
+	ld a, [PartyCount]
+	cp b
+	jr z, .asm_e555
+	add hl, de
+	jr .asm_e540
+
+.asm_e555
+	scf
+	ret
+
+.asm_e557
+	and a
+	ret
+; e559
+
+INCBIN "baserom.gbc", $e559, $e58b - $e559
+
 ClearPCItemScreen: ; e58b
 	call Function2ed3
 	xor a
@@ -7205,13 +23837,70 @@
 	ld bc, $0412
 	call TextBox
 	call Function3200
-	call $32f9 ; load regular palettes?
+	call Function32f9 ; load regular palettes?
 	ret
 ; 0xe5bb
 
-INCBIN "baserom.gbc", $e5bb, $e722 - $e5bb
+Functione5bb: ; e5bb
+	ld a, [CurPartyMon]
+	ld hl, $ad26
+	ld bc, $0020
+	call AddNTimes
+	ld de, TempMonSpecies
+	ld bc, $0020
+	ld a, $1
+	call GetSRAMBank
+	call CopyBytes
+	call CloseSRAM
+	ret
+; e5d9
 
+INCBIN "baserom.gbc", $e5d9, $e6ce - $e5d9
 
+
+Functione6ce: ; e6ce
+	ld a, [$df9c]
+	and a
+	jr z, .asm_e6ea
+	ld [$d265], a
+	ld a, $33
+	ld hl, $40c7
+	rst FarCall
+	ld a, $33
+	ld hl, $4000
+	rst FarCall
+	ld bc, $0e07
+	call $1dd2
+	ret c
+
+.asm_e6ea
+	call Functione6fd
+	ld a, [TempEnemyMonSpecies]
+	ld [$d265], a
+	call GetPokemonName
+	ld hl, $671d
+	call PrintText
+	ret
+; e6fd
+
+Functione6fd: ; e6fd
+	ld a, [TempEnemyMonSpecies]
+	ld [CurSpecies], a
+	ld [CurPartySpecies], a
+	call GetBaseData
+	xor a
+	ld bc, $0030
+	ld hl, $df9c
+	call ByteFill
+	xor a
+	ld [MonType], a
+	ld hl, $df9c
+	jp $5906
+; e71d
+
+INCBIN "baserom.gbc", $e71d, $e722 - $e71d
+
+
 _DoItemEffect: ; e722
 	ld a, [CurItem]
 	ld [$d265], a
@@ -7412,18 +24101,665 @@
 INCLUDE "items/item_effects.asm"
 
 
-INCBIN "baserom.gbc", $f780, $fa0b - $f780
+Functionf780: ; f780
+	push de
+	ld de, SFX_FULL_HEAL
+	call WaitPlaySFX
+	pop de
+	ret
+; f789
 
+Functionf789: ; f789
+	ld hl, $783d
+	call PrintText
+	call Functionf780
+	call Functiona80
+	; fallthrough
+; f795
 
+Functionf795: ; f795
+	ld hl, NumItems
+	ld a, $1
+	ld [$d10c], a
+	jp Function2f53
+; f7a0
+
+Functionf7a0: ; f7a0
+	call $6dfa
+	ld de, Start
+	ld a, e
+	ld [FXAnimIDLo], a
+	ld a, d
+	ld [FXAnimIDHi], a
+	xor a
+	ld [$c689], a
+	ld [hBattleTurn], a
+	ld [$cfca], a
+	ld a, $37
+	call Predef
+	ld hl, $7824
+	call PrintText
+	ld hl, $7829
+	call PrintText
+	jr Functionf795
+; f7ca
+
+Functionf7ca: ; f7ca
+	ld hl, $781f
+	call PrintText
+	ld a, $2
+	ld [$d0ec], a
+	ret
+; f7d6
+
+Functionf7d6: ; f7d6
+	ld hl, $780b
+	jp PrintText
+; f7dc
+
+Functionf7dc: ; f7dc
+	ld hl, $7838
+	call PrintText
+	ld a, $2
+	ld [$d0ec], a
+	ret
+; f7e8
+
+Functionf7e8: ; f7e8
+	ld hl, $7810
+	jr .asm_f804
+
+	ld hl, $7815
+	jr .asm_f804
+
+	ld hl, $781f
+	jr .asm_f804
+
+	ld hl, $781a
+	jr .asm_f804
+
+	ld hl, $782e
+	jr .asm_f804
+
+	ld hl, $7833
+
+.asm_f804
+	xor a
+	ld [$d0ec], a
+	jp PrintText
+; f80b
+
+INCBIN "baserom.gbc", $f80b, $f84c - $f80b
+
+
+Functionf84c: ; f84c
+	ld a, $2
+	call GetPartyParamLocation
+	push hl
+	ld de, MagikarpLength
+	ld a, $5
+	call Predef
+	pop hl
+	ld bc, $0015
+	add hl, bc
+	ld de, MagikarpLength
+	ld b, $0
+.asm_f864
+	inc b
+	ld a, b
+	cp $5
+	ret z
+	ld a, [$d265]
+	dec a
+	jr nz, .asm_f876
+	ld a, [$cfa9]
+	inc a
+	cp b
+	jr nz, .asm_f87d
+
+.asm_f876
+	ld a, [hl]
+	and $c0
+	ld a, [de]
+	call nz, Functionf881
+
+.asm_f87d
+	inc hl
+	inc de
+	jr .asm_f864
+; f881
+
+
+
+Functionf881: ; f881
+	push bc
+	ld a, [de]
+	ld [$ffb6], a
+	xor a
+	ld [hProduct], a
+	ld [hMultiplicand], a
+	ld [$ffb5], a
+	ld a, $5
+	ld [hMultiplier], a
+	ld b, $4
+	call Divide
+	ld a, [hl]
+	ld b, a
+	swap a
+	and $f
+	srl a
+	srl a
+	ld c, a
+	and a
+	jr z, .asm_f8b6
+.asm_f8a3
+	ld a, [$ffb6]
+	cp $8
+	jr c, .asm_f8ab
+	ld a, $7
+
+.asm_f8ab
+	add b
+	ld b, a
+	ld a, [$d265]
+	dec a
+	jr z, .asm_f8b6
+	dec c
+	jr nz, .asm_f8a3
+
+.asm_f8b6
+	ld [hl], b
+	pop bc
+	ret
+; f8b9
+
+INCBIN "baserom.gbc", $f8b9, $f8ec - $f8b9
+
+
+Functionf8ec: ; f8ec
+	ld a, [StringBuffer1]
+	push af
+	ld a, [$d074]
+	push af
+	ld a, [MonType]
+	and a
+	ld hl, PartyMon1Move1
+	ld bc, $0030
+	jr z, .asm_f91a
+	ld hl, OTPartyMon1Move1
+	dec a
+	jr z, .asm_f91a
+	ld hl, TempMonMove1
+	dec a
+	jr z, .asm_f915
+	ld hl, TempMonMove1
+	dec a
+	jr z, .asm_f915
+	ld hl, BattleMonMove1
+
+.asm_f915
+	call $7969
+	jr .asm_f91d
+
+.asm_f91a
+	call Functionf963
+
+.asm_f91d
+	ld a, [hl]
+	dec a
+	push hl
+	ld hl, $5b00
+	ld bc, $0007
+	call AddNTimes
+	ld a, $10
+	call GetFarByte
+	ld b, a
+	ld de, StringBuffer1
+	ld [de], a
+	pop hl
+	push bc
+	ld bc, $0015
+	ld a, [MonType]
+	cp $4
+	jr nz, .asm_f942
+	ld bc, $0006
+
+.asm_f942
+	add hl, bc
+	ld a, [hl]
+	and $c0
+	pop bc
+	or b
+	ld hl, $d074
+	ld [hl], a
+	xor a
+	ld [$d265], a
+	ld a, b
+	call Functionf881
+	ld a, [hl]
+	and $3f
+	ld [$d265], a
+	pop af
+	ld [$d074], a
+	pop af
+	ld [StringBuffer1], a
+	ret
+; f963
+
+Functionf963: ; f963
+	ld a, [CurPartyMon]
+	call AddNTimes
+	ld a, [$cfa9]
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ret
+; f971
+
+INCBIN "baserom.gbc", $f971, $f9ea - $f971
+
+
+Functionf9ea: ; f9ea
+	ld a, $2
+	call GetPartyParamLocation
+	ld a, [$d262]
+	ld b, a
+	ld c, $4
+.asm_f9f5
+	ld a, [hli]
+	cp b
+	jr z, .asm_f9fe
+	dec c
+	jr nz, .asm_f9f5
+	and a
+	ret
+
+.asm_f9fe
+	ld hl, $7a06
+	call PrintText
+	scf
+	ret
+; fa06
+
+INCBIN "baserom.gbc", $fa06, $fa0b - $fa06
+
+
 SECTION "bank4",ROMX,BANK[$4]
 
-INCBIN "baserom.gbc", $10000, $10b16 - $10000
+Function10000: ; 10000
+	ld hl, Options
+	set 4, [hl]
+	call Function1068a
+.asm_10008
+	call Functiona57
+	ld a, [$cf63]
+	bit 7, a
+	jr nz, .asm_1001a
+	call Function10026
+	call DelayFrame
+	jr .asm_10008
 
+.asm_1001a
+	ld a, [$cf65]
+	ld [$d0d6], a
+	ld hl, Options
+	res 4, [hl]
+	ret
+; 10026
+
+Function10026: ; 10026
+	ld a, [$cf63]
+	ld hl, $4030
+	call Function1086b
+	jp [hl]
+; 10030
+
+INCBIN "baserom.gbc", $10030, $10493 - $10030
+
+
+Function10493: ; 10493
+	ld hl, Options
+	set 4, [hl]
+	call Function1068a
+.asm_1049b
+	call Functiona57
+	ld a, [$cf63]
+	bit 7, a
+	jr nz, .asm_104ad
+	call Function104b9
+	call DelayFrame
+	jr .asm_1049b
+
+.asm_104ad
+	ld a, [$cf65]
+	ld [$d0d6], a
+	ld hl, Options
+	res 4, [hl]
+	ret
+; 104b9
+
+Function104b9: ; 104b9
+	ld a, [$cf63]
+	ld hl, $44c3
+	call Function1086b
+	jp [hl]
+; 104c3
+
+INCBIN "baserom.gbc", $104c3, $1068a - $104c3
+
+
+Function1068a: ; 1068a
+	xor a
+	ld [$cf63], a
+	ld a, [$d0d6]
+	and $3
+	ld [$cf65], a
+	inc a
+	add a
+	dec a
+	ld [$cf64], a
+	xor a
+	ld [$cf66], a
+	xor a
+	ld [$d0e3], a
+	ret
+; 106a5
+
+Function106a5: ; 106a5
+	xor a
+	ld [hBGMapMode], a
+	ld [$cf63], a
+	ld [$cf64], a
+	ld [$cf65], a
+	ld [$cf66], a
+	ld [$d0e3], a
+	call Function10955
+	call Function10a40
+	ret
+; 106be
+
+Function106be: ; 106be
+.asm_106be
+	call Function106c7
+	call Function1076f
+	jr c, .asm_106be
+	ret
+; 106c7
+
+Function106c7: ; 106c7
+	ld a, [$cf63]
+	ld hl, $46d1
+	call Function1086b
+	jp [hl]
+; 106d1
+
+INCBIN "baserom.gbc", $106d1, $1076f - $106d1
+
+
+Function1076f: ; 1076f
+	ld hl, $cf73
+	ld a, [hl]
+	and $1
+	jr nz, .asm_10788
+	ld a, [hl]
+	and $2
+	jr nz, .asm_1078f
+	ld a, [hl]
+	and $20
+	jr nz, .asm_10795
+	ld a, [hl]
+	and $10
+	jr nz, .asm_107a8
+	scf
+	ret
+
+.asm_10788
+	ld a, $1
+	ld [$cf66], a
+	and a
+	ret
+
+.asm_1078f
+	xor a
+	ld [$cf66], a
+	and a
+	ret
+
+.asm_10795
+	ld a, [$cf63]
+	dec a
+	and $3
+	ld [$cf63], a
+	push de
+	ld de, SFX_UNKNOWN_62
+	call StartSFX
+	pop de
+	scf
+	ret
+
+.asm_107a8
+	ld a, [$cf63]
+	inc a
+	and $3
+	ld [$cf63], a
+	push de
+	ld de, SFX_UNKNOWN_62
+	call StartSFX
+	pop de
+	scf
+	ret
+; 107bb
+
+Function107bb: ; 107bb
+	call Function106a5
+	ld a, [InputType]
+	or a
+	jr z, .asm_107ca
+	ld a, $77
+	ld hl, $628f
+	rst FarCall
+
+.asm_107ca
+	call Function107d7
+	call Function1076f
+	jr c, .asm_107ca
+	xor a
+	ld [$cf66], a
+	ret
+; 107d7
+
+Function107d7: ; 107d7
+	ld a, [$cf63]
+	ld hl, $47e1
+	call Function1086b
+	jp [hl]
+; 107e1
+
+INCBIN "baserom.gbc", $107e1, $1086b - $107e1
+
+
+Function1086b: ; 1086b
+	ld e, a
+	ld d, $0
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ret
+; 10874
+
+INCBIN "baserom.gbc", $10874, $1089d - $10874
+
+
+Function1089d: ; 1089d
+	ld a, [$cf65]
+	and $3
+	ld e, a
+	ld d, $0
+	ld a, [BattleType]
+	cp $3
+	jr z, .asm_108b3
+	ld a, [PlayerGender]
+	bit 0, a
+	jr nz, .asm_108c5
+
+.asm_108b3
+	ld hl, $48cc
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld e, a
+	ld d, [hl]
+	ld hl, $9500
+	ld bc, $040f
+	call Request2bpp
+	ret
+
+.asm_108c5
+	ld a, $12
+	ld hl, $4e81
+	rst FarCall
+	ret
+; 108cc
+
+INCBIN "baserom.gbc", $108cc, $10955 - $108cc
+
+
+Function10955: ; 10955
+	call WhiteBGMap
+	call ClearTileMap
+	call ClearSprites
+	call DisableLCD
+	ld hl, $4b16
+	ld de, VTiles2
+	ld bc, $0600
+	ld a, $4
+	call FarCopyBytes
+	ld hl, $c4b4
+	ld bc, $00dc
+	ld a, $24
+	call ByteFill
+	ld hl, $c4b9
+	ld bc, $0b0f
+	call ClearBox
+	ld hl, TileMap
+	ld a, $28
+	ld c, $14
+.asm_1098a
+	ld [hli], a
+	inc a
+	dec c
+	jr nz, .asm_1098a
+	call Function109bb
+	call Function109a5
+	ld hl, $c590
+	ld bc, $0412
+	call TextBox
+	call EnableLCD
+	call Function1089d
+	ret
+; 109a5
+
+Function109a5: ; 109a5
+	ld hl, $c4dc
+	ld a, $50
+	ld de, $000f
+	ld b, $3
+.asm_109af
+	ld c, $5
+.asm_109b1
+	ld [hli], a
+	inc a
+	dec c
+	jr nz, .asm_109b1
+	add hl, de
+	dec b
+	jr nz, .asm_109af
+	ret
+; 109bb
+
+Function109bb: ; 109bb
+	ld a, [$cf65]
+	ld d, a
+	swap a
+	sub d
+	ld d, $0
+	ld e, a
+	ld hl, $49e1
+	add hl, de
+	ld d, h
+	ld e, l
+	ld hl, $c52c
+	ld c, $3
+.asm_109d0
+	ld b, $5
+.asm_109d2
+	ld a, [de]
+	inc de
+	ld [hli], a
+	dec b
+	jr nz, .asm_109d2
+	ld a, c
+	ld c, $f
+	add hl, bc
+	ld c, a
+	dec c
+	jr nz, .asm_109d0
+	ret
+; 109e1
+
+INCBIN "baserom.gbc", $109e1, $10a40 - $109e1
+
+
+Function10a40: ; 10a40
+	call WaitBGMap
+	ld b, $14
+	call GetSGBLayout
+	call Function32f9
+	call DelayFrame
+	ret
+; 10a4f
+
+INCBIN "baserom.gbc", $10a4f, $10b16 - $10a4f
+
 PackGFX:
 INCBIN "gfx/misc/pack.2bpp"
 
-INCBIN "baserom.gbc", $113d6, $1167a - $113d6
+Function113d6: ; 113d6
+	call Function114dd
+	ret
+; 113da
 
+Function113da: ; 113da
+	xor a
+	ld [$dc2d], a
+	ld [$dc3a], a
+	ld [$dc1c], a
+	ret
+; 113e5
+
+INCBIN "baserom.gbc", $113e5, $114dd - $113e5
+
+
+Function114dd: ; 114dd
+	call UpdateTime
+	ld hl, $dc23
+	call Function11621
+	ret
+; 114e7
+
+INCBIN "baserom.gbc", $114e7, $11621 - $114e7
+
+
+Function11621: ; 11621
+	ld a, [CurDay]
+	ld [hl], a
+	ret
+; 11626
+
+INCBIN "baserom.gbc", $11626, $1167a - $11626
+
 TechnicalMachines: ; 0x1167a
 	db DYNAMICPUNCH
 	db HEADBUTT
@@ -7487,13 +24823,282 @@
 
 Function116b7: ; 0x116b7
 	call Function2ed3
-	call $56c1
-	call $2b74
+	call Function116c1
+	call Function2b74
 	ret
 ; 0x116c1
 
-INCBIN "baserom.gbc", $116c1, $11ce7 - $116c1
+Function116c1: ; 116c1
+	ld hl, PlayerSDefLevel
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ld hl, EnemyAtkLevel
+	ld [hl], b
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set 4, [hl]
+	ld a, [$ffde]
+	push af
+	xor a
+	ld [$ffde], a
+	ld a, [$ffaa]
+	push af
+	ld a, $1
+	ld [$ffaa], a
+	call Function116f8
+	call DelayFrame
+.asm_116e5
+	call Function11915
+	jr nc, .asm_116e5
+	pop af
+	ld [$ffaa], a
+	pop af
+	ld [$ffde], a
+	pop af
+	ld [Options], a
+	call ClearJoypadPublic
+	ret
+; 116f8
 
+Function116f8: ; 116f8
+	call WhiteBGMap
+	ld b, $8
+	call GetSGBLayout
+	call DisableLCD
+	call Function11c51
+	call Function118a8
+	ld a, $e3
+	ld [rLCDC], a
+	call Function1171d
+	call WaitBGMap
+	call WaitTop
+	call Function32f9
+	call Function11be0
+	ret
+; 1171d
+
+Function1171d: ; 1171d
+	ld a, [EnemyAtkLevel]
+	and $7
+	ld e, a
+	ld d, $0
+	ld hl, $572e
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 1172e
+
+INCBIN "baserom.gbc", $1172e, $1189c - $1172e
+
+
+Function1189c: ; 1189c
+	push bc
+	push af
+	ld a, [EnemyAtkLevel]
+	sub $3
+	ld b, a
+	pop af
+	dec b
+	pop bc
+	ret
+; 118a8
+
+Function118a8: ; 118a8
+	call WaitTop
+	ld hl, TileMap
+	ld bc, $0168
+	ld a, $60
+	call ByteFill
+	ld hl, $c4b5
+	ld bc, $0612
+	call Function1189c
+	jr nz, .asm_118c4
+	ld bc, $0412
+
+.asm_118c4
+	call ClearBox
+	ld de, $5da2
+	call Function1189c
+	jr nz, .asm_118d5
+	ld hl, $0055
+	add hl, de
+	ld d, h
+	ld e, l
+
+.asm_118d5
+	push de
+	ld hl, $c541
+	ld bc, $0712
+	call Function1189c
+	jr nz, .asm_118e7
+	ld hl, $c519
+	ld bc, $0912
+
+.asm_118e7
+	call ClearBox
+	ld hl, $c5e1
+	ld bc, $0112
+	call ClearBox
+	pop de
+	ld hl, $c542
+	ld b, $5
+	call Function1189c
+	jr nz, .asm_11903
+	ld hl, $c51a
+	ld b, $6
+
+.asm_11903
+	ld c, $11
+.asm_11905
+	ld a, [de]
+	ld [hli], a
+	inc de
+	dec c
+	jr nz, .asm_11905
+	push de
+	ld de, $0017
+	add hl, de
+	pop de
+	dec b
+	jr nz, .asm_11903
+	ret
+; 11915
+
+Function11915: ; 11915
+	call Functiona57
+	ld a, [$cf63]
+	bit 7, a
+	jr nz, .asm_11930
+	call Function11968
+	ld a, $23
+	ld hl, $4f62
+	rst FarCall
+	call Function11940
+	call DelayFrame
+	and a
+	ret
+
+.asm_11930
+	callab Function8cf53
+	call ClearSprites
+	xor a
+	ld [hSCX], a
+	ld [hSCY], a
+	scf
+	ret
+; 11940
+
+Function11940: ; 11940
+	xor a
+	ld [hBGMapMode], a
+	ld hl, $c505
+	call Function1189c
+	jr nz, .asm_1194e
+	ld hl, $c4dd
+
+.asm_1194e
+	ld bc, $0112
+	call ClearBox
+	ld hl, PlayerSDefLevel
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld hl, EnemySDefLevel
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call PlaceString
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+; 11968
+
+Function11968: ; 11968
+	ld a, [$cf63]
+	ld e, a
+	ld d, $0
+	ld hl, $5977
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 11977
+
+INCBIN "baserom.gbc", $11977, $11be0 - $11977
+
+
+Function11be0: ; 11be0
+	ld hl, PlayerSDefLevel
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld [hl], $f2
+	inc hl
+	ld a, [$c6d3]
+	dec a
+	ld c, a
+	ld a, $eb
+.asm_11bf0
+	ld [hli], a
+	dec c
+	jr nz, .asm_11bf0
+	ld [hl], $50
+	ret
+; 11bf7
+
+INCBIN "baserom.gbc", $11bf7, $11c51 - $11bf7
+
+
+Function11c51: ; 11c51
+	call ClearSprites
+	callab Function8cf53
+	call $0e51
+	call Functione5f
+	ld de, $5e65
+	ld hl, $8eb0
+	ld bc, $0401
+	call Get1bpp
+	ld de, $5e6d
+	ld hl, $8f20
+	ld bc, $0401
+	call Get1bpp
+	ld de, $9600
+	ld hl, $5cb7
+	ld bc, $0010
+	ld a, $4
+	call FarCopyBytes
+	ld de, $87e0
+	ld hl, $5cc7
+	ld bc, $0020
+	ld a, $4
+	call FarCopyBytes
+	ld a, $5
+	ld hl, $c312
+	ld [hli], a
+	ld [hl], $7e
+	xor a
+	ld [hSCY], a
+	ld [$c3bf], a
+	ld [hSCX], a
+	ld [$c3c0], a
+	ld [$cf63], a
+	ld [$cf64], a
+	ld [hBGMapMode], a
+	ld [PlayerEvaLevel], a
+	ld a, $7
+	ld [hWX], a
+	ret
+; 11cb7
+
+INCBIN "baserom.gbc", $11cb7, $11ce7 - $11cb7
+
 NameInputLower:
 	db "a b c d e f g h i"
 	db "j k l m n o p q r"
@@ -7522,9 +25127,56 @@
 	db "lower  DEL   END "
 
 
-INCBIN "baserom.gbc", $11e5d, $12513 - $11e5d
+INCBIN "baserom.gbc", $11e5d, $122c1 - $11e5d
 
+UnknownScript_0x122c1: ; 0x122c1
+	checkbit2 $0011
+	iffalse $62cd
+	setbit2 $0051
+	special $0017
+	end
+; 0x122ce
 
+INCBIN "baserom.gbc", $122ce, $124c8 - $122ce
+
+UnknownScript_0x124c8: ; 0x124c8
+	refreshscreen $0
+	3callasm BANK(Function124fa), Function124fa
+	2writetext UnknownText_0x124f5
+	closetext
+	special $002e
+	pause 40
+	special $001b
+	checkbit2 $0011
+	iftrue .script_64f2
+	3callasm BANK(HalveMoney), HalveMoney
+	3callasm BANK(Function12527), Function12527
+	3call BANK(UnknownScript_0x122c1), UnknownScript_0x122c1
+	special $0000
+	newloadmap $f1
+	resetfuncs
+
+.script_64f2
+	jumpstd $0016
+; 0x124f5
+
+UnknownText_0x124f5: ; 0x124f5
+	text_jump UnknownText_0x1c0a4e, BANK(UnknownText_0x1c0a4e)
+	db $50
+; 0x124fa
+
+Function124fa: ; 124fa
+	call ClearPalettes
+	call Functionfdb
+	call Function3200
+	call HideSprites
+	call Function4f0
+	ret
+; 1250a
+
+INCBIN "baserom.gbc", $1250a, $12513 - $1250a
+
+
 HalveMoney: ; 12513
 
 ; Empty function...
@@ -7547,12 +25199,50 @@
 ; 12527
 
 
-INCBIN "baserom.gbc", $12527, $125cd - $12527
+Function12527: ; 12527
+	ld a, [$dcb2]
+	ld d, a
+	ld a, [$dcb3]
+	ld e, a
+	ld a, $5
+	ld hl, $5344
+	rst FarCall
+	ld a, c
+	jr c, .asm_12539
+	xor a
 
+.asm_12539
+	ld [$d001], a
+	ret
+; 1253d
 
+INCBIN "baserom.gbc", $1253d, $12580 - $1253d
+
+
+Function12580: ; 12580
+	ld a, $2e
+	ld hl, $4172
+	rst FarCall
+	jr c, .asm_1258d
+	ld hl, $65ba
+	jr .asm_12590
+
+.asm_1258d
+	ld hl, $65ad
+
+.asm_12590
+	call Function31cd
+	ld a, $1
+	ld [$d0ec], a
+	ret
+; 12599
+
+INCBIN "baserom.gbc", $12599, $125cd - $12599
+
+
 StartMenu: ; 125cd
 
-	call $1fbf
+	call Function1fbf
 
 	ld de, SFX_MENU
 	call StartSFX
@@ -7568,7 +25258,7 @@
 	ld hl, .ContestMenuDataHeader
 .GotMenuData
 
-	call Function1d35
+	call LoadMenuDataHeader
 	call .SetUpMenuItems
 	ld a, [$d0d2]
 	ld [$cf88], a
@@ -7575,18 +25265,18 @@
 	call .DrawMenuAccount_
 	call MenuFunc_1e7f
 	call .DrawBugContestStatusBox
-	call $2e31
-	call $2e20
+	call Function2e31
+	call Function2e20
 	ld a, $1
 	ld hl, $64bf
 	rst $8
 	call .DrawBugContestStatus
-	call $0485
+	call Function485
 	jr .Select
 
 .Reopen
-	call $1ad2
-	call $0485
+	call Function1ad2
+	call Function485
 	call .SetUpMenuItems
 	ld a, [$d0d2]
 	ld [$cf88], a
@@ -7598,7 +25288,7 @@
 	ld a, [$cf88]
 	ld [$d0d2], a
 	call PlayClickSFX
-	call $1bee
+	call Function1bee
 	call .OpenMenu
 
 ; Menu items have different return functions.
@@ -7627,14 +25317,14 @@
 	push af
 	ld a, 1
 	ld [hOAMUpdate], a
-	call $0e5f
+	call Functione5f
 	pop af
 	ld [hOAMUpdate], a
 .ReturnEnd
 	call Function1c07
 .ReturnEnd2
-	call $2dcf
-	call $0485
+	call Function2dcf
+	call Function485
 	ret
 
 .GetInput
@@ -7647,7 +25337,7 @@
 	ld [MenuSelection], a
 .loop
 	call .PrintMenuAccount
-	call $1f1a
+	call Function1f1a
 	ld a, [$cf73]
 	cp BUTTON_B
 	jr z, .b
@@ -7695,12 +25385,12 @@
 
 .Clear ; 126b7
 	call WhiteBGMap
-	call $1d7d
-	call $2bae
+	call Function1d7d
+	call Function2bae
 	call .DrawMenuAccount_
 	call MenuFunc_1e7f
 	call .DrawBugContestStatus
-	call $1ad2
+	call Function1ad2
 	call $0d90
 	call $2b5c
 	ret
@@ -7827,7 +25517,7 @@
 	ld [$cf76], a
 	call .FillMenuList
 
-	ld hl, $d84c
+	ld hl, StatusFlags
 	bit 0, [hl]
 	jr z, .no_pokedex
 	ld a, 0 ; pokedex
@@ -7967,7 +25657,7 @@
 ; Retire from the bug catching contest.
 
 	ld hl, .EndTheContestText
-	call $6cf5
+	call Function12cf5
 	jr c, .asm_12903
 	ld a, $4
 	ld hl, $760b
@@ -7987,7 +25677,7 @@
 StartMenu_Save: ; 1290b
 ; Save the game.
 
-	call $2879
+	call Function2879
 	ld a, $5
 	ld hl, $4a1a
 	rst FarCall
@@ -8004,9 +25694,7 @@
 ; Game options.
 
 	call FadeToMenu
-	ld a, $1
-	ld hl, $5b64
-	rst FarCall
+	callba OptionsMenu
 	ld a, 6
 	ret
 ; 12928
@@ -8019,7 +25707,7 @@
 	ld a, $9
 	ld hl, $5105
 	rst FarCall
-	call $2b3c
+	call Function2b3c
 	ld a, 0
 	ret
 ; 12937
@@ -8035,7 +25723,7 @@
 	ld a, $10
 	ld hl, $4000
 	rst FarCall
-	call $2b3c
+	call Function2b3c
 
 .asm_12949
 	ld a, 0
@@ -8049,7 +25737,7 @@
 	ld a, $24
 	ld hl, $4b8d
 	rst FarCall
-	call $2b3c
+	call Function2b3c
 	ld a, 0
 	ret
 ; 1295b
@@ -8064,7 +25752,7 @@
 	ld a, [$cf66]
 	and a
 	jr nz, .asm_12970
-	call $2b3c
+	call Function2b3c
 	ld a, 0
 	ret
 .asm_12970
@@ -8102,7 +25790,7 @@
 	callba WritePartyMenuTilemap
 	callba PrintPartyMenuText
 	call WaitBGMap
-	call $32f9 ; load regular palettes?
+	call Function32f9 ; load regular palettes?
 	call DelayFrame
 	callba PartyMenuSelect
 	jr c, .return ; if cancelled or pressed B
@@ -8118,7 +25806,7 @@
 	jr z, .quit
 
 .return
-	call $2b3c
+	call Function2b3c
 	ld a, 0
 	ret
 
@@ -8136,7 +25824,7 @@
 
 CantUseItem: ; 12a60
 	ld hl, CantUseItemText
-	call $2012
+	call Function2012
 	ret
 ; 12a67
 
@@ -8174,7 +25862,7 @@
 	ld a, $9
 	ld hl, $4d19
 	rst FarCall
-	call $389c
+	call GetCurNick
 	ld a, [MenuSelection]
 	ld hl, .Actions
 	ld de, 3
@@ -8192,26 +25880,26 @@
 	ret
 
 .Actions
-	dbw $01, $6e1b
-	dbw $02, $6e30
-	dbw $03, $6ebd
-	dbw $04, $6e6a
-	dbw $06, $6e55
-	dbw $07, $6e7f
-	dbw $08, $6ed1
-	dbw $09, $6ea9
-	dbw $0a, $6ee6
-	dbw $0d, $6ee6
-	dbw $0b, $6f26
-	dbw $05, $6e94
-	dbw $0c, $6f3b
-	dbw $0e, $6f50
-	dbw $0f, OpenPartyStats
-	dbw $10, SwitchPartyMons
-	dbw $11, GiveTakePartyMonItem
-	dbw $12, CancelPokemonAction
-	dbw $13, $6fba ; move
-	dbw $14, $6d45 ; mail
+	dbw  1, Function12e1b ; Cut
+	dbw  2, Function12e30 ; Fly
+	dbw  3, Function12ebd ; Surf
+	dbw  4, Function12e6a ; Strength
+	dbw  6, Function12e55 ; Flash
+	dbw  7, Function12e7f ; Whirlpool
+	dbw  8, Function12ed1 ; Dig
+	dbw  9, Function12ea9 ; Teleport
+	dbw 10, Function12ee6 ; Softboiled
+	dbw 13, Function12ee6 ; MilkDrink
+	dbw 11, Function12f26 ; Headbutt
+	dbw  5, Function12e94 ; Flash
+	dbw 12, Function12f3b ; RockSmash
+	dbw 14, Function12f50 ; SweetScent
+	dbw 15, OpenPartyStats
+	dbw 16, SwitchPartyMons
+	dbw 17, GiveTakePartyMonItem
+	dbw 18, CancelPokemonAction
+	dbw 19, Function12fba ; move
+	dbw 20, Function12d45 ; mail
 ; 12aec
 
 
@@ -8245,7 +25933,7 @@
 	call AddNTimes
 	ld [hl], "▷"
 	call WaitBGMap
-	call $32f9
+	call Function32f9
 	call DelayFrame
 
 	callba PartyMenuSelect
@@ -8288,12 +25976,12 @@
 	jr z, .asm_12ba6
 
 	ld hl, GiveTakeItemMenuData
-	call Function1d35
+	call LoadMenuDataHeader
 	call Function1d81
 	call Function1c07
 	jr c, .asm_12ba6
 
-	call $389c
+	call GetCurNick
 	ld hl, StringBuffer1
 	ld de, $d050
 	ld bc, $b
@@ -8302,7 +25990,7 @@
 	cp 1
 	jr nz, .asm_12ba0
 
-	call $1d6e
+	call Function1d6e
 	call ClearPalettes
 	call Function12ba9
 	call ClearPalettes
@@ -8351,7 +26039,7 @@
 
 .next
 	ld hl, CantBeHeldText
-	call $1d67
+	call Function1d67
 	jr .loop
 
 .quit
@@ -8381,13 +26069,13 @@
 .asm_12bf4
 	call $6cea
 	ld hl, MadeHoldText
-	call $1d67
+	call Function1d67
 	call GivePartyItem
 	ret
 
 .asm_12c01
 	ld hl, PleaseRemoveMailText
-	call $1d67
+	call Function1d67
 	ret
 
 .asm_12c08
@@ -8394,7 +26082,7 @@
 	ld [$d265], a
 	call GetItemName
 	ld hl, SwitchAlreadyHoldingText
-	call $6cf5
+	call Function12cf5
 	jr c, .asm_12c4b
 
 	call $6cea
@@ -8404,11 +26092,11 @@
 	ld [$d265], a
 	pop af
 	ld [CurItem], a
-	call $6cdf
+	call Function12cdf
 	jr nc, .asm_12c3c
 
 	ld hl, TookAndMadeHoldText
-	call $1d67
+	call Function1d67
 	ld a, [$d265]
 	ld [CurItem], a
 	call GivePartyItem
@@ -8417,9 +26105,9 @@
 .asm_12c3c
 	ld a, [$d265]
 	ld [CurItem], a
-	call $6cdf
+	call Function12cdf
 	ld hl, ItemStorageIsFullText
-	call $1d67
+	call Function1d67
 
 .asm_12c4b
 	ret
@@ -8452,7 +26140,7 @@
 	jr z, .asm_12c8c
 
 	ld [CurItem], a
-	call $6cdf
+	call Function12cdf
 	jr nc, .asm_12c94
 
 	ld a, $2e
@@ -8464,17 +26152,17 @@
 	ld [hl], NO_ITEM
 	call GetItemName
 	ld hl, TookFromText
-	call $1d67
+	call Function1d67
 	jr .asm_12c9a
 
 .asm_12c8c
 	ld hl, IsntHoldingAnythingText
-	call $1d67
+	call Function1d67
 	jr .asm_12c9a
 
 .asm_12c94
 	ld hl, ItemStorageIsFullText
-	call $1d67
+	call Function1d67
 
 .asm_12c9a
 	ret
@@ -8546,11 +26234,96 @@
 ; 12cdf
 
 
-INCBIN "baserom.gbc", $12cdf, $12e00 - $12cdf
+Function12cdf: ; 12cdf
+	ld a, $1
+	ld [$d10c], a
+	ld hl, NumItems
+	jp Function2f66
+; 12cea
 
+INCBIN "baserom.gbc", $12cea, $12cf5 - $12cea
 
+Function12cf5: ; 12cf5
+	call Function1d4f
+	call Function1dcf
+	jp Function1c07
+; 12cfe
+
+INCBIN "baserom.gbc", $12cfe, $12d45 - $12cfe
+
+Function12d45: ; 12d45
+	ld a, [InLinkBattle]
+	cp $1
+	jr z, .asm_12d6d
+	cp $2
+	jr z, .asm_12d6d
+	ld hl, $6dc9
+	call LoadMenuDataHeader
+	call Function1d81
+	call Function1c07
+	jp c, $6dc6
+	ld a, [$cfa9]
+	cp $1
+	jr z, .asm_12d6d
+	cp $2
+	jr z, .asm_12d76
+	jp $6dc6
+
+.asm_12d6d
+	ld a, $2e
+	ld hl, $5229
+	rst FarCall
+	ld a, $0
+	ret
+
+.asm_12d76
+	ld hl, $6df1
+	call Function12cf5
+	jr c, .asm_12d9a
+	ld a, [CurPartyMon]
+	ld b, a
+	callba Function4456e
+	jr c, .asm_12d92
+	ld hl, $6dfb
+	call Function1d67
+	jr .asm_12dc6
+
+.asm_12d92
+	ld hl, $6df6
+	call Function1d67
+	jr .asm_12dc6
+
+.asm_12d9a
+	ld hl, $6de2
+	call Function12cf5
+	jr c, .asm_12dc6
+	call GetPartyItemLocation
+	ld a, [hl]
+	ld [CurItem], a
+	call Function12cdf
+	jr nc, .asm_12dbe
+	call GetPartyItemLocation
+	ld [hl], $0
+	call GetCurNick
+	ld hl, $6de7
+	call Function1d67
+	jr .asm_12dc6
+
+.asm_12dbe
+	ld hl, $6dec
+	call Function1d67
+	jr .asm_12dc6
+
+.asm_12dc6
+	ld a, $3
+	ret
+; 12dc9
+
+INCBIN "baserom.gbc", $12dc9, $12e00 - $12dc9
+
+
 OpenPartyStats: ; 12e00
-	call $1d6e
+	call Function1d6e
 	call ClearSprites
 ; PartyMon
 	xor a
@@ -8559,15 +26332,700 @@
 	ld a, $25
 	call Predef
 	call MaxVolume
-	call $1d7d
+	call Function1d7d
 	ld a, 0
 	ret
 ; 12e1b
 
 
-INCBIN "baserom.gbc", $12e1b, $13327 - $12e1b
+Function12e1b: ; 12e1b
+	ld a, $3
+	ld hl, $4785
+	rst FarCall
+	ld a, [$d0ec]
+	cp $1
+	jr nz, .asm_12e2d
+	ld b, $4
+	ld a, $2
+	ret
 
+.asm_12e2d
+	ld a, $3
+	ret
+; 12e30
 
+
+Function12e30: ; 12e30
+	callba Functionca3b
+	ld a, [$d0ec]
+	cp $2
+	jr z, .asm_12e4c
+	cp $0
+	jr z, .asm_12e4f
+	ld a, $41
+	ld hl, $60b5
+	rst FarCall
+	ld b, $4
+	ld a, $2
+	ret
+
+.asm_12e4c
+	ld a, $3
+	ret
+
+.asm_12e4f
+	ld a, $0
+	ret
+; 12e52
+
+INCBIN "baserom.gbc", $12e52, $12e55 - $12e52
+
+Function12e55: ; 12e55
+	ld a, $3
+	ld hl, $48ac
+	rst FarCall
+	ld a, [$d0ec]
+	cp $1
+	jr nz, .asm_12e67
+	ld b, $4
+	ld a, $2
+	ret
+
+.asm_12e67
+	ld a, $3
+	ret
+; 12e6a
+
+Function12e6a: ; 12e6a
+	ld a, $3
+	ld hl, $4ce5
+	rst FarCall
+	ld a, [$d0ec]
+	cp $1
+	jr nz, .asm_12e7c
+	ld b, $4
+	ld a, $2
+	ret
+
+.asm_12e7c
+	ld a, $3
+	ret
+; 12e7f
+
+Function12e7f: ; 12e7f
+	ld a, $3
+	ld hl, $4d9d
+	rst FarCall
+	ld a, [$d0ec]
+	cp $1
+	jr nz, .asm_12e91
+	ld b, $4
+	ld a, $2
+	ret
+
+.asm_12e91
+	ld a, $3
+	ret
+; 12e94
+
+Function12e94: ; 12e94
+	ld a, $3
+	ld hl, $4ade
+	rst FarCall
+	ld a, [$d0ec]
+	cp $1
+	jr nz, .asm_12ea6
+	ld b, $4
+	ld a, $2
+	ret
+
+.asm_12ea6
+	ld a, $3
+	ret
+; 12ea9
+
+Function12ea9: ; 12ea9
+	ld a, $3
+	ld hl, $4c61
+	rst FarCall
+	ld a, [$d0ec]
+	and a
+	jr z, .asm_12eba
+	ld b, $4
+	ld a, $2
+	ret
+
+.asm_12eba
+	ld a, $3
+	ret
+; 12ebd
+
+Function12ebd: ; 12ebd
+	ld a, $3
+	ld hl, $4909
+	rst FarCall
+	ld a, [$d0ec]
+	and a
+	jr z, .asm_12ece
+	ld b, $4
+	ld a, $2
+	ret
+
+.asm_12ece
+	ld a, $3
+	ret
+; 12ed1
+
+Function12ed1: ; 12ed1
+	ld a, $3
+	ld hl, $4b9c
+	rst FarCall
+	ld a, [$d0ec]
+	cp $1
+	jr nz, .asm_12ee3
+	ld b, $4
+	ld a, $2
+	ret
+
+.asm_12ee3
+	ld a, $3
+	ret
+; 12ee6
+
+Function12ee6: ; 12ee6
+	call Function12f05
+	jr nc, .asm_12ef3
+	ld a, $3
+	ld hl, $73df
+	rst FarCall
+	jr .asm_12ef9
+
+.asm_12ef3
+	ld hl, $6f00
+	call PrintText
+
+.asm_12ef9
+	xor a
+	ld [PartyMenuActionText], a
+	ld a, $3
+	ret
+; 12f00
+
+INCBIN "baserom.gbc", $12f00, $12f05 - $12f00
+
+Function12f05: ; 12f05
+	ld a, $24
+	call GetPartyParamLocation
+	ld a, [hli]
+	ld [hProduct], a
+	ld a, [hl]
+	ld [hMultiplicand], a
+	ld a, $5
+	ld [hMultiplier], a
+	ld b, $2
+	call Divide
+	ld a, $23
+	call GetPartyParamLocation
+	ld a, [$ffb6]
+	sub [hl]
+	dec hl
+	ld a, [$ffb5]
+	sbc [hl]
+	ret
+; 12f26
+
+Function12f26: ; 12f26
+	ld a, $3
+	ld hl, $4e7d
+	rst FarCall
+	ld a, [$d0ec]
+	cp $1
+	jr nz, .asm_12f38
+	ld b, $4
+	ld a, $2
+	ret
+
+.asm_12f38
+	ld a, $3
+	ret
+; 12f3b
+
+Function12f3b: ; 12f3b
+	ld a, $3
+	ld hl, $4eeb
+	rst FarCall
+	ld a, [$d0ec]
+	cp $1
+	jr nz, .asm_12f4d
+	ld b, $4
+	ld a, $2
+	ret
+
+.asm_12f4d
+	ld a, $3
+	ret
+; 12f50
+
+Function12f50: ; 12f50
+	ld a, $14
+	ld hl, $46bc
+	rst FarCall
+	ld b, $4
+	ld a, $2
+	ret
+; 12f5b
+
+INCBIN "baserom.gbc", $12f5b, $12fba - $12f5b
+
+Function12fba: ; 12fba
+	ld a, [CurPartySpecies]
+	cp $fd
+	jr z, .asm_12fd2
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set 4, [hl]
+	call Function12fd5
+	pop af
+	ld [Options], a
+	call WhiteBGMap
+
+.asm_12fd2
+	ld a, $0
+	ret
+; 12fd5
+
+Function12fd5: ; 12fd5
+	ld a, [CurPartyMon]
+	inc a
+	ld [$d0d8], a
+	call Function13172
+	call Function132d3
+	ld de, $7163
+	call Function1bb1
+	call Function131ef
+	ld hl, $cfa5
+	set 6, [hl]
+	jr .asm_13009
+
+	call Function1bd3
+	bit 1, a
+	jp nz, Function13038
+	bit 0, a
+	jp nz, Function130c6
+	bit 4, a
+	jp nz, Function1305b
+	bit 5, a
+	jp nz, Function13075
+
+.asm_13009
+	call Function13235
+	ld a, [$d0e3]
+	and a
+	jr nz, .asm_13018
+	call Function13256
+	jp $6ff2
+
+.asm_13018
+	ld a, $7f
+	ld hl, $c57d
+	ld bc, $0005
+	call ByteFill
+	ld hl, $c591
+	ld bc, $0512
+	call ClearBox
+	ld hl, $c591
+	ld de, $716b
+	call PlaceString
+	jp $6ff2
+; 13038
+
+Function13038: ; 13038
+	call PlayClickSFX
+	call WaitSFX
+	ld a, [$d0e3]
+	and a
+	jp z, Function13154
+	ld a, [$d0e3]
+	ld [$cfa9], a
+	xor a
+	ld [$d0e3], a
+	ld hl, $c4c9
+	ld bc, $0812
+	call ClearBox
+	jp $6fe8
+; 1305b
+
+Function1305b: ; 1305b
+	ld a, [$d0e3]
+	and a
+	jp nz, $6ff2
+	ld a, [CurPartyMon]
+	ld b, a
+	push bc
+	call Function1308f
+	pop bc
+	ld a, [CurPartyMon]
+	cp b
+	jp z, $6ff2
+	jp Function12fd5
+; 13075
+
+Function13075: ; 13075
+	ld a, [$d0e3]
+	and a
+	jp nz, $6ff2
+	ld a, [CurPartyMon]
+	ld b, a
+	push bc
+	call $70a7
+	pop bc
+	ld a, [CurPartyMon]
+	cp b
+	jp z, $6ff2
+	jp Function12fd5
+; 1308f
+
+Function1308f: ; 1308f
+.asm_1308f
+	ld a, [CurPartyMon]
+	inc a
+	ld [CurPartyMon], a
+	ld c, a
+	ld b, $0
+	ld hl, PartySpecies
+	add hl, bc
+	ld a, [hl]
+	cp $ff
+	jr z, .asm_130a7
+	cp $fd
+	ret nz
+	jr .asm_1308f
+
+.asm_130a7
+	ld a, [CurPartyMon]
+	and a
+	ret z
+.asm_130ac
+	ld a, [CurPartyMon]
+	dec a
+	ld [CurPartyMon], a
+	ld c, a
+	ld b, $0
+	ld hl, PartySpecies
+	add hl, bc
+	ld a, [hl]
+	cp $fd
+	ret nz
+	ld a, [CurPartyMon]
+	and a
+	jr z, .asm_1308f
+	jr .asm_130ac
+; 130c6
+
+Function130c6: ; 130c6
+	call PlayClickSFX
+	call WaitSFX
+	ld a, [$d0e3]
+	and a
+	jr nz, .asm_130de
+	ld a, [$cfa9]
+	ld [$d0e3], a
+	call Function1bee
+	jp $7018
+
+.asm_130de
+	ld hl, PartyMon1Move1
+	ld bc, $0030
+	ld a, [CurPartyMon]
+	call AddNTimes
+	push hl
+	call Function1313a
+	pop hl
+	ld bc, $0015
+	add hl, bc
+	call Function1313a
+	ld a, [IsInBattle]
+	jr z, .asm_13113
+	ld hl, BattleMonMove1
+	ld bc, $0020
+	ld a, [CurPartyMon]
+	call AddNTimes
+	push hl
+	call Function1313a
+	pop hl
+	ld bc, $0006
+	add hl, bc
+	call Function1313a
+
+.asm_13113
+	ld de, $0020
+	call StartSFX
+	call WaitSFX
+	ld de, $0020
+	call StartSFX
+	call WaitSFX
+	ld hl, $c4c9
+	ld bc, $0812
+	call ClearBox
+	ld hl, $c572
+	ld bc, $0109
+	call ClearBox
+	jp $6fe8
+; 1313a
+
+Function1313a: ; 1313a
+	push hl
+	ld a, [$cfa9]
+	dec a
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld d, h
+	ld e, l
+	pop hl
+	ld a, [$d0e3]
+	dec a
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [de]
+	ld b, [hl]
+	ld [hl], a
+	ld a, b
+	ld [de], a
+	ret
+; 13154
+
+Function13154: ; 13154
+	xor a
+	ld [$d0e3], a
+	ld hl, $cfa5
+	res 6, [hl]
+	call ClearSprites
+	jp ClearTileMap
+; 13163
+
+INCBIN "baserom.gbc", $13163, $13172 - $13163
+
+Function13172: ; 13172
+	call WhiteBGMap
+	call ClearTileMap
+	call ClearSprites
+	xor a
+	ld [hBGMapMode], a
+	ld a, $3e
+	ld hl, $7571
+	rst FarCall
+	callba Function8e814
+	ld a, [CurPartyMon]
+	ld e, a
+	ld d, $0
+	ld hl, PartySpecies
+	add hl, de
+	ld a, [hl]
+	ld [$d265], a
+	ld e, $2
+	ld a, $23
+	ld hl, $683f
+	rst FarCall
+	ld hl, $c4b4
+	ld b, $9
+	ld c, $12
+	call TextBox
+	ld hl, $c57c
+	ld b, $5
+	ld c, $12
+	call TextBox
+	ld hl, $c4a2
+	ld bc, $0203
+	call ClearBox
+	xor a
+	ld [MonType], a
+	ld hl, PartyMon1Nickname
+	ld a, [CurPartyMon]
+	call GetNick
+	ld hl, $c4b9
+	call PlaceString
+	push bc
+	ld a, $14
+	ld hl, $484a
+	rst FarCall
+	pop hl
+	call PrintLevel
+	ld hl, PlayerHPPal
+	call SetHPPal
+	ld b, $e
+	call GetSGBLayout
+	ld hl, $c4b0
+	ld bc, $0103
+	jp ClearBox
+; 131ef
+
+Function131ef: ; 131ef
+	xor a
+	ld [hBGMapMode], a
+	ld [$d0e3], a
+	ld [MonType], a
+	ld a, $1f
+	call Predef
+	ld hl, TempMonMove1
+	ld de, $d25e
+	ld bc, $0004
+	call CopyBytes
+	ld a, $28
+	ld [Buffer1], a
+	ld hl, $c4de
+	ld a, $20
+	call Predef
+	ld hl, $c4fa
+	ld a, $23
+	call Predef
+	call WaitBGMap
+	call Function32f9
+	ld a, [$d0eb]
+	inc a
+	ld [$cfa3], a
+	ld hl, $c57c
+	ld b, $5
+	ld c, $12
+	jp TextBox
+; 13235
+
+Function13235: ; 13235
+	ld hl, PartyMon1Move1
+	ld bc, $0030
+	ld a, [CurPartyMon]
+	call AddNTimes
+	ld a, [$cfa9]
+	dec a
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [hl]
+	ld [CurSpecies], a
+	ld hl, $c591
+	ld bc, $0512
+	jp ClearBox
+; 13256
+
+Function13256: ; 13256
+	xor a
+	ld [hBGMapMode], a
+	ld hl, $c568
+	ld de, $72ba
+	call PlaceString
+	ld hl, $c57c
+	ld de, $72c2
+	call PlaceString
+	ld hl, $c59c
+	ld de, $72ca
+	call PlaceString
+	ld a, [CurSpecies]
+	ld b, a
+	ld hl, $c592
+	ld a, $2a
+	call Predef
+	ld a, [CurSpecies]
+	dec a
+	ld hl, $5afd
+	ld bc, $0007
+	call AddNTimes
+	ld a, $10
+	call GetFarByte
+	ld hl, $c5a0
+	cp $2
+	jr c, .asm_132a7
+	ld [$d265], a
+	ld de, $d265
+	ld bc, $0103
+	call PrintNum
+	jr .asm_132ad
+
+.asm_132a7
+	ld de, $72cf
+	call PlaceString
+
+.asm_132ad
+	ld hl, $c5b9
+	ld a, $11
+	call Predef
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+; 132ba
+
+INCBIN "baserom.gbc", $132ba, $132d3 - $132ba
+
+Function132d3: ; 132d3
+	call Function132da
+	call Function132fe
+	ret
+; 132da
+
+Function132da: ; 132da
+	ld a, [CurPartyMon]
+	and a
+	ret z
+	ld c, a
+	ld e, a
+	ld d, $0
+	ld hl, PartyCount
+	add hl, de
+.asm_132e7
+	ld a, [hl]
+	and a
+	jr z, .asm_132f3
+	cp $fd
+	jr z, .asm_132f3
+	cp $fc
+	jr c, .asm_132f8
+
+.asm_132f3
+	dec hl
+	dec c
+	jr nz, .asm_132e7
+	ret
+
+.asm_132f8
+	ld hl, $c4b0
+	ld [hl], $71
+	ret
+; 132fe
+
+Function132fe: ; 132fe
+	ld a, [CurPartyMon]
+	inc a
+	ld c, a
+	ld a, [PartyCount]
+	cp c
+	ret z
+	ld e, c
+	ld d, $0
+	ld hl, PartySpecies
+	add hl, de
+.asm_1330f
+	ld a, [hl]
+	cp $ff
+	ret z
+	and a
+	jr z, .asm_1331e
+	cp $fd
+	jr z, .asm_1331e
+	cp $fc
+	jr c, .asm_13321
+
+.asm_1331e
+	inc hl
+	jr .asm_1330f
+
+.asm_13321
+	ld hl, $c4b2
+	ld [hl], $ed
+	ret
+; 13327
+
+
 SelectMenu: ; 13327
 
 	call CheckRegisteredItem
@@ -8575,12 +27033,12 @@
 	jp UseRegisteredItem
 
 .NotRegistered
-	call $2e08
+	call Function2e08
 	ld b, BANK(ItemMayBeRegisteredText)
 	ld hl, ItemMayBeRegisteredText
-	call $269a
+	call Function269a
 	call $0a46
-	jp $2dcf
+	jp Function2dcf
 ; 13340
 
 
@@ -8707,17 +27165,17 @@
 ; 133df
 
 .NoFunction ; 133df
-	call $2e08
+	call Function2e08
 	call CantUseItem
-	call $2dcf
+	call Function2dcf
 	and a
 	ret
 ; 133ea
 
 .Current ; 133ea
-	call $2e08
+	call Function2e08
 	call DoItemEffect
-	call $2dcf
+	call Function2dcf
 	and a
 	ret
 ; 133f5
@@ -8726,8 +27184,8 @@
 	call ResetWindow
 	call FadeToMenu
 	call DoItemEffect
-	call $2b3c
-	call $2dcf
+	call Function2b3c
+	call Function2dcf
 	and a
 	ret
 ; 13406
@@ -8753,15 +27211,255 @@
 
 .asm_13425
 	call CantUseItem
-	call $2dcf
+	call Function2dcf
 	and a
 	ret
 ; 1342d
 
 
-INCBIN "baserom.gbc", $1342d, $13b87 - $1342d
+Function1342d: ; 1342d
+	call Function1344a
+	call Function1347d
+	jr c, .asm_13448
+	ld [$d041], a
+	call Function134dd
+	jr c, .asm_13448
+	ld hl, $d041
+	cp [hl]
+	jr z, .asm_13448
+	call Function134c0
+	and a
+	ret
 
+.asm_13448
+	scf
+	ret
+; 1344a
 
+Function1344a: ; 1344a
+	ld a, b
+	ld [EngineBuffer1], a
+	ld a, e
+	ld [CurFruit], a
+	ld a, d
+	ld [MartPointer], a
+	call Function1345a
+	ret
+; 1345a
+
+Function1345a: ; 1345a
+	ld de, CurMart
+	ld bc, $0004
+	ld hl, CurFruit
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [EngineBuffer1]
+	call GetFarByte
+	inc hl
+	ld [de], a
+	inc de
+.asm_1346f
+	ld a, [EngineBuffer1]
+	call GetFarByte
+	ld [de], a
+	inc de
+	add hl, bc
+	cp $ff
+	jr nz, .asm_1346f
+	ret
+; 1347d
+
+Function1347d: ; 1347d
+	ld hl, CurFruit
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [EngineBuffer1]
+	call GetFarByte
+	ld c, a
+	inc hl
+	ld a, [BackupMapGroup]
+	ld d, a
+	ld a, [BackupMapNumber]
+	ld e, a
+	ld b, $0
+.asm_13495
+	ld a, [EngineBuffer1]
+	call GetFarByte
+	cp $ff
+	jr z, .asm_134be
+	inc hl
+	inc hl
+	ld a, [EngineBuffer1]
+	call GetFarByte
+	inc hl
+	cp d
+	jr nz, .asm_134b7
+	ld a, [EngineBuffer1]
+	call GetFarByte
+	inc hl
+	cp e
+	jr nz, .asm_134b8
+	jr .asm_134bb
+
+.asm_134b7
+	inc hl
+
+.asm_134b8
+	inc b
+	jr .asm_13495
+
+.asm_134bb
+	xor a
+	ld a, b
+	ret
+
+.asm_134be
+	scf
+	ret
+; 134c0
+
+Function134c0: ; 134c0
+	push af
+	ld hl, CurFruit
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	inc hl
+	pop af
+	ld bc, $0004
+	call AddNTimes
+	inc hl
+	ld de, $dcac
+	ld a, [EngineBuffer1]
+	ld bc, $0003
+	call FarCopyBytes
+	ret
+; 134dd
+
+Function134dd: ; 134dd
+	call Function1d6e
+	ld hl, $750d
+	call PrintText
+	call Function13512
+	ld hl, $7550
+	call Function1d3c
+	call Function352f
+	call Function1ad2
+	xor a
+	ld [$d0e4], a
+	call Function350c
+	call Function1c17
+	ld a, [$cf73]
+	cp $2
+	jr z, .asm_1350b
+	xor a
+	ld a, [$cf77]
+	ret
+
+.asm_1350b
+	scf
+	ret
+; 1350d
+
+INCBIN "baserom.gbc", $1350d, $13512 - $1350d
+
+
+Function13512: ; 13512
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set 4, [hl]
+	ld hl, TileMap
+	ld b, $4
+	ld c, $8
+	call TextBox
+	ld hl, $c4c9
+	ld de, $7537
+	call PlaceString
+	ld hl, $c4f4
+	call Function1353f
+	pop af
+	ld [Options], a
+	ret
+; 13537
+
+INCBIN "baserom.gbc", $13537, $1353f - $13537
+
+
+Function1353f: ; 1353f
+	push hl
+	ld a, [$d041]
+	ld e, a
+	ld d, $0
+	ld hl, $d0f1
+	add hl, de
+	ld a, [hl]
+	pop de
+	call Function1356b
+	ret
+; 13550
+
+INCBIN "baserom.gbc", $13550, $1356b - $13550
+
+
+Function1356b: ; 1356b
+	push de
+	call Function13575
+	ld d, h
+	ld e, l
+	pop hl
+	jp PlaceString
+; 13575
+
+Function13575: ; 13575
+	push de
+	ld e, a
+	ld d, $0
+	ld hl, $7583
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	pop de
+	ret
+; 13583
+
+INCBIN "baserom.gbc", $13583, $135eb - $13583
+
+UnknownScript_0x135eb: ; 0x135eb
+	writecode $3, $6
+	battlecheck
+	startbattle
+	returnafterbattle
+	copybytetovar $dc79
+	iffalse UnknownScript_0x13603
+	end
+; 0x135f8
+
+INCBIN "baserom.gbc", $135f8, $13603 - $135f8
+
+UnknownScript_0x13603: ; 0x13603
+	playsound $0027
+	loadfont
+	2writetext UnknownText_0x13614
+	closetext
+	loadmovesprites
+	jumpstd $0016
+; 0x1360f
+
+INCBIN "baserom.gbc", $1360f, $13614 - $1360f
+
+UnknownText_0x13614: ; 0x13614
+	text_jump UnknownText_0x1bd2e7, BANK(UnknownText_0x1bd2e7)
+	db $50
+; 0x13619
+
+INCBIN "baserom.gbc", $13619, $13b87 - $13619
+
+
 GetSquareRoot: ; 13b87
 ; Return the square root of de in b.
 
@@ -8798,9 +27496,36 @@
 SECTION "bank5",ROMX,BANK[$5]
 
 
-INCBIN "baserom.gbc", $14000, $14032 - $14000
+Function14000: ; 14000
+	ld a, $a
+	ld [$0000], a
+	call LatchClock
+	ld a, $c
+	ld [Function14000], a
+	ld a, [$a000]
+	set 6, a
+	ld [$a000], a
+	call CloseSRAM
+	ret
+; 14019
 
 
+
+Function14019: ; 14019
+	ld a, $a
+	ld [$0000], a
+	call LatchClock
+	ld a, $c
+	ld [Function14000], a
+	ld a, [$a000]
+	res 6, a
+	ld [$a000], a
+	call CloseSRAM
+	ret
+; 14032
+
+
+
 GetTimeOfDay: ; 14032
 ; get time of day based on the current hour
 	ld a, [hHours] ; hour
@@ -8835,9 +27560,194 @@
 ; 1404c
 
 
-INCBIN "baserom.gbc", $1404c, $14183 - $1404c
+INCBIN "baserom.gbc", $1404c, $14056 - $1404c
 
 
+Function14056: ; 14056
+	call UpdateTime
+	ld hl, $d4ba
+	ld a, [CurDay]
+	ld [hli], a
+	ld a, [hHours]
+	ld [hli], a
+	ld a, [hMinutes]
+	ld [hli], a
+	ld a, [hSeconds]
+	ld [hli], a
+	ret
+; 1406a
+
+Function1406a: ; 1406a
+	ld a, $a
+	ld [$0000], a
+	call LatchClock
+	ld hl, $a000
+	ld a, $c
+	ld [Function14000], a
+	res 7, [hl]
+	ld a, $0
+	ld [Function14000], a
+	xor a
+	ld [$ac60], a
+	call CloseSRAM
+	ret
+; 14089
+
+
+
+StartClock: ; 14089
+	call GetClock
+	call Function1409b
+	call FixDays
+	jr nc, .asm_14097
+	call Function6d3
+
+.asm_14097
+	call Function14019
+	ret
+; 1409b
+
+Function1409b: ; 1409b
+	ld hl, hRTCDayHi
+	bit 7, [hl]
+	jr nz, .asm_140a8
+	bit 6, [hl]
+	jr nz, .asm_140a8
+	xor a
+	ret
+
+.asm_140a8
+	ld a, $80
+	call Function6d3
+	ret
+; 140ae
+
+Function140ae: ; 140ae
+	call $06e3
+	ld c, a
+	and $c0
+	jr nz, .asm_140c8
+	ld a, c
+	and $20
+	jr z, .asm_140eb
+	call UpdateTime
+	ld a, [$d4ba]
+	ld b, a
+	ld a, [CurDay]
+	cp b
+	jr c, .asm_140eb
+
+.asm_140c8
+	ld a, $4
+	ld hl, $53da
+	rst FarCall
+	ld a, $5c
+	ld hl, $4923
+	rst FarCall
+	ld a, $5
+	call GetSRAMBank
+	ld a, [$aa8c]
+	inc a
+	ld [$aa8c], a
+	ld a, [$b2fa]
+	inc a
+	ld [$b2fa], a
+	call CloseSRAM
+	ret
+
+.asm_140eb
+	xor a
+	ret
+; 140ed
+
+
+
+Function140ed: ; 140ed
+	call GetClock
+	call FixDays
+	ld hl, hRTCSeconds
+	ld de, StartSecond
+	ld a, [$d089]
+	sub [hl]
+	dec hl
+	jr nc, .asm_14102
+	add $3c
+
+.asm_14102
+	ld [de], a
+	dec de
+	ld a, [$d088]
+	sbc [hl]
+	dec hl
+	jr nc, .asm_1410d
+	add $3c
+
+.asm_1410d
+	ld [de], a
+	dec de
+	ld a, [$d087]
+	sbc [hl]
+	dec hl
+	jr nc, .asm_14118
+	add $18
+
+.asm_14118
+	ld [de], a
+	dec de
+	ld a, [StringBuffer2]
+	sbc [hl]
+	dec hl
+	jr nc, .asm_14128
+	add $8c
+	ld c, $7
+	call SimpleDivide
+
+.asm_14128
+	ld [de], a
+	ret
+; 1412a
+
+Function1412a: ; 1412a
+	ld a, $1
+	ld [rVBK], a
+	call Get2bpp
+	xor a
+	ld [rVBK], a
+	ret
+; 14135
+
+Function14135: ; 14135
+	call GetPlayerSprite
+	ld a, [UsedSprites]
+	ld [$ffbd], a
+	ld a, [$d155]
+	ld [$ffbe], a
+	call Function143c8
+	ret
+; 14146
+
+INCBIN "baserom.gbc", $14146, $14168 - $14146
+
+
+Function14168: ; 14168
+	call Function1416f
+	call Function14209
+	ret
+; 1416f
+
+Function1416f: ; 1416f
+	xor a
+	ld bc, $0040
+	ld hl, UsedSprites
+	call ByteFill
+	call GetPlayerSprite
+	call AddMapSprites
+	call Function142db
+	ret
+; 14183
+
+
+
 GetPlayerSprite: ; 14183
 ; Get Chris or Kris's sprite.
 
@@ -8944,9 +27854,37 @@
 ; 14209
 
 
-INCBIN "baserom.gbc", $14209, $14236 - $14209
+Function14209: ; 14209
+	ld a, $4
+	call Function263b
+	call Function1439b
+	call Function14215
+	ret
+; 14215
 
+Function14215: ; 14215
+	ld a, [$d13e]
+	bit 6, a
+	ret nz
+	ld c, $8
+	ld a, $5
+	ld hl, $442f
+	rst FarCall
+	call GetMapPermission
+	call CheckOutdoorMap
+	ld c, $b
+	jr z, .asm_1422f
+	ld c, $a
 
+.asm_1422f
+	ld a, $5
+	ld hl, $442f
+	rst FarCall
+	ret
+; 14236
+
+
+
 SafeGetSprite: ; 14236
 	push hl
 	call GetSprite
@@ -9320,9 +28258,142 @@
 ; 1439b
 
 
-INCBIN "baserom.gbc", $1439b, $14495 - $1439b
+Function1439b: ; 1439b
+	ld hl, UsedSprites
+	ld c, $20
+.asm_143a0
+	ld a, [$d13e]
+	res 5, a
+	ld [$d13e], a
+	ld a, [hli]
+	and a
+	jr z, .asm_143c7
+	ld [$ffbd], a
+	ld a, [hli]
+	ld [$ffbe], a
+	bit 7, a
+	jr z, .asm_143bd
+	ld a, [$d13e]
+	set 5, a
+	ld [$d13e], a
 
+.asm_143bd
+	push bc
+	push hl
+	call Function143c8
+	pop hl
+	pop bc
+	dec c
+	jr nz, .asm_143a0
 
+.asm_143c7
+	ret
+; 143c8
+
+Function143c8: ; 143c8
+	ld a, [$ffbd]
+	call SafeGetSprite
+	ld a, [$ffbe]
+	call Function14406
+	push hl
+	push de
+	push bc
+	ld a, [$d13e]
+	bit 7, a
+	jr nz, .asm_143df
+	call Function14418
+
+.asm_143df
+	pop bc
+	ld l, c
+	ld h, $0
+	add hl, hl
+	add hl, hl
+	add hl, hl
+	add hl, hl
+	pop de
+	add hl, de
+	ld d, h
+	ld e, l
+	pop hl
+	ld a, [$d13e]
+	bit 5, a
+	jr nz, .asm_14405
+	bit 6, a
+	jr nz, .asm_14405
+	ld a, [$ffbd]
+	call Function142a7
+	jr c, .asm_14405
+	ld a, h
+	add $8
+	ld h, a
+	call Function14418
+
+.asm_14405
+	ret
+; 14406
+
+Function14406: ; 14406
+	and $7f
+	ld l, a
+	ld h, $0
+	add hl, hl
+	add hl, hl
+	add hl, hl
+	add hl, hl
+	ld a, l
+	add $0
+	ld l, a
+	ld a, h
+	adc $80
+	ld h, a
+	ret
+; 14418
+
+Function14418: ; 14418
+	ld a, [rVBK]
+	push af
+	ld a, [$d13e]
+	bit 5, a
+	ld a, $1
+	jr z, .asm_14426
+	ld a, $0
+
+.asm_14426
+	ld [rVBK], a
+	call Get2bpp
+	pop af
+	ld [rVBK], a
+	ret
+; 1442f
+
+Function1442f: ; 1442f
+	ld a, c
+	ld bc, $0006
+	ld hl, $444d
+	call AddNTimes
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	inc hl
+	ld c, [hl]
+	swap c
+	inc hl
+	ld b, [hl]
+	inc hl
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, c
+	and a
+	ret z
+	call Function1412a
+	ret
+; 1444d
+
+INCBIN "baserom.gbc", $1444d, $14495 - $1444d
+
+
 SpriteMons: ; 14495
 	db UNOWN
 	db GEODUDE
@@ -10064,9 +29135,672 @@
 ; 1499a
 
 
-INCBIN "baserom.gbc", $1499a, $152ab - $1499a
+Function1499a: ; 1499a
+	ld a, [StandingTile]
+	cp $60
+	jr z, .asm_149ad
+	cp $68
+	jr z, .asm_149ad
+	and $f0
+	cp $70
+	jr z, .asm_149ad
+	and a
+	ret
 
+.asm_149ad
+	scf
+	ret
+; 149af
 
+Function149af: ; 149af
+	ld a, [StandingTile]
+	cp $70
+	jr z, .asm_149c4
+	cp $76
+	jr z, .asm_149c4
+	cp $78
+	jr z, .asm_149c4
+	cp $7e
+	jr z, .asm_149c4
+	scf
+	ret
+
+.asm_149c4
+	xor a
+	ret
+; 149c6
+
+INCBIN "baserom.gbc", $149c6, $149dd - $149c6
+
+Function149dd: ; 149dd
+	ld a, [StandingTile]
+	ld hl, $49ea
+	ld de, $0001
+	call IsInArray
+	ret
+; 149ea
+
+INCBIN "baserom.gbc", $149ea, $149f5 - $149ea
+
+Function149f5: ; 149f5
+	ld a, c
+	ld hl, $4a00
+	ld de, $0001
+	call IsInArray
+	ret
+; 14a00
+
+INCBIN "baserom.gbc", $14a00, $14a07 - $14a00
+
+
+Function14a07: ; 14a07
+	ld a, [StandingTile]
+	ld de, $001f
+	cp $71
+	ret z
+	ld de, $0013
+	cp $7c
+	ret z
+	ld de, $0023
+	ret
+; 14a1a
+
+INCBIN "baserom.gbc", $14a1a, $14b5f - $14a1a
+
+
+Function14b5f: ; 14b5f
+	ld a, $1
+	call GetSRAMBank
+	ld hl, $bdd9
+	ld de, $be3b
+	ld bc, $0b1a
+.asm_14b6d
+	ld a, [hld]
+	ld [de], a
+	dec de
+	dec bc
+	ld a, c
+	or b
+	jr nz, .asm_14b6d
+	ld hl, OverworldMap
+	ld de, $b2c0
+	ld bc, $0062
+	call CopyBytes
+	call CloseSRAM
+	ret
+; 14b85
+
+Function14b85: ; 14b85
+	call Function14c10
+	ret
+; 14b89
+
+INCBIN "baserom.gbc", $14b89, $14c10 - $14b89
+
+
+Function14c10: ; 14c10
+	ld a, $1
+	ld [$cfcd], a
+	ld a, $5
+	ld hl, $4056
+	rst FarCall
+	ld a, $41
+	ld hl, $50d9
+	rst FarCall
+	call Function14da9
+	call Function14dbb
+	call Function14dd7
+	call Function14df7
+	call Function14e0c
+	call Function14e13
+	call Function14e2d
+	call Function14e40
+	call Function14e55
+	call Function14e76
+	call Function14e8b
+	call Function14c6b
+	ld a, $11
+	ld hl, $4725
+	rst FarCall
+	ld a, $41
+	ld hl, $6187
+	rst FarCall
+	ld a, $5
+	ld hl, $406a
+	rst FarCall
+	ld a, $1
+	call GetSRAMBank
+	ld a, [$be45]
+	cp $4
+	jr nz, .asm_14c67
+	xor a
+	ld [$be45], a
+
+.asm_14c67
+	call CloseSRAM
+	ret
+; 14c6b
+
+Function14c6b: ; 14c6b
+	call Function14c90
+	ld a, $0
+	call GetSRAMBank
+	ld a, [$bf10]
+	ld e, a
+	ld a, [$bf11]
+	ld d, a
+	or e
+	jr z, .asm_14c84
+	ld a, e
+	sub l
+	ld a, d
+	sbc h
+	jr c, .asm_14c8c
+
+.asm_14c84
+	ld a, l
+	ld [$bf10], a
+	ld a, h
+	ld [$bf11], a
+
+.asm_14c8c
+	call CloseSRAM
+	ret
+; 14c90
+
+Function14c90: ; 14c90
+	ld hl, $c000
+.asm_14c93
+	ld a, [hl]
+	or a
+	ret nz
+	inc hl
+	jr .asm_14c93
+; 14c99
+
+INCBIN "baserom.gbc", $14c99, $14cbb - $14c99
+
+
+Function14cbb: ; 14cbb
+	call Function151fb
+	call Function14d06
+	call Function14ce2
+	call Function14cf4
+	call Function14d68
+	call Function14d5c
+	ld a, $0
+	call GetSRAMBank
+	xor a
+	ld [$bf10], a
+	ld [$bf11], a
+	call CloseSRAM
+	ld a, $1
+	ld [$d4b4], a
+	ret
+; 14ce2
+
+Function14ce2: ; 14ce2
+	ld a, $1
+	call GetSRAMBank
+	ld hl, $b260
+	ld bc, $0060
+	xor a
+	call ByteFill
+	jp CloseSRAM
+; 14cf4
+
+Function14cf4: ; 14cf4
+	ld a, $0
+	call GetSRAMBank
+	ld hl, $abe4
+	ld bc, $004c
+	xor a
+	call ByteFill
+	jp CloseSRAM
+; 14d06
+
+Function14d06: ; 14d06
+	ld a, $1
+	call GetSRAMBank
+	ld hl, $b2c0
+	ld bc, $0b7c
+	xor a
+	call ByteFill
+	jp CloseSRAM
+; 14d18
+
+INCBIN "baserom.gbc", $14d18, $14d5c - $14d18
+
+
+Function14d5c: ; 14d5c
+	ld a, $1
+	call GetSRAMBank
+	xor a
+	ld [$be45], a
+	jp CloseSRAM
+; 14d68
+
+Function14d68: ; 14d68
+	call Function1509a
+	ret
+; 14d6c
+
+INCBIN "baserom.gbc", $14d6c, $14da0 - $14d6c
+
+
+Function14da0: ; 14da0
+	ld a, [$d4b4]
+	and a
+	ret nz
+	call Function14cbb
+	ret
+; 14da9
+
+Function14da9: ; 14da9
+	ld a, $1
+	call GetSRAMBank
+	ld a, $63
+	ld [$a008], a
+	ld a, $7f
+	ld [$ad0f], a
+	jp CloseSRAM
+; 14dbb
+
+Function14dbb: ; 14dbb
+	ld a, $1
+	call GetSRAMBank
+	ld hl, Options
+	ld de, $a000
+	ld bc, $0008
+	call CopyBytes
+	ld a, [Options]
+	and $ef
+	ld [$a000], a
+	jp CloseSRAM
+; 14dd7
+
+Function14dd7: ; 14dd7
+	ld a, $1
+	call GetSRAMBank
+	ld hl, PlayerID
+	ld de, $a009
+	ld bc, $082a
+	call CopyBytes
+	ld hl, FlypointPerms
+	ld de, $a833
+	ld bc, $0032
+	call CopyBytes
+	jp CloseSRAM
+; 14df7
+
+Function14df7: ; 14df7
+	ld a, $1
+	call GetSRAMBank
+	ld hl, PartyCount
+	ld de, $a865
+	ld bc, $031e
+	call CopyBytes
+	call CloseSRAM
+	ret
+; 14e0c
+
+Function14e0c: ; 14e0c
+	call Function150d8
+	call Function150f9
+	ret
+; 14e13
+
+Function14e13: ; 14e13
+	ld hl, $a009
+	ld bc, $0b7a
+	ld a, $1
+	call GetSRAMBank
+	call Function15273
+	ld a, e
+	ld [$ad0d], a
+	ld a, d
+	ld [$ad0e], a
+	call CloseSRAM
+	ret
+; 14e2d
+
+Function14e2d: ; 14e2d
+	ld a, $0
+	call GetSRAMBank
+	ld a, $63
+	ld [$b208], a
+	ld a, $7f
+	ld [$bf0f], a
+	call CloseSRAM
+	ret
+; 14e40
+
+Function14e40: ; 14e40
+	ld a, $0
+	call GetSRAMBank
+	ld hl, Options
+	ld de, $b200
+	ld bc, $0008
+	call CopyBytes
+	call CloseSRAM
+	ret
+; 14e55
+
+Function14e55: ; 14e55
+	ld a, $0
+	call GetSRAMBank
+	ld hl, PlayerID
+	ld de, $b209
+	ld bc, $082a
+	call CopyBytes
+	ld hl, FlypointPerms
+	ld de, $ba33
+	ld bc, $0032
+	call CopyBytes
+	call CloseSRAM
+	ret
+; 14e76
+
+Function14e76: ; 14e76
+	ld a, $0
+	call GetSRAMBank
+	ld hl, PartyCount
+	ld de, $ba65
+	ld bc, $031e
+	call CopyBytes
+	call CloseSRAM
+	ret
+; 14e8b
+
+Function14e8b: ; 14e8b
+	ld hl, $b209
+	ld bc, $0b7a
+	ld a, $0
+	call GetSRAMBank
+	call Function15273
+	ld a, e
+	ld [$bf0d], a
+	ld a, d
+	ld [$bf0e], a
+	call CloseSRAM
+	ret
+; 14ea5
+
+INCBIN "baserom.gbc", $14ea5, $14f1c - $14ea5
+
+
+Function14f1c: ; 14f1c
+	xor a
+	ld [$cfcd], a
+	call Function14f84
+	ld a, [$cfcd]
+	and a
+	jr z, .asm_14f46
+	ld a, $1
+	call GetSRAMBank
+	ld hl, $a044
+	ld de, StartDay
+	ld bc, $0008
+	call CopyBytes
+	ld hl, $a3da
+	ld de, StatusFlags
+	ld a, [hl]
+	ld [de], a
+	call CloseSRAM
+	ret
+
+.asm_14f46
+	call Function14faf
+	ld a, [$cfcd]
+	and a
+	jr z, .asm_14f6c
+	ld a, $0
+	call GetSRAMBank
+	ld hl, $b244
+	ld de, StartDay
+	ld bc, $0008
+	call CopyBytes
+	ld hl, $b5da
+	ld de, StatusFlags
+	ld a, [hl]
+	ld [de], a
+	call CloseSRAM
+	ret
+
+.asm_14f6c
+	ld hl, $4f7c
+	ld de, Options
+	ld bc, $0008
+	call CopyBytes
+	call Function67e
+	ret
+; 14f7c
+
+INCBIN "baserom.gbc", $14f7c, $14f84 - $14f7c
+
+
+Function14f84: ; 14f84
+	ld a, $1
+	call GetSRAMBank
+	ld a, [$a008]
+	cp $63
+	jr nz, .asm_14fab
+	ld a, [$ad0f]
+	cp $7f
+	jr nz, .asm_14fab
+	ld hl, $a000
+	ld de, Options
+	ld bc, $0008
+	call CopyBytes
+	call CloseSRAM
+	ld a, $1
+	ld [$cfcd], a
+
+.asm_14fab
+	call CloseSRAM
+	ret
+; 14faf
+
+Function14faf: ; 14faf
+	ld a, $0
+	call GetSRAMBank
+	ld a, [$b208]
+	cp $63
+	jr nz, .asm_14fd3
+	ld a, [$bf0f]
+	cp $7f
+	jr nz, .asm_14fd3
+	ld hl, $b200
+	ld de, Options
+	ld bc, $0008
+	call CopyBytes
+	ld a, $2
+	ld [$cfcd], a
+
+.asm_14fd3
+	call CloseSRAM
+	ret
+; 14fd7
+
+INCBIN "baserom.gbc", $14fd7, $1509a - $14fd7
+
+
+Function1509a: ; 1509a
+	ld a, $1
+	call GetSRAMBank
+	ld hl, PlayerGender
+	ld de, $be3d
+	ld bc, $0007
+	call CopyBytes
+	ld hl, $d479
+	ld a, [hli]
+	ld [$a60e], a
+	ld a, [hli]
+	ld [$a60f], a
+	jp CloseSRAM
+; 150b9
+
+INCBIN "baserom.gbc", $150b9, $150d8 - $150b9
+
+
+Function150d8: ; 150d8
+	ld a, [$db72]
+	cp $e
+	jr c, .asm_150e3
+	xor a
+	ld [$db72], a
+
+.asm_150e3
+	ld e, a
+	ld d, $0
+	ld hl, $522d
+	add hl, de
+	add hl, de
+	add hl, de
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	push af
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	pop af
+	ret
+; 150f9
+
+Function150f9: ; 150f9
+	push hl
+	push af
+	push de
+	ld a, $1
+	call GetSRAMBank
+	ld hl, $ad10
+	ld de, EnemyMoveAnimation
+	ld bc, $01e0
+	call CopyBytes
+	call CloseSRAM
+	pop de
+	pop af
+	push af
+	push de
+	call GetSRAMBank
+	ld hl, EnemyMoveAnimation
+	ld bc, $01e0
+	call CopyBytes
+	call CloseSRAM
+	ld a, $1
+	call GetSRAMBank
+	ld hl, $aef0
+	ld de, EnemyMoveAnimation
+	ld bc, $01e0
+	call CopyBytes
+	call CloseSRAM
+	pop de
+	pop af
+	ld hl, $01e0
+	add hl, de
+	ld e, l
+	ld d, h
+	push af
+	push de
+	call GetSRAMBank
+	ld hl, EnemyMoveAnimation
+	ld bc, $01e0
+	call CopyBytes
+	call CloseSRAM
+	ld a, $1
+	call GetSRAMBank
+	ld hl, $b0d0
+	ld de, EnemyMoveAnimation
+	ld bc, $008e
+	call CopyBytes
+	call CloseSRAM
+	pop de
+	pop af
+	ld hl, $01e0
+	add hl, de
+	ld e, l
+	ld d, h
+	call GetSRAMBank
+	ld hl, EnemyMoveAnimation
+	ld bc, $008e
+	call CopyBytes
+	call CloseSRAM
+	pop hl
+	ret
+; 1517d
+
+INCBIN "baserom.gbc", $1517d, $151fb - $1517d
+
+
+Function151fb: ; 151fb
+	ld hl, $522d
+	ld c, $e
+.asm_15200
+	push bc
+	ld a, [hli]
+	call GetSRAMBank
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	xor a
+	ld [de], a
+	inc de
+	ld a, $ff
+	ld [de], a
+	inc de
+	ld bc, $044c
+.asm_15213
+	xor a
+	ld [de], a
+	inc de
+	dec bc
+	ld a, b
+	or c
+	jr nz, .asm_15213
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	ld a, $ff
+	ld [de], a
+	inc de
+	xor a
+	ld [de], a
+	call CloseSRAM
+	pop bc
+	dec c
+	jr nz, .asm_15200
+	ret
+; 1522d
+
+INCBIN "baserom.gbc", $1522d, $15273 - $1522d
+
+
+Function15273: ; 15273
+	ld de, $0000
+.asm_15276
+	ld a, [hli]
+	add e
+	ld e, a
+	ld a, $0
+	adc d
+	ld d, a
+	dec bc
+	ld a, b
+	or c
+	jr nz, .asm_15276
+	ret
+; 15283
+
+INCBIN "baserom.gbc", $15283, $152ab - $15283
+
+
 BlackoutPoints: ; 0x152ab
 	db GROUP_KRISS_HOUSE_2F, MAP_KRISS_HOUSE_2F, 3, 3
 	db GROUP_VIRIDIAN_POKECENTER_1F, MAP_VIRIDIAN_POKECENTER_1F, 5, 3 ; unused
@@ -10098,8 +29832,94 @@
 	db GROUP_FAST_SHIP_CABINS_SW_SSW_NW, MAP_FAST_SHIP_CABINS_SW_SSW_NW, 6, 2
 	db $ff, $ff, $ff, $ff
 
-INCBIN "baserom.gbc", $1531f, $15736 - $1531f
+INCBIN "baserom.gbc", $1531f, $15344 - $1531f
 
+Function15344: ; 15344
+	ld hl, BlackoutPoints
+	ld c, $0
+.asm_15349
+	ld a, [hl]
+	cp $ff
+	jr z, .asm_1535f
+	cp d
+	jr nz, .asm_15356
+	inc hl
+	ld a, [hld]
+	cp e
+	jr z, .asm_15361
+
+.asm_15356
+	push bc
+	ld bc, $0004
+	add hl, bc
+	pop bc
+	inc c
+	jr .asm_15349
+
+.asm_1535f
+	and a
+	ret
+
+.asm_15361
+	scf
+	ret
+; 15363
+
+
+Function15363: ; 15363
+	ld a, [$ff9f]
+	and $f
+	dec a
+	ld c, a
+	ld b, $0
+	ld hl, $5377
+	add hl, bc
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call Function1541d
+	ret
+; 15377
+
+INCBIN "baserom.gbc", $15377, $1541d - $15377
+
+
+Function1541d: ; 1541d
+.asm_1541d
+	ld a, [hli]
+	cp $ff
+	ret z
+	push hl
+	ld c, a
+	ld b, $0
+	ld hl, $5440
+	add hl, bc
+	add hl, bc
+	add hl, bc
+	ld b, [hl]
+	inc hl
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	bit 7, b
+	jr z, .asm_15439
+	pop de
+	ld a, [de]
+	ld c, a
+	inc de
+	push de
+
+.asm_15439
+	ld a, b
+	and $7f
+	rst FarCall
+	pop hl
+	jr .asm_1541d
+; 15440
+
+INCBIN "baserom.gbc", $15440, $15736 - $15440
+
 KrissPCMenuData: ; 0x15736
 	db %01000000
 	db  0,  0 ; top left corner coords (y, x)
@@ -10162,7 +29982,7 @@
 INCBIN "baserom.gbc", $157bb, $157d1 - $157bb
 
 KrisWithdrawItemMenu: ; 0x157d1
-	call $1d6e
+	call Function1d6e
 	ld a, BANK(ClearPCItemScreen)
 	ld hl, ClearPCItemScreen
 	rst $8
@@ -10173,7 +29993,7 @@
 	jr .asm_157da
 
 .asm_157e4
-	call $2b3c
+	call Function2b3c
 	xor a
 	ret
 ; 0x157e9
@@ -10194,7 +30014,7 @@
 
 .askquantity
 	ld hl, .HowManyText
-	call $1d4f
+	call Function1d4f
 	ld a, $9
 	ld hl, $4fbf
 	rst $8
@@ -10208,7 +30028,7 @@
 	ld a, [$d107]
 	ld [Buffer2], a
 	ld hl, NumItems
-	call $2f66
+	call Function2f66
 	jr nc, .PackFull
 	ld a, [Buffer1]
 	ld [$d10c], a
@@ -10215,11 +30035,11 @@
 	ld a, [Buffer2]
 	ld [$d107], a
 	ld hl, $d8f1
-	call $2f53
+	call Function2f53
 	ld a, $3b
 	call Predef
 	ld hl, .WithdrewText
-	call $1d4f
+	call Function1d4f
 	xor a
 	ld [hBGMapMode], a
 	call Function1c07
@@ -10227,7 +30047,7 @@
 
 .PackFull
 	ld hl, .NoRoomText
-	call $1d67
+	call Function1d67
 	ret
 
 .done
@@ -10248,7 +30068,7 @@
 
 
 KrisTossItemMenu: ; 0x1585f
-	call $1d6e
+	call Function1d6e
 	ld a, BANK(ClearPCItemScreen)
 	ld hl, ClearPCItemScreen
 	rst $8
@@ -10262,7 +30082,7 @@
 	jr .asm_15868
 
 .asm_15878
-	call $2b3c
+	call Function2b3c
 	xor a
 	ret
 ; 0x1587d
@@ -10291,7 +30111,7 @@
 	call Function158b8
 	jr c, .asm_158b6
 	call Function2ed3
-	call $1d6e
+	call Function1d6e
 	ld a, $4
 	ld hl, $46a5
 	rst $8
@@ -10309,7 +30129,7 @@
 	jr .asm_1589c
 
 .asm_158b3
-	call $2b3c
+	call Function2b3c
 
 .asm_158b6
 	xor a
@@ -10322,7 +30142,7 @@
 	rst $8
 	ret nc
 	ld hl, Text158c7
-	call $1d67
+	call Function1d67
 	scf
 	ret
 ; 0x158c7
@@ -10385,13 +30205,13 @@
 
 .asm_1591d
 	ld hl, .HowManyText
-	call $1d4f
+	call Function1d4f
 	ld a, $9
 	ld hl, $4fbf
 	rst $8
 	push af
-	call $1c07
-	call $1c07
+	call Function1c07
+	call Function1c07
 	pop af
 	jr c, .asm_1596c
 
@@ -10401,7 +30221,7 @@
 	ld a, [$d107]
 	ld [Buffer2], a
 	ld hl, $d8f1
-	call $2f66
+	call Function2f66
 	jr nc, .asm_15965
 	ld a, [Buffer1]
 	ld [$d10c], a
@@ -10408,7 +30228,7 @@
 	ld a, [Buffer2]
 	ld [$d107], a
 	ld hl, NumItems
-	call $2f53
+	call Function2f53
 	ld a, $3b
 	call Predef
 	ld hl, .DepositText
@@ -10456,7 +30276,7 @@
 	ld a, $0
 	ld [$c2ce], a
 	ld hl, MenuData15a08
-	call $1d3c
+	call Function1d3c
 	hlcoord 0, 0
 	ld b, $a
 	ld c, $12
@@ -10465,7 +30285,7 @@
 	ld [$cf88], a
 	ld a, [$d0dd]
 	ld [$d0e4], a
-	call $350c
+	call Function350c
 	ld a, [$d0e4]
 	ld [$d0dd], a
 	ld a, [$cfa9]
@@ -10514,7 +30334,7 @@
 	ld a, $9
 	ld hl, $4706
 	rst $8
-	call $1bee
+	call Function1bee
 	and a
 	ret
 
@@ -10539,9 +30359,1549 @@
 	dbw BANK(Function24ac3), Function24ac3
 	dbw BANK(Function244c3), Function244c3
 
-INCBIN "baserom.gbc", $15a20, $174ba - $15a20
+INCBIN "baserom.gbc", $15a20, $15a45 - $15a20
 
 
+OpenMartDialog: ; 15a45
+	call GetMart
+	ld a, c
+	ld [EngineBuffer1], a
+	call Function15b10
+	ld a, [EngineBuffer1]
+	ld hl, .dialogs
+	rst JumpTable
+	ret
+; 15a57
+
+.dialogs
+       dw MartDialog
+       dw HerbShop
+       dw BargainShop
+       dw Pharmacist
+       dw VendingMachine
+; 15a61
+
+MartDialog: ; 15a61
+	ld a, 0
+	ld [EngineBuffer1], a
+	xor a
+	ld [MovementAnimation], a
+	call Function15b47
+	ret
+; 15a6e
+
+HerbShop: ; 15a6e
+	call ReadMart
+	call Function1d6e
+	ld hl, $5e4a
+	call Function15fcd
+	call Function15c62
+	ld hl, $5e68
+	call Function15fcd
+	ret
+; 15a84
+
+BargainShop: ; 15a84
+	ld b, $5
+	ld de, $5c51
+	call Function15b10
+	call Function15c25
+	call Function1d6e
+	ld hl, $5e6d
+	call Function15fcd
+	call Function15c62
+	ld hl, WalkingDirection
+	ld a, [hli]
+	or [hl]
+	jr z, .asm_15aa7
+	ld hl, $dc1e
+	set 6, [hl]
+
+.asm_15aa7
+	ld hl, $5e8b
+	call Function15fcd
+	ret
+; 15aae
+
+Pharmacist: ; 15aae
+	call ReadMart
+	call Function1d6e
+	ld hl, $5e90
+	call Function15fcd
+	call Function15c62
+	ld hl, $5eae
+	call Function15fcd
+	ret
+; 15ac4
+
+VendingMachine: ; 15ac4
+	ld b, $5
+	ld de, $5aee
+	ld hl, StatusFlags
+	bit 6, [hl]
+	jr z, .asm_15ad5
+	ld b, $5
+	ld de, $5aff
+
+.asm_15ad5
+	call Function15b10
+	call Function15c25
+	call Function1d6e
+	ld hl, UnknownText_0x15f83
+	call Function15fcd
+	call Function15c62
+	ld hl, $5fb4
+	call Function15fcd
+	ret
+; 15aee
+
+INCBIN "baserom.gbc", $15aee, $15b10 - $15aee
+
+
+Function15b10: ; 15b10
+	ld a, b
+	ld [CurFruit], a
+	ld a, e
+	ld [MartPointer], a
+	ld a, d
+	ld [MartPointer + 1], a
+	ld hl, CurMart
+	xor a
+	ld bc, CurMartEnd - CurMart
+	call ByteFill
+	xor a
+	ld [MovementAnimation], a
+	ld [WalkingDirection], a
+	ld [FacingDirection], a
+	ret
+; 15b31
+
+GetMart: ; 15b31
+	ld a, e
+	cp (MartsEnd - Marts) / 2
+	jr c, .IsAMart
+	ld b, $5
+	ld de, DefaultMart
+	ret
+
+.IsAMart
+	ld hl, Marts
+	add hl, de
+	add hl, de
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld b, $5
+	ret
+; 15b47
+
+Function15b47: ; 15b47
+.asm_15b47
+	ld a, [MovementAnimation]
+	ld hl, .table_15b56
+	rst JumpTable
+	ld [MovementAnimation], a
+	cp $ff
+	jr nz, .asm_15b47
+	ret
+
+.table_15b56
+       dw Function15b62
+       dw Function15b6e
+       dw Function15b8d
+       dw Function15b9a
+       dw Function15ba3
+       dw Function15baf
+; 15b62
+
+Function15b62: ; 15b62
+	call Function1d6e
+	ld hl, UnknownText_0x15f83
+	call PrintText
+	ld a, $1
+	ret
+; 15b6e
+
+Function15b6e: ; 15b6e
+	ld hl, $5f88
+	call Function1d3c
+	call Function1d81
+	jr c, .asm_15b84
+	ld a, [$cfa9]
+	cp $1
+	jr z, .asm_15b87
+	cp $2
+	jr z, .asm_15b8a
+.asm_15b84
+	ld a, $4
+	ret
+.asm_15b87
+	ld a, $2
+	ret
+.asm_15b8a
+	ld a, $3
+	ret
+; 15b8d
+
+Function15b8d: ; 15b8d
+	call Function1c07
+	call ReadMart
+	call Function15c62
+	and a
+	ld a, $5
+	ret
+; 15b9a
+
+Function15b9a: ; 15b9a
+	call Function1c07
+	call Function15eb3
+	ld a, $5
+	ret
+; 15ba3
+
+Function15ba3: ; 15ba3
+	call Function1c07
+	ld hl, $5fb4
+	call Function15fcd
+	ld a, $ff
+	ret
+; 15baf
+
+Function15baf: ; 15baf
+	call Function1d6e
+	ld hl, UnknownText_0x15fb9
+	call PrintText
+	ld a, $1
+	ret
+; 15bbb
+
+ReadMart: ; 15bbb
+	ld hl, MartPointer
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, CurMart
+.CopyMart
+	ld a, [CurFruit]
+	call GetFarByte
+	ld [de], a
+	inc hl
+	inc de
+	cp $ff
+	jr nz, .CopyMart
+	ld hl, DefaultFlypoint
+	ld de, CurMart + 1
+.ReadMartItem
+	ld a, [de]
+	inc de
+	cp $ff
+	jr z, .asm_15be4
+	push de
+	call GetMartItemPrice
+	pop de
+	jr .ReadMartItem
+
+.asm_15be4
+	ret
+; 15be5
+
+GetMartItemPrice: ; 15be5
+; Return the price of item a in BCD at hl and in tiles at StringBuffer1.
+	push hl
+	ld [CurItem], a
+	callba GetItemPrice
+	pop hl
+
+GetMartPrice: ; 15bf0
+; Return price de in BCD at hl and in tiles at StringBuffer1.
+	push hl
+	ld a, d
+	ld [StringBuffer2], a
+	ld a, e
+	ld [StringBuffer2 + 1], a
+	ld hl, StringBuffer1
+	ld de, StringBuffer2
+	ld bc, $82 << 8 + 6 ; 6 digits
+	call PrintNum
+	pop hl
+
+	ld de, StringBuffer1
+	ld c, 6 / 2 ; 6 digits
+.asm_15c0b
+	call .TileToNum
+	swap a
+	ld b, a
+	call .TileToNum
+	or b
+	ld [hli], a
+	dec c
+	jr nz, .asm_15c0b
+	ret
+; 15c1a
+
+.TileToNum ; 15c1a
+	ld a, [de]
+	inc de
+	cp " "
+	jr nz, .asm_15c22
+	ld a, "0"
+
+.asm_15c22
+	sub "0"
+	ret
+; 15c25
+
+Function15c25: ; 15c25
+	ld hl, MartPointer
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	push hl
+	inc hl
+	ld bc, DefaultFlypoint
+	ld de, CurMart + 1
+.asm_15c33
+	ld a, [hli]
+	ld [de], a
+	inc de
+	cp $ff
+	jr z, .asm_15c4b
+
+	push de
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	push hl
+	ld h, b
+	ld l, c
+	call GetMartPrice
+	ld b, h
+	ld c, l
+	pop hl
+	pop de
+	jr .asm_15c33
+
+.asm_15c4b
+	pop hl
+	ld a, [hl]
+	ld [CurMart], a
+	ret
+; 15c51
+
+INCBIN "baserom.gbc", $15c51, $15c62 - $15c51
+
+
+Function15c62: ; 15c62
+	call FadeToMenu
+	callba Function8000
+	xor a
+	ld [WalkingY], a
+	ld a, 1
+	ld [WalkingX], a
+.asm_15c74
+	call Function15cef
+	jr nc, .asm_15c74
+	call Function2b3c
+	ret
+; 15c7d
+
+Function15c7d: ; 15c7d
+	push af
+	call Function15ca3
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	pop af
+	ld e, a
+	ld d, 0
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call PrintText
+	ret
+; 15c91
+
+Function15c91: ; 15c91
+	call Function15ca3
+	inc hl
+	inc hl
+	ld a, [hl]
+	and a
+	jp z, Function15d83
+	cp 1
+	jp z, Function15da5
+	jp Function15de2
+; 15ca3
+
+Function15ca3: ; 15ca3
+	ld a, [EngineBuffer1]
+	ld e, a
+	ld d, 0
+	ld hl, .data_15cb0
+	add hl, de
+	add hl, de
+	add hl, de
+	ret
+; 15cb0
+
+.data_15cb0 ; 15cb0
+       dwb $5cbf, 0
+       dwb $5ccb, 0
+       dwb $5cd7, 1
+       dwb $5ce3, 0
+       dwb $5cbf, 2
+; 15cbf
+
+INCBIN "baserom.gbc", $15cbf, $15cef - $15cbf
+
+
+Function15cef: ; 15cef
+	ld a, $9
+	ld hl, $4ae8
+	rst FarCall
+	call Function1ad2
+	ld hl, $5e18
+	call Function1d3c
+	ld a, [WalkingX]
+	ld [$cf88], a
+	ld a, [WalkingY]
+	ld [$d0e4], a
+	call Function350c
+	ld a, [$d0e4]
+	ld [WalkingY], a
+	ld a, [$cfa9]
+	ld [WalkingX], a
+	call SpeechTextBox
+	ld a, [$cf73]
+	cp $2
+	jr z, .asm_15d6d
+	cp $1
+	jr z, .asm_15d27
+
+.asm_15d27
+	call Function15c91
+	jr c, .asm_15d68
+	call Function15d97
+	jr c, .asm_15d68
+	ld de, Money
+	ld bc, $ffc3
+	ld a, $3
+	call Function1600b
+	jr c, .asm_15d79
+	ld hl, NumItems
+	call Function2f66
+	jr nc, .asm_15d6f
+	ld a, [$d107]
+	ld e, a
+	ld d, $0
+	ld b, $1
+	ld hl, WalkingDirection
+	call BitTableFunc
+	call Function15fc3
+	ld de, Money
+	ld bc, $ffc3
+	call Function15ffa
+	ld a, $4
+	call Function15c7d
+	call $0a36
+
+.asm_15d68
+	call SpeechTextBox
+	and a
+	ret
+
+.asm_15d6d
+	scf
+	ret
+
+.asm_15d6f
+	ld a, $3
+	call Function15c7d
+	call $0a36
+	and a
+	ret
+
+.asm_15d79
+	ld a, $2
+	call Function15c7d
+	call $0a36
+	and a
+	ret
+; 15d83
+
+Function15d83: ; 15d83
+	ld a, $63
+	ld [$d10d], a
+	ld a, $0
+	call Function15c7d
+	ld a, $9
+	ld hl, $4fc9
+	rst FarCall
+	call Function1c07
+	ret
+; 15d97
+
+Function15d97: ; 15d97
+	ld a, $3b
+	call Predef
+	ld a, $1
+	call Function15c7d
+	call Function1dcf
+	ret
+; 15da5
+
+Function15da5: ; 15da5
+	ld a, $1
+	ld [$d10c], a
+	ld a, [$d107]
+	ld e, a
+	ld d, $0
+	ld b, $2
+	ld hl, WalkingDirection
+	call BitTableFunc
+	ld a, c
+	and a
+	jr nz, .asm_15dd8
+	ld a, [$d107]
+	ld e, a
+	ld d, $0
+	ld hl, MartPointer
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	inc hl
+	add hl, de
+	add hl, de
+	add hl, de
+	inc hl
+	ld a, [hli]
+	ld [$ffc5], a
+	ld a, [hl]
+	ld [$ffc4], a
+	xor a
+	ld [$ffc3], a
+	and a
+	ret
+
+.asm_15dd8
+	ld a, $5
+	call Function15c7d
+	call $0a36
+	scf
+	ret
+; 15de2
+
+Function15de2: ; 15de2
+	ld a, $0
+	call Function15c7d
+	call Function15df9
+	ld a, $63
+	ld [$d10d], a
+	ld a, $9
+	ld hl, $4fcf
+	rst FarCall
+	call Function1c07
+	ret
+; 15df9
+
+Function15df9: ; 15df9
+	ld a, [$d107]
+	ld e, a
+	ld d, $0
+	ld hl, MartPointer
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	inc hl
+	add hl, de
+	add hl, de
+	add hl, de
+	inc hl
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ret
+; 15e0e
+
+INCBIN "baserom.gbc", $15e0e, $15eb3 - $15e0e
+
+
+Function15eb3: ; 15eb3
+	call Function2ed3
+	ld a, $4
+	ld hl, $46a5
+	rst FarCall
+.asm_15ebc
+	ld a, $4
+	ld hl, $46be
+	rst FarCall
+	ld a, [$cf66]
+	and a
+	jp z, Function15ece
+	call Function15ee0
+	jr .asm_15ebc
+; 15ece
+
+Function15ece: ; 15ece
+	call Function2b74
+	and a
+	ret
+; 15ed3
+
+INCBIN "baserom.gbc", $15ed3, $15ee0 - $15ed3
+
+
+Function15ee0: ; 15ee0
+	callba CheckItemMenu
+	ld a, [$d142]
+	ld hl, $5eee
+	rst JumpTable
+	ret
+; 15eee
+
+INCBIN "baserom.gbc", $15eee, $15efd - $15eee
+
+
+Function15efd: ; 15efd
+	callba _CheckTossableItem
+	ld a, [$d142]
+	and a
+	jr z, .asm_15f11
+	ld hl, $5faf
+	call PrintText
+	and a
+	ret
+
+.asm_15f11
+	ld hl, UnknownText_0x15f73
+	call PrintText
+	ld a, $9
+	ld hl, $4af8
+	rst FarCall
+	ld a, $9
+	ld hl, $4fe1
+	rst FarCall
+	call Function1c07
+	jr c, .asm_15f6e
+	ld hl, $c5b9
+	ld bc, $0312
+	call ClearBox
+	ld hl, UnknownText_0x15f78
+	call PrintTextBoxText
+	call Function1dcf
+	jr c, .asm_15f6e
+	ld de, Money
+	ld bc, $ffc3
+	call Function15fd7
+	ld a, [$d107]
+	ld hl, NumItems
+	call Function2f53
+	ld a, $3b
+	call Predef
+	ld hl, $c5b9
+	ld bc, $0312
+	call ClearBox
+	ld hl, UnknownText_0x15fbe
+	call PrintTextBoxText
+	call Function15fc3
+	ld a, $9
+	ld hl, $4af0
+	rst FarCall
+	call $0a36
+
+.asm_15f6e
+	call Function1c07
+	and a
+	ret
+; 15f73
+
+UnknownText_0x15f73: ; 0x15f73
+	text_jump UnknownText_0x1c4f33, BANK(UnknownText_0x1c4f33)
+	db "@"
+; 0x15f78
+
+UnknownText_0x15f78: ; 0x15f78
+	text_jump UnknownText_0x1c4f3e, BANK(UnknownText_0x1c4f3e)
+	db "@"
+; 0x15f7d
+
+INCBIN "baserom.gbc", $15f7d, $15f83 - $15f7d
+
+UnknownText_0x15f83: ; 0x15f83
+	text_jump UnknownText_0x1c4f62, BANK(UnknownText_0x1c4f62)
+	db "@"
+; 0x15f88
+
+INCBIN "baserom.gbc", $15f88, $15fb9 - $15f88
+
+UnknownText_0x15fb9: ; 0x15fb9
+	text_jump UnknownText_0x1c500d, BANK(UnknownText_0x1c500d)
+	db "@"
+; 0x15fbe
+
+UnknownText_0x15fbe: ; 0x15fbe
+	text_jump UnknownText_0x1c502e, BANK(UnknownText_0x1c502e)
+	db "@"
+; 0x15fc3
+
+Function15fc3: ; 15fc3
+	call WaitSFX
+	ld de, SFX_TRANSACTION
+	call StartSFX
+	ret
+; 15fcd
+
+Function15fcd: ; 15fcd
+	call Function1d4f
+	call $0a36
+	call Function1c07
+	ret
+; 15fd7
+
+Function15fd7: ; 15fd7
+	ld a, $3
+	call Function16053
+	ld bc, $5ff7
+	ld a, $3
+	call Function1600b
+	jr z, .asm_15ff5
+	jr c, .asm_15ff5
+	ld hl, $5ff7
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	scf
+	ret
+
+.asm_15ff5
+	and a
+	ret
+; 15ff7
+
+INCBIN "baserom.gbc", $15ff7, $15ffa - $15ff7
+
+
+Function15ffa: ; 15ffa
+	ld a, $3
+	call Function16035
+	jr nc, .asm_16009
+	xor a
+	ld [de], a
+	inc de
+	ld [de], a
+	inc de
+	ld [de], a
+	scf
+	ret
+
+.asm_16009
+	and a
+	ret
+; 1600b
+
+Function1600b: ; 1600b
+	ld a, $3
+	push hl
+	push de
+	push bc
+	ld h, b
+	ld l, c
+	ld c, $0
+	ld b, a
+.asm_16015
+	dec a
+	jr z, .asm_1601c
+	inc de
+	inc hl
+	jr .asm_16015
+
+.asm_1601c
+	and a
+.asm_1601d
+	ld a, [de]
+	sbc [hl]
+	jr z, .asm_16022
+	inc c
+
+.asm_16022
+	dec de
+	dec hl
+	dec b
+	jr nz, .asm_1601d
+	jr c, .asm_1602d
+	ld a, c
+	and a
+	jr .asm_16031
+
+.asm_1602d
+	ld a, $1
+	and a
+	scf
+
+.asm_16031
+	pop bc
+	pop de
+	pop hl
+	ret
+; 16035
+
+Function16035: ; 16035
+	ld a, $3
+	push hl
+	push de
+	push bc
+	ld h, b
+	ld l, c
+	ld b, a
+	ld c, $0
+.asm_1603f
+	dec a
+	jr z, .asm_16046
+	inc de
+	inc hl
+	jr .asm_1603f
+
+.asm_16046
+	and a
+.asm_16047
+	ld a, [de]
+	sbc [hl]
+	ld [de], a
+	dec de
+	dec hl
+	dec b
+	jr nz, .asm_16047
+	pop bc
+	pop de
+	pop hl
+	ret
+; 16053
+
+Function16053: ; 16053
+	ld a, $3
+	push hl
+	push de
+	push bc
+	ld h, b
+	ld l, c
+	ld b, a
+.asm_1605b
+	dec a
+	jr z, .asm_16062
+	inc de
+	inc hl
+	jr .asm_1605b
+
+.asm_16062
+	and a
+.asm_16063
+	ld a, [de]
+	adc [hl]
+	ld [de], a
+	dec de
+	dec hl
+	dec b
+	jr nz, .asm_16063
+	pop bc
+	pop de
+	pop hl
+	ret
+; 1606f
+
+Function1606f: ; 1606f
+	ld a, $2
+	ld de, $d855
+	call $6055
+	ld a, $2
+	ld bc, $608d
+	call $600d
+	jr c, .asm_1608b
+	ld hl, $608d
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	scf
+	ret
+
+.asm_1608b
+	and a
+	ret
+; 1608d
+
+INCBIN "baserom.gbc", $1608d, $1608f - $1608d
+
+
+Function1608f: ; 1608f
+	ld a, $2
+	ld de, $d855
+	call $6037
+	jr nc, .asm_1609f
+	xor a
+	ld [de], a
+	inc de
+	ld [de], a
+	scf
+	ret
+
+.asm_1609f
+	and a
+	ret
+; 160a1
+
+Function160a1: ; 160a1
+	ld a, $2
+	ld de, $d855
+	jp $600d
+; 160a9
+
+
+Marts: ; 160a9
+	dw Mart0
+	dw Mart1
+	dw Mart2
+	dw Mart3
+	dw Mart4
+	dw Mart5
+	dw Mart6
+	dw Mart7
+	dw Mart8
+	dw Mart9
+	dw Mart10
+	dw Mart11
+	dw Mart12
+	dw Mart13
+	dw Mart14
+	dw Mart15
+	dw Mart16
+	dw Mart17
+	dw Mart18
+	dw Mart19
+	dw Mart20
+	dw Mart21
+	dw Mart22
+	dw Mart23
+	dw Mart24
+	dw Mart25
+	dw Mart26
+	dw Mart27
+	dw Mart28
+	dw Mart29
+	dw Mart30
+	dw Mart31
+	dw Mart32
+	dw Mart33
+MartsEnd
+; 160ed
+
+
+Mart0: ; 160ed
+	db 4 ; # items
+	db POTION
+	db ANTIDOTE
+	db PARLYZ_HEAL
+	db AWAKENING
+	db $ff
+; 160f3
+
+Mart1: ; 160f3
+	db 5 ; # items
+	db POKE_BALL
+	db POTION
+	db ANTIDOTE
+	db PARLYZ_HEAL
+	db AWAKENING
+	db $ff
+; 160fa
+
+Mart2: ; 160fa
+	db 10 ; # items
+	db POKE_BALL
+	db POTION
+	db ESCAPE_ROPE
+	db ANTIDOTE
+	db PARLYZ_HEAL
+	db AWAKENING
+	db X_DEFEND
+	db X_ATTACK
+	db X_SPEED
+	db FLOWER_MAIL
+	db $ff
+; 16106
+
+Mart3: ; 16106
+	db 9 ; # items
+	db CHARCOAL
+	db POKE_BALL
+	db POTION
+	db SUPER_POTION
+	db ESCAPE_ROPE
+	db REPEL
+	db ANTIDOTE
+	db PARLYZ_HEAL
+	db FLOWER_MAIL
+	db $ff
+; 16111
+
+Mart4: ; 16111
+	db 5 ; # items
+	db POTION
+	db SUPER_POTION
+	db HYPER_POTION
+	db FULL_HEAL
+	db REVIVE
+	db $ff
+; 16118
+
+Mart5: ; 16118
+	db 7 ; # items
+	db POTION
+	db SUPER_POTION
+	db ANTIDOTE
+	db PARLYZ_HEAL
+	db AWAKENING
+	db BURN_HEAL
+	db ICE_HEAL
+	db $ff
+; 16121
+
+Mart6: ; 16121
+	db 8 ; # items
+	db POKE_BALL
+	db GREAT_BALL
+	db ESCAPE_ROPE
+	db REPEL
+	db REVIVE
+	db FULL_HEAL
+	db POKE_DOLL
+	db FLOWER_MAIL
+	db $ff
+; 1612b
+
+Mart7: ; 1612b
+	db 7 ; # items
+	db X_SPEED
+	db X_SPECIAL
+	db X_DEFEND
+	db X_ATTACK
+	db DIRE_HIT
+	db GUARD_SPEC
+	db X_ACCURACY
+	db $ff
+; 16134
+
+Mart8: ; 16134
+	db 5 ; # items
+	db PROTEIN
+	db IRON
+	db CARBOS
+	db CALCIUM
+	db HP_UP
+	db $ff
+; 1613b
+
+Mart9: ; 1613b
+	db 3 ; # items
+	db TM_41
+	db TM_48
+	db TM_33
+	db $ff
+; 16140
+
+Mart10: ; 16140
+	db 4 ; # items
+	db TM_41
+	db TM_48
+	db TM_33
+	db TM_02
+	db $ff
+; 16146
+
+Mart11: ; 16146
+	db 4 ; # items
+	db TM_41
+	db TM_48
+	db TM_33
+	db TM_08
+	db $ff
+; 1614c
+
+Mart12: ; 1614c
+	db 5 ; # items
+	db TM_41
+	db TM_48
+	db TM_33
+	db TM_02
+	db TM_08
+	db $ff
+; 16153
+
+Mart13: ; 16153
+	db 9 ; # items
+	db GREAT_BALL
+	db SUPER_POTION
+	db HYPER_POTION
+	db ANTIDOTE
+	db PARLYZ_HEAL
+	db AWAKENING
+	db ICE_HEAL
+	db SUPER_REPEL
+	db SURF_MAIL
+	db $ff
+; 1615e
+
+Mart14: ; 1615e
+	db 10 ; # items
+	db POKE_BALL
+	db GREAT_BALL
+	db POTION
+	db SUPER_POTION
+	db ANTIDOTE
+	db PARLYZ_HEAL
+	db AWAKENING
+	db BURN_HEAL
+	db ICE_HEAL
+	db REVIVE
+	db $ff
+; 1616a
+
+Mart15: ; 1616a
+	db 4 ; # items
+	db TINYMUSHROOM
+	db SLOWPOKETAIL
+	db POKE_BALL
+	db POTION
+	db $ff
+; 16170
+
+Mart16: ; 16170
+	db 9 ; # items
+	db RAGECANDYBAR
+	db GREAT_BALL
+	db SUPER_POTION
+	db HYPER_POTION
+	db ANTIDOTE
+	db PARLYZ_HEAL
+	db SUPER_REPEL
+	db REVIVE
+	db FLOWER_MAIL
+	db $ff
+; 1617b
+
+Mart17: ; 1617b
+	db 9 ; # items
+	db GREAT_BALL
+	db ULTRA_BALL
+	db HYPER_POTION
+	db MAX_POTION
+	db FULL_HEAL
+	db REVIVE
+	db MAX_REPEL
+	db X_DEFEND
+	db X_ATTACK
+	db $ff
+; 16186
+
+Mart18: ; 16186
+	db 9 ; # items
+	db ULTRA_BALL
+	db HYPER_POTION
+	db FULL_HEAL
+	db REVIVE
+	db ANTIDOTE
+	db PARLYZ_HEAL
+	db AWAKENING
+	db BURN_HEAL
+	db FLOWER_MAIL
+	db $ff
+; 16191
+
+Mart19: ; 16191
+	db 7 ; # items
+	db GREAT_BALL
+	db SUPER_POTION
+	db SUPER_REPEL
+	db ANTIDOTE
+	db PARLYZ_HEAL
+	db AWAKENING
+	db BURN_HEAL
+	db $ff
+; 1619a
+
+Mart20: ; 1619a
+	db 9 ; # items
+	db GREAT_BALL
+	db ULTRA_BALL
+	db SUPER_POTION
+	db SUPER_REPEL
+	db FULL_HEAL
+	db X_DEFEND
+	db X_ATTACK
+	db DIRE_HIT
+	db SURF_MAIL
+	db $ff
+; 161a5
+
+Mart21: ; 161a5
+	db 8 ; # items
+	db GREAT_BALL
+	db POTION
+	db SUPER_POTION
+	db MAX_REPEL
+	db ANTIDOTE
+	db PARLYZ_HEAL
+	db AWAKENING
+	db BURN_HEAL
+	db $ff
+; 161af
+
+Mart22: ; 161af
+	db 8 ; # items
+	db ULTRA_BALL
+	db SUPER_POTION
+	db HYPER_POTION
+	db REVIVE
+	db PARLYZ_HEAL
+	db AWAKENING
+	db BURN_HEAL
+	db LITEBLUEMAIL
+	db $ff
+; 161b9
+
+Mart23: ; 161b9
+	db 7 ; # items
+	db POTION
+	db SUPER_POTION
+	db HYPER_POTION
+	db MAX_POTION
+	db REVIVE
+	db SUPER_REPEL
+	db MAX_REPEL
+	db $ff
+; 161c2
+
+Mart24: ; 161c2
+	db 10 ; # items
+	db POKE_BALL
+	db GREAT_BALL
+	db ULTRA_BALL
+	db ESCAPE_ROPE
+	db FULL_HEAL
+	db ANTIDOTE
+	db BURN_HEAL
+	db ICE_HEAL
+	db AWAKENING
+	db PARLYZ_HEAL
+	db $ff
+; 161ce
+
+Mart25: ; 161ce
+	db 5 ; # items
+	db TM_10
+	db TM_11
+	db TM_17
+	db TM_18
+	db TM_37
+	db $ff
+; 161d5
+
+Mart26: ; 161d5
+	db 3 ; # items
+	db POKE_DOLL
+	db LOVELY_MAIL
+	db SURF_MAIL
+	db $ff
+; 161da
+
+Mart27: ; 161da
+	db 5 ; # items
+	db HP_UP
+	db PROTEIN
+	db IRON
+	db CARBOS
+	db CALCIUM
+	db $ff
+; 161e1
+
+Mart28: ; 161e1
+	db 7 ; # items
+	db X_ACCURACY
+	db GUARD_SPEC
+	db DIRE_HIT
+	db X_ATTACK
+	db X_DEFEND
+	db X_SPEED
+	db X_SPECIAL
+	db $ff
+; 161ea
+
+Mart29: ; 161ea
+	db 7 ; # items
+	db GREAT_BALL
+	db ULTRA_BALL
+	db SUPER_POTION
+	db HYPER_POTION
+	db FULL_HEAL
+	db MAX_REPEL
+	db FLOWER_MAIL
+	db $ff
+; 161f3
+
+Mart30: ; 161f3
+	db 8 ; # items
+	db GREAT_BALL
+	db ULTRA_BALL
+	db HYPER_POTION
+	db MAX_POTION
+	db FULL_HEAL
+	db X_ATTACK
+	db X_DEFEND
+	db FLOWER_MAIL
+	db $ff
+; 161fd
+
+Mart31: ; 161fd
+	db 6 ; # items
+	db POKE_DOLL
+	db FRESH_WATER
+	db SODA_POP
+	db LEMONADE
+	db REPEL
+	db PORTRAITMAIL
+	db $ff
+; 16205
+
+Mart32: ; 16205
+	db 7 ; # items
+	db ULTRA_BALL
+	db MAX_REPEL
+	db HYPER_POTION
+	db MAX_POTION
+	db FULL_RESTORE
+	db REVIVE
+	db FULL_HEAL
+	db $ff
+; 1620e
+
+Mart33: ; 1620e
+	db 4 ; # items
+	db ENERGYPOWDER
+	db ENERGY_ROOT
+	db HEAL_POWDER
+	db REVIVAL_HERB
+	db $ff
+; 16214
+
+DefaultMart: ; 16214
+	db 2 ; # items
+	db POKE_BALL
+	db POTION
+	db $ff
+; 16218
+
+
+INCBIN "baserom.gbc", $16218, $16e1d - $16218
+
+
+Function16e1d: ; 16e1d
+	call Function16ed6
+	ld c, $0
+	jp nc, $6eb7
+	ld a, [BreedMon1Species]
+	ld [CurPartySpecies], a
+	ld a, [$df21]
+	ld [TempMonDVs], a
+	ld a, [$df22]
+	ld [$d124], a
+	ld a, $3
+	ld [MonType], a
+	ld a, $24
+	call Predef
+	jr c, .asm_16e70
+	ld b, $1
+	jr nz, .asm_16e48
+	inc b
+
+.asm_16e48
+	push bc
+	ld a, [BreedMon2Species]
+	ld [CurPartySpecies], a
+	ld a, [$df5a]
+	ld [TempMonDVs], a
+	ld a, [$df5b]
+	ld [$d124], a
+	ld a, $3
+	ld [MonType], a
+	ld a, $24
+	call Predef
+	pop bc
+	jr c, .asm_16e70
+	ld a, $1
+	jr nz, .asm_16e6d
+	inc a
+
+.asm_16e6d
+	cp b
+	jr nz, .asm_16e89
+
+.asm_16e70
+	ld c, $0
+	ld a, [BreedMon1Species]
+	cp $84
+	jr z, .asm_16e82
+	ld a, [BreedMon2Species]
+	cp $84
+	jr nz, .asm_16eb7
+	jr .asm_16e89
+
+.asm_16e82
+	ld a, [BreedMon2Species]
+	cp $84
+	jr z, .asm_16eb7
+
+.asm_16e89
+	call $6ebc
+	ld c, $ff
+	jp z, $6eb7
+	ld a, [BreedMon2Species]
+	ld b, a
+	ld a, [BreedMon1Species]
+	cp b
+	ld c, $fe
+	jr z, .asm_16e9f
+	ld c, $80
+
+.asm_16e9f
+	ld a, [$df12]
+	ld b, a
+	ld a, [$df4b]
+	cp b
+	jr nz, .asm_16eb7
+	ld a, [$df13]
+	ld b, a
+	ld a, [$df4c]
+	cp b
+	jr nz, .asm_16eb7
+	ld a, c
+	sub $4d
+	ld c, a
+
+.asm_16eb7
+	ld a, c
+	ld [$d265], a
+	ret
+; 16ebc
+
+INCBIN "baserom.gbc", $16ebc, $16ecd - $16ebc
+
+
+Function16ecd: ; 16ecd
+	rlca
+	ld b, a
+	ld a, [$df5b]
+	and $7
+	cp b
+	ret
+; 16ed6
+
+Function16ed6: ; 16ed6
+	ld a, [BreedMon2Species]
+	ld [CurSpecies], a
+	call GetBaseData
+	ld a, [BaseEggGroups]
+	cp $ff
+	jr z, .asm_16f3a
+	ld a, [BreedMon1Species]
+	ld [CurSpecies], a
+	call GetBaseData
+	ld a, [BaseEggGroups]
+	cp $ff
+	jr z, .asm_16f3a
+	ld a, [BreedMon2Species]
+	cp $84
+	jr z, .asm_16f3c
+	ld [CurSpecies], a
+	call GetBaseData
+	ld a, [BaseEggGroups]
+	push af
+	and $f
+	ld b, a
+	pop af
+	and $f0
+	swap a
+	ld c, a
+	ld a, [BreedMon1Species]
+	cp $84
+	jr z, .asm_16f3c
+	ld [CurSpecies], a
+	push bc
+	call GetBaseData
+	pop bc
+	ld a, [BaseEggGroups]
+	push af
+	and $f
+	ld d, a
+	pop af
+	and $f0
+	swap a
+	ld e, a
+	ld a, d
+	cp b
+	jr z, .asm_16f3c
+	cp c
+	jr z, .asm_16f3c
+	ld a, e
+	cp b
+	jr z, .asm_16f3c
+	cp c
+	jr z, .asm_16f3c
+
+.asm_16f3a
+	and a
+	ret
+
+.asm_16f3c
+	scf
+	ret
+; 16f3e
+
+Function16f3e: ; 16f3e
+	ld de, PartySpecies
+	ld hl, PartyMon1Happiness
+	ld c, 0
+.loop
+	ld a, [de]
+	inc de
+	cp $ff
+	ret z
+	cp EGG
+	jr nz, .next
+	dec [hl]
+	jr nz, .next
+	ld a, 1
+	and a
+	ret
+
+.next
+	push de
+	ld de, PartyMon2 - PartyMon1
+	add hl, de
+	pop de
+	jr .loop
+; 16f5e
+
+INCBIN "baserom.gbc", $16f5e, $174ba - $16f5e
+
+
 SECTION "bank6",ROMX,BANK[$6]
 
 Tileset03GFX: ; 0x18000
@@ -10623,8 +31983,26 @@
 
 SECTION "bank7",ROMX,BANK[$7]
 
-INCBIN "baserom.gbc", $1c000, $1c30c - $1c000
+Function1c000: ; 1c000
+	ld a, [MapGroup]
+	ld e, a
+	ld d, $0
+	ld hl, $4021
+	add hl, de
+	ld a, [hl]
+	cp $ff
+	ret z
+	ld hl, $403c
+	ld bc, $0090
+	call AddNTimes
+	ld de, $90a0
+	ld bc, $0090
+	call CopyBytes
+	ret
+; 1c021
 
+INCBIN "baserom.gbc", $1c021, $1c30c - $1c021
+
 Tileset07GFX: ; 0x1c30c
 INCBIN "gfx/tilesets/07.lz"
 ; 0x1c73b
@@ -10838,7 +32216,7 @@
 
 ; todo
 Tileset31Meta: ; 0x23891
-INCBIN "tilesets/31_metatiles.bin", $0, $280
+INCBIN "tilesets/31_metatiles.bin"
 ; 0x23b11
 
 EggMovePointers: ; 0x23b11
@@ -10849,8 +32227,752 @@
 
 SECTION "bank9",ROMX,BANK[$9]
 
-INCBIN "baserom.gbc", $24000, $244c3 - $24000
+INCBIN "baserom.gbc", $24000, $2400e - $24000
 
+
+Function2400e: ; 2400e
+	ld hl, Function1c66
+	ld a, [$cf94]
+	rst FarCall
+	call Function24085
+	call Function1ad2
+	call Function321c
+	call Function2408f
+	ret
+; 24022
+
+Function24022: ; 24022
+	ld hl, Function1c66
+	ld a, [$cf94]
+	rst FarCall
+	call Function24085
+	callba MobileTextBorder
+	call Function1ad2
+	call Function321c
+	call Function2408f
+	ret
+; 2403c
+
+Function2403c: ; 2403c
+	ld hl, Function1c66
+	ld a, [$cf94]
+	rst FarCall
+	call Function24085
+	callba MobileTextBorder
+	call Function1ad2
+	call Function321c
+	call $411a
+	ld hl, $cfa5
+	set 7, [hl]
+.asm_2405a
+	call DelayFrame
+	ld a, $40
+	ld hl, $432e
+	rst FarCall
+	ld a, [$cd2b]
+	and a
+	jr nz, .asm_24076
+	call Function241ba
+	ld a, [$cfa8]
+	and c
+	jr z, .asm_2405a
+	call $4098
+	ret
+
+.asm_24076
+	ld a, [$cfa4]
+	ld c, a
+	ld a, [$cfa3]
+	call SimpleMultiply
+	ld [$cf88], a
+	and a
+	ret
+; 24085
+
+
+
+Function24085: ; 24085
+	xor a
+	ld [hBGMapMode], a
+	call Function1cbb
+	call Function240db
+	ret
+; 2408f
+
+Function2408f: ; 2408f
+	call $411a
+	call Function1bc9
+	call Function1ff8
+	ld a, [$cf91]
+	bit 1, a
+	jr z, .asm_240a6
+	call Function1bdd
+	bit 2, a
+	jr nz, .asm_240c9
+
+.asm_240a6
+	ld a, [$cf91]
+	bit 0, a
+	jr nz, .asm_240b4
+	call Function1bdd
+	bit 1, a
+	jr nz, .asm_240cb
+
+.asm_240b4
+	ld a, [$cfa4]
+	ld c, a
+	ld a, [$cfa9]
+	dec a
+	call SimpleMultiply
+	ld c, a
+	ld a, [$cfaa]
+	add c
+	ld [$cf88], a
+	and a
+	ret
+
+.asm_240c9
+	scf
+	ret
+
+.asm_240cb
+	scf
+	ret
+; 240cd
+
+Function240cd: ; 240cd
+	ld a, [$cf92]
+	and $f
+	ret
+; 240d3
+
+Function240d3: ; 240d3
+	ld a, [$cf92]
+	swap a
+	and $f
+	ret
+; 240db
+
+Function240db: ; 240db
+	ld hl, $cf95
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	call Function1cc6
+	call Function1d05
+	call Function240d3
+	ld b, a
+.asm_240eb
+	push bc
+	push hl
+	call Function240cd
+	ld c, a
+.asm_240f1
+	push bc
+	ld a, [$cf94]
+	call Function201c
+	inc de
+	ld a, [$cf93]
+	ld c, a
+	ld b, $0
+	add hl, bc
+	pop bc
+	dec c
+	jr nz, .asm_240f1
+	pop hl
+	ld bc, $0028
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .asm_240eb
+	ld hl, $cf98
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	or h
+	ret z
+	ld a, [$cf97]
+	rst FarCall
+	ret
+; 2411a
+
+INCBIN "baserom.gbc", $2411a, $24177 - $2411a
+
+
+Function24177: ; 24177
+	rst FarCall
+	ret
+; 24179
+
+Function24179: ; 24179
+	xor a
+	ld hl, $cfa5
+	ld [hli], a
+	ld [hld], a
+	ld a, [$cf91]
+	bit 5, a
+	ret z
+	set 5, [hl]
+	set 4, [hl]
+	ret
+; 2418a
+
+Function2418a: ; 2418a
+	ld a, [$cf93]
+	or $20
+	ld [$cfa7], a
+	ret
+; 24193
+
+Function24193: ; 24193
+	ld hl, $cf91
+	ld a, $1
+	bit 0, [hl]
+	jr nz, .asm_2419e
+	or $2
+
+.asm_2419e
+	bit 1, [hl]
+	jr z, .asm_241a4
+	or $4
+
+.asm_241a4
+	ld [$cfa8], a
+	ret
+; 241a8
+
+
+Function241a8: ; 241a8
+	call $4329
+	ld hl, $cfa6
+	res 7, [hl]
+	ld a, [hBGMapMode]
+	push af
+	call Function24216
+	pop af
+	ld [hBGMapMode], a
+	ret
+; 241ba
+
+Function241ba: ; 241ba
+	ld hl, $cfa6
+	res 7, [hl]
+	ld a, [hBGMapMode]
+	push af
+	call Function2431a
+	call Function24249
+	jr nc, .asm_241cd
+	call Function24270
+
+.asm_241cd
+	pop af
+	ld [hBGMapMode], a
+	call Function1bdd
+	ld c, a
+	ret
+; 241d5
+
+INCBIN "baserom.gbc", $241d5, $24216 - $241d5
+
+
+Function24216: ; 24216
+.asm_24216
+	call Function2431a
+	call Function24238
+	call Function24249
+	jr nc, .asm_24237
+	call Function24270
+	jr c, .asm_24237
+	ld a, [$cfa5]
+	bit 7, a
+	jr nz, .asm_24237
+	call Function1bdd
+	ld b, a
+	ld a, [$cfa8]
+	and b
+	jr z, .asm_24216
+
+.asm_24237
+	ret
+; 24238
+
+Function24238: ; 24238
+	ld a, [hOAMUpdate]
+	push af
+	ld a, $1
+	ld [hOAMUpdate], a
+	call WaitBGMap
+	pop af
+	ld [hOAMUpdate], a
+	xor a
+	ld [hBGMapMode], a
+	ret
+; 24249
+
+Function24249: ; 24249
+.asm_24249
+	call RTC
+	call Function24259
+	ret c
+	ld a, [$cfa5]
+	bit 7, a
+	jr z, .asm_24249
+	and a
+	ret
+; 24259
+
+Function24259: ; 24259
+	ld a, [$cfa5]
+	bit 6, a
+	jr z, .asm_24266
+	ld hl, $4f62
+	ld a, $23
+	rst FarCall
+
+.asm_24266
+	call Functiona57
+	call Function1bdd
+	and a
+	ret z
+	scf
+	ret
+; 24270
+
+Function24270: ; 24270
+	call Function1bdd
+	bit 0, a
+	jp nz, Function24318
+	bit 1, a
+	jp nz, Function24318
+	bit 2, a
+	jp nz, Function24318
+	bit 3, a
+	jp nz, Function24318
+	bit 4, a
+	jr nz, .asm_242fa
+	bit 5, a
+	jr nz, .asm_242dc
+	bit 6, a
+	jr nz, .asm_242be
+	bit 7, a
+	jr nz, .asm_242a0
+	and a
+	ret
+
+	ld hl, $cfa6
+	set 7, [hl]
+	scf
+	ret
+
+.asm_242a0
+	ld hl, $cfa9
+	ld a, [$cfa3]
+	cp [hl]
+	jr z, .asm_242ac
+	inc [hl]
+	xor a
+	ret
+
+.asm_242ac
+	ld a, [$cfa5]
+	bit 5, a
+	jr nz, .asm_242ba
+	bit 3, a
+	jp nz, $4299
+	xor a
+	ret
+
+.asm_242ba
+	ld [hl], $1
+	xor a
+	ret
+
+.asm_242be
+	ld hl, $cfa9
+	ld a, [hl]
+	dec a
+	jr z, .asm_242c8
+	ld [hl], a
+	xor a
+	ret
+
+.asm_242c8
+	ld a, [$cfa5]
+	bit 5, a
+	jr nz, .asm_242d6
+	bit 2, a
+	jp nz, $4299
+	xor a
+	ret
+
+.asm_242d6
+	ld a, [$cfa3]
+	ld [hl], a
+	xor a
+	ret
+
+.asm_242dc
+	ld hl, $cfaa
+	ld a, [hl]
+	dec a
+	jr z, .asm_242e6
+	ld [hl], a
+	xor a
+	ret
+
+.asm_242e6
+	ld a, [$cfa5]
+	bit 4, a
+	jr nz, .asm_242f4
+	bit 1, a
+	jp nz, $4299
+	xor a
+	ret
+
+.asm_242f4
+	ld a, [$cfa4]
+	ld [hl], a
+	xor a
+	ret
+
+.asm_242fa
+	ld hl, $cfaa
+	ld a, [$cfa4]
+	cp [hl]
+	jr z, .asm_24306
+	inc [hl]
+	xor a
+	ret
+
+.asm_24306
+	ld a, [$cfa5]
+	bit 4, a
+	jr nz, .asm_24314
+	bit 0, a
+	jp nz, $4299
+	xor a
+	ret
+
+.asm_24314
+	ld [hl], $1
+	xor a
+	ret
+; 24318
+
+Function24318: ; 24318
+	xor a
+	ret
+; 2431a
+
+Function2431a: ; 2431a
+	ld hl, $cfac
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [hl]
+	cp $ed
+	jr nz, .asm_24329
+	ld a, [$cfab]
+	ld [hl], a
+
+.asm_24329
+	ld a, [$cfa1]
+	ld b, a
+	ld a, [$cfa2]
+	ld c, a
+	call Function1d05
+	ld a, [$cfa7]
+	swap a
+	and $f
+	ld c, a
+	ld a, [$cfa9]
+	ld b, a
+	xor a
+	dec b
+	jr z, .asm_24348
+.asm_24344
+	add c
+	dec b
+	jr nz, .asm_24344
+
+.asm_24348
+	ld c, $14
+	call AddNTimes
+	ld a, [$cfa7]
+	and $f
+	ld c, a
+	ld a, [$cfaa]
+	ld b, a
+	xor a
+	dec b
+	jr z, .asm_2435f
+.asm_2435b
+	add c
+	dec b
+	jr nz, .asm_2435b
+
+.asm_2435f
+	ld c, a
+	add hl, bc
+	ld a, [hl]
+	cp $ed
+	jr z, .asm_2436b
+	ld [$cfab], a
+	ld [hl], $ed
+
+.asm_2436b
+	ld a, l
+	ld [$cfac], a
+	ld a, h
+	ld [$cfad], a
+	ret
+; 24374
+
+Function24374: ; 24374
+	ld a, [rSVBK]
+	push af
+	ld a, $7
+	ld [rSVBK], a
+	ld hl, $cf71
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	push de
+	ld b, $10
+	ld hl, $cf81
+.asm_24387
+	ld a, [hli]
+	ld [de], a
+	dec de
+	dec b
+	jr nz, .asm_24387
+	ld a, [$cf81]
+	bit 6, a
+	jr nz, .asm_24398
+	bit 7, a
+	jr z, .asm_243ae
+
+.asm_24398
+	ld hl, $cf71
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	set 0, [hl]
+	call Function1cfd
+	call Function243cd
+	call Function1d19
+	call Function243cd
+	jr .asm_243b5
+
+.asm_243ae
+	pop hl
+	push hl
+	ld a, [hld]
+	ld l, [hl]
+	ld h, a
+	res 0, [hl]
+
+.asm_243b5
+	pop hl
+	call Function243e7
+	ld a, h
+	ld [de], a
+	dec de
+	ld a, l
+	ld [de], a
+	dec de
+	ld hl, $cf71
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	pop af
+	ld [rSVBK], a
+	ld hl, $cf78
+	inc [hl]
+	ret
+; 243cd
+
+Function243cd: ; 243cd
+	call Function1c53
+	inc b
+	inc c
+	call Function243e7
+.asm_243d5
+	push bc
+	push hl
+.asm_243d7
+	ld a, [hli]
+	ld [de], a
+	dec de
+	dec c
+	jr nz, .asm_243d7
+	pop hl
+	ld bc, $0014
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .asm_243d5
+	ret
+; 243e7
+
+Function243e7: ; 243e7
+	ret
+; 243e8
+
+Function243e8: ; 243e8
+	xor a
+	ld [hBGMapMode], a
+	ld a, [rSVBK]
+	push af
+	ld a, $7
+	ld [rSVBK], a
+	call Function1c7e
+	ld a, l
+	or h
+	jp z, Function2445d
+	ld a, l
+	ld [$cf71], a
+	ld a, h
+	ld [$cf72], a
+	call Function1c47
+	ld a, [$cf81]
+	bit 0, a
+	jr z, .asm_24411
+	ld d, h
+	ld e, l
+	call Function1c23
+
+.asm_24411
+	call Function1c7e
+	ld a, h
+	or l
+	jr z, .asm_2441b
+	call Function1c47
+
+.asm_2441b
+	pop af
+	ld [rSVBK], a
+	ld hl, $cf78
+	dec [hl]
+	ret
+; 24423
+
+INCBIN "baserom.gbc", $24423, $24426 - $24423
+
+
+Function24426: ; 24426
+	bit 0, a
+	ret z
+	xor a
+	call GetSRAMBank
+	ld hl, TileMap
+	ld de, $a000
+	ld bc, $0168
+	call CopyBytes
+	call CloseSRAM
+	call Function2173
+	xor a
+	call GetSRAMBank
+	ld hl, $a000
+	ld de, TileMap
+	ld bc, $0168
+.asm_2444c
+	ld a, [hl]
+	cp $61
+	jr c, .asm_24452
+	ld [de], a
+
+.asm_24452
+	inc hl
+	inc de
+	dec bc
+	ld a, c
+	or b
+	jr nz, .asm_2444c
+	call CloseSRAM
+	ret
+; 2445d
+
+Function2445d: ; 2445d
+	ld hl, UnknownText_0x24468
+	call PrintText
+	call WaitBGMap
+.asm_24466
+	jr .asm_24466
+; 24468
+
+UnknownText_0x24468: ; 24468
+	text_jump UnknownText_0x1c46b7, BANK(UnknownText_0x1c46b7)
+	db "@"
+; 2446d
+
+Function2446d: ; 2446d
+	ld a, [$cf91]
+	ld b, a
+	ld hl, $cfa1
+	ld a, [$cf82]
+	inc a
+	bit 6, b
+	jr nz, .asm_2447d
+	inc a
+
+.asm_2447d
+	ld [hli], a
+	ld a, [$cf83]
+	inc a
+	ld [hli], a
+	ld a, [$cf92]
+	ld [hli], a
+	ld a, $1
+	ld [hli], a
+	ld [hl], $0
+	bit 5, b
+	jr z, .asm_24492
+	set 5, [hl]
+
+.asm_24492
+	ld a, [$cf81]
+	bit 4, a
+	jr z, .asm_2449b
+	set 6, [hl]
+
+.asm_2449b
+	inc hl
+	xor a
+	ld [hli], a
+	ld a, $20
+	ld [hli], a
+	ld a, $1
+	bit 0, b
+	jr nz, .asm_244a9
+	add $2
+
+.asm_244a9
+	ld [hli], a
+	ld a, [$cf88]
+	and a
+	jr z, .asm_244b7
+	ld c, a
+	ld a, [$cf92]
+	cp c
+	jr nc, .asm_244b9
+
+.asm_244b7
+	ld c, $1
+
+.asm_244b9
+	ld [hl], c
+	inc hl
+	ld a, $1
+	ld [hli], a
+	xor a
+	ld [hli], a
+	ld [hli], a
+	ld [hli], a
+	ret
+; 244c3
+
+
 Function244c3: ; 0x244c3
 	ld a, [MenuSelection]
 	ld [CurSpecies], a
@@ -10862,14 +32984,601 @@
 	cp $ff
 	ret z
 	ld de, $c5b9
-	ld a, BANK(GetItemDescription)
-	ld hl, GetItemDescription
-	rst $8
+	callba GetItemDescription
 	ret
 ; 0x244e3
 
-INCBIN "baserom.gbc", $244e3, $24ab4 - $244e3
+Function244e3: ; 244e3
+	ld hl, $4547
+	call Function1d3c
+	call Function1cbb
+	call Function1ad2
+	call Function321c
+	ld b, $12
+	call GetSGBLayout
+	xor a
+	ld [hBGMapMode], a
+	ld a, [CurPartySpecies]
+	ld [CurSpecies], a
+	call GetBaseData
+	ld de, VTiles1
+	ld a, $3c
+	call Predef
+	ld a, [$cf82]
+	inc a
+	ld b, a
+	ld a, [$cf83]
+	inc a
+	ld c, a
+	call Function1d05
+	ld a, $80
+	ld [$ffad], a
+	ld bc, $0707
+	ld a, $13
+	call Predef
+	call WaitBGMap
+	ret
+; 24528
 
+Function24528: ; 24528
+	ld hl, $4547
+	call Function1d3c
+	call Function1ce1
+	call WaitBGMap
+	call ClearSGB
+	xor a
+	ld [hBGMapMode], a
+	call Function2173
+	call Function321c
+	call Function1ad2
+	call $0e51
+	ret
+; 24547
+
+INCBIN "baserom.gbc", $24547, $245af - $24547
+
+
+Function245af: ; 245af
+	xor a
+	ld [$cf73], a
+	ld [hBGMapMode], a
+	inc a
+	ld [$ffaa], a
+	call Function2471a
+	call Function24764
+	call Function247dd
+	call Function245f1
+	call Function321c
+	xor a
+	ld [hBGMapMode], a
+	ret
+; 245cb
+
+Function245cb: ; 245cb
+.asm_245cb
+	call Function24609
+	jp c, Function245d6
+	call z, Function245e1
+	jr .asm_245cb
+; 245d6
+
+Function245d6: ; 245d6
+	call Function1ff8
+	ld [$cf73], a
+	ld a, $0
+	ld [$ffaa], a
+	ret
+; 245e1
+
+Function245e1: ; 245e1
+	call Function245f1
+	ld a, $1
+	ld [hBGMapMode], a
+	ld c, $3
+	call DelayFrames
+	xor a
+	ld [hBGMapMode], a
+	ret
+; 245f1
+
+Function245f1: ; 245f1
+	xor a
+	ld [hBGMapMode], a
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set 4, [hl]
+	call Function247f0
+	call Function2488b
+	call Function248b8
+	pop af
+	ld [Options], a
+	ret
+; 24609
+
+Function24609: ; 24609
+.asm_24609
+	call Function1bd3
+	ld a, [$ffa9]
+	and $f0
+	ld b, a
+	ld a, [hJoyPressed]
+	and $f
+	or b
+	bit 0, a
+	jp nz, Function24644
+	bit 1, a
+	jp nz, $466f
+	bit 2, a
+	jp nz, Function24673
+	bit 3, a
+	jp nz, Function24695
+	bit 4, a
+	jp nz, Function246b5
+	bit 5, a
+	jp nz, Function246a1
+	bit 6, a
+	jp nz, Function246c9
+	bit 7, a
+	jp nz, Function246df
+	jr .asm_24609
+; 24640
+
+INCBIN "baserom.gbc", $24640, $24644 - $24640
+
+
+Function24644: ; 24644
+	call Function1bee
+	ld a, [$cfa9]
+	dec a
+	call Function248d5
+	ld a, [MenuSelection]
+	ld [CurItem], a
+	ld a, [$cf75]
+	ld [$d10d], a
+	call Function246fc
+	dec a
+	ld [$cf77], a
+	ld [$d107], a
+	ld a, [MenuSelection]
+	cp $ff
+	jr z, .asm_2466f
+	ld a, $1
+	scf
+	ret
+
+.asm_2466f
+	ld a, $2
+	scf
+	ret
+; 24673
+
+Function24673: ; 24673
+	ld a, [$cf91]
+	bit 7, a
+	jp z, Function2ec8
+	ld a, [$cfa9]
+	dec a
+	call Function248d5
+	ld a, [MenuSelection]
+	cp $ff
+	jp z, Function2ec8
+	call Function246fc
+	dec a
+	ld [$cf77], a
+	ld a, $4
+	scf
+	ret
+; 24695
+
+Function24695: ; 24695
+	ld a, [$cf91]
+	bit 6, a
+	jp z, Function2ec8
+	ld a, $8
+	scf
+	ret
+; 246a1
+
+Function246a1: ; 246a1
+	ld hl, $cfa6
+	bit 7, [hl]
+	jp z, Function2ec8
+	ld a, [$cf91]
+	bit 3, a
+	jp z, Function2ec8
+	ld a, $20
+	scf
+	ret
+; 246b5
+
+Function246b5: ; 246b5
+	ld hl, $cfa6
+	bit 7, [hl]
+	jp z, Function2ec8
+	ld a, [$cf91]
+	bit 2, a
+	jp z, Function2ec8
+	ld a, $10
+	scf
+	ret
+; 246c9
+
+Function246c9: ; 246c9
+	ld hl, $cfa6
+	bit 7, [hl]
+	jp z, Function2ec6
+	ld hl, $d0e4
+	ld a, [hl]
+	and a
+	jr z, .asm_246dc
+	dec [hl]
+	jp Function2ec6
+
+.asm_246dc
+	jp Function2ec8
+; 246df
+
+Function246df: ; 246df
+	ld hl, $cfa6
+	bit 7, [hl]
+	jp z, Function2ec6
+	ld hl, $d0e4
+	ld a, [$cf92]
+	add [hl]
+	ld b, a
+	ld a, [$d144]
+	cp b
+	jr c, .asm_246f9
+	inc [hl]
+	jp Function2ec6
+
+.asm_246f9
+	jp Function2ec8
+; 246fc
+
+Function246fc: ; 246fc
+	ld a, [$d0e4]
+	ld c, a
+	ld a, [$cfa9]
+	add c
+	ld c, a
+	ret
+; 24706
+
+INCBIN "baserom.gbc", $24706, $2471a - $24706
+
+
+Function2471a: ; 2471a
+	ld hl, $cf96
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [$cf95]
+	call GetFarByte
+	ld [$d144], a
+	ld a, [$cf92]
+	ld c, a
+	ld a, [$d0e4]
+	add c
+	ld c, a
+	ld a, [$d144]
+	inc a
+	cp c
+	jr nc, .asm_24748
+	ld a, [$cf92]
+	ld c, a
+	ld a, [$d144]
+	inc a
+	sub c
+	jr nc, .asm_24745
+	xor a
+
+.asm_24745
+	ld [$d0e4], a
+
+.asm_24748
+	ld a, [$d0e4]
+	ld c, a
+	ld a, [$cf88]
+	add c
+	ld b, a
+	ld a, [$d144]
+	inc a
+	cp b
+	jr c, .asm_2475a
+	jr nc, .asm_24763
+
+.asm_2475a
+	xor a
+	ld [$d0e4], a
+	ld a, $1
+	ld [$cf88], a
+
+.asm_24763
+	ret
+; 24764
+
+Function24764: ; 24764
+	ld a, [$cf91]
+	ld c, a
+	ld a, [$d144]
+	ld b, a
+	ld a, [$cf82]
+	add $1
+	ld [$cfa1], a
+	ld a, [$cf83]
+	add $0
+	ld [$cfa2], a
+	ld a, [$cf92]
+	cp b
+	jr c, .asm_24786
+	jr z, .asm_24786
+	ld a, b
+	inc a
+
+.asm_24786
+	ld [$cfa3], a
+	ld a, $1
+	ld [$cfa4], a
+	ld a, $8c
+	bit 2, c
+	jr z, .asm_24796
+	set 0, a
+
+.asm_24796
+	bit 3, c
+	jr z, .asm_2479c
+	set 1, a
+
+.asm_2479c
+	ld [$cfa5], a
+	xor a
+	ld [$cfa6], a
+	ld a, $20
+	ld [$cfa7], a
+	ld a, $c3
+	bit 7, c
+	jr z, .asm_247b0
+	add $4
+
+.asm_247b0
+	bit 6, c
+	jr z, .asm_247b6
+	add $8
+
+.asm_247b6
+	ld [$cfa8], a
+	ld a, [$cfa3]
+	ld b, a
+	ld a, [$cf88]
+	and a
+	jr z, .asm_247c8
+	cp b
+	jr z, .asm_247ca
+	jr c, .asm_247ca
+
+.asm_247c8
+	ld a, $1
+
+.asm_247ca
+	ld [$cfa9], a
+	ld a, $1
+	ld [$cfaa], a
+	xor a
+	ld [$cfac], a
+	ld [$cfad], a
+	ld [$cfab], a
+	ret
+; 247dd
+
+Function247dd: ; 247dd
+	ld a, [$d144]
+	ld c, a
+	ld a, [$d0e3]
+	and a
+	jr z, .asm_247ef
+	dec a
+	cp c
+	jr c, .asm_247ef
+	xor a
+	ld [$d0e3], a
+
+.asm_247ef
+	ret
+; 247f0
+
+Function247f0: ; 247f0
+	call Function1cf1
+	ld a, [$cf91]
+	bit 4, a
+	jr z, .asm_2480d
+	ld a, [$d0e4]
+	and a
+	jr z, .asm_2480d
+	ld a, [$cf82]
+	ld b, a
+	ld a, [$cf85]
+	ld c, a
+	call Function1d05
+	ld [hl], $61
+
+.asm_2480d
+	call Function1cfd
+	ld bc, $0015
+	add hl, bc
+	ld a, [$cf92]
+	ld b, a
+	ld c, $0
+.asm_2481a
+	ld a, [$d0e4]
+	add c
+	ld [$cf77], a
+	ld a, c
+	call Function248d5
+	ld a, [MenuSelection]
+	cp $ff
+	jr z, .asm_24851
+	push bc
+	push hl
+	call Function2486e
+	pop hl
+	ld bc, $0028
+	add hl, bc
+	pop bc
+	inc c
+	ld a, c
+	cp b
+	jr nz, .asm_2481a
+	ld a, [$cf91]
+	bit 4, a
+	jr z, .asm_24850
+	ld a, [$cf84]
+	ld b, a
+	ld a, [$cf85]
+	ld c, a
+	call Function1d05
+	ld [hl], $ee
+
+.asm_24850
+	ret
+
+.asm_24851
+	ld a, [$cf91]
+	bit 0, a
+	jr nz, .asm_24866
+	ld de, .data_2485f
+	call PlaceString
+	ret
+
+.data_2485f
+	db $82
+	db $80
+	db $8d
+	db $82
+	db $84
+	db $8b
+	db $50
+
+.asm_24866
+	ld d, h
+	ld e, l
+	ld hl, $cf98
+	jp Function31be
+; 2486e
+
+Function2486e: ; 2486e
+	push hl
+	ld d, h
+	ld e, l
+	ld hl, $cf98
+	call Function31be
+	pop hl
+	ld a, [$cf93]
+	and a
+	jr z, .asm_2488a
+	ld e, a
+	ld d, $0
+	add hl, de
+	ld d, h
+	ld e, l
+	ld hl, $cf9b
+	call Function31be
+
+.asm_2488a
+	ret
+; 2488b
+
+Function2488b: ; 2488b
+	ld a, [$d0e3]
+	and a
+	jr z, .asm_248b7
+	ld b, a
+	ld a, [$d0e4]
+	cp b
+	jr nc, .asm_248b7
+	ld c, a
+	ld a, [$cf92]
+	add c
+	cp b
+	jr c, .asm_248b7
+	ld a, b
+	sub c
+	dec a
+	add a
+	add $1
+	ld c, a
+	ld a, [$cf82]
+	add c
+	ld b, a
+	ld a, [$cf83]
+	add $0
+	ld c, a
+	call Function1d05
+	ld [hl], $ec
+
+.asm_248b7
+	ret
+; 248b8
+
+Function248b8: ; 248b8
+	ld a, [$cf91]
+	bit 5, a
+	ret z
+	bit 1, a
+	jr z, .asm_248c7
+	ld a, [$d0e3]
+	and a
+	ret nz
+
+.asm_248c7
+	ld a, [$cfa9]
+	dec a
+	call Function248d5
+	ld hl, $cf9e
+	call Function31be
+	ret
+; 248d5
+
+Function248d5: ; 248d5
+	push de
+	push hl
+	ld e, a
+	ld a, [$d0e4]
+	add e
+	ld e, a
+	ld d, $0
+	ld hl, $cf96
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	inc hl
+	ld a, [$cf94]
+	cp $1
+	jr z, .asm_248f2
+	cp $2
+	jr z, .asm_248f1
+
+.asm_248f1
+	add hl, de
+
+.asm_248f2
+	add hl, de
+	ld a, [$cf95]
+	call GetFarByte
+	ld [MenuSelection], a
+	ld [CurItem], a
+	inc hl
+	ld a, [$cf95]
+	call GetFarByte
+	ld [$cf75], a
+	pop hl
+	pop de
+	ret
+; 2490c
+
+INCBIN "baserom.gbc", $2490c, $24ab4 - $2490c
+
 Function24ab4: ; 0x24ab4
 	push de
 	ld a, [MenuSelection]
@@ -10897,18 +33606,939 @@
 	inc hl
 	ld de, $cf75
 	ld bc, $0102
-	call $3198
+	call PrintNum
 
 .done
 	ret
 ; 0x24ae8
 
-INCBIN "baserom.gbc", $24ae8, $265d3 - $24ae8
+Function24ae8: ; 24ae8
+	ld hl, $4b15
+	call Function1d3c
+	jr .asm_24b01
 
+	ld hl, $4b1d
+	call Function1d3c
+	jr .asm_24b01
+
+	ld hl, $4b15
+	ld de, $000b
+	call Function1e2e
+
+.asm_24b01
+	call Function1cbb
+	call Function1cfd
+	ld de, $0015
+	add hl, de
+	ld de, Money
+	ld bc, $2306
+	call PrintNum
+	ret
+; 24b15
+
+INCBIN "baserom.gbc", $24b15, $24b25 - $24b15
+
+Function24b25: ; 24b25
+	ld hl, $c4ab
+	ld b, $1
+	ld c, $7
+	call TextBox
+	ld hl, $c4ac
+	ld de, CoinString
+	call PlaceString
+	ld hl, $c4c5
+	ld de, String24b8e
+	call PlaceString
+	ld de, $d855
+	ld bc, $0204
+	ld hl, $c4c1
+	call PrintNum
+	ret
+; 24b4e
+
+Function24b4e: ; 24b4e
+	ld hl, $c4a5
+	ld b, $3
+	ld c, $d
+	call TextBox
+	ld hl, $c4ba
+	ld de, MoneyString
+	call PlaceString
+	ld hl, $c4c0
+	ld de, Money
+	ld bc, $2306
+	call PrintNum
+	ld hl, $c4e2
+	ld de, CoinString
+	call PlaceString
+	ld hl, $c4eb
+	ld de, $d855
+	ld bc, $0204
+	call PrintNum
+	ret
+; 24b83
+
+MoneyString: ; 24b83
+	db "MONEY@"
+CoinString: ; 24b89
+	db "COIN@"
+String24b8e: ; 24b8e
+	db "@"
+; 24b8f
+
+Function24b8f: ; 24b8f
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set 4, [hl]
+	ld hl, TileMap
+	ld b, $3
+	ld c, $7
+	call TextBox
+	ld hl, $c4b5
+	ld de, $dc7a
+	ld bc, $0203
+	call PrintNum
+	ld hl, $c4b8
+	ld de, String24bcf
+	call PlaceString
+	ld hl, $c4dd
+	ld de, String24bd4
+	call PlaceString
+	ld hl, $c4e1
+	ld de, $dc79
+	ld bc, $0102
+	call PrintNum
+	pop af
+	ld [Options], a
+	ret
+; 24bcf
+
+String24bcf: ; 24bcf
+	db "/500@"
+String24bd4: ; 24bd4
+	db "ボール   こ@"
+; 24bdc
+
+Function24bdc: ; 24bdc
+	ld hl, TileMap
+	ld b, $5
+	ld c, $11
+	call TextBox
+	ret
+; 24be7
+
+Function24be7: ; 24be7
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set 4, [hl]
+	call Function24bdc
+	ld hl, $c505
+	ld de, String24c52
+	call PlaceString
+	ld hl, $c50c
+	ld de, $dc79
+	ld bc, $4102
+	call PrintNum
+	ld hl, $c4b5
+	ld de, String24c4b
+	call PlaceString
+	ld a, [$df9c]
+	and a
+	ld de, String24c59
+	jr z, .asm_24c1e
+	ld [$d265], a
+	call GetPokemonName
+
+.asm_24c1e
+	ld hl, $c4bc
+	call PlaceString
+	ld a, [$df9c]
+	and a
+	jr z, .asm_24c3e
+	ld hl, $c4dd
+	ld de, String24c5e
+	call PlaceString
+	ld a, [$dfbb]
+	ld h, b
+	ld l, c
+	inc hl
+	ld c, $3
+	call $3842
+
+.asm_24c3e
+	pop af
+	ld [Options], a
+	ret
+; 24c43
+
+String24c43: ; 24c43
+	db "ボール   こ@"
+String24c4b: ; 24c4b
+	db "CAUGHT@"
+String24c52: ; 24c52
+	db "BALLS:@"
+String24c59: ; 24c59
+	db "None@"
+String24c5e: ; 24c5e
+	db "LEVEL@"
+; 24c64
+
+
+Function24c64: ; 24c64
+	ld hl, Buffer1
+	xor a
+	ld [hli], a
+	dec a
+	ld bc, $000a
+	call ByteFill
+
+	ld hl, ApricornBalls
+.asm_24c73
+	ld a, [hl]
+	cp $ff
+	jr z, .asm_24c8d
+	push hl
+	ld [CurItem], a
+	ld hl, NumItems
+	call Function2f79
+	pop hl
+	jr nc, .asm_24c89
+	ld a, [hl]
+	call Function24c94
+.asm_24c89
+	inc hl
+	inc hl
+	jr .asm_24c73
+
+.asm_24c8d
+	ld a, [Buffer1]
+	and a
+	ret nz
+	scf
+	ret
+; 24c94
+
+Function24c94: ; 24c94
+	push hl
+	ld hl, Buffer1
+	inc [hl]
+	ld e, [hl]
+	ld d, 0
+	add hl, de
+	ld [hl], a
+	pop hl
+	ret
+; 24ca0
+
+ApricornBalls: ; 24ca0
+	db RED_APRICORN, LEVEL_BALL
+	db BLU_APRICORN, LURE_BALL
+	db YLW_APRICORN, MOON_BALL
+	db GRN_APRICORN, FRIEND_BALL
+	db WHT_APRICORN, FAST_BALL
+	db BLK_APRICORN, HEAVY_BALL
+	db PNK_APRICORN, LOVE_BALL
+	db $ff
+; 24caf
+
+
+MonMenuOptionStrings: ; 24caf
+	db "STATS@"
+	db "SWITCH@"
+	db "ITEM@"
+	db "CANCEL@"
+	db "MOVE@"
+	db "MAIL@"
+	db "ERROR!@"
+; 24cd9
+
+MonMenuOptions: ; 24cd9
+
+; Moves
+	db 0,  1, CUT
+	db 0,  2, FLY
+	db 0,  3, SURF
+	db 0,  4, STRENGTH
+	db 0,  6, FLASH
+	db 0,  5, WATERFALL
+	db 0,  7, WHIRLPOOL
+	db 0,  8, DIG
+	db 0,  9, TELEPORT
+	db 0, 10, SOFTBOILED
+	db 0, 11, HEADBUTT
+	db 0, 12, ROCK_SMASH
+	db 0, 13, MILK_DRINK
+	db 0, 14, SWEET_SCENT
+
+; Options
+	db 1, 15, 1 ; STATS
+	db 1, 16, 2 ; SWITCH
+	db 1, 17, 3 ; ITEM
+	db 1, 18, 4 ; CANCEL
+	db 1, 19, 5 ; MOVE
+	db 1, 20, 6 ; MAIL
+	db 1, 21, 7 ; ERROR!
+
+	db $ff
+; 24d19
+
+Function24d19: ; 24d19
+	xor a
+	ld [hBGMapMode], a
+	call Function24dd4
+	callba Function8ea4a
+	ld hl, MenuDataHeader_0x24d3f
+	call LoadMenuDataHeader
+	call Function24d47
+	call Function24d91
+
+	ld a, 1
+	ld [hBGMapMode], a
+	call Function24d59
+	ld [MenuSelection], a
+
+	call Function1c07
+	ret
+; 24d3f
+
+MenuDataHeader_0x24d3f: ; 24d3f
+	db $40 ; tile backup
+	db 00, 06 ; start coords
+	db 17, 19 ; end coords
+	dw $0000
+	db 1 ; default option
+; 24d47
+
+Function24d47: ; 24d47
+	ld a, [Buffer1]
+	inc a
+	add a
+	ld b, a
+	ld a, [$cf84]
+	sub b
+	inc a
+	ld [$cf82], a
+	call Function1cbb
+	ret
+; 24d59
+
+Function24d59: ; 24d59
+.asm_24d59
+	ld a, $a0
+	ld [$cf91], a
+	ld a, [Buffer1]
+	ld [$cf92], a
+	call Function1c10
+	ld hl, $cfa5
+	set 6, [hl]
+	call Function1bc9
+	ld de, SFX_READ_TEXT_2
+	call StartSFX
+	ld a, [hJoyPressed]
+	bit 0, a ; A
+	jr nz, .asm_24d84
+	bit 1, a ; B
+	jr nz, .asm_24d81
+	jr .asm_24d59
+
+.asm_24d81
+	ld a, 18 ; CANCEL
+	ret
+
+.asm_24d84
+	ld a, [$cfa9]
+	dec a
+	ld c, a
+	ld b, 0
+	ld hl, Buffer2
+	add hl, bc
+	ld a, [hl]
+	ret
+; 24d91
+
+Function24d91: ; 24d91
+	call Function1cfd
+	ld bc, $002a
+	add hl, bc
+	ld de, Buffer2
+.asm_24d9b
+	ld a, [de]
+	inc de
+	cp $ff
+	ret z
+	push de
+	push hl
+	call Function24db0
+	pop hl
+	call PlaceString
+	ld bc, $0028
+	add hl, bc
+	pop de
+	jr .asm_24d9b
+; 24db0
+
+Function24db0: ; 24db0
+	ld hl, MonMenuOptions + 1
+	ld de, $0003
+	call IsInArray
+	dec hl
+	ld a, [hli]
+	cp $1
+	jr z, .asm_24dc8
+	inc hl
+	ld a, [hl]
+	ld [$d265], a
+	call GetMoveName
+	ret
+
+.asm_24dc8
+	inc hl
+	ld a, [hl]
+	dec a
+	ld hl, MonMenuOptionStrings
+	call GetNthString
+	ld d, h
+	ld e, l
+	ret
+; 24dd4
+
+Function24dd4: ; 24dd4
+	call Function24e68
+	ld a, [CurPartySpecies]
+	cp EGG
+	jr z, .asm_24e3f
+	ld a, [InLinkBattle]
+	and a
+	jr nz, .asm_24e03
+	ld a, $2
+	call GetPartyParamLocation
+	ld d, h
+	ld e, l
+	ld c, $4
+.asm_24ded
+	push bc
+	push de
+	ld a, [de]
+	and a
+	jr z, .asm_24dfd
+	push hl
+	call Function24e52
+	pop hl
+	jr nc, .asm_24dfd
+	call Function24e83
+
+.asm_24dfd
+	pop de
+	inc de
+	pop bc
+	dec c
+	jr nz, .asm_24ded
+
+.asm_24e03
+	ld a, $f
+	call Function24e83
+	ld a, $10
+	call Function24e83
+	ld a, $13
+	call Function24e83
+	ld a, [InLinkBattle]
+	and a
+	jr nz, .asm_24e2f
+	push hl
+	ld a, $1
+	call GetPartyParamLocation
+	ld d, [hl]
+	callba Functionb9e76
+	pop hl
+	ld a, $14
+	jr c, .asm_24e2c
+	ld a, $11
+
+.asm_24e2c
+	call Function24e83
+
+.asm_24e2f
+	ld a, [Buffer1]
+	cp $8
+	jr z, .asm_24e3b
+	ld a, $12
+	call Function24e83
+
+.asm_24e3b
+	call Function24e76
+	ret
+
+.asm_24e3f
+	ld a, $f
+	call Function24e83
+	ld a, $10
+	call Function24e83
+	ld a, $12
+	call Function24e83
+	call Function24e76
+	ret
+; 24e52
+
+Function24e52: ; 24e52
+	ld b, a
+	ld hl, MonMenuOptions
+.asm_24e56
+	ld a, [hli]
+	cp $ff
+	jr z, .asm_24e67
+	cp $1
+	jr z, .asm_24e67
+	ld d, [hl]
+	inc hl
+	ld a, [hli]
+	cp b
+	jr nz, .asm_24e56
+	ld a, d
+	scf
+
+.asm_24e67
+	ret
+; 24e68
+
+Function24e68: ; 24e68
+	xor a
+	ld [Buffer1], a
+	ld hl, Buffer2
+	ld bc, $0009
+	call ByteFill
+	ret
+; 24e76
+
+Function24e76: ; 24e76
+	ld a, [Buffer1]
+	ld e, a
+	ld d, $0
+	ld hl, Buffer2
+	add hl, de
+	ld [hl], $ff
+	ret
+; 24e83
+
+Function24e83: ; 24e83
+	push hl
+	push de
+	push af
+	ld a, [Buffer1]
+	ld e, a
+	inc a
+	ld [Buffer1], a
+	ld d, $0
+	ld hl, Buffer2
+	add hl, de
+	pop af
+	ld [hl], a
+	pop de
+	pop hl
+	ret
+; 24e99
+
+Function24e99: ; 24e99
+; BattleMonMenu
+	ld hl, MenuDataHeader_0x24ed4
+	call Function1d3c
+	xor a
+	ld [hBGMapMode], a
+	call Function1cbb
+	call Function1ad2
+	call Function1c89
+	call WaitBGMap
+	call Function1c66
+	ld a, [$cf91]
+	bit 7, a
+	jr z, .asm_24ed0
+	call Function1c10
+	ld hl, $cfa5
+	set 6, [hl]
+	call Function1bc9
+	ld de, SFX_READ_TEXT_2
+	call StartSFX
+	ld a, [hJoyPressed]
+	bit 1, a
+	jr z, .asm_24ed2
+	ret z
+
+.asm_24ed0
+	scf
+	ret
+
+.asm_24ed2
+	and a
+	ret
+; 24ed4
+
+MenuDataHeader_0x24ed4: ; 24ed4
+	db $00 ; flags
+	db 11, 11 ; start coords
+	db 17, 19 ; end coords
+	dw MenuData2_0x24edc
+	db 1 ; default option
+; 24edc
+
+MenuData2_0x24edc: ; 24edc
+	db $c0 ; flags
+	db 3 ; items
+	db "SWITCH@"
+	db "STATS@"
+	db "CANCEL@"
+; 24ef2
+
+
+Function24ef2: ; 4ef2
+	ld hl, MenuDataHeader_0x24f2c
+	call LoadMenuDataHeader
+	ld a, [$d0d2]
+	ld [$cf88], a
+	call Function2039
+	ld a, [$cf88]
+	ld [$d0d2], a
+	call Function1c07
+	ret
+; 24f0b
+
+
+Function24f0b: ; 24f0b
+; Safari battle menu (untranslated).
+	ld hl, MenuDataHeader_0x24f4e
+	call LoadMenuDataHeader
+	jr Function24f19
+; 24f13
+
+Function24f13: ; 24f13
+; Park battle menu.
+	ld hl, MenuDataHeader_0x24f89
+	call LoadMenuDataHeader
+; 24f19
+
+Function24f19: ; 24f19
+	ld a, [$d0d2]
+	ld [$cf88], a
+	call Function202a
+	ld a, [$cf88]
+	ld [$d0d2], a
+	call Function1c07
+	ret
+; 24f2c
+
+
+MenuDataHeader_0x24f2c: ; 24f2c
+	db $40 ; flags
+	db 12, 08 ; start coords
+	db 17, 19 ; end coords
+	dw MenuData_0x24f34
+	db 1 ; default option
+; 24f34
+
+MenuData_0x24f34: ; 0x24f34
+	db $81 ; flags
+	dn 2, 2 ; rows, columns
+	db 6 ; spacing
+	dbw BANK(Strings24f3d), Strings24f3d
+	dbw $09, $0000
+; 0x24f3d
+
+Strings24f3d: ; 0x24f3d
+	db "FIGHT@"
+	db $4a, "@"
+	db "PACK@"
+	db "RUN@"
+; 24f4e
+
+
+MenuDataHeader_0x24f4e: ; 24f4e
+	db $40 ; flags
+	db 12, 00 ; start coords
+	db 17, 19 ; end coords
+	dw MenuData_0x24f56
+	db 1 ; default option
+; 24f56
+
+MenuData_0x24f56: ; 24f56
+	db $81 ; flags
+	dn 2, 2 ; rows, columns
+	db 11 ; spacing
+	dbw BANK(Strings24f5f), Strings24f5f
+	dbw BANK(Function24f7c), Function24f7c
+; 24f5f
+
+Strings24f5f: ; 24f5f
+	db "サファりボール×  @" ; "SAFARI BALL×  @"
+	db "エサをなげる@" ; "THROW BAIT"
+	db "いしをなげる@" ; "THROW ROCK"
+	db "にげる@" ; "RUN"
+; 24f7c
+
+Function24f7c: ; 24f7c
+	ld hl, $c5b5
+	ld de, $dc79
+	ld bc, $8102
+	call PrintNum
+	ret
+; 24f89
+
+
+MenuDataHeader_0x24f89: ; 24f89
+	db $40 ; flags
+	db 12, 02 ; start coords
+	db 17, 19 ; end coords
+	dw MenuData_0x24f91
+	db 1 ; default option
+; 24f91
+
+MenuData_0x24f91: ; 24f91
+	db $81 ; flags
+	dn 2, 2 ; rows, columns
+	db 12 ; spacing
+	dbw BANK(Strings24f9a), Strings24f9a
+	dbw BANK(Function24fb2), Function24fb2
+; 24f9a
+
+Strings24f9a: ; 24f9a
+	db "FIGHT@"
+	db $4a, "@"
+	db "PARKBALL×  @"
+	db "RUN@"
+; 24fb2
+
+Function24fb2: ; 24fb2
+	ld hl, $c5ed
+	ld de, $dc79
+	ld bc, $8102
+	call PrintNum
+	ret
+; 24fbf
+
+
+Function24fbf: ; 24fbf
+	ld hl, $50ed
+	call LoadMenuDataHeader
+	call Function24ff9
+	ret
+; 24fc9
+
+
+Function24fc9: ; 24fc9
+	callba GetItemPrice
+	ld a, d
+	ld [Buffer1], a
+	ld a, e
+	ld [Buffer2], a
+	ld hl, $50f5
+	call LoadMenuDataHeader
+	call Function24ff9
+	ret
+; 24fe1
+
+Function24fe1: ; 24fe1
+	callba GetItemPrice
+	ld a, d
+	ld [Buffer1], a
+	ld a, e
+	ld [Buffer2], a
+	ld hl, $50fd
+	call LoadMenuDataHeader
+	call Function24ff9
+	ret
+; 24ff9
+
+Function24ff9: ; 24ff9
+	ld a, $1
+	ld [$d10c], a
+.asm_24ffe
+	call Function25072
+	call Function2500e
+	jr nc, .asm_24ffe
+	cp $ff
+	jr nz, .asm_2500c
+	scf
+	ret
+
+.asm_2500c
+	and a
+	ret
+; 2500e
+
+Function2500e: ; 2500e
+	call Function354b
+	bit 1, c
+	jr nz, .asm_2502b
+	bit 0, c
+	jr nz, .asm_2502f
+	bit 7, c
+	jr nz, .asm_25033
+	bit 6, c
+	jr nz, .asm_2503f
+	bit 5, c
+	jr nz, .asm_2504d
+	bit 4, c
+	jr nz, .asm_2505f
+	and a
+	ret
+
+.asm_2502b
+	ld a, $ff
+	scf
+	ret
+
+.asm_2502f
+	ld a, $0
+	scf
+	ret
+
+.asm_25033
+	ld hl, $d10c
+	dec [hl]
+	jr nz, .asm_2503d
+	ld a, [$d10d]
+	ld [hl], a
+
+.asm_2503d
+	and a
+	ret
+
+.asm_2503f
+	ld hl, $d10c
+	inc [hl]
+	ld a, [$d10d]
+	cp [hl]
+	jr nc, .asm_2504b
+	ld [hl], $1
+
+.asm_2504b
+	and a
+	ret
+
+.asm_2504d
+	ld a, [$d10c]
+	sub $a
+	jr c, .asm_25058
+	jr z, .asm_25058
+	jr .asm_2505a
+
+.asm_25058
+	ld a, $1
+
+.asm_2505a
+	ld [$d10c], a
+	and a
+	ret
+
+.asm_2505f
+	ld a, [$d10c]
+	add $a
+	ld b, a
+	ld a, [$d10d]
+	cp b
+	jr nc, .asm_2506c
+	ld b, a
+
+.asm_2506c
+	ld a, b
+	ld [$d10c], a
+	and a
+	ret
+; 25072
+
+Function25072: ; 25072
+	call Function1cbb
+	call Function1cfd
+	ld de, $0015
+	add hl, de
+	ld [hl], $f1
+	inc hl
+	ld de, $d10c
+	ld bc, $8102
+	call PrintNum
+	ld a, [$cf86]
+	ld e, a
+	ld a, [$cf87]
+	ld d, a
+	ld a, [$cf8a]
+	call FarJpDe
+	ret
+; 25097
+
+
+Function25097: ; 25097
+	ret
+; 25098
+
+Function25098: ; 25098
+	call Function250a9
+	call Function250d1
+	ret
+; 2509f
+
+Function2509f: ; 2509f
+	call Function250a9
+	call Function250c1
+	call Function250d1
+	ret
+; 250a9
+
+Function250a9: ; 250a9
+	xor a
+	ld [hMultiplicand], a
+	ld a, [Buffer1]
+	ld [$ffb5], a
+	ld a, [Buffer2]
+	ld [$ffb6], a
+	ld a, [$d10c]
+	ld [hMultiplier], a
+	push hl
+	call Multiply
+	pop hl
+	ret
+; 250c1
+
+Function250c1: ; 250c1
+	push hl
+	ld hl, hMultiplicand
+	ld a, [hl]
+	srl a
+	ld [hli], a
+	ld a, [hl]
+	rra
+	ld [hli], a
+	ld a, [hl]
+	rra
+	ld [hl], a
+	pop hl
+	ret
+; 250d1
+
+Function250d1: ; 250d1
+	push hl
+	ld hl, $ffc3
+	ld a, [hMultiplicand]
+	ld [hli], a
+	ld a, [$ffb5]
+	ld [hli], a
+	ld a, [$ffb6]
+	ld [hl], a
+	pop hl
+	inc hl
+	ld de, $ffc3
+	ld bc, $2306
+	call PrintNum
+	call WaitBGMap
+	ret
+; 250ed
+
+
+INCBIN "baserom.gbc", $250ed, $265d3 - $250ed
+
+
 ProfOaksPC: ; 0x265d3
 	ld hl, OakPCText1
-	call $1d4f
-	call $1dcf
+	call Function1d4f
+	call Function1dcf
 	jr c, .shutdown
 	call ProfOaksPCBoot ; player chose "yes"?
 .shutdown
@@ -10937,7 +34567,7 @@
 	pop de
 	call StartSFX
 	call $0a36
-	call $3c55
+	call WaitSFX
 	ret
 ; 0x26616
 
@@ -10983,7 +34613,7 @@
 	call ByteFill
 	pop hl
 	ld bc, $4103
-	call $3198
+	call PrintNum
 	ret
 ; 0x2666b
 
@@ -11192,7 +34822,7 @@
 	ld a, [$cf76]
 	push af
 	ld hl, $679a
-	call $1d35
+	call LoadMenuDataHeader
 	xor a
 	ld [$d1ee], a
 	ld a, $1
@@ -11201,17 +34831,17 @@
 	ld a, [$d1ef]
 	ld [$cf88], a
 	call $6806
-	call $1e5d
+	call Function1e5d
 	ld a, [$cfa9]
 	ld [$d1ef], a
 	jr c, .asm_2678e
 	ld a, [MenuSelection]
 	ld hl, $67aa
-	call $1fa7
+	call Function1fa7
 	jr nc, .asm_2676f
 
 .asm_2678e
-	call $1c07
+	call Function1c07
 	pop af
 	ld [$cf76], a
 	ld a, [$d1ee]
@@ -11219,8 +34849,238 @@
 	ret
 ; 0x2679a
 
-INCBIN "baserom.gbc", $2679a, $270c4 - $2679a
+INCBIN "baserom.gbc", $2679a, $269dd - $2679a
 
+
+Function269dd: ; 269dd
+	ld hl, $6a4f
+	ld bc, $0006
+	call AddNTimes
+	ret
+; 269e7
+
+Function269e7: ; 269e7
+	push hl
+	call Function269dd
+	call Function26c72
+	pop hl
+	call CopyName2
+	ret
+; 269f3
+
+INCBIN "baserom.gbc", $269f3, $26a30 - $269f3
+
+
+Function26a30: ; 26a30
+	call Function269dd
+	ld de, $0003
+	add hl, de
+	ld a, [hli]
+	ld d, [hl]
+	ld e, a
+	ret
+; 26a3b
+
+Function26a3b: ; 26a3b
+	push bc
+	call Function26a30
+	pop bc
+	call BitTable1Func
+	ret
+; 26a44
+
+INCBIN "baserom.gbc", $26a44, $26c72 - $26a44
+
+
+Function26c72: ; 26c72
+	ld a, [hli]
+	ld e, [hl]
+	ld bc, StringBuffer2
+	push bc
+	ld hl, $6c7e
+	rst JumpTable
+	pop de
+	ret
+; 26c7e
+
+INCBIN "baserom.gbc", $26c7e, $26c8c - $26c7e
+
+
+Function26c8c: ; 26c8c
+	ret
+; 26c8d
+
+Function26c8d: ; 26c8d
+	ld a, e
+	jr .asm_26cca
+
+	call Function26c8d
+	ld a, $d
+	jr .asm_26cca
+
+	call Function26c8d
+	ld a, $e
+	jr .asm_26cca
+
+	ld a, e
+	call $6cc0
+	ld a, $f
+	jr .asm_26cca
+
+	ld a, e
+	call $6cc0
+	ld a, $10
+	jr .asm_26cca
+
+	push de
+	ld a, $11
+	call $6cca
+	pop de
+	ld a, e
+	jr .asm_26cc0
+
+	push de
+	call $6cca
+	pop de
+	ld a, e
+	jr .asm_26cca
+
+.asm_26cc0
+	push bc
+	ld [$d265], a
+	call GetPokemonName
+	pop bc
+	jr .asm_26cda
+
+.asm_26cca
+	call $6ccf
+	jr .asm_26cda
+
+	push bc
+	ld hl, $6b8d
+	call GetNthString
+	ld d, h
+	ld e, l
+	pop bc
+	ret
+
+.asm_26cda
+	ld h, b
+	ld l, c
+	call CopyName2
+	dec hl
+	ld b, h
+	ld c, l
+	ret
+; 26ce3
+
+INCBIN "baserom.gbc", $26ce3, $26eea - $26ce3
+
+
+Function26eea: ; 26eea
+	ld a, c
+	ld h, d
+	ld l, e
+	call Function269e7
+	ret
+; 26ef1
+
+Function26ef1: ; 26ef1
+	ld a, c
+	jp Function26a3b
+; 26ef5
+
+INCBIN "baserom.gbc", $26ef5, $26f02 - $26ef5
+
+
+Function26f02: ; 26f02
+	ld a, c
+	call Function26f0c
+	ld b, $1
+	call Function26a3b
+	ret
+; 26f0c
+
+Function26f0c: ; 26f0c
+	push hl
+	push de
+	ld e, a
+	ld d, $0
+	ld hl, $6f2b
+	add hl, de
+	ld a, [hl]
+	pop de
+	pop hl
+	ret
+; 26f19
+
+INCBIN "baserom.gbc", $26f19, $26f59 - $26f19
+
+
+Function26f59: ; 26f59
+	ld a, b
+	ld hl, $6f5f
+	rst JumpTable
+	ret
+; 26f5f
+
+INCBIN "baserom.gbc", $26f5f, $26fb9 - $26f5f
+
+
+Function26fb9: ; 26fb9
+	ld a, [LeftOrnament]
+	jr .asm_26fc8
+
+	ld a, [RightOrnament]
+	jr .asm_26fc8
+
+	ld a, [Console]
+	jr .asm_26fc8
+
+.asm_26fc8
+	ld c, a
+	ld de, StringBuffer3
+	call Function26eea
+	ld b, $9
+	ld de, $6fd5
+	ret
+; 26fd5
+
+INCBIN "baserom.gbc", $26fd5, $26fdd - $26fd5
+
+
+Function26fdd: ; 26fdd
+	ld b, $9
+	ld de, $6fe3
+	ret
+; 26fe3
+
+INCBIN "baserom.gbc", $26fe3, $2709e - $26fe3
+
+
+Function2709e: ; 2709e
+	ld a, [CurPartyMon]
+	ld hl, PartyMon1CaughtLocation
+	call GetPartyLocation
+	ld a, [hl]
+	and $7f
+	ld d, a
+	ld a, [MapGroup]
+	ld b, a
+	ld a, [MapNumber]
+	ld c, a
+	call GetWorldMapLocation
+	cp d
+	ld c, $1
+	jr nz, .asm_270bd
+	ld c, $13
+
+.asm_270bd
+	callab ChangeHappiness
+	ret
+; 270c4
+
+
 GetTrainerDVs: ; 270c4
 ; get dvs based on trainer class
 ; output: bc
@@ -11314,8 +35174,87 @@
 	db $98, $88 ; mysticalman
 ; 2715c
 
-INCBIN "baserom.gbc", $2715c, $271f4 - $2715c
+Function2715c: ; 2715c
+	call WhiteBGMap
+	call ClearTileMap
+	ld a, [BattleType]
+	cp $3
+	jr z, .asm_27171
+	callba Function3f43d
+	jr .asm_27177
 
+.asm_27171
+	callba GetBattleBackpic
+
+.asm_27177
+	callba Function3f47c
+	callba Function3ed9f
+	call ClearSGB
+	call Function1c17
+	call Function1d6e
+	call WaitBGMap
+	jp Function32f9
+; 27192
+
+Function27192: ; 27192
+	push hl
+	push de
+	push bc
+	ld a, [hBattleTurn]
+	and a
+	ld hl, OTPartyMon1Item
+	ld de, EnemyMonItem
+	ld a, [CurOTMon]
+	jr z, .asm_271ac
+	ld hl, PartyMon1Item
+	ld de, BattleMonItem
+	ld a, [CurBattleMon]
+
+.asm_271ac
+	push hl
+	push af
+	ld a, [de]
+	ld b, a
+	callba GetItem
+	ld hl, $71de
+.asm_271b9
+	ld a, [hli]
+	cp b
+	jr z, .asm_271c6
+	inc a
+	jr nz, .asm_271b9
+	pop af
+	pop hl
+	pop bc
+	pop de
+	pop hl
+	ret
+
+.asm_271c6
+	xor a
+	ld [de], a
+	pop af
+	pop hl
+	call GetPartyLocation
+	ld a, [hBattleTurn]
+	and a
+	jr nz, .asm_271d8
+	ld a, [IsInBattle]
+	dec a
+	jr z, .asm_271da
+
+.asm_271d8
+	ld [hl], $0
+
+.asm_271da
+	pop bc
+	pop de
+	pop hl
+	ret
+; 271de
+
+INCBIN "baserom.gbc", $271de, $271f4 - $271de
+
 MoveEffectsPointers: ; 271f4
 INCLUDE "battle/moves/move_effects_pointers.asm"
 
@@ -11327,29 +35266,221 @@
 
 SECTION "bankA",ROMX,BANK[$A]
 
-INCBIN "baserom.gbc", $28000, $28785 - $28000
+INCBIN "baserom.gbc", $28000, $2a111 - $28000
 
-TimeCapsuleItemConversions: ; 0x28785
-; Pokémon traded from RBY do not have held items, so GSC usually interprets the
-; catch rate as an item. However, if the catch rate appears in this table, the
-; item associated with the table entry is used instead.
+Function2a111: ; 2a111
+	ld hl, $d25a
+	call Function1852
+	ld a, $3
+	jr z, .asm_2a11e
+	ld a, [TimeOfDay]
 
-	db 25, LEFTOVERS
-	db 45, BITTER_BERRY
-	db 50, GOLD_BERRY
-	db 90, BERRY
-	db 100, BERRY
-	db 120, BERRY
-	db 135, BERRY
-	db 190, BERRY
-	db 195, BERRY
-	db 220, BERRY
-	db 250, BERRY
-	db 255, BERRY
-	db 0
+.asm_2a11e
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld b, [hl]
+	ret
+; 2a124
 
-INCBIN "baserom.gbc", $2879e, $2a2a0 - $2879e
+INCBIN "baserom.gbc", $2a124, $2a14f - $2a124
 
+Function2a14f: ; 2a14f
+	call Function2a200
+	jp nc, $61c1
+	call Function2a2ce
+	jp c, $61c9
+	inc hl
+	inc hl
+	inc hl
+	call Function1852
+	ld de, $61d9
+	jr z, .asm_2a174
+	inc hl
+	inc hl
+	ld a, [TimeOfDay]
+	ld bc, $000e
+	call AddNTimes
+	ld de, $61cb
+
+.asm_2a174
+	push hl
+.asm_2a175
+	call RNG
+	cp $64
+	jr nc, .asm_2a175
+	inc a
+	ld b, a
+	ld h, d
+	ld l, e
+.asm_2a180
+	ld a, [hli]
+	cp b
+	jr nc, .asm_2a187
+	inc hl
+	jr .asm_2a180
+
+.asm_2a187
+	ld c, [hl]
+	ld b, $0
+	pop hl
+	add hl, bc
+	ld a, [hli]
+	ld b, a
+	call Function1852
+	jr nz, .asm_2a1aa
+	call RNG
+	cp $59
+	jr c, .asm_2a1aa
+	inc b
+	cp $a5
+	jr c, .asm_2a1aa
+	inc b
+	cp $d8
+	jr c, .asm_2a1aa
+	inc b
+	cp $f2
+	jr c, .asm_2a1aa
+	inc b
+
+.asm_2a1aa
+	ld a, b
+	ld [CurPartyLevel], a
+	ld b, [hl]
+	call Function2a4a0
+	jr c, .asm_2a1c1
+	ld a, b
+	cp $c9
+	jr nz, .asm_2a1bf
+	ld a, [UnlockedUnowns]
+	and a
+	jr z, .asm_2a1c1
+
+.asm_2a1bf
+	jr .asm_2a1c5
+
+.asm_2a1c1
+	ld a, $1
+	and a
+	ret
+
+.asm_2a1c5
+	ld a, b
+	ld [$d22e], a
+	xor a
+	ret
+; 2a1cb
+
+INCBIN "baserom.gbc", $2a1cb, $2a200 - $2a1cb
+
+Function2a200: ; 2a200
+	call Function1852
+	jr z, .asm_2a21d
+	ld hl, WildMons5
+	ld bc, $002f
+	call $623d
+	ret c
+	ld hl, WildMons1
+	ld de, WildMons3
+	call $6235
+	ld bc, $002f
+	jr .asm_2a27a
+
+.asm_2a21d
+	ld hl, WildMons6
+	ld bc, $0009
+	call $623d
+	ret c
+	ld hl, WildMons2
+	ld de, WildMons4
+	call $6235
+	ld bc, $0009
+	jr .asm_2a27a
+
+	call Function2f17
+	and a
+	ret z
+	ld h, d
+	ld l, e
+	ret
+
+	call $627f
+	push hl
+	ld hl, $dc20
+	bit 2, [hl]
+	pop hl
+	jr z, .asm_2a25c
+	ld a, [$dfcc]
+	cp d
+	jr nz, .asm_2a25c
+	ld a, [$dfcd]
+	cp e
+	jr nz, .asm_2a25c
+	call $6288
+	jr nc, .asm_2a278
+	scf
+	ret
+
+.asm_2a25c
+	push hl
+	ld hl, $dc20
+	bit 3, [hl]
+	pop hl
+	jr z, .asm_2a278
+	ld a, [$dc5a]
+	cp d
+	jr nz, .asm_2a278
+	ld a, [$dc5b]
+	cp e
+	jr nz, .asm_2a278
+	call $6288
+	jr nc, .asm_2a278
+	scf
+	ret
+
+.asm_2a278
+	and a
+	ret
+
+.asm_2a27a
+	call $627f
+	jr .asm_2a288
+
+	ld a, [MapGroup]
+	ld d, a
+	ld a, [MapNumber]
+	ld e, a
+	ret
+
+.asm_2a288
+	push hl
+	ld a, [hl]
+	inc a
+	jr z, .asm_2a29a
+	ld a, d
+	cp [hl]
+	jr nz, .asm_2a296
+	inc hl
+	ld a, e
+	cp [hl]
+	jr z, .asm_2a29d
+
+.asm_2a296
+	pop hl
+	add hl, bc
+	jr .asm_2a288
+
+.asm_2a29a
+	pop hl
+	and a
+	ret
+
+.asm_2a29d
+	pop hl
+	scf
+	ret
+; 2a2a0
+
 SpecialRoamMons: ; 2a2a0
 ; initialize RoamMon structs
 ; include commented-out parts from the gs function
@@ -11395,9 +35526,244 @@
 	ret
 ; 2a2ce
 
-INCBIN "baserom.gbc", $2a2ce, $2a5e9 - $2a2ce
 
+Function2a2ce: ; 2a2ce
+	push hl
+	call Function1852
+	jr z, .asm_2a30a
+	call $627f
+	call RNG
+	cp $64
+	jr nc, .asm_2a30a
+	and $3
+	jr z, .asm_2a30a
+	dec a
+	ld hl, RoamMon1MapGroup
+	ld c, a
+	ld b, $0
+	ld a, $7
+	call AddNTimes
+	ld a, d
+	cp [hl]
+	jr nz, .asm_2a30a
+	inc hl
+	ld a, e
+	cp [hl]
+	jr nz, .asm_2a30a
+	dec hl
+	dec hl
+	dec hl
+	ld a, [hli]
+	ld [$d22e], a
+	ld a, [hl]
+	ld [CurPartyLevel], a
+	ld a, $5
+	ld [BattleType], a
+	pop hl
+	scf
+	ret
 
+.asm_2a30a
+	pop hl
+	and a
+	ret
+; 2a30d
+
+
+Function2a30d: ; 2a30d
+	ld a, [RoamMon1MapGroup]
+	cp $ff
+	jr z, .asm_2a324
+	ld b, a
+	ld a, [RoamMon1MapNumber]
+	ld c, a
+	call Function2a355
+	ld a, b
+	ld [RoamMon1MapGroup], a
+	ld a, c
+	ld [RoamMon1MapNumber], a
+
+.asm_2a324
+	ld a, [RoamMon2MapGroup]
+	cp $ff
+	jr z, .asm_2a33b
+	ld b, a
+	ld a, [RoamMon2MapNumber]
+	ld c, a
+	call Function2a355
+	ld a, b
+	ld [RoamMon2MapGroup], a
+	ld a, c
+	ld [RoamMon2MapNumber], a
+
+.asm_2a33b
+	ld a, [RoamMon3MapGroup]
+	cp $ff
+	jr z, .asm_2a352
+	ld b, a
+	ld a, [RoamMon3MapNumber]
+	ld c, a
+	call Function2a355
+	ld a, b
+	ld [RoamMon3MapGroup], a
+	ld a, c
+	ld [RoamMon3MapNumber], a
+
+.asm_2a352
+	jp Function2a3f6
+; 2a355
+
+
+Function2a355: ; 2a355
+	ld hl, $640f
+.asm_2a358
+	ld a, [hl]
+	cp $ff
+	ret z
+	ld a, b
+	cp [hl]
+	jr nz, .asm_2a365
+	inc hl
+	ld a, c
+	cp [hl]
+	jr z, .asm_2a36b
+
+.asm_2a365
+	ld a, [hli]
+	and a
+	jr nz, .asm_2a365
+	jr .asm_2a358
+
+.asm_2a36b
+	inc hl
+	ld d, h
+	ld e, l
+.asm_2a36e
+	ld h, d
+	ld l, e
+	call RNG
+	and $1f
+	jr z, .asm_2a3cd
+	and $3
+	cp [hl]
+	jr nc, .asm_2a36e
+	inc hl
+	ld c, a
+	ld b, $0
+	add hl, bc
+	add hl, bc
+	ld a, [$dfe7]
+	cp [hl]
+	jr nz, .asm_2a390
+	inc hl
+	ld a, [$dfe6]
+	cp [hl]
+	jr z, .asm_2a36e
+	dec hl
+
+.asm_2a390
+	ld a, [hli]
+	ld b, a
+	ld c, [hl]
+	ret
+
+	ld a, [RoamMon1MapGroup]
+	cp $ff
+	jr z, .asm_2a3a6
+	call $63cd
+	ld a, b
+	ld [RoamMon1MapGroup], a
+	ld a, c
+	ld [RoamMon1MapNumber], a
+
+.asm_2a3a6
+	ld a, [RoamMon2MapGroup]
+	cp $ff
+	jr z, .asm_2a3b8
+	call $63cd
+	ld a, b
+	ld [RoamMon2MapGroup], a
+	ld a, c
+	ld [RoamMon2MapNumber], a
+
+.asm_2a3b8
+	ld a, [RoamMon3MapGroup]
+	cp $ff
+	jr z, .asm_2a3ca
+	call $63cd
+	ld a, b
+	ld [RoamMon3MapGroup], a
+	ld a, c
+	ld [RoamMon3MapNumber], a
+
+.asm_2a3ca
+	jp Function2a3f6
+
+.asm_2a3cd
+	ld hl, $640f
+.asm_2a3d0
+	call RNG
+	and $f
+	cp $10
+	jr nc, .asm_2a3d0
+	inc a
+	ld b, a
+.asm_2a3db
+	dec b
+	jr z, .asm_2a3e4
+.asm_2a3de
+	ld a, [hli]
+	and a
+	jr nz, .asm_2a3de
+	jr .asm_2a3db
+
+.asm_2a3e4
+	ld a, [MapGroup]
+	cp [hl]
+	jr nz, .asm_2a3f2
+	inc hl
+	ld a, [MapNumber]
+	cp [hl]
+	jr z, .asm_2a3cd
+	dec hl
+
+.asm_2a3f2
+	ld a, [hli]
+	ld b, a
+	ld c, [hl]
+	ret
+; 2a3f6
+
+Function2a3f6: ; 2a3f6
+	ld a, [$dfe4]
+	ld [$dfe6], a
+	ld a, [$dfe5]
+	ld [$dfe7], a
+	ld a, [MapNumber]
+	ld [$dfe4], a
+	ld a, [MapGroup]
+	ld [$dfe5], a
+	ret
+; 2a40f
+
+INCBIN "baserom.gbc", $2a40f, $2a4a0 - $2a40f
+
+Function2a4a0: ; 2a4a0
+	and a
+	jr z, .asm_2a4a9
+	cp $fc
+	jr nc, .asm_2a4a9
+	and a
+	ret
+
+.asm_2a4a9
+	scf
+	ret
+; 2a4ab
+
+INCBIN "baserom.gbc", $2a4ab, $2a5e9 - $2a4ab
+
+
 WildMons1: ; 0x2a5e9
 INCLUDE "stats/wild/johto_grass.asm"
 
@@ -11417,8 +35783,175 @@
 INCLUDE "stats/wild/swarm_water.asm"
 
 
-INCBIN "baserom.gbc", $2b930, $2ba1a - $2b930
+Function2b930: ; 2b930
+	callba UpdateEnemyMonInParty
+	ld hl, PartyMon1CurHP
+	call Function2b995
+	push bc
+	ld hl, OTPartyMon1CurHP
+	call Function2b995
+	ld a, c
+	pop bc
+	cp c
+	jr z, .asm_2b94c
+	jr c, .asm_2b97f
+	jr .asm_2b976
 
+.asm_2b94c
+	call Function2b9e1
+	jr z, .asm_2b98a
+	ld a, e
+	cp $1
+	jr z, .asm_2b976
+	cp $2
+	jr z, .asm_2b97f
+	ld hl, PartyMon1CurHP
+	call Function2b9a6
+	push de
+	ld hl, OTPartyMon1CurHP
+	call Function2b9a6
+	pop hl
+	ld a, d
+	cp h
+	jr c, .asm_2b976
+	jr z, .asm_2b970
+	jr .asm_2b97f
+
+.asm_2b970
+	ld a, e
+	cp l
+	jr z, .asm_2b98a
+	jr nc, .asm_2b97f
+
+.asm_2b976
+	ld a, [$d0ee]
+	and $f0
+	ld [$d0ee], a
+	ret
+
+.asm_2b97f
+	ld a, [$d0ee]
+	and $f0
+	add $1
+	ld [$d0ee], a
+	ret
+
+.asm_2b98a
+	ld a, [$d0ee]
+	and $f0
+	add $2
+	ld [$d0ee], a
+	ret
+; 2b995
+
+Function2b995: ; 2b995
+	ld c, $0
+	ld b, $3
+	ld de, $002f
+.asm_2b99c
+	ld a, [hli]
+	or [hl]
+	jr nz, .asm_2b9a1
+	inc c
+
+.asm_2b9a1
+	add hl, de
+	dec b
+	jr nz, .asm_2b99c
+	ret
+; 2b9a6
+
+Function2b9a6: ; 2b9a6
+	ld de, $0000
+	ld c, $3
+.asm_2b9ab
+	ld a, [hli]
+	or [hl]
+	jr z, .asm_2b9d7
+	dec hl
+	xor a
+	ld [hProduct], a
+	ld a, [hli]
+	ld [hMultiplicand], a
+	ld a, [hli]
+	ld [$ffb5], a
+	xor a
+	ld [$ffb6], a
+	ld a, [hli]
+	ld b, a
+	ld a, [hld]
+	srl b
+	rr a
+	srl b
+	rr a
+	ld [hMultiplier], a
+	ld b, $4
+	call Divide
+	ld a, [$ffb6]
+	add e
+	ld e, a
+	ld a, [$ffb5]
+	adc d
+	ld d, a
+	dec hl
+
+.asm_2b9d7
+	push de
+	ld de, $002f
+	add hl, de
+	pop de
+	dec c
+	jr nz, .asm_2b9ab
+	ret
+; 2b9e1
+
+Function2b9e1: ; 2b9e1
+	ld hl, PartyMon1CurHP
+	call Function2ba01
+	jr nz, .asm_2b9f2
+	ld hl, OTPartyMon1CurHP
+	call Function2ba01
+	ld e, $1
+	ret
+
+.asm_2b9f2
+	ld hl, OTPartyMon1CurHP
+	call Function2ba01
+	ld e, $0
+	ret nz
+	ld e, $2
+	ld a, $1
+	and a
+	ret
+; 2ba01
+
+Function2ba01: ; 2ba01
+	ld d, $3
+.asm_2ba03
+	ld a, [hli]
+	ld b, a
+	ld a, [hli]
+	ld c, a
+	or b
+	jr z, .asm_2ba10
+	ld a, [hli]
+	cp b
+	ret nz
+	ld a, [hld]
+	cp c
+	ret nz
+
+.asm_2ba10
+	push de
+	ld de, $002e
+	add hl, de
+	pop de
+	dec d
+	jr nz, .asm_2ba03
+	ret
+; 2ba1a
+
+
 ChrisBackpic: ; 2ba1a
 INCBIN "gfx/misc/player.lz"
 ; 2bba1
@@ -11432,8 +35965,278 @@
 
 SECTION "bankB",ROMX,BANK[$B]
 
-INCBIN "baserom.gbc", $2C000, $2c1ef - $2C000
+Function2c000: ; 2c000
+	ld a, $e4
+	ld [rOBP0], a
+	call Function2c165
+	call Function2c01c
+	ld a, [IsInBattle]
+	dec a
+	ret z
+	jp Function2c03a
+; 2c012
 
+
+
+Function2c012: ; 2c012
+	ld a, $e4
+	ld [rOBP0], a
+	call Function2c165
+	jp Function2c03a
+; 2c01c
+
+Function2c01c: ; 2c01c
+	call Function2c0ad
+	ld hl, PartyMon1CurHP
+	ld de, PartyCount
+	call Function2c059
+	ld a, $60
+	ld hl, $cfc4
+	ld [hli], a
+	ld [hl], a
+	ld a, $8
+	ld [$d003], a
+	ld hl, Sprites
+	jp Function2c143
+; 2c03a
+
+
+
+Function2c03a: ; 2c03a
+	call Function2c0c5
+	ld hl, OTPartyMon1CurHP
+	ld de, OTPartyCount
+	call Function2c059
+	ld hl, $cfc4
+	ld a, $48
+	ld [hli], a
+	ld [hl], $20
+	ld a, $f8
+	ld [$d003], a
+	ld hl, $c418
+	jp Function2c143
+; 2c059
+
+
+Function2c059: ; 2c059
+	ld a, [de]
+	push af
+	ld de, Buffer1
+	ld c, $6
+	ld a, $34
+.asm_2c062
+	ld [de], a
+	inc de
+	dec c
+	jr nz, .asm_2c062
+	pop af
+	ld de, Buffer1
+.asm_2c06b
+	push af
+	call Function2c075
+	inc de
+	pop af
+	dec a
+	jr nz, .asm_2c06b
+	ret
+; 2c075
+
+Function2c075: ; 2c075
+	ld a, [hli]
+	and a
+	jr nz, .asm_2c07f
+	ld a, [hl]
+	and a
+	ld b, $33
+	jr z, .asm_2c08b
+
+.asm_2c07f
+	dec hl
+	dec hl
+	dec hl
+	ld a, [hl]
+	and a
+	ld b, $32
+	jr nz, .asm_2c08e
+	dec b
+	jr .asm_2c08e
+
+.asm_2c08b
+	dec hl
+	dec hl
+	dec hl
+
+.asm_2c08e
+	ld a, b
+	ld [de], a
+	ld bc, $0032
+	add hl, bc
+	ret
+; 2c095
+
+DrawPlayerExpBar: ; 2c095
+	ld hl, .data_2c0a9
+	ld de, $d004
+	ld bc, 4
+	call CopyBytes
+	ld hl, $c57a
+	ld de, -1
+	jr Function2c0f1
+
+.data_2c0a9
+	db $73
+	db $77
+	db $6f
+	db $76
+; 2c0ad
+
+Function2c0ad: ; 2c0ad
+	ld hl, .data_2c0c1
+	ld de, $d004
+	ld bc, 4
+	call CopyBytes
+	ld hl, $c57a
+	ld de, -1
+	jr Function2c0f1
+
+.data_2c0c1
+	db $73, $5c, $6f, $76
+; 2c0c5
+
+Function2c0c5: ; 2c0c5
+	ld hl, .data_2c0ed
+	ld de, $d004
+	ld bc, 4
+	call CopyBytes
+	ld hl, $c4c9
+	ld de, 1
+	call Function2c0f1
+	ld a, [IsInBattle]
+	dec a
+	ret nz
+	ld a, [TempEnemyMonSpecies]
+	dec a
+	call CheckSeenMon
+	ret z
+	ld hl, $c4b5
+	ld [hl], $5d
+	ret
+
+.data_2c0ed
+	db $6d
+	db $74
+	db $78
+	db $76
+; 2c0f1
+
+Function2c0f1: ; 2c0f1
+	ld a, [$d004]
+	ld [hl], a
+	ld bc, $0014
+	add hl, bc
+	ld a, [StartFlypoint]
+	ld [hl], a
+	ld b, $8
+.asm_2c0ff
+	add hl, de
+	ld a, [MovementBuffer]
+	ld [hl], a
+	dec b
+	jr nz, .asm_2c0ff
+	add hl, de
+	ld a, [EndFlypoint]
+	ld [hl], a
+	ret
+; 2c10d
+
+
+Function2c10d: ; 2c10d
+	call Function2c165
+	ld hl, PartyMon1CurHP
+	ld de, PartyCount
+	call Function2c059
+	ld hl, $cfc4
+	ld a, $50
+	ld [hli], a
+	ld [hl], $40
+	ld a, $8
+	ld [$d003], a
+	ld hl, Sprites
+	call Function2c143
+	ld hl, OTPartyMon1CurHP
+	ld de, OTPartyCount
+	call Function2c059
+	ld hl, $cfc4
+	ld a, $50
+	ld [hli], a
+	ld [hl], $68
+	ld hl, $c418
+	jp Function2c143
+; 2c143
+
+Function2c143: ; 2c143
+	ld de, Buffer1
+	ld c, $6
+.asm_2c148
+	ld a, [$cfc5]
+	ld [hli], a
+	ld a, [$cfc4]
+	ld [hli], a
+	ld a, [de]
+	ld [hli], a
+	ld a, $3
+	ld [hli], a
+	ld a, [$cfc4]
+	ld b, a
+	ld a, [$d003]
+	add b
+	ld [$cfc4], a
+	inc de
+	dec c
+	jr nz, .asm_2c148
+	ret
+; 2c165
+
+Function2c165: ; 2c165
+	ld de, $4172
+	ld hl, $8310
+	ld bc, $0b04
+	call Functiondc9
+	ret
+; 2c172
+
+INCBIN "baserom.gbc", $2c172, $2c1b2 - $2c172
+
+
+Function2c1b2: ; 2c1b2
+	call WhiteBGMap
+	call Functione5f
+	ld hl, $c4de
+	ld b, $9
+	ld c, $e
+	call TextBox
+	ld hl, $c508
+	ld de, PlayerName
+	call PlaceString
+	ld hl, $c56c
+	ld de, $d26b
+	call PlaceString
+	ld hl, $c549
+	ld a, $69
+	ld [hli], a
+	ld [hl], $6a
+	ld a, $b
+	ld hl, $410d
+	rst FarCall
+	ld b, $8
+	call GetSGBLayout
+	call Function32f9
+	ld a, $e4
+	ld [rOBP0], a
+	ret
+; 2c1ef
+
+
 TrainerClassNames: ; 2c1ef
 	db "LEADER@"
 	db "LEADER@"
@@ -11504,9 +36307,292 @@
 	db "MYSTICALMAN@"
 
 
-INCBIN "baserom.gbc", $2c41a, $2ee6c - $2c41a
+INCBIN "baserom.gbc", $2c41a, $2c7fb - $2c41a
 
 
+Function2c7fb: ; 2c7fb
+	ld hl, StringBuffer2
+	ld de, $d066
+	ld bc, $000c
+	call CopyBytes
+	call WhiteBGMap
+	ld a, $14
+	ld hl, $404f
+	rst FarCall
+	ld a, $14
+	ld hl, $4405
+	rst FarCall
+	ld a, $14
+	ld hl, $43e0
+	rst FarCall
+	ld a, $3
+	ld [PartyMenuActionText], a
+.asm_2c821
+	callba WritePartyMenuTilemap
+	callba PrintPartyMenuText
+	call WaitBGMap
+	call Function32f9
+	call DelayFrame
+	callba PartyMenuSelect
+	push af
+	ld a, [CurPartySpecies]
+	cp $fd
+	pop bc
+	jr z, .asm_2c854
+	push bc
+	ld hl, $d066
+	ld de, StringBuffer2
+	ld bc, $000c
+	call CopyBytes
+	pop af
+	ret
+
+.asm_2c854
+	push hl
+	push de
+	push bc
+	push af
+	ld de, SFX_WRONG
+	call StartSFX
+	call WaitSFX
+	pop af
+	pop bc
+	pop de
+	pop hl
+	jr .asm_2c821
+; 2c867
+
+
+INCBIN "baserom.gbc", $2c867, $2cb3e - $2c867
+
+
+PrintMoveDescription: ; 2cb3e
+	push hl
+	ld hl, MoveDescriptions
+	ld a, [CurSpecies]
+	dec a
+	ld c, a
+	ld b, 0
+	add hl, bc
+	add hl, bc
+	ld a, [hli]
+	ld e, a
+	ld d, [hl]
+	pop hl
+	jp PlaceString
+; 2cb52
+
+MoveDescriptions: ; 2cb52
+INCLUDE "battle/moves/move_descriptions.asm"
+; 2ed44
+
+
+Function2ed44: ; 2ed44
+	call Function2ede6
+	ld hl, PartyMon1PokerusStatus
+	ld a, [PartyCount]
+	ld b, a
+	ld de, $0030
+.asm_2ed51
+	ld a, [hl]
+	and $f
+	jr nz, .asm_2ed9a
+	add hl, de
+	dec b
+	jr nz, .asm_2ed51
+	ld hl, StatusFlags2
+	bit 6, [hl]
+	ret z
+	call RNG
+	ld a, [hRandomAdd]
+	and a
+	ret nz
+	ld a, [hRandomSub]
+	cp $3
+	ret nc
+	ld a, [PartyCount]
+	ld b, a
+.asm_2ed70
+	call RNG
+	and $7
+	cp b
+	jr nc, .asm_2ed70
+	ld hl, PartyMon1PokerusStatus
+	call GetPartyLocation
+	ld a, [hl]
+	and $f0
+	ret nz
+.asm_2ed82
+	call RNG
+	and a
+	jr z, .asm_2ed82
+	ld b, a
+	and $f0
+	jr z, .asm_2ed91
+	ld a, b
+	and $7
+	inc a
+
+.asm_2ed91
+	ld b, a
+	swap b
+	and $3
+	inc a
+	add b
+	ld [hl], a
+	ret
+
+.asm_2ed9a
+	call RNG
+	cp $55
+	ret nc
+	ld a, [PartyCount]
+	cp $1
+	ret z
+	ld c, [hl]
+	ld a, b
+	cp $2
+	jr c, .asm_2edc3
+	call RNG
+	cp $80
+	jr c, .asm_2edc3
+.asm_2edb3
+	add hl, de
+	ld a, [hl]
+	and a
+	jr z, .asm_2edd9
+	ld c, a
+	and $3
+	ret z
+	dec b
+	ld a, b
+	cp $1
+	jr nz, .asm_2edb3
+	ret
+
+.asm_2edc3
+	ld a, [PartyCount]
+	cp b
+	ret z
+	ld a, l
+	sub e
+	ld l, a
+	ld a, h
+	sbc d
+	ld h, a
+	ld a, [hl]
+	and a
+	jr z, .asm_2edd9
+	ld c, a
+	and $3
+	ret z
+	inc b
+	jr .asm_2edc3
+
+.asm_2edd9
+	ld a, c
+	and $f0
+	ld b, a
+	ld a, c
+	swap a
+	and $3
+	inc a
+	add b
+	ld [hl], a
+	ret
+; 2ede6
+
+Function2ede6: ; 2ede6
+	ld hl, StatusFlags2
+	bit 6, [hl]
+	ret z
+	call RNG
+	cp $10
+	ret nc
+	ld hl, PartyMons
+	ld a, [PartyCount]
+.asm_2edf8
+	push af
+	push hl
+	ld a, [hl]
+	cp SHUCKLE
+	jr nz, .asm_2ee08
+	ld bc, PartyMon1Item - PartyMon1Species
+	add hl, bc
+	ld a, [hl]
+	cp BERRY
+	jr z, .asm_2ee12
+
+.asm_2ee08
+	pop hl
+	ld bc, PartyMon2 - PartyMon1
+	add hl, bc
+	pop af
+	dec a
+	jr nz, .asm_2edf8
+	ret
+
+.asm_2ee12
+	ld a, BERRY_JUICE
+	ld [hl], a
+	pop hl
+	pop af
+	ret
+; 2ee18
+
+Function2ee18: ; 2ee18
+	ld a, [InLinkBattle]
+	and a
+	ret z
+	ld a, $b
+	ld hl, $41b2
+	rst FarCall
+	ld c, 150
+	call DelayFrames
+	call ClearTileMap
+	call ClearSprites
+	ret
+; 2ee2f
+
+Function2ee2f: ; 2ee2f
+	xor a
+	ld [$ffde], a
+	call DelayFrame
+	ld b, $6
+	ld hl, PartyMon1CurHP
+	ld de, $002f
+.asm_2ee3d
+	ld a, [hli]
+	or [hl]
+	jr nz, .asm_2ee45
+	add hl, de
+	dec b
+	jr nz, .asm_2ee3d
+
+.asm_2ee45
+	ld de, $fffd
+	add hl, de
+	ld a, [hl]
+	ld [BattleMonLevel], a
+	ld a, $34
+	call Predef
+	ld a, $f
+	ld hl, $6d9f
+	rst FarCall
+	ld a, $1
+	ld [hBGMapMode], a
+	call ClearSprites
+	call ClearTileMap
+	xor a
+	ld [hBGMapMode], a
+	ld [hWY], a
+	ld [rWY], a
+	ld [$ffde], a
+	ret
+; 2ee6c
+
+
+
 PlayBattleMusic: ; 2ee6c
 
 	push hl
@@ -11662,9 +36748,9 @@
 	ld a, $f
 	rst FarCall
 
-	call $1fbf
+	call Function1fbf
 
-	ld hl, $ffd6
+	ld hl, hBGMapAddress
 	xor a
 	ld [hli], a
 	ld [hl], $98
@@ -11831,16 +36917,763 @@
 
 SECTION "bankE",ROMX,BANK[$E]
 
-INCBIN "baserom.gbc", $38000, $38591 - $38000
+Function38000: ; 38000
+	and a
+	ld a, [IsInBattle]
+	dec a
+	ret z
+	ld a, [InLinkBattle]
+	and a
+	ret nz
+	ld a, $f
+	ld hl, $68d1
+	rst FarCall
+	ret nz
+	ld a, [PlayerSubStatus5]
+	bit 7, a
+	jr nz, Function38041
+	ld a, [$c731]
+	and a
+	jr nz, Function38041
+	ld hl, $55a1
+	ld a, [$cfc0]
+	and a
+	jr nz, .asm_38032
+	ld a, [TrainerClass]
+	dec a
+	ld bc, $0007
+	call AddNTimes
 
+.asm_38032
+	bit 0, [hl]
+	jp nz, Function38045
+	bit 1, [hl]
+	jp nz, Function38083
+	bit 2, [hl]
+	jp nz, Function380c1
+	; fallthrough
+; 38041
 
+Function38041: ; 38041
+	call Function38105
+	ret
+; 38045
+
+Function38045: ; 38045
+	callab Function0x34941
+	ld a, [$c717]
+	and $f0
+	jp z, Function38041
+	cp $10
+	jr nz, .asm_38061
+	call RNG
+	cp $80
+	jr c, .asm_38077
+	jp Function38041
+
+.asm_38061
+	cp $20
+	jr nz, .asm_3806f
+	call RNG
+	cp $c8
+	jr c, .asm_38077
+	jp Function38041
+
+.asm_3806f
+	call RNG
+	cp $a
+	jp c, Function38041
+
+.asm_38077
+	ld a, [$c717]
+	and $f
+	inc a
+	ld [$c718], a
+	jp Function3844b
+; 38083
+
+Function38083: ; 38083
+	callab Function0x34941
+	ld a, [$c717]
+	and $f0
+	jp z, Function38041
+	cp $10
+	jr nz, .asm_3809f
+	call RNG
+	cp $14
+	jr c, .asm_380b5
+	jp Function38041
+
+.asm_3809f
+	cp $20
+	jr nz, .asm_380ad
+	call RNG
+	cp $1e
+	jr c, .asm_380b5
+	jp Function38041
+
+.asm_380ad
+	call RNG
+	cp $c8
+	jp c, Function38041
+
+.asm_380b5
+	ld a, [$c717]
+	and $f
+	inc a
+	ld [$c718], a
+	jp Function3844b
+; 380c1
+
+Function380c1: ; 380c1
+	callab Function0x34941
+	ld a, [$c717]
+	and $f0
+	jp z, Function38041
+	cp $10
+	jr nz, .asm_380dd
+	call RNG
+	cp $32
+	jr c, .asm_380f3
+	jp Function38041
+
+.asm_380dd
+	cp $20
+	jr nz, .asm_380eb
+	call RNG
+	cp $80
+	jr c, .asm_380f3
+	jp Function38041
+
+.asm_380eb
+	call RNG
+	cp $32
+	jp c, Function38041
+
+.asm_380f3
+	ld a, [$c717]
+	and $f
+	inc a
+	ld [$c718], a
+	jp Function3844b
+; 380ff
+
+
+Function380ff: ; 380ff
+	ld a, [EnemySubStatus5]
+	bit 7, a
+	ret
+; 38105
+
+
+Function38105: ; 38105
+	ld a, [$cfc0]
+	and a
+	ret nz
+	ld a, [$c650]
+	ld b, a
+	ld a, [$c651]
+	or b
+	ret z
+	call Function38170
+	ret nc
+	ld a, [TrainerClass]
+	dec a
+	ld hl, $55a1
+	ld bc, $0007
+	call AddNTimes
+	ld b, h
+	ld c, l
+	ld hl, $4196
+	ld de, $c650
+.asm_3812c
+	ld a, [hl]
+	and a
+	inc a
+	ret z
+	ld a, [de]
+	cp [hl]
+	jr z, .asm_3813f
+	inc de
+	ld a, [de]
+	cp [hl]
+	jr z, .asm_3813f
+	dec de
+	inc hl
+	inc hl
+	inc hl
+	jr .asm_3812c
+
+.asm_3813f
+	inc hl
+	push hl
+	push de
+	ld de, $414a
+	push de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 3814a
+
+INCBIN "baserom.gbc", $3814a, $38170 - $3814a
+
+
+Function38170: ; 38170
+	ld a, [OTPartyCount]
+	ld d, a
+	ld e, $0
+	ld hl, OTPartyMon1Level
+	ld bc, $0030
+.asm_3817c
+	ld a, [hl]
+	cp e
+	jr c, .asm_38181
+	ld e, a
+.asm_38181
+	add hl, bc
+	dec d
+	jr nz, .asm_3817c
+
+	ld a, [CurOTMon]
+	ld hl, OTPartyMon1Level
+	call AddNTimes
+	ld a, [hl]
+	cp e
+	jr nc, .asm_38194
+	and a
+	ret
+
+.asm_38194
+	scf
+	ret
+; 38196
+
+INCBIN "baserom.gbc", $38196, $38387 - $38196
+
+
+Function38387: ; 38387
+	call UpdateEnemyMonInParty
+	callba Function3e036
+	ld a, $1
+	ld [hBGMapMode], a
+	ld hl, $c6e6
+	dec [hl]
+	scf
+	ret
+; 3839a
+
+Function3839a: ; 3839a
+	push de
+	ld de, SFX_FULL_HEAL
+	call StartSFX
+	pop de
+	ret
+; 383a3
+
+INCBIN "baserom.gbc", $383a3, $3844b - $383a3
+
+
+Function3844b: ; 3844b
+	ld a, [OTPartyCount]
+	ld c, a
+	ld hl, OTPartyMon1CurHP
+	ld d, 0
+.asm_38454
+	ld a, [hli]
+	ld b, a
+	ld a, [hld]
+	or b
+	jr z, .asm_3845b
+	inc d
+
+.asm_3845b
+	push bc
+	ld bc, $0030
+	add hl, bc
+	pop bc
+	dec c
+	jr nz, .asm_38454
+	ld a, d
+	cp $2
+	jp nc, Function3846c
+	and a
+	ret
+; 3846c
+
+Function3846c: ; 3846c
+	ld a, $1
+	ld [$c711], a
+	ld [$c70f], a
+	ld hl, EnemySubStatus4
+	res 6, [hl]
+	xor a
+	ld [hBattleTurn], a
+	ld hl, $5c5b
+	ld a, $f
+	rst FarCall
+	push af
+	ld a, [CurOTMon]
+	ld hl, OTPartyMon1Status
+	ld bc, $0030
+	call AddNTimes
+	ld d, h
+	ld e, l
+	ld hl, EnemyMonStatus
+	ld bc, $0004
+	call CopyBytes
+	pop af
+	jr c, .asm_384a3
+	ld hl, UnknownText_0x384d0
+	call PrintText
+
+.asm_384a3
+	ld a, $1
+	ld [$d264], a
+	ld hl, $5834
+	ld a, $f
+	rst FarCall
+	ld hl, $5867
+	ld a, $f
+	rst FarCall
+	ld hl, PlayerSubStatus1
+	res 7, [hl]
+	ld a, $f
+	ld hl, $54e1
+	rst FarCall
+	ld a, $f
+	ld hl, $557a
+	rst FarCall
+	xor a
+	ld [$d264], a
+	ld a, [InLinkBattle]
+	and a
+	ret nz
+	scf
+	ret
+; 384d0
+
+UnknownText_0x384d0: ; 384d0
+	text_jump UnknownText_0x1bcf9c, BANK(UnknownText_0x1bcf9c)
+	db "@"
+; 384d5
+
+Function384d5: ; 384d5
+	call Function3839a
+	call Function384e0
+	ld a, $34
+	jp Function38568
+; 384e0
+
+Function384e0: ; 384e0
+	ld a, [CurOTMon]
+	ld hl, OTPartyMon1Status
+	ld bc, $0030
+	call AddNTimes
+	xor a
+	ld [hl], a
+	ld [EnemyMonStatus], a
+	ld hl, EnemySubStatus5
+	res 0, [hl]
+	ret
+; 384f7
+
+Function384f7: ; 384f7
+	call Function3839a
+	ld hl, EnemySubStatus4
+	set 0, [hl]
+	ld a, $21
+	jp Function38568
+; 38504
+
+Function38504: ; 38504
+	call Function3839a
+	ld hl, EnemySubStatus4
+	set 1, [hl]
+	ld a, $29
+	jp Function38568
+; 38511
+
+Function38511: ; 38511
+	call Function3839a
+	ld hl, EnemySubStatus4
+	set 2, [hl]
+	ld a, $2c
+	jp Function38568
+; 3851e
+
+Function3851e: ; 3851e
+	ld [hMultiplier], a
+	ld hl, EnemyMonMaxHPHi
+	ld a, [hli]
+	ld [hProduct], a
+	ld a, [hl]
+	ld [hMultiplicand], a
+	ld b, $2
+	call Divide
+	ld a, [$ffb6]
+	ld c, a
+	ld a, [$ffb5]
+	ld b, a
+	ld hl, EnemyMonHPLo
+	ld a, [hld]
+	ld e, a
+	ld a, [hl]
+	ld d, a
+	ld a, d
+	sub b
+	ret nz
+	ld a, e
+	sub c
+	ret
+; 38541
+
+Function38541: ; 38541
+	ld b, $0
+	ld a, $31
+	jr Function38557
+; 38547
+
+Function38547: ; 38547
+	ld b, $1
+	ld a, $33
+	jr Function38557
+; 3854d
+
+Function3854d: ; 3854d
+	ld b, $2
+	ld a, $34
+	jr Function38557
+; 38553
+
+Function38553: ; 38553
+	ld b, $3
+	ld a, $35
+
+Function38557
+	ld [$d1f1], a
+	push bc
+	call Function38571
+	pop bc
+	callba Function0x361ef
+	jp Function38387
+; 38568
+
+
+Function38568: ; 38568
+	ld [$d1f1], a
+	call Function38571
+	jp Function38387
+; 38571
+
+Function38571: ; 38571
+	ld a, [$d1f1]
+	ld [$d265], a
+	call GetItemName
+	ld hl, StringBuffer1
+	ld de, $d050
+	ld bc, $000d
+	call CopyBytes
+	ld hl, UnknownText_0x3858c
+	jp PrintText
+; 3858c
+
+UnknownText_0x3858c: ; 3858c
+	text_jump UnknownText_0x1bcfaf, BANK(UnknownText_0x1bcfaf)
+	db "@"
+; 38591
+
+
 AIScoring: ; 38591
 INCLUDE "battle/ai/scoring.asm"
 
 
-INCBIN "baserom.gbc", $3952d, $39999 - $3952d
+Function3952d: ; 3952d
+	ld hl, RivalName
+	ld a, c
+	cp $9
+	jr z, .asm_39544
+	ld [CurSpecies], a
+	ld a, $7
+	ld [$cf61], a
+	call GetName
+	ld de, StringBuffer1
+	ret
 
+.asm_39544
+	ld de, StringBuffer1
+	push de
+	ld bc, $000b
+	call CopyBytes
+	pop de
+	ret
+; 39550
 
+Function39550: ; 39550
+	ld hl, $d26b
+	ld a, [InLinkBattle]
+	and a
+	jr nz, .asm_3956f
+	ld hl, RivalName
+	ld a, c
+	cp $9
+	jr z, .asm_3956f
+	ld [CurSpecies], a
+	ld a, $7
+	ld [$cf61], a
+	call GetName
+	ld hl, StringBuffer1
+
+.asm_3956f
+	ld bc, $000d
+	ld de, $c656
+	push de
+	call CopyBytes
+	pop de
+	ret
+; 3957b
+
+Function3957b: ; 3957b
+	ld a, [TrainerClass]
+	ld c, a
+	call Function39550
+	ld a, [TrainerClass]
+	dec a
+	ld hl, $559c
+	ld bc, $0007
+	call AddNTimes
+	ld de, $c650
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	ld a, [hl]
+	ld [$c652], a
+	ret
+; 3959c
+
+
+INCBIN "baserom.gbc", $3959c, $39771 - $3959c
+
+
+Function39771: ; 39771
+	ld a, [$cfc0]
+	bit 0, a
+	ret nz
+	ld a, [InLinkBattle]
+	and a
+	ret nz
+	ld hl, OTPartyCount
+	xor a
+	ld [hli], a
+	dec a
+	ld [hl], a
+	ld hl, OTPartyMon1Species
+	ld bc, $0120
+	xor a
+	call ByteFill
+	ld a, [OtherTrainerClass]
+	cp $c
+	jr nz, .asm_3979e
+	ld a, [OtherTrainerID]
+	cp $2
+	jr z, .asm_397d3
+	ld a, [OtherTrainerClass]
+
+.asm_3979e
+	dec a
+	ld c, a
+	ld b, $0
+	ld hl, TrainerGroups
+	add hl, bc
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [OtherTrainerID]
+	ld b, a
+.asm_397ae
+	dec b
+	jr z, .asm_397b8
+.asm_397b1
+	ld a, [hli]
+	cp $ff
+	jr nz, .asm_397b1
+	jr .asm_397ae
+
+.asm_397b8
+	ld a, [hli]
+	cp $50
+	jr nz, .asm_397b8
+	ld a, [hli]
+	ld c, a
+	ld b, $0
+	ld d, h
+	ld e, l
+	ld hl, $57e3
+	add hl, bc
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld bc, .data_397d0
+	push bc
+	jp [hl]
+
+.data_397d0
+.asm_397d0
+	db $c3
+	db $1b
+	db $59
+
+.asm_397d3
+	ld a, $0
+	call GetSRAMBank
+	ld de, $ac0a
+	call Function39806
+	call CloseSRAM
+	jr .asm_397d0
+; 397e3
+
+INCBIN "baserom.gbc", $397e3, $39806 - $397e3
+
+
+Function39806: ; 39806
+	ld h, d
+	ld l, e
+.asm_39808
+	ld a, [hli]
+	cp $ff
+	ret z
+	ld [CurPartyLevel], a
+	ld a, [hli]
+	ld [CurPartySpecies], a
+	ld a, $1
+	ld [MonType], a
+	push hl
+	ld a, $6
+	call Predef
+	ld a, [OTPartyCount]
+	dec a
+	ld hl, OTPartyMon1Move1
+	ld bc, $0030
+	call AddNTimes
+	ld d, h
+	ld e, l
+	pop hl
+	ld b, $4
+.asm_39830
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec b
+	jr nz, .asm_39830
+	push hl
+	ld a, [OTPartyCount]
+	dec a
+	ld hl, OTPartyMon1Species
+	ld bc, $0030
+	call AddNTimes
+	ld d, h
+	ld e, l
+	ld hl, $0017
+	add hl, de
+	push hl
+	ld hl, $0002
+	add hl, de
+	pop de
+	ld b, $4
+.asm_39852
+	ld a, [hli]
+	and a
+	jr z, .asm_3986e
+	push hl
+	push bc
+	dec a
+	ld hl, $5b00
+	ld bc, $0007
+	call AddNTimes
+	ld a, $10
+	call GetFarByte
+	pop bc
+	pop hl
+	ld [de], a
+	inc de
+	dec b
+	jr nz, .asm_39852
+
+.asm_3986e
+	pop hl
+	jr .asm_39808
+; 39871
+
+INCBIN "baserom.gbc", $39871, $39939 - $39871
+
+
+Function39939: ; 39939
+	ld a, [$cfc0]
+	bit 0, a
+	ld hl, $d26b
+	jp nz, $5984
+	ld a, [OtherTrainerID]
+	ld b, a
+	ld a, [OtherTrainerClass]
+	ld c, a
+	ld a, c
+	cp $c
+	jr nz, .asm_3996d
+	ld a, $0
+	call GetSRAMBank
+	ld a, [$abfd]
+	and a
+	call CloseSRAM
+	jr z, .asm_3996d
+	ld a, $0
+	call GetSRAMBank
+	ld hl, $abfe
+	call $5984
+	jp CloseSRAM
+
+.asm_3996d
+	dec c
+	push bc
+	ld b, 0
+	ld hl, TrainerGroups
+	add hl, bc
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	pop bc
+.asm_3997a
+	dec b
+	jr z, .asm_39984
+.asm_3997d
+	ld a, [hli]
+	cp $ff
+	jr nz, .asm_3997d
+	jr .asm_3997a
+
+.asm_39984
+	ld de, StringBuffer1
+	push de
+	ld bc, $000b
+	call CopyBytes
+	pop de
+	ret
+; 39990
+
+Function39990: ; 39990
+	ld de, StringBuffer1
+	push de
+	ld bc, $000b
+	pop de
+	ret
+; 39999
+
+
+
 TrainerGroups: ; 0x39999
 INCLUDE "trainers/trainer_pointers.asm"
 
@@ -11849,8 +37682,1866 @@
 
 SECTION "bankF",ROMX,BANK[$F]
 
-INCBIN "baserom.gbc", $3c000, $3cc83 - $3c000
+Function3c000: ; 3c000
+	xor a
+	ld [$c664], a
+	ld [$c6fc], a
+	ld [$d0ec], a
+	ld [BattleEnded], a
+	inc a
+	ld [$d264], a
+	ld hl, OTPartyMon1CurHP
+	ld bc, $002f
+	ld d, $3
+.asm_3c019
+	inc d
+	ld a, [hli]
+	or [hl]
+	jr nz, .asm_3c021
+	add hl, bc
+	jr .asm_3c019
 
+.asm_3c021
+	ld a, d
+	ld [$d430], a
+	ld a, [InLinkBattle]
+	and a
+	jr z, .asm_3c031
+	ld a, [$ffcb]
+	cp $2
+.data_3c02f
+	db $28
+	db $1b
+
+.asm_3c031
+	ld a, [IsInBattle]
+	dec a
+	jr z, .asm_3c047
+	xor a
+	ld [$c718], a
+	call Function3d834
+	call Function3d867
+	call Function3dc18
+	call Function3d4e1
+
+.asm_3c047
+	ld c, $28
+	call DelayFrames
+	call Function309d
+	call Function3d873
+	ld a, d
+	and a
+	jp z, LostBattle
+	call Function30b4
+	ld a, [BattleType]
+	cp $2
+	jp z, Function3c0e2
+	cp $3
+	jp z, Function3c0e2
+	xor a
+	ld [CurPartyMon], a
+.asm_3c06b
+	call Function3d887
+	jr nz, .asm_3c076
+	ld hl, CurPartyMon
+	inc [hl]
+	jr .asm_3c06b
+
+.asm_3c076
+	ld a, [CurBattleMon]
+	ld [$c71a], a
+	ld a, [CurPartyMon]
+	ld [CurBattleMon], a
+	inc a
+	ld hl, PartyCount
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [hl]
+	ld [CurPartySpecies], a
+	ld [TempBattleMonSpecies], a
+	ld hl, $c505
+	ld a, $9
+	call Function3d490
+	call Function309d
+	call Function3d57a
+	call Function3da0d
+	call Function3dab1
+	call Function3f26d
+	call Function3dbde
+	call Function3dc18
+	call Function3db5f
+	call EmptyBattleTextBox
+	call Function309d
+	call SetPlayerTurn
+	call Function3dc23
+	ld a, [InLinkBattle]
+	and a
+	jr z, .asm_3c0df
+	ld a, [$ffcb]
+	cp $2
+	jr nz, .asm_3c0df
+	xor a
+	ld [$c718], a
+	call Function3d834
+	call Function3d867
+	call Function3dc18
+	call Function3d4e1
+	call SetEnemyTurn
+	call Function3dc23
+
+.asm_3c0df
+	jp Function3c12f
+; 3c0e2
+
+Function3c0e2: ; 3c0e2
+	jp Function3e139
+; 3c0e5
+
+
+
+Function3c0e5: ; 3c0e5
+	call Function30b4
+	ld a, [$d0ee]
+	and $c0
+	add $2
+	ld [$d0ee], a
+	ld a, [InLinkBattle]
+	and a
+	ld hl, $47bd
+	jr z, .asm_3c115
+	ld a, [$d0ee]
+	and $c0
+	ld [$d0ee], a
+	ld hl, $47cf
+	call Function3d2e0
+	jr nc, .asm_3c115
+	ld hl, $cd2a
+	bit 4, [hl]
+	jr nz, .asm_3c118
+	ld hl, $5863
+
+.asm_3c115
+	call FarBattleTextBox
+
+.asm_3c118
+	call Function3ceec
+	call Function3d2e0
+	jr c, .asm_3c126
+
+	ld de, SFX_RUN
+	call StartSFX
+
+.asm_3c126
+	call SetPlayerTurn
+	ld a, 1
+	ld [BattleEnded], a
+	ret
+; 3c12f
+
+Function3c12f: ; 3c12f
+	call Function3c1bf
+	call Function3c3f5
+	jp c, $41be
+	xor a
+	ld [$c710], a
+	ld [$c711], a
+	ld [$d264], a
+	ld [$c73f], a
+	ld [$c740], a
+	ld [CurDamage], a
+	ld [$d257], a
+	call Function3c27c
+	call UpdateBattleMonInParty
+	callba AIChooseMove
+	call Function3d2f1
+	jr nz, .asm_3c174
+	callba Function100da5
+	callba Function100641
+	callba Function100dd8
+	jp c, $41be
+
+.asm_3c174
+	call Function3c410
+	jr c, .asm_3c18a
+.asm_3c179
+	call Function3e139
+	jr c, .asm_3c1be
+	ld a, [BattleEnded]
+	and a
+	jr nz, .asm_3c1be
+	ld a, [$d232]
+	and a
+	jr nz, .asm_3c1be
+
+.asm_3c18a
+	call Function3c434
+	jr nz, .asm_3c179
+	call Function3c300
+	jr c, .asm_3c1be
+	call Function3c314
+	jr c, .asm_3c19e
+	call Function3c5fe
+	jr .asm_3c1a1
+
+.asm_3c19e
+	call Function3c664
+
+.asm_3c1a1
+	call Function3d2e0
+	jr c, .asm_3c1be
+	ld a, [$d232]
+	and a
+	jr nz, .asm_3c1be
+	ld a, [BattleEnded]
+	and a
+	jr nz, .asm_3c1be
+	call Function3c1d6
+	ld a, [BattleEnded]
+	and a
+	jr nz, .asm_3c1be
+	jp Function3c12f
+
+.asm_3c1be
+	ret
+; 3c1bf
+
+Function3c1bf: ; 3c1bf
+	ret
+; 3c1c0
+
+
+Function3c1c0: ; 3c1c0
+	ld a, $5
+	call GetSRAMBank
+	ld hl, $a89b
+	inc [hl]
+	jr nz, .asm_3c1d2
+	dec hl
+	inc [hl]
+	jr nz, .asm_3c1d2
+	dec [hl]
+	inc hl
+	dec [hl]
+
+.asm_3c1d2
+	call CloseSRAM
+	ret
+; 3c1d6
+
+
+Function3c1d6: ; 3c1d6
+	ld a, [$ffcb]
+	cp $1
+	jr z, .asm_3c1fe
+	call Function3c23c
+	ret c
+	call Function3ca26
+	call Function3c23c
+	ret c
+	call HandleWeather
+	call Function3c23c
+	ret c
+	call Function3c874
+	call Function3c23c
+	ret c
+	call Function3c801
+	call Function3c23c
+	ret c
+	jr .asm_3c21e
+
+.asm_3c1fe
+	call Function3c25c
+	ret c
+	call Function3ca26
+	call Function3c25c
+	ret c
+	call HandleWeather
+	call Function3c25c
+	ret c
+	call Function3c874
+	call Function3c25c
+	ret c
+	call Function3c801
+	call Function3c25c
+	ret c
+
+.asm_3c21e
+	call Function3c8eb
+	call Function3c93c
+	call Function3ca8f
+	call Function3cafb
+	call Function3cb36
+	call Function3de97
+	call Function3dcf9
+	call UpdateBattleMonInParty
+	call Function309d
+	jp Function3c4df
+; 3c23c
+
+Function3c23c: ; 3c23c
+	call $4710
+	jr nz, .asm_3c24a
+	call Function3d14e
+	ld a, [BattleEnded]
+	and a
+	jr nz, .asm_3c25a
+
+.asm_3c24a
+	call $470b
+	jr nz, .asm_3c258
+	call Function3cd55
+	ld a, [BattleEnded]
+	and a
+	jr nz, .asm_3c25a
+
+.asm_3c258
+	and a
+	ret
+
+.asm_3c25a
+	scf
+	ret
+; 3c25c
+
+Function3c25c: ; 3c25c
+	call $470b
+	jr nz, .asm_3c26a
+	call Function3cd55
+	ld a, [BattleEnded]
+	and a
+	jr nz, .asm_3c27a
+
+.asm_3c26a
+	call $4710
+	jr nz, .asm_3c278
+	call Function3d14e
+	ld a, [BattleEnded]
+	and a
+	jr nz, .asm_3c27a
+
+.asm_3c278
+	and a
+	ret
+
+.asm_3c27a
+	scf
+	ret
+; 3c27c
+
+Function3c27c: ; 3c27c
+	ld a, [$ffcb]
+	cp $1
+	jr z, .asm_3c287
+	call $428a
+	jr .asm_3c296
+
+.asm_3c287
+	call $4296
+	call SetPlayerTurn
+	ld de, PartyMon1Item
+	ld a, [CurBattleMon]
+	ld b, a
+	jr .asm_3c2a0
+
+.asm_3c296
+	call SetEnemyTurn
+	ld de, OTPartyMon1Item
+	ld a, [CurOTMon]
+	ld b, a
+
+.asm_3c2a0
+	push de
+	push bc
+	callab GetUserItem
+	ld a, [hl]
+	ld [$d265], a
+	sub $98
+	pop bc
+	pop de
+	ret nz
+	ld [hl], a
+	ld h, d
+	ld l, e
+	ld a, b
+	call GetPartyLocation
+	xor a
+	ld [hl], a
+	ld a, $2
+	call GetBattleVarPair
+	push af
+	set 7, [hl]
+	ld a, $c
+	call GetBattleVarPair
+	push hl
+	push af
+	xor a
+	ld [hl], a
+	ld [AttackMissed], a
+	ld [EffectFailed], a
+	callba BattleCommand77
+	pop af
+	pop hl
+	ld [hl], a
+	call GetItemName
+	ld hl, $4bde
+	call FarBattleTextBox
+	callab BattleCommand8c
+	pop af
+	bit 7, a
+	ret nz
+	xor a
+	ld [$cfca], a
+	ld de, $0103
+	call Function3ee0f
+	call Function3c8e4
+	ld hl, $4d97
+	jp FarBattleTextBox
+; 3c300
+
+Function3c300: ; 3c300
+	ld a, [InLinkBattle]
+	and a
+	jr z, .asm_3c30d
+	ld a, [$d430]
+	cp $f
+	jr z, .asm_3c30f
+
+.asm_3c30d
+	and a
+	ret
+
+.asm_3c30f
+	call Function3c0e5
+	scf
+	ret
+; 3c314
+
+Function3c314: ; 3c314
+	ld a, [InLinkBattle]
+	and a
+	jr z, .asm_3c35b
+	ld a, [$d430]
+	cp $e
+	jr z, .asm_3c35b
+	cp $d
+	jr z, .asm_3c35b
+	sub $4
+	jr c, .asm_3c35b
+	ld a, [$d0ec]
+	cp $2
+	jr nz, .asm_3c34c
+	ld a, [$ffcb]
+	cp $2
+	jr z, .asm_3c341
+	call FarBattleRNG
+	cp $80
+	jp c, $43f1
+	jp Function3c3f3
+
+.asm_3c341
+	call FarBattleRNG
+	cp $80
+	jp c, Function3c3f3
+	jp $43f1
+
+.asm_3c34c
+	callab Function3846c
+	call SetEnemyTurn
+	call Function3dc23
+	jp Function3c3f3
+
+.asm_3c35b
+	ld a, [$d0ec]
+	and a
+	jp nz, $43f1
+	call Function3c5b4
+	jr z, .asm_3c36d
+	jp c, $43f1
+	jp Function3c3f3
+
+.asm_3c36d
+	call SetPlayerTurn
+	callab GetUserItem
+	push bc
+	callab GetOpponentItem
+	pop de
+	ld a, d
+	cp $4a
+	jr nz, .asm_3c391
+	ld a, b
+	cp $4a
+	jr z, .asm_3c39f
+	call FarBattleRNG
+	cp e
+	jr nc, .asm_3c3c5
+	jp $43f1
+
+.asm_3c391
+	ld a, b
+	cp $4a
+	jr nz, .asm_3c3c5
+	call FarBattleRNG
+	cp c
+	jr nc, .asm_3c3c5
+	jp Function3c3f3
+
+.asm_3c39f
+	ld a, [$ffcb]
+	cp $2
+	jr z, .asm_3c3b5
+	call FarBattleRNG
+	cp c
+	jp c, Function3c3f3
+	call FarBattleRNG
+	cp e
+	jp c, $43f1
+	jr .asm_3c3c5
+
+.asm_3c3b5
+	call FarBattleRNG
+	cp e
+	jp c, $43f1
+	call FarBattleRNG
+	cp c
+	jp c, Function3c3f3
+	jr .asm_3c3c5
+
+.asm_3c3c5
+	ld de, BattleMonSpd
+	ld hl, EnemyMonSpd
+	ld c, $2
+	call StringCmp
+	jr z, .asm_3c3d8
+	jp nc, $43f1
+	jp Function3c3f3
+
+.asm_3c3d8
+	ld a, [$ffcb]
+	cp $2
+	jr z, .asm_3c3e9
+	call FarBattleRNG
+	cp $80
+	jp c, $43f1
+	jp Function3c3f3
+
+.asm_3c3e9
+	call FarBattleRNG
+	cp $80
+	jp c, Function3c3f3
+	scf
+	ret
+; 3c3f3
+
+Function3c3f3: ; 3c3f3
+	and a
+	ret
+; 3c3f5
+
+Function3c3f5: ; 3c3f5
+	ld a, [BattleType]
+	cp $6
+	jr nz, .asm_3c40e
+	ld a, [$dc79]
+	and a
+	jr nz, .asm_3c40e
+	ld a, [$d0ee]
+	and $c0
+	add $2
+	ld [$d0ee], a
+	scf
+	ret
+
+.asm_3c40e
+	and a
+	ret
+; 3c410
+
+Function3c410: ; 3c410
+	ld a, [PlayerSubStatus4]
+	and $20
+	jp nz, Function3c432
+	ld hl, EnemySubStatus3
+	res 3, [hl]
+	ld hl, PlayerSubStatus3
+	res 3, [hl]
+	ld a, [hl]
+	and $12
+	jp nz, Function3c432
+	ld hl, PlayerSubStatus1
+	bit 6, [hl]
+	jp nz, Function3c432
+	and a
+	ret
+; 3c432
+
+Function3c432: ; 3c432
+	scf
+	ret
+; 3c434
+
+Function3c434: ; 3c434
+	call Function3c410
+	jp c, $44ba
+	ld hl, PlayerSubStatus5
+	bit 4, [hl]
+	jr z, .asm_3c449
+	ld a, [LastPlayerMove]
+	ld [CurPlayerMove], a
+	jr .asm_3c47c
+
+.asm_3c449
+	ld a, [$d0ec]
+	cp $2
+	jr z, .asm_3c4ce
+	and a
+	jr nz, .asm_3c4b5
+	ld a, [PlayerSubStatus3]
+	and $1
+	jr nz, .asm_3c4ba
+	xor a
+	ld [$d235], a
+	inc a
+	ld [FXAnimIDLo], a
+	call Function3e4bc
+	push af
+	call Function30b4
+	call UpdateBattleHuds
+	ld a, [CurPlayerMove]
+	cp $a5
+	jr z, .asm_3c476
+	call PlayClickSFX
+
+.asm_3c476
+	ld a, $1
+	ld [hBGMapMode], a
+	pop af
+	ret nz
+
+.asm_3c47c
+	call SetPlayerTurn
+	callab UpdateMoveData
+	xor a
+	ld [$c732], a
+	ld a, [PlayerMoveEffect]
+	cp $77
+	jr z, .asm_3c494
+	xor a
+	ld [PlayerFuryCutterCount], a
+
+.asm_3c494
+	ld a, [PlayerMoveEffect]
+	cp $51
+	jr z, .asm_3c4a4
+	ld hl, PlayerSubStatus4
+	res 6, [hl]
+	xor a
+	ld [$c72b], a
+
+.asm_3c4a4
+	ld a, [PlayerMoveEffect]
+	cp $6f
+	jr z, .asm_3c4c9
+	cp $74
+	jr z, .asm_3c4c9
+	xor a
+	ld [$c679], a
+	jr .asm_3c4c9
+
+.asm_3c4b5
+	ld hl, PlayerSubStatus3
+	res 0, [hl]
+
+.asm_3c4ba
+	xor a
+	ld [PlayerFuryCutterCount], a
+	ld [$c679], a
+	ld [$c72b], a
+	ld hl, PlayerSubStatus4
+	res 6, [hl]
+
+.asm_3c4c9
+	call Function3e7c1
+	xor a
+	ret
+
+.asm_3c4ce
+	xor a
+	ld [PlayerFuryCutterCount], a
+	ld [$c679], a
+	ld [$c72b], a
+	ld hl, PlayerSubStatus4
+	res 6, [hl]
+	xor a
+	ret
+; 3c4df
+
+Function3c4df: ; 3c4df
+	ld a, [$ffcb]
+	cp $1
+	jr z, .asm_3c4ea
+	call $44ed
+	jr .asm_3c518
+
+.asm_3c4ea
+	call $4518
+	ld hl, PlayerSubStatus5
+	bit 4, [hl]
+	ret z
+	ld a, [PlayerEncoreCount]
+	dec a
+	ld [PlayerEncoreCount], a
+	jr z, .asm_3c50a
+	ld hl, BattleMonPPMove1
+	ld a, [CurMoveNum]
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [hl]
+	and $3f
+	ret nz
+
+.asm_3c50a
+	ld hl, PlayerSubStatus5
+	res 4, [hl]
+	call SetEnemyTurn
+	ld hl, $4c8a
+	jp FarBattleTextBox
+
+.asm_3c518
+	ld hl, EnemySubStatus5
+	bit 4, [hl]
+	ret z
+	ld a, [EnemyEncoreCount]
+	dec a
+	ld [EnemyEncoreCount], a
+	jr z, .asm_3c535
+	ld hl, EnemyMonPPMove1
+	ld a, [CurEnemyMoveNum]
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [hl]
+	and $3f
+	ret nz
+
+.asm_3c535
+	ld hl, EnemySubStatus5
+	res 4, [hl]
+	call SetPlayerTurn
+	ld hl, $4c8a
+	jp FarBattleTextBox
+; 3c543
+
+
+Function3c543: ; 3c543
+	ld a, [IsInBattle]
+	dec a
+	jr nz, .Stay
+
+	ld a, [PlayerSubStatus5]
+	bit 7, a
+	jr nz, .Stay
+
+	ld a, [$c731]
+	and a
+	jr nz, .Stay
+
+	ld a, [EnemyMonStatus]
+	and 1 << FRZ | SLP
+	jr nz, .Stay
+
+	ld a, [TempEnemyMonSpecies]
+	ld de, 1
+	ld hl, .Always
+	call IsInArray
+	jr c, .Flee
+
+	call FarBattleRNG
+	ld b, a
+	cp $80
+	jr nc, .Stay
+
+	push bc
+	ld a, [TempEnemyMonSpecies]
+	ld de, 1
+	ld hl, .Often
+	call IsInArray
+	pop bc
+	jr c, .Flee
+
+	ld a, b
+	cp $1a
+	jr nc, .Stay
+
+	ld a, [TempEnemyMonSpecies]
+	ld de, 1
+	ld hl, .Sometimes
+	call IsInArray
+	jr c, .Flee
+
+.Stay
+	and a
+	ret
+
+.Flee
+	scf
+	ret
+; 3c59a
+
+.Sometimes
+	db MAGNEMITE
+	db GRIMER
+	db TANGELA
+	db MR__MIME
+	db EEVEE
+	db PORYGON
+	db DRATINI
+	db DRAGONAIR
+	db TOGETIC
+	db UMBREON
+	db UNOWN
+	db SNUBBULL
+	db HERACROSS
+	db $ff
+
+.Often
+	db CUBONE
+	db ARTICUNO
+	db ZAPDOS
+	db MOLTRES
+	db QUAGSIRE
+	db DELIBIRD
+	db PHANPY
+	db TEDDIURSA
+	db $ff
+
+.Always
+	db RAIKOU
+	db ENTEI
+;	db SUICUNE
+	db $ff
+; 3c5b4
+
+
+Function3c5b4: ; 3c5b4
+	ld a, [CurPlayerMove]
+	call GetMovePriority
+	ld b, a
+	push bc
+	ld a, [CurEnemyMove]
+	call GetMovePriority
+	pop bc
+	cp b
+	ret
+; 3c5c5
+
+GetMovePriority: ; 3c5c5
+	ld b, a
+	cp VITAL_THROW
+	ld a, 0
+	ret z
+	call Function3c5ec
+	ld hl, .data_3c5df
+.loop
+	ld a, [hli]
+	cp b
+	jr z, .asm_3c5dd
+	inc hl
+	cp $ff
+	jr nz, .loop
+	ld a, 1
+	ret
+
+.asm_3c5dd
+	ld a, [hl]
+	ret
+; 3c5df
+
+.data_3c5df
+	db EFFECT_PROTECT,      3
+	db EFFECT_ENDURE,       3
+	db EFFECT_PRIORITY_HIT, 2
+	db EFFECT_WHIRLWIND,    0
+	db EFFECT_COUNTER,      0
+	db EFFECT_MIRROR_COAT,  0
+	db $ff
+; 3c5ec
+
+
+Function3c5ec: ; 3c5ec
+	ld a, b
+	dec a
+	ld hl, $5afc
+	ld bc, $0007
+	call AddNTimes
+	ld a, $10
+	call GetFarByte
+	ld b, a
+	ret
+; 3c5fe
+
+Function3c5fe: ; 3c5fe
+	call Function309d
+	call Function3c543
+	jp c, Function3c0e5
+	call SetEnemyTurn
+	ld a, $1
+	ld [$c70f], a
+	callab Function38000
+	jr c, .asm_3c62f
+	call Function3c6de
+	call Function3d2e0
+	ret c
+	ld a, [$d232]
+	and a
+	ret nz
+	call $4710
+	jp z, Function3d14e
+	call $470b
+	jp z, Function3cd55
+
+.asm_3c62f
+	call SetEnemyTurn
+	call Function3c716
+	jp z, Function3cd55
+	call RefreshBattleHuds
+	call Function3c6cf
+	call Function3d2e0
+	ret c
+	ld a, [$d232]
+	and a
+	ret nz
+	call $470b
+	jp z, Function3cd55
+	call $4710
+	jp z, Function3d14e
+	call SetPlayerTurn
+	call Function3c716
+	jp z, Function3d14e
+	call RefreshBattleHuds
+	xor a
+	ld [$d0ec], a
+	ret
+; 3c664
+
+Function3c664: ; 3c664
+	xor a
+	ld [$c70f], a
+	call SetEnemyTurn
+	callab Function38000
+	push af
+	call Function3c6cf
+	pop bc
+	ld a, [$d232]
+	and a
+	ret nz
+	call Function3d2e0
+	ret c
+	call $470b
+	jp z, Function3cd55
+	call $4710
+	jp z, Function3d14e
+	push bc
+	call SetPlayerTurn
+	call Function3c716
+	pop bc
+	jp z, Function3d14e
+	push bc
+	call RefreshBattleHuds
+	pop af
+	jr c, .asm_3c6be
+	call Function309d
+	call Function3c543
+	jp c, Function3c0e5
+	call Function3c6de
+	call Function3d2e0
+	ret c
+	ld a, [$d232]
+	and a
+	ret nz
+	call $4710
+	jp z, Function3d14e
+	call $470b
+	jp z, Function3cd55
+
+.asm_3c6be
+	call SetEnemyTurn
+	call Function3c716
+	jp z, Function3cd55
+	call RefreshBattleHuds
+	xor a
+	ld [$d0ec], a
+	ret
+; 3c6cf
+
+Function3c6cf: ; 3c6cf
+	call SetPlayerTurn
+	call Function3c6fe
+	callab DoPlayerTurn
+	jp Function3c6ed
+; 3c6de
+
+Function3c6de: ; 3c6de
+	call SetEnemyTurn
+	call Function3c6fe
+	callab DoEnemyTurn
+	jp Function3c6ed
+; 3c6ed
+
+Function3c6ed: ; 3c6ed
+	ld a, $5
+	call GetBattleVarPair
+	res 2, [hl]
+	res 5, [hl]
+	ld a, $9
+	call GetBattleVarPair
+	res 6, [hl]
+	ret
+; 3c6fe
+
+Function3c6fe: ; 3c6fe
+	ld a, $4
+	call GetBattleVarPair
+	res 6, [hl]
+	ret
+; 3c706
+
+Function3c706: ; 3c706
+	ld a, [hBattleTurn]
+	and a
+	jr z, .asm_3c710
+	ld hl, EnemyMonHPHi
+	jr .asm_3c713
+
+.asm_3c710
+	ld hl, BattleMonHP
+
+.asm_3c713
+	ld a, [hli]
+	or [hl]
+	ret
+; 3c716
+
+Function3c716: ; 3c716
+	call Function3c706
+	ret z
+	ld a, $a
+	call CleanGetBattleVarPair
+	and $18
+	jr z, .asm_3c768
+	ld hl, $47e2
+	ld de, $0106
+	and $10
+	jr z, .asm_3c733
+	ld hl, $47f8
+	ld de, $0105
+
+.asm_3c733
+	push de
+	call FarBattleTextBox
+	pop de
+	xor a
+	ld [$cfca], a
+	call Function3ee0f
+	call GetEighthMaxHP
+	ld de, $c674
+	ld a, [hBattleTurn]
+	and a
+	jr z, .asm_3c74d
+	ld de, $c67c
+
+.asm_3c74d
+	ld a, $4
+	call CleanGetBattleVarPair
+	bit 0, a
+	jr z, .asm_3c765
+	call Function3cc76
+	ld a, [de]
+	inc a
+	ld [de], a
+	ld hl, $0000
+.asm_3c75f
+	add hl, bc
+	dec a
+	jr nz, .asm_3c75f
+	ld b, h
+	ld c, l
+
+.asm_3c765
+	call Function3cc3f
+
+.asm_3c768
+	call Function3c706
+	jp z, $47f7
+	ld a, $3
+	call GetBattleVarPair
+	bit 7, [hl]
+	jr z, .asm_3c7a1
+	call Function3c8e4
+	xor a
+	ld [$cfca], a
+	ld de, $0107
+	ld a, $7
+	call CleanGetBattleVarPair
+	and $60
+	call z, Function3ee0f
+	call Function3c8e4
+	call GetEighthMaxHP
+	call Function3cc3f
+	ld a, $1
+	ld [hBGMapMode], a
+	call Function3ccef
+	ld hl, $480e
+	call FarBattleTextBox
+
+.asm_3c7a1
+	call Function3c706
+	jr z, .asm_3c7f7
+	ld a, $0
+	call GetBattleVarPair
+	bit 0, [hl]
+	jr z, .asm_3c7c5
+	xor a
+	ld [$cfca], a
+	ld de, $010c
+	call Function3ee0f
+	call GetQuarterMaxHP
+	call Function3cc3f
+	ld hl, $4822
+	call FarBattleTextBox
+
+.asm_3c7c5
+	call Function3c706
+	jr z, .asm_3c7f7
+	ld a, $0
+	call GetBattleVarPair
+	bit 1, [hl]
+	jr z, .asm_3c7e9
+	xor a
+	ld [$cfca], a
+	ld de, $010c
+	call Function3ee0f
+	call GetQuarterMaxHP
+	call Function3cc3f
+	ld hl, $4836
+	call FarBattleTextBox
+
+.asm_3c7e9
+	ld hl, BattleMonHP
+	ld a, [hBattleTurn]
+	and a
+	jr z, .asm_3c7f4
+	ld hl, EnemyMonHPHi
+
+.asm_3c7f4
+	ld a, [hli]
+	or [hl]
+	ret nz
+
+.asm_3c7f7
+	call RefreshBattleHuds
+	ld c, $14
+	call DelayFrames
+	xor a
+	ret
+; 3c801
+
+Function3c801: ; 3c801
+	ld a, [$ffcb]
+	cp $1
+	jr z, .asm_3c813
+	call SetPlayerTurn
+	call $481c
+	call SetEnemyTurn
+	jp $481c
+
+.asm_3c813
+	call SetEnemyTurn
+	call $481c
+	call SetPlayerTurn
+	ld hl, PlayerPerishCount
+	ld a, [hBattleTurn]
+	and a
+	jr z, .asm_3c827
+	ld hl, EnemyPerishCount
+
+.asm_3c827
+	ld a, $0
+	call CleanGetBattleVarPair
+	bit 4, a
+	ret z
+	dec [hl]
+	ld a, [hl]
+	ld [$d265], a
+	push af
+	ld hl, $4864
+	call FarBattleTextBox
+	pop af
+	ret nz
+	ld a, $0
+	call GetBattleVarPair
+	res 4, [hl]
+	ld a, [hBattleTurn]
+	and a
+	jr nz, .asm_3c85c
+	ld hl, BattleMonHP
+	xor a
+	ld [hli], a
+	ld [hl], a
+	ld hl, PartyMon1CurHP
+	ld a, [CurBattleMon]
+	call GetPartyLocation
+	xor a
+	ld [hli], a
+	ld [hl], a
+	ret
+
+.asm_3c85c
+	ld hl, EnemyMonHPHi
+	xor a
+	ld [hli], a
+	ld [hl], a
+	ld a, [IsInBattle]
+	dec a
+	ret z
+	ld hl, OTPartyMon1CurHP
+	ld a, [CurOTMon]
+	call GetPartyLocation
+	xor a
+	ld [hli], a
+	ld [hl], a
+	ret
+; 3c874
+
+Function3c874: ; 3c874
+	ld a, [$ffcb]
+	cp $1
+	jr z, .asm_3c886
+	call SetPlayerTurn
+	call $488f
+	call SetEnemyTurn
+	jp $488f
+
+.asm_3c886
+	call SetEnemyTurn
+	call $488f
+	call SetPlayerTurn
+	ld hl, $c730
+	ld de, $c72e
+	ld a, [hBattleTurn]
+	and a
+	jr z, .asm_3c8a0
+	ld hl, $c731
+	ld de, $c72f
+
+.asm_3c8a0
+	ld a, [hl]
+	and a
+	ret z
+	ld a, $3
+	call CleanGetBattleVarPair
+	bit 4, a
+	ret nz
+	ld a, [de]
+	ld [$d265], a
+	ld [FXAnimIDLo], a
+	call GetMoveName
+	dec [hl]
+	jr z, .asm_3c8de
+	ld a, $2
+	call CleanGetBattleVarPair
+	and $60
+	jr nz, .asm_3c8d3
+	call Function3c8e4
+	xor a
+	ld [$cfca], a
+	ld [FXAnimIDHi], a
+	ld a, $37
+	call Predef
+	call Function3c8e4
+
+.asm_3c8d3
+	call Function3cc76
+	call Function3cc3f
+	ld hl, $4de2
+	jr .asm_3c8e1
+
+.asm_3c8de
+	ld hl, $4df5
+
+.asm_3c8e1
+	jp FarBattleTextBox
+; 3c8e4
+
+Function3c8e4: ; 3c8e4
+	ld a, [hBattleTurn]
+	xor $1
+	ld [hBattleTurn], a
+	ret
+; 3c8eb
+
+Function3c8eb: ; 3c8eb
+	ld a, [$ffcb]
+	cp $1
+	jr z, .asm_3c8fd
+	call SetPlayerTurn
+	call $4906
+	call SetEnemyTurn
+	jp $4906
+
+.asm_3c8fd
+	call SetEnemyTurn
+	call $4906
+	call SetPlayerTurn
+	callab GetUserItem
+	ld a, [hl]
+	ld [$d265], a
+	call GetItemName
+	ld a, b
+	cp $3
+	ret nz
+	ld hl, BattleMonHP
+	ld a, [hBattleTurn]
+	and a
+	jr z, .asm_3c922
+	ld hl, EnemyMonHPHi
+
+.asm_3c922
+	ld a, [hli]
+	ld b, a
+	ld a, [hli]
+	ld c, a
+	ld a, [hli]
+	cp b
+	jr nz, .asm_3c92d
+	ld a, [hl]
+	cp c
+	ret z
+
+.asm_3c92d
+	call Function3cc76
+	call Function3c8e4
+	call Function3ccef
+	ld hl, $4880
+	jp FarBattleTextBox
+; 3c93c
+
+Function3c93c: ; 3c93c
+	ld a, [$ffcb]
+	cp $1
+	jr z, .asm_3c94e
+	call SetPlayerTurn
+	call $4957
+	call SetEnemyTurn
+	jp $4957
+
+.asm_3c94e
+	call SetEnemyTurn
+	call $4957
+	call SetPlayerTurn
+	callab GetUserItem
+	ld a, b
+	cp $6
+	jr nz, .asm_3c9ae
+	ld hl, PartyMon1PP
+	ld a, [CurBattleMon]
+	call GetPartyLocation
+	ld d, h
+	ld e, l
+	ld hl, PartyMon1Move1
+	ld a, [CurBattleMon]
+	call GetPartyLocation
+	ld a, [hBattleTurn]
+	and a
+	jr z, .asm_3c99b
+	ld de, $c739
+	ld hl, $c735
+	ld a, [IsInBattle]
+	dec a
+	jr z, .asm_3c99b
+	ld hl, OTPartyMon1PPMove1
+	ld a, [CurOTMon]
+	call GetPartyLocation
+	ld d, h
+	ld e, l
+	ld hl, OTPartyMon1Move1
+	ld a, [CurOTMon]
+	call GetPartyLocation
+
+.asm_3c99b
+	ld c, $0
+.asm_3c99d
+	ld a, [hl]
+	and a
+	jr z, .asm_3c9ae
+	ld a, [de]
+	and $3f
+	jr z, .asm_3c9af
+	inc hl
+	inc de
+	inc c
+	ld a, c
+	cp $4
+	jr nz, .asm_3c99d
+
+.asm_3c9ae
+	ret
+
+.asm_3c9af
+	ld a, [hl]
+	cp $a6
+	ld b, $1
+	jr z, .asm_3c9b8
+	ld b, $5
+
+.asm_3c9b8
+	ld a, [de]
+	add b
+	ld [de], a
+	push bc
+	push bc
+	ld a, [hl]
+	ld [$d265], a
+	ld de, BattleMonItem
+	ld hl, BattleMonPPMove1
+	ld a, [hBattleTurn]
+	and a
+	jr z, .asm_3c9d2
+	ld de, EnemyMonItem
+	ld hl, EnemyMonPPMove1
+
+.asm_3c9d2
+	inc de
+	pop bc
+	ld b, $0
+	add hl, bc
+	push hl
+	ld h, d
+	ld l, e
+	add hl, bc
+	pop de
+	pop bc
+	ld a, [$d265]
+	cp [hl]
+	jr nz, .asm_3c9f5
+	ld a, [hBattleTurn]
+	and a
+	ld a, [PlayerSubStatus5]
+	jr z, .asm_3c9ee
+	ld a, [EnemySubStatus5]
+
+.asm_3c9ee
+	bit 3, a
+	jr nz, .asm_3c9f5
+	ld a, [de]
+	add b
+	ld [de], a
+
+.asm_3c9f5
+	callab GetUserItem
+	ld a, [hl]
+	ld [$d265], a
+	xor a
+	ld [hl], a
+	call Function3df12
+	ld a, [hBattleTurn]
+	and a
+	jr z, .asm_3ca12
+	ld a, [IsInBattle]
+	dec a
+	jr z, .asm_3ca14
+	call Function3df1f
+
+.asm_3ca12
+	xor a
+	ld [hl], a
+
+.asm_3ca14
+	call GetItemName
+	call Function3c8e4
+	call Function3ddc8
+	call Function3c8e4
+	ld hl, $4899
+	jp FarBattleTextBox
+; 3ca26
+
+Function3ca26: ; 3ca26
+	ld a, [$ffcb]
+	cp $1
+	jr z, .asm_3ca38
+	call SetPlayerTurn
+	call $4a41
+	call SetEnemyTurn
+	jp $4a41
+
+.asm_3ca38
+	call SetEnemyTurn
+	call $4a41
+	call SetPlayerTurn
+	ld hl, $c71d
+	ld a, [hBattleTurn]
+	and a
+	jr z, .asm_3ca4c
+	ld hl, $c71e
+
+.asm_3ca4c
+	ld a, [hl]
+	and a
+	ret z
+	dec a
+	ld [hl], a
+	cp $1
+	ret nz
+	ld hl, $48b6
+	call FarBattleTextBox
+	ld a, $10
+	call GetBattleVarPair
+	push af
+	ld a, $f8
+	ld [hl], a
+	callab UpdateMoveData
+	xor a
+	ld [AttackMissed], a
+	ld [AlreadyDisobeyed], a
+	ld a, $a
+	ld [TypeModifier], a
+	callab DoMove
+	xor a
+	ld [CurDamage], a
+	ld [$d257], a
+	ld a, $10
+	call GetBattleVarPair
+	pop af
+	ld [hl], a
+	call UpdateBattleMonInParty
+	jp UpdateEnemyMonInParty
+; 3ca8f
+
+Function3ca8f: ; 3ca8f
+	ld a, [$ffcb]
+	cp $1
+	jr z, .asm_3ca9a
+	call $4a9d
+	jr .asm_3cac9
+
+.asm_3ca9a
+	call $4ac9
+	ld a, [BattleMonStatus]
+	bit 5, a
+	ret z
+	ld a, [$c73f]
+	and a
+	ret nz
+	call FarBattleRNG
+	cp $19
+	ret nc
+	xor a
+	ld [BattleMonStatus], a
+	ld a, [CurBattleMon]
+	ld hl, PartyMon1Status
+	call GetPartyLocation
+	ld [hl], $0
+	call UpdateBattleHuds
+	call SetEnemyTurn
+	ld hl, $524b
+	jp FarBattleTextBox
+
+.asm_3cac9
+	ld a, [EnemyMonStatus]
+	bit 5, a
+	ret z
+	ld a, [$c740]
+	and a
+	ret nz
+	call FarBattleRNG
+	cp $19
+	ret nc
+	xor a
+	ld [EnemyMonStatus], a
+	ld a, [IsInBattle]
+	dec a
+	jr z, .asm_3caef
+	ld a, [CurOTMon]
+	ld hl, OTPartyMon1Status
+	call GetPartyLocation
+	ld [hl], $0
+
+.asm_3caef
+	call UpdateBattleHuds
+	call SetPlayerTurn
+	ld hl, $524b
+	jp FarBattleTextBox
+; 3cafb
+
+Function3cafb: ; 3cafb
+	ld a, [$ffcb]
+	cp $1
+	jr z, .asm_3cb06
+	call $4b09
+	jr .asm_3cb1c
+
+.asm_3cb06
+	call $4b1c
+	ld a, [PlayerScreens]
+	bit 2, a
+	ret z
+	ld hl, $c701
+	dec [hl]
+	ret nz
+	res 2, a
+	ld [PlayerScreens], a
+	xor a
+	jr .asm_3cb2e
+
+.asm_3cb1c
+	ld a, [EnemyScreens]
+	bit 2, a
+	ret z
+	ld hl, $c705
+	dec [hl]
+	ret nz
+	res 2, a
+	ld [EnemyScreens], a
+	ld a, $1
+
+.asm_3cb2e
+	ld [hBattleTurn], a
+	ld hl, $48d2
+	jp FarBattleTextBox
+; 3cb36
+
+
+Function3cb36: ; 3cb36
+	ld a, [$ffcb]
+	cp 1
+	jr z, .Both
+	call .CheckPlayer
+	jr .CheckEnemy
+
+.Both
+	call .CheckEnemy
+
+.CheckPlayer
+	call SetPlayerTurn
+	ld de, .Your
+	call .asm_3cb6f
+	ld hl, PlayerScreens
+	ld de, PlayerLightScreenCount
+	jr .FadeScreens
+
+.CheckEnemy
+	call SetEnemyTurn
+	ld de, .Enemy
+	call .asm_3cb6f
+	ld hl, EnemyScreens
+	ld de, EnemyLightScreenCount
+
+.FadeScreens
+	bit SCREENS_LIGHT_SCREEN, [hl]
+	call nz, FadeLightScreen
+	bit SCREENS_REFLECT, [hl]
+	call nz, FadeReflect
+	ret
+
+.asm_3cb6f
+	ld hl, StringBuffer1
+	jp CopyName2
+; 3cb75
+
+.Your
+	db "Your@"
+.Enemy
+	db "Enemy@"
+; 3cb80
+
+
+FadeLightScreen: ; 3cb80
+	ld a, [de]
+	dec a
+	ld [de], a
+	ret nz
+	res SCREENS_LIGHT_SCREEN, [hl]
+	push hl
+	push de
+	ld hl, BattleText_0x808e7
+	call FarBattleTextBox
+	pop de
+	pop hl
+	ret
+; 3cb91
+
+FadeReflect: ; 3cb91
+	inc de
+	ld a, [de]
+	dec a
+	ld [de], a
+	ret nz
+	res SCREENS_REFLECT, [hl]
+	ld hl, BattleText_0x80905
+	jp FarBattleTextBox
+; 3cb9e
+
+HandleWeather: ; 3cb9e
+
+	ld a, [Weather]
+	cp 0
+	ret z
+
+	ld hl, WeatherCount
+	dec [hl]
+	jr z, .asm_3cc13
+
+	ld hl, .WeatherMessages
+	call .asm_3cc1e
+	ld a, [Weather]
+	cp WEATHER_SANDSTORM
+	ret nz
+	ld a, [$ffcb]
+	cp 1
+	jr z, .asm_3cbc7
+
+; Player first
+	call SetPlayerTurn
+	call .asm_3cbd0
+	call SetEnemyTurn
+	jr .asm_3cbd0
+
+.asm_3cbc7
+; Enemy first
+	call SetEnemyTurn
+	call .asm_3cbd0
+	call SetPlayerTurn
+
+.asm_3cbd0
+	ld a, BATTLE_VARS_SUBSTATUS3
+	call CleanGetBattleVarPair
+	bit SUBSTATUS_UNDERGROUND, a
+	ret nz
+
+	ld hl, BattleMonType1
+	ld a, [hBattleTurn]
+	and a
+	jr z, .asm_3cbe3
+	ld hl, EnemyMonType1
+
+.asm_3cbe3
+	ld a, [hli]
+	cp ROCK
+	ret z
+	cp GROUND
+	ret z
+	cp STEEL
+	ret z
+
+	ld a, [hl]
+	cp ROCK
+	ret z
+	cp GROUND
+	ret z
+	cp STEEL
+	ret z
+
+	call Function3c8e4
+	xor a
+	ld [$cfca], a
+	ld de, $010b
+	call Function3ee17
+	call Function3c8e4
+	call GetEighthMaxHP
+	call Function3cc3f
+
+	ld hl, BattleText_0x8084d
+	jp FarBattleTextBox
+
+.asm_3cc13
+	ld hl, .WeatherEndedMessages
+	call .asm_3cc1e
+	xor a
+	ld [Weather], a
+	ret
+
+.asm_3cc1e
+	ld a, [Weather]
+	dec a
+	ld c, a
+	ld b, 0
+	add hl, bc
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp FarBattleTextBox
+; 3cc2d
+
+.WeatherMessages
+	dw BattleText_0x8091f
+	dw BattleText_0x80938
+	dw BattleText_0x80951
+.WeatherEndedMessages
+	dw BattleText_0x80967
+	dw BattleText_0x8097a
+	dw BattleText_0x8098f
+; 3cc39
+
+Function3cc39: ; 3cc39
+	call Function3cc45
+	jp Function3cd3c
+; 3cc3f
+
+Function3cc3f: ; 3cc3f
+	call Function3cc45
+	jp Function3cd36
+; 3cc45
+
+
+
+Function3cc45: ; 3cc45
+	ld hl, BattleMonHP
+	ld a, [hBattleTurn]
+	and a
+	jr z, .asm_3cc50
+	ld hl, EnemyMonHPHi
+
+.asm_3cc50
+	inc hl
+	ld a, [hl]
+	ld [$d1ec], a
+	sub c
+	ld [hld], a
+	ld [$d1ee], a
+	ld a, [hl]
+	ld [$d1ed], a
+	sbc b
+	ld [hl], a
+	ld [$d1ef], a
+	ret nc
+	ld a, [$d1ec]
+	ld c, a
+	ld a, [$d1ed]
+	ld b, a
+	xor a
+	ld [hli], a
+	ld [hl], a
+	ld [$d1ee], a
+	ld [$d1ef], a
+	ret
+; 3cc76
+
+Function3cc76: ; 3cc76
+	call GetQuarterMaxHP
+	srl c
+	srl c
+	ld a, c
+	and a
+	jr nz, .asm_3cc82
+	inc c
+
+.asm_3cc82
+	ret
+; 3cc83
+
+
 GetEighthMaxHP: ; 3cc83
 ; output: bc
 	call GetQuarterMaxHP
@@ -11907,7 +39598,7 @@
 
 
 GetMaxHP: ; 3ccac
-; output: bc, $d1ea-b
+; output: bc, Buffer1-2
 
 ; player
 	ld hl, BattleMonMaxHP
@@ -11922,19 +39613,716 @@
 
 .gethp
 	ld a, [hli]
-	ld [$d1eb], a
+	ld [Buffer2], a
 	ld b, a
 
 	ld a, [hl]
-	ld [$d1ea], a
+	ld [Buffer1], a
 	ld c, a
 	ret
 ; 3ccc2
 
+Function3ccc2: ; 3ccc2
+	ld hl, BattleMonHP
+	ld a, [hBattleTurn]
+	and a
+	jr z, .asm_3cccd
+	ld hl, EnemyMonHP
 
-INCBIN "baserom.gbc", $3ccc2, $3d123 - $3ccc2
+.asm_3cccd
+	ld a, [hli]
+	ld b, a
+	ld a, [hli]
+	ld c, a
+	srl b
+	rr c
+	ld a, [hli]
+	ld [Buffer2], a
+	ld a, [hl]
+	ld [Buffer1], a
+	ret
+; 3ccde
 
+Function3ccde: ; 3ccde
+	ld hl, BattleMonHP + 1
+	ld a, [hBattleTurn]
+	and a
+	jr z, .asm_3cce9
+	ld hl, EnemyMonHP + 1
 
+.asm_3cce9
+	ld a, c
+	sub [hl]
+	dec hl
+	ld a, b
+	sbc [hl]
+	ret
+; 3ccef
+
+
+Function3ccef: ; 3ccef
+	ld hl, EnemyMonMaxHP
+	ld a, [hBattleTurn]
+	and a
+	jr z, .asm_3ccfa
+	ld hl, BattleMonMaxHP
+
+.asm_3ccfa
+	ld a, [hli]
+	ld [Buffer2], a
+	ld a, [hld]
+	ld [Buffer1], a
+	dec hl
+	ld a, [hl]
+	ld [$d1ec], a
+	add c
+	ld [hld], a
+	ld [$d1ee], a
+	ld a, [hl]
+	ld [$d1ed], a
+	adc b
+	ld [hli], a
+	ld [$d1ef], a
+	ld a, [Buffer1]
+	ld c, a
+	ld a, [hld]
+	sub c
+	ld a, [Buffer2]
+	ld b, a
+	ld a, [hl]
+	sbc b
+	jr c, .asm_3cd2d
+	ld a, b
+	ld [hli], a
+	ld [$d1ef], a
+	ld a, c
+	ld [hl], a
+	ld [$d1ee], a
+
+.asm_3cd2d
+	call Function3c8e4
+	call Function3cd36
+	jp Function3c8e4
+; 3cd36
+
+Function3cd36: ; 3cd36
+	call Function3cd3c
+	jp UpdateBattleHuds
+; 3cd3c
+
+
+Function3cd3c: ; 3cd3c
+	ld hl, $c55e
+	ld a, [hBattleTurn]
+	and a
+	ld a, $1
+	jr z, .asm_3cd4a
+	ld hl, $c4ca
+	xor a
+
+.asm_3cd4a
+	push bc
+	ld [$d10a], a
+	ld a, $b
+	call Predef
+	pop bc
+	ret
+; 3cd55
+
+Function3cd55: ; 3cd55
+	call Function3cf14
+	ld hl, BattleMonHP
+	ld a, [hli]
+	or [hl]
+	call z, Function3cef1
+	xor a
+	ld [$c6f7], a
+	call Function3ce01
+	call Function3d873
+	ld a, d
+	and a
+	jp z, LostBattle
+	ld hl, BattleMonHP
+	ld a, [hli]
+	or [hl]
+	call nz, Function3df48
+	ld a, $1
+	ld [hBGMapMode], a
+	ld c, $3c
+	call DelayFrames
+	ld a, [IsInBattle]
+	dec a
+	jr nz, .asm_3cd8c
+	ld a, $1
+	ld [BattleEnded], a
+	ret
+
+.asm_3cd8c
+	call Function3cf35
+	jp z, Function3cfa4
+	ld hl, BattleMonHP
+	ld a, [hli]
+	or [hl]
+	jr nz, .asm_3cdba
+	call Function3d1f8
+	jr nc, .asm_3cda4
+	ld a, $1
+	ld [BattleEnded], a
+	ret
+
+.asm_3cda4
+	call Function3d227
+	call Function3d2e0
+	jp c, Function3c0e5
+	ld a, $1
+	ld [$d0ec], a
+	call Function3cf4a
+	jp z, Function3c0e5
+	jr .asm_3cdca
+
+.asm_3cdba
+	ld a, $1
+	ld [$d0ec], a
+	call Function3cf4a
+	jp z, Function3c0e5
+	xor a
+	ld [$d0ec], a
+	ret
+
+.asm_3cdca
+	ld a, [$ffcb]
+	cp $1
+	jr z, .asm_3cde6
+	call ClearSprites
+	ld hl, $c4a1
+	ld bc, $040a
+	call ClearBox
+	call Function3d2b3
+	ld a, $1
+	call $4f78
+	jr .asm_3cdfc
+
+.asm_3cde6
+	ld a, [CurPartyMon]
+	push af
+	ld a, $1
+	call $4f78
+	call ClearSprites
+	call Function309d
+	pop af
+	ld [CurPartyMon], a
+	call Function3d2b3
+
+.asm_3cdfc
+	xor a
+	ld [$d0ec], a
+	ret
+; 3ce01
+
+Function3ce01: ; 3ce01
+	call UpdateBattleMonInParty
+	ld a, [IsInBattle]
+	dec a
+	jr z, .asm_3ce16
+	ld a, [CurOTMon]
+	ld hl, OTPartyMon1CurHP
+	call GetPartyLocation
+	xor a
+	ld [hli], a
+	ld [hl], a
+
+.asm_3ce16
+	ld hl, PlayerSubStatus3
+	res 2, [hl]
+	xor a
+	ld hl, EnemyDamageTaken
+	ld [hli], a
+	ld [hl], a
+	call Function3d834
+	call Function3dc18
+	ld a, [IsInBattle]
+	dec a
+	jr z, .asm_3ce2f
+	jr .asm_3ce37
+
+.asm_3ce2f
+	call Function3ceec
+	ld a, $1
+	ld [$c6fd], a
+
+.asm_3ce37
+	ld hl, BattleMonHP
+	ld a, [hli]
+	or [hl]
+	jr nz, .asm_3ce47
+	ld a, [$c6f7]
+	and a
+	jr nz, .asm_3ce47
+	call Function3d1aa
+
+.asm_3ce47
+	call Function3d873
+	ld a, d
+	and a
+	ret z
+	ld a, [IsInBattle]
+	dec a
+	call z, Function3d0ea
+	call EmptyBattleTextBox
+	call Function309d
+	ld a, [$d0ee]
+	and $c0
+	ld [$d0ee], a
+	call Function3ceaa
+	jr z, .asm_3ce72
+	ld hl, EnemyMonBaseStats
+	ld b, $7
+.asm_3ce6c
+	srl [hl]
+	inc hl
+	dec b
+	jr nz, .asm_3ce6c
+
+.asm_3ce72
+	ld hl, EnemyMonBaseStats
+	ld de, $c720
+	ld bc, $0007
+	call CopyBytes
+	xor a
+	ld [$c71f], a
+	call Function3ee3b
+	call Function3ceaa
+	ret z
+	ld a, [$c664]
+	push af
+	ld a, d
+	ld [$c664], a
+	ld hl, $c720
+	ld de, EnemyMonBaseStats
+	ld bc, $0007
+	call CopyBytes
+	ld a, $1
+	ld [$c71f], a
+	call Function3ee3b
+	pop af
+	ld [$c664], a
+	ret
+; 3ceaa
+
+Function3ceaa: ; 3ceaa
+	ld a, [PartyCount]
+	ld b, a
+	ld hl, PartyMon1Species
+	ld c, $1
+	ld d, $0
+.asm_3ceb5
+	push hl
+	push bc
+	ld bc, $0022
+	add hl, bc
+	ld a, [hli]
+	or [hl]
+	pop bc
+	pop hl
+	jr z, .asm_3ced1
+	push hl
+	push bc
+	ld bc, $0001
+	add hl, bc
+	pop bc
+	ld a, [hl]
+	pop hl
+	cp $39
+	jr nz, .asm_3ced1
+	ld a, d
+	or c
+	ld d, a
+
+.asm_3ced1
+	sla c
+	push de
+	ld de, $0030
+	add hl, de
+	pop de
+	dec b
+	jr nz, .asm_3ceb5
+	ld a, d
+	ld e, $0
+	ld b, $6
+.asm_3cee1
+	srl a
+	jr nc, .asm_3cee6
+	inc e
+
+.asm_3cee6
+	dec b
+	jr nz, .asm_3cee1
+	ld a, e
+	and a
+	ret
+; 3ceec
+
+
+
+Function3ceec: ; 3ceec
+	xor a
+	ld [Danger], a
+	ret
+; 3cef1
+
+Function3cef1: ; 3cef1
+	call Function3ceec
+	call WaitSFX
+	ld a, $f0
+	ld [CryTracks], a
+	ld a, [BattleMonSpecies]
+	call Function37b6
+	call Function3d43b
+	ld hl, $c535
+	ld bc, $050b
+	call ClearBox
+	ld hl, BattleText_0x80a75
+	jp FarBattleTextBox
+; 3cf14
+
+Function3cf14: ; 3cf14
+	call WaitSFX
+	ld de, SFX_KINESIS
+	call StartSFX
+	call Function3d432
+	ld de, SFX_UNKNOWN_2A
+	call StartSFX
+	hlcoord 1, 0
+	ld bc, $040a
+	call ClearBox
+	ld hl, BattleText_0x809a8
+	jp FarBattleTextBox
+; 3cf35
+
+Function3cf35: ; 3cf35
+	ld a, [OTPartyCount]
+	ld b, a
+	xor a
+	ld hl, OTPartyMon1CurHP
+	ld de, $0030
+.asm_3cf40
+	or [hl]
+	inc hl
+	or [hl]
+	dec hl
+	add hl, de
+	dec b
+	jr nz, .asm_3cf40
+	and a
+	ret
+; 3cf4a
+
+Function3cf4a: ; 3cf4a
+	ld hl, EnemyHPPal
+	ld e, $30
+	call Function3e12e
+	call WaitBGMap
+	ld a, $b
+	ld hl, $4012
+	rst FarCall
+	ld a, [InLinkBattle]
+	and a
+	jr z, .asm_3cf6d
+	call Function3e8e4
+	ld a, [$d430]
+	cp $f
+	ret z
+	call Function30b4
+
+.asm_3cf6d
+	ld hl, BattleMonHP
+	ld a, [hli]
+	or [hl]
+	ld a, $0
+	jr nz, .asm_3cf78
+	inc a
+	ret
+
+.asm_3cf78
+	push af
+	xor a
+	ld [$c718], a
+	call Function3d834
+	call Function3d867
+	call Function3dc18
+	pop af
+	and a
+	jr nz, .asm_3cf8f
+	call Function3d4e1
+	jr .asm_3cf92
+
+.asm_3cf8f
+	call $5517
+
+.asm_3cf92
+	call Function3d57a
+	call SetEnemyTurn
+	call Function3dc23
+	xor a
+	ld [EnemyMoveAnimation], a
+	ld [$d0ec], a
+	inc a
+	ret
+; 3cfa4
+
+Function3cfa4: ; 3cfa4
+	call Function3ceec
+	ld a, $1
+	ld [$c6fd], a
+	ld [BattleEnded], a
+	ld a, [InLinkBattle]
+	and a
+	ld a, b
+	call z, Function3d0ea
+	callab Function39939
+	ld hl, BattleText_0x809da
+	call FarBattleTextBox
+	call Function3d2f1
+	jr z, .asm_3cff5
+	ld a, [InLinkBattle]
+	and a
+	ret nz
+	ld a, [$cfc0]
+	bit 0, a
+	jr nz, .asm_3d006
+	call Function3ebd8
+	ld c, $28
+	call DelayFrames
+	ld a, [BattleType]
+	cp $1
+	jr nz, .asm_3cfe8
+	ld a, $2
+	call Predef
+
+.asm_3cfe8
+	ld a, [$c2cc]
+	bit 0, a
+	jr nz, .asm_3cff2
+	call Function3718
+
+.asm_3cff2
+	jp Function3d02b
+
+.asm_3cff5
+	call Function3ebd8
+	ld c, $28
+	call DelayFrames
+	ld c, $4
+	ld a, $13
+	ld hl, $6a0a
+	rst FarCall
+	ret
+
+.asm_3d006
+	call Function3ebd8
+	ld c, $28
+	call DelayFrames
+	call EmptyBattleTextBox
+	ld c, $3
+	ld a, $47
+	ld hl, $4000
+	rst FarCall
+	call Functiona80
+	ld hl, $c6ec
+	ld a, [hli]
+	or [hl]
+	inc hl
+	or [hl]
+	ret nz
+	call ClearTileMap
+	call WhiteBGMap
+	ret
+; 3d02b
+
+Function3d02b: ; 3d02b
+	ld a, [$c73d]
+	and a
+	call nz, Function3d099
+	call Function3d0b1
+	push af
+	ld a, $0
+	jr nc, .asm_3d044
+	ld a, [$d854]
+	and $7
+	cp $3
+	jr nz, .asm_3d044
+	inc a
+
+.asm_3d044
+	ld b, a
+	ld c, $4
+.asm_3d047
+	ld a, b
+	and a
+	jr z, .asm_3d052
+	call Function3d081
+	dec c
+	dec b
+	jr .asm_3d047
+
+.asm_3d052
+	ld a, c
+	and a
+	jr z, .asm_3d05c
+	call Function3d08d
+	dec c
+	jr .asm_3d052
+
+.asm_3d05c
+	call Function3d099
+	call Function3d099
+	pop af
+	jr nc, .asm_3d07b
+	ld a, [$d854]
+	and $7
+	jr z, .asm_3d07b
+	ld hl, SentToMomTexts
+	dec a
+	ld c, a
+	ld b, 0
+	add hl, bc
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp FarBattleTextBox
+
+.asm_3d07b
+	ld hl, BattleText_0x809be
+	jp FarBattleTextBox
+; 3d081
+
+Function3d081: ; 3d081
+	push bc
+	ld hl, $c688
+	ld de, $d853
+	call Function3d0be
+	pop bc
+	ret
+; 3d08d
+
+Function3d08d: ; 3d08d
+	push bc
+	ld hl, $c688
+	ld de, $d850
+	call Function3d0be
+	pop bc
+	ret
+; 3d099
+
+Function3d099: ; 3d099
+	ld hl, $c688
+	sla [hl]
+	dec hl
+	rl [hl]
+	dec hl
+	rl [hl]
+	ret nc
+	ld a, $ff
+	ld [hli], a
+	ld [hli], a
+	ld [hl], a
+	ret
+; 3d0ab
+
+SentToMomTexts: ; 3d0ab
+	dw BattleText_0x809fc
+	dw BattleText_0x80a2a
+	dw BattleText_0x80a3d
+; 3d0b1
+
+
+Function3d0b1: ; 3d0b1
+	ld hl, $d853
+	ld a, [hld]
+	cp $3f
+	ld a, [hld]
+	sbc $42
+	ld a, [hl]
+	sbc $f
+	ret
+; 3d0be
+
+Function3d0be: ; 3d0be
+	ld c, $3
+	and a
+	push de
+	push hl
+	push bc
+	ld b, h
+	ld c, l
+	ld a, $41
+	ld hl, $6008
+	rst FarCall
+	pop bc
+	pop hl
+.asm_3d0ce
+	ld a, [de]
+	adc [hl]
+	ld [de], a
+	dec de
+	dec hl
+	dec c
+	jr nz, .asm_3d0ce
+	pop hl
+	ld a, [hld]
+	cp $3f
+	ld a, [hld]
+	sbc $42
+	ld a, [hl]
+	sbc $f
+	ret c
+	ld [hl], $f
+	inc hl
+	ld [hl], $42
+	inc hl
+	ld [hl], $3f
+	ret
+; 3d0ea
+
+Function3d0ea: ; 3d0ea
+	push de
+	ld de, MUSIC_NONE
+	call StartMusic
+	call DelayFrame
+	ld de, MUSIC_WILD_VICTORY
+	ld a, [IsInBattle]
+	dec a
+	jr nz, .asm_3d113
+	push de
+	call Function3ceaa
+	pop de
+	jr nz, .asm_3d11e
+	ld hl, $c6ec
+	ld a, [hli]
+	or [hl]
+	jr nz, .asm_3d11e
+	ld a, [$c664]
+	and a
+	jr z, .asm_3d121
+	jr .asm_3d11e
+
+.asm_3d113
+	ld de, MUSIC_GYM_VICTORY
+	call IsJohtoGymLeader
+	jr c, .asm_3d11e
+	ld de, MUSIC_TRAINER_VICTORY
+
+.asm_3d11e
+	call StartMusic
+
+.asm_3d121
+	pop de
+	ret
+; 3d123
+
+
+
 ; These functions check if the current opponent is a gym leader or one of a
 ; few other special trainers.
 
@@ -11989,9 +40377,323 @@
 	db $ff
 
 
-INCBIN "baserom.gbc", $3d14e, $3d38e - $3d14e
+Function3d14e: ; 3d14e
+	call Function3cef1
+	ld hl, EnemyMonHPHi
+	ld a, [hli]
+	or [hl]
+	call z, Function3cf14
+	ld a, $1
+	ld [$c6f7], a
+	call Function3d1aa
+	call Function3d873
+	ld a, d
+	and a
+	jp z, LostBattle
+	ld hl, EnemyMonHPHi
+	ld a, [hli]
+	or [hl]
+	jr nz, .asm_3d185
+	call Function3ce01
+	ld a, [IsInBattle]
+	dec a
+	jr nz, .asm_3d17f
+	ld a, $1
+	ld [BattleEnded], a
+	ret
 
+.asm_3d17f
+	call Function3cf35
+	jp z, Function3cfa4
 
+.asm_3d185
+	call Function3d1f8
+	jr nc, .asm_3d190
+	ld a, $1
+	ld [BattleEnded], a
+	ret
+
+.asm_3d190
+	call Function3d227
+	call Function3d2e0
+	jp c, Function3c0e5
+	ld a, c
+	and a
+	ret nz
+	ld a, $1
+	ld [$d0ec], a
+	call Function3cf4a
+	jp z, Function3c0e5
+	jp $4dca
+; 3d1aa
+
+Function3d1aa: ; 3d1aa
+	ld a, [CurBattleMon]
+	ld c, a
+	ld hl, $c664
+	ld b, $0
+	ld a, $3
+	call Predef
+	ld hl, EnemySubStatus3
+	res 2, [hl]
+	xor a
+	ld [Danger], a
+	ld hl, PlayerDamageTaken
+	ld [hli], a
+	ld [hl], a
+	ld [BattleMonStatus], a
+	call UpdateBattleMonInParty
+	ld c, $6
+	ld a, [BattleMonLevel]
+	add $1e
+	ld b, a
+	ld a, [EnemyMonLevel]
+	cp b
+	jr c, .asm_3d1dc
+	ld c, $8
+
+.asm_3d1dc
+	ld a, [CurBattleMon]
+	ld [CurPartyMon], a
+	callab ChangeHappiness
+	ld a, [$d0ee]
+	and $c0
+	add $1
+	ld [$d0ee], a
+	ld a, [$c6f7]
+	and a
+	ret z
+	ret
+; 3d1f8
+
+Function3d1f8: ; 3d1f8
+	call EmptyBattleTextBox
+	call Function309d
+	ld a, [IsInBattle]
+	and a
+	dec a
+	ret nz
+	ld hl, BattleText_0x80a83
+	call FarBattleTextBox
+.asm_3d20a
+	ld bc, $0107
+	call $1dd2
+	ld a, [$cfa9]
+	jr c, .asm_3d217
+	and a
+	ret
+
+.asm_3d217
+	ld a, [$cfa9]
+	cp $1
+	jr z, .asm_3d20a
+	ld hl, PartyMon1Spd
+	ld de, EnemyMonSpd
+	jp Function3d8b3
+; 3d227
+
+Function3d227: ; 3d227
+	call EmptyBattleTextBox
+	call Function1d6e
+	call Function3d2f7
+	call Function3d362
+	ld a, [InLinkBattle]
+	and a
+	jr z, .asm_3d241
+	ld a, $1
+	ld [$d0ec], a
+	call Function3e8e4
+
+.asm_3d241
+	xor a
+	ld [$d0ec], a
+	call Function3d2e0
+	jr c, .asm_3d251
+	ld hl, EnemyMonHPHi
+	ld a, [hli]
+	or [hl]
+	jr nz, .asm_3d26c
+
+.asm_3d251
+	call ClearSprites
+	call WhiteBGMap
+	call Function3eda6
+	call Function1c07
+	call Function309d
+	call WaitBGMap
+	call ClearSGB
+	call Function32f9
+	xor a
+	ld c, a
+	ret
+
+.asm_3d26c
+	call ClearSprites
+	ld a, [CurBattleMon]
+	ld [$c71a], a
+	ld a, [CurPartyMon]
+	ld [CurBattleMon], a
+	call $5581
+	call Function3da0d
+	call Function3dab1
+	call ClearPalettes
+	call DelayFrame
+	call Function3eda6
+	call Function1c17
+	call ClearSGB
+	call Function32f9
+	call Function3f26d
+	call Function3dbde
+	call Function3dc18
+	call Function3db5f
+	call EmptyBattleTextBox
+	call Function309d
+	call SetPlayerTurn
+	call Function3dc23
+	ld a, $1
+	and a
+	ld c, a
+	ret
+; 3d2b3
+
+Function3d2b3: ; 3d2b3
+	ld a, [CurBattleMon]
+	ld [$c71a], a
+	ld a, [CurPartyMon]
+	ld [CurBattleMon], a
+	call $5581
+	call Function3da0d
+	call Function3dab1
+	call Function3f26d
+	call Function3dbde
+	call Function3dc18
+	call Function3db5f
+	call EmptyBattleTextBox
+	call Function309d
+	call SetPlayerTurn
+	jp Function3dc23
+; 3d2e0
+
+
+
+Function3d2e0: ; 3d2e0
+	ld a, [InLinkBattle]
+	cp $4
+	jr nz, .asm_3d2ef
+	ld a, [$cd2b]
+	and a
+	jr z, .asm_3d2ef
+	scf
+	ret
+
+.asm_3d2ef
+	xor a
+	ret
+; 3d2f1
+
+Function3d2f1: ; 3d2f1
+	ld a, [InLinkBattle]
+	cp $4
+	ret
+; 3d2f7
+
+Function3d2f7: ; 3d2f7
+	call WhiteBGMap
+	callba Function5004f
+	callba Function50405
+	ld a, $2
+	ld hl, $4e85
+	rst FarCall
+	callba Function503e0
+	ret
+; 3d313
+
+Function3d313: ; 3d313
+	callba WritePartyMenuTilemap
+	callba PrintPartyMenuText
+	call WaitBGMap
+	call Function32f9
+	call DelayFrame
+	ret
+; 3d329
+
+Function3d329: ; 3d329
+	call Function3d2f1
+	jr z, .asm_3d335
+	callba PartyMenuSelect
+	ret
+
+.asm_3d335
+	ld a, $40
+	ld hl, $4cb5
+	rst FarCall
+	ret
+; 3d33c
+
+Function3d33c: ; 3d33c
+.asm_3d33c
+	ld a, $2
+	ld [PartyMenuActionText], a
+	call Function3d313
+	call Function3d329
+	ret c
+	call Function3d887
+	jr z, .asm_3d33c
+	xor a
+	ret
+; 3d34f
+
+Function3d34f: ; 3d34f
+	ld hl, CurBattleMon
+	ld a, [CurPartyMon]
+	cp [hl]
+	jr nz, .asm_3d360
+	ld hl, BattleText_0x80c0d
+	call FarBattleTextBox
+	scf
+	ret
+
+.asm_3d360
+	xor a
+	ret
+; 3d362
+
+Function3d362: ; 3d362
+.asm_3d362
+	call Function3d33c
+	ret nc
+	call Function3d2e0
+	ret c
+	ld de, SFX_WRONG
+	call StartSFX
+	call WaitSFX
+	jr .asm_3d362
+; 3d375
+
+
+
+Function3d375: ; 3d375
+.asm_3d375
+	call Function3d33c
+	ret c
+	call Function3d34f
+	jr c, .asm_3d375
+	xor a
+	ret
+; 3d380
+
+Function3d380: ; 3d380
+.asm_3d380
+	call Function3d362
+	call Function3d2e0
+	ret c
+	call Function3d34f
+	jr c, .asm_3d380
+	xor a
+	ret
+; 3d38e
+
+
 LostBattle: ; 3d38e
 	ld a, 1
 	ld [BattleEnded], a
@@ -12008,7 +40710,7 @@
 	hlcoord 0, 0
 	ld bc, $0815
 	call ClearBox
-	call $6bd8
+	call Function3ebd8
 
 	ld c, 40
 	call DelayFrames
@@ -12016,7 +40718,7 @@
 	ld a, [$c2cc]
 	bit 0, a
 	jr nz, .asm_3d3bc
-	call $3718
+	call Function3718
 .asm_3d3bc
 	ret
 
@@ -12025,12 +40727,12 @@
 	hlcoord 0, 0
 	ld bc, $0815
 	call ClearBox
-	call $6bd8
+	call Function3ebd8
 
 	ld c, 40
 	call DelayFrames
 
-	call $6dd1
+	call EmptyBattleTextBox
 	ld c, 2
 	ld a, $47
 	ld hl, $4000
@@ -12048,12 +40750,12 @@
 ; Greyscale
 	ld b, 0
 	call GetSGBLayout
-	call $32f9
+	call Function32f9
 	jr .end
 
 .LostLinkBattle
 	call UpdateEnemyMonInParty
-	call $4f35
+	call Function3cf35
 	jr nz, .asm_3d40a
 	ld hl, TiedAgainstText
 	ld a, [$d0ee]
@@ -12064,7 +40766,7 @@
 
 .asm_3d40a
 	ld hl, LostAgainstText
-	call $52f1
+	call Function3d2f1
 	jr z, .asm_3d417
 
 .asm_3d412
@@ -12079,7 +40781,7 @@
 	hlcoord 0, 0
 	ld bc, $0815
 	call ClearBox
-	call $6bd8
+	call Function3ebd8
 
 	ld c, 40
 	call DelayFrames
@@ -12093,14 +40795,3030 @@
 ; 3d432
 
 
-INCBIN "baserom.gbc", $3d432, $3ddc2 - $3d432
+Function3d432: ; 3d432
+	ld hl, $c510
+	ld de, $c524
+	jp Function3d444
+; 3d43b
 
+Function3d43b: ; 3d43b
+	ld hl, $c569
+	ld de, $c57d
+	jp Function3d444
+; 3d444
+
+Function3d444: ; 3d444
+	ld a, [$cfbe]
+	push af
+	set 6, a
+	ld [$cfbe], a
+	ld b, $7
+.asm_3d44f
+	push bc
+	push de
+	push hl
+	ld b, $6
+.asm_3d454
+	push bc
+	push hl
+	push de
+	ld bc, $0007
+	call CopyBytes
+	pop de
+	pop hl
+	ld bc, -20
+	add hl, bc
+	push hl
+	ld h, d
+	ld l, e
+	add hl, bc
+	ld d, h
+	ld e, l
+	pop hl
+	pop bc
+	dec b
+	jr nz, .asm_3d454
+	ld bc, 20
+	add hl, bc
+	ld de, .Spaces
+	call PlaceString
+	ld c, 2
+	call DelayFrames
+	pop hl
+	pop de
+	pop bc
+	dec b
+	jr nz, .asm_3d44f
+	pop af
+	ld [$cfbe], a
+	ret
+; 3d488
+
+.Spaces
+	db "       @"
+; 3d490
+
+
+Function3d490: ; 3d490
+	ld [hConnectionStripLength], a
+	ld c, a
+.asm_3d493
+	push bc
+	push hl
+	ld b, $7
+.asm_3d497
+	push hl
+	call Function3d4ae
+	pop hl
+	ld de, 20
+	add hl, de
+	dec b
+	jr nz, .asm_3d497
+	ld c, 2
+	call DelayFrames
+	pop hl
+	pop bc
+	dec c
+	jr nz, .asm_3d493
+	ret
+; 3d4ae
+
+Function3d4ae: ; 3d4ae
+	ld a, [hConnectionStripLength]
+	ld c, a
+	cp $8
+	jr nz, .asm_3d4bc
+.asm_3d4b5
+	ld a, [hli]
+	ld [hld], a
+	dec hl
+	dec c
+	jr nz, .asm_3d4b5
+	ret
+
+.asm_3d4bc
+	ld a, [hld]
+	ld [hli], a
+	inc hl
+	dec c
+	jr nz, .asm_3d4bc
+	ret
+; 3d4c3
+
+
+Function3d4c3: ; 3d4c3
+	call Function3d557
+	ld a, [$c718]
+	dec a
+	ld b, a
+	call Function3d6ca
+	call Function3d7a0
+	call Function3d834
+	call Function3d867
+	call Function3d7c7
+	call Function3dc18
+	call Function3d57a
+	ret
+; 3d4e1
+
+
+Function3d4e1: ; 3d4e1
+	call Function3d714
+	jr nc, .asm_3d517
+	call Function3d557
+	call Function3d533
+	jr c, .asm_3d4f1
+	call Function3d599
+
+.asm_3d4f1
+	call Function3d6ca
+	call Function3d74b
+	push af
+	call Function3d7a0
+	call Function3d7b8
+	call Function3d7c7
+	pop af
+	ret c
+	xor a
+	ld [$c664], a
+	ld [$c6fc], a
+	ld [$d0ec], a
+	inc a
+	ld [$c711], a
+	call Function309d
+	jp Function3e3ad
+
+.asm_3d517
+	call Function3d557
+	call Function3d533
+	jr c, .asm_3d522
+	call Function3d599
+
+.asm_3d522
+	call Function3d6ca
+	ld a, $1
+	ld [$c711], a
+	call Function3d7a0
+	call Function3d7b8
+	jp Function3d7c7
+; 3d533
+
+Function3d533: ; 3d533
+	ld a, [InLinkBattle]
+	and a
+	jr z, .asm_3d541
+	ld a, [$d430]
+	sub $4
+	ld b, a
+	jr .asm_3d555
+
+.asm_3d541
+	ld a, [$c718]
+	and a
+	jr z, .asm_3d54b
+	dec a
+	ld b, a
+	jr .asm_3d555
+
+.asm_3d54b
+	ld a, [$d264]
+	and a
+	ld b, $0
+	jr nz, .asm_3d555
+	and a
+	ret
+
+.asm_3d555
+	scf
+	ret
+; 3d557
+
+Function3d557: ; 3d557
+	xor a
+	ld [LastEnemyCounterMove], a
+	ld [LastPlayerCounterMove], a
+	ld [LastEnemyMove], a
+	ld [CurEnemyMove], a
+	dec a
+	ld [$c6e6], a
+	xor a
+	ld [$c730], a
+	ld hl, $c4b2
+	ld a, $8
+	call Function3d490
+	call EmptyBattleTextBox
+	jp Function1d6e
+; 3d57a
+
+Function3d57a: ; 3d57a
+	xor a
+	ld [$c664], a
+	ld [$c6fc], a
+	ld a, [CurBattleMon]
+	ld c, a
+	ld hl, $c664
+	ld b, $1
+	push bc
+	ld a, $3
+	call Predef
+	pop bc
+	ld hl, $c6fc
+	ld a, $3
+	jp Predef
+; 3d599
+
+Function3d599: ; 3d599
+	ld b, $ff
+	ld a, $1
+	ld [Buffer1], a
+	ld [Buffer2], a
+.asm_3d5a3
+	ld hl, Buffer1
+	sla [hl]
+	inc hl
+	sla [hl]
+	inc b
+	ld a, [OTPartyCount]
+	cp b
+	jp z, Function3d672
+	ld a, [CurOTMon]
+	cp b
+	jr z, .asm_3d5d0
+	ld hl, OTPartyMon1CurHP
+	push bc
+	ld a, b
+	call GetPartyLocation
+	ld a, [hli]
+	ld c, a
+	ld a, [hl]
+	or c
+	pop bc
+	jr z, .asm_3d5d0
+	call Function3d5d7
+	call Function3d618
+	jr .asm_3d5a3
+
+.asm_3d5d0
+	ld hl, Buffer2
+	set 0, [hl]
+	jr .asm_3d5a3
+; 3d5d7
+
+Function3d5d7: ; 3d5d7
+	push bc
+	ld hl, OTPartyMon1Move1
+	ld a, b
+	call GetPartyLocation
+	pop bc
+	ld e, $5
+.asm_3d5e2
+	dec e
+	jr z, .asm_3d617
+	ld a, [hli]
+	and a
+	jr z, .asm_3d617
+	push hl
+	push de
+	push bc
+	dec a
+	ld hl, $5afb
+	ld bc, $0007
+	call AddNTimes
+	ld de, EnemyMoveAnimation
+	ld a, $10
+	call FarCopyBytes
+	call SetEnemyTurn
+	callab Function0x347c8
+	pop bc
+	pop de
+	pop hl
+	ld a, [$d265]
+	cp $b
+	jr c, .asm_3d5e2
+	ld hl, Buffer1
+	set 0, [hl]
+	ret
+
+.asm_3d617
+	ret
+; 3d618
+
+Function3d618: ; 3d618
+	push bc
+	ld hl, OTPartyCount
+	ld a, b
+	inc a
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [hl]
+	dec a
+	ld hl, $542b
+	ld bc, $0020
+	call AddNTimes
+	ld de, EnemyMonType1
+	ld bc, $0002
+	ld a, $14
+	call FarCopyBytes
+	ld a, [BattleMonType1]
+	ld [PlayerMoveType], a
+	call SetPlayerTurn
+	callab Function0x347c8
+	ld a, [$d265]
+	cp $b
+	jr nc, .asm_3d663
+	ld a, [BattleMonType2]
+	ld [PlayerMoveType], a
+	callab Function0x347c8
+	ld a, [$d265]
+	cp $b
+	jr nc, .asm_3d663
+	pop bc
+	ret
+
+.asm_3d663
+	pop bc
+	ld hl, Buffer1
+	bit 0, [hl]
+	jr nz, .asm_3d66f
+	inc hl
+	set 0, [hl]
+	ret
+
+.asm_3d66f
+	res 0, [hl]
+	ret
+; 3d672
+
+Function3d672: ; 3d672
+.asm_3d672
+	ld hl, Buffer1
+	sla [hl]
+	inc hl
+	sla [hl]
+	jr nc, .asm_3d672
+	ld a, [OTPartyCount]
+	ld b, a
+	ld c, [hl]
+.asm_3d681
+	sla c
+	jr nc, .asm_3d68a
+	dec b
+	jr z, .asm_3d6a7
+	jr .asm_3d681
+
+.asm_3d68a
+	ld a, [Buffer1]
+	and a
+	jr z, .asm_3d69a
+	ld b, $ff
+	ld c, a
+.asm_3d693
+	inc b
+	sla c
+	jr nc, .asm_3d693
+	jr .asm_3d6c9
+
+.asm_3d69a
+	ld b, $ff
+	ld a, [Buffer2]
+	ld c, a
+.asm_3d6a0
+	inc b
+	sla c
+	jr c, .asm_3d6a0
+	jr .asm_3d6c9
+
+.asm_3d6a7
+	ld a, [OTPartyCount]
+	ld b, a
+	call FarBattleRNG
+	and $7
+	cp b
+	jr nc, .asm_3d6a7
+	ld b, a
+	ld a, [CurOTMon]
+	cp b
+	jr z, .asm_3d6a7
+	ld hl, OTPartyMon1CurHP
+	push bc
+	ld a, b
+	call GetPartyLocation
+	pop bc
+	ld a, [hli]
+	ld c, a
+	ld a, [hl]
+	or c
+	jr z, .asm_3d6a7
+
+.asm_3d6c9
+	ret
+; 3d6ca
+
+Function3d6ca: ; 3d6ca
+	ld a, b
+	ld [CurPartyMon], a
+	ld hl, OTPartyMon1Level
+	call GetPartyLocation
+	ld a, [hl]
+	ld [CurPartyLevel], a
+	ld a, [CurPartyMon]
+	inc a
+	ld hl, OTPartyCount
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [hl]
+	ld [TempEnemyMonSpecies], a
+	ld [CurPartySpecies], a
+	call LoadEnemyMon
+	ld a, [CurPartySpecies]
+	cp $c9
+	jr nz, .asm_3d708
+	ld a, [$def4]
+	and a
+	jr nz, .asm_3d708
+	ld hl, EnemyMonAtkDefDV
+	ld a, $2d
+	call Predef
+	ld a, [UnownLetter]
+	ld [$def4], a
+
+.asm_3d708
+	ld hl, EnemyMonHPHi
+	ld a, [hli]
+	ld [$c6ea], a
+	ld a, [hl]
+	ld [$c6eb], a
+	ret
+; 3d714
+
+Function3d714: ; 3d714
+	ld a, [$d264]
+	dec a
+	jp z, $5749
+	ld a, [PartyCount]
+	dec a
+	jp z, $5749
+	ld a, [InLinkBattle]
+	and a
+	jp nz, $5749
+	ld a, [Options]
+	bit 6, a
+	jr nz, .asm_3d749
+	ld a, [CurPartyMon]
+	push af
+	ld a, [CurBattleMon]
+	ld [CurPartyMon], a
+	callba Functione538
+	pop bc
+	ld a, b
+	ld [CurPartyMon], a
+	jr c, .asm_3d749
+	scf
+	ret
+
+.asm_3d749
+	and a
+	ret
+; 3d74b
+
+Function3d74b: ; 3d74b
+	ld a, [CurPartyMon]
+	push af
+	callab Function39939
+	ld hl, BattleText_0x80aca
+	call FarBattleTextBox
+	ld bc, $0107
+	call $1dd2
+	ld a, [$cfa9]
+	dec a
+	jr nz, .asm_3d79a
+	call Function3d2f7
+	call Function3d375
+	jr c, .asm_3d791
+	ld a, [CurBattleMon]
+	ld [$c71a], a
+	ld a, [CurPartyMon]
+	ld [CurBattleMon], a
+	call ClearPalettes
+	call DelayFrame
+	call Function3eda6
+	pop af
+	ld [CurPartyMon], a
+	xor a
+	ld [CurEnemyMove], a
+	ld [CurPlayerMove], a
+	and a
+	ret
+
+.asm_3d791
+	call ClearPalettes
+	call DelayFrame
+	call Function3eda6
+
+.asm_3d79a
+	pop af
+	ld [CurPartyMon], a
+	scf
+	ret
+; 3d7a0
+
+Function3d7a0: ; 3d7a0
+	xor a
+	ld [hBGMapMode], a
+	call Function1c07
+	call ClearSprites
+	ld hl, $c4a1
+	ld bc, $040a
+	call ClearBox
+	call WaitBGMap
+	jp Function3ee27
+; 3d7b8
+
+Function3d7b8: ; 3d7b8
+	callab Function39939
+	ld hl, BattleText_0x80af8
+	call FarBattleTextBox
+	jp WaitBGMap
+; 3d7c7
+
+Function3d7c7: ; 3d7c7
+	ld a, [TempEnemyMonSpecies]
+	ld [CurPartySpecies], a
+	ld [CurSpecies], a
+	call GetBaseData
+	ld a, $1
+	ld [MonType], a
+	ld a, $1f
+	call Predef
+	call Function3f47c
+	xor a
+	ld [$cfca], a
+	ld [$c689], a
+	call SetEnemyTurn
+	ld de, $0101
+	call Function3ee17
+	call $5a79
+	jr nc, .asm_3d800
+	ld a, $1
+	ld [$c689], a
+	ld de, $0101
+	call Function3ee17
+
+.asm_3d800
+	ld bc, TempMonSpecies
+	callba Function4e53f
+	jr c, .asm_3d82c
+	ld a, $13
+	ld hl, $6a44
+	rst FarCall
+	jr c, .asm_3d821
+	ld hl, $c4ac
+	ld d, $0
+	ld e, $0
+	ld a, $47
+	call Predef
+	jr .asm_3d82c
+
+.asm_3d821
+	ld a, $f
+	ld [CryTracks], a
+	ld a, [TempEnemyMonSpecies]
+	call Function37b6
+
+.asm_3d82c
+	call Function3e036
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+; 3d834
+
+Function3d834: ; 3d834
+	xor a
+	ld [LastEnemyCounterMove], a
+	ld [LastPlayerCounterMove], a
+	ld [LastEnemyMove], a
+	ld hl, EnemySubStatus1
+	ld [hli], a
+	ld [hli], a
+	ld [hli], a
+	ld [hli], a
+	ld [hl], a
+	ld [EnemyDisableCount], a
+	ld [EnemyFuryCutterCount], a
+	ld [$c681], a
+	ld [$c72c], a
+	ld [EnemyDisabledMove], a
+	ld [$c6fa], a
+	ld [$c730], a
+	ld [$c731], a
+	ld [EnemyTurnsTaken], a
+	ld hl, PlayerSubStatus5
+	res 7, [hl]
+	ret
+; 3d867
+
+Function3d867: ; 3d867
+	ld a, $7
+	ld b, $8
+	ld hl, EnemyAtkLevel
+.asm_3d86e
+	ld [hli], a
+	dec b
+	jr nz, .asm_3d86e
+	ret
+; 3d873
+
+Function3d873: ; 3d873
+	ld a, [PartyCount]
+	ld e, a
+	xor a
+	ld hl, PartyMon1CurHP
+	ld bc, $002f
+.asm_3d87e
+	or [hl]
+	inc hl
+	or [hl]
+	add hl, bc
+	dec e
+	jr nz, .asm_3d87e
+	ld d, a
+	ret
+; 3d887
+
+
+Function3d887: ; 3d887
+	ld a, [CurPartyMon]
+	ld hl, PartyMon1CurHP
+	call GetPartyLocation
+	ld a, [hli]
+	or [hl]
+	ret nz
+	ld a, [$d264]
+	and a
+	jr nz, .asm_3d8b1
+	ld hl, PartySpecies
+	ld a, [CurPartyMon]
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [hl]
+	cp $fd
+	ld hl, BattleText_0x80b26
+	jr z, .asm_3d8ae
+	ld hl, BattleText_0x80b0b
+
+.asm_3d8ae
+	call FarBattleTextBox
+
+.asm_3d8b1
+	xor a
+	ret
+; 3d8b3
+
+
+Function3d8b3: ; 3d8b3
+	ld a, [BattleType]
+	cp $2
+	jp z, .asm_3d9a2
+	cp $6
+	jp z, .asm_3d9a2
+	cp $9
+	jp z, .asm_3d98d
+	cp $b
+	jp z, .asm_3d98d
+	cp $7
+	jp z, .asm_3d98d
+	cp $c
+	jp z, .asm_3d98d
+
+	ld a, [InLinkBattle]
+	and a
+	jp nz, .asm_3d9a2
+
+	ld a, [IsInBattle]
+	dec a
+	jp nz, .asm_3d992
+
+	ld a, [EnemySubStatus5]
+	bit 7, a
+	jp nz, .asm_3d98d
+
+	ld a, [$c730]
+	and a
+	jp nz, .asm_3d98d
+
+	push hl
+	push de
+	ld a, [BattleMonItem]
+	ld [$d265], a
+	ld b, a
+	callab GetItem
+	ld a, b
+	cp $48
+	pop de
+	pop hl
+	jr nz, .asm_3d916
+
+	call SetPlayerTurn
+	call GetItemName
+	ld hl, BattleText_0x80b89
+	call FarBattleTextBox
+	jp .asm_3d9a2
+
+.asm_3d916
+	ld a, [$d267]
+	inc a
+	ld [$d267], a
+	ld a, [hli]
+	ld [$ffb5], a
+	ld a, [hl]
+	ld [$ffb6], a
+	ld a, [de]
+	inc de
+	ld [$ffb1], a
+	ld a, [de]
+	ld [$ffb2], a
+	call Function30b4
+	ld de, $ffb5
+	ld hl, $ffb1
+	ld c, $2
+	call StringCmp
+	jr nc, .asm_3d9a2
+	xor a
+	ld [hMultiplicand], a
+	ld a, $20
+	ld [hMultiplier], a
+	call Multiply
+	ld a, [$ffb5]
+	ld [hProduct], a
+	ld a, [$ffb6]
+	ld [hMultiplicand], a
+	ld a, [$ffb1]
+	ld b, a
+	ld a, [$ffb2]
+	srl b
+	rr a
+	srl b
+	rr a
+	and a
+	jr z, .asm_3d9a2
+	ld [hMultiplier], a
+	ld b, $2
+	call Divide
+	ld a, [$ffb5]
+	and a
+	jr nz, .asm_3d9a2
+	ld a, [$d267]
+	ld c, a
+.asm_3d96c
+	dec c
+	jr z, .asm_3d97a
+	ld b, $1e
+	ld a, [$ffb6]
+	add b
+	ld [$ffb6], a
+	jr c, .asm_3d9a2
+	jr .asm_3d96c
+
+.asm_3d97a
+	call FarBattleRNG
+	ld b, a
+	ld a, [$ffb6]
+	cp b
+	jr nc, .asm_3d9a2
+	ld a, $1
+	ld [$d0ec], a
+	ld hl, BattleText_0x80b3b
+	jr .asm_3d995
+
+.asm_3d98d
+	ld hl, BattleText_0x80ba0
+	jr .asm_3d995
+
+.asm_3d992
+	ld hl, BattleText_0x80b49
+
+.asm_3d995
+	call FarBattleTextBox
+	ld a, $1
+	ld [$d266], a
+	call Function309d
+	and a
+	ret
+
+.asm_3d9a2
+	ld a, [InLinkBattle]
+	and a
+	ld a, $2
+	jr z, .asm_3d9cf
+	call Function309d
+	xor a
+	ld [$d0ec], a
+	ld a, $f
+	ld [CurMoveNum], a
+	xor a
+	ld [CurPlayerMove], a
+	call Function3e8e4
+	call Function30b4
+	call Function3d2e0
+	jr c, .asm_3d9f5
+
+; Got away safely
+	ld a, [$d430]
+	cp $f
+	ld a, $2
+	jr z, .asm_3d9cf
+	dec a
+.asm_3d9cf
+	ld b, a
+	ld a, [$d0ee]
+	and $c0
+	add b
+	ld [$d0ee], a
+	call Function3ceec
+	push de
+	ld de, SFX_RUN
+	call WaitPlaySFX
+	pop de
+	call WaitSFX
+	ld hl, BattleText_0x80b77
+	call FarBattleTextBox
+	call WaitSFX
+	call Function309d
+	scf
+	ret
+
+.asm_3d9f5
+	call Function3ceec
+	ld hl, $cd2a
+	bit 4, [hl]
+	jr nz, .asm_3da05
+	ld hl, BattleText_0x81863
+	call FarBattleTextBox
+
+.asm_3da05
+	call WaitSFX
+	call Function309d
+	scf
+	ret
+; 3da0d
+
+
+Function3da0d: ; 3da0d
+	ld a, $0
+	call GetPartyParamLocation
+	ld de, BattleMonSpecies
+	ld bc, $0006
+	call CopyBytes
+	ld bc, $000f
+	add hl, bc
+	ld de, BattleMonAtkDefDV
+	ld bc, $0007
+	call CopyBytes
+	inc hl
+	inc hl
+	inc hl
+	ld de, BattleMonLevel
+	ld bc, $0011
+	call CopyBytes
+	ld a, [BattleMonSpecies]
+	ld [TempBattleMonSpecies], a
+	ld [CurPartySpecies], a
+	ld [CurSpecies], a
+	call GetBaseData
+	ld a, [BaseType1]
+	ld [BattleMonType1], a
+	ld a, [BaseType2]
+	ld [BattleMonType2], a
+	ld hl, PartyMon1Nickname
+	ld a, [CurBattleMon]
+	call SkipNames
+	ld de, BattleMonNick
+	ld bc, $000b
+	call CopyBytes
+	ld hl, BattleMonAtk
+	ld de, PlayerStats
+	ld bc, $000a
+	call CopyBytes
+	call Function3ec2c
+	call BadgeStatBoosts
+	ret
+; 3da74
+
+Function3da74: ; 3da74
+	call Function3da85
+	jr .asm_3da7c
+
+	call Function3da97
+
+.asm_3da7c
+	ld b, h
+	ld c, l
+	callab CheckShininess
+	ret
+; 3da85
+
+Function3da85: ; 3da85
+	ld hl, BattleMonAtkDefDV
+	ld a, [PlayerSubStatus5]
+	bit 3, a
+	ret z
+	ld hl, PartyMon1DVs
+	ld a, [CurBattleMon]
+	jp GetPartyLocation
+; 3da97
+
+Function3da97: ; 3da97
+	ld hl, EnemyMonAtkDefDV
+	ld a, [EnemySubStatus5]
+	bit 3, a
+	ret z
+	ld hl, $c6f2
+	ld a, [IsInBattle]
+	dec a
+	ret z
+	ld hl, OTPartyMon1AtkDefDV
+	ld a, [CurOTMon]
+	jp GetPartyLocation
+; 3dab1
+
+Function3dab1: ; 3dab1
+	ld a, $7
+	ld b, $8
+	ld hl, PlayerAtkLevel
+.asm_3dab8
+	ld [hli], a
+	dec b
+	jr nz, .asm_3dab8
+	ret
+; 3dabd
+
+
+Function3dabd: ; 3dabd
+	ld a, [CurPartyMon]
+	ld hl, OTPartyMon1Species
+	call GetPartyLocation
+	ld de, EnemyMonSpecies
+	ld bc, $0006
+	call CopyBytes
+	ld bc, $000f
+	add hl, bc
+	ld de, EnemyMonAtkDefDV
+	ld bc, $0007
+	call CopyBytes
+	inc hl
+	inc hl
+	inc hl
+	ld de, EnemyMonLevel
+	ld bc, $0011
+	call CopyBytes
+	ld a, [EnemyMonSpecies]
+	ld [CurSpecies], a
+	call GetBaseData
+	ld hl, OTPartyMon1Nickname
+	ld a, [CurPartyMon]
+	call SkipNames
+	ld de, EnemyMonNick
+	ld bc, $000b
+	call CopyBytes
+	ld hl, EnemyMonAtk
+	ld de, EnemyStats
+	ld bc, $000a
+	call CopyBytes
+	call Function3ec30
+	ld hl, BaseType1
+	ld de, EnemyMonType1
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hl]
+	ld [de], a
+	ld hl, BaseHP
+	ld de, EnemyMonBaseStats
+	ld b, $5
+.asm_3db25
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec b
+	jr nz, .asm_3db25
+	ld a, [CurPartyMon]
+	ld [CurOTMon], a
+	ret
+; 3db32
+
+
+Function3db32: ; 3db32
+	call ClearSprites
+	ld a, [CurBattleMon]
+	ld [$c71a], a
+	ld a, [CurPartyMon]
+	ld [CurBattleMon], a
+	call $5581
+	call Function3da0d
+	call Function3dab1
+	call Function3dbde
+	call Function3dc18
+	call Function3db5f
+	call EmptyBattleTextBox
+	call Function309d
+	ld hl, EnemyMonHPHi
+	ld a, [hli]
+	or [hl]
+	ret
+; 3db5f
+
+
+Function3db5f: ; 3db5f
+	ld hl, BattleMonAtkDefDV
+	ld a, $2d
+	call Predef
+	ld hl, $c505
+	ld b, $7
+	ld c, $8
+	call ClearBox
+	call WaitBGMap
+	xor a
+	ld [hBGMapMode], a
+	call Function3f43d
+	xor a
+	ld [$ffad], a
+	ld [$d0d2], a
+	ld [CurMoveNum], a
+	ld [TypeModifier], a
+	ld [PlayerMoveAnimation], a
+	ld [LastEnemyCounterMove], a
+	ld [LastPlayerCounterMove], a
+	ld [LastPlayerMove], a
+	call Function3e4a8
+	call Function3ee27
+	xor a
+	ld [$c731], a
+	call SetPlayerTurn
+	xor a
+	ld [$cfca], a
+	ld [$c689], a
+	ld de, $0101
+	call Function3ee17
+	call Function3da74
+	jr nc, .asm_3dbbc
+	ld a, $1
+	ld [$c689], a
+	ld de, $0101
+	call Function3ee17
+
+.asm_3dbbc
+	ld a, $0
+	call GetPartyParamLocation
+	ld b, h
+	ld c, l
+	callba Function4e53f
+	jr c, .asm_3dbd6
+	ld a, $f0
+	ld [CryTracks], a
+	ld a, [CurPartySpecies]
+	call Function37b6
+
+.asm_3dbd6
+	call Function3df48
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+; 3dbde
+
+Function3dbde: ; 3dbde
+	xor a
+	ld [LastEnemyCounterMove], a
+	ld [LastPlayerCounterMove], a
+	ld [LastPlayerMove], a
+	ld hl, PlayerSubStatus1
+	ld [hli], a
+	ld [hli], a
+	ld [hli], a
+	ld [hli], a
+	ld [hl], a
+	ld hl, PlayerUsedMoves
+	ld [hli], a
+	ld [hli], a
+	ld [hli], a
+	ld [hl], a
+	ld [PlayerDisableCount], a
+	ld [PlayerFuryCutterCount], a
+	ld [$c679], a
+	ld [$c72b], a
+	ld [DisabledMove], a
+	ld [$c6fe], a
+	ld [$c731], a
+	ld [$c730], a
+	ld [PlayerTurnsTaken], a
+	ld hl, EnemySubStatus5
+	res 7, [hl]
+	ret
+; 3dc18
+
+Function3dc18: ; 3dc18
+	ld hl, PlayerSubStatus1
+	res 7, [hl]
+	ld hl, EnemySubStatus1
+	res 7, [hl]
+	ret
+; 3dc23
+
+Function3dc23: ; 3dc23
+	ld hl, PlayerScreens
+	ld de, BattleMonType1
+	ld bc, Function3df48
+	ld a, [hBattleTurn]
+	and a
+	jr z, .asm_3dc3a
+	ld hl, EnemyScreens
+	ld de, EnemyMonType1
+	ld bc, Function3e036
+
+.asm_3dc3a
+	bit 0, [hl]
+	ret z
+	ld a, [de]
+	cp $2
+	ret z
+	inc de
+	ld a, [de]
+	cp $2
+	ret z
+	push bc
+	ld hl, BattleText_0x80bae
+	call FarBattleTextBox
+	call GetEighthMaxHP
+	call Function3cc39
+	pop hl
+	call Function3dc5a
+	jp WaitBGMap
+; 3dc5a
+
+Function3dc5a: ; 3dc5a
+	jp [hl]
+; 3dc5b
+
+Function3dc5b: ; 3dc5b
+	ld a, $10
+	call CleanGetBattleVarPair
+	ld b, a
+	call Function3c5ec
+	ld a, b
+	cp $80
+	jr nz, .asm_3dce4
+	ld a, [CurBattleMon]
+	push af
+	ld hl, Function3c000
+	ld a, [hBattleTurn]
+	and a
+	jr z, .asm_3dc7e
+	ld hl, $400a
+	ld a, [$c71a]
+	ld [CurBattleMon], a
+
+.asm_3dc7e
+	ld a, $d
+	rst FarCall
+	ld a, $10
+	call GetBattleVarPair
+	ld a, $ff
+	ld [hl], a
+	pop af
+	ld [CurBattleMon], a
+	ld a, [hBattleTurn]
+	and a
+	jr z, .asm_3dcc0
+	ld a, [$c71a]
+	call $399f
+	ld hl, BattleMonHP
+	ld a, [hli]
+	or [hl]
+	jr nz, .asm_3dce4
+	ld a, $f0
+	ld [CryTracks], a
+	ld a, [BattleMonSpecies]
+	call Function37b6
+	ld a, [$c71a]
+	ld c, a
+	ld hl, $c664
+	ld b, $0
+	ld a, $3
+	call Predef
+	call Function3d43b
+	ld hl, BattleText_0x80a75
+	jr .asm_3dcdf
+
+.asm_3dcc0
+	ld hl, EnemyMonHPHi
+	ld a, [hli]
+	or [hl]
+	jr nz, .asm_3dce4
+	ld de, SFX_KINESIS
+	call StartSFX
+	call WaitSFX
+	ld de, SFX_UNKNOWN_2A
+	call StartSFX
+	call WaitSFX
+	call Function3d432
+	ld hl, BattleText_0x809a8
+
+.asm_3dcdf
+	call FarBattleTextBox
+	scf
+	ret
+
+.asm_3dce4
+	and a
+	ret
+; 3dce6
+
+Function3dce6: ; 3dce6
+	ld a, [hBattleTurn]
+	push af
+	xor a
+	ld [hBattleTurn], a
+	ld [$cfca], a
+	ld de, $0102
+	call Function3ee17
+	pop af
+	ld [hBattleTurn], a
+	ret
+; 3dcf9
+
+Function3dcf9: ; 3dcf9
+	ld a, [$ffcb]
+	cp $1
+	jr z, .asm_3dd17
+	call SetPlayerTurn
+	call Function3dd2f
+	call Function3dde9
+	call Function3de51
+	call SetEnemyTurn
+	call Function3dd2f
+	call Function3dde9
+	jp Function3de51
+
+.asm_3dd17
+	call SetEnemyTurn
+	call Function3dd2f
+	call Function3dde9
+	call Function3de51
+	call SetPlayerTurn
+	call Function3dd2f
+	call Function3dde9
+	jp Function3de51
+; 3dd2f
+
+Function3dd2f: ; 3dd2f
+	callab GetOpponentItem
+	ld a, b
+	cp $1
+	ret nz
+	ld de, EnemyMonHPLo
+	ld hl, EnemyMonMaxHPHi
+	ld a, [hBattleTurn]
+	and a
+	jr z, .asm_3dd4a
+	ld de, $c63d
+	ld hl, BattleMonMaxHP
+
+.asm_3dd4a
+	push bc
+	ld a, [de]
+	ld [$d1ec], a
+	add a
+	ld c, a
+	dec de
+	ld a, [de]
+	inc de
+	ld [$d1ed], a
+	adc a
+	ld b, a
+	ld a, b
+	cp [hl]
+	ld a, c
+	pop bc
+	jr z, .asm_3dd62
+	jr c, .asm_3dd66
+	ret
+
+.asm_3dd62
+	inc hl
+	cp [hl]
+	dec hl
+	ret nc
+
+.asm_3dd66
+	call Function3ddc8
+	ld a, [hli]
+	ld [Buffer2], a
+	ld a, [hl]
+	ld [Buffer1], a
+	ld a, [de]
+	add c
+	ld [$d1ee], a
+	ld c, a
+	dec de
+	ld a, [de]
+	adc $0
+	ld [$d1ef], a
+	ld b, a
+	ld a, [hld]
+	cp c
+	ld a, [hl]
+	sbc b
+	jr nc, .asm_3dd8d
+	ld a, [hli]
+	ld [$d1ef], a
+	ld a, [hl]
+	ld [$d1ee], a
+
+.asm_3dd8d
+	ld a, [$d1ef]
+	ld [de], a
+	inc de
+	ld a, [$d1ee]
+	ld [de], a
+	ld a, [hBattleTurn]
+	ld [$d10a], a
+	and a
+	ld hl, $c4ca
+	jr z, .asm_3dda4
+	ld hl, $c55e
+
+.asm_3dda4
+	ld [$d10a], a
+	ld a, $b
+	call Predef
+	call RefreshBattleHuds
+	callab GetOpponentItem
+	ld a, [hl]
+	ld [$d265], a
+	call GetItemName
+	ld hl, $7192
+	ld a, $9
+	rst FarCall
 	ld hl, RecoveredUsingText
-	jp $3ad5
-; 0x3ddc8
+	jp FarBattleTextBox
+; 3ddc8
 
-INCBIN "baserom.gbc", $3ddc8, $3e8eb - $3ddc8
 
+Function3ddc8: ; 3ddc8
+	push hl
+	push de
+	push bc
+	call EmptyBattleTextBox
+	ld a, $69
+	ld [FXAnimIDLo], a
+	call Function3c8e4
+	xor a
+	ld [$cfca], a
+	ld [FXAnimIDHi], a
+	ld a, $37
+	call Predef
+	call Function3c8e4
+	pop bc
+	pop de
+	pop hl
+	ret
+; 3dde9
+
+Function3dde9: ; 3dde9
+	callab GetOpponentItem
+	ld hl, .Statuses
+.asm_3ddf2
+	ld a, [hli]
+	cp $ff
+	ret z
+	inc hl
+	cp b
+	jr nz, .asm_3ddf2
+	dec hl
+	ld b, [hl]
+	ld a, $b
+	call GetBattleVarPair
+	and b
+	ret z
+	xor a
+	ld [hl], a
+	push bc
+	call UpdateOpponentInParty
+	pop bc
+	ld a, $9
+	call GetBattleVarPair
+	and [hl]
+	res 0, [hl]
+	ld a, $5
+	call GetBattleVarPair
+	and [hl]
+	res 0, [hl]
+	ld a, b
+	cp $7f
+	jr nz, .asm_3de26
+	ld a, $7
+	call GetBattleVarPair
+	res 7, [hl]
+
+.asm_3de26
+	ld hl, $65fd
+	ld a, [hBattleTurn]
+	and a
+	jr z, .asm_3de31
+	ld hl, $65d7
+
+.asm_3de31
+	call Function3c8e4
+	ld a, $d
+	rst FarCall
+	call Function3c8e4
+	call Function3ddc8
+	call $5dac
+	ld a, $1
+	and a
+	ret
+; 3de44
+
+.Statuses ; 3de44
+	db HELD_HEAL_POISON, 1 << PSN
+	db HELD_HEAL_FREEZE, 1 << FRZ
+	db HELD_HEAL_BURN, 1 << BRN
+	db HELD_HEAL_SLEEP, SLP
+	db HELD_HEAL_PARALYZE, 1 << PAR
+	db HELD_HEAL_STATUS, 1 << PSN | 1 << FRZ | 1 << BRN | SLP | 1 << PAR
+	db $ff
+; 3de51
+
+
+Function3de51: ; 3de51
+	ld a, $7
+	call CleanGetBattleVarPair
+	bit 7, a
+	ret z
+	callab GetOpponentItem
+	ld a, b
+	cp $10
+	jr z, .asm_3de67
+	cp $f
+	ret nz
+
+.asm_3de67
+	ld a, [hl]
+	ld [$d265], a
+	ld a, $7
+	call GetBattleVarPair
+	res 7, [hl]
+	call GetItemName
+	call Function3ddc8
+	ld hl, BattleText_0x80dab
+	call FarBattleTextBox
+	ld a, [hBattleTurn]
+	and a
+	jr nz, .asm_3de90
+	call Function3df1f
+	xor a
+	ld [bc], a
+	ld a, [IsInBattle]
+	dec a
+	ret z
+	ld [hl], $0
+	ret
+
+.asm_3de90
+	call Function3df12
+	xor a
+	ld [bc], a
+	ld [hl], a
+	ret
+; 3de97
+
+Function3de97: ; 3de97
+	ld a, [$ffcb]
+	cp $1
+	jr z, .asm_3dea3
+	call Function3dea9
+	jp Function3deb1
+
+.asm_3dea3
+	call Function3deb1
+	jp Function3dea9
+; 3dea9
+
+Function3dea9: ; 3dea9
+	call Function3df12
+	ld a, $0
+	jp $5eb6
+; 3deb1
+
+Function3deb1: ; 3deb1
+	call Function3df1f
+	ld a, $1
+	ld [hBattleTurn], a
+	ld d, h
+	ld e, l
+	push de
+	push bc
+	ld a, [bc]
+	ld b, a
+	callab GetItem
+	ld hl, .data_3defc
+.asm_3dec7
+	ld a, [hli]
+	cp $ff
+	jr z, .asm_3def9
+	inc hl
+	inc hl
+	cp b
+	jr nz, .asm_3dec7
+	pop bc
+	ld a, [bc]
+	ld [$d265], a
+	push bc
+	dec hl
+	dec hl
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, $d
+	rst FarCall
+	pop bc
+	pop de
+	ld a, [FailedMessage]
+	and a
+	ret nz
+	xor a
+	ld [bc], a
+	ld [de], a
+	call GetItemName
+	ld hl, BattleText_0x80bde
+	call FarBattleTextBox
+	callab BattleCommand8c
+	ret
+
+.asm_3def9
+	pop bc
+	pop de
+	ret
+; 3defc
+
+.data_3defc
+	dbw $1f, $61ac
+	dbw $20, $61b0
+	dbw $21, $61b4
+	dbw $22, $61b8
+	dbw $23, $61bc
+	dbw $24, $61c0
+	dbw $25, $61c4
+	db $ff
+; 3df12
+
+
+Function3df12: ; 3df12
+	ld hl, PartyMon1Item
+	ld a, [CurBattleMon]
+	call GetPartyLocation
+	ld bc, BattleMonItem
+	ret
+; 3df1f
+
+Function3df1f: ; 3df1f
+	ld hl, OTPartyMon1Item
+	ld a, [CurOTMon]
+	call GetPartyLocation
+	ld bc, EnemyMonItem
+	ret
+; 3df2c
+
+Function3df2c: ; 3df2c
+	push hl
+	push de
+	push bc
+	call DrawPlayerHUD
+	ld hl, PlayerHPPal
+	call SetHPPal
+	call CheckDanger
+	call Function3e043
+	ld hl, EnemyHPPal
+	call SetHPPal
+	pop bc
+	pop de
+	pop hl
+	ret
+; 3df48
+
+
+
+Function3df48: ; 3df48
+	push hl
+	push de
+	push bc
+	call DrawPlayerHUD
+	call UpdatePlayerHPPal
+	call CheckDanger
+	pop bc
+	pop de
+	pop hl
+	ret
+; 3df58
+
+DrawPlayerHUD: ; 3df58
+	xor a
+	ld [hBGMapMode], a
+
+; Clear the area
+	hlcoord 9, 7
+	ld bc, $050b
+	call ClearBox
+
+	callba DrawPlayerExpBar
+
+	hlcoord 18, 9
+	ld [hl], $73 ; vertical bar
+	call PrintPlayerHUD
+
+; HP bar
+	hlcoord 10, 9
+	ld b, OTPARTYMON
+	xor a
+	ld [MonType], a
+	ld a, PREDEF_DRAW_PLAYER_HP
+	call Predef
+
+; Exp bar
+	push de
+	ld a, [CurBattleMon]
+	ld hl, PartyMon1Exp + 2
+	call GetPartyLocation
+	ld d, h
+	ld e, l
+
+	hlcoord 10, 11
+	ld a, [TempMonLevel]
+	ld b, a
+	call FillInExpBar
+	pop de
+	ret
+; 3df98
+
+UpdatePlayerHPPal: ; 3df98
+	ld hl, PlayerHPPal
+	jp Function3e12e
+; 3df9e
+
+CheckDanger: ; 3df9e
+	ld hl, BattleMonHP
+	ld a, [hli]
+	or [hl]
+	jr z, .asm_3dfb2
+	ld a, [$c6fd]
+	and a
+	jr nz, .asm_3dfbe
+	ld a, [PlayerHPPal]
+	cp $2
+	jr z, .asm_3dfb9
+
+.asm_3dfb2
+	ld hl, Danger
+	res 7, [hl]
+	jr .asm_3dfbe
+
+.asm_3dfb9
+	ld hl, Danger
+	set 7, [hl]
+
+.asm_3dfbe
+	ret
+; 3dfbf
+
+PrintPlayerHUD: ; 3dfbf
+	ld de, BattleMonNick
+	hlcoord 10, 7
+	call Function3e138
+	call PlaceString
+
+	push bc
+
+	ld a, [CurBattleMon]
+	ld hl, PartyMon1DVs
+	call GetPartyLocation
+	ld de, TempMonDVs
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hl]
+	ld [de], a
+	ld hl, BattleMonLevel
+	ld de, TempMonLevel
+	ld bc, $0011
+	call CopyBytes
+	ld a, [CurBattleMon]
+	ld hl, PartyMon1Species
+	call GetPartyLocation
+	ld a, [hl]
+	ld [CurPartySpecies], a
+	ld [CurSpecies], a
+	call GetBaseData
+
+	pop hl
+	dec hl
+
+	ld a, $3
+	ld [MonType], a
+	callab GetGender
+	ld a, $7f
+	jr c, .asm_3e013
+	ld a, $ef
+	jr nz, .asm_3e013
+	ld a, $f5
+
+.asm_3e013
+	ld hl, $c551
+	ld [hl], a
+	ld hl, $c54e
+	push af
+	push hl
+	ld de, BattleMonStatus
+	ld a, $21
+	call Predef
+	pop hl
+	pop bc
+	ret nz
+	ld a, b
+	cp $7f
+	jr nz, .asm_3e02d
+	dec hl
+
+.asm_3e02d
+	ld a, [BattleMonLevel]
+	ld [TempMonLevel], a
+	jp PrintLevel
+; 3e036
+
+Function3e036: ; 3e036
+	push hl
+	push de
+	push bc
+	call Function3e043
+	call Function3e127
+	pop bc
+	pop de
+	pop hl
+	ret
+; 3e043
+
+Function3e043: ; 3e043
+	xor a
+	ld [hBGMapMode], a
+	ld hl, $c4a1
+	ld bc, $040b
+	call ClearBox
+	ld a, $b
+	ld hl, $40c5
+	rst FarCall
+	ld a, [TempEnemyMonSpecies]
+	ld [CurSpecies], a
+	ld [CurPartySpecies], a
+	call GetBaseData
+	ld de, EnemyMonNick
+	ld hl, $c4a1
+	call Function3e138
+	call PlaceString
+	ld h, b
+	ld l, c
+	dec hl
+	ld hl, EnemyMonAtkDefDV
+	ld de, TempMonDVs
+	ld a, [EnemySubStatus5]
+	bit 3, a
+	jr z, .asm_3e080
+	ld hl, $c6f2
+
+.asm_3e080
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hl]
+	ld [de], a
+	ld a, $3
+	ld [MonType], a
+	callab GetGender
+	ld a, $7f
+	jr c, .asm_3e09a
+	ld a, $ef
+	jr nz, .asm_3e09a
+	ld a, $f5
+
+.asm_3e09a
+	ld hl, $c4bd
+	ld [hl], a
+	ld hl, $c4ba
+	push af
+	push hl
+	ld de, EnemyMonStatus
+	ld a, $21
+	call Predef
+	pop hl
+	pop bc
+	jr nz, .asm_3e0be
+	ld a, b
+	cp $7f
+	jr nz, .asm_3e0b5
+	dec hl
+
+.asm_3e0b5
+	ld a, [EnemyMonLevel]
+	ld [TempMonLevel], a
+	call PrintLevel
+
+.asm_3e0be
+	ld hl, EnemyMonHPHi
+	ld a, [hli]
+	ld [$ffb5], a
+	ld a, [hld]
+	ld [$ffb6], a
+	or [hl]
+	jr nz, .asm_3e0d1
+	ld c, a
+	ld e, a
+	ld d, $6
+	jp $611a
+
+.asm_3e0d1
+	xor a
+	ld [hMultiplicand], a
+	ld a, $30
+	ld [hMultiplier], a
+	call Multiply
+	ld hl, EnemyMonMaxHPHi
+	ld a, [hli]
+	ld b, a
+	ld a, [hl]
+	ld [hMultiplier], a
+	ld a, b
+	and a
+	jr z, .asm_3e105
+	ld a, [hMultiplier]
+	srl b
+	rr a
+	srl b
+	rr a
+	ld [hMultiplier], a
+	ld a, [$ffb5]
+	ld b, a
+	srl b
+	ld a, [$ffb6]
+	rr a
+	srl b
+	rr a
+	ld [$ffb6], a
+	ld a, b
+	ld [$ffb5], a
+
+.asm_3e105
+	ld a, [$ffb5]
+	ld [hProduct], a
+	ld a, [$ffb6]
+	ld [hMultiplicand], a
+	ld a, $2
+	ld b, a
+	call Divide
+	ld a, [$ffb6]
+	ld e, a
+	ld a, $6
+	ld d, a
+	ld c, a
+	xor a
+	ld [$d10a], a
+	ld hl, $c4ca
+	ld b, $0
+	call DrawHPBar
+	ret
+; 3e127
+
+Function3e127: ; 3e127
+	ld hl, EnemyHPPal
+	call Function3e12e
+	ret
+; 3e12e
+
+Function3e12e: ; 3e12e
+	ld b, [hl]
+	call SetHPPal
+	ld a, [hl]
+	cp b
+	ret z
+	jp Function3ee27
+; 3e138
+
+Function3e138: ; 3e138
+	ret
+; 3e139
+
+Function3e139: ; 3e139
+	xor a
+	ld [hBGMapMode], a
+	call Function30bf
+	ld a, [BattleType]
+	cp $2
+	jr z, .asm_3e156
+	cp $3
+	jr z, .asm_3e156
+	call EmptyBattleTextBox
+	call UpdateBattleHuds
+	call EmptyBattleTextBox
+	call Function309d
+
+.asm_3e156
+	ld a, [BattleType]
+	cp $6
+	jr nz, .asm_3e165
+	ld a, $9
+	ld hl, $4f13
+	rst FarCall
+	jr .asm_3e175
+
+.asm_3e165
+	ld a, [InputType]
+	or a
+	jr z, .asm_3e171
+	ld a, $77
+	ld hl, $6294
+	rst FarCall
+
+.asm_3e171
+	call Function3e19b
+	ret c
+
+.asm_3e175
+	ld a, $1
+	ld [hBGMapMode], a
+	ld a, [$d0d2]
+	cp $1
+	jp z, Function3e192
+	cp $3
+	jp z, Function3e1c7
+	cp $2
+	jp z, Function3e28d
+	cp $4
+	jp z, Function3e489
+	jr .asm_3e156
+; 3e192
+
+Function3e192: ; 3e192
+	xor a
+	ld [$d267], a
+	call Function30b4
+	and a
+	ret
+; 3e19b
+
+Function3e19b: ; 3e19b
+	call Function3d2f1
+	jr z, .asm_3e1a8
+	callba Function24ef2
+	and a
+	ret
+
+.asm_3e1a8
+	ld a, $40
+	ld hl, $4b12
+	rst FarCall
+	ld a, [$cd2b]
+	and a
+	ret z
+	ld hl, $cd2a
+	bit 4, [hl]
+	jr nz, .asm_3e1c5
+	ld hl, $5863
+	call FarBattleTextBox
+	ld c, $3c
+	call DelayFrames
+
+.asm_3e1c5
+	scf
+	ret
+; 3e1c7
+
+Function3e1c7: ; 3e1c7
+	ld a, [InLinkBattle]
+	and a
+	jp nz, Function3e22b
+	ld a, [$cfc0]
+	and a
+	jp nz, Function3e22b
+	call Function1d6e
+	ld a, [BattleType]
+	cp $3
+	jr z, .asm_3e1f1
+	cp $6
+	jr z, .asm_3e201
+	ld a, $4
+	ld hl, $4493
+	rst FarCall
+	ld a, [$d0ec]
+	and a
+	jr z, .asm_3e20d
+	jr .asm_3e209
+
+.asm_3e1f1
+	ld a, $4
+	ld hl, $47bb
+	rst FarCall
+	ld a, $5
+	ld [CurItem], a
+	call DoItemEffect
+	jr .asm_3e209
+
+.asm_3e201
+	ld a, $b1
+	ld [CurItem], a
+	call DoItemEffect
+
+.asm_3e209
+	call Function3e234
+	ret
+
+.asm_3e20d
+	call ClearPalettes
+	call DelayFrame
+	call Function3ed9f
+	call Function3f43d
+	call Function3f47c
+	call Function1c07
+	call WaitBGMap
+	call Function3ee27
+	call Function309d
+	jp Function3e139
+; 3e22b
+
+Function3e22b: ; 3e22b
+	ld hl, BattleText_0x80bf3
+	call FarBattleTextBox
+	jp Function3e139
+; 3e234
+
+Function3e234: ; 3e234
+	ld a, [$c64e]
+	and a
+	jr nz, .asm_3e279
+	callab CheckItemPocket
+	ld a, [$d142]
+	cp $3
+	jr z, .asm_3e24a
+	call WhiteBGMap
+
+.asm_3e24a
+	xor a
+	ld [hBGMapMode], a
+	call Function3ed9f
+	call ClearSprites
+	ld a, [BattleType]
+	cp $3
+	jr z, .asm_3e25d
+	call Function3f43d
+
+.asm_3e25d
+	call Function3f47c
+	ld a, $1
+	ld [$cfa9], a
+	call Function1c07
+	call Function3df2c
+	call WaitBGMap
+	call Function309d
+	call Function1fbf
+	call Function3ee27
+	and a
+	ret
+
+.asm_3e279
+	xor a
+	ld [$c64e], a
+	ld a, [$d0ee]
+	and $c0
+	ld [$d0ee], a
+	call Function1fbf
+	call Function32f9
+	scf
+	ret
+; 3e28d
+
+Function3e28d: ; 3e28d
+	call Function1d6e
+	call Function1c07
+	call Function1d6e
+	call WhiteBGMap
+.asm_3e299
+	call $52fa
+	xor a
+	ld [PartyMenuActionText], a
+	call Function3d313
+	call Function3d329
+	jr c, .asm_3e2da
+.asm_3e2a8
+	ld a, $23
+	ld hl, $6a4a
+	rst FarCall
+	call Function3e2f5
+	jr c, .asm_3e2c8
+	call Function1bee
+	ld a, [$cfa9]
+	cp $1
+	jp z, Function3e358
+	cp $2
+	jr z, .asm_3e2cf
+	cp $3
+	jr z, .asm_3e2da
+	jr .asm_3e2a8
+
+.asm_3e2c8
+	call Function3d2e0
+	jr c, .asm_3e2da
+	jr .asm_3e299
+
+.asm_3e2cf
+	call Function3e308
+	call Function3d2e0
+	jr c, .asm_3e2da
+	jp $6290
+
+.asm_3e2da
+	call ClearSprites
+	call ClearPalettes
+	call DelayFrame
+	call Function3eda6
+	call Function1c17
+	call Function309d
+	call ClearSGB
+	call Function32f9
+	jp Function3e139
+; 3e2f5
+
+Function3e2f5: ; 3e2f5
+	call Function3d2f1
+	jr z, .asm_3e301
+	ld a, $9
+	ld hl, $4e99
+	rst FarCall
+	ret
+
+.asm_3e301
+	ld a, $40
+	ld hl, $4d22
+	rst FarCall
+	ret
+; 3e308
+
+Function3e308: ; 3e308
+	call DisableLCD
+	ld hl, $9310
+	ld de, VTiles0
+	ld bc, $0110
+	call CopyBytes
+	ld hl, VTiles2
+	ld de, $8110
+	ld bc, $0310
+	call CopyBytes
+	call EnableLCD
+	call ClearSprites
+	call LowVolume
+	xor a
+	ld [MonType], a
+	ld a, $13
+	ld hl, $5c7b
+	rst FarCall
+	call MaxVolume
+	call DisableLCD
+	ld hl, VTiles0
+	ld de, $9310
+	ld bc, $0110
+	call CopyBytes
+	ld hl, $8110
+	ld de, VTiles2
+	ld bc, $0310
+	call CopyBytes
+	call EnableLCD
+	ret
+; 3e358
+
+
+Function3e358: ; 3e358
+	ld a, [CurBattleMon]
+	ld d, a
+	ld a, [CurPartyMon]
+	cp d
+	jr nz, .asm_3e36b
+	ld hl, BattleText_0x80c0d
+	call FarBattleTextBox
+	jp $6299
+
+.asm_3e36b
+	ld a, [$c730]
+	and a
+	jr nz, .asm_3e378
+	ld a, [EnemySubStatus5]
+	bit 7, a
+	jr z, .asm_3e381
+
+.asm_3e378
+	ld hl, BattleText_0x80c22
+	call FarBattleTextBox
+	jp $6299
+
+.asm_3e381
+	call Function3d887
+	jp z, $6299
+	ld a, [CurBattleMon]
+	ld [$c71a], a
+	ld a, $2
+	ld [$d0ec], a
+	call ClearPalettes
+	call DelayFrame
+	call ClearSprites
+	call Function3eda6
+	call Function1c17
+	call ClearSGB
+	call Function32f9
+	ld a, [CurPartyMon]
+	ld [CurBattleMon], a
+	; fallthrough
+; 3e3ad
+
+Function3e3ad: ; 3e3ad
+	ld a, $1
+	ld [$c710], a
+	ld a, [InLinkBattle]
+	and a
+	jr z, .asm_3e3c1
+	call Function1d6e
+	call Function3e8e4
+	call Function1c17
+
+.asm_3e3c1
+	call Function3e7c1
+	ld a, [InLinkBattle]
+	and a
+	jr nz, .asm_3e3cf
+
+.asm_3e3ca
+	call Function3e40b
+	and a
+	ret
+
+.asm_3e3cf
+	ld a, [$d430]
+	cp $e
+	jp z, .asm_3e3ca
+	cp $d
+	jp z, .asm_3e3ca
+	cp $4
+	jp c, .asm_3e3ca
+	cp $f
+	jr nz, .asm_3e3e9
+	call Function3c0e5
+	ret
+
+.asm_3e3e9
+	ld a, [$ffcb]
+	cp $1
+	jr z, .asm_3e3f7
+	call Function3e40b
+	call Function3e3ff
+	and a
+	ret
+
+.asm_3e3f7
+	call Function3e3ff
+	call Function3e40b
+	and a
+	ret
+; 3e3ff
+
+Function3e3ff: ; 3e3ff
+	ld hl, $446c
+	ld a, $e
+	rst FarCall
+	call SetEnemyTurn
+	jp Function3dc23
+; 3e40b
+
+Function3e40b: ; 3e40b
+	call Function3f2f4
+	ld c, $32
+	call DelayFrames
+	ld hl, PlayerSubStatus4
+	res 6, [hl]
+	call SetEnemyTurn
+	call Function3dc5b
+	jr c, .asm_3e423
+	call Function3dce6
+
+.asm_3e423
+	ld hl, $c535
+	ld bc, $050b
+	call ClearBox
+	ld a, [CurBattleMon]
+	ld [CurPartyMon], a
+	call $5581
+	call Function3da0d
+	call Function3dab1
+	call Function3f26d
+	call Function3dbde
+	call Function3dc18
+	call Function3db5f
+	call EmptyBattleTextBox
+	call Function309d
+	call SetPlayerTurn
+	call Function3dc23
+	ld a, $2
+	ld [$cfa9], a
+	ret
+; 3e459
+
+Function3e459: ; 3e459
+	ld c, $32
+	call DelayFrames
+	ld hl, $c535
+	ld bc, $050b
+	call ClearBox
+	ld a, [CurPartyMon]
+	ld [CurBattleMon], a
+	call $5581
+	call Function3da0d
+	xor a
+	ld [$d265], a
+	call Function3ecab
+	call Function3db5f
+	call EmptyBattleTextBox
+	call Function309d
+	call SetPlayerTurn
+	jp Function3dc23
+; 3e489
+
+
+
+Function3e489: ; 3e489
+	call Function30b4
+	ld a, $3
+	ld [$cfa9], a
+	ld hl, BattleMonSpd
+	ld de, EnemyMonSpd
+	call Function3d8b3
+	ld a, $0
+	ld [$d266], a
+	ret c
+	ld a, [$d0ec]
+	and a
+	ret nz
+	jp Function3e139
+; 3e4a8
+
+
+
+Function3e4a8: ; 3e4a8
+	ld a, [BattleMonItem]
+	ld b, a
+	callab GetItem
+	ld a, b
+	cp $4c
+	ret nz
+	ld a, $1
+	ld [$c73d], a
+	ret
+; 3e4bc
+
+Function3e4bc: ; 3e4bc
+	call Function3d2f1
+	jr nz, .asm_3e4c8
+	ld a, $40
+	ld hl, $4b9f
+	rst FarCall
+	ret
+
+.asm_3e4c8
+	ld hl, EnemyMonMove1
+	ld a, [$d235]
+	dec a
+	jr z, .asm_3e4e2
+	dec a
+	jr z, .asm_3e4dd
+	call Function3e786
+	ret z
+	ld hl, BattleMonMove1
+	jr .asm_3e4e2
+
+.asm_3e4dd
+	ld a, $2
+	call GetPartyParamLocation
+
+.asm_3e4e2
+	ld de, $d25e
+	ld bc, $0004
+	call CopyBytes
+	xor a
+	ld [hBGMapMode], a
+	ld hl, $c594
+	ld b, $4
+	ld c, $e
+	ld a, [$d235]
+	cp $2
+	jr nz, .asm_3e503
+	ld hl, $c544
+	ld b, $4
+	ld c, $e
+
+.asm_3e503
+	call TextBox
+	ld hl, $c5aa
+	ld a, [$d235]
+	cp $2
+	jr nz, .asm_3e513
+	ld hl, $c55a
+
+.asm_3e513
+	ld a, $14
+	ld [Buffer1], a
+	ld a, $20
+	call Predef
+	ld b, $5
+	ld a, [$d235]
+	cp $2
+	ld a, $d
+	jr nz, .asm_3e52c
+	ld b, $5
+	ld a, $9
+
+.asm_3e52c
+	ld [$cfa1], a
+	ld a, b
+	ld [$cfa2], a
+	ld a, [$d235]
+	cp $1
+	jr z, .asm_3e53e
+	ld a, [CurMoveNum]
+	inc a
+
+.asm_3e53e
+	ld [$cfa9], a
+	ld a, $1
+	ld [$cfaa], a
+	ld a, [$d0eb]
+	inc a
+	ld [$cfa3], a
+	ld a, $1
+	ld [$cfa4], a
+	ld c, $2c
+	ld a, [$d235]
+	dec a
+	ld b, $c1
+	jr z, .asm_3e569
+	dec a
+	ld b, $c3
+	jr z, .asm_3e569
+	ld a, [InLinkBattle]
+	and a
+	jr nz, .asm_3e569
+	ld b, $c7
+
+.asm_3e569
+	ld a, b
+	ld [$cfa8], a
+	ld a, c
+	ld [$cfa5], a
+	xor a
+	ld [$cfa6], a
+	ld a, $10
+	ld [$cfa7], a
+	ld a, [$d235]
+	and a
+	jr z, .asm_3e58e
+	dec a
+	jr nz, .asm_3e5a3
+	ld hl, $c5c3
+	ld de, .string_3e61c
+	call PlaceString
+	jr .asm_3e5a3
+
+.asm_3e58e
+	call MoveInfoBox
+	ld a, [$d0e3]
+	and a
+	jr z, .asm_3e5a3
+	ld hl, $c5a9
+	ld bc, $0014
+	dec a
+	call AddNTimes
+	ld [hl], $ec
+
+.asm_3e5a3
+	ld a, $1
+	ld [hBGMapMode], a
+	call Function1bd3
+	bit 6, a
+	jp nz, Function3e61d
+	bit 7, a
+	jp nz, Function3e62e
+	bit 2, a
+	jp nz, Function3e643
+	bit 1, a
+	push af
+	xor a
+	ld [$d0e3], a
+	ld a, [$cfa9]
+	dec a
+	ld [$cfa9], a
+	ld b, a
+	ld a, [$d235]
+	dec a
+	jr nz, .asm_3e5d0
+	pop af
+	ret
+
+.asm_3e5d0
+	dec a
+	ld a, b
+	ld [CurMoveNum], a
+	jr nz, .asm_3e5d9
+	pop af
+	ret
+
+.asm_3e5d9
+	pop af
+	ret nz
+	ld hl, BattleMonPPMove1
+	ld a, [$cfa9]
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [hl]
+	and $3f
+	jr z, .asm_3e610
+	ld a, [PlayerDisableCount]
+	swap a
+	and $f
+	dec a
+	cp c
+	jr z, .asm_3e60b
+	ld a, [$c6e1]
+	and a
+	jr nz, .asm_3e606
+	ld a, [$cfa9]
+	ld hl, BattleMonMove1
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [hl]
+
+.asm_3e606
+	ld [CurPlayerMove], a
+	xor a
+	ret
+
+.asm_3e60b
+	ld hl, BattleText_0x80c5b
+	jr .asm_3e613
+
+.asm_3e610
+	ld hl, Function3cc39
+
+.asm_3e613
+	call FarBattleTextBox
+	call Function30b4
+	jp Function3e4bc
+; 3e61c
+
+.string_3e61c ; 3e61c
+	db "@"
+; 3e61d
+
+
+Function3e61d: ; 3e61d
+	ld a, [$cfa9]
+	and a
+	jp nz, $657a
+	ld a, [$d0eb]
+	inc a
+	ld [$cfa9], a
+	jp $657a
+; 3e62e
+
+Function3e62e: ; 3e62e
+	ld a, [$cfa9]
+	ld b, a
+	ld a, [$d0eb]
+	inc a
+	inc a
+	cp b
+	jp nz, $657a
+	ld a, $1
+	ld [$cfa9], a
+	jp $657a
+; 3e643
+
+Function3e643: ; 3e643
+	ld a, [$d0e3]
+	and a
+	jr z, .asm_3e6bf
+	ld hl, BattleMonMove1
+	call $66a5
+	ld hl, BattleMonPPMove1
+	call $66a5
+	ld hl, PlayerDisableCount
+	ld a, [hl]
+	swap a
+	and $f
+	ld b, a
+	ld a, [$cfa9]
+	cp b
+	jr nz, .asm_3e671
+	ld a, [hl]
+	and $f
+	ld b, a
+	ld a, [$d0e3]
+	swap a
+	add b
+	ld [hl], a
+	jr .asm_3e682
+
+.asm_3e671
+	ld a, [$d0e3]
+	cp b
+	jr nz, .asm_3e682
+	ld a, [hl]
+	and $f
+	ld b, a
+	ld a, [$cfa9]
+	swap a
+	add b
+	ld [hl], a
+
+.asm_3e682
+	ld a, [PlayerSubStatus5]
+	bit 3, a
+	jr nz, .asm_3e69e
+	ld hl, PartyMon1Move1
+	ld a, [CurBattleMon]
+	call GetPartyLocation
+	push hl
+	call $66a5
+	pop hl
+	ld bc, $0015
+	add hl, bc
+	call $66a5
+
+.asm_3e69e
+	xor a
+	ld [$d0e3], a
+	jp Function3e4bc
+
+	push hl
+	ld a, [$d0e3]
+	dec a
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld d, h
+	ld e, l
+	pop hl
+	ld a, [$cfa9]
+	dec a
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [de]
+	ld b, [hl]
+	ld [hl], a
+	ld a, b
+	ld [de], a
+	ret
+
+.asm_3e6bf
+	ld a, [$cfa9]
+	ld [$d0e3], a
+	jp Function3e4bc
+; 3e6c8
+
+MoveInfoBox: ; 3e6c8
+	xor a
+	ld [hBGMapMode], a
+	ld hl, $c540
+	ld b, $3
+	ld c, $9
+	call TextBox
+	call MobileTextBorder
+	ld a, [PlayerDisableCount]
+	and a
+	jr z, .asm_3e6f4
+	swap a
+	and $f
+	ld b, a
+	ld a, [$cfa9]
+	cp b
+	jr nz, .asm_3e6f4
+	ld hl, $c569
+	ld de, .Disabled
+	call PlaceString
+	jr .asm_3e74e
+
+.asm_3e6f4
+	ld hl, $cfa9
+	dec [hl]
+	call SetPlayerTurn
+	ld hl, BattleMonMove1
+	ld a, [$cfa9]
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [hl]
+	ld [CurPlayerMove], a
+	ld a, [CurBattleMon]
+	ld [CurPartyMon], a
+	ld a, $4
+	ld [MonType], a
+	callab Functionf8ec
+	ld hl, $cfa9
+	ld c, [hl]
+	inc [hl]
+	ld b, $0
+	ld hl, BattleMonPPMove1
+	add hl, bc
+	ld a, [hl]
+	and $3f
+	ld [StringBuffer1], a
+	call Function3e75f
+	ld hl, $c555
+	ld de, .Type
+	call PlaceString
+	ld hl, $c583
+	ld [hl], $f3
+	callab UpdateMoveData
+	ld a, [PlayerMoveAnimation]
+	ld b, a
+	ld hl, $c56a
+	ld a, $2a
+	call Predef
+
+.asm_3e74e
+	ret
+; 3e74f
+
+.Disabled
+	db "Disabled!@"
+.Type
+	db "TYPE/@"
+; 3e75f
+
+
+Function3e75f: ; 3e75f
+	ld hl, $c581
+	ld a, [InLinkBattle]
+	cp $4
+	jr c, .asm_3e76c
+	ld hl, $c581
+
+.asm_3e76c
+	push hl
+	ld de, StringBuffer1
+	ld bc, $0102
+	call PrintNum
+	pop hl
+	inc hl
+	inc hl
+	ld [hl], $f3
+	inc hl
+	ld de, $d265
+	ld bc, $0102
+	call PrintNum
+	ret
+; 3e786
+
+Function3e786: ; 3e786
+	ld a, $a5
+	ld [CurPlayerMove], a
+	ld a, [PlayerDisableCount]
+	and a
+	ld hl, BattleMonPPMove1
+	jr nz, .asm_3e79f
+	ld a, [hli]
+	or [hl]
+	inc hl
+	or [hl]
+	inc hl
+	or [hl]
+	and $3f
+	ret nz
+	jr .asm_3e7b4
+
+.asm_3e79f
+	swap a
+	and $f
+	ld b, a
+	ld d, $5
+	xor a
+.asm_3e7a7
+	dec d
+	jr z, .asm_3e7b2
+	ld c, [hl]
+	inc hl
+	dec b
+	jr z, .asm_3e7a7
+	or c
+	jr .asm_3e7a7
+
+.asm_3e7b2
+	and a
+	ret nz
+
+.asm_3e7b4
+	ld hl, BattleText_0x80c72
+	call FarBattleTextBox
+	ld c, $3c
+	call DelayFrames
+	xor a
+	ret
+; 3e7c1
+
+
+
+Function3e7c1: ; 3e7c1
+	ld a, [$c711]
+	and a
+	ret nz
+	ld a, [InLinkBattle]
+	and a
+	jr z, .asm_3e817
+	call EmptyBattleTextBox
+	call Function309d
+	ld a, [$d0ec]
+	and a
+	call z, Function3e8e4
+	call Function30b4
+	ld a, [$d430]
+	cp $e
+	jp z, $68bd
+	cp $d
+	jp z, $682c
+	cp $4
+	jp nc, Function3e8c1
+	ld [CurEnemyMoveNum], a
+	ld c, a
+	ld a, [EnemySubStatus1]
+	bit 6, a
+	jp nz, $6882
+	ld a, [EnemySubStatus3]
+	and $13
+	jp nz, $6882
+	ld hl, EnemySubStatus5
+	bit 4, [hl]
+	ld a, [LastEnemyMove]
+	jp nz, $687f
+	ld hl, EnemyMonMove1
+	ld b, $0
+	add hl, bc
+	ld a, [hl]
+	jp $687f
+
+.asm_3e817
+	ld hl, EnemySubStatus5
+	bit 4, [hl]
+	jr z, .asm_3e824
+	ld a, [LastEnemyMove]
+	jp $687f
+
+.asm_3e824
+	call Function3e8d1
+	jp nz, Function3e8c1
+	jr .asm_3e830
+
+	ld a, $ff
+	jr .asm_3e87f
+
+.asm_3e830
+	ld hl, EnemyMonMove1
+	ld de, EnemyMonPPMove1
+	ld b, $4
+.asm_3e838
+	ld a, [hl]
+	and a
+	jp z, $68bd
+	ld a, [EnemyDisabledMove]
+	cp [hl]
+	jr z, .asm_3e848
+	ld a, [de]
+	and $3f
+	jr nz, .asm_3e84f
+
+.asm_3e848
+	inc hl
+	inc de
+	dec b
+	jr nz, .asm_3e838
+	jr .asm_3e8bd
+
+.asm_3e84f
+	ld a, [IsInBattle]
+	dec a
+	jr nz, .asm_3e882
+.asm_3e855
+	ld hl, EnemyMonMove1
+	call FarBattleRNG
+	and $3
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [EnemyDisableCount]
+	swap a
+	and $f
+	dec a
+	cp c
+	jr z, .asm_3e855
+	ld a, [hl]
+	and a
+	jr z, .asm_3e855
+	ld hl, EnemyMonPPMove1
+	add hl, bc
+	ld b, a
+	ld a, [hl]
+	and $3f
+	jr z, .asm_3e855
+	ld a, c
+	ld [CurEnemyMoveNum], a
+	ld a, b
+
+.asm_3e87f
+	ld [CurEnemyMove], a
+
+.asm_3e882
+	call SetEnemyTurn
+	callab UpdateMoveData
+	call Function3e8d1
+	jr nz, .asm_3e894
+	xor a
+	ld [$c733], a
+
+.asm_3e894
+	ld a, [EnemyMoveEffect]
+	cp $77
+	jr z, .asm_3e89f
+	xor a
+	ld [EnemyFuryCutterCount], a
+
+.asm_3e89f
+	ld a, [EnemyMoveEffect]
+	cp $51
+	jr z, .asm_3e8af
+	ld hl, EnemySubStatus4
+	res 6, [hl]
+	xor a
+	ld [$c72c], a
+
+.asm_3e8af
+	ld a, [EnemyMoveEffect]
+	cp $6f
+	ret z
+	cp $74
+	ret z
+	xor a
+	ld [$c681], a
+	ret
+
+.asm_3e8bd
+	ld a, $a5
+	jr .asm_3e87f
+; 3e8c1
+
+Function3e8c1: ; 3e8c1
+	xor a
+	ld [EnemyFuryCutterCount], a
+	ld [$c681], a
+	ld [$c72c], a
+	ld hl, EnemySubStatus4
+	res 6, [hl]
+	ret
+; 3e8d1
+
+Function3e8d1: ; 3e8d1
+	ld a, [EnemySubStatus4]
+	and $20
+	ret nz
+	ld hl, EnemySubStatus3
+	ld a, [hl]
+	and $13
+	ret nz
+	ld hl, EnemySubStatus1
+	bit 6, [hl]
+	ret
+; 3e8e4
+
+Function3e8e4: ; 3e8e4
+	ld a, $40
+	ld hl, $4a09
+	rst FarCall
+	ret
+; 3e8eb
+
+
 LoadEnemyMon: ; 3e8eb
 ; Initialize enemy monster parameters
 ; To do this we pull the species from TempEnemyMonSpecies
@@ -12117,11 +43835,11 @@
 ; We don't need to be here if we're in a link battle
 	ld a, [InLinkBattle]
 	and a
-	jp nz, $5abd
+	jp nz, Function3dabd
 	
 	ld a, [$cfc0] ; ????
 	bit 0, a
-	jp nz, $5abd
+	jp nz, Function3dabd
 	
 ; Make sure everything knows what species we're working with
 	ld a, [TempEnemyMonSpecies]
@@ -12304,7 +44022,7 @@
 	
 ; Get letter based on DVs
 	ld hl, EnemyMonDVs
-	ld a, PREDEF_GETUNOWNLETTER
+	ld a, PREDEF_GET_UNOWN_LETTER
 	call Predef
 ; Can't use any letters that haven't been unlocked
 ; If combined with forced shiny battletype, causes an infinite loop
@@ -12369,7 +44087,7 @@
 	jr c, .Happiness
 ; Floor at length 1024
 	ld a, [MagikarpLength]
-	cp a, $04 ; $400 = 1024
+	cp a, 1024 >> 8
 	jr c, .GenerateDVs ; try again
 	
 	
@@ -12400,7 +44118,7 @@
 	jr z, .TreeMon
 	
 ; ????
-	ld a, [$c671]
+	ld a, [EnemySubStatus5]
 	bit 3, a
 	jp nz, .Moves
 	
@@ -12504,7 +44222,7 @@
 	ld [hli], a
 	ld [hl], a
 ; Make sure the predef knows this isn't a partymon
-	ld [$d1ea], a
+	ld [MagikarpLength], a
 ; Fill moves based on level
 	ld a, PREDEF_FILLMOVES
 	call Predef
@@ -12576,7 +44294,7 @@
 	call Predef
 
 	ld hl, EnemyMonStats
-	ld de, $c6c1
+	ld de, EnemyStats
 	ld bc, EnemyMonStatsEnd - EnemyMonStats
 	call CopyBytes
 
@@ -12714,10 +44432,297 @@
 ; 3ebc7
 
 
-INCBIN "baserom.gbc", $3ebc7, $3ed4a - $3ebc7
+Function3ebc7: ; 3ebc7
+	push bc
+	ld a, [BattleMonLevel]
+	ld b, a
+	ld a, [EnemyMonLevel]
+	ld [BattleMonLevel], a
+	ld a, b
+	ld [EnemyMonLevel], a
+	pop bc
+	ret
+; 3ebd8
 
+Function3ebd8: ; 3ebd8
+	xor a
+	ld [TempEnemyMonSpecies], a
+	call Function3ee27
+	ld a, [OtherTrainerClass]
+	ld [TrainerClass], a
+	ld de, VTiles2
+	ld hl, $520d
+	ld a, $14
+	rst FarCall
+	ld hl, $c4b3
+	ld c, $0
+.asm_3ebf3
+	inc c
+	ld a, c
+	cp $7
+	ret z
+	xor a
+	ld [hBGMapMode], a
+	ld [hBGMapThird], a
+	ld d, $0
+	push bc
+	push hl
+.asm_3ec01
+	call Function3ec1a
+	inc hl
+	ld a, $7
+	add d
+	ld d, a
+	dec c
+	jr nz, .asm_3ec01
+	ld a, $1
+	ld [hBGMapMode], a
+	ld c, $4
+	call DelayFrames
+	pop hl
+	pop bc
+	dec hl
+	jr .asm_3ebf3
+; 3ec1a
 
-BadgeStatBoosts: ; 3ed4a
+Function3ec1a: ; 3ec1a
+	push hl
+	push de
+	push bc
+	ld e, $7
+.asm_3ec1f
+	ld [hl], d
+	ld bc, $0014
+	add hl, bc
+	inc d
+	dec e
+	jr nz, .asm_3ec1f
+	pop bc
+	pop de
+	pop hl
+	ret
+; 3ec2c
+
+
+Function3ec2c: ; 3ec2c
+	ld a, 1
+	jr Function3ec31
+; 3ec30
+
+Function3ec30: ; 3ec30
+	xor a
+; 3ec31
+
+Function3ec31: ; 3ec31
+	ld [hBattleTurn], a
+	call Function3ec39
+	jp Function3ec76
+; 3ec39
+
+Function3ec39: ; 3ec39
+	ld a, [hBattleTurn]
+	and a
+	jr z, .asm_3ec5a
+	ld a, [BattleMonStatus]
+	and $40
+	ret z
+	ld hl, $c645
+	ld a, [hld]
+	ld b, a
+	ld a, [hl]
+	srl a
+	rr b
+	srl a
+	rr b
+	ld [hli], a
+	or b
+	jr nz, .asm_3ec58
+	ld b, $1
+
+.asm_3ec58
+	ld [hl], b
+	ret
+
+.asm_3ec5a
+	ld a, [EnemyMonStatus]
+	and $40
+	ret z
+	ld hl, $d21f
+	ld a, [hld]
+	ld b, a
+	ld a, [hl]
+	srl a
+	rr b
+	srl a
+	rr b
+	ld [hli], a
+	or b
+	jr nz, .asm_3ec74
+	ld b, $1
+
+.asm_3ec74
+	ld [hl], b
+	ret
+; 3ec76
+
+Function3ec76: ; 3ec76
+	ld a, [hBattleTurn]
+	and a
+	jr z, .asm_3ec93
+	ld a, [BattleMonStatus]
+	and $10
+	ret z
+	ld hl, $c641
+	ld a, [hld]
+	ld b, a
+	ld a, [hl]
+	srl a
+	rr b
+	ld [hli], a
+	or b
+	jr nz, .asm_3ec91
+	ld b, $1
+
+.asm_3ec91
+	ld [hl], b
+	ret
+
+.asm_3ec93
+	ld a, [EnemyMonStatus]
+	and $10
+	ret z
+	ld hl, $d21b
+	ld a, [hld]
+	ld b, a
+	ld a, [hl]
+	srl a
+	rr b
+	ld [hli], a
+	or b
+	jr nz, .asm_3eca9
+	ld b, $1
+
+.asm_3eca9
+	ld [hl], b
+	ret
+; 3ecab
+
+Function3ecab: ; 3ecab
+	ld c, 0
+.asm_3ecad
+	call Function3ecb7
+	inc c
+	ld a, c
+	cp 5
+	jr nz, .asm_3ecad
+	ret
+; 3ecb7
+
+Function3ecb7: ; 3ecb7
+	push bc
+	push bc
+	ld a, [$d265]
+	and a
+	ld a, c
+	ld hl, BattleMonAtk
+	ld de, PlayerStats
+	ld bc, PlayerAtkLevel
+	jr z, .asm_3ecd2
+	ld hl, EnemyMonAtk
+	ld de, EnemyStats
+	ld bc, EnemyAtkLevel
+
+.asm_3ecd2
+	add c
+	ld c, a
+	jr nc, .asm_3ecd7
+	inc b
+.asm_3ecd7
+	ld a, [bc]
+	pop bc
+	ld b, a
+	push bc
+	sla c
+	ld b, 0
+	add hl, bc
+	ld a, c
+	add e
+	ld e, a
+	jr nc, .asm_3ece6
+	inc d
+.asm_3ece6
+	pop bc
+	push hl
+	ld hl, .StatLevelMultipliers
+	dec b
+	sla b
+	ld c, b
+	ld b, 0
+	add hl, bc
+	xor a
+	ld [hMultiplicand], a
+	ld a, [de]
+	ld [$ffb5], a
+	inc de
+	ld a, [de]
+	ld [$ffb6], a
+	ld a, [hli]
+	ld [hMultiplier], a
+	call Multiply
+	ld a, [hl]
+	ld [hMultiplier], a
+	ld b, $4
+	call Divide
+	pop hl
+
+; Cap at 999.
+	ld a, [$ffb6]
+	sub 999 % $100
+	ld a, [$ffb5]
+	sbc 999 / $100
+	jp c, .asm_3ed1e
+
+	ld a, 999 / $100
+	ld [$ffb5], a
+	ld a, 999 % $100
+	ld [$ffb6], a
+
+.asm_3ed1e
+	ld a, [$ffb5]
+	ld [hli], a
+	ld b, a
+	ld a, [$ffb6]
+	ld [hl], a
+	or b
+	jr nz, .asm_3ed29
+	inc [hl]
+
+.asm_3ed29
+	pop bc
+	ret
+; 3ed2b
+
+.StatLevelMultipliers
+;	      /
+	db 25, 100 ; 25%
+	db 28, 100 ; 28%
+	db 33, 100 ; 33%
+	db 40, 100 ; 40%
+	db 50, 100 ; 50%
+	db 66, 100 ; 66%
+
+	db  1,  1 ; 100%
+
+	db 15, 10 ; 150%
+	db  2,  1 ; 200%
+	db 25, 10 ; 250%
+	db  3,  1 ; 300%
+	db 35, 10 ; 350%
+	db  4,  1 ; 400%
+; 3ed45
+
+
+BadgeStatBoosts: ; 3ed45
 ; Raise BattleMon stats depending on which badges have been obtained.
 
 ; Every other badge boosts a stat, starting from the first.
@@ -12730,6 +44735,10 @@
 
 ; The boosted stats are in order, except PlainBadge and MineralBadge's boosts are swapped.
 
+	ld a, [InLinkBattle]
+	and a
+	ret nz
+
 	ld a, [$cfc0]
 	and a
 	ret nz
@@ -12805,9 +44814,45 @@
 ; 3ed9f
 
 
-INCBIN "baserom.gbc", $3ed9f, $3edd8 - $3ed9f
+Function3ed9f: ; 3ed9f
+	ld hl, $74f2
+	ld a, $3e
+	rst FarCall
+	ret
+; 3eda6
 
+Function3eda6: ; 3eda6
+	ld hl, $750d
+	ld a, $3e
+	rst FarCall
+	ret
+; 3edad
 
+
+Function3edad: ; 3edad
+	ld de, $4ac0
+	ld hl, $96c0
+	ld bc, $3e04
+	call Get1bpp
+	ld de, $4ae0
+	ld hl, $9730
+	ld bc, $3e06
+	call Get1bpp
+	ld de, $4b10
+	ld hl, $9550
+	ld bc, $3e08
+	jp Get2bpp
+; 3edd1
+
+
+EmptyBattleTextBox: ; 3edd1
+	ld hl, .empty
+	jp BattleTextBox
+.empty
+	db "@"
+; 3edd8
+
+
 BattleRNG: ; 3edd8
 ; If the normal RNG is used in a link battle it'll desync.
 ; To circumvent this a shared PRNG is used instead.
@@ -12817,8 +44862,7 @@
 	and a
 	jp z, RNG
 
-; The PRNG operates in streams of 8 values
-; The reasons for this are unknown
+; The PRNG operates in streams of 10 values.
 
 ; Which value are we trying to pull?
 	push hl
@@ -12825,7 +44869,7 @@
 	push bc
 	ld a, [LinkBattleRNCount]
 	ld c, a
-	ld b, $0
+	ld b, 0
 	ld hl, LinkBattleRNs
 	add hl, bc
 	inc a
@@ -12832,31 +44876,30 @@
 	ld [LinkBattleRNCount], a
 
 ; If we haven't hit the end yet, we're good
-	cp 9 ; Exclude last value. See the closing comment
+	cp 10 - 1 ; Exclude last value. See the closing comment
 	ld a, [hl]
 	pop bc
 	pop hl
 	ret c
-	
-	
+
 ; If we have, we have to generate new pseudorandom data
 ; Instead of having multiple PRNGs, ten seeds are used
 	push hl
 	push bc
 	push af
-	
+
 ; Reset count to 0
 	xor a
 	ld [LinkBattleRNCount], a
 	ld hl, LinkBattleRNs
 	ld b, 10 ; number of seeds
-	
+
 ; Generate next number in the sequence for each seed
 ; The algorithm takes the form *5 + 1 % 256
 .loop
 	; get last #
 	ld a, [hl]
-	
+
 	; a * 5 + 1
 	ld c, a
 	add a
@@ -12863,7 +44906,7 @@
 	add a
 	add c
 	inc a
-	
+
 	; update #
 	ld [hli], a
 	dec b
@@ -12871,7 +44914,8 @@
 
 ; This has the side effect of pulling the last value first,
 ; then wrapping around. As a result, when we check to see if
-; we've reached the end, we have to take this into account.
+; we've reached the end, we check the one before it.
+
 	pop af
 	pop bc
 	pop hl
@@ -12878,8 +44922,1795 @@
 	ret
 ; 3ee0f
 
-INCBIN "baserom.gbc", $3ee0f, $3fa01 - $3ee0f
 
+Function3ee0f: ; 3ee0f
+	ld a, BATTLE_VARS_SUBSTATUS3
+	call CleanGetBattleVarPair
+	and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND
+	ret nz
+; 3ee17
+
+Function3ee17: ; 3ee17
+	ld a, e
+	ld [FXAnimIDLo], a
+	ld a, d
+	ld [FXAnimIDHi], a
+	call WaitBGMap
+	ld a, $37
+	jp Predef
+; 3ee27
+
+Function3ee27: ; 3ee27
+	push af
+	push bc
+	push de
+	push hl
+	ld b, $1
+	call GetSGBLayout
+	call Function32f9
+	call DelayFrame
+	pop hl
+	pop de
+	pop bc
+	pop af
+	ret
+; 3ee3b
+
+
+Function3ee3b: ; 3ee3b
+	ld a, [InLinkBattle]
+	and a
+	ret nz
+	ld a, [$cfc0]
+	bit 0, a
+	ret nz
+	call Function3f0d4
+	xor a
+	ld [CurPartyMon], a
+	ld bc, PartyMon1Species
+
+.asm_3ee50
+	ld hl, $0022
+	add hl, bc
+	ld a, [hli]
+	or [hl]
+	jp z, .asm_3f0b9
+	push bc
+	ld hl, $c664
+	ld a, [CurPartyMon]
+	ld c, a
+	ld b, $2
+	ld d, $0
+	ld a, $3
+	call Predef
+	ld a, c
+	and a
+	pop bc
+	jp z, .asm_3f0b9
+	ld hl, $000c
+	add hl, bc
+	ld d, h
+	ld e, l
+	ld hl, EnemyMonType2
+	push bc
+	ld c, $5
+.asm_3ee7c
+	inc hl
+	ld a, [de]
+	add [hl]
+	ld [de], a
+	jr nc, .asm_3ee89
+	dec de
+	ld a, [de]
+	inc a
+	jr z, .asm_3eea4
+	ld [de], a
+	inc de
+
+.asm_3ee89
+	push hl
+	push bc
+	ld a, $1c
+	call GetPartyParamLocation
+	ld a, [hl]
+	and a
+	pop bc
+	pop hl
+	jr z, .asm_3eea9
+	ld a, [de]
+	add [hl]
+	ld [de], a
+	jr nc, .asm_3eea9
+	dec de
+	ld a, [de]
+	inc a
+	jr z, .asm_3eea4
+	ld [de], a
+	inc de
+	jr .asm_3eea9
+
+.asm_3eea4
+	ld a, $ff
+	ld [de], a
+	inc de
+	ld [de], a
+
+.asm_3eea9
+	inc de
+	inc de
+	dec c
+	jr nz, .asm_3ee7c
+	xor a
+	ld [hMultiplicand], a
+	ld [$ffb5], a
+	ld a, [EnemyMonBaseExp]
+	ld [$ffb6], a
+	ld a, [EnemyMonLevel]
+	ld [hMultiplier], a
+	call Multiply
+	ld a, $7
+	ld [hMultiplier], a
+	ld b, $4
+	call Divide
+	pop bc
+	ld hl, $0006
+	add hl, bc
+	ld a, [PlayerID]
+	cp [hl]
+	jr nz, .asm_3eedd
+	inc hl
+	ld a, [$d47c]
+	cp [hl]
+	ld a, $0
+	jr z, .asm_3eee2
+
+.asm_3eedd
+	call Function3f106
+	ld a, $1
+
+.asm_3eee2
+	ld [$d088], a
+	ld a, [IsInBattle]
+	dec a
+	call nz, Function3f106
+	push bc
+	ld a, $1
+	call GetPartyParamLocation
+	ld a, [hl]
+	cp $7e
+	call z, Function3f106
+	ld a, [$ffb6]
+	ld [$d087], a
+	ld a, [$ffb5]
+	ld [StringBuffer2], a
+	ld a, [CurPartyMon]
+	ld hl, PartyMon1Nickname
+	call GetNick
+	ld hl, UnknownText_0x3f11b
+	call BattleTextBox
+	ld a, [$d087]
+	ld [$ffb6], a
+	ld a, [StringBuffer2]
+	ld [$ffb5], a
+	pop bc
+	call Function3f136
+	push bc
+	call Function309d
+	pop bc
+	ld hl, $000a
+	add hl, bc
+	ld d, [hl]
+	ld a, [$ffb6]
+	add d
+	ld [hld], a
+	ld d, [hl]
+	ld a, [$ffb5]
+	adc d
+	ld [hl], a
+	jr nc, .asm_3ef3d
+	dec hl
+	inc [hl]
+	jr nz, .asm_3ef3d
+	ld a, $ff
+	ld [hli], a
+	ld [hli], a
+	ld [hl], a
+
+.asm_3ef3d
+	ld a, [CurPartyMon]
+	ld e, a
+	ld d, $0
+	ld hl, PartySpecies
+	add hl, de
+	ld a, [hl]
+	ld [CurSpecies], a
+	call GetBaseData
+	push bc
+	ld d, $64
+	ld hl, $4e47
+	ld a, $14
+	rst FarCall
+	pop bc
+	ld hl, $000a
+	add hl, bc
+	push bc
+	ld a, [hMultiplicand]
+	ld b, a
+	ld a, [$ffb5]
+	ld c, a
+	ld a, [$ffb6]
+	ld d, a
+	ld a, [hld]
+	sub d
+	ld a, [hld]
+	sbc c
+	ld a, [hl]
+	sbc b
+	jr c, .asm_3ef74
+	ld a, b
+	ld [hli], a
+	ld a, c
+	ld [hli], a
+	ld a, d
+	ld [hld], a
+
+.asm_3ef74
+	xor a
+	ld [MonType], a
+	ld a, $1f
+	call Predef
+	ld hl, $4e1b
+	ld a, $14
+	rst FarCall
+	pop bc
+	ld hl, $001f
+	add hl, bc
+	ld a, [hl]
+	cp $64
+	jp nc, .asm_3f0b9
+	cp d
+	jp z, .asm_3f0b9
+	ld [$c719], a
+	ld a, [CurPartyLevel]
+	push af
+	ld a, d
+	ld [CurPartyLevel], a
+	ld [hl], a
+	ld hl, $0000
+	add hl, bc
+	ld a, [hl]
+	ld [CurSpecies], a
+	ld [$d265], a
+	call GetBaseData
+	ld hl, $0025
+	add hl, bc
+	ld a, [hld]
+	ld e, a
+	ld d, [hl]
+	push de
+	ld hl, $0024
+	add hl, bc
+	ld d, h
+	ld e, l
+	ld hl, $000a
+	add hl, bc
+	push bc
+	ld b, $1
+	ld a, $c
+	call Predef
+	pop bc
+	pop de
+	ld hl, $0025
+	add hl, bc
+	ld a, [hld]
+	sub e
+	ld e, a
+	ld a, [hl]
+	sbc d
+	ld d, a
+	dec hl
+	ld a, [hl]
+	add e
+	ld [hld], a
+	ld a, [hl]
+	adc d
+	ld [hl], a
+	ld a, [CurBattleMon]
+	ld d, a
+	ld a, [CurPartyMon]
+	cp d
+	jr nz, .asm_3f035
+	ld de, BattleMonHP
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	ld de, BattleMonMaxHP
+	push bc
+	ld bc, $000c
+	call CopyBytes
+	pop bc
+	ld hl, $001f
+	add hl, bc
+	ld a, [hl]
+	ld [BattleMonLevel], a
+	ld a, [PlayerSubStatus5]
+	bit 3, a
+	jr nz, .asm_3f012
+	ld hl, $0026
+	add hl, bc
+	ld de, PlayerStats
+	ld bc, $000a
+	call CopyBytes
+
+.asm_3f012
+	xor a
+	ld [$d265], a
+	call Function3ecab
+	ld hl, Function3ec2c
+	ld a, $f
+	rst FarCall
+	ld hl, $6d45
+	ld a, $f
+	rst FarCall
+	ld hl, Function3df48
+	ld a, $f
+	rst FarCall
+	call EmptyBattleTextBox
+	call Function309d
+	ld a, $1
+	ld [hBGMapMode], a
+
+.asm_3f035
+	ld a, $9
+	ld hl, $709e
+	rst FarCall
+	ld a, [CurBattleMon]
+	ld b, a
+	ld a, [CurPartyMon]
+	cp b
+	jr z, .asm_3f057
+	ld de, SFX_HIT_END_OF_EXP_BAR
+	call StartSFX
+	call WaitSFX
+	ld hl, BattleText_0x80c9c
+	call FarBattleTextBox
+	call Function309d
+
+.asm_3f057
+	xor a
+	ld [MonType], a
+	ld a, $1f
+	call Predef
+	ld hl, $c4a9
+	ld b, $a
+	ld c, $9
+	call TextBox
+	ld hl, $c4bf
+	ld bc, $0004
+	ld a, $28
+	call Predef
+	ld c, $1e
+	call DelayFrames
+	call Functiona80
+	call Function30b4
+	xor a
+	ld [MonType], a
+	ld a, [CurSpecies]
+	ld [$d265], a
+	ld a, [CurPartyLevel]
+	push af
+	ld c, a
+	ld a, [$c719]
+	ld b, a
+
+.asm_3f093
+	inc b
+	ld a, b
+	ld [CurPartyLevel], a
+	push bc
+	ld a, $1a
+	call Predef
+	pop bc
+	ld a, b
+	cp c
+	jr nz, .asm_3f093
+	pop af
+	ld [CurPartyLevel], a
+	ld hl, EvolvableFlags
+	ld a, [CurPartyMon]
+	ld c, a
+	ld b, $1
+	ld a, $3
+	call Predef
+	pop af
+	ld [CurPartyLevel], a
+
+.asm_3f0b9
+	ld a, [PartyCount]
+	ld b, a
+	ld a, [CurPartyMon]
+	inc a
+	cp b
+	jr z, .asm_3f0d1
+	ld [CurPartyMon], a
+	ld a, $0
+	call GetPartyParamLocation
+	ld b, h
+	ld c, l
+	jp .asm_3ee50
+
+.asm_3f0d1
+	jp Function3d57a
+; 3f0d4
+
+Function3f0d4: ; 3f0d4
+	ld a, [$c664]
+	ld b, a
+	ld c, $6
+	ld d, $0
+.asm_3f0dc
+	xor a
+	srl b
+	adc d
+	ld d, a
+	dec c
+	jr nz, .asm_3f0dc
+	cp $2
+	ret c
+	ld [$d265], a
+	ld hl, EnemyMonBaseStats
+	ld c, $7
+.asm_3f0ef
+	xor a
+	ld [hProduct], a
+	ld a, [hl]
+	ld [hMultiplicand], a
+	ld a, [$d265]
+	ld [hMultiplier], a
+	ld b, $2
+	call Divide
+	ld a, [$ffb6]
+	ld [hli], a
+	dec c
+	jr nz, .asm_3f0ef
+	ret
+; 3f106
+
+Function3f106: ; 3f106
+	push bc
+	ld a, [$ffb5]
+	ld b, a
+	ld a, [$ffb6]
+	ld c, a
+	srl b
+	rr c
+	add c
+	ld [$ffb6], a
+	ld a, [$ffb5]
+	adc b
+	ld [$ffb5], a
+	pop bc
+	ret
+; 3f11b
+
+UnknownText_0x3f11b: ; 3f11b
+	text_jump UnknownText_0x1c029c, BANK(UnknownText_0x1c029c)
+	start_asm
+	ld hl, UnknownText_0x3f131
+	ld a, [$d088] ; IsTradedMon
+	and a
+	ret z
+	ld hl, UnknownText_0x3f12c
+	ret
+; 3f12c
+
+UnknownText_0x3f12c: ; 3f12c
+	text_jump UnknownText_0x1c02a9, BANK(UnknownText_0x1c02a9)
+	db "@"
+; 3f131
+
+UnknownText_0x3f131: ; 3f131
+	text_jump UnknownText_0x1c02c9, BANK(UnknownText_0x1c02c9)
+	db "@"
+; 3f136
+
+
+Function3f136: ; 3f136
+
+	push bc
+
+	ld hl, CurPartyMon
+	ld a, [CurBattleMon]
+	cp [hl]
+	jp nz, .asm_3f219
+
+	ld a, [BattleMonLevel]
+	cp MAX_LEVEL
+	jp nc, .asm_3f219
+
+	ld a, [$ffb6]
+	ld [$d004], a
+	push af
+	ld a, [$ffb5]
+	ld [$d003], a
+	push af
+	xor a
+	ld [DefaultFlypoint], a
+	xor a
+	ld [MonType], a
+	ld a, $1f
+	call Predef
+	ld a, [TempMonLevel]
+	ld b, a
+	ld e, a
+	push de
+	ld de, $d118
+	call Function3f39c
+	push bc
+	ld hl, $d118
+	ld a, [$d004]
+	add [hl]
+	ld [hld], a
+	ld a, [$d003]
+	adc [hl]
+	ld [hld], a
+	jr nc, .asm_3f186
+	inc [hl]
+	jr nz, .asm_3f186
+	ld a, $ff
+	ld [hli], a
+	ld [hli], a
+	ld [hl], a
+
+.asm_3f186
+	ld d, $64
+	callab Function50e47
+	ld a, [hMultiplicand]
+	ld b, a
+	ld a, [$ffb5]
+	ld c, a
+	ld a, [$ffb6]
+	ld d, a
+	ld hl, $d118
+	ld a, [hld]
+	sub d
+	ld a, [hld]
+	sbc c
+	ld a, [hl]
+	sbc b
+	jr c, .asm_3f1a8
+	ld a, b
+	ld [hli], a
+	ld a, c
+	ld [hli], a
+	ld a, d
+	ld [hld], a
+
+.asm_3f1a8
+	ld hl, $4e1b
+	ld a, $14
+	rst FarCall
+	ld a, d
+	pop bc
+	pop de
+	ld d, a
+	cp e
+	jr nc, .asm_3f1b7
+	ld a, e
+	ld d, a
+
+.asm_3f1b7
+	ld a, e
+	cp $64
+	jr nc, .asm_3f1ff
+	cp d
+	jr z, .asm_3f1ff
+	inc a
+	ld [TempMonLevel], a
+	ld [CurPartyLevel], a
+	ld [BattleMonLevel], a
+	push de
+	call Function3f21b
+	ld c, $40
+	call Function3f22c
+	call PrintPlayerHUD
+	ld hl, BattleMonNick
+	ld de, StringBuffer1
+	ld bc, $000b
+	call CopyBytes
+	call Function3dfe
+	ld de, SFX_HIT_END_OF_EXP_BAR
+	call StartSFX
+	ld a, $23
+	ld hl, $679d
+	rst FarCall
+	call WaitSFX
+	ld hl, BattleText_0x80c9c
+	call FarBattleTextBox
+	pop de
+	inc e
+	ld b, $0
+	jr .asm_3f1b7
+
+.asm_3f1ff
+	push bc
+	ld b, d
+	ld de, $d118
+	call Function3f39c
+	ld a, b
+	pop bc
+	ld c, a
+	call Function3f21b
+	call Function3f22c
+	call Function3dfe
+	pop af
+	ld [$ffb5], a
+	pop af
+	ld [$ffb6], a
+
+.asm_3f219
+	pop bc
+	ret
+; 3f21b
+
+Function3f21b: ; 3f21b
+	push bc
+	call WaitSFX
+	ld de, SFX_EXP_BAR
+	call StartSFX
+	ld c, 10
+	call DelayFrames
+	pop bc
+	ret
+; 3f22c
+
+Function3f22c: ; 3f22c
+	ld d, $3
+	dec b
+.asm_3f22f
+	inc b
+	push bc
+	push de
+	ld hl, $c58d
+	call Function3f41c
+	pop de
+	ld a, $1
+	ld [hBGMapMode], a
+	ld c, d
+	call DelayFrames
+	xor a
+	ld [hBGMapMode], a
+	pop bc
+	ld a, c
+	cp b
+	jr z, .asm_3f268
+	inc b
+	push bc
+	push de
+	ld hl, $c58d
+	call Function3f41c
+	pop de
+	ld a, $1
+	ld [hBGMapMode], a
+	ld c, d
+	call DelayFrames
+	xor a
+	ld [hBGMapMode], a
+	dec d
+	jr nz, .asm_3f263
+	ld d, $1
+
+.asm_3f263
+	pop bc
+	ld a, c
+	cp b
+	jr nz, .asm_3f22f
+
+.asm_3f268
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+; 3f26d
+
+
+
+Function3f26d: ; 3f26d
+; SendOutMonText?
+
+	ld a, [InLinkBattle]
+	and a
+	jr z, .asm_3f27c
+	ld hl, UnknownText_0x3f2d1
+	ld a, [$d264]
+	and a
+	jr nz, .asm_3f2ce
+
+.asm_3f27c
+	ld hl, EnemyMonHPHi
+	ld a, [hli]
+	or [hl]
+	ld hl, UnknownText_0x3f2d1
+	jr z, .asm_3f2ce
+	xor a
+	ld [hMultiplicand], a
+	ld hl, EnemyMonHPHi
+	ld a, [hli]
+	ld [$c6ea], a
+	ld [$ffb5], a
+	ld a, [hl]
+	ld [$c6eb], a
+	ld [$ffb6], a
+	ld a, $19
+	ld [hMultiplier], a
+	call Multiply
+	ld hl, EnemyMonMaxHPHi
+	ld a, [hli]
+	ld b, [hl]
+	srl a
+	rr b
+	srl a
+	rr b
+	ld a, b
+	ld b, $4
+	ld [hMultiplier], a
+	call Divide
+	ld a, [$ffb6]
+	ld hl, UnknownText_0x3f2d1
+	cp $46
+	jr nc, .asm_3f2ce
+	ld hl, UnknownText_0x3f2d8
+	cp $28
+	jr nc, .asm_3f2ce
+	ld hl, UnknownText_0x3f2df
+	cp $a
+	jr nc, .asm_3f2ce
+	ld hl, UnknownText_0x3f2e6
+
+.asm_3f2ce
+	jp BattleTextBox
+; 3f2d1
+
+
+UnknownText_0x3f2d1: ; 3f2d1
+	text_jump UnknownText_0x1c02df, BANK(UnknownText_0x1c02df)
+	start_asm
+	jr Function3f2eb
+; 3f2d6
+
+UnknownText_0x3f2d8: ; 3f2d8
+	text_jump UnknownText_0x1c02e6, BANK(UnknownText_0x1c02e6)
+	start_asm
+	jr Function3f2eb
+; 3f2dd
+
+UnknownText_0x3f2df: ; 3f2df
+	text_jump UnknownText_0x1c02f0, BANK(UnknownText_0x1c02f0)
+	start_asm
+	jr Function3f2eb
+; 3f2e4
+
+UnknownText_0x3f2e6: ; 3f2e6
+	text_jump UnknownText_0x1c02fe, BANK(UnknownText_0x1c02fe)
+	start_asm
+; 3f2eb
+
+Function3f2eb: ; 3f2eb
+	ld hl, UnknownText_0x3f2ef
+	ret
+; 3f2ef
+
+UnknownText_0x3f2ef: ; 3f2ef
+	text_jump UnknownText_0x1c0317, BANK(UnknownText_0x1c0317)
+	db "@"
+; 3f2f4
+
+
+Function3f2f4: ; 3f2f4
+	ld hl, UnknownText_0x3f2fa
+	jp BattleTextBox
+; 3f2fa
+
+UnknownText_0x3f2fa: ; 3f2fa
+	text_jump UnknownText_0x1c031d, BANK(UnknownText_0x1c031d)
+	start_asm
+; 3f2ff
+
+Function3f2ff: ; 3f2ff
+	push de
+	push bc
+	ld hl, EnemyMonHPLo
+	ld de, $c6eb
+	ld b, [hl]
+	dec hl
+	ld a, [de]
+	sub b
+	ld [$ffb6], a
+	dec de
+	ld b, [hl]
+	ld a, [de]
+	sbc b
+	ld [$ffb5], a
+	ld a, $19
+	ld [hMultiplier], a
+	call Multiply
+	ld hl, EnemyMonMaxHPHi
+	ld a, [hli]
+	ld b, [hl]
+	srl a
+	rr b
+	srl a
+	rr b
+	ld a, b
+	ld b, $4
+	ld [hMultiplier], a
+	call Divide
+	pop bc
+	pop de
+	ld a, [$ffb6]
+	ld hl, UnknownText_0x3f348
+	and a
+	ret z
+	ld hl, UnknownText_0x3f35b
+	cp $1e
+	ret c
+	ld hl, UnknownText_0x3f34d
+	cp $46
+	ret c
+	ld hl, UnknownText_0x3f352
+	ret
+; 3f348
+
+UnknownText_0x3f348: ; 3f348
+	text_jump UnknownText_0x1c0324, BANK(UnknownText_0x1c0324)
+	db "@"
+; 3f34d
+
+UnknownText_0x3f34d: ; 3f34d
+	text_jump UnknownText_0x1c0340, BANK(UnknownText_0x1c0340)
+	db "@"
+; 3f352
+
+UnknownText_0x3f352: ; 3f352
+	text_jump UnknownText_0x1c0352, BANK(UnknownText_0x1c0352)
+	db "@"
+; 3f357
+
+Function3f357: ; 3f357
+	ld hl, UnknownText_0x3f35b
+	ret
+; 3f35b
+
+UnknownText_0x3f35b: ; 3f35b
+	text_jump UnknownText_0x1c0366, BANK(UnknownText_0x1c0366)
+	db "@"
+; 3f360
+
+
+Function3f360: ; 3f360
+	ld hl, $c6f0
+	ld a, [hl]
+	and a
+	jr z, .asm_3f36d
+	dec [hl]
+	ld hl, BattleText_0x80cba
+	jr .asm_3f388
+
+.asm_3f36d
+	dec hl
+	ld a, [hl]
+	and a
+	ret z
+	dec [hl]
+	ld hl, BattleText_0x80cd1
+	jr nz, .asm_3f388
+	push hl
+	ld a, [EnemyMonSpecies]
+	ld [CurSpecies], a
+	call GetBaseData
+	ld a, [BaseCatchRate]
+	ld [EnemyMonCatchRate], a
+	pop hl
+
+.asm_3f388
+	push hl
+	call Function30b4
+	pop hl
+	jp FarBattleTextBox
+; 3f390
+
+
+FillInExpBar: ; 3f390
+	push hl
+	call Function3f39c
+	pop hl
+	ld de, $0007
+	add hl, de
+	jp Function3f41c
+; 3f39c
+
+Function3f39c: ; 3f39c
+	push de
+	ld d, b
+	push de
+	callab Function50e47
+	pop de
+	ld hl, hMultiplicand
+	ld a, [hli]
+	push af
+	ld a, [hli]
+	push af
+	ld a, [hl]
+	push af
+	inc d
+	callab Function50e47
+	ld hl, $ffb6
+	ld a, [hl]
+	ld [$ffba], a
+	pop bc
+	sub b
+	ld [hld], a
+	ld a, [hl]
+	ld [$ffb9], a
+	pop bc
+	sbc b
+	ld [hld], a
+	ld a, [hl]
+	ld [hMathBuffer], a
+	pop bc
+	sbc b
+	ld [hl], a
+	pop de
+	ld hl, $ffb5
+	ld a, [hli]
+	push af
+	ld a, [hl]
+	push af
+	ld a, [de]
+	dec de
+	ld c, a
+	ld a, [$ffba]
+	sub c
+	ld [hld], a
+	ld a, [de]
+	dec de
+	ld b, a
+	ld a, [$ffb9]
+	sbc b
+	ld [hld], a
+	ld a, [de]
+	ld c, a
+	ld a, [hMathBuffer]
+	sbc c
+	ld [hld], a
+	xor a
+	ld [hl], a
+	ld a, $40
+	ld [hMultiplier], a
+	call Multiply
+	pop af
+	ld c, a
+	pop af
+	ld b, a
+.asm_3f3f4
+	ld a, b
+	and a
+	jr z, .asm_3f40c
+	srl b
+	rr c
+	ld hl, hProduct
+	srl [hl]
+	inc hl
+	rr [hl]
+	inc hl
+	rr [hl]
+	inc hl
+	rr [hl]
+	jr .asm_3f3f4
+
+.asm_3f40c
+	ld a, c
+	ld [hMultiplier], a
+	ld b, $4
+	call Divide
+	ld a, [$ffb6]
+	ld b, a
+	ld a, $40
+	sub b
+	ld b, a
+	ret
+; 3f41c
+
+Function3f41c: ; 3f41c
+	ld c, $8
+.asm_3f41e
+	ld a, b
+	sub $8
+	jr c, .asm_3f42c
+	ld b, a
+	ld a, $6a
+	ld [hld], a
+	dec c
+	jr z, .asm_3f43c
+	jr .asm_3f41e
+
+.asm_3f42c
+	add $8
+	jr z, .asm_3f434
+	add $54
+	jr .asm_3f436
+
+.asm_3f434
+	ld a, $62
+
+.asm_3f436
+	ld [hld], a
+	ld a, $62
+	dec c
+	jr nz, .asm_3f434
+
+.asm_3f43c
+	ret
+; 3f43d
+
+Function3f43d: ; 3f43d
+	ld a, [PlayerSubStatus4]
+	bit 4, a
+	ld hl, $4640
+	jr nz, .asm_3f46f
+	ld a, [$c6fe]
+	and a
+	ld hl, Function3c6cf
+	jr nz, .asm_3f46f
+	ld a, [CurPartySpecies]
+	push af
+	ld a, [BattleMonSpecies]
+	ld [CurPartySpecies], a
+	ld hl, BattleMonAtkDefDV
+	ld a, $2d
+	call Predef
+	ld de, $9310
+	ld a, $3d
+	call Predef
+	pop af
+	ld [CurPartySpecies], a
+	ret
+
+.asm_3f46f
+	ld a, [hBattleTurn]
+	push af
+	xor a
+	ld [hBattleTurn], a
+	ld a, $33
+	rst FarCall
+	pop af
+	ld [hBattleTurn], a
+	ret
+; 3f47c
+
+Function3f47c: ; 3f47c
+	ld a, [EnemySubStatus4]
+	bit 4, a
+	ld hl, $4640
+	jr nz, .asm_3f4b4
+	ld a, [$c6fa]
+	and a
+	ld hl, Function3c6cf
+	jr nz, .asm_3f4b4
+	ld a, [CurPartySpecies]
+	push af
+	ld a, [EnemyMonSpecies]
+	ld [CurSpecies], a
+	ld [CurPartySpecies], a
+	call GetBaseData
+	ld hl, EnemyMonAtkDefDV
+	ld a, $2d
+	call Predef
+	ld de, VTiles2
+	ld a, $3e
+	call Predef
+	pop af
+	ld [CurPartySpecies], a
+	ret
+
+.asm_3f4b4
+	ld a, [hBattleTurn]
+	push af
+	call SetEnemyTurn
+	ld a, $33
+	rst FarCall
+	pop af
+	ld [hBattleTurn], a
+	ret
+; 3f4c1
+
+
+Function3f4c1: ; 3f4c1
+	ld a, [PartyCount]
+	and a
+	ret z
+	ld a, [TimeOfDayPal]
+	push af
+	call Function3f4dd
+	call Function3c000
+	call Function3f69e
+	pop af
+	ld [TimeOfDayPal], a
+	scf
+	ret
+; 3f4d9
+
+
+Function3f4d9: ; 3f4d9
+	call Function3c000
+	ret
+; 3f4dd
+
+
+Function3f4dd: ; 3f4dd
+	ld a, $41
+	ld hl, $6050
+	rst FarCall
+	call Function3f54e
+	xor a
+	ld [TempBattleMonSpecies], a
+	ld [$d0d2], a
+	xor a
+	ld [$ffde], a
+	callba PlayBattleMusic
+	callba Function2ee18
+	callba Function2ee2f
+	call Function2ed3
+	callba ClearBattleRAM
+	call Function3f55e
+	call Function3f568
+	ld b, $0
+	call GetSGBLayout
+	ld hl, rLCDC
+	res 6, [hl]
+	call Function3fb6c
+	call $7c8b
+	ld hl, rLCDC
+	set 6, [hl]
+	xor a
+	ld [hBGMapMode], a
+	call EmptyBattleTextBox
+	ld hl, $c535
+	ld bc, $050b
+	call ClearBox
+	ld hl, $c4a1
+	ld bc, $040a
+	call ClearBox
+	call ClearSprites
+	ld a, [IsInBattle]
+	cp $1
+	call z, Function3e036
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+; 3f54e
+
+Function3f54e: ; 3f54e
+	ld a, [OtherTrainerClass]
+	and a
+	jr nz, .asm_3f55a
+	ld a, [$d22e]
+	ld [CurPartySpecies], a
+
+.asm_3f55a
+	ld [TempEnemyMonSpecies], a
+	ret
+; 3f55e
+
+Function3f55e: ; 3f55e
+	ld a, [OtherTrainerClass]
+	and a
+	jp nz, Function3f594
+	jp Function3f607
+; 3f568
+
+Function3f568: ; 3f568
+	ld a, [rSVBK]
+	push af
+	ld a, $6
+	ld [rSVBK], a
+	ld hl, $d000
+	ld bc, VBlank5
+	ld a, $2
+	call ByteFill
+	ld a, [rVBK]
+	push af
+	ld a, $1
+	ld [rVBK], a
+	ld de, $d000
+	ld hl, VBGMap0
+	ld bc, $0f40
+	call Request2bpp
+	pop af
+	ld [rVBK], a
+	pop af
+	ld [rSVBK], a
+	ret
+; 3f594
+
+Function3f594: ; 3f594
+	ld [TrainerClass], a
+	ld a, $41
+	ld hl, $606a
+	rst FarCall
+	xor a
+	ld [TempEnemyMonSpecies], a
+	ld hl, $557b
+	ld a, $e
+	rst FarCall
+	ld hl, $5771
+	ld a, $e
+	rst FarCall
+	ld a, [TrainerClass]
+	cp $9
+	jr nz, .asm_3f5b8
+	xor a
+	ld [OTPartyMon1Item], a
+
+.asm_3f5b8
+	ld de, VTiles2
+	ld hl, $520d
+	ld a, $14
+	rst FarCall
+	xor a
+	ld [$ffad], a
+	dec a
+	ld [$c6e6], a
+	ld hl, $c4ac
+	ld bc, $0707
+	ld a, $13
+	call Predef
+	ld a, $ff
+	ld [CurOTMon], a
+	ld a, $2
+	ld [IsInBattle], a
+	call IsJohtoGymLeader
+	jr nc, .asm_3f606
+	xor a
+	ld [CurPartyMon], a
+	ld a, [PartyCount]
+	ld b, a
+.asm_3f5ea
+	push bc
+	ld a, $22
+	call GetPartyParamLocation
+	ld a, [hli]
+	or [hl]
+	jr z, .asm_3f5fc
+	ld c, $4
+	callab ChangeHappiness
+
+.asm_3f5fc
+	pop bc
+	dec b
+	jr z, .asm_3f606
+	ld hl, CurPartyMon
+	inc [hl]
+	jr .asm_3f5ea
+
+.asm_3f606
+	ret
+; 3f607
+
+Function3f607: ; 3f607
+	ld a, $1
+	ld [IsInBattle], a
+	ld a, $41
+	ld hl, $605d
+	rst FarCall
+	call LoadEnemyMon
+	ld hl, EnemyMonMove1
+	ld de, $c735
+	ld bc, $0004
+	call CopyBytes
+	ld hl, EnemyMonPPMove1
+	ld de, $c739
+	ld bc, $0004
+	call CopyBytes
+	ld hl, EnemyMonAtkDefDV
+	ld a, $2d
+	call Predef
+	ld a, [CurPartySpecies]
+	cp $c9
+	jr nz, .asm_3f648
+	ld a, [$def4]
+	and a
+	jr nz, .asm_3f648
+	ld a, [UnownLetter]
+	ld [$def4], a
+
+.asm_3f648
+	ld de, VTiles2
+	ld a, $3e
+	call Predef
+	xor a
+	ld [TrainerClass], a
+	ld [$ffad], a
+	ld hl, $c4ac
+	ld bc, $0707
+	ld a, $13
+	call Predef
+	ret
+; 3f662
+
+Function3f662: ; 3f662
+	ld hl, EnemyMonMove1
+	ld de, $d25e
+	ld b, $4
+.asm_3f66a
+	ld a, [de]
+	inc de
+	ld [hli], a
+	and a
+	jr z, .asm_3f690
+	push bc
+	push hl
+	push hl
+	dec a
+	ld hl, $5b00
+	ld bc, $0007
+	call AddNTimes
+	ld a, $10
+	call GetFarByte
+	pop hl
+	ld bc, $0005
+	add hl, bc
+	ld [hl], a
+	pop hl
+	pop bc
+	dec b
+	jr nz, .asm_3f66a
+	ret
+
+.asm_3f68e
+	xor a
+	ld [hli], a
+
+.asm_3f690
+	push bc
+	push hl
+	ld bc, $0005
+	add hl, bc
+	xor a
+	ld [hl], a
+	pop hl
+	pop bc
+	dec b
+	jr nz, .asm_3f68e
+	ret
+; 3f69e
+
+
+Function3f69e: ; 3f69e
+	call Function3f6a5
+	call Function3f6d0
+	ret
+; 3f6a5
+
+Function3f6a5: ; 3f6a5
+	ld a, [InLinkBattle]
+	and a
+	jr z, .asm_3f6b7
+	call Function3f759
+	ld c, $96
+	call DelayFrames
+	call Function3f77c
+	ret
+
+.asm_3f6b7
+	ld a, [$d0ee]
+	and $f
+	ret nz
+	call Function3f71d
+	xor a
+	ld [$d1e9], a
+	ld a, $1c
+	call Predef
+	callba Function2ed44
+	ret
+; 3f6d0
+
+Function3f6d0: ; 3f6d0
+	call Function3f998
+	xor a
+	ld [Danger], a
+	ld [IsInBattle], a
+	ld [BattleType], a
+	ld [AttackMissed], a
+	ld [$d22e], a
+	ld [OtherTrainerClass], a
+	ld [$d266], a
+	ld [$d267], a
+	ld [$d232], a
+	ld [$d0d8], a
+	ld [$d0da], a
+	ld [$d0d9], a
+	ld [$d0d2], a
+	ld [CurMoveNum], a
+	ld [$d0db], a
+	ld [$d0d6], a
+	ld [$d0e4], a
+	ld [$d0e0], a
+	ld [$d0df], a
+	ld [$d0e1], a
+	ld hl, PlayerSubStatus1
+	ld b, $18
+.asm_3f715
+	ld [hli], a
+	dec b
+	jr nz, .asm_3f715
+	call WaitSFX
+	ret
+; 3f71d
+
+Function3f71d: ; 3f71d
+	ld hl, $c6ec
+	ld a, [hli]
+	or [hl]
+	inc hl
+	or [hl]
+	ret z
+	ld a, [$c73d]
+	and a
+	jr z, .asm_3f73d
+	ld hl, $c6ee
+	sla [hl]
+	dec hl
+	rl [hl]
+	dec hl
+	rl [hl]
+	jr nc, .asm_3f73d
+	ld a, $ff
+	ld [hli], a
+	ld [hli], a
+	ld [hl], a
+
+.asm_3f73d
+	ld hl, $c6ee
+	ld de, $d850
+	call Function3d0be
+	ld hl, BattleText_0x80730
+	call FarBattleTextBox
+	ld a, [$cfc0]
+	bit 0, a
+	ret z
+	call ClearTileMap
+	call WhiteBGMap
+	ret
+; 3f759
+
+Function3f759: ; 3f759
+	ld a, $41
+	ld hl, $60df
+	rst FarCall
+	callba Function106187
+	ld a, [CurOTMon]
+	ld hl, OTPartyMon1Status
+	call GetPartyLocation
+	ld a, [EnemyMonStatus]
+	ld [hl], a
+	call ClearTileMap
+	callba Function2c1b2
+	ret
+; 3f77c
+
+Function3f77c: ; 3f77c
+	callba Function3d2e0
+	jp c, Function3f80f
+	call Function3f830
+	jr nz, .asm_3f797
+	ld hl, $cd2a
+	bit 4, [hl]
+	jr z, .asm_3f797
+	ld a, $a
+	ld hl, $7930
+	rst FarCall
+
+.asm_3f797
+	ld a, [$d0ee]
+	and $f
+	cp $1
+	jr c, .asm_3f7ad
+	jr z, .asm_3f7b8
+	ld a, $41
+	ld hl, $6107
+	rst FarCall
+	ld de, .Draw
+	jr .asm_3f7c3
+
+.asm_3f7ad
+	ld a, $41
+	ld hl, $60fb
+	rst FarCall
+	ld de, .Win
+	jr .asm_3f7c3
+
+.asm_3f7b8
+	ld a, $41
+	ld hl, $6101
+	rst FarCall
+	ld de, .Lose
+	jr .asm_3f7c3
+
+.asm_3f7c3
+	ld hl, $c546
+	call PlaceString
+	callba Function106187
+	ld c, $c8
+	call DelayFrames
+	ld a, $1
+	call GetSRAMBank
+	call Function3fa42
+	call Function3f85f
+	call CloseSRAM
+	call Function3f830
+	jr z, .asm_3f7ee
+	call Functiona80
+	call ClearTileMap
+	ret
+
+.asm_3f7ee
+	ld c, $c8
+	call DelayFrames
+	call ClearTileMap
+	ret
+; 3f7f7
+
+.Win
+	db "YOU WIN@"
+.Lose
+	db "YOU LOSE@"
+.Draw
+	db "  DRAW@"
+; 3f80f
+
+
+Function3f80f: ; 3f80f
+	ld hl, $c546
+	ld de, .Invalid
+	call PlaceString
+	ld c, $c8
+	call DelayFrames
+	call ClearTileMap
+	ret
+; 3f821
+
+.Invalid
+	db "INVALID BATTLE@"
+; 3f830
+
+
+Function3f830: ; 3f830
+	ld a, [InLinkBattle]
+	cp $4
+	ret
+; 3f836
+
+
+Function3f836: ; 3f836
+	ld a, $1
+	call GetSRAMBank
+	call Function3f85f
+	call CloseSRAM
+	ld hl, AttrMap
+	xor a
+	ld bc, $0168
+	call ByteFill
+	call Function3200
+	ld b, $8
+	call GetSGBLayout
+	call Function32f9
+	ld c, $8
+	call DelayFrames
+	call Functiona80
+	ret
+; 3f85f
+
+
+Function3f85f: ; 3f85f
+	call ClearTileMap
+	call ClearSprites
+	call .asm_3f8e0
+	ld hl, $c540
+	ld b, $5
+	ld de, $b268
+.asm_3f870
+	push bc
+	push hl
+	push de
+	ld a, [de]
+	and a
+	jr z, .asm_3f8c9
+	ld a, [$d4b4]
+	and a
+	jr z, .asm_3f8c9
+	push hl
+	push hl
+	ld h, d
+	ld l, e
+	ld de, DefaultFlypoint
+	ld bc, $000a
+	call CopyBytes
+	ld a, $50
+	ld [de], a
+	inc de
+	ld bc, $0006
+	call CopyBytes
+	ld de, DefaultFlypoint
+	pop hl
+	call PlaceString
+	pop hl
+	ld de, $001a
+	add hl, de
+	push hl
+	ld de, $d00d
+	ld bc, $0204
+	call PrintNum
+	pop hl
+	ld de, $0005
+	add hl, de
+	push hl
+	ld de, $d00f
+	ld bc, $0204
+	call PrintNum
+	pop hl
+	ld de, $0005
+	add hl, de
+	ld de, $d011
+	ld bc, $0204
+	call PrintNum
+	jr .asm_3f8cf
+
+.asm_3f8c9
+	ld de, .Format
+	call PlaceString
+
+.asm_3f8cf
+	pop hl
+	ld bc, $0012
+	add hl, bc
+	ld d, h
+	ld e, l
+	pop hl
+	ld bc, $0028
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .asm_3f870
+	ret
+
+.asm_3f8e0
+	ld hl, $c4a1
+	ld de, .Record
+	call PlaceString
+
+	ld hl, $c518
+	ld de, .Result
+	call PlaceString
+
+	ld hl, $c4c8
+	ld de, .Total
+	call PlaceString
+
+	ld hl, $c4f6
+	ld de, $b260
+	call .asm_3f92b
+	jr c, .asm_3f92a
+
+	ld bc, $0204
+	call PrintNum
+
+	ld hl, $c4fb
+	ld de, $b262
+	call .asm_3f92b
+
+	ld bc, $0204
+	call PrintNum
+
+	ld hl, $c500
+	ld de, $b264
+	call .asm_3f92b
+
+	ld bc, $0204
+	call PrintNum
+
+.asm_3f92a
+	ret
+
+.asm_3f92b
+	ld a, [$d4b4]
+	and a
+	ret nz
+	ld de, .Scores
+	call PlaceString
+	scf
+	ret
+; 3f938
+
+.Scores
+	db "   0    0    0@"
+; 3f947
+
+.Format ; 3f947
+	db "  ---  ", $22, "         -    -    -@"
+.Record ; 3f964
+	db $52, "'s RECORD@"
+.Result ; 3f96e
+	db "RESULT WIN LOSE DRAW@"
+.Total ; 3f983
+	db "TOTAL  WIN LOSE DRAW@"
+; 3f998
+
+
+Function3f998: ; 3f998
+	ld a, [BattleType]
+	cp BATTLETYPE_ROAMING
+	jr nz, .asm_3f9c4
+	ld a, [$d0ee]
+	and $f
+	jr z, .asm_3f9af
+	call GetRoamMonHP
+	ld a, [EnemyMonHPLo]
+	ld [hl], a
+	jr .asm_3f9ca
+
+.asm_3f9af
+	call GetRoamMonHP
+	ld [hl], $0
+	call GetRoamMonMapGroup
+	ld [hl], $ff
+	call GetRoamMonMapNumber
+	ld [hl], $ff
+	call GetRoamMonSpecies
+	ld [hl], $0
+	ret
+
+.asm_3f9c4
+	call FarBattleRNG
+	and $f
+	ret nz
+
+.asm_3f9ca
+	callab Function2a30d
+	ret
+; 3f9d1
+
+GetRoamMonMapGroup: ; 3f9d1
+	ld a, [TempEnemyMonSpecies]
+	ld b, a
+	ld a, [RoamMon1Species]
+	cp b
+	ld hl, RoamMon1MapGroup
+	ret z
+	ld a, [RoamMon2Species]
+	cp b
+	ld hl, RoamMon2MapGroup
+	ret z
+	ld hl, RoamMon3MapGroup
+	ret
+; 3f9e9
+
+GetRoamMonMapNumber: ; 3f9e9
+	ld a, [TempEnemyMonSpecies]
+	ld b, a
+	ld a, [RoamMon1Species]
+	cp b
+	ld hl, RoamMon1MapNumber
+	ret z
+	ld a, [RoamMon2Species]
+	cp b
+	ld hl, RoamMon2MapNumber
+	ret z
+	ld hl, RoamMon3MapNumber
+	ret
+; 3fa01
+
 GetRoamMonHP: ; 3fa01
 ; output: hl = RoamMonCurHP
 	ld a, [TempEnemyMonSpecies]
@@ -12892,8 +46723,6 @@
 	cp b
 	ld hl, RoamMon2CurHP
 	ret z
-; remnant of the GS function
-; we know this will be $00 because it's never initialized
 	ld hl, RoamMon3CurHP
 	ret
 ; 3fa19
@@ -12910,17 +46739,307 @@
 	cp b
 	ld hl, RoamMon2DVs
 	ret z
-; remnant of the GS function
-; we know this will be $0000 because it's never initialized
 	ld hl, RoamMon3DVs
 	ret
 ; 3fa31
 
+GetRoamMonSpecies: ; 3fa31
+	ld a, [TempEnemyMonSpecies]
+	ld hl, RoamMon1Species
+	cp [hl]
+	ret z
+	ld hl, RoamMon2Species
+	cp [hl]
+	ret z
+	ld hl, RoamMon3Species
+	ret
+; 3fa42
 
-INCBIN "baserom.gbc", $3fa31, $3fbff - $3fa31
 
+Function3fa42: ; 3fa42
+	ld hl, $d276
+	ld de, StringBuffer1
+	ld bc, $0002
+	call CopyBytes
+	ld hl, $d26b
+	ld bc, $000a
+	call CopyBytes
+	ld hl, $b254
+	call Function3faa0
+	ld hl, $b266
+	ld d, $5
+.asm_3fa62
+	push hl
+	inc hl
+	inc hl
+	ld a, [hl]
+	dec hl
+	dec hl
+	and a
+	jr z, .asm_3fa85
+	push de
+	ld bc, $000c
+	ld de, StringBuffer1
+	call CompareLong
+	pop de
+	pop hl
+	jr c, .asm_3fa99
+	ld bc, $0012
+	add hl, bc
+	dec d
+	jr nz, .asm_3fa62
+	ld bc, $ffee
+	add hl, bc
+	push hl
 
-GetPlayerBackpic: ; 3fbff
+.asm_3fa85
+	ld d, h
+	ld e, l
+	ld hl, StringBuffer1
+	ld bc, $000c
+	call CopyBytes
+	ld b, $6
+	xor a
+.asm_3fa93
+	ld [de], a
+	inc de
+	dec b
+	jr nz, .asm_3fa93
+	pop hl
+
+.asm_3fa99
+	call Function3faa0
+	call Function3fac8
+	ret
+; 3faa0
+
+Function3faa0: ; 3faa0
+	ld a, [$d0ee]
+	and $f
+	cp $1
+	ld bc, $000d
+	jr c, .asm_3fab4
+	ld bc, $000f
+	jr z, .asm_3fab4
+	ld bc, $0011
+
+.asm_3fab4
+	add hl, bc
+	call Function3fabe
+	ret nc
+	inc [hl]
+	ret nz
+	dec hl
+	inc [hl]
+	ret
+; 3fabe
+
+Function3fabe: ; 3fabe
+	dec hl
+	ld a, [hl]
+	inc hl
+	cp $27
+	ret c
+	ld a, [hl]
+	cp $f
+	ret
+; 3fac8
+
+Function3fac8: ; 3fac8
+	ld b, $5
+	ld hl, $b277
+	ld de, DefaultFlypoint
+.asm_3fad0
+	push bc
+	push de
+	push hl
+	call Function3fb54
+	pop hl
+	ld a, e
+	pop de
+	ld [de], a
+	inc de
+	ld a, b
+	ld [de], a
+	inc de
+	ld a, c
+	ld [de], a
+	inc de
+	ld bc, $0012
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .asm_3fad0
+	ld b, $0
+	ld c, $1
+.asm_3faed
+	ld a, b
+	add b
+	add b
+	ld e, a
+	ld d, $0
+	ld hl, DefaultFlypoint
+	add hl, de
+	push hl
+	ld a, c
+	add c
+	add c
+	ld e, a
+	ld d, $0
+	ld hl, DefaultFlypoint
+	add hl, de
+	ld d, h
+	ld e, l
+	pop hl
+	push bc
+	ld c, $3
+	call StringCmp
+	pop bc
+	jr z, .asm_3fb10
+	jr nc, .asm_3fb1f
+
+.asm_3fb10
+	inc c
+	ld a, c
+	cp $5
+	jr nz, .asm_3faed
+	inc b
+	ld c, b
+	inc c
+	ld a, b
+	cp $4
+	jr nz, .asm_3faed
+	ret
+
+.asm_3fb1f
+	push bc
+	ld a, b
+	ld bc, $0012
+	ld hl, $b266
+	call AddNTimes
+	push hl
+	ld de, DefaultFlypoint
+	ld bc, $0012
+	call CopyBytes
+	pop hl
+	pop bc
+	push hl
+	ld a, c
+	ld bc, $0012
+	ld hl, $b266
+	call AddNTimes
+	pop de
+	push hl
+	ld bc, $0012
+	call CopyBytes
+	ld hl, DefaultFlypoint
+	ld bc, $0012
+	pop de
+	call CopyBytes
+	ret
+; 3fb54
+
+Function3fb54: ; 3fb54
+	ld e, $0
+	ld a, [hld]
+	ld c, a
+	ld a, [hld]
+	ld b, a
+	ld a, [hld]
+	add c
+	ld c, a
+	ld a, [hld]
+	adc b
+	ld b, a
+	jr nc, .asm_3fb63
+	inc e
+
+.asm_3fb63
+	ld a, [hld]
+	add c
+	ld c, a
+	ld a, [hl]
+	adc b
+	ld b, a
+	ret nc
+	inc e
+	ret
+; 3fb6c
+
+Function3fb6c: ; 3fb6c
+	call Function3fbf8
+	ld hl, $c590
+	ld b, $4
+	ld c, $12
+	call TextBox
+	callba MobileTextBorder
+	ld hl, $c505
+	ld bc, $0307
+	call ClearBox
+	call Functione51
+	call Function3ed9f
+	call Function3fbd6
+	xor a
+	ld [$ffde], a
+	ld [hSCY], a
+	ld a, $90
+	ld [hWY], a
+	ld [rWY], a
+	call WaitBGMap
+	xor a
+	ld [hBGMapMode], a
+	ld a, $13
+	ld hl, $6980
+	rst FarCall
+	ld a, $1
+	ld [hBGMapMode], a
+	ld a, $31
+	ld [$ffad], a
+	ld hl, $c51a
+	ld bc, $0606
+	ld a, $13
+	call Predef
+	xor a
+	ld [hWY], a
+	ld [rWY], a
+	call WaitBGMap
+	call HideSprites
+	ld b, $1
+	call GetSGBLayout
+	call Function32f9
+	ld a, $90
+	ld [hWY], a
+	xor a
+	ld [hSCX], a
+	ret
+; 3fbd6
+
+Function3fbd6: ; 3fbd6
+	ld a, [rSVBK]
+	push af
+	ld a, $6
+	ld [rSVBK], a
+	ld hl, $d000
+	ld bc, VBlank5
+	ld a, $7f
+	call ByteFill
+	ld de, $d000
+	ld hl, VBGMap0
+	ld bc, $0f40
+	call Request2bpp
+	pop af
+	ld [rSVBK], a
+	ret
+; 3fbf8
+
+Function3fbf8: ; 3fbf8
+	call GetBattleBackpic
+	call Function3fc30
+	ret
+; 3fbff
+
+
+GetBattleBackpic: ; 3fbff
 ; Load the player character's backpic (6x6) into VRAM starting from $9310.
 
 ; Special exception for Dude.
@@ -12956,9 +47075,66 @@
 ; 3fc30
 
 
-INCBIN "baserom.gbc", $3fc30, $3fc8b - $3fc30
+Function3fc30: ; 3fc30
+	ld a, [rSVBK]
+	push af
+	ld a, $6
+	ld [rSVBK], a
+	ld hl, VTiles0
+	ld de, $9310
+	ld a, [hROMBank]
+	ld b, a
+	ld c, $31
+	call Get2bpp
+	pop af
+	ld [rSVBK], a
+	call Function3fc5b
+	ld a, $31
+	ld [$ffad], a
+	ld hl, $c51a
+	ld bc, $0606
+	ld a, $13
+	call Predef
+	ret
+; 3fc5b
 
+Function3fc5b: ; 3fc5b
+	ld hl, Sprites
+	xor a
+	ld [hConnectionStripLength], a
+	ld b, $6
+	ld e, $a8
+.asm_3fc65
+	ld c, $3
+	ld d, $40
+.asm_3fc69
+	ld [hl], d
+	inc hl
+	ld [hl], e
+	inc hl
+	ld a, [hConnectionStripLength]
+	ld [hli], a
+	inc a
+	ld [hConnectionStripLength], a
+	ld a, $1
+	ld [hli], a
+	ld a, d
+	add $8
+	ld d, a
+	dec c
+	jr nz, .asm_3fc69
+	ld a, [hConnectionStripLength]
+	add $3
+	ld [hConnectionStripLength], a
+	ld a, e
+	add $8
+	ld e, a
+	dec b
+	jr nz, .asm_3fc65
+	ret
+; 3fc8b
 
+
 BattleStartMessage ; 3fc8b
 	ld a, [IsInBattle]
 	dec a
@@ -12989,12 +47165,10 @@
 	ld a, 1
 	ld [$c689], a
 	ld de, $0101
-	call $6e17
+	call Function3ee17
 
 .asm_3fcc2
-	ld a, $f
-	ld hl, $6b38
-	rst FarCall
+	callba CheckSleepingTreeMon
 	jr c, .asm_3fceb
 
 	ld a, $13
@@ -13013,7 +47187,7 @@
 	ld a, $0f
 	ld [CryTracks], a
 	ld a, [TempEnemyMonSpecies]
-	call $37b6
+	call Function37b6
 
 .asm_3fceb
 	ld a, [BattleType]
@@ -13041,12 +47215,10 @@
 	ld a, $b
 	ld hl, $4000
 	rst FarCall
-
 	pop hl
 	call FarBattleTextBox
 
-	call $7830
-
+	call Function3f830
 	ret nz
 
 	ld c, $2
@@ -13069,8 +47241,263 @@
 
 SECTION "bank10",ROMX,BANK[$10]
 
-INCBIN "baserom.gbc", $40000, $40c65-$40000
+Function40000: ; 40000
+	ld a, [hWX]
+	ld l, a
+	ld a, [hWY]
+	ld h, a
+	push hl
+	ld a, [hSCX]
+	push af
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set 4, [hl]
+	ld a, [VramState]
+	push af
+	xor a
+	ld [VramState], a
+	ld a, [$ffaa]
+	push af
+	ld a, $1
+	ld [$ffaa], a
+	xor a
+	ld [$ffde], a
+	call Function40063
+	call DelayFrame
+.asm_40029
+	call Functiona57
+	ld a, [$cf63]
+	bit 7, a
+	jr nz, .asm_4003b
+	call Function4010b
+	call DelayFrame
+	jr .asm_40029
 
+.asm_4003b
+	ld de, SFX_READ_TEXT_2
+	call StartSFX
+	call WaitSFX
+	call ClearSprites
+	ld a, [$c7d4]
+	ld [$d959], a
+	pop af
+	ld [$ffaa], a
+	pop af
+	ld [VramState], a
+	pop af
+	ld [Options], a
+	pop af
+	ld [hSCX], a
+	pop hl
+	ld a, l
+	ld [hWX], a
+	ld a, h
+	ld [hWY], a
+	ret
+; 40063
+
+Function40063: ; 40063
+	call WhiteBGMap
+	call ClearSprites
+	call ClearTileMap
+	call Function414b7
+	ld hl, PlayerSDefLevel
+	ld bc, $0115
+	xor a
+	call ByteFill
+	xor a
+	ld [$cf63], a
+	ld [$cf64], a
+	ld [$cf65], a
+	ld [$cf66], a
+	call Function400a2
+	ld a, [$d959]
+	ld [$c7d4], a
+	call Function40bdc
+	call Function400b4
+	call Function400ed
+	ld a, $77
+	ld hl, $6247
+	rst FarCall
+	call Function41af7
+	ret
+; 400a2
+
+Function400a2: ; 400a2
+	ld a, [StatusFlags]
+	bit 1, a
+	jr nz, .asm_400ae
+	xor a
+	ld [$c7dc], a
+	ret
+
+.asm_400ae
+	ld a, $1
+	ld [$c7dc], a
+	ret
+; 400b4
+
+Function400b4: ; 400b4
+	ld hl, PlayerSDefLevel
+	ld a, [$c2d6]
+	and a
+	jr z, .asm_400ec
+	cp $fc
+	jr nc, .asm_400ec
+	ld b, a
+	ld a, [$c7d2]
+	cp $8
+	jr c, .asm_400db
+	sub $7
+	ld c, a
+.asm_400cc
+	ld a, b
+	cp [hl]
+	jr z, .asm_400ec
+	inc hl
+	ld a, [$c7d0]
+	inc a
+	ld [$c7d0], a
+	dec c
+	jr nz, .asm_400cc
+
+.asm_400db
+	ld c, $7
+.asm_400dd
+	ld a, b
+	cp [hl]
+	jr z, .asm_400ec
+	inc hl
+	ld a, [$c7d1]
+	inc a
+	ld [$c7d1], a
+	dec c
+	jr nz, .asm_400dd
+
+.asm_400ec
+	ret
+; 400ed
+
+Function400ed: ; 400ed
+	ld a, [MapGroup]
+	ld b, a
+	ld a, [MapNumber]
+	ld c, a
+	call GetWorldMapLocation
+	cp $0
+	jr nz, .asm_40107
+	ld a, [BackupMapGroup]
+	ld b, a
+	ld a, [BackupMapNumber]
+	ld c, a
+	call GetWorldMapLocation
+
+.asm_40107
+	ld [$c7e4], a
+	ret
+; 4010b
+
+Function4010b: ; 4010b
+	ld a, [$cf63]
+	ld hl, $4115
+	call Function41432
+	jp [hl]
+; 40115
+
+INCBIN "baserom.gbc", $40115, $40ad5 - $40115
+
+
+Function40ad5: ; 40ad5
+	push hl
+	ld a, $33
+	ld [hli], a
+	ld d, $34
+	call Function40b06
+	ld a, $35
+	ld [hl], a
+	pop hl
+	ld de, $0014
+	add hl, de
+.asm_40ae6
+	push hl
+	ld a, $36
+	ld [hli], a
+	ld d, $7f
+	call Function40b06
+	ld a, $37
+	ld [hl], a
+	pop hl
+	ld de, $0014
+	add hl, de
+	dec b
+	jr nz, .asm_40ae6
+	ld a, $38
+	ld [hli], a
+	ld d, $39
+	call Function40b06
+	ld a, $3a
+	ld [hl], a
+	ret
+; 40b06
+
+Function40b06: ; 40b06
+	ld e, c
+.asm_40b07
+	ld a, e
+	and a
+	ret z
+	ld a, d
+	ld [hli], a
+	dec e
+	jr .asm_40b07
+; 40b0f
+
+INCBIN "baserom.gbc", $40b0f, $40bb1 - $40b0f
+
+
+Function40bb1: ; 40bb1
+	ld a, [$c7d1]
+	ld hl, $c7d0
+	add [hl]
+	ld e, a
+	ld d, $0
+	ld hl, PlayerSDefLevel
+	add hl, de
+	ld a, [hl]
+	ld [$d265], a
+	ret
+; 40bc4
+
+INCBIN "baserom.gbc", $40bc4, $40bd0 - $40bc4
+
+
+Function40bd0: ; 40bd0
+	push de
+	push hl
+	ld a, [$d265]
+	dec a
+	call CheckCaughtMon
+	pop hl
+	pop de
+	ret
+; 40bdc
+
+
+
+Function40bdc: ; 40bdc
+	ld hl, PlayerSDefLevel
+	ld bc, Start
+	xor a
+	call ByteFill
+	ld a, [$c7d4]
+	ld hl, $4bf0
+	call Function41432
+	jp [hl]
+; 40bf0
+
+INCBIN "baserom.gbc", $40bf0, $40c65 - $40bf0
+
 AlphabeticalPokedexOrder: ; 0x40c65
 INCLUDE "stats/pokedex/order_alpha.asm"
 
@@ -13077,13 +47504,765 @@
 NewPokedexOrder: ; 0x40d60
 INCLUDE "stats/pokedex/order_new.asm"
 
-INCBIN "baserom.gbc", $40e5b, $41afb-$40e5b
+Function40e5b: ; 40e5b
+	xor a
+	ld [hBGMapMode], a
+	ld hl, $c590
+	ld bc, $0412
+	call Function40ad5
+	ld a, [$c7d8]
+	ld hl, $4e7d
+	call Function41432
+	ld e, l
+	ld d, h
+	ld hl, $c5b9
+	call PlaceString
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+; 40e7d
 
+INCBIN "baserom.gbc", $40e7d, $41432 - $40e7d
+
+
+Function41432: ; 41432
+	ld e, a
+	ld d, $0
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ret
+; 4143b
+
+Function4143b: ; 4143b
+	call Function40bb1
+	call Function40bd0
+	jr z, .asm_4145b
+	ld a, [$def4]
+	ld [UnownLetter], a
+	ld a, [$d265]
+	ld [CurPartySpecies], a
+	call GetBaseData
+	ld de, VTiles2
+	ld a, $3c
+	call Predef
+	ret
+
+.asm_4145b
+	ld a, $0
+	call GetSRAMBank
+	ld a, $77
+	ld hl, $60d7
+	rst FarCall
+	ld hl, VTiles2
+	ld de, $a000
+	ld c, $31
+	ld a, [hROMBank]
+	ld b, a
+	call Get2bpp
+	call CloseSRAM
+	ret
+; 41478
+
+INCBIN "baserom.gbc", $41478, $414b7 - $41478
+
+
+Function414b7: ; 414b7
+	call DisableLCD
+	ld hl, VTiles2
+	ld bc, $0310
+	xor a
+	call ByteFill
+	call Function414fb
+	call Functione5f
+	ld hl, $9600
+	ld bc, $0200
+	call $5504
+	call Function41a24
+	jr nz, .asm_414e0
+	ld a, $77
+	ld hl, $5f1c
+	rst FarCall
+	jr .asm_414e9
+
+.asm_414e0
+	ld hl, $550e
+	ld de, $9310
+	call Decompress
+
+.asm_414e9
+	ld hl, $56b0
+	ld de, VTiles0
+	call Decompress
+	ld a, $6
+	call Function3cb4
+	call EnableLCD
+	ret
+; 414fb
+
+Function414fb: ; 414fb
+	call $0e51
+	ld hl, VTiles1
+	ld bc, $0800
+.asm_41504
+	ld a, [hl]
+	xor $ff
+	ld [hli], a
+	dec bc
+	ld a, b
+	or c
+	jr nz, .asm_41504
+	ret
+; 4150e
+
+INCBIN "baserom.gbc", $4150e, $41a24 - $4150e
+
+
+Function41a24: ; 41a24
+	ld a, [hCGB]
+	or a
+	ret nz
+	ld a, [hSGB]
+	dec a
+	ret
+; 41a2c
+
+Function41a2c: ; 41a2c
+	ld a, $0
+	call GetSRAMBank
+	ld hl, Function40000
+	ld de, $a188
+	ld bc, Function270
+	ld a, $77
+	call FarCopyBytes
+	ld hl, $a188
+	ld bc, $01b0
+	call $5504
+	ld de, $a188
+	ld hl, $9400
+	ld bc, $101b
+	call Request2bpp
+	call CloseSRAM
+	ret
+; 41a58
+
+INCBIN "baserom.gbc", $41a58, $41af7 - $41a58
+
+
+Function41af7: ; 41af7
+	xor a
+	ld [hBGMapMode], a
+	ret
+; 41afb
+
+
 Moves: ; 0x41afb
 INCLUDE "battle/moves/moves.asm"
 
-INCBIN "baserom.gbc", $421d8, $425b1-$421d8
 
+Function421d8: ; 421d8
+	ld hl, EvolvableFlags
+	xor a
+	ld [hl], a
+	ld a, [CurPartyMon]
+	ld c, a
+	ld b, $1
+	call Function42577
+	xor a
+	ld [$d268], a
+	dec a
+	ld [CurPartyMon], a
+	push hl
+	push bc
+	push de
+	ld hl, PartyCount
+	push hl
+.asm_421f5
+	ld hl, CurPartyMon
+	inc [hl]
+	pop hl
+	inc hl
+	ld a, [hl]
+	cp $ff
+	jp z, Function423ff
+	ld [MagikarpLength], a
+	push hl
+	ld a, [CurPartyMon]
+	ld c, a
+	ld hl, EvolvableFlags
+	ld b, $2
+	call Function42577
+	ld a, c
+	and a
+	jp z, $61f5
+	ld a, [MagikarpLength]
+	dec a
+	ld b, $0
+	ld c, a
+	ld hl, EvosAttacksPointers
+	add hl, bc
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	push hl
+	xor a
+	ld [MonType], a
+	ld a, $1f
+	call Predef
+	pop hl
+	ld a, [hli]
+	and a
+	jr z, .asm_421f5
+	ld b, a
+	cp $3
+	jr z, .asm_422ae
+	ld a, [InLinkBattle]
+	and a
+	jp nz, $63f9
+	ld a, b
+	cp $2
+	jp z, $62d5
+	ld a, [$d1e9]
+	and a
+	jp nz, $63f9
+	ld a, b
+	cp $1
+	jp z, $62ee
+	cp $4
+	jr z, .asm_42283
+	ld a, [TempMonLevel]
+	cp [hl]
+	jp c, Function423f8
+	call Function42461
+	jp z, Function423f8
+	push hl
+	ld de, TempMonAtk
+	ld hl, TempMonDef
+	ld c, $2
+	call StringCmp
+	ld a, $3
+	jr z, .asm_4227a
+	ld a, $2
+	jr c, .asm_4227a
+	ld a, $1
+
+.asm_4227a
+	pop hl
+	inc hl
+	cp [hl]
+	jp nz, $63f9
+	inc hl
+	jr .asm_422fd
+
+.asm_42283
+	ld a, [TempMonHappiness]
+	cp $dc
+	jp c, $63f9
+	call Function42461
+	jp z, $63f9
+	ld a, [hli]
+	cp $1
+	jr z, .asm_422fd
+	cp $2
+	jr z, .asm_422a4
+	ld a, [TimeOfDay]
+	cp $2
+	jp nz, $63fa
+	jr .asm_422fd
+
+.asm_422a4
+	ld a, [TimeOfDay]
+	cp $2
+	jp z, $63fa
+	jr .asm_422fd
+
+.asm_422ae
+	ld a, [InLinkBattle]
+	and a
+	jp z, $63f9
+	call Function42461
+	jp z, $63f9
+	ld a, [hli]
+	ld b, a
+	inc a
+	jr z, .asm_422fd
+	ld a, [InLinkBattle]
+	cp $1
+	jp z, $63fa
+	ld a, [TempMonItem]
+	cp b
+	jp nz, $63fa
+	xor a
+	ld [TempMonItem], a
+	jr .asm_422fd
+
+	ld a, [hli]
+	ld b, a
+	ld a, [CurItem]
+	cp b
+	jp nz, $63fa
+	ld a, [$d1e9]
+	and a
+	jp z, $63fa
+	ld a, [InLinkBattle]
+	and a
+	jp nz, $63fa
+	jr .asm_422fd
+
+	ld a, [hli]
+	ld b, a
+	ld a, [TempMonLevel]
+	cp b
+	jp c, $63fa
+	call Function42461
+	jp z, $63fa
+
+.asm_422fd
+	ld a, [TempMonLevel]
+	ld [CurPartyLevel], a
+	ld a, $1
+	ld [$d268], a
+	push hl
+	ld a, [hl]
+	ld [Buffer2], a
+	ld a, [CurPartyMon]
+	ld hl, PartyMon1Nickname
+	call GetNick
+	call CopyName1
+	ld hl, $6482
+	call PrintText
+	ld c, $32
+	call DelayFrames
+	xor a
+	ld [hBGMapMode], a
+	ld hl, TileMap
+	ld bc, $0c14
+	call ClearBox
+	ld a, $1
+	ld [hBGMapMode], a
+	call ClearSprites
+	ld a, $13
+	ld hl, $65e1
+	rst FarCall
+	push af
+	call ClearSprites
+	pop af
+	jp c, Function42454
+	ld hl, $6473
+	call PrintText
+	pop hl
+	ld a, [hl]
+	ld [CurSpecies], a
+	ld [TempMonSpecies], a
+	ld [Buffer2], a
+	ld [$d265], a
+	call GetPokemonName
+	push hl
+	ld hl, $6478
+	call PrintTextBoxText
+	ld a, $41
+	ld hl, $6094
+	rst FarCall
+	ld de, MUSIC_NONE
+	call StartMusic
+	ld de, SFX_CAUGHT_MON
+	call StartSFX
+	call WaitSFX
+	ld c, $28
+	call DelayFrames
+	call ClearTileMap
+	call Function42414
+	call GetBaseData
+	ld hl, $d118
+	ld de, TempMonMaxHP
+	ld b, $1
+	ld a, $c
+	call Predef
+	ld a, [CurPartyMon]
+	ld hl, PartyMon1Species
+	ld bc, $0030
+	call AddNTimes
+	ld e, l
+	ld d, h
+	ld bc, $0024
+	add hl, bc
+	ld a, [hli]
+	ld b, a
+	ld c, [hl]
+	ld hl, $d133
+	ld a, [hld]
+	sub c
+	ld c, a
+	ld a, [hl]
+	sbc b
+	ld b, a
+	ld hl, $d131
+	ld a, [hl]
+	add c
+	ld [hld], a
+	ld a, [hl]
+	adc b
+	ld [hl], a
+	ld hl, TempMonSpecies
+	ld bc, $0030
+	call CopyBytes
+	ld a, [CurSpecies]
+	ld [$d265], a
+	xor a
+	ld [MonType], a
+	call Function42487
+	ld a, [$d265]
+	dec a
+	call SetSeenAndCaughtMon
+	ld a, [$d265]
+	cp $c9
+	jr nz, .asm_423ec
+	ld hl, TempMonDVs
+	ld a, $2d
+	call Predef
+	ld hl, $7a18
+	ld a, $3e
+	rst FarCall
+
+.asm_423ec
+	pop de
+	pop hl
+	ld a, [TempMonSpecies]
+	ld [hl], a
+	push hl
+	ld l, e
+	ld h, d
+	jp $61f5
+; 423f8
+
+Function423f8: ; 423f8
+	inc hl
+	inc hl
+	inc hl
+	jp $6230
+; 423fe
+
+INCBIN "baserom.gbc", $423fe, $423ff - $423fe
+
+
+Function423ff: ; 423ff
+	pop de
+	pop bc
+	pop hl
+	ld a, [InLinkBattle]
+	and a
+	ret nz
+	ld a, [IsInBattle]
+	and a
+	ret nz
+	ld a, [$d268]
+	and a
+	call nz, Function3d47
+	ret
+; 42414
+
+Function42414: ; 42414
+	ld a, [CurSpecies]
+	push af
+	ld a, [BaseDexNo]
+	ld [$d265], a
+	call GetPokemonName
+	pop af
+	ld [CurSpecies], a
+	ld hl, StringBuffer1
+	ld de, StringBuffer2
+.asm_4242b
+	ld a, [de]
+	inc de
+	cp [hl]
+	inc hl
+	ret nz
+	cp $50
+	jr nz, .asm_4242b
+	ld a, [CurPartyMon]
+	ld bc, $000b
+	ld hl, PartyMon1Nickname
+	call AddNTimes
+	push hl
+	ld a, [CurSpecies]
+	ld [$d265], a
+	call GetPokemonName
+	ld hl, StringBuffer1
+	pop de
+	ld bc, $000b
+	jp CopyBytes
+; 42454
+
+Function42454: ; 42454
+	ld hl, $647d
+	call PrintText
+	call ClearTileMap
+	pop hl
+	jp $61f5
+; 42461
+
+Function42461: ; 42461
+	push hl
+	ld a, [CurPartyMon]
+	ld hl, PartyMon1Item
+	ld bc, $0030
+	call AddNTimes
+	ld a, [hl]
+	cp $70
+	pop hl
+	ret
+; 42473
+
+INCBIN "baserom.gbc", $42473, $42487 - $42473
+
+
+Function42487: ; 42487
+	ld a, [$d265]
+	ld [CurPartySpecies], a
+	dec a
+	ld b, $0
+	ld c, a
+	ld hl, EvosAttacksPointers
+	add hl, bc
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+.asm_42499
+	ld a, [hli]
+	and a
+	jr nz, .asm_42499
+.asm_4249d
+	ld a, [hli]
+	and a
+	jr z, .asm_424da
+	ld b, a
+	ld a, [CurPartyLevel]
+	cp b
+	ld a, [hli]
+	jr nz, .asm_4249d
+	push hl
+	ld d, a
+	ld hl, PartyMon1Move1
+	ld a, [CurPartyMon]
+	ld bc, $0030
+	call AddNTimes
+	ld b, $4
+.asm_424b9
+	ld a, [hli]
+	cp d
+	jr z, .asm_424c2
+	dec b
+	jr nz, .asm_424b9
+	jr .asm_424c5
+
+.asm_424c2
+	pop hl
+	jr .asm_4249d
+
+.asm_424c5
+	ld a, d
+	ld [$d262], a
+	ld [$d265], a
+	call GetMoveName
+	call CopyName1
+	ld a, $0
+	call Predef
+	pop hl
+	jr .asm_4249d
+
+.asm_424da
+	ld a, [CurPartySpecies]
+	ld [$d265], a
+	ret
+; 424e1
+
+
+FillMoves: ; 424e1
+; Fill in moves at de for CurPartySpecies at CurPartyLevle
+
+	push hl
+	push de
+	push bc
+	ld hl, EvosAttacksPointers
+	ld b, 0
+	ld a, [CurPartySpecies]
+	dec a
+	add a
+	rl b
+	ld c, a
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+.GoToAttacks
+	ld a, [hli]
+	and a
+	jr nz, .GoToAttacks
+	jr .GetLevel
+
+.NextMove
+	pop de
+.GetMove
+	inc hl
+.GetLevel
+	ld a, [hli]
+	and a
+	jp z, .done
+	ld b, a
+	ld a, [CurPartyLevel]
+	cp b
+	jp c, .done
+	ld a, [Buffer1]
+	and a
+	jr z, .CheckMove
+	ld a, [DefaultFlypoint]
+	cp b
+	jr nc, .GetMove
+
+.CheckMove
+	push de
+	ld c, NUM_MOVES
+.CheckRepeat
+	ld a, [de]
+	inc de
+	cp [hl]
+	jr z, .NextMove
+	dec c
+	jr nz, .CheckRepeat
+	pop de
+	push de
+	ld c, NUM_MOVES
+.CheckSlot
+	ld a, [de]
+	and a
+	jr z, .LearnMove
+	inc de
+	dec c
+	jr nz, .CheckSlot
+	pop de
+	push de
+	push hl
+	ld h, d
+	ld l, e
+	call ShiftMoves
+	ld a, [Buffer1]
+	and a
+	jr z, .ShiftedMove
+	push de
+	ld bc, PartyMon1PP - PartyMon1Move4
+	add hl, bc
+	ld d, h
+	ld e, l
+	call ShiftMoves
+	pop de
+
+.ShiftedMove
+	pop hl
+
+.LearnMove
+	ld a, [hl]
+	ld [de], a
+	ld a, [Buffer1]
+	and a
+	jr z, .NextMove
+	push hl
+	ld a, [hl]
+	ld hl, PartyMon1PP - PartyMon1Moves
+	add hl, de
+	push hl
+	dec a
+	ld hl, Moves + MOVE_PP
+	ld bc, Move2 - Move1
+	call AddNTimes
+	ld a, BANK(Moves)
+	call GetFarByte
+	pop hl
+	ld [hl], a
+	pop hl
+	jr .NextMove
+
+.done
+	pop bc
+	pop de
+	pop hl
+	ret
+; 4256e
+
+ShiftMoves: ; 4256e
+	ld c, $3
+.asm_42570
+	inc de
+	ld a, [de]
+	ld [hli], a
+	dec c
+	jr nz, .asm_42570
+	ret
+; 42577
+
+
+Function42577: ; 42577
+	push de
+	ld d, $0
+	ld a, $3
+	call Predef
+	pop de
+	ret
+; 42581
+
+GetPreEvolution: ; 42581
+; Find the first mon to evolve into CurPartySpecies.
+
+; Return carry and the new species in CurPartySpecies
+; if a pre-evolution is found.
+
+	ld c, BULBASAUR - 1
+.asm_42583
+	ld hl, EvosAttacksPointers
+	ld b, 0
+	add hl, bc
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+.asm_4258d
+	ld a, [hli]
+	and a
+	jr z, .asm_425a2
+	cp EVOLVE_STAT
+	jr nz, .asm_42596
+	inc hl
+
+.asm_42596
+	inc hl
+	ld a, [CurPartySpecies]
+	cp [hl]
+	jr z, .asm_425aa
+	inc hl
+	ld a, [hl]
+	and a
+	jr nz, .asm_4258d
+
+.asm_425a2
+	inc c
+	ld a, c
+	cp CELEBI
+	jr c, .asm_42583
+	and a
+	ret
+
+.asm_425aa
+	inc c
+	ld a, c
+	ld [CurPartySpecies], a
+	scf
+	ret
+; 425b1
+
+
 EvosAttacksPointers: ; 0x425b1
 INCLUDE "stats/evos_attacks_pointers.asm"
 
@@ -13468,25 +48647,275 @@
 ; 441cf
 
 
-INCBIN "baserom.gbc", $441cf, $44378 - $441cf
+Function441cf: ; 441cf
+	ld hl, $41fc
+	ld b, $19
+.asm_441d4
+	ld a, [hli]
+	cp $fe
+	jr nz, .asm_441dd
+	ld hl, $41fc
+	ld a, [hli]
 
+.asm_441dd
+	ld [$c7db], a
+	ld a, [hli]
+	ld c, a
+	push bc
+	push hl
+	call Function44207
+	pop hl
+	pop bc
+	call DelayFrames
+	dec b
+	jr nz, .asm_441d4
+	xor a
+	ld [$c7db], a
+	call Function44207
+	ld c, $20
+	call DelayFrames
+	ret
+; 441fc
 
+INCBIN "baserom.gbc", $441fc, $44207 - $441fc
+
+
+Function44207: ; 44207
+	ld a, [$c7db]
+	ld hl, $4228
+	ld de, Sprites
+.asm_44210
+	ld a, [hli]
+	cp $ff
+	ret z
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [$c7db]
+	ld b, a
+	add a
+	add b
+	add [hl]
+	inc hl
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	jr .asm_44210
+; 44228
+
+INCBIN "baserom.gbc", $44228, $44378 - $44228
+
+
 PokedexDataPointerTable: ; 0x44378
 INCLUDE "stats/pokedex/entry_pointers.asm"
 
 
-INCBIN "baserom.gbc", $4456e, $447a0 - $4456e
+Function4456e: ; 4456e
+	ld a, $1
+	call GetPartyParamLocation
+	ld d, [hl]
+	ld a, $2e
+	ld hl, $5e76
+	rst FarCall
+	jr nc, .asm_445be
+	call Function44648
+	cp $a
+	jr nc, .asm_445be
+	ld bc, $002f
+	ld hl, $a835
+	call AddNTimes
+	ld d, h
+	ld e, l
+	ld a, [CurPartyMon]
+	ld bc, $002f
+	ld hl, $a600
+	call AddNTimes
+	push hl
+	ld a, $0
+	call GetSRAMBank
+	ld bc, $002f
+	call CopyBytes
+	pop hl
+	xor a
+	ld bc, $002f
+	call ByteFill
+	ld a, $1
+	call GetPartyParamLocation
+	ld [hl], $0
+	ld hl, $a834
+	inc [hl]
+	call CloseSRAM
+	xor a
+	ret
 
+.asm_445be
+	scf
+	ret
+; 445c0
+
+INCBIN "baserom.gbc", $445c0, $44648 - $445c0
+
+
+Function44648: ; 44648
+	ld a, $0
+	call GetSRAMBank
+	ld a, [$a834]
+	ld c, a
+	jp CloseSRAM
+; 44654
+
+Function44654: ; 44654
+	push bc
+	push de
+	ld a, $14
+	ld hl, $4000
+	rst FarCall
+	ld a, $2
+	jr c, .asm_446c6
+	ld a, [CurPartyMon]
+	ld hl, PartyMon1Item
+	ld bc, $0030
+	call AddNTimes
+	ld d, [hl]
+	ld a, $2e
+	ld hl, $5e76
+	rst FarCall
+	ld a, $3
+	jr nc, .asm_446c6
+	ld a, $0
+	call GetSRAMBank
+	ld a, [CurPartyMon]
+	ld hl, $a600
+	ld bc, $002f
+	call AddNTimes
+	ld d, h
+	ld e, l
+	pop hl
+	pop bc
+	ld a, $20
+	ld [$d265], a
+.asm_44691
+	ld a, [de]
+	ld c, a
+	ld a, b
+	call GetFarByte
+	cp $50
+	jr z, .asm_446ab
+	cp c
+	ld a, $0
+	jr nz, .asm_446c1
+	inc hl
+	inc de
+	ld a, [$d265]
+	dec a
+	ld [$d265], a
+	jr nz, .asm_44691
+
+.asm_446ab
+	ld a, $3
+	ld hl, $6538
+	rst FarCall
+	ld a, $4
+	jr c, .asm_446c1
+	xor a
+	ld [$d10b], a
+	ld a, $3
+	ld hl, $6039
+	rst FarCall
+	ld a, $1
+
+.asm_446c1
+	call CloseSRAM
+	jr .asm_446c8
+
+.asm_446c6
+	pop de
+	pop bc
+
+.asm_446c8
+	ld [ScriptVar], a
+	ret
+; 446cc
+
+Function446cc: ; 446cc
+	ld a, [PartyCount]
+	dec a
+	push af
+	push bc
+	ld hl, PartyMon1Item
+	ld bc, $0030
+	call AddNTimes
+	pop bc
+	ld [hl], b
+	pop af
+	push bc
+	push af
+	ld hl, $a600
+	ld bc, $002f
+	call AddNTimes
+	ld d, h
+	ld e, l
+	ld hl, DefaultFlypoint
+	ld bc, $0021
+	ld a, $0
+	call GetSRAMBank
+	call CopyBytes
+	pop af
+	push af
+	ld hl, PartyMon1OT
+	ld bc, $000b
+	call AddNTimes
+	ld bc, $000a
+	call CopyBytes
+	pop af
+	ld hl, PartyMon1ID
+	ld bc, $0030
+	call AddNTimes
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hl]
+	ld [de], a
+	inc de
+	ld a, [CurPartySpecies]
+	ld [de], a
+	inc de
+	pop bc
+	ld a, b
+	ld [de], a
+	jp CloseSRAM
+; 44725
+
+Function44725: ; 44725
+	ld a, $0
+	call GetSRAMBank
+	ld hl, $a600
+	ld de, $a71a
+	ld bc, $011a
+	call CopyBytes
+	ld hl, $a834
+	ld de, $aa0b
+	ld bc, $01d7
+	call CopyBytes
+	jp CloseSRAM
+; 44745
+
+INCBIN "baserom.gbc", $44745, $447a0 - $44745
+
 _KrisMailBoxMenu: ; 0x447a0
 	call InitMail
 	jr z, .nomail
-	call $1d6e
-	call $4806
-	jp $1c17
+	call Function1d6e
+	call Function44806
+	jp Function1c17
 
 .nomail
 	ld hl, .EmptyMailboxText
-	jp $1d67
+	jp Function1d67
 ; 0x447b4
 
 .EmptyMailboxText ; 0x447b4
@@ -13550,30 +48979,30 @@
 
 Function44806: ; 0x44806
 	xor a
-	ld [$d0f0], a
+	ld [CurMart], a
 	ld a, $1
 	ld [$d0f1], a
 .asm_4480f
 	call InitMail
-	ld hl, $494c
-	call $1d3c
+	ld hl, MenuData4494c
+	call Function1d3c
 	xor a
 	ld [hBGMapMode], a
-	call $352f
-	call $1ad2
+	call Function352f
+	call Function1ad2
 	ld a, [$d0f1]
 	ld [$cf88], a
-	ld a, [$d0f0]
+	ld a, [CurMart]
 	ld [$d0e4], a
-	call $350c
+	call Function350c
 	ld a, [$d0e4]
-	ld [$d0f0], a
+	ld [CurMart], a
 	ld a, [$cfa9]
 	ld [$d0f1], a
 	ld a, [$cf73]
 	cp $2
 	jr z, .asm_44848
-	call $484a
+	call Function4484a
 	jr .asm_4480f
 
 .asm_44848
@@ -13583,9 +49012,9 @@
 
 Function4484a: ; 0x4484a
 	ld hl, MenuData44964
-	call $1d35
-	call $1d81
-	call $1c07
+	call LoadMenuDataHeader
+	call Function1d81
+	call Function1c07
 	jr c, .asm_44860
 	ld a, [$cfa9]
 	dec a
@@ -13608,14 +49037,14 @@
 	dec a
 	ld b, a
 	call $45f4
-	jp $2b3c
+	jp Function2b3c
 ; 0x44877
 
 .PutInPack ; 0x44877
 	ld hl, .MessageLostText
-	call $1d4f
-	call $1dcf
-	call $1c07
+	call Function1d4f
+	call Function1dcf
+	call Function1c07
 	ret c
 	ld a, [MenuSelection]
 	dec a
@@ -13623,10 +49052,10 @@
 	ld a, $1
 	ld [$d10c], a
 	ld hl, NumItems
-	call $2f66
+	call Function2f66
 	jr c, .asm_4489e
 	ld hl, .PackFullText
-	jp $1d67
+	jp Function1d67
 
 .asm_4489e
 	ld a, [MenuSelection]
@@ -13634,7 +49063,7 @@
 	ld b, a
 	call $45c0
 	ld hl, .PutAwayText
-	jp $1d67
+	jp Function1d67
 ; 0x448ac
 
 .PutAwayText ; 0x448ac
@@ -13665,8 +49094,8 @@
 .AttachMail ; 0x448d2
 	call FadeToMenu
 	xor a
-	ld [$d141], a
-	call $31f3
+	ld [PartyMenuActionText], a
+	call WhiteBGMap
 .asm_448dc
 	ld a, $14
 	ld hl, $404f
@@ -13678,13 +49107,13 @@
 	ld hl, $43e0
 	rst $8
 	ld a, $14
-	ld hl, $405f
+	ld hl, PickedFruitTree
 	rst $8
 	ld a, $14
 	ld hl, $449a
 	rst $8
-	call $31f6
-	call $32f9
+	call WaitBGMap
+	call Function32f9
 	call DelayFrame
 	ld a, $14
 	ld hl, $4457
@@ -13716,7 +49145,7 @@
 	call PrintText
 
 .asm_44939
-	jp $2b3c
+	jp Function2b3c
 ; 0x4493c
 
 .HoldingMailText ; 0x4493c
@@ -13767,13 +49196,169 @@
 
 SECTION "bank12",ROMX,BANK[$12]
 
-INCBIN "baserom.gbc", $48000, $48e9b - $48000
+Function48000: ; 48000
+	ld a, $1
+	ld [$d474], a
+	xor a
+	ld [$d473], a
+	ld [PlayerGender], a
+	ld [$d475], a
+	ld [$d476], a
+	ld [$d477], a
+	ld [$d478], a
+	ld [DefaultFlypoint], a
+	ld [$d003], a
+	ld a, [$d479]
+	res 0, a
+	ld [$d479], a
+	ld a, [$d479]
+	res 1, a
+	ld [$d479], a
+	ret
+; 4802f
 
+INCBIN "baserom.gbc", $4802f, $48e81 - $4802f
+
+
+Function48e81: ; 48e81
+	ld hl, $4e93
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld e, a
+	ld d, [hl]
+	ld hl, $9500
+	ld bc, $120f
+	call Request2bpp
+	ret
+; 48e93
+
+INCBIN "baserom.gbc", $48e93, $48e9b - $48e93
+
 PackFGFX:
 INCBIN "gfx/misc/pack_f.2bpp"
 
-INCBIN "baserom.gbc", $4925b, $49962 - $4925b
+Function4925b: ; 4925b
+	call FadeToMenu
+	call WhiteBGMap
+	call Functionfdb
+	call DelayFrame
+	ld b, $14
+	call GetSGBLayout
+	xor a
+	ld [$d142], a
+	call Function492a5
+	ld [$d265], a
+	ld [$d262], a
+	call GetMoveName
+	call CopyName1
+	ld a, $b
+	ld hl, $47fb
+	rst FarCall
+	jr c, .asm_4929c
+	jr .asm_49291
 
+.asm_49289
+	ld a, $b
+	ld hl, $480a
+	rst FarCall
+	jr c, .asm_4929c
+
+.asm_49291
+	call Function492b9
+	jr nc, .asm_49289
+	xor a
+	ld [ScriptVar], a
+	jr .asm_492a1
+
+.asm_4929c
+	ld a, $ff
+	ld [ScriptVar], a
+
+.asm_492a1
+	call Function2b3c
+	ret
+; 492a5
+
+Function492a5: ; 492a5
+	ld a, [ScriptVar]
+	cp $1
+	jr z, .asm_492b3
+	cp $2
+	jr z, .asm_492b6
+	ld a, $3a
+	ret
+
+.asm_492b3
+	ld a, $35
+	ret
+
+.asm_492b6
+	ld a, $55
+	ret
+; 492b9
+
+Function492b9: ; 492b9
+	ld hl, $530a
+	call LoadMenuDataHeader
+	ld a, $e
+	call Predef
+	push bc
+	ld a, [CurPartyMon]
+	ld hl, PartyMon1Nickname
+	call GetNick
+	pop bc
+	ld a, c
+	and a
+	jr nz, .asm_492e5
+	push de
+	ld de, SFX_WRONG
+	call StartSFX
+	pop de
+	ld a, $b
+	ld hl, $48ce
+	call Function31b0
+	jr .asm_49300
+
+.asm_492e5
+	ld hl, $79ea
+	ld a, $3
+	rst FarCall
+	jr c, .asm_49300
+	ld a, $0
+	call Predef
+	ld a, b
+	and a
+	jr z, .asm_49300
+	ld c, $5
+	callab ChangeHappiness
+	jr .asm_49305
+
+.asm_49300
+	call Function1c07
+	and a
+	ret
+
+.asm_49305
+	call Function1c07
+	scf
+	ret
+; 4930a
+
+INCBIN "baserom.gbc", $4930a, $49409 - $4930a
+
+
+Function49409: ; 49409
+	ld hl, $5418
+	ld de, $d038
+	ld bc, $0008
+	ld a, $5
+	call Function306b
+	ret
+; 49418
+
+INCBIN "baserom.gbc", $49418, $49962 - $49418
+
 SpecialCelebiGFX:
 INCBIN "gfx/special/celebi/leaf.2bpp"
 INCBIN "gfx/special/celebi/1.2bpp"
@@ -13781,28 +49366,67 @@
 INCBIN "gfx/special/celebi/3.2bpp"
 INCBIN "gfx/special/celebi/4.2bpp"
 
-INCBIN "baserom.gbc", $49aa2, $49d24 - $49aa2
+INCBIN "baserom.gbc", $49aa2, $49cdc - $49aa2
 
-ContinueText: ; 0x49d24
+MainMenu: ; 49cdc
+	xor a
+	ld [$c2d7], a
+	call Function49ed0
+	ld b, $8
+	call GetSGBLayout
+	call Function32f9
+	ld hl, GameTimerPause
+	res 0, [hl]
+	call Function49da4
+	ld [$cf76], a
+	call Function49e09
+	ld hl, MenuDataHeader_0x49d14
+	call LoadMenuDataHeader
+	call Function49de4
+	call Function1c17
+	jr c, .quit
+	call ClearTileMap
+	ld a, [MenuSelection]
+	ld hl, Label49d60
+	rst JumpTable
+	jr MainMenu
+
+.quit
+	ret
+; 49d14
+
+MenuDataHeader_0x49d14: ; 49d14
+	db $40 ; flags
+	db 00, 00 ; start coords
+	db 07, 16 ; end coords
+	dw MenuData2_0x49d1c
+	db 1 ; default option
+; 49d1c
+
+MenuData2_0x49d1c: ; 49d1c
+	db $80 ; flags
+	db 0 ; items
+	dw MainMenuItems
+	dw Function1f79
+	dw MainMenuText
+; 49d20
+
+MainMenuText: ; 49d24
 	db "CONTINUE@"
-NewGameText: ; 0x49d2d
 	db "NEW GAME@"
-OptionText: ; 0x49d36
 	db "OPTION@"
-MysteryGiftText: ; 0x49d3d
 	db "MYSTERY GIFT@"
-MobileText: ; 0x49d4a
 	db "MOBILE@"
-MobileStudiumText: ; 0x49d51
 	db "MOBILE STUDIUM@"
 
 Label49d60: ; 0x49d60
-	dw $5eee ; XXX is this ContinueASM?
-	dw $5ee0 ; XXX is this NewGameASM?
-	dw $5ee7 ; XXX is this OptionASM?
-	dw $5ef5 ; XXX is this MysteryGiftASM?
-	dw $5efc ; XXX is this MobileASM?
-	dw $6496 ; XXX is this MobileStudiumASM?
+	dw MainMenu_Continue
+	dw MainMenu_NewGame
+	dw MainMenu_Options
+	dw MainMenu_MysteryGift
+	dw MainMenu_Mobile
+	dw MainMenu_MobileStudium
+; 0x49d6c
 
 CONTINUE       EQU 0
 NEW_GAME       EQU 1
@@ -13811,6 +49435,8 @@
 MOBILE         EQU 4
 MOBILE_STUDIUM EQU 5
 
+MainMenuItems:
+
 NewGameMenu: ; 0x49d6c
 	db 2
 	db NEW_GAME
@@ -13885,8 +49511,393 @@
 	db MOBILE_STUDIUM
 	db $ff
 
-INCBIN "baserom.gbc", $49da4, $4a6e8 - $49da4
 
+Function49da4: ; 49da4
+	nop
+	nop
+	nop
+	ld a, [$cfcd]
+	and a
+	jr nz, .asm_49db0
+	ld a, $0
+	ret
+
+.asm_49db0
+	ld a, [hCGB]
+	cp $1
+	ld a, $1
+	ret nz
+	ld a, $0
+	call GetSRAMBank
+	ld a, [$abe5]
+	cp $ff
+	call CloseSRAM
+	jr nz, .asm_49dd6
+	ld a, [StatusFlags]
+	bit 7, a
+	ld a, $1
+	jr z, .asm_49dd1
+	jr .asm_49dd1
+
+.asm_49dd1
+	jr .asm_49dd3
+
+.asm_49dd3
+	ld a, $1
+	ret
+
+.asm_49dd6
+	ld a, [StatusFlags]
+	bit 7, a
+	jr z, .asm_49ddf
+	jr .asm_49ddf
+
+.asm_49ddf
+	jr .asm_49de1
+
+.asm_49de1
+	ld a, $6
+	ret
+; 49de4
+
+Function49de4: ; 49de4
+	call SetUpMenu
+.asm_49de7
+	call Function49e09
+	ld a, [$cfa5]
+	set 5, a
+	ld [$cfa5], a
+	call Function1f1a
+	ld a, [$cf73]
+	cp $2
+	jr z, .asm_49e07
+	cp $1
+	jr z, .asm_49e02
+	jr .asm_49de7
+
+.asm_49e02
+	call PlayClickSFX
+	and a
+	ret
+
+.asm_49e07
+	scf
+	ret
+; 49e09
+
+Function49e09: ; 49e09
+	ld a, [$cfcd]
+	and a
+	ret z
+	xor a
+	ld [hBGMapMode], a
+	call Function49e27
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set 4, [hl]
+	call Function49e3d
+	pop af
+	ld [Options], a
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+; 49e27
+
+
+Function49e27: ; 49e27
+	call $06e3
+	and $80
+	jr nz, .asm_49e39
+	ld hl, $c5b8
+	ld b, $2
+	ld c, $12
+	call TextBox
+	ret
+
+.asm_49e39
+	call SpeechTextBox
+	ret
+; 49e3d
+
+
+Function49e3d: ; 49e3d
+	ld a, [$cfcd]
+	and a
+	ret z
+	call $06e3
+	and $80
+	jp nz, Function49e75
+	call UpdateTime
+	call GetWeekday
+	ld b, a
+	decoord 1, 15
+	call Function49e91
+	decoord 4, 16
+	ld a, [hHours]
+	ld c, a
+	ld a, $24
+	ld hl, $4b3e
+	rst FarCall
+	ld [hl], $9c
+	inc hl
+	ld de, hMinutes
+	ld bc, $8102
+	call PrintNum
+	ret
+; 49e70
+
+; 49e70
+	db "min.@"
+; 49e75
+
+Function49e75: ; 49e75
+	hlcoord 1, 14
+	ld de, .TimeNotSet
+	call PlaceString
+	ret
+; 49e7f
+
+.TimeNotSet ; 49e7f
+	db "TIME NOT SET@"
+; 49e8c
+
+UnknownText_0x49e8c: ; 49e8c
+	text_jump UnknownText_0x1c5182, BANK(UnknownText_0x1c5182)
+	db "@"
+; 49e91
+
+Function49e91: ; 49e91
+	push de
+	ld hl, .Days
+	ld a, b
+	call GetNthString
+	ld d, h
+	ld e, l
+	pop hl
+	call PlaceString
+	ld h, b
+	ld l, c
+	ld de, .Day
+	call PlaceString
+	ret
+; 49ea8
+
+.Days
+	db "SUN@"
+	db "MON@"
+	db "TUES@"
+	db "WEDNES@"
+	db "THURS@"
+	db "FRI@"
+	db "SATUR@"
+.Day
+	db "DAY@"
+; 49ed0
+
+Function49ed0: ; 49ed0
+	xor a
+	ld [$ffde], a
+	call ClearTileMap
+	call Functione5f
+	call $0e51
+	call Function1fbf
+	ret
+; 49ee0
+
+
+MainMenu_NewGame: ; 49ee0
+	callba NewGame
+	ret
+; 49ee7
+
+MainMenu_Options: ; 49ee7
+	callba OptionsMenu
+	ret
+; 49eee
+
+MainMenu_Continue: ; 49eee
+	callba Continue
+	ret
+; 49ef5
+
+MainMenu_MysteryGift: ; 49ef5
+	callba MysteryGift
+	ret
+; 49efc
+
+MainMenu_Mobile: ; 49efc
+	call WhiteBGMap
+	ld a, MUSIC_MOBILE_ADAPTER_MENU
+	ld [CurMusic], a
+	ld de, MUSIC_MOBILE_ADAPTER_MENU
+	call $66c5
+	call WhiteBGMap
+	call $63a7
+	call $6492
+	call WhiteBGMap
+	call $6071
+	ld c, $c
+	call DelayFrames
+	ld hl, $c4a4
+	ld b, $a
+	ld c, $a
+	call $4cdc
+	ld hl, $c4ce
+	ld de, MobileString1
+	call PlaceString
+	ld hl, $c590
+	ld b, $4
+	ld c, $12
+	call TextBox
+	xor a
+	ld de, String_0x49fe9
+	ld hl, $c5b9
+	call PlaceString
+	call Function3200
+	call Function32f9
+	call Function1bc9
+	ld hl, $cfa9
+	ld b, [hl]
+	push bc
+	jr .asm_49f5d
+
+.asm_49f55
+	call Function1bd3
+	ld hl, $cfa9
+	ld b, [hl]
+	push bc
+
+.asm_49f5d
+	bit 0, a
+	jr nz, .asm_49f67
+	bit 1, a
+	jr nz, .asm_49f84
+	jr .asm_49f97
+
+.asm_49f67
+	ld hl, $cfa9
+	ld a, [hl]
+	cp $1
+	jp z, $6098
+	cp $2
+	jp z, $60b9
+	cp $3
+	jp z, $60c2
+	cp $4
+	jp z, $6100
+	ld a, $1
+	call Function1ff8
+
+.asm_49f84
+	pop bc
+	call WhiteBGMap
+	call ClearTileMap
+	ld a, MUSIC_MAIN_MENU
+	ld [CurMusic], a
+	ld de, MUSIC_MAIN_MENU
+	call $66c5
+	ret
+
+.asm_49f97
+	ld hl, $cfa9
+	ld a, [hl]
+	dec a
+	ld hl, MobileStrings2
+	call GetNthString
+	ld d, h
+	ld e, l
+	ld hl, $c5a5
+	ld b, $4
+	ld c, $12
+	call ClearBox
+	ld hl, $c5b9
+	call PlaceString
+	jp .asm_49fb7
+
+.asm_49fb7
+	call $6071
+	pop bc
+	ld hl, $cfa9
+	ld [hl], b
+	ld b, $a
+	ld c, $1
+	ld hl, $c4b9
+	call ClearBox
+	jp .asm_49f55
+; 49fcc
+
+
+MobileString1: ; 49fcc
+	db "めいしフ,ルダー", $4e
+	db "あいさつ", $4e
+	db "プロフィール", $4e
+	db "せ", $1e, "い", $4e
+	db "もどる@"
+; 49fe9
+
+
+MobileStrings2:
+
+String_0x49fe9: ; 49fe9
+	db "めいし", $1f, "つくったり", $4e
+	db "ほぞんしておける フ,ルダーです@"
+; 4a004
+
+String_0x4a004: ; 4a004
+	db "モバイルたいせんや じぶんのめいしで", $4e
+	db "つかう あいさつ", $1f, "つくります@"
+; 4a026
+
+String_0x4a026: ; 4a026
+	db "あなた", $25, "じゅうしょや ねんれいの", $4e
+	db "せ", $1e, "い", $1f, "かえられます@"
+; 4a042
+
+String_0x4a042: ; 4a042
+	db "モバイルセンター", $1d, "せつぞくするとき", $4e
+	db "ひつような こと", $1f, "きめます@"
+; 4a062
+
+String_0x4a062: ; 4a062
+	db "まえ", $25, "がめん ", $1d, "もどります", $4e
+	db "@"
+; 4a071
+
+
+INCBIN "baserom.gbc", $4a071, $4a496 - $4a071
+
+
+MainMenu_MobileStudium: ; 4a496
+	ld a, [StartDay]
+	ld b, a
+	ld a, [StartHour]
+	ld c, a
+	ld a, [StartMinute]
+	ld d, a
+	ld a, [StartSecond]
+	ld e, a
+	push bc
+	push de
+	callba MobileStudium
+	call WhiteBGMap
+	pop de
+	pop bc
+	ld a, b
+	ld [StartDay], a
+	ld a, c
+	ld [StartHour], a
+	ld a, d
+	ld [StartMinute], a
+	ld a, e
+	ld [StartSecond], a
+	ret
+; 4a4c4
+
+
+INCBIN "baserom.gbc", $4a4c4, $4a6e8 - $4a4c4
+
+
 SpecialBeastsCheck: ; 0x4a6e8
 ; Check if the player owns all three legendary beasts.
 ; They must exist in either party or PC, and have the player's OT and ID.
@@ -14150,8 +50161,94 @@
 
 SECTION "bank13",ROMX,BANK[$13]
 
-INCBIN "baserom.gbc", $4c000, $4c075 - $4c000
+Function4c000: ; 4c000
+	ld hl, TileMap
+	ld de, AttrMap
+	ld b, $12
+.asm_4c008
+	push bc
+	ld c, $14
+.asm_4c00b
+	ld a, [hl]
+	push hl
+	srl a
+	jr c, .asm_4c021
+	ld hl, TileSetPalettes
+	add [hl]
+	ld l, a
+	ld a, [$d1e7]
+	adc $0
+	ld h, a
+	ld a, [hl]
+	and $f
+	jr .asm_4c031
 
+.asm_4c021
+	ld hl, TileSetPalettes
+	add [hl]
+	ld l, a
+	ld a, [$d1e7]
+	adc $0
+	ld h, a
+	ld a, [hl]
+	swap a
+	and $f
+
+.asm_4c031
+	pop hl
+	ld [de], a
+	res 7, [hl]
+	inc hl
+	inc de
+	dec c
+	jr nz, .asm_4c00b
+	pop bc
+	dec b
+	jr nz, .asm_4c008
+	ret
+; 4c03f
+
+Function4c03f: ; 4c03f
+	ld hl, BGMapBuffer
+	ld de, BGMapPalBuffer
+.asm_4c045
+	ld a, [hl]
+	push hl
+	srl a
+	jr c, .asm_4c05b
+	ld hl, TileSetPalettes
+	add [hl]
+	ld l, a
+	ld a, [$d1e7]
+	adc $0
+	ld h, a
+	ld a, [hl]
+	and $f
+	jr .asm_4c06b
+
+.asm_4c05b
+	ld hl, TileSetPalettes
+	add [hl]
+	ld l, a
+	ld a, [$d1e7]
+	adc $0
+	ld h, a
+	ld a, [hl]
+	swap a
+	and $f
+
+.asm_4c06b
+	pop hl
+	ld [de], a
+	res 7, [hl]
+	inc hl
+	inc de
+	dec c
+	jr nz, .asm_4c045
+	ret
+; 4c075
+
+
 Tileset03PalMap: ; 0x4c075
 INCBIN "tilesets/03_palette_map.bin"
 ; 0x4c0e5
@@ -14283,10 +50380,13 @@
 
 INCBIN "baserom.gbc", $4ce05, $4ce1f - $4ce05
 
-TileTypeTable: ; 4ce1f
-; 256 tiletypes
-; 00 = land
-; 01 = water
+TileCollisionTable: ; 4ce1f
+; 00 land
+; 01 water
+; 0f wall
+; 11 talkable water
+; 1f talkable wall
+
 	db $00, $00, $00, $00, $00, $00, $00, $0f
 	db $00, $00, $00, $00, $00, $00, $00, $0f
 	db $00, $00, $1f, $00, $00, $1f, $00, $00
@@ -14295,7 +50395,7 @@
 	db $01, $01, $11, $00, $11, $01, $01, $0f
 	db $01, $01, $01, $01, $01, $01, $01, $01
 	db $01, $01, $01, $01, $01, $01, $01, $01
-	
+
 	db $00, $00, $00, $00, $00, $00, $00, $00
 	db $00, $00, $00, $00, $00, $00, $00, $00
 	db $00, $00, $00, $00, $00, $00, $00, $00
@@ -14304,7 +50404,7 @@
 	db $00, $00, $0f, $00, $00, $00, $00, $00
 	db $00, $00, $00, $00, $00, $00, $00, $00
 	db $00, $00, $00, $00, $00, $00, $00, $00
-	
+
 	db $0f, $0f, $0f, $0f, $0f, $00, $00, $00
 	db $0f, $0f, $0f, $0f, $0f, $00, $00, $00
 	db $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f
@@ -14313,7 +50413,7 @@
 	db $00, $00, $00, $00, $00, $00, $00, $00
 	db $00, $00, $00, $00, $00, $00, $00, $00
 	db $00, $00, $00, $00, $00, $00, $00, $00
-	
+
 	db $01, $01, $01, $01, $01, $01, $01, $01
 	db $01, $01, $01, $01, $01, $01, $01, $01
 	db $00, $00, $00, $00, $00, $00, $00, $00
@@ -14324,8 +50424,594 @@
 	db $00, $00, $00, $00, $00, $00, $00, $0f
 ; 4cf1f
 
-INCBIN "baserom.gbc", $4cf1f, $4d596 - $4cf1f
+Function4cf1f: ; 4cf1f
+	ld a, $0
+	call Function4cf34
+	ld a, $1
+	call Function4cf34
+	ld a, $2
+	call Function4cf34
+	ld a, $3
+	call Function4cf34
+	ret
+; 4cf34
 
+Function4cf34: ; 4cf34
+	call GetSRAMBank
+	ld hl, $a000
+	ld bc, $2000
+	xor a
+	call ByteFill
+	call CloseSRAM
+	ret
+; 4cf45
+
+INCBIN "baserom.gbc", $4cf45, $4cffe - $4cf45
+
+
+Function4cffe: ; 4cffe
+	ld a, $1
+	call GetSRAMBank
+	ld a, [$a008]
+	ld b, a
+	ld a, [$ad0f]
+	ld c, a
+	call CloseSRAM
+	ld a, b
+	cp $63
+	jr nz, .asm_4d01b
+	ld a, c
+	cp $7f
+	jr nz, .asm_4d01b
+	ld c, $1
+	ret
+
+.asm_4d01b
+	ld c, $0
+	ret
+; 4d01e
+
+INCBIN "baserom.gbc", $4d01e, $4d15b - $4d01e
+
+
+Function4d15b: ; 4d15b
+	ld hl, EnemyMoveAnimation
+	ld a, [$d196]
+	and a
+	jr z, .asm_4d168
+	ld bc, $0030
+	add hl, bc
+
+.asm_4d168
+	ld a, [$d197]
+	and a
+	jr z, .asm_4d170
+	inc hl
+	inc hl
+
+.asm_4d170
+	ld de, TileMap
+	ld b, $12
+.asm_4d175
+	ld c, $14
+.asm_4d177
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec c
+	jr nz, .asm_4d177
+	ld a, l
+	add $4
+	ld l, a
+	jr nc, .asm_4d184
+	inc h
+
+.asm_4d184
+	dec b
+	jr nz, .asm_4d175
+	ret
+; 4d188
+
+Function4d188: ; 4d188
+	ld a, [hCGB]
+	and a
+	jp z, WaitBGMap
+	ld a, [$c2ce]
+	cp $0
+	jp z, WaitBGMap
+	ld a, [hBGMapMode]
+	push af
+	xor a
+	ld [hBGMapMode], a
+	ld a, [$ffde]
+	push af
+	xor a
+	ld [$ffde], a
+.asm_4d1a2
+	ld a, [rLY]
+	cp $8f
+	jr c, .asm_4d1a2
+	di
+	ld a, $1
+	ld [rVBK], a
+	ld hl, AttrMap
+	call Function4d1cb
+	ld a, $0
+	ld [rVBK], a
+	ld hl, TileMap
+	call Function4d1cb
+.asm_4d1bd
+	ld a, [rLY]
+	cp $8f
+	jr c, .asm_4d1bd
+	ei
+	pop af
+	ld [$ffde], a
+	pop af
+	ld [hBGMapMode], a
+	ret
+; 4d1cb
+
+Function4d1cb: ; 4d1cb
+	ld [hSPBuffer], sp
+	ld sp, hl
+	ld a, [$ffd7]
+	ld h, a
+	ld l, $0
+	ld a, $12
+	ld [$ffd3], a
+	ld b, $2
+	ld c, $41
+.asm_4d1dc
+	pop de
+.asm_4d1dd
+	ld a, [$ff00+c]
+	and b
+	jr nz, .asm_4d1dd
+	ld [hl], e
+	inc l
+	ld [hl], d
+	inc l
+	pop de
+.asm_4d1e6
+	ld a, [$ff00+c]
+	and b
+	jr nz, .asm_4d1e6
+	ld [hl], e
+	inc l
+	ld [hl], d
+	inc l
+	pop de
+.asm_4d1ef
+	ld a, [$ff00+c]
+	and b
+	jr nz, .asm_4d1ef
+	ld [hl], e
+	inc l
+	ld [hl], d
+	inc l
+	pop de
+.asm_4d1f8
+	ld a, [$ff00+c]
+	and b
+	jr nz, .asm_4d1f8
+	ld [hl], e
+	inc l
+	ld [hl], d
+	inc l
+	pop de
+.asm_4d201
+	ld a, [$ff00+c]
+	and b
+	jr nz, .asm_4d201
+	ld [hl], e
+	inc l
+	ld [hl], d
+	inc l
+	pop de
+.asm_4d20a
+	ld a, [$ff00+c]
+	and b
+	jr nz, .asm_4d20a
+	ld [hl], e
+	inc l
+	ld [hl], d
+	inc l
+	pop de
+.asm_4d213
+	ld a, [$ff00+c]
+	and b
+	jr nz, .asm_4d213
+	ld [hl], e
+	inc l
+	ld [hl], d
+	inc l
+	pop de
+.asm_4d21c
+	ld a, [$ff00+c]
+	and b
+	jr nz, .asm_4d21c
+	ld [hl], e
+	inc l
+	ld [hl], d
+	inc l
+	pop de
+.asm_4d225
+	ld a, [$ff00+c]
+	and b
+	jr nz, .asm_4d225
+	ld [hl], e
+	inc l
+	ld [hl], d
+	inc l
+	pop de
+.asm_4d22e
+	ld a, [$ff00+c]
+	and b
+	jr nz, .asm_4d22e
+	ld [hl], e
+	inc l
+	ld [hl], d
+	inc l
+	ld de, $000c
+	add hl, de
+	ld a, [$ffd3]
+	dec a
+	ld [$ffd3], a
+	jr nz, .asm_4d1dc
+	ld a, [hSPBuffer]
+	ld l, a
+	ld a, [$ffda]
+	ld h, a
+	ld sp, hl
+	ret
+; 4d249
+
+INCBIN "baserom.gbc", $4d249, $4d35b - $4d249
+
+
+Function4d35b: ; 4d35b
+	ld h, d
+	ld l, e
+	push bc
+	push hl
+	call Function4d37e
+	pop hl
+	pop bc
+	ld de, $0939
+	add hl, de
+	inc b
+	inc b
+	inc c
+	inc c
+	ld a, $7
+.asm_4d36e
+	push bc
+	push hl
+.asm_4d370
+	ld [hli], a
+	dec c
+	jr nz, .asm_4d370
+	pop hl
+	ld de, $0014
+	add hl, de
+	pop bc
+	dec b
+	jr nz, .asm_4d36e
+	ret
+; 4d37e
+
+Function4d37e: ; 4d37e
+	push hl
+	ld a, $76
+	ld [hli], a
+	inc a
+	call Function4d3ab
+	inc a
+	ld [hl], a
+	pop hl
+	ld de, $0014
+	add hl, de
+.asm_4d38d
+	push hl
+	ld a, $79
+	ld [hli], a
+	ld a, $7f
+	call Function4d3ab
+	ld [hl], $7a
+	pop hl
+	ld de, $0014
+	add hl, de
+	dec b
+	jr nz, .asm_4d38d
+	ld a, $7b
+	ld [hli], a
+	ld a, $7c
+	call Function4d3ab
+	ld [hl], $7d
+	ret
+; 4d3ab
+
+Function4d3ab: ; 4d3ab
+	ld d, c
+.asm_4d3ac
+	ld [hli], a
+	dec d
+	jr nz, .asm_4d3ac
+	ret
+; 4d3b1
+
+Function4d3b1: ; 4d3b1
+	ld a, $2
+	ld hl, $4000
+	rst FarCall
+	ld b, $8
+	call GetSGBLayout
+	call Functione51
+	call Functione5f
+	ld de, $0054
+	call StartMusic
+	ld hl, $5408
+	call PrintText
+	ld hl, $540d
+	call Function1d3c
+	call Function1d81
+	ret c
+	ld a, [$cfa9]
+	cp $1
+	ret z
+	call Function4d41e
+	jr c, .asm_4d3f7
+	ld a, $0
+	call GetSRAMBank
+	ld a, $80
+	ld [$ac60], a
+	call CloseSRAM
+	ld hl, $53fe
+	call PrintText
+	ret
+
+.asm_4d3f7
+	ld hl, $5403
+	call PrintText
+	ret
+; 4d3fe
+
+INCBIN "baserom.gbc", $4d3fe, $4d41e - $4d3fe
+
+Function4d41e: ; 4d41e
+	call Function4d50f
+	push de
+	ld hl, StringBuffer2
+	ld bc, $0005
+	xor a
+	call ByteFill
+	ld a, $4
+	ld [$d08b], a
+	ld hl, $5463
+	call PrintText
+.asm_4d437
+	call Function4d468
+.asm_4d43a
+	call Functiona57
+	ld a, [$ffa9]
+	ld b, a
+	and $1
+	jr nz, .asm_4d453
+	ld a, b
+	and $f0
+	jr z, .asm_4d43a
+	call Function4d490
+	ld c, $3
+	call DelayFrames
+	jr .asm_4d437
+
+.asm_4d453
+	call Function4d4e0
+	pop de
+	ld a, e
+	cp l
+	jr nz, .asm_4d461
+	ld a, d
+	cp h
+	jr nz, .asm_4d461
+	and a
+	ret
+
+.asm_4d461
+	scf
+	ret
+; 4d463
+
+INCBIN "baserom.gbc", $4d463, $4d468 - $4d463
+
+Function4d468: ; 4d468
+	ld hl, $c5da
+	ld de, StringBuffer2
+	ld c, $5
+.asm_4d470
+	ld a, [de]
+	add $f6
+	ld [hli], a
+	inc de
+	dec c
+	jr nz, .asm_4d470
+	ld hl, $c5ee
+	ld bc, $0005
+	ld a, $7f
+	call ByteFill
+	ld hl, $c5ee
+	ld a, [$d08b]
+	ld e, a
+	ld d, $0
+	add hl, de
+	ld [hl], $61
+	ret
+; 4d490
+
+Function4d490: ; 4d490
+	ld a, b
+	and $20
+	jr nz, .asm_4d4a5
+	ld a, b
+	and $10
+	jr nz, .asm_4d4af
+	ld a, b
+	and $40
+	jr nz, .asm_4d4ba
+	ld a, b
+	and $80
+	jr nz, .asm_4d4c8
+	ret
+
+.asm_4d4a5
+	ld a, [$d08b]
+	and a
+	ret z
+	dec a
+	ld [$d08b], a
+	ret
+
+.asm_4d4af
+	ld a, [$d08b]
+	cp $4
+	ret z
+	inc a
+	ld [$d08b], a
+	ret
+
+.asm_4d4ba
+	call Function4d4d5
+	ld a, [hl]
+	cp $9
+	jr z, .asm_4d4c5
+	inc a
+	ld [hl], a
+	ret
+
+.asm_4d4c5
+	ld [hl], $0
+	ret
+
+.asm_4d4c8
+	call Function4d4d5
+	ld a, [hl]
+	and a
+	jr z, .asm_4d4d2
+	dec a
+	ld [hl], a
+	ret
+
+.asm_4d4d2
+	ld [hl], $9
+	ret
+; 4d4d5
+
+Function4d4d5: ; 4d4d5
+	ld a, [$d08b]
+	ld e, a
+	ld d, $0
+	ld hl, StringBuffer2
+	add hl, de
+	ret
+; 4d4e0
+
+Function4d4e0: ; 4d4e0
+	ld hl, $0000
+	ld de, $d08a
+	ld bc, $0001
+	call $5501
+	ld bc, $000a
+	call $5501
+	ld bc, $0064
+	call $5501
+	ld bc, $03e8
+	call $5501
+	ld bc, $2710
+	ld a, [de]
+	dec de
+	push hl
+	ld hl, $0000
+	call AddNTimes
+	ld c, l
+	ld b, h
+	pop hl
+	add hl, bc
+	ret
+; 4d50f
+
+Function4d50f: ; 4d50f
+	ld a, $1
+	call GetSRAMBank
+	ld de, $0000
+	ld hl, $a009
+	ld c, $2
+	call Function4d533
+	ld hl, $a00b
+	ld c, $5
+	call Function4d53e
+	ld hl, $a3dc
+	ld c, $3
+	call Function4d533
+	call CloseSRAM
+	ret
+; 4d533
+
+Function4d533: ; 4d533
+.asm_4d533
+	ld a, [hli]
+	add e
+	ld e, a
+	ld a, $0
+	adc d
+	ld d, a
+	dec c
+	jr nz, .asm_4d533
+	ret
+; 4d53e
+
+Function4d53e: ; 4d53e
+.asm_4d53e
+	ld a, [hli]
+	cp $50
+	ret z
+	add e
+	ld e, a
+	ld a, $0
+	adc d
+	ld d, a
+	dec c
+	jr nz, .asm_4d53e
+	ret
+; 4d54c
+
+Function4d54c: ; 4d54c
+	ld a, $2
+	ld hl, $4000
+	rst FarCall
+	ld b, $8
+	call GetSGBLayout
+	call Functione51
+	call Functione5f
+	ld de, $0054
+	call StartMusic
+	ld hl, $5580
+	call PrintText
+	ld hl, $5585
+	call Function1d3c
+	call Function1d81
+	ret c
+	ld a, [$cfa9]
+	cp $1
+	ret z
+	ld a, $13
+	ld hl, $4f1f
+	rst FarCall
+	ret
+; 4d580
+
+INCBIN "baserom.gbc", $4d580, $4d596 - $4d580
+
 Tilesets:
 
 Tileset00: ; 0x4d596
@@ -14655,8 +51341,93 @@
 	ret
 ; 4d87a
 
-INCBIN "baserom.gbc", $4d87a, $4dc8a - $4d87a
+INCBIN "baserom.gbc", $4d87a, $4db3b - $4d87a
 
+
+Function4db3b: ; 4db3b
+	ld hl, $5b44
+	call PrintText
+	jp Function1dcf
+; 4db44
+
+INCBIN "baserom.gbc", $4db44, $4db49 - $4db44
+
+
+Function4db49: ; 4db49
+	ld a, [PartyCount]
+	dec a
+	ld hl, PartyMon1CaughtLevel
+	call GetPartyLocation
+	ld a, [TimeOfDay]
+	inc a
+	rrca
+	rrca
+	ld b, a
+	ld a, [CurPartyLevel]
+	or b
+	ld [hli], a
+	ld a, [MapGroup]
+	ld b, a
+	ld a, [MapNumber]
+	ld c, a
+	cp $1
+	jr nz, .asm_4db78
+	ld a, b
+	cp $14
+	jr nz, .asm_4db78
+	ld a, [BackupMapGroup]
+	ld b, a
+	ld a, [BackupMapNumber]
+	ld c, a
+
+.asm_4db78
+	call GetWorldMapLocation
+	ld b, a
+	ld a, [PlayerGender]
+	rrca
+	or b
+	ld [hl], a
+	ret
+; 4db83
+
+Function4db83: ; 4db83
+	ld a, $1
+	call GetSRAMBank
+	ld hl, $ad43
+	call $5b53
+	call CloseSRAM
+	ret
+; 4db92
+
+Function4db92: ; 4db92
+	push bc
+	ld a, $1
+	call GetSRAMBank
+	ld hl, $ad43
+	pop bc
+	call $5baf
+	call CloseSRAM
+	ret
+; 4dba3
+
+Function4dba3: ; 4dba3
+	ld a, [PartyCount]
+	dec a
+	ld hl, PartyMon1CaughtLevel
+	push bc
+	call GetPartyLocation
+	pop bc
+	xor a
+	ld [hli], a
+	ld a, $7e
+	rrc b
+	or b
+	ld [hl], a
+	ret
+; 4dbb8
+
+INCBIN "baserom.gbc", $4dbb8, $4dc8a - $4dbb8
+
 StatsScreenInit: ; 4dc8a
 	ld hl, StatsScreenMain
 	jr .gotaddress
@@ -14677,7 +51448,7 @@
 	push hl
 	call WhiteBGMap
 	call ClearTileMap
-	call $1ad2
+	call Function1ad2
 	ld a, $3e
 	ld hl, $753e
 	rst FarCall ; this loads graphics
@@ -14776,7 +51547,7 @@
 	ld de, FiveQMarkString
 	hlcoord 11, 5 ; $c50f
 	call PlaceString
-	ld a, [$d129] ; egg status
+	ld a, [TempMonHappiness] ; egg status
 	ld de, EggSoonString
 	cp $6
 	jr c, .picked
@@ -14792,10 +51563,10 @@
 	call PlaceString
 	ld hl, $cf64
 	set 5, [hl]
-	call $32f9 ; pals
-	call $045a
+	call Function32f9 ; pals
+	call DelayFrame
 	ld hl, TileMap
-	call $3786
+	call Function3786
 	ld a, $41
 	ld hl, $402d
 	rst FarCall
@@ -14829,19 +51600,838 @@
 
 ; 0x4e497
 
-INCBIN "baserom.gbc", $4e497, $4e831 - $4e497
+INCBIN "baserom.gbc", $4e497, $4e53f - $4e497
 
+
+Function4e53f: ; 4e53f
+	ld hl, $0022
+	add hl, bc
+	ld a, [hli]
+	or [hl]
+	jr z, .asm_4e552
+	ld hl, $0020
+	add hl, bc
+	ld a, [hl]
+	and $27
+	jr nz, .asm_4e552
+	and a
+	ret
+
+.asm_4e552
+	scf
+	ret
+; 4e554
+
+INCBIN "baserom.gbc", $4e554, $4e5e1 - $4e554
+
+
+Function4e5e1: ; 4e5e1
+	push hl
+	push de
+	push bc
+	ld a, [CurSpecies]
+	push af
+	ld a, [rOBP0]
+	push af
+	ld a, [BaseDexNo]
+	push af
+	call Function4e607
+	pop af
+	ld [BaseDexNo], a
+	pop af
+	ld [rOBP0], a
+	pop af
+	ld [CurSpecies], a
+	pop bc
+	pop de
+	pop hl
+	ld a, [$d1ed]
+	and a
+	ret z
+	scf
+	ret
+; 4e607
+
+Function4e607: ; 4e607
+	ld a, $e4
+	ld [rOBP0], a
+	ld de, $0000
+	call StartMusic
+	callba Function8cf53
+	ld de, $6831
+	ld hl, VTiles0
+	ld bc, $1308
+	call Request2bpp
+	xor a
+	ld [Danger], a
+	call WaitBGMap
+	xor a
+	ld [hBGMapMode], a
+	ld a, [MagikarpLength]
+	ld [PlayerHPPal], a
+	ld c, $0
+	call Function4e703
+	ld a, [MagikarpLength]
+	ld [CurPartySpecies], a
+	ld [CurSpecies], a
+	call Function4e708
+	ld de, VTiles2
+	ld hl, $9310
+	ld bc, $0031
+	call Request2bpp
+	ld a, $31
+	ld [$d1ec], a
+	call Function4e755
+	ld a, [Buffer2]
+	ld [CurPartySpecies], a
+	ld [CurSpecies], a
+	call Function4e711
+	ld a, [MagikarpLength]
+	ld [CurPartySpecies], a
+	ld [CurSpecies], a
+	ld a, $1
+	ld [hBGMapMode], a
+	call Function4e794
+	jr c, .asm_4e67c
+	ld a, [MagikarpLength]
+	call Function37ce
+
+.asm_4e67c
+	ld de, $0022
+	call StartMusic
+	ld c, $50
+	call DelayFrames
+	ld c, $1
+	call Function4e703
+	call Function4e726
+	jr c, .asm_4e6df
+	ld a, $cf
+	ld [$d1ec], a
+	call Function4e755
+	xor a
+	ld [$d1ed], a
+	ld a, [Buffer2]
+	ld [PlayerHPPal], a
+	ld c, $0
+	call Function4e703
+	call Function4e7a6
+	callba Function8cf53
+	call Function4e794
+	jr c, .asm_4e6de
+	ld a, [$c2c6]
+	push af
+	ld a, $1
+	ld [$c2c6], a
+	ld a, [CurPartySpecies]
+	push af
+	ld a, [PlayerHPPal]
+	ld [CurPartySpecies], a
+	ld hl, $c4cf
+	ld d, $0
+	ld e, $4
+	ld a, $47
+	call Predef
+	pop af
+	ld [CurPartySpecies], a
+	pop af
+	ld [$c2c6], a
+	ret
+
+.asm_4e6de
+	ret
+
+.asm_4e6df
+	ld a, $1
+	ld [$d1ed], a
+	ld a, [MagikarpLength]
+	ld [PlayerHPPal], a
+	ld c, $0
+	call Function4e703
+	call Function4e7a6
+	callba Function8cf53
+	call Function4e794
+	ret c
+	ld a, [PlayerHPPal]
+	call Function37ce
+	ret
+; 4e703
+
+Function4e703: ; 4e703
+	ld b, $b
+	jp GetSGBLayout
+; 4e708
+
+Function4e708: ; 4e708
+	call GetBaseData
+	ld hl, $c4cf
+	jp Function3786
+; 4e711
+
+Function4e711: ; 4e711
+	call GetBaseData
+	ld a, $1
+	ld [$c2c6], a
+	ld de, VTiles2
+	ld a, $3e
+	call Predef
+	xor a
+	ld [$c2c6], a
+	ret
+; 4e726
+
+Function4e726: ; 4e726
+	call ClearJoypadPublic
+	ld bc, $010e
+.asm_4e72c
+	push bc
+	call Function4e779
+	pop bc
+	jr c, .asm_4e73f
+	push bc
+	call Function4e741
+	pop bc
+	inc b
+	dec c
+	dec c
+	jr nz, .asm_4e72c
+	and a
+	ret
+
+.asm_4e73f
+	scf
+	ret
+; 4e741
+
+Function4e741: ; 4e741
+.asm_4e741
+	ld a, $cf
+	ld [$d1ec], a
+	call Function4e755
+	ld a, $31
+	ld [$d1ec], a
+	call Function4e755
+	dec b
+	jr nz, .asm_4e741
+	ret
+; 4e755
+
+Function4e755: ; 4e755
+	push bc
+	xor a
+	ld [hBGMapMode], a
+	ld hl, $c4cf
+	ld bc, $0707
+	ld de, $000d
+.asm_4e762
+	push bc
+.asm_4e763
+	ld a, [$d1ec]
+	add [hl]
+	ld [hli], a
+	dec c
+	jr nz, .asm_4e763
+	pop bc
+	add hl, de
+	dec b
+	jr nz, .asm_4e762
+	ld a, $1
+	ld [hBGMapMode], a
+	call WaitBGMap
+	pop bc
+	ret
+; 4e779
+
+Function4e779: ; 4e779
+.asm_4e779
+	call DelayFrame
+	push bc
+	call Functiona57
+	ld a, [hJoyDown]
+	pop bc
+	and $2
+	jr nz, .asm_4e78c
+.asm_4e787
+	dec c
+	jr nz, .asm_4e779
+	and a
+	ret
+
+.asm_4e78c
+	ld a, [$d1e9]
+	and a
+	jr nz, .asm_4e787
+	scf
+	ret
+; 4e794
+
+Function4e794: ; 4e794
+	ld a, [CurPartyMon]
+	ld hl, PartyMon1Species
+	call GetPartyLocation
+	ld b, h
+	ld c, l
+	ld a, $13
+	ld hl, $653f
+	rst FarCall
+	ret
+; 4e7a6
+
+Function4e7a6: ; 4e7a6
+	ld a, [$d1ed]
+	and a
+	ret nz
+	ld de, SFX_EVOLVED
+	call StartSFX
+	ld hl, $cf63
+	ld a, [hl]
+	push af
+	ld [hl], $0
+.asm_4e7b8
+	call Function4e7cf
+	jr nc, .asm_4e7c2
+	call Function4e80c
+	jr .asm_4e7b8
+
+.asm_4e7c2
+	ld c, $20
+.asm_4e7c4
+	call Function4e80c
+	dec c
+	jr nz, .asm_4e7c4
+	pop af
+	ld [$cf63], a
+	ret
+; 4e7cf
+
+Function4e7cf: ; 4e7cf
+	ld hl, $cf63
+	ld a, [hl]
+	cp $20
+	ret nc
+	ld d, a
+	inc [hl]
+	and $1
+	jr nz, .asm_4e7e6
+	ld e, $0
+	call Function4e7e8
+	ld e, $10
+	call Function4e7e8
+
+.asm_4e7e6
+	scf
+	ret
+; 4e7e8
+
+Function4e7e8: ; 4e7e8
+	push de
+	ld de, $4858
+	ld a, $13
+	call Function3b2a
+	ld hl, $000b
+	add hl, bc
+	ld a, [$cf63]
+	and $e
+	sla a
+	pop de
+	add e
+	ld [hl], a
+	ld hl, $0003
+	add hl, bc
+	ld [hl], $0
+	ld hl, $000c
+	add hl, bc
+	ld [hl], $10
+	ret
+; 4e80c
+
+Function4e80c: ; 4e80c
+	push bc
+	callab Function8cf69
+	ld a, [$ff9b]
+	and $e
+	srl a
+	inc a
+	inc a
+	and $7
+	ld b, a
+	ld hl, $c403
+	ld c, $28
+.asm_4e823
+	ld a, [hl]
+	or b
+	ld [hli], a
+	inc hl
+	inc hl
+	inc hl
+	dec c
+	jr nz, .asm_4e823
+	pop bc
+	call DelayFrame
+	ret
+; 4e831
+
+
 EvolutionGFX:
 INCBIN "gfx/evo/bubble_large.2bpp"
 INCBIN "gfx/evo/bubble.2bpp"
 
-INCBIN "baserom.gbc", $4e881, $4f31c - $4e881
+Function4e881: ; 4e881
+	call WhiteBGMap
+	call ClearTileMap
+	call ClearSprites
+	call DisableLCD
+	call $0e51
+	call $0e58
+	ld hl, VBGMap0
+	ld bc, VBlank5
+	ld a, $7f
+	call ByteFill
+	ld hl, AttrMap
+	ld bc, $0168
+	xor a
+	call ByteFill
+	xor a
+	ld [hSCY], a
+	ld [hSCX], a
+	call EnableLCD
+	ld hl, $68bd
+	call PrintText
+	call Function3200
+	call Function32f9
+	ret
+; 4e8bd
 
+INCBIN "baserom.gbc", $4e8bd, $4e8c2 - $4e8bd
 
+
+Function4e8c2: ; 4e8c2
+	call WhiteBGMap
+	call ClearTileMap
+	call ClearSprites
+	call DisableLCD
+	call $0e51
+	call $0e58
+	ld hl, VBGMap0
+	ld bc, VBlank5
+	ld a, $7f
+	call ByteFill
+	ld hl, AttrMap
+	ld bc, $0168
+	xor a
+	call ByteFill
+	ld hl, $d000
+	ld c, $40
+.asm_4e8ee
+	ld a, $ff
+	ld [hli], a
+	ld a, $7f
+	ld [hli], a
+	dec c
+	jr nz, .asm_4e8ee
+	xor a
+	ld [hSCY], a
+	ld [hSCX], a
+	call EnableLCD
+	call Function3200
+	call Function32f9
+	ret
+; 4e906
+
+Function4e906: ; 4e906
+	ld a, [rSVBK]
+	push af
+	ld a, $6
+	ld [rSVBK], a
+	ld hl, $d000
+	ld bc, VBlank5
+	ld a, $7f
+	call ByteFill
+	ld hl, VBGMap0
+	ld de, $d000
+	ld b, $0
+	ld c, $40
+	call Request2bpp
+	pop af
+	ld [rSVBK], a
+	ret
+; 4e929
+
+INCBIN "baserom.gbc", $4e929, $4e980 - $4e929
+
+
+Function4e980: ; 4e980
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	call Function4e998
+	ld a, $43
+	ld [hLCDStatCustom], a
+	call Function4e9ab
+	xor a
+	ld [hLCDStatCustom], a
+	pop af
+	ld [rSVBK], a
+	ret
+; 4e998
+
+Function4e998: ; 4e998
+	call Function4e9e5
+	ld a, $90
+	ld [hSCX], a
+	ld a, $e4
+	call DmgToCgbBGPals
+	ld de, $e4e4
+	call DmgToCgbObjPals
+	ret
+; 4e9ab
+
+Function4e9ab: ; 4e9ab
+	ld d, $90
+	ld e, $72
+	ld a, $48
+	inc a
+.asm_4e9b2
+	push af
+.asm_4e9b3
+	ld a, [rLY]
+	cp $60
+	jr c, .asm_4e9b3
+	ld a, d
+	ld [hSCX], a
+	call Function4e9f1
+	inc e
+	inc e
+	dec d
+	dec d
+	pop af
+	push af
+	cp $1
+	jr z, .asm_4e9ce
+	push de
+	call Function4e9d6
+	pop de
+
+.asm_4e9ce
+	call DelayFrame
+	pop af
+	dec a
+	jr nz, .asm_4e9b2
+	ret
+; 4e9d6
+
+Function4e9d6: ; 4e9d6
+	ld hl, $c401
+	ld c, $12
+	ld de, $0004
+.asm_4e9de
+	dec [hl]
+	dec [hl]
+	add hl, de
+	dec c
+	jr nz, .asm_4e9de
+	ret
+; 4e9e5
+
+Function4e9e5: ; 4e9e5
+	ld hl, $d100
+	ld a, $90
+	ld bc, $0090
+	call ByteFill
+	ret
+; 4e9f1
+
+Function4e9f1: ; 4e9f1
+	ld hl, $d100
+	ld a, d
+	ld c, $3e
+.asm_4e9f7
+	ld [hli], a
+	dec c
+	jr nz, .asm_4e9f7
+	ld a, e
+	ld c, $22
+.asm_4e9fe
+	ld [hli], a
+	dec c
+	jr nz, .asm_4e9fe
+	xor a
+	ld c, $30
+.asm_4ea05
+	ld [hli], a
+	dec c
+	jr nz, .asm_4ea05
+	ret
+; 4ea0a
+
+
+
+Function4ea0a: ; 4ea0a
+	ld a, c
+	push af
+	call SpeechTextBox
+	call MobileTextBorder
+	pop af
+	dec a
+	ld bc, $000c
+	ld hl, $dc1a
+	call AddNTimes
+	ld de, $cd53
+	ld bc, $000c
+	ld a, $5
+	call Function306b
+	ld a, [rSVBK]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+	ld bc, $cd53
+	ld de, $c5b9
+	ld a, $47
+	ld hl, $40c6
+	rst FarCall
+	pop af
+	ld [rSVBK], a
+	ld c, $b4
+	call DelayFrames
+	ret
+; 4ea44
+
+
+
+Function4ea44: ; 4ea44
+	ld a, $0
+	ld hl, InLinkBattle
+	call Function307b
+	cp $4
+	jr z, .asm_4ea59
+	ld a, [Options]
+	bit 7, a
+	jr nz, .asm_4ea80
+	and a
+	ret
+
+.asm_4ea59
+	ld a, [$cd2f]
+	and a
+	jr nz, .asm_4ea72
+	ld a, $4
+	call GetSRAMBank
+	ld a, [$a60c]
+	ld c, a
+	call CloseSRAM
+	ld a, c
+	bit 0, c
+	jr z, .asm_4ea80
+	and a
+	ret
+
+.asm_4ea72
+	ld a, $5
+	ld hl, $dc00
+	call Function307b
+	bit 0, a
+	jr z, .asm_4ea80
+	and a
+	ret
+
+.asm_4ea80
+	scf
+	ret
+; 4ea82
+
+
+
+Function4ea82: ; 4ea82
+	ld a, [hCGB]
+	and a
+	ret nz
+	ld de, $0000
+	call StartMusic
+	call ClearTileMap
+	ld hl, $6b76
+	ld de, $d000
+	ld a, [rSVBK]
+	push af
+	ld a, $0
+	ld [rSVBK], a
+	call Decompress
+	pop af
+	ld [rSVBK], a
+	ld de, $d000
+	ld hl, VTiles2
+	ld bc, Text_1354
+	call Get2bpp
+	ld de, $4200
+	ld hl, VTiles1
+	ld bc, Function3e80
+	call Get1bpp
+	call Function4eac5
+	call WaitBGMap
+.asm_4eac0
+	call DelayFrame
+	jr .asm_4eac0
+; 4eac5
+
+Function4eac5: ; 4eac5
+	call Function4eaea
+	ld hl, $c4cb
+	ld b, $e
+	ld c, $4
+	ld a, $8
+	call Function4eb27
+	ld hl, $c51d
+	ld b, $a
+	ld c, $2
+	ld a, $40
+	call Function4eb27
+	ld de, $6b38
+	ld hl, $c569
+	call PlaceString
+	ret
+; 4eaea
+
+Function4eaea: ; 4eaea
+	ld hl, TileMap
+	ld [hl], $0
+	inc hl
+	ld a, $1
+	call Function4eb15
+	ld [hl], $2
+	ld hl, $c4b4
+	ld a, $3
+	call Function4eb1c
+	ld hl, $c4c7
+	ld a, $4
+	call Function4eb1c
+	ld hl, $c5f4
+	ld [hl], $5
+	inc hl
+	ld a, $6
+	call Function4eb15
+	ld [hl], $7
+	ret
+; 4eb15
+
+Function4eb15: ; 4eb15
+	ld c, $12
+.asm_4eb17
+	ld [hli], a
+	dec c
+	jr nz, .asm_4eb17
+	ret
+; 4eb1c
+
+Function4eb1c: ; 4eb1c
+	ld de, $0014
+	ld c, $10
+.asm_4eb21
+	ld [hl], a
+	add hl, de
+	dec c
+	jr nz, .asm_4eb21
+	ret
+; 4eb27
+
+Function4eb27: ; 4eb27
+	ld de, $0014
+.asm_4eb2a
+	push bc
+	push hl
+.asm_4eb2c
+	ld [hli], a
+	inc a
+	dec b
+	jr nz, .asm_4eb2c
+	pop hl
+	add hl, de
+	pop bc
+	dec c
+	jr nz, .asm_4eb2a
+	ret
+; 4eb38
+
+INCBIN "baserom.gbc", $4eb38, $4f301 - $4eb38
+
+
+Function4f301: ; 4f301
+	ld hl, $001e
+	add hl, bc
+	ld a, [hl]
+	and $7f
+	jr z, .asm_4f319
+	cp $7f
+	jr z, .asm_4f319
+	ld a, [hl]
+	and $80
+	jr nz, .asm_4f316
+	ld c, $1
+	ret
+
+.asm_4f316
+	ld c, $2
+	ret
+
+.asm_4f319
+	ld c, $0
+	ret
+; 4f31c
+
+
+
 SECTION "bank14",ROMX,BANK[$14]
 
-INCBIN "baserom.gbc", $50000, $5005f-$50000
+Function50000: ; 50000
+	call Function2ed3
+	xor a
+	ld [PartyMenuActionText], a
+	call WhiteBGMap
+	call Function5003f
+	call WaitBGMap
+	call Function32f9
+	call DelayFrame
+	call PartyMenuSelect
+	call Function2b74
+	ret
+; 5001d
 
+
+Function5001d: ; 5001d
+	ld a, b
+	ld [PartyMenuActionText], a
+	call Function2ed3
+	call WhiteBGMap
+	call Function5003f
+	call WaitBGMap
+	ld b, $a
+	call GetSGBLayout
+	call Function32f9
+	call DelayFrame
+	call PartyMenuSelect
+	call Function2b74
+	ret
+; 5003f
+
+Function5003f: ; 5003f
+	call Function5004f
+	call Function50405
+	call Function503e0
+	call WritePartyMenuTilemap
+	call PrintPartyMenuText
+	ret
+; 5004f
+
+Function5004f: ; 5004f
+	call $0e58
+	ld hl, $4ad1
+	ld a, $2
+	rst FarCall
+	ld hl, $6814
+	ld a, $23
+	rst FarCall
+	ret
+; 5005f
+
+
 WritePartyMenuTilemap: ; 0x5005f
 	ld hl, Options
 	ld a, [hl]
@@ -14853,7 +52443,7 @@
 	ld bc, $0168
 	ld a, " "
 	call ByteFill ; blank the tilemap
-	call $4396 ; This reads from a pointer table???
+	call Function50396 ; This reads from a pointer table???
 .asm_50077
 	ld a, [hli]
 	cp $ff
@@ -14869,12 +52459,538 @@
 	ret
 ; 0x50089
 
-INCBIN "baserom.gbc", $50089, $50457-$50089
+INCBIN "baserom.gbc", $50089, $500cf - $50089
 
+
+Function500cf: ; 500cf
+	xor a
+	ld [$cda9], a
+	ld a, [PartyCount]
+	and a
+	ret z
+	ld c, a
+	ld b, $0
+	ld hl, $c4d3
+.asm_500de
+	push bc
+	push hl
+	call Function50389
+	jr z, .asm_50103
+	push hl
+	call Function50117
+	pop hl
+	ld d, $6
+	ld b, $0
+	call DrawHPBar
+	ld hl, $cd9b
+	ld a, [$cda9]
+	ld c, a
+	ld b, $0
+	add hl, bc
+	call SetHPPal
+	ld b, $fc
+	call GetSGBLayout
+
+.asm_50103
+	ld hl, $cda9
+	inc [hl]
+	pop hl
+	ld de, $0028
+	add hl, de
+	pop bc
+	inc b
+	dec c
+	jr nz, .asm_500de
+	ld b, $a
+	call GetSGBLayout
+	ret
+; 50117
+
+Function50117: ; 50117
+	ld a, b
+	ld bc, $0030
+	ld hl, PartyMon1CurHP
+	call AddNTimes
+	ld a, [hli]
+	or [hl]
+	jr nz, .asm_50129
+	xor a
+	ld e, a
+	ld c, a
+	ret
+
+.asm_50129
+	dec hl
+	ld a, [hli]
+	ld b, a
+	ld a, [hli]
+	ld c, a
+	ld a, [hli]
+	ld d, a
+	ld a, [hli]
+	ld e, a
+	ld a, $4
+	call Predef
+	ret
+; 50138
+
+Function50138: ; 50138
+	ld a, [PartyCount]
+	and a
+	ret z
+	ld c, a
+	ld b, $0
+	ld hl, $c4c1
+.asm_50143
+	push bc
+	push hl
+	call Function50389
+	jr z, .asm_5016b
+	push hl
+	ld a, b
+	ld bc, $0030
+	ld hl, PartyMon1CurHP
+	call AddNTimes
+	ld e, l
+	ld d, h
+	pop hl
+	push de
+	ld bc, $0203
+	call PrintNum
+	pop de
+	ld a, $f3
+	ld [hli], a
+	inc de
+	inc de
+	ld bc, $0203
+	call PrintNum
+
+.asm_5016b
+	pop hl
+	ld de, $0028
+	add hl, de
+	pop bc
+	inc b
+	dec c
+	jr nz, .asm_50143
+	ret
+; 50176
+
+Function50176: ; 50176
+	ld a, [PartyCount]
+	and a
+	ret z
+	ld c, a
+	ld b, $0
+	ld hl, $c4d0
+.asm_50181
+	push bc
+	push hl
+	call Function50389
+	jr z, .asm_501a7
+	push hl
+	ld a, b
+	ld bc, $0030
+	ld hl, PartyMon1Level
+	call AddNTimes
+	ld e, l
+	ld d, h
+	pop hl
+	ld a, [de]
+	cp $64
+	jr nc, .asm_501a1
+	ld a, $6e
+	ld [hli], a
+	ld bc, $4102
+
+.asm_501a1
+	ld bc, $4103
+	call PrintNum
+
+.asm_501a7
+	pop hl
+	ld de, $0028
+	add hl, de
+	pop bc
+	inc b
+	dec c
+	jr nz, .asm_50181
+	ret
+; 501b2
+
+Function501b2: ; 501b2
+	ld a, [PartyCount]
+	and a
+	ret z
+	ld c, a
+	ld b, $0
+	ld hl, $c4cd
+.asm_501bd
+	push bc
+	push hl
+	call Function50389
+	jr z, .asm_501d5
+	push hl
+	ld a, b
+	ld bc, $0030
+	ld hl, PartyMon1Status
+	call AddNTimes
+	ld e, l
+	ld d, h
+	pop hl
+	call Function50d0a
+
+.asm_501d5
+	pop hl
+	ld de, $0028
+	add hl, de
+	pop bc
+	inc b
+	dec c
+	jr nz, .asm_501bd
+	ret
+; 501e0
+
+Function501e0: ; 501e0
+	ld a, [PartyCount]
+	and a
+	ret z
+	ld c, a
+	ld b, $0
+	ld hl, $c4d4
+.asm_501eb
+	push bc
+	push hl
+	call Function50389
+	jr z, .asm_5020a
+	push hl
+	ld hl, PartySpecies
+	ld e, b
+	ld d, $0
+	add hl, de
+	ld a, [hl]
+	ld [CurPartySpecies], a
+	ld a, $e
+	call Predef
+	pop hl
+	call Function50215
+	call PlaceString
+
+.asm_5020a
+	pop hl
+	ld de, $0028
+	add hl, de
+	pop bc
+	inc b
+	dec c
+	jr nz, .asm_501eb
+	ret
+; 50215
+
+Function50215: ; 50215
+	ld a, c
+	and a
+	jr nz, .asm_5021d
+	ld de, $4226
+	ret
+
+.asm_5021d
+	ld de, $4221
+	ret
+; 50221
+
+INCBIN "baserom.gbc", $50221, $5022f - $50221
+
+
+Function5022f: ; 5022f
+	ld a, [PartyCount]
+	and a
+	ret z
+	ld c, a
+	ld b, $0
+	ld hl, $c4d4
+.asm_5023a
+	push bc
+	push hl
+	call Function50389
+	jr z, .asm_5025d
+	push hl
+	ld a, b
+	ld bc, $0030
+	ld hl, PartyMon1Species
+	call AddNTimes
+	ld a, [hl]
+	dec a
+	ld e, a
+	ld d, $0
+	ld hl, $65b1
+	add hl, de
+	add hl, de
+	call Function50268
+	pop hl
+	call PlaceString
+
+.asm_5025d
+	pop hl
+	ld de, $0028
+	add hl, de
+	pop bc
+	inc b
+	dec c
+	jr nz, .asm_5023a
+	ret
+; 50268
+
+Function50268: ; 50268
+	ld de, StringBuffer1
+	ld a, $10
+	ld bc, $0002
+	call FarCopyBytes
+	ld hl, StringBuffer1
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, StringBuffer1
+	ld a, $10
+	ld bc, $000a
+	call FarCopyBytes
+	ld hl, StringBuffer1
+.asm_50287
+	ld a, [hli]
+	and a
+	jr z, .asm_5029f
+	inc hl
+	inc hl
+	cp $2
+	jr nz, .asm_50287
+	dec hl
+	dec hl
+	ld a, [CurItem]
+	cp [hl]
+	inc hl
+	inc hl
+	jr nz, .asm_50287
+	ld de, $42a3
+	ret
+
+.asm_5029f
+	ld de, $42a8
+	ret
+; 502a3
+
+INCBIN "baserom.gbc", $502a3, $502b1 - $502a3
+
+
+Function502b1: ; 502b1
+	ld a, [PartyCount]
+	and a
+	ret z
+	ld c, a
+	ld b, $0
+	ld hl, $c4d4
+.asm_502bc
+	push bc
+	push hl
+	call Function50389
+	jr z, .asm_502e3
+	ld [CurPartySpecies], a
+	push hl
+	ld a, b
+	ld [CurPartyMon], a
+	xor a
+	ld [MonType], a
+	call GetGender
+	ld de, $42fe
+	jr c, .asm_502df
+	ld de, $42ee
+	jr nz, .asm_502df
+	ld de, $42f5
+
+.asm_502df
+	pop hl
+	call PlaceString
+
+.asm_502e3
+	pop hl
+	ld de, $0028
+	add hl, de
+	pop bc
+	inc b
+	dec c
+	jr nz, .asm_502bc
+	ret
+; 502ee
+
+INCBIN "baserom.gbc", $502ee, $50307 - $502ee
+
+
+Function50307: ; 50307
+	ld a, [PartyCount]
+	and a
+	ret z
+	ld c, a
+	ld b, $0
+	ld hl, $c4c0
+.asm_50312
+	push bc
+	push hl
+	ld de, $4372
+	call PlaceString
+	pop hl
+	ld de, $0028
+	add hl, de
+	pop bc
+	inc b
+	dec c
+	jr nz, .asm_50312
+	ld a, l
+	ld e, $b
+	sub e
+	ld l, a
+	ld a, h
+	sbc $0
+	ld h, a
+	ld de, $4379
+	call PlaceString
+	ld b, $3
+	ld c, $0
+	ld hl, DefaultFlypoint
+	ld a, [hl]
+.asm_5033b
+	push hl
+	push bc
+	ld hl, $c4c0
+.asm_50340
+	and a
+	jr z, .asm_5034a
+	ld de, $0028
+	add hl, de
+	dec a
+	jr .asm_50340
+
+.asm_5034a
+	ld de, $436b
+	push hl
+	call PlaceString
+	pop hl
+	pop bc
+	push bc
+	push hl
+	ld a, c
+	ld hl, $4383
+	call GetNthString
+	ld d, h
+	ld e, l
+	pop hl
+	call PlaceString
+	pop bc
+	pop hl
+	inc hl
+	ld a, [hl]
+	inc c
+	dec b
+	ret z
+	jr .asm_5033b
+; 5036b
+
+INCBIN "baserom.gbc", $5036b, $50389 - $5036b
+
+
+Function50389: ; 50389
+	ld a, $d8
+	add b
+	ld e, a
+	ld a, $dc
+	adc $0
+	ld d, a
+	ld a, [de]
+	cp $fd
+	ret
+; 50396
+
+Function50396: ; 50396
+	ld a, [PartyMenuActionText]
+	and $f0
+	jr nz, .asm_503ae
+	ld a, [PartyMenuActionText]
+	and $f
+	ld e, a
+	ld d, $0
+	ld hl, $43b2
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ret
+
+.asm_503ae
+	ld hl, $43c6
+	ret
+; 503b2
+
+INCBIN "baserom.gbc", $503b2, $503e0 - $503b2
+
+
+Function503e0: ; 503e0
+	ld hl, PartyCount
+	ld a, [hli]
+	and a
+	ret z
+	ld c, a
+	xor a
+	ld [hConnectedMapWidth], a
+.asm_503ea
+	push bc
+	push hl
+	ld hl, $683f
+	ld a, $23
+	ld e, $0
+	rst FarCall
+	ld a, [hConnectedMapWidth]
+	inc a
+	ld [hConnectedMapWidth], a
+	pop hl
+	pop bc
+	dec c
+	jr nz, .asm_503ea
+	callab Function8cf69
+	ret
+; 50405
+
+Function50405: ; 50405
+	xor a
+	ld [$d0e3], a
+	ld de, $444f
+	call Function1bb1
+	ld a, [PartyCount]
+	inc a
+	ld [$cfa3], a
+	dec a
+	ld b, a
+	ld a, [$d0d8]
+	and a
+	jr z, .asm_50422
+	inc b
+	cp b
+	jr c, .asm_50424
+
+.asm_50422
+	ld a, $1
+
+.asm_50424
+	ld [$cfa9], a
+	ld a, $3
+	ld [$cfa8], a
+	ret
+; 5042d
+
+INCBIN "baserom.gbc", $5042d, $50457 - $5042d
+
 PartyMenuSelect: ; 0x50457
 ; sets carry if exitted menu.
-	call $1bc9
-	call $1bee
+	call Function1bc9
+	call Function1bee
 	ld a, [PartyCount]
 	inc a
 	ld b, a
@@ -14975,9 +53091,633 @@
     db "You have no ", $e1, $e2, "!@"
 
 
-INCBIN "baserom.gbc", $50566, $5093a - $50566
+Function50566: ; 50566
+	ld a, [CurPartyMon]
+	ld hl, PartyMon1Nickname
+	call GetNick
+	ld a, [PartyMenuActionText]
+	and $f
+	ld hl, $457b
+	call Function505c1
+	ret
+; 5057b
 
+INCBIN "baserom.gbc", $5057b, $505c1 - $5057b
 
+
+Function505c1: ; 505c1
+	ld e, a
+	ld d, $0
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [Options]
+	push af
+	set 4, a
+	ld [Options], a
+	call PrintText
+	pop af
+	ld [Options], a
+	ret
+; 505da
+
+Function505da: ; 505da
+	ld a, [PartyCount]
+	and a
+	jr z, .asm_5062c
+	xor a
+	ld c, 7
+	ld hl, EngineBuffer1
+.asm_505e6
+	ld [hli], a
+	dec c
+	jr nz, .asm_505e6
+	xor a
+	ld [CurPartyMon], a
+.asm_505ee
+	call Function5062e
+	jr nc, .asm_50605
+	ld a, [CurPartyMon]
+	ld e, a
+	ld d, 0
+	ld hl, CurFruit
+	add hl, de
+	ld [hl], c
+	ld a, [EngineBuffer1]
+	or c
+	ld [EngineBuffer1], a
+
+.asm_50605
+	ld a, [PartyCount]
+	ld hl, CurPartyMon
+	inc [hl]
+	cp [hl]
+	jr nz, .asm_505ee
+	ld a, [EngineBuffer1]
+	and $2
+	jr nz, .asm_50622
+	ld a, [EngineBuffer1]
+	and $1
+	jr z, .asm_5062c
+	call Function50658
+	xor a
+	ret
+
+.asm_50622
+	ld a, $14
+	ld hl, UnknownScript_0x50669
+	call PushScriptPointer
+	scf
+	ret
+
+.asm_5062c
+	xor a
+	ret
+; 5062e
+
+Function5062e: ; 5062e
+	ld a, $20
+	call GetPartyParamLocation
+	ld a, [hl]
+	and $8
+	ret z
+	ld a, $22
+	call GetPartyParamLocation
+	ld a, [hli]
+	ld b, a
+	ld c, [hl]
+	or c
+	ret z
+	dec bc
+	ld [hl], c
+	dec hl
+	ld [hl], b
+	ld a, b
+	or c
+	jr nz, .asm_50654
+	ld a, $20
+	call GetPartyParamLocation
+	ld [hl], $0
+	ld c, $2
+	scf
+	ret
+
+.asm_50654
+	ld c, $1
+	scf
+	ret
+; 50658
+
+Function50658: ; 50658
+	ld de, SFX_POISON
+	call StartSFX
+	ld b, $2
+	ld a, $2e
+	call Predef
+	call DelayFrame
+	ret
+; 50669
+
+UnknownScript_0x50669: ; 50669
+	3callasm BANK(Function50658), Function50658
+	loadfont
+	3callasm BANK(Function5067b), Function5067b
+	iffalse UnknownScript_0x50677
+	loadmovesprites
+	end
+; 50677
+
+UnknownScript_0x50677: ; 50677
+	3jump BANK(UnknownScript_0x124c8), UnknownScript_0x124c8
+; 5067b
+
+Function5067b: ; 5067b
+	xor a
+	ld [CurPartyMon], a
+	ld de, CurFruit
+.asm_50682
+	push de
+	ld a, [de]
+	and 2
+	jr z, .asm_5069c
+	ld c, 7
+	callba ChangeHappiness
+	callba GetPartyNick
+	ld hl, PoisonFaintText
+	call PrintText
+
+.asm_5069c
+	pop de
+	inc de
+	ld hl, CurPartyMon
+	inc [hl]
+	ld a, [PartyCount]
+	cp [hl]
+	jr nz, .asm_50682
+	ld a, $14
+	call Predef
+	ld a, d
+	ld [ScriptVar], a
+	ret
+; 506b2
+
+PoisonFaintText: ; 506b2
+	text_jump UnknownText_0x1c0acc, BANK(UnknownText_0x1c0acc)
+	db "@"
+; 506b7
+
+PoisonWhiteOutText: ; 506b7
+	text_jump UnknownText_0x1c0ada, BANK(UnknownText_0x1c0ada)
+	db "@"
+; 506bc
+
+
+Function506bc: ; 506bc
+	ld hl, UnknownScript_0x506c8
+	call Function31cd
+	ld a, $1
+	ld [$d0ec], a
+	ret
+; 506c8
+
+UnknownScript_0x506c8: ; 0x506c8
+	reloadmappart
+	special $0035
+	3callasm $03, $4706
+	2writetext UnknownText_0x50726
+	closetext
+	3callasm BANK(Function506ef), Function506ef
+	iffalse UnknownScript_0x506e9
+	checkbit2 $0011
+	iftrue UnknownScript_0x506e5
+	battlecheck
+	startbattle
+	returnafterbattle
+	end
+; 0x506e5
+
+UnknownScript_0x506e5: ; 0x506e5
+	3jump BANK(UnknownScript_0x135eb), UnknownScript_0x135eb
+; 0x506e9
+
+UnknownScript_0x506e9: ; 0x506e9
+	2writetext UnknownText_0x5072b
+	closetext
+	loadmovesprites
+	end
+; 0x506ef
+
+Function506ef: ; 506ef
+	callba Function97cfd
+	jr nc, .asm_5071e
+	ld hl, StatusFlags2
+	bit 2, [hl]
+	jr nz, .asm_50712
+	ld a, $a
+	ld hl, $6111
+	rst FarCall
+	ld a, b
+	and a
+	jr z, .asm_5071e
+	ld a, $a
+	ld hl, $614f
+	rst FarCall
+	jr nz, .asm_5071e
+	jr .asm_50718
+
+.asm_50712
+	callba Function97d31
+
+.asm_50718
+	ld a, $1
+	ld [ScriptVar], a
+	ret
+
+.asm_5071e
+	xor a
+	ld [ScriptVar], a
+	ld [BattleType], a
+	ret
+; 50726
+
+UnknownText_0x50726: ; 0x50726
+	text_jump UnknownText_0x1c0b03, BANK(UnknownText_0x1c0b03)
+	db $50
+; 0x5072b
+
+UnknownText_0x5072b: ; 0x5072b
+	text_jump UnknownText_0x1c0b1a, BANK(UnknownText_0x1c0b1a)
+	db $50
+; 0x50730
+
+
+_Squirtbottle: ; 50730
+	ld hl, UnknownScript_0x5073c
+	call Function31cd
+	ld a, $1
+	ld [$d0ec], a
+	ret
+; 5073c
+
+UnknownScript_0x5073c: ; 0x5073c
+	reloadmappart
+	special $0035
+	3callasm BANK(Function50753), Function50753
+	iffalse UnknownScript_0x5074b
+	3jump BANK(WateredWeirdTreeScript), WateredWeirdTreeScript
+; 0x5074b
+
+UnknownScript_0x5074b: ; 0x5074b
+	jumptext UnknownText_0x5074e
+; 0x5074e
+
+UnknownText_0x5074e: ; 0x5074e
+	text_jump UnknownText_0x1c0b3b, BANK(UnknownText_0x1c0b3b)
+	db $50
+; 0x50753
+
+Function50753: ; 50753
+	ld a, [MapGroup]
+	cp GROUP_ROUTE_36
+	jr nz, .asm_50774
+
+	ld a, [MapNumber]
+	cp MAP_ROUTE_36
+	jr nz, .asm_50774
+
+	callba Functioncf0d
+	jr c, .asm_50774
+
+	ld a, d
+	cp 23
+	jr nz, .asm_50774
+
+	ld a, $1
+	ld [ScriptVar], a
+	ret
+
+.asm_50774
+	xor a
+	ld [ScriptVar], a
+	ret
+; 50779
+
+
+_CardKey: ; 50779
+	ld a, [MapGroup]
+	cp GROUP_RADIO_TOWER_3F
+	jr nz, .asm_507a9
+
+	ld a, [MapNumber]
+	cp MAP_RADIO_TOWER_3F
+	jr nz, .asm_507a9
+
+	ld a, [PlayerDirection]
+	and $c
+	cp UP << 2
+	jr nz, .asm_507a9
+
+	call GetFacingTileCoord
+	ld a, d
+	cp 18
+	jr nz, .asm_507a9
+	ld a, e
+	cp 6
+	jr nz, .asm_507a9
+
+	ld hl, UnknownScript_0x507af
+	call Function31cd
+	ld a, $1
+	ld [$d0ec], a
+	ret
+
+.asm_507a9
+	ld a, $0
+	ld [$d0ec], a
+	ret
+; 507af
+
+UnknownScript_0x507af: ; 0x507af
+	loadmovesprites
+	3jump BANK(MapRadioTower3FSignpost2Script), MapRadioTower3FSignpost2Script
+; 0x507b4
+
+
+_BasementKey: ; 507b4
+	ld a, [MapGroup]
+	cp GROUP_WAREHOUSE_ENTRANCE
+	jr nz, .asm_507db
+
+	ld a, [MapNumber]
+	cp MAP_WAREHOUSE_ENTRANCE
+	jr nz, .asm_507db
+
+	call GetFacingTileCoord
+	ld a, d
+	cp 22
+	jr nz, .asm_507db
+	ld a, e
+	cp 10
+	jr nz, .asm_507db
+
+	ld hl, UnknownScript_0x507e1
+	call Function31cd
+	ld a, $1
+	ld [$d0ec], a
+	ret
+
+.asm_507db
+	ld a, $0
+	ld [$d0ec], a
+	ret
+; 507e1
+
+UnknownScript_0x507e1: ; 0x507e1
+	loadmovesprites
+	3jump BANK(MapWarehouseEntranceSignpost0Script), MapWarehouseEntranceSignpost0Script
+; 0x507e6
+
+
+_SacredAsh: ; 507e6
+	ld a, $0
+	ld [$d0ec], a
+	call CheckAnyFaintedMon
+	ret nc
+
+	ld hl, UnknownScript_0x50821
+	call Function31cd
+	ld a, $1
+	ld [$d0ec], a
+	ret
+; 507fb
+
+CheckAnyFaintedMon: ; 507fb
+	ld de, PartyMon2 - PartyMon1
+	ld bc, PartySpecies
+	ld hl, PartyMon1CurHP
+	ld a, [PartyCount]
+	and a
+	ret z
+
+.loop
+	push af
+	push hl
+	ld a, [bc]
+	inc bc
+	cp EGG
+	jr z, .next
+
+	ld a, [hli]
+	or [hl]
+	jr z, .asm_5081d
+
+.next
+	pop hl
+	add hl, de
+	pop af
+	dec a
+	jr nz, .loop
+	xor a
+	ret
+
+.asm_5081d
+	pop hl
+	pop af
+	scf
+	ret
+; 50821
+
+UnknownScript_0x50821: ; 0x50821
+	special $001b
+	reloadmappart
+	playsound SFX_WARP_TO
+	special $002e
+	special $0031
+	special $002e
+	special $0031
+	special $002e
+	special $0031
+	waitbutton
+	2writetext UnknownText_0x50845
+	playsound SFX_CAUGHT_MON
+	waitbutton
+	closetext
+	loadmovesprites
+	end
+; 0x50845
+
+UnknownText_0x50845: ; 0x50845
+	text_jump UnknownText_0x1c0b65, BANK(UnknownText_0x1c0b65)
+	db $50
+; 0x5084a
+
+Function5084a: ; 5084a
+	ld a, [CurPartyMon]
+	ld e, a
+	call Function508d5
+	ld a, [CurPartySpecies]
+	ld [CurSpecies], a
+	call GetBaseData
+
+	ld a, [MonType]
+	ld hl, PartyMon1Species
+	ld bc, PartyMon2 - PartyMon1
+	and a
+	jr z, .asm_5087b
+	ld hl, OTPartyMon1Species
+	ld bc, OTPartyMon2 - OTPartyMon1
+	cp $1
+	jr z, .asm_5087b
+	ld bc, $0020
+	ld hl, $65bb
+	ld a, $3
+	rst FarCall
+	jr .asm_5088a
+
+.asm_5087b
+	ld a, [CurPartyMon]
+	call AddNTimes
+	ld de, TempMonSpecies
+	ld bc, $0030
+	call CopyBytes
+
+.asm_5088a
+	ret
+; 5088b
+
+
+Function5088b: ; 5088b
+	ld bc, $d018
+	jr Function50893
+; 50890
+
+Function50890: ; 50890
+	ld bc, TempMon
+	; fallthrough
+; 50893
+
+Function50893: ; 50893
+	ld hl, TempMonLevel - TempMon
+	add hl, bc
+	ld a, [hl]
+	ld [CurPartyLevel], a
+	ld hl, TempMonMaxHP - TempMon
+	add hl, bc
+	ld d, h
+	ld e, l
+	ld hl, TempMonExp + 2 - TempMon
+	add hl, bc
+	push bc
+	ld b, $1
+	ld a, $c
+	call Predef
+	pop bc
+	ld hl, TempMonCurHP - TempMon
+	add hl, bc
+	ld d, h
+	ld e, l
+	ld a, [CurPartySpecies]
+	cp EGG
+	jr nz, .asm_508c1
+	xor a
+	ld [de], a
+	inc de
+	ld [de], a
+	jr .asm_508cd
+
+.asm_508c1
+	push bc
+	ld hl, TempMonMaxHP - TempMon
+	add hl, bc
+	ld bc, 2
+	call CopyBytes
+	pop bc
+
+.asm_508cd
+	ld hl, TempMonStatus - TempMon
+	add hl, bc
+	xor a
+	ld [hli], a
+	ld [hl], a
+	ret
+; 508d5
+
+Function508d5: ; 508d5
+	ld a, [MonType]
+	and a ; PARTYMON
+	jr z, .asm_508e7
+	cp OTPARTYMON
+	jr z, .asm_508ec
+	cp BOXMON
+	jr z, .asm_508f1
+	cp $3
+	jr z, .asm_50900
+	; WILDMON
+
+.asm_508e7
+	ld hl, PartySpecies
+	jr .asm_50905
+
+.asm_508ec
+	ld hl, OTPartySpecies
+	jr .asm_50905
+
+.asm_508f1
+	ld a, $1
+	call GetSRAMBank
+	ld hl, $ad11
+	call .asm_50905
+	call CloseSRAM
+	ret
+
+.asm_50900
+	ld a, [BreedMon1Species]
+	jr .asm_50909
+
+.asm_50905
+	ld d, 0
+	add hl, de
+	ld a, [hl]
+
+.asm_50909
+	ld [CurPartySpecies], a
+	ret
+; 5090d
+
+
+PrintMonTypes: ; 5090d
+	push hl
+	call GetBaseData
+	pop hl
+	push hl
+	ld a, [BaseType1]
+	call .asm_50928
+	ld a, [BaseType1]
+	ld b, a
+	ld a, [BaseType2]
+	cp b
+	pop hl
+	jr z, .asm_5092b
+	ld bc, 20
+	add hl, bc
+
+.asm_50928
+	ld b, a
+	jr PrintType
+
+.asm_5092b
+	ld a, " "
+	ld bc, 20 - 3
+	add hl, bc
+	ld [hl], a
+	inc bc
+	add hl, bc
+	ld bc, 5
+	jp ByteFill
+; 5093a
+
 PrintMoveType: ; 5093a
 ; Print the type of move b at hl.
 
@@ -15015,7 +53755,7 @@
 ; 50964
 
 
-LoadTypeName: ; 50964
+GetTypeName: ; 50964
 ; Copy the name of type $d265 to StringBuffer1.
 	ld a, [$d265]
 	ld hl, TypeNames
@@ -15103,9 +53843,98 @@
 ; 50a28
 
 
-INCBIN "baserom.gbc", $50a28, $50bdd - $50a28
+INCBIN "baserom.gbc", $50a28, $50b0a - $50a28
 
 
+DrawPlayerHP: ; 50b0a
+	ld a, $1
+	jr DrawHP
+
+DrawEnemyHP: ; 50b0e
+	ld a, $2
+
+DrawHP: ; 50b10
+	ld [$d10a], a
+	push hl
+	push bc
+	ld a, [MonType]
+	cp BOXMON
+	jr z, .asm_50b30
+
+	ld a, [TempMonCurHP]
+	ld b, a
+	ld a, [TempMonCurHP + 1]
+	ld c, a
+
+; Any HP?
+	or b
+	jr nz, .asm_50b30
+
+	xor a
+	ld c, a
+	ld e, a
+	ld a, 6
+	ld d, a
+	jp .asm_50b4a
+
+.asm_50b30
+	ld a, [TempMonMaxHP]
+	ld d, a
+	ld a, [TempMonMaxHP + 1]
+	ld e, a
+	ld a, [MonType]
+	cp BOXMON
+	jr nz, .asm_50b41
+
+	ld b, d
+	ld c, e
+
+.asm_50b41
+	ld a, $4
+	call Predef
+	ld a, 6
+	ld d, a
+	ld c, a
+
+.asm_50b4a
+	ld a, c
+	pop bc
+	ld c, a
+	pop hl
+	push de
+	push hl
+	push hl
+	call DrawHPBar
+	pop hl
+
+; Print HP 
+	ld bc, $0015 ; move (1,1)
+	add hl, bc
+	ld de, TempMonCurHP
+	ld a, [MonType]
+	cp BOXMON
+	jr nz, .asm_50b66
+	ld de, TempMonMaxHP
+.asm_50b66
+	ld bc, $0203
+	call PrintNum
+
+	ld a, "/"
+	ld [hli], a
+
+; Print max HP
+	ld de, TempMonMaxHP
+	ld bc, $0203
+	call PrintNum
+	pop hl
+	pop de
+	ret
+; 50b7b
+
+
+INCBIN "baserom.gbc", $50b7b, $50bdd - $50b7b
+
+
 GetGender: ; 50bdd
 ; Return the gender of a given monster in a.
 
@@ -15138,7 +53967,7 @@
 	jr z, .BoxMon
 	
 ; 3: Unknown
-	ld hl, $d123 ; DVBuffer
+	ld hl, TempMonDVs ; DVBuffer
 	dec a
 	jr z, .DVs
 	
@@ -15224,9 +54053,348 @@
 	ret
 ; 50c50
 
-INCBIN "baserom.gbc", $50c50, $5125d - $50c50
+INCBIN "baserom.gbc", $50c50, $50d0a - $50c50
 
 
+Function50d0a: ; 50d0a
+	push de
+	inc de
+	inc de
+	ld a, [de]
+	ld b, a
+	inc de
+	ld a, [de]
+	or b
+	pop de
+	jr nz, .asm_50d2e
+	push de
+	ld de, .data_50d21
+	call $4d25
+	pop de
+	ld a, $1
+	and a
+	ret
+
+.data_50d21
+	db $85
+	db $8d
+	db $93
+	db $50
+	db $1a
+	db $13
+	db $22
+	db $1a
+	db $13
+	db $22
+	db $1a
+	db $77
+	db $c9
+
+.asm_50d2e
+	push de
+	ld a, [de]
+	ld de, $4d5f
+	bit 3, a
+	jr nz, .asm_50d53
+	ld de, $4d63
+	bit 4, a
+	jr nz, .asm_50d53
+	ld de, $4d67
+	bit 5, a
+	jr nz, .asm_50d53
+	ld de, $4d6b
+	bit 6, a
+	jr nz, .asm_50d53
+	ld de, $4d5b
+	and $7
+	jr z, .asm_50d59
+
+.asm_50d53
+	call $4d25
+	ld a, $1
+	and a
+
+.asm_50d59
+	pop de
+	ret
+; 50d5b
+
+INCBIN "baserom.gbc", $50d5b, $50e1b - $50d5b
+
+
+Function50e1b: ; 50e1b
+	ld a, [TempMonSpecies]
+	ld [CurSpecies], a
+	call GetBaseData
+	ld d, $1
+.asm_50e26
+	inc d
+	ld a, d
+	cp $65
+	jr z, .asm_50e45
+	call Function50e47
+	push hl
+	ld hl, $d118
+	ld a, [$ffb6]
+	ld c, a
+	ld a, [hld]
+	sub c
+	ld a, [$ffb5]
+	ld c, a
+	ld a, [hld]
+	sbc c
+	ld a, [hMultiplicand]
+	ld c, a
+	ld a, [hl]
+	sbc c
+	pop hl
+	jr nc, .asm_50e26
+
+.asm_50e45
+	dec d
+	ret
+; 50e47
+
+
+
+Function50e47: ; 50e47
+	ld a, [BaseGrowthRate]
+	add a
+	add a
+	ld c, a
+	ld b, $0
+	ld hl, $4efa
+	add hl, bc
+	call Function50eed
+	ld a, d
+	ld [hMultiplier], a
+	call Multiply
+	ld a, [hl]
+	and $f0
+	swap a
+	ld [hMultiplier], a
+	call Multiply
+	ld a, [hli]
+	and $f
+	ld [hMultiplier], a
+	ld b, $4
+	call Divide
+	ld a, [hMultiplicand]
+	push af
+	ld a, [$ffb5]
+	push af
+	ld a, [$ffb6]
+	push af
+	call Function50eed
+	ld a, [hl]
+	and $7f
+	ld [hMultiplier], a
+	call Multiply
+	ld a, [hMultiplicand]
+	push af
+	ld a, [$ffb5]
+	push af
+	ld a, [$ffb6]
+	push af
+	ld a, [hli]
+	push af
+	xor a
+	ld [hMultiplicand], a
+	ld [$ffb5], a
+	ld a, d
+	ld [$ffb6], a
+	ld a, [hli]
+	ld [hMultiplier], a
+	call Multiply
+	ld b, [hl]
+	ld a, [$ffb6]
+	sub b
+	ld [$ffb6], a
+	ld b, $0
+	ld a, [$ffb5]
+	sbc b
+	ld [$ffb5], a
+	ld a, [hMultiplicand]
+	sbc b
+	ld [hMultiplicand], a
+	pop af
+	and $80
+	jr nz, .asm_50ec8
+	pop bc
+	ld a, [$ffb6]
+	add b
+	ld [$ffb6], a
+	pop bc
+	ld a, [$ffb5]
+	adc b
+	ld [$ffb5], a
+	pop bc
+	ld a, [hMultiplicand]
+	adc b
+	ld [hMultiplicand], a
+	jr .asm_50eda
+
+.asm_50ec8
+	pop bc
+	ld a, [$ffb6]
+	sub b
+	ld [$ffb6], a
+	pop bc
+	ld a, [$ffb5]
+	sbc b
+	ld [$ffb5], a
+	pop bc
+	ld a, [hMultiplicand]
+	sbc b
+	ld [hMultiplicand], a
+
+.asm_50eda
+	pop bc
+	ld a, [$ffb6]
+	add b
+	ld [$ffb6], a
+	pop bc
+	ld a, [$ffb5]
+	adc b
+	ld [$ffb5], a
+	pop bc
+	ld a, [hMultiplicand]
+	adc b
+	ld [hMultiplicand], a
+	ret
+; 50eed
+
+Function50eed: ; 50eed
+	xor a
+	ld [hMultiplicand], a
+	ld [$ffb5], a
+	ld a, d
+	ld [$ffb6], a
+	ld [hMultiplier], a
+	jp Multiply
+; 50efa
+
+
+INCBIN "baserom.gbc", $50efa, $51040 - $50efa
+
+
+GetUnownLetter: ; 51040
+; Return Unown letter in UnownLetter based on DVs at hl
+
+; Take the middle 2 bits of each DV and place them in order:
+;	AtkDefDV | SpdSpcDV
+;	.ww..xx.   .yy..zz.
+
+	; atk
+	ld a, [hl]
+	and %01100000
+	sla a
+	ld b, a
+	; def
+	ld a, [hli]
+	and %00000110
+	swap a
+	srl a
+	or b
+	ld b, a
+	
+	; spd
+	ld a, [hl]
+	and %01100000
+	swap a
+	sla a
+	or b
+	ld b, a
+	; spc
+	ld a, [hl]
+	and %00000110
+	srl a
+	or b
+
+; Divide by 10 to get 0-25
+	ld [hDividend + 3], a
+	xor a
+	ld [hDividend], a
+	ld [hDividend + 1], a
+	ld [hDividend + 2], a
+	ld a, 10
+	ld [hDivisor], a
+	ld b, $4
+	call Divide
+
+; Increment to get 1-26
+	ld a, [hQuotient + 2]
+	inc a
+	ld [UnownLetter], a
+	ret
+; 51077
+
+
+INCBIN "baserom.gbc", $51077, $511c5 - $51077
+
+
+Function511c5: ; 511c5
+	push hl
+	push bc
+	sub $12
+	ld c, a
+	ld b, 0
+	ld hl, $51d4
+	add hl, bc
+	ld a, [hl]
+	pop bc
+	pop hl
+	ret
+; 511d4
+
+INCBIN "baserom.gbc", $511d4, $5120d - $511d4
+
+
+Function5120d: ; 5120d
+	ld a, [TrainerClass]
+	and a
+	ret z
+	cp $44
+	ret nc
+	call WaitBGMap
+	xor a
+	ld [hBGMapMode], a
+	ld hl, Function50000
+	ld a, [TrainerClass]
+	dec a
+	ld bc, $0003
+	call AddNTimes
+	ld a, [rSVBK]
+	push af
+	ld a, $6
+	ld [rSVBK], a
+	push de
+	ld a, $4a
+	call GetFarByte
+	call Function511c5
+	push af
+	inc hl
+	ld a, $4a
+	call GetFarHalfword
+	pop af
+	ld de, $d000
+	call FarDecompress
+	pop hl
+	ld de, $d000
+	ld c, $31
+	ld a, [hROMBank]
+	ld b, a
+	call Get2bpp
+	pop af
+	ld [rSVBK], a
+	call WaitBGMap
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+; 5125d
+
+
+
 DecompressPredef: ; 5125d
 ; Decompress lz data from b:hl to scratch space at 6:d000, then copy it to address de.
 
@@ -15245,7 +54413,7 @@
 	pop hl
 	ld a, [hROMBank]
 	ld b, a
-	call $f82
+	call Get2bpp
 
 	pop af
 	ld [rSVBK], a
@@ -15345,7 +54513,7 @@
 
 SECTION "bank19",ROMX,BANK[$19]
 
-INCBIN "baserom.gbc", $64000, $67308 - $64000
+INCLUDE "text/phone/extra.asm"
 
 
 SECTION "bank1A",ROMX,BANK[$1A]
@@ -15821,17 +54989,17 @@
 TrySurfStep: ; 801c0
 
 	call CheckWaterPermissions
-	ld [$d040], a
+	ld [MartPointer], a
 	jr c, .asm_801f1
 
 	call Function80341
-	ld [$d03f], a
+	ld [CurFruit], a
 	and a
 	jr z, .asm_801f1
 	cp 2
 	jr z, .asm_801f1
 
-	ld a, [$d040]
+	ld a, [MartPointer]
 	and a
 	jr nz, .ExitWater
 
@@ -15842,7 +55010,7 @@
 
 .ExitWater
 	call WaterToLandSprite
-	call $3cdf ; PlayMapMusic
+	call Function3cdf ; PlayMapMusic
 	ld a, STEP_WALK
 	call DoStep
 	ld a, 6
@@ -15925,7 +55093,7 @@
 	and 3
 	cp e
 	jr nz, .asm_80259
-	call $224a ; CheckFallPit?
+	call Function224a ; CheckFallPit?
 	jr nc, .asm_80259
 
 	call StandInPlace
@@ -16119,9 +55287,7 @@
 	add e
 	ld e, a
 	ld bc, $d4d6
-	ld a, $1
-	ld hl, $7041
-	rst FarCall
+	callba Function7041
 	jr nc, .asm_80369
 	call Function8036f
 	jr c, .asm_8036c
@@ -16236,7 +55402,7 @@
 CheckWalkable: ; 803d3
 ; Return 0 if tile a is land. Otherwise, return carry.
 
-	call GetTileType
+	call GetTileCollision
 	and a ; land
 	ret z
 	scf
@@ -16248,7 +55414,7 @@
 ; Return 0 if tile a is water, or 1 if land.
 ; Otherwise, return carry.
 
-	call GetTileType
+	call GetTileCollision
 	cp 1
 	jr z, .Water
 
@@ -16287,7 +55453,7 @@
 	push bc
 	ld a, PLAYER_NORMAL
 	ld [PlayerState], a
-	call $e4a ; UpdateSprites
+	call Functione4a ; UpdateSprites
 	pop bc
 	ret
 ; 80404
@@ -16433,8 +55599,296 @@
 
 SECTION "bank21",ROMX,BANK[$21]
 
-INCBIN "baserom.gbc", $84000, $84a2e - $84000
+Function84000: ; 84000
+	ld hl, OverworldMap
+	ld bc, $040c
+	xor a
+	call Function842ab
+	xor a
+	ld [rSB], a
+	ld [rSC], a
+	ld [$c2d5], a
+	ld hl, $c2d4
+	set 0, [hl]
+	ld a, [GBPrinter]
+	ld [$cbfb], a
+	xor a
+	ld [$cf63], a
+	ret
+; 84022
 
+Function84022: ; 84022
+	ld a, [$cf63]
+	ld e, a
+	ld d, $0
+	ld hl, $4031
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 84031
+
+INCBIN "baserom.gbc", $84031, $842ab - $84031
+
+Function842ab: ; 842ab
+	push de
+	ld e, a
+.asm_842ad
+	ld [hl], e
+	inc hl
+	dec bc
+	ld a, c
+	or b
+	jr nz, .asm_842ad
+	ld a, e
+	pop de
+	ret
+; 842b7
+
+INCBIN "baserom.gbc", $842b7, $842db - $842b7
+
+
+Function842db: ; 842db
+	ld a, [$c2d5]
+	add a
+	ld e, a
+	ld d, $0
+	ld hl, $42ea
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 842ea
+
+INCBIN "baserom.gbc", $842ea, $843f0 - $842ea
+
+Function843f0: ; 843f0
+.asm_843f0
+	call Functiona57
+	call Function846f6
+	jr c, .asm_8440f
+	ld a, [$cf63]
+	bit 7, a
+	jr nz, .asm_8440d
+	call Function84022
+	call Function84757
+	call Function84785
+	call DelayFrame
+	jr .asm_843f0
+
+.asm_8440d
+	and a
+	ret
+
+.asm_8440f
+	scf
+	ret
+; 84411
+
+Function84411: ; 84411
+	xor a
+	ld [$c2d4], a
+	ld [$c2d5], a
+	ret
+; 84419
+
+Function84419: ; 84419
+	push af
+	call Function84000
+	pop af
+	ld [$cbfa], a
+	call Function84728
+	ret
+; 84425
+
+Function84425: ; 84425
+	call Function222a
+	call Function84753
+	ret
+; 8442c
+
+INCBIN "baserom.gbc", $8442c, $845d4 - $8442c
+
+Function845d4: ; 845d4
+	call Function845db
+	call Function84425
+	ret
+; 845db
+
+Function845db: ; 845db
+	ld a, [$cf65]
+	push af
+	xor a
+	ld [$ffac], a
+	call Function8474c
+	ld a, [rIE]
+	push af
+	xor a
+	ld [rIF], a
+	ld a, $9
+	ld [rIE], a
+	xor a
+	ld [hBGMapMode], a
+	ld a, $13
+	call Function84419
+	ld hl, $ff9e
+	ld a, [hl]
+	push af
+	ld [hl], $4
+	ld a, $9
+	ld [$cf65], a
+	call Function843f0
+	pop af
+	ld [$ff9e], a
+	call Function84411
+	call Function84735
+	xor a
+	ld [rIF], a
+	pop af
+	ld [rIE], a
+	pop af
+	ld [$cf65], a
+	ret
+; 8461a
+
+INCBIN "baserom.gbc", $8461a, $846f6 - $8461a
+
+Function846f6: ; 846f6
+	ld a, [hJoyDown]
+	and $2
+	jr nz, .asm_846fe
+	and a
+	ret
+
+.asm_846fe
+	ld a, [$ca80]
+	cp $c
+	jr nz, .asm_84722
+.asm_84705
+	ld a, [$c2d5]
+	and a
+	jr nz, .asm_84705
+	ld a, $16
+	ld [$c2d5], a
+	ld a, $88
+	ld [rSB], a
+	ld a, $1
+	ld [rSC], a
+	ld a, $81
+	ld [rSC], a
+.asm_8471c
+	ld a, [$c2d5]
+	and a
+	jr nz, .asm_8471c
+
+.asm_84722
+	ld a, $1
+	ld [$ffac], a
+	scf
+	ret
+; 84728
+
+Function84728: ; 84728
+	ld hl, TileMap
+	ld de, $ca90
+	ld bc, $0168
+	call CopyBytes
+	ret
+; 84735
+
+Function84735: ; 84735
+	ld hl, $ca90
+	ld de, TileMap
+	ld bc, $0168
+	call CopyBytes
+	ret
+; 84742
+
+INCBIN "baserom.gbc", $84742, $8474c - $84742
+
+Function8474c: ; 8474c
+	ld de, $005b
+	call StartMusic2
+	ret
+; 84753
+
+Function84753: ; 84753
+	call Function3d47
+	ret
+; 84757
+
+Function84757: ; 84757
+	ld a, [$ca88]
+	cp $ff
+	jr nz, .asm_84765
+	ld a, [$ca89]
+	cp $ff
+	jr z, .asm_8477f
+
+.asm_84765
+	ld a, [$ca89]
+	and $e0
+	ret z
+	bit 7, a
+	jr nz, .asm_8477b
+	bit 6, a
+	jr nz, .asm_84777
+	ld a, $6
+	jr .asm_84781
+
+.asm_84777
+	ld a, $7
+	jr .asm_84781
+
+.asm_8477b
+	ld a, $4
+	jr .asm_84781
+
+.asm_8477f
+	ld a, $5
+
+.asm_84781
+	ld [$cbf8], a
+	ret
+; 84785
+
+Function84785: ; 84785
+	ld a, [$cbf8]
+	and a
+	ret z
+	push af
+	xor a
+	ld [hBGMapMode], a
+	ld hl, $c504
+	ld bc, $0a12
+	call TextBox
+	pop af
+	ld e, a
+	ld d, $0
+	ld hl, $4807
+	add hl, de
+	add hl, de
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld hl, $c52d
+	ld a, $77
+	call Function13d4
+	ld hl, $c5ce
+	ld de, $47f5
+	call PlaceString
+	ld a, $1
+	ld [hBGMapMode], a
+	xor a
+	ld [$cbf8], a
+	ret
+; 847bd
+
+INCBIN "baserom.gbc", $847bd, $84a2e - $847bd
+
 FX00GFX:
 FX01GFX: ; 84a2e
 INCBIN "gfx/fx/001.lz"
@@ -16671,8 +56125,8 @@
 INCBIN "baserom.gbc", $8640b, $8640e - $8640b
 
 HallOfFame3: ; 0x8640e
-	call $648e
-	ld a, [$d84c]
+	call Function8648e
+	ld a, [StatusFlags]
 	push af
 	ld a, $1
 	ld [$c2cd], a
@@ -16681,7 +56135,7 @@
 	ld [$d4b5], a
 
 	; Enable the Pokégear map to cycle through all of Kanto
-	ld hl, $d84c
+	ld hl, StatusFlags
 	set 6, [hl]
 
 	ld a, $5
@@ -16696,13 +56150,13 @@
 	ld a, $5
 	ld hl, $4b85
 	rst FarCall
-	call $653f
+	call Function8653f
 	ld a, $5
 	ld hl, $4b5f
 	rst FarCall
 	xor a
 	ld [$c2cd], a
-	call $64c3
+	call Function864c3
 	pop af
 	ld b, a
 	ld a, $42
@@ -16711,21 +56165,509 @@
 	ret
 ; 0x86455
 
-INCBIN "baserom.gbc", $86455, $88000 - $86455
+Function86455: ; 86455
+	ld a, $0
+	ld [MusicFadeIDLo], a
+	ld a, $0
+	ld [MusicFadeIDHi], a
+	ld a, $a
+	ld [MusicFade], a
+	ld a, $23
+	ld hl, $4084
+	rst FarCall
+	xor a
+	ld [VramState], a
+	ld [$ffde], a
+	ld a, $13
+	ld hl, $68c2
+	rst FarCall
+	ld c, $8
+	call DelayFrames
+	call Function2ed3
+	ld a, $2
+	ld [$d4b5], a
+	ld a, [StatusFlags]
+	ld b, a
+	ld a, $42
+	ld hl, $5847
+	rst FarCall
+	ret
+; 8648e
 
+Function8648e: ; 8648e
+	ld a, $0
+	ld [MusicFadeIDLo], a
+	ld a, $0
+	ld [MusicFadeIDHi], a
+	ld a, $a
+	ld [MusicFade], a
+	ld a, $23
+	ld hl, $4084
+	rst FarCall
+	xor a
+	ld [VramState], a
+	ld [$ffde], a
+	ld a, $13
+	ld hl, $6881
+	rst FarCall
+	ld c, $64
+	jp DelayFrames
+; 864b4
+
+Function864b4: ; 864b4
+	push de
+	ld de, $0000
+	call StartMusic
+	call DelayFrame
+	pop de
+	call StartMusic
+	ret
+; 864c3
+
+Function864c3: ; 864c3
+	xor a
+	ld [$cf63], a
+	call Function8671c
+	jr c, .asm_864fb
+	ld de, $0014
+	call Function864b4
+	xor a
+	ld [$cf64], a
+.asm_864d6
+	ld a, [$cf64]
+	cp $6
+	jr nc, .asm_864fb
+	ld hl, EnemyMoveEffect
+	ld bc, $0010
+	call AddNTimes
+	ld a, [hl]
+	cp $ff
+	jr z, .asm_864fb
+	push hl
+	call Function865b5
+	pop hl
+	call Function8650c
+	jr c, .asm_864fb
+	ld hl, $cf64
+	inc [hl]
+	jr .asm_864d6
+
+.asm_864fb
+	call Function86810
+	ld a, $4
+	ld [MusicFade], a
+	call $04b6
+	ld c, $8
+	call DelayFrames
+	ret
+; 8650c
+
+Function8650c: ; 8650c
+	call Function86748
+	ld de, $652c
+	ld hl, $c4c9
+	call PlaceString
+	call WaitBGMap
+	ld de, $c50a
+	ld c, $6
+	ld a, $49
+	call Predef
+	ld c, $3c
+	call DelayFrames
+	and a
+	ret
+; 8652c
+
+INCBIN "baserom.gbc", $8652c, $8653f - $8652c
+
+
+Function8653f: ; 8653f
+	ld hl, OverworldMap
+	ld bc, $0062
+	xor a
+	call ByteFill
+	ld a, [$d95e]
+	ld de, OverworldMap
+	ld [de], a
+	inc de
+	ld hl, PartySpecies
+	ld c, $0
+.asm_86556
+	ld a, [hli]
+	cp $ff
+	jr z, .asm_865b1
+	cp $fd
+	jr nz, .asm_86562
+	inc c
+	jr .asm_86556
+
+.asm_86562
+	push hl
+	push de
+	push bc
+	ld a, c
+	ld hl, PartyMon1Species
+	ld bc, $0030
+	call AddNTimes
+	ld c, l
+	ld b, h
+	ld hl, $0000
+	add hl, bc
+	ld a, [hl]
+	ld [de], a
+	inc de
+	ld hl, $0006
+	add hl, bc
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hl]
+	ld [de], a
+	inc de
+	ld hl, $0015
+	add hl, bc
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hl]
+	ld [de], a
+	inc de
+	ld hl, $001f
+	add hl, bc
+	ld a, [hl]
+	ld [de], a
+	inc de
+	pop bc
+	push bc
+	ld a, c
+	ld hl, PartyMon1Nickname
+	ld bc, $000b
+	call AddNTimes
+	ld bc, $000a
+	call CopyBytes
+	pop bc
+	inc c
+	pop de
+	ld hl, $0010
+	add hl, de
+	ld e, l
+	ld d, h
+	pop hl
+	jr .asm_86556
+
+.asm_865b1
+	ld a, $ff
+	ld [de], a
+	ret
+; 865b5
+
+Function865b5: ; 865b5
+	push hl
+	call WhiteBGMap
+	ld a, $13
+	ld hl, $6906
+	rst FarCall
+	pop hl
+	ld a, [hli]
+	ld [TempMonSpecies], a
+	ld [CurPartySpecies], a
+	inc hl
+	inc hl
+	ld a, [hli]
+	ld [TempMonDVs], a
+	ld a, [hli]
+	ld [$d124], a
+	ld hl, TempMonDVs
+	ld a, $2d
+	call Predef
+	ld hl, TileMap
+	ld bc, $0168
+	ld a, $7f
+	call ByteFill
+	ld de, $9310
+	ld a, $3d
+	call Predef
+	ld a, $31
+	ld [$ffad], a
+	ld hl, $c51e
+	ld bc, $0606
+	ld a, $13
+	call Predef
+	ld a, $d0
+	ld [hSCY], a
+	ld a, $90
+	ld [hSCX], a
+	call WaitBGMap
+	xor a
+	ld [hBGMapMode], a
+	ld b, $1a
+	call GetSGBLayout
+	call Function32f9
+	call Function86635
+	xor a
+	ld [$c2c6], a
+	ld hl, TileMap
+	ld bc, $0168
+	ld a, $7f
+	call ByteFill
+	ld hl, $c50a
+	call $378b
+	call WaitBGMap
+	xor a
+	ld [hBGMapMode], a
+	ld [hSCY], a
+	call Function86643
+	ret
+; 86635
+
+Function86635: ; 86635
+.asm_86635
+	ld a, [hSCX]
+	cp $70
+	ret z
+	add $4
+	ld [hSCX], a
+	call DelayFrame
+	jr .asm_86635
+; 86643
+
+Function86643: ; 86643
+.asm_86643
+	ld a, [hSCX]
+	and a
+	ret z
+	dec a
+	dec a
+	ld [hSCX], a
+	call DelayFrame
+	jr .asm_86643
+; 86650
+
+INCBIN "baserom.gbc", $86650, $8671c - $86650
+
+
+Function8671c: ; 8671c
+	ld a, [$cf63]
+	cp $1e
+	jr nc, .asm_86746
+	ld hl, $b2c0
+	ld bc, $0062
+	call AddNTimes
+	ld a, $1
+	call GetSRAMBank
+	ld a, [hl]
+	and a
+	jr z, .asm_86743
+	ld de, EnemyMoveAnimation
+	ld bc, $0062
+	call CopyBytes
+	call CloseSRAM
+	and a
+	ret
+
+.asm_86743
+	call CloseSRAM
+
+.asm_86746
+	scf
+	ret
+; 86748
+
+Function86748: ; 86748
+	xor a
+	ld [hBGMapMode], a
+	ld a, [hli]
+	ld [TempMonSpecies], a
+	ld a, [hli]
+	ld [TempMonID], a
+	ld a, [hli]
+	ld [$d115], a
+	ld a, [hli]
+	ld [TempMonDVs], a
+	ld a, [hli]
+	ld [$d124], a
+	ld a, [hli]
+	ld [TempMonLevel], a
+	ld de, StringBuffer2
+	ld bc, $000a
+	call CopyBytes
+	ld a, $50
+	ld [$d090], a
+	ld hl, TileMap
+	ld bc, $0168
+	ld a, $7f
+	call ByteFill
+	ld hl, TileMap
+	ld bc, $0312
+	call TextBox
+	ld hl, $c590
+	ld bc, $0412
+	call TextBox
+	ld a, [TempMonSpecies]
+	ld [CurPartySpecies], a
+	ld [$d265], a
+	ld hl, TempMonDVs
+	ld a, $2d
+	call Predef
+	xor a
+	ld [$c2c6], a
+	ld hl, $c50a
+	call $378b
+	ld a, [CurPartySpecies]
+	cp $fd
+	jr z, .asm_867f8
+	ld hl, $c5a5
+	ld a, $74
+	ld [hli], a
+	ld [hl], $f2
+	ld hl, $c5a7
+	ld de, $d265
+	ld bc, $8103
+	call PrintNum
+	call GetBasePokemonName
+	ld hl, $c5ab
+	call PlaceString
+	ld a, $3
+	ld [MonType], a
+	callba GetGender
+	ld a, $7f
+	jr c, .asm_867e2
+	ld a, $ef
+	jr nz, .asm_867e2
+	ld a, $f5
+
+.asm_867e2
+	ld hl, $c5b6
+	ld [hli], a
+	ld hl, $c5c0
+	ld a, $f3
+	ld [hli], a
+	ld de, StringBuffer2
+	call PlaceString
+	ld hl, $c5e1
+	call PrintLevel
+
+.asm_867f8
+	ld hl, $c5e7
+	ld a, $73
+	ld [hli], a
+	ld a, $74
+	ld [hli], a
+	ld [hl], $f3
+	ld hl, $c5ea
+	ld de, TempMonID
+	ld bc, $8205
+	call PrintNum
+	ret
+; 86810
+
+Function86810: ; 86810
+	call WhiteBGMap
+	ld hl, $9630
+	ld de, $40d0
+	ld bc, $3e01
+	call Request2bpp
+	ld hl, TileMap
+	ld bc, $0168
+	ld a, $7f
+	call ByteFill
+	callba GetPlayerBackpic
+	ld a, $31
+	ld [$ffad], a
+	ld hl, $c51e
+	ld bc, $0606
+	ld a, $13
+	call Predef
+	ld a, $d0
+	ld [hSCY], a
+	ld a, $90
+	ld [hSCX], a
+	call WaitBGMap
+	xor a
+	ld [hBGMapMode], a
+	ld [CurPartySpecies], a
+	ld b, $1a
+	call GetSGBLayout
+	call Function32f9
+	call Function86635
+	xor a
+	ld [$c2c6], a
+	ld hl, TileMap
+	ld bc, $0168
+	ld a, $7f
+	call ByteFill
+	ld a, $22
+	ld hl, $4840
+	rst FarCall
+	xor a
+	ld [$ffad], a
+	ld hl, $c510
+	ld bc, $0707
+	ld a, $13
+	call Predef
+	ld a, $c0
+	ld [hSCX], a
+	call WaitBGMap
+	xor a
+	ld [hBGMapMode], a
+	ld [hSCY], a
+	call Function86643
+	xor a
+	ld [hBGMapMode], a
+	ld hl, $c4c8
+	ld bc, $0809
+	call TextBox
+	ld hl, $c590
+	ld bc, $0412
+	call TextBox
+	ld hl, $c4f2
+	ld de, PlayerName
+	call PlaceString
+	ld hl, $c519
+	ld a, $73
+	ld [hli], a
+	ld a, $74
+	ld [hli], a
+	ld [hl], $f3
+	ld hl, $c51c
+	ld de, PlayerID
+	ld bc, $8205
+	call PrintNum
+	ld hl, $c541
+	ld de, $68ed
+	call PlaceString
+	ld hl, $c557
+	ld de, GameTimeHours
+	ld bc, $0203
+	call PrintNum
+	ld [hl], $63
+	inc hl
+	ld de, GameTimeMinutes
+	ld bc, $8102
+	call PrintNum
+	call WaitBGMap
+	callba Function26601
+	ret
+; 868ed
+
+INCBIN "baserom.gbc", $868ed, $88000 - $868ed
+
 SECTION "bank22",ROMX,BANK[$22]
 
 INCBIN "baserom.gbc", $88000, $88258 - $88000
 
-MovePlayerPicRight: ; 0x88258
-	ld hl, $c4f6
-	ld de, $0001
+MovePlayerPicRight: ; 88258
+	hlcoord 6, 4
+	ld de, 1
 	jr MovePlayerPic
-MovePlayerPicLeft
-	ld hl, $c4fd
+
+MovePlayerPicLeft: ; 88260
+	hlcoord 13, 4
 	ld de, -1
 	; fallthrough
-MovePlayerPic: ; 0x88266
+
+MovePlayerPic: ; 88266
+; Move player pic at hl by de * 7 tiles.
 	ld c, $8
 .loop
 	push bc
@@ -16732,12 +56674,12 @@
 	push hl
 	push de
 	xor a
-	ld [$ffd4], a
+	ld [hBGMapMode], a
 	ld bc, $0707
 	ld a, $13
 	call Predef
 	xor a
-	ld [$ffd5], a
+	ld [hBGMapThird], a
 	call WaitBGMap
 	call DelayFrame
 	pop de
@@ -16759,15 +56701,16 @@
 	pop bc
 	pop hl
 	jr .loop
+; 88297
 
-ShowPlayerNamingChoices: ; 0x88297
-	ld hl, $42b5 ; male
+ShowPlayerNamingChoices: ; 88297
+	ld hl, ChrisNameMenuHeader
 	ld a, [PlayerGender]
 	bit 0, a
-	jr z, .skip
-	ld hl, $42e5 ; female
-.skip
-	call Function1d35
+	jr z, .GotGender
+	ld hl, KrisNameMenuHeader
+.GotGender
+	call LoadMenuDataHeader
 	call Function1d81
 	ld a, [$cfa9]
 	dec a
@@ -16774,16 +56717,58 @@
 	call Function1db8
 	call Function1c17
 	ret
-; 0x882b5
+; 882b5
 
-INCBIN "baserom.gbc", $882b5, $8832c - $882b5
+ChrisNameMenuHeader: ; 882b5
+	db $40 ; flags
+	db 00, 00 ; start coords
+	db 11, 10 ; end coords
+	dw MenuData2_0x882be
+	db 1 ; ????
+	db 0 ; default option
+; 882be
 
+MenuData2_0x882be: ; 882be
+	db $91 ; flags
+	db 5 ; items
+	db "NEW NAME@"
+	db "CHRIS@"
+	db "MAT@"
+	db "ALLAN@"
+	db "JON@"
+	db 2 ; displacement
+	db " NAME @" ; title
+; 882e5
+
+KrisNameMenuHeader: ; 882e5
+	db $40 ; flags
+	db 00, 00 ; start coords
+	db 11, 10 ; end coords
+	dw MenuData2_0x882ee
+	db 1 ; ????
+	db 0 ; default option
+; 882ee
+
+MenuData2_0x882ee: ; 882ee
+	db $91 ; flags
+	db 5 ; items
+	db "NEW NAME@"
+	db "KRIS@"
+	db "AMANDA@"
+	db "JUANA@"
+	db "JODI@"
+	db 2 ; displacement
+	db " NAME @" ; title
+; 88318
+
+INCBIN "baserom.gbc", $88318, $8832c - $88318
+
 GetPlayerIcon: ; 8832c
 ; Get the player icon corresponding to gender
 
 ; Male
-	ld de, $4000 ; KrissMIcon
-	ld b, $30 ; BANK(KrissMIcon)
+	ld de, ChrisSpriteGFX
+	ld b, BANK(ChrisSpriteGFX)
 	
 	ld a, [PlayerGender]
 	bit 0, a
@@ -16790,8 +56775,8 @@
 	jr z, .done
 	
 ; Female
-	ld de, $7a40 ; KrissFIcon
-	ld b, $31 ; BANK(KrissFIcon)
+	ld de, KrisSpriteGFX
+	ld b, BANK(KrisSpriteGFX)
 	
 .done
 	ret
@@ -16798,9 +56783,58 @@
 ; 8833e
 
 
-INCBIN "baserom.gbc", $8833e, $88874 - $8833e
+INCBIN "baserom.gbc", $8833e, $88825 - $8833e
 
 
+GetPlayerBackpic: ; 88825
+	ld a, [PlayerGender]
+	bit 0, a
+	jr z, .asm_88830
+	call GetKrisBackpic
+	ret
+
+.asm_88830
+	ld hl, ChrisBackpic
+	ld b, BANK(ChrisBackpic)
+	ld de, $9310
+	ld c, $31
+	ld a, $40
+	call Predef
+	ret
+; 88840
+
+Function88840: ; 88840
+	call WaitBGMap
+	xor a
+	ld [hBGMapMode], a
+	ld e, $0
+	ld a, [PlayerGender]
+	bit 0, a
+	jr z, .asm_88851
+	ld e, $1
+
+.asm_88851
+	ld a, e
+	ld [TrainerClass], a
+	ld de, ChrisPic
+	ld a, [PlayerGender]
+	bit 0, a
+	jr z, .asm_88862
+	ld de, KrisPic
+
+.asm_88862
+	ld hl, VTiles2
+	ld b, $22
+	ld c, $31
+	call Get2bpp
+	call WaitBGMap
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+; 88874
+
+
+
 DrawIntroPlayerPic: ; 88874
 ; Draw the player pic at (6,4).
 
@@ -16824,7 +56858,7 @@
 	ld hl, VTiles2
 	ld b, BANK(ChrisPic)
 	ld c, $31
-	call $f82
+	call Get2bpp
 
 ; Draw
 	xor a
@@ -16851,7 +56885,7 @@
 	ld de, KrisBackpic
 	ld hl, $9310
 	ld bc, $2231
-	call $f82
+	call Get2bpp
 	ret
 ; 88ed6
 
@@ -16910,8 +56944,35 @@
 	ret
 ; 0x8adef
 
-INCBIN "baserom.gbc", $8adef, $8b170 - $8adef
+INCBIN "baserom.gbc", $8adef, $8ae30 - $8adef
 
+Function8ae30: ; 8ae30
+	push de
+	push bc
+	call GetSecondaryMapHeaderPointer
+	ld a, h
+	cp $58
+	jr nz, .asm_8ae4a
+	ld a, l
+	cp $e8
+	jr nz, .asm_8ae4a
+	ld de, $0329
+	ld b, $1
+	call BitTable1Func
+	scf
+	jr .asm_8ae4b
+
+.asm_8ae4a
+	and a
+
+.asm_8ae4b
+	pop bc
+	pop de
+	ret
+; 8ae4e
+
+INCBIN "baserom.gbc", $8ae4e, $8b170 - $8ae4e
+
 SpecialDratini: ; 0x8b170
 ; if ScriptVar is 0 or 1, change the moveset of the last Dratini in the party.
 ;  0: give it a special moveset with Extremespeed.
@@ -17023,14 +57084,55 @@
 	scf
 	ret
 
-INCBIN "baserom.gbc", $8b1e1, $8ba24-$8b1e1
+INCBIN "baserom.gbc", $8b1e1, $8b342 - $8b1e1
 
 
+Function8b342: ; 8b342
+	call GetSecondaryMapHeaderPointer
+	ld d, h
+	ld e, l
+	xor a
+.asm_8b348
+	push af
+	ld hl, $7354
+	rst JumpTable
+	pop af
+	inc a
+	cp $3
+	jr nz, .asm_8b348
+	ret
+; 8b354
+
+INCBIN "baserom.gbc", $8b354, $8b35b - $8b354
+
+
+Function8b35b: ; 8b35b
+	ret
+; 8b35c
+
+Function8b35c: ; 8b35c
+	ret
+; 8b35d
+
+INCBIN "baserom.gbc", $8b35d, $8ba24 - $8b35d
+
+
 SECTION "bank23",ROMX,BANK[$23]
 
-INCBIN "baserom.gbc", $8c000, $8c011 - $8c000
+INCBIN "baserom.gbc", $8c000, $8c001 - $8c000
 
-TimeOfDayPals: ; 8c011
+
+Function8c001: ; 8c001
+	call UpdateTime
+	ld a, [TimeOfDay]
+	ld [CurTimeOfDay], a
+	call GetTimePalette
+	ld [TimeOfDayPal], a
+	ret
+; 8c011
+
+
+_TimeOfDayPals: ; 8c011
 ; return carry if pals are changed
 
 ; forced pals?
@@ -17092,7 +57194,7 @@
 	
 	
 ; restore bg palette 8
-	ld hl, $d03f ; last byte in Unkn1Pals
+	ld hl, CurFruit ; last byte in Unkn1Pals
 	
 ; save wram bank
 	ld a, [rSVBK]
@@ -17138,8 +57240,58 @@
 	ret
 ; 8c079
 
-INCBIN "baserom.gbc", $8c079, $8c117 - $8c079
+Function8c079: ; 8c079
+	ld c, $12
+	call GetTimePalFade
+	ld b, $4
+	call Function8c16d
+	ret
+; 8c084
 
+Function8c084: ; 8c084
+	call Function8c0c1
+	ld c, $9
+	call GetTimePalFade
+	ld b, $4
+	call Function8c15e
+	ret
+; 8c092
+
+INCBIN "baserom.gbc", $8c092, $8c0c1 - $8c092
+
+
+Function8c0c1: ; 8c0c1
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, $d000
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	ld hl, $d008
+	ld c, $6
+.asm_8c0d4
+	ld a, e
+	ld [hli], a
+	ld a, d
+	ld [hli], a
+	inc hl
+	inc hl
+	inc hl
+	inc hl
+	inc hl
+	inc hl
+	dec c
+	jr nz, .asm_8c0d4
+	pop af
+	ld [rSVBK], a
+	ret
+; 8c0e5
+
+INCBIN "baserom.gbc", $8c0e5, $8c117 - $8c0e5
+
 GetTimePalette: ; 8c117
 ; get time of day
 	ld a, [TimeOfDay]
@@ -17207,8 +57359,33 @@
 	ret
 ; 8c15e
 
-INCBIN "baserom.gbc", $8c15e, $8c17c - $8c15e
+Function8c15e: ; 8c15e
+.asm_8c15e
+	call DmgToCgbTimePals
+	inc hl
+	inc hl
+	inc hl
+	ld c, $2
+	call DelayFrames
+	dec b
+	jr nz, .asm_8c15e
+	ret
+; 8c16d
 
+Function8c16d: ; 8c16d
+.asm_8c16d
+	call DmgToCgbTimePals
+	dec hl
+	dec hl
+	dec hl
+	ld c, $2
+	call DelayFrames
+	dec b
+	jr nz, .asm_8c16d
+	ret
+; 8c17c
+
+
 GetTimePalFade: ; 8c17c
 ; check cgb
 	ld a, [hCGB]
@@ -17402,8 +57579,696 @@
 	db %00000000
 ; 8c20f
 
-INCBIN "baserom.gbc", $8c20f, $8e9ac - $8c20f
+INCBIN "baserom.gbc", $8c20f, $8c940 - $8c20f
 
+Function8c940: ; 8c940
+	ld a, e
+	and $1
+	ld [$cf63], a
+	call $496d
+	call WaitSFX
+	ld de, $001e
+	call StartSFX
+.asm_8c952
+	ld a, [$cf63]
+	bit 7, a
+	jr nz, .asm_8c96c
+	ld a, $90
+	ld [$c3b5], a
+	ld hl, $4f7a
+	ld a, $23
+	rst FarCall
+	call $4a0c
+	call DelayFrame
+	jr .asm_8c952
+
+.asm_8c96c
+	ret
+; 8c96d
+
+Function8c96d: ; 8c96d
+	ld hl, $4f53
+	ld a, $23
+	rst FarCall
+	ld de, $49cc
+	ld hl, VTiles1
+	ld bc, $2304
+	call Request2bpp
+	ld de, $498c
+	ld hl, $8840
+	ld bc, $2304
+	call Request2bpp
+	ret
+; 8c98c
+
+INCBIN "baserom.gbc", $8c98c, $8ca0c - $8c98c
+
+Function8ca0c: ; 8ca0c
+	ld a, [$cf63]
+	ld e, a
+	ld d, $0
+	ld hl, $4a1b
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 8ca1b
+
+INCBIN "baserom.gbc", $8ca1b, $8cf53 - $8ca1b
+
+
+Function8cf53: ; 8cf53
+	ld hl, $c300
+	ld bc, $00c1
+.asm_8cf59
+	ld [hl], $0
+	inc hl
+	dec bc
+	ld a, c
+	or b
+	jr nz, .asm_8cf59
+	ret
+; 8cf62
+
+Function8cf62: ; 8cf62
+	call Function8cf69
+	call DelayFrame
+	ret
+; 8cf69
+
+
+
+Function8cf69: ; 8cf69
+	push hl
+	push de
+	push bc
+	push af
+	ld a, $0
+	ld [$c3b5], a
+	call Function8cf7a
+	pop af
+	pop bc
+	pop de
+	pop hl
+	ret
+; 8cf7a
+
+Function8cf7a: ; 8cf7a
+	ld hl, $c314
+	ld e, $a
+.asm_8cf7f
+	ld a, [hl]
+	and a
+	jr z, .asm_8cf91
+	ld c, l
+	ld b, h
+	push hl
+	push de
+	call Function8d24b
+	call Function8d04c
+	pop de
+	pop hl
+	jr c, .asm_8cfa7
+
+.asm_8cf91
+	ld bc, $0010
+	add hl, bc
+	dec e
+	jr nz, .asm_8cf7f
+	ld a, [$c3b5]
+	ld l, a
+	ld h, $c4
+.asm_8cf9e
+	ld a, l
+	cp $a0
+	jr nc, .asm_8cfa7
+	xor a
+	ld [hli], a
+	jr .asm_8cf9e
+
+.asm_8cfa7
+	ret
+; 8cfa8
+
+INCBIN "baserom.gbc", $8cfa8, $8cfd6 - $8cfa8
+
+
+Function8cfd6: ; 8cfd6
+	push de
+	push af
+	ld hl, $c314
+	ld e, $a
+.asm_8cfdd
+	ld a, [hl]
+	and a
+	jr z, .asm_8cfec
+	ld bc, $0010
+	add hl, bc
+	dec e
+	jr nz, .asm_8cfdd
+	pop af
+	pop de
+	scf
+	ret
+
+.asm_8cfec
+	ld c, l
+	ld b, h
+	ld hl, $c3b4
+	inc [hl]
+	ld a, [hl]
+	and a
+	jr nz, .asm_8cff7
+	inc [hl]
+
+.asm_8cff7
+	pop af
+	ld e, a
+	ld d, $0
+	ld hl, $51c4
+	add hl, de
+	add hl, de
+	add hl, de
+	ld e, l
+	ld d, h
+	ld hl, $0000
+	add hl, bc
+	ld a, [$c3b4]
+	ld [hli], a
+	ld a, [de]
+	ld [hli], a
+	inc de
+	ld a, [de]
+	ld [hli], a
+	inc de
+	ld a, [de]
+	call Function8d109
+	ld [hli], a
+	pop de
+	ld hl, $0004
+	add hl, bc
+	ld a, e
+	ld [hli], a
+	ld a, d
+	ld [hli], a
+	xor a
+	ld [hli], a
+	ld [hli], a
+	xor a
+	ld [hli], a
+	ld [hli], a
+	dec a
+	ld [hli], a
+	xor a
+	ld [hli], a
+	ld [hli], a
+	ld [hli], a
+	ld [hli], a
+	ld [hl], a
+	ld a, c
+	ld [$c3b8], a
+	ld a, b
+	ld [$c3b9], a
+	ret
+; 8d036
+
+Function8d036: ; 8d036
+	ld hl, $0000
+	add hl, bc
+	ld [hl], $0
+	ret
+; 8d03d
+
+INCBIN "baserom.gbc", $8d03d, $8d04c - $8d03d
+
+
+Function8d04c: ; 8d04c
+	call Function8d0ec
+	call Function8d132
+	cp $fd
+	jr z, .asm_8d0b9
+	cp $fc
+	jr z, .asm_8d0b6
+	call Function8d1a2
+	ld a, [$c3ba]
+	add [hl]
+	ld [$c3ba], a
+	inc hl
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	push bc
+	ld a, [$c3b5]
+	ld e, a
+	ld d, $c4
+	ld a, [hli]
+	ld c, a
+.asm_8d071
+	ld a, [$c3bc]
+	ld b, a
+	ld a, [$c3be]
+	add b
+	ld b, a
+	ld a, [$c3bf]
+	add b
+	ld b, a
+	call Function8d0be
+	add b
+	ld [de], a
+	inc hl
+	inc de
+	ld a, [$c3bb]
+	ld b, a
+	ld a, [$c3bd]
+	add b
+	ld b, a
+	ld a, [$c3c0]
+	add b
+	ld b, a
+	call Function8d0ce
+	add b
+	ld [de], a
+	inc hl
+	inc de
+	ld a, [$c3ba]
+	add [hl]
+	ld [de], a
+	inc hl
+	inc de
+	call Function8d0de
+	ld [de], a
+	inc hl
+	inc de
+	ld a, e
+	ld [$c3b5], a
+	cp $a0
+	jr nc, .asm_8d0bb
+	dec c
+	jr nz, .asm_8d071
+	pop bc
+	jr .asm_8d0b9
+
+.asm_8d0b6
+	call Function8d036
+
+.asm_8d0b9
+	and a
+	ret
+
+.asm_8d0bb
+	pop bc
+	scf
+	ret
+; 8d0be
+
+Function8d0be: ; 8d0be
+	push hl
+	ld a, [hl]
+	ld hl, $c3b8
+	bit 6, [hl]
+	jr z, .asm_8d0cc
+	add $8
+	xor $ff
+	inc a
+
+.asm_8d0cc
+	pop hl
+	ret
+; 8d0ce
+
+Function8d0ce: ; 8d0ce
+	push hl
+	ld a, [hl]
+	ld hl, $c3b8
+	bit 5, [hl]
+	jr z, .asm_8d0dc
+	add $8
+	xor $ff
+	inc a
+
+.asm_8d0dc
+	pop hl
+	ret
+; 8d0de
+
+Function8d0de: ; 8d0de
+	ld a, [$c3b8]
+	ld b, a
+	ld a, [hl]
+	xor b
+	and $e0
+	ld b, a
+	ld a, [hl]
+	and $1f
+	or b
+	ret
+; 8d0ec
+
+Function8d0ec: ; 8d0ec
+	xor a
+	ld [$c3b8], a
+	ld hl, $0003
+	add hl, bc
+	ld a, [hli]
+	ld [$c3ba], a
+	ld a, [hli]
+	ld [$c3bb], a
+	ld a, [hli]
+	ld [$c3bc], a
+	ld a, [hli]
+	ld [$c3bd], a
+	ld a, [hli]
+	ld [$c3be], a
+	ret
+; 8d109
+
+Function8d109: ; 8d109
+	push hl
+	push bc
+	ld hl, $c300
+	ld b, a
+	ld c, $a
+.asm_8d111
+	ld a, [hli]
+	cp b
+	jr z, .asm_8d11c
+	inc hl
+	dec c
+	jr nz, .asm_8d111
+	xor a
+	jr .asm_8d11d
+
+.asm_8d11c
+	ld a, [hl]
+
+.asm_8d11d
+	pop bc
+	pop hl
+	ret
+; 8d120
+
+Function8d120: ; 8d120
+	ld hl, $0001
+	add hl, bc
+	ld [hl], a
+	ld hl, $0008
+	add hl, bc
+	ld [hl], $0
+	ld hl, $000a
+	add hl, bc
+	ld [hl], $ff
+	ret
+; 8d132
+
+
+Function8d132: ; 8d132
+.asm_8d132
+	ld hl, $0008
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_8d142
+	dec [hl]
+	call Function8d189
+	ld a, [hli]
+	push af
+	jr .asm_8d163
+
+.asm_8d142
+	ld hl, $000a
+	add hl, bc
+	inc [hl]
+	call Function8d189
+	ld a, [hli]
+	cp $fe
+	jr z, .asm_8d17b
+	cp $ff
+	jr z, .asm_8d16d
+	push af
+	ld a, [hl]
+	push hl
+	and $3f
+	ld hl, $0009
+	add hl, bc
+	add [hl]
+	ld hl, $0008
+	add hl, bc
+	ld [hl], a
+	pop hl
+
+.asm_8d163
+	ld a, [hl]
+	and $c0
+	srl a
+	ld [$c3b8], a
+	pop af
+	ret
+
+.asm_8d16d
+	xor a
+	ld hl, $0008
+	add hl, bc
+	ld [hl], a
+	ld hl, $000a
+	add hl, bc
+	dec [hl]
+	dec [hl]
+	jr .asm_8d132
+
+.asm_8d17b
+	xor a
+	ld hl, $0008
+	add hl, bc
+	ld [hl], a
+	dec a
+	ld hl, $000a
+	add hl, bc
+	ld [hl], a
+	jr .asm_8d132
+; 8d189
+
+Function8d189: ; 8d189
+	ld hl, $0001
+	add hl, bc
+	ld e, [hl]
+	ld d, $0
+	ld hl, $56e6
+	add hl, de
+	add hl, de
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld hl, $000a
+	add hl, bc
+	ld l, [hl]
+	ld h, $0
+	add hl, hl
+	add hl, de
+	ret
+; 8d1a2
+
+Function8d1a2: ; 8d1a2
+	ld e, a
+	ld d, $0
+	ld hl, $594d
+	add hl, de
+	add hl, de
+	add hl, de
+	ret
+; 8d1ac
+
+INCBIN "baserom.gbc", $8d1ac, $8d24b - $8d1ac
+
+
+Function8d24b: ; 8d24b
+	ld hl, $0002
+	add hl, bc
+	ld e, [hl]
+	ld d, $0
+	ld hl, $525b
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 8d25b
+
+INCBIN "baserom.gbc", $8d25b, $8e72a - $8d25b
+
+
+Function8e72a: ; 8e72a
+	add $10
+	and $3f
+	cp $20
+	jr nc, .asm_8e737
+	call Function8e741
+	ld a, h
+	ret
+
+.asm_8e737
+	and $1f
+	call Function8e741
+	ld a, h
+	xor $ff
+	inc a
+	ret
+; 8e741
+
+Function8e741: ; 8e741
+	ld e, a
+	ld a, d
+	ld d, $0
+	ld hl, $675d
+	add hl, de
+	add hl, de
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld hl, $0000
+.asm_8e750
+	srl a
+	jr nc, .asm_8e755
+	add hl, de
+
+.asm_8e755
+	sla e
+	rl d
+	and a
+	jr nz, .asm_8e750
+	ret
+; 8e75d
+
+INCBIN "baserom.gbc", $8e75d, $8e79d - $8e75d
+
+
+Function8e79d: ; 8e79d
+	ld a, [hSGB]
+	ld de, $67f4
+	and a
+	jr z, .asm_8e7a8
+	ld de, $6804
+
+.asm_8e7a8
+	ld hl, VTiles0
+	ld bc, $2301
+	call Request2bpp
+	ld c, $8
+	ld d, $0
+.asm_8e7b5
+	push bc
+	call Function8e7c6
+	call DelayFrame
+	pop bc
+	inc d
+	inc d
+	dec c
+	jr nz, .asm_8e7b5
+	call ClearSprites
+	ret
+; 8e7c6
+
+Function8e7c6: ; 8e7c6
+	ld hl, Sprites
+	ld c, $8
+.asm_8e7cb
+	ld a, c
+	and a
+	ret z
+	dec c
+	ld a, c
+	sla a
+	sla a
+	sla a
+	push af
+	push de
+	push hl
+	call $672c
+	pop hl
+	pop de
+	add $68
+	ld [hli], a
+	pop af
+	push de
+	push hl
+	call Function8e72a
+	pop hl
+	pop de
+	add $54
+	ld [hli], a
+	ld a, $0
+	ld [hli], a
+	ld a, $6
+	ld [hli], a
+	jr .asm_8e7cb
+; 8e7f4
+
+INCBIN "baserom.gbc", $8e7f4, $8e814 - $8e7f4
+
+
+Function8e814: ; 8e814
+	push hl
+	push de
+	push bc
+	push af
+	ld hl, $c300
+	ld bc, $00c1
+.asm_8e81e
+	ld [hl], $0
+	inc hl
+	dec bc
+	ld a, c
+	or b
+	jr nz, .asm_8e81e
+	pop af
+	pop bc
+	pop de
+	pop hl
+	ret
+; 8e82b
+
+Function8e82b: ; 8e82b
+	ld a, e
+	call ReadMonMenuIcon
+	ld l, a
+	ld h, $0
+	add hl, hl
+	ld de, IconPointers
+	add hl, de
+	ld a, [hli]
+	ld e, a
+	ld d, [hl]
+	ld b, $23
+	ld c, $8
+	ret
+; 8e83f
+
+Function8e83f: ; 8e83f
+	push hl
+	push de
+	push bc
+	call Function8e849
+	pop bc
+	pop de
+	pop hl
+	ret
+; 8e849
+
+Function8e849: ; 8e849
+	ld d, $0
+	ld hl, $6854
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 8e854
+
+INCBIN "baserom.gbc", $8e854, $8e9ac - $8e854
+
 GetSpeciesIcon: ; 8e9ac
 ; Load species icon into VRAM at tile a
 	push de
@@ -17482,12 +58347,46 @@
 GetGFXUnlessMobile: ; 8ea3f
 	ld a, [InLinkBattle]
 	cp 4 ; Mobile Link Battle
-	jp nz, $eba
-	jp $dc9
+	jp nz, Request2bpp
+	jp Functiondc9
 ; 8ea4a
 
-INCBIN "baserom.gbc", $8ea4a, $8eab3 - $8ea4a
+Function8ea4a: ; 8ea4a
+	ld hl, $c314
+	ld e, $6
+	ld a, [$cfa9]
+	ld d, a
+.asm_8ea53
+	ld a, [hl]
+	and a
+	jr z, .asm_8ea69
+	cp d
+	jr z, .asm_8ea5e
+	ld a, $0
+	jr .asm_8ea60
 
+.asm_8ea5e
+	ld a, $2
+
+.asm_8ea60
+	push hl
+	ld c, l
+	ld b, h
+	ld hl, $0002
+	add hl, bc
+	ld [hl], a
+	pop hl
+
+.asm_8ea69
+	ld bc, $0010
+	add hl, bc
+	dec e
+	jr nz, .asm_8ea53
+	ret
+; 8ea71
+
+INCBIN "baserom.gbc", $8ea71, $8eab3 - $8ea71
+
 ReadMonMenuIcon: ; 8eab3
 	cp EGG
 	jr z, .egg
@@ -17840,8 +58739,196 @@
 
 SECTION "bank24",ROMX,BANK[$24]
 
-INCBIN "baserom.gbc", $90000, $909F2-$90000
+INCBIN "baserom.gbc", $90000, $9000f - $90000
 
+
+Function9000f: ; 9000f
+	call Function9001c
+	jr nc, .asm_90017
+	xor a
+	ld [hl], a
+	ret
+
+.asm_90017
+	scf
+	ret
+; 90019
+
+Function90019: ; 90019
+	jp Function9001c
+; 9001c
+
+Function9001c: ; 9001c
+	ld hl, $dc7c
+	ld b, $a
+.asm_90021
+	ld a, [hli]
+	cp c
+	jr z, .asm_9002a
+	dec b
+	jr nz, .asm_90021
+	xor a
+	ret
+
+.asm_9002a
+	dec hl
+	scf
+	ret
+; 9002d
+
+INCBIN "baserom.gbc", $9002d, $90069 - $9002d
+
+
+Function90069: ; 90069
+	ld a, [hROMBank]
+	push af
+	ld a, b
+	rst Bankswitch
+
+	call PlaceString
+	pop af
+	rst Bankswitch
+
+	ret
+; 90074
+
+INCBIN "baserom.gbc", $90074, $9029a - $90074
+
+
+Function9029a: ; 9029a
+	ld a, b
+	ld [DefaultFlypoint], a
+	ld a, e
+	ld [$d003], a
+	ld a, d
+	ld [$d004], a
+	call Function902b3
+	call Function902b3
+	ld a, $41
+	ld hl, $60d3
+	rst FarCall
+	ret
+; 902b3
+
+Function902b3: ; 902b3
+	call Function9033f
+	call $4357
+	call Function902c9
+	call $4357
+	call Function90375
+	call $4357
+	call Function902c9
+	ret
+; 902c9
+
+Function902c9: ; 902c9
+	call Function90375
+	ld hl, $c4c9
+	ld [hl], $62
+	inc hl
+	inc hl
+	ld a, [DefaultFlypoint]
+	ld b, a
+	ld a, [$d003]
+	ld e, a
+	ld a, [$d004]
+	ld d, a
+	call Function90069
+	ret
+; 902e3
+
+INCBIN "baserom.gbc", $902e3, $902eb - $902e3
+
+
+Function902eb: ; 902eb
+	call Function9031d
+	call Function90355
+	call Function9032f
+	call Function90355
+	call Function9033b
+	call Function90355
+	call Function9032f
+	call Function90355
+	call Function9033b
+	call Function90355
+	call Function9032f
+	call Function90355
+	call Function9033b
+	call Function90355
+	ret
+; 90316
+
+INCBIN "baserom.gbc", $90316, $9031d - $90316
+
+
+Function9031d: ; 9031d
+	ld hl, UnknownText_0x9032a
+	call PrintText
+	ld de, SFX_HANG_UP
+	call StartSFX
+	ret
+; 9032a
+
+UnknownText_0x9032a: ; 9032a
+	text_jump UnknownText_0x1c5580, BANK(UnknownText_0x1c5580)
+	db "@"
+; 9032f
+
+
+Function9032f: ; 9032f
+	ld hl, UnknownText_0x90336
+	call PrintText
+	ret
+; 90336
+
+UnknownText_0x90336: ; 0x90336
+	text_jump UnknownText_0x1c5588, BANK(UnknownText_0x1c5588)
+	db "@"
+; 0x9033b
+
+
+Function9033b: ; 9033b
+	call SpeechTextBox
+	ret
+; 9033f
+
+Function9033f: ; 9033f
+	call WaitSFX
+	ld de, SFX_CALL
+	call StartSFX
+	call Function90375
+	call Function1ad2
+	ld a, $13
+	ld hl, $5188
+	rst FarCall
+	ret
+; 90355
+
+Function90355: ; 90355
+	jr .asm_90357
+
+.asm_90357
+	ld c, $14
+	call DelayFrames
+	ld a, $13
+	ld hl, $5188
+	rst FarCall
+	ret
+; 90363
+
+INCBIN "baserom.gbc", $90363, $90375 - $90363
+
+
+Function90375: ; 90375
+	ld hl, TileMap
+	ld b, $2
+	ld c, $12
+	call TextBox
+	ret
+; 90380
+
+INCBIN "baserom.gbc", $90380, $909f2 - $90380
+
 dw Sunday
 dw Monday
 dw Tuesday
@@ -17873,8 +58960,153 @@
 INCBIN "gfx/misc/pokegear_sprites.lz"
 ; 91508
 
-INCBIN "baserom.gbc", $91508, $91bb5 - $91508
+INCBIN "baserom.gbc", $91508, $918bf - $91508
 
+RadioChannels: ; 918bf
+; Buena's Password is at 0x917c3
+	db "OAK's ", $e1, $e2, " Talk@"
+	db "#DEX Show@"
+	db "#MON Music@"
+	db "Lucky Channel@"
+	db "?????@"
+	db "Places & People@"
+	db "Let's All Sing!@"
+	db "# FLUTE@"
+; 9191c
+
+INCBIN "baserom.gbc", $9191c, $91ae1 - $9191c
+
+Function91ae1: ; 91ae1
+	ld a, e
+	and a
+	jr nz, .asm_91aec
+	call Function91ff2
+	call FillJohtoMap
+	ret
+
+.asm_91aec
+	call Function91ff2
+	call FillKantoMap
+	ret
+; 91af3
+
+
+Function91af3: ; 91af3
+	call WhiteBGMap
+	call ClearTileMap
+	call ClearSprites
+	ld hl, $ffaa
+	ld a, [hl]
+	push af
+	ld [hl], $1
+	xor a
+	ld [hBGMapMode], a
+	callba Function8cf53
+	call Function91ff2
+	ld de, $62e1
+	ld hl, $9300
+	ld bc, $2406
+	call Request1bpp
+	call FlyMap
+	call Function91c8f
+	ld b, $2
+	call GetSGBLayout
+	call Function32f9
+.asm_91b29
+	call Functiona57
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and $2
+	jr nz, .asm_91b4a
+	ld a, [hl]
+	and $1
+	jr nz, .asm_91b4e
+	call Function91b73
+	call Function91c17
+	callba Function8cf69
+	call DelayFrame
+	jr .asm_91b29
+
+.asm_91b4a
+	ld a, $ff
+	jr .asm_91b5a
+
+.asm_91b4e
+	ld a, [DefaultFlypoint]
+	ld l, a
+	ld h, $0
+	add hl, hl
+	ld de, $5c5f
+	add hl, de
+	ld a, [hl]
+
+.asm_91b5a
+	ld [DefaultFlypoint], a
+	pop af
+	ld [$ffaa], a
+	call WhiteBGMap
+	ld a, $90
+	ld [hWY], a
+	xor a
+	ld [hBGMapAddress], a
+	ld a, $98
+	ld [$ffd7], a
+	ld a, [DefaultFlypoint]
+	ld e, a
+	ret
+; 91b73
+
+Function91b73: ; 91b73
+	ld a, [StartFlypoint]
+	ld e, a
+	ld a, [EndFlypoint]
+	ld d, a
+	ld hl, $ffa9
+	ld a, [hl]
+	and $40
+	jr nz, .asm_91b89
+	ld a, [hl]
+	and $80
+	jr nz, .asm_91b9b
+	ret
+
+.asm_91b89
+	ld hl, DefaultFlypoint
+	ld a, [hl]
+	cp d
+	jr nz, .asm_91b93
+	ld a, e
+	dec a
+	ld [hl], a
+
+.asm_91b93
+	inc [hl]
+	call Function91c3c
+	jr z, .asm_91b89
+	jr .asm_91bab
+
+.asm_91b9b
+	ld hl, DefaultFlypoint
+	ld a, [hl]
+	cp e
+	jr nz, .asm_91ba5
+	ld a, d
+	inc a
+	ld [hl], a
+
+.asm_91ba5
+	dec [hl]
+	call Function91c3c
+	jr z, .asm_91b9b
+
+.asm_91bab
+	call TownMapBubble
+	call WaitBGMap
+	xor a
+	ld [hBGMapMode], a
+	ret
+; 91bb5
+
 TownMapBubble: ; 91bb5
 ; Draw the bubble containing the location text in the town map HUD
 	
@@ -17949,8 +59181,46 @@
 	ret
 ; 91c17
 
-INCBIN "baserom.gbc", $91c17, $91c50 - $91c17
+Function91c17: ; 91c17
+	ld a, [DefaultFlypoint]
+	ld l, a
+	ld h, $0
+	add hl, hl
+	ld de, Flypoints
+	add hl, de
+	ld e, [hl]
+	callba GetLandmarkCoords
+	ld a, [$d003]
+	ld c, a
+	ld a, [$d004]
+	ld b, a
+	ld hl, $0004
+	add hl, bc
+	ld [hl], e
+	ld hl, $0005
+	add hl, bc
+	ld [hl], d
+	ret
+; 91c3c
 
+Function91c3c: ; 91c3c
+	push bc
+	push de
+	push hl
+	ld l, [hl]
+	ld h, $0
+	add hl, hl
+	ld de, $5c5f
+	add hl, de
+	ld c, [hl]
+	call GetFlyPermission
+	pop hl
+	pop de
+	pop bc
+	and a
+	ret
+; 91c50
+
 GetFlyPermission: ; 91c50
 ; Return flypoint c permission flag in a
 	ld hl, FlypointPerms
@@ -17995,8 +59265,12 @@
 	
 ; 91c8e
 
-INCBIN "baserom.gbc", $91c8e, $91c90 - $91c8e
+INCBIN "baserom.gbc", $91c8e, $91c8f - $91c8e
 
+Function91c8f: ; 91c8f
+	ret
+; 91c90
+
 FlyMap: ; 91c90
 	
 	ld a, [MapGroup]
@@ -18103,7 +59377,7 @@
 	call TownMapBubble
 	call TownMapPals
 	
-	ld hl, $9800 ; BG Map 0
+	ld hl, VBGMap0 ; BG Map 0
 	call TownMapBGUpdate
 	
 	call TownMapMon
@@ -18250,7 +59524,7 @@
 ; Animation/palette
 	ld de, $0000
 	ld a, $0
-	call $3b2a
+	call Function3b2a
 	
 	ld hl, 3
 	add hl, bc
@@ -18270,7 +59544,7 @@
 ; Standing icon
 	ld hl, $8100
 	ld c, 4 ; # tiles
-	call $eba
+	call Request2bpp
 	
 ; Walking icon
 	ld hl, $00c0
@@ -18280,7 +59554,7 @@
 	ld hl, $8140
 	ld c, 4 ; # tiles
 	ld a, $30
-	call $eba
+	call Request2bpp
 	
 ; Animation/palette
 	ld de, $0000
@@ -18292,7 +59566,7 @@
 	
 .asm_91fd3
 	ld a, b
-	call $3b2a
+	call Function3b2a
 	
 	ld hl, $0003
 	add hl, bc
@@ -18313,15 +59587,24 @@
 	ret
 ; 0x91ff2
 
-INCBIN "baserom.gbc", $91ff2, $91fff - $91ff2
+Function91ff2: ; 91ff2
+	ld hl, TownMapGFX
+	ld de, VTiles2
+	ld bc, BANK(TownMapGFX) << 8 + $30
+	call Functione73
+	ret
+; 91fff
 
-JohtoMap:
-INCBIN "baserom.gbc", $91fff, $92168 - $91fff
 
-KantoMap:
-INCBIN "baserom.gbc", $92168, $922d1 - $92168
+JohtoMap: ; 91fff
+INCBIN "gfx/misc/johto.bin"
+; 92168
 
+KantoMap: ; 92168
+INCBIN "gfx/misc/kanto.bin"
+; 922d1
 
+
 INCBIN "baserom.gbc", $922d1, $92402 - $922d1
 
 
@@ -18368,23 +59651,199 @@
 INCLUDE "maps/second_map_headers.asm"
 
 
-INCBIN "baserom.gbc", $966b0, $96795 - $966b0
+Function966b0: ; 966b0
+	xor a
+	ld [$d432], a
+.asm_966b4
+	ld a, [$d432]
+	ld hl, .pointers
+	rst JumpTable
+	ld a, [$d432]
+	cp 3 ; done
+	jr nz, .asm_966b4
+.done
+	ret
 
+.pointers
+	dw Function96724
+	dw Function9673e
+	dw Function96773
+	dw .done
+; 966cb
 
+
+Function966cb: ; 966cb
+	xor a
+	ld [ScriptFlags3], a
+	ret
+; 966d0
+
+Function966d0: ; 966d0
+	ld a, $ff
+	ld [ScriptFlags3], a
+	ret
+; 966d6
+
+Function966d6: ; 966d6
+	ld hl, ScriptFlags3
+	bit 5, [hl]
+	ret
+; 966dc
+
+Function966dc: ; 966dc
+	ld hl, ScriptFlags3
+	res 2, [hl]
+	ret
+; 966e2
+
+Function966e2: ; 966e2
+	ld hl, ScriptFlags3
+	res 1, [hl]
+	ret
+; 966e8
+
+Function966e8: ; 966e8
+	ld hl, ScriptFlags3
+	res 0, [hl]
+	ret
+; 966ee
+
+Function966ee: ; 966ee
+	ld hl, ScriptFlags3
+	res 4, [hl]
+	ret
+; 966f4
+
+Function966f4: ; 966f4
+	ld hl, ScriptFlags3
+	set 2, [hl]
+	ret
+; 966fa
+
+Function966fa: ; 966fa
+	ld hl, ScriptFlags3
+	set 1, [hl]
+	ret
+; 96700
+
+Function96700: ; 96700
+	ld hl, ScriptFlags3
+	set 0, [hl]
+	ret
+; 96706
+
+Function96706: ; 96706
+	ld hl, ScriptFlags3
+	set 4, [hl]
+	ret
+; 9670c
+
+Function9670c: ; 9670c
+	ld hl, ScriptFlags3
+	bit 2, [hl]
+	ret
+; 96712
+
+Function96712: ; 96712
+	ld hl, ScriptFlags3
+	bit 1, [hl]
+	ret
+; 96718
+
+Function96718: ; 96718
+	ld hl, ScriptFlags3
+	bit 0, [hl]
+	ret
+; 9671e
+
+Function9671e: ; 9671e
+	ld hl, ScriptFlags3
+	bit 4, [hl]
+	ret
+; 96724
+
+
+Function96724: ; 96724
+	xor a
+	ld [ScriptVar], a
+	xor a
+	ld [ScriptRunning], a
+	ld hl, $d432
+	ld bc, $3e
+	call ByteFill
+	ld a, $4
+	ld hl, $53e5
+	rst FarCall
+	call ClearJoypadPublic
+	; fallthrough
+; 9673e
+
+
+Function9673e: ; 9673e
+	xor a
+	ld [$d453], a
+	ld [$d454], a
+	call Function968d1
+	ld a, $5
+	ld hl, $5363
+	rst FarCall
+	call Function966cb
+	ld a, [$ff9f]
+	cp $f7
+	jr nz, .asm_9675a
+	call Function966d0
+.asm_9675a
+	ld a, [$ff9f]
+	cp $f3
+	jr nz, .asm_96764
+	xor a
+	ld [PoisonStepCount], a
+.asm_96764
+	xor a
+	ld [$ff9f], a
+	ld a, $2
+	ld [$d432], a
+	ret
+; 9676d
+
+
+Function9676d: ; 9676d
+	ld c, 30
+	call DelayFrames
+	ret
+; 96773
+
+
+Function96773: ; 96773
+	call ResetOverworldDelay
+	call Function967c1
+	callba Function97e08
+	call DoEvents
+	ld a, [$d432]
+	cp 2
+	ret nz
+	call Function967d1
+	call NextOverworldFrame
+	call Function967e1
+	call Function967f4
+	ret
+; 96795
+
+
 DoEvents: ; 96795
 	ld a, [$d433]
 	ld hl, .pointers
 	rst JumpTable
 	ret
-; 9679d
 
 .pointers
 	dw Function967a1
 	dw Function967ae
+; 967a1
 
 Function967a1: ; 967a1
 	call PlayerEvents
-	call $66cb
+	call Function966cb
 	callba ScriptEvents
 	ret
 ; 967ae
@@ -18394,12 +59853,91 @@
 ; 967af
 
 
-INCBIN "baserom.gbc", $967af, $9681f - $967af
+MaxOverworldDelay: ; 967af
+	db 2
+; 967b0
 
+ResetOverworldDelay: ; 967b0
+	ld a, [MaxOverworldDelay]
+	ld [OverworldDelay], a
+	ret
+; 967b7
 
+NextOverworldFrame: ; 967b7
+	ld a, [OverworldDelay]
+	and a
+	ret z
+	ld c, a
+	call DelayFrames
+	ret
+; 967c1
+
+
+Function967c1: ; 967c1
+	ld a, [$d433]
+	cp 1
+	ret z
+	call UpdateTime
+	call GetJoypadPublic
+	call TimeOfDayPals
+	ret
+; 967d1
+
+Function967d1: ; 967d1
+	callba Function576a
+	ld a, $3
+	ld hl, $5497
+	rst FarCall
+	call Function96812
+	ret
+; 967e1
+
+Function967e1: ; 967e1
+	callba Function5920
+	ld a, $3
+	ld hl, $54d2
+	rst FarCall
+	ld a, $2e
+	ld hl, $4098
+	rst FarCall
+	ret
+; 967f4
+
+Function967f4: ; 967f4
+	ld a, [$d150]
+	bit 5, a
+	jr z, .asm_96806
+	bit 6, a
+	jr z, .asm_9680c
+	bit 4, a
+	jr nz, .asm_9680c
+	call Function966d0
+
+.asm_96806
+	ld a, $0
+	ld [$d433], a
+	ret
+
+.asm_9680c
+	ld a, $1
+	ld [$d433], a
+	ret
+; 96812
+
+Function96812: ; 96812
+	ld hl, $d150
+	bit 6, [hl]
+	ret z
+	ld a, $2
+	ld hl, $41ca
+	rst FarCall
+
+	ret
+; 9681f
+
+
 PlayerEvents: ; 9681f
 
-; Reset carry.
 	xor a
 
 	ld a, [ScriptRunning]
@@ -18406,7 +59944,7 @@
 	and a
 	ret nz
 
-	call $68e4
+	call Function968e4
 
 	call CheckTrainerBattle3
 	jr c, .asm_96848
@@ -18414,13 +59952,13 @@
 	call CheckTileEvent
 	jr c, .asm_96848
 
-	call $7c30
+	call Function97c30
 	jr c, .asm_96848
 
-	call $68ec
+	call Function968ec
 	jr c, .asm_96848
 
-	call $693a
+	call Function9693a
 	jr c, .asm_96848
 
 	call OWPlayerInput
@@ -18432,13 +59970,11 @@
 
 .asm_96848
 	push af
-	ld a, $25
-	ld hl, $6c56
-	rst FarCall
+	callba Function96c56
 	pop af
 
 	ld [ScriptRunning], a
-	call $6beb
+	call Function96beb
 	ld a, [ScriptRunning]
 	cp 4
 	jr z, .asm_96865
@@ -18472,7 +60008,7 @@
 CheckTileEvent: ; 96874
 ; Check for warps, tile triggers or wild battles.
 
-	call $670c
+	call Function9670c
 	jr z, .asm_96886
 
 	ld a, $41
@@ -18480,30 +60016,29 @@
 	rst FarCall
 	jr c, .asm_968a6
 
-	call $2238
+	call Function2238
 	jr c, .asm_968aa
 
 .asm_96886
-	call $6712
+	call Function96712
 	jr z, .asm_96890
 
-	call $2ad4
+	call Function2ad4
 	jr c, .asm_968ba
 
 .asm_96890
-	call $6718
+	call Function96718
 	jr z, .asm_96899
 
-	call $6b79
+	call CountStep
 	ret c
 
 .asm_96899
-	call $671e
+	call Function9671e
 	jr z, .asm_968a4
 
-	call $7cc0
+	call Function97cc0
 	ret c
-
 	jr .asm_968a4
 
 .asm_968a4
@@ -18517,7 +60052,7 @@
 
 .asm_968aa
 	ld a, [StandingTile]
-	call $18a6
+	call CheckPitTile
 	jr nz, .asm_968b6
 	ld a, 6
 	scf
@@ -18533,15 +60068,144 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	call $2c57
+	call GetMapEventBank
 	call PushScriptPointer
 	ret
 ; 968c7
 
 
-INCBIN "baserom.gbc", $968c7, $96974 - $968c7
+Function968c7: ; 968c7
+	ld hl, $d452
+	ld a, [hl]
+	and a
+	ret z
+	dec [hl]
+	ret z
+	scf
+	ret
+; 968d1
 
+Function968d1: ; 968d1
+	ld a, 5
+	ld [$d452], a
+	ret
+; 968d7
 
+Function968d7: ; 968d7
+	ret
+; 968d8
+
+Function968d8: ; 968d8
+	ld a, [$d452]
+	cp 2
+	ret nc
+	ld a, 2
+	ld [$d452], a
+	ret
+; 968e4
+
+Function968e4: ; 968e4
+	call Function966d6
+	ret z
+	call Function2f3e
+	ret
+; 968ec
+
+Function968ec: ; 968ec
+	ld a, [$dc07]
+	and a
+	jr z, .asm_96938
+
+	ld c, a
+	call Function211b
+	cp c
+	jr nc, .asm_96938
+
+	ld e, a
+	ld d, 0
+	ld hl, $dc08
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	add hl, de
+	add hl, de
+	add hl, de
+	add hl, de
+
+	call GetMapEventBank
+	call GetFarHalfword
+	call GetMapEventBank
+	call PushScriptPointer
+
+	ld hl, ScriptFlags
+	res 3, [hl]
+
+	callba Function96c56
+	callba ScriptEvents
+
+	ld hl, ScriptFlags
+	bit 3, [hl]
+	jr z, .asm_96938
+
+	ld hl, $d44f
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [$d44e]
+	call PushScriptPointer
+	scf
+	ret
+
+.asm_96938
+	xor a
+	ret
+; 9693a
+
+Function9693a: ; 9693a
+	ld a, [InLinkBattle]
+	and a
+	jr nz, .asm_96964
+	ld hl, StatusFlags2
+	bit 2, [hl]
+	jr z, .asm_96951
+	ld a, $4
+	ld hl, Route7_SecondMapHeader
+	rst FarCall
+	jr c, .asm_96966
+	xor a
+	ret
+
+.asm_96951
+	ld a, $4
+	ld hl, $5452
+	rst FarCall
+	ld a, $4
+	ld hl, $54e7
+	rst FarCall
+	ld a, $24
+	ld hl, $4074
+	rst FarCall
+	ret c
+
+.asm_96964
+	xor a
+	ret
+
+.asm_96966
+	ld a, $4
+	ld hl, $75f8
+	call PushScriptPointer
+	scf
+	ret
+; 96970
+
+Function96970: ; 96970
+	ld a, 8
+	scf
+	ret
+; 96974
+
+
 OWPlayerInput: ; 96974
 
 	call PlayerMovement
@@ -18580,7 +60244,7 @@
 	ret c
 	call TryReadSign
 	ret c
-	call $7c5f
+	call Function97c5f
 	ret c
 	xor a
 	ret
@@ -18605,7 +60269,7 @@
 .IsObject
 	call PlayTalkObject
 	ld a, [hConnectedMapWidth]
-	call $1ae5
+	call Function1ae5
 	ld hl, $0001
 	add hl, bc
 	ld a, [hl]
@@ -18653,7 +60317,7 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	call $2c57
+	call GetMapEventBank
 	call PushScriptPointer
 ;	ld a, -1
 	ret
@@ -18665,7 +60329,7 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	call $2c57
+	call GetMapEventBank
 	ld de, EngineBuffer1
 	ld bc, 2
 	call FarCopyBytes
@@ -18709,7 +60373,7 @@
 	ret
 
 .IsSign
-	ld a, [$d040]
+	ld a, [MartPointer]
 	ld hl, .signs
 	rst JumpTable
 	ret
@@ -18743,7 +60407,7 @@
 	ld a, [PlayerDirection]
 	and %1100
 	cp b
-	jp nz, $6ad6
+	jp nz, .dontread
 
 .read
 	call PlayTalkObject
@@ -18751,7 +60415,7 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	call $2c57
+	call GetMapEventBank
 	call PushScriptPointer
 	scf
 	ret
@@ -18758,9 +60422,9 @@
 
 .itemifset
 	call CheckSignFlag
-	jp nz, $6ad6
+	jp nz, .dontread
 	call PlayTalkObject
-	call $2c57
+	call GetMapEventBank
 	ld de, EngineBuffer1
 	ld bc, 3
 	call FarCopyBytes
@@ -18773,7 +60437,7 @@
 .asm_96aa2
 	call CheckSignFlag
 	jr nz, .dontread
-	call $2c57
+	call GetMapEventBank
 	ld de, EngineBuffer1
 	ld bc, 3
 	call FarCopyBytes
@@ -18794,9 +60458,9 @@
 	pop hl
 	inc hl
 	inc hl
-	call $2c57
+	call GetMapEventBank
 	call GetFarHalfword
-	call $2c57
+	call GetMapEventBank
 	call PushScriptPointer
 	scf
 	ret
@@ -18813,7 +60477,7 @@
 	ld h, [hl]
 	ld l, a
 	push hl
-	call $2c57
+	call GetMapEventBank
 	call GetFarHalfword
 	ld e, l
 	ld d, h
@@ -18853,7 +60517,7 @@
 ; 96b10
 
 .seven ; 96b10
-	call $68d7 ; empty
+	call Function968d7 ; empty
 	xor a
 	ld c, a
 	ret
@@ -18953,9 +60617,184 @@
 ; 96b79
 
 
-INCBIN "baserom.gbc", $96b79, $96c5e - $96b79
+CountStep: ; 96b79
+	ld a, [InLinkBattle]
+	and a
+	jr nz, .asm_96bc9
 
+	ld a, $24
+	ld hl, $4136
+	rst FarCall
+	jr c, .asm_96bcb
 
+	call Function96bd7
+	jr c, .asm_96bcb
+
+	ld hl, PoisonStepCount
+	inc [hl]
+	ld hl, StepCount
+	inc [hl]
+	jr nz, .asm_96b9c
+
+	callba StepHappiness
+
+.asm_96b9c
+	ld a, [StepCount]
+	cp $80
+	jr nz, .asm_96bab
+
+	callba Function16f3e
+	jr nz, .asm_96bcf
+
+.asm_96bab
+	callba DaycareStep
+
+	ld hl, PoisonStepCount
+	ld a, [hl]
+	cp 4
+	jr c, .asm_96bc3
+	ld [hl], 0
+
+	ld a, $14
+	ld hl, $45da
+	rst FarCall
+	jr c, .asm_96bcb
+
+.asm_96bc3
+	callba Function97db3
+
+.asm_96bc9
+	xor a
+	ret
+
+.asm_96bcb
+	ld a, -1
+	scf
+	ret
+
+.asm_96bcf
+	ld a, 8
+	scf
+	ret
+; 96bd3
+
+
+Function96bd3: ; 96bd3
+	ld a, $7
+	scf
+	ret
+; 96bd7
+
+Function96bd7: ; 96bd7
+	ld a, [$dca1]
+	and a
+	ret z
+	dec a
+	ld [$dca1], a
+	ret nz
+	ld a, $4
+	ld hl, $7619
+	call PushScriptPointer
+	scf
+	ret
+; 96beb
+
+Function96beb: ; 96beb
+	ld a, [ScriptRunning]
+	and a
+	ret z
+	cp $ff
+	ret z
+	cp $a
+	ret nc
+
+	ld c, a
+	ld b, 0
+	ld hl, ScriptPointers96c0c
+	add hl, bc
+	add hl, bc
+	add hl, bc
+	ld a, [hli]
+	ld [ScriptBank], a
+	ld a, [hli]
+	ld [ScriptPos], a
+	ld a, [hl]
+	ld [ScriptPos + 1], a
+	ret
+; 96c0c
+
+ScriptPointers96c0c: ; 96c0c
+	dbw BANK(UnknownScript_0x96c2d), UnknownScript_0x96c2d
+	dbw $2f, $6675 ; BANK(UnknownScript_0xbe675), UnknownScript_0xbe675
+	dbw $2f, $666a ; BANK(UnknownScript_0xbe66a), UnknownScript_0xbe66a
+	dbw $04, $62ce ; BANK(UnknownScript_0x122ce), UnknownScript_0x122ce
+	dbw BANK(UnknownScript_0x96c4d), UnknownScript_0x96c4d
+	dbw BANK(UnknownScript_0x96c34), UnknownScript_0x96c34
+	dbw BANK(FallIntoMapScript), FallIntoMapScript
+	dbw BANK(UnknownScript_0x124c8), UnknownScript_0x124c8
+	dbw BANK(UnknownScript_0x96c2f), UnknownScript_0x96c2f
+	dbw BANK(UnknownScript_0x96c4f), UnknownScript_0x96c4f
+	dbw BANK(UnknownScript_0x96c2d), UnknownScript_0x96c2d
+; 96c2d
+
+UnknownScript_0x96c2d: ; 96c2d
+	end
+; 96c2e
+
+UnknownScript_0x96c2e: ; 96c2e
+	end
+; 96c2f
+
+UnknownScript_0x96c2f: ; 96c2f
+	3callasm $05, $6f5e
+	end
+; 96c34
+
+UnknownScript_0x96c34: ; 96c34
+	warpsound
+	newloadmap $f5
+	end
+; 96c38
+
+FallIntoMapScript: ; 96c38
+	newloadmap $f6
+	playsound SFX_KINESIS
+	applymovement $0, MovementData_0x96c48
+	playsound SFX_STRENGTH
+	2call UnknownScript_0x96c4a
+	end
+; 96c48
+
+MovementData_0x96c48: ; 96c48
+	skyfall
+	step_end
+; 96c4a
+
+UnknownScript_0x96c4a: ; 96c4a
+	earthquake 16
+	end
+; 96c4d
+
+UnknownScript_0x96c4d: ; 96c4d
+	reloadandreturn $f7
+; 96c4f
+
+UnknownScript_0x96c4f: ; 96c4f
+	deactivatefacing $3
+	3callasm BANK(Function96706), Function96706
+	end
+; 96c56
+
+
+Function96c56: ; 96c56
+	push af
+	ld a, 1
+	ld [ScriptMode], a
+	pop af
+	ret
+; 96c5e
+
+
 ScriptEvents: ; 96c5e
 	call StartScript
 .loop
@@ -18985,9 +60824,7 @@
 	dec [hl]
 	ret nz
 
-	ld a, $1
-	ld hl, $58b9
-	rst FarCall
+	callba Function58b9
 
 	ld a, SCRIPT_READ
 	ld [ScriptMode], a
@@ -19002,9 +60839,7 @@
 	bit 7, [hl]
 	ret nz
 
-	ld a, $1
-	ld hl, $58b9
-	rst FarCall
+	callba Function58b9
 
 	ld a, SCRIPT_READ
 	ld [ScriptMode], a
@@ -19023,9 +60858,652 @@
 INCLUDE "engine/scripting.asm"
 
 
-INCBIN "baserom.gbc", $97c20, $97f7e - $97c20
+Function97c20: ; 97c20
+	ld a, [.byte]
+	ld [ScriptVar], a
+	ret
 
+.byte
+	db 0
+; 97c28
 
+Function97c28: ; 97c28
+	ld hl, StatusFlags2
+	res 1, [hl]
+	res 2, [hl]
+	ret
+; 97c30
+
+Function97c30: ; 97c30
+	ld a, [$d45c]
+	and a
+	ret z
+	ld hl, $d45e
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [$d45d]
+	call PushScriptPointer
+	scf
+	push af
+	xor a
+	ld hl, $d45c
+	ld bc, 8
+	call ByteFill
+	pop af
+	ret
+; 97c4f
+
+Function97c4f: ; 97c4f
+	ld hl, $d45c
+	ld a, [hl]
+	and a
+	ret nz
+	ld [hl], 1
+	inc hl
+	ld [hl], b
+	inc hl
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	scf
+	ret
+; 97c5f
+
+Function97c5f: ; 97c5f
+	call GetFacingTileCoord
+	ld [EngineBuffer1], a
+	ld c, a
+	ld a, $4
+	ld hl, $765b
+	rst FarCall
+	jr c, .asm_97cb9
+
+	call CheckCutTreeTile
+	jr nz, .whirlpool
+	callba TryCutOW
+	jr .asm_97cb9
+
+.whirlpool
+	ld a, [EngineBuffer1]
+	call CheckWhirlpoolTile
+	jr nz, .waterfall
+	callba TryWhirlpoolOW
+	jr .asm_97cb9
+
+.waterfall
+	ld a, [EngineBuffer1]
+	call CheckWaterfallTile
+	jr nz, .headbutt
+	callba TryWaterfallOW
+	jr .asm_97cb9
+
+.headbutt
+	ld a, [EngineBuffer1]
+	call CheckHeadbuttTreeTile
+	jr nz, .surf
+	callba TryHeadbuttOW
+	jr c, .asm_97cb9
+	jr .asm_97cb7
+
+.surf
+	callba TrySurfOW
+	jr nc, .asm_97cb7
+	jr .asm_97cb9
+
+.asm_97cb7
+	xor a
+	ret
+
+.asm_97cb9
+	call PlayClickSFX
+	ld a, $ff
+	scf
+	ret
+; 97cc0
+
+Function97cc0: ; 97cc0
+	call Function968c7
+	jr c, .asm_97ce2
+	call Function97cfd
+	jr nc, .asm_97ce2
+	ld hl, StatusFlags2
+	bit 2, [hl]
+	jr nz, .asm_97cdb
+	ld a, $a
+	ld hl, $60e7
+	rst FarCall
+	jr nz, .asm_97ce2
+	jr .asm_97ce6
+
+.asm_97cdb
+	call Function97d23
+	jr nc, .asm_97ce2
+	jr .asm_97ced
+
+.asm_97ce2
+	ld a, 1
+	and a
+	ret
+
+.asm_97ce6
+	ld a, BANK(UnknownScript_0x97cf9)
+	ld hl, UnknownScript_0x97cf9
+	jr .asm_97cf4
+
+.asm_97ced
+	ld a, $4
+	ld hl, Script_dotrigger
+	jr .asm_97cf4
+
+.asm_97cf4
+	call PushScriptPointer
+	scf
+	ret
+; 97cf9
+
+UnknownScript_0x97cf9: ; 97cf9
+	battlecheck
+	startbattle
+	returnafterbattle
+	end
+; 97cfd
+
+Function97cfd: ; 97cfd
+	ld hl, StatusFlags
+	bit 5, [hl]
+	jr nz, .asm_97d21
+	ld a, [$d19a]
+	cp $4
+	jr z, .asm_97d17
+	cp $7
+	jr z, .asm_97d17
+	ld a, $5
+	ld hl, $49dd
+	rst FarCall
+	jr nc, .asm_97d21
+
+.asm_97d17
+	ld a, [StandingTile]
+	call CheckIceTile
+	jr z, .asm_97d21
+	scf
+	ret
+
+.asm_97d21
+	and a
+	ret
+; 97d23
+
+Function97d23: ; 97d23
+	call Function97d64
+	ret nc
+	call Function97d31
+	ld a, $a
+	ld hl, $61df
+	rst FarCall
+	ret
+; 97d31
+
+Function97d31: ; 97d31
+.asm_97d31
+	call RNG
+	cp 100 << 1
+	jr nc, .asm_97d31
+	srl a
+	ld hl, Table97d87
+	ld de, 4
+.asm_97d40
+	sub [hl]
+	jr c, .asm_97d46
+	add hl, de
+	jr .asm_97d40
+
+.asm_97d46
+	inc hl
+	ld a, [hli]
+	ld [$d22e], a
+	ld a, [hli]
+	ld d, a
+	ld a, [hl]
+	sub d
+	jr nz, .asm_97d54
+	ld a, d
+	jr .asm_97d5f
+
+.asm_97d54
+	ld c, a
+	inc c
+	call RNG
+	ld a, [hRandomAdd]
+	call SimpleDivide
+	add d
+
+.asm_97d5f
+	ld [CurPartyLevel], a
+	xor a
+	ret
+; 97d64
+
+Function97d64: ; 97d64
+	ld a, [StandingTile]
+	call Function188e
+	ld b, $66
+	jr z, .asm_97d70
+	ld b, $33
+
+.asm_97d70
+	ld a, $a
+	ld hl, $6124
+	rst FarCall
+	ld a, $a
+	ld hl, $6138
+	rst FarCall
+	call RNG
+	ld a, [hRandomAdd]
+	cp b
+	ret c
+	ld a, 1
+	and a
+	ret
+; 97d87
+
+Table97d87: ; 97d87
+	db 20, $0a, $07, $12
+	db 20, $0d, $07, $12
+	db 10, $0b, $09, $12
+	db 10, $0e, $09, $12
+	db  5, $0c, $0c, $0f
+	db  5, $0f, $0c, $0f
+	db 10, $30, $0a, $10
+	db 10, $2e, $0a, $11
+	db  5, $7b, $0d, $0e
+	db  5, $7f, $0d, $0e
+	db -1, $31, $1e, $28
+; 97db3
+
+Function97db3: ; 97db3
+	nop
+	nop
+	; fallthrough
+; 97db5
+
+Function97db5: ; 97db5
+	ld hl, StatusFlags2
+	bit 4, [hl]
+	jr z, .asm_97df7
+	ld a, [PlayerState]
+	cp $1
+	jr nz, .asm_97df7
+	call Function2d05
+	and a
+	jr nz, .asm_97df7
+	ld hl, $dca2
+	ld a, [hli]
+	ld d, a
+	ld e, [hl]
+	cp $ff
+	jr nz, .asm_97dd8
+	ld a, e
+	cp $ff
+	jr z, .asm_97ddc
+
+.asm_97dd8
+	inc de
+	ld [hl], e
+	dec hl
+	ld [hl], d
+
+.asm_97ddc
+	ld a, d
+	cp $4
+	jr c, .asm_97df7
+	ld a, [$dc31]
+	and a
+	jr nz, .asm_97df7
+	ld a, $6
+	ld [$dc31], a
+	xor a
+	ld [$dc32], a
+	ld hl, StatusFlags2
+	res 4, [hl]
+	scf
+	ret
+
+.asm_97df7
+	xor a
+	ret
+; 97df9
+
+Function97df9: ; 97df9
+	ld hl, $d6de
+	ld de, $0006
+	ld c, $4
+	xor a
+.asm_97e02
+	ld [hl], a
+	add hl, de
+	dec c
+	jr nz, .asm_97e02
+	ret
+; 97e08
+
+Function97e08: ; 97e08
+	ld hl, $d6de
+	xor a
+.asm_97e0c
+	ld [hConnectionStripLength], a
+	ld a, [hl]
+	and a
+	jr z, .asm_97e19
+	push hl
+	ld b, h
+	ld c, l
+	call Function97e79
+	pop hl
+
+.asm_97e19
+	ld de, $0006
+	add hl, de
+	ld a, [hConnectionStripLength]
+	inc a
+	cp $4
+	jr nz, .asm_97e0c
+	ret
+; 97e25
+
+Function97e25: ; 97e25
+	ld hl, $d6de
+	ld bc, 6
+	call AddNTimes
+	ld b, h
+	ld c, l
+	ret
+; 97e31
+
+Function97e31: ; 97e31
+	push bc
+	push de
+	call Function97e45
+	ld d, h
+	ld e, l
+	pop hl
+	pop bc
+	ret c
+	ld a, b
+	ld bc, $0005
+	call FarCopyBytes
+	xor a
+	ld [hl], a
+	ret
+; 97e45
+
+Function97e45: ; 97e45
+	ld hl, $d6de
+	ld de, $0006
+	ld c, $4
+.asm_97e4d
+	ld a, [hl]
+	and a
+	jr z, .asm_97e57
+	add hl, de
+	dec c
+	jr nz, .asm_97e4d
+	scf
+	ret
+
+.asm_97e57
+	ld a, $4
+	sub c
+	and a
+	ret
+; 97e5c
+
+Function97e5c: ; 97e5c
+	ld hl, $d6de
+	ld de, $0006
+	ld c, $4
+.asm_97e64
+	ld a, [hl]
+	cp b
+	jr z, .asm_97e6e
+	add hl, de
+	dec c
+	jr nz, .asm_97e64
+	and a
+	ret
+
+.asm_97e6e
+	xor a
+	ld [hl], a
+	scf
+	ret
+; 97e72
+
+Function97e72: ; 97e72
+	ld hl, $0000
+	add hl, bc
+	ld [hl], 0
+	ret
+; 97e79
+
+Function97e79: ; 97e79
+	ld hl, $0000
+	add hl, bc
+	ld a, [hl]
+	cp 5
+	jr c, .asm_97e83
+	xor a
+
+.asm_97e83
+	ld e, a
+	ld d, 0
+	ld hl, Table97e94
+	add hl, de
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	push af
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	pop af
+	rst FarCall
+	ret
+; 97e94
+
+Table97e94: ; 97e94
+	dbw BANK(Function97eb7), Function97eb7
+	dbw BANK(Function97eb8), Function97eb8
+	dbw BANK(Function97f42), Function97f42
+	dbw BANK(Function97ef9), Function97ef9
+	dbw BANK(Function97ebc), Function97ebc
+; 97ea3
+
+Function97ea3: ; 97ea3
+	ld hl, $0005
+	add hl, bc
+	ld a, [hl]
+	pop hl
+	rst JumpTable
+	ret
+; 97eab
+
+Function97eab: ; 97eab
+	ld hl, $0005
+	add hl, bc
+	inc [hl]
+	ret
+; 97eb1
+
+Function97eb1: ; 97eb1
+	ld hl, $0005
+	add hl, bc
+	dec [hl]
+	ret
+; 97eb7
+
+Function97eb7: ; 97eb7
+	ret
+; 97eb8
+
+Function97eb8: ; 97eb8
+	call Function2f3e
+	ret
+; 97ebc
+
+Function97ebc: ; 97ebc
+	call Function97ea3
+	dw Function97ec3
+	dw Function97ecd
+; 97ec3
+
+Function97ec3: ; 97ec3
+	ld a, [hSCY]
+	ld hl, $0004
+	add hl, bc
+	ld [hl], a
+	call Function97eab
+; 97ecd
+
+Function97ecd: ; 97ecd
+	ld hl, $0001
+	add hl, bc
+	ld a, [hl]
+	dec a
+	ld [hl], a
+	jr z, .asm_97eee
+	and $1
+	jr z, .asm_97ee4
+	ld hl, $0002
+	add hl, bc
+	ld a, [hSCY]
+	sub [hl]
+	ld [hSCY], a
+	ret
+
+.asm_97ee4
+	ld hl, $0002
+	add hl, bc
+	ld a, [hSCY]
+	add [hl]
+	ld [hSCY], a
+	ret
+
+.asm_97eee
+	ld hl, $0004
+	add hl, bc
+	ld a, [hl]
+	ld [hSCY], a
+	call Function97e72
+	ret
+; 97ef9
+
+Function97ef9: ; 97ef9
+	call Function97ea3
+	dw Function97f02
+	dw Function97f0a
+	dw Function97f1b
+; 97f02
+
+Function97f02: ; 97f02
+	call Function97f38
+	jr z, Function97f2c
+	call Function97eab
+; 97f0a
+
+Function97f0a: ; 97f0a
+	call Function97f38
+	jr z, Function97f2c
+	call Function97eab
+
+	ld hl, $0002
+	add hl, bc
+	ld a, [hl]
+	ld [$d173], a
+	ret
+; 97f1b
+
+Function97f1b: ; 97f1b
+	call Function97f38
+	jr z, Function97f2c
+	call Function97eb1
+
+	ld hl, $0003
+	add hl, bc
+	ld a, [hl]
+	ld [$d173], a
+	ret
+; 97f2c
+
+Function97f2c: ; 97f2c
+	ld a, $7f
+	ld [$d173], a
+	ld hl, $0005
+	add hl, bc
+	ld [hl], 0
+	ret
+; 97f38
+
+Function97f38: ; 97f38
+	push bc
+	ld bc, $d4d6
+	call GetSpriteDirection
+	and a
+	pop bc
+	ret
+; 97f42
+
+Function97f42: ; 97f42
+	ld de, $d4d6
+	ld a, $d
+.asm_97f47
+	push af
+
+	ld hl, $0000
+	add hl, de
+	ld a, [hl]
+	and a
+	jr z, .asm_97f71
+
+	ld hl, $0003
+	add hl, de
+	ld a, [hl]
+	cp $19
+	jr nz, .asm_97f71
+
+	ld hl, $000e
+	add hl, de
+	ld a, [hl]
+	call CheckPitTile
+	jr nz, .asm_97f71
+
+	ld hl, $0007
+	add hl, de
+	ld a, [hl]
+	cp $ff
+	jr nz, .asm_97f71
+	call Function3567
+	jr c, .asm_97f7c
+
+.asm_97f71
+	ld hl, $0028
+	add hl, de
+	ld d, h
+	ld e, l
+
+	pop af
+	dec a
+	jr nz, .asm_97f47
+	ret
+
+.asm_97f7c
+	pop af
+	ret
+; 97f7e
+
+
+
 SECTION "bank26",ROMX,BANK[$26]
 
 ;                          Map Scripts XI
@@ -19087,7 +61565,7 @@
 
 SECTION "bank29",ROMX,BANK[$29]
 
-INCBIN "baserom.gbc", $a4000, $a64ad - $a4000
+INCLUDE "text/phone/extra2.asm"
 
 
 SECTION "bank2A",ROMX,BANK[$2A]
@@ -20426,13 +62904,286 @@
 
 SECTION "bank2E",ROMX,BANK[$2E]
 
-INCBIN "baserom.gbc", $B8000, $b8219 - $b8000
+Functionb8000: ; b8000
+	xor a
+	ld [hBGMapMode], a
+	ld a, $2e
+	ld hl, $400a
+	rst FarCall
+	ret
+; b800a
 
+Functionb800a: ; b800a
+	ld a, [MapGroup]
+	ld b, a
+	ld a, [MapNumber]
+	ld c, a
+	call GetWorldMapLocation
+	ld [$c2d9], a
+	call Functionb8089
+	jr z, .asm_b8024
+	call GetMapPermission
+	cp $6
+	jr nz, .asm_b8029
+
+.asm_b8024
+	ld a, $ff
+	ld [$c2d9], a
+
+.asm_b8029
+	ld hl, $d83e
+	bit 1, [hl]
+	res 1, [hl]
+	jr nz, .asm_b8054
+	call Functionb8064
+	jr z, .asm_b8054
+	ld a, [$c2d9]
+	ld [$c2d8], a
+	call Functionb8070
+	jr z, .asm_b8054
+	ld a, $3c
+	ld [$c2da], a
+	call Functionb80c6
+	call Functionb80d3
+	ld a, $41
+	ld hl, $4303
+	rst FarCall
+	ret
+
+.asm_b8054
+	ld a, [$c2d9]
+	ld [$c2d8], a
+	ld a, $90
+	ld [rWY], a
+	ld [hWY], a
+	xor a
+	ld [hLCDStatCustom], a
+	ret
+; b8064
+
+Functionb8064: ; b8064
+	ld a, [$c2d9]
+	ld c, a
+	ld a, [$c2d8]
+	cp c
+	ret z
+	cp $0
+	ret
+; b8070
+
+Functionb8070: ; b8070
+	cp $ff
+	ret z
+	cp $0
+	ret z
+	cp $11
+	ret z
+	cp $46
+	ret z
+	cp $3b
+	ret z
+	cp $5a
+	ret z
+	cp $44
+	ret z
+	ld a, $1
+	and a
+	ret
+; b8089
+
+Functionb8089: ; b8089
+	ld a, [MapGroup]
+	cp $a
+	ret nz
+	ld a, [MapNumber]
+	cp $f
+	ret z
+	cp $11
+	ret
+; b8098
+
+INCBIN "baserom.gbc", $b8098, $b80c6 - $b8098
+
+
+Functionb80c6: ; b80c6
+	ld de, $5344
+	ld hl, $9600
+	ld bc, $3e0e
+	call Get2bpp
+	ret
+; b80d3
+
+Functionb80d3: ; b80d3
+	ld hl, TileMap
+	ld b, $2
+	ld c, $12
+	call Functionb8115
+	call Functionb812f
+	ret
+; b80e1
+
+INCBIN "baserom.gbc", $b80e1, $b8115 - $b80e1
+
+
+Functionb8115: ; b8115
+	ld de, $0939
+	add hl, de
+	inc b
+	inc b
+	inc c
+	inc c
+	ld a, $87
+.asm_b811f
+	push bc
+	push hl
+.asm_b8121
+	ld [hli], a
+	dec c
+	jr nz, .asm_b8121
+	pop hl
+	ld de, $0014
+	add hl, de
+	pop bc
+	dec b
+	jr nz, .asm_b811f
+	ret
+; b812f
+
+Functionb812f: ; b812f
+	ld hl, TileMap
+	ld a, $61
+	ld [hli], a
+	ld a, $62
+	call Functionb8164
+	ld a, $64
+	ld [hli], a
+	ld a, $65
+	ld [hli], a
+	call Functionb815b
+	ld a, $6b
+	ld [hli], a
+	ld a, $66
+	ld [hli], a
+	call Functionb815b
+	ld a, $6c
+	ld [hli], a
+	ld a, $67
+	ld [hli], a
+	ld a, $68
+	call Functionb8164
+	ld a, $6a
+	ld [hl], a
+	ret
+; b815b
+
+Functionb815b: ; b815b
+	ld c, $12
+	ld a, $6d
+.asm_b815f
+	ld [hli], a
+	dec c
+	jr nz, .asm_b815f
+	ret
+; b8164
+
+Functionb8164: ; b8164
+	ld c, $5
+	jr .asm_b816a
+
+.asm_b8168
+	ld [hli], a
+	ld [hli], a
+
+.asm_b816a
+	inc a
+	ld [hli], a
+	ld [hli], a
+	dec a
+	dec c
+	jr nz, .asm_b8168
+	ret
+; b8172
+
+Functionb8172: ; b8172
+	call GetMapEventBank
+	ld [MagikarpLength], a
+	ld a, [XCoord]
+	add $5
+	ld [$d1ed], a
+	ld a, [YCoord]
+	add $4
+	ld [$d1ec], a
+	ld hl, $dc02
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [$dc01]
+	and a
+	jr z, .asm_b81dd
+.asm_b8194
+	ld [Buffer2], a
+	push hl
+	call Functionb81e2
+	ld e, a
+	ld a, [$d1ec]
+	sub e
+	jr c, .asm_b81d2
+	cp $9
+	jr nc, .asm_b81d2
+	call Functionb81e2
+	ld d, a
+	ld a, [$d1ed]
+	sub d
+	jr c, .asm_b81d2
+	cp $a
+	jr nc, .asm_b81d2
+	call Functionb81e2
+	cp $7
+	jr nz, .asm_b81d2
+	ld a, [MagikarpLength]
+	call GetFarHalfword
+	ld a, [MagikarpLength]
+	call GetFarHalfword
+	ld d, h
+	ld e, l
+	ld b, $2
+	call BitTable1Func
+	ld a, c
+	and a
+	jr z, .asm_b81df
+
+.asm_b81d2
+	pop hl
+	ld bc, $0005
+	add hl, bc
+	ld a, [Buffer2]
+	dec a
+	jr nz, .asm_b8194
+
+.asm_b81dd
+	xor a
+	ret
+
+.asm_b81df
+	pop hl
+	scf
+	ret
+; b81e2
+
+Functionb81e2: ; b81e2
+	ld a, [MagikarpLength]
+	call GetFarByte
+	inc hl
+	ret
+; b81ea
+
+INCBIN "baserom.gbc", $b81ea, $b8219 - $b81ea
+
 Functionb8219: ; b8219
 ; deals strictly with rockmon encounter
 	xor a
 	ld [$d22e], a
-	ld [$d143], a
+	ld [CurPartyLevel], a
 	ld hl, WildRockMonMapTable
 	call GetTreeMonEncounterTable
 	jr nc, .quit
@@ -20439,7 +63190,7 @@
 	call LoadWildTreeMonData
 	jr nc, .quit
 	ld a, $0a
-	call $2fb1
+	call Function2fb1
 	cp a, $04
 	jr nc, .quit
 	call $441f
@@ -20666,9 +63417,140 @@
 	db $ff ; end
 ; b83e5
 
-INCBIN "baserom.gbc", $b83e5, $b9e8b - $b83e5
+INCBIN "baserom.gbc", $b83e5, $b9229 - $b83e5
 
+Functionb9229: ; b9229
+	ld a, [CurPartyMon]
+	ld hl, $a600
+	ld bc, $002f
+	call AddNTimes
+	ld d, h
+	ld e, l
+	push de
+	call WhiteBGMap
+	call ClearSprites
+	call ClearTileMap
+	call DisableLCD
+	call Functione5f
+	pop de
+	push de
+	ld a, $0
+	call GetSRAMBank
+	ld a, $77
+	ld hl, $65c8
+	rst FarCall
+	call CloseSRAM
+	ld a, c
+	ld de, $65e6
+	or a
+	jr z, .asm_b9268
+	ld de, $69e6
+	sub $3
+	jr c, .asm_b9268
+	ld de, $6de6
 
+.asm_b9268
+	ld hl, VTiles1
+	ld bc, $7780
+	call Get1bpp
+	pop de
+	call Functionb92b8
+	call EnableLCD
+	call WaitBGMap
+	ld a, [$d1ec]
+	ld e, a
+	ld a, $2
+	ld hl, $4cb4
+	rst FarCall
+	call Function32f9
+	xor a
+	ld [hJoyPressed], a
+	call Functionb929a
+	call WhiteBGMap
+	call DisableLCD
+	call Functione51
+	jp EnableLCD
+; b929a
+
+Functionb929a: ; b929a
+.asm_b929a
+	call GetJoypadPublic
+	ld a, [hJoyPressed]
+	and $b
+	jr z, .asm_b929a
+	and $8
+	jr nz, .asm_b92a8
+	ret
+
+.asm_b92a8
+	ld a, [$cf63]
+	push af
+	ld hl, $45d4
+	ld a, $21
+	rst FarCall
+	pop af
+	ld [$cf63], a
+	jr .asm_b929a
+; b92b8
+
+Functionb92b8: ; b92b8
+	ld h, d
+	ld l, e
+	push hl
+	ld a, $0
+	call GetSRAMBank
+	ld de, $002b
+	add hl, de
+	ld a, [hli]
+	ld [Buffer1], a
+	ld a, [hli]
+	ld [Buffer2], a
+	ld a, [hli]
+	ld [CurPartySpecies], a
+	ld b, [hl]
+	call CloseSRAM
+	ld hl, $52f8
+	ld c, $0
+.asm_b92d9
+	ld a, [hli]
+	cp b
+	jr z, .asm_b92ea
+	cp $ff
+	jr z, .asm_b92e6
+	inc c
+	inc hl
+	inc hl
+	jr .asm_b92d9
+
+.asm_b92e6
+	ld hl, $52f8
+	inc hl
+
+.asm_b92ea
+	ld a, c
+	ld [$d1ec], a
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, $52f7
+	pop bc
+	push de
+	jp [hl]
+; b92f7
+
+INCBIN "baserom.gbc", $b92f7, $b9e76 - $b92f7
+
+
+Functionb9e76: ; b9e76
+	ld a, d
+	ld hl, $5e80
+	ld de, $0001
+	jp IsInArray
+; b9e80
+
+INCBIN "baserom.gbc", $b9e80, $b9e8b - $b9e80
+
+
 SECTION "bank2F",ROMX,BANK[$2F]
 
 INCBIN "baserom.gbc", $bc000, $bc09c - $bc000
@@ -20860,13 +63742,13 @@
 
 .violet ; 0xbcf15
 	displaylocation $7 ; sprout tower
-	3call $3, $4edf
+	3call $3, UnknownScript_0xbcedf
 .azalea ; 0xbcf1b
 	displaylocation $d ; slowpoke well
-	3call $3, $4edf
+	3call $3, UnknownScript_0xbcedf
 .goldenrod ; 0xbcf21
 	displaylocation $11 ; radio tower
-	3call $3, $4edf
+	3call $3, UnknownScript_0xbcedf
 	3writetext $6d, $411c
 	keeptextopen
 	2jump UnknownScript_0xbcf37
@@ -21113,8 +63995,885 @@
 
 SECTION "bank33",ROMX,BANK[$33]
 
-INCBIN "baserom.gbc", $cc000, $cfd9e - $cc000
+Functioncc000: ; cc000
+	call WhiteBGMap
+	call ClearTileMap
+	call ClearSprites
+	call $0e58
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set 4, [hl]
+	ld hl, TileMap
+	ld b, $4
+	ld c, $d
+	call TextBox
+	ld hl, $c518
+	ld b, $4
+	ld c, $d
+	call TextBox
+	ld hl, $c4a2
+	ld de, $40ae
+	call PlaceString
+	ld hl, $c51a
+	ld de, $40b8
+	call PlaceString
+	ld hl, $c4f5
+	ld de, $40a7
+	call PlaceString
+	ld hl, $c56d
+	ld de, $40a7
+	call PlaceString
+	ld a, [$df9c]
+	ld [$d265], a
+	call GetPokemonName
+	ld de, StringBuffer1
+	ld hl, $c4c9
+	call PlaceString
+	ld h, b
+	ld l, c
+	ld a, [$dfbb]
+	ld [TempMonLevel], a
+	call PrintLevel
+	ld de, EnemyMonNick
+	ld hl, $c541
+	call PlaceString
+	ld h, b
+	ld l, c
+	ld a, [EnemyMonLevel]
+	ld [TempMonLevel], a
+	call PrintLevel
+	ld hl, $c4fb
+	ld de, $dfc0
+	ld bc, $0203
+	call PrintNum
+	ld hl, $c573
+	ld de, EnemyMonMaxHPHi
+	call PrintNum
+	ld hl, $40c2
+	call PrintText
+	pop af
+	ld [Options], a
+	call WaitBGMap
+	ld b, $8
+	call GetSGBLayout
+	call Function32f9
+	ret
+; cc0a7
 
+INCBIN "baserom.gbc", $cc0a7, $cc0c7 - $cc0a7
+
+
+Functioncc0c7: ; cc0c7
+	call GetPokemonName
+	ld hl, $40d0
+	jp PrintText
+; cc0d0
+
+INCBIN "baserom.gbc", $cc0d0, $cc0d6 - $cc0d0
+
+
+Functioncc0d6: ; cc0d6
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	call Functioncc0e4
+	pop af
+	ld [rSVBK], a
+	ret
+; cc0e4
+
+Functioncc0e4: ; cc0e4
+	ld c, $6
+.asm_cc0e6
+	call Functioncc1fb
+	dec c
+	jr nz, .asm_cc0e6
+	call Functioncc8a4
+	call Functioncc1e2
+	call Functioncc1fb
+	ld c, $1
+	ld a, [rKEY1]
+	bit 7, a
+	jr nz, .asm_cc0ff
+	ld c, $3
+
+.asm_cc0ff
+	ld hl, $ff9e
+	ld a, [hl]
+	push af
+	ld [hl], c
+	call Functioncc11c
+	pop af
+	ld [$ff9e], a
+	ld a, $1
+	ld [hBGMapMode], a
+	call Functioncc1fb
+	call Functioncc1fb
+	call Functioncc1fb
+	call WaitSFX
+	ret
+; cc11c
+
+Functioncc11c: ; cc11c
+	ld a, [FXAnimIDHi]
+	and a
+	jr nz, .asm_cc156
+	callba Function4ea44
+	jr c, .asm_cc141
+	call Functioncc1a1
+	call Functioncc163
+	call Functioncc8a4
+	call Functioncc1e2
+	xor a
+	ld [hSCX], a
+	ld [hSCY], a
+	call Functioncc1fb
+	call Functioncc1bb
+
+.asm_cc141
+	ld a, [$cfca]
+	and a
+	jr z, .asm_cc15f
+	ld l, a
+	ld h, $0
+	ld de, $010e
+	add hl, de
+	ld a, l
+	ld [FXAnimIDLo], a
+	ld a, h
+	ld [FXAnimIDHi], a
+
+.asm_cc156
+	call WaitSFX
+	call Functioncc881
+	call Functioncc163
+
+.asm_cc15f
+	call Functioncc8f6
+	ret
+; cc163
+
+Functioncc163: ; cc163
+	call Functioncc8d3
+.asm_cc166
+	call Functioncc25f
+	call Functionccb48
+	call Functioncc96e
+	call Function3b0c
+	call Functioncc1e2
+	ld a, [FXAnimIDHi]
+	or a
+	jr nz, .asm_cc193
+	ld a, [FXAnimIDLo]
+	cp $cd
+	jr nz, .asm_cc193
+	ld a, $2e
+	ld b, $5
+	ld de, $0004
+	ld hl, $d3fa
+.asm_cc18c
+	cp [hl]
+	jr z, .asm_cc196
+	add hl, de
+	dec b
+	jr nz, .asm_cc18c
+
+.asm_cc193
+	call Functioncc1fb
+
+.asm_cc196
+	ld a, [$d40f]
+	bit 0, a
+	jr z, .asm_cc166
+	call Functioncc23d
+	ret
+; cc1a1
+
+Functioncc1a1: ; cc1a1
+	call Functioncc1fb
+	call WaitTop
+	call Functioncc207
+	ld a, $1
+	ld [hBGMapMode], a
+	call Functioncc1fb
+	call Functioncc1fb
+	call Functioncc1fb
+	call WaitTop
+	ret
+; cc1bb
+
+Functioncc1bb: ; cc1bb
+	call Functioncc1fb
+	call WaitTop
+	ld a, [rSVBK]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+	ld hl, UpdateBattleHuds
+	ld a, $f
+	rst FarCall
+	pop af
+	ld [rSVBK], a
+	ld a, $1
+	ld [hBGMapMode], a
+	call Functioncc1fb
+	call Functioncc1fb
+	call Functioncc1fb
+	call WaitTop
+	ret
+; cc1e2
+
+Functioncc1e2: ; cc1e2
+	ld a, [hCGB]
+	and a
+	ret z
+	ld a, [rBGP]
+	ld b, a
+	ld a, [$cfc7]
+	cp b
+	call nz, Functioncc91a
+	ld a, [rOBP0]
+	ld b, a
+	ld a, [$cfc8]
+	cp b
+	call nz, Functioncc94b
+	ret
+; cc1fb
+
+Functioncc1fb: ; cc1fb
+	ld a, $1
+	ld [VBlankOccurred], a
+.asm_cc200
+	ld a, [VBlankOccurred]
+	and a
+	jr nz, .asm_cc200
+	ret
+; cc207
+
+Functioncc207: ; cc207
+	ld a, [hBattleTurn]
+	and a
+	jr z, .asm_cc216
+	ld hl, $c4a1
+	ld bc, $040a
+	call ClearBox
+	ret
+
+.asm_cc216
+	ld hl, $c535
+	ld bc, $050b
+	call ClearBox
+	ret
+; cc220
+
+INCBIN "baserom.gbc", $cc220, $cc23d - $cc220
+
+
+Functioncc23d: ; cc23d
+	ld a, [$d40f]
+	bit 3, a
+	jr z, .asm_cc254
+	ld hl, $c403
+	ld c, $28
+.asm_cc249
+	ld a, [hl]
+	and $f0
+	ld [hli], a
+	inc hl
+	inc hl
+	inc hl
+	dec c
+	jr nz, .asm_cc249
+	ret
+
+.asm_cc254
+	ld hl, Sprites
+	ld c, $a0
+	xor a
+.asm_cc25a
+	ld [hli], a
+	dec c
+	jr nz, .asm_cc25a
+	ret
+; cc25f
+
+Functioncc25f: ; cc25f
+	call Functioncc267
+	ret nc
+	call Functioncc275
+	ret
+; cc267
+
+Functioncc267: ; cc267
+	ld a, [$d412]
+	and a
+	jr z, .asm_cc273
+	dec a
+	ld [$d412], a
+	and a
+	ret
+
+.asm_cc273
+	scf
+	ret
+; cc275
+
+Functioncc275: ; cc275
+.asm_cc275
+	call Function3af0
+	cp $ff
+	jr nz, .asm_cc286
+	ld hl, $d40f
+	bit 1, [hl]
+	jr nz, .asm_cc28e
+	set 0, [hl]
+	ret
+
+.asm_cc286
+	cp $d0
+	jr nc, .asm_cc28e
+	ld [$d412], a
+	ret
+
+.asm_cc28e
+	call Functioncc293
+	jr .asm_cc275
+; cc293
+
+Functioncc293: ; cc293
+	ld a, [$d417]
+	sub $d0
+	ld e, a
+	ld d, $0
+	ld hl, $42a4
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; cc2a4
+
+INCBIN "baserom.gbc", $cc2a4, $cc881 - $cc2a4
+
+
+Functioncc881: ; cc881
+	ld a, [$cfca]
+	cp $1
+	jr z, .asm_cc88b
+	cp $4
+	ret nz
+
+.asm_cc88b
+	ld a, [TypeModifier]
+	and $7f
+	ret z
+	cp $a
+	ld de, $00ac
+	jr z, .asm_cc8a0
+	ld de, $00ad
+	jr nc, .asm_cc8a0
+	ld de, $00ab
+
+.asm_cc8a0
+	call StartSFX
+	ret
+; cc8a4
+
+Functioncc8a4: ; cc8a4
+	ld a, [hCGB]
+	and a
+	jr nz, .asm_cc8be
+	ld a, [hSGB]
+	and a
+	ld a, $e0
+	jr z, .asm_cc8b2
+	ld a, $f0
+
+.asm_cc8b2
+	ld [$cfc8], a
+	ld a, $e4
+	ld [$cfc7], a
+	ld [$cfc9], a
+	ret
+
+.asm_cc8be
+	ld a, $e4
+	ld [$cfc7], a
+	ld [$cfc8], a
+	ld [$cfc9], a
+	call DmgToCgbBGPals
+	ld de, $e4e4
+	call DmgToCgbObjPals
+	ret
+; cc8d3
+
+Functioncc8d3: ; cc8d3
+	ld hl, $d100
+	ld bc, $0354
+.asm_cc8d9
+	ld [hl], $0
+	inc hl
+	dec bc
+	ld a, c
+	or b
+	jr nz, .asm_cc8d9
+	ld hl, FXAnimIDLo
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld hl, $506f
+	add hl, de
+	add hl, de
+	call Function3ae1
+	call Functioncc8a4
+	call Functioncc1fb
+	ret
+; cc8f6
+
+Functioncc8f6: ; cc8f6
+	call WaitTop
+	ld a, $e4
+	ld [$cfc7], a
+	ld [$cfc8], a
+	ld [$cfc9], a
+	call DmgToCgbBGPals
+	ld de, $e4e4
+	call DmgToCgbObjPals
+	xor a
+	ld [hSCX], a
+	ld [hSCY], a
+	call Functioncc1fb
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+; cc91a
+
+Functioncc91a: ; cc91a
+	ld [rBGP], a
+	ld a, [hCGB]
+	and a
+	ret z
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, $d080
+	ld de, $d000
+	ld a, [rBGP]
+	ld b, a
+	ld c, $7
+	call CopyPals
+	ld hl, $d0c0
+	ld de, MartPointer
+	ld a, [rBGP]
+	ld b, a
+	ld c, $2
+	call CopyPals
+	pop af
+	ld [rSVBK], a
+	ld a, $1
+	ld [hCGBPalUpdate], a
+	ret
+; cc94b
+
+Functioncc94b: ; cc94b
+	ld [rOBP0], a
+	ld a, [hCGB]
+	and a
+	ret z
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, $d0d0
+	ld de, $d050
+	ld a, [rOBP0]
+	ld b, a
+	ld c, $2
+	call CopyPals
+	pop af
+	ld [rSVBK], a
+	ld a, $1
+	ld [hCGBPalUpdate], a
+	ret
+; cc96e
+
+Functioncc96e: ; cc96e
+	ld a, $0
+	ld [$d418], a
+	ld hl, $d30a
+	ld e, $a
+.asm_cc978
+	ld a, [hl]
+	and a
+	jr z, .asm_cc98a
+	ld c, l
+	ld b, h
+	push hl
+	push de
+	call Functionccfbe
+	call Functioncca09
+	pop de
+	pop hl
+	jr c, .asm_cc9a0
+
+.asm_cc98a
+	ld bc, $0018
+	add hl, bc
+	dec e
+	jr nz, .asm_cc978
+	ld a, [$d418]
+	ld l, a
+	ld h, $c4
+.asm_cc997
+	ld a, l
+	cp $a0
+	jr nc, .asm_cc9a0
+	xor a
+	ld [hli], a
+	jr .asm_cc997
+
+.asm_cc9a0
+	ret
+; cc9a1
+
+INCBIN "baserom.gbc", $cc9a1, $cc9bd - $cc9a1
+
+
+Functioncc9bd: ; cc9bd
+	ld hl, $0000
+	add hl, bc
+	ld [hl], $0
+	ret
+; cc9c4
+
+INCBIN "baserom.gbc", $cc9c4, $cca09 - $cc9c4
+
+
+Functioncca09: ; cca09
+	call Functionccaaa
+	call Functionce7d1
+	cp $fd
+	jp z, $4aa5
+	cp $fc
+	jp z, $4aa2
+	push af
+	ld hl, $d419
+	ld a, [$d420]
+	xor [hl]
+	and $e0
+	ld [hl], a
+	pop af
+	push bc
+	call Functionce83c
+	ld a, [$d41b]
+	add [hl]
+	ld [$d41b], a
+	inc hl
+	ld a, [hli]
+	ld c, a
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [$d418]
+	ld e, a
+	ld d, $c4
+.asm_cca3c
+	ld a, [$d41d]
+	ld b, a
+	ld a, [$d41f]
+	add b
+	ld b, a
+	push hl
+	ld a, [hl]
+	ld hl, $d419
+	bit 6, [hl]
+	jr z, .asm_cca53
+	add $8
+	xor $ff
+	inc a
+
+.asm_cca53
+	pop hl
+	add b
+	ld [de], a
+	inc hl
+	inc de
+	ld a, [$d41c]
+	ld b, a
+	ld a, [$d41e]
+	add b
+	ld b, a
+	push hl
+	ld a, [hl]
+	ld hl, $d419
+	bit 5, [hl]
+	jr z, .asm_cca6f
+	add $8
+	xor $ff
+	inc a
+
+.asm_cca6f
+	pop hl
+	add b
+	ld [de], a
+	inc hl
+	inc de
+	ld a, [$d41b]
+	add $31
+	add [hl]
+	ld [de], a
+	inc hl
+	inc de
+	ld a, [$d419]
+	ld b, a
+	ld a, [hl]
+	xor b
+	and $e0
+	ld b, a
+	ld a, [hl]
+	and $10
+	or b
+	ld b, a
+	ld a, [OTPartyMon6Nickname]
+	and $f
+	or b
+	ld [de], a
+	inc hl
+	inc de
+	ld a, e
+	ld [$d418], a
+	cp $a0
+	jr nc, .asm_ccaa7
+	dec c
+	jr nz, .asm_cca3c
+	pop bc
+	jr .asm_ccaa5
+
+	call Functioncc9bd
+
+.asm_ccaa5
+	and a
+	ret
+
+.asm_ccaa7
+	pop bc
+	scf
+	ret
+; ccaaa
+
+Functionccaaa: ; ccaaa
+	ld hl, $0001
+	add hl, bc
+	ld a, [hl]
+	and $80
+	ld [$d419], a
+	xor a
+	ld [$d420], a
+	ld hl, $0005
+	add hl, bc
+	ld a, [hl]
+	ld [OTPartyMon6Nickname], a
+	ld hl, $0002
+	add hl, bc
+	ld a, [hl]
+	ld [$d41a], a
+	ld hl, $0006
+	add hl, bc
+	ld a, [hli]
+	ld [$d41b], a
+	ld a, [hli]
+	ld [$d41c], a
+	ld a, [hli]
+	ld [$d41d], a
+	ld a, [hli]
+	ld [$d41e], a
+	ld a, [hli]
+	ld [$d41f], a
+	ld a, [hBattleTurn]
+	and a
+	ret z
+	ld hl, $0001
+	add hl, bc
+	ld a, [hl]
+	ld [$d419], a
+	bit 0, [hl]
+	ret z
+	ld hl, $0007
+	add hl, bc
+	ld a, [hli]
+	ld d, a
+	ld a, $b4
+	sub d
+	ld [$d41c], a
+	ld a, [hli]
+	ld d, a
+	ld a, [$d41a]
+	cp $ff
+	jr nz, .asm_ccb09
+	ld a, $28
+	add d
+	jr .asm_ccb26
+
+.asm_ccb09
+	sub d
+	push af
+	ld a, [FXAnimIDHi]
+	or a
+	jr nz, .asm_ccb25
+	ld a, [FXAnimIDLo]
+	cp $86
+	jr z, .asm_ccb20
+	cp $87
+	jr z, .asm_ccb20
+	cp $d0
+	jr nz, .asm_ccb25
+
+.asm_ccb20
+	pop af
+	sub $8
+	jr .asm_ccb26
+
+.asm_ccb25
+	pop af
+
+.asm_ccb26
+	ld [$d41d], a
+	ld a, [hli]
+	xor $ff
+	inc a
+	ld [$d41e], a
+	ret
+; ccb31
+
+INCBIN "baserom.gbc", $ccb31, $ccb48 - $ccb31
+
+
+Functionccb48: ; ccb48
+	ld hl, Functioncc000
+	ld a, $32
+	rst FarCall
+	ret
+; ccb4f
+
+INCBIN "baserom.gbc", $ccb4f, $ccfbe - $ccb4f
+
+
+Functionccfbe: ; ccfbe
+	ld hl, $0004
+	add hl, bc
+	ld e, [hl]
+	ld d, $0
+	ld hl, $4fce
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; ccfce
+
+INCBIN "baserom.gbc", $ccfce, $ce7d1 - $ccfce
+
+
+Functionce7d1: ; ce7d1
+.asm_ce7d1
+	ld hl, $000c
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_ce7e1
+	dec [hl]
+	call Functionce823
+	ld a, [hli]
+	push af
+	jr .asm_ce7fd
+
+.asm_ce7e1
+	ld hl, $000d
+	add hl, bc
+	inc [hl]
+	call Functionce823
+	ld a, [hli]
+	cp $fe
+	jr z, .asm_ce815
+	cp $ff
+	jr z, .asm_ce807
+	push af
+	ld a, [hl]
+	push hl
+	and $3f
+	ld hl, $000c
+	add hl, bc
+	ld [hl], a
+	pop hl
+
+.asm_ce7fd
+	ld a, [hl]
+	and $c0
+	srl a
+	ld [$d420], a
+	pop af
+	ret
+
+.asm_ce807
+	xor a
+	ld hl, $000c
+	add hl, bc
+	ld [hl], a
+	ld hl, $000d
+	add hl, bc
+	dec [hl]
+	dec [hl]
+	jr .asm_ce7d1
+
+.asm_ce815
+	xor a
+	ld hl, $000c
+	add hl, bc
+	ld [hl], a
+	dec a
+	ld hl, $000d
+	add hl, bc
+	ld [hl], a
+	jr .asm_ce7d1
+; ce823
+
+Functionce823: ; ce823
+	ld hl, $0003
+	add hl, bc
+	ld e, [hl]
+	ld d, $0
+	ld hl, $685e
+	add hl, de
+	add hl, de
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld hl, $000d
+	add hl, bc
+	ld l, [hl]
+	ld h, $0
+	add hl, hl
+	add hl, de
+	ret
+; ce83c
+
+Functionce83c: ; ce83c
+	ld l, a
+	ld h, $0
+	ld de, $6eae
+	add hl, hl
+	add hl, hl
+	add hl, de
+	ret
+; ce846
+
+INCBIN "baserom.gbc", $ce846, $cfd9e - $ce846
+
 ;                          Songs iii
 
 Music_PostCredits: INCLUDE "audio/music/postcredits.asm"
@@ -21310,8 +65069,798 @@
 
 SECTION "bank39",ROMX,BANK[$39]
 
-INCBIN "baserom.gbc", $e4000, $e555d - $e4000
+CopyrightGFX: ; e4000
+INCBIN "gfx/misc/copyright.2bpp"
+; e41d0
 
+_OptionsMenu: ; e41d0
+	ld hl, $ffaa
+	ld a, [hl]
+	push af
+	ld [hl], $1
+	call WhiteBGMap
+	ld hl, TileMap
+	ld b, $10
+	ld c, $12
+	call TextBox
+	ld hl, $c4ca
+	ld de, Stringe4241
+	call PlaceString
+	xor a
+	ld [$cf63], a
+	ld c, $6
+.asm_e41f3
+	push bc
+	xor a
+	ld [$ffa9], a
+	call Functione42d6
+	pop bc
+	ld hl, $cf63
+	inc [hl]
+	dec c
+	jr nz, .asm_e41f3
+	call Functione4512
+	xor a
+	ld [$cf63], a
+	inc a
+	ld [hBGMapMode], a
+	call WaitBGMap
+	ld b, $8
+	call GetSGBLayout
+	call Function32f9
+.asm_e4217
+	call Functiona57
+	ld a, [hJoyPressed]
+	and $a
+	jr nz, .asm_e4234
+	call Functione452a
+	jr c, .asm_e422a
+	call Functione42d6
+	jr c, .asm_e4234
+
+.asm_e422a
+	call Functione455c
+	ld c, $3
+	call DelayFrames
+	jr .asm_e4217
+
+.asm_e4234
+	ld de, SFX_TRANSACTION
+	call StartSFX
+	call WaitSFX
+	pop af
+	ld [$ffaa], a
+	ret
+; e4241
+
+Stringe4241: ; e4241
+	db "TEXT SPEED", $22
+	db "        :", $22
+	db "BATTLE SCENE", $22
+	db "        :", $22
+	db "BATTLE STYLE", $22
+	db "        :", $22
+	db "SOUND", $22
+	db "        :", $22
+	db "PRINT", $22
+	db "        :", $22
+	db "MENU ACCOUNT", $22
+	db "        :", $22
+	db "FRAME", $22
+	db "        :TYPE", $22
+	db "CANCEL@"
+; e42d6
+
+
+Functione42d6: ; e42d6
+	ld a, [$cf63]
+	ld e, a
+	ld d, 0
+	ld hl, .Pointers
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; e42e5
+
+.Pointers
+	dw Options_TextSpeed
+	dw Options_BattleScene
+	dw Options_BattleStyle
+	dw Options_Sound
+	dw Options_Print
+	dw Options_MenuAccount
+	dw Options_Frame
+	dw Options_Cancel
+; e42f5
+
+
+Options_TextSpeed: ; e42f5
+	call Functione4346
+	ld a, [hJoyPressed]
+	bit 5, a
+	jr nz, .asm_e430d
+	bit 4, a
+	jr z, .asm_e431f
+	ld a, c
+	cp $2
+	jr c, .asm_e4309
+	ld c, $ff
+
+.asm_e4309
+	inc c
+	ld a, e
+	jr .asm_e4315
+
+.asm_e430d
+	ld a, c
+	and a
+	jr nz, .asm_e4313
+	ld c, $3
+
+.asm_e4313
+	dec c
+	ld a, d
+
+.asm_e4315
+	ld b, a
+	ld a, [Options]
+	and $f0
+	or b
+	ld [Options], a
+
+.asm_e431f
+	ld b, 0
+	ld hl, .Strings
+	add hl, bc
+	add hl, bc
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld hl, $c4e7
+	call PlaceString
+	and a
+	ret
+; e4331
+
+.Strings
+	dw .Fast
+	dw .Mid
+	dw .Slow
+
+.Fast
+	db "FAST@"
+.Mid
+	db "MID @"
+.Slow
+	db "SLOW@"
+; e4346
+
+
+Functione4346: ; e4346
+	ld a, [Options]
+	and $7
+	cp $5
+	jr z, .asm_e4359
+	cp $1
+	jr z, .asm_e435f
+	ld c, $1
+	ld de, $0105
+	ret
+
+.asm_e4359
+	ld c, $2
+	ld de, $0301
+	ret
+
+.asm_e435f
+	ld c, $0
+	ld de, $0503
+	ret
+; e4365
+
+
+Options_BattleScene: ; e4365
+	ld hl, Options
+	ld a, [hJoyPressed]
+	bit 5, a
+	jr nz, .asm_e4378
+	bit 4, a
+	jr z, .asm_e437e
+	bit 7, [hl]
+	jr nz, .asm_e4384
+	jr .asm_e438b
+
+.asm_e4378
+	bit 7, [hl]
+	jr z, .asm_e438b
+	jr .asm_e4384
+
+.asm_e437e
+	bit 7, [hl]
+	jr z, .asm_e4384
+	jr .asm_e438b
+
+.asm_e4384
+	res 7, [hl]
+	ld de, .On
+	jr .asm_e4390
+
+.asm_e438b
+	set 7, [hl]
+	ld de, .Off
+
+.asm_e4390
+	ld hl, $c50f
+	call PlaceString
+	and a
+	ret
+; e4398
+
+.On
+	db "ON @"
+.Off
+	db "OFF@"
+; e43a0
+
+
+Options_BattleStyle: ; e43a0
+	ld hl, Options
+	ld a, [hJoyPressed]
+	bit 5, a
+	jr nz, .asm_e43b3
+	bit 4, a
+	jr z, .asm_e43b9
+	bit 6, [hl]
+	jr nz, .asm_e43bd
+	jr .asm_e43c4
+
+.asm_e43b3
+	bit 6, [hl]
+	jr z, .asm_e43c4
+	jr .asm_e43bd
+
+.asm_e43b9
+	bit 6, [hl]
+	jr nz, .asm_e43c4
+
+.asm_e43bd
+	res 6, [hl]
+	ld de, .Shift
+	jr .asm_e43c9
+
+.asm_e43c4
+	set 6, [hl]
+	ld de, .Set
+
+.asm_e43c9
+	ld hl, $c537
+	call PlaceString
+	and a
+	ret
+; e43d1
+
+.Shift
+	db "SHIFT@"
+.Set
+	db "SET  @"
+; e43dd
+
+
+Options_Sound: ; e43dd
+	ld hl, Options
+	ld a, [hJoyPressed]
+	bit 5, a
+	jr nz, .asm_e43f0
+	bit 4, a
+	jr z, .asm_e43f6
+	bit 5, [hl]
+	jr nz, .asm_e43fc
+	jr .asm_e4406
+
+.asm_e43f0
+	bit 5, [hl]
+	jr z, .asm_e4406
+	jr .asm_e43fc
+
+.asm_e43f6
+	bit 5, [hl]
+	jr nz, .asm_e440b
+	jr .asm_e4401
+
+.asm_e43fc
+	res 5, [hl]
+	call Function3d47
+
+.asm_e4401
+	ld de, .Mono
+	jr .asm_e440e
+
+.asm_e4406
+	set 5, [hl]
+	call Function3d47
+
+.asm_e440b
+	ld de, .Stereo
+
+.asm_e440e
+	ld hl, $c55f
+	call PlaceString
+	and a
+	ret
+; e4416
+
+.Mono
+	db "MONO  @"
+.Stereo
+	db "STEREO@"
+; e4424
+
+
+Options_Print: ; e4424
+	call $4491
+	ld a, [hJoyPressed]
+	bit 5, a
+	jr nz, .asm_e443c
+	bit 4, a
+	jr z, .asm_e4448
+	ld a, c
+	cp $4
+	jr c, .asm_e4438
+	ld c, $ff
+
+.asm_e4438
+	inc c
+	ld a, e
+	jr .asm_e4444
+
+.asm_e443c
+	ld a, c
+	and a
+	jr nz, .asm_e4442
+	ld c, $5
+
+.asm_e4442
+	dec c
+	ld a, d
+
+.asm_e4444
+	ld b, a
+	ld [GBPrinter], a
+
+.asm_e4448
+	ld b, $0
+	ld hl, $445a
+	add hl, bc
+	add hl, bc
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld hl, $c587
+	call PlaceString
+	and a
+	ret
+; e445a
+
+.Strings
+	dw .Lightest
+	dw .Lighter
+	dw .Normal
+	dw .Darker
+	dw .Darkest
+
+.Lightest
+	db "LIGHTEST@"
+.Lighter
+	db "LIGHTER @"
+.Normal
+	db "NORMAL  @"
+.Darker
+	db "DARKER  @"
+.Darkest
+	db "DARKEST @"
+; e4491
+
+
+Functione4491: ; e4491
+	ld a, [GBPrinter]
+	and a
+	jr z, .asm_e44a9
+	cp $20
+	jr z, .asm_e44af
+	cp $60
+	jr z, .asm_e44b5
+	cp $7f
+	jr z, .asm_e44bb
+	ld c, $2
+	ld de, $2060
+	ret
+
+.asm_e44a9
+	ld c, $0
+	ld de, $7f20
+	ret
+
+.asm_e44af
+	ld c, $1
+	ld de, $0040
+	ret
+
+.asm_e44b5
+	ld c, $3
+	ld de, $407f
+	ret
+
+.asm_e44bb
+	ld c, $4
+	ld de, $6000
+	ret
+; e44c1
+
+Options_MenuAccount: ; e44c1
+	ld hl, Options2
+	ld a, [hJoyPressed]
+	bit 5, a
+	jr nz, .asm_e44d4
+	bit 4, a
+	jr z, .asm_e44da
+	bit 0, [hl]
+	jr nz, .asm_e44de
+	jr .asm_e44e5
+
+.asm_e44d4
+	bit 0, [hl]
+	jr z, .asm_e44e5
+	jr .asm_e44de
+
+.asm_e44da
+	bit 0, [hl]
+	jr nz, .asm_e44e5
+
+.asm_e44de
+	res 0, [hl]
+	ld de, .Off
+	jr .asm_e44ea
+
+.asm_e44e5
+	set 0, [hl]
+	ld de, .On
+
+.asm_e44ea
+	ld hl, $c5af
+	call PlaceString
+	and a
+	ret
+; e44f2
+
+.Off
+	db "OFF@"
+.On
+	db "ON @"
+; e44fa
+
+
+Options_Frame: ; e44fa
+	ld hl, TextBoxFrame
+	ld a, [hJoyPressed]
+	bit 5, a
+	jr nz, .asm_e450d
+	bit 4, a
+	jr nz, .asm_e4509
+	and a
+	ret
+
+.asm_e4509
+	ld a, [hl]
+	inc a
+	jr .asm_e450f
+
+.asm_e450d
+	ld a, [hl]
+	dec a
+
+.asm_e450f
+	and $7
+	ld [hl], a
+	; fallthrough
+; e4512
+
+Functione4512: ; e4512
+	ld a, [TextBoxFrame]
+	ld hl, $c5dc
+	add "1"
+	ld [hl], a
+	call Functione5f
+	and a
+	ret
+; e4520
+
+Options_Cancel: ; e4520
+	ld a, [hJoyPressed]
+	and BUTTON_A
+	jr nz, .asm_e4528
+	and a
+	ret
+
+.asm_e4528
+	scf
+	ret
+; e452a
+
+Functione452a: ; e452a
+	ld hl, $cf63
+	ld a, [$ffa9]
+	cp $80
+	jr z, .asm_e4539
+	cp $40
+	jr z, .asm_e454b
+	and a
+	ret
+
+.asm_e4539
+	ld a, [hl]
+	cp $7
+	jr nz, .asm_e4542
+	ld [hl], $0
+	scf
+	ret
+
+.asm_e4542
+	cp $5
+	jr nz, .asm_e4548
+	ld [hl], $5
+
+.asm_e4548
+	inc [hl]
+	scf
+	ret
+
+.asm_e454b
+	ld a, [hl]
+	cp $6
+	jr nz, .asm_e4554
+	ld [hl], $5
+	scf
+	ret
+
+.asm_e4554
+	and a
+	jr nz, .asm_e4559
+	ld [hl], $8
+
+.asm_e4559
+	dec [hl]
+	scf
+	ret
+; e455c
+
+Functione455c: ; e455c
+	ld hl, $c4b5
+	ld de, $0014
+	ld c, $10
+.asm_e4564
+	ld [hl], $7f
+	add hl, de
+	dec c
+	jr nz, .asm_e4564
+	ld hl, $c4c9
+	ld bc, $0028
+	ld a, [$cf63]
+	call AddNTimes
+	ld [hl], $ed
+	ret
+; e4579
+
+
+Functione4579: ; e4579
+	ld de, MUSIC_NONE
+	call StartMusic
+	call WhiteBGMap
+	call ClearTileMap
+	ld a, $98
+	ld [$ffd7], a
+	xor a
+	ld [hBGMapAddress], a
+	ld [hJoyDown], a
+	ld [hSCX], a
+	ld [hSCY], a
+	ld a, $90
+	ld [hWY], a
+	call WaitBGMap
+	ld b, $19
+	call GetSGBLayout
+	call Function32f9
+	ld c, 10
+	call DelayFrames
+	callab Copyright
+	call WaitBGMap
+	ld c, $64
+	call DelayFrames
+	call ClearTileMap
+	ld a, $13
+	ld hl, $6a82
+	rst FarCall
+	call Functione45e8
+.asm_e45c0
+	call Functiona57
+	ld a, [$ffa9]
+	and $f
+	jr nz, .asm_e45de
+	ld a, [$cf63]
+	bit 7, a
+	jr nz, .asm_e45e3
+	call Functione4670
+	ld a, $23
+	ld hl, $4f69
+	rst FarCall
+	call DelayFrame
+	jr .asm_e45c0
+
+.asm_e45de
+	call Functione465e
+	scf
+	ret
+
+.asm_e45e3
+	call Functione465e
+	and a
+	ret
+; e45e8
+
+Functione45e8: ; e45e8
+	ld de, $47cc
+	ld hl, VTiles2
+	ld bc, $391c
+	call Get1bpp
+	ld a, [rSVBK]
+	push af
+	ld a, $6
+	ld [rSVBK], a
+	ld hl, $5407
+	ld de, $d000
+	ld a, $42
+	call FarDecompress
+	ld hl, VTiles0
+	ld de, $d000
+	ld bc, $0180
+	call Request2bpp
+	ld hl, VTiles1
+	ld de, $d800
+	ld bc, $0180
+	call Request2bpp
+	pop af
+	ld [rSVBK], a
+	ld a, $23
+	ld hl, $4f53
+	rst FarCall
+	ld de, $5458
+	ld a, $3
+	call Function3b2a
+	ld hl, $0007
+	add hl, bc
+	ld [hl], $a0
+	ld hl, $000c
+	add hl, bc
+	ld [hl], $60
+	ld hl, $000d
+	add hl, bc
+	ld [hl], $30
+	xor a
+	ld [$cf63], a
+	ld [$cf64], a
+	ld [$cf65], a
+	ld [hSCX], a
+	ld [hSCY], a
+	ld a, $1
+	ld [hBGMapMode], a
+	ld a, $90
+	ld [hWY], a
+	ld de, $e4e4
+	call DmgToCgbObjPals
+	ret
+; e465e
+
+Functione465e: ; e465e
+	ld a, $23
+	ld hl, $4f53
+	rst FarCall
+	call ClearTileMap
+	call ClearSprites
+	ld c, $10
+	call DelayFrames
+	ret
+; e4670
+
+Functione4670: ; e4670
+	ld a, [$cf63]
+	ld e, a
+	ld d, $0
+	ld hl, $467f
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; e467f
+
+INCBIN "baserom.gbc", $e467f, $e48ac - $e467f
+
+
+Functione48ac: ; e48ac
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld a, [$ffaa]
+	push af
+	ld a, [$ff9e]
+	push af
+	call Functione4901
+	call Functiona57
+	ld a, [$ffa9]
+	and $f
+	jr nz, .asm_e48db
+	ld a, [$cf63]
+	bit 7, a
+	jr nz, .asm_e48e1
+	call Functione490f
+	callba Function8cf69
+	call DelayFrame
+	jp $48bc
+
+.asm_e48db
+	ld de, $0000
+	call StartMusic
+
+.asm_e48e1
+	call WhiteBGMap
+	call ClearSprites
+	call ClearTileMap
+	xor a
+	ld [hSCX], a
+	ld [hSCY], a
+	ld a, $7
+	ld [hWX], a
+	ld a, $90
+	ld [hWY], a
+	pop af
+	ld [$ff9e], a
+	pop af
+	ld [$ffaa], a
+	pop af
+	ld [rSVBK], a
+	ret
+; e4901
+
+Functione4901: ; e4901
+	xor a
+	ld [$ff9e], a
+	ld a, $1
+	ld [$ffaa], a
+	xor a
+	ld [$ffde], a
+	ld [$cf63], a
+	ret
+; e490f
+
+Functione490f: ; e490f
+	ld a, [$cf63]
+	ld e, a
+	ld d, $0
+	ld hl, $491e
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; e491e
+
+INCBIN "baserom.gbc", $e491e, $e555d - $e491e
+
 IntroSuicuneRunGFX: ; e555d
 INCBIN "gfx/intro/suicune_run.lz"
 ; e592b
@@ -21613,27 +66162,198 @@
 SECTION "bank3E",ROMX,BANK[$3E]
 
 FontExtra:
-INCBIN "gfx/misc/font_extra.2bpp", $0, $200
+INCBIN "gfx/misc/font_extra.2bpp"
 
 Font:
-INCBIN "gfx/misc/font.1bpp", $0, $400
+INCBIN "gfx/misc/font.1bpp"
 
 FontBattleExtra:
-INCBIN "gfx/misc/font_battle_extra.2bpp", $0, $200
+INCBIN "gfx/misc/font_battle_extra.2bpp"
 
-INCBIN "baserom.gbc", $f8800, $f8ba0 - $f8800
+Frames: ; f8800
+INCBIN "gfx/frames/1.1bpp"
+INCBIN "gfx/frames/2.1bpp"
+INCBIN "gfx/frames/3.1bpp"
+INCBIN "gfx/frames/4.1bpp"
+INCBIN "gfx/frames/5.1bpp"
+INCBIN "gfx/frames/6.1bpp"
+INCBIN "gfx/frames/7.1bpp"
+INCBIN "gfx/frames/8.1bpp"
+INCBIN "gfx/frames/9.1bpp"
+; f89b0
 
+INCBIN "baserom.gbc", $f89b0, $f8ba0 - $f89b0
+
 TownMapGFX: ; f8ba0
 INCBIN "gfx/misc/town_map.lz"
 ; f8ea3
 
-INCBIN "baserom.gbc", $f8ea3, $fbbfc - $f8ea3
+INCBIN "baserom.gbc", $f8ea3, $fb449 - $f8ea3
 
+
+Functionfb449: ; fb449
+	ld de, $4200
+	ld hl, VTiles1
+	ld bc, Function3e80
+	ld a, [rLCDC]
+	bit 7, a
+	jp z, Copy1bpp
+	ld de, $4200
+	ld hl, VTiles1
+	ld bc, $3e20
+	call Functionddc
+	ld de, $4300
+	ld hl, $8a00
+	ld bc, $3e20
+	call Functionddc
+	ld de, $4400
+	ld hl, $8c00
+	ld bc, $3e20
+	call Functionddc
+	ld de, $4500
+	ld hl, $8e00
+	ld bc, $3e20
+	call Functionddc
+	ret
+; fb48a
+
+
+
+Functionfb48a: ; fb48a
+	ld de, $5214
+	ld hl, $9600
+	ld bc, $3e01
+	call Functionddc
+	ld de, $4f24
+	ld hl, $9620
+	ld bc, $3e01
+	call Functiondc9
+	ld de, $4030
+	ld hl, $9630
+	ld bc, $3e16
+	call Functiondc9
+	jr .asm_fb4cc
+
+	ld de, $5424
+	ld hl, $9610
+	ld b, $3e
+	ld c, $1
+	call Functiondc9
+	ret
+
+	ld de, $4600
+	ld hl, $9600
+	ld bc, $3e19
+	call Functiondc9
+	jr .asm_fb4cc
+
+.asm_fb4cc
+	ld a, [TextBoxFrame]
+	and 7
+	ld bc, $0030
+	ld hl, Frames
+	call AddNTimes
+	ld d, h
+	ld e, l
+	ld hl, $9790
+	ld bc, $3e06
+	call Functionddc
+	ld hl, $97f0
+	ld de, $5204
+	ld bc, $3e01
+	call Functionddc
+	ret
+; fb4f2
+
+Functionfb4f2: ; fb4f2
+	ld de, $4600
+	ld hl, $9600
+	ld bc, $3e0c
+	call Functiondc9
+	ld hl, $9700
+	ld de, $4700
+	ld bc, $3e03
+	call Functiondc9
+	call $74cc
+	ld de, $4ac0
+	ld hl, $96c0
+	ld bc, $3e04
+	call Functionddc
+	ld de, $4ae0
+	ld hl, $9730
+	ld bc, $3e06
+	call Functionddc
+	ld de, $4b10
+	ld hl, $9550
+	ld bc, $3e09
+	call Functiondc9
+	ld de, $52a4
+	ld hl, $95e0
+	ld bc, $3e02
+	call Functiondc9
+	ret
+; fb53e
+
+Functionfb53e: ; fb53e
+	call $74be
+	ld de, $4ac0
+	ld hl, $96c0
+	ld bc, $3e04
+	call Functionddc
+	ld de, $4ae0
+	ld hl, $9780
+	ld bc, $3e01
+	call Functionddc
+	ld de, $4af8
+	ld hl, $9760
+	ld bc, $3e02
+	call Functionddc
+	ld de, $4b10
+	ld hl, $9550
+	ld bc, $3e08
+	call Functiondc9
+	ld de, $49b0
+	ld hl, $9310
+	ld bc, $3e11
+	call Functiondc9
+	ret
+; fb57e
+
+INCBIN "baserom.gbc", $fb57e, $fba18 - $fb57e
+
+
+Functionfba18: ; fba18
+	ld a, [UnownLetter]
+	ld c, a
+	ld b, $1a
+	ld hl, UnownDex
+.asm_fba21
+	ld a, [hli]
+	and a
+	jr z, .asm_fba2b
+	cp c
+	ret z
+	dec b
+	jr nz, .asm_fba21
+	ret
+
+.asm_fba2b
+	dec hl
+	ld [hl], c
+	ret
+; fba2e
+
+INCBIN "baserom.gbc", $fba2e, $fbbfc - $fba2e
+
 INCLUDE "battle/magikarp_length.asm"
 
-INCBIN "baserom.gbc", $fbccf, $fbda4 - $fbccf
+INCBIN "baserom.gbc", $fbccf, $fbced - $fbccf
 
+INCLUDE "battle/hidden_power.asm"
 
+INCBIN "baserom.gbc", $fbd54, $fbda4 - $fbd54
+
+
 DoWeatherModifiers: ; fbda4
 
 	ld de, .WeatherTypeModifiers
@@ -21688,7 +66408,7 @@
 
 .ApplyModifier
 	xor a
-	ld [$ffb4], a
+	ld [hMultiplicand], a
 	ld hl, CurDamage
 	ld a, [hli]
 	ld [$ffb5], a
@@ -21697,16 +66417,16 @@
 
 	inc de
 	ld a, [de]
-	ld [$ffb7], a
+	ld [hMultiplier], a
 
 	call Multiply
 
 	ld a, 10
-	ld [$ffb7], a
+	ld [hMultiplier], a
 	ld b, $4
 	call Divide
 
-	ld a, [$ffb4]
+	ld a, [hMultiplicand]
 	and a
 	ld bc, $ffff
 	jr nz, .Update
@@ -21914,13 +66634,13 @@
 
 Tileset31Anim: ; 0xfc073
 ;	   param, function
-	dw $0000, $445c
-	dw $0000, $44c4
+	dw $0000, ForestTreeLeftAnimation
+	dw $0000, ForestTreeRightAnimation
 	dw $0000, WaitTileAnimation
 	dw $0000, WaitTileAnimation
 	dw $0000, WaitTileAnimation
-	dw $0000, $44f2
-	dw $0000, $451c
+	dw $0000, ForestTreeLeftAnimation2
+	dw $0000, ForestTreeRightAnimation2
 	dw $0000, AnimateFlowerTile
 	dw $9140, AnimateWaterTile
 	dw $0000, TileAnimationPalette
@@ -21980,23 +66700,23 @@
 Tileset24Anim: ; 0xfc1e7
 Tileset30Anim: ; 0xfc1e7
 ;	   param, function
-	dw $9140, $46a2
+	dw $9140, WriteTileToBuffer
 	dw $0000, $471e
 	dw $cf41, ScrollTileRightLeft
 	dw $0000, $471e
-	dw $9140, $4696
+	dw $9140, WriteTileFromBuffer
 	dw $0000, $471e
 	dw $0000, TileAnimationPalette
 	dw $0000, $471e
-	dw $9400, $46a2
+	dw $9400, WriteTileToBuffer
 	dw $0000, $471e
-	dw $cf41, $436a
+	dw $cf41, ScrollTileDown
 	dw $0000, $471e
-	dw $cf41, $436a
+	dw $cf41, ScrollTileDown
 	dw $0000, $471e
-	dw $cf41, $436a
+	dw $cf41, ScrollTileDown
 	dw $0000, $471e
-	dw $9400, $4696
+	dw $9400, WriteTileFromBuffer
 	dw $0000, $471e
 	dw $0000, DoneTileAnimation
 ; 0xfc233
@@ -22003,23 +66723,23 @@
 
 Tileset29Anim: ; 0xfc233
 ;	   param, function
-	dw $9350, $46a2
+	dw $9350, WriteTileToBuffer
 	dw $0000, $471e
 	dw $cf41, ScrollTileRightLeft
 	dw $0000, $471e
-	dw $9350, $4696
+	dw $9350, WriteTileFromBuffer
 	dw $0000, $471e
 	dw $0000, TileAnimationPalette
 	dw $0000, $471e
-	dw $9310, $46a2
+	dw $9310, WriteTileToBuffer
 	dw $0000, $471e
-	dw $cf41, $436a
+	dw $cf41, ScrollTileDown
 	dw $0000, $471e
-	dw $cf41, $436a
+	dw $cf41, ScrollTileDown
 	dw $0000, $471e
-	dw $cf41, $436a
+	dw $cf41, ScrollTileDown
 	dw $0000, $471e
-	dw $9310, $4696
+	dw $9310, WriteTileFromBuffer
 	dw $0000, $471e
 	dw $0000, DoneTileAnimation
 ; 0xfc27f
@@ -22723,7 +67443,7 @@
 	ret z
 	
 ; We don't want to mess with non-standard palettes.
-	ld a, [$ff47] ; BGP
+	ld a, [rBGP] ; BGP
 	cp %11100100
 	ret nz
 	
@@ -22830,9 +67550,270 @@
 ; fca98
 
 
-INCBIN "baserom.gbc", $fca98, $fcdc2 - $fca98
+INCBIN "baserom.gbc", $fca98, $fcba8 - $fca98
 
 
+Functionfcba8: ; fcba8
+	ld a, e
+	ld [$cf63], a
+	call Functionfcc59
+	ld b, $2
+	call Functionfcc4a
+	ld a, $4
+	jr nz, .asm_fcc03
+	ld a, $0
+	call Functionfcf38
+	call Function1dcf
+	ld a, $1
+	jr c, .asm_fcc03
+	ld b, $6
+	ld a, $14
+	ld hl, $401d
+	rst FarCall
+	ld a, $1
+	jr c, .asm_fcc03
+	ld e, $1
+	call LoadTradesPointer
+	ld a, [CurPartySpecies]
+	cp [hl]
+	ld a, $2
+	jr nz, .asm_fcc03
+	call Functionfcc23
+	ld a, $2
+	jr c, .asm_fcc03
+	ld b, $1
+	call Functionfcc4a
+	ld hl, $4f7b
+	call PrintText
+	call Functionfcc63
+	call Functionfcc07
+	call Functionfce1b
+	ld hl, $4f80
+	call PrintText
+	call Function3d47
+	ld a, $3
+
+.asm_fcc03
+	call Functionfcf38
+	ret
+; fcc07
+
+Functionfcc07: ; fcc07
+	call Function2ed3
+	ld a, [$cf63]
+	push af
+	ld a, [$cf64]
+	push af
+	ld a, $1e
+	call Predef
+	pop af
+	ld [$cf64], a
+	pop af
+	ld [$cf63], a
+	call Function2b74
+	ret
+; fcc23
+
+Functionfcc23: ; fcc23
+	xor a
+	ld [MonType], a
+	ld e, $1e
+	call LoadTradesPointer
+	ld a, [hl]
+	and a
+	jr z, .asm_fcc46
+	cp $1
+	jr z, .asm_fcc3e
+	callba GetGender
+	jr nz, .asm_fcc48
+	jr .asm_fcc46
+
+.asm_fcc3e
+	callba GetGender
+	jr z, .asm_fcc48
+
+.asm_fcc46
+	and a
+	ret
+
+.asm_fcc48
+	scf
+	ret
+; fcc4a
+
+Functionfcc4a: ; fcc4a
+	ld hl, $d960
+	ld a, [$cf63]
+	ld c, a
+	ld a, $3
+	call Predef
+	ld a, c
+	and a
+	ret
+; fcc59
+
+Functionfcc59: ; fcc59
+	ld e, $0
+	call LoadTradesPointer
+	ld a, [hl]
+	ld [$cf64], a
+	ret
+; fcc63
+
+Functionfcc63: ; fcc63
+	ld e, $1
+	call LoadTradesPointer
+	ld a, [hl]
+	ld [PlayerSDefLevel], a
+	ld e, $2
+	call LoadTradesPointer
+	ld a, [hl]
+	ld [PlayerLightScreenCount], a
+	ld a, [PlayerSDefLevel]
+	ld de, PlayerAccLevel
+	call Functionfcde8
+	call Functionfcdf4
+	ld a, [PlayerLightScreenCount]
+	ld de, PlayerReflectCount
+	call Functionfcde8
+	call Functionfcdf4
+	ld hl, PartyMon1OT
+	ld bc, $000b
+	call Functionfcdd7
+	ld de, $c6f2
+	call Functionfcdf4
+	ld hl, PlayerName
+	ld de, $c6e7
+	call Functionfcdf4
+	ld hl, PartyMon1ID
+	ld bc, $0030
+	call Functionfcdd7
+	ld de, PlayerScreens
+	call Functionfce0f
+	ld hl, PartyMon1DVs
+	ld bc, $0030
+	call Functionfcdd7
+	ld de, $c6fd
+	call Functionfce0f
+	ld hl, PartyMon1Species
+	ld bc, $0030
+	call Functionfcdd7
+	ld b, h
+	ld c, l
+	ld a, $13
+	ld hl, $7301
+	rst FarCall
+	ld a, c
+	ld [$c701], a
+	ld e, $0
+	call LoadTradesPointer
+	ld a, [hl]
+	cp $3
+	ld a, $1
+	jr c, .asm_fcce6
+	ld a, $2
+
+.asm_fcce6
+	ld [$c733], a
+	ld hl, PartyMon1Level
+	ld bc, $0030
+	call Functionfcdd7
+	ld a, [hl]
+	ld [CurPartyLevel], a
+	ld a, [PlayerLightScreenCount]
+	ld [CurPartySpecies], a
+	xor a
+	ld [MonType], a
+	ld [$d10b], a
+	ld hl, $6039
+	ld a, $3
+	rst FarCall
+	ld a, $6
+	call Predef
+	ld e, $0
+	call LoadTradesPointer
+	ld a, [hl]
+	cp $3
+	ld b, $0
+	jr c, .asm_fcd1c
+	ld b, $1
+
+.asm_fcd1c
+	ld a, $13
+	ld hl, $5ba3
+	rst FarCall
+	ld e, $3
+	call LoadTradesPointer
+	ld de, FailedMessage
+	call Functionfcdf4
+	ld hl, PartyMon1Nickname
+	ld bc, $000b
+	call Functionfcdde
+	ld hl, FailedMessage
+	call Functionfcdf4
+	ld e, $13
+	call LoadTradesPointer
+	push hl
+	ld de, $c724
+	call Functionfcdf4
+	pop hl
+	ld de, $c719
+	call Functionfcdf4
+	ld hl, PartyMon1OT
+	ld bc, $000b
+	call Functionfcdde
+	ld hl, $c724
+	call Functionfcdf4
+	ld e, $e
+	call LoadTradesPointer
+	ld de, $c72f
+	call Functionfce0f
+	ld hl, PartyMon1DVs
+	ld bc, $0030
+	call Functionfcdde
+	ld hl, $c72f
+	call Functionfce0f
+	ld e, $11
+	call LoadTradesPointer
+	ld de, $c732
+	call Functionfce15
+	ld hl, PartyMon1ID
+	ld bc, $0030
+	call Functionfcdde
+	ld hl, $c731
+	call Functionfce0f
+	ld e, $10
+	call LoadTradesPointer
+	push hl
+	ld hl, PartyMon1Item
+	ld bc, $0030
+	call Functionfcdde
+	pop hl
+	ld a, [hl]
+	ld [de], a
+	push af
+	push bc
+	push de
+	push hl
+	ld a, [CurPartyMon]
+	push af
+	ld a, [PartyCount]
+	dec a
+	ld [CurPartyMon], a
+	ld a, $3
+	ld hl, $6134
+	rst FarCall
+	pop af
+	ld [CurPartyMon], a
+	pop hl
+	pop de
+	pop bc
+	pop af
+	ret
+; fcdc2
+
+
+
 LoadTradesPointer: ; 0xfcdc2
 	ld d, 0
 	push de
@@ -22849,8 +67830,95 @@
 	ret
 ; 0xfcdd7
 
-INCBIN "baserom.gbc", $fcdd7, $fce58-$fcdd7
+Functionfcdd7: ; fcdd7
+	ld a, [CurPartyMon]
+	call AddNTimes
+	ret
+; fcdde
 
+Functionfcdde: ; fcdde
+	ld a, [PartyCount]
+	dec a
+	call AddNTimes
+	ld e, l
+	ld d, h
+	ret
+; fcde8
+
+Functionfcde8: ; fcde8
+	push de
+	ld [$d265], a
+	call GetBasePokemonName
+	ld hl, StringBuffer1
+	pop de
+	ret
+; fcdf4
+
+Functionfcdf4: ; fcdf4
+	ld bc, $000b
+	call CopyBytes
+	ret
+; fcdfb
+
+INCBIN "baserom.gbc", $fcdfb, $fce0f - $fcdfb
+
+
+Functionfce0f: ; fce0f
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hl]
+	ld [de], a
+	ret
+; fce15
+
+Functionfce15: ; fce15
+	ld a, [hli]
+	ld [de], a
+	dec de
+	ld a, [hl]
+	ld [de], a
+	ret
+; fce1b
+
+Functionfce1b: ; fce1b
+	ld e, $2
+	call LoadTradesPointer
+	ld a, [hl]
+	call Functionfcde8
+	ld de, StringBuffer2
+	call Functionfcdf4
+	ld e, $1
+	call LoadTradesPointer
+	ld a, [hl]
+	call Functionfcde8
+	ld de, $d050
+	call Functionfcdf4
+	ld hl, StringBuffer1
+.asm_fce3c
+	ld a, [hli]
+	cp $50
+	jr nz, .asm_fce3c
+	dec hl
+	push hl
+	ld e, $1e
+	call LoadTradesPointer
+	ld a, [hl]
+	pop hl
+	and a
+	ret z
+	cp $1
+	ld a, $ef
+	jr z, .asm_fce54
+	ld a, $f5
+
+.asm_fce54
+	ld [hli], a
+	ld [hl], $50
+	ret
+; fce58
+
+
 Trades: ; 0xfce58
 ; byte 1: dialog
 ; byte 2: givemon
@@ -22871,18 +67939,1796 @@
 	db 3,CHANSEY,AERODACTYL,"AEROY@@@@@@", $96, $66,GOLD_BERRY, $7b, $67,"KIM@@@@@@@@",0,0
 	db 0,DUGTRIO,MAGNETON,"MAGGIE@@@@@", $96, $66,METAL_COAT, $a2, $c3,"FOREST@@@@@",0,0
 
-INCBIN "baserom.gbc", $fcf38, $fd1d2-$fcf38
+Functionfcf38: ; fcf38
+	push af
+	call Functionfce1b
+	pop af
+	ld bc, $0008
+	ld hl, $4f53
+	call AddNTimes
+	ld a, [$cf64]
+	ld c, a
+	add hl, bc
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call PrintText
+	ret
+; fcf53
 
+INCBIN "baserom.gbc", $fcf53, $fcfec - $fcf53
 
+
+Functionfcfec: ; fcfec
+	ld a, [$d45c]
+	and a
+	ret nz
+	call Function2d05
+	and a
+	ret nz
+	xor a
+	ld [$dc18], a
+	call Functionfd044
+	ret nc
+	call Functionfd0c3
+	ret nc
+	ld b, $3f
+	ld de, $500f
+	callba Function97c4f
+	scf
+	ret
+; fd00f
+
+INCBIN "baserom.gbc", $fd00f, $fd044 - $fd00f
+
+
+Functionfd044: ; fd044
+	ld a, [$dc17]
+	cp $a
+	jr nc, .asm_fd065
+	call Functionfd117
+	ld a, [hli]
+	ld [$ffc3], a
+	ld a, [hli]
+	ld [$ffc4], a
+	ld a, [hli]
+	ld [$ffc5], a
+	ld de, $d851
+	ld bc, $ffc3
+	ld a, $5
+	ld hl, $600b
+	rst FarCall
+	jr nc, .asm_fd067
+
+.asm_fd065
+	jr .asm_fd069
+
+.asm_fd067
+	scf
+	ret
+
+.asm_fd069
+	ld hl, $ffc3
+	ld [hl], $0
+	inc hl
+	ld [hl], $8
+	inc hl
+	ld [hl], $fc
+.asm_fd074
+	ld de, $dc19
+	ld bc, $d851
+	ld a, $5
+	ld hl, $600b
+	rst FarCall
+	jr z, .asm_fd08b
+	jr nc, .asm_fd089
+	call Functionfd099
+	jr .asm_fd074
+
+.asm_fd089
+	xor a
+	ret
+
+.asm_fd08b
+	call Functionfd099
+	ld a, $5
+	call Function2fb1
+	inc a
+	ld [$dc18], a
+	scf
+	ret
+; fd099
+
+Functionfd099: ; fd099
+	ld de, $dc19
+	ld bc, $ffc3
+	ld a, $5
+	ld hl, $6053
+	rst FarCall
+	ret
+; fd0a6
+
+INCBIN "baserom.gbc", $fd0a6, $fd0c3 - $fd0a6
+
+
+Functionfd0c3: ; fd0c3
+	call Functionfd117
+	ld de, $0006
+	add hl, de
+	ld a, [hli]
+	cp $1
+	jr z, .asm_fd0db
+	ld a, [hl]
+	ld c, a
+	ld b, $1
+	ld a, $9
+	ld hl, $6ef1
+	rst FarCall
+	scf
+	ret
+
+.asm_fd0db
+	ld a, [hl]
+	ld [CurItem], a
+	ld a, $1
+	ld [$d10c], a
+	ld hl, $d8f1
+	call Function2f66
+	ret
+; fd0eb
+
+INCBIN "baserom.gbc", $fd0eb, $fd117 - $fd0eb
+
+
+Functionfd117: ; fd117
+	ld a, [$dc18]
+	and a
+	jr z, .asm_fd123
+	dec a
+	ld de, $5136
+	jr .asm_fd12e
+
+.asm_fd123
+	ld a, [$dc17]
+	cp $a
+	jr c, .asm_fd12b
+	xor a
+
+.asm_fd12b
+	ld de, $515e
+
+.asm_fd12e
+	ld l, a
+	ld h, $0
+	add hl, hl
+	add hl, hl
+	add hl, hl
+	add hl, de
+	ret
+; fd136
+
+INCBIN "baserom.gbc", $fd136, $fd1d2 - $fd136
+
+
 SECTION "bank40",ROMX,BANK[$40]
 
-INCBIN "baserom.gbc", $100000, $10389d - $100000
+INCBIN "baserom.gbc", $100000, $10032e - $100000
 
 
+Function10032e: ; 10032e
+	call Function10034d
+	ld e, a
+	ret nc
+	ld [$cd2b], a
+	ret
+; 100337
+
+Function100337: ; 100337
+	call Function10032e
+	ret c
+	ld a, [$c821]
+	bit 4, a
+	jr z, .asm_100345
+	ld a, e
+	and a
+	ret
+
+.asm_100345
+	ld a, $f9
+	ld e, a
+	ld [$cd2b], a
+	scf
+	ret
+; 10034d
+
+
+
+Function10034d: ; 10034d
+	ld a, [$c821]
+	bit 1, a
+	jr nz, .asm_10036a
+	bit 2, a
+	jr nz, .asm_10037e
+	bit 3, a
+	jr nz, .asm_100366
+	bit 0, a
+	jr nz, .asm_100364
+	ld a, $1
+	and a
+	ret
+
+.asm_100364
+	xor a
+	ret
+
+.asm_100366
+	ld a, $2
+	and a
+	ret
+
+.asm_10036a
+	ld a, $0
+	call Function3e32
+	ld [$cd2c], a
+	ld a, h
+	ld [$cd2d], a
+	ld a, l
+	ld [$cd2e], a
+	ld a, $ff
+	scf
+	ret
+
+.asm_10037e
+	ld a, $fe
+	scf
+	ret
+; 100382
+
+Function100382: ; 100382
+	ld a, [$cd27]
+	ld hl, $444e
+	rst JumpTable
+	ret
+; 10038a
+
+Function10038a: ; 10038a
+	ld hl, $ccb4
+	ld a, $2e
+	call Function3e32
+	ret
+; 100393
+
+Function100393: ; 100393
+	ld hl, $cc60
+	ld a, $3a
+	call Function3e32
+	ret
+; 10039c
+
+Function10039c: ; 10039c
+	ld hl, $cc60
+	ld de, $d000
+	ld bc, $0054
+	ld a, $3
+	call Function306b
+	ret
+; 1003ab
+
+INCBIN "baserom.gbc", $1003ab, $1003ba - $1003ab
+
+
+Function1003ba: ; 1003ba
+	ld hl, $ccb4
+	ld de, $d080
+	ld bc, $0054
+	ld a, $3
+	call Function306b
+	ret
+; 1003c9
+
+Function1003c9: ; 1003c9
+	ld hl, $d080
+	ld de, $ccb4
+	ld bc, $0054
+	ld a, $3
+	call Function306b
+	ret
+; 1003d8
+
+Function1003d8: ; 1003d8
+	ld hl, $ccb4
+	ld a, [hli]
+	ld c, a
+	ld b, $0
+	push hl
+	add hl, bc
+	ld a, [BGMapPalBuffer]
+	ld [hl], a
+	pop hl
+	inc bc
+	call Function10043a
+	add hl, bc
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ld a, c
+	add $2
+	ld [$ccb4], a
+	ret
+; 1003f5
+
+Function1003f5: ; 1003f5
+	ld a, [$cc60]
+	sub $3
+	ld [$cc60], a
+	ld a, [$ccb4]
+	sub $3
+	ld [$ccb4], a
+	ret
+; 100406
+
+Function100406: ; 100406
+	ld a, [$cc60]
+	sub $2
+	ld c, a
+	ld b, $0
+	ld hl, $cc61
+	call Function10043a
+	add hl, bc
+	ld a, [hli]
+	cp e
+	jr nz, .asm_100426
+	ld a, [hld]
+	cp d
+	jr nz, .asm_100426
+	dec hl
+	ld a, [BGMapPalBuffer]
+	cp [hl]
+	jr nz, .asm_10042d
+	xor a
+	ret
+
+.asm_100426
+	ld a, $f4
+	ld [$cd2b], a
+	jr .asm_100432
+
+.asm_10042d
+	ld a, $f3
+	ld [$cd2b], a
+
+.asm_100432
+	push hl
+	ld hl, $cd7c
+	inc [hl]
+	pop hl
+	scf
+	ret
+; 10043a
+
+Function10043a: ; 10043a
+	push hl
+	push bc
+	ld de, $0000
+.asm_10043f
+	ld a, [hli]
+	add e
+	ld e, a
+	ld a, d
+	adc $0
+	ld d, a
+	dec bc
+	ld a, b
+	or c
+	jr nz, .asm_10043f
+	pop bc
+	pop hl
+	ret
+; 10044e
+
+INCBIN "baserom.gbc", $10044e, $10046a - $10044e
+
+
+Function10046a: ; 10046a
+	ld hl, BGMapPalBuffer
+	inc [hl]
+	call Function1003d8
+	call Function1003ba
+	ld a, [$cd27]
+	inc a
+	ld [$cd27], a
+	ret
+; 10047c
+
+Function10047c: ; 10047c
+	call Function100337
+	ret c
+	ret z
+	cp $2
+	jr z, .asm_100487
+	jr .asm_10048d
+
+.asm_100487
+	ld a, $8
+	ld [$cd27], a
+	ret
+
+.asm_10048d
+	ld a, $2
+	ld [$cd27], a
+	ret
+; 100493
+
+Function100493: ; 100493
+	jr .asm_100497
+
+	jr .asm_100497
+
+.asm_100497
+	call Function100337
+	ret c
+	ret z
+	ld a, [$cd27]
+	inc a
+	ld [$cd27], a
+	ret
+; 1004a4
+
+Function1004a4: ; 1004a4
+	call Function100406
+	jr c, .asm_1004b8
+	call Function1003c9
+	call Function1003f5
+	ld a, [$cd27]
+	set 7, a
+	ld [$cd27], a
+	ret
+
+.asm_1004b8
+	scf
+	ret
+; 1004ba
+
+Function1004ba: ; 1004ba
+	call Function10038a
+	and a
+	jr nz, .asm_1004c8
+	ld a, [$cd27]
+	inc a
+	ld [$cd27], a
+	ret
+
+.asm_1004c8
+	ld a, $8
+	ld [$cd27], a
+	ret
+; 1004ce
+
+Function1004ce: ; 1004ce
+	call Function100337
+	ret c
+	ret z
+	cp $2
+	ret nz
+	ld a, [$cd27]
+	inc a
+	ld [$cd27], a
+	ret
+; 1004de
+
+Function1004de: ; 1004de
+	call Function100393
+	ld a, [$cd27]
+	inc a
+	ld [$cd27], a
+	ret
+; 1004e9
+
+Function1004e9: ; 1004e9
+	call Function10038a
+	ld a, [$cd27]
+	inc a
+	ld [$cd27], a
+	ret
+; 1004f4
+
+Function1004f4: ; 1004f4
+	call Function100337
+	ret c
+	ret z
+	ld a, [$cd27]
+	inc a
+	ld [$cd27], a
+	call Function10039c
+	ret
+; 100504
+
+INCBIN "baserom.gbc", $100504, $10062d - $100504
+
+
+Function10062d: ; 10062d
+	push bc
+	call Function10064e
+	pop bc
+	ld a, [$cd44]
+	cp b
+	jr nc, .asm_10063a
+	and a
+	ret
+
+.asm_10063a
+	ld a, $fa
+	ld [$cd2b], a
+	scf
+	ret
+; 100641
+
+Function100641: ; 100641
+	xor a
+	ld [$cd44], a
+	ld [$cd45], a
+	ld [$cd46], a
+	ret
+; 10064c
+
+INCBIN "baserom.gbc", $10064c, $10064e - $10064c
+
+
+Function10064e: ; 10064e
+	ld hl, $cd46
+	ld a, [hl]
+	add c
+	cp $3c
+	jr c, .asm_100658
+	xor a
+
+.asm_100658
+	ld [hld], a
+	ret c
+	ld a, [hl]
+	inc a
+	cp $3c
+	jr c, .asm_100661
+	xor a
+
+.asm_100661
+	ld [hld], a
+	ret c
+	inc [hl]
+	ret
+; 100665
+
+INCBIN "baserom.gbc", $100665, $1006dc - $100665
+
+
+Function1006dc: ; 1006dc
+	ld a, [hld]
+	ld c, a
+	ld a, [hSeconds]
+	sub c
+	jr nc, .asm_1006e5
+	add $3c
+
+.asm_1006e5
+	ld [de], a
+	dec de
+	ld a, [hld]
+	ld c, a
+	ld a, [hMinutes]
+	sbc c
+	jr nc, .asm_1006f0
+	add $3c
+
+.asm_1006f0
+	ld [de], a
+	dec de
+	ld a, [hl]
+	ld c, a
+	ld a, [hHours]
+	sbc c
+	jr nc, .asm_1006fb
+	add $18
+
+.asm_1006fb
+	ld [de], a
+	ret
+; 1006fd
+
+INCBIN "baserom.gbc", $1006fd, $10079c - $1006fd
+
+
+Function10079c: ; 10079c
+	ld a, [$cd21]
+	cp $1
+	jr nz, .asm_1007f4
+	ld hl, $cd2a
+	bit 5, [hl]
+	jr nz, .asm_1007f4
+	ld hl, $cd2a
+	bit 6, [hl]
+	jr nz, .asm_1007f4
+	ld a, [$cd6a]
+	add c
+	cp $3c
+	jr nc, .asm_1007be
+	ld [$cd6a], a
+	and a
+	ret
+
+.asm_1007be
+	sub $3c
+	ld [$cd6a], a
+	ld d, b
+	push de
+	call Function1007f6
+	pop de
+	jr c, .asm_1007e5
+	ld a, c
+	and a
+	jr nz, .asm_1007e5
+	ld a, b
+	cp $a
+	jr nc, .asm_1007e5
+	ld a, d
+	and a
+	ret z
+	ld a, [$cd6b]
+	cp b
+	ret z
+	ld a, b
+	ld [$cd6b], a
+	call Function1008e0
+	and a
+	ret
+
+.asm_1007e5
+	call Function1008e0
+	ld hl, $cd2a
+	set 4, [hl]
+	ld a, $fc
+	ld [$cd2b], a
+	scf
+	ret
+
+.asm_1007f4
+	and a
+	ret
+; 1007f6
+
+Function1007f6: ; 1007f6
+	call UpdateTime
+	ld hl, $cd74
+	ld de, $cd71
+	call Function1006dc
+	ld a, $4
+	call GetSRAMBank
+	ld hl, $a802
+	call Function100826
+	call CloseSRAM
+	ld hl, $cd6e
+	call Function100826
+	ld a, [hHours]
+	ld [$cd72], a
+	ld a, [hMinutes]
+	ld [$cd73], a
+	ld a, [hSeconds]
+	ld [$cd74], a
+	ret
+; 100826
+
+Function100826: ; 100826
+	ld a, [$cd71]
+	add [hl]
+	sub $3c
+	jr nc, .asm_100830
+	add $3c
+
+.asm_100830
+	ld [hld], a
+	ccf
+	ld a, [BGMapBufferPtrs]
+	adc [hl]
+	sub $3c
+	jr nc, .asm_10083c
+	add $3c
+
+.asm_10083c
+	ld [hld], a
+	ld b, a
+	ccf
+	ld a, [$cd6f]
+	adc [hl]
+	ld [hl], a
+	ld c, a
+	ret
+; 100846
+
+INCBIN "baserom.gbc", $100846, $1008e0 - $100846
+
+
+Function1008e0: ; 1008e0
+	ld a, [hBGMapMode]
+	ld b, a
+	ld a, [$ff9e]
+	ld c, a
+	push bc
+	xor a
+	ld [hBGMapMode], a
+	ld a, $3
+	ld [$ff9e], a
+	call Function100970
+	call Function100902
+	call Function100989
+	call DelayFrame
+	pop bc
+	ld a, c
+	ld [$ff9e], a
+	ld a, b
+	ld [hBGMapMode], a
+	ret
+; 100902
+
+Function100902: ; 100902
+	ld hl, $c56b
+	ld b, $1
+	ld c, $b
+	call TextBox
+	ld a, [$cd6d]
+	ld c, a
+	ld a, $a
+	sub c
+	ld [StringBuffer2], a
+	jr z, .asm_10093f
+	ld de, .string_100966
+	ld hl, $c580
+	call PlaceString
+	ld hl, $c584
+	ld bc, $0102
+	ld de, StringBuffer2
+	call PrintNum
+	ld de, SFX_TWO_PC_BEEPS
+	call StartSFX
+	callba Function104061
+	ld c, $3c
+	call DelayFrames
+	ret
+
+.asm_10093f
+	ld de, .string_10095a
+	ld hl, $c580
+	call PlaceString
+	ld de, SFX_4_NOTE_DITTY
+	call StartSFX
+	callba Function104061
+	ld c, $78
+	call DelayFrames
+	ret
+; 10095a
+
+.string_10095a ; 10095a
+	db "たいせん しゅうりょう@"
+.string_100966 ; 100966
+	db "のこり   ふん", $e7, "@"
+; 100970
+
+
+Function100970: ; 100970
+	ld hl, TileMap
+	ld de, $dc00
+	call Function1009a5
+	ld hl, AttrMap
+	ld de, $dd68
+	call Function1009a5
+	call Function1009d2
+	call Function1009ae
+	ret
+; 100989
+
+Function100989: ; 100989
+	ld hl, $dc00
+	ld de, TileMap
+	call Function1009a5
+	call Function1009ae
+	callba Function104061
+	ld hl, $dd68
+	ld de, AttrMap
+	call Function1009a5
+	ret
+; 1009a5
+
+Function1009a5: ; 1009a5
+	ld bc, $0168
+	ld a, $3
+	call Function306b
+	ret
+; 1009ae
+
+Function1009ae: ; 1009ae
+	ld a, [rSVBK]
+	push af
+	ld a, $3
+	ld [rSVBK], a
+	ld hl, $d800
+	ld de, AttrMap
+	ld c, $14
+	ld b, $12
+.asm_1009bf
+	push bc
+.asm_1009c0
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec c
+	jr nz, .asm_1009c0
+	ld bc, $000c
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .asm_1009bf
+	pop af
+	ld [rSVBK], a
+	ret
+; 1009d2
+
+Function1009d2: ; 1009d2
+	ld a, [rSVBK]
+	push af
+	ld a, $3
+	ld [rSVBK], a
+	ld a, [rVBK]
+	push af
+	ld a, $1
+	ld [rVBK], a
+	ld hl, $d800
+	ld de, VBGMap0
+	ld bc, $0324
+	call Get2bpp
+	pop af
+	ld [rVBK], a
+	pop af
+	ld [rSVBK], a
+	ret
+; 1009f3
+
+Function1009f3: ; 1009f3
+	ld a, [hJoyDown]
+	and $5
+	cp $5
+	jr nz, .asm_100a07
+	ld hl, $cd2a
+	set 4, [hl]
+	ld a, $f8
+	ld [$cd2b], a
+	scf
+	ret
+
+.asm_100a07
+	xor a
+	ret
+; 100a09
+
+Function100a09: ; 100a09
+	call Function100a2e
+	ld [$d431], a
+	callba Function4000
+	ld a, [InLinkBattle]
+	cp $4
+	jr nz, .asm_100a2a
+	call Function100a87
+	call Function100da5
+	ld a, $f
+	ld hl, $6e27
+	rst FarCall
+	jr .asm_100a2d
+
+.asm_100a2a
+	call Function100a53
+
+.asm_100a2d
+	ret
+; 100a2e
+
+Function100a2e: ; 100a2e
+	ld a, [$d0ec]
+	and a
+	jr nz, .asm_100a48
+	ld a, [CurPlayerMove]
+	ld b, $e
+	cp $a5
+	jr z, .asm_100a4f
+	ld b, $d
+	cp $ff
+	jr z, .asm_100a4f
+	ld a, [CurMoveNum]
+	jr .asm_100a50
+
+.asm_100a48
+	ld a, [CurPartyMon]
+	add $4
+	jr .asm_100a50
+
+.asm_100a4f
+	ld a, b
+
+.asm_100a50
+	and $f
+	ret
+; 100a53
+
+Function100a53: ; 100a53
+	ld a, [$d431]
+	ld [$cf56], a
+	ld a, $ff
+	ld [$cf52], a
+.asm_100a5e
+	call Function8c1
+	call DelayFrame
+	ld a, [$cf52]
+	inc a
+	jr z, .asm_100a5e
+	ld b, $a
+.asm_100a6c
+	call DelayFrame
+	call Function8c1
+	dec b
+	jr nz, .asm_100a6c
+	ld b, $a
+.asm_100a77
+	call DelayFrame
+	call Function908
+	dec b
+	jr nz, .asm_100a77
+	ld a, [$cf52]
+	ld [$d430], a
+	ret
+; 100a87
+
+Function100a87: ; 100a87
+	call Function100acf
+	call Function100641
+	ld a, $0
+	ld [$cd27], a
+.asm_100a92
+	call DelayFrame
+	call GetJoypadPublic
+	ld a, $40
+	ld hl, $4382
+	rst FarCall
+	ld c, $1
+	ld b, $3
+	push bc
+	call Function10062d
+	pop bc
+	jr c, .asm_100ac7
+	ld b, $1
+	call Function10079c
+	jr c, .asm_100ac7
+	call Function1009f3
+	jr c, .asm_100ac7
+	ld a, [$cd2b]
+	and a
+	jr nz, .asm_100ac7
+	ld a, [$cd27]
+	bit 7, a
+	jr z, .asm_100a92
+	call Function100ae7
+	jr .asm_100ace
+
+.asm_100ac7
+	ld a, $f
+	ld [$d430], a
+	jr .asm_100ace
+
+.asm_100ace
+	ret
+; 100acf
+
+Function100acf: ; 100acf
+	ld de, $4b0a
+	ld hl, $ccb5
+	ld a, [$d431]
+	ld [hli], a
+	ld c, $1
+.asm_100adb
+	ld a, [de]
+	inc de
+	ld [hli], a
+	inc c
+	and a
+	jr nz, .asm_100adb
+	ld a, c
+	ld [$ccb4], a
+	ret
+; 100ae7
+
+Function100ae7: ; 100ae7
+	ld de, $4b0a
+	ld hl, $cc62
+.asm_100aed
+	ld a, [de]
+	inc de
+	and a
+	jr z, .asm_100af8
+	cp [hl]
+	jr nz, .asm_100aff
+	inc hl
+	jr .asm_100aed
+
+.asm_100af8
+	ld a, [$cc61]
+	ld [$d430], a
+	ret
+
+.asm_100aff
+	ld a, $f
+	ld [$d430], a
+	ld a, $f1
+	ld [$cd2b], a
+	ret
+; 100b0a
+
+INCBIN "baserom.gbc", $100b0a, $100b12 - $100b0a
+
+
+Function100b12: ; 100b12
+	call Function100dd8
+	ret c
+	ld hl, $4f2c
+	ld a, $9
+	ld de, LoadMenuDataHeader
+	call FarJpDe
+	ld a, $9
+	ld [$cf94], a
+	ld a, [$d0d2]
+	ld [$cf88], a
+	call Function100e72
+	call Function100b45
+	callba Function8e85
+	call Function100ed4
+	ld a, [$cf88]
+	ld [$d0d2], a
+	call Function1c07
+	ret
+; 100b45
+
+Function100b45: ; 100b45
+	call Function100b7a
+.asm_100b48
+	call Function100dd2
+	callba Function241ba
+	push bc
+	callba Function10402d
+	call Function100e2d
+	pop bc
+	jr c, .asm_100b6b
+	ld a, [$cfa8]
+	and c
+	jr z, .asm_100b48
+	ld a, $9
+	ld hl, $4098
+	rst FarCall
+	ret
+
+.asm_100b6b
+	ld a, [$cfa4]
+	ld c, a
+	ld a, [$cfa3]
+	call SimpleMultiply
+	ld [$cf88], a
+	and a
+	ret
+; 100b7a
+
+Function100b7a: ; 100b7a
+	ld hl, Function1c66
+	ld a, [$cf94]
+	rst FarCall
+	callba Function24085
+	callba MobileTextBorder
+	call Function1ad2
+	call Function321c
+	ld a, $9
+	ld hl, $411a
+	rst FarCall
+	ld hl, $cfa5
+	set 7, [hl]
+	ret
+; 100b9f
+
+Function100b9f: ; 100b9f
+	xor a
+	ld [$d0e3], a
+	ld a, $f
+	ld hl, $6786
+	rst FarCall
+	ret z
+	call Function100dd8
+	jp c, Function2ec8
+	call Function100e72
+	call Function100bc2
+	push af
+	callba Function8e85
+	call Function100ed4
+	pop af
+	ret
+; 100bc2
+
+Function100bc2: ; 100bc2
+	xor a
+	ld [hBGMapMode], a
+	call Function100c74
+	call Function100c98
+	callba MoveInfoBox
+.asm_100bd1
+	call Function100dd2
+	callba Function241ba
+	push bc
+	callba Function10402d
+	call Function100e2d
+	pop bc
+	jr c, .asm_100c25
+	ld a, [$cfa8]
+	and c
+	bit 6, a
+	jp nz, $4bff
+	bit 7, a
+	jp nz, $4c10
+	bit 0, a
+	jr nz, .asm_100c30
+	bit 1, a
+	jr nz, .asm_100c25
+	jr .asm_100bd1
+
+	ld a, [$cfa9]
+	and a
+	jp nz, $4bcb
+	ld a, [$d0eb]
+	inc a
+	ld [$cfa9], a
+	jp $4bcb
+
+	ld a, [$cfa9]
+	ld b, a
+	ld a, [$d0eb]
+	inc a
+	inc a
+	cp b
+	jp nz, $4bcb
+	ld a, $1
+	ld [$cfa9], a
+	jp $4bcb
+
+.asm_100c25
+	ld a, [$cfa9]
+	dec a
+	ld [CurMoveNum], a
+	ld a, $1
+	and a
+	ret
+
+.asm_100c30
+	ld a, [$cfa9]
+	dec a
+	ld [CurMoveNum], a
+	ld a, [$cfa9]
+	dec a
+	ld c, a
+	ld b, $0
+	ld hl, BattleMonPPMove1
+	add hl, bc
+	ld a, [hl]
+	and $3f
+	jr z, .asm_100c68
+	ld a, [PlayerDisableCount]
+	swap a
+	and $f
+	dec a
+	cp c
+	jr z, .asm_100c63
+	ld a, [$cfa9]
+	dec a
+	ld c, a
+	ld b, $0
+	ld hl, BattleMonMove1
+	add hl, bc
+	ld a, [hl]
+	ld [CurPlayerMove], a
+	xor a
+	ret
+
+.asm_100c63
+	ld hl, $4c5b
+	jr .asm_100c6b
+
+.asm_100c68
+	ld hl, $4c39
+
+.asm_100c6b
+	call FarBattleTextBox
+	call Function30b4
+	jp Function100bc2
+; 100c74
+
+Function100c74: ; 100c74
+	ld hl, $c540
+	ld b, $8
+	ld c, $8
+	call TextBox
+	ld hl, BattleMonMove1
+	ld de, $d25e
+	ld bc, $0004
+	call CopyBytes
+	ld a, $28
+	ld [MagikarpLength], a
+	ld hl, $c56a
+	ld a, $20
+	call Predef
+	ret
+; 100c98
+
+Function100c98: ; 100c98
+	ld de, $4cad
+	call Function1bb1
+	ld a, [$d0eb]
+	inc a
+	ld [$cfa3], a
+	ld a, [CurMoveNum]
+	inc a
+	ld [$cfa9], a
+	ret
+; 100cad
+
+INCBIN "baserom.gbc", $100cad, $100cb5 - $100cad
+
+
+Function100cb5: ; 100cb5
+	call Function100dd8
+	ret c
+	ld hl, $cfa5
+	set 7, [hl]
+	res 6, [hl]
+.asm_100cc0
+	call Function100dd2
+	ld a, $9
+	ld hl, $41ba
+	rst FarCall
+	push bc
+	callba Function8cf69
+	ld a, $41
+	ld hl, $402d
+	rst FarCall
+	call Function100dfd
+	pop bc
+	jr c, .asm_100d17
+	ld a, [$cfa8]
+	and c
+	jr z, .asm_100cc0
+	call Function1bee
+	ld a, [PartyCount]
+	inc a
+	ld b, a
+	ld a, [$cfa9]
+	cp b
+	jr z, .asm_100d17
+	ld [$d0d8], a
+	ld a, [$ffa9]
+	ld b, a
+	bit 1, b
+	jr nz, .asm_100d17
+	ld a, [$cfa9]
+	dec a
+	ld [CurPartyMon], a
+	ld c, a
+	ld b, $0
+	ld hl, PartySpecies
+	add hl, bc
+	ld a, [hl]
+	ld [CurPartySpecies], a
+	ld de, SFX_READ_TEXT_2
+	call StartSFX
+	call WaitSFX
+	and a
+	ret
+
+.asm_100d17
+	ld de, SFX_READ_TEXT_2
+	call StartSFX
+	call WaitSFX
+	scf
+	ret
+; 100d22
+
+Function100d22: ; 100d22
+	call Function100dd8
+	ret c
+	call Function100d67
+	ld hl, $cfa5
+	set 7, [hl]
+	res 6, [hl]
+.asm_100d30
+	call Function100dd2
+	callba Function241ba
+	push bc
+	callba Function8cf69
+	callba Function10402d
+	call Function100dfd
+	pop bc
+	jr c, .asm_100d54
+	ld a, [$cfa8]
+	and c
+	jr nz, .asm_100d56
+	jr .asm_100d30
+
+.asm_100d54
+	scf
+	ret
+
+.asm_100d56
+	push af
+	ld de, SFX_READ_TEXT_2
+	call StartSFX
+	pop af
+	bit 1, a
+	jr z, .asm_100d65
+	ret z
+	scf
+	ret
+
+.asm_100d65
+	and a
+	ret
+; 100d67
+
+Function100d67: ; 100d67
+	ld hl, $4d88
+	call Function1d3c
+	xor a
+	ld [hBGMapMode], a
+	call Function1cbb
+	call Function1ad2
+	call Function1c89
+	call WaitBGMap
+	call Function1c66
+	call Function1c10
+	ld hl, $cfa5
+	set 6, [hl]
+	ret
+; 100d88
+
+INCBIN "baserom.gbc", $100d88, $100da5 - $100d88
+
+
+Function100da5: ; 100da5
+	ld hl, $cd2a
+	res 3, [hl]
+	ld hl, $cd29
+	res 0, [hl]
+	ret
+; 100db0
+
+Function100db0: ; 100db0
+	ld hl, $cd2a
+	bit 3, [hl]
+	jr nz, .asm_100dbe
+	ld hl, $cd2a
+	set 3, [hl]
+	scf
+	ret
+
+.asm_100dbe
+	xor a
+	ret
+; 100dc0
+
+
+
+Function100dc0: ; 100dc0
+	ld a, [InLinkBattle]
+	cp $4
+	jr nz, .asm_100dd0
+	ld hl, $cd2a
+	bit 3, [hl]
+	jr z, .asm_100dd0
+	scf
+	ret
+
+.asm_100dd0
+	xor a
+	ret
+; 100dd2
+
+Function100dd2: ; 100dd2
+	ld a, $1e
+	ld [OverworldDelay], a
+	ret
+; 100dd8
+
+Function100dd8: ; 100dd8
+	ld c, $1
+	ld b, $3
+	ld a, $40
+	ld hl, $462d
+	rst FarCall
+	jr c, .asm_100dfb
+	ld c, $3c
+	ld b, $1
+	call Function10079c
+	jr c, .asm_100dfb
+	ld a, $40
+	ld hl, $432e
+	rst FarCall
+	ld a, [$cd2b]
+	and a
+	jr nz, .asm_100dfb
+	xor a
+	ret
+
+.asm_100dfb
+	scf
+	ret
+; 100dfd
+
+Function100dfd: ; 100dfd
+	ld a, [OverworldDelay]
+	ld c, a
+	ld a, $1e
+	sub c
+	ld c, a
+	ld b, $3
+	push bc
+	ld a, $40
+	ld hl, $462d
+	rst FarCall
+	pop bc
+	jr c, .asm_100e2b
+	ld b, $1
+	call Function10079c
+	jr c, .asm_100e2b
+	call Function1009f3
+	jr c, .asm_100e2b
+	ld a, $40
+	ld hl, $432e
+	rst FarCall
+	ld a, [$cd2b]
+	and a
+	jr nz, .asm_100e2b
+	xor a
+	ret
+
+.asm_100e2b
+	scf
+	ret
+; 100e2d
+
+Function100e2d: ; 100e2d
+	ld a, [OverworldDelay]
+	ld c, a
+	ld a, $1e
+	sub c
+	ld c, a
+	ld b, $3
+	push bc
+	callba Function10062d
+	pop bc
+	jr c, .asm_100e61
+	ld b, $1
+	call Function10079c
+	jr c, .asm_100e61
+	call Function1009f3
+	jr c, .asm_100e61
+	callba Function10032e
+	ld a, [$cd2b]
+	and a
+	jr nz, .asm_100e61
+	call Function100e63
+	call Function100e84
+	xor a
+	ret
+
+.asm_100e61
+	scf
+	ret
+; 100e63
+
+Function100e63: ; 100e63
+	ld a, e
+	cp $2
+	ret nz
+	call Function100db0
+	ret nc
+	ld de, SFX_ELEVATOR_END
+	call StartSFX
+	ret
+; 100e72
+
+Function100e72: ; 100e72
+	xor a
+	ld hl, $cd29
+	bit 0, [hl]
+	jr z, .asm_100e7c
+	ld a, $a
+
+.asm_100e7c
+	ld [$cd67], a
+	xor a
+	ld [$cd68], a
+	ret
+; 100e84
+
+Function100e84: ; 100e84
+	ld a, [$cd67]
+	ld hl, $4e8c
+	rst JumpTable
+	ret
+; 100e8c
+
+INCBIN "baserom.gbc", $100e8c, $100eae - $100e8c
+
+
+Function100eae: ; 100eae
+	scf
+	call Function100eca
+	jr .asm_100eb8
+
+	and a
+	call Function100eca
+
+.asm_100eb8
+	ld hl, $cd68
+	inc [hl]
+	ld a, [hl]
+	cp $2
+	ret c
+	ld [hl], $0
+	jr .asm_100ec5
+
+	ret
+
+.asm_100ec5
+	ld hl, $cd67
+	inc [hl]
+	ret
+; 100eca
+
+Function100eca: ; 100eca
+	ld a, $2
+	ld hl, $4e8b
+	rst FarCall
+	call Function100ed4
+	ret
+; 100ed4
+
+Function100ed4: ; 100ed4
+	callba Function96a4
+	ld a, $1
+	ld [hCGBPalUpdate], a
+	ret
+; 100edf
+
+INCBIN "baserom.gbc", $100edf, $10389d - $100edf
+
+
 SECTION "bank41",ROMX,BANK[$41]
 
-INCBIN "baserom.gbc", $104000, $104350 - $104000
+Function104000: ; 104000
+	ld hl, $4006
+	jp Function104177
+; 104006
 
+INCBIN "baserom.gbc", $104006, $10402d - $104006
+
+
+Function10402d: ; 10402d
+	ld hl, $4033
+	jp Function104177
+; 104033
+
+INCBIN "baserom.gbc", $104033, $104061 - $104033
+
+
+Function104061: ; 104061
+	ld hl, $4067
+	jp Function104177
+; 104067
+
+INCBIN "baserom.gbc", $104067, $104110 - $104067
+
+
+Function104110: ; 104110
+	ld hl, $4116
+	jp Function104177
+; 104116
+
+INCBIN "baserom.gbc", $104116, $104177 - $104116
+
+
+Function104177: ; 104177
+	ld a, [hBGMapMode]
+	push af
+	ld a, [$ffde]
+	push af
+	xor a
+	ld [hBGMapMode], a
+	ld [$ffde], a
+	ld a, [rSVBK]
+	push af
+	ld a, $6
+	ld [rSVBK], a
+	ld a, [rVBK]
+	push af
+	call Function10419c
+	pop af
+	ld [rVBK], a
+	pop af
+	ld [rSVBK], a
+	pop af
+	ld [$ffde], a
+	pop af
+	ld [hBGMapMode], a
+	ret
+; 10419c
+
+Function10419c: ; 10419c
+	jp [hl]
+; 10419d
+
+INCBIN "baserom.gbc", $10419d, $104209 - $10419d
+
+
+Function104209: ; 104209
+	ld b, $7f
+	ld a, h
+	ld [rHDMA1], a
+	ld a, l
+	and $f0
+	ld [rHDMA2], a
+	ld a, d
+	and $1f
+	ld [rHDMA3], a
+	ld a, e
+	and $f0
+	ld [rHDMA4], a
+	ld a, c
+	dec c
+	or $80
+	ld e, a
+	ld a, b
+	sub c
+	ld d, a
+.asm_104225
+	ld a, [rLY]
+	cp d
+	jr nc, .asm_104225
+	di
+.asm_10422b
+	ld a, [rSTAT]
+	and $3
+	jr nz, .asm_10422b
+.asm_104231
+	ld a, [rSTAT]
+	and $3
+	jr z, .asm_104231
+	ld a, e
+	ld [rHDMA5], a
+	ld a, [rLY]
+	inc c
+	ld hl, rLY
+.asm_104240
+	cp [hl]
+	jr z, .asm_104240
+	ld a, [hl]
+	dec c
+	jr nz, .asm_104240
+	ld hl, rHDMA5
+	res 7, [hl]
+	ei
+	ret
+; 10424e
+
+INCBIN "baserom.gbc", $10424e, $104284 - $10424e
+
+
+Function104284: ; 104284
+	ld a, [rSVBK]
+	push af
+	ld a, $6
+	ld [rSVBK], a
+	push bc
+	push hl
+	ld a, b
+	ld l, c
+	ld h, $0
+	add hl, hl
+	add hl, hl
+	add hl, hl
+	add hl, hl
+	ld b, h
+	ld c, l
+	ld h, d
+	ld l, e
+	ld de, $d000
+	call FarCopyBytes
+	pop hl
+	pop bc
+	push bc
+	call DelayFrame
+	pop bc
+	ld d, h
+	ld e, l
+	ld hl, $d000
+	call Function104209
+	pop af
+	ld [rSVBK], a
+	ret
+; 1042b2
+
+Function1042b2: ; 1042b2
+.asm_1042b2
+	ld a, c
+	cp $10
+	jp c, Function1042d6
+	jp z, Function1042d6
+	push bc
+	push hl
+	push de
+	ld c, $10
+	call Function1042d6
+	pop de
+	ld hl, $0080
+	add hl, de
+	ld d, h
+	ld e, l
+	pop hl
+	ld bc, Start
+	add hl, bc
+	pop bc
+	ld a, c
+	sub $10
+	ld c, a
+	jr .asm_1042b2
+; 1042d6
+
+Function1042d6: ; 1042d6
+	ld a, [rSVBK]
+	push af
+	ld a, $6
+	ld [rSVBK], a
+	push bc
+	push hl
+	ld a, b
+	ld l, c
+	ld h, $0
+	add hl, hl
+	add hl, hl
+	add hl, hl
+	ld c, l
+	ld b, h
+	ld h, d
+	ld l, e
+	ld de, $d000
+	call Functiondef
+	pop hl
+	pop bc
+	push bc
+	call DelayFrame
+	pop bc
+	ld d, h
+	ld e, l
+	ld hl, $d000
+	call Function104209
+	pop af
+	ld [rSVBK], a
+	ret
+; 104303
+
+Function104303: ; 104303
+	ld hl, $4309
+	jp Function104177
+; 104309
+
+INCBIN "baserom.gbc", $104309, $104350 - $104309
+
 INCBIN "gfx/ow/misc.2bpp"
 
 
@@ -23037,8 +69883,81 @@
 ; 1046c6
 
 
-INCBIN "baserom.gbc", $1046c6, $105258 - $1046c6
+INCBIN "baserom.gbc", $1046c6, $10486d - $1046c6
 
+
+Function10486d: ; 10486d
+	ld hl, OverworldMap
+	ld a, [XCoord]
+	bit 0, a
+	jr nz, .asm_10487d
+	srl a
+	add $1
+	jr .asm_104881
+
+.asm_10487d
+	add $1
+	srl a
+
+.asm_104881
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [$d19f]
+	add $6
+	ld c, a
+	ld b, $0
+	ld a, [YCoord]
+	bit 0, a
+	jr nz, .asm_10489a
+	srl a
+	add $1
+	jr .asm_10489e
+
+.asm_10489a
+	add $1
+	srl a
+
+.asm_10489e
+	call AddNTimes
+	ld a, l
+	ld [$d194], a
+	ld a, h
+	ld [$d195], a
+	ld a, [YCoord]
+	and $1
+	ld [$d196], a
+	ld a, [XCoord]
+	and $1
+	ld [$d197], a
+	ret
+; 1048ba
+
+INCBIN "baserom.gbc", $1048ba, $1050d9 - $1048ba
+
+
+Function1050d9: ; 1050d9
+	call Function105106
+	ld hl, $abe2
+	ld de, $abe4
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hl]
+	ld [de], a
+	jp CloseSRAM
+; 1050ea
+
+INCBIN "baserom.gbc", $1050ea, $105106 - $1050ea
+
+
+Function105106: ; 105106
+	ld a, $0
+	jp GetSRAMBank
+; 10510b
+
+INCBIN "baserom.gbc", $10510b, $105258 - $10510b
+
 MysteryGiftGFX:
 INCBIN "gfx/misc/mystery_gift.2bpp"
 
@@ -23108,7 +70027,7 @@
 ; everything except 'instead' made redundant in localization
 
 ; check obedience
-	ld a, [$c6f4]
+	ld a, [AlreadyDisobeyed]
 	and a
 	ld hl, UsedMove2Text
 	ret nz
@@ -23135,7 +70054,7 @@
 
 Function105e10: ; 105e10
 ; check obedience
-	ld a, [$c6f4]
+	ld a, [AlreadyDisobeyed]
 	and a
 	jr z, GetMoveNameText
 ; print "instead,"
@@ -23411,21 +70330,336 @@
 HallOfFame2: ; 0x105ef6
 	ret
 
-INCBIN "baserom.gbc", $105ef7, $106078 - $105ef7
+INCBIN "baserom.gbc", $105ef7, $106008 - $105ef7
 
+
+Function106008: ; 106008
+	ret
+; 106009
+
+INCBIN "baserom.gbc", $106009, $106050 - $106009
+
+
+Function106050: ; 106050
+	ret
+; 106051
+
+INCBIN "baserom.gbc", $106051, $10605d - $106051
+
+
+Function10605d: ; 10605d
+	ret
+; 10605e
+
+INCBIN "baserom.gbc", $10605e, $10606a - $10605e
+
+
+Function10606a: ; 10606a
+	ret
+; 10606b
+
+INCBIN "baserom.gbc", $10606b, $106078 - $10606b
+
 HallOfFame1: ; 0x106078
 	ret
 
-INCBIN "baserom.gbc", $106079, $1060bb - $106079
+INCBIN "baserom.gbc", $106079, $106086 - $106079
 
+
+Function106086: ; 106086
+	ret
+; 106087
+
+INCBIN "baserom.gbc", $106087, $106094 - $106087
+
+
+Function106094: ; 106094
+	ret
+; 106095
+
+INCBIN "baserom.gbc", $106095, $1060b5 - $106095
+
+Function1060b5: ; 1060b5
+	ret
+; 1060b6
+
+INCBIN "baserom.gbc", $1060b6, $1060bb - $1060b6
+
 Function1060bb: ; 1060bb
 ; commented out
 	ret
 ; 1060bc
 
-INCBIN "baserom.gbc", $1060bc, $106dbc - $1060bc
+INCBIN "baserom.gbc", $1060bc, $1060c1 - $1060bc
 
+Function1060c1: ; 1060c1
+	ret
+; 1060c2
 
+INCBIN "baserom.gbc", $1060c2, $1060d3 - $1060c2
+
+
+Function1060d3: ; 1060d3
+	ret
+; 1060d4
+
+INCBIN "baserom.gbc", $1060d4, $1060df - $1060d4
+
+
+Function1060df: ; 1060df
+	ret
+; 1060e0
+
+INCBIN "baserom.gbc", $1060e0, $1060fb - $1060e0
+
+
+Function1060fb: ; 1060fb
+	ret
+; 1060fc
+
+INCBIN "baserom.gbc", $1060fc, $106101 - $1060fc
+
+
+Function106101: ; 106101
+	ret
+; 106102
+
+INCBIN "baserom.gbc", $106102, $106107 - $106102
+
+
+Function106107: ; 106107
+	ret
+; 106108
+
+INCBIN "baserom.gbc", $106108, $106187 - $106108
+
+
+Function106187: ; 106187
+	ld a, $1
+	call GetSRAMBank
+	ld a, [$be3c]
+	push af
+	ld a, $1
+	call GetSRAMBank
+	pop af
+	ld [$be44], a
+	call CloseSRAM
+	ret
+; 10619d
+
+INCBIN "baserom.gbc", $10619d, $1061ef - $10619d
+
+
+Function1061ef: ; 1061ef
+	push bc
+	xor a
+	ld [hProduct], a
+	ld [hMultiplicand], a
+	ld [$ffb5], a
+	ld a, b
+	and $f
+	cp $1
+	jr z, .asm_106212
+	cp $2
+	jr z, .asm_10620e
+	cp $3
+	jr z, .asm_10620a
+	ld a, [de]
+	ld [hProduct], a
+	inc de
+
+.asm_10620a
+	ld a, [de]
+	ld [hMultiplicand], a
+	inc de
+
+.asm_10620e
+	ld a, [de]
+	ld [$ffb5], a
+	inc de
+
+.asm_106212
+	ld a, [de]
+	ld [$ffb6], a
+	inc de
+	push de
+	xor a
+	ld [$ffbb], a
+	ld a, b
+	ld [$ffbc], a
+	ld a, c
+	cp $2
+	jr z, .asm_10626a
+	ld de, $62ae
+	cp $3
+	jr z, .asm_106256
+	ld de, $62aa
+	cp $4
+	jr z, .asm_106256
+	ld de, $62a6
+	cp $5
+	jr z, .asm_106256
+	ld de, $62a2
+	cp $6
+	jr z, .asm_106256
+	ld de, $629e
+	cp $7
+	jr z, .asm_106256
+	ld de, $629a
+	cp $8
+	jr z, .asm_106256
+	ld de, $6296
+	cp $9
+	jr z, .asm_106256
+	ld de, $6292
+
+.asm_106256
+	inc de
+	inc de
+	inc de
+	dec a
+	dec a
+.asm_10625b
+	push af
+	call Function1062b2
+	call Function1062ff
+	inc de
+	inc de
+	inc de
+	inc de
+	pop af
+	dec a
+	jr nz, .asm_10625b
+
+.asm_10626a
+	ld c, $0
+	ld a, [$ffb6]
+.asm_10626e
+	cp $a
+	jr c, .asm_106277
+	sub $a
+	inc c
+	jr .asm_10626e
+
+.asm_106277
+	ld b, a
+	ld a, [$ffbb]
+	or c
+	ld [$ffbb], a
+	jr nz, .asm_106284
+	call $62f7
+	jr .asm_106288
+
+.asm_106284
+	ld a, $f6
+	add c
+	ld [hl], a
+
+.asm_106288
+	call Function1062ff
+	ld a, $f6
+	add b
+	ld [hli], a
+	pop de
+	pop bc
+	ret
+; 106292
+
+INCBIN "baserom.gbc", $106292, $1062b2 - $106292
+
+
+Function1062b2: ; 1062b2
+	ld c, $0
+.asm_1062b4
+	ld a, [de]
+	dec de
+	ld b, a
+	ld a, [$ffb6]
+	sub b
+	ld [$ffba], a
+	ld a, [de]
+	dec de
+	ld b, a
+	ld a, [$ffb5]
+	sbc b
+	ld [$ffb9], a
+	ld a, [de]
+	dec de
+	ld b, a
+	ld a, [hMultiplicand]
+	sbc b
+	ld [hMathBuffer], a
+	ld a, [de]
+	inc de
+	inc de
+	inc de
+	ld b, a
+	ld a, [hProduct]
+	sbc b
+	ld [hMultiplier], a
+	jr c, .asm_1062eb
+	ld a, [hMultiplier]
+	ld [hProduct], a
+	ld a, [hMathBuffer]
+	ld [hMultiplicand], a
+	ld a, [$ffb9]
+	ld [$ffb5], a
+	ld a, [$ffba]
+	ld [$ffb6], a
+	inc c
+	jr .asm_1062b4
+
+.asm_1062eb
+	ld a, [$ffbb]
+	or c
+	jr z, .asm_1062f7
+	ld a, $f6
+	add c
+	ld [hl], a
+	ld [$ffbb], a
+	ret
+
+.asm_1062f7
+	ld a, [$ffbc]
+	bit 7, a
+	ret z
+	ld [hl], $f6
+	ret
+; 1062ff
+
+Function1062ff: ; 1062ff
+	ld a, [$ffbc]
+	bit 7, a
+	jr nz, .asm_10630d
+	bit 6, a
+	jr z, .asm_10630d
+	ld a, [$ffbb]
+	and a
+	ret z
+
+.asm_10630d
+	inc hl
+	ret
+; 10630f
+
+INCBIN "baserom.gbc", $10630f, $106594 - $10630f
+
+
+Function106594: ; 106594
+	ld de, $65ad
+	ld hl, VTiles1
+	ld bc, $4180
+	call Get2bpp
+	ld de, $6dad
+	ld hl, $97f0
+	ld bc, $4101
+	call Get2bpp
+	ret
+; 1065ad
+
+INCBIN "baserom.gbc", $1065ad, $106dbc - $1065ad
+
+
 SECTION "bank42",ROMX,BANK[$42]
 
 INCBIN "baserom.gbc", $108000, $109407 - $108000
@@ -23434,8 +70668,147 @@
 INCBIN "gfx/intro/logo.lz"
 ; 10983f
 
-INCBIN "baserom.gbc", $10983f, $1099aa - $10983f
+INCBIN "baserom.gbc", $10983f, $109847 - $10983f
 
+
+Function109847: ; 109847
+	bit 6, b
+	ld a, $0
+	jr z, .asm_10984f
+	ld a, $40
+
+.asm_10984f
+	ld [$cf63], a
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	call WhiteBGMap
+	call ClearTileMap
+	call ClearSprites
+	ld hl, $ca00
+	ld c, $80
+	ld de, rJOYP
+.asm_10986a
+	ld a, e
+	ld [hli], a
+	ld a, d
+	ld [hli], a
+	dec c
+	jr nz, .asm_10986a
+	ld de, $5c24
+	ld hl, $9200
+	ld bc, $4209
+	call Request2bpp
+	ld de, $4000
+	ld hl, $9600
+	ld bc, $391d
+	call Request2bpp
+	ld de, $7d2e
+	ld hl, $9400
+	ld bc, $3210
+	call Request2bpp
+	ld a, $ff
+	ld [$cf64], a
+	xor a
+	ld [$cf65], a
+	call $5bca
+	ld e, l
+	ld d, h
+	ld hl, VTiles2
+	ld bc, $4210
+	call Request2bpp
+	call $5a95
+	xor a
+	ld [$cf66], a
+	ld hl, $d100
+	ld bc, Start
+	xor a
+	call ByteFill
+	ld a, $43
+	ld [hLCDStatCustom], a
+	call GetCreditsPalette
+	call Function32f9
+	ld a, [$ff9e]
+	push af
+	ld a, $5
+	ld [$ff9e], a
+	ld a, $1
+	ld [$ffaa], a
+	xor a
+	ld [hBGMapMode], a
+	ld [CreditsPos], a
+	ld [$cd21], a
+	ld [CreditsTimer], a
+.asm_1098de
+	call Function109908
+	call Function1098fd
+	jr nz, .asm_1098ee
+	call Function109926
+	call DelayFrame
+	jr .asm_1098de
+
+.asm_1098ee
+	call WhiteBGMap
+	xor a
+	ld [hLCDStatCustom], a
+	ld [hBGMapAddress], a
+	pop af
+	ld [$ff9e], a
+	pop af
+	ld [rSVBK], a
+	ret
+; 1098fd
+
+Function1098fd: ; 1098fd
+	ld a, [hJoypadDown]
+	and $1
+	ret z
+	ld a, [$cf63]
+	bit 7, a
+	ret
+; 109908
+
+Function109908: ; 109908
+	ld a, [hJoypadDown]
+	and $2
+	ret z
+	ld a, [$cf63]
+	bit 6, a
+	ret z
+	ld hl, CreditsPos
+	ld a, [hli]
+	cp $d
+	jr nc, .asm_10991e
+	ld a, [hli]
+	and a
+	ret z
+
+.asm_10991e
+	ld hl, CreditsTimer
+	ld a, [hl]
+	and a
+	ret z
+	dec [hl]
+	ret
+; 109926
+
+Function109926: ; 109926
+	ld a, [$cf63]
+	and $f
+	ld e, a
+	ld d, $0
+	ld hl, $5937
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 109937
+
+INCBIN "baserom.gbc", $109937, $1099aa - $109937
+
 ; Credits
 INCLUDE "engine/credits.asm"
 
@@ -23472,12 +70845,12 @@
 	
 ; Decompress running Suicune gfx
 	ld hl, TitleSuicuneGFX
-	ld de, $8800
-	call $0b50
+	ld de, VTiles1
+	call Decompress
 	
 	
 ; Clear screen palettes
-	ld hl, $9800
+	ld hl, VBGMap0
 	ld bc, $0280
 	xor a
 	call ByteFill
@@ -23488,7 +70861,7 @@
 ; BG Map 1:
 
 ; line 0 (copyright)
-	ld hl, $9c00
+	ld hl, VBGMap1
 	ld bc, $0020 ; one row
 	ld a, 7 ; palette
 	call ByteFill
@@ -23545,17 +70918,17 @@
 	
 ; Decompress logo
 	ld hl, TitleLogoGFX
-	ld de, $8800
-	call $0b50
+	ld de, VTiles1
+	call Decompress
 	
 ; Decompress background crystal
 	ld hl, TitleCrystalGFX
-	ld de, $8000
-	call $0b50
+	ld de, VTiles0
+	call Decompress
 	
 	
 ; Clear screen tiles
-	ld hl, $9800
+	ld hl, VBGMap0
 	ld bc, $0800
 	ld a, $7f
 	call ByteFill
@@ -23576,10 +70949,10 @@
 	
 ; Initialize running Suicune?
 	ld d, $0
-	call $6ed2
+	call Function10eed2
 	
 ; Initialize background crystal
-	call $6f06
+	call Function10ef06
 	
 ; Save WRAM bank
 	ld a, [rSVBK]
@@ -23646,7 +71019,7 @@
 	
 ; Reset audio
 	call ChannelsOff
-	call $058a
+	call EnableLCD
 	
 ; Set sprite size to 8x16
 	ld a, [rLCDC]
@@ -23655,13 +71028,13 @@
 	
 ;
 	ld a, $70
-	ld [$ffcf], a
+	ld [hSCX], a
 	ld a, $8
-	ld [$ffd0], a
+	ld [hSCY], a
 	ld a, $7
-	ld [$ffd1], a
+	ld [hWX], a
 	ld a, $90
-	ld [$ffd2], a
+	ld [hWY], a
 	
 	ld a, $1
 	ld [hCGBPalUpdate], a
@@ -23670,7 +71043,7 @@
 	ld [hBGMapMode], a
 	
 	xor a
-	ld [$d002], a
+	ld [DefaultFlypoint], a
 	
 ; Play starting sound effect
 	call SFXChannelsOff
@@ -23680,8 +71053,123 @@
 	ret
 ; 10eea7
 
-INCBIN "baserom.gbc", $10eea7, $10ef32 - $10eea7
+Function10eea7: ; 10eea7
+	ld hl, DefaultFlypoint
+	ld a, [hl]
+	ld c, a
+	inc [hl]
+	and $7
+	ret nz
+	ld a, c
+	and $18
+	sla a
+	swap a
+	ld e, a
+	ld d, $0
+	ld hl, $6ece
+	add hl, de
+	ld d, [hl]
+	xor a
+	ld [hBGMapMode], a
+	call Function10eed2
+	ld a, $1
+	ld [hBGMapMode], a
+	ld a, $3
+	ld [hBGMapThird], a
+	ret
+; 10eece
 
+INCBIN "baserom.gbc", $10eece, $10eed2 - $10eece
+
+
+Function10eed2: ; 10eed2
+	ld hl, $c596
+	ld b, $6
+.asm_10eed7
+	ld c, $8
+.asm_10eed9
+	ld a, d
+	ld [hli], a
+	inc d
+	dec c
+	jr nz, .asm_10eed9
+	ld a, $c
+	add l
+	ld l, a
+	ld a, $0
+	adc h
+	ld h, a
+	ld a, $8
+	add d
+	ld d, a
+	dec b
+	jr nz, .asm_10eed7
+	ret
+; 10eeef
+
+Function10eeef: ; 10eeef
+.asm_10eeef
+	push de
+	push bc
+	push hl
+.asm_10eef2
+	ld a, d
+	ld [hli], a
+	inc d
+	dec c
+	jr nz, .asm_10eef2
+	pop hl
+	ld bc, $0014
+	add hl, bc
+	pop bc
+	pop de
+	ld a, e
+	add d
+	ld d, a
+	dec b
+	jr nz, .asm_10eeef
+	ret
+; 10ef06
+
+Function10ef06: ; 10ef06
+	ld hl, Sprites
+	ld d, $de
+	ld e, $0
+	ld c, $5
+.asm_10ef0f
+	push bc
+	call Function10ef1c
+	pop bc
+	ld a, $10
+	add d
+	ld d, a
+	dec c
+	jr nz, .asm_10ef0f
+	ret
+; 10ef1c
+
+Function10ef1c: ; 10ef1c
+	ld c, $6
+	ld b, $40
+.asm_10ef20
+	ld a, d
+	ld [hli], a
+	ld a, b
+	ld [hli], a
+	add $8
+	ld b, a
+	ld a, e
+	ld [hli], a
+	inc e
+	inc e
+	ld a, $80
+	ld [hli], a
+	dec c
+	jr nz, .asm_10ef20
+	ret
+; 10ef32
+
+
 AnimateTitleCrystal: ; 10ef32
 ; Move the title screen crystal downward until it's fully visible
 
@@ -23827,12 +71315,34 @@
 
 SECTION "bank45",ROMX,BANK[$45]
 
-INCBIN "baserom.gbc", $114000, $117a7f - $114000
+INCBIN "baserom.gbc", $114000, $114243 - $114000
 
+Function114243: ; 114243
+	ld a, $a
+	ld [$0000], a
+	ld a, [$ff8c]
+	push af
+	push de
+	ld a, [$dc02]
+	add a
+	ld e, a
+	ld d, $0
+	ld hl, $4165
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	pop de
+	jp [hl]
+; 11425c
+
+INCBIN "baserom.gbc", $11425c, $117a7f - $11425c
+
+
 ; everything from here to the end of the bank is related to the
 ; Mobile Stadium option from the continue/newgame menu.
 ; XXX better function names
-Function117a7f: ; 0x117a7f
+MobileStudium: ; 0x117a7f
 	ld a, [$ffaa]
 	push af
 	ld a, $1
@@ -23882,7 +71392,7 @@
 ; 0x117acd
 
 Function117acd: ; 0x117acd
-	call $0a57
+	call Functiona57
 	ld a, [$cf63]
 	bit 7, a
 	jr nz, .asm_117ae2 ; 0x117ad5 $b
@@ -23930,9 +71440,9 @@
 	dec [hl]
 	ret nz
 	ld hl, Data117cbc
-	call Function1d35
-	call $1cbb
-	call $1cfd
+	call LoadMenuDataHeader
+	call Function1cbb
+	call Function1cfd
 	jp Function117cdd
 
 Function117b28:
@@ -23942,9 +71452,9 @@
 
 Function117b31:
 	ld hl, Data117cc4
-	call Function1d35
-	call $1cbb
-	call $1cfd
+	call LoadMenuDataHeader
+	call Function1cbb
+	call Function1cfd
 	ld hl, $c550
 	ld de, YesNo117ccc
 	call PlaceString
@@ -24079,7 +71589,7 @@
 	ld [rSVBK], a
 	ld a, $7
 	call GetSRAMBank
-	ld hl, $d002
+	ld hl, DefaultFlypoint
 	ld de, $b000
 	ld bc, $1000
 	call CopyBytes
@@ -24090,9 +71600,9 @@
 
 Function117c4a:
 	ld hl, Data117cbc
-	call Function1d35
-	call $1cbb
-	call $1cfd
+	call LoadMenuDataHeader
+	call Function1cbb
+	call Function1cfd
 	ld a, $41
 	ld hl, $4061
 	rst FarCall
@@ -24205,13 +71715,343 @@
 
 db $0
 
-INCBIN "baserom.gbc", $118d35, $11bc9e - $118d35
+INCBIN "baserom.gbc", $118d35, $11aa13 - $118d35
 
+UnknownText_0x11aa13: ; 0x11aa13
+	db $0, "SAVE FILE will be", $4f
+	db "sent.", $57
+; 0x11aa2c
+
+UnknownText_0x11aa2c: ; 0x11aa2c
+	db $0, "Sent SAVE FILE.", $4f
+	db "Reading NEWS…", $57
+; 0x11aa4b
+
+UnknownText_0x11aa4b: ; 0x11aa4b
+	db $0, "Reading NEWS…", $57
+; 0x11aa5a
+
+UnknownText_0x11aa5a: ; 0x11aa5a
+	db $0, "Received NEWS!", $57
+; 0x11aa6a
+
+UnknownText_0x11aa6a: ; 0x11aa6a
+	db $0, "Quit reading NEWS?", $57
+; 0x11aa7e
+
+UnknownText_0x11aa7e: ; 0x11aa7e
+	db $0, "Canceled sending", $4f
+	db "SAVE FILE.", $57
+; 0x11aa9b
+
+UnknownText_0x11aa9b: ; 0x11aa9b
+	db $0, "ODD EGG", $4f
+	db "was received!", $57
+; 0x11aab2
+
+UnknownText_0x11aab2: ; 0x11aab2
+	db $0, "Registering your", $4f
+	db "record…", $57
+; 0x11aacc
+
+UnknownText_0x11aacc: ; 0x11aacc
+	db $0, "One visit per day", $4f
+	db "per BATTLE ROOM!", $57
+; 0x11aaf0
+
+UnknownText_0x11aaf0: ; 0x11aaf0
+	db $0, "A party #MON", $4f
+	db "tops this level.", $57
+; 0x11ab0f
+
+UnknownText_0x11ab0f: ; 0x11ab0f
+	text_from_ram $cd49
+	db $0, " may go", $4f
+	db "only to BATTLE", $51
+	db "ROOMS that are", $4f
+	db "Lv.70 or higher.", $57
+; 0x11ab4a
+
+UnknownText_0x11ab4a: ; 0x11ab4a
+	db $0, "Cancel your BATTLE", $4f
+	db "ROOM challenge?", $57
+; 0x11ab6e
+
+UnknownText_0x11ab6e: ; 0x11ab6e
+	db $0, "Exit GYM LEADER", $4f
+	db "HONOR ROLL?", $57
+; 0x11ab8b
+
+UnknownText_0x11ab8b: ; 0x11ab8b
+	db $0, "Linking with the", $4f
+	db "CENTER…", $57
+; 0x11aba5
+
+UnknownText_0x11aba5: ; 0x11aba5
+	db $0, "What level do you", $4f
+	db "want to challenge?", $57
+; 0x11abcb
+
+UnknownText_0x11abcb: ; 0x11abcb
+	db $0, "Check BATTLE ROOM", $4f
+	db "list by max level?", $57
+; 0x11abf1
+
+UnknownText_0x11abf1: ; 0x11abf1
+	db $0, "Enter which", $4f
+	db "BATTLE ROOM?", $57
+; 0x11ac0b
+
+UnknownText_0x11ac0b: ; 0x11ac0b
+	db $0, "Which BATTLE ROOM?", $57
+; 0x11ac1f
+
+UnknownText_0x11ac1f: ; 0x11ac1f
+	text_from_ram $d099
+	db $0, "'s ROOM", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, "?", $55
+	db "Please wait…", $57
+; 0x11ac3e
+
+INCBIN "baserom.gbc", $11ac3e, $11bc9e - $11ac3e
+
+
 SECTION "bank47",ROMX,BANK[$47]
 
-INCBIN "baserom.gbc", $11c000, $11f686 - $11c000
+Function11c000: ; 11c000
+	ld a, [rSVBK]
+	push af
+	ld a, $3
+	ld [rSVBK], a
+	ld hl, $d105
+	ld a, [hl]
+	dec a
+	ld e, a
+	ld d, $0
+	ld hl, $72f0
+	add hl, de
+	ld a, [hl]
+	and a
+	jr nz, .asm_11c026
+	ld a, [hRandomAdd]
+	and $1f
+	cp $19
+	jr c, .asm_11c021
+	sub $19
 
+.asm_11c021
+	ld hl, $7332
+	jr .asm_11c033
 
+.asm_11c026
+	ld a, [hRandomAdd]
+	and $f
+	cp $f
+	jr c, .asm_11c030
+	sub $f
+
+.asm_11c030
+	ld hl, $73ce
+
+.asm_11c033
+	ld b, $0
+	dec c
+	jr nz, .asm_11c03d
+	ld [$d200], a
+	jr .asm_11c040
+
+.asm_11c03d
+	ld a, [$d200]
+
+.asm_11c040
+	push af
+	add hl, bc
+	add hl, bc
+	ld a, [hli]
+	ld c, a
+	ld a, [hl]
+	ld h, a
+	ld l, c
+	pop af
+	ld c, a
+	ld b, $0
+	add hl, bc
+	add hl, bc
+	ld a, [hli]
+	ld c, a
+	ld a, [hl]
+	ld l, c
+	ld h, a
+	ld bc, $c5b9
+	pop af
+	ld [rSVBK], a
+	call Function13e5
+	ret
+; 11c05d
+
+INCBIN "baserom.gbc", $11c05d, $11c0c6 - $11c05d
+
+
+Function11c0c6: ; 11c0c6
+	ld a, [$cf63]
+	ld l, a
+	ld a, [$cf64]
+	ld h, a
+	push hl
+	ld hl, $c618
+	ld a, $0
+	ld [hli], a
+	push de
+	xor a
+	ld [$cf63], a
+	ld a, $12
+	ld [$cf64], a
+	ld a, $6
+.asm_11c0e1
+	push af
+	ld a, [bc]
+	ld e, a
+	inc bc
+	ld a, [bc]
+	ld d, a
+	inc bc
+	or e
+	jr z, .asm_11c133
+	push hl
+	push bc
+	call Function11c156
+	call Function11c14a
+	ld e, c
+	pop bc
+	pop hl
+	ld a, e
+	or a
+	jr z, .asm_11c133
+.asm_11c0fa
+	ld a, [$cf64]
+	cp $12
+	jr z, .asm_11c102
+	inc e
+
+.asm_11c102
+	cp e
+	jr nc, .asm_11c11c
+	ld a, [$cf63]
+	inc a
+	ld [$cf63], a
+	ld [hl], $4e
+	rra
+	jr c, .asm_11c113
+	ld [hl], $55
+
+.asm_11c113
+	inc hl
+	ld a, $12
+	ld [$cf64], a
+	dec e
+	jr .asm_11c0fa
+
+.asm_11c11c
+	cp $12
+	jr z, .asm_11c123
+	ld [hl], $7f
+	inc hl
+
+.asm_11c123
+	sub e
+	ld [$cf64], a
+	ld de, EnemyMoveAnimation
+.asm_11c12a
+	ld a, [de]
+	cp $50
+	jr z, .asm_11c133
+	inc de
+	ld [hli], a
+	jr .asm_11c12a
+
+.asm_11c133
+	pop af
+	dec a
+	jr nz, .asm_11c0e1
+	ld [hl], $57
+	pop bc
+	ld hl, $c618
+	call Function13e5
+	pop hl
+	ld a, l
+	ld [$cf63], a
+	ld a, h
+	ld [$cf64], a
+	ret
+; 11c14a
+
+Function11c14a: ; 11c14a
+	ld c, $0
+	ld hl, EnemyMoveAnimation
+.asm_11c14f
+	ld a, [hli]
+	cp $50
+	ret z
+	inc c
+	jr .asm_11c14f
+; 11c156
+
+Function11c156: ; 11c156
+	ld a, [rSVBK]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+	ld a, $50
+	ld hl, EnemyMoveAnimation
+	ld bc, $000b
+	call ByteFill
+	ld a, d
+	and a
+	jr z, .asm_11c19c
+	ld hl, $5aac
+	dec d
+	sla d
+	ld c, d
+	ld b, $0
+	add hl, bc
+	ld a, [hli]
+	ld c, a
+	ld a, [hl]
+	ld b, a
+	push bc
+	pop hl
+	ld c, e
+	ld b, $0
+	sla c
+	rl b
+	sla c
+	rl b
+	sla c
+	rl b
+	add hl, bc
+	ld bc, $0005
+.asm_11c18f
+	ld de, EnemyMoveAnimation
+	call CopyBytes
+	ld de, EnemyMoveAnimation
+	pop af
+	ld [rSVBK], a
+	ret
+
+.asm_11c19c
+	ld a, e
+	ld [$d265], a
+	call GetPokemonName
+	ld hl, StringBuffer1
+	ld bc, $000a
+	jr .asm_11c18f
+; 11c1ab
+
+INCBIN "baserom.gbc", $11c1ab, $11f686 - $11c1ab
+
+
 SECTION "bank48",ROMX,BANK[$48]
 
 PicPointers:
@@ -25036,17 +72876,44 @@
 
 SECTION "bank5B",ROMX,BANK[$5B]
 
-INCBIN "baserom.gbc", $16c000, $16d7fe - $16c000
+INCBIN "baserom.gbc", $16c000, $16d69a - $16c000
 
 
+Function16d69a: ; 16d69a
+	ld de, $52c1
+	ld hl, $9760
+	ld bc, $5b08
+	call Get2bpp
+	ret
+; 16d6a7
+
+INCBIN "baserom.gbc", $16d6a7, $16d7fe - $16d6a7
+
+
 SECTION "bank5C",ROMX,BANK[$5C]
 
-INCBIN "baserom.gbc", $170000, $17367f - $170000
+INCBIN "baserom.gbc", $170000, $170923 - $170000
 
 
+Function170923: ; 170923
+	ld a, $5
+	call GetSRAMBank
+	xor a
+	ld [$aa48], a
+	ld [$aa47], a
+	ld hl, $aa5d
+	ld bc, $0011
+	call ByteFill
+	call CloseSRAM
+	ret
+; 17093c
+
+INCBIN "baserom.gbc", $17093c, $17367f - $17093c
+
+
 SECTION "bank5D",ROMX,BANK[$5D]
 
-INCBIN "baserom.gbc", $174000, $177561 - $174000
+INCLUDE "text/phone/extra3.asm"
 
 
 SECTION "bank5E",ROMX,BANK[$5E]
@@ -25074,9 +72941,118 @@
 
 SECTION "bank5F",ROMX,BANK[$5F]
 
-INCBIN "baserom.gbc", $17c000, $17ff6c - $17c000
+Function17c000: ; 17c000
+	call DisableLCD
+	ld hl, VTiles2
+	ld bc, $0310
+	xor a
+	call ByteFill
+	call $0e51
+	call Functione5f
+	ld hl, $4b83
+	ld de, TileMap
+	ld bc, AttrMap
+	ld a, $12
+.asm_17c01e
+	push af
+	ld a, $14
+	push hl
+.asm_17c022
+	push af
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [bc], a
+	inc bc
+	pop af
+	dec a
+	jr nz, .asm_17c022
+	pop hl
+	push bc
+	ld bc, $0040
+	add hl, bc
+	pop bc
+	pop af
+	dec a
+	jr nz, .asm_17c01e
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, $4ff3
+	ld de, $d000
+	ld bc, $0080
+	call CopyBytes
+	pop af
+	ld [rSVBK], a
+	ld hl, $4983
+	ld de, $8300
+	ld bc, $0200
+	call CopyBytes
+	ld a, $1
+	ld [rVBK], a
+	ld hl, $4083
+	ld de, VTiles2
+	ld bc, $0800
+	call CopyBytes
+	ld hl, $4883
+	ld de, VTiles1
+	ld bc, Start
+	call CopyBytes
+	xor a
+	ld [rVBK], a
+	call EnableLCD
+	ld a, $41
+	ld hl, $4061
+	rst FarCall
+	ret
+; 17c083
 
+INCBIN "baserom.gbc", $17c083, $17f036 - $17c083
 
+
+Function17f036: ; 17f036
+	ld a, $6
+	call GetSRAMBank
+	inc de
+.asm_17f03c
+	call Function17f047
+	jr c, .asm_17f043
+	jr .asm_17f03c
+
+.asm_17f043
+	call CloseSRAM
+	ret
+; 17f047
+
+Function17f047: ; 17f047
+	ld a, [de]
+	inc de
+	cp $50
+	jr z, .asm_17f05f
+	cp $10
+	jr nc, .asm_17f05f
+	dec a
+	push de
+	ld e, a
+	ld d, $0
+	ld hl, $7061
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+
+.asm_17f05f
+	scf
+	ret
+; 17f061
+
+INCBIN "baserom.gbc", $17f061, $17ff6c - $17f061
+
+
 SECTION "bank60",ROMX,BANK[$60]
 
 ;                        Map Scripts XIII
@@ -25378,50 +73354,23 @@
 
 SECTION "bank6F",ROMX,BANK[$6F]
 
-_FruitBearingTreeText: ; 0x1bc000
-	db $0, "It's a fruit-", $4f
-	db "bearing tree.", $57
-; 0x1bc01c
+;                        Common text II
 
-_HeyItsFruitText: ; 0x1bc01c
-	db $0, "Hey! It's", $4f
-	db "@"
-	text_from_ram StringBuffer3
-	db $0, "!", $57
-; 0x1bc02d
+INCLUDE "text/common_2.tx"
 
-_ObtainedFruitText: ; 0x1bc02d
-	db $0, "Obtained", $4f
-	db "@"
-	text_from_ram StringBuffer3
-	db $0, "!", $57
-; 0x1bc03e
 
-_FruitPackIsFullText: ; 0x1bc03e
-	db $0, "But the PACK is", $4f
-	db "full…", $57
-; 0x1bc055
-
-_NothingHereText: ; 0x1bc055
-	db $0, "There's nothing", $4f
-	db "here…", $57
-; 0x1bc06b
-
-INCBIN "baserom.gbc", $1bc06b, $1be08d - $1bc06b
-
-
 SECTION "bank70",ROMX,BANK[$70]
 
-;                         Common text II
+;                        Common text III
 
-INCLUDE "text/common_2.tx"
+INCLUDE "text/common_3.tx"
 
 
 SECTION "bank71",ROMX,BANK[$71]
 
-;                        Common text III
+;                        Common text IV
 
-INCLUDE "text/common_3.tx"
+INCLUDE "text/common_4.tx"
 
 
 SECTION "bank72",ROMX,BANK[$72]
@@ -25498,8 +73447,12 @@
 
 SECTION "bank77",ROMX,BANK[$77]
 
-INCBIN "baserom.gbc", $1dc000, $1dc5a1 - $1dc000
+UnownFont: ; 1dc000
+INCBIN "gfx/misc/unown_font.2bpp"
+; 1dc1b0
 
+INCBIN "baserom.gbc", $1dc1b0, $1dc5a1 - $1dc1b0
+
 Tileset26GFX: ; 0x1dc5a1
 Tileset32GFX: ; 0x1dc5a1
 Tileset33GFX: ; 0x1dc5a1
@@ -25519,9 +73472,94 @@
 INCBIN "tilesets/26_collision.bin"
 ; 0x1dd6a9
 
-INCBIN "baserom.gbc", $1dd6a9, $1de29f - $1dd6a9
+INCBIN "baserom.gbc", $1dd6a9, $1ddf1c - $1dd6a9
 
 
+Function1ddf1c: ; 1ddf1c
+	ld hl, $5f33
+	ld de, $9310
+	call Decompress
+	ret
+; 1ddf26
+
+INCBIN "baserom.gbc", $1ddf26, $1de0d7 - $1ddf26
+
+
+Function1de0d7: ; 1de0d7
+	ld hl, $60e1
+	ld de, $a000
+	call Decompress
+	ret
+; 1de0e1
+
+INCBIN "baserom.gbc", $1de0e1, $1de247 - $1de0e1
+
+
+Function1de247: ; 1de247
+	ld a, [hBGMapAddress]
+	ld l, a
+	ld a, [$ffd7]
+	ld h, a
+	push hl
+	inc hl
+	ld a, l
+	ld [hBGMapAddress], a
+	ld a, h
+	ld [$ffd7], a
+	ld hl, $c4b3
+	ld [hl], $66
+	ld hl, $c4c7
+	ld a, $67
+	ld b, $f
+	call Function1de27f
+	ld [hl], $68
+	ld hl, $c607
+	ld [hl], $3c
+	xor a
+	ld b, $12
+	ld hl, $cdec
+	call Function1de27f
+	call Function3200
+	pop hl
+	ld a, l
+	ld [hBGMapAddress], a
+	ld a, h
+	ld [$ffd7], a
+	ret
+; 1de27f
+
+Function1de27f: ; 1de27f
+	push de
+	ld de, $0014
+.asm_1de283
+	ld [hl], a
+	add hl, de
+	dec b
+	jr nz, .asm_1de283
+	pop de
+	ret
+; 1de28a
+
+
+
+Function1de28a: ; 1de28a
+	ld hl, DudeAutoInput_A
+	jr .asm_1de299
+
+	ld hl, DudeAutoInput_RightA
+	jr .asm_1de299
+
+	ld hl, DudeAutoInput_DownA
+	jr .asm_1de299
+
+.asm_1de299
+	ld a, $77
+	call StartAutoInput
+	ret
+; 1de29f
+
+
+
 DudeAutoInput_A: ; 1de29f
 	db NO_INPUT, $50
 	db BUTTON_A, $00
@@ -25557,9 +73595,35 @@
 INCBIN "gfx/misc/pokegear.lz"
 ; 1de5c7
 
-INCBIN "baserom.gbc", $1de5c7, $1df238 - $1de5c7
+INCBIN "baserom.gbc", $1de5c7, $1de5c8 - $1de5c7
 
+Function1de5c8: ; 1de5c8
+	ld c, $0
+	ld hl, $0029
+	add hl, de
+	ld a, [hli]
+	cp $84
+	ret nz
+	ld a, [hli]
+	inc c
+	cp $85
+	ret z
+	inc c
+	cp $86
+	ret z
+	inc c
+	cp $88
+	ret z
+	inc c
+	cp $92
+	ret z
+	ld c, $0
+	ret
+; 1de5e6
 
+INCBIN "baserom.gbc", $1de5e6, $1df238 - $1de5e6
+
+
 SECTION "bank78",ROMX,BANK[$78]
 
 Tileset33Meta: ; 0x1e0000
@@ -25587,7 +73651,7 @@
 
 SECTION "bank7B",ROMX,BANK[$7B]
 
-INCBIN "baserom.gbc", $1ec000, $1ecf02 - $1ec000
+INCLUDE "text/battle_tower.asm"
 
 
 SECTION "bank7C",ROMX,BANK[$7C]
@@ -25597,12 +73661,278 @@
 
 SECTION "bank7D",ROMX,BANK[$7D]
 
-INCBIN "baserom.gbc", $1f4000, $1f636a - $1f4000
+INCBIN "baserom.gbc", $1f4000, $1f4003 - $1f4000
 
+Function1f4003: ; 1f4003
+	ld a, $6
+	call GetSRAMBank
+	ld hl, $4018
+	ld de, $a000
+	ld bc, $1000
+	call CopyBytes
+	call CloseSRAM
+	ret
+; 1f4018
 
+INCBIN "baserom.gbc", $1f4018, $1f636a - $1f4018
+
+
 SECTION "bank7E",ROMX,BANK[$7E]
 
-INCBIN "baserom.gbc", $1f8000, $1fb8a8 - $1f8000
+Function1f8000: ; 1f8000
+	ld a, [rSVBK]
+	push af
+	ld a, $3
+	ld [rSVBK], a
+	xor a
+	ld hl, $d100
+	ld bc, $00e0
+	call ByteFill
+	ld a, $ff
+	ld [$d10c], a
+	ld [$d147], a
+	ld [$d182], a
+	ld de, $d100
+	ld a, [hRandomAdd]
+	ld b, a
+.asm_1f8022
+	call RNG
+	ld a, [hRandomAdd]
+	add b
+	ld b, a
+	and $1f
+	cp $15
+	jr nc, .asm_1f8022
+	ld b, a
+	ld a, $1
+	call GetSRAMBank
+	ld c, $7
+	ld hl, $be48
+.asm_1f803a
+	ld a, [hli]
+	cp b
+	jr z, .asm_1f8022
+	dec c
+	jr nz, .asm_1f803a
+	ld hl, $be48
+	ld a, [$be46]
+	ld c, a
+	ld a, b
+	ld b, 0
+	add hl, bc
+	ld [hl], a
+	call CloseSRAM
+	push af
+	ld hl, BattleTowerTrainers
+	ld bc, 11
+	call AddNTimes
+	ld bc, 11
+	call CopyBytes
+	call Function1f8081
+	pop af
+	ld hl, Function1f8000
+	ld bc, $0024
+	call AddNTimes
+	ld bc, $0024
+.asm_1f8070
+	ld a, $7c
+	call GetFarByte
+	ld [de], a
+	inc hl
+	inc de
+	dec bc
+	ld a, b
+	or c
+	jr nz, .asm_1f8070
+	pop af
+	ld [rSVBK], a
+	ret
+; 1f8081
+
+Function1f8081: ; 1f8081
+	ld c, $3
+	push bc
+	ld a, $1
+	call GetSRAMBank
+.asm_1f8089
+	ld a, [$d800]
+	dec a
+	ld hl, BattleTowerMons
+	ld bc, BattleTowerMons2 - BattleTowerMons1
+	call AddNTimes
+
+	ld a, [hRandomAdd]
+	ld b, a
+.asm_1f8099
+	call RNG
+	ld a, [hRandomAdd]
+	add b
+	ld b, a
+	and $1f
+	cp (BattleTowerMons2 - BattleTowerMons1) / ($3b)
+	jr nc, .asm_1f8099
+
+	ld bc, $3b
+	call AddNTimes
+	ld a, [hli]
+	ld b, a
+	ld a, [hld]
+	ld c, a
+	ld a, [$d10b]
+	cp b
+	jr z, .asm_1f8089
+	ld a, [$d10c]
+	cp c
+	jr z, .asm_1f8089
+	ld a, [$d146]
+	cp b
+	jr z, .asm_1f8089
+	ld a, [$d147]
+	cp c
+	jr z, .asm_1f8089
+	ld a, [$d181]
+	cp b
+	jr z, .asm_1f8089
+	ld a, [$d182]
+	cp c
+	jr z, .asm_1f8089
+	ld a, [$be51]
+	cp b
+	jr z, .asm_1f8089
+	ld a, [$be52]
+	cp b
+	jr z, .asm_1f8089
+	ld a, [$be53]
+	cp b
+	jr z, .asm_1f8089
+	ld a, [$be54]
+	cp b
+	jr z, .asm_1f8089
+	ld a, [$be55]
+	cp b
+	jr z, .asm_1f8089
+	ld a, [$be56]
+	cp b
+	jr z, .asm_1f8089
+
+	ld bc, $3b
+	call CopyBytes
+	ld a, [$d265]
+	push af
+	push de
+	ld hl, -$3b
+	add hl, de
+	ld a, [hl]
+	ld [$d265], a
+	ld bc, $0030
+	add hl, bc
+	push hl
+	call GetPokemonName
+	ld h, d
+	ld l, e
+	pop de
+	ld bc, $000b
+	call CopyBytes
+	pop de
+	pop af
+	ld [$d265], a
+	pop bc
+	dec c
+	jp nz, $4083
+	ld a, [$be51]
+	ld [$be54], a
+	ld a, [$be52]
+	ld [$be55], a
+	ld a, [$be53]
+	ld [$be56], a
+	ld a, [$d10b]
+	ld [$be51], a
+	ld a, [$d146]
+	ld [$be52], a
+	ld a, [$d181]
+	ld [$be53], a
+	call CloseSRAM
+	ret
+; 1f814e
+
+BattleTowerTrainers: ; 1f814e
+	db "HANSON@@@@", FISHER
+	db "SAWYER@@@@", POKEMANIAC
+	db "MASUDA@@@@", GUITARIST
+	db "NICKEL@@@@", SCIENTIST
+	db "OLSON@@@@@", POKEFANM
+	db "ZABOROWSKI", LASS
+	db "WRIGHT@@@@", YOUNGSTER
+	db "ALEXANDER@", HIKER
+	db "KAWAKAMI@@", TEACHER
+	db "BICKETT@@@", POKEFANM
+	db "SAITO@@@@@", KIMONO_GIRL
+	db "CRAWFORD@@", BOARDER
+	db "DIAZ@@@@@@", PICNICKER
+	db "ERICKSON@@", BIKER
+	db "FAIRFIELD@", JUGGLER
+	db "HUNTER@@@@", POKEFANF
+	db "HILL@@@@@@", FIREBREATHER
+	db "JAVIER@@@@", SWIMMERF
+	db "KAUFMAN@@@", SWIMMERM
+	db "LANCASTER@", SKIER
+	db "McMAHILL@@", CAMPER
+	db "OBRIEN@@@@", GENTLEMAN
+	db "FROST@@@@@", BEAUTY
+	db "MORSE@@@@@", SUPER_NERD
+	db "YUFUNE@@@@", BLACKBELT_T
+	db "RAJAN@@@@@", COOLTRAINERF
+	db "RODRIGUEZ@", OFFICER
+	db "SANTIAGO@@", PSYCHIC_T
+	db "STOCK@@@@@", POKEFANM
+	db "THURMAN@@@", SCIENTIST
+	db "VALENTINO@", BEAUTY
+	db "WAGNER@@@@", CAMPER
+	db "YATES@@@@@", BIRD_KEEPER
+	db "ANDREWS@@@", PICNICKER
+	db "BAHN@@@@@@", POKEMANIAC
+	db "MORI@@@@@@", SCIENTIST
+	db "BUCKMAN@@@", SAGE
+	db "COBB@@@@@@", SCHOOLBOY
+	db "HUGHES@@@@", FISHER
+	db "ARITA@@@@@", KIMONO_GIRL
+	db "EASTON@@@@", PSYCHIC_T
+	db "FREEMAN@@@", CAMPER
+	db "GIESE@@@@@", LASS
+	db "HATCHER@@@", GENTLEMAN
+	db "JACKSON@@@", POKEFANF
+	db "KAHN@@@@@@", POKEMANIAC
+	db "LEONG@@@@@", YOUNGSTER
+	db "MARINO@@@@", TEACHER
+	db "NEWMAN@@@@", SAILOR
+	db "NGUYEN@@@@", BLACKBELT_T
+	db "OGDEN@@@@@", SUPER_NERD
+	db "PARK@@@@@@", COOLTRAINERF
+	db "RAINE@@@@@", SWIMMERM
+	db "SELLS@@@@@", BIRD_KEEPER
+	db "ROCKWELL@@", BOARDER
+	db "THORNTON@@", LASS
+	db "TURNER@@@@", OFFICER
+	db "VAN DYKE@@", SKIER
+	db "WALKER@@@@", SCHOOLBOY
+	db "MEYER@@@@@", SWIMMERF
+	db "JOHNSON@@@", YOUNGSTER
+	db "ADAMS@@@@@", GUITARIST
+	db "SMITH@@@@@", BUG_CATCHER
+	db "TAJIRI@@@@", BUG_CATCHER
+	db "BAKER@@@@@", POKEMANIAC
+	db "COLLINS@@@", SCIENTIST
+	db "SMART@@@@@", SUPER_NERD
+	db "DYKSTRA@@@", SWIMMERF
+	db "EATON@@@@@", BIKER
+	db "WONG@@@@@@", FIREBREATHER
+; 1f8450
+
+BattleTowerMons: ; 1f8450
+	INCLUDE "stats/battle_tower.asm"
+; 1fb4b6
+
+INCBIN "baserom.gbc", $1fb4b6, $1fb8a8 - $1fb4b6
 
 
 SECTION "bank7F",ROMX,BANK[$7F]
--- a/maps/Route36.asm
+++ b/maps/Route36.asm
@@ -64,6 +64,10 @@
 	yesorno
 	iffalse UnknownScript_0x194079
 	loadmovesprites
+	; fallthrough
+; 0x194053
+
+WateredWeirdTreeScript: ; 0x194053
 	loadfont
 	2writetext UnknownText_0x194290
 	closetext
--- a/preprocessor.py
+++ b/preprocessor.py
@@ -192,6 +192,7 @@
 "ゅ": 0xE1,
 "ょ": 0xE2,
 "ー": 0xE3,
+"ァ": 0xE9,
 
 "@": 0x50,
 "#": 0x54,
--- /dev/null
+++ b/stats/battle_tower.asm
@@ -1,0 +1,5711 @@
+
+
+BattleTowerMons1:
+
+	db JOLTEON
+	db MIRACLEBERRY
+	db THUNDERBOLT, HYPER_BEAM, SHADOW_BALL, ROAR
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 40000
+	bigdw 40000
+	bigdw 35000
+	bigdw 40000
+	db $dd, $bd ; DVs
+	db 15, 5, 15, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 41 ; HP
+	bigdw 41 ; Max HP
+	bigdw 25 ; Atk
+	bigdw 24 ; Def
+	bigdw 37 ; Spd
+	bigdw 34 ; SAtk
+	bigdw 31 ; SDef
+	db "SANDA-SU@@@"
+
+
+	db ESPEON
+	db LEFTOVERS
+	db MUD_SLAP, PSYCHIC_M, PSYCH_UP, TOXIC
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 50000
+	bigdw 35000
+	bigdw 40000
+	bigdw 40000
+	db $ed, $fb ; DVs
+	db 10, 10, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 39 ; HP
+	bigdw 39 ; Max HP
+	bigdw 26 ; Atk
+	bigdw 24 ; Def
+	bigdw 35 ; Spd
+	bigdw 38 ; SAtk
+	bigdw 31 ; SDef
+	db "E-HUi@@@@@@"
+
+
+	db UMBREON
+	db GOLD_BERRY
+	db SHADOW_BALL, IRON_TAIL, PSYCH_UP, TOXIC
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 40000
+	bigdw 45000
+	bigdw 50000
+	bigdw 40000
+	db $db, $ef ; DVs
+	db 15, 15, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 46 ; HP
+	bigdw 46 ; Max HP
+	bigdw 25 ; Atk
+	bigdw 34 ; Def
+	bigdw 26 ; Spd
+	bigdw 25 ; SAtk
+	bigdw 39 ; SDef
+	db "BURAtuKI-@@"
+
+
+	db WOBBUFFET
+	db FOCUS_BAND
+	db COUNTER, MIRROR_COAT, SAFEGUARD, DESTINY_BOND
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $7f, $d7 ; DVs
+	db 20, 20, 25, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 66 ; HP
+	bigdw 66 ; Max HP
+	bigdw 18 ; Atk
+	bigdw 25 ; Def
+	bigdw 19 ; Spd
+	bigdw 18 ; SAtk
+	bigdw 23 ; SDef
+	db "SO-NANSU@@@"
+
+
+	db KANGASKHAN
+	db MIRACLEBERRY
+	db REVERSAL, HYPER_BEAM, EARTHQUAKE, ATTRACT
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 30000
+	bigdw 40000
+	bigdw 30000
+	bigdw 30000
+	db $ef, $cf ; DVs
+	db 15, 5, 10, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 47 ; HP
+	bigdw 47 ; Max HP
+	bigdw 31 ; Atk
+	bigdw 29 ; Def
+	bigdw 29 ; Spd
+	bigdw 20 ; SAtk
+	bigdw 28 ; SDef
+	db "GARU-RA@@@@"
+
+
+	db CORSOLA
+	db SCOPE_LENS
+	db SURF, PSYCHIC_M, RECOVER, ANCIENTPOWER
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 30000
+	bigdw 33300
+	bigdw 30000
+	bigdw 30000
+	db $fe, $fd ; DVs
+	db 15, 10, 20, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 38 ; HP
+	bigdw 38 ; Max HP
+	bigdw 23 ; Atk
+	bigdw 29 ; Def
+	bigdw 19 ; Spd
+	bigdw 24 ; SAtk
+	bigdw 28 ; SDef
+	db "SANI-GO@@@@"
+
+
+	db MILTANK
+	db GOLD_BERRY
+	db BLIZZARD, EARTHQUAKE, HYPER_BEAM, TOXIC
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 35000
+	db $bb, $df ; DVs
+	db 5, 10, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 46 ; HP
+	bigdw 46 ; Max HP
+	bigdw 27 ; Atk
+	bigdw 32 ; Def
+	bigdw 31 ; Spd
+	bigdw 20 ; SAtk
+	bigdw 26 ; SDef
+	db "MIRUTANKU@@"
+
+
+	db AERODACTYL
+	db LEFTOVERS
+	db HYPER_BEAM, SUPERSONIC, EARTHQUAKE, BITE
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $db, $fb ; DVs
+	db 5, 20, 10, 25 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 43 ; HP
+	bigdw 43 ; Max HP
+	bigdw 32 ; Atk
+	bigdw 24 ; Def
+	bigdw 38 ; Spd
+	bigdw 23 ; SAtk
+	bigdw 26 ; SDef
+	db "PUTERA@@@@@"
+
+
+	db LAPRAS
+	db MIRACLEBERRY
+	db BLIZZARD, SURF, THUNDERBOLT, PSYCHIC_M
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $fd, $eb ; DVs
+	db 5, 15, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 52 ; HP
+	bigdw 52 ; Max HP
+	bigdw 29 ; Atk
+	bigdw 27 ; Def
+	bigdw 24 ; Spd
+	bigdw 28 ; SAtk
+	bigdw 30 ; SDef
+	db "RAPURASU@@@"
+
+
+	db SNEASEL
+	db GOLD_BERRY
+	db SLASH, FAINT_ATTACK, SURF, BLIZZARD
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 35000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $fb, $bf ; DVs
+	db 20, 20, 15, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 38 ; HP
+	bigdw 38 ; Max HP
+	bigdw 31 ; Atk
+	bigdw 22 ; Def
+	bigdw 34 ; Spd
+	bigdw 19 ; SAtk
+	bigdw 27 ; SDef
+	db "NIyu-RA@@@@"
+
+
+	db PORYGON2
+	db BRIGHTPOWDER
+	db PSYCHIC_M, BLIZZARD, HYPER_BEAM, TRI_ATTACK
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 40000
+	bigdw 30000
+	bigdw 30000
+	db $fb, $de ; DVs
+	db 10, 5, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 44 ; HP
+	bigdw 44 ; Max HP
+	bigdw 28 ; Atk
+	bigdw 30 ; Def
+	bigdw 23 ; Spd
+	bigdw 33 ; SAtk
+	bigdw 31 ; SDef
+	db "PORIGON2@@@"
+
+
+	db MISDREAVUS
+	db FOCUS_BAND
+	db PERISH_SONG, MEAN_LOOK, PAIN_SPLIT, SHADOW_BALL
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $ef, $df ; DVs
+	db 5, 5, 20, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 37 ; HP
+	bigdw 37 ; Max HP
+	bigdw 24 ; Atk
+	bigdw 24 ; Def
+	bigdw 28 ; Spd
+	bigdw 29 ; SAtk
+	bigdw 29 ; SDef
+	db "MUUMA@@@@@@"
+
+
+	db HOUNDOUR
+	db GOLD_BERRY
+	db FAINT_ATTACK, SOLARBEAM, ROAR, SUNNY_DAY
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 33000
+	bigdw 30000
+	db $fd, $fe ; DVs
+	db 20, 10, 20, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 36 ; HP
+	bigdw 36 ; Max HP
+	bigdw 24 ; Atk
+	bigdw 17 ; Def
+	bigdw 25 ; Spd
+	bigdw 28 ; SAtk
+	bigdw 22 ; SDef
+	db "DERUBIRU@@@"
+
+
+	db GIRAFARIG
+	db KINGS_ROCK
+	db PSYBEAM, MUD_SLAP, SHADOW_BALL, AGILITY
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $ed, $fd ; DVs
+	db 20, 10, 15, 30 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 39 ; HP
+	bigdw 39 ; Max HP
+	bigdw 28 ; Atk
+	bigdw 24 ; Def
+	bigdw 29 ; Spd
+	bigdw 29 ; SAtk
+	bigdw 24 ; SDef
+	db "KIRINRIKI@@"
+
+
+	db BLISSEY
+	db QUICK_CLAW
+	db HEADBUTT, SOLARBEAM, ROLLOUT, STRENGTH
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 32000
+	bigdw 40000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $df, $ce ; DVs
+	db 15, 10, 20, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 77 ; HP
+	bigdw 77 ; Max HP
+	bigdw 14 ; Atk
+	bigdw 14 ; Def
+	bigdw 22 ; Spd
+	bigdw 27 ; SAtk
+	bigdw 39 ; SDef
+	db "HAPINASU@@@"
+
+
+	db SNORLAX
+	db MIRACLEBERRY
+	db HEADBUTT, PROTECT, SNORE, SURF
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $ef, $f7 ; DVs
+	db 15, 10, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 57 ; HP
+	bigdw 57 ; Max HP
+	bigdw 34 ; Atk
+	bigdw 25 ; Def
+	bigdw 18 ; Spd
+	bigdw 23 ; SAtk
+	bigdw 32 ; SDef
+	db "KABIGON@@@@"
+
+
+	db EXEGGUTOR
+	db KINGS_ROCK
+	db TOXIC, GIGA_DRAIN, THIEF, CONFUSION
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $fe, $fe ; DVs
+	db 10, 5, 10, 25 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 45 ; HP
+	bigdw 45 ; Max HP
+	bigdw 31 ; Atk
+	bigdw 29 ; Def
+	bigdw 23 ; Spd
+	bigdw 37 ; SAtk
+	bigdw 25 ; SDef
+	db "NAtuSI-@@@@"
+
+
+	db HERACROSS
+	db GOLD_BERRY
+	db REVERSAL, ENDURE, COUNTER, ROCK_SMASH
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $f7, $f7 ; DVs
+	db 15, 10, 20, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 43 ; HP
+	bigdw 43 ; Max HP
+	bigdw 37 ; Atk
+	bigdw 25 ; Def
+	bigdw 29 ; Spd
+	bigdw 18 ; SAtk
+	bigdw 29 ; SDef
+	db "HERAKUROSU@"
+
+
+	db UNOWN
+	db BERRY
+	db HIDDEN_POWER, NONE, NONE, NONE
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $ff, $ff ; DVs
+	db 15, 0, 0, 0 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 36 ; HP
+	bigdw 36 ; Max HP
+	bigdw 26 ; Atk
+	bigdw 21 ; Def
+	bigdw 21 ; Spd
+	bigdw 26 ; SAtk
+	bigdw 21 ; SDef
+	db "ANNO-N@@@@@"
+
+
+	db TAUROS
+	db KINGS_ROCK
+	db HEADBUTT, SWAGGER, TAIL_WHIP, ICY_WIND
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $65, $57 ; DVs
+	db 15, 15, 30, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 40 ; HP
+	bigdw 40 ; Max HP
+	bigdw 30 ; Atk
+	bigdw 29 ; Def
+	bigdw 32 ; Spd
+	bigdw 18 ; SAtk
+	bigdw 24 ; SDef
+	db "KENTAROSU@@"
+
+
+	db MR__MIME
+	db QUICK_CLAW
+	db TOXIC, PSYCH_UP, FIRE_PUNCH, HEADBUTT
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $73, $67 ; DVs
+	db 10, 10, 15, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 34 ; HP
+	bigdw 34 ; Max HP
+	bigdw 19 ; Atk
+	bigdw 22 ; Def
+	bigdw 28 ; Spd
+	bigdw 30 ; SAtk
+	bigdw 34 ; SDef
+	db "BARIYA-DO@@"
+
+
+
+
+BattleTowerMons2:
+
+	db UMBREON
+	db LEFTOVERS
+	db PROTECT, TOXIC, MUD_SLAP, ATTRACT
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $cf, $bc ; DVs
+	db 10, 10, 10, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 81 ; HP
+	bigdw 81 ; Max HP
+	bigdw 46 ; Atk
+	bigdw 66 ; Def
+	bigdw 46 ; Spd
+	bigdw 44 ; SAtk
+	bigdw 72 ; SDef
+	db "BURAtuKI-@@"
+
+
+	db STARMIE
+	db GOLD_BERRY
+	db RECOVER, PSYCHIC_M, SURF, PSYCH_UP
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $db, $db ; DVs
+	db 20, 10, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 71 ; HP
+	bigdw 71 ; Max HP
+	bigdw 51 ; Atk
+	bigdw 54 ; Def
+	bigdw 67 ; Spd
+	bigdw 60 ; SAtk
+	bigdw 54 ; SDef
+	db "SUTA-MI-@@@"
+
+
+	db GYARADOS
+	db MIRACLEBERRY
+	db HYPER_BEAM, DRAGON_RAGE, THUNDERBOLT, FIRE_BLAST
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fa, $fd ; DVs
+	db 5, 10, 15, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 83 ; HP
+	bigdw 83 ; Max HP
+	bigdw 72 ; Atk
+	bigdw 51 ; Def
+	bigdw 54 ; Spd
+	bigdw 45 ; SAtk
+	bigdw 61 ; SDef
+	db "GIyaRADOSU@"
+
+
+	db STEELIX
+	db GOLD_BERRY
+	db ROAR, IRON_TAIL, SWAGGER, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 30000
+	bigdw 50000
+	db $ff, $ff ; DVs
+	db 20, 15, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 77 ; HP
+	bigdw 77 ; Max HP
+	bigdw 55 ; Atk
+	bigdw 102 ; Def
+	bigdw 31 ; Spd
+	bigdw 44 ; SAtk
+	bigdw 48 ; SDef
+	db "HAGANE-RU@@"
+
+
+	db ALAKAZAM
+	db BERRY_JUICE
+	db PSYCHIC_M, PSYCH_UP, TOXIC, THUNDERPUNCH
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 30000
+	bigdw 50000
+	bigdw 40000
+	db $fd, $ef ; DVs
+	db 10, 10, 10, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 68 ; HP
+	bigdw 68 ; Max HP
+	bigdw 42 ; Atk
+	bigdw 36 ; Def
+	bigdw 69 ; Spd
+	bigdw 75 ; SAtk
+	bigdw 55 ; SDef
+	db "HU-DEiN@@@@"
+
+
+	db ARCANINE
+	db BRIGHTPOWDER
+	db FLAMETHROWER, ROAR, HYPER_BEAM, IRON_TAIL
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 35000
+	bigdw 45000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	db $db, $fb ; DVs
+	db 15, 20, 5, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 81 ; HP
+	bigdw 81 ; Max HP
+	bigdw 64 ; Atk
+	bigdw 52 ; Def
+	bigdw 60 ; Spd
+	bigdw 60 ; SAtk
+	bigdw 52 ; SDef
+	db "UINDEi@@@@@"
+
+
+	db HERACROSS
+	db FOCUS_BAND
+	db ENDURE, REVERSAL, MEGAHORN, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 30000
+	bigdw 45000
+	bigdw 30000
+	bigdw 45000
+	db $df, $de ; DVs
+	db 10, 15, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 78 ; HP
+	bigdw 78 ; Max HP
+	bigdw 68 ; Atk
+	bigdw 51 ; Def
+	bigdw 52 ; Spd
+	bigdw 37 ; SAtk
+	bigdw 59 ; SDef
+	db "HERAKUROSU@"
+
+
+	db EXEGGUTOR
+	db LEFTOVERS
+	db HYPER_BEAM, PSYCHIC_M, TOXIC, DREAM_EATER
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 45000
+	db $fd, $eb ; DVs
+	db 5, 10, 10, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 83 ; HP
+	bigdw 83 ; Max HP
+	bigdw 60 ; Atk
+	bigdw 55 ; Def
+	bigdw 43 ; Spd
+	bigdw 70 ; SAtk
+	bigdw 46 ; SDef
+	db "NAtuSI-@@@@"
+
+
+	db AERODACTYL
+	db GOLD_BERRY
+	db REST, HYPER_BEAM, EARTHQUAKE, DRAGON_RAGE
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 45000
+	db $fb, $bb ; DVs
+	db 10, 5, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 78 ; HP
+	bigdw 78 ; Max HP
+	bigdw 64 ; Atk
+	bigdw 45 ; Def
+	bigdw 72 ; Spd
+	bigdw 44 ; SAtk
+	bigdw 50 ; SDef
+	db "PUTERA@@@@@"
+
+
+	db BLISSEY
+	db BRIGHTPOWDER
+	db PSYCHIC_M, SUBMISSION, SOFTBOILED, COUNTER
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 30000
+	bigdw 30000
+	bigdw 50000
+	db $bd, $fe ; DVs
+	db 10, 25, 10, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 148 ; HP
+	bigdw 148 ; Max HP
+	bigdw 24 ; Atk
+	bigdw 22 ; Def
+	bigdw 41 ; Spd
+	bigdw 51 ; SAtk
+	bigdw 75 ; SDef
+	db "HAPINASU@@@"
+
+
+	db LAPRAS
+	db GOLD_BERRY
+	db PSYCHIC_M, THUNDERBOLT, BLIZZARD, CONFUSE_RAY
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 30000
+	bigdw 40000
+	bigdw 55000
+	bigdw 30000
+	db $fe, $d7 ; DVs
+	db 10, 15, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 98 ; HP
+	bigdw 98 ; Max HP
+	bigdw 53 ; Atk
+	bigdw 52 ; Def
+	bigdw 45 ; Spd
+	bigdw 50 ; SAtk
+	bigdw 54 ; SDef
+	db "RAPURASU@@@"
+
+
+	db PIKACHU
+	db LIGHT_BALL
+	db THUNDERBOLT, THUNDER_WAVE, STRENGTH, TOXIC
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	db $fc, $fe ; DVs
+	db 15, 20, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 58 ; HP
+	bigdw 58 ; Max HP
+	bigdw 44 ; Atk
+	bigdw 32 ; Def
+	bigdw 58 ; Spd
+	bigdw 41 ; SAtk
+	bigdw 37 ; SDef
+	db "PIKATIyuU@@"
+
+
+	db SCIZOR
+	db FOCUS_BAND
+	db STEEL_WING, SLASH, TOXIC, SANDSTORM
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 45000
+	bigdw 40000
+	bigdw 45000
+	bigdw 50000
+	db $fd, $fe ; DVs
+	db 25, 20, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 73 ; HP
+	bigdw 73 ; Max HP
+	bigdw 73 ; Atk
+	bigdw 60 ; Def
+	bigdw 47 ; Spd
+	bigdw 43 ; SAtk
+	bigdw 53 ; SDef
+	db "HAtuSAMU@@@"
+
+
+	db HITMONCHAN
+	db GOLD_BERRY
+	db THUNDERPUNCH, ICE_PUNCH, FIRE_PUNCH, MEGA_PUNCH
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 35000
+	bigdw 50000
+	bigdw 30000
+	db $fb, $fd ; DVs
+	db 15, 15, 15, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 67 ; HP
+	bigdw 67 ; Max HP
+	bigdw 63 ; Atk
+	bigdw 50 ; Def
+	bigdw 52 ; Spd
+	bigdw 32 ; SAtk
+	bigdw 62 ; SDef
+	db "EBIWARA-@@@"
+
+
+	db TAUROS
+	db BRIGHTPOWDER
+	db THUNDERBOLT, EARTHQUAKE, HYPER_BEAM, BLIZZARD
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 30000
+	bigdw 30000
+	db $fb, $ef ; DVs
+	db 15, 10, 5, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 76 ; HP
+	bigdw 76 ; Max HP
+	bigdw 61 ; Atk
+	bigdw 58 ; Def
+	bigdw 63 ; Spd
+	bigdw 35 ; SAtk
+	bigdw 47 ; SDef
+	db "KENTAROSU@@"
+
+
+	db AZUMARILL
+	db MYSTIC_WATER
+	db SURF, BLIZZARD, ATTRACT, RAIN_DANCE
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	db $ed, $f7 ; DVs
+	db 15, 5, 15, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 82 ; HP
+	bigdw 82 ; Max HP
+	bigdw 40 ; Atk
+	bigdw 52 ; Def
+	bigdw 41 ; Spd
+	bigdw 37 ; SAtk
+	bigdw 49 ; SDef
+	db "MARIRURI@@@"
+
+
+	db MILTANK
+	db KINGS_ROCK
+	db EARTHQUAKE, THUNDER, ATTRACT, SURF
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	db $df, $fe ; DVs
+	db 10, 10, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 83 ; HP
+	bigdw 83 ; Max HP
+	bigdw 52 ; Atk
+	bigdw 63 ; Def
+	bigdw 61 ; Spd
+	bigdw 36 ; SAtk
+	bigdw 48 ; SDef
+	db "MIRUTANKU@@"
+
+
+	db WIGGLYTUFF
+	db GOLD_BERRY
+	db HYPER_BEAM, BLIZZARD, FIRE_BLAST, ATTRACT
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	db $c7, $fe ; DVs
+	db 5, 5, 5, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 98 ; HP
+	bigdw 98 ; Max HP
+	bigdw 47 ; Atk
+	bigdw 35 ; Def
+	bigdw 39 ; Spd
+	bigdw 50 ; SAtk
+	bigdw 40 ; SDef
+	db "PUKURIN@@@@"
+
+
+	db WIGGLYTUFF
+	db PINK_BOW
+	db PSYCHIC_M, SWAGGER, PSYCH_UP, HEADBUTT
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $c7, $77 ; DVs
+	db 10, 15, 10, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 97 ; HP
+	bigdw 97 ; Max HP
+	bigdw 46 ; Atk
+	bigdw 34 ; Def
+	bigdw 34 ; Spd
+	bigdw 46 ; SAtk
+	bigdw 36 ; SDef
+	db "PUKURIN@@@@"
+
+
+	db NIDOKING
+	db BERRY
+	db BLIZZARD, EARTHQUAKE, SURF, THUNDERPUNCH
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $56, $46 ; DVs
+	db 5, 10, 15, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 74 ; HP
+	bigdw 74 ; Max HP
+	bigdw 52 ; Atk
+	bigdw 46 ; Def
+	bigdw 49 ; Spd
+	bigdw 50 ; SAtk
+	bigdw 46 ; SDef
+	db "NIDOKINGU@@"
+
+
+	db QUAGSIRE
+	db QUICK_CLAW
+	db AMNESIA, EARTHQUAKE, SURF, RAIN_DANCE
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $55, $47 ; DVs
+	db 20, 10, 15, 5 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 81 ; HP
+	bigdw 81 ; Max HP
+	bigdw 49 ; Atk
+	bigdw 49 ; Def
+	bigdw 29 ; Spd
+	bigdw 42 ; SAtk
+	bigdw 42 ; SDef
+	db "NUO-@@@@@@@"
+
+
+
+
+BattleTowerMons3:
+
+	db JOLTEON
+	db MIRACLEBERRY
+	db THUNDERBOLT, THUNDER_WAVE, ROAR, MUD_SLAP
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 55000
+	db $db, $ed ; DVs
+	db 15, 20, 20, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 103 ; HP
+	bigdw 103 ; Max HP
+	bigdw 68 ; Atk
+	bigdw 64 ; Def
+	bigdw 107 ; Spd
+	bigdw 96 ; SAtk
+	bigdw 87 ; SDef
+	db "SANDA-SU@@@"
+
+
+	db POLIWRATH
+	db BRIGHTPOWDER
+	db DOUBLE_TEAM, SURF, FISSURE, SUBMISSION
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 55000
+	bigdw 55000
+	bigdw 55000
+	bigdw 50000
+	db $dd, $fb ; DVs
+	db 15, 15, 5, 25 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 119 ; HP
+	bigdw 119 ; Max HP
+	bigdw 81 ; Atk
+	bigdw 87 ; Def
+	bigdw 73 ; Spd
+	bigdw 70 ; SAtk
+	bigdw 82 ; SDef
+	db "NIyoROBON@@"
+
+
+	db STARMIE
+	db LEFTOVERS
+	db THUNDER_WAVE, PSYCHIC_M, RECOVER, SURF
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $ff, $ff ; DVs
+	db 20, 10, 20, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 101 ; HP
+	bigdw 101 ; Max HP
+	bigdw 75 ; Atk
+	bigdw 81 ; Def
+	bigdw 99 ; Spd
+	bigdw 90 ; SAtk
+	bigdw 81 ; SDef
+	db "SUTA-MI-@@@"
+
+
+	db JYNX
+	db GOLD_BERRY
+	db BLIZZARD, LOVELY_KISS, DREAM_EATER, ATTRACT
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 30000
+	bigdw 50000
+	db $fb, $ee ; DVs
+	db 5, 10, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 102 ; HP
+	bigdw 102 ; Max HP
+	bigdw 60 ; Atk
+	bigdw 49 ; Def
+	bigdw 83 ; Spd
+	bigdw 98 ; SAtk
+	bigdw 86 ; SDef
+	db "RU-ZIyuRA@@"
+
+
+	db DUGTRIO
+	db KINGS_ROCK
+	db EARTHQUAKE, SLUDGE_BOMB, SLASH, MUD_SLAP
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 30000
+	bigdw 50000
+	bigdw 50000
+	db $ef, $ff ; DVs
+	db 10, 10, 20, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 81 ; HP
+	bigdw 81 ; Max HP
+	bigdw 77 ; Atk
+	bigdw 56 ; Def
+	bigdw 102 ; Spd
+	bigdw 60 ; SAtk
+	bigdw 72 ; SDef
+	db "DAGUTORIO@@"
+
+
+	db BELLOSSOM
+	db BRIGHTPOWDER
+	db GIGA_DRAIN, SUNNY_DAY, SOLARBEAM, DOUBLE_TEAM
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 45000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	db $df, $db ; DVs
+	db 5, 5, 10, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 109 ; HP
+	bigdw 109 ; Max HP
+	bigdw 76 ; Atk
+	bigdw 81 ; Def
+	bigdw 60 ; Spd
+	bigdw 82 ; SAtk
+	bigdw 88 ; SDef
+	db "KIREIHANA@@"
+
+
+	db BLISSEY
+	db LEFTOVERS
+	db TOXIC, REFLECT, SOFTBOILED, PROTECT
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 30000
+	bigdw 45000
+	bigdw 30000
+	bigdw 45000
+	db $fb, $ed ; DVs
+	db 10, 20, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 217 ; HP
+	bigdw 217 ; Max HP
+	bigdw 32 ; Atk
+	bigdw 33 ; Def
+	bigdw 59 ; Spd
+	bigdw 73 ; SAtk
+	bigdw 109 ; SDef
+	db "HAPINASU@@@"
+
+
+	db HOUNDOOM
+	db CHARCOAL
+	db FLAMETHROWER, CRUNCH, SHADOW_BALL, DREAM_EATER
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 45000
+	db $fd, $ed ; DVs
+	db 15, 15, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 108 ; HP
+	bigdw 108 ; Max HP
+	bigdw 84 ; Atk
+	bigdw 59 ; Def
+	bigdw 86 ; Spd
+	bigdw 94 ; SAtk
+	bigdw 76 ; SDef
+	db "HERUGA-@@@@"
+
+
+	db MACHAMP
+	db MIRACLEBERRY
+	db CROSS_CHOP, ICE_PUNCH, EARTHQUAKE, FIRE_BLAST
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 45000
+	db $fd, $be ; DVs
+	db 5, 15, 10, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 118 ; HP
+	bigdw 118 ; Max HP
+	bigdw 108 ; Atk
+	bigdw 75 ; Def
+	bigdw 61 ; Spd
+	bigdw 68 ; SAtk
+	bigdw 80 ; SDef
+	db "KAIRIKI-@@@"
+
+
+	db CROBAT
+	db GOLD_BERRY
+	db ATTRACT, CONFUSE_RAY, TOXIC, WING_ATTACK
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 30000
+	bigdw 30000
+	bigdw 50000
+	db $ef, $dc ; DVs
+	db 15, 10, 10, 35 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 111 ; HP
+	bigdw 111 ; Max HP
+	bigdw 83 ; Atk
+	bigdw 74 ; Def
+	bigdw 103 ; Spd
+	bigdw 70 ; SAtk
+	bigdw 76 ; SDef
+	db "KUROBAtuTO@"
+
+
+	db PORYGON2
+	db BRIGHTPOWDER
+	db PSYCHIC_M, RECOVER, HYPER_BEAM, TRI_ATTACK
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 30000
+	bigdw 40000
+	bigdw 55000
+	bigdw 30000
+	db $df, $db ; DVs
+	db 10, 20, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 117 ; HP
+	bigdw 117 ; Max HP
+	bigdw 73 ; Atk
+	bigdw 83 ; Def
+	bigdw 66 ; Spd
+	bigdw 87 ; SAtk
+	bigdw 81 ; SDef
+	db "PORIGON2@@@"
+
+
+	db MAROWAK
+	db THICK_CLUB
+	db EARTHQUAKE, RETURN, HYPER_BEAM, BONEMERANG
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 30000
+	db $dd, $eb ; DVs
+	db 10, 20, 5, 10 ; PP
+	db 255 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 99 ; HP
+	bigdw 99 ; Max HP
+	bigdw 77 ; Atk
+	bigdw 94 ; Def
+	bigdw 56 ; Spd
+	bigdw 54 ; SAtk
+	bigdw 72 ; SDef
+	db "GARAGARA@@@"
+
+
+	db ELECTRODE
+	db BRIGHTPOWDER
+	db LIGHT_SCREEN, THUNDERBOLT, PROTECT, THUNDER
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 45000
+	bigdw 40000
+	bigdw 45000
+	bigdw 50000
+	db $bd, $ef ; DVs
+	db 30, 15, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 98 ; HP
+	bigdw 98 ; Max HP
+	bigdw 57 ; Atk
+	bigdw 69 ; Def
+	bigdw 113 ; Spd
+	bigdw 78 ; SAtk
+	bigdw 78 ; SDef
+	db "MARUMAIN@@@"
+
+
+	db LAPRAS
+	db LEFTOVERS
+	db RAIN_DANCE, WATER_GUN, ICY_WIND, STRENGTH
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 35000
+	bigdw 50000
+	bigdw 30000
+	db $fd, $eb ; DVs
+	db 5, 25, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 142 ; HP
+	bigdw 142 ; Max HP
+	bigdw 80 ; Atk
+	bigdw 74 ; Def
+	bigdw 65 ; Spd
+	bigdw 75 ; SAtk
+	bigdw 81 ; SDef
+	db "RAPURASU@@@"
+
+
+	db LANTURN
+	db GOLD_BERRY
+	db RAIN_DANCE, THUNDER, SURF, FLAIL
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 30000
+	bigdw 30000
+	db $dd, $eb ; DVs
+	db 5, 10, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 139 ; HP
+	bigdw 139 ; Max HP
+	bigdw 62 ; Atk
+	bigdw 64 ; Def
+	bigdw 66 ; Spd
+	bigdw 70 ; SAtk
+	bigdw 70 ; SDef
+	db "RANTA-N@@@@"
+
+
+	db ESPEON
+	db MIRACLEBERRY
+	db CONFUSION, SWIFT, TOXIC, PSYCH_UP
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $ef, $f7 ; DVs
+	db 25, 20, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 99 ; HP
+	bigdw 99 ; Max HP
+	bigdw 68 ; Atk
+	bigdw 66 ; Def
+	bigdw 96 ; Spd
+	bigdw 103 ; SAtk
+	bigdw 82 ; SDef
+	db "E-HUi@@@@@@"
+
+
+	db TENTACRUEL
+	db KINGS_ROCK
+	db WRAP, TOXIC, SLUDGE_BOMB, BUBBLEBEAM
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 47000
+	bigdw 45000
+	db $fe, $fe ; DVs
+	db 20, 10, 10, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 110 ; HP
+	bigdw 110 ; Max HP
+	bigdw 71 ; Atk
+	bigdw 68 ; Def
+	bigdw 90 ; Spd
+	bigdw 77 ; SAtk
+	bigdw 101 ; SDef
+	db "DOKUKURAGE@"
+
+
+	db GENGAR
+	db GOLD_BERRY
+	db THIEF, LICK, NIGHT_SHADE, GIGA_DRAIN
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $f7, $f7 ; DVs
+	db 10, 30, 15, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 101 ; HP
+	bigdw 101 ; Max HP
+	bigdw 68 ; Atk
+	bigdw 61 ; Def
+	bigdw 96 ; Spd
+	bigdw 103 ; SAtk
+	bigdw 70 ; SDef
+	db "GENGA-@@@@@"
+
+
+	db URSARING
+	db GOLD_BERRY
+	db HEADBUTT, PROTECT, ROAR, LEER
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $77, $45 ; DVs
+	db 15, 10, 20, 30 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 114 ; HP
+	bigdw 114 ; Max HP
+	bigdw 100 ; Atk
+	bigdw 67 ; Def
+	bigdw 53 ; Spd
+	bigdw 65 ; SAtk
+	bigdw 65 ; SDef
+	db "RINGUMA@@@@"
+
+
+	db FEAROW
+	db BRIGHTPOWDER
+	db MIRROR_MOVE, PURSUIT, PECK, SWIFT
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $67, $77 ; DVs
+	db 20, 20, 35, 20 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 96 ; HP
+	bigdw 96 ; Max HP
+	bigdw 75 ; Atk
+	bigdw 61 ; Def
+	bigdw 82 ; Spd
+	bigdw 58 ; SAtk
+	bigdw 58 ; SDef
+	db "ONIDORIRU@@"
+
+
+	db PRIMEAPE
+	db MIRACLEBERRY
+	db LOW_KICK, KARATE_CHOP, REVERSAL, FOCUS_ENERGY
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $77, $67 ; DVs
+	db 20, 25, 15, 30 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 99 ; HP
+	bigdw 99 ; Max HP
+	bigdw 85 ; Atk
+	bigdw 58 ; Def
+	bigdw 78 ; Spd
+	bigdw 58 ; SAtk
+	bigdw 64 ; SDef
+	db "OKORIZARU@@"
+
+
+
+
+BattleTowerMons4:
+
+	db TAUROS
+	db GOLD_BERRY
+	db RETURN, HYPER_BEAM, EARTHQUAKE, IRON_TAIL
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fd, $fe ; DVs
+	db 20, 5, 10, 15 ; PP
+	db 255 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 143 ; HP
+	bigdw 143 ; Max HP
+	bigdw 119 ; Atk
+	bigdw 113 ; Def
+	bigdw 127 ; Spd
+	bigdw 70 ; SAtk
+	bigdw 94 ; SDef
+	db "KENTAROSU@@"
+
+
+	db KINGDRA
+	db LEFTOVERS
+	db SURF, DRAGONBREATH, HYPER_BEAM, BLIZZARD
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fd, $ef ; DVs
+	db 15, 20, 5, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 142 ; HP
+	bigdw 142 ; Max HP
+	bigdw 115 ; Atk
+	bigdw 113 ; Def
+	bigdw 106 ; Spd
+	bigdw 115 ; SAtk
+	bigdw 115 ; SDef
+	db "KINGUDORA@@"
+
+
+	db SNORLAX
+	db QUICK_CLAW
+	db ATTRACT, BODY_SLAM, PSYCH_UP, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $ed, $dd ; DVs
+	db 15, 15, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 205 ; HP
+	bigdw 205 ; Max HP
+	bigdw 126 ; Atk
+	bigdw 89 ; Def
+	bigdw 61 ; Spd
+	bigdw 89 ; SAtk
+	bigdw 125 ; SDef
+	db "KABIGON@@@@"
+
+
+	db LAPRAS
+	db LEFTOVERS
+	db THUNDERBOLT, ICE_BEAM, CONFUSE_RAY, SURF
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fd, $eb ; DVs
+	db 15, 10, 10, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 186 ; HP
+	bigdw 186 ; Max HP
+	bigdw 107 ; Atk
+	bigdw 101 ; Def
+	bigdw 86 ; Spd
+	bigdw 103 ; SAtk
+	bigdw 111 ; SDef
+	db "RAPURASU@@@"
+
+
+	db STEELIX
+	db GOLD_BERRY
+	db SANDSTORM, IRON_TAIL, EARTHQUAKE, TOXIC
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $ef, $db ; DVs
+	db 10, 15, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 137 ; HP
+	bigdw 137 ; Max HP
+	bigdw 106 ; Atk
+	bigdw 199 ; Def
+	bigdw 61 ; Spd
+	bigdw 79 ; SAtk
+	bigdw 87 ; SDef
+	db "HAGANE-RU@@"
+
+
+	db ALAKAZAM
+	db KINGS_ROCK
+	db PSYCHIC_M, THUNDERPUNCH, RECOVER, FIRE_PUNCH
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	db $dd, $ef ; DVs
+	db 10, 15, 20, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 126 ; HP
+	bigdw 126 ; Max HP
+	bigdw 76 ; Atk
+	bigdw 73 ; Def
+	bigdw 135 ; Spd
+	bigdw 147 ; SAtk
+	bigdw 107 ; SDef
+	db "HU-DEiN@@@@"
+
+
+	db STARMIE
+	db LEFTOVERS
+	db BLIZZARD, THUNDERBOLT, SURF, PSYCHIC_M
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 45000
+	db $fd, $be ; DVs
+	db 5, 15, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 131 ; HP
+	bigdw 131 ; Max HP
+	bigdw 99 ; Atk
+	bigdw 104 ; Def
+	bigdw 127 ; Spd
+	bigdw 117 ; SAtk
+	bigdw 105 ; SDef
+	db "SUTA-MI-@@@"
+
+
+	db WOBBUFFET
+	db GOLD_BERRY
+	db COUNTER, MIRROR_COAT, SAFEGUARD, DESTINY_BOND
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $bf, $e7 ; DVs
+	db 20, 20, 25, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 233 ; HP
+	bigdw 233 ; Max HP
+	bigdw 62 ; Atk
+	bigdw 85 ; Def
+	bigdw 64 ; Spd
+	bigdw 59 ; SAtk
+	bigdw 79 ; SDef
+	db "SO-NANSU@@@"
+
+
+	db GOLEM
+	db FOCUS_BAND
+	db EXPLOSION, EARTHQUAKE, MEGA_PUNCH, ROCK_SLIDE
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 45000
+	db $dd, $ed ; DVs
+	db 5, 10, 20, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 145 ; HP
+	bigdw 145 ; Max HP
+	bigdw 125 ; Atk
+	bigdw 139 ; Def
+	bigdw 74 ; Spd
+	bigdw 80 ; SAtk
+	bigdw 88 ; SDef
+	db "GORO-NIya@@"
+
+
+	db SCIZOR
+	db SCOPE_LENS
+	db SLASH, STEEL_WING, PURSUIT, HYPER_BEAM
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	db $bd, $fe ; DVs
+	db 20, 25, 20, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 139 ; HP
+	bigdw 139 ; Max HP
+	bigdw 139 ; Atk
+	bigdw 117 ; Def
+	bigdw 89 ; Spd
+	bigdw 82 ; SAtk
+	bigdw 102 ; SDef
+	db "HAtuSAMU@@@"
+
+
+	db DUGTRIO
+	db KINGS_ROCK
+	db EARTHQUAKE, HYPER_BEAM, SLUDGE_BOMB, MUD_SLAP
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fe, $bb ; DVs
+	db 10, 5, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 108 ; HP
+	bigdw 108 ; Max HP
+	bigdw 103 ; Atk
+	bigdw 78 ; Def
+	bigdw 131 ; Spd
+	bigdw 75 ; SAtk
+	bigdw 91 ; SDef
+	db "DAGUTORIO@@"
+
+
+	db SLOWBRO
+	db MIRACLEBERRY
+	db SURF, PSYCHIC_M, EARTHQUAKE, BLIZZARD
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	db $bf, $cf ; DVs
+	db 15, 10, 10, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 157 ; HP
+	bigdw 157 ; Max HP
+	bigdw 95 ; Atk
+	bigdw 126 ; Def
+	bigdw 60 ; Spd
+	bigdw 119 ; SAtk
+	bigdw 103 ; SDef
+	db "YADORAN@@@@"
+
+
+	db PORYGON2
+	db NO_ITEM
+	db CONVERSION2, CONVERSION, PSYBEAM, THIEF
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $bc, $ef ; DVs
+	db 30, 30, 20, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 147 ; HP
+	bigdw 147 ; Max HP
+	bigdw 99 ; Atk
+	bigdw 108 ; Def
+	bigdw 86 ; Spd
+	bigdw 123 ; SAtk
+	bigdw 115 ; SDef
+	db "PORIGON2@@@"
+
+
+	db ARCANINE
+	db CHARCOAL
+	db FLAME_WHEEL, LEER, BODY_SLAM, ROAR
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fe, $bb ; DVs
+	db 25, 30, 15, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 152 ; HP
+	bigdw 152 ; Max HP
+	bigdw 127 ; Atk
+	bigdw 102 ; Def
+	bigdw 111 ; Spd
+	bigdw 115 ; SAtk
+	bigdw 99 ; SDef
+	db "UINDEi@@@@@"
+
+
+	db FORRETRESS
+	db LEFTOVERS
+	db RAPID_SPIN, PROTECT, TOXIC, SANDSTORM
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fa, $7f ; DVs
+	db 40, 10, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 140 ; HP
+	bigdw 140 ; Max HP
+	bigdw 111 ; Atk
+	bigdw 147 ; Def
+	bigdw 64 ; Spd
+	bigdw 87 ; SAtk
+	bigdw 87 ; SDef
+	db "HUoRETOSU@@"
+
+
+	db OMASTAR
+	db GOLD_BERRY
+	db CURSE, WATER_GUN, ANCIENTPOWER, ROCK_SMASH
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $ef, $f7 ; DVs
+	db 10, 25, 5, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 133 ; HP
+	bigdw 133 ; Max HP
+	bigdw 86 ; Atk
+	bigdw 139 ; Def
+	bigdw 83 ; Spd
+	bigdw 124 ; SAtk
+	bigdw 88 ; SDef
+	db "OMUSUTA-@@@"
+
+
+	db CHARIZARD
+	db KINGS_ROCK
+	db FIRE_SPIN, DRAGON_RAGE, FLY, SLASH
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fe, $fe ; DVs
+	db 15, 10, 15, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 142 ; HP
+	bigdw 142 ; Max HP
+	bigdw 106 ; Atk
+	bigdw 100 ; Def
+	bigdw 119 ; Spd
+	bigdw 125 ; SAtk
+	bigdw 106 ; SDef
+	db "RIZA-DON@@@"
+
+
+	db EXEGGUTOR
+	db BRIGHTPOWDER
+	db EGG_BOMB, STOMP, PSYCH_UP, CONFUSION
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $f7, $e7 ; DVs
+	db 10, 20, 10, 25 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 158 ; HP
+	bigdw 158 ; Max HP
+	bigdw 115 ; Atk
+	bigdw 100 ; Def
+	bigdw 82 ; Spd
+	bigdw 132 ; SAtk
+	bigdw 84 ; SDef
+	db "NAtuSI-@@@@"
+
+
+	db HYPNO
+	db BRIGHTPOWDER
+	db CONFUSION, THUNDERPUNCH, HEADBUTT, DISABLE
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $77, $7a ; DVs
+	db 25, 15, 15, 20 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 146 ; HP
+	bigdw 146 ; Max HP
+	bigdw 86 ; Atk
+	bigdw 83 ; Def
+	bigdw 81 ; Spd
+	bigdw 88 ; SAtk
+	bigdw 122 ; SDef
+	db "SURI-PA-@@@"
+
+
+	db MUK
+	db QUICK_CLAW
+	db SCREECH, TOXIC, SLUDGE, HARDEN
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $75, $6b ; DVs
+	db 40, 10, 20, 30 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 161 ; HP
+	bigdw 161 ; Max HP
+	bigdw 111 ; Atk
+	bigdw 86 ; Def
+	bigdw 67 ; Spd
+	bigdw 83 ; SAtk
+	bigdw 111 ; SDef
+	db "BETOBETON@@"
+
+
+	db ELECTABUZZ
+	db KINGS_ROCK
+	db LIGHT_SCREEN, THUNDERPUNCH, SWIFT, SNORE
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $65, $77 ; DVs
+	db 30, 15, 20, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 124 ; HP
+	bigdw 124 ; Max HP
+	bigdw 93 ; Atk
+	bigdw 71 ; Def
+	bigdw 111 ; Spd
+	bigdw 103 ; SAtk
+	bigdw 95 ; SDef
+	db "EREBU-@@@@@"
+
+
+
+
+BattleTowerMons5:
+
+	db KINGDRA
+	db GOLD_BERRY
+	db SURF, HYPER_BEAM, BLIZZARD, DRAGONBREATH
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 55000
+	bigdw 60000
+	bigdw 50000
+	bigdw 55000
+	db $dd, $ff ; DVs
+	db 15, 5, 5, 20 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 179 ; HP
+	bigdw 179 ; Max HP
+	bigdw 142 ; Atk
+	bigdw 143 ; Def
+	bigdw 132 ; Spd
+	bigdw 144 ; SAtk
+	bigdw 144 ; SDef
+	db "KINGUDORA@@"
+
+
+	db HOUNDOOM
+	db MIRACLEBERRY
+	db REST, CRUNCH, DREAM_EATER, FLAMETHROWER
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 50000
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	db $dd, $fc ; DVs
+	db 10, 15, 15, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 178 ; HP
+	bigdw 178 ; Max HP
+	bigdw 135 ; Atk
+	bigdw 98 ; Def
+	bigdw 145 ; Spd
+	bigdw 157 ; SAtk
+	bigdw 127 ; SDef
+	db "HERUGA-@@@@"
+
+
+	db SHUCKLE
+	db LEFTOVERS
+	db SANDSTORM, REST, TOXIC, WRAP
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	bigdw 55000
+	db $fd, $cf ; DVs
+	db 10, 10, 10, 20 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 123 ; HP
+	bigdw 123 ; Max HP
+	bigdw 60 ; Atk
+	bigdw 278 ; Def
+	bigdw 52 ; Spd
+	bigdw 59 ; SAtk
+	bigdw 279 ; SDef
+	db "TUBOTUBO@@@"
+
+
+	db SNORLAX
+	db LEFTOVERS
+	db HYPER_BEAM, EARTHQUAKE, SURF, PSYCH_UP
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 60000
+	bigdw 55000
+	bigdw 55000
+	bigdw 60000
+	bigdw 55000
+	db $fd, $ef ; DVs
+	db 5, 10, 15, 10 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 263 ; HP
+	bigdw 263 ; Max HP
+	bigdw 159 ; Atk
+	bigdw 112 ; Def
+	bigdw 79 ; Spd
+	bigdw 114 ; SAtk
+	bigdw 159 ; SDef
+	db "KABIGON@@@@"
+
+
+	db LAPRAS
+	db GOLD_BERRY
+	db THUNDERBOLT, SURF, CONFUSE_RAY, BLIZZARD
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 60000
+	bigdw 60000
+	bigdw 55000
+	bigdw 60000
+	db $dd, $dd ; DVs
+	db 15, 15, 10, 5 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 234 ; HP
+	bigdw 234 ; Max HP
+	bigdw 133 ; Atk
+	bigdw 128 ; Def
+	bigdw 107 ; Spd
+	bigdw 133 ; SAtk
+	bigdw 143 ; SDef
+	db "RAPURASU@@@"
+
+
+	db JOLTEON
+	db KINGS_ROCK
+	db THUNDERBOLT, THUNDER_WAVE, SHADOW_BALL, HIDDEN_POWER
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 60000
+	bigdw 57000
+	bigdw 55000
+	bigdw 55000
+	db $ed, $ff ; DVs
+	db 15, 20, 15, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 161 ; HP
+	bigdw 161 ; Max HP
+	bigdw 114 ; Atk
+	bigdw 107 ; Def
+	bigdw 179 ; Spd
+	bigdw 159 ; SAtk
+	bigdw 144 ; SDef
+	db "SANDA-SU@@@"
+
+
+	db SCIZOR
+	db LEFTOVERS
+	db HYPER_BEAM, SLASH, AGILITY, METAL_CLAW
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 45000
+	db $df, $ed ; DVs
+	db 5, 20, 30, 35 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 169 ; HP
+	bigdw 169 ; Max HP
+	bigdw 175 ; Atk
+	bigdw 145 ; Def
+	bigdw 111 ; Spd
+	bigdw 99 ; SAtk
+	bigdw 124 ; SDef
+	db "HAtuSAMU@@@"
+
+
+	db SLOWKING
+	db MINT_BERRY
+	db REST, SURF, PSYCHIC_M, AMNESIA
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 40000
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	db $df, $de ; DVs
+	db 10, 15, 10, 20 ; PP
+	db 15 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 196 ; HP
+	bigdw 196 ; Max HP
+	bigdw 118 ; Atk
+	bigdw 126 ; Def
+	bigdw 75 ; Spd
+	bigdw 146 ; SAtk
+	bigdw 156 ; SDef
+	db "YADOKINGU@@"
+
+
+	db MACHAMP
+	db GOLD_BERRY
+	db CROSS_CHOP, EARTHQUAKE, FIRE_BLAST, THUNDERPUNCH
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 45000
+	bigdw 50000
+	bigdw 40000
+	bigdw 44000
+	db $ff, $ec ; DVs
+	db 5, 10, 5, 15 ; PP
+	db 13 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 187 ; HP
+	bigdw 187 ; Max HP
+	bigdw 176 ; Atk
+	bigdw 127 ; Def
+	bigdw 99 ; Spd
+	bigdw 108 ; SAtk
+	bigdw 128 ; SDef
+	db "KAIRIKI-@@@"
+
+
+	db STARMIE
+	db SCOPE_LENS
+	db THUNDER_WAVE, RECOVER, THUNDERBOLT, SURF
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 44000
+	bigdw 40000
+	bigdw 45000
+	bigdw 40000
+	db $ff, $ff ; DVs
+	db 20, 20, 15, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 161 ; HP
+	bigdw 161 ; Max HP
+	bigdw 121 ; Atk
+	bigdw 130 ; Def
+	bigdw 161 ; Spd
+	bigdw 145 ; SAtk
+	bigdw 130 ; SDef
+	db "SUTA-MI-@@@"
+
+
+	db DUGTRIO
+	db KINGS_ROCK
+	db EARTHQUAKE, SLASH, HYPER_BEAM, SLUDGE_BOMB
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 40000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	db $f7, $fe ; DVs
+	db 10, 20, 5, 10 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 135 ; HP
+	bigdw 135 ; Max HP
+	bigdw 125 ; Atk
+	bigdw 89 ; Def
+	bigdw 166 ; Spd
+	bigdw 96 ; SAtk
+	bigdw 116 ; SDef
+	db "DAGUTORIO@@"
+
+
+	db ELECTRODE
+	db MIRACLEBERRY
+	db THUNDERBOLT, EXPLOSION, MIRROR_COAT, REST
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 54000
+	bigdw 40000
+	bigdw 50000
+	db $7d, $fe ; DVs
+	db 15, 5, 20, 10 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 161 ; HP
+	bigdw 161 ; Max HP
+	bigdw 88 ; Atk
+	bigdw 117 ; Def
+	bigdw 185 ; Spd
+	bigdw 126 ; SAtk
+	bigdw 126 ; SDef
+	db "MARUMAIN@@@"
+
+
+	db AERODACTYL
+	db KINGS_ROCK
+	db HYPER_BEAM, EARTHQUAKE, FIRE_BLAST, IRON_TAIL
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 45000
+	db $fd, $dd ; DVs
+	db 5, 10, 5, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 181 ; HP
+	bigdw 181 ; Max HP
+	bigdw 152 ; Atk
+	bigdw 110 ; Def
+	bigdw 174 ; Spd
+	bigdw 104 ; SAtk
+	bigdw 119 ; SDef
+	db "PUTERA@@@@@"
+
+
+	db CROBAT
+	db LEFTOVERS
+	db CONFUSE_RAY, ATTRACT, HYPER_BEAM, TOXIC
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 40000
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	db $ef, $ff ; DVs
+	db 10, 15, 5, 10 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 178 ; HP
+	bigdw 178 ; Max HP
+	bigdw 134 ; Atk
+	bigdw 127 ; Def
+	bigdw 175 ; Spd
+	bigdw 117 ; SAtk
+	bigdw 127 ; SDef
+	db "KUROBAtuTO@"
+
+
+	db ZAPDOS
+	db MIRACLEBERRY
+	db DRILL_PECK, THUNDERBOLT, THUNDER_WAVE, HYPER_BEAM
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 45000
+	bigdw 40000
+	bigdw 50000
+	db $fd, $de ; DVs
+	db 20, 15, 20, 5 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 190 ; HP
+	bigdw 190 ; Max HP
+	bigdw 137 ; Atk
+	bigdw 129 ; Def
+	bigdw 143 ; Spd
+	bigdw 171 ; SAtk
+	bigdw 136 ; SDef
+	db "SANDA-@@@@@"
+
+
+	db SKARMORY
+	db GOLD_BERRY
+	db SANDSTORM, FLY, STEEL_WING, TOXIC
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 40000
+	db $d7, $ed ; DVs
+	db 10, 15, 25, 10 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 164 ; HP
+	bigdw 164 ; Max HP
+	bigdw 125 ; Atk
+	bigdw 179 ; Def
+	bigdw 116 ; Spd
+	bigdw 83 ; SAtk
+	bigdw 113 ; SDef
+	db "EA-MUDO@@@@"
+
+
+	db FORRETRESS
+	db LEFTOVERS
+	db SANDSTORM, TOXIC, EXPLOSION, SWAGGER
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 55000
+	bigdw 45000
+	bigdw 40000
+	db $cf, $dd ; DVs
+	db 10, 10, 5, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 169 ; HP
+	bigdw 169 ; Max HP
+	bigdw 134 ; Atk
+	bigdw 189 ; Def
+	bigdw 84 ; Spd
+	bigdw 103 ; SAtk
+	bigdw 103 ; SDef
+	db "HUoRETOSU@@"
+
+
+	db STEELIX
+	db MIRACLEBERRY
+	db SANDSTORM, IRON_TAIL, REST, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 40000
+	bigdw 45000
+	db $dd, $dd ; DVs
+	db 10, 15, 10, 10 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 176 ; HP
+	bigdw 176 ; Max HP
+	bigdw 130 ; Atk
+	bigdw 245 ; Def
+	bigdw 73 ; Spd
+	bigdw 99 ; SAtk
+	bigdw 109 ; SDef
+	db "HAGANE-RU@@"
+
+
+	db GIRAFARIG
+	db SCOPE_LENS
+	db DREAM_EATER, CRUNCH, PSYCHIC_M, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	db $45, $56 ; DVs
+	db 15, 15, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 161 ; HP
+	bigdw 161 ; Max HP
+	bigdw 114 ; Atk
+	bigdw 100 ; Def
+	bigdw 120 ; Spd
+	bigdw 126 ; SAtk
+	bigdw 101 ; SDef
+	db "KIRINRIKI@@"
+
+
+	db GYARADOS
+	db MIRACLEBERRY
+	db HYPER_BEAM, SURF, RAIN_DANCE, ZAP_CANNON
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	db $75, $65 ; DVs
+	db 5, 15, 5, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 193 ; HP
+	bigdw 193 ; Max HP
+	bigdw 162 ; Atk
+	bigdw 114 ; Def
+	bigdw 117 ; Spd
+	bigdw 95 ; SAtk
+	bigdw 135 ; SDef
+	db "GIyaRADOSU@"
+
+
+	db ARTICUNO
+	db GOLD_BERRY
+	db BLIZZARD, HYPER_BEAM, ROAR, ICY_WIND
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	db $45, $56 ; DVs
+	db 5, 5, 20, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 181 ; HP
+	bigdw 181 ; Max HP
+	bigdw 119 ; Atk
+	bigdw 135 ; Def
+	bigdw 120 ; Spd
+	bigdw 131 ; SAtk
+	bigdw 161 ; SDef
+	db "HURI-ZA-@@@"
+
+
+
+
+BattleTowerMons6:
+
+	db KINGDRA
+	db LEFTOVERS
+	db DRAGONBREATH, SURF, HYPER_BEAM, BLIZZARD
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 55000
+	bigdw 50000
+	bigdw 60000
+	bigdw 60000
+	db $dd, $fe ; DVs
+	db 20, 15, 5, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 211 ; HP
+	bigdw 211 ; Max HP
+	bigdw 169 ; Atk
+	bigdw 167 ; Def
+	bigdw 161 ; Spd
+	bigdw 172 ; SAtk
+	bigdw 172 ; SDef
+	db "KINGUDORA@@"
+
+
+	db TYRANITAR
+	db GOLD_BERRY
+	db CRUNCH, EARTHQUAKE, ROCK_SLIDE, HYPER_BEAM
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 60000
+	bigdw 55000
+	bigdw 60000
+	bigdw 55000
+	db $fd, $ed ; DVs
+	db 15, 10, 10, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 240 ; HP
+	bigdw 240 ; Max HP
+	bigdw 220 ; Atk
+	bigdw 187 ; Def
+	bigdw 131 ; Spd
+	bigdw 169 ; SAtk
+	bigdw 175 ; SDef
+	db "BANGIRASU@@"
+
+
+	db HOUNDOOM
+	db MIRACLEBERRY
+	db FLAMETHROWER, CRUNCH, DREAM_EATER, REST
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 60000
+	bigdw 55000
+	bigdw 55000
+	bigdw 60000
+	bigdw 55000
+	db $fb, $ef ; DVs
+	db 15, 15, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 212 ; HP
+	bigdw 212 ; Max HP
+	bigdw 165 ; Atk
+	bigdw 113 ; Def
+	bigdw 172 ; Spd
+	bigdw 189 ; SAtk
+	bigdw 153 ; SDef
+	db "HERUGA-@@@@"
+
+
+	db PORYGON2
+	db LEFTOVERS
+	db BLIZZARD, RECOVER, TOXIC, PSYCHIC_M
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 55000
+	db $dd, $de ; DVs
+	db 5, 20, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 223 ; HP
+	bigdw 223 ; Max HP
+	bigdw 149 ; Atk
+	bigdw 161 ; Def
+	bigdw 125 ; Spd
+	bigdw 182 ; SAtk
+	bigdw 170 ; SDef
+	db "PORIGON2@@@"
+
+
+	db MACHAMP
+	db QUICK_CLAW
+	db FIRE_PUNCH, CROSS_CHOP, THUNDERPUNCH, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	db $fd, $ef ; DVs
+	db 15, 5, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 226 ; HP
+	bigdw 226 ; Max HP
+	bigdw 212 ; Atk
+	bigdw 148 ; Def
+	bigdw 120 ; Spd
+	bigdw 134 ; SAtk
+	bigdw 158 ; SDef
+	db "KAIRIKI-@@@"
+
+
+	db ZAPDOS
+	db MINT_BERRY
+	db REST, DRILL_PECK, THUNDERBOLT, THUNDER_WAVE
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	db $dd, $fd ; DVs
+	db 10, 20, 15, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 229 ; HP
+	bigdw 229 ; Max HP
+	bigdw 160 ; Atk
+	bigdw 155 ; Def
+	bigdw 177 ; Spd
+	bigdw 203 ; SAtk
+	bigdw 161 ; SDef
+	db "SANDA-@@@@@"
+
+
+	db WOBBUFFET
+	db GOLD_BERRY
+	db COUNTER, MIRROR_COAT, DESTINY_BOND, SAFEGUARD
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 45000
+	db $fd, $ed ; DVs
+	db 20, 20, 5, 25 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 346 ; HP
+	bigdw 346 ; Max HP
+	bigdw 95 ; Atk
+	bigdw 122 ; Def
+	bigdw 94 ; Spd
+	bigdw 92 ; SAtk
+	bigdw 122 ; SDef
+	db "SO-NANSU@@@"
+
+
+	db AERODACTYL
+	db LEFTOVERS
+	db HYPER_BEAM, SUPERSONIC, EARTHQUAKE, BITE
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 45000
+	db $fd, $dd ; DVs
+	db 5, 20, 10, 25 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 215 ; HP
+	bigdw 215 ; Max HP
+	bigdw 182 ; Atk
+	bigdw 131 ; Def
+	bigdw 208 ; Spd
+	bigdw 124 ; SAtk
+	bigdw 142 ; SDef
+	db "PUTERA@@@@@"
+
+
+	db DRAGONITE
+	db MIRACLEBERRY
+	db HYPER_BEAM, ICY_WIND, THUNDERBOLT, SURF
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 45000
+	db $dd, $fd ; DVs
+	db 5, 15, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 229 ; HP
+	bigdw 229 ; Max HP
+	bigdw 214 ; Atk
+	bigdw 164 ; Def
+	bigdw 152 ; Spd
+	bigdw 172 ; SAtk
+	bigdw 172 ; SDef
+	db "KAIRIyu-@@@"
+
+
+	db UMBREON
+	db GOLD_BERRY
+	db MUD_SLAP, MOONLIGHT, PSYCHIC_M, FAINT_ATTACK
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fd, $ef ; DVs
+	db 10, 5, 10, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 232 ; HP
+	bigdw 232 ; Max HP
+	bigdw 134 ; Atk
+	bigdw 185 ; Def
+	bigdw 132 ; Spd
+	bigdw 128 ; SAtk
+	bigdw 212 ; SDef
+	db "BURAtuKI-@@"
+
+
+	db ARCANINE
+	db CHARCOAL
+	db FLAMETHROWER, CRUNCH, EXTREMESPEED, IRON_TAIL
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 50000
+	bigdw 40000
+	bigdw 55000
+	bigdw 50000
+	db $fd, $ed ; DVs
+	db 15, 15, 5, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 228 ; HP
+	bigdw 228 ; Max HP
+	bigdw 188 ; Atk
+	bigdw 146 ; Def
+	bigdw 170 ; Spd
+	bigdw 173 ; SAtk
+	bigdw 149 ; SDef
+	db "UINDEi@@@@@"
+
+
+	db SKARMORY
+	db MIRACLEBERRY
+	db STEEL_WING, FLY, TOXIC, PROTECT
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	db $fb, $eb ; DVs
+	db 25, 15, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 196 ; HP
+	bigdw 196 ; Max HP
+	bigdw 152 ; Atk
+	bigdw 218 ; Def
+	bigdw 138 ; Spd
+	bigdw 99 ; SAtk
+	bigdw 135 ; SDef
+	db "EA-MUDO@@@@"
+
+
+	db BLISSEY
+	db LEFTOVERS
+	db SOFTBOILED, TOXIC, PROTECT, PSYCHIC_M
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	db $fb, $cd ; DVs
+	db 10, 10, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 424 ; HP
+	bigdw 424 ; Max HP
+	bigdw 66 ; Atk
+	bigdw 63 ; Def
+	bigdw 117 ; Spd
+	bigdw 143 ; SAtk
+	bigdw 215 ; SDef
+	db "HAPINASU@@@"
+
+
+	db SNORLAX
+	db PINK_BOW
+	db ROCK_SLIDE, SURF, BODY_SLAM, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fa, $fc ; DVs
+	db 10, 15, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 307 ; HP
+	bigdw 307 ; Max HP
+	bigdw 186 ; Atk
+	bigdw 128 ; Def
+	bigdw 92 ; Spd
+	bigdw 130 ; SAtk
+	bigdw 184 ; SDef
+	db "KABIGON@@@@"
+
+
+	db HERACROSS
+	db FOCUS_BAND
+	db REVERSAL, MEGAHORN, EARTHQUAKE, COUNTER
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $df, $ed ; DVs
+	db 15, 10, 10, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 214 ; HP
+	bigdw 214 ; Max HP
+	bigdw 200 ; Atk
+	bigdw 146 ; Def
+	bigdw 156 ; Spd
+	bigdw 101 ; SAtk
+	bigdw 167 ; SDef
+	db "HERAKUROSU@"
+
+
+	db JYNX
+	db MIRACLEBERRY
+	db BLIZZARD, PSYCHIC_M, SHADOW_BALL, ICY_WIND
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $ff, $eb ; DVs
+	db 5, 10, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 196 ; HP
+	bigdw 196 ; Max HP
+	bigdw 116 ; Atk
+	bigdw 98 ; Def
+	bigdw 168 ; Spd
+	bigdw 189 ; SAtk
+	bigdw 165 ; SDef
+	db "RU-ZIyuRA@@"
+
+
+	db BLASTOISE
+	db GOLD_BERRY
+	db SURF, EARTHQUAKE, RAPID_SPIN, BLIZZARD
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fe, $fe ; DVs
+	db 15, 10, 40, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 209 ; HP
+	bigdw 209 ; Max HP
+	bigdw 155 ; Atk
+	bigdw 174 ; Def
+	bigdw 149 ; Spd
+	bigdw 156 ; SAtk
+	bigdw 180 ; SDef
+	db "KAMEtuKUSU@"
+
+
+	db RHYDON
+	db QUICK_CLAW
+	db EARTHQUAKE, SURF, IRON_TAIL, ROCK_SLIDE
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fb, $fa ; DVs
+	db 10, 15, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 245 ; HP
+	bigdw 245 ; Max HP
+	bigdw 212 ; Atk
+	bigdw 195 ; Def
+	bigdw 104 ; Spd
+	bigdw 104 ; SAtk
+	bigdw 104 ; SDef
+	db "SAIDON@@@@@"
+
+
+	db SANDSLASH
+	db SCOPE_LENS
+	db EARTHQUAKE, SLASH, HYPER_BEAM, SNORE
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $b7, $67 ; DVs
+	db 10, 20, 5, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 201 ; HP
+	bigdw 201 ; Max HP
+	bigdw 164 ; Atk
+	bigdw 171 ; Def
+	bigdw 116 ; Spd
+	bigdw 93 ; SAtk
+	bigdw 105 ; SDef
+	db "SANDOPAN@@@"
+
+
+	db PARASECT
+	db GOLD_BERRY
+	db SPORE, GIGA_DRAIN, HYPER_BEAM, SLUDGE_BOMB
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $66, $5f ; DVs
+	db 15, 5, 5, 10 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 171 ; HP
+	bigdw 171 ; Max HP
+	bigdw 152 ; Atk
+	bigdw 134 ; Def
+	bigdw 72 ; Spd
+	bigdw 120 ; SAtk
+	bigdw 144 ; SDef
+	db "PARASEKUTO@"
+
+
+	db GOLEM
+	db BRIGHTPOWDER
+	db EXPLOSION, EARTHQUAKE, FIRE_PUNCH, FRUSTRATION
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $76, $57 ; DVs
+	db 5, 10, 15, 20 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 205 ; HP
+	bigdw 205 ; Max HP
+	bigdw 171 ; Atk
+	bigdw 194 ; Def
+	bigdw 90 ; Spd
+	bigdw 105 ; SAtk
+	bigdw 117 ; SDef
+	db "GORO-NIya@@"
+
+
+
+
+BattleTowerMons7:
+
+	db JOLTEON
+	db MIRACLEBERRY
+	db THUNDERBOLT, HYPER_BEAM, SHADOW_BALL, ROAR
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 60000
+	bigdw 56000
+	bigdw 55000
+	bigdw 50000
+	bigdw 60000
+	db $fb, $ef ; DVs
+	db 15, 5, 15, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 231 ; HP
+	bigdw 231 ; Max HP
+	bigdw 158 ; Atk
+	bigdw 145 ; Def
+	bigdw 245 ; Spd
+	bigdw 222 ; SAtk
+	bigdw 201 ; SDef
+	db "SANDA-SU@@@"
+
+
+	db VAPOREON
+	db LEFTOVERS
+	db BLIZZARD, SHADOW_BALL, SURF, MUD_SLAP
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 60000
+	bigdw 60000
+	bigdw 50000
+	db $bf, $ef ; DVs
+	db 5, 15, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 318 ; HP
+	bigdw 318 ; Max HP
+	bigdw 149 ; Atk
+	bigdw 152 ; Def
+	bigdw 158 ; Spd
+	bigdw 218 ; SAtk
+	bigdw 197 ; SDef
+	db "SIyaWA-ZU@@"
+
+
+	db UMBREON
+	db GOLD_BERRY
+	db FAINT_ATTACK, MOONLIGHT, PSYCH_UP, TOXIC
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 54000
+	bigdw 60000
+	bigdw 55000
+	bigdw 50000
+	bigdw 58000
+	db $dd, $dd ; DVs
+	db 20, 5, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 274 ; HP
+	bigdw 274 ; Max HP
+	bigdw 156 ; Atk
+	bigdw 217 ; Def
+	bigdw 152 ; Spd
+	bigdw 149 ; SAtk
+	bigdw 247 ; SDef
+	db "BURAtuKI-@@"
+
+
+	db BLISSEY
+	db GOLD_BERRY
+	db COUNTER, SOFTBOILED, SHADOW_BALL, THUNDERBOLT
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 55000
+	bigdw 55000
+	bigdw 58000
+	bigdw 50000
+	db $df, $ed ; DVs
+	db 20, 10, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 495 ; HP
+	bigdw 495 ; Max HP
+	bigdw 77 ; Atk
+	bigdw 80 ; Def
+	bigdw 143 ; Spd
+	bigdw 166 ; SAtk
+	bigdw 250 ; SDef
+	db "HAPINASU@@@"
+
+
+	db SNORLAX
+	db LEFTOVERS
+	db ROCK_SLIDE, EARTHQUAKE, BLIZZARD, SHADOW_BALL
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 55000
+	bigdw 60000
+	bigdw 55000
+	bigdw 50000
+	db $dd, $dd ; DVs
+	db 10, 10, 5, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 365 ; HP
+	bigdw 365 ; Max HP
+	bigdw 217 ; Atk
+	bigdw 156 ; Def
+	bigdw 105 ; Spd
+	bigdw 152 ; SAtk
+	bigdw 215 ; SDef
+	db "KABIGON@@@@"
+
+
+	db HOUNDOOM
+	db KINGS_ROCK
+	db CRUNCH, FLAMETHROWER, FAINT_ATTACK, ROAR
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 58000
+	bigdw 50000
+	bigdw 55000
+	bigdw 60000
+	bigdw 55000
+	db $dd, $cd ; DVs
+	db 15, 15, 20, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 245 ; HP
+	bigdw 245 ; Max HP
+	bigdw 187 ; Atk
+	bigdw 133 ; Def
+	bigdw 197 ; Spd
+	bigdw 217 ; SAtk
+	bigdw 175 ; SDef
+	db "HERUGA-@@@@"
+
+
+	db TYRANITAR
+	db LEFTOVERS
+	db EARTHQUAKE, CRUNCH, ROCK_SLIDE, HYPER_BEAM
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 45000
+	bigdw 50000
+	bigdw 45000
+	db $db, $df ; DVs
+	db 10, 15, 10, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 279 ; HP
+	bigdw 279 ; Max HP
+	bigdw 247 ; Atk
+	bigdw 211 ; Def
+	bigdw 147 ; Spd
+	bigdw 196 ; SAtk
+	bigdw 203 ; SDef
+	db "BANGIRASU@@"
+
+
+	db ZAPDOS
+	db GOLD_BERRY
+	db THUNDERBOLT, DRILL_PECK, THUNDER_WAVE, HYPER_BEAM
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 45000
+	db $db, $df ; DVs
+	db 15, 20, 20, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 264 ; HP
+	bigdw 264 ; Max HP
+	bigdw 187 ; Atk
+	bigdw 177 ; Def
+	bigdw 200 ; Spd
+	bigdw 238 ; SAtk
+	bigdw 189 ; SDef
+	db "SANDA-@@@@@"
+
+
+	db EXEGGUTOR
+	db MIRACLEBERRY
+	db REST, EXPLOSION, PSYCHIC_M, GIGA_DRAIN
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 45000
+	db $dd, $ed ; DVs
+	db 10, 5, 10, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 268 ; HP
+	bigdw 268 ; Max HP
+	bigdw 194 ; Atk
+	bigdw 177 ; Def
+	bigdw 140 ; Spd
+	bigdw 235 ; SAtk
+	bigdw 151 ; SDef
+	db "NAtuSI-@@@@"
+
+
+	db UMBREON
+	db GOLD_BERRY
+	db MOONLIGHT, FAINT_ATTACK, PSYCHIC_M, SHADOW_BALL
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 45000
+	bigdw 50000
+	db $fd, $eb ; DVs
+	db 5, 20, 10, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 269 ; HP
+	bigdw 269 ; Max HP
+	bigdw 155 ; Atk
+	bigdw 214 ; Def
+	bigdw 152 ; Spd
+	bigdw 142 ; SAtk
+	bigdw 240 ; SDef
+	db "BURAtuKI-@@"
+
+
+	db GYARADOS
+	db BRIGHTPOWDER
+	db SURF, THUNDERBOLT, HYPER_BEAM, ROAR
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 45000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	db $db, $ef ; DVs
+	db 15, 15, 5, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 271 ; HP
+	bigdw 271 ; Max HP
+	bigdw 235 ; Atk
+	bigdw 169 ; Def
+	bigdw 178 ; Spd
+	bigdw 148 ; SAtk
+	bigdw 204 ; SDef
+	db "GIyaRADOSU@"
+
+
+	db QUAGSIRE
+	db MIRACLEBERRY
+	db EARTHQUAKE, SURF, SLUDGE_BOMB, IRON_TAIL
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	db $de, $dd ; DVs
+	db 10, 15, 10, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 266 ; HP
+	bigdw 266 ; Max HP
+	bigdw 180 ; Atk
+	bigdw 180 ; Def
+	bigdw 110 ; Spd
+	bigdw 152 ; SAtk
+	bigdw 152 ; SDef
+	db "NUO-@@@@@@@"
+
+
+	db URSARING
+	db SCOPE_LENS
+	db SLASH, EARTHQUAKE, HYPER_BEAM, THUNDERPUNCH
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	db $fd, $ed ; DVs
+	db 20, 10, 5, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 262 ; HP
+	bigdw 262 ; Max HP
+	bigdw 245 ; Atk
+	bigdw 166 ; Def
+	bigdw 138 ; Spd
+	bigdw 166 ; SAtk
+	bigdw 166 ; SDef
+	db "RINGUMA@@@@"
+
+
+	db MR__MIME
+	db KINGS_ROCK
+	db REFLECT, FIRE_PUNCH, PSYCHIC_M, ENCORE
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	db $bd, $fb ; DVs
+	db 20, 15, 10, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 195 ; HP
+	bigdw 195 ; Max HP
+	bigdw 120 ; Atk
+	bigdw 151 ; Def
+	bigdw 190 ; Spd
+	bigdw 198 ; SAtk
+	bigdw 226 ; SDef
+	db "BARIYA-DO@@"
+
+
+	db PRIMEAPE
+	db QUICK_CLAW
+	db CROSS_CHOP, ICE_PUNCH, THUNDERPUNCH, ROCK_SLIDE
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $bd, $ef ; DVs
+	db 5, 15, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 227 ; HP
+	bigdw 227 ; Max HP
+	bigdw 202 ; Atk
+	bigdw 145 ; Def
+	bigdw 196 ; Spd
+	bigdw 148 ; SAtk
+	bigdw 162 ; SDef
+	db "OKORIZARU@@"
+
+
+	db GIRAFARIG
+	db GOLD_BERRY
+	db AGILITY, BATON_PASS, CRUNCH, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fe, $fd ; DVs
+	db 30, 40, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 231 ; HP
+	bigdw 231 ; Max HP
+	bigdw 176 ; Atk
+	bigdw 154 ; Def
+	bigdw 183 ; Spd
+	bigdw 187 ; SAtk
+	bigdw 152 ; SDef
+	db "KIRINRIKI@@"
+
+
+	db HITMONLEE
+	db FOCUS_BAND
+	db REVERSAL, ENDURE, BODY_SLAM, MEGA_KICK
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fe, $fe ; DVs
+	db 15, 10, 15, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 202 ; HP
+	bigdw 202 ; Max HP
+	bigdw 232 ; Atk
+	bigdw 137 ; Def
+	bigdw 186 ; Spd
+	bigdw 112 ; SAtk
+	bigdw 217 ; SDef
+	db "SAWAMURA-@@"
+
+
+	db HERACROSS
+	db BRIGHTPOWDER
+	db REVERSAL, ENDURE, MEGAHORN, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $f7, $f7 ; DVs
+	db 15, 10, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 251 ; HP
+	bigdw 251 ; Max HP
+	bigdw 239 ; Atk
+	bigdw 158 ; Def
+	bigdw 183 ; Spd
+	bigdw 109 ; SAtk
+	bigdw 186 ; SDef
+	db "HERAKUROSU@"
+
+
+	db VENUSAUR
+	db BRIGHTPOWDER
+	db SUNNY_DAY, SOLARBEAM, SYNTHESIS, HYPER_BEAM
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $76, $44 ; DVs
+	db 5, 10, 5, 5 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 233 ; HP
+	bigdw 233 ; Max HP
+	bigdw 159 ; Atk
+	bigdw 159 ; Def
+	bigdw 152 ; Spd
+	bigdw 180 ; SAtk
+	bigdw 180 ; SDef
+	db "HUSIGIBANA@"
+
+
+	db CHARIZARD
+	db SCOPE_LENS
+	db SLASH, EARTHQUAKE, HYPER_BEAM, FLAMETHROWER
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $56, $44 ; DVs
+	db 20, 10, 5, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 230 ; HP
+	bigdw 230 ; Max HP
+	bigdw 159 ; Atk
+	bigdw 152 ; Def
+	bigdw 180 ; Spd
+	bigdw 193 ; SAtk
+	bigdw 159 ; SDef
+	db "RIZA-DON@@@"
+
+
+	db BLASTOISE
+	db QUICK_CLAW
+	db HYDRO_PUMP, ICE_PUNCH, HYPER_BEAM, IRON_TAIL
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $76, $64 ; DVs
+	db 5, 15, 5, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 231 ; HP
+	bigdw 231 ; Max HP
+	bigdw 161 ; Atk
+	bigdw 183 ; Def
+	bigdw 152 ; Spd
+	bigdw 159 ; SAtk
+	bigdw 187 ; SDef
+	db "KAMEtuKUSU@"
+
+
+
+
+BattleTowerMons8:
+
+	db JOLTEON
+	db MIRACLEBERRY
+	db THUNDER_WAVE, THUNDERBOLT, IRON_TAIL, ROAR
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 60000
+	bigdw 55000
+	bigdw 60000
+	bigdw 55000
+	bigdw 55000
+	db $fd, $eb ; DVs
+	db 20, 15, 15, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 263 ; HP
+	bigdw 263 ; Max HP
+	bigdw 179 ; Atk
+	bigdw 170 ; Def
+	bigdw 281 ; Spd
+	bigdw 245 ; SAtk
+	bigdw 221 ; SDef
+	db "SANDA-SU@@@"
+
+
+	db SNORLAX
+	db LEFTOVERS
+	db REST, BELLY_DRUM, SNORE, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 60000
+	bigdw 55000
+	bigdw 50000
+	bigdw 55500
+	bigdw 60000
+	db $db, $ed ; DVs
+	db 10, 10, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 415 ; HP
+	bigdw 415 ; Max HP
+	bigdw 248 ; Atk
+	bigdw 170 ; Def
+	bigdw 121 ; Spd
+	bigdw 178 ; SAtk
+	bigdw 250 ; SDef
+	db "KABIGON@@@@"
+
+
+	db HOUNDOOM
+	db MINT_BERRY
+	db REST, CRUNCH, FLAMETHROWER, SUNNY_DAY
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 50000
+	bigdw 55000
+	bigdw 55000
+	bigdw 55000
+	db $fd, $db ; DVs
+	db 10, 15, 15, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 280 ; HP
+	bigdw 280 ; Max HP
+	bigdw 217 ; Atk
+	bigdw 152 ; Def
+	bigdw 224 ; Spd
+	bigdw 245 ; SAtk
+	bigdw 197 ; SDef
+	db "HERUGA-@@@@"
+
+
+	db TAUROS
+	db GOLD_BERRY
+	db EARTHQUAKE, BODY_SLAM, IRON_TAIL, HYPER_BEAM
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 30000
+	bigdw 50000
+	db $fd, $de ; DVs
+	db 10, 15, 15, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 276 ; HP
+	bigdw 276 ; Max HP
+	bigdw 233 ; Atk
+	bigdw 221 ; Def
+	bigdw 236 ; Spd
+	bigdw 135 ; SAtk
+	bigdw 183 ; SDef
+	db "KENTAROSU@@"
+
+
+	db LAPRAS
+	db MINT_BERRY
+	db REST, SURF, CONFUSE_RAY, PSYCHIC_M
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	db $df, $db ; DVs
+	db 10, 15, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 366 ; HP
+	bigdw 366 ; Max HP
+	bigdw 205 ; Atk
+	bigdw 201 ; Def
+	bigdw 168 ; Spd
+	bigdw 202 ; SAtk
+	bigdw 218 ; SDef
+	db "RAPURASU@@@"
+
+
+	db TYRANITAR
+	db MIRACLEBERRY
+	db REST, CRUNCH, EARTHQUAKE, ROCK_SLIDE
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	db $df, $db ; DVs
+	db 10, 15, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 318 ; HP
+	bigdw 318 ; Max HP
+	bigdw 286 ; Atk
+	bigdw 249 ; Def
+	bigdw 169 ; Spd
+	bigdw 218 ; SAtk
+	bigdw 226 ; SDef
+	db "BANGIRASU@@"
+
+
+	db GENGAR
+	db NO_ITEM
+	db THUNDERBOLT, SHADOW_BALL, CONFUSE_RAY, THIEF
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 55000
+	bigdw 50000
+	db $de, $dd ; DVs
+	db 15, 15, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 247 ; HP
+	bigdw 247 ; Max HP
+	bigdw 173 ; Atk
+	bigdw 165 ; Def
+	bigdw 248 ; Spd
+	bigdw 277 ; SAtk
+	bigdw 189 ; SDef
+	db "GENGA-@@@@@"
+
+
+	db FORRETRESS
+	db LEFTOVERS
+	db EXPLOSION, TOXIC, SOLARBEAM, SWAGGER
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	db $fd, $ed ; DVs
+	db 5, 10, 10, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 273 ; HP
+	bigdw 273 ; Max HP
+	bigdw 217 ; Atk
+	bigdw 293 ; Def
+	bigdw 133 ; Spd
+	bigdw 165 ; SAtk
+	bigdw 165 ; SDef
+	db "HUoRETOSU@@"
+
+
+	db KINGDRA
+	db MINT_BERRY
+	db REST, SURF, BLIZZARD, DRAGONBREATH
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 40000
+	bigdw 55000
+	bigdw 50000
+	db $fb, $ed ; DVs
+	db 10, 15, 5, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 273 ; HP
+	bigdw 273 ; Max HP
+	bigdw 225 ; Atk
+	bigdw 214 ; Def
+	bigdw 209 ; Spd
+	bigdw 221 ; SAtk
+	bigdw 221 ; SDef
+	db "KINGUDORA@@"
+
+
+	db DRAGONITE
+	db GOLD_BERRY
+	db THUNDER_WAVE, SURF, THUNDERBOLT, OUTRAGE
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	db $dd, $dd ; DVs
+	db 20, 15, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 303 ; HP
+	bigdw 303 ; Max HP
+	bigdw 284 ; Atk
+	bigdw 221 ; Def
+	bigdw 197 ; Spd
+	bigdw 228 ; SAtk
+	bigdw 228 ; SDef
+	db "KAIRIyu-@@@"
+
+
+	db PORYGON2
+	db LEFTOVERS
+	db PSYCHIC_M, RECOVER, HYPER_BEAM, TRI_ATTACK
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 50000
+	bigdw 40000
+	bigdw 55000
+	bigdw 50000
+	db $df, $ed ; DVs
+	db 10, 20, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 293 ; HP
+	bigdw 293 ; Max HP
+	bigdw 197 ; Atk
+	bigdw 213 ; Def
+	bigdw 169 ; Spd
+	bigdw 237 ; SAtk
+	bigdw 221 ; SDef
+	db "PORIGON2@@@"
+
+
+	db JYNX
+	db QUICK_CLAW
+	db LOVELY_KISS, BLIZZARD, DREAM_EATER, PSYCHIC_M
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	db $df, $df ; DVs
+	db 10, 5, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 264 ; HP
+	bigdw 264 ; Max HP
+	bigdw 149 ; Atk
+	bigdw 127 ; Def
+	bigdw 221 ; Spd
+	bigdw 257 ; SAtk
+	bigdw 225 ; SDef
+	db "RU-ZIyuRA@@"
+
+
+	db MANTINE
+	db GOLD_BERRY
+	db SURF, CONFUSE_RAY, BLIZZARD, WING_ATTACK
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 45000
+	bigdw 40000
+	bigdw 45000
+	bigdw 50000
+	db $df, $dc ; DVs
+	db 15, 10, 5, 35 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 256 ; HP
+	bigdw 256 ; Max HP
+	bigdw 132 ; Atk
+	bigdw 181 ; Def
+	bigdw 180 ; Spd
+	bigdw 196 ; SAtk
+	bigdw 292 ; SDef
+	db "MANTAIN@@@@"
+
+
+	db SKARMORY
+	db QUICK_CLAW
+	db STEEL_WING, FLY, MUD_SLAP, TOXIC
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 35000
+	bigdw 50000
+	bigdw 50000
+	db $dd, $ef ; DVs
+	db 25, 15, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 258 ; HP
+	bigdw 258 ; Max HP
+	bigdw 196 ; Atk
+	bigdw 286 ; Def
+	bigdw 183 ; Spd
+	bigdw 137 ; SAtk
+	bigdw 185 ; SDef
+	db "EA-MUDO@@@@"
+
+
+	db MOLTRES
+	db CHARCOAL
+	db FLAMETHROWER, SKY_ATTACK, STEEL_WING, HYPER_BEAM
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	db $dd, $fe ; DVs
+	db 15, 5, 25, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 300 ; HP
+	bigdw 300 ; Max HP
+	bigdw 225 ; Atk
+	bigdw 213 ; Def
+	bigdw 213 ; Spd
+	bigdw 271 ; SAtk
+	bigdw 207 ; SDef
+	db "HUaIYA-@@@@"
+
+
+	db AERODACTYL
+	db MIRACLEBERRY
+	db HYPER_BEAM, REST, EARTHQUAKE, ROAR
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	db $ff, $ed ; DVs
+	db 5, 10, 10, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 282 ; HP
+	bigdw 282 ; Max HP
+	bigdw 237 ; Atk
+	bigdw 177 ; Def
+	bigdw 275 ; Spd
+	bigdw 165 ; SAtk
+	bigdw 189 ; SDef
+	db "PUTERA@@@@@"
+
+
+	db ELECTRODE
+	db KINGS_ROCK
+	db THUNDERBOLT, EXPLOSION, MIRROR_COAT, TOXIC
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 40000
+	bigdw 40000
+	bigdw 50000
+	db $ff, $ef ; DVs
+	db 15, 5, 20, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 250 ; HP
+	bigdw 250 ; Max HP
+	bigdw 153 ; Atk
+	bigdw 181 ; Def
+	bigdw 291 ; Spd
+	bigdw 201 ; SAtk
+	bigdw 201 ; SDef
+	db "MARUMAIN@@@"
+
+
+	db DUGTRIO
+	db SCOPE_LENS
+	db SLASH, EARTHQUAKE, THIEF, MUD_SLAP
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 40000
+	db $fd, $dd ; DVs
+	db 20, 10, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 214 ; HP
+	bigdw 214 ; Max HP
+	bigdw 201 ; Atk
+	bigdw 145 ; Def
+	bigdw 261 ; Spd
+	bigdw 145 ; SAtk
+	bigdw 177 ; SDef
+	db "DAGUTORIO@@"
+
+
+	db VICTREEBEL
+	db QUICK_CLAW
+	db GIGA_DRAIN, SLUDGE_BOMB, HYPER_BEAM, TOXIC
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $65, $65 ; DVs
+	db 5, 10, 5, 10 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 260 ; HP
+	bigdw 260 ; Max HP
+	bigdw 217 ; Atk
+	bigdw 151 ; Def
+	bigdw 161 ; Spd
+	bigdw 207 ; SAtk
+	bigdw 143 ; SDef
+	db "UTUBOtuTO@@"
+
+
+	db PINSIR
+	db GOLD_BERRY
+	db HYPER_BEAM, SUBMISSION, STRENGTH, TOXIC
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $74, $64 ; DVs
+	db 5, 25, 15, 10 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 241 ; HP
+	bigdw 241 ; Max HP
+	bigdw 250 ; Atk
+	bigdw 205 ; Def
+	bigdw 185 ; Spd
+	bigdw 133 ; SAtk
+	bigdw 157 ; SDef
+	db "KAIROSU@@@@"
+
+
+	db GRANBULL
+	db BRIGHTPOWDER
+	db ROAR, SHADOW_BALL, HYPER_BEAM, THUNDERPUNCH
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $76, $57 ; DVs
+	db 20, 15, 5, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 286 ; HP
+	bigdw 286 ; Max HP
+	bigdw 242 ; Atk
+	bigdw 169 ; Def
+	bigdw 119 ; Spd
+	bigdw 146 ; SAtk
+	bigdw 146 ; SDef
+	db "GURANBURU@@"
+
+
+
+
+BattleTowerMons9:
+
+	db UMBREON
+	db KINGS_ROCK
+	db FAINT_ATTACK, MUD_SLAP, MOONLIGHT, CONFUSE_RAY
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 60000
+	bigdw 60000
+	bigdw 55000
+	bigdw 60000
+	bigdw 55000
+	db $fd, $ed ; DVs
+	db 20, 10, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 349 ; HP
+	bigdw 349 ; Max HP
+	bigdw 203 ; Atk
+	bigdw 278 ; Def
+	bigdw 202 ; Spd
+	bigdw 188 ; SAtk
+	bigdw 314 ; SDef
+	db "BURAtuKI-@@"
+
+
+	db DRAGONITE
+	db QUICK_CLAW
+	db FIRE_BLAST, HYPER_BEAM, OUTRAGE, BLIZZARD
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 65000
+	bigdw 50000
+	bigdw 56000
+	bigdw 60000
+	bigdw 60000
+	db $fd, $ed ; DVs
+	db 5, 5, 15, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 343 ; HP
+	bigdw 343 ; Max HP
+	bigdw 322 ; Atk
+	bigdw 252 ; Def
+	bigdw 229 ; Spd
+	bigdw 263 ; SAtk
+	bigdw 263 ; SDef
+	db "KAIRIyu-@@@"
+
+
+	db STARMIE
+	db LEFTOVERS
+	db RECOVER, THUNDERBOLT, SURF, PSYCHIC_M
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	bigdw 55000
+	bigdw 60000
+	db $df, $dd ; DVs
+	db 20, 15, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 289 ; HP
+	bigdw 289 ; Max HP
+	bigdw 218 ; Atk
+	bigdw 239 ; Def
+	bigdw 287 ; Spd
+	bigdw 263 ; SAtk
+	bigdw 236 ; SDef
+	db "SUTA-MI-@@@"
+
+
+	db CLOYSTER
+	db LEFTOVERS
+	db EXPLOSION, BLIZZARD, SURF, ICY_WIND
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $db, $df ; DVs
+	db 5, 5, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 266 ; HP
+	bigdw 266 ; Max HP
+	bigdw 248 ; Atk
+	bigdw 398 ; Def
+	bigdw 203 ; Spd
+	bigdw 234 ; SAtk
+	bigdw 162 ; SDef
+	db "PARUSIeN@@@"
+
+
+	db CROBAT
+	db GOLD_BERRY
+	db WING_ATTACK, HAZE, HYPER_BEAM, GIGA_DRAIN
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fd, $cf ; DVs
+	db 35, 30, 5, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 325 ; HP
+	bigdw 325 ; Max HP
+	bigdw 243 ; Atk
+	bigdw 221 ; Def
+	bigdw 310 ; Spd
+	bigdw 207 ; SAtk
+	bigdw 225 ; SDef
+	db "KUROBAtuTO@"
+
+
+	db PORYGON2
+	db QUICK_CLAW
+	db TOXIC, PSYCHIC_M, RECOVER, PROTECT
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	db $fd, $ed ; DVs
+	db 10, 10, 20, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 325 ; HP
+	bigdw 325 ; Max HP
+	bigdw 223 ; Atk
+	bigdw 239 ; Def
+	bigdw 190 ; Spd
+	bigdw 266 ; SAtk
+	bigdw 248 ; SDef
+	db "PORIGON2@@@"
+
+
+	db KINGDRA
+	db LEFTOVERS
+	db DRAGONBREATH, SURF, HYPER_BEAM, BLIZZARD
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	bigdw 45000
+	db $df, $de ; DVs
+	db 20, 15, 5, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 309 ; HP
+	bigdw 309 ; Max HP
+	bigdw 248 ; Atk
+	bigdw 255 ; Def
+	bigdw 230 ; Spd
+	bigdw 248 ; SAtk
+	bigdw 248 ; SDef
+	db "KINGUDORA@@"
+
+
+	db TYRANITAR
+	db QUICK_CLAW
+	db HYPER_BEAM, CRUNCH, EARTHQUAKE, ROCK_SLIDE
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	db $df, $de ; DVs
+	db 5, 15, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 354 ; HP
+	bigdw 354 ; Max HP
+	bigdw 321 ; Atk
+	bigdw 279 ; Def
+	bigdw 185 ; Spd
+	bigdw 250 ; SAtk
+	bigdw 259 ; SDef
+	db "BANGIRASU@@"
+
+
+	db LAPRAS
+	db MINT_BERRY
+	db REST, SURF, THUNDERBOLT, PSYCHIC_M
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 55000
+	db $bd, $ef ; DVs
+	db 10, 15, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 405 ; HP
+	bigdw 405 ; Max HP
+	bigdw 227 ; Atk
+	bigdw 221 ; Def
+	bigdw 187 ; Spd
+	bigdw 237 ; SAtk
+	bigdw 255 ; SDef
+	db "RAPURASU@@@"
+
+
+	db ESPEON
+	db GOLD_BERRY
+	db PSYCHIC_M, SHADOW_BALL, SUNNY_DAY, MORNING_SUN
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 50000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	db $dd, $fe ; DVs
+	db 10, 15, 5, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 294 ; HP
+	bigdw 294 ; Max HP
+	bigdw 194 ; Atk
+	bigdw 185 ; Def
+	bigdw 282 ; Spd
+	bigdw 313 ; SAtk
+	bigdw 250 ; SDef
+	db "E-HUi@@@@@@"
+
+
+	db MACHAMP
+	db QUICK_CLAW
+	db CROSS_CHOP, VITAL_THROW, FIRE_BLAST, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 55000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	db $dd, $ed ; DVs
+	db 5, 10, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 337 ; HP
+	bigdw 337 ; Max HP
+	bigdw 314 ; Atk
+	bigdw 221 ; Def
+	bigdw 181 ; Spd
+	bigdw 194 ; SAtk
+	bigdw 230 ; SDef
+	db "KAIRIKI-@@@"
+
+
+	db SNORLAX
+	db MIRACLEBERRY
+	db FIRE_BLAST, SURF, EARTHQUAKE, HYPER_BEAM
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	bigdw 50000
+	db $fe, $fd ; DVs
+	db 5, 15, 10, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 455 ; HP
+	bigdw 455 ; Max HP
+	bigdw 279 ; Atk
+	bigdw 199 ; Def
+	bigdw 135 ; Spd
+	bigdw 194 ; SAtk
+	bigdw 275 ; SDef
+	db "KABIGON@@@@"
+
+
+	db ARCANINE
+	db MINT_BERRY
+	db SUNNY_DAY, FLAMETHROWER, EXTREMESPEED, REST
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 45000
+	bigdw 55000
+	db $df, $de ; DVs
+	db 5, 15, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 336 ; HP
+	bigdw 336 ; Max HP
+	bigdw 274 ; Atk
+	bigdw 225 ; Def
+	bigdw 247 ; Spd
+	bigdw 262 ; SAtk
+	bigdw 226 ; SDef
+	db "UINDEi@@@@@"
+
+
+	db BLISSEY
+	db LEFTOVERS
+	db SOLARBEAM, SUNNY_DAY, SOFTBOILED, FIRE_BLAST
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $bd, $fe ; DVs
+	db 10, 5, 10, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 633 ; HP
+	bigdw 633 ; Max HP
+	bigdw 90 ; Atk
+	bigdw 95 ; Def
+	bigdw 180 ; Spd
+	bigdw 214 ; SAtk
+	bigdw 322 ; SDef
+	db "HAPINASU@@@"
+
+
+	db HOUNDOOM
+	db BRIGHTPOWDER
+	db FLAMETHROWER, CRUNCH, SUNNY_DAY, SOLARBEAM
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $db, $fe ; DVs
+	db 15, 15, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 309 ; HP
+	bigdw 309 ; Max HP
+	bigdw 235 ; Atk
+	bigdw 164 ; Def
+	bigdw 252 ; Spd
+	bigdw 277 ; SAtk
+	bigdw 223 ; SDef
+	db "HERUGA-@@@@"
+
+
+	db SKARMORY
+	db QUICK_CLAW
+	db SANDSTORM, STEEL_WING, TOXIC, RETURN
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $ef, $f7 ; DVs
+	db 10, 25, 10, 20 ; PP
+	db 255 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 279 ; HP
+	bigdw 279 ; Max HP
+	bigdw 223 ; Atk
+	bigdw 333 ; Def
+	bigdw 207 ; Spd
+	bigdw 139 ; SAtk
+	bigdw 193 ; SDef
+	db "EA-MUDO@@@@"
+
+
+	db SHUCKLE
+	db LEFTOVERS
+	db TOXIC, WRAP, PROTECT, ENCORE
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fe, $fe ; DVs
+	db 10, 20, 10, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 203 ; HP
+	bigdw 203 ; Max HP
+	bigdw 99 ; Atk
+	bigdw 493 ; Def
+	bigdw 90 ; Spd
+	bigdw 97 ; SAtk
+	bigdw 493 ; SDef
+	db "TUBOTUBO@@@"
+
+
+	db FLAREON
+	db MINT_BERRY
+	db HYPER_BEAM, FLAMETHROWER, SHADOW_BALL, ROAR
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $f7, $f7 ; DVs
+	db 5, 15, 15, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 293 ; HP
+	bigdw 293 ; Max HP
+	bigdw 315 ; Atk
+	bigdw 175 ; Def
+	bigdw 198 ; Spd
+	bigdw 238 ; SAtk
+	bigdw 265 ; SDef
+	db "BU-SUTA-@@@"
+
+
+	db MILTANK
+	db LEFTOVERS
+	db MILK_DRINK, EARTHQUAKE, ATTRACT, BODY_SLAM
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $47, $57 ; DVs
+	db 10, 10, 15, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 322 ; HP
+	bigdw 322 ; Max HP
+	bigdw 194 ; Atk
+	bigdw 245 ; Def
+	bigdw 232 ; Spd
+	bigdw 128 ; SAtk
+	bigdw 182 ; SDef
+	db "MIRUTANKU@@"
+
+
+	db TAUROS
+	db PINK_BOW
+	db THUNDERBOLT, HYPER_BEAM, ATTRACT, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $65, $76 ; DVs
+	db 15, 5, 15, 10 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 284 ; HP
+	bigdw 284 ; Max HP
+	bigdw 234 ; Atk
+	bigdw 223 ; Def
+	bigdw 254 ; Spd
+	bigdw 126 ; SAtk
+	bigdw 180 ; SDef
+	db "KENTAROSU@@"
+
+
+	db MUK
+	db QUICK_CLAW
+	db TOXIC, SLUDGE_BOMB, ATTRACT, GIGA_DRAIN
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $54, $44 ; DVs
+	db 10, 10, 15, 5 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 342 ; HP
+	bigdw 342 ; Max HP
+	bigdw 241 ; Atk
+	bigdw 185 ; Def
+	bigdw 140 ; Spd
+	bigdw 167 ; SAtk
+	bigdw 230 ; SDef
+	db "BETOBETON@@"
+
+
+
+
+BattleTowerMons10:
+
+	db HOUNDOOM
+	db MINT_BERRY
+	db CRUNCH, FLAMETHROWER, ROAR, REST
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	db $fd, $ed ; DVs
+	db 15, 15, 20, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 347 ; HP
+	bigdw 347 ; Max HP
+	bigdw 276 ; Atk
+	bigdw 192 ; Def
+	bigdw 284 ; Spd
+	bigdw 312 ; SAtk
+	bigdw 252 ; SDef
+	db "HERUGA-@@@@"
+
+
+	db MACHAMP
+	db QUICK_CLAW
+	db CROSS_CHOP, EARTHQUAKE, HYPER_BEAM, VITAL_THROW
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	db $fd, $ef ; DVs
+	db 5, 10, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 377 ; HP
+	bigdw 377 ; Max HP
+	bigdw 356 ; Atk
+	bigdw 252 ; Def
+	bigdw 204 ; Spd
+	bigdw 226 ; SAtk
+	bigdw 266 ; SDef
+	db "KAIRIKI-@@@"
+
+
+	db KINGDRA
+	db LEFTOVERS
+	db SURF, DRAGONBREATH, REST, TOXIC
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	db $df, $fe ; DVs
+	db 15, 20, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 349 ; HP
+	bigdw 349 ; Max HP
+	bigdw 282 ; Atk
+	bigdw 286 ; Def
+	bigdw 266 ; Spd
+	bigdw 284 ; SAtk
+	bigdw 284 ; SDef
+	db "KINGUDORA@@"
+
+
+	db JOLTEON
+	db BRIGHTPOWDER
+	db THUNDERBOLT, ROAR, THUNDER_WAVE, IRON_TAIL
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 30000
+	bigdw 50000
+	db $fd, $fe ; DVs
+	db 15, 20, 20, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 323 ; HP
+	bigdw 323 ; Max HP
+	bigdw 220 ; Atk
+	bigdw 206 ; Def
+	bigdw 338 ; Spd
+	bigdw 308 ; SAtk
+	bigdw 278 ; SDef
+	db "SANDA-SU@@@"
+
+
+	db TAUROS
+	db KINGS_ROCK
+	db HYPER_BEAM, EARTHQUAKE, IRON_TAIL, THUNDERBOLT
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fd, $ef ; DVs
+	db 5, 10, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 341 ; HP
+	bigdw 341 ; Max HP
+	bigdw 290 ; Atk
+	bigdw 276 ; Def
+	bigdw 308 ; Spd
+	bigdw 170 ; SAtk
+	bigdw 230 ; SDef
+	db "KENTAROSU@@"
+
+
+	db ARCANINE
+	db LEFTOVERS
+	db FLAMETHROWER, EXTREMESPEED, IRON_TAIL, HYPER_BEAM
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 50000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	db $dd, $ef ; DVs
+	db 15, 5, 15, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 374 ; HP
+	bigdw 374 ; Max HP
+	bigdw 306 ; Atk
+	bigdw 246 ; Def
+	bigdw 281 ; Spd
+	bigdw 290 ; SAtk
+	bigdw 250 ; SDef
+	db "UINDEi@@@@@"
+
+
+	db CHARIZARD
+	db SCOPE_LENS
+	db FLAMETHROWER, EARTHQUAKE, SLASH, FLY
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 55000
+	bigdw 55000
+	bigdw 55000
+	db $fe, $df ; DVs
+	db 15, 10, 20, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 343 ; HP
+	bigdw 343 ; Max HP
+	bigdw 258 ; Atk
+	bigdw 247 ; Def
+	bigdw 289 ; Spd
+	bigdw 311 ; SAtk
+	bigdw 263 ; SDef
+	db "RIZA-DON@@@"
+
+
+	db ELECTRODE
+	db BRIGHTPOWDER
+	db THUNDER_WAVE, THUNDERBOLT, EXPLOSION, MIRROR_COAT
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 45000
+	db $fb, $ef ; DVs
+	db 20, 15, 5, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 309 ; HP
+	bigdw 309 ; Max HP
+	bigdw 190 ; Atk
+	bigdw 222 ; Def
+	bigdw 366 ; Spd
+	bigdw 248 ; SAtk
+	bigdw 248 ; SDef
+	db "MARUMAIN@@@"
+
+
+	db RHYDON
+	db MIRACLEBERRY
+	db SURF, EARTHQUAKE, HYPER_BEAM, ROCK_SLIDE
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	bigdw 45000
+	db $fd, $ef ; DVs
+	db 15, 10, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 404 ; HP
+	bigdw 404 ; Max HP
+	bigdw 350 ; Atk
+	bigdw 329 ; Def
+	bigdw 168 ; Spd
+	bigdw 178 ; SAtk
+	bigdw 178 ; SDef
+	db "SAIDON@@@@@"
+
+
+	db STEELIX
+	db LEFTOVERS
+	db EARTHQUAKE, HYPER_BEAM, SWAGGER, CRUNCH
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 55000
+	bigdw 60000
+	bigdw 50000
+	db $fd, $de ; DVs
+	db 10, 5, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 343 ; HP
+	bigdw 343 ; Max HP
+	bigdw 260 ; Atk
+	bigdw 489 ; Def
+	bigdw 152 ; Spd
+	bigdw 198 ; SAtk
+	bigdw 218 ; SDef
+	db "HAGANE-RU@@"
+
+
+	db FEAROW
+	db KINGS_ROCK
+	db DRILL_PECK, STEEL_WING, HYPER_BEAM, MUD_SLAP
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 50000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	db $fd, $cf ; DVs
+	db 20, 25, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 324 ; HP
+	bigdw 324 ; Max HP
+	bigdw 270 ; Atk
+	bigdw 216 ; Def
+	bigdw 287 ; Spd
+	bigdw 212 ; SAtk
+	bigdw 212 ; SDef
+	db "ONIDORIRU@@"
+
+
+	db MISDREAVUS
+	db FOCUS_BAND
+	db PERISH_SONG, MEAN_LOOK, PAIN_SPLIT, SHADOW_BALL
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	bigdw 55000
+	db $bd, $ef ; DVs
+	db 5, 5, 20, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 309 ; HP
+	bigdw 309 ; Max HP
+	bigdw 202 ; Atk
+	bigdw 209 ; Def
+	bigdw 258 ; Spd
+	bigdw 263 ; SAtk
+	bigdw 263 ; SDef
+	db "MUUMA@@@@@@"
+
+
+	db SNEASEL
+	db SCOPE_LENS
+	db SLASH, BLIZZARD, DREAM_EATER, FAINT_ATTACK
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 48000
+	bigdw 45000
+	bigdw 50000
+	db $fd, $ef ; DVs
+	db 20, 5, 15, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 301 ; HP
+	bigdw 301 ; Max HP
+	bigdw 280 ; Atk
+	bigdw 195 ; Def
+	bigdw 316 ; Spd
+	bigdw 160 ; SAtk
+	bigdw 240 ; SDef
+	db "NIyu-RA@@@@"
+
+
+	db SCIZOR
+	db QUICK_CLAW
+	db STEEL_WING, HYPER_BEAM, SLASH, TOXIC
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	db $fb, $fe ; DVs
+	db 25, 5, 20, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 333 ; HP
+	bigdw 333 ; Max HP
+	bigdw 350 ; Atk
+	bigdw 282 ; Def
+	bigdw 220 ; Spd
+	bigdw 196 ; SAtk
+	bigdw 246 ; SDef
+	db "HAtuSAMU@@@"
+
+
+	db BLISSEY
+	db LEFTOVERS
+	db THUNDERBOLT, BLIZZARD, FIRE_BLAST, SOFTBOILED
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 30000
+	bigdw 30000
+	db $dd, $fe ; DVs
+	db 15, 5, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 703 ; HP
+	bigdw 703 ; Max HP
+	bigdw 101 ; Atk
+	bigdw 106 ; Def
+	bigdw 188 ; Spd
+	bigdw 226 ; SAtk
+	bigdw 346 ; SDef
+	db "HAPINASU@@@"
+
+
+	db PILOSWINE
+	db MINT_BERRY
+	db REST, BLIZZARD, HYPER_BEAM, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fe, $f7 ; DVs
+	db 10, 5, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 387 ; HP
+	bigdw 387 ; Max HP
+	bigdw 290 ; Atk
+	bigdw 248 ; Def
+	bigdw 190 ; Spd
+	bigdw 194 ; SAtk
+	bigdw 194 ; SDef
+	db "INOMU-@@@@@"
+
+
+	db EXEGGUTOR
+	db QUICK_CLAW
+	db PSYCHIC_M, TOXIC, EXPLOSION, GIGA_DRAIN
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fe, $fe ; DVs
+	db 10, 10, 5, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 375 ; HP
+	bigdw 375 ; Max HP
+	bigdw 280 ; Atk
+	bigdw 258 ; Def
+	bigdw 200 ; Spd
+	bigdw 338 ; SAtk
+	bigdw 218 ; SDef
+	db "NAtuSI-@@@@"
+
+
+	db OMASTAR
+	db LEFTOVERS
+	db SURF, ANCIENTPOWER, BLIZZARD, TOXIC
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fb, $e7 ; DVs
+	db 15, 5, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 331 ; HP
+	bigdw 331 ; Max HP
+	bigdw 210 ; Atk
+	bigdw 332 ; Def
+	bigdw 198 ; Spd
+	bigdw 304 ; SAtk
+	bigdw 214 ; SDef
+	db "OMUSUTA-@@@"
+
+
+	db GOLEM
+	db BRIGHTPOWDER
+	db EXPLOSION, EARTHQUAKE, ROCK_SLIDE, FIRE_BLAST
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $74, $46 ; DVs
+	db 5, 10, 10, 5 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 329 ; HP
+	bigdw 329 ; Max HP
+	bigdw 282 ; Atk
+	bigdw 316 ; Def
+	bigdw 146 ; Spd
+	bigdw 170 ; SAtk
+	bigdw 190 ; SDef
+	db "GORO-NIya@@"
+
+
+	db HITMONCHAN
+	db FOCUS_BAND
+	db COUNTER, FIRE_PUNCH, THUNDERPUNCH, ICE_PUNCH
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $67, $76 ; DVs
+	db 20, 15, 15, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 265 ; HP
+	bigdw 265 ; Max HP
+	bigdw 270 ; Atk
+	bigdw 220 ; Def
+	bigdw 214 ; Spd
+	bigdw 130 ; SAtk
+	bigdw 280 ; SDef
+	db "EBIWARA-@@@"
+
+
+	db LANTURN
+	db QUICK_CLAW
+	db SURF, RAIN_DANCE, ZAP_CANNON, CONFUSE_RAY
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $76, $57 ; DVs
+	db 15, 5, 5, 10 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 425 ; HP
+	bigdw 425 ; Max HP
+	bigdw 178 ; Atk
+	bigdw 176 ; Def
+	bigdw 192 ; Spd
+	bigdw 214 ; SAtk
+	bigdw 214 ; SDef
+	db "RANTA-N@@@@"
+
+
+
--- /dev/null
+++ b/text/battle_tower.asm
@@ -1,0 +1,616 @@
+
+UnknownText_0x1ec000: ; 0x1ec000
+	db $0, "Hello, glad to", $4f
+	db "meet you!", $51
+	db "I do hope we have", $4f
+	db "a good battle.", $57
+; 0x1ec03b
+
+UnknownText_0x1ec03b: ; 0x1ec03b
+	db $0, "Thank you! A most", $4f
+	db "enjoyable battle!", $57
+; 0x1ec060
+
+UnknownText_0x1ec060: ; 0x1ec060
+	db $0, "Thank you. You are", $4f
+	db "formidable.", $57
+; 0x1ec080
+
+UnknownText_0x1ec080: ; 0x1ec080
+	db $0, "Work, work, work…", $4f
+	db "I'm always busy!", $57
+; 0x1ec0a3
+
+UnknownText_0x1ec0a3: ; 0x1ec0a3
+	db $0, "But, I work hard", $4f
+	db "in battle too!", $57
+; 0x1ec0c4
+
+UnknownText_0x1ec0c4: ; 0x1ec0c4
+	db $0, "I'm too busy to be", $4f
+	db "battling!", $57
+; 0x1ec0e1
+
+UnknownText_0x1ec0e1: ; 0x1ec0e1
+	db $0, "Brace yourself for", $4f
+	db "my all-out attack!", $57
+; 0x1ec108
+
+UnknownText_0x1ec108: ; 0x1ec108
+	db $0, "What a cakewalk!", $4f
+	db "You're too easy!", $57
+; 0x1ec12a
+
+UnknownText_0x1ec12a: ; 0x1ec12a
+	db $0, "I won't lose next", $4f
+	db "time, all right?", $57
+; 0x1ec14d
+
+UnknownText_0x1ec14d: ; 0x1ec14d
+	db $0, "Heh, your #MON", $4f
+	db "look pretty cool.", $57
+; 0x1ec16f
+
+UnknownText_0x1ec16f: ; 0x1ec16f
+	db $0, "Hey, hey, no way!", $4f
+	db "You won't win!", $57
+; 0x1ec190
+
+UnknownText_0x1ec190: ; 0x1ec190
+	db $0, "You serious?", $4f
+	db "This is brutal!", $57
+; 0x1ec1ae
+
+UnknownText_0x1ec1ae: ; 0x1ec1ae
+	db $0, "#MON every day!", $4f
+	db "I love battling!", $57
+; 0x1ec1d0
+
+UnknownText_0x1ec1d0: ; 0x1ec1d0
+	db $0, "I'm on top of my", $4f
+	db "game, but not you!", $57
+; 0x1ec1f4
+
+UnknownText_0x1ec1f4: ; 0x1ec1f4
+	db $0, "I don't care that", $4f
+	db "I lost, really!", $57
+; 0x1ec216
+
+UnknownText_0x1ec216: ; 0x1ec216
+	db $0, "Hi, there! Let's", $4f
+	db "keep this clean!", $57
+; 0x1ec238
+
+UnknownText_0x1ec238: ; 0x1ec238
+	db $0, "Whoops, sorry for", $4f
+	db "that wipeout!", $57
+; 0x1ec259
+
+UnknownText_0x1ec259: ; 0x1ec259
+	db $0, "Whoops! Come on,", $4f
+	db "let me win one!", $57
+; 0x1ec27b
+
+UnknownText_0x1ec27b: ; 0x1ec27b
+	db $0, "Do you want to see", $4f
+	db "my battle level?", $57
+; 0x1ec2a0
+
+UnknownText_0x1ec2a0: ; 0x1ec2a0
+	db $0, "Hehehe, I know", $4f
+	db "your level now!", $57
+; 0x1ec2c0
+
+UnknownText_0x1ec2c0: ; 0x1ec2c0
+	db $0, "Ouch… I'm just too", $4f
+	db "weak…", $57
+; 0x1ec2d9
+
+UnknownText_0x1ec2d9: ; 0x1ec2d9
+	db $0, "Hey, let's battle.", $4f
+	db "I'm your opponent.", $57
+; 0x1ec2fe
+
+UnknownText_0x1ec2fe: ; 0x1ec2fe
+	db $0, "Wow, you're not", $4f
+	db "serious about it!", $57
+; 0x1ec320
+
+UnknownText_0x1ec320: ; 0x1ec320
+	db $0, "…Urgh… Nothing", $4f
+	db "positive here…", $57
+; 0x1ec33f
+
+UnknownText_0x1ec33f: ; 0x1ec33f
+	db $0, "I'm your", $4f
+	db "opponent.", $51
+	db "Get ready to be", $4f
+	db "hammered.", $57
+; 0x1ec36c
+
+UnknownText_0x1ec36c: ; 0x1ec36c
+	db $0, "Hahah! That was a", $4f
+	db "pushover!", $57
+; 0x1ec389
+
+UnknownText_0x1ec389: ; 0x1ec389
+	db $0, "No way! There has", $4f
+	db "to be a mistake!", $57
+; 0x1ec3ad
+
+UnknownText_0x1ec3ad: ; 0x1ec3ad
+	db $0, "Hah!", $4f
+	db "Let's get rolling!", $57
+; 0x1ec3c5
+
+UnknownText_0x1ec3c5: ; 0x1ec3c5
+	db $0, "Wahahaha! Didn't", $4f
+	db "break a sweat!", $57
+; 0x1ec3e5
+
+UnknownText_0x1ec3e5: ; 0x1ec3e5
+	db $0, "Tough! I'm no", $4f
+	db "match for you!", $57
+; 0x1ec402
+
+UnknownText_0x1ec402: ; 0x1ec402
+	db $0, $56, $56, $56, $4f
+	db $56, $56, "Battle?", $57
+; 0x1ec411
+
+UnknownText_0x1ec411: ; 0x1ec411
+	db $0, $56, $56, $56, $4f
+	db $56, $56, "I won?", $57
+; 0x1ec41f
+
+UnknownText_0x1ec41f: ; 0x1ec41f
+	db $0, $56, $56, $56, $4f
+	db $56, $56, "I lost?", $57
+; 0x1ec42e
+
+UnknownText_0x1ec42e: ; 0x1ec42e
+	db $0, "You want to be a", $4f
+	db "leader?", $51
+	db "Let me battle you,", $4f
+	db "then!", $57
+; 0x1ec461
+
+UnknownText_0x1ec461: ; 0x1ec461
+	db $0, "You need another", $4f
+	db "ten years of", $51
+	db "training to get", $4f
+	db "better, I'd say.", $57
+; 0x1ec4a0
+
+UnknownText_0x1ec4a0: ; 0x1ec4a0
+	db $0, "You're incredibly", $4f
+	db "talented.", $51
+	db "No one can touch", $4f
+	db "you now!", $57
+; 0x1ec4d6
+
+UnknownText_0x1ec4d6: ; 0x1ec4d6
+	db $0, "Today, I'm going", $4f
+	db "to whomp you.", $57
+; 0x1ec4f5
+
+UnknownText_0x1ec4f5: ; 0x1ec4f5
+	db $0, "I knew I'd win.", $4f
+	db "I'm so great!", $57
+; 0x1ec512
+
+UnknownText_0x1ec512: ; 0x1ec512
+	db $0, "Uh? My plans are", $4f
+	db "out of whack…", $57
+; 0x1ec532
+
+UnknownText_0x1ec532: ; 0x1ec532
+	db $0, "I bet you can't", $4f
+	db "beat me!", $57
+; 0x1ec54b
+
+UnknownText_0x1ec54b: ; 0x1ec54b
+	db $0, "Those #MON", $4f
+	db "aren't enough!", $57
+; 0x1ec565
+
+UnknownText_0x1ec565: ; 0x1ec565
+	db $0, "I want your", $4f
+	db "#MON. Please?", $57
+; 0x1ec580
+
+UnknownText_0x1ec580: ; 0x1ec580
+	db $0, "I'll show you a", $4f
+	db "real battle!", $57
+; 0x1ec59d
+
+UnknownText_0x1ec59d: ; 0x1ec59d
+	db $0, "This battle…", $4f
+	db "I'm bored!", $57
+; 0x1ec5b5
+
+UnknownText_0x1ec5b5: ; 0x1ec5b5
+	db $0, "…I won't turn tail", $4f
+	db "in battle!", $57
+; 0x1ec5d3
+
+UnknownText_0x1ec5d3: ; 0x1ec5d3
+	db $0, "Let's go!", $4f
+	db "No holds barred!", $57
+; 0x1ec5ee
+
+UnknownText_0x1ec5ee: ; 0x1ec5ee
+	db $0, "Sorry! I wanted", $4f
+	db "the win more!", $57
+; 0x1ec60d
+
+UnknownText_0x1ec60d: ; 0x1ec60d
+	db $0, "Wahah! Congrats!", $4f
+	db "I can't do better!", $57
+; 0x1ec631
+
+UnknownText_0x1ec631: ; 0x1ec631
+	db $0, "My #MON skills", $4f
+	db "are phenomenal!", $57
+; 0x1ec651
+
+UnknownText_0x1ec651: ; 0x1ec651
+	db $0, "You've got a long", $4f
+	db "way to go.", $51
+	db "Well, keep trying!", $4f
+	db "Best of luck!", $57
+; 0x1ec68f
+
+UnknownText_0x1ec68f: ; 0x1ec68f
+	db $0, "Aww… Don't lose", $4f
+	db "after beating me.", $57
+; 0x1ec6b1
+
+UnknownText_0x1ec6b1: ; 0x1ec6b1
+	db $0, "Who are you?", $4f
+	db "I don't know you…", $57
+; 0x1ec6d0
+
+UnknownText_0x1ec6d0: ; 0x1ec6d0
+	db $0, "I must've imagined", $4f
+	db "that.", $51
+	db "There seems to be", $4f
+	db "no one here…", $57
+; 0x1ec708
+
+UnknownText_0x1ec708: ; 0x1ec708
+	db $0, "Who am I?", $4f
+	db "I don't know…", $57
+; 0x1ec720
+
+UnknownText_0x1ec720: ; 0x1ec720
+	db $0, "Um… Are you that…", $4f
+	db "um…person?", $57
+; 0x1ec73e
+
+UnknownText_0x1ec73e: ; 0x1ec73e
+	db $0, "It doesn't appear", $4f
+	db "to be you…", $57
+; 0x1ec75b
+
+UnknownText_0x1ec75b: ; 0x1ec75b
+	db $0, "Then you really", $4f
+	db "are the legendary…", $57
+; 0x1ec77f
+
+UnknownText_0x1ec77f: ; 0x1ec77f
+	db $0, "I heard that", $4f
+	db "you're hot!", $57
+; 0x1ec798
+
+UnknownText_0x1ec798: ; 0x1ec798
+	db $0, "Not bad. I was", $4f
+	db "just a bit better.", $57
+; 0x1ec7bb
+
+UnknownText_0x1ec7bb: ; 0x1ec7bb
+	db $0, "Eh, you're not", $4f
+	db "that special.", $57
+; 0x1ec7d8
+
+UnknownText_0x1ec7d8: ; 0x1ec7d8
+	db $0, "I'm scared about", $4f
+	db "what might happen.", $51
+	db "My #MON are way", $4f
+	db "too strong.", $57
+; 0x1ec818
+
+UnknownText_0x1ec818: ; 0x1ec818
+	db $0, "See? My #MON", $4f
+	db "were too strong.", $57
+; 0x1ec837
+
+UnknownText_0x1ec837: ; 0x1ec837
+	db $0, "Graa! My #MON", $4f
+	db "were total wimps!", $57
+; 0x1ec858
+
+UnknownText_0x1ec858: ; 0x1ec858
+	db $0, "Hey, there!", $4f
+	db "I'll take you on!", $57
+; 0x1ec876
+
+UnknownText_0x1ec876: ; 0x1ec876
+	db $0, "Don't you have a", $4f
+	db "better strategy?", $57
+; 0x1ec898
+
+UnknownText_0x1ec898: ; 0x1ec898
+	db $0, "You've got decent", $4f
+	db "style!", $57
+; 0x1ec8b1
+
+UnknownText_0x1ec8b1: ; 0x1ec8b1
+	db $0, "I wonder if I can", $4f
+	db "battle properly…", $57
+; 0x1ec8d5
+
+UnknownText_0x1ec8d5: ; 0x1ec8d5
+	db $0, "Um… Sorry…", $4f
+	db "I think I won.", $57
+; 0x1ec8f0
+
+UnknownText_0x1ec8f0: ; 0x1ec8f0
+	db $0, "I guess I'm not", $4f
+	db "good enough yet…", $57
+; 0x1ec911
+
+UnknownText_0x1ec911: ; 0x1ec911
+	db $0, "Wrrooar!", $4f
+	db "I won't lose!", $57
+; 0x1ec928
+
+UnknownText_0x1ec928: ; 0x1ec928
+	db $0, "Wrrooar! I knew", $4f
+	db "I was a genius!", $57
+; 0x1ec949
+
+UnknownText_0x1ec949: ; 0x1ec949
+	db $0, "Arrooh! I hate it", $4f
+	db "when I lose!", $57
+; 0x1ec969
+
+UnknownText_0x1ec969: ; 0x1ec969
+	db $0, "Sorry, but I'm", $4f
+	db "going to win.", $57
+; 0x1ec986
+
+UnknownText_0x1ec986: ; 0x1ec986
+	db $0, "Yeah! My #MON", $4f
+	db "rule!", $57
+; 0x1ec99b
+
+UnknownText_0x1ec99b: ; 0x1ec99b
+	db $0, "Oh, close! I lost", $4f
+	db "by just a bit!", $57
+; 0x1ec9bd
+
+UnknownText_0x1ec9bd: ; 0x1ec9bd
+	db $0, "OK, I'm not", $4f
+	db "fooling around!", $57
+; 0x1ec9d9
+
+UnknownText_0x1ec9d9: ; 0x1ec9d9
+	db $0, "Yay! Too easy!", $4f
+	db "Like, no way!", $57
+; 0x1ec9f7
+
+UnknownText_0x1ec9f7: ; 0x1ec9f7
+	db $0, "No!", $4f
+	db "Like, no way!", $57
+; 0x1eca0a
+
+UnknownText_0x1eca0a: ; 0x1eca0a
+	db $0, "Look! My #MON", $4f
+	db "are really cute!", $57
+; 0x1eca2a
+
+UnknownText_0x1eca2a: ; 0x1eca2a
+	db $0, "Aren't they really", $4f
+	db "adorable?", $57
+; 0x1eca47
+
+UnknownText_0x1eca47: ; 0x1eca47
+	db $0, "I'm sorry, it's", $4f
+	db "all my fault!", $57
+; 0x1eca64
+
+UnknownText_0x1eca64: ; 0x1eca64
+	db $0, "Let's get our", $4f
+	db "battle started!", $57
+; 0x1eca82
+
+UnknownText_0x1eca82: ; 0x1eca82
+	db $0, "Was I too strong", $4f
+	db "for you?", $57
+; 0x1eca9d
+
+UnknownText_0x1eca9d: ; 0x1eca9d
+	db $0, "Ooh, you're in a", $4f
+	db "different class.", $57
+; 0x1ecabf
+
+UnknownText_0x1ecabf: ; 0x1ecabf
+	db $0, "Are we going to", $4f
+	db "battle? Let's!", $57
+; 0x1ecade
+
+UnknownText_0x1ecade: ; 0x1ecade
+	db $0, "Oh, you're too", $4f
+	db "weak. Shame.", $57
+; 0x1ecafa
+
+UnknownText_0x1ecafa: ; 0x1ecafa
+	db $0, "Wow! Are you quite", $4f
+	db "satisfied?", $57
+; 0x1ecb19
+
+UnknownText_0x1ecb19: ; 0x1ecb19
+	db $0, "Oh, you have some", $4f
+	db "rare #MON.", $57
+; 0x1ecb37
+
+UnknownText_0x1ecb37: ; 0x1ecb37
+	db $0, "May I have one of", $4f
+	db "your #MON?", $57
+; 0x1ecb55
+
+UnknownText_0x1ecb55: ; 0x1ecb55
+	db $0, "…I want one of", $4f
+	db "your #MON.", $57
+; 0x1ecb70
+
+UnknownText_0x1ecb70: ; 0x1ecb70
+	db $0, "Want to hear about", $4f
+	db "my cute #MON?", $57
+; 0x1ecb92
+
+UnknownText_0x1ecb92: ; 0x1ecb92
+	db $0, "What do you think", $4f
+	db "about my cuties?", $57
+; 0x1ecbb6
+
+UnknownText_0x1ecbb6: ; 0x1ecbb6
+	db $0, "Oh! My! You're a", $4f
+	db "dreadful trainer!", $57
+; 0x1ecbd9
+
+UnknownText_0x1ecbd9: ; 0x1ecbd9
+	db $0, "Battle? Sure!", $4f
+	db "Right now!", $57
+; 0x1ecbf3
+
+UnknownText_0x1ecbf3: ; 0x1ecbf3
+	db $0, "Oh, I love it!", $4f
+	db "Battling is wild!", $57
+; 0x1ecc15
+
+UnknownText_0x1ecc15: ; 0x1ecc15
+	db $0, "Oh, how rude! Wait", $4f
+	db "till next time!", $57
+; 0x1ecc39
+
+UnknownText_0x1ecc39: ; 0x1ecc39
+	db $0, "Please let me win!", $4f
+	db "Please?", $57
+; 0x1ecc55
+
+UnknownText_0x1ecc55: ; 0x1ecc55
+	db $0, "Wow, thank you!", $4f
+	db "You're so nice!", $57
+; 0x1ecc75
+
+UnknownText_0x1ecc75: ; 0x1ecc75
+	db $0, "You're mean!", $4f
+	db "I hate meanies!", $57
+; 0x1ecc92
+
+UnknownText_0x1ecc92: ; 0x1ecc92
+	db $0, "Well, can we", $4f
+	db "begin?", $57
+; 0x1ecca7
+
+UnknownText_0x1ecca7: ; 0x1ecca7
+	db $0, "Well, I beg your", $4f
+	db "pardon…", $57
+; 0x1eccc1
+
+UnknownText_0x1eccc1: ; 0x1eccc1
+	db $0, "Sob… That's not", $4f
+	db "fair!", $57
+; 0x1eccd7
+
+UnknownText_0x1eccd7: ; 0x1eccd7
+	db $0, "I'm good!", $4f
+	db "You can't win.", $57
+; 0x1eccef
+
+UnknownText_0x1eccef: ; 0x1eccef
+	db $0, "Giving up? You're", $4f
+	db "pretty weak!", $57
+; 0x1ecd0e
+
+UnknownText_0x1ecd0e: ; 0x1ecd0e
+	db $0, "I won't accept", $4f
+	db "this… No way!", $57
+; 0x1ecd2b
+
+UnknownText_0x1ecd2b: ; 0x1ecd2b
+	db $0, "Are you treating", $4f
+	db "this seriously?", $57
+; 0x1ecd4d
+
+UnknownText_0x1ecd4d: ; 0x1ecd4d
+	db $0, "Oh, sorry! Looks", $4f
+	db "like I won!", $57
+; 0x1ecd6b
+
+UnknownText_0x1ecd6b: ; 0x1ecd6b
+	db $0, "Oh, how nasty!", $4f
+	db "You were serious!", $57
+; 0x1ecd8d
+
+UnknownText_0x1ecd8d: ; 0x1ecd8d
+	db $0, "Ahahah! I'll take", $4f
+	db "it easy on you!", $57
+; 0x1ecdaf
+
+UnknownText_0x1ecdaf: ; 0x1ecdaf
+	db $0, "Oops, sorry! But", $4f
+	db "I'm happy too!", $57
+; 0x1ecdcf
+
+UnknownText_0x1ecdcf: ; 0x1ecdcf
+	db $0, "Oh, oh, I lost!", $4f
+	db "Thanks. Bye!", $57
+; 0x1ecded
+
+UnknownText_0x1ecded: ; 0x1ecded
+	db $0, "BATTLE TOWER is a", $4f
+	db "tough place!", $57
+; 0x1ece0d
+
+UnknownText_0x1ece0d: ; 0x1ece0d
+	db $0, "You might have a", $4f
+	db "hard time.", $57
+; 0x1ece2a
+
+UnknownText_0x1ece2a: ; 0x1ece2a
+	db $0, "Ooh, you might", $4f
+	db "make a run here!", $57
+; 0x1ece4b
+
+UnknownText_0x1ece4b: ; 0x1ece4b
+	db $0, "I want to see your", $4f
+	db "style in action!", $57
+; 0x1ece70
+
+UnknownText_0x1ece70: ; 0x1ece70
+	db $0, "Every battle is a", $4f
+	db "drama!", $57
+; 0x1ece8a
+
+UnknownText_0x1ece8a: ; 0x1ece8a
+	db $0, "Oh… Want to trade", $4f
+	db "something?", $57
+; 0x1ecea8
+
+UnknownText_0x1ecea8: ; 0x1ecea8
+	db $0, "OK, here goes!", $4f
+	db "I have momentum!", $57
+; 0x1ecec9
+
+UnknownText_0x1ecec9: ; 0x1ecec9
+	db $0, "See, I rolled", $4f
+	db "right over you!", $57
+; 0x1ecee8
+
+UnknownText_0x1ecee8: ; 0x1ecee8
+	db $0, "No! This did not", $4f
+	db "happen!", $57
+; 0x1ecf02
--- a/text/common_2.asm
+++ b/text/common_2.asm
@@ -1,1553 +1,1842 @@
-UnknownText_0x1c0000: ; 1c0000
-	db $0, "Oh, no picture?", $4f
-	db "Come again, OK?", $57
-; 1c0021
+_FruitBearingTreeText: ; 0x1bc000
+	db $0, "It's a fruit-", $4f
+	db "bearing tree.", $57
+; 0x1bc01c
 
-UnknownText_0x1c0021: ; 1c0021
-	db $0, "An EGG? My talent", $4f
-	db "is worth more…", $57
-; 1c0043
+_HeyItsFruitText: ; 0x1bc01c
+	db $0, "Hey! It's", $4f
+	db "@"
+	text_from_ram StringBuffer3
+	db $0, "!", $57
+; 0x1bc02d
 
-UnknownText_0x1c0043: ; 1c0043
-	db $0, "Hello, hello! I'm", $4f
-	db "the NAME RATER.", $51
-	db "I rate the names", $4f
-	db "of #MON.", $51
-	db "Would you like me", $4f
-	db "to rate names?", $57
-; 1c00a0
+_ObtainedFruitText: ; 0x1bc02d
+	db $0, "Obtained", $4f
+	db "@"
+	text_from_ram StringBuffer3
+	db $0, "!", $57
+; 0x1bc03e
 
-UnknownText_0x1c00a0: ; 1c00a0
-	db $0, "Which #MON's", $4f
-	db "nickname should I", $55
-	db "rate for you?", $58
-; 1c00cd
+_FruitPackIsFullText: ; 0x1bc03e
+	db $0, "But the PACK is", $4f
+	db "full…", $57
+; 0x1bc055
 
-UnknownText_0x1c00cd: ; 1c00cd
-	db $0, "Hm… @"
-	text_from_ram $d073
-	db $0, "…", $4f
-	db "That's a fairly", $55
-	db "decent name.", $51
-	db "But, how about a", $4f
-	db "slightly better", $55
-	db "nickname?", $51
-	db "Want me to give it", $4f
-	db "a better name?", $57
-; 1c0142
+_NothingHereText: ; 0x1bc055
+	db $0, "There's nothing", $4f
+	db "here…", $57
+; 0x1bc06b
 
-UnknownText_0x1c0142: ; 1c0142
-	db $0, "All right. What", $4f
-	db "name should we", $55
-	db "give it, then?", $58
-; 1c0171
+UnknownText_0x1bc06b: ; 0x1bc06b
+	db $0, "Which APRICORN", $4f
+	db "should I use?", $57
+; 0x1bc089
 
-UnknownText_0x1c0171: ; 1c0171
-	db $0, "That's a better", $4f
-	db "name than before!", $51
-	db "Well done!", $57
-; 1c019e
+UnknownText_0x1bc089: ; 0x1bc089
+	db $0, "How many should I", $4f
+	db "make?", $57
+; 0x1bc0a2
 
-UnknownText_0x1c019e: ; 1c019e
-	db $0, "OK, then. Come", $4f
-	db "again sometime.", $57
-; 1c01be
-
-UnknownText_0x1c01be: ; 1c01be
-	db $0, "Hm… @"
+UnknownText_0x1bc0a2: ; 0x1bc0a2
 	text_from_ram $d073
-	db $0, "?", $4f
-	db "What a great name!", $55
-	db "It's perfect.", $51
-	db "Treat @"
-	text_from_ram $d073
 	db $0, $4f
-	db "with loving care.", $57
-; 1c0208
+	db "recovered @"
+	deciram $d1f3, $23
+	db $0, "HP!", $57
+; 0x1bc0bb
 
-UnknownText_0x1c0208: ; 1c0208
-	db $0, "Whoa… That's just", $4f
-	db "an EGG.", $57
-; 1c0222
+UnknownText_0x1bc0bb: ; 0x1bc0bb
+	text_from_ram $d073
+	db $0, "'s", $4f
+	db "cured of poison.", $57
+; 0x1bc0d2
 
-UnknownText_0x1c0222: ; 1c0222
-	db $0, "It might look the", $4f
-	db "same as before,", $51
-	db "but this new name", $4f
-	db "is much better!", $51
-	db "Well done!", $57
-; 1c0272
+UnknownText_0x1bc0d2: ; 0x1bc0d2
+	text_from_ram $d073
+	db $0, "'s", $4f
+	db "rid of paralysis.", $57
+; 0x1bc0ea
 
-UnknownText_0x1c0272: ; 1c0272
-	db $0, "All right. This", $4f
-	db "#MON is now", $55
-	db "named @"
+UnknownText_0x1bc0ea: ; 0x1bc0ea
 	text_from_ram $d073
-	db $0, ".", $58
-; 1c029c
+	db $0, "'s", $4f
+	db "burn was healed.", $57
+; 0x1bc101
 
-UnknownText_0x1c029c: ; 1c029c
+UnknownText_0x1bc101: ; 0x1bc101
 	text_from_ram $d073
-	db $0, " gained@"
-	db "@"
-; 1c02a9
+	db $0, $4f
+	db "was defrosted.", $57
+; 0x1bc115
 
-UnknownText_0x1c02a9: ; 1c02a9
+UnknownText_0x1bc115: ; 0x1bc115
+	text_from_ram $d073
 	db $0, $4f
-	db "a boosted", $55
-	db "@"
-	deciram $d086, $24
-	db $0, " EXP. Points!", $58
-; 1c02c9
+	db "woke up.", $57
+; 0x1bc123
 
-UnknownText_0x1c02c9: ; 1c02c9
+UnknownText_0x1bc123: ; 0x1bc123
+	text_from_ram $d073
+	db $0, "'s", $4f
+	db "health returned.", $57
+; 0x1bc13a
+
+UnknownText_0x1bc13a: ; 0x1bc13a
+	text_from_ram $d073
 	db $0, $4f
+	db "is revitalized.", $57
+; 0x1bc14f
+
+UnknownText_0x1bc14f: ; 0x1bc14f
+	text_from_ram $d073
+	db $0, " grew to", $4f
+	db "level @"
+	deciram $d143, $13
+	db $0, "!@"
+	sound0
+	text_waitbutton
 	db "@"
-	deciram $d086, $24
-	db $0, " EXP. Points!", $58
-; 1c02df
+; 0x1bc16d
 
-UnknownText_0x1c02df: ; 1c02df
-	db $0, "Go! @"
+UnknownText_0x1bc16d: ; 0x1bc16d
 	db "@"
-; 1c02e6
+; 0x1bc16e
 
-UnknownText_0x1c02e6: ; 1c02e6
-	db $0, "Do it! @"
+UnknownText_0x1bc16e: ; 0x1bc16e
+	text_from_ram $d073
+	db $0, " came", $4f
+	db "to its senses.", $57
+; 0x1bc187
+
+UnknownText_0x1bc187: ; 0x1bc187
+	db $0, "Please enter any", $4f
+	db "four-digit number.", $57
+; 0x1bc1ac
+
+UnknownText_0x1bc1ac: ; 0x1bc1ac
+	db $0, "Enter the same", $4f
+	db "number to confirm.", $57
+; 0x1bc1cf
+
+UnknownText_0x1bc1cf: ; 0x1bc1cf
+	db $0, "That's not the", $4f
+	db "same number.", $57
+; 0x1bc1eb
+
+UnknownText_0x1bc1eb: ; 0x1bc1eb
+	db $0, "Your PASSCODE has", $4f
+	db "been set.", $51
+	db "Enter this number", $4f
+	db "next time to open", $55
+	db "the CARD FOLDER.", $51
+	db $57
+; 0x1bc23e
+
+UnknownText_0x1bc23e: ; 0x1bc23e
+	db $0, "0000 is invalid!", $51
+	db $57
+; 0x1bc251
+
+UnknownText_0x1bc251: ; 0x1bc251
+	db $0, "Enter the CARD", $4e, "FOLDER PASSCODE.", $57
+; 0x1bc272
+
+UnknownText_0x1bc272: ; 0x1bc272
+	db $0, "Incorrect", $4f
+	db "PASSCODE!", $51
+	db $57
+; 0x1bc288
+
+UnknownText_0x1bc288: ; 0x1bc288
+	db $0, "CARD FOLDER open.@"
 	db "@"
-; 1c02f0
+; 0x1bc29c
 
-UnknownText_0x1c02f0: ; 1c02f0
-	db $0, "Go for it,", $4f
+UnknownText_0x1bc29c: ; 0x1bc29c
+	db $0, $56, $56, $56, $56, $56, $56, $4f
+	db $56, $56, $56, $56, $56, $56, $51
+	db "Zzz… Hm? Wha…?", $4f
+	db "You woke me up!", $51
+	db "Will you check the", $4f
+	db "clock for me?", $58
+; 0x1bc2eb
+
+UnknownText_0x1bc2eb: ; 0x1bc2eb
+	db $0, "What time is it?", $57
+; 0x1bc2fd
+
+UnknownText_0x1bc2fd: ; 0x1bc2fd
+	db $0, "What?@"
 	db "@"
-	db "@"
-; 1c02fe
+; 0x1bc305
 
-UnknownText_0x1c02fe: ; 1c02fe
-	db $0, "Your foe's weak!", $4f
-	db "Get'm, @"
+UnknownText_0x1bc305: ; 0x1bc305
+	db $0, "?", $57
+; 0x1bc308
+
+UnknownText_0x1bc308: ; 0x1bc308
+	db $0, "How many minutes?", $57
+; 0x1bc31b
+
+UnknownText_0x1bc31b: ; 0x1bc31b
+	db $0, "Whoa!@"
 	db "@"
-; 1c0317
+; 0x1bc323
 
-UnknownText_0x1c0317: ; 1c0317
-	text_from_ram $c621
-	db $0, "!", $57
-; 1c031d
+UnknownText_0x1bc323: ; 0x1bc323
+	db $0, "?", $57
+; 0x1bc326
 
-UnknownText_0x1c031d: ; 1c031d
-	text_from_ram $c621
-	db $0, ",@"
+UnknownText_0x1bc326: ; 0x1bc326
+	db $0, "!", $4f
+	db "I overslept!", $57
+; 0x1bc336
+
+UnknownText_0x1bc336: ; 0x1bc336
+	db $0, "!", $4f
+	db "Yikes! I over-", $55
+	db "slept!", $57
+; 0x1bc34f
+
+UnknownText_0x1bc34f: ; 0x1bc34f
+	db $0, "!", $4f
+	db "No wonder it's so", $55
+	db "dark!", $57
+; 0x1bc369
+
+UnknownText_0x1bc369: ; 0x1bc369
+	db $0, "What day is it?", $57
+; 0x1bc37a
+
+UnknownText_0x1bc37a: ; 0x1bc37a
+	db $0, ", is it?", $57
+; 0x1bc384
+
+UnknownText_0x1bc384: ; 0x1bc384
+	db $0, "There is nothing", $4f
+	db "connected.", $57
+; 0x1bc3a1
+
+UnknownText_0x1bc3a1: ; 0x1bc3a1
+	db $0, "Check cell phone", $4f
+	db "adapter.", $57
+; 0x1bc3bc
+
+UnknownText_0x1bc3bc: ; 0x1bc3bc
+	db $0, "Check CDMA", $4f
+	db "adapter.", $57
+; 0x1bc3d1
+
+UnknownText_0x1bc3d1: ; 0x1bc3d1
+	db $0, "Check DOCOMO PHS", $4f
+	db "adapter.", $57
+; 0x1bc3ec
+
+UnknownText_0x1bc3ec: ; 0x1bc3ec
+	db $0, "Check DDI PHS", $4f
+	db "adapter.", $57
+; 0x1bc404
+
+UnknownText_0x1bc404: ; 0x1bc404
+	db $0, "Check unlimited", $4f
+	db "battle mobile", $55
+	db "adapter.", $57
+; 0x1bc42c
+
+UnknownText_0x1bc42c: ; 0x1bc42c
+	db $0, "The password is:", $4f
+	db $57
+; 0x1bc43f
+
+UnknownText_0x1bc43f: ; 0x1bc43f
+	db $0, "Is this OK?", $57
+; 0x1bc44c
+
+UnknownText_0x1bc44c: ; 0x1bc44c
+	db $0, "Enter the", $4f
+	db "ID no.", $57
+; 0x1bc45e
+
+UnknownText_0x1bc45e: ; 0x1bc45e
+	db $0, "Enter the", $4f
+	db "amount.", $57
+; 0x1bc471
+
+UnknownText_0x1bc471: ; 0x1bc471
+	db $0, "There's nothing to", $4f
+	db "choose.", $58
+; 0x1bc48c
+
+UnknownText_0x1bc48c: ; 0x1bc48c
+	db $0, "Which side do you", $4f
+	db "want to put it on?", $57
+; 0x1bc4b2
+
+UnknownText_0x1bc4b2: ; 0x1bc4b2
+	db $0, "Which side do you", $4f
+	db "want to put away?", $57
+; 0x1bc4d7
+
+UnknownText_0x1bc4d7: ; 0x1bc4d7
+	db $0, "Put away the", $4f
 	db "@"
-; 1c0324
+	text_from_ram $d099
+	db $0, ".", $58
+; 0x1bc4ec
 
-UnknownText_0x1c0324: ; 1c0324
-	db $0, " that's", $4f
-	db "enough! Come back!@"
+UnknownText_0x1bc4ec: ; 0x1bc4ec
+	db $0, "There's nothing to", $4f
+	db "put away.", $58
+; 0x1bc509
+
+UnknownText_0x1bc509: ; 0x1bc509
+	db $0, "Set up the", $4f
 	db "@"
-; 1c0340
+	text_from_ram $d099
+	db $0, ".", $58
+; 0x1bc51c
 
-UnknownText_0x1c0340: ; 1c0340
-	db $0, " OK!", $4f
-	db "Come back!@"
+UnknownText_0x1bc51c: ; 0x1bc51c
+	db $0, "Put away the", $4f
 	db "@"
-; 1c0352
+	text_from_ram $d099
+	db $0, $51
+	db "and set up the", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, ".", $58
+; 0x1bc546
 
-UnknownText_0x1c0352: ; 1c0352
-	db $0, " good!", $4f
-	db "Come back!@"
+UnknownText_0x1bc546: ; 0x1bc546
+	db $0, "That's already set", $4f
+	db "up.", $58
+; 0x1bc55d
+
+UnknownText_0x1bc55d: ; 0x1bc55d
+	db $0, "It's the TOWN MAP.", $57
+; 0x1bc570
+
+UnknownText_0x1bc570: ; 0x1bc570
+	db $0, "It's a poster of a", $4f
+	db "cute PIKACHU.", $57
+; 0x1bc591
+
+UnknownText_0x1bc591: ; 0x1bc591
+	db $0, "It's a poster of a", $4f
+	db "cute CLEFAIRY.", $57
+; 0x1bc5b3
+
+UnknownText_0x1bc5b3: ; 0x1bc5b3
+	db $0, "It's a poster of a", $4f
+	db "cute JIGGLYPUFF.", $57
+; 0x1bc5d7
+
+UnknownText_0x1bc5d7: ; 0x1bc5d7
+	db $0, "It's an adorable", $4f
 	db "@"
-; 1c0366
+	text_from_ram $d099
+	db $0, ".", $57
+; 0x1bc5ef
 
-UnknownText_0x1c0366: ; 1c0366
-	db $0, " come", $4f
-	db "back!", $57
-; 1c0373
+UnknownText_0x1bc5ef: ; 0x1bc5ef
+	db $0, "A giant doll! It's", $4f
+	db "fluffy and cuddly.", $57
+; 0x1bc615
 
-UnknownText_0x1c0373: ; 1c0373
-	db $0, "Booted up a TM.", $58
-; 1c0384
+UnknownText_0x1bc615: ; 0x1bc615
+	db $0, "Hi, ", $52, "!", $4f
+	db "How are you?", $58
+; 0x1bc62a
 
-UnknownText_0x1c0384: ; 1c0384
-	db $0, "Booted up an HM.", $58
-; 1c0396
+UnknownText_0x1bc62a: ; 0x1bc62a
+	db $0, "I found a useful", $4f
+	db "item shopping, so", $58
+; 0x1bc64e
 
-UnknownText_0x1c0396: ; 1c0396
-	db $0, "It contained", $4f
+UnknownText_0x1bc64e: ; 0x1bc64e
+	db $0, "I bought it with", $4f
+	db "your money. Sorry!", $58
+; 0x1bc673
+
+UnknownText_0x1bc673: ; 0x1bc673
+	db $0, "It's in your PC.", $4f
+	db "You'll like it!", $57
+; 0x1bc693
+
+UnknownText_0x1bc693: ; 0x1bc693
+	db $0, "While shopping", $4f
+	db "today, I saw this", $55
+	db "adorable doll, so", $58
+; 0x1bc6c7
+
+UnknownText_0x1bc6c7: ; 0x1bc6c7
+	db $0, "It's in your room.", $4f
+	db "You'll love it!", $57
+; 0x1bc6e9
+
+UnknownText_0x1bc6e9: ; 0x1bc6e9
+	text_from_ram $c6d1
+	db $0, " was", $4f
+	db "sent to @"
+	text_from_ram $c719
+	db $0, ".", $57
+; 0x1bc701
+
+UnknownText_0x1bc701: ; 0x1bc701
+	db $0, $57
+; 0x1bc703
+
+UnknownText_0x1bc703: ; 0x1bc703
+	text_from_ram $c719
+	db $0, " bids", $4f
+	db "farewell to", $57
+; 0x1bc719
+
+UnknownText_0x1bc719: ; 0x1bc719
+	text_from_ram $c703
+	db $0, ".", $57
+; 0x1bc71f
+
+UnknownText_0x1bc71f: ; 0x1bc71f
+	db $0, "Take good care of", $4f
 	db "@"
-	text_from_ram $d086
-	db $0, ".", $51
-	db "Teach @"
-	text_from_ram $d086
-	db $0, $4f
-	db "to a #MON?", $57
-; 1c03c2
+	text_from_ram $c703
+	db $0, ".", $57
+; 0x1bc739
 
-UnknownText_0x1c03c2: ; 1c03c2
-	text_from_ram $d086
-	db $0, " is", $4f
-	db "not compatible", $55
-	db "with @"
-	text_from_ram $d073
-	db $0, ".", $51
-	db "It can't learn", $4f
+UnknownText_0x1bc739: ; 0x1bc739
+	db $0, "For @"
+	text_from_ram $c6e7
+	db $0, "'s", $4f
 	db "@"
-	text_from_ram $d086
-	db $0, ".", $58
-; 1c03fa
+	text_from_ram $c6d1
+	db $0, ",", $57
+; 0x1bc74c
 
-UnknownText_0x1c03fa: ; 1c03fa
-	db $0, "You have no room", $4f
-	db "for any more", $55
+UnknownText_0x1bc74c: ; 0x1bc74c
+	text_from_ram $c719
+	db $0, " sends", $4f
 	db "@"
-	text_from_ram $d073
-	db $0, "S.", $58
-; 1c0421
+	text_from_ram $c703
+	db $0, ".", $57
+; 0x1bc75e
 
-UnknownText_0x1c0421: ; 1c0421
-	db $0, "You received", $4f
+UnknownText_0x1bc75e: ; 0x1bc75e
+	text_from_ram $c719
+	db $0, " will", $4f
+	db "trade @"
+	text_from_ram $c703
 	db "@"
-	text_from_ram $d073
-	db $0, "!", $58
-; 1c0436
+; 0x1bc773
 
-UnknownText_0x1c0436: ; 1c0436
-	db $0, "The link has been", $4f
-	db "cancelled.", $58
-; 1c0454
+UnknownText_0x1bc773: ; 0x1bc773
+	db "@"
+; 0x1bc774
 
-UnknownText_0x1c0454: ; 1c0454
-	db $0, "Communication", $4f
-	db "error.", $58
-; 1c046a
+UnknownText_0x1bc774: ; 0x1bc774
+	db $0, "for @"
+	text_from_ram $c6e7
+	db $0, "'s", $4f
+	db "@"
+	text_from_ram $c6d1
+	db $0, ".", $57
+; 0x1bc787
 
-UnknownText_0x1c046a: ; 1c046a
-	db $0, "Must retrieve GIFT", $4f
-	db "at #MON CENTER.", $58
-; 1c048e
+UnknownText_0x1bc787: ; 0x1bc787
+	text_from_ram $c6e7
+	db $0, " will", $4f
+	db "trade @"
+	text_from_ram $c6d1
+	db "@"
+; 0x1bc79c
 
-UnknownText_0x1c048e: ; 1c048e
-	db $0, "Your friend isn't", $4f
-	db "ready.", $58
-; 1c04a7
+UnknownText_0x1bc79c: ; 0x1bc79c
+	db "@"
+; 0x1bc79d
 
-UnknownText_0x1c04a7: ; 1c04a7
-	db $0, "Sorry--only five", $4f
-	db "GIFTS a day.", $58
-; 1c04c6
+UnknownText_0x1bc79d: ; 0x1bc79d
+	db $0, "for @"
+	text_from_ram $c719
+	db $0, "'s", $4f
+	db "@"
+	text_from_ram $c703
+	db $0, ".", $57
+; 0x1bc7b0
 
-UnknownText_0x1c04c6: ; 1c04c6
-	db $0, "Sorry. One GIFT", $4f
-	db "a day per person.", $58
-; 1c04e9
+UnknownText_0x1bc7b0: ; 0x1bc7b0
+	text_from_ram $c6e7
+	db $0, "'s", $4f
+	db "@"
+	text_from_ram $c6d1
+	db $0, " trade…", $57
+; 0x1bc7c3
 
-UnknownText_0x1c04e9: ; 1c04e9
-	text_from_ram $c903
-	db $0, " sent", $4f
+UnknownText_0x1bc7c3: ; 0x1bc7c3
+	db $0, "Take good care of", $4f
 	db "@"
-	text_from_ram $d073
-	db $0, ".", $58
-; 1c04fa
+	text_from_ram $c703
+	db $0, ".", $57
+; 0x1bc7dd
 
-UnknownText_0x1c04fa: ; 1c04fa
-	text_from_ram $c903
-	db $0, " sent", $4f
+UnknownText_0x1bc7dd: ; 0x1bc7dd
+	text_from_ram $c6e7
+	db $0, "'s", $4f
 	db "@"
-	text_from_ram $d073
-	db $0, $55
-	db "to @"
-	text_from_ram $c953
-	db $0, "'s home.", $58
-; 1c051a
+	text_from_ram $c6d1
+	db $0, " trade…", $57
+; 0x1bc7f0
 
-UnknownText_0x1c051a: ; 1c051a
-	db $0, "Received", $4f
+UnknownText_0x1bc7f0: ; 0x1bc7f0
+	db $0, "Take good care of", $4f
 	db "@"
-	text_from_ram $c850
-	db $0, "'s CARD.", $58
-; 1c0531
+	text_from_ram $c703
+	db $0, ".", $57
+; 0x1bc80a
 
-UnknownText_0x1c0531: ; 1c0531
-	text_from_ram $c850
-	db $0, "'s CARD was", $4f
-	db "listed as no.@"
-	deciram $d265, $12
-	db $0, ".", $58
-; 1c0555
+UnknownText_0x1bc80a: ; 0x1bc80a
+	text_from_ram $c703
+	db $0, " came", $4f
+	db "back!", $57
+; 0x1bc81a
 
-UnknownText_0x1c0555: ; 1c0555
-	db $0, "The CARD was not", $4f
-	db "registered.", $58
-; 1c0573
+UnknownText_0x1bc81a: ; 0x1bc81a
+	db $0, $4f
+	db "MARY: PROF.OAK'S", $57
+; 0x1bc82d
 
-UnknownText_0x1c0573: ; 1c0573
-	db $0, "The link has been", $4f
-	db "cancelled.", $58
-; 1c0591
+UnknownText_0x1bc82d: ; 0x1bc82d
+	db $0, $4f
+	db "#MON TALK!", $57
+; 0x1bc83a
 
-UnknownText_0x1c0591: ; 1c0591
-	db $0, "Communication", $4f
-	db "error.", $58
-; 1c05a7
+UnknownText_0x1bc83a: ; 0x1bc83a
+	db $0, $4f
+	db "With me, MARY!", $57
+; 0x1bc84b
 
-_BadgeRequiredText: ; 1c05a7
-	db $0, "Sorry! A new BADGE", $4f
-	db "is required.", $58
-; 1c05c8
+UnknownText_0x1bc84b: ; 0x1bc84b
+	db $0, $4f
+	db "OAK: @"
+	text_from_ram $d050
+	db "@"
+; 0x1bc857
 
-UnknownText_0x1c05c8: ; 1c05c8
-	db $0, "Can't use that", $4f
-	db "here.", $58
-; 1c05dd
+UnknownText_0x1bc857: ; 0x1bc857
+	db "@"
+; 0x1bc858
 
-UnknownText_0x1c05dd: ; 1c05dd
-	text_from_ram $d086
-	db $0, " used", $4f
-	db "CUT!", $58
-; 1c05ec
+UnknownText_0x1bc858: ; 0x1bc858
+	db $0, $4f
+	db "may be seen around", $57
+; 0x1bc86d
 
-UnknownText_0x1c05ec: ; 1c05ec
-	db $0, "There's nothing to", $4f
-	db "CUT here.", $58
-; 1c0609
-
-UnknownText_0x1c0609: ; 1c0609
-	db $0, "A blinding FLASH", $4f
-	db "lights the area!@"
-	text_waitbutton
+UnknownText_0x1bc86d: ; 0x1bc86d
+	db $0, $4f
 	db "@"
-; 1c062e
+	text_from_ram $d073
+	db $0, ".", $57
+; 0x1bc876
 
-UnknownText_0x1c062e: ; 1c062e
-	db "@"
-; 1c062f
+UnknownText_0x1bc876: ; 0x1bc876
+	db $0, $4f
+	db "MARY: @"
+	text_from_ram $d073
+	db $0, "'s", $57
+; 0x1bc885
 
-_UsedSurfText: ; 1c062f
-	text_from_ram $d086
-	db $0, " used", $4f
-	db "SURF!", $57
-; 1c063f
+UnknownText_0x1bc885: ; 0x1bc885
+	db $0, $4f
+	db "sweet and adorably", $57
+; 0x1bc89a
 
-_CantSurfText: ; 1c063f
-	db $0, "You can't SURF", $4f
-	db "here.", $58
-; 1c0654
+UnknownText_0x1bc89a: ; 0x1bc89a
+	db $0, $4f
+	db "wiggly and slickly", $57
+; 0x1bc8af
 
-_AlreadySurfingText: ; 1c0654
-	db $0, "You're already", $4f
-	db "SURFING.", $58
-; 1c066c
+UnknownText_0x1bc8af: ; 0x1bc8af
+	db $0, $4f
+	db "aptly named and", $57
+; 0x1bc8c1
 
-_AskSurfText: ; 1c066c
-	db $0, "The water is calm.", $4f
-	db "Want to SURF?", $57
-; 1c068e
+UnknownText_0x1bc8c1: ; 0x1bc8c1
+	db $0, $4f
+	db "undeniably kind of", $57
+; 0x1bc8d6
 
-UnknownText_0x1c068e: ; 1c068e
-	text_from_ram $d086
-	db $0, " used", $4f
-	db "WATERFALL!", $57
-; 1c06a3
+UnknownText_0x1bc8d6: ; 0x1bc8d6
+	db $0, $4f
+	db "so, so unbearably", $57
+; 0x1bc8ea
 
-UnknownText_0x1c06a3: ; 1c06a3
-	db $0, "Wow, it's a huge", $4f
-	db "waterfall.", $57
-; 1c06bf
+UnknownText_0x1bc8ea: ; 0x1bc8ea
+	db $0, $4f
+	db "wow, impressively", $57
+; 0x1bc8fe
 
-UnknownText_0x1c06bf: ; 1c06bf
-	db $0, "Do you want to use", $4f
-	db "WATERFALL?", $57
-; 1c06de
+UnknownText_0x1bc8fe: ; 0x1bc8fe
+	db $0, $4f
+	db "almost poisonously", $57
+; 0x1bc913
 
-UnknownText_0x1c06de: ; 1c06de
-	text_from_ram $d086
-	db $0, " used", $4f
-	db "DIG!", $57
-; 1c06ed
+UnknownText_0x1bc913: ; 0x1bc913
+	db $0, $4f
+	db "ooh, so sensually", $57
+; 0x1bc927
 
-UnknownText_0x1c06ed: ; 1c06ed
-	db $0, $52, " used an", $4f
-	db "ESCAPE ROPE.", $57
-; 1c0705
+UnknownText_0x1bc927: ; 0x1bc927
+	db $0, $4f
+	db "so mischievously", $57
+; 0x1bc93a
 
-UnknownText_0x1c0705: ; 1c0705
-	db $0, "Can't use that", $4f
-	db "here.", $57
-; 1c071a
+UnknownText_0x1bc93a: ; 0x1bc93a
+	db $0, $4f
+	db "so very topically", $57
+; 0x1bc94e
 
-UnknownText_0x1c071a: ; 1c071a
-	db $0, "Return to the last", $4f
-	db "#MON CENTER.", $57
-; 1c073b
+UnknownText_0x1bc94e: ; 0x1bc94e
+	db $0, $4f
+	db "sure addictively", $57
+; 0x1bc961
 
-UnknownText_0x1c073b: ; 1c073b
-	db $0, "Can't use that", $4f
-	db "here.", $51
-	db $57
-; 1c0751
+UnknownText_0x1bc961: ; 0x1bc961
+	db $0, $4f
+	db "looks in water is", $57
+; 0x1bc975
 
-UnknownText_0x1c0751: ; 1c0751
-	db $0, "A #MON is using", $4f
-	db "STRENGTH already.", $58
-; 1c0774
+UnknownText_0x1bc975: ; 0x1bc975
+	db $0, $4f
+	db "evolution must be", $57
+; 0x1bc989
 
-UnknownText_0x1c0774: ; 1c0774
-	text_from_ram $d086
-	db $0, " used", $4f
-	db "STRENGTH!", $57
-; 1c0788
+UnknownText_0x1bc989: ; 0x1bc989
+	db $0, $4f
+	db "provocatively", $57
+; 0x1bc999
 
-UnknownText_0x1c0788: ; 1c0788
-	text_from_ram $d073
-	db $0, " can", $4f
-	db "move boulders.", $58
-; 1c07a0
+UnknownText_0x1bc999: ; 0x1bc999
+	db $0, $4f
+	db "so flipped out and", $57
+; 0x1bc9ae
 
-UnknownText_0x1c07a0: ; 1c07a0
-	db $0, "A #MON may be", $4f
-	db "able to move this.", $51
-	db "Want to use", $4f
-	db "STRENGTH?", $57
-; 1c07d8
+UnknownText_0x1bc9ae: ; 0x1bc9ae
+	db $0, $4f
+	db "heart-meltingly", $57
+; 0x1bc9c0
 
-UnknownText_0x1c07d8: ; 1c07d8
-	db $0, "Boulders may now", $4f
-	db "be moved!", $57
-; 1c07f4
+UnknownText_0x1bc9c0: ; 0x1bc9c0
+	db $0, $4f
+	db "cute.", $57
+; 0x1bc9c8
 
-UnknownText_0x1c07f4: ; 1c07f4
-	db $0, "A #MON may be", $4f
-	db "able to move this.", $57
-; 1c0816
+UnknownText_0x1bc9c8: ; 0x1bc9c8
+	db $0, $4f
+	db "weird.", $57
+; 0x1bc9d1
 
-UnknownText_0x1c0816: ; 1c0816
-	text_from_ram $d086
-	db $0, " used", $4f
-	db "WHIRLPOOL!", $58
-; 1c082b
+UnknownText_0x1bc9d1: ; 0x1bc9d1
+	db $0, $4f
+	db "pleasant.", $57
+; 0x1bc9dd
 
-UnknownText_0x1c082b: ; 1c082b
-	db $0, "It's a vicious", $4f
-	db "whirlpool!", $51
-	db "A #MON may be", $4f
-	db "able to pass it.", $57
-; 1c0864
+UnknownText_0x1bc9dd: ; 0x1bc9dd
+	db $0, $4f
+	db "bold, sort of.", $57
+; 0x1bc9ee
 
-UnknownText_0x1c0864: ; 1c0864
-	db $0, "A whirlpool is in", $4f
-	db "the way.", $51
-	db "Want to use", $4f
-	db "WHIRLPOOL?", $57
-; 1c0897
+UnknownText_0x1bc9ee: ; 0x1bc9ee
+	db $0, $4f
+	db "frightening.", $57
+; 0x1bc9fd
 
-UnknownText_0x1c0897: ; 1c0897
-	text_from_ram $d086
-	db $0, " did a", $4f
-	db "HEADBUTT!", $58
-; 1c08ac
+UnknownText_0x1bc9fd: ; 0x1bc9fd
+	db $0, $4f
+	db "suave & debonair!", $57
+; 0x1bca11
 
-UnknownText_0x1c08ac: ; 1c08ac
-	db $0, "Nope. Nothing…", $57
-; 1c08bc
+UnknownText_0x1bca11: ; 0x1bca11
+	db $0, $4f
+	db "powerful.", $57
+; 0x1bca1d
 
-UnknownText_0x1c08bc: ; 1c08bc
-	db $0, "A #MON could be", $4f
-	db "in this tree.", $51
-	db "Want to HEADBUTT", $4f
-	db "it?", $57
-; 1c08f0
+UnknownText_0x1bca1d: ; 0x1bca1d
+	db $0, $4f
+	db "exciting.", $57
+; 0x1bca29
 
-UnknownText_0x1c08f0: ; 1c08f0
-	text_from_ram $d086
-	db $0, " used", $4f
-	db "ROCK SMASH!", $58
-; 1c0906
+UnknownText_0x1bca29: ; 0x1bca29
+	db $0, $4f
+	db "groovy!", $57
+; 0x1bca33
 
-UnknownText_0x1c0906: ; 1c0906
-	db $0, "Maybe a #MON", $4f
-	db "can break this.", $57
-; 1c0924
+UnknownText_0x1bca33: ; 0x1bca33
+	db $0, $4f
+	db "inspiring.", $57
+; 0x1bca40
 
-UnknownText_0x1c0924: ; 1c0924
-	db $0, "This rock looks", $4f
-	db "breakable.", $51
-	db "Want to use ROCK", $4f
-	db "SMASH?", $57
-; 1c0958
+UnknownText_0x1bca40: ; 0x1bca40
+	db $0, $4f
+	db "friendly.", $57
+; 0x1bca4c
 
-UnknownText_0x1c0958: ; 1c0958
-	db $0, "Oh!", $4f
-	db "A bite!", $58
-; 1c0965
+UnknownText_0x1bca4c: ; 0x1bca4c
+	db $0, $4f
+	db "hot, hot, hot!", $57
+; 0x1bca5d
 
-UnknownText_0x1c0965: ; 1c0965
-	db $0, "Not even a nibble!", $58
-; 1c0979
+UnknownText_0x1bca5d: ; 0x1bca5d
+	db $0, $4f
+	db "stimulating.", $57
+; 0x1bca6c
 
-UnknownText_0x1c0979: ; 1c0979
-	db $0, "Looks like there's", $4f
-	db "nothing here.", $58
-; 1c099a
+UnknownText_0x1bca6c: ; 0x1bca6c
+	db $0, $4f
+	db "guarded.", $57
+; 0x1bca77
 
-UnknownText_0x1c099a: ; 1c099a
-	db $0, "You can't get off", $4f
-	db "here!", $57
-; 1c09b2
+UnknownText_0x1bca77: ; 0x1bca77
+	db $0, $4f
+	db "lovely.", $57
+; 0x1bca81
 
-UnknownText_0x1c09b2: ; 1c09b2
-	db $0, $52, " got on the", $4f
+UnknownText_0x1bca81: ; 0x1bca81
+	db $0, $4f
+	db "speedy.", $57
+; 0x1bca8b
+
+UnknownText_0x1bca8b: ; 0x1bca8b
+	db $0, "#MON", $57
+; 0x1bca91
+
+UnknownText_0x1bca91: ; 0x1bca91
+	db $0, $4f
 	db "@"
-	text_from_ram $d086
-	db $0, ".", $57
-; 1c09c7
+	text_from_ram $d073
+	db "@"
+; 0x1bca98
 
-UnknownText_0x1c09c7: ; 1c09c7
-	db $0, $52, " got off", $4f
-	db "the @"
-	text_from_ram $d086
-	db $0, ".", $57
-; 1c09dd
+UnknownText_0x1bca98: ; 0x1bca98
+	db "@"
+; 0x1bca99
 
-UnknownText_0x1c09dd: ; 1c09dd
-	db $0, "This tree can be", $4f
-	db "CUT!", $51
-	db "Want to use CUT?", $57
-; 1c0a05
+UnknownText_0x1bca99: ; 0x1bca99
+	db $0, $4f
+	db "BEN: #MON MUSIC", $57
+; 0x1bcaab
 
-UnknownText_0x1c0a05: ; 1c0a05
-	db $0, "This tree can be", $4f
-	db "CUT!", $57
-; 1c0a1c
+UnknownText_0x1bcaab: ; 0x1bcaab
+	db $0, $4f
+	db "CHANNEL!", $57
+; 0x1bcab6
 
-UnknownText_0x1c0a1c: ; 1c0a1c
-	db $0, $52, " found", $4f
-	db "@"
-	text_from_ram $d099
-	db $0, "!", $57
-; 1c0a2c
+UnknownText_0x1bcab6: ; 0x1bcab6
+	db $0, $4f
+	db "It's me, DJ BEN!", $57
+; 0x1bcac8
 
-UnknownText_0x1c0a2c: ; 1c0a2c
-	db $0, "But ", $52, " can't", $4f
-	db "carry any more", $55
-	db "items.", $57
-; 1c0a4e
+UnknownText_0x1bcac8: ; 0x1bcac8
+	db $0, $4f
+	db "FERN: #MUSIC!", $57
+; 0x1bcad8
 
-UnknownText_0x1c0a4e: ; 1c0a4e
-	db $0, $52, " is out of", $4f
-	db "useable #MON!", $51
-	db $52, " whited", $4f
-	db "out!", $57
-; 1c0a77
+UnknownText_0x1bcad8: ; 0x1bcad8
+	db $0, $4f
+	db "With DJ FERN!", $57
+; 0x1bcae8
 
-UnknownText_0x1c0a77: ; 1c0a77
-	db $0, "Yes! ITEMFINDER", $4f
-	db "indicates there's", $55
-	db "an item nearby.", $58
-; 1c0aa9
+UnknownText_0x1bcae8: ; 0x1bcae8
+	db $0, $4f
+	db "Today's @"
+	current_day
+	db $0, ",", $57
+; 0x1bcaf6
 
-UnknownText_0x1c0aa9: ; 1c0aa9
-	db $0, "Nope! ITEMFINDER", $4f
-	db "isn't responding.", $58
-; 1c0acc
+UnknownText_0x1bcaf6: ; 0x1bcaf6
+	db $0, $4f
+	db "so let us jam to", $57
+; 0x1bcb09
 
-UnknownText_0x1c0acc: ; 1c0acc
-	text_from_ram $d099
+UnknownText_0x1bcb09: ; 0x1bcb09
 	db $0, $4f
-	db "fainted!", $58
-; 1c0ada
+	db "so chill out to", $57
+; 0x1bcb1b
 
-UnknownText_0x1c0ada: ; 1c0ada
-	db $0, $52, " is out of", $4f
-	db "useable #MON!", $51
-	db $52, " whited", $4f
-	db "out!", $58
-; 1c0b03
+UnknownText_0x1bcb1b: ; 0x1bcb1b
+	db $0, $4f
+	db "#MON March!", $57
+; 0x1bcb29
 
-UnknownText_0x1c0b03: ; 1c0b03
-	text_from_ram $d099
-	db $0, " used", $4f
-	db "SWEET SCENT!", $57
-; 1c0b1a
+UnknownText_0x1bcb29: ; 0x1bcb29
+	db $0, $4f
+	db "#MON Lullaby!", $57
+; 0x1bcb39
 
-UnknownText_0x1c0b1a: ; 1c0b1a
-	db $0, "Looks like there's", $4f
-	db "nothing here…", $57
-; 1c0b3b
+UnknownText_0x1bcb39: ; 0x1bcb39
+	db $0, $4f
+	db "REED: Yeehaw! How", $57
+; 0x1bcb4d
 
-UnknownText_0x1c0b3b: ; 1c0b3b
-	db $0, $52, " sprinkled", $4f
-	db "water.", $51
-	db "But nothing", $4f
-	db "happened…", $57
-; 1c0b65
+UnknownText_0x1bcb4d: ; 0x1bcb4d
+	db $0, $4f
+	db "y'all doin' now?", $57
+; 0x1bcb60
 
-UnknownText_0x1c0b65: ; 1c0b65
-	db $0, $52, "'s #MON", $4f
-	db "were all healed!", $57
-; 1c0b7f
+UnknownText_0x1bcb60: ; 0x1bcb60
+	db $0, $4f
+	db "Whether you're up", $57
+; 0x1bcb73
 
-UnknownText_0x1c0b7f: ; 1c0b7f
-	db $0, "An EGG can't hold", $4f
-	db "an item.", $58
-; 1c0b9a
+UnknownText_0x1bcb73: ; 0x1bcb73
+	db $0, $4f
+	db "or way down low,", $57
+; 0x1bcb86
 
-UnknownText_0x1c0b9a: ; 1c0b9a
-	db $0, "No items.", $57
-; 1c0ba5
+UnknownText_0x1bcb86: ; 0x1bcb86
+	db $0, $4f
+	db "don't you miss the", $57
+; 0x1bcb9a
 
-UnknownText_0x1c0ba5: ; 1c0ba5
-	db $0, "Throw away how", $4f
-	db "many?", $57
-; 1c0bbb
+UnknownText_0x1bcb9a: ; 0x1bcb9a
+	db $0, $4f
+	db "LUCKY NUMBER SHOW!", $57
+; 0x1bcbaf
 
-UnknownText_0x1c0bbb: ; 1c0bbb
-	db $0, "Throw away @"
-	deciram $d10c, $12
+UnknownText_0x1bcbaf: ; 0x1bcbaf
 	db $0, $4f
-	db "@"
-	text_from_ram $d086
-	db $0, "(S)?", $57
-; 1c0bd8
+	db "This week's Lucky", $57
+; 0x1bcbc2
 
-UnknownText_0x1c0bd8: ; 1c0bd8
-	db $0, "Threw away", $4f
-	db "@"
-	text_from_ram $d086
-	db $0, "(S).", $58
-; 1c0bee
+UnknownText_0x1bcbc2: ; 0x1bcbc2
+	db $0, $4f
+	db "Number is @"
+	interpret_data
+	text_from_ram $d073
+	db $0, "!", $57
+; 0x1bcbd6
 
-UnknownText_0x1c0bee: ; 1c0bee
-	db $0, "OAK: ", $52, "!", $4f
-	db "This isn't the", $55
-	db "time to use that!", $58
-; 1c0c17
+UnknownText_0x1bcbd6: ; 0x1bcbd6
+	db $0, $4f
+	db "I'll repeat that!", $57
+; 0x1bcbe9
+
+UnknownText_0x1bcbe9: ; 0x1bcbe9
+	db $0, $4f
+	db "Match it and go to", $57
+; 0x1bcbfe
 
-UnknownText_0x1c0c17: ; 1c0c17
-	db $0, "You don't have a", $4f
-	db "#MON!", $58
-; 1c0c2e
+UnknownText_0x1bcbfe: ; 0x1bcbfe
+	db $0, $4f
+	db "the RADIO TOWER!", $57
+; 0x1bcc11
 
-UnknownText_0x1c0c2e: ; 1c0c2e
-	db $0, "Registered the", $4f
-	db "@"
-	text_from_ram $d086
-	db $0, ".", $58
-; 1c0c45
+UnknownText_0x1bcc11: ; 0x1bcc11
+	db $0, $4f
+	db "…Repeating myself", $57
+; 0x1bcc25
 
-UnknownText_0x1c0c45: ; 1c0c45
-	db $0, "You can't register", $4f
-	db "that item.", $58
-; 1c0c63
+UnknownText_0x1bcc25: ; 0x1bcc25
+	db $0, $4f
+	db "gets to be a drag…", $57
+; 0x1bcc3a
 
-UnknownText_0x1c0c63: ; 1c0c63
-	db $0, "Where should this", $4f
-	db "be moved to?", $57
-; 1c0c83
+UnknownText_0x1bcc3a: ; 0x1bcc3a
+	db $0, $4f
+	db "PLACES AND PEOPLE!", $57
+; 0x1bcc4f
 
-UnknownText_0x1c0c83: ; 1c0c83
-	db $0, $57
-; 1c0c85
+UnknownText_0x1bcc4f: ; 0x1bcc4f
+	db $0, $4f
+	db "Brought to you by", $57
+; 0x1bcc63
 
-UnknownText_0x1c0c85: ; 1c0c85
-	db $0, "You can't use it", $4f
-	db "in a battle.", $58
-; 1c0ca3
+UnknownText_0x1bcc63: ; 0x1bcc63
+	db $0, $4f
+	db "me, DJ LILY!", $57
+; 0x1bcc72
 
-UnknownText_0x1c0ca3: ; 1c0ca3
-	db $0, "Are you a boy?", $4f
-	db "Or are you a girl?", $57
-; 1c0cc6
-
-UnknownText_0x1c0cc6: ; 1c0cc6
-	db $0, $5a, "'s", $4f
+UnknownText_0x1bcc72: ; 0x1bcc72
+	db $0, $4f
 	db "@"
 	text_from_ram $d086
+	db $0, " @"
+	text_from_ram $d073
 	db "@"
-; 1c0ccf
+; 0x1bcc7f
 
-UnknownText_0x1c0ccf: ; 1c0ccf
+UnknownText_0x1bcc7f: ; 0x1bcc7f
 	db "@"
-; 1c0cd0
+; 0x1bcc80
 
-UnknownText_0x1c0cd0: ; 1c0cd0
-	interpret_data
-	db $0, $4c, "went way up!", $58
-; 1c0ce0
+UnknownText_0x1bcc80: ; 0x1bcc80
+	db $0, $4f
+	db "is cute.", $57
+; 0x1bcc8b
 
-UnknownText_0x1c0ce0: ; 1c0ce0
-	db $0, " went up!", $58
-; 1c0ceb
+UnknownText_0x1bcc8b: ; 0x1bcc8b
+	db $0, $4f
+	db "is sort of lazy.", $57
+; 0x1bcc9e
 
-UnknownText_0x1c0ceb: ; 1c0ceb
-	db $0, $59, "'s", $4f
-	db "@"
-	text_from_ram $d086
-	db "@"
-; 1c0cf4
+UnknownText_0x1bcc9e: ; 0x1bcc9e
+	db $0, $4f
+	db "is always happy.", $57
+; 0x1bccb1
 
-UnknownText_0x1c0cf4: ; 1c0cf4
-	db "@"
-; 1c0cf5
+UnknownText_0x1bccb1: ; 0x1bccb1
+	db $0, $4f
+	db "is quite noisy.", $57
+; 0x1bccc3
 
-UnknownText_0x1c0cf5: ; 1c0cf5
-	interpret_data
-	db $0, $4c, "sharply fell!", $58
-; 1c0d06
+UnknownText_0x1bccc3: ; 0x1bccc3
+	db $0, $4f
+	db "is precocious.", $57
+; 0x1bccd4
 
-UnknownText_0x1c0d06: ; 1c0d06
-	db $0, " fell!", $58
-; 1c0d0e
+UnknownText_0x1bccd4: ; 0x1bccd4
+	db $0, $4f
+	db "is somewhat bold.", $57
+; 0x1bcce8
 
-UnknownText_0x1c0d0e: ; 1c0d0e
-	db $0, $5a, "@"
-	db "@"
-; 1c0d12
+UnknownText_0x1bcce8: ; 0x1bcce8
+	db $0, $4f
+	db "is too picky!", $57
+; 0x1bccf8
 
-UnknownText_0x1c0d12: ; 1c0d12
+UnknownText_0x1bccf8: ; 0x1bccf8
 	db $0, $4f
-	db "made a whirlwind!", $58
-; 1c0d26
+	db "is sort of OK.", $57
+; 0x1bcd09
 
-UnknownText_0x1c0d26: ; 1c0d26
+UnknownText_0x1bcd09: ; 0x1bcd09
 	db $0, $4f
-	db "took in sunlight!", $58
-; 1c0d3a
+	db "is just so-so.", $57
+; 0x1bcd1a
 
-UnknownText_0x1c0d3a: ; 1c0d3a
+UnknownText_0x1bcd1a: ; 0x1bcd1a
 	db $0, $4f
-	db "lowered its head!", $58
-; 1c0d4e
+	db "is actually great.", $57
+; 0x1bcd2f
 
-UnknownText_0x1c0d4e: ; 1c0d4e
+UnknownText_0x1bcd2f: ; 0x1bcd2f
 	db $0, $4f
-	db "is glowing!", $58
-; 1c0d5c
+	db "is just my type.", $57
+; 0x1bcd42
 
-UnknownText_0x1c0d5c: ; 1c0d5c
+UnknownText_0x1bcd42: ; 0x1bcd42
 	db $0, $4f
-	db "flew up high!", $58
-; 1c0d6c
+	db "is so cool, no?", $57
+; 0x1bcd54
 
-UnknownText_0x1c0d6c: ; 1c0d6c
+UnknownText_0x1bcd54: ; 0x1bcd54
 	db $0, $4f
-	db "dug a hole!", $58
-; 1c0d7a
+	db "is inspiring!", $57
+; 0x1bcd64
 
-_ActorNameText: ; 1c0d7a
-	db $0, $5a, "@"
-	db "@"
-; 1c0d7e
+UnknownText_0x1bcd64: ; 0x1bcd64
+	db $0, $4f
+	db "is kind of weird.", $57
+; 0x1bcd78
 
-_UsedMove1Text: ; 1c0d7e
+UnknownText_0x1bcd78: ; 0x1bcd78
 	db $0, $4f
-	db "used @"
-	db "@"
-; 1c0d87
+	db "is right for me?", $57
+; 0x1bcd8b
 
-_UsedMove2Text: ; 1c0d87
+UnknownText_0x1bcd8b: ; 0x1bcd8b
 	db $0, $4f
-	db "used @"
-	db "@"
-; 1c0d90
+	db "is definitely odd!", $57
+; 0x1bcda0
 
-_UsedInsteadText: ; 1c0d90
-	db $0, "instead,", $55
+UnknownText_0x1bcda0: ; 0x1bcda0
+	db $0, $4f
 	db "@"
+	text_from_ram $d073
 	db "@"
-; 1c0d9c
+; 0x1bcda7
 
-_MoveNameText: ; 1c0d9c
-	text_from_ram StringBuffer2
+UnknownText_0x1bcda7: ; 0x1bcda7
 	db "@"
-; 1c0da0
+; 0x1bcda8
 
-UnknownText_0x1c0da0: ; 1c0da0
-	db "@"
-; 1c0da1
+UnknownText_0x1bcda8: ; 0x1bcda8
+	db $0, $4f
+	db "… …Ahem, we are", $57
+; 0x1bcdba
 
-_EndUsedMove1Text: ; 1c0da1
-	db $0, "!", $57
-; 1c0da4
+UnknownText_0x1bcdba: ; 0x1bcdba
+	db $0, $4f
+	db "TEAM ROCKET!", $57
+; 0x1bcdc9
 
-_EndUsedMove2Text: ; 1c0da4
-	db $0, "!", $57
-; 1c0da7
+UnknownText_0x1bcdc9: ; 0x1bcdc9
+	db $0, $4f
+	db "After three years", $57
+; 0x1bcddd
 
-_EndUsedMove3Text: ; 1c0da7
-	db $0, "!", $57
-; 1c0daa
+UnknownText_0x1bcddd: ; 0x1bcddd
+	db $0, $4f
+	db "of preparation, we", $57
+; 0x1bcdf2
 
-_EndUsedMove4Text: ; 1c0daa
-	db $0, "!", $57
-; 1c0dad
+UnknownText_0x1bcdf2: ; 0x1bcdf2
+	db $0, $4f
+	db "have risen again", $57
+; 0x1bce05
 
-_EndUsedMove5Text: ; 1c0dad
-	db $0, "!", $57
-; 1c0db0
+UnknownText_0x1bce05: ; 0x1bce05
+	db $0, $4f
+	db "from the ashes!", $57
+; 0x1bce17
 
-UnknownText_0x1c0db0: ; 1c0db0
-	db $0, "Huh?", $51
-	db "@"
-	db "@"
-; 1c0db8
+UnknownText_0x1bce17: ; 0x1bce17
+	db $0, $4f
+	db "GIOVANNI! @"
+	interpret_data
+	db $0, "Can you", $57
+; 0x1bce2e
 
-UnknownText_0x1c0db8: ; 1c0db8
-	db $0, $57
-; 1c0dba
+UnknownText_0x1bce2e: ; 0x1bce2e
+	db $0, $4f
+	db "hear?@"
+	interpret_data
+	db $0, " We did it!", $57
+; 0x1bce44
 
-UnknownText_0x1c0dba: ; 1c0dba
-	text_from_ram StringBuffer1
-	db $0, " came", $4f
-	db "out of its EGG!@"
-	sound0x02
-	text_waitbutton
+UnknownText_0x1bce44: ; 0x1bce44
+	db $0, $4f
 	db "@"
-; 1c0dd7
+	interpret_data
+	db $0, "Where is our boss?", $57
+; 0x1bce5c
 
-UnknownText_0x1c0dd7: ; 1c0dd7
+UnknownText_0x1bce5c: ; 0x1bce5c
+	db $0, $4f
 	db "@"
-; 1c0dd8
+	interpret_data
+	db $0, "Is he listening?", $57
+; 0x1bce72
 
-UnknownText_0x1c0dd8: ; 1c0dd8
-	db $0, "Give a nickname to", $4f
+UnknownText_0x1bce72: ; 0x1bce72
+	db $0, $4f
+	db "BUENA: BUENA here!", $57
+; 0x1bce87
+
+UnknownText_0x1bce87: ; 0x1bce87
+	db $0, $4f
+	db "Today's password!", $57
+; 0x1bce9a
+
+UnknownText_0x1bce9a: ; 0x1bce9a
+	db $0, $4f
+	db "Let me think… It's", $57
+; 0x1bceae
+
+UnknownText_0x1bceae: ; 0x1bceae
+	db $0, $4f
 	db "@"
-	text_from_ram StringBuffer1
-	db $0, "?", $57
-; 1c0df3
+	text_from_ram $d073
+	db $0, "!", $57
+; 0x1bceb7
 
-UnknownText_0x1c0df3: ; 1c0df3
-	db $0, "It's @"
-	text_from_ram $df2f
+UnknownText_0x1bceb7: ; 0x1bceb7
 	db $0, $4f
-	db "that was left with", $55
-	db "the DAY-CARE LADY.", $57
-; 1c0e24
+	db "Don't forget it!", $57
+; 0x1bcec9
 
-UnknownText_0x1c0e24: ; 1c0e24
-	db $0, "It's @"
-	text_from_ram $def6
+UnknownText_0x1bcec9: ; 0x1bcec9
 	db $0, $4f
-	db "that was left with", $55
-	db "the DAY-CARE MAN.", $57
-; 1c0e54
+	db "I'm in GOLDENROD's", $57
+; 0x1bcedc
 
-UnknownText_0x1c0e54: ; 1c0e54
-	db $0, "It's brimming with", $4f
-	db "energy.", $58
-; 1c0e6f
+UnknownText_0x1bcedc: ; 0x1bcedc
+	db $0, $4f
+	db "RADIO TOWER!", $57
+; 0x1bceeb
 
-UnknownText_0x1c0e6f: ; 1c0e6f
-	db $0, "It has no interest", $4f
-	db "in @"
-	text_from_ram $d073
-	db $0, ".", $58
-; 1c0e8d
+UnknownText_0x1bceeb: ; 0x1bceeb
+	db $0, $4f
+	db "BUENA: Oh my…", $57
+; 0x1bcefb
 
-UnknownText_0x1c0e8d: ; 1c0e8d
-	db $0, "It appears to care", $4f
-	db "for @"
-	text_from_ram $d073
-	db $0, ".", $58
-; 1c0eac
+UnknownText_0x1bcefb: ; 0x1bcefb
+	db $0, $4f
+	db "It's midnight! I", $57
+; 0x1bcf0d
 
-UnknownText_0x1c0eac: ; 1c0eac
-	db $0, "It's friendly with", $4f
-	db "@"
-	text_from_ram $d073
-	db $0, ".", $58
-; 1c0ec6
+UnknownText_0x1bcf0d: ; 0x1bcf0d
+	db $0, $4f
+	db "have to shut down!", $57
+; 0x1bcf22
 
-UnknownText_0x1c0ec6: ; 1c0ec6
-	db $0, "It shows interest", $4f
-	db "in @"
-	text_from_ram $d073
-	db $0, ".", $58
-; 1c0ee3
+UnknownText_0x1bcf22: ; 0x1bcf22
+	db $0, $4f
+	db "Thanks for tuning", $57
+; 0x1bcf36
 
-_EmptyMailboxText: ; 1c0ee3
-	db $0, "There's no MAIL", $4f
-	db "here.", $58
-; 1c0ef9
+UnknownText_0x1bcf36: ; 0x1bcf36
+	db $0, $4f
+	db "in to the end! But", $57
+; 0x1bcf4b
 
-ClearedMailPutAwayText: ; 1c0ef9
-	db $0, "The cleared MAIL", $4f
-	db "was put away.", $58
-; 1c0f19
+UnknownText_0x1bcf4b: ; 0x1bcf4b
+	db $0, $4f
+	db "don't stay up too", $57
+; 0x1bcf5e
 
-MailPackFullText: ; 1c0f19
-	db $0, "The PACK is full.", $58
-; 1c0f2c
+UnknownText_0x1bcf5e: ; 0x1bcf5e
+	db $0, $4f
+	db "late! Presented to", $57
+; 0x1bcf73
 
-MailMessageLostText: ; 1c0f2c
-	db $0, "The MAIL's message", $4f
-	db "will be lost. OK?", $57
-; 1c0f51
+UnknownText_0x1bcf73: ; 0x1bcf73
+	db $0, $4f
+	db "you by DJ BUENA!", $57
+; 0x1bcf86
 
-MailAlreadyHoldingItemText: ; 1c0f51
-	db $0, "It's already hold-", $4f
-	db "ing an item.", $58
-; 1c0f71
+UnknownText_0x1bcf86: ; 0x1bcf86
+	db $0, "I'm outta here!", $57
+; 0x1bcf96
 
-MailEggText: ; 1c0f71
-	db $0, "An EGG can't hold", $4f
-	db "any MAIL.", $58
-; 1c0f8d
+UnknownText_0x1bcf96: ; 0x1bcf96
+	db $0, "…", $57
+; 0x1bcf99
 
-MailMovedFromBoxText: ; 1c0f8d
-	db $0, "The MAIL was moved", $4f
-	db "from the MAILBOX.", $58
-; 1c0fb3
+UnknownText_0x1bcf99: ; 0x1bcf99
+	db $0, $4f
+	db $57
+; 0x1bcf9c
 
-UnknownText_0x1c0fb3: ; 1c0fb3
-	db $0, "Yes", $58
-; 1c0fb8
+UnknownText_0x1bcf9c: ; 0x1bcf9c
+	db $0, $3f, $4f
+	db "withdrew", $55
+	db "@"
+	text_from_ram $c616
+	db $0, "!", $58
+; 0x1bcfaf
 
-UnknownText_0x1c0fb8: ; 1c0fb8
-	db $0, "No", $58
-; 1c0fbc
+UnknownText_0x1bcfaf: ; 0x1bcfaf
+	db $0, $3f, $4f
+	db "used @"
+	text_from_ram $d050
+	db $0, $55
+	db "on @"
+	text_from_ram $c616
+	db $0, "!", $58
+; 0x1bcfc7
 
-UnknownText_0x1c0fbc: ; 1c0fbc
-	deciram $cf64, $13
-	db $0, " @"
+UnknownText_0x1bcfc7: ; 0x1bcfc7
+	db $0, "That can't be used", $4f
+	db "right now.", $58
+; 0x1bcfe5
+
+UnknownText_0x1bcfe5: ; 0x1bcfe5
+	db $0, "That item can't be", $4f
+	db "put in the PACK.", $57
+; 0x1bd009
+
+UnknownText_0x1bd009: ; 0x1bd009
+	db $0, "The @"
 	text_from_ram $d073
 	db $0, $4f
-	db "Animation type @"
-	text_from_ram $d086
+	db "was put in the", $55
+	db "PACK.", $57
+; 0x1bd029
+
+UnknownText_0x1bd029: ; 0x1bd029
+	db $0, "Remaining Time", $57
+; 0x1bd039
+
+UnknownText_0x1bd039: ; 0x1bd039
+	db $0, "Your #MON's HP", $4f
+	db "was healed.", $58
+; 0x1bd054
+
+UnknownText_0x1bd054: ; 0x1bd054
+	db $0, "Warping…", $57
+; 0x1bd05e
+
+UnknownText_0x1bd05e: ; 0x1bd05e
+	db $0, "Which number", $4f
+	db "should be changed?", $57
+; 0x1bd07f
+
+UnknownText_0x1bd07f: ; 0x1bd07f
+	db $0, "Will you play with", $4f
 	db "@"
-; 1c0fdc
+	text_from_ram $d086
+	db $0, "?", $57
+; 0x1bd09a
 
-UnknownText_0x1c0fdc: ; 1c0fdc
+UnknownText_0x1bd09a: ; 0x1bd09a
+	db $0, "You need two #-", $4f
+	db "MON for breeding.", $58
+; 0x1bd0bd
+
+UnknownText_0x1bd0bd: ; 0x1bd0bd
+	db $0, "Breeding is not", $4f
+	db "possible.", $58
+; 0x1bd0d8
+
+UnknownText_0x1bd0d8: ; 0x1bd0d8
+	db $0, "The compatibility", $4f
+	db "is @"
+	deciram $d265, $13
+	db $0, ".", $55
+	db "Should they breed?", $57
+; 0x1bd109
+
+UnknownText_0x1bd109: ; 0x1bd109
+	db $0, "There is no EGG.", $4f
+	db $58
+; 0x1bd11c
+
+UnknownText_0x1bd11c: ; 0x1bd11c
+	db $0, "It's going to", $4f
+	db "hatch!", $58
+; 0x1bd131
+
+UnknownText_0x1bd131: ; 0x1bd131
+	db $0, "Test event", $4f
 	db "@"
-; 1c0fdd
+	deciram $d086, $12
+	db $0, "?", $57
+; 0x1bd145
 
-UnknownText_0x1c0fdd: ; 1c0fdd
-	db $0, "#MON number?", $57
-; 1c0feb
+UnknownText_0x1bd145: ; 0x1bd145
+	db $0, "Start!", $57
+; 0x1bd14d
 
-UnknownText_0x1c0feb: ; 1c0feb
-	text_from_ram $d073
-	db $0, " was", $4f
-	db "sent to BILL's PC.", $58
-; 1c1006
+UnknownText_0x1bd14d: ; 0x1bd14d
+	db $0, "End!", $57
+; 0x1bd153
 
-UnknownText_0x1c1006: ; 1c1006
-	db $0, "You gotta have", $4f
-	db "#MON to call!", $58
-; 1c1024
+UnknownText_0x1bd153: ; 0x1bd153
+	db $0, "For a boy!", $57
+; 0x1bd15f
 
-UnknownText_0x1c1024: ; 1c1024
-	db $0, "What?", $57
-; 1c102b
+UnknownText_0x1bd15f: ; 0x1bd15f
+	db $0, "For a girl!", $57
+; 0x1bd16c
 
-UnknownText_0x1c102b: ; 1c102b
-	db $0, "There is a #MON", $4f
-	db "holding MAIL.", $51
-	db "Please remove the", $4f
-	db "MAIL.", $58
-; 1c1062
+UnknownText_0x1bd16c: ; 0x1bd16c
+	db $0, "This doesn't", $4f
+	db "concern a boy!", $57
+; 0x1bd188
 
-UnknownText_0x1c1062: ; 1c1062
-	db $0, "You don't have a", $4f
-	db "single #MON!", $58
-; 1c1080
+UnknownText_0x1bd188: ; 0x1bd188
+	db $0, "The BOX is full!", $57
+; 0x1bd19a
 
-UnknownText_0x1c1080: ; 1c1080
-	db $0, "You can't deposit", $4f
-	db "your last #MON!", $58
-; 1c10a2
+UnknownText_0x1bd19a: ; 0x1bd19a
+	db $0, "A new CARD arrived", $4f
+	db "from @"
+	text_from_ram $d086
+	db $0, ".", $57
+; 0x1bd1ba
 
-UnknownText_0x1c10a2: ; 1c10a2
-	db $0, "You can't take any", $4f
-	db "more #MON.", $58
-; 1c10c0
+UnknownText_0x1bd1ba: ; 0x1bd1ba
+	db $0, "Put this CARD in", $4f
+	db "the CARD FOLDER?", $57
+; 0x1bd1dd
 
-UnknownText_0x1c10c0: ; 1c10c0
-	db $0, "Caught @"
-	text_from_ram $d073
-	db $0, "!", $58
-; 1c10cf
+UnknownText_0x1bd1dd: ; 0x1bd1dd
+	text_from_ram $d086
+	db $0, "'s CARD was", $4f
+	db "listed as no.@"
+	deciram $d073, $12
+	db $0, ".", $58
+; 0x1bd201
 
-UnknownText_0x1c10cf: ; 1c10cf
-	db $0, "Switch #MON?", $57
-; 1c10dd
+UnknownText_0x1bd201: ; 0x1bd201
+	db $0, "Starting link.", $57
+; 0x1bd211
 
-UnknownText_0x1c10dd: ; 1c10dd
-	db $0, "You already caught", $4f
-	db "a @"
+UnknownText_0x1bd211: ; 0x1bd211
+	db $0, "Link terminated.", $57
+; 0x1bd223
+
+UnknownText_0x1bd223: ; 0x1bd223
+	db $0, "Closing link.", $57
+; 0x1bd232
+
+UnknownText_0x1bd232: ; 0x1bd232
+	db $0, "Clear the time", $4f
+	db "limit?", $57
+; 0x1bd249
+
+UnknownText_0x1bd249: ; 0x1bd249
+	db $0, "The time limit was", $4f
+	db "cleared.", $57
+; 0x1bd266
+
+UnknownText_0x1bd266: ; 0x1bd266
+	db $0, "Pick which packet", $4f
+	db "as an error?", $57
+; 0x1bd286
+
+UnknownText_0x1bd286: ; 0x1bd286
+	db $0, "Trading @"
+	text_from_ram $d086
+	db $0, $4f
+	db "for @"
 	text_from_ram $d073
-	db $0, ".", $58
-; 1c10fa
+	db $0, "…", $57
+; 0x1bd2a0
 
-UnknownText_0x1c10fa: ; 1c10fa
-	db $0, "This Bug-Catching", $4f
-	db "Contest winner is@"
-	interpret_data
-	db $0, "…", $51
+UnknownText_0x1bd2a0: ; 0x1bd2a0
+	db $0, "Obtained the", $4f
+	db "VOLTORBBADGE!", $57
+; 0x1bd2bc
+
+UnknownText_0x1bd2bc: ; 0x1bd2bc
+	db $0, "Which floor?", $57
+; 0x1bd2ca
+
+UnknownText_0x1bd2ca: ; 0x1bd2ca
+	db $0, "ANNOUNCER: BEEEP!", $51
+	db "Time's up!", $57
+; 0x1bd2e7
+
+UnknownText_0x1bd2e7: ; 0x1bd2e7
+	db $0, "ANNOUNCER: The", $4f
+	db "Contest is over!", $57
+; 0x1bd308
+
+UnknownText_0x1bd308: ; 0x1bd308
+	db $0, "REPEL's effect", $4f
+	db "wore off.", $57
+; 0x1bd321
+
+UnknownText_0x1bd321: ; 0x1bd321
+	db $0, $52, " found", $4f
 	db "@"
-	text_from_ram $d016
-	db $0, ",", $4f
-	db "who caught a", $55
-	db "@"
+	text_from_ram $d099
+	db $0, "!", $57
+; 0x1bd331
+
+UnknownText_0x1bd331: ; 0x1bd331
+	db $0, "But ", $52, " has", $4f
+	db "no space left…", $57
+; 0x1bd34b
+
+UnknownText_0x1bd34b: ; 0x1bd34b
+	db $0, "I just saw some", $4f
+	db "rare @"
 	text_from_ram $d073
-	db $0, "!@"
+	db $0, " in", $55
 	db "@"
-; 1c113f
+	text_from_ram $d086
+	db $0, ".", $51
+	db "I'll call you if I", $4f
+	db "see another rare", $55
+	db "#MON, OK?", $58
+; 0x1bd39e
 
-UnknownText_0x1c113f: ; 1c113f
-	db $0, $51
-	db "The winning score", $4f
-	db "was @"
-	deciram $d004, $23
-	db $0, " points!", $58
-; 1c1166
+UnknownText_0x1bd39e: ; 0x1bd39e
+	db $0, "SAVING RECORD…", $4f
+	db "DON'T TURN OFF!", $57
+; 0x1bd3be
 
-UnknownText_0x1c1166: ; 1c1166
-	db $0, "Placing second was", $4f
+UnknownText_0x1bd3be: ; 0x1bd3be
+	text_from_ram $d47d
+	db $0, " received", $4f
 	db "@"
-	text_from_ram $d016
-	db $0, ",", $51
-	db "who caught a", $4f
-	db "@"
 	text_from_ram $d073
 	db $0, "!@"
+	sound0x0F
+	text_waitbutton
 	db "@"
-; 1c1196
+; 0x1bd3d6
 
-UnknownText_0x1c1196: ; 1c1196
-	db $0, $51
-	db "The score was", $4f
+UnknownText_0x1bd3d6: ; 0x1bd3d6
 	db "@"
-	deciram $d008, $23
-	db $0, " points!", $58
-; 1c11b5
+; 0x1bd3d7
 
-UnknownText_0x1c11b5: ; 1c11b5
-	db $0, "Placing third was", $4f
+UnknownText_0x1bd3d7: ; 0x1bd3d7
+	db $0, "You have no coins.", $58
+; 0x1bd3eb
+
+UnknownText_0x1bd3eb: ; 0x1bd3eb
+	db $0, "You don't have a", $4f
+	db "COIN CASE.", $58
+; 0x1bd407
+
+UnknownText_0x1bd407: ; 0x1bd407
+	db $0, "OK, connect the", $4f
+	db "Game Link Cable.", $58
+; 0x1bd429
+
+UnknownText_0x1bd429: ; 0x1bd429
+	db $0, $52, " traded", $4f
 	db "@"
-	text_from_ram $d016
-	db $0, ",", $51
-	db "who caught a", $4f
+	text_from_ram $d050
+	db $0, " for", $55
 	db "@"
-	text_from_ram $d073
-	db $0, "!@"
+	text_from_ram $d086
+	db $0, ".@"
 	db "@"
-; 1c11e4
+; 0x1bd445
 
-UnknownText_0x1c11e4: ; 1c11e4
-	db $0, $51
-	db "The score was", $4f
+UnknownText_0x1bd445: ; 0x1bd445
+	sound0x0A
+	interpret_data
 	db "@"
-	deciram $d00c, $23
-	db $0, " points!", $58
-; 1c1203
+; 0x1bd448
 
-UnknownText_0x1c1203: ; 1c1203
-	db $0, "Let me measure", $4f
-	db "that MAGIKARP.", $51
-	db "…Hm, it measures", $4f
+UnknownText_0x1bd448: ; 0x1bd448
 	db "@"
-	text_from_ram $d073
-	db $0, ".", $58
-; 1c123a
+; 0x1bd449
 
-UnknownText_0x1c123a: ; 1c123a
-	db $0, "CURRENT RECORD", $51
+UnknownText_0x1bd449: ; 0x1bd449
+	db $0, "I collect #MON.", $4f
+	db "Do you have", $55
 	db "@"
 	text_from_ram $d073
-	db $0, " caught by", $4f
-	db "@"
-	text_from_ram $dfea
-	text_waitbutton
-	db "@"
-; 1c1260
+	db $0, "?", $51
+	db "Want to trade it", $4f
+	db "for my @"
+	text_from_ram $d086
+	db $0, "?", $57
+; 0x1bd48c
 
-UnknownText_0x1c1260: ; 1c1260
-	db "@"
-; 1c1261
+UnknownText_0x1bd48c: ; 0x1bd48c
+	db $0, "You don't want to", $4f
+	db "trade? Aww…", $57
+; 0x1bd4aa
 
-UnknownText_0x1c1261: ; 1c1261
-	db $0, "Congratulations!", $51
-	db "We have a match", $4f
-	db "with the ID number", $51
-	db "of @"
+UnknownText_0x1bd4aa: ; 0x1bd4aa
+	db $0, "Huh? That's not", $4f
+	db "@"
 	text_from_ram $d073
-	db $0, " in", $4f
-	db "your party.", $58
-; 1c12ae
+	db $0, ". ", $55
+	db "What a letdown…", $57
+; 0x1bd4d2
 
-UnknownText_0x1c12ae: ; 1c12ae
-	db $0, "Congratulations!", $51
-	db "We have a match", $4f
-	db "with the ID number", $51
-	db "of @"
+UnknownText_0x1bd4d2: ; 0x1bd4d2
+	db $0, "Yay! I got myself", $4f
+	db "@"
 	text_from_ram $d073
-	db $0, " in", $4f
-	db "your PC BOX.", $58
-; 1c12fc
+	db $0, "!", $55
+	db "Thanks!", $57
+; 0x1bd4f4
 
-UnknownText_0x1c12fc: ; 1c12fc
-	db $0, "Give a nickname to", $4f
-	db "the @"
-	text_from_ram $d073
-	db $0, " you", $55
-	db "received?", $57
-; 1c1328
+UnknownText_0x1bd4f4: ; 0x1bd4f4
+	db $0, "Hi, how's my old", $4f
+	db "@"
+	text_from_ram $d086
+	db $0, " doing?", $57
+; 0x1bd512
 
-UnknownText_0x1c1328: ; 1c1328
-	db $0, "Bzzzzt! You must", $4f
-	db "have a #MON to", $55
-	db "use this!", $58
-; 1c1353
-
-UnknownText_0x1c1353: ; 1c1353
-	db $0, $52, " turned on", $4f
-	db "the PC.", $58
-; 1c1368
-
-UnknownText_0x1c1368: ; 1c1368
-	db $0, "What do you want", $4f
-	db "to do?", $57
-; 1c1381
-
-_KrissPCHowManyWithdrawText: ; 1c1381
-	db $0, "How many do you", $4f
-	db "want to withdraw?", $57
-; 1c13a4
-
-_KrissPCWithdrewItemsText: ; 1c13a4
-	db $0, "Withdrew @"
-	deciram $d10c, $12
-	db $0, $4f
+UnknownText_0x1bd512: ; 0x1bd512
+	db $0, "Hi, I'm looking", $4f
+	db "for this #MON.", $51
+	db "If you have", $4f
 	db "@"
+	text_from_ram $d073
+	db $0, ", would", $51
+	db "you trade it for", $4f
+	db "my @"
 	text_from_ram $d086
-	db $0, "(S).", $58
-; 1c13bf
+	db $0, "?", $57
+; 0x1bd565
 
-_KrissPCNoRoomWithdrawText: ; 1c13bf
-	db $0, "There's no room", $4f
-	db "for more items.", $58
-; 1c13df
+UnknownText_0x1bd565: ; 0x1bd565
+	db $0, "You don't have", $4f
+	db "one either?", $51
+	db "Gee, that's really", $4f
+	db "disappointing…", $57
+; 0x1bd5a1
 
-UnknownText_0x1c13df: ; 1c13df
-	db $0, "No items here!", $58
-; 1c13ef
+UnknownText_0x1bd5a1: ; 0x1bd5a1
+	db $0, "You don't have", $4f
+	db "@"
+	text_from_ram $d073
+	db $0, "? That's", $55
+	db "too bad, then.", $57
+; 0x1bd5cc
 
-_KrissPCHowManyDepositText: ; 1c13ef
-	db $0, "How many do you", $4f
-	db "want to deposit?", $57
-; 1c1411
+UnknownText_0x1bd5cc: ; 0x1bd5cc
+	db $0, "Great! Thank you!", $51
+	db "I finally got", $4f
+	db "@"
+	text_from_ram $d073
+	db $0, ".", $57
+; 0x1bd5f4
 
-_KrissPCDepositItemsText: ; 1c1411
-	db $0, "Deposited @"
-	deciram $d10c, $12
+UnknownText_0x1bd5f4: ; 0x1bd5f4
+	db $0, "Hi! The @"
+	text_from_ram $d050
 	db $0, $4f
+	db "you traded me is", $55
+	db "doing great!", $57
+; 0x1bd621
+
+UnknownText_0x1bd621: ; 0x1bd621
+	text_from_ram $d050
+	db $0, "'s cute,", $4f
+	db "but I don't have", $51
+	db "it. Do you have", $4f
 	db "@"
+	text_from_ram $d073
+	db $0, "?", $51
+	db "Want to trade it", $4f
+	db "for my @"
 	text_from_ram $d086
-	db $0, "(S).", $58
-; 1c142d
+	db $0, "?", $57
+; 0x1bd673
 
-_KrissPCNoRoomDepositText: ; 1c142d
-	db $0, "There's no room to", $4f
-	db "store items.", $58
-; 1c144d
+UnknownText_0x1bd673: ; 0x1bd673
+	db $0, "You don't want to", $4f
+	db "trade? Oh, darn…", $57
+; 0x1bd696
 
-UnknownText_0x1c144d: ; 1c144d
-	db $0, $52, " turned on", $4f
-	db "the PC.", $58
-; 1c1462
+UnknownText_0x1bd696: ; 0x1bd696
+	db $0, "That's not", $4f
+	db "@"
+	text_from_ram $d073
+	db $0, ".", $51
+	db "Please trade with", $4f
+	db "me if you get one.", $57
+; 0x1bd6cd
 
-UnknownText_0x1c1462: ; 1c1462
-	db $0, "Access whose PC?", $57
-; 1c1474
+UnknownText_0x1bd6cd: ; 0x1bd6cd
+	db $0, "Wow! Thank you!", $4f
+	db "I always wanted", $55
+	db "@"
+	text_from_ram $d050
+	db $0, "!", $57
+; 0x1bd6f5
 
-UnknownText_0x1c1474: ; 1c1474
-	db $0, "BILL's PC", $4f
-	db "accessed.", $51
-	db "#MON Storage", $4f
-	db "System opened.", $58
-; 1c14a4
-
-UnknownText_0x1c14a4: ; 1c14a4
-	db $0, "Accessed own PC.", $51
-	db "Item Storage", $4f
-	db "System opened.", $58
-; 1c14d2
-
-UnknownText_0x1c14d2: ; 1c14d2
-	db $0, "PROF.OAK's PC", $4f
-	db "accessed.", $51
-	db "#DEX Rating", $4f
-	db "System opened.", $58
-; 1c1505
-
-UnknownText_0x1c1505: ; 1c1505
-	db $0, "…", $4f
-	db "Link closed…", $57
-; 1c1515
-
-_OakPCText1: ; 1c1515
-	db $0, "Want to get your", $4f
-	db "#DEX rated?", $57
-; 1c1533
-
-_OakPCText2: ; 1c1533
-	db $0, "Current #DEX", $4f
-	db "completion level:", $58
-; 1c1553
-
-_OakPCText3: ; 1c1553
-	text_from_ram $d099
-	db $0, " #MON seen", $4f
+UnknownText_0x1bd6f5: ; 0x1bd6f5
+	db $0, "How is that", $4f
 	db "@"
-	text_from_ram $d0ac
-	db $0, " #MON owned", $51
-	db "PROF.OAK's", $4f
-	db "Rating:", $57
-; 1c1585
+	text_from_ram $d086
+	db $0, " I", $55
+	db "traded you doing?", $51
+	db "Your @"
+	text_from_ram $d050
+	db $0, "'s", $4f
+	db "so cute!", $57
+; 0x1bd731
 
-_OakRating01: ; 1c1585
-	db $0, "Look for #MON", $4f
-	db "in grassy areas!", $57
-; 1c15a5
+UnknownText_0x1bd731: ; 0x1bd731
+	db $0, "Uh? What happened?", $57
+; 0x1bd745
 
-_OakRating02: ; 1c15a5
-	db $0, "Good. I see you", $4f
-	db "understand how to", $55
-	db "use # BALLS.", $57
-; 1c15d5
+UnknownText_0x1bd745: ; 0x1bd745
+	db $0, "Trading is so odd…", $51
+	db "I still have a lot", $4f
+	db "to learn about it.", $57
+; 0x1bd77f
 
-_OakRating03: ; 1c15d5
-	db $0, "You're getting", $4f
-	db "good at this.", $51
-	db "But you have a", $4f
-	db "long way to go.", $57
-; 1c1611
+UnknownText_0x1bd77f: ; 0x1bd77f
+	db $0, "Wow, that's a cute", $4f
+	db "#MON.", $51
+	db "Where did you get", $4f
+	db "it?", $51
+	db "…", $51
+	db "So, you're leaving", $4f
+	db "on an adventure…", $51
+	db "OK!", $4f
+	db "I'll help too.", $51
+	db "But what can I do", $4f
+	db "for you?", $51
+	db "I know! I'll save", $4f
+	db "money for you.", $51
+	db "On a long journey,", $4f
+	db "money's important.", $51
+	db "Do you want me to", $4f
+	db "save your money?", $57
+; 0x1bd868
 
-_OakRating04: ; 1c1611
-	db $0, "You need to fill", $4f
-	db "up the #DEX.", $51
-	db "Catch different", $4f
-	db "kinds of #MON!", $57
-; 1c164f
+UnknownText_0x1bd868: ; 0x1bd868
+	db $0, "OK, I'll take care", $4f
+	db "of your money.", $51
+	db $56, $56, $56, $58
+; 0x1bd88e
 
-_OakRating05: ; 1c164f
-	db $0, "You're trying--I", $4f
-	db "can see that.", $51
-	db "Your #DEX is", $4f
-	db "coming together.", $57
-; 1c168c
+UnknownText_0x1bd88e: ; 0x1bd88e
+	db $0, "Be careful.", $51
+	db "#MON are your", $4f
+	db "friends. You need", $55
+	db "to work as a team.", $51
+	db "Now, go on!", $57
+; 0x1bd8da
 
-_OakRating06: ; 1c168c
-	db $0, "To evolve, some", $4f
-	db "#MON grow,", $51
-	db "others use the", $4f
-	db "effects of STONES.", $57
-; 1c16ca
+UnknownText_0x1bd8da: ; 0x1bd8da
+	db $0, "Hi! Welcome home!", $4f
+	db "You're trying very", $55
+	db "hard, I see.", $51
+	db "I've kept your", $4f
+	db "room tidy.", $51
+	db "Or is this about", $4f
+	db "your money?", $57
+; 0x1bd942
 
-_OakRating07: ; 1c16ca
-	db $0, "Have you gotten a", $4f
-	db "fishing ROD? You", $51
-	db "can catch #MON", $4f
-	db "by fishing.", $57
-; 1c1709
+UnknownText_0x1bd942: ; 0x1bd942
+	db $0, "What do you want", $4f
+	db "to do?", $57
+; 0x1bd95b
 
-_OakRating08: ; 1c1709
-	db $0, "Excellent! You", $4f
-	db "seem to like col-", $55
-	db "lecting things!", $57
-; 1c173b
+UnknownText_0x1bd95b: ; 0x1bd95b
+	db $0, "How much do you", $4f
+	db "want to save?", $57
+; 0x1bd97a
 
-_OakRating09: ; 1c173b
-	db $0, "Some #MON only", $4f
-	db "appear during", $51
-	db "certain times of", $4f
-	db "the day.", $57
-; 1c1773
+UnknownText_0x1bd97a: ; 0x1bd97a
+	db $0, "How much do you", $4f
+	db "want to take?", $57
+; 0x1bd999
 
-_OakRating10: ; 1c1773
-	db $0, "Your #DEX is", $4f
-	db "filling up. Keep", $55
-	db "up the good work!", $57
-; 1c17a4
+UnknownText_0x1bd999: ; 0x1bd999
+	db $0, "Do you want to", $4f
+	db "save some money?", $57
+; 0x1bd9ba
 
-_OakRating11: ; 1c17a4
-	db $0, "I'm impressed.", $4f
-	db "You're evolving", $51
-	db "#MON, not just", $4f
-	db "catching them.", $57
-; 1c17e0
+UnknownText_0x1bd9ba: ; 0x1bd9ba
+	db $0, "You haven't saved", $4f
+	db "that much.", $58
+; 0x1bd9d7
 
-_OakRating12: ; 1c17e0
-	db $0, "Have you met KURT?", $4f
-	db "His custom BALLS", $55
-	db "should help.", $57
-; 1c1812
+UnknownText_0x1bd9d7: ; 0x1bd9d7
+	db $0, "You can't take", $4f
+	db "that much.", $58
+; 0x1bd9f1
 
-_OakRating13: ; 1c1812
-	db $0, "Wow. You've found", $4f
-	db "more #MON than", $51
-	db "the last #DEX", $4f
-	db "research project.", $57
-; 1c1853
+UnknownText_0x1bd9f1: ; 0x1bd9f1
+	db $0, "You don't have", $4f
+	db "that much.", $58
+; 0x1bda0b
 
-_OakRating14: ; 1c1853
-	db $0, "Are you trading", $4f
-	db "your #MON?", $51
-	db "It's tough to do", $4f
-	db "this alone!", $57
-; 1c188b
+UnknownText_0x1bda0b: ; 0x1bda0b
+	db $0, "You can't save", $4f
+	db "that much.", $58
+; 0x1bda25
 
-_OakRating15: ; 1c188b
-	db $0, "Wow! You've hit", $4f
-	db "200! Your #DEX", $55
-	db "is looking great!", $57
-; 1c18bc
+UnknownText_0x1bda25: ; 0x1bda25
+	db $0, "OK, I'll save your", $4f
+	db "money. Trust me!", $51
+	db $52, ", stick", $4f
+	db "with it!", $57
+; 0x1bda5b
 
-_OakRating16: ; 1c18bc
-	db $0, "You've found so", $4f
-	db "many #MON!", $51
-	db "You've really", $4f
-	db "helped my studies!", $57
-; 1c18f7
+UnknownText_0x1bda5b: ; 0x1bda5b
+	db $0, "Your money's safe", $4f
+	db "here! Get going!", $57
+; 0x1bda7e
 
-_OakRating17: ; 1c18f7
-	db $0, "Magnificent! You", $4f
-	db "could become a", $51
-	db "#MON professor", $4f
-	db "right now!", $57
-; 1c1932
+UnknownText_0x1bda7e: ; 0x1bda7e
+	db $0, $52, ", don't", $4f
+	db "give up!", $57
+; 0x1bda90
 
-_OakRating18: ; 1c1932
-	db $0, "Your #DEX is", $4f
-	db "amazing! You're", $51
-	db "ready to turn", $4f
-	db "professional!", $57
-; 1c196b
+UnknownText_0x1bda90: ; 0x1bda90
+	db $0, "Just do what", $4f
+	db "you can.", $57
+; 0x1bdaa7
 
-_OakRating19: ; 1c196b
-	db $0, "Whoa! A perfect", $4f
-	db "#DEX! I've", $51
-	db "dreamt about this!", $4f
-	db "Congratulations!", $57
-; 1c19aa
+UnknownText_0x1bdaa7: ; 0x1bdaa7
+	db $0, $57
+; 0x1bdaa9
 
-_OakPCText4: ; 1c19aa
-	db $0, "The link to PROF.", $4f
-	db "OAK's PC closed.", $57
-; 1c19cd
+UnknownText_0x1bdaa9: ; 0x1bdaa9
+	db $0, "I'm the DAY-CARE", $4f
+	db "MAN. Want me to", $55
+	db "raise a #MON?", $57
+; 0x1bdad8
 
-UnknownText_0x1c19cd: ; 1c19cd
-	db $0, "Triple-theme", $4f
-	db "trainer ranking!", $51
-	db "The SAVE file you", $4f
-	db "just sent might", $55
-	db "make the rankings!", $51
-	db $57
-; 1c1a22
+UnknownText_0x1bdad8: ; 0x1bdad8
+	db $0, "I'm the DAY-CARE", $4f
+	db "MAN. Do you know", $55
+	db "about EGGS?", $51
+	db "I was raising", $4f
+	db "#MON with my", $55
+	db "wife, you see.", $51
+	db "We were shocked to", $4f
+	db "find an EGG!", $51
+	db "How incredible is", $4f
+	db "that?", $51
+	db "So, want me to", $4f
+	db "raise a #MON?", $57
+; 0x1bdb85
 
-UnknownText_0x1c1a22: ; 1c1a22
-	db $0, "There is no", $4f
-	db "ranking data.", $51
-	db "Link to obtain", $4f
-	db "ranking data.", $51
-	db $57
-; 1c1a5b
+UnknownText_0x1bdb85: ; 0x1bdb85
+	db $0, "I'm the DAY-CARE", $4f
+	db "LADY.", $51
+	db "Should I raise a", $4f
+	db "#MON for you?", $57
+; 0x1bdbbb
 
-UnknownText_0x1c1a5b: ; 1c1a5b
-	db $0, " , yeah!", $57
-; 1c1a65
+UnknownText_0x1bdbbb: ; 0x1bdbbb
+	db $0, "I'm the DAY-CARE", $4f
+	db "LADY. Do you know", $55
+	db "about EGGS?", $51
+	db "My husband and I", $4f
+	db "were raising some", $55
+	db "#MON, you see.", $51
+	db "We were shocked to", $4f
+	db "find an EGG!", $51
+	db "How incredible", $4f
+	db "could that be?", $51
+	db "Should I raise a", $4f
+	db "#MON for you?", $57
+; 0x1bdc79
 
-UnknownText_0x1c1a65: ; 1c1a65
-	db $0, "Darn…", $57
-; 1c1a6c
+UnknownText_0x1bdc79: ; 0x1bdc79
+	db $0, "What should I", $4f
+	db "raise for you?", $58
+; 0x1bdc97
 
-UnknownText_0x1c1a6c: ; 1c1a6c
-	db $0, "Would you like to", $4f
-	db "end the Contest?", $57
-; 1c1a90
+UnknownText_0x1bdc97: ; 0x1bdc97
+	db $0, "Oh? But you have", $4f
+	db "just one #MON.", $58
+; 0x1bdcb8
 
-UnknownText_0x1c1a90: ; 1c1a90
-	db $0, "Toss out how many", $4f
-	db "@"
-	text_from_ram $d086
-	db $0, "(S)?", $57
-; 1c1aad
+UnknownText_0x1bdcb8: ; 0x1bdcb8
+	db $0, "Sorry, but I can't", $4f
+	db "accept an EGG.", $58
+; 0x1bdcda
 
-UnknownText_0x1c1aad: ; 1c1aad
-	db $0, "Throw away @"
-	deciram $d10c, $12
-	db $0, $4f
-	db "@"
-	text_from_ram $d086
-	db $0, "(S)?", $57
-; 1c1aca
+UnknownText_0x1bdcda: ; 0x1bdcda
+	db $0, "Remove MAIL before", $4f
+	db "you come see me.", $58
+; 0x1bdcff
 
-UnknownText_0x1c1aca: ; 1c1aca
-	db $0, "Discarded", $4f
-	db "@"
-	text_from_ram $d073
-	db $0, "(S).", $58
-; 1c1adf
+UnknownText_0x1bdcff: ; 0x1bdcff
+	db $0, "If you give me", $4f
+	db "that, what will", $55
+	db "you battle with?", $58
+; 0x1bdd30
 
-UnknownText_0x1c1adf: ; 1c1adf
-	db $0, "That's too impor-", $4f
-	db "tant to toss out!", $58
-; 1c1b03
-
-UnknownText_0x1c1b03: ; 1c1b03
-	db $0, "OAK: ", $52, "!", $4f
-	db "This isn't the", $55
-	db "time to use that!", $57
-; 1c1b2c
-
-UnknownText_0x1c1b2c: ; 1c1b2c
-	db $0, "Took @"
-	text_from_ram $d050
-	db $0, "'s", $4f
-	db "@"
+UnknownText_0x1bdd30: ; 0x1bdd30
+	db $0, "OK. I'll raise", $4f
+	db "your @"
 	text_from_ram $d073
-	db $0, " and", $51
-	db "made it hold", $4f
-	db "@"
-	text_from_ram $d086
 	db $0, ".", $58
-; 1c1b57
+; 0x1bdd4b
 
-UnknownText_0x1c1b57: ; 1c1b57
-	db $0, "Made @"
-	text_from_ram $d050
-	db $0, $4f
-	db "hold @"
-	text_from_ram $d086
-	db $0, ".", $58
-; 1c1b6f
+UnknownText_0x1bdd4b: ; 0x1bdd4b
+	db $0, "Come back for it", $4f
+	db "later.", $57
+; 0x1bdd64
 
-UnknownText_0x1c1b6f: ; 1c1b6f
-	db $0, "Please remove the", $4f
-	db "MAIL first.", $58
-; 1c1b8e
+UnknownText_0x1bdd64: ; 0x1bdd64
+	db $0, "Are we geniuses or", $4f
+	db "what? Want to see", $55
+	db "your @"
+	text_from_ram $d073
+	db $0, "?", $57
+; 0x1bdd96
 
-UnknownText_0x1c1b8e: ; 1c1b8e
-	text_from_ram $d050
-	db $0, " isn't", $4f
-	db "holding anything.", $58
-; 1c1baa
-
-UnknownText_0x1c1baa: ; 1c1baa
-	db $0, "Item storage space", $4f
-	db "full.", $58
-; 1c1bc4
-
-UnknownText_0x1c1bc4: ; 1c1bc4
-	db $0, "Took @"
+UnknownText_0x1bdd96: ; 0x1bdd96
+	db $0, "Your @"
 	text_from_ram $d073
 	db $0, $4f
-	db "from @"
-	text_from_ram $d050
-	db $0, ".", $58
-; 1c1bdc
+	db "has grown a lot.", $51
+	db "By level, it's", $4f
+	db "grown by @"
+	deciram $d087, $13
+	db $0, ".", $51
+	db "If you want your", $4f
+	db "#MON back, it", $55
+	db "will cost ¥@"
+	deciram $d088, $34
+	db $0, ".", $57
+; 0x1bde04
 
-UnknownText_0x1c1bdc: ; 1c1bdc
-	text_from_ram $d050
-	db $0, " is", $4f
-	db "already holding", $51
-	db "@"
-	text_from_ram $d073
-	db $0, ".", $4f
-	db "Switch items?", $57
-; 1c1c09
+UnknownText_0x1bde04: ; 0x1bde04
+	db $0, "Perfect! Here's", $4f
+	db "your #MON.", $58
+; 0x1bde1f
 
-UnknownText_0x1c1c09: ; 1c1c09
-	db $0, "This item can't be", $4f
-	db "held.", $58
-; 1c1c22
-
-UnknownText_0x1c1c22: ; 1c1c22
-	db $0, "The MAIL will lose", $4f
-	db "its message. OK?", $57
-; 1c1c47
-
-UnknownText_0x1c1c47: ; 1c1c47
-	db $0, "MAIL detached from", $4f
+UnknownText_0x1bde1f: ; 0x1bde1f
+	db $0, $52, " got back", $4f
 	db "@"
 	text_from_ram $d073
 	db $0, ".", $58
-; 1c1c62
+; 0x1bde32
 
-UnknownText_0x1c1c62: ; 1c1c62
-	db $0, "There's no space", $4f
-	db "for removing MAIL.", $58
-; 1c1c86
+UnknownText_0x1bde32: ; 0x1bde32
+	db $0, "Huh? Back already?", $4f
+	db "Your @"
+	text_from_ram $d073
+	db $0, $51
+	db "needs a little", $4f
+	db "more time with us.", $51
+	db "If you want your", $4f
+	db "#MON back, it", $55
+	db "will cost ¥100.", $57
+; 0x1bdea2
 
-UnknownText_0x1c1c86: ; 1c1c86
-	db $0, "Send the removed", $4f
-	db "MAIL to your PC?", $57
-; 1c1ca9
+UnknownText_0x1bdea2: ; 0x1bdea2
+	db $0, "You have no room", $4f
+	db "for it.", $58
+; 0x1bdebc
 
-UnknownText_0x1c1ca9: ; 1c1ca9
-	db $0, "Your PC's MAILBOX", $4f
-	db "is full.", $58
-; 1c1cc4
+UnknownText_0x1bdebc: ; 0x1bdebc
+	db $0, "You don't have", $4f
+	db "enough money.", $58
+; 0x1bded9
 
-UnknownText_0x1c1cc4: ; 1c1cc4
-	db $0, "The MAIL was sent", $4f
-	db "to your PC.", $58
-; 1c1ce3
+UnknownText_0x1bded9: ; 0x1bded9
+	db $0, "Oh, fine then.", $58
+; 0x1bdee9
 
-UnknownText_0x1c1ce3: ; 1c1ce3
-	db $0, "Not enough HP!", $58
-; 1c1cf3
+UnknownText_0x1bdee9: ; 0x1bdee9
+	db $0, "Come again.", $57
+; 0x1bdef6
 
-UnknownText_0x1c1cf3: ; 1c1cf3
-	db $0, "An item in your", $4f
-	db "PACK may be", $51
-	db "registered for use", $4f
-	db "on SELECT Button.", $57
-; 1c1d35
+UnknownText_0x1bdef6: ; 0x1bdef6
+	db $0, "Not yet…", $57
+; 0x1bdf00
 
-_OakText1: ; 1c1d35
-	db $0, "Hello! Sorry to", $4f
-	db "keep you waiting!", $51
-	db "Welcome to the", $4f
-	db "world of #MON!", $51
-	db "My name is OAK.", $51
-	db "People call me the", $4f
-	db "#MON PROF.", $58
-; 1c1da4
+UnknownText_0x1bdf00: ; 0x1bdf00
+	db $0, "Ah, it's you!", $51
+	db "We were raising", $4f
+	db "your #MON, and", $51
+	db "my goodness, were", $4f
+	db "we surprised!", $51
+	db "Your #MON had", $4f
+	db "an EGG!", $51
+	db "We don't know how", $4f
+	db "it got there, but", $51
+	db "your #MON had", $4f
+	db "it. You want it?", $57
+; 0x1bdfa5
 
-_OakText2: ; 1c1da4
-	db $0, "This world is in-", $4f
-	db "habited by crea-", $55
-	db "tures that we call", $55
-	db "#MON.@"
-	db "@"
-; 1c1de2
+UnknownText_0x1bdfa5: ; 0x1bdfa5
+	db $0, $52, " received", $4f
+	db "the EGG!", $57
+; 0x1bdfba
 
-_OakText3: ; 1c1de2
-	text_waitbutton
-	db "@"
-; 1c1de4
+UnknownText_0x1bdfba: ; 0x1bdfba
+	db $0, "Take good care of", $4f
+	db "it.", $57
+; 0x1bdfd1
 
-UnknownText_0x1c1de4: ; 1c1de4
-	db "@"
-; 1c1de5
+UnknownText_0x1bdfd1: ; 0x1bdfd1
+	db $0, "Well then, I'll", $4f
+	db "keep it. Thanks!", $57
+; 0x1bdff2
 
-_OakText4: ; 1c1de5
-	db $0, "People and #MON", $4f
-	db "live together by", $51
-	db "supporting each", $4f
-	db "other.", $51
-	db "Some people play", $4f
-	db "with #MON, some", $55
-	db "battle with them.", $58
-; 1c1e51
+UnknownText_0x1bdff2: ; 0x1bdff2
+	db $0, "You have no room", $4f
+	db "in your party.", $55
+	db "Come back later.", $57
+; 0x1be024
 
-_OakText5: ; 1c1e51
-	db $0, "But we don't know", $4f
-	db "everything about", $55
-	db "#MON yet.", $51
-	db "There are still", $4f
-	db "many mysteries to", $55
-	db "solve.", $51
-	db "That's why I study", $4f
-	db "#MON every day.", $58
-; 1c1ec9
+UnknownText_0x1be024: ; 0x1be024
+	db $0, "Which #MON", $4f
+	db "should I photo-", $55
+	db "graph?", $58
+; 0x1be047
+
+UnknownText_0x1be047: ; 0x1be047
+	db $0, "All righty. Hold", $4f
+	db "still for a bit.", $58
+; 0x1be06a
+
+UnknownText_0x1be06a: ; 0x1be06a
+	db $0, "Presto! All done.", $4f
+	db "Come again, OK?", $57
+; 0x1be08d
--- a/text/common_3.asm
+++ b/text/common_3.asm
@@ -1,1455 +1,1553 @@
-_OakText6: ; 0x1c4000
-	db $0, "Now, what did you", $4f
-	db "say your name was?", $58
-; 0x1c4026
+UnknownText_0x1c0000: ; 1c0000
+	db $0, "Oh, no picture?", $4f
+	db "Come again, OK?", $57
+; 1c0021
 
-_OakText7: ; 0x1c4026
-	db $0, $52, ", are you", $4f
-	db "ready?", $51
-	db "Your very own", $4f
-	db "#MON story is", $55
-	db "about to unfold.", $51
-	db "You'll face fun", $4f
-	db "times and tough", $55
-	db "challenges.", $51
-	db "A world of dreams", $4f
-	db "and adventures", $51
-	db "with #MON", $4f
-	db "awaits! Let's go!", $51
-	db "I'll be seeing you", $4f
-	db "later!", $57
-; 0x1c40e6
+UnknownText_0x1c0021: ; 1c0021
+	db $0, "An EGG? My talent", $4f
+	db "is worth more…", $57
+; 1c0043
 
-UnknownText_0x1c40e6: ; 0x1c40e6
-	db $0, "The clock's time", $4f
-	db "may be wrong.", $51
-	db "Please reset the", $4f
-	db "time.", $58
-; 0x1c411c
+UnknownText_0x1c0043: ; 1c0043
+	db $0, "Hello, hello! I'm", $4f
+	db "the NAME RATER.", $51
+	db "I rate the names", $4f
+	db "of #MON.", $51
+	db "Would you like me", $4f
+	db "to rate names?", $57
+; 1c00a0
 
-UnknownText_0x1c411c: ; 0x1c411c
-	db $0, "Set with the", $4f
-	db "Control Pad.", $51
-	db "Confirm: A Button", $4f
-	db "Cancel:  B Button", $57
-; 0x1c415b
+UnknownText_0x1c00a0: ; 1c00a0
+	db $0, "Which #MON's", $4f
+	db "nickname should I", $55
+	db "rate for you?", $58
+; 1c00cd
 
-UnknownText_0x1c415b: ; 0x1c415b
-	db $0, "Is this OK?", $57
-; 0x1c4168
+UnknownText_0x1c00cd: ; 1c00cd
+	db $0, "Hm… @"
+	text_from_ram $d073
+	db $0, "…", $4f
+	db "That's a fairly", $55
+	db "decent name.", $51
+	db "But, how about a", $4f
+	db "slightly better", $55
+	db "nickname?", $51
+	db "Want me to give it", $4f
+	db "a better name?", $57
+; 1c0142
 
-UnknownText_0x1c4168: ; 0x1c4168
-	db $0, "The clock has been", $4f
-	db "reset.", $57
-; 0x1c4183
+UnknownText_0x1c0142: ; 1c0142
+	db $0, "All right. What", $4f
+	db "name should we", $55
+	db "give it, then?", $58
+; 1c0171
 
-UnknownText_0x1c4183: ; 0x1c4183
-	db $0, "Too much time has", $4f
-	db "elapsed. Please", $55
-	db "try again.", $58
-; 0x1c41b1
+UnknownText_0x1c0171: ; 1c0171
+	db $0, "That's a better", $4f
+	db "name than before!", $51
+	db "Well done!", $57
+; 1c019e
 
-UnknownText_0x1c41b1: ; 0x1c41b1
-	db $0, "If you trade that", $4f
-	db "#MON, you won't", $55
-	db "be able to battle.", $58
-; 0x1c41e6
+UnknownText_0x1c019e: ; 1c019e
+	db $0, "OK, then. Come", $4f
+	db "again sometime.", $57
+; 1c01be
 
-UnknownText_0x1c41e6: ; 0x1c41e6
-	db $0, "Your friend's", $4f
-	db "@"
+UnknownText_0x1c01be: ; 1c01be
+	db $0, "Hm… @"
 	text_from_ram $d073
-	db $0, " appears", $55
-	db "to be abnormal!", $58
-; 0x1c4212
-
-UnknownText_0x1c4212: ; 0x1c4212
-	db $0, "Trade @"
-	text_from_ram $d004
-	db $0, $4f
-	db "for @"
+	db $0, "?", $4f
+	db "What a great name!", $55
+	db "It's perfect.", $51
+	db "Treat @"
 	text_from_ram $d073
-	db $0, "?", $57
-; 0x1c422a
+	db $0, $4f
+	db "with loving care.", $57
+; 1c0208
 
-UnknownText_0x1c422a: ; 0x1c422a
-	db $0, "To enter a mobile", $4f
-	db "battle, you must", $51
-	db "pick a team of", $4f
-	db "three #MON.", $51
-	db "Is that OK?", $57
-; 0x1c4275
+UnknownText_0x1c0208: ; 1c0208
+	db $0, "Whoa… That's just", $4f
+	db "an EGG.", $57
+; 1c0222
 
-UnknownText_0x1c4275: ; 0x1c4275
-	db $0, "Need more info on", $4f
-	db "mobile battles?", $57
-; 0x1c4298
+UnknownText_0x1c0222: ; 1c0222
+	db $0, "It might look the", $4f
+	db "same as before,", $51
+	db "but this new name", $4f
+	db "is much better!", $51
+	db "Well done!", $57
+; 1c0272
 
-UnknownText_0x1c4298: ; 0x1c4298
-	db $0, "For a mobile", $4f
-	db "battle, choose", $55
-	db "three #MON.", $51
-	db "The maximum daily", $4f
-	db "play time is ten", $51
-	db "minutes for each", $4f
-	db "linked player.", $51
-	db "If a battle isn't", $4f
-	db "finished within", $51
-	db "the time limit,", $4f
-	db "the player with", $51
-	db "the fewest fainted", $4f
-	db "#MON wins.", $51
-	db "If tied, the team", $4f
-	db "that lost the", $51
-	db "least amount of HP", $4f
-	db "wins.", $57
-; 0x1c439c
+UnknownText_0x1c0272: ; 1c0272
+	db $0, "All right. This", $4f
+	db "#MON is now", $55
+	db "named @"
+	text_from_ram $d073
+	db $0, ".", $58
+; 1c029c
 
-UnknownText_0x1c439c: ; 0x1c439c
-	db $0, "Today's remaining", $4f
-	db "time is @"
-	deciram $d086, $12
-	db $0, " min.", $51
-	db "Would you like to", $4f
-	db "battle?", $57
-; 0x1c43dc
+UnknownText_0x1c029c: ; 1c029c
+	text_from_ram $d073
+	db $0, " gained@"
+	db "@"
+; 1c02a9
 
-UnknownText_0x1c43dc: ; 0x1c43dc
-	db $0, "There are only @"
-	deciram $d086, $12
+UnknownText_0x1c02a9: ; 1c02a9
 	db $0, $4f
-	db "min. left today.", $51
-	db "Want a quick", $4f
-	db "battle?", $57
-; 0x1c4419
+	db "a boosted", $55
+	db "@"
+	deciram $d086, $24
+	db $0, " EXP. Points!", $58
+; 1c02c9
 
-UnknownText_0x1c4419: ; 0x1c4419
-	db $0, "There is only", $4f
-	db "1 min. left today!", $51
-	db "Want to rush", $4f
-	db "through a battle?", $57
-; 0x1c445a
+UnknownText_0x1c02c9: ; 1c02c9
+	db $0, $4f
+	db "@"
+	deciram $d086, $24
+	db $0, " EXP. Points!", $58
+; 1c02df
 
-UnknownText_0x1c445a: ; 0x1c445a
-	db $0, "There is less than", $4f
-	db "1 min. left today!", $51
-	db "Please try again", $4f
-	db "tomorrow.", $57
-; 0x1c449c
+UnknownText_0x1c02df: ; 1c02df
+	db $0, "Go! @"
+	db "@"
+; 1c02e6
 
-UnknownText_0x1c449c: ; 0x1c449c
-	db $0, "Try again using", $4f
-	db "the same settings?", $57
-; 0x1c44c0
+UnknownText_0x1c02e6: ; 1c02e6
+	db $0, "Do it! @"
+	db "@"
+; 1c02f0
 
-UnknownText_0x1c44c0: ; 0x1c44c0
-	db $0, "There is less than", $4f
-	db "1 min. left today!", $57
-; 0x1c44e7
+UnknownText_0x1c02f0: ; 1c02f0
+	db $0, "Go for it,", $4f
+	db "@"
+	db "@"
+; 1c02fe
 
-UnknownText_0x1c44e7: ; 0x1c44e7
-	db $0, "No time left for", $4f
-	db "linking today.", $57
-; 0x1c4508
+UnknownText_0x1c02fe: ; 1c02fe
+	db $0, "Your foe's weak!", $4f
+	db "Get'm, @"
+	db "@"
+; 1c0317
 
-UnknownText_0x1c4508: ; 0x1c4508
-	db $0, "Pick three #MON", $4f
-	db "for battle.", $57
-; 0x1c4525
+UnknownText_0x1c0317: ; 1c0317
+	text_from_ram $c621
+	db $0, "!", $57
+; 1c031d
 
-UnknownText_0x1c4525: ; 0x1c4525
-	db $0, "Today's remaining", $4f
-	db "time is @"
-	deciram $d086, $12
-	db $0, " min.", $57
-; 0x1c454b
+UnknownText_0x1c031d: ; 1c031d
+	text_from_ram $c621
+	db $0, ",@"
+	db "@"
+; 1c0324
 
-UnknownText_0x1c454b: ; 0x1c454b
-	db $0, "Would you like to", $4f
-	db "save the game?", $57
-; 0x1c456d
+UnknownText_0x1c0324: ; 1c0324
+	db $0, " that's", $4f
+	db "enough! Come back!@"
+	db "@"
+; 1c0340
 
-UnknownText_0x1c456d: ; 0x1c456d
-	db $0, "SAVING… DON'T TURN", $4f
-	db "OFF THE POWER.", $57
-; 0x1c4590
+UnknownText_0x1c0340: ; 1c0340
+	db $0, " OK!", $4f
+	db "Come back!@"
+	db "@"
+; 1c0352
 
-UnknownText_0x1c4590: ; 0x1c4590
-	db $0, $52, " saved", $4f
-	db "the game.", $57
-; 0x1c45a3
+UnknownText_0x1c0352: ; 1c0352
+	db $0, " good!", $4f
+	db "Come back!@"
+	db "@"
+; 1c0366
 
-UnknownText_0x1c45a3: ; 0x1c45a3
-	db $0, "There is already a", $4f
-	db "save file. Is it", $55
-	db "OK to overwrite?", $57
-; 0x1c45d9
+UnknownText_0x1c0366: ; 1c0366
+	db $0, " come", $4f
+	db "back!", $57
+; 1c0373
 
-UnknownText_0x1c45d9: ; 0x1c45d9
-	db $0, "There is another", $4f
-	db "save file. Is it", $55
-	db "OK to overwrite?", $57
-; 0x1c460d
+UnknownText_0x1c0373: ; 1c0373
+	db $0, "Booted up a TM.", $58
+; 1c0384
 
-UnknownText_0x1c460d: ; 0x1c460d
-	db $0, "The save file is", $4f
-	db "corrupted!", $58
-; 0x1c462a
+UnknownText_0x1c0384: ; 1c0384
+	db $0, "Booted up an HM.", $58
+; 1c0396
 
-UnknownText_0x1c462a: ; 0x1c462a
-	db $0, "When you change a", $4f
-	db "#MON BOX, data", $55
-	db "will be saved. OK?", $57
-; 0x1c465f
+UnknownText_0x1c0396: ; 1c0396
+	db $0, "It contained", $4f
+	db "@"
+	text_from_ram $d086
+	db $0, ".", $51
+	db "Teach @"
+	text_from_ram $d086
+	db $0, $4f
+	db "to a #MON?", $57
+; 1c03c2
 
-UnknownText_0x1c465f: ; 0x1c465f
-	db $0, "Each time you move", $4f
-	db "a #MON, data", $55
-	db "will be saved. OK?", $57
-; 0x1c4693
+UnknownText_0x1c03c2: ; 1c03c2
+	text_from_ram $d086
+	db $0, " is", $4f
+	db "not compatible", $55
+	db "with @"
+	text_from_ram $d073
+	db $0, ".", $51
+	db "It can't learn", $4f
+	db "@"
+	text_from_ram $d086
+	db $0, ".", $58
+; 1c03fa
 
-UnknownText_0x1c4693: ; 0x1c4693
-	db $0, "The window save", $4f
-	db "area was exceeded.", $57
-; 0x1c46b7
+UnknownText_0x1c03fa: ; 1c03fa
+	db $0, "You have no room", $4f
+	db "for any more", $55
+	db "@"
+	text_from_ram $d073
+	db $0, "S.", $58
+; 1c0421
 
-UnknownText_0x1c46b7: ; 0x1c46b7
-	db $0, "No windows avail-", $4f
-	db "able for popping.", $57
-; 0x1c46dc
+UnknownText_0x1c0421: ; 1c0421
+	db $0, "You received", $4f
+	db "@"
+	text_from_ram $d073
+	db $0, "!", $58
+; 1c0436
 
-UnknownText_0x1c46dc: ; 0x1c46dc
-	db $0, "Corrupted event!", $58
-; 0x1c46ee
+UnknownText_0x1c0436: ; 1c0436
+	db $0, "The link has been", $4f
+	db "cancelled.", $58
+; 1c0454
 
-_ObjectEventText: ; 0x1c46ee
-	db $0, "Object event", $57
-; 0x1c46fc
+UnknownText_0x1c0454: ; 1c0454
+	db $0, "Communication", $4f
+	db "error.", $58
+; 1c046a
 
-UnknownText_0x1c46fc: ; 0x1c46fc
-	db $0, "BG event", $57
-; 0x1c4706
+UnknownText_0x1c046a: ; 1c046a
+	db $0, "Must retrieve GIFT", $4f
+	db "at #MON CENTER.", $58
+; 1c048e
 
-UnknownText_0x1c4706: ; 0x1c4706
-	db $0, "Coordinates event", $57
-; 0x1c4719
+UnknownText_0x1c048e: ; 1c048e
+	db $0, "Your friend isn't", $4f
+	db "ready.", $58
+; 1c04a7
 
-UnknownText_0x1c4719: ; 0x1c4719
-	db $0, $52, " received", $4f
-	db "@"
-	text_from_ram $d0ac
-	db $0, ".", $57
-; 0x1c472c
+UnknownText_0x1c04a7: ; 1c04a7
+	db $0, "Sorry--only five", $4f
+	db "GIFTS a day.", $58
+; 1c04c6
 
-UnknownText_0x1c472c: ; 0x1c472c
-	db $0, $52, " put the", $4f
+UnknownText_0x1c04c6: ; 1c04c6
+	db $0, "Sorry. One GIFT", $4f
+	db "a day per person.", $58
+; 1c04e9
+
+UnknownText_0x1c04e9: ; 1c04e9
+	text_from_ram $c903
+	db $0, " sent", $4f
 	db "@"
 	text_from_ram $d073
-	db $0, " in", $55
-	db "the @"
-	text_from_ram $d099
 	db $0, ".", $58
-; 0x1c474b
+; 1c04fa
 
-UnknownText_0x1c474b: ; 0x1c474b
-	db $0, "The @"
-	text_from_ram $d099
-	db $0, $4f
-	db "is full…", $58
-; 0x1c475f
+UnknownText_0x1c04fa: ; 1c04fa
+	text_from_ram $c903
+	db $0, " sent", $4f
+	db "@"
+	text_from_ram $d073
+	db $0, $55
+	db "to @"
+	text_from_ram $c953
+	db $0, "'s home.", $58
+; 1c051a
 
-UnknownText_0x1c475f: ; 0x1c475f
-	db $0, "I see all.", $4f
-	db "I know all…", $51
-	db "Certainly, I know", $4f
-	db "of your #MON!", $57
-; 0x1c4797
+UnknownText_0x1c051a: ; 1c051a
+	db $0, "Received", $4f
+	db "@"
+	text_from_ram $c850
+	db $0, "'s CARD.", $58
+; 1c0531
 
-UnknownText_0x1c4797: ; 0x1c4797
-	db $0, "Whaaaat? I can't", $4f
-	db "tell a thing!", $51
-	db "How could I not", $4f
-	db "know of this?", $57
-; 0x1c47d4
+UnknownText_0x1c0531: ; 1c0531
+	text_from_ram $c850
+	db $0, "'s CARD was", $4f
+	db "listed as no.@"
+	deciram $d265, $12
+	db $0, ".", $58
+; 1c0555
 
-UnknownText_0x1c47d4: ; 0x1c47d4
-	db $0, "Hm… I see you met", $4f
-	db "@"
-	text_from_ram $d003
-	db $0, " here:", $55
-	db "@"
-	text_from_ram $d00e
-	db $0, "!", $58
-; 0x1c47fa
+UnknownText_0x1c0555: ; 1c0555
+	db $0, "The CARD was not", $4f
+	db "registered.", $58
+; 1c0573
 
-UnknownText_0x1c47fa: ; 0x1c47fa
-	db $0, "The time was", $4f
-	db "@"
-	text_from_ram $d01f
-	db $0, "!", $51
-	db "Its level was @"
-	text_from_ram $d036
-	db $0, "!", $51
-	db "Am I good or what?", $58
-; 0x1c4837
+UnknownText_0x1c0573: ; 1c0573
+	db $0, "The link has been", $4f
+	db "cancelled.", $58
+; 1c0591
 
-UnknownText_0x1c4837: ; 0x1c4837
-	db $0, "Hm… @"
-	text_from_ram $d003
-	db $0, $4f
-	db "came from @"
-	text_from_ram $d02a
-	db $0, $55
-	db "in a trade?", $51
-	db "@"
-	text_from_ram $d00e
-	db $0, $4f
-	db "was where @"
-	text_from_ram $d02a
-	db $0, $55
-	db "met @"
-	text_from_ram $d003
-	db $0, "!", $58
-; 0x1c487f
+UnknownText_0x1c0591: ; 1c0591
+	db $0, "Communication", $4f
+	db "error.", $58
+; 1c05a7
 
-UnknownText_0x1c487f: ; 0x1c487f
-	db $0, "What!? Incredible!", $51
-	db "I don't understand", $4f
-	db "how, but it is", $51
-	db "incredible!", $4f
-	db "You are special.", $51
-	db "I can't tell where", $4f
-	db "you met it, but it", $55
-	db "was at level @"
-	text_from_ram $d036
-	db $0, ".", $51
-	db "Am I good or what?", $58
-; 0x1c491d
+_BadgeRequiredText: ; 1c05a7
+	db $0, "Sorry! A new BADGE", $4f
+	db "is required.", $58
+; 1c05c8
 
-UnknownText_0x1c491d: ; 0x1c491d
-	db $0, "Hey!", $51
-	db "That's an EGG!", $51
-	db "You can't say that", $4f
-	db "you've met it yet…", $57
-; 0x1c4955
+UnknownText_0x1c05c8: ; 1c05c8
+	db $0, "Can't use that", $4f
+	db "here.", $58
+; 1c05dd
 
-UnknownText_0x1c4955: ; 0x1c4955
-	db $0, "Fufufu! I saw that", $4f
-	db "you'd do nothing!", $57
-; 0x1c497a
+UnknownText_0x1c05dd: ; 1c05dd
+	text_from_ram $d086
+	db $0, " used", $4f
+	db "CUT!", $58
+; 1c05ec
 
-UnknownText_0x1c497a: ; 0x1c497a
-	db $0, "Incidentally…", $51
-	db "It would be wise", $4f
-	db "to raise your", $51
-	db "#MON with a", $4f
-	db "little more care.", $57
-; 0x1c49c6
+UnknownText_0x1c05ec: ; 1c05ec
+	db $0, "There's nothing to", $4f
+	db "CUT here.", $58
+; 1c0609
 
-UnknownText_0x1c49c6: ; 0x1c49c6
-	db $0, "Incidentally…", $51
-	db "It seems to have", $4f
-	db "grown a little.", $51
+UnknownText_0x1c0609: ; 1c0609
+	db $0, "A blinding FLASH", $4f
+	db "lights the area!@"
+	text_waitbutton
 	db "@"
-	text_from_ram $d003
-	db $0, " seems", $4f
-	db "to be becoming", $55
-	db "more confident.", $57
-; 0x1c4a21
+; 1c062e
 
-UnknownText_0x1c4a21: ; 0x1c4a21
-	db $0, "Incidentally…", $51
+UnknownText_0x1c062e: ; 1c062e
 	db "@"
-	text_from_ram $d003
-	db $0, " has", $4f
-	db "grown. It's gained", $55
-	db "much strength.", $57
-; 0x1c4a5b
+; 1c062f
 
-UnknownText_0x1c4a5b: ; 0x1c4a5b
-	db $0, "Incidentally…", $51
-	db "It certainly has", $4f
-	db "grown mighty!", $51
-	db "This @"
-	text_from_ram $d003
-	db $0, $4f
-	db "must have come", $51
-	db "through numerous", $4f
-	db "#MON battles.", $51
-	db "It looks brimming", $4f
-	db "with confidence.", $57
-; 0x1c4ae5
+_UsedSurfText: ; 1c062f
+	text_from_ram $d086
+	db $0, " used", $4f
+	db "SURF!", $57
+; 1c063f
 
-UnknownText_0x1c4ae5: ; 0x1c4ae5
-	db $0, "Incidentally…", $51
-	db "I'm impressed by", $4f
-	db "your dedication.", $51
-	db "It's been a long", $4f
-	db "time since I've", $51
-	db "seen a #MON as", $4f
-	db "mighty as this", $55
-	db "@"
-	text_from_ram $d003
-	db $0, ".", $51
-	db "I'm sure that", $4f
-	db "seeing @"
-	text_from_ram $d003
-	db $0, $51
-	db "in battle would", $4f
-	db "excite anyone.", $57
-; 0x1c4b92
+_CantSurfText: ; 1c063f
+	db $0, "You can't SURF", $4f
+	db "here.", $58
+; 1c0654
 
-UnknownText_0x1c4b92: ; 0x1c4b92
-	db $0, "Congratulations!", $4f
-	db "Your @"
+_AlreadySurfingText: ; 1c0654
+	db $0, "You're already", $4f
+	db "SURFING.", $58
+; 1c066c
+
+_AskSurfText: ; 1c066c
+	db $0, "The water is calm.", $4f
+	db "Want to SURF?", $57
+; 1c068e
+
+UnknownText_0x1c068e: ; 1c068e
 	text_from_ram $d086
-	db $50
-; 0x1c4bae
+	db $0, " used", $4f
+	db "WATERFALL!", $57
+; 1c06a3
 
-UnknownText_0x1c4bae: ; 0x1c4bae
-	db $50
-; 0x1c4baf
+UnknownText_0x1c06a3: ; 1c06a3
+	db $0, "Wow, it's a huge", $4f
+	db "waterfall.", $57
+; 1c06bf
 
-UnknownText_0x1c4baf: ; 0x1c4baf
-	db $0, $51
-	db "evolved into", $4f
-	db "@"
-	text_from_ram $d073
-	db $0, "!", $57
-; 0x1c4bc5
+UnknownText_0x1c06bf: ; 1c06bf
+	db $0, "Do you want to use", $4f
+	db "WATERFALL?", $57
+; 1c06de
 
-UnknownText_0x1c4bc5: ; 0x1c4bc5
-	db $0, "Huh? @"
+UnknownText_0x1c06de: ; 1c06de
 	text_from_ram $d086
-	db $0, $4f
-	db "stopped evolving!", $58
-; 0x1c4be3
+	db $0, " used", $4f
+	db "DIG!", $57
+; 1c06ed
 
-UnknownText_0x1c4be3: ; 0x1c4be3
-	db $0, "What? @"
-	text_from_ram $d086
-	db $0, $4f
-	db "is evolving!", $57
-; 0x1c4bfd
+UnknownText_0x1c06ed: ; 1c06ed
+	db $0, $52, " used an", $4f
+	db "ESCAPE ROPE.", $57
+; 1c0705
 
-UnknownText_0x1c4bfd: ; 0x1c4bfd
-	db $0, "How many?", $57
-; 0x1c4c08
+UnknownText_0x1c0705: ; 1c0705
+	db $0, "Can't use that", $4f
+	db "here.", $57
+; 1c071a
 
-UnknownText_0x1c4c08: ; 0x1c4c08
-	deciram $d10c, $12
-	db $0, " @"
+UnknownText_0x1c071a: ; 1c071a
+	db $0, "Return to the last", $4f
+	db "#MON CENTER.", $57
+; 1c073b
+
+UnknownText_0x1c073b: ; 1c073b
+	db $0, "Can't use that", $4f
+	db "here.", $51
+	db $57
+; 1c0751
+
+UnknownText_0x1c0751: ; 1c0751
+	db $0, "A #MON is using", $4f
+	db "STRENGTH already.", $58
+; 1c0774
+
+UnknownText_0x1c0774: ; 1c0774
 	text_from_ram $d086
-	db $0, "(S)", $4f
-	db "will be ¥@"
-	deciram $ffc3, $36
-	db $0, ".", $57
-; 0x1c4c28
+	db $0, " used", $4f
+	db "STRENGTH!", $57
+; 1c0788
 
-UnknownText_0x1c4c28: ; 0x1c4c28
-	db $0, "Hello, dear.", $51
-	db "I sell inexpensive", $4f
-	db "herbal medicine.", $51
-	db "They're good, but", $4f
-	db "a trifle bitter.", $51
-	db "Your #MON may", $4f
-	db "not like them.", $51
-	db "Hehehehe…", $57
-; 0x1c4ca3
+UnknownText_0x1c0788: ; 1c0788
+	text_from_ram $d073
+	db $0, " can", $4f
+	db "move boulders.", $58
+; 1c07a0
 
-UnknownText_0x1c4ca3: ; 0x1c4ca3
-	db $0, "How many?", $57
-; 0x1c4cae
+UnknownText_0x1c07a0: ; 1c07a0
+	db $0, "A #MON may be", $4f
+	db "able to move this.", $51
+	db "Want to use", $4f
+	db "STRENGTH?", $57
+; 1c07d8
 
-UnknownText_0x1c4cae: ; 0x1c4cae
-	deciram $d10c, $12
-	db $0, " @"
+UnknownText_0x1c07d8: ; 1c07d8
+	db $0, "Boulders may now", $4f
+	db "be moved!", $57
+; 1c07f4
+
+UnknownText_0x1c07f4: ; 1c07f4
+	db $0, "A #MON may be", $4f
+	db "able to move this.", $57
+; 1c0816
+
+UnknownText_0x1c0816: ; 1c0816
 	text_from_ram $d086
-	db $0, "(S)", $4f
-	db "will be ¥@"
-	deciram $ffc3, $36
-	db $0, ".", $57
-; 0x1c4cce
+	db $0, " used", $4f
+	db "WHIRLPOOL!", $58
+; 1c082b
 
-UnknownText_0x1c4cce: ; 0x1c4cce
-	db $0, "Thank you, dear.", $4f
-	db "Hehehehe…", $57
-; 0x1c4cea
+UnknownText_0x1c082b: ; 1c082b
+	db $0, "It's a vicious", $4f
+	db "whirlpool!", $51
+	db "A #MON may be", $4f
+	db "able to pass it.", $57
+; 1c0864
 
-UnknownText_0x1c4cea: ; 0x1c4cea
-	db $0, "Oh? Your PACK is", $4f
-	db "full, dear.", $57
-; 0x1c4d08
+UnknownText_0x1c0864: ; 1c0864
+	db $0, "A whirlpool is in", $4f
+	db "the way.", $51
+	db "Want to use", $4f
+	db "WHIRLPOOL?", $57
+; 1c0897
 
-UnknownText_0x1c4d08: ; 0x1c4d08
-	db $0, "Hehehe… You don't", $4f
-	db "have the money.", $57
-; 0x1c4d2a
+UnknownText_0x1c0897: ; 1c0897
+	text_from_ram $d086
+	db $0, " did a", $4f
+	db "HEADBUTT!", $58
+; 1c08ac
 
-UnknownText_0x1c4d2a: ; 0x1c4d2a
-	db $0, "Come again, dear.", $4f
-	db "Hehehehe…", $57
-; 0x1c4d47
+UnknownText_0x1c08ac: ; 1c08ac
+	db $0, "Nope. Nothing…", $57
+; 1c08bc
 
-UnknownText_0x1c4d47: ; 0x1c4d47
-	db $0, "Hiya! Care to see", $4f
-	db "some bargains?", $51
-	db "I sell rare items", $4f
-	db "that nobody else", $51
-	db "carries--but only", $4f
-	db "one of each item.", $57
-; 0x1c4db0
+UnknownText_0x1c08bc: ; 1c08bc
+	db $0, "A #MON could be", $4f
+	db "in this tree.", $51
+	db "Want to HEADBUTT", $4f
+	db "it?", $57
+; 1c08f0
 
-UnknownText_0x1c4db0: ; 0x1c4db0
+UnknownText_0x1c08f0: ; 1c08f0
 	text_from_ram $d086
-	db $0, " costs", $4f
-	db "¥@"
-	deciram $ffc3, $36
-	db $0, ". Want it?", $57
-; 0x1c4dcd
+	db $0, " used", $4f
+	db "ROCK SMASH!", $58
+; 1c0906
 
-UnknownText_0x1c4dcd: ; 0x1c4dcd
-	db $0, "Thanks.", $57
-; 0x1c4dd6
+UnknownText_0x1c0906: ; 1c0906
+	db $0, "Maybe a #MON", $4f
+	db "can break this.", $57
+; 1c0924
 
-UnknownText_0x1c4dd6: ; 0x1c4dd6
-	db $0, "Uh-oh, your PACK", $4f
-	db "is chock-full.", $57
-; 0x1c4df7
+UnknownText_0x1c0924: ; 1c0924
+	db $0, "This rock looks", $4f
+	db "breakable.", $51
+	db "Want to use ROCK", $4f
+	db "SMASH?", $57
+; 1c0958
 
-UnknownText_0x1c4df7: ; 0x1c4df7
-	db $0, "You bought that", $4f
-	db "already. I'm all", $55
-	db "sold out of it.", $57
-; 0x1c4e28
+UnknownText_0x1c0958: ; 1c0958
+	db $0, "Oh!", $4f
+	db "A bite!", $58
+; 1c0965
 
-UnknownText_0x1c4e28: ; 0x1c4e28
-	db $0, "Uh-oh, you're", $4f
-	db "short on funds.", $57
-; 0x1c4e46
+UnknownText_0x1c0965: ; 1c0965
+	db $0, "Not even a nibble!", $58
+; 1c0979
 
-UnknownText_0x1c4e46: ; 0x1c4e46
-	db $0, "Come by again", $4f
-	db "sometime.", $57
-; 0x1c4e5f
+UnknownText_0x1c0979: ; 1c0979
+	db $0, "Looks like there's", $4f
+	db "nothing here.", $58
+; 1c099a
 
-UnknownText_0x1c4e5f: ; 0x1c4e5f
-	db $0, "What's up? Need", $4f
-	db "some medicine?", $57
-; 0x1c4e7e
+UnknownText_0x1c099a: ; 1c099a
+	db $0, "You can't get off", $4f
+	db "here!", $57
+; 1c09b2
 
-UnknownText_0x1c4e7e: ; 0x1c4e7e
-	db $0, "How many?", $57
-; 0x1c4e89
+UnknownText_0x1c09b2: ; 1c09b2
+	db $0, $52, " got on the", $4f
+	db "@"
+	text_from_ram $d086
+	db $0, ".", $57
+; 1c09c7
 
-UnknownText_0x1c4e89: ; 0x1c4e89
-	deciram $d10c, $12
-	db $0, " @"
+UnknownText_0x1c09c7: ; 1c09c7
+	db $0, $52, " got off", $4f
+	db "the @"
 	text_from_ram $d086
-	db $0, "(S)", $4f
-	db "will cost ¥@"
-	deciram $ffc3, $36
 	db $0, ".", $57
-; 0x1c4eab
+; 1c09dd
 
-UnknownText_0x1c4eab: ; 0x1c4eab
-	db $0, "Thanks much!", $57
-; 0x1c4eb9
+UnknownText_0x1c09dd: ; 1c09dd
+	db $0, "This tree can be", $4f
+	db "CUT!", $51
+	db "Want to use CUT?", $57
+; 1c0a05
 
-UnknownText_0x1c4eb9: ; 0x1c4eb9
-	db $0, "You don't have any", $4f
-	db "more space.", $57
-; 0x1c4ed8
+UnknownText_0x1c0a05: ; 1c0a05
+	db $0, "This tree can be", $4f
+	db "CUT!", $57
+; 1c0a1c
 
-UnknownText_0x1c4ed8: ; 0x1c4ed8
-	db $0, "Huh? That's not", $4f
-	db "enough money.", $57
-; 0x1c4ef6
+UnknownText_0x1c0a1c: ; 1c0a1c
+	db $0, $52, " found", $4f
+	db "@"
+	text_from_ram $d099
+	db $0, "!", $57
+; 1c0a2c
 
-UnknownText_0x1c4ef6: ; 0x1c4ef6
-	db $0, "All right.", $4f
-	db "See you around.", $57
-; 0x1c4f12
+UnknownText_0x1c0a2c: ; 1c0a2c
+	db $0, "But ", $52, " can't", $4f
+	db "carry any more", $55
+	db "items.", $57
+; 1c0a4e
 
-UnknownText_0x1c4f12: ; 0x1c4f12
-	db $0, "You don't have", $4f
-	db "anything to sell.", $58
-; 0x1c4f33
+UnknownText_0x1c0a4e: ; 1c0a4e
+	db $0, $52, " is out of", $4f
+	db "useable #MON!", $51
+	db $52, " whited", $4f
+	db "out!", $57
+; 1c0a77
 
-UnknownText_0x1c4f33: ; 0x1c4f33
-	db $0, "How many?", $57
-; 0x1c4f3e
+UnknownText_0x1c0a77: ; 1c0a77
+	db $0, "Yes! ITEMFINDER", $4f
+	db "indicates there's", $55
+	db "an item nearby.", $58
+; 1c0aa9
 
-UnknownText_0x1c4f3e: ; 0x1c4f3e
-	db $0, "I can pay you", $4f
-	db "¥@"
-	deciram $ffc3, $36
-	db $0, ".", $51
-	db "Is that OK?", $57
-; 0x1c4f62
+UnknownText_0x1c0aa9: ; 1c0aa9
+	db $0, "Nope! ITEMFINDER", $4f
+	db "isn't responding.", $58
+; 1c0acc
 
-UnknownText_0x1c4f62: ; 0x1c4f62
-	db $0, "Welcome! How may I", $4f
-	db "help you?", $57
-; 0x1c4f80
+UnknownText_0x1c0acc: ; 1c0acc
+	text_from_ram $d099
+	db $0, $4f
+	db "fainted!", $58
+; 1c0ada
 
-UnknownText_0x1c4f80: ; 0x1c4f80
-	db $0, "Here you are.", $4f
-	db "Thank you!", $57
-; 0x1c4f9a
+UnknownText_0x1c0ada: ; 1c0ada
+	db $0, $52, " is out of", $4f
+	db "useable #MON!", $51
+	db $52, " whited", $4f
+	db "out!", $58
+; 1c0b03
 
-UnknownText_0x1c4f9a: ; 0x1c4f9a
-	db $0, "You don't have", $4f
-	db "enough money.", $57
-; 0x1c4fb7
+UnknownText_0x1c0b03: ; 1c0b03
+	text_from_ram $d099
+	db $0, " used", $4f
+	db "SWEET SCENT!", $57
+; 1c0b1a
 
-UnknownText_0x1c4fb7: ; 0x1c4fb7
-	db $0, "You can't carry", $4f
-	db "any more items.", $57
-; 0x1c4fd7
+UnknownText_0x1c0b1a: ; 1c0b1a
+	db $0, "Looks like there's", $4f
+	db "nothing here…", $57
+; 1c0b3b
 
-UnknownText_0x1c4fd7: ; 0x1c4fd7
-	db $0, "Sorry, I can't buy", $4f
-	db "that from you.", $58
-; 0x1c4ff9
+UnknownText_0x1c0b3b: ; 1c0b3b
+	db $0, $52, " sprinkled", $4f
+	db "water.", $51
+	db "But nothing", $4f
+	db "happened…", $57
+; 1c0b65
 
-UnknownText_0x1c4ff9: ; 0x1c4ff9
-	db $0, "Please come again!", $57
-; 0x1c500d
+UnknownText_0x1c0b65: ; 1c0b65
+	db $0, $52, "'s #MON", $4f
+	db "were all healed!", $57
+; 1c0b7f
 
-UnknownText_0x1c500d: ; 0x1c500d
-	db $0, "Can I do anything", $4f
-	db "else for you?", $57
-; 0x1c502e
+UnknownText_0x1c0b7f: ; 1c0b7f
+	db $0, "An EGG can't hold", $4f
+	db "an item.", $58
+; 1c0b9a
 
-UnknownText_0x1c502e: ; 0x1c502e
-	db $0, "Got ¥@"
-	deciram $ffc3, $36
-	db $0, " for", $4f
+UnknownText_0x1c0b9a: ; 1c0b9a
+	db $0, "No items.", $57
+; 1c0ba5
+
+UnknownText_0x1c0ba5: ; 1c0ba5
+	db $0, "Throw away how", $4f
+	db "many?", $57
+; 1c0bbb
+
+UnknownText_0x1c0bbb: ; 1c0bbb
+	db $0, "Throw away @"
+	deciram $d10c, $12
+	db $0, $4f
 	db "@"
 	text_from_ram $d086
-	db $0, "(S).", $57
-; 0x1c5049
+	db $0, "(S)?", $57
+; 1c0bd8
 
-UnknownText_0x1c5049: ; 0x1c5049
-	db $0, "Bet how many", $4f
-	db "coins?", $57
-; 0x1c505e
+UnknownText_0x1c0bd8: ; 1c0bd8
+	db $0, "Threw away", $4f
+	db "@"
+	text_from_ram $d086
+	db $0, "(S).", $58
+; 1c0bee
 
-UnknownText_0x1c505e: ; 0x1c505e
-	db $0, "Start!", $57
-; 0x1c5066
+UnknownText_0x1c0bee: ; 1c0bee
+	db $0, "OAK: ", $52, "!", $4f
+	db "This isn't the", $55
+	db "time to use that!", $58
+; 1c0c17
 
-UnknownText_0x1c5066: ; 0x1c5066
-	db $0, "Not enough", $4f
-	db "coins.", $58
-; 0x1c5079
+UnknownText_0x1c0c17: ; 1c0c17
+	db $0, "You don't have a", $4f
+	db "#MON!", $58
+; 1c0c2e
 
-UnknownText_0x1c5079: ; 0x1c5079
-	db $0, "Darn… Ran out of", $4f
-	db "coins…", $57
-; 0x1c5092
+UnknownText_0x1c0c2e: ; 1c0c2e
+	db $0, "Registered the", $4f
+	db "@"
+	text_from_ram $d086
+	db $0, ".", $58
+; 1c0c45
 
-UnknownText_0x1c5092: ; 0x1c5092
-	db $0, "Play again?", $57
-; 0x1c509f
+UnknownText_0x1c0c45: ; 1c0c45
+	db $0, "You can't register", $4f
+	db "that item.", $58
+; 1c0c63
 
-UnknownText_0x1c509f: ; 0x1c509f
-	db $0, "lined up!", $4f
-	db "Won @"
-	text_from_ram $d086
-	db $0, " coins!", $57
-; 0x1c50bb
+UnknownText_0x1c0c63: ; 1c0c63
+	db $0, "Where should this", $4f
+	db "be moved to?", $57
+; 1c0c83
 
-UnknownText_0x1c50bb: ; 0x1c50bb
-	db $0, "Darn!", $57
-; 0x1c50c2
+UnknownText_0x1c0c83: ; 1c0c83
+	db $0, $57
+; 1c0c85
 
-_MobileStadiumEntryText: ; 0x1c50c2
-	db $0, "Data for use in", $4f
-	db "the MOBILE STADIUM", $51
-	db "of the N64 #MON", $4f
-	db "STADIUM 2 can be", $55
-	db "read here.", $51
-	db "Read the data?", $57
-; 0x1c5121
+UnknownText_0x1c0c85: ; 1c0c85
+	db $0, "You can't use it", $4f
+	db "in a battle.", $58
+; 1c0ca3
 
-_MobileStadiumSuccessText: ; 0x1c5121
-	db $0, "Data transfer is", $4f
-	db "complete.", $51
-	db "We hope you enjoy", $4f
-	db "MOBILE STADIUM", $51
-	db "battles in the N64", $4f
-	db "#MON STADIUM 2.", $51
-	db $57
-; 0x1c5182
+UnknownText_0x1c0ca3: ; 1c0ca3
+	db $0, "Are you a boy?", $4f
+	db "Or are you a girl?", $57
+; 1c0cc6
 
-UnknownText_0x1c5182: ; 0x1c5182
-	db $0, "Clock time unknown", $57
-; 0x1c5196
+UnknownText_0x1c0cc6: ; 1c0cc6
+	db $0, $5a, "'s", $4f
+	db "@"
+	text_from_ram $d086
+	db "@"
+; 1c0ccf
 
-UnknownText_0x1c5196: ; 0x1c5196
-	db $0, "Delete the saved", $4f
-	db "LOG-IN PASSWORD?", $57
-; 0x1c51b9
+UnknownText_0x1c0ccf: ; 1c0ccf
+	db "@"
+; 1c0cd0
 
-UnknownText_0x1c51b9: ; 0x1c51b9
-	db $0, "Deleted the LOG-IN", $4f
-	db "PASSWORD.", $57
-; 0x1c51d7
+UnknownText_0x1c0cd0: ; 1c0cd0
+	interpret_data
+	db $0, $4c, "went way up!", $58
+; 1c0ce0
 
-UnknownText_0x1c51d7: ; 0x1c51d7
-	db $0, "Pick three #MON", $4f
-	db "for battle.", $58
-; 0x1c51f4
+UnknownText_0x1c0ce0: ; 1c0ce0
+	db $0, " went up!", $58
+; 1c0ceb
 
-UnknownText_0x1c51f4: ; 0x1c51f4
-	text_from_ram $d006
-	db $0, ",", $4f
+UnknownText_0x1c0ceb: ; 1c0ceb
+	db $0, $59, "'s", $4f
 	db "@"
-	text_from_ram $d00c
-	db $0, " and", $55
+	text_from_ram $d086
 	db "@"
-	text_from_ram $d012
-	db $0, ".", $51
-	db "Use these three?", $57
-; 0x1c521c
+; 1c0cf4
 
-UnknownText_0x1c521c: ; 0x1c521c
-	db $0, "Only three #MON", $4f
-	db "may enter.", $58
-; 0x1c5238
+UnknownText_0x1c0cf4: ; 1c0cf4
+	db "@"
+; 1c0cf5
 
-UnknownText_0x1c5238: ; 0x1c5238
-	db $0, "The CARD FOLDER", $4f
-	db "stores your and", $51
-	db "your friends'", $4f
-	db "CARDS.", $51
-	db "A CARD contains", $4f
-	db "information like", $51
-	db "the person's name,", $4f
-	db "phone number and", $55
-	db "profile.", $51
-	db $57
-; 0x1c52bc
+UnknownText_0x1c0cf5: ; 1c0cf5
+	interpret_data
+	db $0, $4c, "sharply fell!", $58
+; 1c0d06
 
-UnknownText_0x1c52bc: ; 0x1c52bc
-	db $0, "This is your CARD.", $51
-	db "Once you've", $4f
-	db "entered your phone", $51
-	db "number, you can", $4f
-	db "trade CARDS with", $55
-	db "your friends.", $51
-	db $57
-; 0x1c531e
+UnknownText_0x1c0d06: ; 1c0d06
+	db $0, " fell!", $58
+; 1c0d0e
 
-UnknownText_0x1c531e: ; 0x1c531e
-	db $0, "If you have your", $4f
-	db "friend's CARD, you", $51
-	db "can use it to make", $4f
-	db "a call from a", $51
-	db "mobile phone on", $4f
-	db "the 2nd floor of a", $55
-	db "#MON CENTER.", $51
-	db $57
-; 0x1c5394
+UnknownText_0x1c0d0e: ; 1c0d0e
+	db $0, $5a, "@"
+	db "@"
+; 1c0d12
 
-UnknownText_0x1c5394: ; 0x1c5394
-	db $0, "To safely store", $4f
-	db "your collection of", $51
-	db "CARDS, you must", $4f
-	db "set a PASSCODE for", $55
-	db "your CARD FOLDER.", $51
-	db $57
-; 0x1c53ee
+UnknownText_0x1c0d12: ; 1c0d12
+	db $0, $4f
+	db "made a whirlwind!", $58
+; 1c0d26
 
-UnknownText_0x1c53ee: ; 0x1c53ee
-	db $0, "If the CARD FOLDER", $4f
-	db "is deleted, all", $51
-	db "its CARDS and the", $4f
-	db "PASSCODE will also", $55
-	db "be deleted.", $51
-	db "Beware--a deleted", $4f
-	db "CARD FOLDER can't", $55
-	db "be restored.", $51
-	db "Want to delete", $4f
-	db "your CARD FOLDER?", $57
-; 0x1c5494
+UnknownText_0x1c0d26: ; 1c0d26
+	db $0, $4f
+	db "took in sunlight!", $58
+; 1c0d3a
 
-UnknownText_0x1c5494: ; 0x1c5494
-	db $0, "Are you sure you", $4f
-	db "want to delete it?", $57
-; 0x1c54b9
+UnknownText_0x1c0d3a: ; 1c0d3a
+	db $0, $4f
+	db "lowered its head!", $58
+; 1c0d4e
 
-UnknownText_0x1c54b9: ; 0x1c54b9
-	db $0, "The CARD FOLDER", $4f
-	db "has been deleted.", $51
-	db $57
-; 0x1c54dd
+UnknownText_0x1c0d4e: ; 1c0d4e
+	db $0, $4f
+	db "is glowing!", $58
+; 1c0d5c
 
-UnknownText_0x1c54dd: ; 0x1c54dd
-	db $0, "There is an older", $4f
-	db "CARD FOLDER from a", $55
-	db "previous journey.", $51
-	db "Do you want to", $4f
-	db "open it?", $57
-; 0x1c552d
+UnknownText_0x1c0d5c: ; 1c0d5c
+	db $0, $4f
+	db "flew up high!", $58
+; 1c0d6c
 
-UnknownText_0x1c552d: ; 0x1c552d
-	db $0, "Delete the old", $4f
-	db "CARD FOLDER?", $57
-; 0x1c554a
+UnknownText_0x1c0d6c: ; 1c0d6c
+	db $0, $4f
+	db "dug a hole!", $58
+; 1c0d7a
 
-UnknownText_0x1c554a: ; 0x1c554a
-	db $0, "Finish registering", $4f
-	db "CARDS?", $57
-; 0x1c5565
+_ActorNameText: ; 1c0d7a
+	db $0, $5a, "@"
+	db "@"
+; 1c0d7e
 
-UnknownText_0x1c5565: ; 0x1c5565
-	db $0, "Huh? Sorry, wrong", $4f
-	db "number!", $57
-; 0x1c5580
+_UsedMove1Text: ; 1c0d7e
+	db $0, $4f
+	db "used @"
+	db "@"
+; 1c0d87
 
-UnknownText_0x1c5580: ; 0x1c5580
-	db $0, "Click!", $57
-; 0x1c5588
+_UsedMove2Text: ; 1c0d87
+	db $0, $4f
+	db "used @"
+	db "@"
+; 1c0d90
 
-UnknownText_0x1c5588: ; 0x1c5588
-	db $0, $56, $57
-; 0x1c558b
+_UsedInsteadText: ; 1c0d90
+	db $0, "instead,", $55
+	db "@"
+	db "@"
+; 1c0d9c
 
-UnknownText_0x1c558b: ; 0x1c558b
-	db $0, "That number is out", $4f
-	db "of the area.", $57
-; 0x1c55ac
+_MoveNameText: ; 1c0d9c
+	text_from_ram StringBuffer2
+	db "@"
+; 1c0da0
 
-UnknownText_0x1c55ac: ; 0x1c55ac
-	db $0, "Just go talk to", $4f
-	db "that person!", $57
-; 0x1c55ca
+UnknownText_0x1c0da0: ; 1c0da0
+	db "@"
+; 1c0da1
 
-UnknownText_0x1c55ca: ; 0x1c55ca
-	db $0, "Thank you!", $57
-; 0x1c55d6
+_EndUsedMove1Text: ; 1c0da1
+	db $0, "!", $57
+; 1c0da4
 
-UnknownText_0x1c55d6: ; 0x1c55d6
-	db $0, "  :", $57
-; 0x1c55db
+_EndUsedMove2Text: ; 1c0da4
+	db $0, "!", $57
+; 1c0da7
 
-UnknownText_0x1c55db: ; 0x1c55db
-	db $0, "Password OK.", $4f
-	db "Select CONTINUE &", $55
-	db "reset settings.", $58
-; 0x1c560b
+_EndUsedMove3Text: ; 1c0da7
+	db $0, "!", $57
+; 1c0daa
 
-UnknownText_0x1c560b: ; 0x1c560b
-	db $0, "Wrong password!", $58
-; 0x1c561c
+_EndUsedMove4Text: ; 1c0daa
+	db $0, "!", $57
+; 1c0dad
 
-UnknownText_0x1c561c: ; 0x1c561c
-	db $0, "Reset the clock?", $57
-; 0x1c562e
+_EndUsedMove5Text: ; 1c0dad
+	db $0, "!", $57
+; 1c0db0
 
-UnknownText_0x1c562e: ; 0x1c562e
-	db $0, "Please enter the", $4f
-	db "password.", $57
-; 0x1c564a
+UnknownText_0x1c0db0: ; 1c0db0
+	db $0, "Huh?", $51
+	db "@"
+	db "@"
+; 1c0db8
 
-UnknownText_0x1c564a: ; 0x1c564a
-	db $0, "Clear all save", $4f
-	db "data?", $57
-; 0x1c5660
+UnknownText_0x1c0db8: ; 1c0db8
+	db $0, $57
+; 1c0dba
 
-UnknownText_0x1c5660: ; 0x1c5660
-	text_from_ram $d050
-	db $0, " learned", $4f
-	db "@"
-	text_from_ram $d086
-	db $0, "!@"
-	sound0
+UnknownText_0x1c0dba: ; 1c0dba
+	text_from_ram StringBuffer1
+	db $0, " came", $4f
+	db "out of its EGG!@"
+	sound0x02
 	text_waitbutton
-	db $50
-; 0x1c5677
+	db "@"
+; 1c0dd7
 
-UnknownText_0x1c5677: ; 0x1c5677
-	db $50
-; 0x1c5678
+UnknownText_0x1c0dd7: ; 1c0dd7
+	db "@"
+; 1c0dd8
 
-UnknownText_0x1c5678: ; 0x1c5678
-	db $0, "Which move should", $4e, "be forgotten?", $57
-; 0x1c5699
-
-UnknownText_0x1c5699: ; 0x1c5699
-	db $0, "Stop learning", $4f
+UnknownText_0x1c0dd8: ; 1c0dd8
+	db $0, "Give a nickname to", $4f
 	db "@"
-	text_from_ram $d086
+	text_from_ram StringBuffer1
 	db $0, "?", $57
-; 0x1c56af
+; 1c0df3
 
-UnknownText_0x1c56af: ; 0x1c56af
-	text_from_ram $d050
+UnknownText_0x1c0df3: ; 1c0df3
+	db $0, "It's @"
+	text_from_ram $df2f
 	db $0, $4f
-	db "did not learn", $55
-	db "@"
-	text_from_ram $d086
-	db $0, ".", $58
-; 0x1c56c9
+	db "that was left with", $55
+	db "the DAY-CARE LADY.", $57
+; 1c0e24
 
-UnknownText_0x1c56c9: ; 0x1c56c9
-	text_from_ram $d050
-	db $0, " is", $4f
-	db "trying to learn", $55
-	db "@"
-	text_from_ram $d086
-	db $0, ".", $51
-	db "But @"
-	text_from_ram $d050
+UnknownText_0x1c0e24: ; 1c0e24
+	db $0, "It's @"
+	text_from_ram $def6
 	db $0, $4f
-	db "can't learn more", $55
-	db "than four moves.", $51
-	db "Delete an older", $4f
-	db "move to make room", $55
-	db "for @"
-	text_from_ram $d086
-	db $0, "?", $57
-; 0x1c5740
+	db "that was left with", $55
+	db "the DAY-CARE MAN.", $57
+; 1c0e54
 
-UnknownText_0x1c5740: ; 0x1c5740
-	db $0, "1, 2 and…@"
-	interpret_data
-	db $50
-; 0x1c574d
+UnknownText_0x1c0e54: ; 1c0e54
+	db $0, "It's brimming with", $4f
+	db "energy.", $58
+; 1c0e6f
 
-UnknownText_0x1c574d: ; 0x1c574d
-	db $50
-; 0x1c574e
+UnknownText_0x1c0e6f: ; 1c0e6f
+	db $0, "It has no interest", $4f
+	db "in @"
+	text_from_ram $d073
+	db $0, ".", $58
+; 1c0e8d
 
-UnknownText_0x1c574e: ; 0x1c574e
-	db $0, " Poof!@"
-	interpret_data
-	db $0, $51
+UnknownText_0x1c0e8d: ; 1c0e8d
+	db $0, "It appears to care", $4f
+	db "for @"
+	text_from_ram $d073
+	db $0, ".", $58
+; 1c0eac
+
+UnknownText_0x1c0eac: ; 1c0eac
+	db $0, "It's friendly with", $4f
 	db "@"
-	text_from_ram $d050
-	db $0, " forgot", $4f
-	db "@"
 	text_from_ram $d073
-	db $0, ".", $51
-	db "And…", $58
-; 0x1c5772
+	db $0, ".", $58
+; 1c0ec6
 
-UnknownText_0x1c5772: ; 0x1c5772
-	db $0, "HM moves can't be", $4f
-	db "forgotten now.", $58
-; 0x1c5793
+UnknownText_0x1c0ec6: ; 1c0ec6
+	db $0, "It shows interest", $4f
+	db "in @"
+	text_from_ram $d073
+	db $0, ".", $58
+; 1c0ee3
 
-UnknownText_0x1c5793: ; 0x1c5793
-	db $0, "Play with three", $4f
-	db "coins?", $57
-; 0x1c57ab
+_EmptyMailboxText: ; 1c0ee3
+	db $0, "There's no MAIL", $4f
+	db "here.", $58
+; 1c0ef9
 
-UnknownText_0x1c57ab: ; 0x1c57ab
-	db $0, "Not enough coins…", $58
-; 0x1c57be
+ClearedMailPutAwayText: ; 1c0ef9
+	db $0, "The cleared MAIL", $4f
+	db "was put away.", $58
+; 1c0f19
 
-UnknownText_0x1c57be: ; 0x1c57be
-	db $0, "Choose a card.", $57
-; 0x1c57ce
+MailPackFullText: ; 1c0f19
+	db $0, "The PACK is full.", $58
+; 1c0f2c
 
-UnknownText_0x1c57ce: ; 0x1c57ce
-	db $0, "Place your bet.", $57
-; 0x1c57df
+MailMessageLostText: ; 1c0f2c
+	db $0, "The MAIL's message", $4f
+	db "will be lost. OK?", $57
+; 1c0f51
 
-UnknownText_0x1c57df: ; 0x1c57df
-	db $0, "Want to play", $4f
-	db "again?", $57
-; 0x1c57f4
+MailAlreadyHoldingItemText: ; 1c0f51
+	db $0, "It's already hold-", $4f
+	db "ing an item.", $58
+; 1c0f71
 
-UnknownText_0x1c57f4: ; 0x1c57f4
-	db $0, "The cards have", $4f
-	db "been shuffled.", $58
-; 0x1c5813
+MailEggText: ; 1c0f71
+	db $0, "An EGG can't hold", $4f
+	db "any MAIL.", $58
+; 1c0f8d
 
-UnknownText_0x1c5813: ; 0x1c5813
-	db $0, "Yeah!", $57
-; 0x1c581a
+MailMovedFromBoxText: ; 1c0f8d
+	db $0, "The MAIL was moved", $4f
+	db "from the MAILBOX.", $58
+; 1c0fb3
 
-UnknownText_0x1c581a: ; 0x1c581a
-	db $0, "Darn…", $57
-; 0x1c5821
+UnknownText_0x1c0fb3: ; 1c0fb3
+	db $0, "Yes", $58
+; 1c0fb8
 
-UnknownText_0x1c5821: ; 0x1c5821
-	current_day
-	db $50
-; 0x1c5823
+UnknownText_0x1c0fb8: ; 1c0fb8
+	db $0, "No", $58
+; 1c0fbc
 
-UnknownText_0x1c5823: ; 0x1c5823
-	db $50
-; 0x1c5824
+UnknownText_0x1c0fbc: ; 1c0fbc
+	deciram $cf64, $13
+	db $0, " @"
+	text_from_ram $d073
+	db $0, $4f
+	db "Animation type @"
+	text_from_ram $d086
+	db "@"
+; 1c0fdc
 
-UnknownText_0x1c5824: ; 0x1c5824
-	db $0, $56, $57
-; 0x1c5827
+UnknownText_0x1c0fdc: ; 1c0fdc
+	db "@"
+; 1c0fdd
 
-UnknownText_0x1c5827: ; 0x1c5827
-	db $0, "You're out of the", $4f
-	db "service area.", $58
-; 0x1c5847
+UnknownText_0x1c0fdd: ; 1c0fdd
+	db $0, "#MON number?", $57
+; 1c0feb
 
-UnknownText_0x1c5847: ; 0x1c5847
-	db $0, "Whom do you want", $4f
-	db "to call?", $57
-; 0x1c5862
+UnknownText_0x1c0feb: ; 1c0feb
+	text_from_ram $d073
+	db $0, " was", $4f
+	db "sent to BILL's PC.", $58
+; 1c1006
 
-UnknownText_0x1c5862: ; 0x1c5862
-	db $0, "Press any button", $4f
-	db "to exit.", $57
-; 0x1c587d
+UnknownText_0x1c1006: ; 1c1006
+	db $0, "You gotta have", $4f
+	db "#MON to call!", $58
+; 1c1024
 
-UnknownText_0x1c587d: ; 0x1c587d
-	db $0, "Delete this stored", $4f
-	db "phone number?", $57
-; 0x1c589f
+UnknownText_0x1c1024: ; 1c1024
+	db $0, "What?", $57
+; 1c102b
 
-UnknownText_0x1c589f: ; 0x1c589f
-	db $0, "Which prize would", $4f
-	db "you like?", $57
-; 0x1c58bc
+UnknownText_0x1c102b: ; 1c102b
+	db $0, "There is a #MON", $4f
+	db "holding MAIL.", $51
+	db "Please remove the", $4f
+	db "MAIL.", $58
+; 1c1062
 
-UnknownText_0x1c58bc: ; 0x1c58bc
+UnknownText_0x1c1062: ; 1c1062
+	db $0, "You don't have a", $4f
+	db "single #MON!", $58
+; 1c1080
+
+UnknownText_0x1c1080: ; 1c1080
+	db $0, "You can't deposit", $4f
+	db "your last #MON!", $58
+; 1c10a2
+
+UnknownText_0x1c10a2: ; 1c10a2
+	db $0, "You can't take any", $4f
+	db "more #MON.", $58
+; 1c10c0
+
+UnknownText_0x1c10c0: ; 1c10c0
+	db $0, "Caught @"
 	text_from_ram $d073
-	db $0, "?", $4f
-	db "Is that right?", $57
-; 0x1c58d1
+	db $0, "!", $58
+; 1c10cf
 
-UnknownText_0x1c58d1: ; 0x1c58d1
-	db $0, "Here you go!", $51
-	db $57
-; 0x1c58e0
+UnknownText_0x1c10cf: ; 1c10cf
+	db $0, "Switch #MON?", $57
+; 1c10dd
 
-UnknownText_0x1c58e0: ; 0x1c58e0
-	db $0, "You don't have", $4f
-	db "enough points.", $51
-	db $57
-; 0x1c58ff
+UnknownText_0x1c10dd: ; 1c10dd
+	db $0, "You already caught", $4f
+	db "a @"
+	text_from_ram $d073
+	db $0, ".", $58
+; 1c10fa
 
-UnknownText_0x1c58ff: ; 0x1c58ff
-	db $0, "You have no room", $4f
-	db "for it.", $51
-	db $57
-; 0x1c591a
+UnknownText_0x1c10fa: ; 1c10fa
+	db $0, "This Bug-Catching", $4f
+	db "Contest winner is@"
+	interpret_data
+	db $0, "…", $51
+	db "@"
+	text_from_ram $d016
+	db $0, ",", $4f
+	db "who caught a", $55
+	db "@"
+	text_from_ram $d073
+	db $0, "!@"
+	db "@"
+; 1c113f
 
-UnknownText_0x1c591a: ; 0x1c591a
-	db $0, "Oh. Please come", $4f
-	db "back again!", $57
-; 0x1c5937
+UnknownText_0x1c113f: ; 1c113f
+	db $0, $51
+	db "The winning score", $4f
+	db "was @"
+	deciram $d004, $23
+	db $0, " points!", $58
+; 1c1166
 
-UnknownText_0x1c5937: ; 0x1c5937
-	db $0, "Excuse me!", $51
-	db $57
-; 0x1c5944
+UnknownText_0x1c1166: ; 1c1166
+	db $0, "Placing second was", $4f
+	db "@"
+	text_from_ram $d016
+	db $0, ",", $51
+	db "who caught a", $4f
+	db "@"
+	text_from_ram $d073
+	db $0, "!@"
+	db "@"
+; 1c1196
 
-UnknownText_0x1c5944: ; 0x1c5944
-	db $0, "Excuse me.", $4f
-	db "You're not ready.", $51
-	db $57
-; 0x1c5962
+UnknownText_0x1c1196: ; 1c1196
+	db $0, $51
+	db "The score was", $4f
+	db "@"
+	deciram $d008, $23
+	db $0, " points!", $58
+; 1c11b5
 
-UnknownText_0x1c5962: ; 0x1c5962
-	db $0, "Please return when", $4f
-	db "you're ready.", $57
-; 0x1c5983
+UnknownText_0x1c11b5: ; 1c11b5
+	db $0, "Placing third was", $4f
+	db "@"
+	text_from_ram $d016
+	db $0, ",", $51
+	db "who caught a", $4f
+	db "@"
+	text_from_ram $d073
+	db $0, "!@"
+	db "@"
+; 1c11e4
 
-UnknownText_0x1c5983: ; 0x1c5983
-	db $0, "You need at least", $4f
-	db "three #MON.", $51
-	db $57
-; 0x1c59a3
+UnknownText_0x1c11e4: ; 1c11e4
+	db $0, $51
+	db "The score was", $4f
+	db "@"
+	deciram $d00c, $23
+	db $0, " points!", $58
+; 1c1203
 
-UnknownText_0x1c59a3: ; 0x1c59a3
-	db $0, "Sorry, an EGG", $4f
-	db "doesn't qualify.", $51
-	db $57
-; 0x1c59c3
+UnknownText_0x1c1203: ; 1c1203
+	db $0, "Let me measure", $4f
+	db "that MAGIKARP.", $51
+	db "…Hm, it measures", $4f
+	db "@"
+	text_from_ram $d073
+	db $0, ".", $58
+; 1c123a
 
-UnknownText_0x1c59c3: ; 0x1c59c3
-	db $0, "Only three #MON", $4f
-	db "may be entered.", $51
-	db $57
-; 0x1c59e5
+UnknownText_0x1c123a: ; 1c123a
+	db $0, "CURRENT RECORD", $51
+	db "@"
+	text_from_ram $d073
+	db $0, " caught by", $4f
+	db "@"
+	text_from_ram $dfea
+	text_waitbutton
+	db "@"
+; 1c1260
 
-UnknownText_0x1c59e5: ; 0x1c59e5
-	db $0, "The @"
-	text_from_ram $d086
-	db $0, " #MON", $4f
-	db "must all be", $55
-	db "different kinds.", $51
-	db $57
-; 0x1c5a13
+UnknownText_0x1c1260: ; 1c1260
+	db "@"
+; 1c1261
 
-UnknownText_0x1c5a13: ; 0x1c5a13
-	db $0, "The @"
-	text_from_ram $d086
-	db $0, " #MON", $4f
-	db "must not hold the", $55
-	db "same items.", $51
-	db $57
-; 0x1c5a42
+UnknownText_0x1c1261: ; 1c1261
+	db $0, "Congratulations!", $51
+	db "We have a match", $4f
+	db "with the ID number", $51
+	db "of @"
+	text_from_ram $d073
+	db $0, " in", $4f
+	db "your party.", $58
+; 1c12ae
 
-UnknownText_0x1c5a42: ; 0x1c5a42
-	db $0, "You can't take an", $4f
-	db "EGG!", $51
-	db $57
-; 0x1c5a5a
+UnknownText_0x1c12ae: ; 1c12ae
+	db $0, "Congratulations!", $51
+	db "We have a match", $4f
+	db "with the ID number", $51
+	db "of @"
+	text_from_ram $d073
+	db $0, " in", $4f
+	db "your PC BOX.", $58
+; 1c12fc
 
-UnknownText_0x1c5a5a: ; 0x1c5a5a
-	db $0, "It dodged the", $4f
-	db "thrown BALL!", $51
-	db "This #MON", $4f
-	db "can't be caught!", $58
-; 0x1c5a90
+UnknownText_0x1c12fc: ; 1c12fc
+	db $0, "Give a nickname to", $4f
+	db "the @"
+	text_from_ram $d073
+	db $0, " you", $55
+	db "received?", $57
+; 1c1328
 
-UnknownText_0x1c5a90: ; 0x1c5a90
-	db $0, "You missed the", $4f
-	db "#MON!", $58
-; 0x1c5aa6
+UnknownText_0x1c1328: ; 1c1328
+	db $0, "Bzzzzt! You must", $4f
+	db "have a #MON to", $55
+	db "use this!", $58
+; 1c1353
 
-UnknownText_0x1c5aa6: ; 0x1c5aa6
-	db $0, "Oh no! The #MON", $4f
-	db "broke free!", $58
-; 0x1c5ac3
+UnknownText_0x1c1353: ; 1c1353
+	db $0, $52, " turned on", $4f
+	db "the PC.", $58
+; 1c1368
 
-UnknownText_0x1c5ac3: ; 0x1c5ac3
-	db $0, "Aww! It appeared", $4f
-	db "to be caught!", $58
-; 0x1c5ae3
+UnknownText_0x1c1368: ; 1c1368
+	db $0, "What do you want", $4f
+	db "to do?", $57
+; 1c1381
 
-UnknownText_0x1c5ae3: ; 0x1c5ae3
-	db $0, "Aargh!", $4f
-	db "Almost had it!", $58
-; 0x1c5afa
+_KrissPCHowManyWithdrawText: ; 1c1381
+	db $0, "How many do you", $4f
+	db "want to withdraw?", $57
+; 1c13a4
 
-UnknownText_0x1c5afa: ; 0x1c5afa
-	db $0, "Shoot! It was so", $4f
-	db "close too!", $58
-; 0x1c5b17
+_KrissPCWithdrewItemsText: ; 1c13a4
+	db $0, "Withdrew @"
+	deciram $d10c, $12
+	db $0, $4f
+	db "@"
+	text_from_ram $d086
+	db $0, "(S).", $58
+; 1c13bf
 
-UnknownText_0x1c5b17: ; 0x1c5b17
-	db $0, "Gotcha! @"
-	text_from_ram $c616
+_KrissPCNoRoomWithdrawText: ; 1c13bf
+	db $0, "There's no room", $4f
+	db "for more items.", $58
+; 1c13df
+
+UnknownText_0x1c13df: ; 1c13df
+	db $0, "No items here!", $58
+; 1c13ef
+
+_KrissPCHowManyDepositText: ; 1c13ef
+	db $0, "How many do you", $4f
+	db "want to deposit?", $57
+; 1c1411
+
+_KrissPCDepositItemsText: ; 1c1411
+	db $0, "Deposited @"
+	deciram $d10c, $12
 	db $0, $4f
-	db "was caught!@"
-	sound0x02
-	db $50
-; 0x1c5b34
+	db "@"
+	text_from_ram $d086
+	db $0, "(S).", $58
+; 1c142d
 
-UnknownText_0x1c5b34: ; 0x1c5b34
-	db $50
-; 0x1c5b35
+_KrissPCNoRoomDepositText: ; 1c142d
+	db $0, "There's no room to", $4f
+	db "store items.", $58
+; 1c144d
 
-UnknownText_0x1c5b35: ; 0x1c5b35
-	text_waitbutton
-	db $50
-; 0x1c5b37
+UnknownText_0x1c144d: ; 1c144d
+	db $0, $52, " turned on", $4f
+	db "the PC.", $58
+; 1c1462
 
-UnknownText_0x1c5b37: ; 0x1c5b37
-	db $50
-; 0x1c5b38
+UnknownText_0x1c1462: ; 1c1462
+	db $0, "Access whose PC?", $57
+; 1c1474
 
-UnknownText_0x1c5b38: ; 0x1c5b38
-	text_from_ram $d050
-	db $0, " was", $4f
-	db "sent to BILL's PC.", $58
-; 0x1c5b53
+UnknownText_0x1c1474: ; 1c1474
+	db $0, "BILL's PC", $4f
+	db "accessed.", $51
+	db "#MON Storage", $4f
+	db "System opened.", $58
+; 1c14a4
 
-UnknownText_0x1c5b53: ; 0x1c5b53
-	text_from_ram $c616
-	db $0, "'s data", $4f
-	db "was newly added to", $55
-	db "the #DEX.@"
-	sound0x2C
-	text_waitbutton
-	db $50
-; 0x1c5b7e
+UnknownText_0x1c14a4: ; 1c14a4
+	db $0, "Accessed own PC.", $51
+	db "Item Storage", $4f
+	db "System opened.", $58
+; 1c14d2
 
-UnknownText_0x1c5b7e: ; 0x1c5b7e
-	db $50
-; 0x1c5b7f
+UnknownText_0x1c14d2: ; 1c14d2
+	db $0, "PROF.OAK's PC", $4f
+	db "accessed.", $51
+	db "#DEX Rating", $4f
+	db "System opened.", $58
+; 1c1505
 
-UnknownText_0x1c5b7f: ; 0x1c5b7f
-	db $0, "Give a nickname to", $4f
-	db "@"
-	text_from_ram $d073
-	db $0, "?", $57
-; 0x1c5b9a
+UnknownText_0x1c1505: ; 1c1505
+	db $0, "…", $4f
+	db "Link closed…", $57
+; 1c1515
 
-UnknownText_0x1c5b9a: ; 0x1c5b9a
-	text_from_ram $d073
-	db $0, "'s", $4f
+_OakPCText1: ; 1c1515
+	db $0, "Want to get your", $4f
+	db "#DEX rated?", $57
+; 1c1533
+
+_OakPCText2: ; 1c1533
+	db $0, "Current #DEX", $4f
+	db "completion level:", $58
+; 1c1553
+
+_OakPCText3: ; 1c1553
+	text_from_ram $d099
+	db $0, " #MON seen", $4f
 	db "@"
-	text_from_ram $d086
-	db $0, " rose.", $58
-; 0x1c5bac
+	text_from_ram $d0ac
+	db $0, " #MON owned", $51
+	db "PROF.OAK's", $4f
+	db "Rating:", $57
+; 1c1585
 
-UnknownText_0x1c5bac: ; 0x1c5bac
-	db $0, "That can't be used", $4f
-	db "on this #MON.", $58
-; 0x1c5bcd
+_OakRating01: ; 1c1585
+	db $0, "Look for #MON", $4f
+	db "in grassy areas!", $57
+; 1c15a5
 
-UnknownText_0x1c5bcd: ; 0x1c5bcd
-	db $0, "The REPEL used", $4f
-	db "earlier is still", $55
-	db "in effect.", $58
-; 0x1c5bf9
+_OakRating02: ; 1c15a5
+	db $0, "Good. I see you", $4f
+	db "understand how to", $55
+	db "use # BALLS.", $57
+; 1c15d5
 
-UnknownText_0x1c5bf9: ; 0x1c5bf9
-	db $0, "Played the #", $4f
-	db "FLUTE.", $51
-	db "Now, that's a", $4f
-	db "catchy tune!", $58
-; 0x1c5c28
+_OakRating03: ; 1c15d5
+	db $0, "You're getting", $4f
+	db "good at this.", $51
+	db "But you have a", $4f
+	db "long way to go.", $57
+; 1c1611
 
-UnknownText_0x1c5c28: ; 0x1c5c28
-	db $0, "All sleeping", $4f
-	db "#MON woke up.", $58
-; 0x1c5c44
+_OakRating04: ; 1c1611
+	db $0, "You need to fill", $4f
+	db "up the #DEX.", $51
+	db "Catch different", $4f
+	db "kinds of #MON!", $57
+; 1c164f
 
-UnknownText_0x1c5c44: ; 0x1c5c44
-	db $0, $52, " played the", $4f
-	db "# FLUTE.@"
-	text_waitbutton
-	db $50
-; 0x1c5c5d
+_OakRating05: ; 1c164f
+	db $0, "You're trying--I", $4f
+	db "can see that.", $51
+	db "Your #DEX is", $4f
+	db "coming together.", $57
+; 1c168c
 
-UnknownText_0x1c5c5d: ; 0x1c5c5d
-	db $50
-; 0x1c5c5e
+_OakRating06: ; 1c168c
+	db $0, "To evolve, some", $4f
+	db "#MON grow,", $51
+	db "others use the", $4f
+	db "effects of STONES.", $57
+; 1c16ca
 
-UnknownText_0x1c5c5e: ; 0x1c5c5e
-	db $0, "You now have", $4f
-	db "@"
-	deciram $dc4b, $12
-	db $0, " points.", $57
-; 0x1c5c7b
+_OakRating07: ; 1c16ca
+	db $0, "Have you gotten a", $4f
+	db "fishing ROD? You", $51
+	db "can catch #MON", $4f
+	db "by fishing.", $57
+; 1c1709
 
-UnknownText_0x1c5c7b: ; 0x1c5c7b
-	db $0, "Coins:", $4f
-	db "@"
-	deciram $d855, $24
-	db $50
-; 0x1c5c89
+_OakRating08: ; 1c1709
+	db $0, "Excellent! You", $4f
+	db "seem to like col-", $55
+	db "lecting things!", $57
+; 1c173b
 
-UnknownText_0x1c5c89: ; 0x1c5c89
-	db $50
-; 0x1c5c8a
+_OakRating09: ; 1c173b
+	db $0, "Some #MON only", $4f
+	db "appear during", $51
+	db "certain times of", $4f
+	db "the day.", $57
+; 1c1773
 
-UnknownText_0x1c5c8a: ; 0x1c5c8a
-	db $0, "Raise the PP of", $4f
-	db "which move?", $57
-; 0x1c5ca7
+_OakRating10: ; 1c1773
+	db $0, "Your #DEX is", $4f
+	db "filling up. Keep", $55
+	db "up the good work!", $57
+; 1c17a4
 
-UnknownText_0x1c5ca7: ; 0x1c5ca7
-	db $0, "Restore the PP of", $4f
-	db "which move?", $57
-; 0x1c5cc6
+_OakRating11: ; 1c17a4
+	db $0, "I'm impressed.", $4f
+	db "You're evolving", $51
+	db "#MON, not just", $4f
+	db "catching them.", $57
+; 1c17e0
 
-UnknownText_0x1c5cc6: ; 0x1c5cc6
-	text_from_ram $d086
-	db $0, "'s PP", $4f
-	db "is maxed out.", $58
-; 0x1c5cdd
+_OakRating12: ; 1c17e0
+	db $0, "Have you met KURT?", $4f
+	db "His custom BALLS", $55
+	db "should help.", $57
+; 1c1812
 
-UnknownText_0x1c5cdd: ; 0x1c5cdd
-	text_from_ram $d086
-	db $0, "'s PP", $4f
-	db "increased.", $58
-; 0x1c5cf1
+_OakRating13: ; 1c1812
+	db $0, "Wow. You've found", $4f
+	db "more #MON than", $51
+	db "the last #DEX", $4f
+	db "research project.", $57
+; 1c1853
 
-UnknownText_0x1c5cf1: ; 0x1c5cf1
-	db $0, "PP was restored.", $58
-; 0x1c5d03
+_OakRating14: ; 1c1853
+	db $0, "Are you trading", $4f
+	db "your #MON?", $51
+	db "It's tough to do", $4f
+	db "this alone!", $57
+; 1c188b
 
-UnknownText_0x1c5d03: ; 0x1c5d03
-	db $0, "There was a trophy", $4f
-	db "inside!@"
-	sound0
-	db $0, $51
-	db "@"
-	text_from_ram PlayerName
-	db $0, " sent the", $4f
-	db "trophy home.", $58
-; 0x1c5d3e
+_OakRating15: ; 1c188b
+	db $0, "Wow! You've hit", $4f
+	db "200! Your #DEX", $55
+	db "is looking great!", $57
+; 1c18bc
 
-UnknownText_0x1c5d3e: ; 0x1c5d3e
-	db $0, "It looks bitter…", $58
-; 0x1c5d50
+_OakRating16: ; 1c18bc
+	db $0, "You've found so", $4f
+	db "many #MON!", $51
+	db "You've really", $4f
+	db "helped my studies!", $57
+; 1c18f7
 
-UnknownText_0x1c5d50: ; 0x1c5d50
-	db $0, "That can't be used", $4f
-	db "on an EGG.", $58
-; 0x1c5d6e
+_OakRating17: ; 1c18f7
+	db $0, "Magnificent! You", $4f
+	db "could become a", $51
+	db "#MON professor", $4f
+	db "right now!", $57
+; 1c1932
 
-UnknownText_0x1c5d6e: ; 0x1c5d6e
-	db $0, "OAK: ", $52, "!", $4f
-	db "This isn't the", $55
-	db "time to use that!", $58
-; 0x1c5d97
+_OakRating18: ; 1c1932
+	db $0, "Your #DEX is", $4f
+	db "amazing! You're", $51
+	db "ready to turn", $4f
+	db "professional!", $57
+; 1c196b
 
-UnknownText_0x1c5d97: ; 0x1c5d97
-	db $0, "That belongs to", $4f
-	db "someone else!", $58
-; 0x1c5db6
+_OakRating19: ; 1c196b
+	db $0, "Whoa! A perfect", $4f
+	db "#DEX! I've", $51
+	db "dreamt about this!", $4f
+	db "Congratulations!", $57
+; 1c19aa
 
-UnknownText_0x1c5db6: ; 0x1c5db6
-	db $0, "It won't have any", $4f
-	db "effect.", $58
-; 0x1c5dd0
+_OakPCText4: ; 1c19aa
+	db $0, "The link to PROF.", $4f
+	db "OAK's PC closed.", $57
+; 1c19cd
 
-UnknownText_0x1c5dd0: ; 0x1c5dd0
-	db $0, "The trainer", $4f
-	db "blocked the BALL!", $58
-; 0x1c5def
+UnknownText_0x1c19cd: ; 1c19cd
+	db $0, "Triple-theme", $4f
+	db "trainer ranking!", $51
+	db "The SAVE file you", $4f
+	db "just sent might", $55
+	db "make the rankings!", $51
+	db $57
+; 1c1a22
 
-UnknownText_0x1c5def: ; 0x1c5def
-	db $0, "Don't be a thief!", $58
-; 0x1c5e01
+UnknownText_0x1c1a22: ; 1c1a22
+	db $0, "There is no", $4f
+	db "ranking data.", $51
+	db "Link to obtain", $4f
+	db "ranking data.", $51
+	db $57
+; 1c1a5b
 
-UnknownText_0x1c5e01: ; 0x1c5e01
-	db $0, "Cycling isn't", $4f
-	db "allowed here.", $58
-; 0x1c5e1d
+UnknownText_0x1c1a5b: ; 1c1a5b
+	db $0, " , yeah!", $57
+; 1c1a65
 
-UnknownText_0x1c5e1d: ; 0x1c5e1d
-	db $0, "Can't get on your", $4f
+UnknownText_0x1c1a65: ; 1c1a65
+	db $0, "Darn…", $57
+; 1c1a6c
+
+UnknownText_0x1c1a6c: ; 1c1a6c
+	db $0, "Would you like to", $4f
+	db "end the Contest?", $57
+; 1c1a90
+
+UnknownText_0x1c1a90: ; 1c1a90
+	db $0, "Toss out how many", $4f
 	db "@"
+	text_from_ram $d086
+	db $0, "(S)?", $57
+; 1c1aad
+
+UnknownText_0x1c1aad: ; 1c1aad
+	db $0, "Throw away @"
+	deciram $d10c, $12
+	db $0, $4f
+	db "@"
+	text_from_ram $d086
+	db $0, "(S)?", $57
+; 1c1aca
+
+UnknownText_0x1c1aca: ; 1c1aca
+	db $0, "Discarded", $4f
+	db "@"
 	text_from_ram $d073
-	db $0, " now.", $58
-; 0x1c5e3a
+	db $0, "(S).", $58
+; 1c1adf
 
-UnknownText_0x1c5e3a: ; 0x1c5e3a
-	db $0, "The #MON BOX", $4f
-	db "is full. That", $55
-	db "can't be used now.", $58
-; 0x1c5e68
+UnknownText_0x1c1adf: ; 1c1adf
+	db $0, "That's too impor-", $4f
+	db "tant to toss out!", $58
+; 1c1b03
 
-UnknownText_0x1c5e68: ; 0x1c5e68
-	db $0, $52, " used the@"
-	text_dunno1
-	text_from_ram $d086
-	db $0, ".", $57
-; 0x1c5e7b
+UnknownText_0x1c1b03: ; 1c1b03
+	db $0, "OAK: ", $52, "!", $4f
+	db "This isn't the", $55
+	db "time to use that!", $57
+; 1c1b2c
 
-UnknownText_0x1c5e7b: ; 0x1c5e7b
-	db $0, $52, " got on the@"
-	text_dunno1
+UnknownText_0x1c1b2c: ; 1c1b2c
+	db $0, "Took @"
+	text_from_ram $d050
+	db $0, "'s", $4f
+	db "@"
+	text_from_ram $d073
+	db $0, " and", $51
+	db "made it hold", $4f
+	db "@"
 	text_from_ram $d086
 	db $0, ".", $58
-; 0x1c5e90
+; 1c1b57
 
-UnknownText_0x1c5e90: ; 0x1c5e90
-	db $0, $52, " got off@"
-	text_dunno1
-	db $0, "the @"
+UnknownText_0x1c1b57: ; 1c1b57
+	db $0, "Made @"
+	text_from_ram $d050
+	db $0, $4f
+	db "hold @"
 	text_from_ram $d086
 	db $0, ".", $58
-; 0x1c5ea8
+; 1c1b6f
 
-UnknownText_0x1c5ea8: ; 0x1c5ea8
+UnknownText_0x1c1b6f: ; 1c1b6f
+	db $0, "Please remove the", $4f
+	db "MAIL first.", $58
+; 1c1b8e
+
+UnknownText_0x1c1b8e: ; 1c1b8e
+	text_from_ram $d050
+	db $0, " isn't", $4f
+	db "holding anything.", $58
+; 1c1baa
+
+UnknownText_0x1c1baa: ; 1c1baa
+	db $0, "Item storage space", $4f
+	db "full.", $58
+; 1c1bc4
+
+UnknownText_0x1c1bc4: ; 1c1bc4
+	db $0, "Took @"
 	text_from_ram $d073
-	db $0, " knows", $4f
-	db "@"
-	text_from_ram $d086
+	db $0, $4f
+	db "from @"
+	text_from_ram $d050
 	db $0, ".", $58
-; 0x1c5eba
+; 1c1bdc
 
-UnknownText_0x1c5eba: ; 0x1c5eba
-	db $0, "That #MON knows", $4f
-	db "only one move.", $57
-; 0x1c5eda
-
-UnknownText_0x1c5eda: ; 0x1c5eda
-	db $0, "Oh, make it forget", $4f
+UnknownText_0x1c1bdc: ; 1c1bdc
+	text_from_ram $d050
+	db $0, " is", $4f
+	db "already holding", $51
 	db "@"
 	text_from_ram $d073
-	db $0, "?", $57
-; 0x1c5ef5
+	db $0, ".", $4f
+	db "Switch items?", $57
+; 1c1c09
 
-UnknownText_0x1c5ef5: ; 0x1c5ef5
-	db $0, "Done! Your #MON", $4f
-	db "forgot the move.", $57
-; 0x1c5f17
+UnknownText_0x1c1c09: ; 1c1c09
+	db $0, "This item can't be", $4f
+	db "held.", $58
+; 1c1c22
 
-UnknownText_0x1c5f17: ; 0x1c5f17
-	db $0, "An EGG doesn't", $4f
-	db "know any moves!", $57
-; 0x1c5f36
+UnknownText_0x1c1c22: ; 1c1c22
+	db $0, "The MAIL will lose", $4f
+	db "its message. OK?", $57
+; 1c1c47
 
-UnknownText_0x1c5f36: ; 0x1c5f36
-	db $0, "No? Come visit me", $4f
-	db "again.", $57
-; 0x1c5f50
+UnknownText_0x1c1c47: ; 1c1c47
+	db $0, "MAIL detached from", $4f
+	db "@"
+	text_from_ram $d073
+	db $0, ".", $58
+; 1c1c62
 
-UnknownText_0x1c5f50: ; 0x1c5f50
-	db $0, "Which move should", $4f
-	db "it forget, then?", $58
-; 0x1c5f74
+UnknownText_0x1c1c62: ; 1c1c62
+	db $0, "There's no space", $4f
+	db "for removing MAIL.", $58
+; 1c1c86
 
-UnknownText_0x1c5f74: ; 0x1c5f74
-	db $0, "Um… Oh, yes, I'm", $4f
-	db "the MOVE DELETER.", $51
-	db "I can make #MON", $4f
-	db "forget moves.", $51
-	db "Shall I make a", $4f
-	db "#MON forget?", $57
-; 0x1c5fd1
+UnknownText_0x1c1c86: ; 1c1c86
+	db $0, "Send the removed", $4f
+	db "MAIL to your PC?", $57
+; 1c1ca9
 
-UnknownText_0x1c5fd1: ; 0x1c5fd1
-	db $0, "Which #MON?", $58
-; 0x1c5fde
+UnknownText_0x1c1ca9: ; 1c1ca9
+	db $0, "Your PC's MAILBOX", $4f
+	db "is full.", $58
+; 1c1cc4
 
-UnknownText_0x1c5fde: ; 0x1c5fde
-	db $0, " DST,", $4f
-	db "is that OK?", $57
-; 0x1c5ff1
+UnknownText_0x1c1cc4: ; 1c1cc4
+	db $0, "The MAIL was sent", $4f
+	db "to your PC.", $58
+; 1c1ce3
 
-UnknownText_0x1c5ff1: ; 0x1c5ff1
-	db $0, ",", $4f
-	db "is that OK?", $57
-; 0x1c6000
+UnknownText_0x1c1ce3: ; 1c1ce3
+	db $0, "Not enough HP!", $58
+; 1c1cf3
 
-UnknownText_0x1c6000: ; 0x1c6000
-	db $0, "Do you want to", $4f
-	db "switch to Daylight", $55
-	db "Saving Time?", $57
-; 0x1c6030
+UnknownText_0x1c1cf3: ; 1c1cf3
+	db $0, "An item in your", $4f
+	db "PACK may be", $51
+	db "registered for use", $4f
+	db "on SELECT Button.", $57
+; 1c1d35
 
-UnknownText_0x1c6030: ; 0x1c6030
-	db $0, "I set the clock", $4f
-	db "forward by one", $55
-	db "hour.", $58
-; 0x1c6056
+_OakText1: ; 1c1d35
+	db $0, "Hello! Sorry to", $4f
+	db "keep you waiting!", $51
+	db "Welcome to the", $4f
+	db "world of #MON!", $51
+	db "My name is OAK.", $51
+	db "People call me the", $4f
+	db "#MON PROF.", $58
+; 1c1da4
 
-UnknownText_0x1c6056: ; 0x1c6056
-	db $0, "Is Daylight Saving", $4f
-	db "Time over?", $57
-; 0x1c6075
+_OakText2: ; 1c1da4
+	db $0, "This world is in-", $4f
+	db "habited by crea-", $55
+	db "tures that we call", $55
+	db "#MON.@"
+	db "@"
+; 1c1de2
 
-UnknownText_0x1c6075: ; 0x1c6075
-	db $0, "I put the clock", $4f
-	db "back one hour.", $58
-; 0x1c6095
+_OakText3: ; 1c1de2
+	text_waitbutton
+	db "@"
+; 1c1de4
 
-UnknownText_0x1c6095: ; 0x1c6095
-	db $0, "Do you want to", $4f
-	db "adjust your clock", $51
-	db "for Daylight", $4f
-	db "Saving Time?", $57
-; 0x1c60d1
+UnknownText_0x1c1de4: ; 1c1de4
+	db "@"
+; 1c1de5
 
-UnknownText_0x1c60d1: ; 0x1c60d1
-	db $0, "I lost the in-", $4f
-	db "struction booklet", $55
-	db "for the #GEAR.", $51
-	db "Come back again in", $4f
-	db "a while.", $58
-; 0x1c611e
+_OakText4: ; 1c1de5
+	db $0, "People and #MON", $4f
+	db "live together by", $51
+	db "supporting each", $4f
+	db "other.", $51
+	db "Some people play", $4f
+	db "with #MON, some", $55
+	db "battle with them.", $58
+; 1c1e51
 
+_OakText5: ; 1c1e51
+	db $0, "But we don't know", $4f
+	db "everything about", $55
+	db "#MON yet.", $51
+	db "There are still", $4f
+	db "many mysteries to", $55
+	db "solve.", $51
+	db "That's why I study", $4f
+	db "#MON every day.", $58
+; 1c1ec9
--- /dev/null
+++ b/text/common_4.asm
@@ -1,0 +1,1455 @@
+_OakText6: ; 0x1c4000
+	db $0, "Now, what did you", $4f
+	db "say your name was?", $58
+; 0x1c4026
+
+_OakText7: ; 0x1c4026
+	db $0, $52, ", are you", $4f
+	db "ready?", $51
+	db "Your very own", $4f
+	db "#MON story is", $55
+	db "about to unfold.", $51
+	db "You'll face fun", $4f
+	db "times and tough", $55
+	db "challenges.", $51
+	db "A world of dreams", $4f
+	db "and adventures", $51
+	db "with #MON", $4f
+	db "awaits! Let's go!", $51
+	db "I'll be seeing you", $4f
+	db "later!", $57
+; 0x1c40e6
+
+UnknownText_0x1c40e6: ; 0x1c40e6
+	db $0, "The clock's time", $4f
+	db "may be wrong.", $51
+	db "Please reset the", $4f
+	db "time.", $58
+; 0x1c411c
+
+UnknownText_0x1c411c: ; 0x1c411c
+	db $0, "Set with the", $4f
+	db "Control Pad.", $51
+	db "Confirm: A Button", $4f
+	db "Cancel:  B Button", $57
+; 0x1c415b
+
+UnknownText_0x1c415b: ; 0x1c415b
+	db $0, "Is this OK?", $57
+; 0x1c4168
+
+UnknownText_0x1c4168: ; 0x1c4168
+	db $0, "The clock has been", $4f
+	db "reset.", $57
+; 0x1c4183
+
+UnknownText_0x1c4183: ; 0x1c4183
+	db $0, "Too much time has", $4f
+	db "elapsed. Please", $55
+	db "try again.", $58
+; 0x1c41b1
+
+UnknownText_0x1c41b1: ; 0x1c41b1
+	db $0, "If you trade that", $4f
+	db "#MON, you won't", $55
+	db "be able to battle.", $58
+; 0x1c41e6
+
+UnknownText_0x1c41e6: ; 0x1c41e6
+	db $0, "Your friend's", $4f
+	db "@"
+	text_from_ram $d073
+	db $0, " appears", $55
+	db "to be abnormal!", $58
+; 0x1c4212
+
+UnknownText_0x1c4212: ; 0x1c4212
+	db $0, "Trade @"
+	text_from_ram $d004
+	db $0, $4f
+	db "for @"
+	text_from_ram $d073
+	db $0, "?", $57
+; 0x1c422a
+
+UnknownText_0x1c422a: ; 0x1c422a
+	db $0, "To enter a mobile", $4f
+	db "battle, you must", $51
+	db "pick a team of", $4f
+	db "three #MON.", $51
+	db "Is that OK?", $57
+; 0x1c4275
+
+UnknownText_0x1c4275: ; 0x1c4275
+	db $0, "Need more info on", $4f
+	db "mobile battles?", $57
+; 0x1c4298
+
+UnknownText_0x1c4298: ; 0x1c4298
+	db $0, "For a mobile", $4f
+	db "battle, choose", $55
+	db "three #MON.", $51
+	db "The maximum daily", $4f
+	db "play time is ten", $51
+	db "minutes for each", $4f
+	db "linked player.", $51
+	db "If a battle isn't", $4f
+	db "finished within", $51
+	db "the time limit,", $4f
+	db "the player with", $51
+	db "the fewest fainted", $4f
+	db "#MON wins.", $51
+	db "If tied, the team", $4f
+	db "that lost the", $51
+	db "least amount of HP", $4f
+	db "wins.", $57
+; 0x1c439c
+
+UnknownText_0x1c439c: ; 0x1c439c
+	db $0, "Today's remaining", $4f
+	db "time is @"
+	deciram $d086, $12
+	db $0, " min.", $51
+	db "Would you like to", $4f
+	db "battle?", $57
+; 0x1c43dc
+
+UnknownText_0x1c43dc: ; 0x1c43dc
+	db $0, "There are only @"
+	deciram $d086, $12
+	db $0, $4f
+	db "min. left today.", $51
+	db "Want a quick", $4f
+	db "battle?", $57
+; 0x1c4419
+
+UnknownText_0x1c4419: ; 0x1c4419
+	db $0, "There is only", $4f
+	db "1 min. left today!", $51
+	db "Want to rush", $4f
+	db "through a battle?", $57
+; 0x1c445a
+
+UnknownText_0x1c445a: ; 0x1c445a
+	db $0, "There is less than", $4f
+	db "1 min. left today!", $51
+	db "Please try again", $4f
+	db "tomorrow.", $57
+; 0x1c449c
+
+UnknownText_0x1c449c: ; 0x1c449c
+	db $0, "Try again using", $4f
+	db "the same settings?", $57
+; 0x1c44c0
+
+UnknownText_0x1c44c0: ; 0x1c44c0
+	db $0, "There is less than", $4f
+	db "1 min. left today!", $57
+; 0x1c44e7
+
+UnknownText_0x1c44e7: ; 0x1c44e7
+	db $0, "No time left for", $4f
+	db "linking today.", $57
+; 0x1c4508
+
+UnknownText_0x1c4508: ; 0x1c4508
+	db $0, "Pick three #MON", $4f
+	db "for battle.", $57
+; 0x1c4525
+
+UnknownText_0x1c4525: ; 0x1c4525
+	db $0, "Today's remaining", $4f
+	db "time is @"
+	deciram $d086, $12
+	db $0, " min.", $57
+; 0x1c454b
+
+UnknownText_0x1c454b: ; 0x1c454b
+	db $0, "Would you like to", $4f
+	db "save the game?", $57
+; 0x1c456d
+
+UnknownText_0x1c456d: ; 0x1c456d
+	db $0, "SAVING… DON'T TURN", $4f
+	db "OFF THE POWER.", $57
+; 0x1c4590
+
+UnknownText_0x1c4590: ; 0x1c4590
+	db $0, $52, " saved", $4f
+	db "the game.", $57
+; 0x1c45a3
+
+UnknownText_0x1c45a3: ; 0x1c45a3
+	db $0, "There is already a", $4f
+	db "save file. Is it", $55
+	db "OK to overwrite?", $57
+; 0x1c45d9
+
+UnknownText_0x1c45d9: ; 0x1c45d9
+	db $0, "There is another", $4f
+	db "save file. Is it", $55
+	db "OK to overwrite?", $57
+; 0x1c460d
+
+UnknownText_0x1c460d: ; 0x1c460d
+	db $0, "The save file is", $4f
+	db "corrupted!", $58
+; 0x1c462a
+
+UnknownText_0x1c462a: ; 0x1c462a
+	db $0, "When you change a", $4f
+	db "#MON BOX, data", $55
+	db "will be saved. OK?", $57
+; 0x1c465f
+
+UnknownText_0x1c465f: ; 0x1c465f
+	db $0, "Each time you move", $4f
+	db "a #MON, data", $55
+	db "will be saved. OK?", $57
+; 0x1c4693
+
+UnknownText_0x1c4693: ; 0x1c4693
+	db $0, "The window save", $4f
+	db "area was exceeded.", $57
+; 0x1c46b7
+
+UnknownText_0x1c46b7: ; 0x1c46b7
+	db $0, "No windows avail-", $4f
+	db "able for popping.", $57
+; 0x1c46dc
+
+UnknownText_0x1c46dc: ; 0x1c46dc
+	db $0, "Corrupted event!", $58
+; 0x1c46ee
+
+_ObjectEventText: ; 0x1c46ee
+	db $0, "Object event", $57
+; 0x1c46fc
+
+UnknownText_0x1c46fc: ; 0x1c46fc
+	db $0, "BG event", $57
+; 0x1c4706
+
+UnknownText_0x1c4706: ; 0x1c4706
+	db $0, "Coordinates event", $57
+; 0x1c4719
+
+UnknownText_0x1c4719: ; 0x1c4719
+	db $0, $52, " received", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, ".", $57
+; 0x1c472c
+
+UnknownText_0x1c472c: ; 0x1c472c
+	db $0, $52, " put the", $4f
+	db "@"
+	text_from_ram $d073
+	db $0, " in", $55
+	db "the @"
+	text_from_ram $d099
+	db $0, ".", $58
+; 0x1c474b
+
+UnknownText_0x1c474b: ; 0x1c474b
+	db $0, "The @"
+	text_from_ram $d099
+	db $0, $4f
+	db "is full…", $58
+; 0x1c475f
+
+UnknownText_0x1c475f: ; 0x1c475f
+	db $0, "I see all.", $4f
+	db "I know all…", $51
+	db "Certainly, I know", $4f
+	db "of your #MON!", $57
+; 0x1c4797
+
+UnknownText_0x1c4797: ; 0x1c4797
+	db $0, "Whaaaat? I can't", $4f
+	db "tell a thing!", $51
+	db "How could I not", $4f
+	db "know of this?", $57
+; 0x1c47d4
+
+UnknownText_0x1c47d4: ; 0x1c47d4
+	db $0, "Hm… I see you met", $4f
+	db "@"
+	text_from_ram $d003
+	db $0, " here:", $55
+	db "@"
+	text_from_ram $d00e
+	db $0, "!", $58
+; 0x1c47fa
+
+UnknownText_0x1c47fa: ; 0x1c47fa
+	db $0, "The time was", $4f
+	db "@"
+	text_from_ram $d01f
+	db $0, "!", $51
+	db "Its level was @"
+	text_from_ram $d036
+	db $0, "!", $51
+	db "Am I good or what?", $58
+; 0x1c4837
+
+UnknownText_0x1c4837: ; 0x1c4837
+	db $0, "Hm… @"
+	text_from_ram $d003
+	db $0, $4f
+	db "came from @"
+	text_from_ram $d02a
+	db $0, $55
+	db "in a trade?", $51
+	db "@"
+	text_from_ram $d00e
+	db $0, $4f
+	db "was where @"
+	text_from_ram $d02a
+	db $0, $55
+	db "met @"
+	text_from_ram $d003
+	db $0, "!", $58
+; 0x1c487f
+
+UnknownText_0x1c487f: ; 0x1c487f
+	db $0, "What!? Incredible!", $51
+	db "I don't understand", $4f
+	db "how, but it is", $51
+	db "incredible!", $4f
+	db "You are special.", $51
+	db "I can't tell where", $4f
+	db "you met it, but it", $55
+	db "was at level @"
+	text_from_ram $d036
+	db $0, ".", $51
+	db "Am I good or what?", $58
+; 0x1c491d
+
+UnknownText_0x1c491d: ; 0x1c491d
+	db $0, "Hey!", $51
+	db "That's an EGG!", $51
+	db "You can't say that", $4f
+	db "you've met it yet…", $57
+; 0x1c4955
+
+UnknownText_0x1c4955: ; 0x1c4955
+	db $0, "Fufufu! I saw that", $4f
+	db "you'd do nothing!", $57
+; 0x1c497a
+
+UnknownText_0x1c497a: ; 0x1c497a
+	db $0, "Incidentally…", $51
+	db "It would be wise", $4f
+	db "to raise your", $51
+	db "#MON with a", $4f
+	db "little more care.", $57
+; 0x1c49c6
+
+UnknownText_0x1c49c6: ; 0x1c49c6
+	db $0, "Incidentally…", $51
+	db "It seems to have", $4f
+	db "grown a little.", $51
+	db "@"
+	text_from_ram $d003
+	db $0, " seems", $4f
+	db "to be becoming", $55
+	db "more confident.", $57
+; 0x1c4a21
+
+UnknownText_0x1c4a21: ; 0x1c4a21
+	db $0, "Incidentally…", $51
+	db "@"
+	text_from_ram $d003
+	db $0, " has", $4f
+	db "grown. It's gained", $55
+	db "much strength.", $57
+; 0x1c4a5b
+
+UnknownText_0x1c4a5b: ; 0x1c4a5b
+	db $0, "Incidentally…", $51
+	db "It certainly has", $4f
+	db "grown mighty!", $51
+	db "This @"
+	text_from_ram $d003
+	db $0, $4f
+	db "must have come", $51
+	db "through numerous", $4f
+	db "#MON battles.", $51
+	db "It looks brimming", $4f
+	db "with confidence.", $57
+; 0x1c4ae5
+
+UnknownText_0x1c4ae5: ; 0x1c4ae5
+	db $0, "Incidentally…", $51
+	db "I'm impressed by", $4f
+	db "your dedication.", $51
+	db "It's been a long", $4f
+	db "time since I've", $51
+	db "seen a #MON as", $4f
+	db "mighty as this", $55
+	db "@"
+	text_from_ram $d003
+	db $0, ".", $51
+	db "I'm sure that", $4f
+	db "seeing @"
+	text_from_ram $d003
+	db $0, $51
+	db "in battle would", $4f
+	db "excite anyone.", $57
+; 0x1c4b92
+
+UnknownText_0x1c4b92: ; 0x1c4b92
+	db $0, "Congratulations!", $4f
+	db "Your @"
+	text_from_ram $d086
+	db $50
+; 0x1c4bae
+
+UnknownText_0x1c4bae: ; 0x1c4bae
+	db $50
+; 0x1c4baf
+
+UnknownText_0x1c4baf: ; 0x1c4baf
+	db $0, $51
+	db "evolved into", $4f
+	db "@"
+	text_from_ram $d073
+	db $0, "!", $57
+; 0x1c4bc5
+
+UnknownText_0x1c4bc5: ; 0x1c4bc5
+	db $0, "Huh? @"
+	text_from_ram $d086
+	db $0, $4f
+	db "stopped evolving!", $58
+; 0x1c4be3
+
+UnknownText_0x1c4be3: ; 0x1c4be3
+	db $0, "What? @"
+	text_from_ram $d086
+	db $0, $4f
+	db "is evolving!", $57
+; 0x1c4bfd
+
+UnknownText_0x1c4bfd: ; 0x1c4bfd
+	db $0, "How many?", $57
+; 0x1c4c08
+
+UnknownText_0x1c4c08: ; 0x1c4c08
+	deciram $d10c, $12
+	db $0, " @"
+	text_from_ram $d086
+	db $0, "(S)", $4f
+	db "will be ¥@"
+	deciram $ffc3, $36
+	db $0, ".", $57
+; 0x1c4c28
+
+UnknownText_0x1c4c28: ; 0x1c4c28
+	db $0, "Hello, dear.", $51
+	db "I sell inexpensive", $4f
+	db "herbal medicine.", $51
+	db "They're good, but", $4f
+	db "a trifle bitter.", $51
+	db "Your #MON may", $4f
+	db "not like them.", $51
+	db "Hehehehe…", $57
+; 0x1c4ca3
+
+UnknownText_0x1c4ca3: ; 0x1c4ca3
+	db $0, "How many?", $57
+; 0x1c4cae
+
+UnknownText_0x1c4cae: ; 0x1c4cae
+	deciram $d10c, $12
+	db $0, " @"
+	text_from_ram $d086
+	db $0, "(S)", $4f
+	db "will be ¥@"
+	deciram $ffc3, $36
+	db $0, ".", $57
+; 0x1c4cce
+
+UnknownText_0x1c4cce: ; 0x1c4cce
+	db $0, "Thank you, dear.", $4f
+	db "Hehehehe…", $57
+; 0x1c4cea
+
+UnknownText_0x1c4cea: ; 0x1c4cea
+	db $0, "Oh? Your PACK is", $4f
+	db "full, dear.", $57
+; 0x1c4d08
+
+UnknownText_0x1c4d08: ; 0x1c4d08
+	db $0, "Hehehe… You don't", $4f
+	db "have the money.", $57
+; 0x1c4d2a
+
+UnknownText_0x1c4d2a: ; 0x1c4d2a
+	db $0, "Come again, dear.", $4f
+	db "Hehehehe…", $57
+; 0x1c4d47
+
+UnknownText_0x1c4d47: ; 0x1c4d47
+	db $0, "Hiya! Care to see", $4f
+	db "some bargains?", $51
+	db "I sell rare items", $4f
+	db "that nobody else", $51
+	db "carries--but only", $4f
+	db "one of each item.", $57
+; 0x1c4db0
+
+UnknownText_0x1c4db0: ; 0x1c4db0
+	text_from_ram $d086
+	db $0, " costs", $4f
+	db "¥@"
+	deciram $ffc3, $36
+	db $0, ". Want it?", $57
+; 0x1c4dcd
+
+UnknownText_0x1c4dcd: ; 0x1c4dcd
+	db $0, "Thanks.", $57
+; 0x1c4dd6
+
+UnknownText_0x1c4dd6: ; 0x1c4dd6
+	db $0, "Uh-oh, your PACK", $4f
+	db "is chock-full.", $57
+; 0x1c4df7
+
+UnknownText_0x1c4df7: ; 0x1c4df7
+	db $0, "You bought that", $4f
+	db "already. I'm all", $55
+	db "sold out of it.", $57
+; 0x1c4e28
+
+UnknownText_0x1c4e28: ; 0x1c4e28
+	db $0, "Uh-oh, you're", $4f
+	db "short on funds.", $57
+; 0x1c4e46
+
+UnknownText_0x1c4e46: ; 0x1c4e46
+	db $0, "Come by again", $4f
+	db "sometime.", $57
+; 0x1c4e5f
+
+UnknownText_0x1c4e5f: ; 0x1c4e5f
+	db $0, "What's up? Need", $4f
+	db "some medicine?", $57
+; 0x1c4e7e
+
+UnknownText_0x1c4e7e: ; 0x1c4e7e
+	db $0, "How many?", $57
+; 0x1c4e89
+
+UnknownText_0x1c4e89: ; 0x1c4e89
+	deciram $d10c, $12
+	db $0, " @"
+	text_from_ram $d086
+	db $0, "(S)", $4f
+	db "will cost ¥@"
+	deciram $ffc3, $36
+	db $0, ".", $57
+; 0x1c4eab
+
+UnknownText_0x1c4eab: ; 0x1c4eab
+	db $0, "Thanks much!", $57
+; 0x1c4eb9
+
+UnknownText_0x1c4eb9: ; 0x1c4eb9
+	db $0, "You don't have any", $4f
+	db "more space.", $57
+; 0x1c4ed8
+
+UnknownText_0x1c4ed8: ; 0x1c4ed8
+	db $0, "Huh? That's not", $4f
+	db "enough money.", $57
+; 0x1c4ef6
+
+UnknownText_0x1c4ef6: ; 0x1c4ef6
+	db $0, "All right.", $4f
+	db "See you around.", $57
+; 0x1c4f12
+
+UnknownText_0x1c4f12: ; 0x1c4f12
+	db $0, "You don't have", $4f
+	db "anything to sell.", $58
+; 0x1c4f33
+
+UnknownText_0x1c4f33: ; 0x1c4f33
+	db $0, "How many?", $57
+; 0x1c4f3e
+
+UnknownText_0x1c4f3e: ; 0x1c4f3e
+	db $0, "I can pay you", $4f
+	db "¥@"
+	deciram $ffc3, $36
+	db $0, ".", $51
+	db "Is that OK?", $57
+; 0x1c4f62
+
+UnknownText_0x1c4f62: ; 0x1c4f62
+	db $0, "Welcome! How may I", $4f
+	db "help you?", $57
+; 0x1c4f80
+
+UnknownText_0x1c4f80: ; 0x1c4f80
+	db $0, "Here you are.", $4f
+	db "Thank you!", $57
+; 0x1c4f9a
+
+UnknownText_0x1c4f9a: ; 0x1c4f9a
+	db $0, "You don't have", $4f
+	db "enough money.", $57
+; 0x1c4fb7
+
+UnknownText_0x1c4fb7: ; 0x1c4fb7
+	db $0, "You can't carry", $4f
+	db "any more items.", $57
+; 0x1c4fd7
+
+UnknownText_0x1c4fd7: ; 0x1c4fd7
+	db $0, "Sorry, I can't buy", $4f
+	db "that from you.", $58
+; 0x1c4ff9
+
+UnknownText_0x1c4ff9: ; 0x1c4ff9
+	db $0, "Please come again!", $57
+; 0x1c500d
+
+UnknownText_0x1c500d: ; 0x1c500d
+	db $0, "Can I do anything", $4f
+	db "else for you?", $57
+; 0x1c502e
+
+UnknownText_0x1c502e: ; 0x1c502e
+	db $0, "Got ¥@"
+	deciram $ffc3, $36
+	db $0, " for", $4f
+	db "@"
+	text_from_ram $d086
+	db $0, "(S).", $57
+; 0x1c5049
+
+UnknownText_0x1c5049: ; 0x1c5049
+	db $0, "Bet how many", $4f
+	db "coins?", $57
+; 0x1c505e
+
+UnknownText_0x1c505e: ; 0x1c505e
+	db $0, "Start!", $57
+; 0x1c5066
+
+UnknownText_0x1c5066: ; 0x1c5066
+	db $0, "Not enough", $4f
+	db "coins.", $58
+; 0x1c5079
+
+UnknownText_0x1c5079: ; 0x1c5079
+	db $0, "Darn… Ran out of", $4f
+	db "coins…", $57
+; 0x1c5092
+
+UnknownText_0x1c5092: ; 0x1c5092
+	db $0, "Play again?", $57
+; 0x1c509f
+
+UnknownText_0x1c509f: ; 0x1c509f
+	db $0, "lined up!", $4f
+	db "Won @"
+	text_from_ram $d086
+	db $0, " coins!", $57
+; 0x1c50bb
+
+UnknownText_0x1c50bb: ; 0x1c50bb
+	db $0, "Darn!", $57
+; 0x1c50c2
+
+_MobileStadiumEntryText: ; 0x1c50c2
+	db $0, "Data for use in", $4f
+	db "the MOBILE STADIUM", $51
+	db "of the N64 #MON", $4f
+	db "STADIUM 2 can be", $55
+	db "read here.", $51
+	db "Read the data?", $57
+; 0x1c5121
+
+_MobileStadiumSuccessText: ; 0x1c5121
+	db $0, "Data transfer is", $4f
+	db "complete.", $51
+	db "We hope you enjoy", $4f
+	db "MOBILE STADIUM", $51
+	db "battles in the N64", $4f
+	db "#MON STADIUM 2.", $51
+	db $57
+; 0x1c5182
+
+UnknownText_0x1c5182: ; 0x1c5182
+	db $0, "Clock time unknown", $57
+; 0x1c5196
+
+UnknownText_0x1c5196: ; 0x1c5196
+	db $0, "Delete the saved", $4f
+	db "LOG-IN PASSWORD?", $57
+; 0x1c51b9
+
+UnknownText_0x1c51b9: ; 0x1c51b9
+	db $0, "Deleted the LOG-IN", $4f
+	db "PASSWORD.", $57
+; 0x1c51d7
+
+UnknownText_0x1c51d7: ; 0x1c51d7
+	db $0, "Pick three #MON", $4f
+	db "for battle.", $58
+; 0x1c51f4
+
+UnknownText_0x1c51f4: ; 0x1c51f4
+	text_from_ram $d006
+	db $0, ",", $4f
+	db "@"
+	text_from_ram $d00c
+	db $0, " and", $55
+	db "@"
+	text_from_ram $d012
+	db $0, ".", $51
+	db "Use these three?", $57
+; 0x1c521c
+
+UnknownText_0x1c521c: ; 0x1c521c
+	db $0, "Only three #MON", $4f
+	db "may enter.", $58
+; 0x1c5238
+
+UnknownText_0x1c5238: ; 0x1c5238
+	db $0, "The CARD FOLDER", $4f
+	db "stores your and", $51
+	db "your friends'", $4f
+	db "CARDS.", $51
+	db "A CARD contains", $4f
+	db "information like", $51
+	db "the person's name,", $4f
+	db "phone number and", $55
+	db "profile.", $51
+	db $57
+; 0x1c52bc
+
+UnknownText_0x1c52bc: ; 0x1c52bc
+	db $0, "This is your CARD.", $51
+	db "Once you've", $4f
+	db "entered your phone", $51
+	db "number, you can", $4f
+	db "trade CARDS with", $55
+	db "your friends.", $51
+	db $57
+; 0x1c531e
+
+UnknownText_0x1c531e: ; 0x1c531e
+	db $0, "If you have your", $4f
+	db "friend's CARD, you", $51
+	db "can use it to make", $4f
+	db "a call from a", $51
+	db "mobile phone on", $4f
+	db "the 2nd floor of a", $55
+	db "#MON CENTER.", $51
+	db $57
+; 0x1c5394
+
+UnknownText_0x1c5394: ; 0x1c5394
+	db $0, "To safely store", $4f
+	db "your collection of", $51
+	db "CARDS, you must", $4f
+	db "set a PASSCODE for", $55
+	db "your CARD FOLDER.", $51
+	db $57
+; 0x1c53ee
+
+UnknownText_0x1c53ee: ; 0x1c53ee
+	db $0, "If the CARD FOLDER", $4f
+	db "is deleted, all", $51
+	db "its CARDS and the", $4f
+	db "PASSCODE will also", $55
+	db "be deleted.", $51
+	db "Beware--a deleted", $4f
+	db "CARD FOLDER can't", $55
+	db "be restored.", $51
+	db "Want to delete", $4f
+	db "your CARD FOLDER?", $57
+; 0x1c5494
+
+UnknownText_0x1c5494: ; 0x1c5494
+	db $0, "Are you sure you", $4f
+	db "want to delete it?", $57
+; 0x1c54b9
+
+UnknownText_0x1c54b9: ; 0x1c54b9
+	db $0, "The CARD FOLDER", $4f
+	db "has been deleted.", $51
+	db $57
+; 0x1c54dd
+
+UnknownText_0x1c54dd: ; 0x1c54dd
+	db $0, "There is an older", $4f
+	db "CARD FOLDER from a", $55
+	db "previous journey.", $51
+	db "Do you want to", $4f
+	db "open it?", $57
+; 0x1c552d
+
+UnknownText_0x1c552d: ; 0x1c552d
+	db $0, "Delete the old", $4f
+	db "CARD FOLDER?", $57
+; 0x1c554a
+
+UnknownText_0x1c554a: ; 0x1c554a
+	db $0, "Finish registering", $4f
+	db "CARDS?", $57
+; 0x1c5565
+
+UnknownText_0x1c5565: ; 0x1c5565
+	db $0, "Huh? Sorry, wrong", $4f
+	db "number!", $57
+; 0x1c5580
+
+UnknownText_0x1c5580: ; 0x1c5580
+	db $0, "Click!", $57
+; 0x1c5588
+
+UnknownText_0x1c5588: ; 0x1c5588
+	db $0, $56, $57
+; 0x1c558b
+
+UnknownText_0x1c558b: ; 0x1c558b
+	db $0, "That number is out", $4f
+	db "of the area.", $57
+; 0x1c55ac
+
+UnknownText_0x1c55ac: ; 0x1c55ac
+	db $0, "Just go talk to", $4f
+	db "that person!", $57
+; 0x1c55ca
+
+UnknownText_0x1c55ca: ; 0x1c55ca
+	db $0, "Thank you!", $57
+; 0x1c55d6
+
+UnknownText_0x1c55d6: ; 0x1c55d6
+	db $0, "  :", $57
+; 0x1c55db
+
+UnknownText_0x1c55db: ; 0x1c55db
+	db $0, "Password OK.", $4f
+	db "Select CONTINUE &", $55
+	db "reset settings.", $58
+; 0x1c560b
+
+UnknownText_0x1c560b: ; 0x1c560b
+	db $0, "Wrong password!", $58
+; 0x1c561c
+
+UnknownText_0x1c561c: ; 0x1c561c
+	db $0, "Reset the clock?", $57
+; 0x1c562e
+
+UnknownText_0x1c562e: ; 0x1c562e
+	db $0, "Please enter the", $4f
+	db "password.", $57
+; 0x1c564a
+
+UnknownText_0x1c564a: ; 0x1c564a
+	db $0, "Clear all save", $4f
+	db "data?", $57
+; 0x1c5660
+
+UnknownText_0x1c5660: ; 0x1c5660
+	text_from_ram $d050
+	db $0, " learned", $4f
+	db "@"
+	text_from_ram $d086
+	db $0, "!@"
+	sound0
+	text_waitbutton
+	db $50
+; 0x1c5677
+
+UnknownText_0x1c5677: ; 0x1c5677
+	db $50
+; 0x1c5678
+
+UnknownText_0x1c5678: ; 0x1c5678
+	db $0, "Which move should", $4e, "be forgotten?", $57
+; 0x1c5699
+
+UnknownText_0x1c5699: ; 0x1c5699
+	db $0, "Stop learning", $4f
+	db "@"
+	text_from_ram $d086
+	db $0, "?", $57
+; 0x1c56af
+
+UnknownText_0x1c56af: ; 0x1c56af
+	text_from_ram $d050
+	db $0, $4f
+	db "did not learn", $55
+	db "@"
+	text_from_ram $d086
+	db $0, ".", $58
+; 0x1c56c9
+
+UnknownText_0x1c56c9: ; 0x1c56c9
+	text_from_ram $d050
+	db $0, " is", $4f
+	db "trying to learn", $55
+	db "@"
+	text_from_ram $d086
+	db $0, ".", $51
+	db "But @"
+	text_from_ram $d050
+	db $0, $4f
+	db "can't learn more", $55
+	db "than four moves.", $51
+	db "Delete an older", $4f
+	db "move to make room", $55
+	db "for @"
+	text_from_ram $d086
+	db $0, "?", $57
+; 0x1c5740
+
+UnknownText_0x1c5740: ; 0x1c5740
+	db $0, "1, 2 and…@"
+	interpret_data
+	db $50
+; 0x1c574d
+
+UnknownText_0x1c574d: ; 0x1c574d
+	db $50
+; 0x1c574e
+
+UnknownText_0x1c574e: ; 0x1c574e
+	db $0, " Poof!@"
+	interpret_data
+	db $0, $51
+	db "@"
+	text_from_ram $d050
+	db $0, " forgot", $4f
+	db "@"
+	text_from_ram $d073
+	db $0, ".", $51
+	db "And…", $58
+; 0x1c5772
+
+UnknownText_0x1c5772: ; 0x1c5772
+	db $0, "HM moves can't be", $4f
+	db "forgotten now.", $58
+; 0x1c5793
+
+UnknownText_0x1c5793: ; 0x1c5793
+	db $0, "Play with three", $4f
+	db "coins?", $57
+; 0x1c57ab
+
+UnknownText_0x1c57ab: ; 0x1c57ab
+	db $0, "Not enough coins…", $58
+; 0x1c57be
+
+UnknownText_0x1c57be: ; 0x1c57be
+	db $0, "Choose a card.", $57
+; 0x1c57ce
+
+UnknownText_0x1c57ce: ; 0x1c57ce
+	db $0, "Place your bet.", $57
+; 0x1c57df
+
+UnknownText_0x1c57df: ; 0x1c57df
+	db $0, "Want to play", $4f
+	db "again?", $57
+; 0x1c57f4
+
+UnknownText_0x1c57f4: ; 0x1c57f4
+	db $0, "The cards have", $4f
+	db "been shuffled.", $58
+; 0x1c5813
+
+UnknownText_0x1c5813: ; 0x1c5813
+	db $0, "Yeah!", $57
+; 0x1c581a
+
+UnknownText_0x1c581a: ; 0x1c581a
+	db $0, "Darn…", $57
+; 0x1c5821
+
+UnknownText_0x1c5821: ; 0x1c5821
+	current_day
+	db $50
+; 0x1c5823
+
+UnknownText_0x1c5823: ; 0x1c5823
+	db $50
+; 0x1c5824
+
+UnknownText_0x1c5824: ; 0x1c5824
+	db $0, $56, $57
+; 0x1c5827
+
+UnknownText_0x1c5827: ; 0x1c5827
+	db $0, "You're out of the", $4f
+	db "service area.", $58
+; 0x1c5847
+
+UnknownText_0x1c5847: ; 0x1c5847
+	db $0, "Whom do you want", $4f
+	db "to call?", $57
+; 0x1c5862
+
+UnknownText_0x1c5862: ; 0x1c5862
+	db $0, "Press any button", $4f
+	db "to exit.", $57
+; 0x1c587d
+
+UnknownText_0x1c587d: ; 0x1c587d
+	db $0, "Delete this stored", $4f
+	db "phone number?", $57
+; 0x1c589f
+
+UnknownText_0x1c589f: ; 0x1c589f
+	db $0, "Which prize would", $4f
+	db "you like?", $57
+; 0x1c58bc
+
+UnknownText_0x1c58bc: ; 0x1c58bc
+	text_from_ram $d073
+	db $0, "?", $4f
+	db "Is that right?", $57
+; 0x1c58d1
+
+UnknownText_0x1c58d1: ; 0x1c58d1
+	db $0, "Here you go!", $51
+	db $57
+; 0x1c58e0
+
+UnknownText_0x1c58e0: ; 0x1c58e0
+	db $0, "You don't have", $4f
+	db "enough points.", $51
+	db $57
+; 0x1c58ff
+
+UnknownText_0x1c58ff: ; 0x1c58ff
+	db $0, "You have no room", $4f
+	db "for it.", $51
+	db $57
+; 0x1c591a
+
+UnknownText_0x1c591a: ; 0x1c591a
+	db $0, "Oh. Please come", $4f
+	db "back again!", $57
+; 0x1c5937
+
+UnknownText_0x1c5937: ; 0x1c5937
+	db $0, "Excuse me!", $51
+	db $57
+; 0x1c5944
+
+UnknownText_0x1c5944: ; 0x1c5944
+	db $0, "Excuse me.", $4f
+	db "You're not ready.", $51
+	db $57
+; 0x1c5962
+
+UnknownText_0x1c5962: ; 0x1c5962
+	db $0, "Please return when", $4f
+	db "you're ready.", $57
+; 0x1c5983
+
+UnknownText_0x1c5983: ; 0x1c5983
+	db $0, "You need at least", $4f
+	db "three #MON.", $51
+	db $57
+; 0x1c59a3
+
+UnknownText_0x1c59a3: ; 0x1c59a3
+	db $0, "Sorry, an EGG", $4f
+	db "doesn't qualify.", $51
+	db $57
+; 0x1c59c3
+
+UnknownText_0x1c59c3: ; 0x1c59c3
+	db $0, "Only three #MON", $4f
+	db "may be entered.", $51
+	db $57
+; 0x1c59e5
+
+UnknownText_0x1c59e5: ; 0x1c59e5
+	db $0, "The @"
+	text_from_ram $d086
+	db $0, " #MON", $4f
+	db "must all be", $55
+	db "different kinds.", $51
+	db $57
+; 0x1c5a13
+
+UnknownText_0x1c5a13: ; 0x1c5a13
+	db $0, "The @"
+	text_from_ram $d086
+	db $0, " #MON", $4f
+	db "must not hold the", $55
+	db "same items.", $51
+	db $57
+; 0x1c5a42
+
+UnknownText_0x1c5a42: ; 0x1c5a42
+	db $0, "You can't take an", $4f
+	db "EGG!", $51
+	db $57
+; 0x1c5a5a
+
+UnknownText_0x1c5a5a: ; 0x1c5a5a
+	db $0, "It dodged the", $4f
+	db "thrown BALL!", $51
+	db "This #MON", $4f
+	db "can't be caught!", $58
+; 0x1c5a90
+
+UnknownText_0x1c5a90: ; 0x1c5a90
+	db $0, "You missed the", $4f
+	db "#MON!", $58
+; 0x1c5aa6
+
+UnknownText_0x1c5aa6: ; 0x1c5aa6
+	db $0, "Oh no! The #MON", $4f
+	db "broke free!", $58
+; 0x1c5ac3
+
+UnknownText_0x1c5ac3: ; 0x1c5ac3
+	db $0, "Aww! It appeared", $4f
+	db "to be caught!", $58
+; 0x1c5ae3
+
+UnknownText_0x1c5ae3: ; 0x1c5ae3
+	db $0, "Aargh!", $4f
+	db "Almost had it!", $58
+; 0x1c5afa
+
+UnknownText_0x1c5afa: ; 0x1c5afa
+	db $0, "Shoot! It was so", $4f
+	db "close too!", $58
+; 0x1c5b17
+
+UnknownText_0x1c5b17: ; 0x1c5b17
+	db $0, "Gotcha! @"
+	text_from_ram $c616
+	db $0, $4f
+	db "was caught!@"
+	sound0x02
+	db $50
+; 0x1c5b34
+
+UnknownText_0x1c5b34: ; 0x1c5b34
+	db $50
+; 0x1c5b35
+
+UnknownText_0x1c5b35: ; 0x1c5b35
+	text_waitbutton
+	db $50
+; 0x1c5b37
+
+UnknownText_0x1c5b37: ; 0x1c5b37
+	db $50
+; 0x1c5b38
+
+UnknownText_0x1c5b38: ; 0x1c5b38
+	text_from_ram $d050
+	db $0, " was", $4f
+	db "sent to BILL's PC.", $58
+; 0x1c5b53
+
+UnknownText_0x1c5b53: ; 0x1c5b53
+	text_from_ram $c616
+	db $0, "'s data", $4f
+	db "was newly added to", $55
+	db "the #DEX.@"
+	sound0x2C
+	text_waitbutton
+	db $50
+; 0x1c5b7e
+
+UnknownText_0x1c5b7e: ; 0x1c5b7e
+	db $50
+; 0x1c5b7f
+
+UnknownText_0x1c5b7f: ; 0x1c5b7f
+	db $0, "Give a nickname to", $4f
+	db "@"
+	text_from_ram $d073
+	db $0, "?", $57
+; 0x1c5b9a
+
+UnknownText_0x1c5b9a: ; 0x1c5b9a
+	text_from_ram $d073
+	db $0, "'s", $4f
+	db "@"
+	text_from_ram $d086
+	db $0, " rose.", $58
+; 0x1c5bac
+
+UnknownText_0x1c5bac: ; 0x1c5bac
+	db $0, "That can't be used", $4f
+	db "on this #MON.", $58
+; 0x1c5bcd
+
+UnknownText_0x1c5bcd: ; 0x1c5bcd
+	db $0, "The REPEL used", $4f
+	db "earlier is still", $55
+	db "in effect.", $58
+; 0x1c5bf9
+
+UnknownText_0x1c5bf9: ; 0x1c5bf9
+	db $0, "Played the #", $4f
+	db "FLUTE.", $51
+	db "Now, that's a", $4f
+	db "catchy tune!", $58
+; 0x1c5c28
+
+UnknownText_0x1c5c28: ; 0x1c5c28
+	db $0, "All sleeping", $4f
+	db "#MON woke up.", $58
+; 0x1c5c44
+
+UnknownText_0x1c5c44: ; 0x1c5c44
+	db $0, $52, " played the", $4f
+	db "# FLUTE.@"
+	text_waitbutton
+	db $50
+; 0x1c5c5d
+
+UnknownText_0x1c5c5d: ; 0x1c5c5d
+	db $50
+; 0x1c5c5e
+
+UnknownText_0x1c5c5e: ; 0x1c5c5e
+	db $0, "You now have", $4f
+	db "@"
+	deciram $dc4b, $12
+	db $0, " points.", $57
+; 0x1c5c7b
+
+UnknownText_0x1c5c7b: ; 0x1c5c7b
+	db $0, "Coins:", $4f
+	db "@"
+	deciram $d855, $24
+	db $50
+; 0x1c5c89
+
+UnknownText_0x1c5c89: ; 0x1c5c89
+	db $50
+; 0x1c5c8a
+
+UnknownText_0x1c5c8a: ; 0x1c5c8a
+	db $0, "Raise the PP of", $4f
+	db "which move?", $57
+; 0x1c5ca7
+
+UnknownText_0x1c5ca7: ; 0x1c5ca7
+	db $0, "Restore the PP of", $4f
+	db "which move?", $57
+; 0x1c5cc6
+
+UnknownText_0x1c5cc6: ; 0x1c5cc6
+	text_from_ram $d086
+	db $0, "'s PP", $4f
+	db "is maxed out.", $58
+; 0x1c5cdd
+
+UnknownText_0x1c5cdd: ; 0x1c5cdd
+	text_from_ram $d086
+	db $0, "'s PP", $4f
+	db "increased.", $58
+; 0x1c5cf1
+
+UnknownText_0x1c5cf1: ; 0x1c5cf1
+	db $0, "PP was restored.", $58
+; 0x1c5d03
+
+UnknownText_0x1c5d03: ; 0x1c5d03
+	db $0, "There was a trophy", $4f
+	db "inside!@"
+	sound0
+	db $0, $51
+	db "@"
+	text_from_ram PlayerName
+	db $0, " sent the", $4f
+	db "trophy home.", $58
+; 0x1c5d3e
+
+UnknownText_0x1c5d3e: ; 0x1c5d3e
+	db $0, "It looks bitter…", $58
+; 0x1c5d50
+
+UnknownText_0x1c5d50: ; 0x1c5d50
+	db $0, "That can't be used", $4f
+	db "on an EGG.", $58
+; 0x1c5d6e
+
+UnknownText_0x1c5d6e: ; 0x1c5d6e
+	db $0, "OAK: ", $52, "!", $4f
+	db "This isn't the", $55
+	db "time to use that!", $58
+; 0x1c5d97
+
+UnknownText_0x1c5d97: ; 0x1c5d97
+	db $0, "That belongs to", $4f
+	db "someone else!", $58
+; 0x1c5db6
+
+UnknownText_0x1c5db6: ; 0x1c5db6
+	db $0, "It won't have any", $4f
+	db "effect.", $58
+; 0x1c5dd0
+
+UnknownText_0x1c5dd0: ; 0x1c5dd0
+	db $0, "The trainer", $4f
+	db "blocked the BALL!", $58
+; 0x1c5def
+
+UnknownText_0x1c5def: ; 0x1c5def
+	db $0, "Don't be a thief!", $58
+; 0x1c5e01
+
+UnknownText_0x1c5e01: ; 0x1c5e01
+	db $0, "Cycling isn't", $4f
+	db "allowed here.", $58
+; 0x1c5e1d
+
+UnknownText_0x1c5e1d: ; 0x1c5e1d
+	db $0, "Can't get on your", $4f
+	db "@"
+	text_from_ram $d073
+	db $0, " now.", $58
+; 0x1c5e3a
+
+UnknownText_0x1c5e3a: ; 0x1c5e3a
+	db $0, "The #MON BOX", $4f
+	db "is full. That", $55
+	db "can't be used now.", $58
+; 0x1c5e68
+
+UnknownText_0x1c5e68: ; 0x1c5e68
+	db $0, $52, " used the@"
+	text_dunno1
+	text_from_ram $d086
+	db $0, ".", $57
+; 0x1c5e7b
+
+UnknownText_0x1c5e7b: ; 0x1c5e7b
+	db $0, $52, " got on the@"
+	text_dunno1
+	text_from_ram $d086
+	db $0, ".", $58
+; 0x1c5e90
+
+UnknownText_0x1c5e90: ; 0x1c5e90
+	db $0, $52, " got off@"
+	text_dunno1
+	db $0, "the @"
+	text_from_ram $d086
+	db $0, ".", $58
+; 0x1c5ea8
+
+UnknownText_0x1c5ea8: ; 0x1c5ea8
+	text_from_ram $d073
+	db $0, " knows", $4f
+	db "@"
+	text_from_ram $d086
+	db $0, ".", $58
+; 0x1c5eba
+
+UnknownText_0x1c5eba: ; 0x1c5eba
+	db $0, "That #MON knows", $4f
+	db "only one move.", $57
+; 0x1c5eda
+
+UnknownText_0x1c5eda: ; 0x1c5eda
+	db $0, "Oh, make it forget", $4f
+	db "@"
+	text_from_ram $d073
+	db $0, "?", $57
+; 0x1c5ef5
+
+UnknownText_0x1c5ef5: ; 0x1c5ef5
+	db $0, "Done! Your #MON", $4f
+	db "forgot the move.", $57
+; 0x1c5f17
+
+UnknownText_0x1c5f17: ; 0x1c5f17
+	db $0, "An EGG doesn't", $4f
+	db "know any moves!", $57
+; 0x1c5f36
+
+UnknownText_0x1c5f36: ; 0x1c5f36
+	db $0, "No? Come visit me", $4f
+	db "again.", $57
+; 0x1c5f50
+
+UnknownText_0x1c5f50: ; 0x1c5f50
+	db $0, "Which move should", $4f
+	db "it forget, then?", $58
+; 0x1c5f74
+
+UnknownText_0x1c5f74: ; 0x1c5f74
+	db $0, "Um… Oh, yes, I'm", $4f
+	db "the MOVE DELETER.", $51
+	db "I can make #MON", $4f
+	db "forget moves.", $51
+	db "Shall I make a", $4f
+	db "#MON forget?", $57
+; 0x1c5fd1
+
+UnknownText_0x1c5fd1: ; 0x1c5fd1
+	db $0, "Which #MON?", $58
+; 0x1c5fde
+
+UnknownText_0x1c5fde: ; 0x1c5fde
+	db $0, " DST,", $4f
+	db "is that OK?", $57
+; 0x1c5ff1
+
+UnknownText_0x1c5ff1: ; 0x1c5ff1
+	db $0, ",", $4f
+	db "is that OK?", $57
+; 0x1c6000
+
+UnknownText_0x1c6000: ; 0x1c6000
+	db $0, "Do you want to", $4f
+	db "switch to Daylight", $55
+	db "Saving Time?", $57
+; 0x1c6030
+
+UnknownText_0x1c6030: ; 0x1c6030
+	db $0, "I set the clock", $4f
+	db "forward by one", $55
+	db "hour.", $58
+; 0x1c6056
+
+UnknownText_0x1c6056: ; 0x1c6056
+	db $0, "Is Daylight Saving", $4f
+	db "Time over?", $57
+; 0x1c6075
+
+UnknownText_0x1c6075: ; 0x1c6075
+	db $0, "I put the clock", $4f
+	db "back one hour.", $58
+; 0x1c6095
+
+UnknownText_0x1c6095: ; 0x1c6095
+	db $0, "Do you want to", $4f
+	db "adjust your clock", $51
+	db "for Daylight", $4f
+	db "Saving Time?", $57
+; 0x1c60d1
+
+UnknownText_0x1c60d1: ; 0x1c60d1
+	db $0, "I lost the in-", $4f
+	db "struction booklet", $55
+	db "for the #GEAR.", $51
+	db "Come back again in", $4f
+	db "a while.", $58
+; 0x1c611e
+
--- /dev/null
+++ b/text/phone/extra.asm
@@ -1,0 +1,1448 @@
+
+UnknownText_0x64000: ; 0x64000
+	db $0, "I hate having to", $4f
+	db "hang up on you!", $51
+	db "Call you later!", $57
+; 0x64032
+
+UnknownText_0x64032: ; 0x64032
+	db $0, $14, ", have you", $4f
+	db "heard?", $51
+	db "GOLDENROD's RADIO", $4f
+	db "TOWER has been", $51
+	db "taken over by TEAM", $4f
+	db "ROCKET!", $51
+	db "…Um… What's TEAM", $4f
+	db "ROCKET?", $57
+; 0x64099
+
+UnknownText_0x64099: ; 0x64099
+	db $0, $14, ", I heard!", $51
+	db "You defeated that", $4f
+	db "WHITNEY?", $51
+	db "It makes me proud", $4f
+	db "to be your friend!", $57
+; 0x640e6
+
+UnknownText_0x640e6: ; 0x640e6
+	db $0, "Hey, I heard about", $4f
+	db "you!", $51
+	db "You saved that", $4f
+	db "#MON at the", $51
+	db "LIGHTHOUSE, didn't", $4f
+	db "you?", $51
+	db $14, ", I wish", $4f
+	db "you'd come see me", $51
+	db "when I'm sick in", $4f
+	db "bed with a cold!", $57
+; 0x6416d
+
+UnknownText_0x6416d: ; 0x6416d
+	db $0, "I heard, I heard,", $4f
+	db "I heard!", $51
+	db "You smashed TEAM", $4f
+	db "ROCKET's hideout!", $51
+	db "You're like a", $4f
+	db "movie hero, even!", $51
+	db "But um… What was", $4f
+	db "TEAM ROCKET?", $57
+; 0x641e8
+
+UnknownText_0x641e8: ; 0x641e8
+	db $0, "I heard, I heard,", $4f
+	db "I heard!", $51
+	db "About your heroic", $4f
+	db "liberation of the", $51
+	db "RADIO TOWER! You", $4f
+	db "rock so hard!", $57
+; 0x64247
+
+UnknownText_0x64247: ; 0x64247
+	db $0, "I saw, I saw!", $51
+	db "I saw you go into", $4f
+	db "the DRAGON'S DEN!", $51
+	db "I'm certain you", $4f
+	db "passed! Aww, no", $51
+	db "need to be modest!", $4f
+	db "You can't fail!", $57
+; 0x642bb
+
+UnknownText_0x642bb: ; 0x642bb
+	db $0, "Yesterday, I went", $4f
+	db "out to NEW BARK", $51
+	db "TOWN.  There was a", $4f
+	db "lady who looked a", $51
+	db "lot like you,", $4f
+	db $14, ".", $51
+	db "What? That lady", $4f
+	db "was your mom?", $51
+	db "Aww, I should've", $4f
+	db "introduced myself!", $51
+	db "I bet your mom's", $4f
+	db "really proud of", $51
+	db "all that you've", $4f
+	db "accomplished.", $51
+	db "Heh, put it this", $4f
+	db "way. I'd be proud", $51
+	db "if I were your", $4f
+	db "mom, believe me!", $57
+; 0x643d4
+
+UnknownText_0x643d4: ; 0x643d4
+	db $0, "I saw, I saw,", $4f
+	db "I saw!", $51
+	db "You striding onto", $4f
+	db "a ship, ", $14, "!", $51
+	db "I can't get over", $4f
+	db "how good you look", $51
+	db "with the sea as", $4f
+	db "your backdrop!", $57
+; 0x64448
+
+UnknownText_0x64448: ; 0x64448
+	db $0, "I heard, I heard!", $51
+	db "You got a MAGNET", $4f
+	db "TRAIN PASS!", $51
+	db "When I saw you", $4f
+	db "departing on the", $51
+	db "ship, I felt sad", $4f
+	db "that I wouldn't be", $51
+	db "able to see you", $4f
+	db "for a while.", $51
+	db "But since you have", $4f
+	db "that PASS, you can", $51
+	db "zip back anytime!", $4f
+	db "That's reassuring!", $51
+	db "What? You can FLY", $4f
+	db "back anytime?", $51
+	db "What do you mean", $4f
+	db "by FLY?", $57
+; 0x6455b
+
+UnknownText_0x6455b: ; 0x6455b
+	db $0, "I saw, I saw!", $51
+	db "You waking up", $4f
+	db "SNORLAX!", $51
+	db "I was watching you", $4f
+	db "from afar, so I", $51
+	db "couldn't tell what", $4f
+	db "you did exactly.", $51
+	db "Did you play a", $4f
+	db "flute to wake it?", $51
+	db "Wow! That's like", $4f
+	db "magic!", $57
+; 0x645ff
+
+UnknownText_0x645ff: ; 0x645ff
+	db $0, "I hear rumors", $4f
+	db "about you all over", $55
+	db "the place.", $51
+	db "It just makes me", $4f
+	db "sigh, ", $14, ".", $51
+	db "How did you get so", $4f
+	db "strong?", $51
+	db "Go for the world", $4f
+	db "championship now!", $51
+	db "I'll always be", $4f
+	db "cheering you on!", $57
+; 0x646a3
+
+UnknownText_0x646a3: ; 0x646a3
+	db $0, "Hehe, I called", $4f
+	db "right away!", $51
+	db "I think we can be", $4f
+	db "good friends!", $57
+; 0x646df
+
+UnknownText_0x646df: ; 0x646df
+	db $0, "I saw, I heard!", $51
+	db "You beat MORTY of", $4f
+	db "ECRUTEAK GYM!", $51
+	db "Th-that's just", $4f
+	db "incredible!", $51
+	db "I actually went to", $4f
+	db "the GYM's entrance", $51
+	db "to cheer you on.", $4f
+	db "Did you know that?", $51
+	db "But everyone was", $4f
+	db "floating, and", $51
+	db "there were ghosts", $4f
+	db "all over! So I", $51
+	db "chickened out and", $4f
+	db "took off for home…", $57
+; 0x647d8
+
+UnknownText_0x647d8: ; 0x647d8
+	db $0, $14, ", I heard!", $51
+	db "You're kicking up", $4f
+	db "a mighty ruckus", $51
+	db "over in KANTO!", $4f
+	db "What a glorious", $51
+	db "rampage it must", $4f
+	db "be!", $51
+	db "You so rock!", $57
+; 0x64846
+
+UnknownText_0x64846: ; 0x64846
+	db $0, "Hearing about your", $4f
+	db "escapades rocks my", $51
+	db "soul!", $4f
+	db "It sure does!", $57
+; 0x64881
+
+UnknownText_0x64881: ; 0x64881
+	db $0, "I'm so glad you", $4f
+	db "called!", $51
+	db "I was just about", $4f
+	db "to call you too!", $51
+	db "I guess we must be", $4f
+	db "a good match!", $57
+; 0x648dc
+
+UnknownText_0x648dc: ; 0x648dc
+	db $0, "How are you?", $51
+	db "What are you", $4f
+	db "doing?", $51
+	db "Where are you?", $51
+	db "How many BADGES do", $4f
+	db "you have now?", $51
+	db "How much money", $4f
+	db "have you saved?", $51
+	db "How's your mom?", $51
+	db "Have you got lots", $4f
+	db "of #MON?", $51
+	db "Is it going to be", $4f
+	db "sunny tomorrow?", $51
+	db "Arrgh, there's so", $4f
+	db "much I want to", $51
+	db "chat about! This", $4f
+	db "is going nowhere!", $57
+; 0x649dc
+
+UnknownText_0x649dc: ; 0x649dc
+	db $0, "I'm always with my", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, "!", $51
+	db "It's so cute!", $4f
+	db "I just love it!", $57
+; 0x64a13
+
+UnknownText_0x64a13: ; 0x64a13
+	db $0, "Changing the topic", $4f
+	db "here, I saw this", $51
+	db "@"
+	text_from_ram $d0ac
+	db $0, " for the", $4f
+	db "first time.", $51
+	db "It was easy to", $4f
+	db "beat, actually.", $57
+; 0x64a71
+
+UnknownText_0x64a71: ; 0x64a71
+	db $0, "I was wondering,", $4f
+	db "do you happen to", $55
+	db "have @"
+	text_from_ram $d0ac
+	db $0, "?", $51
+	db "I can't seem to", $4f
+	db "catch one. What is", $51
+	db "its weakness, I", $4f
+	db "wonder.", $57
+; 0x64ada
+
+UnknownText_0x64ada: ; 0x64ada
+	db $0, "Hey, let's battle", $4f
+	db "our #MON!", $51
+	db "I won't lose to", $4f
+	db "you battling or in", $51
+	db "the Bug-Catching", $4f
+	db "Contest!", $51
+	db "I'll be here on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, "!", $57
+; 0x64b48
+
+UnknownText_0x64b48: ; 0x64b48
+	db $0, "Let's talk again,", $4f
+	db "huh?", $57
+; 0x64b5f
+
+UnknownText_0x64b5f: ; 0x64b5f
+	db $0, "Boy, am I glad I", $4f
+	db "caught you!", $51
+	db "A whole bunch of", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, " have", $51
+	db "appeared around", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, "!", $51
+	db "You have to see", $4f
+	db "this!", $57
+; 0x64bc6
+
+UnknownText_0x64bc6: ; 0x64bc6
+	db $0, "I haven't had any", $4f
+	db "luck seeing rare", $55
+	db "#MON lately…", $51
+	db "But I know they're", $4f
+	db "out there!", $57
+; 0x64c13
+
+UnknownText_0x64c13: ; 0x64c13
+	db $0, "Hey, where are you", $4f
+	db "now?", $51
+	db "Let's battle. I'll", $4f
+	db "be waiting for you", $55
+	db "on @"
+	text_from_ram $d0bf
+	db $0, "!", $57
+; 0x64c5a
+
+UnknownText_0x64c5a: ; 0x64c5a
+	db $0, "Hello? Are you", $4f
+	db "coming or what?", $51
+	db "You're missing out", $4f
+	db "on seeing YANMA!", $51
+	db "Get down to ROUTE", $4f
+	db "35 right now!", $57
+; 0x64cbd
+
+UnknownText_0x64cbd: ; 0x64cbd
+	db $0, "My @"
+	text_from_ram $d0ac
+	db $0, "'s", $4f
+	db "getting stronger,", $51
+	db "exactly as I", $4f
+	db "calculated!", $57
+; 0x64cf3
+
+UnknownText_0x64cf3: ; 0x64cf3
+	db $0, "By the way, we", $4f
+	db "knocked out a wild", $51
+	db "@"
+	text_from_ram $d0ac
+	db $0, " just", $4f
+	db "the other day.", $51
+	db "Studying up in", $4f
+	db "advance worked!", $57
+; 0x64d4f
+
+UnknownText_0x64d4f: ; 0x64d4f
+	db $0, "By the way, a wild", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, " escaped", $55
+	db "on me yesterday.", $51
+	db "A computational", $4f
+	db "error on my part…", $57
+; 0x64da4
+
+UnknownText_0x64da4: ; 0x64da4
+	db $0, "I've studied quite", $4f
+	db "a bit since then,", $51
+	db "and I've gotten a", $4f
+	db "lot better!", $51
+	db "I'm hanging out on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, ".", $51
+	db "Can you come down", $4f
+	db "for a battle?", $57
+; 0x64e1f
+
+UnknownText_0x64e1f: ; 0x64e1f
+	db $0, "See you later!", $57
+; 0x64e2f
+
+UnknownText_0x64e2f: ; 0x64e2f
+	db $0, "Hehehe, I picked", $4f
+	db "up something nice!", $51
+	db "You can have it!", $4f
+	db "Why don't you come", $51
+	db "to @"
+	text_from_ram $d0bf
+	db $0, $4f
+	db "and pick it up?", $57
+; 0x64e90
+
+UnknownText_0x64e90: ; 0x64e90
+	db $0, "I haven't picked", $4f
+	db "up anything yet.", $51
+	db "I'll call you if I", $4f
+	db "find something.", $57
+; 0x64ed4
+
+UnknownText_0x64ed4: ; 0x64ed4
+	db $0, "If we don't battle", $4f
+	db "soon, I'll forget", $55
+	db "my strategy!", $51
+	db "I'm waiting on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, "!", $57
+; 0x64f1a
+
+UnknownText_0x64f1a: ; 0x64f1a
+	db $0, "I have to do my", $4f
+	db "homework, so can", $51
+	db "you come get your", $4f
+	db "gift right away?", $51
+	db "I'm waiting on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, "!", $57
+; 0x64f74
+
+UnknownText_0x64f74: ; 0x64f74
+	db $0, "My @"
+	text_from_ram $d0ac
+	db $0, " is", $4f
+	db "getting prettier!", $51
+	db "I've been taking", $4f
+	db "photos galore!", $57
+; 0x64fb2
+
+UnknownText_0x64fb2: ; 0x64fb2
+	db $0, "It took only an", $4f
+	db "instant to KO a", $55
+	db "wild @"
+	text_from_ram $d0ac
+	db $0, ".", $51
+	db "It must be because", $4f
+	db "you gave me some", $51
+	db "battling tips last", $4f
+	db "time.", $57
+; 0x6501c
+
+UnknownText_0x6501c: ; 0x6501c
+	db $0, "You know what?", $4f
+	db "A wild @"
+	text_from_ram $d0ac
+	db $0, $51
+	db "got away from me", $4f
+	db "again.", $51
+	db "It was so close!", $4f
+	db "Really, just a", $51
+	db "little bit more,", $4f
+	db "and I would've…", $57
+; 0x65091
+
+UnknownText_0x65091: ; 0x65091
+	db $0, "Right now, I'm on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, ".", $51
+	db "If you're close", $4f
+	db "by, let's battle!", $51
+	db "I'll be waiting", $4f
+	db "for you!", $57
+; 0x650e2
+
+UnknownText_0x650e2: ; 0x650e2
+	db $0, "See you!", $57
+; 0x650ec
+
+UnknownText_0x650ec: ; 0x650ec
+	db $0, "You know what?", $4f
+	db "I got a good gift!", $51
+	db "As I promised,", $4f
+	db "it's yours!", $51
+	db "I'm sure you'd", $4f
+	db "like it. Come get", $51
+	db "it! I'm waiting on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, "!", $57
+; 0x65161
+
+UnknownText_0x65161: ; 0x65161
+	db $0, "Oh! You wanted a", $4f
+	db "gift, right?", $51
+	db "I got one, but I", $4f
+	db "want to keep this.", $51
+	db "Can you wait a bit", $4f
+	db "longer?", $57
+; 0x651bf
+
+UnknownText_0x651bf: ; 0x651bf
+	db $0, "Hi! You haven't", $4f
+	db "forgotten about", $51
+	db "your promise to", $4f
+	db "battle me?", $51
+	db "I'm waiting on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, "!", $57
+; 0x6520f
+
+UnknownText_0x6520f: ; 0x6520f
+	db $0, "Hello?", $51
+	db "If you don't come", $4f
+	db "get your present", $51
+	db "soon, I'll give it", $4f
+	db "to someone else.", $51
+	db "I'm waiting on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, "!", $57
+; 0x65271
+
+UnknownText_0x65271: ; 0x65271
+	db $0, "I recently began", $4f
+	db "observing wild", $55
+	db "@"
+	text_from_ram $d0ac
+	db $0, ".", $51
+	db "I've been learning", $4f
+	db "all sorts of new", $51
+	db "things through my", $4f
+	db "observations.", $51
+	db "I wish I could", $4f
+	db "become a #MON", $51
+	db "researcher like", $4f
+	db "PROF.OAK soon.", $57
+; 0x65318
+
+UnknownText_0x65318: ; 0x65318
+	db $0, "Oh yes, I managed", $4f
+	db "to knock out a", $51
+	db "wild @"
+	text_from_ram $d0ac
+	db $0, " a", $4f
+	db "while back.", $51
+	db "Well, considering", $4f
+	db "all the studying I", $51
+	db "do every day, it", $4f
+	db "was inevitable.", $57
+; 0x65399
+
+UnknownText_0x65399: ; 0x65399
+	db $0, "Oh yes, I came", $4f
+	db "close to catching", $51
+	db "a wild @"
+	text_from_ram $d0ac
+	db $0, ",", $4f
+	db "but it got away.", $51
+	db "For the longest", $4f
+	db "time, I've been", $51
+	db "wanting to observe", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, ". Rats…", $57
+; 0x65419
+
+UnknownText_0x65419: ; 0x65419
+	db $0, "Want to battle?", $4f
+	db "I have to battle", $51
+	db "every so often to", $4f
+	db "avoid rusting out.", $51
+	db "I'll be on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, "!", $57
+; 0x65471
+
+UnknownText_0x65471: ; 0x65471
+	db $0, "See you later!", $57
+; 0x65481
+
+UnknownText_0x65481: ; 0x65481
+	db $0, "Do you know BLUE?", $51
+	db "He's PROF.OAK's", $4f
+	db "grandson and a", $51
+	db "former #MON", $4f
+	db "LEAGUE CHAMPION!", $51
+	db "He's one super", $4f
+	db "#MON trainer!", $57
+; 0x654ea
+
+UnknownText_0x654ea: ; 0x654ea
+	db $0, "PROF.OAK has a", $4f
+	db "granddaughter", $55
+	db "named DAISY.", $51
+	db "When she's around,", $4f
+	db "even the most", $51
+	db "ferocious #MON", $4f
+	db "calm right down.", $57
+; 0x65555
+
+UnknownText_0x65555: ; 0x65555
+	db $0, "Everyone's talking", $4f
+	db "about PROF.ELM.", $51
+	db "He used to be an", $4f
+	db "assistant to the", $55
+	db "great PROF.OAK!", $51
+	db "That is so cool!", $4f
+	db "I envy him!", $57
+; 0x655c7
+
+UnknownText_0x655c7: ; 0x655c7
+	db $0, "PROF.OAK's dream", $4f
+	db "is to compile a", $51
+	db "comprehensive", $4f
+	db "#DEX.", $51
+	db "I envy you for", $4f
+	db "taking part in", $55
+	db "that project…", $57
+; 0x65628
+
+UnknownText_0x65628: ; 0x65628
+	db $0, "Do you know KURT,", $4f
+	db "the BALL creator?", $51
+	db "He and PROF.OAK go", $4f
+	db "back a long way.", $51
+	db "I guess great", $4f
+	db "people attract one", $55
+	db "another!", $57
+; 0x6569b
+
+UnknownText_0x6569b: ; 0x6569b
+	db $0, "#MON LEAGUE is", $4f
+	db "the great gather-", $55
+	db "ing place for all", $51
+	db "trainers who wish", $4f
+	db "to become CHAMP.", $51
+	db "PROF.OAK acts as", $4f
+	db "an advisor to the", $51
+	db "#MON LEAGUE's", $4f
+	db "headquarters.", $51
+	db "He really is a", $4f
+	db "great man.", $57
+; 0x6574a
+
+UnknownText_0x6574a: ; 0x6574a
+	db $0, "PROF.OAK'S #MON", $4f
+	db "TALK is a popular", $55
+	db "radio show, right?", $51
+	db "Did you know that", $4f
+	db "he was going to", $51
+	db "turn down the show", $4f
+	db "at first?", $51
+	db "But MARY's energy", $4f
+	db "and persistence", $55
+	db "wore him down.", $51
+	db "So we have MARY to", $4f
+	db "thank for it!", $57
+; 0x65810
+
+UnknownText_0x65810: ; 0x65810
+	db $0, "PROF.OAK used to", $4f
+	db "be a trainer a", $55
+	db "long time ago.", $51
+	db "But rather than", $4f
+	db "battling, he found", $51
+	db "#MON themselves", $4f
+	db "to be interesting.", $51
+	db "So he abandoned", $4f
+	db "his training to", $51
+	db "focus on becoming", $4f
+	db "a researcher.", $57
+; 0x658c6
+
+UnknownText_0x658c6: ; 0x658c6
+	db $0, "PROF.OAK has a", $4f
+	db "granddaughter", $55
+	db "named DAISY.", $51
+	db "She has tea every", $4f
+	db "day for an hour", $51
+	db "from three in the", $4f
+	db "afternoon.", $51
+	db "I wish I could", $4f
+	db "join her for tea", $51
+	db "and chat about", $4f
+	db "PROF.OAK.", $57
+; 0x65969
+
+UnknownText_0x65969: ; 0x65969
+	db $0, "Did you know?", $4f
+	db "PROF.OAK traveled", $51
+	db "all over the world", $4f
+	db "when he was young.", $51
+	db "While traveling,", $4f
+	db "he must've learned", $51
+	db "about #MON", $4f
+	db "naturally.", $51
+	db "I envy him…", $4f
+	db "I'd like to travel", $51
+	db "and learn about", $4f
+	db "things too…", $57
+; 0x65a23
+
+UnknownText_0x65a23: ; 0x65a23
+	db $0, "I'm going to study", $4f
+	db "hard so PROF.OAK", $51
+	db "will make me his", $4f
+	db "assistant!", $57
+; 0x65a63
+
+UnknownText_0x65a63: ; 0x65a63
+	db $0, "Do you remember", $4f
+	db "about our battle?", $51
+	db "The place is", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, ".", $51
+	db "Hurry over--I'm", $4f
+	db "waiting.", $57
+; 0x65ab2
+
+UnknownText_0x65ab2: ; 0x65ab2
+	db $0, "Listen to this.", $4f
+	db "My @"
+	text_from_ram $d0ac
+	db $0, $51
+	db "grins happily when", $4f
+	db "I pinch its cheek.", $51
+	db "But it never grins", $4f
+	db "for anyone else.", $51
+	db "I must be special.", $57
+; 0x65b29
+
+UnknownText_0x65b29: ; 0x65b29
+	db $0, "Oh, and recently,", $4f
+	db "my PIKACHU beat a", $55
+	db "wild @"
+	text_from_ram $d0ac
+	db $0, "!", $51
+	db "A wild @"
+	text_from_ram $d0ac
+	db $0, ",", $4f
+	db "I tell you!", $51
+	db "Don't you think", $4f
+	db "that's astounding?", $51
+	db "My PIKACHU is", $4f
+	db "awesome!", $51
+	db "My PIKACHU is the", $4f
+	db "greatest!", $57
+; 0x65bc8
+
+UnknownText_0x65bc8: ; 0x65bc8
+	db $0, "Oh, and I saw a", $4f
+	db "wild @"
+	text_from_ram $d0ac
+	db $0, " a", $55
+	db "little while ago.", $51
+	db "But it wasn't very", $4f
+	db "cute, so I left", $51
+	db "it…", $4f
+	db "#MON have to be", $51
+	db "cute. They're no", $4f
+	db "good otherwise.", $57
+; 0x65c4e
+
+UnknownText_0x65c4e: ; 0x65c4e
+	db $0, "Well, let's talk", $4f
+	db "again!", $57
+; 0x65c66
+
+UnknownText_0x65c66: ; 0x65c66
+	db $0, "Did you remember?", $4f
+	db "The Bug-Catching", $55
+	db "Contest is today.", $51
+	db "You're going to", $4f
+	db "go, aren't you?", $51
+	db "I think I'll", $4f
+	db "participate with", $51
+	db "PIKACHU to show", $4f
+	db "off its cuteness.", $57
+; 0x65cf9
+
+UnknownText_0x65cf9: ; 0x65cf9
+	db $0, "I'd like you to", $4f
+	db "have a NUGGET.", $51
+	db "My PIKACHU just", $4f
+	db "loves it.", $51
+	db "I'm certain your", $4f
+	db "PIKACHU will love", $55
+	db "it too!", $57
+; 0x65d5c
+
+UnknownText_0x65d5c: ; 0x65d5c
+	db $0, "How is your", $4f
+	db "PIKACHU doing?", $51
+	db "Let's get together", $4f
+	db "and brag about our", $55
+	db "PIKACHU!", $57
+; 0x65da6
+
+UnknownText_0x65da6: ; 0x65da6
+	db $0, "What's wrong?", $51
+	db "I'm waiting on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, ".", $51
+	db "Come pick this up", $4f
+	db "anytime.", $57
+; 0x65de4
+
+UnknownText_0x65de4: ; 0x65de4
+	db $0, "My @"
+	text_from_ram $d0ac
+	db $0, " has", $4f
+	db "grown again.", $51
+	db "It was only about", $4f
+	db "so big when I", $51
+	db "caught it, but now", $4f
+	db "it's way bigger.", $57
+; 0x65e42
+
+UnknownText_0x65e42: ; 0x65e42
+	db $0, "Oh yeah, I KO'd a", $4f
+	db "wild @"
+	text_from_ram $d0ac
+	db $0, ".", $51
+	db "It was huge, like", $4f
+	db "this big even.", $51
+	db "Heh, I guess you", $4f
+	db "can't tell over", $55
+	db "the phone…", $57
+; 0x65eac
+
+UnknownText_0x65eac: ; 0x65eac
+	db $0, "Oh yeah, I lost a", $4f
+	db "wild @"
+	text_from_ram $d0ac
+	db $0, ".", $51
+	db "It was huge, like", $4f
+	db "this big even.", $51
+	db "Heh, I guess you", $4f
+	db "can't tell over", $55
+	db "the phone…", $57
+; 0x65f17
+
+UnknownText_0x65f17: ; 0x65f17
+	db $0, "We should get a", $4f
+	db "battle going!", $51
+	db "I'll be fishing on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, ".", $51
+	db "Swing by if you", $4f
+	db "have the time.", $57
+; 0x65f6e
+
+UnknownText_0x65f6e: ; 0x65f6e
+	db $0, "Well, I'll be", $4f
+	db "seeing you.", $57
+; 0x65f88
+
+UnknownText_0x65f88: ; 0x65f88
+	db $0, "I picked up a good", $4f
+	db "little thing at", $55
+	db "the water's edge.", $51
+	db "Like I promised,", $4f
+	db "it's yours.", $51
+	db "I'll be waiting on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, ".", $57
+; 0x65ff2
+
+UnknownText_0x65ff2: ; 0x65ff2
+	db $0, "Have I found", $4f
+	db "anything good?", $51
+	db "Nope, not yet.", $51
+	db "It's like fishing,", $4f
+	db "you need patience.", $57
+; 0x66043
+
+UnknownText_0x66043: ; 0x66043
+	db $0, "Yup, TULLY here…", $51
+	db $14, "? What?", $4f
+	db "You're lost?", $51
+	db "Our battle will be", $4f
+	db "on @"
+	text_from_ram $d0bf
+	db $0, ".", $57
+; 0x66087
+
+UnknownText_0x66087: ; 0x66087
+	db $0, "I've got something", $4f
+	db "good for you.", $51
+	db "Hustle over to", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, ".", $57
+; 0x660be
+
+UnknownText_0x660be: ; 0x660be
+	db $0, "Oh yeah, I got an", $4f
+	db "extremely rare", $51
+	db "#MON in a trade", $4f
+	db "a while back.", $51
+	db "Do you want to", $4f
+	db "know what it is?", $51
+	db "Hehe, I'm keeping", $4f
+	db "it a secret!", $57
+; 0x6613c
+
+UnknownText_0x6613c: ; 0x6613c
+	db $0, "Oh yeah, I took", $4f
+	db "down this wild", $51
+	db "@"
+	text_from_ram $d0ac
+	db $0, ".", $4f
+	db "It wasn't rare", $51
+	db "enough to bother", $4f
+	db "catching.", $57
+; 0x6618c
+
+UnknownText_0x6618c: ; 0x6618c
+	db $0, "Oh yeah, I saw a", $4f
+	db "rare #MON about", $55
+	db "an hour ago.", $51
+	db "It was my first", $4f
+	db "sighting. But I", $51
+	db "didn't have any", $4f
+	db "# BALLS…", $51
+	db "Would BILL laugh", $4f
+	db "at my mistakes?", $57
+; 0x66214
+
+UnknownText_0x66214: ; 0x66214
+	db $0, "You've got time", $4f
+	db "like usual, right?", $51
+	db "Feel like having a", $4f
+	db "battle?", $51
+	db "It'll be a chance", $4f
+	db "to see my rare", $51
+	db "#MON. It'll be", $4f
+	db "worth your time!", $51
+	db "You know where--", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, ".", $57
+; 0x662a9
+
+UnknownText_0x662a9: ; 0x662a9
+	db $0, "So that's it then.", $57
+; 0x662bc
+
+UnknownText_0x662bc: ; 0x662bc
+	db $0, "Did you know…?", $4f
+	db "BILL's father is", $51
+	db "supposed to be a", $4f
+	db "great #MANIAC.", $57
+; 0x662fc
+
+UnknownText_0x662fc: ; 0x662fc
+	db $0, "Did you know…?", $4f
+	db "Apparently BILL's", $51
+	db "grandpa isn't a", $4f
+	db "#MANIAC.", $57
+; 0x66335
+
+UnknownText_0x66335: ; 0x66335
+	db $0, "Did you know…?", $4f
+	db "BILL's originally", $55
+	db "from GOLDENROD.", $57
+; 0x66366
+
+UnknownText_0x66366: ; 0x66366
+	db $0, "Did you know…?", $4f
+	db "BILL evidently", $51
+	db "lives on ROUTE 25", $4f
+	db "in KANTO.", $57
+; 0x663a1
+
+UnknownText_0x663a1: ; 0x663a1
+	db $0, "Did you know…?", $4f
+	db "ABRA was the first", $51
+	db "#MON that BILL", $4f
+	db "ostensibly caught.", $57
+; 0x663e6
+
+UnknownText_0x663e6: ; 0x663e6
+	db $0, "Did you know…?", $4f
+	db "BILL's younger", $51
+	db "sister apparently", $4f
+	db "can't wink.", $57
+; 0x66421
+
+UnknownText_0x66421: ; 0x66421
+	db $0, "Did you know…?", $4f
+	db "BILL supposedly", $51
+	db "hates milk and", $4f
+	db "can't drink it.", $57
+; 0x6645f
+
+UnknownText_0x6645f: ; 0x6645f
+	db $0, "Did you know…?", $4f
+	db "Evidently, BILL", $51
+	db "isn't very good at", $4f
+	db "battling.", $57
+; 0x6649b
+
+UnknownText_0x6649b: ; 0x6649b
+	db $0, "Did you know…?", $4f
+	db "BILL appears to", $51
+	db "like the lady at", $4f
+	db "the FLOWER SHOP.", $57
+; 0x664dd
+
+UnknownText_0x664dd: ; 0x664dd
+	db $0, "Did you know…?", $4f
+	db "BILL's mother is", $51
+	db "said to have been", $4f
+	db "a KIMONO GIRL.", $57
+; 0x6651e
+
+UnknownText_0x6651e: ; 0x6651e
+	db $0, "You wanted to hear", $4f
+	db "about BILL?", $51
+	db "Sorry, but I'm too", $4f
+	db "busy for you.", $51
+	db "I'll call when I", $4f
+	db "have time.", $57
+; 0x66579
+
+UnknownText_0x66579: ; 0x66579
+	db $0, "You want to see my", $4f
+	db "rare #MON.", $51
+	db "Hurry over to", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, ".", $57
+; 0x665ad
+
+UnknownText_0x665ad: ; 0x665ad
+	db $0, "My @"
+	text_from_ram $d0ac
+	db $0, "'s", $4f
+	db "adorable, don't", $51
+	db "you think so?", $4f
+	db "I always sleep", $51
+	db "with it--it's so", $4f
+	db "fluffy and warm!", $57
+; 0x66605
+
+UnknownText_0x66605: ; 0x66605
+	db $0, "Oh, and we had to", $4f
+	db "battle a wild", $51
+	db "@"
+	text_from_ram $d0ac
+	db $0, " a while", $4f
+	db "ago…", $51
+	db "My CLEFAIRY came", $4f
+	db "close to fainting!", $51
+	db "Isn't that awful?", $51
+	db "I hate those nasty", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, "!", $57
+; 0x66688
+
+UnknownText_0x66688: ; 0x66688
+	db $0, "Oh, and we had to", $4f
+	db "battle a wild", $51
+	db "@"
+	text_from_ram $d0ac
+	db $0, " a while", $4f
+	db "ago…", $51
+	db "My CLEFAIRY got", $4f
+	db "frightened, so we", $51
+	db "ran away as fast", $4f
+	db "as we could!", $51
+	db "I just can't help", $4f
+	db "feeling protective", $55
+	db "of my CLEFAIRY.", $57
+; 0x66730
+
+UnknownText_0x66730: ; 0x66730
+	db $0, "I know this might", $4f
+	db "surprise you, but", $51
+	db "would you like to", $4f
+	db "battle?", $51
+	db "I'll be waiting", $4f
+	db "with CLEFAIRY on", $55
+	db "@"
+	text_from_ram $d0bf
+	db $0, ".", $57
+; 0x66796
+
+UnknownText_0x66796: ; 0x66796
+	text_from_ram $d0ac
+	db $0, "!", $51
+	db "It's awful.", $4f
+	db "My CLEFAIRY…", $51
+	db "Huh? ", $14, "?", $51
+	db "Oh, sorry! I was", $4f
+	db "in a hurry, and I…", $51
+	db "I have to go!", $4f
+	db "Bye-bye!", $57
+; 0x667f7
+
+UnknownText_0x667f7: ; 0x667f7
+	db $0, "Bye-bye!", $57
+; 0x66801
+
+UnknownText_0x66801: ; 0x66801
+	db $0, "I bought some PINK", $4f
+	db "BOWS at GOLDENROD", $51
+	db "DEPT.STORE for my", $4f
+	db "CLEFAIRY.", $51
+	db "I got too many, so", $4f
+	db "I'll give you one!", $51
+	db "Come collect it on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, ".", $57
+; 0x66882
+
+UnknownText_0x66882: ; 0x66882
+	db $0, "I love dressing up", $4f
+	db "my CLEFAIRY!", $57
+; 0x668a3
+
+UnknownText_0x668a3: ; 0x668a3
+	db $0, "What's wrong?", $4f
+	db "Can't you visit?", $51
+	db "CLEFAIRY got tired", $4f
+	db "and fell asleep.", $51
+	db "I'm not sure if I", $4f
+	db "can wake it up…", $51
+	db "Please hurry to", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, "!", $57
+; 0x6691d
+
+UnknownText_0x6691d: ; 0x6691d
+	db $0, "What's wrong?", $4f
+	db "Can't you visit?", $51
+	db "I'm sure this will", $4f
+	db "look good on your", $55
+	db "CLEFAIRY.", $51
+	db "Please hurry to", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, "!", $57
+; 0x66980
+
+UnknownText_0x66980: ; 0x66980
+	db $0, "My @"
+	text_from_ram $d0ac
+	db $0, "'s", $4f
+	db "become tougher.", $51
+	db "We've achieved", $4f
+	db "liftoff!", $57
+; 0x669b2
+
+UnknownText_0x669b2: ; 0x669b2
+	db $0, "We can easily beat", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, "!", $51
+	db "…Huh? You too?", $4f
+	db "Isn't that great?", $57
+; 0x669ed
+
+UnknownText_0x669ed: ; 0x669ed
+	db $0, "But get this, a", $4f
+	db "wild @"
+	text_from_ram $d0ac
+	db $0, $51
+	db "just barely eluded", $4f
+	db "us.", $51
+	db "I wanted to FLY", $4f
+	db "after it…", $57
+; 0x66a3a
+
+UnknownText_0x66a3a: ; 0x66a3a
+	db $0, "Right now, I'm on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, ".", $51
+	db "You know, where I", $4f
+	db "first met you?", $51
+	db "Want to battle?", $4f
+	db "I'll wait here.", $57
+; 0x66a93
+
+UnknownText_0x66a93: ; 0x66a93
+	db $0, "OK, bye for now!", $57
+; 0x66aa5
+
+UnknownText_0x66aa5: ; 0x66aa5
+	db $0, "I'll be looking", $4f
+	db "forward to our", $55
+	db "next battle!", $57
+; 0x66ad1
+
+UnknownText_0x66ad1: ; 0x66ad1
+	db $0, "Oh, ", $14, "!", $4f
+	db "Hurry, hurry!", $51
+	db "@"
+	text_from_ram $d0bf
+	db $0, "!", $4f
+	db "FLY over now!", $57
+; 0x66afc
+
+UnknownText_0x66afc: ; 0x66afc
+	db $0, "My @"
+	text_from_ram $d0ac
+	db $0, "'s", $4f
+	db "grown impressive!", $51
+	db "My fishing skills", $4f
+	db "have improved too!", $57
+; 0x66b3e
+
+UnknownText_0x66b3e: ; 0x66b3e
+	db $0, "We beat a wild", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, "…", $51
+	db "You know, I have", $4f
+	db "more fun fishing", $51
+	db "than beating wild", $4f
+	db "#MON.", $57
+; 0x66b8f
+
+UnknownText_0x66b8f: ; 0x66b8f
+	db $0, "But a while back,", $4f
+	db "we came this close", $51
+	db "to landing a wild", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, ".", $51
+	db "I tell you, it was", $4f
+	db "huge. Believe me.", $57
+; 0x66bf3
+
+UnknownText_0x66bf3: ; 0x66bf3
+	db $0, "I'm fishing on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, ",", $51
+	db "but nothing's", $4f
+	db "biting today.", $51
+	db "Help me while my", $4f
+	db "time away, come", $55
+	db "over for a battle.", $57
+; 0x66c58
+
+UnknownText_0x66c58: ; 0x66c58
+	db $0, "All right, later.", $57
+; 0x66c6b
+
+UnknownText_0x66c6b: ; 0x66c6b
+	db $0, "I snagged an item", $4f
+	db "while fishing.", $51
+	db "Come pick it up on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, ".", $57
+; 0x66ca7
+
+UnknownText_0x66ca7: ; 0x66ca7
+	db $0, "Nah, I haven't", $4f
+	db "found anything", $51
+	db "that's worth your", $4f
+	db "time.", $51
+	db "You have to have", $4f
+	db "patience.", $57
+; 0x66cf7
+
+UnknownText_0x66cf7: ; 0x66cf7
+	db $0, "Sigh…", $4f
+	db "They're not biting", $51
+	db "like before on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, "…", $51
+	db "You have to come", $4f
+	db "for a battle!", $57
+; 0x66d45
+
+UnknownText_0x66d45: ; 0x66d45
+	db $0, "Don't you want", $4f
+	db "this item?", $51
+	db "Hah? You don't", $4f
+	db "know where?", $51
+	db "@"
+	text_from_ram $d0bf
+	db $0, "…", $4f
+	db "Just head from", $51
+	db "MAHOGANY toward", $4f
+	db "BLACKTHORN!", $57
+; 0x66dab
+
+UnknownText_0x66dab: ; 0x66dab
+	db $0, "Anyway, we'll chat", $4f
+	db "again!", $57
+; 0x66dc5
+
+UnknownText_0x66dc5: ; 0x66dc5
+	db $0, "Are you still on", $4f
+	db "your journey?", $51
+	db "I remain dedicated", $4f
+	db "to my training.", $51
+	db "Oooooaaarrrgh!", $57
+; 0x66e17
+
+UnknownText_0x66e17: ; 0x66e17
+	db $0, "I'm in training", $4f
+	db "now. I apologize,", $51
+	db "but call me back", $4f
+	db "another time.", $51
+	db "Oooooaaarrrgh!", $57
+; 0x66e67
+
+UnknownText_0x66e67: ; 0x66e67
+	db $0, "I apologize, but I", $4f
+	db "don't have time to", $51
+	db "chat while I am in", $4f
+	db "training!", $51
+	db "I'll have time to", $4f
+	db "chat tomorrow!", $51
+	db "Yiiihah!", $57
+; 0x66ed3
+
+UnknownText_0x66ed3: ; 0x66ed3
+	db $0, "I plan to take a", $4f
+	db "lunch break, so", $51
+	db "come see me then!", $4f
+	db "Ayiiiyah!", $57
+; 0x66f11
+
+UnknownText_0x66f11: ; 0x66f11
+	db $0, "I'm taking a break", $4f
+	db "on ROUTE 45!", $51
+	db "Why not drop by if", $4f
+	db "you are free?", $57
+; 0x66f52
+
+UnknownText_0x66f52: ; 0x66f52
+	db $0, "I rested up over", $4f
+	db "my lunch break.", $51
+	db "Now it's time to", $4f
+	db "resume training!", $51
+	db "Oooryaah!", $57
+; 0x66f9f
+
+UnknownText_0x66f9f: ; 0x66f9f
+	db $0, "Nothing can match", $4f
+	db "my @"
+	text_from_ram $d0ac
+	db $0, " now.", $57
+; 0x66fc0
+
+UnknownText_0x66fc0: ; 0x66fc0
+	db $0, "Yeah, we KO'd a", $4f
+	db "wild @"
+	text_from_ram $d0ac
+	db $0, "!", $51
+	db "That was OK, but I", $4f
+	db "wanted to get it…", $57
+; 0x67001
+
+UnknownText_0x67001: ; 0x67001
+	db $0, "And yesterday, we", $4f
+	db "spotted a wild", $51
+	db "@"
+	text_from_ram $d0ac
+	db $0, ".", $4f
+	db "We were debating", $51
+	db "whether to catch", $4f
+	db "it or beat it.", $51
+	db "When along came", $4f
+	db "another guy who", $51
+	db "caught it!", $4f
+	db "How about that!", $57
+; 0x67096
+
+UnknownText_0x67096: ; 0x67096
+	db $0, "You're thinking", $4f
+	db "you'd like to", $51
+	db "battle me. Am I", $4f
+	db "right or what?", $51
+	db "Yep! We'll meet on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, "!", $57
+; 0x670eb
+
+UnknownText_0x670eb: ; 0x670eb
+	db $0, "OK, give me a call", $4f
+	db "again!", $57
+; 0x67106
+
+UnknownText_0x67106: ; 0x67106
+	db $0, "You'll battle with", $4f
+	db "me again, right?", $57
+; 0x6712a
+
+UnknownText_0x6712a: ; 0x6712a
+	db $0, "Haven't you gotten", $4f
+	db "to @"
+	text_from_ram $d0bf
+	db $0, "?", $51
+	db "Waiting here isn't", $4f
+	db "bad, but I'd sure", $55
+	db "like to battle!", $57
+; 0x6717a
+
+UnknownText_0x6717a: ; 0x6717a
+	text_from_ram $d099
+	db $0, "'s @"
+	text_from_ram $d0ac
+	db $0, $4f
+	db "is much stronger", $55
+	db "than before!", $57
+; 0x671a4
+
+UnknownText_0x671a4: ; 0x671a4
+	db $0, "And, and…", $4f
+	db "I just battled and", $55
+	db "beat @"
+	text_from_ram $d0ac
+	db $0, "!", $51
+	db "I've raised my", $4f
+	db "#MON properly!", $57
+; 0x671eb
+
+UnknownText_0x671eb: ; 0x671eb
+	db $0, "But, but…", $51
+	db "A wild @"
+	text_from_ram $d0ac
+	db $0, $4f
+	db "got away from me", $51
+	db "again. It's just", $4f
+	db "not fair!", $57
+; 0x6722e
+
+UnknownText_0x6722e: ; 0x6722e
+	db $0, "I'm ERIN. Want to", $4f
+	db "battle me again?", $51
+	db "I won't lose this", $4f
+	db "time!", $51
+	db "I'll be waiting on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, "!", $57
+; 0x67281
+
+UnknownText_0x67281: ; 0x67281
+	db $0, "See you. Bye-bye!", $57
+; 0x67294
+
+UnknownText_0x67294: ; 0x67294
+	db $0, "I'm working hard", $4f
+	db "to raise my", $55
+	db "#MON!", $51
+	db "Come back for", $4f
+	db "another battle!", $57
+; 0x672d5
+
+UnknownText_0x672d5: ; 0x672d5
+	db $0, "Oh, ", $14, "!", $4f
+	db "Come battle ERIN!", $51
+	db "I'll be waiting on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, "!", $57
+; 0x67308
--- /dev/null
+++ b/text/phone/extra2.asm
@@ -1,0 +1,951 @@
+
+UnknownText_0xa4000: ; 0xa4000
+	db $0, "By the way, I'm a", $4f
+	db "HIKER, so I often", $51
+	db "go to mountains", $4f
+	db "and caves.", $51
+	db "I occasionally see", $4f
+	db "rare #MON.", $51
+	db "I could call you", $4f
+	db "the next time I", $55
+	db "see one.", $51
+	db "Feel like swapping", $4f
+	db "phone numbers?", $57
+; 0xa40a9
+
+UnknownText_0xa40a9: ; 0xa40a9
+	db $0, "I could call you", $4f
+	db "when I see some", $55
+	db "rare #MON.", $51
+	db "Feel like swapping", $4f
+	db "phone numbers?", $57
+; 0xa40f8
+
+UnknownText_0xa40f8: ; 0xa40f8
+	db $0, "Be patient. I'll", $4f
+	db "find some rare", $55
+	db "#MON for you!", $57
+; 0xa4126
+
+UnknownText_0xa4126: ; 0xa4126
+	db $0, "You're cold. I may", $4f
+	db "as well head to", $55
+	db "the mountains…", $57
+; 0xa4158
+
+UnknownText_0xa4158: ; 0xa4158
+	db $0, "Your phone's full.", $51
+	db "It can't register", $4f
+	db "my phone number.", $57
+; 0xa418d
+
+UnknownText_0xa418d: ; 0xa418d
+	db $0, "All righty, then!", $51
+	db "My #MON and I", $4f
+	db "are raring to go!", $57
+; 0xa41c0
+
+UnknownText_0xa41c0: ; 0xa41c0
+	db $0, "From here, I can", $4f
+	db "see GOLDENROD's", $51
+	db "DEPT.STORE. They", $4f
+	db "have bargain sales", $51
+	db "up on the rooftop", $4f
+	db "every so often.", $51
+	db "Could I get your", $4f
+	db "phone number?", $51
+	db "I'll call you when", $4f
+	db "they have a sale.", $57
+; 0xa426a
+
+UnknownText_0xa426a: ; 0xa426a
+	db $0, "If you give me", $4f
+	db "your number, I'll", $51
+	db "call you when they", $4f
+	db "have a sale.", $57
+; 0xa42ab
+
+UnknownText_0xa42ab: ; 0xa42ab
+	db $0, "I check GOLDENROD", $4f
+	db "DEPT.STORE every", $51
+	db "day, so I know", $4f
+	db "when there's a", $55
+	db "sale.", $57
+; 0xa42f2
+
+UnknownText_0xa42f2: ; 0xa42f2
+	db $0, "Anyway…", $51
+	db "If you're short on", $4f
+	db "money, take down", $55
+	db "my number.", $51
+	db "I'll call you when", $4f
+	db "there's a sale.", $57
+; 0xa434a
+
+UnknownText_0xa434a: ; 0xa434a
+	db $0, "Your phone doesn't", $4f
+	db "have enough memory", $55
+	db "for more numbers.", $57
+; 0xa4382
+
+UnknownText_0xa4382: ; 0xa4382
+	db $0, "I waited for you!", $4f
+	db "I even cut back my", $51
+	db "shopping to raise", $4f
+	db "my #MON better!", $57
+; 0xa43ca
+
+UnknownText_0xa43ca: ; 0xa43ca
+	db $0, "Shopping under the", $4f
+	db "sky!", $51
+	db "It feels so nice", $4f
+	db "up on a rooftop.", $57
+; 0xa4405
+
+UnknownText_0xa4405: ; 0xa4405
+	db $0, "Whenever I see a", $4f
+	db "strong trainer, I", $51
+	db "want to be their", $4f
+	db "cheerleader.", $51
+	db "When I'm on my", $4f
+	db "walk, I sometimes", $55
+	db "pick up items.", $51
+	db "If I get anything,", $4f
+	db "you can have it!", $51
+	db "Want to give me", $4f
+	db "your number?", $51
+	db "I'll call as soon", $4f
+	db "as I get anything.", $57
+; 0xa44db
+
+UnknownText_0xa44db: ; 0xa44db
+	db $0, "If I find an item,", $4f
+	db "you can have it!", $51
+	db "Want to give me", $4f
+	db "your number?", $57
+; 0xa451d
+
+UnknownText_0xa451d: ; 0xa451d
+	db $0, "I'll call as soon", $4f
+	db "as I get anything!", $57
+; 0xa4542
+
+UnknownText_0xa4542: ; 0xa4542
+	db $0, "Is that so? Well,", $4f
+	db "I'll still be", $55
+	db "rooting for you!", $57
+; 0xa4573
+
+UnknownText_0xa4573: ; 0xa4573
+	db $0, "But your phone is", $4f
+	db "all filled up!", $57
+; 0xa4595
+
+UnknownText_0xa4595: ; 0xa4595
+	db $0, "I've been waiting!", $51
+	db "I've gotten a bit", $4f
+	db "better at this!", $57
+; 0xa45c9
+
+UnknownText_0xa45c9: ; 0xa45c9
+	db $0, "So you're finally", $4f
+	db "here!", $51
+	db "I think this will", $4f
+	db "make you happy.", $57
+; 0xa4603
+
+UnknownText_0xa4603: ; 0xa4603
+	db $0, "Your PACK looks", $4f
+	db "completely full.", $51
+	db "I'll have to hold", $4f
+	db "on to this.", $57
+; 0xa4642
+
+UnknownText_0xa4642: ; 0xa4642
+	db $0, "You're the best", $4f
+	db "I've ever battled!", $51
+	db "Huh? You're the", $4f
+	db "one who saved all", $55
+	db "the SLOWPOKE?", $51
+	db "Well, no wonder I", $4f
+	db "couldn't beat you!", $51
+	db "Would it be OK to", $4f
+	db "get your number?", $51
+	db "I don't want to", $4f
+	db "miss anything you", $55
+	db "do from now on!", $57
+; 0xa470b
+
+UnknownText_0xa470b: ; 0xa470b
+	db $0, "You will tell me", $4f
+	db "your phone number?", $57
+; 0xa4730
+
+UnknownText_0xa4730: ; 0xa4730
+	db $0, "Wow! Gee, thanks!", $4f
+	db "Now I can call you", $51
+	db "anytime, whether", $4f
+	db "anything's up or", $51
+	db "not. You know,", $4f
+	db "just to chat!", $57
+; 0xa4794
+
+UnknownText_0xa4794: ; 0xa4794
+	db $0, "Oh, but…", $4f
+	db "I'm not dangerous!", $51
+	db "I just want to", $4f
+	db "call and chat", $51
+	db "about everything", $4f
+	db "and nothing!", $57
+; 0xa47eb
+
+UnknownText_0xa47eb: ; 0xa47eb
+	db $0, "Your phone list is", $4f
+	db "already full…", $51
+	db "You must be really", $4f
+	db "popular…", $57
+; 0xa4829
+
+UnknownText_0xa4829: ; 0xa4829
+	db $0, "Do you get the", $4f
+	db "feeling that there", $51
+	db "are more rare", $4f
+	db "#MON around?", $51
+	db "I'm positive there", $4f
+	db "are, so I look all", $55
+	db "the time.", $51
+	db "If I find one, I", $4f
+	db "want to share the", $51
+	db "good news with", $4f
+	db "everyone I know.", $51
+	db "I know! Give me", $4f
+	db "your phone number.", $57
+; 0xa48fc
+
+UnknownText_0xa48fc: ; 0xa48fc
+	db $0, "I want to let", $4f
+	db "people know if I", $55
+	db "see rare #MON.", $51
+	db "Please give me", $4f
+	db "your phone number!", $57
+; 0xa494d
+
+UnknownText_0xa494d: ; 0xa494d
+	db $0, "If I spot any", $4f
+	db "awesome #MON,", $51
+	db "I'll be sure to", $4f
+	db "give you a call!", $57
+; 0xa498a
+
+UnknownText_0xa498a: ; 0xa498a
+	db $0, "Aww! I want to", $4f
+	db "tell someone about", $55
+	db "my discoveries!", $57
+; 0xa49bd
+
+UnknownText_0xa49bd: ; 0xa49bd
+	db $0, "There's no space", $4f
+	db "for my number.", $51
+	db "If you make room,", $4f
+	db "register me!", $57
+; 0xa49fc
+
+UnknownText_0xa49fc: ; 0xa49fc
+	db $0, "It's my turn to", $4f
+	db "win now!", $51
+	db "I've turned over a", $4f
+	db "new leaf!", $57
+; 0xa4a31
+
+UnknownText_0xa4a31: ; 0xa4a31
+	db $0, "Reading textbooks", $4f
+	db "is worthwhile", $55
+	db "every so often.", $51
+	db "When I'm reading", $4f
+	db "and walking, I", $55
+	db "have to look down.", $51
+	db "So I notice items", $4f
+	db "on the ground.", $51
+	db "Next time I find", $4f
+	db "something, I'll", $55
+	db "give it to you.", $51
+	db "May I have your", $4f
+	db "phone number?", $57
+; 0xa4b03
+
+UnknownText_0xa4b03: ; 0xa4b03
+	db $0, "If I find some-", $4f
+	db "thing, it's yours.", $51
+	db "So may I have your", $4f
+	db "phone number?", $57
+; 0xa4b47
+
+UnknownText_0xa4b47: ; 0xa4b47
+	db $0, "I'll call you as", $4f
+	db "soon as I find", $51
+	db "something. You can", $4f
+	db "count on it!", $57
+; 0xa4b87
+
+UnknownText_0xa4b87: ; 0xa4b87
+	db $0, "Oh… I thought it", $4f
+	db "would be a good", $51
+	db "break to call you", $4f
+	db "when I'm studying…", $57
+; 0xa4bcd
+
+UnknownText_0xa4bcd: ; 0xa4bcd
+	db $0, "There's no room", $4f
+	db "for my number.", $57
+; 0xa4bec
+
+UnknownText_0xa4bec: ; 0xa4bec
+	db $0, "I waited around", $4f
+	db "for you!", $51
+	db "I'm thoroughly", $4f
+	db "prepared today!", $57
+; 0xa4c24
+
+UnknownText_0xa4c24: ; 0xa4c24
+	db $0, "This, this! This", $4f
+	db "is yours! Ta-da!", $57
+; 0xa4c47
+
+UnknownText_0xa4c47: ; 0xa4c47
+	db $0, "Whoops!", $51
+	db "You can't carry", $4f
+	db "any more items!", $51
+	db "I'll hold it until", $4f
+	db "next time.", $57
+; 0xa4c8c
+
+UnknownText_0xa4c8c: ; 0xa4c8c
+	db $0, "You're really good", $4f
+	db "at #MON!", $51
+	db "Boys give me items", $4f
+	db "after battles, but", $51
+	db "sometimes they", $4f
+	db "give me too much.", $51
+	db "Next time, I can", $4f
+	db "share some if you", $51
+	db "want. Let me get", $4f
+	db "your phone number.", $57
+; 0xa4d36
+
+UnknownText_0xa4d36: ; 0xa4d36
+	db $0, "I'll share my", $4f
+	db "gifts with you.", $51
+	db "Let me get your", $4f
+	db "phone number.", $57
+; 0xa4d72
+
+UnknownText_0xa4d72: ; 0xa4d72
+	db $0, "Next time a boy", $4f
+	db "gives me something", $51
+	db "after a battle,", $4f
+	db "I'll share some!", $51
+	db "Does that make me", $4f
+	db "bad?", $57
+; 0xa4dcd
+
+UnknownText_0xa4dcd: ; 0xa4dcd
+	db $0, "Aww, you don't", $4f
+	db "want anything?", $51
+	db "But it's all for", $4f
+	db "free…", $57
+; 0xa4e01
+
+UnknownText_0xa4e01: ; 0xa4e01
+	db $0, "But your phone's", $4f
+	db "out of memory!", $57
+; 0xa4e21
+
+UnknownText_0xa4e21: ; 0xa4e21
+	db $0, "You're really", $4f
+	db "late!", $51
+	db "I'm eager to get", $4f
+	db "going!", $57
+; 0xa4e4c
+
+UnknownText_0xa4e4c: ; 0xa4e4c
+	db $0, "Hi! Are you here", $4f
+	db "for your gift?", $51
+	db "This should really", $4f
+	db "make your day!", $57
+; 0xa4e8f
+
+UnknownText_0xa4e8f: ; 0xa4e8f
+	db $0, "Where are you", $4f
+	db "going to put this?", $51
+	db "I'll keep it, so", $4f
+	db "come get it later!", $57
+; 0xa4ed4
+
+UnknownText_0xa4ed4: ; 0xa4ed4
+	db $0, "Huh? Is that thing", $4f
+	db "a #DEX? Have", $55
+	db "you met PROF.OAK?", $51
+	db "Huh? You have? ", $4f
+	db "That's way cool!", $51
+	db "I have a dream of", $4f
+	db "becoming a #MON", $51
+	db "researcher like", $4f
+	db "PROF.OAK.", $51
+	db "May I please have", $4f
+	db "your phone number?", $51
+	db "We should chat", $4f
+	db "about PROF.OAK.", $51
+	db "I'm sure it will", $4f
+	db "be loads of fun!", $57
+; 0xa4fc8
+
+UnknownText_0xa4fc8: ; 0xa4fc8
+	db $0, "May I please have", $4f
+	db "your phone number?", $51
+	db "We should chat", $4f
+	db "about PROF.OAK.", $51
+	db "I'm sure it will", $4f
+	db "be loads of fun!", $57
+; 0xa502e
+
+UnknownText_0xa502e: ; 0xa502e
+	db $0, "You must listen to", $4f
+	db "PROF.OAK'S #MON", $55
+	db "TALK, right?", $57
+; 0xa505f
+
+UnknownText_0xa505f: ; 0xa505f
+	db $0, "Oh… I wish I had a", $4f
+	db "chance to meet", $55
+	db "PROF.OAK…", $57
+; 0xa508c
+
+UnknownText_0xa508c: ; 0xa508c
+	db $0, "Your phone list is", $4f
+	db "completely full!", $57
+; 0xa50b1
+
+UnknownText_0xa50b1: ; 0xa50b1
+	db $0, "I've been waiting!", $4f
+	db "Let's battle now!", $57
+; 0xa50d5
+
+UnknownText_0xa50d5: ; 0xa50d5
+	db $0, "Oh, wow! PIKACHU!", $4f
+	db "It's so soft and", $55
+	db "furry! How cute!", $51
+	db "Let's be friends!", $4f
+	db "PIKACHU-lovers are", $55
+	db "never bad people!", $51
+	db "Let's chat about", $4f
+	db "PIKACHU!", $51
+	db "Can I get your", $4f
+	db "phone number?", $57
+; 0xa5175
+
+UnknownText_0xa5175: ; 0xa5175
+	db $0, "Let's chat about", $4f
+	db "PIKACHU!", $51
+	db "Can I get your", $4f
+	db "phone number?", $57
+; 0xa51ac
+
+UnknownText_0xa51ac: ; 0xa51ac
+	db $0, "PIKACHU is the", $4f
+	db "one! If anything", $51
+	db "comes up, I'll", $4f
+	db "give you a jingle.", $57
+; 0xa51ee
+
+UnknownText_0xa51ee: ; 0xa51ee
+	db $0, "You…", $51
+	db "I bet you don't", $4f
+	db "even like PIKACHU…", $57
+; 0xa5216
+
+UnknownText_0xa5216: ; 0xa5216
+	db $0, "Wait a sec! Your", $4f
+	db "phone list's full!", $57
+; 0xa523a
+
+UnknownText_0xa523a: ; 0xa523a
+	db $0, "I've been looking", $4f
+	db "for you! Here, see", $55
+	db "this? This is it!", $51
+	db "I'm certain your", $4f
+	db "PIKACHU will love", $55
+	db "my gift too!", $57
+; 0xa52a0
+
+UnknownText_0xa52a0: ; 0xa52a0
+	db $0, "Uh-oh, too bad.", $4f
+	db "You don't have any", $51
+	db "room. Be sure to", $4f
+	db "get it later.", $57
+; 0xa52e2
+
+UnknownText_0xa52e2: ; 0xa52e2
+	db $0, "Hey, you're trying", $4f
+	db "to be the ultimate", $51
+	db "trainer too? Then", $4f
+	db "we're comrades!", $51
+	db "If I find any more", $4f
+	db "items by the", $51
+	db "water, I'll give", $4f
+	db "you some.", $51
+	db "Just give me your", $4f
+	db "phone number.", $57
+; 0xa5383
+
+UnknownText_0xa5383: ; 0xa5383
+	db $0, "If I find any more", $4f
+	db "items by the", $51
+	db "water, I'll give", $4f
+	db "you some.", $51
+	db "Just give me your", $4f
+	db "phone number.", $57
+; 0xa53de
+
+UnknownText_0xa53de: ; 0xa53de
+	db $0, "You'll be hearing", $4f
+	db "from me if I find", $55
+	db "something good.", $57
+; 0xa5412
+
+UnknownText_0xa5412: ; 0xa5412
+	db $0, "Is that so? Then", $4f
+	db "I'll just have to", $55
+	db "use them myself.", $57
+; 0xa5446
+
+UnknownText_0xa5446: ; 0xa5446
+	db $0, "Your phone list is", $4f
+	db "all filled up.", $51
+	db "Come back if you", $4f
+	db "make room for me.", $57
+; 0xa548c
+
+UnknownText_0xa548c: ; 0xa548c
+	db $0, "I've been doing", $4f
+	db "more than just", $51
+	db "fishing since we", $4f
+	db "last met.", $51
+	db "You're in for a", $4f
+	db "big surprise!", $57
+; 0xa54e3
+
+UnknownText_0xa54e3: ; 0xa54e3
+	db $0, "Hey, there you", $4f
+	db "are!", $51
+	db "Here's a gift, as", $4f
+	db "promised!", $57
+; 0xa5513
+
+UnknownText_0xa5513: ; 0xa5513
+	db $0, "Your PACK's full?", $51
+	db "Come back later--", $4f
+	db "that'll do it.", $57
+; 0xa5545
+
+UnknownText_0xa5545: ; 0xa5545
+	db $0, "By the way, you're", $4f
+	db "a #MANIAC…", $51
+	db "I can tell.", $4f
+	db "Yes, you are.", $51
+	db "But your knowledge", $4f
+	db "is shallow still!", $51
+	db "Do you know BILL?", $4f
+	db "He's an incredible", $51
+	db "#MANIAC.", $4f
+	db "I revere him.", $51
+	db "I'll teach you all", $4f
+	db "I know about BILL,", $51
+	db "so leave me your", $4f
+	db "phone number.", $57
+; 0xa5621
+
+UnknownText_0xa5621: ; 0xa5621
+	db $0, "I'll teach you all", $4f
+	db "I know about BILL,", $51
+	db "so leave me your", $4f
+	db "phone number.", $57
+; 0xa5666
+
+UnknownText_0xa5666: ; 0xa5666
+	db $0, "BILL--he's more", $4f
+	db "than amazing!", $51
+	db "To be a #MANIAC", $4f
+	db "like him someday…", $51
+	db "That's my dream.", $57
+; 0xa56b6
+
+UnknownText_0xa56b6: ; 0xa56b6
+	db $0, "You're going to", $4f
+	db "regret it…", $51
+	db "And I won't care…", $57
+; 0xa56e2
+
+UnknownText_0xa56e2: ; 0xa56e2
+	db $0, "Huh? Your phone", $4f
+	db "list's full.", $51
+	db "A #MANIAC has", $4f
+	db "to be more tidy!", $57
+; 0xa571e
+
+UnknownText_0xa571e: ; 0xa571e
+	db $0, "I've been waiting.", $51
+	db "Look, check out my", $4f
+	db "#MON!", $57
+; 0xa574a
+
+UnknownText_0xa574a: ; 0xa574a
+	db $0, "Hi! You like", $4f
+	db "CLEFAIRY too?", $51
+	db "They're so very", $4f
+	db "cute, aren't they?", $51
+	db "I think we can be", $4f
+	db "good friends!", $51
+	db "I want to know", $4f
+	db "your phone number!", $51
+	db "Let's talk about", $4f
+	db "CLEFAIRY!", $57
+; 0xa57e3
+
+UnknownText_0xa57e3: ; 0xa57e3
+	db $0, "I want to know", $4f
+	db "your phone number!", $51
+	db "Let's talk about", $4f
+	db "CLEFAIRY!", $57
+; 0xa5820
+
+UnknownText_0xa5820: ; 0xa5820
+	db $0, "Isn't my CLEFAIRY", $4f
+	db "super-adorable?", $57
+; 0xa5842
+
+UnknownText_0xa5842: ; 0xa5842
+	db $0, "Aww… Oh well.", $4f
+	db "Look for me if you", $51
+	db "want to talk about", $4f
+	db "CLEFAIRY.", $57
+; 0xa5881
+
+UnknownText_0xa5881: ; 0xa5881
+	db $0, "Oh? Your phone", $4f
+	db "registry is full.", $57
+; 0xa58a3
+
+UnknownText_0xa58a3: ; 0xa58a3
+	db $0, "There you are!", $51
+	db "CLEFAIRY, I want", $4f
+	db "you to try hard!", $57
+; 0xa58d5
+
+UnknownText_0xa58d5: ; 0xa58d5
+	db $0, "You took a long", $4f
+	db "time. See this?", $51
+	db "Isn't it cute?", $4f
+	db "It's a PINK BOW.", $57
+; 0xa5914
+
+UnknownText_0xa5914: ; 0xa5914
+	db $0, "Uh-oh. Your PACK", $4f
+	db "is crammed full.", $57
+; 0xa5937
+
+UnknownText_0xa5937: ; 0xa5937
+	db $0, "You know, you are", $4f
+	db "really strong.", $51
+	db "But I don't want", $4f
+	db "to just slink off…", $51
+	db "I know! Could I", $4f
+	db "get your number?", $51
+	db "Let's meet up for", $4f
+	db "more battles!", $57
+; 0xa59bc
+
+UnknownText_0xa59bc: ; 0xa59bc
+	db $0, "I want to battle", $4f
+	db "tough trainers as", $55
+	db "often as I can!", $51
+	db "Could I get your", $4f
+	db "number?", $51
+	db "Let's meet up for", $4f
+	db "more battles!", $57
+; 0xa5a28
+
+UnknownText_0xa5a28: ; 0xa5a28
+	db $0, "Don't forget to", $4f
+	db "come see me when I", $55
+	db "challenge you!", $57
+; 0xa5a5a
+
+UnknownText_0xa5a5a: ; 0xa5a5a
+	db $0, "A bird-user friend", $4f
+	db "isn't a bad thing", $55
+	db "to have, I think…", $51
+	db "Won't you", $4f
+	db "reconsider?", $57
+; 0xa5aa6
+
+UnknownText_0xa5aa6: ; 0xa5aa6
+	db $0, "Your phone's out", $4f
+	db "of memory. Delete", $55
+	db "a number for me!", $57
+; 0xa5ada
+
+UnknownText_0xa5ada: ; 0xa5ada
+	db $0, "Am I happy to see", $4f
+	db "you! I won't lose!", $57
+; 0xa5aff
+
+UnknownText_0xa5aff: ; 0xa5aff
+	db $0, "Oh, too bad. You", $4f
+	db "don't have room.", $51
+	db "I'll give it to", $4f
+	db "you next time!", $57
+; 0xa5b3f
+
+UnknownText_0xa5b3f: ; 0xa5b3f
+	db $0, "You are really,", $4f
+	db "really strong!", $51
+	db "Thanks for taking", $4f
+	db "me on so often--I", $51
+	db "learned a whole", $4f
+	db "lot from you.", $51
+	db "I know! This will", $4f
+	db "do as my thanks!", $57
+; 0xa5bc4
+
+UnknownText_0xa5bc4: ; 0xa5bc4
+	db $0, "Eh, our battle was", $4f
+	db "fun, I'd say…", $51
+	db "When I'm fishing,", $4f
+	db "I sometimes snag", $51
+	db "items that people", $4f
+	db "have dropped.", $51
+	db "Do you want them?", $4f
+	db "What's the number?", $57
+; 0xa5c4b
+
+UnknownText_0xa5c4b: ; 0xa5c4b
+	db $0, "If I snag an item", $4f
+	db "while I'm fishing,", $51
+	db "it's yours. What's", $4f
+	db "your number?", $57
+; 0xa5c8e
+
+UnknownText_0xa5c8e: ; 0xa5c8e
+	db $0, "If I snag anything", $4f
+	db "good, I'll be sure", $55
+	db "to let you know.", $57
+; 0xa5cc5
+
+UnknownText_0xa5cc5: ; 0xa5cc5
+	db $0, "All right… Come", $4f
+	db "back if you have a", $55
+	db "change of heart.", $57
+; 0xa5cfa
+
+UnknownText_0xa5cfa: ; 0xa5cfa
+	db $0, "You can't register", $4f
+	db "another number.", $57
+; 0xa5d1d
+
+UnknownText_0xa5d1d: ; 0xa5d1d
+	db $0, "Argh! You startled", $4f
+	db "POLIWAG into", $55
+	db "fleeing again!", $57
+; 0xa5d4d
+
+UnknownText_0xa5d4d: ; 0xa5d4d
+	db $0, "So here you are.", $51
+	db "See this?", $4f
+	db "I snagged it just", $51
+	db "a little while", $4f
+	db "ago. It's yours.", $57
+; 0xa5d9a
+
+UnknownText_0xa5d9a: ; 0xa5d9a
+	db $0, "Your PACK's full?", $51
+	db "I'll give it to", $4f
+	db "you later.", $57
+; 0xa5dc6
+
+UnknownText_0xa5dc6: ; 0xa5dc6
+	db $0, "Our battle was", $4f
+	db "remarkable!", $51
+	db "I wish for some-", $4f
+	db "thing to remember", $55
+	db "you by!", $51
+	db "Perhaps your phone", $4f
+	db "number will do?", $51
+	db "My training makes", $4f
+	db "it impossible to", $55
+	db "chat much, but…", $57
+; 0xa5e63
+
+UnknownText_0xa5e63: ; 0xa5e63
+	db $0, "My training makes", $4f
+	db "chatting tough,", $51
+	db "but will you take", $4f
+	db "down my number?", $57
+; 0xa5ea8
+
+UnknownText_0xa5ea8: ; 0xa5ea8
+	db $0, "I must train", $4f
+	db "harder to become", $55
+	db "the mightiest!", $57
+; 0xa5ed6
+
+UnknownText_0xa5ed6: ; 0xa5ed6
+	db $0, "If you decide you", $4f
+	db "want my number,", $55
+	db "come see me.", $57
+; 0xa5f06
+
+UnknownText_0xa5f06: ; 0xa5f06
+	db $0, "Your phone appears", $4f
+	db "to be full.", $51
+	db "Come back later!", $57
+; 0xa5f37
+
+UnknownText_0xa5f37: ; 0xa5f37
+	db $0, "I wish to thank", $4f
+	db "you, ", $52, "!", $51
+	db "I've been training", $4f
+	db "all alone…", $51
+	db "I was happy that", $4f
+	db "you cared to call…", $51
+	db "I want you to have", $4f
+	db "this!", $57
+; 0xa5faa
+
+UnknownText_0xa5faa: ; 0xa5faa
+	db $0, "Your strength will", $4f
+	db "not let you carry", $51
+	db "another thing!", $4f
+	db "I will hold this", $51
+	db "till you lighten", $4f
+	db "your PACK!", $57
+; 0xa600c
+
+UnknownText_0xa600c: ; 0xa600c
+	db $0, "Sheesh, the way", $4f
+	db "you attacked! That", $51
+	db "was something! We", $4f
+	db "should meet again!", $51
+	db "How about giving", $4f
+	db "me your number?", $57
+; 0xa6076
+
+UnknownText_0xa6076: ; 0xa6076
+	db $0, "So you want to", $4f
+	db "register my phone", $51
+	db "number for a re-", $4f
+	db "match, huh?", $57
+; 0xa60b5
+
+UnknownText_0xa60b5: ; 0xa60b5
+	db $0, "I'll call you", $4f
+	db "whenever I feel", $55
+	db "like battling!", $57
+; 0xa60e2
+
+UnknownText_0xa60e2: ; 0xa60e2
+	db $0, "No? That's fine.", $51
+	db "A definite no is", $4f
+	db "easy to take!", $51
+	db "I'll be right here", $4f
+	db "when you're ready", $55
+	db "for a rematch.", $57
+; 0xa6144
+
+UnknownText_0xa6144: ; 0xa6144
+	db $0, "Oh? There's no", $4f
+	db "room to register", $55
+	db "my phone number.", $57
+; 0xa6175
+
+UnknownText_0xa6175: ; 0xa6175
+	db $0, "Hey, here comes", $4f
+	db "the kid! Let's go!", $51
+	db "Ready for my usual", $4f
+	db "no-brainer, all-", $55
+	db "out offense?", $57
+; 0xa61c9
+
+UnknownText_0xa61c9: ; 0xa61c9
+	db $0, "Your PACK looks", $4f
+	db "stuffed full!", $51
+	db "You can't have", $4f
+	db "this now.", $57
+; 0xa6200
+
+UnknownText_0xa6200: ; 0xa6200
+	db $0, "Well, you're", $4f
+	db "special all right.", $51
+	db "If only I'd begun", $4f
+	db "#MON when I was", $55
+	db "a tad younger…", $51
+	db "I want you to work", $4f
+	db "and succeed for", $51
+	db "the both of us.", $4f
+	db "So take this, OK?", $57
+; 0xa6295
+
+UnknownText_0xa6295: ; 0xa6295
+	db $0, "It really made me", $4f
+	db "angry to lose.", $51
+	db "I'll have to train", $4f
+	db "much harder…", $51
+	db "Here's my number.", $4f
+	db "I'm ERIN--don't", $51
+	db "forget! Want to", $4f
+	db "battle me again?", $57
+; 0xa6316
+
+UnknownText_0xa6316: ; 0xa6316
+	db $0, "I want to battle", $4f
+	db "with you again.", $51
+	db "Do you want to", $4f
+	db "exchange numbers?", $57
+; 0xa6359
+
+UnknownText_0xa6359: ; 0xa6359
+	db $0, "I'll remember to", $4f
+	db "call when I want", $55
+	db "to battle again!", $57
+; 0xa638c
+
+UnknownText_0xa638c: ; 0xa638c
+	db $0, "Oh… I'm sad…", $4f
+	db "If you do want to", $51
+	db "battle, come see", $4f
+	db "ERIN--that's me!", $57
+; 0xa63cc
+
+UnknownText_0xa63cc: ; 0xa63cc
+	db $0, "Oh no. Your phone", $4f
+	db "is all filled up.", $57
+; 0xa63f1
+
+UnknownText_0xa63f1: ; 0xa63f1
+	db $0, "Yay! I waited!", $4f
+	db "Let's start now!", $57
+; 0xa6411
+
+UnknownText_0xa6411: ; 0xa6411
+	db $0, "That's too bad!", $4f
+	db "You have no room…", $51
+	db "I'll give it to", $4f
+	db "you another time.", $57
+; 0xa6454
+
+UnknownText_0xa6454: ; 0xa6454
+	db $0, "Aww… I lost again!", $51
+	db "I wonder how many", $4f
+	db "times that is…", $51
+	db "Thanks for coming!", $4f
+	db "Here's a present!", $57
+; 0xa64ad
--- /dev/null
+++ b/text/phone/extra3.asm
@@ -1,0 +1,1474 @@
+
+UnknownText_0x174000: ; 0x174000
+	db $0, "Hi, ", $14, "!", $4f
+	db "Our BICYCLE sales", $51
+	db "have gone through", $4f
+	db "the roof!", $51
+	db "We owe it all to", $4f
+	db "your advertising", $51
+	db "by riding around", $4f
+	db "on our BICYCLE.", $51
+	db "As our way of say-", $4f
+	db "ing thanks, please", $51
+	db "keep that BICYCLE.", $4f
+	db "Thanks again!", $57
+; 0x1740c0
+
+UnknownText_0x1740c0: ; 0x1740c0
+	db $0, "My @"
+	text_from_ram $d0ac
+	db $0, "'s", $4f
+	db "intelligence keeps", $51
+	db "rising. It might", $4f
+	db "be smarter than", $55
+	db "yours!", $57
+; 0x174106
+
+UnknownText_0x174106: ; 0x174106
+	db $0, "The other day, I", $4f
+	db "easily defeated a", $55
+	db "@"
+	text_from_ram $d0ac
+	db $0, ".", $51
+	db "I think swapping", $4f
+	db "tips with you is", $55
+	db "starting to help.", $57
+; 0x174165
+
+UnknownText_0x174165: ; 0x174165
+	db $0, "Oh, and listen.", $4f
+	db "I missed catching", $51
+	db "a @"
+	text_from_ram $d0ac
+	db $0, " by", $4f
+	db "just a tiny bit.", $51
+	db "If I'd been a bit", $4f
+	db "more informed, I'm", $51
+	db "sure I would've", $4f
+	db "caught it…", $57
+; 0x1741e1
+
+UnknownText_0x1741e1: ; 0x1741e1
+	db $0, "Do you want to", $4f
+	db "battle? I'll show", $51
+	db "you how to battle", $4f
+	db "logically.", $51
+	db "I'll be in", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, ".", $51
+	db "Give me a shout if", $4f
+	db "you're nearby.", $57
+; 0x174251
+
+UnknownText_0x174251: ; 0x174251
+	db $0, "See you later!", $57
+; 0x174261
+
+UnknownText_0x174261: ; 0x174261
+	db $0, "Did you know?", $51
+	db "When it's raining,", $4f
+	db "THUNDER is sure to", $55
+	db "strike.", $57
+; 0x17429d
+
+UnknownText_0x17429d: ; 0x17429d
+	db $0, "Did you know…?", $51
+	db "If you use DEFENSE", $4f
+	db "CURL, ROLLOUT's", $51
+	db "power goes way up", $4f
+	db "past normal.", $57
+; 0x1742ee
+
+UnknownText_0x1742ee: ; 0x1742ee
+	db $0, "Did you know…?", $51
+	db "If the sunlight is", $4f
+	db "harsh, SOLARBEAM", $51
+	db "doesn't need to be", $4f
+	db "charged up.", $57
+; 0x174340
+
+UnknownText_0x174340: ; 0x174340
+	db $0, "Did you know…?", $51
+	db "If the opponent", $4f
+	db "uses MINIMIZE,", $51
+	db "your STOMP becomes", $4f
+	db "more powerful.", $57
+; 0x174391
+
+UnknownText_0x174391: ; 0x174391
+	db $0, "Did you know…?", $51
+	db "If your opponent", $4f
+	db "is FLYing, your", $51
+	db "GUST becomes much", $4f
+	db "more powerful.", $57
+; 0x1743e3
+
+UnknownText_0x1743e3: ; 0x1743e3
+	db $0, "Did you know…?", $51
+	db "If your opponent", $4f
+	db "is FLYing, your", $51
+	db "TWISTER becomes", $4f
+	db "more powerful.", $57
+; 0x174433
+
+UnknownText_0x174433: ; 0x174433
+	db $0, "Did you know…?", $51
+	db "If your opponent", $4f
+	db "uses DIG, your", $51
+	db "EARTHQUAKE becomes", $4f
+	db "more powerful.", $57
+; 0x174485
+
+UnknownText_0x174485: ; 0x174485
+	db $0, "Did you know…?", $51
+	db "If your opponent", $4f
+	db "uses DIG, your", $51
+	db "MAGNITUDE becomes", $4f
+	db "more powerful.", $57
+; 0x1744d6
+
+UnknownText_0x1744d6: ; 0x1744d6
+	db $0, "Did you know…?", $51
+	db "The rock, ground", $4f
+	db "and steel types", $51
+	db "can't be hurt by", $4f
+	db "SANDSTORM.", $57
+; 0x174522
+
+UnknownText_0x174522: ; 0x174522
+	db $0, "Did you know…?", $51
+	db "If the sunlight is", $4f
+	db "harsh, water-type", $51
+	db "moves become much", $4f
+	db "weaker.", $57
+; 0x174571
+
+UnknownText_0x174571: ; 0x174571
+	db $0, "Did you know…?", $51
+	db "When it's raining,", $4f
+	db "fire-type moves", $51
+	db "become much weaker", $4f
+	db "than usual.", $57
+; 0x1745c2
+
+UnknownText_0x1745c2: ; 0x1745c2
+	db $0, "My friend heard", $4f
+	db "some great tips.", $51
+	db "He's going to let", $4f
+	db "me in on some.", $51
+	db "When he tells me,", $4f
+	db "I'll call right", $55
+	db "away and tell you.", $57
+; 0x174638
+
+UnknownText_0x174638: ; 0x174638
+	db $0, "Hey, ", $14, "!", $51
+	db "Do you remember", $4f
+	db "your promise?", $51
+	db "We have to battle", $4f
+	db "soon!", $51
+	db "I'll be at", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, ".", $57
+; 0x174688
+
+UnknownText_0x174688: ; 0x174688
+	db $0, "I fancied up my", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, " and", $51
+	db "made it even cuter", $4f
+	db "than before!", $57
+; 0x1746c3
+
+UnknownText_0x1746c3: ; 0x1746c3
+	db $0, "I happened to come", $4f
+	db "across a wild", $55
+	db "SNUBBULL recently.", $51
+	db "My SNUBBULL, I", $4f
+	db "assure you, was", $51
+	db "far cuter than the", $4f
+	db "wild one.", $57
+; 0x174734
+
+UnknownText_0x174734: ; 0x174734
+	db $0, "I happened to see", $4f
+	db "a wild MARILL the", $51
+	db "other day.", $4f
+	db "Or so I thought.", $51
+	db "A closer look", $4f
+	db "showed it was", $51
+	db "@"
+	text_from_ram $d0ac
+	db $0, ". I was", $4f
+	db "quite miffed.", $57
+; 0x1747ac
+
+UnknownText_0x1747ac: ; 0x1747ac
+	db $0, "You can expect a", $4f
+	db "call from me.", $57
+; 0x1747cc
+
+UnknownText_0x1747cc: ; 0x1747cc
+	db $0, "My husband got", $4f
+	db "some NUGGETS.", $51
+	db "If you'd like, you", $4f
+	db "could have one as", $51
+	db "thanks for helping", $4f
+	db "me out.", $51
+	db "I'll be at", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, ".", $51
+	db "Please come see me", $4f
+	db "when you can.", $57
+; 0x17485b
+
+UnknownText_0x17485b: ; 0x17485b
+	db $0, "Are your #MON", $4f
+	db "in prime form?", $51
+	db "Let's chat about", $4f
+	db "#MON again.", $57
+; 0x174895
+
+UnknownText_0x174895: ; 0x174895
+	db $0, "Pardon?", $4f
+	db "Oh, the NUGGET?", $51
+	db "There's no need to", $4f
+	db "hurry. Come see me", $51
+	db "in @"
+	text_from_ram $d0bf
+	db $0, $4f
+	db "when you can.", $57
+; 0x1748ea
+
+UnknownText_0x1748ea: ; 0x1748ea
+	db $0, "Hey, I challenge", $4f
+	db "you to a battle!", $51
+	db "It won't be like", $4f
+	db "last time!", $51
+	db "@"
+	text_from_ram $d0bf
+	db $0, "'s", $4f
+	db "where I'm waiting", $51
+	db "for you. Hustle", $4f
+	db "over here pronto!", $57
+; 0x174962
+
+UnknownText_0x174962: ; 0x174962
+	db $0, "See ya!", $57
+; 0x17496b
+
+UnknownText_0x17496b: ; 0x17496b
+	db $0, "We have to battle", $4f
+	db "again sometime.", $51
+	db "You can bet I'm", $4f
+	db "going to keep", $51
+	db "challenging you", $4f
+	db "till I win.", $57
+; 0x1749c7
+
+UnknownText_0x1749c7: ; 0x1749c7
+	db $0, "Hey, you'd better", $4f
+	db "not have forgotten", $55
+	db "about our battle!", $51
+	db "@"
+	text_from_ram $d0bf
+	db $0, "!", $51
+	db "Hustle over quick!", $4f
+	db "I'm waiting!", $57
+; 0x174a24
+
+UnknownText_0x174a24: ; 0x174a24
+	db $0, "My @"
+	text_from_ram $d0ac
+	db $0, $4f
+	db "might be greater", $55
+	db "than I imagined.", $51
+	db "I doubt I'll see a", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, " that's", $55
+	db "better than mine.", $57
+; 0x174a80
+
+UnknownText_0x174a80: ; 0x174a80
+	db $0, "Oh, and I managed", $4f
+	db "to barely defeat", $51
+	db "@"
+	text_from_ram $d0ac
+	db $0, " the", $4f
+	db "other day.", $51
+	db "I've never seen a", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, " get", $55
+	db "that strong…", $51
+	db "You shouldn't let", $4f
+	db "your guard down,", $51
+	db "even against a", $4f
+	db "#MON you're", $55
+	db "used to seeing.", $57
+; 0x174b2d
+
+UnknownText_0x174b2d: ; 0x174b2d
+	db $0, "And a while back,", $4f
+	db "I tried to catch a", $55
+	db "wild @"
+	text_from_ram $d0ac
+	db $0, ".", $51
+	db "But it managed to", $4f
+	db "elude me.", $51
+	db "One wrong decision", $4f
+	db "could mean total", $51
+	db "failure… You ought", $4f
+	db "to be careful too.", $57
+; 0x174bc5
+
+UnknownText_0x174bc5: ; 0x174bc5
+	db $0, "Let's battle!", $51
+	db "I'll be waiting on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, ".", $51
+	db "Give me a shout", $4f
+	db "when you're close.", $57
+; 0x174c0e
+
+UnknownText_0x174c0e: ; 0x174c0e
+	db $0, "OK, I'll talk to", $4f
+	db "you soon!", $57
+; 0x174c29
+
+UnknownText_0x174c29: ; 0x174c29
+	db $0, "I obsess over how", $4f
+	db "to beat you.", $57
+; 0x174c49
+
+UnknownText_0x174c49: ; 0x174c49
+	db $0, $14, ", why", $4f
+	db "aren't you here?", $51
+	db "I'll take you down", $4f
+	db "with @"
+	text_from_ram $d0bf
+	db $0, "!", $57
+; 0x174c7f
+
+UnknownText_0x174c7f: ; 0x174c7f
+	db $0, "Do you remember my", $4f
+	db "sweet @"
+	text_from_ram $d0ac
+	db $0, "?", $51
+	db "@"
+	text_from_ram $d0ac
+	db $0, " runs", $4f
+	db "very fast.", $51
+	db "It's exhilarating", $4f
+	db "to ride on its", $51
+	db "back when it", $4f
+	db "really gets going.", $57
+; 0x174cf6
+
+UnknownText_0x174cf6: ; 0x174cf6
+	db $0, "Oh, have you ever", $4f
+	db "seen a @"
+	text_from_ram $d0ac
+	db $0, $55
+	db "before?", $51
+	db "I just battled", $4f
+	db "one…", $51
+	db "It was much faster", $4f
+	db "than I expected.", $51
+	db "I was a little", $4f
+	db "shocked.", $51
+	db "I still won, of", $4f
+	db "course.", $57
+; 0x174d86
+
+UnknownText_0x174d86: ; 0x174d86
+	db $0, "Oh, I just saw a", $4f
+	db "wild @"
+	text_from_ram $d0ac
+	db $0, ".", $51
+	db "I was trying to", $4f
+	db "catch it when I", $51
+	db "noticed that I was", $4f
+	db "all out of #", $55
+	db "BALLS.", $51
+	db "If you don't check", $4f
+	db "your items, you", $51
+	db "may run out at the", $4f
+	db "worst time.", $51
+	db "I hope you learn", $4f
+	db "from my mistake.", $57
+; 0x174e4e
+
+UnknownText_0x174e4e: ; 0x174e4e
+	db $0, "Do you want to", $4f
+	db "battle? I'm going", $55
+	db "to win this time!", $51
+	db "I'll be waiting", $4f
+	db "for you around", $51
+	db "@"
+	text_from_ram $d0bf
+	db $0, ".", $4f
+	db "Look for me, OK?", $57
+; 0x174eb7
+
+UnknownText_0x174eb7: ; 0x174eb7
+	db $0, "OK, bye-bye!", $57
+; 0x174ec5
+
+UnknownText_0x174ec5: ; 0x174ec5
+	db $0, "Let's battle again", $4f
+	db "sometime!", $57
+; 0x174ee2
+
+UnknownText_0x174ee2: ; 0x174ee2
+	db $0, "Um… ", $14, "?", $4f
+	db "What's wrong?", $51
+	db "Did you forget our", $4f
+	db "deal?", $51
+	db "@"
+	text_from_ram $d0bf
+	db $0, ".", $51
+	db "That's where I'm", $4f
+	db "waiting.", $57
+; 0x174f2f
+
+UnknownText_0x174f2f: ; 0x174f2f
+	db $0, "Hey listen, my", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, "'s stick", $51
+	db "has this really", $4f
+	db "delicious aroma.", $51
+	db "That aroma gets my", $4f
+	db "appetite going!", $57
+; 0x174f90
+
+UnknownText_0x174f90: ; 0x174f90
+	db $0, "A while ago, my", $4f
+	db "FARFETCH'D KO'd", $55
+	db "this @"
+	text_from_ram $d0ac
+	db $0, ".", $51
+	db "You should have", $4f
+	db "seen FARFETCH'D", $51
+	db "wield that stick.", $4f
+	db "Amazing stuff!", $57
+; 0x174ffd
+
+UnknownText_0x174ffd: ; 0x174ffd
+	db $0, "I ran into a wild", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, "…", $51
+	db "I was trying to", $4f
+	db "catch it, but it", $51
+	db "took off faster", $4f
+	db "than I thought it", $51
+	db "would. It was a", $4f
+	db "bit disappointing.", $57
+; 0x17507d
+
+UnknownText_0x17507d: ; 0x17507d
+	db $0, "Want to battle", $4f
+	db "again?", $51
+	db "For some reason,", $4f
+	db "my FARFETCH'D is", $51
+	db "all worked up and", $4f
+	db "raring to go.", $51
+	db "@"
+	text_from_ram $d0bf
+	db $0, "'s", $4f
+	db "where I'm at.", $51
+	db "Keep an eye out", $4f
+	db "for me, OK?", $57
+; 0x175106
+
+UnknownText_0x175106: ; 0x175106
+	db $0, "Be seeing you!", $57
+; 0x175116
+
+UnknownText_0x175116: ; 0x175116
+	db $0, "My FARFETCH'D had", $4f
+	db "something pretty", $55
+	db "in its beak.", $51
+	db "Like I promised,", $4f
+	db "you can have it.", $51
+	db "Catch up to me on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, ",", $51
+	db "and I'll let you", $4f
+	db "have it.", $57
+; 0x17519b
+
+UnknownText_0x17519b: ; 0x17519b
+	db $0, "I haven't gotten", $4f
+	db "what I promised", $55
+	db "you yet.", $51
+	db "I'll call you as", $4f
+	db "soon as I get it,", $51
+	db "so could you wait", $4f
+	db "a little longer?", $57
+; 0x17520a
+
+UnknownText_0x17520a: ; 0x17520a
+	db $0, $14, ", could you", $4f
+	db "hurry over?", $51
+	db "FARFETCH'D is", $4f
+	db "agitated.", $51
+	db "If you don't come", $4f
+	db "soon, it might", $51
+	db "smack me with its", $4f
+	db "stick!", $51
+	db "@"
+	text_from_ram $d0bf
+	db $0, "!", $51
+	db "Please come as", $4f
+	db "soon as you can!", $57
+; 0x17529c
+
+UnknownText_0x17529c: ; 0x17529c
+	db $0, "What's wrong?", $51
+	db "Don't you want", $4f
+	db "this gift?", $51
+	db "Catch up to me on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, ",", $51
+	db "and I'll let you", $4f
+	db "have it.", $57
+; 0x1752f5
+
+UnknownText_0x1752f5: ; 0x1752f5
+	db $0, "Listen, dear…", $51
+	db "Do you recall my", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, "?", $51
+	db "Yes, exactly. That", $4f
+	db "lovely @"
+	text_from_ram $d0ac
+	db $0, ".", $51
+	db "Wouldn't you agree", $4f
+	db "it's a perfect", $55
+	db "match for me?", $57
+; 0x17536b
+
+UnknownText_0x17536b: ; 0x17536b
+	db $0, "Have I ever faced", $4f
+	db "a wild @"
+	text_from_ram $d0ac
+	db $0, "?", $51
+	db "You need to ask?", $51
+	db "@"
+	text_from_ram $d0ac
+	db $0, " I've", $4f
+	db "beaten on numerous", $55
+	db "occasions!", $57
+; 0x1753c5
+
+UnknownText_0x1753c5: ; 0x1753c5
+	db $0, "Have I ever failed", $4f
+	db "to catch a wild", $55
+	db "#MON?", $51
+	db "You need to ask?", $51
+	db "I would never fail", $4f
+	db "to catch a wild", $51
+	db "@"
+	text_from_ram $d0ac
+	db $0, "…", $4f
+	db "Oh! Never mind!", $57
+; 0x17543a
+
+UnknownText_0x17543a: ; 0x17543a
+	db $0, "We are going to", $4f
+	db "battle!", $51
+	db "The place shall be", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, "!", $51
+	db "Don't make me", $4f
+	db "wait! Got it?", $57
+; 0x175488
+
+UnknownText_0x175488: ; 0x175488
+	db $0, "Fine, you may go.", $57
+; 0x17549b
+
+UnknownText_0x17549b: ; 0x17549b
+	db $0, "Don't be too proud", $4f
+	db "just because you", $51
+	db "happened to beat", $4f
+	db "me… ", $51
+	db "It was a fluke!", $57
+; 0x1754e5
+
+UnknownText_0x1754e5: ; 0x1754e5
+	db $0, "What are you", $4f
+	db "doing?", $51
+	db "I told you that", $4f
+	db "the place was", $51
+	db "@"
+	text_from_ram $d0bf
+	db $0, "!", $4f
+	db "Don't try to run!", $57
+; 0x175530
+
+UnknownText_0x175530: ; 0x175530
+	db $0, "My @"
+	text_from_ram $d0ac
+	db $0, "'s", $4f
+	db "looking sharper", $55
+	db "than before!", $51
+	db "I doubt there's a", $4f
+	db "#MON as cool as", $51
+	db "this guy in your", $4f
+	db "party!", $57
+; 0x175591
+
+UnknownText_0x175591: ; 0x175591
+	db $0, "Oh yeah, I took", $4f
+	db "down a @"
+	text_from_ram $d0ac
+	db $0, $51
+	db "in the wild the", $4f
+	db "other day.", $51
+	db "It was a cakewalk.", $4f
+	db "Well, I guess it", $51
+	db "can't be helped,", $4f
+	db "us being so tough.", $57
+; 0x175611
+
+UnknownText_0x175611: ; 0x175611
+	db $0, "Oh yeah, I saw a", $4f
+	db "wild @"
+	text_from_ram $d0ac
+	db $0, "!", $51
+	db "I thought about", $4f
+	db "going for it, but", $51
+	db "I decided to work", $4f
+	db "with my one-and-", $51
+	db "only right to the", $4f
+	db "extreme end.", $57
+; 0x175693
+
+UnknownText_0x175693: ; 0x175693
+	db $0, "Let's get together", $4f
+	db "and battle!", $51
+	db "I promise things", $4f
+	db "will be different!", $51
+	db "@"
+	text_from_ram $d0bf
+	db $0, "'s", $4f
+	db "where I'll be.", $51
+	db "Give me a shout", $4f
+	db "when you come.", $57
+; 0x17570a
+
+UnknownText_0x17570a: ; 0x17570a
+	db $0, "All right. Later!", $57
+; 0x17571d
+
+UnknownText_0x17571d: ; 0x17571d
+	db $0, "I'm checking out", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, "'s moves", $51
+	db "and devising some", $4f
+	db "strategies.", $51
+	db "When I come up", $4f
+	db "with a good one,", $55
+	db "let's battle!", $57
+; 0x175786
+
+UnknownText_0x175786: ; 0x175786
+	db $0, "What's keeping", $4f
+	db "you, ", $52, "!", $51
+	db "Let's get down and", $4f
+	db "battle already!", $51
+	db "I'm waiting on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, "!", $57
+; 0x1757d4
+
+UnknownText_0x1757d4: ; 0x1757d4
+	db $0, "Are your #MON", $4f
+	db "growing?", $51
+	db "My #MON are", $4f
+	db "growing a bit too", $51
+	db "quickly for me.", $4f
+	db "It's overwhelming!", $51
+	db "@"
+	text_from_ram $d0ac
+	db $0, "'s grow-", $4f
+	db "ing especially", $51
+	db "quickly. I think", $4f
+	db "it'll get tough.", $57
+; 0x175869
+
+UnknownText_0x175869: ; 0x175869
+	db $0, "Oh yeah, we KO'd a", $4f
+	db "wild @"
+	text_from_ram $d0ac
+	db $0, $51
+	db "with one hit a", $4f
+	db "while back.", $51
+	db "It went down so", $4f
+	db "easily, I felt a", $51
+	db "little sorry for", $4f
+	db "the poor thing.", $57
+; 0x1758e4
+
+UnknownText_0x1758e4: ; 0x1758e4
+	db $0, "Oh yeah, a wild", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, " got", $51
+	db "away from me at", $4f
+	db "the last second.", $51
+	db "I know it's a", $4f
+	db "common #MON…", $51
+	db "But it does annoy", $4f
+	db "me that it got", $51
+	db "away when I almost", $4f
+	db "had it.", $57
+; 0x175976
+
+UnknownText_0x175976: ; 0x175976
+	db $0, "Do you feel like a", $4f
+	db "#MON battle?", $51
+	db "It won't be like", $4f
+	db "last time!", $51
+	db "@"
+	text_from_ram $d0bf
+	db $0, "'s", $4f
+	db "where I'll be.", $51
+	db "Let me know when", $4f
+	db "you get there.", $57
+; 0x1759e7
+
+UnknownText_0x1759e7: ; 0x1759e7
+	db $0, "See you later!", $57
+; 0x1759f7
+
+UnknownText_0x1759f7: ; 0x1759f7
+	db $0, "The Bug-Catching", $4f
+	db "Contest is at the", $51
+	db "NATIONAL PARK", $4f
+	db "today.", $51
+	db "Are you going,", $4f
+	db $14, "?", $51
+	db "I'm trying to make", $4f
+	db "up my mind.", $57
+; 0x175a60
+
+UnknownText_0x175a60: ; 0x175a60
+	db $0, "I found all kinds", $4f
+	db "of BERRIES. If you", $51
+	db "want, I'll share", $4f
+	db "some with you.", $51
+	db "I'll be waiting on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, ".", $57
+; 0x175abe
+
+UnknownText_0x175abe: ; 0x175abe
+	db $0, "Huh? BERRIES?", $51
+	db "Sorry, I haven't", $4f
+	db "found any yet.", $51
+	db "I'll call you if I", $4f
+	db "find any. Will you", $55
+	db "please wait?", $57
+; 0x175b1e
+
+UnknownText_0x175b1e: ; 0x175b1e
+	db $0, "Let's battle", $4f
+	db "already!", $51
+	db "@"
+	text_from_ram $d0bf
+	db $0, " is", $4f
+	db "where I am.", $51
+	db "Please get here as", $4f
+	db "soon as you can!", $57
+; 0x175b6d
+
+UnknownText_0x175b6d: ; 0x175b6d
+	db $0, "How come you're", $4f
+	db "not here yet?", $51
+	db "@"
+	text_from_ram $d0bf
+	db $0, " is", $4f
+	db "where I am.", $51
+	db "Please get here as", $4f
+	db "soon as you can!", $57
+; 0x175bc4
+
+UnknownText_0x175bc4: ; 0x175bc4
+	db $0, "I've been spending", $4f
+	db "more time with my", $51
+	db "@"
+	text_from_ram $d0ac
+	db $0, " than I", $4f
+	db "have with my kids.", $51
+	db "That's a bit sad,", $4f
+	db "actually.", $57
+; 0x175c24
+
+UnknownText_0x175c24: ; 0x175c24
+	db $0, "I just beat a wild", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, ".", $51
+	db "I told my kid, but", $4f
+	db "he scoffed that he", $51
+	db "could do the same", $4f
+	db "thing easily.", $51
+	db "Boy, has he gotten", $4f
+	db "cocky…", $57
+; 0x175c9f
+
+UnknownText_0x175c9f: ; 0x175c9f
+	db $0, "Yesterday a wild", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, " slipped", $51
+	db "away from me, in", $4f
+	db "front of my kid.", $51
+	db "I was feeling down", $4f
+	db "about it until he", $51
+	db "shared his #", $4f
+	db "BALLS with me.", $51
+	db "Hahah, that sure", $4f
+	db "made my day!", $57
+; 0x175d40
+
+UnknownText_0x175d40: ; 0x175d40
+	db $0, "What do you say to", $4f
+	db "a battle with me?", $51
+	db "Good, you're going", $4f
+	db "to do it!", $51
+	db "For a kid, you're", $4f
+	db "quite agreeable.", $51
+	db "@"
+	text_from_ram $d0bf
+	db $0, " is", $4f
+	db "the spot!", $57
+; 0x175db7
+
+UnknownText_0x175db7: ; 0x175db7
+	db $0, "You call your mom", $4f
+	db "sometimes too!", $57
+; 0x175dd9
+
+UnknownText_0x175dd9: ; 0x175dd9
+	db $0, "Listen, I… Yowch!", $51
+	db "Uh, sorry! See,", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, " are", $51
+	db "biting like there", $4f
+	db "is no tomorrow", $51
+	db "over here on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, "!", $51
+	db "Aiyee! Ouch!", $4f
+	db "One jabbed me!", $51
+	db "Heh, they're some", $4f
+	db "kind of feisty!", $51
+	db $14, ", you have", $4f
+	db "to see this rare", $51
+	db "sight! Get ready", $4f
+	db "to fish!", $57
+; 0x175eaf
+
+UnknownText_0x175eaf: ; 0x175eaf
+	db $0, "Yeah, I know.", $51
+	db "You're looking for", $4f
+	db "rare #MON.", $51
+	db "Recently, all I've", $4f
+	db "been catching are", $55
+	db "MAGIKARP, though…", $57
+; 0x175f11
+
+UnknownText_0x175f11: ; 0x175f11
+	db $0, "So where are you?", $4f
+	db "I'm waiting for", $51
+	db "you to show up on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, ".", $51
+	db "You shouldn't make", $4f
+	db "your elders wait!", $57
+; 0x175f70
+
+UnknownText_0x175f70: ; 0x175f70
+	db $0, "Hey, what's the", $4f
+	db "matter with you?", $51
+	db "Aren't you coming", $4f
+	db "over to fish for", $55
+	db "QWILFISH?", $51
+	db "I'm on ROUTE 32,", $4f
+	db "so hurry up!", $57
+; 0x175fda
+
+UnknownText_0x175fda: ; 0x175fda
+	db $0, "Oh, you have to", $4f
+	db "hear this.", $51
+	db "My @"
+	text_from_ram $d0ac
+	db $0, " is", $4f
+	db "so adorable!", $51
+	db "It always wants to", $4f
+	db "nuzzle me!", $57
+; 0x17602d
+
+UnknownText_0x17602d: ; 0x17602d
+	db $0, "And, and! Um…", $51
+	db "We beat a wild", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, " with", $51
+	db "just one hit a", $4f
+	db "little while ago.", $51
+	db "We felt sorry for", $4f
+	db "it, though.", $57
+; 0x176095
+
+UnknownText_0x176095: ; 0x176095
+	db $0, "And, and! Uh…", $51
+	db "We just saw a", $4f
+	db "really gorgeous", $55
+	db "@"
+	text_from_ram $d0ac
+	db $0, ".", $51
+	db "But I was on the", $4f
+	db "phone, so it got", $51
+	db "away. It made us", $4f
+	db "really angry!", $57
+; 0x17610a
+
+UnknownText_0x17610a: ; 0x17610a
+	db $0, "Hi! Do you have", $4f
+	db "some free time?", $51
+	db "I've got all sorts", $4f
+	db "of time. If you're", $51
+	db "free, would you", $4f
+	db "like to battle?", $51
+	db "I'll be waiting on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, ".", $51
+	db "Let me know when", $4f
+	db "you get here!", $57
+; 0x1761a7
+
+UnknownText_0x1761a7: ; 0x1761a7
+	db $0, "Hi, TANIA. How are", $4f
+	db "you? This is LIZ.", $51
+	db "I'm fine, but I'm", $4f
+	db "bored silly!", $51
+	db "Huh… Wrong number?", $4f
+	db "Oops! Sorry!", $57
+; 0x17620a
+
+UnknownText_0x17620a: ; 0x17620a
+	db $0, "OK, I'll call you", $4f
+	db "later!", $57
+; 0x176223
+
+UnknownText_0x176223: ; 0x176223
+	db $0, "Listen, listen!", $51
+	db "I was listening to", $4f
+	db "the radio in the", $51
+	db "RUINS OF ALPH when", $4f
+	db "an odd broadcast", $51
+	db "suddenly cut it on", $4f
+	db "the regular show.", $51
+	db "I wonder what it", $4f
+	db "was. So strange!", $57
+; 0x1762c3
+
+UnknownText_0x1762c3: ; 0x1762c3
+	db $0, "Listen, listen!", $51
+	db "Don't you think", $4f
+	db "FALKNER of VIOLET", $51
+	db "GYM is cool and", $4f
+	db "handsome?", $51
+	db "But they say his", $4f
+	db "dad, who's out", $51
+	db "training on the", $4f
+	db "road, is even more", $51
+	db "cool and handsome", $4f
+	db "than FALKNER.", $51
+	db "I wish I could", $4f
+	db "meet him!", $57
+; 0x17638a
+
+UnknownText_0x17638a: ; 0x17638a
+	db $0, "Listen, listen!", $51
+	db "Do you know EARL,", $4f
+	db "the teacher who", $51
+	db "runs the #MON", $4f
+	db "ACADEMY in VIOLET?", $51
+	db "I saw him doing", $4f
+	db "pirouettes while", $51
+	db "he was running. It", $4f
+	db "was wildly funny!", $57
+; 0x176424
+
+UnknownText_0x176424: ; 0x176424
+	db $0, "Listen, listen!", $51
+	db "I collect #MON", $4f
+	db "plush dolls.", $51
+	db "But I can't seem", $4f
+	db "to get a hold of a", $51
+	db "SURF PIKACHU DOLL.", $4f
+	db "None of my friends", $51
+	db "have it. It must", $4f
+	db "be totally rare!", $51
+	db "You could really", $4f
+	db "brag about it if", $55
+	db "you had one.", $57
+; 0x1764eb
+
+UnknownText_0x1764eb: ; 0x1764eb
+	db $0, "Listen, listen!", $51
+	db "Do you know about", $4f
+	db "MOOMOO MILK?", $51
+	db "You can buy it at", $4f
+	db "MOOMOO FARM.", $51
+	db "It's supposed to", $4f
+	db "be good for health", $51
+	db "and beauty.", $4f
+	db "I really want to", $51
+	db "try some. I bet", $4f
+	db "it's delicious!", $57
+; 0x176599
+
+UnknownText_0x176599: ; 0x176599
+	db $0, "Listen, listen!", $51
+	db "There's a #MON", $4f
+	db "SALON in GOLDENROD", $51
+	db "that's run by two", $4f
+	db "brothers.", $51
+	db "The older brother", $4f
+	db "is good, but the", $51
+	db "younger one really", $4f
+	db "isn't.", $51
+	db "But sometimes the", $4f
+	db "younger one does a", $51
+	db "better job than", $4f
+	db "his brother.", $51
+	db "Every time I go, I", $4f
+	db "have a hard time", $51
+	db "trying to decide", $4f
+	db "whom I should use…", $57
+; 0x1766ac
+
+UnknownText_0x1766ac: ; 0x1766ac
+	db $0, "Listen, listen!", $51
+	db "GOLDENROD GYM's", $4f
+	db "WHITNEY began", $51
+	db "battling only a", $4f
+	db "little while ago!", $51
+	db "But the #MON", $4f
+	db "LEAGUE chose her", $55
+	db "as a GYM LEADER!", $51
+	db "I bet she must be", $4f
+	db "totally talented.", $57
+; 0x17674f
+
+UnknownText_0x17674f: ; 0x17674f
+	db $0, "Listen, listen!", $51
+	db "Have you ever", $4f
+	db "taken part in a", $51
+	db "Bug-Catching", $4f
+	db "Contest at the", $55
+	db "NATIONAL PARK?", $51
+	db "I did once, but", $4f
+	db "all I could catch", $55
+	db "was a CATERPIE.", $51
+	db "But guess what!", $51
+	db "I won with that", $4f
+	db "CATERPIE. Isn't", $55
+	db "that great?", $57
+; 0x176816
+
+UnknownText_0x176816: ; 0x176816
+	db $0, "Listen, listen!", $51
+	db "I saw a beautiful", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, "!", $51
+	db "I wish I could", $4f
+	db "become a beautiful", $55
+	db "@"
+	text_from_ram $d0ac
+	db $0, " too.", $57
+; 0x17686d
+
+UnknownText_0x17686d: ; 0x17686d
+	db $0, "Listen, listen!", $51
+	db "Uh… Um… Whoops!", $51
+	db "I forgot what I", $4f
+	db "was going to say!", $57
+; 0x1768b0
+
+UnknownText_0x1768b0: ; 0x1768b0
+	db $0, "Listen, listen!", $51
+	db "My @"
+	text_from_ram $d0ac
+	db $0, "…", $4f
+	db "it… so pretty…", $51
+	db "and… giggle… so", $4f
+	db "awesome… yes… but…", $51
+	db "very much… eeek!", $4f
+	db "And… lovely…", $51
+	db "Just ravishing…", $4f
+	db "Oh, too much!", $51
+	db "…Hug it… sleeping…", $4f
+	db "That's right…", $51
+	db "pretty… sigh… So", $4f
+	db "nice… Cute…", $51
+	db "…Oops! Look at the", $4f
+	db "time! I chatted", $55
+	db "too long!", $51
+	db "I'm sorry I took", $4f
+	db "so much of your", $51
+	db "time!", $4f
+	db "I love chatting!", $57
+; 0x1769da
+
+UnknownText_0x1769da: ; 0x1769da
+	db $0, "I've got too much", $4f
+	db "time on my hands!", $51
+	db "Let's battle right", $4f
+	db "away!", $51
+	db "I'll be waiting on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, "!", $57
+; 0x176a2f
+
+UnknownText_0x176a2f: ; 0x176a2f
+	db $0, "The other day, I", $4f
+	db "was watching my", $51
+	db "@"
+	text_from_ram $d0ac
+	db $0, " eat", $4f
+	db "some BERRIES.", $51
+	db "It looked like it", $4f
+	db "was enjoying its", $51
+	db "meal, so I decided", $4f
+	db "to try some.", $51
+	db "I'm not sure if", $4f
+	db "people should eat", $51
+	db "that stuff, but it", $4f
+	db "was delicious!", $57
+; 0x176aef
+
+UnknownText_0x176aef: ; 0x176aef
+	db $0, "Lately, I've been", $4f
+	db "running across", $51
+	db "wild @"
+	text_from_ram $d0ac
+	db $0, $4f
+	db "quite often.", $51
+	db "They're easily", $4f
+	db "taken care of.", $57
+; 0x176b45
+
+UnknownText_0x176b45: ; 0x176b45
+	db $0, "Oh yeah, I was", $4f
+	db "battling this", $51
+	db "@"
+	text_from_ram $d0ac
+	db $0, " the", $4f
+	db "other day…", $51
+	db "It took off when I", $4f
+	db "got distracted by", $55
+	db "a passing BEAUTY.", $51
+	db "Learn from my", $4f
+	db "mistake--always", $51
+	db "stay focused on", $4f
+	db "the job at hand!", $57
+; 0x176bee
+
+UnknownText_0x176bee: ; 0x176bee
+	db $0, "Come on--let's", $4f
+	db "battle right now!", $51
+	db "@"
+	text_from_ram $d0bf
+	db $0, " is", $4f
+	db "where I am.", $51
+	db "Come on down if", $4f
+	db "you feel up to it!", $57
+; 0x176c47
+
+UnknownText_0x176c47: ; 0x176c47
+	db $0, "All right then!", $4f
+	db "Be good!", $57
+; 0x176c61
+
+UnknownText_0x176c61: ; 0x176c61
+	db $0, $52, "! It's", $4f
+	db "mind-blowing!", $51
+	db "I took a hike in", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, $55
+	db "yesterday, see?", $51
+	db "Well, there were", $4f
+	db "tons of @"
+	text_from_ram $d0ac
+	db $0, $51
+	db "around! You have", $4f
+	db "to see it!", $51
+	db "I get this feeling", $4f
+	db "that @"
+	text_from_ram $d0ac
+	db $0, $51
+	db "may be timid.", $4f
+	db "I didn't see any", $51
+	db "where there are", $4f
+	db "strong #MON.", $57
+; 0x176d32
+
+UnknownText_0x176d32: ; 0x176d32
+	db $0, "Rare #MON?", $51
+	db "Hey, sorry! I was", $4f
+	db "too focused on my", $51
+	db "hike, so I wasn't", $4f
+	db "paying attention.", $57
+; 0x176d85
+
+UnknownText_0x176d85: ; 0x176d85
+	db $0, "Hello! You haven't", $4f
+	db "forgotten about", $51
+	db "our battle, have", $4f
+	db "you?", $51
+	db "@"
+	text_from_ram $d0bf
+	db $0, "!", $4f
+	db "I'm waiting!", $57
+; 0x176dd1
+
+UnknownText_0x176dd1: ; 0x176dd1
+	db $0, "Hello? What? Where", $4f
+	db "is DUNSPARCE?", $51
+	db "DARK CAVE! Hurry!", $51
+	db "I know I've said", $4f
+	db "it before, but", $51
+	db "DUNSPARCE don't", $4f
+	db "appear when there", $51
+	db "are strong #MON", $4f
+	db "around.", $57
+; 0x176e5d
+
+UnknownText_0x176e5d: ; 0x176e5d
+	db $0, "My @"
+	text_from_ram $d0ac
+	db $0, " is", $4f
+	db "looking more and", $51
+	db "more like me. It's", $4f
+	db "getting cuter!", $57
+; 0x176e9c
+
+UnknownText_0x176e9c: ; 0x176e9c
+	db $0, "And, you know?", $51
+	db "Now we can KO", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, " easily.", $51
+	db "I should challenge", $4f
+	db "the GOLDENROD GYM.", $57
+; 0x176eee
+
+UnknownText_0x176eee: ; 0x176eee
+	db $0, "And, you know?", $4f
+	db "We just failed to", $51
+	db "beat @"
+	text_from_ram $d0ac
+	db $0, " by", $4f
+	db "a tiny margin.", $51
+	db "I'm guessing my", $4f
+	db "#MON's levels", $51
+	db "aren't high enough", $4f
+	db "yet…", $57
+; 0x176f60
+
+UnknownText_0x176f60: ; 0x176f60
+	db $0, "You must be a lot", $4f
+	db "better now, huh?", $51
+	db "How about showing", $4f
+	db "me your technique", $51
+	db "in a real battle", $4f
+	db "with me?", $51
+	db "I'll be waiting on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, ".", $57
+; 0x176fdb
+
+UnknownText_0x176fdb: ; 0x176fdb
+	db $0, "See you later!", $57
+; 0x176feb
+
+UnknownText_0x176feb: ; 0x176feb
+	db $0, "This is it--the", $4f
+	db "one we've all been", $55
+	db "waiting for!", $51
+	db "GOLDENROD DEPT.", $4f
+	db "STORE's bargain", $55
+	db "sale is on now!", $51
+	db "Want it cheap?", $4f
+	db "Want it lots?", $51
+	db "Don't miss this", $4f
+	db "GOLDENROD chance!", $51
+	db "Huh? I sound like", $4f
+	db "a huckster?", $51
+	db "Well, yeah. I was", $4f
+	db "mimicking them…", $51
+	db "Anyway, you've got", $4f
+	db "to get there as", $55
+	db "soon as you can!", $57
+; 0x1770fb
+
+UnknownText_0x1770fb: ; 0x1770fb
+	db $0, "I'm saving up for", $4f
+	db "the next bargain", $51
+	db "sale. When's the", $4f
+	db "next one?", $57
+; 0x177138
+
+UnknownText_0x177138: ; 0x177138
+	db $0, "Where are you?", $51
+	db "Let's have our", $4f
+	db "battle soon!", $51
+	db "I'll be waiting on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, ".", $57
+; 0x17717c
+
+UnknownText_0x17717c: ; 0x17717c
+	db $0, "Haven't you gone", $4f
+	db "to GOLDENROD DEPT.", $51
+	db "STORE? I've scoped", $4f
+	db "it out already!", $51
+	db "They had some real", $4f
+	db "bargains.", $51
+	db "You should get", $4f
+	db "there quickly.", $57
+; 0x1771fd
+
+UnknownText_0x1771fd: ; 0x1771fd
+	db $0, "My @"
+	text_from_ram $d0ac
+	db $0, " and", $4f
+	db "I are getting more", $51
+	db "in sync with each", $4f
+	db "other.", $57
+; 0x177237
+
+UnknownText_0x177237: ; 0x177237
+	db $0, "We battled a wild", $4f
+	db "@"
+	text_from_ram $d0ac
+	db $0, " and", $51
+	db "managed to drop it", $4f
+	db "in a close match.", $51
+	db "We're getting into", $4f
+	db "the groove!", $57
+; 0x177297
+
+UnknownText_0x177297: ; 0x177297
+	db $0, "But, you know?", $51
+	db "I still haven't", $4f
+	db "caught @"
+	text_from_ram $d0ac
+	db $0, ".", $51
+	db "It's getting past", $4f
+	db "frustrating…", $57
+; 0x1772e2
+
+UnknownText_0x1772e2: ; 0x1772e2
+	db $0, "Would you be my", $4f
+	db "practice partner", $55
+	db "again sometime?", $51
+	db "I'll be waiting on", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, ".", $51
+	db "…Could you take it", $4f
+	db "a little easier on", $55
+	db "me next time?", $57
+; 0x177361
+
+UnknownText_0x177361: ; 0x177361
+	db $0, "Bye! Let's chat", $4f
+	db "again!", $57
+; 0x177378
+
+UnknownText_0x177378: ; 0x177378
+	db $0, "Have you heard", $4f
+	db "about TEAM ROCKET?", $51
+	db "They've taken over", $4f
+	db "the RADIO TOWER in", $55
+	db "GOLDENROD.", $51
+	db "Are the people", $4f
+	db "inside safe?", $57
+; 0x1773e7
+
+UnknownText_0x1773e7: ; 0x1773e7
+	db $0, "I picked up some-", $4f
+	db "thing nice today.", $51
+	db "I want you to have", $4f
+	db "it, so I called!", $51
+	db "You will come for", $4f
+	db "it, won't you?", $51
+	db "@"
+	text_from_ram $d0bf
+	db $0, " is", $4f
+	db "where I am.", $57
+; 0x177465
+
+UnknownText_0x177465: ; 0x177465
+	db $0, "Sorry, I haven't", $4f
+	db "found anything", $51
+	db "useful yet…", $4f
+	db "I promise, if I", $51
+	db "find anything, you", $4f
+	db "can have it!", $57
+; 0x1774c1
+
+UnknownText_0x1774c1: ; 0x1774c1
+	db $0, "Oh, ", $14, "!", $4f
+	db "How soon can I", $51
+	db "expect to see you", $4f
+	db "for our battle?", $51
+	db "Don't forget,", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, "!", $57
+; 0x17750e
+
+UnknownText_0x17750e: ; 0x17750e
+	db $0, "I'm getting really", $4f
+	db "impatient, waiting", $51
+	db "to give you my", $4f
+	db "present!", $51
+	db "Hurry over to", $4f
+	db "@"
+	text_from_ram $d0bf
+	db $0, "!", $57
+; 0x177561
--- a/tilesets/31_metatiles.bin
+++ b/tilesets/31_metatiles.bin
@@ -1,1 +1,1 @@
-
,-./<=>?****
,-./<=>?	***&'&'6767&'67&'&'6767&'67&'67***&'67&'67(9&'8:67&'67&'&'6767&'&'6767&'67&'&'6767&'67&'67&'67&'67)**********+** !!! !!! !!!!!!!!!!!!!!!!!!"!!!"!!!"02 !!!0111#$$$#$!!!!1111$$$$$$!!!"1112$$$%$%#$$$#$$$#$34#$$$#$$$#$$$3444$$$$$$$$$$$$4444$$$%$$$%$$$%4445}PP
}PP}PPPPPPPP}PP}P&}P,}PPP2}P8}PP@}PPPPH}PPPN}PT}PPY}Pa}Pe}Pk}Pp}Py}P�}P�}PP�}PP�}PP�}PP�}P�}PP�}P�}PPP�}�}P�}P�}P�}P�}PP�}�}P�}PPP�}P�}PPP�}�}P�}P�}~~
~P~PPP~~PPP#~PPP&~P)~PPPP,~P2~P8~<~PPP>~PPPPC~PPJ~PPQ~PPX~P^~Pe~Pi~PPo~Ps~y~�~�~P�~P�~PPP�~P�~P�~PP�~PP
\ No newline at end of file
+
,-./<=>?****
,-./<=>?	***&'&'6767&'67&'&'6767&'67&'67***&'67&'67(9&'8:67&'67&'&'6767&'&'6767&'67&'&'6767&'67&'67&'67&'67)**********+** !!! !!! !!!!!!!!!!!!!!!!!!"!!!"!!!"02 !!!0111#$$$#$!!!!1111$$$$$$!!!"1112$$$%$%#$$$#$$$#$34#$$$#$$$#$$$3444$$$$$$$$$$$$4444$$$%$$$%$$$%4445
\ No newline at end of file
--- a/wram.asm
+++ b/wram.asm
@@ -370,6 +370,7 @@
 ;		bit 3: vram bank (cgb only)
 ;		bit 2-0: pal # (cgb only)
 	ds 160
+SpritesEnd
 
 TileMap: ; c4a0
 ; 20x18 grid of 8x8 tiles
@@ -786,8 +787,8 @@
 	ds 12
 
 SECTION "gfx2",WRAM0[$cd20]
-BGMapBuffer:
-CreditsPos: ; cd20
+CreditsPos:
+BGMapBuffer: ; cd20
 	ds 2
 CreditsTimer: ; cd22
 	ds 1
@@ -833,16 +834,11 @@
 MenuSelection:; cf74
 	ds 1
 
-	ds 14
 
-TileY: ; cf82
-	ds 1
-TileX: ; cf83
-	ds 1
 
-
-
-SECTION "VBlank",WRAM0[$cfb2]
+SECTION "VBlank",WRAM0[$cfb1]
+OverworldDelay: ; cfb1
+	ds 1
 TextDelayFrames: ; cfb2
 	ds 1
 VBlankOccurred: ; cfb3
@@ -929,6 +925,7 @@
 CurFruit: ; d03f
 	ds 1
 
+MartPointer: ; d040
 	ds 2
 
 MovementAnimation: ; d042
@@ -984,8 +981,14 @@
 ;        flickers when climbing waterfall
 	ds 1
 
-	ds 24
+	ds 2
 
+CurMart: ; d0f0
+	ds 16
+CurMartEnd
+
+	ds 6
+
 CurItem: ; d106
 	ds 1
 
@@ -1083,8 +1086,13 @@
 UsedSprites: ; d154
 	ds 32
 
-SECTION "connections",WRAMX[$d1a9],BANK[1]
+SECTION "map",WRAMX[$d1a3],BANK[1]
 
+MapEventBank: ; d1a3
+	ds 1
+
+	ds 5
+
 MapConnections:
 
 NorthMapConnection: ; d1a9
@@ -1195,8 +1203,8 @@
 
 	ds 1
 
-Buffer1:
-MagikarpLength: ; d1ea
+MagikarpLength:
+Buffer1: ; d1ea
 	ds 1
 MovementType:
 Buffer2: ; d1eb
@@ -1531,9 +1539,11 @@
 ScriptFlags: ; d434
 SCRIPT_RUNNING EQU 2
 	ds 1
+ScriptFlags2: ; d435
+	ds 1
+ScriptFlags3: ; d436
+	ds 1
 
-	ds 2
-
 ScriptMode: ; d437
 SCRIPT_OFF EQU 0
 SCRIPT_READ EQU 1
@@ -1561,17 +1571,19 @@
 	ds 8
 PlayerID: ; d47b
 	ds 2
+
 PlayerName: ; d47d
 	ds 11
-PlayerNameEnd: ; d488
-
+MomsName: ; d488
 	ds 11
-
-WRivalName: ; d493
+RivalName: ; d493
 	ds 11
-WRivalNameEnd: ; d49e
+RedsName: ; d49e
+	ds 11
+GreensName: ; d4a9
+	ds 11
 
-	ds 24
+	ds 2
 
 ; init time set at newgame
 StartDay: ; d4b6
@@ -1608,8 +1620,10 @@
 SATURDAY  EQU 6
 	ds 1
 
-	ds 12
+	ds 10
 
+	ds 2
+
 PlayerSprite: ; d4d8
 	ds 1
 
@@ -1695,21 +1709,25 @@
 SECTION "Items",WRAMX[$d859],BANK[1]
 TMsHMs: ; d859
 	ds 57
+TMsHMsEnd
 
 NumItems: ; d892
 	ds 1
 Items: ; d893
 	ds 41
+ItemsEnd
 
 NumKeyItems: ; d8bc
 	ds 1
 KeyItems: ; d8bd
 	ds 26
+KeyItemsEnd
 
 NumBalls: ; d8d7
 	ds 1
 Balls: ; d8d8
 	ds 25
+BallsEnd
 	
 SECTION "overworld",WRAMX[$d95b],BANK[1]
 WhichRegisteredItem: ; d95b