top of page

2.6.6 / 28-08-2023





average rating is null out of 5
average rating is null out of 5
average rating is null out of 5

Fceux is an open-source Nintendo Entertainment System and Family Computer Disk System emulator. It's a merger of various forks of FCE Ultra. While not being cycle-accurate, it's has quite an accurate emulation and offers extensive tools for debugging, rom-hacking, map making, Tool-assisted movies, and Lua scripting.


Windows: 7+ 

Linux: Ubuntu

MacOS: X+ (check DevBuilds section)

Most Recent Changes


This is mainly a maintenance update for the mappers and emulation core with a few new features added in. Some of these new features apply only to the Qt/SDL version of the GUI.



  • Minor refactor of the save game RAM code. Fixes UNROM-512 flash clearing bug during movie play.

  • Mapper 354: Add CHR-RAM protect.

  • Mapper 78: Add submapper support.

  • Added mapper 174 support.

  • Move mapper 205 to mapper 361/366, added proper mapper for 205.

  • Mapper 205: Fix for split-rom variant (UNIF)

  • Changed UNROM-512 to use 8kB of CHR-RAM memory by default.

  • Mapper 342 memory optimization.


  • Implemented LUA function memory.registerread.


  • Memory initialization settings are now also applied to nametable, palettes, and sprites.

  • Fixed bug were write instructions didn't always update the databus.



  • Added ld65 debug file symbol loader feature.

  • Added checkbox to Qt debugger menu to control trace logger auto start function on debugger open.

  • Added code to stop the trace logger on debugger close if it was the debugger who started it in the first place.

  • Added address validity checking to the breakpoint editor dialog entry fields.


  • Added a third video driver option that uses a QPainter object to render QImages to the viewport (uses a pure Qt API).

  • Fixed video transparency issue that has been seen on some platforms (Wayland) by forcing alpha bits to be set to full opaque.


  • Added state recorder feature, periodically saves time history of game play states that can be recalled and played out from.

  • Fixed bug regarding force grayscale or use custom palette settings change not updating PAL 3x filter appropriately.

  • Added feature that allows loading of save state files via drag n drop file dialog operations.

  • Fixed redundant window focus bug that would occur when attempting to open a pre-existing window.

  • Added optional cross-platform libarchive interface to allow Qt GUI to open ROMs from 7zip archives.

  • Minor improvements to the ROM selection from archive dialog.

  • Improved frame scheduling timing precision.


  • Build fixes for GCC 13.


The is a maintenance update that contains various fixes from a back log of bugs and feature requests over the past year.



  • Mapper 225 Update to also support 255

  • Mapper 235: Update support for 260-in-1 and add UNROM mode

  • Mapper 268 (COOLBOY): Updated

  • Added Mapper 342 (COOLGIRL) support

  • Added Mapper 354 support

  • Added Mapper 470 support

  • UNROM-512 emulation fixes

  • Added cycle IRQ mode for Konami VRC mappers


  • Changed built-in palettes to be bit-shifted properly so that whites are pure FF

  • Various fixes for issues caught by clang code sanitizers

  • Added hotkey to allow for global enable/disable of cheats

  • Memory allocation and alignment code cleanup



  • Added protections to guard against corrupt save files

Hex Editor

  • Added ability to apply ROM file pasting as a single undoable action

Trace Logger

  • Changed disk flushing logic to be more efficient giving significant performance increase


  • Added support for loading IPS files on top of already loaded ROMs



  • Added logic to raise and shift focus to hex editor window when opening from debugger

  • Added separate hot keys for hard and soft NES reset functions

  • Added logic to prevent controller buttons that are bound to the keyboard from being active when family keyboard is enabled. Controller buttons that are mapped to physical gamepad or joystick are unaffected

  • Fixes for OpenGL blending parameters

  • Added option to use palette background color as video background

  • Added sound mute function. Accessible either via hot key or checkbox on sound config window

  • Added option to set fceux base/config directory path via FCEUX_CONFIG_DIR environment variable


  • Changed debugger data save file extension to be .fdb instead of .dbg so that it does not conflict/overwrite ld65 debug symbol files

Trace Logger

  • Now ensures that logged output is flushed to disk when emulator is paused. This ensures that latest data is available for inspection when stopped at a breakpoint


  • Implemented support for input.get() lua function binding

  • Added lua script loading via file drag and drop feature

  • Added debugger.getsymboloffset lua function binding. Allows querying of debug symbols from lua scripts.


  • Added cmake SOURCE_DATE_EPOCH hook to allow setting of UTC timestamp for reproducible binary builds

  • Added clang address/undefined behavior sanitizer build option for unix debug builds

  • Upgraded Win64 build to link SDL2 library version 2.24.1

  • Upgraded Win64 build to link ffmpeg library version 5.1.2

  • Updated code to remove usage of ffmpeg 5.1.x deprecated symbols

  • Cleaned up a few compiler warnings


This release is a maintenance update that fixes a couple bugs for the Qt/SDL port.



  • Fixed crash that sometimes occurs when cancelling a key mapping sub-dialog for virtual family keyboard window (Crash occurred most often on MacOS).

  NES Header Editor

  • Fixed mapper combo box indexing issue.


This release is a maintenance update that fixes a few bugs for both the Win32 and Qt/SDL ports.



  • Bug fix for mapper 16 submapper 4, allow writes to address range $6000 - $600D.

  • Bug fix for mapper 3 bus conflict logic. Bus conflicts are now only enabled for submapper 2.

  • FDS IRQ emulation improvement.

  • Implemented extra RAM for mapper 225.



  • Fixed loading of saved debugger breakpoint data from previous sessions. This bug started occurring when the saved binary file format changed due to the address fields changing from 16 to 32 bit values.

  • Fixed bug in address validation logic.


  • Fixed Meta keys combination issues.



  • Added a virtual family keyboard dialog window. This allows functionality such as emulating key presses via mouse and remapping keys to physical keyboard.

  • Added code differentiate between left/right modifier key presses (shift, alt, ctrl, meta).

  • Fixed keyboard bindings for Famicom family keyboard emulation.

  • Fixed a couple bugs for some uncommonly used Qt to SDL key code conversions.


  • Fixed keyboard menu accelerator functionality for Mac OSX (non-native menu bars only)


This elease is a maintenance update that adds a couple minor features and fixes a few bugs for the Qt/SDL port.



  • Fixed VROM size calculation error from NES header.


  • Added WRAM support for OneBus mapper (mapper 256).


  GUI Improvements and Bug Fixes

  • Added an auto hide main menu on fullscreen option.

  • Added an option to disable display of video overlayed GUI messages.

  • Fixed default setting for max sprites per scanline to be 8 (matching win32 port).

  Hex Editor Improvements and Bug Fixes

  • Fixed logic to move cursor to next line when editing hits end of line.

  • Fixed inconsistent display behavior of vertical scroll bar. Viewport line offset and vertical scroll position are now always synchronized.

  • Fixed draw layering of cursor row/column coloring when in ROM view.

  • Added protections to prevent crash when editing addresses past the end of a ROM file.

  • Improved cursor blink rate to be consistent regardless of viewport refresh rate.

  SDL Sound

  • Fixed sound issue on FreeBSD 13. Force audio sample size to always be a power of 2 per SDL documentation

  Build Improvements and Bug Fixes

  • Fixed a build errors when compiling against Qt6 (6.2.2).

  • Removed usage of a few Qt6 deprecated function calls.


The 2.6.1 release fixes a few bugs that were found shortly after the 2.6.0 release.


  • GUI Improvements and Bug Fixes

  • Fixed Qt cursor override stack overflow issue. Code now properly calls QGuiApplication::restoreOverrideCursor following QGuiApplication::setOverrideCursor.

  • Fixed application crash when attempting to open/close the CDL window more than once.

  • Fixed inverted vertical scrollbar on Qt Trace logger. Added page up/down key shortcuts for Trace logger viewport.

  • Added an optional splash screen at startup. Splash screen defaults to off and can be enabled in GUI config dialog.

RAM Search Improvements and Bug Fixes

  • Changed Qt RAM search logic to skip over RAM mirrors. Changed GUI to allow for searching of RAM, SRAM, and ROM regions to be individually selectable.

Build Improvements

  • Applied cmake SOURCE_DATE_EPOCH patch for reproducible builds.

Windows Build Dependency Upgrades

  • Upgraded to SDL version 2.0.20

  • Upgraded to ffmpeg version 5.0


