A final look at SIFF

This is a resource format (as one could guess from its name) used by Beam Software for various resources in its games. The first time I had to deal with it was when some anonymous contributor contacted me with a REd decoder for videos in Lost Vikings 2. I adapted for FFmpeg (wow, it’s been fifteen years ago) and added sound support as well.

Recently I decided to revisit it (previously I tried to adapt decoder for 15-bit video but could not make it exactly right for some reason). So I looked at it, it turned out to be exactly the same algorithm but depending on whether palette is present in the frame (yes, 256-colour palette with RGB555 entries) pixel data is read either as byte palette indices or raw 16-bit values. I also looked at The Dame was Loaded game and its FCP format turned out to use exactly the same compression but with a different frame format (16-bit sizes, different audio/palette/video order and so on). And the game audio uses packed 12-bit PCM (two samples without low nibble are stored in three bytes) which is not something you often see.

And with that I’m done with game formats for a long time. Probably I should write a toy encoder or two now.

5 Responses to “A final look at SIFF”

  1. Paul says:

    something like Bink2 for sure…

  2. Kostya says:

    I’m waiting for you to finish it. Maybe I’ll get bored enough to look at it again but don’t count on it.

  3. Nazo says:

    I found the description of CRI P256 (Nintendo DS codec).
    https://web.archive.org/web/20070602010100/http://cri-ch.tv/iwai/363.shtml
    it uses colorpalette, inter/intra prediction, and LUT-based B256 coder.

    I’m happy if you add this to multimedia wiki because I lost my password…

  4. Kostya says:

    I’ll be happy to do that, thanks for the information!

  5. Nazo says:

    I checked it, thanks to you!