The Smogon / Pokémon Showdown! sprite repository
Go to file
Christopher Monsanto dcfbe0cfe0 Add gendeploy script
2020-04-29 07:44:09 -04:00
src Symlink shiny hacked Pikachus 2020-04-28 00:08:28 -04:00
tools Add gendeploy script 2020-04-29 07:44:09 -04:00
util Encode space as _, change escape to __ 2020-04-16 19:03:01 -04:00
.gitignore Add PS spritesheet generator tool 2020-04-16 02:08:29 -04:00
pnpm-lock.yaml Add tupctime utility 2020-04-29 07:41:40 -04:00
pnpm-workspace.yaml Add tupctime utility 2020-04-29 07:41:40 -04:00
README.md Fix README?? 2020-04-17 01:29:15 -04:00
Tupfile.ini Add models & skeleton build 2020-04-12 23:21:02 -04:00
Tupfile.lua Add AFD sprites 2020-04-17 01:55:53 -04:00

Pokémon Sprites

The Smogon / Pokémon Showdown! sprite repository.

Installation

This project depends on

Windows

Windows binaries of these dependencies can be found on the download pages of the sites listed above.

Linux

TODO: include installation instructions for tup given the Ubuntu PPA is defunct

$ sudo apt install nodejs graphicsmagick advancecomp
$ sudo npm install -g pnpm

macOS

Using brew on a macOS:

$ brew cask install osxfuse
$ brew install tup graphicsmagick advancecomp

Building

Install dependencies once with pnpm install. Then, to build:

$ tup

Filename Scheme

Pokemon sprite filenames are in a 1-to-1 correspondence with the Pokemon's name, for ease of processing. Filenames may be directly substituted in shell commands without escaping. This naming scheme means that some of the filenames in src/ are a little awkward looking to humans, but it means that no additional data beyond what is encoded in the filesystem is required to determine the correct name for any given Pokémon.

  • Filenames must conform to the POSIX portable filename character set, [0-9a-zA-Z-._]. To ensure this, we encode filenames according to the following rules. Characters in [0-9a-zA-Z-.] are left as-is. Spaces are converted to an underscore. Other characters are escaped using two underscores and four hex characters, similar to JavaScript Unicode escapes. (example: Flabébé -> Flabe__0301be__0301)

    The following JS functions may be useful:

    function encode(s) {
       return s.replace(/[^0-9a-zA-Z-. ]/g, c => '__' + c.charCodeAt(0).toString(16).padStart(4, '0')).replace(" ", "_");
    }
    
    function decode(s) {
       return s.replace(/__(....)/g, (_, m) => String.fromCharCode(parseInt(m, 16))).replace("_", " ");
    }
    
  • Formes are separated with two dashes from their base. (example: Necrozma--Dawn-Wings)

  • Cosmetic female formes are --Female instead of --F, so that you may distinguish it from Unown.

License

All code in this repository is licensed under the MIT License.

The sprites themselves are property of Nintendo / Game Freak / The Pokémon Company, though Black & White sprites for Pokémon from later generations were created by artists in the community. The license for these community-created sprites is still being determined and may change in the future, but in the meantime please talk to use first before using them.