BZZ Decompiler (Python)

Created 2025

Github: Link

About BZZ

BZZ is a file compression format created for use with a couple of PS1 games; Namely, The Grinch and Bugs Bunny: Lost in Time. It uses an LZSS style compression algorithm to compress files without losing quality. It was primarily used for bitmap and palette data. It’s major downside is it doesn’t indicate how large the output file size(s) are, nor does it indicate file types outside of a numerical indicator, not all of which have been identified.

BZZ Decompression

This project only compresses BZZ-compressed files. It does this by reading header information in the first 12 bytes or so of data, then it works to decompress files, which always start at an 0x800 divisible byte, start at at byte 0x800. It uses LZSS decompression, unique content is written directly, and repeated content is referred back to early in the compression. So content that is all the same will be much shorter than all-unique content.

Drawbacks of BZZ compression include the lack of file information, including file names, sizes, or types. Additionally, it can bloat easily if reference bytes are a long way from the current byte. It’s also not widely used, and I had to reverse engineer the process with known valid files ripped from PS1 game discs.

What I learned from this project

This project is a well-good ways outside of my wheelhouse, so I learned a lot from it.

This includes a lot of the following:

  • Byte manipulation
  • LZSS compression and decompression
  • Legacy file formats
  • Reverse engineering and the hurdles related to discovering lost information.