The all in one NES/Famicom Emulator
Home Download Documentation Versions Contact Links

Convert FCM to FM2

This page documents the conversion process of .fcm to .fm2. It also documents known issues with conversion as well as known cases where conversion fails.

FCEUX uses the file format .fm2. It does NOT play .fcm files (Older versions of FCEU). However any .fcm file can be converted to .fm2 by opening FCEUX and going to tools > Convert .fm2. You can mass convert files by highlighting them in the open dialog box. On the SDL build, you can run ./fceux --fcmconvert filename.fcm

See also:

FM2 concept

The old FCEUltra had a big problem with its movie recording. Every single movie was recorded with power-on, followed by a savestate. This means that WRAM (or save RAM) was being stored in its initialized state. As a consequence, many games that use save systems would go through an accelerated boot process since the save files were already initialized.

Typically, a movie maker would load his game and let it sit at the title screen while he sipped his drink or adjusted his pants or steeled his nerves or whatever and then triggered the movie record. At that point the savefile was initialized, and the recording was already compromised.

When preparing FCEUX for release, we decided that this was unacceptable. Therefore, every FCEUX movie is recorded from a fresh power-on with no WRAM or save RAM. Additionally, the "record from reset" was taken out because it is even worse. Now the game would be starting from initialized WRAM and initialized main ram. This can further confuse matters.

So, your movies might desync because on FCEUX the game is taking longer to boot, while it is initializing its WRAM and/or main ram.

Luckily, these are often easy to fix: since FM2 is a text format, it is trivial to insert additional empty frames into the correct locations during the game boot-up process. We have successfully used this approach to salvage a few movies. So, if you have trouble, let us know, and maybe since we have a bit of experience, we can help.

Also, when a game is initializing, I bet it is uncommon for the RNG to be running so you might get lucky there also.

Another trick is to add a boot-up time window to the beginning of your movie. Add empty frames to the very beginning, followed by the very first converted frame which should include a reset flag. This simulates what FCEUltra did, giving the game time to initialize its WRAM and possibly main RAM before your input events begin.

We have been excruciatingly careful not to do anything else which would adversely affect synching. We take this seriously. We have only found few desynching movies so far that we aren't able to fix.

Sync issues

Nearly all published .fcm files will convert without problem

Exceptions are noted:

Converting from FMV to FCM to FM2 may work, but it fails at least for these movies:

Known desyncs fixed with added frames

Some movies will desync but can be fixed by adding frames to the beginning of the movie. Basically any movie that was recorded from soft reset and uses battery backed ram will probably desync. This is because the soft reset allowed the SRAM to be cleared ahead of time, so frames were not needed to clear it in the movie (This is arguably cheating anyway, and recording from soft reset was removed in FCEUX).

Known desyncs that were fixed by adding frames:

Legent of Zelda "1st Quest" by Baxter and Phil - 3 frames added
Vice: Project Doom by FunkDoc - 10 frames added

Known desyncs that could not be snced (to our knowledge)

Movies that don't meet the above criteria but desync anyway

Addams Family - Nothing up to 16 frames worked
Kattou Ninden Teyandee by Ferret Warlord - Nothing up to 16 frames worked
Dragon Warrior by acmlm - Adding 2 frames makes it sync up to around 46540