pokemon-sprite-compression

Crates.iopokemon-sprite-compression
lib.rspokemon-sprite-compression
version0.1.2
sourcesrc
created_at2023-05-02 16:26:53.111101
updated_at2023-05-08 12:47:35.600323
descriptionA library for dealing with compressed Pokemon sprites
homepage
repositoryhttps://github.com/LinusU/pokemon-sprite-compression
max_upload_size
id854717
size30,128
Linus Unnebäck (LinusU)

documentation

README

Pokemon Sprite Compression

A library for dealing with compressed Pokemon sprites.

Implementation status:

  • Gen 1
    • Decompression
    • Compression
  • Gen 2
    • Decompression
    • Compression
  • Future generations

Installation

cargo add pokemon-sprite-compression

Usage

const rom = std::fs::read("pokeyellow.gbc").unwrap();

// Aerodactyl fossil sprite
let sprite = pokemon_sprite_compression::gen1::decompress(&rom[0x0367a1..]);
const rom = std::fs::read("pokecrystal.gbc").unwrap();

// Pikachu back sprite
let sprite = pokemon_sprite_compression::gen2::decompress(&rom[0x156ea1..]);

Acknowledgements

Huge thanks to the pret team and Andrew Ekstedt for their work on gen I decompression.

Huge thanks to wgjordan on Hacker News for reverse engineering and documenting the gen II compression algorithm. I've included a copy of the documentation in this repository for convenience, as the file doc/gen2.txt.

Commit count: 8

cargo fmt