- Extension: hnm
- Company: CRYO Interactive Entertainment
HNM6 is the latest variant of HNM video format by Cryo. Unlike its previous versions, it has Hi-color video support.
File consist of a main header, followed by frame chunks. Each frame chunk consist of individual audio and video chunks. All numbers are little-endian.
u8 sig -- file signature, "HNM6" u8 reserved -- usually 0 u8 audioflags -- nonzero value indicates file has APC sound (not authoritative) u8 bpp u16 width u16 height u32 filesize u16 frames -- number of frames u16 reserved2 u32 reserved3 -- usually 0, but sometimes "V107", "V108" - version? u16 speed -- playback speed in fps, may be zero (?assume 15 fps then?) u16 maxbuffer -- number of frame buffers used u32 maxchunk -- max frame chunk size u8 note u8 copyright -- "-Copyright CRYO-"
Each frame chunk begins with u32 chunk size (including this size field), then followed by frame's individual chunks:
u32 chunksize -- chunk size including this field, excluding padding u16 chunkid -- TWOCC chunk id u16 reserved u8 data u8 padding -- pads chunk to 4-byte boundary
APC Audio. See CRYO APC
Video frame, WARP format.
Video frame, normal format.
At least one known game (Riverworld) uses slightly different HNM6 container format, most likely due to different sound encoding. This format is just a small enhancement of the original, but it's not backward compatible.
Standard HNM6 header continues with additional audio description header:
u32 freq u32 bits u32 channels u32 ? u32 ? u8 copyright -- "HNMS 1.1 by SARRET Hubert\0\0\0" u32 ? -- some initial audio samples? u32 ? u32 ? u32 ?
Each frame chunk followed by an audio chunk, however, this audio chunk size is not counted by frame's chunk size field. Frame chunk format:
u32 sig -- "SOUN" u32 chunksize -- including this preamble u8 data