# Sprites

## `box/<natDex>.png` — box icons, one per species (default form)

- **Source:** Pokémon Showdown!'s box icons from
  [smogon/sprites](https://github.com/smogon/sprites), `src/minisprites/pokemon/gen6/`.
  Gen 1–7 are the official 3DS box icons; Gen 8–9 (files suffixed `-vsmogon`
  upstream) are drawn by Smogon contributors in the same style, so all 1025
  share one pixel-art style.
- **Format:** 40×30 palette PNG, the original icon centred on a transparent
  canvas (padded, never scaled). Scale up in CSS with
  `image-rendering: pixelated`.
- **Licence:** Pokémon artwork © Nintendo / Creatures / GAME FREAK, used as
  fan-site material. smogon/sprites' code is MIT; its README says the licence
  for community-made sprites is "still being determined" and asks to be
  contacted before using them. That covers the Gen 8–9 icons here. Credit
  "Smogon / Pokémon Showdown!" wherever the sprites are shown.
- **Why this set:** no other public GitHub source has complete Gen 9 box icons
  in a pixel style. pokesprite and PKHeX stop at #905, and PokéAPI's
  `scarlet-violet/icons` are HD renders covering only ~810 species.
- **Rebuild:** `python3 games/pokemon/dev/scrape/sprites.py` (see `dev/scrape/README.md`).

## `shiny/<natDex>.png` — shiny sprites, one per species (default form)

- **Source:** Pokémon Showdown!'s gen5-style shiny sprites,
  `https://play.pokemonshowdown.com/sprites/gen5-shiny/<id>.png`, for all
  1025 species (id = species name, lowercase, letters and digits only:
  `mrmime`, `nidoranf`, `tapukoko`, `fluttermane`). Gen 1–5 are the official
  Black/White sprites; Gen 6–9 are drawn by Smogon / Pokémon Showdown!
  contributors in the same Gen 5 pixel style, so the whole set is one style.
- **Why not shiny box icons:** no complete shiny box-icon set exists.
  smogon/sprites' minisprites (used for `box/`) have no shiny versions, and
  pokesprite's shiny icons stop at Gen 8. Mixing them with another style
  for Gen 9 was ruled out.
- **Format:** each sprite trimmed of its transparent border and centred,
  never scaled, on one common canvas (the largest trimmed size, WxH below),
  so Pokémon keep their relative sizes. The largest sprites (Buzzwole,
  Celesteela, Guzzlord, Reshiram…) fill the full 96 px, so the canvas is
  **96×96**, the same as Showdown's. Palette PNGs, optimised with Pillow
  (~0.94 MB for all 1025). Scale up in CSS with `image-rendering: pixelated`.
- **Known gap:** Showdown has no gen5-style sprite yet for 10 Gen 9 species
  and serves a downscaled 3D render instead (soft edges, kept as RGBA):
  Pawmo, Naclstack, Wattrel, Toedscruel, Rellor, Rabsca, Farigiraf,
  Sinistcha, Ogerpon, Iron Crown. `shiny.py` lists them as a warning, and a
  `--refresh` run picks up real pixel sprites once Showdown has them.
- **Licence:** Pokémon artwork © Nintendo / Creatures / GAME FREAK, used as
  fan-site material. The Gen 6–9 sprites are community work by Smogon /
  Pokémon Showdown! contributors (same caveat as the Gen 8–9 box icons
  above). Credit "Pokémon Showdown! / Smogon" wherever they're shown.
- **Rebuild:** `python3.12 games/pokemon/dev/scrape/shiny.py` (see `dev/scrape/README.md`).

## `shiny/<natDex>-<form>.png` — shiny sprites for forms

- **Source and format:** the same Showdown gen5-style shiny set and the same
  treatment as `shiny/<natDex>.png` (trimmed, centred unscaled on the 96×96
  canvas, palette PNG where it fits), one per form in
  `data/shiny-forms.json` (docs/12, "Shiny forms"). `<form>` is the form
  part of the entry key (`201-b.png` for `unown:b`, `128-paldea-combat-breed.png`).
  The default form uses the species sprite, except Maushold
  (`925-family-of-four.png`: Showdown's base sprite is the Family of Three).
- **Gaps:** a form Showdown has no sprite for has `sprite: null` and shows
  the species sprite (currently the 54 Alcremie sweets other than
  Strawberry). Forms whose shiny sprite is identical to the species sprite
  point at it instead of a copy. The Furfrou trims, female Oinkologne,
  Artisan Poltchageist and Masterpiece Sinistcha are Showdown's downscaled
  3D-render placeholders (soft edges).
- **Licence:** as for `shiny/` above.
- **Rebuild:** `python3.12 games/pokemon/dev/scrape/shiny-forms.py` (see `dev/scrape/README.md`).