This release features the addition of the TAS Editor to the Qt/SDL port. There are also a few other bug fixes.

Qt/SDL - TAS Editor

  • The full TAS editor has been ported over from the Win32 version. Other than minor layout changes, Win32 TAS users should find it familiar.

GUI Improvements and Bug Fixes

  • Fixed occasional stack overflow issue due to unintended recursion in Qt event loop.

Video Improvements and Bug Fixes

  • Added video vertical sync config option.

  • Added built-in video vertical sync test pattern.

Input Improvements and Bug Fixes

  • Added escape characters to gamepad config files to fix keyboard binding issue for ',' and '\' keys.

Build Improvements

  • Replaced a few soon-to-be deprecated ffmpeg function calls.

  • Cleaned up a few compiler warnings.


The 2.5.0 release features significant enhancements and improvements to the Qt/SDL port. Specifically the debug tools and AVI recording capabilities.


  Emulation Core

  • Fixed SYA and SXA opcodes in CPU. Blargg's NES CPU TEST #5 now passes.


  New Tools

  • Added built-in AVI RIFF Tree Viewer.


  • Redesigned debugger layout to optimize space usage.

  • Window layout uses relocatable tabbed viewports to allow for layout customization.

  • Added a tool bar for commonly used debugger buttons.

  • Moved many configuration options to debugger window menu to save space.

  • Added syntax coloring options to assembly code viewer.

  • Added opcode description popups to assembly code viewer.

  • Added assembly code custom font selection option.

  • Added symbol tool tips and address look ahead popups for assembly code viewer.

  • Added navigate backwards/forwards line history to assembly code viewer.

  • Added breakpoint on unlogged code/data feature.

  • Added breakpoint on execution of a specified PRG-ROM address.

  • Added step back one instruction feature (experimental)

Hex Editor

  • Fixed draw logic to ensure that highlighted text coloring takes precidence over activity coloring.

  • Fixed crash in hex editor when searching with Ctrl+A

Input Control

  • User can now save up to 3 alternate sets of gamepad button bindings in addition to the primary set.

  • Advanced gamepad bindings (to hot key functions) are now stored for each individual gamepad by GUID.


  • Build fix for static linking of lua. Ensure proper compiler flags are set for linux and mac OS to enable lua plugin functionality.


  • Added optional linking of ffmpeg (libav) libraries for AVI recording. Provides full use of available encoders and options.

  • Implemented AVI 2.0 Indexing Specification. This new indexing scheme eliminates 2GB AVI file recording limitation.

  • Fixed video messages and HUD presentation AVI display options.

GUI Improvements and Bug Fixes

  • Went through all debug tool windows and made sure that all configuration options are saved (persist on application restart).

  • The position and size of all debug/tool windows is now saved at window close and restored at window open.

  • For debug windows, if attempting to open a window that is already open, that window is raised to top and focused.

  • Bug fixes for scroll bar presentation on custom viewport widgets in debug tools windows (debugger, hex editor, trace logger).

  • Added main window context menu to Qt GUI.

  • Various color customization options for debugger and hex editor.

  • Changed hot key config window tree layout to sort keys into logical groups.

  • Added offline help documentation viewer feature. (chm viewer for windows and Qt help engine for unix)

Video Improvements and Bug Fixes

  • Fixed video message positioning so that it is not clipped when 8 pixel side clipping is active.

  • Added integer frame rate option to better sync video with monitor refresh.

  • Changed update rate of video frames per second display so that it is more readable.

Sound Improvements and Bug Fixes

  • Added option to mute sound when main window is not in focus.

  • Improved sound sample underflow/overflow algorithm to allow for better scaling with running the emulation at faster/slower speeds.

  • Sound sample processing efficiency updates.

  • Added an audio buffer percent usage indication and an audio sink starve counter to sound config window for debug purposes.

Build Improvements

  • OpenBSD OS build fixes.


The 2.4.0 release primarily focuses on improving stablity and capabilities of the Qt/SDL GUI port.

Qt/SDL  Build Improvements

  • Added Windows to supported operating systems.

  • Now buildable against both Qt5 and Qt6.

  • Unix OS build fixes.

Qt/SDL  New Tools

  • Added a pattern table tile editor to the PPU viewer.

  • Added a sprite table viewer window.

  • Added an NES palette color editor tool. Can now edit palette RGB values in realtime.

Qt/SDL  Nametable Viewer

  • Added tile and attribute gridlines visibility feature.

  • Rearranged window layout.

  • Viewport now has zoom levels.

  • Viewport now has context menu functionality.

Qt/SDL  PPU Viewer

  • Added tile gridlines visibility feature

  • Improved active palette display.

  • Added pattern table tile viewer context menu options.

  • Added a click or hover focus policy option to select tile via mouse.

Qt/SDL  Movies

  • Added AVI and WAV recording capability.

Qt/SDL  Trace Logger

  • Fixed buffer overrun issue.

  • Improved disk write performance.

Qt/SDL  Hex Editor

  • Improved editor responsiveness.

  • Added a font selection option for text customization.

  • Added row / column coloring options.

Qt/SDL GUI Improvements and Bug Fixes

  • Added main menu hide feature.

  • Accelerators added to main menu.

  • Hot key interface re-worked to better integrate with main menu shortcuts.

  • Added menu preset options for autofire pattern and fixed timing issues.

  • Added an quick access link to fceux online documentation.

  • Added a recent ROMs list to the main menu.

  • Added TBL support to hex editor.

  • Bug fixes for using native OS QFileDialog option.

  • Added RAM init menu options

  • Added Qt style plugin and stylesheet selection/load options to UI config window.

  • Added feature that allows the binding of gamepad buttons to key sequences that can trigger GUI shortcuts.

  • Added PPU overclocking feature to timing config window.

Qt/SDL Video Improvements and Bug Fixes

  • Added aspect ratio selection support.

  • Added viewport cursor and draw input aids options.

  • Added visible scanline entry fields to video config window.

  • Fixed crash issues when switching between OpenGL and SDL drivers.

  • Fixed New PPU selection via video config window.

  • Fixed image distortion issues when using various video scalers and clipping.

  • Screen shot function now captures raw window pixels to allow for higher resolution, aspect ratio and scaler effects to be seen in image.

  • Added NTSC/PAL/dendy auto detection at ROM load.

Qt/SDL Stability Fixes

  • Fixed various segmentation faults

  • Fixed various memory leaks caught by valgrind.

  • Cleaned up many compiler and cppcheck warnings.

Show Previous Changes


The 2.3.0 release includes 4 years worth of improvements and bug fixes.


  • 64 bit build support


  • Added Mapper 111 cheapocabra

  • Added Mapper 190

  • Added RAM Init Options: default (00 00 00 00 FF FF FF FF as always), all FF, all 00, random

  • New UNIF mappers

  • Mapper 30 4-screen support

  • Mapper 5 MMC5 large WRAM support

  • VRC7 patch set finalized with correct values dumped by Nuke.YKT

  • Fixed rendering and debugging of mirrored palette entries


  • Various improvements and bug fixes to pre-existing functions

  • Fix parsing of lua colors over 0x80000000 on 32bits systems

  • Extra colors available to lua overlays

  • Lua write callbacks: adding optional third parameter to retrieve the value written

  • Added Sprites.lua script to visualize sprites

  • Zapper control

New Lua functions

  • emu.exit()

  • rom.getfilename()

  • zapper.set(table input)


  • Various GUI improvements and bug fixes

  • Fixed font rescaling issue

  • Relative position mouse support for better fullscreen mouse capture

  • Left and right mouse buttons no longer conflict with each other

  • Virtual boy controller

  • Fixed silly quit message randomizer

  • Fixed NTSC filter null pointer crash when closing, NTSC filter now supports emphasis

  • Sound output is now 48000 Hz by default

  • Improve error message for invalid ROM file


  • Added memory read/write conditional breakpoint capability

  • Added illegal opcode support for breakpoints

  • Support for 'S' register in conditional debugger breakpoints

  • Syntax highlight of disassembly

  • Fixed corruption of PPU reset while debugging

  • Attribute mode for nametable viewer

  • Greyscale palettes for PPU and nametable viewers

  • Fixed transparent sprite palette display in PPU viewer

  • Fixed accidental filtering of special symbols

Trace Logger

  • Added bank number log option


  • Fix Fixed VRAM data logging glitch

