summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlibjet <libj3t@gmail.com>2020-06-02 02:50:34 +0100
committerlibjet <libj3t@gmail.com>2020-06-02 02:50:34 +0100
commit991832399b893fc0ec92a8d67f3da134c2652674 (patch)
tree5d6f73bef566df4d766707ff13fe56ae06837e66
parent61b87613c2347ecbf767e994d264c8094133b05f (diff)
Add engine/gfx/mon_icons.asm
-rwxr-xr-xdata/icon_pointers.asm41
-rwxr-xr-xdata/pokemon/menu_icons.asm254
-rwxr-xr-xengine/gfx/mon_icons.asm337
-rwxr-xr-xgfx/icons.asm41
-rwxr-xr-xgfx/icons/bat.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/bat.pngbin0 -> 169 bytes
-rwxr-xr-xgfx/icons/bigmon.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/bigmon.pngbin0 -> 185 bytes
-rwxr-xr-xgfx/icons/bird.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/bird.pngbin0 -> 176 bytes
-rwxr-xr-xgfx/icons/blob.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/blob.pngbin0 -> 174 bytes
-rwxr-xr-xgfx/icons/bug.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/bug.pngbin0 -> 185 bytes
-rwxr-xr-xgfx/icons/bulbasaur.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/bulbasaur.pngbin0 -> 166 bytes
-rwxr-xr-xgfx/icons/caterpillar.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/caterpillar.pngbin0 -> 159 bytes
-rwxr-xr-xgfx/icons/charmander.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/charmander.pngbin0 -> 166 bytes
-rwxr-xr-xgfx/icons/clefairy.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/clefairy.pngbin0 -> 165 bytes
-rwxr-xr-xgfx/icons/diglett.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/diglett.pngbin0 -> 129 bytes
-rwxr-xr-xgfx/icons/egg.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/egg.pngbin0 -> 155 bytes
-rwxr-xr-xgfx/icons/equine.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/equine.pngbin0 -> 159 bytes
-rwxr-xr-xgfx/icons/fighter.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/fighter.pngbin0 -> 179 bytes
-rwxr-xr-xgfx/icons/fish.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/fish.pngbin0 -> 173 bytes
-rwxr-xr-xgfx/icons/fox.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/fox.pngbin0 -> 188 bytes
-rwxr-xr-xgfx/icons/geodude.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/geodude.pngbin0 -> 173 bytes
-rwxr-xr-xgfx/icons/ghost.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/ghost.pngbin0 -> 143 bytes
-rwxr-xr-xgfx/icons/gyarados.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/gyarados.pngbin0 -> 208 bytes
-rwxr-xr-xgfx/icons/ho_oh.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/ho_oh.pngbin0 -> 204 bytes
-rwxr-xr-xgfx/icons/humanshape.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/humanshape.pngbin0 -> 161 bytes
-rwxr-xr-xgfx/icons/item.2bpp1
-rwxr-xr-xgfx/icons/item.pngbin0 -> 82 bytes
-rwxr-xr-xgfx/icons/jellyfish.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/jellyfish.pngbin0 -> 172 bytes
-rwxr-xr-xgfx/icons/jigglypuff.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/jigglypuff.pngbin0 -> 165 bytes
-rwxr-xr-xgfx/icons/lapras.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/lapras.pngbin0 -> 165 bytes
-rwxr-xr-xgfx/icons/lugia.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/lugia.pngbin0 -> 185 bytes
-rwxr-xr-xgfx/icons/mail.2bpp1
-rwxr-xr-xgfx/icons/mail.pngbin0 -> 85 bytes
-rwxr-xr-xgfx/icons/monster.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/monster.pngbin0 -> 179 bytes
-rwxr-xr-xgfx/icons/moth.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/moth.pngbin0 -> 185 bytes
-rwxr-xr-xgfx/icons/oddish.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/oddish.pngbin0 -> 157 bytes
-rwxr-xr-xgfx/icons/pikachu.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/pikachu.pngbin0 -> 172 bytes
-rwxr-xr-xgfx/icons/poliwag.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/poliwag.pngbin0 -> 158 bytes
-rwxr-xr-xgfx/icons/serpent.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/serpent.pngbin0 -> 145 bytes
-rwxr-xr-xgfx/icons/shell.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/shell.pngbin0 -> 170 bytes
-rwxr-xr-xgfx/icons/slowpoke.2bpp2
-rwxr-xr-xgfx/icons/slowpoke.pngbin0 -> 183 bytes
-rwxr-xr-xgfx/icons/snorlax.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/snorlax.pngbin0 -> 165 bytes
-rwxr-xr-xgfx/icons/squirtle.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/squirtle.pngbin0 -> 170 bytes
-rwxr-xr-xgfx/icons/staryu.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/staryu.pngbin0 -> 166 bytes
-rwxr-xr-xgfx/icons/sudowoodo.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/sudowoodo.pngbin0 -> 195 bytes
-rwxr-xr-xgfx/icons/unown.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/unown.pngbin0 -> 112 bytes
-rwxr-xr-xgfx/icons/voltorb.2bppbin0 -> 128 bytes
-rwxr-xr-xgfx/icons/voltorb.pngbin0 -> 127 bytes
-rw-r--r--main.asm27
85 files changed, 679 insertions, 25 deletions
diff --git a/data/icon_pointers.asm b/data/icon_pointers.asm
new file mode 100755
index 00000000..bfe07abb
--- /dev/null
+++ b/data/icon_pointers.asm
@@ -0,0 +1,41 @@
+IconPointers:
+; entries correspond to ICON_* constants
+ 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
diff --git a/data/pokemon/menu_icons.asm b/data/pokemon/menu_icons.asm
new file mode 100755
index 00000000..f378cbfb
--- /dev/null
+++ b/data/pokemon/menu_icons.asm
@@ -0,0 +1,254 @@
+; party menu icons
+
+MonMenuIcons:
+ db ICON_BULBASAUR ; BULBASAUR
+ db ICON_BULBASAUR ; IVYSAUR
+ db ICON_BULBASAUR ; VENUSAUR
+ db ICON_CHARMANDER ; CHARMANDER
+ db ICON_CHARMANDER ; CHARMELEON
+ db ICON_BIGMON ; CHARIZARD
+ db ICON_SQUIRTLE ; SQUIRTLE
+ db ICON_SQUIRTLE ; WARTORTLE
+ db ICON_SQUIRTLE ; BLASTOISE
+ db ICON_CATERPILLAR ; CATERPIE
+ db ICON_CATERPILLAR ; METAPOD
+ db ICON_MOTH ; BUTTERFREE
+ db ICON_CATERPILLAR ; WEEDLE
+ db ICON_CATERPILLAR ; KAKUNA
+ db ICON_BUG ; BEEDRILL
+ db ICON_BIRD ; PIDGEY
+ db ICON_BIRD ; PIDGEOTTO
+ db ICON_BIRD ; PIDGEOT
+ db ICON_FOX ; RATTATA
+ db ICON_FOX ; RATICATE
+ db ICON_BIRD ; SPEAROW
+ db ICON_BIRD ; FEAROW
+ db ICON_SERPENT ; EKANS
+ db ICON_SERPENT ; ARBOK
+ db ICON_PIKACHU ; PIKACHU
+ db ICON_PIKACHU ; RAICHU
+ db ICON_MONSTER ; SANDSHREW
+ db ICON_MONSTER ; SANDSLASH
+ db ICON_FOX ; NIDORAN_F
+ db ICON_FOX ; NIDORINA
+ db ICON_MONSTER ; NIDOQUEEN
+ db ICON_FOX ; NIDORAN_M
+ db ICON_FOX ; NIDORINO
+ db ICON_MONSTER ; NIDOKING
+ db ICON_CLEFAIRY ; CLEFAIRY
+ db ICON_CLEFAIRY ; CLEFABLE
+ db ICON_FOX ; VULPIX
+ db ICON_FOX ; NINETALES
+ db ICON_JIGGLYPUFF ; JIGGLYPUFF
+ db ICON_JIGGLYPUFF ; WIGGLYTUFF
+ db ICON_BAT ; ZUBAT
+ db ICON_BAT ; GOLBAT
+ db ICON_ODDISH ; ODDISH
+ db ICON_ODDISH ; GLOOM
+ db ICON_ODDISH ; VILEPLUME
+ db ICON_BUG ; PARAS
+ db ICON_BUG ; PARASECT
+ db ICON_CATERPILLAR ; VENONAT
+ db ICON_MOTH ; VENOMOTH
+ db ICON_DIGLETT ; DIGLETT
+ db ICON_DIGLETT ; DUGTRIO
+ db ICON_FOX ; MEOWTH
+ db ICON_FOX ; PERSIAN
+ db ICON_MONSTER ; PSYDUCK
+ db ICON_MONSTER ; GOLDUCK
+ db ICON_FIGHTER ; MANKEY
+ db ICON_FIGHTER ; PRIMEAPE
+ db ICON_FOX ; GROWLITHE
+ db ICON_FOX ; ARCANINE
+ db ICON_POLIWAG ; POLIWAG
+ db ICON_POLIWAG ; POLIWHIRL
+ db ICON_POLIWAG ; POLIWRATH
+ db ICON_HUMANSHAPE ; ABRA
+ db ICON_HUMANSHAPE ; KADABRA
+ db ICON_HUMANSHAPE ; ALAKAZAM
+ db ICON_FIGHTER ; MACHOP
+ db ICON_FIGHTER ; MACHOKE
+ db ICON_FIGHTER ; MACHAMP
+ db ICON_ODDISH ; BELLSPROUT
+ db ICON_ODDISH ; WEEPINBELL
+ db ICON_ODDISH ; VICTREEBEL
+ db ICON_JELLYFISH ; TENTACOOL
+ db ICON_JELLYFISH ; TENTACRUEL
+ db ICON_GEODUDE ; GEODUDE
+ db ICON_GEODUDE ; GRAVELER
+ db ICON_GEODUDE ; GOLEM
+ db ICON_EQUINE ; PONYTA
+ db ICON_EQUINE ; RAPIDASH
+ db ICON_SLOWPOKE ; SLOWPOKE
+ db ICON_SLOWPOKE ; SLOWBRO
+ db ICON_VOLTORB ; MAGNEMITE
+ db ICON_VOLTORB ; MAGNETON
+ db ICON_BIRD ; FARFETCH_D
+ db ICON_BIRD ; DODUO
+ db ICON_BIRD ; DODRIO
+ db ICON_LAPRAS ; SEEL
+ db ICON_LAPRAS ; DEWGONG
+ db ICON_BLOB ; GRIMER
+ db ICON_BLOB ; MUK
+ db ICON_SHELL ; SHELLDER
+ db ICON_SHELL ; CLOYSTER
+ db ICON_GHOST ; GASTLY
+ db ICON_GHOST ; HAUNTER
+ db ICON_GHOST ; GENGAR
+ db ICON_SERPENT ; ONIX
+ db ICON_HUMANSHAPE ; DROWZEE
+ db ICON_HUMANSHAPE ; HYPNO
+ db ICON_SHELL ; KRABBY
+ db ICON_SHELL ; KINGLER
+ db ICON_VOLTORB ; VOLTORB
+ db ICON_VOLTORB ; ELECTRODE
+ db ICON_ODDISH ; EXEGGCUTE
+ db ICON_ODDISH ; EXEGGUTOR
+ db ICON_MONSTER ; CUBONE
+ db ICON_MONSTER ; MAROWAK
+ db ICON_FIGHTER ; HITMONLEE
+ db ICON_FIGHTER ; HITMONCHAN
+ db ICON_MONSTER ; LICKITUNG
+ db ICON_BLOB ; KOFFING
+ db ICON_BLOB ; WEEZING
+ db ICON_EQUINE ; RHYHORN
+ db ICON_MONSTER ; RHYDON
+ db ICON_CLEFAIRY ; CHANSEY
+ db ICON_ODDISH ; TANGELA
+ db ICON_MONSTER ; KANGASKHAN
+ db ICON_FISH ; HORSEA
+ db ICON_FISH ; SEADRA
+ db ICON_FISH ; GOLDEEN
+ db ICON_FISH ; SEAKING
+ db ICON_STARYU ; STARYU
+ db ICON_STARYU ; STARMIE
+ db ICON_HUMANSHAPE ; MR__MIME
+ db ICON_BUG ; SCYTHER
+ db ICON_HUMANSHAPE ; JYNX
+ db ICON_HUMANSHAPE ; ELECTABUZZ
+ db ICON_HUMANSHAPE ; MAGMAR
+ db ICON_BUG ; PINSIR
+ db ICON_EQUINE ; TAUROS
+ db ICON_FISH ; MAGIKARP
+ db ICON_GYARADOS ; GYARADOS
+ db ICON_LAPRAS ; LAPRAS
+ db ICON_BLOB ; DITTO
+ db ICON_FOX ; EEVEE
+ db ICON_FOX ; VAPOREON
+ db ICON_FOX ; JOLTEON
+ db ICON_FOX ; FLAREON
+ db ICON_VOLTORB ; PORYGON
+ db ICON_SHELL ; OMANYTE
+ db ICON_SHELL ; OMASTAR
+ db ICON_SHELL ; KABUTO
+ db ICON_SHELL ; KABUTOPS
+ db ICON_BIRD ; AERODACTYL
+ db ICON_SNORLAX ; SNORLAX
+ db ICON_BIRD ; ARTICUNO
+ db ICON_BIRD ; ZAPDOS
+ db ICON_BIRD ; MOLTRES
+ db ICON_SERPENT ; DRATINI
+ db ICON_SERPENT ; DRAGONAIR
+ db ICON_BIGMON ; DRAGONITE
+ db ICON_HUMANSHAPE ; MEWTWO
+ db ICON_HUMANSHAPE ; MEW
+ db ICON_ODDISH ; CHIKORITA
+ db ICON_ODDISH ; BAYLEEF
+ db ICON_ODDISH ; MEGANIUM
+ db ICON_FOX ; CYNDAQUIL
+ db ICON_FOX ; QUILAVA
+ db ICON_FOX ; TYPHLOSION
+ db ICON_MONSTER ; TOTODILE
+ db ICON_MONSTER ; CROCONAW
+ db ICON_MONSTER ; FERALIGATR
+ db ICON_FOX ; SENTRET
+ db ICON_FOX ; FURRET
+ db ICON_BIRD ; HOOTHOOT
+ db ICON_BIRD ; NOCTOWL
+ db ICON_BUG ; LEDYBA
+ db ICON_BUG ; LEDIAN
+ db ICON_BUG ; SPINARAK
+ db ICON_BUG ; ARIADOS
+ db ICON_BAT ; CROBAT
+ db ICON_FISH ; CHINCHOU
+ db ICON_FISH ; LANTURN
+ db ICON_PIKACHU ; PICHU
+ db ICON_CLEFAIRY ; CLEFFA
+ db ICON_JIGGLYPUFF ; IGGLYBUFF
+ db ICON_CLEFAIRY ; TOGEPI
+ db ICON_BIRD ; TOGETIC
+ db ICON_BIRD ; NATU
+ db ICON_BIRD ; XATU
+ db ICON_FOX ; MAREEP
+ db ICON_MONSTER ; FLAAFFY
+ db ICON_MONSTER ; AMPHAROS
+ db ICON_ODDISH ; BELLOSSOM
+ db ICON_JIGGLYPUFF ; MARILL
+ db ICON_JIGGLYPUFF ; AZUMARILL
+ db ICON_SUDOWOODO ; SUDOWOODO
+ db ICON_POLIWAG ; POLITOED
+ db ICON_ODDISH ; HOPPIP
+ db ICON_ODDISH ; SKIPLOOM
+ db ICON_ODDISH ; JUMPLUFF
+ db ICON_MONSTER ; AIPOM
+ db ICON_ODDISH ; SUNKERN
+ db ICON_ODDISH ; SUNFLORA
+ db ICON_BUG ; YANMA
+ db ICON_MONSTER ; WOOPER
+ db ICON_MONSTER ; QUAGSIRE
+ db ICON_FOX ; ESPEON
+ db ICON_FOX ; UMBREON
+ db ICON_BIRD ; MURKROW
+ db ICON_SLOWPOKE ; SLOWKING
+ db ICON_GHOST ; MISDREAVUS
+ db ICON_UNOWN ; UNOWN
+ db ICON_GHOST ; WOBBUFFET
+ db ICON_EQUINE ; GIRAFARIG
+ db ICON_BUG ; PINECO
+ db ICON_BUG ; FORRETRESS
+ db ICON_SERPENT ; DUNSPARCE
+ db ICON_BUG ; GLIGAR
+ db ICON_SERPENT ; STEELIX
+ db ICON_MONSTER ; SNUBBULL
+ db ICON_MONSTER ; GRANBULL
+ db ICON_FISH ; QWILFISH
+ db ICON_BUG ; SCIZOR
+ db ICON_BUG ; SHUCKLE
+ db ICON_BUG ; HERACROSS
+ db ICON_FOX ; SNEASEL
+ db ICON_MONSTER ; TEDDIURSA
+ db ICON_MONSTER ; URSARING
+ db ICON_BLOB ; SLUGMA
+ db ICON_BLOB ; MAGCARGO
+ db ICON_EQUINE ; SWINUB
+ db ICON_EQUINE ; PILOSWINE
+ db ICON_SHELL ; CORSOLA
+ db ICON_FISH ; REMORAID
+ db ICON_FISH ; OCTILLERY
+ db ICON_MONSTER ; DELIBIRD
+ db ICON_FISH ; MANTINE
+ db ICON_BIRD ; SKARMORY
+ db ICON_FOX ; HOUNDOUR
+ db ICON_FOX ; HOUNDOOM
+ db ICON_BIGMON ; KINGDRA
+ db ICON_EQUINE ; PHANPY
+ db ICON_EQUINE ; DONPHAN
+ db ICON_VOLTORB ; PORYGON2
+ db ICON_EQUINE ; STANTLER
+ db ICON_MONSTER ; SMEARGLE
+ db ICON_FIGHTER ; TYROGUE
+ db ICON_FIGHTER ; HITMONTOP
+ db ICON_HUMANSHAPE ; SMOOCHUM
+ db ICON_HUMANSHAPE ; ELEKID
+ db ICON_HUMANSHAPE ; MAGBY
+ db ICON_EQUINE ; MILTANK
+ db ICON_CLEFAIRY ; BLISSEY
+ db ICON_FOX ; RAIKOU
+ db ICON_FOX ; ENTEI
+ db ICON_FOX ; SUICUNE
+ db ICON_MONSTER ; LARVITAR
+ db ICON_MONSTER ; PUPITAR
+ db ICON_MONSTER ; TYRANITAR
+ db ICON_LUGIA ; LUGIA
+ db ICON_HO_OH ; HO_OH
+ db ICON_HUMANSHAPE ; CELEBI
diff --git a/engine/gfx/mon_icons.asm b/engine/gfx/mon_icons.asm
new file mode 100755
index 00000000..d0d3856e
--- /dev/null
+++ b/engine/gfx/mon_icons.asm
@@ -0,0 +1,337 @@
+LoadOverworldMonIcon:
+ ld a, e
+ call ReadMonMenuIcon
+ ld l, a
+ ld h, 0
+ add hl, hl
+ ld de, IconPointers
+ add hl, de
+ ld a, [hli]
+ ld e, a
+ ld d, [hl]
+ ld b, BANK(Icons)
+ ld c, 8
+ ret
+
+LoadMenuMonIcon:
+ push hl
+ push de
+ push bc
+ call .LoadIcon
+ pop bc
+ pop de
+ pop hl
+ ret
+
+.LoadIcon:
+ ld d, 0
+ ld hl, .Jumptable
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp hl
+
+.Jumptable:
+; entries correspond to MONICON_* constants
+ dw PartyMenu_InitAnimatedMonIcon ; MONICON_PARTYMENU
+ dw NamingScreen_InitAnimatedMonIcon ; MONICON_NAMINGSCREEN
+ dw MoveList_InitAnimatedMonIcon ; MONICON_MOVES
+ dw Trade_LoadMonIconGFX ; MONICON_TRADE
+
+PartyMenu_InitAnimatedMonIcon:
+ ld a, [wCurIconTile]
+ push af
+ ldh a, [hObjectStructIndexBuffer]
+ ld hl, wPartySpecies
+ ld e, a
+ ld d, 0
+ add hl, de
+ ld a, [hl]
+ call ReadMonMenuIcon
+ ld [wCurIcon], a
+ call GetMemIconGFX
+ ldh a, [hObjectStructIndexBuffer]
+; y coord
+ add a
+ add a
+ add a
+ add a
+ add $1c
+ ld d, a
+; x coord
+ ld e, $10
+; type is partymon icon
+ ld a, SPRITE_ANIM_INDEX_PARTY_MON
+ call _InitSpriteAnimStruct
+ pop af
+ ld hl, SPRITEANIMSTRUCT_TILE_ID
+ add hl, bc
+ ld [hl], a
+
+ call .SpawnItemIcon
+ call SetPartyMonIconAnimSpeed
+ ret
+
+.SpawnItemIcon:
+ push bc
+ ldh a, [hObjectStructIndexBuffer]
+ ld hl, wPartyMon1Item
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call AddNTimes
+ pop bc
+ ld a, [hl]
+ and a
+ ret z
+ push hl
+ push bc
+ ld d, a
+ callfar ItemIsMail
+ pop bc
+ pop hl
+ jr c, .mail
+ ld a, SPRITE_ANIM_FRAMESET_PARTY_MON_WITH_ITEM
+ jr .okay
+
+.mail
+ ld a, SPRITE_ANIM_FRAMESET_PARTY_MON_WITH_MAIL
+.okay
+ ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
+ add hl, bc
+ ld [hl], a
+ ret
+
+SetPartyMonIconAnimSpeed:
+ push bc
+ ldh a, [hObjectStructIndexBuffer]
+ ld b, a
+ call .getspeed
+ ld a, b
+ pop bc
+ ld hl, SPRITEANIMSTRUCT_DURATIONOFFSET
+ add hl, bc
+ ld [hl], a
+ rlca
+ rlca
+ ld hl, SPRITEANIMSTRUCT_0D
+ add hl, bc
+ ld [hl], a
+ ret
+
+.getspeed
+ farcall PlacePartymonHPBar
+ call GetHPPal
+ ld e, d
+ ld d, 0
+ ld hl, .speeds
+ add hl, de
+ ld b, [hl]
+ ret
+
+.speeds
+ db $00 ; HP_GREEN
+ db $40 ; HP_YELLOW
+ db $80 ; HP_RED
+
+NamingScreen_InitAnimatedMonIcon:
+ ld a, [wTempIconSpecies]
+ call ReadMonMenuIcon
+ ld [wCurIcon], a
+ xor a
+ call GetIconGFX
+ depixel 4, 4, 4, 0
+ ld a, SPRITE_ANIM_INDEX_PARTY_MON
+ call _InitSpriteAnimStruct
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+ add hl, bc
+ ld [hl], SPRITE_ANIM_SEQ_NULL
+ ret
+
+MoveList_InitAnimatedMonIcon:
+ ld a, [wTempIconSpecies]
+ call ReadMonMenuIcon
+ ld [wCurIcon], a
+ xor a
+ call GetIconGFX
+ ld d, 3 * 8 + 2 ; depixel 3, 4, 2, 4
+ ld e, 4 * 8 + 4
+ ld a, SPRITE_ANIM_INDEX_PARTY_MON
+ call _InitSpriteAnimStruct
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+ add hl, bc
+ ld [hl], SPRITE_ANIM_SEQ_NULL
+ ret
+
+Trade_LoadMonIconGFX:
+ ld a, [wTempIconSpecies]
+ call ReadMonMenuIcon
+ ld [wCurIcon], a
+ ld a, $62
+ ld [wCurIconTile], a
+ call GetMemIconGFX
+ ret
+
+GetSpeciesIcon:
+; Load species icon into VRAM at tile a
+ push de
+ ld a, [wTempIconSpecies]
+ call ReadMonMenuIcon
+ ld [wCurIcon], a
+ pop de
+ ld a, e
+ call GetIconGFX
+ ret
+
+GetMemIconGFX:
+ ld a, [wCurIconTile]
+GetIconGFX:
+; Load icon graphics into VRAM starting from tile a.
+ ld l, a
+ ld h, 0
+
+; One tile is 16 bytes long.
+rept 4
+ add hl, hl
+endr
+
+ ld de, vTiles0
+ add hl, de
+ push hl
+
+; The icons are contiguous, in order and of the same
+; size, so the pointer table is somewhat redundant.
+ ld a, [wCurIcon]
+ push hl
+ 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
+
+ lb bc, BANK(Icons), 8
+ call Request2bpp
+
+ pop hl
+ ld de, 8 tiles
+ add hl, de
+ ld de, HeldItemIcons
+ lb bc, BANK(HeldItemIcons), 2
+ call Request2bpp
+ ld a, [wCurIconTile]
+ add 10
+ ld [wCurIconTile], a
+ ret
+
+HeldItemIcons:
+INCBIN "gfx/icons/mail.2bpp"
+INCBIN "gfx/icons/item.2bpp"
+
+FreezeMonIcons:
+ ld hl, wSpriteAnimationStructs
+ ld e, PARTY_LENGTH
+ ld a, [wMenuCursorY]
+ ld d, a
+.loop
+ ld a, [hl]
+ and a
+ jr z, .next
+ cp d
+ jr z, .loadwithtwo
+ ld a, SPRITE_ANIM_SEQ_NULL
+ jr .ok
+
+.loadwithtwo
+ ld a, SPRITE_ANIM_SEQ_PARTY_MON_SWITCH
+
+.ok
+ push hl
+ ld c, l
+ ld b, h
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+ add hl, bc
+ ld [hl], a
+ pop hl
+
+.next
+ ld bc, $10
+ add hl, bc
+ dec e
+ jr nz, .loop
+ ret
+
+UnfreezeMonIcons:
+ ld hl, wSpriteAnimationStructs
+ ld e, PARTY_LENGTH
+.loop
+ ld a, [hl]
+ and a
+ jr z, .next
+ push hl
+ ld c, l
+ ld b, h
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+ add hl, bc
+ ld [hl], SPRITE_ANIM_SEQ_PARTY_MON
+ pop hl
+.next
+ ld bc, $10
+ add hl, bc
+ dec e
+ jr nz, .loop
+ ret
+
+HoldSwitchmonIcon:
+ ld hl, wSpriteAnimationStructs
+ ld e, PARTY_LENGTH
+ ld a, [wSwitchMon]
+ ld d, a
+.loop
+ ld a, [hl]
+ and a
+ jr z, .next
+ cp d
+ jr z, .is_switchmon
+ ld a, SPRITE_ANIM_SEQ_PARTY_MON_SELECTED
+ jr .join_back
+
+.is_switchmon
+ ld a, SPRITE_ANIM_SEQ_PARTY_MON_SWITCH
+.join_back
+ push hl
+ ld c, l
+ ld b, h
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+ add hl, bc
+ ld [hl], a
+ pop hl
+.next
+ ld bc, $10
+ add hl, bc
+ dec e
+ jr nz, .loop
+ ret
+
+ReadMonMenuIcon:
+ cp EGG
+ jr z, .egg
+ dec a
+ ld hl, MonMenuIcons
+ ld e, a
+ ld d, 0
+ add hl, de
+ ld a, [hl]
+ ret
+.egg
+ ld a, ICON_EGG
+ ret
+
+INCLUDE "data/pokemon/menu_icons.asm"
+
+INCLUDE "data/icon_pointers.asm"
+
+INCLUDE "gfx/icons.asm"
diff --git a/gfx/icons.asm b/gfx/icons.asm
new file mode 100755
index 00000000..c664516f
--- /dev/null
+++ b/gfx/icons.asm
@@ -0,0 +1,41 @@
+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"
diff --git a/gfx/icons/bat.2bpp b/gfx/icons/bat.2bpp
new file mode 100755
index 00000000..0e5cd7d4
--- /dev/null
+++ b/gfx/icons/bat.2bpp
Binary files differ
diff --git a/gfx/icons/bat.png b/gfx/icons/bat.png
new file mode 100755
index 00000000..3ea2ea83
--- /dev/null
+++ b/gfx/icons/bat.png
Binary files differ
diff --git a/gfx/icons/bigmon.2bpp b/gfx/icons/bigmon.2bpp
new file mode 100755
index 00000000..6883bd80
--- /dev/null
+++ b/gfx/icons/bigmon.2bpp
Binary files differ
diff --git a/gfx/icons/bigmon.png b/gfx/icons/bigmon.png
new file mode 100755
index 00000000..4a77f1ec
--- /dev/null
+++ b/gfx/icons/bigmon.png
Binary files differ
diff --git a/gfx/icons/bird.2bpp b/gfx/icons/bird.2bpp
new file mode 100755
index 00000000..fb1793da
--- /dev/null
+++ b/gfx/icons/bird.2bpp
Binary files differ
diff --git a/gfx/icons/bird.png b/gfx/icons/bird.png
new file mode 100755
index 00000000..e13bc6cb
--- /dev/null
+++ b/gfx/icons/bird.png
Binary files differ
diff --git a/gfx/icons/blob.2bpp b/gfx/icons/blob.2bpp
new file mode 100755
index 00000000..a855f008
--- /dev/null
+++ b/gfx/icons/blob.2bpp
Binary files differ
diff --git a/gfx/icons/blob.png b/gfx/icons/blob.png
new file mode 100755
index 00000000..aef74ae6
--- /dev/null
+++ b/gfx/icons/blob.png
Binary files differ
diff --git a/gfx/icons/bug.2bpp b/gfx/icons/bug.2bpp
new file mode 100755
index 00000000..e57e4c80
--- /dev/null
+++ b/gfx/icons/bug.2bpp
Binary files differ
diff --git a/gfx/icons/bug.png b/gfx/icons/bug.png
new file mode 100755
index 00000000..97504f72
--- /dev/null
+++ b/gfx/icons/bug.png
Binary files differ
diff --git a/gfx/icons/bulbasaur.2bpp b/gfx/icons/bulbasaur.2bpp
new file mode 100755
index 00000000..56dd284c
--- /dev/null
+++ b/gfx/icons/bulbasaur.2bpp
Binary files differ
diff --git a/gfx/icons/bulbasaur.png b/gfx/icons/bulbasaur.png
new file mode 100755
index 00000000..1de6636f
--- /dev/null
+++ b/gfx/icons/bulbasaur.png
Binary files differ
diff --git a/gfx/icons/caterpillar.2bpp b/gfx/icons/caterpillar.2bpp
new file mode 100755
index 00000000..964b6a6a
--- /dev/null
+++ b/gfx/icons/caterpillar.2bpp
Binary files differ
diff --git a/gfx/icons/caterpillar.png b/gfx/icons/caterpillar.png
new file mode 100755
index 00000000..85558104
--- /dev/null
+++ b/gfx/icons/caterpillar.png
Binary files differ
diff --git a/gfx/icons/charmander.2bpp b/gfx/icons/charmander.2bpp
new file mode 100755
index 00000000..4e218263
--- /dev/null
+++ b/gfx/icons/charmander.2bpp
Binary files differ
diff --git a/gfx/icons/charmander.png b/gfx/icons/charmander.png
new file mode 100755
index 00000000..3d85f131
--- /dev/null
+++ b/gfx/icons/charmander.png
Binary files differ
diff --git a/gfx/icons/clefairy.2bpp b/gfx/icons/clefairy.2bpp
new file mode 100755
index 00000000..6a5aed32
--- /dev/null
+++ b/gfx/icons/clefairy.2bpp
Binary files differ
diff --git a/gfx/icons/clefairy.png b/gfx/icons/clefairy.png
new file mode 100755
index 00000000..0017d9dd
--- /dev/null
+++ b/gfx/icons/clefairy.png
Binary files differ
diff --git a/gfx/icons/diglett.2bpp b/gfx/icons/diglett.2bpp
new file mode 100755
index 00000000..6a997c1c
--- /dev/null
+++ b/gfx/icons/diglett.2bpp
Binary files differ
diff --git a/gfx/icons/diglett.png b/gfx/icons/diglett.png
new file mode 100755
index 00000000..307181f7
--- /dev/null
+++ b/gfx/icons/diglett.png
Binary files differ
diff --git a/gfx/icons/egg.2bpp b/gfx/icons/egg.2bpp
new file mode 100755
index 00000000..03a62377
--- /dev/null
+++ b/gfx/icons/egg.2bpp
Binary files differ
diff --git a/gfx/icons/egg.png b/gfx/icons/egg.png
new file mode 100755
index 00000000..129346fd
--- /dev/null
+++ b/gfx/icons/egg.png
Binary files differ
diff --git a/gfx/icons/equine.2bpp b/gfx/icons/equine.2bpp
new file mode 100755
index 00000000..8853b5bd
--- /dev/null
+++ b/gfx/icons/equine.2bpp
Binary files differ
diff --git a/gfx/icons/equine.png b/gfx/icons/equine.png
new file mode 100755
index 00000000..b3da7181
--- /dev/null
+++ b/gfx/icons/equine.png
Binary files differ
diff --git a/gfx/icons/fighter.2bpp b/gfx/icons/fighter.2bpp
new file mode 100755
index 00000000..671b7e8a
--- /dev/null
+++ b/gfx/icons/fighter.2bpp
Binary files differ
diff --git a/gfx/icons/fighter.png b/gfx/icons/fighter.png
new file mode 100755
index 00000000..9deab976
--- /dev/null
+++ b/gfx/icons/fighter.png
Binary files differ
diff --git a/gfx/icons/fish.2bpp b/gfx/icons/fish.2bpp
new file mode 100755
index 00000000..e99315b5
--- /dev/null
+++ b/gfx/icons/fish.2bpp
Binary files differ
diff --git a/gfx/icons/fish.png b/gfx/icons/fish.png
new file mode 100755
index 00000000..35dbb1d2
--- /dev/null
+++ b/gfx/icons/fish.png
Binary files differ
diff --git a/gfx/icons/fox.2bpp b/gfx/icons/fox.2bpp
new file mode 100755
index 00000000..bbe04c03
--- /dev/null
+++ b/gfx/icons/fox.2bpp
Binary files differ
diff --git a/gfx/icons/fox.png b/gfx/icons/fox.png
new file mode 100755
index 00000000..0419c87c
--- /dev/null
+++ b/gfx/icons/fox.png
Binary files differ
diff --git a/gfx/icons/geodude.2bpp b/gfx/icons/geodude.2bpp
new file mode 100755
index 00000000..ff8bdfde
--- /dev/null
+++ b/gfx/icons/geodude.2bpp
Binary files differ
diff --git a/gfx/icons/geodude.png b/gfx/icons/geodude.png
new file mode 100755
index 00000000..02db8771
--- /dev/null
+++ b/gfx/icons/geodude.png
Binary files differ
diff --git a/gfx/icons/ghost.2bpp b/gfx/icons/ghost.2bpp
new file mode 100755
index 00000000..d47e8b62
--- /dev/null
+++ b/gfx/icons/ghost.2bpp
Binary files differ
diff --git a/gfx/icons/ghost.png b/gfx/icons/ghost.png
new file mode 100755
index 00000000..7ecf8ed0
--- /dev/null
+++ b/gfx/icons/ghost.png
Binary files differ
diff --git a/gfx/icons/gyarados.2bpp b/gfx/icons/gyarados.2bpp
new file mode 100755
index 00000000..ffe536ad
--- /dev/null
+++ b/gfx/icons/gyarados.2bpp
Binary files differ
diff --git a/gfx/icons/gyarados.png b/gfx/icons/gyarados.png
new file mode 100755
index 00000000..fad5d8ae
--- /dev/null
+++ b/gfx/icons/gyarados.png
Binary files differ
diff --git a/gfx/icons/ho_oh.2bpp b/gfx/icons/ho_oh.2bpp
new file mode 100755
index 00000000..db4277a3
--- /dev/null
+++ b/gfx/icons/ho_oh.2bpp
Binary files differ
diff --git a/gfx/icons/ho_oh.png b/gfx/icons/ho_oh.png
new file mode 100755
index 00000000..6ee91781
--- /dev/null
+++ b/gfx/icons/ho_oh.png
Binary files differ
diff --git a/gfx/icons/humanshape.2bpp b/gfx/icons/humanshape.2bpp
new file mode 100755
index 00000000..4dbbac0c
--- /dev/null
+++ b/gfx/icons/humanshape.2bpp
Binary files differ
diff --git a/gfx/icons/humanshape.png b/gfx/icons/humanshape.png
new file mode 100755
index 00000000..f5d0b929
--- /dev/null
+++ b/gfx/icons/humanshape.png
Binary files differ
diff --git a/gfx/icons/item.2bpp b/gfx/icons/item.2bpp
new file mode 100755
index 00000000..5d47aba7
--- /dev/null
+++ b/gfx/icons/item.2bpp
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/gfx/icons/item.png b/gfx/icons/item.png
new file mode 100755
index 00000000..a47d5500
--- /dev/null
+++ b/gfx/icons/item.png
Binary files differ
diff --git a/gfx/icons/jellyfish.2bpp b/gfx/icons/jellyfish.2bpp
new file mode 100755
index 00000000..cfda6ecc
--- /dev/null
+++ b/gfx/icons/jellyfish.2bpp
Binary files differ
diff --git a/gfx/icons/jellyfish.png b/gfx/icons/jellyfish.png
new file mode 100755
index 00000000..8583d5cd
--- /dev/null
+++ b/gfx/icons/jellyfish.png
Binary files differ
diff --git a/gfx/icons/jigglypuff.2bpp b/gfx/icons/jigglypuff.2bpp
new file mode 100755
index 00000000..bc00c535
--- /dev/null
+++ b/gfx/icons/jigglypuff.2bpp
Binary files differ
diff --git a/gfx/icons/jigglypuff.png b/gfx/icons/jigglypuff.png
new file mode 100755
index 00000000..70f87b0d
--- /dev/null
+++ b/gfx/icons/jigglypuff.png
Binary files differ
diff --git a/gfx/icons/lapras.2bpp b/gfx/icons/lapras.2bpp
new file mode 100755
index 00000000..47684bae
--- /dev/null
+++ b/gfx/icons/lapras.2bpp
Binary files differ
diff --git a/gfx/icons/lapras.png b/gfx/icons/lapras.png
new file mode 100755
index 00000000..89ad063d
--- /dev/null
+++ b/gfx/icons/lapras.png
Binary files differ
diff --git a/gfx/icons/lugia.2bpp b/gfx/icons/lugia.2bpp
new file mode 100755
index 00000000..fc146754
--- /dev/null
+++ b/gfx/icons/lugia.2bpp
Binary files differ
diff --git a/gfx/icons/lugia.png b/gfx/icons/lugia.png
new file mode 100755
index 00000000..56dbf283
--- /dev/null
+++ b/gfx/icons/lugia.png
Binary files differ
diff --git a/gfx/icons/mail.2bpp b/gfx/icons/mail.2bpp
new file mode 100755
index 00000000..a04f4eff
--- /dev/null
+++ b/gfx/icons/mail.2bpp
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/gfx/icons/mail.png b/gfx/icons/mail.png
new file mode 100755
index 00000000..53db461e
--- /dev/null
+++ b/gfx/icons/mail.png
Binary files differ
diff --git a/gfx/icons/monster.2bpp b/gfx/icons/monster.2bpp
new file mode 100755
index 00000000..ce8863cd
--- /dev/null
+++ b/gfx/icons/monster.2bpp
Binary files differ
diff --git a/gfx/icons/monster.png b/gfx/icons/monster.png
new file mode 100755
index 00000000..f97c67b6
--- /dev/null
+++ b/gfx/icons/monster.png
Binary files differ
diff --git a/gfx/icons/moth.2bpp b/gfx/icons/moth.2bpp
new file mode 100755
index 00000000..96d5d42f
--- /dev/null
+++ b/gfx/icons/moth.2bpp
Binary files differ
diff --git a/gfx/icons/moth.png b/gfx/icons/moth.png
new file mode 100755
index 00000000..f44440f5
--- /dev/null
+++ b/gfx/icons/moth.png
Binary files differ
diff --git a/gfx/icons/oddish.2bpp b/gfx/icons/oddish.2bpp
new file mode 100755
index 00000000..c9c7665e
--- /dev/null
+++ b/gfx/icons/oddish.2bpp
Binary files differ
diff --git a/gfx/icons/oddish.png b/gfx/icons/oddish.png
new file mode 100755
index 00000000..c069bd44
--- /dev/null
+++ b/gfx/icons/oddish.png
Binary files differ
diff --git a/gfx/icons/pikachu.2bpp b/gfx/icons/pikachu.2bpp
new file mode 100755
index 00000000..ec73af11
--- /dev/null
+++ b/gfx/icons/pikachu.2bpp
Binary files differ
diff --git a/gfx/icons/pikachu.png b/gfx/icons/pikachu.png
new file mode 100755
index 00000000..7b7d23db
--- /dev/null
+++ b/gfx/icons/pikachu.png
Binary files differ
diff --git a/gfx/icons/poliwag.2bpp b/gfx/icons/poliwag.2bpp
new file mode 100755
index 00000000..3d3da674
--- /dev/null
+++ b/gfx/icons/poliwag.2bpp
Binary files differ
diff --git a/gfx/icons/poliwag.png b/gfx/icons/poliwag.png
new file mode 100755
index 00000000..b6b63a81
--- /dev/null
+++ b/gfx/icons/poliwag.png
Binary files differ
diff --git a/gfx/icons/serpent.2bpp b/gfx/icons/serpent.2bpp
new file mode 100755
index 00000000..4be1a62a
--- /dev/null
+++ b/gfx/icons/serpent.2bpp
Binary files differ
diff --git a/gfx/icons/serpent.png b/gfx/icons/serpent.png
new file mode 100755
index 00000000..de575f08
--- /dev/null
+++ b/gfx/icons/serpent.png
Binary files differ
diff --git a/gfx/icons/shell.2bpp b/gfx/icons/shell.2bpp
new file mode 100755
index 00000000..9e9dd787
--- /dev/null
+++ b/gfx/icons/shell.2bpp
Binary files differ
diff --git a/gfx/icons/shell.png b/gfx/icons/shell.png
new file mode 100755
index 00000000..4daf2763
--- /dev/null
+++ b/gfx/icons/shell.png
Binary files differ
diff --git a/gfx/icons/slowpoke.2bpp b/gfx/icons/slowpoke.2bpp
new file mode 100755
index 00000000..045980e5
--- /dev/null
+++ b/gfx/icons/slowpoke.2bpp
@@ -0,0 +1,2 @@
+88GP|c<+<#@O88|xx?  ? ? pp#?(?>1? ?'
+><< ? ? pp \ No newline at end of file
diff --git a/gfx/icons/slowpoke.png b/gfx/icons/slowpoke.png
new file mode 100755
index 00000000..221f3f7a
--- /dev/null
+++ b/gfx/icons/slowpoke.png
Binary files differ
diff --git a/gfx/icons/snorlax.2bpp b/gfx/icons/snorlax.2bpp
new file mode 100755
index 00000000..1adb5c84
--- /dev/null
+++ b/gfx/icons/snorlax.2bpp
Binary files differ
diff --git a/gfx/icons/snorlax.png b/gfx/icons/snorlax.png
new file mode 100755
index 00000000..f2c1b0b7
--- /dev/null
+++ b/gfx/icons/snorlax.png
Binary files differ
diff --git a/gfx/icons/squirtle.2bpp b/gfx/icons/squirtle.2bpp
new file mode 100755
index 00000000..b6558faa
--- /dev/null
+++ b/gfx/icons/squirtle.2bpp
Binary files differ
diff --git a/gfx/icons/squirtle.png b/gfx/icons/squirtle.png
new file mode 100755
index 00000000..614aa21b
--- /dev/null
+++ b/gfx/icons/squirtle.png
Binary files differ
diff --git a/gfx/icons/staryu.2bpp b/gfx/icons/staryu.2bpp
new file mode 100755
index 00000000..890cfe20
--- /dev/null
+++ b/gfx/icons/staryu.2bpp
Binary files differ
diff --git a/gfx/icons/staryu.png b/gfx/icons/staryu.png
new file mode 100755
index 00000000..52361c78
--- /dev/null
+++ b/gfx/icons/staryu.png
Binary files differ
diff --git a/gfx/icons/sudowoodo.2bpp b/gfx/icons/sudowoodo.2bpp
new file mode 100755
index 00000000..1c939093
--- /dev/null
+++ b/gfx/icons/sudowoodo.2bpp
Binary files differ
diff --git a/gfx/icons/sudowoodo.png b/gfx/icons/sudowoodo.png
new file mode 100755
index 00000000..d115356b
--- /dev/null
+++ b/gfx/icons/sudowoodo.png
Binary files differ
diff --git a/gfx/icons/unown.2bpp b/gfx/icons/unown.2bpp
new file mode 100755
index 00000000..b1cddd8b
--- /dev/null
+++ b/gfx/icons/unown.2bpp
Binary files differ
diff --git a/gfx/icons/unown.png b/gfx/icons/unown.png
new file mode 100755
index 00000000..0a4d0e42
--- /dev/null
+++ b/gfx/icons/unown.png
Binary files differ
diff --git a/gfx/icons/voltorb.2bpp b/gfx/icons/voltorb.2bpp
new file mode 100755
index 00000000..b75cafe3
--- /dev/null
+++ b/gfx/icons/voltorb.2bpp
Binary files differ
diff --git a/gfx/icons/voltorb.png b/gfx/icons/voltorb.png
new file mode 100755
index 00000000..ef289541
--- /dev/null
+++ b/gfx/icons/voltorb.png
Binary files differ
diff --git a/main.asm b/main.asm
index 9005fb38..c43f52b0 100644
--- a/main.asm
+++ b/main.asm
@@ -238,38 +238,15 @@ INCLUDE "engine/battle/battle_transition.asm"
INCLUDE "engine/events/field_moves.asm"
INCLUDE "engine/events/magnet_train.asm"
INCLUDE "engine/gfx/sprites.asm"
+INCLUDE "engine/gfx/mon_icons.asm"
-LoadOverworldMonIcon::
-IF DEF(_GOLD)
- dr $8e78b, $8e79f
-LoadMenuMonIcon::
- dr $8e79f, $8e88f
-GetSpeciesIcon::
- dr $8e88f, $8e8fb
-FreezeMonIcons::
- dr $8e8fb, $8e922
-UnfreezeMonIcons::
- dr $8e922, $8e93d
-HoldSwitchmonIcon::
- dr $8e93d, $8fdbe
InitDisplayForHallOfFame::
+IF DEF(_GOLD)
dr $8fdbe, $8fdff
InitDisplayForRedCredits::
dr $8fdff, $8fe43
ELIF DEF(_SILVER)
- dr $8e771, $8e785
-LoadMenuMonIcon::
- dr $8e785, $8e875
-GetSpeciesIcon::
- dr $8e875, $8e8e1
-FreezeMonIcons::
- dr $8e8e1, $8e908
-UnfreezeMonIcons::
- dr $8e908, $8e923
-HoldSwitchmonIcon::
- dr $8e923, $8fda4
-InitDisplayForHallOfFame::
dr $8fda4, $8fde5
InitDisplayForRedCredits::
dr $8fde5, $8fe43