Here's what I know of the data header. Unknown3-4,9 seems interesting but I can't correlate them with anything useful yet. struct GR3MOVHDR { unsigned long audio_channels; // 2 unsigned long audio_frequency; // 48000 unsigned long data_offset; // 2048 unsigned long unknown1; // 0 unsigned long data_offset2; // 2048 again, maybe coincidence unsigned long unknown2; // 0 unsigned long unknown3; // slightly smaller than audio_length unsigned long unknown4; unsigned long unknown5; unsigned char empty[220]; unsigned long video_length; unsigned long audio_length; unsigned long video_chunk_len; // in 2048-byte sectors unsigned long audio_chunk_len; // in 2048-byte sectors, usually 26 unsigned long unknown9; unsigned long chunk_count; unsigned char pad[1768]; }; File format appears to be: -GR4MOVHDR -128kb of ADPCM -MPEG2 chunk -ADPCM chunk (repeat for chunk_count...) The 128kb of audio I assume is to prime the buffer. Subsequent chunks of audio are somewhat less than 1 second. Video chunks seems to be close to 30 frames. Note that the chunk lengths in the header seem to be just suggestions; I have noted regular deviation from that value. It looks like every-other chunk for both audio and video will use an extra sector. Video chunks don't always follow this pattern.... maybe real analysis of the MPEG data would shed some light on this.