About

I've made a bunch of additions to FCEU to help make TAS's.

There are new mappers and configuration options, so the version number is now 98.16. Some games will run in 98.16 that didn't run in 98.15. You will need to reconfigure your hotkeys for 98.16.

Thanks to nitsuja/blip for the original source, Ike for shared-memory source, CaH4e3's memory mapper project for the new mappers, and Bisqwit's forum for various suggestions.

Where to get it

Get the executable. Delete the ".foo" at the end, since 50webs doesn't allow .exe's. This is a windows executable and is compiled for a Pentium 2.

The source is also available. It's too big to give as one file, so I split up the subdirectories: Main directory, /boards, /drivers, /fir, /input, /mappers, /palettes. Note: this uses a custom makefile that will work only for compiling on windows.

Theoretically this source should compile on Linux, but Linux people will need to update makefiles using automake or something... sorry I can't help with that. If you just want the new mappers, you can copy the "boards" and "mappers" directory, and the ines* and unif* files.

Changes 98.16

Added mappers/boards from the memory-mapper FCEU project.

Added a rewind feature. You must enable it manually every time because it's a little experimental. All it does is save a state every few seconds to "rewindX.fcs" where X=0,1,2,3, which you can load by pressing the rewind hotkey (default "R", can be configured). (Note: If you're running more than one instance of FCEU, only use in one FCEU at a time or you will get unpredictable results.)

Added a support for a hotkey to view the save slot you're on. (No default key--pick it yourself in the configuration)

New input display. Press the input display button to cycle between 0, 1, 2, and 4 controllers displayed.

The "Run in Background" option now works correctly. Added an option to accept input while running in the background, which should be useful for making multi-game movies.

Compiled some parts with higher optimization settings, so you might get a small emulation speed boost.

Fixed a subtle bug (introduced by the shared memory code) that made FCEU crash in some cases eg. Bio Hazard (unl).

Added absolute value "abs" and "setcounter" to BasicBot. Also added "mem" which gives access to all memory locations 0-65535 (unlike "ram" which only could do 0-2047).

Memory watch can now access all memory locations 0-FFFE.

Memory watch is now throttle-friendly. It won't slow you down when you increase the throttle.

A little more space for labels in the memory watch window.

Memory watch and BasicBot remember the last directory you used, even after closing FCEU.

Fixed the autofire not working 1st frame after loading a state while recording a movie.

Attempted to fix the read-only toggle glitch adelikat mentioned. Maybe it will work now?

More throttling speeds for people with crazy fast computers.

A few glitches no one will ever notice (unless you read the source code) have been fixed.

Changes (previous)

You can now run multiple instances of FCEU. (Previously the shared memory would screw them up, now only one copy of FCEU will use shared memory. Hopefully :)

BasicBot is now implemented.

Many enhancements to the speed of bot emulation. I think I killed the slowing bug, let me know if your FCEU is still running slow. On my computer this runs the same as the original FCEU.

Autofire offset will stay in sync when loading a save state while recording. Known bug: the 1st frame after the load, it could fail to fire when it should have. But it's still better than having to readjust the offset all the time.

Added some commands to the NES menu so you don't have to hotkey them.

Features

New mappers--Run more games than before! Paperboy 2 and various XXXX-in-1 games now work.

Rewind--A little unreliable, but very useful when watching movies!

Shared memory--Outside programs can read information from the emulator.

Memory watch--Monitor up to 24 RAM variables at a time. Hex viewing has been added to this version. Use a prefix of '!' to watch a 2-byte (little-endian, which is what most NES games use) value, use 'x' to view 1 byte in hex, and use 'X' to view 2 bytes in hex. Save and load the list of addresses as a text file.

Autofire options--Change the pattern of the autofire under the Tools menu. You can also give the autofire an offset, to make the button presses land on the correct frames. Use the "Alternate A and B" option so that the B autofire pattern is opposite the A autofire pattern.

Stop movie--Automatically pause the movie on a certain frame, accessed on the replay movie dialog. (Sorry, can't disable this once the movie started--but shouldn't be a problem.) Useful if you need to fast-forward to a certain spot.

External input support--FCEU can read input from an external source. This will allow programmers to create bots. To enable this, click on the Tools...Use External Input menu. User input will be disabled while external input is enabled.

BasicBot--A reasonably flexible, programmable bot. Now you can program instead of play.

Background input--FCEU can accept input while still in the background. Use this to make multi-game movies, for example.

More Info

Shared memory specs--for bot/tools authors

How to use BasicBot