Looking at some FMV formats

It’ll take a long time to liberate Ukraine from the invaders, so while it goes on I have to entertain myself somehow.

Since I had nothing better to do I looked at two FMV games—Deadly Tide and Hot Wheels: Stunt Track Driver. Both of them have their levels packed as video data with some additional control data.

Deadly Tide is more complex one with its L96 format: it defines a resource file with several possible sub-levels and three different video streams (something like 320×240, 160×120 and 80×80) compressed with Cinepak plus half a dozen of various control resources and audio stream.

Hot Wheels uses JAM format which is a series of compressed chunks. 0 – frame data, 2 – palette update (strangely enough it updates palette not from the start but rather to the end), 3 – some control data. Frames are stored either unpacked, packed with LZSS or packed with differential LZSS (in this case copy operation takes bytes from the previous frame). Oh, and it uses obfuscated WAV files for audio that I didn’t bother to look at.

I’m still looking for an interesting format to RE, meanwhile those two were at least somewhat interesting.

4 Responses to “Looking at some FMV formats”

  1. Paul says:

    Object based audio, there are some open source work too.
    Something 100% different, RE non-multimedia-codec software for fun?

  2. Kostya says:

    I know two kinds of those: MPEG-4 Structured Audio (which is essentially a programming language for synthesizing audio) and those modern D*lby Atmos, DT$-X and SOFA codecs that are more about freely moving audio sources (i.e. they tie audio channels to the sources of audio instead of speakers and you can render it to whatever speaker layout you have).

    Neither is fun to work with so I’ll skip all of them.

  3. Paul says:

    What a coincidence I got to Micronas SC4 codec and fetched acm file and found you already filled some info about it on wiki, Very Nice!

  4. Kostya says:

    Feel free to write a decoder for it as I’m feeling done with it.

    Fun thing is that it could’ve been implemented a decade ago when I gave a decompiled source for it to a person who had interest in such codecs but it never came to anything.