Hex Editor

  • Added OAM view feature

  • Added Home/End key response

  • Bookmark fixes for all view region types

  • Fixed Find dialog to be able to find the first or last byte of the memory region

  • Prevent middle mouse button from attempting to "FreezeRam" when not in RAM mode

  • Added Load from file feature

iNES Header Editor

  • A new tool which can edit the iNES header of ROM files

TAS Editor

  • Fixed dialog height that kept increasing


  • GUI completely rewritten using Qt5. Replaces old GTK GUI

  • New Qt GUI now contains most of the debug tools that previously only existed in windows version

  • Build setup migrated to cmake. Replaces scons build setup


The 2.2.3 release fixes a number of emulation bugs, features overclocking (for lag reduction) and Dendy mode, and adds support for a bunch of new ROM dumps (mostly unlicensed). Reverse engineering tools and Lua scripting have got some updates, new input devices are supported, new palette files have beed added. The SDL port has been fixed and updated as well.


  • Customizable overclocking

  • Dendy mode

  • Fixed rerecord counting broken outside taseditor


  • Added mappers: 29, 30,

  • Fixed mappers: 225, 119, 4, 35, 31, 69, 212, 45,

  • Fixed mmc5 IRQ handling

  • Fixed mmc1 reg#3 masking

  • Fixed vrc7 sound savestates

  • Added CoolBoy, KS7010, SB200, UNIF 158B, UNIF DRAGONFIGHTER, UNIF BMC-10-24-C-A1, UNIF EH8813A, UNIF HP898F, UNIF F-15, UNIF RT-01, UNIF UNL-KS7017, UNIF BMC-81-01-31-C, UNIF UNL-8-IN-1

  • NES 2.0 support

  • Fixed UNIF BMC 12 IN 1, UNIF OneBus


  • Fixed a bug with FDS flag being always set when converting a FCM


  • Prescale filter for 2x, 3x and 4x resolutions

  • Made NTSC filter internal resolution closer to 4:3


  • Support 512 color palettes

  • Added external palettes: SONY_CXA2025AS_US.pal, RP2C03.pal (and its versions), Unsaturated-V6.pal

  • Option to swap deemphasis bits


  • Option to swap duty cycles

  • NSF can be set to Dendy mode


  • Fix Mouse input implementation

  • Support for SNES mouse

  • PEC-586 russian keyboard support


  • Removed speed notification per script reload, if it remained 100%

  • Fixed lua drawings in NSF

  • Proper halo for lua font

  • Fixes to sound.get() region consistency and frequency/midikey detection for Noise and DPCM channels

New Lua functions:

  • emu.getpath()

  • emu.loadrom()

  • rom.writebyte()

  • gethash()


  • Added -dumpinput and -playinput functions

  • Support for SNES pad

  • Added onscreen messages when region changes


  • Added debuggerPageSize config variable which lets you pick whether 8KB physical PRG pages are used, or 16KB (the original). It defaults to 14 (1<<14 == 16KB).

  • Set symbolic debugger name entry dialog text limits when creating a new label

  • Fixed new-PPU debug information (address and pixel)

  • Step Into hotkey

  • More granular accounting of scanline and dot

Trace Logger

  • Fixed incorrect display of resolved address for (FF,x)

Symbolic debugging

  • Optionally display register names


  • Fix crash when attempting to open file picked as target for Save Stripped ROM operation

PPU Viewer

  • 8x16 sprite display mode

Hex Editor

  • Added option to dump entire 64k memory space

  • Don't forget to load the symbols, when hex editor is first launched before debugger

  • Show values for registers $4000-$4017


  • mmc5 Akumajou Dracula crash fix

  • More RAM available in search


  • Added apply button to video config dialog

  • Added link to libgd project download page in readme

  • Noted optional libgd dependency in readme

  • SCons: Fixed logic for LOGO and CREATE_AVI options

  • Manpage updates

  • Added hotkeys for volume up/down

  • Menu toggling with the Alt key

  • Print error when opengl/scalers are both enabled

  • Fixed bug where lua open file gui would default to home directory


The 2.2.2 release fixes a number of emulation bugs and adds many new features, most of which are related to debugging and reverse engineering.


  • Properly savestate NSF files

  • "Auto-resume old play session" now also works with NSFs


  • Fixed mappers 178, 28, 53, 154, 43, 253, 19, 2

  • Mapper 012 - added hardware dip for language select

  • UNIF PEC-586 - fixed render, added 512K cartridges suppport

  • Fixed UNIF 8157, UNIF T-262, UNIF DANCE2000

  • Palette RAM reading fix for Old PPU

  • Bring some improvements to New PPU from BizHawk, fix vtoggle5/6 back to vtoggle

  • Fixed mmc5 savestates


  • Fix wrong frequency calculation in sound.get() function

New Lua functions:

  • tobitstring()

  • memory.readword()

  • memory.readwordsigned()

  • debugger.hitbreakpoint()

  • debugger.getcyclescount()

  • debugger.getinstructionscount()

  • debugger.resetcyclescount()

  • debugger.resetinstructionscount()


  • Added "Square pixels" option to Video Config

  • "TV Aspect" ratio can be customized, by default it's 4:3

  • Changed "Disable hardware acceleration" checkbox to a drop-down list with 3 options

  • Movie recording: remember last Author name when creating a new movie

  • Movie recording: added ability to record "Insert coin" command (for VS games)

  • When no script is currently running, Shift+L loads the most recent Lua script

  • Dynamic link to lua51.dll instead of static linking, because some external libraries might crash without lua51.dll

  • Updated 7z.dll to v9.22

  • A couple of fixes which deal with "multiple ROMs in a single archive" case

  • Auto-disable "Game Genie ROM" feature when no "gg.rom" file is found

  • Fixed "Single Instance Mode"

TAS Editor

  • Comply with Lua movie.rerecordcounting() setting

  • Fixed workflow with "Auto-adjust Input according to Lag" disabled


  • Smart scrolling up/down by whole instructions - ported from an obscure version of FCEUXD 1.1

  • Scrolling maintains relative position of the ">" pointer inside the Disassembly window

  • Highlight PC pointer line when a breakpoint is hit

  • debuggerFontSize can be specified in fceux.cfg

  • Fixed storing and loading .deb files when working with archived ROMs

  • Fixed Cycles counter reset when loading an earlier savestate

  • Added Symbolic Debug naming by right-clicking any address or name

  • Symbolic names behave the same way as usual addresses

  • Newly created Bookmarks inherit existing symbolic name by default

  • Added CDL data column to the left from Disassembly, to distinguish executed branches of code from not executed

  • Added 'T' condition for breakpoints (it checks the bank of the accessed data, see docs)

Trace Logger

  • The dialog window can be resized

  • Do not clear window log when stopping the logging

  • Added "Log Cycles count" and "Log Instructions count" options

  • Added Symbolic Debug naming by right-clicking any address or name

  • Clicking any address select the address

  • Double-clicking any address brings Debugger at the address

  • Added mouse wheel support

  • Only output "from $XXXX" when the subroutine was called by JSR

PPU Viewer

  • Added "Mask unused graphics" feature (needs Code/Data Logger running)

  • Fixed window layout when using big fonts

Hex Editor

  • Added "Highlighting" submenu and "Highlight Activity" feature

  • Added Symbolic Debug naming by right-clicking any address

  • Specify Data bank condition when adding a Breakpoint by context menu

  • Fixed bugs when saving files while working with ROMs in archives

  • hexeditorFontSize can be specified in fceux.cfg

RAM Search/RAM Watch

  • Added "Hex Editor" button to RAM Search (right-clicking an address works as well)

  • Fixed RAM Watch bug when contents of old .wch file were mixed with the newly saved data


  • "--periodicsaves" command line option

  • "--4buttonexit" command line option

  • "--loadstate X" and "--savestate X" command line options

  • Added Unity desktop support

  • Added otion to use system-provided LUA library instead of statically linked LUA

  • Fix issue where battery backup save was not being saved when using "Quit" hotkey

  • Fixed bug where FCEUX would take exclusive grab of input in windowed mode when resuming from pause


The 2.2.1 release fixes many bugs and adds a couple of new features. The most notable feature is "Auto-resume old play session", which is similar to "Suspending Play". Enable this option in the Config menu and now you can close ROMs or emulator anytime, next time the game state will be resumed from the closing point.


  • Speed up HUD text drawing


  • Finished mappers to boards conversion

  • Fixed mappers 99, 228, 18, 198, 24, 26, 69, 19

  • Mapper 115 - redesign according to the hardware tests

  • Fixed "you ling xing dong" by assigning to mapper 192

  • Fixed crash when four-screen bit is set after CRC check

  • UNIF: verbose/safe chunk loading, fixes some crashes


  • removed "shadow pixels" from gui.text()

