View Page Source

Revision (current)
Last Updated by feos on 7/25/2015 11:55 AM
Back to Page

Specification for the .mcm movie file format


mcm is the movie capture format of Mednafen, a TurboGrafx 16 (PC Engine), PC-FX, Neo Geo Pocket (Color), WonderSwan (Color),and Atari Lynx emulator.  In addition it also supports NES,SMS,GG,GB,GBA.

The following are only available on the Linux version:%%%
PC-FX, GB, GBA, Sega MS, Game Gear

! Savestate/Movie Info
Re-recording is bulletproof since the movie data is loaded from the appropriate file when a state is loaded. This prevents ruining a movie by loading states out of order while recording.

Savestates made from movies are seperate and do not contain the movies within them. For example, the savestate "filename.nc0" made from the movie file "filename.10.mcm" is seperate from "filename.10.mcm" and don't contain the input data from "filename.10.mcm".

Movie files have their associated savestates separate from "non-movie" savestates, so those savestates cannot be accidentally overwritten while no movie is being replayed.

TODO: More details

! Movie File Format

 000 8-byte    "MDFNMOVI" signature
 008 uint32     Mednafen Version (Current is 0A 08)
 00C uint32     Movie Format Version (Current is 01)
 010 32-byte    MD5 of the ROM used
 030 64-byte    Filename of the ROM used (with extension)
 070 uint32     Re-record Count
 074 5-byte     Console indicator (pce, ngp, pcfx, wswan)
 079 32-byte    Author name
 099 103-byte   Padding 0s
 100 variable   Input data

TODO: Verify if NTSC/PAL mode used for the movie can be detected or not.

! Input Data Formats
The input stream consists of 1 byte for power-on and reset, and then X bytes per each input port per frame.

||Console Type||Input Ports||Bytes per Port||Frame Size (with Control Byte)||Buttons (Ordered)||
|Lynx      |1|2|3 ||
|WonderSwan|1|2|3 ||
|NG Pocket |1|1|2 ||
|PC Engine |5|2|11|1, 2, Select, Run, Up, Right, Down, Left|
|PC-FX     |2|2|5 ||
|SMS       |2|1|3 ||
|NES       |4|1|? |A, B, Select, Start, Up, "Down, Left, Right|

Normally, NES receives from 5 input ports, where the first 4 have a length of 1 byte, and the last has a length of 0. For the sake of simplicity, it is interpreted as 4 ports of 1 byte length for re-recording.