Version 0.3.1
====--

Note: NetPlay is incomplete and replays are semi-broken in this release.
Trying to use NetPlay in this will get you nothing!

This version is experimental, and I am releasing it for Christmas so that I
can worry about more important, such as (eventually) finishing NetPlay.

Miscellaneous changes:
  Input 'Start' and 'Select' buttons configuration reversed fix.
  Increased chat message buffer size from 4 to 10 lines. 

Build system & code changes:
  Added CPU_TYPE and CPU_ARCH and improved some behavior.
  Separated blitters into individual header files. 

GUI changes:
  Added numbers to the items in Video > Blitter menu.
  Overhauled dithering functions.

Video output changes:
  (Super) 2xSCL crash in high resolutions fix.
  Added 32-bit support.
  Added color indexing for all non-32-bit modes. 
  Made all blitters work in any supported color depth.
  Renamed interpolated blitter to interpolated 2x.
  Added interpolated 3x blitter.


Version 0.3.0
====--

This release is dedicated to those who fell in the 9/11 attacks.

Note: NetPlay is incomplete and replays are semi-broken in this release.
Trying to use NetPlay in this will get you nothing!

Mac OS X is officially supported by this release, in addition to Windows
9x/NT/Me/2k/XP, 32-bit DOS, Linux, FreeBSD, QNX, and BeOS.

Miscellaneous changes:
  Infamous ROM load memory protection crash bug fix.
  Overhauled CPU emulation core.
  Added x86 assembly optimized CPU core components.
  Fixed branch wrap detection bug.
  Added CRC calculation for PRG ROM, CHR ROM, and ROM trainers.
  Added support for CPU memory space patching (raw or Game Genie w/ GUI).
  Added slow (half FPS) mode.
  Corrected mirroring of uneven size ROMs.
  Added save state support (may not work for all supported games).
  Added automatic machine state saving accurate up to every frame.
  Added support for replays (currently buggy).
  Altered memory map for performance.
  Added exit confirmation when ROM loaded.
  Significant improvements to the timing system.

Configuration changes:
  Added configurable save state and Save RAM (SRAM) output path.
  Configuration file and log file are now stored with the executable.
  Changed Win32 configuration file to 'fakenesw.cfg'
  Fixed several input configuration bugs.

Build system & code changes:
  Updated and added copyright messages.
  USE_CONSOLE changed to ALLEGRO_USE_CONSOLE to solve compilation problems (Mac OS X).
  Encapsulated datafile 'fakenes.dat' into build.
  Replaced all references to `NULL' with `NIL' to avoid compiler conflicts.
  Added object file suffixes to the build system (all platforms).
  Changed binary installation location from '/usr/bin' to /'usr/local/bin' (POSIX)
  Allegro compatibility fixes.
  Cleaned-up, overhauled, and optimized most GUI-related code.
  Added code to prevent registering conflicting digital directions in input.
  Added ability to use `usleep' instead of `yield_timeslice' in speed throttling.

GUI changes:
  Repaired all key mappings.
  Various GUI dialog enhancements and fixes.
  Added GUI patch manager with Game Genie support only.
  Added platform-specific video driver selection menus.
  Added multiple message system and input chat capabilities.
  Added input configuration dialog.
  Fixed various bugs related to repeated initialization of the GUI.
  Added GUI messages (log file) viewer.
  Added GUI toggle for the 'swap_channels' configuration file setting.
  Added GUI audio mixing speed selection menu.
  Added fast (passive) automatic blitter selection.
  Fixed default palette not being selected at startup.
  Improved operation of Video > Palette menu items.

Video output changes:
  Added 15- and 16-bit color depth support.
  Added 25% and 50% scanlines (currently very slow).
  Added several new resolutions, including 512x480 (for windowed mode).
  Added Super 2xSOE and Super 2xSCL anti-aliasing blitters.
  Added simple interpolated blitter.
  Fixed behavior of the 'last_blit_line' configuration file setting.
  Added keys to adjust light (palette intensity) from inside the emulation.

PPU rendering changes:
  Minor optimizations to background rendering.

Memory mapper support changes:
  Cleaned up and extended IRQ interface.
  Improved IRQ support in MMC3, MMC5, and Bandai mappers.
  Fixed MMC5 IRQ generation (greatly improves many games).
  Added MMC5 WRAM automatic size detection.
  Minor corrections of MMC3 behavior when no CHR-ROM is present.

Audio rendering & output changes:
  Changed default sampling rate to 96 kHz and buffer length to 6.


Version 0.2.0
====--

Miscellaneous changes:
  Added fast zero-page memory access to CPU emulation.
  Eliminated some obsolete return values in CPU emulation.
  Changed the CPU execution dispatcher to be inline to the main execution loop.
  Fixed a serious bug in address wrapping of ROMs that weren't an even power of 2.
  Fixed a bug which caused executed-frames counter to only count unrendered frames.
  Improved POSIX base support and the autoconf-based build system.
  Implemented loading of ROMs from ZIP files, must be the first file.
  Fixed a serious bug in video mode initialization.

Video output changes:
  Added the ability to specify blit region, to hide vertical scrolling.
  Added a toggle to the Options > Video menu in the GUI for 'force_window'.
  Added 2xSCL blitter (similar to 2xSOE, only better and slower).
  Improved the overall performance of basic blitting routines.

PPU rendering changes:
  Moved checks for sprites/background enabled outside of drawing loops.
  Altered cache-preloading in display rendering.

Memory mapper support changes:
  Fixed a serious addressing bug in Bandai mapper.
  Fixed a serious IRQ timing structure bug in Bandai mapper.
  Added FFE F3 series (iNES mapper 8) support.
  Added Konami VRC6 and VRC6V (iNES mappers 24 and 26) support.
  Added preliminary MMC5 (iNES mapper 5) support.
  Implemented partial ExSound support for both VRC6 and MMC5 mappers.

Audio rendering & output changes:
  Fixed initialization accepting a null driver, causing the emulator to freeze.
  Added random noise addition dithering for low quality output.


0.1.5
Miscellaneous changes
Fixed a serious masking bug in PRG banking.
Added support for ROM trainers.

Video output changes
Ability to implement combined filters added.
Basic scanlines filter added.


0.1.4
Miscellaneous changes
Fixed a serious bug in non-gzip ROM loading code.
ROM init and deinit cleaned up.
Grayscale palette added.
In-GUI resolution switching added.
In-GUI selection of stretched/normal blitters added.
Machine status now displayed separate from gameplay area.
Zapper position inconsistency when clipped fixed.

PPU rendering changes
Fixed color used when background clipped or disabled.
Optimizations to background rendering.

Video output changes
Ability to implement separate blitters added.
2xSOE blitter added (similar to EAGLE).
Screen flicker on zoom out bug fixed.
Made both zoom X axis and Y axis factors defineable.
Minimum/maximum zoom ratio limiting added.
Palette light level correction added (doesn't affect color 0).

Memory mapper support changes
Many changes and tweaks to MMC3 IRQs (Crystalis, SMB3 improved).
Partial Bandai (iNES mapper 16) support added.

Audio rendering & output changes
Enhanced and accurate variations of pseudo stereo added.


0.1.3
Miscellaneous changes
PRG allocation, banking, and masking centralized.
Eliminated 0-byte allocations when no CHR ROM was present.
ROM loading code merged.

Timing changes
Minor CPU core IRQ fixes.

Memory mapper support changes
MMC interface overhauled.
MMC3 IRQ improvements.
MMC3 PRG banking fixed.

Audio rendering & output changes
Default sampling rate changed to 44.1 kHz.
Default buffer length (in frames) changed to 4.
Various recording bugs fixed.
Linear echo effect tweaked and intensified.
Default filter changed to weighted low pass.


0.1.2
Miscellaneous changes
PPU source split into multiple files.
PPU source cleanup.
Audio base completely overhauled.
Audio interface completely overhauled.
NESticle palette added.
Custom palette feature added.
Snapshot now saves with the active palette.
ROM filename displayed in the titlebar.
MMC source cleanup.

GUI input changes
Toggle sprites shortcut key (F7) added.
Toggle background shortcut key (F8) added.
Most Fx shortcut keys remapped.

PPU rendering changes
Sprites split into two separate layers.

Memory mapper support changes
Nina-1 (iNES mapper 34) support added.

Audio rendering & output changes
Surround sound effect added.
Linear echo effect added.
High pass filter added.
Dynamic low pass filter rewritten.


0.1.1
Miscellaneous changes
Four-screen mirroring support added.

PPU rendering changes
Tile cache memory leak fixed.

Memory mapper support changes
Sunsoft mapper 4 (iNES mapper 68) support added.
MMC3 SRAM disable bit ignored (to fix Star Tropics).


0.1.0
Miscellaneous changes
CPU core optimizations, bug fixes, and timing corrections.
PPU register read behavior corrected.
Keyboard shortcut list dialog added.
Emulated frame counter fixed.
Zoom feature with definable zoom factor added.
Crash-on-exit fix for ROMs without trainers.
Zapper target sprite changed.

Timing changes
PAL/NTSC emulation select added.
Sprite #0 collision detection added with fairly accurate timing.
Sprite overflow detection added.
Sprite DMA timing added.
Sprite #0 collisions and zapper handled during skipped frames.
Vblank NMI state on power-on changed to disabled.
Zapper emulation corrected with fairly accurate timing.
Overall timing fixes and corrections.

PPU rendering changes
Tile caching added.
Line-based sprite emulation.
Background left-edge clipping support added.
Sprite left-edge clipping support corrected.

Memory mapper support changes
Color Dreams PRG banking fixed.
GNROM (iNES mapper 66) support added.
MMC2 CHR banking fixed.
MMC3 four-screen mirroring fixed.
