The linux version of fceu is not exactly the same as the windows version. I would like to keep a list of their differences in this thread, mostly so I can list fixes or workarounds for the linux version if they exist. Note that when I talk about the 'linux' version, I'm including BSDs, OSX, and any other unix variant that fceu can be compiled and run on. Unless otherwise noted, all references to fceu refer to version 0.98.28.
Some links, for convenience:
Remapping Controller Input
To change controller key mappings, start fceu with the inputcfg option:
fceu -inputcfg gamepad1 somerom.nes
Because of how fceu parses the command line, you do have to include some text after any options; it doesn't necessarily have to be a rom filename. Configuring 'gamepad1' will set controls for the first controller. Other options are gamepad2, gamepad3, gamepad4, powerpad1, powerpad2. When starting fceu with inputcfg, you will be prompted to map each button up to four times, so you can enter multiple keys for each controller input. If you don't want to map multiple keys, just repeat a key and it will move on to the next input. Note that fceu does support auto-fire for the A and B buttons, despite what the
Features wiki page suggests.
You can not remap keys for emulator functions from the command line, only for controller input. Changing the keys for emulator functions has to be done in the source code.
Input Display
There is no way to toggle input display because no key is mapped to this function. This is easy to fix in the source code. Add this line to src/drivers/pc/input.c around line 196 and recompile.
if(keyonly(COMMA)) FCEUI_ToggleInputDisplay();
Now Comma will toggle input display.
Frame Count Display
Toggling frame count display is mapped to Backspace in linux, not Period as in windows. If you want to make linux fceu work like windows fceu, change line 198 in src/drivers/pc/input.c and recompile.
- if(keyonly(BACKSPACE)) FCEUI_MovieToggleFrameDisplay();
+ if(keyonly(PERIOD)) FCEUI_MovieToggleFrameDisplay();
Now Period will toggle Frame Count Display and Backspace will do nothing.
Pause and Frame Advance
Frame Advance is mapped to Right Control rather than Backslash. Instead, Pause is mapped to Backslash.
If you want to bring linux fceu more in line with windows fceu, you can swap the keys for Pause and Frame Advance by changing lines 200 and 201 in src/drivers/pc/input.c as follows:
- if(keyonly(BACKSLASH)) FCEUI_ToggleEmulationPause();
- if(keyonly(RIGHTCONTROL)) FCEUI_FrameAdvance();
+ if(keyonly(RIGHTCONTROL)) FCEUI_ToggleEmulationPause();
+ if(keyonly(BACKSLASH)) FCEUI_FrameAdvance();
I think Pause may be a menu-only setting on default Windows fceu (this is based on source-exploring; I don't have a windows machine available to test this), so make your own choices about which key is the 'correct' key for pause.
Fast Forward
Fast Forward doesn't exist in the linux version. I don't see an easy/obvious way to fix this. Changing the speed with '-' and '+' works, but of course this is not exactly the same thing.
Auto-hold
The
Features page on the wiki suggest that linux has partial auto-hold support. If this is the case, I don't know how to use it.
Start Recording from Power-On
By default, linux FCEU seems to be recording from an embedded "quicksave" snapshot. I don't know exactly what this means, but the important thing is that it is not recording from Power-On (one of the requirements of this site). To change FCEU to always start recording a movie from Power-On, change line 181 of src/drivers/pc/input.c as follows and recompile:
- FCEUI_SaveMovie(NULL,0,NULL);
+ FCEUI_SaveMovie(NULL,MOVIE_FLAG_FROM_POWERON,NULL);
After making this change, emulation no longer pauses on the last frame of playback. I don't yet know why this happens, or how this behavior compares to that of windows fceu.
Disabling Layers
According to the
Features page, fceu linux supports disabling layers, but fceu windows does not. I assume this refers to F4 (hide sprites) and shift+F4 (hide background data; i.e. everything that is not considered a sprite). I'm not sure why this wouldn't exist in the Windows version (and this implementation seems less than useful to me anyway), but I'm putting it on this list for completeness.
Combos or Macros
According to the
Features page, Combos and Macros are available in Windows although they are not supported in fceu linux.
Export to AVI
The
Features list indicates that this is built in to the Windows version and partially supported in linux. I really don't know the details.
Memory Search
I don't know how to do this, or if it's possible in linux fceu.