Final news about H4M and Nightlong FMV

In my previous post I said I was looking at them and while some details were unknown, I got some understanding.

But it turns out The Multimedia Mike despite what he claims still hasn’t lost the knack for REing codecs—first you need to look if somebody else has done it already. And indeed, somebody else has spent two years on reverse engineering the codec. So all that was left to me was to improve its description it (which I did).

The video compression there is quite curious. Huffman-coded data chunks are not that rare (Truemotion 2 had them, for example). Huffman-coded data chunks where one chunk has tree description coded in the beginning that is used for several other chunks is more interesting. But the transforms was the juiciest part there. It turns out you have several modes of operation: fill block, raw block, smoothed DC block (that one uses DCs from neighbour blocks on all sides to create a smooth transition between them all) and the actual Adaptive Orthogonal Transform that represents block as 1-5 patterns (scaled), selected from single matrix. It reminds me a bit about SVQ1 where you had a block constructed from 2D patterns of varying size. But even more it reminds me of Matching Pursuit experimental video codec from Berkley University that also performed partial transform and selected only some bases from a large set (does anybody remember this codec at all?).

Nightlong FMV is a bit different. The format is simple but FMV2 has packed frames and there was no code for handling it in 68k version of the binary. Nevertheless I could unpack it simply by dumping frame data and extracting it with unar (PowerPacker is a strange compression format BTW, it starts reading data from the end of buffer and outputs data starting from the end as well). The unpacked data turned out to use the same format except that the frame size is now full 640×360 instead of 320×180 trying to look like twice as large. I documented it as well.

P.S. I still have some stuff to look at but more suggestions are always welcome.

2 Responses to “Final news about H4M and Nightlong FMV”

  1. You’re right– I’ve never heard of that Berkeley Matching Pursuit codec.

    I am scrubbing through the “Undiscovered” categories on the wiki. Speaking of codecs with the initials MP, there is MotionPixels. However, it looks like that is known (according to FFmpeg’s code), just not fully documented.

    There’s UMV on the wiki– looks like Reimar sorted out some details, but there might still be some simple compression to RE.

    More from old, specific games, probably simple:

    https://wiki.multimedia.cx/index.php/Roketz_VQM
    https://wiki.multimedia.cx/index.php/Cyclemania_Video

    I also put out the call to some ScummVM folks– I assume they always have a need for RE’ing more media formats.

  2. Kostya says:

    Formally, Nightlong is one of the games they’ve recently added support for (though PC version uses some conventional compression instead).