Novastorm Media

From MultimediaWiki
Jump to navigation Jump to search

Novastorm is a 1994 DOS-based game from Psygnosis. The disc contains many multimedia files with a variety of extensions, most commonly .fa or .flm. The files share a combination of fourcc types and there is no one right way to assemble the files. Different files use the components they need.

All multi-byte numbers are little endian. The fourcc chunk format used in these files is:

 bytes 0-3    chunk type
 bytes 4-7    chunk size, not including 8-byte preamble
 bytes 8..    chunk payload

Observed fourcc types include:

  • SHED: Sound HEaDer, 8-byte payload:
 byte 0      probably a Sound Blaster frequency byte
 bytes 1-3   unknown
 bytes 4-5   size of an audio frame (SAMP chunk)
 bytes 6-7   unknown  
  • PCFM: Video header? 6-byte payload:
 bytes 0-1   number of frames in file
 bytes 2-5   unknown
  • SPAL: VGA palette:
 bytes 0-3   chunk size, including this size field
 bytes 4..   RGB triplets, 6-bit palette components
  • SAMP: audio SAMPle:
 bytes 0..   unsigned, 8-bit PCM audio data
  • FRAM: video FRAMe:
 bytes 0..   compressed video frame
  • EOFL: End Of FiLe (empty chunk)
  • HMSK: unknown

Some files contain only a SAMP chunk and are audio-only. Some files are only meant to be animation files and carry PCFM, SPAL, and a series of FRAM chunks, but no audio information. More commonly, a file with both audio and video will begin with a SHED chunk followed by a PCFM chunk and a SPAL chunk. Then, any number of SAMP and FRAM chunks will be interleaved until the EOFL chunk is encountered.

Note that there is speculation regarding the fraemrate calculation. Many of the files appear to have a 0xC1 byte in byte 0 of the SHED payload. According to the Sound Blaster frequency formula:

 sample rate = 1000000 / (256 - sample_rate_divisor)
 sample_rate_divisor = 0xC1 = 193
 sample rate = 1000000 / (256 - 193) = 15873 Hz

In the same files, the length of an individual SAMP chunk is usually 1133 bytes.

 15873 / 1133 = ~14

It is possible that these files are meant to be played at 14 fps.

The details of the video coding format are presently unknown.