Add a new party menu icon - pret/pokecrystal GitHub Wiki

This tutorial is for how to add a new party menu icon (the same icons are used outside the Day-Care). As an example, we'll add one for Celebi.

Contents

  1. Define an icon constant
  2. Design its graphics
  3. Include and point to the graphics
  4. Use the icon for a Pokémon
  5. How to add a unique icon for each Pokémon
  6. Implement unique icons for Unown

1. Define an icon constant

Edit constants/icon_constants.asm:

 ; IconPointers indexes (see data/icon_pointers.asm)
 	const_def
 	const ICON_NULL
 	const ICON_POLIWAG
 	...
 	const ICON_BIGMON
+	const ICON_CELEBI
 DEF NUM_ICONS EQU const_value - 1

2. Design its graphics

Create gfx/icons/celebi.png:

gfx/icons/celebi.png

It needs to have two frames stacked vertically, each 16x16 pixels, and use four colors: black, white, light gray (#AAAAAA), and dark gray (#555555).

The example graphics are based on gfx/overworld/celebi.png, which is used for the Japanese- and Virtual Console–exclusive GS Ball event.

3. Include and point to the graphics

Edit data/icon_pointers.asm:

 IconPointers:
 ; entries correspond to ICON_* constants
 	table_width 2, IconPointers
 	dw NullIcon
 	dw PoliwagIcon
 	...
 	dw BigmonIcon
+	dw CelebiIcon
 	assert_table_length NUM_ICONS + 1

And edit gfx/icons.asm:

 Icons: ; used only for BANK(Icons)
 
 NullIcon:
 PoliwagIcon:      INCBIN "gfx/icons/poliwag.2bpp"
 ...
 BigmonIcon:       INCBIN "gfx/icons/bigmon.2bpp"
+CelebiIcon:       INCBIN "gfx/icons/celebi.2bpp"

4. Use the icon for a Pokémon

Edit data/pokemon/menu_icons.asm:

 MonMenuIcons:
 	table_width 1, MonMenuIcons
 	...
-	db ICON_HUMANSHAPE  ; CELEBI
+	db ICON_CELEBI      ; CELEBI
 	assert_table_length NUM_POKEMON

That's all!

Screenshots

5. How to add a unique icon for each Pokémon

It's common to want a unique icon for each Pokémon, like the ones from this set (here are its still frames):

Screenshot

Or this set of the original 151 (plus Missingno!) by Emi Monserrate (here are its still frames). (Found via Eevee's proof of concept.) Or this full 251 set (plus some extras!) by LuigiTKO (here are its still frames). Or, of course, your own custom icons. :)

First, add an icon for every Pokémon.

Edit gfx/icons.asm:

Click here to view code
Icons: ; used only for BANK(Icons)

NullIcon:
-PoliwagIcon:      INCBIN "gfx/icons/poliwag.2bpp"
-JigglypuffIcon:   INCBIN "gfx/icons/jigglypuff.2bpp"
-DiglettIcon:      INCBIN "gfx/icons/diglett.2bpp"
-PikachuIcon:      INCBIN "gfx/icons/pikachu.2bpp"
-StaryuIcon:       INCBIN "gfx/icons/staryu.2bpp"
-FishIcon:         INCBIN "gfx/icons/fish.2bpp"
-BirdIcon:         INCBIN "gfx/icons/bird.2bpp"
-MonsterIcon:      INCBIN "gfx/icons/monster.2bpp"
-ClefairyIcon:     INCBIN "gfx/icons/clefairy.2bpp"
-OddishIcon:       INCBIN "gfx/icons/oddish.2bpp"
-BugIcon:          INCBIN "gfx/icons/bug.2bpp"
-GhostIcon:        INCBIN "gfx/icons/ghost.2bpp"
-LaprasIcon:       INCBIN "gfx/icons/lapras.2bpp"
-HumanshapeIcon:   INCBIN "gfx/icons/humanshape.2bpp"
-FoxIcon:          INCBIN "gfx/icons/fox.2bpp"
-EquineIcon:       INCBIN "gfx/icons/equine.2bpp"
-ShellIcon:        INCBIN "gfx/icons/shell.2bpp"
-BlobIcon:         INCBIN "gfx/icons/blob.2bpp"
-SerpentIcon:      INCBIN "gfx/icons/serpent.2bpp"
-VoltorbIcon:      INCBIN "gfx/icons/voltorb.2bpp"
-SquirtleIcon:     INCBIN "gfx/icons/squirtle.2bpp"
-BulbasaurIcon:    INCBIN "gfx/icons/bulbasaur.2bpp"
-CharmanderIcon:   INCBIN "gfx/icons/charmander.2bpp"
-CaterpillarIcon:  INCBIN "gfx/icons/caterpillar.2bpp"
-UnownIcon:        INCBIN "gfx/icons/unown.2bpp"
-GeodudeIcon:      INCBIN "gfx/icons/geodude.2bpp"
-FighterIcon:      INCBIN "gfx/icons/fighter.2bpp"
-EggIcon:          INCBIN "gfx/icons/egg.2bpp"
-JellyfishIcon:    INCBIN "gfx/icons/jellyfish.2bpp"
-MothIcon:         INCBIN "gfx/icons/moth.2bpp"
-BatIcon:          INCBIN "gfx/icons/bat.2bpp"
-SnorlaxIcon:      INCBIN "gfx/icons/snorlax.2bpp"
-HoOhIcon:         INCBIN "gfx/icons/ho_oh.2bpp"
-LugiaIcon:        INCBIN "gfx/icons/lugia.2bpp"
-GyaradosIcon:     INCBIN "gfx/icons/gyarados.2bpp"
-SlowpokeIcon:     INCBIN "gfx/icons/slowpoke.2bpp"
-SudowoodoIcon:    INCBIN "gfx/icons/sudowoodo.2bpp"
-BigmonIcon:       INCBIN "gfx/icons/bigmon.2bpp"
+BulbasaurIcon:    INCBIN "gfx/icons/bulbasaur.2bpp"
+IvysaurIcon:      INCBIN "gfx/icons/ivysaur.2bpp"
+VenusaurIcon:     INCBIN "gfx/icons/venusaur.2bpp"
+CharmanderIcon:   INCBIN "gfx/icons/charmander.2bpp"
+CharmeleonIcon:   INCBIN "gfx/icons/charmeleon.2bpp"
+CharizardIcon:    INCBIN "gfx/icons/charizard.2bpp"
+SquirtleIcon:     INCBIN "gfx/icons/squirtle.2bpp"
+WartortleIcon:    INCBIN "gfx/icons/wartortle.2bpp"
+BlastoiseIcon:    INCBIN "gfx/icons/blastoise.2bpp"
+CaterpieIcon:     INCBIN "gfx/icons/caterpie.2bpp"
+MetapodIcon:      INCBIN "gfx/icons/metapod.2bpp"
+ButterfreeIcon:   INCBIN "gfx/icons/butterfree.2bpp"
+WeedleIcon:       INCBIN "gfx/icons/weedle.2bpp"
+KakunaIcon:       INCBIN "gfx/icons/kakuna.2bpp"
+BeedrillIcon:     INCBIN "gfx/icons/beedrill.2bpp"
+PidgeyIcon:       INCBIN "gfx/icons/pidgey.2bpp"
+PidgeottoIcon:    INCBIN "gfx/icons/pidgeotto.2bpp"
+PidgeotIcon:      INCBIN "gfx/icons/pidgeot.2bpp"
+RattataIcon:      INCBIN "gfx/icons/rattata.2bpp"
+RaticateIcon:     INCBIN "gfx/icons/raticate.2bpp"
+SpearowIcon:      INCBIN "gfx/icons/spearow.2bpp"
+FearowIcon:       INCBIN "gfx/icons/fearow.2bpp"
+EkansIcon:        INCBIN "gfx/icons/ekans.2bpp"
+ArbokIcon:        INCBIN "gfx/icons/arbok.2bpp"
+PikachuIcon:      INCBIN "gfx/icons/pikachu.2bpp"
+RaichuIcon:       INCBIN "gfx/icons/raichu.2bpp"
+SandshrewIcon:    INCBIN "gfx/icons/sandshrew.2bpp"
+SandslashIcon:    INCBIN "gfx/icons/sandslash.2bpp"
+NidoranFIcon:     INCBIN "gfx/icons/nidoranf.2bpp"
+NidorinaIcon:     INCBIN "gfx/icons/nidorina.2bpp"
+NidoqueenIcon:    INCBIN "gfx/icons/nidoqueen.2bpp"
+NidoranMIcon:     INCBIN "gfx/icons/nidoranm.2bpp"
+NidorinoIcon:     INCBIN "gfx/icons/nidorino.2bpp"
+NidokingIcon:     INCBIN "gfx/icons/nidoking.2bpp"
+ClefairyIcon:     INCBIN "gfx/icons/clefairy.2bpp"
+ClefableIcon:     INCBIN "gfx/icons/clefable.2bpp"
+VulpixIcon:       INCBIN "gfx/icons/vulpix.2bpp"
+NinetalesIcon:    INCBIN "gfx/icons/ninetales.2bpp"
+JigglypuffIcon:   INCBIN "gfx/icons/jigglypuff.2bpp"
+WigglytuffIcon:   INCBIN "gfx/icons/wigglytuff.2bpp"
+ZubatIcon:        INCBIN "gfx/icons/zubat.2bpp"
+GolbatIcon:       INCBIN "gfx/icons/golbat.2bpp"
+OddishIcon:       INCBIN "gfx/icons/oddish.2bpp"
+GloomIcon:        INCBIN "gfx/icons/gloom.2bpp"
+VileplumeIcon:    INCBIN "gfx/icons/vileplume.2bpp"
+ParasIcon:        INCBIN "gfx/icons/paras.2bpp"
+ParasectIcon:     INCBIN "gfx/icons/parasect.2bpp"
+VenonatIcon:      INCBIN "gfx/icons/venonat.2bpp"
+VenomothIcon:     INCBIN "gfx/icons/venomoth.2bpp"
+DiglettIcon:      INCBIN "gfx/icons/diglett.2bpp"
+DugtrioIcon:      INCBIN "gfx/icons/dugtrio.2bpp"
+MeowthIcon:       INCBIN "gfx/icons/meowth.2bpp"
+PersianIcon:      INCBIN "gfx/icons/persian.2bpp"
+PsyduckIcon:      INCBIN "gfx/icons/psyduck.2bpp"
+GolduckIcon:      INCBIN "gfx/icons/golduck.2bpp"
+MankeyIcon:       INCBIN "gfx/icons/mankey.2bpp"
+PrimeapeIcon:     INCBIN "gfx/icons/primeape.2bpp"
+GrowlitheIcon:    INCBIN "gfx/icons/growlithe.2bpp"
+ArcanineIcon:     INCBIN "gfx/icons/arcanine.2bpp"
+PoliwagIcon:      INCBIN "gfx/icons/poliwag.2bpp"
+PoliwhirlIcon:    INCBIN "gfx/icons/poliwhirl.2bpp"
+PoliwrathIcon:    INCBIN "gfx/icons/poliwrath.2bpp"
+AbraIcon:         INCBIN "gfx/icons/abra.2bpp"
+KadabraIcon:      INCBIN "gfx/icons/kadabra.2bpp"
+AlakazamIcon:     INCBIN "gfx/icons/alakazam.2bpp"
+MachopIcon:       INCBIN "gfx/icons/machop.2bpp"
+MachokeIcon:      INCBIN "gfx/icons/machoke.2bpp"
+MachampIcon:      INCBIN "gfx/icons/machamp.2bpp"
+BellsproutIcon:   INCBIN "gfx/icons/bellsprout.2bpp"
+WeepinbellIcon:   INCBIN "gfx/icons/weepinbell.2bpp"
+VictreebelIcon:   INCBIN "gfx/icons/victreebel.2bpp"
+TentacoolIcon:    INCBIN "gfx/icons/tentacool.2bpp"
+TentacruelIcon:   INCBIN "gfx/icons/tentacruel.2bpp"
+GeodudeIcon:      INCBIN "gfx/icons/geodude.2bpp"
+GravelerIcon:     INCBIN "gfx/icons/graveler.2bpp"
+GolemIcon:        INCBIN "gfx/icons/golem.2bpp"
+PonytaIcon:       INCBIN "gfx/icons/ponyta.2bpp"
+RapidashIcon:     INCBIN "gfx/icons/rapidash.2bpp"
+SlowpokeIcon:     INCBIN "gfx/icons/slowpoke.2bpp"
+SlowbroIcon:      INCBIN "gfx/icons/slowbro.2bpp"
+MagnemiteIcon:    INCBIN "gfx/icons/magnemite.2bpp"
+MagnetonIcon:     INCBIN "gfx/icons/magneton.2bpp"
+FarfetchDIcon:    INCBIN "gfx/icons/farfetch_d.2bpp"
+DoduoIcon:        INCBIN "gfx/icons/doduo.2bpp"
+DodrioIcon:       INCBIN "gfx/icons/dodrio.2bpp"
+SeelIcon:         INCBIN "gfx/icons/seel.2bpp"
+DewgongIcon:      INCBIN "gfx/icons/dewgong.2bpp"
+GrimerIcon:       INCBIN "gfx/icons/grimer.2bpp"
+MukIcon:          INCBIN "gfx/icons/muk.2bpp"
+ShellderIcon:     INCBIN "gfx/icons/shellder.2bpp"
+CloysterIcon:     INCBIN "gfx/icons/cloyster.2bpp"
+GastlyIcon:       INCBIN "gfx/icons/gastly.2bpp"
+HaunterIcon:      INCBIN "gfx/icons/haunter.2bpp"
+GengarIcon:       INCBIN "gfx/icons/gengar.2bpp"
+OnixIcon:         INCBIN "gfx/icons/onix.2bpp"
+DrowzeeIcon:      INCBIN "gfx/icons/drowzee.2bpp"
+HypnoIcon:        INCBIN "gfx/icons/hypno.2bpp"
+KrabbyIcon:       INCBIN "gfx/icons/krabby.2bpp"
+KinglerIcon:      INCBIN "gfx/icons/kingler.2bpp"
+VoltorbIcon:      INCBIN "gfx/icons/voltorb.2bpp"
+ElectrodeIcon:    INCBIN "gfx/icons/electrode.2bpp"
+ExeggcuteIcon:    INCBIN "gfx/icons/exeggcute.2bpp"
+ExeggutorIcon:    INCBIN "gfx/icons/exeggutor.2bpp"
+CuboneIcon:       INCBIN "gfx/icons/cubone.2bpp"
+MarowakIcon:      INCBIN "gfx/icons/marowak.2bpp"
+HitmonleeIcon:    INCBIN "gfx/icons/hitmonlee.2bpp"
+HitmonchanIcon:   INCBIN "gfx/icons/hitmonchan.2bpp"
+LickitungIcon:    INCBIN "gfx/icons/lickitung.2bpp"
+KoffingIcon:      INCBIN "gfx/icons/koffing.2bpp"
+WeezingIcon:      INCBIN "gfx/icons/weezing.2bpp"
+RhyhornIcon:      INCBIN "gfx/icons/rhyhorn.2bpp"
+RhydonIcon:       INCBIN "gfx/icons/rhydon.2bpp"
+ChanseyIcon:      INCBIN "gfx/icons/chansey.2bpp"
+TangelaIcon:      INCBIN "gfx/icons/tangela.2bpp"
+KangaskhanIcon:   INCBIN "gfx/icons/kangaskhan.2bpp"
+HorseaIcon:       INCBIN "gfx/icons/horsea.2bpp"
+SeadraIcon:       INCBIN "gfx/icons/seadra.2bpp"
+GoldeenIcon:      INCBIN "gfx/icons/goldeen.2bpp"
+SeakingIcon:      INCBIN "gfx/icons/seaking.2bpp"
+StaryuIcon:       INCBIN "gfx/icons/staryu.2bpp"
+StarmieIcon:      INCBIN "gfx/icons/starmie.2bpp"
+MrMimeIcon:       INCBIN "gfx/icons/mrmime.2bpp"
+ScytherIcon:      INCBIN "gfx/icons/scyther.2bpp"
+JynxIcon:         INCBIN "gfx/icons/jynx.2bpp"
+ElectabuzzIcon:   INCBIN "gfx/icons/electabuzz.2bpp"
+MagmarIcon:       INCBIN "gfx/icons/magmar.2bpp"
+PinsirIcon:       INCBIN "gfx/icons/pinsir.2bpp"
+TaurosIcon:       INCBIN "gfx/icons/tauros.2bpp"
+MagikarpIcon:     INCBIN "gfx/icons/magikarp.2bpp"
+GyaradosIcon:     INCBIN "gfx/icons/gyarados.2bpp"
+LaprasIcon:       INCBIN "gfx/icons/lapras.2bpp"
+DittoIcon:        INCBIN "gfx/icons/ditto.2bpp"
+EeveeIcon:        INCBIN "gfx/icons/eevee.2bpp"
+VaporeonIcon:     INCBIN "gfx/icons/vaporeon.2bpp"
+JolteonIcon:      INCBIN "gfx/icons/jolteon.2bpp"
+FlareonIcon:      INCBIN "gfx/icons/flareon.2bpp"
+PorygonIcon:      INCBIN "gfx/icons/porygon.2bpp"
+OmanyteIcon:      INCBIN "gfx/icons/omanyte.2bpp"
+OmastarIcon:      INCBIN "gfx/icons/omastar.2bpp"
+KabutoIcon:       INCBIN "gfx/icons/kabuto.2bpp"
+KabutopsIcon:     INCBIN "gfx/icons/kabutops.2bpp"
+AerodactylIcon:   INCBIN "gfx/icons/aerodactyl.2bpp"
+SnorlaxIcon:      INCBIN "gfx/icons/snorlax.2bpp"
+ArticunoIcon:     INCBIN "gfx/icons/articuno.2bpp"
+ZapdosIcon:       INCBIN "gfx/icons/zapdos.2bpp"
+MoltresIcon:      INCBIN "gfx/icons/moltres.2bpp"
+DratiniIcon:      INCBIN "gfx/icons/dratini.2bpp"
+DragonairIcon:    INCBIN "gfx/icons/dragonair.2bpp"
+DragoniteIcon:    INCBIN "gfx/icons/dragonite.2bpp"
+MewtwoIcon:       INCBIN "gfx/icons/mewtwo.2bpp"
+MewIcon:          INCBIN "gfx/icons/mew.2bpp"
+ChikoritaIcon:    INCBIN "gfx/icons/chikorita.2bpp"
+BayleefIcon:      INCBIN "gfx/icons/bayleef.2bpp"
+MeganiumIcon:     INCBIN "gfx/icons/meganium.2bpp"
+CyndaquilIcon:    INCBIN "gfx/icons/cyndaquil.2bpp"
+QuilavaIcon:      INCBIN "gfx/icons/quilava.2bpp"
+TyphlosionIcon:   INCBIN "gfx/icons/typhlosion.2bpp"
+TotodileIcon:     INCBIN "gfx/icons/totodile.2bpp"
+CroconawIcon:     INCBIN "gfx/icons/croconaw.2bpp"
+FeraligatrIcon:   INCBIN "gfx/icons/feraligatr.2bpp"
+SentretIcon:      INCBIN "gfx/icons/sentret.2bpp"
+FurretIcon:       INCBIN "gfx/icons/furret.2bpp"
+HoothootIcon:     INCBIN "gfx/icons/hoothoot.2bpp"
+NoctowlIcon:      INCBIN "gfx/icons/noctowl.2bpp"
+LedybaIcon:       INCBIN "gfx/icons/ledyba.2bpp"
+LedianIcon:       INCBIN "gfx/icons/ledian.2bpp"
+SpinarakIcon:     INCBIN "gfx/icons/spinarak.2bpp"
+AriadosIcon:      INCBIN "gfx/icons/ariados.2bpp"
+CrobatIcon:       INCBIN "gfx/icons/crobat.2bpp"
+ChinchouIcon:     INCBIN "gfx/icons/chinchou.2bpp"
+LanturnIcon:      INCBIN "gfx/icons/lanturn.2bpp"
+PichuIcon:        INCBIN "gfx/icons/pichu.2bpp"
+CleffaIcon:       INCBIN "gfx/icons/cleffa.2bpp"
+IgglybuffIcon:    INCBIN "gfx/icons/igglybuff.2bpp"
+TogepiIcon:       INCBIN "gfx/icons/togepi.2bpp"
+TogeticIcon:      INCBIN "gfx/icons/togetic.2bpp"
+NatuIcon:         INCBIN "gfx/icons/natu.2bpp"
+XatuIcon:         INCBIN "gfx/icons/xatu.2bpp"
+MareepIcon:       INCBIN "gfx/icons/mareep.2bpp"
+FlaaffyIcon:      INCBIN "gfx/icons/flaaffy.2bpp"
+AmpharosIcon:     INCBIN "gfx/icons/ampharos.2bpp"
+BellossomIcon:    INCBIN "gfx/icons/bellossom.2bpp"
+MarillIcon:       INCBIN "gfx/icons/marill.2bpp"
+AzumarillIcon:    INCBIN "gfx/icons/azumarill.2bpp"
+SudowoodoIcon:    INCBIN "gfx/icons/sudowoodo.2bpp"
+PolitoedIcon:     INCBIN "gfx/icons/politoed.2bpp"
+HoppipIcon:       INCBIN "gfx/icons/hoppip.2bpp"
+SkiploomIcon:     INCBIN "gfx/icons/skiploom.2bpp"
+JumpluffIcon:     INCBIN "gfx/icons/jumpluff.2bpp"
+AipomIcon:        INCBIN "gfx/icons/aipom.2bpp"
+SunkernIcon:      INCBIN "gfx/icons/sunkern.2bpp"
+SunfloraIcon:     INCBIN "gfx/icons/sunflora.2bpp"
+YanmaIcon:        INCBIN "gfx/icons/yanma.2bpp"
+WooperIcon:       INCBIN "gfx/icons/wooper.2bpp"
+QuagsireIcon:     INCBIN "gfx/icons/quagsire.2bpp"
+EspeonIcon:       INCBIN "gfx/icons/espeon.2bpp"
+UmbreonIcon:      INCBIN "gfx/icons/umbreon.2bpp"
+MurkrowIcon:      INCBIN "gfx/icons/murkrow.2bpp"
+SlowkingIcon:     INCBIN "gfx/icons/slowking.2bpp"
+MisdreavusIcon:   INCBIN "gfx/icons/misdreavus.2bpp"
+UnownIcon:        INCBIN "gfx/icons/unown.2bpp"
+WobbuffetIcon:    INCBIN "gfx/icons/wobbuffet.2bpp"
+GirafarigIcon:    INCBIN "gfx/icons/girafarig.2bpp"
+PinecoIcon:       INCBIN "gfx/icons/pineco.2bpp"
+ForretressIcon:   INCBIN "gfx/icons/forretress.2bpp"
+DunsparceIcon:    INCBIN "gfx/icons/dunsparce.2bpp"
+GligarIcon:       INCBIN "gfx/icons/gligar.2bpp"
+SteelixIcon:      INCBIN "gfx/icons/steelix.2bpp"
+SnubbullIcon:     INCBIN "gfx/icons/snubbull.2bpp"
+GranbullIcon:     INCBIN "gfx/icons/granbull.2bpp"
+QwilfishIcon:     INCBIN "gfx/icons/qwilfish.2bpp"
+ScizorIcon:       INCBIN "gfx/icons/scizor.2bpp"
+ShuckleIcon:      INCBIN "gfx/icons/shuckle.2bpp"
+HeracrossIcon:    INCBIN "gfx/icons/heracross.2bpp"
+SneaselIcon:      INCBIN "gfx/icons/sneasel.2bpp"
+TeddiursaIcon:    INCBIN "gfx/icons/teddiursa.2bpp"
+UrsaringIcon:     INCBIN "gfx/icons/ursaring.2bpp"
+SlugmaIcon:       INCBIN "gfx/icons/slugma.2bpp"
+MagcargoIcon:     INCBIN "gfx/icons/magcargo.2bpp"
+SwinubIcon:       INCBIN "gfx/icons/swinub.2bpp"
+PiloswineIcon:    INCBIN "gfx/icons/piloswine.2bpp"
+CorsolaIcon:      INCBIN "gfx/icons/corsola.2bpp"
+RemoraidIcon:     INCBIN "gfx/icons/remoraid.2bpp"
+OctilleryIcon:    INCBIN "gfx/icons/octillery.2bpp"
+DelibirdIcon:     INCBIN "gfx/icons/delibird.2bpp"
+MantineIcon:      INCBIN "gfx/icons/mantine.2bpp"
+SkarmoryIcon:     INCBIN "gfx/icons/skarmory.2bpp"
+HoundourIcon:     INCBIN "gfx/icons/houndour.2bpp"
+HoundoomIcon:     INCBIN "gfx/icons/houndoom.2bpp"
+KingdraIcon:      INCBIN "gfx/icons/kingdra.2bpp"
+PhanpyIcon:       INCBIN "gfx/icons/phanpy.2bpp"
+DonphanIcon:      INCBIN "gfx/icons/donphan.2bpp"
+Porygon2Icon:     INCBIN "gfx/icons/porygon2.2bpp"
+StantlerIcon:     INCBIN "gfx/icons/stantler.2bpp"
+SmeargleIcon:     INCBIN "gfx/icons/smeargle.2bpp"
+TyrogueIcon:      INCBIN "gfx/icons/tyrogue.2bpp"
+HitmontopIcon:    INCBIN "gfx/icons/hitmontop.2bpp"
+SmoochumIcon:     INCBIN "gfx/icons/smoochum.2bpp"
+ElekidIcon:       INCBIN "gfx/icons/elekid.2bpp"
+MagbyIcon:        INCBIN "gfx/icons/magby.2bpp"
+MiltankIcon:      INCBIN "gfx/icons/miltank.2bpp"
+BlisseyIcon:      INCBIN "gfx/icons/blissey.2bpp"
+RaikouIcon:       INCBIN "gfx/icons/raikou.2bpp"
+EnteiIcon:        INCBIN "gfx/icons/entei.2bpp"
+SuicuneIcon:      INCBIN "gfx/icons/suicune.2bpp"
+LarvitarIcon:     INCBIN "gfx/icons/larvitar.2bpp"
+PupitarIcon:      INCBIN "gfx/icons/pupitar.2bpp"
+TyranitarIcon:    INCBIN "gfx/icons/tyranitar.2bpp"
+LugiaIcon:        INCBIN "gfx/icons/lugia.2bpp"
+HoOhIcon:         INCBIN "gfx/icons/ho_oh.2bpp"
+CelebiIcon:       INCBIN "gfx/icons/celebi.2bpp"
+EggIcon:          INCBIN "gfx/icons/egg.2bpp"
+

Add icon constants for every Pokémon.

Edit constants/icon_constants.asm:

Click here to view code
; IconPointers indexes (see data/icon_pointers.asm)
	const_def
	const ICON_NULL
-	const ICON_POLIWAG
-	const ICON_JIGGLYPUFF
-	const ICON_DIGLETT
-	const ICON_PIKACHU
-	const ICON_STARYU
-	const ICON_FISH
-	const ICON_BIRD
-	const ICON_MONSTER
-	const ICON_CLEFAIRY
-	const ICON_ODDISH
-	const ICON_BUG
-	const ICON_GHOST
-	const ICON_LAPRAS
-	const ICON_HUMANSHAPE
-	const ICON_FOX
-	const ICON_EQUINE
-	const ICON_SHELL
-	const ICON_BLOB
-	const ICON_SERPENT
-	const ICON_VOLTORB
-	const ICON_SQUIRTLE
-	const ICON_BULBASAUR
-	const ICON_CHARMANDER
-	const ICON_CATERPILLAR
-	const ICON_UNOWN
-	const ICON_GEODUDE
-	const ICON_FIGHTER
-	const ICON_EGG
-	const ICON_JELLYFISH
-	const ICON_MOTH
-	const ICON_BAT
-	const ICON_SNORLAX
-	const ICON_HO_OH
-	const ICON_LUGIA
-	const ICON_GYARADOS
-	const ICON_SLOWPOKE
-	const ICON_SUDOWOODO
-	const ICON_BIGMON
+	const ICON_BULBASAUR
+	const ICON_IVYSAUR
+	const ICON_VENUSAUR
+	const ICON_CHARMANDER
+	const ICON_CHARMELEON
+	const ICON_CHARIZARD
+	const ICON_SQUIRTLE
+	const ICON_WARTORTLE
+	const ICON_BLASTOISE
+	const ICON_CATERPIE
+	const ICON_METAPOD
+	const ICON_BUTTERFREE
+	const ICON_WEEDLE
+	const ICON_KAKUNA
+	const ICON_BEEDRILL
+	const ICON_PIDGEY
+	const ICON_PIDGEOTTO
+	const ICON_PIDGEOT
+	const ICON_RATTATA
+	const ICON_RATICATE
+	const ICON_SPEAROW
+	const ICON_FEAROW
+	const ICON_EKANS
+	const ICON_ARBOK
+	const ICON_PIKACHU
+	const ICON_RAICHU
+	const ICON_SANDSHREW
+	const ICON_SANDSLASH
+	const ICON_NIDORAN_F
+	const ICON_NIDORINA
+	const ICON_NIDOQUEEN
+	const ICON_NIDORAN_M
+	const ICON_NIDORINO
+	const ICON_NIDOKING
+	const ICON_CLEFAIRY
+	const ICON_CLEFABLE
+	const ICON_VULPIX
+	const ICON_NINETALES
+	const ICON_JIGGLYPUFF
+	const ICON_WIGGLYTUFF
+	const ICON_ZUBAT
+	const ICON_GOLBAT
+	const ICON_ODDISH
+	const ICON_GLOOM
+	const ICON_VILEPLUME
+	const ICON_PARAS
+	const ICON_PARASECT
+	const ICON_VENONAT
+	const ICON_VENOMOTH
+	const ICON_DIGLETT
+	const ICON_DUGTRIO
+	const ICON_MEOWTH
+	const ICON_PERSIAN
+	const ICON_PSYDUCK
+	const ICON_GOLDUCK
+	const ICON_MANKEY
+	const ICON_PRIMEAPE
+	const ICON_GROWLITHE
+	const ICON_ARCANINE
+	const ICON_POLIWAG
+	const ICON_POLIWHIRL
+	const ICON_POLIWRATH
+	const ICON_ABRA
+	const ICON_KADABRA
+	const ICON_ALAKAZAM
+	const ICON_MACHOP
+	const ICON_MACHOKE
+	const ICON_MACHAMP
+	const ICON_BELLSPROUT
+	const ICON_WEEPINBELL
+	const ICON_VICTREEBEL
+	const ICON_TENTACOOL
+	const ICON_TENTACRUEL
+	const ICON_GEODUDE
+	const ICON_GRAVELER
+	const ICON_GOLEM
+	const ICON_PONYTA
+	const ICON_RAPIDASH
+	const ICON_SLOWPOKE
+	const ICON_SLOWBRO
+	const ICON_MAGNEMITE
+	const ICON_MAGNETON
+	const ICON_FARFETCH_D
+	const ICON_DODUO
+	const ICON_DODRIO
+	const ICON_SEEL
+	const ICON_DEWGONG
+	const ICON_GRIMER
+	const ICON_MUK
+	const ICON_SHELLDER
+	const ICON_CLOYSTER
+	const ICON_GASTLY
+	const ICON_HAUNTER
+	const ICON_GENGAR
+	const ICON_ONIX
+	const ICON_DROWZEE
+	const ICON_HYPNO
+	const ICON_KRABBY
+	const ICON_KINGLER
+	const ICON_VOLTORB
+	const ICON_ELECTRODE
+	const ICON_EXEGGCUTE
+	const ICON_EXEGGUTOR
+	const ICON_CUBONE
+	const ICON_MAROWAK
+	const ICON_HITMONLEE
+	const ICON_HITMONCHAN
+	const ICON_LICKITUNG
+	const ICON_KOFFING
+	const ICON_WEEZING
+	const ICON_RHYHORN
+	const ICON_RHYDON
+	const ICON_CHANSEY
+	const ICON_TANGELA
+	const ICON_KANGASKHAN
+	const ICON_HORSEA
+	const ICON_SEADRA
+	const ICON_GOLDEEN
+	const ICON_SEAKING
+	const ICON_STARYU
+	const ICON_STARMIE
+	const ICON_MRMIME
+	const ICON_SCYTHER
+	const ICON_JYNX
+	const ICON_ELECTABUZZ
+	const ICON_MAGMAR
+	const ICON_PINSIR
+	const ICON_TAUROS
+	const ICON_MAGIKARP
+	const ICON_GYARADOS
+	const ICON_LAPRAS
+	const ICON_DITTO
+	const ICON_EEVEE
+	const ICON_VAPOREON
+	const ICON_JOLTEON
+	const ICON_FLAREON
+	const ICON_PORYGON
+	const ICON_OMANYTE
+	const ICON_OMASTAR
+	const ICON_KABUTO
+	const ICON_KABUTOPS
+	const ICON_AERODACTYL
+	const ICON_SNORLAX
+	const ICON_ARTICUNO
+	const ICON_ZAPDOS
+	const ICON_MOLTRES
+	const ICON_DRATINI
+	const ICON_DRAGONAIR
+	const ICON_DRAGONITE
+	const ICON_MEWTWO
+	const ICON_MEW
+	const ICON_CHIKORITA
+	const ICON_BAYLEEF
+	const ICON_MEGANIUM
+	const ICON_CYNDAQUIL
+	const ICON_QUILAVA
+	const ICON_TYPHLOSION
+	const ICON_TOTODILE
+	const ICON_CROCONAW
+	const ICON_FERALIGATR
+	const ICON_SENTRET
+	const ICON_FURRET
+	const ICON_HOOTHOOT
+	const ICON_NOCTOWL
+	const ICON_LEDYBA
+	const ICON_LEDIAN
+	const ICON_SPINARAK
+	const ICON_ARIADOS
+	const ICON_CROBAT
+	const ICON_CHINCHOU
+	const ICON_LANTURN
+	const ICON_PICHU
+	const ICON_CLEFFA
+	const ICON_IGGLYBUFF
+	const ICON_TOGEPI
+	const ICON_TOGETIC
+	const ICON_NATU
+	const ICON_XATU
+	const ICON_MAREEP
+	const ICON_FLAAFFY
+	const ICON_AMPHAROS
+	const ICON_BELLOSSOM
+	const ICON_MARILL
+	const ICON_AZUMARILL
+	const ICON_SUDOWOODO
+	const ICON_POLITOED
+	const ICON_HOPPIP
+	const ICON_SKIPLOOM
+	const ICON_JUMPLUFF
+	const ICON_AIPOM
+	const ICON_SUNKERN
+	const ICON_SUNFLORA
+	const ICON_YANMA
+	const ICON_WOOPER
+	const ICON_QUAGSIRE
+	const ICON_ESPEON
+	const ICON_UMBREON
+	const ICON_MURKROW
+	const ICON_SLOWKING
+	const ICON_MISDREAVUS
+	const ICON_UNOWN
+	const ICON_WOBBUFFET
+	const ICON_GIRAFARIG
+	const ICON_PINECO
+	const ICON_FORRETRESS
+	const ICON_DUNSPARCE
+	const ICON_GLIGAR
+	const ICON_STEELIX
+	const ICON_SNUBBULL
+	const ICON_GRANBULL
+	const ICON_QWILFISH
+	const ICON_SCIZOR
+	const ICON_SHUCKLE
+	const ICON_HERACROSS
+	const ICON_SNEASEL
+	const ICON_TEDDIURSA
+	const ICON_URSARING
+	const ICON_SLUGMA
+	const ICON_MAGCARGO
+	const ICON_SWINUB
+	const ICON_PILOSWINE
+	const ICON_CORSOLA
+	const ICON_REMORAID
+	const ICON_OCTILLERY
+	const ICON_DELIBIRD
+	const ICON_MANTINE
+	const ICON_SKARMORY
+	const ICON_HOUNDOUR
+	const ICON_HOUNDOOM
+	const ICON_KINGDRA
+	const ICON_PHANPY
+	const ICON_DONPHAN
+	const ICON_PORYGON2
+	const ICON_STANTLER
+	const ICON_SMEARGLE
+	const ICON_TYROGUE
+	const ICON_HITMONTOP
+	const ICON_SMOOCHUM
+	const ICON_ELEKID
+	const ICON_MAGBY
+	const ICON_MILTANK
+	const ICON_BLISSEY
+	const ICON_RAIKOU
+	const ICON_ENTEI
+	const ICON_SUICUNE
+	const ICON_LARVITAR
+	const ICON_PUPITAR
+	const ICON_TYRANITAR
+	const ICON_LUGIA
+	const ICON_HO_OH
+	const ICON_CELEBI
+	const ICON_EGG
DEF NUM_ICONS EQU const_value - 1

Add icon pointers for every Pokémon.

Edit data/icon_pointers.asm:

Click here to view code
IconPointers:
; entries correspond to ICON_* constants (see constants/icon_constants.asm)
	table_width 2, IconPointers
	dw NullIcon
-	dw PoliwagIcon
-	dw JigglypuffIcon
-	dw DiglettIcon
-	dw PikachuIcon
-	dw StaryuIcon
-	dw FishIcon
-	dw BirdIcon
-	dw MonsterIcon
-	dw ClefairyIcon
-	dw OddishIcon
-	dw BugIcon
-	dw GhostIcon
-	dw LaprasIcon
-	dw HumanshapeIcon
-	dw FoxIcon
-	dw EquineIcon
-	dw ShellIcon
-	dw BlobIcon
-	dw SerpentIcon
-	dw VoltorbIcon
-	dw SquirtleIcon
-	dw BulbasaurIcon
-	dw CharmanderIcon
-	dw CaterpillarIcon
-	dw UnownIcon
-	dw GeodudeIcon
-	dw FighterIcon
-	dw EggIcon
-	dw JellyfishIcon
-	dw MothIcon
-	dw BatIcon
-	dw SnorlaxIcon
-	dw HoOhIcon
-	dw LugiaIcon
-	dw GyaradosIcon
-	dw SlowpokeIcon
-	dw SudowoodoIcon
-	dw BigmonIcon
-	dw CelebiIcon
+	dw BulbasaurIcon
+	dw IvysaurIcon
+	dw VenusaurIcon
+	dw CharmanderIcon
+	dw CharmeleonIcon
+	dw CharizardIcon
+	dw SquirtleIcon
+	dw WartortleIcon
+	dw BlastoiseIcon
+	dw CaterpieIcon
+	dw MetapodIcon
+	dw ButterfreeIcon
+	dw WeedleIcon
+	dw KakunaIcon
+	dw BeedrillIcon
+	dw PidgeyIcon
+	dw PidgeottoIcon
+	dw PidgeotIcon
+	dw RattataIcon
+	dw RaticateIcon
+	dw SpearowIcon
+	dw FearowIcon
+	dw EkansIcon
+	dw ArbokIcon
+	dw PikachuIcon
+	dw RaichuIcon
+	dw SandshrewIcon
+	dw SandslashIcon
+	dw NidoranFIcon
+	dw NidorinaIcon
+	dw NidoqueenIcon
+	dw NidoranMIcon
+	dw NidorinoIcon
+	dw NidokingIcon
+	dw ClefairyIcon
+	dw ClefableIcon
+	dw VulpixIcon
+	dw NinetalesIcon
+	dw JigglypuffIcon
+	dw WigglytuffIcon
+	dw ZubatIcon
+	dw GolbatIcon
+	dw OddishIcon
+	dw GloomIcon
+	dw VileplumeIcon
+	dw ParasIcon
+	dw ParasectIcon
+	dw VenonatIcon
+	dw VenomothIcon
+	dw DiglettIcon
+	dw DugtrioIcon
+	dw MeowthIcon
+	dw PersianIcon
+	dw PsyduckIcon
+	dw GolduckIcon
+	dw MankeyIcon
+	dw PrimeapeIcon
+	dw GrowlitheIcon
+	dw ArcanineIcon
+	dw PoliwagIcon
+	dw PoliwhirlIcon
+	dw PoliwrathIcon
+	dw AbraIcon
+	dw KadabraIcon
+	dw AlakazamIcon
+	dw MachopIcon
+	dw MachokeIcon
+	dw MachampIcon
+	dw BellsproutIcon
+	dw WeepinbellIcon
+	dw VictreebelIcon
+	dw TentacoolIcon
+	dw TentacruelIcon
+	dw GeodudeIcon
+	dw GravelerIcon
+	dw GolemIcon
+	dw PonytaIcon
+	dw RapidashIcon
+	dw SlowpokeIcon
+	dw SlowbroIcon
+	dw MagnemiteIcon
+	dw MagnetonIcon
+	dw FarfetchDIcon
+	dw DoduoIcon
+	dw DodrioIcon
+	dw SeelIcon
+	dw DewgongIcon
+	dw GrimerIcon
+	dw MukIcon
+	dw ShellderIcon
+	dw CloysterIcon
+	dw GastlyIcon
+	dw HaunterIcon
+	dw GengarIcon
+	dw OnixIcon
+	dw DrowzeeIcon
+	dw HypnoIcon
+	dw KrabbyIcon
+	dw KinglerIcon
+	dw VoltorbIcon
+	dw ElectrodeIcon
+	dw ExeggcuteIcon
+	dw ExeggutorIcon
+	dw CuboneIcon
+	dw MarowakIcon
+	dw HitmonleeIcon
+	dw HitmonchanIcon
+	dw LickitungIcon
+	dw KoffingIcon
+	dw WeezingIcon
+	dw RhyhornIcon
+	dw RhydonIcon
+	dw ChanseyIcon
+	dw TangelaIcon
+	dw KangaskhanIcon
+	dw HorseaIcon
+	dw SeadraIcon
+	dw GoldeenIcon
+	dw SeakingIcon
+	dw StaryuIcon
+	dw StarmieIcon
+	dw MrMimeIcon
+	dw ScytherIcon
+	dw JynxIcon
+	dw ElectabuzzIcon
+	dw MagmarIcon
+	dw PinsirIcon
+	dw TaurosIcon
+	dw MagikarpIcon
+	dw GyaradosIcon
+	dw LaprasIcon
+	dw DittoIcon
+	dw EeveeIcon
+	dw VaporeonIcon
+	dw JolteonIcon
+	dw FlareonIcon
+	dw PorygonIcon
+	dw OmanyteIcon
+	dw OmastarIcon
+	dw KabutoIcon
+	dw KabutopsIcon
+	dw AerodactylIcon
+	dw SnorlaxIcon
+	dw ArticunoIcon
+	dw ZapdosIcon
+	dw MoltresIcon
+	dw DratiniIcon
+	dw DragonairIcon
+	dw DragoniteIcon
+	dw MewtwoIcon
+	dw MewIcon
+	dw ChikoritaIcon
+	dw BayleefIcon
+	dw MeganiumIcon
+	dw CyndaquilIcon
+	dw QuilavaIcon
+	dw TyphlosionIcon
+	dw TotodileIcon
+	dw CroconawIcon
+	dw FeraligatrIcon
+	dw SentretIcon
+	dw FurretIcon
+	dw HoothootIcon
+	dw NoctowlIcon
+	dw LedybaIcon
+	dw LedianIcon
+	dw SpinarakIcon
+	dw AriadosIcon
+	dw CrobatIcon
+	dw ChinchouIcon
+	dw LanturnIcon
+	dw PichuIcon
+	dw CleffaIcon
+	dw IgglybuffIcon
+	dw TogepiIcon
+	dw TogeticIcon
+	dw NatuIcon
+	dw XatuIcon
+	dw MareepIcon
+	dw FlaaffyIcon
+	dw AmpharosIcon
+	dw BellossomIcon
+	dw MarillIcon
+	dw AzumarillIcon
+	dw SudowoodoIcon
+	dw PolitoedIcon
+	dw HoppipIcon
+	dw SkiploomIcon
+	dw JumpluffIcon
+	dw AipomIcon
+	dw SunkernIcon
+	dw SunfloraIcon
+	dw YanmaIcon
+	dw WooperIcon
+	dw QuagsireIcon
+	dw EspeonIcon
+	dw UmbreonIcon
+	dw MurkrowIcon
+	dw SlowkingIcon
+	dw MisdreavusIcon
+	dw UnownIcon
+	dw WobbuffetIcon
+	dw GirafarigIcon
+	dw PinecoIcon
+	dw ForretressIcon
+	dw DunsparceIcon
+	dw GligarIcon
+	dw SteelixIcon
+	dw SnubbullIcon
+	dw GranbullIcon
+	dw QwilfishIcon
+	dw ScizorIcon
+	dw ShuckleIcon
+	dw HeracrossIcon
+	dw SneaselIcon
+	dw TeddiursaIcon
+	dw UrsaringIcon
+	dw SlugmaIcon
+	dw MagcargoIcon
+	dw SwinubIcon
+	dw PiloswineIcon
+	dw CorsolaIcon
+	dw RemoraidIcon
+	dw OctilleryIcon
+	dw DelibirdIcon
+	dw MantineIcon
+	dw SkarmoryIcon
+	dw HoundourIcon
+	dw HoundoomIcon
+	dw KingdraIcon
+	dw PhanpyIcon
+	dw DonphanIcon
+	dw Porygon2Icon
+	dw StantlerIcon
+	dw SmeargleIcon
+	dw TyrogueIcon
+	dw HitmontopIcon
+	dw SmoochumIcon
+	dw ElekidIcon
+	dw MagbyIcon
+	dw MiltankIcon
+	dw BlisseyIcon
+	dw RaikouIcon
+	dw EnteiIcon
+	dw SuicuneIcon
+	dw LarvitarIcon
+	dw PupitarIcon
+	dw TyranitarIcon
+	dw LugiaIcon
+	dw HoOhIcon
+	dw CelebiIcon
+	dw EggIcon
	assert_table_length NUM_ICONS + 1

Give individual menu icons for every Pokémon.

Blank data/pokemon/menu_icons.asm, and replace it with the code below:

Click here to view code
+; party menu icons
+
+MonMenuIcons:
+	table_width 1, MonMenuIcons
+	db ICON_BULBASAUR
+	db ICON_IVYSAUR
+	db ICON_VENUSAUR
+	db ICON_CHARMANDER
+	db ICON_CHARMELEON
+	db ICON_CHARIZARD
+	db ICON_SQUIRTLE
+	db ICON_WARTORTLE
+	db ICON_BLASTOISE
+	db ICON_CATERPIE
+	db ICON_METAPOD
+	db ICON_BUTTERFREE
+	db ICON_WEEDLE
+	db ICON_KAKUNA
+	db ICON_BEEDRILL
+	db ICON_PIDGEY
+	db ICON_PIDGEOTTO
+	db ICON_PIDGEOT
+	db ICON_RATTATA
+	db ICON_RATICATE
+	db ICON_SPEAROW
+	db ICON_FEAROW
+	db ICON_EKANS
+	db ICON_ARBOK
+	db ICON_PIKACHU
+	db ICON_RAICHU
+	db ICON_SANDSHREW
+	db ICON_SANDSLASH
+	db ICON_NIDORAN_F
+	db ICON_NIDORINA
+	db ICON_NIDOQUEEN
+	db ICON_NIDORAN_M
+	db ICON_NIDORINO
+	db ICON_NIDOKING
+	db ICON_CLEFAIRY
+	db ICON_CLEFABLE
+	db ICON_VULPIX
+	db ICON_NINETALES
+	db ICON_JIGGLYPUFF
+	db ICON_WIGGLYTUFF
+	db ICON_ZUBAT
+	db ICON_GOLBAT
+	db ICON_ODDISH
+	db ICON_GLOOM
+	db ICON_VILEPLUME
+	db ICON_PARAS
+	db ICON_PARASECT
+	db ICON_VENONAT
+	db ICON_VENOMOTH
+	db ICON_DIGLETT
+	db ICON_DUGTRIO
+	db ICON_MEOWTH
+	db ICON_PERSIAN
+	db ICON_PSYDUCK
+	db ICON_GOLDUCK
+	db ICON_MANKEY
+	db ICON_PRIMEAPE
+	db ICON_GROWLITHE
+	db ICON_ARCANINE
+	db ICON_POLIWAG
+	db ICON_POLIWHIRL
+	db ICON_POLIWRATH
+	db ICON_ABRA
+	db ICON_KADABRA
+	db ICON_ALAKAZAM
+	db ICON_MACHOP
+	db ICON_MACHOKE
+	db ICON_MACHAMP
+	db ICON_BELLSPROUT
+	db ICON_WEEPINBELL
+	db ICON_VICTREEBEL
+	db ICON_TENTACOOL
+	db ICON_TENTACRUEL
+	db ICON_GEODUDE
+	db ICON_GRAVELER
+	db ICON_GOLEM
+	db ICON_PONYTA
+	db ICON_RAPIDASH
+	db ICON_SLOWPOKE
+	db ICON_SLOWBRO
+	db ICON_MAGNEMITE
+	db ICON_MAGNETON
+	db ICON_FARFETCH_D
+	db ICON_DODUO
+	db ICON_DODRIO
+	db ICON_SEEL
+	db ICON_DEWGONG
+	db ICON_GRIMER
+	db ICON_MUK
+	db ICON_SHELLDER
+	db ICON_CLOYSTER
+	db ICON_GASTLY
+	db ICON_HAUNTER
+	db ICON_GENGAR
+	db ICON_ONIX
+	db ICON_DROWZEE
+	db ICON_HYPNO
+	db ICON_KRABBY
+	db ICON_KINGLER
+	db ICON_VOLTORB
+	db ICON_ELECTRODE
+	db ICON_EXEGGCUTE
+	db ICON_EXEGGUTOR
+	db ICON_CUBONE
+	db ICON_MAROWAK
+	db ICON_HITMONLEE
+	db ICON_HITMONCHAN
+	db ICON_LICKITUNG
+	db ICON_KOFFING
+	db ICON_WEEZING
+	db ICON_RHYHORN
+	db ICON_RHYDON
+	db ICON_CHANSEY
+	db ICON_TANGELA
+	db ICON_KANGASKHAN
+	db ICON_HORSEA
+	db ICON_SEADRA
+	db ICON_GOLDEEN
+	db ICON_SEAKING
+	db ICON_STARYU
+	db ICON_STARMIE
+	db ICON_MRMIME
+	db ICON_SCYTHER
+	db ICON_JYNX
+	db ICON_ELECTABUZZ
+	db ICON_MAGMAR
+	db ICON_PINSIR
+	db ICON_TAUROS
+	db ICON_MAGIKARP
+	db ICON_GYARADOS
+	db ICON_LAPRAS
+	db ICON_DITTO
+	db ICON_EEVEE
+	db ICON_VAPOREON
+	db ICON_JOLTEON
+	db ICON_FLAREON
+	db ICON_PORYGON
+	db ICON_OMANYTE
+	db ICON_OMASTAR
+	db ICON_KABUTO
+	db ICON_KABUTOPS
+	db ICON_AERODACTYL
+	db ICON_SNORLAX
+	db ICON_ARTICUNO
+	db ICON_ZAPDOS
+	db ICON_MOLTRES
+	db ICON_DRATINI
+	db ICON_DRAGONAIR
+	db ICON_DRAGONITE
+	db ICON_MEWTWO
+	db ICON_MEW
+	db ICON_CHIKORITA
+	db ICON_BAYLEEF
+	db ICON_MEGANIUM
+	db ICON_CYNDAQUIL
+	db ICON_QUILAVA
+	db ICON_TYPHLOSION
+	db ICON_TOTODILE
+	db ICON_CROCONAW
+	db ICON_FERALIGATR
+	db ICON_SENTRET
+	db ICON_FURRET
+	db ICON_HOOTHOOT
+	db ICON_NOCTOWL
+	db ICON_LEDYBA
+	db ICON_LEDIAN
+	db ICON_SPINARAK
+	db ICON_ARIADOS
+	db ICON_CROBAT
+	db ICON_CHINCHOU
+	db ICON_LANTURN
+	db ICON_PICHU
+	db ICON_CLEFFA
+	db ICON_IGGLYBUFF
+	db ICON_TOGEPI
+	db ICON_TOGETIC
+	db ICON_NATU
+	db ICON_XATU
+	db ICON_MAREEP
+	db ICON_FLAAFFY
+	db ICON_AMPHAROS
+	db ICON_BELLOSSOM
+	db ICON_MARILL
+	db ICON_AZUMARILL
+	db ICON_SUDOWOODO
+	db ICON_POLITOED
+	db ICON_HOPPIP
+	db ICON_SKIPLOOM
+	db ICON_JUMPLUFF
+	db ICON_AIPOM
+	db ICON_SUNKERN
+	db ICON_SUNFLORA
+	db ICON_YANMA
+	db ICON_WOOPER
+	db ICON_QUAGSIRE
+	db ICON_ESPEON
+	db ICON_UMBREON
+	db ICON_MURKROW
+	db ICON_SLOWKING
+	db ICON_MISDREAVUS
+	db ICON_UNOWN
+	db ICON_WOBBUFFET
+	db ICON_GIRAFARIG
+	db ICON_PINECO
+	db ICON_FORRETRESS
+	db ICON_DUNSPARCE
+	db ICON_GLIGAR
+	db ICON_STEELIX
+	db ICON_SNUBBULL
+	db ICON_GRANBULL
+	db ICON_QWILFISH
+	db ICON_SCIZOR
+	db ICON_SHUCKLE
+	db ICON_HERACROSS
+	db ICON_SNEASEL
+	db ICON_TEDDIURSA
+	db ICON_URSARING
+	db ICON_SLUGMA
+	db ICON_MAGCARGO
+	db ICON_SWINUB
+	db ICON_PILOSWINE
+	db ICON_CORSOLA
+	db ICON_REMORAID
+	db ICON_OCTILLERY
+	db ICON_DELIBIRD
+	db ICON_MANTINE
+	db ICON_SKARMORY
+	db ICON_HOUNDOUR
+	db ICON_HOUNDOOM
+	db ICON_KINGDRA
+	db ICON_PHANPY
+	db ICON_DONPHAN
+	db ICON_PORYGON2
+	db ICON_STANTLER
+	db ICON_SMEARGLE
+	db ICON_TYROGUE
+	db ICON_HITMONTOP
+	db ICON_SMOOCHUM
+	db ICON_ELEKID
+	db ICON_MAGBY
+	db ICON_MILTANK
+	db ICON_BLISSEY
+	db ICON_RAIKOU
+	db ICON_ENTEI
+	db ICON_SUICUNE
+	db ICON_LARVITAR
+	db ICON_PUPITAR
+	db ICON_TYRANITAR
+	db ICON_LUGIA
+	db ICON_HO_OH
+	db ICON_CELEBI
+	assert_table_length NUM_POKEMON
+

But when you add all 251 icons at once, make gives an error:

ERROR: main.asm(315) -> engine/gfx/mon_icons.asm(471) -> gfx/icons.asm(42):
    Section 'bank23' is too big (max size = 0x4000 bytes).

That many icons won't fit in one ROM bank. We'll have to split them into multiple sections.

How many icons can fit in a bank? Well, a bank is $4000 = 16,384 bytes. An icon has two frames, each 16x16 pixels, encoded with two bits per pixel (hence "2bpp"), and eight bits are in a byte. So each icon uses 128 bytes, and 16,384 / 128 = 128 icons can fit in a bank. That means two banks will be enough for the 252 icons we need (251 Pokémon plus Egg).

Re-Edit gfx/icons.asm:

Click here to view code
-Icons: ; used only for BANK(Icons)
+SECTION "Mon Icons 1", ROMX

NullIcon:
BulbasaurIcon:    INCBIN "gfx/icons/bulbasaur.2bpp"
IvysaurIcon:      INCBIN "gfx/icons/ivysaur.2bpp"
VenusaurIcon:     INCBIN "gfx/icons/venusaur.2bpp"
CharmanderIcon:   INCBIN "gfx/icons/charmander.2bpp"
CharmeleonIcon:   INCBIN "gfx/icons/charmeleon.2bpp"
CharizardIcon:    INCBIN "gfx/icons/charizard.2bpp"
SquirtleIcon:     INCBIN "gfx/icons/squirtle.2bpp"
WartortleIcon:    INCBIN "gfx/icons/wartortle.2bpp"
BlastoiseIcon:    INCBIN "gfx/icons/blastoise.2bpp"
CaterpieIcon:     INCBIN "gfx/icons/caterpie.2bpp"
MetapodIcon:      INCBIN "gfx/icons/metapod.2bpp"
ButterfreeIcon:   INCBIN "gfx/icons/butterfree.2bpp"
WeedleIcon:       INCBIN "gfx/icons/weedle.2bpp"
KakunaIcon:       INCBIN "gfx/icons/kakuna.2bpp"
BeedrillIcon:     INCBIN "gfx/icons/beedrill.2bpp"
PidgeyIcon:       INCBIN "gfx/icons/pidgey.2bpp"
PidgeottoIcon:    INCBIN "gfx/icons/pidgeotto.2bpp"
PidgeotIcon:      INCBIN "gfx/icons/pidgeot.2bpp"
RattataIcon:      INCBIN "gfx/icons/rattata.2bpp"
RaticateIcon:     INCBIN "gfx/icons/raticate.2bpp"
SpearowIcon:      INCBIN "gfx/icons/spearow.2bpp"
FearowIcon:       INCBIN "gfx/icons/fearow.2bpp"
EkansIcon:        INCBIN "gfx/icons/ekans.2bpp"
ArbokIcon:        INCBIN "gfx/icons/arbok.2bpp"
PikachuIcon:      INCBIN "gfx/icons/pikachu.2bpp"
RaichuIcon:       INCBIN "gfx/icons/raichu.2bpp"
SandshrewIcon:    INCBIN "gfx/icons/sandshrew.2bpp"
SandslashIcon:    INCBIN "gfx/icons/sandslash.2bpp"
NidoranFIcon:     INCBIN "gfx/icons/nidoranf.2bpp"
NidorinaIcon:     INCBIN "gfx/icons/nidorina.2bpp"
NidoqueenIcon:    INCBIN "gfx/icons/nidoqueen.2bpp"
NidoranMIcon:     INCBIN "gfx/icons/nidoranm.2bpp"
NidorinoIcon:     INCBIN "gfx/icons/nidorino.2bpp"
NidokingIcon:     INCBIN "gfx/icons/nidoking.2bpp"
ClefairyIcon:     INCBIN "gfx/icons/clefairy.2bpp"
ClefableIcon:     INCBIN "gfx/icons/clefable.2bpp"
VulpixIcon:       INCBIN "gfx/icons/vulpix.2bpp"
NinetalesIcon:    INCBIN "gfx/icons/ninetales.2bpp"
JigglypuffIcon:   INCBIN "gfx/icons/jigglypuff.2bpp"
WigglytuffIcon:   INCBIN "gfx/icons/wigglytuff.2bpp"
ZubatIcon:        INCBIN "gfx/icons/zubat.2bpp"
GolbatIcon:       INCBIN "gfx/icons/golbat.2bpp"
OddishIcon:       INCBIN "gfx/icons/oddish.2bpp"
GloomIcon:        INCBIN "gfx/icons/gloom.2bpp"
VileplumeIcon:    INCBIN "gfx/icons/vileplume.2bpp"
ParasIcon:        INCBIN "gfx/icons/paras.2bpp"
ParasectIcon:     INCBIN "gfx/icons/parasect.2bpp"
VenonatIcon:      INCBIN "gfx/icons/venonat.2bpp"
VenomothIcon:     INCBIN "gfx/icons/venomoth.2bpp"
DiglettIcon:      INCBIN "gfx/icons/diglett.2bpp"
DugtrioIcon:      INCBIN "gfx/icons/dugtrio.2bpp"
MeowthIcon:       INCBIN "gfx/icons/meowth.2bpp"
PersianIcon:      INCBIN "gfx/icons/persian.2bpp"
PsyduckIcon:      INCBIN "gfx/icons/psyduck.2bpp"
GolduckIcon:      INCBIN "gfx/icons/golduck.2bpp"
MankeyIcon:       INCBIN "gfx/icons/mankey.2bpp"
PrimeapeIcon:     INCBIN "gfx/icons/primeape.2bpp"
GrowlitheIcon:    INCBIN "gfx/icons/growlithe.2bpp"
ArcanineIcon:     INCBIN "gfx/icons/arcanine.2bpp"
PoliwagIcon:      INCBIN "gfx/icons/poliwag.2bpp"
PoliwhirlIcon:    INCBIN "gfx/icons/poliwhirl.2bpp"
PoliwrathIcon:    INCBIN "gfx/icons/poliwrath.2bpp"
AbraIcon:         INCBIN "gfx/icons/abra.2bpp"
KadabraIcon:      INCBIN "gfx/icons/kadabra.2bpp"
AlakazamIcon:     INCBIN "gfx/icons/alakazam.2bpp"
MachopIcon:       INCBIN "gfx/icons/machop.2bpp"
MachokeIcon:      INCBIN "gfx/icons/machoke.2bpp"
MachampIcon:      INCBIN "gfx/icons/machamp.2bpp"
BellsproutIcon:   INCBIN "gfx/icons/bellsprout.2bpp"
WeepinbellIcon:   INCBIN "gfx/icons/weepinbell.2bpp"
VictreebelIcon:   INCBIN "gfx/icons/victreebel.2bpp"
TentacoolIcon:    INCBIN "gfx/icons/tentacool.2bpp"
TentacruelIcon:   INCBIN "gfx/icons/tentacruel.2bpp"
GeodudeIcon:      INCBIN "gfx/icons/geodude.2bpp"
GravelerIcon:     INCBIN "gfx/icons/graveler.2bpp"
GolemIcon:        INCBIN "gfx/icons/golem.2bpp"
PonytaIcon:       INCBIN "gfx/icons/ponyta.2bpp"
RapidashIcon:     INCBIN "gfx/icons/rapidash.2bpp"
SlowpokeIcon:     INCBIN "gfx/icons/slowpoke.2bpp"
SlowbroIcon:      INCBIN "gfx/icons/slowbro.2bpp"
MagnemiteIcon:    INCBIN "gfx/icons/magnemite.2bpp"
MagnetonIcon:     INCBIN "gfx/icons/magneton.2bpp"
FarfetchDIcon:    INCBIN "gfx/icons/farfetch_d.2bpp"
DoduoIcon:        INCBIN "gfx/icons/doduo.2bpp"
DodrioIcon:       INCBIN "gfx/icons/dodrio.2bpp"
SeelIcon:         INCBIN "gfx/icons/seel.2bpp"
DewgongIcon:      INCBIN "gfx/icons/dewgong.2bpp"
GrimerIcon:       INCBIN "gfx/icons/grimer.2bpp"
MukIcon:          INCBIN "gfx/icons/muk.2bpp"
ShellderIcon:     INCBIN "gfx/icons/shellder.2bpp"
CloysterIcon:     INCBIN "gfx/icons/cloyster.2bpp"
GastlyIcon:       INCBIN "gfx/icons/gastly.2bpp"
HaunterIcon:      INCBIN "gfx/icons/haunter.2bpp"
GengarIcon:       INCBIN "gfx/icons/gengar.2bpp"
OnixIcon:         INCBIN "gfx/icons/onix.2bpp"
DrowzeeIcon:      INCBIN "gfx/icons/drowzee.2bpp"
HypnoIcon:        INCBIN "gfx/icons/hypno.2bpp"
KrabbyIcon:       INCBIN "gfx/icons/krabby.2bpp"
KinglerIcon:      INCBIN "gfx/icons/kingler.2bpp"
VoltorbIcon:      INCBIN "gfx/icons/voltorb.2bpp"
ElectrodeIcon:    INCBIN "gfx/icons/electrode.2bpp"
ExeggcuteIcon:    INCBIN "gfx/icons/exeggcute.2bpp"
ExeggutorIcon:    INCBIN "gfx/icons/exeggutor.2bpp"
CuboneIcon:       INCBIN "gfx/icons/cubone.2bpp"
MarowakIcon:      INCBIN "gfx/icons/marowak.2bpp"
HitmonleeIcon:    INCBIN "gfx/icons/hitmonlee.2bpp"
HitmonchanIcon:   INCBIN "gfx/icons/hitmonchan.2bpp"
LickitungIcon:    INCBIN "gfx/icons/lickitung.2bpp"
KoffingIcon:      INCBIN "gfx/icons/koffing.2bpp"
WeezingIcon:      INCBIN "gfx/icons/weezing.2bpp"
RhyhornIcon:      INCBIN "gfx/icons/rhyhorn.2bpp"
RhydonIcon:       INCBIN "gfx/icons/rhydon.2bpp"
ChanseyIcon:      INCBIN "gfx/icons/chansey.2bpp"
TangelaIcon:      INCBIN "gfx/icons/tangela.2bpp"
KangaskhanIcon:   INCBIN "gfx/icons/kangaskhan.2bpp"
HorseaIcon:       INCBIN "gfx/icons/horsea.2bpp"
SeadraIcon:       INCBIN "gfx/icons/seadra.2bpp"
GoldeenIcon:      INCBIN "gfx/icons/goldeen.2bpp"
SeakingIcon:      INCBIN "gfx/icons/seaking.2bpp"
StaryuIcon:       INCBIN "gfx/icons/staryu.2bpp"
StarmieIcon:      INCBIN "gfx/icons/starmie.2bpp"
MrMimeIcon:       INCBIN "gfx/icons/mrmime.2bpp"
ScytherIcon:      INCBIN "gfx/icons/scyther.2bpp"
JynxIcon:         INCBIN "gfx/icons/jynx.2bpp"
ElectabuzzIcon:   INCBIN "gfx/icons/electabuzz.2bpp"
MagmarIcon:       INCBIN "gfx/icons/magmar.2bpp"
PinsirIcon:       INCBIN "gfx/icons/pinsir.2bpp"
TaurosIcon:       INCBIN "gfx/icons/tauros.2bpp"
+
+SECTION "Mon Icons 2", ROMX
+
MagikarpIcon:     INCBIN "gfx/icons/magikarp.2bpp"
GyaradosIcon:     INCBIN "gfx/icons/gyarados.2bpp"
LaprasIcon:       INCBIN "gfx/icons/lapras.2bpp"
DittoIcon:        INCBIN "gfx/icons/ditto.2bpp"
EeveeIcon:        INCBIN "gfx/icons/eevee.2bpp"
VaporeonIcon:     INCBIN "gfx/icons/vaporeon.2bpp"
JolteonIcon:      INCBIN "gfx/icons/jolteon.2bpp"
FlareonIcon:      INCBIN "gfx/icons/flareon.2bpp"
PorygonIcon:      INCBIN "gfx/icons/porygon.2bpp"
OmanyteIcon:      INCBIN "gfx/icons/omanyte.2bpp"
OmastarIcon:      INCBIN "gfx/icons/omastar.2bpp"
KabutoIcon:       INCBIN "gfx/icons/kabuto.2bpp"
KabutopsIcon:     INCBIN "gfx/icons/kabutops.2bpp"
AerodactylIcon:   INCBIN "gfx/icons/aerodactyl.2bpp"
SnorlaxIcon:      INCBIN "gfx/icons/snorlax.2bpp"
ArticunoIcon:     INCBIN "gfx/icons/articuno.2bpp"
ZapdosIcon:       INCBIN "gfx/icons/zapdos.2bpp"
MoltresIcon:      INCBIN "gfx/icons/moltres.2bpp"
DratiniIcon:      INCBIN "gfx/icons/dratini.2bpp"
DragonairIcon:    INCBIN "gfx/icons/dragonair.2bpp"
DragoniteIcon:    INCBIN "gfx/icons/dragonite.2bpp"
MewtwoIcon:       INCBIN "gfx/icons/mewtwo.2bpp"
MewIcon:          INCBIN "gfx/icons/mew.2bpp"
ChikoritaIcon:    INCBIN "gfx/icons/chikorita.2bpp"
BayleefIcon:      INCBIN "gfx/icons/bayleef.2bpp"
MeganiumIcon:     INCBIN "gfx/icons/meganium.2bpp"
CyndaquilIcon:    INCBIN "gfx/icons/cyndaquil.2bpp"
QuilavaIcon:      INCBIN "gfx/icons/quilava.2bpp"
TyphlosionIcon:   INCBIN "gfx/icons/typhlosion.2bpp"
TotodileIcon:     INCBIN "gfx/icons/totodile.2bpp"
CroconawIcon:     INCBIN "gfx/icons/croconaw.2bpp"
FeraligatrIcon:   INCBIN "gfx/icons/feraligatr.2bpp"
SentretIcon:      INCBIN "gfx/icons/sentret.2bpp"
FurretIcon:       INCBIN "gfx/icons/furret.2bpp"
HoothootIcon:     INCBIN "gfx/icons/hoothoot.2bpp"
NoctowlIcon:      INCBIN "gfx/icons/noctowl.2bpp"
LedybaIcon:       INCBIN "gfx/icons/ledyba.2bpp"
LedianIcon:       INCBIN "gfx/icons/ledian.2bpp"
SpinarakIcon:     INCBIN "gfx/icons/spinarak.2bpp"
AriadosIcon:      INCBIN "gfx/icons/ariados.2bpp"
CrobatIcon:       INCBIN "gfx/icons/crobat.2bpp"
ChinchouIcon:     INCBIN "gfx/icons/chinchou.2bpp"
LanturnIcon:      INCBIN "gfx/icons/lanturn.2bpp"
PichuIcon:        INCBIN "gfx/icons/pichu.2bpp"
CleffaIcon:       INCBIN "gfx/icons/cleffa.2bpp"
IgglybuffIcon:    INCBIN "gfx/icons/igglybuff.2bpp"
TogepiIcon:       INCBIN "gfx/icons/togepi.2bpp"
TogeticIcon:      INCBIN "gfx/icons/togetic.2bpp"
NatuIcon:         INCBIN "gfx/icons/natu.2bpp"
XatuIcon:         INCBIN "gfx/icons/xatu.2bpp"
MareepIcon:       INCBIN "gfx/icons/mareep.2bpp"
FlaaffyIcon:      INCBIN "gfx/icons/flaaffy.2bpp"
AmpharosIcon:     INCBIN "gfx/icons/ampharos.2bpp"
BellossomIcon:    INCBIN "gfx/icons/bellossom.2bpp"
MarillIcon:       INCBIN "gfx/icons/marill.2bpp"
AzumarillIcon:    INCBIN "gfx/icons/azumarill.2bpp"
SudowoodoIcon:    INCBIN "gfx/icons/sudowoodo.2bpp"
PolitoedIcon:     INCBIN "gfx/icons/politoed.2bpp"
HoppipIcon:       INCBIN "gfx/icons/hoppip.2bpp"
SkiploomIcon:     INCBIN "gfx/icons/skiploom.2bpp"
JumpluffIcon:     INCBIN "gfx/icons/jumpluff.2bpp"
AipomIcon:        INCBIN "gfx/icons/aipom.2bpp"
SunkernIcon:      INCBIN "gfx/icons/sunkern.2bpp"
SunfloraIcon:     INCBIN "gfx/icons/sunflora.2bpp"
YanmaIcon:        INCBIN "gfx/icons/yanma.2bpp"
WooperIcon:       INCBIN "gfx/icons/wooper.2bpp"
QuagsireIcon:     INCBIN "gfx/icons/quagsire.2bpp"
EspeonIcon:       INCBIN "gfx/icons/espeon.2bpp"
UmbreonIcon:      INCBIN "gfx/icons/umbreon.2bpp"
MurkrowIcon:      INCBIN "gfx/icons/murkrow.2bpp"
SlowkingIcon:     INCBIN "gfx/icons/slowking.2bpp"
MisdreavusIcon:   INCBIN "gfx/icons/misdreavus.2bpp"
UnownIcon:        INCBIN "gfx/icons/unown.2bpp"
WobbuffetIcon:    INCBIN "gfx/icons/wobbuffet.2bpp"
GirafarigIcon:    INCBIN "gfx/icons/girafarig.2bpp"
PinecoIcon:       INCBIN "gfx/icons/pineco.2bpp"
ForretressIcon:   INCBIN "gfx/icons/forretress.2bpp"
DunsparceIcon:    INCBIN "gfx/icons/dunsparce.2bpp"
GligarIcon:       INCBIN "gfx/icons/gligar.2bpp"
SteelixIcon:      INCBIN "gfx/icons/steelix.2bpp"
SnubbullIcon:     INCBIN "gfx/icons/snubbull.2bpp"
GranbullIcon:     INCBIN "gfx/icons/granbull.2bpp"
QwilfishIcon:     INCBIN "gfx/icons/qwilfish.2bpp"
ScizorIcon:       INCBIN "gfx/icons/scizor.2bpp"
ShuckleIcon:      INCBIN "gfx/icons/shuckle.2bpp"
HeracrossIcon:    INCBIN "gfx/icons/heracross.2bpp"
SneaselIcon:      INCBIN "gfx/icons/sneasel.2bpp"
TeddiursaIcon:    INCBIN "gfx/icons/teddiursa.2bpp"
UrsaringIcon:     INCBIN "gfx/icons/ursaring.2bpp"
SlugmaIcon:       INCBIN "gfx/icons/slugma.2bpp"
MagcargoIcon:     INCBIN "gfx/icons/magcargo.2bpp"
SwinubIcon:       INCBIN "gfx/icons/swinub.2bpp"
PiloswineIcon:    INCBIN "gfx/icons/piloswine.2bpp"
CorsolaIcon:      INCBIN "gfx/icons/corsola.2bpp"
RemoraidIcon:     INCBIN "gfx/icons/remoraid.2bpp"
OctilleryIcon:    INCBIN "gfx/icons/octillery.2bpp"
DelibirdIcon:     INCBIN "gfx/icons/delibird.2bpp"
MantineIcon:      INCBIN "gfx/icons/mantine.2bpp"
SkarmoryIcon:     INCBIN "gfx/icons/skarmory.2bpp"
HoundourIcon:     INCBIN "gfx/icons/houndour.2bpp"
HoundoomIcon:     INCBIN "gfx/icons/houndoom.2bpp"
KingdraIcon:      INCBIN "gfx/icons/kingdra.2bpp"
PhanpyIcon:       INCBIN "gfx/icons/phanpy.2bpp"
DonphanIcon:      INCBIN "gfx/icons/donphan.2bpp"
Porygon2Icon:     INCBIN "gfx/icons/porygon2.2bpp"
StantlerIcon:     INCBIN "gfx/icons/stantler.2bpp"
SmeargleIcon:     INCBIN "gfx/icons/smeargle.2bpp"
TyrogueIcon:      INCBIN "gfx/icons/tyrogue.2bpp"
HitmontopIcon:    INCBIN "gfx/icons/hitmontop.2bpp"
SmoochumIcon:     INCBIN "gfx/icons/smoochum.2bpp"
ElekidIcon:       INCBIN "gfx/icons/elekid.2bpp"
MagbyIcon:        INCBIN "gfx/icons/magby.2bpp"
MiltankIcon:      INCBIN "gfx/icons/miltank.2bpp"
BlisseyIcon:      INCBIN "gfx/icons/blissey.2bpp"
RaikouIcon:       INCBIN "gfx/icons/raikou.2bpp"
EnteiIcon:        INCBIN "gfx/icons/entei.2bpp"
SuicuneIcon:      INCBIN "gfx/icons/suicune.2bpp"
LarvitarIcon:     INCBIN "gfx/icons/larvitar.2bpp"
PupitarIcon:      INCBIN "gfx/icons/pupitar.2bpp"
TyranitarIcon:    INCBIN "gfx/icons/tyranitar.2bpp"
LugiaIcon:        INCBIN "gfx/icons/lugia.2bpp"
HoOhIcon:         INCBIN "gfx/icons/ho_oh.2bpp"
CelebiIcon:       INCBIN "gfx/icons/celebi.2bpp"
EggIcon:          INCBIN "gfx/icons/egg.2bpp"

One section, "Mon Icons 1", contains icons #1 to #128. The next, "Mon Icons 2", contains #129 to #251 and Egg. When you run make they'll automatically be placed in banks that fit. Make sure the species are separated in order, so that we can tell which section a Pokémon's icon belongs in just by whether its species is greater than 128.

Now edit engine/gfx/mon_icons.asm:

 LoadOverworldMonIcon:
 	ld a, e
 	call ReadMonMenuIcon
+	ld [wCurIcon], a
 	ld l, a
 	ld h, 0
 	add hl, hl
 	ld de, IconPointers
 	add hl, de
 	ld a, [hli]
 	ld e, a
 	ld d, [hl]
-	ld b, BANK(Icons)
-	ld c, 8
-	ret
+	jp GetIconBank

 ...

 GetIcon:
 ; Load icon graphics into VRAM starting from tile hl.

 	...

-	lb bc, BANK(Icons), 8
+	call GetIconBank
 	call GetGFXUnlessMobile

 	pop hl
 	ret
+
+GetIconBank:
+	ld a, [wCurIcon]
+	cp ICON_MAGIKARP ; first icon in Icons2
+	lb bc, BANK("Mon Icons 1"), 8
+	ret c
+	ld b, BANK("Mon Icons 2")
+	ret

6. Implement unique icons for Unown

As-is, every Pokémon has a unique icon aside from one unique case: Unown. Being the only Generation 2 Pokémon with different forms, it's quite an outlier, and thus requires some extra work so that each letter is assigned an icon proper.

Start by creating gfx/icons/unown_icons, and then store your Unown icons in this folder.

Next, edit gfx/icons.asm one last time:

EggIcon::          INCBIN "gfx/icons/egg.2bpp"

+
+SECTION "Unown Icons", ROMX
+
+
+UnownAIcon:       INCBIN "gfx/icons/unown_icons/unown_a.2bpp"
+UnownBIcon:       INCBIN "gfx/icons/unown_icons/unown_b.2bpp"
+UnownCIcon:       INCBIN "gfx/icons/unown_icons/unown_c.2bpp"
+UnownDIcon:       INCBIN "gfx/icons/unown_icons/unown_d.2bpp"
+UnownEIcon:       INCBIN "gfx/icons/unown_icons/unown_e.2bpp"
+UnownFIcon:       INCBIN "gfx/icons/unown_icons/unown_f.2bpp"
+UnownGIcon:       INCBIN "gfx/icons/unown_icons/unown_g.2bpp"
+UnownHIcon:       INCBIN "gfx/icons/unown_icons/unown_h.2bpp"
+UnownIIcon:       INCBIN "gfx/icons/unown_icons/unown_i.2bpp"
+UnownJIcon:       INCBIN "gfx/icons/unown_icons/unown_j.2bpp"
+UnownKIcon:       INCBIN "gfx/icons/unown_icons/unown_k.2bpp"
+UnownLIcon:       INCBIN "gfx/icons/unown_icons/unown_l.2bpp"
+UnownMIcon:       INCBIN "gfx/icons/unown_icons/unown_m.2bpp"
+UnownNIcon:       INCBIN "gfx/icons/unown_icons/unown_n.2bpp"
+UnownOIcon:       INCBIN "gfx/icons/unown_icons/unown_o.2bpp"
+UnownPIcon:       INCBIN "gfx/icons/unown_icons/unown_p.2bpp"
+UnownQIcon:       INCBIN "gfx/icons/unown_icons/unown_q.2bpp"
+UnownRIcon:       INCBIN "gfx/icons/unown_icons/unown_r.2bpp"
+UnownSIcon:       INCBIN "gfx/icons/unown_icons/unown_s.2bpp"
+UnownTIcon:       INCBIN "gfx/icons/unown_icons/unown_t.2bpp"
+UnownUIcon:       INCBIN "gfx/icons/unown_icons/unown_u.2bpp"
+UnownVIcon:       INCBIN "gfx/icons/unown_icons/unown_v.2bpp"
+UnownWIcon:       INCBIN "gfx/icons/unown_icons/unown_w.2bpp"
+UnownXIcon:       INCBIN "gfx/icons/unown_icons/unown_x.2bpp"
+UnownYIcon:       INCBIN "gfx/icons/unown_icons/unown_y.2bpp"
+UnownZIcon:       INCBIN "gfx/icons/unown_icons/unown_z.2bpp"
+

Now, create data/unown_icon_pointers.asm:

+UnownIconPointers:
+; entries correspond to ICON_* constants (see constants/icon_constants.asm)
+	table_width 2, UnownIconPointers
+	dw NullIcon
+	dw UnownAIcon
+	dw UnownBIcon
+	dw UnownCIcon
+	dw UnownDIcon
+	dw UnownEIcon
+	dw UnownFIcon
+	dw UnownGIcon
+	dw UnownHIcon
+	dw UnownIIcon
+	dw UnownJIcon
+	dw UnownKIcon
+	dw UnownLIcon
+	dw UnownMIcon
+	dw UnownNIcon
+	dw UnownOIcon
+	dw UnownPIcon
+	dw UnownQIcon
+	dw UnownRIcon
+	dw UnownSIcon
+	dw UnownTIcon
+	dw UnownUIcon
+	dw UnownVIcon
+	dw UnownWIcon
+	dw UnownXIcon
+	dw UnownYIcon
+	dw UnownZIcon
+	assert_table_length NUM_UNOWN + 1
+

Edit data/icon_pointers.asm:

	dw MisdreavusIcon  ; C8
-	dw UnownIcon       ; C9
+	dw UnownAIcon      ; C9
	dw WobbuffetIcon   ; Ca

...

	dw CelebiIcon      ; Fb
	dw EggIcon         ; Fc
	assert_table_length NUM_ICONS +1

+	dw UnownBIcon
+	dw UnownCIcon
+	dw UnownDIcon
+	dw UnownEIcon
+	dw UnownFIcon
+	dw UnownGIcon
+	dw UnownHIcon
+	dw UnownIIcon
+	dw UnownJIcon
+	dw UnownKIcon
+	dw UnownLIcon
+	dw UnownMIcon
+	dw UnownNIcon
+	dw UnownOIcon
+	dw UnownPIcon
+	dw UnownQIcon
+	dw UnownRIcon
+	dw UnownSIcon
+	dw UnownTIcon
+	dw UnownUIcon
+	dw UnownVIcon
+	dw UnownWIcon
+	dw UnownXIcon
+	dw UnownYIcon
+	dw UnownZIcon
+

Edit engine/overworld/overworld.asm:

.BreedMon1
	ld a, [wBreedMon1Species]
+	ld d, 1
	jr .Mon

.BreedMon2
	ld a, [wBreedMon2Species]
+	ld d, 2

Edit engine/movie/trade_animation.asm:

TradeAnim_TubeToOT1:
	ld a, TRADEANIM_RIGHT_ARROW
	call TradeAnim_PlaceTrademonStatsOnTubeAnim
	ld a, [wLinkTradeSendmonSpecies]
	ld [wTempIconSpecies], a
+	ld hl, wOTTrademonDVs
+	ldh a, [hSerialConnectionStatus]
+	cp USING_EXTERNAL_CLOCK
+	jr z, .player_2
+	ld hl, wPlayerTrademonDVs
+.player_2
+	ld a, [hli]
+	ld [wTempMonDVs], a
+	ld a, [hl]
+	ld [wTempMonDVs + 1], a
	xor a
	depixel 5, 11, 4, 0
	ld b, $0

...

TradeAnim_TubeToPlayer1:
	ld a, TRADEANIM_LEFT_ARROW
	call TradeAnim_PlaceTrademonStatsOnTubeAnim
	ld a, [wLinkTradeGetmonSpecies]
	ld [wTempIconSpecies], a
+	ld hl, wPlayerTrademonDVs
+	ldh a, [hSerialConnectionStatus]
+	cp USING_EXTERNAL_CLOCK
+	jr z, .player_2
+	ld hl, wOTTrademonDVs
+.player_2
+	ld a, [hli]
+	ld [wTempMonDVs], a
+	ld a, [hl]
+	ld [wTempMonDVs + 1], a
	ld a, TRADEANIMSTATE_2
	depixel 9, 18, 4, 4
	ld b, $4

Edit engine/menus/naming_screen.asm:

(Skip this step if you have already implemented colored Pokémon icons.)

NamingScreen:
	...

 .Pokemon:
	ld a, [wCurPartySpecies]
	ld [wTempIconSpecies], a

+	; Is it a PartyMon or a BoxMon?
+	ld a, [wMonType]
+	and a
+	jr z, .party_mon
+
+	ld hl, sBoxMon1DVs
+	ld a, BANK(sBox)
+	call OpenSRAM
+	jr .start
+
+.party_mon
+	ld a, MON_DVS
+	call GetPartyParamLocation
+.start
+	ld de, wTempMonDVs
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hl]
+	ld [de], a
+	ld a, [wMonType]
+	cp BOXMON
+	call z, CloseSRAM
 	ld hl, LoadMenuMonIcon
 	ld a, BANK(LoadMenuMonIcon)
 	ld e, MONICON_NAMINGSCREEN
 	rst FarCall
	...

And finally, edit engine/gfx/mon_icons.asm:

(If you've already implemented colored Pokémon icons, then skip implementing LoadPartyMenuMonIconDVs, since LoadPartyMenuMonIconColors already covers the DV check).

Click here to view code
LoadOverworldMonIcon:
	ld a, e
+	ld b, d
	call ReadMonMenuIcon
	ld [wCurIcon], a
+	cp ICON_UNOWN
+	jr nz, .not_unown
+
+	; Is it a Breedmon?
+	ld a, b
+	and a
+	jr z, .not_breedmon
+	
+	ld hl, wBreedMon1DVs
+	; Check which Breedmon we're using
+	dec a
+	jr z, .get_unown_letter
+	ld hl, wBreedMon2DVs
+.get_unown_letter
+	predef GetUnownLetter
+	ld a, [wUnownLetter]
+	ld l, a
+	ld h, 0
+	add hl, hl
+	ld de, UnownIconPointers
+	add hl, de
+	ld a, [hli]
+	ld e, a
+	ld d, [hl]
+	lb bc, BANK("Unown Icons"), 8
+	ret
+
+.not_breedmon
+	ld a, [wCurIcon]
+.not_unown
	ld l, a
	ld h, 0
	add hl, hl
	ld de, IconPointers
	add hl, de
	ld a, [hli]
	ld e, a
	ld d, [hl]
	jp GetIconBank

+LoadPartyMenuMonIconDVs:
+	push hl
+	push de
+	push bc
+	push af
+
+	ld a, [wPartyCount]
+	sub c
+	ld [wCurPartyMon], a
+	ld e, a
+	ld d, 0
+
+	ld hl, wPartySpecies
+	add hl, de
+	ld a, [hl]
+	ld [wCurPartySpecies], a
+	ld a, MON_DVS
+	call GetPartyParamLocation
+	push af
+	ld a, [wCurPartyMon]
+	swap a
+	ld d, 0
+	ld e, a
+	add hl, de
+	pop af
+	jr _FinishMenuMonIconDVs
+
+_FinishMenuMonIconDVs:
+	pop af
+	pop bc
+	pop de
+	pop hl
+	ret

...

InitPartyMenuIcon:
+	call LoadPartyMenuMonIconDVs
	ld a, [wCurIconTile]
	push af
	ldh a, [hObjectStructIndex]
	ld hl, wPartySpecies
	ld e, a
	ld d, 0
	add hl, de
	ld a, [hl]
+	push hl
	call ReadMonMenuIcon
	ld [wCurIcon], a
+	pop hl
+	ld a, MON_DVS
+	call GetPartyParamLocation
+	ld e, l
+	ld d, h
	call GetMemIconGFX
	ldh a, [hObjectStructIndex]

...

NamingScreen_InitAnimatedMonIcon:
+	ld hl, wTempMonDVs
	ld a, [wTempIconSpecies]
+	push hl
	call ReadMonMenuIcon
+	pop de
	ld [wCurIcon], a
	xor a
	call GetIconGFX
	depixel 4, 4, 4, 0

...

MoveList_InitAnimatedMonIcon:
+	ld a, MON_DVS
+	call GetPartyParamLocation
	ld a, [wTempIconSpecies]
+	push hl
	call ReadMonMenuIcon
+	pop de
	ld [wCurIcon], a
	xor a

...

Trade_LoadMonIconGFX:
	ld a, [wTempIconSpecies]
	call ReadMonMenuIcon
	ld [wCurIcon], a
	ld a, $62
	ld [wCurIconTile], a
+	ld de, wTempMonDVs
	call GetMemIconGFX
	ret

GetSpeciesIcon:
; Load species icon into VRAM at tile a
	push de
	ld a, [wTempIconSpecies]
+	push hl
	call ReadMonMenuIcon
+	pop hl
	ld [wCurIcon], a
	pop de
	ld a, e
+	ld e, l
+	ld d, h
	jr GetIconGFX

...

GetIcon:
; Load icon graphics into VRAM starting from tile hl.

; One tile is 16 bytes long.
rept 4
	add hl, hl
endr

+	push de
	ld de, vTiles0
	add hl, de
+	pop de
	push hl

; The icons are contiguous, in order and of the same
; size, so the pointer table is somewhat redundant.
+	push hl
	ld a, [wCurIcon]
+	cp ICON_UNOWN
+	jr nz, .not_unown
+	ld l, e
+	ld h, d
+	predef GetUnownLetter
+	ld a, [wUnownLetter]
+	ld l, a
+	ld h, 0
+	add hl, hl
+	ld de, UnownIconPointers
+	add hl, de
+	ld a, [hli]
+	ld e, a
+	ld d, [hl]
+	lb bc, BANK("Unown Icons"), 8
+	pop hl
+	jr .continue
+
+.not_unown
	ld l, a
	ld h, 0
	add hl, hl
	ld de, IconPointers
	add hl, de
	ld a, [hli]
	ld e, a
	ld d, [hl]
	pop hl

	call GetIconBank
+.continue
	call GetGFXUnlessMobile

	pop hl
	ret

...

INCLUDE "data/icon_pointers.asm"
+
+INCLUDE "data/unown_icon_pointers.asm"

INCLUDE "gfx/icons.asm"

Now all the icons will load correctly, in the party menu and in the overworld:

Screenshot

⚠️ **GitHub.com Fallback** ⚠️