This is a project for fun based on the Pokémon Sprite Decompression Explained video by the Retro Games Mechanics Explained YouTube channel. The goal is to reproduce the image compression and decompression algorithm used in the Pokémon Blue (which I played), Red and Yellow games for the Nintendo Game Boy.
Progress: Should work for all valid sprites and some of the glitched Pokémon (MissingNo confirmed to work).
Core functions:
- Implement bitwise stream reader
- Implement basic functional decompression
- Implement delta / XOR decoding based on the mode
- Implement final image output from the two bit planes
Maybe someday:
- Clean up, test, and document
- Implement 7 x 7 buffer with the correct tiles position
- Correctly implement the full continuous memory buffer
- Attempt to reproduce the
MISSINGNO.
sprite glitch - Implement compression
Practically 100% of what I'm attempting to reproduce has been researched and explained by Alex "Dotsarecool" Losego. They have also made a far better interactive online tool for playing around with the compression algorithm of the game.
Copyright ©2020 Xavier Villaneau, distributed under the Mozilla Public License 2.0
Pokémon is a registered trademark of Nintendo.