New Lua functions:

  • gui.parsecolor()

New scripts:

  • JumpingFCEUXWindow.lua


  • Fixed "Enter New Input" dialog (Hotkeys mapping)

  • Fixed zapper and mouse positioning in fullscreen

  • Remodel "Video config" dialog

  • Added "TV Aspect (4:3)"

  • Holding Shift when resizing FCEUX window inverts "Force integral factors" meaning

  • Fixed window regions redrawing

  • Added the option to define custom emulation speed (NES->Emulation Speed->Set Custom Speed)

  • Now Frame Advance timings (initial delay and speed) can be tweaked by user

  • Added Config->Enable->Auto-resume old play session

  • Moved "Config->Game Genie" to "Config->Enable->Game Genie ROM"

  • Play movie dialog shows New PPU in red if the required setting does not match

  • Fixed NameTable Viewer crash when the corresponding nametable RAM is not available on the cart

  • The number of active cheats is displayed on screen when a ROM is loaded

  • PPU/PAL/Input type changing is disabled when a movie is playing

TAS Editor

  • Fixed keyboard accelerators when editing Notes

  • Fixed Greenzone saving while emulator is unpaused

  • Fixed drawing bugs when the Playback cursor moves more than once within one update

  • Changed "Compact save" dialog, added 4 options of Greenzone saving

  • Added "Config->Project file saving options"

  • Changed "Follow cursor" logic, now the Piano Roll doesn't follow Playback cursor while seeking

  • No "Autopause at the end of the Movie" when Recording

  • Fixed bug when adding new item to History Log

  • Fixed Bookmarks List height on Windows 7

Trace Logger

  • Fixed RAM-located code logging when CDLogger options are enabled

  • Fixed automatic window update when a breakpoint is hit

  • Fixed RTS padding

Code/Data Logger

  • Added current CDL filename field and default CDL naming

  • Added "Auto-save .CDL when closing ROMs" option

  • Added "Auto-load .CDL when opening the window" option

  • Added "Auto-resume logging when loading ROMs" option

  • Improved CHR logging, now it also logs the data when using Old PPU

Hex Editor

  • Show symbolic names in the window caption when "Symbolic debug" is enabled

  • Fixed crash when trying to save ROM to an invalid path

  • Fixed ROM coloring when using CDLogger data

RAM Search

  • Added "Search ROM" option


  • Added "Add from CHT file..." button

  • Update the list of cheats when ROM is changed


  • Use desktop resolution for fullscreen by setting SDL.XResolution and SDL.YResolution to 0 (new default is 0)

  • Fixed bug where "quit" hotkey would do nothing in '--nogui' mode

  • Fixed fullscreen zapper issues

  • Display a message dialog on errors in addition to printing to stderr

  • Added "Options->Auto-Resume Play"

  • Fixed build issues on various versions of OS X


The 2.2.0 release fixes a lot of bugs and adds many new features to prior releases, increasing game compatibility and enhancing usability of both Windows and SDL ports. The Windows version also includes major improvement of debugging tools and introduces the new powerful toolset – TAS Editor v1.0 – created to boost efficiency and ease of Tool-Assisted Speedrunning.


  • Fixed crash when using machine with no sound card

  • Fixed long savestate messages containing path

  • Soft reset and power switch messages

  • All onscreen messages are now logged to Message Log

  • Fixed wrong default palette entry

  • Fixed bug when loading UNIF games

  • Improved HUD text rendering wrapping

  • "Display FPS" option


  • PAL/NTSC noise channel bug fixed

  • All latest mapper changes from fceu-mm

  • Also added mappers 176, 116, 156, 252, 28

  • Fixed mappers 242, 227, 115, 248, 12, 164, 15, 253, 23, 178, 90, 73 and many others

  • Straighten out bandai m159/m016 handling and add valid null-EEPROM emulation to get those games booting.

  • Add ability for CNROM games to choose whether they have bus conflicts (fixes Colorful Dragon (Unl) (Sachen), since it flakes out if bus conflicts are emulated)

  • Fixed bus conflict emulation, no kage no densetsu bug anymore

  • Fixed newppu bug which prevented metroid from booting, CHR RAM was not getting initialized to anything

  • Newppu - fix bug in scroll reg logic causing mis-scrolls in p'radikus conflict


  • Fixed old bug in "Play Movie From Beginning"

  • Fixed replay engine bug that doubles the last input of the movie

  • Fixed movie savestates logic, loading post-movie savestates from different timeline is not allowed in read-only

  • Fixed savestates filenaming bug when working with a movie

  • Added support for HUD recording in AVI dumping

  • Rerecords counter display

  • Config->Movie options->Always suggest Read-Only replay (for Replay dialog). No more accidental rewrites!

  • Removed "Lag Counter Reset" hotkey, as it was obsolete since FCEUX 2.0.2


  • Fixed lua drawing alpha blending

  • Auto-clearing previous frame drawings (same behaviour as other emulators)

  • New library: taseditor (Windows-only) - contains 24 functions, see taseditor.chm

New Lua functions:

  • emu.paused()

  • emu.setlagflag()

  • joypad.getimmediate()

New scripts:

  • BoulderDash_AmoebaAI.lua

  • ButtonCount.lua

  • CustomLagIndicator_RvT.lua

  • RBIBaseball.lua

  • SoundDisplay.lua

  • SoundDisplay2.lua

  • taseditor\InputDisplay_for_Selection.lua

  • taseditor\InvertSelection.lua

  • taseditor\RecordBackwards.lua

  • taseditor\ShowNotes.lua

  • taseditor\Swap1P2P.lua

  • taseditor\TrackNoise.lua


  • Total revamp of fulscreen support

  • Fixed graphic tearing with vertical sync enabled

  • Added "Maintain aspect ratio" option to Video config

  • Added "Hide mouse cursor" and "Use console BG color for empty areas" options to Video config

  • Added "Switch fullscreen by double-click" option to GUI config

  • Added "Force Grayscale" option to Palette config

  • Fixed crashes and bugs caused by 2.1.5 allowing hotkeys without ROM loaded

  • Lua console now gets proper file path when selecting a file from the recent menu

  • Fixed context menus to use rightclicks in context menus correctly

  • Reload hotkey now also supports removing invalid filenames in Recent ROMs

  • Replay dialog speedup, it doesn't search for movies in fceux root folder anymore

  • Support multibyte languages for opening files through drag&drop (except for Lua files)

  • Loading TAS Editor projects (*.fm3) by drag&drop

  • Fixed bug with Input Config not displaying some key names

  • Launch tools hotkeys shown in menu; general cleanup of menu/settings, changed some checkboxes to radiobuttons

  • Added "Clear" button to Message Log

TAS Editor

  • Completely rewritten tool with brand new architecture and design. Too many changes to enlist, see taseditor.chm


  • General window layout cleanup; different font; ".DEB files" can be switched off; etc

  • Deleting a breakpoint/bookmark leaves selection in the list

  • Fixed mysterious out of bounds condition while editing breakpoints

  • Fixed RAM peek by a rightclick on left pane

  • Allow Frame Advancing when Debugger is in breakpoint state

  • Disabled breakpoints now don't impose slowdown

  • When a breakpoint is hit, it becomes highlighed (selected) in the breakpoints list

  • Show the number of breakpoints (enabled and total) above the breakpoints list

  • ">" points at current line in disassembly

  • Improved stack display

  • Added "CPU cycles" and "Instructions" counters (cumulative and delta)

  • Added "Cycles counter exceeds N" and "Instructions counter exceeds N" type of breakpoints

  • Single click on any address copies this address to the "Seek To" field and "Bookmark Add" field

  • Double-click on any address prompts "Add Breakpoint here" dialog

  • "ROM offsets" option displays real ROM addresses in the Disassembly window

  • Fixed conditional breakpoints bug: the error message didn't appear when editing a breakpoint

  • Fixed and improved Symbolic debug (Names and Comments display)

  • Added Bookmarks naming

  • Cleaned up and vastly improved debugging documentation

