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.
- Define an icon constant
- Design its graphics
- Include and point to the graphics
- Use the icon for a Pokémon
- How to add a unique icon for each Pokémon
- Implement unique icons for Unown
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
Create 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.
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"
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!
It's common to want a unique icon for each Pokémon, like the ones from this set (here are its still frames):
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
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: