FCEUX
The all in one NES/Famicom/Dendy Emulator

# FCEUX 2.5.0 Release

21 October 2021

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

## Common

### Emulation Core

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

## Qt/SDL

### New Tools

Added built-in AVI RIFF Tree Viewer.

### Debugger

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.
Fixed annoying intermittent SDL gamepad button mapping issue.

### Lua

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

### Movies

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.