Trace Logger

  • Added "Symbolic trace" option

  • "RTS" instructions now output the subroutine address/name

  • Added "Use Stack Pointer for code tabbing (nesting visualization)" option

  • Added "To the left from disassembly text" option for log format customization

  • Added "Log current Frame number" option

  • Added "Log emulator messages" option

  • Added "Log breakpoint hits" option

  • Fixed bug with trying to log to file without choosing a filename

  • Tracer now also updates its window when user pauses the game, not just when Debugger snaps

Code/Data Logger

  • Now can log data access from RAM code

  • "Save Unused Data" button complements "Save Stripped iNes Rom" feature

  • Now can log VROM access (CHR banks of the ROM) when NewPPU is enabled

Hex Editor

  • Display 0x5000-0x5FFF contents

  • Ctrl+F opens Find dialog

RAM Watch / RAM Search

  • Updating list when emulator is paused (on Power or when resetting search)

  • Fixed loading Data Size and Data Type from a .wch, now corrupted .wch won't crash


  • Added Compare box to the Cheats window

  • Don't lose cheat compare value when toggle cheat enables through UI

  • Parse cheat files with non-ASCII characters properly


  • gtk 2.24 now recommended

  • added gtk hotkey configuration dialog

  • updated/added various gui elements for options

  • new option: SDL.ShowFPS

  • new option: SDL.Input..EnableOppositeDirectional - allow/disallow simultaneous right+left/up+down input

  • fixed various build issues

  • fixed segfault occuring during particular sequences in the cheat menu

  • fixed potential segfault with gui

  • fixed segfault issue on debian/ubuntu with proprietary nvidia drivers

  • now compatible with llvm/clang++

  • added build option to dynamically link lua

  • updated default server configuration file to "fceux-server.conf" (from "fceu-server.conf")

  • updated manpage and documentation


The 2.1.5 release fixes a lot of bugs and brings various improvements to the prior 2.1.4a release. In addition, the SDL port has improved signficantly; completely overhauling the GTK2 GUI, fixing many sound issues, and fixing a variety of bugs.


  • Fixed compatibility issue with Young Indiana Jones Chronicles

  • Fixed bug in new PPU that made some intensify bits not get applied to output (fixed flashing siren screen in Werefolf)

  • Fix many segmentation faults related to file handling


  • Slight performance increase when loading movies

  • Fixed read-only loadstate error messages and logic


  • Lua socket added to built-in lua library

  • Fixed speed.mode() function so that normal turns off turbo

New Lua functions

  • gui.savescreenshotas()

  • sound.get()


  • Fixed bug where PPU toggling toggled the Game Genie as well

  • Fixed some minor GUI issues

  • Added avi capture commandline argument and related parameters

  • Fix input selection for Famicom Expansion port


  • Fixed Ram Search to only display valid RAM addresses (0000-07FF and 6000-7FFF)

  • Fixed crash when re-opening debugging window

Hex Editor

  • Added a confirmation prompt before removing all bookmarks

Ram Watch / Ram Search

  • Fixed the multiple selection of watches

  • Added support for Multiple selection of addresses in RamWatch Fixed issue with restoration of the selection range in RamWatch


  • General cleanup

  • Fixed crash when truncating while turbo was enabled

  • Invalidate greenzone when re-recording earlier portions of a movie


  • Added "SaveStateAs" menu item

  • Display movie name at the top of the main window


2.1.4 is a maintenance release that fixes these bugs in 2.1.4:

fix crash bug on .fcm convert

fix erroneous reporting of savestate past the end of movie error during read-only loadstates

Released 31 May 2010

