From 6d1b7f28c8987be16b05e8c68f7f50eb357b7cc5 Mon Sep 17 00:00:00 2001
From: PikalaxALT <PikalaxALT@gmail.com>
Date: Sat, 9 Jan 2016 16:28:22 -0500
Subject: [PATCH 01/13] Split base stats

---
 battle/effect_commands.asm     |    8 +-
 battle/effects/rollout.asm     |   29 +-
 constants/cgb_constants.asm    |    2 +-
 data/base_stats.asm            | 5774 ++------------------------------
 data/base_stats/abra.asm       |   22 +
 data/base_stats/aerodactyl.asm |   22 +
 data/base_stats/aipom.asm      |   22 +
 data/base_stats/alakazam.asm   |   22 +
 data/base_stats/ampharos.asm   |   22 +
 data/base_stats/arbok.asm      |   22 +
 data/base_stats/arcanine.asm   |   22 +
 data/base_stats/ariados.asm    |   22 +
 data/base_stats/articuno.asm   |   22 +
 data/base_stats/azumarill.asm  |   22 +
 data/base_stats/bayleef.asm    |   22 +
 data/base_stats/beedrill.asm   |   22 +
 data/base_stats/bellossom.asm  |   22 +
 data/base_stats/bellsprout.asm |   22 +
 data/base_stats/blastoise.asm  |   22 +
 data/base_stats/blissey.asm    |   22 +
 data/base_stats/bulbasaur.asm  |   22 +
 data/base_stats/butterfree.asm |   22 +
 data/base_stats/caterpie.asm   |   22 +
 data/base_stats/celebi.asm     |   22 +
 data/base_stats/chansey.asm    |   22 +
 data/base_stats/charizard.asm  |   22 +
 data/base_stats/charmander.asm |   22 +
 data/base_stats/charmeleon.asm |   22 +
 data/base_stats/chikorita.asm  |   22 +
 data/base_stats/chinchou.asm   |   22 +
 data/base_stats/clefable.asm   |   22 +
 data/base_stats/clefairy.asm   |   22 +
 data/base_stats/cleffa.asm     |   22 +
 data/base_stats/cloyster.asm   |   22 +
 data/base_stats/corsola.asm    |   22 +
 data/base_stats/crobat.asm     |   22 +
 data/base_stats/croconaw.asm   |   22 +
 data/base_stats/cubone.asm     |   22 +
 data/base_stats/cyndaquil.asm  |   22 +
 data/base_stats/delibird.asm   |   22 +
 data/base_stats/dewgong.asm    |   22 +
 data/base_stats/diglett.asm    |   22 +
 data/base_stats/ditto.asm      |   22 +
 data/base_stats/dodrio.asm     |   22 +
 data/base_stats/doduo.asm      |   22 +
 data/base_stats/donphan.asm    |   22 +
 data/base_stats/dragonair.asm  |   22 +
 data/base_stats/dragonite.asm  |   22 +
 data/base_stats/dratini.asm    |   22 +
 data/base_stats/drowzee.asm    |   22 +
 data/base_stats/dugtrio.asm    |   22 +
 data/base_stats/dunsparce.asm  |   22 +
 data/base_stats/eevee.asm      |   22 +
 data/base_stats/ekans.asm      |   22 +
 data/base_stats/electabuzz.asm |   22 +
 data/base_stats/electrode.asm  |   22 +
 data/base_stats/elekid.asm     |   22 +
 data/base_stats/entei.asm      |   22 +
 data/base_stats/espeon.asm     |   22 +
 data/base_stats/exeggcute.asm  |   22 +
 data/base_stats/exeggutor.asm  |   22 +
 data/base_stats/farfetch_d.asm |   22 +
 data/base_stats/fearow.asm     |   22 +
 data/base_stats/feraligatr.asm |   22 +
 data/base_stats/flaaffy.asm    |   22 +
 data/base_stats/flareon.asm    |   22 +
 data/base_stats/forretress.asm |   22 +
 data/base_stats/furret.asm     |   22 +
 data/base_stats/gastly.asm     |   22 +
 data/base_stats/gengar.asm     |   22 +
 data/base_stats/geodude.asm    |   22 +
 data/base_stats/girafarig.asm  |   22 +
 data/base_stats/gligar.asm     |   22 +
 data/base_stats/gloom.asm      |   22 +
 data/base_stats/golbat.asm     |   22 +
 data/base_stats/goldeen.asm    |   22 +
 data/base_stats/golduck.asm    |   22 +
 data/base_stats/golem.asm      |   22 +
 data/base_stats/granbull.asm   |   22 +
 data/base_stats/graveler.asm   |   22 +
 data/base_stats/grimer.asm     |   22 +
 data/base_stats/growlithe.asm  |   22 +
 data/base_stats/gyarados.asm   |   22 +
 data/base_stats/haunter.asm    |   22 +
 data/base_stats/heracross.asm  |   22 +
 data/base_stats/hitmonchan.asm |   22 +
 data/base_stats/hitmonlee.asm  |   22 +
 data/base_stats/hitmontop.asm  |   22 +
 data/base_stats/ho_oh.asm      |   22 +
 data/base_stats/hoothoot.asm   |   22 +
 data/base_stats/hoppip.asm     |   22 +
 data/base_stats/horsea.asm     |   22 +
 data/base_stats/houndoom.asm   |   22 +
 data/base_stats/houndour.asm   |   22 +
 data/base_stats/hypno.asm      |   22 +
 data/base_stats/igglybuff.asm  |   22 +
 data/base_stats/ivysaur.asm    |   22 +
 data/base_stats/jigglypuff.asm |   22 +
 data/base_stats/jolteon.asm    |   22 +
 data/base_stats/jumpluff.asm   |   22 +
 data/base_stats/jynx.asm       |   22 +
 data/base_stats/kabuto.asm     |   22 +
 data/base_stats/kabutops.asm   |   22 +
 data/base_stats/kadabra.asm    |   22 +
 data/base_stats/kakuna.asm     |   22 +
 data/base_stats/kangaskhan.asm |   22 +
 data/base_stats/kingdra.asm    |   22 +
 data/base_stats/kingler.asm    |   22 +
 data/base_stats/koffing.asm    |   22 +
 data/base_stats/krabby.asm     |   22 +
 data/base_stats/lanturn.asm    |   22 +
 data/base_stats/lapras.asm     |   22 +
 data/base_stats/larvitar.asm   |   22 +
 data/base_stats/ledian.asm     |   22 +
 data/base_stats/ledyba.asm     |   22 +
 data/base_stats/lickitung.asm  |   22 +
 data/base_stats/lugia.asm      |   22 +
 data/base_stats/machamp.asm    |   22 +
 data/base_stats/machoke.asm    |   22 +
 data/base_stats/machop.asm     |   22 +
 data/base_stats/magby.asm      |   22 +
 data/base_stats/magcargo.asm   |   22 +
 data/base_stats/magikarp.asm   |   22 +
 data/base_stats/magmar.asm     |   22 +
 data/base_stats/magnemite.asm  |   22 +
 data/base_stats/magneton.asm   |   22 +
 data/base_stats/mankey.asm     |   22 +
 data/base_stats/mantine.asm    |   22 +
 data/base_stats/mareep.asm     |   22 +
 data/base_stats/marill.asm     |   22 +
 data/base_stats/marowak.asm    |   22 +
 data/base_stats/meganium.asm   |   22 +
 data/base_stats/meowth.asm     |   22 +
 data/base_stats/metapod.asm    |   22 +
 data/base_stats/mew.asm        |   22 +
 data/base_stats/mewtwo.asm     |   22 +
 data/base_stats/miltank.asm    |   22 +
 data/base_stats/misdreavus.asm |   22 +
 data/base_stats/moltres.asm    |   22 +
 data/base_stats/mr__mime.asm   |   22 +
 data/base_stats/muk.asm        |   22 +
 data/base_stats/murkrow.asm    |   22 +
 data/base_stats/natu.asm       |   22 +
 data/base_stats/nidoking.asm   |   22 +
 data/base_stats/nidoqueen.asm  |   22 +
 data/base_stats/nidoran_f.asm  |   22 +
 data/base_stats/nidoran_m.asm  |   22 +
 data/base_stats/nidorina.asm   |   22 +
 data/base_stats/nidorino.asm   |   22 +
 data/base_stats/ninetales.asm  |   22 +
 data/base_stats/noctowl.asm    |   22 +
 data/base_stats/octillery.asm  |   22 +
 data/base_stats/oddish.asm     |   22 +
 data/base_stats/omanyte.asm    |   22 +
 data/base_stats/omastar.asm    |   22 +
 data/base_stats/onix.asm       |   22 +
 data/base_stats/paras.asm      |   22 +
 data/base_stats/parasect.asm   |   22 +
 data/base_stats/persian.asm    |   22 +
 data/base_stats/phanpy.asm     |   22 +
 data/base_stats/pichu.asm      |   22 +
 data/base_stats/pidgeot.asm    |   22 +
 data/base_stats/pidgeotto.asm  |   22 +
 data/base_stats/pidgey.asm     |   22 +
 data/base_stats/pikachu.asm    |   22 +
 data/base_stats/piloswine.asm  |   22 +
 data/base_stats/pineco.asm     |   22 +
 data/base_stats/pinsir.asm     |   22 +
 data/base_stats/politoed.asm   |   22 +
 data/base_stats/poliwag.asm    |   22 +
 data/base_stats/poliwhirl.asm  |   22 +
 data/base_stats/poliwrath.asm  |   22 +
 data/base_stats/ponyta.asm     |   22 +
 data/base_stats/porygon.asm    |   22 +
 data/base_stats/porygon2.asm   |   22 +
 data/base_stats/primeape.asm   |   22 +
 data/base_stats/psyduck.asm    |   22 +
 data/base_stats/pupitar.asm    |   22 +
 data/base_stats/quagsire.asm   |   22 +
 data/base_stats/quilava.asm    |   22 +
 data/base_stats/qwilfish.asm   |   22 +
 data/base_stats/raichu.asm     |   22 +
 data/base_stats/raikou.asm     |   22 +
 data/base_stats/rapidash.asm   |   22 +
 data/base_stats/raticate.asm   |   22 +
 data/base_stats/rattata.asm    |   22 +
 data/base_stats/remoraid.asm   |   22 +
 data/base_stats/rhydon.asm     |   22 +
 data/base_stats/rhyhorn.asm    |   22 +
 data/base_stats/sandshrew.asm  |   22 +
 data/base_stats/sandslash.asm  |   22 +
 data/base_stats/scizor.asm     |   22 +
 data/base_stats/scyther.asm    |   22 +
 data/base_stats/seadra.asm     |   22 +
 data/base_stats/seaking.asm    |   22 +
 data/base_stats/seel.asm       |   22 +
 data/base_stats/sentret.asm    |   22 +
 data/base_stats/shellder.asm   |   22 +
 data/base_stats/shuckle.asm    |   22 +
 data/base_stats/skarmory.asm   |   22 +
 data/base_stats/skiploom.asm   |   22 +
 data/base_stats/slowbro.asm    |   22 +
 data/base_stats/slowking.asm   |   22 +
 data/base_stats/slowpoke.asm   |   22 +
 data/base_stats/slugma.asm     |   22 +
 data/base_stats/smeargle.asm   |   22 +
 data/base_stats/smoochum.asm   |   22 +
 data/base_stats/sneasel.asm    |   22 +
 data/base_stats/snorlax.asm    |   22 +
 data/base_stats/snubbull.asm   |   22 +
 data/base_stats/spearow.asm    |   22 +
 data/base_stats/spinarak.asm   |   22 +
 data/base_stats/squirtle.asm   |   22 +
 data/base_stats/stantler.asm   |   22 +
 data/base_stats/starmie.asm    |   22 +
 data/base_stats/staryu.asm     |   22 +
 data/base_stats/steelix.asm    |   22 +
 data/base_stats/sudowoodo.asm  |   22 +
 data/base_stats/suicune.asm    |   22 +
 data/base_stats/sunflora.asm   |   22 +
 data/base_stats/sunkern.asm    |   22 +
 data/base_stats/swinub.asm     |   22 +
 data/base_stats/tangela.asm    |   22 +
 data/base_stats/tauros.asm     |   22 +
 data/base_stats/teddiursa.asm  |   22 +
 data/base_stats/tentacool.asm  |   22 +
 data/base_stats/tentacruel.asm |   22 +
 data/base_stats/togepi.asm     |   22 +
 data/base_stats/togetic.asm    |   22 +
 data/base_stats/totodile.asm   |   22 +
 data/base_stats/typhlosion.asm |   22 +
 data/base_stats/tyranitar.asm  |   22 +
 data/base_stats/tyrogue.asm    |   22 +
 data/base_stats/umbreon.asm    |   22 +
 data/base_stats/unown.asm      |   22 +
 data/base_stats/ursaring.asm   |   22 +
 data/base_stats/vaporeon.asm   |   22 +
 data/base_stats/venomoth.asm   |   22 +
 data/base_stats/venonat.asm    |   22 +
 data/base_stats/venusaur.asm   |   22 +
 data/base_stats/victreebel.asm |   22 +
 data/base_stats/vileplume.asm  |   22 +
 data/base_stats/voltorb.asm    |   22 +
 data/base_stats/vulpix.asm     |   22 +
 data/base_stats/wartortle.asm  |   22 +
 data/base_stats/weedle.asm     |   22 +
 data/base_stats/weepinbell.asm |   22 +
 data/base_stats/weezing.asm    |   22 +
 data/base_stats/wigglytuff.asm |   22 +
 data/base_stats/wobbuffet.asm  |   22 +
 data/base_stats/wooper.asm     |   22 +
 data/base_stats/xatu.asm       |   22 +
 data/base_stats/yanma.asm      |   22 +
 data/base_stats/zapdos.asm     |   22 +
 data/base_stats/zubat.asm      |   22 +
 engine/compose_mail.asm        |  517 ---
 engine/mon_icons.asm           |   35 +-
 engine/money.asm               |    2 +-
 engine/namingscreen.asm        |  985 ++++--
 engine/sprite_anims.asm        |    2 +-
 engine/trade/animation.asm     |   52 +-
 macros/wram.asm                |   12 +
 main.asm                       |    7 +-
 maps/EcruteakPokeCenter1F.asm  |   68 +-
 misc/mobile_40.asm             |    2 +-
 predef/cgb.asm                 |    4 +-
 wram.asm                       |  215 +-
 267 files changed, 6748 insertions(+), 6488 deletions(-)
 create mode 100644 data/base_stats/abra.asm
 create mode 100644 data/base_stats/aerodactyl.asm
 create mode 100644 data/base_stats/aipom.asm
 create mode 100644 data/base_stats/alakazam.asm
 create mode 100644 data/base_stats/ampharos.asm
 create mode 100644 data/base_stats/arbok.asm
 create mode 100644 data/base_stats/arcanine.asm
 create mode 100644 data/base_stats/ariados.asm
 create mode 100644 data/base_stats/articuno.asm
 create mode 100644 data/base_stats/azumarill.asm
 create mode 100644 data/base_stats/bayleef.asm
 create mode 100644 data/base_stats/beedrill.asm
 create mode 100644 data/base_stats/bellossom.asm
 create mode 100644 data/base_stats/bellsprout.asm
 create mode 100644 data/base_stats/blastoise.asm
 create mode 100644 data/base_stats/blissey.asm
 create mode 100644 data/base_stats/bulbasaur.asm
 create mode 100644 data/base_stats/butterfree.asm
 create mode 100644 data/base_stats/caterpie.asm
 create mode 100644 data/base_stats/celebi.asm
 create mode 100644 data/base_stats/chansey.asm
 create mode 100644 data/base_stats/charizard.asm
 create mode 100644 data/base_stats/charmander.asm
 create mode 100644 data/base_stats/charmeleon.asm
 create mode 100644 data/base_stats/chikorita.asm
 create mode 100644 data/base_stats/chinchou.asm
 create mode 100644 data/base_stats/clefable.asm
 create mode 100644 data/base_stats/clefairy.asm
 create mode 100644 data/base_stats/cleffa.asm
 create mode 100644 data/base_stats/cloyster.asm
 create mode 100644 data/base_stats/corsola.asm
 create mode 100644 data/base_stats/crobat.asm
 create mode 100644 data/base_stats/croconaw.asm
 create mode 100644 data/base_stats/cubone.asm
 create mode 100644 data/base_stats/cyndaquil.asm
 create mode 100644 data/base_stats/delibird.asm
 create mode 100644 data/base_stats/dewgong.asm
 create mode 100644 data/base_stats/diglett.asm
 create mode 100644 data/base_stats/ditto.asm
 create mode 100644 data/base_stats/dodrio.asm
 create mode 100644 data/base_stats/doduo.asm
 create mode 100644 data/base_stats/donphan.asm
 create mode 100644 data/base_stats/dragonair.asm
 create mode 100644 data/base_stats/dragonite.asm
 create mode 100644 data/base_stats/dratini.asm
 create mode 100644 data/base_stats/drowzee.asm
 create mode 100644 data/base_stats/dugtrio.asm
 create mode 100644 data/base_stats/dunsparce.asm
 create mode 100644 data/base_stats/eevee.asm
 create mode 100644 data/base_stats/ekans.asm
 create mode 100644 data/base_stats/electabuzz.asm
 create mode 100644 data/base_stats/electrode.asm
 create mode 100644 data/base_stats/elekid.asm
 create mode 100644 data/base_stats/entei.asm
 create mode 100644 data/base_stats/espeon.asm
 create mode 100644 data/base_stats/exeggcute.asm
 create mode 100644 data/base_stats/exeggutor.asm
 create mode 100644 data/base_stats/farfetch_d.asm
 create mode 100644 data/base_stats/fearow.asm
 create mode 100644 data/base_stats/feraligatr.asm
 create mode 100644 data/base_stats/flaaffy.asm
 create mode 100644 data/base_stats/flareon.asm
 create mode 100644 data/base_stats/forretress.asm
 create mode 100644 data/base_stats/furret.asm
 create mode 100644 data/base_stats/gastly.asm
 create mode 100644 data/base_stats/gengar.asm
 create mode 100644 data/base_stats/geodude.asm
 create mode 100644 data/base_stats/girafarig.asm
 create mode 100644 data/base_stats/gligar.asm
 create mode 100644 data/base_stats/gloom.asm
 create mode 100644 data/base_stats/golbat.asm
 create mode 100644 data/base_stats/goldeen.asm
 create mode 100644 data/base_stats/golduck.asm
 create mode 100644 data/base_stats/golem.asm
 create mode 100644 data/base_stats/granbull.asm
 create mode 100644 data/base_stats/graveler.asm
 create mode 100644 data/base_stats/grimer.asm
 create mode 100644 data/base_stats/growlithe.asm
 create mode 100644 data/base_stats/gyarados.asm
 create mode 100644 data/base_stats/haunter.asm
 create mode 100644 data/base_stats/heracross.asm
 create mode 100644 data/base_stats/hitmonchan.asm
 create mode 100644 data/base_stats/hitmonlee.asm
 create mode 100644 data/base_stats/hitmontop.asm
 create mode 100644 data/base_stats/ho_oh.asm
 create mode 100644 data/base_stats/hoothoot.asm
 create mode 100644 data/base_stats/hoppip.asm
 create mode 100644 data/base_stats/horsea.asm
 create mode 100644 data/base_stats/houndoom.asm
 create mode 100644 data/base_stats/houndour.asm
 create mode 100644 data/base_stats/hypno.asm
 create mode 100644 data/base_stats/igglybuff.asm
 create mode 100644 data/base_stats/ivysaur.asm
 create mode 100644 data/base_stats/jigglypuff.asm
 create mode 100644 data/base_stats/jolteon.asm
 create mode 100644 data/base_stats/jumpluff.asm
 create mode 100644 data/base_stats/jynx.asm
 create mode 100644 data/base_stats/kabuto.asm
 create mode 100644 data/base_stats/kabutops.asm
 create mode 100644 data/base_stats/kadabra.asm
 create mode 100644 data/base_stats/kakuna.asm
 create mode 100644 data/base_stats/kangaskhan.asm
 create mode 100644 data/base_stats/kingdra.asm
 create mode 100644 data/base_stats/kingler.asm
 create mode 100644 data/base_stats/koffing.asm
 create mode 100644 data/base_stats/krabby.asm
 create mode 100644 data/base_stats/lanturn.asm
 create mode 100644 data/base_stats/lapras.asm
 create mode 100644 data/base_stats/larvitar.asm
 create mode 100644 data/base_stats/ledian.asm
 create mode 100644 data/base_stats/ledyba.asm
 create mode 100644 data/base_stats/lickitung.asm
 create mode 100644 data/base_stats/lugia.asm
 create mode 100644 data/base_stats/machamp.asm
 create mode 100644 data/base_stats/machoke.asm
 create mode 100644 data/base_stats/machop.asm
 create mode 100644 data/base_stats/magby.asm
 create mode 100644 data/base_stats/magcargo.asm
 create mode 100644 data/base_stats/magikarp.asm
 create mode 100644 data/base_stats/magmar.asm
 create mode 100644 data/base_stats/magnemite.asm
 create mode 100644 data/base_stats/magneton.asm
 create mode 100644 data/base_stats/mankey.asm
 create mode 100644 data/base_stats/mantine.asm
 create mode 100644 data/base_stats/mareep.asm
 create mode 100644 data/base_stats/marill.asm
 create mode 100644 data/base_stats/marowak.asm
 create mode 100644 data/base_stats/meganium.asm
 create mode 100644 data/base_stats/meowth.asm
 create mode 100644 data/base_stats/metapod.asm
 create mode 100644 data/base_stats/mew.asm
 create mode 100644 data/base_stats/mewtwo.asm
 create mode 100644 data/base_stats/miltank.asm
 create mode 100644 data/base_stats/misdreavus.asm
 create mode 100644 data/base_stats/moltres.asm
 create mode 100644 data/base_stats/mr__mime.asm
 create mode 100644 data/base_stats/muk.asm
 create mode 100644 data/base_stats/murkrow.asm
 create mode 100644 data/base_stats/natu.asm
 create mode 100644 data/base_stats/nidoking.asm
 create mode 100644 data/base_stats/nidoqueen.asm
 create mode 100644 data/base_stats/nidoran_f.asm
 create mode 100644 data/base_stats/nidoran_m.asm
 create mode 100644 data/base_stats/nidorina.asm
 create mode 100644 data/base_stats/nidorino.asm
 create mode 100644 data/base_stats/ninetales.asm
 create mode 100644 data/base_stats/noctowl.asm
 create mode 100644 data/base_stats/octillery.asm
 create mode 100644 data/base_stats/oddish.asm
 create mode 100644 data/base_stats/omanyte.asm
 create mode 100644 data/base_stats/omastar.asm
 create mode 100644 data/base_stats/onix.asm
 create mode 100644 data/base_stats/paras.asm
 create mode 100644 data/base_stats/parasect.asm
 create mode 100644 data/base_stats/persian.asm
 create mode 100644 data/base_stats/phanpy.asm
 create mode 100644 data/base_stats/pichu.asm
 create mode 100644 data/base_stats/pidgeot.asm
 create mode 100644 data/base_stats/pidgeotto.asm
 create mode 100644 data/base_stats/pidgey.asm
 create mode 100644 data/base_stats/pikachu.asm
 create mode 100644 data/base_stats/piloswine.asm
 create mode 100644 data/base_stats/pineco.asm
 create mode 100644 data/base_stats/pinsir.asm
 create mode 100644 data/base_stats/politoed.asm
 create mode 100644 data/base_stats/poliwag.asm
 create mode 100644 data/base_stats/poliwhirl.asm
 create mode 100644 data/base_stats/poliwrath.asm
 create mode 100644 data/base_stats/ponyta.asm
 create mode 100644 data/base_stats/porygon.asm
 create mode 100644 data/base_stats/porygon2.asm
 create mode 100644 data/base_stats/primeape.asm
 create mode 100644 data/base_stats/psyduck.asm
 create mode 100644 data/base_stats/pupitar.asm
 create mode 100644 data/base_stats/quagsire.asm
 create mode 100644 data/base_stats/quilava.asm
 create mode 100644 data/base_stats/qwilfish.asm
 create mode 100644 data/base_stats/raichu.asm
 create mode 100644 data/base_stats/raikou.asm
 create mode 100644 data/base_stats/rapidash.asm
 create mode 100644 data/base_stats/raticate.asm
 create mode 100644 data/base_stats/rattata.asm
 create mode 100644 data/base_stats/remoraid.asm
 create mode 100644 data/base_stats/rhydon.asm
 create mode 100644 data/base_stats/rhyhorn.asm
 create mode 100644 data/base_stats/sandshrew.asm
 create mode 100644 data/base_stats/sandslash.asm
 create mode 100644 data/base_stats/scizor.asm
 create mode 100644 data/base_stats/scyther.asm
 create mode 100644 data/base_stats/seadra.asm
 create mode 100644 data/base_stats/seaking.asm
 create mode 100644 data/base_stats/seel.asm
 create mode 100644 data/base_stats/sentret.asm
 create mode 100644 data/base_stats/shellder.asm
 create mode 100644 data/base_stats/shuckle.asm
 create mode 100644 data/base_stats/skarmory.asm
 create mode 100644 data/base_stats/skiploom.asm
 create mode 100644 data/base_stats/slowbro.asm
 create mode 100644 data/base_stats/slowking.asm
 create mode 100644 data/base_stats/slowpoke.asm
 create mode 100644 data/base_stats/slugma.asm
 create mode 100644 data/base_stats/smeargle.asm
 create mode 100644 data/base_stats/smoochum.asm
 create mode 100644 data/base_stats/sneasel.asm
 create mode 100644 data/base_stats/snorlax.asm
 create mode 100644 data/base_stats/snubbull.asm
 create mode 100644 data/base_stats/spearow.asm
 create mode 100644 data/base_stats/spinarak.asm
 create mode 100644 data/base_stats/squirtle.asm
 create mode 100644 data/base_stats/stantler.asm
 create mode 100644 data/base_stats/starmie.asm
 create mode 100644 data/base_stats/staryu.asm
 create mode 100644 data/base_stats/steelix.asm
 create mode 100644 data/base_stats/sudowoodo.asm
 create mode 100644 data/base_stats/suicune.asm
 create mode 100644 data/base_stats/sunflora.asm
 create mode 100644 data/base_stats/sunkern.asm
 create mode 100644 data/base_stats/swinub.asm
 create mode 100644 data/base_stats/tangela.asm
 create mode 100644 data/base_stats/tauros.asm
 create mode 100644 data/base_stats/teddiursa.asm
 create mode 100644 data/base_stats/tentacool.asm
 create mode 100644 data/base_stats/tentacruel.asm
 create mode 100644 data/base_stats/togepi.asm
 create mode 100644 data/base_stats/togetic.asm
 create mode 100644 data/base_stats/totodile.asm
 create mode 100644 data/base_stats/typhlosion.asm
 create mode 100644 data/base_stats/tyranitar.asm
 create mode 100644 data/base_stats/tyrogue.asm
 create mode 100644 data/base_stats/umbreon.asm
 create mode 100644 data/base_stats/unown.asm
 create mode 100644 data/base_stats/ursaring.asm
 create mode 100644 data/base_stats/vaporeon.asm
 create mode 100644 data/base_stats/venomoth.asm
 create mode 100644 data/base_stats/venonat.asm
 create mode 100644 data/base_stats/venusaur.asm
 create mode 100644 data/base_stats/victreebel.asm
 create mode 100644 data/base_stats/vileplume.asm
 create mode 100644 data/base_stats/voltorb.asm
 create mode 100644 data/base_stats/vulpix.asm
 create mode 100644 data/base_stats/wartortle.asm
 create mode 100644 data/base_stats/weedle.asm
 create mode 100644 data/base_stats/weepinbell.asm
 create mode 100644 data/base_stats/weezing.asm
 create mode 100644 data/base_stats/wigglytuff.asm
 create mode 100644 data/base_stats/wobbuffet.asm
 create mode 100644 data/base_stats/wooper.asm
 create mode 100644 data/base_stats/xatu.asm
 create mode 100644 data/base_stats/yanma.asm
 create mode 100644 data/base_stats/zapdos.asm
 create mode 100644 data/base_stats/zubat.asm
 delete mode 100755 engine/compose_mail.asm

diff --git a/battle/effect_commands.asm b/battle/effect_commands.asm
index 0425cda5d..ca1088a0f 100644
--- a/battle/effect_commands.asm
+++ b/battle/effect_commands.asm
@@ -136,7 +136,7 @@ BattleCommand_CheckTurn: ; 34084
 	ld [wKickCounter], a
 	ld [AlreadyDisobeyed], a
 	ld [AlreadyFailed], a
-	ld [wc73e], a
+	ld [wSomeoneIsRampaging], a
 
 	ld a, 10 ; 1.0
 	ld [TypeModifier], a
@@ -2114,10 +2114,10 @@ BattleCommand_LowerSub: ; 34eee
 	ret
 
 .rollout_rampage
-	ld a, [wc73e]
+	ld a, [wSomeoneIsRampaging]
 	and a
 	ld a, 0
-	ld [wc73e], a
+	ld [wSomeoneIsRampaging], a
 	ret
 
 ; 34f57
@@ -6600,7 +6600,7 @@ BattleCommand_Rampage: ; 36751
 	inc a
 	ld [de], a
 	ld a, 1
-	ld [wc73e], a
+	ld [wSomeoneIsRampaging], a
 	ret
 
 ; 36778
diff --git a/battle/effects/rollout.asm b/battle/effects/rollout.asm
index fe4c9189b..4ce9ab3d8 100644
--- a/battle/effects/rollout.asm
+++ b/battle/effects/rollout.asm
@@ -36,17 +36,17 @@ BattleCommand_RolloutPower: ; 37734
 	ld hl, PlayerRolloutCount
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_37747
+	jr z, .got_rollout_count
 	ld hl, EnemyRolloutCount
 
-.asm_37747
+.got_rollout_count
 	ld a, [hl]
 	and a
-	jr nz, .asm_37750
+	jr nz, .skip_set_rampage
 	ld a, 1
-	ld [wc73e], a
+	ld [wSomeoneIsRampaging], a
 
-.asm_37750
+.skip_set_rampage
 	ld a, [AttackMissed]
 	and a
 	jr z, .hit
@@ -61,38 +61,39 @@ BattleCommand_RolloutPower: ; 37734
 	ld a, [hl]
 	ld b, a
 	cp MAX_ROLLOUT_COUNT
-	jr c, .asm_3776e
+	jr c, .not_done_with_rollout
 
 	ld a, BATTLE_VARS_SUBSTATUS1
 	call GetBattleVarAddr
 	res SUBSTATUS_ROLLOUT, [hl]
-	jr .asm_37775
+	jr .done_with_substatus_flag
 
-.asm_3776e
+.not_done_with_rollout
 	ld a, BATTLE_VARS_SUBSTATUS1
 	call GetBattleVarAddr
 	set SUBSTATUS_ROLLOUT, [hl]
 
-.asm_37775
+.done_with_substatus_flag
 	ld a, BATTLE_VARS_SUBSTATUS2
 	call GetBattleVar
 	bit SUBSTATUS_CURLED, a
-	jr z, .asm_3777f
+	jr z, .not_curled
 	inc b
-.asm_3777f
+.not_curled
+.loop
 	dec b
-	jr z, .asm_37790
+	jr z, .done_damage
 
 	ld hl, CurDamage + 1
 	sla [hl]
 	dec hl
 	rl [hl]
-	jr nc, .asm_3777f
+	jr nc, .loop
 
 	ld a, $ff
 	ld [hli], a
 	ld [hl], a
 
-.asm_37790
+.done_damage
 	ret
 ; 37791
diff --git a/constants/cgb_constants.asm b/constants/cgb_constants.asm
index 028cc71d7..0f0590f3c 100755
--- a/constants/cgb_constants.asm
+++ b/constants/cgb_constants.asm
@@ -17,7 +17,7 @@
 	const SCGB_0F
 	const SCGB_10
 	const SCGB_11
-	const SCGB_12
+	const SCGB_POKEPIC
 	const SCGB_13
 	const SCGB_PACKPALS
 	const SCGB_TRAINER_CARD
diff --git a/data/base_stats.asm b/data/base_stats.asm
index 7f6cebc01..3485e82a8 100644
--- a/data/base_stats.asm
+++ b/data/base_stats.asm
@@ -1,6027 +1,755 @@
 BaseData0::
-
 BulbasaurBaseData:: ; 0x51424
-	db BULBASAUR ; 001
-
-	db  45,  49,  49,  45,  65,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, POISON
-	db 45 ; catch rate
-	db 64 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, PLANT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, FURY_CUTTER, CUT, FLASH
-	; end
+INCLUDE "data/base_stats/bulbasaur.asm"
 
 BaseData1::
-
 IvysaurBaseData:: ; 0x51444
-	db IVYSAUR ; 002
-
-	db  60,  62,  63,  60,  80,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, POISON
-	db 45 ; catch rate
-	db 141 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, PLANT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, FURY_CUTTER, CUT, FLASH
-	; end
+INCLUDE "data/base_stats/ivysaur.asm"
 
 VenusaurBaseData:: ; 0x51464
-	db VENUSAUR ; 003
-
-	db  80,  82,  83,  80, 100, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, POISON
-	db 45 ; catch rate
-	db 208 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, PLANT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, FURY_CUTTER, CUT, FLASH
-	; end
+INCLUDE "data/base_stats/venusaur.asm"
 
 CharmanderBaseData:: ; 0x51484
-	db CHARMANDER ; 004
-
-	db  39,  52,  43,  65,  60,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 45 ; catch rate
-	db 65 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, REPTILE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, CUT, STRENGTH, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/charmander.asm"
 
 CharmeleonBaseData:: ; 0x514a4
-	db CHARMELEON ; 005
-
-	db  58,  64,  58,  80,  80,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 45 ; catch rate
-	db 142 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, REPTILE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, CUT, STRENGTH, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/charmeleon.asm"
 
 CharizardBaseData:: ; 0x514c4
-	db CHARIZARD ; 006
-
-	db  78,  84,  78, 100, 109,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FLYING
-	db 45 ; catch rate
-	db 209 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, REPTILE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, SWIFT, DEFENSE_CURL, REST, ATTRACT, STEEL_WING, FIRE_PUNCH, FURY_CUTTER, CUT, FLY, STRENGTH, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/charizard.asm"
 
 SquirtleBaseData:: ; 0x514e4
-	db SQUIRTLE ; 007
-
-	db  44,  48,  65,  43,  50,  64
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 45 ; catch rate
-	db 66 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/squirtle.asm"
 
 WartortleBaseData:: ; 0x51504
-	db WARTORTLE ; 008
-
-	db  59,  63,  80,  58,  65,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 45 ; catch rate
-	db 143 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/wartortle.asm"
 
 BlastoiseBaseData:: ; 0x51524
-	db BLASTOISE ; 009
-
-	db  79,  83, 100,  78,  85, 105
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 45 ; catch rate
-	db 210 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/blastoise.asm"
 
 CaterpieBaseData:: ; 0x51544
-	db CATERPIE ; 010
-
-	db  45,  30,  35,  45,  20,  20
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, BUG
-	db 255 ; catch rate
-	db 53 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm
-	; end
+INCLUDE "data/base_stats/caterpie.asm"
 
 MetapodBaseData:: ; 0x51564
-	db METAPOD ; 011
-
-	db  50,  20,  55,  30,  25,  25
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, BUG
-	db 120 ; catch rate
-	db 72 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm
-	; end
+INCLUDE "data/base_stats/metapod.asm"
 
 ButterfreeBaseData:: ; 0x51584
-	db BUTTERFREE ; 012
-
-	db  60,  45,  50,  70,  80,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, FLYING
-	db 45 ; catch rate
-	db 160 ; base exp
-	db NO_ITEM ; item 1
-	db SILVERPOWDER ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, NIGHTMARE, FLASH
-	; end
+INCLUDE "data/base_stats/butterfree.asm"
 
 WeedleBaseData:: ; 0x515a4
-	db WEEDLE ; 013
-
-	db  40,  35,  30,  50,  20,  20
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, POISON
-	db 255 ; catch rate
-	db 52 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm
-	; end
+INCLUDE "data/base_stats/weedle.asm"
 
 KakunaBaseData:: ; 0x515c4
-	db KAKUNA ; 014
-
-	db  45,  25,  50,  35,  25,  25
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, POISON
-	db 120 ; catch rate
-	db 71 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm
-	; end
+INCLUDE "data/base_stats/kakuna.asm"
 
 BeedrillBaseData:: ; 0x515e4
-	db BEEDRILL ; 015
-
-	db  65,  80,  40,  75,  45,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, POISON
-	db 45 ; catch rate
-	db 159 ; base exp
-	db NO_ITEM ; item 1
-	db POISON_BARB ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SWIFT, REST, ATTRACT, FURY_CUTTER, CUT
-	; end
+INCLUDE "data/base_stats/beedrill.asm"
 
 PidgeyBaseData:: ; 0x51604
-	db PIDGEY ; 016
-
-	db  40,  45,  40,  56,  35,  35
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, FLYING
-	db 255 ; catch rate
-	db 55 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FLY
-	; end
+INCLUDE "data/base_stats/pidgey.asm"
 
 PidgeottoBaseData:: ; 0x51624
-	db PIDGEOTTO ; 017
-
-	db  63,  60,  55,  71,  50,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, FLYING
-	db 120 ; catch rate
-	db 113 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FLY
-	; end
+INCLUDE "data/base_stats/pidgeotto.asm"
 
 PidgeotBaseData:: ; 0x51644
-	db PIDGEOT ; 018
-
-	db  83,  80,  75,  91,  70,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, FLYING
-	db 45 ; catch rate
-	db 172 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FLY
-	; end
+INCLUDE "data/base_stats/pidgeot.asm"
 
 RattataBaseData:: ; 0x51664
-	db RATTATA ; 019
-
-	db  30,  56,  35,  72,  25,  35
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 255 ; catch rate
-	db 57 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DIG, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, THIEF
-	; end
+INCLUDE "data/base_stats/rattata.asm"
 
 RaticateBaseData:: ; 0x51684
-	db RATICATE ; 020
-
-	db  55,  81,  60,  97,  50,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 90 ; catch rate
-	db 116 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DIG, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, THIEF, CUT, STRENGTH, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/raticate.asm"
 
 SpearowBaseData:: ; 0x516a4
-	db SPEAROW ; 021
-
-	db  40,  60,  30,  70,  31,  31
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, FLYING
-	db 255 ; catch rate
-	db 58 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FLY
-	; end
+INCLUDE "data/base_stats/spearow.asm"
 
 FearowBaseData:: ; 0x516c4
-	db FEAROW ; 022
-
-	db  65,  90,  65, 100,  61,  61
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, FLYING
-	db 90 ; catch rate
-	db 162 ; base exp
-	db NO_ITEM ; item 1
-	db SHARP_BEAK ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FLY
-	; end
+INCLUDE "data/base_stats/fearow.asm"
 
 EkansBaseData:: ; 0x516e4
-	db EKANS ; 023
-
-	db  35,  60,  44,  55,  40,  54
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, POISON
-	db 255 ; catch rate
-	db 62 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, REPTILE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, STRENGTH
-	; end
+INCLUDE "data/base_stats/ekans.asm"
 
 ArbokBaseData:: ; 0x51704
-	db ARBOK ; 024
-
-	db  60,  85,  69,  80,  65,  79
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, POISON
-	db 90 ; catch rate
-	db 147 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, REPTILE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, STRENGTH
-	; end
+INCLUDE "data/base_stats/arbok.asm"
 
 PikachuBaseData:: ; 0x51724
-	db PIKACHU ; 025
-
-	db  35,  55,  30,  90,  50,  40
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, ELECTRIC
-	db 190 ; catch rate
-	db 82 ; base exp
-	db NO_ITEM ; item 1
-	db BERRY ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 10 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FAIRY ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, STRENGTH, FLASH, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/pikachu.asm"
 
 RaichuBaseData:: ; 0x51744
-	db RAICHU ; 026
-
-	db  60,  90,  55, 100,  90,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, ELECTRIC
-	db 75 ; catch rate
-	db 122 ; base exp
-	db NO_ITEM ; item 1
-	db BERRY ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 10 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FAIRY ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, STRENGTH, FLASH, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/raichu.asm"
 
 SandshrewBaseData:: ; 0x51764
-	db SANDSHREW ; 027
-
-	db  50,  75,  85,  40,  20,  30
-	;   hp  atk  def  spd  sat  sdf
-
-	db GROUND, GROUND
-	db 255 ; catch rate
-	db 93 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, STRENGTH
-	; end
+INCLUDE "data/base_stats/sandshrew.asm"
 
 SandslashBaseData:: ; 0x51784
-	db SANDSLASH ; 028
-
-	db  75, 100, 110,  65,  45,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db GROUND, GROUND
-	db 90 ; catch rate
-	db 163 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, STRENGTH
-	; end
+INCLUDE "data/base_stats/sandslash.asm"
 
 Nidoran_FBaseData:: ; 0x517a4
-	db NIDORAN_F ; 029
-
-	db  55,  47,  52,  41,  40,  40
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, POISON
-	db 235 ; catch rate
-	db 59 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 254 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/nidoran_f.asm"
 
 NidorinaBaseData:: ; 0x517c4
-	db NIDORINA ; 030
-
-	db  70,  62,  67,  56,  55,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, POISON
-	db 120 ; catch rate
-	db 117 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 254 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, STRENGTH, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/nidorina.asm"
 
 NidoqueenBaseData:: ; 0x517e4
-	db NIDOQUEEN ; 031
-
-	db  90,  82,  87,  76,  75,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, GROUND
-	db 45 ; catch rate
-	db 194 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 254 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/nidoqueen.asm"
 
 Nidoran_MBaseData:: ; 0x51804
-	db NIDORAN_M ; 032
-
-	db  46,  57,  40,  50,  40,  40
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, POISON
-	db 235 ; catch rate
-	db 60 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 0 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/nidoran_m.asm"
 
 NidorinoBaseData:: ; 0x51824
-	db NIDORINO ; 033
-
-	db  61,  72,  57,  65,  55,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, POISON
-	db 120 ; catch rate
-	db 118 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 0 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, STRENGTH, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/nidorino.asm"
 
 NidokingBaseData:: ; 0x51844
-	db NIDOKING ; 034
-
-	db  81,  92,  77,  85,  85,  75
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, GROUND
-	db 45 ; catch rate
-	db 195 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 0 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/nidoking.asm"
 
 ClefairyBaseData:: ; 0x51864
-	db CLEFAIRY ; 035
-
-	db  70,  45,  48,  35,  60,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 150 ; catch rate
-	db 68 ; base exp
-	db MYSTERYBERRY ; item 1
-	db MOON_STONE ; item 2
-	db 191 ; gender
-	db 100 ; unknown
-	db 10 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn FAIRY, FAIRY ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, DETECT, REST, ATTRACT, FIRE_PUNCH, NIGHTMARE, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/clefairy.asm"
 
 ClefableBaseData:: ; 0x51884
-	db CLEFABLE ; 036
-
-	db  95,  70,  73,  60,  85,  90
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 25 ; catch rate
-	db 129 ; base exp
-	db MYSTERYBERRY ; item 1
-	db MOON_STONE ; item 2
-	db 191 ; gender
-	db 100 ; unknown
-	db 10 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn FAIRY, FAIRY ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, DETECT, REST, ATTRACT, FIRE_PUNCH, NIGHTMARE, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/clefable.asm"
 
 VulpixBaseData:: ; 0x518a4
-	db VULPIX ; 037
-
-	db  38,  41,  40,  65,  50,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 190 ; catch rate
-	db 63 ; base exp
-	db BURNT_BERRY ; item 1
-	db BURNT_BERRY ; item 2
-	db 191 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, REST, ATTRACT, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/vulpix.asm"
 
 NinetalesBaseData:: ; 0x518c4
-	db NINETALES ; 038
-
-	db  73,  76,  75, 100,  81, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 75 ; catch rate
-	db 178 ; base exp
-	db BURNT_BERRY ; item 1
-	db BURNT_BERRY ; item 2
-	db 191 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, REST, ATTRACT, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/ninetales.asm"
 
 JigglypuffBaseData:: ; 0x518e4
-	db JIGGLYPUFF ; 039
-
-	db 115,  45,  20,  20,  45,  25
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 170 ; catch rate
-	db 76 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 191 ; gender
-	db 100 ; unknown
-	db 10 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn FAIRY, FAIRY ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, DETECT, REST, ATTRACT, FIRE_PUNCH, NIGHTMARE, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/jigglypuff.asm"
 
 WigglytuffBaseData:: ; 0x51904
-	db WIGGLYTUFF ; 040
-
-	db 140,  70,  45,  45,  75,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 50 ; catch rate
-	db 109 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 191 ; gender
-	db 100 ; unknown
-	db 10 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn FAIRY, FAIRY ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, DETECT, REST, ATTRACT, FIRE_PUNCH, NIGHTMARE, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/wigglytuff.asm"
 
 ZubatBaseData:: ; 0x51924
-	db ZUBAT ; 041
-
-	db  40,  45,  35,  55,  30,  40
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, FLYING
-	db 255 ; catch rate
-	db 54 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING
-	; end
+INCLUDE "data/base_stats/zubat.asm"
 
 GolbatBaseData:: ; 0x51944
-	db GOLBAT ; 042
-
-	db  75,  80,  70,  90,  65,  75
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, FLYING
-	db 90 ; catch rate
-	db 171 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING
-	; end
+INCLUDE "data/base_stats/golbat.asm"
 
 OddishBaseData:: ; 0x51964
-	db ODDISH ; 043
-
-	db  45,  50,  55,  30,  75,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, POISON
-	db 255 ; catch rate
-	db 78 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn PLANT, PLANT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
-	; end
+INCLUDE "data/base_stats/oddish.asm"
 
 GloomBaseData:: ; 0x51984
-	db GLOOM ; 044
-
-	db  60,  65,  70,  40,  85,  75
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, POISON
-	db 120 ; catch rate
-	db 132 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn PLANT, PLANT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
-	; end
+INCLUDE "data/base_stats/gloom.asm"
 
 VileplumeBaseData:: ; 0x519a4
-	db VILEPLUME ; 045
-
-	db  75,  80,  85,  50, 100,  90
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, POISON
-	db 45 ; catch rate
-	db 184 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn PLANT, PLANT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
-	; end
+INCLUDE "data/base_stats/vileplume.asm"
 
 ParasBaseData:: ; 0x519c4
-	db PARAS ; 046
-
-	db  35,  70,  55,  25,  45,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, GRASS
-	db 190 ; catch rate
-	db 70 ; base exp
-	db TINYMUSHROOM ; item 1
-	db BIG_MUSHROOM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, PLANT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, FLASH
-	; end
+INCLUDE "data/base_stats/paras.asm"
 
 ParasectBaseData:: ; 0x519e4
-	db PARASECT ; 047
-
-	db  60,  95,  80,  30,  60,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, GRASS
-	db 75 ; catch rate
-	db 128 ; base exp
-	db TINYMUSHROOM ; item 1
-	db BIG_MUSHROOM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, PLANT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, FLASH
-	; end
+INCLUDE "data/base_stats/parasect.asm"
 
 VenonatBaseData:: ; 0x51a04
-	db VENONAT ; 048
-
-	db  60,  55,  50,  45,  40,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, POISON
-	db 190 ; catch rate
-	db 75 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SWIFT, REST, ATTRACT, THIEF
-	; end
+INCLUDE "data/base_stats/venonat.asm"
 
 VenomothBaseData:: ; 0x51a24
-	db VENOMOTH ; 049
-
-	db  70,  65,  60,  90,  90,  75
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, POISON
-	db 75 ; catch rate
-	db 138 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SWIFT, REST, ATTRACT, THIEF, FLASH
-	; end
+INCLUDE "data/base_stats/venomoth.asm"
 
 DiglettBaseData:: ; 0x51a44
-	db DIGLETT ; 050
-
-	db  10,  55,  25,  95,  35,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db GROUND, GROUND
-	db 255 ; catch rate
-	db 81 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, CUT
-	; end
+INCLUDE "data/base_stats/diglett.asm"
 
 DugtrioBaseData:: ; 0x51a64
-	db DUGTRIO ; 051
-
-	db  35,  80,  50, 120,  50,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db GROUND, GROUND
-	db 50 ; catch rate
-	db 153 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, CUT
-	; end
+INCLUDE "data/base_stats/dugtrio.asm"
 
 MeowthBaseData:: ; 0x51a84
-	db MEOWTH ; 052
-
-	db  40,  45,  35,  90,  40,  40
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 255 ; catch rate
-	db 69 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/meowth.asm"
 
 PersianBaseData:: ; 0x51aa4
-	db PERSIAN ; 053
-
-	db  65,  70,  60, 115,  65,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 90 ; catch rate
-	db 148 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/persian.asm"
 
 PsyduckBaseData:: ; 0x51ac4
-	db PSYDUCK ; 054
-
-	db  50,  52,  48,  55,  65,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 190 ; catch rate
-	db 80 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, STRENGTH, FLASH, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/psyduck.asm"
 
 GolduckBaseData:: ; 0x51ae4
-	db GOLDUCK ; 055
-
-	db  80,  82,  78,  85,  95,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 75 ; catch rate
-	db 174 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, FURY_CUTTER, SURF, STRENGTH, FLASH, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/golduck.asm"
 
 MankeyBaseData:: ; 0x51b04
-	db MANKEY ; 056
-
-	db  40,  80,  35,  70,  35,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIGHTING, FIGHTING
-	db 190 ; catch rate
-	db 74 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/mankey.asm"
 
 PrimeapeBaseData:: ; 0x51b24
-	db PRIMEAPE ; 057
-
-	db  65, 105,  60,  95,  60,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIGHTING, FIGHTING
-	db 75 ; catch rate
-	db 149 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/primeape.asm"
 
 GrowlitheBaseData:: ; 0x51b44
-	db GROWLITHE ; 058
-
-	db  55,  70,  45,  60,  70,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 190 ; catch rate
-	db 91 ; base exp
-	db BURNT_BERRY ; item 1
-	db BURNT_BERRY ; item 2
-	db 63 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, REST, ATTRACT, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/growlithe.asm"
 
 ArcanineBaseData:: ; 0x51b64
-	db ARCANINE ; 059
-
-	db  90, 110,  80,  95, 100,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 75 ; catch rate
-	db 213 ; base exp
-	db BURNT_BERRY ; item 1
-	db BURNT_BERRY ; item 2
-	db 63 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, REST, ATTRACT, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/arcanine.asm"
 
 PoliwagBaseData:: ; 0x51b84
-	db POLIWAG ; 060
-
-	db  40,  50,  40,  90,  40,  40
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 255 ; catch rate
-	db 77 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn AMPHIBIAN, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, THIEF, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/poliwag.asm"
 
 PoliwhirlBaseData:: ; 0x51ba4
-	db POLIWHIRL ; 061
-
-	db  65,  65,  65,  90,  50,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 120 ; catch rate
-	db 131 ; base exp
-	db NO_ITEM ; item 1
-	db KINGS_ROCK ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn AMPHIBIAN, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/poliwhirl.asm"
 
 PoliwrathBaseData:: ; 0x51bc4
-	db POLIWRATH ; 062
-
-	db  90,  85,  95,  70,  70,  90
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, FIGHTING
-	db 45 ; catch rate
-	db 185 ; base exp
-	db NO_ITEM ; item 1
-	db KINGS_ROCK ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn AMPHIBIAN, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/poliwrath.asm"
 
 AbraBaseData:: ; 0x51be4
-	db ABRA ; 063
-
-	db  25,  20,  15,  90, 105,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, PSYCHIC
-	db 200 ; catch rate
-	db 73 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 63 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, THIEF, FIRE_PUNCH, NIGHTMARE, FLASH
-	; end
+INCLUDE "data/base_stats/abra.asm"
 
 KadabraBaseData:: ; 0x51c04
-	db KADABRA ; 064
-
-	db  40,  35,  30, 105, 120,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, PSYCHIC
-	db 100 ; catch rate
-	db 145 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 63 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DIG, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, THIEF, FIRE_PUNCH, NIGHTMARE, FLASH
-	; end
+INCLUDE "data/base_stats/kadabra.asm"
 
 AlakazamBaseData:: ; 0x51c24
-	db ALAKAZAM ; 065
-
-	db  55,  50,  45, 120, 135,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, PSYCHIC
-	db 50 ; catch rate
-	db 186 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 63 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DIG, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, THIEF, FIRE_PUNCH, NIGHTMARE, FLASH
-	; end
+INCLUDE "data/base_stats/alakazam.asm"
 
 MachopBaseData:: ; 0x51c44
-	db MACHOP ; 066
-
-	db  70,  80,  50,  35,  35,  35
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIGHTING, FIGHTING
-	db 180 ; catch rate
-	db 88 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 63 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/machop.asm"
 
 MachokeBaseData:: ; 0x51c64
-	db MACHOKE ; 067
-
-	db  80, 100,  70,  45,  50,  60
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIGHTING, FIGHTING
-	db 90 ; catch rate
-	db 146 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 63 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/machoke.asm"
 
 MachampBaseData:: ; 0x51c84
-	db MACHAMP ; 068
-
-	db  90, 130,  80,  55,  65,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIGHTING, FIGHTING
-	db 45 ; catch rate
-	db 193 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 63 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/machamp.asm"
 
 BellsproutBaseData:: ; 0x51ca4
-	db BELLSPROUT ; 069
-
-	db  50,  75,  35,  40,  70,  30
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, POISON
-	db 255 ; catch rate
-	db 84 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn PLANT, PLANT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
-	; end
+INCLUDE "data/base_stats/bellsprout.asm"
 
 WeepinbellBaseData:: ; 0x51cc4
-	db WEEPINBELL ; 070
-
-	db  65,  90,  50,  55,  85,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, POISON
-	db 120 ; catch rate
-	db 151 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn PLANT, PLANT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
-	; end
+INCLUDE "data/base_stats/weepinbell.asm"
 
 VictreebelBaseData:: ; 0x51ce4
-	db VICTREEBEL ; 071
-
-	db  80, 105,  65,  70, 100,  60
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, POISON
-	db 45 ; catch rate
-	db 191 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn PLANT, PLANT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
-	; end
+INCLUDE "data/base_stats/victreebel.asm"
 
 TentacoolBaseData:: ; 0x51d04
-	db TENTACOOL ; 072
-
-	db  40,  40,  35,  70,  50, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, POISON
-	db 190 ; catch rate
-	db 105 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn INVERTEBRATE, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, SURF, WHIRLPOOL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/tentacool.asm"
 
 TentacruelBaseData:: ; 0x51d24
-	db TENTACRUEL ; 073
-
-	db  80,  70,  65, 100,  80, 120
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, POISON
-	db 60 ; catch rate
-	db 205 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn INVERTEBRATE, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, SURF, WHIRLPOOL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/tentacruel.asm"
 
 GeodudeBaseData:: ; 0x51d44
-	db GEODUDE ; 074
-
-	db  40,  80, 100,  20,  30,  30
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, GROUND
-	db 255 ; catch rate
-	db 86 ; base exp
-	db NO_ITEM ; item 1
-	db EVERSTONE ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn INANIMATE, INANIMATE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, REST, ATTRACT, FIRE_PUNCH, STRENGTH, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/geodude.asm"
 
 GravelerBaseData:: ; 0x51d64
-	db GRAVELER ; 075
-
-	db  55,  95, 115,  35,  45,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, GROUND
-	db 120 ; catch rate
-	db 134 ; base exp
-	db NO_ITEM ; item 1
-	db EVERSTONE ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn INANIMATE, INANIMATE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, REST, ATTRACT, FIRE_PUNCH, STRENGTH, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/graveler.asm"
 
 GolemBaseData:: ; 0x51d84
-	db GOLEM ; 076
-
-	db  80, 110, 130,  45,  55,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, GROUND
-	db 45 ; catch rate
-	db 177 ; base exp
-	db NO_ITEM ; item 1
-	db EVERSTONE ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn INANIMATE, INANIMATE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, STRENGTH, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/golem.asm"
 
 PonytaBaseData:: ; 0x51da4
-	db PONYTA ; 077
-
-	db  50,  85,  55,  90,  65,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 190 ; catch rate
-	db 152 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, REST, ATTRACT, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/ponyta.asm"
 
 RapidashBaseData:: ; 0x51dc4
-	db RAPIDASH ; 078
-
-	db  65, 100,  70, 105,  80,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 60 ; catch rate
-	db 192 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, REST, ATTRACT, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/rapidash.asm"
 
 SlowpokeBaseData:: ; 0x51de4
-	db SLOWPOKE ; 079
-
-	db  90,  65,  65,  15,  40,  40
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, PSYCHIC
-	db 190 ; catch rate
-	db 99 ; base exp
-	db NO_ITEM ; item 1
-	db KINGS_ROCK ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn MONSTER, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DREAM_EATER, REST, ATTRACT, NIGHTMARE, SURF, STRENGTH, FLASH, FLAMETHROWER, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/slowpoke.asm"
 
 SlowbroBaseData:: ; 0x51e04
-	db SLOWBRO ; 080
-
-	db  95,  75, 110,  30, 100,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, PSYCHIC
-	db 75 ; catch rate
-	db 164 ; base exp
-	db NO_ITEM ; item 1
-	db KINGS_ROCK ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn MONSTER, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DREAM_EATER, REST, ATTRACT, FURY_CUTTER, NIGHTMARE, SURF, STRENGTH, FLASH, FLAMETHROWER, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/slowbro.asm"
 
 MagnemiteBaseData:: ; 0x51e24
-	db MAGNEMITE ; 081
-
-	db  25,  35,  70,  45,  95,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, STEEL
-	db 190 ; catch rate
-	db 89 ; base exp
-	db NO_ITEM ; item 1
-	db METAL_COAT ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INANIMATE, INANIMATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, FLASH, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/magnemite.asm"
 
 MagnetonBaseData:: ; 0x51e44
-	db MAGNETON ; 082
-
-	db  50,  60,  95,  70, 120,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, STEEL
-	db 60 ; catch rate
-	db 161 ; base exp
-	db NO_ITEM ; item 1
-	db METAL_COAT ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INANIMATE, INANIMATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, FLASH, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/magneton.asm"
 
 Farfetch_DBaseData:: ; 0x51e64
-	db FARFETCH_D ; 083
-
-	db  52,  65,  55,  60,  58,  62
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, FLYING
-	db 45 ; catch rate
-	db 94 ; base exp
-	db NO_ITEM ; item 1
-	db STICK ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AVIAN, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, CUT, FLY
-	; end
+INCLUDE "data/base_stats/farfetch_d.asm"
 
 DoduoBaseData:: ; 0x51e84
-	db DODUO ; 084
-
-	db  35,  85,  45,  75,  35,  35
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, FLYING
-	db 190 ; catch rate
-	db 96 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, THIEF, STEEL_WING, FLY
-	; end
+INCLUDE "data/base_stats/doduo.asm"
 
 DodrioBaseData:: ; 0x51ea4
-	db DODRIO ; 085
-
-	db  60, 110,  70, 100,  60,  60
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, FLYING
-	db 45 ; catch rate
-	db 158 ; base exp
-	db NO_ITEM ; item 1
-	db SHARP_BEAK ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, THIEF, STEEL_WING, FLY
-	; end
+INCLUDE "data/base_stats/dodrio.asm"
 
 SeelBaseData:: ; 0x51ec4
-	db SEEL ; 086
-
-	db  65,  45,  55,  45,  45,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 190 ; catch rate
-	db 100 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/seel.asm"
 
 DewgongBaseData:: ; 0x51ee4
-	db DEWGONG ; 087
-
-	db  90,  70,  80,  70,  70,  95
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, ICE
-	db 75 ; catch rate
-	db 176 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/dewgong.asm"
 
 GrimerBaseData:: ; 0x51f04
-	db GRIMER ; 088
-
-	db  80,  80,  50,  25,  40,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, POISON
-	db 190 ; catch rate
-	db 90 ; base exp
-	db NO_ITEM ; item 1
-	db NUGGET ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMORPHOUS, AMORPHOUS ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, FIRE_BLAST, THUNDERPUNCH, REST, ATTRACT, THIEF, FIRE_PUNCH, FLAMETHROWER, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/grimer.asm"
 
 MukBaseData:: ; 0x51f24
-	db MUK ; 089
-
-	db 105, 105,  75,  50,  65, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, POISON
-	db 75 ; catch rate
-	db 157 ; base exp
-	db NO_ITEM ; item 1
-	db NUGGET ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMORPHOUS, AMORPHOUS ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, FIRE_BLAST, THUNDERPUNCH, REST, ATTRACT, THIEF, FIRE_PUNCH, FLAMETHROWER, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/muk.asm"
 
 ShellderBaseData:: ; 0x51f44
-	db SHELLDER ; 090
-
-	db  30,  65, 100,  40,  45,  25
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 190 ; catch rate
-	db 97 ; base exp
-	db PEARL ; item 1
-	db BIG_PEARL ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn INVERTEBRATE, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WHIRLPOOL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/shellder.asm"
 
 CloysterBaseData:: ; 0x51f64
-	db CLOYSTER ; 091
-
-	db  50,  95, 180,  70,  85,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, ICE
-	db 60 ; catch rate
-	db 203 ; base exp
-	db PEARL ; item 1
-	db BIG_PEARL ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn INVERTEBRATE, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WHIRLPOOL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/cloyster.asm"
 
 GastlyBaseData:: ; 0x51f84
-	db GASTLY ; 092
-
-	db  30,  35,  30,  80, 100,  35
-	;   hp  atk  def  spd  sat  sdf
-
-	db GHOST, POISON
-	db 190 ; catch rate
-	db 95 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn AMORPHOUS, AMORPHOUS ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/gastly.asm"
 
 HaunterBaseData:: ; 0x51fa4
-	db HAUNTER ; 093
-
-	db  45,  50,  45,  95, 115,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db GHOST, POISON
-	db 90 ; catch rate
-	db 126 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn AMORPHOUS, AMORPHOUS ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/haunter.asm"
 
 GengarBaseData:: ; 0x51fc4
-	db GENGAR ; 094
-
-	db  60,  65,  60, 110, 130,  75
-	;   hp  atk  def  spd  sat  sdf
-
-	db GHOST, POISON
-	db 45 ; catch rate
-	db 190 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn AMORPHOUS, AMORPHOUS ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, THIEF, FIRE_PUNCH, NIGHTMARE, STRENGTH, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/gengar.asm"
 
 OnixBaseData:: ; 0x51fe4
-	db ONIX ; 095
-
-	db  35,  45, 160,  70,  30,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, GROUND
-	db 45 ; catch rate
-	db 108 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INANIMATE, INANIMATE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, REST, ATTRACT, STRENGTH
-	; end
+INCLUDE "data/base_stats/onix.asm"
 
 DrowzeeBaseData:: ; 0x52004
-	db DROWZEE ; 096
-
-	db  60,  48,  45,  42,  43,  90
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, PSYCHIC
-	db 190 ; catch rate
-	db 102 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, FIRE_PUNCH, NIGHTMARE, FLASH
-	; end
+INCLUDE "data/base_stats/drowzee.asm"
 
 HypnoBaseData:: ; 0x52024
-	db HYPNO ; 097
-
-	db  85,  73,  70,  67,  73, 115
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, PSYCHIC
-	db 75 ; catch rate
-	db 165 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, FIRE_PUNCH, NIGHTMARE, FLASH
-	; end
+INCLUDE "data/base_stats/hypno.asm"
 
 KrabbyBaseData:: ; 0x52044
-	db KRABBY ; 098
-
-	db  30, 105,  90,  50,  25,  25
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 225 ; catch rate
-	db 115 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INVERTEBRATE, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, SURF, STRENGTH, WHIRLPOOL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/krabby.asm"
 
 KinglerBaseData:: ; 0x52064
-	db KINGLER ; 099
-
-	db  55, 130, 115,  75,  50,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 60 ; catch rate
-	db 206 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INVERTEBRATE, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, SURF, STRENGTH, WHIRLPOOL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/kingler.asm"
 
 VoltorbBaseData:: ; 0x52084
-	db VOLTORB ; 100
-
-	db  40,  30,  50, 100,  55,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, ELECTRIC
-	db 190 ; catch rate
-	db 103 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INANIMATE, INANIMATE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, FLASH, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/voltorb.asm"
 
 ElectrodeBaseData:: ; 0x520a4
-	db ELECTRODE ; 101
-
-	db  60,  50,  70, 140,  80,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, ELECTRIC
-	db 60 ; catch rate
-	db 150 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INANIMATE, INANIMATE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, FLASH, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/electrode.asm"
 
 ExeggcuteBaseData:: ; 0x520c4
-	db EXEGGCUTE ; 102
-
-	db  60,  40,  80,  40,  60,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, PSYCHIC
-	db 90 ; catch rate
-	db 98 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn PLANT, PLANT ; egg groups
-
-	; tmhm
-	tmhm CURSE, ROLLOUT, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, STRENGTH, FLASH
-	; end
+INCLUDE "data/base_stats/exeggcute.asm"
 
 ExeggutorBaseData:: ; 0x520e4
-	db EXEGGUTOR ; 103
-
-	db  95,  95,  85,  55, 125,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, PSYCHIC
-	db 45 ; catch rate
-	db 212 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn PLANT, PLANT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, STRENGTH, FLASH
-	; end
+INCLUDE "data/base_stats/exeggutor.asm"
 
 CuboneBaseData:: ; 0x52104
-	db CUBONE ; 104
-
-	db  50,  50,  95,  35,  40,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db GROUND, GROUND
-	db 190 ; catch rate
-	db 87 ; base exp
-	db NO_ITEM ; item 1
-	db THICK_CLUB ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn MONSTER, MONSTER ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLAMETHROWER, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/cubone.asm"
 
 MarowakBaseData:: ; 0x52124
-	db MAROWAK ; 105
-
-	db  60,  80, 110,  45,  50,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db GROUND, GROUND
-	db 75 ; catch rate
-	db 124 ; base exp
-	db NO_ITEM ; item 1
-	db THICK_CLUB ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn MONSTER, MONSTER ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLAMETHROWER, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/marowak.asm"
 
 HitmonleeBaseData:: ; 0x52144
-	db HITMONLEE ; 106
-
-	db  50, 120,  53,  87,  35, 110
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIGHTING, FIGHTING
-	db 45 ; catch rate
-	db 139 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 0 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STRENGTH
-	; end
+INCLUDE "data/base_stats/hitmonlee.asm"
 
 HitmonchanBaseData:: ; 0x52164
-	db HITMONCHAN ; 107
-
-	db  50, 105,  79,  76,  35, 110
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIGHTING, FIGHTING
-	db 45 ; catch rate
-	db 140 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 0 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH
-	; end
+INCLUDE "data/base_stats/hitmonchan.asm"
 
 LickitungBaseData:: ; 0x52184
-	db LICKITUNG ; 108
-
-	db  90,  55,  75,  30,  60,  75
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 45 ; catch rate
-	db 127 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn MONSTER, MONSTER ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, THIEF, FIRE_PUNCH, NIGHTMARE, CUT, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/lickitung.asm"
 
 KoffingBaseData:: ; 0x521a4
-	db KOFFING ; 109
-
-	db  40,  65,  95,  35,  60,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, POISON
-	db 190 ; catch rate
-	db 114 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMORPHOUS, AMORPHOUS ; egg groups
-
-	; tmhm
-	tmhm CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, FIRE_BLAST, REST, ATTRACT, THIEF, FLAMETHROWER, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/koffing.asm"
 
 WeezingBaseData:: ; 0x521c4
-	db WEEZING ; 110
-
-	db  65,  90, 120,  60,  85,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, POISON
-	db 60 ; catch rate
-	db 173 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMORPHOUS, AMORPHOUS ; egg groups
-
-	; tmhm
-	tmhm CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, FIRE_BLAST, REST, ATTRACT, THIEF, FLAMETHROWER, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/weezing.asm"
 
 RhyhornBaseData:: ; 0x521e4
-	db RHYHORN ; 111
-
-	db  80,  85,  95,  25,  30,  30
-	;   hp  atk  def  spd  sat  sdf
-
-	db GROUND, ROCK
-	db 120 ; catch rate
-	db 135 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn MONSTER, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, REST, ATTRACT, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/rhyhorn.asm"
 
 RhydonBaseData:: ; 0x52204
-	db RHYDON ; 112
-
-	db 105, 130, 120,  40,  45,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db GROUND, ROCK
-	db 60 ; catch rate
-	db 204 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn MONSTER, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, THUNDERPUNCH, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/rhydon.asm"
 
 ChanseyBaseData:: ; 0x52224
-	db CHANSEY ; 113
-
-	db 250,  05,  05,  50,  35, 105
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 30 ; catch rate
-	db 255 ; base exp
-	db NO_ITEM ; item 1
-	db LUCKY_EGG ; item 2
-	db 254 ; gender
-	db 100 ; unknown
-	db 40 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn FAIRY, FAIRY ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, DREAM_EATER, REST, ATTRACT, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/chansey.asm"
 
 TangelaBaseData:: ; 0x52244
-	db TANGELA ; 114
-
-	db  65,  55, 115,  60, 100,  40
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, GRASS
-	db 45 ; catch rate
-	db 166 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn PLANT, PLANT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, CUT, FLASH
-	; end
+INCLUDE "data/base_stats/tangela.asm"
 
 KangaskhanBaseData:: ; 0x52264
-	db KANGASKHAN ; 115
-
-	db 105,  95,  80,  90,  40,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 45 ; catch rate
-	db 175 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 254 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn MONSTER, MONSTER ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, THUNDERPUNCH, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/kangaskhan.asm"
 
 HorseaBaseData:: ; 0x52284
-	db HORSEA ; 116
-
-	db  30,  40,  70,  60,  70,  25
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 225 ; catch rate
-	db 83 ; base exp
-	db NO_ITEM ; item 1
-	db DRAGON_SCALE ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, REPTILE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, DRAGONBREATH, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/horsea.asm"
 
 SeadraBaseData:: ; 0x522a4
-	db SEADRA ; 117
-
-	db  55,  65,  95,  85,  95,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 75 ; catch rate
-	db 155 ; base exp
-	db NO_ITEM ; item 1
-	db DRAGON_SCALE ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, REPTILE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, DRAGONBREATH, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/seadra.asm"
 
 GoldeenBaseData:: ; 0x522c4
-	db GOLDEEN ; 118
-
-	db  45,  67,  60,  63,  35,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 225 ; catch rate
-	db 111 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FISH, FISH ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WATERFALL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/goldeen.asm"
 
 SeakingBaseData:: ; 0x522e4
-	db SEAKING ; 119
-
-	db  80,  92,  65,  68,  65,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 60 ; catch rate
-	db 170 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FISH, FISH ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WATERFALL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/seaking.asm"
 
 StaryuBaseData:: ; 0x52304
-	db STARYU ; 120
-
-	db  30,  45,  55,  85,  70,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 225 ; catch rate
-	db 106 ; base exp
-	db STARDUST ; item 1
-	db STAR_PIECE ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn INVERTEBRATE, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, FLASH, WHIRLPOOL, WATERFALL, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/staryu.asm"
 
 StarmieBaseData:: ; 0x52324
-	db STARMIE ; 121
-
-	db  60,  75,  85, 115, 100,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, PSYCHIC
-	db 60 ; catch rate
-	db 207 ; base exp
-	db STARDUST ; item 1
-	db STAR_PIECE ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn INVERTEBRATE, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, REST, ATTRACT, NIGHTMARE, SURF, FLASH, WHIRLPOOL, WATERFALL, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/starmie.asm"
 
 Mr__MimeBaseData:: ; 0x52344
-	db MR__MIME ; 122
-
-	db  40,  45,  65,  90, 100, 120
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, PSYCHIC
-	db 45 ; catch rate
-	db 136 ; base exp
-	db NO_ITEM ; item 1
-	db MYSTERYBERRY ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, SOLARBEAM, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, THIEF, FIRE_PUNCH, NIGHTMARE, FLASH, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/mr__mime.asm"
 
 ScytherBaseData:: ; 0x52364
-	db SCYTHER ; 123
-
-	db  70, 110,  80, 105,  55,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, FLYING
-	db 45 ; catch rate
-	db 187 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FURY_CUTTER, CUT
-	; end
+INCLUDE "data/base_stats/scyther.asm"
 
 JynxBaseData:: ; 0x52384
-	db JYNX ; 124
-
-	db  65,  50,  35,  95, 115,  95
-	;   hp  atk  def  spd  sat  sdf
-
-	db ICE, PSYCHIC
-	db 45 ; catch rate
-	db 137 ; base exp
-	db ICE_BERRY ; item 1
-	db ICE_BERRY ; item 2
-	db 254 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SWEET_SCENT, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/jynx.asm"
 
 ElectabuzzBaseData:: ; 0x523a4
-	db ELECTABUZZ ; 125
-
-	db  65,  83,  57, 105,  95,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, ELECTRIC
-	db 45 ; catch rate
-	db 156 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 63 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLASH, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/electabuzz.asm"
 
 MagmarBaseData:: ; 0x523c4
-	db MAGMAR ; 126
-
-	db  65,  95,  57,  93, 100,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 45 ; catch rate
-	db 167 ; base exp
-	db BURNT_BERRY ; item 1
-	db BURNT_BERRY ; item 2
-	db 63 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/magmar.asm"
 
 PinsirBaseData:: ; 0x523e4
-	db PINSIR ; 127
-
-	db  65, 125, 100,  85,  55,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, BUG
-	db 45 ; catch rate
-	db 200 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, STRENGTH
-	; end
+INCLUDE "data/base_stats/pinsir.asm"
 
 TaurosBaseData:: ; 0x52404
-	db TAUROS ; 128
-
-	db  75, 100,  95, 110,  40,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 45 ; catch rate
-	db 211 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 0 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, REST, ATTRACT, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/tauros.asm"
 
 MagikarpBaseData:: ; 0x52424
-	db MAGIKARP ; 129
-
-	db  20,  10,  55,  80,  15,  20
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 255 ; catch rate
-	db 20 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 5 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FISH, REPTILE ; egg groups
-
-	; tmhm
-	tmhm
-	; end
+INCLUDE "data/base_stats/magikarp.asm"
 
 GyaradosBaseData:: ; 0x52444
-	db GYARADOS ; 130
-
-	db  95, 125,  79,  81,  60, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, FLYING
-	db 45 ; catch rate
-	db 214 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 5 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FISH, REPTILE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, DRAGONBREATH, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, REST, ATTRACT, SURF, STRENGTH, WHIRLPOOL, WATERFALL, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/gyarados.asm"
 
 LaprasBaseData:: ; 0x52464
-	db LAPRAS ; 131
-
-	db 130,  85,  80,  60,  85,  95
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, ICE
-	db 45 ; catch rate
-	db 219 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 40 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn MONSTER, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, THUNDER, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DREAM_EATER, REST, ATTRACT, NIGHTMARE, SURF, STRENGTH, WHIRLPOOL, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/lapras.asm"
 
 DittoBaseData:: ; 0x52484
-	db DITTO ; 132
-
-	db  48,  48,  48,  48,  48,  48
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 35 ; catch rate
-	db 61 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn LADIES_MAN, LADIES_MAN ; egg groups
-
-	; tmhm
-	tmhm
-	; end
+INCLUDE "data/base_stats/ditto.asm"
 
 EeveeBaseData:: ; 0x524a4
-	db EEVEE ; 133
-
-	db  55,  55,  50,  55,  45,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 45 ; catch rate
-	db 92 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 35 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT
-	; end
+INCLUDE "data/base_stats/eevee.asm"
 
 VaporeonBaseData:: ; 0x524c4
-	db VAPOREON ; 134
-
-	db 130,  65,  60,  65, 110,  95
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 45 ; catch rate
-	db 196 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 35 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/vaporeon.asm"
 
 JolteonBaseData:: ; 0x524e4
-	db JOLTEON ; 135
-
-	db  65,  65,  60, 130, 110,  95
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, ELECTRIC
-	db 45 ; catch rate
-	db 197 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 35 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, FLASH, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/jolteon.asm"
 
 FlareonBaseData:: ; 0x52504
-	db FLAREON ; 136
-
-	db  65, 130,  60,  65,  95, 110
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 45 ; catch rate
-	db 198 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 35 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DETECT, REST, ATTRACT, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/flareon.asm"
 
 PorygonBaseData:: ; 0x52524
-	db PORYGON ; 137
-
-	db  65,  60,  70,  40,  85,  75
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 45 ; catch rate
-	db 130 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INANIMATE, INANIMATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, REST, THIEF, NIGHTMARE, FLASH, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/porygon.asm"
 
 OmanyteBaseData:: ; 0x52544
-	db OMANYTE ; 138
-
-	db  35,  40, 100,  35,  90,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, WATER
-	db 45 ; catch rate
-	db 120 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 30 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, REST, ATTRACT, THIEF, SURF, WHIRLPOOL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/omanyte.asm"
 
 OmastarBaseData:: ; 0x52564
-	db OMASTAR ; 139
-
-	db  70,  60, 125,  55, 115,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, WATER
-	db 45 ; catch rate
-	db 199 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 30 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, REST, ATTRACT, THIEF, SURF, WHIRLPOOL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/omastar.asm"
 
 KabutoBaseData:: ; 0x52584
-	db KABUTO ; 140
-
-	db  30,  80,  90,  55,  55,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, WATER
-	db 45 ; catch rate
-	db 119 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 30 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, REST, ATTRACT, THIEF, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/kabuto.asm"
 
 KabutopsBaseData:: ; 0x525a4
-	db KABUTOPS ; 141
-
-	db  60, 115, 105,  80,  65,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, WATER
-	db 45 ; catch rate
-	db 201 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 30 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, SURF, WHIRLPOOL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/kabutops.asm"
 
 AerodactylBaseData:: ; 0x525c4
-	db AERODACTYL ; 142
-
-	db  80, 105,  65, 130,  60,  75
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, FLYING
-	db 45 ; catch rate
-	db 202 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 35 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, EARTHQUAKE, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, SWIFT, DETECT, REST, ATTRACT, STEEL_WING, FLY, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/aerodactyl.asm"
 
 SnorlaxBaseData:: ; 0x525e4
-	db SNORLAX ; 143
-
-	db 160, 110,  65,  30,  65, 110
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 25 ; catch rate
-	db 154 ; base exp
-	db LEFTOVERS ; item 1
-	db LEFTOVERS ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 40 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn MONSTER, MONSTER ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, THUNDER, EARTHQUAKE, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, FIRE_PUNCH, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/snorlax.asm"
 
 ArticunoBaseData:: ; 0x52604
-	db ARTICUNO ; 144
-
-	db  90,  85, 100,  85,  95, 125
-	;   hp  atk  def  spd  sat  sdf
-
-	db ICE, FLYING
-	db 3 ; catch rate
-	db 215 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 80 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DETECT, REST, STEEL_WING, FLY, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/articuno.asm"
 
 ZapdosBaseData:: ; 0x52624
-	db ZAPDOS ; 145
-
-	db  90,  90,  85, 100, 125,  90
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, FLYING
-	db 3 ; catch rate
-	db 216 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 80 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DETECT, REST, STEEL_WING, FLY, FLASH, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/zapdos.asm"
 
 MoltresBaseData:: ; 0x52644
-	db MOLTRES ; 146
-
-	db  90, 100,  90,  90, 125,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FLYING
-	db 3 ; catch rate
-	db 217 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 80 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, SWIFT, DETECT, REST, STEEL_WING, FLY, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/moltres.asm"
 
 DratiniBaseData:: ; 0x52664
-	db DRATINI ; 147
-
-	db  41,  64,  45,  50,  50,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db DRAGON, DRAGON
-	db 45 ; catch rate
-	db 67 ; base exp
-	db NO_ITEM ; item 1
-	db DRAGON_SCALE ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 40 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn AMPHIBIAN, REPTILE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DETECT, REST, ATTRACT, SURF, WATERFALL, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/dratini.asm"
 
 DragonairBaseData:: ; 0x52684
-	db DRAGONAIR ; 148
-
-	db  61,  84,  65,  70,  70,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db DRAGON, DRAGON
-	db 45 ; catch rate
-	db 144 ; base exp
-	db NO_ITEM ; item 1
-	db DRAGON_SCALE ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 40 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn AMPHIBIAN, REPTILE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DETECT, REST, ATTRACT, SURF, WATERFALL, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/dragonair.asm"
 
 DragoniteBaseData:: ; 0x526a4
-	db DRAGONITE ; 149
-
-	db  91, 134,  95,  80, 100, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db DRAGON, FLYING
-	db 45 ; catch rate
-	db 218 ; base exp
-	db NO_ITEM ; item 1
-	db DRAGON_SCALE ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 40 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn AMPHIBIAN, REPTILE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, SWIFT, THUNDERPUNCH, DETECT, REST, ATTRACT, STEEL_WING, FIRE_PUNCH, FURY_CUTTER, FLY, SURF, STRENGTH, WHIRLPOOL, WATERFALL, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/dragonite.asm"
 
 MewtwoBaseData:: ; 0x526c4
-	db MEWTWO ; 150
-
-	db 106, 110,  90, 130, 154,  90
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, PSYCHIC
-	db 3 ; catch rate
-	db 220 ; base exp
-	db NO_ITEM ; item 1
-	db BERSERK_GENE ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 120 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, THUNDERPUNCH, DREAM_EATER, DETECT, REST, FIRE_PUNCH, NIGHTMARE, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/mewtwo.asm"
 
 MewBaseData:: ; 0x526e4
-	db MEW ; 151
-
-	db 100, 100, 100, 100, 100, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, PSYCHIC
-	db 45 ; catch rate
-	db 64 ; base exp
-	db NO_ITEM ; item 1
-	db MIRACLEBERRY ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 120 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, DRAGONBREATH, THUNDER, EARTHQUAKE, RETURN, DIG, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SANDSTORM, FIRE_BLAST, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FIRE_PUNCH, FURY_CUTTER, NIGHTMARE, CUT, FLY, SURF, STRENGTH, FLASH, WHIRLPOOL, WATERFALL, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/mew.asm"
 
 ChikoritaBaseData:: ; 0x52704
-	db CHIKORITA ; 152
-
-	db  45,  49,  65,  45,  49,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, GRASS
-	db 45 ; catch rate
-	db 64 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, PLANT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, CUT, FLASH
-	; end
+INCLUDE "data/base_stats/chikorita.asm"
 
 BayleefBaseData:: ; 0x52724
-	db BAYLEEF ; 153
-
-	db  60,  62,  80,  60,  63,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, GRASS
-	db 45 ; catch rate
-	db 141 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, PLANT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, FURY_CUTTER, CUT, STRENGTH, FLASH
-	; end
+INCLUDE "data/base_stats/bayleef.asm"
 
 MeganiumBaseData:: ; 0x52744
-	db MEGANIUM ; 154
-
-	db  80,  82, 100,  80,  83, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, GRASS
-	db 45 ; catch rate
-	db 208 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, PLANT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, EARTHQUAKE, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, FURY_CUTTER, CUT, STRENGTH, FLASH
-	; end
+INCLUDE "data/base_stats/meganium.asm"
 
 CyndaquilBaseData:: ; 0x52764
-	db CYNDAQUIL ; 155
-
-	db  39,  52,  43,  65,  60,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 45 ; catch rate
-	db 65 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, DETECT, REST, ATTRACT, CUT, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/cyndaquil.asm"
 
 QuilavaBaseData:: ; 0x52784
-	db QUILAVA ; 156
-
-	db  58,  64,  58,  80,  80,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 45 ; catch rate
-	db 142 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, DETECT, REST, ATTRACT, FURY_CUTTER, CUT, STRENGTH, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/quilava.asm"
 
 TyphlosionBaseData:: ; 0x527a4
-	db TYPHLOSION ; 157
-
-	db  78,  84,  78, 100, 109,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 45 ; catch rate
-	db 209 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, CUT, STRENGTH, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/typhlosion.asm"
 
 TotodileBaseData:: ; 0x527c4
-	db TOTODILE ; 158
-
-	db  50,  65,  64,  43,  44,  48
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 45 ; catch rate
-	db 66 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, CUT, SURF, WHIRLPOOL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/totodile.asm"
 
 CroconawBaseData:: ; 0x527e4
-	db CROCONAW ; 159
-
-	db  65,  80,  80,  58,  59,  63
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 45 ; catch rate
-	db 143 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, FURY_CUTTER, CUT, SURF, STRENGTH, WHIRLPOOL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/croconaw.asm"
 
 FeraligatrBaseData:: ; 0x52804
-	db FERALIGATR ; 160
-
-	db  85, 105, 100,  78,  79,  83
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 45 ; catch rate
-	db 210 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, FURY_CUTTER, CUT, SURF, STRENGTH, WHIRLPOOL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/feraligatr.asm"
 
 SentretBaseData:: ; 0x52824
-	db SENTRET ; 161
-
-	db  35,  46,  34,  20,  35,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 255 ; catch rate
-	db 57 ; base exp
-	db NO_ITEM ; item 1
-	db BERRY ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, CUT, SURF
-	; end
+INCLUDE "data/base_stats/sentret.asm"
 
 FurretBaseData:: ; 0x52844
-	db FURRET ; 162
-
-	db  85,  76,  64,  90,  45,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 90 ; catch rate
-	db 116 ; base exp
-	db BERRY ; item 1
-	db GOLD_BERRY ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, CUT, SURF, STRENGTH
-	; end
+INCLUDE "data/base_stats/furret.asm"
 
 HoothootBaseData:: ; 0x52864
-	db HOOTHOOT ; 163
-
-	db  60,  30,  30,  50,  36,  56
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, FLYING
-	db 255 ; catch rate
-	db 58 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, STEEL_WING, NIGHTMARE, FLY, FLASH
-	; end
+INCLUDE "data/base_stats/hoothoot.asm"
 
 NoctowlBaseData:: ; 0x52884
-	db NOCTOWL ; 164
-
-	db 100,  50,  50,  70,  76,  96
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, FLYING
-	db 90 ; catch rate
-	db 162 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, STEEL_WING, NIGHTMARE, FLY, FLASH
-	; end
+INCLUDE "data/base_stats/noctowl.asm"
 
 LedybaBaseData:: ; 0x528a4
-	db LEDYBA ; 165
-
-	db  40,  20,  30,  55,  40,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, FLYING
-	db 255 ; catch rate
-	db 54 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DIG, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, THUNDERPUNCH, REST, ATTRACT, THIEF, FLASH
-	; end
+INCLUDE "data/base_stats/ledyba.asm"
 
 LedianBaseData:: ; 0x528c4
-	db LEDIAN ; 166
-
-	db  55,  35,  50,  85,  55, 110
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, FLYING
-	db 90 ; catch rate
-	db 134 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DIG, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, THUNDERPUNCH, REST, ATTRACT, THIEF, FLASH
-	; end
+INCLUDE "data/base_stats/ledian.asm"
 
 SpinarakBaseData:: ; 0x528e4
-	db SPINARAK ; 167
-
-	db  40,  60,  40,  30,  40,  40
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, POISON
-	db 255 ; catch rate
-	db 54 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DIG, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, FLASH
-	; end
+INCLUDE "data/base_stats/spinarak.asm"
 
 AriadosBaseData:: ; 0x52904
-	db ARIADOS ; 168
-
-	db  70,  90,  70,  40,  60,  60
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, POISON
-	db 90 ; catch rate
-	db 134 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DIG, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, FLASH
-	; end
+INCLUDE "data/base_stats/ariados.asm"
 
 CrobatBaseData:: ; 0x52924
-	db CROBAT ; 169
-
-	db  85,  90,  80, 130,  70,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db POISON, FLYING
-	db 90 ; catch rate
-	db 204 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 15 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FLY
-	; end
+INCLUDE "data/base_stats/crobat.asm"
 
 ChinchouBaseData:: ; 0x52944
-	db CHINCHOU ; 170
-
-	db  75,  38,  38,  67,  56,  56
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, ELECTRIC
-	db 190 ; catch rate
-	db 90 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FISH, FISH ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, SURF, FLASH, WHIRLPOOL, WATERFALL, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/chinchou.asm"
 
 LanturnBaseData:: ; 0x52964
-	db LANTURN ; 171
-
-	db 125,  58,  58,  67,  76,  76
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, ELECTRIC
-	db 75 ; catch rate
-	db 156 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FISH, FISH ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, SURF, FLASH, WHIRLPOOL, WATERFALL, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/lanturn.asm"
 
 PichuBaseData:: ; 0x52984
-	db PICHU ; 172
-
-	db  20,  40,  15,  60,  35,  35
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, ELECTRIC
-	db 190 ; catch rate
-	db 42 ; base exp
-	db NO_ITEM ; item 1
-	db BERRY ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 10 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, DETECT, REST, ATTRACT, FLASH, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/pichu.asm"
 
 CleffaBaseData:: ; 0x529a4
-	db CLEFFA ; 173
-
-	db  50,  25,  28,  15,  45,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 150 ; catch rate
-	db 37 ; base exp
-	db MYSTERYBERRY ; item 1
-	db MOON_STONE ; item 2
-	db 191 ; gender
-	db 100 ; unknown
-	db 10 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, NIGHTMARE, FLASH, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/cleffa.asm"
 
 IgglybuffBaseData:: ; 0x529c4
-	db IGGLYBUFF ; 174
-
-	db  90,  30,  15,  15,  40,  20
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 170 ; catch rate
-	db 39 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 191 ; gender
-	db 100 ; unknown
-	db 10 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, NIGHTMARE, FLASH, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/igglybuff.asm"
 
 TogepiBaseData:: ; 0x529e4
-	db TOGEPI ; 175
-
-	db  35,  20,  65,  20,  40,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 190 ; catch rate
-	db 74 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 10 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, FLASH, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/togepi.asm"
 
 TogeticBaseData:: ; 0x52a04
-	db TOGETIC ; 176
-
-	db  55,  40,  85,  40,  80, 105
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, FLYING
-	db 75 ; catch rate
-	db 114 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 10 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn AVIAN, FAIRY ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, STEEL_WING, FLY, FLASH, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/togetic.asm"
 
 NatuBaseData:: ; 0x52a24
-	db NATU ; 177
-
-	db  40,  50,  45,  70,  70,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, FLYING
-	db 190 ; catch rate
-	db 73 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, FLASH
-	; end
+INCLUDE "data/base_stats/natu.asm"
 
 XatuBaseData:: ; 0x52a44
-	db XATU ; 178
-
-	db  65,  75,  70,  95,  95,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, FLYING
-	db 75 ; catch rate
-	db 171 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, FLY, FLASH
-	; end
+INCLUDE "data/base_stats/xatu.asm"
 
 MareepBaseData:: ; 0x52a64
-	db MAREEP ; 179
-
-	db  55,  40,  40,  35,  65,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, ELECTRIC
-	db 235 ; catch rate
-	db 59 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, FLASH, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/mareep.asm"
 
 FlaaffyBaseData:: ; 0x52a84
-	db FLAAFFY ; 180
-
-	db  70,  55,  55,  45,  80,  60
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, ELECTRIC
-	db 120 ; catch rate
-	db 117 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, FIRE_PUNCH, STRENGTH, FLASH, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/flaaffy.asm"
 
 AmpharosBaseData:: ; 0x52aa4
-	db AMPHAROS ; 181
-
-	db  90,  75,  75,  55, 115,  90
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, ELECTRIC
-	db 45 ; catch rate
-	db 194 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn MONSTER, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, FIRE_PUNCH, STRENGTH, FLASH, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/ampharos.asm"
 
 BellossomBaseData:: ; 0x52ac4
-	db BELLOSSOM ; 182
-
-	db  75,  80,  85,  50,  90, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, GRASS
-	db 45 ; catch rate
-	db 184 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn PLANT, PLANT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, CUT, FLASH
-	; end
+INCLUDE "data/base_stats/bellossom.asm"
 
 MarillBaseData:: ; 0x52ae4
-	db MARILL ; 183
-
-	db  70,  20,  50,  40,  20,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 190 ; catch rate
-	db 58 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn AMPHIBIAN, FAIRY ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/marill.asm"
 
 AzumarillBaseData:: ; 0x52b04
-	db AZUMARILL ; 184
-
-	db 100,  50,  80,  50,  50,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 75 ; catch rate
-	db 153 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn AMPHIBIAN, FAIRY ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/azumarill.asm"
 
 SudowoodoBaseData:: ; 0x52b24
-	db SUDOWOODO ; 185
-
-	db  70, 100, 115,  30,  30,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, ROCK
-	db 65 ; catch rate
-	db 135 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INANIMATE, INANIMATE ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH
-	; end
+INCLUDE "data/base_stats/sudowoodo.asm"
 
 PolitoedBaseData:: ; 0x52b44
-	db POLITOED ; 186
-
-	db  90,  75,  75,  70,  90, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 45 ; catch rate
-	db 185 ; base exp
-	db NO_ITEM ; item 1
-	db KINGS_ROCK ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn AMPHIBIAN, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/politoed.asm"
 
 HoppipBaseData:: ; 0x52b64
-	db HOPPIP ; 187
-
-	db  35,  35,  40,  50,  35,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, FLYING
-	db 255 ; catch rate
-	db 74 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn FAIRY, PLANT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, FLASH
-	; end
+INCLUDE "data/base_stats/hoppip.asm"
 
 SkiploomBaseData:: ; 0x52b84
-	db SKIPLOOM ; 188
-
-	db  55,  45,  50,  80,  45,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, FLYING
-	db 120 ; catch rate
-	db 136 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn FAIRY, PLANT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, FLASH
-	; end
+INCLUDE "data/base_stats/skiploom.asm"
 
 JumpluffBaseData:: ; 0x52ba4
-	db JUMPLUFF ; 189
-
-	db  75,  55,  70, 110,  55,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, FLYING
-	db 45 ; catch rate
-	db 176 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn FAIRY, PLANT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, FLASH
-	; end
+INCLUDE "data/base_stats/jumpluff.asm"
 
 AipomBaseData:: ; 0x52bc4
-	db AIPOM ; 190
-
-	db  55,  70,  55,  85,  40,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 45 ; catch rate
-	db 94 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, NIGHTMARE, CUT, STRENGTH, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/aipom.asm"
 
 SunkernBaseData:: ; 0x52be4
-	db SUNKERN ; 191
-
-	db  30,  30,  30,  30,  30,  30
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, GRASS
-	db 235 ; catch rate
-	db 52 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn PLANT, PLANT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
-	; end
+INCLUDE "data/base_stats/sunkern.asm"
 
 SunfloraBaseData:: ; 0x52c04
-	db SUNFLORA ; 192
-
-	db  75,  75,  55,  30, 105,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db GRASS, GRASS
-	db 120 ; catch rate
-	db 146 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn PLANT, PLANT ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
-	; end
+INCLUDE "data/base_stats/sunflora.asm"
 
 YanmaBaseData:: ; 0x52c24
-	db YANMA ; 193
-
-	db  65,  65,  45,  95,  75,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, FLYING
-	db 75 ; catch rate
-	db 147 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, FLASH
-	; end
+INCLUDE "data/base_stats/yanma.asm"
 
 WooperBaseData:: ; 0x52c44
-	db WOOPER ; 194
-
-	db  55,  45,  45,  15,  25,  25
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, GROUND
-	db 255 ; catch rate
-	db 52 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, SURF, FLASH, WHIRLPOOL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/wooper.asm"
 
 QuagsireBaseData:: ; 0x52c64
-	db QUAGSIRE ; 195
-
-	db  95,  85,  85,  35,  65,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, GROUND
-	db 90 ; catch rate
-	db 137 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, SURF, STRENGTH, FLASH, WHIRLPOOL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/quagsire.asm"
 
 EspeonBaseData:: ; 0x52c84
-	db ESPEON ; 196
-
-	db  65,  65,  60, 110, 130,  95
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, PSYCHIC
-	db 45 ; catch rate
-	db 197 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 35 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, NIGHTMARE, CUT, FLASH
-	; end
+INCLUDE "data/base_stats/espeon.asm"
 
 UmbreonBaseData:: ; 0x52ca4
-	db UMBREON ; 197
-
-	db  95,  65, 110,  65,  60, 130
-	;   hp  atk  def  spd  sat  sdf
-
-	db DARK, DARK
-	db 45 ; catch rate
-	db 197 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 31 ; gender
-	db 100 ; unknown
-	db 35 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, NIGHTMARE, CUT, FLASH
-	; end
+INCLUDE "data/base_stats/umbreon.asm"
 
 MurkrowBaseData:: ; 0x52cc4
-	db MURKROW ; 198
-
-	db  60,  85,  42,  91,  85,  42
-	;   hp  atk  def  spd  sat  sdf
-
-	db DARK, FLYING
-	db 30 ; catch rate
-	db 107 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, STEEL_WING, NIGHTMARE, FLY
-	; end
+INCLUDE "data/base_stats/murkrow.asm"
 
 SlowkingBaseData:: ; 0x52ce4
-	db SLOWKING ; 199
-
-	db  95,  75,  80,  30, 100, 110
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, PSYCHIC
-	db 70 ; catch rate
-	db 164 ; base exp
-	db NO_ITEM ; item 1
-	db KINGS_ROCK ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn MONSTER, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DREAM_EATER, REST, ATTRACT, FURY_CUTTER, NIGHTMARE, SURF, STRENGTH, FLASH, WHIRLPOOL, FLAMETHROWER, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/slowking.asm"
 
 MisdreavusBaseData:: ; 0x52d04
-	db MISDREAVUS ; 200
-
-	db  60,  60,  60,  85,  85,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db GHOST, GHOST
-	db 45 ; catch rate
-	db 147 ; base exp
-	db NO_ITEM ; item 1
-	db SPELL_TAG ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn AMORPHOUS, AMORPHOUS ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, FLASH, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/misdreavus.asm"
 
 UnownBaseData:: ; 0x52d24
-	db UNOWN ; 201
-
-	db  48,  72,  48,  48,  72,  48
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, PSYCHIC
-	db 225 ; catch rate
-	db 61 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 40 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm
-	; end
+INCLUDE "data/base_stats/unown.asm"
 
 WobbuffetBaseData:: ; 0x52d44
-	db WOBBUFFET ; 202
-
-	db 190,  33,  58,  33,  33,  58
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, PSYCHIC
-	db 45 ; catch rate
-	db 177 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMORPHOUS, AMORPHOUS ; egg groups
-
-	; tmhm
-	tmhm
-	; end
+INCLUDE "data/base_stats/wobbuffet.asm"
 
 GirafarigBaseData:: ; 0x52d64
-	db GIRAFARIG ; 203
-
-	db  70,  80,  65,  85,  90,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, PSYCHIC
-	db 60 ; catch rate
-	db 149 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, STRENGTH, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/girafarig.asm"
 
 PinecoBaseData:: ; 0x52d84
-	db PINECO ; 204
-
-	db  50,  65,  90,  15,  35,  35
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, BUG
-	db 190 ; catch rate
-	db 60 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, STRENGTH
-	; end
+INCLUDE "data/base_stats/pineco.asm"
 
 ForretressBaseData:: ; 0x52da4
-	db FORRETRESS ; 205
-
-	db  75,  90, 140,  40,  60,  60
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, STEEL
-	db 75 ; catch rate
-	db 118 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, STRENGTH
-	; end
+INCLUDE "data/base_stats/forretress.asm"
 
 DunsparceBaseData:: ; 0x52dc4
-	db DUNSPARCE ; 206
-
-	db 100,  70,  70,  45,  65,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 190 ; catch rate
-	db 75 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, THUNDER, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, STRENGTH, FLAMETHROWER, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/dunsparce.asm"
 
 GligarBaseData:: ; 0x52de4
-	db GLIGAR ; 207
-
-	db  65,  75, 105,  85,  35,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db GROUND, FLYING
-	db 60 ; catch rate
-	db 108 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SANDSTORM, SWIFT, DETECT, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, STRENGTH
-	; end
+INCLUDE "data/base_stats/gligar.asm"
 
 SteelixBaseData:: ; 0x52e04
-	db STEELIX ; 208
-
-	db  75,  85, 200,  30,  55,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db STEEL, GROUND
-	db 25 ; catch rate
-	db 196 ; base exp
-	db NO_ITEM ; item 1
-	db METAL_COAT ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INANIMATE, INANIMATE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, CUT, STRENGTH
-	; end
+INCLUDE "data/base_stats/steelix.asm"
 
 SnubbullBaseData:: ; 0x52e24
-	db SNUBBULL ; 209
-
-	db  60,  80,  50,  30,  40,  40
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 190 ; catch rate
-	db 63 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 191 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn FIELD, FAIRY ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/snubbull.asm"
 
 GranbullBaseData:: ; 0x52e44
-	db GRANBULL ; 210
-
-	db  90, 120,  75,  45,  60,  60
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 75 ; catch rate
-	db 178 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 191 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn FIELD, FAIRY ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/granbull.asm"
 
 QwilfishBaseData:: ; 0x52e64
-	db QWILFISH ; 211
-
-	db  65,  95,  75,  85,  55,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, POISON
-	db 45 ; catch rate
-	db 100 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FISH, FISH ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SWIFT, DEFENSE_CURL, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/qwilfish.asm"
 
 ScizorBaseData:: ; 0x52e84
-	db SCIZOR ; 212
-
-	db  70, 130, 100,  65,  55,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, STEEL
-	db 25 ; catch rate
-	db 200 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FURY_CUTTER, CUT, STRENGTH
-	; end
+INCLUDE "data/base_stats/scizor.asm"
 
 ShuckleBaseData:: ; 0x52ea4
-	db SHUCKLE ; 213
-
-	db  20,  10, 230,  05,  10, 230
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, ROCK
-	db 190 ; catch rate
-	db 80 ; base exp
-	db BERRY ; item 1
-	db BERRY ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, STRENGTH, FLASH
-	; end
+INCLUDE "data/base_stats/shuckle.asm"
 
 HeracrossBaseData:: ; 0x52ec4
-	db HERACROSS ; 214
-
-	db  80, 125,  75,  85,  40,  95
-	;   hp  atk  def  spd  sat  sdf
-
-	db BUG, FIGHTING
-	db 45 ; catch rate
-	db 200 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn INSECT, INSECT ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, STRENGTH
-	; end
+INCLUDE "data/base_stats/heracross.asm"
 
 SneaselBaseData:: ; 0x52ee4
-	db SNEASEL ; 215
-
-	db  55,  95,  55, 115,  35,  75
-	;   hp  atk  def  spd  sat  sdf
-
-	db DARK, ICE
-	db 60 ; catch rate
-	db 132 ; base exp
-	db NO_ITEM ; item 1
-	db QUICK_CLAW ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, FURY_CUTTER, NIGHTMARE, CUT, SURF, STRENGTH, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/sneasel.asm"
 
 TeddiursaBaseData:: ; 0x52f04
-	db TEDDIURSA ; 216
-
-	db  60,  80,  50,  40,  50,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 120 ; catch rate
-	db 124 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, CUT, STRENGTH
-	; end
+INCLUDE "data/base_stats/teddiursa.asm"
 
 UrsaringBaseData:: ; 0x52f24
-	db URSARING ; 217
-
-	db  90, 130,  75,  55,  75,  75
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 60 ; catch rate
-	db 189 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, CUT, STRENGTH
-	; end
+INCLUDE "data/base_stats/ursaring.asm"
 
 SlugmaBaseData:: ; 0x52f44
-	db SLUGMA ; 218
-
-	db  40,  40,  40,  20,  70,  40
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 190 ; catch rate
-	db 78 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMORPHOUS, AMORPHOUS ; egg groups
-
-	; tmhm
-	tmhm CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, REST, ATTRACT, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/slugma.asm"
 
 MagcargoBaseData:: ; 0x52f64
-	db MAGCARGO ; 219
-
-	db  50,  50, 120,  30,  80,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, ROCK
-	db 75 ; catch rate
-	db 154 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMORPHOUS, AMORPHOUS ; egg groups
-
-	; tmhm
-	tmhm CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, REST, ATTRACT, STRENGTH, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/magcargo.asm"
 
 SwinubBaseData:: ; 0x52f84
-	db SWINUB ; 220
-
-	db  50,  50,  40,  50,  30,  30
-	;   hp  atk  def  spd  sat  sdf
-
-	db ICE, GROUND
-	db 225 ; catch rate
-	db 78 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, STRENGTH, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/swinub.asm"
 
 PiloswineBaseData:: ; 0x52fa4
-	db PILOSWINE ; 221
-
-	db 100, 100,  80,  50,  60,  60
-	;   hp  atk  def  spd  sat  sdf
-
-	db ICE, GROUND
-	db 75 ; catch rate
-	db 160 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, STRENGTH, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/piloswine.asm"
 
 CorsolaBaseData:: ; 0x52fc4
-	db CORSOLA ; 222
-
-	db  55,  55,  85,  35,  65,  85
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, ROCK
-	db 60 ; catch rate
-	db 113 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 191 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn AMPHIBIAN, INVERTEBRATE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, SURF, STRENGTH, WHIRLPOOL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/corsola.asm"
 
 RemoraidBaseData:: ; 0x52fe4
-	db REMORAID ; 223
-
-	db  35,  65,  35,  65,  65,  35
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 190 ; catch rate
-	db 78 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, FISH ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, THIEF, SURF, WHIRLPOOL, FLAMETHROWER, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/remoraid.asm"
 
 OctilleryBaseData:: ; 0x53004
-	db OCTILLERY ; 224
-
-	db  75, 105,  75,  45, 105,  75
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 75 ; catch rate
-	db 164 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, FISH ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, THIEF, SURF, WHIRLPOOL, FLAMETHROWER, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/octillery.asm"
 
 DelibirdBaseData:: ; 0x53024
-	db DELIBIRD ; 225
-
-	db  45,  55,  45,  75,  65,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db ICE, FLYING
-	db 45 ; catch rate
-	db 183 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn AMPHIBIAN, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, FLY, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/delibird.asm"
 
 MantineBaseData:: ; 0x53044
-	db MANTINE ; 226
-
-	db  65,  40,  70,  70,  80, 140
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, FLYING
-	db 25 ; catch rate
-	db 168 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn AMPHIBIAN, AMPHIBIAN ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/mantine.asm"
 
 SkarmoryBaseData:: ; 0x53064
-	db SKARMORY ; 227
-
-	db  65,  80, 140,  70,  40,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db STEEL, FLYING
-	db 25 ; catch rate
-	db 168 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn AVIAN, AVIAN ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, CUT, FLY
-	; end
+INCLUDE "data/base_stats/skarmory.asm"
 
 HoundourBaseData:: ; 0x53084
-	db HOUNDOUR ; 228
-
-	db  45,  60,  30,  65,  80,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db DARK, FIRE
-	db 120 ; catch rate
-	db 114 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, FIRE_BLAST, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/houndour.asm"
 
 HoundoomBaseData:: ; 0x530a4
-	db HOUNDOOM ; 229
-
-	db  75,  90,  50,  95, 110,  80
-	;   hp  atk  def  spd  sat  sdf
-
-	db DARK, FIRE
-	db 45 ; catch rate
-	db 204 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, FIRE_BLAST, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, STRENGTH, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/houndoom.asm"
 
 KingdraBaseData:: ; 0x530c4
-	db KINGDRA ; 230
-
-	db  75,  95,  95,  85,  95,  95
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, DRAGON
-	db 45 ; catch rate
-	db 207 ; base exp
-	db NO_ITEM ; item 1
-	db DRAGON_SCALE ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn AMPHIBIAN, REPTILE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, DRAGONBREATH, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/kingdra.asm"
 
 PhanpyBaseData:: ; 0x530e4
-	db PHANPY ; 231
-
-	db  90,  60,  60,  40,  40,  40
-	;   hp  atk  def  spd  sat  sdf
-
-	db GROUND, GROUND
-	db 120 ; catch rate
-	db 124 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, STRENGTH
-	; end
+INCLUDE "data/base_stats/phanpy.asm"
 
 DonphanBaseData:: ; 0x53104
-	db DONPHAN ; 232
-
-	db  90, 120, 120,  50,  60,  60
-	;   hp  atk  def  spd  sat  sdf
-
-	db GROUND, GROUND
-	db 60 ; catch rate
-	db 189 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, STRENGTH
-	; end
+INCLUDE "data/base_stats/donphan.asm"
 
 Porygon2BaseData:: ; 0x53124
-	db PORYGON2 ; 233
-
-	db  85,  80,  90,  60, 105,  95
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 45 ; catch rate
-	db 180 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn INANIMATE, INANIMATE ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, DREAM_EATER, REST, THIEF, NIGHTMARE, FLASH, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/porygon2.asm"
 
 StantlerBaseData:: ; 0x53144
-	db STANTLER ; 234
-
-	db  73,  95,  62,  85,  85,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 45 ; catch rate
-	db 165 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, FLASH
-	; end
+INCLUDE "data/base_stats/stantler.asm"
 
 SmeargleBaseData:: ; 0x53164
-	db SMEARGLE ; 235
-
-	db  55,  20,  35,  75,  20,  45
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 45 ; catch rate
-	db 106 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm
-	; end
+INCLUDE "data/base_stats/smeargle.asm"
 
 TyrogueBaseData:: ; 0x53184
-	db TYROGUE ; 236
-
-	db  35,  35,  35,  35,  35,  35
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIGHTING, FIGHTING
-	db 75 ; catch rate
-	db 91 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 0 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STRENGTH
-	; end
+INCLUDE "data/base_stats/tyrogue.asm"
 
 HitmontopBaseData:: ; 0x531a4
-	db HITMONTOP ; 237
-
-	db  50,  95,  95,  70,  35, 110
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIGHTING, FIGHTING
-	db 45 ; catch rate
-	db 138 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 0 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn HUMANSHAPE, HUMANSHAPE ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STRENGTH
-	; end
+INCLUDE "data/base_stats/hitmontop.asm"
 
 SmoochumBaseData:: ; 0x531c4
-	db SMOOCHUM ; 238
-
-	db  45,  30,  15,  65,  85,  65
-	;   hp  atk  def  spd  sat  sdf
-
-	db ICE, PSYCHIC
-	db 45 ; catch rate
-	db 87 ; base exp
-	db ICE_BERRY ; item 1
-	db ICE_BERRY ; item 2
-	db 254 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SWEET_SCENT, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/smoochum.asm"
 
 ElekidBaseData:: ; 0x531e4
-	db ELEKID ; 239
-
-	db  45,  63,  37,  95,  65,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, ELECTRIC
-	db 45 ; catch rate
-	db 106 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 63 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FLASH, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/elekid.asm"
 
 MagbyBaseData:: ; 0x53204
-	db MAGBY ; 240
-
-	db  45,  75,  37,  83,  70,  55
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 45 ; catch rate
-	db 117 ; base exp
-	db BURNT_BERRY ; item 1
-	db BURNT_BERRY ; item 2
-	db 63 ; gender
-	db 100 ; unknown
-	db 25 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/magby.asm"
 
 MiltankBaseData:: ; 0x53224
-	db MILTANK ; 241
-
-	db  95,  80, 105, 100,  40,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 45 ; catch rate
-	db 200 ; base exp
-	db MOOMOO_MILK ; item 1
-	db MOOMOO_MILK ; item 2
-	db 254 ; gender
-	db 100 ; unknown
-	db 20 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn FIELD, FIELD ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, FIRE_PUNCH, SURF, STRENGTH, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/miltank.asm"
 
 BlisseyBaseData:: ; 0x53244
-	db BLISSEY ; 242
-
-	db 255,  10,  10,  55,  75, 135
-	;   hp  atk  def  spd  sat  sdf
-
-	db NORMAL, NORMAL
-	db 30 ; catch rate
-	db 255 ; base exp
-	db NO_ITEM ; item 1
-	db LUCKY_EGG ; item 2
-	db 254 ; gender
-	db 100 ; unknown
-	db 40 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db SLOW ; growth rate
-	dn FAIRY, FAIRY ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, DREAM_EATER, REST, ATTRACT, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/blissey.asm"
 
 RaikouBaseData:: ; 0x53264
-	db RAIKOU ; 243
-
-	db  90,  85,  75, 115, 115, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db ELECTRIC, ELECTRIC
-	db 3 ; catch rate
-	db 216 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 80 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DETECT, REST, CUT, STRENGTH, FLASH, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/raikou.asm"
 
 EnteiBaseData:: ; 0x53284
-	db ENTEI ; 244
-
-	db 115, 115,  85, 100,  90,  75
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FIRE
-	db 3 ; catch rate
-	db 217 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 80 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, SWIFT, DETECT, REST, CUT, STRENGTH, FLASH, FLAMETHROWER
-	; end
+INCLUDE "data/base_stats/entei.asm"
 
 SuicuneBaseData:: ; 0x532a4
-	db SUICUNE ; 245
-
-	db 100,  75, 115,  85,  90, 115
-	;   hp  atk  def  spd  sat  sdf
-
-	db WATER, WATER
-	db 3 ; catch rate
-	db 215 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 80 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DETECT, REST, CUT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/suicune.asm"
 
 LarvitarBaseData:: ; 0x532c4
-	db LARVITAR ; 246
-
-	db  50,  64,  50,  41,  45,  50
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, GROUND
-	db 45 ; catch rate
-	db 67 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 40 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5, 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn MONSTER, MONSTER ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DETECT, REST, ATTRACT
-	; end
+INCLUDE "data/base_stats/larvitar.asm"
 
 PupitarBaseData:: ; 0x532e4
-	db PUPITAR ; 247
-
-	db  70,  84,  70,  51,  65,  70
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, GROUND
-	db 45 ; catch rate
-	db 144 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 40 ; step cycles to hatch
-	db 5 ; unknown
-	dn 6, 6 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn MONSTER, MONSTER ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DETECT, REST, ATTRACT
-	; end
+INCLUDE "data/base_stats/pupitar.asm"
 
 TyranitarBaseData:: ; 0x53304
-	db TYRANITAR ; 248
-
-	db 100, 134, 110,  61,  95, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db ROCK, DARK
-	db 45 ; catch rate
-	db 218 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 127 ; gender
-	db 100 ; unknown
-	db 40 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn MONSTER, MONSTER ; egg groups
-
-	; tmhm
-	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DETECT, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, NIGHTMARE, CUT, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/tyranitar.asm"
 
 LugiaBaseData:: ; 0x53324
-	db LUGIA ; 249
-
-	db 106,  90, 130, 110,  90, 154
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, FLYING
-	db 3 ; catch rate
-	db 220 ; base exp
-	db NO_ITEM ; item 1
-	db NO_ITEM ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 120 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7, 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, THUNDER, EARTHQUAKE, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DREAM_EATER, DETECT, REST, STEEL_WING, NIGHTMARE, FLY, SURF, STRENGTH, WHIRLPOOL, WATERFALL, THUNDERBOLT, ICE_BEAM
-	; end
+INCLUDE "data/base_stats/lugia.asm"
 
 Ho_OhBaseData:: ; 0x53344
-	db HO_OH ; 250
-
-	db 106, 130,  90,  90, 110, 154
-	;   hp  atk  def  spd  sat  sdf
-
-	db FIRE, FLYING
-	db 3 ; catch rate
-	db 220 ; base exp
-	db SACRED_ASH ; item 1
-	db SACRED_ASH ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 120 ; step cycles to hatch
-	db 5 ; unknown
-	dn 7 , 7 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db FAST ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, DRAGONBREATH, THUNDER, EARTHQUAKE, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, SWIFT, DREAM_EATER, DETECT, REST, STEEL_WING, NIGHTMARE, FLY, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT
-	; end
+INCLUDE "data/base_stats/ho_oh.asm"
 
 CelebiBaseData:: ; 0x53364
-	db CELEBI ; 251
+INCLUDE "data/base_stats/celebi.asm"
 
-	db 100, 100, 100, 100, 100, 100
-	;   hp  atk  def  spd  sat  sdf
-
-	db PSYCHIC, GRASS
-	db 45 ; catch rate
-	db 64 ; base exp
-	db NO_ITEM ; item 1
-	db MIRACLEBERRY ; item 2
-	db 255 ; gender
-	db 100 ; unknown
-	db 120 ; step cycles to hatch
-	db 5 ; unknown
-	dn 5 , 5 ; frontpic dimensions
-	db 0, 0, 0, 0 ; padding
-	db MEDIUM_SLOW ; growth rate
-	dn NO_EGGS, NO_EGGS ; egg groups
-
-	; tmhm
-	tmhm CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DEFENSE_CURL, DREAM_EATER, DETECT, REST, NIGHTMARE, FLASH
-	; end
diff --git a/data/base_stats/abra.asm b/data/base_stats/abra.asm
new file mode 100644
index 000000000..1856a2fd6
--- /dev/null
+++ b/data/base_stats/abra.asm
@@ -0,0 +1,22 @@
+	db ABRA ; 063
+
+	db  25,  20,  15,  90, 105,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, PSYCHIC
+	db 200 ; catch rate
+	db 73 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 63 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, THIEF, FIRE_PUNCH, NIGHTMARE, FLASH
+	; end
diff --git a/data/base_stats/aerodactyl.asm b/data/base_stats/aerodactyl.asm
new file mode 100644
index 000000000..226f10365
--- /dev/null
+++ b/data/base_stats/aerodactyl.asm
@@ -0,0 +1,22 @@
+	db AERODACTYL ; 142
+
+	db  80, 105,  65, 130,  60,  75
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, FLYING
+	db 45 ; catch rate
+	db 202 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 35 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, EARTHQUAKE, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, SWIFT, DETECT, REST, ATTRACT, STEEL_WING, FLY, FLAMETHROWER
+	; end
diff --git a/data/base_stats/aipom.asm b/data/base_stats/aipom.asm
new file mode 100644
index 000000000..8e1f5853f
--- /dev/null
+++ b/data/base_stats/aipom.asm
@@ -0,0 +1,22 @@
+	db AIPOM ; 190
+
+	db  55,  70,  55,  85,  40,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 45 ; catch rate
+	db 94 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, NIGHTMARE, CUT, STRENGTH, THUNDERBOLT
+	; end
diff --git a/data/base_stats/alakazam.asm b/data/base_stats/alakazam.asm
new file mode 100644
index 000000000..086a1bb43
--- /dev/null
+++ b/data/base_stats/alakazam.asm
@@ -0,0 +1,22 @@
+	db ALAKAZAM ; 065
+
+	db  55,  50,  45, 120, 135,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, PSYCHIC
+	db 50 ; catch rate
+	db 186 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 63 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DIG, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, THIEF, FIRE_PUNCH, NIGHTMARE, FLASH
+	; end
diff --git a/data/base_stats/ampharos.asm b/data/base_stats/ampharos.asm
new file mode 100644
index 000000000..3c5626d81
--- /dev/null
+++ b/data/base_stats/ampharos.asm
@@ -0,0 +1,22 @@
+	db AMPHAROS ; 181
+
+	db  90,  75,  75,  55, 115,  90
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, ELECTRIC
+	db 45 ; catch rate
+	db 194 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, FIRE_PUNCH, STRENGTH, FLASH, THUNDERBOLT
+	; end
diff --git a/data/base_stats/arbok.asm b/data/base_stats/arbok.asm
new file mode 100644
index 000000000..3b82c1801
--- /dev/null
+++ b/data/base_stats/arbok.asm
@@ -0,0 +1,22 @@
+	db ARBOK ; 024
+
+	db  60,  85,  69,  80,  65,  79
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, POISON
+	db 90 ; catch rate
+	db 147 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, REPTILE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, STRENGTH
+	; end
diff --git a/data/base_stats/arcanine.asm b/data/base_stats/arcanine.asm
new file mode 100644
index 000000000..5fc7734d3
--- /dev/null
+++ b/data/base_stats/arcanine.asm
@@ -0,0 +1,22 @@
+	db ARCANINE ; 059
+
+	db  90, 110,  80,  95, 100,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 75 ; catch rate
+	db 213 ; base exp
+	db BURNT_BERRY ; item 1
+	db BURNT_BERRY ; item 2
+	db 63 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, REST, ATTRACT, FLAMETHROWER
+	; end
diff --git a/data/base_stats/ariados.asm b/data/base_stats/ariados.asm
new file mode 100644
index 000000000..174de5fab
--- /dev/null
+++ b/data/base_stats/ariados.asm
@@ -0,0 +1,22 @@
+	db ARIADOS ; 168
+
+	db  70,  90,  70,  40,  60,  60
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, POISON
+	db 90 ; catch rate
+	db 134 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DIG, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, FLASH
+	; end
diff --git a/data/base_stats/articuno.asm b/data/base_stats/articuno.asm
new file mode 100644
index 000000000..3001e67c1
--- /dev/null
+++ b/data/base_stats/articuno.asm
@@ -0,0 +1,22 @@
+	db ARTICUNO ; 144
+
+	db  90,  85, 100,  85,  95, 125
+	;   hp  atk  def  spd  sat  sdf
+
+	db ICE, FLYING
+	db 3 ; catch rate
+	db 215 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 80 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DETECT, REST, STEEL_WING, FLY, ICE_BEAM
+	; end
diff --git a/data/base_stats/azumarill.asm b/data/base_stats/azumarill.asm
new file mode 100644
index 000000000..3aaa8b9a1
--- /dev/null
+++ b/data/base_stats/azumarill.asm
@@ -0,0 +1,22 @@
+	db AZUMARILL ; 184
+
+	db 100,  50,  80,  50,  50,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 75 ; catch rate
+	db 153 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn AMPHIBIAN, FAIRY ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
diff --git a/data/base_stats/bayleef.asm b/data/base_stats/bayleef.asm
new file mode 100644
index 000000000..e94ecaa34
--- /dev/null
+++ b/data/base_stats/bayleef.asm
@@ -0,0 +1,22 @@
+	db BAYLEEF ; 153
+
+	db  60,  62,  80,  60,  63,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, GRASS
+	db 45 ; catch rate
+	db 141 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, PLANT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, FURY_CUTTER, CUT, STRENGTH, FLASH
+	; end
diff --git a/data/base_stats/beedrill.asm b/data/base_stats/beedrill.asm
new file mode 100644
index 000000000..254ee749e
--- /dev/null
+++ b/data/base_stats/beedrill.asm
@@ -0,0 +1,22 @@
+	db BEEDRILL ; 015
+
+	db  65,  80,  40,  75,  45,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, POISON
+	db 45 ; catch rate
+	db 159 ; base exp
+	db NO_ITEM ; item 1
+	db POISON_BARB ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SWIFT, REST, ATTRACT, FURY_CUTTER, CUT
+	; end
diff --git a/data/base_stats/bellossom.asm b/data/base_stats/bellossom.asm
new file mode 100644
index 000000000..0dde920c8
--- /dev/null
+++ b/data/base_stats/bellossom.asm
@@ -0,0 +1,22 @@
+	db BELLOSSOM ; 182
+
+	db  75,  80,  85,  50,  90, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, GRASS
+	db 45 ; catch rate
+	db 184 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn PLANT, PLANT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, CUT, FLASH
+	; end
diff --git a/data/base_stats/bellsprout.asm b/data/base_stats/bellsprout.asm
new file mode 100644
index 000000000..d8f6c6c13
--- /dev/null
+++ b/data/base_stats/bellsprout.asm
@@ -0,0 +1,22 @@
+	db BELLSPROUT ; 069
+
+	db  50,  75,  35,  40,  70,  30
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, POISON
+	db 255 ; catch rate
+	db 84 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn PLANT, PLANT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
+	; end
diff --git a/data/base_stats/blastoise.asm b/data/base_stats/blastoise.asm
new file mode 100644
index 000000000..122e4c65b
--- /dev/null
+++ b/data/base_stats/blastoise.asm
@@ -0,0 +1,22 @@
+	db BLASTOISE ; 009
+
+	db  79,  83, 100,  78,  85, 105
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 45 ; catch rate
+	db 210 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
diff --git a/data/base_stats/blissey.asm b/data/base_stats/blissey.asm
new file mode 100644
index 000000000..39542bc1e
--- /dev/null
+++ b/data/base_stats/blissey.asm
@@ -0,0 +1,22 @@
+	db BLISSEY ; 242
+
+	db 255,  10,  10,  55,  75, 135
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 30 ; catch rate
+	db 255 ; base exp
+	db NO_ITEM ; item 1
+	db LUCKY_EGG ; item 2
+	db 254 ; gender
+	db 100 ; unknown
+	db 40 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn FAIRY, FAIRY ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, DREAM_EATER, REST, ATTRACT, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/bulbasaur.asm b/data/base_stats/bulbasaur.asm
new file mode 100644
index 000000000..70a264a60
--- /dev/null
+++ b/data/base_stats/bulbasaur.asm
@@ -0,0 +1,22 @@
+	db BULBASAUR ; 001
+
+	db  45,  49,  49,  45,  65,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, POISON
+	db 45 ; catch rate
+	db 64 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, PLANT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, FURY_CUTTER, CUT, FLASH
+	; end
diff --git a/data/base_stats/butterfree.asm b/data/base_stats/butterfree.asm
new file mode 100644
index 000000000..80f288967
--- /dev/null
+++ b/data/base_stats/butterfree.asm
@@ -0,0 +1,22 @@
+	db BUTTERFREE ; 012
+
+	db  60,  45,  50,  70,  80,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, FLYING
+	db 45 ; catch rate
+	db 160 ; base exp
+	db NO_ITEM ; item 1
+	db SILVERPOWDER ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, NIGHTMARE, FLASH
+	; end
diff --git a/data/base_stats/caterpie.asm b/data/base_stats/caterpie.asm
new file mode 100644
index 000000000..ebaee52f1
--- /dev/null
+++ b/data/base_stats/caterpie.asm
@@ -0,0 +1,22 @@
+	db CATERPIE ; 010
+
+	db  45,  30,  35,  45,  20,  20
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, BUG
+	db 255 ; catch rate
+	db 53 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm
+	; end
diff --git a/data/base_stats/celebi.asm b/data/base_stats/celebi.asm
new file mode 100644
index 000000000..29f61843f
--- /dev/null
+++ b/data/base_stats/celebi.asm
@@ -0,0 +1,22 @@
+	db CELEBI ; 251
+
+	db 100, 100, 100, 100, 100, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, GRASS
+	db 45 ; catch rate
+	db 64 ; base exp
+	db NO_ITEM ; item 1
+	db MIRACLEBERRY ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 120 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5 , 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DEFENSE_CURL, DREAM_EATER, DETECT, REST, NIGHTMARE, FLASH
+	; end
diff --git a/data/base_stats/chansey.asm b/data/base_stats/chansey.asm
new file mode 100644
index 000000000..e4037d41d
--- /dev/null
+++ b/data/base_stats/chansey.asm
@@ -0,0 +1,22 @@
+	db CHANSEY ; 113
+
+	db 250,  05,  05,  50,  35, 105
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 30 ; catch rate
+	db 255 ; base exp
+	db NO_ITEM ; item 1
+	db LUCKY_EGG ; item 2
+	db 254 ; gender
+	db 100 ; unknown
+	db 40 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn FAIRY, FAIRY ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, DREAM_EATER, REST, ATTRACT, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/charizard.asm b/data/base_stats/charizard.asm
new file mode 100644
index 000000000..522d213e4
--- /dev/null
+++ b/data/base_stats/charizard.asm
@@ -0,0 +1,22 @@
+	db CHARIZARD ; 006
+
+	db  78,  84,  78, 100, 109,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FLYING
+	db 45 ; catch rate
+	db 209 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, REPTILE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, SWIFT, DEFENSE_CURL, REST, ATTRACT, STEEL_WING, FIRE_PUNCH, FURY_CUTTER, CUT, FLY, STRENGTH, FLAMETHROWER
+	; end
diff --git a/data/base_stats/charmander.asm b/data/base_stats/charmander.asm
new file mode 100644
index 000000000..34c14cb81
--- /dev/null
+++ b/data/base_stats/charmander.asm
@@ -0,0 +1,22 @@
+	db CHARMANDER ; 004
+
+	db  39,  52,  43,  65,  60,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 45 ; catch rate
+	db 65 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, REPTILE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, CUT, STRENGTH, FLAMETHROWER
+	; end
diff --git a/data/base_stats/charmeleon.asm b/data/base_stats/charmeleon.asm
new file mode 100644
index 000000000..5c7794cdd
--- /dev/null
+++ b/data/base_stats/charmeleon.asm
@@ -0,0 +1,22 @@
+	db CHARMELEON ; 005
+
+	db  58,  64,  58,  80,  80,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 45 ; catch rate
+	db 142 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, REPTILE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, CUT, STRENGTH, FLAMETHROWER
+	; end
diff --git a/data/base_stats/chikorita.asm b/data/base_stats/chikorita.asm
new file mode 100644
index 000000000..c572e8667
--- /dev/null
+++ b/data/base_stats/chikorita.asm
@@ -0,0 +1,22 @@
+	db CHIKORITA ; 152
+
+	db  45,  49,  65,  45,  49,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, GRASS
+	db 45 ; catch rate
+	db 64 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, PLANT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, CUT, FLASH
+	; end
diff --git a/data/base_stats/chinchou.asm b/data/base_stats/chinchou.asm
new file mode 100644
index 000000000..522671554
--- /dev/null
+++ b/data/base_stats/chinchou.asm
@@ -0,0 +1,22 @@
+	db CHINCHOU ; 170
+
+	db  75,  38,  38,  67,  56,  56
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, ELECTRIC
+	db 190 ; catch rate
+	db 90 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FISH, FISH ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, SURF, FLASH, WHIRLPOOL, WATERFALL, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/clefable.asm b/data/base_stats/clefable.asm
new file mode 100644
index 000000000..693050b00
--- /dev/null
+++ b/data/base_stats/clefable.asm
@@ -0,0 +1,22 @@
+	db CLEFABLE ; 036
+
+	db  95,  70,  73,  60,  85,  90
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 25 ; catch rate
+	db 129 ; base exp
+	db MYSTERYBERRY ; item 1
+	db MOON_STONE ; item 2
+	db 191 ; gender
+	db 100 ; unknown
+	db 10 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn FAIRY, FAIRY ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, DETECT, REST, ATTRACT, FIRE_PUNCH, NIGHTMARE, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/clefairy.asm b/data/base_stats/clefairy.asm
new file mode 100644
index 000000000..3d2582ca2
--- /dev/null
+++ b/data/base_stats/clefairy.asm
@@ -0,0 +1,22 @@
+	db CLEFAIRY ; 035
+
+	db  70,  45,  48,  35,  60,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 150 ; catch rate
+	db 68 ; base exp
+	db MYSTERYBERRY ; item 1
+	db MOON_STONE ; item 2
+	db 191 ; gender
+	db 100 ; unknown
+	db 10 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn FAIRY, FAIRY ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, DETECT, REST, ATTRACT, FIRE_PUNCH, NIGHTMARE, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/cleffa.asm b/data/base_stats/cleffa.asm
new file mode 100644
index 000000000..f0afdd4fd
--- /dev/null
+++ b/data/base_stats/cleffa.asm
@@ -0,0 +1,22 @@
+	db CLEFFA ; 173
+
+	db  50,  25,  28,  15,  45,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 150 ; catch rate
+	db 37 ; base exp
+	db MYSTERYBERRY ; item 1
+	db MOON_STONE ; item 2
+	db 191 ; gender
+	db 100 ; unknown
+	db 10 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, NIGHTMARE, FLASH, FLAMETHROWER
+	; end
diff --git a/data/base_stats/cloyster.asm b/data/base_stats/cloyster.asm
new file mode 100644
index 000000000..1a433253b
--- /dev/null
+++ b/data/base_stats/cloyster.asm
@@ -0,0 +1,22 @@
+	db CLOYSTER ; 091
+
+	db  50,  95, 180,  70,  85,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, ICE
+	db 60 ; catch rate
+	db 203 ; base exp
+	db PEARL ; item 1
+	db BIG_PEARL ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn INVERTEBRATE, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WHIRLPOOL, ICE_BEAM
+	; end
diff --git a/data/base_stats/corsola.asm b/data/base_stats/corsola.asm
new file mode 100644
index 000000000..660e9efcc
--- /dev/null
+++ b/data/base_stats/corsola.asm
@@ -0,0 +1,22 @@
+	db CORSOLA ; 222
+
+	db  55,  55,  85,  35,  65,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, ROCK
+	db 60 ; catch rate
+	db 113 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 191 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn AMPHIBIAN, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, SURF, STRENGTH, WHIRLPOOL, ICE_BEAM
+	; end
diff --git a/data/base_stats/crobat.asm b/data/base_stats/crobat.asm
new file mode 100644
index 000000000..c2e9b310d
--- /dev/null
+++ b/data/base_stats/crobat.asm
@@ -0,0 +1,22 @@
+	db CROBAT ; 169
+
+	db  85,  90,  80, 130,  70,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, FLYING
+	db 90 ; catch rate
+	db 204 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FLY
+	; end
diff --git a/data/base_stats/croconaw.asm b/data/base_stats/croconaw.asm
new file mode 100644
index 000000000..ce22048e1
--- /dev/null
+++ b/data/base_stats/croconaw.asm
@@ -0,0 +1,22 @@
+	db CROCONAW ; 159
+
+	db  65,  80,  80,  58,  59,  63
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 45 ; catch rate
+	db 143 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, FURY_CUTTER, CUT, SURF, STRENGTH, WHIRLPOOL, ICE_BEAM
+	; end
diff --git a/data/base_stats/cubone.asm b/data/base_stats/cubone.asm
new file mode 100644
index 000000000..9a87a8a65
--- /dev/null
+++ b/data/base_stats/cubone.asm
@@ -0,0 +1,22 @@
+	db CUBONE ; 104
+
+	db  50,  50,  95,  35,  40,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db GROUND, GROUND
+	db 190 ; catch rate
+	db 87 ; base exp
+	db NO_ITEM ; item 1
+	db THICK_CLUB ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn MONSTER, MONSTER ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLAMETHROWER, ICE_BEAM
+	; end
diff --git a/data/base_stats/cyndaquil.asm b/data/base_stats/cyndaquil.asm
new file mode 100644
index 000000000..d6a9f865b
--- /dev/null
+++ b/data/base_stats/cyndaquil.asm
@@ -0,0 +1,22 @@
+	db CYNDAQUIL ; 155
+
+	db  39,  52,  43,  65,  60,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 45 ; catch rate
+	db 65 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, DETECT, REST, ATTRACT, CUT, FLAMETHROWER
+	; end
diff --git a/data/base_stats/delibird.asm b/data/base_stats/delibird.asm
new file mode 100644
index 000000000..0c14cfe74
--- /dev/null
+++ b/data/base_stats/delibird.asm
@@ -0,0 +1,22 @@
+	db DELIBIRD ; 225
+
+	db  45,  55,  45,  75,  65,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db ICE, FLYING
+	db 45 ; catch rate
+	db 183 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn AMPHIBIAN, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, FLY, ICE_BEAM
+	; end
diff --git a/data/base_stats/dewgong.asm b/data/base_stats/dewgong.asm
new file mode 100644
index 000000000..19135700d
--- /dev/null
+++ b/data/base_stats/dewgong.asm
@@ -0,0 +1,22 @@
+	db DEWGONG ; 087
+
+	db  90,  70,  80,  70,  70,  95
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, ICE
+	db 75 ; catch rate
+	db 176 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
diff --git a/data/base_stats/diglett.asm b/data/base_stats/diglett.asm
new file mode 100644
index 000000000..3bcc864e0
--- /dev/null
+++ b/data/base_stats/diglett.asm
@@ -0,0 +1,22 @@
+	db DIGLETT ; 050
+
+	db  10,  55,  25,  95,  35,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db GROUND, GROUND
+	db 255 ; catch rate
+	db 81 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, CUT
+	; end
diff --git a/data/base_stats/ditto.asm b/data/base_stats/ditto.asm
new file mode 100644
index 000000000..fda952a08
--- /dev/null
+++ b/data/base_stats/ditto.asm
@@ -0,0 +1,22 @@
+	db DITTO ; 132
+
+	db  48,  48,  48,  48,  48,  48
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 35 ; catch rate
+	db 61 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn LADIES_MAN, LADIES_MAN ; egg groups
+
+	; tmhm
+	tmhm
+	; end
diff --git a/data/base_stats/dodrio.asm b/data/base_stats/dodrio.asm
new file mode 100644
index 000000000..5530f780e
--- /dev/null
+++ b/data/base_stats/dodrio.asm
@@ -0,0 +1,22 @@
+	db DODRIO ; 085
+
+	db  60, 110,  70, 100,  60,  60
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, FLYING
+	db 45 ; catch rate
+	db 158 ; base exp
+	db NO_ITEM ; item 1
+	db SHARP_BEAK ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, THIEF, STEEL_WING, FLY
+	; end
diff --git a/data/base_stats/doduo.asm b/data/base_stats/doduo.asm
new file mode 100644
index 000000000..554bb5dba
--- /dev/null
+++ b/data/base_stats/doduo.asm
@@ -0,0 +1,22 @@
+	db DODUO ; 084
+
+	db  35,  85,  45,  75,  35,  35
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, FLYING
+	db 190 ; catch rate
+	db 96 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, THIEF, STEEL_WING, FLY
+	; end
diff --git a/data/base_stats/donphan.asm b/data/base_stats/donphan.asm
new file mode 100644
index 000000000..28517d41d
--- /dev/null
+++ b/data/base_stats/donphan.asm
@@ -0,0 +1,22 @@
+	db DONPHAN ; 232
+
+	db  90, 120, 120,  50,  60,  60
+	;   hp  atk  def  spd  sat  sdf
+
+	db GROUND, GROUND
+	db 60 ; catch rate
+	db 189 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, STRENGTH
+	; end
diff --git a/data/base_stats/dragonair.asm b/data/base_stats/dragonair.asm
new file mode 100644
index 000000000..0361669c5
--- /dev/null
+++ b/data/base_stats/dragonair.asm
@@ -0,0 +1,22 @@
+	db DRAGONAIR ; 148
+
+	db  61,  84,  65,  70,  70,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db DRAGON, DRAGON
+	db 45 ; catch rate
+	db 144 ; base exp
+	db NO_ITEM ; item 1
+	db DRAGON_SCALE ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 40 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn AMPHIBIAN, REPTILE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DETECT, REST, ATTRACT, SURF, WATERFALL, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/dragonite.asm b/data/base_stats/dragonite.asm
new file mode 100644
index 000000000..d2b9eb88d
--- /dev/null
+++ b/data/base_stats/dragonite.asm
@@ -0,0 +1,22 @@
+	db DRAGONITE ; 149
+
+	db  91, 134,  95,  80, 100, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db DRAGON, FLYING
+	db 45 ; catch rate
+	db 218 ; base exp
+	db NO_ITEM ; item 1
+	db DRAGON_SCALE ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 40 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn AMPHIBIAN, REPTILE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, SWIFT, THUNDERPUNCH, DETECT, REST, ATTRACT, STEEL_WING, FIRE_PUNCH, FURY_CUTTER, FLY, SURF, STRENGTH, WHIRLPOOL, WATERFALL, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/dratini.asm b/data/base_stats/dratini.asm
new file mode 100644
index 000000000..a4ce9ee1a
--- /dev/null
+++ b/data/base_stats/dratini.asm
@@ -0,0 +1,22 @@
+	db DRATINI ; 147
+
+	db  41,  64,  45,  50,  50,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db DRAGON, DRAGON
+	db 45 ; catch rate
+	db 67 ; base exp
+	db NO_ITEM ; item 1
+	db DRAGON_SCALE ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 40 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn AMPHIBIAN, REPTILE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DETECT, REST, ATTRACT, SURF, WATERFALL, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/drowzee.asm b/data/base_stats/drowzee.asm
new file mode 100644
index 000000000..31b6da7e8
--- /dev/null
+++ b/data/base_stats/drowzee.asm
@@ -0,0 +1,22 @@
+	db DROWZEE ; 096
+
+	db  60,  48,  45,  42,  43,  90
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, PSYCHIC
+	db 190 ; catch rate
+	db 102 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, FIRE_PUNCH, NIGHTMARE, FLASH
+	; end
diff --git a/data/base_stats/dugtrio.asm b/data/base_stats/dugtrio.asm
new file mode 100644
index 000000000..4a6073655
--- /dev/null
+++ b/data/base_stats/dugtrio.asm
@@ -0,0 +1,22 @@
+	db DUGTRIO ; 051
+
+	db  35,  80,  50, 120,  50,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db GROUND, GROUND
+	db 50 ; catch rate
+	db 153 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, CUT
+	; end
diff --git a/data/base_stats/dunsparce.asm b/data/base_stats/dunsparce.asm
new file mode 100644
index 000000000..6ba6fc527
--- /dev/null
+++ b/data/base_stats/dunsparce.asm
@@ -0,0 +1,22 @@
+	db DUNSPARCE ; 206
+
+	db 100,  70,  70,  45,  65,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 190 ; catch rate
+	db 75 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, THUNDER, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, STRENGTH, FLAMETHROWER, THUNDERBOLT
+	; end
diff --git a/data/base_stats/eevee.asm b/data/base_stats/eevee.asm
new file mode 100644
index 000000000..b13c544b0
--- /dev/null
+++ b/data/base_stats/eevee.asm
@@ -0,0 +1,22 @@
+	db EEVEE ; 133
+
+	db  55,  55,  50,  55,  45,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 45 ; catch rate
+	db 92 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 35 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT
+	; end
diff --git a/data/base_stats/ekans.asm b/data/base_stats/ekans.asm
new file mode 100644
index 000000000..81ee35558
--- /dev/null
+++ b/data/base_stats/ekans.asm
@@ -0,0 +1,22 @@
+	db EKANS ; 023
+
+	db  35,  60,  44,  55,  40,  54
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, POISON
+	db 255 ; catch rate
+	db 62 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, REPTILE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, STRENGTH
+	; end
diff --git a/data/base_stats/electabuzz.asm b/data/base_stats/electabuzz.asm
new file mode 100644
index 000000000..e584527e8
--- /dev/null
+++ b/data/base_stats/electabuzz.asm
@@ -0,0 +1,22 @@
+	db ELECTABUZZ ; 125
+
+	db  65,  83,  57, 105,  95,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, ELECTRIC
+	db 45 ; catch rate
+	db 156 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 63 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLASH, THUNDERBOLT
+	; end
diff --git a/data/base_stats/electrode.asm b/data/base_stats/electrode.asm
new file mode 100644
index 000000000..771780a7f
--- /dev/null
+++ b/data/base_stats/electrode.asm
@@ -0,0 +1,22 @@
+	db ELECTRODE ; 101
+
+	db  60,  50,  70, 140,  80,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, ELECTRIC
+	db 60 ; catch rate
+	db 150 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INANIMATE, INANIMATE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, FLASH, THUNDERBOLT
+	; end
diff --git a/data/base_stats/elekid.asm b/data/base_stats/elekid.asm
new file mode 100644
index 000000000..c0d30fcdf
--- /dev/null
+++ b/data/base_stats/elekid.asm
@@ -0,0 +1,22 @@
+	db ELEKID ; 239
+
+	db  45,  63,  37,  95,  65,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, ELECTRIC
+	db 45 ; catch rate
+	db 106 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 63 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FLASH, THUNDERBOLT
+	; end
diff --git a/data/base_stats/entei.asm b/data/base_stats/entei.asm
new file mode 100644
index 000000000..24dc4e69b
--- /dev/null
+++ b/data/base_stats/entei.asm
@@ -0,0 +1,22 @@
+	db ENTEI ; 244
+
+	db 115, 115,  85, 100,  90,  75
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 3 ; catch rate
+	db 217 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 80 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, SWIFT, DETECT, REST, CUT, STRENGTH, FLASH, FLAMETHROWER
+	; end
diff --git a/data/base_stats/espeon.asm b/data/base_stats/espeon.asm
new file mode 100644
index 000000000..33f50bfb6
--- /dev/null
+++ b/data/base_stats/espeon.asm
@@ -0,0 +1,22 @@
+	db ESPEON ; 196
+
+	db  65,  65,  60, 110, 130,  95
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, PSYCHIC
+	db 45 ; catch rate
+	db 197 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 35 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, NIGHTMARE, CUT, FLASH
+	; end
diff --git a/data/base_stats/exeggcute.asm b/data/base_stats/exeggcute.asm
new file mode 100644
index 000000000..a83114771
--- /dev/null
+++ b/data/base_stats/exeggcute.asm
@@ -0,0 +1,22 @@
+	db EXEGGCUTE ; 102
+
+	db  60,  40,  80,  40,  60,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, PSYCHIC
+	db 90 ; catch rate
+	db 98 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn PLANT, PLANT ; egg groups
+
+	; tmhm
+	tmhm CURSE, ROLLOUT, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, STRENGTH, FLASH
+	; end
diff --git a/data/base_stats/exeggutor.asm b/data/base_stats/exeggutor.asm
new file mode 100644
index 000000000..dcb07df7b
--- /dev/null
+++ b/data/base_stats/exeggutor.asm
@@ -0,0 +1,22 @@
+	db EXEGGUTOR ; 103
+
+	db  95,  95,  85,  55, 125,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, PSYCHIC
+	db 45 ; catch rate
+	db 212 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn PLANT, PLANT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, STRENGTH, FLASH
+	; end
diff --git a/data/base_stats/farfetch_d.asm b/data/base_stats/farfetch_d.asm
new file mode 100644
index 000000000..55c12ffcc
--- /dev/null
+++ b/data/base_stats/farfetch_d.asm
@@ -0,0 +1,22 @@
+	db FARFETCH_D ; 083
+
+	db  52,  65,  55,  60,  58,  62
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, FLYING
+	db 45 ; catch rate
+	db 94 ; base exp
+	db NO_ITEM ; item 1
+	db STICK ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AVIAN, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, CUT, FLY
+	; end
diff --git a/data/base_stats/fearow.asm b/data/base_stats/fearow.asm
new file mode 100644
index 000000000..2d6af3436
--- /dev/null
+++ b/data/base_stats/fearow.asm
@@ -0,0 +1,22 @@
+	db FEAROW ; 022
+
+	db  65,  90,  65, 100,  61,  61
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, FLYING
+	db 90 ; catch rate
+	db 162 ; base exp
+	db NO_ITEM ; item 1
+	db SHARP_BEAK ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FLY
+	; end
diff --git a/data/base_stats/feraligatr.asm b/data/base_stats/feraligatr.asm
new file mode 100644
index 000000000..78263e349
--- /dev/null
+++ b/data/base_stats/feraligatr.asm
@@ -0,0 +1,22 @@
+	db FERALIGATR ; 160
+
+	db  85, 105, 100,  78,  79,  83
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 45 ; catch rate
+	db 210 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, FURY_CUTTER, CUT, SURF, STRENGTH, WHIRLPOOL, ICE_BEAM
+	; end
diff --git a/data/base_stats/flaaffy.asm b/data/base_stats/flaaffy.asm
new file mode 100644
index 000000000..9ac1d8e00
--- /dev/null
+++ b/data/base_stats/flaaffy.asm
@@ -0,0 +1,22 @@
+	db FLAAFFY ; 180
+
+	db  70,  55,  55,  45,  80,  60
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, ELECTRIC
+	db 120 ; catch rate
+	db 117 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, FIRE_PUNCH, STRENGTH, FLASH, THUNDERBOLT
+	; end
diff --git a/data/base_stats/flareon.asm b/data/base_stats/flareon.asm
new file mode 100644
index 000000000..3c0312d19
--- /dev/null
+++ b/data/base_stats/flareon.asm
@@ -0,0 +1,22 @@
+	db FLAREON ; 136
+
+	db  65, 130,  60,  65,  95, 110
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 45 ; catch rate
+	db 198 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 35 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DETECT, REST, ATTRACT, FLAMETHROWER
+	; end
diff --git a/data/base_stats/forretress.asm b/data/base_stats/forretress.asm
new file mode 100644
index 000000000..9a8e56e84
--- /dev/null
+++ b/data/base_stats/forretress.asm
@@ -0,0 +1,22 @@
+	db FORRETRESS ; 205
+
+	db  75,  90, 140,  40,  60,  60
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, STEEL
+	db 75 ; catch rate
+	db 118 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, STRENGTH
+	; end
diff --git a/data/base_stats/furret.asm b/data/base_stats/furret.asm
new file mode 100644
index 000000000..2344f62d6
--- /dev/null
+++ b/data/base_stats/furret.asm
@@ -0,0 +1,22 @@
+	db FURRET ; 162
+
+	db  85,  76,  64,  90,  45,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 90 ; catch rate
+	db 116 ; base exp
+	db BERRY ; item 1
+	db GOLD_BERRY ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, CUT, SURF, STRENGTH
+	; end
diff --git a/data/base_stats/gastly.asm b/data/base_stats/gastly.asm
new file mode 100644
index 000000000..69cf1bad5
--- /dev/null
+++ b/data/base_stats/gastly.asm
@@ -0,0 +1,22 @@
+	db GASTLY ; 092
+
+	db  30,  35,  30,  80, 100,  35
+	;   hp  atk  def  spd  sat  sdf
+
+	db GHOST, POISON
+	db 190 ; catch rate
+	db 95 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn AMORPHOUS, AMORPHOUS ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, THUNDERBOLT
+	; end
diff --git a/data/base_stats/gengar.asm b/data/base_stats/gengar.asm
new file mode 100644
index 000000000..6659adfc3
--- /dev/null
+++ b/data/base_stats/gengar.asm
@@ -0,0 +1,22 @@
+	db GENGAR ; 094
+
+	db  60,  65,  60, 110, 130,  75
+	;   hp  atk  def  spd  sat  sdf
+
+	db GHOST, POISON
+	db 45 ; catch rate
+	db 190 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn AMORPHOUS, AMORPHOUS ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, THIEF, FIRE_PUNCH, NIGHTMARE, STRENGTH, THUNDERBOLT
+	; end
diff --git a/data/base_stats/geodude.asm b/data/base_stats/geodude.asm
new file mode 100644
index 000000000..030e56477
--- /dev/null
+++ b/data/base_stats/geodude.asm
@@ -0,0 +1,22 @@
+	db GEODUDE ; 074
+
+	db  40,  80, 100,  20,  30,  30
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, GROUND
+	db 255 ; catch rate
+	db 86 ; base exp
+	db NO_ITEM ; item 1
+	db EVERSTONE ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn INANIMATE, INANIMATE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, REST, ATTRACT, FIRE_PUNCH, STRENGTH, FLAMETHROWER
+	; end
diff --git a/data/base_stats/girafarig.asm b/data/base_stats/girafarig.asm
new file mode 100644
index 000000000..0b114eff5
--- /dev/null
+++ b/data/base_stats/girafarig.asm
@@ -0,0 +1,22 @@
+	db GIRAFARIG ; 203
+
+	db  70,  80,  65,  85,  90,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, PSYCHIC
+	db 60 ; catch rate
+	db 149 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, STRENGTH, THUNDERBOLT
+	; end
diff --git a/data/base_stats/gligar.asm b/data/base_stats/gligar.asm
new file mode 100644
index 000000000..527f022a1
--- /dev/null
+++ b/data/base_stats/gligar.asm
@@ -0,0 +1,22 @@
+	db GLIGAR ; 207
+
+	db  65,  75, 105,  85,  35,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db GROUND, FLYING
+	db 60 ; catch rate
+	db 108 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SANDSTORM, SWIFT, DETECT, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, STRENGTH
+	; end
diff --git a/data/base_stats/gloom.asm b/data/base_stats/gloom.asm
new file mode 100644
index 000000000..f0238e12f
--- /dev/null
+++ b/data/base_stats/gloom.asm
@@ -0,0 +1,22 @@
+	db GLOOM ; 044
+
+	db  60,  65,  70,  40,  85,  75
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, POISON
+	db 120 ; catch rate
+	db 132 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn PLANT, PLANT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
+	; end
diff --git a/data/base_stats/golbat.asm b/data/base_stats/golbat.asm
new file mode 100644
index 000000000..7f0552c23
--- /dev/null
+++ b/data/base_stats/golbat.asm
@@ -0,0 +1,22 @@
+	db GOLBAT ; 042
+
+	db  75,  80,  70,  90,  65,  75
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, FLYING
+	db 90 ; catch rate
+	db 171 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING
+	; end
diff --git a/data/base_stats/goldeen.asm b/data/base_stats/goldeen.asm
new file mode 100644
index 000000000..81dfed80e
--- /dev/null
+++ b/data/base_stats/goldeen.asm
@@ -0,0 +1,22 @@
+	db GOLDEEN ; 118
+
+	db  45,  67,  60,  63,  35,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 225 ; catch rate
+	db 111 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FISH, FISH ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WATERFALL, ICE_BEAM
+	; end
diff --git a/data/base_stats/golduck.asm b/data/base_stats/golduck.asm
new file mode 100644
index 000000000..bced4b43d
--- /dev/null
+++ b/data/base_stats/golduck.asm
@@ -0,0 +1,22 @@
+	db GOLDUCK ; 055
+
+	db  80,  82,  78,  85,  95,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 75 ; catch rate
+	db 174 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, FURY_CUTTER, SURF, STRENGTH, FLASH, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
diff --git a/data/base_stats/golem.asm b/data/base_stats/golem.asm
new file mode 100644
index 000000000..d27186c20
--- /dev/null
+++ b/data/base_stats/golem.asm
@@ -0,0 +1,22 @@
+	db GOLEM ; 076
+
+	db  80, 110, 130,  45,  55,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, GROUND
+	db 45 ; catch rate
+	db 177 ; base exp
+	db NO_ITEM ; item 1
+	db EVERSTONE ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn INANIMATE, INANIMATE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, STRENGTH, FLAMETHROWER
+	; end
diff --git a/data/base_stats/granbull.asm b/data/base_stats/granbull.asm
new file mode 100644
index 000000000..2a9e4728c
--- /dev/null
+++ b/data/base_stats/granbull.asm
@@ -0,0 +1,22 @@
+	db GRANBULL ; 210
+
+	db  90, 120,  75,  45,  60,  60
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 75 ; catch rate
+	db 178 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 191 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn FIELD, FAIRY ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, THUNDERBOLT
+	; end
diff --git a/data/base_stats/graveler.asm b/data/base_stats/graveler.asm
new file mode 100644
index 000000000..834a1c97b
--- /dev/null
+++ b/data/base_stats/graveler.asm
@@ -0,0 +1,22 @@
+	db GRAVELER ; 075
+
+	db  55,  95, 115,  35,  45,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, GROUND
+	db 120 ; catch rate
+	db 134 ; base exp
+	db NO_ITEM ; item 1
+	db EVERSTONE ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn INANIMATE, INANIMATE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, REST, ATTRACT, FIRE_PUNCH, STRENGTH, FLAMETHROWER
+	; end
diff --git a/data/base_stats/grimer.asm b/data/base_stats/grimer.asm
new file mode 100644
index 000000000..2b289ede9
--- /dev/null
+++ b/data/base_stats/grimer.asm
@@ -0,0 +1,22 @@
+	db GRIMER ; 088
+
+	db  80,  80,  50,  25,  40,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, POISON
+	db 190 ; catch rate
+	db 90 ; base exp
+	db NO_ITEM ; item 1
+	db NUGGET ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMORPHOUS, AMORPHOUS ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, FIRE_BLAST, THUNDERPUNCH, REST, ATTRACT, THIEF, FIRE_PUNCH, FLAMETHROWER, THUNDERBOLT
+	; end
diff --git a/data/base_stats/growlithe.asm b/data/base_stats/growlithe.asm
new file mode 100644
index 000000000..1298bd07d
--- /dev/null
+++ b/data/base_stats/growlithe.asm
@@ -0,0 +1,22 @@
+	db GROWLITHE ; 058
+
+	db  55,  70,  45,  60,  70,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 190 ; catch rate
+	db 91 ; base exp
+	db BURNT_BERRY ; item 1
+	db BURNT_BERRY ; item 2
+	db 63 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, REST, ATTRACT, FLAMETHROWER
+	; end
diff --git a/data/base_stats/gyarados.asm b/data/base_stats/gyarados.asm
new file mode 100644
index 000000000..1af166cdf
--- /dev/null
+++ b/data/base_stats/gyarados.asm
@@ -0,0 +1,22 @@
+	db GYARADOS ; 130
+
+	db  95, 125,  79,  81,  60, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, FLYING
+	db 45 ; catch rate
+	db 214 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 5 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FISH, REPTILE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, DRAGONBREATH, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, REST, ATTRACT, SURF, STRENGTH, WHIRLPOOL, WATERFALL, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/haunter.asm b/data/base_stats/haunter.asm
new file mode 100644
index 000000000..a75cf79db
--- /dev/null
+++ b/data/base_stats/haunter.asm
@@ -0,0 +1,22 @@
+	db HAUNTER ; 093
+
+	db  45,  50,  45,  95, 115,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db GHOST, POISON
+	db 90 ; catch rate
+	db 126 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn AMORPHOUS, AMORPHOUS ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, THUNDERBOLT
+	; end
diff --git a/data/base_stats/heracross.asm b/data/base_stats/heracross.asm
new file mode 100644
index 000000000..69520b350
--- /dev/null
+++ b/data/base_stats/heracross.asm
@@ -0,0 +1,22 @@
+	db HERACROSS ; 214
+
+	db  80, 125,  75,  85,  40,  95
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, FIGHTING
+	db 45 ; catch rate
+	db 200 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, STRENGTH
+	; end
diff --git a/data/base_stats/hitmonchan.asm b/data/base_stats/hitmonchan.asm
new file mode 100644
index 000000000..7753c3bd1
--- /dev/null
+++ b/data/base_stats/hitmonchan.asm
@@ -0,0 +1,22 @@
+	db HITMONCHAN ; 107
+
+	db  50, 105,  79,  76,  35, 110
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIGHTING, FIGHTING
+	db 45 ; catch rate
+	db 140 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 0 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH
+	; end
diff --git a/data/base_stats/hitmonlee.asm b/data/base_stats/hitmonlee.asm
new file mode 100644
index 000000000..a2c53ca32
--- /dev/null
+++ b/data/base_stats/hitmonlee.asm
@@ -0,0 +1,22 @@
+	db HITMONLEE ; 106
+
+	db  50, 120,  53,  87,  35, 110
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIGHTING, FIGHTING
+	db 45 ; catch rate
+	db 139 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 0 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STRENGTH
+	; end
diff --git a/data/base_stats/hitmontop.asm b/data/base_stats/hitmontop.asm
new file mode 100644
index 000000000..af3eb7c88
--- /dev/null
+++ b/data/base_stats/hitmontop.asm
@@ -0,0 +1,22 @@
+	db HITMONTOP ; 237
+
+	db  50,  95,  95,  70,  35, 110
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIGHTING, FIGHTING
+	db 45 ; catch rate
+	db 138 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 0 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STRENGTH
+	; end
diff --git a/data/base_stats/ho_oh.asm b/data/base_stats/ho_oh.asm
new file mode 100644
index 000000000..fc968b16c
--- /dev/null
+++ b/data/base_stats/ho_oh.asm
@@ -0,0 +1,22 @@
+	db HO_OH ; 250
+
+	db 106, 130,  90,  90, 110, 154
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FLYING
+	db 3 ; catch rate
+	db 220 ; base exp
+	db SACRED_ASH ; item 1
+	db SACRED_ASH ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 120 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7 , 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, DRAGONBREATH, THUNDER, EARTHQUAKE, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, SWIFT, DREAM_EATER, DETECT, REST, STEEL_WING, NIGHTMARE, FLY, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT
+	; end
diff --git a/data/base_stats/hoothoot.asm b/data/base_stats/hoothoot.asm
new file mode 100644
index 000000000..a9574bce8
--- /dev/null
+++ b/data/base_stats/hoothoot.asm
@@ -0,0 +1,22 @@
+	db HOOTHOOT ; 163
+
+	db  60,  30,  30,  50,  36,  56
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, FLYING
+	db 255 ; catch rate
+	db 58 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, STEEL_WING, NIGHTMARE, FLY, FLASH
+	; end
diff --git a/data/base_stats/hoppip.asm b/data/base_stats/hoppip.asm
new file mode 100644
index 000000000..2c284096c
--- /dev/null
+++ b/data/base_stats/hoppip.asm
@@ -0,0 +1,22 @@
+	db HOPPIP ; 187
+
+	db  35,  35,  40,  50,  35,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, FLYING
+	db 255 ; catch rate
+	db 74 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn FAIRY, PLANT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, FLASH
+	; end
diff --git a/data/base_stats/horsea.asm b/data/base_stats/horsea.asm
new file mode 100644
index 000000000..3339872fe
--- /dev/null
+++ b/data/base_stats/horsea.asm
@@ -0,0 +1,22 @@
+	db HORSEA ; 116
+
+	db  30,  40,  70,  60,  70,  25
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 225 ; catch rate
+	db 83 ; base exp
+	db NO_ITEM ; item 1
+	db DRAGON_SCALE ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, REPTILE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, DRAGONBREATH, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
diff --git a/data/base_stats/houndoom.asm b/data/base_stats/houndoom.asm
new file mode 100644
index 000000000..c79b075ed
--- /dev/null
+++ b/data/base_stats/houndoom.asm
@@ -0,0 +1,22 @@
+	db HOUNDOOM ; 229
+
+	db  75,  90,  50,  95, 110,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db DARK, FIRE
+	db 45 ; catch rate
+	db 204 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, FIRE_BLAST, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, STRENGTH, FLAMETHROWER
+	; end
diff --git a/data/base_stats/houndour.asm b/data/base_stats/houndour.asm
new file mode 100644
index 000000000..18cb6884a
--- /dev/null
+++ b/data/base_stats/houndour.asm
@@ -0,0 +1,22 @@
+	db HOUNDOUR ; 228
+
+	db  45,  60,  30,  65,  80,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db DARK, FIRE
+	db 120 ; catch rate
+	db 114 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, FIRE_BLAST, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, FLAMETHROWER
+	; end
diff --git a/data/base_stats/hypno.asm b/data/base_stats/hypno.asm
new file mode 100644
index 000000000..85dcc73e6
--- /dev/null
+++ b/data/base_stats/hypno.asm
@@ -0,0 +1,22 @@
+	db HYPNO ; 097
+
+	db  85,  73,  70,  67,  73, 115
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, PSYCHIC
+	db 75 ; catch rate
+	db 165 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, FIRE_PUNCH, NIGHTMARE, FLASH
+	; end
diff --git a/data/base_stats/igglybuff.asm b/data/base_stats/igglybuff.asm
new file mode 100644
index 000000000..6e8d42efc
--- /dev/null
+++ b/data/base_stats/igglybuff.asm
@@ -0,0 +1,22 @@
+	db IGGLYBUFF ; 174
+
+	db  90,  30,  15,  15,  40,  20
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 170 ; catch rate
+	db 39 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 191 ; gender
+	db 100 ; unknown
+	db 10 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, NIGHTMARE, FLASH, FLAMETHROWER
+	; end
diff --git a/data/base_stats/ivysaur.asm b/data/base_stats/ivysaur.asm
new file mode 100644
index 000000000..aebfce677
--- /dev/null
+++ b/data/base_stats/ivysaur.asm
@@ -0,0 +1,22 @@
+	db IVYSAUR ; 002
+
+	db  60,  62,  63,  60,  80,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, POISON
+	db 45 ; catch rate
+	db 141 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, PLANT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, FURY_CUTTER, CUT, FLASH
+	; end
diff --git a/data/base_stats/jigglypuff.asm b/data/base_stats/jigglypuff.asm
new file mode 100644
index 000000000..4fe9a75d2
--- /dev/null
+++ b/data/base_stats/jigglypuff.asm
@@ -0,0 +1,22 @@
+	db JIGGLYPUFF ; 039
+
+	db 115,  45,  20,  20,  45,  25
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 170 ; catch rate
+	db 76 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 191 ; gender
+	db 100 ; unknown
+	db 10 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn FAIRY, FAIRY ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, DETECT, REST, ATTRACT, FIRE_PUNCH, NIGHTMARE, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/jolteon.asm b/data/base_stats/jolteon.asm
new file mode 100644
index 000000000..060c13a6f
--- /dev/null
+++ b/data/base_stats/jolteon.asm
@@ -0,0 +1,22 @@
+	db JOLTEON ; 135
+
+	db  65,  65,  60, 130, 110,  95
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, ELECTRIC
+	db 45 ; catch rate
+	db 197 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 35 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, FLASH, THUNDERBOLT
+	; end
diff --git a/data/base_stats/jumpluff.asm b/data/base_stats/jumpluff.asm
new file mode 100644
index 000000000..948d89ae9
--- /dev/null
+++ b/data/base_stats/jumpluff.asm
@@ -0,0 +1,22 @@
+	db JUMPLUFF ; 189
+
+	db  75,  55,  70, 110,  55,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, FLYING
+	db 45 ; catch rate
+	db 176 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn FAIRY, PLANT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, FLASH
+	; end
diff --git a/data/base_stats/jynx.asm b/data/base_stats/jynx.asm
new file mode 100644
index 000000000..23f37107a
--- /dev/null
+++ b/data/base_stats/jynx.asm
@@ -0,0 +1,22 @@
+	db JYNX ; 124
+
+	db  65,  50,  35,  95, 115,  95
+	;   hp  atk  def  spd  sat  sdf
+
+	db ICE, PSYCHIC
+	db 45 ; catch rate
+	db 137 ; base exp
+	db ICE_BERRY ; item 1
+	db ICE_BERRY ; item 2
+	db 254 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SWEET_SCENT, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, ICE_BEAM
+	; end
diff --git a/data/base_stats/kabuto.asm b/data/base_stats/kabuto.asm
new file mode 100644
index 000000000..036821999
--- /dev/null
+++ b/data/base_stats/kabuto.asm
@@ -0,0 +1,22 @@
+	db KABUTO ; 140
+
+	db  30,  80,  90,  55,  55,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, WATER
+	db 45 ; catch rate
+	db 119 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 30 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, REST, ATTRACT, THIEF, ICE_BEAM
+	; end
diff --git a/data/base_stats/kabutops.asm b/data/base_stats/kabutops.asm
new file mode 100644
index 000000000..b0cdf9a76
--- /dev/null
+++ b/data/base_stats/kabutops.asm
@@ -0,0 +1,22 @@
+	db KABUTOPS ; 141
+
+	db  60, 115, 105,  80,  65,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, WATER
+	db 45 ; catch rate
+	db 201 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 30 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, SURF, WHIRLPOOL, ICE_BEAM
+	; end
diff --git a/data/base_stats/kadabra.asm b/data/base_stats/kadabra.asm
new file mode 100644
index 000000000..0cdf2b74f
--- /dev/null
+++ b/data/base_stats/kadabra.asm
@@ -0,0 +1,22 @@
+	db KADABRA ; 064
+
+	db  40,  35,  30, 105, 120,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, PSYCHIC
+	db 100 ; catch rate
+	db 145 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 63 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DIG, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, THIEF, FIRE_PUNCH, NIGHTMARE, FLASH
+	; end
diff --git a/data/base_stats/kakuna.asm b/data/base_stats/kakuna.asm
new file mode 100644
index 000000000..c48ad4c6c
--- /dev/null
+++ b/data/base_stats/kakuna.asm
@@ -0,0 +1,22 @@
+	db KAKUNA ; 014
+
+	db  45,  25,  50,  35,  25,  25
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, POISON
+	db 120 ; catch rate
+	db 71 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm
+	; end
diff --git a/data/base_stats/kangaskhan.asm b/data/base_stats/kangaskhan.asm
new file mode 100644
index 000000000..1958b1ce3
--- /dev/null
+++ b/data/base_stats/kangaskhan.asm
@@ -0,0 +1,22 @@
+	db KANGASKHAN ; 115
+
+	db 105,  95,  80,  90,  40,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 45 ; catch rate
+	db 175 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 254 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn MONSTER, MONSTER ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, THUNDERPUNCH, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/kingdra.asm b/data/base_stats/kingdra.asm
new file mode 100644
index 000000000..ac049ac4a
--- /dev/null
+++ b/data/base_stats/kingdra.asm
@@ -0,0 +1,22 @@
+	db KINGDRA ; 230
+
+	db  75,  95,  95,  85,  95,  95
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, DRAGON
+	db 45 ; catch rate
+	db 207 ; base exp
+	db NO_ITEM ; item 1
+	db DRAGON_SCALE ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, REPTILE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, DRAGONBREATH, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
diff --git a/data/base_stats/kingler.asm b/data/base_stats/kingler.asm
new file mode 100644
index 000000000..bb0e19904
--- /dev/null
+++ b/data/base_stats/kingler.asm
@@ -0,0 +1,22 @@
+	db KINGLER ; 099
+
+	db  55, 130, 115,  75,  50,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 60 ; catch rate
+	db 206 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INVERTEBRATE, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, SURF, STRENGTH, WHIRLPOOL, ICE_BEAM
+	; end
diff --git a/data/base_stats/koffing.asm b/data/base_stats/koffing.asm
new file mode 100644
index 000000000..9851a985e
--- /dev/null
+++ b/data/base_stats/koffing.asm
@@ -0,0 +1,22 @@
+	db KOFFING ; 109
+
+	db  40,  65,  95,  35,  60,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, POISON
+	db 190 ; catch rate
+	db 114 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMORPHOUS, AMORPHOUS ; egg groups
+
+	; tmhm
+	tmhm CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, FIRE_BLAST, REST, ATTRACT, THIEF, FLAMETHROWER, THUNDERBOLT
+	; end
diff --git a/data/base_stats/krabby.asm b/data/base_stats/krabby.asm
new file mode 100644
index 000000000..54ec9eab4
--- /dev/null
+++ b/data/base_stats/krabby.asm
@@ -0,0 +1,22 @@
+	db KRABBY ; 098
+
+	db  30, 105,  90,  50,  25,  25
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 225 ; catch rate
+	db 115 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INVERTEBRATE, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, SURF, STRENGTH, WHIRLPOOL, ICE_BEAM
+	; end
diff --git a/data/base_stats/lanturn.asm b/data/base_stats/lanturn.asm
new file mode 100644
index 000000000..3c0f47569
--- /dev/null
+++ b/data/base_stats/lanturn.asm
@@ -0,0 +1,22 @@
+	db LANTURN ; 171
+
+	db 125,  58,  58,  67,  76,  76
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, ELECTRIC
+	db 75 ; catch rate
+	db 156 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FISH, FISH ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, SURF, FLASH, WHIRLPOOL, WATERFALL, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/lapras.asm b/data/base_stats/lapras.asm
new file mode 100644
index 000000000..8ff69c1de
--- /dev/null
+++ b/data/base_stats/lapras.asm
@@ -0,0 +1,22 @@
+	db LAPRAS ; 131
+
+	db 130,  85,  80,  60,  85,  95
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, ICE
+	db 45 ; catch rate
+	db 219 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 40 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn MONSTER, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, THUNDER, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DREAM_EATER, REST, ATTRACT, NIGHTMARE, SURF, STRENGTH, WHIRLPOOL, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/larvitar.asm b/data/base_stats/larvitar.asm
new file mode 100644
index 000000000..db4f6a103
--- /dev/null
+++ b/data/base_stats/larvitar.asm
@@ -0,0 +1,22 @@
+	db LARVITAR ; 246
+
+	db  50,  64,  50,  41,  45,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, GROUND
+	db 45 ; catch rate
+	db 67 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 40 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn MONSTER, MONSTER ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DETECT, REST, ATTRACT
+	; end
diff --git a/data/base_stats/ledian.asm b/data/base_stats/ledian.asm
new file mode 100644
index 000000000..c4fdb8f06
--- /dev/null
+++ b/data/base_stats/ledian.asm
@@ -0,0 +1,22 @@
+	db LEDIAN ; 166
+
+	db  55,  35,  50,  85,  55, 110
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, FLYING
+	db 90 ; catch rate
+	db 134 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DIG, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, THUNDERPUNCH, REST, ATTRACT, THIEF, FLASH
+	; end
diff --git a/data/base_stats/ledyba.asm b/data/base_stats/ledyba.asm
new file mode 100644
index 000000000..1f7f82ebf
--- /dev/null
+++ b/data/base_stats/ledyba.asm
@@ -0,0 +1,22 @@
+	db LEDYBA ; 165
+
+	db  40,  20,  30,  55,  40,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, FLYING
+	db 255 ; catch rate
+	db 54 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DIG, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, THUNDERPUNCH, REST, ATTRACT, THIEF, FLASH
+	; end
diff --git a/data/base_stats/lickitung.asm b/data/base_stats/lickitung.asm
new file mode 100644
index 000000000..14bb7160b
--- /dev/null
+++ b/data/base_stats/lickitung.asm
@@ -0,0 +1,22 @@
+	db LICKITUNG ; 108
+
+	db  90,  55,  75,  30,  60,  75
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 45 ; catch rate
+	db 127 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn MONSTER, MONSTER ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, THIEF, FIRE_PUNCH, NIGHTMARE, CUT, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/lugia.asm b/data/base_stats/lugia.asm
new file mode 100644
index 000000000..a6bf1f5c2
--- /dev/null
+++ b/data/base_stats/lugia.asm
@@ -0,0 +1,22 @@
+	db LUGIA ; 249
+
+	db 106,  90, 130, 110,  90, 154
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, FLYING
+	db 3 ; catch rate
+	db 220 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 120 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, THUNDER, EARTHQUAKE, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DREAM_EATER, DETECT, REST, STEEL_WING, NIGHTMARE, FLY, SURF, STRENGTH, WHIRLPOOL, WATERFALL, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/machamp.asm b/data/base_stats/machamp.asm
new file mode 100644
index 000000000..091fe7391
--- /dev/null
+++ b/data/base_stats/machamp.asm
@@ -0,0 +1,22 @@
+	db MACHAMP ; 068
+
+	db  90, 130,  80,  55,  65,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIGHTING, FIGHTING
+	db 45 ; catch rate
+	db 193 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 63 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLAMETHROWER
+	; end
diff --git a/data/base_stats/machoke.asm b/data/base_stats/machoke.asm
new file mode 100644
index 000000000..355aee6d8
--- /dev/null
+++ b/data/base_stats/machoke.asm
@@ -0,0 +1,22 @@
+	db MACHOKE ; 067
+
+	db  80, 100,  70,  45,  50,  60
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIGHTING, FIGHTING
+	db 90 ; catch rate
+	db 146 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 63 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLAMETHROWER
+	; end
diff --git a/data/base_stats/machop.asm b/data/base_stats/machop.asm
new file mode 100644
index 000000000..60f0ae04a
--- /dev/null
+++ b/data/base_stats/machop.asm
@@ -0,0 +1,22 @@
+	db MACHOP ; 066
+
+	db  70,  80,  50,  35,  35,  35
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIGHTING, FIGHTING
+	db 180 ; catch rate
+	db 88 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 63 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLAMETHROWER
+	; end
diff --git a/data/base_stats/magby.asm b/data/base_stats/magby.asm
new file mode 100644
index 000000000..84c9c30a0
--- /dev/null
+++ b/data/base_stats/magby.asm
@@ -0,0 +1,22 @@
+	db MAGBY ; 240
+
+	db  45,  75,  37,  83,  70,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 45 ; catch rate
+	db 117 ; base exp
+	db BURNT_BERRY ; item 1
+	db BURNT_BERRY ; item 2
+	db 63 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FLAMETHROWER
+	; end
diff --git a/data/base_stats/magcargo.asm b/data/base_stats/magcargo.asm
new file mode 100644
index 000000000..6a245c784
--- /dev/null
+++ b/data/base_stats/magcargo.asm
@@ -0,0 +1,22 @@
+	db MAGCARGO ; 219
+
+	db  50,  50, 120,  30,  80,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, ROCK
+	db 75 ; catch rate
+	db 154 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMORPHOUS, AMORPHOUS ; egg groups
+
+	; tmhm
+	tmhm CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, REST, ATTRACT, STRENGTH, FLAMETHROWER
+	; end
diff --git a/data/base_stats/magikarp.asm b/data/base_stats/magikarp.asm
new file mode 100644
index 000000000..57a2b847c
--- /dev/null
+++ b/data/base_stats/magikarp.asm
@@ -0,0 +1,22 @@
+	db MAGIKARP ; 129
+
+	db  20,  10,  55,  80,  15,  20
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 255 ; catch rate
+	db 20 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 5 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FISH, REPTILE ; egg groups
+
+	; tmhm
+	tmhm
+	; end
diff --git a/data/base_stats/magmar.asm b/data/base_stats/magmar.asm
new file mode 100644
index 000000000..9b1e15ac1
--- /dev/null
+++ b/data/base_stats/magmar.asm
@@ -0,0 +1,22 @@
+	db MAGMAR ; 126
+
+	db  65,  95,  57,  93, 100,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 45 ; catch rate
+	db 167 ; base exp
+	db BURNT_BERRY ; item 1
+	db BURNT_BERRY ; item 2
+	db 63 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLAMETHROWER
+	; end
diff --git a/data/base_stats/magnemite.asm b/data/base_stats/magnemite.asm
new file mode 100644
index 000000000..e7ba32b37
--- /dev/null
+++ b/data/base_stats/magnemite.asm
@@ -0,0 +1,22 @@
+	db MAGNEMITE ; 081
+
+	db  25,  35,  70,  45,  95,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, STEEL
+	db 190 ; catch rate
+	db 89 ; base exp
+	db NO_ITEM ; item 1
+	db METAL_COAT ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INANIMATE, INANIMATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, FLASH, THUNDERBOLT
+	; end
diff --git a/data/base_stats/magneton.asm b/data/base_stats/magneton.asm
new file mode 100644
index 000000000..dbe564757
--- /dev/null
+++ b/data/base_stats/magneton.asm
@@ -0,0 +1,22 @@
+	db MAGNETON ; 082
+
+	db  50,  60,  95,  70, 120,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, STEEL
+	db 60 ; catch rate
+	db 161 ; base exp
+	db NO_ITEM ; item 1
+	db METAL_COAT ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INANIMATE, INANIMATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, FLASH, THUNDERBOLT
+	; end
diff --git a/data/base_stats/mankey.asm b/data/base_stats/mankey.asm
new file mode 100644
index 000000000..50c0e6c69
--- /dev/null
+++ b/data/base_stats/mankey.asm
@@ -0,0 +1,22 @@
+	db MANKEY ; 056
+
+	db  40,  80,  35,  70,  35,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIGHTING, FIGHTING
+	db 190 ; catch rate
+	db 74 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, THUNDERBOLT
+	; end
diff --git a/data/base_stats/mantine.asm b/data/base_stats/mantine.asm
new file mode 100644
index 000000000..b340b4090
--- /dev/null
+++ b/data/base_stats/mantine.asm
@@ -0,0 +1,22 @@
+	db MANTINE ; 226
+
+	db  65,  40,  70,  70,  80, 140
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, FLYING
+	db 25 ; catch rate
+	db 168 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn AMPHIBIAN, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
diff --git a/data/base_stats/mareep.asm b/data/base_stats/mareep.asm
new file mode 100644
index 000000000..46b26f018
--- /dev/null
+++ b/data/base_stats/mareep.asm
@@ -0,0 +1,22 @@
+	db MAREEP ; 179
+
+	db  55,  40,  40,  35,  65,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, ELECTRIC
+	db 235 ; catch rate
+	db 59 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, FLASH, THUNDERBOLT
+	; end
diff --git a/data/base_stats/marill.asm b/data/base_stats/marill.asm
new file mode 100644
index 000000000..b79f2c153
--- /dev/null
+++ b/data/base_stats/marill.asm
@@ -0,0 +1,22 @@
+	db MARILL ; 183
+
+	db  70,  20,  50,  40,  20,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 190 ; catch rate
+	db 58 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn AMPHIBIAN, FAIRY ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
diff --git a/data/base_stats/marowak.asm b/data/base_stats/marowak.asm
new file mode 100644
index 000000000..d8f45a05d
--- /dev/null
+++ b/data/base_stats/marowak.asm
@@ -0,0 +1,22 @@
+	db MAROWAK ; 105
+
+	db  60,  80, 110,  45,  50,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db GROUND, GROUND
+	db 75 ; catch rate
+	db 124 ; base exp
+	db NO_ITEM ; item 1
+	db THICK_CLUB ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn MONSTER, MONSTER ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, FLAMETHROWER, ICE_BEAM
+	; end
diff --git a/data/base_stats/meganium.asm b/data/base_stats/meganium.asm
new file mode 100644
index 000000000..952f53a07
--- /dev/null
+++ b/data/base_stats/meganium.asm
@@ -0,0 +1,22 @@
+	db MEGANIUM ; 154
+
+	db  80,  82, 100,  80,  83, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, GRASS
+	db 45 ; catch rate
+	db 208 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, PLANT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, EARTHQUAKE, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, FURY_CUTTER, CUT, STRENGTH, FLASH
+	; end
diff --git a/data/base_stats/meowth.asm b/data/base_stats/meowth.asm
new file mode 100644
index 000000000..159c7525c
--- /dev/null
+++ b/data/base_stats/meowth.asm
@@ -0,0 +1,22 @@
+	db MEOWTH ; 052
+
+	db  40,  45,  35,  90,  40,  40
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 255 ; catch rate
+	db 69 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, THUNDERBOLT
+	; end
diff --git a/data/base_stats/metapod.asm b/data/base_stats/metapod.asm
new file mode 100644
index 000000000..100c33f41
--- /dev/null
+++ b/data/base_stats/metapod.asm
@@ -0,0 +1,22 @@
+	db METAPOD ; 011
+
+	db  50,  20,  55,  30,  25,  25
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, BUG
+	db 120 ; catch rate
+	db 72 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm
+	; end
diff --git a/data/base_stats/mew.asm b/data/base_stats/mew.asm
new file mode 100644
index 000000000..26405aa5d
--- /dev/null
+++ b/data/base_stats/mew.asm
@@ -0,0 +1,22 @@
+	db MEW ; 151
+
+	db 100, 100, 100, 100, 100, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, PSYCHIC
+	db 45 ; catch rate
+	db 64 ; base exp
+	db NO_ITEM ; item 1
+	db MIRACLEBERRY ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 120 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, DRAGONBREATH, THUNDER, EARTHQUAKE, RETURN, DIG, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SANDSTORM, FIRE_BLAST, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FIRE_PUNCH, FURY_CUTTER, NIGHTMARE, CUT, FLY, SURF, STRENGTH, FLASH, WHIRLPOOL, WATERFALL, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/mewtwo.asm b/data/base_stats/mewtwo.asm
new file mode 100644
index 000000000..f885a3ee8
--- /dev/null
+++ b/data/base_stats/mewtwo.asm
@@ -0,0 +1,22 @@
+	db MEWTWO ; 150
+
+	db 106, 110,  90, 130, 154,  90
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, PSYCHIC
+	db 3 ; catch rate
+	db 220 ; base exp
+	db NO_ITEM ; item 1
+	db BERSERK_GENE ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 120 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, IRON_TAIL, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, THUNDERPUNCH, DREAM_EATER, DETECT, REST, FIRE_PUNCH, NIGHTMARE, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/miltank.asm b/data/base_stats/miltank.asm
new file mode 100644
index 000000000..aed00e9f2
--- /dev/null
+++ b/data/base_stats/miltank.asm
@@ -0,0 +1,22 @@
+	db MILTANK ; 241
+
+	db  95,  80, 105, 100,  40,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 45 ; catch rate
+	db 200 ; base exp
+	db MOOMOO_MILK ; item 1
+	db MOOMOO_MILK ; item 2
+	db 254 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, FIRE_PUNCH, SURF, STRENGTH, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/misdreavus.asm b/data/base_stats/misdreavus.asm
new file mode 100644
index 000000000..7f3405626
--- /dev/null
+++ b/data/base_stats/misdreavus.asm
@@ -0,0 +1,22 @@
+	db MISDREAVUS ; 200
+
+	db  60,  60,  60,  85,  85,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db GHOST, GHOST
+	db 45 ; catch rate
+	db 147 ; base exp
+	db NO_ITEM ; item 1
+	db SPELL_TAG ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn AMORPHOUS, AMORPHOUS ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, FLASH, THUNDERBOLT
+	; end
diff --git a/data/base_stats/moltres.asm b/data/base_stats/moltres.asm
new file mode 100644
index 000000000..725fd72cf
--- /dev/null
+++ b/data/base_stats/moltres.asm
@@ -0,0 +1,22 @@
+	db MOLTRES ; 146
+
+	db  90, 100,  90,  90, 125,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FLYING
+	db 3 ; catch rate
+	db 217 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 80 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, SWIFT, DETECT, REST, STEEL_WING, FLY, FLAMETHROWER
+	; end
diff --git a/data/base_stats/mr__mime.asm b/data/base_stats/mr__mime.asm
new file mode 100644
index 000000000..4c692f739
--- /dev/null
+++ b/data/base_stats/mr__mime.asm
@@ -0,0 +1,22 @@
+	db MR__MIME ; 122
+
+	db  40,  45,  65,  90, 100, 120
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, PSYCHIC
+	db 45 ; catch rate
+	db 136 ; base exp
+	db NO_ITEM ; item 1
+	db MYSTERYBERRY ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn HUMANSHAPE, HUMANSHAPE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, SOLARBEAM, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, THUNDERPUNCH, DREAM_EATER, REST, ATTRACT, THIEF, FIRE_PUNCH, NIGHTMARE, FLASH, THUNDERBOLT
+	; end
diff --git a/data/base_stats/muk.asm b/data/base_stats/muk.asm
new file mode 100644
index 000000000..d041042e4
--- /dev/null
+++ b/data/base_stats/muk.asm
@@ -0,0 +1,22 @@
+	db MUK ; 089
+
+	db 105, 105,  75,  50,  65, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, POISON
+	db 75 ; catch rate
+	db 157 ; base exp
+	db NO_ITEM ; item 1
+	db NUGGET ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMORPHOUS, AMORPHOUS ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, CURSE, TOXIC, ZAP_CANNON, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, FIRE_BLAST, THUNDERPUNCH, REST, ATTRACT, THIEF, FIRE_PUNCH, FLAMETHROWER, THUNDERBOLT
+	; end
diff --git a/data/base_stats/murkrow.asm b/data/base_stats/murkrow.asm
new file mode 100644
index 000000000..d13e9607c
--- /dev/null
+++ b/data/base_stats/murkrow.asm
@@ -0,0 +1,22 @@
+	db MURKROW ; 198
+
+	db  60,  85,  42,  91,  85,  42
+	;   hp  atk  def  spd  sat  sdf
+
+	db DARK, FLYING
+	db 30 ; catch rate
+	db 107 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, STEEL_WING, NIGHTMARE, FLY
+	; end
diff --git a/data/base_stats/natu.asm b/data/base_stats/natu.asm
new file mode 100644
index 000000000..8739ce260
--- /dev/null
+++ b/data/base_stats/natu.asm
@@ -0,0 +1,22 @@
+	db NATU ; 177
+
+	db  40,  50,  45,  70,  70,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, FLYING
+	db 190 ; catch rate
+	db 73 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, FLASH
+	; end
diff --git a/data/base_stats/nidoking.asm b/data/base_stats/nidoking.asm
new file mode 100644
index 000000000..0c004b1f4
--- /dev/null
+++ b/data/base_stats/nidoking.asm
@@ -0,0 +1,22 @@
+	db NIDOKING ; 034
+
+	db  81,  92,  77,  85,  85,  75
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, GROUND
+	db 45 ; catch rate
+	db 195 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 0 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/nidoqueen.asm b/data/base_stats/nidoqueen.asm
new file mode 100644
index 000000000..a946e8837
--- /dev/null
+++ b/data/base_stats/nidoqueen.asm
@@ -0,0 +1,22 @@
+	db NIDOQUEEN ; 031
+
+	db  90,  82,  87,  76,  75,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, GROUND
+	db 45 ; catch rate
+	db 194 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 254 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/nidoran_f.asm b/data/base_stats/nidoran_f.asm
new file mode 100644
index 000000000..c336a6330
--- /dev/null
+++ b/data/base_stats/nidoran_f.asm
@@ -0,0 +1,22 @@
+	db NIDORAN_F ; 029
+
+	db  55,  47,  52,  41,  40,  40
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, POISON
+	db 235 ; catch rate
+	db 59 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 254 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, THUNDERBOLT
+	; end
diff --git a/data/base_stats/nidoran_m.asm b/data/base_stats/nidoran_m.asm
new file mode 100644
index 000000000..be3c87d0a
--- /dev/null
+++ b/data/base_stats/nidoran_m.asm
@@ -0,0 +1,22 @@
+	db NIDORAN_M ; 032
+
+	db  46,  57,  40,  50,  40,  40
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, POISON
+	db 235 ; catch rate
+	db 60 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 0 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, THUNDERBOLT
+	; end
diff --git a/data/base_stats/nidorina.asm b/data/base_stats/nidorina.asm
new file mode 100644
index 000000000..238144bc8
--- /dev/null
+++ b/data/base_stats/nidorina.asm
@@ -0,0 +1,22 @@
+	db NIDORINA ; 030
+
+	db  70,  62,  67,  56,  55,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, POISON
+	db 120 ; catch rate
+	db 117 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 254 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, STRENGTH, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/nidorino.asm b/data/base_stats/nidorino.asm
new file mode 100644
index 000000000..307382c45
--- /dev/null
+++ b/data/base_stats/nidorino.asm
@@ -0,0 +1,22 @@
+	db NIDORINO ; 033
+
+	db  61,  72,  57,  65,  55,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, POISON
+	db 120 ; catch rate
+	db 118 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 0 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, STRENGTH, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/ninetales.asm b/data/base_stats/ninetales.asm
new file mode 100644
index 000000000..34befe1d6
--- /dev/null
+++ b/data/base_stats/ninetales.asm
@@ -0,0 +1,22 @@
+	db NINETALES ; 038
+
+	db  73,  76,  75, 100,  81, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 75 ; catch rate
+	db 178 ; base exp
+	db BURNT_BERRY ; item 1
+	db BURNT_BERRY ; item 2
+	db 191 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, REST, ATTRACT, FLAMETHROWER
+	; end
diff --git a/data/base_stats/noctowl.asm b/data/base_stats/noctowl.asm
new file mode 100644
index 000000000..fedbc1228
--- /dev/null
+++ b/data/base_stats/noctowl.asm
@@ -0,0 +1,22 @@
+	db NOCTOWL ; 164
+
+	db 100,  50,  50,  70,  76,  96
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, FLYING
+	db 90 ; catch rate
+	db 162 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, STEEL_WING, NIGHTMARE, FLY, FLASH
+	; end
diff --git a/data/base_stats/octillery.asm b/data/base_stats/octillery.asm
new file mode 100644
index 000000000..24910f46b
--- /dev/null
+++ b/data/base_stats/octillery.asm
@@ -0,0 +1,22 @@
+	db OCTILLERY ; 224
+
+	db  75, 105,  75,  45, 105,  75
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 75 ; catch rate
+	db 164 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, FISH ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, THIEF, SURF, WHIRLPOOL, FLAMETHROWER, ICE_BEAM
+	; end
diff --git a/data/base_stats/oddish.asm b/data/base_stats/oddish.asm
new file mode 100644
index 000000000..d0db4bd32
--- /dev/null
+++ b/data/base_stats/oddish.asm
@@ -0,0 +1,22 @@
+	db ODDISH ; 043
+
+	db  45,  50,  55,  30,  75,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, POISON
+	db 255 ; catch rate
+	db 78 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn PLANT, PLANT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
+	; end
diff --git a/data/base_stats/omanyte.asm b/data/base_stats/omanyte.asm
new file mode 100644
index 000000000..b1a81d7e5
--- /dev/null
+++ b/data/base_stats/omanyte.asm
@@ -0,0 +1,22 @@
+	db OMANYTE ; 138
+
+	db  35,  40, 100,  35,  90,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, WATER
+	db 45 ; catch rate
+	db 120 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 30 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, REST, ATTRACT, THIEF, SURF, WHIRLPOOL, ICE_BEAM
+	; end
diff --git a/data/base_stats/omastar.asm b/data/base_stats/omastar.asm
new file mode 100644
index 000000000..69e4317a3
--- /dev/null
+++ b/data/base_stats/omastar.asm
@@ -0,0 +1,22 @@
+	db OMASTAR ; 139
+
+	db  70,  60, 125,  55, 115,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, WATER
+	db 45 ; catch rate
+	db 199 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 30 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, REST, ATTRACT, THIEF, SURF, WHIRLPOOL, ICE_BEAM
+	; end
diff --git a/data/base_stats/onix.asm b/data/base_stats/onix.asm
new file mode 100644
index 000000000..dc937f1ad
--- /dev/null
+++ b/data/base_stats/onix.asm
@@ -0,0 +1,22 @@
+	db ONIX ; 095
+
+	db  35,  45, 160,  70,  30,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, GROUND
+	db 45 ; catch rate
+	db 108 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INANIMATE, INANIMATE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, REST, ATTRACT, STRENGTH
+	; end
diff --git a/data/base_stats/paras.asm b/data/base_stats/paras.asm
new file mode 100644
index 000000000..1051395ab
--- /dev/null
+++ b/data/base_stats/paras.asm
@@ -0,0 +1,22 @@
+	db PARAS ; 046
+
+	db  35,  70,  55,  25,  45,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, GRASS
+	db 190 ; catch rate
+	db 70 ; base exp
+	db TINYMUSHROOM ; item 1
+	db BIG_MUSHROOM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, PLANT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, FLASH
+	; end
diff --git a/data/base_stats/parasect.asm b/data/base_stats/parasect.asm
new file mode 100644
index 000000000..7ec7f8837
--- /dev/null
+++ b/data/base_stats/parasect.asm
@@ -0,0 +1,22 @@
+	db PARASECT ; 047
+
+	db  60,  95,  80,  30,  60,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, GRASS
+	db 75 ; catch rate
+	db 128 ; base exp
+	db TINYMUSHROOM ; item 1
+	db BIG_MUSHROOM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, PLANT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, FLASH
+	; end
diff --git a/data/base_stats/persian.asm b/data/base_stats/persian.asm
new file mode 100644
index 000000000..d945188d0
--- /dev/null
+++ b/data/base_stats/persian.asm
@@ -0,0 +1,22 @@
+	db PERSIAN ; 053
+
+	db  65,  70,  60, 115,  65,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 90 ; catch rate
+	db 148 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, THUNDERBOLT
+	; end
diff --git a/data/base_stats/phanpy.asm b/data/base_stats/phanpy.asm
new file mode 100644
index 000000000..40a9a5fb6
--- /dev/null
+++ b/data/base_stats/phanpy.asm
@@ -0,0 +1,22 @@
+	db PHANPY ; 231
+
+	db  90,  60,  60,  40,  40,  40
+	;   hp  atk  def  spd  sat  sdf
+
+	db GROUND, GROUND
+	db 120 ; catch rate
+	db 124 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, STRENGTH
+	; end
diff --git a/data/base_stats/pichu.asm b/data/base_stats/pichu.asm
new file mode 100644
index 000000000..be3607b36
--- /dev/null
+++ b/data/base_stats/pichu.asm
@@ -0,0 +1,22 @@
+	db PICHU ; 172
+
+	db  20,  40,  15,  60,  35,  35
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, ELECTRIC
+	db 190 ; catch rate
+	db 42 ; base exp
+	db NO_ITEM ; item 1
+	db BERRY ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 10 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, DETECT, REST, ATTRACT, FLASH, THUNDERBOLT
+	; end
diff --git a/data/base_stats/pidgeot.asm b/data/base_stats/pidgeot.asm
new file mode 100644
index 000000000..9689c83b9
--- /dev/null
+++ b/data/base_stats/pidgeot.asm
@@ -0,0 +1,22 @@
+	db PIDGEOT ; 018
+
+	db  83,  80,  75,  91,  70,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, FLYING
+	db 45 ; catch rate
+	db 172 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FLY
+	; end
diff --git a/data/base_stats/pidgeotto.asm b/data/base_stats/pidgeotto.asm
new file mode 100644
index 000000000..5dfc5494a
--- /dev/null
+++ b/data/base_stats/pidgeotto.asm
@@ -0,0 +1,22 @@
+	db PIDGEOTTO ; 017
+
+	db  63,  60,  55,  71,  50,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, FLYING
+	db 120 ; catch rate
+	db 113 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FLY
+	; end
diff --git a/data/base_stats/pidgey.asm b/data/base_stats/pidgey.asm
new file mode 100644
index 000000000..e5a110c14
--- /dev/null
+++ b/data/base_stats/pidgey.asm
@@ -0,0 +1,22 @@
+	db PIDGEY ; 016
+
+	db  40,  45,  40,  56,  35,  35
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, FLYING
+	db 255 ; catch rate
+	db 55 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FLY
+	; end
diff --git a/data/base_stats/pikachu.asm b/data/base_stats/pikachu.asm
new file mode 100644
index 000000000..0c1306eee
--- /dev/null
+++ b/data/base_stats/pikachu.asm
@@ -0,0 +1,22 @@
+	db PIKACHU ; 025
+
+	db  35,  55,  30,  90,  50,  40
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, ELECTRIC
+	db 190 ; catch rate
+	db 82 ; base exp
+	db NO_ITEM ; item 1
+	db BERRY ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 10 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FAIRY ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, STRENGTH, FLASH, THUNDERBOLT
+	; end
diff --git a/data/base_stats/piloswine.asm b/data/base_stats/piloswine.asm
new file mode 100644
index 000000000..460f694ca
--- /dev/null
+++ b/data/base_stats/piloswine.asm
@@ -0,0 +1,22 @@
+	db PILOSWINE ; 221
+
+	db 100, 100,  80,  50,  60,  60
+	;   hp  atk  def  spd  sat  sdf
+
+	db ICE, GROUND
+	db 75 ; catch rate
+	db 160 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, STRENGTH, ICE_BEAM
+	; end
diff --git a/data/base_stats/pineco.asm b/data/base_stats/pineco.asm
new file mode 100644
index 000000000..2711aa89a
--- /dev/null
+++ b/data/base_stats/pineco.asm
@@ -0,0 +1,22 @@
+	db PINECO ; 204
+
+	db  50,  65,  90,  15,  35,  35
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, BUG
+	db 190 ; catch rate
+	db 60 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, STRENGTH
+	; end
diff --git a/data/base_stats/pinsir.asm b/data/base_stats/pinsir.asm
new file mode 100644
index 000000000..04e8a5398
--- /dev/null
+++ b/data/base_stats/pinsir.asm
@@ -0,0 +1,22 @@
+	db PINSIR ; 127
+
+	db  65, 125, 100,  85,  55,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, BUG
+	db 45 ; catch rate
+	db 200 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, STRENGTH
+	; end
diff --git a/data/base_stats/politoed.asm b/data/base_stats/politoed.asm
new file mode 100644
index 000000000..889b4a56c
--- /dev/null
+++ b/data/base_stats/politoed.asm
@@ -0,0 +1,22 @@
+	db POLITOED ; 186
+
+	db  90,  75,  75,  70,  90, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 45 ; catch rate
+	db 185 ; base exp
+	db NO_ITEM ; item 1
+	db KINGS_ROCK ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn AMPHIBIAN, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
diff --git a/data/base_stats/poliwag.asm b/data/base_stats/poliwag.asm
new file mode 100644
index 000000000..818e7ff56
--- /dev/null
+++ b/data/base_stats/poliwag.asm
@@ -0,0 +1,22 @@
+	db POLIWAG ; 060
+
+	db  40,  50,  40,  90,  40,  40
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 255 ; catch rate
+	db 77 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn AMPHIBIAN, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, THIEF, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
diff --git a/data/base_stats/poliwhirl.asm b/data/base_stats/poliwhirl.asm
new file mode 100644
index 000000000..e26cfc4af
--- /dev/null
+++ b/data/base_stats/poliwhirl.asm
@@ -0,0 +1,22 @@
+	db POLIWHIRL ; 061
+
+	db  65,  65,  65,  90,  50,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 120 ; catch rate
+	db 131 ; base exp
+	db NO_ITEM ; item 1
+	db KINGS_ROCK ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn AMPHIBIAN, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
diff --git a/data/base_stats/poliwrath.asm b/data/base_stats/poliwrath.asm
new file mode 100644
index 000000000..6b90592d1
--- /dev/null
+++ b/data/base_stats/poliwrath.asm
@@ -0,0 +1,22 @@
+	db POLIWRATH ; 062
+
+	db  90,  85,  95,  70,  70,  90
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, FIGHTING
+	db 45 ; catch rate
+	db 185 ; base exp
+	db NO_ITEM ; item 1
+	db KINGS_ROCK ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn AMPHIBIAN, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
diff --git a/data/base_stats/ponyta.asm b/data/base_stats/ponyta.asm
new file mode 100644
index 000000000..f8df9a0f2
--- /dev/null
+++ b/data/base_stats/ponyta.asm
@@ -0,0 +1,22 @@
+	db PONYTA ; 077
+
+	db  50,  85,  55,  90,  65,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 190 ; catch rate
+	db 152 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, REST, ATTRACT, FLAMETHROWER
+	; end
diff --git a/data/base_stats/porygon.asm b/data/base_stats/porygon.asm
new file mode 100644
index 000000000..828e813aa
--- /dev/null
+++ b/data/base_stats/porygon.asm
@@ -0,0 +1,22 @@
+	db PORYGON ; 137
+
+	db  65,  60,  70,  40,  85,  75
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 45 ; catch rate
+	db 130 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INANIMATE, INANIMATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, REST, THIEF, NIGHTMARE, FLASH, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/porygon2.asm b/data/base_stats/porygon2.asm
new file mode 100644
index 000000000..d180b44ac
--- /dev/null
+++ b/data/base_stats/porygon2.asm
@@ -0,0 +1,22 @@
+	db PORYGON2 ; 233
+
+	db  85,  80,  90,  60, 105,  95
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 45 ; catch rate
+	db 180 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INANIMATE, INANIMATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, DREAM_EATER, REST, THIEF, NIGHTMARE, FLASH, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/primeape.asm b/data/base_stats/primeape.asm
new file mode 100644
index 000000000..7a7e753f0
--- /dev/null
+++ b/data/base_stats/primeape.asm
@@ -0,0 +1,22 @@
+	db PRIMEAPE ; 057
+
+	db  65, 105,  60,  95,  60,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIGHTING, FIGHTING
+	db 75 ; catch rate
+	db 149 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, THUNDERBOLT
+	; end
diff --git a/data/base_stats/psyduck.asm b/data/base_stats/psyduck.asm
new file mode 100644
index 000000000..d95ff0e92
--- /dev/null
+++ b/data/base_stats/psyduck.asm
@@ -0,0 +1,22 @@
+	db PSYDUCK ; 054
+
+	db  50,  52,  48,  55,  65,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 190 ; catch rate
+	db 80 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, STRENGTH, FLASH, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
diff --git a/data/base_stats/pupitar.asm b/data/base_stats/pupitar.asm
new file mode 100644
index 000000000..4a6ecc37c
--- /dev/null
+++ b/data/base_stats/pupitar.asm
@@ -0,0 +1,22 @@
+	db PUPITAR ; 247
+
+	db  70,  84,  70,  51,  65,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, GROUND
+	db 45 ; catch rate
+	db 144 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 40 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn MONSTER, MONSTER ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DETECT, REST, ATTRACT
+	; end
diff --git a/data/base_stats/quagsire.asm b/data/base_stats/quagsire.asm
new file mode 100644
index 000000000..5ffaf7dab
--- /dev/null
+++ b/data/base_stats/quagsire.asm
@@ -0,0 +1,22 @@
+	db QUAGSIRE ; 195
+
+	db  95,  85,  85,  35,  65,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, GROUND
+	db 90 ; catch rate
+	db 137 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, SURF, STRENGTH, FLASH, WHIRLPOOL, ICE_BEAM
+	; end
diff --git a/data/base_stats/quilava.asm b/data/base_stats/quilava.asm
new file mode 100644
index 000000000..58662b46a
--- /dev/null
+++ b/data/base_stats/quilava.asm
@@ -0,0 +1,22 @@
+	db QUILAVA ; 156
+
+	db  58,  64,  58,  80,  80,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 45 ; catch rate
+	db 142 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, DETECT, REST, ATTRACT, FURY_CUTTER, CUT, STRENGTH, FLAMETHROWER
+	; end
diff --git a/data/base_stats/qwilfish.asm b/data/base_stats/qwilfish.asm
new file mode 100644
index 000000000..5bd9e1c5e
--- /dev/null
+++ b/data/base_stats/qwilfish.asm
@@ -0,0 +1,22 @@
+	db QWILFISH ; 211
+
+	db  65,  95,  75,  85,  55,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, POISON
+	db 45 ; catch rate
+	db 100 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FISH, FISH ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SWIFT, DEFENSE_CURL, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
diff --git a/data/base_stats/raichu.asm b/data/base_stats/raichu.asm
new file mode 100644
index 000000000..c63552517
--- /dev/null
+++ b/data/base_stats/raichu.asm
@@ -0,0 +1,22 @@
+	db RAICHU ; 026
+
+	db  60,  90,  55, 100,  90,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, ELECTRIC
+	db 75 ; catch rate
+	db 122 ; base exp
+	db NO_ITEM ; item 1
+	db BERRY ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 10 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FAIRY ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, STRENGTH, FLASH, THUNDERBOLT
+	; end
diff --git a/data/base_stats/raikou.asm b/data/base_stats/raikou.asm
new file mode 100644
index 000000000..18a825551
--- /dev/null
+++ b/data/base_stats/raikou.asm
@@ -0,0 +1,22 @@
+	db RAIKOU ; 243
+
+	db  90,  85,  75, 115, 115, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, ELECTRIC
+	db 3 ; catch rate
+	db 216 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 80 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DETECT, REST, CUT, STRENGTH, FLASH, THUNDERBOLT
+	; end
diff --git a/data/base_stats/rapidash.asm b/data/base_stats/rapidash.asm
new file mode 100644
index 000000000..e3684e5e9
--- /dev/null
+++ b/data/base_stats/rapidash.asm
@@ -0,0 +1,22 @@
+	db RAPIDASH ; 078
+
+	db  65, 100,  70, 105,  80,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 60 ; catch rate
+	db 192 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, REST, ATTRACT, FLAMETHROWER
+	; end
diff --git a/data/base_stats/raticate.asm b/data/base_stats/raticate.asm
new file mode 100644
index 000000000..361e003aa
--- /dev/null
+++ b/data/base_stats/raticate.asm
@@ -0,0 +1,22 @@
+	db RATICATE ; 020
+
+	db  55,  81,  60,  97,  50,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 90 ; catch rate
+	db 116 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DIG, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, THIEF, CUT, STRENGTH, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/rattata.asm b/data/base_stats/rattata.asm
new file mode 100644
index 000000000..ac5ac1acb
--- /dev/null
+++ b/data/base_stats/rattata.asm
@@ -0,0 +1,22 @@
+	db RATTATA ; 019
+
+	db  30,  56,  35,  72,  25,  35
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 255 ; catch rate
+	db 57 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, RETURN, DIG, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, THIEF
+	; end
diff --git a/data/base_stats/remoraid.asm b/data/base_stats/remoraid.asm
new file mode 100644
index 000000000..9218ba8c1
--- /dev/null
+++ b/data/base_stats/remoraid.asm
@@ -0,0 +1,22 @@
+	db REMORAID ; 223
+
+	db  35,  65,  35,  65,  65,  35
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 190 ; catch rate
+	db 78 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, FISH ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, REST, ATTRACT, THIEF, SURF, WHIRLPOOL, FLAMETHROWER, ICE_BEAM
+	; end
diff --git a/data/base_stats/rhydon.asm b/data/base_stats/rhydon.asm
new file mode 100644
index 000000000..894b2c53c
--- /dev/null
+++ b/data/base_stats/rhydon.asm
@@ -0,0 +1,22 @@
+	db RHYDON ; 112
+
+	db 105, 130, 120,  40,  45,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db GROUND, ROCK
+	db 60 ; catch rate
+	db 204 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn MONSTER, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, THUNDERPUNCH, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/rhyhorn.asm b/data/base_stats/rhyhorn.asm
new file mode 100644
index 000000000..0aeb8f06a
--- /dev/null
+++ b/data/base_stats/rhyhorn.asm
@@ -0,0 +1,22 @@
+	db RHYHORN ; 111
+
+	db  80,  85,  95,  25,  30,  30
+	;   hp  atk  def  spd  sat  sdf
+
+	db GROUND, ROCK
+	db 120 ; catch rate
+	db 135 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn MONSTER, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, REST, ATTRACT, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/sandshrew.asm b/data/base_stats/sandshrew.asm
new file mode 100644
index 000000000..53288890e
--- /dev/null
+++ b/data/base_stats/sandshrew.asm
@@ -0,0 +1,22 @@
+	db SANDSHREW ; 027
+
+	db  50,  75,  85,  40,  20,  30
+	;   hp  atk  def  spd  sat  sdf
+
+	db GROUND, GROUND
+	db 255 ; catch rate
+	db 93 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, STRENGTH
+	; end
diff --git a/data/base_stats/sandslash.asm b/data/base_stats/sandslash.asm
new file mode 100644
index 000000000..1067ccb3e
--- /dev/null
+++ b/data/base_stats/sandslash.asm
@@ -0,0 +1,22 @@
+	db SANDSLASH ; 028
+
+	db  75, 100, 110,  65,  45,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db GROUND, GROUND
+	db 90 ; catch rate
+	db 163 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DEFENSE_CURL, DETECT, REST, ATTRACT, THIEF, FURY_CUTTER, CUT, STRENGTH
+	; end
diff --git a/data/base_stats/scizor.asm b/data/base_stats/scizor.asm
new file mode 100644
index 000000000..af9bfc938
--- /dev/null
+++ b/data/base_stats/scizor.asm
@@ -0,0 +1,22 @@
+	db SCIZOR ; 212
+
+	db  70, 130, 100,  65,  55,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, STEEL
+	db 25 ; catch rate
+	db 200 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FURY_CUTTER, CUT, STRENGTH
+	; end
diff --git a/data/base_stats/scyther.asm b/data/base_stats/scyther.asm
new file mode 100644
index 000000000..7de348478
--- /dev/null
+++ b/data/base_stats/scyther.asm
@@ -0,0 +1,22 @@
+	db SCYTHER ; 123
+
+	db  70, 110,  80, 105,  55,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, FLYING
+	db 45 ; catch rate
+	db 187 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FURY_CUTTER, CUT
+	; end
diff --git a/data/base_stats/seadra.asm b/data/base_stats/seadra.asm
new file mode 100644
index 000000000..f43abfaa0
--- /dev/null
+++ b/data/base_stats/seadra.asm
@@ -0,0 +1,22 @@
+	db SEADRA ; 117
+
+	db  55,  65,  95,  85,  95,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 75 ; catch rate
+	db 155 ; base exp
+	db NO_ITEM ; item 1
+	db DRAGON_SCALE ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, REPTILE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, DRAGONBREATH, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
diff --git a/data/base_stats/seaking.asm b/data/base_stats/seaking.asm
new file mode 100644
index 000000000..9543366bf
--- /dev/null
+++ b/data/base_stats/seaking.asm
@@ -0,0 +1,22 @@
+	db SEAKING ; 119
+
+	db  80,  92,  65,  68,  65,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 60 ; catch rate
+	db 170 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FISH, FISH ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WATERFALL, ICE_BEAM
+	; end
diff --git a/data/base_stats/seel.asm b/data/base_stats/seel.asm
new file mode 100644
index 000000000..873d410aa
--- /dev/null
+++ b/data/base_stats/seel.asm
@@ -0,0 +1,22 @@
+	db SEEL ; 086
+
+	db  65,  45,  55,  45,  45,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 190 ; catch rate
+	db 100 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
diff --git a/data/base_stats/sentret.asm b/data/base_stats/sentret.asm
new file mode 100644
index 000000000..1b66348e2
--- /dev/null
+++ b/data/base_stats/sentret.asm
@@ -0,0 +1,22 @@
+	db SENTRET ; 161
+
+	db  35,  46,  34,  20,  35,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 255 ; catch rate
+	db 57 ; base exp
+	db NO_ITEM ; item 1
+	db BERRY ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, CUT, SURF
+	; end
diff --git a/data/base_stats/shellder.asm b/data/base_stats/shellder.asm
new file mode 100644
index 000000000..17f4bc8d0
--- /dev/null
+++ b/data/base_stats/shellder.asm
@@ -0,0 +1,22 @@
+	db SHELLDER ; 090
+
+	db  30,  65, 100,  40,  45,  25
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 190 ; catch rate
+	db 97 ; base exp
+	db PEARL ; item 1
+	db BIG_PEARL ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn INVERTEBRATE, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, WHIRLPOOL, ICE_BEAM
+	; end
diff --git a/data/base_stats/shuckle.asm b/data/base_stats/shuckle.asm
new file mode 100644
index 000000000..ef76037fd
--- /dev/null
+++ b/data/base_stats/shuckle.asm
@@ -0,0 +1,22 @@
+	db SHUCKLE ; 213
+
+	db  20,  10, 230,  05,  10, 230
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, ROCK
+	db 190 ; catch rate
+	db 80 ; base exp
+	db BERRY ; item 1
+	db BERRY ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, STRENGTH, FLASH
+	; end
diff --git a/data/base_stats/skarmory.asm b/data/base_stats/skarmory.asm
new file mode 100644
index 000000000..ac5a2c701
--- /dev/null
+++ b/data/base_stats/skarmory.asm
@@ -0,0 +1,22 @@
+	db SKARMORY ; 227
+
+	db  65,  80, 140,  70,  40,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db STEEL, FLYING
+	db 25 ; catch rate
+	db 168 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, CUT, FLY
+	; end
diff --git a/data/base_stats/skiploom.asm b/data/base_stats/skiploom.asm
new file mode 100644
index 000000000..dab6b1acd
--- /dev/null
+++ b/data/base_stats/skiploom.asm
@@ -0,0 +1,22 @@
+	db SKIPLOOM ; 188
+
+	db  55,  45,  50,  80,  45,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, FLYING
+	db 120 ; catch rate
+	db 136 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn FAIRY, PLANT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, FLASH
+	; end
diff --git a/data/base_stats/slowbro.asm b/data/base_stats/slowbro.asm
new file mode 100644
index 000000000..1a1743ceb
--- /dev/null
+++ b/data/base_stats/slowbro.asm
@@ -0,0 +1,22 @@
+	db SLOWBRO ; 080
+
+	db  95,  75, 110,  30, 100,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, PSYCHIC
+	db 75 ; catch rate
+	db 164 ; base exp
+	db NO_ITEM ; item 1
+	db KINGS_ROCK ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn MONSTER, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DREAM_EATER, REST, ATTRACT, FURY_CUTTER, NIGHTMARE, SURF, STRENGTH, FLASH, FLAMETHROWER, ICE_BEAM
+	; end
diff --git a/data/base_stats/slowking.asm b/data/base_stats/slowking.asm
new file mode 100644
index 000000000..699bf8467
--- /dev/null
+++ b/data/base_stats/slowking.asm
@@ -0,0 +1,22 @@
+	db SLOWKING ; 199
+
+	db  95,  75,  80,  30, 100, 110
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, PSYCHIC
+	db 70 ; catch rate
+	db 164 ; base exp
+	db NO_ITEM ; item 1
+	db KINGS_ROCK ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn MONSTER, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DREAM_EATER, REST, ATTRACT, FURY_CUTTER, NIGHTMARE, SURF, STRENGTH, FLASH, WHIRLPOOL, FLAMETHROWER, ICE_BEAM
+	; end
diff --git a/data/base_stats/slowpoke.asm b/data/base_stats/slowpoke.asm
new file mode 100644
index 000000000..250d37fd7
--- /dev/null
+++ b/data/base_stats/slowpoke.asm
@@ -0,0 +1,22 @@
+	db SLOWPOKE ; 079
+
+	db  90,  65,  65,  15,  40,  40
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, PSYCHIC
+	db 190 ; catch rate
+	db 99 ; base exp
+	db NO_ITEM ; item 1
+	db KINGS_ROCK ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn MONSTER, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DREAM_EATER, REST, ATTRACT, NIGHTMARE, SURF, STRENGTH, FLASH, FLAMETHROWER, ICE_BEAM
+	; end
diff --git a/data/base_stats/slugma.asm b/data/base_stats/slugma.asm
new file mode 100644
index 000000000..2694300dd
--- /dev/null
+++ b/data/base_stats/slugma.asm
@@ -0,0 +1,22 @@
+	db SLUGMA ; 218
+
+	db  40,  40,  40,  20,  70,  40
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 190 ; catch rate
+	db 78 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMORPHOUS, AMORPHOUS ; egg groups
+
+	; tmhm
+	tmhm CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, REST, ATTRACT, FLAMETHROWER
+	; end
diff --git a/data/base_stats/smeargle.asm b/data/base_stats/smeargle.asm
new file mode 100644
index 000000000..a8d1ecd54
--- /dev/null
+++ b/data/base_stats/smeargle.asm
@@ -0,0 +1,22 @@
+	db SMEARGLE ; 235
+
+	db  55,  20,  35,  75,  20,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 45 ; catch rate
+	db 106 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm
+	; end
diff --git a/data/base_stats/smoochum.asm b/data/base_stats/smoochum.asm
new file mode 100644
index 000000000..20b79b263
--- /dev/null
+++ b/data/base_stats/smoochum.asm
@@ -0,0 +1,22 @@
+	db SMOOCHUM ; 238
+
+	db  45,  30,  15,  65,  85,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db ICE, PSYCHIC
+	db 45 ; catch rate
+	db 87 ; base exp
+	db ICE_BERRY ; item 1
+	db ICE_BERRY ; item 2
+	db 254 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SWEET_SCENT, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DREAM_EATER, REST, ATTRACT, THIEF, NIGHTMARE, ICE_BEAM
+	; end
diff --git a/data/base_stats/sneasel.asm b/data/base_stats/sneasel.asm
new file mode 100644
index 000000000..939c11b5a
--- /dev/null
+++ b/data/base_stats/sneasel.asm
@@ -0,0 +1,22 @@
+	db SNEASEL ; 215
+
+	db  55,  95,  55, 115,  35,  75
+	;   hp  atk  def  spd  sat  sdf
+
+	db DARK, ICE
+	db 60 ; catch rate
+	db 132 ; base exp
+	db NO_ITEM ; item 1
+	db QUICK_CLAW ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, FURY_CUTTER, NIGHTMARE, CUT, SURF, STRENGTH, ICE_BEAM
+	; end
diff --git a/data/base_stats/snorlax.asm b/data/base_stats/snorlax.asm
new file mode 100644
index 000000000..d8e669500
--- /dev/null
+++ b/data/base_stats/snorlax.asm
@@ -0,0 +1,22 @@
+	db SNORLAX ; 143
+
+	db 160, 110,  65,  30,  65, 110
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 25 ; catch rate
+	db 154 ; base exp
+	db LEFTOVERS ; item 1
+	db LEFTOVERS ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 40 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn MONSTER, MONSTER ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, THUNDER, EARTHQUAKE, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, FIRE_PUNCH, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/snubbull.asm b/data/base_stats/snubbull.asm
new file mode 100644
index 000000000..cacd6345f
--- /dev/null
+++ b/data/base_stats/snubbull.asm
@@ -0,0 +1,22 @@
+	db SNUBBULL ; 209
+
+	db  60,  80,  50,  30,  40,  40
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 190 ; catch rate
+	db 63 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 191 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn FIELD, FAIRY ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH, THUNDERBOLT
+	; end
diff --git a/data/base_stats/spearow.asm b/data/base_stats/spearow.asm
new file mode 100644
index 000000000..e422d750f
--- /dev/null
+++ b/data/base_stats/spearow.asm
@@ -0,0 +1,22 @@
+	db SPEAROW ; 021
+
+	db  40,  60,  30,  70,  31,  31
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, FLYING
+	db 255 ; catch rate
+	db 58 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING, FLY
+	; end
diff --git a/data/base_stats/spinarak.asm b/data/base_stats/spinarak.asm
new file mode 100644
index 000000000..1f7412e2a
--- /dev/null
+++ b/data/base_stats/spinarak.asm
@@ -0,0 +1,22 @@
+	db SPINARAK ; 167
+
+	db  40,  60,  40,  30,  40,  40
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, POISON
+	db 255 ; catch rate
+	db 54 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DIG, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, FLASH
+	; end
diff --git a/data/base_stats/squirtle.asm b/data/base_stats/squirtle.asm
new file mode 100644
index 000000000..0ba0d4b81
--- /dev/null
+++ b/data/base_stats/squirtle.asm
@@ -0,0 +1,22 @@
+	db SQUIRTLE ; 007
+
+	db  44,  48,  65,  43,  50,  64
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 45 ; catch rate
+	db 66 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
diff --git a/data/base_stats/stantler.asm b/data/base_stats/stantler.asm
new file mode 100644
index 000000000..e4078278a
--- /dev/null
+++ b/data/base_stats/stantler.asm
@@ -0,0 +1,22 @@
+	db STANTLER ; 234
+
+	db  73,  95,  62,  85,  85,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 45 ; catch rate
+	db 165 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, PSYCHIC, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, FLASH
+	; end
diff --git a/data/base_stats/starmie.asm b/data/base_stats/starmie.asm
new file mode 100644
index 000000000..49502c0f2
--- /dev/null
+++ b/data/base_stats/starmie.asm
@@ -0,0 +1,22 @@
+	db STARMIE ; 121
+
+	db  60,  75,  85, 115, 100,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, PSYCHIC
+	db 60 ; catch rate
+	db 207 ; base exp
+	db STARDUST ; item 1
+	db STAR_PIECE ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn INVERTEBRATE, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, REST, ATTRACT, NIGHTMARE, SURF, FLASH, WHIRLPOOL, WATERFALL, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/staryu.asm b/data/base_stats/staryu.asm
new file mode 100644
index 000000000..15768a33c
--- /dev/null
+++ b/data/base_stats/staryu.asm
@@ -0,0 +1,22 @@
+	db STARYU ; 120
+
+	db  30,  45,  55,  85,  70,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 225 ; catch rate
+	db 106 ; base exp
+	db STARDUST ; item 1
+	db STAR_PIECE ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn INVERTEBRATE, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, ATTRACT, SURF, FLASH, WHIRLPOOL, WATERFALL, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/steelix.asm b/data/base_stats/steelix.asm
new file mode 100644
index 000000000..11c3d031c
--- /dev/null
+++ b/data/base_stats/steelix.asm
@@ -0,0 +1,22 @@
+	db STEELIX ; 208
+
+	db  75,  85, 200,  30,  55,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db STEEL, GROUND
+	db 25 ; catch rate
+	db 196 ; base exp
+	db NO_ITEM ; item 1
+	db METAL_COAT ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INANIMATE, INANIMATE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, CUT, STRENGTH
+	; end
diff --git a/data/base_stats/sudowoodo.asm b/data/base_stats/sudowoodo.asm
new file mode 100644
index 000000000..9d13d5628
--- /dev/null
+++ b/data/base_stats/sudowoodo.asm
@@ -0,0 +1,22 @@
+	db SUDOWOODO ; 185
+
+	db  70, 100, 115,  30,  30,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, ROCK
+	db 65 ; catch rate
+	db 135 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INANIMATE, INANIMATE ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SANDSTORM, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, THIEF, FIRE_PUNCH, STRENGTH
+	; end
diff --git a/data/base_stats/suicune.asm b/data/base_stats/suicune.asm
new file mode 100644
index 000000000..28a5e2f72
--- /dev/null
+++ b/data/base_stats/suicune.asm
@@ -0,0 +1,22 @@
+	db SUICUNE ; 245
+
+	db 100,  75, 115,  85,  90, 115
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 3 ; catch rate
+	db 215 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 80 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DETECT, REST, CUT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
diff --git a/data/base_stats/sunflora.asm b/data/base_stats/sunflora.asm
new file mode 100644
index 000000000..8ec14fb96
--- /dev/null
+++ b/data/base_stats/sunflora.asm
@@ -0,0 +1,22 @@
+	db SUNFLORA ; 192
+
+	db  75,  75,  55,  30, 105,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, GRASS
+	db 120 ; catch rate
+	db 146 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn PLANT, PLANT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
+	; end
diff --git a/data/base_stats/sunkern.asm b/data/base_stats/sunkern.asm
new file mode 100644
index 000000000..c75e83a36
--- /dev/null
+++ b/data/base_stats/sunkern.asm
@@ -0,0 +1,22 @@
+	db SUNKERN ; 191
+
+	db  30,  30,  30,  30,  30,  30
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, GRASS
+	db 235 ; catch rate
+	db 52 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn PLANT, PLANT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
+	; end
diff --git a/data/base_stats/swinub.asm b/data/base_stats/swinub.asm
new file mode 100644
index 000000000..80df33944
--- /dev/null
+++ b/data/base_stats/swinub.asm
@@ -0,0 +1,22 @@
+	db SWINUB ; 220
+
+	db  50,  50,  40,  50,  30,  30
+	;   hp  atk  def  spd  sat  sdf
+
+	db ICE, GROUND
+	db 225 ; catch rate
+	db 78 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, DETECT, REST, ATTRACT, STRENGTH, ICE_BEAM
+	; end
diff --git a/data/base_stats/tangela.asm b/data/base_stats/tangela.asm
new file mode 100644
index 000000000..bf539b28a
--- /dev/null
+++ b/data/base_stats/tangela.asm
@@ -0,0 +1,22 @@
+	db TANGELA ; 114
+
+	db  65,  55, 115,  60, 100,  40
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, GRASS
+	db 45 ; catch rate
+	db 166 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn PLANT, PLANT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, THIEF, CUT, FLASH
+	; end
diff --git a/data/base_stats/tauros.asm b/data/base_stats/tauros.asm
new file mode 100644
index 000000000..fbc2ad6dc
--- /dev/null
+++ b/data/base_stats/tauros.asm
@@ -0,0 +1,22 @@
+	db TAUROS ; 128
+
+	db  75, 100,  95, 110,  40,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 45 ; catch rate
+	db 211 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 0 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, THUNDER, EARTHQUAKE, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, REST, ATTRACT, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/teddiursa.asm b/data/base_stats/teddiursa.asm
new file mode 100644
index 000000000..81eebe7ba
--- /dev/null
+++ b/data/base_stats/teddiursa.asm
@@ -0,0 +1,22 @@
+	db TEDDIURSA ; 216
+
+	db  60,  80,  50,  40,  50,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 120 ; catch rate
+	db 124 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, CUT, STRENGTH
+	; end
diff --git a/data/base_stats/tentacool.asm b/data/base_stats/tentacool.asm
new file mode 100644
index 000000000..533c0538e
--- /dev/null
+++ b/data/base_stats/tentacool.asm
@@ -0,0 +1,22 @@
+	db TENTACOOL ; 072
+
+	db  40,  40,  35,  70,  50, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, POISON
+	db 190 ; catch rate
+	db 105 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn INVERTEBRATE, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, SURF, WHIRLPOOL, ICE_BEAM
+	; end
diff --git a/data/base_stats/tentacruel.asm b/data/base_stats/tentacruel.asm
new file mode 100644
index 000000000..3f316f5d9
--- /dev/null
+++ b/data/base_stats/tentacruel.asm
@@ -0,0 +1,22 @@
+	db TENTACRUEL ; 073
+
+	db  80,  70,  65, 100,  80, 120
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, POISON
+	db 60 ; catch rate
+	db 205 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn INVERTEBRATE, INVERTEBRATE ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, SURF, WHIRLPOOL, ICE_BEAM
+	; end
diff --git a/data/base_stats/togepi.asm b/data/base_stats/togepi.asm
new file mode 100644
index 000000000..18e13c657
--- /dev/null
+++ b/data/base_stats/togepi.asm
@@ -0,0 +1,22 @@
+	db TOGEPI ; 175
+
+	db  35,  20,  65,  20,  40,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 190 ; catch rate
+	db 74 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 10 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, FLASH, FLAMETHROWER
+	; end
diff --git a/data/base_stats/togetic.asm b/data/base_stats/togetic.asm
new file mode 100644
index 000000000..6cd1b55a8
--- /dev/null
+++ b/data/base_stats/togetic.asm
@@ -0,0 +1,22 @@
+	db TOGETIC ; 176
+
+	db  55,  40,  85,  40,  80, 105
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, FLYING
+	db 75 ; catch rate
+	db 114 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 10 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn AVIAN, FAIRY ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, ROCK_SMASH, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, DREAM_EATER, DETECT, REST, ATTRACT, STEEL_WING, FLY, FLASH, FLAMETHROWER
+	; end
diff --git a/data/base_stats/totodile.asm b/data/base_stats/totodile.asm
new file mode 100644
index 000000000..46521a06c
--- /dev/null
+++ b/data/base_stats/totodile.asm
@@ -0,0 +1,22 @@
+	db TOTODILE ; 158
+
+	db  50,  65,  64,  43,  44,  48
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 45 ; catch rate
+	db 66 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DETECT, REST, ATTRACT, CUT, SURF, WHIRLPOOL, ICE_BEAM
+	; end
diff --git a/data/base_stats/typhlosion.asm b/data/base_stats/typhlosion.asm
new file mode 100644
index 000000000..31adbd154
--- /dev/null
+++ b/data/base_stats/typhlosion.asm
@@ -0,0 +1,22 @@
+	db TYPHLOSION ; 157
+
+	db  78,  84,  78, 100, 109,  85
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 45 ; catch rate
+	db 209 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, DEFENSE_CURL, THUNDERPUNCH, DETECT, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, CUT, STRENGTH, FLAMETHROWER
+	; end
diff --git a/data/base_stats/tyranitar.asm b/data/base_stats/tyranitar.asm
new file mode 100644
index 000000000..68eccad67
--- /dev/null
+++ b/data/base_stats/tyranitar.asm
@@ -0,0 +1,22 @@
+	db TYRANITAR ; 248
+
+	db 100, 134, 110,  61,  95, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db ROCK, DARK
+	db 45 ; catch rate
+	db 218 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 40 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn MONSTER, MONSTER ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROAR, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, DRAGONBREATH, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, FIRE_BLAST, DETECT, REST, ATTRACT, FIRE_PUNCH, FURY_CUTTER, NIGHTMARE, CUT, SURF, STRENGTH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/tyrogue.asm b/data/base_stats/tyrogue.asm
new file mode 100644
index 000000000..c128a7b9c
--- /dev/null
+++ b/data/base_stats/tyrogue.asm
@@ -0,0 +1,22 @@
+	db TYROGUE ; 236
+
+	db  35,  35,  35,  35,  35,  35
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIGHTING, FIGHTING
+	db 75 ; catch rate
+	db 91 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 0 ; gender
+	db 100 ; unknown
+	db 25 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STRENGTH
+	; end
diff --git a/data/base_stats/umbreon.asm b/data/base_stats/umbreon.asm
new file mode 100644
index 000000000..fadc9d9f8
--- /dev/null
+++ b/data/base_stats/umbreon.asm
@@ -0,0 +1,22 @@
+	db UMBREON ; 197
+
+	db  95,  65, 110,  65,  60, 130
+	;   hp  atk  def  spd  sat  sdf
+
+	db DARK, DARK
+	db 45 ; catch rate
+	db 197 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 35 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, NIGHTMARE, CUT, FLASH
+	; end
diff --git a/data/base_stats/unown.asm b/data/base_stats/unown.asm
new file mode 100644
index 000000000..0b5308aa9
--- /dev/null
+++ b/data/base_stats/unown.asm
@@ -0,0 +1,22 @@
+	db UNOWN ; 201
+
+	db  48,  72,  48,  48,  72,  48
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, PSYCHIC
+	db 225 ; catch rate
+	db 61 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 40 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm
+	; end
diff --git a/data/base_stats/ursaring.asm b/data/base_stats/ursaring.asm
new file mode 100644
index 000000000..5e9171366
--- /dev/null
+++ b/data/base_stats/ursaring.asm
@@ -0,0 +1,22 @@
+	db URSARING ; 217
+
+	db  90, 130,  75,  55,  75,  75
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 60 ; catch rate
+	db 189 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SWIFT, DEFENSE_CURL, THUNDERPUNCH, REST, ATTRACT, THIEF, FIRE_PUNCH, FURY_CUTTER, CUT, STRENGTH
+	; end
diff --git a/data/base_stats/vaporeon.asm b/data/base_stats/vaporeon.asm
new file mode 100644
index 000000000..981fdc314
--- /dev/null
+++ b/data/base_stats/vaporeon.asm
@@ -0,0 +1,22 @@
+	db VAPOREON ; 134
+
+	db 130,  65,  60,  65, 110,  95
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 45 ; catch rate
+	db 196 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 35 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, SURF, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
diff --git a/data/base_stats/venomoth.asm b/data/base_stats/venomoth.asm
new file mode 100644
index 000000000..c31068c8f
--- /dev/null
+++ b/data/base_stats/venomoth.asm
@@ -0,0 +1,22 @@
+	db VENOMOTH ; 049
+
+	db  70,  65,  60,  90,  90,  75
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, POISON
+	db 75 ; catch rate
+	db 138 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SWIFT, REST, ATTRACT, THIEF, FLASH
+	; end
diff --git a/data/base_stats/venonat.asm b/data/base_stats/venonat.asm
new file mode 100644
index 000000000..92e7de208
--- /dev/null
+++ b/data/base_stats/venonat.asm
@@ -0,0 +1,22 @@
+	db VENONAT ; 048
+
+	db  60,  55,  50,  45,  40,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, POISON
+	db 190 ; catch rate
+	db 75 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SWIFT, REST, ATTRACT, THIEF
+	; end
diff --git a/data/base_stats/venusaur.asm b/data/base_stats/venusaur.asm
new file mode 100644
index 000000000..88b839a08
--- /dev/null
+++ b/data/base_stats/venusaur.asm
@@ -0,0 +1,22 @@
+	db VENUSAUR ; 003
+
+	db  80,  82,  83,  80, 100, 100
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, POISON
+	db 45 ; catch rate
+	db 208 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, PLANT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROAR, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, FURY_CUTTER, CUT, FLASH
+	; end
diff --git a/data/base_stats/victreebel.asm b/data/base_stats/victreebel.asm
new file mode 100644
index 000000000..85701718f
--- /dev/null
+++ b/data/base_stats/victreebel.asm
@@ -0,0 +1,22 @@
+	db VICTREEBEL ; 071
+
+	db  80, 105,  65,  70, 100,  60
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, POISON
+	db 45 ; catch rate
+	db 191 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn PLANT, PLANT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
+	; end
diff --git a/data/base_stats/vileplume.asm b/data/base_stats/vileplume.asm
new file mode 100644
index 000000000..5160c052c
--- /dev/null
+++ b/data/base_stats/vileplume.asm
@@ -0,0 +1,22 @@
+	db VILEPLUME ; 045
+
+	db  75,  80,  85,  50, 100,  90
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, POISON
+	db 45 ; catch rate
+	db 184 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn PLANT, PLANT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
+	; end
diff --git a/data/base_stats/voltorb.asm b/data/base_stats/voltorb.asm
new file mode 100644
index 000000000..b4d9b1538
--- /dev/null
+++ b/data/base_stats/voltorb.asm
@@ -0,0 +1,22 @@
+	db VOLTORB ; 100
+
+	db  40,  30,  50, 100,  55,  55
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, ELECTRIC
+	db 190 ; catch rate
+	db 103 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INANIMATE, INANIMATE ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, REST, FLASH, THUNDERBOLT
+	; end
diff --git a/data/base_stats/vulpix.asm b/data/base_stats/vulpix.asm
new file mode 100644
index 000000000..f0bd24047
--- /dev/null
+++ b/data/base_stats/vulpix.asm
@@ -0,0 +1,22 @@
+	db VULPIX ; 037
+
+	db  38,  41,  40,  65,  50,  65
+	;   hp  atk  def  spd  sat  sdf
+
+	db FIRE, FIRE
+	db 190 ; catch rate
+	db 63 ; base exp
+	db BURNT_BERRY ; item 1
+	db BURNT_BERRY ; item 2
+	db 191 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn FIELD, FIELD ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, FIRE_BLAST, SWIFT, REST, ATTRACT, FLAMETHROWER
+	; end
diff --git a/data/base_stats/wartortle.asm b/data/base_stats/wartortle.asm
new file mode 100644
index 000000000..28b0d42c2
--- /dev/null
+++ b/data/base_stats/wartortle.asm
@@ -0,0 +1,22 @@
+	db WARTORTLE ; 008
+
+	db  59,  63,  80,  58,  65,  80
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, WATER
+	db 45 ; catch rate
+	db 143 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 31 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn MONSTER, AMPHIBIAN ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, BLIZZARD, ICY_WIND, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, DEFENSE_CURL, REST, ATTRACT, SURF, STRENGTH, WHIRLPOOL, WATERFALL, ICE_BEAM
+	; end
diff --git a/data/base_stats/weedle.asm b/data/base_stats/weedle.asm
new file mode 100644
index 000000000..f11ee09e3
--- /dev/null
+++ b/data/base_stats/weedle.asm
@@ -0,0 +1,22 @@
+	db WEEDLE ; 013
+
+	db  40,  35,  30,  50,  20,  20
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, POISON
+	db 255 ; catch rate
+	db 52 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm
+	; end
diff --git a/data/base_stats/weepinbell.asm b/data/base_stats/weepinbell.asm
new file mode 100644
index 000000000..c85075e92
--- /dev/null
+++ b/data/base_stats/weepinbell.asm
@@ -0,0 +1,22 @@
+	db WEEPINBELL ; 070
+
+	db  65,  90,  50,  55,  85,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db GRASS, POISON
+	db 120 ; catch rate
+	db 151 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_SLOW ; growth rate
+	dn PLANT, PLANT ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SWEET_SCENT, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, REST, ATTRACT, CUT, FLASH
+	; end
diff --git a/data/base_stats/weezing.asm b/data/base_stats/weezing.asm
new file mode 100644
index 000000000..8a0d25bcb
--- /dev/null
+++ b/data/base_stats/weezing.asm
@@ -0,0 +1,22 @@
+	db WEEZING ; 110
+
+	db  65,  90, 120,  60,  85,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, POISON
+	db 60 ; catch rate
+	db 173 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMORPHOUS, AMORPHOUS ; egg groups
+
+	; tmhm
+	tmhm CURSE, ROLLOUT, TOXIC, ZAP_CANNON, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, ENDURE, FRUSTRATION, THUNDER, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, FIRE_BLAST, REST, ATTRACT, THIEF, FLAMETHROWER, THUNDERBOLT
+	; end
diff --git a/data/base_stats/wigglytuff.asm b/data/base_stats/wigglytuff.asm
new file mode 100644
index 000000000..61d6f69de
--- /dev/null
+++ b/data/base_stats/wigglytuff.asm
@@ -0,0 +1,22 @@
+	db WIGGLYTUFF ; 040
+
+	db 140,  70,  45,  45,  75,  50
+	;   hp  atk  def  spd  sat  sdf
+
+	db NORMAL, NORMAL
+	db 50 ; catch rate
+	db 109 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 191 ; gender
+	db 100 ; unknown
+	db 10 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db SLOW ; growth rate
+	dn FAIRY, FAIRY ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ZAP_CANNON, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, BLIZZARD, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, SOLARBEAM, THUNDER, RETURN, PSYCHIC, SHADOW_BALL, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, FIRE_BLAST, DEFENSE_CURL, THUNDERPUNCH, DREAM_EATER, DETECT, REST, ATTRACT, FIRE_PUNCH, NIGHTMARE, STRENGTH, FLASH, FLAMETHROWER, THUNDERBOLT, ICE_BEAM
+	; end
diff --git a/data/base_stats/wobbuffet.asm b/data/base_stats/wobbuffet.asm
new file mode 100644
index 000000000..526139934
--- /dev/null
+++ b/data/base_stats/wobbuffet.asm
@@ -0,0 +1,22 @@
+	db WOBBUFFET ; 202
+
+	db 190,  33,  58,  33,  33,  58
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, PSYCHIC
+	db 45 ; catch rate
+	db 177 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMORPHOUS, AMORPHOUS ; egg groups
+
+	; tmhm
+	tmhm
+	; end
diff --git a/data/base_stats/wooper.asm b/data/base_stats/wooper.asm
new file mode 100644
index 000000000..8449cda10
--- /dev/null
+++ b/data/base_stats/wooper.asm
@@ -0,0 +1,22 @@
+	db WOOPER ; 194
+
+	db  55,  45,  45,  15,  25,  25
+	;   hp  atk  def  spd  sat  sdf
+
+	db WATER, GROUND
+	db 255 ; catch rate
+	db 52 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AMPHIBIAN, FIELD ; egg groups
+
+	; tmhm
+	tmhm DYNAMICPUNCH, HEADBUTT, CURSE, ROLLOUT, TOXIC, ROCK_SMASH, HIDDEN_POWER, SNORE, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, IRON_TAIL, EARTHQUAKE, RETURN, DIG, MUD_SLAP, DOUBLE_TEAM, ICE_PUNCH, SWAGGER, SLEEP_TALK, SLUDGE_BOMB, SANDSTORM, DEFENSE_CURL, REST, ATTRACT, SURF, FLASH, WHIRLPOOL, ICE_BEAM
+	; end
diff --git a/data/base_stats/xatu.asm b/data/base_stats/xatu.asm
new file mode 100644
index 000000000..b5ef96969
--- /dev/null
+++ b/data/base_stats/xatu.asm
@@ -0,0 +1,22 @@
+	db XATU ; 178
+
+	db  65,  75,  70,  95,  95,  70
+	;   hp  atk  def  spd  sat  sdf
+
+	db PSYCHIC, FLYING
+	db 75 ; catch rate
+	db 171 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, PSYCH_UP, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, PSYCHIC, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DREAM_EATER, DETECT, REST, ATTRACT, THIEF, NIGHTMARE, FLY, FLASH
+	; end
diff --git a/data/base_stats/yanma.asm b/data/base_stats/yanma.asm
new file mode 100644
index 000000000..6fe69d8c5
--- /dev/null
+++ b/data/base_stats/yanma.asm
@@ -0,0 +1,22 @@
+	db YANMA ; 193
+
+	db  65,  65,  45,  95,  75,  45
+	;   hp  atk  def  spd  sat  sdf
+
+	db BUG, FLYING
+	db 75 ; catch rate
+	db 147 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 20 ; step cycles to hatch
+	db 5 ; unknown
+	dn 6, 6 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn INSECT, INSECT ; egg groups
+
+	; tmhm
+	tmhm HEADBUTT, CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, SOLARBEAM, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, FLASH
+	; end
diff --git a/data/base_stats/zapdos.asm b/data/base_stats/zapdos.asm
new file mode 100644
index 000000000..c3fa8a742
--- /dev/null
+++ b/data/base_stats/zapdos.asm
@@ -0,0 +1,22 @@
+	db ZAPDOS ; 145
+
+	db  90,  90,  85, 100, 125,  90
+	;   hp  atk  def  spd  sat  sdf
+
+	db ELECTRIC, FLYING
+	db 3 ; catch rate
+	db 216 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 255 ; gender
+	db 100 ; unknown
+	db 80 ; step cycles to hatch
+	db 5 ; unknown
+	dn 7, 7 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db FAST ; growth rate
+	dn NO_EGGS, NO_EGGS ; egg groups
+
+	; tmhm
+	tmhm CURSE, ROAR, TOXIC, ZAP_CANNON, ROCK_SMASH, HIDDEN_POWER, SUNNY_DAY, SNORE, HYPER_BEAM, PROTECT, RAIN_DANCE, ENDURE, FRUSTRATION, THUNDER, RETURN, MUD_SLAP, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SANDSTORM, SWIFT, DETECT, REST, STEEL_WING, FLY, FLASH, THUNDERBOLT
+	; end
diff --git a/data/base_stats/zubat.asm b/data/base_stats/zubat.asm
new file mode 100644
index 000000000..882d8d436
--- /dev/null
+++ b/data/base_stats/zubat.asm
@@ -0,0 +1,22 @@
+	db ZUBAT ; 041
+
+	db  40,  45,  35,  55,  30,  40
+	;   hp  atk  def  spd  sat  sdf
+
+	db POISON, FLYING
+	db 255 ; catch rate
+	db 54 ; base exp
+	db NO_ITEM ; item 1
+	db NO_ITEM ; item 2
+	db 127 ; gender
+	db 100 ; unknown
+	db 15 ; step cycles to hatch
+	db 5 ; unknown
+	dn 5, 5 ; frontpic dimensions
+	db 0, 0, 0, 0 ; padding
+	db MEDIUM_FAST ; growth rate
+	dn AVIAN, AVIAN ; egg groups
+
+	; tmhm
+	tmhm CURSE, TOXIC, HIDDEN_POWER, SUNNY_DAY, SNORE, PROTECT, GIGA_DRAIN, ENDURE, FRUSTRATION, RETURN, DOUBLE_TEAM, SWAGGER, SLEEP_TALK, SWIFT, DETECT, REST, ATTRACT, THIEF, STEEL_WING
+	; end
diff --git a/engine/compose_mail.asm b/engine/compose_mail.asm
deleted file mode 100755
index 64165a13a..000000000
--- a/engine/compose_mail.asm
+++ /dev/null
@@ -1,517 +0,0 @@
-_ComposeMailMessage: ; 11e75 (mail?)
-	ld hl, wc6d0
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ld a, [hMapAnims]
-	push af
-	xor a
-	ld [hMapAnims], a
-	ld a, [hInMenu]
-	push af
-	ld a, $1
-	ld [hInMenu], a
-	call .InitBlankMail
-	call DelayFrame
-
-.loop
-	call .DoMailEntry
-	jr nc, .loop
-
-	pop af
-	ld [hInMenu], a
-	pop af
-	ld [hMapAnims], a
-	ret
-
-.InitBlankMail: ; 11e9a (4:5e9a)
-	call ClearBGPalettes
-	call DisableLCD
-	call Function11c51
-	ld de, VTiles0 tile $00
-	ld hl, .MailIcon
-	ld bc, 8 tiles
-	ld a, BANK(.MailIcon)
-	call FarCopyBytes
-	xor a
-	ld hl, wSpriteAnimDict
-	ld [hli], a
-	ld [hl], a
-
-	; init mail icon
-	depixel 3, 2
-	ld a, SPRITE_ANIM_INDEX_00
-	call _InitSpriteAnimStruct
-
-	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
-	add hl, bc
-	ld [hl], $0
-	call .InitCharset
-	ld a, $e3
-	ld [rLCDC], a
-	call .initwc6d3
-	ld b, SCGB_08
-	call GetSGBLayout
-	call WaitBGMap
-	call WaitTop
-	ld a, %11100100
-	call DmgToCgbBGPals
-	ld a, %11100100
-	call DmgToCgbObjPal0
-	call Function11be0
-	ld hl, wc6d0
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	ld hl, $10
-	add hl, de
-	ld [hl], $4e
-	ret
-
-; 11ef4 (4:5ef4)
-
-.MailIcon: ; 11ef4
-INCBIN "gfx/icon/mail2.2bpp"
-; 11f74
-
-.initwc6d3: ; 11f74 (4:5f74)
-	ld a, $21
-	ld [wc6d3], a
-	ret
-
-; 11f7a (4:5f7a)
-
-.Dummy: ; dummied out
-	db "メールを かいてね@"
-; 11f84
-
-.InitCharset: ; 11f84 (4:5f84)
-	call WaitTop
-	hlcoord 0, 0
-	ld bc, 6 * SCREEN_WIDTH
-	ld a, $60 ; border
-	call ByteFill
-	hlcoord 0, 6
-	ld bc, 12 * SCREEN_WIDTH
-	ld a, " "
-	call ByteFill
-	hlcoord 1, 1
-	lb bc, 4, SCREEN_WIDTH - 2
-	call ClearBox
-	ld de, MailEntry_Uppercase
-
-.PlaceMailCharset: ; 11fa9 (4:5fa9)
-	hlcoord 1, 7
-	ld b, 6
-.next
-	ld c, SCREEN_WIDTH - 1
-.loop_
-	ld a, [de]
-	ld [hli], a
-	inc de
-	dec c
-	jr nz, .loop_
-	push de
-	ld de, SCREEN_WIDTH + 1
-	add hl, de
-	pop de
-	dec b
-	jr nz, .next
-	ret
-
-.DoMailEntry: ; 11fc0 (4:5fc0)
-	call JoyTextDelay
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .exit_mail
-	call .DoJumptable
-	callba PlaySpriteAnimationsAndDelayFrame
-	call .Update
-	call DelayFrame
-	and a
-	ret
-
-.exit_mail
-	callab ClearSpriteAnims
-	call ClearSprites
-	xor a
-	ld [hSCX], a
-	ld [hSCY], a
-	scf
-	ret
-
-.Update: ; 11feb (4:5feb)
-	xor a
-	ld [hBGMapMode], a
-	hlcoord 1, 1
-	lb bc, 4, 18
-	call ClearBox
-	ld hl, wc6d0
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	hlcoord 2, 2
-	call PlaceString
-	ld a, $1
-	ld [hBGMapMode], a
-	ret
-
-.DoJumptable: ; 12008 (4:6008)
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, .Jumptable
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-
-.Jumptable: ; 12017 (4:6017)
-	dw .init_blinking_cursor
-	dw .process_joypad
-
-
-.init_blinking_cursor: ; 1201b (4:601b)
-	depixel 9, 2
-	ld a, SPRITE_ANIM_INDEX_09
-	call _InitSpriteAnimStruct
-	ld a, c
-	ld [wc6d5], a
-	ld a, b
-	ld [wc6d6], a
-	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
-	add hl, bc
-	ld a, [hl]
-	ld hl, SPRITEANIMSTRUCT_0E
-	add hl, bc
-	ld [hl], a
-	ld hl, wJumptableIndex
-	inc [hl]
-	ret
-
-.process_joypad: ; 1203a (4:603a)
-	ld hl, hJoyPressed ; $ffa7
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .a
-	ld a, [hl]
-	and B_BUTTON
-	jr nz, .b
-	ld a, [hl]
-	and START
-	jr nz, .start
-	ld a, [hl]
-	and SELECT
-	jr nz, .select
-	ret
-
-.a
-	call Function12185
-	cp $1
-	jr z, .select
-	cp $2
-	jr z, .b
-	cp $3
-	jr z, .finished
-	call Function11c11
-	call Function121ac
-	jr c, .start
-	ld hl, wc6d2
-	ld a, [hl]
-	cp $10
-	ret nz
-	inc [hl]
-	call Function11bd0
-	ld [hl], $f2
-	dec hl
-	ld [hl], $4e
-	ret
-
-.start
-	ld hl, wc6d5
-	ld c, [hl]
-	inc hl
-	ld b, [hl]
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld [hl], $9
-	ld hl, SPRITEANIMSTRUCT_0D
-	add hl, bc
-	ld [hl], $5
-	ret
-
-.b
-	call Function11bbc
-	ld hl, wc6d2
-	ld a, [hl]
-	cp $10
-	ret nz
-	dec [hl]
-	call Function11bd0
-	ld [hl], $f2
-	inc hl
-	ld [hl], $4e
-	ret
-
-.finished
-	call Function11bf7
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-
-.select
-	ld hl, wcf64
-	ld a, [hl]
-	xor $1
-	ld [hl], a
-	jr nz, .switch_to_lowercase
-	ld de, MailEntry_Uppercase
-	call .PlaceMailCharset
-	ret
-
-.switch_to_lowercase
-	ld de, MailEntry_Lowercase
-	call .PlaceMailCharset
-	ret
-
-; called from engine/sprite_anims.asm
-Function120c1: ; 120c1 (4:60c1)
-	call Function1210c
-	ld hl, SPRITEANIMSTRUCT_0D
-	add hl, bc
-	ld a, [hl]
-	ld e, a
-	swap e
-	ld hl, SPRITEANIMSTRUCT_YOFFSET
-	add hl, bc
-	ld [hl], e
-	cp $5
-	ld de, Unknown_120f8
-	ld a, 0
-	jr nz, .asm_120df
-	ld de, Unknown_12102
-	ld a, 1
-.asm_120df
-	ld hl, SPRITEANIMSTRUCT_0E
-	add hl, bc
-	add [hl]
-	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
-	add hl, bc
-	ld [hl], a
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld l, [hl]
-	ld h, 0
-	add hl, de
-	ld a, [hl]
-	ld hl, SPRITEANIMSTRUCT_XOFFSET
-	add hl, bc
-	ld [hl], a
-	ret
-
-; 120f8 (4:60f8)
-
-Unknown_120f8: ; 120f8
-	db $00, $10, $20, $30, $40, $50, $60, $70, $80, $90
-Unknown_12102: ; 12102
-	db $00, $00, $00, $30, $30, $30, $60, $60, $60, $60
-; 1210c
-
-Function1210c: ; 1210c (4:610c)
-	ld hl, hJoyLast
-	ld a, [hl]
-	and D_UP
-	jr nz, .up
-	ld a, [hl]
-	and D_DOWN
-	jr nz, .down
-	ld a, [hl]
-	and D_LEFT
-	jr nz, .left
-	ld a, [hl]
-	and D_RIGHT
-	jr nz, .right
-	ret
-
-.right
-	call Function1218b
-	and a
-	jr nz, .asm_12138
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld a, [hl]
-	cp $9
-	jr nc, .asm_12135
-	inc [hl]
-	ret
-
-.asm_12135
-	ld [hl], $0
-	ret
-
-.asm_12138
-	cp $3
-	jr nz, .asm_1213d
-	xor a
-.asm_1213d
-	ld e, a
-	add a
-	add e
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld [hl], a
-	ret
-
-.left
-	call Function1218b
-	and a
-	jr nz, .asm_12159
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_12156
-	dec [hl]
-	ret
-
-.asm_12156
-	ld [hl], $9
-	ret
-
-.asm_12159
-	cp $1
-	jr nz, .asm_1215f
-	ld a, $4
-.asm_1215f
-rept 2
-	dec a
-endr
-	ld e, a
-	add a
-	add e
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld [hl], a
-	ret
-
-.down
-	ld hl, SPRITEANIMSTRUCT_0D
-	add hl, bc
-	ld a, [hl]
-	cp $5
-	jr nc, .asm_12175
-	inc [hl]
-	ret
-
-.asm_12175
-	ld [hl], $0
-	ret
-
-.up
-	ld hl, SPRITEANIMSTRUCT_0D
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_12182
-	dec [hl]
-	ret
-
-.asm_12182
-	ld [hl], $5
-	ret
-
-Function12185: ; 12185 (4:6185)
-	ld hl, wc6d5
-	ld c, [hl]
-	inc hl
-	ld b, [hl]
-
-Function1218b: ; 1218b (4:618b)
-	ld hl, SPRITEANIMSTRUCT_0D
-	add hl, bc
-	ld a, [hl]
-	cp $5
-	jr nz, .asm_121aa
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld a, [hl]
-	cp $3
-	jr c, .asm_121a4
-	cp $6
-	jr c, .asm_121a7
-	ld a, $3
-	ret
-
-.asm_121a4
-	ld a, $1
-	ret
-
-.asm_121a7
-	ld a, $2
-	ret
-
-.asm_121aa
-	xor a
-	ret
-
-Function121ac: ; 121ac (4:61ac)
-	ld a, [wc6d7]
-	jp Function11b17
-; 121b2 (4:61b2)
-
-Function121b2: ; unreferenced
-	ld a, [wc6d2]
-	and a
-	ret z
-	cp $11
-	jr nz, .asm_121c3
-	push hl
-	ld hl, wc6d2
-rept 2
-	dec [hl]
-endr
-	jr .asm_121c8
-
-.asm_121c3
-	push hl
-	ld hl, wc6d2
-	dec [hl]
-
-.asm_121c8
-	call Function11bd0
-	ld c, [hl]
-	pop hl
-.asm_121cd
-	ld a, [hli]
-	cp $ff
-	jp z, Function11b27
-	cp c
-	jr z, .asm_121d9
-	inc hl
-	jr .asm_121cd
-
-.asm_121d9
-	ld a, [hl]
-	jp Function11b23
-; 121dd
-
-MailEntry_Uppercase: ; 122dd
-	db "A B C D E F G H I J"
-	db "K L M N O P Q R S T"
-	db "U V W X Y Z   , ? !"
-	db "1 2 3 4 5 6 7 8 9 0"
-	db "<PK> <MN> <PO> <KE> é ♂ ♀ ¥ … ×"
-	db "lower  DEL   END   "
-; 1224f
-
-MailEntry_Lowercase: ; 1224f
-	db "a b c d e f g h i j"
-	db "k l m n o p q r s t"
-	db "u v w x y z   . - /"
-	db "'d 'l 'm 'r 's 't 'v & ( )"
-	db "<``> <''> [ ] ' : ;      "
-	db "UPPER  DEL   END   "
-; 122c1
diff --git a/engine/mon_icons.asm b/engine/mon_icons.asm
index f579d0cd5..5e41cd4a1 100755
--- a/engine/mon_icons.asm
+++ b/engine/mon_icons.asm
@@ -18,16 +18,16 @@ Function8e83f: ; 8e83f
 	push hl
 	push de
 	push bc
-	call Function8e849
+	call .LoadIcon
 	pop bc
 	pop de
 	pop hl
 	ret
 ; 8e849
 
-Function8e849: ; 8e849
+.LoadIcon: ; 8e849
 	ld d, 0
-	ld hl, .dw
+	ld hl, .Jumptable
 rept 2
 	add hl, de
 endr
@@ -38,23 +38,23 @@ endr
 ; 8e854
 
 
-.dw: ; 8e854 (23:6854)
+.Jumptable: ; 8e854 (23:6854)
 	dw Function8e8d5 ; init
 	dw Function8e961
 	dw Function8e97d
-	dw Function8e99a
+	dw Trade_LoadMonIconGFX
 	dw Function8e898
 	dw Mobile_InitPartyMenuBGPal71
-	dw Function8e862
+	dw .GetPartyMenuMonIcon
 
 
-Function8e862: ; 8e862 (23:6862)
+.GetPartyMenuMonIcon: ; 8e862 (23:6862)
 	call InitPartyMenuIcon
-	call Function8e86c
+	call .GetPartyMonItemGFX
 	call SetPartyMonIconAnimSpeed
 	ret
 
-Function8e86c: ; 8e86c (23:686c)
+.GetPartyMonItemGFX: ; 8e86c (23:686c)
 	push bc
 	ld a, [hObjectStructIndexBuffer]
 	ld hl, PartyMon1Item
@@ -63,22 +63,23 @@ Function8e86c: ; 8e86c (23:686c)
 	pop bc
 	ld a, [hl]
 	and a
-	jr z, .asm_8e890
+	jr z, .no_item
 	push hl
 	push bc
 	ld d, a
 	callab ItemIsMail
 	pop bc
 	pop hl
-	jr c, .asm_8e88e
+	jr c, .not_mail
 	ld a, $6
-	jr .asm_8e892
-.asm_8e88e
+	jr .got_tile
+.not_mail
 	ld a, $5
-	; jr .asm_8e892
-.asm_8e890
+	; jr .got_tile
+
+.no_item
 	ld a, $4
-.asm_8e892
+.got_tile
 	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
 	add hl, bc
 	ld [hl], a
@@ -246,7 +247,7 @@ Function8e97d: ; 8e97d (23:697d)
 	ld [hl], SPRITE_ANIM_SEQ_NULL
 	ret
 
-Function8e99a: ; 8e99a (23:699a)
+Trade_LoadMonIconGFX: ; 8e99a (23:699a)
 	ld a, [wd265]
 	call ReadMonMenuIcon
 	ld [CurIcon], a
diff --git a/engine/money.asm b/engine/money.asm
index d5d9b5c5c..aa1d7b696 100755
--- a/engine/money.asm
+++ b/engine/money.asm
@@ -86,7 +86,7 @@ CompareFunds: ; 1600d
 	jr .skip_carry
 
 .set_carry
-	ld a, TRUE
+	ld a, 1
 	and a
 	scf
 .skip_carry
diff --git a/engine/namingscreen.asm b/engine/namingscreen.asm
index f36e9b5eb..188665bc4 100755
--- a/engine/namingscreen.asm
+++ b/engine/namingscreen.asm
@@ -6,11 +6,11 @@ _NamingScreen: ; 0x116b7
 ; 0x116c1
 
 NamingScreen: ; 116c1
-	ld hl, wc6d0
+	ld hl, wNamingScreenDestinationPointer
 	ld [hl], e
 	inc hl
 	ld [hl], d
-	ld hl, wc6d4
+	ld hl, wNamingScreenType
 	ld [hl], b
 	ld hl, Options
 	ld a, [hl]
@@ -24,11 +24,11 @@ NamingScreen: ; 116c1
 	push af
 	ld a, $1
 	ld [hInMenu], a
-	call Function116f8
+	call .SetUpNamingScreen
 	call DelayFrame
-.asm_116e5
-	call Function11915
-	jr nc, .asm_116e5
+.loop
+	call NamingScreenJoypadLoop
+	jr nc, .loop
 	pop af
 	ld [hInMenu], a
 	pop af
@@ -39,29 +39,29 @@ NamingScreen: ; 116c1
 	ret
 ; 116f8
 
-Function116f8: ; 116f8
+.SetUpNamingScreen: ; 116f8
 	call ClearBGPalettes
 	ld b, SCGB_08
 	call GetSGBLayout
 	call DisableLCD
-	call Function11c51
-	call Function118a8
+	call LoadNamingScreenGFX
+	call NamingScreen_InitText
 	ld a, $e3
 	ld [rLCDC], a
-	call Function1171d
+	call .GetNamingScreenSetup
 	call WaitBGMap
 	call WaitTop
 	call SetPalettes
-	call Function11be0
+	call NamingScreen_InitNameEntry
 	ret
 ; 1171d
 
-Function1171d: ; 1171d
-	ld a, [wc6d4]
+.GetNamingScreenSetup: ; 1171d
+	ld a, [wNamingScreenType]
 	and 7
 	ld e, a
 	ld d, 0
-	ld hl, Jumptable_1172e
+	ld hl, .Jumptable
 rept 2
 	add hl, de
 endr
@@ -72,18 +72,18 @@ endr
 ; 1172e
 
 
-Jumptable_1172e: ; 1172e (4:572e)
-	dw Function1173e
-	dw Function1178d
-	dw Function117ae
-	dw Function117d1
-	dw Function117f5
-	dw Function1182c
-	dw Function1173e
-	dw Function1173e
+.Jumptable: ; 1172e (4:572e)
+	dw .Pokemon
+	dw .Player
+	dw .Rival
+	dw .Mom
+	dw .Box
+	dw .Tomodachi
+	dw .Pokemon
+	dw .Pokemon
 
 
-Function1173e: ; 1173e (4:573e)
+.Pokemon: ; 1173e (4:573e)
 	ld a, [CurPartySpecies]
 	ld [wd265], a
 	ld hl, Function8e83f
@@ -97,74 +97,74 @@ Function1173e: ; 1173e (4:573e)
 	call PlaceString
 	ld l, c
 	ld h, b
-	ld de, Strings_11780
+	ld de, .NicknameStrings
 	call PlaceString
 	inc de
 	hlcoord 5, 4
 	call PlaceString
 	callba GetGender
-	jr c, .asm_1177c
-	ld a, $ef
-	jr nz, .asm_11778
-	ld a, $f5
-.asm_11778
+	jr c, .genderless
+	ld a, "♂"
+	jr nz, .place_gender
+	ld a, "♀"
+.place_gender
 	hlcoord 1, 2
 	ld [hl], a
-.asm_1177c
-	call Function1187b
+.genderless
+	call .StoreMonIconParams
 	ret
 ; 11780 (4:5780)
 
-Strings_11780: ; 11780
+.NicknameStrings: ; 11780
 	db "'S@"
 	db "NICKNAME?@"
 ; 1178d
 
-Function1178d: ; 1178d (4:578d)
+.Player: ; 1178d (4:578d)
 	callba GetPlayerIcon
-	call Function11847
+	call .LoadSprite
 	hlcoord 5, 2
-	ld de, String_117a3
+	ld de, .PlayerNameString
 	call PlaceString
-	call Function11882
+	call .StoreSpriteIconParams
 	ret
 ; 117a3 (4:57a3)
 
-String_117a3: ; 117a3
+.PlayerNameString: ; 117a3
 	db "YOUR NAME?@"
 ; 117ae
 
-Function117ae: ; 117ae (4:57ae)
+.Rival: ; 117ae (4:57ae)
 	ld de, SilverSpriteGFX
 	ld b, BANK(SilverSpriteGFX)
-	call Function11847
+	call .LoadSprite
 	hlcoord 5, 2
-	ld de, String_117c3
+	ld de, .RivalNameString
 	call PlaceString
-	call Function11882
+	call .StoreSpriteIconParams
 	ret
 ; 117c3 (4:57c3)
 
-String_117c3: ; 117c3
+.RivalNameString: ; 117c3
 	db "RIVAL'S NAME?@"
 ; 117d1
 
-Function117d1: ; 117d1 (4:57d1)
+.Mom: ; 117d1 (4:57d1)
 	ld de, MomSpriteGFX
 	ld b, BANK(MomSpriteGFX)
-	call Function11847
+	call .LoadSprite
 	hlcoord 5, 2
-	ld de, String_117e6
+	ld de, .MomNameString
 	call PlaceString
-	call Function11882
+	call .StoreSpriteIconParams
 	ret
 ; 117e6 (4:57e6)
 
-String_117e6: ; 117e6
+.MomNameString: ; 117e6
 	db "MOTHER'S NAME?@"
 ; 117f5
 
-Function117f5: ; 117f5 (4:57f5)
+.Box: ; 117f5 (4:57f5)
 	ld de, PokeBallSpriteGFX
 	ld hl, VTiles0 tile $00
 	lb bc, BANK(PokeBallSpriteGFX), $4
@@ -180,36 +180,36 @@ Function117f5: ; 117f5 (4:57f5)
 	add hl, bc
 	ld [hl], $0
 	hlcoord 5, 2
-	ld de, String_11822
+	ld de, .BoxNameString
 	call PlaceString
-	call Function11889
+	call .StoreBoxIconParams
 	ret
 ; 11822 (4:5822)
 
-String_11822: ; 11822
+.BoxNameString: ; 11822
 	db "BOX NAME?@"
 ; 1182c
 
-Function1182c: ; 1182c (4:582c)
+.Tomodachi: ; 1182c (4:582c)
 	hlcoord 3, 2
-	ld de, String_11839
+	ld de, .oTomodachi_no_namae_sutoringu
 	call PlaceString
-	call Function11882
+	call .StoreSpriteIconParams
 	ret
 ; 11839 (4:5839)
 
-String_11839: ; 11839
+.oTomodachi_no_namae_sutoringu: ; 11839
 	db "おともだち の なまえは?@"
 ; 11847
 
-Function11847: ; 11847 (4:5847)
+.LoadSprite: ; 11847 (4:5847)
 	push de
 	ld hl, VTiles0 tile $00
 	ld c, $4
 	push bc
 	call Request2bpp
 	pop bc
-	ld hl, $c0
+	ld hl, 12 tiles
 	add hl, de
 	ld e, l
 	ld d, h
@@ -222,46 +222,46 @@ Function11847: ; 11847 (4:5847)
 	pop de
 	ld b, SPRITE_ANIM_INDEX_WALK_CYCLE
 	ld a, d
-	cp $7a
-	jr nz, .asm_11873
+	cp KrisSpriteGFX / $100
+	jr nz, .not_kris
 	ld a, e
-	cp $40
-	jr nz, .asm_11873
+	cp KrisSpriteGFX % $100
+	jr nz, .not_kris
 	ld b, SPRITE_ANIM_INDEX_1E
-.asm_11873
+.not_kris
 	ld a, b
 	depixel 4, 4, 4, 0
 	call _InitSpriteAnimStruct
 	ret
 
-Function1187b: ; 1187b (4:587b)
-	ld a, $a
+.StoreMonIconParams: ; 1187b (4:587b)
+	ld a, PKMN_NAME_LENGTH - 1
 	hlcoord 5, 6
-	jr Function11890
+	jr .StoreParams
 
-Function11882: ; 11882 (4:5882)
-	ld a, $7
+.StoreSpriteIconParams: ; 11882 (4:5882)
+	ld a, PLAYER_NAME_LENGTH - 1
 	hlcoord 5, 6
-	jr Function11890
+	jr .StoreParams
 
-Function11889: ; 11889 (4:5889)
-	ld a, $8
+.StoreBoxIconParams: ; 11889 (4:5889)
+	ld a, BOX_NAME_LENGTH - 1
 	hlcoord 5, 4
-	jr Function11890
+	jr .StoreParams
 
-Function11890: ; 11890 (4:5890)
-	ld [wc6d3], a
+.StoreParams: ; 11890 (4:5890)
+	ld [wNamingScreenMaxNameLength], a
 	ld a, l
-	ld [wc6d8], a
+	ld [wNamingScreenStringEntryCoord], a
 	ld a, h
-	ld [wc6d9], a
+	ld [wNamingScreenStringEntryCoord + 1], a
 	ret
 
 
-Function1189c: ; 1189c
+NamingScreen_IsTargetBox: ; 1189c
 	push bc
 	push af
-	ld a, [wc6d4]
+	ld a, [wNamingScreenType]
 	sub $3
 	ld b, a
 	pop af
@@ -270,7 +270,7 @@ Function1189c: ; 1189c
 	ret
 ; 118a8
 
-Function118a8: ; 118a8
+NamingScreen_InitText: ; 118a8
 	call WaitTop
 	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
@@ -278,31 +278,31 @@ Function118a8: ; 118a8
 	call ByteFill
 	hlcoord 1, 1
 	lb bc, 6, 18
-	call Function1189c
-	jr nz, .asm_118c4
+	call NamingScreen_IsTargetBox
+	jr nz, .not_box
 	lb bc, 4, 18
 
-.asm_118c4
+.not_box
 	call ClearBox
 	ld de, NameInputUpper
-Function118ca: ; 118ca
-	call Function1189c
-	jr nz, .asm_118d5
+NamingScreen_ApplyTextInputMode: ; 118ca
+	call NamingScreen_IsTargetBox
+	jr nz, .not_box
 	ld hl, BoxNameInputLower - NameInputLower
 	add hl, de
 	ld d, h
 	ld e, l
 
-.asm_118d5
+.not_box
 	push de
 	hlcoord 1, 8
 	lb bc, 7, 18
-	call Function1189c
-	jr nz, .asm_118e7
+	call NamingScreen_IsTargetBox
+	jr nz, .not_box_2
 	hlcoord 1, 6
 	lb bc, 9, 18
 
-.asm_118e7
+.not_box_2
 	call ClearBox
 	hlcoord 1, 16
 	lb bc, 1, 18
@@ -310,41 +310,41 @@ Function118ca: ; 118ca
 	pop de
 	hlcoord 2, 8
 	ld b, $5
-	call Function1189c
-	jr nz, .asm_11903
+	call NamingScreen_IsTargetBox
+	jr nz, .row
 	hlcoord 2, 6
 	ld b, $6
 
-.asm_11903
+.row
 	ld c, $11
-.asm_11905
+.col
 	ld a, [de]
 	ld [hli], a
 	inc de
 	dec c
-	jr nz, .asm_11905
+	jr nz, .col
 	push de
-	ld de, $17
+	ld de, 2 * SCREEN_WIDTH - $11
 	add hl, de
 	pop de
 	dec b
-	jr nz, .asm_11903
+	jr nz, .row
 	ret
 ; 11915
 
-Function11915: ; 11915
+NamingScreenJoypadLoop: ; 11915
 	call JoyTextDelay
 	ld a, [wJumptableIndex]
 	bit 7, a
-	jr nz, .asm_11930
-	call Function11968
+	jr nz, .quit
+	call .RunJumptable
 	callba PlaySpriteAnimationsAndDelayFrame
-	call Function11940
+	call .UpdateStringEntry
 	call DelayFrame
 	and a
 	ret
 
-.asm_11930
+.quit
 	callab ClearSpriteAnims
 	call ClearSprites
 	xor a
@@ -354,22 +354,22 @@ Function11915: ; 11915
 	ret
 ; 11940
 
-Function11940: ; 11940
+.UpdateStringEntry: ; 11940
 	xor a
 	ld [hBGMapMode], a
 	hlcoord 1, 5
-	call Function1189c
-	jr nz, .asm_1194e
+	call NamingScreen_IsTargetBox
+	jr nz, .got_coords
 	hlcoord 1, 3
 
-.asm_1194e
+.got_coords
 	lb bc, 1, 18
 	call ClearBox
-	ld hl, wc6d0
+	ld hl, wNamingScreenDestinationPointer
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	ld hl, wc6d8
+	ld hl, wNamingScreenStringEntryCoord
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -379,11 +379,11 @@ Function11940: ; 11940
 	ret
 ; 11968
 
-Function11968: ; 11968
+.RunJumptable: ; 11968
 	ld a, [wJumptableIndex]
 	ld e, a
 	ld d, $0
-	ld hl, Jumptable_11977
+	ld hl, .Jumptable
 rept 2
 	add hl, de
 endr
@@ -394,21 +394,21 @@ endr
 ; 11977
 
 
-Jumptable_11977: ; 11977 (4:5977)
-	dw Function1197b
-	dw Function119a1
+.Jumptable: ; 11977 (4:5977)
+	dw .InitCursor
+	dw .ReadButtons
 
 
-Function1197b: ; 1197b (4:597b)
+.InitCursor: ; 1197b (4:597b)
 	depixel 10, 3
-	call Function1189c
-	jr nz, .asm_11985
+	call NamingScreen_IsTargetBox
+	jr nz, .got_cursor_position
 	ld d, 8 * 8
-.asm_11985
+.got_cursor_position
 	ld a, SPRITE_ANIM_INDEX_02
 	call _InitSpriteAnimStruct
 	ld a, c
-	ld [wc6d5], a
+	ld [wNamingScreenCursorObjectPointer], a
 	ld a, b
 	ld [wc6d6], a
 	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
@@ -421,7 +421,7 @@ Function1197b: ; 1197b (4:597b)
 	inc [hl]
 	ret
 
-Function119a1: ; 119a1 (4:59a1)
+.ReadButtons: ; 119a1 (4:59a1)
 	ld hl, hJoyPressed ; $ffa7
 	ld a, [hl]
 	and A_BUTTON
@@ -438,19 +438,19 @@ Function119a1: ; 119a1 (4:59a1)
 	ret
 
 .a
-	call Function11a0b
+	call .GetCursorPosition
 	cp $1
 	jr z, .select
 	cp $2
 	jr z, .b
 	cp $3
-	jr z, .asm_119eb
-	call Function11c11
-	call Function11b14
+	jr z, .end
+	call NamingScreen_GetLastCharacter
+	call NamingScreen_TryAddCharacter
 	ret nc
 
 .start
-	ld hl, wc6d5
+	ld hl, wNamingScreenCursorObjectPointer
 	ld c, [hl]
 	inc hl
 	ld b, [hl]
@@ -460,17 +460,17 @@ Function119a1: ; 119a1 (4:59a1)
 	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld [hl], $4
-	call Function1189c
+	call NamingScreen_IsTargetBox
 	ret nz
 	inc [hl]
 	ret
 
 .b
-	call Function11bbc
+	call NamingScreen_DeleteCharacter
 	ret
 
-.asm_119eb
-	call Function11bf7
+.end
+	call NamingScreen_StoreEntry
 	ld hl, wJumptableIndex
 	set 7, [hl]
 	ret
@@ -480,56 +480,59 @@ Function119a1: ; 119a1 (4:59a1)
 	ld a, [hl]
 	xor 1
 	ld [hl], a
-	jr z, .asm_11a04
+	jr z, .upper
 	ld de, NameInputLower
-	call Function118ca
+	call NamingScreen_ApplyTextInputMode
 	ret
 
-.asm_11a04
+.upper
 	ld de, NameInputUpper
-	call Function118ca
+	call NamingScreen_ApplyTextInputMode
 	ret
 
-Function11a0b: ; 11a0b (4:5a0b)
-	ld hl, wc6d5
+.GetCursorPosition: ; 11a0b (4:5a0b)
+	ld hl, wNamingScreenCursorObjectPointer
 	ld c, [hl]
 	inc hl
 	ld b, [hl]
 
-Function11a11: ; 11a11 (4:5a11)
+NamingScreen_GetCursorPosition: ; 11a11 (4:5a11)
 	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld a, [hl]
 	push bc
 	ld b, $4
-	call Function1189c
-	jr nz, .asm_11a1f
+	call NamingScreen_IsTargetBox
+	jr nz, .not_box
 	inc b
-.asm_11a1f
+.not_box
 	cp b
 	pop bc
-	jr nz, .asm_11a39
+	jr nz, .not_bottom_row
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
 	cp $3
-	jr c, .asm_11a33
+	jr c, .case_switch
 	cp $6
-	jr c, .asm_11a36
+	jr c, .delete
 	ld a, $3
 	ret
-.asm_11a33
+
+.case_switch
 	ld a, $1
 	ret
-.asm_11a36
+
+.delete
 	ld a, $2
 	ret
-.asm_11a39
+
+.not_bottom_row
 	xor a
 	ret
 
-Function11a3b: ; 11a3b (4:5a3b)
-	call Function11a8b
+NamingScreen_AnimateCursor: ; 11a3b (4:5a3b)
+	call .GetDPad
 	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld a, [hl]
@@ -539,17 +542,17 @@ Function11a3b: ; 11a3b (4:5a3b)
 	add hl, bc
 	ld [hl], e
 	ld d, $4
-	call Function1189c
-	jr nz, .asm_11a53
+	call NamingScreen_IsTargetBox
+	jr nz, .ok
 	inc d
-.asm_11a53
+.ok
 	cp d
-	ld de, Unknown_11a79
+	ld de, .LetterEntries
 	ld a, $0
-	jr nz, .asm_11a60
-	ld de, Unknown_11a82
+	jr nz, .ok2
+	ld de, .CaseDelEnd
 	ld a, $1
-.asm_11a60
+.ok2
 	ld hl, SPRITEANIMSTRUCT_0E
 	add hl, bc
 	add [hl]
@@ -568,13 +571,14 @@ Function11a3b: ; 11a3b (4:5a3b)
 	ret
 ; 11a79 (4:5a79)
 
-Unknown_11a79: ; 11a79
+.LetterEntries: ; 11a79
 	db $00, $10, $20, $30, $40, $50, $60, $70, $80
-Unknown_11a82: ; 11a82
+
+.CaseDelEnd: ; 11a82
 	db $00, $00, $00, $30, $30, $30, $60, $60, $60
 ; 11a8b
 
-Function11a8b: ; 11a8b (4:5a8b)
+.GetDPad: ; 11a8b (4:5a8b)
 	ld hl, hJoyLast
 	ld a, [hl]
 	and D_UP
@@ -590,7 +594,7 @@ Function11a8b: ; 11a8b (4:5a8b)
 	jr nz, .right
 	ret
 .right
-	call Function11a11
+	call NamingScreen_GetCursorPosition
 	and a
 	jr nz, .asm_11ab7
 	ld hl, SPRITEANIMSTRUCT_0C
@@ -616,7 +620,7 @@ Function11a8b: ; 11a8b (4:5a8b)
 	ld [hl], a
 	ret
 .left
-	call Function11a11
+	call NamingScreen_GetCursorPosition
 	and a
 	jr nz, .asm_11ad8
 	ld hl, SPRITEANIMSTRUCT_0C
@@ -648,7 +652,7 @@ endr
 	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld a, [hl]
-	call Function1189c
+	call NamingScreen_IsTargetBox
 	jr nz, .asm_11af9
 	cp $5
 	jr nc, .asm_11aff
@@ -672,65 +676,65 @@ endr
 	ret
 .asm_11b0c
 	ld [hl], $4
-	call Function1189c
+	call NamingScreen_IsTargetBox
 	ret nz
 	inc [hl]
 	ret
 
-Function11b14: ; 11b14 (4:5b14)
-	ld a, [wc6d7]
-
-Function11b17: ; 11b17 (4:5b17)
-	ld a, [wc6d3]
+NamingScreen_TryAddCharacter: ; 11b14 (4:5b14)
+	ld a, [wNamingScreenLastCharacter] ; lost
+MailComposition_TryAddCharacter: ; 11b17 (4:5b17)
+	ld a, [wNamingScreenMaxNameLength]
 	ld c, a
-	ld a, [wc6d2]
+	ld a, [wNamingScreenCurrNameLength]
 	cp c
 	ret nc
 
-	ld a, [wc6d7]
+	ld a, [wNamingScreenLastCharacter]
 
-Function11b23: ; 11b23
-	call Function11bd0
+NamingScreen_LoadNextCharacter: ; 11b23
+	call NamingScreen_GetTextCursorPosition
 	ld [hl], a
 
-Function11b27: ; 11b27
-	ld hl, wc6d2
+NamingScreen_AdvanceCursor_CheckEndOfString: ; 11b27
+	ld hl, wNamingScreenCurrNameLength
 	inc [hl]
-	call Function11bd0
+	call NamingScreen_GetTextCursorPosition
 	ld a, [hl]
-	cp $50
-	jr z, .asm_11b37
+	cp "@"
+	jr z, .end_of_string
 	ld [hl], $f2
 	and a
 	ret
-.asm_11b37
+
+.end_of_string
 	scf
 	ret
 ; 11b39 (4:5b39)
 
-Function11b39: ; 11b39
-	ld a, [wc6d2]
+; XXX
+	ld a, [wNamingScreenCurrNameLength]
 	and a
 	ret z
 	push hl
-	ld hl, wc6d2
+	ld hl, wNamingScreenCurrNameLength
 	dec [hl]
-	call Function11bd0
+	call NamingScreen_GetTextCursorPosition
 	ld c, [hl]
 	pop hl
 
-.asm_11b48
+.loop
 	ld a, [hli]
 	cp $ff
-	jr z, Function11b27
+	jr z, NamingScreen_AdvanceCursor_CheckEndOfString
 	cp c
-	jr z, .asm_11b53
+	jr z, .done
 	inc hl
-	jr .asm_11b48
+	jr .loop
 
-.asm_11b53
+.done
 	ld a, [hl]
-	jr Function11b23
+	jr NamingScreen_LoadNextCharacter
 ; 11b56
 
 Dakutens: ; Dummied out
@@ -750,13 +754,13 @@ Handakutens: ; Dummied out
 	db $ff
 ; 11bbc
 
-Function11bbc: ; 11bbc (4:5bbc)
-	ld hl, wc6d2
+NamingScreen_DeleteCharacter: ; 11bbc (4:5bbc)
+	ld hl, wNamingScreenCurrNameLength
 	ld a, [hl]
 	and a
 	ret z
 	dec [hl]
-	call Function11bd0
+	call NamingScreen_GetTextCursorPosition
 	ld [hl], $f2
 	inc hl
 	ld a, [hl]
@@ -765,13 +769,13 @@ Function11bbc: ; 11bbc (4:5bbc)
 	ld [hl], $eb
 	ret
 
-Function11bd0: ; 11bd0 (4:5bd0)
+NamingScreen_GetTextCursorPosition: ; 11bd0 (4:5bd0)
 	push af
-	ld hl, wc6d0
+	ld hl, wNamingScreenDestinationPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld a, [wc6d2]
+	ld a, [wNamingScreenCurrNameLength]
 	ld e, a
 	ld d, 0
 	add hl, de
@@ -779,18 +783,18 @@ Function11bd0: ; 11bd0 (4:5bd0)
 	ret
 ; 11be0
 
-Function11be0: ; 11be0
-; load $f2, ($eb * [wc6d3]), $50 into the dw address at wc6d0
-	ld hl, wc6d0
+NamingScreen_InitNameEntry: ; 11be0
+; load $f2, ($eb * [wNamingScreenMaxNameLength]), $50 into the dw address at wNamingScreenDestinationPointer
+	ld hl, wNamingScreenDestinationPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld [hl], "·"
+	ld [hl], $f2
 	inc hl
-	ld a, [wc6d3]
+	ld a, [wNamingScreenMaxNameLength]
 	dec a
 	ld c, a
-	ld a, "→"
+	ld a, $eb
 .loop
 	ld [hli], a
 	dec c
@@ -800,29 +804,29 @@ Function11be0: ; 11be0
 ; 11bf7
 
 
-Function11bf7: ; 11bf7 (4:5bf7)
-	ld hl, wc6d0
+NamingScreen_StoreEntry: ; 11bf7 (4:5bf7)
+	ld hl, wNamingScreenDestinationPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld a, [wc6d3]
+	ld a, [wNamingScreenMaxNameLength]
 	ld c, a
-.asm_11c01
+.loop
 	ld a, [hl]
 	cp $eb
-	jr z, .asm_11c0a
+	jr z, .terminator
 	cp $f2
-	jr nz, .asm_11c0c
-.asm_11c0a
-	ld [hl], $50
-.asm_11c0c
+	jr nz, .not_terminator
+.terminator
+	ld [hl], "@"
+.not_terminator
 	inc hl
 	dec c
-	jr nz, .asm_11c01
+	jr nz, .loop
 	ret
 
-Function11c11: ; 11c11 (4:5c11)
-	ld hl, wc6d5
+NamingScreen_GetLastCharacter: ; 11c11 (4:5c11)
+	ld hl, wNamingScreenCursorObjectPointer
 	ld c, [hl]
 	inc hl
 	ld b, [hl]
@@ -849,51 +853,51 @@ Function11c11: ; 11c11 (4:5c11)
 	srl a
 	ld d, a
 	hlcoord 0, 0
-	ld bc, $14
-.asm_11c43
+	ld bc, SCREEN_WIDTH
+.loop
 	ld a, d
 	and a
-	jr z, .asm_11c4b
+	jr z, .done
 	add hl, bc
 	dec d
-	jr .asm_11c43
-.asm_11c4b
+	jr .loop
+.done
 	add hl, de
 	ld a, [hl]
-	ld [wc6d7], a
+	ld [wNamingScreenLastCharacter], a
 	ret
 
 
-Function11c51: ; 11c51
+LoadNamingScreenGFX: ; 11c51
 	call ClearSprites
 	callab ClearSpriteAnims
 	call LoadStandardFont
 	call LoadFontsExtra
 
-	ld de, GFX_11e65
+	ld de, NamingScreenGFX_MiddleLine
 	ld hl, VTiles1 tile $6b
-	lb bc, BANK(GFX_11e65), 1
+	lb bc, BANK(NamingScreenGFX_MiddleLine), 1
 	call Get1bpp
 
-	ld de, GFX_11e6d
+	ld de, NamingScreenGFX_UnderLine
 	ld hl, VTiles1 tile $72
-	lb bc, BANK(GFX_11e6d), 1
+	lb bc, BANK(NamingScreenGFX_UnderLine), 1
 	call Get1bpp
 
 	ld de, VTiles2 tile $60
-	ld hl, GFX_11cb7
-	ld bc, $10
-	ld a, BANK(GFX_11cb7)
+	ld hl, NamingScreenGFX_Border
+	ld bc, 1 tiles
+	ld a, BANK(NamingScreenGFX_Border)
 	call FarCopyBytes
 
 	ld de, VTiles0 tile $7e
-	ld hl, GFX_11cc7
-	ld bc, $20
-	ld a, BANK(GFX_11cc7)
+	ld hl, NamingScreenGFX_Cursor
+	ld bc, 2 tiles
+	ld a, BANK(NamingScreenGFX_Cursor)
 	call FarCopyBytes
 
 	ld a, $5
-	ld hl, wc312
+	ld hl, wSpriteAnimDict + 9 * 2
 	ld [hli], a
 	ld [hl], $7e
 	xor a
@@ -904,17 +908,17 @@ Function11c51: ; 11c51
 	ld [wJumptableIndex], a
 	ld [wcf64], a
 	ld [hBGMapMode], a
-	ld [wc6d2], a
+	ld [wNamingScreenCurrNameLength], a
 	ld a, $7
 	ld [hWX], a
 	ret
 ; 11cb7
 
-GFX_11cb7: ; 11cb7
+NamingScreenGFX_Border: ; 11cb7
 INCBIN "gfx/unknown/011cb7.2bpp"
 ; 11cc7
 
-GFX_11cc7: ; 11cc7
+NamingScreenGFX_Cursor: ; 11cc7
 INCBIN "gfx/unknown/011cc7.2bpp"
 ; 11ce7
 
@@ -950,10 +954,529 @@ GFX_11e5d: ; ????
 INCBIN "gfx/unknown/011e5d.2bpp"
 ; 11e6d
 
-GFX_11e65:
+NamingScreenGFX_MiddleLine:
 INCBIN "gfx/unknown/011e65.2bpp"
 ; 11e6d
 
-GFX_11e6d: ; 11e6d
+NamingScreenGFX_UnderLine: ; 11e6d
 INCBIN "gfx/unknown/011e6d.2bpp"
 ; 11e75
+
+_ComposeMailMessage: ; 11e75 (mail?)
+	ld hl, wNamingScreenDestinationPointer
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ld a, [hMapAnims]
+	push af
+	xor a
+	ld [hMapAnims], a
+	ld a, [hInMenu]
+	push af
+	ld a, $1
+	ld [hInMenu], a
+	call .InitBlankMail
+	call DelayFrame
+
+.loop
+	call .DoMailEntry
+	jr nc, .loop
+
+	pop af
+	ld [hInMenu], a
+	pop af
+	ld [hMapAnims], a
+	ret
+
+.InitBlankMail: ; 11e9a (4:5e9a)
+	call ClearBGPalettes
+	call DisableLCD
+	call LoadNamingScreenGFX
+	ld de, VTiles0 tile $00
+	ld hl, .MailIcon
+	ld bc, 8 tiles
+	ld a, BANK(.MailIcon)
+	call FarCopyBytes
+	xor a
+	ld hl, wSpriteAnimDict
+	ld [hli], a
+	ld [hl], a
+
+	; init mail icon
+	depixel 3, 2
+	ld a, SPRITE_ANIM_INDEX_00
+	call _InitSpriteAnimStruct
+
+	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+	add hl, bc
+	ld [hl], $0
+	call .InitCharset
+	ld a, $e3
+	ld [rLCDC], a
+	call .initwNamingScreenMaxNameLength
+	ld b, SCGB_08
+	call GetSGBLayout
+	call WaitBGMap
+	call WaitTop
+	ld a, %11100100
+	call DmgToCgbBGPals
+	ld a, %11100100
+	call DmgToCgbObjPal0
+	call NamingScreen_InitNameEntry
+	ld hl, wNamingScreenDestinationPointer
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld hl, $10
+	add hl, de
+	ld [hl], $4e
+	ret
+
+; 11ef4 (4:5ef4)
+
+.MailIcon: ; 11ef4
+INCBIN "gfx/icon/mail2.2bpp"
+; 11f74
+
+.initwNamingScreenMaxNameLength: ; 11f74 (4:5f74)
+	ld a, MAIL_MSG_LENGTH + 1
+	ld [wNamingScreenMaxNameLength], a
+	ret
+
+; 11f7a (4:5f7a)
+
+.Dummy: ; dummied out
+	db "メールを かいてね@"
+; 11f84
+
+.InitCharset: ; 11f84 (4:5f84)
+	call WaitTop
+	hlcoord 0, 0
+	ld bc, 6 * SCREEN_WIDTH
+	ld a, $60 ; border
+	call ByteFill
+	hlcoord 0, 6
+	ld bc, 12 * SCREEN_WIDTH
+	ld a, " "
+	call ByteFill
+	hlcoord 1, 1
+	lb bc, 4, SCREEN_WIDTH - 2
+	call ClearBox
+	ld de, MailEntry_Uppercase
+
+.PlaceMailCharset: ; 11fa9 (4:5fa9)
+	hlcoord 1, 7
+	ld b, 6
+.next
+	ld c, SCREEN_WIDTH - 1
+.loop_
+	ld a, [de]
+	ld [hli], a
+	inc de
+	dec c
+	jr nz, .loop_
+	push de
+	ld de, SCREEN_WIDTH + 1
+	add hl, de
+	pop de
+	dec b
+	jr nz, .next
+	ret
+
+.DoMailEntry: ; 11fc0 (4:5fc0)
+	call JoyTextDelay
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .exit_mail
+	call .DoJumptable
+	callba PlaySpriteAnimationsAndDelayFrame
+	call .Update
+	call DelayFrame
+	and a
+	ret
+
+.exit_mail
+	callab ClearSpriteAnims
+	call ClearSprites
+	xor a
+	ld [hSCX], a
+	ld [hSCY], a
+	scf
+	ret
+
+.Update: ; 11feb (4:5feb)
+	xor a
+	ld [hBGMapMode], a
+	hlcoord 1, 1
+	lb bc, 4, 18
+	call ClearBox
+	ld hl, wNamingScreenDestinationPointer
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	hlcoord 2, 2
+	call PlaceString
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+
+.DoJumptable: ; 12008 (4:6008)
+	ld a, [wJumptableIndex]
+	ld e, a
+	ld d, 0
+	ld hl, .Jumptable
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+
+.Jumptable: ; 12017 (4:6017)
+	dw .init_blinking_cursor
+	dw .process_joypad
+
+
+.init_blinking_cursor: ; 1201b (4:601b)
+	depixel 9, 2
+	ld a, SPRITE_ANIM_INDEX_09
+	call _InitSpriteAnimStruct
+	ld a, c
+	ld [wNamingScreenCursorObjectPointer], a
+	ld a, b
+	ld [wNamingScreenCursorObjectPointer + 1], a
+	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
+	add hl, bc
+	ld a, [hl]
+	ld hl, SPRITEANIMSTRUCT_0E
+	add hl, bc
+	ld [hl], a
+	ld hl, wJumptableIndex
+	inc [hl]
+	ret
+
+.process_joypad: ; 1203a (4:603a)
+	ld hl, hJoyPressed ; $ffa7
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .a
+	ld a, [hl]
+	and B_BUTTON
+	jr nz, .b
+	ld a, [hl]
+	and START
+	jr nz, .start
+	ld a, [hl]
+	and SELECT
+	jr nz, .select
+	ret
+
+.a
+	call Function12185
+	cp $1
+	jr z, .select
+	cp $2
+	jr z, .b
+	cp $3
+	jr z, .finished
+	call NamingScreen_GetLastCharacter
+	call Function121ac
+	jr c, .start
+	ld hl, wNamingScreenCurrNameLength
+	ld a, [hl]
+	cp $10
+	ret nz
+	inc [hl]
+	call NamingScreen_GetTextCursorPosition
+	ld [hl], $f2
+	dec hl
+	ld [hl], $4e
+	ret
+
+.start
+	ld hl, wNamingScreenCursorObjectPointer
+	ld c, [hl]
+	inc hl
+	ld b, [hl]
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld [hl], $9
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld [hl], $5
+	ret
+
+.b
+	call NamingScreen_DeleteCharacter
+	ld hl, wNamingScreenCurrNameLength
+	ld a, [hl]
+	cp $10
+	ret nz
+	dec [hl]
+	call NamingScreen_GetTextCursorPosition
+	ld [hl], $f2
+	inc hl
+	ld [hl], $4e
+	ret
+
+.finished
+	call NamingScreen_StoreEntry
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+
+.select
+	ld hl, wcf64
+	ld a, [hl]
+	xor $1
+	ld [hl], a
+	jr nz, .switch_to_lowercase
+	ld de, MailEntry_Uppercase
+	call .PlaceMailCharset
+	ret
+
+.switch_to_lowercase
+	ld de, MailEntry_Lowercase
+	call .PlaceMailCharset
+	ret
+
+; called from engine/sprite_anims.asm
+Function120c1: ; 120c1 (4:60c1)
+	call Function1210c
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld a, [hl]
+	ld e, a
+	swap e
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], e
+	cp $5
+	ld de, Unknown_120f8
+	ld a, 0
+	jr nz, .asm_120df
+	ld de, Unknown_12102
+	ld a, 1
+.asm_120df
+	ld hl, SPRITEANIMSTRUCT_0E
+	add hl, bc
+	add [hl]
+	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
+	add hl, bc
+	ld [hl], a
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld l, [hl]
+	ld h, 0
+	add hl, de
+	ld a, [hl]
+	ld hl, SPRITEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ret
+
+; 120f8 (4:60f8)
+
+Unknown_120f8: ; 120f8
+	db $00, $10, $20, $30, $40, $50, $60, $70, $80, $90
+
+Unknown_12102: ; 12102
+	db $00, $00, $00, $30, $30, $30, $60, $60, $60, $60
+; 1210c
+
+Function1210c: ; 1210c (4:610c)
+	ld hl, hJoyLast
+	ld a, [hl]
+	and D_UP
+	jr nz, .up
+	ld a, [hl]
+	and D_DOWN
+	jr nz, .down
+	ld a, [hl]
+	and D_LEFT
+	jr nz, .left
+	ld a, [hl]
+	and D_RIGHT
+	jr nz, .right
+	ret
+
+.right
+	call Function1218b
+	and a
+	jr nz, .asm_12138
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hl]
+	cp $9
+	jr nc, .asm_12135
+	inc [hl]
+	ret
+
+.asm_12135
+	ld [hl], $0
+	ret
+
+.asm_12138
+	cp $3
+	jr nz, .asm_1213d
+	xor a
+.asm_1213d
+	ld e, a
+	add a
+	add e
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld [hl], a
+	ret
+
+.left
+	call Function1218b
+	and a
+	jr nz, .asm_12159
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_12156
+	dec [hl]
+	ret
+
+.asm_12156
+	ld [hl], $9
+	ret
+
+.asm_12159
+	cp $1
+	jr nz, .asm_1215f
+	ld a, $4
+.asm_1215f
+rept 2
+	dec a
+endr
+	ld e, a
+	add a
+	add e
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld [hl], a
+	ret
+
+.down
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld a, [hl]
+	cp $5
+	jr nc, .asm_12175
+	inc [hl]
+	ret
+
+.asm_12175
+	ld [hl], $0
+	ret
+
+.up
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_12182
+	dec [hl]
+	ret
+
+.asm_12182
+	ld [hl], $5
+	ret
+
+Function12185: ; 12185 (4:6185)
+	ld hl, wNamingScreenCursorObjectPointer
+	ld c, [hl]
+	inc hl
+	ld b, [hl]
+
+Function1218b: ; 1218b (4:618b)
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld a, [hl]
+	cp $5
+	jr nz, .asm_121aa
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hl]
+	cp $3
+	jr c, .asm_121a4
+	cp $6
+	jr c, .asm_121a7
+	ld a, $3
+	ret
+
+.asm_121a4
+	ld a, $1
+	ret
+
+.asm_121a7
+	ld a, $2
+	ret
+
+.asm_121aa
+	xor a
+	ret
+
+Function121ac: ; 121ac (4:61ac)
+	ld a, [wNamingScreenLastCharacter]
+	jp MailComposition_TryAddCharacter
+; 121b2 (4:61b2)
+
+Function121b2: ; unreferenced
+	ld a, [wNamingScreenCurrNameLength]
+	and a
+	ret z
+	cp $11
+	jr nz, .asm_121c3
+	push hl
+	ld hl, wNamingScreenCurrNameLength
+rept 2
+	dec [hl]
+endr
+	jr .asm_121c8
+
+.asm_121c3
+	push hl
+	ld hl, wNamingScreenCurrNameLength
+	dec [hl]
+
+.asm_121c8
+	call NamingScreen_GetTextCursorPosition
+	ld c, [hl]
+	pop hl
+.asm_121cd
+	ld a, [hli]
+	cp $ff
+	jp z, NamingScreen_AdvanceCursor_CheckEndOfString
+	cp c
+	jr z, .asm_121d9
+	inc hl
+	jr .asm_121cd
+
+.asm_121d9
+	ld a, [hl]
+	jp NamingScreen_LoadNextCharacter
+; 121dd
+
+MailEntry_Uppercase: ; 122dd
+	db "A B C D E F G H I J"
+	db "K L M N O P Q R S T"
+	db "U V W X Y Z   , ? !"
+	db "1 2 3 4 5 6 7 8 9 0"
+	db "<PK> <MN> <PO> <KE> é ♂ ♀ ¥ … ×"
+	db "lower  DEL   END   "
+; 1224f
+
+MailEntry_Lowercase: ; 1224f
+	db "a b c d e f g h i j"
+	db "k l m n o p q r s t"
+	db "u v w x y z   . - /"
+	db "'d 'l 'm 'r 's 't 'v & ( )"
+	db "<``> <''> [ ] ' : ;      "
+	db "UPPER  DEL   END   "
+; 122c1
diff --git a/engine/sprite_anims.asm b/engine/sprite_anims.asm
index 827626114..6346ea8fe 100755
--- a/engine/sprite_anims.asm
+++ b/engine/sprite_anims.asm
@@ -218,7 +218,7 @@ DoAnimFrame: ; 8d24b
 	ret
 
 .five: ; 8d36c (23:536c)
-	callab Function11a3b
+	callab NamingScreen_AnimateCursor
 	ret
 
 .twelve: ; 8d373 (23:5373)
diff --git a/engine/trade/animation.asm b/engine/trade/animation.asm
index a084fc3be..31e46b2c7 100755
--- a/engine/trade/animation.asm
+++ b/engine/trade/animation.asm
@@ -3,12 +3,12 @@ TradeAnimation: ; 28f24
 	ld [wcf66], a
 	ld hl, wPlayerTrademonSenderName
 	ld de, wOTTrademonSenderName
-	call Function297ff
+	call LinkTradeAnim_LoadTradePlayerNames
 	ld hl, wPlayerTrademonSpecies
 	ld de, wOTTrademonSpecies
-	call Function29814
+	call LinkTradeAnim_LoadTradeMonSpecies
 	ld de, .data_28f3f
-	jr Function28fa1
+	jr RunTradeAnimSequence
 
 .data_28f3f
 	tradeanim_setup_givemon_scroll
@@ -54,12 +54,12 @@ TradeAnimationPlayer2: ; 28f63
 	ld [wcf66], a
 	ld hl, wOTTrademonSenderName
 	ld de, wPlayerTrademonSenderName
-	call Function297ff
+	call LinkTradeAnim_LoadTradePlayerNames
 	ld hl, wOTTrademonSpecies
 	ld de, wPlayerTrademonSpecies
-	call Function29814
+	call LinkTradeAnim_LoadTradeMonSpecies
 	ld de, .data_28f7e
-	jr Function28fa1
+	jr RunTradeAnimSequence
 
 .data_28f7e
 	tradeanim_ot_sends_text_2
@@ -99,7 +99,7 @@ TradeAnimationPlayer2: ; 28f63
 	tradeanim_scroll_out_right
 	tradeanim_end
 
-Function28fa1: ; 28fa1
+RunTradeAnimSequence: ; 28fa1
 	ld hl, wTradeAnimPointer
 	ld [hl], e
 	inc hl
@@ -116,7 +116,7 @@ Function28fa1: ; 28fa1
 	ld a, [hl]
 	push af
 	set 4, [hl]
-	call Function28fdb
+	call .TradeAnimLayout
 	ld a, [wcf66]
 	and a
 	jr nz, .anim_loop
@@ -134,7 +134,7 @@ Function28fa1: ; 28fa1
 	ret
 ; 28fdb
 
-Function28fdb: ; 28fdb
+.TradeAnimLayout: ; 28fdb
 	xor a
 	ld [wJumptableIndex], a
 	call ClearBGPalettes
@@ -145,7 +145,7 @@ Function28fdb: ; 28fdb
 	callab ClearSpriteAnims
 	ld a, [hCGB]
 	and a
-	jr z, .asm_2900b
+	jr z, .NotCGB
 	ld a, $1
 	ld [rVBK], a
 	ld hl, VTiles0
@@ -155,7 +155,7 @@ Function28fdb: ; 28fdb
 	ld a, $0
 	ld [rVBK], a
 
-.asm_2900b
+.NotCGB
 	hlbgcoord 0, 0
 	ld bc, sScratch - VBGMap0
 	ld a, " "
@@ -182,7 +182,7 @@ Function28fdb: ; 28fdb
 	ld [hWY], a
 	callba GetTrademonFrontpic
 	call EnableLCD
-	call Function2982b
+	call LoadTradeBallAndCableGFX
 	ld a, [wPlayerTrademonSpecies]
 	ld hl, wPlayerTrademonDVs
 	ld de, VTiles0
@@ -313,7 +313,7 @@ TradeAnim_End: ; 29123
 TradeAnim_TubeToOT1: ; 29129
 	ld a, $ed
 	call Function292f6
-	ld a, [wc74c]
+	ld a, [wLinkTradeSendmonSpecies]
 	ld [wd265], a
 	xor a
 	depixel 5, 11, 4, 0
@@ -323,7 +323,7 @@ TradeAnim_TubeToOT1: ; 29129
 TradeAnim_TubeToPlayer1: ; 2913c
 	ld a, $ee
 	call Function292f6
-	ld a, [wc74d]
+	ld a, [wLinkTradeGetmonSpecies]
 	ld [wd265], a
 	ld a, $2
 	depixel 9, 18, 4, 4
@@ -350,7 +350,7 @@ Function2914e: ; 2914e
 	ld a, $70
 	ld [hWY], a
 	call EnableLCD
-	call Function2985a
+	call LoadTradeBubbleGFX
 	pop de
 	ld a, SPRITE_ANIM_INDEX_11
 	call _InitSpriteAnimStruct
@@ -476,7 +476,7 @@ TradeAnim_TubeToPlayer8: ; 29229
 	ld a, $90
 	ld [hWY], a
 	call EnableLCD
-	call Function2982b
+	call LoadTradeBallAndCableGFX
 	call WaitBGMap
 	call Function297ed
 	call TradeAnim_Next
@@ -1376,17 +1376,17 @@ Function297ed: ; 297ed
 	ld a, [hSGB]
 	and a
 	ld a, %11100100 ; 3,2,1,0
-	jr z, .asm_297f6
+	jr z, .not_sgb
 	ld a, $f0
 
-.asm_297f6
+.not_sgb
 	call DmgToCgbObjPal0
 	ld a, %11100100 ; 3,2,1,0
 	call DmgToCgbBGPals
 	ret
 ; 297ff
 
-Function297ff: ; 297ff
+LinkTradeAnim_LoadTradePlayerNames: ; 297ff
 	push de
 	ld de, wLinkPlayer1Name
 	ld bc, NAME_LENGTH
@@ -1398,11 +1398,11 @@ Function297ff: ; 297ff
 	ret
 ; 29814
 
-Function29814: ; 29814
+LinkTradeAnim_LoadTradeMonSpecies: ; 29814
 	ld a, [hl]
-	ld [wc74c], a
+	ld [wLinkTradeSendmonSpecies], a
 	ld a, [de]
-	ld [wc74d], a
+	ld [wLinkTradeGetmonSpecies], a
 	ret
 ; 2981d
 
@@ -1416,7 +1416,7 @@ Function2981d: ; 2981d
 	ret
 ; 2982b
 
-Function2982b: ; 2982b
+LoadTradeBallAndCableGFX: ; 2982b
 	call DelayFrame
 	ld de, TradeBallGFX
 	ld hl, VTiles0 tile $62
@@ -1431,13 +1431,13 @@ Function2982b: ; 2982b
 	lb bc, BANK(TradeCableGFX), $4
 	call Request2bpp
 	xor a
-	ld hl, wc300
+	ld hl, wSpriteAnimDict
 	ld [hli], a
 	ld [hl], $62
 	ret
 ; 2985a
 
-Function2985a: ; 2985a
+LoadTradeBubbleGFX: ; 2985a
 	call DelayFrame
 	ld e, $3
 	callab Function8e83f
@@ -1446,7 +1446,7 @@ Function2985a: ; 2985a
 	lb bc, BANK(TradeBubbleGFX), $4
 	call Request2bpp
 	xor a
-	ld hl, wc300
+	ld hl, wSpriteAnimDict
 	ld [hli], a
 	ld [hl], $62
 	ret
diff --git a/macros/wram.asm b/macros/wram.asm
index 8e5e55cba..f9e559927 100755
--- a/macros/wram.asm
+++ b/macros/wram.asm
@@ -210,3 +210,15 @@ hall_of_fame: MACRO
 \1Mon6:: hof_mon \1Mon6
 \1End:: ds 1
 ENDM
+
+trademon: MACRO
+\1Species:: ds 1 ; wc6d0 | wc702
+\1SpeciesName:: ds PKMN_NAME_LENGTH ; wc6d1 | wc703
+\1Nickname:: ds PKMN_NAME_LENGTH ; wc6dc | wc70e
+\1SenderName:: ds NAME_LENGTH ; wc6e7 | wc719
+\1OTName:: ds NAME_LENGTH ; wc6f2 | wc724
+\1DVs:: ds 2 ; wc6fd | wc72f
+\1ID:: ds 2 ; wc6ff | wc731
+\1CaughtData:: ds 1 ; wc701 | wc733
+\1End::
+ENDM
diff --git a/main.asm b/main.asm
index 00cf73453..3447ca781 100644
--- a/main.asm
+++ b/main.asm
@@ -2525,7 +2525,7 @@ UsedSurfScript: ; c986
 	waitbutton
 	closetext
 
-	callasm Functionc9a2 ; empty function
+	callasm .empty_fn ; empty function
 
 	copybytetovar Buffer2
 	writevarcode VAR_MOVEMENT
@@ -2537,7 +2537,7 @@ UsedSurfScript: ; c986
 	applymovement PLAYER, MovementBuffer ; PLAYER, MovementBuffer
 	end
 
-Functionc9a2: ; c9a2
+.empty_fn: ; c9a2
 	callba MobileFn_1060bb ; empty
 	ret
 
@@ -5124,7 +5124,6 @@ INCLUDE "engine/pack.asm"
 INCLUDE "engine/time.asm"
 INCLUDE "engine/tmhm.asm"
 INCLUDE "engine/namingscreen.asm"
-INCLUDE "engine/compose_mail.asm"
 
 Script_AbortBugContest: ; 0x122c1
 	checkflag ENGINE_BUG_CONTEST_TIMER
@@ -5414,7 +5413,7 @@ Pokepic:: ; 244e3
 	call MenuBox
 	call UpdateSprites
 	call ApplyTilemap
-	ld b, SCGB_12
+	ld b, SCGB_POKEPIC
 	call GetSGBLayout
 	xor a
 	ld [hBGMapMode], a
diff --git a/maps/EcruteakPokeCenter1F.asm b/maps/EcruteakPokeCenter1F.asm
index cc116f862..841e27079 100644
--- a/maps/EcruteakPokeCenter1F.asm
+++ b/maps/EcruteakPokeCenter1F.asm
@@ -10,26 +10,26 @@ EcruteakPokeCenter1F_MapScriptHeader:
 	db 2
 
 	; triggers
-	dw UnknownScript_0x98e5f, 0
-	dw UnknownScript_0x98e63, 0
+	maptrigger .Trigger0
+	maptrigger .Trigger1
 
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x98e5f:
-	priorityjump UnknownScript_0x98e64
+.Trigger0:
+	priorityjump .BillActivatesTimeCapsule
 	end
 
-UnknownScript_0x98e63:
+.Trigger1:
 	end
 
-UnknownScript_0x98e64:
+.BillActivatesTimeCapsule:
 	pause 30
 	playsound SFX_EXIT_BUILDING
 	appear ECRUTEAKPOKECENTER1F_BILL
 	waitsfx
-	applymovement ECRUTEAKPOKECENTER1F_BILL, MovementData_0x98ec5
-	applymovement PLAYER, MovementData_0x98ed4
+	applymovement ECRUTEAKPOKECENTER1F_BILL, EcruteakPokeCenter1FBillMovement1
+	applymovement PLAYER, EcruteakPokeCenter1FPlayerMovement1
 	spriteface ECRUTEAKPOKECENTER1F_NURSE, UP
 	pause 10
 	spriteface ECRUTEAKPOKECENTER1F_NURSE, DOWN
@@ -41,16 +41,16 @@ UnknownScript_0x98e64:
 	spriteface ECRUTEAKPOKECENTER1F_BILL, DOWN
 	pause 10
 	opentext
-	writetext UnknownText_0x98ed8
+	writetext EcruteakPokeCenter1F_BillText1
 	buttonsound
-	jump UnknownScript_0x98e95
+	jump .PointlessJump
 
-UnknownScript_0x98e95:
-	writetext UnknownText_0x98f22
+.PointlessJump
+	writetext EcruteakPokeCenter1F_BillText2
 	waitbutton
 	closetext
 	spriteface PLAYER, DOWN
-	applymovement ECRUTEAKPOKECENTER1F_BILL, MovementData_0x98ece
+	applymovement ECRUTEAKPOKECENTER1F_BILL, EcruteakPokeCenter1FBillMovement2
 	playsound SFX_EXIT_BUILDING
 	disappear ECRUTEAKPOKECENTER1F_BILL
 	clearevent EVENT_MET_BILL
@@ -59,24 +59,24 @@ UnknownScript_0x98e95:
 	waitsfx
 	end
 
-NurseScript_0x98eb0:
+EcruteakPokeCenter1FNurseScript:
 	jumpstd pokecenternurse
 
-PokefanMScript_0x98eb3:
+EcruteakPokeCenter1FPokefanMScript:
 	special Mobile_DummyReturnFalse
 	iftrue .mobile
-	jumptextfaceplayer UnknownText_0x99155
+	jumptextfaceplayer EcruteakPokeCenter1FPokefanMText
 
 .mobile:
-	jumptextfaceplayer UnknownText_0x991aa
+	jumptextfaceplayer EcruteakPokeCenter1FPokefanMTextMobile
 
-CooltrainerFScript_0x98ebf:
-	jumptextfaceplayer UnknownText_0x99240
+EcruteakPokeCenter1FCooltrainerFScript:
+	jumptextfaceplayer EcruteakPokeCenter1FCooltrainerFText
 
-GymGuyScript_0x98ec2:
-	jumptextfaceplayer UnknownText_0x99286
+EcruteakPokeCenter1FGymGuyScript:
+	jumptextfaceplayer EcruteakPokeCenter1FGymGuyText
 
-MovementData_0x98ec5:
+EcruteakPokeCenter1FBillMovement1:
 	step_up
 	step_up
 	step_up
@@ -87,7 +87,7 @@ MovementData_0x98ec5:
 	turn_head_up
 	step_end
 
-MovementData_0x98ece:
+EcruteakPokeCenter1FBillMovement2:
 	step_right
 	step_down
 	step_down
@@ -95,13 +95,13 @@ MovementData_0x98ece:
 	step_down
 	step_end
 
-MovementData_0x98ed4:
+EcruteakPokeCenter1FPlayerMovement1:
 	step_up
 	step_up
 	step_up
 	step_end
 
-UnknownText_0x98ed8:
+EcruteakPokeCenter1F_BillText1:
 	text "Hi, I'm BILL. And"
 	line "who are you?"
 
@@ -110,7 +110,7 @@ UnknownText_0x98ed8:
 	cont "right time."
 	done
 
-UnknownText_0x98f22:
+EcruteakPokeCenter1F_BillText2:
 	text "I just finished"
 	line "adjustments on my"
 	cont "TIME CAPSULE."
@@ -164,7 +164,7 @@ UnknownText_0x98f22:
 	para "Buh-bye!"
 	done
 
-UnknownText_0x99155:
+EcruteakPokeCenter1FPokefanMText:
 	text "The way the KIMONO"
 	line "GIRLS dance is"
 
@@ -173,7 +173,7 @@ UnknownText_0x99155:
 	cont "use their #MON."
 	done
 
-UnknownText_0x991aa:
+EcruteakPokeCenter1FPokefanMTextMobile:
 	text "You must be hoping"
 	line "to battle more"
 
@@ -189,7 +189,7 @@ UnknownText_0x991aa:
 	line "OLIVINE CITY."
 	done
 
-UnknownText_0x99240:
+EcruteakPokeCenter1FCooltrainerFText:
 	text "MORTY, the GYM"
 	line "LEADER, is soooo"
 	cont "cool."
@@ -198,7 +198,7 @@ UnknownText_0x99240:
 	line "really tough too."
 	done
 
-UnknownText_0x99286:
+EcruteakPokeCenter1FGymGuyText:
 	text "LAKE OF RAGE…"
 
 	para "The appearance of"
@@ -226,8 +226,8 @@ EcruteakPokeCenter1F_MapEventHeader:
 
 .PersonEvents:
 	db 5
-	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, NurseScript_0x98eb0, -1
-	person_event SPRITE_POKEFAN_M, 6, 7, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, PokefanMScript_0x98eb3, -1
-	person_event SPRITE_COOLTRAINER_F, 4, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, CooltrainerFScript_0x98ebf, -1
-	person_event SPRITE_GYM_GUY, 1, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, GymGuyScript_0x98ec2, -1
+	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, EcruteakPokeCenter1FNurseScript, -1
+	person_event SPRITE_POKEFAN_M, 6, 7, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, EcruteakPokeCenter1FPokefanMScript, -1
+	person_event SPRITE_COOLTRAINER_F, 4, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, EcruteakPokeCenter1FCooltrainerFScript, -1
+	person_event SPRITE_GYM_GUY, 1, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, PERSONTYPE_SCRIPT, 0, EcruteakPokeCenter1FGymGuyScript, -1
 	person_event SPRITE_BILL, 7, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, PERSONTYPE_SCRIPT, 0, ObjectEvent, EVENT_ECRUTEAK_POKE_CENTER_BILL
diff --git a/misc/mobile_40.asm b/misc/mobile_40.asm
index 70b069881..ae77da940 100644
--- a/misc/mobile_40.asm
+++ b/misc/mobile_40.asm
@@ -2599,7 +2599,7 @@ Function10107d: ; 10107d
 	ld bc, NAME_LENGTH
 	call .CopyAllFromOT
 	ld hl, OTPartyMon1Species
-	ld de, wc68a + 15
+	ld de, $c699
 	ld bc, PARTYMON_STRUCT_LENGTH
 	call .CopyAllFromOT
 	ld a, $50
diff --git a/predef/cgb.asm b/predef/cgb.asm
index 9a24dfce1..c3cc3886e 100644
--- a/predef/cgb.asm
+++ b/predef/cgb.asm
@@ -51,7 +51,7 @@ Predef_LoadSGBLayoutCGB: ; 8d59
 	dw _CGB0f
 	dw _CGB10
 	dw _CGB11
-	dw _CGB12
+	dw _CGB_Pokepic
 	dw _CGB13
 	dw _CGB_PackPals
 	dw _CGB_TrainerCard
@@ -948,7 +948,7 @@ _CGB_PackPals: ; 93d3
 	RGB 00, 00, 00
 ; 9499
 
-_CGB12: ; 9499
+_CGB_Pokepic: ; 9499
 	call _CGB_MapPals
 	ld de, SCREEN_WIDTH
 	hlcoord 0, 0, AttrMap
diff --git a/wram.asm b/wram.asm
index 129dc3e33..74c0f223d 100644
--- a/wram.asm
+++ b/wram.asm
@@ -429,7 +429,6 @@ AttackMissed:: ; c667
 ; nonzero for a miss
 	ds 1
 
-wc668::
 PlayerSubStatus1:: ; c668
 ; bit
 ; 7 attract
@@ -527,7 +526,6 @@ EnemyToxicCount:: ; c67c
 	ds 1
 EnemyDisableCount:: ; c67d
 	ds 1
-wc67e::
 EnemyEncoreCount:: ; c67e
 	ds 1
 EnemyPerishCount:: ; c67f
@@ -546,7 +544,6 @@ wBattleReward:: ds 3
 wBattleAnimParam::
 wKickCounter::
 wPresentPower:: ds 1
-wc68a::
 BattleScriptBuffer:: ; c68a
 	ds 40
 
@@ -574,102 +571,6 @@ PlayerSpdLevel:: ; c6ce
 PlayerSAtkLevel:: ; c6cf
 	ds 1
 
-trademon: MACRO
-\1Species:: ds 1 ; wc6d0 | wDummyGameNumberTriesRemaining
-\1SpeciesName:: ds PKMN_NAME_LENGTH ; wc6d1 | wDummyGameLastMatches
-\1Nickname:: ds PKMN_NAME_LENGTH ; wc6dc | wc70e
-\1SenderName:: ds NAME_LENGTH ; wc6e7 | wc719
-\1OTName:: ds NAME_LENGTH ; wc6f2 | wc724
-\1DVs:: ds 2 ; wc6fd | wc72f
-\1ID:: ds 2 ; wc6ff | wc731
-\1CaughtData:: ds 1 ; wc701 | wc733
-\1End::
-ENDM
-wTrademons::
-wPlayerTrademon:: trademon wPlayerTrademon
-wOTTrademon::     trademon wOTTrademon
-wTrademonsEnd::
-	ds wTrademons - @
-
-; Slot Machine
-wSlots::
-slot_reel: MACRO
-\1ReelAction::   db
-\1TilemapAddr::  dw
-\1Position::     db
-\1SpinDistance:: db
-\1SpinRate::     db
-\1OAMAddr::      dw
-\1XCoord::       db
-\1Slot09::       ds 1
-\1Slot0a::       ds 1
-\1Slot0b::       ds 1
-\1Slot0c::       ds 1
-\1Slot0d::       ds 1
-\1Slot0e::       ds 1
-\1Slot0f::       ds 1
-endm
-; c6d0
-wReel1:: slot_reel wReel1
-wReel2:: slot_reel wReel2
-wReel3:: slot_reel wReel3
-; c700
-wReel1Stopped:: ds 3
-wReel2Stopped:: ds 3
-wReel3Stopped:: ds 3
-wSlotBias:: ds 1
-wSlotBet:: ds 1
-wFirstTwoReelsMatching:: ds 1
-wFirstTwoReelsMatchingSevens:: ds 1
-wSlotMatched:: ds 1
-wCurrReelStopped:: ds 3
-wPayout:: ds 2
-wCurrReelXCoord:: ds 1
-wCurrReelYCoord:: ds 1
-	ds 2
-wSlotBuildingMatch:: ds 1
-wSlotsDataEnd::
-	ds 28
-wSlotsEnd::
-	ds wSlots - @
-
-; Card Flip
-; c6d0
-wCardFlip::
-wDeck:: ds 24
-wDeckEnd::
-; c6e8
-wCardFlipNumCardsPlayed:: ds 1
-wCardFlipFaceUpCard:: ds 1
-wDiscardPile:: ds 24
-wDiscardPileEnd::
-wCardFlipEnd::
-	ds wCardFlip - @
-
-; Dummy Game
-; c6d0
-wDummyGame::
-wDummyGameCards:: ds 9 * 5
-wDummyGameCardsEnd::
-wDummyGameLastCardPicked:: ds 1 ; c6fd
-wDummyGameCard1:: ds 1 ; c6fe
-wDummyGameCard2:: ds 1 ; c6ff
-wDummyGameCard1Location:: ds 1 ; c700
-wDummyGameCard2Location:: ds 1 ; c701
-wDummyGameNumberTriesRemaining:: ds 1 ; c702
-wDummyGameLastMatches:: ds 5 ; c703
-wDummyGameCounter:: ds 1 ; c708
-wDummyGameNumCardsMatched:: ds 1 ; c709
-wDummyGameEnd::
-	ds wDummyGame - @
-; Unown Puzzle
-wUnownPuzzle::
-wPuzzlePieces::
-	ds 6 * 6
-wUnownPuzzleEnd::
-	ds wUnownPuzzle - @
-
-; Battle RAM
 wc6d0::
 PlayerSDefLevel:: ; c6d0
 	ds 1
@@ -681,9 +582,9 @@ PlayerEvaLevel:: ; c6d2
 	ds 1
 ; c6d3
 wc6d3:: ds 1
-wc6d4::
 PlayerStatLevelsEnd::
 
+wc6d4::
 EnemyStatLevels:: ; c6d4
 ; 07 neutral
 EnemyAtkLevel:: ; c6d4
@@ -892,24 +793,26 @@ wc734::
 BattleEnded:: ; c734
 	ds 1
 
-wWildMonMoves::
-wc735:: ds 1
-wLinkPlayer1Name:: ds NAME_LENGTH
-wLinkPlayer2Name:: ds NAME_LENGTH
-	ds wLinkPlayer1Name - @
-wc736:: ds 3
+wWildMonMoves:: ds NUM_MOVES
 wWildMonPP:: ds NUM_MOVES
 wAmuletCoin:: ds 1
-wc73e:: ds 1
+wSomeoneIsRampaging:: ds 1
 wPlayerJustGotFrozen:: ds 1
 wEnemyJustGotFrozen:: ds 1
-wc741::
 wBattleEnd::
-; c741
+; Battle RAM
 
-	ds 11
-wc74c:: ds 1
-wc74d:: ds 1
+; c741
+	ds wc6d0 - @
+wTrademons::
+wPlayerTrademon:: trademon wPlayerTrademon
+wOTTrademon::     trademon wOTTrademon
+wTrademonsEnd::
+	ds 2
+wLinkPlayer1Name:: ds NAME_LENGTH
+wLinkPlayer2Name:: ds NAME_LENGTH
+wLinkTradeSendmonSpecies:: ds 1
+wLinkTradeGetmonSpecies:: ds 1
 wc74e:: ds 107
 wc7b9:: ds 1
 wc7ba:: ds 1
@@ -917,6 +820,94 @@ wc7bb:: ds 2
 wc7bd::
 	ds wc6d0 - @
 
+wNamingScreenDestinationPointer:: ds 2 ; c6d0
+wNamingScreenCurrNameLength:: ds 1 ; c6d2
+wNamingScreenMaxNameLength:: ds 1 ; c6d3
+wNamingScreenType:: ds 1 ; c6d4
+wNamingScreenCursorObjectPointer:: ds 2 ; c6d5
+wNamingScreenLastCharacter:: ds 1 ; c6d7
+wNamingScreenStringEntryCoord:: ds 2 ; c6d8
+	ds wc6d0 - @
+
+; Slot Machine
+wSlots::
+slot_reel: MACRO
+\1ReelAction::   db
+\1TilemapAddr::  dw
+\1Position::     db
+\1SpinDistance:: db
+\1SpinRate::     db
+\1OAMAddr::      dw
+\1XCoord::       db
+\1Slot09::       ds 1
+\1Slot0a::       ds 1
+\1Slot0b::       ds 1
+\1Slot0c::       ds 1
+\1Slot0d::       ds 1
+\1Slot0e::       ds 1
+\1Slot0f::       ds 1
+endm
+; c6d0
+wReel1:: slot_reel wReel1
+wReel2:: slot_reel wReel2
+wReel3:: slot_reel wReel3
+; c700
+wReel1Stopped:: ds 3
+wReel2Stopped:: ds 3
+wReel3Stopped:: ds 3
+wSlotBias:: ds 1
+wSlotBet:: ds 1
+wFirstTwoReelsMatching:: ds 1
+wFirstTwoReelsMatchingSevens:: ds 1
+wSlotMatched:: ds 1
+wCurrReelStopped:: ds 3
+wPayout:: ds 2
+wCurrReelXCoord:: ds 1
+wCurrReelYCoord:: ds 1
+	ds 2
+wSlotBuildingMatch:: ds 1
+wSlotsDataEnd::
+	ds 28
+wSlotsEnd::
+	ds wSlots - @
+
+; Card Flip
+; c6d0
+wCardFlip::
+wDeck:: ds 24
+wDeckEnd::
+; c6e8
+wCardFlipNumCardsPlayed:: ds 1
+wCardFlipFaceUpCard:: ds 1
+wDiscardPile:: ds 24
+wDiscardPileEnd::
+wCardFlipEnd::
+	ds wCardFlip - @
+
+; Dummy Game
+; c6d0
+wDummyGame::
+wDummyGameCards:: ds 9 * 5
+wDummyGameCardsEnd::
+wDummyGameLastCardPicked:: ds 1 ; c6fd
+wDummyGameCard1:: ds 1 ; c6fe
+wDummyGameCard2:: ds 1 ; c6ff
+wDummyGameCard1Location:: ds 1 ; c700
+wDummyGameCard2Location:: ds 1 ; c701
+wDummyGameNumberTriesRemaining:: ds 1 ; c702
+wDummyGameLastMatches:: ds 5 ; c703
+wDummyGameCounter:: ds 1 ; c708
+wDummyGameNumCardsMatched:: ds 1 ; c709
+wDummyGameEnd::
+	ds wDummyGame - @
+; Unown Puzzle
+wUnownPuzzle::
+wPuzzlePieces::
+	ds 6 * 6
+wUnownPuzzleEnd::
+
+	ds wc6d0 - @
+
 wPokedexDataStart::
 wPokedexOrder:: ds NUM_POKEMON +- 1
 wPokedexOrderEnd:: ds 6

From f7ee74c3b8fdd57c92844f3f9d7a89c0f9770d6d Mon Sep 17 00:00:00 2001
From: PikalaxALT <PikalaxALT@gmail.com>
Date: Sat, 9 Jan 2016 19:34:14 -0500
Subject: [PATCH 02/13] Finish labels in engine/namingscreen.asm

---
 battle/effect_commands.asm | 28 +++++++-------
 engine/namingscreen.asm    | 78 +++++++++++++++++++-------------------
 engine/sprite_anims.asm    |  2 +-
 home/battle.asm            | 26 ++++++-------
 macros/wram.asm            | 10 +++++
 wram.asm                   |  4 +-
 6 files changed, 79 insertions(+), 69 deletions(-)

diff --git a/battle/effect_commands.asm b/battle/effect_commands.asm
index ca1088a0f..b2712937f 100644
--- a/battle/effect_commands.asm
+++ b/battle/effect_commands.asm
@@ -2799,7 +2799,7 @@ PlayerAttackDamage: ; 352e2
 
 	call ResetDamage
 
-	ld hl, wPlayerMoveStruct + MOVE_POWER
+	ld hl, wPlayerMoveStructPower
 	ld a, [hli]
 	and a
 	ld d, a
@@ -2946,7 +2946,7 @@ GetDamageStats: ; 3537e
 	ld a, [hBattleTurn]
 	and a
 	jr nz, .enemy
-	ld a, [wPlayerMoveStruct + MOVE_TYPE]
+	ld a, [wPlayerMoveStructType]
 	cp SPECIAL
 ; special
 	ld a, [PlayerSAtkLevel]
@@ -2960,7 +2960,7 @@ GetDamageStats: ; 3537e
 	jr .end
 
 .enemy
-	ld a, [wEnemyMoveStruct + MOVE_TYPE]
+	ld a, [wEnemyMoveStructType]
 	cp SPECIAL
 ; special
 	ld a, [EnemySAtkLevel]
@@ -3063,8 +3063,8 @@ EnemyAttackDamage: ; 353f6
 	call ResetDamage
 
 ; No damage dealt with 0 power.
-	ld hl, wEnemyMoveStruct + MOVE_POWER
-	ld a, [hli] ; hl = wEnemyMoveStruct + MOVE_TYPE
+	ld hl, wEnemyMoveStructPower
+	ld a, [hli] ; hl = wEnemyMoveStructType
 	ld d, a
 	and a
 	ret z
@@ -3211,7 +3211,7 @@ BattleCommand_BeatUp: ; 35461
 	ld a, [hl]
 	ld e, a
 	pop bc
-	ld a, [wPlayerMoveStruct + MOVE_POWER]
+	ld a, [wPlayerMoveStructPower]
 	ld d, a
 	ret
 
@@ -3317,7 +3317,7 @@ BattleCommand_BeatUp: ; 35461
 	ld a, [hl]
 	ld e, a
 	pop bc
-	ld a, [wEnemyMoveStruct + MOVE_POWER]
+	ld a, [wEnemyMoveStructPower]
 	ld d, a
 	ret
 
@@ -3401,7 +3401,7 @@ endr
 	ld l, [hl]
 	ld h, a
 	call TruncateHL_BC
-	ld d, $28
+	ld d, 40
 	pop af
 	ld e, a
 	ret
@@ -3806,14 +3806,14 @@ BattleCommand_ConstantDamage: ; 35726
 	ld a, [hl]
 	jr nz, .notPlayersTurn
 
-	ld hl, wPlayerMoveStruct + MOVE_POWER
+	ld hl, wPlayerMoveStructPower
 	ld [hl], a
 	push hl
 	call PlayerAttackDamage
 	jr .notEnemysTurn
 
 .notPlayersTurn
-	ld hl, wEnemyMoveStruct + MOVE_POWER
+	ld hl, wEnemyMoveStructPower
 	ld [hl], a
 	push hl
 	call EnemyAttackDamage
@@ -6521,8 +6521,8 @@ BattleCommand_UnleashEnergy: ; 366e5
 	ld [de], a
 	inc de
 	ld [de], a
-	ld [wPlayerMoveStruct + MOVE_EFFECT], a
-	ld [wEnemyMoveStruct + MOVE_EFFECT], a
+	ld [wPlayerMoveStructEffect], a
+	ld [wEnemyMoveStructEffect], a
 	call BattleRandom
 	and 1
 	inc a
@@ -6752,7 +6752,7 @@ BattleCommand_ForceSwitch: ; 3680f
 	inc a
 	ld [wForcedSwitch], a
 	call SetBattleDraw
-	ld a, [wPlayerMoveStruct + MOVE_ANIM]
+	ld a, [wPlayerMoveStructAnimation]
 	jp .succeed
 
 .trainer
@@ -6845,7 +6845,7 @@ BattleCommand_ForceSwitch: ; 3680f
 	inc a
 	ld [wForcedSwitch], a
 	call SetBattleDraw
-	ld a, [wEnemyMoveStruct + MOVE_ANIM]
+	ld a, [wEnemyMoveStructAnimation]
 	jr .succeed
 
 .vs_trainer
diff --git a/engine/namingscreen.asm b/engine/namingscreen.asm
index 188665bc4..822fd2bce 100755
--- a/engine/namingscreen.asm
+++ b/engine/namingscreen.asm
@@ -1173,7 +1173,7 @@ endr
 	ret
 
 .a
-	call Function12185
+	call NamingScreen_PressedA_GetCursorCommand
 	cp $1
 	jr z, .select
 	cp $2
@@ -1181,7 +1181,7 @@ endr
 	cp $3
 	jr z, .finished
 	call NamingScreen_GetLastCharacter
-	call Function121ac
+	call MailComposition_TryAddLastCharacter
 	jr c, .start
 	ld hl, wNamingScreenCurrNameLength
 	ld a, [hl]
@@ -1242,8 +1242,8 @@ endr
 	ret
 
 ; called from engine/sprite_anims.asm
-Function120c1: ; 120c1 (4:60c1)
-	call Function1210c
+ComposeMail_AnimateCursor: ; 120c1 (4:60c1)
+	call .GetDPad
 	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld a, [hl]
@@ -1253,12 +1253,12 @@ Function120c1: ; 120c1 (4:60c1)
 	add hl, bc
 	ld [hl], e
 	cp $5
-	ld de, Unknown_120f8
+	ld de, .LetterEntries
 	ld a, 0
-	jr nz, .asm_120df
-	ld de, Unknown_12102
+	jr nz, .got_pointer
+	ld de, .CaseDelEnd
 	ld a, 1
-.asm_120df
+.got_pointer
 	ld hl, SPRITEANIMSTRUCT_0E
 	add hl, bc
 	add [hl]
@@ -1278,14 +1278,14 @@ Function120c1: ; 120c1 (4:60c1)
 
 ; 120f8 (4:60f8)
 
-Unknown_120f8: ; 120f8
+.LetterEntries: ; 120f8
 	db $00, $10, $20, $30, $40, $50, $60, $70, $80, $90
 
-Unknown_12102: ; 12102
+.CaseDelEnd: ; 12102
 	db $00, $00, $00, $30, $30, $30, $60, $60, $60, $60
 ; 1210c
 
-Function1210c: ; 1210c (4:610c)
+.GetDPad: ; 1210c (4:610c)
 	ld hl, hJoyLast
 	ld a, [hl]
 	and D_UP
@@ -1302,26 +1302,26 @@ Function1210c: ; 1210c (4:610c)
 	ret
 
 .right
-	call Function1218b
+	call ComposeMail_GetCursorPosition
 	and a
-	jr nz, .asm_12138
+	jr nz, .case_del_done_right
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
 	cp $9
-	jr nc, .asm_12135
+	jr nc, .wrap_around_letter_right
 	inc [hl]
 	ret
 
-.asm_12135
+.wrap_around_letter_right
 	ld [hl], $0
 	ret
 
-.asm_12138
+.case_del_done_right
 	cp $3
-	jr nz, .asm_1213d
+	jr nz, .wrap_around_command_right
 	xor a
-.asm_1213d
+.wrap_around_command_right
 	ld e, a
 	add a
 	add e
@@ -1331,26 +1331,26 @@ Function1210c: ; 1210c (4:610c)
 	ret
 
 .left
-	call Function1218b
+	call ComposeMail_GetCursorPosition
 	and a
-	jr nz, .asm_12159
+	jr nz, .caps_del_done_left
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_12156
+	jr z, .wrap_around_letter_left
 	dec [hl]
 	ret
 
-.asm_12156
+.wrap_around_letter_left
 	ld [hl], $9
 	ret
 
-.asm_12159
+.caps_del_done_left
 	cp $1
-	jr nz, .asm_1215f
+	jr nz, .wrap_around_command_left
 	ld a, $4
-.asm_1215f
+.wrap_around_command_left
 rept 2
 	dec a
 endr
@@ -1367,11 +1367,11 @@ endr
 	add hl, bc
 	ld a, [hl]
 	cp $5
-	jr nc, .asm_12175
+	jr nc, .wrap_around_down
 	inc [hl]
 	ret
 
-.asm_12175
+.wrap_around_down
 	ld [hl], $0
 	ret
 
@@ -1380,54 +1380,54 @@ endr
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_12182
+	jr z, .wrap_around_up
 	dec [hl]
 	ret
 
-.asm_12182
+.wrap_around_up
 	ld [hl], $5
 	ret
 
-Function12185: ; 12185 (4:6185)
+NamingScreen_PressedA_GetCursorCommand: ; 12185 (4:6185)
 	ld hl, wNamingScreenCursorObjectPointer
 	ld c, [hl]
 	inc hl
 	ld b, [hl]
 
-Function1218b: ; 1218b (4:618b)
+ComposeMail_GetCursorPosition: ; 1218b (4:618b)
 	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld a, [hl]
 	cp $5
-	jr nz, .asm_121aa
+	jr nz, .letter
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
 	cp $3
-	jr c, .asm_121a4
+	jr c, .case
 	cp $6
-	jr c, .asm_121a7
+	jr c, .del
 	ld a, $3
 	ret
 
-.asm_121a4
+.case
 	ld a, $1
 	ret
 
-.asm_121a7
+.del
 	ld a, $2
 	ret
 
-.asm_121aa
+.letter
 	xor a
 	ret
 
-Function121ac: ; 121ac (4:61ac)
+MailComposition_TryAddLastCharacter: ; 121ac (4:61ac)
 	ld a, [wNamingScreenLastCharacter]
 	jp MailComposition_TryAddCharacter
 ; 121b2 (4:61b2)
 
-Function121b2: ; unreferenced
+; XXX
 	ld a, [wNamingScreenCurrNameLength]
 	and a
 	ret z
diff --git a/engine/sprite_anims.asm b/engine/sprite_anims.asm
index 6346ea8fe..f0a915312 100755
--- a/engine/sprite_anims.asm
+++ b/engine/sprite_anims.asm
@@ -222,7 +222,7 @@ DoAnimFrame: ; 8d24b
 	ret
 
 .twelve: ; 8d373 (23:5373)
-	callab Function120c1
+	callab ComposeMail_AnimateCursor
 	ret
 
 .GameFreakLogo: ; 8d37a (23:537a)
diff --git a/home/battle.asm b/home/battle.asm
index 4786cc4d3..3fd593630 100644
--- a/home/battle.asm
+++ b/home/battle.asm
@@ -218,19 +218,19 @@ endr
 .lastmoveopp    db ENEMY_LAST_MOVE,       PLAYER_LAST_MOVE
 
 .vars
-	dw PlayerSubStatus1,     EnemySubStatus1
-	dw PlayerSubStatus2,     EnemySubStatus2
-	dw PlayerSubStatus3,     EnemySubStatus3
-	dw PlayerSubStatus4,     EnemySubStatus4
-	dw PlayerSubStatus5,     EnemySubStatus5
-	dw BattleMonStatus,      EnemyMonStatus
-	dw wPlayerMoveStruct + MOVE_ANIM,   wEnemyMoveStruct + MOVE_ANIM
-	dw wPlayerMoveStruct + MOVE_EFFECT, wEnemyMoveStruct + MOVE_EFFECT
-	dw wPlayerMoveStruct + MOVE_POWER,  wEnemyMoveStruct + MOVE_POWER
-	dw wPlayerMoveStruct + MOVE_TYPE,   wEnemyMoveStruct + MOVE_TYPE
-	dw CurPlayerMove,        CurEnemyMove
-	dw LastEnemyCounterMove, LastPlayerCounterMove
-	dw LastPlayerMove,       LastEnemyMove
+	dw PlayerSubStatus1,             EnemySubStatus1
+	dw PlayerSubStatus2,             EnemySubStatus2
+	dw PlayerSubStatus3,             EnemySubStatus3
+	dw PlayerSubStatus4,             EnemySubStatus4
+	dw PlayerSubStatus5,             EnemySubStatus5
+	dw BattleMonStatus,              EnemyMonStatus
+	dw wPlayerMoveStructAnimation,   wEnemyMoveStructAnimation
+	dw wPlayerMoveStructEffect,      wEnemyMoveStructEffect
+	dw wPlayerMoveStructPower,       wEnemyMoveStructPower
+	dw wPlayerMoveStructType,        wEnemyMoveStructType
+	dw CurPlayerMove,                CurEnemyMove
+	dw LastEnemyCounterMove,         LastPlayerCounterMove
+	dw LastPlayerMove,               LastEnemyMove
 ; 3a90
 
 
diff --git a/macros/wram.asm b/macros/wram.asm
index f9e559927..4e43bfddf 100755
--- a/macros/wram.asm
+++ b/macros/wram.asm
@@ -222,3 +222,13 @@ trademon: MACRO
 \1CaughtData:: ds 1 ; wc701 | wc733
 \1End::
 ENDM
+
+move_struct: MACRO
+\1Animation:: ds 1
+\1Effect:: ds 1
+\1Power:: ds 1
+\1Type:: ds 1
+\1Accuracy:: ds 1
+\1PP:: ds 1
+\1EffectChance:: ds 1
+endm
diff --git a/wram.asm b/wram.asm
index 74c0f223d..255495faf 100644
--- a/wram.asm
+++ b/wram.asm
@@ -374,9 +374,9 @@ wMisc:: ; ds (SCREEN_WIDTH + 4) * (SCREEN_HEIGHT + 2)
 wBattle::
 wc608::
 
-wEnemyMoveStruct::  ds MOVE_LENGTH ; c608
+wEnemyMoveStruct::  move_struct wEnemyMoveStruct
 wc60f::
-wPlayerMoveStruct:: ds MOVE_LENGTH ; c60f
+wPlayerMoveStruct:: move_struct wPlayerMoveStruct
 wc616::
 	ds -4
 wc612:: ds 4

From 8360a1a2e81d3c3d6c2529c9a6834b011fd66f36 Mon Sep 17 00:00:00 2001
From: PikalaxALT <PikalaxALT@gmail.com>
Date: Sat, 9 Jan 2016 23:41:03 -0500
Subject: [PATCH 03/13] Pokegear functions and RAM labels

---
 constants/sprite_constants.asm |   4 +-
 engine/link.asm                |   2 +-
 engine/namingscreen.asm        |  72 ++-
 engine/phone.asm               |   7 +-
 engine/pokegear.asm            | 955 ++++++++++++++++++---------------
 engine/town_map.asm            | 171 ------
 event/field_moves.asm          |   4 +-
 macros/wram.asm                |  17 +
 text/common_1.asm              |  48 +-
 wram.asm                       |  52 +-
 10 files changed, 667 insertions(+), 665 deletions(-)
 delete mode 100755 engine/town_map.asm

diff --git a/constants/sprite_constants.asm b/constants/sprite_constants.asm
index 3d0c3919a..13df52bd6 100644
--- a/constants/sprite_constants.asm
+++ b/constants/sprite_constants.asm
@@ -482,7 +482,7 @@ MAX_OUTDOOR_SPRITES EQU 23
 	const SPRITE_ANIM_INDEX_SLOTS_CHANSEY
 	const SPRITE_ANIM_INDEX_SLOTS_EGG
 	const SPRITE_ANIM_INDEX_09
-	const SPRITE_ANIM_INDEX_WALK_CYCLE
+	const SPRITE_ANIM_INDEX_RED_WALK
 	const SPRITE_ANIM_INDEX_0B
 	const SPRITE_ANIM_INDEX_0C
 	const SPRITE_ANIM_INDEX_0D
@@ -502,7 +502,7 @@ MAX_OUTDOOR_SPRITES EQU 23
 	const SPRITE_ANIM_INDEX_1B
 	const SPRITE_ANIM_INDEX_1C
 	const SPRITE_ANIM_INDEX_1D
-	const SPRITE_ANIM_INDEX_1E
+	const SPRITE_ANIM_INDEX_BLUE_WALK
 	const SPRITE_ANIM_INDEX_1F
 	const SPRITE_ANIM_INDEX_20
 	const SPRITE_ANIM_INDEX_21
diff --git a/engine/link.asm b/engine/link.asm
index a4d23762b..b101c7349 100755
--- a/engine/link.asm
+++ b/engine/link.asm
@@ -578,7 +578,7 @@ FixDataForLinkTransfer: ; 28434
 rept 3
 	ld [hli], a
 endr
-	ld b, wc6d3 - (wMisc + 3)
+	ld b, $c8
 	xor a
 .loop3
 	ld [hli], a
diff --git a/engine/namingscreen.asm b/engine/namingscreen.asm
index 822fd2bce..aac059a18 100755
--- a/engine/namingscreen.asm
+++ b/engine/namingscreen.asm
@@ -3,6 +3,7 @@ _NamingScreen: ; 0x116b7
 	call NamingScreen
 	call ReturnToMapWithSpeechTextbox
 	ret
+
 ; 0x116c1
 
 NamingScreen: ; 116c1
@@ -37,6 +38,7 @@ NamingScreen: ; 116c1
 	ld [Options], a
 	call ClearJoypad
 	ret
+
 ; 116f8
 
 .SetUpNamingScreen: ; 116f8
@@ -54,6 +56,7 @@ NamingScreen: ; 116c1
 	call SetPalettes
 	call NamingScreen_InitNameEntry
 	ret
+
 ; 1171d
 
 .GetNamingScreenSetup: ; 1171d
@@ -69,8 +72,8 @@ endr
 	ld h, [hl]
 	ld l, a
 	jp [hl]
-; 1172e
 
+; 1172e
 
 .Jumptable: ; 1172e (4:572e)
 	dw .Pokemon
@@ -82,7 +85,6 @@ endr
 	dw .Pokemon
 	dw .Pokemon
 
-
 .Pokemon: ; 1173e (4:573e)
 	ld a, [CurPartySpecies]
 	ld [wd265], a
@@ -113,11 +115,13 @@ endr
 .genderless
 	call .StoreMonIconParams
 	ret
+
 ; 11780 (4:5780)
 
 .NicknameStrings: ; 11780
 	db "'S@"
 	db "NICKNAME?@"
+
 ; 1178d
 
 .Player: ; 1178d (4:578d)
@@ -128,10 +132,12 @@ endr
 	call PlaceString
 	call .StoreSpriteIconParams
 	ret
+
 ; 117a3 (4:57a3)
 
 .PlayerNameString: ; 117a3
 	db "YOUR NAME?@"
+
 ; 117ae
 
 .Rival: ; 117ae (4:57ae)
@@ -143,10 +149,12 @@ endr
 	call PlaceString
 	call .StoreSpriteIconParams
 	ret
+
 ; 117c3 (4:57c3)
 
 .RivalNameString: ; 117c3
 	db "RIVAL'S NAME?@"
+
 ; 117d1
 
 .Mom: ; 117d1 (4:57d1)
@@ -158,10 +166,12 @@ endr
 	call PlaceString
 	call .StoreSpriteIconParams
 	ret
+
 ; 117e6 (4:57e6)
 
 .MomNameString: ; 117e6
 	db "MOTHER'S NAME?@"
+
 ; 117f5
 
 .Box: ; 117f5 (4:57f5)
@@ -170,11 +180,11 @@ endr
 	lb bc, BANK(PokeBallSpriteGFX), $4
 	call Request2bpp
 	xor a
-	ld hl, wc300
+	ld hl, wSpriteAnimDict
 	ld [hli], a
 	ld [hl], a
 	depixel 4, 4, 4, 0
-	ld a, SPRITE_ANIM_INDEX_WALK_CYCLE
+	ld a, SPRITE_ANIM_INDEX_RED_WALK
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
 	add hl, bc
@@ -184,10 +194,12 @@ endr
 	call PlaceString
 	call .StoreBoxIconParams
 	ret
+
 ; 11822 (4:5822)
 
 .BoxNameString: ; 11822
 	db "BOX NAME?@"
+
 ; 1182c
 
 .Tomodachi: ; 1182c (4:582c)
@@ -196,10 +208,12 @@ endr
 	call PlaceString
 	call .StoreSpriteIconParams
 	ret
+
 ; 11839 (4:5839)
 
 .oTomodachi_no_namae_sutoringu: ; 11839
 	db "おともだち の なまえは?@"
+
 ; 11847
 
 .LoadSprite: ; 11847 (4:5847)
@@ -216,18 +230,18 @@ endr
 	ld hl, VTiles0 tile $04
 	call Request2bpp
 	xor a
-	ld hl, wc300
+	ld hl, wSpriteAnimDict
 	ld [hli], a
 	ld [hl], a
 	pop de
-	ld b, SPRITE_ANIM_INDEX_WALK_CYCLE
+	ld b, SPRITE_ANIM_INDEX_RED_WALK
 	ld a, d
 	cp KrisSpriteGFX / $100
 	jr nz, .not_kris
 	ld a, e
 	cp KrisSpriteGFX % $100
 	jr nz, .not_kris
-	ld b, SPRITE_ANIM_INDEX_1E
+	ld b, SPRITE_ANIM_INDEX_BLUE_WALK
 .not_kris
 	ld a, b
 	depixel 4, 4, 4, 0
@@ -257,7 +271,6 @@ endr
 	ld [wNamingScreenStringEntryCoord + 1], a
 	ret
 
-
 NamingScreen_IsTargetBox: ; 1189c
 	push bc
 	push af
@@ -268,6 +281,7 @@ NamingScreen_IsTargetBox: ; 1189c
 	dec b
 	pop bc
 	ret
+
 ; 118a8
 
 NamingScreen_InitText: ; 118a8
@@ -330,6 +344,7 @@ NamingScreen_ApplyTextInputMode: ; 118ca
 	dec b
 	jr nz, .row
 	ret
+
 ; 11915
 
 NamingScreenJoypadLoop: ; 11915
@@ -352,6 +367,7 @@ NamingScreenJoypadLoop: ; 11915
 	ld [hSCY], a
 	scf
 	ret
+
 ; 11940
 
 .UpdateStringEntry: ; 11940
@@ -377,6 +393,7 @@ NamingScreenJoypadLoop: ; 11915
 	ld a, $1
 	ld [hBGMapMode], a
 	ret
+
 ; 11968
 
 .RunJumptable: ; 11968
@@ -391,14 +408,13 @@ endr
 	ld h, [hl]
 	ld l, a
 	jp [hl]
-; 11977
 
+; 11977
 
 .Jumptable: ; 11977 (4:5977)
 	dw .InitCursor
 	dw .ReadButtons
 
-
 .InitCursor: ; 1197b (4:597b)
 	depixel 10, 3
 	call NamingScreen_IsTargetBox
@@ -410,7 +426,7 @@ endr
 	ld a, c
 	ld [wNamingScreenCursorObjectPointer], a
 	ld a, b
-	ld [wc6d6], a
+	ld [wNamingScreenCursorObjectPointer + 1], a
 	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
 	add hl, bc
 	ld a, [hl]
@@ -569,6 +585,7 @@ NamingScreen_AnimateCursor: ; 11a3b (4:5a3b)
 	add hl, bc
 	ld [hl], a
 	ret
+
 ; 11a79 (4:5a79)
 
 .LetterEntries: ; 11a79
@@ -576,6 +593,7 @@ NamingScreen_AnimateCursor: ; 11a3b (4:5a3b)
 
 .CaseDelEnd: ; 11a82
 	db $00, $00, $00, $30, $30, $30, $60, $60, $60
+
 ; 11a8b
 
 .GetDPad: ; 11a8b (4:5a8b)
@@ -593,6 +611,7 @@ NamingScreen_AnimateCursor: ; 11a3b (4:5a3b)
 	and D_RIGHT
 	jr nz, .right
 	ret
+
 .right
 	call NamingScreen_GetCursorPosition
 	and a
@@ -604,9 +623,11 @@ NamingScreen_AnimateCursor: ; 11a3b (4:5a3b)
 	jr nc, .asm_11ab4
 	inc [hl]
 	ret
+
 .asm_11ab4
 	ld [hl], $0
 	ret
+
 .asm_11ab7
 	cp $3
 	jr nz, .asm_11abc
@@ -619,6 +640,7 @@ NamingScreen_AnimateCursor: ; 11a3b (4:5a3b)
 	add hl, bc
 	ld [hl], a
 	ret
+
 .left
 	call NamingScreen_GetCursorPosition
 	and a
@@ -630,9 +652,11 @@ NamingScreen_AnimateCursor: ; 11a3b (4:5a3b)
 	jr z, .asm_11ad5
 	dec [hl]
 	ret
+
 .asm_11ad5
 	ld [hl], $8
 	ret
+
 .asm_11ad8
 	cp $1
 	jr nz, .asm_11ade
@@ -648,6 +672,7 @@ endr
 	add hl, bc
 	ld [hl], a
 	ret
+
 .down
 	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
@@ -658,14 +683,17 @@ endr
 	jr nc, .asm_11aff
 	inc [hl]
 	ret
+
 .asm_11af9
 	cp $4
 	jr nc, .asm_11aff
 	inc [hl]
 	ret
+
 .asm_11aff
 	ld [hl], $0
 	ret
+
 .up
 	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
@@ -674,6 +702,7 @@ endr
 	jr z, .asm_11b0c
 	dec [hl]
 	ret
+
 .asm_11b0c
 	ld [hl], $4
 	call NamingScreen_IsTargetBox
@@ -710,6 +739,7 @@ NamingScreen_AdvanceCursor_CheckEndOfString: ; 11b27
 .end_of_string
 	scf
 	ret
+
 ; 11b39 (4:5b39)
 
 ; XXX
@@ -735,6 +765,7 @@ NamingScreen_AdvanceCursor_CheckEndOfString: ; 11b27
 .done
 	ld a, [hl]
 	jr NamingScreen_LoadNextCharacter
+
 ; 11b56
 
 Dakutens: ; Dummied out
@@ -752,6 +783,7 @@ Handakutens: ; Dummied out
 	db "はぱ", "ひぴ", "ふぷ", "へぺ", "ほぽ"
 	db "ハパ", "ヒピ", "フプ", "へぺ", "ホポ"
 	db $ff
+
 ; 11bbc
 
 NamingScreen_DeleteCharacter: ; 11bbc (4:5bbc)
@@ -781,6 +813,7 @@ NamingScreen_GetTextCursorPosition: ; 11bd0 (4:5bd0)
 	add hl, de
 	pop af
 	ret
+
 ; 11be0
 
 NamingScreen_InitNameEntry: ; 11be0
@@ -801,8 +834,8 @@ NamingScreen_InitNameEntry: ; 11be0
 	jr nz, .loop
 	ld [hl], "@"
 	ret
-; 11bf7
 
+; 11bf7
 
 NamingScreen_StoreEntry: ; 11bf7 (4:5bf7)
 	ld hl, wNamingScreenDestinationPointer
@@ -861,13 +894,13 @@ NamingScreen_GetLastCharacter: ; 11c11 (4:5c11)
 	add hl, bc
 	dec d
 	jr .loop
+
 .done
 	add hl, de
 	ld a, [hl]
 	ld [wNamingScreenLastCharacter], a
 	ret
 
-
 LoadNamingScreenGFX: ; 11c51
 	call ClearSprites
 	callab ClearSpriteAnims
@@ -912,6 +945,7 @@ LoadNamingScreenGFX: ; 11c51
 	ld a, $7
 	ld [hWX], a
 	ret
+
 ; 11cb7
 
 NamingScreenGFX_Border: ; 11cb7
@@ -928,6 +962,7 @@ NameInputLower:
 	db "s t u v w x y z  "
 	db "× ( ) : ; [ ] <PK> <MN>"
 	db "UPPER  DEL   END "
+
 BoxNameInputLower:
 	db "a b c d e f g h i"
 	db "j k l m n o p q r"
@@ -935,12 +970,14 @@ BoxNameInputLower:
 	db "é 'd 'l 'm 'r 's 't 'v 0"
 	db "1 2 3 4 5 6 7 8 9"
 	db "UPPER  DEL   END "
+
 NameInputUpper: ; Unreferenced?
 	db "A B C D E F G H I"
 	db "J K L M N O P Q R"
 	db "S T U V W X Y Z  "
 	db "- ? ! / . ,      "
 	db "lower  DEL   END "
+
 BoxNameInputUpper:
 	db "A B C D E F G H I"
 	db "J K L M N O P Q R"
@@ -948,6 +985,7 @@ BoxNameInputUpper:
 	db "× ( ) : ; [ ] <PK> <MN>"
 	db "- ? ! ♂ ♀ / . , &"
 	db "lower  DEL   END "
+
 ; 11e5d
 
 GFX_11e5d: ; ????
@@ -1047,6 +1085,7 @@ INCBIN "gfx/icon/mail2.2bpp"
 
 .Dummy: ; dummied out
 	db "メールを かいてね@"
+
 ; 11f84
 
 .InitCharset: ; 11f84 (4:5f84)
@@ -1137,7 +1176,6 @@ endr
 	dw .init_blinking_cursor
 	dw .process_joypad
 
-
 .init_blinking_cursor: ; 1201b (4:601b)
 	depixel 9, 2
 	ld a, SPRITE_ANIM_INDEX_09
@@ -1242,6 +1280,7 @@ endr
 	ret
 
 ; called from engine/sprite_anims.asm
+
 ComposeMail_AnimateCursor: ; 120c1 (4:60c1)
 	call .GetDPad
 	ld hl, SPRITEANIMSTRUCT_0D
@@ -1283,6 +1322,7 @@ ComposeMail_AnimateCursor: ; 120c1 (4:60c1)
 
 .CaseDelEnd: ; 12102
 	db $00, $00, $00, $30, $30, $30, $60, $60, $60, $60
+
 ; 1210c
 
 .GetDPad: ; 1210c (4:610c)
@@ -1425,6 +1465,7 @@ ComposeMail_GetCursorPosition: ; 1218b (4:618b)
 MailComposition_TryAddLastCharacter: ; 121ac (4:61ac)
 	ld a, [wNamingScreenLastCharacter]
 	jp MailComposition_TryAddCharacter
+
 ; 121b2 (4:61b2)
 
 ; XXX
@@ -1461,6 +1502,7 @@ endr
 .asm_121d9
 	ld a, [hl]
 	jp NamingScreen_LoadNextCharacter
+
 ; 121dd
 
 MailEntry_Uppercase: ; 122dd
@@ -1470,6 +1512,7 @@ MailEntry_Uppercase: ; 122dd
 	db "1 2 3 4 5 6 7 8 9 0"
 	db "<PK> <MN> <PO> <KE> é ♂ ♀ ¥ … ×"
 	db "lower  DEL   END   "
+
 ; 1224f
 
 MailEntry_Lowercase: ; 1224f
@@ -1479,4 +1522,5 @@ MailEntry_Lowercase: ; 1224f
 	db "'d 'l 'm 'r 's 't 'v & ( )"
 	db "<``> <''> [ ] ' : ;      "
 	db "UPPER  DEL   END   "
+
 ; 122c1
diff --git a/engine/phone.asm b/engine/phone.asm
index 805f221a7..4b856568e 100644
--- a/engine/phone.asm
+++ b/engine/phone.asm
@@ -651,15 +651,16 @@ Function90380: ; 90380 (24:4380)
 	call GetCallerName
 	ret
 
-Function9038a: ; 9038a (24:438a)
+CheckCanDeletePhoneNumber: ; 9038a (24:438a)
 	ld a, c
 	call GetCallerTrainerClass
 	ld a, c
+	; and a
 	ret nz
 	ld a, b
-	cp $1
+	cp PHONECONTACT_MOM
 	ret z
-	cp $4
+	cp PHONECONTACT_ELM
 	ret z
 	ld c, $1
 	ret
diff --git a/engine/pokegear.asm b/engine/pokegear.asm
index 4ef65da8c..c777369f4 100755
--- a/engine/pokegear.asm
+++ b/engine/pokegear.asm
@@ -3,27 +3,23 @@ PokeGear: ; 90b8d (24:4b8d)
 	ld a, [hl]
 	push af
 	set NO_TEXT_SCROLL, [hl]
-
 	ld a, [hInMenu]
 	push af
 	ld a, $1
 	ld [hInMenu], a
-
 	ld a, [VramState]
 	push af
 	xor a
 	ld [VramState], a
-
 	call Function90bea
 	call DelayFrame
-
 .loop
 	call UpdateTime
 	call JoyTextDelay
 	ld a, [wJumptableIndex]
 	bit 7, a
 	jr nz, .done
-	call Function90f04
+	call PokegearJumptable
 	callba PlaySpriteAnimations
 	call DelayFrame
 	jr .loop
@@ -71,14 +67,14 @@ Function90bea: ; 90bea (24:4bea)
 	ld [wcf64], a
 	ld [wcf65], a
 	ld [wcf66], a
-	ld [wc6d2], a
-	ld [wc6d1], a
-	ld [wc6d3], a
-	ld [wc6d9], a
-	ld [wc6da], a
-	ld [wc6db], a
-	call Function90d9e
-	call Function90da8
+	ld [wPokegearPhoneScrollPosition], a
+	ld [wPokegearPhoneCursorPosition], a
+	ld [wPokegearPhoneSelectedPerson], a
+	ld [wPokegearRadioChannelBank], a
+	ld [wPokegearRadioChannelAddr], a
+	ld [wPokegearRadioChannelAddr + 1], a
+	call Pokegear_InitJumptableIndices
+	call InitPokegearTilemap
 	ld b, SCGB_POKEGEAR_PALS
 	call GetSGBLayout
 	call SetPalettes
@@ -95,17 +91,14 @@ Function90c4e: ; 90c4e
 	ld de, VTiles2
 	ld a, BANK(TownMapGFX)
 	call FarDecompress
-
 	ld hl, PokegearGFX
 	ld de, VTiles2 + $30 tiles
 	ld a, BANK(PokegearGFX)
 	call FarDecompress
-
 	ld hl, PokegearSpritesGFX
 	ld de, VTiles0
 	ld a, BANK(PokegearSpritesGFX)
 	call Decompress
-
 	ld a, [MapGroup]
 	ld b, a
 	ld a, [MapNumber]
@@ -113,23 +106,18 @@ Function90c4e: ; 90c4e
 	call GetWorldMapLocation
 	cp FAST_SHIP
 	jr z, .ssaqua
-
 	callba GetPlayerIcon
-
 	push de
 	ld h, d
 	ld l, e
 	ld a, b
-
 	; standing sprite
 	push af
 	ld de, VTiles0 tile $10
 	ld bc, 4 tiles
 	call FarCopyBytes
 	pop af
-
 	pop hl
-
 	; walking sprite
 	ld de, 12 tiles
 	add hl, de
@@ -144,6 +132,7 @@ Function90c4e: ; 90c4e
 	ld bc, 8 tiles
 	call CopyBytes
 	ret
+
 ; 90cb2
 
 FastShipGFX: ; 90cb2
@@ -170,6 +159,7 @@ Function90d41: ; 90d41 (24:4d41)
 	add hl, bc
 	ld [hl], a
 	ret
+
 ; 90d52 (24:4d52)
 
 Unknown_90d52: ; 90d52
@@ -190,8 +180,8 @@ Function90d56: ; 90d56
 	ld c, a
 	call GetWorldMapLocation
 	ret
-; 90d70
 
+; 90d70
 
 Function90d70: ; 90d70 (24:4d70)
 	ld a, [MapGroup]
@@ -199,19 +189,15 @@ Function90d70: ; 90d70 (24:4d70)
 	ld a, [MapNumber]
 	ld c, a
 	call GetWorldMapLocation
-
 	cp FAST_SHIP
 	jr z, .FastShip
-
 	cp SPECIAL_MAP
 	jr nz, .LoadLandmark
-
 	ld a, [BackupMapGroup]
 	ld b, a
 	ld a, [BackupMapNumber]
 	ld c, a
 	call GetWorldMapLocation
-
 .LoadLandmark
 	ld [wTownMapPlayerIconLandmark], a
 	ld [wTownMapCursorLandmark], a
@@ -223,14 +209,14 @@ Function90d70: ; 90d70 (24:4d70)
 	ld [wTownMapCursorLandmark], a
 	ret
 
-Function90d9e: ; 90d9e (24:4d9e)
+Pokegear_InitJumptableIndices: ; 90d9e (24:4d9e)
 	ld a, $0
 	ld [wJumptableIndex], a
 	xor a
 	ld [wcf64], a
 	ret
 
-Function90da8: ; 90da8 (24:4da8)
+InitPokegearTilemap: ; 90da8 (24:4da8)
 	xor a
 	ld [hBGMapMode], a
 	hlcoord 0, 0
@@ -242,39 +228,37 @@ Function90da8: ; 90da8 (24:4da8)
 	add a
 	ld e, a
 	ld d, 0
-	ld hl, Jumptable_90e12
+	ld hl, .Jumptable
 	add hl, de
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld de, .asm_90dcb
+	ld de, .return_from_jumptable
 	push de
 	jp [hl]
 
-.asm_90dcb
+.return_from_jumptable
 	call Function90eb0
 	callba TownMapPals
 	ld a, [wcf65]
 	and a
-	jr nz, .asm_90de8
-
+	jr nz, .kanto_0
 	xor a
 	ld [hBGMapAddress], a
 	ld a, VBGMap0 / $100
 	ld [hBGMapAddress + 1], a
-	call Function90e00
+	call .UpdateBGMap
 	ld a, $90
-	jr .asm_90df3
+	jr .finish
 
-.asm_90de8
+.kanto_0
 	xor a
 	ld [hBGMapAddress], a
 	ld a, VBGMap1 / $100
 	ld [hBGMapAddress + 1], a
-	call Function90e00
+	call .UpdateBGMap
 	xor a
-
-.asm_90df3
+.finish
 	ld [hWY], a
 	ld a, [wcf65]
 	and 1
@@ -282,7 +266,7 @@ Function90da8: ; 90da8 (24:4da8)
 	ld [wcf65], a
 	ret
 
-Function90e00: ; 90e00 (24:4e00)
+.UpdateBGMap: ; 90e00 (24:4e00)
 	ld a, [hCGB]
 	and a
 	jr z, .asm_90e0e
@@ -293,34 +277,36 @@ Function90e00: ; 90e00 (24:4e00)
 .asm_90e0e
 	call WaitBGMap
 	ret
+
 ; 90e12 (24:4e12)
 
-Jumptable_90e12: ; 90e12
-	dw Function90e1a
-	dw Function90e3f
-	dw Function90e82
-	dw Function90e72
+.Jumptable: ; 90e12
+	dw .Clock
+	dw .Map
+	dw .Phone
+	dw .Radio
+
 ; 90e1a
 
-Function90e1a: ; 90e1a
+.Clock: ; 90e1a
 	ld de, ClockTilemapRLE
-	call Function914bb
+	call Pokegear_LoadTilemapRLE
 	hlcoord 12, 1
 	ld de, .switch
 	call PlaceString
 	hlcoord 0, 12
 	lb bc, 4, 18
 	call TextBox
-	call Function90f86
+	call Pokegear_UpdateClock
 	ret
+
 ; 90e36 (24:4e36)
 
 .switch
 	db " SWITCH▶@"
 ; 90e3f
 
-Function90e3f: ; 90e3f
-
+.Map: ; 90e3f
 	ld a, [wTownMapPlayerIconLandmark]
 	cp FAST_SHIP
 	jr z, .johto
@@ -329,6 +315,7 @@ Function90e3f: ; 90e3f
 .johto
 	ld e, 0
 	jr .ok
+
 .kanto
 	ld e, 1
 .ok
@@ -344,26 +331,29 @@ Function90e3f: ; 90e3f
 	ld a, [wTownMapCursorLandmark]
 	call Function910b4
 	ret
+
 ; 90e72
 
-Function90e72: ; 90e72
+.Radio: ; 90e72
 	ld de, RadioTilemapRLE
-	call Function914bb
+	call Pokegear_LoadTilemapRLE
 	hlcoord 0, 12
 	lb bc, 4, 18
 	call TextBox
 	ret
+
 ; 90e82
 
-Function90e82: ; 90e82
+.Phone: ; 90e82
 	ld de, PhoneTilemapRLE
-	call Function914bb
+	call Pokegear_LoadTilemapRLE
 	hlcoord 0, 12
 	lb bc, 4, 18
 	call TextBox
 	call Function90e98
-	call Function912d8
+	call PokegearPhone_UpdateDisplayList
 	ret
+
 ; 90e98
 
 Function90e98: ; 90e98 (24:4e98)
@@ -419,7 +409,6 @@ Function90eeb: ; 90eeb (24:4eeb)
 Function90ef2: ; 90ef2 (24:4ef2)
 	hlcoord 6, 0
 	ld a, $42
-
 Function90ef7: ; 90ef7 (24:4ef7)
 	ld [hli], a
 	inc a
@@ -432,97 +421,90 @@ Function90ef7: ; 90ef7 (24:4ef7)
 	ld [hld], a
 	ret
 
-Function90f04: ; 90f04 (24:4f04)
+PokegearJumptable: ; 90f04 (24:4f04)
 	ld a, [wJumptableIndex]
 	ld e, a
 	ld d, 0
-	ld hl, Jumptable_90f13
-rept 2
+	ld hl, .Jumptable
+	add hl, de
 	add hl, de
-endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
 	jp [hl]
 
-Jumptable_90f13: ; 90f13 (24:4f13)
-	dw Function90f2d
-	dw Function90f3e
-	dw Function90fb4
-	dw Function90fcd
-	dw Function90fee
-	dw Function90fcd
-	dw Function90fe9
-	dw Function91156
-	dw Function91171
-	dw Function911eb
-	dw Function91256
-	dw Function910f9
-	dw Function91112
+.Jumptable: ; 90f13 (24:4f13)
+	dw PokegearClock_Init
+	dw PokegearClock_Joypad
+	dw PokegearMap_CheckRegion
+	dw PokegearMap_Init
+	dw PokegearMap_JohtoMap
+	dw PokegearMap_Init
+	dw PokegearMap_KantoMap
+	dw PokegearPhone_Init
+	dw PokegearPhone_Joypad
+	dw PokegearPhone_MakePhoneCall
+	dw PokegearPhone_FinishPhoneCall
+	dw PokegearRadio_Init
+	dw PokegearRadio_Joypad
 
-
-Function90f2d: ; 90f2d (24:4f2d)
-	call Function90da8
-	ld hl, UnknownText_0x914d3
+PokegearClock_Init: ; 90f2d (24:4f2d)
+	call InitPokegearTilemap
+	ld hl, PokegearText_PressAnyButtonToExit
 	call PrintText
 	ld hl, wJumptableIndex
 	inc [hl]
 	call Function91492
 	ret
 
-Function90f3e: ; 90f3e (24:4f3e)
-	call Function90f7b
+PokegearClock_Joypad: ; 90f3e (24:4f3e)
+	call .UpdateClock
 	ld hl, hJoyLast
-
 	ld a, [hl]
 	and A_BUTTON + B_BUTTON + START + SELECT
-	jr nz, .asm_90f75
-
+	jr nz, .quit
 	ld a, [hl]
 	and D_RIGHT
 	ret z
-
 	ld a, [wPokegearFlags]
 	bit 0, a
-	jr z, .asm_90f5a
+	jr z, .no_map_card
 	ld c, $2
 	ld b, $1
-	jr .asm_90f71
-.asm_90f5a
+	jr .done
 
+.no_map_card
 	ld a, [wPokegearFlags]
 	bit 2, a
-	jr z, .asm_90f67
+	jr z, .no_phone_card
 	ld c, $7
 	ld b, $2
-	jr .asm_90f71
-.asm_90f67
+	jr .done
 
+.no_phone_card
 	ld a, [wPokegearFlags]
 	bit 1, a
 	ret z
-
 	ld c, $b
 	ld b, $3
-
-.asm_90f71
-	call Function91480
+.done
+	call Pokegear_SwitchPage
 	ret
 
-.asm_90f75
+.quit
 	ld hl, wJumptableIndex
 	set 7, [hl]
 	ret
 
-Function90f7b: ; 90f7b (24:4f7b)
+.UpdateClock: ; 90f7b (24:4f7b)
 	xor a
 	ld [hBGMapMode], a
-	call Function90f86
+	call Pokegear_UpdateClock
 	ld a, $1
 	ld [hBGMapMode], a
 	ret
 
-Function90f86: ; 90f86 (24:4f86)
+Pokegear_UpdateClock: ; 90f86 (24:4f86)
 	hlcoord 3, 5
 	lb bc, 5, 14
 	call ClearBox
@@ -532,21 +514,22 @@ Function90f86: ; 90f86 (24:4f86)
 	ld c, a
 	decoord 6, 8
 	callba PrintHoursMins
-	ld hl, UnknownText_0x90faf
+	ld hl, .DayText
 	bccoord 6, 6
 	call PlaceWholeStringInBoxAtOnce
 	ret
+
 ; 90fa8 (24:4fa8)
+	db "ごぜん@"
+	db "ごご@"
 
-String_90fa8: db "ごぜん@"
-String_90fac: db "ごご@"
-
-UnknownText_0x90faf: ; 0x90faf
+.DayText: ; 0x90faf
 	text_jump UnknownText_0x1c5821
 	db "@"
+
 ; 0x90fb4
 
-Function90fb4: ; 90fb4 (24:4fb4)
+PokegearMap_CheckRegion: ; 90fb4 (24:4fb4)
 	ld a, [wTownMapPlayerIconLandmark]
 	cp FAST_SHIP
 	jr z, .johto
@@ -555,7 +538,6 @@ Function90fb4: ; 90fb4 (24:4fb4)
 .johto
 	ld a, 3
 	jr .done
-
 	ret
 
 .kanto
@@ -565,28 +547,28 @@ Function90fb4: ; 90fb4 (24:4fb4)
 	call Function91492
 	ret
 
-Function90fcd: ; 90fcd (24:4fcd)
-	call Function90da8
+PokegearMap_Init: ; 90fcd (24:4fcd)
+	call InitPokegearTilemap
 	ld a, [wTownMapPlayerIconLandmark]
-	call Function9106a
+	call PokegearMap_InitPlayerIcon
 	ld a, [wTownMapCursorLandmark]
-	call Function91098
+	call PokegearMap_InitCursor
 	ld a, c
-	ld [wc6d5], a
+	ld [wPokegearMapCursorObjectPointer], a
 	ld a, b
-	ld [wc6d6], a
+	ld [wPokegearMapCursorObjectPointer + 1], a
 	ld hl, wJumptableIndex
 	inc [hl]
 	ret
 
-Function90fe9: ; 90fe9 (24:4fe9)
+PokegearMap_KantoMap: ; 90fe9 (24:4fe9)
 	call TownMap_GetKantoLandmarkLimits
-	jr Function90ff2
+	jr PokegearMap_ContinueMap
 
-Function90fee: ; 90fee (24:4fee)
-	ld d, $2e
-	ld e, $1
-Function90ff2: ; 90ff2 (24:4ff2)
+PokegearMap_JohtoMap: ; 90fee (24:4fee)
+	ld d, SILVER_CAVE
+	ld e, NEW_BARK_TOWN
+PokegearMap_ContinueMap: ; 90ff2 (24:4ff2)
 	ld hl, hJoyLast
 	ld a, [hl]
 	and B_BUTTON
@@ -597,18 +579,18 @@ Function90ff2: ; 90ff2 (24:4ff2)
 	ld a, [hl]
 	and D_LEFT
 	jr nz, .left
-	call Function9102f
+	call .DPad
 	ret
 
 .right
 	ld a, [wPokegearFlags]
 	bit 2, a
-	jr z, .asm_91015
+	jr z, .no_phone
 	ld c, $7
 	ld b, $2
 	jr .done
 
-.asm_91015
+.no_phone
 	ld a, [wPokegearFlags]
 	bit 1, a
 	ret z
@@ -620,14 +602,15 @@ Function90ff2: ; 90ff2 (24:4ff2)
 	ld c, $0
 	ld b, $0
 .done
-	call Function91480
+	call Pokegear_SwitchPage
 	ret
+
 .cancel
 	ld hl, wJumptableIndex
 	set 7, [hl]
 	ret
 
-Function9102f: ; 9102f (24:502f)
+.DPad: ; 9102f (24:502f)
 	ld hl, hJoyLast
 	ld a, [hl]
 	and D_UP
@@ -636,50 +619,49 @@ Function9102f: ; 9102f (24:502f)
 	and D_DOWN
 	jr nz, .down
 	ret
+
 .up
 	ld hl, wTownMapCursorLandmark
 	ld a, [hl]
 	cp d
-	jr c, .asm_91047
+	jr c, .wrap_around_up
 	ld a, e
 	dec a
 	ld [hl], a
-.asm_91047
+.wrap_around_up
 	inc [hl]
-	jr .done
+	jr .done_dpad
 
 .down
 	ld hl, wTownMapCursorLandmark
 	ld a, [hl]
 	cp e
-	jr nz, .asm_91054
+	jr nz, .wrap_around_down
 	ld a, d
 	inc a
 	ld [hl], a
-.asm_91054
+.wrap_around_down
 	dec [hl]
-
-.done
+.done_dpad
 	ld a, [wTownMapCursorLandmark]
 	call Function910b4
-	ld a, [wc6d5]
+	ld a, [wPokegearMapCursorObjectPointer]
 	ld c, a
-	ld a, [wc6d6]
+	ld a, [wPokegearMapCursorObjectPointer + 1]
 	ld b, a
 	ld a, [wTownMapCursorLandmark]
 	call Function910d4
 	ret
 
-Function9106a: ; 9106a
+PokegearMap_InitPlayerIcon: ; 9106a
 	push af
 	depixel 0, 0
-	ld b, SPRITE_ANIM_INDEX_WALK_CYCLE
+	ld b, SPRITE_ANIM_INDEX_RED_WALK
 	ld a, [PlayerGender]
 	bit 0, a
-	jr z, .asm_91079
-	ld b, SPRITE_ANIM_INDEX_1E
-
-.asm_91079
+	jr z, .got_gender
+	ld b, SPRITE_ANIM_INDEX_BLUE_WALK
+.got_gender
 	ld a, b
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_TILE_ID
@@ -697,9 +679,10 @@ Function9106a: ; 9106a
 	add hl, bc
 	ld [hl], d
 	ret
+
 ; 91098
 
-Function91098: ; 91098
+PokegearMap_InitCursor: ; 91098
 	push af
 	depixel 0, 0
 	ld a, SPRITE_ANIM_INDEX_0D
@@ -715,6 +698,7 @@ Function91098: ; 91098
 	call Function910d4
 	pop bc
 	ret
+
 ; 910b4
 
 Function910b4: ; 910b4
@@ -731,6 +715,7 @@ Function910b4: ; 910b4
 	hlcoord 8, 0
 	ld [hl], $34
 	ret
+
 ; 910d4
 
 Function910d4: ; 910d4
@@ -745,6 +730,7 @@ Function910d4: ; 910d4
 	add hl, bc
 	ld [hl], d
 	ret
+
 ; 910e8
 
 TownMap_GetKantoLandmarkLimits: ; 910e8
@@ -759,11 +745,11 @@ TownMap_GetKantoLandmarkLimits: ; 910e8
 	ld d, ROUTE_28
 	ld e, VICTORY_ROAD
 	ret
+
 ; 910f9
 
-
-Function910f9: ; 910f9 (24:50f9)
-	call Function90da8
+PokegearRadio_Init: ; 910f9 (24:50f9)
+	call InitPokegearTilemap
 	depixel 4, 10, 4, 4
 	ld a, SPRITE_ANIM_INDEX_14
 	call _InitSpriteAnimStruct
@@ -775,7 +761,7 @@ Function910f9: ; 910f9 (24:50f9)
 	inc [hl]
 	ret
 
-Function91112: ; 91112 (24:5112)
+PokegearRadio_Joypad: ; 91112 (24:5112)
 	ld hl, hJoyLast
 	ld a, [hl]
 	and B_BUTTON
@@ -783,11 +769,11 @@ Function91112: ; 91112 (24:5112)
 	ld a, [hl]
 	and D_LEFT
 	jr nz, .left
-	ld a, [wc6da]
+	ld a, [wPokegearRadioChannelAddr]
 	ld l, a
-	ld a, [wc6db]
+	ld a, [wPokegearRadioChannelAddr + 1]
 	ld h, a
-	ld a, [wc6d9]
+	ld a, [wPokegearRadioChannelBank]
 	and a
 	ret z
 	rst FarCall
@@ -813,7 +799,7 @@ Function91112: ; 91112 (24:5112)
 	ld c, $0
 	ld b, $0
 .asm_9114c
-	call Function91480
+	call Pokegear_SwitchPage
 	ret
 
 .cancel
@@ -821,20 +807,20 @@ Function91112: ; 91112 (24:5112)
 	set 7, [hl]
 	ret
 
-Function91156: ; 91156 (24:5156)
+PokegearPhone_Init: ; 91156 (24:5156)
 	ld hl, wJumptableIndex
 	inc [hl]
 	xor a
-	ld [wc6d2], a
-	ld [wc6d1], a
-	ld [wc6d3], a
-	call Function90da8
+	ld [wPokegearPhoneScrollPosition], a
+	ld [wPokegearPhoneCursorPosition], a
+	ld [wPokegearPhoneSelectedPerson], a
+	call InitPokegearTilemap
 	call Function91492
-	ld hl, UnknownText_0x914ce
+	ld hl, PokegearText_WhomToCall
 	call PrintText
 	ret
 
-Function91171: ; 91171 (24:5171)
+PokegearPhone_Joypad: ; 91171 (24:5171)
 	ld hl, hJoyPressed
 	ld a, [hl]
 	and B_BUTTON
@@ -849,7 +835,7 @@ Function91171: ; 91171 (24:5171)
 	ld a, [hl]
 	and D_RIGHT
 	jr nz, .right
-	call Function9126d
+	call PokegearPhone_GetDPad
 	ret
 
 .left
@@ -859,6 +845,7 @@ Function91171: ; 91171 (24:5171)
 	ld c, $2
 	ld b, $1
 	jr .asm_911ac
+
 .asm_9119c
 	ld c, $0
 	ld b, $0
@@ -871,7 +858,7 @@ Function91171: ; 91171 (24:5171)
 	ld c, $b
 	ld b, $3
 .asm_911ac
-	call Function91480
+	call Pokegear_SwitchPage
 	ret
 
 .b
@@ -881,27 +868,25 @@ Function91171: ; 91171 (24:5171)
 
 .a
 	ld hl, wPhoneList
-	ld a, [wc6d2]
+	ld a, [wPokegearPhoneScrollPosition]
 	ld e, a
 	ld d, 0
 	add hl, de
-	ld a, [wc6d1]
+	ld a, [wPokegearPhoneCursorPosition]
 	ld e, a
 	ld d, 0
 	add hl, de
 	ld a, [hl]
 	and a
 	ret z
-
-	ld [wc6d3], a
+	ld [wPokegearPhoneSelectedPerson], a
 	hlcoord 1, 4
-	ld a, [wc6d1]
+	ld a, [wPokegearPhoneCursorPosition]
 	ld bc, 20 * 2
 	call AddNTimes
 	ld [hl], "▷"
-	call Function91342
+	call PokegearPhoneContactSubmenu
 	jr c, .asm_911e5
-
 	ld hl, wJumptableIndex
 	inc [hl]
 	ret
@@ -911,7 +896,7 @@ Function91171: ; 91171 (24:5171)
 	ld [wJumptableIndex], a
 	ret
 
-Function911eb: ; 911eb (24:51eb)
+PokegearPhone_MakePhoneCall: ; 911eb (24:51eb)
 	call GetMapHeaderPhoneServiceNybble
 	and a
 	jr nz, .asm_91234
@@ -929,7 +914,7 @@ Function911eb: ; 911eb (24:51eb)
 	ld hl, UnknownText_0x9124c
 	call PrintText
 	call WaitSFX
-	ld a, [wc6d3]
+	ld a, [wPokegearPhoneSelectedPerson]
 	ld b, a
 	call Function90199
 	ld c, 10
@@ -938,45 +923,49 @@ Function911eb: ; 911eb (24:51eb)
 	set NO_TEXT_SCROLL, [hl]
 	ld a, $1
 	ld [hInMenu], a
-	call Function912b7
+	call PokegearPhone_UpdateCursor
 	ld hl, wJumptableIndex
 	inc [hl]
 	ret
+
 .asm_91234
 	callba Phone_NoSignal
 	ld hl, OutOfServiceAreaText
 	call PrintText
 	ld a, $8
 	ld [wJumptableIndex], a
-	ld hl, UnknownText_0x914ce
+	ld hl, PokegearText_WhomToCall
 	call PrintText
 	ret
+
 ; 9124c (24:524c)
 
 UnknownText_0x9124c: ; 0x9124c
 	;
 	text_jump UnknownText_0x1c5824
 	db "@"
+
 ; 0x91251
 
 OutOfServiceAreaText: ; 0x91251
 	; You're out of the service area.
 	text_jump UnknownText_0x1c5827
 	db "@"
+
 ; 0x91256
 
-Function91256: ; 91256 (24:5256)
+PokegearPhone_FinishPhoneCall: ; 91256 (24:5256)
 	ld a, [hJoyPressed]
 	and A_BUTTON | B_BUTTON
 	ret z
 	callba HangUp
 	ld a, $8
 	ld [wJumptableIndex], a
-	ld hl, UnknownText_0x914ce
+	ld hl, PokegearText_WhomToCall
 	call PrintText
 	ret
 
-Function9126d: ; 9126d (24:526d)
+PokegearPhone_GetDPad: ; 9126d (24:526d)
 	ld hl, hJoyLast
 	ld a, [hl]
 	and D_UP
@@ -987,52 +976,52 @@ Function9126d: ; 9126d (24:526d)
 	ret
 
 .up
-	ld hl, wc6d1
+	ld hl, wPokegearPhoneCursorPosition
 	ld a, [hl]
 	and a
-	jr z, .asm_91285
+	jr z, .scroll_page_up
 	dec [hl]
-	jr .asm_912a3
+	jr .done_joypad_same_page
 
-.asm_91285
-	ld hl, wc6d2
+.scroll_page_up
+	ld hl, wPokegearPhoneScrollPosition
 	ld a, [hl]
 	and a
 	ret z
 	dec [hl]
-	jr .asm_912ad
+	jr .done_joypad_update_page
 
 .down
-	ld hl, wc6d1
+	ld hl, wPokegearPhoneCursorPosition
 	ld a, [hl]
 	cp $3
-	jr nc, .asm_91299
+	jr nc, .scroll_page_down
 	inc [hl]
-	jr .asm_912a3
+	jr .done_joypad_same_page
 
-.asm_91299
-	ld hl, wc6d2
+.scroll_page_down
+	ld hl, wPokegearPhoneScrollPosition
 	ld a, [hl]
 	cp $6
 	ret nc
 	inc [hl]
-	jr .asm_912ad
+	jr .done_joypad_update_page
 
-.asm_912a3
+.done_joypad_same_page
 	xor a
 	ld [hBGMapMode], a
-	call Function912b7
+	call PokegearPhone_UpdateCursor
 	call WaitBGMap
 	ret
 
-.asm_912ad
+.done_joypad_update_page
 	xor a
 	ld [hBGMapMode], a
-	call Function912d8
+	call PokegearPhone_UpdateDisplayList
 	call WaitBGMap
 	ret
 
-Function912b7: ; 912b7 (24:52b7)
+PokegearPhone_UpdateCursor: ; 912b7 (24:52b7)
 	ld a, " "
 	hlcoord 1, 4
 	ld [hl], a
@@ -1043,41 +1032,40 @@ Function912b7: ; 912b7 (24:52b7)
 	hlcoord 1, 10
 	ld [hl], a
 	hlcoord 1, 4
-	ld a, [wc6d1]
-	ld bc, $28
+	ld a, [wPokegearPhoneCursorPosition]
+	ld bc, 2 * SCREEN_WIDTH
 	call AddNTimes
 	ld [hl], "▶"
 	ret
 
-Function912d8: ; 912d8 (24:52d8)
+PokegearPhone_UpdateDisplayList: ; 912d8 (24:52d8)
 	hlcoord 1, 3
-	ld b, $9
-	ld a, $7f
-.asm_912df
-	ld c, $12
-.asm_912e1
+	ld b, 9
+	ld a, " "
+.row
+	ld c, 18
+.col
 	ld [hli], a
 	dec c
-	jr nz, .asm_912e1
-rept 2
+	jr nz, .col
+	inc hl
 	inc hl
-endr
 	dec b
-	jr nz, .asm_912df
-	ld a, [wc6d2]
+	jr nz, .row
+	ld a, [wPokegearPhoneScrollPosition]
 	ld e, a
 	ld d, $0
 	ld hl, wPhoneList
 	add hl, de
 	xor a
-	ld [wc6d0], a
-.asm_912f8
+	ld [wPokegearPhoneLoadNameBuffer], a
+.loop
 	ld a, [hli]
 	push hl
 	push af
 	hlcoord 2, 4
-	ld a, [wc6d0]
-	ld bc, $28
+	ld a, [wPokegearPhoneLoadNameBuffer]
+	ld bc, 2 * SCREEN_WIDTH
 	call AddNTimes
 	ld d, h
 	ld e, l
@@ -1085,66 +1073,66 @@ endr
 	ld b, a
 	call Function90380
 	pop hl
-	ld a, [wc6d0]
+	ld a, [wPokegearPhoneLoadNameBuffer]
 	inc a
-	ld [wc6d0], a
+	ld [wPokegearPhoneLoadNameBuffer], a
 	cp $4
-	jr c, .asm_912f8
-	call Function912b7
+	jr c, .loop
+	call PokegearPhone_UpdateCursor
 	ret
+
 ; 9131e (24:531e)
 
-Function9131e: ; 9131e
+PokegearPhone_DeletePhoneNumber: ; 9131e
 	ld hl, wPhoneList
-	ld a, [wc6d2]
+	ld a, [wPokegearPhoneScrollPosition]
 	ld e, a
 	ld d, 0
 	add hl, de
-	ld a, [wc6d1]
+	ld a, [wPokegearPhoneCursorPosition]
 	ld e, a
 	ld d, 0
 	add hl, de
 	ld [hl], 0
 	ld hl, wPhoneList
-	ld c, $a
-.asm_91336
+	ld c, CONTACT_LIST_SIZE
+.loop
 	ld a, [hli]
 	and a
-	jr nz, .asm_9133e
+	jr nz, .skip
 	ld a, [hld]
 	ld [hli], a
 	ld [hl], 0
-.asm_9133e
+.skip
 	dec c
-	jr nz, .asm_91336
+	jr nz, .loop
 	ret
+
 ; 91342
 
-Function91342: ; 91342 (24:5342)
+PokegearPhoneContactSubmenu: ; 91342 (24:5342)
 	ld hl, wPhoneList
-	ld a, [wc6d2]
+	ld a, [wPokegearPhoneScrollPosition]
 	ld e, a
 	ld d, 0
 	add hl, de
-	ld a, [wc6d1]
+	ld a, [wPokegearPhoneCursorPosition]
 	ld e, a
 	ld d, 0
 	add hl, de
 	ld c, [hl]
-	callba Function9038a
+	callba CheckCanDeletePhoneNumber
 	ld a, c
 	and a
-	jr z, .asm_91366
+	jr z, .cant_delete
+	ld hl, .CallDeleteCancelJumptable
+	ld de, .CallDeleteCancelStrings
+	jr .got_menu_data
 
-	ld hl, Jumptable_91455
-	ld de, Unknown_9143f
-	jr .asm_9136c
-
-.asm_91366
-	ld hl, Jumptable_9146a
-	ld de, Unknown_9145b
-
-.asm_9136c
+.cant_delete
+	ld hl, .CallCancelJumptable
+	ld de, .CallCancelStrings
+.got_menu_data
 	xor a
 	ld [hBGMapMode], a
 	push hl
@@ -1171,100 +1159,100 @@ Function91342: ; 91342 (24:5342)
 	call PlaceString
 	pop de
 	xor a
-	ld [wc6d4], a
-	call Function9141d
+	ld [wPokegearPhoneSubmenuCursor], a
+	call .UpdateCursor
 	call WaitBGMap
-
-.asm_91398
+.loop
 	push de
 	call JoyTextDelay
 	pop de
 	ld hl, hJoyPressed
 	ld a, [hl]
 	and D_UP
-	jr nz, .asm_913b4
+	jr nz, .d_up
 	ld a, [hl]
 	and D_DOWN
-	jr nz, .asm_913c1
+	jr nz, .d_down
 	ld a, [hl]
 	and A_BUTTON | B_BUTTON
-	jr nz, .asm_913d4
+	jr nz, .a_b
 	call DelayFrame
-	jr .asm_91398
+	jr .loop
 
-.asm_913b4
-	ld hl, wc6d4
+.d_up
+	ld hl, wPokegearPhoneSubmenuCursor
 	ld a, [hl]
 	and a
-	jr z, .asm_91398
+	jr z, .loop
 	dec [hl]
-	call Function9141d
-	jr .asm_91398
+	call .UpdateCursor
+	jr .loop
 
-.asm_913c1
+.d_down
 	ld hl, 2
 	add hl, de
-	ld a, [wc6d4]
+	ld a, [wPokegearPhoneSubmenuCursor]
 	inc a
 	cp [hl]
-	jr nc, .asm_91398
-	ld [wc6d4], a
-	call Function9141d
-	jr .asm_91398
+	jr nc, .loop
+	ld [wPokegearPhoneSubmenuCursor], a
+	call .UpdateCursor
+	jr .loop
 
-.asm_913d4
+.a_b
 	xor a
 	ld [hBGMapMode], a
-	call Function912d8
+	call PokegearPhone_UpdateDisplayList
 	ld a, $1
 	ld [hBGMapMode], a
 	pop hl
 	ld a, [hJoyPressed]
 	and B_BUTTON
-	jr nz, Function913f1
-
-	ld a, [wc6d4]
+	jr nz, .Cancel
+	ld a, [wPokegearPhoneSubmenuCursor]
 	ld e, a
 	ld d, 0
-rept 2
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
 	jp [hl]
 
-Function913f1: ; 913f1
-	ld hl, UnknownText_0x914ce
+.Cancel: ; 913f1
+	ld hl, PokegearText_WhomToCall
 	call PrintText
 	scf
 	ret
+
 ; 913f9 (24:53f9)
 
-Function913f9: ; 913f9
-	ld hl, UnknownText_0x914d8
+.Delete: ; 913f9
+	ld hl, PokegearText_DeleteStoredNumber
 	call MenuTextBox
 	call YesNoBox
 	call ExitMenu
-	jr c, .asm_91419
-	call Function9131e
+	jr c, .CancelDelete
+	call PokegearPhone_DeletePhoneNumber
 	xor a
 	ld [hBGMapMode], a
-	call Function912d8
-	ld hl, UnknownText_0x914ce
+	call PokegearPhone_UpdateDisplayList
+	ld hl, PokegearText_WhomToCall
 	call PrintText
 	call WaitBGMap
-.asm_91419
+.CancelDelete
 	scf
 	ret
+
 ; 9141b
 
-Function9141b: ; 9141b
+.Call: ; 9141b
 	and a
 	ret
+
 ; 9141d
 
-Function9141d: ; 9141d (24:541d)
+.UpdateCursor: ; 9141d (24:541d)
 	push de
 	ld a, [de]
 	inc de
@@ -1276,22 +1264,23 @@ Function9141d: ; 9141d (24:541d)
 	ld c, a
 	push hl
 	ld a, " "
-	ld de, 20 * 2
-.asm_9142c
+	ld de, SCREEN_WIDTH * 2
+.clear_column
 	ld [hl], a
 	add hl, de
 	dec c
-	jr nz, .asm_9142c
+	jr nz, .clear_column
 	pop hl
-	ld a, [wc6d4]
-	ld bc, 20 * 2
+	ld a, [wPokegearPhoneSubmenuCursor]
+	ld bc, SCREEN_WIDTH  * 2
 	call AddNTimes
 	ld [hl], "▶"
 	pop de
 	ret
+
 ; 9143f (24:543f)
 
-Unknown_9143f: ; 9143f
+.CallDeleteCancelStrings: ; 9143f
 	dwcoord 10, 6
 	db 3
 	db   "CALL"
@@ -1300,13 +1289,14 @@ Unknown_9143f: ; 9143f
 	db   "@"
 ; 91455
 
-Jumptable_91455: ; 91455
-	dw Function9141b
-	dw Function913f9
-	dw Function913f1
+.CallDeleteCancelJumptable: ; 91455
+	dw .Call
+	dw .Delete
+	dw .Cancel
+
 ; 9145b
 
-Unknown_9145b: ; 9145b
+.CallCancelStrings: ; 9145b
 	dwcoord 10, 8
 	db 2
 	db   "CALL"
@@ -1314,29 +1304,29 @@ Unknown_9145b: ; 9145b
 	db   "@"
 ; 9146a
 
-Jumptable_9146a: ; 9146a
-	dw Function9141b
-	dw Function913f1
+.CallCancelJumptable: ; 9146a
+	dw .Call
+	dw .Cancel
+
 ; 9146e
 
-
-Function9146e: ; 9146e
+; XXX
 	ld a, [hHours]
 	cp 12
-	jr c, .asm_9147b
+	jr c, .am
 	sub 12
 	ld [wd265], a
 	scf
 	ret
 
-.asm_9147b
+.am
 	ld [wd265], a
 	and a
 	ret
+
 ; 91480
 
-
-Function91480: ; 91480 (24:5480)
+Pokegear_SwitchPage: ; 91480 (24:5480)
 	ld de, SFX_READ_TEXT_2
 	call PlaySFX
 	ld a, c
@@ -1347,22 +1337,22 @@ Function91480: ; 91480 (24:5480)
 	ret
 
 Function91492: ; 91492
-	ld a, [wc6dc]
+	ld a, [wPokegearRadioMusicPlaying]
 	cp $fe
 	jr z, .asm_914a3
 	cp $ff
 	call z, EnterMapMusic
 	xor a
-	ld [wc6dc], a
+	ld [wPokegearRadioMusicPlaying], a
 	ret
 
 .asm_914a3
 	call RestartMapMusic
 	xor a
-	ld [wc6dc], a
+	ld [wPokegearRadioMusicPlaying], a
 	ret
-; 914ab
 
+; 914ab
 
 DeleteSpriteAnimStruct2ToEnd: ; 914ab (24:54ab)
 	ld hl, SpriteAnim2
@@ -1373,9 +1363,9 @@ DeleteSpriteAnimStruct2ToEnd: ; 914ab (24:54ab)
 	ld [wSpriteAnimCount], a
 	ret
 
-Function914bb: ; 914bb (24:54bb)
+Pokegear_LoadTilemapRLE: ; 914bb (24:54bb)
 	hlcoord 0, 0
-.asm_914be
+.row
 	ld a, [de]
 	cp $ff
 	ret z
@@ -1385,31 +1375,34 @@ Function914bb: ; 914bb (24:54bb)
 	ld c, a
 	inc de
 	ld a, b
-.asm_914c8
+.col
 	ld [hli], a
 	dec c
-	jr nz, .asm_914c8
-	jr .asm_914be
+	jr nz, .col
+	jr .row
+
 ; 914ce (24:54ce)
 
-UnknownText_0x914ce: ; 0x914ce
+PokegearText_WhomToCall: ; 0x914ce
 	; Whom do you want to call?
 	text_jump UnknownText_0x1c5847
 	db "@"
+
 ; 0x914d3
 
-UnknownText_0x914d3: ; 0x914d3
+PokegearText_PressAnyButtonToExit: ; 0x914d3
 	; Press any button to exit.
 	text_jump UnknownText_0x1c5862
 	db "@"
+
 ; 0x914d8
 
-UnknownText_0x914d8: ; 0x914d8
+PokegearText_DeleteStoredNumber: ; 0x914d8
 	; Delete this stored phone number?
 	text_jump UnknownText_0x1c587d
 	db "@"
-; 0x914dd
 
+; 0x914dd
 
 PokegearSpritesGFX: ; 914dd
 INCBIN "gfx/misc/pokegear_sprites.2bpp.lz"
@@ -1417,17 +1410,17 @@ INCBIN "gfx/misc/pokegear_sprites.2bpp.lz"
 
 RadioTilemapRLE: ; 9150d
 INCBIN "gfx/unknown/09150d.tilemap.rle"
-
 PhoneTilemapRLE: ; 9158a
 INCBIN "gfx/unknown/09158a.tilemap.rle"
-
 ClockTilemapRLE: ; 915db
 INCBIN "gfx/unknown/0915db.tilemap.rle"
 ; 9163e
+
 _UpdateRadioStation: ; 9163e (24:563e)
 	jr UpdateRadioStation
 
 ; called from engine/sprite_anims.asm
+
 AnimateTuningKnob: ; 91640 (24:5640)
 	push bc
 	call .TuningKnob
@@ -1453,9 +1446,8 @@ AnimateTuningKnob: ; 91640 (24:5640)
 	ld a, [hl]
 	and a
 	ret z
-rept 2
 	dec [hl]
-endr
+	dec [hl]
 	jr .update
 
 .up
@@ -1463,12 +1455,9 @@ endr
 	ld a, [hl]
 	cp 80
 	ret nc
-rept 2
 	inc [hl]
-endr
-
+	inc [hl]
 .update
-
 UpdateRadioStation: ; 9166f (24:566f)
 	ld hl, wRadioTuningKnob
 	ld d, [hl]
@@ -1479,9 +1468,8 @@ UpdateRadioStation: ; 9166f (24:566f)
 	jr z, .nostation
 	cp d
 	jr z, .foundstation
-rept 2
 	inc hl
-endr
+	inc hl
 	jr .loop
 
 .nostation
@@ -1495,8 +1483,9 @@ endr
 	ld de, .returnafterstation
 	push de
 	jp [hl]
+
 .returnafterstation
-	ld a, [wc6d9]
+	ld a, [wPokegearRadioChannelBank]
 	and a
 	ret z
 	xor a
@@ -1506,20 +1495,22 @@ endr
 	ld a, $1
 	ld [hBGMapMode], a
 	ret
+
 ; 916a1 (24:56a1)
 
 Function916a1: ; 916a1
-	ld [wc6d9], a
+	ld [wPokegearRadioChannelBank], a
 	ld a, [hli]
-	ld [wc6da], a
+	ld [wPokegearRadioChannelAddr], a
 	ld a, [hli]
-	ld [wc6db], a
+	ld [wPokegearRadioChannelAddr + 1], a
 	ret
-; 916ad
 
+; 916ad
 
 RadioChannels:
 ; frequencies and the shows that play on them.
+
 ; frequency value given here = 4 × ingame_frequency − 2
 	dbw 16, .PkmnTalkAndPokedexShow
 	dbw 28, .PokemonMusic
@@ -1534,6 +1525,7 @@ RadioChannels:
 
 .PkmnTalkAndPokedexShow
 ; Pokédex Show in the morning
+
 ; Oak's Pokémon Talk in the afternoon and evening
 	call .InJohto
 	jr nc, .NoSignal
@@ -1589,11 +1581,9 @@ RadioChannels:
 
 .EvolutionRadio
 ; This station airs in the Lake of Rage area when Rocket are still in Mahogany.
-
 	ld a, [StatusFlags]
 	bit 4, a
 	jr z, .NoSignal
-
 	ld a, [wTownMapPlayerIconLandmark]
 	cp MAHOGANY_TOWN
 	jr z, .ok
@@ -1610,6 +1600,7 @@ RadioChannels:
 
 .InJohto
 ; if in Johto or on the S.S. Aqua, set carry
+
 ; otherwise clear carry
 	ld a, [wTownMapPlayerIconLandmark]
 	cp FAST_SHIP
@@ -1619,12 +1610,11 @@ RadioChannels:
 .kanto
 	and a
 	ret
+
 .johto
 	scf
 	ret
 
-
-
 LoadStation_OaksPokemonTalk: ; 91753 (24:5753)
 	xor a ; OAKS_POKEMON_TALK
 	ld [wd002], a
@@ -1682,6 +1672,7 @@ LoadStation_BuenasPassword: ; 917a5 (24:57a5)
 	ret z
 	ld de, BuenasPasswordName
 	ret
+
 ; 917c3 (24:57c3)
 
 BuenasPasswordName:    db "BUENA'S PASSWORD@"
@@ -1719,6 +1710,7 @@ LoadStation_LetsAllSing: ; 917ff (24:57ff)
 	call Radio_BackUpFarCallParams
 	ld de, LetsAllSingName
 	ret
+
 ; 91814 (24:5814)
 
 LoadStation_RocketRadio: ; 91814
@@ -1731,6 +1723,7 @@ LoadStation_RocketRadio: ; 91814
 	call Radio_BackUpFarCallParams
 	ld de, LetsAllSingName
 	ret
+
 ; 91829
 
 LoadStation_PokeFluteRadio: ; 91829 (24:5829)
@@ -1754,6 +1747,7 @@ LoadStation_EvolutionRadio: ; 9183e (24:583e)
 	call Radio_BackUpFarCallParams
 	ld de, UnknownStationName
 	ret
+
 ; 91853 (24:5853)
 
 LoadStation_Dummy: ; 91853
@@ -1762,7 +1756,7 @@ LoadStation_Dummy: ; 91853
 RadioMusicRestartDE: ; 91854 (24:5854)
 	push de
 	ld a, e
-	ld [wc6dc], a
+	ld [wPokegearRadioMusicPlaying], a
 	ld de, MUSIC_NONE
 	call PlayMusic
 	pop de
@@ -1774,7 +1768,7 @@ RadioMusicRestartDE: ; 91854 (24:5854)
 RadioMusicRestartPokemonChannel: ; 91868 (24:5868)
 	push de
 	ld a, $fe
-	ld [wc6dc], a
+	ld [wPokegearRadioMusicPlaying], a
 	ld de, MUSIC_NONE
 	call PlayMusic
 	pop de
@@ -1783,20 +1777,20 @@ RadioMusicRestartPokemonChannel: ; 91868 (24:5868)
 	ret
 
 Radio_BackUpFarCallParams: ; 9187c (24:587c)
-	ld [wc6d9], a
+	ld [wPokegearRadioChannelBank], a
 	ld a, l
-	ld [wc6da], a
+	ld [wPokegearRadioChannelAddr], a
 	ld a, h
-	ld [wc6db], a
+	ld [wPokegearRadioChannelAddr + 1], a
 	ret
 
 NoRadioStation: ; 91888 (24:5888)
 	call NoRadioMusic
 	call NoRadioName
 	xor a
-	ld [wc6d9], a
-	ld [wc6da], a
-	ld [wc6db], a
+	ld [wPokegearRadioChannelBank], a
+	ld [wPokegearRadioChannelAddr], a
+	ld [wPokegearRadioChannelAddr + 1], a
 	ld a, $1
 	ld [hBGMapMode], a
 	ret
@@ -1805,7 +1799,7 @@ NoRadioMusic: ; 9189d (24:589d)
 	ld de, MUSIC_NONE
 	call PlayMusic
 	ld a, $ff
-	ld [wc6dc], a
+	ld [wPokegearRadioMusicPlaying], a
 	ret
 
 NoRadioName: ; 918a9 (24:58a9)
@@ -1818,6 +1812,7 @@ NoRadioName: ; 918a9 (24:58a9)
 	ld bc, $412
 	call TextBox
 	ret
+
 ; 918bf
 
 OaksPkmnTalkName:     db "OAK's <PK><MN> Talk@"
@@ -1825,12 +1820,182 @@ PokedexShowName:      db "#DEX Show@"
 PokemonMusicName:     db "#MON Music@"
 LuckyChannelName:     db "Lucky Channel@"
 UnknownStationName:   db "?????@"
+
 PlacesAndPeopleName:  db "Places & People@"
 LetsAllSingName:      db "Let's All Sing!@"
 PokeFluteStationName: db "# FLUTE@"
 ; 9191c
 
-INCLUDE "engine/town_map.asm"
+_TownMap: ; 9191c
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set NO_TEXT_SCROLL, [hl]
+
+	ld a, [hInMenu]
+	push af
+	ld a, $1
+	ld [hInMenu], a
+
+	ld a, [VramState]
+	push af
+	xor a
+	ld [VramState], a
+
+	call ClearBGPalettes
+	call ClearTileMap
+	call ClearSprites
+	call DisableLCD
+	call Function90c4e
+	callba ClearSpriteAnims
+	ld a, 8
+	call SkipMusic
+	ld a, $e3
+	ld [rLCDC], a
+	call Function90d56
+	ld [wd002], a
+	ld [wd003], a
+	xor a
+	ld [hBGMapMode], a
+	call .InitTilemap
+	call WaitBGMap2
+	ld a, [wd002]
+	call PokegearMap_InitPlayerIcon
+	ld a, [wd003]
+	call PokegearMap_InitCursor
+	ld a, c
+	ld [wd004], a
+	ld a, b
+	ld [wd005], a
+	ld b, SCGB_POKEGEAR_PALS
+	call GetSGBLayout
+	call SetPalettes
+	ld a, [hCGB]
+	and a
+	jr z, .dmg
+	ld a, %11100100
+	call DmgToCgbObjPal0
+	call DelayFrame
+
+.dmg
+	ld a, [wd002]
+	cp KANTO_LANDMARK
+	jr nc, .kanto
+	ld d, KANTO_LANDMARK - 1
+	ld e, 1
+	call .loop
+	jr .resume
+
+.kanto
+	call TownMap_GetKantoLandmarkLimits
+	call .loop
+
+.resume
+	pop af
+	ld [VramState], a
+	pop af
+	ld [hInMenu], a
+	pop af
+	ld [Options], a
+	call ClearBGPalettes
+	ret
+
+.loop
+	call JoyTextDelay
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and B_BUTTON
+	ret nz
+
+	ld hl, hJoyLast
+	ld a, [hl]
+	and D_UP
+	jr nz, .pressed_up
+
+	ld a, [hl]
+	and D_DOWN
+	jr nz, .pressed_down
+.loop2
+	push de
+	callba PlaySpriteAnimations
+	pop de
+	call DelayFrame
+	jr .loop
+
+.pressed_up
+	ld hl, wd003
+	ld a, [hl]
+	cp d
+	jr c, .okay
+	ld a, e
+	dec a
+	ld [hl], a
+
+.okay
+	inc [hl]
+	jr .next
+
+.pressed_down
+	ld hl, wd003
+	ld a, [hl]
+	cp e
+	jr nz, .okay2
+	ld a, d
+	inc a
+	ld [hl], a
+
+.okay2
+	dec [hl]
+
+.next
+	push de
+	ld a, [wd003]
+	call Function910b4
+	ld a, [wd004]
+	ld c, a
+	ld a, [wd005]
+	ld b, a
+	ld a, [wd003]
+	call Function910d4
+	pop de
+	jr .loop2
+; 91a04
+
+.InitTilemap: ; 91a04
+	ld a, [wd002]
+	cp KANTO_LANDMARK
+	jr nc, .kanto
+	ld e, $0
+	jr .okay
+
+.kanto
+	ld e, $1
+
+.okay
+	callba PokegearMap
+	ld a, $7
+	ld bc, 6
+	hlcoord 1, 0
+	call ByteFill
+	hlcoord 0, 0
+	ld [hl], $6
+	hlcoord 7, 0
+	ld [hl], $17
+	hlcoord 7, 1
+	ld [hl], $16
+	hlcoord 7, 2
+	ld [hl], $26
+	ld a, $7
+	ld bc, NAME_LENGTH
+	hlcoord 8, 2
+	call ByteFill
+	hlcoord 19, 2
+	ld [hl], $17
+	ld a, [wd003]
+	call Function910b4
+	callba TownMapPals
+	ret
+; 91a53
 
 PlayRadio: ; 91a53
 	ld hl, Options
@@ -1845,15 +2010,14 @@ PlayRadio: ; 91a53
 	ld a, [hJoyPressed]
 	and A_BUTTON | B_BUTTON
 	jr nz, .stop
-	ld a, [wc6da]
+	ld a, [wPokegearRadioChannelAddr]
 	ld l, a
-	ld a, [wc6db]
+	ld a, [wPokegearRadioChannelAddr + 1]
 	ld h, a
-	ld a, [wc6d9]
+	ld a, [wPokegearRadioChannelBank]
 	and a
 	jr z, .zero
 	rst FarCall
-
 .zero
 	call DelayFrame
 	jr .loop
@@ -1863,6 +2027,7 @@ PlayRadio: ; 91a53
 	ld [Options], a
 	call Function91492
 	ret
+
 ; 91a87
 
 .PlayStation: ; 91a87
@@ -1870,9 +2035,8 @@ PlayRadio: ; 91a53
 	ld [EnemyTurnsTaken], a
 	ld hl, .StationPointers
 	ld d, $0
-rept 2
 	add hl, de
-endr
+	add hl, de
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -1895,6 +2059,7 @@ endr
 	ld [hl], $73
 	call WaitBGMap
 	ret
+
 ; 91ab9
 
 .StationPointers: ; 91ab9
@@ -1907,6 +2072,7 @@ endr
 	dw LoadStation_PlacesAndPeople
 	dw LoadStation_LetsAllSing
 	dw LoadStation_RocketRadio
+
 ; 91acb
 
 .OakOrPnP: ; 91acb
@@ -1921,6 +2087,7 @@ endr
 
 .kanto
 	jp LoadStation_PlacesAndPeople
+
 ; 91ae1
 
 PokegearMap: ; 91ae1
@@ -1935,6 +2102,7 @@ PokegearMap: ; 91ae1
 	call LoadTownMapGFX
 	call FillKantoMap
 	ret
+
 ; 91af3
 
 _FlyMap: ; 91af3
@@ -1985,7 +2153,6 @@ _FlyMap: ; 91af3
 	ld de, Flypoints + 1
 	add hl, de
 	ld a, [hl]
-
 .exit
 	ld [wd002], a
 	pop af
@@ -2000,6 +2167,7 @@ _FlyMap: ; 91af3
 	ld a, [wd002]
 	ld e, a
 	ret
+
 ; 91b73
 
 FlyMapScroll: ; 91b73
@@ -2024,7 +2192,6 @@ FlyMapScroll: ; 91b73
 	ld a, e
 	dec a
 	ld [hl], a
-
 .NotAtEndYet
 	inc [hl]
 	call CheckIfVisitedFlypoint
@@ -2039,18 +2206,17 @@ FlyMapScroll: ; 91b73
 	ld a, d
 	inc a
 	ld [hl], a
-
 .NotAtStartYet
 	dec [hl]
 	call CheckIfVisitedFlypoint
 	jr z, .ScrollPrev
-
 .Finally
 	call TownMapBubble
 	call WaitBGMap
 	xor a
 	ld [hBGMapMode], a
 	ret
+
 ; 91bb5
 
 TownMapBubble: ; 91bb5
@@ -2060,47 +2226,38 @@ TownMapBubble: ; 91bb5
 	hlcoord 1, 0
 	ld a, $30
 	ld [hli], a
-
 ; Top row
 	ld bc, 16
 	ld a, " "
 	call ByteFill
-
 ; Top-right corner
 	ld a, $31
 	ld [hl], a
 	hlcoord 1, 1
 
-
 ; Middle row
 	ld bc, 18
 	ld a, " "
 	call ByteFill
 
-
 ; Bottom-left corner
 	hlcoord 1, 2
 	ld a, $32
 	ld [hli], a
-
 ; Bottom row
 	ld bc, 16
 	ld a, " "
 	call ByteFill
-
 ; Bottom-right corner
 	ld a, $33
 	ld [hl], a
 
-
 ; Print "Where?"
 	hlcoord 2, 0
 	ld de, .Where
 	call PlaceString
-
 ; Print the name of the default flypoint
 	call .Name
-
 ; Up/down arrows
 	hlcoord 18, 1
 	ld [hl], $34	
@@ -2118,13 +2275,12 @@ TownMapBubble: ; 91bb5
 	ld de, Flypoints
 	add hl, de
 	ld e, [hl]
-
 	callba GetLandmarkName
-
 	hlcoord 2, 1
 	ld de, StringBuffer1
 	call PlaceString
 	ret
+
 ; 91c17
 
 GetMapCursorCoordinates: ; 91c17
@@ -2147,6 +2303,7 @@ GetMapCursorCoordinates: ; 91c17
 	add hl, bc
 	ld [hl], d
 	ret
+
 ; 91c3c
 
 CheckIfVisitedFlypoint: ; 91c3c
@@ -2166,6 +2323,7 @@ CheckIfVisitedFlypoint: ; 91c3c
 	pop bc
 	and a
 	ret
+
 ; 91c50
 
 HasVisitedSpawn: ; 91c50
@@ -2176,18 +2334,16 @@ HasVisitedSpawn: ; 91c50
 	predef FlagPredef
 	ld a, c
 	ret
+
 ; 91c5e
 
 Flypoints: ; 91c5e
 ; landmark, spawn point
-
 	const_def
-
 flypoint: MACRO
 	const FLY_\1
 	db \2, SPAWN_\1
 ENDM
-
 ; Johto
 	flypoint NEW_BARK,    NEW_BARK_TOWN
 	flypoint CHERRYGROVE, CHERRYGROVE_CITY
@@ -2201,10 +2357,9 @@ ENDM
 	flypoint LAKE,        LAKE_OF_RAGE
 	flypoint BLACKTHORN,  BLACKTHORN_CITY
 	flypoint MT_SILVER,   SILVER_CAVE
-
 ; Kanto
-KANTO_FLYPOINT EQU const_value
 
+KANTO_FLYPOINT EQU const_value
 	flypoint PALLET,      PALLET_TOWN
 	flypoint VIRIDIAN,    VIRIDIAN_CITY
 	flypoint PEWTER,      PEWTER_CITY
@@ -2217,54 +2372,46 @@ KANTO_FLYPOINT EQU const_value
 	flypoint FUCHSIA,     FUCHSIA_CITY
 	flypoint CINNABAR,    CINNABAR_ISLAND
 	flypoint INDIGO,      INDIGO_PLATEAU
-
 	db -1
+
 ; 91c8f
 
 ret_91c8f: ; 91c8f
 	ret
+
 ; 91c90
 
 FlyMap: ; 91c90
-
 	ld a, [MapGroup]
 	ld b, a
 	ld a, [MapNumber]
 	ld c, a
 	call GetWorldMapLocation
-
 ; If we're not in a valid location, i.e. Pokecenter floor 2F,
-; the backup map information is used
 
+; the backup map information is used
 	cp SPECIAL_MAP
 	jr nz, .CheckRegion
-
 	ld a, [BackupMapGroup]
 	ld b, a
 	ld a, [BackupMapNumber]
 	ld c, a
 	call GetWorldMapLocation
-
 .CheckRegion
 ; The first 46 locations are part of Johto. The rest are in Kanto
 	cp KANTO_LANDMARK
 	jr nc, .KantoFlyMap
-
 .JohtoFlyMap
 ; Note that .NoKanto should be modified in tandem with this branch
-
 	push af
-
 ; Start from New Bark Town
 	ld a, FLY_NEW_BARK
 	ld [wd002], a
-
 ; Flypoints begin at New Bark Town...
 	ld [StartFlypoint], a
 ; ..and end at Silver Cave
 	ld a, FLY_MT_SILVER
 	ld [EndFlypoint], a
-
 ; Fill out the map
 	call FillJohtoMap
 	call .MapHud
@@ -2273,23 +2420,23 @@ FlyMap: ; 91c90
 	ret
 
 .KantoFlyMap
-
 ; The event that there are no flypoints enabled in a map is not
+
 ; accounted for. As a result, if you attempt to select a flypoint
 ; when there are none enabled, the game will crash. Additionally,
+
 ; the flypoint selection has a default starting point that
 ; can be flown to even if none are enabled
 
 ; To prevent both of these things from happening when the player
 ; enters Kanto, fly access is restricted until Indigo Plateau is
-; visited and its flypoint enabled
 
+; visited and its flypoint enabled
 	push af
 	ld c, SPAWN_INDIGO
 	call HasVisitedSpawn
 	and a
 	jr z, .NoKanto
-
 ; Kanto's map is only loaded if we've visited Indigo Plateau
 
 ; Flypoints begin at Pallet Town...
@@ -2298,11 +2445,10 @@ FlyMap: ; 91c90
 ; ...and end at Indigo Plateau
 	ld a, FLY_INDIGO
 	ld [EndFlypoint], a
-
 ; Because Indigo Plateau is the first flypoint the player
+
 ; visits, it's made the default flypoint
 	ld [wd002], a
-
 ; Fill out the map
 	call FillKantoMap
 	call .MapHud
@@ -2316,30 +2462,25 @@ FlyMap: ; 91c90
 ; Start from New Bark Town
 	ld a, FLY_NEW_BARK
 	ld [wd002], a
-
 ; Flypoints begin at New Bark Town...
 	ld [StartFlypoint], a
 ; ..and end at Silver Cave
 	ld a, FLY_MT_SILVER
 	ld [EndFlypoint], a
-
 	call FillJohtoMap
-
 	pop af
-
 .MapHud
 	call TownMapBubble
 	call TownMapPals
-
 	hlbgcoord 0, 0 ; BG Map 0
 	call TownMapBGUpdate
-
 	call TownMapMon
 	ld a, c
 	ld [wd003], a
 	ld a, b
 	ld [wd004], a
 	ret
+
 ; 91d11
 
 _Area: ; 91d11
@@ -2355,17 +2496,14 @@ _Area: ; 91d11
 	ld [hBGMapMode], a
 	ld a, $1
 	ld [hInMenu], a
-
 	ld de, PokedexNestIconGFX
 	ld hl, VTiles0 tile $7f
 	lb bc, BANK(PokedexNestIconGFX), 1
 	call Request2bpp
-
 	call .GetPlayerOrFastShipIcon
 	ld hl, VTiles0 tile $78
 	ld c, 4
 	call Request2bpp
-
 	call LoadTownMapGFX
 	call FillKantoMap
 	call .PlaceString_MonsNest
@@ -2399,7 +2537,6 @@ _Area: ; 91d11
 
 .select
 	call .HideNestsShowPlayer
-
 .next
 	call DelayFrame
 	jr .loop
@@ -2411,6 +2548,7 @@ _Area: ; 91d11
 	pop af
 	ld [wd002], a
 	ret
+
 ; 91d9b
 
 .LeftRightInput: ; 91d9b
@@ -2446,6 +2584,7 @@ _Area: ; 91d11
 	ld a, 1 ; Kanto
 	call .GetAndPlaceNest
 	ret
+
 ; 91dcd
 
 .BlinkNestIcons: ; 91dcd
@@ -2465,6 +2604,7 @@ _Area: ; 91d11
 	ld bc, SpritesEnd - Sprites
 	call CopyBytes
 	ret
+
 ; 91de9
 
 .PlaceString_MonsNest: ; 91de9
@@ -2487,6 +2627,7 @@ _Area: ; 91d11
 	ld de, .String_SNest
 	call PlaceString
 	ret
+
 ; 91e16
 
 .String_SNest:
@@ -2530,12 +2671,12 @@ _Area: ; 91d11
 	ld bc, SpritesEnd - Sprites
 	call CopyBytes
 	ret
+
 ; 91e5a
 
 .HideNestsShowPlayer: ; 91e5a
 	call .CheckPlayerLocation
 	ret c
-
 	ld a, [wd002]
 	ld e, a
 	callba GetLandmarkCoords
@@ -2547,21 +2688,17 @@ _Area: ; 91d11
 	ld a, [de]
 	cp $80
 	jr z, .copy
-
 	add b
 	ld [hli], a
 	inc de
-
 	ld a, [de]
 	add c
 	ld [hli], a
 	inc de
-
 	ld a, [de]
 	add $78 ; where the player's sprite is loaded
 	ld [hli], a
 	inc de
-
 	push bc
 	ld c, 0 ; RED
 	ld a, [PlayerGender]
@@ -2572,7 +2709,6 @@ _Area: ; 91d11
 	ld a, c
 	ld [hli], a
 	pop bc
-
 	jr .ShowPlayerLoop
 
 .copy
@@ -2581,6 +2717,7 @@ _Area: ; 91d11
 	xor a
 	call ByteFill
 	ret
+
 ; 91e9c
 
 .PlayerOAM: ; 91e9c
@@ -2593,6 +2730,7 @@ _Area: ; 91d11
 
 .CheckPlayerLocation: ; 91ea9
 ; Don't show the player's sprite if you're
+
 ; not in the same region as what's currently
 ; on the screen.
 	ld a, [wd002]
@@ -2600,7 +2738,6 @@ _Area: ; 91d11
 	jr z, .johto
 	cp KANTO_LANDMARK
 	jr c, .johto
-
 .kanto
 	ld a, [wd003]
 	and a
@@ -2611,7 +2748,6 @@ _Area: ; 91d11
 	ld a, [wd003]
 	and a
 	jr nz, .clear
-
 .ok
 	and a
 	ret
@@ -2623,6 +2759,7 @@ _Area: ; 91d11
 	call ByteFill
 	scf
 	ret
+
 ; 91ed0
 
 .GetPlayerOrFastShipIcon: ; 91ed0
@@ -2636,6 +2773,7 @@ _Area: ; 91d11
 	ld de, FastShipGFX
 	ld b, BANK(FastShipGFX)
 	ret
+
 ; 91ee4
 
 TownMapBGUpdate: ; 91ee4
@@ -2646,29 +2784,26 @@ TownMapBGUpdate: ; 91ee4
 	ld [hBGMapAddress], a
 	ld a, h
 	ld [hBGMapAddress + 1], a
-
 ; Only update palettes on CGB
 	ld a, [hCGB]
 	and a
 	jr z, .tiles
-
 ; BG Map mode 2 (palettes)
 	ld a, 2
 	ld [hBGMapMode], a
-
 ; The BG Map is updated in thirds, so we wait
+
 ; 3 frames to update the whole screen's palettes.
 	ld c, 3
 	call DelayFrames
-
 .tiles
 ; Update BG Map tiles
 	call WaitBGMap
-
 ; Turn off BG Map update
 	xor a
 	ld [hBGMapMode], a
 	ret
+
 ; 91eff
 
 FillJohtoMap: ; 91eff
@@ -2677,7 +2812,6 @@ FillJohtoMap: ; 91eff
 
 FillKantoMap: ; 91f04
 	ld de, KantoMap
-
 FillTownMap: ; 91f07
 	hlcoord 0, 0
 .loop
@@ -2688,11 +2822,11 @@ FillTownMap: ; 91f07
 	ld [hli], a
 	inc de
 	jr .loop
+
 ; 91f13
 
 TownMapPals: ; 91f13
 ; Assign palettes based on tile ids
-
 	hlcoord 0, 0
 	decoord 0, 0, AttrMap
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
@@ -2700,17 +2834,15 @@ TownMapPals: ; 91f13
 ; Current tile
 	ld a, [hli]
 	push hl
-
 ; HP/borders use palette 0
 	cp $60
 	jr nc, .pal0
-
 ; The palette data is condensed to nybbles,
+
 ; least-significant first.
 	ld hl, TownMapPalMap
 	srl a
 	jr c, .odd
-
 ; Even-numbered tile ids take the bottom nybble...
 	add l
 	ld l, a
@@ -2735,7 +2867,6 @@ TownMapPals: ; 91f13
 
 .pal0
 	xor a
-
 .update
 	pop hl
 	ld [de], a
@@ -2766,16 +2897,13 @@ TownMapMon: ; 91f7b
 	add hl, de
 	ld a, [hl]
 	ld [wd265], a
-
 ; Get FlyMon icon
 	ld e, 8 ; starting tile in VRAM
 	callba GetSpeciesIcon
-
 ; Animation/palette
 	depixel 0, 0
 	ld a, SPRITE_ANIM_INDEX_00
 	call _InitSpriteAnimStruct
-
 	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
 	ld [hl], $8
@@ -2783,19 +2911,17 @@ TownMapMon: ; 91f7b
 	add hl, bc
 	ld [hl], SPRITE_ANIM_SEQ_NULL
 	ret
+
 ; 91fa6
 
 TownMapPlayerIcon: ; 91fa6
 ; Draw the player icon at town map location in a
 	push af
-
 	callba GetPlayerIcon
-
 ; Standing icon
 	ld hl, VTiles0 tile $10
 	ld c, 4 ; # tiles
 	call Request2bpp
-
 ; Walking icon
 	ld hl, $c0
 	add hl, de
@@ -2805,28 +2931,24 @@ TownMapPlayerIcon: ; 91fa6
 	ld c, 4 ; # tiles
 	ld a, BANK(ChrisSpriteGFX) ; does nothing
 	call Request2bpp
-
 ; Animation/palette
 	depixel 0, 0
-	ld b, SPRITE_ANIM_INDEX_WALK_CYCLE ; Male
+	ld b, SPRITE_ANIM_INDEX_RED_WALK ; Male
 	ld a, [PlayerGender]
 	bit 0, a
 	jr z, .got_gender
-	ld b, SPRITE_ANIM_INDEX_1E ; Female
+	ld b, SPRITE_ANIM_INDEX_BLUE_WALK ; Female
 .got_gender
 	ld a, b
 	call _InitSpriteAnimStruct
-
 	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
 	ld [hl], $10
-
 	pop af
 	ld e, a
 	push bc
 	callba GetLandmarkCoords
 	pop bc
-
 	ld hl, SPRITEANIMSTRUCT_XCOORD
 	add hl, bc
 	ld [hl], e
@@ -2834,6 +2956,7 @@ TownMapPlayerIcon: ; 91fa6
 	add hl, bc
 	ld [hl], d
 	ret
+
 ; 0x91ff2
 
 LoadTownMapGFX: ; 91ff2
@@ -2842,8 +2965,8 @@ LoadTownMapGFX: ; 91ff2
 	lb bc, BANK(TownMapGFX), $30
 	call DecompressRequest2bpp
 	ret
-; 91fff
 
+; 91fff
 
 JohtoMap: ; 91fff
 INCBIN "gfx/misc/johto.bin"
@@ -2855,10 +2978,8 @@ INCBIN "gfx/misc/kanto.bin"
 
 PokedexNestIconGFX: ; 922d1
 INCBIN "gfx/pokegear/dexmap_nest_icon.2bpp"
-
 FlyMapLabelBorderGFX: ; 922e1
 INCBIN "gfx/pokegear/flymap_label_border.2bpp"
-
 Function92311: ; 92311
 ; unreferenced
 	xor a
@@ -2923,7 +3044,6 @@ Function92311: ; 92311
 	ld de, Flypoints + 1
 	add hl, de
 	ld a, [hl]
-
 .asm_9239f
 	ld [wd002], a
 	pop af
@@ -2938,6 +3058,7 @@ Function92311: ; 92311
 	ld a, [wd002]
 	ld e, a
 	ret
+
 ; 923b8
 
 .HandleDPad: ; 923b8
@@ -2968,12 +3089,10 @@ Function92311: ; 92311
 	ld [hl], FLY_INDIGO + 1
 .okay_ul
 	dec [hl]
-
 .continue
 	ld a, [wd002]
 	cp KANTO_FLYPOINT
 	jr c, .johto
-
 	call FillKantoMap
 	xor a
 	ld b, $9c
@@ -2983,7 +3102,6 @@ Function92311: ; 92311
 	call FillJohtoMap
 	ld a, $90
 	ld b, $98
-
 .finish
 	ld [hWY], a
 	ld a, b
@@ -2993,4 +3111,5 @@ Function92311: ; 92311
 	xor a
 	ld [hBGMapMode], a
 	ret
+
 ; 92402
diff --git a/engine/town_map.asm b/engine/town_map.asm
deleted file mode 100755
index 100aaae17..000000000
--- a/engine/town_map.asm
+++ /dev/null
@@ -1,171 +0,0 @@
-
-_TownMap: ; 9191c
-	ld hl, Options
-	ld a, [hl]
-	push af
-	set NO_TEXT_SCROLL, [hl]
-
-	ld a, [hInMenu]
-	push af
-	ld a, $1
-	ld [hInMenu], a
-
-	ld a, [VramState]
-	push af
-	xor a
-	ld [VramState], a
-
-	call ClearBGPalettes
-	call ClearTileMap
-	call ClearSprites
-	call DisableLCD
-	call Function90c4e
-	callba ClearSpriteAnims
-	ld a, 8
-	call SkipMusic
-	ld a, $e3
-	ld [rLCDC], a
-	call Function90d56
-	ld [wd002], a
-	ld [wd003], a
-	xor a
-	ld [hBGMapMode], a
-	call Function91a04
-	call WaitBGMap2
-	ld a, [wd002]
-	call Function9106a
-	ld a, [wd003]
-	call Function91098
-	ld a, c
-	ld [wd004], a
-	ld a, b
-	ld [wd005], a
-	ld b, SCGB_POKEGEAR_PALS
-	call GetSGBLayout
-	call SetPalettes
-	ld a, [hCGB]
-	and a
-	jr z, .dmg
-	ld a, %11100100
-	call DmgToCgbObjPal0
-	call DelayFrame
-
-.dmg
-	ld a, [wd002]
-	cp KANTO_LANDMARK
-	jr nc, .kanto
-	ld d, KANTO_LANDMARK - 1
-	ld e, 1
-	call .loop
-	jr .resume
-
-.kanto
-	call TownMap_GetKantoLandmarkLimits
-	call .loop
-
-.resume
-	pop af
-	ld [VramState], a
-	pop af
-	ld [hInMenu], a
-	pop af
-	ld [Options], a
-	call ClearBGPalettes
-	ret
-
-.loop
-	call JoyTextDelay
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and B_BUTTON
-	ret nz
-
-	ld hl, hJoyLast
-	ld a, [hl]
-	and D_UP
-	jr nz, .pressed_up
-
-	ld a, [hl]
-	and D_DOWN
-	jr nz, .pressed_down
-.loop2
-	push de
-	callba PlaySpriteAnimations
-	pop de
-	call DelayFrame
-	jr .loop
-
-.pressed_up
-	ld hl, wd003
-	ld a, [hl]
-	cp d
-	jr c, .okay
-	ld a, e
-	dec a
-	ld [hl], a
-
-.okay
-	inc [hl]
-	jr .next
-
-.pressed_down
-	ld hl, wd003
-	ld a, [hl]
-	cp e
-	jr nz, .okay2
-	ld a, d
-	inc a
-	ld [hl], a
-
-.okay2
-	dec [hl]
-
-.next
-	push de
-	ld a, [wd003]
-	call Function910b4
-	ld a, [wd004]
-	ld c, a
-	ld a, [wd005]
-	ld b, a
-	ld a, [wd003]
-	call Function910d4
-	pop de
-	jr .loop2
-; 91a04
-
-Function91a04: ; 91a04
-	ld a, [wd002]
-	cp KANTO_LANDMARK
-	jr nc, .kanto
-	ld e, $0
-	jr .okay
-
-.kanto
-	ld e, $1
-
-.okay
-	callba PokegearMap
-	ld a, $7
-	ld bc, 6
-	hlcoord 1, 0
-	call ByteFill
-	hlcoord 0, 0
-	ld [hl], $6
-	hlcoord 7, 0
-	ld [hl], $17
-	hlcoord 7, 1
-	ld [hl], $16
-	hlcoord 7, 2
-	ld [hl], $26
-	ld a, $7
-	ld bc, NAME_LENGTH
-	hlcoord 8, 2
-	call ByteFill
-	hlcoord 19, 2
-	ld [hl], $17
-	ld a, [wd003]
-	call Function910b4
-	callba TownMapPals
-	ret
-; 91a53
diff --git a/event/field_moves.asm b/event/field_moves.asm
index d2125b16e..658a21698 100755
--- a/event/field_moves.asm
+++ b/event/field_moves.asm
@@ -330,7 +330,7 @@ FlyFromAnim: ; 8caed
 	ld [VramState], a
 	call FlyFunction_InitGFX
 	depixel 10, 10, 4, 0
-	ld a, SPRITE_ANIM_INDEX_WALK_CYCLE
+	ld a, SPRITE_ANIM_INDEX_RED_WALK
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
@@ -365,7 +365,7 @@ FlyToAnim: ; 8cb33
 	ld [VramState], a
 	call FlyFunction_InitGFX
 	depixel 31, 10, 4, 0
-	ld a, SPRITE_ANIM_INDEX_WALK_CYCLE
+	ld a, SPRITE_ANIM_INDEX_RED_WALK
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
diff --git a/macros/wram.asm b/macros/wram.asm
index 4e43bfddf..175fc4dea 100755
--- a/macros/wram.asm
+++ b/macros/wram.asm
@@ -232,3 +232,20 @@ move_struct: MACRO
 \1PP:: ds 1
 \1EffectChance:: ds 1
 endm
+
+slot_reel: MACRO
+\1ReelAction::   db
+\1TilemapAddr::  dw
+\1Position::     db
+\1SpinDistance:: db
+\1SpinRate::     db
+\1OAMAddr::      dw
+\1XCoord::       db
+\1Slot09::       ds 1
+\1Slot0a::       ds 1
+\1Slot0b::       ds 1
+\1Slot0c::       ds 1
+\1Slot0d::       ds 1
+\1Slot0e::       ds 1
+\1Slot0f::       ds 1
+endm
\ No newline at end of file
diff --git a/text/common_1.asm b/text/common_1.asm
index 21150ab53..34694b31e 100644
--- a/text/common_1.asm
+++ b/text/common_1.asm
@@ -368,10 +368,10 @@ UnknownText_0x1bc6c7::
 	done
 
 UnknownText_0x1bc6e9::
-	text_from_ram wc6d1
+	text_from_ram wPlayerTrademonSpeciesName
 	text " was"
 	line "sent to @"
-	text_from_ram wc719
+	text_from_ram wOTTrademonSenderName
 	text "."
 	done
 
@@ -380,104 +380,104 @@ UnknownText_0x1bc701::
 	done
 
 UnknownText_0x1bc703::
-	text_from_ram wc719
+	text_from_ram wOTTrademonSenderName
 	text " bids"
 	line "farewell to"
 	done
 
 UnknownText_0x1bc719::
-	text_from_ram wc703
+	text_from_ram wOTTrademonSpeciesName
 	text "."
 	done
 
 UnknownText_0x1bc71f::
 	text "Take good care of"
 	line "@"
-	text_from_ram wc703
+	text_from_ram wOTTrademonSpeciesName
 	text "."
 	done
 
 UnknownText_0x1bc739::
 	text "For @"
-	text_from_ram wc6e7
+	text_from_ram wPlayerTrademonSenderName
 	text "'s"
 	line "@"
-	text_from_ram wc6d1
+	text_from_ram wPlayerTrademonSpeciesName
 	text ","
 	done
 
 UnknownText_0x1bc74c::
-	text_from_ram wc719
+	text_from_ram wOTTrademonSenderName
 	text " sends"
 	line "@"
-	text_from_ram wc703
+	text_from_ram wOTTrademonSpeciesName
 	text "."
 	done
 
 UnknownText_0x1bc75e::
-	text_from_ram wc719
+	text_from_ram wOTTrademonSenderName
 	text " will"
 	line "trade @"
-	text_from_ram wc703
+	text_from_ram wOTTrademonSpeciesName
 	db "@@"
 
 UnknownText_0x1bc774::
 	text "for @"
-	text_from_ram wc6e7
+	text_from_ram wPlayerTrademonSenderName
 	text "'s"
 	line "@"
-	text_from_ram wc6d1
+	text_from_ram wPlayerTrademonSpeciesName
 	text "."
 	done
 
 UnknownText_0x1bc787::
-	text_from_ram wc6e7
+	text_from_ram wPlayerTrademonSenderName
 	text " will"
 	line "trade @"
-	text_from_ram wc6d1
+	text_from_ram wPlayerTrademonSpeciesName
 	db "@@"
 
 UnknownText_0x1bc79d::
 	text "for @"
-	text_from_ram wc719
+	text_from_ram wOTTrademonSenderName
 	text "'s"
 	line "@"
-	text_from_ram wc703
+	text_from_ram wOTTrademonSpeciesName
 	text "."
 	done
 
 UnknownText_0x1bc7b0::
-	text_from_ram wc6e7
+	text_from_ram wPlayerTrademonSenderName
 	text "'s"
 	line "@"
-	text_from_ram wc6d1
+	text_from_ram wPlayerTrademonSpeciesName
 	text " trade…"
 	done
 
 UnknownText_0x1bc7c3::
 	text "Take good care of"
 	line "@"
-	text_from_ram wc703
+	text_from_ram wOTTrademonSpeciesName
 	text "."
 	done
 
 UnknownText_0x1bc7dd::
-	text_from_ram wc6e7
+	text_from_ram wPlayerTrademonSenderName
 	text "'s"
 	line "@"
-	text_from_ram wc6d1
+	text_from_ram wPlayerTrademonSpeciesName
 	text " trade…"
 	done
 
 UnknownText_0x1bc7f0::
 	text "Take good care of"
 	line "@"
-	text_from_ram wc703
+	text_from_ram wOTTrademonSpeciesName
 	text "."
 	done
 
 UnknownText_0x1bc80a::
-	text_from_ram wc703
+	text_from_ram wOTTrademonSpeciesName
 	text " came"
 	line "back!"
 	done
diff --git a/wram.asm b/wram.asm
index 255495faf..d54cc5b2e 100644
--- a/wram.asm
+++ b/wram.asm
@@ -574,44 +574,34 @@ PlayerSAtkLevel:: ; c6cf
 wc6d0::
 PlayerSDefLevel:: ; c6d0
 	ds 1
-wc6d1::
 PlayerAccLevel:: ; c6d1
 	ds 1
-wc6d2::
 PlayerEvaLevel:: ; c6d2
 	ds 1
 ; c6d3
-wc6d3:: ds 1
+	ds 1
 PlayerStatLevelsEnd::
 
-wc6d4::
 EnemyStatLevels:: ; c6d4
 ; 07 neutral
 EnemyAtkLevel:: ; c6d4
 	ds 1
-wc6d5::
 EnemyDefLevel:: ; c6d5
 	ds 1
-wc6d6::
 EnemySpdLevel:: ; c6d6
 	ds 1
-wc6d7::
 wTownMapCursorLandmark::
 EnemySAtkLevel:: ; c6d7
 	ds 1
-wc6d8::
 wTownMapPlayerIconLandmark::
 EnemySDefLevel:: ; c6d8
 	ds 1
-wc6d9::
 EnemyAccLevel:: ; c6d9
 	ds 1
-wc6da::
 EnemyEvaLevel:: ; c6da
 	ds 1
 
-wc6db:: ds 1
-wc6dc::
+	ds 1
 EnemyTurnsTaken:: ; c6dc
 	ds 1
 PlayerTurnsTaken:: ; c6dd
@@ -621,7 +611,6 @@ PlayerTurnsTaken:: ; c6dd
 
 PlayerSubstituteHP:: ; c6df
 	ds 1
-wc6e0::
 EnemySubstituteHP:: ; c6e0
 	ds 1
 
@@ -820,6 +809,7 @@ wc7bb:: ds 2
 wc7bd::
 	ds wc6d0 - @
 
+; naming screen
 wNamingScreenDestinationPointer:: ds 2 ; c6d0
 wNamingScreenCurrNameLength:: ds 1 ; c6d2
 wNamingScreenMaxNameLength:: ds 1 ; c6d3
@@ -829,24 +819,21 @@ wNamingScreenLastCharacter:: ds 1 ; c6d7
 wNamingScreenStringEntryCoord:: ds 2 ; c6d8
 	ds wc6d0 - @
 
-; Slot Machine
+; pokegear
+wPokegearPhoneLoadNameBuffer:: ds 1 ; c6d0
+wPokegearPhoneCursorPosition:: ds 1 ; c6d1
+wPokegearPhoneScrollPosition:: ds 1 ; c6d2
+wPokegearPhoneSelectedPerson:: ds 1 ; c6d3
+wPokegearPhoneSubmenuCursor:: ds 1 ; c6d4
+wPokegearMapCursorObjectPointer:: ds 2 ; c6d5
+	ds 2
+wPokegearRadioChannelBank:: ds 1 ; c6d9
+wPokegearRadioChannelAddr:: ds 2 ; c6da
+wPokegearRadioMusicPlaying:: ds 1 ; c6dc
+	ds wc6d0 - @
+
 wSlots::
-slot_reel: MACRO
-\1ReelAction::   db
-\1TilemapAddr::  dw
-\1Position::     db
-\1SpinDistance:: db
-\1SpinRate::     db
-\1OAMAddr::      dw
-\1XCoord::       db
-\1Slot09::       ds 1
-\1Slot0a::       ds 1
-\1Slot0b::       ds 1
-\1Slot0c::       ds 1
-\1Slot0d::       ds 1
-\1Slot0e::       ds 1
-\1Slot0f::       ds 1
-endm
+; Slot Machine
 ; c6d0
 wReel1:: slot_reel wReel1
 wReel2:: slot_reel wReel2
@@ -2577,6 +2564,11 @@ PCItemsEnd::
 	ds 1
 
 wPokegearFlags:: ds 1
+; bit 0: map
+; bit 1: radio
+; bit 2: phone
+; bit 3: expn
+; bit 7: on/off
 wRadioTuningKnob:: ds 1
 wLastDexMode:: ds 2
 WhichRegisteredItem:: ; d95b

From 3dcbe0ff55465d3c90490947b1585f2437027986 Mon Sep 17 00:00:00 2001
From: PikalaxALT <PikalaxALT@gmail.com>
Date: Sun, 10 Jan 2016 17:44:09 -0500
Subject: [PATCH 04/13] Pokegear

---
 battle/core.asm                               |    6 +-
 constants/sprite_constants.asm                |    4 +-
 data/sprite_engine.asm                        |    2 +-
 engine/dummy_game.asm                         |    2 +-
 engine/events.asm                             |    4 +-
 engine/healmachineanim.asm                    |   46 +-
 engine/pokegear.asm                           |  177 +--
 engine/prof_oaks_pc.asm                       |  219 ++++
 engine/sprite_anims.asm                       |   10 +-
 engine/startmenu.asm                          |    4 +-
 engine/time.asm                               |    8 +-
 event/celebi.asm                              |    4 +-
 event/kurt.asm                                |    2 +-
 .../clock.tilemap.rle}                        |    0
 .../phone.tilemap.rle}                        |    0
 .../radio.tilemap.rle}                        |    0
 items/item_effects.asm                        |   16 +-
 main.asm                                      |  283 +----
 misc/mobile_45.asm                            | 1031 ++---------------
 misc/mobile_45_sprite_engine.asm              |  923 +++++++++++++++
 wram.asm                                      |   32 +-
 21 files changed, 1455 insertions(+), 1318 deletions(-)
 create mode 100755 engine/prof_oaks_pc.asm
 rename gfx/{unknown/0915db.tilemap.rle => pokegear/clock.tilemap.rle} (100%)
 rename gfx/{unknown/09158a.tilemap.rle => pokegear/phone.tilemap.rle} (100%)
 rename gfx/{unknown/09150d.tilemap.rle => pokegear/radio.tilemap.rle} (100%)
 create mode 100755 misc/mobile_45_sprite_engine.asm

diff --git a/battle/core.asm b/battle/core.asm
index 9a464023b..5355df23a 100644
--- a/battle/core.asm
+++ b/battle/core.asm
@@ -4142,7 +4142,7 @@ GetEnemyMonDVs: ; 3da97
 	ld a, [EnemySubStatus5]
 	bit SUBSTATUS_TRANSFORMED, a
 	ret z
-	ld hl, wc6f2
+	ld hl, wEnemyBackupDVs
 	ld a, [wBattleMode]
 	dec a
 	ret z
@@ -5009,7 +5009,7 @@ DrawEnemyHUD: ; 3e043
 	ld a, [EnemySubStatus5]
 	bit SUBSTATUS_TRANSFORMED, a
 	jr z, .ok
-	ld hl, wc6f2
+	ld hl, wEnemyBackupDVs
 .ok
 	ld a, [hli]
 	ld [de], a
@@ -6336,7 +6336,7 @@ LoadEnemyMon: ; 3e8eb
 	jr z, .InitDVs
 
 ; Unknown
-	ld hl, wc6f2
+	ld hl, wEnemyBackupDVs
 	ld de, EnemyMonDVs
 	ld a, [hli]
 	ld [de], a
diff --git a/constants/sprite_constants.asm b/constants/sprite_constants.asm
index 13df52bd6..70399052f 100644
--- a/constants/sprite_constants.asm
+++ b/constants/sprite_constants.asm
@@ -477,14 +477,14 @@ MAX_OUTDOOR_SPRITES EQU 23
 	const SPRITE_ANIM_INDEX_02
 	const SPRITE_ANIM_INDEX_GAMEFREAK_LOGO
 	const SPRITE_ANIM_INDEX_04
-	const SPRITE_ANIM_INDEX_05
+	const SPRITE_ANIM_INDEX_NAMING_SCREEN_CURSOR
 	const SPRITE_ANIM_INDEX_SLOT_GOLEM
 	const SPRITE_ANIM_INDEX_SLOTS_CHANSEY
 	const SPRITE_ANIM_INDEX_SLOTS_EGG
 	const SPRITE_ANIM_INDEX_09
 	const SPRITE_ANIM_INDEX_RED_WALK
 	const SPRITE_ANIM_INDEX_0B
-	const SPRITE_ANIM_INDEX_0C
+	const SPRITE_ANIM_INDEX_COMPOSE_MAIL_CURSOR
 	const SPRITE_ANIM_INDEX_0D
 	const SPRITE_ANIM_INDEX_0E
 	const SPRITE_ANIM_INDEX_0F
diff --git a/data/sprite_engine.asm b/data/sprite_engine.asm
index 715ff309a..4396e1745 100755
--- a/data/sprite_engine.asm
+++ b/data/sprite_engine.asm
@@ -66,7 +66,7 @@ SpriteAnimFrameData: ; 8d6e6
 	dw .Frameset_40 ; 40 celebi on the left
 	dw .Frameset_41 ; 41 celebi on the right
 ; 8d76a
-				; OAM idx (see SpriteAnimOAMData), flip flags/duration
+; OAM idx (see SpriteAnimOAMData), flip flags/duration
 .Frameset_00:
 	db $00, $20
 	db -1
diff --git a/engine/dummy_game.asm b/engine/dummy_game.asm
index 4e2e189da..116ad9439 100755
--- a/engine/dummy_game.asm
+++ b/engine/dummy_game.asm
@@ -109,7 +109,7 @@ endr
 
 .spawn_object
 	depixel 6, 3, 4, 4
-	ld a, SPRITE_ANIM_INDEX_0C
+	ld a, SPRITE_ANIM_INDEX_COMPOSE_MAIL_CURSOR
 	call _InitSpriteAnimStruct
 	ld a, 5
 	ld [wDummyGameNumberTriesRemaining], a
diff --git a/engine/events.asm b/engine/events.asm
index 9b4062aea..a8a57f547 100644
--- a/engine/events.asm
+++ b/engine/events.asm
@@ -454,7 +454,7 @@ DoMapTrigger: ; 968ec
 	ld h, [hl]
 	ld l, a
 rept 4
-	add hl,de
+	add hl, de
 endr
 	
 	call GetMapScriptHeaderBank
@@ -1031,7 +1031,7 @@ DoPlayerEvent: ; 96beb
 	ld b, 0
 	ld hl, PlayerEventScriptPointers
 rept 3
-	add hl,bc
+	add hl, bc
 endr
 	ld a, [hli]
 	ld [ScriptBank], a
diff --git a/engine/healmachineanim.asm b/engine/healmachineanim.asm
index 57f03a8df..b4e0be1cf 100755
--- a/engine/healmachineanim.asm
+++ b/engine/healmachineanim.asm
@@ -19,7 +19,7 @@ HealMachineAnim: ; 12324
 
 .DoJumptableFunctions: ; 1233e
 	xor a
-	ld [wd1ec], a
+	ld [Buffer3], a
 .jumpable_loop
 	ld a, [Buffer1]
 	ld e, a
@@ -31,10 +31,10 @@ endr
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld a, [wd1ec]
+	ld a, [Buffer3]
 	ld e, a
 	inc a
-	ld [wd1ec], a
+	ld [Buffer3], a
 	add hl, de
 	ld a, [hl]
 	cp 5
@@ -81,14 +81,14 @@ endr
 
 .PC_LoadBallsOntoMachine: ; 12393
 	ld hl, Sprites + $80
-	ld de, .PC_ElmsLab_TileMap
+	ld de, .PC_ElmsLab_OAM
 	call .PlaceHealingMachineTile
 	call .PlaceHealingMachineTile
 	jr .LoadBallsOntoMachine
 
 .HOF_LoadBallsOntoMachine: ; 123a1
 	ld hl, Sprites + $80
-	ld de, .HOF_TileMap
+	ld de, .HOF_OAM
 
 .LoadBallsOntoMachine: ; 123a7
 	ld a, [PartyCount]
@@ -126,28 +126,28 @@ endr
 	ret
 ; 123dc
 
-.PC_ElmsLab_TileMap: ; 123dc
-	db $20, $22, $7c, $16
-	db $20, $26, $7c, $16
-	db $26, $20, $7d, $16
-	db $26, $28, $7d, $36
-	db $2b, $20, $7d, $16
-	db $2b, $28, $7d, $36
-	db $30, $20, $7d, $16
-	db $30, $28, $7d, $36
+.PC_ElmsLab_OAM: ; 123dc
+	dsprite   4, 0,   4, 2, $7c, $16
+	dsprite   4, 0,   4, 6, $7c, $16
+	dsprite   4, 6,   4, 0, $7d, $16
+	dsprite   4, 6,   5, 0, $7d, $36 ; xflip
+	dsprite   5, 3,   4, 0, $7d, $16
+	dsprite   5, 3,   5, 0, $7d, $36 ; xflip
+	dsprite   6, 0,   4, 0, $7d, $16
+	dsprite   6, 0,   5, 0, $7d, $36 ; xflip
 ; 123fc
 
 .HealMachineGFX: ; 123fc
 INCBIN "gfx/unknown/0123fc.2bpp"
 ; 1241c
 
-.HOF_TileMap: ; 1241c
-	db $3c, $51, $7d, $16
-	db $3c, $56, $7d, $16
-	db $3b, $4d, $7d, $16
-	db $3b, $5a, $7d, $16
-	db $39, $49, $7d, $16
-	db $39, $5d, $7d, $16
+.HOF_OAM: ; 1241c
+	dsprite   7, 4,  10, 1, $7d, $16
+	dsprite   7, 4,  10, 6, $7d, $16
+	dsprite   7, 3,   9, 5, $7d, $16
+	dsprite   7, 3,  11, 2, $7d, $16
+	dsprite   7, 1,   9, 1, $7d, $16
+	dsprite   7, 1,  11, 5, $7d, $16
 ; 12434
 
 .LoadPalettes: ; 12434
@@ -241,10 +241,10 @@ endr
 .PlaceHealingMachineTile: ; 124a3
 	push bc
 	ld a, [Buffer1]
-	lb bc, $10, $20
+	bcpixel 2, 4
 	cp $1 ; ElmsLab
 	jr z, .okay
-	lb bc, $00, $00
+	bcpixel 0, 0
 
 .okay
 	ld a, [de]
diff --git a/engine/pokegear.asm b/engine/pokegear.asm
index c777369f4..939507429 100755
--- a/engine/pokegear.asm
+++ b/engine/pokegear.asm
@@ -11,7 +11,7 @@ PokeGear: ; 90b8d (24:4b8d)
 	push af
 	xor a
 	ld [VramState], a
-	call Function90bea
+	call .InitTilemap
 	call DelayFrame
 .loop
 	call UpdateTime
@@ -41,10 +41,10 @@ PokeGear: ; 90b8d (24:4b8d)
 	ld [hBGMapAddress + 1], a
 	ld a, $90
 	ld [hWY], a
-	call Function91492
+	call ExitPokegearRadio_HandleMusic
 	ret
 
-Function90bea: ; 90bea (24:4bea)
+.InitTilemap: ; 90bea (24:4bea)
 	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
@@ -54,14 +54,14 @@ Function90bea: ; 90bea (24:4bea)
 	ld [hSCX], a
 	ld a, $7
 	ld [hWX], a
-	call Function90c4e
+	call Pokegear_LoadGFX
 	callba ClearSpriteAnims
 	call InitPokegearModeIndicatorArrow
 	ld a, 8
 	call SkipMusic
 	ld a, $e3
 	ld [rLCDC], a
-	call Function90d70
+	call TownMap_InitCursorAndPlayerIconPositions
 	xor a
 	ld [wJumptableIndex], a
 	ld [wcf64], a
@@ -85,7 +85,7 @@ Function90bea: ; 90bea (24:4bea)
 	call DmgToCgbObjPal0
 	ret
 
-Function90c4e: ; 90c4e
+Pokegear_LoadGFX: ; 90c4e
 	call ClearVBank1
 	ld hl, TownMapGFX
 	ld de, VTiles2
@@ -148,25 +148,25 @@ InitPokegearModeIndicatorArrow: ; 90d32 (24:4d32)
 	ld [hl], $0
 	ret
 
-Function90d41: ; 90d41 (24:4d41)
+AnimatePokegearModeIndicatorArrow: ; 90d41 (24:4d41)
 	ld hl, wcf64
 	ld e, [hl]
 	ld d, 0
-	ld hl, Unknown_90d52
+	ld hl, .XCoords
 	add hl, de
 	ld a, [hl]
-	ld hl, $6
+	ld hl, SPRITEANIMSTRUCT_XOFFSET
 	add hl, bc
 	ld [hl], a
 	ret
 
 ; 90d52 (24:4d52)
 
-Unknown_90d52: ; 90d52
+.XCoords: ; 90d52
 	db $00, $10, $20, $30
 ; 90d56
 
-Function90d56: ; 90d56
+TownMap_GetCurrentLandmark: ; 90d56
 	ld a, [MapGroup]
 	ld b, a
 	ld a, [MapNumber]
@@ -183,7 +183,7 @@ Function90d56: ; 90d56
 
 ; 90d70
 
-Function90d70: ; 90d70 (24:4d70)
+TownMap_InitCursorAndPlayerIconPositions: ; 90d70 (24:4d70)
 	ld a, [MapGroup]
 	ld b, a
 	ld a, [MapNumber]
@@ -238,7 +238,7 @@ InitPokegearTilemap: ; 90da8 (24:4da8)
 	jp [hl]
 
 .return_from_jumptable
-	call Function90eb0
+	call Pokegear_FinishTilemap
 	callba TownMapPals
 	ld a, [wcf65]
 	and a
@@ -269,12 +269,12 @@ InitPokegearTilemap: ; 90da8 (24:4da8)
 .UpdateBGMap: ; 90e00 (24:4e00)
 	ld a, [hCGB]
 	and a
-	jr z, .asm_90e0e
+	jr z, .dmg
 	ld a, $2
 	ld [hBGMapMode], a
 	ld c, 3
 	call DelayFrames
-.asm_90e0e
+.dmg
 	call WaitBGMap
 	ret
 
@@ -329,7 +329,7 @@ InitPokegearTilemap: ; 90da8 (24:4da8)
 	hlcoord 19, 2
 	ld [hl], $17
 	ld a, [wTownMapCursorLandmark]
-	call Function910b4
+	call PokegearMap_UpdateLandmarkName
 	ret
 
 ; 90e72
@@ -350,13 +350,13 @@ InitPokegearTilemap: ; 90da8 (24:4da8)
 	hlcoord 0, 12
 	lb bc, 4, 18
 	call TextBox
-	call Function90e98
+	call .PlacePhoneBars
 	call PokegearPhone_UpdateDisplayList
 	ret
 
 ; 90e98
 
-Function90e98: ; 90e98 (24:4e98)
+.PlacePhoneBars: ; 90e98 (24:4e98)
 	hlcoord 17, 1
 	ld a, $3c
 	ld [hli], a
@@ -372,7 +372,7 @@ Function90e98: ; 90e98 (24:4e98)
 	ld [hl], $3f
 	ret
 
-Function90eb0: ; 90eb0 (24:4eb0)
+Pokegear_FinishTilemap: ; 90eb0 (24:4eb0)
 	hlcoord 0, 0
 	ld bc, $8
 	ld a, $4f
@@ -384,32 +384,32 @@ Function90eb0: ; 90eb0 (24:4eb0)
 	ld de, wPokegearFlags
 	ld a, [de]
 	bit 0, a
-	call nz, Function90ee4
+	call nz, .PlaceMapIcon
 	ld a, [de]
 	bit 2, a
-	call nz, Function90eeb
+	call nz, .PlacePhoneIcon
 	ld a, [de]
 	bit 1, a
-	call nz, Function90ef2
+	call nz, .PlaceRadioIcon
 	hlcoord 0, 0
 	ld a, $46
-	call Function90ef7
+	call .PlacePokegearCardIcon
 	ret
 
-Function90ee4: ; 90ee4 (24:4ee4)
+.PlaceMapIcon: ; 90ee4 (24:4ee4)
 	hlcoord 2, 0
 	ld a, $40
-	jr Function90ef7
+	jr .PlacePokegearCardIcon
 
-Function90eeb: ; 90eeb (24:4eeb)
+.PlacePhoneIcon: ; 90eeb (24:4eeb)
 	hlcoord 4, 0
 	ld a, $44
-	jr Function90ef7
+	jr .PlacePokegearCardIcon
 
-Function90ef2: ; 90ef2 (24:4ef2)
+.PlaceRadioIcon: ; 90ef2 (24:4ef2)
 	hlcoord 6, 0
 	ld a, $42
-Function90ef7: ; 90ef7 (24:4ef7)
+.PlacePokegearCardIcon: ; 90ef7 (24:4ef7)
 	ld [hli], a
 	inc a
 	ld [hld], a
@@ -454,7 +454,7 @@ PokegearClock_Init: ; 90f2d (24:4f2d)
 	call PrintText
 	ld hl, wJumptableIndex
 	inc [hl]
-	call Function91492
+	call ExitPokegearRadio_HandleMusic
 	ret
 
 PokegearClock_Joypad: ; 90f3e (24:4f3e)
@@ -544,7 +544,7 @@ PokegearMap_CheckRegion: ; 90fb4 (24:4fb4)
 	ld a, 5
 .done
 	ld [wJumptableIndex], a
-	call Function91492
+	call ExitPokegearRadio_HandleMusic
 	ret
 
 PokegearMap_Init: ; 90fcd (24:4fcd)
@@ -644,13 +644,13 @@ PokegearMap_ContinueMap: ; 90ff2 (24:4ff2)
 	dec [hl]
 .done_dpad
 	ld a, [wTownMapCursorLandmark]
-	call Function910b4
+	call PokegearMap_UpdateLandmarkName
 	ld a, [wPokegearMapCursorObjectPointer]
 	ld c, a
 	ld a, [wPokegearMapCursorObjectPointer + 1]
 	ld b, a
 	ld a, [wTownMapCursorLandmark]
-	call Function910d4
+	call PokegearMap_UpdateCursorPosition
 	ret
 
 PokegearMap_InitPlayerIcon: ; 9106a
@@ -695,13 +695,13 @@ PokegearMap_InitCursor: ; 91098
 	ld [hl], SPRITE_ANIM_SEQ_NULL
 	pop af
 	push bc
-	call Function910d4
+	call PokegearMap_UpdateCursorPosition
 	pop bc
 	ret
 
 ; 910b4
 
-Function910b4: ; 910b4
+PokegearMap_UpdateLandmarkName: ; 910b4
 	push af
 	hlcoord 8, 0
 	lb bc, 2, 12
@@ -718,7 +718,7 @@ Function910b4: ; 910b4
 
 ; 910d4
 
-Function910d4: ; 910d4
+PokegearMap_UpdateCursorPosition: ; 910d4
 	push bc
 	ld e, a
 	callba GetLandmarkCoords
@@ -782,23 +782,23 @@ PokegearRadio_Joypad: ; 91112 (24:5112)
 .left
 	ld a, [wPokegearFlags]
 	bit 2, a
-	jr z, .asm_9113b
+	jr z, .no_phone
 	ld c, $7
 	ld b, $2
-	jr .asm_9114c
+	jr .switch_page
 
-.asm_9113b
+.no_phone
 	ld a, [wPokegearFlags]
 	bit 0, a
-	jr z, .asm_91148
+	jr z, .no_map
 	ld c, $2
 	ld b, $1
-	jr .asm_9114c
+	jr .switch_page
 
-.asm_91148
+.no_map
 	ld c, $0
 	ld b, $0
-.asm_9114c
+.switch_page
 	call Pokegear_SwitchPage
 	ret
 
@@ -815,7 +815,7 @@ PokegearPhone_Init: ; 91156 (24:5156)
 	ld [wPokegearPhoneCursorPosition], a
 	ld [wPokegearPhoneSelectedPerson], a
 	call InitPokegearTilemap
-	call Function91492
+	call ExitPokegearRadio_HandleMusic
 	ld hl, PokegearText_WhomToCall
 	call PrintText
 	ret
@@ -841,15 +841,15 @@ PokegearPhone_Joypad: ; 91171 (24:5171)
 .left
 	ld a, [wPokegearFlags]
 	bit 0, a
-	jr z, .asm_9119c
+	jr z, .no_map
 	ld c, $2
 	ld b, $1
-	jr .asm_911ac
+	jr .switch_page
 
-.asm_9119c
+.no_map
 	ld c, $0
 	ld b, $0
-	jr .asm_911ac
+	jr .switch_page
 
 .right
 	ld a, [wPokegearFlags]
@@ -857,7 +857,7 @@ PokegearPhone_Joypad: ; 91171 (24:5171)
 	ret z
 	ld c, $b
 	ld b, $3
-.asm_911ac
+.switch_page
 	call Pokegear_SwitchPage
 	ret
 
@@ -886,12 +886,12 @@ PokegearPhone_Joypad: ; 91171 (24:5171)
 	call AddNTimes
 	ld [hl], "▷"
 	call PokegearPhoneContactSubmenu
-	jr c, .asm_911e5
+	jr c, .quit_submenu
 	ld hl, wJumptableIndex
 	inc [hl]
 	ret
 
-.asm_911e5
+.quit_submenu
 	ld a, $8
 	ld [wJumptableIndex], a
 	ret
@@ -899,19 +899,19 @@ PokegearPhone_Joypad: ; 91171 (24:5171)
 PokegearPhone_MakePhoneCall: ; 911eb (24:51eb)
 	call GetMapHeaderPhoneServiceNybble
 	and a
-	jr nz, .asm_91234
+	jr nz, .no_service
 	ld hl, Options
 	res NO_TEXT_SCROLL, [hl]
 	xor a
 	ld [hInMenu], a
 	ld de, SFX_CALL
 	call PlaySFX
-	ld hl, UnknownText_0x9124c
+	ld hl, .dotdotdot
 	call PrintText
 	call WaitSFX
 	ld de, SFX_CALL
 	call PlaySFX
-	ld hl, UnknownText_0x9124c
+	ld hl, .dotdotdot
 	call PrintText
 	call WaitSFX
 	ld a, [wPokegearPhoneSelectedPerson]
@@ -928,9 +928,9 @@ PokegearPhone_MakePhoneCall: ; 911eb (24:51eb)
 	inc [hl]
 	ret
 
-.asm_91234
+.no_service
 	callba Phone_NoSignal
-	ld hl, OutOfServiceAreaText
+	ld hl, .OutOfServiceArea
 	call PrintText
 	ld a, $8
 	ld [wJumptableIndex], a
@@ -940,14 +940,14 @@ PokegearPhone_MakePhoneCall: ; 911eb (24:51eb)
 
 ; 9124c (24:524c)
 
-UnknownText_0x9124c: ; 0x9124c
+.dotdotdot: ; 0x9124c
 	;
 	text_jump UnknownText_0x1c5824
 	db "@"
 
 ; 0x91251
 
-OutOfServiceAreaText: ; 0x91251
+.OutOfServiceArea: ; 0x91251
 	; You're out of the service area.
 	text_jump UnknownText_0x1c5827
 	db "@"
@@ -1336,17 +1336,17 @@ Pokegear_SwitchPage: ; 91480 (24:5480)
 	call DeleteSpriteAnimStruct2ToEnd
 	ret
 
-Function91492: ; 91492
+ExitPokegearRadio_HandleMusic: ; 91492
 	ld a, [wPokegearRadioMusicPlaying]
 	cp $fe
-	jr z, .asm_914a3
+	jr z, .restart_map_music
 	cp $ff
 	call z, EnterMapMusic
 	xor a
 	ld [wPokegearRadioMusicPlaying], a
 	ret
 
-.asm_914a3
+.restart_map_music
 	call RestartMapMusic
 	xor a
 	ld [wPokegearRadioMusicPlaying], a
@@ -1364,8 +1364,10 @@ DeleteSpriteAnimStruct2ToEnd: ; 914ab (24:54ab)
 	ret
 
 Pokegear_LoadTilemapRLE: ; 914bb (24:54bb)
+	; Format: repeat count, tile ID
+	; Terminated with $FF
 	hlcoord 0, 0
-.row
+.loop
 	ld a, [de]
 	cp $ff
 	ret z
@@ -1375,11 +1377,11 @@ Pokegear_LoadTilemapRLE: ; 914bb (24:54bb)
 	ld c, a
 	inc de
 	ld a, b
-.col
+.load
 	ld [hli], a
 	dec c
-	jr nz, .col
-	jr .row
+	jr nz, .load
+	jr .loop
 
 ; 914ce (24:54ce)
 
@@ -1409,11 +1411,11 @@ INCBIN "gfx/misc/pokegear_sprites.2bpp.lz"
 ; 9150d
 
 RadioTilemapRLE: ; 9150d
-INCBIN "gfx/unknown/09150d.tilemap.rle"
+INCBIN "gfx/pokegear/radio.tilemap.rle"
 PhoneTilemapRLE: ; 9158a
-INCBIN "gfx/unknown/09158a.tilemap.rle"
+INCBIN "gfx/pokegear/phone.tilemap.rle"
 ClockTilemapRLE: ; 915db
-INCBIN "gfx/unknown/0915db.tilemap.rle"
+INCBIN "gfx/pokegear/clock.tilemap.rle"
 ; 9163e
 
 _UpdateRadioStation: ; 9163e (24:563e)
@@ -1498,7 +1500,7 @@ UpdateRadioStation: ; 9166f (24:566f)
 
 ; 916a1 (24:56a1)
 
-Function916a1: ; 916a1
+; XXX
 	ld [wPokegearRadioChannelBank], a
 	ld a, [hli]
 	ld [wPokegearRadioChannelAddr], a
@@ -1846,13 +1848,13 @@ _TownMap: ; 9191c
 	call ClearTileMap
 	call ClearSprites
 	call DisableLCD
-	call Function90c4e
+	call Pokegear_LoadGFX
 	callba ClearSpriteAnims
 	ld a, 8
 	call SkipMusic
 	ld a, $e3
 	ld [rLCDC], a
-	call Function90d56
+	call TownMap_GetCurrentLandmark
 	ld [wd002], a
 	ld [wd003], a
 	xor a
@@ -1950,13 +1952,13 @@ _TownMap: ; 9191c
 .next
 	push de
 	ld a, [wd003]
-	call Function910b4
+	call PokegearMap_UpdateLandmarkName
 	ld a, [wd004]
 	ld c, a
 	ld a, [wd005]
 	ld b, a
 	ld a, [wd003]
-	call Function910d4
+	call PokegearMap_UpdateCursorPosition
 	pop de
 	jr .loop2
 ; 91a04
@@ -1964,14 +1966,13 @@ _TownMap: ; 9191c
 .InitTilemap: ; 91a04
 	ld a, [wd002]
 	cp KANTO_LANDMARK
-	jr nc, .kanto
+	jr nc, .kanto2
 	ld e, $0
-	jr .okay
+	jr .okay_tilemap
 
-.kanto
+.kanto2
 	ld e, $1
-
-.okay
+.okay_tilemap
 	callba PokegearMap
 	ld a, $7
 	ld bc, 6
@@ -1992,7 +1993,7 @@ _TownMap: ; 9191c
 	hlcoord 19, 2
 	ld [hl], $17
 	ld a, [wd003]
-	call Function910b4
+	call PokegearMap_UpdateLandmarkName
 	callba TownMapPals
 	ret
 ; 91a53
@@ -2025,7 +2026,7 @@ PlayRadio: ; 91a53
 .stop
 	pop af
 	ld [Options], a
-	call Function91492
+	call ExitPokegearRadio_HandleMusic
 	ret
 
 ; 91a87
@@ -2687,7 +2688,7 @@ _Area: ; 91d11
 .ShowPlayerLoop
 	ld a, [de]
 	cp $80
-	jr z, .copy
+	jr z, .clear_oam
 	add b
 	ld [hli], a
 	inc de
@@ -2711,9 +2712,9 @@ _Area: ; 91d11
 	pop bc
 	jr .ShowPlayerLoop
 
-.copy
-	ld hl, Sprites + $10
-	ld bc, SpritesEnd - (Sprites + $10)
+.clear_oam
+	ld hl, Sprites + 4 * 4
+	ld bc, SpritesEnd - (Sprites + 4 * 4)
 	xor a
 	call ByteFill
 	ret
@@ -2980,8 +2981,8 @@ PokedexNestIconGFX: ; 922d1
 INCBIN "gfx/pokegear/dexmap_nest_icon.2bpp"
 FlyMapLabelBorderGFX: ; 922e1
 INCBIN "gfx/pokegear/flymap_label_border.2bpp"
-Function92311: ; 92311
-; unreferenced
+
+; XXX
 	xor a
 	ld [wd002], a
 	call ClearBGPalettes
@@ -3034,7 +3035,7 @@ Function92311: ; 92311
 
 .pressedB
 	ld a, -1
-	jr .asm_9239f
+	jr .finished_a_b
 
 .pressedA
 	ld a, [wd002]
@@ -3044,7 +3045,7 @@ Function92311: ; 92311
 	ld de, Flypoints + 1
 	add hl, de
 	ld a, [hl]
-.asm_9239f
+.finished_a_b
 	ld [wd002], a
 	pop af
 	ld [hInMenu], a
diff --git a/engine/prof_oaks_pc.asm b/engine/prof_oaks_pc.asm
new file mode 100755
index 000000000..05ff2b691
--- /dev/null
+++ b/engine/prof_oaks_pc.asm
@@ -0,0 +1,219 @@
+
+ProfOaksPC: ; 0x265d3
+	ld hl, OakPCText1
+	call MenuTextBox
+	call YesNoBox
+	jr c, .shutdown
+	call ProfOaksPCBoot ; player chose "yes"?
+.shutdown
+	ld hl, OakPCText4
+	call PrintText
+	call JoyWaitAorB
+	call ExitMenu
+	ret
+
+ProfOaksPCBoot ; 0x265ee
+	ld hl, OakPCText2
+	call PrintText
+	call Rate
+	call PlaySFX ; sfx loaded by previous Rate function call
+	call JoyWaitAorB
+	call WaitSFX
+	ret
+
+ProfOaksPCRating: ; 0x26601
+	call Rate
+	push de
+	ld de, MUSIC_NONE
+	call PlayMusic
+	pop de
+	call PlaySFX
+	call JoyWaitAorB
+	call WaitSFX
+	ret
+
+Rate: ; 0x26616
+; calculate Seen/Owned
+	ld hl, PokedexSeen
+	ld b, EndPokedexSeen - PokedexSeen
+	call CountSetBits
+	ld [wd002], a
+	ld hl, PokedexCaught
+	ld b, EndPokedexCaught - PokedexCaught
+	call CountSetBits
+	ld [wd003], a
+
+; print appropriate rating
+	call .UpdateRatingBuffers
+	ld hl, OakPCText3
+	call PrintText
+	call JoyWaitAorB
+	ld a, [wd003]
+	ld hl, OakRatings
+	call FindOakRating
+	push de
+	call PrintText
+	pop de
+	ret
+
+.UpdateRatingBuffers: ; 0x26647
+	ld hl, StringBuffer3
+	ld de, wd002
+	call .UpdateRatingBuffer
+	ld hl, StringBuffer4
+	ld de, wd003
+	call .UpdateRatingBuffer
+	ret
+
+.UpdateRatingBuffer: ; 0x2665a
+	push hl
+	ld a, "@"
+	ld bc, ITEM_NAME_LENGTH
+	call ByteFill
+	pop hl
+	lb bc, PRINTNUM_RIGHTALIGN | 1, 3
+	call PrintNum
+	ret
+
+FindOakRating: ; 0x2666b
+; return sound effect in de
+; return text pointer in hl
+	nop
+	ld c, a
+.loop
+	ld a, [hli]
+	cp c
+	jr nc, .match
+rept 4
+	inc hl
+endr
+	jr .loop
+
+.match
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ret
+
+OakRatings: ; 0x2667f
+oakrating: MACRO
+	db \1
+	dw \2, \3
+endm
+
+; if you caught at most this many, play this sound, load this text
+	oakrating   9, SFX_DEX_FANFARE_LESS_THAN_20, OakRating01
+	oakrating  19, SFX_DEX_FANFARE_LESS_THAN_20, OakRating02
+	oakrating  34, SFX_DEX_FANFARE_20_49,        OakRating03
+	oakrating  49, SFX_DEX_FANFARE_20_49,        OakRating04
+	oakrating  64, SFX_DEX_FANFARE_50_79,        OakRating05
+	oakrating  79, SFX_DEX_FANFARE_50_79,        OakRating06
+	oakrating  94, SFX_DEX_FANFARE_80_109,       OakRating07
+	oakrating 109, SFX_DEX_FANFARE_80_109,       OakRating08
+	oakrating 124, SFX_CAUGHT_MON,               OakRating09
+	oakrating 139, SFX_CAUGHT_MON,               OakRating10
+	oakrating 154, SFX_DEX_FANFARE_140_169,      OakRating11
+	oakrating 169, SFX_DEX_FANFARE_140_169,      OakRating12
+	oakrating 184, SFX_DEX_FANFARE_170_199,      OakRating13
+	oakrating 199, SFX_DEX_FANFARE_170_199,      OakRating14
+	oakrating 214, SFX_DEX_FANFARE_200_229,      OakRating15
+	oakrating 229, SFX_DEX_FANFARE_200_229,      OakRating16
+	oakrating 239, SFX_DEX_FANFARE_230_PLUS,     OakRating17
+	oakrating 248, SFX_DEX_FANFARE_230_PLUS,     OakRating18
+	oakrating 255, SFX_DEX_FANFARE_230_PLUS,     OakRating19
+
+OakPCText1: ; 0x266de
+	text_jump _OakPCText1
+	db "@"
+
+OakPCText2: ; 0x266e3
+	text_jump _OakPCText2
+	db "@"
+
+OakPCText3: ; 0x266e8
+	text_jump _OakPCText3
+	db "@"
+
+OakRating01:
+	text_jump _OakRating01
+	db "@"
+
+OakRating02:
+	text_jump _OakRating02
+	db "@"
+
+OakRating03:
+	text_jump _OakRating03
+	db "@"
+
+OakRating04:
+	text_jump _OakRating04
+	db "@"
+
+OakRating05:
+	text_jump _OakRating05
+	db "@"
+
+OakRating06:
+	text_jump _OakRating06
+	db "@"
+
+OakRating07:
+	text_jump _OakRating07
+	db "@"
+
+OakRating08:
+	text_jump _OakRating08
+	db "@"
+
+OakRating09:
+	text_jump _OakRating09
+	db "@"
+
+OakRating10:
+	text_jump _OakRating10
+	db "@"
+
+OakRating11:
+	text_jump _OakRating11
+	db "@"
+
+OakRating12:
+	text_jump _OakRating12
+	db "@"
+
+OakRating13:
+	text_jump _OakRating13
+	db "@"
+
+OakRating14:
+	text_jump _OakRating14
+	db "@"
+
+OakRating15:
+	text_jump _OakRating15
+	db "@"
+
+OakRating16:
+	text_jump _OakRating16
+	db "@"
+
+OakRating17:
+	text_jump _OakRating17
+	db "@"
+
+OakRating18:
+	text_jump _OakRating18
+	db "@"
+
+OakRating19:
+	text_jump _OakRating19
+	db "@"
+
+OakPCText4: ; 0x2674c
+	text_jump _OakPCText4
+	db "@"
diff --git a/engine/sprite_anims.asm b/engine/sprite_anims.asm
index f0a915312..50eb61df6 100755
--- a/engine/sprite_anims.asm
+++ b/engine/sprite_anims.asm
@@ -19,14 +19,14 @@ DoAnimFrame: ; 8d24b
 	dw .two         ; bouncing mon icon, selected
 	dw .three       ; bouncing mon icon, menu open
 	dw .four
-	dw .five
+	dw .namingscreencursor
 	dw .GameFreakLogo         ; Game Freak logo
 	dw .seven
 	dw .eight
 	dw .SlotsGolem        ; Something to do with slots
 	dw .SlotsChansey         ; Something to do with slots
 	dw .SlotsChanseyEgg      ; Something to do with slots
-	dw .twelve      ; blinking cursor
+	dw .mailcompositioncursor      ; blinking cursor
 	dw .thirteen
 	dw .fourteen
 	dw .fifteen
@@ -217,11 +217,11 @@ DoAnimFrame: ; 8d24b
 	ld [hl], a
 	ret
 
-.five: ; 8d36c (23:536c)
+.namingscreencursor: ; 8d36c (23:536c)
 	callab NamingScreen_AnimateCursor
 	ret
 
-.twelve: ; 8d373 (23:5373)
+.mailcompositioncursor: ; 8d373 (23:5373)
 	callab ComposeMail_AnimateCursor
 	ret
 
@@ -409,7 +409,7 @@ DoAnimFrame: ; 8d24b
 	ret
 
 .fifteen: ; 8d475 (23:5475)
-	callab Function90d41
+	callab AnimatePokegearModeIndicatorArrow
 	ret
 
 .fourteen: ; 8d47c (23:547c)
diff --git a/engine/startmenu.asm b/engine/startmenu.asm
index 6ba60af36..25a3eee39 100755
--- a/engine/startmenu.asm
+++ b/engine/startmenu.asm
@@ -393,7 +393,7 @@ endr
 	ld hl, StatusFlags2
 	bit 2, [hl] ; bug catching contest
 	ret z
-	callba Function24bdc
+	callba StartMenu_DrawBugContestStatusBox
 	ret
 ; 128de
 
@@ -403,7 +403,7 @@ endr
 	jr nz, .contest
 	ret
 .contest
-	callba Function24be7
+	callba StartMenu_PrintBugContestStatus
 	ret
 ; 128ed
 
diff --git a/engine/time.asm b/engine/time.asm
index 542141198..4240522c2 100755
--- a/engine/time.asm
+++ b/engine/time.asm
@@ -200,11 +200,9 @@ CheckPokerusTick:: ; 114e7
 	call CalcDaysSince
 	call GetDaysSince
 	and a
-	jr z, .done
-
+	jr z, .done ; not even a day has passed since game start
 	ld b, a
 	callba ApplyPokerusTick
-
 .done
 	xor a
 	ret
@@ -229,13 +227,13 @@ CheckUnusedTwoDayTimer: ; 1150c
 	ret
 ; 1151c
 
-Function1151c: ; unreferenced
+; XXX
 	ld hl, DailyFlags
 	set 2, [hl]
 	ret
 ; 11522
 
-Function11522: ; unreferenced
+; XXX
 	and a
 	ld hl, DailyFlags
 	bit 2, [hl]
diff --git a/event/celebi.asm b/event/celebi.asm
index d9c188f1a..3e01e31f6 100755
--- a/event/celebi.asm
+++ b/event/celebi.asm
@@ -61,8 +61,8 @@ endr
 	inc a
 	dec c
 	jr nz, .OAMloop
-	ld hl, Sprites + $10
-	ld bc, $90
+	ld hl, Sprites + 4 * 4
+	ld bc, 36 * 4
 	xor a
 	call ByteFill
 	ret
diff --git a/event/kurt.asm b/event/kurt.asm
index d9239b7fa..1473e4631 100644
--- a/event/kurt.asm
+++ b/event/kurt.asm
@@ -140,7 +140,7 @@ Kurt_SelectQuantity: ; 880c2
 	call .PlaceApricornName
 	call PlaceApricornQuantity
 	call ApplyTilemap
-	callba Function27a28
+	callba Kurt_SelectQuantity_InterpretJoypad
 	jr nc, .loop
 
 	push bc
diff --git a/gfx/unknown/0915db.tilemap.rle b/gfx/pokegear/clock.tilemap.rle
similarity index 100%
rename from gfx/unknown/0915db.tilemap.rle
rename to gfx/pokegear/clock.tilemap.rle
diff --git a/gfx/unknown/09158a.tilemap.rle b/gfx/pokegear/phone.tilemap.rle
similarity index 100%
rename from gfx/unknown/09158a.tilemap.rle
rename to gfx/pokegear/phone.tilemap.rle
diff --git a/gfx/unknown/09150d.tilemap.rle b/gfx/pokegear/radio.tilemap.rle
similarity index 100%
rename from gfx/unknown/09150d.tilemap.rle
rename to gfx/pokegear/radio.tilemap.rle
diff --git a/items/item_effects.asm b/items/item_effects.asm
index 8cabdc7e8..2831c9407 100644
--- a/items/item_effects.asm
+++ b/items/item_effects.asm
@@ -452,23 +452,23 @@ endr
 	push af
 	set SUBSTATUS_TRANSFORMED, [hl]
 	bit SUBSTATUS_TRANSFORMED, a
-	jr nz, .asm_ea13
-	jr .asm_ea1a
+	jr nz, .ditto
+	jr .not_ditto
 
-.asm_ea13
+.ditto
 	ld a, DITTO
 	ld [TempEnemyMonSpecies], a
-	jr .asm_ea27
+	jr .load_data
 
-.asm_ea1a
-	set 3, [hl]
-	ld hl, wc6f2
+.not_ditto
+	set SUBSTATUS_TRANSFORMED, [hl]
+	ld hl, wEnemyBackupDVs
 	ld a, [EnemyMonDVs]
 	ld [hli], a
 	ld a, [EnemyMonDVs + 1]
 	ld [hl], a
 
-.asm_ea27
+.load_data
 	ld a, [TempEnemyMonSpecies]
 	ld [CurPartySpecies], a
 	ld a, [EnemyMonLevel]
diff --git a/main.asm b/main.asm
index 3447ca781..dcae40bcb 100644
--- a/main.asm
+++ b/main.asm
@@ -5279,29 +5279,27 @@ Script_JumpStdFromRAM: ; 0x1369a
 
 INCLUDE "event/bug_contest_judging.asm"
 
-; decreases all pokemon's pokerus counter by b. if the lower nybble reaches zero, the pokerus is cured.
 ApplyPokerusTick: ; 13988
+; decreases all pokemon's pokerus counter by b. if the lower nybble reaches zero, the pokerus is cured.
 	ld hl, PartyMon1PokerusStatus ; PartyMon1 + MON_PKRS
 	ld a, [PartyCount]
 	and a
-	ret z
+	ret z ; make sure it's not wasting time on an empty party
 	ld c, a
 .loop
 	ld a, [hl]
-	and $f
-	jr z, .does_not_have_pokerus
-	sub b
-	jr nc, .ok
+	and $f ; lower nybble is the number of days remaining
+	jr z, .next ; if already 0, skip
+	sub b ; subtract the number of days
+	jr nc, .ok ; max(result, 0)
 	xor a
-
 .ok
-	ld d, a
+	ld d, a ; back up this value because we need to preserve the strain (upper nybble)
 	ld a, [hl]
 	and $f0
 	add d
-	ld [hl], a
-
-.does_not_have_pokerus
+	ld [hl], a ; this prevents a cured pokemon from recontracting pokerus
+.next
 	ld de, PARTYMON_STRUCT_LENGTH
 	add hl, de
 	dec c
@@ -5678,44 +5676,44 @@ Function24b8f: ; 24b8f
 .booru_ko: ; 24bd4
 	db "ボール   こ@"
 
-Function24bdc: ; 24bdc
+StartMenu_DrawBugContestStatusBox: ; 24bdc
 	hlcoord 0, 0
-	ld b, $5
-	ld c, $11
+	ld b, 5
+	ld c, 17
 	call TextBox
 	ret
 
-Function24be7: ; 24be7
+StartMenu_PrintBugContestStatus: ; 24be7
 	ld hl, Options
 	ld a, [hl]
 	push af
-	set 4, [hl]
-	call Function24bdc
+	set NO_TEXT_SCROLL, [hl]
+	call StartMenu_DrawBugContestStatusBox
 	hlcoord 1, 5
-	ld de, String24c52
+	ld de, .Balls_EN
 	call PlaceString
 	hlcoord 8, 5
-	ld de, wSafariBallsRemaining
+	ld de, wParkBallsRemaining
 	lb bc, PRINTNUM_RIGHTALIGN | 1, 2
 	call PrintNum
 	hlcoord 1, 1
-	ld de, String24c4b
+	ld de, .CAUGHT
 	call PlaceString
 	ld a, [wContestMon]
 	and a
-	ld de, String24c59
-	jr z, .asm_24c1e
+	ld de, .None
+	jr z, .no_contest_mon
 	ld [wd265], a
 	call GetPokemonName
 
-.asm_24c1e
+.no_contest_mon
 	hlcoord 8, 1
 	call PlaceString
 	ld a, [wContestMon]
 	and a
-	jr z, .asm_24c3e
+	jr z, .skip_level
 	hlcoord 1, 3
-	ld de, String24c5e
+	ld de, .LEVEL
 	call PlaceString
 	ld a, [wContestMonLevel]
 	ld h, b
@@ -5724,20 +5722,20 @@ Function24be7: ; 24be7
 	ld c, $3
 	call Function3842
 
-.asm_24c3e
+.skip_level
 	pop af
 	ld [Options], a
 	ret
 
-String24c43: ; 24c43
+.Balls_JP: ; 24c43
 	db "ボール   こ@"
-String24c4b: ; 24c4b
+.CAUGHT: ; 24c4b
 	db "CAUGHT@"
-String24c52: ; 24c52
+.Balls_EN: ; 24c52
 	db "BALLS:@"
-String24c59: ; 24c59
+.None: ; 24c59
 	db "None@"
-String24c5e: ; 24c5e
+.LEVEL: ; 24c5e
 	db "LEVEL@"
 
 FindApricornsInBag: ; 24c64
@@ -5799,226 +5797,7 @@ INCLUDE "engine/mon_menu.asm"
 INCLUDE "battle/menu.asm"
 INCLUDE "engine/buy_sell_toss.asm"
 INCLUDE "engine/trainer_card.asm"
-
-ProfOaksPC: ; 0x265d3
-	ld hl, OakPCText1
-	call MenuTextBox
-	call YesNoBox
-	jr c, .shutdown
-	call ProfOaksPCBoot ; player chose "yes"?
-.shutdown
-	ld hl, OakPCText4
-	call PrintText
-	call JoyWaitAorB
-	call ExitMenu
-	ret
-
-ProfOaksPCBoot ; 0x265ee
-	ld hl, OakPCText2
-	call PrintText
-	call Rate
-	call PlaySFX ; sfx loaded by previous Rate function call
-	call JoyWaitAorB
-	call WaitSFX
-	ret
-
-ProfOaksPCRating: ; 0x26601
-	call Rate
-	push de
-	ld de, MUSIC_NONE
-	call PlayMusic
-	pop de
-	call PlaySFX
-	call JoyWaitAorB
-	call WaitSFX
-	ret
-
-Rate: ; 0x26616
-; calculate Seen/Owned
-	ld hl, PokedexSeen
-	ld b, EndPokedexSeen - PokedexSeen
-	call CountSetBits
-	ld [wd002], a
-	ld hl, PokedexCaught
-	ld b, EndPokedexCaught - PokedexCaught
-	call CountSetBits
-	ld [wd003], a
-
-; print appropriate rating
-	call .UpdateRatingBuffers
-	ld hl, OakPCText3
-	call PrintText
-	call JoyWaitAorB
-	ld a, [wd003]
-	ld hl, OakRatings
-	call FindOakRating
-	push de
-	call PrintText
-	pop de
-	ret
-
-.UpdateRatingBuffers: ; 0x26647
-	ld hl, StringBuffer3
-	ld de, wd002
-	call .UpdateRatingBuffer
-	ld hl, StringBuffer4
-	ld de, wd003
-	call .UpdateRatingBuffer
-	ret
-
-.UpdateRatingBuffer: ; 0x2665a
-	push hl
-	ld a, "@"
-	ld bc, ITEM_NAME_LENGTH
-	call ByteFill
-	pop hl
-	lb bc, PRINTNUM_RIGHTALIGN | 1, 3
-	call PrintNum
-	ret
-
-FindOakRating: ; 0x2666b
-; return sound effect in de
-; return text pointer in hl
-	nop
-	ld c, a
-.loop
-	ld a, [hli]
-	cp c
-	jr nc, .match
-rept 4
-	inc hl
-endr
-	jr .loop
-
-.match
-	ld a, [hli]
-	ld e, a
-	ld a, [hli]
-	ld d, a
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ret
-
-OakRatings: ; 0x2667f
-oakrating: MACRO
-	db \1
-	dw \2, \3
-endm
-
-; if you caught at most this many, play this sound, load this text
-	oakrating   9, SFX_DEX_FANFARE_LESS_THAN_20, OakRating01
-	oakrating  19, SFX_DEX_FANFARE_LESS_THAN_20, OakRating02
-	oakrating  34, SFX_DEX_FANFARE_20_49,        OakRating03
-	oakrating  49, SFX_DEX_FANFARE_20_49,        OakRating04
-	oakrating  64, SFX_DEX_FANFARE_50_79,        OakRating05
-	oakrating  79, SFX_DEX_FANFARE_50_79,        OakRating06
-	oakrating  94, SFX_DEX_FANFARE_80_109,       OakRating07
-	oakrating 109, SFX_DEX_FANFARE_80_109,       OakRating08
-	oakrating 124, SFX_CAUGHT_MON,               OakRating09
-	oakrating 139, SFX_CAUGHT_MON,               OakRating10
-	oakrating 154, SFX_DEX_FANFARE_140_169,      OakRating11
-	oakrating 169, SFX_DEX_FANFARE_140_169,      OakRating12
-	oakrating 184, SFX_DEX_FANFARE_170_199,      OakRating13
-	oakrating 199, SFX_DEX_FANFARE_170_199,      OakRating14
-	oakrating 214, SFX_DEX_FANFARE_200_229,      OakRating15
-	oakrating 229, SFX_DEX_FANFARE_200_229,      OakRating16
-	oakrating 239, SFX_DEX_FANFARE_230_PLUS,     OakRating17
-	oakrating 248, SFX_DEX_FANFARE_230_PLUS,     OakRating18
-	oakrating 255, SFX_DEX_FANFARE_230_PLUS,     OakRating19
-
-OakPCText1: ; 0x266de
-	text_jump _OakPCText1
-	db "@"
-
-OakPCText2: ; 0x266e3
-	text_jump _OakPCText2
-	db "@"
-
-OakPCText3: ; 0x266e8
-	text_jump _OakPCText3
-	db "@"
-
-OakRating01:
-	text_jump _OakRating01
-	db "@"
-
-OakRating02:
-	text_jump _OakRating02
-	db "@"
-
-OakRating03:
-	text_jump _OakRating03
-	db "@"
-
-OakRating04:
-	text_jump _OakRating04
-	db "@"
-
-OakRating05:
-	text_jump _OakRating05
-	db "@"
-
-OakRating06:
-	text_jump _OakRating06
-	db "@"
-
-OakRating07:
-	text_jump _OakRating07
-	db "@"
-
-OakRating08:
-	text_jump _OakRating08
-	db "@"
-
-OakRating09:
-	text_jump _OakRating09
-	db "@"
-
-OakRating10:
-	text_jump _OakRating10
-	db "@"
-
-OakRating11:
-	text_jump _OakRating11
-	db "@"
-
-OakRating12:
-	text_jump _OakRating12
-	db "@"
-
-OakRating13:
-	text_jump _OakRating13
-	db "@"
-
-OakRating14:
-	text_jump _OakRating14
-	db "@"
-
-OakRating15:
-	text_jump _OakRating15
-	db "@"
-
-OakRating16:
-	text_jump _OakRating16
-	db "@"
-
-OakRating17:
-	text_jump _OakRating17
-	db "@"
-
-OakRating18:
-	text_jump _OakRating18
-	db "@"
-
-OakRating19:
-	text_jump _OakRating19
-	db "@"
-
-OakPCText4: ; 0x2674c
-	text_jump _OakPCText4
-	db "@"
-
+INCLUDE "engine/prof_oaks_pc.asm"
 INCLUDE "engine/decorations.asm"
 
 PadCoords_de: ; 27092
@@ -6161,7 +5940,7 @@ INCLUDE "battle/moves/move_effects_pointers.asm"
 MoveEffects: ; 2732e
 INCLUDE "battle/moves/move_effects.asm"
 
-Function27a28: ; 27a28
+Kurt_SelectQuantity_InterpretJoypad: ; 27a28
 	call BuySellToss_InterpretJoypad
 	ld b, a
 	ret
diff --git a/misc/mobile_45.asm b/misc/mobile_45.asm
index 6e2c165f7..7ee14da4f 100644
--- a/misc/mobile_45.asm
+++ b/misc/mobile_45.asm
@@ -147,6 +147,7 @@ Function114243:: ; 114243
 	ld l, a
 	pop de
 	jp [hl]
+
 ; 11425c
 
 Function11425c: ; 11425c
@@ -157,10 +158,12 @@ rept 2
 endr
 	ld [MBC3SRamBank], a
 	ret
+
 ; 114268
 
 Function114268: ; 114268
 	ret
+
 ; 114269
 
 Function114269: ; 114269
@@ -301,6 +304,7 @@ Function114269: ; 114269
 	ld a, $1
 	ld [wdc02], a
 	jp .asm_11429b
+
 ; 114333
 
 Function114333: ; 114333
@@ -309,6 +313,7 @@ Function114333: ; 114333
 	call Function115d80
 	pop bc
 	ret
+
 ; 11433c
 
 Function11433c: ; 11433c
@@ -402,6 +407,7 @@ Function11433c: ; 11433c
 	xor a
 	ld b, $1
 	jp Function11425c
+
 ; 1143b7
 
 Function1143b7: ; 1143b7
@@ -453,6 +459,7 @@ Function1143b7: ; 1143b7
 	ld a, $1
 	pop hl
 	jp Function11425c
+
 ; 1143f3
 
 Function1143f3: ; 1143f3
@@ -481,6 +488,7 @@ Function1143f3: ; 1143f3
 	ld a, $1
 	ld b, $84
 	ret
+
 ; 114412
 
 Function114412: ; 114412
@@ -611,6 +619,7 @@ Function114412: ; 114412
 	ld [hl], a
 	ld a, $1
 	ret
+
 ; 1144c8
 
 Function1144c8: ; 1144c8
@@ -619,6 +628,7 @@ Function1144c8: ; 1144c8
 	call Function115d80
 	pop bc
 	ret
+
 ; 1144d1
 
 Function1144d1: ; 1144d1
@@ -718,6 +728,7 @@ endr
 	pop hl
 	ld a, $1
 	jp Function11425c
+
 ; 114561
 
 Function114561: ; 114561
@@ -740,6 +751,7 @@ Function114561: ; 114561
 	ld a, [de]
 	ld [hl], a
 	ret
+
 ; 114576
 
 Function114576: ; 114576
@@ -795,6 +807,7 @@ Function114576: ; 114576
 	ld a, $1
 	ld [Bed], a
 	ret
+
 ; 1145c5
 
 Function1145c5: ; 1145c5
@@ -888,6 +901,7 @@ Function1145c5: ; 1145c5
 	ld [PartyMon5Defense], a
 	xor a
 	ret
+
 ; 11463c
 
 Function11463c: ; 11463c
@@ -951,6 +965,7 @@ Function11463c: ; 11463c
 	ld [Carpet], a
 	ld a, $1
 	ret
+
 ; 11469b
 
 Function11469b: ; 11469b
@@ -959,6 +974,7 @@ Function11469b: ; 11469b
 	call Function115d80
 	pop bc
 	ret
+
 ; 1146a4
 
 Function1146a4: ; 1146a4
@@ -1018,6 +1034,7 @@ endr
 .asm_1146f7
 	ld a, $1
 	ret
+
 ; 1146fa
 
 Function1146fa: ; 1146fa
@@ -1145,6 +1162,7 @@ endr
 .asm_1147cb
 	xor a
 	ret
+
 ; 1147cd
 
 Function1147cd: ; 1147cd
@@ -1222,6 +1240,7 @@ Function1147cd: ; 1147cd
 .asm_114837
 	ld a, $1
 	ret
+
 ; 11483a
 
 Function11483a: ; 11483a
@@ -1230,6 +1249,7 @@ Function11483a: ; 11483a
 	call Function115d80
 	pop bc
 	ret
+
 ; 114843
 
 Function114843: ; 114843
@@ -1254,6 +1274,7 @@ Function114843: ; 114843
 	ld [wdc00], a
 	ld a, $1
 	ret
+
 ; 114867
 
 Function114867: ; 114867
@@ -1313,6 +1334,7 @@ Function114867: ; 114867
 .asm_1148b6
 	ld a, $1
 	ret
+
 ; 1148b9
 
 Function1148b9: ; 1148b9
@@ -1321,6 +1343,7 @@ Function1148b9: ; 1148b9
 	call Function115d80
 	pop bc
 	ret
+
 ; 1148c2
 
 Function1148c2: ; 1148c2
@@ -1413,6 +1436,7 @@ Function1148c2: ; 1148c2
 .asm_114941
 	ld a, $1
 	ret
+
 ; 114944
 
 Function114944: ; 114944
@@ -1421,6 +1445,7 @@ Function114944: ; 114944
 	call Function115d80
 	pop bc
 	ret
+
 ; 11494d
 
 Function11494d: ; 11494d
@@ -1505,6 +1530,7 @@ Function11494d: ; 11494d
 .asm_1149c0
 	ld a, $1
 	ret
+
 ; 1149c3
 
 Function1149c3: ; 1149c3
@@ -1513,6 +1539,7 @@ Function1149c3: ; 1149c3
 	call Function115d80
 	pop bc
 	ret
+
 ; 1149cc
 
 Function1149cc: ; 1149cc
@@ -1563,6 +1590,7 @@ Function1149cc: ; 1149cc
 	pop de
 	ld a, $1
 	ret
+
 ; 114a0f
 
 Function114a0f: ; 114a0f
@@ -1571,6 +1599,7 @@ Function114a0f: ; 114a0f
 	call Function115d80
 	pop bc
 	ret
+
 ; 114a18
 
 Function114a18: ; 114a18
@@ -1638,6 +1667,7 @@ Function114a18: ; 114a18
 .asm_114a6e
 	ld a, $1
 	ret
+
 ; 114a71
 
 Function114a71: ; 114a71
@@ -1646,6 +1676,7 @@ Function114a71: ; 114a71
 	call Function115d80
 	pop bc
 	ret
+
 ; 114a7a
 
 Function114a7a: ; 114a7a
@@ -1698,6 +1729,7 @@ Function114a7a: ; 114a7a
 .asm_114ac3
 	ld a, $1
 	ret
+
 ; 114ac6
 
 Function114ac6: ; 114ac6
@@ -1706,6 +1738,7 @@ Function114ac6: ; 114ac6
 	call Function115d80
 	pop bc
 	ret
+
 ; 114acf
 
 Function114acf: ; 114acf
@@ -1809,6 +1842,7 @@ Function114acf: ; 114acf
 	ld [wdc0e], a
 	xor a
 	ret
+
 ; 114b4c
 
 Function114b4c: ; 114b4c
@@ -1817,6 +1851,7 @@ Function114b4c: ; 114b4c
 	call Function115d80
 	pop bc
 	ret
+
 ; 114b55
 
 Function114b55: ; 114b55
@@ -1892,6 +1927,7 @@ endr
 	pop bc
 	ld b, $82
 	jp Function11425c
+
 ; 114bbc
 
 Function114bbc: ; 114bbc
@@ -1946,6 +1982,7 @@ Function114bbc: ; 114bbc
 	ld a, $1
 	pop hl
 	jp Function11425c
+
 ; 114c0b
 
 Function114c0b: ; 114c0b
@@ -2005,6 +2042,7 @@ Function114c0b: ; 114c0b
 	or c
 	jr z, .asm_114c24
 	jr .asm_114c18
+
 ; 114c55
 
 Function114c55: ; 114c55
@@ -2013,6 +2051,7 @@ Function114c55: ; 114c55
 	call Function115d80
 	pop bc
 	ret
+
 ; 114c5e
 
 Function114c5e: ; 114c5e
@@ -2115,6 +2154,7 @@ endr
 .asm_114cd7
 	dec bc
 	ret
+
 ; 114cd9
 
 Function114cd9: ; 114cd9
@@ -2181,6 +2221,7 @@ endr
 	pop hl
 	ld a, $1
 	jp Function11425c
+
 ; 114d39
 
 Function114d39: ; 114d39
@@ -2249,6 +2290,7 @@ Function114d39: ; 114d39
 	xor a
 	ld [hli], a
 	ret
+
 ; 114d99
 
 Function114d99: ; 114d99
@@ -2324,6 +2366,7 @@ rept 2
 endr
 	xor a
 	ret
+
 ; 114df1
 
 Function114df1: ; 114df1
@@ -2374,6 +2417,7 @@ Function114df1: ; 114df1
 .asm_114e2b
 	xor a
 	ret
+
 ; 114e2d
 
 Function114e2d: ; 114e2d
@@ -2410,6 +2454,7 @@ Function114e2d: ; 114e2d
 	jr z, .asm_114e55
 	xor a
 	ret
+
 ; 114e62
 
 Function114e62: ; 114e62
@@ -2454,6 +2499,7 @@ Function114e62: ; 114e62
 	ld a, $1
 	ld b, $83
 	jp Function11425c
+
 ; 114ea0
 
 Function114ea0: ; 114ea0
@@ -2501,6 +2547,7 @@ Function114ea0: ; 114ea0
 	ld a, $1
 	ld b, $83
 	ret
+
 ; 114ee0
 
 Function114ee0: ; 114ee0
@@ -2509,6 +2556,7 @@ Function114ee0: ; 114ee0
 	call Function115d80
 	pop bc
 	ret
+
 ; 114ee9
 
 Function114ee9: ; 114ee9
@@ -2544,6 +2592,7 @@ endr
 	ld [hli], a
 	ld [hl], d
 	ret
+
 ; 114f0a
 
 Function114f0a: ; 114f0a
@@ -2580,6 +2629,7 @@ Function114f0a: ; 114f0a
 	jr z, .asm_114f21
 	ld a, $ff
 	ret
+
 ; 114f39
 
 Function114f39: ; 114f39
@@ -2611,6 +2661,7 @@ Function114f39: ; 114f39
 
 .asm_114f58
 	ret
+
 ; 114f59
 
 Function114f59: ; 114f59
@@ -2738,6 +2789,7 @@ Function114f59: ; 114f59
 .asm_11501e
 	xor a
 	ret
+
 ; 115020
 
 Function115020: ; 115020
@@ -2786,6 +2838,7 @@ Function115020: ; 115020
 .asm_115056
 	ld a, $1
 	ret
+
 ; 115059
 
 Function115059: ; 115059
@@ -2794,6 +2847,7 @@ Function115059: ; 115059
 	call Function115d80
 	pop bc
 	ret
+
 ; 115062
 
 Function115062: ; 115062
@@ -2848,6 +2902,7 @@ Function115062: ; 115062
 
 .asm_1150b2
 	ret
+
 ; 1150b3
 
 Function1150b3: ; 1150b3
@@ -2952,6 +3007,7 @@ endr
 	xor a
 	ld [de], a
 	ret
+
 ; 115136
 
 Function115136: ; 115136
@@ -2999,6 +3055,7 @@ Function115136: ; 115136
 .asm_11516d
 	ld a, $1
 	ret
+
 ; 115170
 
 Function115170: ; 115170
@@ -3007,6 +3064,7 @@ Function115170: ; 115170
 	call Function115d80
 	pop bc
 	ret
+
 ; 115179
 
 Function115179: ; 115179
@@ -3118,6 +3176,7 @@ Function115179: ; 115179
 	ld [hl], b
 	xor a
 	ret
+
 ; 11520e
 
 Function11520e: ; 11520e
@@ -3126,6 +3185,7 @@ Function11520e: ; 11520e
 	call Function115d80
 	pop bc
 	ret
+
 ; 115217
 
 Function115217: ; 115217
@@ -3212,6 +3272,7 @@ Function115217: ; 115217
 	inc e
 	call z, Function115286
 	jr .asm_115252
+
 ; 115286
 
 Function115286: ; 115286
@@ -3220,6 +3281,7 @@ Function115286: ; 115286
 	call Function115d80
 	pop bc
 	ret
+
 ; 11528f
 
 Function11528f: ; 11528f
@@ -3244,6 +3306,7 @@ Function11528f: ; 11528f
 	jr nz, .asm_1152a4
 	ld [hl], c
 	ret
+
 ; 1152af
 
 Function1152af: ; 1152af
@@ -3252,6 +3315,7 @@ Function1152af: ; 1152af
 	call Function115d80
 	pop bc
 	ret
+
 ; 1152b8
 
 Function1152b8: ; 1152b8
@@ -3378,6 +3442,7 @@ Function1152b8: ; 1152b8
 	add hl, de
 	xor a
 	jp Function11425c
+
 ; 11537d
 
 Function11537d: ; 11537d
@@ -3427,6 +3492,7 @@ Function11537d: ; 11537d
 	ld [wdc03], a
 	ld [wStartDay], a
 	ret
+
 ; 1153b5
 
 Function1153b5: ; 1153b5
@@ -3454,6 +3520,7 @@ endr
 	inc hl
 	ld [hl], d
 	ret
+
 ; 1153d2
 
 Function1153d2: ; 1153d2
@@ -3641,6 +3708,7 @@ Function1153d2: ; 1153d2
 	ld [wdc04], a
 	xor a
 	ret
+
 ; 1154d4
 
 Function1154d4: ; 1154d4
@@ -3772,6 +3840,7 @@ Function1154d4: ; 1154d4
 	jr z, .asm_115560
 	call Function1155d1
 	jr .asm_115547
+
 ; 1155af
 
 Function1155af: ; 1155af
@@ -3803,6 +3872,7 @@ Function1155af: ; 1155af
 	ld [hl], d
 	call Function1155d1
 	ret
+
 ; 1155d1
 
 Function1155d1: ; 1155d1
@@ -3847,6 +3917,7 @@ Function1155d1: ; 1155d1
 	ld a, h
 	ld [wdc0e], a
 	ret
+
 ; 11560a
 
 Function11560a: ; 11560a
@@ -3974,6 +4045,7 @@ Function11560a: ; 11560a
 	ld [de], a
 	ld bc, $03db
 	jr .asm_115659
+
 ; 1156cc
 
 Function1156cc: ; 1156cc
@@ -4037,6 +4109,7 @@ Function1156cc: ; 1156cc
 	ld a, $1
 	ld b, $83
 	jp Function11425c
+
 ; 115732
 
 Function115732: ; 115732
@@ -4080,6 +4153,7 @@ Function115732: ; 115732
 	ld [hli], a
 	ld [hl], b
 	ret
+
 ; 11575c
 
 Function11575c: ; 11575c
@@ -4167,6 +4241,7 @@ Function11575c: ; 11575c
 	ld a, $2
 	ld [wStartDay], a
 	ret
+
 ; 1157d0
 
 Function1157d0: ; 1157d0
@@ -4225,6 +4300,7 @@ Function1157d0: ; 1157d0
 	ld a, $3
 	ld [wStartDay], a
 	ret
+
 ; 11581e
 
 Function11581e: ; 11581e
@@ -4332,6 +4408,7 @@ Function11581e: ; 11581e
 	ld a, $ff
 	ld [wStartDay], a
 	ret
+
 ; 1158c2
 
 Function1158c2: ; 1158c2
@@ -4543,6 +4620,7 @@ endr
 	ld a, $0
 	ld [hl], a
 	ret
+
 ; 1159dc
 
 Function1159dc: ; 1159dc
@@ -4572,6 +4650,7 @@ Function1159dc: ; 1159dc
 .asm_1159f8
 	ld a, $2b
 	ret
+
 ; 1159fb
 
 Function1159fb: ; 1159fb
@@ -4634,6 +4713,7 @@ Function1159fb: ; 1159fb
 .asm_115a5a
 	ld a, $1
 	jp Function11425c
+
 ; 115a5f
 
 Function115a5f: ; 115a5f
@@ -4694,6 +4774,7 @@ Function115a5f: ; 115a5f
 	ld a, $2
 	ld [wStartDay], a
 	ret
+
 ; 115ab0
 
 Function115ab0: ; 115ab0
@@ -4754,6 +4835,7 @@ Function115ab0: ; 115ab0
 	ld [wStartDay], a
 	xor a
 	ret
+
 ; 115b00
 
 Function115b00: ; 115b00
@@ -4888,6 +4970,7 @@ endr
 .asm_115bc6
 	xor a
 	ret
+
 ; 115bc8
 
 Function115bc8: ; 115bc8
@@ -4989,6 +5072,7 @@ endr
 .asm_115c46
 	ld a, $2
 	ret
+
 ; 115c49
 
 Function115c49: ; 115c49
@@ -5127,6 +5211,7 @@ endr
 	cp $0
 	jp nz, .asm_115c64
 	ret
+
 ; 115cfd
 
 Function115cfd: ; 115cfd
@@ -5197,6 +5282,7 @@ Function115cfd: ; 115cfd
 .asm_115d50
 	sub $47
 	ret
+
 ; 115d53
 
 Function115d53: ; 115d53
@@ -5212,6 +5298,7 @@ Function115d53: ; 115d53
 	xor a
 	ld [hl], a
 	ret
+
 ; 115d61
 
 Function115d61: ; 115d61
@@ -5220,6 +5307,7 @@ Function115d61: ; 115d61
 	call Function115d80
 	pop bc
 	ret
+
 ; 115d6a
 
 Function115d6a: ; 115d6a
@@ -5234,6 +5322,7 @@ Function115d6a: ; 115d6a
 	jr nz, .asm_115d6a
 	xor a
 	ret
+
 ; 115d77
 
 Function115d77: ; 115d77
@@ -5242,6 +5331,7 @@ Function115d77: ; 115d77
 	call Function115d80
 	pop bc
 	ret
+
 ; 115d80
 
 Function115d80: ; 115d80
@@ -5264,915 +5354,11 @@ Function115d80: ; 115d80
 	ld d, $a0
 	ld e, $0
 	ret
+
 ; 115d99
 
-Function115d99: ; 115d99
-	ld de, GFX_11601a
-	ld hl, VTiles0 tile $60
-	lb bc, BANK(GFX_11601a), $14
-	call Get2bpp
-	xor a
-	ld [wc305], a
-	ld [wc306], a
-	ld [wc309], a
-	ld [wc30a], a
-	ld [wc30b], a
-	ld [wc30c], a
-	ld a, $10
-	ld [wc307], a
-	ld a, $18
-	ld [wc308], a
-	ret
-; 115dc3
+INCLUDE "misc/mobile_45_sprite_engine.asm"
 
-Function115dc3: ; 115dc3
-	xor a
-	ld [wc305], a
-	ld a, $a0
-	ld hl, Sprites + $7c
-	ld bc, $0020
-	call ByteFill
-	ret
-; 115dd3
-
-Function115dd3: ; 115dd3
-	ld a, [wc305]
-	and a
-	ret z
-	ld a, $a0
-	ld hl, Sprites + $7c
-	ld bc, $0020
-	call ByteFill
-	call Function115e22
-	ld a, [wc309]
-	sla a
-	ld c, a
-	ld b, 0
-	ld hl, Unknown_115e86
-	add hl, bc
-	ld a, [hli]
-	ld e, a
-	ld a, [hl]
-	ld d, a
-	push de
-	pop hl
-	ld de, Sprites + $7c
-	ld a, [wc307]
-	ld c, a
-	ld a, [wc308]
-	ld b, a
-	ld a, [hli]
-.asm_115e04
-	push af
-	ld a, [hli]
-	add b
-	ld [de], a
-	inc de
-	ld a, [hli]
-	add c
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	pop af
-	dec a
-	jr nz, .asm_115e04
-	ret
-; 115e18
-
-Function115e18: ; 115e18
-	ld a, c
-	ld [wc30a], a
-	xor a
-	ld [wc30b], a
-	jr Function115e2b
-; 115e22
-
-Function115e22: ; 115e22
-	ld hl, wc30c
-	dec [hl]
-	ret nz
-	ld hl, wc30b
-	inc [hl]
-
-Function115e2b: ; 115e2b
-	ld a, [wc30a]
-	sla a
-	ld c, a
-	ld b, 0
-	ld hl, Unknown_115e59
-	add hl, bc
-	ld a, [hli]
-	ld e, a
-	ld a, [hli]
-	ld d, a
-	push de
-	pop hl
-	ld a, [wc30b]
-	sla a
-	ld c, a
-	ld b, $0
-	add hl, bc
-	ld a, [hli]
-	cp $ff
-	jr nz, .asm_115e51
-	xor a
-	ld [wc30b], a
-	jr Function115e2b
-
-.asm_115e51
-	ld [wc309], a
-	ld a, [hl]
-	ld [wc30c], a
-	ret
-; 115e59
-
-Unknown_115e59:
-	dw Unknown_115e61
-	dw Unknown_115e6c
-	dw Unknown_115e76
-	dw Unknown_115e79
-
-Unknown_115e61: ; 115e61
-	db $4, $8
-	db $5, $8
-	db $6, $8
-	db $7, $8
-	db $8, $8
-	db $ff
-
-Unknown_115e6c: ; 115e6c
-	db $1, $8
-	db $2, $8
-	db $3, $8
-	db $9, $8
-	db $a, $8
-
-Unknown_115e76: ; 115e76
-	db $0, $8
-	db $ff
-
-Unknown_115e79: ; 115e79
-	db $b, $8
-	db $c, $8
-	db $d, $8
-	db $e, $8
-	db $f, $8
-	db $0, $8
-	db $ff
-; 115e86
-
-Unknown_115e86:
-	dw Unknown_115ea6
-	dw Unknown_115eb7
-	dw Unknown_115ecc
-	dw Unknown_115ee1
-	dw Unknown_115ef6
-	dw Unknown_115f13
-	dw Unknown_115f30
-	dw Unknown_115f4d
-	dw Unknown_115f6a
-	dw Unknown_115f87
-	dw Unknown_115f9c
-	dw Unknown_115fb1
-	dw Unknown_115fc6
-	dw Unknown_115fdb
-	dw Unknown_115ff0
-	dw Unknown_116005
-
-Unknown_115ea6: ; 115ea6
-	db $4
-	db $8, $0, $60, $1
-	db $8, $8, $61, $1
-	db $10, $0, $62, $1
-	db $10, $8, $63, $1
-
-Unknown_115eb7: ; 115eb7
-	db $5
-	db $0, $8, $64, $0
-	db $8, $0, $60, $1
-	db $8, $8, $61, $1
-	db $10, $0, $62, $1
-	db $10, $8, $63, $1
-
-Unknown_115ecc: ; 115ecc
-	db $5
-	db $0, $8, $65, $0
-	db $8, $0, $60, $1
-	db $8, $8, $61, $1
-	db $10, $0, $62, $1
-	db $10, $8, $63, $1
-
-Unknown_115ee1: ; 115ee1
-	db $5
-	db $0, $8, $66, $0
-	db $8, $0, $60, $1
-	db $8, $8, $61, $1
-	db $10, $0, $62, $1
-	db $10, $8, $63, $1
-
-Unknown_115ef6: ; 115ef6
-	db $7
-	db $0, $0, $67, $1
-	db $8, $0, $68, $1
-	db $10, $0, $6d, $0
-	db $10, $8, $69, $0
-	db $10, $10, $6a, $0
-	db $18, $8, $6b, $0
-	db $18, $10, $6c, $0
-
-Unknown_115f13: ; 115f13
-	db $7
-	db $0, $0, $67, $1
-	db $8, $0, $68, $1
-	db $10, $0, $6e, $0
-	db $10, $8, $69, $0
-	db $10, $10, $6a, $0
-	db $18, $8, $6b, $0
-	db $18, $10, $6c, $0
-
-Unknown_115f30: ; 115f30
-	db $7
-	db $0, $0, $67, $1
-	db $8, $0, $68, $1
-	db $10, $0, $6f, $0
-	db $10, $8, $69, $0
-	db $10, $10, $6a, $0
-	db $18, $8, $6b, $0
-	db $18, $10, $6c, $0
-
-Unknown_115f4d: ; 115f4d
-	db $7
-	db $0, $0, $67, $1
-	db $8, $0, $68, $1
-	db $10, $0, $70, $0
-	db $10, $8, $69, $0
-	db $10, $10, $6a, $0
-	db $18, $8, $6b, $0
-	db $18, $10, $6c, $0
-
-Unknown_115f6a: ; 115f6a
-	db $7
-	db $0, $0, $67, $1
-	db $8, $0, $68, $1
-	db $10, $0, $71, $0
-	db $10, $8, $69, $0
-	db $10, $10, $6a, $0
-	db $18, $8, $6b, $0
-	db $18, $10, $6c, $0
-
-Unknown_115f87: ; 115f87
-	db $5
-	db $0, $8, $72, $0
-	db $8, $0, $60, $1
-	db $8, $8, $61, $1
-	db $10, $0, $62, $1
-	db $10, $8, $63, $1
-
-Unknown_115f9c: ; 115f9c
-	db $5
-	db $0, $8, $73, $0
-	db $8, $0, $60, $1
-	db $8, $8, $61, $1
-	db $10, $0, $62, $1
-	db $10, $8, $63, $1
-
-Unknown_115fb1: ; 115fb1
-	db $5
-	db $1, $8, $64, $60
-	db $8, $0, $60, $1
-	db $8, $8, $61, $1
-	db $10, $0, $62, $1
-	db $10, $8, $63, $1
-
-Unknown_115fc6: ; 115fc6
-	db $5
-	db $1, $8, $65, $60
-	db $8, $0, $60, $1
-	db $8, $8, $61, $1
-	db $10, $0, $62, $1
-	db $10, $8, $63, $1
-
-Unknown_115fdb: ; 115fdb
-	db $5
-	db $1, $8, $66, $60
-	db $8, $0, $60, $1
-	db $8, $8, $61, $1
-	db $10, $0, $62, $1
-	db $10, $8, $63, $1
-
-Unknown_115ff0: ; 115ff0
-	db $5
-	db $1, $8, $72, $60
-	db $8, $0, $60, $1
-	db $8, $8, $61, $1
-	db $10, $0, $62, $1
-	db $10, $8, $63, $1
-
-Unknown_116005: ; 116005
-	db $5
-	db $1, $8, $73, $60
-	db $8, $0, $60, $1
-	db $8, $8, $61, $1
-	db $10, $0, $62, $1
-	db $10, $8, $63, $1
-; 11601a
-
-GFX_11601a:: ; 11601a
-INCBIN "gfx/unknown/11601a.2bpp"
-
-Function11615a: ; 11615a
-	xor a
-	ld [wc30d], a
-	ld [$c319], a
-	ld [wc310], a
-	ld [wc311], a
-	ld [wc312], a
-	ld [wc313], a
-	ld [wc314], a
-	ld [wc314 + 1], a
-	ld [wc314 + 4], a
-	ld [wc3f6], a
-	ld [wc3f8], a
-	ld [wc3f2], a
-	ld [wc3f4], a
-	ld a, $24
-	ld [wc3f5], a
-	ld a, $7
-	ld [wc3f7], a
-	ld a, $b0
-	ld [wc30e], a
-	ld [wc3f1], a
-	ld a, $48
-	ld [wc30f], a
-	ld [wc3f3], a
-	ret
-; 11619d
-
-Function11619d: ; 11619d
-	ld a, [wc30d]
-	and a
-	ret z
-	ld a, [$c319]
-	cp $2
-	jr c, .asm_1161b4
-	ld a, $a0
-	ld hl, Sprites
-	ld bc, $0064
-	call ByteFill
-
-.asm_1161b4
-	call Function1161b8
-	ret
-; 1161b8
-
-Function1161b8: ; 1161b8
-	ld a, [$c319]
-	ld e, a
-	ld d, 0
-	ld hl, .Jumptable
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 1161c7
-
-.Jumptable: ; 1161c7
-	dw Function1161d5
-	dw Function116294
-	dw Function1162cb
-	dw Function1162f2
-	dw Function1163c0
-	dw Function11636e
-	dw Function116441
-; 1161d5
-
-Function1161d5: ; 1161d5
-	ld a, [rSVBK]
-	push af
-
-	ld a, $6
-	ld [rSVBK], a
-
-	ld hl, Unknown_117356
-	ld de, wDecompressScratch
-	ld bc, $0300
-	call CopyBytes
-
-	di
-
-.wait_for_vblank
-; Wait until a vblank would occur had interrupts not just been disabled.
-	ld a, [rLY]
-	cp $91
-	jr nz, .wait_for_vblank
-
-	ld a, $d0
-	ld [rHDMA1], a
-	ld a, $0
-	ld [rHDMA2], a
-	ld a, $1c
-	ld [rHDMA3], a
-	xor a
-	ld [rHDMA4], a
-	ld a, $8
-	ld [rHDMA5], a
-
-	ld a, $d0
-	ld [rHDMA1], a
-	ld a, $80
-	ld [rHDMA2], a
-	ld a, $1c
-	ld [rHDMA3], a
-	ld a, $80
-	ld [rHDMA4], a
-	ld a, $8
-	ld [rHDMA5], a
-
-	ld a, $d1
-	ld [rHDMA1], a
-	ld a, $0
-	ld [rHDMA2], a
-	ld a, $1d
-	ld [rHDMA3], a
-	xor a
-	ld [rHDMA4], a
-	ld a, $8
-	ld [rHDMA5], a
-
-	ld a, $1
-	ld [rVBK], a
-
-	ld a, $d1
-	ld [rHDMA1], a
-	ld a, $80
-	ld [rHDMA2], a
-	ld a, $1c
-	ld [rHDMA3], a
-	xor a
-	ld [rHDMA4], a
-	ld a, $8
-	ld [rHDMA5], a
-
-	ld a, $d2
-	ld [rHDMA1], a
-	ld a, $0
-	ld [rHDMA2], a
-	ld a, $1c
-	ld [rHDMA3], a
-	ld a, $80
-	ld [rHDMA4], a
-	ld a, $8
-	ld [rHDMA5], a
-
-	ld a, $d2
-	ld [rHDMA1], a
-	ld a, $80
-	ld [rHDMA2], a
-	ld a, $1d
-	ld [rHDMA3], a
-	xor a
-	ld [rHDMA4], a
-	ld a, $8
-	ld [rHDMA5], a
-
-	xor a
-	ld [rVBK], a
-
-	ei
-
-	pop af
-	ld [rSVBK], a
-
-	callba ReloadMapPart
-	ld a, $8
-	ld [MusicFade], a
-	ld de, MUSIC_MOBILE_ADAPTER
-	ld a, e
-	ld [MusicFadeIDLo], a
-	ld a, d
-	ld [MusicFadeIDHi], a
-	ld a, [$c319]
-	inc a
-	ld [$c319], a
-	ret
-; 11628c
-
-MenuDataHeader_11628c: ; 11628c
-	db $40 ; flags
-	db  6,  0 ; start coords
-	db 17, 19 ; end coords
-	dw NULL
-	db 0 ; default option
-; 116294
-
-Function116294: ; 116294
-	callba Function170d02
-	ld a, [$c319]
-	inc a
-	ld [$c319], a
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld hl, UnknBGPals + 8 * 6
-	ld de, $c320
-	ld bc, 2 palettes
-	call CopyBytes
-	ld hl, Palette_11734e
-	ld de, UnknBGPals + 8 * 7
-	ld bc, 1 palettes
-	call CopyBytes
-	call SetPalettes
-	pop af
-	ld [rSVBK], a
-	ld a, $30
-	ld [hWY], a
-	ret
-; 1162cb
-
-Function1162cb: ; 1162cb
-	callba Function170cc6
-	ld a, [$c319]
-	inc a
-	ld [$c319], a
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld hl, Palette_11730e
-	ld de, UnknOBPals + 2 palettes
-	ld bc, 6 palettes
-	call CopyBytes
-	call SetPalettes
-	pop af
-	ld [rSVBK], a
-	ret
-; 1162f2
-
-Function1162f2: ; 1162f2
-	call Function11659d
-	call Function116758
-	call Function1167a6
-	ld a, [wc310]
-	cp EGG
-	ret z
-	sla a
-	ld c, a
-	ld b, 0
-	ld hl, Unknown_1168c5
-	add hl, bc
-	ld a, [hli]
-	ld e, a
-	ld a, [hl]
-	ld d, a
-	push de
-	pop hl
-	ld a, [wc30e]
-	ld c, a
-	ld a, [wc30f]
-	ld b, a
-	ld a, [wc314 + 4]
-	ld e, a
-	ld a, [hli]
-	sub e
-	ld de, Sprites + $24
-.asm_116321
-	push af
-	ld a, [hli]
-	add b
-	ld [de], a
-	inc de
-	ld a, [hli]
-	add c
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	pop af
-	dec a
-	jr nz, .asm_116321
-	call Function116468
-	ld a, [wc3f5]
-	sla a
-	ld c, a
-	ld b, 0
-	ld hl, Unknown_1168c5
-	add hl, bc
-	ld a, [hli]
-	ld e, a
-	ld a, [hl]
-	ld d, a
-	push de
-	pop hl
-	ld a, [wc3f1]
-	ld c, a
-	ld a, [wc3f3]
-	ld b, a
-	ld a, [wc3f8]
-	ld e, a
-	ld a, [hli]
-	sub e
-	ld de, Sprites
-.asm_11635a
-	push af
-	ld a, [hli]
-	add b
-	ld [de], a
-	inc de
-	ld a, [hli]
-	add c
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	pop af
-	dec a
-	jr nz, .asm_11635a
-	ret
-; 11636e
-
-Function11636e: ; 11636e
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld hl, BGPals
-	ld de, UnknBGPals
-	ld bc, $0040
-	call CopyBytes
-	pop af
-	ld [rSVBK], a
-	call SetPalettes
-	ld a, [rSVBK]
-	push af
-	ld a, $1
-	ld [rSVBK], a
-	ld a, $a0
-	ld hl, Sprites
-	ld bc, 16 * 4
-	call ByteFill
-	ld a, $90
-	ld [hWY], a
-	call UpdateSprites
-	pop af
-	ld [rSVBK], a
-	callba ReloadMapPart
-	ld a, $8
-	ld [MusicFade], a
-	ld a, [wMapMusic]
-	ld [MusicFadeIDLo], a
-	xor a
-	ld [MusicFadeIDHi], a
-	xor a
-	ld [$c319], a
-	ld [wc30d], a
-	ret
-; 1163c0
-
-Function1163c0: ; 1163c0
-	ld a, [rSVBK]
-	push af
-	ld a, $1
-	ld [rSVBK], a
-	ld a, $a0
-	ld hl, Sprites
-	ld bc, 16 * 4
-	call ByteFill
-	call DelayFrame
-	callba Function14146
-	ld b, SCGB_MAPPALS
-	call GetSGBLayout
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld hl, $c320
-	ld de, wd030
-	ld bc, $0010
-	call CopyBytes
-	pop af
-	ld [rSVBK], a
-	call SetPalettes
-	call DelayFrame
-	ld a, $90
-	ld [hWY], a
-	call UpdateSprites
-	callba Function14157
-	pop af
-	ld [rSVBK], a
-	callba ReloadMapPart
-	ld a, [wLinkMode]
-	cp $4
-	jr z, .asm_11642a
-	ld a, $8
-	ld [MusicFade], a
-	ld a, [wMapMusic]
-	ld [MusicFadeIDLo], a
-	xor a
-	ld [MusicFadeIDHi], a
-	jr .asm_116439
-
-.asm_11642a
-	ld a, $8
-	ld [MusicFade], a
-	ld a, $0
-	ld [MusicFadeIDLo], a
-	ld a, $0
-	ld [MusicFadeIDHi], a
-
-.asm_116439
-	xor a
-	ld [$c319], a
-	ld [wc30d], a
-	ret
-; 116441
-
-Function116441: ; 116441
-	callba Function17d405
-	ld a, $90
-	ld [hWY], a
-	callba ReloadMapPart
-	ld a, $8
-	ld [MusicFade], a
-	ld a, [wMapMusic]
-	ld [MusicFadeIDLo], a
-	xor a
-	ld [MusicFadeIDHi], a
-	xor a
-	ld [$c319], a
-	ld [wc30d], a
-	ret
-; 116468
-
-Function116468: ; 116468
-	call Function116567
-	ld a, [wc314]
-	cp $d
-	jr nz, .asm_1164a8
-	ld hl, wc30e
-	ld a, [hl]
-	cp $50
-	jr nc, .asm_116484
-	ld a, $50
-	sub [hl]
-	add $50
-	ld [wc3f1], a
-	jr .asm_11648d
-
-.asm_116484
-	sub $50
-	ld c, a
-	ld a, $50
-	sub c
-	ld [wc3f1], a
-
-.asm_11648d
-	ld hl, wc30f
-	ld a, [hl]
-	cp $60
-	jr nc, .asm_11649e
-	ld a, $60
-	sub [hl]
-	add $60
-	ld [wc3f3], a
-	ret
-
-.asm_11649e
-	sub $60
-	ld c, a
-	ld a, $60
-	sub c
-	ld [wc3f3], a
-	ret
-
-.asm_1164a8
-	ld hl, wc30e
-	ld a, $b0
-	cp [hl]
-	jr nc, .asm_1164b8
-	ld a, [wc3f1]
-	and a
-	jr z, .asm_11650b
-	jr .asm_1164f2
-
-.asm_1164b8
-	ld a, [wc3f1]
-	sub [hl]
-	jr nc, .asm_1164c1
-	xor $ff
-	inc a
-
-.asm_1164c1
-	ld b, a
-	ld c, $0
-	ld a, $5
-.asm_1164c6
-	srl b
-	rr c
-	dec a
-	jr nz, .asm_1164c6
-	ld a, c
-	ld [wc3fa], a
-	ld a, b
-	ld [wc3f9], a
-	ld a, [wc3f1]
-	sub [hl]
-	jr c, .asm_1164f2
-	ld c, $0
-	ld a, [wc3fa]
-	xor $ff
-	add $1
-	rl c
-	ld [wc3fa], a
-	ld a, [wc3f9]
-	xor $ff
-	add c
-	ld [wc3f9], a
-
-.asm_1164f2
-	ld a, [wc3f2]
-	ld l, a
-	ld a, [wc3f1]
-	ld h, a
-	ld a, [wc3fa]
-	ld e, a
-	ld a, [wc3f9]
-	ld d, a
-	add hl, de
-	ld a, l
-	ld [wc3f2], a
-	ld a, h
-	ld [wc3f1], a
-
-.asm_11650b
-	ld hl, wc30f
-	ld a, $b0
-	cp [hl]
-	jr c, .asm_11654d
-	ld a, [wc3f3]
-	sub [hl]
-	jr nc, .asm_11651c
-	xor $ff
-	inc a
-
-.asm_11651c
-	ld b, a
-	ld c, $0
-	ld a, $5
-.asm_116521
-	srl b
-	rr c
-	dec a
-	jr nz, .asm_116521
-	ld a, c
-	ld [wc3fc], a
-	ld a, b
-	ld [wc3fb], a
-	ld a, [wc3f3]
-	sub [hl]
-	jr c, .asm_11654d
-	ld c, $0
-	ld a, [wc3fc]
-	xor $ff
-	add $1
-	rl c
-	ld [wc3fc], a
-	ld a, [wc3fb]
-	xor $ff
-	add c
-	ld [wc3fb], a
-
-.asm_11654d
-	ld a, [wc3f4]
-	ld l, a
-	ld a, [wc3f3]
-	ld h, a
-	ld a, [wc3fc]
-	ld e, a
-	ld a, [wc3fb]
-	ld d, a
-	add hl, de
-	ld a, l
-	ld [wc3f4], a
-	ld a, h
-	ld [wc3f3], a
-	ret
 ; 116567
 
 Function116567: ; 116567
@@ -6211,6 +5397,7 @@ Function116567: ; 116567
 	ld a, [hl]
 	ld [wc3f7], a
 	ret
+
 ; 11659d
 
 Function11659d: ; 11659d
@@ -6227,6 +5414,7 @@ endr
 	ld h, [hl]
 	ld l, a
 	jp [hl]
+
 ; 1165af
 
 Jumptable_1165af: ; 1165af
@@ -6271,6 +5459,7 @@ Function1165e3:
 	call Function116780
 	ret c
 	jp Function116797
+
 ; 1165f5
 
 Function1165f5: ; 1165f5
@@ -6292,6 +5481,7 @@ Function116600:
 	ld a, $2
 	ld [wc314], a
 	ret
+
 ; 116615
 
 Function116615: ; 116615
@@ -6314,6 +5504,7 @@ Function116623:
 	call Function116780
 	ret c
 	jp Function116797
+
 ; 116635
 
 Function116635: ; 116635
@@ -6335,6 +5526,7 @@ Function116640:
 	ld a, $7
 	ld [wc314], a
 	ret
+
 ; 116655
 
 Function116655: ; 116655
@@ -6381,6 +5573,7 @@ Function11668d:
 	ld a, $c
 	ld [wc314], a
 	ret
+
 ; 11669f
 
 Function11669f: ; 11669f
@@ -6429,6 +5622,7 @@ Function1166d6:
 	xor a
 	ld [wc314], a
 	ret
+
 ; 1166f4
 
 Function1166f4: ; 1166f4
@@ -6456,6 +5650,7 @@ Function1166f4: ; 1166f4
 	call Function11679c
 	call Function116797
 	ret
+
 ; 11671f
 
 Function11671f: ; 11671f
@@ -6479,6 +5674,7 @@ Function11671f: ; 11671f
 	call Function11679c
 	call Function116797
 	ret
+
 ; 116747
 
 Function116747: ; 116747
@@ -6491,6 +5687,7 @@ Function116747: ; 116747
 	add [hl]
 	ld [hl], a
 	ret
+
 ; 116758
 
 Function116758: ; 116758
@@ -6521,6 +5718,7 @@ Function116758: ; 116758
 .asm_11677a
 	ld [wc314 + 4], a
 	ret
+
 ; 11677e
 
 Function11677e: ; 11677e
@@ -6538,6 +5736,7 @@ Function116780:
 .asm_11678c
 	and a
 	ret
+
 ; 11678e
 
 Function11678e: ; 11678e
@@ -6546,12 +5745,14 @@ Function11678e: ; 11678e
 	ld [wc314 + 1], a
 	inc [hl]
 	ret
+
 ; 116797
 
 Function116797: ; 116797
 	ld hl, wc314
 	inc [hl]
 	ret
+
 ; 11679c
 
 Function11679c:
@@ -6608,6 +5809,7 @@ asm_1167af
 	ld a, [hl]
 	ld [wc313], a
 	ret
+
 ; 1167eb
 
 Unknown_1167eb:
@@ -7654,6 +6856,7 @@ SECTION "Mobile Stadium", ROMX, BANK[$45]
 Special_GiveOddEgg: ; 117656
 	callba GiveOddEgg
 	ret
+
 ; 11765d
 
 Function11765d: ; 11765d (45:765d)
@@ -7784,6 +6987,7 @@ Function117764: ; 117764 (45:7764)
 	jr nz, .asm_11776f
 	ld a, $1
 	jr .asm_117770
+
 .asm_11776f
 	xor a
 .asm_117770
@@ -7880,6 +7084,7 @@ Function117764_d_up: ; 1177f1 (45:77f1)
 Function117764_d_vertical_load: ; 117806 (45:7806)
 	ld [wcd4c], a
 	ret
+
 Function117764_d_down: ; 11780a (45:780a)
 	ld a, [wcd4d]
 	cp $4
@@ -7895,9 +7100,11 @@ Function117764_d_down: ; 11780a (45:780a)
 	jr nc, .asm_117829
 	xor a
 	jr Function117764_d_vertical_load
+
 .asm_117825
 	ld a, $2
 	jr Function117764_d_vertical_load
+
 .asm_117829
 	ld a, $1
 	jr Function117764_d_vertical_load
@@ -7949,6 +7156,7 @@ Function117764_a_button: ; 11784c (45:784c)
 	jr nz, .ascii_symbols
 	ld hl, Unknown_117a0f
 	jr .got_ascii
+
 .ascii_symbols
 	ld hl, Unknown_117a47
 .got_ascii
@@ -8103,6 +7311,7 @@ Function1179a7: ; 1179a7 (45:79a7)
 	ld a, $1
 	ld [wcd49], a
 	ret
+
 ; 1179b5 (45:79b5)
 
 MenuDataHeader_1179b5: ; 1179b5
@@ -8146,6 +7355,7 @@ MobilePassword_IncrementJumptable: ; 117a0a (45:7a0a)
 	ld hl, wcd49
 	inc [hl]
 	ret
+
 ; 117a0f (45:7a0f)
 
 Unknown_117a0f:
@@ -8168,12 +7378,14 @@ MobileStudium: ; 0x117a7f
 	pop af
 	ld [hInMenu], a
 	ret
+
 ; 0x117a8d
 
 Function117a8d: ; 0x117a8d
 	call Function117a94
 	call Function117acd
 	ret
+
 ; 0x117a94
 
 Function117a94: ; 0x117a94
@@ -8187,6 +7399,7 @@ Function117a94: ; 0x117a94
 	callba Function172e78
 	callba Function104000
 	ret
+
 ; 0x117ab4
 
 Function117ab4: ; 0x117ab4
@@ -8196,6 +7409,7 @@ Function117ab4: ; 0x117ab4
 	callba Function172eb9
 	callba ReloadMapPart
 	ret
+
 ; 0x117acd
 
 Function117acd: ; 0x117acd
@@ -8206,6 +7420,7 @@ Function117acd: ; 0x117acd
 	call Function117ae9
 	callba Function104000
 	jr Function117acd
+
 .asm_117ae2
 	call ClearBGPalettes
 	call ClearSprites
@@ -8340,10 +7555,12 @@ Function117bb6:
 	ld a, $80
 	ld [wJumptableIndex], a
 	ret
+
 .asm_117be1
 	ld a, $80
 	ld [wJumptableIndex], a
 	ret
+
 .asm_117be7
 	ld a, [rSVBK]
 	push af
@@ -8370,12 +7587,14 @@ Function117bb6:
 	dec c
 	jr nz, .asm_117c0b
 	jr .asm_117c20
+
 .asm_117c16
 	pop af
 	ld [rSVBK], a
 	ld a, $d3
 	ld [wc300], a
 	jr .asm_117bd0
+
 .asm_117c20
 	pop af
 	ld [rSVBK], a
diff --git a/misc/mobile_45_sprite_engine.asm b/misc/mobile_45_sprite_engine.asm
new file mode 100755
index 000000000..ab31a9bb9
--- /dev/null
+++ b/misc/mobile_45_sprite_engine.asm
@@ -0,0 +1,923 @@
+Function115d99: ; 115d99
+	ld de, GFX_11601a
+	ld hl, VTiles0 tile $60
+	lb bc, BANK(GFX_11601a), $14
+	call Get2bpp
+	xor a
+	ld [wc305], a
+	ld [wc306], a
+	ld [wc309], a
+	ld [wc30a], a
+	ld [wc30b], a
+	ld [wc30c], a
+	ld a, $10
+	ld [wc307], a
+	ld a, $18
+	ld [wc308], a
+	ret
+
+; 115dc3
+
+Function115dc3: ; 115dc3
+	xor a
+	ld [wc305], a
+	ld a, $a0
+	ld hl, Sprites + 31 * 4
+	ld bc, 8 * 4
+	call ByteFill
+	ret
+
+; 115dd3
+
+Function115dd3: ; 115dd3
+	ld a, [wc305]
+	and a
+	ret z
+	ld a, $a0
+	ld hl, Sprites + 31 * 4
+	ld bc, 8 * 4
+	call ByteFill
+	call Function115e22
+	ld a, [wc309]
+	sla a
+	ld c, a
+	ld b, 0
+	ld hl, Unknown_115e86
+	add hl, bc
+	ld a, [hli]
+	ld e, a
+	ld a, [hl]
+	ld d, a
+	push de
+	pop hl
+	ld de, Sprites + 31 * 4
+	ld a, [wc307]
+	ld c, a
+	ld a, [wc308]
+	ld b, a
+	ld a, [hli]
+.asm_115e04
+	push af
+	ld a, [hli]
+	add b
+	ld [de], a
+	inc de
+	ld a, [hli]
+	add c
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	pop af
+	dec a
+	jr nz, .asm_115e04
+	ret
+
+; 115e18
+
+Function115e18: ; 115e18
+	ld a, c
+	ld [wc30a], a
+	xor a
+	ld [wc30b], a
+	jr Function115e2b
+
+; 115e22
+
+Function115e22: ; 115e22
+	ld hl, wc30c
+	dec [hl]
+	ret nz
+	ld hl, wc30b
+	inc [hl]
+
+Function115e2b: ; 115e2b
+	ld a, [wc30a]
+	sla a
+	ld c, a
+	ld b, 0
+	ld hl, Unknown_115e59
+	add hl, bc
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	push de
+	pop hl
+	ld a, [wc30b]
+	sla a
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [hli]
+	cp $ff
+	jr nz, .not_end
+	xor a
+	ld [wc30b], a
+	jr Function115e2b
+
+.not_end
+	ld [wc309], a
+	ld a, [hl]
+	ld [wc30c], a
+	ret
+
+; 115e59
+
+Unknown_115e59:
+	dw Unknown_115e61
+	dw Unknown_115e6c
+	dw Unknown_115e76
+	dw Unknown_115e79
+
+; OAM idx (see Unknown_115e86), flip flags/duration
+Unknown_115e61: ; 115e61
+	db $04, $08
+	db $05, $08
+	db $06, $08
+	db $07, $08
+	db $08, $08
+	db -1
+
+Unknown_115e6c: ; 115e6c
+	db $01, $08
+	db $02, $08
+	db $03, $08
+	db $09, $08
+	db $0a, $08
+Unknown_115e76: ; 115e76
+	db $00, $08
+	db -1
+
+Unknown_115e79: ; 115e79
+	db $0b, $08
+	db $0c, $08
+	db $0d, $08
+	db $0e, $08
+	db $0f, $08
+	db $00, $08
+	db -1
+; 115e86
+
+Unknown_115e86:
+	dw Unknown_115ea6
+	dw Unknown_115eb7
+	dw Unknown_115ecc
+	dw Unknown_115ee1
+	dw Unknown_115ef6
+	dw Unknown_115f13
+	dw Unknown_115f30
+	dw Unknown_115f4d
+	dw Unknown_115f6a
+	dw Unknown_115f87
+	dw Unknown_115f9c
+	dw Unknown_115fb1
+	dw Unknown_115fc6
+	dw Unknown_115fdb
+	dw Unknown_115ff0
+	dw Unknown_116005
+
+Unknown_115ea6: ; 115ea6
+	db 4
+	dsprite   1, 0,   0, 0, $60, $01
+	dsprite   1, 0,   1, 0, $61, $01
+	dsprite   2, 0,   0, 0, $62, $01
+	dsprite   2, 0,   1, 0, $63, $01
+
+Unknown_115eb7: ; 115eb7
+	db 5
+	dsprite   0, 0,   1, 0, $64, $00
+	dsprite   1, 0,   0, 0, $60, $01
+	dsprite   1, 0,   1, 0, $61, $01
+	dsprite   2, 0,   0, 0, $62, $01
+	dsprite   2, 0,   1, 0, $63, $01
+
+Unknown_115ecc: ; 115ecc
+	db 5
+	dsprite   0, 0,   1, 0, $65, $00
+	dsprite   1, 0,   0, 0, $60, $01
+	dsprite   1, 0,   1, 0, $61, $01
+	dsprite   2, 0,   0, 0, $62, $01
+	dsprite   2, 0,   1, 0, $63, $01
+
+Unknown_115ee1: ; 115ee1
+	db 5
+	dsprite   0, 0,   1, 0, $66, $00
+	dsprite   1, 0,   0, 0, $60, $01
+	dsprite   1, 0,   1, 0, $61, $01
+	dsprite   2, 0,   0, 0, $62, $01
+	dsprite   2, 0,   1, 0, $63, $01
+
+Unknown_115ef6: ; 115ef6
+	db 7
+	dsprite   0, 0,   0, 0, $67, $01
+	dsprite   1, 0,   0, 0, $68, $01
+	dsprite   2, 0,   0, 0, $6d, $00
+	dsprite   2, 0,   1, 0, $69, $00
+	dsprite   2, 0,   2, 0, $6a, $00
+	dsprite   3, 0,   1, 0, $6b, $00
+	dsprite   3, 0,   2, 0, $6c, $00
+
+Unknown_115f13: ; 115f13
+	db 7
+	dsprite   0, 0,   0, 0, $67, $01
+	dsprite   1, 0,   0, 0, $68, $01
+	dsprite   2, 0,   0, 0, $6e, $00
+	dsprite   2, 0,   1, 0, $69, $00
+	dsprite   2, 0,   2, 0, $6a, $00
+	dsprite   3, 0,   1, 0, $6b, $00
+	dsprite   3, 0,   2, 0, $6c, $00
+
+Unknown_115f30: ; 115f30
+	db 7
+	dsprite   0, 0,   0, 0, $67, $01
+	dsprite   1, 0,   0, 0, $68, $01
+	dsprite   2, 0,   0, 0, $6f, $00
+	dsprite   2, 0,   1, 0, $69, $00
+	dsprite   2, 0,   2, 0, $6a, $00
+	dsprite   3, 0,   1, 0, $6b, $00
+	dsprite   3, 0,   2, 0, $6c, $00
+
+Unknown_115f4d: ; 115f4d
+	db 7
+	dsprite   0, 0,   0, 0, $67, $01
+	dsprite   1, 0,   0, 0, $68, $01
+	dsprite   2, 0,   0, 0, $70, $00
+	dsprite   2, 0,   1, 0, $69, $00
+	dsprite   2, 0,   2, 0, $6a, $00
+	dsprite   3, 0,   1, 0, $6b, $00
+	dsprite   3, 0,   2, 0, $6c, $00
+
+Unknown_115f6a: ; 115f6a
+	db 7
+	dsprite   0, 0,   0, 0, $67, $01
+	dsprite   1, 0,   0, 0, $68, $01
+	dsprite   2, 0,   0, 0, $71, $00
+	dsprite   2, 0,   1, 0, $69, $00
+	dsprite   2, 0,   2, 0, $6a, $00
+	dsprite   3, 0,   1, 0, $6b, $00
+	dsprite   3, 0,   2, 0, $6c, $00
+
+Unknown_115f87: ; 115f87
+	db 5
+	dsprite   0, 0,   1, 0, $72, $00
+	dsprite   1, 0,   0, 0, $60, $01
+	dsprite   1, 0,   1, 0, $61, $01
+	dsprite   2, 0,   0, 0, $62, $01
+	dsprite   2, 0,   1, 0, $63, $01
+
+Unknown_115f9c: ; 115f9c
+	db 5
+	dsprite   0, 0,   1, 0, $73, $00
+	dsprite   1, 0,   0, 0, $60, $01
+	dsprite   1, 0,   1, 0, $61, $01
+	dsprite   2, 0,   0, 0, $62, $01
+	dsprite   2, 0,   1, 0, $63, $01
+
+Unknown_115fb1: ; 115fb1
+	db 5
+	dsprite   0, 1,   1, 0, $64, $60
+	dsprite   1, 0,   0, 0, $60, $01
+	dsprite   1, 0,   1, 0, $61, $01
+	dsprite   2, 0,   0, 0, $62, $01
+	dsprite   2, 0,   1, 0, $63, $01
+
+Unknown_115fc6: ; 115fc6
+	db 5
+	dsprite   0, 1,   1, 0, $65, $60
+	dsprite   1, 0,   0, 0, $60, $01
+	dsprite   1, 0,   1, 0, $61, $01
+	dsprite   2, 0,   0, 0, $62, $01
+	dsprite   2, 0,   1, 0, $63, $01
+
+Unknown_115fdb: ; 115fdb
+	db 5
+	dsprite   0, 1,   1, 0, $66, $60
+	dsprite   1, 0,   0, 0, $60, $01
+	dsprite   1, 0,   1, 0, $61, $01
+	dsprite   2, 0,   0, 0, $62, $01
+	dsprite   2, 0,   1, 0, $63, $01
+
+Unknown_115ff0: ; 115ff0
+	db 5
+	dsprite   0, 1,   1, 0, $72, $60
+	dsprite   1, 0,   0, 0, $60, $01
+	dsprite   1, 0,   1, 0, $61, $01
+	dsprite   2, 0,   0, 0, $62, $01
+	dsprite   2, 0,   1, 0, $63, $01
+
+Unknown_116005: ; 116005
+	db 5
+	dsprite   0, 1,   1, 0, $73, $60
+	dsprite   1, 0,   0, 0, $60, $01
+	dsprite   1, 0,   1, 0, $61, $01
+	dsprite   2, 0,   0, 0, $62, $01
+	dsprite   2, 0,   1, 0, $63, $01
+; 11601a
+
+GFX_11601a:: ; 11601a
+INCBIN "gfx/unknown/11601a.2bpp"
+
+
+Function11615a: ; 11615a
+	xor a
+	ld [wc30d], a
+	ld [$c319], a
+	ld [wc310], a
+	ld [wc311], a
+	ld [wc312], a
+	ld [wc313], a
+	ld [wc314], a
+	ld [wc314 + 1], a
+	ld [wc314 + 4], a
+	ld [wc3f6], a
+	ld [wc3f8], a
+	ld [wc3f2], a
+	ld [wc3f4], a
+	ld a, $24
+	ld [wc3f5], a
+	ld a, $7
+	ld [wc3f7], a
+	ld a, $b0
+	ld [wc30e], a
+	ld [wc3f1], a
+	ld a, $48
+	ld [wc30f], a
+	ld [wc3f3], a
+	ret
+
+; 11619d
+
+Function11619d: ; 11619d
+	ld a, [wc30d]
+	and a
+	ret z
+	ld a, [$c319]
+	cp $2
+	jr c, .asm_1161b4
+	ld a, $a0
+	ld hl, Sprites
+	ld bc, $0064
+	call ByteFill
+
+.asm_1161b4
+	call Function1161b8
+	ret
+
+; 1161b8
+
+Function1161b8: ; 1161b8
+	ld a, [$c319]
+	ld e, a
+	ld d, 0
+	ld hl, .Jumptable
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+
+; 1161c7
+
+.Jumptable: ; 1161c7
+	dw Function1161d5
+	dw Function116294
+	dw Function1162cb
+	dw Function1162f2
+	dw Function1163c0
+	dw Function11636e
+	dw Function116441
+; 1161d5
+
+Function1161d5: ; 1161d5
+	ld a, [rSVBK]
+	push af
+
+	ld a, $6
+	ld [rSVBK], a
+
+	ld hl, Unknown_117356
+	ld de, wDecompressScratch
+	ld bc, $0300
+	call CopyBytes
+
+	di
+
+.wait_for_vblank
+; Wait until a vblank would occur had interrupts not just been disabled.
+	ld a, [rLY]
+	cp $91
+	jr nz, .wait_for_vblank
+
+	ld a, $d0
+	ld [rHDMA1], a
+	ld a, $0
+	ld [rHDMA2], a
+	ld a, $1c
+	ld [rHDMA3], a
+	xor a
+	ld [rHDMA4], a
+	ld a, $8
+	ld [rHDMA5], a
+
+	ld a, $d0
+	ld [rHDMA1], a
+	ld a, $80
+	ld [rHDMA2], a
+	ld a, $1c
+	ld [rHDMA3], a
+	ld a, $80
+	ld [rHDMA4], a
+	ld a, $8
+	ld [rHDMA5], a
+
+	ld a, $d1
+	ld [rHDMA1], a
+	ld a, $0
+	ld [rHDMA2], a
+	ld a, $1d
+	ld [rHDMA3], a
+	xor a
+	ld [rHDMA4], a
+	ld a, $8
+	ld [rHDMA5], a
+
+	ld a, $1
+	ld [rVBK], a
+
+	ld a, $d1
+	ld [rHDMA1], a
+	ld a, $80
+	ld [rHDMA2], a
+	ld a, $1c
+	ld [rHDMA3], a
+	xor a
+	ld [rHDMA4], a
+	ld a, $8
+	ld [rHDMA5], a
+
+	ld a, $d2
+	ld [rHDMA1], a
+	ld a, $0
+	ld [rHDMA2], a
+	ld a, $1c
+	ld [rHDMA3], a
+	ld a, $80
+	ld [rHDMA4], a
+	ld a, $8
+	ld [rHDMA5], a
+
+	ld a, $d2
+	ld [rHDMA1], a
+	ld a, $80
+	ld [rHDMA2], a
+	ld a, $1d
+	ld [rHDMA3], a
+	xor a
+	ld [rHDMA4], a
+	ld a, $8
+	ld [rHDMA5], a
+
+	xor a
+	ld [rVBK], a
+
+	ei
+
+	pop af
+	ld [rSVBK], a
+
+	callba ReloadMapPart
+	ld a, $8
+	ld [MusicFade], a
+	ld de, MUSIC_MOBILE_ADAPTER
+	ld a, e
+	ld [MusicFadeIDLo], a
+	ld a, d
+	ld [MusicFadeIDHi], a
+	ld a, [$c319]
+	inc a
+	ld [$c319], a
+	ret
+
+; 11628c
+
+MenuDataHeader_11628c: ; 11628c
+	db $40 ; flags
+	db  6,  0 ; start coords
+	db 17, 19 ; end coords
+	dw NULL
+	db 0 ; default option
+; 116294
+
+Function116294: ; 116294
+	callba Function170d02
+	ld a, [$c319]
+	inc a
+	ld [$c319], a
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, UnknBGPals + 8 * 6
+	ld de, $c320
+	ld bc, 2 palettes
+	call CopyBytes
+	ld hl, Palette_11734e
+	ld de, UnknBGPals + 8 * 7
+	ld bc, 1 palettes
+	call CopyBytes
+	call SetPalettes
+	pop af
+	ld [rSVBK], a
+	ld a, $30
+	ld [hWY], a
+	ret
+
+; 1162cb
+
+Function1162cb: ; 1162cb
+	callba Function170cc6
+	ld a, [$c319]
+	inc a
+	ld [$c319], a
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, Palette_11730e
+	ld de, UnknOBPals + 2 palettes
+	ld bc, 6 palettes
+	call CopyBytes
+	call SetPalettes
+	pop af
+	ld [rSVBK], a
+	ret
+
+; 1162f2
+
+Function1162f2: ; 1162f2
+	call Function11659d
+	call Function116758
+	call Function1167a6
+	ld a, [wc310]
+	cp EGG
+	ret z
+	sla a
+	ld c, a
+	ld b, 0
+	ld hl, Unknown_1168c5
+	add hl, bc
+	ld a, [hli]
+	ld e, a
+	ld a, [hl]
+	ld d, a
+	push de
+	pop hl
+	ld a, [wc30e]
+	ld c, a
+	ld a, [wc30f]
+	ld b, a
+	ld a, [wc314 + 4]
+	ld e, a
+	ld a, [hli]
+	sub e
+	ld de, Sprites + $24
+.asm_116321
+	push af
+	ld a, [hli]
+	add b
+	ld [de], a
+	inc de
+	ld a, [hli]
+	add c
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	pop af
+	dec a
+	jr nz, .asm_116321
+	call Function116468
+	ld a, [wc3f5]
+	sla a
+	ld c, a
+	ld b, 0
+	ld hl, Unknown_1168c5
+	add hl, bc
+	ld a, [hli]
+	ld e, a
+	ld a, [hl]
+	ld d, a
+	push de
+	pop hl
+	ld a, [wc3f1]
+	ld c, a
+	ld a, [wc3f3]
+	ld b, a
+	ld a, [wc3f8]
+	ld e, a
+	ld a, [hli]
+	sub e
+	ld de, Sprites
+.asm_11635a
+	push af
+	ld a, [hli]
+	add b
+	ld [de], a
+	inc de
+	ld a, [hli]
+	add c
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	pop af
+	dec a
+	jr nz, .asm_11635a
+	ret
+
+; 11636e
+
+Function11636e: ; 11636e
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, BGPals
+	ld de, UnknBGPals
+	ld bc, $0040
+	call CopyBytes
+	pop af
+	ld [rSVBK], a
+	call SetPalettes
+	ld a, [rSVBK]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+	ld a, $a0
+	ld hl, Sprites
+	ld bc, 16 * 4
+	call ByteFill
+	ld a, $90
+	ld [hWY], a
+	call UpdateSprites
+	pop af
+	ld [rSVBK], a
+	callba ReloadMapPart
+	ld a, $8
+	ld [MusicFade], a
+	ld a, [wMapMusic]
+	ld [MusicFadeIDLo], a
+	xor a
+	ld [MusicFadeIDHi], a
+	xor a
+	ld [$c319], a
+	ld [wc30d], a
+	ret
+
+; 1163c0
+
+Function1163c0: ; 1163c0
+	ld a, [rSVBK]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+	ld a, $a0
+	ld hl, Sprites
+	ld bc, 16 * 4
+	call ByteFill
+	call DelayFrame
+	callba Function14146
+	ld b, SCGB_MAPPALS
+	call GetSGBLayout
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, $c320
+	ld de, wd030
+	ld bc, $0010
+	call CopyBytes
+	pop af
+	ld [rSVBK], a
+	call SetPalettes
+	call DelayFrame
+	ld a, $90
+	ld [hWY], a
+	call UpdateSprites
+	callba Function14157
+	pop af
+	ld [rSVBK], a
+	callba ReloadMapPart
+	ld a, [wLinkMode]
+	cp $4
+	jr z, .asm_11642a
+	ld a, $8
+	ld [MusicFade], a
+	ld a, [wMapMusic]
+	ld [MusicFadeIDLo], a
+	xor a
+	ld [MusicFadeIDHi], a
+	jr .asm_116439
+
+.asm_11642a
+	ld a, $8
+	ld [MusicFade], a
+	ld a, $0
+	ld [MusicFadeIDLo], a
+	ld a, $0
+	ld [MusicFadeIDHi], a
+
+.asm_116439
+	xor a
+	ld [$c319], a
+	ld [wc30d], a
+	ret
+
+; 116441
+
+Function116441: ; 116441
+	callba Function17d405
+	ld a, $90
+	ld [hWY], a
+	callba ReloadMapPart
+	ld a, $8
+	ld [MusicFade], a
+	ld a, [wMapMusic]
+	ld [MusicFadeIDLo], a
+	xor a
+	ld [MusicFadeIDHi], a
+	xor a
+	ld [$c319], a
+	ld [wc30d], a
+	ret
+
+; 116468
+
+Function116468: ; 116468
+	call Function116567
+	ld a, [wc314]
+	cp $d
+	jr nz, .asm_1164a8
+	ld hl, wc30e
+	ld a, [hl]
+	cp $50
+	jr nc, .asm_116484
+	ld a, $50
+	sub [hl]
+	add $50
+	ld [wc3f1], a
+	jr .asm_11648d
+
+.asm_116484
+	sub $50
+	ld c, a
+	ld a, $50
+	sub c
+	ld [wc3f1], a
+
+.asm_11648d
+	ld hl, wc30f
+	ld a, [hl]
+	cp $60
+	jr nc, .asm_11649e
+	ld a, $60
+	sub [hl]
+	add $60
+	ld [wc3f3], a
+	ret
+
+.asm_11649e
+	sub $60
+	ld c, a
+	ld a, $60
+	sub c
+	ld [wc3f3], a
+	ret
+
+.asm_1164a8
+	ld hl, wc30e
+	ld a, $b0
+	cp [hl]
+	jr nc, .asm_1164b8
+	ld a, [wc3f1]
+	and a
+	jr z, .asm_11650b
+	jr .asm_1164f2
+
+.asm_1164b8
+	ld a, [wc3f1]
+	sub [hl]
+	jr nc, .asm_1164c1
+	xor $ff
+	inc a
+
+.asm_1164c1
+	ld b, a
+	ld c, $0
+	ld a, $5
+.asm_1164c6
+	srl b
+	rr c
+	dec a
+	jr nz, .asm_1164c6
+	ld a, c
+	ld [wc3fa], a
+	ld a, b
+	ld [wc3f9], a
+	ld a, [wc3f1]
+	sub [hl]
+	jr c, .asm_1164f2
+	ld c, $0
+	ld a, [wc3fa]
+	xor $ff
+	add $1
+	rl c
+	ld [wc3fa], a
+	ld a, [wc3f9]
+	xor $ff
+	add c
+	ld [wc3f9], a
+
+.asm_1164f2
+	ld a, [wc3f2]
+	ld l, a
+	ld a, [wc3f1]
+	ld h, a
+	ld a, [wc3fa]
+	ld e, a
+	ld a, [wc3f9]
+	ld d, a
+	add hl, de
+	ld a, l
+	ld [wc3f2], a
+	ld a, h
+	ld [wc3f1], a
+
+.asm_11650b
+	ld hl, wc30f
+	ld a, $b0
+	cp [hl]
+	jr c, .asm_11654d
+	ld a, [wc3f3]
+	sub [hl]
+	jr nc, .asm_11651c
+	xor $ff
+	inc a
+
+.asm_11651c
+	ld b, a
+	ld c, $0
+	ld a, $5
+.asm_116521
+	srl b
+	rr c
+	dec a
+	jr nz, .asm_116521
+	ld a, c
+	ld [wc3fc], a
+	ld a, b
+	ld [wc3fb], a
+	ld a, [wc3f3]
+	sub [hl]
+	jr c, .asm_11654d
+	ld c, $0
+	ld a, [wc3fc]
+	xor $ff
+	add $1
+	rl c
+	ld [wc3fc], a
+	ld a, [wc3fb]
+	xor $ff
+	add c
+	ld [wc3fb], a
+
+.asm_11654d
+	ld a, [wc3f4]
+	ld l, a
+	ld a, [wc3f3]
+	ld h, a
+	ld a, [wc3fc]
+	ld e, a
+	ld a, [wc3fb]
+	ld d, a
+	add hl, de
+	ld a, l
+	ld [wc3f4], a
+	ld a, h
+	ld [wc3f3], a
+	ret
diff --git a/wram.asm b/wram.asm
index d54cc5b2e..fd07a0d5e 100644
--- a/wram.asm
+++ b/wram.asm
@@ -308,7 +308,7 @@ wGlobalAnimYOffset:: ds 1
 wGlobalAnimXOffset:: ds 1
 wSpriteAnimsEnd::
 
-wc3c1:: ds 11
+	ds 11
 wc3cc:: ds 1
 wc3cd:: ds 31
 wc3ec:: ds 1
@@ -373,19 +373,21 @@ wBT_OTTemp:: battle_tower_struct wBT_OTTemp
 wMisc:: ; ds (SCREEN_WIDTH + 4) * (SCREEN_HEIGHT + 2)
 wBattle::
 wc608::
+	ds 7
+wc60f::
+	ds 3
+wc612::
+	ds 10
+wInitHourBuffer:: ; c61c
+	ds 10
+wc626::
+	ds wc608 - @
 
 wEnemyMoveStruct::  move_struct wEnemyMoveStruct
-wc60f::
 wPlayerMoveStruct:: move_struct wPlayerMoveStruct
-wc616::
-	ds -4
-wc612:: ds 4
+
 EnemyMonNick::  ds PKMN_NAME_LENGTH ; c616
-	ds -5
-wInitHourBuffer:: ds 5
 BattleMonNick:: ds PKMN_NAME_LENGTH ; c621
-	ds -6
-wc626:: ds 6
 
 BattleMon:: battle_struct BattleMon ; c62c
 
@@ -637,10 +639,9 @@ wc6eb:: ds 1
 wPayDayMoney:: ds 3 ; c6ec
 
 wSafariMonAngerCount:: ds 1
-wSafariMonEating::
-wc6f0:: ds 2
+wSafariMonEating:: ds 2
 wEnemyBackupDVs:: ; used when enemy is transformed
-wc6f2:: ds 2
+	ds 2
 AlreadyDisobeyed:: ; c6f4
 	ds 1
 
@@ -2763,15 +2764,12 @@ wdc0d:: ds 1
 wdc0e:: ds 1
 
 ; Sprite id of each decoration
-wdc0f::
 Bed:: ; dc0f
 	ds 1
 Carpet:: ; dc10
 	ds 1
-wdc11::
 Plant:: ; dc11
 	ds 1
-wdc12::
 Poster:: ; dc12
 	ds 1
 Console:: ; dc13
@@ -2810,8 +2808,8 @@ FruitTreeFlags:: ; dc27
 
 wLuckyNumberDayBuffer:: ds 2
 	ds 2
-wSpecialPhoneCallID:: ds 2
-wdc33:: ds 2
+wSpecialPhoneCallID:: ds 1
+	ds 3
 wBugContestStartTime:: ds 4 ; day, hour, min, sec
 wdc39:: ds 1
 wUnusedTwoDayTimer:: ds 1

From 1637d915d422d633a883788774a893ce6fa78849 Mon Sep 17 00:00:00 2001
From: PikalaxALT <PikalaxALT@gmail.com>
Date: Mon, 11 Jan 2016 02:28:09 -0500
Subject: [PATCH 05/13] Restored StandingTile and introduced LastTile

---
 audio/engine.asm           |   2 +-
 engine/events.asm          |   2 +-
 engine/events_2.asm        |   4 +-
 engine/npc_movement.asm    |   8 +-
 engine/player_movement.asm |  16 +--
 engine/tile_events.asm     |  10 +-
 engine/warp_connection.asm |   8 +-
 home.asm                   |   8 +-
 home/map.asm               |  28 ++--
 home/map_objects.asm       |  19 +--
 main.asm                   |  74 +++--------
 tilesets/collision.asm     | 264 +++++++++++++++++++++++++++++++++++++
 wram.asm                   |  10 +-
 13 files changed, 333 insertions(+), 120 deletions(-)
 create mode 100755 tilesets/collision.asm

diff --git a/audio/engine.asm b/audio/engine.asm
index 8bec632ff..44bdfcc7c 100644
--- a/audio/engine.asm
+++ b/audio/engine.asm
@@ -1423,7 +1423,7 @@ MusicCommands: ; e8720
 	dw Music_ToggleNoise ; music noise sampling
 	dw Music_Panning ; force panning
 	dw Music_Volume ; volume
-	dw Music_Tone ; tune
+	dw Music_Tone ; tone
 	dw MusicE7 ; unused
 	dw MusicE8 ; unused
 	dw Music_TempoRelative ; global tempo
diff --git a/engine/events.asm b/engine/events.asm
index a8a57f547..5e6e359cd 100644
--- a/engine/events.asm
+++ b/engine/events.asm
@@ -378,7 +378,7 @@ CheckTileEvent: ; 96874
 	ret
 
 .warp_tile
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	call CheckPitTile
 	jr nz, .not_pit
 	ld a, PLAYEREVENT_FALL
diff --git a/engine/events_2.asm b/engine/events_2.asm
index 9d2763ac8..ec5026e40 100644
--- a/engine/events_2.asm
+++ b/engine/events_2.asm
@@ -161,7 +161,7 @@ CanUseSweetScent:: ; 97cfd
 	jr nc, .no
 
 .ice_check
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	call CheckIceTile
 	jr z, .no
 	scf
@@ -235,7 +235,7 @@ ChooseWildEncounter_BugContest:: ; 97d31
 ; 97d64
 
 TryWildEncounter_BugContest: ; 97d64
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	call CheckSuperTallGrassTile
 	ld b, 40 percent
 	jr z, .ok
diff --git a/engine/npc_movement.asm b/engine/npc_movement.asm
index bc270305b..097c62017 100755
--- a/engine/npc_movement.asm
+++ b/engine/npc_movement.asm
@@ -234,14 +234,14 @@ CheckFacingObject:: ; 6fd9
 	call CheckCounterTile
 	jr nz, .asm_6ff1
 
-	ld a, [PlayerNextMapX]
+	ld a, [PlayerStandingMapX]
 	sub d
 	cpl
 	inc a
 	add d
 	ld d, a
 
-	ld a, [PlayerNextMapY]
+	ld a, [PlayerStandingMapY]
 	sub e
 	cpl
 	inc a
@@ -482,9 +482,9 @@ IsPersonMovingOffEdgeOfScreen: ; 70ed
 ; 7113
 
 Function7113: ; unreferenced
-	ld a, [PlayerNextMapX]
+	ld a, [PlayerStandingMapX]
 	ld d, a
-	ld a, [PlayerNextMapY]
+	ld a, [PlayerStandingMapY]
 	ld e, a
 	ld bc, ObjectStructs
 	xor a
diff --git a/engine/player_movement.asm b/engine/player_movement.asm
index a57e5cef1..0820bd11e 100755
--- a/engine/player_movement.asm
+++ b/engine/player_movement.asm
@@ -118,7 +118,7 @@ DoPlayerMovement:: ; 80000
 ; Tiles such as waterfalls and warps move the player
 ; in a given direction, overriding input.
 
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	ld c, a
 	call CheckWhirlpoolTile
 	jr c, .asm_800c4
@@ -277,7 +277,7 @@ DoPlayerMovement:: ; 80000
 	cp 2
 	jr z, .bump
 
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	call CheckIceTile
 	jr nc, .ice
 
@@ -362,7 +362,7 @@ DoPlayerMovement:: ; 80000
 ; 801f3
 
 .TryJump: ; 801f3
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	ld e, a
 	and $f0
 	cp $a0 ; ledge
@@ -413,7 +413,7 @@ DoPlayerMovement:: ; 80000
 	ld d, 0
 	ld hl, .EdgeWarps
 	add hl, de
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	cp [hl]
 	jr nz, .not_warp
 
@@ -615,7 +615,7 @@ DoPlayerMovement:: ; 80000
 ;	tile collision pointer
 .table1
 	db STANDING, FACE_CURRENT, 0, 0
-	dw PlayerNextTile
+	dw PlayerStandingTile
 .table2
 	db RIGHT, FACE_RIGHT,  1,  0
 	dw TileRight
@@ -634,13 +634,13 @@ DoPlayerMovement:: ; 80000
 	ld a, 0
 	ld [hMapObjectIndexBuffer], a
 ; Load the next X coordinate into d
-	ld a, [PlayerNextMapX]
+	ld a, [PlayerStandingMapX]
 	ld d, a
 	ld a, [WalkingX]
 	add d
 	ld d, a
 ; Load the next Y coordinate into e
-	ld a, [PlayerNextMapY]
+	ld a, [PlayerStandingMapY]
 	ld e, a
 	ld a, [WalkingY]
 	add e
@@ -817,7 +817,7 @@ CheckStandingOnIce:: ; 80404
 	jr z, .not_ice
 	cp $f0
 	jr z, .not_ice
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	call CheckIceTile
 	jr nc, .yep
 	ld a, [PlayerState]
diff --git a/engine/tile_events.asm b/engine/tile_events.asm
index 8a6f2bc66..a6794e817 100755
--- a/engine/tile_events.asm
+++ b/engine/tile_events.asm
@@ -1,6 +1,6 @@
 CheckWarpCollision:: ; 1499a
 ; Is this tile a warp?
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	cp $60
 	jr z, .warp
 	cp $68
@@ -19,7 +19,7 @@ CheckWarpCollision:: ; 1499a
 CheckDirectionalWarp:: ; 149af
 ; If this is a directional warp, clear carry (press the designated button to warp).
 ; Else, set carry (immediate warp).
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	cp $70 ; Warp on down
 	jr z, .not_warp
 	cp $76 ; Warp on left
@@ -39,7 +39,7 @@ CheckDirectionalWarp:: ; 149af
 CheckWarpFacingDown: ; 149c6
 	ld de, 1
 	ld hl, .blocks
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	call IsInArray
 	ret
 ; 149d3
@@ -58,7 +58,7 @@ CheckWarpFacingDown: ; 149c6
 ; 149dd
 
 CheckGrassCollision:: ; 149dd
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	ld hl, .blocks
 	ld de, 1
 	call IsInArray
@@ -98,7 +98,7 @@ CheckCutCollision: ; 149f5
 ; 14a07
 
 Function14a07:: ; 14a07
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	ld de, $1f
 	cp $71 ; door
 	ret z
diff --git a/engine/warp_connection.asm b/engine/warp_connection.asm
index 7df4fc35b..6d7e00181 100755
--- a/engine/warp_connection.asm
+++ b/engine/warp_connection.asm
@@ -349,7 +349,7 @@ CheckMovingOffEdgeOfMap:: ; 104820 (41:4820)
 	ret
 
 .down
-	ld a, [PlayerNextMapY]
+	ld a, [PlayerStandingMapY]
 	sub 4
 	ld b, a
 	ld a, [MapHeight]
@@ -360,7 +360,7 @@ CheckMovingOffEdgeOfMap:: ; 104820 (41:4820)
 	ret
 
 .up
-	ld a, [PlayerNextMapY]
+	ld a, [PlayerStandingMapY]
 	sub 4
 	cp -1
 	jr z, .ok
@@ -368,7 +368,7 @@ CheckMovingOffEdgeOfMap:: ; 104820 (41:4820)
 	ret
 
 .left
-	ld a, [PlayerNextMapX]
+	ld a, [PlayerStandingMapX]
 	sub $4
 	cp -1
 	jr z, .ok
@@ -376,7 +376,7 @@ CheckMovingOffEdgeOfMap:: ; 104820 (41:4820)
 	ret
 
 .right
-	ld a, [PlayerNextMapX]
+	ld a, [PlayerStandingMapX]
 	sub 4
 	ld b, a
 	ld a, [MapWidth]
diff --git a/home.asm b/home.asm
index c000fb3d1..d549357da 100644
--- a/home.asm
+++ b/home.asm
@@ -1462,11 +1462,11 @@ FacingPlayerDistance:: ; 36ad
 	add hl, bc
 	ld e, [hl]
 
-	ld a, [PlayerNextMapX]
+	ld a, [PlayerStandingMapX]
 	cp d
 	jr z, .CheckY
 
-	ld a, [PlayerNextMapY]
+	ld a, [PlayerStandingMapY]
 	cp e
 	jr z, .CheckX
 
@@ -1474,7 +1474,7 @@ FacingPlayerDistance:: ; 36ad
 	ret
 
 .CheckY
-	ld a, [PlayerNextMapY]
+	ld a, [PlayerStandingMapY]
 	sub e
 	jr z, .NotFacing
 	jr nc, .Above
@@ -1492,7 +1492,7 @@ FacingPlayerDistance:: ; 36ad
 	jr .CheckFacing
 
 .CheckX
-	ld a, [PlayerNextMapX]
+	ld a, [PlayerStandingMapX]
 	sub d
 	jr z, .NotFacing
 	jr nc, .Left
diff --git a/home/map.asm b/home/map.asm
index 7b70c02b5..680fc8944 100644
--- a/home/map.asm
+++ b/home/map.asm
@@ -256,10 +256,10 @@ GetDestinationWarpNumber:: ; 2252
 ; 2266
 
 .GetDestinationWarpNumber ; 2266
-	ld a, [PlayerNextMapY]
+	ld a, [PlayerStandingMapY]
 	sub $4
 	ld e, a
-	ld a, [PlayerNextMapX]
+	ld a, [PlayerStandingMapX]
 	sub $4
 	ld d, a
 	ld a, [wCurrMapWarpCount]
@@ -1568,16 +1568,16 @@ GetMovementPermissions:: ; 2914
 	call .LeftRight
 	call .UpDown
 ; get coords of current tile
-	ld a, [PlayerNextMapX]
+	ld a, [PlayerStandingMapX]
 	ld d, a
-	ld a, [PlayerNextMapY]
+	ld a, [PlayerStandingMapY]
 	ld e, a
 	call GetCoordTile
-	ld [PlayerNextTile], a
+	ld [PlayerStandingTile], a
 	call .CheckHiNybble
 	ret nz
 
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	and 7
 	ld hl, .MovementPermissionsData
 	add l
@@ -1597,9 +1597,9 @@ GetMovementPermissions:: ; 2914
 ; 294d
 
 .UpDown
-	ld a, [PlayerNextMapX]
+	ld a, [PlayerStandingMapX]
 	ld d, a
-	ld a, [PlayerNextMapY]
+	ld a, [PlayerStandingMapY]
 	ld e, a
 
 	push de
@@ -1617,9 +1617,9 @@ GetMovementPermissions:: ; 2914
 ; 296c
 
 .LeftRight
-	ld a, [PlayerNextMapX]
+	ld a, [PlayerStandingMapX]
 	ld d, a
-	ld a, [PlayerNextMapY]
+	ld a, [PlayerStandingMapY]
 	ld e, a
 
 	push de
@@ -1744,10 +1744,10 @@ GetFacingTileCoord:: ; 2a07
 	ld h, [hl]
 	ld l, a
 
-	ld a, [PlayerNextMapX]
+	ld a, [PlayerStandingMapX]
 	add d
 	ld d, a
-	ld a, [PlayerNextMapY]
+	ld a, [PlayerStandingMapY]
 	add e
 	ld e, a
 	ld a, [hl]
@@ -1922,10 +1922,10 @@ CheckCurrentMapXYTriggers:: ; 2ad4
 	call CheckTriggers
 	ld b, a
 ; Load your current coordinates into de.  This will be used to check if your position is in the xy-trigger table for the current map.
-	ld a, [PlayerNextMapX]
+	ld a, [PlayerStandingMapX]
 	sub 4
 	ld d, a
-	ld a, [PlayerNextMapY]
+	ld a, [PlayerStandingMapY]
 	sub 4
 	ld e, a
 
diff --git a/home/map_objects.asm b/home/map_objects.asm
index be2c8553a..cf2d0aea4 100644
--- a/home/map_objects.asm
+++ b/home/map_objects.asm
@@ -79,15 +79,15 @@ DoesSpriteHaveFacings:: ; 1836
 
 
 
-Function184a:: ; 184a
-	ld a, [PlayerNextTile]
+GetPlayerStandingTile:: ; 184a
+	ld a, [PlayerStandingTile]
 	call GetTileCollision
 	ld b, a
 	ret
 ; 1852
 
 CheckOnWater:: ; 1852
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	call GetTileCollision
 	sub 1
 	ret z
@@ -125,17 +125,6 @@ GetTileCollision:: ; 185d
 
 
 CheckGrassTile:: ; 1875
-	; and %00110111
-	; cp $10
-	; ret c
-	; cp $30
-	; jr nc, .okay
-	; scf
-	; ret
-	; .okay
-	; xor a
-	; ret
-
 	ld d, a
 	and $f0
 	cp $10
@@ -222,7 +211,7 @@ CheckWaterfallTile:: ; 18bd
 ; 18c3
 
 CheckStandingOnEntrance:: ; 18c3
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	cp $71 ; door
 	ret z
 	cp $79
diff --git a/main.asm b/main.asm
index dcae40bcb..9c4d48f35 100644
--- a/main.asm
+++ b/main.asm
@@ -821,23 +821,23 @@ RefreshPlayerCoords: ; 80b8
 	ld a, [XCoord]
 	add 4
 	ld d, a
-	ld hl, PlayerNextMapX
+	ld hl, PlayerStandingMapX
 	sub [hl]
 	ld [hl], d
 	ld hl, MapObjects + MAPOBJECT_X_COORD
 	ld [hl], d
-	ld hl, PlayerMapX
+	ld hl, PlayerLastMapX
 	ld [hl], d
 	ld d, a
 	ld a, [YCoord]
 	add 4
 	ld e, a
-	ld hl, PlayerNextMapY
+	ld hl, PlayerStandingMapY
 	sub [hl]
 	ld [hl], e
 	ld hl, MapObjects + MAPOBJECT_Y_COORD
 	ld [hl], e
-	ld hl, PlayerMapY
+	ld hl, PlayerLastMapY
 	ld [hl], e
 	ld e, a
 	ld a, [wObjectFollow_Leader]
@@ -2808,7 +2808,7 @@ Script_UsedWaterfall: ; 0xcb20
 .CheckContinueWaterfall: ; cb38
 	xor a
 	ld [ScriptVar], a
-	ld a, [PlayerNextTile]
+	ld a, [PlayerStandingTile]
 	call CheckWaterfallTile
 	ret z
 	callba MobileFn_1060c1
@@ -3804,7 +3804,7 @@ BikeFunction: ; d0b3
 	jr .done
 
 .CantGetOffBike
-	ld hl, UnknownScript_0xd171
+	ld hl, Script_CantGetOffBike
 	jr .done
 
 .CannotUseBike
@@ -3835,8 +3835,8 @@ BikeFunction: ; d0b3
 	jr .nope
 
 .ok
-	call Function184a
-	and $f
+	call GetPlayerStandingTile
+	and $f ; can't use our bike in a wall or on water
 	jr nz, .nope
 	xor a
 	ret
@@ -3849,7 +3849,7 @@ Script_GetOnBike: ; 0xd13e
 	reloadmappart
 	special UpdateTimePals
 	writecode VAR_MOVEMENT, PLAYER_BIKE
-	writetext UnknownText_0xd17c
+	writetext GotOnTheBikeText
 	waitbutton
 	closetext
 	special ReplaceKrisSprite
@@ -3861,7 +3861,7 @@ Script_GetOnBike_Register: ; 0xd14e
 	special ReplaceKrisSprite
 	end
 
-Functiond156: ; unreferenced
+; XXX
 	nop
 	ret
 
@@ -3869,7 +3869,7 @@ Script_GetOffBike: ; 0xd158
 	reloadmappart
 	special UpdateTimePals
 	writecode VAR_MOVEMENT, PLAYER_NORMAL
-	writetext UnknownText_0xd181
+	writetext GotOffTheBikeText
 	waitbutton
 
 FinishGettingOffBike:
@@ -3882,23 +3882,23 @@ Script_GetOffBike_Register: ; 0xd16b
 	writecode VAR_MOVEMENT, PLAYER_NORMAL
 	jump FinishGettingOffBike
 
-UnknownScript_0xd171: ; 0xd171
-	writetext UnknownText_0xd177
+Script_CantGetOffBike: ; 0xd171
+	writetext .CantGetOffBikeText
 	waitbutton
 	closetext
 	end
 
-UnknownText_0xd177: ; 0xd177
+.CantGetOffBikeText: ; 0xd177
 	; You can't get off here!
 	text_jump UnknownText_0x1c099a
 	db "@"
 
-UnknownText_0xd17c: ; 0xd17c
+GotOnTheBikeText: ; 0xd17c
 	; got on the @ .
 	text_jump UnknownText_0x1c09b2
 	db "@"
 
-UnknownText_0xd181: ; 0xd181
+GotOffTheBikeText: ; 0xd181
 	; got off the @ .
 	text_jump UnknownText_0x1c09c7
 	db "@"
@@ -7265,47 +7265,7 @@ ScrollBGMapPalettes:: ; 4c03f
 INCLUDE "tilesets/palette_maps.asm"
 
 TileCollisionTable:: ; 4ce1f
-; 00 land
-; 01 water
-; 0f wall
-; 11 talkable water
-; 1f talkable wall
-
-	db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + WATRTILE
-	db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + WATRTILE
-	db NULL + LANDTILE, NULL + LANDTILE, TALK + WATRTILE, NULL + LANDTILE, NULL + LANDTILE, TALK + WATRTILE, NULL + LANDTILE, NULL + LANDTILE
-	db NULL + LANDTILE, NULL + LANDTILE, TALK + WATRTILE, NULL + LANDTILE, NULL + LANDTILE, TALK + WATRTILE, NULL + LANDTILE, NULL + LANDTILE
-	db NULL + WALLTILE, NULL + WALLTILE, TALK + WALLTILE, NULL + LANDTILE, TALK + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WATRTILE
-	db NULL + WALLTILE, NULL + WALLTILE, TALK + WALLTILE, NULL + LANDTILE, TALK + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WATRTILE
-	db NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE
-	db NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE
-
-	db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE
-	db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE
-	db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE
-	db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE
-	db NULL + LANDTILE, NULL + LANDTILE, NULL + WATRTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE
-	db NULL + LANDTILE, NULL + LANDTILE, NULL + WATRTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE
-	db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE
-	db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE
-
-	db NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE
-	db NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE
-	db NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE
-	db NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE
-	db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE
-	db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE
-	db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE
-	db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE
-
-	db NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE
-	db NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE
-	db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE
-	db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE
-	db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE
-	db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE
-	db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE
-	db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + WATRTILE
+INCLUDE "tilesets/collision.asm"
 
 EmptyAllSRAMBanks: ; 4cf1f
 	ld a, $0
diff --git a/tilesets/collision.asm b/tilesets/collision.asm
new file mode 100755
index 000000000..879d44e72
--- /dev/null
+++ b/tilesets/collision.asm
@@ -0,0 +1,264 @@
+
+; 00 land
+; 01 water
+; 0f wall
+; 11 talkable water
+; 1f talkable wall
+NONTALKABLE EQUS "db"
+TALKABLE EQUS "db TALK +"
+	NONTALKABLE LANDTILE ; 00
+	NONTALKABLE LANDTILE ; 01
+	NONTALKABLE LANDTILE ; 02
+	NONTALKABLE LANDTILE ; 03
+	NONTALKABLE LANDTILE ; 04
+	NONTALKABLE LANDTILE ; 05
+	NONTALKABLE LANDTILE ; 06
+	NONTALKABLE WATRTILE ; 07
+	NONTALKABLE LANDTILE ; 08
+	NONTALKABLE LANDTILE ; 09
+	NONTALKABLE LANDTILE ; 0a
+	NONTALKABLE LANDTILE ; 0b
+	NONTALKABLE LANDTILE ; 0c
+	NONTALKABLE LANDTILE ; 0d
+	NONTALKABLE LANDTILE ; 0e
+	NONTALKABLE WATRTILE ; 0f
+	NONTALKABLE LANDTILE ; 10
+	NONTALKABLE LANDTILE ; 11
+	   TALKABLE WATRTILE ; 12
+	NONTALKABLE LANDTILE ; 13
+	NONTALKABLE LANDTILE ; 14
+	   TALKABLE WATRTILE ; 15
+	NONTALKABLE LANDTILE ; 16
+	NONTALKABLE LANDTILE ; 17
+	NONTALKABLE LANDTILE ; 18
+	NONTALKABLE LANDTILE ; 19
+	   TALKABLE WATRTILE ; 1a
+	NONTALKABLE LANDTILE ; 1b
+	NONTALKABLE LANDTILE ; 1c
+	   TALKABLE WATRTILE ; 1d
+	NONTALKABLE LANDTILE ; 1e
+	NONTALKABLE LANDTILE ; 1f
+	NONTALKABLE WALLTILE ; 20
+	NONTALKABLE WALLTILE ; 21
+	   TALKABLE WALLTILE ; 22
+	NONTALKABLE LANDTILE ; 23
+	   TALKABLE WALLTILE ; 24
+	NONTALKABLE WALLTILE ; 25
+	NONTALKABLE WALLTILE ; 26
+	NONTALKABLE WATRTILE ; 27
+	NONTALKABLE WALLTILE ; 28
+	NONTALKABLE WALLTILE ; 29
+	   TALKABLE WALLTILE ; 2a
+	NONTALKABLE LANDTILE ; 2b
+	   TALKABLE WALLTILE ; 2c
+	NONTALKABLE WALLTILE ; 2d
+	NONTALKABLE WALLTILE ; 2e
+	NONTALKABLE WATRTILE ; 2f
+	NONTALKABLE WALLTILE ; 30
+	NONTALKABLE WALLTILE ; 31
+	NONTALKABLE WALLTILE ; 32
+	NONTALKABLE WALLTILE ; 33
+	NONTALKABLE WALLTILE ; 34
+	NONTALKABLE WALLTILE ; 35
+	NONTALKABLE WALLTILE ; 36
+	NONTALKABLE WALLTILE ; 37
+	NONTALKABLE WALLTILE ; 38
+	NONTALKABLE WALLTILE ; 39
+	NONTALKABLE WALLTILE ; 3a
+	NONTALKABLE WALLTILE ; 3b
+	NONTALKABLE WALLTILE ; 3c
+	NONTALKABLE WALLTILE ; 3d
+	NONTALKABLE WALLTILE ; 3e
+	NONTALKABLE WALLTILE ; 3f
+	NONTALKABLE LANDTILE ; 40
+	NONTALKABLE LANDTILE ; 41
+	NONTALKABLE LANDTILE ; 42
+	NONTALKABLE LANDTILE ; 43
+	NONTALKABLE LANDTILE ; 44
+	NONTALKABLE LANDTILE ; 45
+	NONTALKABLE LANDTILE ; 46
+	NONTALKABLE LANDTILE ; 47
+	NONTALKABLE LANDTILE ; 48
+	NONTALKABLE LANDTILE ; 49
+	NONTALKABLE LANDTILE ; 4a
+	NONTALKABLE LANDTILE ; 4b
+	NONTALKABLE LANDTILE ; 4c
+	NONTALKABLE LANDTILE ; 4d
+	NONTALKABLE LANDTILE ; 4e
+	NONTALKABLE LANDTILE ; 4f
+	NONTALKABLE LANDTILE ; 50
+	NONTALKABLE LANDTILE ; 51
+	NONTALKABLE LANDTILE ; 52
+	NONTALKABLE LANDTILE ; 53
+	NONTALKABLE LANDTILE ; 54
+	NONTALKABLE LANDTILE ; 55
+	NONTALKABLE LANDTILE ; 56
+	NONTALKABLE LANDTILE ; 57
+	NONTALKABLE LANDTILE ; 58
+	NONTALKABLE LANDTILE ; 59
+	NONTALKABLE LANDTILE ; 5a
+	NONTALKABLE LANDTILE ; 5b
+	NONTALKABLE LANDTILE ; 5c
+	NONTALKABLE LANDTILE ; 5d
+	NONTALKABLE LANDTILE ; 5e
+	NONTALKABLE LANDTILE ; 5f
+	NONTALKABLE LANDTILE ; 60
+	NONTALKABLE LANDTILE ; 61
+	NONTALKABLE WATRTILE ; 62
+	NONTALKABLE LANDTILE ; 63
+	NONTALKABLE LANDTILE ; 64
+	NONTALKABLE LANDTILE ; 65
+	NONTALKABLE LANDTILE ; 66
+	NONTALKABLE LANDTILE ; 67
+	NONTALKABLE LANDTILE ; 68
+	NONTALKABLE LANDTILE ; 69
+	NONTALKABLE WATRTILE ; 6a
+	NONTALKABLE LANDTILE ; 6b
+	NONTALKABLE LANDTILE ; 6c
+	NONTALKABLE LANDTILE ; 6d
+	NONTALKABLE LANDTILE ; 6e
+	NONTALKABLE LANDTILE ; 6f
+	NONTALKABLE LANDTILE ; 70
+	NONTALKABLE LANDTILE ; 71
+	NONTALKABLE LANDTILE ; 72
+	NONTALKABLE LANDTILE ; 73
+	NONTALKABLE LANDTILE ; 74
+	NONTALKABLE LANDTILE ; 75
+	NONTALKABLE LANDTILE ; 76
+	NONTALKABLE LANDTILE ; 77
+	NONTALKABLE LANDTILE ; 78
+	NONTALKABLE LANDTILE ; 79
+	NONTALKABLE LANDTILE ; 7a
+	NONTALKABLE LANDTILE ; 7b
+	NONTALKABLE LANDTILE ; 7c
+	NONTALKABLE LANDTILE ; 7d
+	NONTALKABLE LANDTILE ; 7e
+	NONTALKABLE LANDTILE ; 7f
+	NONTALKABLE WATRTILE ; 80
+	NONTALKABLE WATRTILE ; 81
+	NONTALKABLE WATRTILE ; 82
+	NONTALKABLE WATRTILE ; 83
+	NONTALKABLE WATRTILE ; 84
+	NONTALKABLE LANDTILE ; 85
+	NONTALKABLE LANDTILE ; 86
+	NONTALKABLE LANDTILE ; 87
+	NONTALKABLE WATRTILE ; 88
+	NONTALKABLE WATRTILE ; 89
+	NONTALKABLE WATRTILE ; 8a
+	NONTALKABLE WATRTILE ; 8b
+	NONTALKABLE WATRTILE ; 8c
+	NONTALKABLE LANDTILE ; 8d
+	NONTALKABLE LANDTILE ; 8e
+	NONTALKABLE LANDTILE ; 8f
+	NONTALKABLE WATRTILE ; 90
+	NONTALKABLE WATRTILE ; 91
+	NONTALKABLE WATRTILE ; 92
+	NONTALKABLE WATRTILE ; 93
+	NONTALKABLE WATRTILE ; 94
+	NONTALKABLE WATRTILE ; 95
+	NONTALKABLE WATRTILE ; 96
+	NONTALKABLE WATRTILE ; 97
+	NONTALKABLE WATRTILE ; 98
+	NONTALKABLE WATRTILE ; 99
+	NONTALKABLE WATRTILE ; 9a
+	NONTALKABLE WATRTILE ; 9b
+	NONTALKABLE WATRTILE ; 9c
+	NONTALKABLE WATRTILE ; 9d
+	NONTALKABLE WATRTILE ; 9e
+	NONTALKABLE WATRTILE ; 9f
+	NONTALKABLE LANDTILE ; a0
+	NONTALKABLE LANDTILE ; a1
+	NONTALKABLE LANDTILE ; a2
+	NONTALKABLE LANDTILE ; a3
+	NONTALKABLE LANDTILE ; a4
+	NONTALKABLE LANDTILE ; a5
+	NONTALKABLE LANDTILE ; a6
+	NONTALKABLE LANDTILE ; a7
+	NONTALKABLE LANDTILE ; a8
+	NONTALKABLE LANDTILE ; a9
+	NONTALKABLE LANDTILE ; aa
+	NONTALKABLE LANDTILE ; ab
+	NONTALKABLE LANDTILE ; ac
+	NONTALKABLE LANDTILE ; ad
+	NONTALKABLE LANDTILE ; ae
+	NONTALKABLE LANDTILE ; af
+	NONTALKABLE LANDTILE ; b0
+	NONTALKABLE LANDTILE ; b1
+	NONTALKABLE LANDTILE ; b2
+	NONTALKABLE LANDTILE ; b3
+	NONTALKABLE LANDTILE ; b4
+	NONTALKABLE LANDTILE ; b5
+	NONTALKABLE LANDTILE ; b6
+	NONTALKABLE LANDTILE ; b7
+	NONTALKABLE LANDTILE ; b8
+	NONTALKABLE LANDTILE ; b9
+	NONTALKABLE LANDTILE ; ba
+	NONTALKABLE LANDTILE ; bb
+	NONTALKABLE LANDTILE ; bc
+	NONTALKABLE LANDTILE ; bd
+	NONTALKABLE LANDTILE ; be
+	NONTALKABLE LANDTILE ; bf
+	NONTALKABLE WALLTILE ; c0
+	NONTALKABLE WALLTILE ; c1
+	NONTALKABLE WALLTILE ; c2
+	NONTALKABLE WALLTILE ; c3
+	NONTALKABLE WALLTILE ; c4
+	NONTALKABLE WALLTILE ; c5
+	NONTALKABLE WALLTILE ; c6
+	NONTALKABLE WALLTILE ; c7
+	NONTALKABLE WALLTILE ; c8
+	NONTALKABLE WALLTILE ; c9
+	NONTALKABLE WALLTILE ; ca
+	NONTALKABLE WALLTILE ; cb
+	NONTALKABLE WALLTILE ; cc
+	NONTALKABLE WALLTILE ; cd
+	NONTALKABLE WALLTILE ; ce
+	NONTALKABLE WALLTILE ; cf
+	NONTALKABLE LANDTILE ; d0
+	NONTALKABLE LANDTILE ; d1
+	NONTALKABLE LANDTILE ; d2
+	NONTALKABLE LANDTILE ; d3
+	NONTALKABLE LANDTILE ; d4
+	NONTALKABLE LANDTILE ; d5
+	NONTALKABLE LANDTILE ; d6
+	NONTALKABLE LANDTILE ; d7
+	NONTALKABLE LANDTILE ; d8
+	NONTALKABLE LANDTILE ; d9
+	NONTALKABLE LANDTILE ; da
+	NONTALKABLE LANDTILE ; db
+	NONTALKABLE LANDTILE ; dc
+	NONTALKABLE LANDTILE ; dd
+	NONTALKABLE LANDTILE ; de
+	NONTALKABLE LANDTILE ; df
+	NONTALKABLE LANDTILE ; e0
+	NONTALKABLE LANDTILE ; e1
+	NONTALKABLE LANDTILE ; e2
+	NONTALKABLE LANDTILE ; e3
+	NONTALKABLE LANDTILE ; e4
+	NONTALKABLE LANDTILE ; e5
+	NONTALKABLE LANDTILE ; e6
+	NONTALKABLE LANDTILE ; e7
+	NONTALKABLE LANDTILE ; e8
+	NONTALKABLE LANDTILE ; e9
+	NONTALKABLE LANDTILE ; ea
+	NONTALKABLE LANDTILE ; eb
+	NONTALKABLE LANDTILE ; ec
+	NONTALKABLE LANDTILE ; ed
+	NONTALKABLE LANDTILE ; ee
+	NONTALKABLE LANDTILE ; ef
+	NONTALKABLE LANDTILE ; f0
+	NONTALKABLE LANDTILE ; f1
+	NONTALKABLE LANDTILE ; f2
+	NONTALKABLE LANDTILE ; f3
+	NONTALKABLE LANDTILE ; f4
+	NONTALKABLE LANDTILE ; f5
+	NONTALKABLE LANDTILE ; f6
+	NONTALKABLE LANDTILE ; f7
+	NONTALKABLE LANDTILE ; f8
+	NONTALKABLE LANDTILE ; f9
+	NONTALKABLE LANDTILE ; fa
+	NONTALKABLE LANDTILE ; fb
+	NONTALKABLE LANDTILE ; fc
+	NONTALKABLE LANDTILE ; fd
+	NONTALKABLE LANDTILE ; fe
+	NONTALKABLE WATRTILE ; ff
diff --git a/wram.asm b/wram.asm
index fd07a0d5e..f9816f97b 100644
--- a/wram.asm
+++ b/wram.asm
@@ -2399,12 +2399,12 @@ object_struct: MACRO
 \1Action:: ds 1
 \1ObjectStepFrame:: ds 1
 \1Facing:: ds 1
-\1NextTile:: ds 1     ; collision
 \1StandingTile:: ds 1 ; collision
-\1NextMapX:: ds 1
-\1NextMapY:: ds 1
-\1MapX:: ds 1
-\1MapY:: ds 1
+\1LastTile:: ds 1     ; collision
+\1StandingMapX:: ds 1
+\1StandingMapY:: ds 1
+\1LastMapX:: ds 1
+\1LastMapY:: ds 1
 \1ObjectInitX:: ds 1
 \1ObjectInitY:: ds 1
 \1Radius:: ds 1

From 35f687b5365cb5e4b607e180646e6062d59a357a Mon Sep 17 00:00:00 2001
From: PikalaxALT <PikalaxALT@gmail.com>
Date: Mon, 11 Jan 2016 02:36:39 -0500
Subject: [PATCH 06/13] Fully label home/map_objects.asm

---
 engine/intro_menu.asm |  2 +-
 engine/map_setup.asm  |  2 +-
 home/map_objects.asm  | 36 +++++++-----------------------------
 main.asm              |  4 ++--
 4 files changed, 11 insertions(+), 33 deletions(-)

diff --git a/engine/intro_menu.asm b/engine/intro_menu.asm
index 46c573483..42a8943ed 100755
--- a/engine/intro_menu.asm
+++ b/engine/intro_menu.asm
@@ -318,7 +318,7 @@ InitializeNPCNames: ; 5ce9
 
 InitializeWorld: ; 5d23
 	call ShrinkPlayer
-	callba GetSpawnCoord
+	callba SpawnPlayer
 	callba _InitializeStartDay
 	ret
 ; 5d33
diff --git a/engine/map_setup.asm b/engine/map_setup.asm
index 50ab18335..8fa768c87 100644
--- a/engine/map_setup.asm
+++ b/engine/map_setup.asm
@@ -272,7 +272,7 @@ MapSetupCommands: ; 15440
 	dba GetCoordOfUpperLeftCorner ; 1f
 	dba RestoreFacingAfterWarp ; 20
 	dba SpawnInFacingDown ; 21
-	dba GetSpawnCoord ; 22
+	dba SpawnPlayer ; 22
 	dba RefreshPlayerCoords ; 23
 	dba DelayClearingOldSprites ; 24
 	dba DelayLoadingNewSprites ; 25
diff --git a/home/map_objects.asm b/home/map_objects.asm
index cf2d0aea4..f4a4d6d5b 100644
--- a/home/map_objects.asm
+++ b/home/map_objects.asm
@@ -1,6 +1,5 @@
 ; Functions handling map objects.
 
-
 GetSpritePalette:: ; 17ff
 	push hl
 	push de
@@ -16,7 +15,6 @@ GetSpritePalette:: ; 17ff
 	ret
 ; 180e
 
-
 GetSpriteVTile:: ; 180e
 	push hl
 	push bc
@@ -77,8 +75,6 @@ DoesSpriteHaveFacings:: ; 1836
 	ret
 ; 184a
 
-
-
 GetPlayerStandingTile:: ; 184a
 	ld a, [PlayerStandingTile]
 	call GetTileCollision
@@ -95,7 +91,6 @@ CheckOnWater:: ; 1852
 	ret
 ; 185d
 
-
 GetTileCollision:: ; 185d
 ; Get the collision type of tile a.
 
@@ -123,7 +118,6 @@ GetTileCollision:: ; 185d
 	ret
 ; 1875
 
-
 CheckGrassTile:: ; 1875
 	ld d, a
 	and $f0
@@ -222,7 +216,6 @@ CheckStandingOnEntrance:: ; 18c3
 	ret
 ; 18d2
 
-
 GetMapObject:: ; 18d2
 ; Return the location of map object a in bc.
 	ld hl, MapObjects
@@ -233,7 +226,6 @@ GetMapObject:: ; 18d2
 	ret
 ; 18de
 
-
 CheckObjectVisibility:: ; 18de
 ; Sets carry if the object is not visible on the screen.
 	ld [hMapObjectIndexBuffer], a
@@ -327,15 +319,13 @@ CheckObjectTime:: ; 18f5
 	ret
 ; 194d
 
-Function194d:: ; 194d
+; XXX
 	ld [hMapObjectIndexBuffer], a
 	call GetMapObject
 	call CopyObjectStruct
 	ret
 ; 1956
 
-
-
 _CopyObjectStruct:: ; 1956
 	ld [hMapObjectIndexBuffer], a
 	call UnmaskObject
@@ -345,7 +335,7 @@ _CopyObjectStruct:: ; 1956
 	ret
 ; 1967
 
-Function1967:: ; 1967
+ApplyDeletionToMapObject:: ; 1967
 	ld [hMapObjectIndexBuffer], a
 	call GetMapObject
 	ld hl, MAPOBJECT_OBJECT_STRUCT_ID
@@ -355,21 +345,19 @@ Function1967:: ; 1967
 	ret z ; already hidden
 	ld [hl], -1
 	push af
-	call Function1985
+	call .CheckStopFollow
 	pop af
 	call GetObjectStruct
 	callba DeleteMapObject
 	ret
-; 1985
 
-Function1985:: ; 1985
+.CheckStopFollow
 	ld hl, wObjectFollow_Leader
 	cp [hl]
 	jr z, .ok
 	ld hl, wObjectFollow_Follower
 	cp [hl]
 	ret nz
-
 .ok
 	callba StopFollow
 	ld a, -1
@@ -379,12 +367,12 @@ Function1985:: ; 1985
 ; 199f
 
 DeleteObjectStruct:: ; 199f
-	call Function1967
+	call ApplyDeletionToMapObject
 	call MaskObject
 	ret
 ; 19a6
 
-Function19a6:: ; 19a6
+CopyPlayerObjectTemplate:: ; 19a6
 	push hl
 	call GetMapObject
 	ld d, b
@@ -398,7 +386,7 @@ Function19a6:: ; 19a6
 	ret
 ; 19b8
 
-Function19b8:: ; 19b8
+; XXX
 	call GetMapObject
 	ld hl, MAPOBJECT_OBJECT_STRUCT_ID
 	add hl, bc
@@ -428,8 +416,6 @@ Function19b8:: ; 19b8
 	ret
 ; 19e9
 
-
-
 LoadMovementDataPointer:: ; 19e9
 ; Load the movement data pointer for person a.
 	ld [wMovementPerson], a
@@ -457,8 +443,6 @@ LoadMovementDataPointer:: ; 19e9
 	ret
 ; 1a13
 
-
-
 FindFirstEmptyObjectStruct:: ; 1a13
 ; Returns the index of the first empty object struct in A and its address in HL, then sets carry.
 ; If all object structs are occupied, A = 0 and Z is set.
@@ -489,8 +473,6 @@ FindFirstEmptyObjectStruct:: ; 1a13
 	ret
 ; 1a2f
 
-
-
 GetSpriteMovementFunction:: ; 1a2f
 	ld hl, OBJECT_MOVEMENTTYPE
 	add hl, bc
@@ -530,7 +512,6 @@ endr
 	ret
 ; 1a61
 
-
 CopySpriteMovementData:: ; 1a61
 	ld l, a
 	ld a, [hROMBank]
@@ -638,7 +619,6 @@ ResetVramState_Bit0:: ; 1acc
 	ret
 ; 1ad2
 
-
 UpdateSprites:: ; 1ad2
 	ld a, [VramState]
 	bit 0, a
@@ -649,7 +629,6 @@ UpdateSprites:: ; 1ad2
 	ret
 ; 1ae5
 
-
 GetObjectStruct:: ; 1ae5
 	ld bc, OBJECT_STRUCT_LENGTH
 	ld hl, ObjectStructs
@@ -682,7 +661,6 @@ SetSpriteDirection:: ; 1af8
 	ret
 ; 1b07
 
-
 GetSpriteDirection:: ; 1b07
 	ld hl, OBJECT_FACING
 	add hl, bc
diff --git a/main.asm b/main.asm
index 9c4d48f35..4839245aa 100644
--- a/main.asm
+++ b/main.asm
@@ -734,13 +734,13 @@ BlankScreen: ; 8000
 	call SetPalettes
 	ret
 
-GetSpawnCoord: ; 8029
+SpawnPlayer: ; 8029
 	ld a, -1
 	ld [wObjectFollow_Leader], a
 	ld [wObjectFollow_Follower], a
 	ld a, $0
 	ld hl, PlayerObjectTemplate
-	call Function19a6
+	call CopyPlayerObjectTemplate
 	ld b, $0
 	call PlayerSpawn_ConvertCoords
 	ld a, $0

From 2ed6c357af335a1df33932383c00375b799300b2 Mon Sep 17 00:00:00 2001
From: PikalaxALT <PikalaxALT@gmail.com>
Date: Tue, 12 Jan 2016 12:46:18 -0500
Subject: [PATCH 07/13] More WRAM tidying

---
 battle/ai/items.asm         |   2 +-
 battle/ai/scoring.asm       |   8 +-
 battle/ai/switch.asm        |  36 +-
 battle/bg_effects.asm       |   4 +-
 battle/core.asm             | 150 +++----
 battle/effect_commands.asm  |  10 +-
 battle/misc.asm             |   4 +-
 constants/map_constants.asm |  61 +--
 engine/breeding/egg.asm     |   4 +-
 engine/debug.asm            |   8 +-
 engine/engine_flags.asm     |   2 +-
 engine/events.asm           |   4 +-
 engine/events_3.asm         |   2 +-
 engine/evolve.asm           |  19 +-
 engine/intro_menu.asm       |   8 +-
 engine/npctrade.asm         |  25 +-
 engine/phone.asm            |  76 ++--
 engine/pokedex.asm          |  60 +--
 engine/pokegear.asm         |  32 +-
 engine/predef.asm           |   6 +-
 engine/scripting.asm        |   4 +-
 engine/trade/animation.asm  |   4 +-
 engine/trainer_card.asm     |   4 +-
 event/halloffame.asm        |  56 ++-
 event/mom_phone.asm         |   2 +-
 event/photo.asm             |   8 +-
 gfx/pics/animation.asm      |   8 +-
 home.asm                    |   4 +-
 home/audio.asm              |   2 +-
 home/map.asm                |  38 +-
 home/mobile.asm             |   4 +-
 hram.asm                    |   2 +-
 items/item_effects.asm      |   2 +-
 main.asm                    |  22 +-
 misc/mobile_22.asm          |   4 +-
 misc/mobile_40.asm          | 789 ++++++++++++++++++------------------
 misc/mobile_42.asm          |   8 +-
 misc/mobile_45.asm          | 573 +++++++++++++-------------
 misc/mobile_46.asm          |  32 +-
 misc/mobile_5c.asm          |  40 +-
 misc/mobile_5f.asm          | 296 +++++++-------
 wram.asm                    | 251 +++++-------
 42 files changed, 1309 insertions(+), 1365 deletions(-)

diff --git a/battle/ai/items.asm b/battle/ai/items.asm
index 2fb479590..f5d22d786 100644
--- a/battle/ai/items.asm
+++ b/battle/ai/items.asm
@@ -549,7 +549,7 @@ AIUpdateHUD: ; 38387
 	callba UpdateEnemyHUD
 	ld a, $1
 	ld [hBGMapMode], a
-	ld hl, wc6e6
+	ld hl, wEnemyItemState
 	dec [hl]
 	scf
 	ret
diff --git a/battle/ai/scoring.asm b/battle/ai/scoring.asm
index 5445671ac..e9df9c62a 100644
--- a/battle/ai/scoring.asm
+++ b/battle/ai/scoring.asm
@@ -982,7 +982,7 @@ AI_Smart_Whirlwind: ; 38a2a
 
 	push hl
 	callab CheckPlayerMoveTypeMatchups
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	cp 10 ; neutral
 	pop hl
 	ret c
@@ -1909,7 +1909,7 @@ AI_Smart_MeanLook: ; 38dfb
 ; Otherwise, discourage this move unless the player only has not very effective moves against the enemy.	
 	push hl
 	callab CheckPlayerMoveTypeMatchups
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	cp $b ; not very effective
 	pop hl
 	ret nc
@@ -2170,7 +2170,7 @@ AI_Smart_PerishSong: ; 38f4a
 
 	push hl
 	callab CheckPlayerMoveTypeMatchups
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	cp 10 ; 1.0
 	pop hl
 	ret c
@@ -2432,7 +2432,7 @@ AI_Smart_BatonPass: ; 39062
 
 	push hl
 	callab CheckPlayerMoveTypeMatchups
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	cp 10 ; neutral
 	pop hl
 	ret c
diff --git a/battle/ai/switch.asm b/battle/ai/switch.asm
index 62a6bcd83..8209d8f2a 100755
--- a/battle/ai/switch.asm
+++ b/battle/ai/switch.asm
@@ -6,7 +6,7 @@ CheckPlayerMoveTypeMatchups: ; 3484e
 	push de
 	push bc
 	ld a, 10
-	ld [wc716], a
+	ld [wEnemyAISwitchScore], a
 	ld hl, PlayerUsedMoves
 	ld a, [hl]
 	and a
@@ -167,17 +167,17 @@ endr
 
 
 .DecreaseScore: ; 34931
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	dec a
-	ld [wc716], a
+	ld [wEnemyAISwitchScore], a
 	ret
 ; 34939
 
 
 .IncreaseScore: ; 34939
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	inc a
-	ld [wc716], a
+	ld [wEnemyAISwitchScore], a
 	ret
 ; 34941
 
@@ -206,7 +206,7 @@ CheckAbleToSwitch: ; 34941
 	cp 2
 	jr nz, .not_2
 
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	add $30
 	ld [wEnemySwitchMonParam], a
 	ret
@@ -230,7 +230,7 @@ CheckAbleToSwitch: ; 34941
 .no_perish
 
 	call CheckPlayerMoveTypeMatchups
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	cp 11
 	ret nc
 
@@ -239,13 +239,13 @@ CheckAbleToSwitch: ; 34941
 	jr z, .no_last_counter_move
 
 	call Function34a2a
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	and a
 	jr z, .no_last_counter_move
 
 	ld c, a
 	call Function34aa7
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	cp $ff
 	ret z
 
@@ -255,7 +255,7 @@ CheckAbleToSwitch: ; 34941
 	jr z, .not_2_again
 
 	call CheckPlayerMoveTypeMatchups
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	cp 10
 	ret nc
 
@@ -267,7 +267,7 @@ CheckAbleToSwitch: ; 34941
 .not_2_again
 	ld c, $10
 	call CheckPlayerMoveTypeMatchups
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	cp 10
 	jr nc, .okay
 	ld c, $20
@@ -280,7 +280,7 @@ CheckAbleToSwitch: ; 34941
 
 .no_last_counter_move
 	call CheckPlayerMoveTypeMatchups
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	cp 10
 	ret nc
 
@@ -293,7 +293,7 @@ CheckAbleToSwitch: ; 34941
 	cp $2
 	ret nz
 
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	add $10
 	ld [wEnemySwitchMonParam], a
 	ret
@@ -359,7 +359,7 @@ Function34a2a: ; 34a2a
 	ld c, 1 << (PARTY_LENGTH - 1)
 	ld d, 0
 	xor a
-	ld [wc716], a
+	ld [wEnemyAISwitchScore], a
 
 .asm_34a39
 	ld a, [CurOTMon]
@@ -395,9 +395,9 @@ Function34a2a: ; 34a2a
 	and a
 	jr nz, .asm_34a77
 
-	ld a, [wc716]
+	ld a, [wEnemyAISwitchScore]
 	or c
-	ld [wc716], a
+	ld [wEnemyAISwitchScore], a
 .asm_34a77
 	pop hl
 	dec b
@@ -451,7 +451,7 @@ Function34a85: ; 34a85
 Function34aa7: ; 34aa7
 
 	ld a, $ff
-	ld [wc716], a
+	ld [wEnemyAISwitchScore], a
 	ld hl, OTPartyMon1Moves
 	ld b, 1 << (PARTY_LENGTH - 1)
 	ld d, 0
@@ -540,7 +540,7 @@ Function34aa7: ; 34aa7
 	jr nc, .loop2
 
 	ld a, c
-	ld [wc716], a
+	ld [wEnemyAISwitchScore], a
 	pop bc
 	ret
 ; 34b20
diff --git a/battle/bg_effects.asm b/battle/bg_effects.asm
index 188a3e43d..b03e3aea5 100644
--- a/battle/bg_effects.asm
+++ b/battle/bg_effects.asm
@@ -748,7 +748,7 @@ endr
 	jr z, .clear
 	cp -3
 	jr z, .skip
-	call .FillBox
+	call .PlaceGraphic
 .skip
 	call BattleBGEffects_IncrementJumptable
 	ld a, $1
@@ -798,7 +798,7 @@ endr
 	pop bc
 	ret
 
-.FillBox
+.PlaceGraphic
 ; get dims
 	push bc
 	push hl
diff --git a/battle/core.asm b/battle/core.asm
index 5355df23a..f8f6340a8 100644
--- a/battle/core.asm
+++ b/battle/core.asm
@@ -3,7 +3,7 @@ BattleCore:
 DoBattle: ; 3c000
 	xor a
 	ld [wBattleParticipantsNotFainted], a
-	ld [wc6fc], a
+	ld [wBattleParticipantsIncludingFainted], a
 	ld [wPlayerAction], a
 	ld [BattleEnded], a
 	inc a
@@ -2110,8 +2110,8 @@ HandleEnemyMonFaint: ; 3cd55
 	or [hl]
 	call z, FaintYourPokemon
 	xor a
-	ld [wc6f7], a
-	call Function3ce01
+	ld [wWhichMonFaintedFirst], a
+	call UpdateBattleStateAndExperienceAfterEnemyFaint
 	call CheckPlayerPartyForFitPkmn
 	ld a, d
 	and a
@@ -2202,7 +2202,7 @@ DoubleSwitch: ; 3cdca
 	ret
 ; 3ce01
 
-Function3ce01: ; 3ce01
+UpdateBattleStateAndExperienceAfterEnemyFaint: ; 3ce01
 	call UpdateBattleMonInParty
 	ld a, [wBattleMode]
 	dec a
@@ -2231,14 +2231,14 @@ Function3ce01: ; 3ce01
 .wild2
 	call StopDangerSound
 	ld a, $1
-	ld [wc6fd], a
+	ld [wDanger], a
 
 .trainer
 	ld hl, BattleMonHP
 	ld a, [hli]
 	or [hl]
 	jr nz, .player_mon_did_not_faint
-	ld a, [wc6f7]
+	ld a, [wWhichMonFaintedFirst]
 	and a
 	jr nz, .player_mon_did_not_faint
 	call PlayerMonFaintHappinessMod
@@ -2256,10 +2256,10 @@ Function3ce01: ; 3ce01
 	ld a, [wBattleResult]
 	and $c0
 	ld [wBattleResult], a
-	call DoOthersShareExperience
+	call IsAnyMonHoldingExpShare
 	jr z, .skip_exp
 	ld hl, EnemyMonBaseStats
-	ld b, $7
+	ld b, EnemyMonEnd - EnemyMonBaseStats
 .loop
 	srl [hl]
 	inc hl
@@ -2268,32 +2268,32 @@ Function3ce01: ; 3ce01
 
 .skip_exp
 	ld hl, EnemyMonBaseStats
-	ld de, wc720
+	ld de, wBackupEnemyMonBaseStats
 	ld bc, EnemyMonEnd - EnemyMonBaseStats
 	call CopyBytes
 	xor a
-	ld [wc71f], a
+	ld [wGivingExperienceToExpShareHolders], a
 	call GiveExperiencePoints
-	call DoOthersShareExperience
+	call IsAnyMonHoldingExpShare
 	ret z
 
 	ld a, [wBattleParticipantsNotFainted]
 	push af
 	ld a, d
 	ld [wBattleParticipantsNotFainted], a
-	ld hl, wc720
+	ld hl, wBackupEnemyMonBaseStats
 	ld de, EnemyMonBaseStats
 	ld bc, EnemyMonEnd - EnemyMonBaseStats
 	call CopyBytes
 	ld a, $1
-	ld [wc71f], a
+	ld [wGivingExperienceToExpShareHolders], a
 	call GiveExperiencePoints
 	pop af
 	ld [wBattleParticipantsNotFainted], a
 	ret
 ; 3ceaa
 
-DoOthersShareExperience: ; 3ceaa
+IsAnyMonHoldingExpShare: ; 3ceaa
 	ld a, [PartyCount]
 	ld b, a
 	ld hl, PartyMon1
@@ -2465,7 +2465,7 @@ WinTrainerBattle: ; 3cfa4
 ; Player won the battle
 	call StopDangerSound
 	ld a, $1
-	ld [wc6fd], a
+	ld [wDanger], a
 	ld [BattleEnded], a
 	ld a, [wLinkMode]
 	and a
@@ -2682,7 +2682,7 @@ PlayVictoryMusic: ; 3d0ea
 	dec a
 	jr nz, .trainer_victory
 	push de
-	call DoOthersShareExperience
+	call IsAnyMonHoldingExpShare
 	pop de
 	jr nz, .play_music
 	ld hl, wPayDayMoney
@@ -2771,7 +2771,7 @@ HandlePlayerMonFaint: ; 3d14e
 	or [hl]
 	call z, FaintEnemyPokemon
 	ld a, $1
-	ld [wc6f7], a
+	ld [wWhichMonFaintedFirst], a
 	call PlayerMonFaintHappinessMod
 	call CheckPlayerPartyForFitPkmn
 	ld a, d
@@ -2781,7 +2781,7 @@ HandlePlayerMonFaint: ; 3d14e
 	ld a, [hli]
 	or [hl]
 	jr nz, .notfainted
-	call Function3ce01
+	call UpdateBattleStateAndExperienceAfterEnemyFaint
 	ld a, [wBattleMode]
 	dec a
 	jr nz, .trainer
@@ -2847,7 +2847,7 @@ PlayerMonFaintHappinessMod: ; 3d1aa
 	and %11000000
 	add $1
 	ld [wBattleResult], a
-	ld a, [wc6f7]
+	ld a, [wWhichMonFaintedFirst]
 	and a
 	ret z
 	ret ; ??????????
@@ -3338,7 +3338,7 @@ EnemySwitch: ; 3d4e1
 	; If we're here, then we're switching too
 	xor a
 	ld [wBattleParticipantsNotFainted], a
-	ld [wc6fc], a
+	ld [wBattleParticipantsIncludingFainted], a
 	ld [wPlayerAction], a
 	inc a
 	ld [wEnemyIsSwitching], a
@@ -3403,7 +3403,7 @@ ResetEnemyBattleVars: ; 3d557
 	ld [LastEnemyMove], a
 	ld [CurEnemyMove], a
 	dec a
-	ld [wc6e6], a
+	ld [wEnemyItemState], a
 	xor a
 	ld [wPlayerWrapCount], a
 	hlcoord 18, 0
@@ -3416,7 +3416,7 @@ ResetEnemyBattleVars: ; 3d557
 ResetBattleParticipants: ; 3d57a
 	xor a
 	ld [wBattleParticipantsNotFainted], a
-	ld [wc6fc], a
+	ld [wBattleParticipantsIncludingFainted], a
 AddBattleParticipant: ; 3d581
 	ld a, [CurBattleMon]
 	ld c, a
@@ -3425,7 +3425,7 @@ AddBattleParticipant: ; 3d581
 	push bc
 	predef FlagPredef
 	pop bc
-	ld hl, wc6fc
+	ld hl, wBattleParticipantsIncludingFainted
 	predef_jump FlagPredef
 ; 3d599
 
@@ -4250,7 +4250,7 @@ SendOutPlayerMon: ; 3db5f
 	ld [hBGMapMode], a
 	call GetMonBackpic
 	xor a
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	ld [wd0d2], a
 	ld [CurMoveNum], a
 	ld [TypeModifier], a
@@ -4418,7 +4418,7 @@ PursuitSwitch: ; 3dc5b
 	ld [CryTracks], a
 	ld a, [BattleMonSpecies]
 	call PlayStereoCry
-	ld a, [wc71a]
+	ld a, [LastPlayerMon]
 	ld c, a
 	ld hl, wBattleParticipantsNotFainted
 	ld b, RESET_FLAG
@@ -4887,7 +4887,7 @@ CheckDanger: ; 3df9e
 	ld a, [hli]
 	or [hl]
 	jr z, .no_danger
-	ld a, [wc6fd]
+	ld a, [wDanger]
 	and a
 	jr nz, .done
 	ld a, [PlayerHPPal]
@@ -5771,7 +5771,7 @@ MoveSelectionScreen: ; 3e4bc
 	dec a
 	cp c
 	jr z, .move_disabled
-	ld a, [wc6e1]
+	ld a, [wUnusedPlayerLockedMove]
 	and a
 	jr nz, .skip2
 	ld a, [wMenuCursorY]
@@ -7383,7 +7383,7 @@ GiveExperiencePoints: ; 3ee3b
 	bit 0, a
 	ret nz
 
-	call Function3f0d4
+	call .EvenlyDivideExpAmongParticipants
 	xor a
 	ld [CurPartyMon], a
 	ld bc, PartyMon1Species
@@ -7407,6 +7407,7 @@ GiveExperiencePoints: ; 3ee3b
 	pop bc
 	jp z, .skip_stats
 
+; give stat exp
 	ld hl, MON_STAT_EXP + 1
 	add hl, bc
 	ld d, h
@@ -7472,6 +7473,7 @@ GiveExperiencePoints: ; 3ee3b
 	ld [hDivisor], a
 	ld b, 4
 	call Divide
+; Boost Experience for traded Pokemon
 	pop bc
 	ld hl, MON_ID
 	add hl, bc
@@ -7489,10 +7491,12 @@ GiveExperiencePoints: ; 3ee3b
 	ld a, $1
 
 .no_boost
+; Boost experience for a Trainer Battle
 	ld [StringBuffer2 + 2], a
 	ld a, [wBattleMode]
 	dec a
 	call nz, BoostExp
+; Boost experience for Lucky Egg
 	push bc
 	ld a, MON_ITEM
 	call GetPartyParamLocation
@@ -7513,7 +7517,7 @@ GiveExperiencePoints: ; 3ee3b
 	ld a, [StringBuffer2]
 	ld [hQuotient + 1], a
 	pop bc
-	call Function3f136
+	call AnimateExpBar
 	push bc
 	call LoadTileMapToTempTileMap
 	pop bc
@@ -7748,26 +7752,26 @@ GiveExperiencePoints: ; 3ee3b
 	jp ResetBattleParticipants
 ; 3f0d4
 
-Function3f0d4: ; 3f0d4
+.EvenlyDivideExpAmongParticipants
 ; count number of battle participants
 	ld a, [wBattleParticipantsNotFainted]
 	ld b, a
 	ld c, PARTY_LENGTH
 	ld d, 0
-.loop
+.count_loop
 	xor a
 	srl b
 	adc d
 	ld d, a
 	dec c
-	jr nz, .loop
+	jr nz, .count_loop
 	cp 2
 	ret c
 
 	ld [wd265], a
 	ld hl, EnemyMonBaseStats
 	ld c, EnemyMonEnd - EnemyMonBaseStats
-.loop2
+.count_loop2
 	xor a
 	ld [hDividend + 0], a
 	ld a, [hl]
@@ -7779,7 +7783,7 @@ Function3f0d4: ; 3f0d4
 	ld a, [hQuotient + 2]
 	ld [hli], a
 	dec c
-	jr nz, .loop2
+	jr nz, .count_loop2
 	ret
 ; 3f106
 
@@ -7827,7 +7831,7 @@ TextJump_StringBuffer2ExpPoints: ; 3f131
 ; 3f136
 
 
-Function3f136: ; 3f136
+AnimateExpBar: ; 3f136
 	push bc
 
 	ld hl, CurPartyMon
@@ -7864,15 +7868,15 @@ Function3f136: ; 3f136
 	ld a, [wd003]
 	adc [hl]
 	ld [hld], a
-	jr nc, .asm_3f186
+	jr nc, .NoOverflow
 	inc [hl]
-	jr nz, .asm_3f186
+	jr nz, .NoOverflow
 	ld a, $ff
 	ld [hli], a
 	ld [hli], a
 	ld [hl], a
 
-.asm_3f186
+.NoOverflow
 	ld d, MAX_LEVEL
 	callab CalcExpAtLevel
 	ld a, [hProduct + 1]
@@ -7888,7 +7892,7 @@ Function3f136: ; 3f136
 	sbc c
 	ld a, [hl]
 	sbc b
-	jr c, .asm_3f1a8
+	jr c, .AlreadyAtMaxExp
 	ld a, b
 	ld [hli], a
 	ld a, c
@@ -7896,37 +7900,37 @@ Function3f136: ; 3f136
 	ld a, d
 	ld [hld], a
 
-.asm_3f1a8
+.AlreadyAtMaxExp
 	callab CalcLevel
 	ld a, d
 	pop bc
 	pop de
 	ld d, a
 	cp e
-	jr nc, .asm_3f1b7
+	jr nc, .LoopLevels
 	ld a, e
 	ld d, a
 
-.asm_3f1b7
+.LoopLevels
 	ld a, e
 	cp MAX_LEVEL
-	jr nc, .asm_3f1ff
+	jr nc, .FinishExpBar
 	cp d
-	jr z, .asm_3f1ff
+	jr z, .FinishExpBar
 	inc a
 	ld [TempMonLevel], a
 	ld [CurPartyLevel], a
 	ld [BattleMonLevel], a
 	push de
-	call Function3f21b
+	call .PlayExpBarSound
 	ld c, $40
-	call Function3f22c
+	call .LoopBarAnimation
 	call PrintPlayerHUD
 	ld hl, BattleMonNick
 	ld de, StringBuffer1
 	ld bc, PKMN_NAME_LENGTH
 	call CopyBytes
-	call Function3dfe
+	call TerminateExpBarSound
 	ld de, SFX_HIT_END_OF_EXP_BAR
 	call PlaySFX
 	callba AnimateEndOfExpBar
@@ -7936,9 +7940,9 @@ Function3f136: ; 3f136
 	pop de
 	inc e
 	ld b, $0
-	jr .asm_3f1b7
+	jr .LoopLevels
 
-.asm_3f1ff
+.FinishExpBar
 	push bc
 	ld b, d
 	ld de, TempMonExp + 2
@@ -7946,9 +7950,9 @@ Function3f136: ; 3f136
 	ld a, b
 	pop bc
 	ld c, a
-	call Function3f21b
-	call Function3f22c
-	call Function3dfe
+	call .PlayExpBarSound
+	call .LoopBarAnimation
+	call TerminateExpBarSound
 	pop af
 	ld [hProduct + 2], a
 	pop af
@@ -7957,9 +7961,8 @@ Function3f136: ; 3f136
 .finish
 	pop bc
 	ret
-; 3f21b
 
-Function3f21b: ; 3f21b
+.PlayExpBarSound
 	push bc
 	call WaitSFX
 	ld de, SFX_EXP_BAR
@@ -7968,12 +7971,11 @@ Function3f21b: ; 3f21b
 	call DelayFrames
 	pop bc
 	ret
-; 3f22c
 
-Function3f22c: ; 3f22c
-	ld d, $3
+.LoopBarAnimation
+	ld d, 3
 	dec b
-.asm_3f22f
+.anim_loop
 	inc b
 	push bc
 	push de
@@ -7989,7 +7991,7 @@ Function3f22c: ; 3f22c
 	pop bc
 	ld a, c
 	cp b
-	jr z, .asm_3f268
+	jr z, .end_animation
 	inc b
 	push bc
 	push de
@@ -8003,16 +8005,14 @@ Function3f22c: ; 3f22c
 	xor a
 	ld [hBGMapMode], a
 	dec d
-	jr nz, .asm_3f263
-	ld d, $1
-
-.asm_3f263
+	jr nz, .min_number_of_frames
+	ld d, 1
+.min_number_of_frames
 	pop bc
 	ld a, c
 	cp b
-	jr nz, .asm_3f22f
-
-.asm_3f268
+	jr nz, .anim_loop
+.end_animation
 	ld a, $1
 	ld [hBGMapMode], a
 	ret
@@ -8575,12 +8575,12 @@ InitEnemyTrainer: ; 3f594
 	ld de, VTiles2
 	callab GetTrainerPic
 	xor a
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	dec a
-	ld [wc6e6], a
+	ld [wEnemyItemState], a
 	hlcoord 12, 0
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 	ld a, -1
 	ld [CurOTMon], a
 	ld a, TRAINER_BATTLE
@@ -8640,10 +8640,10 @@ InitEnemyWildmon: ; 3f607
 	predef FrontpicPredef
 	xor a
 	ld [TrainerClass], a
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	hlcoord 12, 0
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 	ret
 ; 3f662
 
@@ -9402,10 +9402,10 @@ InitBattleDisplay: ; 3fb6c
 	ld a, $1
 	ld [hBGMapMode], a
 	ld a, $31
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	hlcoord 2, 6
 	lb bc, 6, 6
-	predef FillBox
+	predef PlaceGraphic
 	xor a
 	ld [hWY], a
 	ld [rWY], a
@@ -9499,10 +9499,10 @@ CopyBackpic: ; 3fc30
 	ld [rSVBK], a
 	call Function3fc5b
 	ld a, $31
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	hlcoord 2, 6
 	lb bc, 6, 6
-	predef FillBox
+	predef PlaceGraphic
 	ret
 ; 3fc5b
 
diff --git a/battle/effect_commands.asm b/battle/effect_commands.asm
index b2712937f..856a1da7f 100644
--- a/battle/effect_commands.asm
+++ b/battle/effect_commands.asm
@@ -3155,7 +3155,7 @@ BattleCommand_BeatUp: ; 35461
 	xor a
 	ld [PlayerRolloutCount], a
 	ld [wd002], a
-	ld [wc72d], a
+	ld [wBeatUpHitAtLeastOnce], a
 	jr .got_mon
 
 .next_mon
@@ -3188,7 +3188,7 @@ BattleCommand_BeatUp: ; 35461
 	jp nz, .beatup_fail
 
 	ld a, $1
-	ld [wc72d], a
+	ld [wBeatUpHitAtLeastOnce], a
 	ld hl, BeatUpAttackText
 	call StdBattleTextBox
 	ld a, [EnemyMonSpecies]
@@ -3223,7 +3223,7 @@ BattleCommand_BeatUp: ; 35461
 	xor a
 	ld [EnemyRolloutCount], a
 	ld [wd002], a
-	ld [wc72d], a
+	ld [wBeatUpHitAtLeastOnce], a
 	jr .enemy_continue
 
 .not_first_enemy_beatup
@@ -3283,7 +3283,7 @@ BattleCommand_BeatUp: ; 35461
 	jr nz, .beatup_fail
 
 	ld a, $1
-	ld [wc72d], a
+	ld [wBeatUpHitAtLeastOnce], a
 	jr .finish_beatup
 
 .wild
@@ -3332,7 +3332,7 @@ BattleCommand_BeatUp: ; 35461
 
 
 BattleCommanda8: ; 355b5
-	ld a, [wc72d]
+	ld a, [wBeatUpHitAtLeastOnce]
 	and a
 	ret nz
 
diff --git a/battle/misc.asm b/battle/misc.asm
index d47573df9..beb9ce333 100644
--- a/battle/misc.asm
+++ b/battle/misc.asm
@@ -32,8 +32,8 @@ AppearUser: ; fbd77 (3e:7d77)
 	call GetPlayerBackpicCoords
 	ld a, $31
 .okay
-	ld [hFillBox], a
-	predef FillBox
+	ld [hGraphicStartTile], a
+	predef PlaceGraphic
 FinishAppearDisappearUser: ; fbd91 (3e:7d91)
 	ld a, $1
 	ld [hBGMapMode], a
diff --git a/constants/map_constants.asm b/constants/map_constants.asm
index ede44c546..bedcf29dd 100644
--- a/constants/map_constants.asm
+++ b/constants/map_constants.asm
@@ -668,36 +668,37 @@ EMOTE_OBJECT EQU 7
 
 ; fruit trees
 const_value SET 1
-	const FRUITTREE_ROUTE_29
-	const FRUITTREE_ROUTE_30_1
-	const FRUITTREE_ROUTE_38
-	const FRUITTREE_ROUTE_46_1
-	const FRUITTREE_ROUTE_30_2
-	const FRUITTREE_ROUTE_33
-	const FRUITTREE_ROUTE_31
-	const FRUITTREE_ROUTE_43
-	const FRUITTREE_VIOLET_CITY
-	const FRUITTREE_ROUTE_46_2
-	const FRUITTREE_ROUTE_35
-	const FRUITTREE_ROUTE_45
-	const FRUITTREE_ROUTE_36
-	const FRUITTREE_ROUTE_26
-	const FRUITTREE_ROUTE_39
-	const FRUITTREE_ROUTE_44
-	const FRUITTREE_ROUTE_37_1
-	const FRUITTREE_ROUTE_37_2
-	const FRUITTREE_ROUTE_37_3
-	const FRUITTREE_AZALEA_TOWN
-	const FRUITTREE_ROUTE_42_1
-	const FRUITTREE_ROUTE_42_2
-	const FRUITTREE_ROUTE_42_3
-	const FRUITTREE_ROUTE_11
-	const FRUITTREE_ROUTE_2
-	const FRUITTREE_ROUTE_1
-	const FRUITTREE_ROUTE_8
-	const FRUITTREE_PEWTER_CITY_1
-	const FRUITTREE_PEWTER_CITY_2
-	const FRUITTREE_FUCHSIA_CITY
+	const FRUITTREE_ROUTE_29      ; 01
+	const FRUITTREE_ROUTE_30_1    ; 02
+	const FRUITTREE_ROUTE_38      ; 03
+	const FRUITTREE_ROUTE_46_1    ; 04
+	const FRUITTREE_ROUTE_30_2    ; 05
+	const FRUITTREE_ROUTE_33      ; 06
+	const FRUITTREE_ROUTE_31      ; 07
+	const FRUITTREE_ROUTE_43      ; 08
+	const FRUITTREE_VIOLET_CITY   ; 09
+	const FRUITTREE_ROUTE_46_2    ; 0a
+	const FRUITTREE_ROUTE_35      ; 0b
+	const FRUITTREE_ROUTE_45      ; 0c
+	const FRUITTREE_ROUTE_36      ; 0d
+	const FRUITTREE_ROUTE_26      ; 0e
+	const FRUITTREE_ROUTE_39      ; 0f
+	const FRUITTREE_ROUTE_44      ; 10
+	const FRUITTREE_ROUTE_37_1    ; 11
+	const FRUITTREE_ROUTE_37_2    ; 12
+	const FRUITTREE_ROUTE_37_3    ; 13
+	const FRUITTREE_AZALEA_TOWN   ; 14
+	const FRUITTREE_ROUTE_42_1    ; 15
+	const FRUITTREE_ROUTE_42_2    ; 16
+	const FRUITTREE_ROUTE_42_3    ; 17
+	const FRUITTREE_ROUTE_11      ; 18
+	const FRUITTREE_ROUTE_2       ; 19
+	const FRUITTREE_ROUTE_1       ; 1a
+	const FRUITTREE_ROUTE_8       ; 1b
+	const FRUITTREE_PEWTER_CITY_1 ; 1c
+	const FRUITTREE_PEWTER_CITY_2 ; 1d
+	const FRUITTREE_FUCHSIA_CITY  ; 1e
+NUM_FRUIT_TREES EQU const_value +- 1
 
 CMDQUEUE_TYPE  EQU 0
 CMDQUEUE_ADDR  EQU 1
diff --git a/engine/breeding/egg.asm b/engine/breeding/egg.asm
index 0573e2ecd..cfe4d9a1c 100755
--- a/engine/breeding/egg.asm
+++ b/engine/breeding/egg.asm
@@ -677,9 +677,9 @@ Hatch_UpdateFrontpicBGMapCenter: ; 17254 (5:7254)
 	ld a, b
 	ld [hBGMapAddress + 1], a
 	ld a, c
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 	pop af
 	call Hatch_LoadFrontpicPal
 	call SetPalettes
diff --git a/engine/debug.asm b/engine/debug.asm
index df5dbee56..d69cd254b 100755
--- a/engine/debug.asm
+++ b/engine/debug.asm
@@ -401,10 +401,10 @@ Function81adb: ; 81adb
 	ld de, VTiles2 tile $31
 	predef GetBackpic
 	ld a, $31
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	hlcoord 2, 4
 	lb bc, 6, 6
-	predef FillBox
+	predef PlaceGraphic
 	ld a, [wd003]
 	and a
 	jr z, .asm_81b66
@@ -433,10 +433,10 @@ Function81adb: ; 81adb
 	callab GetTrainerPic
 	xor a
 	ld [TempEnemyMonSpecies], a
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	hlcoord 2, 3
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 
 .asm_81ba9
 	ld a, $1
diff --git a/engine/engine_flags.asm b/engine/engine_flags.asm
index d8be9c494..2b441bab4 100644
--- a/engine/engine_flags.asm
+++ b/engine/engine_flags.asm
@@ -108,7 +108,7 @@ ENDM
 	engine_flag wMomSavingMoney, 0 ; mom saving money ; $8
 	engine_flag wMomSavingMoney, 7 ; dst
 
-	engine_flag wdc39, 0 ; unused, possibly related to a 2-day timer
+	engine_flag wUnusedTwoDayTimerOn, 0 ; unused, possibly related to a 2-day timer
 
 	engine_flag StatusFlags, 0 ; pokedex
 	engine_flag StatusFlags, 1 ; unown dex
diff --git a/engine/events.asm b/engine/events.asm
index 5e6e359cd..9b701be8a 100644
--- a/engine/events.asm
+++ b/engine/events.asm
@@ -124,8 +124,8 @@ StartMap: ; 96724
 	call ClearJoypad
 EnterMap: ; 9673e
 	xor a
-	ld [wd453], a
-	ld [wd454], a
+	ld [wXYComparePointer], a
+	ld [wXYComparePointer + 1], a
 	call SetUpFiveStepWildEncounterCooldown
 	callba RunMapSetupScript
 	call DisableEvents
diff --git a/engine/events_3.asm b/engine/events_3.asm
index 57554d3f1..55dc59a1a 100755
--- a/engine/events_3.asm
+++ b/engine/events_3.asm
@@ -288,7 +288,7 @@ CheckForHiddenItems: ; b8172
 	add SCREEN_HEIGHT / 4
 	ld [wd1ec], a
 ; Get the pointer for the first signpost header in the map...
-	ld hl, wdc02
+	ld hl, wCurrentMapSignpostHeaderPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
diff --git a/engine/evolve.asm b/engine/evolve.asm
index 4a959529a..b04a245e0 100755
--- a/engine/evolve.asm
+++ b/engine/evolve.asm
@@ -6,7 +6,6 @@ EvolvePokemon: ; 421d8
 	ld c, a
 	ld b, SET_FLAG
 	call EvoFlagAction
-
 EvolveAfterBattle: ; 421e6
 	xor a
 	ld [wMonTriedToEvolve], a
@@ -19,7 +18,7 @@ EvolveAfterBattle: ; 421e6
 
 	push hl
 
-CheckForEvolvablePokemon: ; 421f5
+EvolveAfterBattle_MasterLoop
 	ld hl, CurPartyMon
 	inc [hl]
 
@@ -28,7 +27,7 @@ CheckForEvolvablePokemon: ; 421f5
 	inc hl
 	ld a, [hl]
 	cp $ff
-	jp z, Evolution_ReturnToMap
+	jp z, .ReturnToMap
 
 	ld [Buffer1], a
 
@@ -40,7 +39,7 @@ CheckForEvolvablePokemon: ; 421f5
 	call EvoFlagAction
 	ld a, c
 	and a
-	jp z, CheckForEvolvablePokemon
+	jp z, EvolveAfterBattle_MasterLoop
 
 	ld a, [Buffer1]
 	dec a
@@ -63,7 +62,7 @@ endr
 .loop
 	ld a, [hli]
 	and a
-	jr z, CheckForEvolvablePokemon
+	jr z, EvolveAfterBattle_MasterLoop
 
 	ld b, a
 
@@ -324,7 +323,7 @@ endr
 	push hl
 	ld l, e
 	ld h, d
-	jp CheckForEvolvablePokemon
+	jp EvolveAfterBattle_MasterLoop
 ; 423f8
 
 .dont_evolve_1
@@ -334,12 +333,10 @@ endr
 .dont_evolve_3
 	inc hl
 	jp .loop
-; 423fe
 
-; dummy pop
+; XXX
 	pop hl
-
-Evolution_ReturnToMap: ; 423ff
+.ReturnToMap
 	pop de
 	pop bc
 	pop hl
@@ -393,7 +390,7 @@ CancelEvolution: ; 42454
 	call PrintText
 	call ClearTileMap
 	pop hl
-	jp CheckForEvolvablePokemon
+	jp EvolveAfterBattle_MasterLoop
 ; 42461
 
 IsMonHoldingEverstone: ; 42461
diff --git a/engine/intro_menu.asm b/engine/intro_menu.asm
index 42a8943ed..6ece8e384 100755
--- a/engine/intro_menu.asm
+++ b/engine/intro_menu.asm
@@ -947,10 +947,10 @@ Intro_PrepTrainerPic: ; 619c
 	ld de, VTiles2
 	callba GetTrainerPic
 	xor a
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	hlcoord 6, 4
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 	ret
 ; 61b4
 
@@ -959,10 +959,10 @@ ShrinkFrame: ; 61b4
 	ld c, $31
 	predef DecompressPredef
 	xor a
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	hlcoord 6, 4
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 	ret
 ; 61cd
 
diff --git a/engine/npctrade.asm b/engine/npctrade.asm
index 7342f8a6c..a8d3b71aa 100755
--- a/engine/npctrade.asm
+++ b/engine/npctrade.asm
@@ -430,21 +430,22 @@ GetTradeMonNames: ; fce1b
 
 NPCTrades: ; fce58
 npctrade: MACRO
-	db \1, \2, \3, \4
-	dw \5
-	db \6
-	dw \7
-	db \8, \9, 0
+	db \1, \2, \3, \4 ; dialog set, requested mon, offered mon, nickname
+	db \5, \6 ; dvs
+	shift
+	db \6 ; item
+	dw \7 ; OT ID
+	db \8, \9, 0 ; OT name, gender requested
 ENDM
 
 
-	npctrade 0, ABRA,       MACHOP,     "MUSCLE@@@@@", $6637, GOLD_BERRY,   37460, "MIKE@@@@@@@", TRADE_EITHER_GENDER
-	npctrade 0, BELLSPROUT, ONIX,       "ROCKY@@@@@@", $6696, BITTER_BERRY, 48926, "KYLE@@@@@@@", TRADE_EITHER_GENDER
-	npctrade 1, KRABBY,     VOLTORB,    "VOLTY@@@@@@", $8898, PRZCUREBERRY, 29189, "TIM@@@@@@@@", TRADE_EITHER_GENDER
-	npctrade 3, DRAGONAIR,  DODRIO,     "DORIS@@@@@@", $6677, SMOKE_BALL,   00283, "EMY@@@@@@@@", TRADE_FEMALE_ONLY
-	npctrade 2, HAUNTER,    XATU,       "PAUL@@@@@@@", $8696, MYSTERYBERRY, 15616, "CHRIS@@@@@@", TRADE_EITHER_GENDER
-	npctrade 3, CHANSEY,    AERODACTYL, "AEROY@@@@@@", $6696, GOLD_BERRY,   26491, "KIM@@@@@@@@", TRADE_EITHER_GENDER
-	npctrade 0, DUGTRIO,    MAGNETON,   "MAGGIE@@@@@", $6696, METAL_COAT,   50082, "FOREST@@@@@", TRADE_EITHER_GENDER
+	npctrade 0, ABRA,       MACHOP,     "MUSCLE@@@@@", $37, $66, GOLD_BERRY,   37460, "MIKE@@@@@@@", TRADE_EITHER_GENDER
+	npctrade 0, BELLSPROUT, ONIX,       "ROCKY@@@@@@", $96, $66, BITTER_BERRY, 48926, "KYLE@@@@@@@", TRADE_EITHER_GENDER
+	npctrade 1, KRABBY,     VOLTORB,    "VOLTY@@@@@@", $98, $88, PRZCUREBERRY, 29189, "TIM@@@@@@@@", TRADE_EITHER_GENDER
+	npctrade 3, DRAGONAIR,  DODRIO,     "DORIS@@@@@@", $77, $66, SMOKE_BALL,   00283, "EMY@@@@@@@@", TRADE_FEMALE_ONLY
+	npctrade 2, HAUNTER,    XATU,       "PAUL@@@@@@@", $96, $86, MYSTERYBERRY, 15616, "CHRIS@@@@@@", TRADE_EITHER_GENDER
+	npctrade 3, CHANSEY,    AERODACTYL, "AEROY@@@@@@", $96, $66, GOLD_BERRY,   26491, "KIM@@@@@@@@", TRADE_EITHER_GENDER
+	npctrade 0, DUGTRIO,    MAGNETON,   "MAGGIE@@@@@", $96, $66, METAL_COAT,   50082, "FOREST@@@@@", TRADE_EITHER_GENDER
 ; fcf38
 
 
diff --git a/engine/phone.asm b/engine/phone.asm
index 4b856568e..1a3023bf1 100644
--- a/engine/phone.asm
+++ b/engine/phone.asm
@@ -777,44 +777,44 @@ phone: MACRO
 	dba \7 ; script 2
 ENDM
 
-	phone TRAINER_NONE, PHONE_00, N_A,                          0, UnusedPhoneScript,   0, UnusedPhoneScript
-	phone TRAINER_NONE, PHONECONTACT_MOM, KRISS_HOUSE_1F,              7, MomPhoneScript,      0, UnusedPhoneScript
-	phone TRAINER_NONE, PHONECONTACT_BIKESHOP, OAKS_LAB,                    0, UnusedPhoneScript,   0, UnusedPhoneScript
-	phone TRAINER_NONE, PHONECONTACT_BILL, N_A,                        7, BillPhoneScript1,    0, BillPhoneScript2
-	phone TRAINER_NONE, PHONECONTACT_ELM, ELMS_LAB,                    7, ElmPhoneScript1,     0, ElmPhoneScript2
-	phone SCHOOLBOY, JACK1, NATIONAL_PARK,               7, JackPhoneScript1,    7, JackPhoneScript2
-	phone POKEFANF, BEVERLY1, NATIONAL_PARK,             7, BeverlyPhoneScript1, 7, BeverlyPhoneScript2
-	phone SAILOR, HUEY1, OLIVINE_LIGHTHOUSE_2F,          7, HueyPhoneScript1,    7, HueyPhoneScript2
-	phone TRAINER_NONE, PHONE_00, N_A,                          0, UnusedPhoneScript,   0, UnusedPhoneScript
-	phone TRAINER_NONE, PHONE_00, N_A,                          0, UnusedPhoneScript,   0, UnusedPhoneScript
-	phone TRAINER_NONE, PHONE_00, N_A,                          0, UnusedPhoneScript,   0, UnusedPhoneScript
-	phone COOLTRAINERM, GAVEN3, ROUTE_26,                7, GavenPhoneScript1,   7, GavenPhoneScript2
-	phone COOLTRAINERF, BETH1, ROUTE_26,                 7, BethPhoneScript1,    7, BethPhoneScript2
-	phone BIRD_KEEPER, JOSE2, ROUTE_27,                  7, JosePhoneScript1,    7, JosePhoneScript2
-	phone COOLTRAINERF, REENA1, ROUTE_27,                7, ReenaPhoneScript1,   7, ReenaPhoneScript2
-	phone YOUNGSTER, JOEY1, ROUTE_30,                    7, JoeyPhoneScript1,    7, JoeyPhoneScript2
-	phone BUG_CATCHER, WADE1, ROUTE_31,                  7, WadePhoneScript1,    7, WadePhoneScript2
-	phone FISHER, RALPH1, ROUTE_32,                      7, RalphPhoneScript1,   7, RalphPhoneScript2
-	phone PICNICKER, LIZ1, ROUTE_32,                     7, LizPhoneScript1,     7, LizPhoneScript2
-	phone HIKER, ANTHONY2, ROUTE_33,                     7, AnthonyPhoneScript1, 7, AnthonyPhoneScript2
-	phone CAMPER, TODD1, ROUTE_34,                       7, ToddPhoneScript1,    7, ToddPhoneScript2
-	phone PICNICKER, GINA1, ROUTE_34,                    7, GinaPhoneScript1,    7, GinaPhoneScript2
-	phone JUGGLER, IRWIN1, ROUTE_35,                     7, IrwinPhoneScript1,   7, IrwinPhoneScript2
-	phone BUG_CATCHER, ARNIE1, ROUTE_35,                 7, ArniePhoneScript1,   7, ArniePhoneScript2
-	phone SCHOOLBOY, ALAN1, ROUTE_36,                    7, AlanPhoneScript1,    7, AlanPhoneScript2
-	phone TRAINER_NONE, PHONE_00, N_A,                          0, UnusedPhoneScript,   0, UnusedPhoneScript
-	phone LASS, DANA1, ROUTE_38,                         7, DanaPhoneScript1,    7, DanaPhoneScript2
-	phone SCHOOLBOY, CHAD1, ROUTE_38,                    7, ChadPhoneScript1,    7, ChadPhoneScript2
-	phone POKEFANM, DEREK1, ROUTE_39,                    7, DerekPhoneScript1,   7, DerekPhoneScript2
-	phone FISHER, TULLY1, ROUTE_42,                      7, TullyPhoneScript1,   7, TullyPhoneScript2
-	phone POKEMANIAC, BRENT1, ROUTE_43,                  7, BrentPhoneScript1,   7, BrentPhoneScript2
-	phone PICNICKER, TIFFANY3, ROUTE_43,                 7, TiffanyPhoneScript1, 7, TiffanyPhoneScript2
-	phone BIRD_KEEPER, VANCE1, ROUTE_44,                 7, VancePhoneScript1,   7, VancePhoneScript2
-	phone FISHER, WILTON1, ROUTE_44,                     7, WiltonPhoneScript1,  7, WiltonPhoneScript2
-	phone BLACKBELT_T, KENJI3, ROUTE_45,                 7, KenjiPhoneScript1,   7, KenjiPhoneScript2
-	phone HIKER, PARRY1, ROUTE_45,                       7, ParryPhoneScript1,   7, ParryPhoneScript2
-	phone PICNICKER, ERIN1, ROUTE_46,                    7, ErinPhoneScript1,    7, ErinPhoneScript2
-	phone TRAINER_NONE, PHONECONTACT_BUENA, GOLDENROD_DEPT_STORE_ROOF, 7, BuenaPhoneScript1,   7, BuenaPhoneScript2
+	phone TRAINER_NONE, PHONE_00,              N_A,                       0, UnusedPhoneScript,   0, UnusedPhoneScript
+	phone TRAINER_NONE, PHONECONTACT_MOM,      KRISS_HOUSE_1F,            7, MomPhoneScript,      0, UnusedPhoneScript
+	phone TRAINER_NONE, PHONECONTACT_BIKESHOP, OAKS_LAB,                  0, UnusedPhoneScript,   0, UnusedPhoneScript
+	phone TRAINER_NONE, PHONECONTACT_BILL,     N_A,                       7, BillPhoneScript1,    0, BillPhoneScript2
+	phone TRAINER_NONE, PHONECONTACT_ELM,      ELMS_LAB,                  7, ElmPhoneScript1,     0, ElmPhoneScript2
+	phone SCHOOLBOY,    JACK1,                 NATIONAL_PARK,             7, JackPhoneScript1,    7, JackPhoneScript2
+	phone POKEFANF,     BEVERLY1,              NATIONAL_PARK,             7, BeverlyPhoneScript1, 7, BeverlyPhoneScript2
+	phone SAILOR,       HUEY1,                 OLIVINE_LIGHTHOUSE_2F,     7, HueyPhoneScript1,    7, HueyPhoneScript2
+	phone TRAINER_NONE, PHONE_00,              N_A,                       0, UnusedPhoneScript,   0, UnusedPhoneScript
+	phone TRAINER_NONE, PHONE_00,              N_A,                       0, UnusedPhoneScript,   0, UnusedPhoneScript
+	phone TRAINER_NONE, PHONE_00,              N_A,                       0, UnusedPhoneScript,   0, UnusedPhoneScript
+	phone COOLTRAINERM, GAVEN3,                ROUTE_26,                  7, GavenPhoneScript1,   7, GavenPhoneScript2
+	phone COOLTRAINERF, BETH1,                 ROUTE_26,                  7, BethPhoneScript1,    7, BethPhoneScript2
+	phone BIRD_KEEPER,  JOSE2,                 ROUTE_27,                  7, JosePhoneScript1,    7, JosePhoneScript2
+	phone COOLTRAINERF, REENA1,                ROUTE_27,                  7, ReenaPhoneScript1,   7, ReenaPhoneScript2
+	phone YOUNGSTER,    JOEY1,                 ROUTE_30,                  7, JoeyPhoneScript1,    7, JoeyPhoneScript2
+	phone BUG_CATCHER,  WADE1,                 ROUTE_31,                  7, WadePhoneScript1,    7, WadePhoneScript2
+	phone FISHER,       RALPH1,                ROUTE_32,                  7, RalphPhoneScript1,   7, RalphPhoneScript2
+	phone PICNICKER,    LIZ1,                  ROUTE_32,                  7, LizPhoneScript1,     7, LizPhoneScript2
+	phone HIKER,        ANTHONY2,              ROUTE_33,                  7, AnthonyPhoneScript1, 7, AnthonyPhoneScript2
+	phone CAMPER,       TODD1,                 ROUTE_34,                  7, ToddPhoneScript1,    7, ToddPhoneScript2
+	phone PICNICKER,    GINA1,                 ROUTE_34,                  7, GinaPhoneScript1,    7, GinaPhoneScript2
+	phone JUGGLER,      IRWIN1,                ROUTE_35,                  7, IrwinPhoneScript1,   7, IrwinPhoneScript2
+	phone BUG_CATCHER,  ARNIE1,                ROUTE_35,                  7, ArniePhoneScript1,   7, ArniePhoneScript2
+	phone SCHOOLBOY,    ALAN1,                 ROUTE_36,                  7, AlanPhoneScript1,    7, AlanPhoneScript2
+	phone TRAINER_NONE, PHONE_00,              N_A,                       0, UnusedPhoneScript,   0, UnusedPhoneScript
+	phone LASS,         DANA1,                 ROUTE_38,                  7, DanaPhoneScript1,    7, DanaPhoneScript2
+	phone SCHOOLBOY,    CHAD1,                 ROUTE_38,                  7, ChadPhoneScript1,    7, ChadPhoneScript2
+	phone POKEFANM,     DEREK1,                ROUTE_39,                  7, DerekPhoneScript1,   7, DerekPhoneScript2
+	phone FISHER,       TULLY1,                ROUTE_42,                  7, TullyPhoneScript1,   7, TullyPhoneScript2
+	phone POKEMANIAC,   BRENT1,                ROUTE_43,                  7, BrentPhoneScript1,   7, BrentPhoneScript2
+	phone PICNICKER,    TIFFANY3,              ROUTE_43,                  7, TiffanyPhoneScript1, 7, TiffanyPhoneScript2
+	phone BIRD_KEEPER,  VANCE1,                ROUTE_44,                  7, VancePhoneScript1,   7, VancePhoneScript2
+	phone FISHER,       WILTON1,               ROUTE_44,                  7, WiltonPhoneScript1,  7, WiltonPhoneScript2
+	phone BLACKBELT_T,  KENJI3,                ROUTE_45,                  7, KenjiPhoneScript1,   7, KenjiPhoneScript2
+	phone HIKER,        PARRY1,                ROUTE_45,                  7, ParryPhoneScript1,   7, ParryPhoneScript2
+	phone PICNICKER,    ERIN1,                 ROUTE_46,                  7, ErinPhoneScript1,    7, ErinPhoneScript2
+	phone TRAINER_NONE, PHONECONTACT_BUENA,    GOLDENROD_DEPT_STORE_ROOF, 7, BuenaPhoneScript1,   7, BuenaPhoneScript2
 ; 90627
 
 SpecialPhoneCallList: ; 90627
diff --git a/engine/pokedex.asm b/engine/pokedex.asm
index d1e2d7edf..00c600a9d 100644
--- a/engine/pokedex.asm
+++ b/engine/pokedex.asm
@@ -1051,14 +1051,14 @@ asm_4073f: ; 4073f (10:473f)
 	scf
 	ret
 
-Function40741: ; 40741
+Pokedex_FillColumn: ; 40741
 	push de
-	ld de, $0014
-.asm_40745
+	ld de, SCREEN_WIDTH
+.loop
 	ld [hl], a
 	add hl, de
 	dec b
-	jr nz, .asm_40745
+	jr nz, .loop
 	pop de
 	ret
 ; 4074c
@@ -1076,7 +1076,7 @@ Function4074c: ; 4074c (10:474c)
 	lb bc, 7, 7
 	call Pokedex_PlaceBorder
 	hlcoord 0, 9
-	ld bc, $607
+	lb bc, 6, 7
 	call Pokedex_PlaceBorder
 	hlcoord 1, 11
 	ld de, String_SEEN
@@ -1102,13 +1102,13 @@ Function4074c: ; 4074c (10:474c)
 	ld de, String_SELECT_OPTION
 	call Pokedex_PlaceString
 	hlcoord 8, 1
-	ld b, $7
+	ld b, 7
 	ld a, $5a
-	call Function40741
+	call Pokedex_FillColumn
 	hlcoord 8, 10
-	ld b, $6
+	ld b, 6
 	ld a, $5a
-	call Function40741
+	call Pokedex_FillColumn
 	hlcoord 8, 0
 	ld [hl], $59
 	hlcoord 8, 8
@@ -1134,22 +1134,22 @@ String_START_SEARCH: ; 407f2
 Function407fd: ; 407fd
 	call Pokedex_FillBackgroundColor2
 	hlcoord 0, 0
-	ld bc, $0f12
+	lb bc, 15, 18
 	call Pokedex_PlaceBorder
 	hlcoord 19, 0
 	ld [hl], $34
 	hlcoord 19, 1
-	ld a, $7f
-	ld b, $f
-	call Function40741
+	ld a, " "
+	ld b, 15
+	call Pokedex_FillColumn
 	ld [hl], $39
 	hlcoord 1, 10
-	ld bc, $0013
+	ld bc, 19
 	ld a, $61
 	call ByteFill
 	hlcoord 1, 17
-	ld bc, $0012
-	ld a, $7f
+	ld bc, 18
+	ld a, " "
 	call ByteFill
 	hlcoord 9, 7
 	ld de, Unknown_40852
@@ -1218,38 +1218,38 @@ Function408f0: ; 408f0 (10:48f0)
 	lb bc, 14, 18
 	call Pokedex_PlaceBorder
 	hlcoord 0, 1
-	ld de, Unknown_4092a
+	ld de, .SEARCH
 	call Pokedex_PlaceString
 	hlcoord 8, 4
-	ld de, Unknown_40935
+	ld de, .BLANK
 	call Pokedex_PlaceString
 	hlcoord 8, 6
-	ld de, Unknown_40935
+	ld de, .BLANK
 	call Pokedex_PlaceString
 	hlcoord 3, 4
-	ld de, String_40940
+	ld de, .Type1Type2
 	call PlaceString
 	hlcoord 3, 13
-	ld de, String_4094c
+	ld de, BeginSearch_Cancel
 	call PlaceString
 	ret
 ; 4092a (10:492a)
 
-Unknown_4092a: ; 4092a
+.SEARCH: ; 4092a
 	db $3b, " SEARCH ", $3c, $ff
 ; 40925
 
-Unknown_40935: ; 40935
+.BLANK: ; 40935
 	db $3d, "        ", $3e, $ff
 ; 40940
 
-String_40940: ; 40940
+.Type1Type2: ; 40940
 	db   "TYPE1"
 	next "TYPE2"
 	db   "@"
 ; 4094c
 
-String_4094c: ; 4094c
+BeginSearch_Cancel: ; 4094c
 	db   "BEGIN SEARCH!!"
 	next "CANCEL"
 	db   "@"
@@ -1273,9 +1273,9 @@ Function40962: ; 40962 (10:4962)
 	hlcoord 8, 0
 	ld [hl], $59
 	hlcoord 8, 1
-	ld b, $7
+	ld b, 7
 	ld a, $5a
-	call Function40741
+	call Pokedex_FillColumn
 	hlcoord 8, 8
 	ld [hl], $53
 	hlcoord 8, 9
@@ -1736,7 +1736,7 @@ Function40e5b: ; 40e5b
 	xor a
 	ld [hBGMapMode], a
 	hlcoord 0, 12
-	lb bc, 4, SCREEN_WIDTH - 2
+	lb bc, 4, 18
 	call Pokedex_PlaceBorder
 	ld a, [wc7d8]
 	ld hl, Unknown_40e7d
@@ -1781,7 +1781,7 @@ Function40f08: ; 40f08 (10:4f08)
 	xor a
 	ld [hBGMapMode], a
 	hlcoord 0, 12
-	lb bc, 4, SCREEN_WIDTH - 2
+	lb bc, 4, 18
 	call Pokedex_PlaceBorder
 	ld de, String_ChangingModesPleaseWait
 	hlcoord 1, 14
@@ -2018,7 +2018,7 @@ Function41107: ; 41107
 	xor a
 	ld [hBGMapMode], a
 	hlcoord 0, 12
-	ld bc, $0412
+	lb bc, 4, 18
 	call Pokedex_PlaceBorder
 	ld de, String_41126
 	hlcoord 1, 14
diff --git a/engine/pokegear.asm b/engine/pokegear.asm
index 939507429..5379734e6 100755
--- a/engine/pokegear.asm
+++ b/engine/pokegear.asm
@@ -199,14 +199,14 @@ TownMap_InitCursorAndPlayerIconPositions: ; 90d70 (24:4d70)
 	ld c, a
 	call GetWorldMapLocation
 .LoadLandmark
-	ld [wTownMapPlayerIconLandmark], a
-	ld [wTownMapCursorLandmark], a
+	ld [wPokegearMapPlayerIconLandmark], a
+	ld [wPokegearMapCursorLandmark], a
 	ret
 
 .FastShip
-	ld [wTownMapPlayerIconLandmark], a
+	ld [wPokegearMapPlayerIconLandmark], a
 	ld a, NEW_BARK_TOWN
-	ld [wTownMapCursorLandmark], a
+	ld [wPokegearMapCursorLandmark], a
 	ret
 
 Pokegear_InitJumptableIndices: ; 90d9e (24:4d9e)
@@ -307,7 +307,7 @@ InitPokegearTilemap: ; 90da8 (24:4da8)
 ; 90e3f
 
 .Map: ; 90e3f
-	ld a, [wTownMapPlayerIconLandmark]
+	ld a, [wPokegearMapPlayerIconLandmark]
 	cp FAST_SHIP
 	jr z, .johto
 	cp KANTO_LANDMARK
@@ -328,7 +328,7 @@ InitPokegearTilemap: ; 90da8 (24:4da8)
 	ld [hl], $6
 	hlcoord 19, 2
 	ld [hl], $17
-	ld a, [wTownMapCursorLandmark]
+	ld a, [wPokegearMapCursorLandmark]
 	call PokegearMap_UpdateLandmarkName
 	ret
 
@@ -530,7 +530,7 @@ Pokegear_UpdateClock: ; 90f86 (24:4f86)
 ; 0x90fb4
 
 PokegearMap_CheckRegion: ; 90fb4 (24:4fb4)
-	ld a, [wTownMapPlayerIconLandmark]
+	ld a, [wPokegearMapPlayerIconLandmark]
 	cp FAST_SHIP
 	jr z, .johto
 	cp KANTO_LANDMARK
@@ -549,9 +549,9 @@ PokegearMap_CheckRegion: ; 90fb4 (24:4fb4)
 
 PokegearMap_Init: ; 90fcd (24:4fcd)
 	call InitPokegearTilemap
-	ld a, [wTownMapPlayerIconLandmark]
+	ld a, [wPokegearMapPlayerIconLandmark]
 	call PokegearMap_InitPlayerIcon
-	ld a, [wTownMapCursorLandmark]
+	ld a, [wPokegearMapCursorLandmark]
 	call PokegearMap_InitCursor
 	ld a, c
 	ld [wPokegearMapCursorObjectPointer], a
@@ -621,7 +621,7 @@ PokegearMap_ContinueMap: ; 90ff2 (24:4ff2)
 	ret
 
 .up
-	ld hl, wTownMapCursorLandmark
+	ld hl, wPokegearMapCursorLandmark
 	ld a, [hl]
 	cp d
 	jr c, .wrap_around_up
@@ -633,7 +633,7 @@ PokegearMap_ContinueMap: ; 90ff2 (24:4ff2)
 	jr .done_dpad
 
 .down
-	ld hl, wTownMapCursorLandmark
+	ld hl, wPokegearMapCursorLandmark
 	ld a, [hl]
 	cp e
 	jr nz, .wrap_around_down
@@ -643,13 +643,13 @@ PokegearMap_ContinueMap: ; 90ff2 (24:4ff2)
 .wrap_around_down
 	dec [hl]
 .done_dpad
-	ld a, [wTownMapCursorLandmark]
+	ld a, [wPokegearMapCursorLandmark]
 	call PokegearMap_UpdateLandmarkName
 	ld a, [wPokegearMapCursorObjectPointer]
 	ld c, a
 	ld a, [wPokegearMapCursorObjectPointer + 1]
 	ld b, a
-	ld a, [wTownMapCursorLandmark]
+	ld a, [wPokegearMapCursorLandmark]
 	call PokegearMap_UpdateCursorPosition
 	ret
 
@@ -1552,7 +1552,7 @@ RadioChannels:
 	jp LoadStation_BuenasPassword
 
 .RuinsOfAlphRadio
-	ld a, [wTownMapPlayerIconLandmark]
+	ld a, [wPokegearMapPlayerIconLandmark]
 	cp RUINS_OF_ALPH
 	jr nz, .NoSignal
 	jp LoadStation_UnownRadio
@@ -1586,7 +1586,7 @@ RadioChannels:
 	ld a, [StatusFlags]
 	bit 4, a
 	jr z, .NoSignal
-	ld a, [wTownMapPlayerIconLandmark]
+	ld a, [wPokegearMapPlayerIconLandmark]
 	cp MAHOGANY_TOWN
 	jr z, .ok
 	cp ROUTE_43
@@ -1604,7 +1604,7 @@ RadioChannels:
 ; if in Johto or on the S.S. Aqua, set carry
 
 ; otherwise clear carry
-	ld a, [wTownMapPlayerIconLandmark]
+	ld a, [wPokegearMapPlayerIconLandmark]
 	cp FAST_SHIP
 	jr z, .johto
 	cp KANTO_LANDMARK
diff --git a/engine/predef.asm b/engine/predef.asm
index f459747bb..f52127311 100644
--- a/engine/predef.asm
+++ b/engine/predef.asm
@@ -49,7 +49,7 @@ PredefPointers:: ; 856b
 	add_predef Predef_LinkTextbox ; $ 10
 	add_predef PrintMoveDesc
 	add_predef UpdatePlayerHUD
-	add_predef FillBox
+	add_predef PlaceGraphic
 	add_predef CheckPlayerPartyForFitPkmn
 	add_predef UpdateEnemyHUD
 	add_predef StartBattle
@@ -88,7 +88,7 @@ PredefPointers:: ; 856b
 	add_predef PlayBattleAnim
 	add_predef Predef38 ; $38
 	add_predef Predef39
-	add_predef Functionfd1d0
+	add_predef Predef3A
 	add_predef PartyMonItemName
 	add_predef GetFrontpic
 	add_predef GetBackpic
@@ -103,6 +103,6 @@ PredefPointers:: ; 856b
 	add_predef LoadMonAnimation
 	add_predef AnimateFrontpic
 	add_predef Functiond0669 ; $48
-	add_predef Functiond066e
+	add_predef HOF_AnimateFrontpic
 	dbw $ff, Function2d43 ; ????
 ; 864c
diff --git a/engine/scripting.asm b/engine/scripting.asm
index 0a68243d3..42d060e9b 100644
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -2806,9 +2806,9 @@ Script_xycompare: ; 97a01
 ;     pointer (MultiByteParam)
 
 	call GetScriptByte
-	ld [wd453], a
+	ld [wXYComparePointer], a
 	call GetScriptByte
-	ld [wd454], a
+	ld [wXYComparePointer + 1], a
 	ret
 ; 97a0e
 
diff --git a/engine/trade/animation.asm b/engine/trade/animation.asm
index 31e46b2c7..719a230ff 100755
--- a/engine/trade/animation.asm
+++ b/engine/trade/animation.asm
@@ -864,9 +864,9 @@ TradeAnim_ShowFrontpic: ; 294c3
 	call Function297cf
 	hlcoord 7, 2
 	xor a
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 	call WaitBGMap
 	ret
 ; 294e7
diff --git a/engine/trainer_card.asm b/engine/trainer_card.asm
index ae8ad2aa5..4898d657a 100755
--- a/engine/trainer_card.asm
+++ b/engine/trainer_card.asm
@@ -245,8 +245,8 @@ TrainerCard_PrintTopHalfOfCard: ; 25299 (9:5299)
 	hlcoord 14, 1
 	lb bc, 5, 7
 	xor a
-	ld [hFillBox], a
-	predef FillBox
+	ld [hGraphicStartTile], a
+	predef PlaceGraphic
 	ret
 
 ; 252ec (9:52ec)
diff --git a/event/halloffame.asm b/event/halloffame.asm
index 95554a870..00716e20c 100755
--- a/event/halloffame.asm
+++ b/event/halloffame.asm
@@ -111,7 +111,7 @@ AnimateHallOfFame: ; 864c3
 	jr .loop
 
 .done
-	call Function86810
+	call HOF_AnimatePlayerPic
 	ld a, $4
 	ld [MusicFade], a
 	call RotateThreePalettesRight
@@ -128,7 +128,7 @@ AnimateHallOfFame: ; 864c3
 	call WaitBGMap
 	decoord 6, 5
 	ld c, $6
-	predef Functiond066e
+	predef HOF_AnimateFrontpic
 	ld c, 60
 	call DelayFrames
 	and a
@@ -251,10 +251,10 @@ endr
 	ld de, VTiles2 tile $31
 	predef GetBackpic
 	ld a, $31
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	hlcoord 6, 6
 	lb bc, 6, 6
-	predef FillBox
+	predef PlaceGraphic
 	ld a, $d0
 	ld [hSCY], a
 	ld a, $90
@@ -310,21 +310,20 @@ _HallOfFamePC: ; 86650
 	call LoadFontsBattleExtra
 	xor a
 	ld [wJumptableIndex], a
-.loop
+.MasterLoop
 	call LoadHOFTeam
 	ret c
-	call Function86665
+	call .DisplayTeam
 	ret c
 	ld hl, wJumptableIndex
 	inc [hl]
-	jr .loop
-; 86665
+	jr .MasterLoop
 
-Function86665: ; 86665
+.DisplayTeam
 	xor a
 	ld [wcf64], a
 .next
-	call Function86692
+	call .DisplayMonAndStrings
 	jr c, .start_button
 .loop
 	call JoyTextDelay
@@ -353,19 +352,18 @@ Function86665: ; 86665
 .start_button
 	and a
 	ret
-; 86692
 
-Function86692: ; 86692
+.DisplayMonAndStrings
 ; Print the number of times the player has entered the Hall of Fame.
 ; If that number is above 200, print "HOF Master!" instead.
 	ld a, [wcf64]
-	cp $6
+	cp PARTY_LENGTH
 	jr nc, .fail
 	ld hl, wHallOfFameTempMon1
 	ld bc, wHallOfFameTempMon1End - wHallOfFameTempMon1
 	call AddNTimes
 	ld a, [hl]
-	cp $ff
+	cp -1
 	jr nz, .okay
 
 .fail
@@ -380,14 +378,14 @@ Function86692: ; 86692
 	ld a, [wHallOfFameTempWinCount]
 	cp 200 + 1
 	jr c, .print_num_hof
-	ld de, String_866fc
+	ld de, .HOFMaster
 	hlcoord 1, 2
 	call PlaceString
 	hlcoord 13, 2
 	jr .finish
 
 .print_num_hof
-	ld de, String_8670c
+	ld de, .TimeFamer
 	hlcoord 1, 2
 	call PlaceString
 	hlcoord 2, 2
@@ -397,7 +395,7 @@ Function86692: ; 86692
 	hlcoord 11, 2
 
 .finish
-	ld de, String_866fb
+	ld de, .EmptyString
 	call PlaceString
 	call WaitBGMap
 	ld b, SCGB_1A
@@ -405,24 +403,20 @@ Function86692: ; 86692
 	call SetPalettes
 	decoord 6, 5
 	ld c, $6
-	predef Functiond066e
+	predef HOF_AnimateFrontpic
 	and a
 	ret
-; 866fb
 
-String_866fb:
+.EmptyString:
 	db "@"
-; 866fc
 
-String_866fc:
+.HOFMaster:
 	db "    HOF Master!@"
-; 8670c
 
-String_8670c:
+.TimeFamer:
 	db "    -Time Famer@"
 ; 8671c
 
-
 LoadHOFTeam: ; 8671c
 	ld a, [wJumptableIndex]
 	cp NUM_HOF_TEAMS
@@ -537,7 +531,7 @@ DisplayHOFMon: ; 86748
 	ret
 ; 86810
 
-Function86810: ; 86810
+HOF_AnimatePlayerPic: ; 86810
 	call ClearBGPalettes
 	ld hl, VTiles2 tile $63
 	ld de, FontExtra + 13 tiles
@@ -549,10 +543,10 @@ Function86810: ; 86810
 	call ByteFill
 	callba GetPlayerBackpic
 	ld a, $31
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	hlcoord 6, 6
 	lb bc, 6, 6
-	predef FillBox
+	predef PlaceGraphic
 	ld a, $d0
 	ld [hSCY], a
 	ld a, $90
@@ -571,12 +565,12 @@ Function86810: ; 86810
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, " "
 	call ByteFill
-	callba Function88840
+	callba HOF_LoadTrainerFrontpic
 	xor a
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	hlcoord 12, 5
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 	ld a, $c0
 	ld [hSCX], a
 	call WaitBGMap
diff --git a/event/mom_phone.asm b/event/mom_phone.asm
index e7d2a1493..a750b7475 100755
--- a/event/mom_phone.asm
+++ b/event/mom_phone.asm
@@ -275,7 +275,7 @@ _MomText_ItsInRoom: ; 0xfd1ca
 
 	db 0 ; XXX
 
-Functionfd1d0: ; fd1d0
+Predef3A: ; fd1d0
 	ret
 ; fd1d1
 
diff --git a/event/photo.asm b/event/photo.asm
index 75915716a..7f6ec9e66 100755
--- a/event/photo.asm
+++ b/event/photo.asm
@@ -144,9 +144,9 @@ UnownPrinter: ; 16be4
 	call Function16cff
 	hlcoord 1, 6
 	xor a
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 	ld de, VTiles2 tile $31
 	callba Functione0000
 	ret
@@ -228,9 +228,9 @@ Function16dac: ; 16dac
 	call ByteFill
 	hlcoord 7, 11
 	ld a, $31
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 	ret
 ; 16dc7
 
diff --git a/gfx/pics/animation.asm b/gfx/pics/animation.asm
index ae207a790..3284a271b 100644
--- a/gfx/pics/animation.asm
+++ b/gfx/pics/animation.asm
@@ -1115,13 +1115,13 @@ PokeAnim_GetSpeciesOrUnown: ; d065c
 	ret
 ; d0669
 
-Functiond0669: ; d0669
+Functiond0669: ; d0669 Predef 48
 	ld a, $1
 	ld [wBoxAlignment], a
 
-Functiond066e: ; d066e
+HOF_AnimateFrontpic: ; d066e Predef 49
 	call AnimateMon_CheckIfPokemon
-	jr c, .asm_d068c
+	jr c, .fail
 	ld h, d
 	ld l, e
 	push bc
@@ -1137,7 +1137,7 @@ Functiond066e: ; d066e
 	ld [wBoxAlignment], a
 	ret
 
-.asm_d068c
+.fail
 	xor a
 	ld [wBoxAlignment], a
 	inc a
diff --git a/home.asm b/home.asm
index d549357da..42feefde4 100644
--- a/home.asm
+++ b/home.asm
@@ -1665,9 +1665,9 @@ _PrepMonFrontpic:: ; 378b
 	predef GetFrontpic
 	pop hl
 	xor a
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 	xor a
 	ld [wBoxAlignment], a
 	ret
diff --git a/home/audio.asm b/home/audio.asm
index 63489cf68..1e02f91eb 100644
--- a/home/audio.asm
+++ b/home/audio.asm
@@ -560,7 +560,7 @@ CheckSFX:: ; 3dde
 	ret
 ; 3dfe
 
-Function3dfe:: ; 3dfe
+TerminateExpBarSound:: ; 3dfe
 	xor a
 	ld [Channel5Flags], a
 	ld [SoundInput], a
diff --git a/home/map.asm b/home/map.asm
index 680fc8944..c51f9c48a 100644
--- a/home/map.asm
+++ b/home/map.asm
@@ -381,7 +381,7 @@ CheckIndoorMap:: ; 22f4
 	ret
 ; 2300
 
-Function2300:: ; unreferenced
+; XXX
 	cp INDOOR
 	ret z
 	cp GATE
@@ -549,11 +549,11 @@ ReadWarps:: ; 23da
 	ld a, l
 	ld [wCurrMapWarpHeaderPointer], a
 	ld a, h
-	ld [wdbfd], a
+	ld [wCurrMapWarpHeaderPointer + 1], a
 	ld a, c
 	and a
 	ret z
-	ld bc, $0005
+	ld bc, 5
 	call AddNTimes
 	ret
 ; 23f1
@@ -765,25 +765,25 @@ endr
 	ld d, a
 	ld a, [MapHeight]
 	ld b, a
-.asm_250c
+.row
 	push hl
 	ld a, [hConnectedMapWidth]
 	ld c, a
-.asm_2510
+.col
 	ld a, [de]
 	inc de
 	ld [hli], a
 	dec c
-	jr nz, .asm_2510
+	jr nz, .col
 	pop hl
 	ld a, [hConnectionStripLength]
 	add l
 	ld l, a
-	jr nc, .asm_251e
+	jr nc, .okay
 	inc h
-.asm_251e
+.okay
 	dec b
-	jr nz, .asm_250c
+	jr nz, .row
 
 	pop af
 	rst Bankswitch
@@ -916,9 +916,9 @@ FillSouthConnectionStrip:: ; 25d3
 	add 6
 	add e
 	ld e, a
-	jr nc, .asm_25f2
+	jr nc, .okay
 	inc d
-.asm_25f2
+.okay
 	dec c
 	jr nz, .y
 	ret
@@ -927,7 +927,7 @@ FillSouthConnectionStrip:: ; 25d3
 FillWestConnectionStrip::
 FillEastConnectionStrip:: ; 25f6
 
-.asm_25f6
+.loop
 	ld a, [MapWidth]
 	add 6
 	ld [hConnectedMapWidth], a
@@ -955,11 +955,11 @@ FillEastConnectionStrip:: ; 25f6
 	ld a, [hConnectedMapWidth]
 	add e
 	ld e, a
-	jr nc, .asm_2617
+	jr nc, .okay
 	inc d
-.asm_2617
+.okay
 	dec b
-	jr nz, .asm_25f6
+	jr nz, .loop
 	ret
 ; 261b
 
@@ -1452,15 +1452,15 @@ BufferScreen:: ; 2879
 	ld de, wScreenSave
 	ld c, $5
 	ld b, $6
-.asm_2886
+.row
 	push bc
 	push hl
-.asm_2888
+.col
 	ld a, [hli]
 	ld [de], a
 	inc de
 	dec b
-	jr nz, .asm_2888
+	jr nz, .col
 	pop hl
 	ld a, [MapWidth]
 	add $6
@@ -1469,7 +1469,7 @@ BufferScreen:: ; 2879
 	add hl, bc
 	pop bc
 	dec c
-	jr nz, .asm_2886
+	jr nz, .row
 	ret
 ; 289d
 
diff --git a/home/mobile.asm b/home/mobile.asm
index 6faecfbff..32692f6a9 100644
--- a/home/mobile.asm
+++ b/home/mobile.asm
@@ -128,7 +128,7 @@ Timer:: ; 3e93
 
 Function3ed7:: ; 3ed7
 ; unreferenced
-	ld [wdc02], a
+	ld [$dc02], a
 	ld a, [hROMBank]
 	push af
 	ld a, BANK(Function114243)
@@ -139,7 +139,7 @@ Function3ed7:: ; 3ed7
 	ld a, b
 	rst Bankswitch
 
-	ld a, [wdc02]
+	ld a, [$dc02]
 	ret
 ; 3eea
 
diff --git a/hram.asm b/hram.asm
index 2032a74cc..3e921f78e 100644
--- a/hram.asm
+++ b/hram.asm
@@ -34,7 +34,7 @@ hJoyLast           EQU $ffa9
 hInMenu            EQU $ffaa
 
 hPrinter           EQU $ffac
-hFillBox           EQU $ffad
+hGraphicStartTile           EQU $ffad
 hMoveMon           EQU $ffae
 hMapObjectIndexBuffer EQU $ffaf
 hObjectStructIndexBuffer EQU $ffb0
diff --git a/items/item_effects.asm b/items/item_effects.asm
index 2831c9407..5ba74eb8c 100644
--- a/items/item_effects.asm
+++ b/items/item_effects.asm
@@ -1665,7 +1665,7 @@ RevivePokemon: ; f0d6
 	ld a, [CurPartyMon]
 	ld c, a
 	ld d, 0
-	ld hl, wc6fc
+	ld hl, wBattleParticipantsIncludingFainted
 	ld b, CHECK_FLAG
 	predef FlagPredef
 	ld a, c
diff --git a/main.asm b/main.asm
index 4839245aa..cc61c518f 100644
--- a/main.asm
+++ b/main.asm
@@ -5428,9 +5428,9 @@ Pokepic:: ; 244e3
 	ld c, a
 	call Coord2Tile
 	ld a, $80
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 	call WaitBGMap
 	ret
 
@@ -6509,9 +6509,9 @@ endr
 	ld [hl], VBGMap0 / $100
 	ret
 
-FillBox: ; 2ef6e
+PlaceGraphic: ; 2ef6e
 ; Fill wBoxAlignment-aligned box width b height c
-; with iterating tile starting from hFillBox at hl.
+; with iterating tile starting from hGraphicStartTile at hl.
 ; Predef $13
 
 	ld de, SCREEN_WIDTH
@@ -6520,7 +6520,7 @@ FillBox: ; 2ef6e
 	and a
 	jr nz, .right
 
-	ld a, [hFillBox]
+	ld a, [hGraphicStartTile]
 .x1
 	push bc
 	push hl
@@ -6547,7 +6547,7 @@ FillBox: ; 2ef6e
 	add hl, bc
 	pop bc
 
-	ld a, [hFillBox]
+	ld a, [hGraphicStartTile]
 .x2
 	push bc
 	push hl
@@ -8973,7 +8973,7 @@ CheckBattleScene: ; 4ea44
 
 .asm_4ea72
 	ld a, $5
-	ld hl, wdc00
+	ld hl, w5_dc00
 	call GetFarWRAMByte
 	bit 0, a
 	jr z, .off
@@ -10799,7 +10799,7 @@ MovePlayerPic: ; 88266
 	xor a
 	ld [hBGMapMode], a
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 	xor a
 	ld [hBGMapThird], a
 	call WaitBGMap
@@ -10951,7 +10951,7 @@ GetChrisBackpic: ; 88830
 	predef DecompressPredef
 	ret
 
-Function88840: ; 88840
+HOF_LoadTrainerFrontpic: ; 88840
 	call WaitBGMap
 	xor a
 	ld [hBGMapMode], a
@@ -11007,10 +11007,10 @@ DrawIntroPlayerPic: ; 88874
 
 ; Draw
 	xor a
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	hlcoord 6, 4
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 	ret
 
 ChrisPic: ; 888a9
diff --git a/misc/mobile_22.asm b/misc/mobile_22.asm
index 64cb84dc3..b849b8405 100644
--- a/misc/mobile_22.asm
+++ b/misc/mobile_22.asm
@@ -1255,10 +1255,10 @@ Function897d5: ; 897d5
 
 .asm_897f3
 	ld a, $37
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	hlcoord 12, 3
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 	call Function8963d
 	pop bc
 	ret
diff --git a/misc/mobile_40.asm b/misc/mobile_40.asm
index ae77da940..2660f3e31 100644
--- a/misc/mobile_40.asm
+++ b/misc/mobile_40.asm
@@ -4,7 +4,7 @@ Function100000: ; 100000
 ; bc: addr
 	ld a, [rSVBK]
 	push af
-	ld a, $1
+	ld a, $01
 	ld [rSVBK], a
 
 	call Function100022
@@ -85,7 +85,7 @@ Function100082: ; 100082
 	xor a
 	ld [hMapAnims], a
 	ld [hFFC6], a
-	ld a, $1
+	ld a, $01
 	ld [hMobileReceive], a
 	ld [hMobile], a
 	ei
@@ -177,7 +177,7 @@ Function1000fa: ; 1000fa
 	push af
 	xor a
 	ld [wLinkMode], a
-	ld a, $4
+	ld a, $04
 	ld [wc314 + 5], a
 	callba Function11619d
 	ld hl, wcd29
@@ -217,9 +217,9 @@ Function100163: ; 100163
 
 Function10016f: ; 10016f
 	ld a, [wcd2b]
-	cp $1
+	cp $01
 	ret z
-	cp $2
+	cp $02
 	ret z
 	cp $ff
 	jp z, .asm_1001f5
@@ -321,7 +321,7 @@ Function10020b: ; 10020b
 
 	ld a, [rSVBK]
 	push af
-	ld a, $1
+	ld a, $01
 	ld [rSVBK], a
 
 	callba Function17f555
@@ -355,9 +355,9 @@ String10025e: ; 10025e
 
 Function100276: ; 100276
 	ld a, [wcd2b]
-	cp $1
+	cp $01
 	jr z, .asm_10029f
-	cp $2
+	cp $02
 	jr z, .asm_100296
 	cp $f5
 	jr z, .asm_1002a5
@@ -370,12 +370,12 @@ Function100276: ; 100276
 	jr .asm_1002c0
 
 .asm_100293
-	ld c, $2
+	ld c, $02
 	ret
 
 .asm_100296
 	callba Script_reloadmappart
-	ld c, $4
+	ld c, $04
 	ret
 
 .asm_10029f
@@ -386,7 +386,7 @@ Function100276: ; 100276
 .asm_1002a5
 	callba Script_reloadmappart
 	call Function1002ed
-	ld c, $3
+	ld c, $03
 	ret
 
 .asm_1002b1
@@ -394,13 +394,13 @@ Function100276: ; 100276
 	call Function1002dc
 	ld de, String10024d
 	call Function100232
-	ld c, $2
+	ld c, $02
 	ret
 
 .asm_1002c0
 	call Function1002c9
 	call Function1002dc
-	ld c, $1
+	ld c, $01
 	ret
 ; 1002c9
 
@@ -426,7 +426,7 @@ Function1002dc: ; 1002dc
 Function1002ed: ; 1002ed
 	callba LoadOW_BGPal7
 	callba ApplyPals
-	ld a, $1
+	ld a, $01
 	ld [hCGBPalUpdate], a
 	call DelayFrame
 	ret
@@ -491,7 +491,7 @@ Function10034d: ; 10034d
 	jr nz, .asm_100366
 	bit 0, a
 	jr nz, .asm_100364
-	ld a, $1
+	ld a, $01
 	and a
 	ret
 
@@ -500,7 +500,7 @@ Function10034d: ; 10034d
 	ret
 
 .asm_100366
-	ld a, $2
+	ld a, $02
 	and a
 	ret
 
@@ -547,7 +547,7 @@ Function10039c: ; 10039c
 	ld hl, wcc60
 	ld de, w3_d000
 	ld bc, $54
-	ld a, $3
+	ld a, $03
 	call FarCopyWRAM
 	ret
 ; 1003ab
@@ -556,7 +556,7 @@ Function1003ab: ; 1003ab
 	ld hl, w3_d000
 	ld de, wcc60
 	ld bc, $54
-	ld a, $3
+	ld a, $03
 	call FarCopyWRAM
 	ret
 ; 1003ba
@@ -565,7 +565,7 @@ Function1003ba: ; 1003ba
 	ld hl, wccb4
 	ld de, w3_d080
 	ld bc, $54
-	ld a, $3
+	ld a, $03
 	call FarCopyWRAM
 	ret
 ; 1003c9
@@ -574,7 +574,7 @@ Function1003c9: ; 1003c9
 	ld hl, w3_d080
 	ld de, wccb4
 	ld bc, $54
-	ld a, $3
+	ld a, $03
 	call FarCopyWRAM
 	ret
 ; 1003d8
@@ -596,24 +596,24 @@ Function1003d8: ; 1003d8
 	inc hl
 	ld [hl], d
 	ld a, c
-	add $2
+	add $02
 	ld [wccb4], a
 	ret
 ; 1003f5
 
 Function1003f5: ; 1003f5
 	ld a, [wcc60]
-	sub $3
+	sub $03
 	ld [wcc60], a
 	ld a, [wccb4]
-	sub $3
+	sub $03
 	ld [wccb4], a
 	ret
 ; 100406
 
 Function100406: ; 100406
 	ld a, [wcc60]
-	sub $2
+	sub $02
 	ld c, a
 	ld b, 0
 	ld hl, wcc61
@@ -702,17 +702,17 @@ Function10047c: ; 10047c
 	call Function100337
 	ret c
 	ret z
-	cp $2
+	cp $02
 	jr z, .asm_100487
 	jr .asm_10048d
 
 .asm_100487
-	ld a, $8
+	ld a, $08
 	ld [wcd27], a
 	ret
 
 .asm_10048d
-	ld a, $2
+	ld a, $02
 	ld [wcd27], a
 	ret
 ; 100493
@@ -758,7 +758,7 @@ Function1004ba: ; 1004ba
 	ret
 
 .asm_1004c8
-	ld a, $8
+	ld a, $08
 	ld [wcd27], a
 	ret
 ; 1004ce
@@ -767,7 +767,7 @@ Function1004ce: ; 1004ce
 	call Function100337
 	ret c
 	ret z
-	cp $2
+	cp $02
 	ret nz
 	ld a, [wcd27]
 	inc a
@@ -986,8 +986,8 @@ MenuData2_100604: ; 100604
 
 Function10060d: ; 10060d
 	hlcoord 3, 10
-	ld b, $1
-	ld c, $b
+	ld b, $01
+	ld c, $0b
 	call Function3eea
 	ld de, String_100621
 	hlcoord 4, 11
@@ -1162,7 +1162,7 @@ Function1006dc: ; 1006dc
 ; 1006fd
 
 Function1006fd: ; 1006fd
-	ld a, $4
+	ld a, $04
 	ld hl, $a800
 	call GetSRAMBank
 	xor a
@@ -1174,12 +1174,12 @@ endr
 ; 10070d
 
 Function10070d: ; 10070d
-	ld a, $4
+	ld a, $04
 	ld hl, $a800
 	call GetSRAMBank
 	xor a
 	ld [hli], a
-	ld a, $a
+	ld a, $0a
 	ld [hli], a
 	xor a
 	ld [hli], a
@@ -1197,7 +1197,7 @@ Function100720: ; 100720
 	ld [wcd73], a
 	ld a, [hSeconds]
 	ld [wcd74], a
-	ld a, $4
+	ld a, $04
 	ld hl, $a800
 	call GetSRAMBank
 	ld a, [hli]
@@ -1265,7 +1265,7 @@ Function100772: ; 100772
 
 Function10079c: ; 10079c
 	ld a, [wcd21]
-	cp $1
+	cp $01
 	jr nz, .asm_1007f4
 	ld hl, wcd2a
 	bit 5, [hl]
@@ -1293,7 +1293,7 @@ Function10079c: ; 10079c
 	and a
 	jr nz, .asm_1007e5
 	ld a, b
-	cp $a
+	cp $0a
 	jr nc, .asm_1007e5
 	ld a, d
 	and a
@@ -1326,7 +1326,7 @@ Function1007f6: ; 1007f6
 	ld hl, wcd74
 	ld de, wcd71
 	call Function1006dc
-	ld a, $4
+	ld a, $04
 	call GetSRAMBank
 	ld hl, $a802
 	call Function100826
@@ -1384,7 +1384,7 @@ Function100846: ; 100846
 	ld [StringBuffer2 + 2], a
 	ld a, [wcd6d]
 	ld c, a
-	ld a, $a
+	ld a, $0a
 	sbc c
 	ld [StringBuffer2 + 1], a
 	xor a
@@ -1418,7 +1418,7 @@ String_10089f: ; 10089f
 ; 1008a6
 
 Function1008a6: ; 1008a6
-	ld a, $4
+	ld a, $04
 	ld hl, $a800
 	call GetSRAMBank
 	ld a, [hli]
@@ -1439,7 +1439,7 @@ Function1008a6: ; 1008a6
 	ld b, a
 	ld a, [StringBuffer2 + 1]
 	ld c, a
-	ld a, $a
+	ld a, $0a
 	sbc c
 	ld c, a
 	jr c, .asm_1008da
@@ -1463,7 +1463,7 @@ Function1008e0: ; 1008e0
 	push bc
 	xor a
 	ld [hBGMapMode], a
-	ld a, $3
+	ld a, $03
 	ld [hVBlank], a
 	call Function100970
 	call Function100902
@@ -1479,12 +1479,12 @@ Function1008e0: ; 1008e0
 
 Function100902: ; 100902
 	hlcoord 3, 10
-	ld b, $1
-	ld c, $b
+	ld b, $01
+	ld c, $0b
 	call TextBox
 	ld a, [wcd6d]
 	ld c, a
-	ld a, $a
+	ld a, $0a
 	sub c
 	ld [StringBuffer2], a
 	jr z, .asm_10093f
@@ -1547,7 +1547,7 @@ Function100989: ; 100989
 
 Function1009a5: ; 1009a5
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	ld a, $3
+	ld a, $03
 	call FarCopyWRAM
 	ret
 ; 1009ae
@@ -1555,7 +1555,7 @@ Function1009a5: ; 1009a5
 Function1009ae: ; 1009ae
 	ld a, [rSVBK]
 	push af
-	ld a, $3
+	ld a, $03
 	ld [rSVBK], a
 
 	ld hl, w3_d800
@@ -1584,17 +1584,17 @@ Function1009ae: ; 1009ae
 Function1009d2: ; 1009d2
 	ld a, [rSVBK]
 	push af
-	ld a, $3
+	ld a, $03
 	ld [rSVBK], a
 
 	ld a, [rVBK]
 	push af
-	ld a, $1
+	ld a, $01
 	ld [rVBK], a
 
 	ld hl, w3_d800
 	debgcoord 0, 0
-	lb bc, $3, $24
+	lb bc, $03, $24
 	call Get2bpp
 
 	pop af
@@ -1665,7 +1665,7 @@ _LinkBattleSendReceiveAction: ; 100a09
 	ld a, b
 
 .use_move
-	and $f
+	and $0f
 	ret
 ; 100a53
 
@@ -1709,13 +1709,13 @@ _LinkBattleSendReceiveAction: ; 100a09
 	call DelayFrame
 	call GetJoypad
 	callba Function100382
-	ld c, $1
-	ld b, $3
+	ld c, $01
+	ld b, $03
 	push bc
 	call Function10062d
 	pop bc
 	jr c, .asm_100ac7
-	ld b, $1
+	ld b, $01
 	call Function10079c
 	jr c, .asm_100ac7
 	call Function1009f3
@@ -1730,7 +1730,7 @@ _LinkBattleSendReceiveAction: ; 100a09
 	jr .asm_100ace
 
 .asm_100ac7
-	ld a, $f
+	ld a, $0f
 	ld [wd430], a
 	jr .asm_100ace
 
@@ -1743,7 +1743,7 @@ Function100acf: ; 100acf
 	ld hl, wccb5
 	ld a, [wd431]
 	ld [hli], a
-	ld c, $1
+	ld c, $01
 .asm_100adb
 	ld a, [de]
 	inc de
@@ -1775,7 +1775,7 @@ Function100ae7: ; 100ae7
 	ret
 
 .asm_100aff
-	ld a, $f
+	ld a, $0f
 	ld [wd430], a
 	ld a, $f1
 	ld [wcd2b], a
@@ -1915,7 +1915,7 @@ MobileMoveSelectionScreen: ; 100b9f
 	inc a
 	cp b
 	jp nz, .master_loop
-	ld a, $1
+	ld a, $01
 	ld [wMenuCursorY], a
 	jp .master_loop
 
@@ -1923,7 +1923,7 @@ MobileMoveSelectionScreen: ; 100b9f
 	ld a, [wMenuCursorY]
 	dec a
 	ld [CurMoveNum], a
-	ld a, $1
+	ld a, $01
 	and a
 	ret
 
@@ -1942,7 +1942,7 @@ MobileMoveSelectionScreen: ; 100b9f
 	jr z, .no_pp_left
 	ld a, [PlayerDisableCount]
 	swap a
-	and $f
+	and $0f
 	dec a
 	cp c
 	jr z, .move_disabled
@@ -2176,12 +2176,12 @@ Mobile_SetOverworldDelay: ; 100dd2
 ; 100dd8
 
 Function100dd8: ; 100dd8
-	ld c, $1
-	ld b, $3
+	ld c, $01
+	ld b, $03
 	callba Function10062d
 	jr c, .asm_100dfb
 	ld c, $3c
-	ld b, $1
+	ld b, $01
 	call Function10079c
 	jr c, .asm_100dfb
 	callba Function10032e
@@ -2256,7 +2256,7 @@ Function100e2d: ; 100e2d
 
 Function100e63: ; 100e63
 	ld a, e
-	cp $2
+	cp $02
 	ret nz
 	call Function100db0
 	ret nc
@@ -2270,7 +2270,7 @@ Function100e72: ; 100e72
 	ld hl, wcd29
 	bit 0, [hl]
 	jr z, .asm_100e7c
-	ld a, $a
+	ld a, $0a
 
 .asm_100e7c
 	ld [wcd67], a
@@ -2322,7 +2322,7 @@ asm_100eb8
 	ld hl, wcd68
 	inc [hl]
 	ld a, [hl]
-	cp $2
+	cp $02
 	ret c
 	ld [hl], 0
 	jr Function100ec5
@@ -2344,7 +2344,7 @@ Function100eca: ; 100eca
 
 Function100ed4: ; 100ed4
 	callba ApplyPals
-	ld a, $1
+	ld a, $01
 	ld [hCGBPalUpdate], a
 	ret
 ; 100edf
@@ -2426,11 +2426,11 @@ asm_100f02:
 Function100f3d: ; 100f3d
 	; parameter
 	ld a, [StringBuffer2]
-	cp $2
+	cp $02
 	jr z, .two
-	cp $1
+	cp $01
 	jr z, .one
-	cp $3
+	cp $03
 	jr z, .three
 	ret
 
@@ -2501,11 +2501,11 @@ Function100f8d: ; 100f8d
 	res 7, a
 	jr z, .sram
 	and a
-	jr nz, .wram
+	jr nz, .far_wram
 	call CopyBytes
 	ret
 
-.wram
+.far_wram
 	and $7f
 	call FarCopyWRAM
 	ret
@@ -2531,7 +2531,7 @@ Unknown_100fc0: ; 100fc0
 	db -1
 
 Unknown_100feb: ; 100feb
-	dbwww $0, sPartyMail, MAIL_STRUCT_LENGTH * PARTY_LENGTH, NULL
+	dbwww $00, sPartyMail, MAIL_STRUCT_LENGTH * PARTY_LENGTH, NULL
 	db -1
 
 Unknown_100ff3: ; 100ff3
@@ -2541,12 +2541,12 @@ Unknown_100ff3: ; 100ff3
 	dbwww $80, PlayerID, 2, NULL
 	dbwww $80, wSecretID, 2, NULL
 	dbwww $80, PlayerGender, 1, NULL
-	dbwww $4, $a603, 8, NULL
-	dbwww $4, $a007, PARTYMON_STRUCT_LENGTH, NULL
+	dbwww $04, $a603, 8, NULL
+	dbwww $04, $a007, PARTYMON_STRUCT_LENGTH, NULL
 	db -1
 
 Unknown_10102c: ; 10102c
-	dbwww $80, OTPlayerName, 11, NULL
+	dbwww $80, OTPlayerName, NAME_LENGTH, NULL
 	dbwww $80, OTPlayerID, 2, NULL
 	dbwww $80, OTPartyMonNicknames, PKMN_NAME_LENGTH * PARTY_LENGTH, NULL
 	dbwww $80, OTPartyMonOT, NAME_LENGTH * PARTY_LENGTH, NULL
@@ -2566,7 +2566,7 @@ endr
 	ld [hl], e
 	inc hl
 	ld [hl], d
-	ld a, $7
+	ld a, $07
 	call GetSRAMBank
 	ld hl, wc608
 	ld de, $a001
@@ -2684,10 +2684,10 @@ Function101145: ; 101145
 	inc bc
 	pop af
 	inc a
-	cp $3
+	cp $03
 	jr nz, .asm_10114a
 	pop de
-	ld a, $3
+	ld a, $03
 	ld [de], a
 	inc de
 	ld hl, StringBuffer2 + 6
@@ -2739,7 +2739,7 @@ asm_101184:
 	ld [StringBuffer2 + 4], a
 	ld a, d
 	ld [StringBuffer2 + 5], a
-	ld a, $3
+	ld a, $03
 .asm_1011a0
 	push af
 	ld a, [hli]
@@ -2793,7 +2793,7 @@ Function1011e8: ; 1011e8
 ; 1011f1
 
 Function1011f1: ; 1011f1
-	ld a, $4
+	ld a, $04
 	call GetSRAMBank
 	ld a, [$a60c]
 	ld [wdc41], a
@@ -2890,10 +2890,10 @@ Function10127e: ; 10127e
 	ld a, [wdc5f]
 	and a
 	jr z, .asm_101290
-	cp $1
+	cp $01
 	ld c, $27
 	jr z, .asm_101292
-	cp $2
+	cp $02
 	ld c, $37
 	jr z, .asm_101292
 
@@ -3047,7 +3047,7 @@ Function10138b: ; 10138b
 .asm_10139f
 	sla c
 	ld a, [wcd21]
-	cp $1
+	cp $01
 	jr z, .asm_1013a9
 	inc c
 
@@ -3165,7 +3165,7 @@ Function101418: ; 101418
 ; 10142c
 
 Function10142c: ; 10142c
-	ld a, $1
+	ld a, $01
 	ld [wc305], a
 	callba Function115e18
 	ret
@@ -3253,7 +3253,7 @@ Function1014a6: ; 1014a6
 Function1014b7: ; 1014b7
 	call GetJoypad
 	ld a, [hJoyPressed]
-	and $3
+	and $03
 	jr nz, .asm_1014c5
 	ld hl, wcd42
 	dec [hl]
@@ -3300,7 +3300,7 @@ Function101507: ; 101507
 	ld de, wcd30
 	ld hl, $40
 	ld bc, $40
-	ld a, $2
+	ld a, $02
 	call Function3e32
 	ld a, [wcd25]
 	inc a
@@ -3327,7 +3327,7 @@ Function10152a: ; 10152a
 ; 101537
 
 Function101537: ; 101537
-	ld a, $a
+	ld a, $0a
 	call Function3e32
 	ld a, [wcd25]
 	inc a
@@ -3348,7 +3348,7 @@ Function101544: ; 101544
 Function101557: ; 101557
 	callba Function100641
 	ld hl, wcd53
-	ld a, $8
+	ld a, $08
 	call Function3e32
 	ld a, [wcd25]
 	inc a
@@ -3365,7 +3365,7 @@ Function101571: ; 101571
 	ret c
 	ret z
 	ld a, e
-	cp $1
+	cp $01
 	jr z, .asm_101582
 	ld [wcd2b], a
 	ret
@@ -3380,7 +3380,7 @@ Function101571: ; 101571
 Function10158a: ; 10158a
 	callba Function10064c
 	ld a, [wcd44]
-	cp $a
+	cp $0a
 	jr c, Function10156d
 	ld a, $fb
 	ld [wcd2b], a
@@ -3391,7 +3391,7 @@ Function10159d: ; 10159d
 	ld de, wc608
 	callba Function100edf
 	ld de, wc608
-	ld a, $5
+	ld a, $05
 	ld hl, w5_d800
 	call Function10174c
 	ld a, 0
@@ -3406,7 +3406,7 @@ Function1015be: ; 1015be
 	ld de, wc608
 	callba Function100eed
 	ld de, wc608
-	ld a, $5
+	ld a, $05
 	ld hl, w5_d800
 	call Function10174c
 	ld a, 0
@@ -3421,7 +3421,7 @@ Function1015df: ; 1015df
 	ld de, wc608
 	callba Function100ef4
 	ld de, wc608
-	ld a, $5
+	ld a, $05
 	ld hl, w5_d800
 	call Function10174c
 	ld a, 0
@@ -3436,7 +3436,7 @@ Function101600: ; 101600
 	ld hl, w5_d800
 	ld de, wc608
 	ld bc, $1e0
-	ld a, $5
+	ld a, $05
 	call FarCopyWRAM
 	ld de, wc608
 	callba Function100ee6
@@ -3477,34 +3477,34 @@ Function10163f: ; 10163f
 ; 101649
 
 Function101649: ; 101649
-	ld a, $5
+	ld a, $05
 	ld hl, w5_d800
 	call Function101635
-	ld a, $5
+	ld a, $05
 	ld de, w5_da00
 	call Function10163f
 	ret
 ; 10165a
 
 Function10165a: ; 10165a
-	ld a, $5
+	ld a, $05
 	ld hl, w5_da00
 	call Function101635
 	ret
 ; 101663
 
 Function101663: ; 101663
-	ld a, $5
+	ld a, $05
 	ld hl, w5_d800
 	call Function101635
-	ld a, $5
+	ld a, $05
 	ld de, w5_dc00
 	call Function10163f
 	ret
 ; 101674
 
 Function101674: ; 101674 ; unreferenced
-	ld a, $5
+	ld a, $05
 	ld hl, w5_dc00
 	call Function101635
 	ret
@@ -3525,11 +3525,11 @@ Function10168a: ; 10168a
 
 Function10168e: ; 10168e
 	ld b, 0
-	ld c, $1
+	ld c, $01
 	callba Function10079c
 	ret c
-	ld c, $1
-	ld b, $3
+	ld c, $01
+	ld b, $03
 	callba Function10062d
 	ret c
 	ld a, [wcd26]
@@ -3758,11 +3758,11 @@ Function1017f1: ; 1017f1
 
 Function1017f5: ; 1017f5
 	ld b, 0
-	ld c, $1
+	ld c, $01
 	callba Function10079c
 	ret c
-	ld c, $1
-	ld b, $3
+	ld c, $01
+	ld b, $03
 	callba Function10062d
 	ret c
 	callba Function100382
@@ -3782,9 +3782,9 @@ Function1017f5: ; 1017f5
 
 Function101826: ; 101826
 	ld a, [wcd21]
-	cp $2
+	cp $02
 	jr z, .asm_101833
-	cp $1
+	cp $01
 	jr z, .asm_101844
 	jr .asm_101869
 
@@ -3801,10 +3801,10 @@ Function101826: ; 101826
 	callba Function103654
 	ld a, c
 	ld hl, Unknown_101882
-	cp $1
+	cp $01
 	jr z, .asm_10185b
 	ld hl, Unknown_101895
-	cp $2
+	cp $02
 	jr z, .asm_10185b
 	jr .asm_101869
 
@@ -3829,17 +3829,17 @@ SECTION "ascii 10186f", ROMX, BANK[$40]
 
 Unknown_10186f:
 	db .end - @
-	db $19, $73, $9, $13, "trade_crystal"
+	db $19, $73, $09, $13, "trade_crystal"
 .end	db 0
 
 Unknown_101882:
 	db .end - @
-	db $19, $67, $10, $1, "free__crystal"
+	db $19, $67, $10, $01, "free__crystal"
 .end	db 0
 
 Unknown_101895:
 	db .end - @
-	db $19, $67, $10, $1, "limit_crystal"
+	db $19, $67, $10, $01, "limit_crystal"
 .end	db 0
 ; 1018a8
 
@@ -3849,12 +3849,12 @@ SECTION "bank40_3", ROMX, BANK[$40]
 Function1018a8: ; 1018a8
 	ld hl, wccb5
 	ld de, wcc61
-	ld a, $4
+	ld a, $04
 	call Function101406
 	jr c, .asm_1018d0
 	ld hl, wccb9
 	ld de, wcc65
-	ld a, $6
+	ld a, $06
 	call Function101406
 	jr c, .asm_1018ca
 	ld a, [wcd25]
@@ -3890,7 +3890,7 @@ Function1018e1: ; 1018e1
 ; 1018ec
 
 Function1018ec: ; 1018ec
-	ld a, $a
+	ld a, $0a
 	ld hl, wccb4
 	ld [hli], a
 	ld c, a
@@ -3933,9 +3933,9 @@ Function101913: ; 101913
 	ld a, $90
 	ld [hWY], a
 	ld a, [wcd21]
-	cp $1
+	cp $01
 	jr z, .asm_10193f
-	cp $2
+	cp $02
 	jr z, .asm_101945
 	ld a, $71
 	ld [wcd25], a
@@ -3977,7 +3977,7 @@ Function10196d: ; 10196d
 	set 5, [hl]
 	ld hl, wcd2a
 	set 6, [hl]
-	ld a, $6
+	ld a, $06
 	ld [wccb4], a
 	ld hl, wdc5c
 	ld de, wccb5
@@ -4026,7 +4026,7 @@ Function1019ab: ; 1019ab
 Function1019ee: ; 1019ee
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, $05
 	ld [rSVBK], a
 
 	ld bc, w5_dc0d
@@ -4044,9 +4044,9 @@ Function1019ee: ; 1019ee
 	call CopyBytes
 	ld a, [wcd2f]
 	and a
-	ld a, $2
+	ld a, $02
 	jr z, .asm_101a1e
-	ld a, $1
+	ld a, $01
 
 .asm_101a1e
 	ld [hLinkPlayerNumber], a
@@ -4058,9 +4058,9 @@ Function101a21: ; 101a21
 	ld a, [hl]
 	push af
 	and $20
-	or $1
+	or $01
 	ld [hl], a
-	ld a, $1
+	ld a, $01
 	ld [wc2d7], a
 	callba BattleIntro
 	callba DoBattle
@@ -4075,7 +4075,7 @@ Function101a21: ; 101a21
 ; 101a4f
 
 Function101a4f: ; 101a4f
-	ld a, $1
+	ld a, $01
 	ld [wc2d7], a
 	callba DetermineMobileBattleResult
 	xor a
@@ -4105,7 +4105,7 @@ Function101a97: ; 101a97
 	callba Function115d99
 	ld hl, wcd29
 	set 7, [hl]
-	ld c, $2
+	ld c, $02
 	call Function10142c
 	ld hl, wcd29
 	set 6, [hl]
@@ -4116,7 +4116,7 @@ Function101a97: ; 101a97
 ; 101ab4
 
 Function101ab4: ; 101ab4
-	ld e, $1
+	ld e, $01
 	call Function101ee4
 	ld hl, wcd29
 	set 5, [hl]
@@ -4130,7 +4130,7 @@ Function101ac6: ; 101ac6
 	callba Function115d99
 	ld hl, wcd29
 	set 7, [hl]
-	ld c, $2
+	ld c, $02
 	call Function10142c
 	ld hl, wcd29
 	set 6, [hl]
@@ -4148,11 +4148,11 @@ Function101aed: ; 101aed
 	callba Function115d99
 	ld hl, wcd29
 	set 7, [hl]
-	ld c, $2
+	ld c, $02
 	call Function10142c
 	ld hl, wcd29
 	set 6, [hl]
-	ld a, $1
+	ld a, $01
 	ld [wcd2f], a
 	ld a, [wcd25]
 	inc a
@@ -4163,7 +4163,7 @@ Function101aed: ; 101aed
 Function101b0f: ; 101b0f
 	ld c, 0
 	call Function10142c
-	ld e, $3
+	ld e, $03
 	call Function101ee4
 	ld hl, wcd29
 	set 5, [hl]
@@ -4186,9 +4186,9 @@ Function101b2b: ; 101b2b
 	ld a, 0
 	ld [wcd26], a
 	ld a, [wMenuCursorY]
-	cp $1
+	cp $01
 	jr z, .asm_101b51
-	ld a, $2
+	ld a, $02
 	ld [wcd2b], a
 	ret
 
@@ -4200,9 +4200,9 @@ Function101b2b: ; 101b2b
 ; 101b59
 
 Function101b59: ; 101b59
-	ld c, $2
+	ld c, $02
 	call Function10142c
-	ld e, $2
+	ld e, $02
 	call Function101ee4
 	ld hl, wcd29
 	set 5, [hl]
@@ -4213,9 +4213,9 @@ Function101b59: ; 101b59
 ; 101b70
 
 Function101b70: ; 101b70
-	ld c, $2
+	ld c, $02
 	call Function10142c
-	ld e, $4
+	ld e, $04
 	call Function101ee4
 	ld hl, wcd29
 	set 5, [hl]
@@ -4239,9 +4239,9 @@ Function101b8f: ; 101b8f
 	ld a, 0
 	ld [wcd26], a
 	ld a, [wMenuCursorY]
-	cp $1
+	cp $01
 	jr z, .asm_101bbc
-	ld a, $1
+	ld a, $01
 	ld [wcd2f], a
 	ld a, [wcd25]
 	inc a
@@ -4258,9 +4258,9 @@ Function101b8f: ; 101b8f
 ; 101bc8
 
 Function101bc8: ; 101bc8
-	ld c, $2
+	ld c, $02
 	call Function10142c
-	ld e, $8
+	ld e, $08
 	call Function101ee4
 	call Function102048
 	call Function1013dd
@@ -4283,22 +4283,22 @@ Function101be5: ; 101be5
 	ld a, 0
 	ld [wcd26], a
 	ld a, [wMenuCursorY]
-	cp $1
+	cp $01
 	jr nz, .asm_101c0b
 	ld a, $2a
 	ld [wcd25], a
 	ret
 
 .asm_101c0b
-	ld a, $2
+	ld a, $02
 	ld [wcd2b], a
 	ret
 ; 101c11
 
 Function101c11: ; 101c11
-	ld a, $1
+	ld a, $01
 	ld [wdc5f], a
-	ld e, $9
+	ld e, $09
 	call Function101ee4
 	call Function102048
 	ld hl, wcd29
@@ -4310,9 +4310,9 @@ Function101c11: ; 101c11
 ; 101c2b
 
 Function101c2b: ; 101c2b
-	ld a, $2
+	ld a, $02
 	ld [wdc5f], a
-	ld e, $7
+	ld e, $07
 	call Function101ee4
 	ld hl, wcd29
 	set 5, [hl]
@@ -4332,7 +4332,7 @@ Function101c42: ; 101c42
 ; 101c50
 
 Function101c50: ; 101c50
-	ld e, $a
+	ld e, $0a
 	call Function101ee4
 	ld hl, wcd29
 	set 2, [hl]
@@ -4346,13 +4346,13 @@ Function101c62: ; 101c62
 	callba Function115d99
 	ld hl, wcd29
 	set 7, [hl]
-	ld c, $1
+	ld c, $01
 	call Function10142c
 	xor a
 	ld [wc30d], a
 	ld hl, wcd29
 	res 4, [hl]
-	ld e, $b
+	ld e, $0b
 	call Function101ee4
 	ld hl, wcd29
 	set 5, [hl]
@@ -4373,9 +4373,9 @@ Function101c92: ; 101c92
 ; 101ca0
 
 Function101ca0: ; 101ca0
-	ld c, $2
+	ld c, $02
 	call Function10142c
-	ld e, $c
+	ld e, $0c
 	call Function101ee4
 	ld hl, wcd29
 	set 5, [hl]
@@ -4388,21 +4388,21 @@ Function101ca0: ; 101ca0
 ; 101cbc
 
 Function101cbc: ; 101cbc
-	ld a, $1
+	ld a, $01
 	ld [wcd2b], a
 	ret
 ; 101cc2
 
 Function101cc2: ; 101cc2 ; unreferenced
-	ld a, $2
+	ld a, $02
 	ld [wcd2b], a
 	ret
 ; 101cc8
 
 Function101cc8: ; 101cc8
-	ld a, $1
+	ld a, $01
 	ld [wc314], a
-	ld a, $1
+	ld a, $01
 	ld [wc30d], a
 	ld hl, wcd29
 	set 4, [hl]
@@ -4413,9 +4413,9 @@ Function101cc8: ; 101cc8
 ; 101cdf
 
 Function101cdf: ; 101cdf
-	ld a, $6
+	ld a, $06
 	ld [wc314], a
-	ld a, $1
+	ld a, $01
 	ld [wc30d], a
 	ld hl, wcd29
 	set 4, [hl]
@@ -4426,7 +4426,7 @@ Function101cdf: ; 101cdf
 ; 101cf6
 
 Function101cf6: ; 101cf6
-	ld a, $b
+	ld a, $0b
 	ld [wc314 + 1], a
 	ld a, [wcd25]
 	inc a
@@ -4435,7 +4435,7 @@ Function101cf6: ; 101cf6
 ; 101d03
 
 Function101d03: ; 101d03
-	ld a, $e
+	ld a, $0e
 	ld [wc314 + 1], a
 	ld a, [wcd25]
 	inc a
@@ -4444,7 +4444,7 @@ Function101d03: ; 101d03
 ; 101d10
 
 Function101d10: ; 101d10
-	ld c, $1
+	ld c, $01
 	call Function10142c
 	ld a, [wcd25]
 	inc a
@@ -4452,7 +4452,7 @@ Function101d10: ; 101d10
 	jr Function101d2a
 
 Function101d1e: ; 101d1e
-	ld c, $3
+	ld c, $03
 	call Function10142c
 	ld a, [wcd25]
 	inc a
@@ -4522,13 +4522,13 @@ Function101d7b: ; 101d7b
 ; 101d8d
 
 Unknown_101d8d: ; 101d8d
-	db $15, $15, $1f, $1f, $c, $12, $3a, $3a
+	db $15, $15, $1f, $1f, $0c, $12, $3a, $3a
 ; 101d95
 
 Function101d95: ; 101d95
 	call Function101ee2
 	call LoadStandardMenuDataHeader
-	ld e, $e
+	ld e, $0e
 	call Function101ee4
 	ld hl, wcd29
 	set 5, [hl]
@@ -4552,7 +4552,7 @@ Function101db2: ; 101db2
 	ret
 
 .asm_101dca
-	ld a, $2
+	ld a, $02
 	ld [wcd2b], a
 	ret
 ; 101dd0
@@ -4590,7 +4590,7 @@ Function101de3: ; 101de3
 
 .asm_101e00
 	call Function101ed3
-	ld a, $2
+	ld a, $02
 	ld [wcd2b], a
 	ret
 ; 101e09
@@ -4616,7 +4616,7 @@ Function101e09: ; 101e09
 	ret
 
 .asm_101e2b
-	ld a, $2
+	ld a, $02
 	ld [wcd2b], a
 	ret
 ; 101e31
@@ -4638,13 +4638,13 @@ Function101e39: ; 101e39
 	ret
 
 .asm_101e49
-	ld a, $2
+	ld a, $02
 	ld [wcd2b], a
 	ret
 ; 101e4f
 
 Function101e4f: ; 101e4f
-	ld e, $6
+	ld e, $06
 	call Function101ee4
 	call Function1013d6
 	ld a, [wcd25]
@@ -4669,7 +4669,7 @@ Function101e64: ; 101e64
 .asm_101e77
 	ld hl, wcd29
 	set 5, [hl]
-	ld a, $2
+	ld a, $02
 	ld [wcd2b], a
 	ret
 ; 101e82
@@ -4829,9 +4829,9 @@ Function10202c: ; 10202c
 	callba Function115d99
 	ld hl, wcd29
 	set 7, [hl]
-	ld c, $2
+	ld c, $02
 	call Function10142c
-	ld e, $d
+	ld e, $0d
 	call Function101ee4
 	hlcoord 4, 4
 	call Function100681
@@ -4854,7 +4854,7 @@ Function10204c: ; 10204c
 	jr z, .asm_102067
 	sub $30
 	jr c, .asm_102067
-	cp $a
+	cp $0a
 	jr nc, .asm_102067
 	add $f6
 	ld [hli], a
@@ -4867,7 +4867,7 @@ Function10204c: ; 10204c
 
 Function102068: ; 102068
 	ld hl, wcd53
-	ld c, $8
+	ld c, $08
 .asm_10206d
 	ld a, [de]
 	call Function102080
@@ -4885,8 +4885,8 @@ Function102068: ; 102068
 ; 102080
 
 Function102080: ; 102080
-	and $f
-	cp $f
+	and $0f
+	cp $0f
 	jr z, .asm_10208a
 	add $30
 	ld [hli], a
@@ -4919,7 +4919,7 @@ Function10209c: ; 10209c
 
 Function1020a8: ; 1020a8
 	call Function10209c
-	ld c, $1
+	ld c, $01
 	ld de, wdc42
 	callba Function17a68f
 	ret c
@@ -4941,7 +4941,7 @@ Function1020bf: ; 1020bf
 	call AddNTimes
 	ld d, h
 	ld e, l
-	ld a, $4
+	ld a, $04
 	call GetSRAMBank
 	call Function10208e
 	call Function102068
@@ -4957,59 +4957,59 @@ Function1020bf: ; 1020bf
 Function1020ea: ; 1020ea
 	ld hl, wdc41
 	bit 4, [hl]
-	jr z, .asm_102110
+	jr z, .quit
 	ld hl, wdc41
 	bit 2, [hl]
-	jr nz, .asm_102110
+	jr nz, .quit
 	call Function10218d
 	ld hl, wc608
 	bit 4, [hl]
-	jr z, .asm_102110
+	jr z, .quit
 	ld hl, wc608
 	bit 2, [hl]
-	jr nz, .asm_102110
+	jr nz, .quit
 	call Function102112
-	jr z, .asm_102110
+	jr z, .quit
 	and a
 	ret
 
-.asm_102110
+.quit
 	scf
 	ret
 ; 102112
 
 Function102112: ; 102112
-	ld a, $4
+	ld a, $04
 	call GetSRAMBank
 	ld hl, $a041
-	ld c, $28
-.asm_10211c
+	ld c, 40
+.outer_loop
 	push hl
-	ld de, wc60f
-	ld b, $1f
-.asm_102122
+	ld de, $c60f
+	ld b, 31
+.inner_loop
 	ld a, [de]
 	cp [hl]
-	jr nz, .asm_10212f
+	jr nz, .not_matching
 	inc de
 	inc hl
 	dec b
-	jr nz, .asm_102122
+	jr nz, .inner_loop
 	pop hl
 	xor a
-	jr .asm_10213c
+	jr .done
 
-.asm_10212f
+.not_matching
 	pop hl
-	ld de, $25
+	ld de, 37
 	add hl, de
 	dec c
-	jr nz, .asm_10211c
-	ld a, $1
+	jr nz, .outer_loop
+	ld a, $01
 	and a
-	jr .asm_10213c
+	jr .done ; useless jr
 
-.asm_10213c
+.done
 	push af
 	call CloseSRAM
 	pop af
@@ -5052,12 +5052,12 @@ Function102180: ; 102180
 ; 10218d
 
 Function10218d: ; 10218d
-	ld hl, wdc00
+	ld hl, w5_dc00
 	ld de, wc608
 	ld bc, $26
-	ld a, $5
+	ld a, $05
 	call FarCopyWRAM
-	ld de, wc608 + 1
+	ld de, wc608 + 1 ; useless
 	ret
 ; 10219f
 
@@ -5075,7 +5075,7 @@ Function10219f: ; 10219f
 Function1021b8: ; 1021b8
 	call FadeToMenu
 	call Function10218d
-	ld de, wc60f
+	ld de, wPlayerMoveStruct
 	callba Function8ac70
 	ld a, c
 	ld [StringBuffer1], a
@@ -5206,7 +5206,7 @@ Function102274: ; 102274
 ; 102283
 
 Function102283: ; 102283
-	ld a, $1
+	ld a, $01
 	ld [AttrMapEnd], a
 	ld hl, wcd4b
 	set 0, [hl]
@@ -5223,7 +5223,7 @@ Function10228e: ; 10228e
 
 Function102298: ; 102298
 	ld a, e
-	cp $2
+	cp $02
 	ret nz
 	ld hl, wcd4b
 	bit 6, [hl]
@@ -5246,7 +5246,7 @@ Function102298: ; 102298
 
 .asm_1022c1
 	call Function10304f
-	ld a, $1
+	ld a, $01
 	ld [AttrMapEnd], a
 	ret
 ; 1022ca
@@ -5268,7 +5268,7 @@ Function1022d0: ; 1022d0
 	ld a, 30
 	sub c
 	ld c, a
-	ld b, $3
+	ld b, $03
 	callba Function10062d
 	jr c, .asm_1022f3
 	xor a
@@ -5372,7 +5372,7 @@ Function102387: ; 102387
 	call PlayMusic
 	call Function102d9a
 	call Function102dd3
-	ld a, $1
+	ld a, $01
 	ld [wMenuCursorY], a
 
 Function1023a1: ; 1023a1
@@ -5582,13 +5582,13 @@ Function10250c: ; 10250c
 	call Function1028fc
 	ret nc
 	ld a, [wcd51]
-	cp $f
+	cp $0f
 	jr z, .asm_10254b
 	and a
 	jr z, .asm_102572
 	cp $aa
 	jr z, .asm_102572
-	cp $7
+	cp $07
 	jr nc, .asm_102572
 	ld [wcd4d], a
 	dec a
@@ -5603,7 +5603,7 @@ Function10250c: ; 10250c
 	jr c, .asm_102568
 	ld hl, wcd4b
 	set 1, [hl]
-	ld a, $e
+	ld a, $0e
 	ld [wcd49], a
 	ret
 
@@ -5642,7 +5642,7 @@ Function10250c: ; 10250c
 	ld [wcd4e], a
 	ld a, $3c
 	ld [wcd4f], a
-	ld a, $9
+	ld a, $09
 	ld [wcd49], a
 	ret
 ; 102591
@@ -5664,7 +5664,7 @@ Function102591: ; 102591
 ; 1025b0
 
 Function1025b0: ; 1025b0
-	ld a, $9
+	ld a, $09
 	call Function1028e8
 	ld a, [wcd49]
 	inc a
@@ -5675,7 +5675,7 @@ Function1025b0: ; 1025b0
 Function1025bd: ; 1025bd
 	call Function1028fc
 	ret nc
-	ld a, $4
+	ld a, $04
 	ld [wcd49], a
 	ret
 ; 1025c7
@@ -5684,7 +5684,7 @@ Function1025c7: ; 1025c7
 	call Function102f6d
 	ld hl, wcd4b
 	set 1, [hl]
-	ld a, $f
+	ld a, $0f
 	call Function1028e8
 	ld a, [wcd49]
 	inc a
@@ -5753,7 +5753,7 @@ Function1025ff: ; 1025ff
 
 .d_down
 	ld a, [wMenuCursorY]
-	cp $1
+	cp $01
 	ret nz
 	ld a, $23 ; Function1026b7
 	ld [wcd49], a
@@ -5869,7 +5869,7 @@ Function1026f3: ; 1026f3
 .asm_102702
 	hlcoord 9, 17
 	ld [hl], " "
-	ld a, $1
+	ld a, $01
 	ld [wMenuCursorY], a
 	ld a, $1d ; Function102652
 	ld [wcd49], a
@@ -5928,7 +5928,7 @@ Jumptable_102766: ; 102766
 ; 102770
 
 Function102770: ; 102770
-	ld a, $1
+	ld a, $01
 	ld [wcd4a], a
 
 Function102775: ; 102775
@@ -5955,7 +5955,7 @@ Function10278c: ; 10278c
 	ret
 
 .asm_10279b
-	ld a, $3
+	ld a, $03
 	ld [wcd4a], a
 Function1027a0: ; 1027a0
 	hlcoord 1, 16
@@ -6060,7 +6060,7 @@ Function10283c: ; 10283c
 ; 102862
 
 Function102862: ; 102862
-	ld a, $8
+	ld a, $08
 	call Function1028e8
 	ld a, [wcd49]
 	inc a
@@ -6074,7 +6074,7 @@ Function10286f: ; 10286f
 	ld a, [wcd52]
 	ld [wMenuCursorY], a
 	ld a, [wcd51]
-	cp $8
+	cp $08
 	jr nz, .asm_102886
 	ld a, $15 ; Function1023b5
 	ld [wcd49], a
@@ -6260,7 +6260,7 @@ Function102996: ; 102996
 ; 10299e
 
 Function10299e: ; 10299e
-	ld a, $1
+	ld a, $01
 	ld [wccb4], a
 	ld a, [wcd50]
 	ld [wccb5], a
@@ -6331,14 +6331,14 @@ Function1029fe: ; 1029fe
 	call ExitMenu
 	pop af
 	ld a, [wMenuCursorY]
-	cp $1
+	cp $01
 	jr nz, .asm_102a21
-	ld a, $1
+	ld a, $01
 	and a
 	ret
 
 .asm_102a21
-	ld a, $1
+	ld a, $01
 	and a
 	scf
 	ret
@@ -6361,7 +6361,7 @@ Function102a3b: ; 102a3b
 	ld a, [wcd30]
 	ld [wc74e], a
 	ld hl, PlayerName
-	ld de, wc6e7
+	ld de, wPlayerTrademonSenderName
 	ld bc, NAME_LENGTH
 	call CopyBytes
 	ld a, [wcd4c]
@@ -6474,7 +6474,7 @@ Function102b32: ; 102b32
 	ld a, [wcd4c]
 	dec a
 	ld [CurPartyMon], a
-	ld a, $1
+	ld a, $01
 	ld [wForceEvolution], a
 	callba EvolvePokemon
 	call Function102d9a
@@ -6645,9 +6645,9 @@ Function102c48: ; 102c48
 	call Function102c71
 	call CloseSRAM
 	ld hl, wc608
-	ld de, wda00
+	ld de, w5_da00
 	ld bc, $1e0
-	ld a, $5
+	ld a, $05
 	call FarCopyWRAM
 	ret
 ; 102c71
@@ -6691,15 +6691,15 @@ Function102c87: ; 102c87
 	ld [wJumptableIndex], a
 	ld a, [OTPartyCount]
 	ld [wcf64], a
-	ld a, $5
-	ld hl, wda00
+	ld a, $05
+	ld hl, w5_da00
 	ld de, wc608
 	ld bc, $11a
 	call FarCopyWRAM
 	call Function102cee
-	ld a, $5
+	ld a, $05
 	ld hl, wc608
-	ld de, wda00
+	ld de, w5_da00
 	ld bc, $11a
 	call FarCopyWRAM
 	pop af
@@ -6718,7 +6718,7 @@ Function102cee: ; 102cee
 	call CopyBytes
 	ld a, [wJumptableIndex]
 	ld c, a
-	ld a, $6
+	ld a, $06
 	sub c
 	ret z
 	ld bc, $2f
@@ -6801,11 +6801,11 @@ Function102d48: ; 102d48
 ; 102d9a
 
 Function102d9a: ; 102d9a
-	ld a, $7f
-	ld hl, SpritesEnd
+	ld a, " "
+	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	call ByteFill
-	ld a, $7
+	ld a, $07
 	hlcoord 0, 0, AttrMap
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	call ByteFill
@@ -6823,8 +6823,8 @@ Function102db7: ; 102db7
 
 Function102dc3: ; 102dc3
 	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
+	ld b,  4
+	ld c, 18
 	ld d, h
 	ld e, l
 	callba _LinkTextbox
@@ -6843,10 +6843,10 @@ Function102dd3: ; 102dd3
 ; 102dec
 
 Function102dec: ; 102dec
-	ld hl, Unknown_1032e2
+	ld hl, Palettes_1032e2
 	ld de, UnknOBPals
-	ld bc, $20
-	ld a, $5
+	ld bc, 4 palettes
+	ld a, $05
 	call FarCopyWRAM
 	callba Function49742
 	call SetPalettes
@@ -6856,41 +6856,42 @@ Function102dec: ; 102dec
 
 Function102e07: ; 102e07
 	hlcoord 3, 10
-	ld b, $1
-	ld c, $b
+	ld b,  1
+	ld c, 11
 	ld a, [wBattleMode]
 	and a
-	jr z, .asm_102e19
+	jr z, .link_battle
 	call TextBox
-	jr .asm_102e28
+	jr .okay
 
-.asm_102e19
+.link_battle
+; this is idiotic
 	hlcoord 3, 10
-	ld b, $1
-	ld c, $b
+	ld b,  1
+	ld c, 11
 	ld d, h
 	ld e, l
 	callba _LinkTextbox
 
-.asm_102e28
-	ld de, String_102e32
+.okay
+	ld de, .waiting
 	hlcoord 4, 11
 	call PlaceString
 	ret
 ; 102e32
 
-String_102e32: ; 102e32
+.waiting: ; 102e32
 	db "Waiting...!@"
 ; 102e3e
 
 Function102e3e: ; 102e3e
-	ld de, String_102e48
+	ld de, .CANCEL
 	hlcoord 10, 17
 	call PlaceString
 	ret
 ; 102e48
 
-String_102e48: ; 102e48
+.CANCEL: ; 102e48
 	db "CANCEL@"
 ; 102e4f
 
@@ -6909,16 +6910,16 @@ Function102e4f: ; 102e4f
 	ld [bc], a
 	hlcoord 7, 1
 	ld de, PartySpecies
-	call Function102e86
+	call .PlaceSpeciesNames
 	hlcoord 7, 9
 	ld de, OTPartySpecies
-	call Function102e86
+	call .PlaceSpeciesNames
 	ret
 ; 102e86
 
-Function102e86: ; 102e86
+.PlaceSpeciesNames: ; 102e86
 	ld c, 0
-.asm_102e88
+.count_loop
 	ld a, [de]
 	cp $ff
 	ret z
@@ -6935,11 +6936,11 @@ Function102e86: ; 102e86
 	pop de
 	inc de
 	pop hl
-	ld bc, $14
+	ld bc, SCREEN_WIDTH
 	add hl, bc
 	pop bc
 	inc c
-	jr .asm_102e88
+	jr .count_loop
 ; 102ea8
 
 Function102ea8: ; 102ea8
@@ -6991,49 +6992,49 @@ String_102ef4: ; 102ef4
 
 Function102f15: ; 102f15
 	call Function102dc3
-	ld de, String_102f22
+	ld de, .TooBadTheTradeWasCanceled
 	hlcoord 1, 14
 	call PlaceString
 	ret
 ; 102f22
 
-String_102f22: ; 102f22
+.TooBadTheTradeWasCanceled: ; 102f22
 	db "こうかんを キャンセルしました@"
 ; 102f32
 
 Function102f32: ; 102f32
 	call Function102dc3
-	ld de, String_102f3f
+	ld de, .TradeCompleted
 	hlcoord 1, 14
 	call PlaceString
 	ret
 ; 102f3f
 
-String_102f3f: ; 102f3f
+.TradeCompleted: ; 102f3f
 	db "Trade completed!@"
 ; 102f50
 
 Function102f50: ; 102f50
 	call Function102dc3
-	ld de, String_102f5d
+	ld de, .PleaseWait
 	hlcoord 1, 14
 	call PlaceString
 	ret
 ; 102f5d
 
-String_102f5d: ; 102f5d
+.PleaseWait: ; 102f5d
 	db "しょうしょう おまち ください@"
 ; 102f6d
 
 Function102f6d: ; 102f6d
 	call Function102dc3
-	ld de, String_102f7a
+	ld de, .Finished
 	hlcoord 1, 14
 	call PlaceString
 	ret
 ; 102f7a
 
-String_102f7a: ; 102f7a
+.Finished: ; 102f7a
 	db "しゅうりょう します@"
 ; 102f85
 
@@ -7059,8 +7060,8 @@ Function102f85: ; 102f85
 ; 102fb2
 
 String_102fb2: ; 102fb2
-	db   "あいてがわ", $4a, "えらんだ "
-	next "いじょう", $4a, "あるようです!!"
+	db   "あいてがわ<PKMN>えらんだ "
+	next "いじょう<PKMN>あるようです!!"
 	db   "@"
 ; 102fcc
 
@@ -7077,8 +7078,8 @@ Function102fce: ; 102fce
 ; 102fdb
 
 String_102fdb: ; 102fdb
-	db   "あいてがわ", $25, "せんたくに"
-	next "いじょう", $4a, "あるようです!!"
+	db   "あいてがわ%せんたくに"
+	next "いじょう<PKMN>あるようです!!"
 	done
 ; 102ff5
 
@@ -7132,7 +7133,7 @@ Function10305d: ; 10305d
 ; 10306e
 
 Function10306e: ; 10306e
-	ld a, $1
+	ld a, $01
 	ld [hOAMUpdate], a
 	call ClearSprites
 	ld de, Sprites
@@ -7143,11 +7144,11 @@ Function10306e: ; 10306e
 ; 10307f
 
 Function10307f: ; 10307f
-	ld c, $2
+	ld c, $02
 	ld hl, wcd4b
 	bit 7, [hl]
 	jr z, .asm_10308a
-	ld c, $1
+	ld c, $01
 
 .asm_10308a
 	ld hl, wcf45
@@ -7209,7 +7210,7 @@ endr
 	ld bc, Unknown_103112
 	add hl, bc
 	ld b, $30
-	ld c, $8
+	ld c, $08
 .asm_1030de
 	push hl
 	ld hl, wcd4b
@@ -7217,7 +7218,7 @@ endr
 	pop hl
 	ld a, 0
 	jr z, .asm_1030eb
-	ld a, $5
+	ld a, $05
 .asm_1030eb
 
 	add [hl]
@@ -7238,7 +7239,7 @@ endr
 	inc hl
 	ld [de], a
 	inc de
-	ld a, $a
+	ld a, $0a
 	add [hl]
 	inc hl
 	ld [de], a
@@ -7251,7 +7252,7 @@ endr
 	inc de
 	pop hl
 	ld a, b
-	add $8
+	add $08
 	ld b, a
 	dec c
 	jr nz, .asm_1030de
@@ -7259,77 +7260,89 @@ endr
 ; 103112
 
 Unknown_103112: ; 103112
-	db $0, $0, $0, $0, $0, $0, $0, $
-	db $0, $0, $0, $0, $0, $0, $0, $
-	db $0, $0, $0, $0, $0, $0, $0, $
-	db $0, $0, $0, $0, $0, $0, $0, $
-	db $0, $0, $0, $0, $0, $0, $0, $
-	db $0, $0, $0, $0, $0, $0, $0, $
-	db $0, $0, $0, $0, $0, $0, $0, $
-	db $0, $0, $0, $0, $0, $0, $0, $
-	db $1, $0, $0, $0, $0, $0, $0, $
-	db $2, $1, $0, $0, $0, $0, $0, $
-	db $3, $2, $1, $0, $0, $0, $0, $
-	db $4, $3, $2, $1, $0, $0, $0, $
-	db $4, $4, $3, $2, $1, $0, $0, $
-	db $4, $4, $4, $3, $2, $1, $0, $
-	db $4, $4, $4, $4, $3, $2, $1, $
-	db $4, $4, $4, $4, $4, $3, $2, $1
-	db $4, $4, $4, $4, $4, $4, $3, $2
-	db $4, $4, $4, $4, $4, $4, $4, $3
-	db $4, $4, $4, $4, $4, $4, $4, $4
-	db $4, $4, $4, $4, $4, $4, $4, $4
-	db $4, $4, $4, $4, $4, $4, $4, $4
-	db $4, $4, $4, $4, $4, $4, $4, $4
-	db $4, $4, $4, $4, $4, $4, $4, $4
-	db $4, $4, $4, $4, $4, $4, $4, $4
-	db $4, $4, $4, $4, $4, $4, $4, $4
-	db $4, $4, $4, $4, $4, $4, $4, $4
-	db $3, $4, $4, $4, $4, $4, $4, $4
-	db $2, $3, $4, $4, $4, $4, $4, $4
-	db $1, $2, $3, $4, $4, $4, $4, $4
-	db $0, $1, $2, $3, $4, $4, $4, $4
-	db $0, $0, $1, $2, $3, $4, $4, $4
-	db $0, $0, $0, $1, $2, $3, $4, $4
-	db $0, $0, $0, $0, $1, $2, $3, $4
-	db $0, $0, $0, $0, $0, $1, $2, $3
-	db $0, $0, $0, $0, $0, $0, $1, $2
-	db $0, $0, $0, $0, $0, $0, $0, $1
-	db $0, $0, $0, $0, $0, $0, $0, $
-	db $0, $0, $0, $0, $0, $0, $0, $
-	db $0, $0, $0, $0, $0, $0, $0, $
-	db $0, $0, $0, $0, $0, $0, $0, $
-	db $0, $0, $0, $0, $0, $0, $0, $
-	db $0, $0, $0, $0, $0, $0, $0, $
-	db $0, $0, $0, $0, $0, $0, $0, $
-	db $0, $0, $0, $0, $0, $0, $0, $
-	db $0, $0, $0, $0, $0, $0, $0, $
+	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 $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 $00, $00, $00, $00, $00, $00, $00, $00
+	db $00, $00, $00, $00, $00, $00, $00, $00
+	db $01, $00, $00, $00, $00, $00, $00, $00
+	db $02, $01, $00, $00, $00, $00, $00, $00
+	db $03, $02, $01, $00, $00, $00, $00, $00
+	db $04, $03, $02, $01, $00, $00, $00, $00
+	db $04, $04, $03, $02, $01, $00, $00, $00
+	db $04, $04, $04, $03, $02, $01, $00, $00
+	db $04, $04, $04, $04, $03, $02, $01, $00
+	db $04, $04, $04, $04, $04, $03, $02, $01
+	db $04, $04, $04, $04, $04, $04, $03, $02
+	db $04, $04, $04, $04, $04, $04, $04, $03
+	db $04, $04, $04, $04, $04, $04, $04, $04
+	db $04, $04, $04, $04, $04, $04, $04, $04
+	db $04, $04, $04, $04, $04, $04, $04, $04
+	db $04, $04, $04, $04, $04, $04, $04, $04
+	db $04, $04, $04, $04, $04, $04, $04, $04
+	db $04, $04, $04, $04, $04, $04, $04, $04
+	db $04, $04, $04, $04, $04, $04, $04, $04
+	db $04, $04, $04, $04, $04, $04, $04, $04
+	db $03, $04, $04, $04, $04, $04, $04, $04
+	db $02, $03, $04, $04, $04, $04, $04, $04
+	db $01, $02, $03, $04, $04, $04, $04, $04
+	db $00, $01, $02, $03, $04, $04, $04, $04
+	db $00, $00, $01, $02, $03, $04, $04, $04
+	db $00, $00, $00, $01, $02, $03, $04, $04
+	db $00, $00, $00, $00, $01, $02, $03, $04
+	db $00, $00, $00, $00, $00, $01, $02, $03
+	db $00, $00, $00, $00, $00, $00, $01, $02
+	db $00, $00, $00, $00, $00, $00, $00, $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
+	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 $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
 ; 10327a
 
 Unknown_10327a: ; 10327a
-	db $0, $0, $0, $
-	db $0, $0, $1, $
-	db $0, $0, $2, $
-	db $0, $0, $3, $
-	db $0, $0, $1, $1
-	db $0, $0, $0, $
-	db $0, $0, $1, $2
-	db $0, $0, $2, $2
-	db $0, $0, $3, $2
-	db $0, $0, $1, $3
+	db $00, $00, $00, $00
+	db $00, $00, $01, $00
+	db $00, $00, $02, $00
+	db $00, $00, $03, $00
+	db $00, $00, $01, $01
+	db $00, $00, $00, $00
+	db $00, $00, $01, $02
+	db $00, $00, $02, $02
+	db $00, $00, $03, $02
+	db $00, $00, $01, $03
 
 GFX_1032a2:
 INCBIN "gfx/unknown/1032a2.2bpp"
 
-Unknown_1032e2:
-	db $0, $0, $ff, $1f
-	db $f4, $1b, $8d, $42
-	db $0, $0, $67, $45
-	db $0, $0, $0, $
-	db $0, $0, $1f, $13
-	db $99, $1, $ff, $10
-	db $0, $0, $19, $
-	db $0, $0, $0, $
+Palettes_1032e2:
+	RGB  0,  0,  0
+	RGB 31, 31,  7
+	RGB 20, 31,  6
+	RGB 13, 20, 16
+
+	RGB  0,  0,  0
+	RGB  7, 11, 17
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+
+	RGB  0,  0,  0
+	RGB 31, 24,  4
+	RGB 25, 12,  0
+	RGB 31,  7,  4
+
+	RGB  0,  0,  0
+	RGB 25,  0,  0
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+
 ; 103302
 
 Function103302: ; 103302
@@ -7345,7 +7358,7 @@ Function103309: ; 103309
 	ld bc, 10
 	xor a
 	call ByteFill
-	ld a, $4
+	ld a, $04
 	call GetSRAMBank
 	ld a, [wdc41]
 	ld [$a60c], a
@@ -7378,7 +7391,7 @@ Function103309: ; 103309
 	call Function1034be
 	call UpdateSprites
 	callba Function104000
-	ld a, $1
+	ld a, $01
 	ld [wd1f0], a
 	call Function10339a
 	ret
@@ -7398,7 +7411,7 @@ Function103362: ; 103362
 	ld hl, Buffer2
 	bit 6, [hl]
 	jr z, .asm_103398
-	ld a, $4
+	ld a, $04
 	call GetSRAMBank
 	ld a, [Buffer1]
 	ld [$a60c], a
@@ -7448,7 +7461,7 @@ Function1033af: ; 1033af
 	ld a, [wd1f0]
 	dec a
 	ld [wd1f0], a
-	cp $1
+	cp $01
 	ret nc
 	ld a, [wd1ee]
 	ld [wd1f0], a
@@ -7462,7 +7475,7 @@ Function1033af: ; 1033af
 	ld a, [wd1ee]
 	cp c
 	ret nc
-	ld a, $1
+	ld a, $01
 	ld [wd1f0], a
 	ret
 
@@ -7474,7 +7487,7 @@ Function1033af: ; 1033af
 
 .a
 	ld a, [wd1f3]
-	cp $3
+	cp $03
 	jr nz, .asm_103412
 	ld de, SFX_TRANSACTION
 	call PlaySFX
@@ -7488,7 +7501,7 @@ Function1033af: ; 1033af
 .right
 .asm_103412
 	ld a, [wd1f3]
-	cp $3
+	cp $03
 	ret z
 	ld de, SFX_PUSH_BUTTON
 	call PlaySFX
@@ -7511,12 +7524,12 @@ Function10342c: ; 10342c
 
 Function10343c: ; 10343c
 	ld a, [wd1f3]
-	cp $2
+	cp $02
 	jr nz, .asm_103452
 	ld bc, 1
 	call Function1034f7
 	ld c, $12
-	ld b, $1
+	ld b, $01
 	call Function1034e0
 	jr .asm_10345f
 
@@ -7524,7 +7537,7 @@ Function10343c: ; 10343c
 	ld bc, $ffed
 	call Function1034f7
 	ld c, $12
-	ld b, $2
+	ld b, $02
 	call Function1034e0
 
 .asm_10345f
@@ -7558,7 +7571,7 @@ Function103487: ; 103487
 Function103490: ; 103490
 	hlcoord 0, 15
 	ld c, $14
-	ld b, $3
+	ld b, $03
 	call Function1034e0
 	ld bc, 6
 	call Function10350f
@@ -7580,7 +7593,7 @@ Function1034a7: ; 1034a7
 ; 1034be
 
 Function1034be: ; 1034be
-	ld a, $1
+	ld a, $01
 	ld [wd1f2], a
 	ld hl, wd1ec
 	ld a, [hli]
@@ -7611,7 +7624,7 @@ Function1034e0: ; 1034e0
 	ld bc, AttrMap - TileMap
 	add hl, bc
 	pop bc
-	ld a, $6
+	ld a, $06
 	call FillBoxWithByte
 	ret
 ; 1034f1
@@ -7652,17 +7665,17 @@ Unknown_103522: ; 103522
 	dw String_103598
 	dw String_1035a0
 	dw String_10355f
-	db $1
+	db $01
 	dw String_10354f
 	dw String_1035a8
 	dw String_1035b1
 	dw String_103571
-	db $2
+	db $02
 	dw String_103557
 	dw String_1035ba
 	dw String_1035bd
 	dw String_103585
-	db $4
+	db $04
 	dw String_103545
 	dw String_1035c1
 	dw String_1035c1
@@ -7708,28 +7721,28 @@ Unknown_1035d7: ; 1035d7
 
 Unknown_1035e7: ; 1035e7
 	dwcoord 0, 6
-	db $12, $7, $7
+	db $12, $07, $07
 	dw .this
 .this
 	db 4, 2, 1, 0, 3
 
 Unknown_1035f3: ; 1035f3
 	dwcoord 0, 7
-	db $12, $6, $9
+	db $12, $06, $09
 	dw .this
 .this
 	db 3, 2, 1, 3
 
 Unknown_1035fe: ; 1035fe
 	dwcoord 0, 9
-	db $12, $4, $b
+	db $12, $04, $0b
 	dw .this
 .this
 	db 2, 0, 3
 
 Unknown_103608: ; 103608
 	dwcoord 0, 9
-	db $12, $4, $b
+	db $12, $04, $0b
 	dw .this
 .this
 	db 2, 2, 3
@@ -7738,8 +7751,8 @@ Unknown_103608: ; 103608
 AskMobileOrCable: ; 103612
 	ld hl, MenuDataHeader_103640
 	call LoadMenuDataHeader
-	ld a, [wdc40]
-	and $f
+	ld a, [wMobileOrCable_LastSelection]
+	and $0f
 	jr z, .skip_load
 	ld [wMenuCursorBuffer], a
 
@@ -7750,10 +7763,10 @@ AskMobileOrCable: ; 103612
 	ld a, [wMenuCursorY]
 	ld [ScriptVar], a
 	ld c, a
-	ld a, [wdc40]
+	ld a, [wMobileOrCable_LastSelection]
 	and $f0
 	or c
-	ld [wdc40], a
+	ld [wMobileOrCable_LastSelection], a
 	ret
 
 .pressed_b
@@ -7782,13 +7795,13 @@ Function103654: ; 103654
 	jr nz, .asm_103666
 	ld hl, wcd2a
 	res 5, [hl]
-	ld c, $2
+	ld c, $02
 	ret
 
 .asm_103666
 	ld hl, wcd2a
 	set 5, [hl]
-	ld c, $1
+	ld c, $01
 	ret
 ; 10366e
 
@@ -7806,7 +7819,7 @@ Mobile_SelectThreeMons: ; 10366e
 	jr .asm_103696
 
 .asm_103690
-	ld a, $1
+	ld a, $01
 	ld [ScriptVar], a
 	ret
 
@@ -7816,7 +7829,7 @@ Mobile_SelectThreeMons: ; 10366e
 	ret
 
 .asm_10369b
-	ld hl, wdc40
+	ld hl, wMobileOrCable_LastSelection
 	bit 7, [hl]
 	set 7, [hl]
 	jr nz, .asm_1036b5
@@ -7836,11 +7849,11 @@ Mobile_SelectThreeMons: ; 10366e
 	call ExitMenu
 	jr c, .asm_1036f4
 	ld a, [wMenuCursorY]
-	cp $1
+	cp $01
 	jr z, .asm_1036d9
-	cp $2
+	cp $02
 	jr z, .asm_1036f4
-	cp $3
+	cp $03
 	jr z, .asm_1036ec
 	jr .asm_1036b5
 
@@ -7851,7 +7864,7 @@ Mobile_SelectThreeMons: ; 10366e
 	jr .asm_1036f4
 
 .asm_1036e6
-	ld a, $1
+	ld a, $01
 	ld [ScriptVar], a
 	ret
 
@@ -7873,7 +7886,7 @@ Function1036f9: ; 1036f9
 ; 103700
 
 Function103700: ; 103700
-	ld c, $a
+	ld c, $0a
 	ld hl, SwarmFlags
 	bit 4, [hl]
 	jr z, .asm_10370f
@@ -7883,11 +7896,11 @@ Function103700: ; 103700
 	ld a, c
 	ld [StringBuffer2], a
 	ld a, [StringBuffer2]
-	cp $5
+	cp $05
 	jr nc, .asm_103724
-	cp $2
+	cp $02
 	jr nc, .asm_10372c
-	cp $1
+	cp $01
 	jr nc, .asm_103734
 	jr .asm_10373c
 
@@ -7975,7 +7988,7 @@ Function10378c: ; 10378c
 	ld hl, SwarmFlags
 	bit 4, [hl]
 	jr nz, .already_set
-	ld c, $1
+	ld c, $01
 	ld hl, SwarmFlags
 	set 4, [hl]
 
@@ -7984,7 +7997,7 @@ Function10378c: ; 10378c
 	callba Link_SaveGame
 	pop bc
 	jr c, .failed_to_save
-	ld a, $1
+	ld a, $01
 	ld [ScriptVar], a
 	ld a, c
 	and a
@@ -8013,7 +8026,7 @@ Function1037c2: ; 1037c2
 	call PrintText
 	call YesNoBox
 	jr c, .nope
-	ld a, $1
+	ld a, $01
 	ld [ScriptVar], a
 	ret
 
@@ -8046,12 +8059,12 @@ Function1037eb: ; 1037eb
 	ld a, [wdc60]
 	and a
 	jr nz, .asm_103813
-	ld a, $1
+	ld a, $01
 	ld [ScriptVar], a
 	ret
 
 .asm_103813
-	ld a, $2
+	ld a, $02
 	ld [ScriptVar], a
 	ret
 ; 103819
@@ -8072,7 +8085,7 @@ Function103823: ; 103823
 	jr nz, .asm_103838
 	callba Function1008a6
 	ld a, c
-	cp $1
+	cp $01
 	jr c, .asm_10383a
 
 .asm_103838
@@ -8085,7 +8098,7 @@ Function103823: ; 103823
 ; 10383c
 
 Function10383c: ; 10383c
-	ld a, $1
+	ld a, $01
 	ld [wdc60], a
 	xor a
 	ld hl, wdc5c
@@ -8107,7 +8120,7 @@ Function10383c: ; 10383c
 	ret
 
 .asm_103870
-	ld a, $1
+	ld a, $01
 	ld [ScriptVar], a
 	ret
 ; 103876
diff --git a/misc/mobile_42.asm b/misc/mobile_42.asm
index f5ed53c81..950a3f0c2 100644
--- a/misc/mobile_42.asm
+++ b/misc/mobile_42.asm
@@ -1242,9 +1242,9 @@ asm_108966
 	call MobileTradeAnim_ClearTilemap
 	hlcoord 7, 2
 	xor a
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 	call WaitBGMap
 	ret
 ; 10898a
@@ -1256,9 +1256,9 @@ Function10898a: ; 10898a
 	call MobileTradeAnim_ClearTilemap
 	hlcoord 7, 2
 	xor a
-	ld [hFillBox], a
+	ld [hGraphicStartTile], a
 	lb bc, 7, 7
-	predef FillBox
+	predef PlaceGraphic
 	call WaitBGMap
 	ret
 ; 1089a8
diff --git a/misc/mobile_45.asm b/misc/mobile_45.asm
index 7ee14da4f..39d1f46ed 100644
--- a/misc/mobile_45.asm
+++ b/misc/mobile_45.asm
@@ -134,9 +134,9 @@ Function114243:: ; 114243
 	ld a, SRAM_ENABLE
 	ld [MBC3SRamEnable], a
 	ld a, [hFF8C]
-	push af ; if [wdc02] == 0, this is popped to pc.
+	push af ; if [$dc02] == 0, this is popped to pc.
 	push de
-	ld a, [wdc02]
+	ld a, [$dc02]
 	add a
 	ld e, a
 	ld d, 0
@@ -151,7 +151,7 @@ Function114243:: ; 114243
 ; 11425c
 
 Function11425c: ; 11425c
-	ld [wdc02], a
+	ld [$dc02], a
 	pop af
 rept 2
 	ld [hFF8C], a
@@ -161,8 +161,7 @@ endr
 
 ; 114268
 
-Function114268: ; 114268
-	ret
+Function114268: mobile
 
 ; 114269
 
@@ -170,10 +169,10 @@ Function114269: ; 114269
 	ld h, d
 	ld l, e
 	xor a
-	ld [wdc02], a
-	ld [wdc03], a
+	ld [$dc02], a
+	ld [$dc03], a
 	ld a, [hli]
-	ld [wdc00], a
+	ld [$dc00], a
 	ld [hFF8C], a
 	ld [MBC3SRamBank], a
 	ld e, [hl]
@@ -188,7 +187,7 @@ Function114269: ; 114269
 	and a
 	jr z, .asm_1142a4
 	ld h, a
-	ld a, [wdc03]
+	ld a, [$dc03]
 	and a
 	jr nz, .asm_114292
 	ld a, h
@@ -200,7 +199,7 @@ Function114269: ; 114269
 	cp $d
 	jr z, .asm_1142bb
 	xor a
-	ld [wdc02], a
+	ld [$dc02], a
 .asm_11429b
 	inc e
 	call z, Function114333
@@ -210,7 +209,7 @@ Function114269: ; 114269
 	jr nz, .asm_114282
 
 .asm_1142a4
-	ld a, [wdc03]
+	ld a, [$dc03]
 	and a
 	jr nz, .asm_114303
 	ld b, $80
@@ -220,7 +219,7 @@ Function114269: ; 114269
 	ld b, $81
 
 .asm_1142b0
-	ld a, [wdc00]
+	ld a, [$dc00]
 	ld c, a
 	ld a, $1
 	ld h, d
@@ -238,7 +237,7 @@ Function114269: ; 114269
 	jr z, .asm_1142a4
 	ld a, [de]
 	ld h, a
-	ld a, [wdc03]
+	ld a, [$dc03]
 	and a
 	jr nz, .asm_1142d4
 	ld a, h
@@ -249,14 +248,14 @@ Function114269: ; 114269
 	ld a, h
 	cp $a
 	jr nz, .asm_1142ae
-	ld a, [wdc03]
+	ld a, [$dc03]
 	and a
 	jr nz, .asm_11430d
-	ld a, [wdc02]
+	ld a, [$dc02]
 	and a
 	jr nz, .asm_114309
 	ld a, $1
-	ld [wdc02], a
+	ld [$dc02], a
 	inc e
 	call z, Function114333
 	dec bc
@@ -282,14 +281,14 @@ Function114269: ; 114269
 
 .asm_114309
 	xor a
-	ld [wdc02], a
+	ld [$dc02], a
 
 .asm_11430d
-	ld a, [wdc02]
+	ld a, [$dc02]
 	and a
 	jr nz, .asm_1142fe
 	ld a, $1
-	ld [wdc03], a
+	ld [$dc03], a
 	inc e
 	call z, Function114333
 	dec bc
@@ -302,14 +301,14 @@ Function114269: ; 114269
 	cp $2e
 	jp nz, .asm_114282
 	ld a, $1
-	ld [wdc02], a
+	ld [$dc02], a
 	jp .asm_11429b
 
 ; 114333
 
 Function114333: ; 114333
 	push bc
-	ld bc, wdc00
+	ld bc, $dc00
 	call Function115d80
 	pop bc
 	ret
@@ -348,7 +347,7 @@ Function11433c: ; 11433c
 
 .asm_114360
 	ld a, h
-	ld [wdc03], a
+	ld [$dc03], a
 	pop hl
 	push bc
 	push de
@@ -373,14 +372,14 @@ Function11433c: ; 11433c
 .asm_114381
 	pop de
 	pop bc
-	ld a, [wdc03]
-	ld [wdc00], a
+	ld a, [$dc03]
+	ld [$dc00], a
 	ld [hFF8C], a
 	ld [MBC3SRamBank], a
 	call Function114c0b
 	ld hl, String_114004
 .asm_114394
-	ld de, wdc24
+	ld de, $dc24
 .asm_114397
 	ld a, [hli]
 	and a
@@ -493,7 +492,7 @@ Function1143f3: ; 1143f3
 
 Function114412: ; 114412
 	ld a, c
-	ld [wdc00], a
+	ld [$dc00], a
 	ld [hFF8C], a
 	ld [MBC3SRamBank], a
 	ld hl, Unknown_11417f
@@ -528,8 +527,8 @@ Function114412: ; 114412
 	jr z, .asm_1144b8
 
 .asm_11444a
-	ld a, [wdc00]
-	ld [wdc02], a
+	ld a, [$dc00]
+	ld [$dc02], a
 	ld a, [de]
 	and a
 	jr z, .asm_1144c2
@@ -595,7 +594,7 @@ Function114412: ; 114412
 	jr z, .asm_114486
 	ld d, h
 	ld e, l
-	ld a, [wdc02]
+	ld a, [$dc02]
 	ld h, a
 	xor a
 	ret
@@ -624,7 +623,7 @@ Function114412: ; 114412
 
 Function1144c8: ; 1144c8
 	push bc
-	ld bc, wdc00
+	ld bc, $dc00
 	call Function115d80
 	pop bc
 	ret
@@ -654,10 +653,10 @@ endr
 	ld [hl], a
 	xor a
 	ld [BigDoll], a
-	ld [wdc17], a
+	ld [$dc17], a
 	ld a, $2
-	ld [wdc0e], a
-	ld hl, wdc03
+	ld [$dc0e], a
+	ld hl, $dc03
 	ld c, [hl]
 	inc hl
 	ld e, [hl]
@@ -669,7 +668,7 @@ endr
 	and a
 	jr z, .asm_114511
 	ld a, $1
-	ld [wdc0d], a
+	ld [$dc0d], a
 	call Function1146fa
 	and a
 	jr nz, .asm_11455b
@@ -680,7 +679,7 @@ endr
 	and a
 	jr nz, .asm_11455b
 	ld a, $2
-	ld [wdc0d], a
+	ld [$dc0d], a
 
 .asm_11451c
 	pop hl
@@ -691,7 +690,7 @@ endr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	ld a, [wdc0d]
+	ld a, [$dc0d]
 	ld [de], a
 	ld b, $0
 	ld a, [BigDoll]
@@ -700,12 +699,12 @@ endr
 	ld b, $1
 
 .asm_114537
-	ld hl, wdc06
+	ld hl, $dc06
 	ld a, [hl]
 	ld [wCurrentMapSignpostCount], a
 	ld [hFF8C], a
 	ld [MBC3SRamBank], a
-	ld hl, wdc09
+	ld hl, $dc09
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -732,7 +731,7 @@ endr
 ; 114561
 
 Function114561: ; 114561
-	ld hl, wdc03
+	ld hl, $dc03
 	ld a, [de]
 	ld [hli], a
 	inc de
@@ -764,13 +763,13 @@ Function114576: ; 114576
 	and a
 	jr nz, .asm_1145b4
 	ld a, h
-	ld [wdc00], a
+	ld [$dc00], a
 	ld [hFF8C], a
 	ld [MBC3SRamBank], a
 	push hl
 	push de
 	push bc
-	ld hl, wdc24
+	ld hl, $dc24
 	call Function115d53
 	call Function1145c5
 	pop bc
@@ -782,7 +781,7 @@ Function114576: ; 114576
 	and a
 	jr nz, .asm_1145ba
 	ld a, h
-	ld [wdc00], a
+	ld [$dc00], a
 	ld [hFF8C], a
 	ld [MBC3SRamBank], a
 	ld hl, String_114218
@@ -811,7 +810,7 @@ Function114576: ; 114576
 ; 1145c5
 
 Function1145c5: ; 1145c5
-	ld hl, wdc24
+	ld hl, $dc24
 	ld de, String_11421e
 	ld c, $0
 .asm_1145cd
@@ -905,7 +904,7 @@ Function1145c5: ; 1145c5
 ; 11463c
 
 Function11463c: ; 11463c
-	ld a, [wdc00]
+	ld a, [$dc00]
 	push af
 	push de
 	ld hl, $ddc8
@@ -958,7 +957,7 @@ Function11463c: ; 11463c
 .asm_11468a
 	pop de
 	pop af
-	ld [wdc00], a
+	ld [$dc00], a
 	ld [hFF8C], a
 	ld [MBC3SRamBank], a
 	xor a
@@ -970,7 +969,7 @@ Function11463c: ; 11463c
 
 Function11469b: ; 11469b
 	push bc
-	ld bc, wdc00
+	ld bc, $dc00
 	call Function115d80
 	pop bc
 	ret
@@ -981,9 +980,9 @@ Function1146a4: ; 1146a4
 	call Function114867
 	and a
 	jr nz, .asm_1146e4
-	ld hl, wdc03
+	ld hl, $dc03
 	ld a, [hli]
-	ld [wdc00], a
+	ld [$dc00], a
 	ld [hFF8C], a
 	ld [MBC3SRamBank], a
 	ld e, [hl]
@@ -995,9 +994,9 @@ Function1146a4: ; 1146a4
 	call Function1148c2
 	and a
 	jr nz, .asm_1146e4
-	ld hl, wdc03
+	ld hl, $dc03
 	ld a, [hli]
-	ld [wdc00], a
+	ld [$dc00], a
 	ld [hFF8C], a
 	ld [MBC3SRamBank], a
 	ld e, [hl]
@@ -1021,7 +1020,7 @@ endr
 	jr .asm_1146f7
 
 .asm_1146e8
-	ld a, [wdc17]
+	ld a, [$dc17]
 	and a
 	jr z, .asm_1146f5
 	ld a, $1
@@ -1041,9 +1040,9 @@ Function1146fa: ; 1146fa
 	call Function114867
 	and a
 	jp nz, .asm_11478a
-	ld hl, wdc03
+	ld hl, $dc03
 	ld a, [hli]
-	ld [wdc00], a
+	ld [$dc00], a
 	ld [hFF8C], a
 	ld [MBC3SRamBank], a
 	ld e, [hl]
@@ -1056,8 +1055,8 @@ Function1146fa: ; 1146fa
 	and a
 	jp nz, .asm_11478a
 	ld a, $1
-	ld [wdc0e], a
-	ld a, [wdc00]
+	ld [$dc0e], a
+	ld a, [$dc00]
 	ld [hFF8C], a
 	ld [MBC3SRamBank], a
 	ld a, $1
@@ -1069,7 +1068,7 @@ Function1146fa: ; 1146fa
 	call Function114843
 	cp $1
 	jr nz, .asm_114749
-	ld a, [wdc17]
+	ld a, [$dc17]
 	and a
 	jr z, .asm_114794
 	ld a, $1
@@ -1082,9 +1081,9 @@ Function1146fa: ; 1146fa
 	ld a, [BigDoll]
 	and a
 	jr nz, .asm_114786
-	ld hl, wdc03
+	ld hl, $dc03
 	ld a, [hli]
-	ld [wdc00], a
+	ld [$dc00], a
 	ld [hFF8C], a
 	ld [MBC3SRamBank], a
 	ld e, [hl]
@@ -1093,7 +1092,7 @@ Function1146fa: ; 1146fa
 	call Function1147cd
 	and a
 	jr nz, .asm_1147b7
-	ld a, [wdc0e]
+	ld a, [$dc0e]
 	cp $3
 	jr nz, .asm_114773
 rept 2
@@ -1104,9 +1103,9 @@ endr
 	call Function1149cc
 	and a
 	jr nz, .asm_11478a
-	ld a, [wdc0d]
+	ld a, [$dc0d]
 	inc a
-	ld [wdc0d], a
+	ld [$dc0d], a
 	ld a, [BigDoll]
 	and a
 	jr z, .asm_114799
@@ -1120,7 +1119,7 @@ endr
 	jr .asm_114796
 
 .asm_11478e
-	ld a, [wdc17]
+	ld a, [$dc17]
 	and a
 	jr nz, .asm_114796
 
@@ -1137,9 +1136,9 @@ endr
 	jr z, .asm_114737
 	jr .asm_1147cb
 
-	ld hl, wdc03
+	ld hl, $dc03
 	ld a, [hli]
-	ld [wdc00], a
+	ld [$dc00], a
 	ld [hFF8C], a
 	ld [MBC3SRamBank], a
 	call Function114a7a
@@ -1149,12 +1148,12 @@ endr
 	ld [BigDoll], a
 
 .asm_1147b7
-	ld a, [wdc17]
+	ld a, [$dc17]
 	and a
 	jr z, .asm_114794
 	ld a, $1
 	ld [BigDoll], a
-	ld a, [wdc0d]
+	ld a, [$dc0d]
 	cp $1
 	jr nz, .asm_114773
 	ld b, $1
@@ -1235,7 +1234,7 @@ Function1147cd: ; 1147cd
 	and a
 	jr nz, .asm_114837
 	ld a, $1
-	ld [wdc17], a
+	ld [$dc17], a
 
 .asm_114837
 	ld a, $1
@@ -1245,7 +1244,7 @@ Function1147cd: ; 1147cd
 
 Function11483a: ; 11483a
 	push bc
-	ld bc, wdc00
+	ld bc, $dc00
 	call Function115d80
 	pop bc
 	ret
@@ -1253,7 +1252,7 @@ Function11483a: ; 11483a
 ; 114843
 
 Function114843: ; 114843
-	ld a, [wdc00]
+	ld a, [$dc00]
 	push af
 	push de
 	ld [hFF8C], a
@@ -1263,7 +1262,7 @@ Function114843: ; 114843
 	jr nz, .asm_11485f
 	pop de
 	pop af
-	ld [wdc00], a
+	ld [$dc00], a
 	ld hl, String_114218
 	call Function114acf
 	ret
@@ -1271,14 +1270,14 @@ Function114843: ; 114843
 .asm_11485f
 	pop de
 	pop af
-	ld [wdc00], a
+	ld [$dc00], a
 	ld a, $1
 	ret
 
 ; 114867
 
 Function114867: ; 114867
-	ld hl, wdc06
+	ld hl, $dc06
 	ld a, [hli]
 	ld [wCurrentMapSignpostCount], a
 	ld [hFF8C], a
@@ -1294,7 +1293,7 @@ Function114867: ; 114867
 	ld [de], a
 	inc e
 	call z, Function1148b9
-	ld hl, wdc03
+	ld hl, $dc03
 	ld a, [hli]
 	ld [de], a
 	inc e
@@ -1307,7 +1306,7 @@ Function114867: ; 114867
 	ld [de], a
 	inc e
 	call z, Function1148b9
-	ld hl, wdc06
+	ld hl, $dc06
 	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld [hl], e
@@ -1347,7 +1346,7 @@ Function1148b9: ; 1148b9
 ; 1148c2
 
 Function1148c2: ; 1148c2
-	ld hl, wdc06
+	ld hl, $dc06
 	ld a, [hli]
 	ld [wCurrentMapSignpostCount], a
 	ld [hFF8C], a
@@ -1363,7 +1362,7 @@ Function1148c2: ; 1148c2
 	ld [de], a
 	inc e
 	call z, Function114944
-	ld a, [wdc0e]
+	ld a, [$dc0e]
 	ld [de], a
 	inc e
 	call z, Function114944
@@ -1388,7 +1387,7 @@ Function1148c2: ; 1148c2
 	call z, Function114944
 
 .asm_114904
-	ld hl, wdc03
+	ld hl, $dc03
 	ld a, [hli]
 	ld [de], a
 	inc e
@@ -1401,7 +1400,7 @@ Function1148c2: ; 1148c2
 	ld [de], a
 	inc e
 	call z, Function114944
-	ld hl, wdc06
+	ld hl, $dc06
 	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld [hl], e
@@ -1411,7 +1410,7 @@ Function1148c2: ; 1148c2
 	ld c, [hl]
 	inc hl
 	ld b, [hl]
-	ld a, [wdc0e]
+	ld a, [$dc0e]
 	cp $3
 	jr z, .asm_114932
 	ld d, $6
@@ -1449,7 +1448,7 @@ Function114944: ; 114944
 ; 11494d
 
 Function11494d: ; 11494d
-	ld hl, wdc06
+	ld hl, $dc06
 	ld a, [hli]
 	ld [wCurrentMapSignpostCount], a
 	ld [hFF8C], a
@@ -1457,7 +1456,7 @@ Function11494d: ; 11494d
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	ld a, [wdc0e]
+	ld a, [$dc0e]
 	ld [de], a
 	inc e
 	call z, Function1149c3
@@ -1482,7 +1481,7 @@ Function11494d: ; 11494d
 	call z, Function1149c3
 
 .asm_114983
-	ld hl, wdc03
+	ld hl, $dc03
 	ld a, [hli]
 	ld [de], a
 	inc e
@@ -1495,7 +1494,7 @@ Function11494d: ; 11494d
 	ld [de], a
 	inc e
 	call z, Function1149c3
-	ld hl, wdc06
+	ld hl, $dc06
 	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld [hl], e
@@ -1505,7 +1504,7 @@ Function11494d: ; 11494d
 	ld c, [hl]
 	inc hl
 	ld b, [hl]
-	ld a, [wdc0e]
+	ld a, [$dc0e]
 	cp $3
 	jr z, .asm_1149b1
 	ld d, $4
@@ -1543,13 +1542,13 @@ Function1149c3: ; 1149c3
 ; 1149cc
 
 Function1149cc: ; 1149cc
-	ld hl, wdc06
+	ld hl, $dc06
 	ld a, [hl]
 	ld [wCurrentMapSignpostCount], a
 	ld [hFF8C], a
 	ld [MBC3SRamBank], a
 	push de
-	ld hl, wdc09
+	ld hl, $dc09
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -1576,7 +1575,7 @@ Function1149cc: ; 1149cc
 	ld [de], a
 	inc e
 	call z, Function114a0f
-	ld hl, wdc06
+	ld hl, $dc06
 	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld [hl], e
@@ -1641,8 +1640,8 @@ Function114a18: ; 114a18
 	dec bc
 
 .asm_114a52
-	ld hl, wdc03
-	ld a, [wdc00]
+	ld hl, $dc03
+	ld a, [$dc00]
 	ld [hli], a
 	ld [hl], e
 	inc hl
@@ -1662,7 +1661,7 @@ Function114a18: ; 114a18
 	and a
 	jr nz, .asm_114a6e
 	ld a, $1
-	ld [wdc17], a
+	ld [$dc17], a
 
 .asm_114a6e
 	ld a, $1
@@ -1672,7 +1671,7 @@ Function114a18: ; 114a18
 
 Function114a71: ; 114a71
 	push bc
-	ld bc, wdc00
+	ld bc, $dc00
 	call Function115d80
 	pop bc
 	ret
@@ -1711,8 +1710,8 @@ Function114a7a: ; 114a7a
 	jr nz, .asm_114abb
 	inc e
 	call z, Function114ac6
-	ld hl, wdc03
-	ld a, [wdc00]
+	ld hl, $dc03
+	ld a, [$dc00]
 	ld [hli], a
 	ld [hl], e
 	inc hl
@@ -1724,7 +1723,7 @@ Function114a7a: ; 114a7a
 	and a
 	jr nz, .asm_114ac3
 	ld a, $1
-	ld [wdc17], a
+	ld [$dc17], a
 
 .asm_114ac3
 	ld a, $1
@@ -1734,7 +1733,7 @@ Function114a7a: ; 114a7a
 
 Function114ac6: ; 114ac6
 	push bc
-	ld bc, wdc00
+	ld bc, $dc00
 	call Function115d80
 	pop bc
 	ret
@@ -1768,7 +1767,7 @@ Function114acf: ; 114acf
 	jr nz, .asm_114ad1
 .asm_114aec
 	ld a, $2
-	ld [wdc0e], a
+	ld [$dc0e], a
 	pop bc
 	pop hl
 	ret
@@ -1816,7 +1815,7 @@ Function114acf: ; 114acf
 
 .asm_114b26
 	ld hl, Plant
-	ld a, [wdc00]
+	ld a, [$dc00]
 	ld [hli], a
 	ld [hl], e
 	inc hl
@@ -1839,7 +1838,7 @@ Function114acf: ; 114acf
 	pop bc
 	pop hl
 	ld a, $3
-	ld [wdc0e], a
+	ld [$dc0e], a
 	xor a
 	ret
 
@@ -1847,7 +1846,7 @@ Function114acf: ; 114acf
 
 Function114b4c: ; 114b4c
 	push bc
-	ld bc, wdc00
+	ld bc, $dc00
 	call Function115d80
 	pop bc
 	ret
@@ -1857,13 +1856,13 @@ Function114b4c: ; 114b4c
 Function114b55: ; 114b55
 	call Function114561
 	ld b, $0
-	ld hl, wdc03
+	ld hl, $dc03
 	ld c, [hl]
 	inc hl
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	ld hl, wdc24
+	ld hl, $dc24
 .asm_114b65
 	push de
 	push bc
@@ -1906,7 +1905,7 @@ endr
 	jr .asm_114b82
 
 .asm_114b96
-	ld hl, wdc06
+	ld hl, $dc06
 	ld a, [hli]
 	ld [wCurrentMapSignpostCount], a
 	ld [hFF8C], a
@@ -1916,7 +1915,7 @@ endr
 	ld d, [hl]
 	inc hl
 	ld bc, $004e
-	ld hl, wdc24
+	ld hl, $dc24
 	call Function115d6a
 	jp Function11425c
 
@@ -1948,11 +1947,11 @@ Function114bbc: ; 114bbc
 	and a
 	jr nz, .asm_114bff
 	ld a, h
-	ld [wdc00], a
+	ld [$dc00], a
 	ld [hFF8C], a
 	ld [MBC3SRamBank], a
 	call Function114c0b
-	ld hl, wdc24
+	ld hl, $dc24
 	call Function114c5e
 	ld a, b
 	or c
@@ -1965,7 +1964,7 @@ Function114bbc: ; 114bbc
 	ld a, [hli]
 	ld e, a
 	ld d, [hl]
-	ld hl, wdc24
+	ld hl, $dc24
 	push bc
 	call Function115d6a
 	pop hl
@@ -1986,11 +1985,11 @@ Function114bbc: ; 114bbc
 ; 114c0b
 
 Function114c0b: ; 114c0b
-	ld hl, wdc24
+	ld hl, $dc24
 	push bc
 	call Function115d53
 	pop bc
-	ld hl, wdc24
+	ld hl, $dc24
 	ld d, h
 	ld e, l
 .asm_114c18
@@ -2006,7 +2005,7 @@ Function114c0b: ; 114c0b
 .asm_114c24
 	xor a
 	ld [de], a
-	ld hl, wdc24
+	ld hl, $dc24
 	ld bc, NULL
 .asm_114c2c
 	ld a, [hli]
@@ -2047,7 +2046,7 @@ Function114c0b: ; 114c0b
 
 Function114c55: ; 114c55
 	push bc
-	ld bc, wdc00
+	ld bc, $dc00
 	call Function115d80
 	pop bc
 	ret
@@ -2096,9 +2095,9 @@ rept 2
 	dec bc
 endr
 	ld a, l
-	ld [wdc03], a
+	ld [$dc03], a
 	ld a, h
-	ld [wdc04], a
+	ld [$dc04], a
 	pop hl
 	push de
 	call Function115c49
@@ -2117,9 +2116,9 @@ endr
 	ld a, b
 	or c
 	jr nz, .asm_114ca6
-	ld a, [wdc03]
+	ld a, [$dc03]
 	ld l, a
-	ld a, [wdc04]
+	ld a, [$dc04]
 	ld h, a
 	jr .asm_114c62
 
@@ -2172,15 +2171,15 @@ Function114cd9: ; 114cd9
 	call Function1143f3
 	and a
 	jr nz, .asm_114d33
-	ld [wdc03], a
-	ld [wdc04], a
+	ld [$dc03], a
+	ld [$dc04], a
 	ld a, h
-	ld [wdc00], a
+	ld [$dc00], a
 	ld [hFF8C], a
 	ld [MBC3SRamBank], a
-	ld hl, wdc24
+	ld hl, $dc24
 	call Function114d39
-	ld hl, wdc24
+	ld hl, $dc24
 	call Function114d99
 	pop hl
 	push hl
@@ -2226,7 +2225,7 @@ endr
 
 Function114d39: ; 114d39
 .asm_114d39
-	ld a, [wdc04]
+	ld a, [$dc04]
 	and a
 	jr nz, .asm_114d4a
 	ld a, [de]
@@ -2245,27 +2244,27 @@ Function114d39: ; 114d39
 	jr .asm_114d84
 
 .asm_114d55
-	ld [wdc03], a
+	ld [$dc03], a
 	ld a, $1
-	ld [wdc04], a
+	ld [$dc04], a
 	jr .asm_114d84
 
 .asm_114d5f
-	ld a, [wdc03]
+	ld a, [$dc03]
 	cp $28
 	jr nz, .asm_114d84
 	xor a
-	ld [wdc03], a
-	ld [wdc04], a
+	ld [$dc03], a
+	ld [$dc04], a
 	jr .asm_114d84
 
 .asm_114d6f
-	ld a, [wdc03]
+	ld a, [$dc03]
 	cp $22
 	jr nz, .asm_114d84
 	xor a
-	ld [wdc03], a
-	ld [wdc04], a
+	ld [$dc03], a
+	ld [$dc04], a
 	jr .asm_114d84
 
 .asm_114d7f
@@ -2281,7 +2280,7 @@ Function114d39: ; 114d39
 	inc e
 	jr nz, .asm_114d39
 	push bc
-	ld bc, wdc00
+	ld bc, $dc00
 	call Function115d80
 	pop bc
 	jr .asm_114d39
@@ -2480,7 +2479,7 @@ Function114e62: ; 114e62
 	call Function114ea0
 	and a
 	jr nz, .asm_114e99
-	ld hl, wdc09
+	ld hl, $dc09
 	ld a, [hli]
 	cpl
 	ld e, a
@@ -2503,7 +2502,7 @@ Function114e62: ; 114e62
 ; 114ea0
 
 Function114ea0: ; 114ea0
-	ld hl, wdc06
+	ld hl, $dc06
 	ld a, [hli]
 	ld [wCurrentMapSignpostCount], a
 	ld [hFF8C], a
@@ -2529,7 +2528,7 @@ Function114ea0: ; 114ea0
 	dec bc
 	inc e
 	call z, Function114ee0
-	ld hl, wdc06
+	ld hl, $dc06
 	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld a, e
@@ -2560,7 +2559,7 @@ Function114ee0: ; 114ee0
 ; 114ee9
 
 Function114ee9: ; 114ee9
-	ld hl, wdc03
+	ld hl, $dc03
 	ld a, b
 	ld [hli], a
 	ld a, c
@@ -2599,7 +2598,7 @@ Function114f0a: ; 114f0a
 	call Function114f39
 	and a
 	jr nz, .asm_114f26
-	ld a, [wdc03]
+	ld a, [$dc03]
 	cp $6
 	jr c, .asm_114f21
 	cp $c
@@ -2620,7 +2619,7 @@ Function114f0a: ; 114f0a
 	call Function114f59
 	and a
 	jr nz, .asm_114f23
-	ld hl, wdc0d
+	ld hl, $dc0d
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -2633,7 +2632,7 @@ Function114f0a: ; 114f0a
 ; 114f39
 
 Function114f39: ; 114f39
-	ld hl, wdc0d
+	ld hl, $dc0d
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -2652,7 +2651,7 @@ Function114f39: ; 114f39
 	ld a, [de]
 	ld [hli], a
 	inc de
-	ld hl, wdc0d
+	ld hl, $dc0d
 	ld [hl], e
 	inc hl
 	ld [hl], d
@@ -2668,7 +2667,7 @@ Function114f59: ; 114f59
 	ld a, [wStartDay]
 	and a
 	jr nz, .asm_114f7c
-	ld a, [wdc03]
+	ld a, [$dc03]
 	cp $11
 	jr z, .asm_114fa7
 	add a
@@ -2686,7 +2685,7 @@ Function114f59: ; 114f59
 	ld [wStartDay], a
 
 .asm_114f7c
-	ld a, [wdc03]
+	ld a, [$dc03]
 	cp $5
 	jr c, .asm_114fc9
 	jr z, .asm_114fec
@@ -2716,15 +2715,15 @@ Function114f59: ; 114f59
 	ld c, [hl]
 	inc hl
 	ld a, [hli]
-	ld [wdc00], a
+	ld [$dc00], a
 	ld [hFF8C], a
 	ld [MBC3SRamBank], a
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	ld hl, wdc24
+	ld hl, $dc24
 	call Function115d53
-	ld hl, wdc24
+	ld hl, $dc24
 	call Function115020
 	and a
 	jr nz, .asm_114fe7
@@ -2734,9 +2733,9 @@ Function114f59: ; 114f59
 	call Function115062
 	and a
 	jr nz, .asm_114fe7
-	ld a, [wdc04]
+	ld a, [$dc04]
 	dec a
-	ld [wdc04], a
+	ld [$dc04], a
 	and a
 	jr z, .asm_114fdf
 	call Function114f39
@@ -2744,8 +2743,8 @@ Function114f59: ; 114f59
 	jr nz, .asm_114fc9
 
 .asm_114fdf
-	ld a, [wdc05]
-	ld [wdc04], a
+	ld a, [$dc05]
+	ld [$dc04], a
 	jr .asm_11501e
 
 .asm_114fe7
@@ -2774,7 +2773,7 @@ Function114f59: ; 114f59
 
 .asm_115007
 	call Function11528f
-	ld hl, wdc24
+	ld hl, $dc24
 	call Function115217
 	and a
 	jr nz, .asm_114fe7
@@ -2794,7 +2793,7 @@ Function114f59: ; 114f59
 
 Function115020: ; 115020
 	push hl
-	ld hl, wdc06
+	ld hl, $dc06
 	ld a, [hli]
 	ld [wCurrentMapSignpostCount], a
 	ld [hFF8C], a
@@ -2822,7 +2821,7 @@ Function115020: ; 115020
 	jr .asm_115036
 
 .asm_115046
-	ld hl, wdc06
+	ld hl, $dc06
 	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld a, e
@@ -2857,14 +2856,14 @@ Function115062: ; 115062
 	jr z, .asm_1150ae
 	ld c, a
 	ld a, [hli]
-	ld [wdc00], a
+	ld [$dc00], a
 	ld [hFF8C], a
 	ld [MBC3SRamBank], a
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
 	ld b, $0
-	ld hl, wdc24
+	ld hl, $dc24
 	ld a, [wStartDay]
 	cp $1
 	jr z, .asm_11509b
@@ -2906,7 +2905,7 @@ Function115062: ; 115062
 ; 1150b3
 
 Function1150b3: ; 1150b3
-	ld hl, wdc24
+	ld hl, $dc24
 	ld de, PartyMon5Defense
 	ld b, $0
 .asm_1150bb
@@ -3011,7 +3010,7 @@ endr
 ; 115136
 
 Function115136: ; 115136
-	ld hl, wdc06
+	ld hl, $dc06
 	ld a, [hli]
 	ld [wCurrentMapSignpostCount], a
 	ld [hFF8C], a
@@ -3039,7 +3038,7 @@ Function115136: ; 115136
 	jr .asm_11514d
 
 .asm_11515d
-	ld hl, wdc06
+	ld hl, $dc06
 	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld a, e
@@ -3068,7 +3067,7 @@ Function115170: ; 115170
 ; 115179
 
 Function115179: ; 115179
-	ld hl, wdc06
+	ld hl, $dc06
 	ld a, [hli]
 	ld [wCurrentMapSignpostCount], a
 	ld [hFF8C], a
@@ -3164,7 +3163,7 @@ Function115179: ; 115179
 	jr z, .asm_1151ef
 	inc e
 	call z, Function11520e
-	ld hl, wdc06
+	ld hl, $dc06
 	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld a, e
@@ -3190,7 +3189,7 @@ Function11520e: ; 11520e
 
 Function115217: ; 115217
 	push hl
-	ld hl, wdc06
+	ld hl, $dc06
 	ld a, [hli]
 	ld [wCurrentMapSignpostCount], a
 	ld [hFF8C], a
@@ -3218,7 +3217,7 @@ Function115217: ; 115217
 	jr .asm_11522d
 
 .asm_11523d
-	ld a, [wdc03]
+	ld a, [$dc03]
 	cp $b
 	jr z, .asm_115278
 	cp $c
@@ -3230,7 +3229,7 @@ Function115217: ; 115217
 	jr .asm_115262
 
 .asm_115252
-	ld hl, wdc06
+	ld hl, $dc06
 	ld a, [wCurrentMapSignpostCount]
 	ld [hli], a
 	ld a, e
@@ -3289,14 +3288,14 @@ Function11528f: ; 11528f
 	ld c, [hl]
 	inc hl
 	ld a, [hli]
-	ld [wdc00], a
+	ld [$dc00], a
 	ld [hFF8C], a
 	ld [MBC3SRamBank], a
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
 	ld d, a
-	ld hl, wdc24
+	ld hl, $dc24
 .asm_1152a4
 	ld a, [de]
 	ld [hli], a
@@ -3311,7 +3310,7 @@ Function11528f: ; 11528f
 
 Function1152af: ; 1152af
 	push bc
-	ld bc, wdc00
+	ld bc, $dc00
 	call Function115d80
 	pop bc
 	ret
@@ -3332,12 +3331,12 @@ Function1152b8: ; 1152b8
 	and a
 	jr nz, .asm_1152f9
 .asm_1152ca
-	ld hl, wdc0d
+	ld hl, $dc0d
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
 .asm_1152d0
-	ld a, [wdc03]
+	ld a, [$dc03]
 	cp $3
 	jr nz, .asm_1152d8
 	push de
@@ -3358,11 +3357,11 @@ Function1152b8: ; 1152b8
 	inc de
 	and a
 	jr nz, .asm_115301
-	ld a, [wdc03]
+	ld a, [$dc03]
 	cp $6
 	jr z, .asm_115335
 	inc a
-	ld [wdc03], a
+	ld [$dc03], a
 	jr .asm_1152d0
 
 .asm_1152f9
@@ -3372,29 +3371,29 @@ Function1152b8: ; 1152b8
 	jp Function11425c
 
 .asm_115301
-	ld hl, wdc0d
+	ld hl, $dc0d
 	ld [hl], e
 	inc hl
 	ld [hl], d
 .asm_115307
-	ld [wdc05], a
+	ld [$dc05], a
 	ld a, $1
-	ld [wdc04], a
+	ld [$dc04], a
 	call Function1153b5
 	call Function114f59
 	and a
 	jr nz, .asm_1152f9
-	ld a, [wdc05]
+	ld a, [$dc05]
 	dec a
 	jr nz, .asm_115307
-	ld a, [wdc03]
+	ld a, [$dc03]
 	inc a
-	ld [wdc03], a
+	ld [$dc03], a
 	call Function114ea0
 	and a
 	jr nz, .asm_1152f9
 	ld [wStartDay], a
-	ld a, [wdc03]
+	ld a, [$dc03]
 	cp $6
 	jr nz, .asm_1152ca
 
@@ -3408,9 +3407,9 @@ Function1152b8: ; 1152b8
 	call Function114ea0
 	and a
 	jr nz, .asm_1152f9
-	ld a, [wdc03]
+	ld a, [$dc03]
 	inc a
-	ld [wdc03], a
+	ld [$dc03], a
 	cp $9
 	jr nz, .asm_115335
 	pop bc
@@ -3428,7 +3427,7 @@ Function1152b8: ; 1152b8
 	jr nz, .asm_1152f9
 
 .asm_11536b
-	ld hl, wdc09
+	ld hl, $dc09
 	ld a, [hli]
 	cpl
 	ld e, a
@@ -3446,7 +3445,7 @@ Function1152b8: ; 1152b8
 ; 11537d
 
 Function11537d: ; 11537d
-	ld hl, wdc06
+	ld hl, $dc06
 	ld a, [de]
 	ld [hli], a
 	inc de
@@ -3484,19 +3483,19 @@ Function11537d: ; 11537d
 	ld a, [de]
 	ld [hli], a
 	inc de
-	ld hl, wdc0d
+	ld hl, $dc0d
 	ld [hl], e
 	inc hl
 	ld [hl], d
 	xor a
-	ld [wdc03], a
+	ld [$dc03], a
 	ld [wStartDay], a
 	ret
 
 ; 1153b5
 
 Function1153b5: ; 1153b5
-	ld hl, wdc0d
+	ld hl, $dc0d
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
@@ -3515,7 +3514,7 @@ endr
 	ld a, [de]
 	ld [Bed], a
 	inc de
-	ld hl, wdc0d
+	ld hl, $dc0d
 	ld [hl], e
 	inc hl
 	ld [hl], d
@@ -3524,14 +3523,14 @@ endr
 ; 1153d2
 
 Function1153d2: ; 1153d2
-	ld a, [wdc03]
+	ld a, [$dc03]
 	ld d, a
-	ld a, [wdc04]
+	ld a, [$dc04]
 	ld e, a
 	push de
 	xor a
-	ld [wdc03], a
-	ld [wdc04], a
+	ld [$dc03], a
+	ld [$dc04], a
 	ld a, $24
 	ld [Console], a
 	ld a, $dc
@@ -3549,7 +3548,7 @@ Function1153d2: ; 1153d2
 	push bc
 .asm_1153f5
 	ld a, [hli]
-	ld [wdc00], a
+	ld [$dc00], a
 	ld [hFF8C], a
 	ld [MBC3SRamBank], a
 	ld e, [hl]
@@ -3598,7 +3597,7 @@ Function1153d2: ; 1153d2
 	ld [LeftOrnament], a
 	xor a
 	ld [de], a
-	ld hl, wdc24
+	ld hl, $dc24
 .asm_11543d
 	ld a, [hli]
 	and a
@@ -3614,14 +3613,14 @@ Function1153d2: ; 1153d2
 .asm_11544b
 	pop hl
 	ld a, h
-	ld [wdc03], a
+	ld [$dc03], a
 	ld a, l
-	ld [wdc04], a
+	ld [$dc04], a
 	ld a, $1
 	ret
 
 .asm_115457
-	ld hl, wdc24
+	ld hl, $dc24
 	call Function114d99
 	ld hl, $ddc8
 .asm_115460
@@ -3703,9 +3702,9 @@ Function1153d2: ; 1153d2
 	ld d, a
 	pop hl
 	ld a, h
-	ld [wdc03], a
+	ld [$dc03], a
 	ld a, l
-	ld [wdc04], a
+	ld [$dc04], a
 	xor a
 	ret
 
@@ -3737,7 +3736,7 @@ Function1154d4: ; 1154d4
 
 .asm_115502
 	ld a, $a
-	ld [wdc03], a
+	ld [$dc03], a
 	call Function114f59
 	and a
 	jr z, .asm_11551a
@@ -3745,7 +3744,7 @@ Function1154d4: ; 1154d4
 
 .asm_11550f
 	ld a, $c
-	ld [wdc03], a
+	ld [$dc03], a
 	call Function114f59
 	and a
 	jr nz, .asm_11552c
@@ -3769,7 +3768,7 @@ Function1154d4: ; 1154d4
 	ld a, $1
 	ld [wDailyResetTimer], a
 	ld a, $b
-	ld [wdc03], a
+	ld [$dc03], a
 	call Function114f59
 	and a
 	jr nz, .asm_11552c
@@ -3781,7 +3780,7 @@ Function1154d4: ; 1154d4
 	and a
 	jr nz, .asm_11552c
 	ld a, $e
-	ld [wdc03], a
+	ld [$dc03], a
 	call Function114f59
 	and a
 	jr nz, .asm_11552c
@@ -3798,7 +3797,7 @@ Function1154d4: ; 1154d4
 	and a
 	jr z, .asm_11557d
 	ld a, $f
-	ld [wdc03], a
+	ld [$dc03], a
 	call Function114f59
 	and a
 	jr nz, .asm_11552c
@@ -3810,14 +3809,14 @@ Function1154d4: ; 1154d4
 
 .asm_11557d
 	ld a, $10
-	ld [wdc03], a
+	ld [$dc03], a
 	call Function114f59
 	and a
 	jr nz, .asm_11552c
 	call Function114ea0
 	and a
 	jr nz, .asm_11552c
-	ld hl, wdc09
+	ld hl, $dc09
 	ld a, [hli]
 	cpl
 	ld e, a
@@ -3844,7 +3843,7 @@ Function1154d4: ; 1154d4
 ; 1155af
 
 Function1155af: ; 1155af
-	ld hl, wdc06
+	ld hl, $dc06
 	ld a, [de]
 	ld [hli], a
 	inc de
@@ -3876,9 +3875,9 @@ Function1155af: ; 1155af
 ; 1155d1
 
 Function1155d1: ; 1155d1
-	ld a, [wdc0d]
+	ld a, [$dc0d]
 	ld l, a
-	ld a, [wdc0e]
+	ld a, [$dc0e]
 	ld h, a
 	ld a, [hli]
 	ld [BigDoll], a
@@ -3897,7 +3896,7 @@ Function1155d1: ; 1155d1
 	ld [Bed], a
 
 .asm_1155f0
-	ld de, wdc17
+	ld de, $dc17
 	ld a, [hli]
 	ld [de], a
 	inc de
@@ -3913,21 +3912,21 @@ Function1155d1: ; 1155d1
 	ld a, [hli]
 	ld [de], a
 	ld a, l
-	ld [wdc0d], a
+	ld [$dc0d], a
 	ld a, h
-	ld [wdc0e], a
+	ld [$dc0e], a
 	ret
 
 ; 11560a
 
 Function11560a: ; 11560a
-	ld a, [wdc06]
+	ld a, [$dc06]
 	ld [wCurrentMapSignpostCount], a
-	ld a, [wdc17]
-	ld [wdc00], a
+	ld a, [$dc17]
+	ld [$dc00], a
 	ld [hFF8C], a
 	ld [MBC3SRamBank], a
-	ld hl, wdc1a
+	ld hl, $dc1a
 	ld c, [hl]
 	inc hl
 	ld b, [hl]
@@ -3935,7 +3934,7 @@ Function11560a: ; 11560a
 	cp b
 	jp c, .asm_1156b1
 	jr nz, .asm_115631
-	ld a, [wdc09]
+	ld a, [$dc09]
 	cp c
 	jp c, .asm_1156b1
 
@@ -3943,7 +3942,7 @@ Function11560a: ; 11560a
 	ld a, b
 	or c
 	jr z, .asm_1156a9
-	ld a, [wdc09]
+	ld a, [$dc09]
 	ld l, a
 	ld a, [wCurrMapCallbackCount]
 	ld h, a
@@ -3956,7 +3955,7 @@ Function11560a: ; 11560a
 	inc de
 	add hl, de
 	ld a, l
-	ld [wdc09], a
+	ld [$dc09], a
 	ld a, h
 	ld [wCurrMapCallbackCount], a
 .asm_11564d
@@ -3969,9 +3968,9 @@ Function11560a: ; 11560a
 	jr c, .asm_1156b6
 
 .asm_115659
-	ld a, [wdc1a]
+	ld a, [$dc1a]
 	ld e, a
-	ld a, [wdc1b]
+	ld a, [$dc1b]
 	ld d, a
 	ld a, c
 	cpl
@@ -3982,15 +3981,15 @@ Function11560a: ; 11560a
 	inc hl
 	add hl, de
 	ld a, l
-	ld [wdc1a], a
+	ld [$dc1a], a
 	ld a, h
-	ld [wdc1b], a
+	ld [$dc1b], a
 	push bc
 	ld hl, $dc18
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	ld hl, wdc24
+	ld hl, $dc24
 	call Function115d53
 	ld hl, $dc18
 	ld [hl], e
@@ -4004,13 +4003,13 @@ Function11560a: ; 11560a
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	ld hl, wdc24
+	ld hl, $dc24
 	call Function115d6a
 	ld hl, wCurrMapTriggerCount
 	ld [hl], e
 	inc hl
 	ld [hl], d
-	ld hl, wdc1a
+	ld hl, $dc1a
 	ld c, [hl]
 	inc hl
 	ld b, [hl]
@@ -4020,7 +4019,7 @@ Function11560a: ; 11560a
 
 .asm_1156a9
 	ld a, [wCurrentMapSignpostCount]
-	ld [wdc06], a
+	ld [$dc06], a
 	xor a
 	ret
 
@@ -4037,7 +4036,7 @@ Function11560a: ; 11560a
 	cpl
 	ld l, a
 	add hl, bc
-	ld de, wdc1a
+	ld de, $dc1a
 	ld a, l
 	ld [de], a
 	inc de
@@ -4113,7 +4112,7 @@ Function1156cc: ; 1156cc
 ; 115732
 
 Function115732: ; 115732
-	ld hl, wdc02
+	ld hl, $dc02
 	ld a, [de]
 	ld [hli], a
 	inc de
@@ -4157,7 +4156,7 @@ Function115732: ; 115732
 ; 11575c
 
 Function11575c: ; 11575c
-	ld hl, wdc05
+	ld hl, $dc05
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -4245,11 +4244,11 @@ Function11575c: ; 11575c
 ; 1157d0
 
 Function1157d0: ; 1157d0
-	ld hl, wdc05
+	ld hl, $dc05
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld a, [wdc0e]
+	ld a, [$dc0e]
 	ld c, a
 	ld a, [Bed]
 	ld b, a
@@ -4276,15 +4275,15 @@ Function1157d0: ; 1157d0
 	inc bc
 	add hl, bc
 	ld a, l
-	ld [wdc05], a
+	ld [$dc05], a
 	ld a, h
-	ld [wdc06], a
+	ld [$dc06], a
 	ld a, h
 	or l
 	jr nz, .asm_11580f
 	pop bc
 	ld a, c
-	ld [wdc0e], a
+	ld [$dc0e], a
 	ld a, b
 	ld [Bed], a
 	ld a, $4
@@ -4294,7 +4293,7 @@ Function1157d0: ; 1157d0
 .asm_11580f
 	pop bc
 	ld a, c
-	ld [wdc0e], a
+	ld [$dc0e], a
 	ld a, b
 	ld [Bed], a
 	ld a, $3
@@ -4307,29 +4306,29 @@ Function11581e: ; 11581e
 	ld a, [wStartDay]
 	and a
 	ret z
-	ld a, [wdc0e]
+	ld a, [$dc0e]
 	ld c, a
 	ld a, [Bed]
 	ld b, a
-	ld hl, wdc02
+	ld hl, $dc02
 	ld a, [hli]
-	ld [wdc00], a
+	ld [$dc00], a
 	ld [hFF8C], a
 	ld [MBC3SRamBank], a
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	ld hl, wdc24
+	ld hl, $dc24
 	push bc
 	call Function115d53
 	pop bc
-	ld hl, wdc02
-	ld a, [wdc00]
+	ld hl, $dc02
+	ld a, [$dc00]
 	ld [hli], a
 	ld [hl], e
 	inc hl
 	ld [hl], d
-	ld hl, wdc24
+	ld hl, $dc24
 	ld de, PartyMon5Defense
 	call Function1158c2
 	ld hl, PartyMon5Defense
@@ -4415,18 +4414,18 @@ Function1158c2: ; 1158c2
 	ld a, e
 	ld [SwarmFlags], a
 	ld a, d
-	ld [wdc21], a
+	ld [$dc21], a
 	xor a
-	ld [wdc22], a
+	ld [$dc22], a
 	xor a
 	ld [de], a
 	inc de
 	ld [de], a
 	inc de
 	ld a, c
-	ld [wdc19], a
+	ld [$dc19], a
 	ld a, b
-	ld [wdc1a], a
+	ld [$dc1a], a
 	ld c, e
 	ld b, d
 	ld e, l
@@ -4439,16 +4438,16 @@ Function1158c2: ; 1158c2
 .asm_1158e5
 	ld b, $3
 	push hl
-	ld hl, wdc1b
+	ld hl, $dc1b
 .asm_1158eb
 	ld a, [de]
 	inc de
 	ld [hli], a
 	dec b
 	jr nz, .asm_1158eb
-	ld a, [wdc19]
+	ld a, [$dc19]
 	ld c, a
-	ld a, [wdc1a]
+	ld a, [$dc1a]
 	ld b, a
 	xor a
 	or b
@@ -4475,9 +4474,9 @@ rept 3
 	dec bc
 endr
 	ld a, c
-	ld [wdc19], a
+	ld [$dc19], a
 	ld a, b
-	ld [wdc1a], a
+	ld [$dc1a], a
 	push de
 	push hl
 	ld hl, SwarmFlags
@@ -4547,20 +4546,20 @@ endr
 	inc bc
 	call Function1159dc
 	ld [hli], a
-	ld a, [wdc22]
+	ld a, [$dc22]
 	inc a
 	cp $10
 	jr nz, .asm_1159b1
 	push af
 	push bc
-	ld a, [wdc19]
+	ld a, [$dc19]
 	ld b, a
-	ld a, [wdc1a]
+	ld a, [$dc1a]
 	or b
 	jr nz, .asm_115998
-	ld a, [wdc05]
+	ld a, [$dc05]
 	ld b, a
-	ld a, [wdc06]
+	ld a, [$dc06]
 	or b
 	jr nz, .asm_115998
 	pop bc
@@ -4592,11 +4591,11 @@ endr
 	xor a
 
 .asm_1159b1
-	ld [wdc22], a
-	ld a, [wdc19]
+	ld [$dc22], a
+	ld a, [$dc19]
 	cp $0
 	jp nz, .asm_1158e5
-	ld a, [wdc1a]
+	ld a, [$dc1a]
 	cp $0
 	jp nz, .asm_1158e5
 
@@ -4717,7 +4716,7 @@ Function1159fb: ; 1159fb
 ; 115a5f
 
 Function115a5f: ; 115a5f
-	ld hl, wdc05
+	ld hl, $dc05
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -4778,11 +4777,11 @@ Function115a5f: ; 115a5f
 ; 115ab0
 
 Function115ab0: ; 115ab0
-	ld hl, wdc05
+	ld hl, $dc05
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld a, [wdc0e]
+	ld a, [$dc0e]
 	ld c, a
 	ld a, [Bed]
 	ld b, a
@@ -4809,15 +4808,15 @@ Function115ab0: ; 115ab0
 	inc bc
 	add hl, bc
 	ld a, l
-	ld [wdc05], a
+	ld [$dc05], a
 	ld a, h
-	ld [wdc06], a
+	ld [$dc06], a
 	ld a, h
 	or l
 	jr nz, .asm_115af0
 	pop bc
 	ld a, c
-	ld [wdc0e], a
+	ld [$dc0e], a
 	ld a, b
 	ld [Bed], a
 	ld a, $4
@@ -4828,7 +4827,7 @@ Function115ab0: ; 115ab0
 .asm_115af0
 	pop bc
 	ld a, c
-	ld [wdc0e], a
+	ld [$dc0e], a
 	ld a, b
 	ld [Bed], a
 	ld a, $3
@@ -4842,13 +4841,13 @@ Function115b00: ; 115b00
 	ld a, [wStartDay]
 	and a
 	ret z
-	ld a, [wdc0e]
+	ld a, [$dc0e]
 	ld c, a
 	ld a, [Bed]
 	ld b, a
-	ld hl, wdc02
+	ld hl, $dc02
 	ld a, [hli]
-	ld [wdc00], a
+	ld [$dc00], a
 	ld [hFF8C], a
 	ld [MBC3SRamBank], a
 	ld e, [hl]
@@ -4893,16 +4892,16 @@ endr
 	add hl, bc
 	ld b, h
 	ld c, l
-	ld hl, wdc02
-	ld a, [wdc00]
+	ld hl, $dc02
+	ld a, [$dc00]
 	ld [hli], a
 	ld [hl], e
 	inc hl
 	ld [hl], d
 	ld hl, PartyMon5Defense
-	ld de, wdc24
+	ld de, $dc24
 	call Function115c49
-	ld hl, wdc24
+	ld hl, $dc24
 	ld c, [hl]
 	inc hl
 	ld b, [hl]
@@ -4943,7 +4942,7 @@ endr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	ld hl, wdc26
+	ld hl, $dc26
 	call Function115d6a
 	ld hl, wCurrMapTriggerCount
 	ld a, [wCurrentMapSignpostCount]
@@ -5064,7 +5063,7 @@ endr
 
 .Function115c3d:
 	push bc
-	ld bc, wdc00
+	ld bc, $dc00
 	call Function115d80
 	pop bc
 	ret
@@ -5087,9 +5086,9 @@ Function115c49: ; 115c49
 	inc de
 
 	ld a, c
-	ld [wdc19], a
+	ld [$dc19], a
 	ld a, b
-	ld [wdc1a], a
+	ld [$dc1a], a
 	ld c, e
 	ld b, d
 	ld e, l
@@ -5098,17 +5097,17 @@ Function115c49: ; 115c49
 	ld h, b
 
 .asm_115c64
-	ld a, [wdc1a]
+	ld a, [$dc1a]
 	or a
 	jr nz, .asm_115c71
-	ld a, [wdc19]
+	ld a, [$dc19]
 	cp $4
 	jr c, .asm_115c99
 
 .asm_115c71
 	ld b, $4
 	push hl
-	ld hl, wdc1b
+	ld hl, $dc1b
 .asm_115c77
 	ld a, [de]
 	inc de
@@ -5116,9 +5115,9 @@ Function115c49: ; 115c49
 	ld [hli], a
 	dec b
 	jr nz, .asm_115c77
-	ld a, [wdc19]
+	ld a, [$dc19]
 	ld c, a
-	ld a, [wdc1a]
+	ld a, [$dc1a]
 	ld b, a
 rept 4
 	dec bc
@@ -5142,9 +5141,9 @@ endr
 
 .asm_115c9f
 	ld a, c
-	ld [wdc19], a
+	ld [$dc19], a
 	ld a, b
-	ld [wdc1a], a
+	ld [$dc1a], a
 	push de
 	push hl
 	ld hl, WeeklyFlags
@@ -5204,10 +5203,10 @@ endr
 	inc bc
 	ld a, [bc]
 	ld [hli], a
-	ld a, [wdc19]
+	ld a, [$dc19]
 	cp $0
 	jp nz, .asm_115c64
-	ld a, [wdc1a]
+	ld a, [$dc1a]
 	cp $0
 	jp nz, .asm_115c64
 	ret
@@ -5303,7 +5302,7 @@ Function115d53: ; 115d53
 
 Function115d61: ; 115d61
 	push bc
-	ld bc, wdc00
+	ld bc, $dc00
 	call Function115d80
 	pop bc
 	ret
@@ -6882,7 +6881,7 @@ Function11766b: ; 11766b (45:766b)
 	ld de, wcd49
 	ld bc, $8
 	call CopyBytes
-	ld de, wc708
+	ld de, $c708
 	ld bc, $11
 	call CopyBytes
 	call CloseSRAM
@@ -6897,7 +6896,7 @@ Function117699: ; 117699 (45:7699)
 	ld de, $b1f3
 	ld bc, $8
 	call CopyBytes
-	ld hl, wc708
+	ld hl, $c708
 	ld bc, $11
 	call CopyBytes
 	call CloseSRAM
@@ -6909,7 +6908,7 @@ Function117699: ; 117699 (45:7699)
 	ld [wcd4d], a
 	ld [wcd4e], a
 	ld [wcd4f], a
-	ld hl, wc708
+	ld hl, $c708
 	ld bc, $11
 	call ByteFill
 	call ClearBGPalettes
@@ -7059,7 +7058,7 @@ Function117764_b_button: ; 1177d6 (45:77d6)
 	ld [wcd4a], a
 	ld e, a
 	ld d, $0
-	ld hl, wc708
+	ld hl, $c708
 	add hl, de
 	xor a
 	ld [hl], a
@@ -7171,7 +7170,7 @@ Function117764_a_button: ; 11784c (45:784c)
 	ld b, $0
 	add hl, bc
 	ld a, [hl]
-	ld hl, wc708
+	ld hl, $c708
 	add hl, de
 	ld [hl], a
 	pop de
@@ -7270,7 +7269,7 @@ Function117942: ; 117942 (45:7942)
 	call GetSRAMBank
 	ld a, [wcd4f]
 	ld [sMobileLoginPassword], a
-	ld hl, wc708
+	ld hl, $c708
 	ld de, sMobileLoginPassword + 1
 	ld bc, LOGIN_PASSWORD_LENGTH
 	call CopyBytes
diff --git a/misc/mobile_46.asm b/misc/mobile_46.asm
index e49138df6..bed6da2e0 100755
--- a/misc/mobile_46.asm
+++ b/misc/mobile_46.asm
@@ -1118,7 +1118,7 @@ Function1188c8: ; 1188c8 (46:48c8)
 	ld a, $1
 	ld [wcd65], a
 	call Function1188e7
-	ld hl, wc708
+	ld hl, $c708
 .asm_1188d3
 	ld a, [de]
 	inc de
@@ -1127,7 +1127,7 @@ Function1188c8: ; 1188c8 (46:48c8)
 	jr nz, .asm_1188d3
 	call Function119eb4
 	call Function119ec2
-	ld hl, wc708
+	ld hl, $c708
 	ld a, $6
 	jp Function119e2b
 
@@ -1908,9 +1908,9 @@ Function118f68:
 	ld [hli], a
 	ld a, [wcd4c]
 	ld [hli], a
-	ld a, wc708 % $100
+	ld a, $c708 % $100
 	ld [hli], a
-	ld a, wc708 / $100
+	ld a, $c708 / $100
 	ld [hli], a
 	ld a, $60
 	ld [hli], a
@@ -2537,9 +2537,9 @@ Function1193a0:
 	ld [hli], a
 	xor a
 	ld [hli], a
-	ld a, wc708 % $100
+	ld a, $c708 % $100
 	ld [hli], a
-	ld a, wc708 / $100
+	ld a, $c708 / $100
 	ld [hli], a
 	ld a, $60
 	ld [hli], a
@@ -2975,7 +2975,7 @@ Function119694: ; 119694 (46:5694)
 	ld b, 0
 	ld hl, Unknown_1196b8
 .asm_119699
-	ld de, wc708
+	ld de, $c708
 	ld a, [de]
 	inc de
 	cp [hl]
@@ -3018,7 +3018,7 @@ SECTION "bank46_2", ROMX, BANK[$46]
 ; A hack to use ascii above.
 
 Function1196cd: ; 1196cd (46:56cd)
-	ld de, wc719
+	ld de, $c719
 	call Function1196de
 	ld [wcd4a], a
 	inc de
@@ -3029,6 +3029,8 @@ Function1196cd: ; 1196cd (46:56cd)
 Function1196de: ; 1196de (46:56de)
 	ld a, [de]
 	inc de
+	; b = ([de] - 48) * 2
+	; c = ([de] - 48) * 10
 	sub $30
 	sla a
 	ld b, a
@@ -3362,9 +3364,9 @@ Function1198f7:
 	ld [hli], a
 	xor a
 	ld [hli], a
-	ld a, wc708 % $100
+	ld a, $c708 % $100
 	ld [hli], a
-	ld a, wc708 / $100
+	ld a, $c708 / $100
 	ld [hli], a
 	ld a, [wcd51]
 	ld [hli], a
@@ -7231,7 +7233,7 @@ Function11b483: ; 11b483
 	jp Function11ad8a
 
 .InitRAM
-	ld bc, wc626
+	ld bc, $c626
 	ld a, [PlayerID]
 	ld [wcd2a], a
 	ld [bc], a
@@ -7444,9 +7446,9 @@ Function11b6b4: ; 11b6b4
 	ld a, $5
 	call GetSRAMBank
 	ld a, [wcd30]
-	ld [wc708], a
+	ld [$c708], a
 	ld a, [wcd31]
-	ld [wc709], a
+	ld [$c709], a
 
 	ld a, $c708 % $100
 	ld [wMobileMonSpeciesPointerBuffer], a
@@ -7735,8 +7737,8 @@ Function11b920: ; 11b920
 	ld a, $5
 	call GetSRAMBank
 	ld hl, $a81f
-	ld de, wc626
-	ld bc, $0008
+	ld de, $c626
+	ld bc, 8
 	call CopyBytes
 	call CloseSRAM
 	call Function118000
diff --git a/misc/mobile_5c.asm b/misc/mobile_5c.asm
index 321ea9382..b8710a78a 100755
--- a/misc/mobile_5c.asm
+++ b/misc/mobile_5c.asm
@@ -1,32 +1,32 @@
 Function170000: ; 170000
 	ld a, [$c62b]
-	ld [$c6d0], a
+	ld [wPlayerTrademonSpecies], a
 	ld hl, $c62e
-	ld de, $c6e7
+	ld de, wPlayerTrademonSenderName
 	ld bc, $0005
 	call CopyBytes
 	ld a, $50
 	ld [de], a
 	ld hl, $c663
-	ld de, $c6f2
+	ld de, wPlayerTrademonOTName
 	ld bc, $0005
 	call CopyBytes
 	ld a, $50
 	ld [de], a
 	ld hl, $c648
 	ld a, [hli]
-	ld [$c6fd], a
+	ld [wPlayerTrademonDVs], a
 	ld a, [hl]
-	ld [$c6fe], a
+	ld [wPlayerTrademonDVs + 1], a
 	ld hl, $c639
 	ld a, [hli]
-	ld [$c6ff], a
+	ld [wPlayerTrademonID], a
 	ld a, [hl]
-	ld [wc700], a
+	ld [wPlayerTrademonID + 1], a
 	ld bc, $c633
 	callba GetCaughtGender
 	ld a, c
-	ld [wc701], a
+	ld [wPlayerTrademonCaughtData], a
 	ld a, [wcd81]
 	ld [wc74e], a
 	ld hl, $c608
@@ -41,33 +41,33 @@ Function17005a: ; 17005a
 	ld a, $5
 	call GetSRAMBank
 	ld a, [$a824]
-	ld [wc702], a
+	ld [wOTTrademonSpecies], a
 	ld hl, $a827
-	ld de, wc719
-	ld bc, $0005
+	ld de, wOTTrademonSenderName
+	ld bc, 5 ; Japanese Name Length
 	call CopyBytes
-	ld a, $50
+	ld a, "@"
 	ld [de], a
 	ld hl, $a85c
-	ld de, wc724
-	ld bc, $0005
+	ld de, wOTTrademonOTName
+	ld bc, 5 ; Japanese Name Length
 	call CopyBytes
-	ld a, $50
+	ld a, "@"
 	ld [de], a
 	ld hl, $a841
 	ld a, [hli]
-	ld [wEnemyTrappingMove], a
+	ld [wOTTrademonDVs], a
 	ld a, [hl]
-	ld [wPlayerWrapCount], a
+	ld [wOTTrademonDVs + 1], a
 	ld hl, $a832
 	ld a, [hli]
-	ld [wEnemyWrapCount], a
+	ld [wOTTrademonID], a
 	ld a, [hl]
-	ld [wPlayerCharging], a
+	ld [wOTTrademonID + 1], a
 	ld bc, $a82c
 	callba GetCaughtGender
 	ld a, c
-	ld [wEnemyCharging], a
+	ld [wOTTrademonCaughtData], a
 	ld a, [wcd81]
 	ld [wc74e], a
 	call CloseSRAM
diff --git a/misc/mobile_5f.asm b/misc/mobile_5f.asm
index 044038e38..e031d962c 100644
--- a/misc/mobile_5f.asm
+++ b/misc/mobile_5f.asm
@@ -277,7 +277,7 @@ Function17d0f3: ; 17d0f3
 	ld [wOTTrademonSpecies], a
 	ld [CurPartySpecies], a
 	ld a, [wcd81]
-	ld [wc74e], a
+	ld [$c74e], a
 	ld hl, $c63d
 	ld de, wOTTrademonOTName
 	ld bc, 5
@@ -1000,7 +1000,7 @@ Function17d60b: ; 17d60b
 	call CloseSRAM
 	ld a, $6
 	call GetSRAMBank
-	ld de, wc708
+	ld de, $c708
 	ld a, c
 	and a
 	jr z, .asm_17d684
@@ -1060,7 +1060,7 @@ Function17d60b: ; 17d60b
 	call CloseSRAM
 	ld a, $5
 	call GetSRAMBank
-	ld hl, wc708
+	ld hl, $c708
 	ld de, $b1b3
 	ld a, [$b1b1]
 	ld c, a
@@ -1477,7 +1477,7 @@ Function17d902: ; 17d902
 
 Function17d93a: ; 17d93a
 	call Function17e415
-	ld de, wc708
+	ld de, $c708
 	ld bc, $0005
 	call CopyBytes
 	call Function17e41e
@@ -1486,25 +1486,25 @@ Function17d93a: ; 17d93a
 	push af
 	ld a, $1
 	ld [rSVBK], a
-	ld a, [wc70c]
+	ld a, [$c70c]
 	call Function17e6de
-	ld a, [wc70a]
+	ld a, [$c70a]
 	ld [CurPartySpecies], a
-	ld a, [wc70c]
+	ld a, [$c70c]
 	ld e, a
 	callba Function8bc6
 	call SetPalettes
-	ld a, [wc708]
+	ld a, [$c708]
 	ld l, a
-	ld a, [wc709]
+	ld a, [$c709]
 	ld h, a
-	ld a, [wc70b]
+	ld a, [$c70b]
 	ld c, a
 	decoord 0, 0
 	add hl, de
 	ld e, l
 	ld d, h
-	callba Functiond066e
+	callba HOF_AnimateFrontpic
 	pop af
 	ld [rSVBK], a
 	call Function17e349
@@ -1513,7 +1513,7 @@ Function17d93a: ; 17d93a
 
 Function17d98b: ; 17d98b
 	call Function17e415
-	ld de, wc708
+	ld de, $c708
 	ld bc, $0004
 	call CopyBytes
 	call Function17e41e
@@ -1522,17 +1522,17 @@ Function17d98b: ; 17d98b
 	push af
 	ld a, $1
 	ld [rSVBK], a
-	ld a, [wc70b]
+	ld a, [$c70b]
 	call Function17e6de
-	ld a, [wc70a]
+	ld a, [$c70a]
 	ld [TrainerClass], a
-	ld a, [wc70b]
+	ld a, [$c70b]
 	ld e, a
 	callba Function8bbd
 	call SetPalettes
-	ld a, [wc708]
+	ld a, [$c708]
 	ld e, a
-	ld a, [wc709]
+	ld a, [$c709]
 	ld d, a
 	push de
 	ld de, VTiles2
@@ -1541,7 +1541,7 @@ Function17d98b: ; 17d98b
 	decoord 0, 0
 	add hl, de
 	ld bc, $0707
-	predef FillBox
+	predef PlaceGraphic
 	pop af
 	ld [rSVBK], a
 	call Function17e349
@@ -1550,34 +1550,34 @@ Function17d98b: ; 17d98b
 
 Function17d9e3: ; 17d9e3
 	call Function17e415
-	ld de, wc708
+	ld de, $c708
 	ld bc, $0007
 	call CopyBytes
 	call Function17e41e
-	ld a, [wc70b]
+	ld a, [$c70b]
 	push af
 	cp $c0
 	jr c, .asm_17da01
-	ld a, [wc70c]
+	ld a, [$c70c]
 	ld [rSVBK], a
 	jr .asm_17da07
 
 .asm_17da01
-	ld a, [wc70c]
+	ld a, [$c70c]
 	call GetSRAMBank
 
 .asm_17da07
-	ld a, [wc708]
+	ld a, [$c708]
 	ld l, a
-	ld a, [wc709]
+	ld a, [$c709]
 	ld h, a
-	ld a, [wc70a]
+	ld a, [$c70a]
 	ld e, a
-	ld a, [wc70b]
+	ld a, [$c70b]
 	ld d, a
-	ld a, [wc70d]
+	ld a, [$c70d]
 	ld c, a
-	ld a, [wc70e]
+	ld a, [$c70e]
 	ld b, a
 	call CopyBytes
 	pop af
@@ -1596,28 +1596,28 @@ Function17d9e3: ; 17d9e3
 
 Function17da31: ; 17da31
 	call Function17e415
-	ld de, wc708
+	ld de, $c708
 	ld bc, $0004
 	call CopyBytes
 	call Function17e41e
-	ld a, [wc709]
+	ld a, [$c709]
 	push af
 	cp $c0
 	jr c, .asm_17da4f
-	ld a, [wc70a]
+	ld a, [$c70a]
 	ld [rSVBK], a
 	jr .asm_17da55
 
 .asm_17da4f
-	ld a, [wc70a]
+	ld a, [$c70a]
 	call GetSRAMBank
 
 .asm_17da55
-	ld a, [wc708]
+	ld a, [$c708]
 	ld e, a
-	ld a, [wc709]
+	ld a, [$c709]
 	ld d, a
-	ld a, [wc70b]
+	ld a, [$c70b]
 	ld c, a
 	bit 7, c
 	jr nz, .asm_17da70
@@ -1897,22 +1897,22 @@ Function17dc1f: ; 17dc1f
 	ld [rSVBK], a
 	ld hl, $c688
 	ld a, $40
-	ld [wc708], a
+	ld [$c708], a
 	ld a, [hli]
-	ld [wc70a], a
+	ld [$c70a], a
 	add $5
-	ld [wc70c], a
+	ld [$c70c], a
 	ld a, [hli]
-	ld [wc709], a
+	ld [$c709], a
 	add $4
-	ld [wc70b], a
+	ld [$c70b], a
 	ld a, $96
-	ld [wc70d], a
+	ld [$c70d], a
 	ld a, $5c
-	ld [wc70e], a
+	ld [$c70e], a
 	ld a, $1
-	ld [wEnemyGoesFirst], a
-	ld hl, wc708
+	ld [$c70f], a
+	ld hl, $c708
 	call LoadMenuDataHeader
 	call VerticalMenu
 	jr nc, .asm_17dc6e
@@ -2075,112 +2075,112 @@ Function17dd30: ; 17dd30
 
 Function17dd49: ; 17dd49
 	call Function17e415
-	ld de, wc708
+	ld de, $c708
 	ld bc, $000a
 	call CopyBytes
-	ld a, [wc711]
+	ld a, [$c711]
 	ld c, a
 	ld b, $0
 	call CopyBytes
-	ld a, [wc70a]
+	ld a, [$c70a]
 	cp $c0
-	jr c, .asm_17dd6c
-	ld a, [wc708]
+	jr c, .sram
+	ld a, [$c708]
 	ld [rSVBK], a
-	jr .asm_17dd72
+	jr .got_bank
 
-.asm_17dd6c
-	ld a, [wc708]
+.sram
+	ld a, [$c708]
 	call GetSRAMBank
 
-.asm_17dd72
-	ld a, [wc709]
+.got_bank
+	ld a, [$c709]
 	ld l, a
-	ld a, [wc70a]
+	ld a, [$c70a]
 	ld h, a
 	ld de, $c688
-	ld a, [wc711]
+	ld a, [$c711]
 	ld c, a
 	ld b, $0
 	call CopyBytes
-	ld a, [wc70a]
+	ld a, [$c70a]
 	cp $c0
-	jr c, .asm_17dd93
+	jr c, .close_sram
 	ld a, $4
 	ld [rSVBK], a
-	jr .asm_17dd96
+	jr .exited_bank
 
-.asm_17dd93
+.close_sram
 	call CloseSRAM
 
-.asm_17dd96
-	ld a, [wc711]
+.exited_bank
+	ld a, [$c711]
 	ld c, a
-	ld hl, wc712
+	ld hl, $c712
 	ld de, $c688
-.asm_17dda0
+.loop
 	ld a, [de]
 	inc de
 	cp [hl]
 	inc hl
-	jr z, .asm_17ddaa
-	jr c, .asm_17ddc1
-	jr .asm_17ddb7
+	jr z, .next
+	jr c, .load
+	jr .load2
 
-.asm_17ddaa
+.next
 	dec c
-	jr nz, .asm_17dda0
-	ld a, [wc70d]
+	jr nz, .loop
+	ld a, [$c70d]
 	ld l, a
-	ld a, [wc70e]
+	ld a, [$c70e]
 	ld h, a
-	jr .asm_17ddc9
+	jr .done
 
-.asm_17ddb7
-	ld a, [wEnemyGoesFirst]
+.load2
+	ld a, [$c70f]
 	ld l, a
-	ld a, [wc710]
+	ld a, [$c710]
 	ld h, a
-	jr .asm_17ddc9
+	jr .done
 
-.asm_17ddc1
-	ld a, [wc70b]
+.load
+	ld a, [$c70b]
 	ld l, a
-	ld a, [wc70c]
+	ld a, [$c70c]
 	ld h, a
 
-.asm_17ddc9
+.done
 	call Function17e40f
 	ret
 ; 17ddcd
 
 Function17ddcd: ; 17ddcd
 	call Function17e415
-	ld de, wc708
+	ld de, $c708
 	ld bc, $0008
 	call CopyBytes
-	ld a, [wc70a]
+	ld a, [$c70a]
 	cp $c0
 	jr c, .asm_17dde7
-	ld a, [wc708]
+	ld a, [$c708]
 	ld [rSVBK], a
 	jr .asm_17dded
 
 .asm_17dde7
-	ld a, [wc708]
+	ld a, [$c708]
 	call GetSRAMBank
 
 .asm_17dded
-	ld a, [wc709]
+	ld a, [$c709]
 	ld e, a
-	ld a, [wc70a]
+	ld a, [$c70a]
 	ld d, a
 	ld a, [de]
-	ld [wc710], a
-	ld a, [wc70b]
+	ld [$c710], a
+	ld a, [$c70b]
 	ld c, a
 	ld b, $0
-	ld a, [wc70a]
+	ld a, [$c70a]
 	cp $c0
 	jr c, .asm_17de0c
 	ld a, $4
@@ -2195,20 +2195,20 @@ Function17ddcd: ; 17ddcd
 	ld hl, Unknown_17da8c
 	add hl, bc
 	ld a, [hl]
-	ld hl, wc710
+	ld hl, $c710
 	and [hl]
 	pop hl
 	jr nz, .asm_17de26
-	ld a, [wc70e]
+	ld a, [$c70e]
 	ld l, a
-	ld a, [wEnemyGoesFirst]
+	ld a, [$c70f]
 	ld h, a
 	jr .asm_17de2e
 
 .asm_17de26
-	ld a, [wc70c]
+	ld a, [$c70c]
 	ld l, a
-	ld a, [wc70d]
+	ld a, [$c70d]
 	ld h, a
 
 .asm_17de2e
@@ -2218,26 +2218,26 @@ Function17ddcd: ; 17ddcd
 
 Function17de32: ; 17de32
 	call Function17e415
-	ld de, wc708
+	ld de, $c708
 	ld bc, $0009
 	call CopyBytes
-	ld a, [wc710]
+	ld a, [$c710]
 	ld c, a
 	ld b, $0
 	call CopyBytes
 	ld a, $6
 	call GetSRAMBank
 	call Function17f4f6
-	ld a, [wc708]
+	ld a, [$c708]
 	ld e, a
-	ld a, [wc709]
+	ld a, [$c709]
 	ld d, a
 	add hl, de
 	ld e, l
 	ld d, h
-	ld a, [wc710]
+	ld a, [$c710]
 	ld c, a
-	ld hl, wc711
+	ld hl, $c711
 .asm_17de61
 	ld a, [de]
 	inc de
@@ -2250,23 +2250,23 @@ Function17de32: ; 17de32
 .asm_17de6b
 	dec c
 	jr nz, .asm_17de61
-	ld a, [wc70c]
+	ld a, [$c70c]
 	ld l, a
-	ld a, [wc70d]
+	ld a, [$c70d]
 	ld h, a
 	jr .asm_17de8a
 
 .asm_17de78
-	ld a, [wc70e]
+	ld a, [$c70e]
 	ld l, a
-	ld a, [wEnemyGoesFirst]
+	ld a, [$c70f]
 	ld h, a
 	jr .asm_17de8a
 
 .asm_17de82
-	ld a, [wc70a]
+	ld a, [$c70a]
 	ld l, a
-	ld a, [wc70b]
+	ld a, [$c70b]
 	ld h, a
 
 .asm_17de8a
@@ -2277,20 +2277,20 @@ Function17de32: ; 17de32
 
 Function17de91: ; 17de91
 	call Function17e415
-	ld de, wc708
+	ld de, $c708
 	ld bc, $0007
 	call CopyBytes
 	ld a, $6
 	call GetSRAMBank
 	call Function17f4f6
-	ld a, [wc708]
+	ld a, [$c708]
 	ld e, a
-	ld a, [wc709]
+	ld a, [$c709]
 	ld d, a
 	add hl, de
 	ld e, l
 	ld d, h
-	ld a, [wc70a]
+	ld a, [$c70a]
 	ld c, a
 	ld b, $0
 	ld hl, Unknown_17da8c
@@ -2300,16 +2300,16 @@ Function17de91: ; 17de91
 	ld h, d
 	and [hl]
 	jr nz, .asm_17deca
-	ld a, [wc70d]
+	ld a, [$c70d]
 	ld l, a
-	ld a, [wc70e]
+	ld a, [$c70e]
 	ld h, a
 	jr .asm_17ded2
 
 .asm_17deca
-	ld a, [wc70b]
+	ld a, [$c70b]
 	ld l, a
-	ld a, [wc70c]
+	ld a, [$c70c]
 	ld h, a
 
 .asm_17ded2
@@ -2320,7 +2320,7 @@ Function17de91: ; 17de91
 
 Function17ded9: ; 17ded9
 	call Function17e415
-	ld de, wc708
+	ld de, $c708
 	ld bc, $001f
 	call CopyBytes
 	call Function17e32b
@@ -2328,7 +2328,7 @@ Function17ded9: ; 17ded9
 	push af
 	ld a, $1
 	ld [rSVBK], a
-	ld hl, wc708
+	ld hl, $c708
 	ld a, [hli]
 	ld [CurPartySpecies], a
 	ld [TempEnemyMonSpecies], a
@@ -2661,14 +2661,14 @@ asm_17e0ee
 
 Function17e0fd: ; 17e0fd
 	call Function17e415
-	ld de, wc708
+	ld de, $c708
 	ld bc, $0006
 	call CopyBytes
 	ld a, [rSVBK]
 	push af
 	ld a, $1
 	ld [rSVBK], a
-	ld hl, wc708
+	ld hl, $c708
 	ld a, [hli]
 	ld [CurItem], a
 	ld a, [hli]
@@ -2695,14 +2695,14 @@ Function17e0fd: ; 17e0fd
 
 Function17e133: ; 17e133
 	call Function17e415
-	ld de, wc708
+	ld de, $c708
 	ld bc, $0005
 	call CopyBytes
 	ld a, [rSVBK]
 	push af
 	ld a, $1
 	ld [rSVBK], a
-	ld hl, wc708
+	ld hl, $c708
 	ld a, [hli]
 	ld [ScriptVar], a
 	push hl
@@ -2726,14 +2726,14 @@ Function17e133: ; 17e133
 
 Function17e165: ; 17e165
 	call Function17e415
-	ld de, wc708
+	ld de, $c708
 	ld bc, $0005
 	call CopyBytes
 	ld a, [rSVBK]
 	push af
 	ld a, $1
 	ld [rSVBK], a
-	ld hl, wc708
+	ld hl, $c708
 	ld a, [hli]
 	ld [CurItem], a
 	push hl
@@ -2763,31 +2763,31 @@ Function17e165: ; 17e165
 
 Function17e1a1: ; 17e1a1
 	call Function17e415
-	ld de, wc708
+	ld de, $c708
 	ld bc, $000d
 	call CopyBytes
-	ld a, [wc70a]
+	ld a, [$c70a]
 	cp $c0
 	jr c, .asm_17e1bb
-	ld a, [wc708]
+	ld a, [$c708]
 	ld [rSVBK], a
 	jr .asm_17e1c1
 
 .asm_17e1bb
-	ld a, [wc708]
+	ld a, [$c708]
 	call GetSRAMBank
 
 .asm_17e1c1
-	ld a, [wc709]
+	ld a, [$c709]
 	ld l, a
-	ld a, [wc70a]
+	ld a, [$c70a]
 	ld h, a
 	ld de, $c608
-	ld a, [wc70b]
+	ld a, [$c70b]
 	ld c, a
 	ld b, $0
 	call CopyBytes
-	ld a, [wc70a]
+	ld a, [$c70a]
 	cp $c0
 	jr c, .asm_17e1e2
 	ld a, $4
@@ -2798,28 +2798,28 @@ Function17e1a1: ; 17e1a1
 	call CloseSRAM
 
 .asm_17e1e5
-	ld a, [wc70e]
+	ld a, [$c70e]
 	cp $c0
 	jr c, .asm_17e1f3
-	ld a, [wc70c]
+	ld a, [$c70c]
 	ld [rSVBK], a
 	jr .asm_17e1f9
 
 .asm_17e1f3
-	ld a, [wc70c]
+	ld a, [$c70c]
 	call GetSRAMBank
 
 .asm_17e1f9
-	ld a, [wc70d]
+	ld a, [$c70d]
 	ld l, a
-	ld a, [wc70e]
+	ld a, [$c70e]
 	ld h, a
 	ld de, $c688
-	ld a, [wc70b]
+	ld a, [$c70b]
 	ld c, a
 	ld b, $0
 	call CopyBytes
-	ld a, [wc70e]
+	ld a, [$c70e]
 	cp $c0
 	jr c, .asm_17e21a
 	ld a, $4
@@ -2830,7 +2830,7 @@ Function17e1a1: ; 17e1a1
 	call CloseSRAM
 
 .asm_17e21d
-	ld a, [wc70b]
+	ld a, [$c70b]
 	ld c, a
 	ld hl, $c688
 	ld de, $c608
@@ -2846,23 +2846,23 @@ Function17e1a1: ; 17e1a1
 .asm_17e231
 	dec c
 	jr nz, .asm_17e227
-	ld a, [wc711]
+	ld a, [$c711]
 	ld l, a
-	ld a, [wc712]
+	ld a, [$c712]
 	ld h, a
 	jr .asm_17e250
 
 .asm_17e23e
-	ld a, [wEnemyGoesFirst]
+	ld a, [$c70f]
 	ld l, a
-	ld a, [wc710]
+	ld a, [$c710]
 	ld h, a
 	jr .asm_17e250
 
 .asm_17e248
-	ld a, [wc712 + 1]
+	ld a, [$c712 + 1]
 	ld l, a
-	ld a, [wc712 + 2]
+	ld a, [$c712 + 2]
 	ld h, a
 
 .asm_17e250
@@ -3647,9 +3647,9 @@ Function17e691: ; 17e691
 
 Function17e6de: ; 17e6de
 	push af
-	ld a, [wc708]
+	ld a, [$c708]
 	ld l, a
-	ld a, [wc709]
+	ld a, [$c709]
 	ld h, a
 	decoord 0, 0, AttrMap
 	add hl, de
@@ -4345,14 +4345,14 @@ Function17f382: ; 17f382
 Function17f3c9: ; 17f3c9
 	push bc
 	ld hl, wcd36
-	ld de, wc708
+	ld de, $c708
 	ld bc, $000c
 	call CopyBytes
 	pop de
 	ld c, $0
 	callba Function11c075
 	push hl
-	ld hl, wc708
+	ld hl, $c708
 	ld de, wcd36
 	ld bc, $000c
 	call CopyBytes
diff --git a/wram.asm b/wram.asm
index f9816f97b..ce781b51d 100644
--- a/wram.asm
+++ b/wram.asm
@@ -359,23 +359,20 @@ TileMapEnd::
 
 
 SECTION "Battle", WRAM0
+wc608::
 wOddEgg:: party_struct OddEgg
 wOddEggName:: ds PKMN_NAME_LENGTH
 wOddEggOTName:: ds PKMN_NAME_LENGTH
-	ds wOddEgg - @
+	ds wc608 - @
 
 wBT_OTTemp:: battle_tower_struct wBT_OTTemp
-	ds wBT_OTTemp - @
+	ds wc608 - @
 
 	hall_of_fame wHallOfFameTemp
-	ds wHallOfFameTemp - @
+	ds wc608 - @
 
 wMisc:: ; ds (SCREEN_WIDTH + 4) * (SCREEN_HEIGHT + 2)
-wBattle::
-wc608::
-	ds 7
-wc60f::
-	ds 3
+	ds 10
 wc612::
 	ds 10
 wInitHourBuffer:: ; c61c
@@ -383,8 +380,9 @@ wInitHourBuffer:: ; c61c
 wc626::
 	ds wc608 - @
 
-wEnemyMoveStruct::  move_struct wEnemyMoveStruct
-wPlayerMoveStruct:: move_struct wPlayerMoveStruct
+wBattle::
+wEnemyMoveStruct::  move_struct wEnemyMoveStruct ; c608
+wPlayerMoveStruct:: move_struct wPlayerMoveStruct ; c60f
 
 EnemyMonNick::  ds PKMN_NAME_LENGTH ; c616
 BattleMonNick:: ds PKMN_NAME_LENGTH ; c621
@@ -542,17 +540,17 @@ PlayerDamageTaken:: ; c682
 EnemyDamageTaken:: ; c684
 	ds 2
 
-wBattleReward:: ds 3
+wBattleReward:: ds 3 ; c686
 wBattleAnimParam::
 wKickCounter::
-wPresentPower:: ds 1
+wPresentPower:: ds 1 ; c689
 BattleScriptBuffer:: ; c68a
 	ds 40
 
 BattleScriptBufferLoc:: ; c6b2
 	ds 2
 
-wTurnEnded:: ds 1
+wTurnEnded:: ds 1 ; c6b4
 	ds 1
 
 PlayerStats:: ; c6b6
@@ -592,10 +590,8 @@ EnemyDefLevel:: ; c6d5
 	ds 1
 EnemySpdLevel:: ; c6d6
 	ds 1
-wTownMapCursorLandmark::
 EnemySAtkLevel:: ; c6d7
 	ds 1
-wTownMapPlayerIconLandmark::
 EnemySDefLevel:: ; c6d8
 	ds 1
 EnemyAccLevel:: ; c6d9
@@ -616,7 +612,8 @@ PlayerSubstituteHP:: ; c6df
 EnemySubstituteHP:: ; c6e0
 	ds 1
 
-wc6e1:: ds 2
+wUnusedPlayerLockedMove:: ds 1 ; c6e1
+	ds 1
 CurPlayerMove:: ; c6e3
 	ds 1
 CurEnemyMove:: ; c6e4
@@ -626,16 +623,12 @@ LinkBattleRNCount:: ; c6e5
 ; how far through the prng stream
 	ds 1
 
-wc6e6:: ds 1
-wc6e7:: ds 1
-wc6e8:: ds 1
-wc6e9::
+wEnemyItemState:: ds 1 ; c6e6
+	ds 2
 CurEnemyMoveNum:: ; c6e9
 	ds 1
 
-wEnemyHPAtTimeOfPlayerSwitch::
-wc6ea:: ds 1
-wc6eb:: ds 1
+wEnemyHPAtTimeOfPlayerSwitch:: ds 2 ; c6ea
 wPayDayMoney:: ds 3 ; c6ec
 
 wSafariMonAngerCount:: ds 1
@@ -649,12 +642,11 @@ DisabledMove:: ; c6f5
 	ds 1
 EnemyDisabledMove:: ; c6f6
 	ds 1
-wc6f7:: ds 1
+wWhichMonFaintedFirst:: ds 1
 
 ; exists so you can't counter on switch
 LastEnemyCounterMove:: ; c6f8
 	ds 1
-wc6f9::
 LastPlayerCounterMove:: ; c6f9
 	ds 1
 
@@ -663,11 +655,9 @@ wEnemyMinimized:: ds 1 ; c6fa
 AlreadyFailed:: ; c6fb
 	ds 1
 
-wc6fc:: ds 1
-wc6fd:: ds 1
-wc6fe::
+wBattleParticipantsIncludingFainted:: ds 1 ; c6fc
+wDanger:: ds 1 ; c6fd
 wPlayerMinimized:: ds 1 ; c6fe
-wc6ff::
 PlayerScreens:: ; c6ff
 ; bit
 ; 4 reflect
@@ -676,34 +666,25 @@ PlayerScreens:: ; c6ff
 ; 0 spikes
 	ds 1
 
-wc700::
 EnemyScreens:: ; c700
 ; see PlayerScreens
 	ds 1
 
-wc701::
 PlayerSafeguardCount:: ; c701
 	ds 1
-wc702::
 PlayerLightScreenCount:: ; c702
 	ds 1
-wc703::
 PlayerReflectCount:: ; c703
 	ds 1
 
-wc704:: ds 1
-wc705::
+	ds 1
 EnemySafeguardCount:: ; c705
 	ds 1
-wc706::
 EnemyLightScreenCount:: ; c706
 	ds 1
 EnemyReflectCount:: ; c707
 	ds 1
-
-wc708:: ds 1
-wc709:: ds 1
-wc70a::
+	ds 2
 Weather:: ; c70a
 ; 00 normal
 ; 01 rain
@@ -714,81 +695,62 @@ Weather:: ; c70a
 ; 06 sandstorm subsided
 	ds 1
 
-wc70b::
 WeatherCount:: ; c70b
 ; # turns remaining
 	ds 1
 
-wc70c::
 LoweredStat:: ; c70c
 	ds 1
-wc70d::
 EffectFailed:: ; c70d
 	ds 1
-wc70e::
 FailedMessage:: ; c70e
 	ds 1
-wc70f::
-wEnemyGoesFirst::
+wEnemyGoesFirst:: ; c70f
 	ds 1
-wc710::
 wPlayerIsSwitching:: ds 1 ; c710
-wc711::
 wEnemyIsSwitching::  ds 1 ; c711
 
-wc712::
 PlayerUsedMoves:: ; c712
 ; add a move that has been used once by the player
 ; added in order of use
 	ds NUM_MOVES
 
-wc716:: ds 1
-wEnemySwitchMonParam::
-wc717:: ds 1
-wc718::
-wEnemySwitchMonIndex:: ds 1
-wTempLevel::
-wc719:: ds 1
-LastPlayerMon:: ; c71a
-wc71a:: ds 1
+wEnemyAISwitchScore:: ds 1 ; c716
+wEnemySwitchMonParam:: ds 1 ; c717
+wEnemySwitchMonIndex:: ds 1 ; c718
+wTempLevel:: ds 1 ; c719
+LastPlayerMon:: ds 1 ; c71a
 LastPlayerMove:: ; c71b
 	ds 1
 LastEnemyMove:: ; c71c
 	ds 1
 
-wPlayerFutureSightCount:: ds 1
-wEnemyFutureSightCount:: ds 1
-wc71f:: ds 1
-wc720:: ds 4 ; copy from/to EnemyMonBaseStats, length=7
-wc724:: ds 3
-wPlayerFutureSightDamage:: ds 2
-wEnemyFutureSightDamage:: ds 2
-wPlayerRageCounter:: ds 1
-wEnemyRageCounter:: ds 1
-wc72d:: ds 1 ; if 0 then PrintButItFailed
-wc72e::
-wPlayerTrappingMove:: ds 1
-wc72f::
-wEnemyTrappingMove:: ds 1
-wc730::
-wPlayerWrapCount:: ds 1
-wc731::
-wEnemyWrapCount:: ds 1
-wc732::
-wPlayerCharging:: ds 1
-wEnemyCharging::
-wc733:: ds 1
-wTradeAnimPointer::
-wc734::
+wPlayerFutureSightCount:: ds 1 ; c71d
+wEnemyFutureSightCount:: ds 1 ; c71e
+wGivingExperienceToExpShareHolders:: ds 1 ; c71f
+wBackupEnemyMonBaseStats:: ds 5 ; c720
+wBackupEnemyMonCatchRate:: db ; c725
+wBackupEnemyMonBaseExp:: db ; c726
+wPlayerFutureSightDamage:: ds 2 ; c727
+wEnemyFutureSightDamage:: ds 2 ; c729
+wPlayerRageCounter:: ds 1 ; c72b
+wEnemyRageCounter:: ds 1 ; c72c
+wBeatUpHitAtLeastOnce:: ds 1 ; c72d
+wPlayerTrappingMove:: ds 1 ; c72e
+wEnemyTrappingMove:: ds 1 ; c72f
+wPlayerWrapCount:: ds 1 ; c730
+wEnemyWrapCount:: ds 1 ; c731
+wPlayerCharging:: ds 1 ; c732
+wEnemyCharging:: ds 1 ; c733
 BattleEnded:: ; c734
 	ds 1
 
-wWildMonMoves:: ds NUM_MOVES
-wWildMonPP:: ds NUM_MOVES
-wAmuletCoin:: ds 1
-wSomeoneIsRampaging:: ds 1
-wPlayerJustGotFrozen:: ds 1
-wEnemyJustGotFrozen:: ds 1
+wWildMonMoves:: ds NUM_MOVES ; c735
+wWildMonPP:: ds NUM_MOVES ; c739
+wAmuletCoin:: ds 1 ; c73a
+wSomeoneIsRampaging:: ds 1 ; c73b
+wPlayerJustGotFrozen:: ds 1 ; c73c
+wEnemyJustGotFrozen:: ds 1 ; c73d
 wBattleEnd::
 ; Battle RAM
 
@@ -798,6 +760,7 @@ wTrademons::
 wPlayerTrademon:: trademon wPlayerTrademon
 wOTTrademon::     trademon wOTTrademon
 wTrademonsEnd::
+wTradeAnimPointer::
 	ds 2
 wLinkPlayer1Name:: ds NAME_LENGTH
 wLinkPlayer2Name:: ds NAME_LENGTH
@@ -827,7 +790,8 @@ wPokegearPhoneScrollPosition:: ds 1 ; c6d2
 wPokegearPhoneSelectedPerson:: ds 1 ; c6d3
 wPokegearPhoneSubmenuCursor:: ds 1 ; c6d4
 wPokegearMapCursorObjectPointer:: ds 2 ; c6d5
-	ds 2
+wPokegearMapCursorLandmark:: ds 1 ; c6d7
+wPokegearMapPlayerIconLandmark:: ds 1 ; c6d8
 wPokegearRadioChannelBank:: ds 1 ; c6d9
 wPokegearRadioChannelAddr:: ds 2 ; c6da
 wPokegearRadioMusicPlaying:: ds 1 ; c6dc
@@ -2226,8 +2190,8 @@ wDudeKeyItems:: ds 18
 wDudeKeyItemsEnd:: ds 1
 
 wDudeNumBalls:: ds 1 ; d2a6
-wDudeBalls:: ds 2 * 4
-wDudeBallsEnd:: ds 1
+wDudeBalls:: ds 2 * 4 ; d2a7
+wDudeBallsEnd:: ds 1 ; d2af
 wDudeBagEnd::
 	ds wDudeBag - @
 
@@ -2286,15 +2250,12 @@ ScriptDelay:: ; d44d
 
 wPriorityScriptBank::
 wScriptTextBank::
-wd44e:: ds 1
+	ds 1 ; d44e
 wPriorityScriptAddr::
-wScriptTextAddr::
-wd44f:: ds 1
-wd450:: ds 1
-wd451:: ds 1
+wScriptTextAddr:: ds 2 ; d44f
+	ds 1
 wWildEncounterCooldown:: ds 1
-wd453:: ds 1
-wd454:: ds 1
+wXYComparePointer:: ds 2
 	ds 4
 
 wBattleScriptFlags:: ds 2
@@ -2494,8 +2455,7 @@ CurTimeOfDay:: ; d848
 
 	ds 1
 
-wSecretID:: ds 1
-wd84b:: ds 1
+wSecretID:: ds 2
 StatusFlags:: ; d84c
 	; 0 - pokedex
 	; 1 - unown dex
@@ -2581,7 +2541,8 @@ PlayerState:: ; d95d
 	ds 1
 
 wHallOfFameCount:: ds 2
-wTradeFlags:: ds 2
+wTradeFlags:: flag_array 6 ; d960
+	ds 1
 MooMooBerries:: ; d962
 	ds 1 ; how many berries fed to MooMoo
 UndergroundSwitchPositions:: ; d963
@@ -2679,8 +2640,8 @@ wMobileBattleRoomTrigger::                   ds 1 ; d9c0
 
 ;SECTION "Events", WRAMX, BANK [1]
 
-wJackFightCount::    ds 1
-                     ds 1
+wJackFightCount::    ds 1 ; d9f2
+wBeverlyFightCount:: ds 1 ; unused
 wHueyFightCount::    ds 1
 wGavenFightCount::   ds 1
 wBethFightCount::    ds 1
@@ -2693,23 +2654,21 @@ wLizFightCount::     ds 1
 wAnthonyFightCount:: ds 1
 wToddFightCount::    ds 1
 wGinaFightCount::    ds 1
-
-wda00:: ds 1
-
+wIrwinFightCount::   ds 1 ; unused
 wArnieFightCount::   ds 1
 wAlanFightCount::    ds 1
 wDanaFightCount::    ds 1
 wChadFightCount::    ds 1
-                     ds 1
+wDerekFightCount::   ds 1 ; unused
 wTullyFightCount::   ds 1
 wBrentFightCount::   ds 1
 wTiffanyFightCount:: ds 1
 wVanceFightCount::   ds 1
 wWiltonFightCount::  ds 1
-                     ds 1
+wKenjiFightCount::   ds 1 ; unused
 wParryFightCount::   ds 1
 wErinFightCount::    ds 1
-
+; da0e
 	ds 100
 
 EventFlags:: ; da72
@@ -2736,32 +2695,22 @@ BikeFlags:: ; dbf5
 	ds 1
 
 	ds 1
-wCurrentMapTriggerPointer:: ; dbf7
-	ds 2
+wCurrentMapTriggerPointer:: ds 2 ; dbf7
 
-wCurrentCaller:: ds 2
-wCurrMapWarpCount:: ds 1
-wCurrMapWarpHeaderPointer:: ds 1
-wdbfd:: ds 1
-wCurrentMapXYTriggerCount:: ds 1
-wCurrentMapXYTriggerHeaderPointer:: ds 1
-wdc00:: ds 1
-wCurrentMapSignpostCount:: ds 1
-wCurrentMapSignpostHeaderPointer::
-wdc02:: ds 1
-wdc03:: ds 1
-wCurrentMapPersonEventCount::
-wdc04:: ds 1
-wCurrentMapPersonEventHeaderPointer::
-wdc05:: ds 1
-wdc06:: ds 1
-wCurrMapTriggerCount:: ds 1
-wCurrMapTriggerHeaderPointer:: ds 1
-wdc09:: ds 1
-wCurrMapCallbackCount:: ds 1
-wCurrMapCallbackHeaderPointer:: ds 2
-wdc0d:: ds 1
-wdc0e:: ds 1
+wCurrentCaller:: ds 2 ; dbf9
+wCurrMapWarpCount:: ds 1 ; dbfb
+wCurrMapWarpHeaderPointer:: ds 2 ; dbfc
+wCurrentMapXYTriggerCount:: ds 1 ; dbfe
+wCurrentMapXYTriggerHeaderPointer:: ds 2 ; dbff
+wCurrentMapSignpostCount:: ds 1 ; dc01
+wCurrentMapSignpostHeaderPointer:: ds 2 ; dc02
+wCurrentMapPersonEventCount:: ds 1 ; dc04
+wCurrentMapPersonEventHeaderPointer:: ds 2 ; dc05
+wCurrMapTriggerCount:: ds 1 ; dc07
+wCurrMapTriggerHeaderPointer:: ds 2 ; dc08
+wCurrMapCallbackCount:: ds 1 ; dc0a
+wCurrMapCallbackHeaderPointer:: ds 2 ; dc0b
+	ds 2
 
 ; Sprite id of each decoration
 Bed:: ; dc0f
@@ -2782,40 +2731,32 @@ BigDoll:: ; dc16
 	ds 1
 
 ; Items bought from Mom
-wWhichMomItem::
-wdc17:: ds 1
-wWhichMomItemSet::
-	ds 1
-MomItemTriggerBalance::
-wdc19:: ds 1
-wdc1a:: ds 1
-wdc1b:: ds 1
+wWhichMomItem:: ds 1 ; dc17
+wWhichMomItemSet:: ds 1 ; dc18
+MomItemTriggerBalance:: ds 3 ; dc19
 
 wDailyResetTimer:: ds 2
 DailyFlags:: ds 1
 WeeklyFlags:: ds 1
 SwarmFlags:: ds 1
-wdc21:: ds 1
-wdc22:: ds 1
+	ds 2
 wStartDay:: ds 1
-wdc24:: ds 2
-wdc26:: ds 1
+	ds 3
 
-FruitTreeFlags:: ; dc27
-	ds 1
+FruitTreeFlags:: flag_array NUM_FRUIT_TREES ; dc27
 
-	ds 5
+	ds 2
 
 wLuckyNumberDayBuffer:: ds 2
 	ds 2
 wSpecialPhoneCallID:: ds 1
 	ds 3
 wBugContestStartTime:: ds 4 ; day, hour, min, sec
-wdc39:: ds 1
+wUnusedTwoDayTimerOn:: ds 1 ; dc39
 wUnusedTwoDayTimer:: ds 1
 wUnusedTwoDayTimerStartDate:: ds 1
 	ds 4
-wdc40:: ds 1
+wMobileOrCable_LastSelection:: ds 1
 wdc41:: ds 1
 wdc42:: ds 8
 wBuenasPassword:: ds 1
@@ -2842,6 +2783,7 @@ wParkBallsRemaining::
 wSafariBallsRemaining:: ds 1 ; dc79
 wSafariTimeRemaining:: ds 2 ; dc7a
 wPhoneList:: ds CONTACT_LIST_SIZE ; dc7c
+; dc86
 	ds 23
 wLuckyNumberShowFlag:: ds 2 ; dc9d
 wLuckyIDNumber:: ds 2 ; dc9f
@@ -2966,11 +2908,7 @@ wEggNick:: ds PKMN_NAME_LENGTH ; df65
 wEggOT::   ds NAME_LENGTH ; df70
 wEggMon::  box_struct wEggMon ; df7b
 
-wdf9b::
 wBugContestSecondPartySpecies:: ds 1
-
-
-wdf9c::
 wContestMon:: party_struct wContestMon ; df9c
 
 wDunsparceMapGroup:: ds 1
@@ -2997,8 +2935,7 @@ wRoamMons_LastMapGroup:: ds 1
 wBestMagikarpLengthFeet:: ds 1
 wBestMagikarpLengthInches:: ds 1
 wMagikarpRecordHoldersName:: ds NAME_LENGTH
-wdff5::
-
+; dff5
 wPokemonDataEnd::
 wGameDataEnd::
 

From 7cc2571529d6b3f5ffcbb71c62fab31b27ba224a Mon Sep 17 00:00:00 2001
From: PikalaxALT <PikalaxALT@gmail.com>
Date: Wed, 13 Jan 2016 00:39:41 -0500
Subject: [PATCH 08/13] Finish function labels in battle core

---
 battle/core.asm    | 266 ++++++++++++++++++++++-----------------------
 misc/mobile_40.asm |   2 +-
 sram.asm           |  19 +++-
 wram.asm           |   4 +-
 4 files changed, 149 insertions(+), 142 deletions(-)

diff --git a/battle/core.asm b/battle/core.asm
index f8f6340a8..646dc34ad 100644
--- a/battle/core.asm
+++ b/battle/core.asm
@@ -2158,14 +2158,14 @@ HandleEnemyMonFaint: ; 3cd55
 
 	ld a, $1
 	ld [wPlayerAction], a
-	call Function3cf4a
+	call HandleEnemySwitch
 	jp z, WildFled_EnemyFled_LinkBattleCanceled
 	jr DoubleSwitch
 
 .player_mon_not_fainted
 	ld a, $1
 	ld [wPlayerAction], a
-	call Function3cf4a
+	call HandleEnemySwitch
 	jp z, WildFled_EnemyFled_LinkBattleCanceled
 	xor a
 	ld [wPlayerAction], a
@@ -2406,7 +2406,7 @@ CheckEnemyTrainerDefeated: ; 3cf35
 	ret
 ; 3cf4a
 
-Function3cf4a: ; 3cf4a
+HandleEnemySwitch: ; 3cf4a
 	ld hl, EnemyHPPal
 	ld e, HP_BAR_LENGTH_PX
 	call UpdateHPPal
@@ -2442,15 +2442,13 @@ EnemyPartyMonEntrance: ; 3cf78
 	call BreakAttraction
 	pop af
 	and a
-	jr nz, .asm_3cf8f
-
+	jr nz, .set
 	call EnemySwitch
-	jr .asm_3cf92
+	jr .done_switch
 
-.asm_3cf8f
+.set
 	call EnemySwitch_SetMode
-
-.asm_3cf92
+.done_switch
 	call ResetBattleParticipants
 	call SetEnemyTurn
 	call SpikesDamage
@@ -2499,7 +2497,7 @@ WinTrainerBattle: ; 3cfa4
 	call PrintWinLossText
 
 .skip_win_loss_text
-	jp Function3d02b
+	jp HandleBattleReward
 
 .mobile
 	call BattleWinSlideInEnemyTrainerFrontpic
@@ -2528,7 +2526,7 @@ WinTrainerBattle: ; 3cfa4
 	ret
 ; 3d02b
 
-Function3d02b: ; 3d02b
+HandleBattleReward: ; 3d02b
 	ld a, [wAmuletCoin]
 	and a
 	call nz, .DoubleReward
@@ -2809,7 +2807,7 @@ HandlePlayerMonFaint: ; 3d14e
 	ret nz
 	ld a, $1
 	ld [wPlayerAction], a
-	call Function3cf4a
+	call HandleEnemySwitch
 	jp z, WildFled_EnemyFled_LinkBattleCanceled
 	jp DoubleSwitch
 ; 3d1aa
@@ -2999,7 +2997,7 @@ SetUpBattlePartyMenu: ; switch to fullscreen menu?
 	ret
 ; 3d313
 
-Function3d313: ; 3d313
+JumpToPartyMenuAndPrintText: ; 3d313
 	callba WritePartyMenuTilemap
 	callba PrintPartyMenuText
 	call WaitBGMap
@@ -3008,14 +3006,14 @@ Function3d313: ; 3d313
 	ret
 ; 3d329
 
-Function3d329: ; 3d329
+SelectBattleMon: ; 3d329
 	call IsMobileBattle
 	jr z, .mobile
 	callba PartyMenuSelect
 	ret
 
 .mobile
-	callba Function100cb5
+	callba Mobile_PartyMenuSelect
 	ret
 ; 3d33c
 
@@ -3023,8 +3021,8 @@ PickPartyMonInBattle: ; 3d33c
 .loop
 	ld a, $2 ; Which PKMN?
 	ld [PartyMenuActionText], a
-	call Function3d313
-	call Function3d329
+	call JumpToPartyMenuAndPrintText
+	call SelectBattleMon
 	ret c
 	call CheckIfPartyHasPkmnToBattleWith
 	jr z, .loop
@@ -3434,7 +3432,7 @@ FindPkmnInOTPartyToSwitchIntoBattle: ; 3d599
 	ld a, $1
 	ld [Buffer1], a
 	ld [Buffer2], a
-.asm_3d5a3
+.loop
 	ld hl, Buffer1
 	sla [hl]
 	inc hl
@@ -3442,10 +3440,10 @@ FindPkmnInOTPartyToSwitchIntoBattle: ; 3d599
 	inc b
 	ld a, [OTPartyCount]
 	cp b
-	jp z, Function3d672
+	jp z, ScoreMonTypeMatchups
 	ld a, [CurOTMon]
 	cp b
-	jr z, .asm_3d5d0
+	jr z, .discourage
 	ld hl, OTPartyMon1HP
 	push bc
 	ld a, b
@@ -3455,15 +3453,15 @@ FindPkmnInOTPartyToSwitchIntoBattle: ; 3d599
 	ld a, [hl]
 	or c
 	pop bc
-	jr z, .asm_3d5d0
+	jr z, .discourage
 	call LookUpTheEffectivenessOfEveryMove
 	call IsThePlayerPkmnTypesEffectiveAgainstOTPkmn
-	jr .asm_3d5a3
+	jr .loop
 
-.asm_3d5d0
+.discourage
 	ld hl, Buffer2
 	set 0, [hl]
-	jr .asm_3d5a3
+	jr .loop
 ; 3d5d7
 
 LookUpTheEffectivenessOfEveryMove: ; 3d5d7
@@ -3517,7 +3515,7 @@ IsThePlayerPkmnTypesEffectiveAgainstOTPkmn: ; 3d618
 	ld a, [hl]
 	dec a
 	ld hl, BaseData + 7 ; type
-	ld bc, $20
+	ld bc, BaseData1 - BaseData0
 	call AddNTimes
 	ld de, EnemyMonType
 	ld bc, 2
@@ -3529,80 +3527,80 @@ IsThePlayerPkmnTypesEffectiveAgainstOTPkmn: ; 3d618
 	callab BattleCheckTypeMatchup
 	ld a, [wd265]
 	cp 10 + 1 ; 1.0 + 0.1
-	jr nc, .asm_3d663
+	jr nc, .super_effective
 	ld a, [BattleMonType2]
 	ld [wPlayerMoveStruct + MOVE_TYPE], a
 	callab BattleCheckTypeMatchup
 	ld a, [wd265]
 	cp 10 + 1 ; 1.0 + 0.1
-	jr nc, .asm_3d663
+	jr nc, .super_effective
 	pop bc
 	ret
 
-.asm_3d663
+.super_effective
 	pop bc
 	ld hl, Buffer1
 	bit 0, [hl]
-	jr nz, .asm_3d66f
+	jr nz, .reset
 	inc hl
 	set 0, [hl]
 	ret
 
-.asm_3d66f
+.reset
 	res 0, [hl]
 	ret
 ; 3d672
 
-Function3d672: ; 3d672
-.asm_3d672
+ScoreMonTypeMatchups: ; 3d672
+.loop1
 	ld hl, Buffer1
 	sla [hl]
 	inc hl
 	sla [hl]
-	jr nc, .asm_3d672
+	jr nc, .loop1
 	ld a, [OTPartyCount]
 	ld b, a
 	ld c, [hl]
-.asm_3d681
+.loop2
 	sla c
-	jr nc, .asm_3d68a
+	jr nc, .okay
 	dec b
-	jr z, .asm_3d6a7
-	jr .asm_3d681
+	jr z, .loop5
+	jr .loop2
 
-.asm_3d68a
+.okay
 	ld a, [Buffer1]
 	and a
-	jr z, .asm_3d69a
+	jr z, .okay2
 	ld b, $ff
 	ld c, a
-.asm_3d693
+.loop3
 	inc b
 	sla c
-	jr nc, .asm_3d693
-	jr .asm_3d6c9
+	jr nc, .loop3
+	jr .quit
 
-.asm_3d69a
+.okay2
 	ld b, $ff
 	ld a, [Buffer2]
 	ld c, a
-.asm_3d6a0
+.loop4
 	inc b
 	sla c
-	jr c, .asm_3d6a0
-	jr .asm_3d6c9
+	jr c, .loop4
+	jr .quit
 
-.asm_3d6a7
+.loop5
 	ld a, [OTPartyCount]
 	ld b, a
 	call BattleRandom
 	and $7
 	cp b
-	jr nc, .asm_3d6a7
+	jr nc, .loop5
 	ld b, a
 	ld a, [CurOTMon]
 	cp b
-	jr z, .asm_3d6a7
+	jr z, .loop5
 	ld hl, OTPartyMon1HP
 	push bc
 	ld a, b
@@ -3612,9 +3610,9 @@ Function3d672: ; 3d672
 	ld c, a
 	ld a, [hl]
 	or c
-	jr z, .asm_3d6a7
+	jr z, .loop5
 
-.asm_3d6c9
+.quit
 	ret
 ; 3d6ca
 
@@ -4163,7 +4161,7 @@ ResetPlayerStatLevels: ; 3dab1
 ; 3dabd
 
 
-Function3dabd: ; 3dabd
+InitEnemyMon: ; 3dabd
 	ld a, [CurPartyMon]
 	ld hl, OTPartyMon1Species
 	call GetPartyLocation
@@ -4205,12 +4203,12 @@ endr
 	ld hl, BaseStats
 	ld de, EnemyMonBaseStats
 	ld b, 5
-.asm_3db25
+.loop
 	ld a, [hli]
 	ld [de], a
 	inc de
 	dec b
-	jr nz, .asm_3db25
+	jr nz, .loop
 	ld a, [CurPartyMon]
 	ld [CurOTMon], a
 	ret
@@ -4452,7 +4450,7 @@ PursuitSwitch: ; 3dc5b
 	ret
 ; 3dce6
 
-Function3dce6: ; 3dce6
+RecallPlayerMon: ; 3dce6
 	ld a, [hBattleTurn]
 	push af
 	xor a
@@ -5322,7 +5320,7 @@ BattleMenu_Pack: ; 3e1c7
 
 BattleMenu_PKMN: ; 3e28d
 	call LoadStandardMenuDataHeader
-Function3e290:
+BattleMenuPKMN_ReturnFromStats:
 	call ExitMenu
 	call LoadStandardMenuDataHeader
 	call ClearBGPalettes
@@ -5330,8 +5328,8 @@ BattleMenuPKMN_Loop:
 	call SetUpBattlePartyMenu
 	xor a
 	ld [PartyMenuActionText], a
-	call Function3d313
-	call Function3d329
+	call JumpToPartyMenuAndPrintText
+	call SelectBattleMon
 	jr c, .Cancel
 .loop
 	callba FreezeMonIcons
@@ -5356,7 +5354,7 @@ BattleMenuPKMN_Loop:
 	call Battle_StatsScreen
 	call CheckMobileBattleError
 	jr c, .Cancel
-	jp Function3e290
+	jp BattleMenuPKMN_ReturnFromStats
 
 .Cancel
 	call ClearSprites
@@ -5519,7 +5517,7 @@ BattleMonEntrance: ; 3e40b
 	call SetEnemyTurn
 	call PursuitSwitch
 	jr c, .ok
-	call Function3dce6
+	call RecallPlayerMon
 .ok
 
 	hlcoord 9, 7
@@ -6258,12 +6256,12 @@ LoadEnemyMon: ; 3e8eb
 ; We don't need to be here if we're in a link battle
 	ld a, [wLinkMode]
 	and a
-	jp nz, Function3dabd
+	jp nz, InitEnemyMon
 
 ; and also not in a BattleTower-Battle
 	ld a, [InBattleTowerBattle] ; ????
 	bit 0, a
-	jp nz, Function3dabd
+	jp nz, InitEnemyMon
 
 ; Make sure everything knows what species we're working with
 	ld a, [TempEnemyMonSpecies]
@@ -6848,7 +6846,8 @@ CheckUnownLetter: ; 3eb75
 ; 3ebc7
 
 
-Function3ebc7: ; 3ebc7
+SwapBattlerLevels: ; 3ebc7
+; unreferenced
 	push bc
 	ld a, [BattleMonLevel]
 	ld b, a
@@ -8184,7 +8183,7 @@ TextJump_GoodComeBack: ; 3f352
 	db "@"
 ; 3f357
 
-Function_TextJump_ComeBack: ; 3f357
+UnusedFunction_TextJump_ComeBack: ; 3f357
 ; this function doesn't seem to be used
 	ld hl, TextJump_ComeBack
 	ret
@@ -8648,6 +8647,7 @@ InitEnemyWildmon: ; 3f607
 ; 3f662
 
 Function3f662: ; 3f662
+; XXX
 	ld hl, EnemyMonMoves
 	ld de, wListMoves_MoveIndicesBuffer
 	ld b, NUM_MOVES
@@ -8852,8 +8852,8 @@ DetermineMobileBattleResult: ; 3f77c
 	ld a, BANK(sLinkBattleStats)
 	call GetSRAMBank
 
-	call Function3fa42
-	call Function3f85f
+	call AddLastMobileBattleToLinkRecord
+	call ReadAndPrintLinkBattleRecord
 
 	call CloseSRAM
 
@@ -8905,7 +8905,7 @@ DisplayLinkRecord: ; 3f836
 	ld a, BANK(sLinkBattleStats)
 	call GetSRAMBank
 
-	call Function3f85f
+	call ReadAndPrintLinkBattleRecord
 
 	call CloseSRAM
 	hlcoord 0, 0, AttrMap
@@ -8916,86 +8916,85 @@ DisplayLinkRecord: ; 3f836
 	ld b, SCGB_08
 	call GetSGBLayout
 	call SetPalettes
-	ld c, $8
+	ld c, 8
 	call DelayFrames
 	call WaitPressAorB_BlinkCursor
 	ret
 ; 3f85f
 
 
-Function3f85f: ; 3f85f
+ReadAndPrintLinkBattleRecord: ; 3f85f
 	call ClearTileMap
 	call ClearSprites
-	call .asm_3f8e0
+	call .PrintBattleRecord
 	hlcoord 0, 8
-	ld b, $5
-	ld de, sLinkBattleStats + $8
-.asm_3f870
+	ld b, 5
+	ld de, sLinkBattleRecord + 2
+.loop
 	push bc
 	push hl
 	push de
 	ld a, [de]
 	and a
-	jr z, .asm_3f8c9
+	jr z, .PrintFormatString
 	ld a, [wSavedAtLeastOnce]
 	and a
-	jr z, .asm_3f8c9
+	jr z, .PrintFormatString
 	push hl
 	push hl
 	ld h, d
 	ld l, e
 	ld de, wd002
-	ld bc, $000a
+	ld bc, 10
 	call CopyBytes
-	ld a, $50
+	ld a, "@"
 	ld [de], a
 	inc de
-	ld bc, $0006
+	ld bc, 6
 	call CopyBytes
 	ld de, wd002
 	pop hl
 	call PlaceString
 	pop hl
-	ld de, $001a
+	ld de, 26
 	add hl, de
 	push hl
 	ld de, wd00d
 	lb bc, 2, 4
 	call PrintNum
 	pop hl
-	ld de, $0005
+	ld de, 5
 	add hl, de
 	push hl
 	ld de, wd00f
 	lb bc, 2, 4
 	call PrintNum
 	pop hl
-	ld de, $0005
+	ld de, 5
 	add hl, de
 	ld de, wd011
 	lb bc, 2, 4
 	call PrintNum
-	jr .asm_3f8cf
+	jr .next
 
-.asm_3f8c9
+.PrintFormatString
 	ld de, .Format
 	call PlaceString
-
-.asm_3f8cf
+.next
 	pop hl
-	ld bc, $0012
+	ld bc, 18
 	add hl, bc
 	ld d, h
 	ld e, l
 	pop hl
-	ld bc, $0028
+	ld bc, 2 * SCREEN_WIDTH
 	add hl, bc
 	pop bc
 	dec b
-	jr nz, .asm_3f870
+	jr nz, .loop
 	ret
 
-.asm_3f8e0
+.PrintBattleRecord
 	hlcoord 1, 0
 	ld de, .Record
 	call PlaceString
@@ -9010,30 +9009,30 @@ Function3f85f: ; 3f85f
 
 	hlcoord 6, 4
 	ld de, sLinkBattleWins
-	call .asm_3f92b
-	jr c, .asm_3f92a
+	call .PrintZerosIfNoSaveFileExists
+	jr c, .quit
 
 	lb bc, 2, 4
 	call PrintNum
 
 	hlcoord 11, 4
 	ld de, sLinkBattleLosses
-	call .asm_3f92b
+	call .PrintZerosIfNoSaveFileExists
 
 	lb bc, 2, 4
 	call PrintNum
 
 	hlcoord 16, 4
 	ld de, sLinkBattleDraws
-	call .asm_3f92b
+	call .PrintZerosIfNoSaveFileExists
 
 	lb bc, 2, 4
 	call PrintNum
 
-.asm_3f92a
+.quit
 	ret
 
-.asm_3f92b
+.PrintZerosIfNoSaveFileExists
 	ld a, [wSavedAtLeastOnce]
 	and a
 	ret nz
@@ -9048,7 +9047,8 @@ Function3f85f: ; 3f85f
 ; 3f947
 
 .Format ; 3f947
-	db "  ---  <LNBRK>         -    -    -@"
+	db "  ---  <LNBRK>"
+	db "         -    -    -@"
 .Record ; 3f964
 	db "<PLAYER>'s RECORD@"
 .Result ; 3f96e
@@ -9166,17 +9166,17 @@ GetRoamMonSpecies: ; 3fa31
 ; 3fa42
 
 
-Function3fa42: ; 3fa42
+AddLastMobileBattleToLinkRecord: ; 3fa42
 	ld hl, OTPlayerID
 	ld de, StringBuffer1
 	ld bc, 2
 	call CopyBytes
 	ld hl, OTPlayerName
-	ld bc, 10
+	ld bc, NAME_LENGTH - 1
 	call CopyBytes
-	ld hl, s1_b254
-	call Function3faa0
-	ld hl, s1_b266
+	ld hl, sLinkBattleResults
+	call .StoreResult
+	ld hl, sLinkBattleRecord
 	ld d, 5
 .loop
 	push hl
@@ -9218,24 +9218,22 @@ Function3fa42: ; 3fa42
 	pop hl
 
 .done
-	call Function3faa0
-	call Function3fac8
+	call .StoreResult
+	call .FindOpponentAndAppendRecord
 	ret
 ; 3faa0
-
-Function3faa0: ; 3faa0
+.StoreResult: ; 3faa0
 	ld a, [wBattleResult]
 	and $f
 	cp $1
-	ld bc, 13
+	ld bc, sLinkBattleWins + 1 - sLinkBattleResults
 	jr c, .okay
-	ld bc, 15
+	ld bc, sLinkBattleLosses + 1 - sLinkBattleResults
 	jr z, .okay
-	ld bc, 17
-
+	ld bc, sLinkBattleDraws + 1 - sLinkBattleResults
 .okay
 	add hl, bc
-	call Function3fabe
+	call .CheckOverflow
 	ret nc
 	inc [hl]
 	ret nz
@@ -9244,26 +9242,26 @@ Function3faa0: ; 3faa0
 	ret
 ; 3fabe
 
-Function3fabe: ; 3fabe
+.CheckOverflow: ; 3fabe
 	dec hl
 	ld a, [hl]
 	inc hl
-	cp $27
+	cp 9999 / $100
 	ret c
 	ld a, [hl]
-	cp $f
+	cp 9999 % $100
 	ret
 ; 3fac8
 
-Function3fac8: ; 3fac8
-	ld b, $5
-	ld hl, s1_b277
+.FindOpponentAndAppendRecord: ; 3fac8
+	ld b, 5
+	ld hl, sLinkBattleRecord + 17
 	ld de, wd002
-.loop
+.loop3
 	push bc
 	push de
 	push hl
-	call Function3fb54
+	call .LoadPointer
 	pop hl
 	ld a, e
 	pop de
@@ -9279,10 +9277,10 @@ Function3fac8: ; 3fac8
 	add hl, bc
 	pop bc
 	dec b
-	jr nz, .loop
+	jr nz, .loop3
 	ld b, $0
 	ld c, $1
-.loop2
+.loop4
 	ld a, b
 	add b
 	add b
@@ -9302,30 +9300,30 @@ Function3fac8: ; 3fac8
 	ld e, l
 	pop hl
 	push bc
-	ld c, $3
+	ld c, 3
 	call StringCmp
 	pop bc
 	jr z, .equal
-	jr nc, .done
+	jr nc, .done2
 
 .equal
 	inc c
 	ld a, c
 	cp $5
-	jr nz, .loop2
+	jr nz, .loop4
 	inc b
 	ld c, b
 	inc c
 	ld a, b
 	cp $4
-	jr nz, .loop2
+	jr nz, .loop4
 	ret
 
-.done
+.done2
 	push bc
 	ld a, b
 	ld bc, 18
-	ld hl, s1_b266
+	ld hl, sLinkBattleRecord
 	call AddNTimes
 	push hl
 	ld de, wd002
@@ -9336,7 +9334,7 @@ Function3fac8: ; 3fac8
 	push hl
 	ld a, c
 	ld bc, 18
-	ld hl, s1_b266
+	ld hl, sLinkBattleRecord
 	call AddNTimes
 	pop de
 	push hl
@@ -9349,7 +9347,7 @@ Function3fac8: ; 3fac8
 	ret
 ; 3fb54
 
-Function3fb54: ; 3fb54
+.LoadPointer: ; 3fb54
 	ld e, $0
 	ld a, [hld]
 	ld c, a
@@ -9361,10 +9359,10 @@ Function3fb54: ; 3fb54
 	ld a, [hld]
 	adc b
 	ld b, a
-	jr nc, .okay
+	jr nc, .okay2
 	inc e
 
-.okay
+.okay2
 	ld a, [hld]
 	add c
 	ld c, a
@@ -9497,7 +9495,7 @@ CopyBackpic: ; 3fc30
 	call Get2bpp
 	pop af
 	ld [rSVBK], a
-	call Function3fc5b
+	call .LoadTrainerBackpicAsOAM
 	ld a, $31
 	ld [hGraphicStartTile], a
 	hlcoord 2, 6
@@ -9506,15 +9504,15 @@ CopyBackpic: ; 3fc30
 	ret
 ; 3fc5b
 
-Function3fc5b: ; 3fc5b
+.LoadTrainerBackpicAsOAM: ; 3fc5b
 	ld hl, Sprites
 	xor a
 	ld [hMapObjectIndexBuffer], a
 	ld b, $6
-	ld e, $a8
+	ld e, 21 * 8
 .outer_loop
 	ld c, $3
-	ld d, $40
+	ld d, 8 * 8
 .inner_loop
 	ld [hl], d
 	inc hl
diff --git a/misc/mobile_40.asm b/misc/mobile_40.asm
index 2660f3e31..1a185b1a0 100644
--- a/misc/mobile_40.asm
+++ b/misc/mobile_40.asm
@@ -2005,7 +2005,7 @@ Function100c98: ; 100c98
 	dn 2, 0
 	db D_UP | D_DOWN | A_BUTTON | B_BUTTON
 
-Function100cb5: ; 100cb5
+Mobile_PartyMenuSelect: ; 100cb5
 	call Function100dd8
 	ret c
 	ld hl, w2DMenuFlags1
diff --git a/sram.asm b/sram.asm
index b103e7bc7..7e52d92c1 100644
--- a/sram.asm
+++ b/sram.asm
@@ -122,16 +122,25 @@ s1_ad0f::     ds 1 ; loaded with 0x7f, used to check save corruption
 ; b160
 
 	ds $f4
-s1_b254:: ds $c
+sLinkBattleResults:: ds $c
 
 sLinkBattleStats:: ; b260
 sLinkBattleWins::   ds 2
 sLinkBattleLosses:: ds 2 ; b262
 sLinkBattleDraws::  ds 2 ; b264
-s1_b266::
-	ds 17
-s1_b277::
-	ds 73
+link_battle_record: MACRO
+\1Name:: ds NAME_LENGTH +- 1
+\1ID:: ds 2
+\1Wins:: ds 2
+\1Losses:: ds 2
+\1Draws:: ds 2
+endm
+sLinkBattleRecord::
+sLinkBattleRecord1:: link_battle_record sLinkBattleRecord1
+sLinkBattleRecord2:: link_battle_record sLinkBattleRecord2
+sLinkBattleRecord3:: link_battle_record sLinkBattleRecord3
+sLinkBattleRecord4:: link_battle_record sLinkBattleRecord4
+sLinkBattleRecord5:: link_battle_record sLinkBattleRecord5
 sLinkBattleStatsEnd::
 
 sHallOfFame:: ; b2c0
diff --git a/wram.asm b/wram.asm
index ce781b51d..747fc58aa 100644
--- a/wram.asm
+++ b/wram.asm
@@ -2173,8 +2173,8 @@ wd271:: ds 5
 
 
 ; SECTION "Enemy Party", WRAMX, BANK [1]
-OTPlayerName:: ds NAME_LENGTH
-OTPlayerID:: ds 2
+OTPlayerName:: ds NAME_LENGTH ; d26b
+OTPlayerID:: ds 2 ; d276
 	ds 8
 OTPartyCount::   ds 1 ; d280
 OTPartySpecies:: ds PARTY_LENGTH ; d281

From 8bf255b9f84f7e4f93e85a75512a002ef240a10f Mon Sep 17 00:00:00 2001
From: PikalaxALT <PikalaxALT@gmail.com>
Date: Mon, 18 Jan 2016 00:39:01 -0500
Subject: [PATCH 09/13] Prepare to merge

---
 battle/core.asm                    |  66 ++++++------
 battle/effect_commands.asm         | 162 +++--------------------------
 battle/effects/transform.asm       | 141 +++++++++++++++++++++++++
 constants/sprite_constants.asm     |  76 +++++++-------
 engine/link.asm                    |   2 +-
 engine/player_movement.asm         |  20 ++--
 engine/time_capsule/conversion.asm |   4 +-
 engine/tmhm2.asm                   |  10 +-
 home/audio.asm                     |  28 ++---
 home/text.asm                      |   4 +-
 main.asm                           |  54 +++++-----
 misc/mobile_40.asm                 |   4 +-
 text/battle.asm                    |   8 +-
 wram.asm                           |  12 +--
 14 files changed, 301 insertions(+), 290 deletions(-)
 create mode 100755 battle/effects/transform.asm

diff --git a/battle/core.asm b/battle/core.asm
index 646dc34ad..7e6eea9c6 100644
--- a/battle/core.asm
+++ b/battle/core.asm
@@ -1248,7 +1248,7 @@ HandlePerishSong: ; 3c801
 	res SUBSTATUS_PERISH, [hl]
 	ld a, [hBattleTurn]
 	and a
-	jr nz, .asm_3c85c
+	jr nz, .kill_enemy
 	ld hl, BattleMonHP
 	xor a
 	ld [hli], a
@@ -1261,7 +1261,7 @@ HandlePerishSong: ; 3c801
 	ld [hl], a
 	ret
 
-.asm_3c85c
+.kill_enemy
 	ld hl, EnemyMonHP
 	xor a
 	ld [hli], a
@@ -1334,12 +1334,12 @@ HandleWrap: ; 3c874
 	call GetSixteenthMaxHP
 	call SubtractHPFromUser
 	ld hl, BattleText_UsersHurtByStringBuffer1
-	jr .asm_3c8e1
+	jr .print_text
 
 .release_from_bounds
 	ld hl, BattleText_UserWasReleasedFromStringBuffer1
 
-.asm_3c8e1
+.print_text
 	jp StdBattleTextBox
 ; 3c8e4
 
@@ -1396,7 +1396,7 @@ HandleLeftovers: ; 3c8eb
 	call GetSixteenthMaxHP
 	call SwitchTurnCore
 	call RestoreHP
-	ld hl, BattleText_0x80880
+	ld hl, BattleText_TargetRecoveredWithItem
 	jp StdBattleTextBox
 ; 3c93c
 
@@ -1569,7 +1569,7 @@ HandleFutureSight: ; 3ca26
 	cp $1
 	ret nz
 
-	ld hl, BattleText_0x808b6
+	ld hl, BattleText_TargetWasHitByFutureSight
 	call StdBattleTextBox
 
 	ld a, BATTLE_VARS_MOVE
@@ -1645,12 +1645,12 @@ HanleDefrost: ; 3ca8f
 
 	ld a, [wBattleMode]
 	dec a
-	jr z, .asm_3caef
+	jr z, .wild
 	ld a, [CurOTMon]
 	ld hl, OTPartyMon1Status
 	call GetPartyLocation
 	ld [hl], 0
-.asm_3caef
+.wild
 
 	call UpdateBattleHuds
 	call SetPlayerTurn
@@ -1661,13 +1661,13 @@ HanleDefrost: ; 3ca8f
 HandleSafeguard: ; 3cafb
 	ld a, [hLinkPlayerNumber]
 	cp $1
-	jr z, .asm_3cb06
-	call .asm_3cb09
-	jr .asm_3cb1c
+	jr z, .player1
+	call .CheckPlayer
+	jr .CheckEnemy
 
-.asm_3cb06
-	call .asm_3cb1c
-.asm_3cb09
+.player1
+	call .CheckEnemy
+.CheckPlayer
 	ld a, [PlayerScreens]
 	bit SCREENS_SAFEGUARD, a
 	ret z
@@ -1677,9 +1677,9 @@ HandleSafeguard: ; 3cafb
 	res SCREENS_SAFEGUARD, a
 	ld [PlayerScreens], a
 	xor a
-	jr .asm_3cb2e
+	jr .print
 
-.asm_3cb1c
+.CheckEnemy
 	ld a, [EnemyScreens]
 	bit SCREENS_SAFEGUARD, a
 	ret z
@@ -1690,7 +1690,7 @@ HandleSafeguard: ; 3cafb
 	ld [EnemyScreens], a
 	ld a, $1
 
-.asm_3cb2e
+.print
 	ld [hBattleTurn], a
 	ld hl, BattleText_SafeguardFaded
 	jp StdBattleTextBox
@@ -1712,7 +1712,7 @@ HandleScreens: ; 3cb36
 	call .Copy
 	ld hl, PlayerScreens
 	ld de, PlayerLightScreenCount
-	jr .FadeScreens
+	jr .TickScreens
 
 .CheckEnemy
 	call SetEnemyTurn
@@ -1721,11 +1721,11 @@ HandleScreens: ; 3cb36
 	ld hl, EnemyScreens
 	ld de, EnemyLightScreenCount
 
-.FadeScreens
+.TickScreens
 	bit SCREENS_LIGHT_SCREEN, [hl]
-	call nz, FadeLightScreen
+	call nz, .LightScreenTick
 	bit SCREENS_REFLECT, [hl]
-	call nz, FadeReflect
+	call nz, .ReflectTick
 	ret
 
 .Copy
@@ -1740,7 +1740,7 @@ HandleScreens: ; 3cb36
 ; 3cb80
 
 
-FadeLightScreen: ; 3cb80
+.LightScreenTick: ; 3cb80
 	ld a, [de]
 	dec a
 	ld [de], a
@@ -1748,21 +1748,21 @@ FadeLightScreen: ; 3cb80
 	res SCREENS_LIGHT_SCREEN, [hl]
 	push hl
 	push de
-	ld hl, BattleText_PkmnnLightScreenFell
+	ld hl, BattleText_PkmnLightScreenFell
 	call StdBattleTextBox
 	pop de
 	pop hl
 	ret
 ; 3cb91
 
-FadeReflect: ; 3cb91
+.ReflectTick: ; 3cb91
 	inc de
 	ld a, [de]
 	dec a
 	ld [de], a
 	ret nz
 	res SCREENS_REFLECT, [hl]
-	ld hl, BattleText_0x80905
+	ld hl, BattleText_PkmnReflectFaded
 	jp StdBattleTextBox
 ; 3cb9e
 
@@ -3969,7 +3969,7 @@ TryToRunAwayFromBattle: ; 3d8b3
 	and a
 	jr z, .can_escape
 	ld [hDivisor], a
-	ld b, $2
+	ld b, 2
 	call Divide
 	ld a, [hQuotient + 1]
 	and a
@@ -4941,16 +4941,16 @@ PrintPlayerHUD: ; 3dfbf
 	ld [MonType], a
 	callab GetGender
 	ld a, " "
-	jr c, .asm_3e013
+	jr c, .got_gender_char
 	ld a, "♂"
-	jr nz, .asm_3e013
+	jr nz, .got_gender_char
 	ld a, "♀"
 
-.asm_3e013
+.got_gender_char
 	hlcoord 17, 8
 	ld [hl], a
 	hlcoord 14, 8
-	push af
+	push af ; back up gender
 	push hl
 	ld de, BattleMonStatus
 	predef PlaceNonFaintStatus
@@ -4959,10 +4959,10 @@ PrintPlayerHUD: ; 3dfbf
 	ret nz
 	ld a, b
 	cp " "
-	jr nz, .asm_3e02d
-	dec hl
+	jr nz, .copy_level ; male or female
+	dec hl ; genderless
 
-.asm_3e02d
+.copy_level
 	ld a, [BattleMonLevel]
 	ld [TempMonLevel], a
 	jp PrintLevel
diff --git a/battle/effect_commands.asm b/battle/effect_commands.asm
index 856a1da7f..1350300ca 100644
--- a/battle/effect_commands.asm
+++ b/battle/effect_commands.asm
@@ -1928,6 +1928,7 @@ BattleCommand_CheckHit: ; 34d32
 	ld a, [hBattleTurn]
 	and a
 
+	; load the user's accuracy into b and the opponent's evasion into c.
 	ld hl, wPlayerMoveStruct + MOVE_ACC
 	ld a, [PlayerAccLevel]
 	ld b, a
@@ -1944,26 +1945,31 @@ BattleCommand_CheckHit: ; 34d32
 
 .got_acc_eva
 	cp b
-	jr c, .eva_less_than_acc
+	jr c, .skip_foresight_check
 
+	; if the target's evasion is greater than the user's accuracy,
+	; check the target's foresight status
 	ld a, BATTLE_VARS_SUBSTATUS1_OPP
 	call GetBattleVar
 	bit SUBSTATUS_IDENTIFIED, a
 	ret nz
 
-.eva_less_than_acc
+.skip_foresight_check
+	; subtract evasion from 14
 	ld a, 14
 	sub c
 	ld c, a
+	; store the base move accuracy for math ops
 	xor a
 	ld [hMultiplicand + 0], a
 	ld [hMultiplicand + 1], a
 	ld a, [hl]
 	ld [hMultiplicand + 2], a
 	push hl
-	ld d, 2
+	ld d, 2 ; do this twice, once for the user's accuracy and once for the target's evasion
 
 .accuracy_loop
+	; look up the multiplier from the table
 	push bc
 	ld hl, .AccProb
 	dec b
@@ -1972,27 +1978,32 @@ BattleCommand_CheckHit: ; 34d32
 	ld b, 0
 	add hl, bc
 	pop bc
+	; multiply by the first byte in that row...
 	ld a, [hli]
 	ld [hMultiplier], a
 	call Multiply
+	; ... and divide by the second byte
 	ld a, [hl]
 	ld [hDivisor], a
 	ld b, 4
 	call Divide
+	; minimum accuracy is $0001
 	ld a, [hQuotient + 2]
 	ld b, a
 	ld a, [hQuotient + 1]
 	or b
 	jr nz, .min_accuracy
 	ld [hQuotient + 1], a
-	ld a, $1
+	ld a, 1
 	ld [hQuotient + 2], a
 
 .min_accuracy
+	; do the same thing to the target's evasion
 	ld b, c
 	dec d
 	jr nz, .accuracy_loop
 
+	; if the result is more than 2 bytes, max out at 100%
 	ld a, [hQuotient + 1]
 	and a
 	ld a, [hQuotient + 2]
@@ -8393,148 +8404,7 @@ BattleCommand_Heal: ; 3713e
 
 ; 371cd
 
-
-BattleCommand_Transform: ; 371cd
-; transform
-
-	call ClearLastMove
-	ld a, BATTLE_VARS_SUBSTATUS5_OPP
-	call GetBattleVarAddr
-	bit SUBSTATUS_TRANSFORMED, [hl]
-	jp nz, BattleEffect_ButItFailed
-	call CheckHiddenOpponent
-	jp nz, BattleEffect_ButItFailed
-	xor a
-	ld [wNumHits], a
-	ld [FXAnimIDHi], a
-	ld a, $1
-	ld [wKickCounter], a
-	ld a, BATTLE_VARS_SUBSTATUS4
-	call GetBattleVarAddr
-	bit SUBSTATUS_SUBSTITUTE, [hl]
-	push af
-	jr z, .mimic_substitute
-	call CheckUserIsCharging
-	jr nz, .mimic_substitute
-	ld a, SUBSTITUTE
-	call LoadAnim
-.mimic_substitute
-	ld a, BATTLE_VARS_SUBSTATUS5
-	call GetBattleVarAddr
-	set SUBSTATUS_TRANSFORMED, [hl]
-	call ResetActorDisable
-	ld hl, BattleMonSpecies
-	ld de, EnemyMonSpecies
-	ld a, [hBattleTurn]
-	and a
-	jr nz, .got_mon_species
-	ld hl, EnemyMonSpecies
-	ld de, BattleMonSpecies
-	xor a
-	ld [CurMoveNum], a
-.got_mon_species
-	push hl
-	ld a, [hli]
-	ld [de], a
-	inc hl
-	inc de
-	inc de
-	ld bc, NUM_MOVES
-	call CopyBytes
-	ld a, [hBattleTurn]
-	and a
-	jr z, .mimic_enemy_backup
-	ld a, [de]
-	ld [wEnemyBackupDVs], a
-	inc de
-	ld a, [de]
-	ld [wEnemyBackupDVs + 1], a
-	dec de
-.mimic_enemy_backup
-; copy DVs
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-; move pointer to stats
-	ld bc, BattleMonStats - BattleMonPP
-	add hl, bc
-	push hl
-	ld h, d
-	ld l, e
-	add hl, bc
-	ld d, h
-	ld e, l
-	pop hl
-	ld bc, BattleMonStructEnd - BattleMonStats
-	call CopyBytes
-; init the power points
-	ld bc, BattleMonMoves - BattleMonStructEnd
-	add hl, bc
-	push de
-	ld d, h
-	ld e, l
-	pop hl
-	ld bc, BattleMonPP - BattleMonStructEnd
-	add hl, bc
-	ld b, NUM_MOVES
-.pp_loop
-	ld a, [de]
-	inc de
-	and a
-	jr z, .done_move
-	cp SKETCH
-	ld a, 1
-	jr z, .done_move
-	ld a, 5
-.done_move
-	ld [hli], a
-	dec b
-	jr nz, .pp_loop
-	pop hl
-	ld a, [hl]
-	ld [wNamedObjectIndexBuffer], a
-	call GetPokemonName
-	ld hl, EnemyStats
-	ld de, PlayerStats
-	ld bc, 2 * 5
-	call BattleSideCopy
-	ld hl, EnemyStatLevels
-	ld de, PlayerStatLevels
-	ld bc, 8
-	call BattleSideCopy
-	call _CheckBattleScene
-	jr c, .mimic_anims
-	ld a, [hBattleTurn]
-	and a
-	ld a, [wPlayerMinimized]
-	jr z, .got_byte
-	ld a, [wEnemyMinimized]
-.got_byte
-	and a
-	jr nz, .mimic_anims
-	call LoadMoveAnim
-	jr .after_anim
-
-.mimic_anims
-	call BattleCommand_MoveDelay
-	call BattleCommand_RaiseSubNoAnim
-.after_anim
-	xor a
-	ld [wNumHits], a
-	ld [FXAnimIDHi], a
-	ld a, $2
-	ld [wKickCounter], a
-	pop af
-	ld a, SUBSTITUTE
-	call nz, LoadAnim
-	ld hl, TransformedText
-	jp StdBattleTextBox
-
-; 372c6
-
+INCLUDE "battle/effects/transform.asm"
 
 BattleSideCopy: ; 372c6
 ; Copy bc bytes from hl to de if it's the player's turn.
diff --git a/battle/effects/transform.asm b/battle/effects/transform.asm
new file mode 100755
index 000000000..eb80aea8a
--- /dev/null
+++ b/battle/effects/transform.asm
@@ -0,0 +1,141 @@
+
+BattleCommand_Transform: ; 371cd
+; transform
+
+	call ClearLastMove
+	ld a, BATTLE_VARS_SUBSTATUS5_OPP
+	call GetBattleVarAddr
+	bit SUBSTATUS_TRANSFORMED, [hl]
+	jp nz, BattleEffect_ButItFailed
+	call CheckHiddenOpponent
+	jp nz, BattleEffect_ButItFailed
+	xor a
+	ld [wNumHits], a
+	ld [FXAnimIDHi], a
+	ld a, $1
+	ld [wKickCounter], a
+	ld a, BATTLE_VARS_SUBSTATUS4
+	call GetBattleVarAddr
+	bit SUBSTATUS_SUBSTITUTE, [hl]
+	push af
+	jr z, .mimic_substitute
+	call CheckUserIsCharging
+	jr nz, .mimic_substitute
+	ld a, SUBSTITUTE
+	call LoadAnim
+.mimic_substitute
+	ld a, BATTLE_VARS_SUBSTATUS5
+	call GetBattleVarAddr
+	set SUBSTATUS_TRANSFORMED, [hl]
+	call ResetActorDisable
+	ld hl, BattleMonSpecies
+	ld de, EnemyMonSpecies
+	ld a, [hBattleTurn]
+	and a
+	jr nz, .got_mon_species
+	ld hl, EnemyMonSpecies
+	ld de, BattleMonSpecies
+	xor a
+	ld [CurMoveNum], a
+.got_mon_species
+	push hl
+	ld a, [hli]
+	ld [de], a
+	inc hl
+	inc de
+	inc de
+	ld bc, NUM_MOVES
+	call CopyBytes
+	ld a, [hBattleTurn]
+	and a
+	jr z, .mimic_enemy_backup
+	ld a, [de]
+	ld [wEnemyBackupDVs], a
+	inc de
+	ld a, [de]
+	ld [wEnemyBackupDVs + 1], a
+	dec de
+.mimic_enemy_backup
+; copy DVs
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+; move pointer to stats
+	ld bc, BattleMonStats - BattleMonPP
+	add hl, bc
+	push hl
+	ld h, d
+	ld l, e
+	add hl, bc
+	ld d, h
+	ld e, l
+	pop hl
+	ld bc, BattleMonStructEnd - BattleMonStats
+	call CopyBytes
+; init the power points
+	ld bc, BattleMonMoves - BattleMonStructEnd
+	add hl, bc
+	push de
+	ld d, h
+	ld e, l
+	pop hl
+	ld bc, BattleMonPP - BattleMonStructEnd
+	add hl, bc
+	ld b, NUM_MOVES
+.pp_loop
+	ld a, [de]
+	inc de
+	and a
+	jr z, .done_move
+	cp SKETCH
+	ld a, 1
+	jr z, .done_move
+	ld a, 5
+.done_move
+	ld [hli], a
+	dec b
+	jr nz, .pp_loop
+	pop hl
+	ld a, [hl]
+	ld [wNamedObjectIndexBuffer], a
+	call GetPokemonName
+	ld hl, EnemyStats
+	ld de, PlayerStats
+	ld bc, 2 * 5
+	call BattleSideCopy
+	ld hl, EnemyStatLevels
+	ld de, PlayerStatLevels
+	ld bc, 8
+	call BattleSideCopy
+	call _CheckBattleScene
+	jr c, .mimic_anims
+	ld a, [hBattleTurn]
+	and a
+	ld a, [wPlayerMinimized]
+	jr z, .got_byte
+	ld a, [wEnemyMinimized]
+.got_byte
+	and a
+	jr nz, .mimic_anims
+	call LoadMoveAnim
+	jr .after_anim
+
+.mimic_anims
+	call BattleCommand_MoveDelay
+	call BattleCommand_RaiseSubNoAnim
+.after_anim
+	xor a
+	ld [wNumHits], a
+	ld [FXAnimIDHi], a
+	ld a, $2
+	ld [wKickCounter], a
+	pop af
+	ld a, SUBSTITUTE
+	call nz, LoadAnim
+	ld hl, TransformedText
+	jp StdBattleTextBox
+
+; 372c6
diff --git a/constants/sprite_constants.asm b/constants/sprite_constants.asm
index 70399052f..e7524cd58 100644
--- a/constants/sprite_constants.asm
+++ b/constants/sprite_constants.asm
@@ -193,44 +193,44 @@ NUM_SPRITEHEADER_FIELDS EQU const_value
 
 ; sprite movement data table indices
 	const_def
-	const SPRITEMOVEDATA_00
-	const SPRITEMOVEDATA_ITEM_TREE
-	const SPRITEMOVEDATA_WANDER
-	const SPRITEMOVEDATA_SPINRANDOM_SLOW
-	const SPRITEMOVEDATA_WALK_UP_DOWN
-	const SPRITEMOVEDATA_WALK_LEFT_RIGHT
-	const SPRITEMOVEDATA_STANDING_DOWN
-	const SPRITEMOVEDATA_STANDING_UP
-	const SPRITEMOVEDATA_STANDING_LEFT
-	const SPRITEMOVEDATA_STANDING_RIGHT
-	const SPRITEMOVEDATA_SPINRANDOM_FAST
-	const SPRITEMOVEDATA_PLAYER
-	const SPRITEMOVEDATA_0C
-	const SPRITEMOVEDATA_0D
-	const SPRITEMOVEDATA_0E
-	const SPRITEMOVEDATA_0F
-	const SPRITEMOVEDATA_10
-	const SPRITEMOVEDATA_11
-	const SPRITEMOVEDATA_12
-	const SPRITEMOVEDATA_FOLLOWING
-	const SPRITEMOVEDATA_SCRIPTED
-	const SPRITEMOVEDATA_SNORLAX
-	const SPRITEMOVEDATA_POKEMON
-	const SPRITEMOVEDATA_SUDOWOODO
-	const SPRITEMOVEDATA_SMASHABLE_ROCK
-	const SPRITEMOVEDATA_STRENGTH_BOULDER
-	const SPRITEMOVEDATA_FOLLOWNOTEXACT
-	const SPRITEMOVEDATA_SHADOW
-	const SPRITEMOVEDATA_EMOTE
-	const SPRITEMOVEDATA_SCREENSHAKE
-	const SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE
-	const SPRITEMOVEDATA_SPINCLOCKWISE
-	const SPRITEMOVEDATA_20
-	const SPRITEMOVEDATA_BIGDOLL
-	const SPRITEMOVEDATA_BOULDERDUST
-	const SPRITEMOVEDATA_GRASS
-	const SPRITEMOVEDATA_LAPRAS
-	const SPRITEMOVEDATA_25
+	const SPRITEMOVEDATA_00                   ; 00
+	const SPRITEMOVEDATA_ITEM_TREE            ; 01
+	const SPRITEMOVEDATA_WANDER               ; 02
+	const SPRITEMOVEDATA_SPINRANDOM_SLOW      ; 03
+	const SPRITEMOVEDATA_WALK_UP_DOWN         ; 04
+	const SPRITEMOVEDATA_WALK_LEFT_RIGHT      ; 05
+	const SPRITEMOVEDATA_STANDING_DOWN        ; 06
+	const SPRITEMOVEDATA_STANDING_UP          ; 07
+	const SPRITEMOVEDATA_STANDING_LEFT        ; 08
+	const SPRITEMOVEDATA_STANDING_RIGHT       ; 09
+	const SPRITEMOVEDATA_SPINRANDOM_FAST      ; 0a
+	const SPRITEMOVEDATA_PLAYER               ; 0b
+	const SPRITEMOVEDATA_0C                   ; 0c
+	const SPRITEMOVEDATA_0D                   ; 0d
+	const SPRITEMOVEDATA_0E                   ; 0e
+	const SPRITEMOVEDATA_0F                   ; 0f
+	const SPRITEMOVEDATA_10                   ; 10
+	const SPRITEMOVEDATA_11                   ; 11
+	const SPRITEMOVEDATA_12                   ; 12
+	const SPRITEMOVEDATA_FOLLOWING            ; 13
+	const SPRITEMOVEDATA_SCRIPTED             ; 14
+	const SPRITEMOVEDATA_SNORLAX              ; 15
+	const SPRITEMOVEDATA_POKEMON              ; 16
+	const SPRITEMOVEDATA_SUDOWOODO            ; 17
+	const SPRITEMOVEDATA_SMASHABLE_ROCK       ; 18
+	const SPRITEMOVEDATA_STRENGTH_BOULDER     ; 19
+	const SPRITEMOVEDATA_FOLLOWNOTEXACT       ; 1a
+	const SPRITEMOVEDATA_SHADOW               ; 1b
+	const SPRITEMOVEDATA_EMOTE                ; 1c
+	const SPRITEMOVEDATA_SCREENSHAKE          ; 1d
+	const SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE ; 1e
+	const SPRITEMOVEDATA_SPINCLOCKWISE        ; 1f
+	const SPRITEMOVEDATA_20                   ; 20
+	const SPRITEMOVEDATA_BIGDOLL              ; 21
+	const SPRITEMOVEDATA_BOULDERDUST          ; 22
+	const SPRITEMOVEDATA_GRASS                ; 23
+	const SPRITEMOVEDATA_LAPRAS               ; 24
+	const SPRITEMOVEDATA_25                   ; 25
 NUM_SPRITEMOVEDATA EQU const_value +- 1
 SPRITEMOVEDATA_FIELDS EQU 6
 
diff --git a/engine/link.asm b/engine/link.asm
index b101c7349..e425ce4d8 100755
--- a/engine/link.asm
+++ b/engine/link.asm
@@ -427,7 +427,7 @@ Gen2ToGen2LinkComms: ; 28177
 	or $3
 	ld [hl], a
 	ld hl, OTPlayerName
-	ld de, OTName
+	ld de, OTClassName
 	ld bc, NAME_LENGTH
 	call CopyBytes
 	call ReturnToMapFromSubmenu
diff --git a/engine/player_movement.asm b/engine/player_movement.asm
index 0820bd11e..4bc4c483e 100755
--- a/engine/player_movement.asm
+++ b/engine/player_movement.asm
@@ -136,7 +136,7 @@ DoPlayerMovement:: ; 80000
 	jr z, .land2
 	cp $70 ; warps
 	jr z, .warps
-	jr .asm_8013c
+	jr .no_walk
 
 .water
 	ld a, c
@@ -147,7 +147,7 @@ DoPlayerMovement:: ; 80000
 	add hl, bc
 	ld a, [hl]
 	ld [WalkingDirection], a
-	jr .asm_8013e
+	jr .continue_walk
 
 .water_table
 	db RIGHT
@@ -164,9 +164,9 @@ DoPlayerMovement:: ; 80000
 	add hl, bc
 	ld a, [hl]
 	cp STANDING
-	jr z, .asm_8013c
+	jr z, .no_walk
 	ld [WalkingDirection], a
-	jr .asm_8013e
+	jr .continue_walk
 
 .land1_table
 	db STANDING
@@ -187,9 +187,9 @@ DoPlayerMovement:: ; 80000
 	add hl, bc
 	ld a, [hl]
 	cp STANDING
-	jr z, .asm_8013c
+	jr z, .no_walk
 	ld [WalkingDirection], a
-	jr .asm_8013e
+	jr .continue_walk
 
 .land2_table
 	db RIGHT
@@ -210,18 +210,18 @@ DoPlayerMovement:: ; 80000
 	cp $7a ; stairs
 	jr z, .down
 	cp $7b ; cave
-	jr nz, .asm_8013c
+	jr nz, .no_walk
 
 .down
 	ld a, DOWN
 	ld [WalkingDirection], a
-	jr .asm_8013e
+	jr .continue_walk
 
-.asm_8013c
+.no_walk
 	xor a
 	ret
 
-.asm_8013e
+.continue_walk
 	ld a, STEP_WALK
 	call .DoStep
 	ld a, 5
diff --git a/engine/time_capsule/conversion.asm b/engine/time_capsule/conversion.asm
index e2c545c48..5d093d515 100755
--- a/engine/time_capsule/conversion.asm
+++ b/engine/time_capsule/conversion.asm
@@ -367,13 +367,13 @@ NewPokedexEntry: ; fb877
 	ld a, [hSCX]
 	add -5 ; 251 ; NUM_POKEMON
 	ld [hSCX], a
-	call Functionfb8c8
+	call .ReturnFromDexRegistration
 	pop af
 	ld [hMapAnims], a
 	ret
 ; fb8c8
 
-Functionfb8c8: ; fb8c8
+.ReturnFromDexRegistration: ; fb8c8
 	call ClearTileMap
 	call LoadFontsExtra
 	call LoadStandardFont
diff --git a/engine/tmhm2.asm b/engine/tmhm2.asm
index fdb829034..94de4f3e3 100755
--- a/engine/tmhm2.asm
+++ b/engine/tmhm2.asm
@@ -196,16 +196,16 @@ TMHM_PocketLoop: ; 2c8d3 (b:48d3)
 	xor a
 	ld [hBGMapMode], a
 	call TMHM_DisplayPocketItems
-	ld a, $2
+	ld a, 2
 	ld [w2DMenuCursorInitY], a
-	ld a, $7
+	ld a, 7
 	ld [w2DMenuCursorInitX], a
-	ld a, $1
+	ld a, 1
 	ld [w2DMenuNumCols], a
-	ld a, $5
+	ld a, 5
 	sub d
 	inc a
-	cp $6
+	cp 6
 	jr nz, .okay
 	dec a
 .okay
diff --git a/home/audio.asm b/home/audio.asm
index 1e02f91eb..c7bb7fed3 100644
--- a/home/audio.asm
+++ b/home/audio.asm
@@ -506,18 +506,18 @@ Function3d9f:: ; 3d9f
 ; Places a BCD number at the
 ; upper center of the screen.
 ; Unreferenced.
-	ld a, $20
-	ld [Sprites + $98], a
-	ld [Sprites + $9c], a
-	ld a, $50
-	ld [Sprites + $99], a
-	ld a, $58
-	ld [Sprites + $9d], a
+	ld a, 4 * 8
+	ld [Sprites + 38 * 4], a
+	ld [Sprites + 39 * 4], a
+	ld a, 10 * 8
+	ld [Sprites + 38 * 4 + 1], a
+	ld a, 11 * 8
+	ld [Sprites + 39 * 4 + 1], a
 	xor a
-	ld [Sprites + $9b], a
-	ld [Sprites + $9f], a
+	ld [Sprites + 38 * 4 + 3], a
+	ld [Sprites + 39 * 4 + 3], a
 	ld a, [wc296]
-	cp $64
+	cp 100
 	jr nc, .max
 	add 1
 	daa
@@ -525,17 +525,17 @@ Function3d9f:: ; 3d9f
 	swap a
 	and $f
 	add "0"
-	ld [Sprites + $9a], a
+	ld [Sprites + 38 * 4 + 2], a
 	ld a, b
 	and $f
 	add "0"
-	ld [Sprites + $9e], a
+	ld [Sprites + 39 * 4 + 2], a
 	ret
 
 .max
 	ld a, "9"
-	ld [Sprites + $9a], a
-	ld [Sprites + $9e], a
+	ld [Sprites + 38 * 4 + 2], a
+	ld [Sprites + 39 * 4 + 2], a
 	ret
 ; 3dde
 
diff --git a/home/text.asm b/home/text.asm
index 054151ff4..e3dacb478 100644
--- a/home/text.asm
+++ b/home/text.asm
@@ -399,7 +399,7 @@ PlaceEnemysName:: ; 121b
 	cp RIVAL2
 	jr z, .rival
 
-	ld de, OTName
+	ld de, OTClassName
 	call PlaceString
 	ld h, b
 	ld l, c
@@ -416,7 +416,7 @@ PlaceEnemysName:: ; 121b
 	jr PlaceCommandCharacter
 
 .linkbattle
-	ld de, OTName
+	ld de, OTClassName
 	jr PlaceCommandCharacter
 
 
diff --git a/main.asm b/main.asm
index cc61c518f..1f241f088 100644
--- a/main.asm
+++ b/main.asm
@@ -6621,7 +6621,7 @@ GetOTName: ; 39550
 
 .ok
 	ld bc, TRAINER_CLASS_NAME_LENGTH
-	ld de, OTName
+	ld de, OTClassName
 	push de
 	call CopyBytes
 	pop de
@@ -9154,50 +9154,50 @@ Strings50a42: ; 50a42
 	dw .Youngster
 	dw .BugCatcher
 	dw .Lass
-	dw OTName
+	dw OTClassName
 	dw .JrTrainerM
 	dw .JrTrainerF
 	dw .Pokemaniac
 	dw .SuperNerd
-	dw OTName
-	dw OTName
+	dw OTClassName
+	dw OTClassName
 	dw .Burglar
 	dw .Engineer
 	dw .Jack
-	dw OTName
+	dw OTClassName
 	dw .Swimmer
-	dw OTName
-	dw OTName
+	dw OTClassName
+	dw OTClassName
 	dw .Beauty
-	dw OTName
+	dw OTClassName
 	dw .Rocker
 	dw .Juggler
-	dw OTName
-	dw OTName
+	dw OTClassName
+	dw OTClassName
 	dw .Blackbelt
-	dw OTName
+	dw OTClassName
 	dw .ProfOak
 	dw .Chief
 	dw .Scientist
-	dw OTName
+	dw OTClassName
 	dw .Rocket
 	dw .CooltrainerM
 	dw .CooltrainerF
-	dw OTName
-	dw OTName
-	dw OTName
-	dw OTName
-	dw OTName
-	dw OTName
-	dw OTName
-	dw OTName
-	dw OTName
-	dw OTName
-	dw OTName
-	dw OTName
-	dw OTName
-	dw OTName
-	dw OTName
+	dw OTClassName
+	dw OTClassName
+	dw OTClassName
+	dw OTClassName
+	dw OTClassName
+	dw OTClassName
+	dw OTClassName
+	dw OTClassName
+	dw OTClassName
+	dw OTClassName
+	dw OTClassName
+	dw OTClassName
+	dw OTClassName
+	dw OTClassName
+	dw OTClassName
 
 .Youngster    db "たんパン@"
 .BugCatcher   db "むしとり@"
diff --git a/misc/mobile_40.asm b/misc/mobile_40.asm
index 1a185b1a0..8594f0044 100644
--- a/misc/mobile_40.asm
+++ b/misc/mobile_40.asm
@@ -2595,7 +2595,7 @@ Function10107d: ; 10107d
 	ld bc, NAME_LENGTH
 	call .CopyAllFromOT
 	ld hl, OTPartyMonOT
-	ld de, OTName + 1
+	ld de, OTClassName + 1
 	ld bc, NAME_LENGTH
 	call .CopyAllFromOT
 	ld hl, OTPartyMon1Species
@@ -4039,7 +4039,7 @@ Function1019ee: ; 1019ee
 	ld a, c
 	ld [OtherTrainerClass], a
 	ld hl, OTPlayerName
-	ld de, OTName
+	ld de, OTClassName
 	ld bc, NAME_LENGTH
 	call CopyBytes
 	ld a, [wcd2f]
diff --git a/text/battle.asm b/text/battle.asm
index 42bf2b7c0..b9b121455 100644
--- a/text/battle.asm
+++ b/text/battle.asm
@@ -104,7 +104,7 @@ PerishCountText: ; 0x80864
 	prompt
 ; 0x80880
 
-BattleText_0x80880: ; 0x80880
+BattleText_TargetRecoveredWithItem: ; 0x80880
 	text "<TARGET>"
 	line "recovered with"
 	cont "@"
@@ -122,7 +122,7 @@ BattleText_UserRecoveredPPUsing: ; 0x80899
 	prompt
 ; 0x808b6
 
-BattleText_0x808b6: ; 0x808b6
+BattleText_TargetWasHitByFutureSight: ; 0x808b6
 	text "<TARGET>"
 	line "was hit by FUTURE"
 	cont "SIGHT!"
@@ -135,14 +135,14 @@ BattleText_SafeguardFaded: ; 0x808d2
 	prompt
 ; 0x808e7
 
-BattleText_PkmnnLightScreenFell: ; 0x808e7
+BattleText_PkmnLightScreenFell: ; 0x808e7
 	text_from_ram StringBuffer1
 	text " #MON's"
 	line "LIGHT SCREEN fell!"
 	prompt
 ; 0x80905
 
-BattleText_0x80905: ; 0x80905
+BattleText_PkmnReflectFaded: ; 0x80905
 	text_from_ram StringBuffer1
 	text " #MON's"
 	line "REFLECT faded!"
diff --git a/wram.asm b/wram.asm
index 747fc58aa..6f22f9c51 100644
--- a/wram.asm
+++ b/wram.asm
@@ -12,7 +12,7 @@ StackTop::
 
 
 SECTION "Audio", WRAM0
-
+wMusic::
 MusicPlaying:: ; c100
 ; nonzero if playing
 	ds 1
@@ -33,7 +33,7 @@ Channel8:: channel_struct Channel8 ; c25f
 wCurTrackDuty:: ds 1
 wCurTrackIntensity:: ds 1
 wCurTrackFrequency:: dw
-wc296:: ds 1 ; used only in an unused script
+wc296:: ds 1 ; BCD value, dummied out
 wc297:: ds 1 ; used in MusicE0 and LoadNote
 
 CurMusicByte:: ; c298
@@ -132,7 +132,7 @@ wMapMusic:: ; c2c0
 	ds 1
 
 wDontPlayMapMusicOnReload:: ds 1
-
+wMusicEnd::
 
 SECTION "WRAM", WRAM0
 
@@ -397,7 +397,7 @@ wEnemyTrainerItem1:: ds 1
 wEnemyTrainerItem2:: ds 1
 wEnemyTrainerBaseReward:: ds 1
 wEnemyTrainerAIFlags:: ds 3
-OTName:: ds NAME_LENGTH ; c656
+OTClassName:: ds NAME_LENGTH ; c656
 
 	ds 2
 
@@ -1816,9 +1816,9 @@ wItemQuantityBuffer:: ds 1
 TempMon:: ; d10e
 	party_struct TempMon
 
-wSpriteFlags:: ds 1
+wSpriteFlags:: ds 1 ; d13e
 
-wHandlePlayerStep:: ds 2
+wHandlePlayerStep:: ds 2 ; d13f
 
 PartyMenuActionText:: ; d141
 	ds 1

From d02c9e39dd5138aa2d5e11178fcef7e2a58d4230 Mon Sep 17 00:00:00 2001
From: PikalaxALT <PikalaxALT@gmail.com>
Date: Wed, 20 Jan 2016 19:16:25 -0500
Subject: [PATCH 10/13] BG pal constants, convert tileset pal maps to asm

---
 constants/tilemap_constants.asm |  10 ++++++
 macros.asm                      |   1 +
 tilesets/00_palette_map.asm     |  29 +++++++++++++++
 tilesets/00_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/01_palette_map.asm     |  29 +++++++++++++++
 tilesets/01_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/02_palette_map.asm     |  29 +++++++++++++++
 tilesets/02_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/03_palette_map.asm     |  29 +++++++++++++++
 tilesets/03_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/04_palette_map.asm     |  29 +++++++++++++++
 tilesets/04_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/05_palette_map.asm     |  29 +++++++++++++++
 tilesets/05_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/06_palette_map.asm     |  29 +++++++++++++++
 tilesets/06_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/07_palette_map.asm     |  29 +++++++++++++++
 tilesets/07_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/08_palette_map.asm     |  29 +++++++++++++++
 tilesets/08_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/09_palette_map.asm     |  29 +++++++++++++++
 tilesets/09_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/10_palette_map.asm     |  29 +++++++++++++++
 tilesets/10_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/11_palette_map.asm     |  29 +++++++++++++++
 tilesets/11_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/12_palette_map.asm     |  29 +++++++++++++++
 tilesets/12_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/13_palette_map.asm     |  29 +++++++++++++++
 tilesets/13_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/14_palette_map.asm     |  29 +++++++++++++++
 tilesets/14_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/15_palette_map.asm     |  29 +++++++++++++++
 tilesets/15_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/16_palette_map.asm     |  29 +++++++++++++++
 tilesets/16_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/17_palette_map.asm     |  29 +++++++++++++++
 tilesets/17_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/18_palette_map.asm     |  29 +++++++++++++++
 tilesets/18_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/19_palette_map.asm     |  29 +++++++++++++++
 tilesets/19_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/20_palette_map.asm     |  29 +++++++++++++++
 tilesets/20_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/21_palette_map.asm     |  29 +++++++++++++++
 tilesets/21_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/22_palette_map.asm     |  29 +++++++++++++++
 tilesets/22_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/23_palette_map.asm     |  29 +++++++++++++++
 tilesets/23_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/24_palette_map.asm     |  29 +++++++++++++++
 tilesets/24_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/25_palette_map.asm     |  29 +++++++++++++++
 tilesets/25_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/26_palette_map.asm     |  29 +++++++++++++++
 tilesets/26_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/27_palette_map.asm     |  29 +++++++++++++++
 tilesets/27_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/28_palette_map.asm     |  29 +++++++++++++++
 tilesets/28_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/29_palette_map.asm     |  29 +++++++++++++++
 tilesets/29_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/30_palette_map.asm     |  29 +++++++++++++++
 tilesets/30_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/31_palette_map.asm     |  29 +++++++++++++++
 tilesets/31_palette_map.bin     |   1 -
 tilesets/32_palette_map.asm     |  29 +++++++++++++++
 tilesets/32_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/33_palette_map.asm     |  29 +++++++++++++++
 tilesets/33_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/34_palette_map.asm     |  29 +++++++++++++++
 tilesets/34_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/35_palette_map.asm     |  29 +++++++++++++++
 tilesets/35_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/36_palette_map.asm     |  29 +++++++++++++++
 tilesets/36_palette_map.bin     | Bin 112 -> 0 bytes
 tilesets/palette_maps.asm       |  60 ++++++++++++++++----------------
 77 files changed, 1114 insertions(+), 31 deletions(-)
 create mode 100755 tilesets/00_palette_map.asm
 delete mode 100644 tilesets/00_palette_map.bin
 create mode 100644 tilesets/01_palette_map.asm
 delete mode 100644 tilesets/01_palette_map.bin
 create mode 100644 tilesets/02_palette_map.asm
 delete mode 100644 tilesets/02_palette_map.bin
 create mode 100644 tilesets/03_palette_map.asm
 delete mode 100644 tilesets/03_palette_map.bin
 create mode 100644 tilesets/04_palette_map.asm
 delete mode 100644 tilesets/04_palette_map.bin
 create mode 100644 tilesets/05_palette_map.asm
 delete mode 100644 tilesets/05_palette_map.bin
 create mode 100644 tilesets/06_palette_map.asm
 delete mode 100644 tilesets/06_palette_map.bin
 create mode 100644 tilesets/07_palette_map.asm
 delete mode 100644 tilesets/07_palette_map.bin
 create mode 100644 tilesets/08_palette_map.asm
 delete mode 100644 tilesets/08_palette_map.bin
 create mode 100644 tilesets/09_palette_map.asm
 delete mode 100644 tilesets/09_palette_map.bin
 create mode 100644 tilesets/10_palette_map.asm
 delete mode 100644 tilesets/10_palette_map.bin
 create mode 100644 tilesets/11_palette_map.asm
 delete mode 100644 tilesets/11_palette_map.bin
 create mode 100644 tilesets/12_palette_map.asm
 delete mode 100644 tilesets/12_palette_map.bin
 create mode 100644 tilesets/13_palette_map.asm
 delete mode 100644 tilesets/13_palette_map.bin
 create mode 100644 tilesets/14_palette_map.asm
 delete mode 100644 tilesets/14_palette_map.bin
 create mode 100644 tilesets/15_palette_map.asm
 delete mode 100644 tilesets/15_palette_map.bin
 create mode 100644 tilesets/16_palette_map.asm
 delete mode 100644 tilesets/16_palette_map.bin
 create mode 100644 tilesets/17_palette_map.asm
 delete mode 100644 tilesets/17_palette_map.bin
 create mode 100644 tilesets/18_palette_map.asm
 delete mode 100644 tilesets/18_palette_map.bin
 create mode 100644 tilesets/19_palette_map.asm
 delete mode 100644 tilesets/19_palette_map.bin
 create mode 100644 tilesets/20_palette_map.asm
 delete mode 100644 tilesets/20_palette_map.bin
 create mode 100644 tilesets/21_palette_map.asm
 delete mode 100644 tilesets/21_palette_map.bin
 create mode 100644 tilesets/22_palette_map.asm
 delete mode 100644 tilesets/22_palette_map.bin
 create mode 100644 tilesets/23_palette_map.asm
 delete mode 100644 tilesets/23_palette_map.bin
 create mode 100644 tilesets/24_palette_map.asm
 delete mode 100644 tilesets/24_palette_map.bin
 create mode 100644 tilesets/25_palette_map.asm
 delete mode 100644 tilesets/25_palette_map.bin
 create mode 100644 tilesets/26_palette_map.asm
 delete mode 100644 tilesets/26_palette_map.bin
 create mode 100644 tilesets/27_palette_map.asm
 delete mode 100644 tilesets/27_palette_map.bin
 create mode 100644 tilesets/28_palette_map.asm
 delete mode 100644 tilesets/28_palette_map.bin
 create mode 100644 tilesets/29_palette_map.asm
 delete mode 100644 tilesets/29_palette_map.bin
 create mode 100644 tilesets/30_palette_map.asm
 delete mode 100644 tilesets/30_palette_map.bin
 create mode 100644 tilesets/31_palette_map.asm
 delete mode 100644 tilesets/31_palette_map.bin
 create mode 100644 tilesets/32_palette_map.asm
 delete mode 100644 tilesets/32_palette_map.bin
 create mode 100644 tilesets/33_palette_map.asm
 delete mode 100644 tilesets/33_palette_map.bin
 create mode 100644 tilesets/34_palette_map.asm
 delete mode 100644 tilesets/34_palette_map.bin
 create mode 100644 tilesets/35_palette_map.asm
 delete mode 100644 tilesets/35_palette_map.bin
 create mode 100644 tilesets/36_palette_map.asm
 delete mode 100644 tilesets/36_palette_map.bin

diff --git a/constants/tilemap_constants.asm b/constants/tilemap_constants.asm
index e64d042d8..b130b5de3 100644
--- a/constants/tilemap_constants.asm
+++ b/constants/tilemap_constants.asm
@@ -41,3 +41,13 @@ const_value SET 1
 	const TILESET_KABUTO_WORD_ROOM     ; 22
 	const TILESET_OMANYTE_WORD_ROOM    ; 23
 	const TILESET_AERODACTYL_WORD_ROOM ; 24
+
+	const_def
+	const PAL_BG_GRAY
+	const PAL_BG_RED
+	const PAL_BG_GREEN
+	const PAL_BG_WATER
+	const PAL_BG_YELLOW
+	const PAL_BG_BROWN
+	const PAL_BG_ROOF
+	const PAL_BG_TEXT
diff --git a/macros.asm b/macros.asm
index 812873584..6656ca038 100644
--- a/macros.asm
+++ b/macros.asm
@@ -15,6 +15,7 @@ INCLUDE "macros/rst.asm"
 INCLUDE "macros/mobile.asm"
 INCLUDE "macros/trainer.asm"
 INCLUDE "macros/trade_anim.asm"
+INCLUDE "macros/pals.asm"
 
 RGB: MACRO
 	dw ((\3) << 10) + ((\2) << 5) + (\1)
diff --git a/tilesets/00_palette_map.asm b/tilesets/00_palette_map.asm
new file mode 100755
index 000000000..62fbd2d00
--- /dev/null
+++ b/tilesets/00_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, BROWN, BROWN, RED, GREEN, GREEN, GRAY, RED
+	tilepal 0, RED, RED, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, ROOF, GREEN, WATER, GREEN, BROWN, BROWN
+	tilepal 0, RED, RED, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN
+	tilepal 0, BROWN, BROWN, BROWN, RED, RED, BROWN, YELLOW, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 0, BROWN, BROWN, WATER, WATER, BROWN, BROWN, BROWN, YELLOW
+	tilepal 0, YELLOW, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 0, RED, BROWN, WATER, WATER, BROWN, GREEN, BROWN, BROWN
+	tilepal 0, BROWN, WATER, GRAY, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, WATER, GRAY, GRAY, GRAY, BROWN, BROWN, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, BROWN, BROWN, BROWN, RED, RED, RED, RED, RED
+	tilepal 1, RED, RED, RED, RED, RED, RED, RED, RED
+	tilepal 1, RED, RED, RED, RED, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN
+	tilepal 1, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN
+	tilepal 1, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN
+	tilepal 1, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
diff --git a/tilesets/00_palette_map.bin b/tilesets/00_palette_map.bin
deleted file mode 100644
index 91a8f594d68cd428f0fec368aba7b369e7745116..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmWF#RT2<P0|GVWP{B}DrBKnpkkHUjrBLHgS0F<v&{#FpG$51#C>F}h5X$f$4cwhO
W6AJF$z1w@^Zf{4&4P*=yMF9Y%R6a2P

diff --git a/tilesets/01_palette_map.asm b/tilesets/01_palette_map.asm
new file mode 100644
index 000000000..62fbd2d00
--- /dev/null
+++ b/tilesets/01_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, BROWN, BROWN, RED, GREEN, GREEN, GRAY, RED
+	tilepal 0, RED, RED, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, ROOF, GREEN, WATER, GREEN, BROWN, BROWN
+	tilepal 0, RED, RED, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN
+	tilepal 0, BROWN, BROWN, BROWN, RED, RED, BROWN, YELLOW, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 0, BROWN, BROWN, WATER, WATER, BROWN, BROWN, BROWN, YELLOW
+	tilepal 0, YELLOW, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 0, RED, BROWN, WATER, WATER, BROWN, GREEN, BROWN, BROWN
+	tilepal 0, BROWN, WATER, GRAY, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, WATER, GRAY, GRAY, GRAY, BROWN, BROWN, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, BROWN, BROWN, BROWN, RED, RED, RED, RED, RED
+	tilepal 1, RED, RED, RED, RED, RED, RED, RED, RED
+	tilepal 1, RED, RED, RED, RED, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN
+	tilepal 1, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN
+	tilepal 1, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN
+	tilepal 1, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
diff --git a/tilesets/01_palette_map.bin b/tilesets/01_palette_map.bin
deleted file mode 100644
index 91a8f594d68cd428f0fec368aba7b369e7745116..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmWF#RT2<P0|GVWP{B}DrBKnpkkHUjrBLHgS0F<v&{#FpG$51#C>F}h5X$f$4cwhO
W6AJF$z1w@^Zf{4&4P*=yMF9Y%R6a2P

diff --git a/tilesets/02_palette_map.asm b/tilesets/02_palette_map.asm
new file mode 100644
index 000000000..f2af7a92d
--- /dev/null
+++ b/tilesets/02_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, BROWN, BROWN, RED, GREEN, GREEN, GRAY, ROOF
+	tilepal 0, RED, RED, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, ROOF, GREEN, WATER, GREEN, BROWN, BROWN
+	tilepal 0, RED, RED, BROWN, BROWN, BROWN, GRAY, GREEN, GREEN
+	tilepal 0, GRAY, GRAY, BROWN, RED, RED, GRAY, YELLOW, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, RED
+	tilepal 0, GRAY, BROWN, BROWN, GRAY, BROWN, GRAY, GRAY, YELLOW
+	tilepal 0, YELLOW, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 0, RED, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, WATER, GRAY, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 0, GRAY, BROWN, BROWN, GRAY, BROWN, GRAY, GRAY, GRAY
+	tilepal 0, WATER, GRAY, GRAY, GRAY, BROWN, BROWN, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, BROWN, BROWN, RED, GREEN, GREEN, GRAY, ROOF
+	tilepal 1, RED, RED, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, GREEN, WATER, GREEN, BROWN, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, BROWN, BROWN, GRAY, GREEN, GREEN
+	tilepal 1, GRAY, GRAY, BROWN, RED, RED, GRAY, YELLOW, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, RED
+	tilepal 1, GRAY, BROWN, BROWN, GRAY, BROWN, GRAY, GRAY, YELLOW
+	tilepal 1, YELLOW, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 1, RED, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, WATER, GRAY, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 1, GRAY, BROWN, BROWN, GRAY, RED, RED, GREEN, GREEN
+	tilepal 1, YELLOW, ROOF, ROOF, ROOF, ROOF, ROOF, RED, ROOF
diff --git a/tilesets/02_palette_map.bin b/tilesets/02_palette_map.bin
deleted file mode 100644
index 509f2f810fde3461f5fbdbcffdbeb2ab6dff5672..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmWF#RZ0*{0|GVWP{B}EB?eK(kkHUjfdE!k2OvW!kRdeGG$51#$Y)??2xa(>25!t<
z^<w5bAXvBh?Yn!ut2*X(-no1C?u;9~y(fT-RX02C-ralSZpV$@nXBHsd-oCmWV${m

diff --git a/tilesets/03_palette_map.asm b/tilesets/03_palette_map.asm
new file mode 100644
index 000000000..e3e497fb9
--- /dev/null
+++ b/tilesets/03_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, BROWN, BROWN, RED, BROWN, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, YELLOW, YELLOW, YELLOW, GRAY, BROWN, GRAY
+	tilepal 0, GRAY, BROWN, ROOF, BROWN, WATER, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, GRAY, BROWN, BROWN, GRAY, BROWN, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, ROOF, ROOF, BROWN
+	tilepal 0, ROOF, ROOF, GRAY, GRAY, GREEN, GREEN, GREEN, GRAY
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, ROOF, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN, GRAY
+	tilepal 0, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, GRAY, BROWN, GRAY, GRAY, GRAY, RED
+	tilepal 0, GREEN, GREEN, GREEN, ROOF, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, GRAY, BROWN, GRAY, GRAY, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, BROWN, BROWN, RED, BROWN, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, YELLOW, YELLOW, YELLOW, GRAY, BROWN, GRAY
+	tilepal 1, GRAY, BROWN, ROOF, BROWN, WATER, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, GRAY, BROWN, BROWN, GRAY, BROWN, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, BROWN, ROOF, ROOF, BROWN
+	tilepal 1, ROOF, ROOF, GRAY, GRAY, GREEN, GREEN, GREEN, GRAY
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, ROOF, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN, GRAY
+	tilepal 1, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, GRAY, BROWN, GRAY, GRAY, GRAY, RED
+	tilepal 1, GREEN, GREEN, GREEN, ROOF, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, GRAY, BROWN, GRAY, GRAY, GRAY, GRAY
diff --git a/tilesets/03_palette_map.bin b/tilesets/03_palette_map.bin
deleted file mode 100644
index b9ae628fbad792a5da3d24b135f739d5cdd68d09..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmWF#O-)O4VPOpjOHNA*U}a@sNDWJ4P+|%N0yYK(CM5=j(9i$|0i`6MKmY^7e>8Ao
z?%Q|o&h+%&xcB<qyBoc|9UX7)z3W)jbr%TwI#zV8>gc$8_eRHzRj+^oH##~1a~M4p

diff --git a/tilesets/04_palette_map.asm b/tilesets/04_palette_map.asm
new file mode 100644
index 000000000..dfc74a9c0
--- /dev/null
+++ b/tilesets/04_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, BROWN, BROWN, RED, GREEN, GREEN, GRAY, RED
+	tilepal 0, RED, RED, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, ROOF, GREEN, WATER, GREEN, BROWN, BROWN
+	tilepal 0, RED, RED, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN
+	tilepal 0, BROWN, BROWN, BROWN, RED, RED, BROWN, YELLOW, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, BROWN
+	tilepal 0, BROWN, BROWN, WATER, WATER, BROWN, BROWN, BROWN, YELLOW
+	tilepal 0, YELLOW, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 0, RED, BROWN, WATER, WATER, BROWN, GREEN, BROWN, BROWN
+	tilepal 0, BROWN, WATER, GRAY, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, WATER, GRAY, GRAY, GRAY, BROWN, BROWN, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, RED, WATER, WATER, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, RED, RED, RED, ROOF, RED, WATER, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, RED, RED, RED
+	tilepal 1, RED, ROOF, ROOF, ROOF, ROOF, ROOF, RED, RED
+	tilepal 1, RED, RED, RED, RED, RED, RED, RED, RED
+	tilepal 1, RED, RED, RED, RED, RED, YELLOW, YELLOW, YELLOW
+	tilepal 1, YELLOW, RED, RED, RED, WATER, WATER, WATER, RED
+	tilepal 1, RED, RED, ROOF, RED, RED, ROOF, RED, RED
+	tilepal 1, RED, ROOF, ROOF, RED, RED, RED, ROOF, ROOF
+	tilepal 1, RED, RED, RED, RED, YELLOW, RED, GREEN, RED
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, RED, ROOF
diff --git a/tilesets/04_palette_map.bin b/tilesets/04_palette_map.bin
deleted file mode 100644
index 71013e70713488a39539ec542b774434a5e0447f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmWF#RT2<P0|GVWP{B}DrBKnpkkHW3pitvbS0F<v&{#FpG$51#C>F}h5X$f$4eWgV
s?%m9nJ9qB}((m5QoB0yRg@BW1=FHqZd*-~CGhfb|2^5?&3#i~F02ymPqW}N^

diff --git a/tilesets/05_palette_map.asm b/tilesets/05_palette_map.asm
new file mode 100644
index 000000000..ce7b988b7
--- /dev/null
+++ b/tilesets/05_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, WATER, RED, RED, RED, RED, BROWN, WATER, WATER
+	tilepal 0, GREEN, GREEN, GREEN, GREEN, WATER, WATER, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, RED, RED, RED, BROWN, WATER, WATER
+	tilepal 0, ROOF, ROOF, ROOF, ROOF, GRAY, GRAY, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, WATER, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, YELLOW, GREEN, WATER, WATER, WATER, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, WATER, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, WATER, WATER, BROWN
+	tilepal 0, WATER, WATER, BROWN, BROWN, WATER, WATER, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, WATER, GRAY, BROWN, BROWN, BROWN, WATER
+	tilepal 0, RED, RED, BROWN, BROWN, GREEN, YELLOW, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, WATER, RED, RED, RED, RED, BROWN, WATER, WATER
+	tilepal 1, GREEN, GREEN, GREEN, GREEN, WATER, WATER, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, RED, RED, RED, BROWN, WATER, WATER
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, WATER, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, YELLOW, GREEN, WATER, WATER, WATER, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, WATER, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, WATER, WATER, BROWN
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, WATER, WATER, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, WATER, GRAY, BROWN, BROWN, BROWN, WATER
+	tilepal 1, RED, RED, BROWN, BROWN, GREEN, YELLOW, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
diff --git a/tilesets/05_palette_map.bin b/tilesets/05_palette_map.bin
deleted file mode 100644
index 55423dc338fb7936e27605bc0f988483ded77153..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmZ97Q3-%B6h$AHKx{B<@K^yG$hZ}j<$(!?4TcTI3fMr#&7$wydk^O<^R6K%;LTYe
rNWiKt2QeuWG9k{`AOgI<o#kn@HquL)e~?#mIqbvOXa{@YO*8TX;=4bh

diff --git a/tilesets/06_palette_map.asm b/tilesets/06_palette_map.asm
new file mode 100644
index 000000000..5d089835b
--- /dev/null
+++ b/tilesets/06_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, BROWN, BROWN, BROWN, RED, GREEN, WATER, WATER
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, RED, BROWN, WATER, WATER
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, WATER, WATER, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, WATER, WATER, BROWN, BROWN
+	tilepal 0, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, BROWN, BROWN, BROWN, RED, GREEN, WATER, WATER
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, RED, BROWN, WATER, WATER
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, WATER, WATER, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, WATER, WATER, BROWN, BROWN
+	tilepal 1, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
diff --git a/tilesets/06_palette_map.bin b/tilesets/06_palette_map.bin
deleted file mode 100644
index addf636aca83b0a806d575a3b54c082345ea7a55..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmWFtRWuG|U<eHj4FuAmAOz$>m<*xDp{xu*02YJL|IxsWyDN9!?dZ6B_wG#~eHVm)
STnMw{?(Vz29Y6pUgU|pC&O0*z

diff --git a/tilesets/07_palette_map.asm b/tilesets/07_palette_map.asm
new file mode 100644
index 000000000..78508b59e
--- /dev/null
+++ b/tilesets/07_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, RED, GRAY, WATER, WATER, WATER, ROOF, ROOF
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, WATER, WATER, WATER
+	tilepal 0, GRAY, RED, RED, WATER, WATER, WATER, WATER, WATER
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN, GRAY
+	tilepal 0, GRAY, GRAY, RED, RED, WATER, WATER, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, RED, RED, GRAY, WATER, WATER, WATER
+	tilepal 0, WATER, WATER, WATER, WATER, GRAY, GRAY, WATER, GRAY
+	tilepal 0, GRAY, GRAY, RED, RED, RED, RED, WATER, WATER
+	tilepal 0, YELLOW, YELLOW, GRAY, GRAY, GRAY, RED, RED, GRAY
+	tilepal 0, RED, RED, RED, RED, RED, RED, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, RED, GRAY, WATER, WATER, WATER, ROOF, ROOF
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, WATER, WATER, WATER
+	tilepal 1, GRAY, RED, RED, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN, GRAY
+	tilepal 1, GRAY, GRAY, RED, RED, WATER, WATER, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, RED, RED, GRAY, WATER, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, GRAY, GRAY, WATER, GRAY
+	tilepal 1, GRAY, GRAY, RED, RED, RED, RED, WATER, WATER
+	tilepal 1, YELLOW, YELLOW, GRAY, GRAY, GRAY, RED, RED, GRAY
+	tilepal 1, RED, RED, RED, RED, RED, RED, GRAY, GRAY
+	tilepal 1, YELLOW, YELLOW, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
diff --git a/tilesets/07_palette_map.bin b/tilesets/07_palette_map.bin
deleted file mode 100644
index e993af8eca4db338cdbd2a8886e526408ac22f1e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmZ9=K@os33`Efd3^WdqP$m{?0SjnZz(C^w31wmd3s}Gc<jlYPnU}IIK-M&=0%H$}
r%>X28$N&*7NS%nF1i!y(^M`C+Pj~XzXtA55H4oWo<`?T~X1szwAsRBN

diff --git a/tilesets/08_palette_map.asm b/tilesets/08_palette_map.asm
new file mode 100644
index 000000000..7854d3a81
--- /dev/null
+++ b/tilesets/08_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, GRAY, WATER, WATER, RED, GREEN, GREEN, GREEN
+	tilepal 0, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN
+	tilepal 0, WATER, GRAY, WATER, WATER, RED, BROWN, BROWN, WATER
+	tilepal 0, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY, BROWN, WATER
+	tilepal 0, GREEN, GREEN, GRAY, GRAY, GREEN, GREEN, WATER, WATER
+	tilepal 0, RED, RED, GREEN, GREEN, GREEN, GREEN, GREEN, GREEN
+	tilepal 0, GREEN, GREEN, GREEN, GREEN, GRAY, WATER, WATER, WATER
+	tilepal 0, GREEN, GREEN, GREEN, GREEN, GREEN, GREEN, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, WATER, WATER
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, WATER, WATER, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, ROOF, RED, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN, WATER
+	tilepal 1, GRAY, ROOF, RED, GRAY, GRAY, WATER, GRAY, GRAY
+	tilepal 1, RED, RED, GREEN, GREEN, GREEN, GREEN, GREEN, GREEN
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, RED, WATER, WATER, WATER
+	tilepal 1, GREEN, GREEN, GREEN, GREEN, GREEN, GREEN, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, WATER, WATER
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, WATER, WATER, GRAY, GRAY
diff --git a/tilesets/08_palette_map.bin b/tilesets/08_palette_map.bin
deleted file mode 100644
index e5dc47699d5fd73247ab41d4b51e21b99ad81f46..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmZQDR#Z}AU{GQ<4m1VQK&)ges00EA#z2Ar3XCDNF~ff}&;bFfIy&ZoSbJY|?&z4g
QY88;bb2pfR$nS<x0K48WL;wH)

diff --git a/tilesets/09_palette_map.asm b/tilesets/09_palette_map.asm
new file mode 100644
index 000000000..6bfdf4686
--- /dev/null
+++ b/tilesets/09_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, WATER, WATER, GRAY, GRAY, RED, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, RED, RED, RED, BROWN
+	tilepal 0, ROOF, WATER, WATER, WATER, WATER, RED, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, ROOF, WATER, RED, RED, GRAY, GRAY
+	tilepal 0, BROWN, BROWN, BROWN, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, ROOF, ROOF, RED, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, GRAY, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, WATER, WATER, GRAY, GRAY, RED, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, RED, RED, RED, BROWN
+	tilepal 1, ROOF, WATER, WATER, WATER, WATER, RED, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, ROOF, WATER, RED, RED, GRAY, GRAY
+	tilepal 1, BROWN, BROWN, BROWN, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, RED, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, GRAY, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
diff --git a/tilesets/09_palette_map.bin b/tilesets/09_palette_map.bin
deleted file mode 100644
index d197c5d4cb5012ac7d73b63c04db76f4f02a94d3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmXqD76=Vx5DYXk77h(H6J!WYO#_0&G&T^01^h<?JGy7wz1uPK=Dyvt@7~=vv*YgD
NcR=v+T_1?T0stZ;M|%JO

diff --git a/tilesets/10_palette_map.asm b/tilesets/10_palette_map.asm
new file mode 100644
index 000000000..24399c6ea
--- /dev/null
+++ b/tilesets/10_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, WATER, RED, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, WATER, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, WATER, RED, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, WATER, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, WATER, WATER, WATER, WATER, ROOF, BROWN, BROWN, BROWN
+	tilepal 0, WATER, WATER, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN
+	tilepal 0, WATER, WATER, WATER, WATER, RED, BROWN, BROWN, GRAY
+	tilepal 0, WATER, WATER, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN
+	tilepal 0, ROOF, ROOF, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, ROOF, ROOF, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, WATER, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, WATER, GRAY, GRAY, GRAY, GRAY, WATER, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, BROWN, GREEN, GREEN, GREEN
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, RED, RED, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
diff --git a/tilesets/10_palette_map.bin b/tilesets/10_palette_map.bin
deleted file mode 100644
index a5f62bf30e7e58c4cc980ba6d85bd19d03d08bff..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmXpA3=K7AU|=wS(#FPNp~j)AO2)>4tROlKD8~%MAQ}Yzqk)c&jvc#!07~ud26NZ0
L0*TE85oiDaF(Noi

diff --git a/tilesets/11_palette_map.asm b/tilesets/11_palette_map.asm
new file mode 100644
index 000000000..f79f9c01b
--- /dev/null
+++ b/tilesets/11_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, WATER, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, RED, RED, BROWN, BROWN
+	tilepal 0, ROOF, ROOF, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 0, ROOF, ROOF, GRAY, GRAY, ROOF, ROOF, BROWN, BROWN
+	tilepal 0, ROOF, ROOF, GREEN, WATER, WATER, WATER, RED, RED
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN, BROWN, BROWN
+	tilepal 0, ROOF, ROOF, GREEN, GREEN, RED, RED, GRAY, RED
+	tilepal 0, RED, RED, BROWN, BROWN, GREEN, GREEN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, GREEN, GREEN, GRAY, BROWN, WATER
+	tilepal 0, BROWN, BROWN, GRAY, BROWN, BROWN, BROWN, BROWN, GRAY
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, BROWN, ROOF
+	tilepal 0, ROOF, ROOF, GRAY, BROWN, GRAY, GRAY, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, WATER, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, RED, RED, BROWN, BROWN
+	tilepal 1, ROOF, ROOF, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 1, ROOF, ROOF, GRAY, GRAY, ROOF, ROOF, BROWN, BROWN
+	tilepal 1, ROOF, ROOF, GREEN, WATER, WATER, WATER, RED, RED
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN, BROWN, BROWN
+	tilepal 1, ROOF, ROOF, GREEN, GREEN, RED, RED, GRAY, RED
+	tilepal 1, RED, RED, BROWN, BROWN, GREEN, GREEN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, GREEN, GREEN, GRAY, BROWN, WATER
+	tilepal 1, BROWN, BROWN, GRAY, BROWN, BROWN, BROWN, BROWN, GRAY
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, BROWN, ROOF
+	tilepal 1, ROOF, ROOF, GRAY, BROWN, GRAY, GRAY, GRAY, GRAY
diff --git a/tilesets/11_palette_map.bin b/tilesets/11_palette_map.bin
deleted file mode 100644
index f2e77186c15bc7a3af55fce22e0193ce487868c8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmZ9-u?c`M6h+Y>*qapudr{mY%^Sf#OAykV6$196xQERf!M}q3+Ed)y!#EGIiWA5%
vdZ2~0zVUW+)r5c=sAmbzy+1om%v7sJr5<M{3$^4m+qo?lZzeK5ddK(y^~gV=

diff --git a/tilesets/12_palette_map.asm b/tilesets/12_palette_map.asm
new file mode 100644
index 000000000..991510d12
--- /dev/null
+++ b/tilesets/12_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, YELLOW, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GREEN, GREEN, WATER, RED, GRAY, GRAY, ROOF, ROOF
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, BROWN, BROWN, BROWN, RED, ROOF, ROOF, GRAY, YELLOW
+	tilepal 0, GRAY, GRAY, RED, RED, RED, RED, WATER, WATER
+	tilepal 0, WATER, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, RED, RED, RED, RED, WATER, WATER
+	tilepal 0, WATER, WATER, RED, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, RED, RED, RED
+	tilepal 0, GREEN, GRAY, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, RED, YELLOW, YELLOW, YELLOW, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, ROOF, ROOF, RED, RED, BROWN, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, GRAY, GRAY, GREEN, GREEN, GREEN, GREEN, GRAY
+	tilepal 1, GRAY, GREEN, GREEN, RED, RED, WATER, WATER, ROOF
+	tilepal 1, GRAY, GRAY, GRAY, YELLOW, YELLOW, YELLOW, ROOF, GRAY
+	tilepal 1, GRAY, GRAY, WATER, GRAY, GRAY, GRAY, YELLOW, YELLOW
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, RED, WATER, RED
+	tilepal 1, RED, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, RED, RED, RED, RED, RED, RED, RED, RED
+	tilepal 1, RED, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN, GREEN, GREEN
+	tilepal 1, GRAY, GRAY, WATER, GRAY, WATER, RED, BROWN, BROWN
diff --git a/tilesets/12_palette_map.bin b/tilesets/12_palette_map.bin
deleted file mode 100644
index d8e843c15fd4482148b6581a0d3a62a0f156fbb9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmZ=@U|>)ZW=I24456ZF4h({V#>OBHh-L&a1O%CsfRv+4T3VW5=zlcOv0_!%idj2f
mcbquW*U{Z^rlVuV?9Pskj+sDk^X}bVAQK8!t?KBWeHQ>H*D}EX

diff --git a/tilesets/13_palette_map.asm b/tilesets/13_palette_map.asm
new file mode 100644
index 000000000..2bd27ad22
--- /dev/null
+++ b/tilesets/13_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, BROWN, WATER, WATER, RED, WATER, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, WATER, WATER, WATER, WATER
+	tilepal 0, GRAY, RED, WATER, WATER, WATER, WATER, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, WATER, WATER, WATER, WATER
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 0, RED, GREEN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, GREEN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, WATER, BROWN, BROWN
+	tilepal 0, BROWN, GREEN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GREEN, WATER, BROWN, BROWN
+	tilepal 0, BROWN, GREEN, BROWN, BROWN, WATER, WATER, BROWN, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, YELLOW, GRAY, GRAY, GRAY, GRAY, GRAY, YELLOW, YELLOW
+	tilepal 1, YELLOW, YELLOW, YELLOW, YELLOW, RED, RED, WATER, WATER
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, YELLOW
+	tilepal 1, WATER, YELLOW, YELLOW, YELLOW, GREEN, GREEN, WATER, WATER
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, RED, RED, GRAY, YELLOW, RED, RED, YELLOW, WATER
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, YELLOW, YELLOW, GRAY, YELLOW, RED, RED, YELLOW, WATER
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, WATER, GRAY, GREEN
+	tilepal 1, YELLOW, YELLOW, WATER, YELLOW, WATER, WATER, YELLOW, YELLOW
+	tilepal 1, GREEN, GREEN, GREEN, GREEN, GREEN, GREEN, GREEN, GREEN
+	tilepal 1, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW
diff --git a/tilesets/13_palette_map.bin b/tilesets/13_palette_map.bin
deleted file mode 100644
index 2e25b5d1e939d05edf1887a9f60168c0edb7ca74..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmZ9?u?>JQ3`EfzffYca2fPT4cXGi3*#KpNNMV3Txt+jH$!}isPuT&8Od><5Vpd&T
iT|;c40*5R5{<_RarfO!bGl!O1dO{A%&0d*3ANc`ieK?f>

diff --git a/tilesets/14_palette_map.asm b/tilesets/14_palette_map.asm
new file mode 100644
index 000000000..34bb9f6f0
--- /dev/null
+++ b/tilesets/14_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, GRAY, BROWN, RED, BROWN, GREEN, GREEN, GREEN
+	tilepal 0, GREEN, GREEN, GRAY, GRAY, RED, RED, GREEN, BROWN
+	tilepal 0, GRAY, GRAY, GRAY, RED, BROWN, GREEN, GRAY, GRAY
+	tilepal 0, GRAY, GREEN, GRAY, GRAY, RED, RED, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, RED, RED, BROWN, BROWN, GRAY, GRAY
+	tilepal 0, GRAY, GREEN, RED, RED, GREEN, GRAY, RED, RED
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, RED, RED, GREEN, BROWN, RED, RED
+	tilepal 0, ROOF, ROOF, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, ROOF, RED, RED
+	tilepal 0, RED, ROOF, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, WATER, ROOF, ROOF, WATER, WATER
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, YELLOW, RED, YELLOW, RED, GREEN, GREEN, BROWN, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, BROWN
+	tilepal 1, YELLOW, RED, YELLOW, RED, GREEN, GREEN, BROWN, ROOF
+	tilepal 1, ROOF, GRAY, GRAY, GRAY, GRAY, RED, ROOF, ROOF
+	tilepal 1, YELLOW, RED, YELLOW, RED, WATER, WATER, RED, RED
+	tilepal 1, RED, RED, RED, RED, GREEN, GRAY, RED, RED
+	tilepal 1, RED, RED, YELLOW, YELLOW, WATER, WATER, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, RED, RED, GREEN, ROOF, RED, RED
+	tilepal 1, RED, RED, YELLOW, YELLOW, ROOF, ROOF, RED, RED
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, ROOF, RED, RED
+	tilepal 1, RED, GRAY, GRAY, GRAY, GRAY, GRAY, RED, RED
+	tilepal 1, GRAY, GRAY, GRAY, WATER, ROOF, ROOF, WATER, WATER
diff --git a/tilesets/14_palette_map.bin b/tilesets/14_palette_map.bin
deleted file mode 100644
index 4385036ac0eb14b9e97f3bd5de77405d9215b179..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmZP&RaH`A5Da1vP-ReH5DX0!3}sLdWCD^5Kz5K|8UqL<2quCkgEZs+XkgBqRd3(D
udv^~+_jSy8H)qc7nKNg0&765=_uacQUjgZNGdnt7%<SywnAx%8-EIKZ7B^7<

diff --git a/tilesets/15_palette_map.asm b/tilesets/15_palette_map.asm
new file mode 100644
index 000000000..b20f49195
--- /dev/null
+++ b/tilesets/15_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, ROOF, RED, RED, RED, ROOF, ROOF, GREEN
+	tilepal 0, GREEN, GRAY, GREEN, GREEN, GREEN, GREEN, WATER, GREEN
+	tilepal 0, GRAY, WATER, WATER, WATER, RED, ROOF, ROOF, BROWN
+	tilepal 0, BROWN, RED, GRAY, GREEN, GREEN, GREEN, GREEN, GREEN
+	tilepal 0, RED, RED, GRAY, GRAY, WATER, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, RED, GRAY, GRAY, GRAY, ROOF, GREEN, BROWN
+	tilepal 0, RED, RED, GRAY, GRAY, WATER, GRAY, GRAY, GRAY
+	tilepal 0, RED, WATER, GRAY, GRAY, GRAY, GRAY, RED, RED
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN
+	tilepal 0, WATER, WATER, WATER, WATER, WATER, WATER, ROOF, ROOF
+	tilepal 0, WATER, GREEN, GREEN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, WATER, RED, WATER, WATER, ROOF, ROOF
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, ROOF, RED, RED, RED, ROOF, ROOF, GREEN
+	tilepal 1, GREEN, GRAY, GREEN, GREEN, GREEN, GREEN, WATER, GREEN
+	tilepal 1, GRAY, WATER, WATER, WATER, RED, ROOF, ROOF, BROWN
+	tilepal 1, BROWN, RED, GRAY, GREEN, GREEN, GREEN, GREEN, GREEN
+	tilepal 1, RED, RED, GRAY, GRAY, WATER, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, RED, GRAY, GRAY, GRAY, ROOF, GREEN, BROWN
+	tilepal 1, RED, RED, GRAY, GRAY, WATER, GRAY, GRAY, GRAY
+	tilepal 1, RED, WATER, GRAY, GRAY, GRAY, GRAY, RED, RED
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, ROOF, ROOF
+	tilepal 1, WATER, GREEN, GREEN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, WATER, RED, WATER, WATER, ROOF, ROOF
diff --git a/tilesets/15_palette_map.bin b/tilesets/15_palette_map.bin
deleted file mode 100644
index 385f0f74fb3a68ebce1b0b7443d00c1974c21b17..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmYcgOjKi1Qc^ZBP7D)OP*M_PU}g|tNC*Pah71gX3=9FG#>U2J%0Uba48q1~|IxsU
znJ?FMty;Bu$L^Q+=B`+^YGy}w$Bd2_w?OpHj*gif9XIao-o5+X>RTNh9kX}80{{sH
BH#-0T

diff --git a/tilesets/16_palette_map.asm b/tilesets/16_palette_map.asm
new file mode 100644
index 000000000..5daa0da6b
--- /dev/null
+++ b/tilesets/16_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, BROWN, WATER, WATER, RED, GRAY, GRAY, GRAY
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, WATER, WATER, RED, BROWN, GRAY, GRAY
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY
+	tilepal 0, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, RED, GRAY
+	tilepal 0, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, WATER, WATER
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, WATER, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, BROWN, WATER, WATER, RED, GRAY, GRAY, GRAY
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, WATER, WATER, RED, BROWN, GRAY, GRAY
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY
+	tilepal 1, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, RED, GRAY
+	tilepal 1, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, WATER, WATER
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, WATER, BROWN
diff --git a/tilesets/16_palette_map.bin b/tilesets/16_palette_map.bin
deleted file mode 100644
index 14a4191b8a94eafd0c9768e9659b459ea56ca91c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmWGAW@HEj0pmc1P#_D4SOb7uAk7G(LqnB<fP^uW4*rh@ZtU*txZ82}?%mxt!8DNB
WdjrS?(w!js?%h?lfW&SneH#EbXhG}%

diff --git a/tilesets/17_palette_map.asm b/tilesets/17_palette_map.asm
new file mode 100644
index 000000000..f52f5bbe7
--- /dev/null
+++ b/tilesets/17_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, GRAY, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, RED, GRAY
+	tilepal 0, GRAY, GRAY, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, RED, GRAY
+	tilepal 0, GRAY, GREEN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, ROOF, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, WATER, WATER, WATER, WATER
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, GREEN, GREEN, WATER, WATER
+	tilepal 0, WATER, GREEN, GREEN, WATER, BROWN, BROWN, BROWN, GREEN
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, GREEN, GREEN, WATER, WATER
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, WATER, WATER, WATER, WATER, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, RED, GRAY
+	tilepal 1, GRAY, GRAY, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, RED, GRAY
+	tilepal 1, GRAY, GREEN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, YELLOW, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, ROOF, GRAY, GRAY
+	tilepal 1, YELLOW, YELLOW, YELLOW, YELLOW, WATER, WATER, WATER, WATER
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, GREEN, GREEN, WATER, WATER
+	tilepal 1, WATER, GREEN, GREEN, WATER, BROWN, BROWN, BROWN, GREEN
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, GREEN, GREEN, WATER, WATER
diff --git a/tilesets/17_palette_map.bin b/tilesets/17_palette_map.bin
deleted file mode 100644
index 8c3cbd31a34303aa9bce592893da2700d81d2c22..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmZQjVgLa~1}Lon<gfrSGY~T{Brv$R7#oK&C>bjog{p$+|7c+M?hX*>>{tb%R{*IV
aAnpcpUv!)~vwQd5j#ax?@4CAdL<0a{{4sF=

diff --git a/tilesets/18_palette_map.asm b/tilesets/18_palette_map.asm
new file mode 100644
index 000000000..551a09351
--- /dev/null
+++ b/tilesets/18_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, GREEN, GREEN, GREEN, RED, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, RED, RED, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GREEN, GREEN, RED, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, RED, RED, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GREEN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GREEN, GREEN, YELLOW, RED, RED
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, RED, RED, RED, RED, RED
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, GRAY, RED, WATER, WATER, ROOF, GRAY, GRAY
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, RED, WATER, WATER, ROOF, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, RED, RED, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, RED, ROOF, RED, RED, RED, RED, RED
+	tilepal 1, RED, RED, RED, RED, RED, RED, RED, RED
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, WATER, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, WATER, RED, GRAY, GRAY, RED, WATER, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, GRAY
diff --git a/tilesets/18_palette_map.bin b/tilesets/18_palette_map.bin
deleted file mode 100644
index 13ed4766431f70884e0e067e1d617bec484f9a37..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmY#TVq{<tWME)`(h5K(gMt%Cgn>aoP%sn-SPhdILPHrs8G!VEG_V^8IzV7XCxn_e
X6AVD&AaMKc-Mf2%^z4qEAZ|AR?FBS)

diff --git a/tilesets/19_palette_map.asm b/tilesets/19_palette_map.asm
new file mode 100644
index 000000000..5f80e3a4d
--- /dev/null
+++ b/tilesets/19_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, WATER, WATER, WATER, BROWN, WATER, WATER, RED
+	tilepal 0, RED, ROOF, ROOF, BROWN, ROOF, RED, RED, RED
+	tilepal 0, ROOF, WATER, ROOF, BROWN, ROOF, WATER, WATER, RED
+	tilepal 0, RED, ROOF, ROOF, WATER, ROOF, RED, RED, RED
+	tilepal 0, ROOF, ROOF, WATER, BROWN, RED, WATER, WATER, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, BROWN, ROOF, ROOF, GRAY, GRAY
+	tilepal 0, ROOF, ROOF, WATER, WATER, RED, ROOF, BROWN, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, BROWN, BROWN, ROOF, BROWN, WATER
+	tilepal 0, YELLOW, YELLOW, ROOF, ROOF, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, RED, RED, GRAY, GRAY, GREEN, GREEN, ROOF, ROOF
+	tilepal 0, YELLOW, YELLOW, ROOF, ROOF, ROOF, ROOF, GRAY, GRAY
+	tilepal 0, RED, RED, GREEN, GREEN, ROOF, ROOF, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, BROWN, BROWN, ROOF, GRAY, GRAY, BROWN, BROWN, RED
+	tilepal 1, RED, RED, RED, BROWN, RED, RED, RED, RED
+	tilepal 1, ROOF, WATER, ROOF, BROWN, RED, WATER, WATER, RED
+	tilepal 1, RED, RED, RED, WATER, RED, RED, RED, RED
+	tilepal 1, ROOF, ROOF, WATER, BROWN, RED, WATER, WATER, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, BROWN, RED, ROOF, GRAY, GRAY
+	tilepal 1, ROOF, ROOF, WATER, WATER, RED, RED, BROWN, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, BROWN, BROWN, ROOF, BROWN, WATER
+	tilepal 1, RED, RED, ROOF, ROOF, BROWN, BROWN, GRAY, GRAY
+	tilepal 1, RED, RED, GRAY, GRAY, GREEN, GREEN, ROOF, ROOF
+	tilepal 1, RED, RED, ROOF, ROOF, ROOF, ROOF, GRAY, GRAY
+	tilepal 1, RED, RED, GREEN, GREEN, ROOF, ROOF, GRAY, GRAY
diff --git a/tilesets/19_palette_map.bin b/tilesets/19_palette_map.bin
deleted file mode 100644
index 9579602a6f5b48649d555b7111f883a267e59842..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmXpoHWf|`6B9HGGZRiU6BA4eHe_Z9NMlGdPGn^WNHujy3k?-yP)c)2OJfjJN@Mts
z2JZIVm^<_4%$fV{?VLSx=ggV!Ztv{wxbd>%-R_ya9XH<Yo%!x=$IOmZ?`FPx*D-U|
GyAA+MHas~1

diff --git a/tilesets/20_palette_map.asm b/tilesets/20_palette_map.asm
new file mode 100644
index 000000000..1c0cb1f08
--- /dev/null
+++ b/tilesets/20_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GREEN
+	tilepal 0, GREEN, RED, RED, GRAY, GRAY, RED, RED, RED
+	tilepal 0, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GREEN
+	tilepal 0, GREEN, RED, RED, GRAY, GRAY, WATER, RED, RED
+	tilepal 0, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GREEN
+	tilepal 0, GREEN, ROOF, ROOF, GRAY, GRAY, YELLOW, RED, RED
+	tilepal 0, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GREEN
+	tilepal 0, GREEN, ROOF, ROOF, WATER, WATER, GREEN, RED, RED
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, GREEN
+	tilepal 0, GREEN, YELLOW, YELLOW, WATER, WATER, BROWN, YELLOW, YELLOW
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, GREEN
+	tilepal 0, GREEN, YELLOW, YELLOW, GRAY, GRAY, BROWN, YELLOW, YELLOW
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GREEN
+	tilepal 1, GREEN, RED, RED, GRAY, GRAY, RED, RED, RED
+	tilepal 1, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GREEN
+	tilepal 1, GREEN, RED, RED, GRAY, GRAY, WATER, RED, RED
+	tilepal 1, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GREEN
+	tilepal 1, GREEN, ROOF, ROOF, GRAY, GRAY, YELLOW, RED, RED
+	tilepal 1, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GREEN
+	tilepal 1, GREEN, ROOF, ROOF, WATER, WATER, GREEN, RED, RED
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, GREEN
+	tilepal 1, GREEN, YELLOW, YELLOW, WATER, WATER, BROWN, YELLOW, YELLOW
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, GREEN
+	tilepal 1, GREEN, YELLOW, YELLOW, GRAY, GRAY, BROWN, YELLOW, YELLOW
diff --git a/tilesets/20_palette_map.bin b/tilesets/20_palette_map.bin
deleted file mode 100644
index 7390c20fa7609970c38686e08b2f5696f569a5d8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmWG#Wl#`e6c7vr(*|HViOm5*n<)!2Fodc)nFPClX_f$&|7hTDZ^w#Roik=a=pA7C
aRo@8+y>Io*j*h!)PwlyV22A(dI0FF5$TtxH

diff --git a/tilesets/21_palette_map.asm b/tilesets/21_palette_map.asm
new file mode 100644
index 000000000..75ee649f9
--- /dev/null
+++ b/tilesets/21_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 0, WATER, WATER, GRAY, GRAY, RED, GRAY, WATER, WATER
+	tilepal 0, RED, WATER, GRAY, WATER, WATER, WATER, RED, RED
+	tilepal 0, WATER, WATER, GRAY, GRAY, GRAY, GREEN, GREEN, GRAY
+	tilepal 0, GRAY, GRAY, RED, RED, RED, WATER, WATER, WATER
+	tilepal 0, RED, RED, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, RED, RED, RED, WATER, WATER, WATER
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, WATER, GRAY
+	tilepal 0, GRAY, GRAY, WATER, WATER, WATER, WATER, RED, WATER
+	tilepal 0, YELLOW, YELLOW, WATER, WATER, GRAY, RED, RED, GRAY
+	tilepal 0, RED, RED, WATER, WATER, WATER, WATER, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, WATER, WATER, GRAY, GRAY, YELLOW, YELLOW
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, GRAY, GRAY, WATER, RED, RED, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, GRAY, WATER
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, RED, RED, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, RED, RED, GRAY, GRAY, RED, RED, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, GREEN, GREEN
+	tilepal 1, WATER, RED, WATER, BROWN, WATER, WATER, WATER, WATER
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, GREEN, GREEN
+	tilepal 1, GRAY, GRAY, WATER, WATER, WATER, WATER, GRAY, GRAY
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, WATER, WATER, WATER, WATER, GRAY, GRAY
+	tilepal 1, WATER, WATER, WATER, WATER, WATER, WATER, BROWN, BROWN
diff --git a/tilesets/21_palette_map.bin b/tilesets/21_palette_map.bin
deleted file mode 100644
index b4a0afde2b7281aefe8ccb7a6684a9e726037600..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmXpo1_A~~V?zUDL1P95CI&%6W5G}c1`rJ-nHh|Y4PA@{7zKf<T!8358tB+Db2kv|
c=;#2`yJte^RkLq{gm<s%*u5KwcHf230H!iF%K!iX

diff --git a/tilesets/22_palette_map.asm b/tilesets/22_palette_map.asm
new file mode 100644
index 000000000..1abce2a16
--- /dev/null
+++ b/tilesets/22_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, RED, WATER, WATER, GRAY, GRAY, WATER, WATER
+	tilepal 0, WATER, WATER, WATER, WATER, WATER, WATER, BROWN, BROWN
+	tilepal 0, WATER, RED, WATER, WATER, GRAY, GRAY, WATER, WATER
+	tilepal 0, WATER, WATER, WATER, WATER, WATER, WATER, BROWN, BROWN
+	tilepal 0, WATER, RED, RED, RED, RED, WATER, GRAY, GRAY
+	tilepal 0, WATER, WATER, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, WATER, RED, RED, RED, RED, WATER, GRAY, WATER
+	tilepal 0, GRAY, GRAY, BROWN, RED, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, RED, BROWN, RED, BROWN, BROWN, BROWN, RED, RED
+	tilepal 0, WATER, WATER, WATER, RED, RED, RED, RED, WATER
+	tilepal 0, BROWN, YELLOW, RED, BROWN, BROWN, BROWN, RED, RED
+	tilepal 0, WATER, RED, RED, RED, RED, GRAY, RED, WATER
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, WATER, GRAY, WATER, WATER, WATER, ROOF, ROOF
+	tilepal 1, YELLOW, YELLOW, GRAY, GRAY, WATER, WATER, RED, RED
+	tilepal 1, GRAY, RED, RED, WATER, WATER, WATER, WATER, WATER
+	tilepal 1, RED, GRAY, GRAY, GRAY, GREEN, YELLOW, RED, RED
+	tilepal 1, GRAY, GRAY, RED, RED, WATER, WATER, GRAY, GRAY
+	tilepal 1, YELLOW, YELLOW, BROWN, YELLOW, WATER, WATER, YELLOW, RED
+	tilepal 1, GRAY, GRAY, RED, RED, GRAY, WATER, WATER, WATER
+	tilepal 1, GRAY, GRAY, BROWN, YELLOW, RED, RED, YELLOW, RED
+	tilepal 1, GRAY, GRAY, RED, RED, RED, RED, WATER, WATER
+	tilepal 1, GRAY, GRAY, YELLOW, BROWN, WATER, WATER, GRAY, BROWN
+	tilepal 1, RED, RED, RED, RED, RED, RED, GRAY, GRAY
+	tilepal 1, YELLOW, YELLOW, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
diff --git a/tilesets/22_palette_map.bin b/tilesets/22_palette_map.bin
deleted file mode 100644
index dc30c3055d29683e6aace01afc1ac84014b5514e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmZ9=u?>JQ3`9}00anBwM4o{GD7@3L0hSmf$Qz)fr(gzF05>%J=IO2%l1S4hXA)9P
roJSf|=UG`|Okv_KKfg-xyTWbV-4`4NbJXS=tT>v5aa?|y87hDmX`nZy

diff --git a/tilesets/23_palette_map.asm b/tilesets/23_palette_map.asm
new file mode 100644
index 000000000..6e3c10115
--- /dev/null
+++ b/tilesets/23_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, RED
+	tilepal 0, RED, RED, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, RED
+	tilepal 0, RED, RED, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 0, RED, RED, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 0, RED, RED, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, RED
+	tilepal 1, RED, RED, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, BROWN, BROWN, BROWN, RED
+	tilepal 1, RED, RED, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 1, RED, RED, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 1, RED, RED, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN
diff --git a/tilesets/23_palette_map.bin b/tilesets/23_palette_map.bin
deleted file mode 100644
index 086080a7de63c107f7a319f850772298d654fffd..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmWFy4HXp(1p)>r4P*&2fCS()m;)pJqk+43@6MeGB<^-VX&`H62S@-)p8>MY+yM)K
FXaHzlLaG1&

diff --git a/tilesets/24_palette_map.asm b/tilesets/24_palette_map.asm
new file mode 100644
index 000000000..73c09ebe5
--- /dev/null
+++ b/tilesets/24_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, GREEN, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, WATER, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, GREEN, BROWN, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, WATER, BROWN, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
diff --git a/tilesets/24_palette_map.bin b/tilesets/24_palette_map.bin
deleted file mode 100644
index b6c9713932f9fdea6e03128543429bab6c03e081..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmZ9=(Fp(`6hcv<)taDqI|;4U1ckHI^Ro_I5Cbg`2|Z9f48Ag;;B`LY5|y~c>0$Jh
Hk%O-b(UUll

diff --git a/tilesets/25_palette_map.asm b/tilesets/25_palette_map.asm
new file mode 100644
index 000000000..f9c65ef89
--- /dev/null
+++ b/tilesets/25_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, GREEN, BROWN, RED, GREEN, BROWN, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN, GREEN, GREEN
+	tilepal 0, RED, RED, RED, GRAY, WATER, ROOF, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, BROWN, GREEN, GREEN, GREEN, GREEN
+	tilepal 0, RED, RED, RED, BROWN, BROWN, BROWN, BROWN, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, BROWN, GREEN, BROWN, BROWN, GREEN
+	tilepal 0, RED, RED, RED, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, GREEN, GREEN, GREEN, BROWN, BROWN, GREEN
+	tilepal 0, BROWN, RED, BROWN, BROWN, GRAY, GRAY, GRAY, BROWN
+	tilepal 0, BROWN, BROWN, GREEN, GREEN, GRAY, GRAY, GRAY, RED
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, BROWN
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, WATER
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, WATER, WATER, GRAY, RED, GREEN, BROWN, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN, GREEN, GREEN
+	tilepal 1, WATER, WATER, RED, GRAY, WATER, ROOF, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, BROWN, GREEN, GREEN, GREEN, GREEN
+	tilepal 1, RED, RED, RED, BROWN, BROWN, BROWN, BROWN, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, BROWN, GREEN, BROWN, BROWN, GREEN
+	tilepal 1, RED, RED, RED, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, GREEN, GREEN, GREEN, BROWN, BROWN, GREEN
+	tilepal 1, BROWN, RED, BROWN, BROWN, GRAY, GRAY, GRAY, BROWN
+	tilepal 1, BROWN, BROWN, GREEN, GREEN, WATER, WATER, WATER, RED
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, BROWN
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, WATER, WATER, WATER, GRAY
diff --git a/tilesets/25_palette_map.bin b/tilesets/25_palette_map.bin
deleted file mode 100644
index 871b5afbe4f9923ec719aa828e49155abc6695b2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmZ9-u?c`M5Czb0VXsAc3D`SI4BP}Rb0YSNxWGXs$RaUt6F7v%*4MnwcmUS6)daZm
vNHv`A%S6`qhTzDep>JS#e&UvyStQOka}wDvT{-1YR+Su1<)ji1{pPs5ZZ<jp

diff --git a/tilesets/26_palette_map.asm b/tilesets/26_palette_map.asm
new file mode 100644
index 000000000..5ebde24ba
--- /dev/null
+++ b/tilesets/26_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, WATER, WATER, WATER, WATER, YELLOW, YELLOW, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, RED, RED, RED, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, RED, RED, RED, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
diff --git a/tilesets/26_palette_map.bin b/tilesets/26_palette_map.bin
deleted file mode 100644
index e5d3715e4517bb0dbab342abf64f8fbaa6c2e06e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
ucmZPw4GlFmc42S{bpZhe7Z;#_AR~x&aRJjH;gC=U2B0_){6_<KNdy2o07OOr

diff --git a/tilesets/27_palette_map.asm b/tilesets/27_palette_map.asm
new file mode 100644
index 000000000..3530f7479
--- /dev/null
+++ b/tilesets/27_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, RED, RED, WATER, WATER, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, WATER, WATER, RED, WATER, WATER, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, ROOF, ROOF, GRAY, GRAY, BROWN, GRAY, GRAY, BROWN
+	tilepal 0, BROWN, ROOF, ROOF, GRAY, RED, RED, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, WATER, GRAY, GRAY, BROWN
+	tilepal 0, BROWN, GRAY, GRAY, GRAY, RED, RED, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, YELLOW, YELLOW, GREEN, GREEN
+	tilepal 0, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, RED, RED, WATER, WATER, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 1, YELLOW, YELLOW, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, RED, YELLOW, YELLOW, RED
+	tilepal 1, ROOF, RED, RED, ROOF, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, ROOF, ROOF, GRAY, GRAY, WATER, GRAY, GRAY, BROWN
+	tilepal 1, BROWN, ROOF, ROOF, GRAY, RED, RED, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, WATER, GRAY, GRAY, BROWN
+	tilepal 1, BROWN, GRAY, GRAY, GRAY, RED, RED, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, GRAY, GRAY, GREEN, GREEN
+	tilepal 1, GREEN, GREEN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, RED, RED, WATER, WATER, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, RED, GRAY, GRAY, GRAY, GRAY
diff --git a/tilesets/27_palette_map.bin b/tilesets/27_palette_map.bin
deleted file mode 100644
index 8bacb68a116cb6d6814e420e04d992daa086f48c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmWeIWM%*XV<?@*z#5RsCI}Q^4q#;f(xEO&N<f~VF-R2y!+$hz1_U}l;N+ZnFFQKk
gb#&i&+cy))@4nI70i^GCtXc)+&D;$nW^{A_0JsD(hyVZp

diff --git a/tilesets/28_palette_map.asm b/tilesets/28_palette_map.asm
new file mode 100644
index 000000000..6b9b5546d
--- /dev/null
+++ b/tilesets/28_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, GRAY, RED, WATER, WATER, WATER, WATER, RED
+	tilepal 0, RED, GRAY, WATER, WATER, WATER, WATER, GRAY, GRAY
+	tilepal 0, GRAY, RED, RED, WATER, WATER, WATER, WATER, RED
+	tilepal 0, RED, GRAY, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, GRAY, RED, WATER, WATER, WATER, WATER, RED
+	tilepal 1, RED, GRAY, WATER, WATER, WATER, WATER, GRAY, GRAY
+	tilepal 1, GRAY, RED, RED, WATER, WATER, WATER, WATER, RED
+	tilepal 1, RED, GRAY, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GREEN, GREEN
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, GRAY, BROWN, BROWN, YELLOW, YELLOW, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, BROWN, BROWN, YELLOW, YELLOW, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
diff --git a/tilesets/28_palette_map.bin b/tilesets/28_palette_map.bin
deleted file mode 100644
index 3d90cf959f31b2d4650fb0a9a9536d7cf4872934..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmZQDG!|wwHf9h2(V?MAp$uT41fdv083ICC!E7k~9}RTu+&#N<_wJ4vAo}jzRd+kU
RU=@VwxZ82#Y!8?Xr2+WOG4lWb

diff --git a/tilesets/29_palette_map.asm b/tilesets/29_palette_map.asm
new file mode 100644
index 000000000..985844071
--- /dev/null
+++ b/tilesets/29_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, BROWN, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, BROWN, ROOF, ROOF, BROWN, BROWN, WATER, WATER
+	tilepal 0, BROWN, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, ROOF, ROOF, BROWN, BROWN, WATER, WATER
+	tilepal 0, WATER, ROOF, ROOF, ROOF, ROOF, ROOF, GRAY, GRAY
+	tilepal 0, WATER, WATER, ROOF, ROOF, WATER, WATER, WATER, WATER
+	tilepal 0, BROWN, WATER, WATER, WATER, WATER, WATER, GRAY, GRAY
+	tilepal 0, WATER, WATER, ROOF, ROOF, GRAY, GRAY, WATER, WATER
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, GREEN, GRAY, GRAY, WATER
+	tilepal 0, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, WATER, WATER, WATER, WATER
+	tilepal 0, WATER, WATER, WATER, WATER, WATER, WATER, WATER, WATER
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, GREEN, GREEN
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, GREEN, GREEN
+	tilepal 1, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF, ROOF
diff --git a/tilesets/29_palette_map.bin b/tilesets/29_palette_map.bin
deleted file mode 100644
index 017e9c52dc460ae858c966a2d2e8f66e1f657707..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmYdIOG^t&3pGv!(rG|CIW3LBIL+AD)YuqEGZ?$LFc}yFK_~-=G&cT^2Hp_{tDs82
FGyp+-NO1rF

diff --git a/tilesets/30_palette_map.asm b/tilesets/30_palette_map.asm
new file mode 100644
index 000000000..73c09ebe5
--- /dev/null
+++ b/tilesets/30_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, GREEN, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, WATER, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, GREEN, BROWN, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, WATER, BROWN, BROWN, BROWN
+	tilepal 1, GRAY, GRAY, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, WATER, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
diff --git a/tilesets/30_palette_map.bin b/tilesets/30_palette_map.bin
deleted file mode 100644
index b6c9713932f9fdea6e03128543429bab6c03e081..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
zcmZ9=(Fp(`6hcv<)taDqI|;4U1ckHI^Ro_I5Cbg`2|Z9f48Ag;;B`LY5|y~c>0$Jh
Hk%O-b(UUll

diff --git a/tilesets/31_palette_map.asm b/tilesets/31_palette_map.asm
new file mode 100644
index 000000000..696788084
--- /dev/null
+++ b/tilesets/31_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, BROWN, BROWN, RED, YELLOW, GREEN, BROWN, YELLOW
+	tilepal 0, YELLOW, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, GREEN
+	tilepal 0, BROWN, BROWN, BROWN, RED, WATER, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, GREEN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 0, GREEN, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, GREEN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 0, GREEN, GREEN, GREEN, BROWN, GREEN, BROWN, BROWN, GREEN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, GRAY, BROWN, BROWN, RED, YELLOW, GREEN, BROWN, YELLOW
+	tilepal 1, YELLOW, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, GREEN
+	tilepal 1, BROWN, BROWN, BROWN, RED, WATER, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, GREEN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 1, GREEN, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN, GREEN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
+	tilepal 1, GREEN, GREEN, GREEN, BROWN, GREEN, BROWN, BROWN, GREEN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
diff --git a/tilesets/31_palette_map.bin b/tilesets/31_palette_map.bin
deleted file mode 100644
index 78f51b99a..000000000
--- a/tilesets/31_palette_map.bin
+++ /dev/null
@@ -1 +0,0 @@
-P$ETU""USUUU""UUU"RU""UUU""RR%UUUUUUUUUUUUUUUU����������������؝���ݪ�ݝ���ݪ���ݪ�ݪ���ݪ��ڭ����������������
\ No newline at end of file
diff --git a/tilesets/32_palette_map.asm b/tilesets/32_palette_map.asm
new file mode 100644
index 000000000..5ebde24ba
--- /dev/null
+++ b/tilesets/32_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, WATER, WATER, WATER, WATER, YELLOW, YELLOW, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, RED, RED, RED, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, RED, RED, RED, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
diff --git a/tilesets/32_palette_map.bin b/tilesets/32_palette_map.bin
deleted file mode 100644
index e5d3715e4517bb0dbab342abf64f8fbaa6c2e06e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
ucmZPw4GlFmc42S{bpZhe7Z;#_AR~x&aRJjH;gC=U2B0_){6_<KNdy2o07OOr

diff --git a/tilesets/33_palette_map.asm b/tilesets/33_palette_map.asm
new file mode 100644
index 000000000..5ebde24ba
--- /dev/null
+++ b/tilesets/33_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, WATER, WATER, WATER, WATER, YELLOW, YELLOW, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, RED, RED, RED, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, RED, RED, RED, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
diff --git a/tilesets/33_palette_map.bin b/tilesets/33_palette_map.bin
deleted file mode 100644
index e5d3715e4517bb0dbab342abf64f8fbaa6c2e06e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
ucmZPw4GlFmc42S{bpZhe7Z;#_AR~x&aRJjH;gC=U2B0_){6_<KNdy2o07OOr

diff --git a/tilesets/34_palette_map.asm b/tilesets/34_palette_map.asm
new file mode 100644
index 000000000..5ebde24ba
--- /dev/null
+++ b/tilesets/34_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, WATER, WATER, WATER, WATER, YELLOW, YELLOW, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, RED, RED, RED, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, RED, RED, RED, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
diff --git a/tilesets/34_palette_map.bin b/tilesets/34_palette_map.bin
deleted file mode 100644
index e5d3715e4517bb0dbab342abf64f8fbaa6c2e06e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
ucmZPw4GlFmc42S{bpZhe7Z;#_AR~x&aRJjH;gC=U2B0_){6_<KNdy2o07OOr

diff --git a/tilesets/35_palette_map.asm b/tilesets/35_palette_map.asm
new file mode 100644
index 000000000..5ebde24ba
--- /dev/null
+++ b/tilesets/35_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, WATER, WATER, WATER, WATER, YELLOW, YELLOW, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, RED, RED, RED, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, RED, RED, RED, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
diff --git a/tilesets/35_palette_map.bin b/tilesets/35_palette_map.bin
deleted file mode 100644
index e5d3715e4517bb0dbab342abf64f8fbaa6c2e06e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
ucmZPw4GlFmc42S{bpZhe7Z;#_AR~x&aRJjH;gC=U2B0_){6_<KNdy2o07OOr

diff --git a/tilesets/36_palette_map.asm b/tilesets/36_palette_map.asm
new file mode 100644
index 000000000..5ebde24ba
--- /dev/null
+++ b/tilesets/36_palette_map.asm
@@ -0,0 +1,29 @@
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, WATER, WATER, WATER, WATER, YELLOW, YELLOW, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, RED, RED, RED, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, RED, RED, RED, GRAY, GRAY, GRAY
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW
+	tilepal 0, YELLOW, YELLOW, YELLOW, YELLOW, YELLOW, BROWN, BROWN, BROWN
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, BROWN, BROWN, BROWN, BROWN
+	tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+
+rept 16
+	db $ff
+endr
+
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
+	tilepal 1, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
diff --git a/tilesets/36_palette_map.bin b/tilesets/36_palette_map.bin
deleted file mode 100644
index e5d3715e4517bb0dbab342abf64f8fbaa6c2e06e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112
ucmZPw4GlFmc42S{bpZhe7Z;#_AR~x&aRJjH;gC=U2B0_){6_<KNdy2o07OOr

diff --git a/tilesets/palette_maps.asm b/tilesets/palette_maps.asm
index fc5867aad..7e19893d4 100644
--- a/tilesets/palette_maps.asm
+++ b/tilesets/palette_maps.asm
@@ -1,75 +1,75 @@
 Tileset03PalMap: ; 0x4c075
-INCBIN "tilesets/03_palette_map.bin"
+INCLUDE "tilesets/03_palette_map.asm"
 ; 0x4c0e5
 
 Tileset00PalMap: ; 0x4c0e5
 Tileset01PalMap: ; 0x4c0e5
-INCBIN "tilesets/01_palette_map.bin"
+INCLUDE "tilesets/01_palette_map.asm"
 ; 0x4c155
 
 Tileset02PalMap: ; 0x4c155
-INCBIN "tilesets/02_palette_map.bin"
+INCLUDE "tilesets/02_palette_map.asm"
 ; 0x4c1c5
 
 Tileset05PalMap: ; 0x4c1c5
-INCBIN "tilesets/05_palette_map.bin"
+INCLUDE "tilesets/05_palette_map.asm"
 ; 0x4c235
 
 Tileset06PalMap: ; 0x4c235
-INCBIN "tilesets/06_palette_map.bin"
+INCLUDE "tilesets/06_palette_map.asm"
 ; 0x4c2a5
 
 Tileset07PalMap: ; 0x4c2a5
-INCBIN "tilesets/07_palette_map.bin"
+INCLUDE "tilesets/07_palette_map.asm"
 ; 0x4c315
 
 Tileset08PalMap: ; 0x4c315
-INCBIN "tilesets/08_palette_map.bin"
+INCLUDE "tilesets/08_palette_map.asm"
 ; 0x4c385
 
 Tileset09PalMap: ; 0x4c385
-INCBIN "tilesets/09_palette_map.bin"
+INCLUDE "tilesets/09_palette_map.asm"
 ; 0x4c3f5
 
 Tileset10PalMap: ; 0x4c3f5
-INCBIN "tilesets/10_palette_map.bin"
+INCLUDE "tilesets/10_palette_map.asm"
 ; 0x4c465
 
 Tileset11PalMap: ; 0x4c465
-INCBIN "tilesets/11_palette_map.bin"
+INCLUDE "tilesets/11_palette_map.asm"
 ; 0x4c4d5
 
 Tileset12PalMap: ; 0x4c4d5
-INCBIN "tilesets/12_palette_map.bin"
+INCLUDE "tilesets/12_palette_map.asm"
 ; 0x4c545
 
 Tileset13PalMap: ; 0x4c545
-INCBIN "tilesets/13_palette_map.bin"
+INCLUDE "tilesets/13_palette_map.asm"
 ; 0x4c5b5
 
 Tileset14PalMap: ; 0x4c5b5
-INCBIN "tilesets/14_palette_map.bin"
+INCLUDE "tilesets/14_palette_map.asm"
 ; 0x4c625
 
 Tileset15PalMap: ; 0x4c625
-INCBIN "tilesets/15_palette_map.bin"
+INCLUDE "tilesets/15_palette_map.asm"
 ; 0x4c695
 
 Tileset16PalMap: ; 0x4c695
-INCBIN "tilesets/16_palette_map.bin"
+INCLUDE "tilesets/16_palette_map.asm"
 ; 0x4c705
 
 Tileset23PalMap: ; 0x4c705
-INCBIN "tilesets/23_palette_map.bin"
+INCLUDE "tilesets/23_palette_map.asm"
 ; 0x4c775
 
 Tileset24PalMap: ; 0x4c775
 Tileset30PalMap: ; 0x4c775
-INCBIN "tilesets/30_palette_map.bin"
+INCLUDE "tilesets/30_palette_map.asm"
 ; 0x4c7e5
 
 Tileset25PalMap: ; 0x4c7e5
-INCBIN "tilesets/25_palette_map.bin"
+INCLUDE "tilesets/25_palette_map.asm"
 ; 0x4c855
 
 Tileset26PalMap: ; 0x4c855
@@ -78,31 +78,31 @@ Tileset33PalMap: ; 0x4c855
 Tileset34PalMap: ; 0x4c855
 Tileset35PalMap: ; 0x4c855
 Tileset36PalMap: ; 0x4c855
-INCBIN "tilesets/36_palette_map.bin"
+INCLUDE "tilesets/36_palette_map.asm"
 ; 0x4c8c5
 
 Tileset27PalMap: ; 0x4c8c5
-INCBIN "tilesets/27_palette_map.bin"
+INCLUDE "tilesets/27_palette_map.asm"
 ; 0x4c935
 
 Tileset17PalMap: ; 0x4c935
-INCBIN "tilesets/17_palette_map.bin"
+INCLUDE "tilesets/17_palette_map.asm"
 ; 0x4c9a5
 
 Tileset28PalMap: ; 0x4c9a5
-INCBIN "tilesets/28_palette_map.bin"
+INCLUDE "tilesets/28_palette_map.asm"
 ; 0x4ca15
 
 Tileset18PalMap: ; 0x4ca15
-INCBIN "tilesets/18_palette_map.bin"
+INCLUDE "tilesets/18_palette_map.asm"
 ; 0x4ca85
 
 Tileset19PalMap: ; 0x4ca85
-INCBIN "tilesets/19_palette_map.bin"
+INCLUDE "tilesets/19_palette_map.asm"
 ; 0x4caf5
 
 Tileset20PalMap: ; 0x4caf5
-INCBIN "tilesets/20_palette_map.bin"
+INCLUDE "tilesets/20_palette_map.asm"
 ; 0x4cb65
 
 UnusedPalMap1:
@@ -110,23 +110,23 @@ INCBIN "tilesets/unused_palette_map_1.bin"
 ; 4cbd5
 
 Tileset29PalMap: ; 0x4cbd5
-INCBIN "tilesets/29_palette_map.bin"
+INCLUDE "tilesets/29_palette_map.asm"
 ; 0x4cc45
 
 Tileset31PalMap: ; 0x4cc45
-INCBIN "tilesets/31_palette_map.bin"
+INCLUDE "tilesets/31_palette_map.asm"
 ; 0x4ccb5
 
 Tileset21PalMap: ; 0x4ccb5
-INCBIN "tilesets/21_palette_map.bin"
+INCLUDE "tilesets/21_palette_map.asm"
 ; 0x4cd25
 
 Tileset22PalMap: ; 0x4cd25
-INCBIN "tilesets/22_palette_map.bin"
+INCLUDE "tilesets/22_palette_map.asm"
 ; 0x4cd95
 
 Tileset04PalMap: ; 0x4cd95
-INCBIN "tilesets/04_palette_map.bin"
+INCLUDE "tilesets/04_palette_map.asm"
 ; 0x4ce05
 
 UnusedPalMap2:

From b272c0c3754012f83129c23c2c546013cd1e80ef Mon Sep 17 00:00:00 2001
From: PikalaxALT <PikalaxALT@gmail.com>
Date: Wed, 27 Jan 2016 12:25:12 -0500
Subject: [PATCH 11/13] Fix marts using hard-coded bank number

---
 .gitattributes                  |  12 +-
 audio/engine.asm                |   1 -
 battle/objects/functions.asm    |   8 +-
 constants/sfx_constants.asm     | 414 +++++++++++------------
 constants/tilemap_constants.asm |   2 +-
 engine/battle_start.asm         |  31 +-
 engine/events_3.asm             |   2 +-
 engine/mart.asm                 |   4 +-
 engine/namingscreen.asm         |   2 +-
 engine/player_movement.asm      |   2 +-
 extras                          |   2 +-
 home.asm                        |  12 +-
 items/item_effects.asm          |   4 +-
 main.asm                        | 564 +-------------------------------
 maps/KrissHouse1F.asm           |   2 +-
 sram.asm                        |   2 +-
 wram.asm                        |  46 +--
 17 files changed, 286 insertions(+), 824 deletions(-)

diff --git a/.gitattributes b/.gitattributes
index f84c0ae6a..c0197ac4f 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -2,10 +2,10 @@
 * -text
 
 # hexdump binary files
-*.png  diff=hex
-*.lz   diff=hex
-*.2bpp diff=hex
-*.1bpp diff=hex
-*.bin  diff=hex
-*.blk  diff=hex
+*.png  binary diff=hex
+*.lz   binary diff=hex
+*.2bpp binary diff=hex
+*.1bpp binary diff=hex
+*.bin  binary diff=hex
+*.blk  binary diff=hex
 
diff --git a/audio/engine.asm b/audio/engine.asm
index 44bdfcc7c..ad03c16a5 100644
--- a/audio/engine.asm
+++ b/audio/engine.asm
@@ -2260,7 +2260,6 @@ GetFrequency: ; e8a5d
 	add hl, bc
 	ld a, [hl]
 	and $f ; lo nybble
-	;
 	ld l, a ; ok
 	ld d, 0
 	ld h, d
diff --git a/battle/objects/functions.asm b/battle/objects/functions.asm
index 7c1aa3764..474b332ef 100755
--- a/battle/objects/functions.asm
+++ b/battle/objects/functions.asm
@@ -274,7 +274,7 @@ BattleAnimFunction_12: ; cd15c (33:515c)
 	dw .ten
 	dw .eleven
 .zero
-	call GetBallAnimFunction
+	call GetBallAnimPal
 	call BattleAnim_IncAnonJumptableIndex
 	ret
 
@@ -342,7 +342,7 @@ BattleAnimFunction_12: ; cd15c (33:515c)
 	ret
 
 .seven
-	call GetBallAnimFunction
+	call GetBallAnimPal
 	ld a, $a
 	call ReinitBattleAnimFrameset
 	call BattleAnim_IncAnonJumptableIndex
@@ -382,7 +382,7 @@ BattleAnimFunction_13: ; cd212 (33:5212)
 	dw .one
 	dw .two
 .zero
-	call GetBallAnimFunction
+	call GetBallAnimPal
 	call BattleAnim_IncAnonJumptableIndex
 	ret
 
@@ -415,7 +415,7 @@ BattleAnimFunction_13: ; cd212 (33:5212)
 	call DeinitBattleAnimation
 	ret
 
-GetBallAnimFunction: ; cd249 (33:5249)
+GetBallAnimPal: ; cd249 (33:5249)
 	ld hl, .balls
 	ld a, [rSVBK]
 	push af
diff --git a/constants/sfx_constants.asm b/constants/sfx_constants.asm
index d8567542e..65abfc3ca 100644
--- a/constants/sfx_constants.asm
+++ b/constants/sfx_constants.asm
@@ -1,210 +1,210 @@
 	const_def
 
-	const SFX_DEX_FANFARE_50_79
-	const SFX_ITEM
-	const SFX_CAUGHT_MON
-	const SFX_POKEBALLS_PLACED_ON_TABLE
-	const SFX_POTION
-	const SFX_FULL_HEAL
-	const SFX_MENU
-	const SFX_READ_TEXT
-	const SFX_READ_TEXT_2
-	const SFX_DEX_FANFARE_20_49
-	const SFX_DEX_FANFARE_80_109
-	const SFX_POISON
-	const SFX_GOT_SAFARI_BALLS
-	const SFX_BOOT_PC
-	const SFX_SHUT_DOWN_PC
-	const SFX_CHOOSE_PC_OPTION
-	const SFX_ESCAPE_ROPE
-	const SFX_PUSH_BUTTON
-	const SFX_SECOND_PART_OF_ITEMFINDER
-	const SFX_WARP_TO
-	const SFX_WARP_FROM
-	const SFX_CHANGE_DEX_MODE
-	const SFX_JUMP_OVER_LEDGE
-	const SFX_GRASS_RUSTLE
-	const SFX_FLY
-	const SFX_WRONG
-	const SFX_SQUEAK
-	const SFX_STRENGTH
-	const SFX_BOAT
-	const SFX_WALL_OPEN
-	const SFX_PLACE_PUZZLE_PIECE_DOWN
-	const SFX_ENTER_DOOR
-	const SFX_SWITCH_POKEMON
-	const SFX_TALLY
-	const SFX_TRANSACTION
-	const SFX_EXIT_BUILDING
-	const SFX_BUMP
-	const SFX_SAVE
-	const SFX_POKEFLUTE
-	const SFX_ELEVATOR_END
-	const SFX_THROW_BALL
-	const SFX_BALL_POOF
-	const SFX_FAINT
-	const SFX_RUN
-	const SFX_SLOT_MACHINE_START
-	const SFX_FANFARE
-	const SFX_PECK
-	const SFX_KINESIS
-	const SFX_LICK
-	const SFX_POUND
-	const SFX_MOVE_PUZZLE_PIECE
-	const SFX_COMET_PUNCH
-	const SFX_MEGA_PUNCH
-	const SFX_SCRATCH
-	const SFX_VICEGRIP
-	const SFX_RAZOR_WIND
-	const SFX_CUT
-	const SFX_WING_ATTACK
-	const SFX_WHIRLWIND
-	const SFX_BIND
-	const SFX_VINE_WHIP
-	const SFX_DOUBLE_KICK
-	const SFX_MEGA_KICK
-	const SFX_HEADBUTT
-	const SFX_HORN_ATTACK
-	const SFX_TACKLE
-	const SFX_POISON_STING
-	const SFX_POWDER
-	const SFX_DOUBLESLAP
-	const SFX_BITE
-	const SFX_JUMP_KICK
-	const SFX_STOMP
-	const SFX_TAIL_WHIP
-	const SFX_KARATE_CHOP
-	const SFX_SUBMISSION
-	const SFX_WATER_GUN
-	const SFX_SWORDS_DANCE
-	const SFX_THUNDER
-	const SFX_SUPERSONIC
-	const SFX_LEER
-	const SFX_EMBER
-	const SFX_BUBBLEBEAM
-	const SFX_HYDRO_PUMP
-	const SFX_SURF
-	const SFX_PSYBEAM
-	const SFX_CHARGE
-	const SFX_THUNDERSHOCK
-	const SFX_PSYCHIC
-	const SFX_SCREECH
-	const SFX_BONE_CLUB
-	const SFX_SHARPEN
-	const SFX_EGG_BOMB
-	const SFX_SING
-	const SFX_HYPER_BEAM
-	const SFX_SHINE
-	const SFX_UNKNOWN_5F
-	const SFX_UNKNOWN_60
-	const SFX_UNKNOWN_61
-	const SFX_SWITCH_POCKETS
-	const SFX_UNKNOWN_63
-	const SFX_BURN
-	const SFX_TITLE_SCREEN_ENTRANCE
-	const SFX_UNKNOWN_66
-	const SFX_GET_COIN_FROM_SLOTS
-	const SFX_PAY_DAY
-	const SFX_METRONOME
-	const SFX_CALL
-	const SFX_HANG_UP
-	const SFX_NO_SIGNAL
-	const SFX_SANDSTORM
-	const SFX_ELEVATOR
-	const SFX_PROTECT
-	const SFX_SKETCH
-	const SFX_RAIN_DANCE
-	const SFX_AEROBLAST
-	const SFX_SPARK
-	const SFX_CURSE
-	const SFX_RAGE
-	const SFX_THIEF
-	const SFX_THIEF_2
-	const SFX_SPIDER_WEB
-	const SFX_MIND_READER
-	const SFX_NIGHTMARE
-	const SFX_SNORE
-	const SFX_SWEET_KISS
-	const SFX_SWEET_KISS_2
-	const SFX_BELLY_DRUM
-	const SFX_UNKNOWN_7F
-	const SFX_SLUDGE_BOMB
-	const SFX_FORESIGHT
-	const SFX_SPITE
-	const SFX_OUTRAGE
-	const SFX_PERISH_SONG
-	const SFX_GIGA_DRAIN
-	const SFX_ATTRACT
-	const SFX_KINESIS_2
-	const SFX_ZAP_CANNON
-	const SFX_MEAN_LOOK
-	const SFX_HEAL_BELL
-	const SFX_RETURN
-	const SFX_EXP_BAR
-	const SFX_MILK_DRINK
-	const SFX_PRESENT
-	const SFX_MORNING_SUN
-	const SFX_LEVEL_UP
-	const SFX_KEY_ITEM
-	const SFX_FANFARE_2
-	const SFX_REGISTER_PHONE_NUMBER
-	const SFX_3RD_PLACE
-	const SFX_GET_EGG_FROM_DAYCARE_MAN
-	const SFX_GET_EGG_FROM_DAYCARE_LADY
-	const SFX_MOVE_DELETED
-	const SFX_2ND_PLACE
-	const SFX_1ST_PLACE
-	const SFX_CHOOSE_A_CARD
-	const SFX_GET_TM
-	const SFX_GET_BADGE
-	const SFX_QUIT_SLOTS
-	const SFX_EGG_CRACK
-	const SFX_DEX_FANFARE_LESS_THAN_20
-	const SFX_DEX_FANFARE_140_169
-	const SFX_DEX_FANFARE_170_199
-	const SFX_DEX_FANFARE_200_229
-	const SFX_DEX_FANFARE_230_PLUS
-	const SFX_EVOLVED
-	const SFX_MASTER_BALL
-	const SFX_EGG_HATCH
-	const SFX_GS_INTRO_CHARIZARD_FIREBALL
-	const SFX_GS_INTRO_POKEMON_APPEARS
-	const SFX_FLASH
-	const SFX_GAME_FREAK_LOGO_GS
-	const SFX_NOT_VERY_EFFECTIVE
-	const SFX_DAMAGE
-	const SFX_SUPER_EFFECTIVE
-	const SFX_BALL_BOUNCE
-	const SFX_MOONLIGHT
-	const SFX_ENCORE
-	const SFX_BEAT_UP
-	const SFX_BATON_PASS
-	const SFX_BALL_WIGGLE
-	const SFX_SWEET_SCENT
-	const SFX_SWEET_SCENT_2
-	const SFX_HIT_END_OF_EXP_BAR
-	const SFX_GIVE_TRADEMON
-	const SFX_GET_TRADEMON
-	const SFX_TRAIN_ARRIVED
-	const SFX_STOP_SLOT
-	const SFX_2_BOOPS
-	const SFX_GLASS_TING
-	const SFX_GLASS_TING_2
+	const SFX_DEX_FANFARE_50_79           ; 00
+	const SFX_ITEM                        ; 01
+	const SFX_CAUGHT_MON                  ; 02
+	const SFX_POKEBALLS_PLACED_ON_TABLE   ; 03
+	const SFX_POTION                      ; 04
+	const SFX_FULL_HEAL                   ; 05
+	const SFX_MENU                        ; 06
+	const SFX_READ_TEXT                   ; 07
+	const SFX_READ_TEXT_2                 ; 08
+	const SFX_DEX_FANFARE_20_49           ; 09
+	const SFX_DEX_FANFARE_80_109          ; 0a
+	const SFX_POISON                      ; 0b
+	const SFX_GOT_SAFARI_BALLS            ; 0c
+	const SFX_BOOT_PC                     ; 0d
+	const SFX_SHUT_DOWN_PC                ; 0e
+	const SFX_CHOOSE_PC_OPTION            ; 0f
+	const SFX_ESCAPE_ROPE                 ; 10
+	const SFX_PUSH_BUTTON                 ; 11
+	const SFX_SECOND_PART_OF_ITEMFINDER   ; 12
+	const SFX_WARP_TO                     ; 13
+	const SFX_WARP_FROM                   ; 14
+	const SFX_CHANGE_DEX_MODE             ; 15
+	const SFX_JUMP_OVER_LEDGE             ; 16
+	const SFX_GRASS_RUSTLE                ; 17
+	const SFX_FLY                         ; 18
+	const SFX_WRONG                       ; 19
+	const SFX_SQUEAK                      ; 1a
+	const SFX_STRENGTH                    ; 1b
+	const SFX_BOAT                        ; 1c
+	const SFX_WALL_OPEN                   ; 1d
+	const SFX_PLACE_PUZZLE_PIECE_DOWN     ; 1e
+	const SFX_ENTER_DOOR                  ; 1f
+	const SFX_SWITCH_POKEMON              ; 20
+	const SFX_TALLY                       ; 21
+	const SFX_TRANSACTION                 ; 22
+	const SFX_EXIT_BUILDING               ; 23
+	const SFX_BUMP                        ; 24
+	const SFX_SAVE                        ; 25
+	const SFX_POKEFLUTE                   ; 26
+	const SFX_ELEVATOR_END                ; 27
+	const SFX_THROW_BALL                  ; 28
+	const SFX_BALL_POOF                   ; 29
+	const SFX_FAINT                       ; 2a
+	const SFX_RUN                         ; 2b
+	const SFX_SLOT_MACHINE_START          ; 2c
+	const SFX_FANFARE                     ; 2d
+	const SFX_PECK                        ; 2e
+	const SFX_KINESIS                     ; 2f
+	const SFX_LICK                        ; 30
+	const SFX_POUND                       ; 31
+	const SFX_MOVE_PUZZLE_PIECE           ; 32
+	const SFX_COMET_PUNCH                 ; 33
+	const SFX_MEGA_PUNCH                  ; 34
+	const SFX_SCRATCH                     ; 35
+	const SFX_VICEGRIP                    ; 36
+	const SFX_RAZOR_WIND                  ; 37
+	const SFX_CUT                         ; 38
+	const SFX_WING_ATTACK                 ; 39
+	const SFX_WHIRLWIND                   ; 3a
+	const SFX_BIND                        ; 3b
+	const SFX_VINE_WHIP                   ; 3c
+	const SFX_DOUBLE_KICK                 ; 3d
+	const SFX_MEGA_KICK                   ; 3e
+	const SFX_HEADBUTT                    ; 3f
+	const SFX_HORN_ATTACK                 ; 40
+	const SFX_TACKLE                      ; 41
+	const SFX_POISON_STING                ; 42
+	const SFX_POWDER                      ; 43
+	const SFX_DOUBLESLAP                  ; 44
+	const SFX_BITE                        ; 45
+	const SFX_JUMP_KICK                   ; 46
+	const SFX_STOMP                       ; 47
+	const SFX_TAIL_WHIP                   ; 48
+	const SFX_KARATE_CHOP                 ; 49
+	const SFX_SUBMISSION                  ; 4a
+	const SFX_WATER_GUN                   ; 4b
+	const SFX_SWORDS_DANCE                ; 4c
+	const SFX_THUNDER                     ; 4d
+	const SFX_SUPERSONIC                  ; 4e
+	const SFX_LEER                        ; 4f
+	const SFX_EMBER                       ; 50
+	const SFX_BUBBLEBEAM                  ; 51
+	const SFX_HYDRO_PUMP                  ; 52
+	const SFX_SURF                        ; 53
+	const SFX_PSYBEAM                     ; 54
+	const SFX_CHARGE                      ; 55
+	const SFX_THUNDERSHOCK                ; 56
+	const SFX_PSYCHIC                     ; 57
+	const SFX_SCREECH                     ; 58
+	const SFX_BONE_CLUB                   ; 59
+	const SFX_SHARPEN                     ; 5a
+	const SFX_EGG_BOMB                    ; 5b
+	const SFX_SING                        ; 5c
+	const SFX_HYPER_BEAM                  ; 5d
+	const SFX_SHINE                       ; 5e
+	const SFX_UNKNOWN_5F                  ; 5f
+	const SFX_UNKNOWN_60                  ; 60
+	const SFX_UNKNOWN_61                  ; 61
+	const SFX_SWITCH_POCKETS              ; 62
+	const SFX_UNKNOWN_63                  ; 63
+	const SFX_BURN                        ; 64
+	const SFX_TITLE_SCREEN_ENTRANCE       ; 65
+	const SFX_UNKNOWN_66                  ; 66
+	const SFX_GET_COIN_FROM_SLOTS         ; 67
+	const SFX_PAY_DAY                     ; 68
+	const SFX_METRONOME                   ; 69
+	const SFX_CALL                        ; 6a
+	const SFX_HANG_UP                     ; 6b
+	const SFX_NO_SIGNAL                   ; 6c
+	const SFX_SANDSTORM                   ; 6d
+	const SFX_ELEVATOR                    ; 6e
+	const SFX_PROTECT                     ; 6f
+	const SFX_SKETCH                      ; 70
+	const SFX_RAIN_DANCE                  ; 71
+	const SFX_AEROBLAST                   ; 72
+	const SFX_SPARK                       ; 73
+	const SFX_CURSE                       ; 74
+	const SFX_RAGE                        ; 75
+	const SFX_THIEF                       ; 76
+	const SFX_THIEF_2                     ; 77
+	const SFX_SPIDER_WEB                  ; 78
+	const SFX_MIND_READER                 ; 79
+	const SFX_NIGHTMARE                   ; 7a
+	const SFX_SNORE                       ; 7b
+	const SFX_SWEET_KISS                  ; 7c
+	const SFX_SWEET_KISS_2                ; 7d
+	const SFX_BELLY_DRUM                  ; 7e
+	const SFX_UNKNOWN_7F                  ; 7f
+	const SFX_SLUDGE_BOMB                 ; 80
+	const SFX_FORESIGHT                   ; 81
+	const SFX_SPITE                       ; 82
+	const SFX_OUTRAGE                     ; 83
+	const SFX_PERISH_SONG                 ; 84
+	const SFX_GIGA_DRAIN                  ; 85
+	const SFX_ATTRACT                     ; 86
+	const SFX_KINESIS_2                   ; 87
+	const SFX_ZAP_CANNON                  ; 88
+	const SFX_MEAN_LOOK                   ; 89
+	const SFX_HEAL_BELL                   ; 8a
+	const SFX_RETURN                      ; 8b
+	const SFX_EXP_BAR                     ; 8c
+	const SFX_MILK_DRINK                  ; 8d
+	const SFX_PRESENT                     ; 8e
+	const SFX_MORNING_SUN                 ; 8f
+	const SFX_LEVEL_UP                    ; 90
+	const SFX_KEY_ITEM                    ; 91
+	const SFX_FANFARE_2                   ; 92
+	const SFX_REGISTER_PHONE_NUMBER       ; 93
+	const SFX_3RD_PLACE                   ; 94
+	const SFX_GET_EGG_FROM_DAYCARE_MAN    ; 95
+	const SFX_GET_EGG_FROM_DAYCARE_LADY   ; 96
+	const SFX_MOVE_DELETED                ; 97
+	const SFX_2ND_PLACE                   ; 98
+	const SFX_1ST_PLACE                   ; 99
+	const SFX_CHOOSE_A_CARD               ; 9a
+	const SFX_GET_TM                      ; 9b
+	const SFX_GET_BADGE                   ; 9c
+	const SFX_QUIT_SLOTS                  ; 9d
+	const SFX_EGG_CRACK                   ; 9e
+	const SFX_DEX_FANFARE_LESS_THAN_20    ; 9f
+	const SFX_DEX_FANFARE_140_169         ; a0
+	const SFX_DEX_FANFARE_170_199         ; a1
+	const SFX_DEX_FANFARE_200_229         ; a2
+	const SFX_DEX_FANFARE_230_PLUS        ; a3
+	const SFX_EVOLVED                     ; a4
+	const SFX_MASTER_BALL                 ; a5
+	const SFX_EGG_HATCH                   ; a6
+	const SFX_GS_INTRO_CHARIZARD_FIREBALL ; a7
+	const SFX_GS_INTRO_POKEMON_APPEARS    ; a8
+	const SFX_FLASH                       ; a9
+	const SFX_GAME_FREAK_LOGO_GS          ; aa
+	const SFX_NOT_VERY_EFFECTIVE          ; ab
+	const SFX_DAMAGE                      ; ac
+	const SFX_SUPER_EFFECTIVE             ; ad
+	const SFX_BALL_BOUNCE                 ; ae
+	const SFX_MOONLIGHT                   ; af
+	const SFX_ENCORE                      ; b0
+	const SFX_BEAT_UP                     ; b1
+	const SFX_BATON_PASS                  ; b2
+	const SFX_BALL_WIGGLE                 ; b3
+	const SFX_SWEET_SCENT                 ; b4
+	const SFX_SWEET_SCENT_2               ; b5
+	const SFX_HIT_END_OF_EXP_BAR          ; b6
+	const SFX_GIVE_TRADEMON               ; b7
+	const SFX_GET_TRADEMON                ; b8
+	const SFX_TRAIN_ARRIVED               ; b9
+	const SFX_STOP_SLOT                   ; ba
+	const SFX_2_BOOPS                     ; bb
+	const SFX_GLASS_TING                  ; bc
+	const SFX_GLASS_TING_2                ; bd
 
-	const SFX_INTRO_UNOWN_1
-	const SFX_INTRO_UNOWN_2
-	const SFX_INTRO_UNOWN_3
-	const SFX_DITTO_POP_UP
-	const SFX_DITTO_TRANSFORM
-	const SFX_INTRO_SUICUNE_1
-	const SFX_INTRO_PICHU
-	const SFX_INTRO_SUICUNE_2
-	const SFX_INTRO_SUICUNE_3
-	const SFX_DITTO_BOUNCE
-	const SFX_INTRO_SUICUNE_4
-	const SFX_GAME_FREAK_PRESENTS
-	const SFX_TINGLE
-	const SFX_UNKNOWN_CB
-	const SFX_TWO_PC_BEEPS
-	const SFX_4_NOTE_DITTY
-	const SFX_TWINKLE
+	const SFX_INTRO_UNOWN_1               ; be
+	const SFX_INTRO_UNOWN_2               ; bf
+	const SFX_INTRO_UNOWN_3               ; c0
+	const SFX_DITTO_POP_UP                ; c1
+	const SFX_DITTO_TRANSFORM             ; c2
+	const SFX_INTRO_SUICUNE_1             ; c3
+	const SFX_INTRO_PICHU                 ; c4
+	const SFX_INTRO_SUICUNE_2             ; c5
+	const SFX_INTRO_SUICUNE_3             ; c6
+	const SFX_DITTO_BOUNCE                ; c7
+	const SFX_INTRO_SUICUNE_4             ; c8
+	const SFX_GAME_FREAK_PRESENTS         ; c9
+	const SFX_TINGLE                      ; ca
+	const SFX_UNKNOWN_CB                  ; cb
+	const SFX_TWO_PC_BEEPS                ; cc
+	const SFX_4_NOTE_DITTY                ; cd
+	const SFX_TWINKLE                     ; ce
diff --git a/constants/tilemap_constants.asm b/constants/tilemap_constants.asm
index b130b5de3..9307a22ad 100644
--- a/constants/tilemap_constants.asm
+++ b/constants/tilemap_constants.asm
@@ -36,7 +36,7 @@ const_value SET 1
 	const TILESET_ICE_PATH             ; 1d
 	const TILESET_WHIRL_ISLANDS        ; 1e
 	const TILESET_ILEX_FOREST          ; 1f
-	const TILESET_20                   ; 20
+	const TILESET_32                   ; 20
 	const TILESET_HO_OH_WORD_ROOM      ; 21
 	const TILESET_KABUTO_WORD_ROOM     ; 22
 	const TILESET_OMANYTE_WORD_ROOM    ; 23
diff --git a/engine/battle_start.asm b/engine/battle_start.asm
index bd8b6cc28..6fb64e9b1 100644
--- a/engine/battle_start.asm
+++ b/engine/battle_start.asm
@@ -120,7 +120,7 @@ Function8c2cf: ; 8c2cf
 	ld [rSVBK], a
 	push hl
 	ld hl, wDecompressScratch
-	ld bc, $28 * $10
+	ld bc, $28 tiles
 
 .loop
 	ld [hl], -1
@@ -568,7 +568,7 @@ StartTrainerBattle_SpeckleToBlack: ; 8c58f (23:458f)
 StartTrainerBattle_LoadPokeBallGraphics: ; 8c5dc (23:45dc)
 	ld a, [OtherTrainerClass]
 	and a
-	jp z, .nextscene
+	jp z, .nextscene ; don't need to be here if wild
 
 	xor a
 	ld [hBGMapMode], a
@@ -579,6 +579,7 @@ StartTrainerBattle_LoadPokeBallGraphics: ; 8c5dc (23:45dc)
 	jr .enter_loop_midway
 
 .loop
+; set all pals to 7
 	ld a, [hl]
 	or %00000111
 	ld [hli], a
@@ -588,7 +589,7 @@ StartTrainerBattle_LoadPokeBallGraphics: ; 8c5dc (23:45dc)
 	dec b
 	jr nz, .loop
 
-	call .loadpokeballgfx ; load a, [OtherTrainerClass] \ ld de, PokeBallTransition
+	call .loadpokeballgfx ; ld a, [OtherTrainerClass] \ ld de, PokeBallTransition \ ret
 	hlcoord 2, 1
 
 	ld b, SCREEN_WIDTH - 4
@@ -605,7 +606,7 @@ StartTrainerBattle_LoadPokeBallGraphics: ; 8c5dc (23:45dc)
 	jr z, .done
 	sla a
 	jr nc, .no_load
-	ld [hl], $fe ; "8"
+	ld [hl], $fe
 .no_load
 	inc hl
 	jr .loop4
@@ -650,12 +651,12 @@ StartTrainerBattle_LoadPokeBallGraphics: ; 8c5dc (23:45dc)
 	ld [rSVBK], a
 	call .copypals
 	push hl
-	ld de, UnknBGPals + 8 * 7
-	ld bc, $8
+	ld de, UnknBGPals + 7 palettes
+	ld bc, 1 palettes
 	call CopyBytes
 	pop hl
-	ld de, BGPals + 8 * 7
-	ld bc, $8
+	ld de, BGPals + 7 palettes
+	ld bc, 1 palettes
 	call CopyBytes
 	pop af
 	ld [rSVBK], a
@@ -669,21 +670,21 @@ StartTrainerBattle_LoadPokeBallGraphics: ; 8c5dc (23:45dc)
 	ret
 
 .copypals: ; 8c677 (23:4677)
-	ld de, UnknBGPals + 8 * 7
+	ld de, UnknBGPals + 7 palettes
 	call .copy
-	ld de, BGPals + 8 * 7
+	ld de, BGPals + 7 palettes
 	call .copy
-	ld de, UnknOBPals + 8 * 6
+	ld de, UnknOBPals + 6 palettes
 	call .copy
-	ld de, OBPals + 8 * 6
+	ld de, OBPals + 6 palettes
 	call .copy
-	ld de, UnknOBPals + 8 * 7
+	ld de, UnknOBPals + 7 palettes
 	call .copy
-	ld de, OBPals + 8 * 7
+	ld de, OBPals + 7 palettes
 
 .copy: ; 8c698 (23:4698)
 	push hl
-	ld bc, $8
+	ld bc, 1 palettes
 	call CopyBytes
 	pop hl
 	ret
diff --git a/engine/events_3.asm b/engine/events_3.asm
index 55dc59a1a..68e6e0d34 100755
--- a/engine/events_3.asm
+++ b/engine/events_3.asm
@@ -4,7 +4,7 @@ ReturnFromMapSetupScript:: ; b8000
 	; For some reson, GameFreak chose to use a callba here instead of just falling through.
 	; No other function in the game references the function at 2E:400A, here labeled
 	; ReturnFromMapSetupScript.inefficientcallba.
-	callba .inefficientcallba ; this is a waste of 6 ROM bytes and 2 stack bytes
+	callba .inefficientcallba ; this is a waste of 6 ROM bytes and 6 stack bytes
 	ret
 ; b800a
 
diff --git a/engine/mart.asm b/engine/mart.asm
index 143ba38cd..5ee700951 100755
--- a/engine/mart.asm
+++ b/engine/mart.asm
@@ -139,7 +139,7 @@ GetMart: ; 15b31
 	ld a, e
 	cp (MartsEnd - Marts) / 2
 	jr c, .IsAMart
-	ld b, $5
+	ld b, BANK(DefaultMart)
 	ld de, DefaultMart
 	ret
 
@@ -151,7 +151,7 @@ endr
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	ld b, $5
+	ld b, BANK(Marts)
 	ret
 ; 15b47
 
diff --git a/engine/namingscreen.asm b/engine/namingscreen.asm
index aac059a18..ac56ec250 100755
--- a/engine/namingscreen.asm
+++ b/engine/namingscreen.asm
@@ -971,7 +971,7 @@ BoxNameInputLower:
 	db "1 2 3 4 5 6 7 8 9"
 	db "UPPER  DEL   END "
 
-NameInputUpper: ; Unreferenced?
+NameInputUpper:
 	db "A B C D E F G H I"
 	db "J K L M N O P Q R"
 	db "S T U V W X Y Z  "
diff --git a/engine/player_movement.asm b/engine/player_movement.asm
index 4bc4c483e..80c5e6edc 100755
--- a/engine/player_movement.asm
+++ b/engine/player_movement.asm
@@ -446,7 +446,7 @@ DoPlayerMovement:: ; 80000
 	db $70, $78, $76, $7e
 ; 8025f
 
-.DoStep: ; 8025f
+.DoStep
 	ld e, a
 	ld d, 0
 	ld hl, .Steps
diff --git a/extras b/extras
index 3a6ef54a5..adbc204d7 160000
--- a/extras
+++ b/extras
@@ -1 +1 @@
-Subproject commit 3a6ef54a5e26644699b98d9b73998df5673f4e72
+Subproject commit adbc204d741bec7a68c1e6cd67751f226d0347cb
diff --git a/home.asm b/home.asm
index 42feefde4..8cb0d25b3 100644
--- a/home.asm
+++ b/home.asm
@@ -569,7 +569,7 @@ LoadEDTile:: ; 323d
 	jr .LoadEDTile
 ; 323f
 
-.unreferenced_323f ; 323f
+; XXX
 	callba Function104000
 	ret
 ; 3246
@@ -661,18 +661,18 @@ SetPalettes:: ; 32f9
 	ld a, [hCGB]
 	and a
 	jr nz, .SetPalettesForGameBoyColor
-	ld a, $e4
+	ld a, %11100100
 	ld [rBGP], a
-	ld a, $d0
+	ld a, %11010000
 	ld [rOBP0], a
 	ld [rOBP1], a
 	ret
 
 .SetPalettesForGameBoyColor
 	push de
-	ld a, $e4
+	ld a, %11100100
 	call DmgToCgbBGPals
-	ld de, $e4e4
+	lb de, %11100100, %11100100
 	call DmgToCgbObjPals
 	pop de
 	ret
@@ -702,7 +702,7 @@ ClearPalettes:: ; 3317
 
 ; Fill BGPals and OBPals with $ffff (white)
 	ld hl, BGPals
-	ld bc, $80
+	ld bc, 16 palettes
 	ld a, $ff
 	call ByteFill
 
diff --git a/items/item_effects.asm b/items/item_effects.asm
index 5ba74eb8c..aa6c8f795 100644
--- a/items/item_effects.asm
+++ b/items/item_effects.asm
@@ -403,7 +403,7 @@ endr
 	jr c, .not_kurt_ball
 	ld a, POKE_BALL
 .not_kurt_ball
-	ld [wKickCounter], a
+	ld [wBattleAnimParam], a
 
 	ld de, ANIM_THROW_POKE_BALL
 	ld a, e
@@ -2955,7 +2955,7 @@ UseBallInTrainerBattle: ; f7a0
 	ld a, d
 	ld [FXAnimIDHi], a
 	xor a
-	ld [wKickCounter], a
+	ld [wBattleAnimParam], a
 	ld [hBattleTurn], a
 	ld [wNumHits], a
 	predef PlayBattleAnim
diff --git a/main.asm b/main.asm
index f16f61dac..1440d7933 100644
--- a/main.asm
+++ b/main.asm
@@ -2473,9 +2473,9 @@ SurfFunction: ; c909
 	jr nz, .cannotsurf
 	ld a, [PlayerState]
 	cp PLAYER_SURF
-	jr z, .alreadysurfing
+	jr z, .alreadyfail
 	cp PLAYER_SURF_PIKA
-	jr z, .alreadysurfing
+	jr z, .alreadyfail
 	call GetFacingTileCoord
 	call GetTileCollision
 	cp $1
@@ -2489,7 +2489,7 @@ SurfFunction: ; c909
 .asm_c956
 	ld a, $80
 	ret
-.alreadysurfing
+.alreadyfail
 	ld a, $3
 	ret
 .cannotsurf
@@ -2603,9 +2603,9 @@ CheckDirection: ; c9cb
 
 TrySurfOW:: ; c9e7
 ; Checking a tile in the overworld.
-; Return carry if surfing is allowed.
+; Return carry if fail is allowed.
 
-; Don't ask to surf if already surfing.
+; Don't ask to surf if already fail.
 	ld a, [PlayerState]
 	cp PLAYER_SURF_PIKA
 	jr z, .quit
@@ -3577,21 +3577,20 @@ FishFunction: ; cf8e
 	dw .TryFish
 	dw .FishNoBite
 	dw .FishGotSomething
-	dw .SurfingFish
 	dw .FailFish
+	dw .FishNoFish
 
 .TryFish: ; cfaf
 	ld a, [PlayerState]
 	cp PLAYER_SURF
-	jr z, .surfing
+	jr z, .fail
 	cp PLAYER_SURF_PIKA
-	jr z, .surfing
+	jr z, .fail
 	call GetFacingTileCoord
 	call GetTileCollision
 	cp $1
 	jr z, .facingwater
-
-.surfing
+.fail
 	ld a, $3
 	ret
 
@@ -3622,7 +3621,7 @@ FishFunction: ; cf8e
 	ld a, $1
 	ret
 
-.SurfingFish: ; cff1
+.FailFish: ; cff1
 	ld a, $80
 	ret
 
@@ -3642,7 +3641,7 @@ FishFunction: ; cf8e
 	ld a, $81
 	ret
 
-.FailFish: ; d010
+.FishNoFish: ; d010
 	ld a, $0
 	ld [Buffer6], a
 	ld hl, Script_NotEvenANibble2
@@ -5405,55 +5404,7 @@ UpdateItemDescription: ; 0x244c3
 	callba PrintItemDescription
 	ret
 
-Pokepic:: ; 244e3
-	ld hl, PokepicMenuDataHeader
-	call CopyMenuDataHeader
-	call MenuBox
-	call UpdateSprites
-	call ApplyTilemap
-	ld b, SCGB_POKEPIC
-	call GetSGBLayout
-	xor a
-	ld [hBGMapMode], a
-	ld a, [CurPartySpecies]
-	ld [CurSpecies], a
-	call GetBaseData
-	ld de, VTiles1
-	predef GetFrontpic
-	ld a, [wMenuBorderTopCoord]
-	inc a
-	ld b, a
-	ld a, [wMenuBorderLeftCoord]
-	inc a
-	ld c, a
-	call Coord2Tile
-	ld a, $80
-	ld [hGraphicStartTile], a
-	lb bc, 7, 7
-	predef PlaceGraphic
-	call WaitBGMap
-	ret
-
-ClosePokepic:: ; 24528
-	ld hl, PokepicMenuDataHeader
-	call CopyMenuDataHeader
-	call ClearMenuBoxInterior
-	call WaitBGMap
-	call GetMemSGBLayout
-	xor a
-	ld [hBGMapMode], a
-	call OverworldTextModeSwitch
-	call ApplyTilemap
-	call UpdateSprites
-	call LoadStandardFont
-	ret
-
-PokepicMenuDataHeader: ; 0x24547
-	db $40 ; flags
-	db 04, 06 ; start coords
-	db 13, 14 ; end coords
-	dw NULL
-	db 1 ; default option
+INCLUDE "engine/pokepic.asm"
 
 LoadObjectMasks: ; 2454f
 	ld hl, wObjectMasks
@@ -10089,496 +10040,7 @@ _SwitchPartyMons:
 	call CopyBytes
 	ret
 
-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:
-;	atk  def  spd  spc
-;	.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
-
-GetFrontpic: ; 51077
-	ld a, [CurPartySpecies]
-	ld [CurSpecies], a
-	call IsAPokemon
-	ret c
-	ld a, [rSVBK]
-	push af
-	call _GetFrontpic
-	pop af
-	ld [rSVBK], a
-	ret
-
-FrontpicPredef: ; 5108b
-	ld a, [CurPartySpecies]
-	ld [CurSpecies], a
-	call IsAPokemon
-	ret c
-	ld a, [rSVBK]
-	push af
-	xor a
-	ld [hBGMapMode], a
-	call _GetFrontpic
-	call Function51103
-	pop af
-	ld [rSVBK], a
-	ret
-
-_GetFrontpic: ; 510a5
-	push de
-	call GetBaseData
-	ld a, [BasePicSize]
-	and $f
-	ld b, a
-	push bc
-	call GetFrontpicPointer
-	ld a, $6
-	ld [rSVBK], a
-	ld a, b
-	ld de, wDecompressScratch + $800
-	call FarDecompress
-	pop bc
-	ld hl, wDecompressScratch
-	ld de, wDecompressScratch + $800
-	call Function512ab
-	pop hl
-	push hl
-	ld de, wDecompressScratch
-	ld c, 7 * 7
-	ld a, [hROMBank]
-	ld b, a
-	call Get2bpp
-	pop hl
-	ret
-
-GetFrontpicPointer: ; 510d7
-GLOBAL PicPointers, UnownPicPointers
-
-	ld a, [CurPartySpecies]
-	cp UNOWN
-	jr z, .unown
-	ld a, [CurPartySpecies]
-	ld d, BANK(PicPointers)
-	jr .ok
-
-.unown
-	ld a, [UnownLetter]
-	ld d, BANK(UnownPicPointers)
-
-.ok
-	ld hl, PicPointers ; UnownPicPointers
-	dec a
-	ld bc, 6
-	call AddNTimes
-	ld a, d
-	call GetFarByte
-	call FixPicBank
-	push af
-	inc hl
-	ld a, d
-	call GetFarHalfword
-	pop bc
-	ret
-
-Function51103: ; 51103
-	ld a, $1
-	ld [rVBK], a
-	push hl
-	ld de, wDecompressScratch
-	ld c, 7 * 7
-	ld a, [hROMBank]
-	ld b, a
-	call Get2bpp
-	pop hl
-	ld de, 7 * 7 tiles
-	add hl, de
-	push hl
-	ld a, $1
-	ld hl, BasePicSize
-	call GetFarWRAMByte
-	pop hl
-	and $f
-	ld de, w6_d800 + 5 * 5 tiles
-	ld c, 5 * 5
-	cp 5
-	jr z, .got_dims
-	ld de, w6_d800 + 6 * 6 tiles
-	ld c, 6 * 6
-	cp 6
-	jr z, .got_dims
-	ld de, w6_d800 + 7 * 7 tiles
-	ld c, 7 * 7
-.got_dims
-
-	push hl
-	push bc
-	call Function5114f
-	pop bc
-	pop hl
-	ld de, wDecompressScratch
-	ld a, [hROMBank]
-	ld b, a
-	call Get2bpp
-	xor a
-	ld [rVBK], a
-	ret
-
-Function5114f: ; 5114f
-	ld hl, wDecompressScratch
-	swap c
-	ld a, c
-	and $f
-	ld b, a
-	ld a, c
-	and $f0
-	ld c, a
-	push bc
-	call LoadFrontpic
-	pop bc
-.asm_51161
-	push bc
-	ld c, $0
-	call LoadFrontpic
-	pop bc
-	dec b
-	jr nz, .asm_51161
-	ret
-
-GetBackpic: ; 5116c
-	ld a, [CurPartySpecies]
-	call IsAPokemon
-	ret c
-
-	ld a, [CurPartySpecies]
-	ld b, a
-	ld a, [UnownLetter]
-	ld c, a
-	ld a, [rSVBK]
-	push af
-	ld a, $6
-	ld [rSVBK], a
-	push de
-
-	; These are assumed to be at the same
-	; address in their respective banks.
-	GLOBAL PicPointers,  UnownPicPointers
-	ld hl, PicPointers ; UnownPicPointers
-	ld a, b
-	ld d, BANK(PicPointers)
-	cp UNOWN
-	jr nz, .ok
-	ld a, c
-	ld d, BANK(UnownPicPointers)
-.ok
-	dec a
-	ld bc, 6
-	call AddNTimes
-	ld bc, 3
-	add hl, bc
-	ld a, d
-	call GetFarByte
-	call FixPicBank
-	push af
-	inc hl
-	ld a, d
-	call GetFarHalfword
-	ld de, wDecompressScratch
-	pop af
-	call FarDecompress
-	ld hl, wDecompressScratch
-	ld c, 6 * 6
-	call FixBackpicAlignment
-	pop hl
-	ld de, wDecompressScratch
-	ld a, [hROMBank]
-	ld b, a
-	call Get2bpp
-	pop af
-	ld [rSVBK], a
-	ret
-
-FixPicBank: ; 511c5
-; This is a thing for some reason.
-	push hl
-	push bc
-	sub PICS_1 - PICS_FIX
-	ld c, a
-	ld b, 0
-	ld hl, .PicsBanks
-	add hl, bc
-	ld a, [hl]
-	pop bc
-	pop hl
-	ret
-
-.PicsBanks: ; 511d4
-	db PICS_1
-	db PICS_2
-	db PICS_3
-	db PICS_4
-	db PICS_5
-	db PICS_6
-	db PICS_7
-	db PICS_8
-	db PICS_9
-	db PICS_10
-	db PICS_11
-	db PICS_12
-	db PICS_13
-	db PICS_14
-	db PICS_15
-	db PICS_16
-	db PICS_17
-	db PICS_18
-	db PICS_19
-	db PICS_19 + 1
-	db PICS_19 + 2
-	db PICS_19 + 3
-	db PICS_19 + 4
-	db PICS_19 + 5
-
-Function511ec: ; 511ec
-	ld a, c
-	push de
-	ld hl, PicPointers
-	dec a
-	ld bc, 6
-	call AddNTimes
-	ld a, BANK(PicPointers)
-	call GetFarByte
-	call FixPicBank
-	push af
-	inc hl
-	ld a, BANK(PicPointers)
-	call GetFarHalfword
-	pop af
-	pop de
-	call FarDecompress
-	ret
-
-GetTrainerPic: ; 5120d
-	ld a, [TrainerClass]
-	and a
-	ret z
-	cp NUM_TRAINER_CLASSES
-	ret nc
-	call WaitBGMap
-	xor a
-	ld [hBGMapMode], a
-	ld hl, TrainerPicPointers
-	ld a, [TrainerClass]
-	dec a
-	ld bc, 3
-	call AddNTimes
-	ld a, [rSVBK]
-	push af
-	ld a, $6
-	ld [rSVBK], a
-	push de
-	ld a, BANK(TrainerPicPointers)
-	call GetFarByte
-	call FixPicBank
-	push af
-	inc hl
-	ld a, BANK(TrainerPicPointers)
-	call GetFarHalfword
-	pop af
-	ld de, wDecompressScratch
-	call FarDecompress
-	pop hl
-	ld de, wDecompressScratch
-	ld c, 7 * 7
-	ld a, [hROMBank]
-	ld b, a
-	call Get2bpp
-	pop af
-	ld [rSVBK], a
-	call WaitBGMap
-	ld a, $1
-	ld [hBGMapMode], a
-	ret
-
-DecompressPredef: ; 5125d
-; Decompress lz data from b:hl to scratch space at 6:d000, then copy it to address de.
-
-	ld a, [rSVBK]
-	push af
-	ld a, 6
-	ld [rSVBK], a
-
-	push de
-	push bc
-	ld a, b
-	ld de, wDecompressScratch
-	call FarDecompress
-	pop bc
-	ld de, wDecompressScratch
-	pop hl
-	ld a, [hROMBank]
-	ld b, a
-	call Get2bpp
-
-	pop af
-	ld [rSVBK], a
-	ret
-
-FixBackpicAlignment: ; 5127c
-	push de
-	push bc
-	ld a, [wBoxAlignment]
-	and a
-	jr z, .keep_dims
-	ld a, c
-	cp 7 * 7
-	ld de, 7 * 7 tiles
-	jr z, .got_dims
-	cp 6 * 6
-	ld de, 6 * 6 tiles
-	jr z, .got_dims
-	ld de, 5 * 5 tiles
-
-.got_dims
-	ld a, [hl]
-	ld b, $0
-	ld c, $8
-.loop
-	rra
-	rl b
-	dec c
-	jr nz, .loop
-	ld a, b
-	ld [hli], a
-	dec de
-	ld a, e
-	or d
-	jr nz, .got_dims
-
-.keep_dims
-	pop bc
-	pop de
-	ret
-
-Function512ab: ; 512ab
-	ld a, b
-	cp 6
-	jr z, .six
-	cp 5
-	jr z, .five
-
-.seven_loop
-	ld c, $70
-	call LoadFrontpic
-	dec b
-	jr nz, .seven_loop
-	ret
-
-.six
-	ld c, $70
-	xor a
-	call .Fill
-.six_loop
-	ld c, $10
-	xor a
-	call .Fill
-	ld c, $60
-	call LoadFrontpic
-	dec b
-	jr nz, .six_loop
-	ret
-
-.five
-	ld c, $70
-	xor a
-	call .Fill
-.five_loop
-	ld c, $20
-	xor a
-	call .Fill
-	ld c, $50
-	call LoadFrontpic
-	dec b
-	jr nz, .five_loop
-	ld c, $70
-	xor a
-	call .Fill
-	ret
-
-.Fill
-	ld [hli], a
-	dec c
-	jr nz, .Fill
-	ret
-
-LoadFrontpic: ; 512f2
-	ld a, [wBoxAlignment]
-	and a
-	jr nz, .x_flip
-.left_loop
-	ld a, [de]
-	inc de
-	ld [hli], a
-	dec c
-	jr nz, .left_loop
-	ret
-
-.x_flip
-	push bc
-.right_loop
-	ld a, [de]
-	inc de
-	ld b, a
-	xor a
-	rept 8
-	rr b
-	rla
-	endr
-	ld [hli], a
-	dec c
-	jr nz, .right_loop
-	pop bc
-	ret
+INCLUDE "gfx/load_pics.asm"
 
 Function51322: ; 51322
 	ld a, BANK(sBoxCount)
diff --git a/maps/KrissHouse1F.asm b/maps/KrissHouse1F.asm
index 4538bf41b..5a8500989 100644
--- a/maps/KrissHouse1F.asm
+++ b/maps/KrissHouse1F.asm
@@ -44,7 +44,7 @@ UnknownScript_0x7a4f6:
 	scall UnknownScript_0x7a57e
 	setflag ENGINE_POKEGEAR
 	setflag ENGINE_PHONE_CARD
-	addcellnum $1
+	addcellnum PHONE_MOM
 	dotrigger $1
 	setevent EVENT_KRISS_HOUSE_MOM_1
 	clearevent EVENT_KRISS_HOUSE_MOM_2
diff --git a/sram.asm b/sram.asm
index 7e52d92c1..f28ed939e 100644
--- a/sram.asm
+++ b/sram.asm
@@ -190,7 +190,7 @@ sHallOfFame:: ; b2c0
 ; endr
 sHallOfFameEnd::
 
-sMobileEventIndex:: ds 1
+sMobileEventIndex:: ds 1 ; be3c
 
 sCrystalData::
 	ds wCrystalDataEnd - wCrystalData
diff --git a/wram.asm b/wram.asm
index 4fa8e282c..01394f364 100644
--- a/wram.asm
+++ b/wram.asm
@@ -391,12 +391,12 @@ BattleMon:: battle_struct BattleMon ; c62c
 
 	ds 2
 
-wWildMon:: ds 1
+wWildMon:: ds 1 ; c64e
 	ds 1
-wEnemyTrainerItem1:: ds 1
-wEnemyTrainerItem2:: ds 1
-wEnemyTrainerBaseReward:: ds 1
-wEnemyTrainerAIFlags:: ds 3
+wEnemyTrainerItem1:: ds 1 ; c650
+wEnemyTrainerItem2:: ds 1 ; c651
+wEnemyTrainerBaseReward:: ds 1 ; c652
+wEnemyTrainerAIFlags:: ds 3 ; c653
 OTClassName:: ds NAME_LENGTH ; c656
 
 	ds 2
@@ -1875,11 +1875,11 @@ wd182:: ds 1
 wd191:: ds 1
 wd192:: ds 1
 wd193:: ds 1
-wOverworldMapAnchor:: dw
-wMetatileStandingY:: ds 1
-wMetatileStandingX:: ds 1
-wSecondMapHeaderBank:: ds 1
-wTileset:: ds 1
+wOverworldMapAnchor:: dw ; d194
+wMetatileStandingY:: ds 1 ; d196
+wMetatileStandingX:: ds 1 ; d197
+wSecondMapHeaderBank:: ds 1 ; d198
+wTileset:: ds 1 ; d199
 wPermission:: ds 1 ; d19a
 wSecondMapHeaderAddr:: dw ; d19b
 
@@ -2256,25 +2256,25 @@ wScriptTextBank::
 wPriorityScriptAddr::
 wScriptTextAddr:: ds 2 ; d44f
 	ds 1
-wWildEncounterCooldown:: ds 1
-wXYComparePointer:: ds 2
+wWildEncounterCooldown:: ds 1 ; d452
+wXYComparePointer:: ds 2 ; d453
 	ds 4
 
-wBattleScriptFlags:: ds 2
-wPlayerSpriteSetupFlags:: ds 1
+wBattleScriptFlags:: ds 2 ; d459
+wPlayerSpriteSetupFlags:: ds 1 ; d45b
 ; bit 7: if set, cancel PlayerAction
 ; bit 5: if set, set facing according to bits 0-1
 ; bits 0-1: direction facing
-wMapReentryScriptQueueFlag:: ds 1 ; MemScriptFlag
-wMapReentryScriptBank:: ds 1 ; MemScriptBank
-wMapReentryScriptAddress:: ds 2 ; MemScriptAddr
+wMapReentryScriptQueueFlag:: ds 1 ; d45c MemScriptFlag
+wMapReentryScriptBank:: ds 1 ; d45d MemScriptBank
+wMapReentryScriptAddress:: ds 2 ; d45e MemScriptAddr
 	ds 4     ; ?????????????
-wTimeCyclesSinceLastCall:: ds 1
-wReceiveCallDelay_MinsRemaining:: ds 1
-wReceiveCallDelay_StartTime:: ds 3
+wTimeCyclesSinceLastCall:: ds 1 ; d464
+wReceiveCallDelay_MinsRemaining:: ds 1 ; d465
+wReceiveCallDelay_StartTime:: ds 3 ; d466
 	ds 3
-wBugContestMinsRemaining:: ds 1
-wBugContestSecsRemaining:: ds 1
+wBugContestMinsRemaining:: ds 1 ; d46c
+wBugContestSecsRemaining:: ds 1 ; d46d
 	ds 2
 wMapStatusEnd:: ds 2 ; d470
 
@@ -2753,7 +2753,7 @@ wLuckyNumberDayBuffer:: ds 2
 	ds 2
 wSpecialPhoneCallID:: ds 1
 	ds 3
-wBugContestStartTime:: ds 4 ; day, hour, min, sec
+wBugContestStartTime:: ds 4 ; day, hour, min, sec ; dc35
 wUnusedTwoDayTimerOn:: ds 1 ; dc39
 wUnusedTwoDayTimer:: ds 1
 wUnusedTwoDayTimerStartDate:: ds 1

From 33506f382a149067d3d37ded1cf01f7e291e92a6 Mon Sep 17 00:00:00 2001
From: PikalaxALT <PikalaxALT@gmail.com>
Date: Thu, 28 Jan 2016 09:40:01 -0500
Subject: [PATCH 12/13] Add missing file macros/pals.asm

---
 macros/pals.asm | 9 +++++++++
 1 file changed, 9 insertions(+)
 create mode 100755 macros/pals.asm

diff --git a/macros/pals.asm b/macros/pals.asm
new file mode 100755
index 000000000..44f1f7944
--- /dev/null
+++ b/macros/pals.asm
@@ -0,0 +1,9 @@
+tilepal: MACRO
+; vram bank, pals
+x = \1 << 3
+rept (_NARG +- 1) / 2
+	dn (x | PAL_BG_\3), (x | PAL_BG_\2)
+	shift
+	shift
+endr
+endm

From 5322b56a8357e5e5a8847f3329b52faa3f7016d8 Mon Sep 17 00:00:00 2001
From: PikalaxALT <PikalaxALT@gmail.com>
Date: Fri, 29 Jan 2016 00:57:06 -0500
Subject: [PATCH 13/13] Add more missing files

---
 engine/pokegear.asm |   2 +-
 engine/pokepic.asm  |  49 +++++
 gfx/load_pics.asm   | 490 ++++++++++++++++++++++++++++++++++++++++++++
 unknown/1f0000.bin  | Bin 2520 -> 0 bytes
 4 files changed, 540 insertions(+), 1 deletion(-)
 create mode 100755 engine/pokepic.asm
 create mode 100755 gfx/load_pics.asm
 delete mode 100644 unknown/1f0000.bin

diff --git a/engine/pokegear.asm b/engine/pokegear.asm
index 5379734e6..44127fafc 100755
--- a/engine/pokegear.asm
+++ b/engine/pokegear.asm
@@ -1523,7 +1523,7 @@ RadioChannels:
 	dbw 72, .LetsAllSing
 	dbw 78, .PokeFluteRadio
 	dbw 80, .EvolutionRadio
-	db $ff
+	db -1
 
 .PkmnTalkAndPokedexShow
 ; Pokédex Show in the morning
diff --git a/engine/pokepic.asm b/engine/pokepic.asm
new file mode 100755
index 000000000..2530ae4c9
--- /dev/null
+++ b/engine/pokepic.asm
@@ -0,0 +1,49 @@
+Pokepic:: ; 244e3
+	ld hl, PokepicMenuDataHeader
+	call CopyMenuDataHeader
+	call MenuBox
+	call UpdateSprites
+	call ApplyTilemap
+	ld b, SCGB_POKEPIC
+	call GetSGBLayout
+	xor a
+	ld [hBGMapMode], a
+	ld a, [CurPartySpecies]
+	ld [CurSpecies], a
+	call GetBaseData
+	ld de, VTiles1
+	predef GetFrontpic
+	ld a, [wMenuBorderTopCoord]
+	inc a
+	ld b, a
+	ld a, [wMenuBorderLeftCoord]
+	inc a
+	ld c, a
+	call Coord2Tile
+	ld a, $80
+	ld [hGraphicStartTile], a
+	lb bc, 7, 7
+	predef PlaceGraphic
+	call WaitBGMap
+	ret
+
+ClosePokepic:: ; 24528
+	ld hl, PokepicMenuDataHeader
+	call CopyMenuDataHeader
+	call ClearMenuBoxInterior
+	call WaitBGMap
+	call GetMemSGBLayout
+	xor a
+	ld [hBGMapMode], a
+	call OverworldTextModeSwitch
+	call ApplyTilemap
+	call UpdateSprites
+	call LoadStandardFont
+	ret
+
+PokepicMenuDataHeader: ; 0x24547
+	db $40 ; flags
+	db 04, 06 ; start coords
+	db 13, 14 ; end coords
+	dw NULL
+	db 1 ; default option
diff --git a/gfx/load_pics.asm b/gfx/load_pics.asm
new file mode 100755
index 000000000..8bd71c3bb
--- /dev/null
+++ b/gfx/load_pics.asm
@@ -0,0 +1,490 @@
+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:
+;	atk  def  spd  spc
+;	.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
+
+GetFrontpic: ; 51077
+	ld a, [CurPartySpecies]
+	ld [CurSpecies], a
+	call IsAPokemon
+	ret c
+	ld a, [rSVBK]
+	push af
+	call _GetFrontpic
+	pop af
+	ld [rSVBK], a
+	ret
+
+FrontpicPredef: ; 5108b
+	ld a, [CurPartySpecies]
+	ld [CurSpecies], a
+	call IsAPokemon
+	ret c
+	ld a, [rSVBK]
+	push af
+	xor a
+	ld [hBGMapMode], a
+	call _GetFrontpic
+	call Function51103
+	pop af
+	ld [rSVBK], a
+	ret
+
+_GetFrontpic: ; 510a5
+	push de
+	call GetBaseData
+	ld a, [BasePicSize]
+	and $f
+	ld b, a
+	push bc
+	call GetFrontpicPointer
+	ld a, $6
+	ld [rSVBK], a
+	ld a, b
+	ld de, wDecompressScratch + $800
+	call FarDecompress
+	pop bc
+	ld hl, wDecompressScratch
+	ld de, wDecompressScratch + $800
+	call Function512ab
+	pop hl
+	push hl
+	ld de, wDecompressScratch
+	ld c, 7 * 7
+	ld a, [hROMBank]
+	ld b, a
+	call Get2bpp
+	pop hl
+	ret
+
+GetFrontpicPointer: ; 510d7
+GLOBAL PicPointers, UnownPicPointers
+
+	ld a, [CurPartySpecies]
+	cp UNOWN
+	jr z, .unown
+	ld a, [CurPartySpecies]
+	ld d, BANK(PicPointers)
+	jr .ok
+
+.unown
+	ld a, [UnownLetter]
+	ld d, BANK(UnownPicPointers)
+
+.ok
+	ld hl, PicPointers ; UnownPicPointers
+	dec a
+	ld bc, 6
+	call AddNTimes
+	ld a, d
+	call GetFarByte
+	call FixPicBank
+	push af
+	inc hl
+	ld a, d
+	call GetFarHalfword
+	pop bc
+	ret
+
+Function51103: ; 51103
+	ld a, $1
+	ld [rVBK], a
+	push hl
+	ld de, wDecompressScratch
+	ld c, 7 * 7
+	ld a, [hROMBank]
+	ld b, a
+	call Get2bpp
+	pop hl
+	ld de, 7 * 7 tiles
+	add hl, de
+	push hl
+	ld a, $1
+	ld hl, BasePicSize
+	call GetFarWRAMByte
+	pop hl
+	and $f
+	ld de, w6_d800 + 5 * 5 tiles
+	ld c, 5 * 5
+	cp 5
+	jr z, .got_dims
+	ld de, w6_d800 + 6 * 6 tiles
+	ld c, 6 * 6
+	cp 6
+	jr z, .got_dims
+	ld de, w6_d800 + 7 * 7 tiles
+	ld c, 7 * 7
+.got_dims
+
+	push hl
+	push bc
+	call Function5114f
+	pop bc
+	pop hl
+	ld de, wDecompressScratch
+	ld a, [hROMBank]
+	ld b, a
+	call Get2bpp
+	xor a
+	ld [rVBK], a
+	ret
+
+Function5114f: ; 5114f
+	ld hl, wDecompressScratch
+	swap c
+	ld a, c
+	and $f
+	ld b, a
+	ld a, c
+	and $f0
+	ld c, a
+	push bc
+	call LoadFrontpic
+	pop bc
+.asm_51161
+	push bc
+	ld c, $0
+	call LoadFrontpic
+	pop bc
+	dec b
+	jr nz, .asm_51161
+	ret
+
+GetBackpic: ; 5116c
+	ld a, [CurPartySpecies]
+	call IsAPokemon
+	ret c
+
+	ld a, [CurPartySpecies]
+	ld b, a
+	ld a, [UnownLetter]
+	ld c, a
+	ld a, [rSVBK]
+	push af
+	ld a, $6
+	ld [rSVBK], a
+	push de
+
+	; These are assumed to be at the same
+	; address in their respective banks.
+	GLOBAL PicPointers,  UnownPicPointers
+	ld hl, PicPointers ; UnownPicPointers
+	ld a, b
+	ld d, BANK(PicPointers)
+	cp UNOWN
+	jr nz, .ok
+	ld a, c
+	ld d, BANK(UnownPicPointers)
+.ok
+	dec a
+	ld bc, 6
+	call AddNTimes
+	ld bc, 3
+	add hl, bc
+	ld a, d
+	call GetFarByte
+	call FixPicBank
+	push af
+	inc hl
+	ld a, d
+	call GetFarHalfword
+	ld de, wDecompressScratch
+	pop af
+	call FarDecompress
+	ld hl, wDecompressScratch
+	ld c, 6 * 6
+	call FixBackpicAlignment
+	pop hl
+	ld de, wDecompressScratch
+	ld a, [hROMBank]
+	ld b, a
+	call Get2bpp
+	pop af
+	ld [rSVBK], a
+	ret
+
+FixPicBank: ; 511c5
+; This is a thing for some reason.
+	push hl
+	push bc
+	sub PICS_1 - PICS_FIX
+	ld c, a
+	ld b, 0
+	ld hl, .PicsBanks
+	add hl, bc
+	ld a, [hl]
+	pop bc
+	pop hl
+	ret
+
+.PicsBanks: ; 511d4
+	db PICS_1
+	db PICS_2
+	db PICS_3
+	db PICS_4
+	db PICS_5
+	db PICS_6
+	db PICS_7
+	db PICS_8
+	db PICS_9
+	db PICS_10
+	db PICS_11
+	db PICS_12
+	db PICS_13
+	db PICS_14
+	db PICS_15
+	db PICS_16
+	db PICS_17
+	db PICS_18
+	db PICS_19
+	db PICS_19 + 1
+	db PICS_19 + 2
+	db PICS_19 + 3
+	db PICS_19 + 4
+	db PICS_19 + 5
+
+Function511ec: ; 511ec
+	ld a, c
+	push de
+	ld hl, PicPointers
+	dec a
+	ld bc, 6
+	call AddNTimes
+	ld a, BANK(PicPointers)
+	call GetFarByte
+	call FixPicBank
+	push af
+	inc hl
+	ld a, BANK(PicPointers)
+	call GetFarHalfword
+	pop af
+	pop de
+	call FarDecompress
+	ret
+
+GetTrainerPic: ; 5120d
+	ld a, [TrainerClass]
+	and a
+	ret z
+	cp NUM_TRAINER_CLASSES
+	ret nc
+	call WaitBGMap
+	xor a
+	ld [hBGMapMode], a
+	ld hl, TrainerPicPointers
+	ld a, [TrainerClass]
+	dec a
+	ld bc, 3
+	call AddNTimes
+	ld a, [rSVBK]
+	push af
+	ld a, $6
+	ld [rSVBK], a
+	push de
+	ld a, BANK(TrainerPicPointers)
+	call GetFarByte
+	call FixPicBank
+	push af
+	inc hl
+	ld a, BANK(TrainerPicPointers)
+	call GetFarHalfword
+	pop af
+	ld de, wDecompressScratch
+	call FarDecompress
+	pop hl
+	ld de, wDecompressScratch
+	ld c, 7 * 7
+	ld a, [hROMBank]
+	ld b, a
+	call Get2bpp
+	pop af
+	ld [rSVBK], a
+	call WaitBGMap
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+
+DecompressPredef: ; 5125d
+; Decompress lz data from b:hl to scratch space at 6:d000, then copy it to address de.
+
+	ld a, [rSVBK]
+	push af
+	ld a, 6
+	ld [rSVBK], a
+
+	push de
+	push bc
+	ld a, b
+	ld de, wDecompressScratch
+	call FarDecompress
+	pop bc
+	ld de, wDecompressScratch
+	pop hl
+	ld a, [hROMBank]
+	ld b, a
+	call Get2bpp
+
+	pop af
+	ld [rSVBK], a
+	ret
+
+FixBackpicAlignment: ; 5127c
+	push de
+	push bc
+	ld a, [wBoxAlignment]
+	and a
+	jr z, .keep_dims
+	ld a, c
+	cp 7 * 7
+	ld de, 7 * 7 tiles
+	jr z, .got_dims
+	cp 6 * 6
+	ld de, 6 * 6 tiles
+	jr z, .got_dims
+	ld de, 5 * 5 tiles
+
+.got_dims
+	ld a, [hl]
+	ld b, $0
+	ld c, $8
+.loop
+	rra
+	rl b
+	dec c
+	jr nz, .loop
+	ld a, b
+	ld [hli], a
+	dec de
+	ld a, e
+	or d
+	jr nz, .got_dims
+
+.keep_dims
+	pop bc
+	pop de
+	ret
+
+Function512ab: ; 512ab
+	ld a, b
+	cp 6
+	jr z, .six
+	cp 5
+	jr z, .five
+
+.seven_loop
+	ld c, $70
+	call LoadFrontpic
+	dec b
+	jr nz, .seven_loop
+	ret
+
+.six
+	ld c, $70
+	xor a
+	call .Fill
+.six_loop
+	ld c, $10
+	xor a
+	call .Fill
+	ld c, $60
+	call LoadFrontpic
+	dec b
+	jr nz, .six_loop
+	ret
+
+.five
+	ld c, $70
+	xor a
+	call .Fill
+.five_loop
+	ld c, $20
+	xor a
+	call .Fill
+	ld c, $50
+	call LoadFrontpic
+	dec b
+	jr nz, .five_loop
+	ld c, $70
+	xor a
+	call .Fill
+	ret
+
+.Fill
+	ld [hli], a
+	dec c
+	jr nz, .Fill
+	ret
+
+LoadFrontpic: ; 512f2
+	ld a, [wBoxAlignment]
+	and a
+	jr nz, .x_flip
+.left_loop
+	ld a, [de]
+	inc de
+	ld [hli], a
+	dec c
+	jr nz, .left_loop
+	ret
+
+.x_flip
+	push bc
+.right_loop
+	ld a, [de]
+	inc de
+	ld b, a
+	xor a
+	rept 8
+	rr b
+	rla
+	endr
+	ld [hli], a
+	dec c
+	jr nz, .right_loop
+	pop bc
+	ret
diff --git a/unknown/1f0000.bin b/unknown/1f0000.bin
deleted file mode 100644
index 1ecd2d61e02cad666c898c0b0928de7b5ce47c80..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2520
zcmYjTTXq^t5-hs1vZ}i}i>Ckq7Egn)vBg7x0ND+acW_rSTbQlfRow46^W(p}qlp5K
zXT&*>UEQ4-l^GGGy$<O|-;<gs6Vi@fQo#cnN=TP9AkWX5%})PRBR8OpRAq126#P>S
zh~=jm>Xd8r=yO@~ijqXrC{gB2U$`!9T~J**`G(e#@+hgxC?Dln>fIBM?1&fCVX+13
zdY9s=AA0`c|5O*<r@88pPQIBJ{)cMoCI6uw%wK9KOa5DBTu)X^NsmNUa<D6&*l%>E
zrD%30F%9cXM<lU8GD<2wlV(y%oGfT;$G_r44`?h8Nkltv3)K2xF7D#C=InvTc&rmO
zoHCrJtdvh5^1WO%(=(6qyL2px9=VH5X(c5y%9m6!F@MSI^*4Hzo}Rl`X#*1jPy7x{
zc;X>{!F~%Jd%O`6g+5M&On&`tCma1p3rejvOLD0)on)=?yqO~N)Rckh=#N17rtjU7
z4!X{DzIQ|9Ip`F3&-&;-$;wp2lDf{iT)Ig&DVe(@qaY)*;>3L5lMPs3pnuO=>8f<y
zio86zl2M9H#gw@U#7e#CCG~wXRP3{~LPUG3o13jEnFrpX18x1L-|6U2UYiBD(Z$ul
zzf!}Oadid<1|c^)yQG<~xRpd?7j02ZUzrrImo{>Y`3L#XM1R)eI1N82bt9n=qq#Gv
zUVtUf(lGUelH3&Zf+@`1TDInn&nD5&mZYW=vKC!Lo`tUI&zym&D~U0a@S{)6g<k!$
zoUwP2dcFawhjeC7GIDoR#gjRmL}y1ZrsubIDwFgb^C|1TB~+QXsT8_S1pK!T`13oq
z{}*o%&(JBQ+H?<|To5VM<ZrkdkipduweCeH?|Md$^aYrgCf0c2?{tx7xWxm+w@GOr
zvNAUc@1BA6J2+p(Tg@Om;CtQj1MYgxJ07~F|HZrCai;V9V>S$t^OaOXd6`~OQ)Z?W
zcL#kw$sM?%lL;ND42@L5AE5&#FgFeyd%yOl;)#?oSMK#q3F~eBicTgx_AC9a>$WN7
za1U%AweBV0n@!)wJ}^`=hbzQ*d!5SM$N4tF1ut_KIq+Xz%)yg3`sgu@hrDF^=7arU
z7c_(-GE+;|Qq6PjNS^O?N1tizr&+-%b?qJsoiPQCUQM%;>)N*Ny174tG0Hsg+(*ts
z$>2{teB}{8;rX6U!b*RV3GlSFm!&&9LWUmZsBv!w25z8>8#gd7L<4?E&kP6p9mC(?
zb<J!mJzq%OG_y00EkjiWH?yYf^@650uyIjU@vnid)RJ2~HYINVT5s!_)@I;m%w`a3
z_A~ey+!niw>u>hSMeQu9MK|8I_1fNHM`Ep{$XU))vT_n{8a$y)Ua|LvNzu0lCLrpV
z$kJw_5^FNN>qB(rxzBV>Ce-m8(UR#c`pHmy1DF@2guxk-JR*k1Q!1h24sMxXeF&ei
znB>1z1<c8FRa(+N)esI@DOJ(0f2jgYINFnqxQ9?@>pG)?hj@2)-OYvz%H<s{eUTQk
z&gjTc9DJdG<G$+y)Yswz?(TGx;1-V2uRc7e7Rn)N|Hw^x;TMi^)qK<&dUBDCF)nxt
zM#gxEoi)HohBs&M;f=mB5ni3bi!E*K299c^;OIa`ci~+JIB<0P$g8vcjyx))Q0;yC
z0rh+N08_oLf<OIG&3gXM_gDwchj{~)`fjg7$(8PT=0PY#U3b&b4k*Djy10`tIvX`F
z$p4CrP2k^vt37DHt&QuVKMSg-13sWjufX;W?ToHoH@QwC_5^uwcY;Y)aB3W^GM|{}
zm6V!Xo#YAnXY<33G3UtRiHq-sP;;q&#8sSVovZNq=+8?k`^2B%rpSf7@!X-180JCn
zJmZF;Bn{4e#q-bRE4-o5ZRFS)gWbe=-S$+Ki}TDB@hBBpU|q%B;mIR|WB4Cqk6pgt
zb1@&$*|k|Ax|lNJGCoacu^)DHhJHK1GUTn9aEEI_sqXcRdz2Zl#VUL4aMqsSX-%Hm
z==N**g1TGn=@EO+ar*Z>+e~ogGULv*4|d7^SA5fQmXc5GjLUhJjW|XGv;i?p5zhI=
zCvGnlGsoFI2myZlW|!`fE5J-RQ{!);o1t*gbz*;FZ;!mPD;a|S@!k~g9yy*=t^Com
t9J!T`y}*}7(m;(?-t%3c>Y|$w_t>xHv+ZMdsZFsyMb1Kx?B8lF{{bV6uy+6e