
Cross Gate (魔力宝贝) was one of the most influential MMORPGs in Taiwan and China during the early 2000s. As someone who spent countless hours collecting pets in this game during my childhood, I recently embarked on a nostalgia-driven project: extracting all the pet sprites from the game files and building a modern web viewer to browse them.
Game resources from the early 2000s are notoriously difficult to work with. Cross Gate uses proprietary binary formats for its graphics and animation data:
The compression format is a custom RLE implementation with multiple encoding modes (literal, repeat, transparent) and variable-length counters.
Using AI-assisted development (Claude Code and Antigravity), I built a Python extraction pipeline:
Each pet has up to 10 actions (Idle, Walk, Attack, Defend, Cast, etc.) and 8 directions, resulting in potentially 80 GIF animations per pet.
I built a Next.js web application to browse the extracted pets:
image-rendering: pixelated to preserve the retro aestheticThis project was made possible by the cgg-viewer project, which provided the foundational understanding of Cross Gate’s binary file formats and RLE decompression algorithm. The original Python implementation by the cgg-viewer author was invaluable for understanding how to correctly parse GraphicInfo, AnimeInfo, and palette files.
You can try it out at https://1203906e.cross-gate-pets.pages.dev/.

Cross Gate (魔力宝贝) was one of the most influential MMORPGs in Taiwan and China during the early 2000s. As someone who spent countless hours collecting pets in this game during my childhood, I recently embarked on a nostalgia-driven project: extracting all the pet sprites from the game files and building a modern web viewer to browse them.
Game resources from the early 2000s are notoriously difficult to work with. Cross Gate uses proprietary binary formats for its graphics and animation data:
The compression format is a custom RLE implementation with multiple encoding modes (literal, repeat, transparent) and variable-length counters.
Using AI-assisted development (Claude Code and Antigravity), I built a Python extraction pipeline:
Each pet has up to 10 actions (Idle, Walk, Attack, Defend, Cast, etc.) and 8 directions, resulting in potentially 80 GIF animations per pet.
I built a Next.js web application to browse the extracted pets:
image-rendering: pixelated to preserve the retro aestheticThis project was made possible by the cgg-viewer project, which provided the foundational understanding of Cross Gate’s binary file formats and RLE decompression algorithm. The original Python implementation by the cgg-viewer author was invaluable for understanding how to correctly parse GraphicInfo, AnimeInfo, and palette files.
You can try it out at https://1203906e.cross-gate-pets.pages.dev/.