NES movie fileformat converter

   1. Purpose
   2. Usage
   3. Copying
   4. Requirements
   5. Thoughs
   6. Downloading

1. Purpose

nesmock This program converts different format NES movies to other formats.

It supports movie files of the following emulators: Famtasia, FCE-Ultra (FCEU), Nintendulator, VirtuaNES, FCEUX.

This paragraph should be made much longer. It being too short now, it looks somewhat stupid if the cool image on the left side is all alone by itself. There should be more text in here. I'm not going to put some latin text here, this rant must do. Something about documentation, or about the freedom of open source.

Nesmock does not support movie files for other systems such as SNES or Sega Genesis, because those systems have different hardware.

2. Usage

nesmock v1.7.1 - Copyright (C) 1992,2012 Bisqwit (

Usage: nesmock [<options>] <inputfile> <outputfile>

Transforms NES movie files to different formats.
 --help, -h     This help
 --offset, -o   Insert delay at <frame>,<length>
                Example usage: -o 14501:1
                Delay length may also be negative, in which case
                existing frames are deleted instead of copied.
                Frame numbers are relative to the original movie.
                Short syntax -o 10 uses frame number 0 by default.
 --set, -s      Set <var>=<value>
                Note: All movie formats don't support all values
                      or may have length/type limitations.
                Available vars:
                  PAL         0 or 1
                  RecordCount 0..n
                  EmuName     string
                  MovieName   string
                  ROMName     string
                  MD5         string (can be a 32-char hex or a filename)
                  FCEUver     0..n (example: 9812 (=0.98.12))
                Example usage: -spal=0 -srom="Mario Bros.nes" -smd5=mario.nes
 --state, -t    Copy savestate from <file>
                Example: nesmock a.fmv a.fcm -t'orig.fcm'
                Will also make fcm files reset-based (default: poweron-based)
 --ctrl, -c     Defines how to handle a controller. Examples:
                  -c2       = delete player 2 input
                  -c2+      = add second player (zero input)
                  -c21      = add second player (copy P1 input)
                  -c21 -c12 = swap players' 1 and 2 inputs
 --version, -V  Displays version information

Supported formats:
  FMV  (Famtasia 5.1)        - Read & Write
  FCM  (FCEU 0.98.12)        - Read & Write
  NMV  (Nintendulator 0.950) - Read & Write
  VMV  (VirtuaNES)           - Read
  FM2  (FCEUX)               - Read & Write

  nesmock -o2 smb1a.fcm smb1a.fmv

Offsets and delays are usually needed because different emulators have different timings in various details. Adjusting them is usually trial&error work.

If you are doubting whether this program actually works at all, try converting Super Mario Bros movies. I have had complete success with them.

Hint: Nesmock can be used for editing FCM files by first converting them to FMV or FM2 (which are easier to edit than FCM) and then back to FCM.

3. Copying

nesmock has been written by Joel Yliluoma, a.k.a. Bisqwit,
and is distributed under the terms of the General Public License (GPL).

If you are an emulator developer, you are welcome to hack this source code and add more format support to the code.
These planned things are currently missing:

  • Movie support for:
    • VirtuaNES (write)
    • Nesticle (read, write)
  • Savestate support for:
    • Nintendulator (read, write)
    • FCEU (read, write (partial support exists))
    • VirtuaNES (read (partial support exists), write)
    • Famtasia (read, write)
    • FCEUX (read, write)

4. Requirements

GNU make and C++ compiler is required to recompile the source code.
For the program (including the Windows binary), you need a commandline.

5. Thoughs

Different emulators emulate differently. This is a fact. For this reason, usually straight conversions of the movies don't just work.

It is unfortunately impossible to guess from the movie file alone where would the emulator need more / less frames than the other emulator.

A more elaborate conversion could be made by running the two emulators simultaneously and keeping track of their status, and when the other goes desync, backtrack and bruteforce the combination that puts it back to track. This kind of method is however extremely difficult to implement. And it still might be impossible - if the game does calculations based on scanline counters, there could be no way to make them match.

6. Downloading

Downloading help

  • Do not download everything - you only need one file (newest version for your platform)!
  • Do not use download accelerators or you will be banned from this server before your download is complete!

The most recent source code (bleeding edge) for nesmock can also be downloaded by cloning the Git repository by:

Date (Y-md-Hi) acc        Size Name                
2012-0110-1014 r--       55900 nesmock-1.7.2.tar.bz2
2012-0110-1014 r--       58366 nesmock-1.7.2.tar.gz
2012-0110-0922 r--       55753 nesmock-1.7.1.tar.bz2
2012-0110-0922 r--       58259 nesmock-1.7.1.tar.gz
2012-0110-0856 r--       54894 nesmock-1.7.0.tar.bz2
2012-0110-0856 r--       57161 nesmock-1.7.0.tar.gz
2011-0201-0721 r--       53540 nesmock-1.6.2.tar.bz2
2011-0201-0721 r--       56398 nesmock-1.6.2.tar.gz
2007-0810-1911 r--       56081 nesmock-
2007-0810-1911 r--       56448 nesmock-
2007-0810-1911 r--        1994 patch-nesmock-1.6.0-
2007-0810-1911 r--        1822 patch-nesmock-1.6.0-
2006-0823-0804 r--       55880 nesmock-1.6.0.tar.bz2
2006-0823-0804 r--       56635 nesmock-1.6.0.tar.gz
2006-0823-0804 r--       28508 patch-nesmock-1.5.1-1.6.0.bz2
2006-0823-0804 r--       27829 patch-nesmock-1.5.1-1.6.0.gz
2006-0501-2313 r--       28610 nesmock-1.5.1.tar.bz2
2006-0501-2313 r--       29926 nesmock-1.5.1.tar.gz
2006-0501-2313 r--        1395 patch-nesmock-1.5.0-1.5.1.bz2
2006-0501-2313 r--        1292 patch-nesmock-1.5.0-1.5.1.gz
2006-0428-0951 r--       28591 nesmock-1.5.0.tar.bz2
2006-0428-0951 r--       29882 nesmock-1.5.0.tar.gz
2006-0428-0951 r--        4856 patch-nesmock-1.4.0-1.5.0.bz2
2006-0428-0951 r--        4712 patch-nesmock-1.4.0-1.5.0.gz
2005-1126-1958 r--      110176
2005-1126-1526 r--       27642 nesmock-1.4.0.tar.bz2
2005-1126-1526 r--       29278 nesmock-1.4.0.tar.gz
2005-1126-1526 r--        2605 patch-nesmock-1.3.0-1.4.0.bz2
2005-1126-1526 r--        2430 patch-nesmock-1.3.0-1.4.0.gz
2005-0825-2056 r--       27424 nesmock-1.3.0.tar.bz2
2005-0825-2056 r--       28588 nesmock-1.3.0.tar.gz
2005-0825-2056 r--        2215 patch-nesmock-1.2.0-1.3.0.bz2
2005-0825-2056 r--        2054 patch-nesmock-1.2.0-1.3.0.gz
2005-0531-2133 r--       95160
2005-0531-2134 r--       27428 nesmock-1.2.0.tar.bz2
2005-0531-2134 r--       28616 nesmock-1.2.0.tar.gz
2005-0531-2134 r--        8610 patch-nesmock-1.1.3-1.2.0.bz2
2005-0531-2134 r--        8599 patch-nesmock-1.1.3-1.2.0.gz
2004-1215-2006 r--       90185
2004-1215-2006 r--       23806 nesmock-1.1.3.tar.bz2
2004-1215-2006 r--        2661 patch-nesmock-1.1.2-1.1.3.bz2
2004-1212-0814 r--       90099
2004-1212-0810 r--       23746 nesmock-1.1.2.tar.bz2
2004-1212-0810 r--        4533 patch-nesmock-1.1.1-1.1.2.bz2
2004-1211-0824 r--       89216
2004-1211-0824 r--       22907 nesmock-1.1.1.tar.bz2
2004-1211-0824 r--       12746 patch-nesmock-1.1.0-1.1.1.bz2
2004-1206-2114 r--       88643
2004-1206-2140 r--       18502 nesmock-1.1.0.tar.bz2
2004-1204-1107 r--       28258
2004-1204-1123 r--       18341 nesmock-1.0.0.tar.bz2
Back to the source directory index at Bisqwit's homepage