The 2.1.4 release fixes many bugs and adds new features compared to 2.1.3. In addition it also fixes up the movie code significantly; fixing implementation problems, loading speed, adding new features, and fixing bugs.


  • Added microphone support option. When enabled, Port 2 Start activates the Microphone

  • Prevent .zip files containing no recognized files from causing crash

  • Autohold - Added player 3 and 4 to autohold notification window, labeled controller input

  • mapper 19 savestate fix mirroring for "Dream Master (J)" corrected to "four-screen" by CRC check

  • Disable auto-savestates during turbo

  • Fixed so Gotcha! auto-enables the zapper

  • Autohold - Added player 3 and 4 to autohold notification window, labeled controller input


  • Fully implemented "bulletproof" read-only

  • Movie code now fully conforms to the Savestate section of the Laws of TAS

  • Fixed a potential desync that plays out an extra frame without an update to the frame count involving heavy lua use, joypad.get, and a loadstate

  • Movie support for microphone

  • Movies now have a "finished" mode.  If a playback stops the movie isn't cleared from memory, and can be replayed or a state loaded Similar functionality as DeSmuME and GENS rerecording

  • New PPU flag in movie headers (doesn't change an emulators PPU state when loading a movie)

  • Much faster movie loading and movie-savestate loading

  • Made gamepad 2 off by default (so less movies should have unused player 2 data)

  • Implemented a "full savestate-movie load" mode similar to the implementation in VBA-rr and SNES9x-rr.  In this mode loading a savestate in read+write doesn't truncate the movie to its frame count immediately.  Instead it waits until input is recording into the movie (next frame).  For win32 this feature is togglable in movie options and the context menu.  For SDL this is off by default and a toggle will need to be added

  • Movie + loadstate errors are handled more gracefully now, with more informative error messages and the movie doesn't have to stop if backups are enabled

  • Fix PlayMovieFromBeginning when using a movie that starts from savestate


  • fix bug that caused to crash when movie playback ends

  • Win32 - Added option for palette selection as color for LUA colors. Included is a LUA script to display all choices with the value used to pick displayed color

New Lua functions

  • movie.ispoweron()

  • movie.isfromsavestate()

  • emu.addgamegenie()

  • emu.delgamegenie()

  • savestate.object() which is savestate.create() with intuitive numbering under windows

  • gui.getpixel() which gets any gui.pixel() set pixel colors, and possibly other functions

  • emu.getscreenpixel() which gets the RGB and Palette of any pixel on the screen

  • lua function movie.getfilename() which returns the current movie filename without the path included

Input Display

  • Input display updates on loadstate

  • Input display overhaul that uses different colors for different input contexts

  • Input display now shows both currently pressed buttons and buttons held the previous frame


  • Added NTSC 2x scalar option with some CFG config options of it's own Added Ram Search hotkeys for the first 6 search types in the list

  • Add Cheat buttons for Ram Search and Ram Watch

  • With special scaler in window mode, it's possible to resize to anything above the minimum.

  • Recording a new movie adds it to recent movies list

  • Replay dialog, when selecting a movie in a relative path (.\movies for example), the recent movies list stores an absolute path instead

  • Replay dialog shows PAL flag and New PPU flags

  • CDLogger - fixed bug preventing correct interrupt vectors from logging

  • Memwatch - ignore spaces at the beginnign of an address in the address boxes

  • Replay dialog - fix bug that was causing it to always report savestate movies as soft-reset


  • Added conditional debugging option 'K', for bank PC is on

  • Fixed bug involving pausing emulation outside of the debugger, then trying to use the debugger commands, and having the CPU registers become corrupted

  • Made debugger able to break on and distinguish Stack reads/writes

Hex Editor

  • Added "Goto" command

  • Made the Hex Editor display the Frozen, Bookmarked, etc. status of the selected address, and made the Frozen color override the Bookmarked color.

Cheat Search

  • Made enabling/disabling cheats no longer deselect the selected cheat

  • Added context menu to Cheat Dialog Cheat Listbox, populated list with Toggle Cheat, Poke Cheat Value, and Goto In Hex Editor

  • Enabled multi-select for Cheat menu to allow multiple toggles and deletes

  • Made cheat menu's Pause When Active effect immediate


  • Added Tools - GUI option to partially disable visual themes, so the emulator can be made to look like it did in 2.1.1 and earlier releases. Drag & Drop - if dropping a .fcm with no ROM loaded, prompt for one (same functionality that was added to .fm2 files)

  • Added single-instance mode, which makes starting a second copy of FCEUX load the file into the first, then exit.Mode off by default, togglable under Config - GUI


The 2.1.3 release fixes some bugs of 2.1.2, increases game compatibility, and adds usability enhancements to the windows port and adds a GUI to the SDL port.


  • Fixed mappers 82, 25, 21, and 18.  Games such as SD Kiji Blader, Ganbare Goemon Gaiden, and Ganbare Goemon Gaiden 2, Jajamaru Gekimadden are now playable

  • Fixes for mappers 253 & 226 - fixes games such as Fire Emblem (J) and Fire Emblem Gaiden (J)

  • Fix crashing on game loading for any battery backed ROMs with mappers from MapInitTab (fixes Esper Dream 2 - Aratanaru Tatakai (J)

  • FDS - show name of missing bios file in error message

  • NewPPU - fixed sprite hit before 255 and for non transparent hits only, thanks to dwedit for providing the fix

  • .fm2 file format header now has an FDS flag


  • A GUI!  A graphic user interface (using GTK) with many basic menu options

  • ported to SDL 1.3; compatibility maintained with 1.2

  • unix netplay is now functional; gtk network gui created

  • now prints the name of the mapper on ROM load

  • fixed dpad/joyhat support

  • VS unisystem keys now configable

  • changed default hotkeys and keys to match Win32

  • disallow --inputcfg gamepad0 and gamepad5


  • Made savestate backups optional (config - enable - backup savestates)

  • Made savestate compression togglable (config - enable - compress savestates)

  • Cheats dialog - Pause while active checkbox

  • Cheats dialog - Toggling a cheat in the cheats list now updates the active cheats count

  • Debugger - added an auto-load feature

  • Debugger - Fix so it doesn't crash if unminimized with no game loaded

  • Closing minimized windows no longer moves them the next time they get opened

  • Lua console - added a menu

  • Lua console - filename updates when lua scripts are dragged to emulator or recent filenames invoked

  • Name Table Viewer - Fix for use with New PPU

  • Trace Logger - Trace logger now logs the values of the stack pointer register

  • If a .fm2 file is drag and dropped with no ROM load, the open ROM dialog will appear

  • disable movie messages menu item

  • Added more window positions bounds checks. Accounts for -32000 positions and less out-of-range too

  • TASEdit - Added interface functionality (save/load, running TASEdit mid-movie, etc.)


  • New lua functions: gui.parsecolor(), joypad.getup(), joypad.getdown(), emu.emulating()

  • Change gui.line,, joypad.get to function consistently with other lua emulators such as GENS rerecording

  • fixed to read movie data if a movie is playing.  Also changed the struct values to x,y,fire. This breaks lua scripts that used it previous, sorry

  • gui.text() now has out of bounds checking

  • Lua no longer unpauses the emulator when a script is loaded


The 2.1.2 release fixes some bugs of 2.1.0a, increases game compatibility, launches a new PPU core, and adds usability enhancements to the windows port.


  • New PPU is now functional!  You can access it by changing the newPPU flag in the config file.  Windows users can access it from Config > PPU > New PPU

  • Dragon Ball Z 3 now playable again

  • Fixed action 52 game that was broken in post-FCEUX 2.0.3 versions

  • Mapper 253 mostly implemented

  • Mapper 43 fixed bug


  • Imported NSF features from FCEUXDSP-NSF.  Debugging tools are now compatible with NSF files.

  • Movies now record FDS disk swapping commands

  • Movie play dialog displays movie time based on ~60.1 (~50.1 PAL) instead of 60 & 50

  • Ram Watch and Ram Search dialogs imported from GENS rerecording

  • Ram Filter dialog removed (now redundant compared to both cheat search and ram search)

  • Lua script window ported from GENS

  • Fix for the directory overrides bug that caused overrides to reset

  • Debugger:  .deb file saving/loading restored

  • "Save config file" menu item

  • "New PPU" menu item

Minor Bug fixes

  • Minor fixes to recent menus

  • Fixed a bug that prevented the Map Hotkeys dialog's X button from closing the dialog

  • Restored DPCM Logging when Code/Data Logger is active

  • Memory watch - Save Changes Prompt - clicking save will default to quicksave first and save as 2nd (instead of always defaulting to save as)

  • Made Trace Logger refresh adequately when using stepping options in the debugger.


  • joypad.set() fixed.  True,False, and Nil now work properly for all buttons.  In addition there is a new "invert" option.

  • Lua5.1.dll no longer required to use lua.

  • fceu.unpause()

  • Added savestate.registerload(), savestate.registersave(), savestate.loadscriptdata()

  • emu. library, has all the same functions as fceu. library for better compatibility between lua emulators

  • Many additional function names to increase consistency with other lua emulators

  • Added movie.recording() and movie.playing()

  • Added memory.getregister() and memory.setregister()

  • Added gui.popup and input.popup

  • Added savestate.registerload(), savestate.registersave(), and savestate.loadscriptdata()

New Lua Scripts

  • A multi-track movie recording tools written by FatRatKnight.  Allows input for different players to be recorded separately.

  • A rewinding tool by Antony Lavelle


This release includes a multitude of new features, major fixes, and enhancements.

The 2.1 new release fixes some bugs of 2.1.0a, improves the accuracy of the sound core, and adds useability enhancements to the windows port.

Common - Bug fixes

  • Fixed reported issue 2746924 (md5_asciistr() doesn't produce correct string)

  • Made default save slot 0 instead of 1

Improved Sound core/PPU

  • Fixed the noise value, it seems that the noise logic was shifting the values to the left by 1 when reloading, but this doesn't work for PAL since one of the PAL reload value is odd, so fix the logic and used the old tables. Revert a stupid CPU ignore logic in PPU. Sorry about that.

  • Updated with the correct values for the noise and DMC table,

  • Fixed the CPU unofficial opcode ATX, ORing with correct constant $FF instead of $EE, as tested by blargg's. These fixes passes the IRQ flags test from blargg, and also one more  opcode test from blargg's cpu.nes test.

  • Square 1 & square 2 volume controls no longer backwards

  • Length counters for APU now correct variables

NewPPU (still experimental, enabled by setting newppu 1 in the config file)

  • Added experimental $2004 reading support to play micro machines with (little) shakes, and fixed some timing in the new PPU.

  • Added palette reading cases for the new PPU.


Minor Bug fixes

  • Replay movie dialog - Stop movie at frame x feature - fixed off by 1 error on the stop frame number

  • Hex Editor - changed ROM values again dsiplay as red, saved in the config as RomFreezeColor

  • Fixed bug in memory watch that would make the first watch value drawn in the wrong place if watch file was full

  • Debugger - Step type functions now update other dialogs such as ppu, nametable, code/data, trace logger, etc.

  • "Disable screen saver" gui option now also diables the monitor powersave

  • Recent menus - no longer crash if item no longer exists, instead it ask the user if they want to remove the item from the list

  • Sound Config Dialog - When sound is off, all controls are grayed out

  • Memory Watch - fixed a regression made in 2.0.1 that broke the Save As menu item

  • Memory Watch - save menu item is grayed if file hasn't changed


  • Last save slot used is stored in the config file

  • Made fullscreen toggle (Alt+Enter) remappable

  • Hex editor - Reverted fixedFontHeight to 13 instead of 14.  Gave the option of adjusting the height by modifying RowHeightBorder in the .cfg file

  • Hex Editor - allowed the user to customize the color scheme by use of RGB values stored in the .cfg file

  • Hex editor - freeze/unfreeze ram addresses now causes the colors to update immediately, but only with groups of addresses highlighted at once (single ones still don't yet update)

  • Hex Editor - Save Rom As... menu option enabled and implemented

  • Window caption shows the name of the ROM loaded

  • Recent Movie Menu added

  • Load Last Movie context menu item added

  • Save Movie As... context menu item (for when a movie is loaded in read+write mode)

  • Drag & Drop support for all files related to FCEUX including:

.fcm (autoconverts to .fm2 and begins movie playback)


Palette files (.pal)

  • Commandline - -palette commandline option

  • Memory Watch - option to bind to main window, if checked it gives GENS dialog style control, where there is no extra task bar item, and it minimizes when FCEUX is minimized


  • added --subtitles

  • fixed Four Score movie playback

  • added --ripsubs for converting fm2 movie subtitles to an srt file

  • Lua is optional again, fixed the real issue

  • Lua is NO longer optional, so the SConscripts have been updated to reflect that change.  This fixes the mysterious non-working input issue.

  • implemented saving/loading a savestate from a specific file on Alt+S/L

  • implemented starting an FM2 movie on Alt+R

  • added --pauseframe to pause movie playback on frame x

  • dropped UTFConverter.c from SDL build

  • added hotkey Q for toggling read-only/read+write movie playback


This release includes a multitude of new features, major fixes, and enhancements.

New Features Win32

*The latest mappers and mapper fixes from FCEU-mm.  Adds support for many new games such as Warioland II (Unl), Shu Qi Yu,  and Street Dance

*Full screen mode fixed!  Also, Alt+Enter properly toggles full screen.

*Individual control for sound channels! (See sound config for details).

*Undo/Redo Savestate/Loadstate features installed!  No more loss of data to unintentional presses.  (See getting started for details).

*Movie subtitles can now be included in .fm2 files.  See .fm2 documentation for details and Movie options for details on customizing.

*Auto-backup for movie files.  (See movie options for details).

*A Ram change monitor for the Memory watch dialog. (see memwatch for details).

*Frame counter works even without a movie loaded.

*AVI Directory Override option.

Major Bug / Crash Bug Fixes

*Fixed throttling problems that resulted on AMD Dualcore processors. (Caused FCEUX to appear to be in turbo mode).

*Fix major crash issue where NROM game (such as SMB) savestates were writing erroneous information if a non NROM game was loaded prior.

*Fixed a bug that caused a new sav file to not get created when loading a 2nd battery backed game.

*Fix Directory Overrides so to allow users to have no override.  Also fixes directory override reset bug.

Minor Bug fixes

*Hotkeys - prevent "Hotkey explosion" where some laptop keys set off all unassigned hotkeys

*Timing - "disable throttling when sound is off" now only affects FCEUX when sound is off

*Clip Left and Right sides taken into account when drawing on screen (record/play/pause, lag & frame counters, messages, etc)

*Fixed bug where having sound off and Mute turbo caused chirps when toggling

*Video settings - fixed bug when both aspect ratio correction and special scaling 3x are set, video was getting resized incorrectly

*Auto-save cleanup -prevent loading an auto-save from previous session.  Added flags for enabling auto-save menu item.

*Fixed issues related to big endian compiling.

*Fix bug so that Escape can now be assigned as a hotkey

*Fixed bug in screenshot numbering that caused numbering to not reset when changing games.

GUI / Menu Enhancements

*A right-click context menu added!  Includes many commonly used items for a variety of situations.

*Menu items that are hotkey mappable now show their current hotkey mapping

*Major overhaul to the Menu organization.

*All FCEUX features are now accessible in the menu

*Alt Menu Shortcuts properly configured

*Menu items are properly grayed when not useable

*All movie related menu items moved to a Movie options dialog

*Removed hard-coded Accel keys and replaced with re-mappable hotkeys (Open & Close ROM)

*Drag & Drop for .fm2 and .lua files

*Many new functions added to the context menu (See context menu for details)

*New Mappable Hotkeys: Open Cheats, Open ROM, Close ROM, Undo/Redo savestate, Toggle Movie Subtitles


*Added input.get() !  Returns the mouse info and all keyboard buttons pressed by the user.

*Fixed joypad.set().  False now sets a button to off.  Nil does not affect the button at all (allowing the user to still control it).

*gui.text() Increased height (to approx. 7 lines).

*speedmode("turbo") now turns on turbo (which employs frame-skipping) rather than max speed.

*memory.readbyte will recognize frozen addresses (cheats).

*movie.framecount() always return a number, even when no movie is playing (since the frame counter is implemented without a movie loaded).

*Added FCEU.poweron()

*Added FCEU.softreset()

*Added FCEU.lagged()

*Added FCEU.lagcount()

*Added FCEU.getreadonly()

*Added FCEU.setreadonly()

*Added FCEU.fceu_setrenderplanes(sprites, background)


*Added movie.rerecordcount()

*Added movie.length()

*Added movie.getname()

*Added movie.playbeginning()

*Added -lua command line argment, loads a Lua script on startup

*Added - returns the zapper (mouse) data.  (Currently does return zapper data in movie playback).

*Added joypad.write and joypad.get for naming consistency.

*Added rom.readbyte()

*Added rom.readbytesigned()

Sound Config

*Turning sound off disabled sound config controls

*Re-enabled sound buffer time slider control

Hex Editor

*Freezing ram addresses automatically updates the Cheats dialog if it is open.

* Added prevention from freezing more than 256 addresses at once (doing so caused crash bugs).

*Dialog remembers window size.

*Dump Rom & Dump PPU to file Dialogs use ROM to build default filename

*Maximize and minimize buttons added.

*Help menu item added

Memory Watch

*Dialog now includes Ram change monitoring. (see memwatch for details).

*Dialog is now collapsible to 1 column.

*No longer crashes when attempting to load an invalid file from the recent file menu.

*Cancel option added to the save changes dialog.

*Memory address values that are frozen by the debugger or hex editor are displayed in blue.

*Fixed bug that caused dialog to "disappear" due to saving -32000 as its window position.

*Save as dialog uses ROM name to build a default memory watch filename if there was no last used memory watch filename

*Drag and drop for .txt (memory watch) files.

*Minor menu and hotkey fixes.

*Watch values now compatible with custom windows dialog colors.


*Shows scanlines and PPU pixel values

*Shows scanlines even while in VBlank

*Added a Run Line button (runs 1 scanline per click)

*Run 128 Lines button (runs 128 scanlines per click)

*Number of active cheats listed.

*Cheats list automatically updated if ram addresses are frozen in the hex editor.

*Fixed bug that caused dialog to "disappear" due to saving -32000 as its window position.

*Debugger now has a minimum valid size

*Added "Restore original window size" button

PPU Viewer

*Default refresh value set to 15

*Refresh value stored in the .cfg file

Nametable Viewer

*Default refresh value set to 15

*Refresh value stored in the .cfg file

Trace Logger

*Fixed bug where user can't scroll the log window while it is auto-updating.

*Changed message about F2 pause (left over from FCEUXDSP) to display the current hotkey mapping.

Text Hooker

*Saving a .tht file no longer crashes

*Dialog updates every frame

*Initialization error checking reinstalled,

*Dialog remembers window position

*Fixed bug where canceling save as produces an error message.

*Save As produces default filename based on the current ROM

Message Log

*Remembers X,Y position

*Resized width and height

*Allowed more lines of text to appear on the screen at once.


*Remembers window position

*Can be called from the context menu if a movie is loaded (see context menu for details).


*added help menu item

*disabled menu items that are not currently implemented.


*Turbo now employs frame skip, greatly increasing its speed

*The mute turbo option completely bypasses sound processing (another big speed boost)

*Turbo now works with the Lazy wait for VBlank sync setting


*SDL Movie subtitle support and subtitle toggle hotkey added.

*SDL Added fcm to fm2 converter tool to SDL version.

*SDL Improved the SDL sound code; drastically improves quality of sound.

*SDL Savestate slots are now mappable.

*SDL Major updates to SDL documentation

*SDL Added Shift+M for toggling automatic movie backups.

*SDL Added option to mute FCEUX for avi capturing, check the documentation for more details.

*SDL Added --noconfig command line option

*SDL Frame Advance Skip Lag frames toggle implemented


This release includes some key bug fixes and feature enhancements.

Major Bug / Crash Bug Fixes

* Reset/Power-on recording for .fm2 files!

* fix ..fcm conversion, recording, and playback of reset and power commands

* Win32 - auto-load the only useful ROM or movie from an archive, in cases where there is only one

* Win32 - permit user optionally to proceed through the movie savestate mismatch error condition, in case he knows what he is doing.

* Win32 - fix a bug in the savestate recovery code which prevent aborted savestate loads from recovering emulator state correctly.

* gracefully handle non-convertible broken UTF-8 text without crashing

* Win32 - don't read every archive file when scanning for replay dialog. scan them, and only look for *.fm2

New Features Win32

* Win32 - added a toggle for binding savestates to movies

* Win32 - added -cfg (config file) command line argument

Minor Bug fixes

* Win32 - Sound config dialog will now look to see if Mute Turbo should be checked

* Win32 - Debugger - Fix Child windows inside debugging window get invalid sizes

* Win32 - bind a menu option for display frame counter

* Win32 - fix problem where replay dialog couldn't work when the process current directory had changed to something other than emulator base directory

* Lua ignores second joypad.set()

* Load state as... does not use the savestate override dir (fixed; now, it does)

*Win32 - debugger - fix issue where keyboard keys get stuck when switching between debugger window and main window


* SDL - added support for AVI creation for SDL, see documentation/Videolog.txt for more

* SDL - --inputcfg can now be used without a filename

* SDL - should fix issues with missing author field crashing FCEUX

* SDL - toggle lag frame counter for SDL, default hotkey F8

* SDL - toggle skipping of lag frames for SDL, default hotkey F6

* SDL - user ability to toggle "bind savestates to movie" added for SDL, default hotkey F2

* SDL - Lua is now optional, thanks Shinydoofy for a patch.  also fixed some build issues.

* SDL - fixed an issue where flawed movie would crash FCEUX on every startup

* SDL - fixed issue where windowed mode would always be set to 32 bpp

* SDL - fixed ppc build errors and added LSB_FIRST option to build scripts

* SDL - --newppu option added to SDL, disabled by default


* GFCEUX - made the input config window more usable

* GFCEUX - added uninstall script for GFCEUX


This release includes a large number of bug fixes, feature enhancements, and new features.

Fixed Crashing Bugs

* restore savestate error recovery functionality.  Will prevent crashes after savestate error messages

* Fixed - Low speeds (1%) crash FCEUX

* fixes bug where palflag 1 in .fm2 files crashes fceux

* FCEUX no longer crashes when attempting to open a non movie file

* Buffer overflow (change vsprintf to vsnprintf)

Minor Bug fixes

* SRAM not wiped on power cycle (during movies)

* Moviefilenames without extension now automatically get fm2

* auto-fill .fcs extension in save state as dialog

* FCM>FM2 converter releases file handle

* fix a new bug in windows build which caused fourscore emulation to fail in some cases

* Player 3 no longer inputs when not used

* prints a special message when trying to open an FCM reminding user to convert.

* fixes bug where Avi recording with no sound messes up the format

* Fixed bug where Convert .fcm didn't do special characters

* fixed the (null) in the default lua directory listing

* Ctrl+X now works in the memory watch dialog

* Dialog window positions won't "disappear" (-32000 protection on all dialogs that remember x,y)

* fixed View Slots bug - will now always show the used slots

* added shift+L as default hotkey for reload lua script

* added input display to the FCEUX main menu

* change config filename from fceu98.cfg to fceux.cfg

New Features

* restore IPS patching capability which was lost when archive support was added

* restore ungzipping (and unzipping in sdl) capability which was lost when archive support was added

* re-enable an "author" text field in the record movie dialog

* re-enable support for old-format savestates. (Note: can not be loaded into a movie!)

* Added new toggle - frame adv. - lag skip (menu item + hotkey mapping + saved in config), will cause frame adv. to skip frames where input is not read

* Added support for loading movies from archives (just like ROM files).  Note: Movies loaded from an archive file will be read-only.

* movie replay dialog displays fractions of a second on movie length

* Savestates now save the Lagcounter information.

* added a mute turbo option in sound config

* add an option to pick a constant color to draw in place of BG when BG rendering is disabled (look for gNoBGFillColor in config).


* remove cnrom chr rom size limit for homebrew roms

* mmc5 - 64KB WRAM games now work correctly

* mmc5 - use of chr A regs for BG in sprite 8x8 mode is fixed

* upgrade to cah4e3's latest mapper 163&164 code to fix a crash in a game

Debugging Tools

* Debugger - restore snap functionality

* Debugger - add FORBID breakpoints - regions which block breakpoints from happening if they contain the PC

* Debugger - debugger window is now resizeable

* nametable viewer  will display correct NT,CHR,ATTR data in more cases (specifically, including some exotic mmc5 cases).


* Savestates remember Lua painting

* add memory.readbyterange to emulua

SDL only

* SDL: fixed --input(1-4) options.  input1 and 2 are regular inputs, input3 and 4 are famicom expansion inputs

* SDL fix configfile woes. configfile now goes to ~/.fceux/fceux.cfg

* SDL: fixed segfault when opening .fcm files

* SDL: Saner sound defaults for less choppy sound

* SDL: "--special" option fixed for special video scaling filters

* SDL: cleaned up the SConsruct

* SDL: fixed issue where fceu would lock up when file dialogs were opened during fullscreen

* SDL: fixed bug where fceux would close when file dialogs were closed

* SDL: File open dialog is now used to movie playback

* SDL: File open wrapper now takes a titlebar argument

* SDL: Cleanup of usage

* SDL: rename options --no8lim -> --nospritelim and --color -> --ntsccolor

* SDL: Screenshots now always prepend the game name.

* SDL: Changed default A/B from numpad 2 and 3 to j and k.

* SDL: Enable frameskip by default

* SDL: Fixed a bug that would crash fceux if the emulation speed was overincreased

* SDL: New default hotkeys to more closely match win32 defaults

* SDL: Added lua script loading hotkey (f3).  Non win32 SDL requires zenity for this to function.

* SDL: Build script cleanup; also added option for DEBUG builds.


This was a maintenance release that fixes a few oversights in the 2.0.0 release.

* reorganize display toggle options in the menu

* autofire fix (wasn't initializing to any autofire pattern from a fresh .cfg)

* homebrew mmc5 games now have 64KB of exwram instead of only 8KB

* fix crash related to player2 in lua scripts

* fixed player2 in lua scripts


FCEUX has all the latest tools, enhancements, and features from FCEU 0.28 rerecording and FCEUXDSP 1.07  In addition, it has many new tools, bug fixes, and enhancements not seen in previous branches.


-A detailed Help Menu!  No longer are you aimlessly searching the internet for long lost info on FCEU's options!

-Numerous Dialog box reformats.

-FCEU remembers its last screen (x,y) position.

-Increased command line options

-More options under the Directory Override Menu

-A Turbo Toggle option (turbo now can be toggled on rather than having to hold the key down)

-More hotkey assignable options in the Map Hotkeys Menu.

-A lag counter

-Autofire uses the lag counter (so it will skip over lag frames)

Movie support

Overhauls in both the movie and savestate file formats.

.fm2 File format

The .fcm file format has been overhauled into a new .fm2 format.  Changes include:

-Uncompressed and text based format.  Movie editing can be done simply in a text editor.

-Recording from soft reset option removed.

-Recording from start (hard reset) no longer has an empty savestate at the beginning.

-GUID inserted into movies for better savestate/loadstate error handling.

-Rather than an Author field, it has a full metadata menu where an author can put any info needed.

-A tool to convert .fcm files to .fm2 files.

-More specific info on .fm2 files in the .fm2 documentation.


-New savestate file format.  NOTE:  Savestates from previous FCEU versions CAN NOT be used in FCEUX.

-Fully functional error handling (savestates from other movies cannot be loaded).

-Read-only toggling related bugs fixed.

-Savestate filenames include the name of the movie (if a movie was playing when made).  This prevents loading wrong savestates. (This also means that savestate 0 is different when a movie is playing and when it is not).

7z Archive Support

-ROMs in any 7z compatible compressed format can be opened directly.

-If more than one valid ROM exists in an archive file, then a dialog box will open with a list of available ROM choices.

TAS Edit

-A brand new powerful movie making tool that revolutionizes the way TAS movies are made.  See TAS edit.

New Tools

TAS Edit - a revolutionary new way of making TAS movies.

Input Presets - a system for quickly toggling different input configurations.

Tool Upgrades

Numerous enhancements have been made to various Tools/Options.

Memory Watch

-Resource management optimized so that memory watch now uses a minimal amount of CPU

-FCEUX remembers memory watch's last screen position (x,y)

-Tab-able Edit boxes

-Edit boxes now can hold 64 characters

-A Menu bar for all Memory watch functions

-Both "Save as" and "Save" options

-Hotkeys for New, Open, Save, Save As and Close

-A recent files Menu

-A "load on startup" option. If checked, memory watch will open automatically when FCEUX is opened

-A "load last file" option.  If checked, memory watch will load the last file used

Cheat Search

-Now has a minimize button

-Cheat Search Menu from FCEUXDSP (a major overhaul compared to other FCEU branches)

-Possibilities update while playing/frame advancing a game

-Double clicking a value in the possibilities window sends the value directly to Memory Watch

RAM Filter

-Double clicking a value in the possibilities window sends the value directly to Memory Watch

Lua Scripting

-Uses the latest features of Lua Scripting from FCEU 0.28

-Many enhancements and new commands including dialog creation commands!  Now scripts can create their own dialog's and GUI features.

Lua Basic Bot

-Basicbot removed (from the rerecording version of FCE Ultra).  In its place is lua bot.

AVI Recording

-"Movie playback stopped" message recorded in AVI by default

-Turbo Toggle Hotkey.  (Allows turbo to be left on for a faster AVI capture).

--Older Updates--

Please check here..

bottom of page